From patchwork Mon Jun 1 19:53:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Walle X-Patchwork-Id: 241472 List-Id: U-Boot discussion From: michael at walle.cc (Michael Walle) Date: Mon, 1 Jun 2020 21:53:23 +0200 Subject: [PATCH v2 00/13] armv8: layerscape: spin table relocation fixes and cleanups Message-ID: <20200601195336.3237-1-michael@walle.cc> 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