Re: G5 troubles booting powerpc-git (July 6)
From: Andrew Morton <hidden>
Date: 2006-07-07 08:52:51
On Fri, 07 Jul 2006 18:27:04 +1000 Benjamin Herrenschmidt [off-list ref] wrote:
On Fri, 2006-07-07 at 01:23 -0700, Andrew Morton wrote:quoted
On Fri, 07 Jul 2006 08:56:27 +1000 Benjamin Herrenschmidt [off-list ref] wrote:quoted
If you look at arch/powerpc/kernel/irq.c from line 479: /* Check if mapping already exist, if it does, call * host->ops->map() to update the flags */ virq = irq_find_mapping(host, hwirq); if (virq != IRQ_NONE) { pr_debug("irq: -> existing mapping on virq %d\n", virq); host->ops->map(host, virq, hwirq, flags); return virq; } What if you comment out the host->ops->map(...) call in there ? Does it help ?No, there's no change in behaviour.Doh ! Ok, looks like a different issue. Can you try this patch ? Please, do _not_ apply it to your tree as, as it is it will break non-powermac. It's some work I'm doing to clean up a couple of rough edges in my irq rework and fix a little misdesign. If it doesn't fix it, then it's indeed a completely different issue that I'll have to track down tomorrow hopefully.
Needs this to compile: diff -puN arch/powerpc/platforms/pseries/ras.c~a-fix arch/powerpc/platforms/pseries/ras.c
--- a/arch/powerpc/platforms/pseries/ras.c~a-fix
+++ a/arch/powerpc/platforms/pseries/ras.c@@ -93,8 +93,7 @@ static void request_ras_irqs(struct devi for (i = 0; i < opicplen; i++) { if (count > 15) break; - virqs[count] = irq_create_mapping(NULL, *(opicprop++), - IRQ_TYPE_NONE); + virqs[count] = irq_create_mapping(NULL, *(opicprop++)); if (virqs[count] == NO_IRQ) printk(KERN_ERR "Unable to allocate interrupt " "number for %s\n", np->full_name);
diff -puN arch/powerpc/platforms/pseries/xics.c~a-fix arch/powerpc/platforms/pseries/xics.c
--- a/arch/powerpc/platforms/pseries/xics.c~a-fix
+++ a/arch/powerpc/platforms/pseries/xics.c@@ -757,7 +757,7 @@ void xics_request_IPIs(void) { unsigned int ipi; - ipi = irq_create_mapping(xics_host, XICS_IPI, 0); + ipi = irq_create_mapping(xics_host, XICS_IPI); BUG_ON(ipi == NO_IRQ); /*
diff -puN drivers/char/hvsi.c~a-fix drivers/char/hvsi.c
--- a/drivers/char/hvsi.c~a-fix
+++ a/drivers/char/hvsi.c@@ -1299,7 +1299,7 @@ static int __init hvsi_console_init(void hp->inbuf_end = hp->inbuf; hp->state = HVSI_CLOSED; hp->vtermno = *vtermno; - hp->virq = irq_create_mapping(NULL, irq[0], 0); + hp->virq = irq_create_mapping(NULL, irq[0]); if (hp->virq == NO_IRQ) { printk(KERN_ERR "%s: couldn't create irq mapping for 0x%x\n", __FUNCTION__, irq[0]);
_ But it still doesn't help. These: arch/powerpc/sysdev/i8259.c:222: warning: initialization from incompatible pointer type arch/powerpc/platforms/pseries/xics.c:555: warning: initialization from incompatible pointer type arch/powerpc/platforms/pseries/xics.c:561: warning: initialization from incompatible pointer type look like super-serious box-killers. Hope I'm not using either of those.