[RESEND PATCH 0/5] platform/x86: bitland-mifs-wmi: MIFS v2 firmware support (Xiaomi Book Pro 14 2026)
孙 誉铭 <[email protected]> Tue, 28 Jul 2026 18:09:51 +0000
| Newsgroups | org.kernel.vger.platform-driver-x86,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Resending: the foxmail envelope rewrite ([email protected]) appears to have gotten the first attempt filtered. No content changes. This series makes the Bitland MIFS WMI driver work on the Xiaomi Book Pro 14 2026 (Intel Panther Lake, Ultra 5 358H) and very likely on the REDMI Book Pro 14 2025, whose suspend failure was reported earlier [1]. These machines ship a reduced MIFS firmware ("v2"): the WMAA method implements only function groups 0x0800/0x0a00/0x0c00/0x1000, reports the performance mode as raw QFAN EC codes {2,3,4,9,10} instead of the v1 0..3 enumeration, and exposes no WMI fan function. Additionally the firmware never defines ECON, so \_SB.PC00.LPCB.Q_EC._STA fails and the ACPI EC driver never binds, which kills all EC query handlers (including the lid switch notifications _Q0C/_Q0D). Symptoms fixed by this series, all reproduced and verified on the affected machine: * Suspend/hibernate aborted with -EINVAL from the driver's suspend hook (same failure as [1]: "dpm_run_callback(): bitland_mifs_wmi_suspend returns -22"; 242 failures counted in suspend_stats). Patch 1 makes the WMI call validate the firmware status word and the suspend/resume hooks fault-tolerant. * power-profiles-daemon could not read or set the platform profile ("Failed to get profile for handler bitland-mifs-wmi"; selecting "performance" failed outright and wedged the daemon). Patch 2 detects the v2 firmware variant at probe and maps the QFAN codes (2=quiet, 3=balanced, 4=speed, 9/10=extreme). * The hwmon device reported zero RPM on all channels because the v2 firmware has no WMI fan function. Patch 3 reads the two fan tachometers (u16 RPM, 0 = stopped) from the EC shared-memory window at 0xFE0B0300 (DSDT region "ERAM", offsets 0x69/0x6B). * Closing the lid produced no SW_LID event (screen stayed on, keys pressed by the closed lid typed into the visible lock screen, locking the account). Patch 4 polls the LSTE lid bit in the EC window and, on a change, evaluates the very AML methods the EC query would have run (_Q0C/_Q0D), restoring proper lid events. DMI-gated to the affected model. All values were reverse-engineered from the machine's DSDT/SSDT (WMID device, _UID "MIFS") and verified live: mode switching changes the EC QFAN register as expected, fan tachs ramp 0 -> ~2700 RPM under load, lid close/open emit proper switch events consumed by systemd-logind, and suspend/resume cycles complete cleanly with the driver loaded (suspend_stats: fail 0). Notes for reviewers: * The v2 variant is detected at runtime (perf-mode query result outside the v1 enumeration) so other Bitland machines sharing this firmware generation get support without DMI entries; the lid quirk additionally requires a DMI match. * On this platform the firmware perf-mode switch reaches Intel DTT (\_SB.IETM, INTC10D4) via ODV variables; mainline has no driver for that device, so the TDP change the firmware intends is currently not applied on Linux. Programming RAPL directly from this driver seemed inappropriate; I left it out. Happy to hear preferences. * Interactions with the in-flight "Merge redmi-wmi into bitland-mifs-wmi" series [2] are limited to file context; the control-device paths touched here are disjoint from the event-device merge. [1] https://lists.openwall.net/linux-kernel/2026/07/10/72 "[BUG] platform/x86: bitland-mifs-wmi: Hibernation fails with error -22 on Xiaomi Redmi Book Pro 14 2025" [2] https://www.spinics.net/lists/kernel/msg6309086.html "[PATCH v1 0/4] Merge redmi-wmi into bitland-mifs-wmi" Yuming Sun (5): platform/x86: bitland-mifs-wmi: validate WMAA status, never abort suspend platform/x86: bitland-mifs-wmi: support MIFS v2 perf-mode mapping platform/x86: bitland-mifs-wmi: read fan tach from EC window on MIFS v2 platform/x86: bitland-mifs-wmi: drive lid switch via EC poll on Xiaomi Book Pro 14 Documentation: wmi: bitland-mifs-wmi: document MIFS v2 firmware variant .../wmi/devices/bitland-mifs-wmi.rst | 26 ++ drivers/platform/x86/bitland-mifs-wmi.c | 272 +++++++++++++++++- 2 files changed, 290 insertions(+), 8 deletions(-) -- 2.55.0