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

Prafulla Wadaskar prafulla at marvell.com
Sat Jul 10 08:41:46 CEST 2010


 

> -----Original Message-----
> From: Albert ARIBAUD [mailto:albert.aribaud at free.fr] 
> Sent: Friday, July 09, 2010 6:31 PM
> To: Prafulla Wadaskar; u-boot at 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 . .


More information about the U-Boot mailing list