[PATCH] mei: me: do not bind the 700 series PCH-S xHCI controller
From: Joe Finzel via B4 Relay
Date: Sat Oct 10 2026 - 19:16:36 EST
From: Joe Finzel <joe@xxxxxxxxx>
PCI ID 8086:7a60 is listed as the "Alder Lake Point LP" HECI device, but
on the 700 series PCH-S (Raptor Lake-S) the same ID belongs to the USB 3.2
xHCI controller (class 0x0c0330). The HECI device there is 8086:7a68.
With CONFIG_INTEL_MEI_ME=y, drivers/misc is linked before drivers/usb, so
mei_me probes the xHCI controller before xhci_pci can claim it. The probe
writes the HECI host CSR into the xHCI MMIO space, waits out three
hw_start timeouts and gives up, blocking boot for about 5.5 s:
mei mei1: H_RST is not set = 0x18000840
mei mei1: wait hw ready failed
mei mei1: hw_start failed ret = -62 fw status = 803401FD 00000000 00006032 00000000 00000000 00000000
...
mei mei1: reset: reached maximal consecutive resets: disabling the device
mei_me 0000:00:14.0: init hw failure.
mei_me 0000:00:14.0: initialization failed.
xhci_hcd 0000:00:14.0: xHCI Host Controller
When mei_me is a module, xhci_pci is usually bound first, which is why
this has gone unnoticed since the ID was added.
Match the entry on the communication controller class as well, so it can
never bind a device of another class.
Seen on an ASUS ROG STRIX Z790-F GAMING WIFI (BIOS 3201), i7-13700K.
Fixes: 930c922a987a ("mei: me: add adler lake point LP DID")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Joe Finzel <joe@xxxxxxxxx>
---
Seen on an ASUS ROG STRIX Z790-F with CONFIG_INTEL_MEI_ME=y (the log in
the commit message is from that board). With mei_me built as a module,
xhci_pci binds first and the stall is gone, which hid the problem so far.
The patch is compile-tested on 7.2.9 and applies to char-misc-next; I
can test it on the board with mei_me built in if that helps.
---
drivers/misc/mei/pci-me.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
index 790a46478..26e89140f 100644
--- a/drivers/misc/mei/pci-me.c
+++ b/drivers/misc/mei/pci-me.c
@@ -113,7 +113,10 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
{ PCI_DEVICE_DATA(INTEL, MEI_EBG, MEI_ME_PCH15_SPS_CFG) },
{ PCI_DEVICE_DATA(INTEL, MEI_ADP_S, MEI_ME_PCH15_CFG) },
- { PCI_DEVICE_DATA(INTEL, MEI_ADP_LP, MEI_ME_PCH15_CFG) },
+ /* 8086:7a60 is also the xHCI controller of the 700 series PCH-S */
+ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MEI_ADP_LP),
+ .class = PCI_CLASS_COMMUNICATION_OTHER << 8, .class_mask = 0xffff00,
+ .driver_data = (kernel_ulong_t)MEI_ME_PCH15_CFG },
{ PCI_DEVICE_DATA(INTEL, MEI_ADP_P, MEI_ME_PCH15_CFG) },
{ PCI_DEVICE_DATA(INTEL, MEI_ADP_N, MEI_ME_PCH15_CFG) },
---
base-commit: c26cc979e28f5193310e4379e14aa6417375c565
change-id: 20261011-mei-xhci-02772d0506e3
Best regards,
--
Joe Finzel <joe@xxxxxxxxx>