[U-Boot] [PATCH 00/15] ARM: PSCI: Add secure stack and data sections

Hongbo Zhang macro.wave.z at gmail.com
Fri Jul 1 12:17:42 CEST 2016


I applied all these patches and had a test.
Patch 13/15 needs a manual merge, all the others apply well.
There is no compiling warnings or errors.
The PSCI function runs well after applying these patches.
I will leave my Tested-by: tags in each patch touched separately.

On Thu, Jun 30, 2016 at 5:58 PM, Hongbo Zhang <macro.wave.z at gmail.com> wrote:
> I like the idea of secure stack and secure data section.
> I'd like to test this patch set, but only the psci common part and
> freescale platform's changes will be covered.
>
>
> On Sun, Jun 19, 2016 at 12:38 PM, Chen-Yu Tsai <wens at csie.org> 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.
>>
>> 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
>>
>> --
>> 2.8.1
>>


More information about the U-Boot mailing list