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 | |
| 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>
| -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 = { |
