https://bugzilla.kernel.org/show_bug.cgi?id=222226

            Bug ID: 222226
           Summary: IdeaPad Slim 3 14IAH8: _SB.WM00/_SB.PC00.LPCB.PNOT
                    declared External in DSDT but never defined
                    (AE_NOT_FOUND on Fn-key/AC events)
           Product: ACPI
           Version: 2.5
          Hardware: Intel
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P3
         Component: EC
          Assignee: [email protected]
          Reporter: [email protected]
        Regression: No

Created attachment 311359
  --> https://bugzilla.kernel.org/attachment.cgi?id=311359&action=edit
Evidence + fix bundle for the WM00/PNOT AE_NOT_FOUND bug: dmesg capture, DSDT
External-declaration excerpt, stub SSDT fix, full report. Extract:tar xzf

Lenovo IdeaPad Slim 3 14IAH8 (MTM 83EQ), BIOS LTCN29WW, Intel Alder Lake-P.
Reproduced on kernels 6.19.14, 6.19.11, 6.18.12.

Symptom: AE_NOT_FOUND errors on every Fn-key press (brightness/mic-mute/
etc.) and every AC-adapter plug/unplug, raised from four EC query handlers
(_Q11, _Q12, _Q37, _Q44 -- structurally identical _Q38 is certain to hit
the same path). Purely cosmetic -- brightness/mic-mute keys and AC
detection still work via other code in the same handlers -- but every
single Fn-key press and AC transition throws a kernel-logged ACPI
firmware error.

Root cause: the DSDT forward-declares _SB.WM00 (DeviceObj) and
_SB.PC00.LPCB.PNOT (MethodObj) as External, but none of the 16 SSDTs on
this firmware ever actually defines either object (confirmed via
grep -l "WM00\|PNOT" across every decompiled table -- only DSDT.dsl
matches, the External lines themselves). The four EC handlers above call
them unconditionally -- no CondRefOf existence guard -- so the first real
use of either name aborts with AE_NOT_FOUND. WM00 as a bare DeviceObj
matches the standard Microsoft ACPI-WMI mapper pattern (PNP0C14), so this
looks like a WMI-hotkey SSDT that was simply never shipped in this
firmware image, not a stripped or broken one.

This is the opposite defect shape from a separate, already-reported
_UPC/_PLD bug on this same laptop (two colliding definitions there vs.
zero definitions here) -- reported as its own bug for that reason.

Fix (confirmed working, 0 errors after applying, tested first on an
isolated GRUB boot entry then promoted to the normal boot path): an
additive stub SSDT (attached, stub_wm00_pnot.dsl) supplying a no-op
Device(WM00)/Method(PNOT), installed via CONFIG_ACPI_TABLE_UPGRADE +
GRUB_EARLY_INITRD_LINUX_CUSTOM. Logged as "Table Upgrade: install", not
"override", since this is a genuine addition, not a replacement of an
existing table. Note: which keys/events trigger this is fully known --
live-tested directly: _Q11 fires on the brightness key, _Q44 on the
microphone-mute
key, _Q37/_Q38 on AC adapter plug/unplug. For the mic-mute key, a real
upstream Linux driver family (lenovo-wmi-hotkey-utilities.c, GUID
8FC0DE0C-B4E4-43FD-B0F3-8871711C1294) exists to drive the mic-mute status
LED on this exact hardware class from a vendor WMI call -- narrowing the
open question to whether that LED lights up on keypress; if not, that's
the real missing piece. For brightness, no equivalent gap is expected
(backlight change already runs through GFX0's own Notify). For AC plug/
unplug, checked directly against the DSDT: the real OS-facing AC/battery
path (_PSR under ACPI0003, _BST) reads the EC directly and never
references PWRS or PNOT; a second independent PWRS consumer (GUAM, an
unrelated USB-auto-mode switch) also reads it directly. Confirmed zero
practical impact for the AC case

Attachment (wm00_pnot_lenovo_attachments.tar.gz) contents, extract with
tar xzf wm00_pnot_lenovo_attachments.tar.gz:

- wm00_pnot_dmesg_excerpt.txt -- real capture (Sep 18-23) of all 27
  AE_NOT_FOUND lines across the four calling handlers (_Q11/_Q12/_Q37/
  _Q44), one per real Fn-key press or AC plug/unplug event.
- wm00_pnot_dsdt_excerpt.dsl -- the two External declarations
  (DSDT.dsl:124, :1204) plus the four calling _Qxx handlers, real line
  numbers included.
- stub_wm00_pnot.dsl -- the actual fix: an additive stub SSDT. Compile
  with iasl, no edits needed for an identical object name -- adapt
  scope/_HID only if your board uses different ones.
- LENOVO_14IAH8_WM00_PNOT_FIX_PUBLIC_REPORT.md -- full writeup: root
  cause, the fix, general application steps, confirmed before/after
  result, and what the fix does/doesn't restore. Start here.

-- 
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