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;
"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.
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;
>