diff options
author | Borislav Petkov <borislav.petkov@amd.com> | 2012-08-06 13:00:39 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2012-08-06 22:18:39 -0400 |
commit | 057237bb35a605d795fd787868a1088705f26ee5 (patch) | |
tree | 952a863f6c8ced5ad8e4b28b6c195c4b324e5bad /arch/x86/kernel | |
parent | b46882e4c4de4813947fce940fe74af794a1eb72 (diff) |
x86, cpu: Preset default tlb_flushall_shift on AMD
Run the mprotect.c microbenchmark on all our families >= K8 and preset
the flushall shift variable accordingly.
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Link: http://lkml.kernel.org/r/1344272439-29080-5-git-send-email-bp@amd64.org
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/cpu/amd.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index bcd200839c90..f7e98a2c0d12 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c | |||
@@ -737,6 +737,17 @@ static unsigned int __cpuinit amd_size_cache(struct cpuinfo_x86 *c, | |||
737 | } | 737 | } |
738 | #endif | 738 | #endif |
739 | 739 | ||
740 | static void __cpuinit cpu_set_tlb_flushall_shift(struct cpuinfo_x86 *c) | ||
741 | { | ||
742 | if (!cpu_has_invlpg) | ||
743 | return; | ||
744 | |||
745 | tlb_flushall_shift = 5; | ||
746 | |||
747 | if (c->x86 <= 0x11) | ||
748 | tlb_flushall_shift = 4; | ||
749 | } | ||
750 | |||
740 | static void __cpuinit cpu_detect_tlb_amd(struct cpuinfo_x86 *c) | 751 | static void __cpuinit cpu_detect_tlb_amd(struct cpuinfo_x86 *c) |
741 | { | 752 | { |
742 | u32 ebx, eax, ecx, edx; | 753 | u32 ebx, eax, ecx, edx; |
@@ -788,6 +799,8 @@ static void __cpuinit cpu_detect_tlb_amd(struct cpuinfo_x86 *c) | |||
788 | tlb_lli_2m[ENTRIES] = eax & mask; | 799 | tlb_lli_2m[ENTRIES] = eax & mask; |
789 | 800 | ||
790 | tlb_lli_4m[ENTRIES] = tlb_lli_2m[ENTRIES] >> 1; | 801 | tlb_lli_4m[ENTRIES] = tlb_lli_2m[ENTRIES] >> 1; |
802 | |||
803 | cpu_set_tlb_flushall_shift(c); | ||
791 | } | 804 | } |
792 | 805 | ||
793 | static const struct cpu_dev __cpuinitconst amd_cpu_dev = { | 806 | static const struct cpu_dev __cpuinitconst amd_cpu_dev = { |