[U-Boot] [PATCH V2 3/6] mv_egiga: bugfix: DMA issue fixed using volatile

Albert ARIBAUD albert.aribaud at free.fr
Fri Jul 9 15:00:58 CEST 2010


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.

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.

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list