<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-6" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Jeremy Kerr wrote:
<blockquote cite="mid200702061713.45481.jk@ozlabs.org" type="cite">
  <pre wrap="">Hi Jonathan,

  </pre>
  <blockquote type="cite">
    <pre wrap="">I'm currently having some bizarre DMA behavior on my PS3 running YDL
(2.6.16 kernel).  Are there DMA races that have been fixed since
then?
    </pre>
  </blockquote>
  <pre wrap=""><!---->
What kind of bizarre DMA behaviour are you seeing? And can you share any 
code that shows these problems?
  </pre>
</blockquote>
Basically, it seems that any time I have a lot of DMA transfers
in-the-air at the same time they get swapped and flipped and sometimes
I get a random bus error.  Here is the code that generates the errors:<br>
<br>
<a class="moz-txt-link-freetext" href="http://dev.newmedio.com/johnnyb/toupper.tar.gz">http://dev.newmedio.com/johnnyb/toupper.tar.gz</a><br>
<br>
Just type in "make; ./convert" to run the program.<br>
<br>
The goal of the spe_main.c algorithm is to initiate a lot of buffers
transferring, and let the MFC decide which ones to process, and then
the application simply processes and re-uses the buffers for the next
data load.  It uses barriers so that it can do a back-to-back PUT and
GET on the same local store buffer and let the MFC manage the
synchronization.<br>
<br>
All of the DMAs are done from spe_main.c.  To play with it, you can
mess with the MAX_TRANSFER_SIZE and NUM_BUFFERS constants.  It always
works with NUM_BUFFERS = 1 and never works with NUM_BUFFERS = 7 (though
the actual failure differs from run to run).<br>
<br>
Jon<br>
<div class="moz-signature">-- <br>
<img src="cid:part1.08080707.07000803@newmedio.com" border="0"></div>
</body>
</html>