arch: xtensa: Fix the pause handler for SMP
Summary: - Apply the same logic added to cxd56_cpupause.c Impact: - SMP only Testing: - Tested with esp32-core:smp (QEMU) - Run smp and ostest Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
This commit is contained in:
parent
a500bd0238
commit
1914aac05f
|
@ -192,7 +192,18 @@ void xtensa_pause_handler(void)
|
||||||
|
|
||||||
if (spin_islocked(&g_cpu_paused[cpu]))
|
if (spin_islocked(&g_cpu_paused[cpu]))
|
||||||
{
|
{
|
||||||
|
/* NOTE: up_cpu_paused() needs to be executed in a critical section
|
||||||
|
* to ensure that this CPU holds g_cpu_irqlock. However, adding
|
||||||
|
* a critical section in up_cpu_paused() is not a good idea,
|
||||||
|
* because it is also called in enter_critical_section() to break
|
||||||
|
* a deadlock
|
||||||
|
*/
|
||||||
|
|
||||||
|
irqstate_t flags = enter_critical_section();
|
||||||
|
|
||||||
up_cpu_paused(cpu);
|
up_cpu_paused(cpu);
|
||||||
|
|
||||||
|
leave_critical_section(flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue