LinuxPPC-Dev Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v4 0/5] Early node associativity
@ 2019-09-13 11:09 Srikar Dronamraju
  2019-09-13 11:09 ` [PATCH v4 1/5] powerpc/vphn: Check for error from hcall_vphn Srikar Dronamraju
                   ` (5 more replies)
  0 siblings, 6 replies; 13+ messages in thread
From: Srikar Dronamraju @ 2019-09-13 11:09 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Nathan Lynch, Srikar Dronamraju, Nicholas Piggin, Abdul Haleem,
	Satheesh Rajendran, linuxppc-dev

Note: (Only patch 3 changes from v3)

Abdul reported  a warning on a shared lpar.
"WARNING: workqueue cpumask: online intersect > possible intersect".
This is because per node workqueue possible mask is set very early in the
boot process even before the system was querying the home node
associativity. However per node workqueue online cpumask gets updated
dynamically. Hence there is a chance when per node workqueue online cpumask
is a superset of per node workqueue possible mask.

Link for v1: https://patchwork.ozlabs.org/patch/1151658
Changelog: v1->v2
 - Handled comments from Nathan Lynch.

Link for v2: http://lkml.kernel.org/r/20190829055023.6171-1-srikar@linux.vnet.ibm.com
Changelog: v2->v3
 - Handled comments from Nathan Lynch.

Link for v3: http://lkml.kernel.org/r/20190906135020.19772-1-srikar@linux.vnet.ibm.com
Changelog: v3->v4
 - Added a warning as suggested by Nathan Lynch.

Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Abdul Haleem <abdhalee@linux.vnet.ibm.com>
Cc: Nathan Lynch <nathanl@linux.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: Satheesh Rajendran <sathnaga@linux.vnet.ibm.com>

Srikar Dronamraju (5):
  powerpc/vphn: Check for error from hcall_vphn
  powerpc/numa: Handle extra hcall_vphn error cases
  powerpc/numa: Use cpu node map of first sibling thread
  powerpc/numa: Early request for home node associativity
  powerpc/numa: Remove late request for home node associativity

 arch/powerpc/include/asm/topology.h   |  4 --
 arch/powerpc/kernel/smp.c             |  5 --
 arch/powerpc/mm/numa.c                | 99 ++++++++++++++++++++++++++---------
 arch/powerpc/platforms/pseries/vphn.c |  3 +-
 4 files changed, 77 insertions(+), 34 deletions(-)

-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v4 1/5] powerpc/vphn: Check for error from hcall_vphn
  2019-09-13 11:09 [PATCH v4 0/5] Early node associativity Srikar Dronamraju
@ 2019-09-13 11:09 ` Srikar Dronamraju
  2019-10-02 17:51   ` Nathan Lynch
  2019-09-13 11:09 ` [PATCH v4 2/5] powerpc/numa: Handle extra hcall_vphn error cases Srikar Dronamraju
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Srikar Dronamraju @ 2019-09-13 11:09 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Nathan Lynch, Satheesh Rajendran, linuxppc-dev,
	Srikar Dronamraju, Nicholas Piggin

There is no value in unpacking associativity, if
H_HOME_NODE_ASSOCIATIVITY hcall has returned an error.

Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Nathan Lynch <nathanl@linux.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: Satheesh Rajendran <sathnaga@linux.vnet.ibm.com>
Reported-by: Abdul Haleem <abdhalee@linux.vnet.ibm.com>
---
Changelog (v2->v1):
- Split the patch into 2(Suggested by Nathan).

 arch/powerpc/platforms/pseries/vphn.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/platforms/pseries/vphn.c b/arch/powerpc/platforms/pseries/vphn.c
index 3f07bf6..cca474a 100644
--- a/arch/powerpc/platforms/pseries/vphn.c
+++ b/arch/powerpc/platforms/pseries/vphn.c
@@ -82,7 +82,8 @@ long hcall_vphn(unsigned long cpu, u64 flags, __be32 *associativity)
 	long retbuf[PLPAR_HCALL9_BUFSIZE] = {0};
 
 	rc = plpar_hcall9(H_HOME_NODE_ASSOCIATIVITY, retbuf, flags, cpu);
-	vphn_unpack_associativity(retbuf, associativity);
+	if (rc == H_SUCCESS)
+		vphn_unpack_associativity(retbuf, associativity);
 
 	return rc;
 }
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v4 2/5] powerpc/numa: Handle extra hcall_vphn error cases
  2019-09-13 11:09 [PATCH v4 0/5] Early node associativity Srikar Dronamraju
  2019-09-13 11:09 ` [PATCH v4 1/5] powerpc/vphn: Check for error from hcall_vphn Srikar Dronamraju
@ 2019-09-13 11:09 ` Srikar Dronamraju
  2019-10-02 17:54   ` Nathan Lynch
  2019-09-13 11:09 ` [PATCH v4 3/5] powerpc/numa: Use cpu node map of first sibling thread Srikar Dronamraju
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Srikar Dronamraju @ 2019-09-13 11:09 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Nathan Lynch, Satheesh Rajendran, linuxppc-dev,
	Srikar Dronamraju, Nicholas Piggin

Currently code handles H_FUNCTION, H_SUCCESS, H_HARDWARE return codes.
However hcall_vphn can return other return codes. Now it also handles
H_PARAMETER return code.  Also the rest return codes are handled under the
default case.

Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Nathan Lynch <nathanl@linux.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: Satheesh Rajendran <sathnaga@linux.vnet.ibm.com>
Reported-by: Abdul Haleem <abdhalee@linux.vnet.ibm.com>
---
Changelog (v2->v1):
 Handled comments from Nathan:
  - Split patch from patch 1.
  - Corrected a problem where I missed calling stop_topology_update().
  - Using pr_err_ratelimited instead of printk.

 arch/powerpc/mm/numa.c | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index 50d68d2..8fbe57c 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -1191,23 +1191,30 @@ static long vphn_get_associativity(unsigned long cpu,
 				VPHN_FLAG_VCPU, associativity);
 
 	switch (rc) {
+	case H_SUCCESS:
+		dbg("VPHN hcall succeeded. Reset polling...\n");
+		timed_topology_update(0);
+		goto out;
+
 	case H_FUNCTION:
-		printk_once(KERN_INFO
-			"VPHN is not supported. Disabling polling...\n");
-		stop_topology_update();
+		pr_err_ratelimited("VPHN unsupported. Disabling polling...\n");
 		break;
 	case H_HARDWARE:
-		printk(KERN_ERR
-			"hcall_vphn() experienced a hardware fault "
+		pr_err_ratelimited("hcall_vphn() experienced a hardware fault "
 			"preventing VPHN. Disabling polling...\n");
-		stop_topology_update();
 		break;
-	case H_SUCCESS:
-		dbg("VPHN hcall succeeded. Reset polling...\n");
-		timed_topology_update(0);
+	case H_PARAMETER:
+		pr_err_ratelimited("hcall_vphn() was passed an invalid parameter. "
+			"Disabling polling...\n");
+		break;
+	default:
+		pr_err_ratelimited("hcall_vphn() returned %ld. Disabling polling...\n"
+			, rc);
 		break;
 	}
 
+	stop_topology_update();
+out:
 	return rc;
 }
 
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v4 3/5] powerpc/numa: Use cpu node map of first sibling thread
  2019-09-13 11:09 [PATCH v4 0/5] Early node associativity Srikar Dronamraju
  2019-09-13 11:09 ` [PATCH v4 1/5] powerpc/vphn: Check for error from hcall_vphn Srikar Dronamraju
  2019-09-13 11:09 ` [PATCH v4 2/5] powerpc/numa: Handle extra hcall_vphn error cases Srikar Dronamraju
@ 2019-09-13 11:09 ` Srikar Dronamraju
  2019-10-02 17:55   ` Nathan Lynch
  2019-09-13 11:09 ` [PATCH v4 4/5] powerpc/numa: Early request for home node associativity Srikar Dronamraju
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Srikar Dronamraju @ 2019-09-13 11:09 UTC (permalink / raw)
  To: Michael Ellerman; +Cc: linuxppc-dev, Srikar Dronamraju

All the sibling threads of a core have to be part of the same node.
To ensure that all the sibling threads map to the same node, always
lookup/update the cpu-to-node map of the first thread in the core.

Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
---
Changelog: v3->v4
As suggested by Nathan, add a warning while mapping offline cpu.

 arch/powerpc/mm/numa.c | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index 8fbe57c..63ec0c3 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -467,15 +467,20 @@ static int of_drconf_to_nid_single(struct drmem_lmb *lmb)
  */
 static int numa_setup_cpu(unsigned long lcpu)
 {
-	int nid = NUMA_NO_NODE;
 	struct device_node *cpu;
+	int fcpu = cpu_first_thread_sibling(lcpu);
+	int nid = NUMA_NO_NODE;
 
 	/*
 	 * If a valid cpu-to-node mapping is already available, use it
 	 * directly instead of querying the firmware, since it represents
 	 * the most recent mapping notified to us by the platform (eg: VPHN).
+	 * Since cpu_to_node binding remains the same for all threads in the
+	 * core. If a valid cpu-to-node mapping is already available, for
+	 * the first thread in the core, use it.
 	 */
-	if ((nid = numa_cpu_lookup_table[lcpu]) >= 0) {
+	nid = numa_cpu_lookup_table[fcpu];
+	if (nid >= 0) {
 		map_cpu_to_node(lcpu, nid);
 		return nid;
 	}
@@ -496,6 +501,19 @@ static int numa_setup_cpu(unsigned long lcpu)
 	if (nid < 0 || !node_possible(nid))
 		nid = first_online_node;
 
+	/*
+	 * Update for the first thread of the core. All threads of a core
+	 * have to be part of the same node. This not only avoids querying
+	 * for every other thread in the core, but always avoids a case
+	 * where virtual node associativity change causes subsequent threads
+	 * of a core to be associated with different nid. However if first
+	 * thread is already online, expect it to have a valid mapping.
+	 */
+	if (fcpu != lcpu) {
+		WARN_ON(cpu_online(fcpu));
+		map_cpu_to_node(fcpu, nid);
+	}
+
 	map_cpu_to_node(lcpu, nid);
 	of_node_put(cpu);
 out:
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v4 4/5] powerpc/numa: Early request for home node associativity
  2019-09-13 11:09 [PATCH v4 0/5] Early node associativity Srikar Dronamraju
                   ` (2 preceding siblings ...)
  2019-09-13 11:09 ` [PATCH v4 3/5] powerpc/numa: Use cpu node map of first sibling thread Srikar Dronamraju
@ 2019-09-13 11:09 ` Srikar Dronamraju
  2019-10-02 17:56   ` Nathan Lynch
  2019-09-13 11:09 ` [PATCH v4 5/5] powerpc/numa: Remove late " Srikar Dronamraju
  2019-10-02 17:59 ` [PATCH v4 0/5] Early " Nathan Lynch
  5 siblings, 1 reply; 13+ messages in thread
From: Srikar Dronamraju @ 2019-09-13 11:09 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Nathan Lynch, Satheesh Rajendran, linuxppc-dev,
	Srikar Dronamraju, Nicholas Piggin

Currently the kernel detects if its running on a shared lpar platform
and requests home node associativity before the scheduler sched_domains
are setup. However between the time NUMA setup is initialized and the
request for home node associativity, workqueue initializes its per node
cpumask. The per node workqueue possible cpumask may turn invalid
after home node associativity resulting in weird situations like
workqueue possible cpumask being a subset of workqueue online cpumask.

This can be fixed by requesting home node associativity earlier just
before NUMA setup. However at the NUMA setup time, kernel may not be in
a position to detect if its running on a shared lpar platform. So
request for home node associativity and if the request fails, fallback
on the device tree property.

Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Nathan Lynch <nathanl@linux.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: Satheesh Rajendran <sathnaga@linux.vnet.ibm.com>
Reported-by: Abdul Haleem <abdhalee@linux.vnet.ibm.com>
---
Changelog (v1->v2):
- Handled comments from Nathan Lynch
  * Dont depend on pacas to be setup for the hwid

Changelog (v2->v3):
- Handled comments from Nathan Lynch
  * Use first thread of the core for cpu-to-node map.
  * get hardware-id in numa_setup_cpu

 arch/powerpc/mm/numa.c | 45 ++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 40 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index 63ec0c3..f837a0e 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -461,13 +461,27 @@ static int of_drconf_to_nid_single(struct drmem_lmb *lmb)
 	return nid;
 }
 
+static int vphn_get_nid(long hwid)
+{
+	__be32 associativity[VPHN_ASSOC_BUFSIZE] = {0};
+	long rc;
+
+	rc = hcall_vphn(hwid, VPHN_FLAG_VCPU, associativity);
+	if (rc == H_SUCCESS)
+		return associativity_to_nid(associativity);
+
+	return NUMA_NO_NODE;
+}
+
 /*
  * Figure out to which domain a cpu belongs and stick it there.
+ * cpu_to_phys_id is only valid between smp_setup_cpu_maps() and
+ * smp_setup_pacas(). If called outside this window, set get_hwid to true.
  * Return the id of the domain used.
  */
-static int numa_setup_cpu(unsigned long lcpu)
+static int numa_setup_cpu(unsigned long lcpu, bool get_hwid)
 {
-	struct device_node *cpu;
+	struct device_node *cpu = NULL;
 	int fcpu = cpu_first_thread_sibling(lcpu);
 	int nid = NUMA_NO_NODE;
 
@@ -485,6 +499,27 @@ static int numa_setup_cpu(unsigned long lcpu)
 		return nid;
 	}
 
+	/*
+	 * On a shared lpar, device tree will not have node associativity.
+	 * At this time lppaca, or its __old_status field may not be
+	 * updated. Hence kernel cannot detect if its on a shared lpar. So
+	 * request an explicit associativity irrespective of whether the
+	 * lpar is shared or dedicated. Use the device tree property as a
+	 * fallback.
+	 */
+	if (firmware_has_feature(FW_FEATURE_VPHN)) {
+		long hwid;
+
+		if (get_hwid)
+			hwid = get_hard_smp_processor_id(lcpu);
+		else
+			hwid = cpu_to_phys_id[lcpu];
+		nid = vphn_get_nid(hwid);
+	}
+
+	if (nid != NUMA_NO_NODE)
+		goto out_present;
+
 	cpu = of_get_cpu_node(lcpu, NULL);
 
 	if (!cpu) {
@@ -496,6 +531,7 @@ static int numa_setup_cpu(unsigned long lcpu)
 	}
 
 	nid = of_node_to_nid_single(cpu);
+	of_node_put(cpu);
 
 out_present:
 	if (nid < 0 || !node_possible(nid))
@@ -515,7 +551,6 @@ static int numa_setup_cpu(unsigned long lcpu)
 	}
 
 	map_cpu_to_node(lcpu, nid);
-	of_node_put(cpu);
 out:
 	return nid;
 }
@@ -546,7 +581,7 @@ static int ppc_numa_cpu_prepare(unsigned int cpu)
 {
 	int nid;
 
-	nid = numa_setup_cpu(cpu);
+	nid = numa_setup_cpu(cpu, true);
 	verify_cpu_node_mapping(cpu, nid);
 	return 0;
 }
@@ -893,7 +928,7 @@ void __init mem_topology_setup(void)
 	reset_numa_cpu_lookup_table();
 
 	for_each_present_cpu(cpu)
-		numa_setup_cpu(cpu);
+		numa_setup_cpu(cpu, false);
 }
 
 void __init initmem_init(void)
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v4 5/5] powerpc/numa: Remove late request for home node associativity
  2019-09-13 11:09 [PATCH v4 0/5] Early node associativity Srikar Dronamraju
                   ` (3 preceding siblings ...)
  2019-09-13 11:09 ` [PATCH v4 4/5] powerpc/numa: Early request for home node associativity Srikar Dronamraju
