[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Merged.
Add more in_irq() checking. Add irq_enter()/irq_exit() where # HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID 7fd7f276bb38f08984fda45ef20ea8a085b482cd # Parent 98f00a4ee0b45cb1bbf62bc8aabe99a2df23d815 Add more in_irq() checking. Add irq_enter()/irq_exit() where they are missing in a few places. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- xen/arch/x86/domain.c | 3 +++ xen/arch/x86/smp.c | 8 +++++++- xen/arch/x86/traps.c | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff -r 98f00a4ee0b4 -r 7fd7f276bb38 xen/arch/x86/domain.c --- a/xen/arch/x86/domain.c Fri May 05 14:09:07 2006 +0100 +++ b/xen/arch/x86/domain.c Fri May 05 15:15:56 2006 +0100 @@ -753,7 +753,10 @@ int __sync_lazy_execstate(void) switch_required = (this_cpu(curr_vcpu) != current); if ( switch_required ) + { + ASSERT(current == idle_vcpu[smp_processor_id()]); __context_switch(); + } local_irq_restore(flags); diff -r 98f00a4ee0b4 -r 7fd7f276bb38 xen/arch/x86/smp.c --- a/xen/arch/x86/smp.c Fri May 05 14:09:07 2006 +0100 +++ b/xen/arch/x86/smp.c Fri May 05 15:15:56 2006 +0100 @@ -169,6 +169,7 @@ fastcall void smp_invalidate_interrupt(v { ack_APIC_irq(); perfc_incrc(ipis); + irq_enter(); if ( !__sync_lazy_execstate() ) { if ( flush_va == FLUSHVA_ALL ) @@ -177,6 +178,7 @@ fastcall void smp_invalidate_interrupt(v local_flush_tlb_one(flush_va); } cpu_clear(smp_processor_id(), flush_cpumask); + irq_exit(); } void __flush_tlb_mask(cpumask_t mask, unsigned long va) @@ -335,6 +337,8 @@ fastcall void smp_call_function_interrup if ( !cpu_isset(smp_processor_id(), call_data->selected) ) return; + irq_enter(); + if ( call_data->wait ) { (*func)(info); @@ -347,4 +351,6 @@ fastcall void smp_call_function_interrup atomic_inc(&call_data->started); (*func)(info); } -} + + irq_exit(); +} diff -r 98f00a4ee0b4 -r 7fd7f276bb38 xen/arch/x86/traps.c --- a/xen/arch/x86/traps.c Fri May 05 14:09:07 2006 +0100 +++ b/xen/arch/x86/traps.c Fri May 05 15:15:56 2006 +0100 @@ -674,6 +674,8 @@ asmlinkage int do_page_fault(struct cpu_ unsigned long addr, fixup; int rc; + ASSERT(!in_irq()); + __asm__ __volatile__ ("mov %%cr2,%0" : "=r" (addr) : ); DEBUGGER_trap_entry(TRAP_page_fault, regs); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |