--- linux-2.6.18-orig/arch/i386/kernel/time-xen.c 2006-10-06 14:37:41.000000000 -0400 +++ linux-2.6.18.x86_64/arch/i386/kernel/time-xen.c 2006-10-09 17:13:54.000000000 -0400 @@ -666,6 +666,13 @@ irqreturn_t timer_interrupt(int irq, voi clock_was_set(); } + /* Local timer processing (see update_process_times()). */ + run_local_timers(); + if (rcu_pending(cpu)) + rcu_check_callbacks(cpu, user_mode(regs)); + scheduler_tick(); + run_posix_cpu_timers(current); + write_sequnlock(&xtime_lock); /* @@ -709,13 +716,6 @@ irqreturn_t timer_interrupt(int irq, voi (cputime_t)delta_cpu); } - /* Local timer processing (see update_process_times()). */ - run_local_timers(); - if (rcu_pending(cpu)) - rcu_check_callbacks(cpu, user_mode(regs)); - scheduler_tick(); - run_posix_cpu_timers(current); - return IRQ_HANDLED; }