[U-Boot] [PATCH V3] net: fec_mxc: allow use with cache enabled

Marek Vasut marex at denx.de
Wed Mar 14 06:45:18 CET 2012


Dear Eric Nelson,

> On 03/13/2012 06:43 PM, Marek Vasut wrote:
> > Dear Mike Frysinger,
> > 
> >> On Tuesday 13 March 2012 14:42:29 Eric Nelson wrote:
> >>> On 03/13/2012 07:41 AM, Mike Frysinger wrote:
> >>>> On Tuesday 13 March 2012 10:04:31 Eric Nelson wrote:
> >>>>> --- a/drivers/net/fec_mxc.c
> >>>>> +++ b/drivers/net/fec_mxc.c
> >>>>> 
> >>>>> +#if ARCH_DMA_MINALIGN>   CONFIG_SYS_CACHELINE_SIZE
> >>>>> +#define CONFIG_FEC_ALIGN ARCH_DMA_MINALIGN
> >>>>> +#else
> >>>>> +#define CONFIG_FEC_ALIGN CONFIG_SYS_CACHELINE_SIZE
> >>>>> +#endif
> >>>> 
> >>>> i don't think this is something you should be checking.  if this is an
> >>>> actual problem (and i don't think it is), it's something we should
> >>>> handle in common code.  if you need to dma from memory, then use
> >>>> ARCH_DMA_MINALIGN.
> >>> 
> >>> Marek, you've mentioned some restrictions for other i.MX devices.
> >>> 
> >>> Are you aware of any problem collapsing this?
> >>> 
> >>> Note that other CPUs will need to have CONFIG_SYS_CACHELINE_SIZE to
> >>> prevent the default of 64.
> >> 
> >> and those cores should be making sure that ARCH_DMA_MINALIGN is
> >> sufficient to handle those larger cache lines.  this define provides
> >> two meanings: minimum alignment for the DMA itself, and for sanely
> >> flushing the cache on that dma buffer.  so there should be no situation
> >> where ARCH_DMA_MINALIGN is smaller than the cacheline size.
> >> 
> >> the few boards i see defining CONFIG_SYS_CACHELINE_SIZE to 64 are all
> >> ARM based, and ARM sets ARCH_DMA_MINALIGN to CONFIG_SYS_CACHELINE_SIZE
> >> if it's defined
> >> -mike
> > 
> > Eric, can you check also PPC /wrt to this? This driver is also used on
> > PPC.
> 
> Hi Marek,
> 
> I'm not seeing any reference to FEC_MXC on PPC. All boards that use
> it appear to be i.MX:

I see, my mistake. Though the PPC systems should be converted ;-)

> 
> ~/u-boot-imx6$ grep -w CONFIG_FEC_MXC include/configs/*.h
> include/configs/flea3.h:#define CONFIG_FEC_MXC
> include/configs/imx27lite-common.h:#define CONFIG_FEC_MXC
> include/configs/m28evk.h:#define	CONFIG_FEC_MXC
> include/configs/mx25pdk.h:#define CONFIG_FEC_MXC
> include/configs/mx28evk.h:#define CONFIG_FEC_MXC
> include/configs/mx35pdk.h:#define CONFIG_FEC_MXC
> include/configs/mx51evk.h:#define CONFIG_FEC_MXC
> include/configs/mx53evk.h:#define CONFIG_FEC_MXC
> include/configs/mx53loco.h:#define CONFIG_FEC_MXC
> include/configs/mx53smd.h:#define CONFIG_FEC_MXC
> include/configs/mx6qarm2.h:#define	CONFIG_FEC_MXC
> include/configs/mx6qsabrelite.h:#define	CONFIG_FEC_MXC
> include/configs/tx25.h:#define CONFIG_FEC_MXC
> include/configs/vision2.h:#define CONFIG_FEC_MXC
> include/configs/zmx25.h:#define CONFIG_FEC_MXC
> 
> Most of the PPC devices seem to have values of 16 or 32
> for ARCH_DMA_MINALIGN, but PPC64BRIDGE and E500MC would
> have a problem if their drivers don't implement a bounce
> buffer because PKTALIGN < ARCH_DMA_MINALIGN.

Awww, leave the check there then, those PPC systems should produce warning when 
they will be flipped so this is not forgotten.

> 
> (see arch/powerpc/include/asm/cache.h)
> 
> This condition is properly tested for in fec_mxc.c.
> 
> Regards,
> 
> 
> Eric

Best regards,
Marek Vasut


More information about the U-Boot mailing list