> @@ -432,6 +432,7 @@ config ARM_SMMU_V3
>       tristate "ARM Ltd. System MMU Version 3 (SMMUv3) Support"
>       depends on ARM64
>       select IOMMU_API
> +     select IOMMU_SVA
>       select IOMMU_IO_PGTABLE_LPAE
>       select GENERIC_MSI_IRQ_DOMAIN

Doesn't this need to select MMU_NOTIFIER now?

> +     struct mmu_notifier_ops         mn_ops;

Note: not a pointer.

> +     /* If bind() was already called for this (dev, mm) pair, reuse it. */
> +     list_for_each_entry(bond, &master->bonds, list) {
> +             if (bond->mm == mm) {
> +                     refcount_inc(&bond->refs);
> +                     return &bond->sva;
> +             }
> +     }
> +
> +     mn = mmu_notifier_get(&smmu_domain->mn_ops, mm);
> +     if (IS_ERR(mn))
> +             return ERR_CAST(mn);

Which seems to be to avoid mmu_notifier_get reusing notifiers registered
by other arm_smmu_master instance right?

Either you could just use plain old mmu_notifier_register to avoid
the reuse.  Or we could enhance the mmu_notifier_get to pass a private
oaque instance ID pointer, which is checked in addition to the ops,
and you could probably kill off the bonds list and lookup.

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to