diff options
author | Eric Auger <eric.auger@redhat.com> | 2023-11-21 16:44:00 +0800 |
---|---|---|
committer | Cédric Le Goater <clg@redhat.com> | 2023-12-19 19:03:38 +0100 |
commit | 6e6d8ac62b5b38dc9d4b69ffdf073f0a0b43b7be (patch) | |
tree | ed0a5d7b3b5ba608a2d7b2dd84b03f37c204d219 /qapi | |
parent | dbb9d0c9691d145338686d3e0920da047f2ab3da (diff) | |
download | qemu-6e6d8ac62b5b38dc9d4b69ffdf073f0a0b43b7be.zip qemu-6e6d8ac62b5b38dc9d4b69ffdf073f0a0b43b7be.tar.gz qemu-6e6d8ac62b5b38dc9d4b69ffdf073f0a0b43b7be.tar.bz2 |
backends/iommufd: Introduce the iommufd object
Introduce an iommufd object which allows the interaction
with the host /dev/iommu device.
The /dev/iommu can have been already pre-opened outside of qemu,
in which case the fd can be passed directly along with the
iommufd object:
This allows the iommufd object to be shared accross several
subsystems (VFIO, VDPA, ...). For example, libvirt would open
the /dev/iommu once.
If no fd is passed along with the iommufd object, the /dev/iommu
is opened by the qemu code.
Suggested-by: Alex Williamson <alex.williamson@redhat.com>
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>
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>
Diffstat (limited to 'qapi')
-rw-r--r-- | qapi/qom.json | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/qapi/qom.json b/qapi/qom.json index c53ef97..95516ba 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -795,6 +795,23 @@ 'data': { 'socket': 'SocketAddress', 'device': 'str' } } ## +# @IOMMUFDProperties: +# +# Properties for iommufd objects. +# +# @fd: file descriptor name previously passed via 'getfd' command, +# which represents a pre-opened /dev/iommu. This allows the +# iommufd object to be shared accross several subsystems +# (VFIO, VDPA, ...), and the file descriptor to be shared +# with other process, e.g. DPDK. (default: QEMU opens +# /dev/iommu by itself) +# +# Since: 9.0 +## +{ 'struct': 'IOMMUFDProperties', + 'data': { '*fd': 'str' } } + +## # @RngProperties: # # Properties for objects of classes derived from rng. @@ -934,6 +951,7 @@ 'input-barrier', { 'name': 'input-linux', 'if': 'CONFIG_LINUX' }, + 'iommufd', 'iothread', 'main-loop', { 'name': 'memory-backend-epc', @@ -1003,6 +1021,7 @@ 'input-barrier': 'InputBarrierProperties', 'input-linux': { 'type': 'InputLinuxProperties', 'if': 'CONFIG_LINUX' }, + 'iommufd': 'IOMMUFDProperties', 'iothread': 'IothreadProperties', 'main-loop': 'MainLoopProperties', 'memory-backend-epc': { 'type': 'MemoryBackendEpcProperties', |