Date: Wed, 25 Mar 2009 09:28:46 -0700 From: Nate Lawson <nate@root.org> To: Andriy Gapon <avg@icyb.net.ua> Cc: freebsd-acpi@FreeBSD.org Subject: Re: shutdown via power button: "acpi: resumed at..." Message-ID: <49CA5BBE.2040305@root.org> In-Reply-To: <49CA5AC9.1040601@icyb.net.ua> References: <49C8E143.2080305@icyb.net.ua> <49CA57E2.7090805@root.org> <49CA5AC9.1040601@icyb.net.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49CA5BBE.2040305>