<!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>