Subject: Re: -4/470?
To: None <port-sparc@NetBSD.ORG>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: port-sparc
Date: 02/21/1997 13:20:56
>> The 1.2 INSTALL document states that the -4/400 series is not fully
>> supported, and indeed, here's what I see on a 470: [Watchdog reset
>> before even the copyright message comes out]
> For the record, you need a kernel built with `options MMU_3L' to get
> 4/400 support.

Okay, I've tried this.

>> Has this changed in -current?  Is anyone working on it?  What more
>> is needed to get it functioning (not necessarily well)?
> Last time I booted NetBSD on a 4/490 it would properly complete
> auto-configuration.  I had no root filesystem to go any further; an
> attempt to boot diskless failed on `DMA underrun' errors from `ie0',
> probably because it needs IOCACHE support.

I just tried playing with it on a 4/470.  Initially it fell over during
autoconfig thusly

....
vmel0 at mainbus0
vmes0 at mainbus0
ie2 at vmes0 addr 0xff31ff02 vec 0x76data fault: pc=f80ed838 addr=fe024742 ser=80<INVAL>
panic: kernel fault
Stopped at      _Debugger+0x4:  jmpl            [%o7 + 0x8], %g0
db> 

When I yanked ie2 (ie1-ie4, actually) out of the kernel config file and
tried again, it got farther:

[twirler, copyright, blah blah, scrolled off screen before I could
ten-finger copy it]

real mem = 33529856
avail mem = 28082176
using 409 buffers containing 3350528 bytes of memory
bootpath: /vmes0/si0/sd@0,0
mainbus0 (root)
cpu0 at mainbus0: SUN-4/400 series (L64812 or ACT8847 FPU)
cpu0: 131072 byte write-back, 32 bytes/line, sw flush cache enabled
obio0 at mainbus0
clock0 at obio0 addr 0xf2000000: mk48t02 (eeprom)
timer0 at obio0 addr 0xef000000 delay constant 14
memreg0 at obio0 addr 0xf4000000
zs0 at obio0 addr 0xf1000000 pri 12, softpri 6
zs0a: console i/o
zs1 at obio0 addr 0xf0000000 pri 12, softpri 6
ie0 at obio0 addr 0xf6000000 pri 6 address 08:00:20:09:d9:1a, type onboard
vmel0 at mainbus0
vmes0 at mainbus0
si0 at vmes0 addr 0xff200000 vec 0x40 pri 3
si0: options=1<DMA>
scsibus0 at si0
sd0 at scsibus0 targ 0 lun 0: <FUJITSU, M2266S-512, 001F> SCSI2 0/direct fixed
sd0: 1029MB, 1658 cyl, 15 head, 84 sec, 512 bytes/sec x 2107704 sectors
root device (default sd0a): 
swap device (default sd0b): 
root on sd0a
init: copying out flags `-s' 3
init: copying out path `/sbin/init' 11
panic: region_free: pm != me_pmap
Stopped at      _Debugger+0x4:  jmpl            [%o7 + 0x8], %g0
db> 

So I typed "trace" and "ps", and got

db> trace
_region_free
_pmap_page_protect4_4c
_vm_fault
_mem_access_fault
normal_mem_fault
_copyout(f9ef0098, f8158ca8, f861a000, 0, 0, 0)
_trap(5, 11100085, 3670, f9ef1fb0, 11100085, f9ef1fb0)
slowtrap(2a000, ffffffff, 24d94, f8020598, 0, f9ef1fb0)
db> ps
  pid proc     addr     uid  ppid  pgrp  flag stat em  comm         wchan
    3 0xf8625e00 0xf9ef4000   0     1     1  000004  2  netbsd  init
    2 0xf8602400 0xf9ef2000   0     0     0  000204  3  netbsd  pagedaemon   thrd_sleep 0xf81506e4
    1 0xf8602600 0xf9ef0000   0     0     1  004004  2  netbsd  init
    0 0xf8152c88 0xf8133fe0   0    -1     0  000204  3  netbsd  swapper   scheduler 0xf8152c88
db> 

I dunno if seeing this helps anyone any; I'll be investigating a bit
more myself, but in case this says anything to anyone....

I'm working with a basically 1.2 system.  The MMU_3L code is clearly
not well tested; I had to add a couple of lines to sparc/pmap.c to even
get it to compile:

--- OLD/sys/arch/sparc/sparc/pmap.c     Thu Jan  1 00:00:00 1970
+++ NEW/sys/arch/sparc/sparc/pmap.c     Thu Jan  1 00:00:00 1970
@@ -3653,8 +3653,10 @@
 #ifdef MMU_3L
                TAILQ_INIT(&pm->pm_reglist);
                if (mmu_3l)
+{ int i;
                    for (i = NUREG; --i >= 0;)
                        pm->pm_regmap[i].rg_smeg = reginval;
+}
 #endif
        }
 #if defined(SUN4M)

so it's probably just a matter of debugging...but I would take a while
over it, since I've got zero familiarity with the SPARC pmap stuff.

					der Mouse

			       mouse@rodents.montreal.qc.ca
		     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B