Sorry for the longish To list, not sure who's responsible for this particular piece. (And if I got it wrong even after all that, please let me know..) This is for 2.4; in 2.5 reboot.c has identical code with an identical problem. (I'll send a separate patch after getting feedback on this one.) If you don't pass reboot=, reboot_mode and reboot_thru_bios are used uninitialized and (in the case of reboot_mode) written directly to memory for the bios. This patch sets reboot_mode to 0x1234 by default, and reboot_thru_bios (used in "if(!reboot_thru_bios)") to 1. void machine_restart(char * __unused) { ..[smp shutdown].. if(!reboot_thru_bios) { /* rebooting needs to touch the page at absolute addr 0 */ *((unsigned short *)__va(0x472)) = reboot_mode; ... machine_real_restart(jump_to_bios, sizeof(jump_to_bios)); } void machine_real_restart(unsigned char *code, int length) { ..... /* Write 0x1234 to absolute memory location 0x472. The BIOS reads this on booting to tell it to "Bypass memory test (also warm boot)". This seems like a fairly standard thing that gets set by REBOOT.COM programs, and the previous reset routine did this too. */ *((unsigned short *)0x472) = reboot_mode; ... } -- Disconnect