Commit 8e53f7e0 authored by Alex Williamson's avatar Alex Williamson Committed by David Mosberger

[PATCH] ia64: fix timer interrupts getting lost

This patch fixes the issue of some CPUs not showing timer interrupts
going off.  Seems during the process of sync'ing the itc, we jumped over
the next timer value.  This patch is against 2.5.67 + ia64.  I haven't
seen the problem on 2.4, but a quick looks seems like it's potentially
an issue there too.
parent e8c1a04b
...@@ -311,6 +311,15 @@ smp_callin (void) ...@@ -311,6 +311,15 @@ smp_callin (void)
*/ */
Dprintk("Going to syncup ITC with BP.\n"); Dprintk("Going to syncup ITC with BP.\n");
ia64_sync_itc(0); ia64_sync_itc(0);
/*
* Make sure we didn't sync the itc ahead of the next
* timer interrupt, if so, just reset it.
*/
if (time_after(ia64_get_itc(),local_cpu_data->itm_next)) {
Dprintk("oops, jumped a timer.\n");
ia64_cpu_local_tick();
}
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment