lkml.org 
[lkml]   [2006]   [Sep]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch] genirq/MSI: restore __do_IRQ() compat logic temporarily
    On 09:50 Tue 12 Sep 2006, Ingo Molnar wrote:
    > * Eric W. Biederman <ebiederm@xmission.com> wrote:
    > > Ok. Looking at it I almost certain the problem is that
    > > we lost the hunk of code removed in: 266f0566761cf88906d634727b3d9fc2556f5cbd
    > > i386: Fix stack switching in do_IRQ
    > >
    > > - if (!irq_desc[irq].handle_irq) {
    > > - __do_IRQ(irq, regs);
    > > - goto out_exit;
    > > - }
    > >
    > > The msi code does not yet set desc->handle_irq. So when we attempt to
    > > call it we get a NULL pointer dereference.
    >
    > indeed ... We thought the MSI cleanup went all the way with the irqchips
    > conversion, that's we suggested to Andrew to drop this chunk in -mm too.
    >
    > > Except for adding that hunk back in and breaking 4K stacks I don't
    > > have an immediate fix.
    >
    > i've attached a bandaid patch for -mm below. Brandon, does this solve
    > the crash you are seeing?

    Indeed- this patch makes the system bootable.

    I will keep up on the -mm tree as this conversion continues and let all
    of you know if things break again :-)

    Thanks,

    Brandon

    > ------------------>
    > Subject: [patch] genirq/MSI: restore __do_IRQ() compat logic temporarily
    > From: Ingo Molnar <mingo@elte.hu>
    >
    > restore the __do_IRQ() compat logic temporarily, until the MSI
    > genirq conversion has been completed.
    >
    > disable 4KSTACKS temporarily too.
    >
    > Signed-off-by: Ingo Molnar <mingo@elte.hu>
    >
    > ---
    > arch/i386/Kconfig.debug | 4 ++++
    > arch/i386/kernel/irq.c | 5 +++++
    > 2 files changed, 9 insertions(+)
    >
    > Index: linux-2.6.18-rc6-mm1/arch/i386/Kconfig.debug
    > ===================================================================
    > --- linux-2.6.18-rc6-mm1.orig/arch/i386/Kconfig.debug
    > +++ linux-2.6.18-rc6-mm1/arch/i386/Kconfig.debug
    > @@ -56,8 +56,12 @@ config DEBUG_RODATA
    > portion of the kernel code won't be covered by a 2MB TLB anymore.
    > If in doubt, say "N".
    >
    > +#
    > +# FIXME: Disabled temporarily until the MSI genirq conversion is done!
    > +#
    > config 4KSTACKS
    > bool "Use 4Kb + 4Kb for kernel stacks instead of 8Kb" if DEBUG_KERNEL
    > + depends on n
    > default y
    > help
    > If you say Y here the kernel will use a 4Kb stacksize for the
    > Index: linux-2.6.18-rc6-mm1/arch/i386/kernel/irq.c
    > ===================================================================
    > --- linux-2.6.18-rc6-mm1.orig/arch/i386/kernel/irq.c
    > +++ linux-2.6.18-rc6-mm1/arch/i386/kernel/irq.c
    > @@ -83,6 +83,10 @@ fastcall unsigned int do_IRQ(struct pt_r
    > }
    > #endif
    >
    > + if (!irq_desc[irq].handle_irq) {
    > + __do_IRQ(irq, regs);
    > + goto out_exit;
    > + }
    > #ifdef CONFIG_4KSTACKS
    >
    > curctx = (union irq_ctx *) current_thread_info();
    > @@ -123,6 +127,7 @@ fastcall unsigned int do_IRQ(struct pt_r
    > #endif
    > desc->handle_irq(irq, desc, regs);
    >
    > +out_exit:
    > irq_exit();
    >
    > return 1;

    -
    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/

    \
     
     \ /
      Last update: 2006-09-12 19:21    [W:0.028 / U:0.352 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site