diff options
author | Frederic Barrat <fbarrat@linux.ibm.com> | 2018-08-13 11:47:21 +0200 |
---|---|---|
committer | Stewart Smith <stewart@linux.ibm.com> | 2018-08-13 23:48:19 -0500 |
commit | 2d339446fc774626bf7fde55cc67f3fdfedeb98a (patch) | |
tree | 72c2ecd15a794a73d8f1c8056e2d638ff2cf4733 /core/hmi.c | |
parent | 3e3ad77c1ced24e10830d0b5df9645fac77b6e48 (diff) | |
download | skiboot-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/hmi.c')
-rw-r--r-- | core/hmi.c | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -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; |