Subject: panic from aha driver after "error loading dma map"..
To: None <thorpej@NetBSD.ORG>
From: Bill Sommerfeld <sommerfeld@orchard.east-arlington.ma.us>
List: port-i386
Date: 06/16/1997 09:51:19
On Saturday, I built a 1.2G kernel; I booted it yesterday on my system
(486/33 with 32M of memory, and 2 IDE drives and one SCSI drive
connected through an AHA).
Last night, I left a "make build" running overnight.
This morning, I woke up to find the system crashed, with the following
(approximate) panic message:
aha0: aha_scsi_cmd, error 22 loading dma map
vm_fault(0xf8276000, 0xf8970000, 3, 0)
kernel page fault trap, code=0
stopped at bcopy+1a: repe movsl (%esi),%es:(%edi)
"error 22" would appear to be EINVAL.
%edi contained 0xf8970000, which is the address mentioned in the vm_fault..
the traceback was:
bcopy+1a
aha_done+0x3f
aha_finish_ccbs+0xde
aha_intr+0x73
Assuming I'm reading the disassembly correctly, the fault occurred in
a bcopy called bus_dmamap_sync from around line 772 of
sys/dev/ic/aha.c:
bus_dmamap_sync(dmat, ccb->dmamap_xfer,
(xs->flags & SCSI_DATA_IN) ? BUS_DMASYNC_POSTREAD :
BUS_DMASYNC_POSTWRITE);
As best I can tell, the only thing in the i386 isa dmamap code which
can return EINVAL is _isa_dma_check_buffer(); I'm not quite familiar
enough with the code to figure out how that return value could have
gotten there.
Any clues?
- Bill