[Skiboot] [PATCH stable 5.1.x 3/3] hw/xscom: Reset XSCOM engine after querying sleeping core FIR

Vipin K Parashar vipin at linux.vnet.ibm.com
Wed Jul 20 23:52:42 AEST 2016


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 at linux.vnet.ibm.com>
Signed-off-by: Vaidyanathan Srinivasan <svaidy at linux.vnet.ibm.com>
Signed-off-by: Stewart Smith <stewart at linux.vnet.ibm.com>
(cherry picked from commit 15cec493804ff14e6246eb1b65e9d0c7cb469a81)
Signed-off-by: Vipin K Parashar <vipin at linux.vnet.ibm.com>
---
 hw/xscom.c | 4 ++--
 1 file 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;
 	}
 
-- 
2.7.4



More information about the Skiboot mailing list