Subject: Re: Call for testing: ACPI standby/suspend support
To: Steven M. Bellovin <smb@cs.columbia.edu>
From: Alexander Yurchenko <grange@rt.mipt.ru>
List: tech-kern
Date: 03/09/2006 21:28:43
On Thu, Mar 09, 2006 at 01:20:23PM -0500, Steven M. Bellovin wrote:
> On Thu, 9 Mar 2006 14:15:04 -0400 (AST)
> "Jared D. McNeill" <jmcneill@invisible.ca> wrote:
>
> > On Thu, 9 Mar 2006, Steven M. Bellovin wrote:
> > >> One other oddity: when I *resume* from suspending, the laptop starts
> > >> blinking a suspend indicator (a small moon-shaped LED), and when I
> > >> suspend again, it turns off. This seems slightly backwards, but I
> > >> don't know what layer is responsible for it.
> > >
> > > I wonder if that's related to the mutex. A blinking crescent is supposed to indicate that it's in the process of suspending. At a wild guess, there was some code that should have been entered that would turn it on *and* grab the mutex.
> >
> > FWIW, this mutex message is new. When I was working on this many blinking
> > crescents ago, I never saw the message. Perhaps it's a bug in the current
> > Intel acpica code (it's been known to happen).
> >
> Hmm -- no clue; that code is all a mystery to me.
>
> Btw -- is there any way to work around the buggy firmware? Thinkpads
> are among the most common laptops.
the easiest way is to add smth like this to
acpi_ec.c:acpiec_early_attach()
char ec_id[64];
/* XXX: workaround broken EC ID on IBM Thinkpad */
if (ep->EcId[0] == '\\' && ep->EcId[1] == 'S') {
snprintf(ec_id, sizeof(ec_id), "\\_%s", &ep->EcId[1]);
printf("%s: using corrected EC ID %s\n",
parent->dv_xname, ec_id);
} else {
snprintf(ec_id, sizeof(ec_id), "%s", ep->EcId);
}
rv = AcpiGetHandle(ACPI_ROOT_OBJECT, ec_id, &handle);
(they missed leading _ in the ec id).
>
>
> --Steven M. Bellovin, http://www.cs.columbia.edu/~smb
--
Alexander Yurchenko