[U-Boot] [PATCH] omap3: ARM Cortex-A8 errata workarounds config option

Igor Grinberg grinberg at compulab.co.il
Sun Feb 22 13:06:39 CET 2015


Hi Paul,

On 02/22/15 13:36, Paul Kocialkowski wrote:
> Workarounds applied in omap3_setup_aux_cr are only necessary for ARM core
> revisions prior to r3p2 (such as OMAP35xx but apparently not OMAP36xx and
> DM37xx)

If this is true, I can see some (potential) problems with the patch.
Please, check out my thoughts on this below.

> and require similar workarounds in the kernel, or it will cause numerous
> segmentation faults. This allows (when the option is not used) properly booting
> kernels that do not include the workaround.
> 
> Follow-up to the discussion from July 2013:
> http://lists.denx.de/pipermail/u-boot/2013-July/158377.html
> 
> Signed-off-by: Paul Kocialkowski <contact at paulk.fr>
> ---
>  README                             | 8 ++++++++
>  arch/arm/cpu/armv7/omap3/board.c   | 2 ++
>  include/configs/am3517_crane.h     | 2 ++
>  include/configs/am3517_evm.h       | 2 ++
>  include/configs/cm_t35.h           | 2 ++
>  include/configs/cm_t3517.h         | 2 ++
>  include/configs/dig297.h           | 2 ++
>  include/configs/mcx.h              | 2 ++
>  include/configs/nokia_rx51.h       | 2 ++
>  include/configs/omap3_evm_common.h | 2 ++
>  include/configs/omap3_logic.h      | 2 ++
>  include/configs/omap3_mvblx.h      | 2 ++
>  include/configs/omap3_pandora.h    | 2 ++
>  include/configs/omap3_sdp3430.h    | 2 ++
>  include/configs/omap3_zoom1.h      | 2 ++
>  include/configs/tam3517-common.h   | 2 ++
>  include/configs/tao3530.h          | 2 ++
>  include/configs/ti_omap3_common.h  | 2 ++
>  include/configs/tricorder.h        | 2 ++
>  19 files changed, 44 insertions(+)
> 
> diff --git a/README b/README
> index ba57dc5..a39420d 100644
> --- a/README
> +++ b/README
> @@ -621,6 +621,14 @@ The following options need to be configured:
>  		exists, unlike the similar options in the Linux kernel. Do not
>  		set these options unless they apply!
>  
> +		CONFIG_SYS_ARM_CORTEXA8_ERRATA
> +
> +		Enables workarounds for ARM Cortex-A8 errata 454179, 430973
> +		and 621766. This is only necessary for ARM core revisions prior
> +		to r3p2. Enabling those workarounds requires to enable the same
> +		workarounds in the kernel, or it will cause multiple
> +		segmentation faults. This is currently only effective on OMAP3.
> +
>  - Driver Model
>  		Driver model is a new framework for devices in U-Boot
>  		introduced in early 2014. U-Boot is being progressively
> diff --git a/arch/arm/cpu/armv7/omap3/board.c b/arch/arm/cpu/armv7/omap3/board.c
> index 90d6ae7..813f35b 100644
> --- a/arch/arm/cpu/armv7/omap3/board.c
> +++ b/arch/arm/cpu/armv7/omap3/board.c
> @@ -246,8 +246,10 @@ void s_init(void)
>  
>  	try_unlock_memory();
>  
> +#ifdef CONFIG_SYS_ARM_CORTEXA8_ERRATA
>  	/* Errata workarounds */
>  	omap3_setup_aux_cr();

Can we have the revision dynamically checked instead of/along with
introducing a config option?
We have boards, OMAP3 based, which are supported by the same board file
and the same config file, see below.

> +#endif
>  
>  #ifndef CONFIG_SYS_L2CACHE_OFF
>  	/* Invalidate L2-cache from secure mode */

[...]

> diff --git a/include/configs/cm_t35.h b/include/configs/cm_t35.h
> index b2a9f35..150b419 100644
> --- a/include/configs/cm_t35.h
> +++ b/include/configs/cm_t35.h
> @@ -38,6 +38,8 @@
>  #define CONFIG_DISPLAY_CPUINFO
>  #define CONFIG_DISPLAY_BOARDINFO
>  
> +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA

This config file is used for both cm-t35 and cm-t3730.
cm-t35 has OMAP3530, but cm-t3730 has DM3730. 
The same U-Boot binary is used for both boards.

> +
>  /* Clock Defines */
>  #define V_OSCK			26000000	/* Clock output from T2 */
>  #define V_SCLK			(V_OSCK >> 1)

[...]

-- 
Regards,
Igor.


More information about the U-Boot mailing list