Message ID | 20230816121349.104436-3-yi.l.liu@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | iommufd: Add iommu hardware info reporting | expand |
> From: Liu, Yi L <yi.l.liu@intel.com> > Sent: Wednesday, August 16, 2023 8:14 PM > > Different IOMMU hardware would have different hardware information. So > the > information reported differs as well. To let the external user understand > the difference. enum iommu_hw_info_type is defined. For the iommu s/difference. enum/difference, enum/ > + * @hw_info: IOMMU hardware information. The type of the returned data > is > + * marked by the output type of this op. Type is one of > + * enum iommu_hw_info_type defined in > include/uapi/linux/iommufd.h. > + * The drivers that support this op should define a unique type > + * in include/uapi/linux/iommufd.h. The data buffer returned by this > + * op 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. simplified as: @hw_info: report iommu hardware information. The data buffer returned by this op is allocated in the iommu driver and freed by the caller after use. The information type is one of enum iommu_hw_info_type defined in include/uapi/linux/iommufd.h. Reviewed-by: Kevin Tian <kevin.tian@intel.com>
On Thu, Aug 17, 2023 at 07:24:44AM +0000, Tian, Kevin wrote: > > > From: Liu, Yi L <yi.l.liu@intel.com> > > Sent: Wednesday, August 16, 2023 8:14 PM > > > > Different IOMMU hardware would have different hardware information. So > > the > > information reported differs as well. To let the external user understand > > the difference. enum iommu_hw_info_type is defined. For the iommu > > s/difference. enum/difference, enum/ > > > + * @hw_info: IOMMU hardware information. The type of the returned data > > is > > + * marked by the output type of this op. Type is one of > > + * enum iommu_hw_info_type defined in > > include/uapi/linux/iommufd.h. > > + * The drivers that support this op should define a unique type > > + * in include/uapi/linux/iommufd.h. The data buffer returned by this > > + * op 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. > > simplified as: > > @hw_info: report iommu hardware information. The data buffer returned by > this op is allocated in the iommu driver and freed by the caller > after use. The information type is one of enum iommu_hw_info_type > defined in include/uapi/linux/iommufd.h. > > Reviewed-by: Kevin Tian <kevin.tian@intel.com> Done. Thanks!
diff --git a/include/linux/iommu.h b/include/linux/iommu.h index e0245aa82b75..f2d6a3989713 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -228,6 +228,14 @@ struct iommu_iotlb_gather { /** * struct iommu_ops - iommu ops and capabilities * @capable: check capability + * @hw_info: IOMMU hardware information. The type of the returned data is + * marked by the output type of this op. Type is one of + * enum iommu_hw_info_type defined in include/uapi/linux/iommufd.h. + * The drivers that support this op should define a unique type + * in include/uapi/linux/iommufd.h. The data buffer returned by this + * op 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 @@ -257,6 +265,7 @@ struct iommu_iotlb_gather { */ struct iommu_ops { bool (*capable)(struct device *dev, enum iommu_cap); + void *(*hw_info)(struct device *dev, u32 *length, u32 *type); /* Domain allocation and freeing by the iommu driver */ struct iommu_domain *(*domain_alloc)(unsigned iommu_domain_type); diff --git a/include/uapi/linux/iommufd.h b/include/uapi/linux/iommufd.h index 8245c01adca6..ac11ace21edb 100644 --- a/include/uapi/linux/iommufd.h +++ b/include/uapi/linux/iommufd.h @@ -370,4 +370,13 @@ struct iommu_hwpt_alloc { __u32 __reserved; }; #define IOMMU_HWPT_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_HWPT_ALLOC) + +/** + * enum iommu_hw_info_type - IOMMU Hardware Info Types + * @IOMMU_HW_INFO_TYPE_NONE: Used by the drivers that do not report hardware + * info + */ +enum iommu_hw_info_type { + IOMMU_HW_INFO_TYPE_NONE, +}; #endif