Message ID | 20230724111335.107427-12-yi.l.liu@intel.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Add Intel VT-d nested translation | expand |
On Mon, Jul 24, 2023 at 04:13:33AM -0700, Yi Liu wrote: > Add intel_iommu_hw_info() to report cap_reg and ecap_reg information. > > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> > Signed-off-by: Nicolin Chen <nicolinc@nvidia.com> > Signed-off-by: Yi Liu <yi.l.liu@intel.com> > --- > drivers/iommu/intel/iommu.c | 19 +++++++++++++++++++ > include/uapi/linux/iommufd.h | 23 +++++++++++++++++++++++ > 2 files changed, 42 insertions(+) I would like to pick this patch out of this series to go with the main get_info stuff so that we have drivers implementing what is merged. I made the trivial fixup. Lu are you OK? Thanks, Jason
On 2023/8/16 0:31, Jason Gunthorpe wrote: > On Mon, Jul 24, 2023 at 04:13:33AM -0700, Yi Liu wrote: >> Add intel_iommu_hw_info() to report cap_reg and ecap_reg information. >> >> Signed-off-by: Lu Baolu<baolu.lu@linux.intel.com> >> Signed-off-by: Nicolin Chen<nicolinc@nvidia.com> >> Signed-off-by: Yi Liu<yi.l.liu@intel.com> >> --- >> drivers/iommu/intel/iommu.c | 19 +++++++++++++++++++ >> include/uapi/linux/iommufd.h | 23 +++++++++++++++++++++++ >> 2 files changed, 42 insertions(+) > I would like to pick this patch out of this series to go with the main > get_info stuff so that we have drivers implementing what is merged. I > made the trivial fixup. > > Lu are you OK? Yes. Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com> Best regards, baolu
On Wed, Aug 16, 2023 at 08:35:00AM +0800, Baolu Lu wrote: > On 2023/8/16 0:31, Jason Gunthorpe wrote: > > On Mon, Jul 24, 2023 at 04:13:33AM -0700, Yi Liu wrote: > > > Add intel_iommu_hw_info() to report cap_reg and ecap_reg information. > > > > > > Signed-off-by: Lu Baolu<baolu.lu@linux.intel.com> > > > Signed-off-by: Nicolin Chen<nicolinc@nvidia.com> > > > Signed-off-by: Yi Liu<yi.l.liu@intel.com> > > > --- > > > drivers/iommu/intel/iommu.c | 19 +++++++++++++++++++ > > > include/uapi/linux/iommufd.h | 23 +++++++++++++++++++++++ > > > 2 files changed, 42 insertions(+) > > I would like to pick this patch out of this series to go with the main > > get_info stuff so that we have drivers implementing what is merged. I > > made the trivial fixup. > > > > Lu are you OK? > > Yes. > > Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com> Hmm... We have Yi in the author line and Baolu in the first signed-off line, and now Baolu with "Reviewed-by" again... I guess we might need a bit of fix or re-arrange? :) Thanks Nic
On Wed, Aug 16, 2023 at 08:35:00AM +0800, Baolu Lu wrote: > On 2023/8/16 0:31, Jason Gunthorpe wrote: > > On Mon, Jul 24, 2023 at 04:13:33AM -0700, Yi Liu wrote: > > > Add intel_iommu_hw_info() to report cap_reg and ecap_reg information. > > > > > > Signed-off-by: Lu Baolu<baolu.lu@linux.intel.com> > > > Signed-off-by: Nicolin Chen<nicolinc@nvidia.com> > > > Signed-off-by: Yi Liu<yi.l.liu@intel.com> > > > --- > > > drivers/iommu/intel/iommu.c | 19 +++++++++++++++++++ > > > include/uapi/linux/iommufd.h | 23 +++++++++++++++++++++++ > > > 2 files changed, 42 insertions(+) > > I would like to pick this patch out of this series to go with the main > > get_info stuff so that we have drivers implementing what is merged. I > > made the trivial fixup. > > > > Lu are you OK? > > Yes. > > Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com> I changed this to an acked-by since you helpd write the patch :) Jason
On 2023/8/16 19:46, Jason Gunthorpe wrote: > On Wed, Aug 16, 2023 at 08:35:00AM +0800, Baolu Lu wrote: >> On 2023/8/16 0:31, Jason Gunthorpe wrote: >>> On Mon, Jul 24, 2023 at 04:13:33AM -0700, Yi Liu wrote: >>>> Add intel_iommu_hw_info() to report cap_reg and ecap_reg information. >>>> >>>> Signed-off-by: Lu Baolu<baolu.lu@linux.intel.com> >>>> Signed-off-by: Nicolin Chen<nicolinc@nvidia.com> >>>> Signed-off-by: Yi Liu<yi.l.liu@intel.com> >>>> --- >>>> drivers/iommu/intel/iommu.c | 19 +++++++++++++++++++ >>>> include/uapi/linux/iommufd.h | 23 +++++++++++++++++++++++ >>>> 2 files changed, 42 insertions(+) >>> I would like to pick this patch out of this series to go with the main >>> get_info stuff so that we have drivers implementing what is merged. I >>> made the trivial fixup. >>> >>> Lu are you OK? >> Yes. >> >> Reviewed-by: Lu Baolu<baolu.lu@linux.intel.com> > I changed this to an acked-by since you helpd write the patch
> From: Baolu Lu <baolu.lu@linux.intel.com> > Sent: Wednesday, August 16, 2023 7:49 PM > > On 2023/8/16 19:46, Jason Gunthorpe wrote: > > On Wed, Aug 16, 2023 at 08:35:00AM +0800, Baolu Lu wrote: > >> On 2023/8/16 0:31, Jason Gunthorpe wrote: > >>> On Mon, Jul 24, 2023 at 04:13:33AM -0700, Yi Liu wrote: > >>>> Add intel_iommu_hw_info() to report cap_reg and ecap_reg information. > >>>> > >>>> Signed-off-by: Lu Baolu<baolu.lu@linux.intel.com> > >>>> Signed-off-by: Nicolin Chen<nicolinc@nvidia.com> > >>>> Signed-off-by: Yi Liu<yi.l.liu@intel.com> > >>>> --- > >>>> drivers/iommu/intel/iommu.c | 19 +++++++++++++++++++ > >>>> include/uapi/linux/iommufd.h | 23 +++++++++++++++++++++++ > >>>> 2 files changed, 42 insertions(+) > >>> I would like to pick this patch out of this series to go with the main > >>> get_info stuff so that we have drivers implementing what is merged. I > >>> made the trivial fixup. > >>> > >>> Lu are you OK? > >> Yes. > >> > >> Reviewed-by: Lu Baolu<baolu.lu@linux.intel.com> > > I changed this to an acked-by since you helpd write the patch
diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index 6977d320c440..ba34827045e6 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -4748,8 +4748,26 @@ static void intel_iommu_remove_dev_pasid(struct device *dev, ioasid_t pasid) intel_pasid_tear_down_entry(iommu, dev, pasid, false); } +static void *intel_iommu_hw_info(struct device *dev, u32 *length) +{ + struct device_domain_info *info = dev_iommu_priv_get(dev); + struct intel_iommu *iommu = info->iommu; + struct iommu_hw_info_vtd *vtd; + + vtd = kzalloc(sizeof(*vtd), GFP_KERNEL); + if (!vtd) + return ERR_PTR(-ENOMEM); + + vtd->cap_reg = iommu->cap; + vtd->ecap_reg = iommu->ecap; + *length = sizeof(*vtd); + + return vtd; +} + const struct iommu_ops intel_iommu_ops = { .capable = intel_iommu_capable, + .hw_info = intel_iommu_hw_info, .domain_alloc = intel_iommu_domain_alloc, .domain_alloc_user = intel_iommu_domain_alloc_user, .probe_device = intel_iommu_probe_device, @@ -4763,6 +4781,7 @@ const struct iommu_ops intel_iommu_ops = { .def_domain_type = device_def_domain_type, .remove_dev_pasid = intel_iommu_remove_dev_pasid, .pgsize_bitmap = SZ_4K, + .hw_info_type = IOMMU_HW_INFO_TYPE_INTEL_VTD, #ifdef CONFIG_INTEL_IOMMU_SVM .page_response = intel_svm_page_response, #endif diff --git a/include/uapi/linux/iommufd.h b/include/uapi/linux/iommufd.h index 2c1241448c87..0dfb6f3d8dda 100644 --- a/include/uapi/linux/iommufd.h +++ b/include/uapi/linux/iommufd.h @@ -435,12 +435,35 @@ struct iommu_hwpt_alloc { }; #define IOMMU_HWPT_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_HWPT_ALLOC) +/** + * struct iommu_hw_info_vtd - Intel VT-d hardware information + * + * @flags: Must be 0 + * @__reserved: Must be 0 + * + * @cap_reg: Value of Intel VT-d capability register defined in VT-d spec + * section 11.4.2 Capability Register. + * @ecap_reg: Value of Intel VT-d capability register defined in VT-d spec + * section 11.4.3 Extended Capability Register. + * + * User needs to understand the Intel VT-d specification to decode the + * register value. + */ +struct iommu_hw_info_vtd { + __u32 flags; + __u32 __reserved; + __aligned_u64 cap_reg; + __aligned_u64 ecap_reg; +}; + /** * enum iommu_hw_info_type - IOMMU Hardware Info Types * @IOMMU_HW_INFO_TYPE_NONE: Used by the drivers that does not report hardware info + * @IOMMU_HW_INFO_TYPE_INTEL_VTD: Intel VT-d iommu info type */ enum iommu_hw_info_type { IOMMU_HW_INFO_TYPE_NONE, + IOMMU_HW_INFO_TYPE_INTEL_VTD, }; /**