|
|
@ -1,139 +0,0 @@ |
|
|
|
# --- ROCK-COPYRIGHT-NOTE-BEGIN --- |
|
|
|
# |
|
|
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|
|
|
# Please add additional copyright information _after_ the line containing |
|
|
|
# the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by |
|
|
|
# the ./scripts/Create-CopyPatch script. Do not edit this copyright text! |
|
|
|
# |
|
|
|
# ROCK Linux: rock-src/package/base/linux24/arch-x86-64-acpi-hotfix.patch |
|
|
|
# ROCK Linux is Copyright (C) 1998 - 2003 Clifford Wolf |
|
|
|
# |
|
|
|
# This program is free software; you can redistribute it and/or modify |
|
|
|
# it under the terms of the GNU General Public License as published by |
|
|
|
# the Free Software Foundation; either version 2 of the License, or |
|
|
|
# (at your option) any later version. A copy of the GNU General Public |
|
|
|
# License can be found at Documentation/COPYING. |
|
|
|
# |
|
|
|
# Many people helped and are helping developing ROCK Linux. Please |
|
|
|
# have a look at http://www.rocklinux.org/ and the Documentation/TEAM |
|
|
|
# file for details. |
|
|
|
# |
|
|
|
# --- ROCK-COPYRIGHT-NOTE-END --- |
|
|
|
|
|
|
|
|
|
|
|
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<<bit); |
|
|
|
|
|
|
|
- vector = io_apic_set_pci_routing(ioapic, ioapic_pin, irq);
|
|
|
|
+ vector = io_apic_set_pci_routing(ioapic, ioapic_pin, irq, edge_level, active_high_low);
|
|
|
|
if (vector) |
|
|
|
entry->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/ |
|
|
|
|