From: Bjorn Helgaas <helgaas@kernel.org>
To: Imre Kaloz <kaloz@kernel.org>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
linux-pci@vger.kernel.org, Andreas Larsson <andreas@gaisler.com>,
sparclinux@vger.kernel.org,
"David S. Miller" <davem@davemloft.net>,
linux-kernel@vger.kernel.org, stable@vger.kernel.org,
Shivasharan S <shivasharan.srikanteshwara@broadcom.com>,
Srinath Mannam <srinath.mannam@broadcom.com>,
Michael Chan <michael.chan@broadcom.com>,
Florian Fainelli <florian.fainelli@broadcom.com>,
Vikas Gupta <vikas.gupta@broadcom.com>
Subject: Re: [PATCH] PCI: Avoid D3 on PLX PEX 8532/8533/8548 downstream ports
Date: Mon, 12 Oct 2026 16:34:47 -0500 [thread overview]
Message-ID: <20261012213447.GA1392402@bhelgaas> (raw)
In-Reply-To: <20260927105609.8813-1-kaloz@kernel.org>
[+cc several Broadcom folks, help with possible switch erratum]
On Sun, Sep 27, 2026 at 12:56:09PM +0200, Imre Kaloz wrote:
> Runtime PM suspends an idle downstream port of a PLX/Broadcom PEX
> 8532/8533/8548 switch to D3hot, but that takes the whole switch down
> with it: any device behind another port of the same switch then
> faults with a fatal bus error on its next access, e.g. mptsas probe
> on a Sun Ultra 45.
>
> This surfaced on sparc64 once commit a5fb3ff63287 ("PCI: Allow PCI
> bridges to go to D3Hot on all non-x86") let bridges enter D3hot. Keep
> these downstream ports out of D3 by setting PCI_DEV_FLAGS_NO_D3.
I don't really have any objection to this, but I am concerned that
this quirk only applies to a few specific devices, but
https://admin.pci-ids.ucw.cz/read/PC/10b5 shows a TON of
similar-looking switches that I assume have the same behavior, so
this may be just the tip of the iceberg.
> Fixes: a5fb3ff63287 ("PCI: Allow PCI bridges to go to D3Hot on all non-x86")
> Cc: stable@vger.kernel.org
> Signed-off-by: Imre Kaloz <kaloz@kernel.org>
> ---
> drivers/pci/quirks.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index de9bbccda21f..a3c9250182a6 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -2381,6 +2381,24 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050,
> DECLARE_PCI_FIXUP_HEADER(0x1402, 0x2000, quirk_plx_pci9050);
> DECLARE_PCI_FIXUP_HEADER(0x1402, 0x2600, quirk_plx_pci9050);
>
> +/*
> + * An idle downstream port of a PLX/Broadcom PEX 8532/8533/8548 switch
> + * autosuspends into D3hot, and that takes the whole switch down with
> + * it -- any device behind another port of the same switch then sees a
> + * fatal, non-recoverable bus fault on its next access. Keep these
> + * ports out of D3 entirely.
> + */
> +static void quirk_plx_pex_no_d3(struct pci_dev *dev)
> +{
> + if (pci_pcie_type(dev) == PCI_EXP_TYPE_DOWNSTREAM) {
> + dev->dev_flags |= PCI_DEV_FLAGS_NO_D3;
> + pci_info(dev, "avoiding D3 on this downstream port\n");
> + }
> +}
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PLX, 0x8532, quirk_plx_pex_no_d3);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PLX, 0x8533, quirk_plx_pex_no_d3);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PLX, 0x8548, quirk_plx_pex_no_d3);
> +
> static void quirk_netmos(struct pci_dev *dev)
> {
> unsigned int num_parallel = (dev->subsystem_device & 0xf0) >> 4;
>
> base-commit: fe2ec83746e501645709761605c2464a44fd2929
> --
> 2.47.3
>
next prev parent reply other threads:[~2026-10-12 21:34 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-27 10:56 [PATCH] PCI: Avoid D3 on PLX PEX 8532/8533/8548 downstream ports Imre Kaloz
2026-09-27 11:02 ` sashiko-bot
2026-10-12 17:00 ` Magnus Lindholm
2026-10-12 21:34 ` Bjorn Helgaas [this message]
2026-10-12 21:41 ` Florian Fainelli
2026-10-12 21:41 ` Bjorn Helgaas
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=20261012213447.GA1392402@bhelgaas \
--to=helgaas@kernel.org \
--cc=andreas@gaisler.com \
--cc=bhelgaas@google.com \
--cc=davem@davemloft.net \
--cc=florian.fainelli@broadcom.com \
--cc=kaloz@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=michael.chan@broadcom.com \
--cc=shivasharan.srikanteshwara@broadcom.com \
--cc=sparclinux@vger.kernel.org \
--cc=srinath.mannam@broadcom.com \
--cc=stable@vger.kernel.org \
--cc=vikas.gupta@broadcom.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.