aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/firmware
diff options
context:
space:
mode:
authorCristian Marussi <cristian.marussi@arm.com>2025-01-23 12:46:38 +0000
committerAndrew Turner <andrew@FreeBSD.org>2025-01-23 17:26:26 +0000
commitc56e586f0f029fec4a0fee844f83ff62da20e4b6 (patch)
tree403450f34033a55e6cb304da23fe6d19f588d315 /sys/dev/firmware
parent00b77e631bff6104c6327e9920dfac98bb47697b (diff)
Diffstat (limited to 'sys/dev/firmware')
-rw-r--r--sys/dev/firmware/arm/scmi.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/dev/firmware/arm/scmi.c b/sys/dev/firmware/arm/scmi.c
index c2585d8d9637..37496136c828 100644
--- a/sys/dev/firmware/arm/scmi.c
+++ b/sys/dev/firmware/arm/scmi.c
@@ -545,6 +545,7 @@ scmi_wait_for_response(struct scmi_softc *sc, struct scmi_req *req, void **out)
*/
mtx_lock_spin(&req->mtx);
needs_drop = (ret == 0) && !req->done;
+ req->timed_out = ret != 0;
mtx_unlock_spin(&req->mtx);
if (needs_drop)
scmi_req_drop_inflight(sc, req);
@@ -560,6 +561,7 @@ scmi_wait_for_response(struct scmi_softc *sc, struct scmi_req *req, void **out)
mtx_lock_spin(&req->mtx);
if (ret != 0 && req->done)
ret = 0;
+ req->timed_out = ret != 0;
mtx_unlock_spin(&req->mtx);
}
@@ -569,9 +571,6 @@ scmi_wait_for_response(struct scmi_softc *sc, struct scmi_req *req, void **out)
ret = req->msg.payld[0];
*out = &req->msg.payld[SCMI_MSG_HDR_SIZE];
} else {
- mtx_lock_spin(&req->mtx);
- req->timed_out = true;
- mtx_unlock_spin(&req->mtx);
device_printf(sc->dev,
"Request for token 0x%X timed-out.\n", req->token);
}