From: sashiko-bot@kernel.org
To: "Koichiro Den" <den@valinux.co.jp>
Cc: linux-pci@vger.kernel.org, devicetree@vger.kernel.org,
robh@kernel.org, conor+dt@kernel.org,
wsa+renesas@sang-engineering.com
Subject: Re: [PATCH v4 11/18] PCI: rcar-gen4: Take over the iMSI-RX interrupt
Date: Thu, 15 Oct 2026 03:43:35 +0000 [thread overview]
Message-ID: <sashiko-outbox-172218@kernel.org> (raw)
In-Reply-To: <20261015033103.3076869-12-den@valinux.co.jp>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] pci: dwc: infinite interrupt loop on unmapped MSI
--
commit d7610b61a0b56b2000f9c7946a3b5317c331ed06
Author: Koichiro Den <den@valinux.co.jp>
PCI: rcar-gen4: Take over the iMSI-RX interrupt
On R-Car Gen4 SoCs, intreq_pcim_sub ("msi") carries more than the
integrated MSI receiver. This commit requests the interrupt in the driver
in all configurations and demultiplexes the MSIs through
dw_handle_msi_irq() in a dedicated handler.
> diff --git a/drivers/pci/controller/dwc/pcie-rcar-gen4.c b/drivers/pci/controller/dwc/pcie-rcar-gen4.c
> index 54260e62293b1..d51c0fc5ff363 100644
> --- a/drivers/pci/controller/dwc/pcie-rcar-gen4.c
> +++ b/drivers/pci/controller/dwc/pcie-rcar-gen4.c
[ ... ]
> @@ -613,6 +616,54 @@ static int rcar_gen4_pcie_host_msi_init(struct dw_pcie_rp *pp)
> return ret;
> }
>
> +/*
> + * intreq_pcim_sub carries the iMSI-RX interrupt along with other controller
> + * notifications, so the driver owns it instead of the DesignWare core (see
> + * pp->msi_irq[0]) and demultiplexes the MSIs itself.
> + */
> +static irqreturn_t rcar_gen4_pcie_msi_irq_handler(int irq, void *data)
> +{
> + struct rcar_gen4_pcie *rcar = data;
> + u32 status;
> +
> + status = readl(rcar->base + PCIEINTSTS0) &
> + readl(rcar->base + PCIEINTSTS0EN);
> + if (!(status & MSI_CTRL_INT))
> + return IRQ_NONE;
> +
> + dw_handle_msi_irq(&rcar->dw.pp);
> +
> + return IRQ_HANDLED;
> +}
[Severity: High]
Can this cause an infinite interrupt loop if an unmapped MSI is received?
If a PCIe endpoint sends an unmapped MSI, generic_handle_demux_domain_irq()
returns false.
Because dw_handle_msi_irq() ignores this return value:
drivers/pci/controller/dwc/pcie-designware-host.c:dw_handle_msi_irq() {
...
for_each_set_bit(pos, &status, MAX_MSI_IRQS_PER_CTRL)
generic_handle_demux_domain_irq(pp->irq_domain, irq_off + pos);
}
The write-1-to-clear hardware status bit in PCIE_MSI_INTR0_STATUS is never
cleared for the unmapped interrupt.
Since rcar_gen4_pcie_msi_irq_handler() unconditionally returns IRQ_HANDLED
when MSI_CTRL_INT is set, the un-cleared bit keeps the interrupt line
asserted. The generic IRQ subsystem's spurious interrupt detector won't step
in to disable the line because the handler claims it handled the interrupt.
Could this introduce a hard lockup if an untrusted endpoint triggers an
unmapped MSI?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261015033103.3076869-1-den@valinux.co.jp?part=11
next prev parent reply other threads:[~2026-10-15 3:43 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-15 3:30 [PATCH v4 00/18] PCI: rcar-gen4: Recover from link down and route Root Port interrupts Koichiro Den
2026-10-15 3:30 ` [PATCH v4 01/18] PCI: dwc: Add Renesas to the RAS DES VSEC list Koichiro Den
2026-10-15 3:36 ` sashiko-bot
2026-10-15 3:30 ` [PATCH v4 02/18] PCI: dwc: Factor out the PORT_LINK_DEBUG1 link-up check Koichiro Den
2026-10-15 3:34 ` sashiko-bot
2026-10-15 3:48 ` Shawn Lin
2026-10-15 3:30 ` [PATCH v4 03/18] PCI: rcar-gen4: Check live link status in link_up() Koichiro Den
2026-10-15 3:39 ` sashiko-bot
2026-10-15 3:30 ` [PATCH v4 04/18] dt-bindings: PCI: rcar-gen4: Add optional "aer" interrupt for R-Car Gen4 SoCs Koichiro Den
2026-10-15 3:37 ` sashiko-bot
2026-10-15 3:30 ` [PATCH v4 05/18] PCI: dwc: Export dw_handle_msi_irq() Koichiro Den
2026-10-15 3:37 ` sashiko-bot
2026-10-15 3:49 ` Shawn Lin
2026-10-15 3:30 ` [PATCH v4 06/18] PCI: rcar-gen4: Move deinitialization helpers before SoC initialization Koichiro Den
2026-10-15 3:37 ` sashiko-bot
2026-10-15 3:30 ` [PATCH v4 07/18] PCI: rcar-gen4: Assert resets when Gen5 SoC PHY initialization fails Koichiro Den
2026-10-15 3:38 ` sashiko-bot
2026-10-15 3:30 ` [PATCH v4 08/18] PCI: rcar-gen4: Separate hardware setup from resource acquisition Koichiro Den
2026-10-15 3:37 ` sashiko-bot
2026-10-15 3:30 ` [PATCH v4 09/18] PCI: rcar-gen4: Add Root Port reset support Koichiro Den
2026-10-15 3:44 ` sashiko-bot
2026-10-15 3:30 ` [PATCH v4 10/18] PCI: dwc: Free the MSI domain after the host .deinit() callback Koichiro Den
2026-10-15 3:44 ` sashiko-bot
2026-10-15 3:30 ` [PATCH v4 11/18] PCI: rcar-gen4: Take over the iMSI-RX interrupt Koichiro Den
2026-10-15 3:43 ` sashiko-bot [this message]
2026-10-15 3:30 ` [PATCH v4 12/18] PCI: rcar-gen4: Recover the Root Port on link down Koichiro Den
2026-10-15 3:41 ` sashiko-bot
2026-10-15 3:30 ` [PATCH v4 13/18] PCI: dwc: Let glue drivers hide the Root Port MSI capabilities Koichiro Den
2026-10-15 3:37 ` sashiko-bot
2026-10-15 4:11 ` Shawn Lin
2026-10-15 7:17 ` Koichiro Den
2026-10-15 3:30 ` [PATCH v4 14/18] PCI: rcar-gen4: Route Root Port AER to a virtual Root Port IRQ Koichiro Den
2026-10-15 3:42 ` sashiko-bot
2026-10-15 3:31 ` [PATCH v4 15/18] PCI: rcar-gen4: Route Root Port PME and bandwidth notifications Koichiro Den
2026-10-15 3:44 ` sashiko-bot
2026-10-15 3:31 ` [PATCH v4 16/18] arm64: dts: renesas: r8a779f0: Describe the PCIe AER interrupts Koichiro Den
2026-10-15 3:40 ` sashiko-bot
2026-10-15 3:31 ` [PATCH v4 17/18] arm64: dts: renesas: r8a779g0: " Koichiro Den
2026-10-15 3:43 ` sashiko-bot
2026-10-15 3:31 ` [PATCH v4 18/18] arm64: dts: renesas: r8a779h0: Describe the PCIe AER interrupt Koichiro Den
2026-10-15 3:41 ` sashiko-bot
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=sashiko-outbox-172218@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=den@valinux.co.jp \
--cc=devicetree@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=wsa+renesas@sang-engineering.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.