From a5682a6335b7201bce75b66aa994314342bb4463 Mon Sep 17 00:00:00 2001 From: Gregory Nutt <gnutt@nuttx.org> Date: Mon, 21 Jan 2019 07:37:33 -0600 Subject: [PATCH] Update TODO list --- TODO | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index cc39384ab4..5010c04eb6 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,4 @@ -NuttX TODO List (Last updated January 7, 2019) +NuttX TODO List (Last updated January 21, 2019) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This file summarizes known NuttX bugs, limitations, inconsistencies with @@ -10,7 +10,7 @@ issues related to each board port. nuttx/: (16) Task/Scheduler (sched/) - (4) SMP + (5) SMP (1) Memory Management (mm/) (0) Power Management (drivers/pm) (3) Signals (sched/signal, arch/) @@ -582,6 +582,38 @@ o SMP an bugs caused by this. But I believe that failures are possible. + Title: POSSIBLE FOR TWO CPUs TO HOLD A CRITICAL SECTION? + Description: The SMP design includes logic that will support multiple + CPUs holding a critical section. Is this necessary? How + can that occur? I think it can occur in the following + situation: + + CPU0 - Task A is running. + - The CPU0 IDLE task is the only other task in the + CPU0 ready-to-run list. + CPU1 - Task B is running. + - Task C is blocked but remains in the ready-to-run + list because of a CPU affinity selection. Task C + also holds the critical section which is temporarily + relinquished because Task C is blocked by Task B. + - The CPU1 IDLE task is at the end of the list. + + Actions: + 1. Task A/CPU 0 takes the critical section. + 2. Task B/CPU 1 suspends waiting for an event + 3. Task C is restarted. + + Now both Task A and Task C hold the critical section. + + This problem has never been observed, but seems to be a + possibility. I believe it could only occur if CPU affinity + is used (otherwise, tasks will pend must as when pre- + emption is disabled). +Status: Open +Priority: Unknown. Might be high, but first we would need to confirm + that this situation can occur and that is actually causes + a failure. + o Memory Management (mm/) ^^^^^^^^^^^^^^^^^^^^^^^