[PATCH] omap4: enable L2 prefetching

Kevin Hilman khilman at deeprootsystems.com
Tue Nov 16 13:49:15 EST 2010


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.

Kevin









More information about the linux-arm-kernel mailing list