Hi Zhenzhong, On 6/23/25 4:20 AM, Duan, Zhenzhong wrote: > Hi Eric, > >> -----Original Message----- >> From: Eric Auger <eric.au...@redhat.com> >> Subject: Re: [PATCH v2 02/19] hw/pci: Introduce pci_device_get_viommu_cap() >> >> Hi Zhenzhong, >> >> On 6/20/25 9:17 AM, Zhenzhong Duan wrote: >>> pci_device_get_viommu_cap() call pci_device_get_iommu_bus_devfn() >>> to get iommu_bus->iommu_ops and call get_viommu_cap() callback to >>> get a bitmap with each bit represents a vIOMMU exposed capability. >>> >>> Suggested-by: Yi Liu <yi.l....@intel.com> >>> Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com> >>> --- >>> include/hw/pci/pci.h | 22 ++++++++++++++++++++++ >>> hw/pci/pci.c | 11 +++++++++++ >>> 2 files changed, 33 insertions(+) >>> >>> diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h >>> index df3cc7b875..829757b2c2 100644 >>> --- a/include/hw/pci/pci.h >>> +++ b/include/hw/pci/pci.h >>> @@ -453,6 +453,18 @@ typedef struct PCIIOMMUOps { >>> * @devfn: device and function number of the PCI device. >>> */ >>> void (*unset_iommu_device)(PCIBus *bus, void *opaque, int devfn); >>> + /** >>> + * @get_viommu_cap: get vIOMMU capabilities >>> + * >>> + * Optional callback, if not implemented, then vIOMMU doesn't >>> + * support exposing capabilities to other subsystem, e.g., VFIO. >>> + * vIOMMU can choose which capabilities to expose. >>> + * >>> + * @opaque: the data passed to pci_setup_iommu(). >>> + * >>> + * Returns: 64bit bitmap with each bit represents a capability. >> I think we need to clarify what this bitmap contains as capability bits >> (enum type) > Sure, will be like: > > * Returns: 64bit bitmap with each bit represents a capability emulated > * by VIOMMU_CAP_* in include/hw/iommu.h > > enum { > VIOMMU_CAP_STAGE1 = BIT_ULL(0), /* stage1 page table supported */ > }; looks good to me
Eric > > Thanks > Zhenzhong >