[PATCH v3 00/13] Add PASID support to SMMUv3 unmanaged domains

From: Michael Shavit
Date: Wed Jun 14 2023 - 11:43:32 EST


Hi all,

This patch series implements the set_dev_pasid operation for DMA
and UNMANAGED iommu domains.

The bulk of the series involves a refactor of stage 1 domains so that
they describe a single CD entry. On attach, stage 1 domains are inserted
into a CD table that is now owned by the arm_smmu_master struct. This is
a pre-requisite to the set_dev_pasid implementation but also results in
a conceptually cleaner arm_smmu_domain. Note that this does not preclude
from attaching domains that represent a CD table, such as for the
proposed iommufd NESTED domains.

The last few patches of the series make drive-by cleanups to the smmu
SVA implementation. A follow-up patch-series is planned so that the SVA
implementation can further take advantages of the changes introduced here. See
discussion on patch 14 of the v2 series.

This patch series is also available on gerrit with Jean's SMMU test
engine patches cherry-picked on top:
https://linux-review.googlesource.com/id/I0fcd9adc058d1c58a12d2599cc82fba73da7697a
This allowed testing of basic SVA functionality (e.g.: attaching, page
fault handling, and detaching).

Thanks,
Michael Shavit

Changelog
v3:
* Dropped the bulk of the SVA refactoring to re-work as a follow-up
series.
* Reworded cover letter to omit dropped changes.
* Rebased on 6.4 tip
v2:
https://lore.kernel.org/all/20230606120854.4170244-1-mshavit@xxxxxxxxxx/
* Reworded cover letter and commits based on v1 feedback.
* Split and reworked `iommu/arm-smmu-v3: Move cdtable to arm_smmu_master`
* Added SVA clean-up and refactor.
* A few other small bug fixes and cosmetics.
v1:
https://lore.kernel.org/all/20230510205054.2667898-1-mshavit@xxxxxxxxxx/


Michael Shavit (13):
iommu/arm-smmu-v3: Move ctx_desc out of s1_cfg
iommu/arm-smmu-v3: Add smmu_s1_cfg to smmu_master
iommu/arm-smmu-v3: Refactor write_strtab_ent
iommu/arm-smmu-v3: Refactor write_ctx_desc
iommu/arm-smmu-v3: Use the master-owned s1_cfg
iommu/arm-smmu-v3: Simplify arm_smmu_enable_ats
iommu/arm-smmu-v3: Keep track of attached ssids
iommu/arm-smmu-v3: Add helper for atc invalidation
iommu/arm-smmu-v3: Implement set_dev_pasid
iommu/arm-smmu-v3-sva: Remove bond refcount
iommu/arm-smmu-v3-sva: Clean unused iommu_sva
iommu/arm-smmu-v3-sva: Remove arm_smmu_bond
iommu/arm-smmu-v3-sva: Add check when enabling sva

.../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 156 +++---
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 447 ++++++++++++------
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 49 +-
3 files changed, 414 insertions(+), 238 deletions(-)


base-commit: b6dad5178ceaf23f369c3711062ce1f2afc33644
--
2.41.0.162.gfafddb0af9-goog