diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-10-23 11:40:59 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-10-23 11:40:59 +0100 |
commit | 33d21c38e4aa82c075c75e70bca94040d096fb9e (patch) | |
tree | a90dc45d70ead3b2807f8eed0ac1d88703c58a96 /xen/include/asm-x86/softirq.h | |
parent | 869da4e975c494e77d9256461873abf5fc935983 (diff) | |
download | xen-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.h | 3 |
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__ */ |