Port-sparc archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Sun4/110 "Panic: Crazy Interrupts"



Hi,

> Now that the network issue is resolved, I'm running into a consistent
> kernel panic that happens when booting on my Sun4/110 workstation. I'm
> using a kernel built from the config in this Gist:
> https://gist.github.com/sfurtaw/28a600a282d0af955dc7275e2648c4e6
> 
> I've taken a video of what happens here:
> https://www.youtube.com/watch?v=Y6W9c9ul9KY

Good to see that you've made progress!

I'm trying to remember how we handle interrupts on sparc so I'm a bit rusty,
but the basic idea is that we consult the OBP or OFW for descriptions of
devices and build the interrupt mapping from there.  For example, on my SS2:

  OBP:
    ffea8d58: /audio@1,f7201000
    interrupts	0000000d
    intr	0000000d 00000000

  dmesg:
    audioamd0 at mainbus0 ioaddr 0xf7201000 ipl 13 softpri 4

(the ipl 0x0d/13 is from the OBP entry).

> Basically, the panic always shows up at this same point in the boot
> process, whether I load diskless over NFS or with my SCSI hard drive
> emulator. After it loads up the sparcvme device, it throws maybe 10
> stray interrupts before the panic.

If you look at the code:

  https://github.com/NetBSD/src/blob/trunk/sys/arch/sparc/sparc/intr.c#L97

if we get 10 unhandled interrupts we panic.  For the timing, I guess that
we enable interrupts after printing the last found device (VME) so the
problem isn't related to VME, but I could be wrong.

So, it looks like we're getting interrupts that we don't handle.  If I
understand correctly, we didn't install a handler because we didn't find
anything in OBP with interrupts at 0x04 or we don't have a driver in the
kernel.  Looking at the kernel config file, the framebuffer interrupts at
level 4:

  https://github.com/NetBSD/src/blob/trunk/sys/arch/sparc/conf/GENERIC#L623

for the BW2 and also lines 637 (CG4), 643 (CG6) and 648 (CG8).

Do you have a CG2, CG4 or CG8 in your 4/110?  These lines are all commented
out in GENERIC, but it looks like you're running a custom kernel.  As a
first step, try uncommenting those.  They are probably commented out due to
lack of testing, so we might need to fix bugs, but it might help.

Regards,

Julian

PS.  I put github links above, but you could also use NXR, e.g.:

  https://nxr.netbsd.org/xref/src/sys/arch/sparc/sparc/intr.c#97

-- 


Home | Main Index | Thread Index | Old Index