mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
vfio/iommufd: Implement the iommufd backend
The iommufd backend is implemented based on the new /dev/iommu user API. This backend obviously depends on CONFIG_IOMMUFD. So far, the iommufd backend doesn't support dirty page sync yet. Co-authored-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> Tested-by: Eric Auger <eric.auger@redhat.com> Tested-by: Nicolin Chen <nicolinc@nvidia.com> Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
1eae5b7bd3
commit
5ee3dc7af7
5 changed files with 452 additions and 0 deletions
|
@ -89,6 +89,14 @@ typedef struct VFIOHostDMAWindow {
|
|||
QLIST_ENTRY(VFIOHostDMAWindow) hostwin_next;
|
||||
} VFIOHostDMAWindow;
|
||||
|
||||
typedef struct IOMMUFDBackend IOMMUFDBackend;
|
||||
|
||||
typedef struct VFIOIOMMUFDContainer {
|
||||
VFIOContainerBase bcontainer;
|
||||
IOMMUFDBackend *be;
|
||||
uint32_t ioas_id;
|
||||
} VFIOIOMMUFDContainer;
|
||||
|
||||
typedef struct VFIODeviceOps VFIODeviceOps;
|
||||
|
||||
typedef struct VFIODevice {
|
||||
|
@ -116,6 +124,8 @@ typedef struct VFIODevice {
|
|||
OnOffAuto pre_copy_dirty_page_tracking;
|
||||
bool dirty_pages_supported;
|
||||
bool dirty_tracking;
|
||||
int devid;
|
||||
IOMMUFDBackend *iommufd;
|
||||
} VFIODevice;
|
||||
|
||||
struct VFIODeviceOps {
|
||||
|
@ -201,6 +211,7 @@ typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList;
|
|||
extern VFIOGroupList vfio_group_list;
|
||||
extern VFIODeviceList vfio_device_list;
|
||||
extern const VFIOIOMMUOps vfio_legacy_ops;
|
||||
extern const VFIOIOMMUOps vfio_iommufd_ops;
|
||||
extern const MemoryListener vfio_memory_listener;
|
||||
extern int vfio_kvm_device_fd;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue