diff options
| -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); |
