diff options
author | Vasant Hegde <hegdevasant@linux.vnet.ibm.com> | 2017-06-12 18:59:16 +0530 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-06-14 14:30:31 +1000 |
commit | 4cef4d8d6000936b1a4e1065bf69ee2edd3fcc1f (patch) | |
tree | a0981bc1b19326469d9029447d6d8b0bc952f646 /hw/fsp | |
parent | 807a3acc8fd66af1e1c6e7154aa5029c9b91bb3b (diff) | |
download | skiboot-4cef4d8d6000936b1a4e1065bf69ee2edd3fcc1f.zip skiboot-4cef4d8d6000936b1a4e1065bf69ee2edd3fcc1f.tar.gz skiboot-4cef4d8d6000936b1a4e1065bf69ee2edd3fcc1f.tar.bz2 |
FSP: Set status field in response message for timed out message
For timed out FSP messages, we set message status as "fsp_msg_timeout".
But most FSP driver users (like surviellance) are ignoring this field.
They always look for FSP returned status value in callback function
(second byte in word1). So we endup treating timed out message as success
response from FSP.
Sample output:
[69902.432509048,7] SURV: Sending the heartbeat command to FSP
[70023.226860117,4] FSP: Response from FSP timed out, word0 = d66a00d7, word1 = 0 state: 3
....
[70023.226901445,7] SURV: Received heartbeat acknowledge from FSP
[70023.226903251,3] FSP: fsp_trigger_reset() entry
Here SURV code thought it got valid response from FSP. But actually we didn't
receive response from FSP.
This patch fixes above issue by updating status field in response structure.
CC: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Acked-by: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw/fsp')
-rw-r--r-- | hw/fsp/fsp.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/hw/fsp/fsp.c b/hw/fsp/fsp.c index 4a8eaee..2598706 100644 --- a/hw/fsp/fsp.c +++ b/hw/fsp/fsp.c @@ -2173,8 +2173,11 @@ static void fsp_timeout_poll(void *data __unused) fsp_reg_dump(); fsp_cmdclass_resp_bitmask &= ~(1ull << index); cmdclass->timesent = 0; - if (req->resp) + if (req->resp) { req->resp->state = fsp_msg_timeout; + req->resp->word1 = (FSP_STATUS_BUSY << 8) | + (req->resp->word1 & 0xff); + } fsp_complete_msg(req); __fsp_trigger_reset(); unlock(&fsp_lock); |