Subject: R5K L2 Cache problem again
To: None <port-sgimips@netbsd.org>
From: sgimips NetBSD list <sgimips@mrynet.com>
List: port-sgimips
Date: 12/17/2001 16:53:27
Well, I have a complete distribution with new CD image for the INDYs
ready to go, but...

I can't build a working kernel again for the INDY R5000.
The kernel works fine on the R4400.  Appears to be L2 Cache problem again.
I'm already disabling the L2 Cache forcefully with code previously
suggested by Chris Sekiya:
	--- /usr/src/sys/arch/sgimips/sgimips/ip22.c    Fri Nov 16 05:11:55 2001
	+++ ip22.c      Sun Nov 25 22:11:04 2001
	@@ -452,11 +452,15 @@
         	* If we don't have an R4000-style cache, then initialize the
         	* IP22 SysAD L2 cache.
         	*/
	+#if defined(L2_CACHE_ACTUALLY_WORKS)
        	if (mips_sdcache_line_size == 0) {
	+#endif
                	/* XXX */
                	printf("%s: disabling IP22 SysAD L2 cache\n", self->dv_xname);
                	ip22_sdcache_disable();
	+#if defined(L2_CACHE_ACTUALLY_WORKS)
        	}
	+#endif
 	}

Has anyone build a kernel recently using the latest cvs sources?
Any suggestions or other info I can provide?  This is the only
thing holding up a new test release distribution :)

-scott

Here's the output when booting on the R5K:

NetBSD 1.5Z (MRYINDY2) #4: Mon Dec 17 08:29:19 CST 2001
    root@mod80:/usr/src/sys/arch/sgimips/compile/MRYINDY2
128 MB memory, 115 MB free, 768 KB for ARCS, 6656 KB in 1664 buffers
mainbus0 (root): SGI-IP22 [SGI, 690b5eb1], 1 processor
cpu0 at mainbus0: MIPS R5000 CPU (0x2310) Rev. 1.0 with built-in FPU Rev. 1.0
cpu0: 32KB/32B 2-way set-associative L1 Instruction cache, 48 TLB entries
cpu0: 32KB/32B 2-way set-associative write-back L1 Data cache
cpu0: 512KB/32B direct-mapped write-back L2 Data cache
cpu0: disabling IP22 SysAD L2 cache
imc0 at mainbus0 addr 0x1fa00000
imc0: Revision 3
gio0 at imc0
hpc0 at gio0 addr 0x1fb80000: SGI HPC3
zsc0 at hpc0 offset 0x59830
zstty0 at zsc0 channel 1 (console i/o)
zstty1 at zsc0 channel 0
sq0 at hpc0 offset 0x54000: SGI Seeq 80c03
sq0: Ethernet address 08:00:69:0b:5e:b1
wdsc0 at hpc0 offset 0x44000: WD33C93B SCSI, rev=0, target 7
scsibus0 at wdsc0: 8 targets, 8 luns per target
dsclock0 at hpc0 offset 0x60000
biomask 07 netmask 07 ttymask 0f clockmask bf
scsibus0: waiting 5 seconds for devices to settle...
sd0 at scsibus0 target 1 lun 0: <SEAGATE, ST34573N, 6244> SCSI2 0/direct fixed
sd0: 4340 MB, 7501 cyl, 5 head, 237 sec, 512 bytes/sect x 8888924 sectors
sd0: sync (200.0ns offset 12), 8-bit (5.000MB/s) transfers, tagged queueing
sd1 at scsibus0 target 2 lun 0: <SEAGATE, ST34573N, 6244> SCSI2 0/direct fixed
sd1: 4340 MB, 7501 cyl, 5 head, 237 sec, 512 bytes/sect x 8888924 sectors
sd1: sync (200.0ns offset 12), 8-bit (5.000MB/s) transfers, tagged queueing
sd2 at scsibus0 target 3 lun 0: <SEAGATE, ST34573N, 6244> SCSI2 0/direct fixed
sd2: 4340 MB, 7501 cyl, 5 head, 237 sec, 512 bytes/sect x 8888924 sectors
sd2: sync (200.0ns offset 12), 8-bit (5.000MB/s) transfers, tagged queueing
cd0 at scsibus0 target 4 lun 0: <TOSHIBA, CD-ROM XM-5401TA, 3605> SCSI2 5/cdrom removable
cd0: sync (300.0ns offset 12), 8-bit (3.333MB/s) transfers
boot device: sd1
root on sd1a dumps on sd1b
mountroot: trying cd9660...
mountroot: trying nfs...
mountroot: trying ffs...
readclock: 2001/12/17/14/30/21
root file system type: ffs
trap: TLB miss (load or instr. fetch) in kernel mode
status=0xff03, cause=0x8, epc=0x0, vaddr=0x0
pid=1 cmd=init usp=0x0 ksp=0xc9d4de58
Stopped in pid 1 (init) at               0:     invalid address.
db>


