From: Marc Zyngier <marc.zyngier@arm.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 04/11] ARM: allocate extra space for PSCI stack in secure section during link phase
Date: Thu, 26 May 2016 17:51:12 +0100 [thread overview]
Message-ID: <57472980.5020105@arm.com> (raw)
In-Reply-To: <1464271273-23223-5-git-send-email-wens@csie.org>
On 26/05/16 15:01, Chen-Yu Tsai wrote:
> The PSCI implementation expects at most 2 pages worth of space reserved
> at the end of the secure section for its stacks. If PSCI is relocated to
> secure SRAM, then everything is fine. If no secure SRAM is available,
> and PSCI remains in main memory, the reserved memory space doesn't cover
> the space used by the stack.
>
> If one accesses PSCI after Linux has fully booted, the memory that should
> have been reserved for the PSCI stacks may have been used by the kernel
> or userspace, and would be corrupted. Observed after effects include the
> system hanging or telinit core dumping when trying to reboot. It seems
> the init process gets hit the most on my test bed.
>
> This fix allocates the space used by the PSCI stacks in the secure
> section by skipping pages in the linker script, but only when there is
> no secure SRAM, to avoid bloating the binary.
>
> This fix is only a stop gap. It would be better to rework the stack
> allocation mechanism, maybe with proper usage of CONFIG_ macros and an
> explicit symbol.
>
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
>
> squash! ARM: allocate extra space for PSCI stack in secure section during link phase
> ---
> arch/arm/cpu/u-boot.lds | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
> index cfab8b041234..0770f8c878d1 100644
> --- a/arch/arm/cpu/u-boot.lds
> +++ b/arch/arm/cpu/u-boot.lds
> @@ -50,6 +50,7 @@ SECTIONS
>
> #ifndef CONFIG_ARMV7_SECURE_BASE
> #define CONFIG_ARMV7_SECURE_BASE
> +#define __ARMV7_ALLOCATE_SECURE_STACK
ALLOCATE_SECURE_STACK is a bit of a misnomer, because nothing is secure
at all there (it is in RAM).
Something like PSCI_RAM_STACK would be more accurate.
> #endif
>
> .__secure_start : {
> @@ -67,6 +68,12 @@ SECTIONS
> SIZEOF(.__secure_start) +
> SIZEOF(.secure_text);
>
> +#ifdef __ARMV7_ALLOCATE_SECURE_STACK
> + /* Align to page boundary and skip 2 pages */
> + . = (. & ~ 0xfff) + 0x2000;
> +#undef __ARMV7_ALLOCATE_SECURE_STACK
> +#endif
> +
> __secure_end_lma = .;
> .__secure_end : AT(__secure_end_lma) {
> *(.__secure_end)
>
Thanks,
M.
--
Jazz is not dead. It just smells funny...
next prev parent reply other threads:[~2016-05-26 16:51 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-26 14:01 [U-Boot] [PATCH v2 00/11] sunxi: PSCI implementation rewrite in C Chen-Yu Tsai
2016-05-26 14:01 ` [U-Boot] [PATCH v2 01/11] ARM: PSCI: use only r0 and r3 in psci_get_cpu_stack_top() Chen-Yu Tsai
2016-05-26 14:01 ` [U-Boot] [PATCH v2 02/11] ARM: PSCI: save and restore clobbered registers in v7_flush_dcache_all Chen-Yu Tsai
2016-05-26 14:01 ` [U-Boot] [PATCH v2 03/11] ARM: PSCI: export common PSCI function declarations for C code Chen-Yu Tsai
2016-05-26 16:49 ` Marc Zyngier
2016-05-27 4:29 ` Chen-Yu Tsai
2016-05-26 14:01 ` [U-Boot] [PATCH v2 04/11] ARM: allocate extra space for PSCI stack in secure section during link phase Chen-Yu Tsai
2016-05-26 16:51 ` Marc Zyngier [this message]
2016-05-26 14:01 ` [U-Boot] [PATCH v2 05/11] sunxi: Make CPUCFG_BASE macro names the same across families Chen-Yu Tsai
2016-05-26 14:01 ` [U-Boot] [PATCH v2 06/11] sunxi: Add packed attribute to struct sunxi_prcm_reg Chen-Yu Tsai
2016-05-26 14:01 ` [U-Boot] [PATCH v2 07/11] sunxi: Add missing linux/types.h header for cpucfg_sun6i.h Chen-Yu Tsai
2016-05-26 14:01 ` [U-Boot] [PATCH v2 08/11] sunxi: Group cpu core related controls together Chen-Yu Tsai
2016-05-26 14:01 ` [U-Boot] [PATCH v2 09/11] sunxi: Add CPUCFG debug lock and sun7i cpu power controls Chen-Yu Tsai
2016-05-26 14:01 ` [U-Boot] [PATCH v2 10/11] sunxi: Add base address for GIC Chen-Yu Tsai
2016-05-26 14:01 ` [U-Boot] [PATCH v2 11/11] sunxi: Add PSCI implementation in C Chen-Yu Tsai
2016-05-26 17:19 ` Marc Zyngier
2016-05-27 4:22 ` Chen-Yu Tsai
2016-06-03 18:26 ` Marc Zyngier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=57472980.5020105@arm.com \
--to=marc.zyngier@arm.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox