mbox series

[v2,00/13] armv8: layerscape: spin table relocation fixes and cleanups

Message ID 20200601195336.3237-1-michael@walle.cc
Headers show
Series armv8: layerscape: spin table relocation fixes and cleanups | expand

Message

Michael Walle June 1, 2020, 7:53 p.m. UTC
Fix bootefi on layerscape boards which use spin table for secondary cores
bringup. There two main issues here:
 (1) bootefi doesn't kick the secondary cores
 (2) bootefi reserves a 64kb region for runtime services code on ARM64
     which overlaps the spin table code.

We will fix (1) by removing the need to kick the secondary cores. For (2),
we will make the spin table code relocatable and if the efi_loader support
is enabled we will dynamically allocate a page for the spin table code and
relocate it there. While we are at it, clean up the whole spin table code
for layerscape.

Please note, no current board in u-boot should be using spin tables,
because NXP officially only supports TF-A, which uses PSCI for secondary
cores booting. Only the pending Kontron SMARC-sAL28 board will be using
this method. U-Boot support is still pending, see:
https://patchwork.ozlabs.org/project/uboot/list/?series=175926

This was tested on said board, both with CONFIG_ARMV8_SWITCH_TO_EL1 defined
and undefined.

Michael Walle (13):
  armv8: layerscape: fix spin-table support
  armv8: layerscape: pretty print info about SMP cores
  armv8: layerscape: properly use CPU_RELEASE_ADDR
  armv8: layerscape: move spin table into own module
  armv8: layerscape: load function pointer using ADR
  armv8: layerscape: fix alignment for spin table
  armv8: layerscape: remove determine_mp_bootpg()
  armv8: layerscape: simplify get_spin_tbl_addr() calls
  armv8: layerscape: make wake_secondary_core_n() static
  armv8: freescale: drop first .ltorg directive in spintable.S
  armv8: layerscape: clean exported symbols in spintable.S
  armv8: layerscape: relocate spin table if EFI_LOADER is enabled
  armv8: layerscape: rework spin table

 arch/arm/cpu/armv8/fsl-layerscape/Makefile    |   2 +-
 arch/arm/cpu/armv8/fsl-layerscape/fdt.c       |   9 +-
 arch/arm/cpu/armv8/fsl-layerscape/lowlevel.S  | 165 ++----------------
 arch/arm/cpu/armv8/fsl-layerscape/mp.c        |  79 ++++++---
 arch/arm/cpu/armv8/fsl-layerscape/spintable.S | 118 +++++++++++++
 arch/arm/include/asm/arch-fsl-layerscape/mp.h |   8 +-
 include/configs/kontron_sl28.h                |   2 +-
 include/configs/ls1028a_common.h              |   2 +-
 include/configs/ls1043a_common.h              |   2 +-
 include/configs/ls1046a_common.h              |   2 +-
 include/configs/ls1088a_common.h              |   2 +-
 include/configs/ls2080a_common.h              |   2 +-
 include/configs/lx2160a_common.h              |   2 +-
 13 files changed, 201 insertions(+), 194 deletions(-)
 create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/spintable.S