On Mon, Feb 02, 2009 at 02:31:38PM -0700, Myles Watson wrote:
Got noisy pic1 irq 00000000 ...
I'm trying to get Coreboot+SeaBIOS to boot the grub installed on my hard drive. I have a Tyan s2895.
Sometimes it gets past this, sometimes it doesn't. Is there a workaround?
This looks like there is something wrong with the irq routing in coreboot. A hardware irq handler is being called, but the pic doesn't report any irqs pending.
Technically, seabios shouldn't be masking irqs - so, it is possible that is causing a problem if your board is also running option roms (eg, network or disk).
We've also seen issues with option roms getting confused by coreboot not setting the PCI_INTERRUPT_LINE setting.
Finally, if the failures are sporadic, I guess it could be the reporting itself that is causing a problem. You could try the patch below (which also disables masking).
-Kevin
--- a/src/pic.c +++ b/src/pic.c @@ -34,20 +34,24 @@ pic_setup() void VISIBLE16 handle_hwpic1(struct bregs *regs) { +#if 0 u8 isr = get_pic1_isr(); dprintf(DEBUG_ISR_hwpic1, "Got noisy pic1 irq %x\n", isr); isr &= ~PIC1_IRQ2; // don't ever mask the cascaded irq if (isr) mask_pic1(isr); +#endif eoi_pic1(); }
void VISIBLE16 handle_hwpic2(struct bregs *regs) { +#if 0 u8 isr = get_pic2_isr(); dprintf(DEBUG_ISR_hwpic2, "Got noisy pic2 irq %x\n", isr); if (isr) mask_pic2(isr); +#endif eoi_pic2(); }