diff options
| -rw-r--r-- | arch/x86/include/asm/cpu.h | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/process.c | 3 | ||||
| -rw-r--r-- | arch/x86/kernel/smpboot.c | 3 |
3 files changed, 5 insertions, 2 deletions
diff --git a/arch/x86/include/asm/cpu.h b/arch/x86/include/asm/cpu.h index 4fab24de26b1..6e6e7558e702 100644 --- a/arch/x86/include/asm/cpu.h +++ b/arch/x86/include/asm/cpu.h | |||
| @@ -32,5 +32,6 @@ extern void arch_unregister_cpu(int); | |||
| 32 | 32 | ||
| 33 | DECLARE_PER_CPU(int, cpu_state); | 33 | DECLARE_PER_CPU(int, cpu_state); |
| 34 | 34 | ||
| 35 | int __cpuinit mwait_usable(const struct cpuinfo_x86 *); | ||
| 35 | 36 | ||
| 36 | #endif /* _ASM_X86_CPU_H */ | 37 | #endif /* _ASM_X86_CPU_H */ |
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index d8286ed54ffa..e764fc05d700 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/utsname.h> | 14 | #include <linux/utsname.h> |
| 15 | #include <trace/events/power.h> | 15 | #include <trace/events/power.h> |
| 16 | #include <linux/hw_breakpoint.h> | 16 | #include <linux/hw_breakpoint.h> |
| 17 | #include <asm/cpu.h> | ||
| 17 | #include <asm/system.h> | 18 | #include <asm/system.h> |
| 18 | #include <asm/apic.h> | 19 | #include <asm/apic.h> |
| 19 | #include <asm/syscalls.h> | 20 | #include <asm/syscalls.h> |
| @@ -505,7 +506,7 @@ static void poll_idle(void) | |||
| 505 | #define MWAIT_ECX_EXTENDED_INFO 0x01 | 506 | #define MWAIT_ECX_EXTENDED_INFO 0x01 |
| 506 | #define MWAIT_EDX_C1 0xf0 | 507 | #define MWAIT_EDX_C1 0xf0 |
| 507 | 508 | ||
| 508 | static int __cpuinit mwait_usable(const struct cpuinfo_x86 *c) | 509 | int __cpuinit mwait_usable(const struct cpuinfo_x86 *c) |
| 509 | { | 510 | { |
| 510 | u32 eax, ebx, ecx, edx; | 511 | u32 eax, ebx, ecx, edx; |
| 511 | 512 | ||
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 763df77343dd..0cbe8c0b35ed 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c | |||
| @@ -1402,8 +1402,9 @@ static inline void mwait_play_dead(void) | |||
| 1402 | unsigned int highest_subcstate = 0; | 1402 | unsigned int highest_subcstate = 0; |
| 1403 | int i; | 1403 | int i; |
| 1404 | void *mwait_ptr; | 1404 | void *mwait_ptr; |
| 1405 | struct cpuinfo_x86 *c = __this_cpu_ptr(&cpu_info); | ||
| 1405 | 1406 | ||
| 1406 | if (!cpu_has(__this_cpu_ptr(&cpu_info), X86_FEATURE_MWAIT)) | 1407 | if (!(cpu_has(c, X86_FEATURE_MWAIT) && mwait_usable(c))) |
| 1407 | return; | 1408 | return; |
| 1408 | if (!cpu_has(__this_cpu_ptr(&cpu_info), X86_FEATURE_CLFLSH)) | 1409 | if (!cpu_has(__this_cpu_ptr(&cpu_info), X86_FEATURE_CLFLSH)) |
| 1409 | return; | 1410 | return; |
