All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/11] iommu/arm-smmu-v3: Allocate vmid per vsmmu instead of s2_parent
@ 2025-04-15  4:57 Nicolin Chen
  2025-04-15  4:57 ` [PATCH v2 01/11] iommu/arm-smmu-v3: Pass in vmid to arm_smmu_make_s2_domain_ste() Nicolin Chen
                   ` (10 more replies)
  0 siblings, 11 replies; 16+ messages in thread
From: Nicolin Chen @ 2025-04-15  4:57 UTC (permalink / raw)
  To: will, robin.murphy, jgg
  Cc: joro, kevin.tian, praan, nathan, yi.l.liu, peterz, mshavit,
	jsnitsel, smostafa, jeff.johnson, zhangzekun11, linux-arm-kernel,
	iommu, linux-kernel, shameerali.kolothum.thodi

With a system having multiple SMMU physical instances, multiple vSMMUs can
be allocated for a VM that deivces behind different SMMUs are assigned to.
In such a use case, the IPA->PA mappings (i.e. the stage-2 I/O page table)
can be shared across the vSMMU instances.

With a shareable S2 parent domain, it is more natural to store a vmid per
vSMMU instance v.s. a shared S2 domain, since each physical SMMU instance
maintains its own vmid bitmap.

Have a few patches to get the functions ready for the vmid migration. And
decouple the vmid from S2 parent domains and move its allocation to vSMMU
instances. Note that a regular S2 domain (!nest_parent) has to retain the
s2_cfg and vmid for non-nesting use cases, if the SMMU HW doesn't support
stage 1. Maintain a per-S2-domain vsmmus list and a per-vSMMU ats_devices
list to iterate for S2 cache invalidation cmds and ATC invalidation cmds.

This is on Github:
https://github.com/nicolinc/iommufd/commits/smmuv3_vmid-v2

Changelog
v2
 * Add Reviewed-by from Jason and Pranjal
 * Add WARN_ON_ONCE(!vmid) in arm_smmu_make_s2_domain_ste()
 * Add arm_smmu_s2_parent_can_share() for a compatibility check
 * Introduce arm_smmu_s2_parent_tlb_inv_* helpers replacing the non-nesting
   routines
 * Introduce arm_vsmmu_atc_inv_domain() using a per-vSMMU ats_devices list,
   replacing the nested_ats_flush in struct arm_smmu_master_domain
v1
 https://lore.kernel.org/all/cover.1741150594.git.nicolinc@nvidia.com/

Thanks
Nicolin

Nicolin Chen (11):
  iommu/arm-smmu-v3: Pass in vmid to arm_smmu_make_s2_domain_ste()
  iommu/arm-smmu-v3: Pass in smmu/iommu_domain to
    __arm_smmu_tlb_inv_range()
  iommu/arm-smmu-v3: Share cmdq/cmd helpers with arm-smmu-v3-iommufd
  iommu/arm-smmu-v3: Add an inline arm_smmu_tlb_inv_vmid helper
  iommu/arm-smmu-v3: Rename arm_smmu_attach_prepare_vmaster
  iommu/arm-smmu-v3: Introduce arm_smmu_s2_parent_tlb_ invalidation
    helpers
  iommu/arm-smmu-v3: Introduce arm_vsmmu_atc_inv_domain()
  iommu/arm-smmu-v3: Use vSMMU helpers for S2 and ATC invalidations
  iommu/arm-smmu-v3: Clean up nested_ats_flush from master_domain
  iommu/arm-smmu-v3: Decouple vmid from S2 nest_parent domain
  iommu/arm-smmu-v3: Allow to share S2 nest_parent domain across vSMMUs

 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h   |  77 +++++++-
 .../arm/arm-smmu-v3/arm-smmu-v3-iommufd.c     | 175 ++++++++++++++++--
 .../iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c  |   3 +-
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c   | 139 +++++++-------
 4 files changed, 297 insertions(+), 97 deletions(-)

-- 
2.43.0



^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2025-05-15 15:12 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-15  4:57 [PATCH v2 00/11] iommu/arm-smmu-v3: Allocate vmid per vsmmu instead of s2_parent Nicolin Chen
2025-04-15  4:57 ` [PATCH v2 01/11] iommu/arm-smmu-v3: Pass in vmid to arm_smmu_make_s2_domain_ste() Nicolin Chen
2025-04-15  4:57 ` [PATCH v2 02/11] iommu/arm-smmu-v3: Pass in smmu/iommu_domain to __arm_smmu_tlb_inv_range() Nicolin Chen
2025-05-15 15:06   ` Will Deacon
2025-04-15  4:57 ` [PATCH v2 03/11] iommu/arm-smmu-v3: Share cmdq/cmd helpers with arm-smmu-v3-iommufd Nicolin Chen
2025-04-15  4:57 ` [PATCH v2 04/11] iommu/arm-smmu-v3: Add an inline arm_smmu_tlb_inv_vmid helper Nicolin Chen
2025-04-15  4:57 ` [PATCH v2 05/11] iommu/arm-smmu-v3: Rename arm_smmu_attach_prepare_vmaster Nicolin Chen
2025-04-15  4:57 ` [PATCH v2 06/11] iommu/arm-smmu-v3: Introduce arm_smmu_s2_parent_tlb_ invalidation helpers Nicolin Chen
2025-04-15 12:50   ` Jason Gunthorpe
2025-04-15 20:10     ` Nicolin Chen
2025-04-15 23:46       ` Jason Gunthorpe
2025-04-15  4:57 ` [PATCH v2 07/11] iommu/arm-smmu-v3: Introduce arm_vsmmu_atc_inv_domain() Nicolin Chen
2025-04-15  4:57 ` [PATCH v2 08/11] iommu/arm-smmu-v3: Use vSMMU helpers for S2 and ATC invalidations Nicolin Chen
2025-04-15  4:57 ` [PATCH v2 09/11] iommu/arm-smmu-v3: Clean up nested_ats_flush from master_domain Nicolin Chen
2025-04-15  4:57 ` [PATCH v2 10/11] iommu/arm-smmu-v3: Decouple vmid from S2 nest_parent domain Nicolin Chen
2025-04-15  4:57 ` [PATCH v2 11/11] iommu/arm-smmu-v3: Allow to share S2 nest_parent domain across vSMMUs Nicolin Chen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.