From nobody Thu Jan 23 17:27:30 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Yf7Dg1KJ8z5lDTh; Thu, 23 Jan 2025 17:27:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Yf7Df6wy6z43VS; Thu, 23 Jan 2025 17:27:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737653251; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=R/uWVTTbXF1H8L8cExaPB905oE+Ssz1kc3b80Xa3ahA=; b=v+pXFmpv2mVHGbPzVQbiP4/B1/gilJuHfkNVQviXfMExIWSJNOOmwuZA7j8VDpEcKKrUCR gvBujiwSWX9QwTJmcPyoeeSFhCc6BYAjozbc9savrnxyTqXJQYDBQ11w01JIwlGnHV4Gvf PKCYLALEbRyR494AO8oSyP6p4sAIfEZQCMoINvAL4tvKNTyWP4E1S5BPNrCi4neHDfnxy1 xCoD1k3gM1toBbNepUpZjRVEzEWlKskoUk/JI0HCVkgBY7gTWcqVzUfynB6vFYjRq6P/cc b+ByBKOl0VJRGZkSOrFcQ9KwoHXCR1xhKubV4XoIkRS7I/low9btj2JG7FtIHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737653251; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=R/uWVTTbXF1H8L8cExaPB905oE+Ssz1kc3b80Xa3ahA=; b=rL5UqVZzZasjQ1rej1LqQPpRix6Fo5etYDes4SRx9x1Wg7oPOpYas6NYbACaEmzdkTHl+2 v5PTygDnfeHP34uvHG+Eob+CLlBTKw9TUL0J94QHqsBVWMIIm1x7zfvzVYflkeVzxfJ9DR 6ryhCwapgena9rZdRzDz6JzU6vQdlAbW7towzbR0Phg2LEdaUJmGXP80BRlAK4CZQD1QVT xkLwy0VElKEghceg2ATo45CjNbBzf53Ch5RSP5MHvN816SlxxjE/UOaRmCv6Vpz8kETsFg bUk/MNcBX1GLph04SE2LXCxdBmdPPmJh4fNJ8Uffd8IFTX7Oh4n4+LteVojFZw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1737653251; a=rsa-sha256; cv=none; b=rYrBASr2J+DRvs9OVhoUPkgkMT35SBCuloWK4HbB7q2I2kZNxhGDuULraJytHTKANUhkIB JsDI3gyNEtGn1X92fknSTHiRaH/BNDdQZied65DkHl2ExOJdOGGeg3swI83kuzpgtyXr7I XpGho/GPvLVWJAaQVfTAJ3lZU38YHb2Yz3DO33Ygtgo9BgJflBJ+m9nqAxdhnbD0Ak+d24 SBg8tn7ORRtTyFZcynhYTaHK/UMy2kAlroKd6+p99ZVSM6HEXoYooi5/T3zs6Qni+SfAKY f7Egxg47gFS8fyJAnNAT7HqXAjZmG6ScLjBb/a5yXSzZxYiefpamAkV8gggdDA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Yf7Df6M53zp0r; Thu, 23 Jan 2025 17:27:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 50NHRUqK022559; Thu, 23 Jan 2025 17:27:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 50NHRU2H022556; Thu, 23 Jan 2025 17:27:30 GMT (envelope-from git) Date: Thu, 23 Jan 2025 17:27:30 GMT Message-Id: <202501231727.50NHRU2H022556@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: c56e586f0f02 - main - scmi: Fix race on timed out transmissions List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c56e586f0f029fec4a0fee844f83ff62da20e4b6 Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=c56e586f0f029fec4a0fee844f83ff62da20e4b6 commit c56e586f0f029fec4a0fee844f83ff62da20e4b6 Author: Cristian Marussi AuthorDate: 2025-01-23 12:46:38 +0000 Commit: Andrew Turner CommitDate: 2025-01-23 17:26:26 +0000 scmi: Fix race on timed out transmissions When a waited-for outstanding request is determined to have timed out, mark such request immediately as such, so as to avoid any possible race on the IRQ path with code path evaluating that same timed out condition. Tested on: Arm Morello Board Reviewed by: andrew Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D47419 Signed-off-by: Cristian Marussi --- sys/dev/firmware/arm/scmi.c | 5 ++--- 1 file 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); }