Messages in this thread |  | | Date | Sat, 2 Jul 2022 14:50:28 -0700 | From | Yury Norov <> | Subject | Re: [PATCH v4 4/5] cpumask: Add UP optimised for_each_*_cpu versions |
| |
On Sat, Jul 02, 2022 at 02:47:55PM -0700, Yury Norov wrote: > On Sat, Jul 02, 2022 at 06:08:27PM +0200, Sander Vanheule wrote: > > On uniprocessor builds, the following loops will always run over a mask > > that contains one enabled CPU (cpu0): > > - for_each_possible_cpu > > - for_each_online_cpu > > - for_each_present_cpu > > > > Provide uniprocessor-specific macros for these loops, that always run > > exactly once. > > > > Signed-off-by: Sander Vanheule <sander@svanheule.net> > > Acked-by: Yury Norov <yury.norov@gmail.com>
I think this patch should go before #2 to avoid possible issues while bisecting...
> > > --- > > include/linux/cpumask.h | 7 +++++++ > > 1 file changed, 7 insertions(+) > > > > diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h > > index 7fbef41b3093..6c5b4ee000f2 100644 > > --- a/include/linux/cpumask.h > > +++ b/include/linux/cpumask.h > > @@ -750,9 +750,16 @@ extern const DECLARE_BITMAP(cpu_all_bits, NR_CPUS); > > /* First bits of cpu_bit_bitmap are in fact unset. */ > > #define cpu_none_mask to_cpumask(cpu_bit_bitmap[0]) > > > > +#if NR_CPUS == 1 > > +/* Uniprocessor: the possible/online/present masks are always "1" */ > > +#define for_each_possible_cpu(cpu) for ((cpu) = 0; (cpu) < 1; (cpu)++) > > +#define for_each_online_cpu(cpu) for ((cpu) = 0; (cpu) < 1; (cpu)++) > > +#define for_each_present_cpu(cpu) for ((cpu) = 0; (cpu) < 1; (cpu)++) > > +#else > > #define for_each_possible_cpu(cpu) for_each_cpu((cpu), cpu_possible_mask) > > #define for_each_online_cpu(cpu) for_each_cpu((cpu), cpu_online_mask) > > #define for_each_present_cpu(cpu) for_each_cpu((cpu), cpu_present_mask) > > +#endif > > > > /* Wrappers for arch boot code to manipulate normally-constant masks */ > > void init_cpu_present(const struct cpumask *src); > > -- > > 2.36.1
|  |