diff options
| author | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-02-22 17:04:41 -0500 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-02-22 17:04:41 -0500 |
| commit | 61b80086a525c8a6081257ae40da5dee2bcaee16 (patch) | |
| tree | 675da35e4c03be3a5ca17bf6430e5b51dfed6296 /arch/x86/kernel | |
| parent | a5f17d1f4c2831b9b9bf8b1a537cdbac995d6e13 (diff) | |
| parent | 230f984662d7e0e4a9597c665fd4f53130666e7d (diff) | |
Merge branch 'entry-macro-cleanup' of git://sources.calxeda.com/kernel/linux into for-armsoc
Diffstat (limited to 'arch/x86/kernel')
| -rw-r--r-- | arch/x86/kernel/dumpstack.c | 3 | ||||
| -rw-r--r-- | arch/x86/kernel/dumpstack_64.c | 8 | ||||
| -rw-r--r-- | arch/x86/kernel/reboot.c | 36 |
3 files changed, 32 insertions, 15 deletions
diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c index 1aae78f775fc..4025fe4f928f 100644 --- a/arch/x86/kernel/dumpstack.c +++ b/arch/x86/kernel/dumpstack.c | |||
| @@ -252,7 +252,8 @@ int __kprobes __die(const char *str, struct pt_regs *regs, long err) | |||
| 252 | unsigned short ss; | 252 | unsigned short ss; |
| 253 | unsigned long sp; | 253 | unsigned long sp; |
| 254 | #endif | 254 | #endif |
| 255 | printk(KERN_EMERG "%s: %04lx [#%d] ", str, err & 0xffff, ++die_counter); | 255 | printk(KERN_DEFAULT |
| 256 | "%s: %04lx [#%d] ", str, err & 0xffff, ++die_counter); | ||
| 256 | #ifdef CONFIG_PREEMPT | 257 | #ifdef CONFIG_PREEMPT |
| 257 | printk("PREEMPT "); | 258 | printk("PREEMPT "); |
| 258 | #endif | 259 | #endif |
diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c index 6d728d9284bd..17107bd6e1f0 100644 --- a/arch/x86/kernel/dumpstack_64.c +++ b/arch/x86/kernel/dumpstack_64.c | |||
| @@ -129,7 +129,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, | |||
| 129 | if (!stack) { | 129 | if (!stack) { |
| 130 | if (regs) | 130 | if (regs) |
| 131 | stack = (unsigned long *)regs->sp; | 131 | stack = (unsigned long *)regs->sp; |
| 132 | else if (task && task != current) | 132 | else if (task != current) |
| 133 | stack = (unsigned long *)task->thread.sp; | 133 | stack = (unsigned long *)task->thread.sp; |
| 134 | else | 134 | else |
| 135 | stack = &dummy; | 135 | stack = &dummy; |
| @@ -269,11 +269,11 @@ void show_registers(struct pt_regs *regs) | |||
| 269 | unsigned char c; | 269 | unsigned char c; |
| 270 | u8 *ip; | 270 | u8 *ip; |
| 271 | 271 | ||
| 272 | printk(KERN_EMERG "Stack:\n"); | 272 | printk(KERN_DEFAULT "Stack:\n"); |
| 273 | show_stack_log_lvl(NULL, regs, (unsigned long *)sp, | 273 | show_stack_log_lvl(NULL, regs, (unsigned long *)sp, |
| 274 | 0, KERN_EMERG); | 274 | 0, KERN_DEFAULT); |
| 275 | 275 | ||
| 276 | printk(KERN_EMERG "Code: "); | 276 | printk(KERN_DEFAULT "Code: "); |
| 277 | 277 | ||
| 278 | ip = (u8 *)regs->ip - code_prologue; | 278 | ip = (u8 *)regs->ip - code_prologue; |
| 279 | if (ip < (u8 *)PAGE_OFFSET || probe_kernel_address(ip, c)) { | 279 | if (ip < (u8 *)PAGE_OFFSET || probe_kernel_address(ip, c)) { |
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c index 37a458b521a6..d840e69a853c 100644 --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c | |||
| @@ -39,6 +39,14 @@ static int reboot_mode; | |||
| 39 | enum reboot_type reboot_type = BOOT_ACPI; | 39 | enum reboot_type reboot_type = BOOT_ACPI; |
| 40 | int reboot_force; | 40 | int reboot_force; |
| 41 | 41 | ||
| 42 | /* This variable is used privately to keep track of whether or not | ||
| 43 | * reboot_type is still set to its default value (i.e., reboot= hasn't | ||
| 44 | * been set on the command line). This is needed so that we can | ||
| 45 | * suppress DMI scanning for reboot quirks. Without it, it's | ||
| 46 | * impossible to override a faulty reboot quirk without recompiling. | ||
| 47 | */ | ||
| 48 | static int reboot_default = 1; | ||
| 49 | |||
| 42 | #if defined(CONFIG_X86_32) && defined(CONFIG_SMP) | 50 | #if defined(CONFIG_X86_32) && defined(CONFIG_SMP) |
| 43 | static int reboot_cpu = -1; | 51 | static int reboot_cpu = -1; |
| 44 | #endif | 52 | #endif |
| @@ -67,6 +75,12 @@ bool port_cf9_safe = false; | |||
| 67 | static int __init reboot_setup(char *str) | 75 | static int __init reboot_setup(char *str) |
| 68 | { | 76 | { |
| 69 | for (;;) { | 77 | for (;;) { |
| 78 | /* Having anything passed on the command line via | ||
| 79 | * reboot= will cause us to disable DMI checking | ||
| 80 | * below. | ||
| 81 | */ | ||
| 82 | reboot_default = 0; | ||
| 83 | |||
| 70 | switch (*str) { | 84 | switch (*str) { |
| 71 | case 'w': | 85 | case 'w': |
| 72 | reboot_mode = 0x1234; | 86 | reboot_mode = 0x1234; |
| @@ -295,14 +309,6 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = { | |||
| 295 | DMI_MATCH(DMI_BOARD_NAME, "P4S800"), | 309 | DMI_MATCH(DMI_BOARD_NAME, "P4S800"), |
| 296 | }, | 310 | }, |
| 297 | }, | 311 | }, |
| 298 | { /* Handle problems with rebooting on VersaLogic Menlow boards */ | ||
| 299 | .callback = set_bios_reboot, | ||
| 300 | .ident = "VersaLogic Menlow based board", | ||
| 301 | .matches = { | ||
| 302 | DMI_MATCH(DMI_BOARD_VENDOR, "VersaLogic Corporation"), | ||
| 303 | DMI_MATCH(DMI_BOARD_NAME, "VersaLogic Menlow board"), | ||
| 304 | }, | ||
| 305 | }, | ||
| 306 | { /* Handle reboot issue on Acer Aspire one */ | 312 | { /* Handle reboot issue on Acer Aspire one */ |
| 307 | .callback = set_kbd_reboot, | 313 | .callback = set_kbd_reboot, |
| 308 | .ident = "Acer Aspire One A110", | 314 | .ident = "Acer Aspire One A110", |
| @@ -316,7 +322,12 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = { | |||
| 316 | 322 | ||
| 317 | static int __init reboot_init(void) | 323 | static int __init reboot_init(void) |
| 318 | { | 324 | { |
| 319 | dmi_check_system(reboot_dmi_table); | 325 | /* Only do the DMI check if reboot_type hasn't been overridden |
| 326 | * on the command line | ||
| 327 | */ | ||
| 328 | if (reboot_default) { | ||
| 329 | dmi_check_system(reboot_dmi_table); | ||
| 330 | } | ||
| 320 | return 0; | 331 | return 0; |
| 321 | } | 332 | } |
| 322 | core_initcall(reboot_init); | 333 | core_initcall(reboot_init); |
| @@ -465,7 +476,12 @@ static struct dmi_system_id __initdata pci_reboot_dmi_table[] = { | |||
| 465 | 476 | ||
| 466 | static int __init pci_reboot_init(void) | 477 | static int __init pci_reboot_init(void) |
| 467 | { | 478 | { |
| 468 | dmi_check_system(pci_reboot_dmi_table); | 479 | /* Only do the DMI check if reboot_type hasn't been overridden |
| 480 | * on the command line | ||
| 481 | */ | ||
| 482 | if (reboot_default) { | ||
| 483 | dmi_check_system(pci_reboot_dmi_table); | ||
| 484 | } | ||
| 469 | return 0; | 485 | return 0; |
| 470 | } | 486 | } |
| 471 | core_initcall(pci_reboot_init); | 487 | core_initcall(pci_reboot_init); |
