From: Tanmay Jagdale <tanmay@marvell.com>
To: <will@kernel.org>, <robin.murphy@arm.com>, <joro@8bytes.org>,
<nicolinc@nvidia.com>, <mshavit@google.com>,
<baolu.lu@linux.intel.com>, <thunder.leizhen@huawei.com>,
<set_pte_at@outlook.com>, <smostafa@google.com>
Cc: <sgoutham@marvell.com>, <gcherian@marvell.com>,
<jcm@jonmasters.org>, <linux-arm-kernel@lists.infradead.org>,
<iommu@lists.linux.dev>, <linux-kernel@vger.kernel.org>,
Tanmay Jagdale <tanmay@marvell.com>
Subject: [PATCH V3 0/2] iommu/arm-smmu-v3: Add support for ECMDQ register mode
Date: Thu, 25 Apr 2024 07:30:13 -0700 [thread overview]
Message-ID: <20240425143013.52292-1-tanmay@marvell.com> (raw)
Resending the patches by Zhen Lei <thunder.leizhen@huawei.com> that add
support for SMMU ECMDQ feature.
Tested this feature on a Marvell SoC by implementing a smmu-test driver.
This test driver spawns a thread per CPU and each thread keeps sending
map, table-walk and unmap requests for a fixed duration.
Using this test driver, we compared ECMDQ vs SMMU with software batching
support and saw ~5% improvement with ECMDQ. Performance numbers are
mentioned below:
Total Requests Average Requests Difference
Per CPU wrt ECMDQ
-----------------------------------------------------------------
ECMDQ 239286381 2991079
CMDQ Batch Size 1 228232187 2852902 -4.62%
CMDQ Batch Size 32 233465784 2918322 -2.43%
CMDQ Batch Size 64 231679588 2895994 -3.18%
CMDQ Batch Size 128 233189030 2914862 -2.55%
CMDQ Batch Size 256 230965773 2887072 -3.48%
v2 --> v3:
1. Rebased on linux 6.9-rc5
v1 --> v2:
1. Drop patch "iommu/arm-smmu-v3: Add arm_smmu_ecmdq_issue_cmdlist() for
non-shared ECMDQ" in v1
2. Drop patch "iommu/arm-smmu-v3: Add support for less than one ECMDQ
per core" in v1
3. Replace rwlock with IPI to support lockless protection against the
write operation to bit
'ERRACK' during error handling and the read operation to bit 'ERRACK'
during command insertion.
4. Standardize variable names.
- struct arm_smmu_ecmdq *__percpu *ecmdq;
+ struct arm_smmu_ecmdq *__percpu *ecmdqs;
5. Add member 'iobase' to struct arm_smmu_device to record the start
physical
address of the SMMU, to replace translation operation
(vmalloc_to_pfn(smmu->base) << PAGE_SHIFT)
+ phys_addr_t iobase;
- smmu_dma_base = (vmalloc_to_pfn(smmu->base) << PAGE_SHIFT);
6. Cancel below union. Whether ECMDQ is enabled is determined only based
on 'ecmdq_enabled'.
- union {
- u32 nr_ecmdq;
- u32 ecmdq_enabled;
- };
+ u32 nr_ecmdq;
+ bool ecmdq_enabled;
7. Eliminate some sparse check warnings. For example.
- struct arm_smmu_ecmdq *ecmdq;
+ struct arm_smmu_ecmdq __percpu *ecmdq;
Zhen Lei (2):
iommu/arm-smmu-v3: Add support for ECMDQ register mode
iommu/arm-smmu-v3: Ensure that a set of associated commands are
inserted in the same ECMDQ
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 261 +++++++++++++++++++-
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 33 +++
2 files changed, 286 insertions(+), 8 deletions(-)
--
2.34.1
next reply other threads:[~2024-04-25 14:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-25 14:30 Tanmay Jagdale [this message]
2024-04-25 14:41 Tanmay Jagdale
2024-04-28 2:08 ` Leizhen (ThunderTown)
2024-04-30 15:09 ` Will Deacon
2024-05-16 14:25 ` Tanmay Jagdale
2024-05-02 16:25 ` Jason Gunthorpe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240425143013.52292-1-tanmay@marvell.com \
--to=tanmay@marvell.com \
--cc=baolu.lu@linux.intel.com \
--cc=gcherian@marvell.com \
--cc=iommu@lists.linux.dev \
--cc=jcm@jonmasters.org \
--cc=joro@8bytes.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mshavit@google.com \
--cc=nicolinc@nvidia.com \
--cc=robin.murphy@arm.com \
--cc=set_pte_at@outlook.com \
--cc=sgoutham@marvell.com \
--cc=smostafa@google.com \
--cc=thunder.leizhen@huawei.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®