From: Shawn Lin <shawn.lin@rock-chips.com>
To: "Koichiro Den" <den@valinux.co.jp>,
"Marek Vasut" <marek.vasut+renesas@mailbox.org>,
"Geert Uytterhoeven" <geert+renesas@glider.be>,
"Yoshihiro Shimoda" <yoshihiro.shimoda.uh@renesas.com>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Magnus Damm" <magnus.damm@gmail.com>,
"Jingoo Han" <jingoohan1@gmail.com>
Cc: shawn.lin@rock-chips.com, Philipp Zabel <p.zabel@pengutronix.de>,
Frank Li <Frank.Li@nxp.com>, Niklas Cassel <cassel@kernel.org>,
Wilfred Mallawa <wilfred.mallawa@wdc.com>,
Serge Semin <fancer.lancer@gmail.com>,
linux-pci@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 13/18] PCI: dwc: Let glue drivers hide the Root Port MSI capabilities
Date: Thu, 15 Oct 2026 12:11:45 +0800 [thread overview]
Message-ID: <3796136c-cc01-472b-b14c-34d140a10cbf@rock-chips.com> (raw)
In-Reply-To: <20261015033103.3076869-14-den@valinux.co.jp>
Hi Koichiro
在 2026/10/15 星期四 11:30, Koichiro Den 写道:
> Commit f5cd8a929c82 ("PCI: dwc: Remove MSI/MSIX capability for Root Port
> if iMSI-RX is used as MSI controller") hides the Root Port MSI/MSI-X
> capabilities when iMSI-RX is the MSI controller, as it cannot receive
> the Root Port's own MSIs.
>
> Some platforms cannot deliver them with an external MSI controller
> either. The DesignWare core signals Root Port interrupts (AER, PME,
> bandwidth, hotplug) as sideband signals on its SII interface and only
> turns them into MSI writes with the optional SII2MSI feature. Otherwise
> it is up to the vendor wrapper. The controller on R-Car Gen4 SoCs
> (DWC 5.20a) appears to lack SII2MSI, and its APP block merely latches
> the signals into status registers wired to platform IRQs, so an MSI
> targeted at the GIC ITS is never sent.
>
> Add a no_rp_msi flag so glue drivers can request the same INTx fallback
> regardless of the MSI controller in use. It is the counterpart of
> 'keep_rp_msi_en' from commit 3a4e8302e72f ("PCI: imx6: Keep Root Port
> MSI capability with iMSI-RX to work around hardware bug"), which keeps
> precedence: that one is needed for endpoint MSIs to work at all, whereas
> hiding the capability only moves the Root Port services to INTx. The
> removal stays in dw_pcie_setup_rc(), which also runs after a Root Port
> reset.
>
With it, dw_pcie_rp will carry three flags with overlapping and
priority-dependent semantics:
use_imsi_rx - the MSI controller is iMSI-RX
keep_rp_msi_en - do NOT remove the RP MSI caps (i.MX6 workaround)
no_rp_msi - the platform never gets the RP's own MSIs
and the resulting condition:
if ((pp->use_imsi_rx || pp->no_rp_msi) && !pp->keep_rp_msi_en)
is getting hard to reason about. Adding no_rp_msi for a single platform
whose controller is not even iMSI-RX makes the combination worse.
Since only R-Car Gen4 needs this, and it has its own host init, would it
be fine for the glue driver to call dw_pcie_remove_capability()
directly? I'd like to avoid growing the shared struct if a local
solution is possible.
> Signed-off-by: Koichiro Den <den@valinux.co.jp>
> ---
> Changes since v3:
> - No changes.
>
> drivers/pci/controller/dwc/pcie-designware-host.c | 6 ++++--
> drivers/pci/controller/dwc/pcie-designware.h | 1 +
> 2 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c
> index 774e1936d999..32e179603cf4 100644
> --- a/drivers/pci/controller/dwc/pcie-designware-host.c
> +++ b/drivers/pci/controller/dwc/pcie-designware-host.c
> @@ -1191,9 +1191,11 @@ int dw_pcie_setup_rc(struct dw_pcie_rp *pp)
> * The iMSI-RX module does not support receiving MSI or MSI-X generated
> * by the Root Port. If iMSI-RX is used as the MSI controller, remove
> * the MSI and MSI-X capabilities of the Root Port to allow the drivers
> - * to fall back to INTx instead.
> + * to fall back to INTx instead. Glue drivers set no_rp_msi when the
> + * platform never delivers the Root Port's own MSIs, whatever the MSI
> + * controller in use.
> */
> - if (pp->use_imsi_rx && !pp->keep_rp_msi_en) {
> + if ((pp->use_imsi_rx || pp->no_rp_msi) && !pp->keep_rp_msi_en) {
> dw_pcie_remove_capability(pci, PCI_CAP_ID_MSI);
> dw_pcie_remove_capability(pci, PCI_CAP_ID_MSIX);
> }
> diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h
> index 2ce61709b58c..d94116402b74 100644
> --- a/drivers/pci/controller/dwc/pcie-designware.h
> +++ b/drivers/pci/controller/dwc/pcie-designware.h
> @@ -445,6 +445,7 @@ struct dw_pcie_host_ops {
> struct dw_pcie_rp {
> bool use_imsi_rx:1;
> bool keep_rp_msi_en:1;
> + bool no_rp_msi:1;
> bool cfg0_io_shared:1;
> u64 cfg0_base;
> void __iomem *va_cfg0_base;
next prev parent reply other threads:[~2026-10-15 4:17 UTC|newest]
Thread overview: 23+ 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:30 ` [PATCH v4 02/18] PCI: dwc: Factor out the PORT_LINK_DEBUG1 link-up check Koichiro Den
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: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:30 ` [PATCH v4 05/18] PCI: dwc: Export dw_handle_msi_irq() Koichiro Den
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:30 ` [PATCH v4 07/18] PCI: rcar-gen4: Assert resets when Gen5 SoC PHY initialization fails Koichiro Den
2026-10-15 3:30 ` [PATCH v4 08/18] PCI: rcar-gen4: Separate hardware setup from resource acquisition Koichiro Den
2026-10-15 3:30 ` [PATCH v4 09/18] PCI: rcar-gen4: Add Root Port reset support Koichiro Den
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:30 ` [PATCH v4 11/18] PCI: rcar-gen4: Take over the iMSI-RX interrupt Koichiro Den
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:30 ` [PATCH v4 13/18] PCI: dwc: Let glue drivers hide the Root Port MSI capabilities Koichiro Den
2026-10-15 4:11 ` Shawn Lin [this message]
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:31 ` [PATCH v4 15/18] PCI: rcar-gen4: Route Root Port PME and bandwidth notifications Koichiro Den
2026-10-15 3:31 ` [PATCH v4 16/18] arm64: dts: renesas: r8a779f0: Describe the PCIe AER interrupts Koichiro Den
2026-10-15 3:31 ` [PATCH v4 17/18] arm64: dts: renesas: r8a779g0: " Koichiro Den
2026-10-15 3:31 ` [PATCH v4 18/18] arm64: dts: renesas: r8a779h0: Describe the PCIe AER interrupt Koichiro Den
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=3796136c-cc01-472b-b14c-34d140a10cbf@rock-chips.com \
--to=shawn.lin@rock-chips.com \
--cc=Frank.Li@nxp.com \
--cc=bhelgaas@google.com \
--cc=cassel@kernel.org \
--cc=conor+dt@kernel.org \
--cc=den@valinux.co.jp \
--cc=devicetree@vger.kernel.org \
--cc=fancer.lancer@gmail.com \
--cc=geert+renesas@glider.be \
--cc=jingoohan1@gmail.com \
--cc=krzk+dt@kernel.org \
--cc=kwilczynski@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=magnus.damm@gmail.com \
--cc=mani@kernel.org \
--cc=marek.vasut+renesas@mailbox.org \
--cc=p.zabel@pengutronix.de \
--cc=robh@kernel.org \
--cc=wilfred.mallawa@wdc.com \
--cc=yoshihiro.shimoda.uh@renesas.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 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®