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