|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] x86-64 linux: properly exit idle mode from evtchn_do_upc
# 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
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] x86-64 linux: properly exit idle mode from evtchn_do_upcall(),
Xen patchbot -unstable <=
|
|
|
|
|