[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <cover.1741150594.git.nicolinc@nvidia.com>
Date: Tue, 4 Mar 2025 21:03:59 -0800
From: Nicolin Chen <nicolinc@...dia.com>
To: <will@...nel.org>, <robin.murphy@....com>, <jgg@...dia.com>
CC: <joro@...tes.org>, <linux-arm-kernel@...ts.infradead.org>,
<iommu@...ts.linux.dev>, <linux-kernel@...r.kernel.org>,
<shameerali.kolothum.thodi@...wei.com>
Subject: [PATCH v1 0/4] iommu/arm-smmu-v3: Allocate vmid per vsmmu instead of s2_parent
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 pair of patches getting the functions ready for the vmid migration.
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. Then, an S2 invalidation has to be iterated for all the vmids in
the vSMMU list introduced in the S2 parent domain.
This is on Github:
https://github.com/nicolinc/iommufd/commits/smmuv3_vmid-v1
To test it with RMR:
https://github.com/nicolinc/iommufd/commits/smmuv3_vmid-v1-with-rmr
Pairing QEMU branch:
https://github.com/nicolinc/qemu/commits/wip/for_smmuv3_vmid-v1
Thanks
Nicolin
Nicolin Chen (4):
iommu/arm-smmu-v3: Pass in vmid to arm_smmu_make_s2_domain_ste()
iommu/arm-smmu-v3: Share arm_smmu_cmdq_issue_cmd_with_sync() with
vsmmu
iommu/arm-smmu-v3: Decouple vmid from S2 nest_parent domain
iommu/arm-smmu-v3-iommufd: Allow a shared s2_parent to allocate vSMMU
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 14 ++++-
.../arm/arm-smmu-v3/arm-smmu-v3-iommufd.c | 44 +++++++++++---
.../iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c | 3 +-
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 57 ++++++++++++++-----
4 files changed, 93 insertions(+), 25 deletions(-)
base-commit: 7eb172143d5508b4da468ed59ee857c6e5e01da6
--
2.43.0
Powered by blists - more mailing lists