And here's the config file:

mod80# cat MRYINDY2
#       $NetBSD: TEAL,v 1.9 2001/11/22 01:11:51 soren Exp $

include         "arch/sgimips/conf/std.sgimips"

#makeoptions     TEXTADDR=0x80002000     # O2/INDY
makeoptions    TEXTADDR=0x88069000     # O2/INDY Symmon
#makeoptions    TEXTADDR=0x8001c000     # IP27
#makeoptions    TEXTADDR=0x80300000     # IP27 Symmon

maxusers        32

options         SCSI_DELAY=5

options         MIPS3
options         MIPS3_L2CACHE_ABSENT
#options        MIPS3_L2CACHE_PRESENT

options         KTRACE
options         SYSVMSG                 # System V message queues
options         SYSVSEM                 # System V semaphores
options         SYSVSHM                 # System V shared memory

options         PARANOIADIAG

options         DDB
options         DDB_HISTORY_SIZE=100
options         DEBUG
options         DIAGNOSTIC

#options        KGDB
#options        KGDB_DEV=0x2301         # KGDB port - this is Serial(1)
#options        KGDB_DEVRATE=19200      # KGDB Baud Rate

#makeoptions    DEBUG="-g"

file-system     FFS
file-system     NFS
file-system     KERNFS
file-system     PROCFS
file-system     CD9660          # ISO 9660 + Rock Ridge file system

options         NFSSERVER
options         FFS_EI
options         SOFTDEP

options         INET

options         SCSIVERBOSE

options         NFS_BOOT_DHCP
#options        NFS_BOOT_BOOTPARAM

options         IP22

config          netbsd          root on ? type ?

mainbus0        at root
cpu0            at mainbus0

imc0            at mainbus0 addr 0x1fa00000
gio0            at imc0
eisa0           at imc0

hpc0            at gio? addr 0x1fb80000
hpc1            at gio? addr 0x1fb00000
#hpc2           at gio? addr 0x1f980000

sq*             at hpc0 offset ?
wdsc*           at hpc0 offset ?
dsclock*        at hpc0 offset ?

#
# As always, the zs chip is wired funny, so channel 1 is actually the
# first serial port and channel 0 is the second.
#
zsc*            at hpc0 offset ? # pbus0 device ?
zstty*          at zsc? channel ?

#pbus0          at hpc0

#pckbc0         at pbus0 device ?

scsibus* at wdsc?
sd*     at scsibus? target ? lun ?      # SCSI disks
st*     at scsibus? target ? lun ?      # SCSI tapes
cd*     at scsibus? target ? lun ?      # SCSI CD-ROMs
ch*     at scsibus? target ? lun ?      # SCSI changer devices

pseudo-device   loop
pseudo-device   pty
pseudo-device   bpfilter        8
pseudo-device   md              1
pseudo-device   rnd                     # /dev/random and in-kernel generator
pseudo-device   vnd             4
mod80#