mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-31 14:23:53 -06:00
vfio/container: Add dirty tracking started flag
Add a flag to VFIOContainerBase that indicates whether dirty tracking has been started for the container or not. This will be used in the following patches to allow dirty page syncs only if dirty tracking has been started. Signed-off-by: Avihai Horon <avihaih@nvidia.com> Reviewed-by: Joao Martins <joao.m.martins@oracle.com> Tested-by: Joao Martins <joao.m.martins@oracle.com> Link: https://lore.kernel.org/r/20241218134022.21264-2-avihaih@nvidia.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
37f05a59e8
commit
d77e85dbd7
2 changed files with 12 additions and 1 deletions
|
@ -64,13 +64,23 @@ int vfio_container_set_dirty_page_tracking(VFIOContainerBase *bcontainer,
|
|||
bool start, Error **errp)
|
||||
{
|
||||
VFIOIOMMUClass *vioc = VFIO_IOMMU_GET_CLASS(bcontainer);
|
||||
int ret;
|
||||
|
||||
if (!bcontainer->dirty_pages_supported) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
g_assert(vioc->set_dirty_page_tracking);
|
||||
return vioc->set_dirty_page_tracking(bcontainer, start, errp);
|
||||
if (bcontainer->dirty_pages_started == start) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = vioc->set_dirty_page_tracking(bcontainer, start, errp);
|
||||
if (!ret) {
|
||||
bcontainer->dirty_pages_started = start;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int vfio_container_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
|
||||
|
|
|
@ -44,6 +44,7 @@ typedef struct VFIOContainerBase {
|
|||
unsigned long pgsizes;
|
||||
unsigned int dma_max_mappings;
|
||||
bool dirty_pages_supported;
|
||||
bool dirty_pages_started; /* Protected by BQL */
|
||||
QLIST_HEAD(, VFIOGuestIOMMU) giommu_list;
|
||||
QLIST_HEAD(, VFIORamDiscardListener) vrdl_list;
|
||||
QLIST_ENTRY(VFIOContainerBase) next;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue