[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] x86-64 linux: properly exit idle mode from evtchn_do_upcall()
# HG changeset patch # User cl349@xxxxxxxxxxxxxxxxxxxx # Node ID a67085a3e65d7a8ff8afaa2fbe6b315027b827fb # Parent 1a2e7cd58ca0df9a9c10631e60474f0dc0dfc659 x86-64 linux: properly exit idle mode from evtchn_do_upcall() Add a call to exit_idle() when evtchn_do_upcall() calls evtchn_device_upcall() instead of do_IRQ(). From: Jan Beulich <JBeulich@xxxxxxxxxx> Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx> diff -r 1a2e7cd58ca0 -r a67085a3e65d linux-2.6-xen-sparse/drivers/xen/core/evtchn.c --- a/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c Wed Feb 8 15:31:38 2006 +++ b/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c Wed Feb 8 15:36:49 2006 @@ -123,8 +123,10 @@ #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 <asm/idle.h> #define IRQ_REG orig_rax #endif #define do_IRQ(irq, regs) do { \ @@ -170,8 +172,10 @@ 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); + } } } } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |