From 54e07316669db7e38f4d6d002ca80fb2ebd84e9d Mon Sep 17 00:00:00 2001 From: Evgeniy Paltsev Date: Tue, 19 Sep 2023 22:20:36 +0100 Subject: [PATCH] kernel: SMP: allow more than 5 CPU cores Previously we limit maximum number of CPU cores to 5, now be bumping this restriction so we can use 12 cores. Signed-off-by: Eugeniy Paltsev Signed-off-by: Evgeniy Paltsev --- include/zephyr/kernel/thread.h | 4 ++++ kernel/Kconfig | 4 ++-- kernel/sched.c | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/include/zephyr/kernel/thread.h b/include/zephyr/kernel/thread.h index eaed5b5d21d..3394a65bae2 100644 --- a/include/zephyr/kernel/thread.h +++ b/include/zephyr/kernel/thread.h @@ -121,8 +121,12 @@ struct _thread_base { #ifdef CONFIG_SCHED_CPU_MASK /* "May run on" bits for each CPU */ +#if CONFIG_MP_MAX_NUM_CPUS <= 8 uint8_t cpu_mask; +#else + uint16_t cpu_mask; #endif +#endif /* CONFIG_SCHED_CPU_MASK */ /* data returned by APIs */ void *swap_data; diff --git a/kernel/Kconfig b/kernel/Kconfig index fce7598aa18..7b4fd19c85f 100644 --- a/kernel/Kconfig +++ b/kernel/Kconfig @@ -989,7 +989,7 @@ config SMP_BOOT_DELAY config MP_NUM_CPUS int "Number of CPUs/cores" default MP_MAX_NUM_CPUS - range 1 5 + range 1 12 help Number of multiprocessing-capable cores available to the multicpu API and SMP features. @@ -997,7 +997,7 @@ config MP_NUM_CPUS config MP_MAX_NUM_CPUS int "Maximum number of CPUs/cores" default 1 - range 1 5 + range 1 12 help Maximum number of multiprocessing-capable cores available to the multicpu API and SMP features. diff --git a/kernel/sched.c b/kernel/sched.c index ea157459dd2..f668c181a27 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -1621,8 +1621,8 @@ static inline int z_vrfy_k_is_preempt_thread(void) #ifdef CONFIG_SCHED_CPU_MASK # ifdef CONFIG_SMP -/* Right now we use a single byte for this mask */ -BUILD_ASSERT(CONFIG_MP_MAX_NUM_CPUS <= 8, "Too many CPUs for mask word"); +/* Right now we use a two byte for this mask */ +BUILD_ASSERT(CONFIG_MP_MAX_NUM_CPUS <= 16, "Too many CPUs for mask word"); # endif