@ 2019-09-13 11:09 ` " Srikar Dronamraju
  2019-10-02 17:57   ` Nathan Lynch
  2019-10-02 17:59 ` [PATCH v4 0/5] Early " Nathan Lynch
  5 siblings, 1 reply; 13+ messages in thread
From: Srikar Dronamraju @ 2019-09-13 11:09 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Nathan Lynch, Satheesh Rajendran, linuxppc-dev,
	Srikar Dronamraju, Nicholas Piggin

With commit ("powerpc/numa: Early request for home node associativity"),
commit 2ea626306810 ("powerpc/topology: Get topology for shared
processors at boot") which was requesting home node associativity
becomes redundant.

Hence remove the late request for home node associativity.

Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Nathan Lynch <nathanl@linux.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: Satheesh Rajendran <sathnaga@linux.vnet.ibm.com>
Reported-by: Abdul Haleem <abdhalee@linux.vnet.ibm.com>
---
 arch/powerpc/include/asm/topology.h | 4 ----
 arch/powerpc/kernel/smp.c           | 5 -----
 arch/powerpc/mm/numa.c              | 9 ---------
 3 files changed, 18 deletions(-)

diff --git a/arch/powerpc/include/asm/topology.h b/arch/powerpc/include/asm/topology.h
index 2f7e1ea..9bd396f 100644
--- a/arch/powerpc/include/asm/topology.h
+++ b/arch/powerpc/include/asm/topology.h
@@ -98,7 +98,6 @@ static inline int cpu_distance(__be32 *cpu1_assoc, __be32 *cpu2_assoc)
 extern int prrn_is_enabled(void);
 extern int find_and_online_cpu_nid(int cpu);
 extern int timed_topology_update(int nsecs);
-extern void __init shared_proc_topology_init(void);
 #else
 static inline int start_topology_update(void)
 {
@@ -121,9 +120,6 @@ static inline int timed_topology_update(int nsecs)
 	return 0;
 }
 
-#ifdef CONFIG_SMP
-static inline void shared_proc_topology_init(void) {}
-#endif
 #endif /* CONFIG_NUMA && CONFIG_PPC_SPLPAR */
 
 #include <asm-generic/topology.h>
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index ea6adbf..cdd39a0 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -1359,11 +1359,6 @@ void __init smp_cpus_done(unsigned int max_cpus)
 	if (smp_ops && smp_ops->bringup_done)
 		smp_ops->bringup_done();
 
-	/*
-	 * On a shared LPAR, associativity needs to be requested.
-	 * Hence, get numa topology before dumping cpu topology
-	 */
-	shared_proc_topology_init();
 	dump_numa_cpu_topology();
 
 #ifdef CONFIG_SCHED_SMT
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index f837a0e..3ba8dc0 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -1628,15 +1628,6 @@ int prrn_is_enabled(void)
 	return prrn_enabled;
 }
 
-void __init shared_proc_topology_init(void)
-{
-	if (lppaca_shared_proc(get_lppaca())) {
-		bitmap_fill(cpumask_bits(&cpu_associativity_changes_mask),
-			    nr_cpumask_bits);
-		numa_update_cpu_topology(false);
-	}
-}
-
 static int topology_read(struct seq_file *file, void *v)
 {
 	if (vphn_enabled || prrn_enabled)
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 1/5] powerpc/vphn: Check for error from hcall_vphn
  2019-09-13 11:09 ` [PATCH v4 1/5] powerpc/vphn: Check for error from hcall_vphn Srikar Dronamraju
@ 2019-10-02 17:51   ` Nathan Lynch
  0 siblings, 0 replies; 13+ messages in thread
From: Nathan Lynch @ 2019-10-02 17:51 UTC (permalink / raw)
  To: Srikar Dronamraju, Michael Ellerman
  Cc: Satheesh Rajendran, linuxppc-dev, Srikar Dronamraju, Nicholas Piggin

Srikar Dronamraju <srikar@linux.vnet.ibm.com> writes:

> There is no value in unpacking associativity, if
> H_HOME_NODE_ASSOCIATIVITY hcall has returned an error.

Reviewed-by: Nathan Lynch <nathanl@linux.ibm.com>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 2/5] powerpc/numa: Handle extra hcall_vphn error cases
  2019-09-13 11:09 ` [PATCH v4 2/5] powerpc/numa: Handle extra hcall_vphn error cases Srikar Dronamraju
