Messages in this thread | | | Date | Tue, 12 Sep 2006 07:44:57 -0500 | From | Brandon Philips <> | Subject | Re: [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/
| |