Messages in this thread | | | Date | Mon, 13 Feb 2023 16:46:44 +0800 | Subject | Re: [PATCH 1/6] iommu: Add new iommu op to get iommu hardware information | From | Baolu Lu <> |
| |
On 2023/2/13 10:36, Binbin Wu wrote: > > 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
Thanks, will update.
> >> 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"?
This is to tell userspace which type of IOMMU the returned information comes from, Intel VT-d, ARM or others...
> Is it just refer to the driver types or it has a more generic meaning?
IOMMU driver sets this field to distinguish different IOMMU hardware.
Best regards, baolu
| |