xen/22222-x86-timer-extint.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

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);