From 98edf3689180aeb1eeca410ed7fddc0e6bf9d398 Mon Sep 17 00:00:00 2001 From: Rene Rebe Date: Tue, 26 Aug 2003 13:28:21 +0000 Subject: [PATCH] last minute x86_64 ACPI compile fix ... :-( git-svn-id: http://www.rocklinux.org/svn/rock-linux/trunk@1194 c5f82cb5-29bc-0310-9cd0-bff59a50e3bc --- .../linux24/arch-x86-64-acpi-hotfix.patch | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 package/base/linux24/arch-x86-64-acpi-hotfix.patch diff --git a/package/base/linux24/arch-x86-64-acpi-hotfix.patch b/package/base/linux24/arch-x86-64-acpi-hotfix.patch new file mode 100644 index 000000000..d69d12cb2 --- /dev/null +++ b/package/base/linux24/arch-x86-64-acpi-hotfix.patch @@ -0,0 +1,117 @@ + +Marcelo unfortunately added an last minute ACPI update that changed +ACPI interfaces and broke x86-64 compilation. I didn't catch it in +time, so 2.4.22 does not compile out of the box for AMD64. + +This patch fixes it. +You'll have to apply it when compiling 2.4.22 for x86-64 + +-Andi + +---------- + +Update x86-64 for the ACPI interrupt link changes. + +diff -u linux/arch/x86_64/kernel/io_apic.c-LINK linux/arch/x86_64/kernel/io_apic.c +--- linux/arch/x86_64/kernel/io_apic.c-LINK 2003-08-22 12:29:21.000000000 +0200 ++++ linux/arch/x86_64/kernel/io_apic.c 2003-08-22 12:38:16.000000000 +0200 +@@ -1762,7 +1762,7 @@ + } + + +-int io_apic_set_pci_routing (int ioapic, int pin, int irq) ++int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level ,int active_high_low) + { + struct IO_APIC_route_entry entry; + unsigned long flags; +@@ -1785,18 +1785,21 @@ + entry.dest_mode = INT_DELIVERY_MODE; + entry.dest.logical.logical_dest = TARGET_CPUS; + entry.mask = 1; /* Disabled (masked) */ +- entry.trigger = 1; /* Level sensitive */ +- entry.polarity = 1; /* Low active */ ++ entry.trigger = edge_level; ++ entry.polarity = active_high_low; + + add_pin_to_irq(irq, ioapic, pin); + + entry.vector = assign_irq_vector(irq); + + printk(KERN_DEBUG "IOAPIC[%d]: Set PCI routing entry (%d-%d -> 0x%x -> " +- "IRQ %d)\n", ioapic, +- mp_ioapics[ioapic].mpc_apicid, pin, entry.vector, irq); ++ "IRQ %d) Mode:%i Active:%i\n", ioapic, ++ mp_ioapics[ioapic].mpc_apicid, pin, entry.vector, irq, edge_level, active_high_low); + +- irq_desc[irq].handler = &ioapic_level_irq_type; ++ if (edge_level) ++ irq_desc[irq].handler = &ioapic_level_irq_type; ++ else ++ irq_desc[irq].handler = &ioapic_edge_irq_type; + + set_intr_gate(entry.vector, interrupt[irq]); + +diff -u linux/arch/x86_64/kernel/mpparse.c-LINK linux/arch/x86_64/kernel/mpparse.c +--- linux/arch/x86_64/kernel/mpparse.c-LINK 2003-08-22 12:29:21.000000000 +0200 ++++ linux/arch/x86_64/kernel/mpparse.c 2003-08-22 12:29:25.000000000 +0200 +@@ -923,7 +923,7 @@ + + ioapic_pin = irq - mp_ioapic_routing[ioapic].irq_start; + +- io_apic_set_pci_routing(ioapic, ioapic_pin, irq); ++ io_apic_set_pci_routing(ioapic, ioapic_pin, irq, 1, 1); + } + + #endif /*CONFIG_ACPI_HT_ONLY*/ +@@ -939,6 +939,8 @@ + int ioapic_pin = 0; + int irq = 0; + int idx, bit = 0; ++ int edge_level = 0; ++ int active_high_low = 0; + + /* + * Parsing through the PCI Interrupt Routing Table (PRT) and program +@@ -949,11 +951,14 @@ + + /* Need to get irq for dynamic entry */ + if (entry->link.handle) { +- irq = acpi_pci_link_get_irq(entry->link.handle, entry->link.index); ++ irq = acpi_pci_link_get_irq(entry->link.handle, entry->link.index, &edge_level, &active_high_low); + if (!irq) + continue; +- } else ++ } else { ++ edge_level = 1; ++ active_high_low = 1; + irq = entry->link.index; ++ } + + irq = entry->link.index; + ioapic = mp_find_ioapic(irq); +@@ -983,7 +988,7 @@ + + mp_ioapic_routing[ioapic].pin_programmed[idx] |= (1<irq = irq; + +diff -u linux/include/asm-x86_64/io_apic.h-LINK linux/include/asm-x86_64/io_apic.h +--- linux/include/asm-x86_64/io_apic.h-LINK 2003-08-22 12:29:21.000000000 +0200 ++++ linux/include/asm-x86_64/io_apic.h 2003-08-22 12:29:25.000000000 +0200 +@@ -148,6 +148,6 @@ + extern int io_apic_get_unique_id (int ioapic, int apic_id); + extern int io_apic_get_version (int ioapic); + extern int io_apic_get_redir_entries (int ioapic); +-extern int io_apic_set_pci_routing (int ioapic, int pin, int irq); ++extern int io_apic_set_pci_routing (int ioapic, int pin, int irq, int, int); + + #endif +- +To unsubscribe from this list: send the line "unsubscribe linux-kernel" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html +Please read the FAQ at http://www.tux.org/lkml/ +