I had the same problem.
I used an own compiled SMP kernel (it's a dual core machine) with APM and ACPI support.
When looking at the startup log (run dmesg
) I could see that when ACPI is started, it disables APM. Further on APM poweroff is disabled for multicore CPU-s anyhow, as it is considered not SMP-safe. (I don't know why.)
The solution was that I disabled ACPI and enabled APM power off even for SMP. I think the kernel boot parameters for that were acpi=off apm=smp
But then shutdown -h
I used the 2.6.20 kernel.
The list of kernel parameters can be found in the file Documentation/kernel-parameters.txt
. Search for acpi
. The latter will redirect you to arch/i386/kernel/apm.c
where you can see this:
* See Documentation/Config.help for the configuration options.
* Various options can be changed at boot time as follows:
* (We allow underscores for compatibility with the modules code)
* apm=on/off enable/disable APM
* [no-]allow[-_]ints allow interrupts during BIOS calls
* [no-]broken[-_]psr BIOS has a broken GetPowerStatus call
* [no-]realmode[-_]power[-_]off switch to real mode before
* powering off
* [no-]debug log some debugging messages
* [no-]power[-_]off power off on shutdown
* [no-]smp Use apm even on an SMP box
* bounce[-_]interval=<n> number of ticks to ignore suspend
* idle[-_]threshold=<n> System idle percentage above which to
* make APM BIOS idle calls. Set it to
* 100 to disable.
* idle[-_]period=<n> Period (in 1/100s of a second) over
* which the idle percentage is
PS. I'm pretty sure that you can find a more sophisticated solution than disabling the whole ACPI.