[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <470028C5.7020501@rtr.ca>
Date: Sun, 30 Sep 2007 18:52:53 -0400
From: Mark Lord <lkml@....ca>
To: Santiago Garcia Mantinan <manty@...ty.net>
Cc: linux-kernel@...r.kernel.org
Subject: Re: 32-bit Athlon X2 won't poweroff (was: Fix SMP poweroff hangs)
Santiago Garcia Mantinan wrote:
> I booted into single mode, then umounted all unneeded stuff and put / to ro,
> stopped all unused raids, ... then did...
..
>> strace /bin/halt -f -p
..
> rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
> rt_sigaction(SIGCHLD, NULL, {SIG_DFL}, 8) = 0
> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> nanosleep({2, 0}, {2, 0}) = 0
> reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART|0x88888888) = 0
> kill(1, SIGTSTP) = 0
> reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_POWER_OFF <unfinished ... exit status 0>
>
> Same output on the screen as I commented before, again I got to the shell
> and this time I even typed some commands like ps and amazingly they still
> worked, even though this was supposed to be halted.
Mmm.. okay, user space is doing the right things.
So next is inside the kernel itself, at linux/kernel/sys.c :: sys_reboot(),
where we see this code:
/* Instead of trying to make the power_off code look like
* halt when pm_power_off is not set do it the easy way.
*/
if ((cmd == LINUX_REBOOT_CMD_POWER_OFF) && !pm_power_off)
cmd = LINUX_REBOOT_CMD_HALT;
This converts a "poweroff" into a "reboot" if no machine dependent
power off function has been bound in (pm_power_off() is a function pointer).
So for this to work, I believe that either ACPI or APM has to have been
configured into the kernel (and the modules loaded). Your kernel .config
from earlier shows ACPI built-in to the kernel core, so it should be present.
Unless you booted with noacpi or some such parameter..
So let's have a look at the kernel boot logs,
and you could also try CONGIG_ACPI_DEBUG=y
Bizarre (and nothing to do with my patch).
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists