mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
firmware: stratix10-svc: handle NO_RESPONSE in async poll
Define INTEL_SIP_SMC_STATUS_NO_RESPONSE (0x3) and handle it in
stratix10_svc_async_poll() the same way as INTEL_SIP_SMC_STATUS_BUSY,
returning -EAGAIN so callers can retry instead of treating the poll as
a hard failure.
When the Secure Device Manager has not yet produced a response for an
asynchronous transaction, ATF is expected to return
INTEL_SIP_SMC_STATUS_NO_RESPONSE. Without this handling, the service
layer maps the status to -EINVAL and async clients cannot distinguish
"not ready yet" from a real error.
Fixes: bcb9f4f070 ("firmware: stratix10-svc: Add support for async communication")
Cc: stable@vger.kernel.org
Signed-off-by: Adrian Ng Ho Yin <adrian.ho.yin.ng@altera.com>
Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
This commit is contained in:
parent
9b9a6e31bd
commit
9e1dc434ca
|
|
@ -1499,8 +1499,9 @@ int stratix10_svc_async_poll(struct stratix10_svc_chan *chan,
|
|||
WARN_ON_ONCE(1);
|
||||
}
|
||||
return 0;
|
||||
} else if (handle->res.a0 == INTEL_SIP_SMC_STATUS_BUSY) {
|
||||
dev_dbg(ctrl->dev, "async message is still in progress\n");
|
||||
} else if (handle->res.a0 == INTEL_SIP_SMC_STATUS_BUSY ||
|
||||
handle->res.a0 == INTEL_SIP_SMC_STATUS_NO_RESPONSE) {
|
||||
dev_dbg(ctrl->dev, "async message is not ready yet\n");
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,6 +67,9 @@
|
|||
* INTEL_SIP_SMC_STATUS_REJECTED:
|
||||
* Secure monitor software reject the service client's request.
|
||||
*
|
||||
* INTEL_SIP_SMC_STATUS_NO_RESPONSE:
|
||||
* Secure monitor software has no response for the request yet.
|
||||
*
|
||||
* INTEL_SIP_SMC_STATUS_ERROR:
|
||||
* There is error during the process of service request.
|
||||
*
|
||||
|
|
@ -77,6 +80,7 @@
|
|||
#define INTEL_SIP_SMC_STATUS_OK 0x0
|
||||
#define INTEL_SIP_SMC_STATUS_BUSY 0x1
|
||||
#define INTEL_SIP_SMC_STATUS_REJECTED 0x2
|
||||
#define INTEL_SIP_SMC_STATUS_NO_RESPONSE 0x3
|
||||
#define INTEL_SIP_SMC_STATUS_ERROR 0x4
|
||||
#define INTEL_SIP_SMC_RSU_ERROR 0x7
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user