https://bugzilla.kernel.org/show_bug.cgi?id=221228
--- Comment #2 from Wei Huang ([email protected]) --- Hi, Thanks for reporting this — and for the detailed logs, they're very helpful. Looking at the dmesg output, I suspect what's happening here is that the ThinkPad X9-14 Gen 1 ships with a non-standard Embedded Controller firmware (ECFW): on this kind of ECFW the thermal registers are not at the classic 0x78-0x7F / 0xC0-0xC7 addresses (and the fan registers aren't at 0x2f / 0x84 either). So during init the driver probes the legacy addresses, reads back 0x00 from every register, concludes the EC is "misbehaving" and disables thermal (and fan) access. That matches the symptom you're seeing exactly. The kernel already has a quirk mechanism for this class of machines — it was added in commit 301c1904d638 ("platform/x86: thinkpad_acpi: Fix to correct wrong temp reporting on some ThinkPads") for the L13 Yoga / X13 Yoga / L380 / L390 etc. The X9-14 Gen 1 simply hasn't been added to the model lists yet. I've put together a small patch that adds the X9-14 Gen 1 (BIOS model code "N4D") to both the thermal and fan quirk tables: drivers/platform/x86/lenovo/thinkpad_acpi.c | 2 ++ 1 file changed, 2 insertions(+) The patch is attached. Important caveat: this is a guess based on code reading, NOT verified on real hardware yet (I don't have an X9-14 Gen 1). So before I submit it upstream I'd really appreciate it if you could test it on your machine. What I'd expect to see after applying it: - The "ThinkPad ACPI EC access misbehaving" message is gone. - New messages appear: thinkpad_acpi: ECFW with non-standard thermal registers found thinkpad_acpi: ECFW with non-standard fan reg control found - `sensors` shows real temperatures and non-zero fan RPM. How to test: # apply the patch to your kernel tree patch -p1 < 0001-platform-x86-thinkpad_acpi-Add-X9-14-Gen-1-to-non-st.patch # build and boot the new kernel, then run: dmesg | grep -i thinkpad sensors If it works fully, great — please paste the dmesg and sensors output so I can add a Tested-by tag and submit it upstream. If it only partially works (e.g. temperatures show up but look wrong, or the fan RPM is off / reads 0), that's still very useful — it would mean the register layout differs from my assumption. In that case an `acpidump` and an EC register dump would help us pin down the exact addresses: sudo modprobe ec_sys sudo cat /sys/kernel/debug/ec/ec0/io | xxd # registers 0x00-0xFF Also, if you happen to be running Windows in a dual-boot, Lenovo's "Lenovo Vantage" or "Thermal Utility" sometimes exposes which sensors map to which registers, which could confirm the layout directly. Thanks again for the report — looking forward to your test results. Best regards, Huang Wei -- You may reply to this email to add a comment. You are receiving this mail because: You are watching the assignee of the bug. _______________________________________________ acpi-bugzilla mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla
