summaryrefslogtreecommitdiffstats
path: root/hw
diff options
context:
space:
mode:
authorVaibhav Jain <vaibhav@linux.ibm.com>2019-01-13 11:07:15 +0530
committerStewart Smith <stewart@linux.ibm.com>2019-01-16 00:46:49 -0600
commitd572d3a72fa220f7b0addd02236eefdb51bf6547 (patch)
tree6b6d4c2f1db6c83756a08b9094a6b65f57724bc4 /hw
parent3dc87605be7a5627bc99dc920074558eb2982f87 (diff)
downloadblackbird-skiboot-d572d3a72fa220f7b0addd02236eefdb51bf6547.tar.gz
blackbird-skiboot-d572d3a72fa220f7b0addd02236eefdb51bf6547.zip
capp/phb4: Prevent HMI from getting triggered when disabling CAPP
While disabling CAPP an HMI gets triggered as soon as ETU is put in reset mode. This is caused as before we can disabled CAPP, it detects PHB link going down and triggers an HMI requesting Opal to perform CAPP recovery. This has an un-intended side effect of spamming the Opal logs with malfunction alert messages and may also confuse the user. To prevent this we mask the CAPP FIR error 'PHB Link Down' Bit(31) when we are disabling CAPP just before we put ETU in reset in phb4_creset(). Also now since bringing down the PHB link now wont trigger an HMI and CAPP recovery, hence we manually set the PHB4_CAPP_RECOVERY flag on the phb to force recovery during creset. Reviewed-by: Frederic Barrat <fbarrat@linux.ibm.com> Reviewed-by: Christophe Lombard <clombard@linux.vnet.ibm.com> Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com> Signed-off-by: Vaibhav Jain <vaibhav@linux.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
Diffstat (limited to 'hw')
-rw-r--r--hw/phb4.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/hw/phb4.c b/hw/phb4.c
index 792ed082..b3053347 100644
--- a/hw/phb4.c
+++ b/hw/phb4.c
@@ -3284,6 +3284,7 @@ static void disable_capi_mode(struct phb4 *p)
static int64_t phb4_creset(struct pci_slot *slot)
{
struct phb4 *p = phb_to_phb4(slot->phb);
+ struct capp *capp = p->capp;
uint64_t pbcq_status, reg;
/* Don't even try fixing a broken PHB */
@@ -3299,6 +3300,16 @@ static int64_t phb4_creset(struct pci_slot *slot)
/* Clear error inject register, preventing recursive errors */
xscom_write(p->chip_id, p->pe_xscom + 0x2, 0x0);
+ /* Prevent HMI when PHB gets fenced as we are disabling CAPP */
+ if (p->flags & PHB4_CAPP_DISABLE &&
+ capp && capp->phb == slot->phb) {
+ /* Since no HMI, So set the recovery flag manually. */
+ p->flags |= PHB4_CAPP_RECOVERY;
+ xscom_write_mask(p->chip_id, capp->capp_xscom_offset +
+ CAPP_FIR_MASK,
+ PPC_BIT(31), PPC_BIT(31));
+ }
+
/* Force fence on the PHB to work around a non-existent PE */
if (!phb4_fenced(p))
xscom_write(p->chip_id, p->pe_stk_xscom + 0x2,
OpenPOWER on IntegriCloud