aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kernel/setup_64.c13
-rw-r--r--include/asm-x86/msr-index.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c
index 3d76dbd9f2c0..b5425979501c 100644
--- a/arch/x86/kernel/setup_64.c
+++ b/arch/x86/kernel/setup_64.c
@@ -729,6 +729,19 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
729 729
730 if (amd_apic_timer_broken()) 730 if (amd_apic_timer_broken())
731 disable_apic_timer = 1; 731 disable_apic_timer = 1;
732
733 if (c == &boot_cpu_data && c->x86 >= 0xf && c->x86 <= 0x11) {
734 unsigned long long tseg;
735
736 /*
737 * Split up direct mapping around the TSEG SMM area.
738 * Don't do it for gbpages because there seems very little
739 * benefit in doing so.
740 */
741 if (!rdmsrl_safe(MSR_K8_TSEG_ADDR, &tseg) &&
742 (tseg >> PMD_SHIFT) < (max_pfn_mapped >> (PMD_SHIFT-PAGE_SHIFT)))
743 set_memory_4k((unsigned long)__va(tseg), 1);
744 }
732} 745}
733 746
734void __cpuinit detect_ht(struct cpuinfo_x86 *c) 747void __cpuinit detect_ht(struct cpuinfo_x86 *c)
diff --git a/include/asm-x86/msr-index.h b/include/asm-x86/msr-index.h
index af4e07f661b8..09413ad39d3c 100644
--- a/include/asm-x86/msr-index.h
+++ b/include/asm-x86/msr-index.h
@@ -112,6 +112,7 @@
112#define MSR_K8_SYSCFG 0xc0010010 112#define MSR_K8_SYSCFG 0xc0010010
113#define MSR_K8_HWCR 0xc0010015 113#define MSR_K8_HWCR 0xc0010015
114#define MSR_K8_ENABLE_C1E 0xc0010055 114#define MSR_K8_ENABLE_C1E 0xc0010055
115#define MSR_K8_TSEG_ADDR 0xc0010112
115#define K8_MTRRFIXRANGE_DRAM_ENABLE 0x00040000 /* MtrrFixDramEn bit */ 116#define K8_MTRRFIXRANGE_DRAM_ENABLE 0x00040000 /* MtrrFixDramEn bit */
116#define K8_MTRRFIXRANGE_DRAM_MODIFY 0x00080000 /* MtrrFixDramModEn bit */ 117#define K8_MTRRFIXRANGE_DRAM_MODIFY 0x00080000 /* MtrrFixDramModEn bit */
117#define K8_MTRR_RDMEM_WRMEM_MASK 0x18181818 /* Mask: RdMem|WrMem */ 118#define K8_MTRR_RDMEM_WRMEM_MASK 0x18181818 /* Mask: RdMem|WrMem */