From: "Cédric Le Goater" <clg@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Zhenzhong Duan" <zhenzhong.duan@intel.com>,
"Eric Auger" <eric.auger@redhat.com>,
"Alex Williamson" <alex.williamson@redhat.com>,
"Nicholas Piggin" <npiggin@gmail.com>,
"Harsh Prateek Bora" <harshpb@linux.ibm.com>,
"Cédric Le Goater" <clg@redhat.com>
Subject: [PATCH for-9.0 00/10] vfio: Introduce a VFIOIOMMUClass
Date: Fri, 8 Dec 2023 09:45:50 +0100 [thread overview]
Message-ID: <20231208084600.858964-1-clg@redhat.com> (raw)
Hello,
The VFIO object hierarchy has some constraints because each VFIO type
has a dual nature: a VFIO nature for passthrough support and a bus
nature (PCI, AP, CCW, Platform) for its initial presentation. It
seemed the best approach made because multi-inheritance is not
feasible with QOM and both aspect of the VFIO object, passthrough and
bus, require state. A QOM interface in that case is not sufficient.
One aspect of passthrough is interaction with the IOMMU. IOMMUFD
support was recently added and for this purpose, we introduced an
IOMMU backend framework simply based on a VFIOIOMMUOps struct. We
didn't want to use QOM again because it would have exposed the various
lowlevel backend objects to the QEMU machine and human interface which
felt unnecessary at the time.
The changes of this series introduce a VFIO_IOMMU QOM interface and
its VFIOIOMMUClass to replace the current VFIOIOMMUOps. This provides
better code abstraction for the type1 and sPAPR IOMMU backends and
allows us to improve the vfio_connect_container() implementation.
Also, QOM interfaces are not exposed at the QEMU interface level. Most
important, we can now avoid compiling the sPAPR IOMMU support on
targets not needing it. This saves some text in QEMU.
Applies on vfio-next.
Thanks,
C.
Cédric Le Goater (10):
vfio/spapr: Extend VFIOIOMMUOps with a release handler
vfio/container: Introduce vfio_legacy_setup() for further cleanups
vfio/container: Initialize VFIOIOMMUOps under vfio_init_container()
vfio/container: Introduce a VFIOIOMMU QOM interface
vfio/container: Introduce a VFIOIOMMU legacy QOM interface
vfio/container: Intoduce a new VFIOIOMMUClass::setup handler
vfio/spapr: Introduce a sPAPR VFIOIOMMU QOM interface
vfio/iommufd: Introduce a VFIOIOMMU iommufd QOM interface
vfio/spapr: Only compile sPAPR IOMMU support when needed
vfio/iommufd: Remove CONFIG_IOMMUFD usage
include/hw/vfio/vfio-common.h | 2 -
include/hw/vfio/vfio-container-base.h | 22 +++-
hw/vfio/common.c | 11 +-
hw/vfio/container-base.c | 12 ++-
hw/vfio/container.c | 147 ++++++++++++++++----------
hw/vfio/iommufd.c | 36 +++++--
hw/vfio/pci.c | 2 +-
hw/vfio/spapr.c | 61 ++++++-----
hw/vfio/meson.build | 2 +-
9 files changed, 195 insertions(+), 100 deletions(-)
--
2.43.0
next reply other threads:[~2023-12-08 8:47 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-08 8:45 Cédric Le Goater [this message]
2023-12-08 8:45 ` [PATCH for-9.0 01/10] vfio/spapr: Extend VFIOIOMMUOps with a release handler Cédric Le Goater
2023-12-11 5:51 ` Duan, Zhenzhong
2023-12-08 8:45 ` [PATCH for-9.0 02/10] vfio/container: Introduce vfio_legacy_setup() for further cleanups Cédric Le Goater
2023-12-11 5:53 ` Duan, Zhenzhong
2023-12-08 8:45 ` [PATCH for-9.0 03/10] vfio/container: Initialize VFIOIOMMUOps under vfio_init_container() Cédric Le Goater
2023-12-11 5:59 ` Duan, Zhenzhong
2023-12-11 13:57 ` Cédric Le Goater
2023-12-12 4:15 ` Duan, Zhenzhong
2023-12-08 8:45 ` [PATCH for-9.0 04/10] vfio/container: Introduce a VFIOIOMMU QOM interface Cédric Le Goater
2023-12-11 6:08 ` Duan, Zhenzhong
2023-12-11 13:58 ` Cédric Le Goater
2023-12-08 8:45 ` [PATCH for-9.0 05/10] vfio/container: Introduce a VFIOIOMMU legacy " Cédric Le Goater
2023-12-11 6:14 ` Duan, Zhenzhong
2023-12-11 14:00 ` Cédric Le Goater
2023-12-08 8:45 ` [PATCH for-9.0 06/10] vfio/container: Intoduce a new VFIOIOMMUClass::setup handler Cédric Le Goater
2023-12-11 6:17 ` Duan, Zhenzhong
2023-12-08 8:45 ` [PATCH for-9.0 07/10] vfio/spapr: Introduce a sPAPR VFIOIOMMU QOM interface Cédric Le Goater
2023-12-11 6:25 ` Duan, Zhenzhong
2023-12-11 14:01 ` Cédric Le Goater
2023-12-08 8:45 ` [PATCH for-9.0 08/10] vfio/iommufd: Introduce a VFIOIOMMU iommufd " Cédric Le Goater
2023-12-11 6:32 ` Duan, Zhenzhong
2023-12-08 8:45 ` [PATCH for-9.0 09/10] vfio/spapr: Only compile sPAPR IOMMU support when needed Cédric Le Goater
2023-12-11 6:34 ` Duan, Zhenzhong
2023-12-08 8:46 ` [PATCH for-9.0 10/10] vfio/iommufd: Remove CONFIG_IOMMUFD usage Cédric Le Goater
2023-12-11 6:44 ` Duan, Zhenzhong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231208084600.858964-1-clg@redhat.com \
--to=clg@redhat.com \
--cc=alex.williamson@redhat.com \
--cc=eric.auger@redhat.com \
--cc=harshpb@linux.ibm.com \
--cc=npiggin@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=zhenzhong.duan@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).