vfio/common: Move legacy VFIO backend code into separate container.c
Move all the code really dependent on the legacy VFIO container/group into a separate file: container.c. What does remain in common.c is the code related to VFIOAddressSpace, MemoryListeners, migration and all other general operations. Signed-off-by: Eric Auger <eric.auger@redhat.com> Signed-off-by: Yi Liu <yi.l.liu@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
3d779abafe
commit
7e63b31138
1155
hw/vfio/common.c
1155
hw/vfio/common.c
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -2,6 +2,7 @@ vfio_ss = ss.source_set()
|
||||||
vfio_ss.add(files(
|
vfio_ss.add(files(
|
||||||
'helpers.c',
|
'helpers.c',
|
||||||
'common.c',
|
'common.c',
|
||||||
|
'container.c',
|
||||||
'spapr.c',
|
'spapr.c',
|
||||||
'migration.c',
|
'migration.c',
|
||||||
))
|
))
|
||||||
|
|
|
@ -206,6 +206,30 @@ typedef struct {
|
||||||
hwaddr pages;
|
hwaddr pages;
|
||||||
} VFIOBitmap;
|
} VFIOBitmap;
|
||||||
|
|
||||||
|
void vfio_host_win_add(VFIOContainer *container,
|
||||||
|
hwaddr min_iova, hwaddr max_iova,
|
||||||
|
uint64_t iova_pgsizes);
|
||||||
|
int vfio_host_win_del(VFIOContainer *container, hwaddr min_iova,
|
||||||
|
hwaddr max_iova);
|
||||||
|
VFIOAddressSpace *vfio_get_address_space(AddressSpace *as);
|
||||||
|
void vfio_put_address_space(VFIOAddressSpace *space);
|
||||||
|
bool vfio_devices_all_running_and_saving(VFIOContainer *container);
|
||||||
|
|
||||||
|
/* container->fd */
|
||||||
|
int vfio_dma_unmap(VFIOContainer *container, hwaddr iova,
|
||||||
|
ram_addr_t size, IOMMUTLBEntry *iotlb);
|
||||||
|
int vfio_dma_map(VFIOContainer *container, hwaddr iova,
|
||||||
|
ram_addr_t size, void *vaddr, bool readonly);
|
||||||
|
int vfio_set_dirty_page_tracking(VFIOContainer *container, bool start);
|
||||||
|
int vfio_query_dirty_bitmap(VFIOContainer *container, VFIOBitmap *vbmap,
|
||||||
|
hwaddr iova, hwaddr size);
|
||||||
|
|
||||||
|
int vfio_container_add_section_window(VFIOContainer *container,
|
||||||
|
MemoryRegionSection *section,
|
||||||
|
Error **errp);
|
||||||
|
void vfio_container_del_section_window(VFIOContainer *container,
|
||||||
|
MemoryRegionSection *section);
|
||||||
|
|
||||||
void vfio_disable_irqindex(VFIODevice *vbasedev, int index);
|
void vfio_disable_irqindex(VFIODevice *vbasedev, int index);
|
||||||
void vfio_unmask_single_irqindex(VFIODevice *vbasedev, int index);
|
void vfio_unmask_single_irqindex(VFIODevice *vbasedev, int index);
|
||||||
void vfio_mask_single_irqindex(VFIODevice *vbasedev, int index);
|
void vfio_mask_single_irqindex(VFIODevice *vbasedev, int index);
|
||||||
|
@ -235,6 +259,10 @@ extern const MemoryRegionOps vfio_region_ops;
|
||||||
typedef QLIST_HEAD(VFIOGroupList, VFIOGroup) VFIOGroupList;
|
typedef QLIST_HEAD(VFIOGroupList, VFIOGroup) VFIOGroupList;
|
||||||
typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList;
|
typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList;
|
||||||
extern VFIOGroupList vfio_group_list;
|
extern VFIOGroupList vfio_group_list;
|
||||||
|
extern VFIODeviceList vfio_device_list;
|
||||||
|
|
||||||
|
extern const MemoryListener vfio_memory_listener;
|
||||||
|
extern int vfio_kvm_device_fd;
|
||||||
|
|
||||||
bool vfio_mig_active(void);
|
bool vfio_mig_active(void);
|
||||||
int vfio_block_multiple_devices_migration(VFIODevice *vbasedev, Error **errp);
|
int vfio_block_multiple_devices_migration(VFIODevice *vbasedev, Error **errp);
|
||||||
|
@ -272,4 +300,11 @@ bool vfio_migration_realize(VFIODevice *vbasedev, Error **errp);
|
||||||
void vfio_migration_exit(VFIODevice *vbasedev);
|
void vfio_migration_exit(VFIODevice *vbasedev);
|
||||||
|
|
||||||
int vfio_bitmap_alloc(VFIOBitmap *vbmap, hwaddr size);
|
int vfio_bitmap_alloc(VFIOBitmap *vbmap, hwaddr size);
|
||||||
|
bool vfio_devices_all_running_and_mig_active(VFIOContainer *container);
|
||||||
|
bool vfio_devices_all_device_dirty_tracking(VFIOContainer *container);
|
||||||
|
int vfio_devices_query_dirty_bitmap(VFIOContainer *container,
|
||||||
|
VFIOBitmap *vbmap, hwaddr iova,
|
||||||
|
hwaddr size);
|
||||||
|
int vfio_get_dirty_bitmap(VFIOContainer *container, uint64_t iova,
|
||||||
|
uint64_t size, ram_addr_t ram_addr);
|
||||||
#endif /* HW_VFIO_VFIO_COMMON_H */
|
#endif /* HW_VFIO_VFIO_COMMON_H */
|
||||||
|
|
Loading…
Reference in New Issue