diff options
| author | Jason Gunthorpe <jgg@nvidia.com> | 2026-03-17 00:59:19 -0700 |
|---|---|---|
| committer | Will Deacon <will@kernel.org> | 2026-03-19 15:08:21 +0000 |
| commit | 15a2a5645ad79df78965a7c49bdd4b6a63b2033a (patch) | |
| tree | 0824dcb9c40e21bb26b1e7944570858996f78a08 /tools/perf/scripts/python/stackcollapse.py | |
| parent | c317452f5a224b4ac97d51162395bd6bddaf478c (diff) | |
iommu/arm-smmu-v3: Introduce a per-domain arm_smmu_invs array
Create a new data structure to hold an array of invalidations that need to
be performed for the domain based on what masters are attached, to replace
the single smmu pointer and linked list of masters in the current design.
Each array entry holds one of the invalidation actions - S1_ASID, S2_VMID,
ATS or their variant with information to feed invalidation commands to HW.
It is structured so that multiple SMMUs can participate in the same array,
removing one key limitation of the current system.
To maximize performance, a sorted array is used as the data structure. It
allows grouping SYNCs together to parallelize invalidations. For instance,
it will group all the ATS entries after the ASID/VMID entry, so they will
all be pushed to the PCI devices in parallel with one SYNC.
To minimize the locking cost on the invalidation fast path (reader of the
invalidation array), the array is managed with RCU.
Provide a set of APIs to add/delete entries to/from an array, which cover
cannot-fail attach cases, e.g. attaching to arm_smmu_blocked_domain. Also
add kunit coverage for those APIs.
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Pranjal Shrivastava <praan@google.com>
Co-developed-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/stackcollapse.py')
0 files changed, 0 insertions, 0 deletions
