shutdown via power button: "acpi: resumed at..."
Nate Lawson
nate at root.org
Wed Mar 25 09:28:49 PDT 2009
Andriy Gapon wrote:
> on 25/03/2009 18:12 Nate Lawson said the following:
>> Andriy Gapon wrote:
>>> I noticed that sometimes I am getting "acpi: resumed at..." message on console and
>>> in system log when I initiate system shutdown by pressing power button.
>>> I think that the cause is in acpi_UserNotify("Resume") call and this call is only
>>> found in acpi_EnterSleepState().
>>>
>>> I see the following code in that function:
>>> case ACPI_STATE_S5:
>>> /*
>>> * Shut down cleanly and power off. This will call us back through the
>>> * shutdown handlers.
>>> */
>>> shutdown_nice(RB_POWEROFF);
>>> break;
>>>
>>> So it seems that it is expected that shutdown_nice() would return immediately.
>>> I think it makes S5 a special case comparing to other states where return happens
>>> upon resuming from the state.
>>> In this case, maybe it is not necessary for S5 request to go through the
>>> resume/wakeup half of acpi_EnterSleepState.
>>>
>> I thought shutdown*() should never return at all. It sounds like
>> interrupts are being re-enabled or something.
>>
>
> No, this is a different kind of shutdown, this one just send a signal to init:
> void
> shutdown_nice(int howto)
> {
>
> shutdown_howto = howto;
>
> /* Send a signal to init(8) and have it shutdown the world */
> if (initproc != NULL) {
> PROC_LOCK(initproc);
> psignal(initproc, SIGINT);
> PROC_UNLOCK(initproc);
> } else {
> /* No init(8) running, so simply reboot */
> boot(RB_NOSYNC);
> }
> return;
> }
But the shutdown that is initiated through ACPI is RB_POWEROFF. There
should be no returning from there. What has changed in the code so that
RB_POWEROFF does not immediately call back into acpi_shutdown_final()
which powers off the system?
Anyway, the resume notification could be moved under the "if (state !=
S5)" line right above it if this behavior is legal.
--
Nate
More information about the freebsd-acpi
mailing list