From nobody Fri Jul 24 21:53:03 2026 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E5113279DAF for ; Fri, 24 Jul 2026 07:59:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784879967; cv=none; b=pducXuO5r6TKTtBwpR85EyxnnyOmn+cgyY+Ahi3w3UfRyu+25lgZlk+Xlutoun2N4JrvuoJokE1BiHQ3bqbWoSCRVC+Xz95fPNbRqWd56ZZUg19OQgd1a+Xj6L4+JoHYGghLPYQNXwhQchOtUIho/+PDPQDDAd4Np53R9jpeM1I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784879967; c=relaxed/simple; bh=GVsHLPvtQhJ6Ja1bCK5/IdVuTbiUhaaG5w6B+6Ni5eE=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=NPwi0KzdMOxFMfW0ojfKDkwiE7lAyOlRHM3x7xbTEmpC3LE2Cs9ZlwKj6ccByG/w+OxzKK5nPR/i//smx4yvoGTC/UA4FYO1NZjXtdW08eYFaGgJJ56Ks+rPa7dvUIuBd6X1SKbOM8iH+3Gia45ZZ4OwH8XA5/O+3Zp4by/ckXA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=GIG8gqZu; arc=none smtp.client-ip=209.85.216.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GIG8gqZu" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-381b831d535so150138a91.0 for ; Fri, 24 Jul 2026 00:59:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784879965; x=1785484765; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=60gePLlXQJ2FLj3Sfms6m0pXBaiWjvamSHFgVRwWfTA=; b=GIG8gqZuk7QMWsNL2hKMViFe0DaxPazENyuU+w/ex/szS4hppwy1RrlqNnJL5xsplv Q8Q9G/xx5y21lfDl59Ny5ksoNx8xpbXC3V3ZB3yTx/bwveON3K7ttanWbwFqa3o8Mjqf Y3aEmB7Ok02hteyJoFkx2LXniO/DM8RmKxH/1yU+bis8Bl7nfp05fdsE4Ciox4CvXpWL D4lmc+wxxtH3taEFDSQLtqp9JSafpwKwi4SrDjTUNMjm5W93qWNVnykn6UbemQglVPhY ZJTfZjqlHOcLFcEr8Ln6XalZi4fKubmoo0qcyga8IFamMjuoa2U7KU+VR7KXE8FiLy9+ 6AXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784879965; x=1785484765; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=60gePLlXQJ2FLj3Sfms6m0pXBaiWjvamSHFgVRwWfTA=; b=GWIxImn/aKh6/0mB1xiCP8A78OLcXAg8PJafn5L2+38/bWSrwGMux6sXa6t46+jB2A auRtCe1KTPad7eQdXhkZneZ/8A9vTVh+3RaQ8ez9c9ciu+nrNyy3uUpTYV08FnlY7zcS pLDXWebFRF/j3JF/WNPtZZjPz0ZjJ1fu0dvNXBS540icKKDZc76wh3bS2pxtbHMnkuyk wT6BWFFP/cVRaD3TKqJbGWetR3CbqrjBTTXFI0hKuOUqMwiVPFiK+qmhrrzgtyve3Jm6 aNjhYdU/3/pKBzd+9hKOWBQQsbwY5UjZCA6D3t592FxY+ENrntrUAamgkZSjRR2Yqhfm 03mA== X-Forwarded-Encrypted: i=1; AHgh+Rohh9OkcD9U5uyd/zhgGpnih32+tVZlL+n7fXgT9HidH3iiZzrHDbIbg5gNaad0jP5kRBkqgaeeWAs35+Q=@vger.kernel.org X-Gm-Message-State: AOJu0YwmGFKzVRj8aMtJ1mV46Vj/SpgpgLtZDDwzcVoNt9BrnPw2fv+7 oN8a/nKWVC3geO9FZxuoc0E++pivqRl6MkDG3Pqglfnl9JChwkAD+B7c X-Gm-Gg: AR+sD11M2NRwyCdH/XM8MjjfDffrWWP0sRN/6/DE1ar2MEFmo3wej2eUS8M9f0YhSk0 Re9eMLluAqJt4trlSbNvg6U7+LtvtiSi+BcKBYwFql9TDXXA5330yqeFw4ysJf+ILsTeie00szC ZFDD4QLk14BKnoCvPlwalWEk/4mfgLpZn+iH4BT0QsJBa2VxFoehd4PnAV7xmOxT0p93TRzKRcD +zhWBKDvf6luSf+b4Bbs1EJcd7Tr21bl5YZIOgILwzSA3pFHeft8d1exmlN4YDgJMBy4EHlG/w6 MtUHiPLjQ+JNI8CFYDcU1ogPQsMAAF7la8ZEmR1COy6wopQ8pe+BgWmg416WRLX24/iAuu6s+N5 j4jxkU4oQFR1OUqJpngriwHgLEI1h/qnrOuv6lyxJHrJlI2T0GZL6el8xI1+biZT+3QprhfiEhj wYrWt0NDUz7eVV2zM/PbxsUJdA8KBRJjKKPCQoDSPKGEGjhYyQOzG8X4XodsiAWwR7tRCflicg9 JZSBM9fLKHw7xGkmQiwifN6NxwyLvP6IMmB39BaXKYoHQ== X-Received: by 2002:a17:90b:1f90:b0:38d:f096:a1dc with SMTP id 98e67ed59e1d1-38ec6575a01mr6454628a91.11.1784879965030; Fri, 24 Jul 2026 00:59:25 -0700 (PDT) Received: from bass-virtual-machine.. ([114.247.65.140]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38f03c20dbdsm1047727a91.13.2026.07.24.00.59.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 00:59:24 -0700 (PDT) From: Gui-Dong Han To: intel-gfx@lists.freedesktop.org, jani.nikula@linux.intel.com, joonas.lahtinen@linux.intel.com, rodrigo.vivi@intel.com, tursulin@ursulin.net Cc: chris@chris-wilson.co.uk, airlied@gmail.com, simona@ffwll.ch, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, baijiaju1990@gmail.com, Gui-Dong Han Subject: [PATCH] drm/i915: Use acquire when checking software fence completion Date: Fri, 24 Jul 2026 15:59:19 +0800 Message-Id: <20260724075919.2262539-1-hanguidong02@gmail.com> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" __i915_sw_fence_wake_up_all() publishes completion with atomic_set_release(). Pair it with atomic_read_acquire() in i915_sw_fence_done(). Without acquire ordering, a waiter can observe the completed state while still reading stale data written before completion, such as fence->error. This can prevent errors from completed dependencies from being propagated. i915_sw_fence_signaled() also accepts the state before the completion callback finishes, and its callers do not consume completion data. It does not need acquire ordering. Fixes: e68a139f6bf3 ("drm/i915: Add a sw fence for collecting up dma fences= ") Signed-off-by: Gui-Dong Han --- Found by auditing atomic operations used for synchronization. A similar fix can be found in 6df8e84aa6b5. --- drivers/gpu/drm/i915/i915_sw_fence.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_sw_fence.h b/drivers/gpu/drm/i915/i9= 15_sw_fence.h index f752bfc7c6e1..16563c66c984 100644 --- a/drivers/gpu/drm/i915/i915_sw_fence.h +++ b/drivers/gpu/drm/i915/i915_sw_fence.h @@ -105,7 +105,7 @@ static inline bool i915_sw_fence_signaled(const struct = i915_sw_fence *fence) =20 static inline bool i915_sw_fence_done(const struct i915_sw_fence *fence) { - return atomic_read(&fence->pending) < 0; + return atomic_read_acquire(&fence->pending) < 0; } =20 static inline void i915_sw_fence_wait(struct i915_sw_fence *fence) --=20 2.34.1