diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2012-11-28 14:50:27 -0500 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2012-11-29 16:23:02 -0500 |
commit | 094ab1db7cb7833cd4c820acd868fc26acf3f08e (patch) | |
tree | 8f68b528df0673c9a2d98a72d7bca18ca8c5045c /arch/x86 | |
parent | e5bb8ad862a97a0facc83f3b81731de919fec6ad (diff) |
x86, 386 removal: Remove CONFIG_INVLPG
All 486+ CPUs support INVLPG, so remove the fallback 386 support
code.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Link: http://lkml.kernel.org/r/1354132230-21854-6-git-send-email-hpa@linux.intel.com
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/Kconfig.cpu | 4 | ||||
-rw-r--r-- | arch/x86/include/asm/cpufeature.h | 6 | ||||
-rw-r--r-- | arch/x86/include/asm/tlbflush.h | 3 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/amd.c | 3 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/intel.c | 4 | ||||
-rw-r--r-- | arch/x86/mm/tlb.c | 8 |
6 files changed, 3 insertions, 25 deletions
diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu index 8e5867cf07d0..d3bdc18af1f0 100644 --- a/arch/x86/Kconfig.cpu +++ b/arch/x86/Kconfig.cpu | |||
@@ -328,10 +328,6 @@ config X86_INVD_BUG | |||
328 | config X86_WP_WORKS_OK | 328 | config X86_WP_WORKS_OK |
329 | def_bool y | 329 | def_bool y |
330 | 330 | ||
331 | config X86_INVLPG | ||
332 | def_bool y | ||
333 | depends on X86_32 | ||
334 | |||
335 | config X86_POPAD_OK | 331 | config X86_POPAD_OK |
336 | def_bool y | 332 | def_bool y |
337 | depends on X86_32 | 333 | depends on X86_32 |
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h index 8c297aa53eef..ff8dd62fda48 100644 --- a/arch/x86/include/asm/cpufeature.h +++ b/arch/x86/include/asm/cpufeature.h | |||
@@ -312,12 +312,6 @@ extern const char * const x86_power_flags[32]; | |||
312 | #define cpu_has_cx16 boot_cpu_has(X86_FEATURE_CX16) | 312 | #define cpu_has_cx16 boot_cpu_has(X86_FEATURE_CX16) |
313 | #define cpu_has_eager_fpu boot_cpu_has(X86_FEATURE_EAGER_FPU) | 313 | #define cpu_has_eager_fpu boot_cpu_has(X86_FEATURE_EAGER_FPU) |
314 | 314 | ||
315 | #if defined(CONFIG_X86_INVLPG) || defined(CONFIG_X86_64) | ||
316 | # define cpu_has_invlpg 1 | ||
317 | #else | ||
318 | # define cpu_has_invlpg (boot_cpu_data.x86 > 3) | ||
319 | #endif | ||
320 | |||
321 | #ifdef CONFIG_X86_64 | 315 | #ifdef CONFIG_X86_64 |
322 | 316 | ||
323 | #undef cpu_has_vme | 317 | #undef cpu_has_vme |
diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h index 74a44333545a..0fee48e279cc 100644 --- a/arch/x86/include/asm/tlbflush.h +++ b/arch/x86/include/asm/tlbflush.h | |||
@@ -56,10 +56,7 @@ static inline void __flush_tlb_all(void) | |||
56 | 56 | ||
57 | static inline void __flush_tlb_one(unsigned long addr) | 57 | static inline void __flush_tlb_one(unsigned long addr) |
58 | { | 58 | { |
59 | if (cpu_has_invlpg) | ||
60 | __flush_tlb_single(addr); | 59 | __flush_tlb_single(addr); |
61 | else | ||
62 | __flush_tlb(); | ||
63 | } | 60 | } |
64 | 61 | ||
65 | #define TLB_FLUSH_ALL -1UL | 62 | #define TLB_FLUSH_ALL -1UL |
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 1b7d1656a042..a025d8cc4577 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c | |||
@@ -753,9 +753,6 @@ static unsigned int __cpuinit amd_size_cache(struct cpuinfo_x86 *c, | |||
753 | 753 | ||
754 | static void __cpuinit cpu_set_tlb_flushall_shift(struct cpuinfo_x86 *c) | 754 | static void __cpuinit cpu_set_tlb_flushall_shift(struct cpuinfo_x86 *c) |
755 | { | 755 | { |
756 | if (!cpu_has_invlpg) | ||
757 | return; | ||
758 | |||
759 | tlb_flushall_shift = 5; | 756 | tlb_flushall_shift = 5; |
760 | 757 | ||
761 | if (c->x86 <= 0x11) | 758 | if (c->x86 <= 0x11) |
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index 198e019a531a..fcaabd0432c5 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c | |||
@@ -612,10 +612,6 @@ static void __cpuinit intel_tlb_lookup(const unsigned char desc) | |||
612 | 612 | ||
613 | static void __cpuinit intel_tlb_flushall_shift_set(struct cpuinfo_x86 *c) | 613 | static void __cpuinit intel_tlb_flushall_shift_set(struct cpuinfo_x86 *c) |
614 | { | 614 | { |
615 | if (!cpu_has_invlpg) { | ||
616 | tlb_flushall_shift = -1; | ||
617 | return; | ||
618 | } | ||
619 | switch ((c->x86 << 8) + c->x86_model) { | 615 | switch ((c->x86 << 8) + c->x86_model) { |
620 | case 0x60f: /* original 65 nm celeron/pentium/core2/xeon, "Merom"/"Conroe" */ | 616 | case 0x60f: /* original 65 nm celeron/pentium/core2/xeon, "Merom"/"Conroe" */ |
621 | case 0x616: /* single-core 65 nm celeron/core2solo "Merom-L"/"Conroe-L" */ | 617 | case 0x616: /* single-core 65 nm celeron/core2solo "Merom-L"/"Conroe-L" */ |
diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index 60f926cd8b0e..13a6b29e2e5d 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c | |||
@@ -104,7 +104,7 @@ static void flush_tlb_func(void *info) | |||
104 | return; | 104 | return; |
105 | 105 | ||
106 | if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK) { | 106 | if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK) { |
107 | if (f->flush_end == TLB_FLUSH_ALL || !cpu_has_invlpg) | 107 | if (f->flush_end == TLB_FLUSH_ALL) |
108 | local_flush_tlb(); | 108 | local_flush_tlb(); |
109 | else if (!f->flush_end) | 109 | else if (!f->flush_end) |
110 | __flush_tlb_single(f->flush_start); | 110 | __flush_tlb_single(f->flush_start); |
@@ -337,10 +337,8 @@ static const struct file_operations fops_tlbflush = { | |||
337 | 337 | ||
338 | static int __cpuinit create_tlb_flushall_shift(void) | 338 | static int __cpuinit create_tlb_flushall_shift(void) |
339 | { | 339 | { |
340 | if (cpu_has_invlpg) { | 340 | debugfs_create_file("tlb_flushall_shift", S_IRUSR | S_IWUSR, |
341 | debugfs_create_file("tlb_flushall_shift", S_IRUSR | S_IWUSR, | 341 | arch_debugfs_dir, NULL, &fops_tlbflush); |
342 | arch_debugfs_dir, NULL, &fops_tlbflush); | ||
343 | } | ||
344 | return 0; | 342 | return 0; |
345 | } | 343 | } |
346 | late_initcall(create_tlb_flushall_shift); | 344 | late_initcall(create_tlb_flushall_shift); |