aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64')
-rw-r--r--arch/x86_64/kernel/process.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/x86_64/kernel/process.c b/arch/x86_64/kernel/process.c
index a418ee4c8c62..cbbc6adc1a92 100644
--- a/arch/x86_64/kernel/process.c
+++ b/arch/x86_64/kernel/process.c
@@ -109,7 +109,11 @@ void exit_idle(void)
109static void default_idle(void) 109static void default_idle(void)
110{ 110{
111 current_thread_info()->status &= ~TS_POLLING; 111 current_thread_info()->status &= ~TS_POLLING;
112 smp_mb__after_clear_bit(); 112 /*
113 * TS_POLLING-cleared state must be visible before we
114 * test NEED_RESCHED:
115 */
116 smp_mb();
113 local_irq_disable(); 117 local_irq_disable();
114 if (!need_resched()) { 118 if (!need_resched()) {
115 /* Enables interrupts one instruction before HLT. 119 /* Enables interrupts one instruction before HLT.