mirror of https://github.com/xemu-project/xemu.git
vfio/container: Move dirty_pgsizes and max_dirty_bitmap_size to base container
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> Reviewed-by: Cédric Le Goater <clg@redhat.com> Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
c7b313d300
commit
4d6b95010c
|
@ -64,6 +64,7 @@ static int vfio_dma_unmap_bitmap(VFIOContainer *container,
|
|||
hwaddr iova, ram_addr_t size,
|
||||
IOMMUTLBEntry *iotlb)
|
||||
{
|
||||
VFIOContainerBase *bcontainer = &container->bcontainer;
|
||||
struct vfio_iommu_type1_dma_unmap *unmap;
|
||||
struct vfio_bitmap *bitmap;
|
||||
VFIOBitmap vbmap;
|
||||
|
@ -91,7 +92,7 @@ static int vfio_dma_unmap_bitmap(VFIOContainer *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;
|
||||
|
@ -131,7 +132,7 @@ static int vfio_legacy_dma_unmap(VFIOContainerBase *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);
|
||||
}
|
||||
|
||||
|
@ -469,8 +470,8 @@ static void vfio_get_iommu_info_migration(VFIOContainer *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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -80,8 +80,6 @@ typedef struct VFIOContainer {
|
|||
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(, VFIOHostDMAWindow) hostwin_list;
|
||||
QLIST_HEAD(, VFIOGroup) group_list;
|
||||
GList *iova_ranges;
|
||||
|
|
|
@ -39,6 +39,8 @@ typedef struct VFIOContainerBase {
|
|||
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;
|
||||
|
|
Loading…
Reference in New Issue