diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-26 11:42:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-26 11:42:03 -0400 |
commit | 7b86572a7a920e3181b041b8d1a01582e4610b66 (patch) | |
tree | d0c76905c962ebf1a36c58b70cd24dbb6ba51d3d /arch/x86/mm | |
parent | 0791e98dd1cd1833547f814188b25b6c8c711ad5 (diff) | |
parent | eab9e6137f237681a04649e786cc4d942bedd6d1 (diff) |
Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
* 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86-64: Fix CFI data for interrupt frames
x86-64: Don't apply destructive erratum workaround on unaffected CPUs
Diffstat (limited to 'arch/x86/mm')
-rw-r--r-- | arch/x86/mm/fault.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 0d17c8c50acd..9c7378df740a 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c | |||
@@ -420,12 +420,14 @@ static noinline __kprobes int vmalloc_fault(unsigned long address) | |||
420 | return 0; | 420 | return 0; |
421 | } | 421 | } |
422 | 422 | ||
423 | #ifdef CONFIG_CPU_SUP_AMD | ||
423 | static const char errata93_warning[] = | 424 | static const char errata93_warning[] = |
424 | KERN_ERR | 425 | KERN_ERR |
425 | "******* Your BIOS seems to not contain a fix for K8 errata #93\n" | 426 | "******* Your BIOS seems to not contain a fix for K8 errata #93\n" |
426 | "******* Working around it, but it may cause SEGVs or burn power.\n" | 427 | "******* Working around it, but it may cause SEGVs or burn power.\n" |
427 | "******* Please consider a BIOS update.\n" | 428 | "******* Please consider a BIOS update.\n" |
428 | "******* Disabling USB legacy in the BIOS may also help.\n"; | 429 | "******* Disabling USB legacy in the BIOS may also help.\n"; |
430 | #endif | ||
429 | 431 | ||
430 | /* | 432 | /* |
431 | * No vm86 mode in 64-bit mode: | 433 | * No vm86 mode in 64-bit mode: |
@@ -505,7 +507,11 @@ bad: | |||
505 | */ | 507 | */ |
506 | static int is_errata93(struct pt_regs *regs, unsigned long address) | 508 | static int is_errata93(struct pt_regs *regs, unsigned long address) |
507 | { | 509 | { |
508 | #ifdef CONFIG_X86_64 | 510 | #if defined(CONFIG_X86_64) && defined(CONFIG_CPU_SUP_AMD) |
511 | if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD | ||
512 | || boot_cpu_data.x86 != 0xf) | ||
513 | return 0; | ||
514 | |||
509 | if (address != regs->ip) | 515 | if (address != regs->ip) |
510 | return 0; | 516 | return 0; |
511 | 517 | ||