lib/s390x: fix SMP setup bug
The lowcore pointer pointing to the current CPU (THIS_CPU) was not initialized for the boot CPU. The pointer is needed for correct interrupt handling, which is needed in the setup process before the struct cpu array is allocated. The bug went unnoticed because some environments (like qemu/KVM) clear all memory and don't write anything in the lowcore area before starting the payload. The pointer thus pointed to 0, an area of memory also not used. Other environments will write to memory before starting the payload, causing the unit tests to crash at the first interrupt. Fix by assigning a temporary struct cpu before the rest of the setup process, and assigning the pointer to the correct allocated struct during smp initialization. Fixes: 4e5dd758 ("lib: s390x: better smp interrupt checks") Signed-off-by:Claudio Imbrenda <imbrenda@linux.ibm.com> Reviewed-by:
Nico Boehr <nrb@linux.ibm.com> Reviewed-by:
Janosch Frank <frankja@linux.ibm.com> Tested-by:
Nico Boehr <nrb@linux.ibm.com> Reported-by:
Janosch Frank <frankja@linux.ibm.com> Link: https://lore.kernel.org/r/20220818152114.213135-1-imbrenda@linux.ibm.com Message-Id: <20220818152114.213135-1-imbrenda@linux.ibm.com> Signed-off-by:
Janosch Frank <frankja@linux.ibm.com>
Loading
Please register or sign in to comment