2004-10-15 21:40:36

by H. J. Lu

[permalink] [raw]
Subject: 2.6.9 kexec patch causes kernel panic during reboot on x86-64

2.6.9 kexec patch adds a call to find_isa_irq_pin in disable_IO_APIC.
But find_isa_irq_pin is marked __init on x86-64, which leads to
kernel panic. This patch should fix it.


H.J.
--- linux-2.6.8/arch/x86_64/kernel/io_apic.c.init 2004-10-14 16:21:44.000000000 -0700
+++ linux-2.6.8/arch/x86_64/kernel/io_apic.c 2004-10-15 14:34:53.615495099 -0700
@@ -332,7 +332,7 @@ static int __init find_irq_entry(int api
/*
* Find the pin to which IRQ[irq] (ISA) is connected
*/
-static int __init find_isa_irq_pin(int irq, int type)
+static int find_isa_irq_pin(int irq, int type)
{
int i;


2004-10-15 21:47:42

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.9 kexec patch causes kernel panic during reboot on x86-64

"H. J. Lu" <[email protected]> wrote:
>
> 2.6.9 kexec patch adds a call to find_isa_irq_pin in disable_IO_APIC.
> But find_isa_irq_pin is marked __init on x86-64, which leads to
> kernel panic. This patch should fix it.
>
>
> H.J.
> --- linux-2.6.8/arch/x86_64/kernel/io_apic.c.init 2004-10-14 16:21:44.000000000 -0700
> +++ linux-2.6.8/arch/x86_64/kernel/io_apic.c 2004-10-15 14:34:53.615495099 -0700
> @@ -332,7 +332,7 @@ static int __init find_irq_entry(int api
> /*
> * Find the pin to which IRQ[irq] (ISA) is connected
> */
> -static int __init find_isa_irq_pin(int irq, int type)
> +static int find_isa_irq_pin(int irq, int type)
> {

Yup, there are several such fixups needed. See
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.9-rc4/2.6.9-rc4-mm1/broken-out/assign_irq_vector-section-fix.patch.

If you're testing kexec you might be better off using 2.6.9-rc4-mm1 (minus
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.9-rc4/2.6.9-rc4-mm1/broken-out/optimize-profile-path-slightly.patch)
because it has the latest kexec version (it had better be!) and whatever
fixups people have found against it.

2004-10-15 21:49:06

by Dave Jones

[permalink] [raw]
Subject: Re: 2.6.9 kexec patch causes kernel panic during reboot on x86-64

On Fri, Oct 15, 2004 at 02:40:13PM -0700, H. J. Lu wrote:
> 2.6.9 kexec patch adds a call to find_isa_irq_pin in disable_IO_APIC.
> But find_isa_irq_pin is marked __init on x86-64, which leads to
> kernel panic. This patch should fix it.

Andrew,
This is the x86-64 counterpart of the x86 patch I pushed
into mainline (mistakingly instead of -mm) last week.
Looks good to me.

Dave

> --- linux-2.6.8/arch/x86_64/kernel/io_apic.c.init 2004-10-14 16:21:44.000000000 -0700
> +++ linux-2.6.8/arch/x86_64/kernel/io_apic.c 2004-10-15 14:34:53.615495099 -0700
> @@ -332,7 +332,7 @@ static int __init find_irq_entry(int api
> /*
> * Find the pin to which IRQ[irq] (ISA) is connected
> */
> -static int __init find_isa_irq_pin(int irq, int type)
> +static int find_isa_irq_pin(int irq, int type)
> {
> int i;
>