diff options
Diffstat (limited to 'trunk/2.6.22/20050_xen3-patch-2.6.22.11-12.patch1')
-rw-r--r-- | trunk/2.6.22/20050_xen3-patch-2.6.22.11-12.patch1 | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/trunk/2.6.22/20050_xen3-patch-2.6.22.11-12.patch1 b/trunk/2.6.22/20050_xen3-patch-2.6.22.11-12.patch1 new file mode 100644 index 0000000..a82be3e --- /dev/null +++ b/trunk/2.6.22/20050_xen3-patch-2.6.22.11-12.patch1 @@ -0,0 +1,88 @@ +Subject: Linux 2.6.22.12 +From: Greg Kroah-Hartman <gregkh@suse.de> + +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +Automatically created from "patches.kernel.org/patch-2.6.22.11-12" by xen-port-patches.py + +Index: 10.3-2007-11-26/arch/i386/kernel/io_apic-xen.c +=================================================================== +--- 10.3-2007-11-26.orig/arch/i386/kernel/io_apic-xen.c 2007-11-26 14:07:48.000000000 +0100 ++++ 10.3-2007-11-26/arch/i386/kernel/io_apic-xen.c 2007-11-26 14:07:57.000000000 +0100 +@@ -1313,12 +1313,15 @@ static struct irq_chip ioapic_chip; + static void ioapic_register_intr(int irq, int vector, unsigned long trigger) + { + if ((trigger == IOAPIC_AUTO && IO_APIC_irq_trigger(irq)) || +- trigger == IOAPIC_LEVEL) ++ trigger == IOAPIC_LEVEL) { ++ irq_desc[irq].status |= IRQ_LEVEL; + set_irq_chip_and_handler_name(irq, &ioapic_chip, + handle_fasteoi_irq, "fasteoi"); +- else ++ } else { ++ irq_desc[irq].status &= ~IRQ_LEVEL; + set_irq_chip_and_handler_name(irq, &ioapic_chip, + handle_edge_irq, "edge"); ++ } + set_intr_gate(vector, interrupt[irq]); + } + #else +Index: 10.3-2007-11-26/arch/x86_64/kernel/io_apic-xen.c +=================================================================== +--- 10.3-2007-11-26.orig/arch/x86_64/kernel/io_apic-xen.c 2007-11-26 14:07:48.000000000 +0100 ++++ 10.3-2007-11-26/arch/x86_64/kernel/io_apic-xen.c 2007-11-26 14:07:57.000000000 +0100 +@@ -758,12 +758,15 @@ static struct irq_chip ioapic_chip; + + static void ioapic_register_intr(int irq, unsigned long trigger) + { +- if (trigger) ++ if (trigger) { ++ irq_desc[irq].status |= IRQ_LEVEL; + set_irq_chip_and_handler_name(irq, &ioapic_chip, + handle_fasteoi_irq, "fasteoi"); +- else ++ } else { ++ irq_desc[irq].status &= ~IRQ_LEVEL; + set_irq_chip_and_handler_name(irq, &ioapic_chip, + handle_edge_irq, "edge"); ++ } + } + #else + #define ioapic_register_intr(irq,trigger) ((void)0) +Index: 10.3-2007-11-26/arch/x86_64/mm/init-xen.c +=================================================================== +--- 10.3-2007-11-26.orig/arch/x86_64/mm/init-xen.c 2007-11-26 14:07:48.000000000 +0100 ++++ 10.3-2007-11-26/arch/x86_64/mm/init-xen.c 2007-11-26 14:08:42.000000000 +0100 +@@ -1217,11 +1217,3 @@ int in_gate_area_no_task(unsigned long a + { + return (addr >= VSYSCALL_START) && (addr < VSYSCALL_END); + } +- +-#ifndef CONFIG_XEN +-void *alloc_bootmem_high_node(pg_data_t *pgdat, unsigned long size) +-{ +- return __alloc_bootmem_core(pgdat->bdata, size, +- SMP_CACHE_BYTES, (4UL*1024*1024*1024), 0); +-} +-#endif +Index: 10.3-2007-11-26/arch/x86_64/mm/pageattr-xen.c +=================================================================== +--- 10.3-2007-11-26.orig/arch/x86_64/mm/pageattr-xen.c 2007-11-26 14:07:48.000000000 +0100 ++++ 10.3-2007-11-26/arch/x86_64/mm/pageattr-xen.c 2007-11-26 14:07:57.000000000 +0100 +@@ -432,9 +432,14 @@ void global_flush_tlb(void) + struct page *pg, *next; + struct list_head l; + +- down_read(&init_mm.mmap_sem); ++ /* ++ * Write-protect the semaphore, to exclude two contexts ++ * doing a list_replace_init() call in parallel and to ++ * exclude new additions to the deferred_pages list: ++ */ ++ down_write(&init_mm.mmap_sem); + list_replace_init(&deferred_pages, &l); +- up_read(&init_mm.mmap_sem); ++ up_write(&init_mm.mmap_sem); + + flush_map(&l); + |