--- head-2006-02-07.orig/drivers/xen/core/evtchn.c 2006-02-07 12:06:47.000000000 +0100 +++ head-2006-02-07/drivers/xen/core/evtchn.c 2006-02-08 12:54:46.000000000 +0100 @@ -123,8 +123,10 @@ static void init_evtchn_cpu_bindings(voi #ifdef CONFIG_X86 extern fastcall unsigned int do_IRQ(struct pt_regs *regs); #if defined (__i386__) +static inline void exit_idle(void) {} #define IRQ_REG orig_eax #elif defined (__x86_64__) +#include #define IRQ_REG orig_rax #endif #define do_IRQ(irq, regs) do { \ @@ -170,8 +172,10 @@ asmlinkage void evtchn_do_upcall(struct port = (l1i * BITS_PER_LONG) + l2i; if ((irq = evtchn_to_irq[port]) != -1) do_IRQ(irq, regs); - else + else { + exit_idle(); evtchn_device_upcall(port); + } } } }