Hi,

I have a laptop which apparently has a buggy DSDT. It is possible to
decompile and recompile it, including it in an in-kernel initramfs to
override the one in BIOS, as described by the somewhat outdated
example at:
http://www.lesswatts.org/projects/acpi/overridingDSDT.php

My main problem is that the AML code that it generates is completely
foreign to me and I'm unable to tell what exactly the problem is. Most
examples on the web explain fixing compilation errors, which are
fairly obvious. Mine has no errors - only warnings. I think there is a
logical error leading to an infinite loop condition. My previous
attempts to fix it have only resulting in even worse results (no
battery readings at all, ever, lack of power management in general,
that kind of fun stuff).

Normally, my laptop battery readings will work perfectly well until
suddenly, randomly it shows this in dmesg:

[ 6286.707038] ACPI Error: Method parse/execution failed
[\_SB_.PCI0.PIB_.EC0_.SMWR] (Node ffff88007d028348),
AE_AML_INFINITE_LOOP (20120111/psparse-536)
[ 6286.707074] ACPI Error: Method parse/execution failed
[\_SB_.PCI0.PIB_.EC0_.SMSL] (Node ffff88007d028398),
AE_AML_INFINITE_LOOP (20120111/psparse-536)
[ 6286.707096] ACPI Error: Method parse/execution failed
[\_SB_.PCI0.PIB_.EC0_._Q09] (Node ffff88007d028438),
AE_AML_INFINITE_LOOP (20120111/psparse-536)

After that, the battery state can no longer be read and eventually
spontaneously powering off without proper shutdown when the battery
dies.

The problem does not occur in Microsoft Windows (or windows handles it
better), but I don't normally use Microsoft Windows, so that doesn't
help me any. :)

Has anyone on this list dealt with this before, or have any ideas to
help guide me along? I'd be happy to send the code to anyone
interested in trying their hand at fixing it.

Thanks,
Paul

Reply via email to