@ 2019-10-02 17:54   ` Nathan Lynch
  0 siblings, 0 replies; 13+ messages in thread
From: Nathan Lynch @ 2019-10-02 17:54 UTC (permalink / raw)
  To: Srikar Dronamraju; +Cc: Satheesh Rajendran, linuxppc-dev, Nicholas Piggin

Srikar Dronamraju <srikar@linux.vnet.ibm.com> writes:
> Currently code handles H_FUNCTION, H_SUCCESS, H_HARDWARE return codes.
> However hcall_vphn can return other return codes. Now it also handles
> H_PARAMETER return code.  Also the rest return codes are handled under the
> default case.

Reviewed-by: Nathan Lynch <nathanl@linux.ibm.com>

However:

> +	case H_PARAMETER:
> +		pr_err_ratelimited("hcall_vphn() was passed an invalid parameter. "
> +			"Disabling polling...\n");

Consider including the bad parameter value in the message?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 3/5] powerpc/numa: Use cpu node map of first sibling thread
  2019-09-13 11:09 ` [PATCH v4 3/5] powerpc/numa: Use cpu node map of first sibling thread Srikar Dronamraju
@ 2019-10-02 17:55   ` Nathan Lynch
  0 siblings, 0 replies; 13+ messages in thread
From: Nathan Lynch @ 2019-10-02 17:55 UTC (permalink / raw)
  To: Srikar Dronamraju; +Cc: linuxppc-dev

Srikar Dronamraju <srikar@linux.vnet.ibm.com> writes:

> All the sibling threads of a core have to be part of the same node.
> To ensure that all the sibling threads map to the same node, always
> lookup/update the cpu-to-node map of the first thread in the core.

Reviewed-by: Nathan Lynch <nathanl@linux.ibm.com>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 4/5] powerpc/numa: Early request for home node associativity
  2019-09-13 11:09 ` [PATCH v4 4/5] powerpc/numa: Early request for home node associativity Srikar Dronamraju
@ 2019-10-02 17:56   ` Nathan Lynch
  0 siblings, 0 replies; 13+ messages in thread
From: Nathan Lynch @ 2019-10-02 17:56 UTC (permalink / raw)
  To: Srikar Dronamraju; +Cc: Satheesh Rajendran, linuxppc-dev, Nicholas Piggin

Srikar Dronamraju <srikar@linux.vnet.ibm.com> writes:

> Currently the kernel detects if its running on a shared lpar platform
> and requests home node associativity before the scheduler sched_domains
> are setup. However between the time NUMA setup is initialized and the
> request for home node associativity, workqueue initializes its per node
> cpumask. The per node workqueue possible cpumask may turn invalid
> after home node associativity resulting in weird situations like
> workqueue possible cpumask being a subset of workqueue online cpumask.
>
> This can be fixed by requesting home node associativity earlier just
> before NUMA setup. However at the NUMA setup time, kernel may not be in
> a position to detect if its running on a shared lpar platform. So
> request for home node associativity and if the request fails, fallback
> on the device tree property.

Reviewed-by: Nathan Lynch <nathanl@linux.ibm.com>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 5/5] powerpc/numa: Remove late request for home node associativity
  2019-09-13 11:09 ` [PATCH v4 5/5] powerpc/numa: Remove late " Srikar Dronamraju
@ 2019-10-02 17:57   ` Nathan Lynch
  0 siblings, 0 replies; 13+ messages in thread
From: Nathan Lynch @ 2019-10-02 17:57 UTC (permalink / raw)
  To: Srikar Dronamraju; +Cc: Satheesh Rajendran, linuxppc-dev, Nicholas Piggin

Srikar Dronamraju <srikar@linux.vnet.ibm.com> writes:

> With commit ("powerpc/numa: Early request for home node associativity"),
> commit 2ea626306810 ("powerpc/topology: Get topology for shared
> processors at boot") which was requesting home node associativity
> becomes redundant.
>
> Hence remove the late request for home node associativity.

Reviewed-by: Nathan Lynch <nathanl@linux.ibm.com>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 0/5] Early node associativity
  2019-09-13 11:09 [PATCH v4 0/5] Early node associativity Srikar Dronamraju
                   ` (4 preceding siblings ...)
  2019-09-13 11:09 ` [PATCH v4 5/5] powerpc/numa: Remove late " Srikar Dronamraju
@ 2019-10-02 17:59 ` " Nathan Lynch
  2019-10-17 12:27   ` Nathan Lynch
  5 siblings, 1 reply; 13+ messages in thread
From: Nathan Lynch @ 2019-10-02 17:59 UTC (permalink / raw)
  To: Srikar Dronamraju
  Cc: Abdul Haleem, Satheesh Rajendran, linuxppc-dev, Nicholas Piggin

Hi Srikar,

Srikar Dronamraju <srikar@linux.vnet.ibm.com> writes:
> Abdul reported  a warning on a shared lpar.
> "WARNING: workqueue cpumask: online intersect > possible intersect".
> This is because per node workqueue possible mask is set very early in the
> boot process even before the system was querying the home node
> associativity. However per node workqueue online cpumask gets updated
> dynamically. Hence there is a chance when per node workqueue online cpumask
> is a superset of per node workqueue possible mask.

Sorry for the delay in following up on these. The series looks good to
me, and I've given it a little testing with LPM and DLPAR. I've also
verified that the cpu assignments occur early as intended on an LPAR
where that workqueue warning had been triggered.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 0/5] Early node associativity
  2019-10-02 17:59 ` [PATCH v4 0/5] Early " Nathan Lynch
