Subject: Re: Netbsd 3.0 Crash on file transfert
To: None <>
From: Izumi Tsutsui <>
List: port-cobalt
Date: 03/18/2006 02:44:07
In article <> wrote:

> I tried nothing special, it was during a scp transfert with a large  
> 100MB file. As you could see in the stack trace the stopped process  
> was ssh.

Yes, it could happen during large network xfers.

> Trap: TLB miss (load.inst.fetch) in Kernelmode status=0x2403,
> cause=0x8, epc=0x810cfde0, vaddr=0xcc708000 pid 911
> cmd=sshd usp=ox7fffd4f0 Ksp=0xcc6ebb08
> stopped in pid 911.1 (ssh) at kernel:r5k_pdcache_wb_range_32+0x9c:  
> cache 0x19, 0x3c0(a0)

This is in cobalt/cobalt/bus.c:_bus_dmamap_sync().
When I replaced this mips_dcache_wb_range() with
mips_dcache_wbinv_range() the panic still happened,
so it seems that wrong VA passed from bus_dmamap_sync()
on BUS_DMASYNC_PREWRITE (i.e. TX of tlp(4)) causes
the problem, but I can't see why it happens only on

On the other hand, I can't reproduce this problem
on R5000 O2, so I wonder if it's Rm52xx specific or
tlp(4) specific.

Could anyone try if the similar panic could happen
with other NIC on a PCI slot of Qube2?

> Is there a sysctl parameter that I can use ?

The attached patch could hide a panic (as workaround),
but maybe I (or someone) should check Rm52xx manual more closely.
(I'm afraid there are some more Rm52xx specific CP0 hazards
 not handled currently)
Index: arch/cobalt/cobalt/bus.c
RCS file: /cvsroot/src/sys/arch/cobalt/cobalt/bus.c,v
retrieving revision 1.24
diff -u -r1.24 bus.c
--- arch/cobalt/cobalt/bus.c	1 Mar 2006 12:38:11 -0000	1.24
+++ arch/cobalt/cobalt/bus.c	17 Mar 2006 17:40:58 -0000
@@ -621,7 +621,11 @@
+#if 0	/* XXX */
 			mips_dcache_wb_range(addr + offset, minlen);
+			mips_dcache_wbinv_range_index(addr + offset, minlen);

Izumi Tsutsui