Port-sparc archive

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

Re: Severe problems with sun4



On 23 July 2010 12:42, Christian Corti
<corti%informatik.uni-stuttgart.de@localhost> wrote:
> On Fri, 16 Jul 2010, Christian Corti wrote:
>>
>> is it possible that the sun4 port has some issues? Fact is that support of
>> VME bus SUNs (a 4/260 in my case) seems to be utterly broken. The main
>> problem I have is with the Xylogics drivers (xy, but xd seems to be almost
>> identical), they always create kernel panics while attaching the controller.
>
> More problems:
> First I fixed the xy driver (which was painful due to the uncomprehensible
> code) and now it seems that NetBSD is broken in respect with VME bus
> interrupts. This also explains why I can't use any SCSI disk, too. The
> kernel panics when a VME interrupt is generated:
> [...]
> si0 at vme0 addr 200000 irq 2 vector 40
> si0: options=7<RESELECT,DMA_INTR,DMA>
> scsibus0 at si0: 8 targets, 8 luns per target
> timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
> scsibus0: waiting 2 seconds for devices to settle...
> sd0 at scsibus0 target 0 lun 0: <MAXTOR, XT-4380S, B3C> disk fixed
> vmeintr4: level 2 vector 0x40 [**]
> trap type 0x7: pc=0xf014492c npc=0xf0144930 psr=8000c6<S,PS>
> kernel: alignment fault trap
> Stopped at   Ânetbsd:vmeintr4+0x90:  ld       Â[%i0 + %g0], %g1
> [...]
>
> [**] this output has been introduced by me in vme_machdep.c in function
> Â Â vmeintr4
>
> Taking SCSI out of the kernel, it panics when the Xylogics controller
> generates an interrupt:
>
> [...]
> xyc0 at vme0 addr ee40 irq 2 vector 48: Xylogics 450/451
> xy0 at xyc0 drive 0: ready (drive type 3)
> xy0: <Fujitsu-M2344 cyl 622 alt 2 hd 27 sec 67>, pcyl 624
> xy0: 549MB, 622 cyl, 27 head, 67 sec, 512 bytes/sec
> xy1 at xyc0 drive 1: ready
> xy1: reading disk label failed: Sector count zero
> [...]
> # disklabel xy1
> xy1 at xyc0 drive 1: readyvmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
> vmeintr4: level 2 vector 0x48
>
> Watchdog reset.
>>
>
> Simple question: why isn't the interrupt handler xycintr() called? I know
> this because I've put some debug statements in there.
> So, where should I start fixing all that stuff? Why is it broken anyways?
> Is it possible that vmeintr4 is the culprit and that it hasn't worked since
> ages?

Its quite possible that the people who have been updating NetBSD/sparc
over the past few years have not had access to a vme based systems, so
the code has bitrotted. Certainly most of those drivers were even
written before bus_space(9)!

If you have time it could well be worth test booting older NetBSD
releases until you find one that works and then to check how the
interrupt code works there :)


Home | Main Index | Thread Index | Old Index