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

Igor Grinberg
2015-02-22T12:06:39Z

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@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.