From: Paul Hartman <paul.hartman+gentoo@gmail.com>
To: Gentoo User <gentoo-user@lists.gentoo.org>
Subject: [gentoo-user] Re: Any DSDT/AML gurus out there?
Date: Thu, 21 Jun 2012 17:20:41 -0500 [thread overview]
Message-ID: <CAEH5T2ODGKDP3Ow-SPqbidrEUbBa5QoqWkMerG_V6g_NO9q+5A@mail.gmail.com> (raw)
In-Reply-To: <CAEH5T2P+e2vTN8g2t1iv6warnFXMJ8i-J89JmUTS6UZKP7N0wA@mail.gmail.com>
On Thu, May 17, 2012 at 4:56 PM, Paul Hartman
<paul.hartman+gentoo@gmail.com> wrote:
> [ 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 much trial and error, Googling, reading DSDT for other laptops,
and traversing archive.org for old web pages that no longer exist, I
think I have figured it out.
In the errors above the method SMWR has the real problem, the others
shown afterward were the callers and victims of the infinite loop
detection in kernel. In the disassembled code for the SMWR method
there is a while loop that looks like it could be the cause of an
infinite loop:
And (SMST, 0x40, SMST)
Store (Arg2, SMCM)
Store (Arg1, SMAD)
Store (Arg0, SMPR)
While (LNot (And (SMST, 0xBF, Local1)))
{
Sleep (0x02)
}
This exact same infinite loop condition happened in 2 different
methods in my DSDT, both of which gave me ACPI errors and caused
battery levels to stop working.
After making the change like the one shown below to these two while
loops, I have not yet encountered an infinite loop error and my
battery reading appears to work properly. Uptime of 2 hours with no
ACPI errors yet!
And (SMST, 0x40, SMST)
Store (Arg2, SMCM)
Store (Arg1, SMAD)
Store (Arg0, SMPR)
Store (0x00, Local3)
While (LNot (And (SMST, 0xBF, Local1)))
{
Sleep (0x02)
Increment (Local3)
If (LEqual (Local3, 0x32))
{
And (SMST, 0x40, SMST)
Store (Arg2, SMCM)
Store (Arg1, SMAD)
Store (Arg0, SMPR)
Store (0x00, Local3)
}
}
next prev parent reply other threads:[~2012-06-21 22:22 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-17 21:56 [gentoo-user] Any DSDT/AML gurus out there? Paul Hartman
2012-05-18 2:19 ` [gentoo-user] " James
2012-06-21 22:20 ` Paul Hartman [this message]
2012-06-21 22:40 ` Paul Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAEH5T2ODGKDP3Ow-SPqbidrEUbBa5QoqWkMerG_V6g_NO9q+5A@mail.gmail.com \
--to=paul.hartman+gentoo@gmail.com \
--cc=gentoo-user@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox