Gentoo Archives: gentoo-user

From: Paul Hartman <paul.hartman+gentoo@×××××.com>
To: Gentoo User <gentoo-user@l.g.o>
Subject: [gentoo-user] Re: Any DSDT/AML gurus out there?
Date: Thu, 21 Jun 2012 22:22:42
Message-Id: CAEH5T2ODGKDP3Ow-SPqbidrEUbBa5QoqWkMerG_V6g_NO9q+5A@mail.gmail.com
In Reply to: [gentoo-user] Any DSDT/AML gurus out there? by Paul Hartman
1 On Thu, May 17, 2012 at 4:56 PM, Paul Hartman
2 <paul.hartman+gentoo@×××××.com> wrote:
3 > [ 6286.707038] ACPI Error: Method parse/execution failed
4 > [\_SB_.PCI0.PIB_.EC0_.SMWR] (Node ffff88007d028348),
5 > AE_AML_INFINITE_LOOP (20120111/psparse-536)
6 > [ 6286.707074] ACPI Error: Method parse/execution failed
7 > [\_SB_.PCI0.PIB_.EC0_.SMSL] (Node ffff88007d028398),
8 > AE_AML_INFINITE_LOOP (20120111/psparse-536)
9 > [ 6286.707096] ACPI Error: Method parse/execution failed
10 > [\_SB_.PCI0.PIB_.EC0_._Q09] (Node ffff88007d028438),
11 > AE_AML_INFINITE_LOOP (20120111/psparse-536)
12
13 After much trial and error, Googling, reading DSDT for other laptops,
14 and traversing archive.org for old web pages that no longer exist, I
15 think I have figured it out.
16
17 In the errors above the method SMWR has the real problem, the others
18 shown afterward were the callers and victims of the infinite loop
19 detection in kernel. In the disassembled code for the SMWR method
20 there is a while loop that looks like it could be the cause of an
21 infinite loop:
22
23 And (SMST, 0x40, SMST)
24 Store (Arg2, SMCM)
25 Store (Arg1, SMAD)
26 Store (Arg0, SMPR)
27 While (LNot (And (SMST, 0xBF, Local1)))
28 {
29 Sleep (0x02)
30 }
31
32 This exact same infinite loop condition happened in 2 different
33 methods in my DSDT, both of which gave me ACPI errors and caused
34 battery levels to stop working.
35
36 After making the change like the one shown below to these two while
37 loops, I have not yet encountered an infinite loop error and my
38 battery reading appears to work properly. Uptime of 2 hours with no
39 ACPI errors yet!
40
41 And (SMST, 0x40, SMST)
42 Store (Arg2, SMCM)
43 Store (Arg1, SMAD)
44 Store (Arg0, SMPR)
45 Store (0x00, Local3)
46 While (LNot (And (SMST, 0xBF, Local1)))
47 {
48 Sleep (0x02)
49 Increment (Local3)
50 If (LEqual (Local3, 0x32))
51 {
52 And (SMST, 0x40, SMST)
53 Store (Arg2, SMCM)
54 Store (Arg1, SMAD)
55 Store (Arg0, SMPR)
56 Store (0x00, Local3)
57 }
58 }

Replies

Subject Author
[gentoo-user] Re: Any DSDT/AML gurus out there? Paul Hartman <paul.hartman+gentoo@×××××.com>