aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/softirq.h
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-10-23 11:40:59 +0100
committerKeir Fraser <keir.fraser@citrix.com>2008-10-23 11:40:59 +0100
commit33d21c38e4aa82c075c75e70bca94040d096fb9e (patch)
treea90dc45d70ead3b2807f8eed0ac1d88703c58a96 /xen/include/asm-x86/softirq.h
parent869da4e975c494e77d9256461873abf5fc935983 (diff)
downloadxen-33d21c38e4aa82c075c75e70bca94040d096fb9e.tar.gz
xen-33d21c38e4aa82c075c75e70bca94040d096fb9e.tar.bz2
xen-33d21c38e4aa82c075c75e70bca94040d096fb9e.zip
x86, hvm: Move return-to-guest timer and interrupt cranking logic
outside of IRQ-safe context. This allows us to safely take non-IRQ-safe spinlocks. The drawback is that {vmx,svm}_intr_assist() now races new event notifications delivered by IRQ or IPI. We close down this race by having vcpu_kick() send a dummy softirq -- this gets picked up in IRQ-sage context and will cause retry of *_intr_assist(). We avoid delivering the softirq where possible by avoiding it when we are running in the non-IRQ context of the VCPU to be kicked. Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/include/asm-x86/softirq.h')
-rw-r--r--xen/include/asm-x86/softirq.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/xen/include/asm-x86/softirq.h b/xen/include/asm-x86/softirq.h
index 149dea1543..84b540587d 100644
--- a/xen/include/asm-x86/softirq.h
+++ b/xen/include/asm-x86/softirq.h
@@ -3,7 +3,8 @@
#define NMI_MCE_SOFTIRQ (NR_COMMON_SOFTIRQS + 0)
#define TIME_CALIBRATE_SOFTIRQ (NR_COMMON_SOFTIRQS + 1)
+#define VCPU_KICK_SOFTIRQ (NR_COMMON_SOFTIRQS + 2)
-#define NR_ARCH_SOFTIRQS 2
+#define NR_ARCH_SOFTIRQS 3
#endif /* __ASM_SOFTIRQ_H__ */