From 15cec493804ff14e6246eb1b65e9d0c7cb469a81 Mon Sep 17 00:00:00 2001 From: Vipin K Parashar Date: Tue, 12 Jul 2016 02:04:33 +0530 Subject: 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 Signed-off-by: Vaidyanathan Srinivasan Signed-off-by: Stewart Smith --- hw/xscom.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/xscom.c b/hw/xscom.c index e351672..7c249c3 100644 --- a/hw/xscom.c +++ b/hw/xscom.c @@ -169,7 +169,8 @@ static int64_t xscom_handle_error(uint64_t hmer, uint32_t gcid, uint32_t pcb_add gcid, pcb_addr, stat); return OPAL_BUSY; - case 2: /* CPU is asleep, don't retry */ + case 2: /* CPU is asleep, reset XSCOM engine and return */ + xscom_reset(gcid); return OPAL_WRONG_STATE; case 3: /* Partial good */ case 4: /* Invalid address / address error */ -- cgit v1.1