Re: [PATCH 1/3] cpu/hotplug: Make HOTPLUG_PARALLEL independent of HOTPLUG_SMT

From: Thomas Gleixner
Date: Wed Jul 10 2024 - 16:51:52 EST


On Fri, Jul 05 2024 at 11:29, Jiaxun Yang wrote:
>
> +#ifdef CONFIG_HOTPLUG_SMT
> static inline bool cpuhp_smt_aware(void)
> {
> return cpu_smt_max_threads > 1;
> @@ -1817,6 +1818,7 @@ static inline const struct cpumask *cpuhp_get_primary_thread_mask(void)
> {
> return cpu_primary_thread_mask;
> }
> +#endif

Please provide stub functions in an #else clause

#else
static inline bool cpuhp_smt_aware(void) { return false; }
static inline cpumask *cpuhp_get_primary_thread_mask(void) { return NULL; }
#endif

or something to that effect.

> /*
> * On architectures which have enabled parallel bringup this invokes all BP
> @@ -1837,6 +1839,7 @@ static bool __init cpuhp_bringup_cpus_parallel(unsigned int ncpus)
> if (!__cpuhp_parallel_bringup)
> return false;
>
> +#ifdef CONFIG_HOTPLUG_SMT

That way you spare the ugly #ifdef here in the middle of the code and
the compiler can optimize it out.

> if (cpuhp_smt_aware()) {
> const struct cpumask *pmask = cpuhp_get_primary_thread_mask();
> static struct cpumask tmp_mask __initdata;
> @@ -1857,6 +1860,7 @@ static bool __init cpuhp_bringup_cpus_parallel(unsigned int ncpus)
> cpumask_andnot(&tmp_mask, mask, pmask);
> mask = &tmp_mask;
> }
> +#endif

Thanks,

tglx