[PATCH] omap4: enable L2 prefetching

Santosh Shilimkar santosh.shilimkar at ti.com
Fri Nov 19 11:46:59 EST 2010


> -----Original Message-----
> From: linux-omap-owner at vger.kernel.org [mailto:linux-omap-
> owner at vger.kernel.org] On Behalf Of Kevin Hilman
> Sent: Wednesday, November 17, 2010 12:19 AM
> To: Nishanth Menon
> Cc: linux-omap; linux-arm; Mans Rullgard
> Subject: Re: [PATCH] omap4: enable L2 prefetching
>
> Nishanth Menon <nm at ti.com> writes:
>
> > From: Mans Rullgard <mans at mansr.com>
> >
> > Enabling L2 prefetching improves performance as shown on Panda
> > ES2.1 board with mem test, and it has measurable impact on
> > performances. I think we should consider it, even though it damages
> > "writes" a bit. (rebased to k.org)
> > Usually the prefetch is used at both levels together L1 + L2, however,
> > to enable the CP15 prefetch engines, these are under security, and on
> > GP devices, we cannot enable it(e.g. on PandaBoard). However, just
> > enabling PL310 prefetch seems to provide performance improvement,
> > as shown in the data below (from Ubuntu) and would be a great thing
> > to pull in.
>
> [...]
>
> >  arch/arm/mach-omap2/omap4-common.c |    6 +++++-
> >  1 files changed, 5 insertions(+), 1 deletions(-)
> >
> > diff --git a/arch/arm/mach-omap2/omap4-common.c b/arch/arm/mach-
> omap2/omap4-common.c
> > index 2f89555..a5e6126 100644
> > --- a/arch/arm/mach-omap2/omap4-common.c
> > +++ b/arch/arm/mach-omap2/omap4-common.c
> > @@ -64,6 +64,10 @@ static int __init omap_l2_cache_init(void)
> >  	l2cache_base = ioremap(OMAP44XX_L2CACHE_BASE, SZ_4K);
> >  	BUG_ON(!l2cache_base);
> >
> >
> > +	if (omap_rev() != OMAP4430_REV_ES1_0)
> > +		omap_smc1(0x109, 0x7e470000);
> >
> >  	/* Enable PL310 L2 Cache controller */
> >  	omap_smc1(0x102, 0x1);
> >
> > @@ -75,7 +79,7 @@ static int __init omap_l2_cache_init(void)
> >  	if (omap_rev() == OMAP4430_REV_ES1_0)
> >  		l2x0_init(l2cache_base, 0x0e050000, 0xc0000fff);
> >  	else
> > -		l2x0_init(l2cache_base, 0x0e070000, 0xc0000fff);
> > +		l2x0_init(l2cache_base, 0x7e470000, 0xc0000fff);
> >
> >  	/*
> >  	 * Override default outer_cache.disable with a OMAP4
>
> Adding/updaing the in-code comments would be helpful as well.
>
> The exiting use of all the hard-coded constants in this code is rather
> unreadable and would be much more readable with symbolic constants, and
> this change just continues the pattern.
>
> Ideally, switching this code to use symbolic constants and then adding
> the new feature would be a cleaner approach.
>
I have cleaned up a code a bit based on the comments from Kevin and
also updated change log in Man's patch. Also added couple of
relevant patches as part of this series which I haven't posted yet.

Will post the series on the list soon

Regards,
Santosh



More information about the linux-arm-kernel mailing list