Port-sparc archive

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

Re: Sun4/110 "Panic: Crazy Interrupts"



Thanks Julian!

I've just checked my hardware from my SunOS 4 installation - I do have
a CG4 framebuffer installed. After uncommenting the lines and
re-compiling, I get a data error when the CG4 device gets loaded. Here
is the line when it panics:

```
[1.0000000] cgfour0 at obio0 addr 0xb300000 level 4: cgfour/p4, 1152 x 900cpu
0: data fault: pc=0xf0012090 addr=0xfe04800 ser=0x8002<WRITE,SZERR>
[1.0000000] panic: kernel fault
[1.0000000] halted
```

Regards,
Samuel

On Mon, Apr 15, 2024 at 8:51 AM Julian Coleman <jdc%coris.org.uk@localhost> wrote:
>
> 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