Hello everyone,
I bought my HP laptop about 2 or 3 years ago and never flashed any ACPI
tables by myself. When I was still using Windows besided Windows, I
flashed the official HP BIOS update which covers the ACPI tables as well
I think. However, the abovementioned issues with the ACPI code weren't
affected at all by performing a BIOS update.
When I let FWTS perform all its tests, I get this result:
Critical failures: 3
klog: CRITICAL Kernel message: [ 1.884417][ T426] ACPI BIOS Error
(bug): Could not resolve symbol [\_SB.PCI0.SBRG.EC0.Z009], AE_NOT_FOUND
(20230628/psargs-330)
klog: CRITICAL Kernel message: [ 1.884457][ T426] ACPI Error:
Aborting method \_SB.UBTC.M318 due to previous error (AE_NOT_FOUND)
(20230628/psparse-531)
klog: CRITICAL Kernel message: [ 1.884484][ T426] ACPI Error:
Aborting method \_SB.UBTC._DSM due to previous error (AE_NOT_FOUND)
(20230628/psparse-531)
High failures: 5
klog: HIGH Kernel message: [ 0.283459][ T1] ACPI Error:
AE_ALREADY_EXISTS, During name lookup/catalog (20230628/psobject-221)
uniqueid: \_SB_.I2CD.TPD0._CID/_UID conflict with
\_SB_.I2CA.TPNL._CID/_UID
ivrs: IVRS must have subtable with Type 1..4, got 0 instead
ivrs: IVRS Flags Bits [7..6] must be zero, got 0xb0 instead
ivrs: IVRS IOMMU Attribute Bits [12..0] must be zero, got 0x00040200
instead
I dumped, extracted and disassembled all my ACPI tables, since I wanted
to know where these functions can be found, although I don't know much
about AMI unfortunately.
_SB.UBTC.M318 and _SB.PCI0.SBRG.EC0.Z009 are in ssdt5.dsl.
_SB.UBTC._DSM can't be found in any disassembled table, but there is a
Method (_DSM, 4, Serialized), which is also in ssdt5.dsl.
Gentoo also reported ACPI errors/bugs in its dmesg and since it's not
just a test suite like FWTS it showed some more stuff, which might be
interesting:
[ 0.277540] ACPI BIOS Error (bug): Failure creating named object
[\_SB.PCI0.SBRG.EC0._Q50], AE_ALREADY_EXISTS (20230628/dswload2-326)
[ 0.277555] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog
(20230628/psobject-220)
[ 0.277563] ACPI: Skipping parse of AML opcode: OpcodeName
unavailable (0x0014)
[ 0.277941] ACPI: 13 ACPI AML tables successfully acquired and loaded
[ 0.280325] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[ 0.282502] ACPI: _OSC evaluation for CPUs failed, trying _PDC
[ 0.282936] ACPI: EC: EC started
[ 0.282940] ACPI: EC: interrupt blocked
[ 0.284881] ACPI: EC: EC_CMD/EC_SC=0x66, EC_DATA=0x62
[ 0.284887] ACPI: \_SB_.PCI0.SBRG.EC0_: Boot DSDT EC used to handle
transactions
I'm well aware of the fact that all of you developers put endless effort
in all this which will be very time-consuming, so of course I'd
understand it if you don't feel like explaining ACPI stuff in your free
time... But I would really appreciate it, if someone could explain me
what "Boot DSDT EC used to handle transactions" concretely imply? I'm
really curious about this, since _SB.PCI0.SBRG.EC0.Z009 caused the
critical failure.
I don't know much about AML, but I program in C/C++ and Assembler, so if
anyone feels like doing so, please explain it on a programmer's level.
As I can see in ssdt5.dsl _SB_.PCI0.SBRG.EC0_.Z009 is defined as a
MutexObj in line 25 and then is relevant for the conditional block in
Method M318 which starts in line 452.
Is it really normal that there are so many errors in the ACPI code? I
mean especially if klog reports them as CRITICAL they shouldn't be just
ignored, isn't?
If a BIOS update doesn't fix ACPI errors, then would it be possible to
fix them manually, compile the code and then write them to the tables?
I uploaded my disassembled ssdt5.dsl to pastebin.com:
https://pastebin.com/hBUL4qif
However, I wanted to share my dsdt.dsl with you as well as some of the
mentioned methods/symbols can be found there are as well, maybe shedding
some light on an issue with them. So I decided to upload the whole
folder containing my HP laptop's dumped, extracted and disassembled ACPI
tables on my GDrive:
https://drive.google.com/drive/folders/11FSdWRMoFE-cmzBfecdSvO8CfRkCCbro?usp=drive_link
Kind regards and thanks in advance
David