[PATCH v7 06/14] iommu/arm-smmu-v3: Do not use master->sva_enable to restrict attaches

Nicolin Chen nicolinc at nvidia.com
Sun May 12 23:01:19 PDT 2024


On Wed, May 08, 2024 at 03:57:14PM -0300, Jason Gunthorpe wrote:
> We no longer need a master->sva_enable to control what attaches are
> allowed. Instead we can tell if the attach is legal based on the current
> configuration of the master.
> 
> Keep track of the number of valid CD entries for SSID's in the cd_table
> and if the cd_table has been installed in the STE directly so we know what
> the configuration is.
> 
> The attach logic is then made into:
>  - SVA bind, check if the CD is installed
>  - RID attach of S2, block if SSIDs are used
>  - RID attach of IDENTITY/BLOCKING, block if SSIDs are used
> 
> Signed-off-by: Jason Gunthorpe <jgg at nvidia.com>
> ---
>  .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c   |  2 +-
>  drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c   | 24 +++++++++----------
>  drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h   |  7 ++++++
>  3 files changed, 20 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c
> index d31caceb584984..7627cb53da55b9 100644
> --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c
> +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c
> @@ -628,7 +628,7 @@ static int arm_smmu_sva_set_dev_pasid(struct iommu_domain *domain,
>  	struct arm_smmu_cd target;
>  	int ret;
>  
> -	if (mm_get_enqcmd_pasid(mm) != id)
> +	if (mm_get_enqcmd_pasid(mm) != id || !master->cd_table.in_ste)
>  		return -EINVAL;

The in_ste is added in PATCH-2 and the new arm_smmu_set_pasid()
in the same patch is also guarded by the in_ste. So, it feels a
little more related by moving this check here into PATCH-2 too?

Thanks
Nicolin



More information about the linux-arm-kernel mailing list