aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorFrederic Barrat <fbarrat@linux.ibm.com>2018-08-13 11:47:21 +0200
committerStewart Smith <stewart@linux.ibm.com>2018-08-13 23:48:19 -0500
commit2d339446fc774626bf7fde55cc67f3fdfedeb98a (patch)
tree72c2ecd15a794a73d8f1c8056e2d638ff2cf4733 /core
parent3e3ad77c1ced24e10830d0b5df9645fac77b6e48 (diff)
downloadskiboot-2d339446fc774626bf7fde55cc67f3fdfedeb98a.zip
skiboot-2d339446fc774626bf7fde55cc67f3fdfedeb98a.tar.gz
skiboot-2d339446fc774626bf7fde55cc67f3fdfedeb98a.tar.bz2
opal/hmi: Catch NPU2 HMIs for opencapi
HMIs for NPU2 are filtered with the 'compatible' string of the PHB, so add opencapi to the mix. Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com> Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
Diffstat (limited to 'core')
-rw-r--r--core/hmi.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/core/hmi.c b/core/hmi.c
index e6fed40..1f665a2 100644
--- a/core/hmi.c
+++ b/core/hmi.c
@@ -639,14 +639,19 @@ static void dump_scoms(int flat_chip_id, const char *unit, uint32_t *scoms,
}
}
+static bool phb_is_npu2(struct dt_node *dn)
+{
+ return (dt_node_is_compatible(dn, "ibm,power9-npu-pciex") ||
+ dt_node_is_compatible(dn, "ibm,power9-npu-opencapi-pciex"));
+}
+
static void find_npu2_checkstop_reason(int flat_chip_id,
struct OpalHMIEvent *hmi_evt,
uint64_t *out_flags)
{
struct phb *phb;
- struct npu *p = NULL;
int i;
- bool npu2_hmi_verbose = false;
+ bool npu2_hmi_verbose = false, found = false;
uint64_t npu2_fir;
uint64_t npu2_fir_mask;
uint64_t npu2_fir_action0;
@@ -662,15 +667,15 @@ static void find_npu2_checkstop_reason(int flat_chip_id,
/* 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 */
- if (dt_node_is_compatible(phb->dt_node, "ibm,power9-npu-pciex") &&
+ if (phb_is_npu2(phb->dt_node) &&
(dt_get_chip_id(phb->dt_node) == flat_chip_id)) {
- p = phb_to_npu(phb);
+ found = true;
break;
}
}
/* If we didn't find a NPU on the chip, it's not our checkstop. */
- if (p == NULL)
+ if (!found)
return;
npu2_fir_addr = NPU2_FIR_REGISTER_0;