aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVipin K Parashar <vipin@linux.vnet.ibm.com>2016-07-20 19:22:42 +0530
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-07-21 11:51:22 +1000
commit18bec7fa5a9e568bd430b17e15f25db796b298c1 (patch)
treecbdc8c9992dec1a1bd9c4218bc9241802f2bfb0d
parent3ca77982a3c43e2a320eee742af9ff4dd8b0596f (diff)
downloadskiboot-18bec7fa5a9e568bd430b17e15f25db796b298c1.zip
skiboot-18bec7fa5a9e568bd430b17e15f25db796b298c1.tar.gz
skiboot-18bec7fa5a9e568bd430b17e15f25db796b298c1.tar.bz2
hw/xscom: Reset XSCOM engine after querying sleeping core FIR
XSCOM engine blocks subsequently after querying FIR of any sleeping core. This causes subsequent XSCOM opertions to hang forever due to XSCOM engine being continuously busy. Reset XSCOM engine after querying FIR of any sleeping core. Signed-off-by: Vipin K Parashar <vipin@linux.vnet.ibm.com> Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com> (cherry picked from commit 15cec493804ff14e6246eb1b65e9d0c7cb469a81) Signed-off-by: Vipin K Parashar <vipin@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r--hw/xscom.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/hw/xscom.c b/hw/xscom.c
index 2ba2b14..eabe979 100644
--- a/hw/xscom.c
+++ b/hw/xscom.c
@@ -166,8 +166,8 @@ static int64_t xscom_handle_error(uint64_t hmer, uint32_t gcid, uint32_t pcb_add
gcid, pcb_addr, stat);
return OPAL_BUSY;
- /* CPU is asleep, don't retry */
- case 2:
+ case 2: /* CPU is asleep, reset XSCOM engine and return */
+ xscom_reset(gcid);
return OPAL_WRONG_STATE;
}