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,&nbsp; 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 &quot;root on wd0a dumps on wd0b&quot; we get:</FONT></P>

<P><FONT SIZE=3D2>&nbsp; wdc_exec_command pciiide0:0:0</FONT>
<BR><FONT SIZE=3D2>&nbsp; wdc_exec_xfer.....</FONT>
</P>

<P><FONT SIZE=3D2>and then a series of</FONT>
</P>

<P><FONT SIZE=3D2>&nbsp; wdcstart: xfer.....</FONT>
<BR><FONT SIZE=3D2>&nbsp; _wdccommand_start pciide0:0:0</FONT>
<BR><FONT SIZE=3D2>&nbsp; wdcwait pciide0:0</FONT>
<BR><FONT SIZE=3D2>&nbsp; wdccommand pciide0:0:0: command =3D 0xec =
cylin=3D0 head=3D0 sector=3D0 count=3D0 precomp=3D0</FONT>
<BR><FONT SIZE=3D2>&nbsp; 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>&nbsp; wdccommand pciide0:0:0: command=3D0xc6 =
cylin=3D0 head=3D0 sector=3D0 count=3D16 precomp=3D0</FONT>
<BR><FONT SIZE=3D2>&nbsp; wdcintr</FONT>
<BR><FONT SIZE=3D2>&nbsp; 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>&nbsp; dmamap_load: t=3D0xfooc8c30 map=3D0xf1113a00 =
buf=3D0xf2f6f000 len=3D200 p=3D0x0 f=3D1</FONT>
<BR><FONT SIZE=3D2>&nbsp; _bus_dmamem_load_buffer(buf=3D0xf2f6f000, =
len=3D200, flags=3D1, 1st=3D1)</FONT>
<BR><FONT SIZE=3D2>&nbsp; dmamap_load: error=3D0</FONT>
<BR><FONT SIZE=3D2>&nbsp; dmamap_sync: t=3D0xf00c8c30 map=3D0xf1113a00 =
offset=3D0 len=3D200 ops=3D1</FONT>
<BR><FONT SIZE=3D2>&nbsp; syncing: f2f6f000,200</FONT>
<BR><FONT SIZE=3D2>&nbsp; dmamap_sync: t=3D0xf00c8c30 map=3D0xf1137c80 =
offset=3D0 len=3D88 ops=3D4</FONT>
<BR><FONT SIZE=3D2>&nbsp; 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>&nbsp; wdcwait pciide0:0</FONT>
<BR><FONT SIZE=3D2>&nbsp; wdccommand pciide0:0:0: command=3D0xc8 =
cylin=3D0 head=3D64 sector=3D6 count=3D1 precomp=3D0</FONT>
<BR><FONT SIZE=3D2>&nbsp; wdctimeout</FONT>
<BR><FONT SIZE=3D2>&nbsp; pciide0:0:0: lost interrupt</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; type: ata</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; c_bcount: 512</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; c_skip: 0</FONT>
<BR><FONT SIZE=3D2>&nbsp; wdcwait pciide0:0</FONT>
<BR><FONT SIZE=3D2>&nbsp; dmamap_sync: f=3D0xf00c8c30 map=3D0xf1113a00 =
offset=3D0 len=3D200 ops=3D2</FONT>
<BR><FONT SIZE=3D2>&nbsp; dmamap_unload: t=3D0xf00c8c30 =
map=3D0xf1113a00</FONT>
<BR><FONT SIZE=3D2>&nbsp; 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>&nbsp; wdc_exec_xfer</FONT>
<BR><FONT SIZE=3D2>&nbsp; wdc_start</FONT>
<BR><FONT SIZE=3D2>&nbsp; wdc_wait</FONT>
<BR><FONT SIZE=3D2>&nbsp; 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 &quot;lost interrupt&quot; does it =
mean the Promise Slot's interrupt? And what does &quot;Bus Master DMA =
error: status=3D0x22&quot; mean?</FONT></P>

<P><FONT SIZE=3D2>Many thanks</FONT>
<BR><FONT SIZE=3D2>&nbsp;Bruce</FONT>
</P>

</BODY>
</HTML>
------ =_NextPart_001_01BEFB67.30490ED0--