arm64: we need to initialize the percpu register storing the current task more earlier.

A call stack looks like the following:
sched_idletask
syslog_write
nx_vsyslog
syslog
getreg64
gic_validate_redist_version
arm64_gic_init
arm64_gic_secondary_init
arm64_boot_secondary_c_routine

Signed-off-by: hujun5 <hujun5@xiaomi.com>
This commit is contained in:
hujun5 2024-08-15 18:50:31 +08:00 committed by GUIDINGLI
parent 948ac9b4cc
commit aa0346610b
1 changed files with 6 additions and 4 deletions

View File

@ -115,10 +115,6 @@ static void arm64_smp_init_top(void)
{
struct tcb_s *tcb = current_task(this_cpu());
/* Init idle task to percpu reg */
up_update_task(tcb);
#ifndef CONFIG_SUPPRESS_INTERRUPTS
/* And finally, enable interrupts */
@ -226,6 +222,12 @@ int up_cpu_start(int cpu)
void arm64_boot_secondary_c_routine(void)
{
struct tcb_s *tcb = current_task(this_cpu());
/* Init idle task to percpu reg */
up_update_task(tcb);
#ifdef CONFIG_ARCH_HAVE_MPU
arm64_mpu_init(false);
#endif