acpi forced suspending panics

Cristian KLEIN cristi at net.utcluj.ro
Tue Jul 10 18:46:00 UTC 2007


Hi everybody,

I compiled FreeBSD-CURRENT a few days ago on an IBM Thinkpad R51. Whenever
I try to suspend the system using Fn+F4, the system will wait 10 seconds
then panic:

acpi: suspend request timed out, forcing sleep now
panic: Trying sleep, but thread marked as sleeping prohibited

I have a handwritten backtrace if anybody is interested. I don't know what
requires the forced suspend, but the panic is triggered by the following
events:

* acpi_ReqSleepState() notifies the userspace that the system is going to
sleep and initializes a callout, using callout_reset(), which will call
acpi_sleep_force() (dev/acpica/acpi.c:2203)
* softclock() will mark the current thread as non-sleepable
(kern/kern_timeout.c:280) then call acpi_sleep_force(), through the
callout mechanism
* acpi_sleep_force() will go on, and suspend all devices
* some time later, the cardbus driver will call pause() on this very
non-sleepable thread (dev/pccbb/pccbb.c:1242), which, naturally, results
in a panic.

I don't really know how to solve the problem. If I insert
THREAD_SLEEPING_OK() in acpi_sleep_force(), then the system will not panic
anymore, but it doesn't suspend either and it becomes unusable.

Note that the kernel from 7.0-200706 did not have this issue (although it
had other).





More information about the freebsd-current mailing list