diff options
Diffstat (limited to 'arch/i386/kernel/process.c')
-rw-r--r-- | arch/i386/kernel/process.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index 99308510a17c..c641056233a6 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c | |||
@@ -102,7 +102,12 @@ void default_idle(void) | |||
102 | { | 102 | { |
103 | if (!hlt_counter && boot_cpu_data.hlt_works_ok) { | 103 | if (!hlt_counter && boot_cpu_data.hlt_works_ok) { |
104 | current_thread_info()->status &= ~TS_POLLING; | 104 | current_thread_info()->status &= ~TS_POLLING; |
105 | smp_mb__after_clear_bit(); | 105 | /* |
106 | * TS_POLLING-cleared state must be visible before we | ||
107 | * test NEED_RESCHED: | ||
108 | */ | ||
109 | smp_mb(); | ||
110 | |||
106 | local_irq_disable(); | 111 | local_irq_disable(); |
107 | if (!need_resched()) | 112 | if (!need_resched()) |
108 | safe_halt(); /* enables interrupts racelessly */ | 113 | safe_halt(); /* enables interrupts racelessly */ |