From: Bjorn Helgaas <helgaas@kernel.org>
To: Max Stevens <thinker.healer@gmail.com>
Cc: linux-pci@vger.kernel.org, bhelgaas@google.com,
nathan@nathanrossi.com,
nicolas.cavallari@green-communications.fr,
linux-usb@vger.kernel.org
Subject: Re: Pericom PI7C9X2G608 (12d8:2608) missing from ACS quirk — breaks Renesas uPD720202 USB3 cards when IOMMU is on
Date: Tue, 11 Aug 2026 16:28:35 -0500 [thread overview]
Message-ID: <20260811212835.GA711008@bhelgaas> (raw)
In-Reply-To: <CADoo8ux-r7jnwO=PqTK_aZaJBrpM5P3W5fRNWeNxCi+FpP8G0w@mail.gmail.com>
On Tue, Aug 11, 2026 at 05:57:33AM -0500, Max Stevens wrote:
> Hi Bjorn,
>
> Thanks for the quick patch. I tested its effect on my PI7C9X2G608GP
> (12d8:2608) by replicating what pci_fixup_pericom_acs_store_forward()
> does, using setpci at runtime (I have not built a patched kernel —
> happy to do that too if you want a test of the actual binary).
>
> Findings on the 2G608:
>
> The mode register exists at the same offset as on the smaller
> switches: upstream port config 0x74. Value on my system before any
> test: 0x0102 (store-forward bit clear).
> With ACS on all four downstream ports set to what the kernel normally
> enables here (ACSCtl = SrcValid+ ReqRedir+ CmpltRedir+ UpstreamFwd+),
> and 0x74 bit 0 CLEAR, device enumeration on the downstream xHCI
> controllers fails: [43069.603242] xhci-pci-renesas 0000:0c:00.0: Error
> while assigning device slot ID: Command Aborted [43069.603270] usb
> usb9-port1: couldn't allocate usb_device
> Setting 0x74 to 0x0103 (bit 0, store-forward) with ACS unchanged, then
> rebinding the xHCI drivers: the same device on the same port
> enumerates immediately and works fully: [43071.971147] usb 9-1: new
> full-speed USB device number 2 using xhci-pci-renesas [43072.132176]
> usb 9-1: Product: Azeron Keypad [43072.218656] hid-generic
> 0003:16D0:113C.0017: input,hidraw12: USB HID v1.11 Keyboard [Azeron
> LTD Azeron Keypad] on usb-0000:0c:00.0-1/input1
> I toggled the bit back and forth across several driver rebinds. Every
> "Command Aborted" failure I have logged (both today and across earlier
> debugging) occurred with the bit clear; none with it set.
>
> One honest nuance: with the bit clear the failure is not 100% — I saw
> one enumeration attempt start successfully during a bit-clear window.
> That intermittency is consistent with the load-dependent packet
> buffering behaviour described in Nathan's original erratum writeup,
> and with this card family's long history of "sometimes almost works"
> reports on various forums.
If it's an improvement, I think it's worth applying even if it's not a
100% fix.
> So on this hardware the store-forward workaround behaves exactly as it
> does on the already-quirked siblings, and the patch looks correct to
> me.
>
> Tested-by: Maximo Paulino Thinker.Healer@gmail.com
Thanks for doing this. I'll queue up the patch below for v7.3 without
your explicit tested-by because quirks run at different times than
setpci, and the timing/ordering is often important.
commit c56a7c02e664 ("PCI: Add ACS quirk for Pericom PI7C9X2G404 switches [12d8:2608]")
Author: Bjorn Helgaas <bhelgaas@google.com>
Date: Mon Aug 10 20:20:26 2026 -0500
PCI: Add ACS quirk for Pericom PI7C9X2G404 switches [12d8:2608]
Max reported that PI7C9X2G608GP (12d8:2608), the 6-port variant, has the
same erratum and makes an entire class of consumer USB 3.0 cards completely
non-functional on any system with the IOMMU enabled.
On a system with a StarTech PEXUSB3S44V-style 4-port USB 3.0 card With
IOMMU on, ACS on the switch's downstream ports is enabled (ACSCtl:
SrcValid+ ReqRedir+ CmpltRedir+ UpstreamFwd+). The four xHCI controllers
then probe cleanly, register their buses, upload firmware, and report port
connect status normally — but any device plugged into any port fails
enumeration with:
xhci-pci-renesas 0000:09:00.0: Error while assigning device slot ID: Command Aborted
xhci-pci-renesas 0000:09:00.0: Max number of devices this xHCI host supports is 32.
usb usb3-port1: couldn't allocate usb_device
Apply the same workaround used for other related Pericom switches.
Reported-by: Max Stevens <thinker.healer@gmail.com>
Closes: https://lore.kernel.org/all/CADoo8uyrmw_GkNgNf+bV_pieYN_gn5i49rOF8jUvSsfPOcqCJA@mail.gmail.com
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index b09f27f7846f..27f7d56c9ac3 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -6263,6 +6263,10 @@ DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_PERICOM, 0xb404,
pci_fixup_pericom_acs_store_forward);
DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_PERICOM, 0xb404,
pci_fixup_pericom_acs_store_forward);
+DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_PERICOM, 0x2608,
+ pci_fixup_pericom_acs_store_forward);
+DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_PERICOM, 0x2608,
+ pci_fixup_pericom_acs_store_forward);
static void nvidia_ion_ahci_fixup(struct pci_dev *pdev)
{
next prev parent reply other threads:[~2026-08-11 21:28 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-11 1:00 Pericom PI7C9X2G608 (12d8:2608) missing from ACS quirk — breaks Renesas uPD720202 USB3 cards when IOMMU is on Max Stevens
2026-08-11 1:21 ` Bjorn Helgaas
2026-08-11 10:57 ` Max Stevens
2026-08-11 21:28 ` Bjorn Helgaas [this message]
2026-08-11 21:31 ` 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=20260811212835.GA711008@bhelgaas \
--to=helgaas@kernel.org \
--cc=bhelgaas@google.com \
--cc=linux-pci@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=nathan@nathanrossi.com \
--cc=nicolas.cavallari@green-communications.fr \
--cc=thinker.healer@gmail.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