diff options
author | Avihai Horon <avihaih@nvidia.com> | 2024-12-18 15:40:16 +0200 |
---|---|---|
committer | Cédric Le Goater <clg@redhat.com> | 2024-12-26 07:23:38 +0100 |
commit | d77e85dbd7655cc41af51df74c077d8b31aee93c (patch) | |
tree | 5800a4b95ebccf6ccfd2489fcc5170fc7fe47ed3 /hw | |
parent | 37f05a59e8695df3d1206e7100190e48ec0af847 (diff) | |
download | qemu-d77e85dbd7655cc41af51df74c077d8b31aee93c.zip qemu-d77e85dbd7655cc41af51df74c077d8b31aee93c.tar.gz qemu-d77e85dbd7655cc41af51df74c077d8b31aee93c.tar.bz2 |
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>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/vfio/container-base.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/hw/vfio/container-base.c b/hw/vfio/container-base.c index 6f86c37..749a3fd 100644 --- a/hw/vfio/container-base.c +++ b/hw/vfio/container-base.c @@ -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, |