From: Nicolin Chen <nicolinc@nvidia.com>
To: Will Deacon <will@kernel.org>
Cc: <robin.murphy@arm.com>, <jgg@nvidia.com>, <joro@8bytes.org>,
<praan@google.com>, <kevin.tian@intel.com>, <smostafa@google.com>,
<linux-arm-kernel@lists.infradead.org>, <iommu@lists.linux.dev>,
<linux-kernel@vger.kernel.org>, <jamien@nvidia.com>,
<kas@kernel.org>
Subject: Re: [PATCH v10 03/13] iommu/arm-smmu-v3: Add ARM_SMMU_FEAT_EVTQ for the event queue
Date: Sun, 4 Oct 2026 21:37:48 -0700 [thread overview]
Message-ID: <asMpnDFQgry5moXr@nvidia.com> (raw)
In-Reply-To: <asK1JIsTay1yeBEU@nvidia.com>
On Sun, Oct 04, 2026 at 01:20:52PM -0700, Nicolin Chen wrote:
> Sashiko is only right about the small waste of the MSI vector since
> it's unused. But, that nvec decrement trick only works for PRIQ, as
> its MSI index is at top of the list:
>
> enum arm_smmu_msi_index {
> EVTQ_MSI_INDEX,
> GERROR_MSI_INDEX,
> PRIQ_MSI_INDEX,
> ARM_SMMU_MAX_MSIS, // "nvec--" shifts up this, skipping PRIQ
> };
>
> On the other hand, EVTQ_MSI_INDEX is at 0. Skipping it would need to
> shift the entire index list; struct arm_smmu_msi_cfg would not work
> straightforwardly as today.
I made a small change swapping those two indexes. Though it cannot
break the dependency on the vectors, I think we should be fine as
there should be no use case for !FEAT_EVTQ && FEAT_PRI.
-----------------------prep patch--------------------------
@@ -59,4 +59,4 @@ static DEFINE_STATIC_KEY_FALSE(arm_smmu_erratum_repeat_tlbi_cfgi_key);
enum arm_smmu_msi_index {
- EVTQ_MSI_INDEX,
GERROR_MSI_INDEX,
+ EVTQ_MSI_INDEX,
PRIQ_MSI_INDEX,
@@ -70,7 +70,2 @@ static_assert(sizeof(struct arm_smmu_cd) == NUM_ENTRY_QWORDS * sizeof(u64));
static phys_addr_t arm_smmu_msi_cfg[ARM_SMMU_MAX_MSIS][3] = {
- [EVTQ_MSI_INDEX] = {
- ARM_SMMU_EVTQ_IRQ_CFG0,
- ARM_SMMU_EVTQ_IRQ_CFG1,
- ARM_SMMU_EVTQ_IRQ_CFG2,
- },
[GERROR_MSI_INDEX] = {
@@ -80,2 +75,7 @@ static phys_addr_t arm_smmu_msi_cfg[ARM_SMMU_MAX_MSIS][3] = {
},
+ [EVTQ_MSI_INDEX] = {
+ ARM_SMMU_EVTQ_IRQ_CFG0,
+ ARM_SMMU_EVTQ_IRQ_CFG1,
+ ARM_SMMU_EVTQ_IRQ_CFG2,
+ },
[PRIQ_MSI_INDEX] = {
@@ -4967,3 +4967,3 @@ static void arm_smmu_setup_msis(struct arm_smmu_device *smmu)
- /* Allocate MSIs for evtq, gerror and priq. Ignore cmdq */
+ /* Allocate MSIs for gerror, evtq and priq. Ignore cmdq */
ret = platform_device_msi_init_and_alloc_irqs(dev, nvec, arm_smmu_write_msi_msg);
@@ -4974,4 +4974,4 @@ static void arm_smmu_setup_msis(struct arm_smmu_device *smmu)
- smmu->evtq.q.irq = msi_get_virq(dev, EVTQ_MSI_INDEX);
smmu->gerr_irq = msi_get_virq(dev, GERROR_MSI_INDEX);
+ smmu->evtq.q.irq = msi_get_virq(dev, EVTQ_MSI_INDEX);
smmu->priq.q.irq = msi_get_virq(dev, PRIQ_MSI_INDEX);
-----------------------------------------------------------
-----------------------nvec patch--------------------------
@@ -4952,3 +4961,11 @@ static void arm_smmu_setup_msis(struct arm_smmu_device *smmu)
writeq_relaxed(0, smmu->base + ARM_SMMU_GERROR_IRQ_CFG0);
- writeq_relaxed(0, smmu->base + ARM_SMMU_EVTQ_IRQ_CFG0);
+
+ /* PRIQ's vector needs EVTQ's to be kept */
+ WARN_ON_ONCE(!(smmu->features & ARM_SMMU_FEAT_EVTQ) &&
+ (smmu->features & ARM_SMMU_FEAT_PRI));
+
+ if (smmu->features & ARM_SMMU_FEAT_EVTQ)
+ writeq_relaxed(0, smmu->base + ARM_SMMU_EVTQ_IRQ_CFG0);
+ else
+ nvec--;
-----------------------------------------------------------
I also did a rebase on arm/smmu/updates, resolving merge conflict.
I can quickly respin a v11 once we finalize the discussions in the
other thread.
Thanks
Nicolin
next prev parent reply other threads:[~2026-10-05 4:38 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-30 23:18 [PATCH v10 00/13] iommu/arm-smmu-v3: Adopt the crashed kernel's stream table for kdump Nicolin Chen
2026-08-30 23:18 ` [PATCH v10 01/13] iommu/arm-smmu-v3: Init the vmid_map ida before the stream table setup Nicolin Chen
2026-08-30 23:18 ` [PATCH v10 02/13] iommu/arm-smmu-v3: Make the ASID space per SMMU instance Nicolin Chen
2026-09-23 16:39 ` Jason Gunthorpe
2026-10-04 13:23 ` Will Deacon
2026-10-04 16:22 ` Jason Gunthorpe
2026-08-30 23:18 ` [PATCH v10 03/13] iommu/arm-smmu-v3: Add ARM_SMMU_FEAT_EVTQ for the event queue Nicolin Chen
2026-09-02 11:21 ` Kiryl Shutsemau
2026-09-23 16:39 ` Jason Gunthorpe
2026-10-04 13:24 ` Will Deacon
2026-10-04 20:20 ` Nicolin Chen
2026-10-05 4:37 ` Nicolin Chen [this message]
2026-08-30 23:18 ` [PATCH v10 04/13] iommu/arm-smmu-v3: Disable the EVTQ and the PRIQ in a kdump kernel Nicolin Chen
2026-09-02 11:22 ` Kiryl Shutsemau
2026-09-23 16:39 ` Jason Gunthorpe
2026-08-30 23:18 ` [PATCH v10 05/13] iommu/arm-smmu-v3: Add strtab parse helpers to a new arm-smmu-v3-kexec.c Nicolin Chen
2026-08-30 23:18 ` [PATCH v10 06/13] iommu/arm-smmu-v3: Add ARM_SMMU_OPT_KDUMP_ADOPT for kdump kernel Nicolin Chen
2026-10-04 13:25 ` Will Deacon
2026-10-04 16:35 ` Jason Gunthorpe
2026-10-04 20:59 ` Nicolin Chen
2026-10-05 6:34 ` Will Deacon
2026-10-05 8:04 ` Nicolin Chen
2026-10-04 20:47 ` Nicolin Chen
2026-10-05 6:32 ` Will Deacon
2026-10-05 7:56 ` Nicolin Chen
2026-10-05 8:10 ` Will Deacon
2026-08-30 23:18 ` [PATCH v10 07/13] iommu/arm-smmu-v3-kexec: Add a CD table parse helper Nicolin Chen
2026-08-30 23:18 ` [PATCH v10 08/13] iommu/arm-smmu-v3-kexec: Add ASID/VMID reservation helpers Nicolin Chen
2026-09-23 16:39 ` Jason Gunthorpe
2026-08-30 23:18 ` [PATCH v10 09/13] iommu/arm-smmu-v3-kdump: Reserve crashed kernel's ASIDs and VMIDs Nicolin Chen
2026-08-30 23:18 ` [PATCH v10 10/13] iommu/arm-smmu-v3-kdump: Implement is_attach_deferred() Nicolin Chen
2026-08-30 23:18 ` [PATCH v10 11/13] iommu/arm-smmu-v3: Retain CR0_SMMUEN during kdump device reset Nicolin Chen
2026-08-30 23:18 ` [PATCH v10 12/13] iommu/arm-smmu-v3: Skip RMR bypass for kdump adoption Nicolin Chen
2026-08-30 23:18 ` [PATCH v10 13/13] iommu/arm-smmu-v3: Detect ARM_SMMU_OPT_KDUMP_ADOPT in probe() Nicolin Chen
2026-09-14 10:41 ` [PATCH v10 00/13] iommu/arm-smmu-v3: Adopt the crashed kernel's stream table for kdump Breno Leitao
2026-09-28 15:23 ` Cristian Prundeanu
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=asMpnDFQgry5moXr@nvidia.com \
--to=nicolinc@nvidia.com \
--cc=iommu@lists.linux.dev \
--cc=jamien@nvidia.com \
--cc=jgg@nvidia.com \
--cc=joro@8bytes.org \
--cc=kas@kernel.org \
--cc=kevin.tian@intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=praan@google.com \
--cc=robin.murphy@arm.com \
--cc=smostafa@google.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®