@ 2019-10-17 12:27   ` Nathan Lynch
  0 siblings, 0 replies; 13+ messages in thread
From: Nathan Lynch @ 2019-10-17 12:27 UTC (permalink / raw)
  To: Srikar Dronamraju
  Cc: Abdul Haleem, Satheesh Rajendran, linuxppc-dev, Nicholas Piggin

Nathan Lynch <nathanl@linux.ibm.com> writes:
> Srikar Dronamraju <srikar@linux.vnet.ibm.com> writes:
>> Abdul reported  a warning on a shared lpar.
>> "WARNING: workqueue cpumask: online intersect > possible intersect".
>> This is because per node workqueue possible mask is set very early in the
>> boot process even before the system was querying the home node
>> associativity. However per node workqueue online cpumask gets updated
>> dynamically. Hence there is a chance when per node workqueue online cpumask
>> is a superset of per node workqueue possible mask.
>
> Sorry for the delay in following up on these. The series looks good to
> me, and I've given it a little testing with LPM and DLPAR. I've also
> verified that the cpu assignments occur early as intended on an LPAR
> where that workqueue warning had been triggered.

If this is applied I think we can remove about 500 loc from numa.c. Once
splpar cpu-node assignments are done in the same sequence as with
dedicated processor mode, numa_update_cpu_topology() and related code
becomes unneeded.

Michael?


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, back to index

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-13 11:09 [PATCH v4 0/5] Early node associativity Srikar Dronamraju
2019-09-13 11:09 ` [PATCH v4 1/5] powerpc/vphn: Check for error from hcall_vphn Srikar Dronamraju
2019-10-02 17:51   ` Nathan Lynch
2019-09-13 11:09 ` [PATCH v4 2/5] powerpc/numa: Handle extra hcall_vphn error cases Srikar Dronamraju
2019-10-02 17:54   ` Nathan Lynch
2019-09-13 11:09 ` [PATCH v4 3/5] powerpc/numa: Use cpu node map of first sibling thread Srikar Dronamraju
2019-10-02 17:55   ` Nathan Lynch
2019-09-13 11:09 ` [PATCH v4 4/5] powerpc/numa: Early request for home node associativity Srikar Dronamraju
2019-10-02 17:56   ` Nathan Lynch
2019-09-13 11:09 ` [PATCH v4 5/5] powerpc/numa: Remove late " Srikar Dronamraju
2019-10-02 17:57   ` Nathan Lynch
2019-10-02 17:59 ` [PATCH v4 0/5] Early " Nathan Lynch
2019-10-17 12:27   ` Nathan Lynch

LinuxPPC-Dev Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linuxppc-dev/0 linuxppc-dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linuxppc-dev linuxppc-dev/ https://lore.kernel.org/linuxppc-dev \
		linuxppc-dev@lists.ozlabs.org linuxppc-dev@ozlabs.org linuxppc-dev@archiver.kernel.org
	public-inbox-index linuxppc-dev

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.ozlabs.lists.linuxppc-dev


AGPL code for this site: git clone https://public-inbox.org/ public-inbox