mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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

  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®