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

Reply via email to