[PATCH] iommu: Allow device driver to use its own PASID space for SVA

Jason Gunthorpe jgg at ziepe.ca
Fri May 15 16:18:08 PDT 2026


On Fri, May 15, 2026 at 09:46:05AM +0000, Joonwon Kang wrote:
> diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
> index 0ca3912ecb7f..61e2e52105e5 100644
> --- a/arch/x86/kernel/traps.c
> +++ b/arch/x86/kernel/traps.c
> @@ -864,6 +864,8 @@ static bool try_fixup_enqcmd_gp(void)
>  		return false;
>  
>  	pasid = mm_get_enqcmd_pasid(current->mm);
> +	if (pasid == IOMMU_PASID_INVALID)
> +		return false;

If you do this then probably you should get rid of mm_valid_pasid(),
mm_get_enqcmd_pasid() already has the NULL check so the two functions
are kind of pointless.

You also missed the other place calling mm_valid_pasid() that should
really be sensitive to this as well:

static int prctl_enable_tagged_addr(struct mm_struct *mm, unsigned long nr_bits)
{
[..]
        if (mm_valid_pasid(mm) &&
            !test_bit(MM_CONTEXT_FORCE_TAGGED_SVA, &mm->context.flags))
                return -EINVAL;

Make that removal a prep patch

I didn't try to check the rest closely but the approach looked sane to
me

Jason



More information about the linux-arm-kernel mailing list