
-----Original Message----- From: Albert ARIBAUD [mailto:albert.aribaud@free.fr] Sent: Friday, July 09, 2010 6:31 PM To: Prafulla Wadaskar; u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH V2 3/6] mv_egiga: bugfix: DMA issue fixed using volatile
Le 09/07/2010 13:53, Albert ARIBAUD a écrit :
Le 09/07/2010 13:11, Prafulla Wadaskar a écrit :
You can use volatile qualifier for the variables in DMA
specific code instead of modifying structures,
Try to use memory barrier or something like that- Some ref : http://gcc.gnu.org/ml/gcc/2003-04/msg01180.html may be someone c-expert on the list can suggest better
Seems we've followed the same line of reasoning. :)
I'll look into forcing a sequence point without resorting to asm.
Found it. arch/arm/include/asm/system.h provides isb() which expands to an asm statement acting as a sequence point. Inserting an isb() right before starting DMA ensures that all writes to the descriptor are emitted before setting the TQC register for DMA, so that should work.
Good findings...
Shouldn't I send out the isb() fix as a separate patch? After all, it is a fix for a bug (uncontrolled sequencing) which is present for kirkwood even though we were lucky enough that it did not bite so far.
Yes, Pls do the needful
Regards.. Prafulla . .