All of lore.kernel.org
 help / color / mirror / Atom feed
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 10/18] PCI: dwc: Free the MSI domain after the host .deinit() callback
Date: Thu, 15 Oct 2026 03:44:13 +0000	[thread overview]
Message-ID: <sashiko-outbox-172221@kernel.org> (raw)
In-Reply-To: <20261015033103.3076869-11-den@valinux.co.jp>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] pci: dwc: missing synchronize_irq() after removing chained MSI handlers
--

commit 5f29144f527d9dfd0c8c7686f0d2791d38c14098
Author: Koichiro Den <den@valinux.co.jp>

PCI: dwc: Free the MSI domain after the host .deinit() callback

dw_pcie_host_deinit() frees the iMSI-RX domain before calling the host
.deinit() callback. For a core-owned parent interrupt,
dw_pcie_free_msi() removes the chained handler right before the domain.

> diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c
> index 63b38532d069a..774e1936d9991 100644
> --- a/drivers/pci/controller/dwc/pcie-designware-host.c
> +++ b/drivers/pci/controller/dwc/pcie-designware-host.c
> @@ -228,7 +228,7 @@ int dw_pcie_allocate_domains(struct dw_pcie_rp *pp)
>  }
>  EXPORT_SYMBOL_GPL(dw_pcie_allocate_domains);
>  
> -void dw_pcie_free_msi(struct dw_pcie_rp *pp)
> +static void dw_pcie_remove_msi_handlers(struct dw_pcie_rp *pp)
>  {
>  	u32 ctrl;
>  
> @@ -236,8 +236,18 @@ void dw_pcie_free_msi(struct dw_pcie_rp *pp)
>  		if (pp->msi_irq[ctrl] > 0)
>  			irq_set_chained_handler_and_data(pp->msi_irq[ctrl], NULL, NULL);
>  	}
> +}

[Severity: High]
Does this code need a call to synchronize_irq() here?

irq_set_chained_handler_and_data() uninstalls the handler but does not wait
for concurrent executions to finish. This means an interrupt handler like
dw_chained_msi_isr() could still be executing on another CPU.

[ ... ]

> @@ -718,11 +730,14 @@ void dw_pcie_host_deinit(struct dw_pcie_rp *pp)
>  	dw_pcie_edma_remove(pci);
>  
>  	if (pp->use_imsi_rx)
> -		dw_pcie_free_msi(pp);
> +		dw_pcie_remove_msi_handlers(pp);
>  
>  	if (pp->ops->deinit)
>  		pp->ops->deinit(pp);

[Severity: High]
Could the lack of interrupt synchronization cause a regression here?

If the unsynchronized interrupt handler is still in flight, pp->ops->deinit(pp)
might power down the controller out from under it.

If the in-flight handler proceeds to call dw_handle_msi_irq(), it will read
PCIE_MSI_INTR0_STATUS from the powered-down hardware, potentially resulting in
an asynchronous SError (bus crash) or use-after-free.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261015033103.3076869-1-den@valinux.co.jp?part=10

  reply	other threads:[~2026-10-15  3:44 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 [this message]
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
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-172221@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.