2023-02-22 02:50:49

by Yury Norov

[permalink] [raw]
Subject: [PATCH 1/2] sched/topology: introduce node_has_cpus() macro

Currently, to check if NUMA node has CPUs, one has to use the
nr_cpus_node() macro, which ends up with cpumask_weight. We can do it
better with cpumask_empty(), because the latter can potentially return
earlier - as soon as 1st set bit found.

This patch adds a node_has_cpus() macro to implement that.

Signed-off-by: Yury Norov <[email protected]>
---
include/linux/topology.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/include/linux/topology.h b/include/linux/topology.h
index fea32377f7c7..7e0d8f8f5a39 100644
--- a/include/linux/topology.h
+++ b/include/linux/topology.h
@@ -39,9 +39,11 @@
#define nr_cpus_node(node) cpumask_weight(cpumask_of_node(node))
#endif

+#define node_has_cpus(node) (!cpumask_empty(cpumask_of_node(node)))
+
#define for_each_node_with_cpus(node) \
for_each_online_node(node) \
- if (nr_cpus_node(node))
+ if (node_has_cpus(node))

int arch_update_cpu_topology(void);

--
2.34.1



2023-02-22 02:50:51

by Yury Norov

[permalink] [raw]
Subject: [PATCH 2/2] powerpc: use node_has_cpus() instead of nr_cpus_node()

Use node_has_cpus() as more efficient alternative to nr_cpus_node()
where possible.

Signed-off-by: Yury Norov <[email protected]>
---
arch/powerpc/platforms/cell/spu_priv1_mmio.c | 2 +-
arch/powerpc/platforms/cell/spufs/sched.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/platforms/cell/spu_priv1_mmio.c b/arch/powerpc/platforms/cell/spu_priv1_mmio.c
index d150e3987304..55b5024b256b 100644
--- a/arch/powerpc/platforms/cell/spu_priv1_mmio.c
+++ b/arch/powerpc/platforms/cell/spu_priv1_mmio.c
@@ -64,7 +64,7 @@ static void cpu_affinity_set(struct spu *spu, int cpu)
u64 target;
u64 route;

- if (nr_cpus_node(spu->node)) {
+ if (node_has_cpus(spu->node)) {
const struct cpumask *spumask = cpumask_of_node(spu->node),
*cpumask = cpumask_of_node(cpu_to_node(cpu));

diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c
index 99bd027a7f7c..9d29cc2c6bcb 100644
--- a/arch/powerpc/platforms/cell/spufs/sched.c
+++ b/arch/powerpc/platforms/cell/spufs/sched.c
@@ -154,7 +154,7 @@ void spu_update_sched_info(struct spu_context *ctx)

static int __node_allowed(struct spu_context *ctx, int node)
{
- if (nr_cpus_node(node)) {
+ if (node_has_cpus(node)) {
const struct cpumask *mask = cpumask_of_node(node);

if (cpumask_intersects(mask, &ctx->cpus_allowed))
--
2.34.1


2023-03-15 16:49:22

by Valentin Schneider

[permalink] [raw]
Subject: Re: [PATCH 1/2] sched/topology: introduce node_has_cpus() macro

On 21/02/23 18:50, Yury Norov wrote:
> Currently, to check if NUMA node has CPUs, one has to use the
> nr_cpus_node() macro, which ends up with cpumask_weight. We can do it
> better with cpumask_empty(), because the latter can potentially return
> earlier - as soon as 1st set bit found.
>
> This patch adds a node_has_cpus() macro to implement that.
>
> Signed-off-by: Yury Norov <[email protected]>

Reviewed-by: Valentin Schneider <[email protected]>


2023-03-15 16:49:31

by Valentin Schneider

[permalink] [raw]
Subject: Re: [PATCH 2/2] powerpc: use node_has_cpus() instead of nr_cpus_node()

On 21/02/23 18:50, Yury Norov wrote:
> Use node_has_cpus() as more efficient alternative to nr_cpus_node()
> where possible.
>
> Signed-off-by: Yury Norov <[email protected]>

Reviewed-by: Valentin Schneider <[email protected]>