[RFC] ACPI power-off on P4 HT

From: Willy Tarreau
Date: Wed Feb 25 2004 - 02:09:18 EST


Hi Len & Marcelo,

as I previously said, the patch I sent which fixes the poweroff on my VAIO is
not enough to shut down the supermicro P4 HT. So I borrowed some code from
machine_restart() to try to :
- disable APIC => was not enough, but I must retry on the VAIO
- stop the second CPU => was not enough either
- bounce on boot_cpu and stop the others => it did work.

So I think that ACPI is not SMP-proof nor HT-proof on some hardware. My new
problem is that I feel like the code I have included in acpi_power_off() to
do this is a bit too much x86 specific, so I'd like to move this to
arch/i386/kernel/process.c with all the rest, but I don't know how to cut
this. I think that a general function such as machine_prepare_shutdown() or
something like this would be useful and could be shared by both ACPI and
machine_restart(). It would basically to everything that is needed in such
a case :
- on SMP, bounce on boot_cpu, then halt the current CPU if != boot_cpu
- on SMP, stop all other CPUs
- on UP, disable IOAPIC
- disable local APIC

I suspect that this function would be useful for some suspend cases, but I'm
not sure. My other problem is to know what we should do then with other
arches. Create an identical function for everyone, or just call it from
ACPI on CONFIG_X86, or even add a CONFIG_MACHINE_PREPARE_SHUTDOWN ?

I need some feedback here. Any suggestions ?

Regards,
Willy

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/