Messages in this thread | | | Date | Mon, 13 Feb 2023 10:36:38 +0800 | Subject | Re: [PATCH 1/6] iommu: Add new iommu op to get iommu hardware information | From | Binbin Wu <> |
| |
On 2/9/2023 12:16 PM, Yi Liu wrote: > From: Lu Baolu <baolu.lu@linux.intel.com> > > Introduce a new iommu op get
get -> to get
> the IOMMU hardware capabilities for iommufd. > This information will be used by any vIOMMU driver which is owned by > userspace. > > This op chooses to make the special parameters opaque to the core. This > suits the current usage model where accessing any of the IOMMU device > special parameters does require a userspace driver that matches the kernel > driver. If a need for common parameters, implemented similarly by several > drivers, arises then there is room in the design to grow a generic parameter > set as well. No warpper
warpper -> wrapper
> API is added as it is supposed to be used by > iommufd only. > > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> > Signed-off-by: Yi Liu <yi.l.liu@intel.com> > Signed-off-by: Nicolin Chen <nicolinc@nvidia.com> > --- > include/linux/iommu.h | 8 ++++++++ > include/uapi/linux/iommufd.h | 6 ++++++ > 2 files changed, 14 insertions(+) > > diff --git a/include/linux/iommu.h b/include/linux/iommu.h > index cb586d054c57..97b398d19fd2 100644 > --- a/include/linux/iommu.h > +++ b/include/linux/iommu.h > @@ -15,6 +15,7 @@ > #include <linux/of.h> > #include <linux/ioasid.h> > #include <uapi/linux/iommu.h> > +#include <uapi/linux/iommufd.h> > > #define IOMMU_READ (1 << 0) > #define IOMMU_WRITE (1 << 1) > @@ -223,6 +224,11 @@ struct iommu_iotlb_gather { > /** > * struct iommu_ops - iommu ops and capabilities > * @capable: check capability > + * @hw_info: IOMMU hardware capabilities. The type of the returned data is > + * defined in include/uapi/linux/iommufd.h. The data buffer is > + * allocated in the IOMMU driver and the caller should free it > + * after use. Return the data buffer if success, or ERR_PTR on > + * failure. > * @domain_alloc: allocate iommu domain > * @probe_device: Add device to iommu driver handling > * @release_device: Remove device from iommu driver handling > @@ -252,6 +258,7 @@ struct iommu_iotlb_gather { > */ > struct iommu_ops { > bool (*capable)(struct device *dev, enum iommu_cap); > + void *(*hw_info)(struct device *dev, u32 *length); > > /* Domain allocation and freeing by the iommu driver */ > struct iommu_domain *(*domain_alloc)(unsigned iommu_domain_type); > @@ -280,6 +287,7 @@ struct iommu_ops { > void (*remove_dev_pasid)(struct device *dev, ioasid_t pasid); > > const struct iommu_domain_ops *default_domain_ops; > + enum iommu_device_data_type driver_type;
How to understand the name "iommu_device_data_type"? Is it just refer to the driver types or it has a more generic meaning?
> unsigned long pgsize_bitmap; > struct module *owner; > }; > diff --git a/include/uapi/linux/iommufd.h b/include/uapi/linux/iommufd.h > index 98ebba80cfa1..2309edb55028 100644 > --- a/include/uapi/linux/iommufd.h > +++ b/include/uapi/linux/iommufd.h > @@ -344,4 +344,10 @@ struct iommu_vfio_ioas { > __u16 __reserved; > }; > #define IOMMU_VFIO_IOAS _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VFIO_IOAS) > + > +/** > + * enum iommu_device_data_type - IOMMU hardware Data types > + */ > +enum iommu_device_data_type { > +}; > #endif
| |