OpenCloudOS-Kernel/arch/x86/xen
Jeremy Fitzhardinge 168d2f464a xen: save previous spinlock when blocking
A spinlock can be interrupted while spinning, so make sure we preserve
the previous lock of interest if we're taking a lock from within an
interrupt handler.

We also need to deal with the case where the blocking path gets
interrupted between testing to see if the lock is free and actually
blocking.  If we get interrupted there and end up in the state where
the lock is free but the irq isn't pending, then we'll block
indefinitely in the hypervisor.  This fix is to make sure that any
nested lock-takers will always leave the irq pending if there's any
chance the outer lock became free.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Acked-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-08-21 13:52:57 +02:00
..
Kconfig x86, xen, power: fix up config dependencies on PM 2008-07-17 19:25:20 +02:00
Makefile xen: compile irq functions without -pg for ftrace 2008-07-31 12:39:39 +02:00
enlighten.c xen: clean up domain mode predicates 2008-08-20 12:40:07 +02:00
grant-table.c xen: make grant table arch portable 2008-04-24 23:57:32 +02:00
irq.c xen: compile irq functions without -pg for ftrace 2008-07-31 12:39:39 +02:00
mmu.c xen: add xen_ prefixes to make tracing with ftrace easier 2008-08-20 12:40:08 +02:00
mmu.h xen64: allocate and manage user pagetables 2008-07-16 11:05:38 +02:00
multicalls.c xen: print backtrace on multicall failure 2008-07-16 10:55:21 +02:00
multicalls.h xen: add mechanism to extend existing multicalls 2008-06-25 15:17:34 +02:00
setup.c x86: xen: no need to disable vdso32 2008-07-16 11:08:44 +02:00
smp.c x86: split spinlock implementations out into their own files 2008-07-24 12:31:51 +02:00
spinlock.c xen: save previous spinlock when blocking 2008-08-21 13:52:57 +02:00
suspend.c xen: add xen_arch_resume()/xen_timer_resume hook for ia64 support 2008-07-16 10:55:50 +02:00
time.c x86: rename paravirtualized TSC functions 2008-07-09 07:43:28 +02:00
vdso.h i386: move xen 2007-10-11 11:16:51 +02:00
xen-asm_32.S xen: compile irq functions without -pg for ftrace 2008-07-31 12:39:39 +02:00
xen-asm_64.S xen: compile irq functions without -pg for ftrace 2008-07-31 12:39:39 +02:00
xen-head.S xen64: add xen-head code to head_64.S 2008-07-16 10:58:41 +02:00
xen-ops.h xen: compile irq functions without -pg for ftrace 2008-07-31 12:39:39 +02:00