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