Hi, On Sat, Jul 2, 2016 at 8:00 PM, Hans de Goede <hdego...@redhat.com> wrote: > Hi, > > On 19-06-16 06:38, Chen-Yu Tsai wrote: >> >> Hi everyone, >> >> This is ARM PSCI improvements part 2. This series cleans up PSCI stack >> allocation and target PC storage by introducing a secure stack section >> and a secure data section. > > > I've added this series to my personal repo sunxi-wip branch for testing.
I might send a v2 of patch 5. Also I forgot to add .secure_data to the sections that get copied to the actual u-boot blob. It currently works because the data structures in it are all written before they are read. So a v2 of patch 12 is needed as well. Could you also add Hongbo's tested-by tags? > > It might be best to also merge it via the u-boot-sunxi tree ? We should probably work out with the NXP/FreeScale people that are also working on PSCI support for their platform. Hongbo, any comments? Regards ChenYu > Regards, > > Hans > > > >> >> The series got larger than I planned. Some patches are just moving or >> consolidating code, and a few are adding missing macros. It's based on >> v3 of my "sunxi: PSCI implementation rewrite in C" series from earlier. >> >> >> Patch 1 consolidates the stack setup code from all the PSCI-enabled >> platforms (which likely originated from the initial sunxi version) into >> a common function, and moves it into a seperate common function that >> is called before psci_arch_init. A weak stub psci_arch_init is added >> for platforms that no longer need a custom version. >> >> Patch 2 converts the remaining sunxi PSCI assembly code into C. >> >> Patch 3 adds the missing CONFIG_ARMV7_PSCI_NR_CPUS=2 for sun7i/A20. >> >> Patch 4 makes the linker page align PSCI text only when it is directly >> executed, i.e. not copied to CONFIG_ARMV7_SECURE_BASE. >> >> Patch 5 adds a fallback value for CONFIG_ARMV7_PSCI_NR_CPUS. The value >> is 4, which was the fixed maximum number of stacks allocated. >> >> Patch 6 adds an empty stack section for the secure monitor. >> >> Patch 7 has PSCI allocate its stack in the new secure stack section. >> >> Patch 8 removes the now unused psci_text_end symbol. This was previously >> used to find where to allocate the stack. >> >> Patch 9 adds a config variable for specifying the maximum size of the >> secure section (text, data, stack, etc.) and checks if the binary >> exceeds it. >> >> Patch 10 defines CONFIG_ARMV7_SECURE_MAX_SIZE for sun6i/sun7i (A31/A20), >> Allwinner SoCs that have a block of secure SRAM. >> >> Patch 11 moves the __secure macro to asm/secure.h. Previously sunxi and >> i.MX7 were defining it themselves. >> >> Patch 12 adds a secure data section, and a __secure_data macro. >> >> Patch 13 adds helper functions to save and get per-CPU target PC addresses >> for use in PSCI. >> >> Patch 14 converts all PSCI-enabled platforms to the new helper functions >> to save/get target PC addresses. >> >> Patch 15 makes the psci_get_cpu_stack_top function local/static. This >> function should only be used by the stack setup routine. >> >> >> Regards >> ChenYu >> >> >> Chen-Yu Tsai (15): >> ARM: PSCI: Split out common stack setup code from psci_arch_init >> sunxi: Move remaining PSCI assembly code to C >> sunxi: Add missing CONFIG_ARMV7_PSCI_NR_CPUS for sun7i >> ARM: Page align secure section only when it is executed in situ >> ARM: PSCI: Add fallback value for CONFIG_ARMV7_PSCI_NR_CPUS >> ARM: Add an empty secure stack section >> ARM: PSCI: Allocate PSCI stack in secure stack section >> ARM: PSCI: Remove unused psci_text_end symbol >> ARM: Add CONFIG_ARMV7_SECURE_MAX_SIZE and check size of secure section >> sunxi: Define CONFIG_ARMV7_SECURE_MAX_SIZE for sun6i/sun7i >> ARM: Move __secure definition to common asm/secure.h >> ARM: Add secure section for initialized data >> ARM: PSCI: Add helper functions to access per-CPU target PC storage >> ARM: PSCI: Switch to per-CPU target PC storage in secure data section >> ARM: PSCI: Make psci_get_cpu_stack_top local to armv7/psci.S >> >> arch/arm/cpu/armv7/Makefile | 1 + >> arch/arm/cpu/armv7/ls102xa/psci.S | 26 ++++---------- >> arch/arm/cpu/armv7/mx7/psci-mx7.c | 2 +- >> arch/arm/cpu/armv7/mx7/psci.S | 31 +++++------------ >> arch/arm/cpu/armv7/nonsec_virt.S | 7 +++- >> arch/arm/cpu/armv7/psci-common.c | 39 +++++++++++++++++++++ >> arch/arm/cpu/armv7/psci.S | 55 ++++++++++++++++++++++-------- >> arch/arm/cpu/armv7/sunxi/Makefile | 1 - >> arch/arm/cpu/armv7/sunxi/psci.c | 9 +++-- >> arch/arm/cpu/armv7/sunxi/psci_head.S | 66 >> ------------------------------------ >> arch/arm/cpu/u-boot.lds | 60 >> +++++++++++++++++++++++++------- >> arch/arm/include/asm/armv7.h | 2 ++ >> arch/arm/include/asm/config.h | 5 +++ >> arch/arm/include/asm/psci.h | 9 ++++- >> arch/arm/include/asm/secure.h | 3 ++ >> arch/arm/lib/sections.c | 2 ++ >> arch/arm/mach-tegra/psci.S | 16 ++++----- >> include/configs/sun6i.h | 1 + >> include/configs/sun7i.h | 2 ++ >> 19 files changed, 183 insertions(+), 154 deletions(-) >> create mode 100644 arch/arm/cpu/armv7/psci-common.c >> delete mode 100644 arch/arm/cpu/armv7/sunxi/psci_head.S >> > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot