# HG changeset patch # User yamahata@xxxxxxxxxxxxx # Node ID 42be9580779e90d81549ef8705d1d4f4ccc8abae # Parent ae245d35457b03f680b994437bd25532b98aa523 context_switch() of Xen/IA64 returns unlike Xen/x86. On the other hand xen vcpu switch is done by softirq drivern timer handler. As a result smp_processor_id() may change on Xen/IA64 right after calling a handler in do_softirq(). If it happens, do_softirq() touches another physical cpu's softirq_pending. This patch fixes it. PATCHNAME: do_softirq_cpu Signed-off-by: Isaku Yamahata diff -r ae245d35457b -r 42be9580779e xen/common/softirq.c --- a/xen/common/softirq.c Wed Jun 28 13:59:29 2006 +0100 +++ b/xen/common/softirq.c Fri Jun 30 19:18:25 2006 +0900 @@ -33,6 +33,7 @@ asmlinkage void do_softirq(void) i = find_first_set_bit(pending); clear_bit(i, &softirq_pending(cpu)); (*softirq_handlers[i])(); + cpu = smp_processor_id(); } while ( (pending = softirq_pending(cpu)) != 0 ); }