2.6.8.1 modprobe tg3 oopses
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 2.6.8.1 modprobe tg3 oopses
| Subject: 2.6.8.1 "modprobe tg3" oopses with gcc 3.4.1 | | | I get this when trying to modprobe tg3 on an Acer Aspire 1500 notebook (32bit | mode) when the kernel [tried 2.6.8.1 and 2.6.8.1-mm1] is compiled with gcc | 3.4.1 (3.3.4 works):
I wouldn't expect this to be compiler-dependent. There's an obvious problem with add_pin_to_irq(). It shouldn't be __init. Patch below. (I thought that I had already mailed this one time, but I don't see it anywhere.)
| CPU: 0 | EIP: 0060:[<c03ba270>] Not tainted VLI | EFLAGS: 00210216 (2.6.8-1ark) | EIP is at add_pin_to_irq+0x0/0x60 <<<<< code is gone
--
add_pin_to_irq() should not be __init; it is used after init code.
diffstat:=
arch/i386/kernel/io_apic.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-)
arch/i386/kernel/io_apic.c renamed from arch/i386/kernel/io_apic.c~ioapic_non_init +1 -1
@@ -85,7 +85,7 @@ int vector_irq[NR_VECTORS] = { [0 ... NR* shared ISA-space IRQs, so we have to support them. We are super * fast in the common case, and fast for shared ISA-space IRQs. */ -static void __init add_pin_to_irq (unsigned int irq,int apic,int pin) +static void add_pin_to_irq (unsigned int irq,int apic,int pin) {static int first_free_entry =NR_IRQS ;struct irq_pin_list *entry = irq_2_pin + irq;
Quoted 6 lines · Randy.Dunlap
I wouldn't expect this to be compiler-dependent. There's an obvious problem with
add_pin_to_irq(). It shouldn't be__init. Patch below. (I thought that I had already mailed this one time, but I don't see it anywhere.)
arch/i386/kernel/io_apic.c| 2 +-
There also needs to be a similar patch for arch/x86_64/kernel/io_apic.c. Doing this fixed the oops for me.
Thanks,
-tduffy
x86_64/kernel/io_apic.c renamed from x86_64/kernel/io_apic.c.orig +1 -1
@@ -80,7 +80,7 @@* shared ISA-space IRQs, so we have to support them. We are super * fast in the common case, and fast for shared ISA-space IRQs. */ -static void __init add_pin_to_irq (unsigned int irq,int apic,int pin) +static void add_pin_to_irq (unsigned int irq,int apic,int pin) {static int first_free_entry =NR_IRQS ;struct irq_pin_list *entry = irq_2_pin + irq;
z