arch: cxd56xx: Fix IRQ request handling in cxd56_cpupause.c
Summary: - During Wi-Fi audio streaming test, I noticed data corruption in tcb - Finally, I found an issue in IRQ request handing with IPI - This commit fixes this issue Impact: - Affects SMP only Testing: - Tested with spresense:wifi_smp Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
This commit is contained in:
parent
c7865ddca3
commit
bebc2d2405
@ -210,6 +210,13 @@ bool up_cpu_pausereq(int cpu)
|
||||
|
||||
int up_cpu_paused(int cpu)
|
||||
{
|
||||
/* Fistly, check if this IPI is to enable/disable IRQ */
|
||||
|
||||
if (handle_irqreq(cpu))
|
||||
{
|
||||
return OK;
|
||||
}
|
||||
|
||||
FAR struct tcb_s *tcb = this_task();
|
||||
|
||||
/* Update scheduler parameters */
|
||||
@ -283,13 +290,6 @@ int arm_pause_handler(int irq, void *c, FAR void *arg)
|
||||
|
||||
putreg32(0, CXD56_CPU_P2_INT + (4 * cpu));
|
||||
|
||||
/* Check if this IPI is to enable/disable IRQ */
|
||||
|
||||
if (handle_irqreq(cpu))
|
||||
{
|
||||
return OK;
|
||||
}
|
||||
|
||||
/* Check for false alarms. Such false could occur as a consequence of
|
||||
* some deadlock breaking logic that might have already serviced the SG2
|
||||
* interrupt by calling up_cpu_paused.
|
||||
|
Loading…
x
Reference in New Issue
Block a user