svn commit: r233249 - head/sys/amd64/acpica
John Baldwin
jhb at freebsd.org
Thu Mar 22 14:09:21 UTC 2012
On Thursday, March 22, 2012 5:32:59 am Andriy Gapon wrote:
> on 21/03/2012 21:02 Jung-uk Kim said the following:
> > On Wednesday 21 March 2012 01:57 pm, Andriy Gapon wrote:
> >> on 21/03/2012 19:41 Jung-uk Kim said the following:
> >>> I am well aware of the problem. In fact, that's why I had to
> >>> merge ACPICA 20120320 rather quickly, which added a new flag to
> >>> not execute _GTS method. Both _GTS and _BFS are turned off by
> >>> default. You can control them with a new tunable
> >>> "debug.acpi.sleep_flags" if you want.
> >>
> >> But the bug still has to be fixed, right?
> >> Even if it takes a non-default sysctl value to give the bug a
> >> chance.
> >
> > Ideally, yes. However, I am not so sure if we can call it a "bug"
> > because AcpiEnterSleepState() must be called with interrupt disabled
> > and there is no way to change that API without breaking other OSes.
> > We can only work around it locally or persuade upstream to find a
> > better way to do this in ACPICA itself. Either way, it will be
> > pretty hackish. :-(
>
> I see. Thank you.
> Maybe the code could be somehow tricked into using M_NOWAIT in this
context...
That still wouldn't be good enough. We don't want to try to acquire any
regular mutexes either (we can't safely block to let the lock owner run, or
the lock owner might be a suspended thread on another CPU, etc.). The only
proper way to fix this would be to use pre-allocated storage in this
particular case, but given that Windows doesn't invoke these methods on
suspend/resume, it's doubtful that we will ever need to do so.
--
John Baldwin
More information about the svn-src-all
mailing list