* [PATCH 0/1] PCI: Disable D3cold for Killer BE200-family WiFi on MSI Claw A1M
@ 2026-10-25 23:18 Denis Benato
2026-10-25 23:18 ` [PATCH 1/1] " Denis Benato
0 siblings, 1 reply; 2+ messages in thread
From: Denis Benato @ 2026-10-25 23:18 UTC (permalink / raw)
To: linux-pci
Cc: bhelgaas, linux-wireless, miriam.rachel.korenblit,
emmanuel.grumbach, linux-kernel, kernel, Denis Benato
Hi all,
The MSI Claw A1M is an Intel Core Ultra (Meteor Lake-H) handheld gaming
PC carrying a Killer BE1750 WiFi card (Intel BE200 silicon, PCI
8086:272b, subsystem Rivet Networks 1a56:1774) behind root port 00:1c.0.
During s2idle the platform removes auxiliary slot power from the card
(D3cold). On resume the PCIe link fails to retrain:
pcieport 0000:00:1c.0: Data Link Layer Link Active not set in 100 msec
and the card reads back all-ones from every register: iwlwifi dumps its
complete register state as 0xffffffff and the device disappears from the
bus, so the machine has to be power-cycled. This is the resume half of
kernel Bugzilla 220223; the detection side of that bug was addressed in
commit 224476613c84 ("wifi: iwlwifi: if scratch is ~0U, consider it a
failure"), but the recovery path still does not bring the card back up.
Keeping the card in D3hot with the PCIe link in L1.2 during system sleep
(not letting it fall to D3cold) makes suspend and resume work reliably:
the card survives every cycle and NetworkManager reconnects without errors.
The SoC still reaches S0ix during the sleep; measured with pmc_core
slp_s0_residency_usec, a 241 s timed suspend accumulated 239.5s of
S0ix residency (99.4%) in this configuration, and the fix is independent
of the platform's ASPM configuration.
Patch 1 adds a DMI-scoped quirk disabling D3cold for the BE200-family
device on this board (pci_d3cold_disable()). It mirrors the workaround
distributions already ship as a udev rule for the AX200/AX210
(8086:2725), which suffers from the same class of failure; doing it in
the kernel removes the need for userspace workarounds. I kept the quirk
DMI-scoped to the Claw so that D3cold behavior is unchanged for this
card family on platforms where it works.
Testing: MSI Claw A1M, BIOS E1T41IMS.10D, kernel next-20261023. Multiple
suspend/resume cycles with an RTC-timed wake (240 s). Without the quirk
the card is lost on the first resume (all-ones register dumps, "Data
Link Layer Link Active not set in 100 msec"); with the quirk it survives
every cycle, reconnects, and d3cold_allowed remains 0 across resume.
No AER or pcieport errors are logged in the resume window.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=220223
Denis Benato (1):
PCI: Disable D3cold for Killer BE200-family WiFi on MSI Claw A1M
drivers/pci/quirks.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
--
2.55.0
^ permalink raw reply [flat|nested] 2+ messages in thread* [PATCH 1/1] PCI: Disable D3cold for Killer BE200-family WiFi on MSI Claw A1M
2026-10-25 23:18 [PATCH 0/1] PCI: Disable D3cold for Killer BE200-family WiFi on MSI Claw A1M Denis Benato
@ 2026-10-25 23:18 ` Denis Benato
0 siblings, 0 replies; 2+ messages in thread
From: Denis Benato @ 2026-10-25 23:18 UTC (permalink / raw)
To: linux-pci
Cc: bhelgaas, linux-wireless, miriam.rachel.korenblit,
emmanuel.grumbach, linux-kernel, kernel, Denis Benato
During s2idle the platform removes power from the WiFi slot (D3cold).
The Killer BE1750 (Intel BE200, 8086:272b) installed in the MSI Claw A1M
fails to resume from that state: the PCIe link does not retrain
("pcieport 0000:00:1c.0: Data Link Layer Link Active not set in
100 msec") and every device register reads back as 0xffffffff, so the
card disappears from the bus and the machine must be power-cycled.
Keeping the device in D3hot with the link in L1.2 during system sleep
makes suspend and resume work reliably: the package still reaches >99%
S0ix residency and the card survives every cycle (verified over multiple
suspend/resume tests with an RTC-timed wake).
Disable D3cold for the BE200-family device on this board. This mirrors
the udev-level workaround distributions already ship for the AX200/AX210
(8086:2725), which suffers from the same class of problem, and moves it
into the kernel where it belongs.
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220223
Signed-off-by: Denis Benato <denis.benato@linux.dev>
---
drivers/pci/quirks.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 7572b358b50f..60156e6c3e49 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -6593,3 +6593,24 @@ static void pci_mask_replay_timer_timeout(struct pci_dev *pdev)
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_GLI, 0x9750, pci_mask_replay_timer_timeout);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_GLI, 0x9755, pci_mask_replay_timer_timeout);
#endif
+
+/*
+ * MSI Claw A1M: during s2idle the platform removes power from the WiFi slot
+ * (D3cold). The Killer BE1750 (Intel BE200, 8086:272b) fails to resume from
+ * that state: the PCIe link does not retrain ("Data Link Layer Link Active
+ * not set in 100 msec") and every device register reads back as 0xffffffff,
+ * so the card disappears from the bus and the machine must be power-cycled.
+ *
+ * Keeping the device in D3hot with the link in L1.2 during system sleep makes
+ * suspend and resume work reliably: the package still reaches >99% S0ix
+ * residency and the card survives.
+ */
+static void quirk_msi_claw_be200_d3cold(struct pci_dev *pdev)
+{
+ if (!dmi_match(DMI_BOARD_NAME, "MS-1T41"))
+ return;
+
+ pci_d3cold_disable(pdev);
+ pci_info(pdev, "disabling D3cold: slot power removal during s2idle prevents resume on this system");
+}
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x272b, quirk_msi_claw_be200_d3cold);
--
2.55.0
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-25 23:18 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-25 23:18 [PATCH 0/1] PCI: Disable D3cold for Killer BE200-family WiFi on MSI Claw A1M Denis Benato
2026-10-25 23:18 ` [PATCH 1/1] " Denis Benato
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®