[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 14/27] vfio/container: Move dirty_pgsizes and max_dirty_bitmap
|
From: |
Zhenzhong Duan |
|
Subject: |
[PATCH v2 14/27] vfio/container: Move dirty_pgsizes and max_dirty_bitmap_size to base container |
|
Date: |
Mon, 16 Oct 2023 16:32:10 +0800 |
From: Eric Auger <eric.auger@redhat.com>
No functional change intended.
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Yi Liu <yi.l.liu@intel.com>
Signed-off-by: Yi Sun <yi.y.sun@linux.intel.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
---
include/hw/vfio/vfio-common.h | 2 --
include/hw/vfio/vfio-container-base.h | 2 ++
hw/vfio/container.c | 11 ++++++-----
3 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
index 8771160849..9f2b86581b 100644
--- a/include/hw/vfio/vfio-common.h
+++ b/include/hw/vfio/vfio-common.h
@@ -80,8 +80,6 @@ typedef struct VFIOLegacyContainer {
int fd; /* /dev/vfio/vfio, empowered by the attached groups */
MemoryListener prereg_listener;
unsigned iommu_type;
- uint64_t dirty_pgsizes;
- uint64_t max_dirty_bitmap_size;
QLIST_HEAD(, VFIOGroup) group_list;
} VFIOLegacyContainer;
diff --git a/include/hw/vfio/vfio-container-base.h
b/include/hw/vfio/vfio-container-base.h
index 96d33495c1..9a5971a00a 100644
--- a/include/hw/vfio/vfio-container-base.h
+++ b/include/hw/vfio/vfio-container-base.h
@@ -79,6 +79,8 @@ struct VFIOContainer {
MemoryListener listener;
Error *error;
bool initialized;
+ uint64_t dirty_pgsizes;
+ uint64_t max_dirty_bitmap_size;
unsigned long pgsizes;
unsigned int dma_max_mappings;
bool dirty_pages_supported;
diff --git a/hw/vfio/container.c b/hw/vfio/container.c
index 5b14a9b307..9d5be749c7 100644
--- a/hw/vfio/container.c
+++ b/hw/vfio/container.c
@@ -70,6 +70,7 @@ static int vfio_dma_unmap_bitmap(VFIOLegacyContainer
*container,
hwaddr iova, ram_addr_t size,
IOMMUTLBEntry *iotlb)
{
+ VFIOContainer *bcontainer = &container->bcontainer;
struct vfio_iommu_type1_dma_unmap *unmap;
struct vfio_bitmap *bitmap;
VFIOBitmap vbmap;
@@ -97,7 +98,7 @@ static int vfio_dma_unmap_bitmap(VFIOLegacyContainer
*container,
bitmap->size = vbmap.size;
bitmap->data = (__u64 *)vbmap.bitmap;
- if (vbmap.size > container->max_dirty_bitmap_size) {
+ if (vbmap.size > bcontainer->max_dirty_bitmap_size) {
error_report("UNMAP: Size of bitmap too big 0x%"PRIx64, vbmap.size);
ret = -E2BIG;
goto unmap_exit;
@@ -139,7 +140,7 @@ static int vfio_legacy_dma_unmap(VFIOContainer *bcontainer,
hwaddr iova,
if (iotlb && vfio_devices_all_running_and_mig_active(bcontainer)) {
if (!vfio_devices_all_device_dirty_tracking(bcontainer) &&
- container->bcontainer.dirty_pages_supported) {
+ bcontainer->dirty_pages_supported) {
return vfio_dma_unmap_bitmap(container, iova, size, iotlb);
}
@@ -162,7 +163,7 @@ static int vfio_legacy_dma_unmap(VFIOContainer *bcontainer,
hwaddr iova,
if (errno == EINVAL && unmap.size && !(unmap.iova + unmap.size) &&
container->iommu_type == VFIO_TYPE1v2_IOMMU) {
trace_vfio_legacy_dma_unmap_overflow_workaround();
- unmap.size -= 1ULL << ctz64(container->bcontainer.pgsizes);
+ unmap.size -= 1ULL << ctz64(bcontainer->pgsizes);
continue;
}
error_report("VFIO_UNMAP_DMA failed: %s", strerror(errno));
@@ -558,8 +559,8 @@ static void
vfio_get_iommu_info_migration(VFIOLegacyContainer *container,
*/
if (cap_mig->pgsize_bitmap & qemu_real_host_page_size()) {
bcontainer->dirty_pages_supported = true;
- container->max_dirty_bitmap_size = cap_mig->max_dirty_bitmap_size;
- container->dirty_pgsizes = cap_mig->pgsize_bitmap;
+ bcontainer->max_dirty_bitmap_size = cap_mig->max_dirty_bitmap_size;
+ bcontainer->dirty_pgsizes = cap_mig->pgsize_bitmap;
}
}
--
2.34.1
- [PATCH v2 05/27] vfio/common: Move giommu_list in base container, (continued)
- [PATCH v2 05/27] vfio/common: Move giommu_list in base container, Zhenzhong Duan, 2023/10/16
- [PATCH v2 04/27] vfio/container: Switch to dma_map|unmap API, Zhenzhong Duan, 2023/10/16
- [PATCH v2 07/27] vfio/container: switch to IOMMU BE add/del_section_window, Zhenzhong Duan, 2023/10/16
- [PATCH v2 06/27] vfio/container: Move space field to base container, Zhenzhong Duan, 2023/10/16
- [PATCH v2 08/27] vfio/container: Move hostwin_list in base container, Zhenzhong Duan, 2023/10/16
- [PATCH v2 09/27] vfio/container: Switch to IOMMU BE set_dirty_page_tracking/query_dirty_bitmap API, Zhenzhong Duan, 2023/10/16
- [PATCH v2 10/27] vfio/container: Move per container device list in base container, Zhenzhong Duan, 2023/10/16
- [PATCH v2 11/27] vfio/container: Convert functions to base container, Zhenzhong Duan, 2023/10/16
- [PATCH v2 12/27] vfio/container: Move vrdl_list, pgsizes and dma_max_mappings to base container, Zhenzhong Duan, 2023/10/16
- [PATCH v2 13/27] vfio/container: Move listener to base container, Zhenzhong Duan, 2023/10/16
- [PATCH v2 14/27] vfio/container: Move dirty_pgsizes and max_dirty_bitmap_size to base container,
Zhenzhong Duan <=
- [PATCH v2 15/27] vfio/container: Implement attach/detach_device, Zhenzhong Duan, 2023/10/16
- [PATCH v2 16/27] Add iommufd configure option, Zhenzhong Duan, 2023/10/16
- [PATCH v2 17/27] backends/iommufd: Introduce the iommufd object, Zhenzhong Duan, 2023/10/16
- [PATCH v2 18/27] util/char_dev: Add open_cdev(), Zhenzhong Duan, 2023/10/16
- [PATCH v2 19/27] vfio/iommufd: Implement the iommufd backend, Zhenzhong Duan, 2023/10/16
- [PATCH v2 20/27] vfio/container: Bypass EEH if iommufd backend, Zhenzhong Duan, 2023/10/16
- [PATCH v2 21/27] vfio/pci: Adapt vfio pci hot reset support with iommufd BE, Zhenzhong Duan, 2023/10/16
- [PATCH v2 22/27] vfio/pci: Allow the selection of a given iommu backend, Zhenzhong Duan, 2023/10/16