From 8fcb78003471dfa96db04c87747ebf475909e774 Mon Sep 17 00:00:00 2001 From: Florian Vaussard Date: Fri, 10 Mar 2017 15:12:44 +0100 Subject: [PATCH] kernel: arm: Increase idle stack size to fix corruption by FP_SHARING When enabling CONFIG_FP_SHARING on ARM, 64 extra bytes are necessary on the stack of each task in order to save FPU registers S16 to S31. In the case of the idle stack, the default value of 256 bytes is too small. As described in ZEP-1470, when the idle task is scheduled out, floating point registers are saved, which corrupts the stack frame (especially the saved PC value). When scheduling the idle task, the restored PC will jump to nowhere, leading to a Usage Fault. Increase the size of the idle stack by 64 bytes to fix this issue. JIRA: ZEP-1470 Change-Id: Ib800cd51e5189dda8bf59332db661c21399db3e3 Signed-off-by: Florian Vaussard --- kernel/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/Kconfig b/kernel/Kconfig index 0e5ae587fa1..4045a68549f 100644 --- a/kernel/Kconfig +++ b/kernel/Kconfig @@ -121,7 +121,7 @@ config IDLE_STACK_SIZE int prompt "Size of stack for idle thread" default 256 - default 320 if ARC + default 320 if ARC || (ARM && CPU_HAS_FPU) default 512 if RISCV32 default 1024 if XTENSA help