xen/22175-x86-irq-enter-exit.patch
Charles Arnold 08a77ed8c4 - fate#310510 - fix xenpaging
xenpaging.tools_xenpaging_cleanup.patch

- fate#310510 - fix xenpaging
  xenpaging.mem_event_check_ring-free_requests.patch

- install /etc/xen/examples/xentrace_formats.txt to get human readable
  tracedata if xenalyze is not used

- fate#310510 - fix xenpaging
  xenpaging.autostart_delay.patch
  xenpaging.blacklist.patch
  xenpaging.MRU_SIZE.patch
  remove xenpaging.hacks.patch, realmode works

- Upstream patches from Jan including fixes for the following bugs
  bnc#583568 - Xen kernel is not booting
  bnc#615206 - Xen kernel fails to boot with IO-APIC problem
  bnc#640773 - Xen kernel crashing right after grub
  bnc#643477 - issues with PCI hotplug/hotunplug to Xen driver domain
  22223-vtd-igd-workaround.patch
  22222-x86-timer-extint.patch
  22214-x86-msr-misc-enable.patch
  22213-x86-xsave-cpuid-check.patch
  22194-tmem-check-pv-mfn.patch
  22177-i386-irq-safe-map_domain_page.patch
  22175-x86-irq-enter-exit.patch
  22174-x86-pmtimer-accuracy.patch
  22160-Intel-C6-EOI.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=76
2010-10-20 21:00:35 +00:00

60 lines
1.6 KiB
Diff

# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1284795115 -3600
# Node ID ee3c640732311ef6bc5e2de56c3b4b753cb020fa
# Parent 632c02167f97bb2bd25571b2780425b9b75949b4
x86: irq_enter()/irq_exit() covers all of do_IRQ().
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -535,6 +535,8 @@ asmlinkage void do_IRQ(struct cpu_user_r
return;
}
+ irq_enter();
+
desc = irq_to_desc(irq);
spin_lock(&desc->lock);
@@ -568,14 +570,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;
@@ -594,20 +592,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);
}