Subject: DMA Problems on arm32
To: 'port-arm32@netbsd.org' <port-arm32@netbsd.org>
From: Bruce Martin <BruceM@cat.co.za>
List: port-arm32
Date: 09/10/1999 10:33:38
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.
------ =_NextPart_001_01BEFB67.30490ED0
Content-Type: text/plain
We are still trying to get the Promise to work in DMA mode, and what I
have done is turned on WDCDEBUG and DMA_DEBUG messages, to try and see
what is going on. The bootup goes fine - we get our wd0 identified,
right size, PIO Mode 4, DMA Mode 2, Ultra-DMA 2. The after "root on wd0a
dumps on wd0b" we get:
wdc_exec_command pciiide0:0:0
wdc_exec_xfer.....
and then a series of
wdcstart: xfer.....
_wdccommand_start pciide0:0:0
wdcwait pciide0:0
wdccommand pciide0:0:0: command = 0xec cylin=0 head=0 sector=0 count=0
precomp=0
wdcintr
and a whole lot of wdcwait, wdccommand and wdcintr commands.
Then after a few of these, things go wrong:
wdccommand pciide0:0:0: command=0xc6 cylin=0 head=0 sector=0 count=16
precomp=0
wdcintr
wdcwait pciide0:0
======================
dmamap_load: t=0xfooc8c30 map=0xf1113a00 buf=0xf2f6f000 len=200 p=0x0
f=1
_bus_dmamem_load_buffer(buf=0xf2f6f000, len=200, flags=1, 1st=1)
dmamap_load: error=0
dmamap_sync: t=0xf00c8c30 map=0xf1113a00 offset=0 len=200 ops=1
syncing: f2f6f000,200
dmamap_sync: t=0xf00c8c30 map=0xf1137c80 offset=0 len=88 ops=4
syncing: f36f6000, 88
=======================
wdcwait pciide0:0
wdccommand pciide0:0:0: command=0xc8 cylin=0 head=64 sector=6 count=1
precomp=0
wdctimeout
pciide0:0:0: lost interrupt
type: ata
c_bcount: 512
c_skip: 0
wdcwait pciide0:0
dmamap_sync: f=0xf00c8c30 map=0xf1113a00 offset=0 len=200 ops=2
dmamap_unload: t=0xf00c8c30 map=0xf1113a00
pciide0:0:0: Bus-Master DMA error: status=0x22
Then an infinite series of (after and ata_reset):
wdc_exec_xfer
wdc_start
wdc_wait
wdc_timeout
Does anything above seem to indicate the problem? Things seems to go
wrong after the DMA section between the === ... === above - when it says
"lost interrupt" does it mean the Promise Slot's interrupt? And what
does "Bus Master DMA error: status=0x22" mean?
Many thanks
Bruce
------ =_NextPart_001_01BEFB67.30490ED0
Content-Type: text/html
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3DUS-ASCII">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
5.5.1960.3">
<TITLE>DMA Problems on arm32</TITLE>
</HEAD>
<BODY>
<P><FONT SIZE=3D2>We are still trying to get the Promise to work in DMA =
mode, and what I have done is turned on WDCDEBUG and DMA_DEBUG =
messages, to try and see what is going on. The bootup goes fine - we =
get our wd0 identified, right size, PIO Mode 4, DMA Mode 2, Ultra-DMA =
2. The after "root on wd0a dumps on wd0b" we get:</FONT></P>
<P><FONT SIZE=3D2> wdc_exec_command pciiide0:0:0</FONT>
<BR><FONT SIZE=3D2> wdc_exec_xfer.....</FONT>
</P>
<P><FONT SIZE=3D2>and then a series of</FONT>
</P>
<P><FONT SIZE=3D2> wdcstart: xfer.....</FONT>
<BR><FONT SIZE=3D2> _wdccommand_start pciide0:0:0</FONT>
<BR><FONT SIZE=3D2> wdcwait pciide0:0</FONT>
<BR><FONT SIZE=3D2> wdccommand pciide0:0:0: command =3D 0xec =
cylin=3D0 head=3D0 sector=3D0 count=3D0 precomp=3D0</FONT>
<BR><FONT SIZE=3D2> wdcintr</FONT>
</P>
<P><FONT SIZE=3D2>and a whole lot of wdcwait, wdccommand and wdcintr =
commands.</FONT>
</P>
<P><FONT SIZE=3D2>Then after a few of these, things go wrong:</FONT>
</P>
<P><FONT SIZE=3D2> wdccommand pciide0:0:0: command=3D0xc6 =
cylin=3D0 head=3D0 sector=3D0 count=3D16 precomp=3D0</FONT>
<BR><FONT SIZE=3D2> wdcintr</FONT>
<BR><FONT SIZE=3D2> wdcwait pciide0:0</FONT>
<BR><FONT =
SIZE=3D2>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D</FONT>
<BR><FONT SIZE=3D2> dmamap_load: t=3D0xfooc8c30 map=3D0xf1113a00 =
buf=3D0xf2f6f000 len=3D200 p=3D0x0 f=3D1</FONT>
<BR><FONT SIZE=3D2> _bus_dmamem_load_buffer(buf=3D0xf2f6f000, =
len=3D200, flags=3D1, 1st=3D1)</FONT>
<BR><FONT SIZE=3D2> dmamap_load: error=3D0</FONT>
<BR><FONT SIZE=3D2> dmamap_sync: t=3D0xf00c8c30 map=3D0xf1113a00 =
offset=3D0 len=3D200 ops=3D1</FONT>
<BR><FONT SIZE=3D2> syncing: f2f6f000,200</FONT>
<BR><FONT SIZE=3D2> dmamap_sync: t=3D0xf00c8c30 map=3D0xf1137c80 =
offset=3D0 len=3D88 ops=3D4</FONT>
<BR><FONT SIZE=3D2> syncing: f36f6000, 88</FONT>
<BR><FONT =
SIZE=3D2>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D</FONT>
<BR><FONT SIZE=3D2> wdcwait pciide0:0</FONT>
<BR><FONT SIZE=3D2> wdccommand pciide0:0:0: command=3D0xc8 =
cylin=3D0 head=3D64 sector=3D6 count=3D1 precomp=3D0</FONT>
<BR><FONT SIZE=3D2> wdctimeout</FONT>
<BR><FONT SIZE=3D2> pciide0:0:0: lost interrupt</FONT>
<BR><FONT SIZE=3D2> type: ata</FONT>
<BR><FONT SIZE=3D2> c_bcount: 512</FONT>
<BR><FONT SIZE=3D2> c_skip: 0</FONT>
<BR><FONT SIZE=3D2> wdcwait pciide0:0</FONT>
<BR><FONT SIZE=3D2> dmamap_sync: f=3D0xf00c8c30 map=3D0xf1113a00 =
offset=3D0 len=3D200 ops=3D2</FONT>
<BR><FONT SIZE=3D2> dmamap_unload: t=3D0xf00c8c30 =
map=3D0xf1113a00</FONT>
<BR><FONT SIZE=3D2> pciide0:0:0: Bus-Master DMA error: =
status=3D0x22</FONT>
</P>
<P><FONT SIZE=3D2>Then an infinite series of (after and =
ata_reset):</FONT>
<BR><FONT SIZE=3D2> wdc_exec_xfer</FONT>
<BR><FONT SIZE=3D2> wdc_start</FONT>
<BR><FONT SIZE=3D2> wdc_wait</FONT>
<BR><FONT SIZE=3D2> wdc_timeout</FONT>
</P>
<BR>
<P><FONT SIZE=3D2>Does anything above seem to indicate the problem? =
Things seems to go wrong after the DMA section between the =3D=3D=3D =
... =3D=3D=3D above - when it says "lost interrupt" does it =
mean the Promise Slot's interrupt? And what does "Bus Master DMA =
error: status=3D0x22" mean?</FONT></P>
<P><FONT SIZE=3D2>Many thanks</FONT>
<BR><FONT SIZE=3D2> Bruce</FONT>
</P>
</BODY>
</HTML>
------ =_NextPart_001_01BEFB67.30490ED0--