Skip to content

Commit

Permalink
x86, idle: Use static_cpu_has() for CLFLUSH workaround, add barriers
Browse files Browse the repository at this point in the history
Use static_cpu_has() to conditionalize the CLFLUSH workaround, and add
memory barriers around it since the documentation is explicit that
CLFLUSH is only ordered with respect to MFENCE.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Len Brown <len.brown@intel.com>
Link: http://lkml.kernel.org/r/CA%2B55aFzGxcML7j8CEvQPYzh0W81uVoAAVmGctMOUZ7CZ1yYd2A@mail.gmail.com
  • Loading branch information
H. Peter Anvin committed Dec 19, 2013
1 parent 1682425 commit 7e98b71
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion arch/x86/include/asm/mwait.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,11 @@ static inline void __mwait(unsigned long eax, unsigned long ecx)
static inline void mwait_idle_with_hints(unsigned long eax, unsigned long ecx)
{
if (!current_set_polling_and_test()) {
if (this_cpu_has(X86_FEATURE_CLFLUSH_MONITOR))
if (static_cpu_has(X86_FEATURE_CLFLUSH_MONITOR)) {
mb();
clflush((void *)&current_thread_info()->flags);
mb();
}

__monitor((void *)&current_thread_info()->flags, 0, 0);
if (!need_resched())
Expand Down

0 comments on commit 7e98b71

Please sign in to comment.