Update TODO list
This commit is contained in:
parent
5fb988bdc8
commit
4c0aa6133c
55
TODO
55
TODO
@ -1,4 +1,4 @@
|
|||||||
NuttX TODO List (Last updated June 6, 2018)
|
NuttX TODO List (Last updated June 16, 2018)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
This file summarizes known NuttX bugs, limitations, inconsistencies with
|
This file summarizes known NuttX bugs, limitations, inconsistencies with
|
||||||
@ -10,7 +10,7 @@ issues related to each board port.
|
|||||||
nuttx/:
|
nuttx/:
|
||||||
|
|
||||||
(15) Task/Scheduler (sched/)
|
(15) Task/Scheduler (sched/)
|
||||||
(1) SMP
|
(3) SMP
|
||||||
(1) Memory Management (mm/)
|
(1) Memory Management (mm/)
|
||||||
(0) Power Management (drivers/pm)
|
(0) Power Management (drivers/pm)
|
||||||
(3) Signals (sched/signal, arch/)
|
(3) Signals (sched/signal, arch/)
|
||||||
@ -431,6 +431,57 @@ o SMP
|
|||||||
Status: Closed
|
Status: Closed
|
||||||
Priority: High on platforms that may have the issue.
|
Priority: High on platforms that may have the issue.
|
||||||
|
|
||||||
|
Title: MISUSE OF sched_lock() IN SMP MODE
|
||||||
|
Description: The OS API sched_lock() disables pre-emption and locks a
|
||||||
|
task in place. In the single CPU case, it is also often
|
||||||
|
used to enforce a simple critical section since not other
|
||||||
|
task can run while pre-emption is locked.
|
||||||
|
|
||||||
|
This, however, does not generalize to the SMP case. In the
|
||||||
|
SMP case, there are multiple tasks running on multiple CPUs.
|
||||||
|
The basic behavior is still correct: The task that has
|
||||||
|
locked pre-emption will not be suspended. However, there
|
||||||
|
is no longer any protection for use as a critical section:
|
||||||
|
tasks running on other CPUs may still execute that that
|
||||||
|
unprotect code regsion.
|
||||||
|
|
||||||
|
The solution is to replace the use of sched_lock() with
|
||||||
|
stronger protection such as spin_lock_irqsave().
|
||||||
|
Status: Open
|
||||||
|
Priority: Medium for SMP system. Not critical to single CPU systems.
|
||||||
|
NOTE: There are no known bugs from this protential problem.
|
||||||
|
|
||||||
|
Title: CORTEX-A GIC SGI INTERRUPT MASKING
|
||||||
|
Description: In the ARMv7-A GICv2 architecture, the inter-processor
|
||||||
|
interrupts (SGIs) are non maskable and will occur even if
|
||||||
|
interrupts are disabled. This addes a lot of complexity
|
||||||
|
to the ARMV7-A critical section design.
|
||||||
|
|
||||||
|
Masayuki Ishakawa has suggest the use of the GICv2 ICCMPR
|
||||||
|
register to control SGI interrupts. This register (much like
|
||||||
|
the ARMv7-M BASEPRI register) can be used to mask interrupts
|
||||||
|
by interrupt priority. Since SGIs may be assigned priorities
|
||||||
|
the ICCMPR should be able to block execution of SGIs as well.
|
||||||
|
|
||||||
|
Such an implementation would be very similar to the BASEPRI
|
||||||
|
(vs PRIMASK) implementation for the ARMv7-M: (1) The
|
||||||
|
up_irq_save() and up_irq_restore() registers would have to
|
||||||
|
set/restore the ICCMPR register, (2) register setup logic in
|
||||||
|
arch/arm/src/armv7-a for task start-up and signal dispatch
|
||||||
|
would have to set the ICCMPR correctly, and (3) the 'xcp'
|
||||||
|
structure sould have to be extended to hold the ICCMPR
|
||||||
|
register; logic would have to added be save/restore the
|
||||||
|
ICCMPR register in the 'xcp' structure on each interrupt and
|
||||||
|
context switch.
|
||||||
|
|
||||||
|
This would also be an essential part of a high priority,
|
||||||
|
nested interrupt implementation (unrelated).
|
||||||
|
Status: Open
|
||||||
|
Priority: Low. There are no know issues with the current non-maskable
|
||||||
|
SGI implementation. This change would, however, lead to
|
||||||
|
simplification in the design and permit commonality with
|
||||||
|
other, non-GIC imoplementations.
|
||||||
|
|
||||||
o Memory Management (mm/)
|
o Memory Management (mm/)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user