Subject: port-next68k/8847: xe0 Rx dma panic
To: None <gnats-bugs@gnats.netbsd.org>
From: None <toddpw@best.com>
List: netbsd-bugs
Date: 11/22/1999 04:45:58
>Number:         8847
>Category:       port-next68k
>Synopsis:       xe0 gets a weird DMA Rx interrupt and panics, frequently
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    port-next68k-maintainer (NetBSD/next68k Portmaster)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Nov 22 04:45:00 1999
>Last-Modified:
>Originator:     Todd Whitesel
>Organization:
	
>Release:        cvs co -D "1999-11-10 12:00" src
>Environment:
System: NetBSD yoda.toddpw.net 1.4M NetBSD 1.4M (GENERIC) #3: Sat Oct 16 08:07:49 PDT 2021 toddpw@yoda.toddpw.net:/usr/src/sys/arch/next68k/compile/GENERIC
>Description:
NOTE: This machine's clock battery is dead. After a cold boot the time is
always ludicrous: 1926, 1959, and 2021 have all been observed.
Kernel built from sources checked out with -D "1999-11-10 12:00".
Seems to die immediately if rdate (even -p) is attempted.
Local use of 'date' to set the clock works fine.
After some amount of NFS (diskless) activity, which varies widely from
seconds to roughly an hour, the following panic is observed (typed in manually,
but double-checked):
NDMAP: *intrstat = 0x8000220<ENETR_DMA,ENETR,VIDEO>
NDMAP: *intrmask = 0xffffffffb8027648<NMI,TIMER,ENETX_DMA,ENETR_DMA,SCC,DSP_4,DISK|C16_VIDEO,SCSI,ENETX,ENETR,DSP_3,KYBD_MOUSE>
NDMAP: nd->_nd_map->dm_mapsize = 2016
NDMAP: nd->_nd_map->dm_nsegs = 1
NDMAP: nd->_nd_map->dm_segs[0].ds_addr = 0x0504a000
NDMAP: nd->_nd_map->dm_segs[0].ds_len = 2016
NDMAP: nd->_nd_map->dm_segs[0].ds_xfer_len = 305446639
NDMAP: nd->_nd_map_cont->dm_mapsize = 2016
NDMAP: nd->_nd_map_cont->dm_nsegs = 1
NDMAP: nd->_nd_map_cont->dm_segs[0].ds_addr = 0x05027800
NDMAP: nd->_nd_map_cont->dm_segs[0].ds_len = 2016
NDMAP: nd->_nd_map_cont->dm_segs[0].ds_xfer_len = 222
NDMAP: dd->dd_csr          = 0x2e000000<COMPLETE,READ,SUPDATE>
NDMAP: dd->dd_saved_next   = 0x0504a000
NDMAP: dd->dd_saved_limit  = 0x0504208e
NDMAP: dd->dd_saved_start  = 0x05027800
NDMAP: dd->dd_saved_stop   = 0x05027fe0
NDMAP: dd->dd_next         = 0x0504a046
NDMAP: dd->dd_next_initbuf = 0x0504a046
NDMAP: dd->dd_limit        = 0x0504a7e0
NDMAP: dd->dd_start        = 0x05027800
NDMAP: dd->dd_stop         = 0x05027fe0
NDMAP: interrupt ipl (6) intr(0x8000000<ENETR_DMA>)
panic: DMA Unexpected dma state in interrupt (0x2e000000<COMPLETE,READ,SUPDATE>)
Stopped in sh at        _cpu_Debugger+0x6:      unlk    a6
db> trace
_cpu_Debugger(1b62,2e000000,6cbdcc,409e2a,6cbd8c) + 6
_panic(e4769,2e000000,e423e,409e2a,0) + 52
_nextdma_intr(409e2a,2004,2,2000,6c2e20) + 8a
_isrdispatch_autovec(1c48,78,6cbdcc) + 8c
_intrhand_autovec(?)
_pmap_enter(404100,29000,50f8000,5,0,1) + 14
_uvm_fault(618ca8,29000,0,1) + d02
_trap(8,5e2,29890) + 57c
faultstkadj() + 0
db>
>How-To-Repeat:
	Set up a 1.4 next68k installation and boot a Warp9 slab over NFS.
	Compile a kernel with sources checked out (from an rsync'd repository)
	using 'cvs co -D "1999-11-10 12:00" src'.
	Build kernel, restarting if necessary due to seg fault in make, and
	start trying to build a userland for the kernel.
	Eventually it will croak.
>Fix:
	Unknown. Did not experience this problem with the 1.4 kernel.
>Audit-Trail:
>Unformatted: