Am Montag, 27. März 2023, 18:49:36 CEST schrieb Andy Chiu: > From: Greentime Hu <greentime.hu@xxxxxxxxxx> > > Early function calls, such as setup_vm(), relocate_enable_mmu(), > soc_early_init() etc, are free to operate on stack. However, > PT_SIZE_ON_STACK bytes at the head of the kernel stack are purposedly > reserved for the placement of per-task register context pointed by > task_pt_regs(p). Those functions may corrupt task_pt_regs if we overlap > the $sp with it. In fact, we had accidentally corrupted sstatus.VS in some > tests, treating the kernel to save V context before V was actually > allocated, resulting in a kernel panic. > > Thus, we should skip PT_SIZE_ON_STACK for $sp before making C function > calls from the top-level assembly. > > Co-developed-by: ShihPo Hung <shihpo.hung@xxxxxxxxxx> > Signed-off-by: ShihPo Hung <shihpo.hung@xxxxxxxxxx> > Co-developed-by: Vincent Chen <vincent.chen@xxxxxxxxxx> > Signed-off-by: Vincent Chen <vincent.chen@xxxxxxxxxx> > Signed-off-by: Greentime Hu <greentime.hu@xxxxxxxxxx> > Signed-off-by: Andy Chiu <andy.chiu@xxxxxxxxxx> > Reviewed-by: Conor Dooley <conor.dooley@xxxxxxxxxxxxx> Reviewed-by: Heiko Stuebner <heiko.stuebner@xxxxxxxx> Tested-by: Heiko Stuebner <heiko.stuebner@xxxxxxxx>