[PATCH 1/3] powerpc/vphn: Check for error from hcall_vphn
Srikar Dronamraju
srikar at linux.vnet.ibm.com
Fri Aug 23 00:42:33 AEST 2019
There is no point in unpacking associativity, if
H_HOME_NODE_ASSOCIATIVITY hcall has returned an error.
Also added error messages for H_PARAMETER and default case in
vphn_get_associativity.
Signed-off-by: Srikar Dronamraju <srikar at linux.vnet.ibm.com>
Cc: Michael Ellerman <mpe at ellerman.id.au>
Cc: Nicholas Piggin <npiggin at gmail.com>
Cc: Nathan Lynch <nathanl at linux.ibm.com>
Cc: linuxppc-dev at lists.ozlabs.org
Reported-by: Satheesh Rajendran <sathnaga at linux.vnet.ibm.com>
Reported-by: Abdul Haleem <abdhalee at linux.vnet.ibm.com>
---
arch/powerpc/mm/numa.c | 16 +++++++++++++---
arch/powerpc/platforms/pseries/vphn.c | 3 ++-
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index 50d68d2..88b5157 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -1191,6 +1191,10 @@ 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);
+ break;
case H_FUNCTION:
printk_once(KERN_INFO
"VPHN is not supported. Disabling polling...\n");
@@ -1202,9 +1206,15 @@ static long vphn_get_associativity(unsigned long cpu,
"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:
+ printk(KERN_ERR
+ "hcall_vphn() was passed an invalid parameter."
+ "Disabling polling...\n");
+ break;
+ default:
+ printk(KERN_ERR
+ "hcall_vphn() returned %ld. Disabling polling \n", rc);
+ stop_topology_update();
break;
}
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
More information about the Linuxppc-dev
mailing list