--- src/sys/kern/kern_shutdown.c 2005/07/19 19:53:53 1.22 +++ src/sys/kern/kern_shutdown.c 2005/11/04 09:38:15 1.23 @@ -242,9 +242,17 @@ boot(int howto) howto |= shutdown_howto; #ifdef SMP + /* + * We really want to shutdown on the BSP. Subsystems such as ACPI + * can't power-down the box otherwise. + */ if (smp_active_mask > 1) { printf("boot() called on cpu#%d\n", mycpu->gd_cpuid); } + if (panicstr == NULL && mycpu->gd_cpuid != 0) { + printf("Switching to cpu #0 for shutdown\n"); + lwkt_setcpu_self(globaldata_find(0)); + } #endif /* * Do any callouts that should be done BEFORE syncing the filesystems.