Skip to content

Commit

Permalink
[IA64] add missing cpu_relax() in ITC syncing code
Browse files Browse the repository at this point in the history
Call cpu_relax() in busy-waiting loops of the ITC-syncing code.

Signed-off-by: David Mosberger-Tang <davidm@hpl.hp.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
  • Loading branch information
David Mosberger-Tang authored and Tony Luck committed Apr 25, 2005
1 parent bf1cf98 commit 8297511
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions arch/ia64/kernel/smpboot.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*
* SMP boot-related support
*
* Copyright (C) 1998-2003 Hewlett-Packard Co
* Copyright (C) 1998-2003, 2005 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
*
* 01/05/16 Rohit Seth <rohit.seth@intel.com> Moved SMP booting functions from smp.c to here.
Expand Down Expand Up @@ -156,7 +156,8 @@ sync_master (void *arg)
local_irq_save(flags);
{
for (i = 0; i < NUM_ROUNDS*NUM_ITERS; ++i) {
while (!go[MASTER]);
while (!go[MASTER])
cpu_relax();
go[MASTER] = 0;
go[SLAVE] = ia64_get_itc();
}
Expand All @@ -179,7 +180,8 @@ get_delta (long *rt, long *master)
for (i = 0; i < NUM_ITERS; ++i) {
t0 = ia64_get_itc();
go[MASTER] = 1;
while (!(tm = go[SLAVE]));
while (!(tm = go[SLAVE]))
cpu_relax();
go[SLAVE] = 0;
t1 = ia64_get_itc();

Expand Down Expand Up @@ -258,7 +260,8 @@ ia64_sync_itc (unsigned int master)
return;
}

while (go[MASTER]); /* wait for master to be ready */
while (go[MASTER])
cpu_relax(); /* wait for master to be ready */

spin_lock_irqsave(&itc_sync_lock, flags);
{
Expand Down

0 comments on commit 8297511

Please sign in to comment.