aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64')
-rw-r--r--arch/ia64/kernel/process.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c
index 51922b98086a..17685abaf496 100644
--- a/arch/ia64/kernel/process.c
+++ b/arch/ia64/kernel/process.c
@@ -268,10 +268,16 @@ cpu_idle (void)
268 268
269 /* endless idle loop with no priority at all */ 269 /* endless idle loop with no priority at all */
270 while (1) { 270 while (1) {
271 if (can_do_pal_halt) 271 if (can_do_pal_halt) {
272 current_thread_info()->status &= ~TS_POLLING; 272 current_thread_info()->status &= ~TS_POLLING;
273 else 273 /*
274 * TS_POLLING-cleared state must be visible before we
275 * test NEED_RESCHED:
276 */
277 smp_mb();
278 } else {
274 current_thread_info()->status |= TS_POLLING; 279 current_thread_info()->status |= TS_POLLING;
280 }
275 281
276 if (!need_resched()) { 282 if (!need_resched()) {
277 void (*idle)(void); 283 void (*idle)(void);