diff options
Diffstat (limited to 'arch/x86/kernel/cpu/amd.c')
-rw-r--r-- | arch/x86/kernel/cpu/amd.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 813d29d00a17..15c5df92f74e 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c | |||
@@ -566,6 +566,17 @@ static void init_amd_k8(struct cpuinfo_x86 *c) | |||
566 | 566 | ||
567 | if (!c->x86_model_id[0]) | 567 | if (!c->x86_model_id[0]) |
568 | strcpy(c->x86_model_id, "Hammer"); | 568 | strcpy(c->x86_model_id, "Hammer"); |
569 | |||
570 | #ifdef CONFIG_SMP | ||
571 | /* | ||
572 | * Disable TLB flush filter by setting HWCR.FFDIS on K8 | ||
573 | * bit 6 of msr C001_0015 | ||
574 | * | ||
575 | * Errata 63 for SH-B3 steppings | ||
576 | * Errata 122 for all steppings (F+ have it disabled by default) | ||
577 | */ | ||
578 | msr_set_bit(MSR_K7_HWCR, 6); | ||
579 | #endif | ||
569 | } | 580 | } |
570 | 581 | ||
571 | static void init_amd_gh(struct cpuinfo_x86 *c) | 582 | static void init_amd_gh(struct cpuinfo_x86 *c) |
@@ -636,18 +647,6 @@ static void init_amd(struct cpuinfo_x86 *c) | |||
636 | { | 647 | { |
637 | u32 dummy; | 648 | u32 dummy; |
638 | 649 | ||
639 | #ifdef CONFIG_SMP | ||
640 | /* | ||
641 | * Disable TLB flush filter by setting HWCR.FFDIS on K8 | ||
642 | * bit 6 of msr C001_0015 | ||
643 | * | ||
644 | * Errata 63 for SH-B3 steppings | ||
645 | * Errata 122 for all steppings (F+ have it disabled by default) | ||
646 | */ | ||
647 | if (c->x86 == 0xf) | ||
648 | msr_set_bit(MSR_K7_HWCR, 6); | ||
649 | #endif | ||
650 | |||
651 | early_init_amd(c); | 650 | early_init_amd(c); |
652 | 651 | ||
653 | /* | 652 | /* |