You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by GitBox <gi...@apache.org> on 2021/07/02 02:46:22 UTC
[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #4020: SMP should depends on ARCH_INTERRUPTSTACK
xiaoxiang781216 commented on a change in pull request #4020:
URL: https://github.com/apache/incubator-nuttx/pull/4020#discussion_r662700570
##########
File path: sched/Kconfig
##########
@@ -268,13 +268,25 @@ config SMP
default n
depends on ARCH_HAVE_MULTICPU
depends on ARCH_HAVE_TESTSET
+ depends on ARCH_INTERRUPTSTACK != 0
select SPINLOCK
select SCHED_RESUMESCHEDULER
select IRQCOUNT
---help---
Enables support for Symmetric Multi-Processing (SMP) on a multi-CPU
platform.
+ SMP mode must work with ARCH_INTERRUPTSTACK, here is the fail case:
+
+ CPU0 thread0 -> IRQ enter -> add thread0 to block_list -> IRQ leave(crash)
+ ||
+ /\
+ / \
+ CPU1 thread1 -> block_task -> take thread0 from block_list -> run thread0
+
+ CPU0 IRQ handler use thread0's stack, but thread0 may switch to CPU1, that
+ will caused IRQ handler stack curroption.
Review comment:
It's important to document this fact, but it's more important to express the fact by contract and then avoid the wrong config in the future. It's a good to add a select/depend ARCH_INTERRUPTSTACK here.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org