smp: Remove CONFIG_SMP_IDLETHREAD_STACKSIZE
Summary: - The CONFIG_SMP_IDLETHREAD_STACKSIZE was introduced to optimize the idle stack size for other than CPU0 - However, there are no big differences between the idle stacks. - This commit removes the config to simplify the kernel code Impact: - All SMP configurations Testing: - Tested with ostest with the following configs - spresense:smp, spresense:rndis_smp - esp32-devkitc:smp (QEMU), maix-bit:smp (QEMU) - sabre-6quad:smp (QEMU), sabre-6quad:netnsh_smp (QEMU) - raspberrypi-pico:smp, sim:smp (x86_64) Signed-off-by: Masayuki Ishikawa <asayuki.Ishikawa@jp.sony.com>
This commit is contained in:
parent
f8e800765c
commit
1a9e7efde5
|
@ -163,7 +163,6 @@ additional settings:
|
|||
SMP is enabled::
|
||||
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SMP_IDLETHREAD_STACKSIZE=3072
|
||||
CONFIG_SMP_NCPUS=2
|
||||
CONFIG_SPINLOCK=y
|
||||
|
||||
|
@ -182,7 +181,6 @@ architecture ports to assure a correct implementation of the OS. The default
|
|||
version is for a single CPU but can be modified for an SMP test by adding::
|
||||
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SMP_IDLETHREAD_STACKSIZE=2048
|
||||
CONFIG_SMP_NCPUS=2
|
||||
CONFIG_SPINLOCK=y
|
||||
|
||||
|
|
|
@ -258,7 +258,6 @@ in :menuselection:`RTOS Features --> Tasks and Scheduling`, with::
|
|||
CONFIG_SPINLOCK=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SMP_NCPUS=2
|
||||
CONFIG_SMP_IDLETHREAD_STACKSIZE=3072
|
||||
|
||||
Debug Tip: During debug session, OpenOCD may mysteriously switch from one
|
||||
CPU to another. This behavior can be eliminated by uncommenting one of the
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
#define SMP_STACK_ALIGNMENT 8
|
||||
#define SMP_STACK_MASK 7
|
||||
#define SMP_STACK_SIZE ((CONFIG_SMP_IDLETHREAD_STACKSIZE + 7) & ~7)
|
||||
#define SMP_STACK_SIZE ((CONFIG_IDLETHREAD_STACKSIZE + 7) & ~7)
|
||||
#define SMP_STACK_WORDS (SMP_STACK_SIZE >> 2)
|
||||
|
||||
/****************************************************************************
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#ifdef CONFIG_SMP
|
||||
|
||||
#define SMP_STACK_MASK 7
|
||||
#define SMP_STACK_SIZE ((CONFIG_SMP_IDLETHREAD_STACKSIZE + 7) & ~7)
|
||||
#define SMP_STACK_SIZE ((CONFIG_IDLETHREAD_STACKSIZE + 7) & ~7)
|
||||
#define STACK_ISALIGNED(a) ((uintptr_t)(a) & ~SMP_STACK_MASK)
|
||||
|
||||
#if CONFIG_SMP_NCPUS > 1
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
* - tcb: The TCB of new CPU IDLE task
|
||||
* - stack_size: The requested stack size for the IDLE task. At least
|
||||
* this much must be allocated. This should be
|
||||
* CONFIG_SMP_IDLETHREAD_STACKSIZE.
|
||||
* CONFIG_IDLETHREAD_STACKSIZE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ uint32_t g_cpu1_idlestack[CPU1_IDLETHREAD_STACKWORDS]
|
|||
* - tcb: The TCB of new CPU IDLE task
|
||||
* - stack_size: The requested stack size for the IDLE task. At least
|
||||
* this much must be allocated. This should be
|
||||
* CONFIG_SMP_IDLETHREAD_STACKSIZE.
|
||||
* CONFIG_IDLETHREAD_STACKSIZE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
|
|
@ -35,13 +35,13 @@
|
|||
|
||||
/* An IDLE thread stack size for CPU0 must be defined */
|
||||
|
||||
#if !defined(CONFIG_SMP_IDLETHREAD_STACKSIZE)
|
||||
# error CONFIG_SMP_IDLETHREAD_STACKSIZE is not defined
|
||||
#elif CONFIG_SMP_IDLETHREAD_STACKSIZE < 16
|
||||
# error CONFIG_SMP_IDLETHREAD_STACKSIZE is to small
|
||||
#if !defined(CONFIG_IDLETHREAD_STACKSIZE)
|
||||
# error CONFIG_IDLETHREAD_STACKSIZE is not defined
|
||||
#elif CONFIG_IDLETHREAD_STACKSIZE < 16
|
||||
# error CONFIG_IDLETHREAD_STACKSIZE is to small
|
||||
#endif
|
||||
|
||||
#define CPU1_IDLETHREAD_STACKSIZE ((CONFIG_SMP_IDLETHREAD_STACKSIZE + 15) & ~15)
|
||||
#define CPU1_IDLETHREAD_STACKSIZE ((CONFIG_IDLETHREAD_STACKSIZE + 15) & ~15)
|
||||
#define CPU1_IDLETHREAD_STACKWORDS (CPU1_IDLETHREAD_STACKSIZE >> 2)
|
||||
|
||||
/****************************************************************************
|
||||
|
|
|
@ -137,7 +137,6 @@ CONFIG_SMARTFS_ALIGNED_ACCESS=y
|
|||
CONFIG_SMARTFS_MAXNAMLEN=30
|
||||
CONFIG_SMARTFS_MULTI_ROOT_DIRS=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SMP_IDLETHREAD_STACKSIZE=1024
|
||||
CONFIG_SMP_NCPUS=2
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPRESENSE_EXTENSION=y
|
||||
|
|
|
@ -711,7 +711,6 @@ be enabled with the following configuration settings:
|
|||
CONFIG_SPINLOCK=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SMP_NCPUS=4
|
||||
CONFIG_SMP_IDLETHREAD_STACKSIZE=2048
|
||||
|
||||
Open Issues:
|
||||
|
||||
|
|
|
@ -75,7 +75,6 @@ CONFIG_RR_INTERVAL=200
|
|||
CONFIG_SCHED_HPWORK=y
|
||||
CONFIG_SCHED_LPWORK=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SMP_IDLETHREAD_STACKSIZE=1024
|
||||
CONFIG_STACK_COLORATION=y
|
||||
CONFIG_START_DAY=8
|
||||
CONFIG_START_MONTH=3
|
||||
|
|
|
@ -315,7 +315,6 @@ SMP
|
|||
+CONFIG_SPINLOCK=y
|
||||
+CONFIG_SMP=y
|
||||
+CONFIG_SMP_NCPUS=2
|
||||
+CONFIG_SMP_IDLETHREAD_STACKSIZE=2048
|
||||
|
||||
You also must enable near-realtime-performance otherwise even long timeouts
|
||||
will expire before a CPU thread even has a chance to execute.
|
||||
|
|
|
@ -41,7 +41,6 @@ CONFIG_READLINE_CMD_HISTORY=y
|
|||
CONFIG_RR_INTERVAL=200
|
||||
CONFIG_SDCLONE_DISABLE=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SMP_IDLETHREAD_STACKSIZE=3072
|
||||
CONFIG_SMP_NCPUS=2
|
||||
CONFIG_SPI=y
|
||||
CONFIG_START_DAY=6
|
||||
|
|
|
@ -1871,7 +1871,7 @@ int up_cpu_index(void);
|
|||
* - tcb: The TCB of new CPU IDLE task
|
||||
* - stack_size: The requested stack size for the IDLE task. At least
|
||||
* this much must be allocated. This should be
|
||||
* CONFIG_SMP_IDLETHREAD_STACKSIZE.
|
||||
* CONFIG_IDLETHREAD_STACKSIZE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
|
|
@ -291,15 +291,6 @@ config SMP_NCPUS
|
|||
SMP configuration. However, running the SMP logic in a single CPU
|
||||
configuration is useful during certain testing.
|
||||
|
||||
config SMP_IDLETHREAD_STACKSIZE
|
||||
int "CPU IDLE stack size"
|
||||
default DEFAULT_TASK_STACKSIZE
|
||||
---help---
|
||||
Each CPU will have its own IDLE task. System initialization occurs
|
||||
on CPU0 and uses CONFIG_IDLETHREAD_STACKSIZE which will probably be
|
||||
larger than is generally needed. This setting provides the stack
|
||||
size for the IDLE task on CPUS 1 through (CONFIG_SMP_NCPUS-1).
|
||||
|
||||
endif # SMP
|
||||
|
||||
choice
|
||||
|
|
|
@ -120,7 +120,7 @@ int nx_smp_start(void)
|
|||
FAR struct tcb_s *tcb = current_task(cpu);
|
||||
DEBUGASSERT(tcb != NULL);
|
||||
|
||||
ret = up_cpu_idlestack(cpu, tcb, CONFIG_SMP_IDLETHREAD_STACKSIZE);
|
||||
ret = up_cpu_idlestack(cpu, tcb, CONFIG_IDLETHREAD_STACKSIZE);
|
||||
if (ret < 0)
|
||||
{
|
||||
serr("ERROR: Failed to allocate stack for CPU%d\n", cpu);
|
||||
|
|
Loading…
Reference in New Issue