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 */
};

Thanks
Zhenzhong

Reply via email to