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
71 lines
2.3 KiB
Diff
71 lines
2.3 KiB
Diff
# HG changeset patch
|
|
# User Keir Fraser <keir@xen.org>
|
|
# Date 1286028195 -3600
|
|
# Node ID aed9fd361340158daf2d7160d1b367478b6312d6
|
|
# Parent 3518149c4d5d0d8ce7402a24f95d3badbecc1c17
|
|
x86: fix boot failure (regression from pre-4.0 IRQ handling changes)
|
|
References: bnc#583568, bnc#615206
|
|
|
|
With the change to index irq_desc[] by IRQ rather than by vector, the
|
|
prior implicit change of the used flow handler when altering the IRQ
|
|
routing path to go through the 8259A didn't work anymore, and hence
|
|
on boards needing the ExtINT delivery workaround failed to boot.
|
|
|
|
Make make_8259A_irq() a real function again, thus allowing the flow
|
|
handler to be changed there.
|
|
|
|
Also eliminate the generally superfluous and (at least theoretically)
|
|
dangerous hard coded setting of the flow handler for IRQ0: Earlier
|
|
code should have set this already based on information coming from
|
|
ACPI/MPS, and non-standard systems may e.g. have this IRQ level
|
|
triggered.
|
|
|
|
Signed-off-by: Jan Beulich <jbeulich@novell.com>
|
|
Tested-by: Markus Schuster <ml@markus.schuster.name>
|
|
|
|
--- a/xen/arch/x86/i8259.c
|
|
+++ b/xen/arch/x86/i8259.c
|
|
@@ -367,6 +367,12 @@ void __devinit init_8259A(int auto_eoi)
|
|
spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
}
|
|
|
|
+void __init make_8259A_irq(unsigned int irq)
|
|
+{
|
|
+ io_apic_irqs &= ~(1 << irq);
|
|
+ irq_to_desc(irq)->handler = &i8259A_irq_type;
|
|
+}
|
|
+
|
|
static struct irqaction __read_mostly cascade = { no_action, "cascade", NULL};
|
|
|
|
void __init init_IRQ(void)
|
|
--- a/xen/arch/x86/io_apic.c
|
|
+++ b/xen/arch/x86/io_apic.c
|
|
@@ -38,9 +38,6 @@
|
|
#include <io_ports.h>
|
|
#include <public/physdev.h>
|
|
|
|
-/* Different to Linux: our implementation can be simpler. */
|
|
-#define make_8259A_irq(irq) (io_apic_irqs &= ~(1<<(irq)))
|
|
-
|
|
int (*ioapic_renumber_irq)(int ioapic, int irq);
|
|
atomic_t irq_mis_count;
|
|
|
|
@@ -1929,7 +1926,6 @@ static inline void check_timer(void)
|
|
|
|
irq_desc[0].depth = 0;
|
|
irq_desc[0].status &= ~IRQ_DISABLED;
|
|
- irq_desc[0].handler = &ioapic_edge_type;
|
|
|
|
/*
|
|
* Subtle, code in do_timer_interrupt() expects an AEOI
|
|
--- a/xen/include/asm-x86/irq.h
|
|
+++ b/xen/include/asm-x86/irq.h
|
|
@@ -94,6 +94,7 @@ int i8259A_irq_pending(unsigned int irq)
|
|
void mask_8259A(void);
|
|
void unmask_8259A(void);
|
|
void init_8259A(int aeoi);
|
|
+void make_8259A_irq(unsigned int irq);
|
|
int i8259A_suspend(void);
|
|
int i8259A_resume(void);
|
|
|