Message ID | 20230209041642.9346-2-yi.l.liu@intel.com |
---|---|
State | New |
Headers | show |
Series | iommufd: Add iommu capability reporting | expand |
> From: Liu, Yi L <yi.l.liu@intel.com> > Sent: Thursday, February 9, 2023 12:17 PM > @@ -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 is it 'info' or 'capability'? > + * 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; the enum is called 'device_data_type' while the field is called 'driver_type'. btw this new field is not documented above.
On 2023/2/10 15:28, Tian, Kevin wrote: >> From: Liu, Yi L <yi.l.liu@intel.com> >> Sent: Thursday, February 9, 2023 12:17 PM >> @@ -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 > > is it 'info' or 'capability'? > >> + * 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; > > the enum is called 'device_data_type' while the field is called 'driver_type'. The enum is named from uAPI's p-o-v and driver_type is from IOMMU's. > btw this new field is not documented above. Yes. Will do that. Best regards, baolu
On 2023/2/10 15:28, Tian, Kevin wrote: >> From: Liu, Yi L<yi.l.liu@intel.com> >> Sent: Thursday, February 9, 2023 12:17 PM >> @@ -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 > is it 'info' or 'capability'? hw_info. IOMMU core does not care about specific content, so it is not necessary to define it as capability or anything else. Perhaps we need to change the comments a bit, say, "IOMMU hardware information"? Best regards, baolu
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; 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