[U-Boot] [PATCH V2 0/9] ARM: OMAP3-DRA7: CP15 erratum workarounds and improvements

Nishanth Menon nm at ti.com
Tue Feb 24 23:57:43 CET 2015


Hi,

uggh.. realized that u-boot mailing list does not like too many
recipients.. So, just tom and list this time.. Sorry for the spam

V1: http://comments.gmane.org/gmane.comp.boot-loaders.u-boot/212174

V2 of this series is a culmination of
a) bunch of refactoring to ensure common code in generic logic - cpuid mostly
b) split the arm generic patch (patch #4 out.. to allow independent review)
c) Saw a chance to incorporate OMAP3 into the same framework, and in fact can
   exactly allow exynos also do the job: https://patchwork.ozlabs.org/patch/440852/A
   https://patchwork.ozlabs.org/patch/442646/
   https://patchwork.ozlabs.org/patch/442297/
   (obviously the code has changed since the original omap3 implementation)

Carrying on the blurb as posted previously :)

Triggered by a user report, it was seen that recommended errata
workaround and performance trade-offs as recommended by TI architects
for ARM configuration was not being followed in OMAP5+ ARM A15
platforms in u-boot configuration. Note OMAP5, DRA7 all share the
same cortex A15 revision (ID=0x412fc0f2) and the workarounds and
improvement configurations apply equally.

Certain errata workaround done in this series obviously have the
controversy potential considering that each of the SoCs implement
workaround based on secure monitor calls, but both the service
requested and the parameters of secure monitor calls can be widely
variant. Examples:
OMAP family of processors have quite the family of SMC calls:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/mach-omap2/omap-smc.S
meanwhile Exynos has a much simpler invocation:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/mach-exynos/exynos-smc.S

To maintain some resemblance of symmetry the following series
introduces a arch/machine dependent errata macro which must be enabled
prior to any of such workarounds can be implemented.

I am open to better ways of doing this which might benefit others in
ARM community with similar needs. Lets discuss.

These patches are based on: v2015.04-rc1 but also apply on latest master.

Note:(OMAP3 is just build tested.. as I stated previously)
 ./MAKEALL -s omap3
v2015.04-rc1: http://pastebin.ubuntu.com/10397352/
v2015.04-rc1+ this series: http://pastebin.ubuntu.com/10397267/
(same sets of failures of build - no regressions introduced that I could see).

Angela Stegmaier (1):
  configs: ti_omap5_common: Enable workaround for ARM errata 798870

Nishanth Menon (7):
  ARM: OMAP: Change set_pl310_ctrl_reg to be generic
  ARM: OMAP3: Rename omap3.h to omap.h to be generic as all SoCs
  ARM: OMAP3: Get rid of omap3_gp_romcode_call and replace with
    omap_smc1
  ARM: Provide a mechanism to invoke SoC specific errata WA for CP15
  ARM: OMAP3: Introduce OMAP3 Cortex-A8 revision specific errata
  configs: ti_omap3_common: Enable workaround for ARM errata 454179,
    430973, 621766
  ARM: OMAP5 / DRA7: Setup L2 Aux Control Register with recommended
    configuration

Praveen Rao (1):
  ARM: DRA7 / OMAP5: Add workaround for ARM errata 798870

 README                                             |    9 ++++
 arch/arm/cpu/armv7/omap-common/Makefile            |    2 +-
 arch/arm/cpu/armv7/omap-common/lowlevel_init.S     |   15 ++++--
 arch/arm/cpu/armv7/omap3/board.c                   |   24 ++--------
 arch/arm/cpu/armv7/omap3/lowlevel_init.S           |   48 +++++++++++++++-----
 arch/arm/cpu/armv7/omap4/hwinit.c                  |    4 +-
 arch/arm/cpu/armv7/omap5/Makefile                  |    1 +
 arch/arm/cpu/armv7/omap5/hwinit.c                  |   16 +++++++
 arch/arm/cpu/armv7/omap5/lowlevel_init.S           |   46 +++++++++++++++++++
 arch/arm/cpu/armv7/start.S                         |   14 ++++++
 .../arm/include/asm/arch-omap3/{omap3.h => omap.h} |    0
 arch/arm/include/asm/arch-omap3/sys_proto.h        |    3 +-
 arch/arm/include/asm/arch-omap4/sys_proto.h        |    5 +-
 arch/arm/include/asm/arch-omap5/sys_proto.h        |    4 ++
 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.h                        |    2 +-
 include/configs/omap3_evm_quick_mmc.h              |    2 +-
 include/configs/omap3_evm_quick_nand.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                  |    8 +++-
 include/configs/ti_omap5_common.h                  |    4 ++
 include/configs/tricorder.h                        |    2 +-
 34 files changed, 178 insertions(+), 61 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/omap5/lowlevel_init.S
 rename arch/arm/include/asm/arch-omap3/{omap3.h => omap.h} (100%)

Regards,
	Nishanth Menon
-- 
1.7.9.5



More information about the U-Boot mailing list