[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-4.0-testing] x86: irq_enter()/irq_exit() covers all of do_IRQ().
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1285010157 -3600 # Node ID 1a18ed0a9708ea7b628bf7347442e0cfa1500631 # Parent 6e0ffcd2d9e0c7f2e0cc753e726e07e60b449f69 x86: irq_enter()/irq_exit() covers all of do_IRQ(). Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> xen-unstable changeset: 22175:ee3c64073231 xen-unstable date: Sat Sep 18 08:31:55 2010 +0100 --- xen/arch/x86/irq.c | 12 +++++------- 1 files changed, 5 insertions(+), 7 deletions(-) diff -r 6e0ffcd2d9e0 -r 1a18ed0a9708 xen/arch/x86/irq.c --- a/xen/arch/x86/irq.c Fri Sep 17 17:06:57 2010 +0100 +++ b/xen/arch/x86/irq.c Mon Sep 20 20:15:57 2010 +0100 @@ -539,6 +539,8 @@ asmlinkage void do_IRQ(struct cpu_user_r set_irq_regs(old_regs); return; } + + irq_enter(); desc = irq_to_desc(irq); @@ -573,14 +575,10 @@ asmlinkage void do_IRQ(struct cpu_user_r desc->rl_quantum_start = now; } - irq_enter(); tsc_in = tb_init_done ? get_cycles() : 0; __do_IRQ_guest(irq); TRACE_3D(TRC_TRACE_IRQ, irq, tsc_in, get_cycles()); - irq_exit(); - spin_unlock(&desc->lock); - set_irq_regs(old_regs); - return; + goto out_no_end; } desc->status &= ~IRQ_REPLAY; @@ -599,20 +597,20 @@ asmlinkage void do_IRQ(struct cpu_user_r while ( desc->status & IRQ_PENDING ) { desc->status &= ~IRQ_PENDING; - irq_enter(); spin_unlock_irq(&desc->lock); tsc_in = tb_init_done ? get_cycles() : 0; action->handler(irq, action->dev_id, regs); TRACE_3D(TRC_TRACE_IRQ, irq, tsc_in, get_cycles()); spin_lock_irq(&desc->lock); - irq_exit(); } desc->status &= ~IRQ_INPROGRESS; out: desc->handler->end(irq); + out_no_end: spin_unlock(&desc->lock); + irq_exit(); set_irq_regs(old_regs); } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |