08a77ed8c4
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
60 lines
1.6 KiB
Diff
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);
|
|
}
|
|
|