diff options
-rw-r--r-- | arch/x86/kernel/setup_64.c | 13 | ||||
-rw-r--r-- | include/asm-x86/msr-index.h | 1 |
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 | ||
734 | void __cpuinit detect_ht(struct cpuinfo_x86 *c) | 747 | void __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 */ |