Skip to content

Commit

Permalink
reboot: x86: prepare reboot_mode for moving to generic kernel code
Browse files Browse the repository at this point in the history
Prepare for the moving the parsing of reboot= to the generic kernel code
by making reboot_mode into a more generic form.

Signed-off-by: Robin Holt <holt@sgi.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Miguel Boton <mboton.lkml@gmail.com>
Cc: Russ Anderson <rja@sgi.com>
Cc: Robin Holt <holt@sgi.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
Acked-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Robin Holt authored and Linus Torvalds committed Jul 9, 2013
1 parent 972ee83 commit edf2b13
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 5 deletions.
12 changes: 7 additions & 5 deletions arch/x86/kernel/reboot.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ void (*pm_power_off)(void);
EXPORT_SYMBOL(pm_power_off);

static const struct desc_ptr no_idt = {};
static int reboot_mode;
static enum reboot_mode reboot_mode;
enum reboot_type reboot_type = BOOT_ACPI;
int reboot_force;

Expand Down Expand Up @@ -88,11 +88,11 @@ static int __init reboot_setup(char *str)

switch (*str) {
case 'w':
reboot_mode = 0x1234;
reboot_mode = REBOOT_WARM;
break;

case 'c':
reboot_mode = 0;
reboot_mode = REBOOT_COLD;
break;

#ifdef CONFIG_SMP
Expand Down Expand Up @@ -536,14 +536,16 @@ static void native_machine_emergency_restart(void)
int i;
int attempt = 0;
int orig_reboot_type = reboot_type;
unsigned short mode;

if (reboot_emergency)
emergency_vmx_disable_all();

tboot_shutdown(TB_SHUTDOWN_REBOOT);

/* Tell the BIOS if we want cold or warm reboot */
*((unsigned short *)__va(0x472)) = reboot_mode;
mode = reboot_mode == REBOOT_WARM ? 0x1234 : 0;
*((unsigned short *)__va(0x472)) = mode;

for (;;) {
/* Could also try the reset bit in the Hammer NB */
Expand Down Expand Up @@ -585,7 +587,7 @@ static void native_machine_emergency_restart(void)

case BOOT_EFI:
if (efi_enabled(EFI_RUNTIME_SERVICES))
efi.reset_system(reboot_mode ?
efi.reset_system(reboot_mode == REBOOT_WARM ?
EFI_RESET_WARM :
EFI_RESET_COLD,
EFI_SUCCESS, 0, NULL);
Expand Down
5 changes: 5 additions & 0 deletions include/linux/reboot.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@
#define SYS_HALT 0x0002 /* Notify of system halt */
#define SYS_POWER_OFF 0x0003 /* Notify of system power off */

enum reboot_mode {
REBOOT_COLD = 0,
REBOOT_WARM,
};

extern int register_reboot_notifier(struct notifier_block *);
extern int unregister_reboot_notifier(struct notifier_block *);

Expand Down

0 comments on commit edf2b13

Please sign in to comment.