mirror of
https://github.com/apache/nuttx.git
synced 2026-05-28 11:56:10 +08:00
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:
committed by
Alin Jerpelea
parent
c7865ddca3
commit
bebc2d2405
@@ -210,6 +210,13 @@ bool up_cpu_pausereq(int cpu)
|
|||||||
|
|
||||||
int up_cpu_paused(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();
|
FAR struct tcb_s *tcb = this_task();
|
||||||
|
|
||||||
/* Update scheduler parameters */
|
/* 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));
|
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
|
/* Check for false alarms. Such false could occur as a consequence of
|
||||||
* some deadlock breaking logic that might have already serviced the SG2
|
* some deadlock breaking logic that might have already serviced the SG2
|
||||||
* interrupt by calling up_cpu_paused.
|
* interrupt by calling up_cpu_paused.
|
||||||
|
|||||||
Reference in New Issue
Block a user