GPE handler livelock
John Baldwin
jhb at freebsd.org
Mon Jan 7 12:07:14 PST 2008
On Saturday 05 January 2008 07:47:12 pm Nate Lawson wrote:
> John Baldwin wrote:
> > np. Btw, on another note, I've finally tracked down the weird hangs my
laptop
> > has on updated HEAD to something in the GPE handling related to updates to
> > ACPI in the past year. I'm still digging, but you can look at
> > www.freebsd.org/~jhb/gpe/ and use the modified schedgraph.py there on the
> > ktr5.out to see what happens when my laptop stops running userland
processes.
> > It appears to be spending all its time running a GPE handler for a thermal
> > event.
>
> Thanks for digging into this. I reviewed this and am trying to figure
> out why the _L00 handler never completes. It keeps getting preempted by
> the next one. To help track this down, try removing these two lines
> from the _L00 method and recompile your ASL:
>
> Acquire (\_TZ.C173, 0xFFFF)
> ...
> Release (\_TZ.C173)
>
> For others who have this problem, instructions on how to recompile and
> load your custom ASL can be found here (11.16.4 and 5):
> http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/acpi-debug.html
Err, taskqueue threads run tasks synchronously, it's just running repeatedly,
almost as if the GPE never turns off once it is asserted. If you grab
ktr6.out and the latest schedgraph.py it adds extra handling for tracking
ACPI mutexes. It gives each Mutex its own line in the display showing when
it is held, contested, or idle. The mutexes are never contested, so I don't
think that is the issue. When I get some more time I'm going to instrument
the GPE enabling/disabling stuff.
--
John Baldwin
More information about the freebsd-acpi
mailing list