2020-06-10 01:47:58

by Qian Cai

[permalink] [raw]
Subject: [PATCH] s390: set NODES_SHIFT=0 when NUMA=n

When NUMA=n and nr_node_ids=2, in apply_wqattrs_prepare(), it has,

for_each_node(node) {
if (wq_calc_node_cpumask(...

where it will trigger a booting warning,

WARNING: workqueue cpumask: online intersect > possible intersect

because it found 2 nodes and wq_numa_possible_cpumask[1] is an empty
cpumask. NUMA=y has no such problem because node_possible_map will be
initialized properly containing only node 0. Fix it by setting
NODES_SHIFT=0 when NUMA=n.

Fixes: 701dc81e7412 ("s390/mm: remove fake numa support")
Signed-off-by: Qian Cai <[email protected]>
---
arch/s390/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index f854faff38c3..59625356d18a 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -462,7 +462,8 @@ config NUMA

config NODES_SHIFT
int
- default "1"
+ default "1" if NUMA
+ default "0"

config SCHED_SMT
def_bool n
--
2.21.0 (Apple Git-122.2)


2020-06-10 08:51:18

by Heiko Carstens

[permalink] [raw]
Subject: Re: [PATCH] s390: set NODES_SHIFT=0 when NUMA=n

On Tue, Jun 09, 2020 at 09:45:01PM -0400, Qian Cai wrote:
> When NUMA=n and nr_node_ids=2, in apply_wqattrs_prepare(), it has,
>
> for_each_node(node) {
> if (wq_calc_node_cpumask(...
>
> where it will trigger a booting warning,
>
> WARNING: workqueue cpumask: online intersect > possible intersect
>
> because it found 2 nodes and wq_numa_possible_cpumask[1] is an empty
> cpumask. NUMA=y has no such problem because node_possible_map will be
> initialized properly containing only node 0. Fix it by setting
> NODES_SHIFT=0 when NUMA=n.
>
> Fixes: 701dc81e7412 ("s390/mm: remove fake numa support")
> Signed-off-by: Qian Cai <[email protected]>
> ---
> arch/s390/Kconfig | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)

Thanks! However I committed a different solution. Hope you don't mind:

From dd3f1f08f2317768b35b2df3ff8285185df7e195 Mon Sep 17 00:00:00 2001
From: Heiko Carstens <[email protected]>
Date: Wed, 10 Jun 2020 10:36:05 +0200
Subject: [PATCH] s390/numa: let NODES_SHIFT depend on NEED_MULTIPLE_NODES

Qian Cai reported:
---
When NUMA=n and nr_node_ids=2, in apply_wqattrs_prepare(), it has,

for_each_node(node) {
if (wq_calc_node_cpumask(...

where it will trigger a booting warning,

WARNING: workqueue cpumask: online intersect > possible intersect

because it found 2 nodes and wq_numa_possible_cpumask[1] is an empty
cpumask.
---

Let NODES_SHIFT depend on NEED_MULTIPLE_NODES like it is done
on other architectures in order to fix this.

Fixes: 701dc81e7412 ("s390/mm: remove fake numa support")
Reported-by: Qian Cai <[email protected]>
Signed-off-by: Heiko Carstens <[email protected]>
---
arch/s390/Kconfig | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index 2167bce993ff..ae01be202204 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -462,6 +462,7 @@ config NUMA

config NODES_SHIFT
int
+ depends on NEED_MULTIPLE_NODES
default "1"

config SCHED_SMT
--
2.17.1

2020-06-10 17:56:57

by Qian Cai

[permalink] [raw]
Subject: Re: [PATCH] s390: set NODES_SHIFT=0 when NUMA=n

On Wed, Jun 10, 2020 at 10:45:53AM +0200, Heiko Carstens wrote:
> On Tue, Jun 09, 2020 at 09:45:01PM -0400, Qian Cai wrote:
> > When NUMA=n and nr_node_ids=2, in apply_wqattrs_prepare(), it has,
> >
> > for_each_node(node) {
> > if (wq_calc_node_cpumask(...
> >
> > where it will trigger a booting warning,
> >
> > WARNING: workqueue cpumask: online intersect > possible intersect
> >
> > because it found 2 nodes and wq_numa_possible_cpumask[1] is an empty
> > cpumask. NUMA=y has no such problem because node_possible_map will be
> > initialized properly containing only node 0. Fix it by setting
> > NODES_SHIFT=0 when NUMA=n.
> >
> > Fixes: 701dc81e7412 ("s390/mm: remove fake numa support")
> > Signed-off-by: Qian Cai <[email protected]>
> > ---
> > arch/s390/Kconfig | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
>
> Thanks! However I committed a different solution. Hope you don't mind:

No problem with that at all.

>
> From dd3f1f08f2317768b35b2df3ff8285185df7e195 Mon Sep 17 00:00:00 2001
> From: Heiko Carstens <[email protected]>
> Date: Wed, 10 Jun 2020 10:36:05 +0200
> Subject: [PATCH] s390/numa: let NODES_SHIFT depend on NEED_MULTIPLE_NODES
>
> Qian Cai reported:
> ---
> When NUMA=n and nr_node_ids=2, in apply_wqattrs_prepare(), it has,
>
> for_each_node(node) {
> if (wq_calc_node_cpumask(...
>
> where it will trigger a booting warning,
>
> WARNING: workqueue cpumask: online intersect > possible intersect
>
> because it found 2 nodes and wq_numa_possible_cpumask[1] is an empty
> cpumask.
> ---
>
> Let NODES_SHIFT depend on NEED_MULTIPLE_NODES like it is done
> on other architectures in order to fix this.
>
> Fixes: 701dc81e7412 ("s390/mm: remove fake numa support")
> Reported-by: Qian Cai <[email protected]>
> Signed-off-by: Heiko Carstens <[email protected]>
> ---
> arch/s390/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
> index 2167bce993ff..ae01be202204 100644
> --- a/arch/s390/Kconfig
> +++ b/arch/s390/Kconfig
> @@ -462,6 +462,7 @@ config NUMA
>
> config NODES_SHIFT
> int
> + depends on NEED_MULTIPLE_NODES
> default "1"
>
> config SCHED_SMT
> --
> 2.17.1
>