[PATCH v6 20/25] iommu/arm-smmu-v3-iommufd: Add hw_info to impl_ops
Pranjal Shrivastava
praan at google.com
Thu Jun 19 20:32:19 PDT 2025
On Thu, Jun 19, 2025 at 03:53:25PM -0300, Jason Gunthorpe wrote:
> On Thu, Jun 19, 2025 at 11:47:24AM +0000, Pranjal Shrivastava wrote:
> > I'm not sure if I get this right.. if the user (while porting a VMM or
> > something) mistakenly passes *type == IOMMU_HW_INFO_TYPE_INTEL_VTD here,
> > they'll get impl-specific info?
>
> It should call the impl hw_info which should fail?
>
> +static void *tegra241_cmdqv_hw_info(struct arm_smmu_device *smmu, u32 *length,
> + u32 *type)
> +{
> + if (*type != IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV)
> + return ERR_PTR(-EOPNOTSUPP);
>
> If impl ops is null/etc then it fails:
>
> + if (!impl_ops || !impl_ops->hw_info)
> + return ERR_PTR(-EOPNOTSUPP);
>
> Where does IOMMU_HW_INFO_TYPE_INTEL_VTD return something?
>
I mean, the check in the driver (for e.g. arm-smmu-v3) is:
if (*type != IOMMU_HW_INFO_TYPE_DEFAULT &&
*type != IOMMU_HW_INFO_TYPE_ARM_SMMUV3)
// call impl_ops
My point is that in-case someone passed INTEL_VTD type, we would end up
calling impl_ops->hw_info and then the impl_ops->hw_info shall check for
the type to return -EOPNOTSUPP. Either we should clearly mention that
each impl_op implementing hw_info *must* add another type and check for
it OR we could have sub-types for implementations extending a main type
somehow?
> > I agree in that case the impl-specific
> > driver needs to check the type, but shouldn't we simply return from here
> > itself if the type isn't arm-smmu-v3?
>
> Then how do you return IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV?
>
The current version is just fine with a doc string mentioning type
checks within impl_ops->hw_info OR we could have sub-types for
implementations extending some architectural IOMMU.
I'm just trying to avoid weird bug reports in the future because some
impl didn't check for their type.
> Jason
Thanks
Praan
More information about the linux-arm-kernel
mailing list