[Skiboot] [PATCH v2 6/8] npu2: Add checks to npu2-only codepaths

Reza Arbab arbab at linux.ibm.com
Tue Jul 9 07:07:16 AEST 2019


To prepare for npu3, add a few checks in codepaths that are only for
npu2. Compare against PVR_TYPE_P9, as npu3 will be in systems of
PVR_TYPE_P9P (or greater). Alternatively, check for dt compatibility
with "ibm,power9-npu" because npu3 will use "ibm,power9-npu3".

Signed-off-by: Reza Arbab <arbab at linux.ibm.com>
Reviewed-by: Andrew Donnellan <ajd at linux.ibm.com>
---
 core/hmi.c       | 4 ++++
 hdata/spira.c    | 6 +++---
 hw/npu2-common.c | 4 ++++
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/core/hmi.c b/core/hmi.c
index 5cde67138109..2202bfba9ca2 100644
--- a/core/hmi.c
+++ b/core/hmi.c
@@ -636,6 +636,10 @@ static void find_npu2_checkstop_reason(int flat_chip_id,
 	int total_errors = 0;
 	const char *loc;
 
+	/* NPU2 only */
+	if (PVR_TYPE(mfspr(SPR_PVR)) != PVR_TYPE_P9)
+		return;
+
 	/* Find the NPU on the chip associated with the HMI. */
 	for_each_phb(phb) {
 		/* NOTE: if a chip ever has >1 NPU this will need adjusting */
diff --git a/hdata/spira.c b/hdata/spira.c
index 6891a9c71bdf..804d90da34a1 100644
--- a/hdata/spira.c
+++ b/hdata/spira.c
@@ -1506,7 +1506,8 @@ static void add_npus(void)
 	int phb_index = 7; /* Start counting from 7, for no reason */
 	int npu_index = 0;
 
-	if (proc_gen < proc_gen_p9)
+	/* Only consult HDAT for npu2 */
+	if (cpu_type != PVR_TYPE_P9)
 		return;
 
 	dt_for_each_compatible(dt_root, xscom, "ibm,xscom") {
@@ -1633,8 +1634,7 @@ int parse_hdat(bool is_opal)
 	io_parse();
 
 	/* Add NPU nodes */
-	if (proc_gen >= proc_gen_p9)
-		add_npus();
+	add_npus();
 
 	/* Parse VPD */
 	vpd_parse();
diff --git a/hw/npu2-common.c b/hw/npu2-common.c
index f3f2f45a10d4..776030759693 100644
--- a/hw/npu2-common.c
+++ b/hw/npu2-common.c
@@ -654,6 +654,10 @@ void probe_npu2(void)
 	struct dt_node *np;
 	const char *zcal;
 
+	/* npu2 only */
+	if (!dt_find_compatible_node(dt_root, NULL, "ibm,power9-npu"))
+		return;
+
 	/* Abort if we're running on POWER9C DD1 (P9N DD1 is not supported) */
 	if (chip &&
 	    chip->type == PROC_CHIP_P9_CUMULUS &&
-- 
1.8.3.1



More information about the Skiboot mailing list