[Bug 252030] No battery reading after upgrade to 12.2-RELEASE Fujitsu lifebook s936

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 20 Sep 2023 21:27:10 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=252030

--- Comment #3 from freebsd@chillt.de ---
The problem is that some Fujitsu Lifebooks return an invalid _BIX object. The
first element of _BIX is a revision number, which indicates what elements will
follow:
* ACPI 4.0 defined _BIX revision 0 with 20 elements.
* ACPI 6.0 introduced _BIX revision 1 with 21 elements.

The problem is that the offending Lifebooks have the a non-zero _BIX revision,
but provide 20 fields only.

The ACPICA parser chokes on this [1], but that seems to be inconsequential.
More importantly, our own battery info handling code also verifies that for
revision > 0, there are at least 21 fields - and refuses to process the invalid
_BIX. One workaround would be to introduce special case / quirk handling for
Fujitsu Lifebooks. Another is to relax the requirements check: If there are
only 20 elements, treat the _BIX as revision 0, no matter what revision number
was provided by the device. I hacked my kernel to always treat _BIX as revision
0 and the battery status is working perfectly now on my Fujitsu Lifebook E5511
(see attached hack).

Linux doesn't run into this problem by the way because it only supports the 20
fields defined in the ACPI 4.0 spec [3]. It never looks at the revision number
or the 21st field added in ACPI 6.0.

[1]
https://cgit.freebsd.org/src/tree/sys/contrib/dev/acpica/components/namespace/nsprepkg.c#n815
[2] https://cgit.freebsd.org/src/tree/sys/dev/acpica/acpi_cmbat.c#n371
[3]
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/acpi/battery.c#n418

-- 
You are receiving this mail because:
You are the assignee for the bug.