From nobody Mon Oct  5 12:12:32 2026
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 4hyyv446zGz4n9p8
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 12:12:32 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hyyv42hbFz4dyw
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 12:12:32 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791202352;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=/WbXJcTLiysd69/79rDWp9KlmLEfJpq7BoWm+bhTcG4=;
	b=NSPlcksTUygWD12gkKQ0AMpStfuOMtZOnwm0vYF6JRyOpacXrNz0ciBKeHeeXDRv4oiNky
	DrsLKpVGaosq1j+DcI23NpRAIGc719fEO42dyAAMBpLTn0YNqvDf19ALymPYvQTzGqR6kZ
	YsfOVttvBcWOHk3iiKB4JrR00pK8b/Ua6KR7RcabY6UnEoaew13NAREeggXZGEcEH30WCt
	+/s0OsH2vTRtuYIWcYWlZuJmoIkZVaHCRQtxqEKdruy7JJMnJnqMsrPEVFUHkzairUC8yi
	3vWwEAvn+zIJoOTWhIlzgdRVPya6MK4AwdooMcV5TMvL10xRWldYE0EqTMcYwQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791202352;
	b=pGcnBOg8tGn7gDJUg8VzKl7LQd89RjQ1ZRU8fIj3DGN2ZHttlskN7IvLFSkyKJwx2MhjyP
	AxcTF7s80h2ql5nbBfwaCpRRkLXktbKkThdP7LMYpm7OPrBVwOKa13HFaDEGi9jOaM78aS
	aYrfqp8QVjODyMjNAjeAikadKAlqJL0smFVNEKfZameChvsXdkSOYX1OEXR+lQxhVVEzpC
	x2ISiJuFeYgQWrEqLBeSWxuq3T7eMTRiVk8b8xIygICslinCfmWYPpWGMdF+09KNp7DE82
	Z6xDVSbHSCcKUZHE3nTEUAad7hp0uZr/wq3rfG4bC0sZxgMQmIRj9qGgbUZdQg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791202352;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=/WbXJcTLiysd69/79rDWp9KlmLEfJpq7BoWm+bhTcG4=;
	b=Nk9Rmyha7PVVzRCNOuIeqmP1FLmdArHc9mr2EqZHhkJQDKNAl/IXferLhZmobYBRHTy55t
	yUewbjW+vqtEqTtSK+cMx3CzW8aPpM5hZXFaR6BaLguAE9+CF2IY24lhvBaKg7Guu1lnv0
	DcHiAFWVIidBv2z2jAunoZ2LdOHBuU65ROrM8n1SAdtcOobWjaKjZgQ8KcWF4nXeAT21vr
	lGZmeApU0JJnKgbAunx4C+Jb3E+GvYMGPZl/TKZX6vOhuPOiNK/+xDqE2T5vbstTdhvjE1
	uAcbTMM5Y1aGrGjUkQA1sHx2kV0HahJRcdliVPpYrnQqlAoWXqcRcTDXWtwK4Q==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hyyv411DRzJvt
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 12:12:32 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 3aba2
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 12:12:32 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Cc: Sourojeet A <siri@racha.ca>
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: d7e7397c2171 - main - LinuxKPI: Add crc16.h for amdkfd support
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: d7e7397c217137c9f2465f60a7faf129c87934ec
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 12:12:32 +0000
Message-Id: <6ac39430.3aba2.310c1119@gitrepo.freebsd.org>

The branch main has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=d7e7397c217137c9f2465f60a7faf129c87934ec

commit d7e7397c217137c9f2465f60a7faf129c87934ec
Author:     Sourojeet A <siri@racha.ca>
AuthorDate: 2026-10-05 12:10:41 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-05 12:12:09 +0000

    LinuxKPI: Add crc16.h for amdkfd support
    
    Reviewed by:    wulf
    Differential Revision:  https://reviews.freebsd.org/D60275
---
 sys/compat/linuxkpi/common/include/linux/crc16.h | 13 +++++++++++++
 sys/sys/crc16.h                                  |  2 +-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/sys/compat/linuxkpi/common/include/linux/crc16.h b/sys/compat/linuxkpi/common/include/linux/crc16.h
new file mode 100644
index 000000000000..a44f05160f84
--- /dev/null
+++ b/sys/compat/linuxkpi/common/include/linux/crc16.h
@@ -0,0 +1,13 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2026 The FreeBSD Foundation
+ */
+
+#ifndef _LINUXKPI_LINUX_CRC16_H_
+#define _LINUXKPI_LINUX_CRC16_H_
+
+#include <linux/types.h>
+#include <sys/crc16.h>
+
+#endif /* _LINUXKPI_LINUX_CRC16_H_ */
diff --git a/sys/sys/crc16.h b/sys/sys/crc16.h
index 38f1e8220c41..145a10c9041f 100644
--- a/sys/sys/crc16.h
+++ b/sys/sys/crc16.h
@@ -34,7 +34,7 @@
 extern uint16_t const crc16_table[256];
 
 static inline uint16_t
-crc16(uint16_t crc, const void *buffer, unsigned int len)
+crc16(uint16_t crc, const void *buffer, size_t len)
 {
 	const unsigned char *cp = buffer;
 	while (len--)

From nobody Mon Oct  5 13:08:15 2026
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 4hz07P3DrLz4nG8J;
	Mon, 05 Oct 2026 13:08:17 +0000 (UTC)
	(envelope-from des@freebsd.org)
Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4])
	(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 "smtp.freebsd.org", Issuer "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz07P2bvvz4kq1;
	Mon, 05 Oct 2026 13:08:17 +0000 (UTC)
	(envelope-from des@freebsd.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791205697;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=p9aEdWKn14Ikk0gmze5uwyx6ABCo2JsmgC18CuTOi5s=;
	b=f0QftDJTfFZ0KRiFkpit2LyjPIw0LX/hM40wZwmjyntynwYMRhpt5yB7A2GMxNmxQX5hrD
	bNIlnxz7JoMwJV0NHRJVBVE36sekY21Hwm7+XhuDrUNcsEY9ukTVPCCXa0SocooufLTvzt
	Js5JJ4fS5ODEiRzBbL/MypV+yy6q5eQ7iru0EL1DwrsiuMXB6otZeJTZf5bfMdxFQGLpEl
	Ng/M+k5Dk9nczcpu1tt6sStlOk+/snbH8VjktpjOtNA4hUFdg/jM8wi2SvzIyxOrR3Tm2t
	HS6h59YdYVg5B4qmi4ItMTbUOPqR4KTuRLR83CczXCFoJWabbGqpkw2Iou54/g==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791205697;
	b=DKO8IVXj09QhfShF8HnIiYnw/j+i4GmhIvZs/cmzzafXd5IffwI6ZiCrDbOSp/94k9W6N2
	bd6qhiHSc3QXDiYWa5lK/KPKrpGmepbUa4Gj5U06pZu4YiWazlqX7gtxi0c3ooqjUnoWgi
	+KHWC2k0mg9T59w7hBPRdO04tqN+QivfYmuArMkg8a4wUPonmV1zf3H7NFSsMW7Ey5e/TY
	YyxLjHTMOjQ7J7i/uSo0uqvXIvJ2fbLOhv5KCZtzHIDIXMfeHcu5ffhic7LD570qvTXiEq
	H4wBHDm3Z9wyPrhJnYc4w9eksQIk/PwneC6EO4KI2fLXdxWG+roq1SbMPW7WIQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791205697;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=p9aEdWKn14Ikk0gmze5uwyx6ABCo2JsmgC18CuTOi5s=;
	b=QRHf/RnNY5iMBfCK7+ObTFmBAoahpa2aFiZp5qSMTQRbFR95OTZT+NpMraw4CVUT8NxLQf
	mEEXdARQlSAcXIvJBWXbz1nO4Jflo0ZJM7nPXyB+a+7o+JV8hp8r9M2Cq4veY9JX0MT3td
	fO3Cf7OJ5uQ0O/7rykPZSlRsuiSVdiCzLkKL7q0QIq5/6HkCY37TnzIYh7tKnimY8vWjUo
	kC4fKuCVyoTc0v4TvM0aZMCquMtiD48yvoIX1jIX7gZ0/8No1R90wUb/xdoxT8eZQ2zUM/
	fY3WxhdAkyftD/CwsHAt5YnInckkfzx2x1P4qtd7iUfH2fe2ESNkl/CqLnnX4Q==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from ltc.des.dev (2a01cb0585070b00922e16fffef1acef.ipv6.abo.wanadoo.fr [IPv6:2a01:cb05:8507:b00:922e:16ff:fef1:acef])
	(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)
	(Authenticated sender: des/mail)
	by smtp.freebsd.org (Postfix) with ESMTPSA id 4hz07P0HF3zYD7;
	Mon, 05 Oct 2026 13:08:17 +0000 (UTC)
	(envelope-from des@freebsd.org)
Received: by ltc.des.dev (Postfix, from userid 1001)
	id C715E11E5DE; Mon, 05 Oct 2026 15:08:15 +0200 (CEST)
From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@FreeBSD.org>
To: Maxim Sobolev <sobomax@FreeBSD.org>
Cc: src-committers@FreeBSD.org,  dev-commits-src-all@FreeBSD.org,
  dev-commits-src-main@FreeBSD.org
Subject: Re: git: 43b0384bc7e8 - main - mountpoint(1): new utility,
 implemented as a stat(1) hardlink
In-Reply-To: <6abecfdf.3a8dc.610fc5a7@gitrepo.freebsd.org>
References: <6abecfdf.3a8dc.610fc5a7@gitrepo.freebsd.org>
User-Agent: Gnus/5.13 (Gnus v5.13)
Date: Mon, 05 Oct 2026 15:08:15 +0200
Message-ID: <86jynwnvls.fsf@ltc.des.dev>
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Maxim Sobolev <sobomax@FreeBSD.org> writes:
> commit 43b0384bc7e87df5bd164ce833617e68824f4828
> Author:     Maxim Sobolev <sobomax@FreeBSD.org>
> AuthorDate: 2026-10-01 21:25:37 +0000
> Commit:     Maxim Sobolev <sobomax@FreeBSD.org>
> CommitDate: 2026-10-01 21:25:37 +0000
>
>     mountpoint(1): new utility, implemented as a stat(1) hardlink

Why was this implemented as a stat(1) hardlink?  There is aboslutely no
common code between the two.

DES
--=20
Dag-Erling Sm=C3=B8rgrav - des@FreeBSD.org

From nobody Mon Oct  5 13:12:15 2026
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 4hz0Cz6qCGz4nGKf
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 13:12:15 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz0Cz2rf7z4m4n
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:12:15 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791205935;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=+XuMtkX4y5yWZWGyxpcdhOVN3Erq+ZYgE3rqdPu0wEk=;
	b=AlLWwYMgznC83vzsQR05PzYMSCO4TmecK1GCyXpWEQDC/DtkzefCDhWUxNHT4OQh4ITMvT
	nz/UqRX+6ep0d+jpr5fdTxSZ52qTiTuNPBWiZqWeQtBHX6Wy5FxRAhfJ1KQ+GhYugO76YJ
	ncYPf379WsfPXMz+1PU/O8Q2ViiGmYOkNYJf86A74bJCYE7rNCj9CNy3TbJbhef4rGI72B
	YCBDmyNvz+WXos7pMKTRB1Z0tQ2BlFUy6SNCEcKBozb7LRfuxf8o/19wlTRDazaI5WQyYr
	aXFRp0QXqEy37x3fp0HRlOZ86B6Z2RThqdx6wtCjpZRDooESsJyCZgaGJnAslg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791205935;
	b=c40ns1WGgbXxdyNBVEN2NYN2jLtewGwDM2N2vrJHUdwW1tqog3xj8flwQ+Ucj2hOx7myyT
	nEX4Yi559qL1pA6m58jBSN2Vnhf2rhRhDragR/BhWORNb0CPvNL2qeF4fP07AehDEDwU6+
	/xZO5xrKYlH5jMlI+2RjMmpxbkNxH4N4iV0ILuIdz5o+3rlN/kbHwpVXtJ98c8pJCgAQf2
	yqNUgJ1hr2UWWvBFN2Ff0DQ3JT8Hvabuv8x357XlYsWp3QGIYx5ZbDvwDF7OATdMSfgrfH
	YolEkT+amIv6hzPre8ulX2uSwyvyqAMTx95Fotwt63SSmo7P+LQR1+ruEARj6g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791205935;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=+XuMtkX4y5yWZWGyxpcdhOVN3Erq+ZYgE3rqdPu0wEk=;
	b=jwOsvRp1kta+L9z/+FwojpsTDHVYmDoyUOrRZEwd7tBGuu6/Bd0fsU/4X2JdoUvA+IXwEn
	Gngd8d4zmkU6a1x87UPDWRCqctVdAiUaJBWLLINJj7Kd4Yve6UiDcQot/OeTvpVo4Bfn/A
	GDdaSWWWHw+RXMEQqVYpQsEAnH6bCm2lfKoklxmKZvPKTjM/cxV4+WSCR8w8/sdOSykVH/
	+oDg99p+gYiKwwFw6AnX0ICOrymEB8hPCJdVHhUyCuAaa4UIdx+GH1vd/nz+WgFJIUW4gn
	uii9mzkIkGQdSjvG41sY9j0ZeXrlkqFLAUV1x0ZeAwfMToHgNqTzBAfADgvLPA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz0Cz14c6zL7J
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:12:15 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 409a4
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 13:12:15 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Cc: Peter Eriksson <pen@lysator.liu.se>
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: b30e67dc130e - main - camcontrol: Add support for firmware uploading on HPE-branded drives
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: b30e67dc130ea8217e92e0b4c462f189e2268eba
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 13:12:15 +0000
Message-Id: <6ac3a22f.409a4.1fe5013@gitrepo.freebsd.org>

The branch main has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=b30e67dc130ea8217e92e0b4c462f189e2268eba

commit b30e67dc130ea8217e92e0b4c462f189e2268eba
Author:     Peter Eriksson <pen@lysator.liu.se>
AuthorDate: 2026-10-02 16:45:59 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-05 13:11:27 +0000

    camcontrol: Add support for firmware uploading on HPE-branded drives
    
    PR:             299059
---
 sbin/camcontrol/fwdownload.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sbin/camcontrol/fwdownload.c b/sbin/camcontrol/fwdownload.c
index 569021c2bfc1..d8057dab326c 100644
--- a/sbin/camcontrol/fwdownload.c
+++ b/sbin/camcontrol/fwdownload.c
@@ -197,6 +197,8 @@ static struct fw_vendor vendors_list[] = {
 	0x8000, 0x05, 0x05, 1, 0, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
 	{VENDOR_HP,	 	"HP",		T_ANY,
 	0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
+	{VENDOR_HP,	 	"HPE",		T_ANY,
+	0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
 	{VENDOR_IBM,		"IBM",		T_SEQUENTIAL,
 	0x8000, 0x07, 0x07, 0, 1, FW_TUR_NA, 300 * 1000, FW_TIMEOUT_DEFAULT},
 	{VENDOR_IBM,		"IBM",		T_ANY,

From nobody Mon Oct  5 13:21:09 2026
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 4hz0QF559dz6jqqJ
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 13:21:09 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz0QF3Xy0z4nZH
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:21:09 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791206469;
	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=bp5yuHxB35Tttc0BVVP65zzYW+wVVm5ves60R0AYJO8=;
	b=vMeLKqNAMuanaKraB1aY63+rcZ0isZzSEgjRbmIgnYxzVVI1uU92XhMSaimpJTOaekt01w
	LSHShC2ZzjatKyFECkcI0KfrtvVpHeXqejvTkzfImXuqZtildn3LNm1nsqNb8pVu4DBjWi
	Ep9UdFZAklrnQwUc36sYA8sESiboYzm2Y5kX6aV5TAcY2NlokrPsrUG/CowqIb7myQucoa
	KNa3NYYhOGLmSYTVUi2b3I6+6p53AYmVqfSBn4tMgtlvj0lFF8KzFcWjZnqKcIn4FQknse
	kVF0tIDiChThTfvZQFpKs1g20I/vSaT8xjdYA41WUNktD0YLsVljBgAOCHOxNQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791206469;
	b=yXdCTA3fTNspyBVIk1Affq/uRejXGy6isthiCn1S/xVQsyIFlz3vgEw6t3tXTXxbA0lk6q
	DL/oM1NZD4BqO/L7/6BKAxdaLItMMC1nWsF5Fp1liltA2yhQ2RkXtLCSeK0JccZW0NgRoX
	3+NB8xctNlky1itmb18yv0oeml6CcX4ArFwtpsqtno5zW016HtABDgPb6GqO04PcSOAM0x
	68QhnWy3kfVFqW7EBoCZz6/6g/S6b4svi7R5GGdGkIeeYeRVksDx3fEaXsxZGetZCq3vD2
	onoElU7hwP1Fq1VHOb4aUFZ1XufvwglzZT1ocpH8NX7daCtZbXc/RTtKMeLz7g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791206469;
	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=bp5yuHxB35Tttc0BVVP65zzYW+wVVm5ves60R0AYJO8=;
	b=aPlbJwGc4fWKFQ0myXqdRUrRyRqRrxW1YqHVAhb7p7wLUGQQFh6GyARds1k9e/SmG0krXT
	nu1obBzEtlx+A5cr2E0m5XOHqjwShI8zrnxNxsxlGFUlmQbcPzVIHBGzspGQr/md3a3lik
	L/jtD/fvHskxKHoPG3r69fjIefKWS/0ZbmyKHSfuFe2yS7H1PLE7H5Z/HREz+RnUlvdsyt
	Edw9sBepFwo6dQK/hhzvV0Zh1bWI6c/ZkrjJ2CVtK9SdOxqCqM+0DzS2A61xyNaaNzGy6Q
	oWDAAyna/hNQxFckGTAQWQEkAx4r7eLuGNhbC+F/rUalZiBaLVvJRJs2aS3c+w==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz0QF2S9MzLB8
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:21:09 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 40859
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 13:21:09 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Mark Johnston <markj@FreeBSD.org>
Subject: git: c109a681456d - main - netinet6: Fix the OSIOCAIFADDR_IN6 handler
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: markj
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: c109a681456d03fc0737ca83487995e28b759e3b
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 13:21:09 +0000
Message-Id: <6ac3a445.40859.16ead508@gitrepo.freebsd.org>

The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=c109a681456d03fc0737ca83487995e28b759e3b

commit c109a681456d03fc0737ca83487995e28b759e3b
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2026-10-05 13:13:47 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2026-10-05 13:20:58 +0000

    netinet6: Fix the OSIOCAIFADDR_IN6 handler
    
    We cannot simply treat a pointer to struct oin6_aliasreq as a pointer to
    struct in6_aliasreq: the latter is larger.  In particular, the store to
    ifra->ifra_vhid is out of bounds.
    
    Since OSIOCAIFADDR_IN6 does not need to copy data back out, it can
    simply use a struct in6_ifaliasreq on the stack.
    
    Reported by:    Andrew <xxx.sys@protonmail.com>
    Reviewed by:    pouria
    MFC after:      1 week
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D60184
---
 sys/netinet6/in6.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c
index 2c4dd09a28db..aa0528552163 100644
--- a/sys/netinet6/in6.c
+++ b/sys/netinet6/in6.c
@@ -266,7 +266,7 @@ in6_control_ioctl(u_long cmd, void *data,
 {
 	struct	in6_ifreq *ifr = (struct in6_ifreq *)data;
 	struct	in6_ifaddr *ia = NULL;
-	struct	in6_aliasreq *ifra = (struct in6_aliasreq *)data;
+	struct in6_aliasreq tmpifra, *ifra = (struct in6_aliasreq *)data;
 	struct sockaddr_in6 *sa6;
 	int error;
 	bool control_locked = false;
@@ -276,7 +276,9 @@ in6_control_ioctl(u_long cmd, void *data,
 	 */
 	if (cmd == OSIOCAIFADDR_IN6) {
 		cmd = SIOCAIFADDR_IN6;
-		ifra->ifra_vhid = 0;
+		ifra = &tmpifra;
+		memset(ifra, 0, sizeof(*ifra));
+		memcpy(ifra, data, sizeof(struct oin6_aliasreq));
 	}
 
 	switch (cmd) {

From nobody Mon Oct  5 13:23:23 2026
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 4hz0Sq4bxdz6jqwq
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 13:23:23 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz0Sq2XNdz4pV9
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:23:23 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791206603;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=HJkUY6p8cKwivDVBOxWePlMRyZVw/eCnnQMEveDWYhg=;
	b=gpOmQFS5mtlNzscDjh0V7qJ8fhT1jwDDUk478y6g0bSs5dcaBaTbbSD4T3F8kTuO2aQkxb
	XflCly3ckcqVCtXYbs1Hgn1ZKpmSVYuOTeUUjJSK6tSxUZDBVPwY1tJFTOhYTcw5Ic8HH9
	/5WInLXzynGPKbpYOCzl+ixfhS4AkIjv8SW6itLPitqYnyVC639h6nijs0TFd1fVGV4t4U
	WKytdc7pGQpY+KagQPHNXmhNryWQZcpxyZCGZRSeAgewDs0SrW3NPUEsUARPa985mUD9F2
	C6PJCNSdGBo4nbeVuPwW7paM5jXY0Y5o6hTlyJG4r960m3qSFlg6tCUgwDPN6w==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791206603;
	b=eUNDaEwq514Hgf8zyG4tSaSG6Wm4X4uaJRDmZUGQh6Ctr9k01OFqNx4KxcHZISA602YYjb
	Xw+KynD4RwJ7P81RYXF5ApgZv4N6eWbuKhoFfZCxuGHh4hHKBeHo9yXwjG+i1pzaT0upcA
	XioFoEPROdQ3VO+6n2qxoItc8UB/Oxk9PVJOR0UIIO6Uv+8hdEngYkLdFzS7uWb4i2Lj7y
	7IFjRTnawZAHwTa9seLEBAlIYq2ysnI0XkHvIamOx/UUqxZ2NVyEC/2jGg1K+9Ju/9Ncom
	XLIBnoyw/ODKw62l1KzBvVjTLHM6ug/xBBaua4z0gGOTB+lhxkDwpAIFx0Yjgw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791206603;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=HJkUY6p8cKwivDVBOxWePlMRyZVw/eCnnQMEveDWYhg=;
	b=E4NOuGS5d5vhj5IAVqOFNF090U+ql2kQIF95fW0gWYimq99SW94/axEx0IvLgglCoQ3Ldd
	041FZt11whWiSclme9qbQ0K8oe+vCXvK8rfu+76y42JHqgwHLBFxleiLJwUXJFmjjIufm9
	sOMKUr0+9AlxqMUUcHh7egmlJk41M7B9dLf2Q6PL+elTekVXEfsxrF7y9THS9vynH7WdS/
	Et4y1UdUjah/X3pb/3zy1YfYkccVokffgwvgTpKo3Y+c40oia62s2gApLaatjcy+WkBSY2
	8TXXVDuCRaf0vdjbXayeoeSn/HHkr3qdWdJingz8PrHafgIDKKFOrnLt5JCQKQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz0Sq0k8mzLNZ
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:23:23 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 41ff9
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 13:23:23 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Cc: Andrew Griffiths <andrew@calif.io>
From: Mark Johnston <markj@FreeBSD.org>
Subject: git: 80af0a32e48b - main - tcp: Preserve borrowed ICMPv6 error mbufs
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: markj
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 80af0a32e48bff6ad97e768b16d2dbc01ac8d1c3
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 13:23:23 +0000
Message-Id: <6ac3a4cb.41ff9.c4256a2@gitrepo.freebsd.org>

The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=80af0a32e48bff6ad97e768b16d2dbc01ac8d1c3

commit 80af0a32e48bff6ad97e768b16d2dbc01ac8d1c3
Author:     Andrew Griffiths <andrew@calif.io>
AuthorDate: 2026-10-05 13:14:38 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2026-10-05 13:21:20 +0000

    tcp: Preserve borrowed ICMPv6 error mbufs
    
    The TCP-over-UDP ICMP callback receives ip6c_m as a borrowed chain owned
    by icmp6_notify_error.  It used m_pulldown() to obtain a contiguous UDP
    header even though that API frees the complete chain when the requested
    range is unavailable.  The callback could then return without
    propagating the lost ownership, leaving raw ICMP delivery to read and
    free a stale head.
    
    Validate that the complete UDP header was quoted, copy it through the
    chain with m_copydata(), and temporarily advance the parser offset
    instead of consuming bytes from the caller-owned packet.
    
    A remote sender can reach the old path when TCP UDP tunneling is enabled
    by quoting the configured local UDP source port in an ICMPv6 error and
    including only four through seven UDP-header bytes.
    
    Signed-off-by: Andrew Griffiths <andrew@calif.io>
    
    Reviewed by:    pouria, tuexen, markj
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D60143
---
 sys/netinet/tcp_subr.c | 22 +++++++++-------------
 1 file changed, 9 insertions(+), 13 deletions(-)

diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c
index 1be803ed443f..4650e8035260 100644
--- a/sys/netinet/tcp_subr.c
+++ b/sys/netinet/tcp_subr.c
@@ -3392,25 +3392,21 @@ static void
 tcp6_ctlinput_viaudp(udp_tun_icmp_param_t param)
 {
 	struct ip6ctlparam *ip6cp = param.ip6cp;
-	struct mbuf *m;
-	struct udphdr *udp;
+	struct udphdr udp;
 	uint16_t port;
 
-	m = m_pulldown(ip6cp->ip6c_m, ip6cp->ip6c_off, sizeof(struct udphdr), NULL);
-	if (m == NULL) {
+	if (ip6cp->ip6c_m->m_pkthdr.len <
+	    ip6cp->ip6c_off + sizeof(struct udphdr))
 		return;
-	}
-	udp = mtod(m, struct udphdr *);
-	if (ntohs(udp->uh_sport) != V_tcp_udp_tunneling_port) {
+	m_copydata(ip6cp->ip6c_m, ip6cp->ip6c_off, sizeof(udp),
+	    (caddr_t)&udp);
+	if (ntohs(udp.uh_sport) != V_tcp_udp_tunneling_port)
 		return;
-	}
-	port = udp->uh_dport;
-	m_adj(m, sizeof(struct udphdr));
-	if ((m->m_flags & M_PKTHDR) == 0) {
-		ip6cp->ip6c_m->m_pkthdr.len -= sizeof(struct udphdr);
-	}
+	port = udp.uh_dport;
+	ip6cp->ip6c_off += sizeof(struct udphdr);
 	/* Now call in to the normal handling code */
 	tcp6_ctlinput_with_port(ip6cp, port);
+	ip6cp->ip6c_off -= sizeof(struct udphdr);
 }
 
 #endif /* INET6 */

From nobody Mon Oct  5 13:35:40 2026
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 4hz0l55gvdz6js7S
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 13:35:45 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz0l52G3Jz4r29
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:35:45 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791207345;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=cLp17M64K3AV/RFiQLFLdFk43EZzyM/ziND1g+HixR8=;
	b=X8gELx6UtWehZ0Ydnat6lqZNDN1TNpA5pT0/1dboK2RfcwflWLXQWlbhW79nZ3XIempJPY
	yg+CYK0n/Td4rHtYa7dY8iOiVaGyLWi8Tw6YlL60U1puZCej28wOcVvUQUW8Cb4BdhbQMa
	0/6/H1KJ6n6O0sw4eg9HRn46pOyke3KeehCUfNZYHHYFNeRszwxHtTGuPc6Tc1tyaeYXsl
	5Fu6lq1z+cY/KmVeJFJC32dQq8G7GE4I88B1JZbw2xWqLGMNMLVeVhQrUAYtFLSAFiCZbQ
	oWxxu7KIqjbDLjPyNS5aH+4YMTZa/v13S76CL0gOyGcjJVDeFRv297/2XIsOhA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791207345;
	b=XHddjXAGLIlnm5nLN4qbNhOewYLU+iDwnQarxMnrPpvMTu83SypaR+7ysy63Wstkd+26tr
	2aBr+a+GRQ5UpsW+ONz4yj6URoZaI5oulTbvTWl3UR8UqQKUfeX+SHoIaVQs5VZ5TL3s+2
	7QSg00PSG770TH5H5pe25jO4ULroTxGnqjKsii4wJrqoZ3pH1FOwUVjRJWaa/bFFSMZlFR
	3LAcdeO32crvnyxhlAx6h5YMby2N/Km5V5o9MEKdvRxLbIkVZ60FgB3OGBUJyJ2bPMLQ6F
	etCYVtwG5UX6JqKX8F6QdvJZw7BYlwMHzu14FS7PBsgSwjRhfuD2NQaZEjCecg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791207345;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=cLp17M64K3AV/RFiQLFLdFk43EZzyM/ziND1g+HixR8=;
	b=ppFDrSLIKfXvT3XGph8IW6x5pi0X+A1w/7QCyjUQsaeIlKQD0wml3RmjyJeXs2ehzhfz5X
	dQgNQIq+u6BJMxLCVHBlqrqcG9whtown1GPHdbxcQTWuNrauJuO18ylIdt0vWu7RH9MIJJ
	zh41oqpTYEdMoTFI1YrFNfWjS6L2VRR3KuWXRj1T+X7JU4GhHPhDtJt8ok0GQCmklLasE/
	CM+VtziPlyDGUHTH8ZoIcPxcgRivMO5CUKGuo7GTLipJk5QgGbZTW7eFD4FVQxuGPnhoJ5
	jEOami1RFMMbKkLWGxIQcolTp3NPJeeKwrVOXUrJZDxA4yQPIyKxvY92jUiZ+g==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz0l51K9HzLht
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:35:45 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 40d6d
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 13:35:40 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Cc: Chandrakanth Patil <chandrakanth.patil@broadcom.com>
From: Sumit Saxena <ssaxena@FreeBSD.org>
Subject: git: 8bf2795588c3 - stable/15 - bnxt_en: add bnxt_sriov.c to sys/conf/files for built-in kernel builds
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: ssaxena
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 8bf2795588c3edc26952ade677f3d586fff3bdd6
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 13:35:40 +0000
Message-Id: <6ac3a7ac.40d6d.24c6d17@gitrepo.freebsd.org>

The branch stable/15 has been updated by ssaxena:

URL: https://cgit.FreeBSD.org/src/commit/?id=8bf2795588c3edc26952ade677f3d586fff3bdd6

commit 8bf2795588c3edc26952ade677f3d586fff3bdd6
Author:     Chandrakanth Patil <chandrakanth.patil@broadcom.com>
AuthorDate: 2026-04-28 14:10:13 +0000
Commit:     Sumit Saxena <ssaxena@FreeBSD.org>
CommitDate: 2026-10-05 13:35:24 +0000

    bnxt_en: add bnxt_sriov.c to sys/conf/files for built-in kernel builds
    
    The SR-IOV series added bnxt_sriov.c and listed it in sys/modules/bnxt/bnxt_en/Makefile,
    but kernels that build bnxt into the image only compile sources named in sys/conf/files.
    Add bnxt_sriov.c next to the other bnxt_en entries so built-in bnxt (including LINT)
    links the SR-IOV implementation and avoids undefined symbols referenced from if_bnxt.c.
    
    Fixes: f2f831b2c151 ("bnxt_en: Add core SR-IOV infrastructure")
    
    MFC after:      1 month
    Reviewed by:    ssaxena
    Differential Revision: https://reviews.freebsd.org/D56688
    
    (cherry picked from commit c21c63fb565f1bc7f9564dbf12068c864f8891d8)
---
 sys/conf/files | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sys/conf/files b/sys/conf/files
index 6c07a7bea7f3..0d8a705aab2b 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -1321,6 +1321,7 @@ dev/bnxt/bnxt_en/bnxt_auxbus_compat.c	optional bnxt iflib pci compile-with "${BN
 dev/bnxt/bnxt_en/bnxt_dcb.c		optional bnxt iflib pci compile-with "${BNXT_C}"
 dev/bnxt/bnxt_en/bnxt_hwrm.c		optional bnxt iflib pci compile-with "${BNXT_C}"
 dev/bnxt/bnxt_en/bnxt_mgmt.c		optional bnxt iflib pci compile-with "${BNXT_C}"
+dev/bnxt/bnxt_en/bnxt_sriov.c		optional bnxt iflib pci compile-with "${BNXT_C}"
 dev/bnxt/bnxt_en/bnxt_sysctl.c		optional bnxt iflib pci compile-with "${BNXT_C}"
 dev/bnxt/bnxt_en/bnxt_txrx.c		optional bnxt iflib pci compile-with "${BNXT_C}"
 dev/bnxt/bnxt_en/bnxt_ulp.c		optional bnxt iflib pci compile-with "${BNXT_C}"

From nobody Mon Oct  5 13:37:55 2026
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 4hz0nb3pzpz6js81
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 13:37:55 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz0nb3GTDz4rF8
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:37:55 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791207475;
	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=uL/DHqRFtMY1BuxuLcKYYvhm9+vr6bGuKASFABgUP98=;
	b=Dp7GrT+ItQyY+Wl0gcXCxYfiywtREX+VRc9d2Vv19zQu/sUukgwRo3DBh5SqQevDiOrSCp
	6+G0MOO5IMCvfI6BUHHZEL14VKXmmq8wyS1MepGxiJpj9i4JcXa1WCWdTqhYXWqwB+RepS
	cBfcfDZEMkJpqcKTnbBh4GRUv/oRrlbgENmMbA/9X1GUlA36FWuHv6Rfk6H5CGU9s5nhUX
	Td8bUbRqo1dGVDIsAlFN0pDe8yajI49fHo5VsCJkaNSbVFj97yobUq9fQnPm/qxsawFeth
	1ywE3/D5uuMKBNTwHqrzqzp96Vq9+24PeNCugmf7f85K8ao369xYfyB2/+QXzw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791207475;
	b=L4tCTCFJpFUSkPNH3t553evVY+xYPZmVs1ttFkXYzZNVexG+is2bH/JpBUk7EVFX+l1iF/
	1NNZhVdt5IFkwy8/xoVbNDXbg+xLuRLtUfXQo/1rGdY/oZR1R81xjnkFwyOOTaqgYTevPj
	pheeGBNZ/+ZKDVAgtS5oOr/IHoMmsALawpaRd1GxABF/5M8/j9XFAKgVTEAjq6+dtnTf7B
	N+0ZXIh4nTgkhvtaujOjz+3n1fUbRJinXUfzNEwCY2bZMNwcoR4H8gWYZCRPws89Fwtn/S
	SBDAGp/OkyXqt2BEr2qI3tLSv3wOky6jjUa7QjBMWqe0DcWekiLpudYFEJ9SRQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791207475;
	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=uL/DHqRFtMY1BuxuLcKYYvhm9+vr6bGuKASFABgUP98=;
	b=dvfHMYlM+9SVhPXAtB7u2NCEK9fWCm7Lu+W/ZvxqopTc5V1aw5+PyAIEV0T2tCk1pWnsEB
	niv44y/39E7c0CRLm56b8KtDSi1C1/ISiWu296Ttbpda9iaHO3G/tS7ZkhcWRvzdgwDlQP
	TgJK3+YDxRjisIY2wdPt0Dyz6hUsMBEbQQPKpNHeqEDpyi5yYHGoigF0eG9wRf20yGHIQ8
	BM3Ia0VqyTOWrLMbT4o8PQe93PqgCgyt7siO/+WrtulhX6OfJD4Ke5VShAwvfeID3rp/OH
	FOTkRkj87f/auw74YpFGXgCtU9ShYwB36giaf53BXPISjR903nL/RLsY/MDK5Q==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz0nb23NxzLbw
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:37:55 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 406fb
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 13:37:55 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Piotr Kubaj <pkubaj@FreeBSD.org>
Subject: git: 1f1043d550ea - main - powerpc: keep FP, VMX and VSX ownership changes atomic with preemption
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: pkubaj
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 1f1043d550ea2b8282e692019f17a88896212a76
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 13:37:55 +0000
Message-Id: <6ac3a833.406fb.44575d79@gitrepo.freebsd.org>

The branch main has been updated by pkubaj:

URL: https://cgit.FreeBSD.org/src/commit/?id=1f1043d550ea2b8282e692019f17a88896212a76

commit 1f1043d550ea2b8282e692019f17a88896212a76
Author:     Piotr Kubaj <pkubaj@FreeBSD.org>
AuthorDate: 2026-09-21 12:48:06 +0000
Commit:     Piotr Kubaj <pkubaj@FreeBSD.org>
CommitDate: 2026-10-05 13:37:46 +0000

    powerpc: keep FP, VMX and VSX ownership changes atomic with preemption
    
    trap() and set_mcontext() change the FP/VMX/VSX ownership state in
    several steps with preemption enabled.  A context switch in between
    leaves the thread computing with another thread's register contents:
    
    - enable_fpu()/enable_vec() set PCB_FPU/PCB_VEC before loading the
      registers, so a switch mid-load saves a half-loaded unit over the PCB.
    - set_mcontext() clears the frame's MSR bits and then the PCB flags;
      a switch in between re-enables the unit, and the thread returns to
      user space with it enabled but not owned, so it is neither saved nor
      restored until the next signal.
    
    Both paths run after every sigreturn(2), setcontext(2) and
    swapcontext(3).  A POWER9 test that keeps f14-f31 live across a signal,
    with other threads using the FPU on the same CPU, saw 283 corrupted
    round trips out of 882000; none after this change.
    
    Hold a critical section around both, as amd64 and arm64 do.
    
    Reviewed by:    jhibbits
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D60054
---
 sys/powerpc/powerpc/exec_machdep.c | 8 +++++++-
 sys/powerpc/powerpc/trap.c         | 6 ++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/sys/powerpc/powerpc/exec_machdep.c b/sys/powerpc/powerpc/exec_machdep.c
index 18e0ba004a13..7192feae6055 100644
--- a/sys/powerpc/powerpc/exec_machdep.c
+++ b/sys/powerpc/powerpc/exec_machdep.c
@@ -522,7 +522,14 @@ set_mcontext(struct thread *td, mcontext_t *mcp)
 	 *
 	 * Additionally, ensure VSX is disabled as well, as it is illegal
 	 * to leave it turned on when FP or VEC are off.
+	 *
+	 * The MSR bits in the frame and the PCB flags must change together:
+	 * if the thread is switched out in between, cpu_switchin() still
+	 * sees the flags, reloads the registers and puts the MSR bits back
+	 * into the frame, and the thread then runs with the units enabled
+	 * but without owning them.
 	 */
+	critical_enter();
 	tf->srr1 &= ~(PSL_FP | PSL_VSX | PSL_VEC);
 	pcb->pcb_flags &= ~(PCB_FPU | PCB_VSX | PCB_VEC);
 
@@ -536,7 +543,6 @@ set_mcontext(struct thread *td, mcontext_t *mcp)
 	 * sigresume is callled will used by the resumed thread, instead of the
 	 * previously saved data from the mcontext.
 	 */
-	critical_enter();
 	msr = mfmsr() & ~(PSL_FP | PSL_VSX | PSL_VEC);
 	isync();
 	mtmsr(msr);
diff --git a/sys/powerpc/powerpc/trap.c b/sys/powerpc/powerpc/trap.c
index 6843ce49b48f..b04506cf10d9 100644
--- a/sys/powerpc/powerpc/trap.c
+++ b/sys/powerpc/powerpc/trap.c
@@ -294,24 +294,30 @@ trap(struct trapframe *frame)
 		case EXC_FPU:
 			KASSERT((td->td_pcb->pcb_flags & PCB_FPU) != PCB_FPU,
 			    ("FPU already enabled for thread"));
+			critical_enter();
 			enable_fpu(td);
+			critical_exit();
 			break;
 
 		case EXC_VEC:
 			KASSERT((td->td_pcb->pcb_flags & PCB_VEC) != PCB_VEC,
 			    ("Altivec already enabled for thread"));
+			critical_enter();
 			enable_vec(td);
+			critical_exit();
 			break;
 
 		case EXC_VSX:
 			KASSERT((td->td_pcb->pcb_flags & PCB_VSX) != PCB_VSX,
 			    ("VSX already enabled for thread"));
+			critical_enter();
 			if (!(td->td_pcb->pcb_flags & PCB_VEC))
 				enable_vec(td);
 			if (td->td_pcb->pcb_flags & PCB_FPU)
 				save_fpu(td);
 			td->td_pcb->pcb_flags |= PCB_VSX;
 			enable_fpu(td);
+			critical_exit();
 			break;
 
 		case EXC_FAC:

From nobody Mon Oct  5 13:48:06 2026
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 4hz11N16qxz6jstl
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 13:48:08 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz11M2sgVz4t9t
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:48:07 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791208087;
	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=+5Pa8CuqrHJn4G9MtEcyK/MUZzSERtcdtPJ4Uw0I08Q=;
	b=w9AeifBH5IbtYhdJ/3xibbsxt8OyUVM+RCn3rOtg1kp6A5+lIyQ7RVqjU/OB7yTfJBcE7s
	dS1wD8+IU7sGfnZKh9SfIvpEEUmsy99KJi3g5mZPqOjO+4Mu+Bvfi1uFZnGm6wR3rbUEng
	Kl6i8u018Jw7RCB9iMab+fLMJmUpZQmv/EU2Ew++euJP+mUgoQk0XP5w1O5MDbqa5JWMjA
	5039ecqRlJM1skCHJRs7X+fTCSV9tljClM2Cdi/tOOKeXluwdeJMaC5dkUBcrh+xEO/Mo+
	D/BRJIAajQipk7IXbG2x/lcHEY3EWh01ASWeCMuGaURdLL37TwjR26NvQRMfRg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791208087;
	b=Y3jJhNWPYZBvmjdsJ4UbNfaOoa0Voo3/9rzNQBilihIqV6+6/gKw5UC+MB9h5XGbD7EgH8
	7pnj+M15DXd+mWFOqLlodj7c67Mm1Aj17UuOZaIicqDHbit4jbAbFqfvNU6c+uAaJLHcL0
	bWenowbi/oHVNZQE2k4DFJRD394sEbrrwEOxPASU8+USDE/9kEaQuiKT3H8Ei6DR77ybp6
	uxZuHsjU9G8ciSd8kOfbXCXUidtRn3OLHohcNYgAVFZpd9DnCK07oRSP6nO5YDxxEiDMWS
	6TFyG4mKFPxBmeVkvUXruaaPNsoknPtXhvqYB0OBwtehn07r60tX1KlkqatoAw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791208087;
	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=+5Pa8CuqrHJn4G9MtEcyK/MUZzSERtcdtPJ4Uw0I08Q=;
	b=uvpBs27zf9iU48GYursU5qNhnZ9oEfnN9LRUCvzjRc9ZrM4H63hsK1bF7EGUeW0V0q3oWK
	DkTrYvbuUA83PfTyjjq0zTNRLnad20IaUqe6QtDq+TCH7++ohIangM5Gc81w3c+Y1wqTub
	4x7xfeIKXhcwiKtgoTU906pRr/nqhdJKd3FR8KBRZip/nDLOTc7PPydWkCsQExBwleVaZo
	4yUGtQF7TNiFqBId070DGUf4FD1XHi0dxZn9c/o7yCz32LvANqzu0m67c0bKqHLs3ITCwn
	fffq+wgIAcorNmmNTZHh2VDi7ubk+jkkw5FmwzqH/lPlA48CwjygsJCp+U5i/w==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz11L6P9rzM0c
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:48:06 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 42635
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 13:48:06 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: 2ba5b9da2be1 - stable/15 - openssh: Add date bump command to FREEBSD-upgrade instructions
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 2ba5b9da2be10261c383035bef932cd37d52f903
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 13:48:06 +0000
Message-Id: <6ac3aa96.42635.217d0cfa@gitrepo.freebsd.org>

The branch stable/15 has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=2ba5b9da2be10261c383035bef932cd37d52f903

commit 2ba5b9da2be10261c383035bef932cd37d52f903
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2026-08-24 01:36:25 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-05 13:47:51 +0000

    openssh: Add date bump command to FREEBSD-upgrade instructions
    
    Provide a convenient in-place sed edit command to update the FreeBSD
    VersionAddendum dates with today's date.
    
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit 0ec81f6a531bf7b3b06e869c99295f3d4ab9ed8e)
---
 crypto/openssh/FREEBSD-upgrade | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/crypto/openssh/FREEBSD-upgrade b/crypto/openssh/FREEBSD-upgrade
index 6987956ce163..f536ade84788 100644
--- a/crypto/openssh/FREEBSD-upgrade
+++ b/crypto/openssh/FREEBSD-upgrade
@@ -69,6 +69,11 @@
     version.h, and update the default value in sshd_config and
     sshd_config.5.
 
+    $ sed -E -i "" "s/FreeBSD-202[0-9]{5}/FreeBSD-$(date +%Y%m%d)/" \
+        crypto/openssh/sshd_config \
+        crypto/openssh/sshd_config.5 \
+        crypto/openssh/version.h
+
 11) Diff against the vendor branch:
 
     $ git diff --diff-filter=M vendor/openssh/X.YpZ HEAD:crypto/openssh

From nobody Mon Oct  5 13:48:05 2026
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 4hz11R2qCwz6jt88
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 13:48:11 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz11R0GgVz4tBm
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:48:11 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791208091;
	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=DQH27suH+IV2VIDLChmi+qUW2LY4ZgEvVAzNq8nsKBY=;
	b=foDUZAe02rOYFr0cgDv16+crVBnbjUvfUmxMZJ+FRnpDsjsW76FEB36/oYhyMEH6bo9wQ0
	EyBbosHCj6L6Vq9JSRrMXPjKl0Wlvle4mCMze0fbdOwefjo2g5QHGLEmJPMOZ5jwnya4wa
	Lu1omZe8cqiQMVrBkZ3JzufSPgKCYg3zCaETTgNxhRMBgTZk/70nBpwk2N32h1Z+JNUIrf
	nFn5ujjiFO13dxIMymqg0JbDMnr6u5pCdxDFE/XiwoPydIWLn8+MunDX0me1y07p2m3kFp
	WclnA2N36sR0IoFB3ucxNhttUh9IkF/0Txr9njqpMoh/2X3s477+4l/SF0j/Yg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791208091;
	b=Qd41EEO64cVei0m3yO9snv2aJDItz2RDhdvCbrznXWfU720PdHZenFS2d8RhiR+kgKalEN
	UBXGIk/AjFVpaOqZEMjLRBjHrQigGq0vF4YtOFEgOpmKMGxPQufrZzTYyWWKKAvuxRco78
	AhvNzBo8Ukk1erozpGNc+mq5x0EFUuoLlpm9Ygdss+6FRM47kOmJSyyYUuGD1ko4xIcuc7
	wIk+RImFKmYemGhV2NKuwTclAcnF6yeMu1t+ldZhaz8I//c5/UFte/cIf7lfNVLVBDsoyF
	4hTQdSp9uXQsG3pkhHLKbBF8RAezGQEgRqmvdnPR1xG3PQyeouwnRVWyeAJRjg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791208091;
	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=DQH27suH+IV2VIDLChmi+qUW2LY4ZgEvVAzNq8nsKBY=;
	b=CnMD2tN02uewrArSXnrk10xj4TIo6AyHq0UmJ8RlHIS9g3asLg+ocXJLEMPn3lUTcI62NL
	j7H1BdfsCnB3Dm5wmgGMPzGYlxJrmm6/JwcCI4CzErKlYfrBLXgVWmFL6Fev0ppQRGs3T7
	IV7Lx0wHqJfg2YQULVuNTcgHmRoHHenL+k+AQmz/rG+N68FwP54gXjHWb0b7/MXWteRwK0
	1Qa/RBzC8MN0eCQ5yz3Ia8g65rGGnbQhFqL7uIsiXh5lt56gBTeq4VMjLHyuDWms/a9WN9
	N9Gs8RyzS0axmPSz93r2vY+GCOO6D1I7j3TDV3FQZ3YoYX62IGYfADEF+gakmw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz11Q6D9QzLjm
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:48:10 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 42d4a
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 13:48:05 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: 14d692629356 - stable/15 - openssh: Add reference for another local patch
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 14d6926293569048d2d04f6e5a13d80f192ad99e
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 13:48:05 +0000
Message-Id: <6ac3aa95.42d4a.29ff766d@gitrepo.freebsd.org>

The branch stable/15 has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=14d6926293569048d2d04f6e5a13d80f192ad99e

commit 14d6926293569048d2d04f6e5a13d80f192ad99e
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2026-05-15 16:16:45 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-05 13:47:51 +0000

    openssh: Add reference for another local patch
    
    A bug fix was committed locally and submitted upstream.  Document it in
    our upgrade instructions, as these sometimes take a long time before
    getting merged.
    
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit 6531070132b0210aaaeb08c0dc93cb272bed348e)
---
 crypto/openssh/FREEBSD-upgrade | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/crypto/openssh/FREEBSD-upgrade b/crypto/openssh/FREEBSD-upgrade
index 815c11a8f8ca..6987956ce163 100644
--- a/crypto/openssh/FREEBSD-upgrade
+++ b/crypto/openssh/FREEBSD-upgrade
@@ -188,6 +188,11 @@
    internet protocols are supported by the kernel before trying to
    connect to the target host.  This avoids confusing the user with
    spurious error messages.
+
+12) EVP_CIPHER_CTX_get_iv() stub bugfix
+
+   Bug fix submitted upstream at
+   https://bugzilla.mindrot.org/show_bug.cgi?id=3873
 
 
 This port was brought to you by (in no particular order) DARPA, NAI

From nobody Mon Oct  5 13:58:18 2026
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 4hz1F65K0Jz6jtGn
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 13:58:18 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz1F63f4qz4vSC
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:58:18 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791208698;
	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=Zc/tJEOgM3lTKtgPDyZT3Aor2ddZ7uLFOSpWubJM5as=;
	b=F3DvnrPW1JTCuOR58BcG68dEnbRikqaaMNWrUOOYRuc0XLwtcQ7TTDmOYR42yyFyIn7NtJ
	T9s21OfQwjuPRaPZpboXor4TxoTFESk23W8bH5XxDufpY5nd4zMNDeNtnlpabx72vQVRRQ
	6AXBq1DRoz4QC8WAqwWEbh1NCo1rDNKBz4um5B7VrRxzsRfsRFZ2uKN7NRgs944r1YlqF+
	VPUeYPcJgmyB7kmefAqJU+WUFtytcnYm+Os6MzggwpVBdEzBBvAng/Hf2O7Tmz9634FTut
	inErm+Rl6elUay1lY3o607fq7fg1WSkCWkJ8tbIj8eY/leFB2rYKOutqewAHsA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791208698;
	b=Ii93xylGOa0WI06s873lH5GlioRPevhBtGGTqWRmqErnpNXWFCb1RfWzNjm+O2pqIsnwDi
	Ijo6yvZDdGmS5gRxKrnReLgNFxoc0t+pxvWja1lryIey6s307cepxGnvmI1sXyHtCXm03M
	kJVHaNxI+5Pwm1oA2ScFHI5mGtz/kAImCPfwg/61uQjfvsS6TR0tGlQd0iGNbb3kE5g3so
	msLgRBHhkan76SgVt44mtuPTLTk93D+3B9t6BuVbyfjZFhFueMx729II/U4IrUmaUcRJqs
	w4rBtl4FP9KnEX/dPh86GvJvLkJBpl5Opt44KXeBbNp/cfbbbavWKvrtvJFuxg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791208698;
	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=Zc/tJEOgM3lTKtgPDyZT3Aor2ddZ7uLFOSpWubJM5as=;
	b=w2T0hoNgbb2QqFxrmc8+CHMJIesJzQcdWABnki6QMNhOGIrkhbIsTQge6s8DPKFZal5l11
	0SMlatM4b1kEA9KX/CrYfJaC4/AWSYe0Z0v24yGgA+dDifakdBo0IJlRHbhPWp5OkshRgS
	67FtI1YfcZc6PrRceHbGRVhgNJNUBkCJAACKvcREF2rI3kTrK83NsfNpg3U5maAVfDevHd
	xyY1nVOPh6AtL0KuMIjyLh32hJHZPD4QF6WFWh9dX4DLPh4E0KBRE9ZjGBlXE/E1KlZTgA
	N/uYGxeCkRy0KaYhIyCOSwgW1SAWfVCKaY8+TyGA/L8YFumfN/jfFjda/D9/bw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz1F61W42zMCC
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:58:18 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 44dcf
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 13:58:18 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: 2bdbd0a3702f - stable/15 - OpenSSH: Update to 10.2p1
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 2bdbd0a3702fb9595767379a68861dd401c28621
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 13:58:18 +0000
Message-Id: <6ac3acfa.44dcf.42912b23@gitrepo.freebsd.org>

The branch stable/15 has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=2bdbd0a3702fb9595767379a68861dd401c28621

commit 2bdbd0a3702fb9595767379a68861dd401c28621
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2026-05-12 21:12:09 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-05 13:47:51 +0000

    OpenSSH: Update to 10.2p1
    
    Full release notes are available at
    https://www.openssh.com/txt/release-10.2
    
    Selected highlights from the release notes:
    
    Bugfixes
    --------
    
     * ssh(1): fix mishandling of terminal connections when
       ControlPersist was active that rendered the session unusable.
       bz3872
    
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit e68aa5ab80ab57bdbcbe94dd2922a018d675e7f0)
---
 crypto/openssh/.depend                     |   2 +-
 crypto/openssh/.github/ci-status.md        |   5 +
 crypto/openssh/.github/run_test.sh         |   1 -
 crypto/openssh/ChangeLog                   | 183 +++++++++++++++++++++++------
 crypto/openssh/Makefile.in                 |   2 +-
 crypto/openssh/README                      |   2 +-
 crypto/openssh/auth-pam.c                  |   2 +-
 crypto/openssh/channels.c                  |   9 +-
 crypto/openssh/channels.h                  |   3 +-
 crypto/openssh/config.h                    |   5 +-
 crypto/openssh/configure.ac                |   2 +
 crypto/openssh/contrib/redhat/openssh.spec |   2 +-
 crypto/openssh/contrib/suse/openssh.spec   |   2 +-
 crypto/openssh/openbsd-compat/arc4random.h |   4 +-
 crypto/openssh/openbsd-compat/bsd-misc.c   |  24 ++++
 crypto/openssh/openbsd-compat/bsd-misc.h   |   8 ++
 crypto/openssh/regress/test-exec.sh        |  12 +-
 crypto/openssh/ssh-pkcs11-helper.c         |  16 ---
 crypto/openssh/ssh-pkcs11.c                |  31 ++++-
 crypto/openssh/ssh_namespace.h             |   1 -
 crypto/openssh/sshkey.c                    |   8 ++
 crypto/openssh/version.h                   |   4 +-
 22 files changed, 248 insertions(+), 80 deletions(-)

diff --git a/crypto/openssh/.depend b/crypto/openssh/.depend
index 93e4d864eb52..660f515caf54 100644
--- a/crypto/openssh/.depend
+++ b/crypto/openssh/.depend
@@ -140,7 +140,7 @@ ssh-keyscan.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-c
 ssh-keysign.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h ssherr.h sshkey.h ssh.h ssh2.h misc.h sshbuf.h authfile.h msg.h canohost.h pathnames.h readconf.h uidswap.h
 ssh-pkcs11-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h pathnames.h xmalloc.h sshbuf.h log.h ssherr.h misc.h sshkey.h authfd.h atomicio.h ssh-pkcs11.h
 ssh-pkcs11-helper.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshbuf.h log.h ssherr.h misc.h sshkey.h authfd.h ssh-pkcs11.h
-ssh-pkcs11.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h ssherr.h sshkey.h
+ssh-pkcs11.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h ssherr.h sshkey.h ssh-pkcs11.h
 ssh-rsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
 ssh-sk-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h ssherr.h sshbuf.h sshkey.h msg.h digest.h pathnames.h ssh-sk.h misc.h
 ssh-sk-helper.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h ssherr.h sshkey.h authfd.h misc.h sshbuf.h msg.h uidswap.h ssh-sk.h ssh-pkcs11.h
diff --git a/crypto/openssh/.github/ci-status.md b/crypto/openssh/.github/ci-status.md
index 5b1f77f2369c..82ea40a840b4 100644
--- a/crypto/openssh/.github/ci-status.md
+++ b/crypto/openssh/.github/ci-status.md
@@ -8,6 +8,11 @@ master :
 [![Coverity Status](https://scan.coverity.com/projects/21341/badge.svg)](https://scan.coverity.com/projects/openssh-portable)
 <br>
 
+10.1 :
+[![C/C++ CI](../../../actions/workflows/c-cpp.yml/badge.svg?branch=V_10_1)](../../../actions/workflows/c-cpp.yml?query=branch:V_10_1)
+[![VM CI](../../../actions/workflows/vm.yml/badge.svg?branch=V_10_1)](../../../actions/workflows/vm.yml?query=branch:V_10_1)
+[![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_10_1)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_10_1)
+
 10.0 :
 [![C/C++ CI](../../../actions/workflows/c-cpp.yml/badge.svg?branch=V_10_0)](../../../actions/workflows/c-cpp.yml?query=branch:V_10_0)
 [![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_10_0)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_10_0)
diff --git a/crypto/openssh/.github/run_test.sh b/crypto/openssh/.github/run_test.sh
index aac9ce57942e..33c90ac291c2 100755
--- a/crypto/openssh/.github/run_test.sh
+++ b/crypto/openssh/.github/run_test.sh
@@ -13,7 +13,6 @@ if [ ! -z "$SUDO" ] && [ ! -z "$TEST_SSH_HOSTBASED_AUTH" ]; then
     hostname | $SUDO tee $sshconf/shosts.equiv >/dev/null
     echo "EnableSSHKeysign yes" | $SUDO tee $sshconf/ssh_config >/dev/null
     $SUDO mkdir -p $sshconf
-    $SUDO cp -p /etc/ssh/ssh_host*key* $sshconf
     $SUDO make install
     for key in $sshconf/ssh_host*key*.pub; do
         echo `hostname` `cat $key` | \
diff --git a/crypto/openssh/ChangeLog b/crypto/openssh/ChangeLog
index e690f70726a2..83b4cece2f34 100644
--- a/crypto/openssh/ChangeLog
+++ b/crypto/openssh/ChangeLog
@@ -1,3 +1,149 @@
+commit 2d8a388de215d9959d72bb11f03e07a6eb2e4614
+Author: Damien Miller <djm@mindrot.org>
+Date:   Fri Oct 10 13:37:07 2025 +1100
+
+    depend
+
+commit 1d2676f4ffae35e2db37a35c385efaf2932cd639
+Author: Damien Miller <djm@mindrot.org>
+Date:   Thu Oct 9 14:53:04 2025 +1100
+
+    update versions
+
+commit ecd65a492bd0ed3a44a1c07428107b2e148bfee4
+Author: djm@openbsd.org <djm@openbsd.org>
+Date:   Wed Oct 8 00:32:52 2025 +0000
+
+    upstream: openssh-10.2
+    
+    The only change since 10.1 is the channels.c fix
+    
+    OpenBSD-Commit-ID: 5eebeb0db14c694efd4ee96b5f16112e3e5d5ba9
+
+commit ea9af2921cb6af8e65341531db3a7351917f0a92
+Author: djm@openbsd.org <djm@openbsd.org>
+Date:   Wed Oct 8 21:02:16 2025 +0000
+
+    upstream: fix crash at exit (visible via ssh-keygen -D) when
+    
+    multiple keys loaded. ok markus deraadt dtucker
+    
+    OpenBSD-Commit-ID: baa9763ec69d162108dafd962792ec5610ff45c9
+
+commit e49013576074ccd2d7ae75fb824170c739ce97a1
+Author: Damien Miller <djm@mindrot.org>
+Date:   Thu Oct 9 10:07:40 2025 +1100
+
+    link ssh-keygen directly against ssh-pkcs11.c
+    
+    Matches what OpenBSD does and fixes ssh-keygen regression in
+    certifying keys using a CA key hosted via ssh-agent (bz3877)
+
+commit 684f2ceff8c0eeb775e8653cf32609f8fbfe07b1
+Author: Damien Miller <djm@mindrot.org>
+Date:   Thu Oct 9 13:10:27 2025 +1100
+
+    some fixes to p11_setup
+    
+    1. Use the ssh-keygen under test and not the one in $PATH
+    2. Include a test PKCS#11 operation to ensure that the P11 stack is
+       working correctly.
+    
+    Previously, it was possible for p11_setup to return success on
+    configurations with PKCS#11 support disabled.
+
+commit af17ae64a5cfee42334883d2802f40f779131740
+Author: Damien Miller <djm@mindrot.org>
+Date:   Thu Oct 9 13:12:15 2025 +1100
+
+    complete PKCS#11 stubs and move to ssh-pkcs11.c
+    
+    Should unbreak --disable-pkcs11 builds
+
+commit bcf7c05a473f92a35f4f3b561fd7a1e339e0a30f
+Author: Darren Tucker <dtucker@dtucker.net>
+Date:   Wed Oct 8 11:26:52 2025 +1100
+
+    Fix header name and move return outside of ifdef.
+    
+    Fixes from Mike Frysinger via Github PR#597.
+
+commit b937061fe4922caced7b91442b3233c0bd763492
+Author: Darren Tucker <dtucker@dtucker.net>
+Date:   Tue Oct 7 21:10:33 2025 +1100
+
+    Check HAVE_MMAP too now that configure sets it.
+
+commit 8d57083c062f03098c9f767ec8d6278dc549a2f6
+Author: Darren Tucker <dtucker@dtucker.net>
+Date:   Tue Oct 7 21:07:05 2025 +1100
+
+    Use calloc for sshkeys if mmap is not supported.
+    
+    Based on Github PR#597 from Mike Frysinger, any bugs added by me.
+
+commit c97b931bffa481c72ff4bfddd9d59a2110899289
+Author: Darren Tucker <dtucker@dtucker.net>
+Date:   Tue Oct 7 20:25:07 2025 +1100
+
+    Add fcntl.h to includes.
+    
+    From FreeBSD via bz#3874: "This was previously included due to nested
+    includes in Heimdal's headers.  Without this, the build fails with an
+    error due to redefining AT_FDCWD."
+
+commit 8aa13832315e52c4404c993a59c6139b44ac6114
+Author: Daan De Meyer <daan.j.demeyer@gmail.com>
+Date:   Mon Mar 20 20:22:14 2023 +0100
+
+    Only set PAM_RHOST if the remote host is not "UNKNOWN"
+    
+    When using sshd's -i option with stdio that is not a AF_INET/AF_INET6
+    socket, auth_get_canonical_hostname() returns "UNKNOWN" which is then
+    set as the value of PAM_RHOST, causing pam to try to do a reverse DNS
+    query of "UNKNOWN", which times out multiple times, causing a
+    substantial slowdown when logging in.
+    
+    To fix this, let's only set PAM_RHOST if the hostname is not "UNKNOWN".
+
+commit 0bd6649ea80ead0cd6404dbc25b64937421b556e
+Author: Darren Tucker <dtucker@dtucker.net>
+Date:   Tue Oct 7 20:10:56 2025 +1100
+
+    Don't copy native host keys for hostbased test.
+    
+    Some github runners (notably macos-14) seem to have host keys where
+    public and private do not match, so generate our own keys for testing
+    purposes.
+
+commit 33b63718d40ccc555b8c7a24331a3790b2efc6c5
+Author: Darren Tucker <dtucker@dtucker.net>
+Date:   Tue Oct 7 20:10:07 2025 +1100
+
+    Add 10.1 branch to ci-status page.
+
+commit 52411f15353257e9ec883fc044b7a56b6fca242d
+Author: Darren Tucker <dtucker@dtucker.net>
+Date:   Tue Oct 7 20:04:40 2025 +1100
+
+    Add clock_gettime compat shim.
+    
+    This fixes the build on macOS prior to 10.12 Sierra, since it does not
+    have it.  Found and tested by Sevan Janiyan.
+
+commit beae06f56e0d0a66ca535896149d5fb0b2e8a1b4
+Author: djm@openbsd.org <djm@openbsd.org>
+Date:   Tue Oct 7 08:02:32 2025 +0000
+
+    upstream: don't reuse c->isatty for signalling that the remote channel
+    
+    has a tty attached as this causes side effects, e.g. in channel_handle_rfd().
+    bz3872
+    
+    ok markus@
+    
+    OpenBSD-Commit-ID: 4cd8a9f641498ca6089442e59bad0fd3dcbe85f8
+
 commit 476bab6259d5a6ea0402ec79bc47ed61e2c15e86
 Author: Damien Miller <djm@mindrot.org>
 Date:   Mon Oct 6 12:52:25 2025 +1100
@@ -9292,40 +9438,3 @@ Date:   Tue Oct 10 03:57:45 2023 +0000
     OpenSSH promises not to use (comment change only)
     
     OpenBSD-Commit-ID: e61795b453d4892d2c99ce1039112c4a00250e03
-
-commit 90b0d73d63a706e85f6431f05a62d2ce1b476472
-Author: djm@openbsd.org <djm@openbsd.org>
-Date:   Fri Oct 6 03:32:15 2023 +0000
-
-    upstream: typo in error message
-    
-    OpenBSD-Regress-ID: 6a8edf0dc39941298e3780b147b10c0a600b4fee
-
-commit e84517f51532ec913d8fb01a8aab7307134774bb
-Author: djm@openbsd.org <djm@openbsd.org>
-Date:   Fri Oct 6 03:25:14 2023 +0000
-
-    upstream: Perform the softhsm2 setup as discrete steps rather than
-    
-    as a long shell pipeline. Makes it easier to figure out what has happened
-    when it breaks.
-    
-    OpenBSD-Regress-ID: b3f1292115fed65765d0a95414df16e27772d81c
-
-commit cb54becff4d776238e0e9072943ba0872260535d
-Author: claudio@openbsd.org <claudio@openbsd.org>
-Date:   Sun Sep 24 08:14:13 2023 +0000
-
-    upstream: REGRESS_FAIL_EARLY defaults to yes now. So no need to
-    
-    overload the value here anymore. OK tb@ bluhm@
-    
-    OpenBSD-Regress-ID: f063330f1bebbcd373100afccebc91a965b14496
-
-commit f01f5137ceba65baf34ceac5a298c12ac01b1fef
-Author: jmc@openbsd.org <jmc@openbsd.org>
-Date:   Wed Oct 4 05:42:10 2023 +0000
-
-    upstream: spelling fix;
-    
-    OpenBSD-Commit-ID: 493f95121567e5ab0d9dd1150f873b5535ca0195
diff --git a/crypto/openssh/Makefile.in b/crypto/openssh/Makefile.in
index 760fbaa5b997..ba17a79f0d3d 100644
--- a/crypto/openssh/Makefile.in
+++ b/crypto/openssh/Makefile.in
@@ -158,7 +158,7 @@ SSHADD_OBJS=	ssh-add.o $(P11OBJS) $(SKOBJS)
 
 SSHAGENT_OBJS=	ssh-agent.o $(P11OBJS) $(SKOBJS)
 
-SSHKEYGEN_OBJS=	ssh-keygen.o sshsig.o $(P11OBJS) $(SKOBJS)
+SSHKEYGEN_OBJS=	ssh-keygen.o sshsig.o ssh-pkcs11.o $(SKOBJS)
 
 SSHKEYSIGN_OBJS=ssh-keysign.o readconf.o uidswap.o $(P11OBJS) $(SKOBJS)
 
diff --git a/crypto/openssh/README b/crypto/openssh/README
index e19b021e4fbc..41ecba193597 100644
--- a/crypto/openssh/README
+++ b/crypto/openssh/README
@@ -1,4 +1,4 @@
-See https://www.openssh.com/releasenotes.html#10.1p1 for the release
+See https://www.openssh.com/releasenotes.html#10.2p1 for the release
 notes.
 
 Please read https://www.openssh.com/report.html for bug reporting
diff --git a/crypto/openssh/auth-pam.c b/crypto/openssh/auth-pam.c
index 806a7ecf3c25..a4d26e4a5faa 100644
--- a/crypto/openssh/auth-pam.c
+++ b/crypto/openssh/auth-pam.c
@@ -759,7 +759,7 @@ sshpam_init(struct ssh *ssh, Authctxt *authctxt)
 		sshpam_laddr = get_local_ipaddr(
 		    ssh_packet_get_connection_in(ssh));
 	}
-	if (sshpam_rhost != NULL) {
+	if (sshpam_rhost != NULL && strcmp(sshpam_rhost, "UNKNOWN") != 0) {
 		debug("PAM: setting PAM_RHOST to \"%s\"", sshpam_rhost);
 		sshpam_err = pam_set_item(sshpam_handle, PAM_RHOST,
 		    sshpam_rhost);
diff --git a/crypto/openssh/channels.c b/crypto/openssh/channels.c
index f1d7bcf345b1..80014ff341fa 100644
--- a/crypto/openssh/channels.c
+++ b/crypto/openssh/channels.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: channels.c,v 1.451 2025/09/25 06:33:19 djm Exp $ */
+/* $OpenBSD: channels.c,v 1.452 2025/10/07 08:02:32 djm Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -362,7 +362,7 @@ channel_classify(struct ssh *ssh, Channel *c)
 {
 	struct ssh_channels *sc = ssh->chanctxt;
 	const char *type = c->xctype == NULL ? c->ctype : c->xctype;
-	const char *classifier = c->isatty ?
+	const char *classifier = (c->isatty || c->remote_has_tty) ?
 	    sc->bulk_classifier_tty : sc->bulk_classifier_notty;
 
 	c->bulk = type != NULL && match_pattern_list(type, classifier, 0) == 1;
@@ -566,7 +566,7 @@ channel_new(struct ssh *ssh, char *ctype, int type, int rfd, int wfd, int efd,
 void
 channel_set_tty(struct ssh *ssh, Channel *c)
 {
-	c->isatty = 1;
+	c->remote_has_tty = 1;
 	channel_classify(ssh, c);
 }
 
@@ -1078,7 +1078,8 @@ channel_format_status(const Channel *c)
 	    c->rfd, c->wfd, c->efd, c->sock, c->ctl_chan,
 	    c->have_ctl_child_id ? "c" : "nc", c->ctl_child_id,
 	    c->io_want, c->io_ready,
-	    c->isatty ? "T" : "", c->bulk ? "B" : "I");
+	    c->isatty ? "T" : (c->remote_has_tty ? "RT" : ""),
+	    c->bulk ? "B" : "I");
 	return ret;
 }
 
diff --git a/crypto/openssh/channels.h b/crypto/openssh/channels.h
index df7c7f364d22..7456541f8ce3 100644
--- a/crypto/openssh/channels.h
+++ b/crypto/openssh/channels.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: channels.h,v 1.161 2025/09/25 06:33:19 djm Exp $ */
+/* $OpenBSD: channels.h,v 1.162 2025/10/07 08:02:32 djm Exp $ */
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -145,6 +145,7 @@ struct Channel {
 	int     ctl_chan;	/* control channel (multiplexed connections) */
 	uint32_t ctl_child_id;	/* child session for mux controllers */
 	int	have_ctl_child_id;/* non-zero if ctl_child_id is valid */
+	int     remote_has_tty;	/* remote side has a tty */
 	int     isatty;		/* rfd is a tty */
 #ifdef _AIX
 	int     wfd_isatty;	/* wfd is a tty */
diff --git a/crypto/openssh/config.h b/crypto/openssh/config.h
index 23d24fadf6cd..b7f432596b55 100644
--- a/crypto/openssh/config.h
+++ b/crypto/openssh/config.h
@@ -995,6 +995,9 @@
 /* Define to 1 if you have the 'mkdtemp' function. */
 #define HAVE_MKDTEMP 1
 
+/* Define to 1 if you have the 'mmap' function. */
+#define HAVE_MMAP 1
+
 /* define if you have mode_t data type */
 #define HAVE_MODE_T 1
 
@@ -1145,7 +1148,7 @@
 #define HAVE_REALPATH 1
 
 /* Define to 1 if you have the 'recallocarray' function. */
-/* #undef HAVE_RECALLOCARRAY */
+#define HAVE_RECALLOCARRAY 1
 
 /* Define to 1 if you have the 'recvmsg' function. */
 #define HAVE_RECVMSG 1
diff --git a/crypto/openssh/configure.ac b/crypto/openssh/configure.ac
index 287fbfbefdd9..0c1b447db87e 100644
--- a/crypto/openssh/configure.ac
+++ b/crypto/openssh/configure.ac
@@ -536,6 +536,7 @@ AC_CHECK_HEADERS([ \
     nlist.h \
     poll.h \
     stdint.h \
+    sys/mman.h \
     sys/stat.h \
     sys/time.h \
     sys/un.h \
@@ -2159,6 +2160,7 @@ AC_CHECK_FUNCS([ \
 	memmove \
 	memset_s \
 	mkdtemp \
+	mmap \
 	ngetaddrinfo \
 	nlist \
 	nsleep \
diff --git a/crypto/openssh/contrib/redhat/openssh.spec b/crypto/openssh/contrib/redhat/openssh.spec
index a8fe2ecd0620..9a84728556de 100644
--- a/crypto/openssh/contrib/redhat/openssh.spec
+++ b/crypto/openssh/contrib/redhat/openssh.spec
@@ -1,4 +1,4 @@
-%global ver 10.1p1
+%global ver 10.2p1
 %global rel 1%{?dist}
 
 # OpenSSH privilege separation requires a user & group ID
diff --git a/crypto/openssh/contrib/suse/openssh.spec b/crypto/openssh/contrib/suse/openssh.spec
index 63ea57064d10..46514234dedb 100644
--- a/crypto/openssh/contrib/suse/openssh.spec
+++ b/crypto/openssh/contrib/suse/openssh.spec
@@ -13,7 +13,7 @@
 
 Summary:	OpenSSH, a free Secure Shell (SSH) protocol implementation
 Name:		openssh
-Version:	10.1p1
+Version:	10.2p1
 URL:		https://www.openssh.com/
 Release:	1
 Source0:	openssh-%{version}.tar.gz
diff --git a/crypto/openssh/openbsd-compat/arc4random.h b/crypto/openssh/openbsd-compat/arc4random.h
index af2d5c172a28..8f6842874b29 100644
--- a/crypto/openssh/openbsd-compat/arc4random.h
+++ b/crypto/openssh/openbsd-compat/arc4random.h
@@ -65,7 +65,7 @@ _rs_forkdetect(void)
 static inline int
 _rs_allocate(struct _rs **rsp, struct _rsx **rsxp)
 {
-#if defined(MAP_ANON) && defined(MAP_PRIVATE)
+#if defined(HAVE_MMAP) && defined(MAP_ANON) && defined(MAP_PRIVATE)
 	if ((*rsp = mmap(NULL, sizeof(**rsp), PROT_READ|PROT_WRITE,
 	    MAP_ANON|MAP_PRIVATE, -1, 0)) == MAP_FAILED)
 		return (-1);
@@ -84,7 +84,7 @@ _rs_allocate(struct _rs **rsp, struct _rsx **rsxp)
 		*rsp = NULL;
 		return (-1);
 	}
-#endif
+#endif /* HAVE_MMAP et al */
 
 	_ARC4_ATFORK(_rs_forkhandler);
 	return (0);
diff --git a/crypto/openssh/openbsd-compat/bsd-misc.c b/crypto/openssh/openbsd-compat/bsd-misc.c
index 983cd3fe6216..2c196ec23eee 100644
--- a/crypto/openssh/openbsd-compat/bsd-misc.c
+++ b/crypto/openssh/openbsd-compat/bsd-misc.c
@@ -494,6 +494,30 @@ localtime_r(const time_t *timep, struct tm *result)
 }
 #endif
 
+#ifndef HAVE_CLOCK_GETTIME
+int
+clock_gettime(clockid_t clockid, struct timespec *ts)
+{
+	struct timeval tv;
+
+	if (clockid != CLOCK_REALTIME) {
+		errno = ENOSYS;
+		return -1;
+	}
+	if (ts == NULL) {
+		errno = EFAULT;
+		return -1;
+	}
+
+	if (gettimeofday(&tv, NULL) == -1)
+		return -1;
+
+	ts->tv_sec = tv.tv_sec;
+	ts->tv_nsec = (long)tv.tv_usec * 1000;
+	return 0;
+}
+#endif
+
 #ifdef ASAN_OPTIONS
 const char *__asan_default_options(void) {
 	return ASAN_OPTIONS;
diff --git a/crypto/openssh/openbsd-compat/bsd-misc.h b/crypto/openssh/openbsd-compat/bsd-misc.h
index 2ad89cd83b59..8495f471c285 100644
--- a/crypto/openssh/openbsd-compat/bsd-misc.h
+++ b/crypto/openssh/openbsd-compat/bsd-misc.h
@@ -202,6 +202,14 @@ int flock(int, int);
 struct tm *localtime_r(const time_t *, struct tm *);
 #endif
 
+#ifndef HAVE_CLOCK_GETTIME
+typedef int clockid_t;
+#ifndef CLOCK_REALTIME
+# define CLOCK_REALTIME	0
+#endif
+int clock_gettime(clockid_t, struct timespec *);
+#endif
+
 #ifndef HAVE_REALPATH
 #define realpath(x, y)	(sftp_realpath((x), (y)))
 #endif
diff --git a/crypto/openssh/regress/test-exec.sh b/crypto/openssh/regress/test-exec.sh
index c5270042e6a9..34fb58fda0f8 100644
--- a/crypto/openssh/regress/test-exec.sh
+++ b/crypto/openssh/regress/test-exec.sh
@@ -964,7 +964,7 @@ EOF
 	softhsm2-util --slot "$slot" --label 01 --id 01 --pin "$TEST_SSH_PIN" \
 	    --import $RSAP8 >/dev/null || fatal "softhsm import RSA fail"
 	chmod 600 $RSA
-	ssh-keygen -y -f $RSA > ${RSA}.pub
+	${SSHKEYGEN} -y -f $RSA > ${RSA}.pub
 	# ECDSA key
 	ECPARAM=${SSH_SOFTHSM_DIR}/ECPARAM
 	EC=${SSH_SOFTHSM_DIR}/EC
@@ -978,7 +978,7 @@ EOF
 	softhsm2-util --slot "$slot" --label 02 --id 02 --pin "$TEST_SSH_PIN" \
 	    --import $ECP8 >/dev/null || fatal "softhsm import EC fail"
 	chmod 600 $EC
-	ssh-keygen -y -f $EC > ${EC}.pub
+	${SSHKEYGEN} -y -f $EC > ${EC}.pub
 	# Ed25519 key
 	ED25519=${SSH_SOFTHSM_DIR}/ED25519
 	ED25519P8=${SSH_SOFTHSM_DIR}/ED25519P8
@@ -990,7 +990,7 @@ EOF
 	    --import $ED25519P8 >/dev/null || \
 		fatal "softhsm import ed25519 fail"
 	chmod 600 $ED25519
-	ssh-keygen -y -f $ED25519 > ${ED25519}.pub
+	${SSHKEYGEN} -y -f $ED25519 > ${ED25519}.pub
 	# Prepare askpass script to load PIN.
 	PIN_SH=$SSH_SOFTHSM_DIR/pin.sh
 	cat > $PIN_SH << EOF
@@ -999,7 +999,11 @@ echo "${TEST_SSH_PIN}"
 EOF
 	chmod 0700 "$PIN_SH"
 	PKCS11_OK=yes
-	return 0
+	if env SSH_ASKPASS="$PIN_SH" SSH_ASKPASS_REQUIRE=force \
+	    ${SSHKEYGEN} -D ${TEST_SSH_PKCS11} >/dev/null 2>&1 ; then
+		return 0
+	fi
+	return 1
 }
 
 # Peforms ssh-add with the right token PIN.
diff --git a/crypto/openssh/ssh-pkcs11-helper.c b/crypto/openssh/ssh-pkcs11-helper.c
index 7ed4bdb76841..aeb5b7a8a924 100644
--- a/crypto/openssh/ssh-pkcs11-helper.c
+++ b/crypto/openssh/ssh-pkcs11-helper.c
@@ -310,22 +310,6 @@ main(int argc, char **argv)
 	}
 }
 #else /* ENABLE_PKCS11 */
-/* stubs */
-int
-pkcs11_sign(struct sshkey *key,
-    u_char **sigp, size_t *lenp,
-    const u_char *data, size_t datalen,
-    const char *alg, const char *sk_provider,
-    const char *sk_pin, u_int compat)
-{
-	return SSH_ERR_INTERNAL_ERROR;
-}
-
-void
-pkcs11_key_free(struct sshkey *key)
-{
-}
-
 int
 main(int argc, char **argv)
 {
diff --git a/crypto/openssh/ssh-pkcs11.c b/crypto/openssh/ssh-pkcs11.c
index 0a94fcd97adb..c8817947395a 100644
--- a/crypto/openssh/ssh-pkcs11.c
+++ b/crypto/openssh/ssh-pkcs11.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-pkcs11.c,v 1.72 2025/10/03 00:08:02 djm Exp $ */
+/* $OpenBSD: ssh-pkcs11.c,v 1.73 2025/10/08 21:02:16 djm Exp $ */
 /*
  * Copyright (c) 2010 Markus Friedl.  All rights reserved.
  * Copyright (c) 2014 Pedro Martelletto. All rights reserved.
@@ -2029,8 +2029,10 @@ pkcs11_terminate(void)
 
 	debug3_f("called");
 
-	while ((k11 = TAILQ_FIRST(&pkcs11_keys)) != NULL)
+	while ((k11 = TAILQ_FIRST(&pkcs11_keys)) != NULL) {
+		TAILQ_REMOVE(&pkcs11_keys, k11, next);
 		pkcs11_k11_free(k11);
+	}
 	while ((p = TAILQ_FIRST(&pkcs11_providers)) != NULL) {
 		TAILQ_REMOVE(&pkcs11_providers, p, next);
 		pkcs11_provider_finalize(p);
@@ -2287,11 +2289,13 @@ out:
 
 #include "log.h"
 #include "sshkey.h"
+#include "ssherr.h"
+#include "ssh-pkcs11.h"
 
 int
 pkcs11_init(int interactive)
 {
-	error_f("dlopen() not supported");
+	error_f("PKCS#11 not supported");
 	return (-1);
 }
 
@@ -2299,13 +2303,30 @@ int
 pkcs11_add_provider(char *provider_id, char *pin, struct sshkey ***keyp,
     char ***labelsp)
 {
-	error_f("dlopen() not supported");
+	error_f("PKCS#11 not supported");
 	return (-1);
 }
 
+void
+pkcs11_key_free(struct sshkey *key)
+{
+	error_f("PKCS#11 not supported");
+}
+
+int
+pkcs11_sign(struct sshkey *key,
+    u_char **sigp, size_t *lenp,
+    const u_char *data, size_t datalen,
+    const char *alg, const char *sk_provider,
+    const char *sk_pin, u_int compat)
+{
+	error_f("PKCS#11 not supported");
+	return SSH_ERR_FEATURE_UNSUPPORTED;
+}
+
 void
 pkcs11_terminate(void)
 {
-	error_f("dlopen() not supported");
+	error_f("PKCS#11 not supported");
 }
 #endif /* ENABLE_PKCS11 */
diff --git a/crypto/openssh/ssh_namespace.h b/crypto/openssh/ssh_namespace.h
index d11f4ee6ccb1..c91b050c7867 100644
--- a/crypto/openssh/ssh_namespace.h
+++ b/crypto/openssh/ssh_namespace.h
@@ -535,7 +535,6 @@
 #define qfileout				Fssh_qfileout
 #define read_mux				Fssh_read_mux
 #define read_passphrase				Fssh_read_passphrase
-#define recallocarray				Fssh_recallocarray
 #define record_hostkey				Fssh_record_hostkey
 #define replacearg				Fssh_replacearg
 #define revoke_blob				Fssh_revoke_blob
diff --git a/crypto/openssh/sshkey.c b/crypto/openssh/sshkey.c
index e17e929e0258..afd7822c4f41 100644
--- a/crypto/openssh/sshkey.c
+++ b/crypto/openssh/sshkey.c
@@ -723,6 +723,7 @@ sshkey_sk_cleanup(struct sshkey *k)
 static int
 sshkey_prekey_alloc(u_char **prekeyp, size_t len)
 {
+#if defined(HAVE_MMAP) && defined(MAP_ANON) && defined(MAP_PRIVATE)
 	u_char *prekey;
 
 	*prekeyp = NULL;
@@ -733,15 +734,22 @@ sshkey_prekey_alloc(u_char **prekeyp, size_t len)
 	(void)madvise(prekey, len, MADV_DONTDUMP);
 #endif
 	*prekeyp = prekey;
+#else
+	*prekeyp = calloc(1, len);
+#endif /* HAVE_MMAP et al */
 	return 0;
 }
 
 static void
 sshkey_prekey_free(void *prekey, size_t len)
 {
+#if defined(HAVE_MMAP) && defined(MAP_ANON) && defined(MAP_PRIVATE)
 	if (prekey == NULL)
 		return;
 	munmap(prekey, len);
+#else
+	free(prekey);
+#endif /* HAVE_MMAP et al */
 }
 
 static void
diff --git a/crypto/openssh/version.h b/crypto/openssh/version.h
index e2c35c3dfb83..f258b035582f 100644
--- a/crypto/openssh/version.h
+++ b/crypto/openssh/version.h
@@ -1,6 +1,6 @@
-/* $OpenBSD: version.h,v 1.106 2025/10/06 01:45:22 djm Exp $ */
+/* $OpenBSD: version.h,v 1.107 2025/10/08 00:32:52 djm Exp $ */
 
-#define SSH_VERSION	"OpenSSH_10.1"
+#define SSH_VERSION	"OpenSSH_10.2"
 
 #define SSH_PORTABLE	"p1"
 #define SSH_RELEASE	SSH_VERSION SSH_PORTABLE

From nobody Mon Oct  5 13:58:16 2026
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 4hz1FB3Npmz6jtGs
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 13:58:22 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz1FB2GzPz4tv8
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:58:22 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791208702;
	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=x1l2y8FHtyAdNhWP3XsIz4+pyrYX+uoKRXO47bcBNT4=;
	b=yBJ8L19uCCkM8JCwELo+qrHwmNVKzq8HaScoOIs0X2tdOWCfPd/leqdMP/mzlHexhOOP/D
	nOiUNZCE7IeJzicOPIitspFwajy0DjQlCgRjIU92WqWI7pjAFILVIm72REvkkq1NQ7dumn
	OodR2BM1SZQVoOQaYwIuXUpRfFcm9bbfrQ82fdJzGHHFW/dQQCCxzhkTXRebD1/YOz1IsA
	vTOx5kQ3sqOcn+S6gatgvYgRoOjoCcev3181zntudyTwdpEzo3ZrrgmUTEuzQ3jZ5RVw8u
	DpwnPut/egWFaQOx9h+GHcA6vlSMJHZTF27BatWSFeySXAzUZ/3hJauu3iqP2g==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791208702;
	b=Zvz9/fYKVKEtQ2lCSQTNBA1uVzO6lAa5BF2NbnpRh/Z0VGTVfxGLqsUZR8WE4hEXutTVIR
	7kbmQlQcDsB+ZFY1AzVe1TQYAn4kA5ClCbVOkizp2k5Ex+0vUY+zd+xoJBB9Zeh1yW/IMj
	YVWs2ju/EuSvbZPcmWI4v7/WsO+rxsPGTg/+Z/k8JgOFxmh7X9nc5zaqGySkMEqqiFVdLw
	QMA3hXcExSW2t2LHL0kcByh6V6hjwp58t3HXWMUDTc+pQb9ZVQLhmRnFhX17yOlgpucSH4
	un0JGo8Qoa3O8obNhBKzJsJ/z43uiwsNzoTL0ia6v5RzCXzyb9NKaco2m1tkJw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791208702;
	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=x1l2y8FHtyAdNhWP3XsIz4+pyrYX+uoKRXO47bcBNT4=;
	b=BhPGVWFOl35rZg0of/HzQ04AoUKKnU3JotPtg8KcTHmDIFWQKTShfSQqH+Nx88sLacAuLs
	f8VaQ6vcQaVX4NuZS7j2paNRjCBqy2Y7NjbwLvjpv2lI2YCpOR5kkXy+QFPxigGx60+7HM
	OPT8pCILlKU+LKCGfVaTNbJcbxdAOwme/PFiTbWc3HzK5TJoLU8Y5Afn2aQWfLn+EMtQaL
	PkDFyq8rJ4RcGsq5YsE4g3O7KWZaU/Edi3+U53QYZUKSnPakXx8TR75SURxo7rTLIVV/+x
	q8jL8cRxH76m0IGtVhdoHVKQJiC+xIwdzxLpAMe/ZsrHRremR2bSlcSs2kpf/w==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz1FB1JsJzLxW
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:58:22 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 452d9
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 13:58:16 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: 687a0d4a6b23 - stable/15 - OpenSSH: Update to 10.1p1
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 687a0d4a6b2391cd045951e4e431dd585d131575
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 13:58:16 +0000
Message-Id: <6ac3acf8.452d9.8573132@gitrepo.freebsd.org>

The branch stable/15 has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=687a0d4a6b2391cd045951e4e431dd585d131575

commit 687a0d4a6b2391cd045951e4e431dd585d131575
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2026-05-12 20:24:10 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-05 13:47:51 +0000

    OpenSSH: Update to 10.1p1
    
    Full release notes are available at
    https://www.openssh.com/txt/release-10.1
    
    Selected highlights from the release notes:
    
    Potentially-incompatible changes
    
     * ssh(1): add a warning when the connection negotiates a non-post
       quantum key agreement algorithm.
    
     * ssh(1), sshd(8): major changes to handling of DSCP marking/IPQoS
    
     * ssh(1), sshd(8): deprecate support for IPv4 type-of-service (ToS)
       keywords in the IPQoS configuration directive.
    
     * ssh-add(1): when adding certificates to an agent, set the expiry
       to the certificate expiry time plus a short (5 min) grace period.
    
     * ssh-agent(1), sshd(8): move agent listener sockets from /tmp to
       under ~/.ssh/agent for both ssh-agent(1) and forwarded sockets
       in sshd(8).
    
    Security
    
     * ssh(1): disallow control characters in usernames passed via the
       commandline or expanded using %-sequences from the configuration
       file, and disallow \0 characters in ssh:// URIs.
    
    New features
    
     * ssh(1), sshd(8): add SIGINFO handlers to log active channel and
       session information.
    
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit 644b4646c7acab87dc20d4e5dd53d2d9da152989)
---
 crypto/openssh/.depend                             |    25 +-
 crypto/openssh/.github/ci-status.md                |    22 +-
 crypto/openssh/.github/configs                     |    13 +-
 crypto/openssh/.github/install_libcrypto.sh        |    75 +
 crypto/openssh/.github/install_putty.sh            |    37 +
 crypto/openssh/.github/run_test.sh                 |    23 +-
 crypto/openssh/.github/setup_ci.sh                 |    73 +-
 crypto/openssh/.github/workflows/c-cpp.yml         |    89 +-
 crypto/openssh/.github/workflows/selfhosted.yml    |    15 +-
 crypto/openssh/.github/workflows/upstream.yml      |    11 +-
 crypto/openssh/.github/workflows/vm.yml            |   371 +
 crypto/openssh/.gitignore                          |     1 +
 crypto/openssh/.skipped-commit-ids                 |     7 +
 crypto/openssh/ChangeLog                           | 11611 +++++++++++--------
 crypto/openssh/INSTALL                             |     2 +-
 crypto/openssh/Makefile.in                         |    70 +-
 crypto/openssh/PROTOCOL                            |   126 +-
 crypto/openssh/PROTOCOL.agent                      |    13 +-
 crypto/openssh/PROTOCOL.certkeys                   |   326 -
 crypto/openssh/PROTOCOL.chacha20poly1305           |   107 -
 crypto/openssh/README                              |     2 +-
 crypto/openssh/TODO                                |     2 +-
 crypto/openssh/atomicio.c                          |     6 -
 crypto/openssh/audit-bsm.c                         |     2 +-
 crypto/openssh/audit-linux.c                       |     4 +-
 crypto/openssh/auth-krb5.c                         |     2 +-
 crypto/openssh/auth-options.c                      |     7 +-
 crypto/openssh/auth-pam.c                          |   127 +-
 crypto/openssh/auth-passwd.c                       |     4 +-
 crypto/openssh/auth-rhosts.c                       |     4 +-
 crypto/openssh/auth-shadow.c                       |     4 +-
 crypto/openssh/auth.c                              |     7 +-
 crypto/openssh/auth2-chall.c                       |    10 +-
 crypto/openssh/auth2-hostbased.c                   |    15 +-
 crypto/openssh/auth2-pubkey.c                      |    16 +-
 crypto/openssh/auth2-pubkeyfile.c                  |    23 +-
 crypto/openssh/auth2.c                             |     2 +-
 crypto/openssh/authfd.c                            |    27 +-
 crypto/openssh/authfd.h                            |     8 +-
 crypto/openssh/authfile.c                          |     8 +-
 crypto/openssh/channels.c                          |   115 +-
 crypto/openssh/channels.h                          |    13 +-
 crypto/openssh/cipher.c                            |    17 +-
 crypto/openssh/clientloop.c                        |    55 +-
 crypto/openssh/config.h                            |    45 +-
 crypto/openssh/configure.ac                        |   110 +-
 crypto/openssh/contrib/Makefile                    |     7 +-
 crypto/openssh/contrib/README                      |     8 +-
 crypto/openssh/contrib/cygwin/ssh-user-config      |     3 +-
 crypto/openssh/contrib/gnome-ssh-askpass4.c        |   249 +
 crypto/openssh/contrib/redhat/openssh.spec         |    17 +-
 crypto/openssh/contrib/redhat/sshd.init            |     2 +-
 crypto/openssh/contrib/ssh-copy-id                 |    15 +-
 crypto/openssh/contrib/suse/openssh.spec           |     3 +-
 crypto/openssh/crypto_api.h                        |     4 +-
 crypto/openssh/defines.h                           |    14 +
 crypto/openssh/digest-libc.c                       |     3 +-
 crypto/openssh/dispatch.c                          |     6 +-
 crypto/openssh/dns.c                               |     8 +-
 crypto/openssh/dns.h                               |     5 +-
 crypto/openssh/groupaccess.c                       |    21 +-
 crypto/openssh/gss-genr.c                          |     2 +-
 crypto/openssh/gss-serv.c                          |     2 +-
 crypto/openssh/hmac.c                              |     2 +-
 crypto/openssh/hostfile.c                          |    62 +-
 crypto/openssh/kex-names.c                         |    64 +-
 crypto/openssh/kex.c                               |     9 +-
 crypto/openssh/kex.h                               |     7 +-
 crypto/openssh/kexdh.c                             |     3 +-
 crypto/openssh/kexecdh.c                           |     3 +-
 crypto/openssh/kexgen.c                            |     6 +-
 crypto/openssh/kexgexc.c                           |     6 +-
 crypto/openssh/kexgexs.c                           |     7 +-
 crypto/openssh/kexmlkem768x25519.c                 |     6 +-
 crypto/openssh/krb5_config.h                       |     1 +
 crypto/openssh/krl.c                               |     5 +-
 crypto/openssh/log.c                               |     4 +-
 crypto/openssh/loginrec.c                          |    48 +-
 crypto/openssh/logintest.c                         |     2 -
 crypto/openssh/m4/openssh.m4                       |    42 +-
 crypto/openssh/mac.c                               |    23 +-
 crypto/openssh/misc-agent.c                        |   357 +
 crypto/openssh/misc.c                              |   103 +-
 crypto/openssh/misc.h                              |     9 +-
 crypto/openssh/moduli                              |   859 +-
 crypto/openssh/moduli.c                            |    59 +-
 crypto/openssh/monitor.c                           |    86 +-
 crypto/openssh/monitor_fdpass.c                    |    12 +-
 crypto/openssh/monitor_wrap.c                      |    93 +-
 crypto/openssh/monitor_wrap.h                      |     6 +-
 crypto/openssh/mux.c                               |    23 +-
 crypto/openssh/openbsd-compat/Makefile.in          |     5 +-
 crypto/openssh/openbsd-compat/arc4random.c         |     2 -
 crypto/openssh/openbsd-compat/arc4random_uniform.c |     4 +-
 crypto/openssh/openbsd-compat/bsd-misc.c           |    55 +-
 crypto/openssh/openbsd-compat/bsd-misc.h           |    14 +-
 crypto/openssh/openbsd-compat/bsd-openpty.c        |     8 +-
 crypto/openssh/openbsd-compat/bsd-poll.h           |     6 +-
 crypto/openssh/openbsd-compat/daemon.c             |     4 +-
 crypto/openssh/openbsd-compat/glob.c               |     2 -
 crypto/openssh/openbsd-compat/include/netgroup.h   |     0
 crypto/openssh/openbsd-compat/include/util.h       |     0
 crypto/openssh/openbsd-compat/memmem.c             |     2 -
 crypto/openssh/openbsd-compat/openssl-compat.c     |     9 +-
 crypto/openssh/openbsd-compat/openssl-compat.h     |    19 +-
 crypto/openssh/openbsd-compat/port-prngd.c         |     4 +-
 crypto/openssh/openbsd-compat/reallocarray.c       |     2 -
 crypto/openssh/openbsd-compat/recallocarray.c      |     2 -
 .../openssh/openbsd-compat/regress/utimensattest.c |    12 +-
 crypto/openssh/packet.c                            |   107 +-
 crypto/openssh/packet.h                            |     8 +-
 crypto/openssh/pathnames.h                         |    13 +-
 crypto/openssh/pkcs11.h                            |  1502 ++-
 crypto/openssh/platform.c                          |    15 +-
 crypto/openssh/poly1305.c                          |     4 +-
 crypto/openssh/progressmeter.c                     |    12 +-
 crypto/openssh/readconf.c                          |    75 +-
 crypto/openssh/readconf.h                          |     8 +-
 crypto/openssh/readpass.c                          |     8 +-
 crypto/openssh/regress/Makefile                    |    69 +-
 crypto/openssh/regress/agent-pkcs11-cert.sh        |    57 +-
 crypto/openssh/regress/agent-pkcs11-restrict.sh    |    31 +-
 crypto/openssh/regress/agent-pkcs11.sh             |    72 +-
 crypto/openssh/regress/agent-restrict.sh           |    17 +-
 crypto/openssh/regress/agent.sh                    |     8 +-
 crypto/openssh/regress/cert-hostkey.sh             |     4 +-
 crypto/openssh/regress/cert-userkey.sh             |     6 +-
 crypto/openssh/regress/cfgmatch.sh                 |     4 +-
 crypto/openssh/regress/cfgparse.sh                 |    19 +-
 crypto/openssh/regress/connect-bigconf.sh          |    17 +
 crypto/openssh/regress/dropbear-server.sh          |    76 +
 crypto/openssh/regress/dsa_ssh2.prv                |    14 -
 crypto/openssh/regress/dsa_ssh2.pub                |    13 -
 crypto/openssh/regress/dynamic-forward.sh          |     4 +-
 crypto/openssh/regress/hostbased.sh                |     3 +-
 crypto/openssh/regress/keygen-comment.sh           |     3 +-
 crypto/openssh/regress/keytype.sh                  |     4 +-
 crypto/openssh/regress/knownhosts-command.sh       |     3 +-
 crypto/openssh/regress/krl.sh                      |     3 +-
 crypto/openssh/regress/limit-keytype.sh            |     6 +-
 crypto/openssh/regress/misc/fuzz-harness/Makefile  |    11 +-
 .../regress/misc/fuzz-harness/agent_fuzz_helper.c  |     7 -
 .../openssh/regress/misc/fuzz-harness/fixed-keys.h |    26 -
 .../fuzz-harness/testdata/create-agent-corpus.sh   |     2 +-
 .../misc/fuzz-harness/testdata/id_dsa-cert.pub     |     1 -
 crypto/openssh/regress/misc/sk-dummy/sk-dummy.c    |     7 +-
 .../regress/misc/ssh-verify-attestation/Makefile   |     4 +-
 .../ssh-verify-attestation.c                       |     7 +-
 crypto/openssh/regress/modpipe.c                   |     4 +-
 crypto/openssh/regress/netcat.c                    |    36 +-
 crypto/openssh/regress/password.sh                 |    60 +
 crypto/openssh/regress/penalty-expire.sh           |     2 +-
 crypto/openssh/regress/penalty.sh                  |     2 +-
 crypto/openssh/regress/percent.sh                  |    45 +-
 crypto/openssh/regress/rekey.sh                    |     2 +-
 crypto/openssh/regress/ssh-com-client.sh           |    14 +-
 crypto/openssh/regress/ssh-com.sh                  |    26 +-
 crypto/openssh/regress/ssh2putty.sh                |     3 +-
 crypto/openssh/regress/sshcfgparse.sh              |    27 +-
 crypto/openssh/regress/sshsig.sh                   |     4 +-
 crypto/openssh/regress/test-exec.sh                |    54 +-
 crypto/openssh/regress/unittests/Makefile.inc      |    29 +-
 crypto/openssh/regress/unittests/authopt/Makefile  |     8 +-
 crypto/openssh/regress/unittests/authopt/tests.c   |    10 +-
 crypto/openssh/regress/unittests/bitmap/Makefile   |     7 +-
 crypto/openssh/regress/unittests/bitmap/tests.c    |    32 +-
 .../openssh/regress/unittests/conversion/Makefile  |     4 +-
 .../openssh/regress/unittests/conversion/tests.c   |    10 +-
 crypto/openssh/regress/unittests/hostkeys/Makefile |     8 +-
 .../regress/unittests/hostkeys/mktestdata.sh       |    13 +-
 .../regress/unittests/hostkeys/test_iterate.c      |   214 +-
 .../regress/unittests/hostkeys/testdata/dsa_1.pub  |     1 -
 .../regress/unittests/hostkeys/testdata/dsa_2.pub  |     1 -
 .../regress/unittests/hostkeys/testdata/dsa_3.pub  |     1 -
 .../regress/unittests/hostkeys/testdata/dsa_4.pub  |     1 -
 .../regress/unittests/hostkeys/testdata/dsa_5.pub  |     1 -
 .../regress/unittests/hostkeys/testdata/dsa_6.pub  |     1 -
 .../unittests/hostkeys/testdata/known_hosts        |    12 +-
 crypto/openssh/regress/unittests/hostkeys/tests.c  |    13 +-
 crypto/openssh/regress/unittests/kex/Makefile      |     8 +-
 crypto/openssh/regress/unittests/kex/test_kex.c    |    79 +-
 .../openssh/regress/unittests/kex/test_proposal.c  |     2 -
 crypto/openssh/regress/unittests/kex/tests.c       |     9 +-
 crypto/openssh/regress/unittests/match/Makefile    |     4 +-
 crypto/openssh/regress/unittests/match/tests.c     |    10 +-
 crypto/openssh/regress/unittests/misc/Makefile     |     6 +-
 crypto/openssh/regress/unittests/misc/test_argv.c  |     2 -
 .../openssh/regress/unittests/misc/test_convtime.c |     2 -
 .../openssh/regress/unittests/misc/test_expand.c   |    31 +-
 .../openssh/regress/unittests/misc/test_hpdelim.c  |     2 -
 crypto/openssh/regress/unittests/misc/test_misc.c  |   436 +
 crypto/openssh/regress/unittests/misc/test_parse.c |    10 +-
 .../openssh/regress/unittests/misc/test_ptimeout.c |     8 +-
 .../openssh/regress/unittests/misc/test_strdelim.c |     2 -
 .../openssh/regress/unittests/misc/test_xextendf.c |    89 +
 crypto/openssh/regress/unittests/misc/tests.c      |    14 +-
 .../openssh/regress/unittests/sshbuf/test_sshbuf.c |     4 +-
 .../regress/unittests/sshbuf/test_sshbuf_fixed.c   |     4 +-
 .../regress/unittests/sshbuf/test_sshbuf_fuzz.c    |     4 +-
 .../unittests/sshbuf/test_sshbuf_getput_basic.c    |    11 +-
 .../unittests/sshbuf/test_sshbuf_getput_crypto.c   |    11 +-
 .../unittests/sshbuf/test_sshbuf_getput_fuzz.c     |    18 +-
 .../regress/unittests/sshbuf/test_sshbuf_misc.c    |   223 +-
 crypto/openssh/regress/unittests/sshbuf/tests.c    |    12 +-
 crypto/openssh/regress/unittests/sshkey/Makefile   |     6 +-
 crypto/openssh/regress/unittests/sshkey/common.c   |    49 +-
 crypto/openssh/regress/unittests/sshkey/common.h   |     5 +-
 .../openssh/regress/unittests/sshkey/mktestdata.sh |    53 +-
 .../openssh/regress/unittests/sshkey/test_file.c   |    98 +-
 .../openssh/regress/unittests/sshkey/test_fuzz.c   |    77 +-
 .../openssh/regress/unittests/sshkey/test_sshkey.c |   225 +-
 .../regress/unittests/sshkey/testdata/dsa_1        |    12 -
 .../unittests/sshkey/testdata/dsa_1-cert.fp        |     1 -
 .../unittests/sshkey/testdata/dsa_1-cert.pub       |     1 -
 .../regress/unittests/sshkey/testdata/dsa_1.fp     |     1 -
 .../regress/unittests/sshkey/testdata/dsa_1.fp.bb  |     1 -
 .../unittests/sshkey/testdata/dsa_1.param.g        |     1 -
 .../unittests/sshkey/testdata/dsa_1.param.priv     |     1 -
 .../unittests/sshkey/testdata/dsa_1.param.pub      |     1 -
 .../regress/unittests/sshkey/testdata/dsa_1.pub    |     1 -
 .../regress/unittests/sshkey/testdata/dsa_1_pw     |    15 -
 .../regress/unittests/sshkey/testdata/dsa_2        |    12 -
 .../regress/unittests/sshkey/testdata/dsa_2.fp     |     1 -
 .../regress/unittests/sshkey/testdata/dsa_2.fp.bb  |     1 -
 .../regress/unittests/sshkey/testdata/dsa_2.pub    |     1 -
 .../regress/unittests/sshkey/testdata/dsa_n        |    21 -
 .../regress/unittests/sshkey/testdata/dsa_n_pw     |    21 -
 crypto/openssh/regress/unittests/sshkey/tests.c    |    10 +-
 crypto/openssh/regress/unittests/sshsig/Makefile   |     6 +-
 .../openssh/regress/unittests/sshsig/mktestdata.sh |     8 +-
 .../openssh/regress/unittests/sshsig/testdata/dsa  |    12 -
 .../regress/unittests/sshsig/testdata/dsa.pub      |     1 -
 .../regress/unittests/sshsig/testdata/dsa.sig      |    13 -
 crypto/openssh/regress/unittests/sshsig/tests.c    |    15 +-
 .../openssh/regress/unittests/test_helper/fuzz.c   |     7 +-
 .../regress/unittests/test_helper/test_helper.c    |   214 +-
 .../regress/unittests/test_helper/test_helper.h    |    28 +-
 crypto/openssh/regress/unittests/utf8/Makefile     |     7 +-
 crypto/openssh/regress/unittests/utf8/tests.c      |     8 +-
 crypto/openssh/sandbox-capsicum.c                  |     8 +-
 crypto/openssh/sandbox-darwin.c                    |     6 +-
 crypto/openssh/sandbox-seccomp-filter.c            |    66 +-
 crypto/openssh/scp.1                               |    19 +-
 crypto/openssh/scp.c                               |    48 +-
 crypto/openssh/servconf.c                          |    93 +-
 crypto/openssh/serverloop.c                        |    40 +-
 crypto/openssh/session.c                           |    56 +-
 crypto/openssh/sftp-client.c                       |    40 +-
 crypto/openssh/sftp-client.h                       |     3 +-
 crypto/openssh/sftp-common.c                       |     2 -
 crypto/openssh/sftp-glob.c                         |     4 +-
 crypto/openssh/sftp-server.c                       |    16 +-
 crypto/openssh/sftp.c                              |    22 +-
 crypto/openssh/sk-api.h                            |     2 -
 crypto/openssh/sk-usbhid.c                         |    11 +-
 crypto/openssh/srclimit.c                          |    16 +-
 crypto/openssh/ssh-add.1                           |    13 +-
 crypto/openssh/ssh-add.c                           |   224 +-
 crypto/openssh/ssh-agent.1                         |    38 +-
 crypto/openssh/ssh-agent.c                         |   141 +-
 crypto/openssh/ssh-dss.c                           |   457 -
 crypto/openssh/ssh-ecdsa.c                         |    35 +-
 crypto/openssh/ssh-ed25519.c                       |    37 +-
 crypto/openssh/ssh-keygen.1                        |    13 +-
 crypto/openssh/ssh-keygen.c                        |   320 +-
 crypto/openssh/ssh-keyscan.1                       |     6 +-
 crypto/openssh/ssh-keyscan.c                       |    42 +-
 crypto/openssh/ssh-keysign.c                       |    14 +-
 crypto/openssh/ssh-pkcs11-client.c                 |   517 +-
 crypto/openssh/ssh-pkcs11-helper.c                 |   221 +-
 crypto/openssh/ssh-pkcs11.c                        |   862 +-
 crypto/openssh/ssh-pkcs11.h                        |    14 +-
 crypto/openssh/ssh-rsa.c                           |    50 +-
 crypto/openssh/ssh-sk-helper.c                     |    19 +-
 crypto/openssh/ssh-sk.c                            |     4 +-
 crypto/openssh/ssh-xmss.c                          |   389 -
 crypto/openssh/ssh.c                               |   117 +-
 crypto/openssh/ssh_config                          |     3 +-
 crypto/openssh/ssh_config.5                        |    50 +-
 crypto/openssh/ssh_namespace.h                     |    44 +-
 crypto/openssh/sshbuf-getput-basic.c               |     4 +-
 crypto/openssh/sshbuf-misc.c                       |    63 +-
 crypto/openssh/sshbuf.h                            |    18 +-
 crypto/openssh/sshconnect.c                        |    39 +-
 crypto/openssh/sshconnect2.c                       |     4 +-
 crypto/openssh/sshd-auth.c                         |    35 +-
 crypto/openssh/sshd-session.c                      |    38 +-
 crypto/openssh/sshd.8                              |     6 +-
 crypto/openssh/sshd.c                              |    60 +-
 crypto/openssh/sshd_config                         |     2 +-
 crypto/openssh/sshd_config.5                       |    27 +-
 crypto/openssh/sshkey-xmss.c                       |  1113 --
 crypto/openssh/sshkey-xmss.h                       |    56 -
 crypto/openssh/sshkey.c                            |   233 +-
 crypto/openssh/sshkey.h                            |    43 +-
 crypto/openssh/sshlogin.c                          |     2 +-
 crypto/openssh/sshpty.c                            |    10 +-
 crypto/openssh/sshsig.c                            |     5 +-
 crypto/openssh/uidswap.c                           |     8 +-
 crypto/openssh/umac.c                              |     9 +-
 crypto/openssh/version.h                           |     8 +-
 crypto/openssh/xmalloc.c                           |     8 +-
 crypto/openssh/xmss_commons.c                      |    36 -
 crypto/openssh/xmss_commons.h                      |    21 -
 crypto/openssh/xmss_fast.c                         |  1106 --
 crypto/openssh/xmss_fast.h                         |   111 -
 crypto/openssh/xmss_hash.c                         |   137 -
 crypto/openssh/xmss_hash.h                         |    22 -
 crypto/openssh/xmss_hash_address.c                 |    66 -
 crypto/openssh/xmss_hash_address.h                 |    40 -
 crypto/openssh/xmss_wots.c                         |   192 -
 crypto/openssh/xmss_wots.h                         |    64 -
 secure/lib/libssh/Makefile                         |     4 +-
 secure/ssh.mk                                      |     2 +-
 314 files changed, 14462 insertions(+), 14120 deletions(-)

diff --git a/crypto/openssh/.depend b/crypto/openssh/.depend
index 152905fb7b78..93e4d864eb52 100644
--- a/crypto/openssh/.depend
+++ b/crypto/openssh/.depend
@@ -79,6 +79,7 @@ loginrec.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-comp
 logintest.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h loginrec.h
 mac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h digest.h hmac.h umac.h mac.h misc.h ssherr.h sshbuf.h openbsd-compat/openssl-compat.h
 match.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h match.h misc.h
+misc-agent.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h digest.h log.h ssherr.h misc.h pathnames.h ssh.h xmalloc.h
 misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h misc.h log.h ssherr.h ssh.h sshbuf.h
 moduli.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
 monitor.o: chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h crypto_api.h dh.h packet.h dispatch.h auth-options.h sshpty.h channels.h session.h sshlogin.h canohost.h log.h ssherr.h misc.h servconf.h monitor.h monitor_wrap.h monitor_fdpass.h compat.h ssh2.h authfd.h match.h sk-api.h srclimit.h
@@ -113,8 +114,8 @@ servconf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-comp
 servconf.o: mac.h crypto_api.h match.h channels.h groupaccess.h canohost.h packet.h dispatch.h hostfile.h auth.h auth-pam.h audit.h loginrec.h myproposal.h digest.h version.h
 serverloop.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h packet.h dispatch.h sshbuf.h log.h ssherr.h misc.h servconf.h canohost.h sshpty.h channels.h ssh2.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h ciph
er-aesctr.h
 serverloop.o: rijndael.h kex.h mac.h crypto_api.h hostfile.h auth.h auth-pam.h audit.h loginrec.h session.h auth-options.h serverloop.h
-session.o: hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h authfd.h pathnames.h log.h misc.h servconf.h sshlogin.h serverloop.h canohost.h session.h kex.h mac.h crypto_api.h monitor_wrap.h sftp.h atomicio.h
 session.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshpty.h packet.h dispatch.h sshbuf.h ssherr.h match.h uidswap.h channels.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h
+session.o: kex.h mac.h crypto_api.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h authfd.h pathnames.h log.h misc.h servconf.h sshlogin.h serverloop.h canohost.h session.h monitor_wrap.h sftp.h atomicio.h
 sftp-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssherr.h sshbuf.h log.h atomicio.h progressmeter.h misc.h utf8.h sftp.h sftp-common.h sftp-client.h openbsd-compat/glob.h
 sftp-common.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssherr.h sshbuf.h log.h misc.h sftp.h sftp-common.h
 sftp-glob.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sftp.h sftp-common.h sftp-client.h openbsd-compat/glob.h
@@ -128,24 +129,22 @@ sntrup761.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-com
 srclimit.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ./openbsd-compat/sys-tree.h addr.h canohost.h log.h ssherr.h misc.h srclimit.h xmalloc.h servconf.h openbsd-compat/sys-queue.h match.h
 ssh-add.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h log.h ssherr.h sshkey.h sshbuf.h authfd.h authfile.h pathnames.h misc.h digest.h ssh-sk.h sk-api.h hostfile.h
 ssh-agent.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshbuf.h sshkey.h authfd.h log.h ssherr.h misc.h digest.h match.h msg.h pathnames.h ssh-pkcs11.h sk-api.h myproposal.h
-ssh-dss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
 ssh-ecdsa-sk.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/openssl-compat.h sshbuf.h ssherr.h digest.h sshkey.h
 ssh-ecdsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
 ssh-ed25519-sk.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h log.h ssherr.h sshbuf.h sshkey.h ssh.h digest.h
 ssh-ed25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h log.h ssherr.h sshbuf.h sshkey.h ssh.h
-ssh-keygen.o: cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h
-ssh-keygen.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshkey.h authfile.h sshbuf.h pathnames.h log.h ssherr.h misc.h match.h hostfile.h dns.h ssh.h ssh2.h ssh-pkcs11.h atomicio.h krl.h digest.h utf8.h authfd.h sshsig.h ssh-sk.h sk-api.h cipher.h
+ssh-keygen.o: chacha.h poly1305.h cipher-aesctr.h rijndael.h
+ssh-keygen.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshkey.h authfile.h sshbuf.h pathnames.h log.h ssherr.h misc.h match.h hostfile.h dns.h ssh.h ssh2.h atomicio.h krl.h digest.h utf8.h authfd.h sshsig.h ssh-sk.h sk-api.h cipher.h cipher-chachapoly.h
 ssh-keyscan.o: dispatch.h log.h ssherr.h atomicio.h misc.h hostfile.h ssh_api.h ssh2.h dns.h addr.h
 ssh-keyscan.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshbuf.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h kex.h mac.h crypto_api.h compat.h myproposal.h packet.h
 ssh-keysign.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h ssherr.h sshkey.h ssh.h ssh2.h misc.h sshbuf.h authfile.h msg.h canohost.h pathnames.h readconf.h uidswap.h
-ssh-pkcs11-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
-ssh-pkcs11-helper.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h sshbuf.h log.h ssherr.h misc.h sshkey.h authfd.h ssh-pkcs11.h
+ssh-pkcs11-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h pathnames.h xmalloc.h sshbuf.h log.h ssherr.h misc.h sshkey.h authfd.h atomicio.h ssh-pkcs11.h
+ssh-pkcs11-helper.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshbuf.h log.h ssherr.h misc.h sshkey.h authfd.h ssh-pkcs11.h
 ssh-pkcs11.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h ssherr.h sshkey.h
 ssh-rsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
 ssh-sk-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h ssherr.h sshbuf.h sshkey.h msg.h digest.h pathnames.h ssh-sk.h misc.h
-ssh-sk-helper.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h ssherr.h sshkey.h authfd.h misc.h sshbuf.h msg.h uidswap.h ssh-sk.h
+ssh-sk-helper.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h ssherr.h sshkey.h authfd.h misc.h sshbuf.h msg.h uidswap.h ssh-sk.h ssh-pkcs11.h
 ssh-sk.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
-ssh-xmss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
 ssh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/openssl-compat.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h canohost.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h packet.h dispatch.h sshbuf.h
 channels.h
 ssh.o: sshkey.h authfd.h authfile.h pathnames.h clientloop.h log.h ssherr.h misc.h readconf.h sshconnect.h kex.h mac.h crypto_api.h sshpty.h match.h msg.h version.h myproposal.h utf8.h
 ssh_api.o: authfile.h dh.h misc.h version.h myproposal.h sshbuf.h openbsd-compat/openssl-compat.h
@@ -163,11 +162,10 @@ sshd-auth.o: chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h sshkey.h ke
 sshd-auth.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshpty.h packet.h dispatch.h log.h ssherr.h sshbuf.h misc.h match.h servconf.h uidswap.h compat.h cipher.h cipher-chachapoly.h
 sshd-session.o: chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h sshkey.h kex.h mac.h crypto_api.h authfile.h pathnames.h atomicio.h canohost.h hostfile.h auth.h auth-pam.h audit.h loginrec.h authfd.h msg.h channels.h session.h monitor.h monitor_wrap.h auth-options.h version.h sk-api.h srclimit.h dh.h
 sshd-session.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshpty.h packet.h dispatch.h log.h ssherr.h sshbuf.h misc.h match.h servconf.h uidswap.h compat.h cipher.h cipher-chachapoly.h
-sshd.o: audit.h loginrec.h authfd.h msg.h version.h sk-api.h addr.h srclimit.h atomicio.h
+sshd.o: audit.h loginrec.h authfd.h msg.h version.h sk-api.h addr.h srclimit.h atomicio.h monitor_wrap.h
 sshd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshpty.h log.h ssherr.h sshbuf.h misc.h servconf.h compat.h digest.h sshkey.h authfile.h pathnames.h canohost.h hostfile.h auth.h auth-pam.h
 ssherr.o: ssherr.h
-sshkey-xmss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
-sshkey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h ssh2.h ssherr.h misc.h sshbuf.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h sshkey.h match.h ssh-sk.h openbsd-compat/openssl-compat.h
+sshkey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h ssh2.h ssherr.h misc.h sshbuf.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h sshkey.h match.h ssh-sk.h ssh-pkcs11.h openbsd-compat/openssl-compat.h
 sshlogin.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshlogin.h ssherr.h loginrec.h log.h sshbuf.h misc.h servconf.h openbsd-compat/sys-queue.h
 sshpty.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshpty.h log.h ssherr.h misc.h
 sshsig.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h authfd.h authfile.h log.h ssherr.h misc.h sshbuf.h sshsig.h sshkey.h match.h digest.h
@@ -178,8 +176,3 @@ umac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h
 umac128.o: umac.c includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h umac.h misc.h rijndael.h
 utf8.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h utf8.h
 xmalloc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h ssherr.h
-xmss_commons.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
-xmss_fast.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
-xmss_hash.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
-xmss_hash_address.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
-xmss_wots.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
diff --git a/crypto/openssh/.github/ci-status.md b/crypto/openssh/.github/ci-status.md
index 68275715dfb1..5b1f77f2369c 100644
--- a/crypto/openssh/.github/ci-status.md
+++ b/crypto/openssh/.github/ci-status.md
@@ -1,19 +1,17 @@
 master :
-[![C/C++ CI](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml?query=branch:master)
+[![C/C++ CI](../../../actions/workflows/c-cpp.yml/badge.svg)](../../../actions/workflows/c-cpp.yml?query=branch:master)
+[![VM CI](../../../actions/workflows/vm.yml/badge.svg)](../../../actions/workflows/vm.yml?query=branch:master)
 [![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:master)
 [![Upstream self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/upstream.yml/badge.svg)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/upstream.yml?query=branch:master)
-[![CIFuzz](https://github.com/openssh/openssh-portable/actions/workflows/cifuzz.yml/badge.svg)](https://github.com/openssh/openssh-portable/actions/workflows/cifuzz.yml)
-[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/openssh.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:openssh)
+[![CIFuzz](../../../actions/workflows/cifuzz.yml/badge.svg)](../../../actions/workflows/cifuzz.yml)
+[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/openssh.svg)](https://issues.oss-fuzz.com/issues?q="Project:+openssh"+is:open)
 [![Coverity Status](https://scan.coverity.com/projects/21341/badge.svg)](https://scan.coverity.com/projects/openssh-portable)
+<br>
+
+10.0 :
+[![C/C++ CI](../../../actions/workflows/c-cpp.yml/badge.svg?branch=V_10_0)](../../../actions/workflows/c-cpp.yml?query=branch:V_10_0)
+[![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_10_0)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_10_0)
 
 9.9 :
-[![C/C++ CI](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml/badge.svg?branch=V_9_9)](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml?query=branch:V_9_9)
+[![C/C++ CI](../../../actions/workflows/c-cpp.yml/badge.svg?branch=V_9_9)](../../../actions/workflows/c-cpp.yml?query=branch:V_9_9)
 [![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_9_9)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_9_9)
-
-9.8 :
-[![C/C++ CI](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml/badge.svg?branch=V_9_8)](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml?query=branch:V_9_8)
-[![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_9_8)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_9_8)
-
-9.7 :
-[![C/C++ CI](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml/badge.svg?branch=V_9_7)](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml?query=branch:V_9_7)
-[![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_9_7)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_9_7)
diff --git a/crypto/openssh/.github/configs b/crypto/openssh/.github/configs
index 2526e3ef4812..230258f93f24 100755
--- a/crypto/openssh/.github/configs
+++ b/crypto/openssh/.github/configs
@@ -13,6 +13,10 @@ if [ "$config" = "" ]; then
 	config="default"
 fi
 
+if [ ! -z "${LTESTS}" ]; then
+	OVERRIDE_LTESTS="${LTESTS}"
+fi
+
 unset CC CFLAGS CPPFLAGS LDFLAGS LTESTS SUDO
 
 TEST_TARGET="tests compat-tests"
@@ -144,6 +148,8 @@ case "$config" in
 	TCMALLOC_STACKTRACE_METHOD=generic_fp
 	TEST_SSH_SSHD_ENV="TCMALLOC_STACKTRACE_METHOD=generic_fp"
 	export TCMALLOC_STACKTRACE_METHOD TEST_SSH_SSHD_ENV
+
+	SKIP_LTESTS="agent-restrict"
 	;;
     krb5|heimdal)
 	CONFIGFLAGS="--with-kerberos5"
@@ -277,7 +283,7 @@ case "${TARGET_HOST}" in
 	# Native linker is not great with PIC so OpenSSL is built w/out.
 	CONFIGFLAGS="${CONFIGFLAGS} --disable-security-key"
 	;;
-    fbsd14-ppc64)
+    fbsd14-ppc64|nbsd-arm64be)
 	# Disable security key tests for bigendian interop test.
 	CONFIGFLAGS="${CONFIGFLAGS} --disable-security-key"
 	;;
@@ -392,5 +398,10 @@ if [ -x "$(which plink 2>/dev/null)" ]; then
 	export REGRESS_INTEROP_PUTTY
 fi
 
+if [ ! -z "${OVERRIDE_LTESTS}" ]; then
+	echo >&2 "Overriding LTESTS, was '${LTESTS}', now '${OVERRIDE_LTESTS}'"
+	LTESTS="${OVERRIDE_LTESTS}"
+fi
+
 export CC CFLAGS CPPFLAGS LDFLAGS LTESTS SUDO
 export TEST_TARGET TEST_SSH_UNSAFE_PERMISSIONS TEST_SSH_FAIL_FATAL
diff --git a/crypto/openssh/.github/install_libcrypto.sh b/crypto/openssh/.github/install_libcrypto.sh
new file mode 100755
index 000000000000..d1aa23450679
--- /dev/null
+++ b/crypto/openssh/.github/install_libcrypto.sh
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# Install specified libcrypto.
+#  -a : install version for ABI compatibility test.
+#  -n : dry run, don't actually build and install.
+#
+# Usage: $0 [-a] [-n] openssl-$branch/tag destdir [config options]
+
+set -e
+
+bincompat_test=""
+dryrun=""
+while [ "$1" = "-a" ] || [ "$1" = "-n" ]; do
+	if [ "$1" = "-a" ]; then
+		abi_compat_test=y
+	elif [ "$1" = "-n" ]; then
+		dryrun="echo dryrun:"
+	fi
+	shift
+done
+
+ver="$1"
+destdir="$2"
+opts="$3"
+
+if [ -z "${ver}" ] || [ -z "${destdir}" ]; then
+	echo tag/branch and destdir required
+	exit 1
+fi
+
+set -x
+
+if [ ! -d ${HOME}/openssl ]; then
+	cd ${HOME}
+	git clone https://github.com/openssl/openssl.git
+	cd ${HOME}/openssl
+	git fetch --all
+fi
+cd ${HOME}/openssl
+
+if [ "${abi_compat_test}" = "y" ]; then
+	echo selecting ABI test release/branch for ${ver}
+	case "${ver}" in
+	openssl-3.6)
+		ver=openssl-3.0.0
+		echo "selecting older release ${ver}"
+		;;
+	openssl-3.[012345])
+		major=$(echo ${ver} | cut -f1 -d.)
+		minor=$(echo ${ver} | cut -f2 -d.)
+		ver="${major}.$((${minor} + 1))"
+		echo selecting next release branch ${ver}
+		;;
+	openssl-3.*.*)
+		major=$(echo ${ver} | cut -f1 -d.)
+		minor=$(echo ${ver} | cut -f2 -d.)
+		patch=$(echo ${ver} | cut -f3 -d.)
+		ver="${major}.${minor}.$((${patch} + 1))"
+		echo checking for release tag ${ver}
+		if git tag | grep -q "^${ver}\$"; then
+			echo selected next patch release ${ver}
+		else
+			ver="${major}.${minor}"
+			echo not found, selecting release branch ${ver}
+		fi
+		;;
+	esac
+fi
+
+git checkout ${ver}
+make clean >/dev/null 2>&1 || true
+${dryrun} ./config no-threads shared ${opts} --prefix=${destdir} \
+    -Wl,-rpath,${destdir}/lib64
+${dryrun} make -j4
+${dryrun} sudo make install_sw
diff --git a/crypto/openssh/.github/install_putty.sh b/crypto/openssh/.github/install_putty.sh
new file mode 100755
index 000000000000..6d6d0ad49f41
--- /dev/null
+++ b/crypto/openssh/.github/install_putty.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+ver="$1"
+
+echo
+echo --------------------------------------
+echo Installing PuTTY version ${ver}
+echo --------------------------------------
+
+cd /tmp
+
+case "${ver}" in
+snapshot)
+	tarball=putty.tar.gz
+	url=https://tartarus.org/~simon/putty-snapshots/${tarball}
+	;;
+*)
+	tarball=putty-${ver}.tar.gz
+	url=https://the.earth.li/~sgtatham/putty/${ver}/${tarball}
+	;;
+esac
+
+if [ ! -f ${tarball} ]; then
+	wget -q ${url}
+fi
+
+mkdir -p /tmp/puttybuild
+cd /tmp/puttybuild
+
+tar xfz /tmp/${tarball} && cd putty-*
+if [ -f CMakeLists.txt ]; then
+	cmake . && cmake --build . -j4 && sudo cmake --build . --target install
+else
+	./configure && make -j4 && sudo make install
+fi
+sudo rm -rf /tmp/puttybuild
+/usr/local/bin/plink -V
diff --git a/crypto/openssh/.github/run_test.sh b/crypto/openssh/.github/run_test.sh
index 74ab2423c0d8..aac9ce57942e 100755
--- a/crypto/openssh/.github/run_test.sh
+++ b/crypto/openssh/.github/run_test.sh
@@ -21,18 +21,6 @@ if [ ! -z "$SUDO" ] && [ ! -z "$TEST_SSH_HOSTBASED_AUTH" ]; then
     done
 fi
 
-output_failed_logs() {
-    for i in regress/failed*.log; do
-        if [ -f "$i" ]; then
-            echo -------------------------------------------------------------------------
-            echo LOGFILE $i
-            cat $i
-            echo -------------------------------------------------------------------------
-        fi
-    done
-}
-trap output_failed_logs 0
-
 env=""
 if [ ! -z "${SUDO}" ]; then
     env="${env} SUDO=${SUDO}"
@@ -47,6 +35,17 @@ if [ ! -z "${env}" ]; then
     env="env${env}"
 fi
 
+if [ "$1" = "putty-versions" ]; then
+	for ver in 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.80 \
+	    0.81 0.82 0.83 snapshot; do
+		.github/install_putty.sh "${ver}"
+		${env} make ${TEST_TARGET} \
+		    SKIP_LTESTS="${SKIP_LTESTS}" LTESTS="${LTESTS}"
+	done
+
+	exit 0
+fi
+
 if [ -z "${LTESTS}" ]; then
     ${env} make ${TEST_TARGET} SKIP_LTESTS="${SKIP_LTESTS}"
 else
diff --git a/crypto/openssh/.github/setup_ci.sh b/crypto/openssh/.github/setup_ci.sh
index f6c4a5c84fb5..c90969627022 100755
--- a/crypto/openssh/.github/setup_ci.sh
+++ b/crypto/openssh/.github/setup_ci.sh
@@ -1,8 +1,17 @@
 #!/bin/sh
 
+config="$1"
+target="$2"
+
 PACKAGES=""
 
- . .github/configs $@
+echo Running as:
+id
+
+echo Environment:
+set
+
+ . .github/configs ${config}
 
 host=`./config.guess`
 echo "config.guess: $host"
@@ -10,9 +19,17 @@ case "$host" in
 *cygwin)
 	PACKAGER=setup
 	echo Setting CYGWIN system environment variable.
-	setx CYGWIN "binmode"
+	setx CYGWIN "winsymlinks:native"
 	echo Removing extended ACLs so umask works as expected.
+	set -x
 	setfacl -b . regress
+	icacls regress /c /t /q /Inheritance:d
+	icacls regress /c /t /q /Grant ${USERNAME}:F
+	icacls regress /c /t /q /Remove:g "Authenticated Users" \
+	     BUILTIN\\Administrators BUILTIN Everyone System Users
+	takeown /F regress
+	icacls regress
+	set +x
 	PACKAGES="$PACKAGES,autoconf,automake,cygwin-devel,gcc-core"
 	PACKAGES="$PACKAGES,make,openssl,libssl-devel,zlib-devel"
 	;;
@@ -24,7 +41,7 @@ case "$host" in
 	PACKAGER=apt
 esac
 
-TARGETS=$@
+TARGETS=${config}
 
 INSTALL_FIDO_PPA="no"
 export DEBIAN_FRONTEND=noninteractive
@@ -147,7 +164,7 @@ for TARGET in $TARGETS; do
         PACKAGES="${PACKAGES} cmake ninja-build"
         ;;
     putty-*)
-	INSTALL_PUTTY=$(echo "${TARGET}" | cut -f2 -d-)
+	INSTALL_PUTTY=0.83
 	PACKAGES="${PACKAGES} cmake"
 	;;
     valgrind*)
@@ -184,7 +201,8 @@ while [ ! -z "$PACKAGES" ] && [ "$tries" -gt "0" ]; do
 	fi
 	;;
     setup)
-	if /cygdrive/c/setup.exe -q -P `echo "$PACKAGES" | tr ' ' ,`; then
+	setup="/cygdrive/$(echo "${CYGWIN_SETUP}" | tr -d : | tr '\' '/')"
+	if "${setup}" -q -P `echo "$PACKAGES" | tr ' ' ,`; then
 		PACKAGES=""
 	fi
 	;;
@@ -207,13 +225,8 @@ if [ "${INSTALL_HARDENED_MALLOC}" = "yes" ]; then
 fi
 
 if [ ! -z "${INSTALL_OPENSSL}" ]; then
-    (cd ${HOME} &&
-     git clone https://github.com/openssl/openssl.git &&
-     cd ${HOME}/openssl &&
-     git checkout ${INSTALL_OPENSSL} &&
-     ./config no-threads shared ${SSLCONFOPTS} \
-         --prefix=/opt/openssl &&
-     make && sudo make install_sw)
+	.github/install_libcrypto.sh \
+	    "${INSTALL_OPENSSL}" /opt/openssl "${SSLCONFOPTS}"
 fi
 
 if [ ! -z "${INSTALL_LIBRESSL}" ]; then
@@ -240,7 +253,7 @@ if [ ! -z "${INSTALL_BORINGSSL}" ]; then
      cd ${HOME}/boringssl && mkdir build && cd build &&
      cmake -GNinja  -DCMAKE_POSITION_INDEPENDENT_CODE=ON .. && ninja &&
      mkdir -p /opt/boringssl/lib &&
-     cp ${HOME}/boringssl/build/crypto/libcrypto.a /opt/boringssl/lib &&
+     cp ${HOME}/boringssl/build/libcrypto.a /opt/boringssl/lib &&
      cp -r ${HOME}/boringssl/include /opt/boringssl)
 fi
 
@@ -260,23 +273,23 @@ if [ ! -z "${INSTALL_ZLIB}" ]; then
 fi
 
 if [ ! -z "${INSTALL_PUTTY}" ]; then
-    ver="${INSTALL_PUTTY}"
-    case "${INSTALL_PUTTY}" in
-    snapshot)
-	tarball=putty.tar.gz
-	(cd /tmp && wget https://tartarus.org/~simon/putty-snapshots/${tarball})
-	;;
-    *)
-	tarball=putty-${ver}.tar.gz
-	(cd /tmp && wget https://the.earth.li/~sgtatham/putty/${ver}/${tarball})
+	.github/install_putty.sh "${INSTALL_PUTTY}"
+fi
+
+# If we're running on an ephemeral VM, set a random password and set
+# up to run the password auth test.
+if [ ! -z "${EPHEMERAL_VM}" ]; then
+
+    # This is the github "target" as specified in the yml file.
+    # In particular, ubuntu-latest sets the password field to the locked
+    # value, so unless we reset it here most of the tests will fail.
+    case "${target}" in
+    ubuntu-*)
+	echo ${target} target: setting random password.
+	openssl rand -base64 9 >regress/password
+	pw=$(tr -d '\n' <regress/password | openssl passwd -6 -stdin)
+	sudo usermod --password "${pw}" runner
+	sudo usermod --unlock runner
 	;;
     esac
-    (cd ${HOME} && tar xfz /tmp/${tarball} && cd putty-*
-     if [ -f CMakeLists.txt ]; then
-	cmake . && cmake --build . && sudo cmake --build . --target install
-     else
-	./configure && make && sudo make install
-     fi
-    )
-    /usr/local/bin/plink -V
 fi
diff --git a/crypto/openssh/.github/workflows/c-cpp.yml b/crypto/openssh/.github/workflows/c-cpp.yml
index 424c193fb207..f64803b55ef6 100644
--- a/crypto/openssh/.github/workflows/c-cpp.yml
+++ b/crypto/openssh/.github/workflows/c-cpp.yml
@@ -1,10 +1,20 @@
-name: C/C++ CI
+name: CI
+
+# For testing, you can set variables in your repo (Repo -> Settings ->
+# Security -> Actions -> Variables) to restrict the tests that are run.
+# The supported variables are:
+#
+# RUN_ONLY_TARGET_CONFIG: Run only the single matching target and config,
+#   separated by spaces, eg "ubuntu-latest default".  All other tests will
+#   fail immediately.
+#
+# LTESTS: Override the set of tests run.
 
 on:
   push:
-    paths: [ '**.c', '**.h', '**.m4', '**.sh', '**/Makefile.in', 'configure.ac', '.github/configs', '.github/workflows/c-cpp.yml' ]
+    paths: [ '**.c', '**.h', '**.m4', '**.sh', '**/Makefile.in', 'configure.ac', '.github/configs', '.github/*.sh', '.github/workflows/c-cpp.yml' ]
   pull_request:
-    paths: [ '**.c', '**.h', '**.m4', '**.sh', '**/Makefile.in', 'configure.ac', '.github/configs', '.github/workflows/c-cpp.yml' ]
+    paths: [ '**.c', '**.h', '**.m4', '**.sh', '**/Makefile.in', 'configure.ac', '.github/configs', '.github/*.sh', '.github/workflows/c-cpp.yml' ]
 
 jobs:
   ci:
@@ -22,14 +32,14 @@ jobs:
           - macos-13
           - macos-14
           - macos-15
-          - windows-2019
           - windows-2022
+          - windows-2025
         config: [default]
         # Then we include any extra configs we want to test for specific VMs.
         # Valgrind slows things down quite a bit, so start them first.
         include:
-          - { target: windows-2019, config: cygwin-release }
           - { target: windows-2022, config: cygwin-release }
+          - { target: windows-2025, config: cygwin-release }
           - { target: ubuntu-22.04, config: c89 }
           - { target: ubuntu-22.04, config: clang-11 }
           - { target: ubuntu-22.04, config: clang-12-Werror }
@@ -61,46 +71,41 @@ jobs:
           - { target: ubuntu-latest, config: boringssl }
           - { target: ubuntu-latest, config: aws-lc }
           - { target: ubuntu-latest, config: libressl-master }
-          - { target: ubuntu-latest, config: libressl-3.2.6 }
+          - { target: ubuntu-latest, config: libressl-3.2.7 }
           - { target: ubuntu-latest, config: libressl-3.3.6 }
           - { target: ubuntu-latest, config: libressl-3.4.3 }
-          - { target: ubuntu-latest, config: libressl-3.5.3 }
-          - { target: ubuntu-latest, config: libressl-3.6.1 }
-          - { target: ubuntu-latest, config: libressl-3.7.2 }
+          - { target: ubuntu-latest, config: libressl-3.5.4 }
+          - { target: ubuntu-latest, config: libressl-3.6.3 }
+          - { target: ubuntu-latest, config: libressl-3.7.3 }
           - { target: ubuntu-latest, config: libressl-3.8.4 }
           - { target: ubuntu-latest, config: libressl-3.9.2 }
           - { target: ubuntu-latest, config: libressl-4.0.0 }
+          - { target: ubuntu-latest, config: libressl-4.1.0 }
           - { target: ubuntu-latest, config: openssl-master }
           - { target: ubuntu-latest, config: openssl-noec }
           - { target: ubuntu-latest, config: openssl-1.1.1 }
           - { target: ubuntu-latest, config: openssl-1.1.1t }
           - { target: ubuntu-latest, config: openssl-1.1.1w }
           - { target: ubuntu-latest, config: openssl-3.0.0 }
-          - { target: ubuntu-latest, config: openssl-3.0.15 }
+          - { target: ubuntu-latest, config: openssl-3.0.18 }
           - { target: ubuntu-latest, config: openssl-3.1.0 }
-          - { target: ubuntu-latest, config: openssl-3.1.7 }
-          - { target: ubuntu-latest, config: openssl-3.2.3 }
-          - { target: ubuntu-latest, config: openssl-3.3.2 }
+          - { target: ubuntu-latest, config: openssl-3.1.8 }
+          - { target: ubuntu-latest, config: openssl-3.2.6 }
+          - { target: ubuntu-latest, config: openssl-3.3.5 }
           - { target: ubuntu-latest, config: openssl-3.4.0 }
+          - { target: ubuntu-latest, config: openssl-3.4.3 }
+          - { target: ubuntu-latest, config: openssl-3.5.0 }
+          - { target: ubuntu-latest, config: openssl-3.5.3 }  # keep
+          - { target: ubuntu-latest, config: openssl-3.5.4 }
           - { target: ubuntu-latest, config: openssl-1.1.1_stable }
           - { target: ubuntu-latest, config: openssl-3.0 }  # stable branch
           - { target: ubuntu-latest, config: openssl-3.1 }  # stable branch
           - { target: ubuntu-latest, config: openssl-3.2 }  # stable branch
           - { target: ubuntu-latest, config: openssl-3.3 }  # stable branch
-          - { target: ubuntu-latest, config: putty-0.71 }
-          - { target: ubuntu-latest, config: putty-0.72 }
-          - { target: ubuntu-latest, config: putty-0.73 }
-          - { target: ubuntu-latest, config: putty-0.74 }
-          - { target: ubuntu-latest, config: putty-0.75 }
-          - { target: ubuntu-latest, config: putty-0.76 }
-          - { target: ubuntu-latest, config: putty-0.77 }
-          - { target: ubuntu-latest, config: putty-0.78 }
-          - { target: ubuntu-latest, config: putty-0.79 }
-          - { target: ubuntu-latest, config: putty-0.80 }
-          - { target: ubuntu-latest, config: putty-0.81 }
-          - { target: ubuntu-latest, config: putty-0.82 }
-          - { target: ubuntu-latest, config: putty-0.83 }
-          - { target: ubuntu-latest, config: putty-snapshot }
+          - { target: ubuntu-latest, config: openssl-3.4 }  # stable branch
+          - { target: ubuntu-latest, config: openssl-3.5 }  # stable branch
+          - { target: ubuntu-latest, config: openssl-3.6 }  # stable branch
+          - { target: ubuntu-latest, config: putty-versions }
           - { target: ubuntu-latest, config: zlib-develop }
           - { target: ubuntu-latest, config: tcmalloc }
           - { target: ubuntu-latest, config: musl }
@@ -110,16 +115,26 @@ jobs:
           - { target: macos-14, config: pam }
           - { target: macos-15, config: pam }
     runs-on: ${{ matrix.target }}
+    env:
+      EPHEMERAL_VM: yes
     steps:
+    - name: check RUN_ONLY_TARGET_CONFIG
+      if: vars.RUN_ONLY_TARGET_CONFIG != ''
+      run: sh -c 'if [ "${{ vars.RUN_ONLY_TARGET_CONFIG }}" != "${{ matrix.target }} ${{matrix.config }}" ]; then exit 1; else exit 0; fi'
     - name: set cygwin git params
       if: ${{ startsWith(matrix.target, 'windows') }}
       run: git config --global core.autocrlf input
     - name: install cygwin
+      id: cygwin_install
       if: ${{ startsWith(matrix.target, 'windows') }}
       uses: cygwin/cygwin-install-action@master
+      env:
+        CYGWIN: "winsymlinks:native"
     - uses: actions/checkout@main
     - name: setup CI system
-      run: sh ./.github/setup_ci.sh ${{ matrix.config }}
+      run: sh ./.github/setup_ci.sh ${{ matrix.config }} ${{ matrix.target }}
+      env:
+        CYGWIN_SETUP: ${{ steps.cygwin_install.outputs.setup }}
     - name: autoreconf
       run: sh -c autoreconf
     - name: configure
@@ -138,6 +153,18 @@ jobs:
       env:
         TEST_SSH_UNSAFE_PERMISSIONS: 1
         TEST_SSH_HOSTBASED_AUTH: yes
+        LTESTS: ${{ vars.LTESTS }}
+    - name: test OpenSSL3 ABI compatibility
+      if: ${{ startsWith(matrix.config, 'openssl-3') }}
+      run: |
+       sh .github/install_libcrypto.sh -a ${{ matrix.config }} /opt/openssl
+       sh .github/run_test.sh ${{ matrix.config }}
+    - name: show logs
+      if: failure()
+      run: for i in regress/failed*.log; do echo ====; echo logfile $i; echo =====; cat $i; done
+    - name: chown logs
+      if: failure()
+      run: test -x "$(which sudo 2>&1)" && sudo chown -R "${LOGNAME}" regress
     - name: save logs
       if: failure()
       uses: actions/upload-artifact@main
@@ -146,8 +173,4 @@ jobs:
         path: |
           config.h
           config.log
-          regress/*.log
-          regress/valgrind-out/
-          regress/asan.log.*
-          regress/msan.log.*
-          regress/log/*
+          regress/
diff --git a/crypto/openssh/.github/workflows/selfhosted.yml b/crypto/openssh/.github/workflows/selfhosted.yml
index d892a28c3eb6..a46d8a451aa7 100644
*** 42367 LINES SKIPPED ***

From nobody Mon Oct  5 13:58:21 2026
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 4hz1FC0Dyxz6jtlM
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 13:58:23 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz1FB3pL7z4tvF
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:58:22 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791208702;
	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=Fbn5ZyzsAFD0tUwnlpPWKlp/7sSHBCGoE/Y/tAZ/QeQ=;
	b=td4chJQ6nca/Ae9i/ps/tGHjnM5JNTTlI2oBRg9hE5h3KumB+8XinZUWQOdFh1OF0einAb
	5jcy2X55XHEWoluqs3+nbQZyJWqDRkL+jFuCUi4+YlXmcyq1ErknbedEU0ONm2xX9NpeT1
	+i5kHBK54H3H6QnbeGyWaPIznBUMwobl1l1fYRAzyF+0UZgc2tSxcd6vDSlt7l1sgKA1lU
	ur97qd0CLx6Rn+kAB2T+C98prqeJUPDMXo9AAF3R5GDm8mOi4yayd5lXGZhXXbM0NoBcWi
	stpyhigTxxqoLc6wKCKsFHH3ng1Paks/fAMlVrmRTga8JCTyuAETTK5CMrM6ag==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791208702;
	b=etkQhMNqh+v5wWRPDV21F2Sjp2CaVo1OhNRoKUhrjFmNpopnW+qCMGXooAALR+UjD0X5Q1
	52FSoVYnVp29ZvZEQ98oYI0aLt5CxKRbqVdQhBquJ/K6NM9iaYZpqG/vA1uA1RlumxHBJd
	/M97n+bgfjh3hK7TNlKRrch/grWgxsmiacWY37KAcr5L1pXBtdHJmoG8wfaoMZZo30B4XT
	wAkWM+jD/PW4oU7zimp8pUS4TsrHDMsvBJ8K0YT3rddmmrqlfZmqrEqIMF9uQnXwP5Tnqi
	zUQzUkfOiEKj5czwcrj82QCaR7F/aaz5Bolf3NOsC+Kc9NnBplgm14GznhetSQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791208702;
	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=Fbn5ZyzsAFD0tUwnlpPWKlp/7sSHBCGoE/Y/tAZ/QeQ=;
	b=TmlMRRkubyWhn4OMvwB9QeZ1/XTag63gSJ19KnTEyn1RVqnyMiRBvSmuRCg/tCfg1fSQ7n
	E5zs9OteXK9XYmTNiDGNaiuDsVk9lQG0cp0nLqEsRxlwPLoxKvqLGGcYbfOmqww3nP8gYX
	RCPrCTCbyP8OTJPymvXNGTdQGdFGyTJEUrsOc+kLMCqMzkbnFsuoBfykn9dFxoHRWBRhac
	xCjjGmCQ3BOmeIVFi8anNxjs56z8K/yXgZTcaC0mej3poU/Vaww/Nvcduot5i2oEEa5ff2
	f1MwHqgrBrdEXj3Fcitv82HnTb6iQzOEpFCYu1w7gtdStQnHsQgybTNGBs5rpg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz1FB2PHtzMdp
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 13:58:22 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 45490
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 13:58:21 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: f2b0910a9831 - stable/15 - OpenSSH: Update to 10.4p1
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: f2b0910a9831d09404558611d20364456549a96f
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 13:58:21 +0000
Message-Id: <6ac3acfd.45490.484eccfa@gitrepo.freebsd.org>

The branch stable/15 has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=f2b0910a9831d09404558611d20364456549a96f

commit f2b0910a9831d09404558611d20364456549a96f
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2026-07-09 17:17:11 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-05 13:47:51 +0000

    OpenSSH: Update to 10.4p1
    
    Full release notes are available at
    https://www.openssh.com/txt/release-10.4
    
    Selected highlights from the release notes:
    
    Potentially-incompatible changes
    --------------------------------
    
     * sshd(8): configuration dump mode ("sshd -G") now writes directives
       in mixed case (e.g. "PubkeyAuthentication") whereas previously it
       emitted only lower-case names.
    
     * ssh(1), sshd(8): make the transport protocol stricter by
       disconnecting if the peer sends non-KEX messages during a post-
       authentication key re-exchange. Previously a malicious peer could
       continue sending non-key exchange messages without penalty. These
       would be buffered, causing memory to be wasted up until the
       connection terminated or the server/client hit a memory limit.
       Implementations that do not restrict messages sent during key
       exchange as per RFC4253 section 7.1 may be disconnected.
       Reported by Marko Jevtic.
    
    Changes since OpenSSH 10.3
    ==========================
    
    This release contains a number of security fixes as well as general
    bugfixes and a couple of new features.
    
    Security
    ========
    
     * sftp(1): when downloading files on the command-line using
       "sftp host:/path .", a malicious server could cause the file to
       be downloaded to an unexpected location. This issue was identified
       by the Swival Security Scanner.
    
     * scp(1): when copying files between two remote destinations, do
       not allow a malicious server to write files to the parent
       directory of the intended target directory.  This issue was
       identified by the Swival Security Scanner.
    
     * sshd(8): DisableForwarding=yes didn't override PermitTunnel=yes
       as it was documented to do. Note that PermitTunnel is not enabled
       by default. Reported independently by Huzaifa Sidhpurwala of
       Redhat and Marko Jevtic.
    
     * sshd(8): avoid a potential pre-authentication denial of service
       when GSSAPIAuthentication was enabled (this feature is off by
       default). This was not mitigated by MaxAuthTries, but would be
       penalised by PerSourcePenalties. This was reported by Manfred
       Kaiser of the milCERT AT (Austrian Ministry of Defence).
    
     * sshd(8): fix a number of cases where the minimum authentication
       delay was not being enforced. Reported by the Orange Cyberdefense
       Vulnerability Team.
    
     * ssh(1): fix a possible client-side use-after-free if the server
       changes its host key during a key reexchange. This was reported by
       Zhenpeng (Leo) Lin of Depthfirst.
    
    New features
    ------------
    
     * All: add experimental support for a composite post-quantum
       signature scheme that combines ML-DSA 44 and Ed25519 as specified
       in draft-miller-sshm-mldsa44-ed25519-composite-sigs.
    
       This scheme is not enabled by default. To use it, you'll need
       to add it to HostKeyAlgorithms, PubkeyAcceptedAlgorithms, etc.
       Keys may be generated using "ssh-keygen -t mldsa44-ed25519".
    
    Bugfixes
    --------
    
     * sshd(8): avoid sending observably different messages for valid vs
       invalid users in GSSAPIAuthentication (disabled by default).
    
     * ssh(1), sshd(8): fix several bugs that incorrectly
       classified bulk traffic as interactive. bz3972, bz3958
    
     * ssh-keygen(1), ssh-add(1): skip unsupported key types when
       downloading resident keys from a FIDO token. Previously, downloads
       would abort when one was encountered. GHPR657
    
    Sponsored by:   The FreeBSD Foundation
    Differential Revision: https://reviews.freebsd.org/D58083
    
    (cherry picked from commit bb5c77e9d281d6def6835d48249898764bc6a5fe)
    (cherry picked from commit f7c08d8dd810d031e5b2e53cbaa102a9105ada3f)
    (cherry picked from commit 5792a639ab950fb7e6add09352e1cd41f1809bc2)
---
 crypto/openssh/.depend                             |     4 +-
 crypto/openssh/.git_allowed_signers.asc            |    26 +-
 crypto/openssh/.github/ci-status.md                |    12 +-
 crypto/openssh/.github/configs                     |     7 +-
 crypto/openssh/.github/install_dropbear.sh         |    35 +
 crypto/openssh/.github/install_libcrypto.sh        |     2 +-
 crypto/openssh/.github/pin_actions.sh              |    35 +
 crypto/openssh/.github/run_test.sh                 |    24 +-
 crypto/openssh/.github/setup_ci.sh                 |   167 +-
 crypto/openssh/.github/workflows/c-cpp.yml         |    42 +-
 crypto/openssh/.github/workflows/cifuzz.yml        |     6 +-
 crypto/openssh/.github/workflows/selfhosted.yml    |    10 +-
 crypto/openssh/.github/workflows/upstream.yml      |    20 +-
 crypto/openssh/.github/workflows/vm.yml            |   155 +-
 crypto/openssh/.skipped-commit-ids                 |     2 +
 crypto/openssh/ChangeLog                           | 14820 +++++-----
 crypto/openssh/Makefile.in                         |    42 +
 crypto/openssh/PROTOCOL.agent                      |     4 +-
 crypto/openssh/README                              |     2 +-
 crypto/openssh/README.privsep                      |   184 +-
 crypto/openssh/auth.h                              |     3 +-
 crypto/openssh/auth2-chall.c                       |     6 +-
 crypto/openssh/auth2-gss.c                         |    62 +-
 crypto/openssh/auth2.c                             |    12 +-
 crypto/openssh/authfd.c                            |     8 +-
 crypto/openssh/authfile.c                          |     9 +-
 crypto/openssh/chacha.c                            |     6 +-
 crypto/openssh/channels.c                          |    17 +-
 crypto/openssh/channels.h                          |     5 +-
 crypto/openssh/cipher.c                            |    44 +-
 crypto/openssh/cipher.h                            |     4 +-
 crypto/openssh/clientloop.c                        |    26 +-
 crypto/openssh/config.h                            |    13 +-
 crypto/openssh/configure.ac                        |    39 +-
 crypto/openssh/contrib/redhat/openssh.spec         |     2 +-
 crypto/openssh/contrib/suse/openssh.spec           |     2 +-
 crypto/openssh/crypto_api.h                        |   127 +-
 crypto/openssh/defines.h                           |    16 +-
 crypto/openssh/ed25519-openssl.c                   |    38 +-
 crypto/openssh/ed25519.c                           |    36 +-
 crypto/openssh/ed25519.sh                          |    74 +-
 crypto/openssh/kex.c                               |     9 +-
 crypto/openssh/kex.h                               |     3 +-
 crypto/openssh/kexmlkem768x25519.c                 |   100 +-
 crypto/openssh/libcrux-mlkem-mldsa.c               |   430 +
 crypto/openssh/libcrux_internal.h                  | 27332 +++++++++++++++++++
 crypto/openssh/libcrux_mlkem768_sha3.h             | 11752 --------
 crypto/openssh/mac.c                               |     8 +-
 crypto/openssh/match.c                             |   137 +-
 crypto/openssh/misc.c                              |     8 +-
 crypto/openssh/mlkem768.sh                         |   219 -
 crypto/openssh/mlkem_mldsa.sh                      |   341 +
 crypto/openssh/moduli                              |  1124 +-
 crypto/openssh/monitor.c                           |    58 +-
 crypto/openssh/monitor_wrap.c                      |    84 +-
 crypto/openssh/monitor_wrap.h                      |     6 +-
 crypto/openssh/openbsd-compat/bsd-cygwin_util.c    |     6 +-
 crypto/openssh/openbsd-compat/bsd-misc.c           |     2 +-
 crypto/openssh/openbsd-compat/fake-rfc2553.c       |     3 +-
 crypto/openssh/openbsd-compat/fmt_scaled.c         |    39 +-
 .../openssh/openbsd-compat/getrrsetbyname-ldns.c   |     3 +-
 crypto/openssh/openbsd-compat/getrrsetbyname.c     |    23 +-
 crypto/openssh/openbsd-compat/vis.c                |     2 +
 crypto/openssh/packet.c                            |    35 +-
 crypto/openssh/pathnames.h                         |     4 +-
 crypto/openssh/readconf.c                          |     6 +-
 crypto/openssh/regress/Makefile                    |     3 +
 crypto/openssh/regress/addrmatch.sh                |     4 +-
 crypto/openssh/regress/agent.sh                    |    21 +-
 crypto/openssh/regress/cert-hostkey.sh             |    15 +-
 crypto/openssh/regress/cert-userkey.sh             |    16 +-
 crypto/openssh/regress/cfgmatch.sh                 |     4 +-
 crypto/openssh/regress/dropbear-kex.sh             |    10 +-
 crypto/openssh/regress/dropbear-server.sh          |   202 +-
 crypto/openssh/regress/hostkey-agent.sh            |     8 +-
 crypto/openssh/regress/kbdint.sh                   |     4 +-
 crypto/openssh/regress/keyscan.sh                  |     6 +-
 crypto/openssh/regress/keytype.sh                  |     8 +-
 crypto/openssh/regress/knownhosts-command.sh       |     5 +-
 .../ssh-verify-attestation.c                       |     4 +-
 crypto/openssh/regress/sshsig.sh                   |     8 +-
 crypto/openssh/regress/test-exec.sh                |     8 +
 crypto/openssh/regress/unittests/Makefile          |     4 +-
 crypto/openssh/regress/unittests/Makefile.inc      |     3 +-
 crypto/openssh/regress/unittests/authopt/Makefile  |     4 +-
 crypto/openssh/regress/unittests/crypto/Makefile   |    26 +
 .../regress/unittests/crypto/test_ed25519.c        |    99 +
 .../openssh/regress/unittests/crypto/test_mldsa.c  |   140 +
 .../regress/unittests/crypto/test_mldsa_eddsa.c    |   197 +
 .../openssh/regress/unittests/crypto/test_mlkem.c  |   164 +
 .../draft-ietf-lamps-pq-composite-sigs.json        |     8 +
 .../unittests/crypto/testdata/nistkats-44.json     |   802 +
 crypto/openssh/regress/unittests/crypto/tests.c    |   123 +
 crypto/openssh/regress/unittests/hostkeys/Makefile |     4 +-
 crypto/openssh/regress/unittests/kex/Makefile      |     3 +-
 crypto/openssh/regress/unittests/match/tests.c     |   202 +-
 crypto/openssh/regress/unittests/servconf/Makefile |    26 +
 crypto/openssh/regress/unittests/servconf/tests.c  |   364 +
 crypto/openssh/regress/unittests/sshkey/Makefile   |     4 +-
 .../openssh/regress/unittests/sshkey/mktestdata.sh |    22 +-
 .../openssh/regress/unittests/sshkey/test_file.c   |    67 +-
 .../openssh/regress/unittests/sshkey/test_fuzz.c   |    58 +-
 .../openssh/regress/unittests/sshkey/test_sshkey.c |   111 +-
 .../unittests/sshkey/testdata/mldsa44_ed25519_1    |    58 +
 .../sshkey/testdata/mldsa44_ed25519_1-cert.fp      |     1 +
 .../sshkey/testdata/mldsa44_ed25519_1-cert.pub     |     1 +
 .../unittests/sshkey/testdata/mldsa44_ed25519_1.fp |     1 +
 .../sshkey/testdata/mldsa44_ed25519_1.fp.bb        |     1 +
 .../sshkey/testdata/mldsa44_ed25519_1.pub          |     1 +
 .../unittests/sshkey/testdata/mldsa44_ed25519_1_pw |    59 +
 .../unittests/sshkey/testdata/mldsa44_ed25519_2    |    58 +
 .../unittests/sshkey/testdata/mldsa44_ed25519_2.fp |     1 +
 .../sshkey/testdata/mldsa44_ed25519_2.fp.bb        |     1 +
 .../sshkey/testdata/mldsa44_ed25519_2.pub          |     1 +
 crypto/openssh/regress/unittests/sshkey/tests.c    |     2 +-
 crypto/openssh/regress/unittests/sshsig/Makefile   |     4 +-
 .../openssh/regress/unittests/sshsig/mktestdata.sh |     9 +-
 .../unittests/sshsig/testdata/mldsa44-ed25519      |    58 +
 .../unittests/sshsig/testdata/mldsa44-ed25519.pub  |     1 +
 .../unittests/sshsig/testdata/mldsa44-ed25519.sig  |    78 +
 crypto/openssh/regress/unittests/sshsig/tests.c    |     9 +-
 .../regress/unittests/test_helper/test_helper.c    |    18 +-
 .../regress/unittests/test_helper/test_helper.h    |     4 +-
 crypto/openssh/sandbox-seccomp-filter.c            |    17 +-
 crypto/openssh/scp.c                               |     8 +-
 crypto/openssh/servconf.c                          |  2011 +-
 crypto/openssh/servconf.h                          |   483 +-
 crypto/openssh/serverloop.c                        |     4 +-
 crypto/openssh/session.c                           |    70 +-
 crypto/openssh/sftp-client.c                       |    16 +-
 crypto/openssh/sftp-server.8                       |    15 +-
 crypto/openssh/sftp-server.c                       |    43 +-
 crypto/openssh/sftp.c                              |    40 +-
 crypto/openssh/sk-usbhid.c                         |    31 +-
 crypto/openssh/ssh-add.c                           |    33 +-
 crypto/openssh/ssh-agent.1                         |     8 +-
 crypto/openssh/ssh-agent.c                         |    42 +-
 crypto/openssh/ssh-keygen.1                        |    16 +-
 crypto/openssh/ssh-keygen.c                        |    12 +-
 crypto/openssh/ssh-keyscan.1                       |    13 +-
 crypto/openssh/ssh-keyscan.c                       |    15 +-
 crypto/openssh/ssh-keysign.c                       |     3 +-
 crypto/openssh/ssh-mldsa-eddsa.c                   |   506 +
 crypto/openssh/ssh.1                               |     9 +-
 crypto/openssh/ssh.c                               |    32 +-
 crypto/openssh/ssh_config.5                        |    96 +-
 crypto/openssh/ssh_namespace.h                     |    64 +-
 crypto/openssh/sshbuf-io.c                         |     7 +-
 crypto/openssh/sshbuf.h                            |     3 +-
 crypto/openssh/sshconnect.c                        |    50 +-
 crypto/openssh/sshconnect.h                        |     9 +-
 crypto/openssh/sshconnect2.c                       |    25 +-
 crypto/openssh/sshd-auth.c                         |    60 +-
 crypto/openssh/sshd-session.c                      |     3 +-
 crypto/openssh/sshd.c                              |     6 +-
 crypto/openssh/sshd_config                         |     2 +-
 crypto/openssh/sshd_config.5                       |    14 +-
 crypto/openssh/ssherr-libcrypto.c                  |     4 +-
 crypto/openssh/ssherr.c                            |     4 +-
 crypto/openssh/ssherr.h                            |     4 +-
 crypto/openssh/sshkey.c                            |    22 +-
 crypto/openssh/sshkey.h                            |     7 +-
 crypto/openssh/version.h                           |     6 +-
 secure/lib/libssh/Makefile                         |     1 +
 164 files changed, 43376 insertions(+), 21443 deletions(-)

diff --git a/crypto/openssh/.depend b/crypto/openssh/.depend
index 134a986596a0..03e8c423d3ab 100644
--- a/crypto/openssh/.depend
+++ b/crypto/openssh/.depend
@@ -73,6 +73,7 @@ kexgexs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compa
 kexmlkem768x25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshkey.h kex.h mac.h crypto_api.h sshbuf.h digest.h ssherr.h log.h
 kexsntrup761x25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssherr.h
 krl.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshbuf.h ssherr.h sshkey.h misc.h log.h digest.h bitmap.h utf8.h krl.h
+libcrux-mlkem-mldsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
 log.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h ssherr.h match.h
 loginrec.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshkey.h hostfile.h ssh.h loginrec.h log.h ssherr.h atomicio.h packet.h dispatch.h canohost.h auth.h auth-pam.h audit.h sshbuf.h misc.h
 logintest.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h loginrec.h
@@ -126,7 +127,7 @@ sk-usbhid.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-com
 sntrup761.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
 srclimit.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h addr.h canohost.h log.h ssherr.h misc.h srclimit.h xmalloc.h servconf.h match.h
 ssh-add.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h log.h ssherr.h sshkey.h sshbuf.h authfd.h authfile.h pathnames.h misc.h digest.h ssh-sk.h sk-api.h hostfile.h
-ssh-agent.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h ssh2.h sshbuf.h sshkey.h authfd.h log.h ssherr.h misc.h digest.h match.h msg.h pathnames.h ssh-pkcs11.h sk-api.h myproposal.h
+ssh-agent.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h ssh2.h sshbuf.h sshkey.h authfd.h log.h ssherr.h misc.h digest.h match.h msg.h pathnames.h ssh-pkcs11.h sk-api.h myproposal.h version.h
 ssh-ecdsa-sk.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/openssl-compat.h sshbuf.h ssherr.h digest.h sshkey.h
 ssh-ecdsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
 ssh-ed25519-sk.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h log.h ssherr.h sshbuf.h sshkey.h digest.h
@@ -136,6 +137,7 @@ ssh-keygen.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-co
 ssh-keyscan.o: atomicio.h misc.h hostfile.h ssh_api.h ssh2.h dns.h addr.h
 ssh-keyscan.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h sshbuf.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h kex.h mac.h crypto_api.h compat.h myproposal.h packet.h dispatch.h log.h ssherr.h
 ssh-keysign.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h ssherr.h sshkey.h ssh.h ssh2.h misc.h sshbuf.h authfile.h msg.h canohost.h pathnames.h readconf.h uidswap.h
+ssh-mldsa-eddsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
 ssh-pkcs11-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h pathnames.h xmalloc.h sshbuf.h log.h ssherr.h misc.h sshkey.h authfd.h atomicio.h ssh-pkcs11.h
 ssh-pkcs11-helper.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshbuf.h log.h ssherr.h misc.h sshkey.h authfd.h ssh-pkcs11.h
 ssh-pkcs11.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/bsd-sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h ssherr.h sshkey.h ssh-pkcs11.h
diff --git a/crypto/openssh/.git_allowed_signers.asc b/crypto/openssh/.git_allowed_signers.asc
index 1a8401b838a3..4d7269b1b485 100644
--- a/crypto/openssh/.git_allowed_signers.asc
+++ b/crypto/openssh/.git_allowed_signers.asc
@@ -1,16 +1,16 @@
 -----BEGIN PGP SIGNATURE-----
 
-iQIzBAABCgAdFiEEcWi5g4FaXu9ZpK39Kj9BTnNgYLoFAmYHnZ8ACgkQKj9BTnNg
-YLquuQ/6A8E6P2jcgn3wmbbCTXP7kmxoh3nmw/e6PC8CEua1512oT3GHOKVD5cGK
-cgYRObpWvjOjg7L1HRABftq7a9M2zfsGnY/WNe3/fbetfkyY8hG8c31vA1ePIOt2
-AjBLCWFblH0CtyH/MssoQ19JCLtXK/GmekB1Q0JzyOog7w/0r3CKuUnZ0juCYR1R
-4FBePl5l3nFSZEcFEdptGlNGeuolS5XBCqB9Y91TCzkVkH5eXUUW+shgjNhWCEhT
-pZvkxfhsmOEnwNofyPdgKVfDBVkHmvuC67EU395mJVN4c2NZ8pOztb9hOt3xr980
-q44I4kT2NpaApCx1dWIGhMy/37LJ8heI0W1B+ofTA5n34/RU8UXH3SCkj2AK6Ao5
-H2u8vbmuWKUCiECmrw35EeKGmtuK/bWJzx3KBP7fx5J9S3mWUgT4W4xlWNN9RWoU
-sSvH1ppie5ARINVaAWl5k44fk60ahTf80DbQBIOZBmQn7myZZka+yGcQbAiZZ1Gc
-0l8+Nf5Ao1ckmuyY5o8FyWdsyDeK3+MqjPn5Rr1CqbKCn2VnqrVWbI33Eyu8c96U
-bxVgU5H1BDhNjJC8UrT3LFPvJMO8p3a0IJ3eHydjk2jVOhOdBZmA0yoqUTrhPpXq
-ymIHESjDJR8TDe4TCfb46o9oEC3cdbDwgnzPqdg0n+0uIsJLYiU=
-=gl+l
+iQIzBAABCgAdFiEEcWi5g4FaXu9ZpK39Kj9BTnNgYLoFAmnevEAACgkQKj9BTnNg
+YLr72w//ay7JpFSfUF5h97Vi2T58fwkRO2aapXrK8f3mnzeelN9H09XBpRquFZCL
+o5S/8RSmVtRjCTXyo7GjwhaAF6+XyKiKgwvjTnY9EA4leCCoNdBJ2/77xlBZdPD4
+AuKPRQKpGjJi+P+2yB0ocgpT6MWXDlg0xkdLWaiQC4xpADUD9AlebUVHtCPOqXWb
+LgGampMjQu8usg9QX3x0oHpuMUot+wo3dTD2xjgWv03DmPK7wCUiA760GeEGibma
+jv3JT8JZnDtPk4J0PpoJecoJsMhH9Zoy55yi3d4y/SxBUSIBFs2qcw4tO3iixZwD
+mlZVW83KFhIlH6Q8GJtymrYrQ2Gw88wWZ6Oj3glzHCkrxUeO9MIbnTSzXekg6+O7
+qBxQC4xdlNtHFS+GvG3EZzztl8C4Qfmdl35bStQaVhWzygI5+o19yoeYi4lMTYQM
+CAH6ONeDFvm3SwlTJk41O/zXz7mO1vRpsn5QMCHt3KLBZkkMrSKl4C2r9iuq7MeY
+gx3mnPW6/yu1TzGUl5wtzeb6I2R1/zPK3ibhbGQyt4WggCio3D8xmcmhyxKL79fi
+Pb02QXRYplXrkR6Lf2HCRdJoNu3bodqelkeiAtgj0CLHlK355dtmya6txn4Ccoc1
++kH7vdHqPKJSrsMBZ/Qm+0dA9Kq4Qoib2tog9De09u5p8XQUdAY=
+=9i1L
 -----END PGP SIGNATURE-----
diff --git a/crypto/openssh/.github/ci-status.md b/crypto/openssh/.github/ci-status.md
index 00a1db0df76a..5d17f893761d 100644
--- a/crypto/openssh/.github/ci-status.md
+++ b/crypto/openssh/.github/ci-status.md
@@ -8,6 +8,11 @@ master :
 [![Coverity Status](https://scan.coverity.com/projects/21341/badge.svg)](https://scan.coverity.com/projects/openssh-portable)
 <br>
 
+10.3 :
+[![C/C++ CI](../../../actions/workflows/c-cpp.yml/badge.svg?branch=V_10_3)](../../../actions/workflows/c-cpp.yml?query=branch:V_10_3)
+[![VM CI](../../../actions/workflows/vm.yml/badge.svg?branch=V_10_3)](../../../actions/workflows/vm.yml?query=branch:V_10_3)
+[![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_10_3)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_10_3)
+
 10.2 :
 [![C/C++ CI](../../../actions/workflows/c-cpp.yml/badge.svg?branch=V_10_2)](../../../actions/workflows/c-cpp.yml?query=branch:V_10_2)
 [![VM CI](../../../actions/workflows/vm.yml/badge.svg?branch=V_10_2)](../../../actions/workflows/vm.yml?query=branch:V_10_2)
@@ -18,10 +23,3 @@ master :
 [![VM CI](../../../actions/workflows/vm.yml/badge.svg?branch=V_10_1)](../../../actions/workflows/vm.yml?query=branch:V_10_1)
 [![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_10_1)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_10_1)
 
-10.0 :
-[![C/C++ CI](../../../actions/workflows/c-cpp.yml/badge.svg?branch=V_10_0)](../../../actions/workflows/c-cpp.yml?query=branch:V_10_0)
-[![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_10_0)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_10_0)
-
-9.9 :
-[![C/C++ CI](../../../actions/workflows/c-cpp.yml/badge.svg?branch=V_9_9)](../../../actions/workflows/c-cpp.yml?query=branch:V_9_9)
-[![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_9_9)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_9_9)
diff --git a/crypto/openssh/.github/configs b/crypto/openssh/.github/configs
index 9ad2439df493..ece6441b1617 100755
--- a/crypto/openssh/.github/configs
+++ b/crypto/openssh/.github/configs
@@ -185,6 +185,11 @@ case "$config" in
     libressl-*)
 	LIBCRYPTOFLAGS="--with-ssl-dir=/opt/libressl --with-rpath=-Wl,-rpath,"
 	;;
+    dropbear-*)
+	CONFIGFLAGS="--with-dbclient=/usr/local/bin/plink --with-dropbear=/usr/local/sbin/dropbear"
+	# We don't need to rerun the regular tests, just the interop ones.
+	TEST_TARGET=interop-tests
+	;;
     putty-*)
 	CONFIGFLAGS="--with-plink=/usr/local/bin/plink --with-puttygen=/usr/local/bin/puttygen"
 	# We don't need to rerun the regular tests, just the interop ones.
@@ -203,7 +208,7 @@ case "$config" in
 	;;
     sk)
 	CONFIGFLAGS="--with-security-key-builtin --with-security-key-standalone"
-        ;;
+	;;
     without-openssl)
 	LIBCRYPTOFLAGS="--without-openssl"
 	TEST_TARGET=t-exec
diff --git a/crypto/openssh/.github/install_dropbear.sh b/crypto/openssh/.github/install_dropbear.sh
new file mode 100755
index 000000000000..ed91c52f7cdb
--- /dev/null
+++ b/crypto/openssh/.github/install_dropbear.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Install specified Dropbear version into /usr/local.
+#
+
+ver="$1"
+
+echo
+echo ---------------------------------------------
+echo Installing dropbear version: ${ver}
+echo ---------------------------------------------
+
+set -e
+
+cd /tmp
+
+if [ ! -d dropbear-clean ]; then
+	git clone https://github.com/mkj/dropbear.git dropbear-clean
+	(cd dropbear-clean && git config --global advice.detachedHead false)
+fi
+
+rm -rf dropbear
+cp -a dropbear-clean dropbear
+cd dropbear
+git checkout "$ver"
+git status
+echo "Building Dropbear version '$ver'"
+(
+	autoreconf 2>&1 &&
+	./configure 2>&1 &&
+	make clean 2>&1 &&
+	make 2>&1 &&
+	sudo make install 2>&1) >/tmp/db-build.log 2>&1 || cat /tmp/db-build.log
+
+echo "Installed dropbear version: '$(/usr/local/bin/dbclient -V 2>&1)'"
diff --git a/crypto/openssh/.github/install_libcrypto.sh b/crypto/openssh/.github/install_libcrypto.sh
index d1aa23450679..cef9416808d8 100755
--- a/crypto/openssh/.github/install_libcrypto.sh
+++ b/crypto/openssh/.github/install_libcrypto.sh
@@ -51,7 +51,7 @@ if [ "${abi_compat_test}" = "y" ]; then
 		ver="${major}.$((${minor} + 1))"
 		echo selecting next release branch ${ver}
 		;;
-	openssl-3.*.*)
+	openssl-[34].*.*)
 		major=$(echo ${ver} | cut -f1 -d.)
 		minor=$(echo ${ver} | cut -f2 -d.)
 		patch=$(echo ${ver} | cut -f3 -d.)
diff --git a/crypto/openssh/.github/pin_actions.sh b/crypto/openssh/.github/pin_actions.sh
new file mode 100755
index 000000000000..8b64e823827e
--- /dev/null
+++ b/crypto/openssh/.github/pin_actions.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Look up specified version of Github Actions an pin to that specific
+# revision.
+#
+
+set -e
+
+github=https://github.com
+
+for workflow in workflows/*.yml; do
+	sed 's/ - /   /' ${workflow} | grep -v '^#' | awk '/uses:/ {print}' | \
+	    while read line; do
+		action_ver=$(awk '{print $2}' <<<${line})
+		action=$(cut -f1 -d@ <<<${action_ver})
+		ver=$(cut -f2 -d@ <<<${action_ver})
+		intendedver=$(awk '{print $4}' <<<${line})
+		if [ -z "${intendedver}" ]; then
+			intendedver=${ver}
+		fi
+		case "${action}" in
+		google/oss-fuzz/*)	actiondir=google/oss-fuzz ;;
+		*)			actiondir="${action}" ;;
+		esac
+		if [ ! -d /tmp/${actiondir} ]; then
+			git clone ${github}/${actiondir} /tmp/${actiondir}
+		fi
+		hash=$(cd /tmp/${actiondir} && git rev-parse ${intendedver})
+		sed -i -e "s|uses: ${action}@.*|uses: ${action}@${hash} # ${intendedver}|" \
+		     ${workflow}
+	done
+done
+
+# Output actions for allowlist.
+awk 'BEGIN{IFS=":"} /^ +uses:.*@/{print $2","}' workflows/*.yml | sort -u
diff --git a/crypto/openssh/.github/run_test.sh b/crypto/openssh/.github/run_test.sh
index c67d00700f23..63aa31f6c004 100755
--- a/crypto/openssh/.github/run_test.sh
+++ b/crypto/openssh/.github/run_test.sh
@@ -15,8 +15,8 @@ if [ ! -z "$SUDO" ] && [ ! -z "$TEST_SSH_HOSTBASED_AUTH" ]; then
     $SUDO mkdir -p $sshconf
     $SUDO make install
     for key in $sshconf/ssh_host*key*.pub; do
-        echo `hostname` `cat $key` | \
-            $SUDO tee -a $sshconf/ssh_known_hosts >/dev/null
+	echo `hostname` `cat $key` | \
+	    $SUDO tee -a $sshconf/ssh_known_hosts >/dev/null
     done
 fi
 
@@ -45,6 +45,22 @@ if [ "$1" = "putty-versions" ]; then
 	exit 0
 fi
 
+if [ "$1" = "dropbear-versions" ]; then
+	make regress-binaries
+	# Work backward from current version to last version we support.
+	for ver in main `cd /tmp/dropbear && git tag | grep -E 'DROPBEAR_' | sort -rn`; do
+		year=`echo "$ver" | cut -f2 -d_ | cut -f1 -d.`
+		if [ "$ver" != "master" ] && [ "$year" -lt "2020" ]; then
+			exit 0
+		fi
+		.github/install_dropbear.sh "${ver}"
+		${env} make ${TEST_TARGET} \
+		    SKIP_LTESTS="${SKIP_LTESTS}" LTESTS="${LTESTS}"
+	done
+
+	exit 0
+fi
+
 if [ -z "${LTESTS}" ]; then
     ${env} make ${TEST_TARGET} SKIP_LTESTS="${SKIP_LTESTS}"
 else
@@ -59,8 +75,8 @@ fi
 if [ ! -z "${SSHD_CONFOPTS}" ]; then
     echo "rerunning t-exec with TEST_SSH_SSHD_CONFOPTS='${SSHD_CONFOPTS}'"
     if [ -z "${LTESTS}" ]; then
-        ${env} make t-exec SKIP_LTESTS="${SKIP_LTESTS}" TEST_SSH_SSHD_CONFOPTS="${SSHD_CONFOPTS}"
+	${env} make t-exec SKIP_LTESTS="${SKIP_LTESTS}" TEST_SSH_SSHD_CONFOPTS="${SSHD_CONFOPTS}"
     else
-        ${env} make t-exec SKIP_LTESTS="${SKIP_LTESTS}" LTESTS="${LTESTS}" TEST_SSH_SSHD_CONFOPTS="${SSHD_CONFOPTS}"
+	${env} make t-exec SKIP_LTESTS="${SKIP_LTESTS}" LTESTS="${LTESTS}" TEST_SSH_SSHD_CONFOPTS="${SSHD_CONFOPTS}"
     fi
 fi
diff --git a/crypto/openssh/.github/setup_ci.sh b/crypto/openssh/.github/setup_ci.sh
index e1b3dcf04a84..6ab4e4fb56f2 100755
--- a/crypto/openssh/.github/setup_ci.sh
+++ b/crypto/openssh/.github/setup_ci.sh
@@ -8,8 +8,8 @@ PACKAGES="tmux"
 echo Running as:
 id
 
-echo Environment:
-set
+echo Saving environment to runner-env.txt
+set >runner-env.txt
 
  . .github/configs ${config}
 
@@ -20,16 +20,36 @@ case "$host" in
 	PACKAGER=setup
 	echo Setting CYGWIN system environment variable.
 	setx CYGWIN "winsymlinks:native"
-	echo Removing extended ACLs so umask works as expected.
-	set -x
-	setfacl -b . regress
-	icacls regress /c /t /q /Inheritance:d
-	icacls regress /c /t /q /Grant ${USERNAME}:F
-	icacls regress /c /t /q /Remove:g "Authenticated Users" \
-	     BUILTIN\\Administrators BUILTIN Everyone System Users
-	takeown /F regress
+	echo Removing extended ACLs on regress so umask works as expected.
+	echo "Original ACLs"
 	icacls regress
-	set +x
+	setfacl -b regress
+	icacls regress /c /t /q /grant 'BUILTIN\Administrators:(RX)'
+	echo "Modifiled ACLs"
+	icacls regress
+
+	echo Enabling OpenSSL rh-allow-sha1-signatures for unit tests.
+	cp /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf.bak
+	cat >>/etc/pki/tls/openssl.cnf <<EOD
+[openssl_init]
+alg_section = evp_properties
+
+[evp_properties]
+rh-allow-sha1-signatures = yes
+EOD
+	openssl list -providers -provider legacy
+	printf "Test openssl signing with RSA+SHA1: "
+	openssl genpkey -quiet -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
+	openssl pkey -in private_key.pem -pubout -out public_key.pem
+	if ! openssl dgst -sha1 -sign private_key.pem -out signature.sig public_key.pem; then
+		echo fail
+		echo "openssl could not sign with RSA+SHA1."
+		cp /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf.bak regress/
+		exit 1
+	else
+		echo success
+	fi
+
 	PACKAGES="$PACKAGES,autoconf,automake,cygwin-devel,gcc-core"
 	PACKAGES="$PACKAGES,make,openssl,libssl-devel,zlib-devel"
 	;;
@@ -87,82 +107,88 @@ echo "Setting up for '$TARGETS'"
 for TARGET in $TARGETS; do
     case $TARGET in
     default|without-openssl|without-zlib|c89)
-        # nothing to do
-        ;;
+	# nothing to do
+	;;
     clang-sanitize*)
-        PACKAGES="$PACKAGES clang-12"
-        ;;
+	PACKAGES="$PACKAGES clang-12"
+	;;
     cygwin-release)
-        PACKAGES="$PACKAGES libcrypt-devel libfido2-devel libkrb5-devel"
-        ;;
+	PACKAGES="$PACKAGES libcrypt-devel libfido2-devel libkrb5-devel"
+	;;
     gcc-sanitize*)
-        ;;
+	;;
     clang-*|gcc-*)
-        compiler=$(echo $TARGET | sed 's/-Werror//')
-        PACKAGES="$PACKAGES $compiler"
-        ;;
+	compiler=$(echo $TARGET | sed 's/-Werror//')
+	PACKAGES="$PACKAGES $compiler"
+	;;
     krb5)
-        PACKAGES="$PACKAGES libkrb5-dev libnss-wrapper krb5-admin-server"
+	PACKAGES="$PACKAGES libkrb5-dev libnss-wrapper krb5-admin-server"
 	;;
     heimdal)
-        PACKAGES="$PACKAGES heimdal-dev libnss-wrapper krb5-admin-server"
-        ;;
+	PACKAGES="$PACKAGES heimdal-dev libnss-wrapper krb5-admin-server"
+	;;
     libedit)
 	case "$PACKAGER" in
 	setup)	PACKAGES="$PACKAGES libedit-devel" ;;
 	apt)	PACKAGES="$PACKAGES libedit-dev" ;;
 	esac
-        ;;
+	;;
     *pam)
 	case "$PACKAGER" in
 	apt)	PACKAGES="$PACKAGES libpam0g-dev" ;;
 	esac
-        ;;
+	;;
     sk)
-        INSTALL_FIDO_PPA="yes"
-        PACKAGES="$PACKAGES libfido2-dev libu2f-host-dev libcbor-dev"
-        ;;
+	INSTALL_FIDO_PPA="yes"
+	PACKAGES="$PACKAGES libfido2-dev libu2f-host-dev libcbor-dev"
+	;;
     selinux)
-        PACKAGES="$PACKAGES libselinux1-dev selinux-policy-dev libaudit-dev"
-        ;;
+	PACKAGES="$PACKAGES libselinux1-dev selinux-policy-dev libaudit-dev"
+	;;
     hardenedmalloc)
-        INSTALL_HARDENED_MALLOC=yes
-        ;;
+	INSTALL_HARDENED_MALLOC=yes
+	# Need clang >= 19 for constexpr.
+	PACKAGES="$PACKAGES clang-19"
+	;;
     musl)
 	PACKAGES="$PACKAGES musl-tools"
 	;;
     tcmalloc)
-        PACKAGES="$PACKAGES libgoogle-perftools-dev"
-        ;;
+	PACKAGES="$PACKAGES libgoogle-perftools-dev"
+	;;
     openssl-noec)
 	INSTALL_OPENSSL=OpenSSL_1_1_1k
 	SSLCONFOPTS="no-ec"
 	;;
     openssl-*)
-        INSTALL_OPENSSL=$(echo ${TARGET} | cut -f2 -d-)
-        case ${INSTALL_OPENSSL} in
-          1.1.1_stable)	INSTALL_OPENSSL="OpenSSL_1_1_1-stable" ;;
-          1.*)	INSTALL_OPENSSL="OpenSSL_$(echo ${INSTALL_OPENSSL} | tr . _)" ;;
-          3.*)	INSTALL_OPENSSL="openssl-${INSTALL_OPENSSL}" ;;
-        esac
-        PACKAGES="${PACKAGES} putty-tools dropbear-bin"
+	INSTALL_OPENSSL=$(echo ${TARGET} | cut -f2 -d-)
+	case ${INSTALL_OPENSSL} in
+	  1.1.1_stable)	INSTALL_OPENSSL="OpenSSL_1_1_1-stable" ;;
+	  1.*)	INSTALL_OPENSSL="OpenSSL_$(echo ${INSTALL_OPENSSL} | tr . _)" ;;
+	  master)	;;
+	  *)	INSTALL_OPENSSL="openssl-${INSTALL_OPENSSL}" ;;
+	esac
+	PACKAGES="${PACKAGES} putty-tools dropbear-bin"
        ;;
     libressl-*)
-        INSTALL_LIBRESSL=$(echo ${TARGET} | cut -f2 -d-)
-        case ${INSTALL_LIBRESSL} in
-          master) ;;
-          *) INSTALL_LIBRESSL="$(echo ${TARGET} | cut -f2 -d-)" ;;
-        esac
-        PACKAGES="${PACKAGES} putty-tools dropbear-bin"
+	INSTALL_LIBRESSL=$(echo ${TARGET} | cut -f2 -d-)
+	case ${INSTALL_LIBRESSL} in
+	  master) ;;
+	  *) INSTALL_LIBRESSL="$(echo ${TARGET} | cut -f2 -d-)" ;;
+	esac
+	PACKAGES="${PACKAGES} putty-tools dropbear-bin"
        ;;
     boringssl)
-        INSTALL_BORINGSSL=1
-        PACKAGES="${PACKAGES} cmake ninja-build"
+	INSTALL_BORINGSSL=1
+	PACKAGES="${PACKAGES} cmake ninja-build"
        ;;
     aws-lc)
-        INSTALL_AWSLC=1
-        PACKAGES="${PACKAGES} cmake ninja-build"
-        ;;
+	INSTALL_AWSLC=1
+	PACKAGES="${PACKAGES} cmake ninja-build"
+	;;
+    dropbear-versions)
+	INSTALL_DROPBEAR=main
+	;;
     putty-*)
 	INSTALL_PUTTY=0.83
 	PACKAGES="${PACKAGES} cmake"
@@ -173,8 +199,8 @@ for TARGET in $TARGETS; do
     zlib-*)
        ;;
     *) echo "Invalid option '${TARGET}'"
-        exit 1
-        ;;
+	exit 1
+	;;
     esac
 done
 
@@ -221,7 +247,7 @@ if [ "${INSTALL_HARDENED_MALLOC}" = "yes" ]; then
     (cd ${HOME} &&
      git clone https://github.com/GrapheneOS/hardened_malloc.git &&
      cd ${HOME}/hardened_malloc &&
-     make && sudo cp out/libhardened_malloc.so /usr/lib/)
+     make CC=clang-19 && sudo cp out/libhardened_malloc.so /usr/lib/)
 fi
 
 if [ ! -z "${INSTALL_OPENSSL}" ]; then
@@ -231,20 +257,20 @@ fi
 
 if [ ! -z "${INSTALL_LIBRESSL}" ]; then
     if [ "${INSTALL_LIBRESSL}" = "master" ]; then
-        (mkdir -p ${HOME}/libressl && cd ${HOME}/libressl &&
-         git clone https://github.com/libressl-portable/portable.git &&
-         cd ${HOME}/libressl/portable &&
-         git checkout ${INSTALL_LIBRESSL} &&
-         sh update.sh && sh autogen.sh &&
-         ./configure --prefix=/opt/libressl &&
-         make && sudo make install)
+	(mkdir -p ${HOME}/libressl && cd ${HOME}/libressl &&
+	 git clone https://github.com/libressl-portable/portable.git &&
+	 cd ${HOME}/libressl/portable &&
+	 git checkout ${INSTALL_LIBRESSL} &&
+	 sh update.sh && sh autogen.sh &&
+	 ./configure --prefix=/opt/libressl &&
+	 make && sudo make install)
     else
-        LIBRESSL_URLBASE=https://cdn.openbsd.org/pub/OpenBSD/LibreSSL
-        (cd ${HOME} &&
-         wget ${LIBRESSL_URLBASE}/libressl-${INSTALL_LIBRESSL}.tar.gz &&
-         tar xfz libressl-${INSTALL_LIBRESSL}.tar.gz &&
-         cd libressl-${INSTALL_LIBRESSL} &&
-         ./configure --prefix=/opt/libressl && make && sudo make install)
+	LIBRESSL_URLBASE=https://cdn.openbsd.org/pub/OpenBSD/LibreSSL
+	(cd ${HOME} &&
+	 wget ${LIBRESSL_URLBASE}/libressl-${INSTALL_LIBRESSL}.tar.gz &&
+	 tar xfz libressl-${INSTALL_LIBRESSL}.tar.gz &&
+	 cd libressl-${INSTALL_LIBRESSL} &&
+	 ./configure --prefix=/opt/libressl && make && sudo make install)
     fi
 fi
 
@@ -272,6 +298,9 @@ if [ ! -z "${INSTALL_ZLIB}" ]; then
      sudo make install prefix=/opt/zlib)
 fi
 
+if [ ! -z "${INSTALL_DROPBEAR}" ]; then
+	.github/install_dropbear.sh "${INSTALL_DROPBEAR}"
+fi
 if [ ! -z "${INSTALL_PUTTY}" ]; then
 	.github/install_putty.sh "${INSTALL_PUTTY}"
 fi
diff --git a/crypto/openssh/.github/workflows/c-cpp.yml b/crypto/openssh/.github/workflows/c-cpp.yml
index 02cd10bfbb6e..ffead602f5d3 100644
--- a/crypto/openssh/.github/workflows/c-cpp.yml
+++ b/crypto/openssh/.github/workflows/c-cpp.yml
@@ -9,6 +9,7 @@ name: CI
 #   fail immediately.
 #
 # LTESTS: Override the set of tests run.
+# TEST_SSH_TRACE: Set to yes for additional regress output.
 
 on:
   push:
@@ -51,7 +52,6 @@ jobs:
           - { target: ubuntu-22.04, config: gcc-12-Werror }
           - { target: ubuntu-22.04, config: gcc-sanitize-address }
           - { target: ubuntu-22.04, config: gcc-sanitize-undefined }
-          - { target: ubuntu-22.04, config: hardenedmalloc }
           - { target: ubuntu-22.04, config: heimdal }
           - { target: ubuntu-22.04, config: kitchensink }
           - { target: ubuntu-22.04, config: krb5 }
@@ -63,7 +63,7 @@ jobs:
           - { target: ubuntu-22.04, config: valgrind-2 }
           - { target: ubuntu-22.04, config: valgrind-3 }
           - { target: ubuntu-22.04, config: valgrind-4 }
-          - { target: ubuntu-22.04, config: valgrind-pam-1 }
+          # - { target: ubuntu-22.04, config: valgrind-pam-1 }
           - { target: ubuntu-22.04, config: valgrind-unit }
           - { target: ubuntu-22.04, config: without-openssl }
           - { target: ubuntu-latest, config: gcc-14 }
@@ -71,6 +71,7 @@ jobs:
           - { target: ubuntu-latest, config: clang-19 }
           - { target: ubuntu-latest, config: boringssl }
           - { target: ubuntu-latest, config: aws-lc }
+          - { target: ubuntu-latest, config: hardenedmalloc }
           - { target: ubuntu-latest, config: libressl-master }
           - { target: ubuntu-latest, config: libressl-3.2.7 }
           - { target: ubuntu-latest, config: libressl-3.3.6 }
@@ -83,6 +84,7 @@ jobs:
           - { target: ubuntu-latest, config: libressl-4.0.1 }
           - { target: ubuntu-latest, config: libressl-4.1.1 }
           - { target: ubuntu-latest, config: libressl-4.2.0 }
+          - { target: ubuntu-latest, config: libressl-4.3.2 }
           - { target: ubuntu-latest, config: openssl-master }
           - { target: ubuntu-latest, config: openssl-noec }
           - { target: ubuntu-latest, config: openssl-1.1.1 }
@@ -93,12 +95,14 @@ jobs:
           - { target: ubuntu-latest, config: openssl-3.1.0 }
           - { target: ubuntu-latest, config: openssl-3.1.8 }
           - { target: ubuntu-latest, config: openssl-3.2.6 }
-          - { target: ubuntu-latest, config: openssl-3.3.5 }
+          - { target: ubuntu-latest, config: openssl-3.3.7 }
           - { target: ubuntu-latest, config: openssl-3.4.0 }
-          - { target: ubuntu-latest, config: openssl-3.4.3 }
+          - { target: ubuntu-latest, config: openssl-3.4.5 }
           - { target: ubuntu-latest, config: openssl-3.5.0 }
           - { target: ubuntu-latest, config: openssl-3.5.3 }  # keep
-          - { target: ubuntu-latest, config: openssl-3.5.4 }
+          - { target: ubuntu-latest, config: openssl-3.5.6 }
+          - { target: ubuntu-latest, config: openssl-3.6.2 }
+          - { target: ubuntu-latest, config: openssl-4.0.0 }
           - { target: ubuntu-latest, config: openssl-1.1.1_stable }
           - { target: ubuntu-latest, config: openssl-3.0 }  # stable branch
           - { target: ubuntu-latest, config: openssl-3.1 }  # stable branch
@@ -107,6 +111,8 @@ jobs:
           - { target: ubuntu-latest, config: openssl-3.4 }  # stable branch
           - { target: ubuntu-latest, config: openssl-3.5 }  # stable branch
           - { target: ubuntu-latest, config: openssl-3.6 }  # stable branch
+          - { target: ubuntu-latest, config: openssl-4.0 }  # stable branch
+          - { target: ubuntu-latest, config: dropbear-versions }
           - { target: ubuntu-latest, config: putty-versions }
           - { target: ubuntu-latest, config: zlib-develop }
           - { target: ubuntu-latest, config: tcmalloc }
@@ -118,6 +124,7 @@ jobs:
     runs-on: ${{ matrix.target }}
     env:
       EPHEMERAL_VM: yes
+      CYGWIN: "winsymlinks:native"
     steps:
     - name: check RUN_ONLY_TARGET_CONFIG
       if: vars.RUN_ONLY_TARGET_CONFIG != ''
@@ -128,12 +135,12 @@ jobs:
     - name: install cygwin
       id: cygwin_install
       if: ${{ startsWith(matrix.target, 'windows') }}
-      uses: cygwin/cygwin-install-action@master
-      env:
-        CYGWIN: "winsymlinks:native"
-    - uses: actions/checkout@main
+      uses: cygwin/cygwin-install-action@a3d72946b163026bbd0fa9a88379ccbda4bd86bb # master
+    - name: checkout openssh git repo
+      uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # main
     - name: setup CI system
-      run: sh ./.github/setup_ci.sh ${{ matrix.config }} ${{ matrix.target }}
+      run: |
+        sh -c "timeout 1200 .github/setup_ci.sh ${{ matrix.config }} ${{ matrix.target }} || .github/setup_ci.sh ${{ matrix.config }} ${{ matrix.target }}"
       env:
         CYGWIN_SETUP: ${{ steps.cygwin_install.outputs.setup }}
     - name: autoreconf
@@ -141,34 +148,35 @@ jobs:
     - name: configure
       run: sh ./.github/configure.sh ${{ matrix.config }}
     - name: save config
-      uses: actions/upload-artifact@main
+      uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # main
       with:
         name: ${{ matrix.target }}-${{ matrix.config }}-config
         path: config.h
     - name: make clean
       run: make clean
     - name: make
-      run: make
+      run: make -j2
     - name: make tests
       run: sh ./.github/run_test.sh ${{ matrix.config }}
       env:
         TEST_SSH_UNSAFE_PERMISSIONS: 1
         TEST_SSH_HOSTBASED_AUTH: yes
+        TEST_SSH_TRACE: ${{ vars.TEST_SSH_TRACE }}
         LTESTS: ${{ vars.LTESTS }}
     - name: test OpenSSL3 ABI compatibility
       if: ${{ startsWith(matrix.config, 'openssl-3') }}
       run: |
        sh .github/install_libcrypto.sh -a ${{ matrix.config }} /opt/openssl
        sh .github/run_test.sh ${{ matrix.config }}
-    - name: show logs
-      if: failure()
-      run: for i in regress/failed*.log; do echo ====; echo logfile $i; echo =====; cat $i; done
     - name: chown logs
       if: failure()
-      run: test -x "$(which sudo 2>&1)" && sudo chown -R "${LOGNAME}" regress
+      run: sh -c 'SUDO="$(which sudo 2>/dev/null)"; $SUDO chown -R "${LOGNAME}" regress'
+    - name: show logs
+      if: failure()
+      run: sh -c "for i in regress/failed*.log; do echo ====; echo logfile $i; echo =====; cat $i; done"
     - name: save logs
       if: failure()
-      uses: actions/upload-artifact@main
+      uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # main
       with:
         name: ${{ matrix.target }}-${{ matrix.config }}-logs
         path: |
diff --git a/crypto/openssh/.github/workflows/cifuzz.yml b/crypto/openssh/.github/workflows/cifuzz.yml
index ab8b1c6e0971..286b39c12cb0 100644
--- a/crypto/openssh/.github/workflows/cifuzz.yml
+++ b/crypto/openssh/.github/workflows/cifuzz.yml
@@ -12,20 +12,20 @@ jobs:
     steps:
     - name: Build Fuzzers
       id: build
-      uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
+      uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@b1836d5aed2e5aaae7f618ddd40bbcc477119825 # master
       with:
         oss-fuzz-project-name: 'openssh'
         dry-run: false
         language: c++
     - name: Run Fuzzers
-      uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
+      uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@b1836d5aed2e5aaae7f618ddd40bbcc477119825 # master
       with:
         oss-fuzz-project-name: 'openssh'
         fuzz-seconds: 600
         dry-run: false
         language: c++
     - name: Upload Crash
-      uses: actions/upload-artifact@main
+      uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # main
       if: failure() && steps.build.outcome == 'success'
       with:
         name: artifacts
diff --git a/crypto/openssh/.github/workflows/selfhosted.yml b/crypto/openssh/.github/workflows/selfhosted.yml
index aa01c8b296a9..d9f38472c405 100644
--- a/crypto/openssh/.github/workflows/selfhosted.yml
+++ b/crypto/openssh/.github/workflows/selfhosted.yml
@@ -88,7 +88,7 @@ jobs:
           - { target: nbsd10, config: pam, host: libvirt }
           - { target: omnios, config: pam, host: libvirt }
           # ARM64 VMs
-          - { target: obsd-arm64, config: default, host: libvirt-arm64 }
+          - { target: obsdsnap-arm64, config: default, host: libvirt-arm64 }
           # VMs with persistent disks that have their own runner.
           - { target: win10, config: default,        host: persist-win10 }
           - { target: win10, config: cygwin-release, host: persist-win10 }
@@ -105,7 +105,7 @@ jobs:
     - name: shutdown VM if running
       if: env.VM == 'true'
       run: vmshutdown
-    - uses: actions/checkout@main
+    - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # main
     - name: autoreconf
       run: autoreconf
     - name: startup VM
@@ -119,7 +119,7 @@ jobs:
     - name: configure
       run: vmrun ./.github/configure.sh ${{ matrix.config }}
 #    - name: save config
-#      uses: actions/upload-artifact@main
+#      uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # main
 #      with:
 #        name: ${{ matrix.target }}-${{ matrix.config }}-config
 #        path: config.h
@@ -135,7 +135,7 @@ jobs:
       run: vmrun 'for i in regress/failed*.log; do echo ====; echo logfile $i; echo =====; cat $i; done'
     - name: save logs
*** 72252 LINES SKIPPED ***

From nobody Mon Oct  5 14:06:38 2026
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 4hz1Qr1FwLz6jvfQ
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 14:06:44 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz1Qr0prfz3D0b
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:06:44 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791209204;
	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=Xi+zEEicwuF3d1XjCN99c83ZelMf8cBpnXeNC351nT0=;
	b=tRUhjWkKPIrnn2lRIj83vZcWmRtIuAMGS0PILIT6VBJ5LP9dtMoR06LiozzbE8gCijSTCX
	06bFPqz2ilj+l5FmuemD3AcrMoJ9qUN3/H2X8eaBkdt9lCSwhMfTG2bVlbhGbXh6CEkJc2
	0EvpCTc12JZU8y+3+Zjnoni9rqDXfkZ7XFVuRg/LYvGZdW7HxppmvUQ2pKSl+GZw3cnOjR
	iLKCAggNKCd2/Ot8Q0jKGK5BEYjqzsuHOoAlbF/jWDQlTgOYZm+J0cTFN1bqgH9F1BGQtj
	PmJipDKNOSoQOQJIDqWMiaHYZcIhjYyVcQMJvMqBEGVaoKYwjAxF3YQzOtz8nQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791209204;
	b=XsCXLhN8FQnfVanTJS8bzsY8QC+A9USerslQnL/UVDhCWFAGuWE7Enu110Dcs11tCKeDdV
	S/rVkYVG1o/7rDcry5yLRvoz7YLd/YnUEubpmJzmCp0zFZpe8WM4ZN+y/JvtYhrSUp7Ps6
	PEM27AVw2ktt8tv/kCi9nT4Csme1UoHFfdFYungcw5VEvpA6CLF8bNgj1YmY8TW3Ibfg0E
	E/fxTGC/mAtu07HP0NSAz5NvAEvqzBMv+b9Tf0Ywo8G5AxhttbNeow8s3H4UaQOK7bZv6X
	8hs+BJXajTcX0uaRkAnvUUTzanglZv31Lk9It6vG8txgRfpX6cRzNkgYA9tKJg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791209204;
	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=Xi+zEEicwuF3d1XjCN99c83ZelMf8cBpnXeNC351nT0=;
	b=PTxK/w8JxxjWxOyMckjkbY9lVh2xnZnzhUqN5M/xpAUSLmWqWWPZfz09uibtXjcUS3q2n7
	couSa60c30yK+usppo5rx8mVMsohFtbBaMxxSz+l+Il3FfrG1VGoRO7w2G2WFPHbuKG+02
	IugL0Q5Phfx6WTj9KbLU6PnVJkKrnx6YHZG4J9gQQSc49x/7OviGvUABP22Xww7JWSYHU9
	ZEBUl8z++b4Km1+4ncT6M/qmDFcVHA6uI2IqRJ7IWkYQ9dY7SqNZyYX3bIcB4plkbDtWQe
	uAbZOEPITSgM4NkL4GAey/4aZY/6vR4WqYxd1GhRGw7DKXPdLRGbDJ8FGZyMyw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz1Qq6gLdzMgV
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:06:43 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 4598a
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 14:06:38 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: R. Christian McDonald <rcm@FreeBSD.org>
Subject: git: 68386f6b551e - main - igc: Fix the flow control sysctl
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: rcm
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 68386f6b551e64c956c9623b9973be9e462ce1de
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 14:06:38 +0000
Message-Id: <6ac3aeee.4598a.54ce795c@gitrepo.freebsd.org>

The branch main has been updated by rcm:

URL: https://cgit.FreeBSD.org/src/commit/?id=68386f6b551e64c956c9623b9973be9e462ce1de

commit 68386f6b551e64c956c9623b9973be9e462ce1de
Author:     R. Christian McDonald <rcm@FreeBSD.org>
AuthorDate: 2026-10-05 14:01:54 +0000
Commit:     R. Christian McDonald <rcm@FreeBSD.org>
CommitDate: 2026-10-05 14:01:54 +0000

    igc: Fix the flow control sysctl
    
    dev.igc.N.fc read and wrote a function-static variable shared by every
    igc device, so a read returned the last value written to any of them (3
    until the first write), not the state of the device.  The softc value
    started as 0, which is also the value of "no flow control", while the
    hardware was set up for full flow control.  As a result:
    
    - Writing 0 was taken for no change and did nothing, unless another
      value had been written to that device before.
    - igc_reset() took a softc value of 0 for "not set", so a device set to
      0 went back to full flow control on the next init.
    - With more than one receive queue the driver enabled per-queue drop
      (SRRCTL.DROP_EN), which is meant for a MAC that does not send pause
      frames, although the MAC was told to send them.
    - Values out of range were accepted and ignored.
    
    A write only forced the MAC's flow control bits.  The pause bits
    advertised to the link partner, the pause thresholds and DROP_EN stayed
    as the last init had set them, and the next link event resolved flow
    control from the stale advertisement again: a port set to 0 came back
    honoring pause frames, for example.
    
    Start the softc value as full, report it, use it as it is in
    igc_reset(), reject invalid values, and apply a change by
    reinitializing the interface, as the dmac and eee_control sysctls do.
    
    Two things behave differently now.  Changing the mode of a running
    interface takes the link down to renegotiate.  And with the default
    mode and more than one receive queue DROP_EN is no longer set: a full
    receive ring makes the MAC send pause frames, and holds up the other
    queues, where it used to drop that queue's packets.  Setting fc to 0 or
    1 selects per-queue drop.
    
    Tested on I226-V ports with four receive queues: for each mode, the
    flow control bits in CTRL, the pause thresholds and DROP_EN were read
    back, and the mode the link partner resolved, also after a down/up.
    
    Reviewed by:            gallatin
    Fixes:                  517904de5cca ("igc(4): Introduce new driver for the Intel I225 Ethernet controller.")
    MFC after:              2 weeks
    Sponsored by:           Rubicon Communications, LLC ("Netgate")
    Differential Revision:  https://reviews.freebsd.org/D60363
---
 sys/dev/igc/if_igc.c | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/sys/dev/igc/if_igc.c b/sys/dev/igc/if_igc.c
index bc24849693e1..7bfbf1c9d1a7 100644
--- a/sys/dev/igc/if_igc.c
+++ b/sys/dev/igc/if_igc.c
@@ -181,6 +181,7 @@ static int	igc_if_msix_intr_assign(if_ctx_t, int);
 static int	igc_msix_link(void *);
 static void	igc_handle_link(void *context);
 
+static void	igc_sysctl_request_reinit(struct igc_softc *);
 static int	igc_set_flowcntl(SYSCTL_HANDLER_ARGS);
 static int	igc_sysctl_dmac(SYSCTL_HANDLER_ARGS);
 static int	igc_sysctl_eee(SYSCTL_HANDLER_ARGS);
@@ -533,6 +534,7 @@ igc_if_attach_pre(if_ctx_t ctx)
 	    OID_AUTO, "debug", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
 	    sc, 0, igc_sysctl_debug_info, "I", "Debug Information");
 
+	sc->fc = igc_fc_full;
 	SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
 	    SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
 	    OID_AUTO, "fc", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
@@ -2190,10 +2192,7 @@ igc_reset(if_ctx_t ctx)
 	/* 16-byte granularity */
 	hw->fc.low_water = hw->fc.high_water - 16;
 
-	if (sc->fc) /* locally set flow control value? */
-		hw->fc.requested_mode = sc->fc;
-	else
-		hw->fc.requested_mode = igc_fc_full;
+	hw->fc.requested_mode = sc->fc;
 
 	hw->fc.pause_time = IGC_FC_PAUSE_TIME;
 
@@ -3736,34 +3735,35 @@ igc_sysctl_tso_tcp_flags_mask(SYSCTL_HANDLER_ARGS)
 static int
 igc_set_flowcntl(SYSCTL_HANDLER_ARGS)
 {
-	int error;
-	static int input = 3; /* default is full */
+	int error, input;
 	struct igc_softc *sc = (struct igc_softc *) arg1;
 
+	input = sc->fc;
 	error = sysctl_handle_int(oidp, &input, 0, req);
 
 	if ((error) || (req->newptr == NULL))
 		return (error);
 
-	if (input == sc->fc) /* no change? */
-		return (error);
-
 	switch (input) {
 	case igc_fc_rx_pause:
 	case igc_fc_tx_pause:
 	case igc_fc_full:
 	case igc_fc_none:
-		sc->hw.fc.requested_mode = input;
-		sc->fc = input;
 		break;
 	default:
-		/* Do nothing */
-		return (error);
+		return (EINVAL);
 	}
 
-	sc->hw.fc.current_mode = sc->hw.fc.requested_mode;
-	igc_force_mac_fc(&sc->hw);
-	return (error);
+	if (input == sc->fc) /* no change? */
+		return (0);
+
+	/*
+	 * The mode is advertised to the link partner and also decides the
+	 * pause thresholds and per-queue drop, so it takes a reinit to apply.
+	 */
+	sc->fc = input;
+	igc_sysctl_request_reinit(sc);
+	return (0);
 }
 
 static void

From nobody Mon Oct  5 14:07:57 2026
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 4hz1SF6LZ1z6jvfs
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 14:07:57 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz1SF5jjhz3Cyg
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:07:57 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791209277;
	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=Q2jklzUOzJWRFSDg+4PZQZe3VxjZR46t3HI8zb6/H3M=;
	b=n2nJvZzkMroAdiXM0hlRGyoZDS+3MmY5ZYY0bTNXXPKRGvz+VMOQeMG2PuDNU6eLD8YN4K
	6SsfUi1CKSXQWcY69AxcngaERxeykgTJ16PgZRovYLuD3k6Gb5KJ6LKV+WFYUOjKCjNS9k
	+ooax0oQx+SfaRx5DO+suX3F1s+/msMCa0rwtYd4VhboGGhyEL2yJUN00Z95Og6HE00pdH
	wP4bJMThv3tBXaEGlhLxG2eVonRhgldcBTbmFxfZmPSh86caDpBVKJqukCSK7ZnZN1jtYH
	Vxzx4FZKq2VNp8Mb+Oyt7sg8RbqtWQJRPzc6sAjjwgONYbSce5uLVQwb0sbF6g==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791209277;
	b=ff0kZYabXsd2y/LlbL8+61xlTc/10SpZYS9UXr2aS553VKwnAHJ0zl3xlL2wHmuYXAh6Y9
	pFq6YFQbMQiInopGq54JADcVgG3n6nz2/vS8Y6In1yYKlNbg5zyrPTPZLU7G/lzBJg5c/A
	2qVhLnpsj0OmzEx6SnCv3a1LRQzAHfYTXsQm79Zd8CFYSWPGZaqEegi+y1L9nmO4k7CLm5
	RSFGLYuE2A0UjhAmeUGzINJJYhqHTIs0GGvKI+Vocz0LKPCeoe+hnfnUDFOUWPA7JTcVpv
	YlIz5NO4459lYoKcnzesHp9JKbZZwhUeRQs1wSUEhXr9lA6soiPasVyseGmNtA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791209277;
	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=Q2jklzUOzJWRFSDg+4PZQZe3VxjZR46t3HI8zb6/H3M=;
	b=jMWNK+CJ04xozW5cMbhZGS6xT8LgfFLOcC5KZglWet8r7Pp62yOP9IMgsYe/cmE3miITzr
	MB6UzwikP0HigP4ByWeQkI15WhNZa1Qv2vTc4tQD3+6ZOfBDqocEERF2xJ5IYpwU3mBxFI
	hoyFYiwXBL4U4yTWsZgX49FWtGF1cTyrd2QCmAGEc+KU8+M5fzWJXMXuVJycmKzoma0B1W
	h1YiyH6yQI+ob7jrgD17lqo11MOpz4SNRKhfq9Chq5x/lkSyK6jmZcXhx9vfSCmreq0Bk5
	bB/kWeR48Fwz0tjs296o806HL0OmO9LwWmV7JouFz/MmVdXKDcaVo9heVk69wg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz1SF4llYzMkQ
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:07:57 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 446b4
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 14:07:57 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Siva Mahadevan <siva@FreeBSD.org>
Subject: git: fdd3f6f78888 - main - bsd.lib.mk: only ctfmerge if objfiles have a CTF section
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: siva
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: fdd3f6f78888b02a1bfa69a0572317413dc14a45
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 14:07:57 +0000
Message-Id: <6ac3af3d.446b4.721d30f1@gitrepo.freebsd.org>

The branch main has been updated by siva:

URL: https://cgit.FreeBSD.org/src/commit/?id=fdd3f6f78888b02a1bfa69a0572317413dc14a45

commit fdd3f6f78888b02a1bfa69a0572317413dc14a45
Author:     Siva Mahadevan <siva@FreeBSD.org>
AuthorDate: 2026-10-02 19:54:55 +0000
Commit:     Siva Mahadevan <siva@FreeBSD.org>
CommitDate: 2026-10-05 14:07:44 +0000

    bsd.lib.mk: only ctfmerge if objfiles have a CTF section
    
    PR:             299013
    Reported by:    Trond.Endrestol@ximalas.info
    Reviewed by:    emaste
    Fixes:          222210c6a822 ("libgcc_s: add libgcc_s_asneeded.so wrapper for gcc 16")
    MFC after:      3 days
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D60252
---
 share/mk/bsd.lib.mk | 2 +-
 share/mk/sys.mk     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
index e3b3d760ff28..5b7bed041b8f 100644
--- a/share/mk/bsd.lib.mk
+++ b/share/mk/bsd.lib.mk
@@ -291,7 +291,7 @@ ${SHLIB_NAME_FULL}: ${SOBJS}
 .endif
 	${_LD:N${CCACHE_BIN}} ${LDFLAGS} ${SSP_CFLAGS} ${SOLINKOPTS} \
 	    -o ${.TARGET} -Wl,-soname,${SONAME} ${SOBJS} ${LDADD}
-.if ${MK_CTF} != "no"
+.if ${MK_CTF} != "no" && defined(SOBJS) && !empty(SOBJS)
 	${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SOBJS}
 .endif
 
diff --git a/share/mk/sys.mk b/share/mk/sys.mk
index bb943d2b1519..f63223e8464e 100644
--- a/share/mk/sys.mk
+++ b/share/mk/sys.mk
@@ -165,7 +165,7 @@ CPP		?=	cpp
 CTFFLAGS	?=	-L VERSION
 
 CTFCONVERT	?=	ctfconvert
-CTFMERGE	?=	ctfmerge
+CTFMERGE	?=	ctfmerge -t
 
 .if defined(CFLAGS) && (${CFLAGS:M-g} != "")
 CTFFLAGS	+=	-g

From nobody Mon Oct  5 14:11:37 2026
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 4hz1XV0gdKz6jvhv
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 14:11:38 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz1XV02CNz3FBV
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:11:38 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791209498;
	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=s3bd8txy4rjyn6P7ld/sUyx9vRIOBxv31O/6Fy6GAW4=;
	b=RavC/+aBcKZEkWrLmVfc8Pmlq+ARjE/vAmzLBQDVOJ8leHJoyiDIy766B8SiM4xJPf7hBo
	ZJVfd/ItX890O5BF7IuYM8YU1csgF0VIYJnjisEKoUID5p5Dc+rnbMhvCR+JvjrdVxSJF3
	1OkrOgkGtU+RQTDlrKm6/vCmYCAiFeu2wiCkMTDM0HJuryWgSJz3JQ2e806CutbeCh6/+y
	EHWwOLyNdGzuaZGfZsWIP8vhIVMwVozXsZNklShTyKV9M7c8zDyYb3T6oX24WpIHKwF+kl
	wiD5FhdQjUcomVC7PwbmfU20E2YuW+b8bIVDUcYh/ghIR1S2k6CEw6+nj8HfJA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791209498;
	b=qvOPaoVjLtRRRyiJHOw6WdaUWcBRzf9gac0sweYZ5voVSvVsAcGrsp929hOToTwztugav+
	AeA4uYdZoMBWQDLN899yni0TTf5P3v5Vf4qfNJ+7FDhhxL6I/p5+LOidH73JSxjtPZuXBq
	csoqLF8iYvjebQGN1TGzu/W9vrRpDGTEAJGwQ1CcM2gx/0/NwwTeD+sOVv9Cj+B3li3tOD
	OW2WrUTTDGnTUGG7Yo0ecYga+BvVV4I7iPoxfGpBSXIelh8PepTFj3ouvVOWwImHYLubal
	vCqn6aI/SS15nxov/ETfhg9d53vVtJcVvPugC7IcJw9YzKeXOtv784fA7wYp/w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791209498;
	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=s3bd8txy4rjyn6P7ld/sUyx9vRIOBxv31O/6Fy6GAW4=;
	b=sRtaAhylK18It3lFWmZ+t+YVPFt18VhY1yntQqUnfMqWysEoG4ZWeph5/4K9gD6XItHmmm
	B4NyfXmK4ocqTvjwLhjUoVTz38Ue5kZ5hDvysyUBzhVzzfywHAVnGu5uR1dLq8mXKwvglB
	tZoPyVogtfwAjyTV6weENUo20vojerGk+gbiF2UvZkSe8WapMQf7DqcmZ3oSaiqrJX/Scm
	JNp8ecE3AF8IyEh8oy5JU+Tj7yDFWDOzPVILMatfUSoXg9rZdXuJ6yjDLF0twNa3cYZmvK
	nuXhKkO5tZcKaXbP5aIvTPWdprw+1B6uNpTWdUZTWTDoJPjSpn3c0dyibi6Vhw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz1XT6CZNzMyR
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:11:37 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 466ba
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 14:11:37 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Gleb Popov <arrowd@FreeBSD.org>
Subject: git: 128e91e002d2 - stable/15 - nuageinit: Allow the userdata script to run before firstboot* rc services
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: arrowd
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 128e91e002d29ecfb62f0568dda316eac4125b68
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 14:11:37 +0000
Message-Id: <6ac3b019.466ba.7a12cbc3@gitrepo.freebsd.org>

The branch stable/15 has been updated by arrowd:

URL: https://cgit.FreeBSD.org/src/commit/?id=128e91e002d29ecfb62f0568dda316eac4125b68

commit 128e91e002d29ecfb62f0568dda316eac4125b68
Author:     Gleb Popov <arrowd@FreeBSD.org>
AuthorDate: 2026-07-27 18:18:12 +0000
Commit:     Gleb Popov <arrowd@FreeBSD.org>
CommitDate: 2026-10-05 14:11:26 +0000

    nuageinit: Allow the userdata script to run before firstboot* rc services
    
    Allowing nuageinit user scripts to run before these makes it possible to
    customize official BASIC-CI and BASIC-CLOUDINIT FreeBSD images.
    
    This was requested by KDE for their CI.
    
    Approved by:    cperciva
    Pull-Request:   https://ron-dev.freebsd.org/FreeBSD/src/pulls/60
    
    (cherry picked from commit 16e47f317c4ce2be5fed530bf8a9af9f9bf55364)
---
 libexec/rc/rc.d/nuageinit_user_data_script | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libexec/rc/rc.d/nuageinit_user_data_script b/libexec/rc/rc.d/nuageinit_user_data_script
index decb6bf1483e..acc14bbe9164 100755
--- a/libexec/rc/rc.d/nuageinit_user_data_script
+++ b/libexec/rc/rc.d/nuageinit_user_data_script
@@ -3,6 +3,7 @@
 
 # PROVIDE: nuageinit_user_data_script
 # REQUIRE: local
+# BEFORE:  firstboot_freebsd_update firstboot_pkg_upgrade
 # KEYWORD: firstboot
 
 . /etc/rc.subr

From nobody Mon Oct  5 14:13:29 2026
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 4hz1Zf063Mz6jwC5
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 14:13:30 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz1Zd6LDhz3Fwl
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:13:29 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791209609;
	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=vUVVWE54VIT2QppRXzfWL7qSLRWVaVHp1pQmv8cPjfM=;
	b=nFnbZ+VG0WBeiVrfOh48FB5veI4w5aMnHKIek62rR8r2kF9b0hom4jB9BQp9EqG6ELIk7L
	H4C/4Fz/HyAFk14JjKYKonGxMruvfmitvlqRfBnhXfUBGceDdwZveDMuT8SA02bIoHyCPB
	a9LAa6TjkkZpcYrrQKiw1dMNBJeEwnXtuJLMpUHQoZp7TAHLY0icXqwjWeA1YJvlebA/4t
	3jXKWwYJdEVSReuxFJCnqLBxwjDoLU3qFbXEZrA9t/Ouy6jaW1EcjxYIQud5Gr8pc6z/Zl
	3zYT2oZubEJuj1u1pBj7vjEYLUc/4yXjNorxvRzqdwwfBNVRMOqEb8rGZqDy1Q==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791209609;
	b=RXF+B5VnWo8ze3xiYoxRx2oLxzfJ2wLgPuloidgu30XV8wPgfl/vHxObeaFYJPA3HxmHJc
	7rgKbefu8JEhts2sVTRMy0ztgGLVtOUbTAsijKNs6dEcN1JEFIJ3RrFP1T8qtADLNdIEes
	C+/hipysqhbk5XtdNeU7LEsF2lfdvqXiw9FiAvqT3BdG05+8xf3Pgn4Jt/DEICsrWnwYJi
	3pLnBzse6AUht0sRrBR+cYTrAR3uhLWtnYbuQP97kE7u11ypdQ5ylMF8AMxZ/eHim//HKl
	PFLeyxapYGLLEZ0mebsPq7YGUTaPjEEv2YLImOadsN0vXAp+QQ7iYUGUX3T8UA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791209609;
	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=vUVVWE54VIT2QppRXzfWL7qSLRWVaVHp1pQmv8cPjfM=;
	b=ZnEPu3ZIUJCFzW5oP07JiUSmmS1hvNtrp5kKEZH+LMhMAS9H5xlmaIi1vNF2XRtsrbAFAz
	Jh45gqlVfMRSU1Rz8ILkQZC5//CDy4VPFhreV3vRi30y7B7nrKbQOeUXwwDGbrkjmTkSyX
	BHE41gfz9s7CDM4BrXKTAYiAvrWF5UeNMe+rSh3vZEGjtuTvtq1VaCd3+CPJDXWdYphMQX
	3gQw1h3lh+MQiUa0SPHo+MZGvdVUXjy/Iz7KIM/jYNxPiCVvsXvs7/HLsdd5qWzRJJOtZB
	UqVbXRkd9IXZZck7K0350wf3cpP8cnGJWcfSa93JkmYAb72+0JL52y6UKytYuw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz1Zd5Np5zNF2
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:13:29 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 444eb
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 14:13:29 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Andrew Turner <andrew@FreeBSD.org>
Subject: git: 412c3a037049 - main - arm64/gicv5: Use ArmMpidr to find the correct CPU
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
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: 412c3a0370491c6745e056266f54ce9aa67017e1
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 14:13:29 +0000
Message-Id: <6ac3b089.444eb.5231fef4@gitrepo.freebsd.org>

The branch main has been updated by andrew:

URL: https://cgit.FreeBSD.org/src/commit/?id=412c3a0370491c6745e056266f54ce9aa67017e1

commit 412c3a0370491c6745e056266f54ce9aa67017e1
Author:     Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2026-10-05 13:31:02 +0000
Commit:     Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2026-10-05 14:13:06 +0000

    arm64/gicv5: Use ArmMpidr to find the correct CPU
    
    The GICv5 ACPI code uses CpuInterfaceNumber to as the CPU ID. This a
    GICv5 CPU ID and may not be the same as the appropriate FreeBSD value.
    
    It is also possible the target CPU is disabled, e.g. when the hw.ncpu
    tunable is uses to limit CPUs. If this is the case we don't want to
    enable the CPU in the cpu set as it is offline so cannot handle
    interrupts.
    
    Switch to use ArmMpidr to find which pcpu to use when finding which
    CPUs the IRS is attached to.
    
    Fixes:  9556306213e1 ("arm64: Add ACPI support to GICv5 driver")
    Differential Revision:  https://reviews.freebsd.org/D59993
    Sponsored by:   Arm Ltd
---
 sys/arm64/arm64/gicv5_acpi.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/sys/arm64/arm64/gicv5_acpi.c b/sys/arm64/arm64/gicv5_acpi.c
index 0cece1eae0e5..aebea1dcd466 100644
--- a/sys/arm64/arm64/gicv5_acpi.c
+++ b/sys/arm64/arm64/gicv5_acpi.c
@@ -28,11 +28,12 @@
 #include <sys/types.h>
 #include <sys/systm.h>
 #include <sys/bus.h>
+#include <sys/cpuset.h>
 #include <sys/kernel.h>
 #include <sys/malloc.h>
 #include <sys/module.h>
 #include <sys/rman.h>
-#include <sys/cpuset.h>
+#include <sys/smp.h>
 
 #include <machine/intr.h>
 #include <machine/resource.h>
@@ -254,14 +255,24 @@ madt_process_gicc(ACPI_SUBTABLE_HEADER *entry, void *arg)
 {
 	struct process_gicc_args *gicc_args;
 	ACPI_MADT_GENERIC_INTERRUPT *gicc;
+	struct pcpu *pcpu;
+	int cpu;
 
 	gicc_args = (struct process_gicc_args *)arg;
 
 	if (entry->Type == ACPI_MADT_TYPE_GENERIC_INTERRUPT) {
 		gicc = (ACPI_MADT_GENERIC_INTERRUPT *)entry;
 
-		if (gicc->IrsId == gicc_args->irs_id)
-			CPU_SET(gicc->CpuInterfaceNumber, &gicc_args->cpuset);
+		if (gicc->IrsId == gicc_args->irs_id) {
+			/* Find CPU ID from gicc->ArmMpidr */
+			CPU_FOREACH(cpu) {
+				pcpu = pcpu_find(cpu);
+				if (pcpu->pc_mpidr != gicc->ArmMpidr)
+					continue;
+				CPU_SET(pcpu->pc_cpuid, &gicc_args->cpuset);
+				break;
+			}
+		}
 	}
 }
 

From nobody Mon Oct  5 14:16:55 2026
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 4hz1fj170jz6jw5x
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 14:17:01 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz1fh6c5Pz3GNv
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:17:00 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791209820;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=j5ayKOOhvrjKNcG3866DFEuDzl3ueRcN3AMY+TC4WNo=;
	b=AyJRY4igZkBNMnkOXvC/A4HQyOZcDdJTKwxFk82zr2BIqJWl0wxWA7277AVywVAZFPK0/K
	uXpsiWFipPZv4/twOqPwZOvrdAC+D7jPj86IMBQzSizVyab9qXT2C7kNIKWGLHlxS1wa9q
	bcwlRiLyqfAxxgrhzkQJwECbqml4dF10vFle5fYvgH0WDZRxVaBph3s+u2Hj0efB+xquTv
	FNZ7enNEC+xUpzqkf5srZqcJJYt/65XNS/LZP0L31objKhOFQUUKZVqWHN8Jpju8ftiQHg
	CwID/G2UIilD+oVzLPF9mbAVzW2vTToBFrrTt0Kmtt/1qposJgMm0d/eXXLscg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791209820;
	b=ypi8LXbH8N5uLGCMPyHKWcOyw9V7Bbh7oNcaE25/q7gP+tOvdAssefvSF2eenvjnauDYkL
	ajMAnrHC1ATcW5qMvAB7jjX9ONudD9jAIW58uxrATnQbl90VQqSmLxlV5TFkSGHOhF4Lfz
	ptU6b87cJK677RUmkBNhQjjh6qn+wyKgfOwSzP0FtB/Wu84l6/wDDe5qPn18iAxRPaugBg
	L/wu8IFYjcTtpqukvw9rpHiOpW2B9fvxg65f6AP7hFzDEnm6pYDuMqDtkoHsnS5AQyPHpH
	/FB/Xe2O/Utb37wbnI2qoLl16feduW46Y3vwtdeOX61kd5Vn/66pa4bK/LXLFw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791209820;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=j5ayKOOhvrjKNcG3866DFEuDzl3ueRcN3AMY+TC4WNo=;
	b=yN059/sb8NbyQW5ZQcMIZ7yqCn6SKX5/FkpzGUxj/X7ApLyRHaYYLrB+t+k3MgvOCSuAgB
	Wzr4pbEftKzSf2z2qEQPZihQWjYKWhglUmsmyftI4VGSrVVr8beDWBiy+9IO8VycD3JK7C
	wHjO19wfZwv9IaNdOmQDnMP3eh53K8CFSUg5ZoYEg3dKT2huW6wu7oriP0f0b2dB/WDi3N
	d9qiccDOQ0a1zFUW3XiFdnBiOxEPQ5wZme10pQ9M4ylbMXpJ3Z1ag4shoZQKLPlyMmiKlt
	XZLeErCgtyBvW/E4eO9e0jfdw/VXFXrehoKaUU6w3GRVVNWkn2ianJH+uTvpgA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz1fh4nr7zMw6
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:17:00 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 475fd
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 14:16:55 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Cc: Jose Luis Duran <jlduran@FreeBSD.org>
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: dcab58551115 - stable/14 - secure: Rearrange Makefile SRCS to match upstream Makefile.in
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/14
X-Git-Reftype: branch
X-Git-Commit: dcab58551115b2299e4b0f23e26fc0b763d7cf32
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 14:16:55 +0000
Message-Id: <6ac3b157.475fd.7aa07851@gitrepo.freebsd.org>

The branch stable/14 has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=dcab58551115b2299e4b0f23e26fc0b763d7cf32

commit dcab58551115b2299e4b0f23e26fc0b763d7cf32
Author:     Jose Luis Duran <jlduran@FreeBSD.org>
AuthorDate: 2025-04-17 18:56:00 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-05 14:14:44 +0000

    secure: Rearrange Makefile SRCS to match upstream Makefile.in
    
    SRCS entries are kept in the same order and with the same line breaks as
    upstream, to make comparison easier.
    
    No functional change intended.
    
    Reviewed by:    emaste
    Approved by:    emaste (mentor)
    Differential Revision:  https://reviews.freebsd.org/D49793
    
    (cherry picked from commit 9440aad19dca73fdd224b128ac2dc2e78191ff15)
---
 secure/lib/libssh/Makefile                | 23 ++++++++++++++++-------
 secure/libexec/sftp-server/Makefile       |  4 ++--
 secure/libexec/ssh-pkcs11-helper/Makefile |  2 +-
 secure/ssh.mk                             |  2 ++
 secure/usr.bin/scp/Makefile               |  2 +-
 secure/usr.bin/sftp/Makefile              |  3 +--
 secure/usr.bin/ssh-add/Makefile           |  2 +-
 7 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/secure/lib/libssh/Makefile b/secure/lib/libssh/Makefile
index 1917e0a58e31..0a95c401c52f 100644
--- a/secure/lib/libssh/Makefile
+++ b/secure/lib/libssh/Makefile
@@ -5,10 +5,22 @@
 LIB=	ssh
 PRIVATELIB=	true
 SHLIB_MAJOR=	5
-SRCS=	ssh_api.c ssherr.c \
-	sshbuf.c sshkey.c sshbuf-getput-basic.c \
-	sshbuf-misc.c sshbuf-getput-crypto.c krl.c bitmap.c
-SRCS+=	authfd.c authfile.c \
+
+LIBOPENSSH_SRCS=\
+	ssh_api.c \
+	ssherr.c \
+	sshbuf.c \
+	sshkey.c \
+	sshbuf-getput-basic.c \
+	sshbuf-misc.c \
+	sshbuf-getput-crypto.c \
+	krl.c \
+	bitmap.c
+
+# gss-genr.c should be in $SRCS but causes linking problems, so it is
+# compiled directly into sshd instead.
+SRCS=	${LIBOPENSSH_SRCS} \
+	authfd.c authfile.c \
 	canohost.c channels.c cipher.c cipher-aes.c cipher-aesctr.c \
 	cleanup.c \
 	compat.c fatal.c hostfile.c \
@@ -31,9 +43,6 @@ SRCS+=	ssh-sk-client.c
 
 PACKAGE=	ssh
 
-# gss-genr.c should be in $SRCS but causes linking problems, so it is
-# compiled directly into sshd instead.
-
 # Portability layer
 SRCS+=	bcrypt_pbkdf.c blowfish.c bsd-misc.c bsd-signal.c explicit_bzero.c \
 	fmt_scaled.c freezero.c glob.c \
diff --git a/secure/libexec/sftp-server/Makefile b/secure/libexec/sftp-server/Makefile
index 4aac86ac01bf..00570268ffe6 100644
--- a/secure/libexec/sftp-server/Makefile
+++ b/secure/libexec/sftp-server/Makefile
@@ -2,8 +2,8 @@
 .include <src.opts.mk>
 .include "${SRCTOP}/secure/ssh.mk"
 
-PROG=   sftp-server
-SRCS=   sftp-server.c sftp-common.c sftp-server-main.c
+PROG=	sftp-server
+SRCS=	sftp-common.c sftp-server.c sftp-server-main.c
 MAN=	sftp-server.8
 
 LIBADD=	ssh
diff --git a/secure/libexec/ssh-pkcs11-helper/Makefile b/secure/libexec/ssh-pkcs11-helper/Makefile
index 506697531965..34fb59381305 100644
--- a/secure/libexec/ssh-pkcs11-helper/Makefile
+++ b/secure/libexec/ssh-pkcs11-helper/Makefile
@@ -3,7 +3,7 @@
 .include "${SRCTOP}/secure/ssh.mk"
 
 PROG=	ssh-pkcs11-helper
-SRCS=	ssh-pkcs11.c ssh-pkcs11-helper.c
+SRCS=	ssh-pkcs11-helper.c ssh-pkcs11.c
 MAN=	ssh-pkcs11-helper.8
 
 LIBADD=	crypto ssh
diff --git a/secure/ssh.mk b/secure/ssh.mk
index f522e1a927fc..641343ac993a 100644
--- a/secure/ssh.mk
+++ b/secure/ssh.mk
@@ -4,6 +4,8 @@
 
 SSHDIR=		${SRCTOP}/crypto/openssh
 
+SFTP_CLIENT_SRCS=sftp-common.c sftp-client.c sftp-glob.c
+
 CFLAGS+= -I${SSHDIR} -include ssh_namespace.h
 
 .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no"
diff --git a/secure/usr.bin/scp/Makefile b/secure/usr.bin/scp/Makefile
index a8d5eac77397..2a79fa3773f8 100644
--- a/secure/usr.bin/scp/Makefile
+++ b/secure/usr.bin/scp/Makefile
@@ -3,7 +3,7 @@
 .include "${SRCTOP}/secure/ssh.mk"
 
 PROG=	scp
-SRCS=	scp.c sftp-common.c sftp-client.c sftp-glob.c progressmeter.c
+SRCS=	scp.c progressmeter.c $(SFTP_CLIENT_SRCS)
 PACKAGE=	ssh
 
 LIBADD=	ssh
diff --git a/secure/usr.bin/sftp/Makefile b/secure/usr.bin/sftp/Makefile
index 2f51bf524c6b..fe59af49f3ba 100644
--- a/secure/usr.bin/sftp/Makefile
+++ b/secure/usr.bin/sftp/Makefile
@@ -3,8 +3,7 @@
 .include "${SRCTOP}/secure/ssh.mk"
 
 PROG=	sftp
-SRCS=   sftp.c sftp-client.c sftp-common.c sftp-glob.c sftp-usergroup.c \
-	progressmeter.c
+SRCS=	sftp.c sftp-usergroup.c progressmeter.c $(SFTP_CLIENT_SRCS)
 PACKAGE=	ssh
 
 LIBADD=	ssh edit
diff --git a/secure/usr.bin/ssh-add/Makefile b/secure/usr.bin/ssh-add/Makefile
index ddde52130027..504c65ff043e 100644
--- a/secure/usr.bin/ssh-add/Makefile
+++ b/secure/usr.bin/ssh-add/Makefile
@@ -3,7 +3,7 @@
 .include "${SRCTOP}/secure/ssh.mk"
 
 PROG=	ssh-add
-SRCS+=	ssh-add.c ssh-sk-client.c
+SRCS=	ssh-add.c ssh-sk-client.c
 PACKAGE=	ssh
 
 LIBADD=	ssh

From nobody Mon Oct  5 14:37:53 2026
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 4hz26v2XP6z6jxpG
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 14:37:59 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz26v1ZM6z3JTM
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:37:59 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791211079;
	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=5qdCJ3CGEBvJ6YTqAdxhGWbgXNsZx9pqX3CUbMH9e1s=;
	b=eHqDnRGvjSmDiDC0mr64FCW0kWAItnqoigj/H0a9J5MYB5GncKh3tgjjyKcFo5gKrTEW2n
	LWY1/fNFIoz0yQMuxPV40SR/Z5j6ouktBXJ8sB2IPq/Bf+Fvuvw93NX6LCHii32trOom5a
	6fVog2oT40TDD+N7vxH7CGB/npCKrngH4Wiuj9oS1fS1JWxkffF/oxVn6Zl61kgxGz64un
	zSMgEmT0Lne1YG3WtqxHPtc+Bqkl9KHD+aBkLaGT30vXX/7TkSig1FDPS1ZHuAV5OpUZf4
	aVI9bbSLLIhMQP9xpvyrNhk6WQC97tlZmAZwVIcW6Nd2m3emdxbAt649u3SNfA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791211079;
	b=wlG2JBDY4qP6jRzQ81d1fTe9ipciIf4AC/dOIpRCUCgAnypO8gLtN+OM/4KkosKaQ1f6ui
	cJkG94P6awwDMyibFyXetvQ+5R8Njrt5B7HNu7tzNap1IP+ztXU8m/8P5+zmxnC3uhm2d6
	8Rs+5CoSOt5off5LYGGS/1o6r+pQoo/bXjqgOhob2N4r7JYTgiJMBxcv8oQJ+CypOIZWmm
	wiw2/7mZJFF58/pkFN6VpmVY+LqJxKmb30CXi2p0zlaa8UDdZW2Yi9dsFLgRGfFYE/skps
	Wn8TxFSmRG/SaL2gQ8jfxbvgV2s+qLFhxmoA8+XhWVQpTxma8boI+ixFNYfnzA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791211079;
	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=5qdCJ3CGEBvJ6YTqAdxhGWbgXNsZx9pqX3CUbMH9e1s=;
	b=q/R0nrxWzwRESiJkHrt2XLajZDQ87tbFb3uQWtUVqZtUttZybX/8U9NZTWaFQQG6x9StXg
	WjWBnAYamlLe/H9U1CS0dN/VtM0EygO/WfOorbPLEZ+BIrakq44gPjTVS7937euwdIS8uJ
	8HGHAQGtb/Rz9dEorijtUEXZZBOT7eSKVc2L7uLM1SR8CgL9xu7b0Wu/k1Z29LaOHrRsDF
	YhEz9FLSPMF9SzSTwYAuZgr3oEIDOXVr/JAZDoHmDEMbv7TMqL3DF2lFoQfdLbIEI6U1lh
	HbdzMbH5vIffyw5/hHYA1Y6mnlvnj3Xp3BG8VXV5sEnge0gSMgtLn4gwQ1Jdgg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz26v0F7JzNN7
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:37:59 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 46b77
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 14:37:53 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: 0dfc112ac722 - stable/14 - openssh: Remove residual blank line at start of Makefile
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/14
X-Git-Reftype: branch
X-Git-Commit: 0dfc112ac722b1f0437c198f6b58a2536e69be49
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 14:37:53 +0000
Message-Id: <6ac3b641.46b77.6ec6e7d8@gitrepo.freebsd.org>

The branch stable/14 has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=0dfc112ac722b1f0437c198f6b58a2536e69be49

commit 0dfc112ac722b1f0437c198f6b58a2536e69be49
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2026-10-05 14:35:54 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-05 14:37:30 +0000

    openssh: Remove residual blank line at start of Makefile
    
    This is part of commit e9ac41698b2f in main by imp@
---
 secure/usr.bin/scp/Makefile         | 1 -
 secure/usr.bin/sftp/Makefile        | 1 -
 secure/usr.bin/ssh-add/Makefile     | 1 -
 secure/usr.bin/ssh-agent/Makefile   | 1 -
 secure/usr.bin/ssh-keygen/Makefile  | 1 -
 secure/usr.bin/ssh-keyscan/Makefile | 1 -
 secure/usr.bin/ssh/Makefile         | 1 -
 secure/usr.bin/tests/Makefile       | 1 -
 secure/usr.sbin/Makefile            | 1 -
 secure/usr.sbin/Makefile.inc        | 1 -
 secure/usr.sbin/sshd/Makefile       | 1 -
 secure/usr.sbin/tests/Makefile      | 1 -
 12 files changed, 12 deletions(-)

diff --git a/secure/usr.bin/scp/Makefile b/secure/usr.bin/scp/Makefile
index 2a79fa3773f8..8d38d815d3fb 100644
--- a/secure/usr.bin/scp/Makefile
+++ b/secure/usr.bin/scp/Makefile
@@ -1,4 +1,3 @@
-
 .include <src.opts.mk>
 .include "${SRCTOP}/secure/ssh.mk"
 
diff --git a/secure/usr.bin/sftp/Makefile b/secure/usr.bin/sftp/Makefile
index fe59af49f3ba..cc13a86794c5 100644
--- a/secure/usr.bin/sftp/Makefile
+++ b/secure/usr.bin/sftp/Makefile
@@ -1,4 +1,3 @@
-
 .include <src.opts.mk>
 .include "${SRCTOP}/secure/ssh.mk"
 
diff --git a/secure/usr.bin/ssh-add/Makefile b/secure/usr.bin/ssh-add/Makefile
index 504c65ff043e..8de508bd6c12 100644
--- a/secure/usr.bin/ssh-add/Makefile
+++ b/secure/usr.bin/ssh-add/Makefile
@@ -1,4 +1,3 @@
-
 .include <src.opts.mk>
 .include "${SRCTOP}/secure/ssh.mk"
 
diff --git a/secure/usr.bin/ssh-agent/Makefile b/secure/usr.bin/ssh-agent/Makefile
index a96af6255b7e..06abc627fcd5 100644
--- a/secure/usr.bin/ssh-agent/Makefile
+++ b/secure/usr.bin/ssh-agent/Makefile
@@ -1,4 +1,3 @@
-
 .include <src.opts.mk>
 .include "${SRCTOP}/secure/ssh.mk"
 
diff --git a/secure/usr.bin/ssh-keygen/Makefile b/secure/usr.bin/ssh-keygen/Makefile
index e15b7aafbb45..89e61e68ee55 100644
--- a/secure/usr.bin/ssh-keygen/Makefile
+++ b/secure/usr.bin/ssh-keygen/Makefile
@@ -1,4 +1,3 @@
-
 .include <src.opts.mk>
 .include "${SRCTOP}/secure/ssh.mk"
 
diff --git a/secure/usr.bin/ssh-keyscan/Makefile b/secure/usr.bin/ssh-keyscan/Makefile
index 72057781a286..baa7f54b048d 100644
--- a/secure/usr.bin/ssh-keyscan/Makefile
+++ b/secure/usr.bin/ssh-keyscan/Makefile
@@ -1,4 +1,3 @@
-
 .include <src.opts.mk>
 .include "${SRCTOP}/secure/ssh.mk"
 
diff --git a/secure/usr.bin/ssh/Makefile b/secure/usr.bin/ssh/Makefile
index ad4b692c961c..df85f47d5975 100644
--- a/secure/usr.bin/ssh/Makefile
+++ b/secure/usr.bin/ssh/Makefile
@@ -1,4 +1,3 @@
-
 .include <src.opts.mk>
 .include "${SRCTOP}/secure/ssh.mk"
 
diff --git a/secure/usr.bin/tests/Makefile b/secure/usr.bin/tests/Makefile
index b8996030aafc..29b1b564beca 100644
--- a/secure/usr.bin/tests/Makefile
+++ b/secure/usr.bin/tests/Makefile
@@ -1,4 +1,3 @@
-
 .PATH:		${SRCTOP}/tests
 KYUAFILE=	yes
 
diff --git a/secure/usr.sbin/Makefile b/secure/usr.sbin/Makefile
index c0521b95cdb4..50b863096138 100644
--- a/secure/usr.sbin/Makefile
+++ b/secure/usr.sbin/Makefile
@@ -1,4 +1,3 @@
-
 .include <src.opts.mk>
 
 SUBDIR= 
diff --git a/secure/usr.sbin/Makefile.inc b/secure/usr.sbin/Makefile.inc
index 5c01baa093b7..b660f1cc6638 100644
--- a/secure/usr.sbin/Makefile.inc
+++ b/secure/usr.sbin/Makefile.inc
@@ -1,4 +1,3 @@
-
 BINDIR?=	/usr/sbin
 
 .include "../Makefile.inc"
diff --git a/secure/usr.sbin/sshd/Makefile b/secure/usr.sbin/sshd/Makefile
index f0a6105e83b6..23a053f27ae7 100644
--- a/secure/usr.sbin/sshd/Makefile
+++ b/secure/usr.sbin/sshd/Makefile
@@ -1,4 +1,3 @@
-
 .include <src.opts.mk>
 .include "${SRCTOP}/secure/ssh.mk"
 
diff --git a/secure/usr.sbin/tests/Makefile b/secure/usr.sbin/tests/Makefile
index b8996030aafc..29b1b564beca 100644
--- a/secure/usr.sbin/tests/Makefile
+++ b/secure/usr.sbin/tests/Makefile
@@ -1,4 +1,3 @@
-
 .PATH:		${SRCTOP}/tests
 KYUAFILE=	yes
 

From nobody Mon Oct  5 14:41:10 2026
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 4hz2BZ2RNMz6jy30
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 14:41:10 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz2BZ1Ptlz3Jpx
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:41:10 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791211270;
	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=9RpL40lqzUEGbqiBdkSM5L4EJ3mZwpu4lsJNCtawXTc=;
	b=jUCfpJ0QHvYLQYdt8LFHG0ToR2CfSLAK8RnqjGdOFHfRENZLbajudctF7z99cmHI26RAkY
	YNa2ShZJcVXOqq0xydI5xbWxtuhYwRKaJGZqyPpvXyL58ghkPsI6atwws3W2iL+9GTd8Tk
	z56ZyEoRjHThxXNa1RSQfzVVrMPmb7Q9SuICUq6XLVfY3sMezNBGsX5xdpwKlMlTa8jZnB
	YSR/L7aQkbGsmyUJ8SuyHfTNf+m5yd60THNFC+RN4Qb3R+xneCUiTQNuNOjwO8YKTGSWVh
	+LLMZe24ufVWHw4iAZsRbTS4rbuOvZAaw5+QhV6HmYZL9jpiYPsnAfgkJ+F+BQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791211270;
	b=SLcaMG5HFjcIprjMQlVzZYo8YOJWnjnWvTuBWg694UdLk+LWQvt2yZPenyXxTfwklNkI4v
	nlrCApDCHLnGtuEORwCn3OBLjnxkpL+gdlm5WIiSZevXFI+XsLSBSPpx2P2BmganCRJDKK
	VwROTxZ91wmY1EU8Xk1hwyk2dqekmR35+WwLBmCB5a8vjpWuUZpSgmgRZRK9d97vELDvt/
	6VasDMlOtHKut6DaDbv+jFp22WHwDtvXYswCine4+QAziHEe/rmxAX38Ji0ywAitjsn84V
	eHNMnf5ontfR2H4YUGZ/skvq73BnOsUsaGZpgf1oIGNr+fbFw8xCinl8JMLr4w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791211270;
	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=9RpL40lqzUEGbqiBdkSM5L4EJ3mZwpu4lsJNCtawXTc=;
	b=mgRy0tOCxHQIW3eXTq+wOLm3c7k+t0C2DxfDblxYRArv4dQxqWBGNNy3LyxL73zoH7rztN
	Nj/zl7W0JH+22cfBqgwspl4HrlmGFXFkIGhcOL9mSIr5fz8oKYQOkULze2GhlPr8W9D3r0
	5XO3cxZKY3Dgz55q8T6edduxezisMO7TeOXqrtdsxrRacrLj0eb4fVFLwuokzKOPRQwnWg
	+mPgdYgG4cKm9P+2fjsvFOrrC5j7K4ixR8IEMMrGnKTVeibKOBcsyx+MzhNXY7MP1blRjF
	i/WRg6MwnkVjBOrxd+WMfgWdz1r7R4UZECeNIG6C7duJ2MsYvJ+Tt7ZWdEZYew==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz2BZ0QzBzNNM
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:41:10 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 19a05
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 14:41:10 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: b690ed49ffd0 - stable/14 - openssh: Add reference for another local patch
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/14
X-Git-Reftype: branch
X-Git-Commit: b690ed49ffd0d7467789badb742e977aff1406b7
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 14:41:10 +0000
Message-Id: <6ac3b706.19a05.3b812171@gitrepo.freebsd.org>

The branch stable/14 has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=b690ed49ffd0d7467789badb742e977aff1406b7

commit b690ed49ffd0d7467789badb742e977aff1406b7
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2026-05-15 16:16:45 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-05 14:40:50 +0000

    openssh: Add reference for another local patch
    
    A bug fix was committed locally and submitted upstream.  Document it in
    our upgrade instructions, as these sometimes take a long time before
    getting merged.
    
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit 6531070132b0210aaaeb08c0dc93cb272bed348e)
    (cherry picked from commit 14d6926293569048d2d04f6e5a13d80f192ad99e)
---
 crypto/openssh/FREEBSD-upgrade | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/crypto/openssh/FREEBSD-upgrade b/crypto/openssh/FREEBSD-upgrade
index 815c11a8f8ca..6987956ce163 100644
--- a/crypto/openssh/FREEBSD-upgrade
+++ b/crypto/openssh/FREEBSD-upgrade
@@ -188,6 +188,11 @@
    internet protocols are supported by the kernel before trying to
    connect to the target host.  This avoids confusing the user with
    spurious error messages.
+
+12) EVP_CIPHER_CTX_get_iv() stub bugfix
+
+   Bug fix submitted upstream at
+   https://bugzilla.mindrot.org/show_bug.cgi?id=3873
 
 
 This port was brought to you by (in no particular order) DARPA, NAI

From nobody Mon Oct  5 14:41:11 2026
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 4hz2Bb4t0Rz6jy3T
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 14:41:11 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz2Bb2BV9z3JnC
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:41:11 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791211271;
	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=pu8xdD/ME3LlOaBh3LxzTmzrddznU7ORHovzdC51dmM=;
	b=AC4dfwcgzg4mXGzNYsMrOnx5jKjW99nZGBAX0VWzeURyOqBISIX/04qmF7wN2mfBZdaEJL
	ZU76MC0lRsXf6hzG5Qn/G1fgS2qmBAmJAUoB9ovZGSbvwDof7xc1WszU3wDJEekVwVrZ0O
	UIY+n1b7OcGYHD53ELEWY/seQVNNqluj1mu+IozOs02mJcKA+OI7FIf025cmQE6J1YIFZo
	TPGgMcXk3p61bR53ySYJeGL+zReGMiX8wP4m0wssMYwQgRquM2lVxOdfrsrZaYNPWkuDkc
	zREpbaAKUf8414ehnFdvZmH49OqzpSTY8grQxagGjA59JyhjHlxBaYIxGYTzhg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791211271;
	b=e81eyWS3T17cScKB4SNxqrHr0EWkbszXqWsCQjdiQKrA21KB1yZE7LpcseTWFaAvsN7Bzr
	wkb/7MZu3Jr9ns9KkjxtUUKTXUxUzx03lgVxB6LFjjP4VmVfng2WNlHd02VcIPHTrhmIGU
	+QgjSpLhIwEPCKQbJXd+x4BgDwnvjj9BIImnVgKiCumI/ep8siNFLcIYc8XL7EVQjKSO8q
	gKIN7AoQYCZdkvvOLnS3CrQDRN0UI/tYMvu0gCM0msh8UqgELQ9Q8H3ttJCxi7rRtWb9o1
	GkwP1jwKCeJyyVIVqoR9/CEGcqOjDQBduzvyluG/RlqTRLnBwZ+pam315QKdjw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791211271;
	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=pu8xdD/ME3LlOaBh3LxzTmzrddznU7ORHovzdC51dmM=;
	b=vKt/93zYRWkh24XNDRCHYHINKkJHYrwmBaFJ85Gezd6Frs8Wc2Vw/QqhJ6AWjS3FCy5O5X
	Tg1bUEeg0Fm9pDfJiDnNdIrRNa7GRvPqfKD4Xvu5siUTevUWln1Oi/9w1M8Eba0ktb5VU6
	m10wuBksDXOwAwDczA5BmP3NHGEIMSg5cN2Z8zWWJdHjG6YYTYsmVi+CyxCoUYBp7/Dwcc
	nsr0D2fpbFadCviracGAY+/zMnxTqD4DgtAhZW4aE5a91JtJLvlhzJylo22SN9ioiHRXCI
	iGj2UumllwQzXhTEhFjJ4K0NQPa2KwR0EQCNf3hTYzITAz1ey0SNNnZIce4a/Q==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz2Bb19znzNjP
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:41:11 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 196a1
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 14:41:11 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: 2082f443dda8 - stable/14 - openssh: Add date bump command to FREEBSD-upgrade instructions
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/14
X-Git-Reftype: branch
X-Git-Commit: 2082f443dda8f7f2bbe21ddee7c88af809348c78
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 14:41:11 +0000
Message-Id: <6ac3b707.196a1.6ae89fb2@gitrepo.freebsd.org>

The branch stable/14 has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=2082f443dda8f7f2bbe21ddee7c88af809348c78

commit 2082f443dda8f7f2bbe21ddee7c88af809348c78
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2026-08-24 01:36:25 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-05 14:40:50 +0000

    openssh: Add date bump command to FREEBSD-upgrade instructions
    
    Provide a convenient in-place sed edit command to update the FreeBSD
    VersionAddendum dates with today's date.
    
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit 0ec81f6a531bf7b3b06e869c99295f3d4ab9ed8e)
    (cherry picked from commit 2ba5b9da2be10261c383035bef932cd37d52f903)
---
 crypto/openssh/FREEBSD-upgrade | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/crypto/openssh/FREEBSD-upgrade b/crypto/openssh/FREEBSD-upgrade
index 6987956ce163..f536ade84788 100644
--- a/crypto/openssh/FREEBSD-upgrade
+++ b/crypto/openssh/FREEBSD-upgrade
@@ -69,6 +69,11 @@
     version.h, and update the default value in sshd_config and
     sshd_config.5.
 
+    $ sed -E -i "" "s/FreeBSD-202[0-9]{5}/FreeBSD-$(date +%Y%m%d)/" \
+        crypto/openssh/sshd_config \
+        crypto/openssh/sshd_config.5 \
+        crypto/openssh/version.h
+
 11) Diff against the vendor branch:
 
     $ git diff --diff-filter=M vendor/openssh/X.YpZ HEAD:crypto/openssh

From nobody Mon Oct  5 14:44:21 2026
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 4hz2GG6GD5z6jyP2;
	Mon, 05 Oct 2026 14:44:22 +0000 (UTC)
	(envelope-from jhb@FreeBSD.org)
Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83])
	(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 "smtp.freebsd.org", Issuer "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz2GG5hHVz3KkB;
	Mon, 05 Oct 2026 14:44:22 +0000 (UTC)
	(envelope-from jhb@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791211462;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=ABjxIgOPlZAqo4VaUuRiMJ1EggrKNKMjjx6m4A9/8U4=;
	b=gdj38Rof2hehH+VbY57broFSmN+4GQXO2hcKwAU3DqpNcLIOx/ULRsOBrzCxzQwSx0CfaQ
	VSUy0OiOcq99OduzcTrs2H25tip9vttlWTfTqWxfSoinseyt+QZU4RqiDV5GJwx688ujl6
	FoB4enrNJjAmOWzZdP+US4wkSf7EHJWceYf6tKghpJTEv3BKLBG9NgrsVACZfaALqONtOG
	GUPs96XdWeNzPs40Y+5xpLUUSNGaGTmB/wVpLH9a7vN03+khHIsZVJz92K2OwZ9xRkms3f
	ochEp//XfablfNQssnlke6134l836wMlr2QjL7RcP59YKRgmtQPHD2uoVd4oig==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791211462;
	b=wgvzfNi/XJvayi8K2gam5hdEe0+Z5A889ZRZkp8lC7bJi3LxjNXt6EZJTins/yD1IQMory
	SxizgwLcknfLdZsATkONnA0kiTJnb9Bhw94WlHUNcOiZ1oNMH1DQxOmFave95tUXvCCL89
	wlIRcxLTU9S7SW6wG6IUQ38hVvQc6e9UST7PsAoACR3IvHN/WkGihejM4hJNQ24xCAP6iN
	s6Lve69cV0Y0tsyMuhR7EgVCDXL5xk/22etILeZQvslK1SlV2BG+4wqzvnj1KjJiWVX0il
	qIs3vNnLk1Bbgys9P2q3xd2r1A/+55Y5bEy87ZkprdqVU2qiyOp9NQVKqr5veQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791211462;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=ABjxIgOPlZAqo4VaUuRiMJ1EggrKNKMjjx6m4A9/8U4=;
	b=PfuET31NAozNw+FxiLokuGB+ef9DpcCx+DEiUUbVSjuww6fUzTpFsZCPB3mraE6agkJ7V6
	OU92b4ndeZKr/UHcpZwlyi3FEUOLnMG2LCvfStllCA1jIY1ijYPt8L2S5qNX3m7BIt3JDu
	78gB8H0ITXAuVh5TskPxH5xVi2IoOHi/ic14dmW5jRxrvklz6b3hrzxcTjlskuwCzQvMXq
	4Z3Mgrse7HjzmAaUTMtxsjzOUaczBspszZOPLxOs3mb8LlS+Odocp2RbvgECHNhigMmexf
	vLRT87bt16HUvkm3zT/ozlh92uw3tygoLPZZWLaEKwEKqVfEEgjlSyfsKJ+dxg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from [IPV6:2601:5cc:4402:82e0:5818:5068:f2b1:7f58] (unknown [IPv6:2601:5cc:4402:82e0:5818:5068:f2b1:7f58])
	(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
	 key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
	(Client did not present a certificate)
	(Authenticated sender: jhb)
	by smtp.freebsd.org (Postfix) with ESMTPSA id 4hz2GG38rCzZmK;
	Mon, 05 Oct 2026 14:44:22 +0000 (UTC)
	(envelope-from jhb@FreeBSD.org)
Message-ID: <0d4a78d6-0d67-4fa6-aaa4-4dfc19858f72@FreeBSD.org>
Date: Mon, 5 Oct 2026 10:44:21 -0400
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: git: 32137c41065c - main - sound: Retire the version constants
Content-Language: en-US
To: Jason Harmening <jason.harmening@gmail.com>
Cc: Christos Margiolis <christos@freebsd.org>, src-committers@freebsd.org,
 dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org
References: <6ab2bc22.412bd.10bb456f@gitrepo.freebsd.org>
 <CAM=8qam9LOk06mdhfXPrCvRfEZr_gPqie-FRaSr3T_Ak3-BPYw@mail.gmail.com>
 <2df20868-4983-4169-a94e-da6adf2fb3ea@FreeBSD.org>
 <CAM=8qaneX8MpWWJKEE3hiE8v6Zk9Z+2DovZyQvpYesnAv64Ktw@mail.gmail.com>
 <DLOBW3GYVE9P.1VA7OO17Q4YZF@freebsd.org>
 <CAM=8qamv5_0Cp84edsDFmaHQ+1JNUFBNcjs2w1=gUtSf2VbtbA@mail.gmail.com>
 <bd6dc971-bb19-4966-ab1b-e1b80500f6c7@FreeBSD.org>
 <CAM=8qa=qJHN-AKoJwLRME6g7wfnbgo64n7Zb_0_azyPCcckw+Q@mail.gmail.com>
 <6280fdf4-0254-4953-b948-b6bac7796f80@FreeBSD.org>
 <CAM=8qa=C5OxKV7ZADVrS6D1opiYgnN=wq8nQHVG1OkAUGC1+=w@mail.gmail.com>
 <8ecda432-8a6f-46b3-b4f3-2a5761404b59@FreeBSD.org>
 <CAM=8qak-VHKN7Os69R8qAZy6xLuTTBfdq9oHWdSMq_tOc_o+sQ@mail.gmail.com>
From: John Baldwin <jhb@FreeBSD.org>
In-Reply-To: <CAM=8qak-VHKN7Os69R8qAZy6xLuTTBfdq9oHWdSMq_tOc_o+sQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 10/3/26 11:48, Jason Harmening wrote:
> On Thu, Oct 1, 2026 at 4:08 PM John Baldwin <jhb@freebsd.org> wrote:
> 
> <snip>
> 
> 
>> Hmm, I guess the trick is what counts as gratuitous which is fairly
>> subjective.  The policy I've tried to follow when refactoring APIs used
>>
> 
> I don't think it's quite so subjective.  If a breaking change doesn't have
> a clear benefit (e.g., improved functionality/ease of debugging, reduced
> maintenance burden, even renaming an offensively-named symbol), then
> there's a clear cost but no clear benefit, therefore it's gratuitous.
> Whether the breakage can be dealt with easily enough using #if[n]def isn't
> really the point.

The other possible factor to consider in your list of benefits is that
removing old/deprecated "ways of doing things" for code hygiene purposes
avoids future developers copying from the "old" way instead of the "new" way.

For this particular change of removing these constants I do find it a bit
borderline.  If someone does actually refactor the macros at some point to
largely remove the versions then I think that would be a more compelling
reason to remove these particular macros.

-- 
John Baldwin


From nobody Mon Oct  5 14:58:27 2026
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 4hz2Zd0qKTz6jynB
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 14:58:33 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz2Zd06BZz3NC3
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:58:33 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791212313;
	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=I6Q7yYVhEXoOZ5GHTGE2NPP9vPePYnolaMW1yRW37io=;
	b=wsWy9rrFbQRg8sHelG9bxa/tUzmluoFWURxBxh78+4zSh+4hk3urWhQU7fVAnVIReo/haN
	er6UY6PKAO/tXe7ul7BTN7LsvEomk1JYEYgQzUtoGAt3iuU8II+G9IjZosAWECIaHHuJNM
	5kH///VnN90aZZAcAHMbH5/RzAbWSXSk06h7TeKnpGq7BFkx1l7P3tdY4bf5bn3q/x7qzI
	07nGMNGJTOnB1TYoGVykOuA73yhijuDEn+uiDL2CqzFDWH9wmhkIU3yK/7FWD7s/vF5cR7
	iQYGsjTrH7eCMr2yFkC36Wag2Uh7yVI68S+ooiPN3NcWN4BjHe8Jg4T9WFU4ow==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791212313;
	b=VlPHLDzFfGFxylAo1LtaOYm8AFDHhqsZCRDEy03IG1erbbUqTPgq+3jKgP2Zn9ZFeHSPYs
	sjg2EnoDQPgv2RtC/48eWB9Q6LL8zpoDH1DhwAa7wyxxXxzDXvUr12IH7dvv84Th2V5aUe
	HG8EBnWVW1gWeBUNCBoSCMdkorZtzXHifN0b87RK3GQXPCmPMcEeME6F5/lVVvRQEuI6tQ
	iWnlR3PQutrXDTaf39ZbxWpq7DNeCVjn5Ex+gJff8RLZ0/e0WIyK+FO5pBx1uOLskQux/I
	yubGs3DsJyE2wDGfv5n0a6VSaKPR6bxzUbxLFLxHhviSQdmiWu0wfneb/ufIOA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791212313;
	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=I6Q7yYVhEXoOZ5GHTGE2NPP9vPePYnolaMW1yRW37io=;
	b=Vljn7hrFZRtIV8opbWLQ3/uG7yLckJ2J8GrVIg+LK4cWIaYbpbb2V9uJ9AWX8hL0M4kaq4
	LS57B6FtfbUSR+s+xVclNiIYzbP4ifaKMR+Yn63TudpaOeS/Hzsq41FfqEwnYE9VnkPuCZ
	j8OC0zMbTtNN0/24+xBRCMVXG4ZVakne6mXMpCr3DUkRFQNDTC9g8oGcTs+qIY/9PS4RrD
	mVs7lU3Go97ShiW2tNqEOOiW4tCDQvapegCiPjQ9Wz4/SPWMBbra08B8x7MjYUATf/Q8wO
	nyuEfkRQZwwhpx6QpsDnKbFlwVPdSzoWxd2GYpUjnCBkwkrrplTW/rpzXmyjOQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz2Zc5swmzPP1
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 14:58:32 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18a6c
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 14:58:27 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Andrew Gallatin <gallatin@FreeBSD.org>
Subject: git: 16c787fbabb8 - main - arm64: Elide coherent busdma maps
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: gallatin
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 16c787fbabb8077df1af3bd3baaddf3b4c0dd8e8
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 14:58:27 +0000
Message-Id: <6ac3bb13.18a6c.446a00b1@gitrepo.freebsd.org>

The branch main has been updated by gallatin:

URL: https://cgit.FreeBSD.org/src/commit/?id=16c787fbabb8077df1af3bd3baaddf3b4c0dd8e8

commit 16c787fbabb8077df1af3bd3baaddf3b4c0dd8e8
Author:     Andrew Gallatin <gallatin@FreeBSD.org>
AuthorDate: 2026-10-05 14:56:10 +0000
Commit:     Andrew Gallatin <gallatin@FreeBSD.org>
CommitDate: 2026-10-05 14:56:10 +0000

    arm64: Elide coherent busdma maps
    
    Avoid allocating per-transfer maps for coherent tags that cannot
    bounce. Retain maps for cache synchronization, CCA realms, and KMSAN.
    These un-used maps carry with them memory and cache miss overheads.
    
    Reviewed by: andrew
    Differential Revision: https://reviews.freebsd.org/D60098
    Sponsored by: Netflix
---
 sys/arm64/arm64/busdma_bounce.c | 80 +++++++++++++++++++++++++++++++++--------
 sys/arm64/include/bus_dma.h     | 12 ++++---
 2 files changed, 73 insertions(+), 19 deletions(-)

diff --git a/sys/arm64/arm64/busdma_bounce.c b/sys/arm64/arm64/busdma_bounce.c
index 7cf62061d56a..49587b5f4b39 100644
--- a/sys/arm64/arm64/busdma_bounce.c
+++ b/sys/arm64/arm64/busdma_bounce.c
@@ -69,6 +69,7 @@ enum {
 	BF_KMEM_ALLOC_CONTIG	= 0x08,
 	BF_KMEM_ALLOC		= BF_KMEM_ALLOC_PAGES | BF_KMEM_ALLOC_CONTIG,
 	BF_COHERENT		= 0x10,
+	BF_FORCE_MAP		= 0x20,
 };
 
 struct bounce_page;
@@ -115,6 +116,10 @@ struct bus_dmamap {
 	struct sync_list	slist[];
 };
 
+static struct bus_dmamap nobounce_dmamap = {
+	.flags = DMAMAP_COHERENT,
+};
+
 static bool _bus_dmamap_pagesneeded(bus_dma_tag_t dmat, bus_dmamap_t map,
     vm_paddr_t buf, bus_size_t buflen, int *pagesneeded);
 static void _bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map,
@@ -278,6 +283,11 @@ bounce_bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment,
 	newtag->map_count = 0;
 	newtag->segments = NULL;
 
+#ifdef KMSAN
+	/* KMSAN stores the memory descriptor in the map. */
+	newtag->bounce_flags |= BF_FORCE_MAP;
+#endif
+
 	if ((flags & BUS_DMA_COHERENT) != 0) {
 		newtag->bounce_flags |= BF_COHERENT;
 	}
@@ -412,6 +422,12 @@ bounce_bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp)
 		}
 	}
 
+	if ((dmat->bounce_flags &
+	    (BF_COULD_BOUNCE | BF_COHERENT | BF_FORCE_MAP)) == BF_COHERENT &&
+	    !in_realm()) {
+		*mapp = NULL;
+		goto out;
+	}
 	*mapp = alloc_dmamap(dmat, M_NOWAIT);
 	if (*mapp == NULL) {
 		CTR3(KTR_BUSDMA, "%s: tag %p error %d",
@@ -459,9 +475,11 @@ bounce_bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp)
 	}
 	bz->map_count++;
 
+out:
 	if (error == 0) {
 		dmat->map_count++;
-		if ((dmat->bounce_flags & BF_COHERENT) != 0)
+		if (*mapp != NULL &&
+		    (dmat->bounce_flags & BF_COHERENT) != 0)
 			(*mapp)->flags |= DMAMAP_COHERENT;
 	} else {
 		free(*mapp, M_DEVBUF);
@@ -479,17 +497,19 @@ static int
 bounce_bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
 {
 
-	/* Check we are destroying the correct map type */
-	if ((map->flags & DMAMAP_FROM_DMAMEM) != 0)
-		panic("bounce_bus_dmamap_destroy: Invalid map freed\n");
-
-	if (STAILQ_FIRST(&map->bpages) != NULL || map->sync_count != 0) {
-		CTR3(KTR_BUSDMA, "%s: tag %p error %d", __func__, dmat, EBUSY);
-		return (EBUSY);
+	if (map != NULL && map != &nobounce_dmamap) {
+		if ((map->flags & DMAMAP_FROM_DMAMEM) != 0)
+			panic("bounce_bus_dmamap_destroy: Invalid map freed\n");
+		if (STAILQ_FIRST(&map->bpages) != NULL ||
+		    map->sync_count != 0) {
+			CTR3(KTR_BUSDMA, "%s: tag %p error %d", __func__,
+			    dmat, EBUSY);
+			return (EBUSY);
+		}
+		if (dmat->bounce_zone != NULL)
+			dmat->bounce_zone->map_count--;
+		free(map, M_DEVBUF);
 	}
-	if (dmat->bounce_zone)
-		dmat->bounce_zone->map_count--;
-	free(map, M_DEVBUF);
 	dmat->map_count--;
 	CTR2(KTR_BUSDMA, "%s: tag %p error 0", __func__, dmat);
 	return (0);
@@ -751,6 +771,20 @@ bounce_bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map,
 	if (segs == NULL)
 		segs = dmat->segments;
 
+	if (map == NULL) {
+		KASSERT((dmat->bounce_flags &
+		    (BF_COULD_BOUNCE | BF_COHERENT | BF_FORCE_MAP)) ==
+		    BF_COHERENT && !in_realm(),
+		    ("%s: invalid NULL map for tag %p", __func__, dmat));
+		map = &nobounce_dmamap;
+		if (!_bus_dmamap_addsegs(dmat, map, buf, buflen, segs, segp)) {
+			bus_dmamap_unload(dmat, map);
+			return (EFBIG); /* XXX better return value here? */
+		}
+		return (0);
+	}
+	sl = map->slist + map->sync_count - 1;
+
 	if (might_bounce(dmat, map, (bus_addr_t)buf, buflen)) {
 		_bus_dmamap_count_phys(dmat, map, buf, buflen, flags);
 		if (map->pagesneeded != 0) {
@@ -760,7 +794,6 @@ bounce_bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map,
 		}
 	}
 
-	sl = map->slist + map->sync_count - 1;
 	sl_end = 0;
 
 	while (buflen > 0) {
@@ -831,6 +864,17 @@ bounce_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
 	char *kvaddr, *vaddr, *sl_vend;
 	int error;
 
+	if (map == NULL) {
+		KASSERT((dmat->bounce_flags &
+		    (BF_COULD_BOUNCE | BF_COHERENT | BF_FORCE_MAP)) ==
+		    BF_COHERENT && !in_realm(),
+		    ("%s: invalid NULL map for tag %p", __func__, dmat));
+		map = &nobounce_dmamap;
+		sl = NULL;
+	} else {
+		sl = map->slist + map->sync_count - 1;
+	}
+
 	KASSERT((map->flags & DMAMAP_FROM_DMAMEM) != 0 ||
 	    dmat->common.alignment <= PAGE_SIZE,
 	    ("loading user buffer with alignment bigger than PAGE_SIZE is not "
@@ -839,7 +883,7 @@ bounce_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
 	if (segs == NULL)
 		segs = dmat->segments;
 
-	if (flags & BUS_DMA_LOAD_MBUF)
+	if ((flags & BUS_DMA_LOAD_MBUF) != 0 && map != &nobounce_dmamap)
 		map->flags |= DMAMAP_MBUF;
 
 	if (might_bounce(dmat, map, (bus_addr_t)buf, buflen)) {
@@ -856,7 +900,6 @@ bounce_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
 	 * continuous segments first and then pass these segment into
 	 * load loop.
 	 */
-	sl = map->slist + map->sync_count - 1;
 	vaddr = buf;
 	sl_pend = 0;
 	sl_vend = NULL;
@@ -960,6 +1003,9 @@ bounce_bus_dmamap_complete(bus_dma_tag_t dmat, bus_dmamap_t map,
 static void
 bounce_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
 {
+	if (map == NULL || map == &nobounce_dmamap)
+		return;
+
 	free_bounce_pages(dmat, map);
 	map->sync_count = 0;
 	map->flags &= ~DMAMAP_MBUF;
@@ -1057,6 +1103,8 @@ bounce_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map,
 		 */
 		dsb(sy);
 	}
+	if (map == NULL)
+		goto out;
 
 	if ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) {
 		CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x op 0x%x "
@@ -1127,6 +1175,7 @@ bounce_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map,
 			dma_dcache_sync(sl, op);
 	}
 
+out:
 	if ((op & (BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE)) != 0) {
 		/*
 		 * Wait for the bcopy to complete before any DMA operations.
@@ -1134,7 +1183,8 @@ bounce_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map,
 		dsb(sy);
 	}
 
-	kmsan_bus_dmamap_sync(&map->kmsan_mem, op);
+	if (map != NULL)
+		kmsan_bus_dmamap_sync(&map->kmsan_mem, op);
 }
 
 #ifdef KMSAN
diff --git a/sys/arm64/include/bus_dma.h b/sys/arm64/include/bus_dma.h
index d9c37eb2641b..6dc92c87f6eb 100644
--- a/sys/arm64/include/bus_dma.h
+++ b/sys/arm64/include/bus_dma.h
@@ -81,8 +81,10 @@ bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
 {
 	struct bus_dma_tag_common *tc;
 
-	tc = (struct bus_dma_tag_common *)dmat;
-	tc->impl->map_unload(dmat, map);
+	if (map != NULL) {
+		tc = (struct bus_dma_tag_common *)dmat;
+		tc->impl->map_unload(dmat, map);
+	}
 }
 
 static inline void
@@ -135,8 +137,10 @@ _bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
 {
 	struct bus_dma_tag_common *tc;
 
-	tc = (struct bus_dma_tag_common *)dmat;
-	tc->impl->map_waitok(dmat, map, mem, callback, callback_arg);
+	if (map != NULL) {
+		tc = (struct bus_dma_tag_common *)dmat;
+		tc->impl->map_waitok(dmat, map, mem, callback, callback_arg);
+	}
 }
 
 static inline bus_dma_segment_t *

From nobody Mon Oct  5 15:19:05 2026
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 4hz32Q6MbDz6k1nT
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 15:19:10 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz32Q4rtnz3R5k
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 15:19:10 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791213550;
	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=FODi7qRtzInxvJgEQZ7A3u43/BXEMWiWQvbv/SK3VCA=;
	b=F/yiJl77oNWdxt9gk6izwtGs/+NfIHiSi5FxV35PxbyaEykzl4ym9CI/9xWe37faBUmaAZ
	rBgglsHbd43+X6uA34rUqVevWT/ka71JASomn04bHC8ZtI3w5rbndL0bgxSE+fJWcyUDqO
	AcC7KyzmqP/CDWnMkp7vlMnoqK1LYWNp/RLHeZ+SsEVppdR4qtNws1/kPolEgmc8MkvDhZ
	BHKCKwH3X6F6f8QNujNlxrwnyIQhZev//EtWg95qP7a9tAp5YwzB9H5i3qf8rY27kjyhMa
	58Cf3uY07E/hx/oWJxFCGAybil00/CSbim67YeCwkcbU6mlsp86OnT6AM061aA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791213550;
	b=HXGBExoO/SnsoBfs0ShpLZbm3x1pc5gtC17lscBdfYkJuZC9MWIW/AASIaJGMoxuDKVfUY
	sLkUZnRs+oFoCuZe5iBlrY2UBx0ZeAUV5TsQ6l83FO49Bz17Dk6TydtzYrtWXWG+gv/wYp
	mcAHD3tHw4OtSebaOujzRAcvY5otrw9dBTyYYhoce/38SJOWP8I1/OH9JXKWsZ3uzZgP37
	ov6Rh2gdh39tEDeq2/z6ZKffhkRYnN4YV82diD9FMWrNEWdQFeQ04qswXORAlLCrce0XP6
	yfnjwbzXHuzaNBmHxnpJhInicmd50kD1YQEFwsJGVZXTVJvij1+f0AlN8Llstw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791213550;
	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=FODi7qRtzInxvJgEQZ7A3u43/BXEMWiWQvbv/SK3VCA=;
	b=HZ1REsMWUVRak+XuY3zuvzSEqh92mTpBlmMsOncHcW2tEoC0lBGs8m9p4kfnTxmu5Susx4
	vA4ZbehV1pPpbvd1e9c3lqflXW6t8BPWZShFm+QMizoDhCcoaHra1KQiTPwQyqzD6e1hYn
	AWNXFThi8PhnsydmKS5jBzILXpIY0YWdJg7lcVuiL4GVVc9XPrakckEfEen6fJWA0NYEXy
	wHWcr5Km/EqT4bx+MVAqTVsFIl17MLNJv/aO6vLdZiVPf5aLoF/UiaJjnQLAOlCr8y2Mk0
	BvjYBCRFil2ShF0CIbAF9bvzTHMfUqUtvMQ95C1Zvyyl/Kic5hjccXbA1j0J5g==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz32Q3gNxzPl8
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 15:19:10 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 1ca4a
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 15:19:05 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: R. Christian McDonald <rcm@FreeBSD.org>
Subject: git: 4a0ec469934a - main - iflib: Do not ring the transmit doorbell when nothing is pending
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: rcm
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 4a0ec469934a5de60b9b540689703a698ac44105
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 15:19:05 +0000
Message-Id: <6ac3bfe9.1ca4a.1d0623d2@gitrepo.freebsd.org>

The branch main has been updated by rcm:

URL: https://cgit.FreeBSD.org/src/commit/?id=4a0ec469934a5de60b9b540689703a698ac44105

commit 4a0ec469934a5de60b9b540689703a698ac44105
Author:     R. Christian McDonald <rcm@FreeBSD.org>
AuthorDate: 2026-10-05 15:17:13 +0000
Commit:     R. Christian McDonald <rcm@FreeBSD.org>
CommitDate: 2026-10-05 15:19:01 +0000

    iflib: Do not ring the transmit doorbell when nothing is pending
    
    For a lightly used ring iflib_txd_db_check() may defer zero descriptors,
    so its "pending >= limit" test is true even when nothing has been queued
    since the last doorbell.  iflib_txq_drain() calls it before, inside and
    after its loop, so a sender that drains its own packet wrote the tail
    register three times per packet, twice with the value the hardware
    already had.
    
    The log of 81be655266fa ("iflib: ensure that tx interrupts enabled and
    cleanups") calls skipping the doorbell when db_pending is zero "an
    obvious missing optimization"; the comparison against a limit of zero
    defeated it.  vmx(4) and mgb(4) have dropped such repeated requests in
    the driver since 2019.  Return early when nothing is pending.
    
    Reviewed by:            gallatin
    MFC after:              2 weeks
    Sponsored by:           Rubicon Communications, LLC ("Netgate")
    Differential Revision:  https://reviews.freebsd.org/D60290
---
 sys/net/iflib.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/sys/net/iflib.c b/sys/net/iflib.c
index c2e70d946bf6..834cc37cb6ab 100644
--- a/sys/net/iflib.c
+++ b/sys/net/iflib.c
@@ -3457,6 +3457,13 @@ iflib_txd_db_check(iflib_txq_t txq, int ring)
 	if_ctx_t ctx = txq->ift_ctx;
 	qidx_t dbval, max;
 
+	/*
+	 * Nothing has been queued since the last doorbell.  The threshold is
+	 * zero for a lightly used ring, so the test below would not catch this.
+	 */
+	if (txq->ift_db_pending == 0)
+		return (false);
+
 	max = TXQ_MAX_DB_DEFERRED(txq, txq->ift_in_use);
 
 	/* force || threshold exceeded || at the edge of the ring */

From nobody Mon Oct  5 16:40:30 2026
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 4hz4rT1SXBz6n68d
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 16:40:41 +0000 (UTC)
	(envelope-from bogorodskiy@gmail.com)
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a])
	(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
	 key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256
	 client-signature RSA-PSS (2048 bits) client-digest SHA256)
	(Client CN "smtp.gmail.com", Issuer "WR4" (verified OK))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz4rS3L6Tz4P4N
	for <dev-commits-src-all@freebsd.org>; Mon, 05 Oct 2026 16:40:40 +0000 (UTC)
	(envelope-from bogorodskiy@gmail.com)
Authentication-Results: mx1.freebsd.org;
	dkim=pass header.d=gmail.com header.s=20251104 header.b=OHCuPdrz;
	spf=pass (mx1.freebsd.org: domain of bogorodskiy@gmail.com designates 2a00:1450:4864:20::62a as permitted sender) smtp.mailfrom=bogorodskiy@gmail.com;
	dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=freebsd.org (policy=none)
Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-c2e69aa07c3so290550066b.1
        for <dev-commits-src-all@freebsd.org>; Mon, 05 Oct 2026 09:40:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20251104; t=1791218434; x=1791823234; darn=freebsd.org;
        h=user-agent:in-reply-to:content-disposition:content-type
         :mime-version:references:message-id:subject:cc:to:from:date:sender
         :from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=d7gAXtvfjgNQEQZiKWXrbFjlAXPw+4NPXv4vSclJ2Qc=;
        b=OHCuPdrzct/1ZDrXhWfp/8gPIAr8j33Rz4jnU2ZNlU78amr4EXw6dGI8YmjIGPPawF
         hj0eEc8tsFAV9m/lZUjSQ5mFMJNeYbSwFhjdz1K9aXw8EMXJp6MOQwltCHRumG2Q1aX2
         PUJZ+5DtdqfmzATbO+zSyYcNmE+tiTSRkN6wkKjdxR2hC4LuGG8OSU4B/JODY4/iyeh+
         IxKzFjMPWQ/hRQoZEjtA7Sv5vOTQTTkodwbzr6hwmNS0q9UuCFhoQYJc3+gELDdkIYE8
         vjarJ1fucFGvxwih1kPpLafuo7UK49jPM5B1CQBvr9f7DIvAbmP47PHM4TmJxf5jRDL1
         sU4w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1791218434; x=1791823234;
        h=user-agent:in-reply-to:content-disposition:content-type
         :mime-version:references:message-id:subject:cc:to:from:date:sender
         :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=d7gAXtvfjgNQEQZiKWXrbFjlAXPw+4NPXv4vSclJ2Qc=;
        b=VhpDmzD3dl+ou6NTyK2Tj7ii6k4oU7r+UDbX5IPLj9s3iNezcUxvyQyP2tbIvir5+x
         VLM4L9vxFr/8tcVasvCyppE0KJl7/vveriyiIvo3RhfemWP9o8aQ16QD9zFeIbn8QMb0
         b1aRbqKz/3TrQizQzvml7sHkf/GLkMLWTgO6utlIQmr0ZVwkjPMvTsIFCTAMBNV0UqR6
         djSS7EFe+IzMNzpp57Ln935Z6Dnwf/5Dw4ZWMHaK3gAYsRxP1npS9Q6Cnwdsi6XK1UWk
         MOdlLTRccvc53h0Vz/ZoqC9UF+l3DDNYrzQkYT7tMASCPAFBpO6ZI4DcxYwPW/2mXrJC
         kRrA==
X-Forwarded-Encrypted: i=1; AKwUvBwrbOz1Y8RL+qhWTt7ox0/2V+pj+lFeuHr9J5vyNSCUNVVnAEBKXkxXXeACDBzEtZV7TGlO+FE7XoLIHUcQDb65Q8fi@freebsd.org
X-Gm-Message-State: AFuF++lGRdAFwTTeTbIu/dPUhv8UlSavXYLddtyjjZP5QeZmhezxs0fs
	PwaCf3NFfy0V9gzg84EekL1UT/TMbgSR1R37qasYCGGtpO+lK8omAt7v
X-Gm-Gg: AYBFou0PQJbIKTqqkkfXZHKFC4hPWCDH7bjNDoa0l/WQLp/3KOwI2QVDi+a4WjXFOWl
	iSPWjHnv5Diuj2c146uavJc5je3BsbJXAfgHODd4AOFwe36IX63vtEVGHAAHZmpR6LmA17hZoRI
	g87KPbotTdltMR39byS6GCxKBUq+P60ZJLV5XPJBDh7TJVfj+2mL4loD57ymshwoKS6TQnta9dZ
	i0YhxZK/tRexKDrCd607J5BfBxOcAcOTi9myIQIFxxaA80oHC6OtpgP2P+3raFYoCJVaCBOMSrj
	FCPXZGJhCCRCmWGiVboeWfZlNLrmwhjIhY/9mus7j4tGEHeUXidk5pV8tgwLWQnwznBsL5PqL29
	C27nDR141NMy6JNRDfaTtrM/ugTfUyQON8kI0JIy7tPGhOCUrj3Nd35K2xas+qHR/emfYk4brht
	+xLnINpOEvqJ81r26pPG0OAArA+PP6+Vr+Iq3pQkgbJjFAV2/uo5nFfh9vGUmrSF7Xffx6TM+Bh
	8i+8fvYPibN+ijjhipTC6a9kVakhzAz11sgC1DTSiPgL6iYfBrizNME7WbwsP8JnLdRz7hdgYH6
X-Received: by 2002:a17:907:d26:b0:c2e:4b90:3c55 with SMTP id a640c23a62f3a-c2e6e9ca0f3mr677812566b.5.1791218433803;
        Mon, 05 Oct 2026 09:40:33 -0700 (PDT)
Received: from tulp (2001-1c02-1a15-3000-2727-f7d1-9628-aa81.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:2727:f7d1:9628:aa81])
        by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c3156360e7esm101387466b.74.2026.10.05.09.40.33
        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
        Mon, 05 Oct 2026 09:40:33 -0700 (PDT)
Date: Mon, 5 Oct 2026 18:40:30 +0200
From: Roman Bogorodskiy <novel@freebsd.org>
To: Ed Maste <emaste@freebsd.org>
Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org,
	dev-commits-src-branches@freebsd.org
Subject: Re: git: 687a0d4a6b23 - stable/15 - OpenSSH: Update to 10.1p1
Message-ID: <asPS_vDkyXL9w1HW@tulp>
References: <6ac3acf8.452d9.8573132@gitrepo.freebsd.org>
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <6ac3acf8.452d9.8573132@gitrepo.freebsd.org>
User-Agent: Mutt/2.4.1 (2026-07-04)
X-Spamd-Bar: /
X-Spamd-Result: default: False [0.40 / 15.00];
	MID_RHS_NOT_FQDN(0.50)[];
	FORGED_SENDER(0.30)[novel@freebsd.org,bogorodskiy@gmail.com];
	R_DKIM_ALLOW(-0.20)[gmail.com:s=20251104];
	R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4864::/56];
	MIME_GOOD(-0.10)[text/plain];
	DMARC_POLICY_SOFTFAIL(0.10)[freebsd.org : SPF not aligned (relaxed), DKIM not aligned (relaxed),none];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	MIME_TRACE(0.00)[0:+];
	DWL_DNSWL_NONE(0.00)[gmail.com:dkim];
	FREEMAIL_ENVFROM(0.00)[gmail.com];
	ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US];
	RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::62a:from];
	MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_NEQ_ENVFROM(0.00)[novel@freebsd.org,bogorodskiy@gmail.com];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	TO_MATCH_ENVRCPT_SOME(0.00)[];
	RCVD_TLS_LAST(0.00)[];
	PREVIOUSLY_DELIVERED(0.00)[dev-commits-src-all@freebsd.org];
	ARC_NA(0.00)[];
	DKIM_TRACE(0.00)[gmail.com:+]
X-Rspamd-Queue-Id: 4hz4rS3L6Tz4P4N

  Ed Maste wrote:

> The branch stable/15 has been updated by emaste:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=687a0d4a6b2391cd045951e4e431dd585d131575
> 
> commit 687a0d4a6b2391cd045951e4e431dd585d131575
> Author:     Ed Maste <emaste@FreeBSD.org>
> AuthorDate: 2026-05-12 20:24:10 +0000
> Commit:     Ed Maste <emaste@FreeBSD.org>
> CommitDate: 2026-10-05 13:47:51 +0000
> 
>     OpenSSH: Update to 10.1p1

...

It looks like it also needs b76b05c04cc9ed2cd053c7b367c92628447ede6f to
fix build.

From nobody Mon Oct  5 16:46:39 2026
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 4hz4zM5xmyz6n6ZZ
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 16:46:39 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz4zM3vNlz4Pf8
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 16:46:39 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791218799;
	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=wnbAUJoeJFb8iY4duaA0MTjsjwMyB2/XDBgaJOzVHa8=;
	b=NhfI/UuKNdDj0+6/SPxAGmNWO0d0Z4qIZFRMMNh3LJjCIrJXV6GNoL1AJpe48g6P9aHTls
	2MSN4ibW2aUsmM7oavEjOEjbTSKwwRh66D/dZBOSsXhLlh43Ik+Tnj3F4IZiMKDUb5YgjV
	ZqGQ3x3G94Ihsrq4lNQ+Cf2nE8OCjzVevrynmL9GVjWZVw0iJfv3Cp0bqgelC+RFeN9edT
	981xGCJkPa/Wf4j5Wt9n8qPIUlmkNo0FIwkDC1BCf7eOon/dpsr+fX/LC8wkVNyhLXeRWC
	0hhHeDPKkxU9ZfcoqM3HBjaLEI2HIbmGCHDCdaRCZSLa+hG3F0GQM3GIHaAVLw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791218799;
	b=wHIQS4/nFMORyrc+1RhS5S4J3ECENlLDVEdPCsOJRWngXKG/1yJ+Z8lo0T0l5/TuTBLvJS
	9+8Fve1L8efS8B+Y1Z2Gdatucismdzfxdw818So2zOoVY5Opz2XipIbJWBo2hgFTSFRaIJ
	QmsbayziXl/dZJqJQe6julA4sYLD58AmUFplpZIOYUK/o2cUM8qz5a+ZRlsuCCJVBnbiy3
	5WG86AE/B0Pl19BVNLqZICWGu/WBnitudOjqum3NjEOQIoIZb1ZMA7gdLzt3Rpu80DyFcN
	4P1dpv6jVt2fi8ByzingTaJTkvdInDiGM4kdO0b2LQgC0ztnzz6FCVTPQ8QkKg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791218799;
	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=wnbAUJoeJFb8iY4duaA0MTjsjwMyB2/XDBgaJOzVHa8=;
	b=iRyMGeNh8RDK7NwHlvcDaEFldx2zTVL7bXGuNP03DkN+hxFjPb/0xkuYC9pYgTWFBtPXXr
	QAV3zlZW7L/HN5zkUBCUrGnawg/yJl92BoSPrJqL5YHlzMOoAXAT+GRezdgmqNP3K4JV4G
	mrr+XPig4P3PmDOQw711MwWJa5+tKKp2kSrfdTanp+83WGRAdTn9ANU9raAeZVV9phuxO7
	WBa2pBB+orD4Xy9TGpn2BXE0ATdyog9SvlmLgVNP6Igjh27UCasWNN3LVpSkwcS1dC3xCr
	dY95DfuVXLhYJsASxymgkW/WZaXmKbjKXdVscslcCr4NZk5hE9QO0M28BbITGw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz4zM1l4yzS6S
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 16:46:39 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 27639
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 16:46:39 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Olivier Certner <olce@FreeBSD.org>
Subject: git: f0825f75bab8 - main - acpi: Tasks: Make OsdSchedule.c whitespace clean
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: olce
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: f0825f75bab8ae7cb8e0ba717f76110b6f1862f3
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 16:46:39 +0000
Message-Id: <6ac3d46f.27639.6fdfd8e4@gitrepo.freebsd.org>

The branch main has been updated by olce:

URL: https://cgit.FreeBSD.org/src/commit/?id=f0825f75bab8ae7cb8e0ba717f76110b6f1862f3

commit f0825f75bab8ae7cb8e0ba717f76110b6f1862f3
Author:     Olivier Certner <olce@FreeBSD.org>
AuthorDate: 2026-10-02 17:12:46 +0000
Commit:     Olivier Certner <olce@FreeBSD.org>
CommitDate: 2026-10-05 16:45:56 +0000

    acpi: Tasks: Make OsdSchedule.c whitespace clean
    
    MFC after:      3 days
    Sponsored by:   The FreeBSD Foundation
---
 sys/dev/acpica/Osd/OsdSchedule.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/dev/acpica/Osd/OsdSchedule.c b/sys/dev/acpica/Osd/OsdSchedule.c
index 5720fb3d4e2e..d4be416f94e2 100644
--- a/sys/dev/acpica/Osd/OsdSchedule.c
+++ b/sys/dev/acpica/Osd/OsdSchedule.c
@@ -74,7 +74,7 @@ static MALLOC_DEFINE(M_ACPITASK, "acpitask", "ACPI deferred task");
 struct acpi_task_ctx {
     struct task			at_task;
     ACPI_OSD_EXEC_CALLBACK	at_function;
-    void 			*at_context;
+    void			*at_context;
     int				at_flag;
 #define	ACPI_TASK_FREE		0
 #define	ACPI_TASK_USED		1

From nobody Mon Oct  5 16:46:40 2026
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 4hz4zP0bBjz6n6xJ
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 16:46:41 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz4zN3r9Zz4PfK
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 16:46:40 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791218800;
	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=jGEX5Tce1xWr/BnNmpIG/tL7sLvaeQA7jPrubT5xk6w=;
	b=m7RwjGif4Q3/h0MkryVYiYMMQf64xFj9iyguWftbo0hTPDrDR+toKBZzHK2ocBu8+JwRAo
	9GfJppkq62QkCD2uhdQ4Doe/vJwiZjqZlAMzWmThuDniqRCTrWCml+fD1C3kvkcFO2qauf
	PQekr1L1/FDOS6rlcqjbPN+vTsdRpIMrPagblW+p17s5+1P1OjzvG7w//cYfKIEppB4MVu
	TchMyQjNieYB18MJPG4J0Zba75A2Zt0YVBJkRBl8lYav4DLDmJcOirokJLDG9KQU3COksn
	t6MG6qQp3fr0tUvvJkF1ZbawgQ9Y4VnxQ9xA4a1CYxQLnaQN4ELn2wzwOdMHbA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791218800;
	b=jgWL3OXUBQS/qyjVtdXSZQflTPq7UCOX0kRYRanWYsqEi0sZLcMN7NdYxyE3WdvdBbNka4
	XEqFUXOVNKV8wNH06SK1Rvrk8c6OymtFV0c8kU/Acr6+5fhxcXPebt/FM7j4PPVXTYSOak
	b1W2DY6wUGBzXJnMSXCJ/o59wQSTmgJOaenlyiT4X+LNjqufwir4ph1Om+1iG2UaUu0sOp
	70QLcFZEY78r9NMBsGZrcX7utJUDXxUIUQjfTp/mJwZJUdZ1cST0RgkeUJruCsayzoApOb
	1yeAe6Jf7hQatHo8Ii1xBf4Dm5rCTQd5miU9YMYu8OYWVsNtnz4BnpmI5AzavA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791218800;
	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=jGEX5Tce1xWr/BnNmpIG/tL7sLvaeQA7jPrubT5xk6w=;
	b=vgfhaYNB66NNaHXfqrf81Mu/XwdSFjy7mOIsoyGm+f4gmzd6j2VIWKxb4Sn60CoGexuh1a
	GHrSLGhNKirFCG3TN3/Ra3sjFA3mjSw2P5DF23woIuQ50KnPOmksa2us+HhT22nMVgVITt
	4vaBfZkIemc/YAJOmstEqEWNnFD1JWha+PmxyGkB7RQh85UUls6APNT58/aYRWC0In697+
	bsfoHEHqWhRoIG1iJyxZA0uF81PbnY6jMzEGCVaPXMQs4sdpdaSVPOm0P5D/sQd8uQewM+
	T6BHH+7Uo1IMky1Fvm1hPqRG4BH7mO8kkzPkcyCAN62vEiJ1d42nUwK8R7kjPQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz4zN2YdtzRml
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 16:46:40 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 279d6
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 16:46:40 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Olivier Certner <olce@FreeBSD.org>
Subject: git: e89c3ac5df58 - main - acpi: Tasks: Document why 'acpi_task_count' is accessed unsynchronized
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: olce
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: e89c3ac5df58a9eae9d01f325ffc9b34258c4b29
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 16:46:40 +0000
Message-Id: <6ac3d470.279d6.75b91981@gitrepo.freebsd.org>

The branch main has been updated by olce:

URL: https://cgit.FreeBSD.org/src/commit/?id=e89c3ac5df58a9eae9d01f325ffc9b34258c4b29

commit e89c3ac5df58a9eae9d01f325ffc9b34258c4b29
Author:     Olivier Certner <olce@FreeBSD.org>
AuthorDate: 2026-10-02 17:14:16 +0000
Commit:     Olivier Certner <olce@FreeBSD.org>
CommitDate: 2026-10-05 16:46:04 +0000

    acpi: Tasks: Document why 'acpi_task_count' is accessed unsynchronized
    
    MFC after:      3 days
    Sponsored by:   The FreeBSD Foundation
---
 sys/dev/acpica/Osd/OsdSchedule.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sys/dev/acpica/Osd/OsdSchedule.c b/sys/dev/acpica/Osd/OsdSchedule.c
index d4be416f94e2..c39d4112a039 100644
--- a/sys/dev/acpica/Osd/OsdSchedule.c
+++ b/sys/dev/acpica/Osd/OsdSchedule.c
@@ -83,6 +83,7 @@ struct acpi_task_ctx {
 
 struct taskqueue		*acpi_taskq;
 static struct acpi_task_ctx	*acpi_tasks;
+/* Unsynchronized as only useful in the mono-CPU startup phase. */
 static int			acpi_task_count;
 static int			acpi_taskq_started;
 

From nobody Mon Oct  5 16:46:38 2026
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 4hz4zS0JBjz6n6xX
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 16:46:44 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz4zR459jz4Q0B
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 16:46:43 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791218803;
	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=6KFDGfF5CbzGLJZbmWn+PmZqD+x22ihKlWUVX+nbcb8=;
	b=pGyztSMFZPGooQLaT3HbpKThCGYxNzjasOsxiu0zwRzFcTaPcehsV+7OpgFhKspxd4y7R/
	pZJmzZFXjLSd/4HXhK5oxky6FVOfgeSnjfXpQAU7PIKTHi2ibx/XHDDBGjjQCXciHeYbaP
	JBkEeMllmuYgf28LHugeky3s1mTP00Ok9jyNYHFrk4DLNG4H9mkG2etg2Lg61hHLd+UkQn
	aswsRHyBhrRKQfx7VRNwo81GK/sW8GL1Sl02nwCIMzzEVrkpWuGhaUTVYCQ1EQEdhy9/E0
	vw53x2/bMsM4HL65ohCae6g4xfz1oFL9aksQjFiChT+OuJ7FLi76Lch/ZsDyaQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791218803;
	b=cIlnKGVC7A03PLLkjfr5j12e9JwWd7+0xdyZ/l9XPEdBQ1ambcHiSTzgErCjcbupV0rRy4
	PUfhyz01CzHP2KafHIAaIUv3HgRyWfE8IWEWHMFNbX8BM93BEMjHv3KuNIzmm18Cn3/t6b
	5XS4kjYKzHN3sQZCmjGToZF6fbRHqgmu4ZMDNfskW4LtgCVPSVN0ELxNDf6aQt4YgyIx5c
	bmQwsgHpQclAq1uLXRBptnlWKCg04p2FGzraaB+6RFFYlEAv+UJjyPVDvuVjT3L3bS+ULS
	ThMVZKzpGu9q35KQe8GCD6SbLXzWuHnsuxQgWC+n9n8QTBLT1bhM5t5UxEtQlg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791218803;
	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=6KFDGfF5CbzGLJZbmWn+PmZqD+x22ihKlWUVX+nbcb8=;
	b=Qp8kQkbJb1evseicLdHadNUsUCP20AADECdtXNn4lnfQkr4AD5o6iz4IwEy+0PJ1yFu/Fs
	rd4WcQ8Zepc/FyAkGZA4V6V8dTjXEY7ipb2ZFrV7srW96I23ktYQIuRuiSgVWR2t5QFBpa
	k4euOqRcplLxRGXMw8W91LAStM4APkOt5xDatPs0HLAtY5N0O4XSTRA9m94byL3thP8ZFu
	WhuFP+/NRcZxBWyE/0l0IDSpVsTH5IeN3U9ukulcOo6+491CFu/6ExyglzysxbcqQtUJkm
	B9jtFlw29rY+1fXhRNeo2WS+/j5z+aCJNMD+T16FvrsJePE4lkXsNhsVhveqzw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz4zR2JMWzRpj
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 16:46:43 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 27512
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 16:46:38 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Olivier Certner <olce@FreeBSD.org>
Subject: git: 2165accd3748 - main - acpi: Tasks: Remove unnecessary includes
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: olce
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 2165accd3748c0acb6e82756d71a46509b220fd8
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 16:46:38 +0000
Message-Id: <6ac3d46e.27512.4741d461@gitrepo.freebsd.org>

The branch main has been updated by olce:

URL: https://cgit.FreeBSD.org/src/commit/?id=2165accd3748c0acb6e82756d71a46509b220fd8

commit 2165accd3748c0acb6e82756d71a46509b220fd8
Author:     Olivier Certner <olce@FreeBSD.org>
AuthorDate: 2026-10-02 17:11:58 +0000
Commit:     Olivier Certner <olce@FreeBSD.org>
CommitDate: 2026-10-05 16:45:32 +0000

    acpi: Tasks: Remove unnecessary includes
    
    MFC after:      3 days
    Sponsored by:   The FreeBSD Foundation
---
 sys/dev/acpica/Osd/OsdSchedule.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/sys/dev/acpica/Osd/OsdSchedule.c b/sys/dev/acpica/Osd/OsdSchedule.c
index f0464709e8ad..5720fb3d4e2e 100644
--- a/sys/dev/acpica/Osd/OsdSchedule.c
+++ b/sys/dev/acpica/Osd/OsdSchedule.c
@@ -30,8 +30,6 @@
  * 6.3 : Scheduling services
  */
 
-#include <sys/cdefs.h>
-#include "opt_acpi.h"
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/bus.h>

From nobody Mon Oct  5 18:53:11 2026
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 4hz7nT68zRz6vF3l
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 18:53:17 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz7nT3K11z4ltH
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 18:53:17 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791226397;
	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=jbiONKdl0AVKCufltzcG9BiUoz9ye9tvTXm45AZ1zaE=;
	b=hf+7vfo4i/pNd2sQ3gGOys0fx8CWh7eg71Dlj6gr4GcWgZDoRnYbSRpUUcKRyINx0ACYFk
	hTaZoCo8vZrV2V056YbwLGgKh+wQByUh5eEmLcyFaZZ5DLgZ8DUbcIxfXARmR8yTLio7R0
	M1nmaONbOywEuHLHaSMwCmaq+tZty8H1vkujWczCMPcl7bBBixGDAQKEyuEnyaPaZUz10y
	eMNi3KH/Canh/IrC8SaM2RWT9nizUIs4ZYAKSZZykm7ANZz0yxNgRQOqCVxOmtb8h98Opj
	8HvxqtirqcrEVOMV4JnoUP/nrTvOj3EkkhXl/7gz+042yQXoa5UTU0fbOFVE1Q==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791226397;
	b=WKL7+ud/QrUseFcA1bNfztKMHQS7Q3JGFl3E/cN2tAa4AO1/N42QjeVJ3ASmKXUW0Dck+V
	6OvIiyNCMAeifVooBFom/+JmTjATOk5wfQmKzz1cQIurpIOhQAXpY7Kgcq0udlmJl49qmp
	vkz2E6O0LxJmqdojNtcgIUnxEBbRwUxGAhj4i3qbl45wmdqO+y2aPVSTiSATJNr6S8umeJ
	Sa22Z9pIFLVuvXEVIsoEGwMANB8oOvmRCs5wme4N3F3yQa9k1ml42K5JRWaSVGZkXD23X8
	Ro1BJ+ATXFclaXzJ/I0H6K8TWidhtTyBxKtJz3WkptV2iQ0V3Ov5n3seabUshQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791226397;
	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=jbiONKdl0AVKCufltzcG9BiUoz9ye9tvTXm45AZ1zaE=;
	b=arl8GQbnHBLec4Nx/Vs0FlmBNam4r5uDEGkNiZyKQKPi6ymluUvnBJGdIhmWF3oTcEM2+t
	LAvtetVqTZviupLFCgsBCfIxqNAk11ioK6ueXOc91w+fvFRnxTo/+UJ+YyO0zIxh1M4uWL
	xN53GEZWBFIWoUb91DjUV2w4s+RByCiwYfK4HVUa3iZqrseFj2rzsZiyQgu0iyKalnBuTR
	GMBQHoIU3VSHYmjUEPlUnydwgI/2VFIW70OSw8scD+Y437FFKE5rdtUD3mrN3uICfunALl
	SnuNqCvqEPIq/aXxX2pChEP+b1eg4ERwimx1YFhZzv0KanahhIqJb4J1VMWELw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz7nT1CsLzWyV
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 18:53:17 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 3d13b
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 18:53:11 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: R. Christian McDonald <rcm@FreeBSD.org>
Subject: git: ac24108dabca - main - iflib: Make the deferral test in iflib_txd_db_check() an early return
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: rcm
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: ac24108dabcac04c7db351d33eb76f3ddee6073b
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 18:53:11 +0000
Message-Id: <6ac3f217.3d13b.36889286@gitrepo.freebsd.org>

The branch main has been updated by rcm:

URL: https://cgit.FreeBSD.org/src/commit/?id=ac24108dabcac04c7db351d33eb76f3ddee6073b

commit ac24108dabcac04c7db351d33eb76f3ddee6073b
Author:     R. Christian McDonald <rcm@FreeBSD.org>
AuthorDate: 2026-10-05 18:52:10 +0000
Commit:     R. Christian McDonald <rcm@FreeBSD.org>
CommitDate: 2026-10-05 18:52:10 +0000

    iflib: Make the deferral test in iflib_txd_db_check() an early return
    
    Invert the test so the doorbell write is no longer nested inside the
    conditional, and wrap its comments to 80 columns.  Fix a typo in one of
    them.
    
    No functional change intended.
    
    Reviewed by:            kbowling
    Sponsored by:           Rubicon Communications, LLC ("Netgate")
    Differential Revision:  https://reviews.freebsd.org/D60371
---
 sys/net/iflib.c | 37 +++++++++++++++++++------------------
 1 file changed, 19 insertions(+), 18 deletions(-)

diff --git a/sys/net/iflib.c b/sys/net/iflib.c
index 834cc37cb6ab..358e2f03aded 100644
--- a/sys/net/iflib.c
+++ b/sys/net/iflib.c
@@ -3466,26 +3466,27 @@ iflib_txd_db_check(iflib_txq_t txq, int ring)
 
 	max = TXQ_MAX_DB_DEFERRED(txq, txq->ift_in_use);
 
-	/* force || threshold exceeded || at the edge of the ring */
-	if (ring || (txq->ift_db_pending >= max) || (TXQ_AVAIL(txq) <= MAX_TX_DESC(ctx))) {
+	/* Defer unless forced, at the threshold or at the edge of the ring. */
+	if (!ring && txq->ift_db_pending < max &&
+	    TXQ_AVAIL(txq) > MAX_TX_DESC(ctx))
+		return (false);
 
-		/*
-		 * 'npending' is used if the card's doorbell is in terms of the number of descriptors
-		 * pending flush (BRCM). 'pidx' is used in cases where the card's doorbeel uses the
-		 * producer index explicitly (INTC).
-		 */
-		dbval = txq->ift_npending ? txq->ift_npending : txq->ift_pidx;
-		bus_dmamap_sync(txq->ift_ifdi->idi_tag, txq->ift_ifdi->idi_map,
-		    BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
-		ctx->isc_txd_flush(ctx->ifc_softc, txq->ift_id, dbval);
+	/*
+	 * 'npending' is used if the card's doorbell is in terms of the number
+	 * of descriptors pending flush (BRCM). 'pidx' is used in cases where
+	 * the card's doorbell uses the producer index explicitly (INTC).
+	 */
+	dbval = txq->ift_npending ? txq->ift_npending : txq->ift_pidx;
+	bus_dmamap_sync(txq->ift_ifdi->idi_tag, txq->ift_ifdi->idi_map,
+	    BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
+	ctx->isc_txd_flush(ctx->ifc_softc, txq->ift_id, dbval);
 
-		/*
-		 * Absent bugs there are zero packets pending so reset pending counts to zero.
-		 */
-		txq->ift_db_pending = txq->ift_npending = 0;
-		return (true);
-	}
-	return (false);
+	/*
+	 * Absent bugs there are zero packets pending so reset pending counts
+	 * to zero.
+	 */
+	txq->ift_db_pending = txq->ift_npending = 0;
+	return (true);
 }
 
 #ifdef PKT_DEBUG

From nobody Mon Oct  5 19:26:21 2026
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 4hz8Wd6XD8z6vHWy
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 19:26:21 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz8Wd4qmVz4qhY
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 19:26:21 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791228381;
	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=6Tq4XRq1e1wHE4RQMoLdz+Mo7t13RwG9h2n2ynoJD9c=;
	b=J8hofDoB8V97gsuU68mUlbfn4LWwSja7/Tqf/VsVudttmepXa04PjQqPtcAZP9XcmFCWbZ
	d4nvHQYXqj6E/3YozqKVfkq1rVM/YeTPQsH4ZjK0F2LJiBv6nJPGQu1BC0cI8v7652N9I3
	AVnvcpsHgBATMBRzDnCLo85JszelDbVLWmj6qKROVkkBP4ol93nM8VS7HkKy5chtZXJflX
	bL2ske3RBkF9diBHvEokxroP6nrEDdJVqmB9gfgCEoGCEQ/DG3R47j0SBnoqQludpEG08Q
	2j3RPU9ks0nUfGksEKcHwSlGSkeu2rmibIOGGoUNSMANH+u7S0J6eRMyzWcGRg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791228381;
	b=srNEU6FwJZmM6XrBKIJAj2Gi0xoyrOJTBLS+7BObDTirhApa0wzvtqdkY3jxaRsPw6TcV6
	Z03fgFWKaKVb06c1fpKS9ZBMyPZKQD+NXxoxRQbLqk+/084k//Uys7wmNjNiY8bpGNSC0t
	5kZhJYprprtuMkeKU3YVv+YxCnmsE6Q+wCgLK7TWQ7xfeqP0uwA6gzjZViSTpR1VNtREYn
	i6DBvefOAFCq2JxYXaxPx9wfIk4xkfaBtES3c+UYCWBdvfZpzfaGp+cb/JFMQM7cxaOOuI
	QIs4A1mYIdDrK32AIN8H1ixxWiHD2E4NdL24FrJ2Rhw/DUc0KIfOVyKSNEI3fQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791228381;
	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=6Tq4XRq1e1wHE4RQMoLdz+Mo7t13RwG9h2n2ynoJD9c=;
	b=AJqBraink3RRKtVQa226eEadWQTiXGrgN4iJ2E+e1T0pG12z2CrnTy1S6cK/OLhtyjhjZ5
	QxXpFl8+sNPTvk1RrUvQ9AfZixWrLnwtq2yKf6j53lvxe45ucikGFLnEiGQBLZfzvqHaL2
	2frtdFehgyZv0V5EA4uwKj7TKKOPo6dvvIQ798lXGIIDaBRasugiTRaZLhQe3ty21MEWp0
	3J1/SqQxpcNJLqqzUjP/Eof/BSug+PdUFiql6ahlOs+QPG2xJPPgEQlspTHR6JhwbHozAg
	Uh/N8IrR+t+qpcKLI/oDvtJ2PVcEL+xPK6AqaGGQGSV+GfADu+7NvNxw+ajAHw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz8Wd3mYXzZGg
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 19:26:21 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 402a1
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 19:26:21 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Ahmad Khalifa <vexeduxr@FreeBSD.org>
Subject: git: 2192d42bbcde - stable/14 - stand/images: remove translucent pixels around orb
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: vexeduxr
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/14
X-Git-Reftype: branch
X-Git-Commit: 2192d42bbcde78de89177994889481ae6d334f6e
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 19:26:21 +0000
Message-Id: <6ac3f9dd.402a1.7bfdb408@gitrepo.freebsd.org>

The branch stable/14 has been updated by vexeduxr:

URL: https://cgit.FreeBSD.org/src/commit/?id=2192d42bbcde78de89177994889481ae6d334f6e

commit 2192d42bbcde78de89177994889481ae6d334f6e
Author:     Ahmad Khalifa <vexeduxr@FreeBSD.org>
AuthorDate: 2026-10-02 02:11:32 +0000
Commit:     Ahmad Khalifa <vexeduxr@FreeBSD.org>
CommitDate: 2026-10-05 19:19:48 +0000

    stand/images: remove translucent pixels around orb
    
    Remove semi-transparent pixels around the orb. These become more
    pronounced when the orb is used as the spash screen image.
    
    While here also strip metadata.
    
    MFC after:      3 days
    Reviewed by:    tsoome
    Differential Revision:  https://reviews.freebsd.org/D60163
    
    (cherry picked from commit f7663278c2ba527dc681b1a806d4cc78ea49452b)
---
 stand/images/freebsd-logo-rev.png | Bin 39052 -> 34732 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/stand/images/freebsd-logo-rev.png b/stand/images/freebsd-logo-rev.png
index 6e2088df4654..b17e93789116 100644
Binary files a/stand/images/freebsd-logo-rev.png and b/stand/images/freebsd-logo-rev.png differ

From nobody Mon Oct  5 19:26:22 2026
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 4hz8Wg0dytz6vHFY
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 19:26:23 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz8Wf5JG1z4qmJ
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 19:26:22 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791228382;
	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=Nlv6/PBvgYVCw3LkvC5nbVyxgOULkGNtSLDYzwGYV3s=;
	b=o/qFbhHa94CRFq7R/kSGNa3WfSIxbJfbfTSl5qkCctPXcBDjfZ6y4/JMob3FeDHRxsE5h1
	QCrPFgnYezkMVj0rQSXI1c63o3qHeELyv1qsz//xB+NEzZzE8nLsdf5/MXi6yAQ56jxOQg
	WBB5ev3kb495urXCx/MDChDTO113VuumqicupOcy4SoSYVoDv2onzudWcSKrMpdymJrpz+
	zUFLhL908HQB9/uoUpb0TTyhM3bc501X4g20HQ883nIn8zyKJJpIpqs1Na8X/U7edf+HuV
	YC0pos2o38XmfXgidx9aaytQYHggQLx9iwIUChGuGwklUZIjVsq94Ur0JS1qCQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791228382;
	b=o0sbexeG0q/2ZKk6H4wOqzwKcBkNHksOBzw5litlqYUevQdGRXdWiBe3ECjBuCh5E1acIo
	uyGCSXt0y+Cntyeh0qo8NZhjJdbV0nZhd4kR4UhKKN/JycMVl5pOvKOp7WHHdtCxBzvkfd
	9kNLr5MW2M2mglaF+35++P2HEhOQq3r4HnlVlE6hVtKzaOY05/TXdurgMFsS29b6VxakWn
	/ziOm9jyh24mzAO/fONQaKXcHLiRX0xirvFeW2lIMhs04ncIY9LyMcofj7lZxgDnwiDE2C
	8BWW235YCbgMc+x6kIM92rk3jqxYcRLYOpOUl6GkYwJRzwlMhnGct+ZZ1ahkow==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791228382;
	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=Nlv6/PBvgYVCw3LkvC5nbVyxgOULkGNtSLDYzwGYV3s=;
	b=ppWtCRqKMKU3ENn4n+G3CUuZHu8XumIJc5I0IsNnTpfFX6fp82Ct9th0t2gHZfMEU6OyE+
	+kDduaqTTjY2eWuI4YuNaghfW07vQ/dLwOOSkNrslbRmDbocTptH7chOa9LsFX5luruPgF
	7QDrQvLrL0FhSKErhUKG0dmzoAQMKZe+5lkLHGN7IWK9bPYdYSuE5NO90eyPyicmilxCUM
	8ftKm3TcJHMwegT8XkA7BzpoMzvAjoUTWakI0pF4KAWQca5f0zH8k41FIOOVl6GtEEpPzr
	z27B7cm35F++Heu4KNxLeUF2K+IA/6TNicl7bMeggfwo1dzgC6hq6VMO1im+HQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz8Wf4LfBzZSH
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 19:26:22 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 40aac
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 19:26:22 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Ahmad Khalifa <vexeduxr@FreeBSD.org>
Subject: git: 98cd53be408d - stable/15 - stand/images: remove translucent pixels around orb
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: vexeduxr
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 98cd53be408d3118004a254449d943bfb8a7f25c
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 19:26:22 +0000
Message-Id: <6ac3f9de.40aac.17f374e5@gitrepo.freebsd.org>

The branch stable/15 has been updated by vexeduxr:

URL: https://cgit.FreeBSD.org/src/commit/?id=98cd53be408d3118004a254449d943bfb8a7f25c

commit 98cd53be408d3118004a254449d943bfb8a7f25c
Author:     Ahmad Khalifa <vexeduxr@FreeBSD.org>
AuthorDate: 2026-10-02 02:11:32 +0000
Commit:     Ahmad Khalifa <vexeduxr@FreeBSD.org>
CommitDate: 2026-10-05 19:25:26 +0000

    stand/images: remove translucent pixels around orb
    
    Remove semi-transparent pixels around the orb. These become more
    pronounced when the orb is used as the spash screen image.
    
    While here also strip metadata.
    
    MFC after:      3 days
    Reviewed by:    tsoome
    Differential Revision:  https://reviews.freebsd.org/D60163
    
    (cherry picked from commit f7663278c2ba527dc681b1a806d4cc78ea49452b)
---
 stand/images/freebsd-logo-rev.png | Bin 39052 -> 34732 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/stand/images/freebsd-logo-rev.png b/stand/images/freebsd-logo-rev.png
index 6e2088df4654..b17e93789116 100644
Binary files a/stand/images/freebsd-logo-rev.png and b/stand/images/freebsd-logo-rev.png differ

From nobody Mon Oct  5 19:33:04 2026
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 4hz8gN4YHPz6vHkb
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 19:33:04 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz8gN3MnBz4rrc
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 19:33:04 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791228784;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=qDce9Zk1n9+BaRiOtfdbW5+I3lI3HrtCySZi6a42K4A=;
	b=ctlal18G2E8yj8if5yfIANDwfHVmxkhN0klLyOubBJVhWjyhEj6J/eV00PUup1bJuHoJP3
	gKXT6guQ+CH+eP1CjdBOMb7Tzkfambe7VQf1NiJsQuouBw/tJ92SykOk/gsws1AkElFUv6
	EvWs17qxrH+PbqLNGTXDx4mFi84aDEk7avzc6MrNFGPvqVJ4U0Q+/kwlx8NhVVIUzmQzss
	U27LSj5gZhpVcSvSglGBPI8Act3Y9/4SjERuexzZDJC63raPPo8jh1HB7lTtNz7+ZP2Szt
	vtAJxm0jzm22yiPTolw5F0SKi0h5SXDJJu1UV72hE+8TmMxotfYohVUVLiwiWQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791228784;
	b=t9JEugdTEHkWh8PfwbBoTABMNNnl7uylECjYLmYL+jTtYtOE9wNFpwKZPotGI8gf9Cjyoo
	Dye1lNZeUmA4+A6CA5sjLYKXcFFc9waPl2cXcEdanvvF0nv4VrsM8AFTvhk8tOXSPghlkX
	m59CZyPO6VyYaqre/Jz+sTRhiBDfMTVHbmnkWnApQC2dljWyikQP6y9LF5bdhKhvG9I9yU
	cbGrIyGgEwXDOs/Bb4CpWnr0rtLmFKtWfCYAWbY3wifJemMhQcxmjno/4IbMEifhaPun5c
	ha9Hid+xAdQMtphO/7dgqRM/gcYv2983nkQ3wLNDINJnGl1sVkBBqNjKgUCPxg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791228784;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=qDce9Zk1n9+BaRiOtfdbW5+I3lI3HrtCySZi6a42K4A=;
	b=qdmCOH9FuDgACkheR7oZ7SMgHoUdoXQYdOI9WoNdijVlkpKKeCOsgn81YmFrvKn9S323P0
	yD8KmTbUrZguLH1qcPksBlnQZw/DoEnC63fUYnF4dJJzQylp9g0MEz/5cbKH0pHS+eKgJp
	CEjAEca+XwA1yl2ZWAs4bHYUwYVrMRIfW4L8zjgmAc3tu5p8lNr6ClgvDwRX6DvYLC6sAw
	CwoY4Wih17JwVT0WT3rFdUlBc4cVsqmsqtkwK9NCX+Ef340ws/e8TFI8ieMVKjmeP0JdIs
	OF6ybUz5RSt4fzhf9P8xgj8HzQ/wRNv5Xmzmg+ZIigafNT2p6qGwkL4Cypcn5Q==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz8gN0zKXzb12
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 19:33:04 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 412a1
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 19:33:04 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Cc: Jose Luis Duran <jlduran@FreeBSD.org>
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: 01f93565ff8e - stable/14 - secure: Adapt Makefile to ssh-sk-client everywhere
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/14
X-Git-Reftype: branch
X-Git-Commit: 01f93565ff8e91ed9074d32f119d77fb40edc63a
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 19:33:04 +0000
Message-Id: <6ac3fb70.412a1.7cd5d68c@gitrepo.freebsd.org>

The branch stable/14 has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=01f93565ff8e91ed9074d32f119d77fb40edc63a

commit 01f93565ff8e91ed9074d32f119d77fb40edc63a
Author:     Jose Luis Duran <jlduran@FreeBSD.org>
AuthorDate: 2025-04-17 19:08:02 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-05 19:32:38 +0000

    secure: Adapt Makefile to ssh-sk-client everywhere
    
    Upstream commit 7b47b40b1 ("adapt Makefile to ssh-sk-client everywhere")
    adapted the Makefiles to ssh-sk-client.  Do the same here.
    
    Reviewed by:    emaste
    Approved by:    emaste (mentor)
    Differential Revision:  https://reviews.freebsd.org/D49795
    
    (cherry picked from commit 65d8491719bbc88ed45637d2381931c2d29cfe87)
---
 secure/lib/libssh/Makefile                | 1 -
 secure/libexec/ssh-keysign/Makefile       | 2 +-
 secure/libexec/ssh-pkcs11-helper/Makefile | 2 +-
 secure/ssh.mk                             | 1 +
 secure/usr.bin/ssh-add/Makefile           | 2 +-
 secure/usr.bin/ssh-agent/Makefile         | 2 +-
 secure/usr.bin/ssh-keygen/Makefile        | 3 +--
 secure/usr.bin/ssh-keyscan/Makefile       | 2 +-
 secure/usr.bin/ssh/Makefile               | 2 +-
 secure/usr.sbin/sshd/Makefile             | 3 ++-
 10 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/secure/lib/libssh/Makefile b/secure/lib/libssh/Makefile
index 0a95c401c52f..65c9b06cd573 100644
--- a/secure/lib/libssh/Makefile
+++ b/secure/lib/libssh/Makefile
@@ -39,7 +39,6 @@ SRCS=	${LIBOPENSSH_SRCS} \
 	kexsntrup761x25519.c kexmlkem768x25519.c sntrup761.c kexgen.c \
 	sftp-realpath.c platform-pledge.c platform-tracing.c platform-misc.c \
 	sshbuf-io.c
-SRCS+=	ssh-sk-client.c
 
 PACKAGE=	ssh
 
diff --git a/secure/libexec/ssh-keysign/Makefile b/secure/libexec/ssh-keysign/Makefile
index 129b34199fad..e3fc783264d7 100644
--- a/secure/libexec/ssh-keysign/Makefile
+++ b/secure/libexec/ssh-keysign/Makefile
@@ -3,7 +3,7 @@
 .include "${SRCTOP}/secure/ssh.mk"
 
 PROG=	ssh-keysign
-SRCS=	ssh-keysign.c readconf.c uidswap.c
+SRCS=	ssh-keysign.c readconf.c uidswap.c $(SKSRCS)
 MAN=	ssh-keysign.8
 BINMODE=4555
 
diff --git a/secure/libexec/ssh-pkcs11-helper/Makefile b/secure/libexec/ssh-pkcs11-helper/Makefile
index 34fb59381305..88fc7553882a 100644
--- a/secure/libexec/ssh-pkcs11-helper/Makefile
+++ b/secure/libexec/ssh-pkcs11-helper/Makefile
@@ -3,7 +3,7 @@
 .include "${SRCTOP}/secure/ssh.mk"
 
 PROG=	ssh-pkcs11-helper
-SRCS=	ssh-pkcs11-helper.c ssh-pkcs11.c
+SRCS=	ssh-pkcs11-helper.c ssh-pkcs11.c $(SKSRCS)
 MAN=	ssh-pkcs11-helper.8
 
 LIBADD=	crypto ssh
diff --git a/secure/ssh.mk b/secure/ssh.mk
index 641343ac993a..84d9a7f57032 100644
--- a/secure/ssh.mk
+++ b/secure/ssh.mk
@@ -5,6 +5,7 @@
 SSHDIR=		${SRCTOP}/crypto/openssh
 
 SFTP_CLIENT_SRCS=sftp-common.c sftp-client.c sftp-glob.c
+SKSRCS=	ssh-sk-client.c
 
 CFLAGS+= -I${SSHDIR} -include ssh_namespace.h
 
diff --git a/secure/usr.bin/ssh-add/Makefile b/secure/usr.bin/ssh-add/Makefile
index 8de508bd6c12..c908881ca2e9 100644
--- a/secure/usr.bin/ssh-add/Makefile
+++ b/secure/usr.bin/ssh-add/Makefile
@@ -2,7 +2,7 @@
 .include "${SRCTOP}/secure/ssh.mk"
 
 PROG=	ssh-add
-SRCS=	ssh-add.c ssh-sk-client.c
+SRCS=	ssh-add.c $(SKSRCS)
 PACKAGE=	ssh
 
 LIBADD=	ssh
diff --git a/secure/usr.bin/ssh-agent/Makefile b/secure/usr.bin/ssh-agent/Makefile
index 06abc627fcd5..49d5fe77e943 100644
--- a/secure/usr.bin/ssh-agent/Makefile
+++ b/secure/usr.bin/ssh-agent/Makefile
@@ -2,7 +2,7 @@
 .include "${SRCTOP}/secure/ssh.mk"
 
 PROG=	ssh-agent
-SRCS=	ssh-agent.c ssh-pkcs11-client.c
+SRCS=	ssh-agent.c ssh-pkcs11-client.c $(SKSRCS)
 PACKAGE=	ssh
 
 LIBADD=	crypto ssh
diff --git a/secure/usr.bin/ssh-keygen/Makefile b/secure/usr.bin/ssh-keygen/Makefile
index 89e61e68ee55..c9205e71d219 100644
--- a/secure/usr.bin/ssh-keygen/Makefile
+++ b/secure/usr.bin/ssh-keygen/Makefile
@@ -2,8 +2,7 @@
 .include "${SRCTOP}/secure/ssh.mk"
 
 PROG=	ssh-keygen
-# XXX ssh-sk-client.c in libssh maybe?
-SRCS=	ssh-keygen.c sshsig.c ssh-sk-client.c
+SRCS=	ssh-keygen.c sshsig.c $(SKSRCS)
 PACKAGE=	ssh
 
 LIBADD=	crypto ssh
diff --git a/secure/usr.bin/ssh-keyscan/Makefile b/secure/usr.bin/ssh-keyscan/Makefile
index baa7f54b048d..522e47411011 100644
--- a/secure/usr.bin/ssh-keyscan/Makefile
+++ b/secure/usr.bin/ssh-keyscan/Makefile
@@ -2,7 +2,7 @@
 .include "${SRCTOP}/secure/ssh.mk"
 
 PROG=	ssh-keyscan
-SRCS=	ssh-keyscan.c
+SRCS=	ssh-keyscan.c $(SKSRCS)
 PACKAGE=	ssh
 
 LIBADD=	ssh
diff --git a/secure/usr.bin/ssh/Makefile b/secure/usr.bin/ssh/Makefile
index df85f47d5975..acb1fd4eaa25 100644
--- a/secure/usr.bin/ssh/Makefile
+++ b/secure/usr.bin/ssh/Makefile
@@ -10,7 +10,7 @@ MLINKS=	ssh.1 slogin.1
 PACKAGE=	ssh
 
 SRCS=	ssh.c readconf.c clientloop.c sshtty.c \
-	sshconnect.c sshconnect2.c mux.c
+	sshconnect.c sshconnect2.c mux.c $(SKSRCS)
 
 # gss-genr.c really belongs in libssh; see src/secure/lib/libssh/Makefile
 SRCS+=	gss-genr.c
diff --git a/secure/usr.sbin/sshd/Makefile b/secure/usr.sbin/sshd/Makefile
index 23a053f27ae7..79ee4f330eba 100644
--- a/secure/usr.sbin/sshd/Makefile
+++ b/secure/usr.sbin/sshd/Makefile
@@ -6,7 +6,8 @@ CONFSDIR=	/etc/ssh
 PROG=	sshd
 SRCS=	sshd.c \
 	platform-listen.c \
-	servconf.c sshpty.c srclimit.c groupaccess.c auth2-methods.c
+	servconf.c sshpty.c srclimit.c groupaccess.c auth2-methods.c \
+	$(SKSRCS)
 PACKAGE=	ssh
 
 MAN=	sshd.8 sshd_config.5

From nobody Mon Oct  5 19:35:28 2026
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 4hz8kC2fY7z6vJJM;
	Mon, 05 Oct 2026 19:35:31 +0000 (UTC)
	(envelope-from markj@freebsd.org)
Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83])
	(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 "smtp.freebsd.org", Issuer "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz8kC0xTrz4sCy;
	Mon, 05 Oct 2026 19:35:31 +0000 (UTC)
	(envelope-from markj@freebsd.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791228931;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=EvmBAgGvQUiMHzVLdVqfiKkE2GdpF1NogKo1OXr7aT4=;
	b=JXaMnhG21w+RpZ5n2QOu9Q++N0oXntvaE+B+/lmgXBocfIy3ZXeK2sPPWi7pbM+EH4DE1H
	MNntmpyVR+gCEakobpX1QYHYP4IDug3qhumz78jWKGxTo3TSHgZI6Ek1GI8YwN5mrBXWHx
	Mk/ylbxGVjzlPA1YPLAzkh3Kgm1Qte+5FUkEd98pIpIFrpmhY8f25Yk6Z9KppGmVl8oMrx
	8UQjX+nybjIib7aDdousw1xeetStfnMJkxnX+b+/+QOcN2YLDg2taI4kvpNXDYKgjzKeI2
	A9dgOzjCGH+h/VslsrkGVbaQknt8zVYrPxarDI0v7f8ftlG7NxOWNYniWeLD0Q==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791228931;
	b=oyLUNhaQyA6kQMjlQJxzu7kvkJgIzmc0vrbBdTpJMg+KIZqj/teF/BG0p84hednMTqpUj6
	2OJgjsno/7ght0J7el7jsU5Y5twYcOl0zOGrwhAFMHpBBINLR0A4ok6PBEfL/KRIe+ENBd
	2e7hro2aEN+x+P35+dtkeFE12DMyBhqt2q46y93C8/8Utj7LlXLCbQJjRQMjJQux8H1ZYy
	p1vUfMi/KGjpfsS7Ui9z692LrqDD1bhdi9R5nE8Kqj6zIjnJPFGZAuQwqwHnD7w+CazGDL
	ZKYkcw+sJCifKd7eSSrbl+ECA+VxSEnItULw8g1G1pBBtNWq2s1baPZzAqQDXA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791228931;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=EvmBAgGvQUiMHzVLdVqfiKkE2GdpF1NogKo1OXr7aT4=;
	b=L8JE4paOsxU9efosEnQbKJ4Cp4qW6fuXj77Ms4YO09WKOJpyuMHVIt9vPqXL/A5wMO3Pjy
	ORk8pjSkPqSoAa7xgwYmYIDdjhGijp0Mdw97aYNOuG0tt7C6ftDExN8/2b+hUDG+a1wMC6
	yPCLwqMdBBz5djguLokWdSEwbq//OsHuydk79OwHU93KODliP7jf4CG1saxXE5P0O3+HwW
	fweMBuTvXhiidJmwHxD6yKXodfpfvDAc+bCelKoaAiwOywulfgZjXMFhr2ZNaA0CKD367h
	oAO0O+wyvqDQMFZxKl/7c7dgf2YNUJARH9UUhYf3N419EUWN0L/aQ1LVSUN77A==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from nuc (198-84-224-249.cpe.teksavvy.com [198.84.224.249])
	(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)
	(Authenticated sender: markj)
	by smtp.freebsd.org (Postfix) with ESMTPSA id 4hz8kB4xL2zj0x;
	Mon, 05 Oct 2026 19:35:30 +0000 (UTC)
	(envelope-from markj@freebsd.org)
Date: Mon, 5 Oct 2026 15:35:28 -0400
From: Mark Johnston <markj@freebsd.org>
To: Siva Mahadevan <siva@freebsd.org>
Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org,
	dev-commits-src-main@freebsd.org
Subject: Re: git: fdd3f6f78888 - main - bsd.lib.mk: only ctfmerge if objfiles
 have a CTF section
Message-ID: <asP8AJ7T0K2nRlJh@nuc>
References: <6ac3af3d.446b4.721d30f1@gitrepo.freebsd.org>
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <6ac3af3d.446b4.721d30f1@gitrepo.freebsd.org>

On Mon, Oct 05, 2026 at 02:07:57PM +0000, Siva Mahadevan wrote:
> The branch main has been updated by siva:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=fdd3f6f78888b02a1bfa69a0572317413dc14a45
> 
> commit fdd3f6f78888b02a1bfa69a0572317413dc14a45
> Author:     Siva Mahadevan <siva@FreeBSD.org>
> AuthorDate: 2026-10-02 19:54:55 +0000
> Commit:     Siva Mahadevan <siva@FreeBSD.org>
> CommitDate: 2026-10-05 14:07:44 +0000
> 
>     bsd.lib.mk: only ctfmerge if objfiles have a CTF section
>     
>     PR:             299013
>     Reported by:    Trond.Endrestol@ximalas.info
>     Reviewed by:    emaste
>     Fixes:          222210c6a822 ("libgcc_s: add libgcc_s_asneeded.so wrapper for gcc 16")
>     MFC after:      3 days
>     Sponsored by:   The FreeBSD Foundation
>     Differential Revision:  https://reviews.freebsd.org/D60252
> ---
>  share/mk/bsd.lib.mk | 2 +-
>  share/mk/sys.mk     | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
> index e3b3d760ff28..5b7bed041b8f 100644
> --- a/share/mk/bsd.lib.mk
> +++ b/share/mk/bsd.lib.mk
> @@ -291,7 +291,7 @@ ${SHLIB_NAME_FULL}: ${SOBJS}
>  .endif
>  	${_LD:N${CCACHE_BIN}} ${LDFLAGS} ${SSP_CFLAGS} ${SOLINKOPTS} \
>  	    -o ${.TARGET} -Wl,-soname,${SONAME} ${SOBJS} ${LDADD}
> -.if ${MK_CTF} != "no"
> +.if ${MK_CTF} != "no" && defined(SOBJS) && !empty(SOBJS)
>  	${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SOBJS}
>  .endif
>  
> diff --git a/share/mk/sys.mk b/share/mk/sys.mk
> index bb943d2b1519..f63223e8464e 100644
> --- a/share/mk/sys.mk
> +++ b/share/mk/sys.mk
> @@ -165,7 +165,7 @@ CPP		?=	cpp
>  CTFFLAGS	?=	-L VERSION
>  
>  CTFCONVERT	?=	ctfconvert
> -CTFMERGE	?=	ctfmerge
> +CTFMERGE	?=	ctfmerge -t

Is this part of the change intentional?  It doesn't seem right.  We may
legitimately have object files without CTF info, I'm sure this happens
in the kernel for instance.

>  
>  .if defined(CFLAGS) && (${CFLAGS:M-g} != "")
>  CTFFLAGS	+=	-g
> 

From nobody Mon Oct  5 19:55:01 2026
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 4hz98l02r4z6vK8B;
	Mon, 05 Oct 2026 19:55:03 +0000 (UTC)
	(envelope-from siva@freebsd.org)
Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4])
	(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 "smtp.freebsd.org", Issuer "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz98k6XxCz4vGl;
	Mon, 05 Oct 2026 19:55:02 +0000 (UTC)
	(envelope-from siva@freebsd.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791230102;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=bWPwTlSSlnx9J/gmUzCgI9JFRhwJXP8RvjmvE30xS7o=;
	b=O4Azv14x/Yt8ddhpAJBRJENkQhU+LW+cpE1TaOAqvVFku4lxltZQnxPCn/UeQ0rTck0P9F
	9p0oGuuCQUxEcNeOjxh9zQHpfQs19HpOpQ0Cz4glx15k9jM1CyHtSmsBJoWcJub5BAA+EK
	3vrnN2039PfdhX5ULsNAd8rFt+wr3nHhk/xT2ZU1OGUD/AEWgH/lh4KxDdSw+6rD/Mitsc
	LnK47iSVfP+WZyBw0DSQcb2vz2AxJhB6pAyHCZ7x9+pmIY/Ee+NNYI8jOTtQlaTrJJIG64
	KnUjvq8+Bb8R8rcVVqs6o4ASKXRQUjhWvevCvhmQ6nTmCV2DD8QD7qPg3qHxGA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791230102;
	b=ZLIFhEVzJd4XJMeBgYsFO/nyq8ffJRd6d+zG7z5PJI0l3ru9arg1TOBnR/xeBfJLXB2YBJ
	4VSwEgKrjveS4YPnEgKhBQZByh8ywGNDY5yRe1FYCgCIBhot6Lbn4zr46CfH8wilC4YsYR
	GjJj7qmsa9mk0dHxNYa+oDO+k4VYQiMGLo+e5CxeQU0XzqEfbB2FV/lswMK7GNaRCz0qQV
	YeQKCoAGuAhT5VLNyI+q5bZcqGMg8XJ2MW3aGmfNIEUad7CBZ7Q4MdYGE9kmzm1oNBODFu
	AO75AXpvHwzZ5D7i0/2g0gqaGbct4ufNUTXPTzy162OZNeCVWiG/mQf0dXrZKQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791230102;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=bWPwTlSSlnx9J/gmUzCgI9JFRhwJXP8RvjmvE30xS7o=;
	b=YBAEgVgQxLMxFG86KCAEJ++//2lPN9UqiRgpvdMSfcY2tu57eoY2RuS9sdL01r8v++e1vq
	aS7HxZ4k0gEl/2n038igX1oOO9+GS/E+hN9eRtoDeEaIMEb9E2VKzjtDuj9wSjTp7u5YNg
	wcq6swVB9VvEwrIpzJS0Q7+cNqQNYqTOLJUYvKvRoxgqySUQbaQu3D+2Z7KR5bBkBVZhEi
	xHEZ5ciAa8jrjjVAeAlESMRxN4kF4llqjbdRT0GqsywOI6p19DgbCpG+H6D5r8cME1elJB
	fQvPZ8fWQ6YIUm0bfFbLS7lRCE36HUXrLKtuHsDVEdAZVJi59taAArY8sPfnRg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from localhost (unknown [IPv6:2606:6d00:f3a:e490:b79c:2c74:cd48:7dc9])
	(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)
	(Authenticated sender: siva/mail)
	by smtp.freebsd.org (Postfix) with ESMTPSA id 4hz98k4Rp6zjTd;
	Mon, 05 Oct 2026 19:55:02 +0000 (UTC)
	(envelope-from siva@freebsd.org)
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Mon, 05 Oct 2026 15:55:01 -0400
Message-Id: <DLX62SGNY330.1G30TXB8P6IQ9@freebsd.org>
Subject: Re: git: fdd3f6f78888 - main - bsd.lib.mk: only ctfmerge if
 objfiles have a CTF section
From: "Siva Mahadevan" <siva@freebsd.org>
Cc: <src-committers@freebsd.org>, <dev-commits-src-all@freebsd.org>,
 <dev-commits-src-main@freebsd.org>
To: "Mark Johnston" <markj@freebsd.org>
X-Mailer: aerc 0.22.0
References: <6ac3af3d.446b4.721d30f1@gitrepo.freebsd.org>
 <asP8AJ7T0K2nRlJh@nuc>
In-Reply-To: <asP8AJ7T0K2nRlJh@nuc>

On Mon Oct 5, 2026 at 106:00 UTC, Mark Johnston <markj@freebsd.org> wrote:
> On Mon, Oct 05, 2026 at 02:07:57PM +0000, Siva Mahadevan wrote:
>> The branch main has been updated by siva:
>>=20
>> URL: https://cgit.FreeBSD.org/src/commit/?id=3Dfdd3f6f78888b02a1bfa69a05=
72317413dc14a45
>>=20
>> commit fdd3f6f78888b02a1bfa69a0572317413dc14a45
>> Author:     Siva Mahadevan <siva@FreeBSD.org>
>> AuthorDate: 2026-10-02 19:54:55 +0000
>> Commit:     Siva Mahadevan <siva@FreeBSD.org>
>> CommitDate: 2026-10-05 14:07:44 +0000
>>=20
>>     bsd.lib.mk: only ctfmerge if objfiles have a CTF section
>>    =20
>>     PR:             299013
>>     Reported by:    Trond.Endrestol@ximalas.info
>>     Reviewed by:    emaste
>>     Fixes:          222210c6a822 ("libgcc_s: add libgcc_s_asneeded.so wr=
apper for gcc 16")
>>     MFC after:      3 days
>>     Sponsored by:   The FreeBSD Foundation
>>     Differential Revision:  https://reviews.freebsd.org/D60252
>> ---
>>  share/mk/bsd.lib.mk | 2 +-
>>  share/mk/sys.mk     | 2 +-
>>  2 files changed, 2 insertions(+), 2 deletions(-)
>>=20
>> diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
>> index e3b3d760ff28..5b7bed041b8f 100644
>> --- a/share/mk/bsd.lib.mk
>> +++ b/share/mk/bsd.lib.mk
>> @@ -291,7 +291,7 @@ ${SHLIB_NAME_FULL}: ${SOBJS}
>>  .endif
>>  	${_LD:N${CCACHE_BIN}} ${LDFLAGS} ${SSP_CFLAGS} ${SOLINKOPTS} \
>>  	    -o ${.TARGET} -Wl,-soname,${SONAME} ${SOBJS} ${LDADD}
>> -.if ${MK_CTF} !=3D "no"
>> +.if ${MK_CTF} !=3D "no" && defined(SOBJS) && !empty(SOBJS)
>>  	${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SOBJS}
>>  .endif
>> =20
>> diff --git a/share/mk/sys.mk b/share/mk/sys.mk
>> index bb943d2b1519..f63223e8464e 100644
>> --- a/share/mk/sys.mk
>> +++ b/share/mk/sys.mk
>> @@ -165,7 +165,7 @@ CPP		?=3D	cpp
>>  CTFFLAGS	?=3D	-L VERSION
>> =20
>>  CTFCONVERT	?=3D	ctfconvert
>> -CTFMERGE	?=3D	ctfmerge
>> +CTFMERGE	?=3D	ctfmerge -t
>
> Is this part of the change intentional?  It doesn't seem right.  We may
> legitimately have object files without CTF info, I'm sure this happens
> in the kernel for instance.
>
>> =20
>>  .if defined(CFLAGS) && (${CFLAGS:M-g} !=3D "")
>>  CTFFLAGS	+=3D	-g
>>=20

It was intentional, but made with the wrong understanding, thanks for
reporting this. I've submitted D60378 for review as a fix.

From nobody Mon Oct  5 19:58:12 2026
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 4hz9DT5X4Sz6vKVd
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 19:58:17 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz9DT50gnz4vq0
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 19:58:17 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791230297;
	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=C3aB7SCjcLdtsHvg2eLsmHnpckheRfLAR9GAOsaT2kQ=;
	b=wjEqKgM+4L86hi12MVSZAAjemDOb4aHyEAqcJOThU6YkXLTNORmY14XuDwpDdDl9P3dbFl
	qz9QaLDSLN+hXU/u/qV3X+W6NaeeSurrIknLEYT+AVn5M+0w2I/kZWMzH0SvPLgcsssHpH
	Dt4JV+RpmUU2zH7sulGIfJ8iFlr4CoQMtOhS4KF/72gB1v3Ys0q5Ki0H/BOKzbHvRFUNBu
	Usp4G4fsHu5lTamHBeMl4ANRnxGa9C6aiNdyZQz/mbOLOlvVc+pUD2B5nqA+32Ph7eTEFK
	PucBMcI8/kwppnTj14LKUMX75Exl6ppDsDQECQekdICGAxdHfxfZ/Otu4upfow==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791230297;
	b=Wwn2VcfCJAEg2yXUiTWQB0f0gBSaHO8gLlxIRpPcJRJS86Qtze0vVwtzm1/NJ/eRgBJTtt
	SECjRVMcYRP91Y928uVQyo94xHlC4yad2qWlw3h3N34Vb5E6piTICzs4ot3/4oj19c3xXN
	8ovRuxLpcWPmWRLiQhsGOGQg+kaa7aKCXqnG2U61+3hhxzl+rtnIKvox+MJ9ldltvbIHSj
	Dqmr0LDEtRYxnw0d87HOECrR14gV4s4D2HRk6dk9iiDvbVhjr1oatqAm2xOJYzpdO3KD3W
	CA+qjHQtFQM/BnU+EmjOyHml5elVWWcWDsHfyPfgqpiFgZ2rNRJ6E1X1FH1qmQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791230297;
	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=C3aB7SCjcLdtsHvg2eLsmHnpckheRfLAR9GAOsaT2kQ=;
	b=qMky+JQqsbCJwUMjPsniKQj2VYOfP0U/+kpTb3gPGfDAVSa2lne6lkq7pYTV3v6XIEerlF
	HB77ednUcGJmV5LtpbFnm56M24EMa6zY3nlzSqxVglEif6MWZG2h54UsQJbQCqivv8ywx7
	0jQXkTEqIkNmc/SJSBQSiCqjE834VNZcgpV927giWnC71+9DpDNgRlGD8/nlqi8DG/0BAZ
	AuNq9Zc5rnsaPS3geGHBZSNH2gg8Uwt0VYbCG87EehySG6o/xhSER8iM1Sp4xqIP/5ob0F
	WDpEKbq49jNBbB0bv8PZYg6t60VGKZp0ALSruum1/PXmZjpp4Bk0T7+b3UMGWw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz9DT44XLzbgw
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 19:58:17 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 412d1
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 19:58:12 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Antoine Brodin <antoine@FreeBSD.org>
Subject: git: 152dd1a0ee30 - main - ObsoleteFiles.inc: add more obsolete files
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: antoine
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 152dd1a0ee3076be117e7897c666df95a5a4447d
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 19:58:12 +0000
Message-Id: <6ac40154.412d1.2a4b188e@gitrepo.freebsd.org>

The branch main has been updated by antoine:

URL: https://cgit.FreeBSD.org/src/commit/?id=152dd1a0ee3076be117e7897c666df95a5a4447d

commit 152dd1a0ee3076be117e7897c666df95a5a4447d
Author:     Antoine Brodin <antoine@FreeBSD.org>
AuthorDate: 2026-10-05 19:57:35 +0000
Commit:     Antoine Brodin <antoine@FreeBSD.org>
CommitDate: 2026-10-05 19:57:35 +0000

    ObsoleteFiles.inc: add more obsolete files
---
 ObsoleteFiles.inc | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index 344173ab74bc..93a31ad8e6ac 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -71,7 +71,12 @@ OLD_FILES+=usr/share/man/man1/lesskey.1.gz
 # 20260921: atf-0.26 release
 OLD_FILES+=usr/share/doc/atf/README
 
+# 20260903: vm_page_try_to_free(9) removed
+OLD_FILES+=usr/share/man/man9/vm_page_try_to_free.9.gz
+
 # 20260813: lib9p.so becomes a private library
+OLD_FILES+=usr/lib/lib9p.a
+OLD_FILES+=usr/lib/lib9p.so
 OLD_LIBS+=usr/lib/lib9p.so.1
 
 # 20260811: libusb symbol versioning, shared library bumped to version 4
@@ -81,6 +86,10 @@ OLD_LIBS+=usr/lib/libusb.so.3
 OLD_FILES+=usr/tests/sys/netinet6/frag6/frag6_01
 OLD_FILES+=usr/tests/sys/netinet6/frag6/frag6_01.py
 
+# 20260809: fwcamctl(8) removed
+OLD_FILES+=usr/sbin/fwcamctl
+OLD_FILES+=usr/share/man/man8/fwcamctl.8.gz
+
 # 20260707: Move sendfile_helper to tests/sys/common
 OLD_FILES+=usr/tests/sys/kern/sendfile_helper
 
@@ -642,6 +651,9 @@ OLD_FILES+=usr/lib/clang/19/share/cfi_ignorelist.txt
 OLD_FILES+=usr/lib/clang/19/share/msan_ignorelist.txt
 OLD_DIRS+=usr/lib/clang/19/share
 OLD_DIRS+=usr/lib/clang/19
+OLD_LIBS+=usr/lib/libprivateclang.so.19
+OLD_LIBS+=usr/lib/libprivatelldb.so.19
+OLD_LIBS+=usr/lib/libprivatellvm.so.19
 
 # 20260425: new libc++ import which bumps version from 19 to 21
 OLD_FILES+=usr/include/c++/v1/__algorithm/fold.h
@@ -707,6 +719,7 @@ OLD_LIBS+=usr/lib/krb5/plugins/preauth/test.so.121
 OLD_LIBS+=usr/lib/krb5/plugins/tls/k5tls.so.121
 
 # 20260120: Made libkrb5profile INTERNALLIB
+OLD_FILES+=usr/lib/libkrb5profile.a
 OLD_LIBS+=usr/lib/libkrb5profile.so.122
 OLD_FILES+=usr/lib/libkrb5profile.so
 

From nobody Mon Oct  5 20:13:55 2026
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 4hz9ZX24n2z6vLLQ
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 20:13:56 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz9ZX157wz4ypm
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 20:13:56 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791231236;
	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=i6FfsEYYzx1L30WND7YDFYrWbAQTN77Y/8tomx4zVHk=;
	b=qoclaNpGyBzlrHUer1xOZd4IZQ5j9HKkDw5Fxi6YmPlAyHPqFPF/rQirH+hyMm5Xzjia86
	zmGRo/YTN+FKDAhvvRvHUuNAASZ2u+xJZaK0UqsZELvGdz8sYlFj1pOr6t6Ps83hYDfXJe
	L7J+xv6d6fbwg51wGz55ot7eY8KtjUWblKLH1Rg1JUlveEdTtOczAIgvKOREsMTqmXeHpB
	GDhAM/iU9tb5vR9pMkoRPQCDg0yRpG6Vwo4hZSnA3pbzP4KNMYlnJvTVXx1a3TlhlBhFi0
	GuxNs5AQRxkollypJGI3MWO92kdOYXGoRYjGgTXG6jgzQdNsR94dvWegpz0VHQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791231236;
	b=nUiP+VZGp55hi32/+OJnVcCMF/UnXmNouJN4oq33t2NXNThNCrn650P1rTOJconYbBsxzW
	vtKxzrfglMfaINWMVJVUg6wr/QGQLM4fTufp2w0ZRXWXVktpHpO0pUY0mMm2NepblvW/9D
	jab+wlZ1T9WaOv4SRWVBhZAU4WSNicL/bzXnstwPxCcptgmliTaoCzJWQV3TVbY2/s3uFn
	yvWRtZBNPHZ/9Zr3XTxVYoyBRI/BOAHO71+T+nHcen82TQdXuG6VsHsEVJXECLshyOQLZD
	nNPjAz76p0Fx76+pHnaLGkfWNKKy0U2637nIGtlmhPdILGL2KvOadPjULQQOKQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791231236;
	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=i6FfsEYYzx1L30WND7YDFYrWbAQTN77Y/8tomx4zVHk=;
	b=ZlqudDdOuWsNn5H602hsH3xVwNa383LFGZwQmqlUfTqNrZyotWnvkgfzDHJywRke1WWZxd
	kba8LoWrcuUdoqhOdbq7caso6ncCdu6k83FAucW5YvyglZk6HmEgw3A8+3/zZKyY/ol+W9
	vmhP9Jhi8ClTPLZHYpghoLFnbkupuL4nyhwEBOBcjbMtoL6ZzxcvIATYQEMv2BdtMhxtgZ
	8F3W1RIHnAs7N6z8KHbtDyM3ehEOrx3RJGTa+Gsb3CXMOpOBWyk4iWSLXNJc38rLlF1T5o
	gsQrrl4Zov5rkZ2SsMFFMdX66geZgx2nc9nrCjCvZzeoHwdy3zGa8VnIIle1iA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz9ZW6YbXzc7R
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 20:13:55 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 459b2
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 20:13:55 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Siva Mahadevan <siva@FreeBSD.org>
Subject: git: b45d14d3d665 - main - sys.mk: CTFMERGE: don't assume objfiles always have CTF sections
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: siva
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: b45d14d3d665e0253391924e5c0595c259b8a773
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 20:13:55 +0000
Message-Id: <6ac40503.459b2.1f2f63c2@gitrepo.freebsd.org>

The branch main has been updated by siva:

URL: https://cgit.FreeBSD.org/src/commit/?id=b45d14d3d665e0253391924e5c0595c259b8a773

commit b45d14d3d665e0253391924e5c0595c259b8a773
Author:     Siva Mahadevan <siva@FreeBSD.org>
AuthorDate: 2026-10-05 20:13:16 +0000
Commit:     Siva Mahadevan <siva@FreeBSD.org>
CommitDate: 2026-10-05 20:13:36 +0000

    sys.mk: CTFMERGE: don't assume objfiles always have CTF sections
    
    There are many instances, e.g. in the kernel, where
    object files don't have CTF sections, but still need
    to be merged into one that does have a CTF section.
    
    This fixes cases like the following:
    
    --------------------------------------------------------------
    >>> stage 3.1: building everything
    --------------------------------------------------------------
    
    linking kernel.full
    ctfmerge -t -L VERSION -g -o kernel.full ...
    ERROR: ctfmerge: Input file force-dynamic-hack.pico was partially built from C sources, but no CTF data was present
    Removing kernel.full
    
        kernel.full ---
        [kernel.full] Error code 1
    
    This partially reverts commit fdd3f6f78888b02a1bfa69a0572317413dc14a45.
    
    PR:             299013
    Reported by:    markj
    Reviewed by:    markj, emaste
    Fixes:          fdd3f6f78888 ("bsd.lib.mk: only ctfmerge if objfiles have a CTF section")
    Differential Revision:  https://reviews.freebsd.org/D60378
---
 share/mk/sys.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/share/mk/sys.mk b/share/mk/sys.mk
index f63223e8464e..bb943d2b1519 100644
--- a/share/mk/sys.mk
+++ b/share/mk/sys.mk
@@ -165,7 +165,7 @@ CPP		?=	cpp
 CTFFLAGS	?=	-L VERSION
 
 CTFCONVERT	?=	ctfconvert
-CTFMERGE	?=	ctfmerge -t
+CTFMERGE	?=	ctfmerge
 
 .if defined(CFLAGS) && (${CFLAGS:M-g} != "")
 CTFFLAGS	+=	-g

From nobody Mon Oct  5 20:23:25 2026
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 4hz9nV0jrbz6vMXn
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 20:23:26 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hz9nT5vJ0z51G0
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 20:23:25 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791231805;
	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=j6/W10Gqn0byZtbyqvE2Uqr0GfgR4Cyt/ofLlYLrfNA=;
	b=pJlzRcfzGiX6PwnGEB2J7S4tFEMqOjFwoSd8Etcn35H6pJi6G2Jfeh9l0CDAFJNJAt2h6P
	FO8bt90kjIEVu/Mw/cbJu9cLw+Qo7z2xgE6HkkZUoGMHVkLmv4DDzK+VZYo9KsxdF4/aIb
	n925Ri/ACceW0kg7S221fYDcSRklYP4u3XggfBtQKudUiaTsMrv4owwz/x+RLMEhpdA1AY
	MxY2YMfSuAnNnodSrz1oZjqo0HGK9azxsqa0STyopSI0SQ8fjeIPV+k5i12nvZqEXXT2Sg
	JWbfFyBNvxeIpXh7uvRDYSACGSsfIHeuE77uN+t6CUXGaNccfZfjaGz0i+u+jg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791231805;
	b=AT8tyA4i1uv0rV0QhCdt4F31QYeSwqlB24lleXrKuCKUy9Cu9fzwY72ENhExW1qln/aKP0
	biT2eG4+1IqMTbn+dkhQnSMMz7LFNJk9OuvXnwSfnC2wi+aiRcos31wEQRR8Z1T5prVUYg
	9BXot9pcsQmu/7mM6ihxRcFcef4mjlT3uki4DuG6alVFcx4ye0+MLKvlyHokC3DF5J4lQM
	BEYD1KDDw/LYjguKKKZGm+ZHgjnxDaCvNfEvr32dgkToid96O7MQ+PuYl/fXeVqPuzite4
	QmGbPnlJFbQIBpO6TJPCgs4Uiqs2TMFvpMq629JRnqFRBiZvL+aDduWZYZLkvw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791231805;
	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=j6/W10Gqn0byZtbyqvE2Uqr0GfgR4Cyt/ofLlYLrfNA=;
	b=nQHUZ94kEoV+DqoRUECvHhSLuuRpkrP9TKSsNV28c1UMJan3KgCXin77uPqxzWjqVz+e48
	I7VvTyEWWfEcgHRgoVKfBlnjNBaCs1kULv/G1UeEDbqH+HVlr1j/RCI9zqVnMSh8YuK63d
	uBH7YCea0/5RvteVVSksHmfEWnQN0dc4mPYtqI5wljm34Oc5TMF7zmN4X1ti0um/Bu389F
	qzF60NtWZ0UJPua7gqGDvw1kxaZkSur+RCjypsCdq5acjet1h3s+4EdG6z7TiXozxGaVVA
	LhQPaDSC5kQyvyooQQqR+rCYyXtqt7sn4lViDlp/omqg4tEzeLUpeYODBU8VHg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hz9nT3wPXzcZC
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 20:23:25 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 4407e
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 20:23:25 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: R. Christian McDonald <rcm@FreeBSD.org>
Subject: git: 481447ad9be2 - main - e1000: Fix the flow control sysctl
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: rcm
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 481447ad9be2e60e0bb3744ab199ce121baadf84
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 20:23:25 +0000
Message-Id: <6ac4073d.4407e.4473e1ff@gitrepo.freebsd.org>

The branch main has been updated by rcm:

URL: https://cgit.FreeBSD.org/src/commit/?id=481447ad9be2e60e0bb3744ab199ce121baadf84

commit 481447ad9be2e60e0bb3744ab199ce121baadf84
Author:     R. Christian McDonald <rcm@FreeBSD.org>
AuthorDate: 2026-10-05 20:21:47 +0000
Commit:     R. Christian McDonald <rcm@FreeBSD.org>
CommitDate: 2026-10-05 20:22:44 +0000

    e1000: Fix the flow control sysctl
    
    dev.em.N.fc and dev.igb.N.fc read and wrote a function-static variable
    shared by every em(4) and igb(4) device, so a read returned the last
    value written to any of them (3 until the first write), not the state of
    the device.  The softc value started as 0, which is also the value of
    "no flow control", while the hardware was set up for full flow control.
    As a result:
    
    - Writing 0 was taken for no change and did nothing, unless another
      value had been written to that device before.
    - em_reset() took a softc value of 0 for "not set", so a device set to 0
      went back to full flow control on the next init.
    - On igb(4) with more than one receive queue the driver enabled
      per-queue drop (SRRCTL.DROP_EN), which is meant for a MAC that does
      not send pause frames, although the MAC was told to send them.
    - Values out of range were accepted and ignored.
    
    A write only forced the MAC's flow control bits.  The pause bits
    advertised to the link partner, the pause thresholds and DROP_EN stayed
    as the last init had set them, and the next link event resolved flow
    control from the stale advertisement again.  On 82577 and 82578 (pchlan)
    a write could also turn on transmit flow control, which em_reset() keeps
    off there as a workaround.
    
    Start the softc value as full, report it, use it as it is in em_reset(),
    reject invalid values, and apply a change by reinitializing the
    interface, as the dmac and eee_control sysctls do.  This is the same fix
    as 68386f6b551e ("igc: Fix the flow control sysctl"); igc(4) inherited
    the handler from this driver.  On pchlan, remove transmit pause from the
    requested mode instead of replacing the mode with receive pause, so that
    the workaround stays and 0 still turns flow control off.
    
    Reviewed by:            kbowling
    MFC after:              2 weeks
    Sponsored by:           Rubicon Communications, LLC ("Netgate")
    Differential Revision:  https://reviews.freebsd.org/D60376
---
 sys/dev/e1000/if_em.c | 37 ++++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 17 deletions(-)

diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c
index eac1798c9d25..5a44956f2a88 100644
--- a/sys/dev/e1000/if_em.c
+++ b/sys/dev/e1000/if_em.c
@@ -544,6 +544,7 @@ static void	em_handle_link(void *);
 
 static void	em_enable_vectors_82574(if_ctx_t);
 
+static void	em_sysctl_request_reinit(struct e1000_softc *);
 static int	em_set_flowcntl(SYSCTL_HANDLER_ARGS);
 static int	em_sysctl_eee(SYSCTL_HANDLER_ARGS);
 static int	igb_sysctl_dmac(SYSCTL_HANDLER_ARGS);
@@ -1223,6 +1224,7 @@ em_add_device_sysctls(struct e1000_softc *sc)
 	    CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
 	    em_sysctl_print_fw_version, "A",
 	    "Prints FW/NVM Versions");
+	sc->fc = e1000_fc_full;
 	SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "fc",
 	    CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0,
 	    em_set_flowcntl, "I", "Flow Control");
@@ -5095,10 +5097,7 @@ em_reset(if_ctx_t ctx)
 	    roundup2(hw->mac.max_frame_size, 1024);
 	hw->fc.low_water = hw->fc.high_water - 1500;
 
-	if (sc->fc) /* locally set flow control value? */
-		hw->fc.requested_mode = sc->fc;
-	else
-		hw->fc.requested_mode = e1000_fc_full;
+	hw->fc.requested_mode = sc->fc;
 
 	if (hw->mac.type == e1000_80003es2lan)
 		hw->fc.pause_time = 0xFFFF;
@@ -5111,7 +5110,10 @@ em_reset(if_ctx_t ctx)
 	switch (hw->mac.type) {
 	case e1000_pchlan:
 		/* Workaround: no TX flow ctrl for PCH */
-		hw->fc.requested_mode = e1000_fc_rx_pause;
+		if (hw->fc.requested_mode == e1000_fc_full)
+			hw->fc.requested_mode = e1000_fc_rx_pause;
+		else if (hw->fc.requested_mode == e1000_fc_tx_pause)
+			hw->fc.requested_mode = e1000_fc_none;
 		hw->fc.pause_time = 0xFFFF; /* override */
 		if (if_getmtu(ifp) > ETHERMTU) {
 			hw->fc.high_water = 0x3500;
@@ -8533,34 +8535,35 @@ em_add_int_delay_sysctl(struct e1000_softc *sc, const char *name,
 static int
 em_set_flowcntl(SYSCTL_HANDLER_ARGS)
 {
-	int error;
-	static int input = 3; /* default is full */
+	int error, input;
 	struct e1000_softc *sc = (struct e1000_softc *) arg1;
 
+	input = sc->fc;
 	error = sysctl_handle_int(oidp, &input, 0, req);
 
 	if ((error) || (req->newptr == NULL))
 		return (error);
 
-	if (input == sc->fc) /* no change? */
-		return (error);
-
 	switch (input) {
 	case e1000_fc_rx_pause:
 	case e1000_fc_tx_pause:
 	case e1000_fc_full:
 	case e1000_fc_none:
-		sc->hw.fc.requested_mode = input;
-		sc->fc = input;
 		break;
 	default:
-		/* Do nothing */
-		return (error);
+		return (EINVAL);
 	}
 
-	sc->hw.fc.current_mode = sc->hw.fc.requested_mode;
-	e1000_force_mac_fc(&sc->hw);
-	return (error);
+	if (input == sc->fc) /* no change? */
+		return (0);
+
+	/*
+	 * The mode is advertised to the link partner and also decides the
+	 * pause thresholds and per-queue drop, so it takes a reinit to apply.
+	 */
+	sc->fc = input;
+	em_sysctl_request_reinit(sc);
+	return (0);
 }
 
 static void

From nobody Mon Oct  5 22:19:30 2026
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 4hzDMR4D8jz6vVrm
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 22:19: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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzDMR0WCfz3Gtq
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 22:19:31 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791238771;
	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=63XP8l+4A2DZR/3iBg1w/T7ddfp5r20Ae2p8FClgUfE=;
	b=hVRU16qMgfXcoECFg7snVQk10FxVYNdbsts9yOVWmZ4PiuIggoH6K9jR0y6GCjwKrUKUu5
	FrUK6/SZS5U0EQFm98GkJWglO/O1K5qxs2eXjKl3Cj0kTP6Wgz3hkDRJnBicC32KgMW2wL
	sysrT9uW/Q0itjHIhSt4tKqYL3I2/KyvPqS/3n5B7QsGfSntQyuoP3RtSHWLzdq/5ZxwYb
	y5zxXy2BuGrC3XzONH0r3Tt/X9TNTuUfexOFvYa5smIzSzylQRo+uZYQMFZCdjhKAq4P+S
	mi26B5F7yZbXQ8lk5OZYqYdbYyUTTk+K9EtNd/jwZRzhU6K0maDk9SNUHlHZ6A==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791238771;
	b=UA5a9QUeYEkjaTlKoLmAtZk7NHua9HMincRx0rfuhYn/V2Ity3KTdCuegsRd27/6IxRdUT
	0/gtMkZQDxSbwqvLfNBJX1CSx2vPXcjpUPMSYdfTeqzbEZgDnP9GGJ+Jr7MZU/f38/Xj65
	1FaZJoKUmM1FNGDn5znRLRL7/j2cmu0HBNnJ1s6AJWjfYie4nuJ83g4s7CZs+eXEmPz7Vs
	1DqR1opaEqDOaR6gKHMliPBr03ukztf0AOLYTlCwSEGRNR+eH2y/i041bEJK5xm1sIIzxg
	bhvpab5etYBXPFKb0NmijUheiCOLPk3pMBSpnRfp2y7jbvoFvVIrPqfOhN04uw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791238771;
	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=63XP8l+4A2DZR/3iBg1w/T7ddfp5r20Ae2p8FClgUfE=;
	b=s8WyP+q9QrhhLSb6aan4/5inPJvIFFFJyEtmgbSuSr5FxnCpkBfmkYCJf6GB0J/DJMvNoi
	RAe5Vc8iYE6Xc0+3TwW1+7qSJtlGQTD6i4Bh6LsteL5rzHuMdP63md6APKe0GZTzycb7kT
	iX5Jc1+nif0LGZhzBr/UX0kUzMmQvVxjzsPOPe6n6cCD48eY7byRFFrVGAVSxjA7ZULDvP
	+RE943OI/Zj762KN7orPunE32FG9ZxLcs/WYrEfOyPlJQ4qXpu92Q43otQ280fB+Mc6uh7
	CGxhTMY5KjKKONcj1Ix02aPpk/o9aemx+tMi8cHjoJ7dkFuEG0kqPW7rEm7e2A==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzDMQ5kj5zfx1
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 22:19:30 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 22c98
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 22:19:30 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Konstantin Belousov <kib@FreeBSD.org>
Subject: git: 499901dd7a0a - main - ufssuspend(4): mark non-passable
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: kib
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 499901dd7a0afc77745ede85c4e6ec063d43a84d
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 22:19:30 +0000
Message-Id: <6ac42272.22c98.6c3bbe2a@gitrepo.freebsd.org>

The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=499901dd7a0afc77745ede85c4e6ec063d43a84d

commit 499901dd7a0afc77745ede85c4e6ec063d43a84d
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-10-04 00:50:57 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-10-05 21:56:53 +0000

    ufssuspend(4): mark non-passable
    
    This fixes long-standing issue where ufssuspend file descriptor could
    leak over fork or be passed over unix domain socket, and then closing it
    in the opener would not unsuspend the file system.
    
    It should not affect the well-behaving growfs(8) utility, but makes the
    userspace API safer on principle.
    
    Reviewed by:    markj
    Tested by:      pho (previous version)
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D60285
---
 sys/ufs/ffs/ffs_suspend.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sys/ufs/ffs/ffs_suspend.c b/sys/ufs/ffs/ffs_suspend.c
index c35831c4bb96..9eb6d328e6ca 100644
--- a/sys/ufs/ffs/ffs_suspend.c
+++ b/sys/ufs/ffs/ffs_suspend.c
@@ -60,6 +60,7 @@ static struct cdevsw ffs_susp_cdevsw = {
 	.d_write =	ffs_susp_rdwr,
 	.d_ioctl =	ffs_susp_ioctl,
 	.d_name =	"ffs_susp",
+	.d_flags =	D_NONPASSABLE,
 };
 
 static struct cdev *ffs_susp_dev;

From nobody Mon Oct  5 22:19:29 2026
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 4hzDMW0w10z6vVxJ
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 22:19:35 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzDMV75KMz3H0g
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 22:19:34 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791238775;
	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=GcQ+hkUe2WMtJHtATbKDJjeMkPdEqhIo3IqXfHFpwpo=;
	b=O8G2+7E0wdiQVo7OWQVK7hy7wtUdnLGWJL6JlmYo6xMihkBke3+5gd8oCImDu7OCPoVnHz
	84QbloY3bx6jG9MUZg079BXeYHmRx7Q4WKwwf+nToibZI3Ypcdtk9yp5fksZYIAyOl59Xy
	0h6MSPjzumABuAopAZDRlJmM5i2UtmJoFyKGh8L8B96SC5Mt5JYBsaNOe/7SWm056+Lm6V
	PdbqPL+3//VIP6EnkpAD6LvC0XE5w/yClObtUyZprIqbrnGnP7MT+lwd57U0SzlHy9XrBK
	pCxcIbftkhjyR/+mMJ9toWvn4Ri5DGO/KEbeDT27G7Bi918pTYYCX/aiBAlVpg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791238775;
	b=WXWL9gapwbYrl7InvRdtEdvgRyXZl6PYo0PcWdbOrVdA+Y+wrtaqYmYf19lhQEPLCqpl0A
	rYy6Bro8LLH465QqW4r8twcmkB6c9adR6Qd99XfSImb2oVcYU9UrIgEpMBMTqaEnIX3wCE
	wX0mnErcXX3qTNBi40qsUUEYyJX1fR1b1C6NXMXl8KM+0cFpVdwK2Nqtg84AR+g6z2LRYJ
	cbVT0KB1Rz0pMSMqv+Nj1FgaeQMw0Bpgy1kqXbaLWCfyc3yptxkIVF9a16S2QPy3DIluY4
	2drPK1eROw6A8C1Yhm2CEdG/AI9wQIzLh9WoEMSt0B65Vl6W+4KVZqQLtCZxEg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791238775;
	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=GcQ+hkUe2WMtJHtATbKDJjeMkPdEqhIo3IqXfHFpwpo=;
	b=bbh1dDxvFOCs87dnwkevT4hOnNIv9BcdxKM1nrUoy8tBStdRLLhdRtYhbg5UtA3XCXxljG
	rWOAAUC/SZELtahnqKpovNbjTN7znzGRexIbn2Gmnr7u97TXANAdOdSEcHNJj9Vbu/QyQr
	5i/I+FQaEwTzkzhXh02USUXpolYu7M6UlszUKz3Gb8uVrT/xmAnIN9DaPwjQsQEMg70HIM
	6haOUMOouL0M3KbA+Lb3QUDpiP2/qHfqYUMI6+VoZOd5qdW3LXjbSqrWuVmQQvr4H3r8fv
	fa2JjXw9Y4oq2YqQDnirgKtWna9LWFCxkNYY9Z75mcyUFYJDFau+KYi3lvfjKQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzDMV5SBczgSq
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 22:19:34 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 224c8
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 22:19:29 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Konstantin Belousov <kib@FreeBSD.org>
Subject: git: 850d4562928e - main - cdevsw: add D_NONPASSABLE flag
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: kib
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 850d4562928ea9308dd9188d5014bcabe7049938
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 22:19:29 +0000
Message-Id: <6ac42271.224c8.2994af20@gitrepo.freebsd.org>

The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=850d4562928ea9308dd9188d5014bcabe7049938

commit 850d4562928ea9308dd9188d5014bcabe7049938
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-10-04 00:50:23 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-10-05 21:56:53 +0000

    cdevsw: add D_NONPASSABLE flag
    
    to make the opened device files non-passable.
    
    Reviewed by:    markj
    Tested by:      pho (previous version)
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D60285
---
 sys/fs/devfs/devfs_vnops.c | 27 +++++++++++++++++++++++++--
 sys/sys/conf.h             |  2 ++
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c
index d594b1584757..cd6cd1959d6b 100644
--- a/sys/fs/devfs/devfs_vnops.c
+++ b/sys/fs/devfs/devfs_vnops.c
@@ -67,6 +67,7 @@
 static struct vop_vector devfs_vnodeops;
 static struct vop_vector devfs_specops;
 static const struct fileops devfs_ops_f;
+static const struct fileops devfs_ops_nonpassable_f;
 
 #include <fs/devfs/devfs.h>
 #include <fs/devfs/devfs_int.h>
@@ -1344,8 +1345,11 @@ devfs_open(struct vop_open_args *ap)
 	if (fp == NULL)
 		return (error);
 #endif
-	if (fp->f_ops == &badfileops)
-		finit(fp, fp->f_flag, DTYPE_VNODE, dev, &devfs_ops_f);
+	if (fp->f_ops == &badfileops) {
+		finit(fp, fp->f_flag, DTYPE_VNODE, dev,
+		    (dsw->d_flags & D_NONPASSABLE) == 0 ? &devfs_ops_f :
+		    &devfs_ops_nonpassable_f);
+	}
 	return (error);
 }
 
@@ -2096,6 +2100,25 @@ static const struct fileops devfs_ops_f = {
 	.fo_flags =	DFLAG_PASSABLE | DFLAG_SEEKABLE
 };
 
+static const struct fileops devfs_ops_nonpassable_f = {
+	.fo_read =	devfs_read_f,
+	.fo_write =	devfs_write_f,
+	.fo_truncate =	devfs_truncate_f,
+	.fo_ioctl =	devfs_ioctl_f,
+	.fo_poll =	devfs_poll_f,
+	.fo_kqfilter =	devfs_kqfilter_f,
+	.fo_stat =	devfs_stat_f,
+	.fo_close =	devfs_close_f,
+	.fo_chmod =	vn_chmod,
+	.fo_chown =	vn_chown,
+	.fo_sendfile =	vn_sendfile,
+	.fo_seek =	vn_seek,
+	.fo_fill_kinfo = vn_fill_kinfo,
+	.fo_mmap =	devfs_mmap_f,
+	.fo_cmp =	devfs_cmp_f,
+	.fo_flags =	DFLAG_SEEKABLE
+};
+
 /* Vops for non-CHR vnodes in /dev. */
 static struct vop_vector devfs_vnodeops = {
 	.vop_default =		&default_vnodeops,
diff --git a/sys/sys/conf.h b/sys/sys/conf.h
index a6713ee91190..bf626298c05f 100644
--- a/sys/sys/conf.h
+++ b/sys/sys/conf.h
@@ -177,6 +177,8 @@ typedef int dumper_hdr_t(struct dumperinfo *di, struct kerneldumpheader *kdh);
 #define	D_GIANTOK	0x00200000	/* suppress warning about using Giant */
 #define	D_NEEDGIANT	0x00400000	/* driver want Giant */
 #define	D_NEEDMINOR	0x00800000	/* driver uses clone_create() */
+#define	D_NONPASSABLE	0x01000000	/* file is not passable with
+					   SCM_RIGHTS or fork(2) */
 
 /*
  * Version numbers.

From nobody Mon Oct  5 22:23:25 2026
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 4hzDS31jCTz6vWPX
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 22:23: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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzDS3052Jz3J7N
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 22:23:31 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791239011;
	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=QO82SumntZypWXLJMTkkfRLikt3Amg/HeDY6FU8348M=;
	b=LPoeJHSm7ht/R8NalY9WgxYWf74pg7YH/qH0G3A58Nh5Hih6KIjrakdzM//ECm0mMX59LL
	VHHV6dSf2syPJZ5hbjBjeJtOg0I9adWrrgvrfHQ9uvGh+clb0Qyd7nwQSuX6eXn7nkBrD5
	ji7jk/+15h8eHzgxHlmdo4R9yD7uIpsJQP3w8cC9S1BhJUmpFQFPovpLLSm45UbmJv0nvj
	60YCYVkwZmvalkq8MU9sqpH5zCD81cwIdHCWX6uoqerRoZBh2SqFm1OGDNiG8EqOfAJL7o
	5s53jiQ9Vn36wkpUpWa5nGUFpOBKsQIsDbFkmn+zaPx8ngmmsIxmttSeNKO8ow==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791239011;
	b=Yip380GKlQymwadaQURS6gR31QRQRrRJdWbApSg8H12Rxy7CbilPuhLjbv80sGx9xxq/Vi
	VNcY0Bx9Jm/YXBZf9is6Zl7/E30SP35WOkMbndWQFLpn4aqyzgSPE/F4sRa1KWR40Cd/CN
	lYWYR1PxQOtIbi+AXAv6JE6fhRMJFf3Mn1n3LC9RzGknARunadacg55ueQMV2fdpp19d30
	BqJwLvbq4BldZPIzrbkrIeaEnk5jRFdWGQ+5jDVQ4qRUw8ROnZlFIONY4u73/zb2rLENv4
	VpHS+OFnoQhKORh6PiefZb/OnZZN2BXm5+wf3cQ3JUQ9QI26KF0OxpATQwl9nQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791239011;
	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=QO82SumntZypWXLJMTkkfRLikt3Amg/HeDY6FU8348M=;
	b=YbeT+jYqAJTihxAef0uqnyKFD3YwhJfGGIpDg5DwXLSF65Z4qlLaf6yqVYMRhQtddqAWSl
	gtp1e283zEe5eWtD6w1ZhbKyNUQdO0nbGFG+WjBfzfyfWwbqyL5axuoo8qN2ynfx2nPdim
	RDfHrdEJ9COigRkpSTCj78109/ctPNuYRzJWgM6EuTyYVRhocc3QOW7x6fiMMtN3KNlmLT
	l2nPbf7fQLLrq6PBw9PwZ1VCMApP/AIWq9TUIXXemWEvfB+uS35o43haf86iVXwHLo0cOE
	CSij4Mj9Qr/5yWd+xD2qIgsVMzuzLPBVRCKureW3Gezpsa9binzguZw1ewiUGg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzDS26FNFzgkt
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 22:23:30 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 22fb1
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 22:23:25 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Mark Johnston <markj@FreeBSD.org>
Subject: git: 4bb60157646d - main - netinet: Deprecate OSIOCAIFADDR and OSIOCAIFADDR_IN6
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: markj
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 4bb60157646df86c77cea130c66f63f119947709
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 22:23:25 +0000
Message-Id: <6ac4235d.22fb1.50d86a6b@gitrepo.freebsd.org>

The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=4bb60157646df86c77cea130c66f63f119947709

commit 4bb60157646df86c77cea130c66f63f119947709
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2026-10-05 22:21:39 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2026-10-05 22:23:12 +0000

    netinet: Deprecate OSIOCAIFADDR and OSIOCAIFADDR_IN6
    
    Requested by:   glebius
    Reviewed by:    pouria, glebius
    MFC after:      1 week
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D60247
---
 sys/netinet/in.c   | 3 +++
 sys/netinet6/in6.c | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/sys/netinet/in.c b/sys/netinet/in.c
index 508bc43bc63c..7ebcdf993d26 100644
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -384,6 +384,9 @@ in_control_ioctl(u_long cmd, void *data, struct ifnet *ifp,
 		sx_xunlock(&in_control_sx);
 		return (error);
 	case OSIOCAIFADDR:	/* 9.x compat */
+		gone_in(17, "%s (pid %d) uses OSIOCAIFADDR",
+		    curproc->p_comm, curproc->p_pid);
+		/* FALLTHROUGH */
 	case SIOCAIFADDR:
 		sx_xlock(&in_control_sx);
 		error = in_aifaddr_ioctl(cmd, data, ifp, cred);
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c
index aa0528552163..cb0c25ec78d2 100644
--- a/sys/netinet6/in6.c
+++ b/sys/netinet6/in6.c
@@ -275,6 +275,8 @@ in6_control_ioctl(u_long cmd, void *data,
 	 * Compat to make pre-10.x ifconfig(8) operable.
 	 */
 	if (cmd == OSIOCAIFADDR_IN6) {
+		gone_in(17, "%s (pid %d) uses OSIOCAIFADDR_IN6",
+		    curthread->td_proc->p_comm, curthread->td_proc->p_pid);
 		cmd = SIOCAIFADDR_IN6;
 		ifra = &tmpifra;
 		memset(ifra, 0, sizeof(*ifra));

From nobody Mon Oct  5 22:49:29 2026
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 4hzF270Ch5z6vYBM
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 22:49:34 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzF2653vFz3LJs
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 22:49:34 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791240574;
	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=lRebtpZCFAzMSEwnSEx091yYr5KHL3dwHX+0X9yXW/Q=;
	b=IVJ51hrh2LId92Zg2QIfbci4bJZResDDP5nnUyG3e/Tk6xXyDF23W1wCKn4wGIqyy4I/tC
	YI6XvWrn9Cbqrl/ky3EbooZ/hP3U5ZACBYSWaj+oDSf3nQtSg75lvnrtp8G5SJF4v9R7a6
	eixHLQwuf2bqbTTLYPkM94AR6vyBzIprkOI1tsHDSqLsTL0NPR8bZqeypraWC1oLJ1cxiT
	No+e2eHugrJPRY/GbdC7zZ+2FYlw3LTQlLvm+AXpQy9Hclg1+S0r0cxLl0vf/WHk42PPow
	p4x9FTdErhw3gKjxJywB6mCEYAUUnvGwH51cqtTa/K5X+hOWhueVyUIu0k+ZPA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791240574;
	b=u/KB3QKdChfnOdeZVdoQLaNdXXzQOp2/NGZSsrHleHdi3+7m5+9fQ1XRqLycnD+jO3EC44
	R/ToGZsUnjY37c+7SOVdI5PFXtXZdZjHiAVO/A9rcJ0kyAzsaJLnOb8sBGbukFCJcH5ry6
	/0DN2bNYl4GaZOSi/smF0V2/R21WyHmFToCbID2Y+hlBsPDpKHYbrjEUTxfrZrj1Fl6rXY
	KdR8jRYA4GjPGsFY3SBgz1bbICwgLh/PfSZpkeUJ73so30wy1wOVDwDuAmY/OxIY+HeKhi
	0kiVuXfxhoJrY3Dy0tN8rhvDVwNLy/PuwI8Y7buru1kbKH0rGO3xJ4oSPczBLA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791240574;
	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=lRebtpZCFAzMSEwnSEx091yYr5KHL3dwHX+0X9yXW/Q=;
	b=pwH/Rnu2AFgCCouztZKSvuYQMoYuR35qsOtv9oQvLj96pW3mMmTzEcNQy0FU6PkE0NduwE
	+Fm3sU8ZCd4Vu9A0cpr93OcUFk4SmBhpeO/ahj/gh7cnmkKv9Mra7qKdIfwxyP37r7O23T
	uhFneHR5fR4bZTNwNt97bDWClqzBvmJjUTLqIbCuF1rYMHpVKf9UJtfY6tQpDejLaomXh6
	+P1e1zY3a69TP10M2htOfbDVz81Amck5+pB2n+MGfw9GIWBqvCjv+o+8nPME+8xq9x0Zt2
	xJAsnxGwn2GJvQFGWLu3uNx9c9FaCKtSw/GwTV1AnphAi4Xic+uReRJEGVLIZQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzF263bWtzh4K
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 22:49:34 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 2608d
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 22:49:29 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Enji Cooper <ngie@FreeBSD.org>
Subject: git: bb5f10e51bd5 - main - linux: implement sched_getattr()
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: ngie
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: bb5f10e51bd53771f1a438f36f554256fcbd7d08
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 22:49:29 +0000
Message-Id: <6ac42979.2608d.d368a5e@gitrepo.freebsd.org>

The branch main has been updated by ngie:

URL: https://cgit.FreeBSD.org/src/commit/?id=bb5f10e51bd53771f1a438f36f554256fcbd7d08

commit bb5f10e51bd53771f1a438f36f554256fcbd7d08
Author:     Enji Cooper <ngie@FreeBSD.org>
AuthorDate: 2026-10-05 22:48:22 +0000
Commit:     Enji Cooper <ngie@FreeBSD.org>
CommitDate: 2026-10-05 22:49:09 +0000

    linux: implement sched_getattr()
    
    This change adds the necessary glue to translate Linux scheduler policy
    and priority from FreeBSD so this information is available to Linux
    applications.
    
    This unbreaks using the Linux version of Chromium on FreeBSD.
    
    This change was originally submitted via [freebsd/freebsd-src#2370][github-pr].
    
    MFC after:      2 weeks
    PR:     297468
    Co-Authored-By: Enji Cooper <ngie@FreeBSD.org>
    Signed-off-by:  Joao Bonifacio <joaoboni017@gmail.com>
    
    [github-pr]: https://github.com/freebsd/freebsd-src/pull/2370
    
    Differential Revision:  https://reviews.freebsd.org/D60214
---
 sys/compat/linux/linux_dummy.c |  1 -
 sys/compat/linux/linux_misc.c  | 89 ++++++++++++++++++++++++++++++++++++++++++
 sys/compat/linux/linux_misc.h  | 19 ++++++++-
 3 files changed, 106 insertions(+), 3 deletions(-)

diff --git a/sys/compat/linux/linux_dummy.c b/sys/compat/linux/linux_dummy.c
index dfb1c90e9abf..873e2cef3879 100644
--- a/sys/compat/linux/linux_dummy.c
+++ b/sys/compat/linux/linux_dummy.c
@@ -97,7 +97,6 @@ DUMMY(process_vm_writev);
 /* Linux 3.8: */
 DUMMY(finit_module);
 DUMMY(sched_setattr);
-DUMMY(sched_getattr);
 /* Linux 3.18: */
 DUMMY(bpf);
 /* Linux 3.19: */
diff --git a/sys/compat/linux/linux_misc.c b/sys/compat/linux/linux_misc.c
index 65c9044dd3bd..9e7f6411df17 100644
--- a/sys/compat/linux/linux_misc.c
+++ b/sys/compat/linux/linux_misc.c
@@ -29,6 +29,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <sys/cdefs.h>
 #include <sys/param.h>
 #include <sys/fcntl.h>
 #include <sys/jail.h>
@@ -116,6 +117,39 @@ struct l_pselect6arg {
 	l_size_t	ss_len;
 };
 
+/**
+ * `SCHED_ATTR_SIZE_VER0` represents the size of the initial published structure.
+ *
+ * See `linux/kernel/sched/syscalls.c` for more details.
+ */
+#define LINUX_SCHED_ATTR_SIZE_VER0 48
+/**
+ * Linux struct sched_attr
+ */
+struct linux_sched_attr {
+	l_uint 		size;
+	l_uint 		sched_policy;
+	uint64_t 	sched_flags;
+	int32_t  	sched_nice;
+	l_uint 		sched_priority;
+
+	uint64_t 	sched_runtime;
+	uint64_t 	sched_deadline;
+	uint64_t 	sched_period;
+
+	l_uint 		sched_util_min;
+	l_uint 		sched_util_max;
+};
+/**
+ * `.size` must be checked at runtime as well in the syscall to match the
+ * Linux implementation.
+ *
+ * This `_Static_assert(..)` is a sanity check to ensure that the structure
+ * meets the minimum expected bar.
+ */
+_Static_assert(sizeof(struct linux_sched_attr) >= LINUX_SCHED_ATTR_SIZE_VER0,
+    "struct linux_sched_attr size");
+
 static int	linux_utimensat_lts_to_ts(struct l_timespec *,
 			struct timespec *);
 #if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32))
@@ -1350,6 +1384,61 @@ linux_sched_getscheduler(struct thread *td,
 	return (error);
 }
 
+int
+linux_sched_getattr(struct thread *td, struct linux_sched_getattr_args *args)
+{
+	struct linux_sched_attr attr;
+	struct sched_param sched_param;
+	struct thread *tdt;
+	int error, policy;
+
+	if (args->attr == NULL || args->pid < 0 || args->flags != 0 ||
+	    args->size < LINUX_SCHED_ATTR_SIZE_VER0 || args->size > PAGE_SIZE)
+		return (EINVAL);
+
+	tdt = linux_tdfind(td, args->pid, -1);
+	if (tdt == NULL)
+		return (ESRCH);
+
+	error = kern_sched_getscheduler(td, tdt, &policy);
+	if (error) {
+		PROC_UNLOCK(tdt->td_proc);
+		return (error);
+	}
+
+	error = kern_sched_getparam(td, tdt, &sched_param);
+	PROC_UNLOCK(tdt->td_proc);
+	if (error)
+		return (error);
+
+	memset(&attr, 0, sizeof(attr));
+
+	attr.size = MIN(args->size, sizeof(attr));
+
+	if (linux_map_sched_prio) {
+		switch (policy) {
+		case SCHED_OTHER:
+			sched_param.sched_priority = 0;
+			break;
+		case SCHED_FIFO:
+		case SCHED_RR:
+			/**
+			 * Map [0, RTP_PRIO_MAX - RTP_PRIO_MIN] to
+			 * [1, LINUX_MAX_RT_PRIO - 1] (rounding up).
+			 */
+			sched_param.sched_priority =
+			    (sched_param.sched_priority *
+				    (LINUX_MAX_RT_PRIO - 1) +
+				(RTP_PRIO_MAX - RTP_PRIO_MIN - 1)) /
+				(RTP_PRIO_MAX - RTP_PRIO_MIN) + 1;
+			break;
+		}
+	}
+	attr.sched_priority = sched_param.sched_priority;
+
+	return (copyout(&attr, args->attr, args->size));
+}
+
 int
 linux_sched_get_priority_max(struct thread *td,
     struct linux_sched_get_priority_max_args *args)
diff --git a/sys/compat/linux/linux_misc.h b/sys/compat/linux/linux_misc.h
index fb77784ddea8..44dd8e06fcb7 100644
--- a/sys/compat/linux/linux_misc.h
+++ b/sys/compat/linux/linux_misc.h
@@ -109,10 +109,25 @@
 #define	__LINUX_NPXCW__		0x37f
 #endif
 
-/* Scheduling policies */
-#define	LINUX_SCHED_OTHER	0
+/**
+ * Linux scheduling policies.
+ *
+ * Ref: `linux/include/uapi/linux/sched.h`
+ */
+#define	LINUX_SCHED_NORMAL	0
+/* `SCHED_OTHER` is a legacy alias for `SCHED_NORMAL`. */
+#define	LINUX_SCHED_OTHER	LINUX_SCHED_NORMAL
 #define	LINUX_SCHED_FIFO	1
 #define	LINUX_SCHED_RR		2
+/**
+ * FreeBSD does not implement analogs for these Linux scheduling policies. This
+ * is mostly here for reference and to be self-documenting in `sched_set*()`.
+ */
+#define	LINUX_SCHED_BATCH	3
+/* LINUX_SCHED_ISO: slot reserved, but not implemented upstream. */
+#define	LINUX_SCHED_IDLE	5
+#define	LINUX_SCHED_DEADLINE	6
+#define	LINUX_SCHED_EXT		7
 
 #define	LINUX_MAX_RT_PRIO	100
 

From nobody Mon Oct  5 23:22:09 2026
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 4hzFlm1mg8z6vb4k;
	Mon, 05 Oct 2026 23:22:12 +0000 (UTC)
	(envelope-from markj@freebsd.org)
Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4])
	(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 "smtp.freebsd.org", Issuer "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzFlm1K1qz3PHh;
	Mon, 05 Oct 2026 23:22:12 +0000 (UTC)
	(envelope-from markj@freebsd.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791242532;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=GUX18+8b60HabjAyMAfXvmqNLCoikbArQyU9fcOv1t0=;
	b=jpSFKuswaMw/MUcl63rfD3XsnWBiJ0YLRQLmNfoKNHYwFGuaKOSaYY3vqzW48l/ubP+maa
	mtRB01UgYoRXojtAI1G4Bfn5NNCOh/SeVwBzaygUAHf4bRG91MxOAQAVDeE/IVJ761rCM4
	jWYErunynJHTmkQCwT2P8bvDNlPSGWcAWSSDYo15xaLXVQe2PEU8idtPso9Y79xaWDK5Dr
	qRlcu/h/nHZL2u3+jBlUwwhLZCv6BYH4fjxcZ1tdURPk7gx9y2yUwg6KUViX9S1QJg6am1
	xLHCWIBOOuGjM5pbudyc+6RXE7B263STf0Zg5fcYxynOLN9CBiJElOr+djyt1A==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791242532;
	b=NaSZNweVB7QHP2qgJP8Jn6gMk4OG/TUYecl4pWmZdOl5gRyjwC+rRrSJR2t/joypY+sy5j
	g/DeVmGaamhJpMn/csOrVo++B8g8y7puQiGzuudFvkX1Zi6GoUZ/d0bbRwvBHRYn6Czmck
	w6p/YDd2oGmW14KXrH+4bbrZA7OzwyQkQ/6OjU6InjR6nRmz5WZ+HXYSsbZtxlgzOf8LZZ
	9yqcbcChAoZMDuZg3+A/X1YfsAnWb90nwbiWcXb0N+V3CisA9eneLpMFOhwWPVAZiBat6s
	ZAkzlZZB+e0NaX+sjZZPZ7xSzEiU05JMrynobo7UYV2qi03jWqlozuZ44zUGUg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791242532;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=GUX18+8b60HabjAyMAfXvmqNLCoikbArQyU9fcOv1t0=;
	b=KqXLpeLjVbyYGkfkHWHq4xwAdXQRENwQysDfo8Z6SwINChDVhuo0RTIkwuU5WbHjz37fyQ
	1y230VFHPzOP2Q5ttOd7taI7OrouzCEx5os+UA9dKuL+vWHaMSZomMvceA4taUSacBY0TK
	uV8EhnDOu/gqA0RB5biAZ52D/LF181j/l8L70fAy2V4pgLelMtj5pEwrQT9+shayRR/Hco
	i+0feSr5wMno1KAL2ex6DtYV6wXpedZogElpkE2yjXB45Snh6joJsYx2XYFOyajUd1Iv1m
	2aMzr/sSafpeVOINt/jCQgnCaCu2KgweLdKmglHV1vD6Wz0i3PACD+GXHCf8NA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from nuc (198-84-224-249.cpe.teksavvy.com [198.84.224.249])
	(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)
	(Authenticated sender: markj)
	by smtp.freebsd.org (Postfix) with ESMTPSA id 4hzFll5qPhzmqr;
	Mon, 05 Oct 2026 23:22:11 +0000 (UTC)
	(envelope-from markj@freebsd.org)
Date: Mon, 5 Oct 2026 19:22:09 -0400
From: Mark Johnston <markj@freebsd.org>
To: Enji Cooper <ngie@freebsd.org>
Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org,
	dev-commits-src-main@freebsd.org
Subject: Re: git: bb5f10e51bd5 - main - linux: implement sched_getattr()
Message-ID: <asQxIRIqvfkVQcCc@nuc>
References: <6ac42979.2608d.d368a5e@gitrepo.freebsd.org>
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <6ac42979.2608d.d368a5e@gitrepo.freebsd.org>

On Mon, Oct 05, 2026 at 10:49:29PM +0000, Enji Cooper wrote:
> The branch main has been updated by ngie:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=bb5f10e51bd53771f1a438f36f554256fcbd7d08
> 
> commit bb5f10e51bd53771f1a438f36f554256fcbd7d08
> Author:     Enji Cooper <ngie@FreeBSD.org>
> AuthorDate: 2026-10-05 22:48:22 +0000
> Commit:     Enji Cooper <ngie@FreeBSD.org>
> CommitDate: 2026-10-05 22:49:09 +0000
> 
>     linux: implement sched_getattr()
>     
>     This change adds the necessary glue to translate Linux scheduler policy
>     and priority from FreeBSD so this information is available to Linux
>     applications.
>     
>     This unbreaks using the Linux version of Chromium on FreeBSD.
>     
>     This change was originally submitted via [freebsd/freebsd-src#2370][github-pr].
>     
>     MFC after:      2 weeks
>     PR:     297468
>     Co-Authored-By: Enji Cooper <ngie@FreeBSD.org>

The commit author is already set to you.

>     Signed-off-by:  Joao Bonifacio <joaoboni017@gmail.com>
>     
>     [github-pr]: https://github.com/freebsd/freebsd-src/pull/2370
>     
>     Differential Revision:  https://reviews.freebsd.org/D60214

https://docs.freebsd.org/en/articles/committers-guide/#_include_appropriate_metadata_in_a_footer
documents the right way to label commits with pull request metadata.
Please follow it instead of inventing your own format.

> ---
>  sys/compat/linux/linux_dummy.c |  1 -
>  sys/compat/linux/linux_misc.c  | 89 ++++++++++++++++++++++++++++++++++++++++++
>  sys/compat/linux/linux_misc.h  | 19 ++++++++-
>  3 files changed, 106 insertions(+), 3 deletions(-)
> 
> diff --git a/sys/compat/linux/linux_dummy.c b/sys/compat/linux/linux_dummy.c
> index dfb1c90e9abf..873e2cef3879 100644
> --- a/sys/compat/linux/linux_dummy.c
> +++ b/sys/compat/linux/linux_dummy.c
> @@ -97,7 +97,6 @@ DUMMY(process_vm_writev);
>  /* Linux 3.8: */
>  DUMMY(finit_module);
>  DUMMY(sched_setattr);
> -DUMMY(sched_getattr);
>  /* Linux 3.18: */
>  DUMMY(bpf);
>  /* Linux 3.19: */
> diff --git a/sys/compat/linux/linux_misc.c b/sys/compat/linux/linux_misc.c
> index 65c9044dd3bd..9e7f6411df17 100644
> --- a/sys/compat/linux/linux_misc.c
> +++ b/sys/compat/linux/linux_misc.c
> @@ -29,6 +29,7 @@
>   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>   */
>  
> +#include <sys/cdefs.h>
>  #include <sys/param.h>
>  #include <sys/fcntl.h>
>  #include <sys/jail.h>
> @@ -116,6 +117,39 @@ struct l_pselect6arg {
>  	l_size_t	ss_len;
>  };
>  
> +/**
> + * `SCHED_ATTR_SIZE_VER0` represents the size of the initial published structure.
> + *
> + * See `linux/kernel/sched/syscalls.c` for more details.
> + */
> +#define LINUX_SCHED_ATTR_SIZE_VER0 48
> +/**
> + * Linux struct sched_attr
> + */
> +struct linux_sched_attr {
> +	l_uint 		size;
> +	l_uint 		sched_policy;
> +	uint64_t 	sched_flags;
> +	int32_t  	sched_nice;
> +	l_uint 		sched_priority;
> +
> +	uint64_t 	sched_runtime;
> +	uint64_t 	sched_deadline;
> +	uint64_t 	sched_period;
> +
> +	l_uint 		sched_util_min;
> +	l_uint 		sched_util_max;
> +};
> +/**
> + * `.size` must be checked at runtime as well in the syscall to match the
> + * Linux implementation.
> + *
> + * This `_Static_assert(..)` is a sanity check to ensure that the structure
> + * meets the minimum expected bar.
> + */
> +_Static_assert(sizeof(struct linux_sched_attr) >= LINUX_SCHED_ATTR_SIZE_VER0,
> +    "struct linux_sched_attr size");
> +
>  static int	linux_utimensat_lts_to_ts(struct l_timespec *,
>  			struct timespec *);
>  #if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32))
> @@ -1350,6 +1384,61 @@ linux_sched_getscheduler(struct thread *td,
>  	return (error);
>  }
>  
> +int
> +linux_sched_getattr(struct thread *td, struct linux_sched_getattr_args *args)
> +{
> +	struct linux_sched_attr attr;
> +	struct sched_param sched_param;
> +	struct thread *tdt;
> +	int error, policy;
> +
> +	if (args->attr == NULL || args->pid < 0 || args->flags != 0 ||
> +	    args->size < LINUX_SCHED_ATTR_SIZE_VER0 || args->size > PAGE_SIZE)
> +		return (EINVAL);
> +
> +	tdt = linux_tdfind(td, args->pid, -1);
> +	if (tdt == NULL)
> +		return (ESRCH);
> +
> +	error = kern_sched_getscheduler(td, tdt, &policy);
> +	if (error) {
> +		PROC_UNLOCK(tdt->td_proc);
> +		return (error);
> +	}
> +
> +	error = kern_sched_getparam(td, tdt, &sched_param);
> +	PROC_UNLOCK(tdt->td_proc);
> +	if (error)
> +		return (error);
> +
> +	memset(&attr, 0, sizeof(attr));
> +
> +	attr.size = MIN(args->size, sizeof(attr));
> +
> +	if (linux_map_sched_prio) {
> +		switch (policy) {
> +		case SCHED_OTHER:
> +			sched_param.sched_priority = 0;
> +			break;
> +		case SCHED_FIFO:
> +		case SCHED_RR:
> +			/**
> +			 * Map [0, RTP_PRIO_MAX - RTP_PRIO_MIN] to
> +			 * [1, LINUX_MAX_RT_PRIO - 1] (rounding up).
> +			 */
> +			sched_param.sched_priority =
> +			    (sched_param.sched_priority *
> +				    (LINUX_MAX_RT_PRIO - 1) +
> +				(RTP_PRIO_MAX - RTP_PRIO_MIN - 1)) /
> +				(RTP_PRIO_MAX - RTP_PRIO_MIN) + 1;
> +			break;
> +		}
> +	}
> +	attr.sched_priority = sched_param.sched_priority;
> +
> +	return (copyout(&attr, args->attr, args->size));

So, this lets the caller decide how much stack data they want to copy
out, independent of sizeof(attr).  The only constraint is the
`args->size > PAGE_SIZE` check at the beginning of the function.

In fact, the original author of this commit got this bit right, and the
bug was introduced when you modified their patch.

Please revert, and in the future be sure to obtain review from kernel
developers before making changes to the syscall layer.  Yes, sometimes
patches go unreviewed for longer than we'd like, but that's not an
excuse to simply go ahead and commit if you aren't familiar with the
code being modified.  If you're having trouble getting review, please
feel free to reach out to srcmgr@.

> +}
> +
>  int
>  linux_sched_get_priority_max(struct thread *td,
>      struct linux_sched_get_priority_max_args *args)
> diff --git a/sys/compat/linux/linux_misc.h b/sys/compat/linux/linux_misc.h
> index fb77784ddea8..44dd8e06fcb7 100644
> --- a/sys/compat/linux/linux_misc.h
> +++ b/sys/compat/linux/linux_misc.h
> @@ -109,10 +109,25 @@
>  #define	__LINUX_NPXCW__		0x37f
>  #endif
>  
> -/* Scheduling policies */
> -#define	LINUX_SCHED_OTHER	0
> +/**
> + * Linux scheduling policies.
> + *
> + * Ref: `linux/include/uapi/linux/sched.h`
> + */
> +#define	LINUX_SCHED_NORMAL	0
> +/* `SCHED_OTHER` is a legacy alias for `SCHED_NORMAL`. */
> +#define	LINUX_SCHED_OTHER	LINUX_SCHED_NORMAL
>  #define	LINUX_SCHED_FIFO	1
>  #define	LINUX_SCHED_RR		2
> +/**
> + * FreeBSD does not implement analogs for these Linux scheduling policies. This
> + * is mostly here for reference and to be self-documenting in `sched_set*()`.
> + */
> +#define	LINUX_SCHED_BATCH	3
> +/* LINUX_SCHED_ISO: slot reserved, but not implemented upstream. */
> +#define	LINUX_SCHED_IDLE	5
> +#define	LINUX_SCHED_DEADLINE	6
> +#define	LINUX_SCHED_EXT		7
>  
>  #define	LINUX_MAX_RT_PRIO	100
>  
> 

From nobody Mon Oct  5 23:35:37 2026
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 4hzG3G3rHgz6vbgV
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 23:35:38 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzG3G2ByTz4CRy
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 23:35:38 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791243338;
	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=vMl+bgAIqvWE2h/cxzpj+PxJNIOkqG/58Kr4Gbt4ODk=;
	b=V8pnQqsATLL234kqVBkcuUnAsdWk2erAHTzoWETagT2tXJVYRgKlGwfHe8vPb/A62enc1O
	8J8G5Qt51rcFzk1iWVuB3DgNqldu0QeNb0kFBQqxHdBCDsipxleWNFoxEqWio6zc0JoKRO
	gXC92yK2tAjY1DDusZZ/NCOopJrxuKCbaEAggOacTXUim428XBbLiWkjM1MDl5uAbziBMU
	lRfrd9JJ3/Avip6EPSxA41MPavQK1gu1BYuHwD/mkSapgQzzI6z5qHiTCJo8agMHfzNfSJ
	5VtGRsKwcTIQqo1hH09v7eo3zzythbdlEj2/HEu5clZj3PqTGWJI596NJc4b9A==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791243338;
	b=SdgU5Ni8qIPl4FmvDniOuangs9QWQHhLaGSC0MoU8VSbQTkwx0eM1bO/A0TB0Wbd3rhPLd
	z2hqen5nTOXlsq/69Qg1dt+ONr/MfVOm1wTNBdYrleUx3+oZT9ZRPT5jRXqZYttSWv787a
	k+OsjHYox20hMU06FtsB2vpv02OjyS8ZqCtwmvplzDlH8/rJxILaUQ4+YKzryjL3SsCO6s
	rAFveDKG+bfegNyoCIAzjwNeLmK5P65GirpnLrPbQt5//8xbr7Beo4lM/tI8uKuMkLSQCh
	3vXBnmAB8HYL103JbvVbxxj9uf8DUMCMMZD2aJCRZFJE19K4PNeXgGjnJdhCew==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791243338;
	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=vMl+bgAIqvWE2h/cxzpj+PxJNIOkqG/58Kr4Gbt4ODk=;
	b=VsRI6icWjSI4m8Qo6P2zzxfnni3gFoQTt5HYpihVDY2ndjNJV0fQL7y8FuOa+n7v9e3Tq9
	S+XkoF/ghm/MmN3lShU8m6xzQZQEOa4avWJDvGAb3oW0F9+uBp5syMU+o0e0+6/TClWKNv
	5J3IN7p0u8MkHKywIJBDog0vK2KOm2TV1kxgtSytQ7u8OHSrNkzoLjgqxxdO+SSKlDk2Hi
	7ghC8vzK2XBNBiA5huSsLBHk16cKJRHSgIfUL/5ME0O8DJEXjAsa/CzzdjsupiH4YV0+WT
	7/D1MhAl2iPRjFVDS8ZaQUngVGgj1YKjRuYAud8pa1rAe7ueWRe5+dzVW4EZIg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzG3G0LPNzjLK
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 23:35:38 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 33cc3
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 23:35:37 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org
From: Philip Paeps <philip@FreeBSD.org>
Subject: git: cc389179c3e2 - Create tag vendor/expat/2.9.0
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: philip
X-Git-Repository: src
X-Git-Refname: refs/tags/vendor/expat/2.9.0
X-Git-Reftype: annotated tag
X-Git-Commit: cc389179c3e21f0ba5a69da9af39ed0cd5900261
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 23:35:37 +0000
Message-Id: <6ac43449.33cc3.f34d26f@gitrepo.freebsd.org>

The annotated tag vendor/expat/2.9.0 has been created by philip:

URL: https://cgit.FreeBSD.org/src/tag/?h=vendor/expat/2.9.0

tag vendor/expat/2.9.0
Tagger:     Philip Paeps <philip@FreeBSD.org>
TaggerDate: 2026-10-05 23:34:57 +0000

Release 2.9.0 Mon October 5 2026

commit 91970165e3bd028c8227a89b5adaafff8c68f800
Author:     Philip Paeps <philip@FreeBSD.org>
AuthorDate: 2026-10-05 23:34:57 +0000
Commit:     Philip Paeps <philip@FreeBSD.org>
CommitDate: 2026-10-05 23:34:57 +0000

    Vendor import of expat 2.9.0

From nobody Mon Oct  5 23:35:37 2026
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 4hzG3M2pyCz6vc3g
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 23:35:43 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzG3M1X2wz4Cmq
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 23:35:43 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791243343;
	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=lxjPckx+HdccWZoUhXoWpXLBu7oHmFv2W4hDaly4pjI=;
	b=mtiyI0GVHVZAQIrfswFNLC1c7qoyzGpSCqSDUFbD43SFYW/K/ZPKbMwZrNrxxhLvX0JRG0
	bKgpJ8qm5Ihrs1/75MgyxZ4tKCH56+ZjT9xiXCzV5sqc8BC3pEtEEzpQzY34j43mNLHocy
	EqAiffNPUyC+yGfWMywnlA3mljTWQpqR5xpBrZM0dH75Jvu+ET2iuM8JvjF9OHHwggw4se
	gp4LRY2Ak+xJBGyB+RfWxpmJskcwXNjMMAD2OtH5SMeqY9SVjvHkZzvfiBAe7saDQyJ8/Y
	zY2XLm93qW28cJ93lI7xjFshVvUfE3NuKRfzLGMtV4jp6eEkN/1PGKCCUSaVCQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791243343;
	b=mZtlAejBfdFPYJzhzo1ocDlmlfROaC7t26pEemvQ5FY3SCTv0JDjFRLh7q0LE1io5AaoSR
	aOnjIsMI7AMIO4mDCGVQtv+Xfe/KERYenKpuyahDr0/5BPgJ7c2vPCtJEvuxlVduY5X6/0
	tAaaiusy/hN5Sabf+ZHmd5LQbmKdENP8T6rUFFcWImOdXAWLGNSMtP6U5FJc9b6radysmb
	6ykBNYVZoEm6igKcew/hfAIQ0GZmLyLVtQLkk6wb5TjVBO9TXjt1nW6kv6zivLTPnkfE5v
	W1RBgiZFHr0wpQD9FvWiKAHj/hSXeqQV7XXAMMA5mif5T06fjx9uINQnjUZU6Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791243343;
	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=lxjPckx+HdccWZoUhXoWpXLBu7oHmFv2W4hDaly4pjI=;
	b=VJDNbDOc8O8vjqFZLhbAWkbIY4cZEPpiZ+/XbyFrr0Z26G/ohr79jC2b8BLsBur7fjkx1m
	CaUDhKr+7TYsvIwUCeDDhqD4WKUg815RGphUW5MYhs8RmFc2L+RaXByR5W1PZyM88WyzNv
	W3WSZZjPktQjfllsgYM13H3WqkMwPCzwQkRzMQQG6wf01Qe6q3yqeyP+on30qJVYcvv9nn
	ovgqZUIcXPL3pNnsAMHX2rJXJZdvsIx+l2hITx4dXE3HjBYY5pEDIlN+sU6zkNUZWLlKPf
	PgUvIzKSJTxpNkfXOMW1mJPXmI/LURa/qOWCTdGuaU+lTgtcwALKaFbdql575Q==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzG3L6zbmzhmL
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 23:35:42 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 323aa
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 23:35:37 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org
From: Philip Paeps <philip@FreeBSD.org>
Subject: git: ad0a85f5d53d..91970165e3bd - vendor/expat - vendor branch updated
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: philip
X-Git-Repository: src
X-Git-Refname: refs/heads/vendor/expat
X-Git-Reftype: branch
X-Git-Commit: 91970165e3bd028c8227a89b5adaafff8c68f800
X-Git-Oldrev: ad0a85f5d53d2280fc4eb9304d571cae7c2a2c4e
X-Git-Newrev: 91970165e3bd028c8227a89b5adaafff8c68f800
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 23:35:37 +0000
Message-Id: <6ac43449.323aa.da6abf3@gitrepo.freebsd.org>

The branch vendor/expat has been updated by philip:

URL: https://cgit.FreeBSD.org/src/log/?id=ad0a85f5d53d..91970165e3bd

91970165e3bd Vendor import of expat 2.9.0

From nobody Mon Oct  5 23:56:49 2026
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 4hzGWq2HR3z6vdQW
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Mon, 05 Oct 2026 23:56:55 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzGWq0VnZz4GXg
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 23:56:55 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791244615;
	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=FO3hxk0TolRr8eVZEapi1hfVJdtYNXziDxFqsGqX0eU=;
	b=hfx6s4PPzsSSyf+fBSY2TmSuMo6vJYlSdO0g9/bIN3w5QvU8L6xRnEUg6YvDg3LmbTGxV1
	+Vw5l9tRKkPCQCoqQGUxGZWQk3og1CoQ99Q3zeLxtQxytXge8r533/Q2WzYIFi3PFY9tt/
	bgqNdPJAJfUzYZNav+iWgLsywNUGWbvmpwPAXVNv0PD8vqrgDGN/b6LT3OzBu/hGqksv4h
	Galah1KEjfIPfs80hAmLII2TNEuXMptB1EWFBE25T2w++cV2lgS1CBxK8TVjiXYdBWey6s
	8S3ecc9M/KBSlErebqJpVK5KCrHtxGA/XDhg2V/nosTp7A5PV8qLcEM6E/KpPw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791244615;
	b=L+9GwBeMZCqVnls1iSOIf7YgzFcOavHss4dkOrKmxycEY6qI9TckQbgXzYIUeb3YyWQVY+
	38YG6TIKBp4J28vwmsReLRavQyP3fr5GZF0UrDocwH/zdmImar9t1VNbfOMgJNPOAHDrR0
	deUSXq/rehidARV5fN8H/Eayx/IG0w+PxMXZqrTMg+1qdqLFSLueaVKKjsRCTaGdG6//ae
	7RfrWMfOQw67DhoNQ0GycabUed5w1AUCmwAfRAZ0g4EppvYAFDg+lsAb38gOaatpoOAUrc
	342Td+ra3Q7aNDMBlNjD+NuvoIR/3YXUI4R6MtIazojNOiHho5sakMeIC5Z5AQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791244615;
	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=FO3hxk0TolRr8eVZEapi1hfVJdtYNXziDxFqsGqX0eU=;
	b=REAIFMo9MbSdEjQKgqEHCJL4KSPjtOlH9QhIOAjFzfNdxuGmzFmuimbDS4e3klQdp0CQXK
	0/nmnosV1aFp5cyUrzb1nYLSSLUUJqzCFP7C318chtHnulGpDB4mjEpjqhE0X5OMoqZ576
	Z9m68RgRTr1l5f/Fv54kxDgUk9H4eMZih3DUWgXIh5WcYJPZ8fnn/SUpw+PiLPzZjYN5ko
	K7Ps2W58VISqpveIUXcKnjLZ3NTn5X1TCWV5xOEQTEL4Urnj51jKCqABWxZCwXTm3YrQIB
	d0bvu/uJG3Nv0CsFh60jBUwBapu7Ll0W1lQsRQrWa6vgksHk2WmySERJLJ8hSw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzGWp6P9nzjt2
	for <dev-commits-src-all@FreeBSD.org>; Mon, 05 Oct 2026 23:56:54 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 33f53
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Mon, 05 Oct 2026 23:56:49 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Jamie Gritton <jamie@FreeBSD.org>
Subject: git: a5ae2a9bfb1c - main - jaildesc: Lock prison pointer when filling kinfo
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jamie
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: a5ae2a9bfb1ca7f49e79ee63ed39216c42326d02
Auto-Submitted: auto-generated
Date: Mon, 05 Oct 2026 23:56:49 +0000
Message-Id: <6ac43941.33f53.39a6fc93@gitrepo.freebsd.org>

The branch main has been updated by jamie:

URL: https://cgit.FreeBSD.org/src/commit/?id=a5ae2a9bfb1ca7f49e79ee63ed39216c42326d02

commit a5ae2a9bfb1ca7f49e79ee63ed39216c42326d02
Author:     Jamie Gritton <jamie@FreeBSD.org>
AuthorDate: 2026-10-05 23:54:21 +0000
Commit:     Jamie Gritton <jamie@FreeBSD.org>
CommitDate: 2026-10-05 23:54:21 +0000

    jaildesc: Lock prison pointer when filling kinfo
    
    Submitted by:   Yuri Tkachenko <yura.tkachenko at gmail.com>
    MFC after:      3 days
    Differential Revision:  https://reviews.freebsd.org/D60392
---
 sys/kern/kern_jaildesc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sys/kern/kern_jaildesc.c b/sys/kern/kern_jaildesc.c
index fdce321cb468..3e91d47c1f43 100644
--- a/sys/kern/kern_jaildesc.c
+++ b/sys/kern/kern_jaildesc.c
@@ -418,7 +418,9 @@ jaildesc_fill_kinfo(struct file *fp, struct kinfo_file *kif,
 
 	jd = fp->f_data;
 	kif->kf_type = KF_TYPE_JAILDESC;
+	JAILDESC_LOCK(jd);
 	kif->kf_un.kf_jail.kf_jid = jd->jd_prison ? jd->jd_prison->pr_id : 0;
+	JAILDESC_UNLOCK(jd);
 	return (0);
 }
 

From nobody Tue Oct  6 00:35:02 2026
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 4hzHMv56j2z6vgTS
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 00:35:07 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzHMv4f1Qz4Krp
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 00:35:07 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791246907;
	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=k6mfp6QQD5MbcRRMW/y44MPqJ/gs2nfVRQfsP75gOe0=;
	b=lL1aL8rVLi/+9lcZXTIUMMgfq8xSbfAbxN0m+5SIENRTrmUQYQsJC4VSI+aCC0IUWEFC2y
	C0uPtx61x9Ue5tNdHma+CmIRfZirwb1h+RTFtploT/lk4215bnLuVP1hFmqPZxTQtCUTKw
	u4zJJgYFcQzs4/Tu/mVA+t4btRdh2r/NKuFgOp3oNs6UfJDnvP19tvNYum3PVeiLAvphjH
	kTRPPhyqSBMltejQB2Y741MbO/rJXBELBPPKT3zqwfJQ/xgfW9KEIrEOTsDdW0D1eddzZv
	VHRG/+n2lRgDLrXoVZ9Tj8g+oycJi8Dq82SH+Ynw1tYc3BLNliBK4RyBTp3ZKw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791246907;
	b=f+ogTygoIWGMD/9IaDE6YBK1dz8ARqMl+ogZijKvk/j33uNNjTAoG9N0zKrOk4Ngz+Sy/i
	cy8lem7z4aEF1aFSgVnbVCtu9A2258yhhgilhMK7Wmt1D+D7COApFrFgnU4n5YiKv7skpz
	2XAztOYDohXv2bpGaMILAJh4XgtGaT8W/S7uGWhKxWESQYGxZpZnMUsrzuaWaUDsYkXssu
	IHujvj1ZGA5AXSPQCfI+MVUVu+n4iil0ggm8Z03coKXl/hBmi1JFy+L3mkVIIeahynJv8T
	Gqj3fr7boFxFkuMC/iR+zG4f6E2Q/DMIIIRpHwM3jWF1oeOBmDGZQqks80F5Yw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791246907;
	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=k6mfp6QQD5MbcRRMW/y44MPqJ/gs2nfVRQfsP75gOe0=;
	b=hwmferz1MxmtJuLhdeTb4D3unwtwG3bX5XIPJW0DOjZYiGIezxXlsvWY0r8tYt1k6uSN5v
	oBMRu39BlQJLMTXz/GrueAwKZrbT8RN/W5I8hC3X0Q4oC7n4hqfcd+R7YVnp/raVwRptWe
	Xtie/eNXUYiQ7YE8+aa3orXsbVN/LcleAP5wX1pM66dwIDyCEnVYYLsKYe3rwgKEPyAZuV
	LqMsd+dj0vFoLHVE32PhDjpwS9Y5CeDXb4UcqEvC9w4R/b8glquMKLB8WfUTBw3z1uvr4G
	eOB4zaCqQge2F0F4UchCDyiI2r4u1d4bEr+PJIASTWfdst7gbEAEKrz7qEjauA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzHMv3hHqzkQ6
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 00:35:07 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 39d15
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 00:35:02 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: 41c078cae365 - stable/15 - pam_ssh: Fix build - chase OpenSSH function signature change
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 41c078cae365b4ec6f61d9fe40dcb772bff796ba
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 00:35:02 +0000
Message-Id: <6ac44236.39d15.2726885f@gitrepo.freebsd.org>

The branch stable/15 has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=41c078cae365b4ec6f61d9fe40dcb772bff796ba

commit 41c078cae365b4ec6f61d9fe40dcb772bff796ba
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2026-05-12 22:49:29 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-06 00:34:42 +0000

    pam_ssh: Fix build - chase OpenSSH function signature change
    
    Reported by: dch
    Fixes: 644b4646c7ac ("OpenSSH: Update to 10.1p1")
    Sponsored by: The FreeBSD Foundation
    
    (cherry picked from commit b76b05c04cc9ed2cd053c7b367c92628447ede6f)
---
 lib/libpam/modules/pam_ssh/pam_ssh.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/libpam/modules/pam_ssh/pam_ssh.c b/lib/libpam/modules/pam_ssh/pam_ssh.c
index 157908b6b910..1fcee93efb69 100644
--- a/lib/libpam/modules/pam_ssh/pam_ssh.c
+++ b/lib/libpam/modules/pam_ssh/pam_ssh.c
@@ -62,7 +62,7 @@
 #include "sshkey.h"
 
 #define ssh_add_identity(auth, key, comment) \
-	ssh_add_identity_constrained(auth, key, comment, 0, 0, 0, NULL, NULL, 0)
+	ssh_add_identity_constrained(auth, key, comment, 0, 0, NULL, NULL, 0)
 
 extern char **environ;
 

From nobody Tue Oct  6 00:47:47 2026
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 4hzHfc5zzMz6vhQw
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 00:47:52 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzHfc3s0nz4M0F
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 00:47:52 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791247672;
	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=Q1w+YJ7M5Ocnp1RlVxehYSA13fvLI8a0T7z2saPB1P4=;
	b=KB5tNPEcLOhKI71RBcRmCwhHsgGcbSgQRObAviJBrsshbbVLzt9UoUnkbfPvinB3fmF+aF
	G+PvjY57z6D1tv7rXJ1HugrBTa6UKYuXyYKCQHpOHeTv/In4RDxP8fc7sEeudrBlSisJ3E
	s26KUIGYACnogUT/EWpkNTZSA9XoKYu4fDNSXUqrExkxAVUnSgBCI85dQEHyAbDs/MDQ6q
	XVx97C/wbWjPVq07dXebi2MSP2mPqf8rME2TzIeB5w1zWRHyl0Khu9rD32qPaFr0ZYBdTK
	7NKsd9dKti9H2l1sV1AAbl6lEPl1vQXXd/et+F+ZLEjfeaUOUp85Zz8XmzG/IQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791247672;
	b=AdLvNjc3TTk8QxFmBjfMSkMYcgv6p8KsyRaphlHdRRUpSxz+yYfpEkJGLw2vtfhVkQBg6t
	PR4lCIepTP7HfZWkIuuPzNlblQHed236ElOq6EAFLG6CAhMrjy1RZKojfX5qBLKPCWJ4id
	C2fUP8M2SyqIux2EYyU5sai6tQG2xzquHPZz62v93S7a2GiyO8ttCV9aH5UUiOjwO6RcEi
	fTt46pg5mscNlv9WOn4eei1+xZ8IOjPds09vtWP8wm5EiC/DWXBdE0bztJRtlE4Qc4kvtn
	vN7OLE664vxd3EddPROfj/AkPMmI1PzcQa+EOJZoQKmBybh5Q2gVM4fDbJDsmg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791247672;
	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=Q1w+YJ7M5Ocnp1RlVxehYSA13fvLI8a0T7z2saPB1P4=;
	b=O45bNRdYcn6nRyeo0k9i/rzH2ryx+VP+CcW0ubCoI5CoHcFnhD9IjAlQUxp3NhyzH3bqKc
	uudAj1hbZoilzxjAUYDJfgovu2RVluwb17wJB4zDqob8cMRyVSHf2JO0JT4+rSNeCJSVZ/
	nnmGqaoI7/HFwBEE1ppRQSbpshd8hnJjiFQyKRLrfYo99gF7JS3kvZ0mZRTz/j1AUz2JNe
	gXTT+Pk5aAbVSGK/uMU6IEU4IevgH45/HGV82ERZtI25BbsaXOWCH1UfkUwNkorxWc5R0Z
	4UHAzn99rsOBjOujRz0glIYVBzwdY1C/W2UZtx69rUNS05c7dxNKQm9wFvzKCA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzHfc2dtHzlD2
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 00:47:52 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 3aecb
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 00:47:47 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Konstantin Belousov <kib@FreeBSD.org>
Subject: git: 1e595e959f66 - main - devfs_open: do not access dsw after dev_relthread()
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: kib
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 1e595e959f66e11d0490e90270b9fb701cbc6739
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 00:47:47 +0000
Message-Id: <6ac44533.3aecb.832df6b@gitrepo.freebsd.org>

The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=1e595e959f66e11d0490e90270b9fb701cbc6739

commit 1e595e959f66e11d0490e90270b9fb701cbc6739
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-10-05 23:35:32 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-10-06 00:30:49 +0000

    devfs_open: do not access dsw after dev_relthread()
    
    Noted and reviewed by:  markj
    Fixes:  850d4562928e ("cdevsw: add D_NONPASSABLE flag")
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D60393
---
 sys/fs/devfs/devfs_vnops.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c
index cd6cd1959d6b..53fb08c6931b 100644
--- a/sys/fs/devfs/devfs_vnops.c
+++ b/sys/fs/devfs/devfs_vnops.c
@@ -1288,6 +1288,7 @@ devfs_open(struct vop_open_args *ap)
 	int error, ref, vlocked;
 	struct cdevsw *dsw;
 	struct file *fpop;
+	bool passable;
 
 	if (vp->v_type == VBLK)
 		return (ENXIO);
@@ -1306,6 +1307,7 @@ devfs_open(struct vop_open_args *ap)
 		dev_relthread(dev, ref);
 		return (ENXIO);
 	}
+	passable = (dsw->d_flags & D_NONPASSABLE) == 0;
 
 	if (vp->v_type == VCHR)
 		devfs_usecount_add(vp);
@@ -1347,8 +1349,7 @@ devfs_open(struct vop_open_args *ap)
 #endif
 	if (fp->f_ops == &badfileops) {
 		finit(fp, fp->f_flag, DTYPE_VNODE, dev,
-		    (dsw->d_flags & D_NONPASSABLE) == 0 ? &devfs_ops_f :
-		    &devfs_ops_nonpassable_f);
+		    passable ? &devfs_ops_f : &devfs_ops_nonpassable_f);
 	}
 	return (error);
 }

From nobody Tue Oct  6 02:45:36 2026
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 4hzLGT0ZQvz4nB6W
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 02:45:37 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzLGS4C0xz4YvW
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 02:45:36 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791254736;
	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=QHTeN2cGgSjIMymo5kxRelb8EnksgHyfyeMDIqXQsx4=;
	b=BIqFekacNbR7aCg3HdTK0RRYEBBO7oYu4krhY1rGbyORy8V+kmcK4EPWBSnbL0PNrIO6YB
	0gLf6ouPoXbLUF6EWo7/zt4xRsplGcFBJnGYw+TymnioK32wLLeesooQtpmhVIjqpwOp55
	1RDnNmHzNAwMrdzWf8UH657pMT4NKhbyE3fCl7myneC5n8j7llpRQnOL539Q/6ej9+jFKD
	dK0hMGaRNC7sy/39NgO6zOzH8kSFJpvUsyPwJx/bXMFzPKBFyaetV5WV9B1QVzSMRN8eIW
	WUA+M/CkaqnWLORF1uWAjty4Os8Fr+GtwNEYCzBQGI8ndYAkMaWube7ToMkOQQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791254736;
	b=mKm8kh0oa2gnB5WXjyI6O51njT/qPpNlY+A66I8yxyNPAE96pUBRHWohOHCAMoLUVWeQy5
	jn1K55r7xHImxvv9h4lC3L30d3MfPstP0F4pt/x6LSX+zl9Nu9FqL2wF+ee6Lv5Nse2K8/
	LYQUwEKUokTcsPl5+NxPhiTvtj1jPc/aTz69OHuSf+AWxExKhEPhxpmnPNt9T0FW5YYpEF
	FqAgUuWNeTFzza+4xumMwKfCoFWTXLhBOnfazv+gmzfwf8ILJ30wJWTyTK1fH5zbY747SQ
	2xjhBUx0QsFWtMqlysNcu0ONQ7uFL2DCOrGFshk/2KMNH2Wic6q9oJPnDy6F/w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791254736;
	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=QHTeN2cGgSjIMymo5kxRelb8EnksgHyfyeMDIqXQsx4=;
	b=oTHaZ2eyBVv7Rewmf4+UVC6oHZ0LXx0UuRsxc0GomI+Jjuck2YehKyj5MhBt8jcpILfrLy
	yD6GX8ZZkbiIMyd38XEy2dQ9QFPavvZfmfNHZOk78DHlrooQfXmwWGCn+2fn+ZdO8WzZUE
	tRTY3IZ565zklB3opw71bYrlLhH0+pydj7heddSMsntJtTQvIA6027XPuxechp68f/SyNJ
	UsYPCgGy1xkCuGz00gCdyEVaYvSDOdijvHZAkVtThsjmO+LPHtTzBerDOYULqCi/GX1eyH
	BPqhpkkaQx7q/GMcJNpU0ajuEtS89UmQGwp5g1i/FObIbdFJ9V/wewsFb9Fdxw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzLGS1GdKznwl
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 02:45:36 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 1e9e4
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 02:45:36 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: John Baldwin <jhb@FreeBSD.org>
Subject: git: 1d8c5f8e0255 - main - sendfile: Fix build for kernels without INET or INET6
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jhb
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 1d8c5f8e02558faa578329eb9e2076e04de3fc5d
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 02:45:36 +0000
Message-Id: <6ac460d0.1e9e4.3575d125@gitrepo.freebsd.org>

The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=1d8c5f8e02558faa578329eb9e2076e04de3fc5d

commit 1d8c5f8e02558faa578329eb9e2076e04de3fc5d
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2026-10-05 21:00:56 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2026-10-06 02:35:15 +0000

    sendfile: Fix build for kernels without INET or INET6
    
    Don't cap the new low watermark to a TCP-specific setting in kernels
    without TCP.
    
    Fixes:          6948f4d5e2b2 ("sendfile: keep the lowat hack more conservative")
---
 sys/kern/kern_sendfile.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/sys/kern/kern_sendfile.c b/sys/kern/kern_sendfile.c
index a14b88b2169e..b9e7a1a2ce97 100644
--- a/sys/kern/kern_sendfile.c
+++ b/sys/kern/kern_sendfile.c
@@ -660,7 +660,11 @@ sendfile_wait_generic(struct socket *so, off_t need, int *space)
 	SOCK_SENDBUF_LOCK(so);
 	lowat = so->so_snd.sb_lowat;
 	if (so->so_snd.sb_flags & SB_AUTOLOWAT) {
+#if defined(INET) || defined(INET6)
 		newlowat = min(V_tcp_sendspace, so->so_snd.sb_hiwat) / 2;
+#else
+		newlowat = so->so_snd.sb_hiwat / 2;
+#endif
 		if (so->so_snd.sb_lowat < newlowat)
 			so->so_snd.sb_lowat = newlowat;
 		if (so->so_snd.sb_lowat < PAGE_SIZE &&

From nobody Tue Oct  6 02:45:35 2026
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 4hzLGX6HgCz4nB4B
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 02:45:40 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzLGX4BZFz4Yyy
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 02:45:40 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791254740;
	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=ihfP/WgPX1JxdfoEX2RT7jv+W0gSJ2dwzP+rSZMS65k=;
	b=q31HOzdgHbgjXsUYcFfPFHCzdaNQlleMOzCw1uGmpiuPhWjQUkQyTJapif+u7C0AEXp8W/
	J77JFifHPjMTM0G1a4wT/2DsrNk0y9CyCbO1fyLo0TtwE6UKs6RvBuWIkaTvhRSZztoPXI
	YSso27o9Ht0bghmDzNB/7B30awvpZ3Xr5ZMwyh2OXcr3hR2l/Nj2BtZx4VUWsmqhDAUnQT
	2dsbFvqrk2Uaxxgp1hm8dMH/fy3Jz8+xahiGnoiZZCu3KBf+Cq4dq/6wiNmm5Y8dPJKhLC
	J1lrTuAft6WWLzBhSt1b3TewEN7ZxjLLVxSJoOuMikHzHdSWxlGY623HN1WXgg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791254740;
	b=bZJdOkOufLWiumP7cldC5eRJ5wOp3k9HEJaoHlHR31Zy9scro7+EdR6w23iPGw2nBHDofN
	iqXYFM4oAUVCx7zCBosvabCL0z5lehyC7/AhyqnDCDQv0q7F1eH0CT8rwYikHuo/2Q7v4x
	IqSfZyCbUJSN0RxlnShaBv3TknEk7Ub68HhjdsigeoaSgAqxLiZysnybRNovywqy8qqH+I
	T6nui8ekzuqqtw7YdAp00FTx3f0KujLtBzBKKRzSwgzDNTbWDdRjkGFOuLGk/lH1ZneXcJ
	3fXU4+si4kRqWu/FZNqiKJgzV+D8RVhgHOz3Mt4LskHR3e7ob/0jMOun9Y+bUg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791254740;
	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=ihfP/WgPX1JxdfoEX2RT7jv+W0gSJ2dwzP+rSZMS65k=;
	b=TF4+4fZGh4B5rIYJtNK1n3Hkp8nQA0USZmlsLAkTYknwUI+WZxxHB03Ej7+9L72ohUcvZQ
	rNGxqGGP1AiQQucHq6bXFpSK5Ir6RXkCHE9+rj/p8Oaq30Sv70dshQEWi7wpaT7lD8FWza
	BNl11p/7Dbr8mFdHPjOkck3pVr5tpa+G5ftYqKCmtJWCWbI9i3QlZfK+RBesX6UrB6K087
	nk5DZx8eu9DmjD96e0udVm9n2HelKchbyRGGAMOy4/78BUo8MQ/mC3MY4dq+GvYF06x1L+
	ttpR2BKx12vtuqWwPRAvVJHlADSEbEMq9pym+kmKgi4HvTbTVnVK4zHI3ekowQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzLGX2f6SzpJQ
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 02:45:40 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 1dbbe
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 02:45:35 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: John Baldwin <jhb@FreeBSD.org>
Subject: git: c907302c121a - main - zstream: Downgrade -Watomic-alignment to a warning
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jhb
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: c907302c121acc5ed696544f86a6d44d07faf06c
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 02:45:35 +0000
Message-Id: <6ac460cf.1dbbe.4345319c@gitrepo.freebsd.org>

The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=c907302c121acc5ed696544f86a6d44d07faf06c

commit c907302c121acc5ed696544f86a6d44d07faf06c
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2026-10-05 20:53:19 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2026-10-06 02:35:14 +0000

    zstream: Downgrade -Watomic-alignment to a warning
    
    Don't complain about unaligned atomic operations on i386.  This
    same approach is already used for libspl.
---
 cddl/usr.bin/zstream/Makefile | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/cddl/usr.bin/zstream/Makefile b/cddl/usr.bin/zstream/Makefile
index 0562e6545056..545716a6ec56 100644
--- a/cddl/usr.bin/zstream/Makefile
+++ b/cddl/usr.bin/zstream/Makefile
@@ -1,3 +1,6 @@
+.include <bsd.init.mk>
+.include <bsd.compiler.mk>
+
 .PATH: ${ZFSTOP}/cmd/zstream
 .PATH: ${ZFSTOP}/man/man8
 
@@ -43,6 +46,9 @@ CFLAGS+= \
 	-include ${ZFSTOP}/include/os/freebsd/spl/sys/ccompile.h \
 	-DHAVE_ISSETUGID \
 	-include ${SRCTOP}/sys/modules/zfs/zfs_config.h
+.if ${COMPILER_TYPE} == "clang"
+CFLAGS.zstream_io.c+=	-Wno-error=atomic-alignment
+.endif
 
 LIBADD=	geom m nvpair umem avl spl zfs_core zfs zutil zpool pthread
 

From nobody Tue Oct  6 04:33:24 2026
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 4hzNfx4kjdz6Z0qq
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 04:33:29 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzNfx32pNz4pYD
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 04:33:29 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791261209;
	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=3v5ElYW9g4tp3Dw/JoDs/dZ55VSs6xEpfLGB6ShxIrQ=;
	b=HbxGgJeiNpxVCwfjAIX2E4Q1C3093kmXRGPDCHMWR95DyIs78iKSlEHE74X+KMrMUBM5q8
	kmINOly2i8VhaZCKysU887UB/BiC2yak5Z8mwHnIWeVAwIRmnf6UEMutwdKebR+eewdheA
	QZa7HT2mwZrmbhOG+iFOsp0MpxyLyPxSH8fN9pr3RfRMs8V4L2w8L3NalsCO9AhRT8qiY8
	lcvlraXx2bTFjqDgk8fB95qmL4+a9w4xid06sV7aoMERUtTcvgtQUaj0AqU+R6xpwKYUas
	PKc5AgAZwYTHUgtLfAws9h5YbkSbENp2jbvqebcb92Nmzca4tHBZGjgQ0tbGNA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791261209;
	b=XzKkxmrVhix3zqlHP8JvbM6tqnabi+QwCEfoD0J/zAGdi567kMrEbJcZOn86haf4dr4DHO
	GRXHss7d3qvV0/PNYNUAnOiqaXMyhRxFLqpJuOM0yaeCQkMs5WoLn6RHTvIwfE42Ufy0nF
	wNu7z8q7wxgXOh+12GI0pBxErNifPANg0iKRB+uvN28WvX9//uT2LSPqya+bnEQz7z9Sk3
	n8WhoP+UTfTiT+U7jQ6YXLW/EUWm6/QME8eY3ttAKspPANOMZj20lmBS9jhne2zrh7DaSZ
	xbQZ48UhF+D8mY/Nwqv9ZTT/yi42XwI+z+AlXtaN1JXl+e5OBSM/0ACz71AZCg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791261209;
	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=3v5ElYW9g4tp3Dw/JoDs/dZ55VSs6xEpfLGB6ShxIrQ=;
	b=Fjf1hKeINY5Wnx1XJXponU9JrPksoAgFc6K5XNL1C70k+QQlTSCsM3QyEAdyaJpvzxM3+L
	gT1rpVP70pfcaRGOwVf0AFv5tTtZrO33FaJim17Vycg0EBIJLzoqiU9UP6PG2mNdXH/+P1
	1YE21jy36d2p4k86B/QY25g0AoV0TyoKhfa7yji9cvsRsliUzLLS0KjLKw8dkxn4JJNp6Q
	G/KKo1FEUzuOlrUKZlxPewt1YnEArU4pCj4dR15Gv6+f8ETOPMTQxeMQxz8Y4h5XQh5ohv
	RuONdFFZvcor78r9Pe3udXqDWTz4i1yKdN2cZNyssLWtc8ZxES1zHj9QLuoBZA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzNfx26vyzqyJ
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 04:33:29 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 337b4
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 04:33:24 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Alan Cox <alc@FreeBSD.org>
Subject: git: d8dfbeb57017 - main - uiomove_object_page: a failed copy can still dirty the page
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: alc
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: d8dfbeb5701769832e84e5bb52f2e8b4e3ab902b
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 04:33:24 +0000
Message-Id: <6ac47a14.337b4.525b2153@gitrepo.freebsd.org>

The branch main has been updated by alc:

URL: https://cgit.FreeBSD.org/src/commit/?id=d8dfbeb5701769832e84e5bb52f2e8b4e3ab902b

commit d8dfbeb5701769832e84e5bb52f2e8b4e3ab902b
Author:     Alan Cox <alc@FreeBSD.org>
AuthorDate: 2026-10-03 17:19:36 +0000
Commit:     Alan Cox <alc@FreeBSD.org>
CommitDate: 2026-10-06 04:30:23 +0000

    uiomove_object_page: a failed copy can still dirty the page
    
    For writes, if we fail in the middle of reading from the source, the
    destination may have already been dirtied.  For example, the source may
    cross a page boundary, and the second page is inaccessible.
    Conservatively mark the destination as dirty, even on errors.
    
    Reported by:    Claude (Opus 5.5)
    Reviewed by:    kib, markj
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D60280
---
 sys/kern/uipc_shm.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/sys/kern/uipc_shm.c b/sys/kern/uipc_shm.c
index 7df9d59716c7..3544ebd35336 100644
--- a/sys/kern/uipc_shm.c
+++ b/sys/kern/uipc_shm.c
@@ -246,8 +246,14 @@ uiomove_object_page(vm_object_t obj, size_t len, struct uio *uio)
 
 found:
 	error = uiomove_fromphys(&m, offset, tlen, uio);
-	if (uio->uio_rw == UIO_WRITE && error == 0)
+	if (uio->uio_rw == UIO_WRITE) {
+		/*
+		 * Even a failed copy may have changed the page's contents,
+		 * because uiomove_fromphys() can copy part of the data before
+		 * it fails.
+		 */
 		vm_page_set_dirty(m);
+	}
 	vm_page_activate(m);
 	vm_page_sunbusy(m);
 

From nobody Tue Oct  6 04:52:05 2026
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 4hzP4V6qBkz6Z2Vx
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 04:52:10 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzP4V54q8z4ryB
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 04:52:10 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791262330;
	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=yZnHpvo8VogYg3DkbVyZ5eRrcKgogOaQk2utrGOAKcY=;
	b=dqJ7LyqwKru2gXYPOJjaAJ5WeqVNzAcAozaNvRM4CRmEqUgvv2oHggGsIDSv9J5gp8Ze/N
	zgtZV0mDJsTJKNAaavzVJgvZHkRzOULs0swwyRwBLo+n2Yn9U6EiDaXXBTXGfy3DO2oZf5
	uhwFOt2sJoZORQC+ZTo20V7yR0jJUaVZYUX+BR2YwhEY9q+50Q0GibMdKvWYYotM0jBXln
	QB4grw3nOwfhczhYmhQ5uBH+Go6naNY/PiRXVgyAGS+v4nkkBGRdC7URdI76KE3cSAoqui
	0LtCxdcN895Tw1TTIqI/i8enC9Qu+jjpvcZNrGwZgG92irmo5Co/qAyNwmUm+Q==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791262330;
	b=I8ohs5OrdWrcuYOauixBoN2UK2NDepr2Ci98oZCnZ/fZ43NGbDNHPH71QZeL5ZGvr8sHJr
	Wo5rtsfu0v9UN5Hpub/3QAmazC+Mk25UOsRGfzyIOoN+zw9cJlnUDLK0a2T+Nj2yTD9kA0
	tSgPueqA2mZ7xXJHLuMe4IT4FHKP4AhbLPAbs48Lo9LPLL82nXkxL0DgrtHRDa/x1ceNJ3
	fkzTBWUPeSYyOlowFzshE5ELmKY27bI/EZwCA2BGG81BQXTUk19j0sE1Updp+a4MQ3DkgW
	Pul0d1vzg3ZFNL6FaApg5djd8wyU+j+F2vG4qjQJvr0IMek90swvvvYGYDUHrw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791262330;
	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=yZnHpvo8VogYg3DkbVyZ5eRrcKgogOaQk2utrGOAKcY=;
	b=oAU9lrkthH7Pjr3T6D6xbjx6s530eyNkozKUTRw923jOaPPEPtXRa3Om2rfWtq9dVQmLnF
	FRhdYGSn8NYJChzQikiRcRzcIbO+PRCHZSBFiumoP1r5YNh3YVNyM16G3f+b2xrxHsIpjB
	cy+zpN5bs0JVCWcJuNqEgB1FJFhSO/nYMuRHgl7QchJFq8Y3UQG2vG+n94DHTvjjTUpkYB
	byCZBa1HjOxGAWWb9vhx7OWsnW+x7As7qtvI+AkR1TcxU01xSOPyi8RtCjQCvCpI75RIVm
	YXjJUEgMVe/oiXF5oPNCoR6RRchFSpxhYOLrHetmfYgO5B8EjyOARdrcIP+WVw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzP4V48bxzsB2
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 04:52:10 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 33a75
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 04:52:05 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Enji Cooper <ngie@FreeBSD.org>
Subject: git: 4abfb452ea2d - main - Revert "linux: implement fchmodat2 syscall"
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: ngie
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 4abfb452ea2d18c4710dffee7f3e65167d543041
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 04:52:05 +0000
Message-Id: <6ac47e75.33a75.287df809@gitrepo.freebsd.org>

The branch main has been updated by ngie:

URL: https://cgit.FreeBSD.org/src/commit/?id=4abfb452ea2d18c4710dffee7f3e65167d543041

commit 4abfb452ea2d18c4710dffee7f3e65167d543041
Author:     Enji Cooper <ngie@FreeBSD.org>
AuthorDate: 2026-10-06 04:51:35 +0000
Commit:     Enji Cooper <ngie@FreeBSD.org>
CommitDate: 2026-10-06 04:51:35 +0000

    Revert "linux: implement fchmodat2 syscall"
    
    This got accidentally committed when I was reverting another commit.
    
    This reverts commit c070ec923e2f49b6ecb5a60b584ba8f4376a6e80.
---
 sys/amd64/linux/linux_proto.h         |  7 ++-----
 sys/amd64/linux/linux_sysent.c        |  2 +-
 sys/amd64/linux/linux_systrace_args.c | 26 +-------------------------
 sys/amd64/linux/syscalls.master       |  9 ++-------
 sys/arm64/linux/linux_proto.h         |  7 ++-----
 sys/arm64/linux/linux_sysent.c        |  2 +-
 sys/arm64/linux/linux_systrace_args.c | 26 +-------------------------
 sys/arm64/linux/syscalls.master       |  9 ++-------
 sys/compat/linux/linux_dummy.c        |  2 ++
 sys/compat/linux/linux_file.c         | 22 ----------------------
 sys/i386/linux/linux_proto.h          |  7 ++-----
 sys/i386/linux/linux_sysent.c         |  2 +-
 sys/i386/linux/linux_systrace_args.c  | 26 +-------------------------
 sys/i386/linux/syscalls.master        |  9 ++-------
 14 files changed, 20 insertions(+), 136 deletions(-)

diff --git a/sys/amd64/linux/linux_proto.h b/sys/amd64/linux/linux_proto.h
index fa134b76888c..2373eff31dd3 100644
--- a/sys/amd64/linux/linux_proto.h
+++ b/sys/amd64/linux/linux_proto.h
@@ -1436,10 +1436,7 @@ struct linux_cachestat_args {
 	syscallarg_t dummy;
 };
 struct linux_fchmodat2_args {
-	char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)];
-	char filename_l_[PADL_(const char *)]; const char * filename; char filename_r_[PADR_(const char *)];
-	char mode_l_[PADL_(l_mode_t)]; l_mode_t mode; char mode_r_[PADR_(l_mode_t)];
-	char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)];
+	syscallarg_t dummy;
 };
 struct linux_map_shadow_stack_args {
 	syscallarg_t dummy;
@@ -2062,7 +2059,7 @@ int	linux_map_shadow_stack(struct thread *, struct linux_map_shadow_stack_args *
 #define	LINUX_SYS_AUE_linux_futex_waitv	AUE_NULL
 #define	LINUX_SYS_AUE_linux_set_mempolicy_home_node	AUE_NULL
 #define	LINUX_SYS_AUE_linux_cachestat	AUE_NULL
-#define	LINUX_SYS_AUE_linux_fchmodat2	AUE_FCHMODAT
+#define	LINUX_SYS_AUE_linux_fchmodat2	AUE_NULL
 #define	LINUX_SYS_AUE_linux_map_shadow_stack	AUE_NULL
 
 #undef PAD_
diff --git a/sys/amd64/linux/linux_sysent.c b/sys/amd64/linux/linux_sysent.c
index 0369191f33c0..62b50cf68a32 100644
--- a/sys/amd64/linux/linux_sysent.c
+++ b/sys/amd64/linux/linux_sysent.c
@@ -466,6 +466,6 @@ struct sysent linux_sysent[] = {
 	{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_futex_waitv, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 449 = linux_futex_waitv */
 	{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_set_mempolicy_home_node, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 450 = linux_set_mempolicy_home_node */
 	{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_cachestat, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 451 = linux_cachestat */
-	{ .sy_narg = AS(linux_fchmodat2_args), .sy_call = (sy_call_t *)linux_fchmodat2, .sy_auevent = AUE_FCHMODAT, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 452 = linux_fchmodat2 */
+	{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_fchmodat2, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 452 = linux_fchmodat2 */
 	{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_map_shadow_stack, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 453 = linux_map_shadow_stack */
 };
diff --git a/sys/amd64/linux/linux_systrace_args.c b/sys/amd64/linux/linux_systrace_args.c
index 0bc79e0cea29..902a0c1619b1 100644
--- a/sys/amd64/linux/linux_systrace_args.c
+++ b/sys/amd64/linux/linux_systrace_args.c
@@ -2806,12 +2806,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 	}
 	/* linux_fchmodat2 */
 	case 452: {
-		struct linux_fchmodat2_args *p = params;
-		iarg[a++] = p->dfd; /* l_int */
-		uarg[a++] = (intptr_t)p->filename; /* const char * */
-		iarg[a++] = p->mode; /* l_mode_t */
-		iarg[a++] = p->flags; /* l_int */
-		*n_args = 4;
+		*n_args = 0;
 		break;
 	}
 	/* linux_map_shadow_stack */
@@ -7303,22 +7298,6 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		break;
 	/* linux_fchmodat2 */
 	case 452:
-		switch (ndx) {
-		case 0:
-			p = "l_int";
-			break;
-		case 1:
-			p = "userland const char *";
-			break;
-		case 2:
-			p = "l_mode_t";
-			break;
-		case 3:
-			p = "l_int";
-			break;
-		default:
-			break;
-		};
 		break;
 	/* linux_map_shadow_stack */
 	case 453:
@@ -8848,9 +8827,6 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 	case 451:
 	/* linux_fchmodat2 */
 	case 452:
-		if (ndx == 0 || ndx == 1)
-			p = "int";
-		break;
 	/* linux_map_shadow_stack */
 	case 453:
 	default:
diff --git a/sys/amd64/linux/syscalls.master b/sys/amd64/linux/syscalls.master
index 94c591c300f1..b3bbd917c013 100644
--- a/sys/amd64/linux/syscalls.master
+++ b/sys/amd64/linux/syscalls.master
@@ -2188,13 +2188,8 @@
 		int linux_cachestat(void);
 	}
 ; Linux 6.6:
-452	AUE_FCHMODAT	STD {
-		int linux_fchmodat2(
-		    l_int dfd,
-		    const char *filename,
-		    l_mode_t mode,
-		    l_int flags
-		);
+452	AUE_NULL		STD {
+		int linux_fchmodat2(void);
 	}
 453	AUE_NULL		STD {
 		int linux_map_shadow_stack(void);
diff --git a/sys/arm64/linux/linux_proto.h b/sys/arm64/linux/linux_proto.h
index f43eac187115..ad0146b8527f 100644
--- a/sys/arm64/linux/linux_proto.h
+++ b/sys/arm64/linux/linux_proto.h
@@ -1246,10 +1246,7 @@ struct linux_cachestat_args {
 	syscallarg_t dummy;
 };
 struct linux_fchmodat2_args {
-	char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)];
-	char filename_l_[PADL_(const char *)]; const char * filename; char filename_r_[PADR_(const char *)];
-	char mode_l_[PADL_(l_mode_t)]; l_mode_t mode; char mode_r_[PADR_(l_mode_t)];
-	char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)];
+	syscallarg_t dummy;
 };
 int	linux_setxattr(struct thread *, struct linux_setxattr_args *);
 int	linux_lsetxattr(struct thread *, struct linux_lsetxattr_args *);
@@ -1770,7 +1767,7 @@ int	linux_fchmodat2(struct thread *, struct linux_fchmodat2_args *);
 #define	LINUX_SYS_AUE_linux_futex_waitv	AUE_NULL
 #define	LINUX_SYS_AUE_linux_set_mempolicy_home_node	AUE_NULL
 #define	LINUX_SYS_AUE_linux_cachestat	AUE_NULL
-#define	LINUX_SYS_AUE_linux_fchmodat2	AUE_FCHMODAT
+#define	LINUX_SYS_AUE_linux_fchmodat2	AUE_NULL
 
 #undef PAD_
 #undef PADL_
diff --git a/sys/arm64/linux/linux_sysent.c b/sys/arm64/linux/linux_sysent.c
index 3e206d54283c..e54a76cfd55e 100644
--- a/sys/arm64/linux/linux_sysent.c
+++ b/sys/arm64/linux/linux_sysent.c
@@ -466,5 +466,5 @@ struct sysent linux_sysent[] = {
 	{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_futex_waitv, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 449 = linux_futex_waitv */
 	{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_set_mempolicy_home_node, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 450 = linux_set_mempolicy_home_node */
 	{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_cachestat, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 451 = linux_cachestat */
-	{ .sy_narg = AS(linux_fchmodat2_args), .sy_call = (sy_call_t *)linux_fchmodat2, .sy_auevent = AUE_FCHMODAT, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 452 = linux_fchmodat2 */
+	{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_fchmodat2, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 452 = linux_fchmodat2 */
 };
diff --git a/sys/arm64/linux/linux_systrace_args.c b/sys/arm64/linux/linux_systrace_args.c
index 606120a8394c..3d480b31bcd9 100644
--- a/sys/arm64/linux/linux_systrace_args.c
+++ b/sys/arm64/linux/linux_systrace_args.c
@@ -2428,12 +2428,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 	}
 	/* linux_fchmodat2 */
 	case 452: {
-		struct linux_fchmodat2_args *p = params;
-		iarg[a++] = p->dfd; /* l_int */
-		uarg[a++] = (intptr_t)p->filename; /* const char * */
-		iarg[a++] = p->mode; /* l_mode_t */
-		iarg[a++] = p->flags; /* l_int */
-		*n_args = 4;
+		*n_args = 0;
 		break;
 	}
 	default:
@@ -6373,22 +6368,6 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		break;
 	/* linux_fchmodat2 */
 	case 452:
-		switch (ndx) {
-		case 0:
-			p = "l_int";
-			break;
-		case 1:
-			p = "userland const char *";
-			break;
-		case 2:
-			p = "l_mode_t";
-			break;
-		case 3:
-			p = "l_int";
-			break;
-		default:
-			break;
-		};
 		break;
 	default:
 		break;
@@ -7700,9 +7679,6 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 	case 451:
 	/* linux_fchmodat2 */
 	case 452:
-		if (ndx == 0 || ndx == 1)
-			p = "int";
-		break;
 	default:
 		break;
 	};
diff --git a/sys/arm64/linux/syscalls.master b/sys/arm64/linux/syscalls.master
index c867de0a26e9..f4ab6f49c363 100644
--- a/sys/arm64/linux/syscalls.master
+++ b/sys/arm64/linux/syscalls.master
@@ -1866,13 +1866,8 @@
 		int linux_cachestat(void);
 	}
 ; Linux 6.6:
-452	AUE_FCHMODAT	STD {
-		int linux_fchmodat2(
-		    l_int dfd,
-		    const char *filename,
-		    l_mode_t mode,
-		    l_int flags
-		);
+452	AUE_NULL		STD {
+		int linux_fchmodat2(void);
 	}
 
  ; vim: syntax=off
diff --git a/sys/compat/linux/linux_dummy.c b/sys/compat/linux/linux_dummy.c
index 1851bd5f8219..dfb1c90e9abf 100644
--- a/sys/compat/linux/linux_dummy.c
+++ b/sys/compat/linux/linux_dummy.c
@@ -147,3 +147,5 @@ DUMMY(futex_waitv);
 DUMMY(set_mempolicy_home_node);
 /* Linux 6.5: */
 DUMMY(cachestat);
+/* Linux 6.6: */
+DUMMY(fchmodat2);
diff --git a/sys/compat/linux/linux_file.c b/sys/compat/linux/linux_file.c
index 9e2fb36c7504..023da9a24772 100644
--- a/sys/compat/linux/linux_file.c
+++ b/sys/compat/linux/linux_file.c
@@ -779,28 +779,6 @@ linux_fchmodat(struct thread *td, struct linux_fchmodat_args *args)
 	    args->mode, 0));
 }
 
-int
-linux_fchmodat2(struct thread *td, struct linux_fchmodat2_args *args)
-{
-	int bsdflags, dfd, lflags;
-
-	bsdflags = 0;
-	lflags = args->flags;
-
-	if ((lflags & ~(LINUX_AT_EMPTY_PATH | LINUX_AT_SYMLINK_NOFOLLOW)) != 0)
-		return (EINVAL);
-
-	if ((lflags & LINUX_AT_EMPTY_PATH) != 0)
-		bsdflags |= AT_EMPTY_PATH;
-
-	if ((lflags & LINUX_AT_SYMLINK_NOFOLLOW) != 0)
-		bsdflags |= AT_SYMLINK_NOFOLLOW;
-
-	dfd = (args->dfd == LINUX_AT_FDCWD) ? AT_FDCWD : args->dfd;
-	return (kern_fchmodat(td, dfd, args->filename, UIO_USERSPACE,
-	    args->mode, bsdflags));
-}
-
 #ifdef LINUX_LEGACY_SYSCALLS
 int
 linux_mkdir(struct thread *td, struct linux_mkdir_args *args)
diff --git a/sys/i386/linux/linux_proto.h b/sys/i386/linux/linux_proto.h
index 8a35ad054fd7..255c2ec7494b 100644
--- a/sys/i386/linux/linux_proto.h
+++ b/sys/i386/linux/linux_proto.h
@@ -1731,10 +1731,7 @@ struct linux_cachestat_args {
 	syscallarg_t dummy;
 };
 struct linux_fchmodat2_args {
-	char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)];
-	char filename_l_[PADL_(const char *)]; const char * filename; char filename_r_[PADR_(const char *)];
-	char mode_l_[PADL_(l_mode_t)]; l_mode_t mode; char mode_r_[PADR_(l_mode_t)];
-	char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)];
+	syscallarg_t dummy;
 };
 int	linux_exit(struct thread *, struct linux_exit_args *);
 int	linux_fork(struct thread *, struct linux_fork_args *);
@@ -2487,7 +2484,7 @@ int	linux_fchmodat2(struct thread *, struct linux_fchmodat2_args *);
 #define	LINUX_SYS_AUE_linux_futex_waitv	AUE_NULL
 #define	LINUX_SYS_AUE_linux_set_mempolicy_home_node	AUE_NULL
 #define	LINUX_SYS_AUE_linux_cachestat	AUE_NULL
-#define	LINUX_SYS_AUE_linux_fchmodat2	AUE_FCHMODAT
+#define	LINUX_SYS_AUE_linux_fchmodat2	AUE_NULL
 
 #undef PAD_
 #undef PADL_
diff --git a/sys/i386/linux/linux_sysent.c b/sys/i386/linux/linux_sysent.c
index 1f914ec8f671..b8893008944b 100644
--- a/sys/i386/linux/linux_sysent.c
+++ b/sys/i386/linux/linux_sysent.c
@@ -466,5 +466,5 @@ struct sysent linux_sysent[] = {
 	{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_futex_waitv, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 449 = linux_futex_waitv */
 	{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_set_mempolicy_home_node, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 450 = linux_set_mempolicy_home_node */
 	{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_cachestat, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 451 = linux_cachestat */
-	{ .sy_narg = AS(linux_fchmodat2_args), .sy_call = (sy_call_t *)linux_fchmodat2, .sy_auevent = AUE_FCHMODAT, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 452 = linux_fchmodat2 */
+	{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_fchmodat2, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 452 = linux_fchmodat2 */
 };
diff --git a/sys/i386/linux/linux_systrace_args.c b/sys/i386/linux/linux_systrace_args.c
index f086e96b63b4..739d417bca6e 100644
--- a/sys/i386/linux/linux_systrace_args.c
+++ b/sys/i386/linux/linux_systrace_args.c
@@ -3353,12 +3353,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 	}
 	/* linux_fchmodat2 */
 	case 452: {
-		struct linux_fchmodat2_args *p = params;
-		iarg[a++] = p->dfd; /* l_int */
-		uarg[a++] = (intptr_t)p->filename; /* const char * */
-		iarg[a++] = p->mode; /* l_mode_t */
-		iarg[a++] = p->flags; /* l_int */
-		*n_args = 4;
+		*n_args = 0;
 		break;
 	}
 	default:
@@ -8742,22 +8737,6 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		break;
 	/* linux_fchmodat2 */
 	case 452:
-		switch (ndx) {
-		case 0:
-			p = "l_int";
-			break;
-		case 1:
-			p = "userland const char *";
-			break;
-		case 2:
-			p = "l_mode_t";
-			break;
-		case 3:
-			p = "l_int";
-			break;
-		default:
-			break;
-		};
 		break;
 	default:
 		break;
@@ -10598,9 +10577,6 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 	case 451:
 	/* linux_fchmodat2 */
 	case 452:
-		if (ndx == 0 || ndx == 1)
-			p = "int";
-		break;
 	default:
 		break;
 	};
diff --git a/sys/i386/linux/syscalls.master b/sys/i386/linux/syscalls.master
index 592d00f81b29..b93f28acae14 100644
--- a/sys/i386/linux/syscalls.master
+++ b/sys/i386/linux/syscalls.master
@@ -2630,13 +2630,8 @@
 		int linux_cachestat(void);
 	}
 ; Linux 6.6:
-452	AUE_FCHMODAT	STD {
-		int linux_fchmodat2(
-		    l_int dfd,
-		    const char *filename,
-		    l_mode_t mode,
-		    l_int flags
-		);
+452	AUE_NULL		STD {
+		int linux_fchmodat2(void);
 	}
 
  ; vim: syntax=off

From nobody Tue Oct  6 07:50:40 2026
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 4hzT2S3JsHz6cVrr
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:40 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2S2tKyz4FtZ
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:40 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273040;
	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=pGOxyRoXQZjMiwjoSfMUem9okxpvLjBnLKZ7x1PVCyU=;
	b=dQwAw5nPjpbelvDj4BE7ExqYreuXRwD63tAscZwfBduP9o1gSz5bMtcmNzwtv9f8QfF39u
	wiVuI3nSWVxZZj6rCrUGvPJ1NIgY9/h4vPOsdevTExgFjuOFXmyiYrrONKqk+EZeSVYFrg
	aRzL4UpYD4WS1LRH94cOrCUJYLzLBF0709ZEwkc4stvNRjjowW2kATu3WpAuwqQAz0lVA9
	CtXtOTsLjce4mg1a9NdI0mLhRhH8QO/aWMyJYhdesaI+V6R4UN/iPLo2ae6pxJotVVs71H
	6ft5ElMB8oNSl+VRtQqTS5PMNNejdwb7n0W1xgmnw223wYqDp05Og/d6TVGGiA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273040;
	b=fNJQOsYf1BvkLcFhTTxlGcgOpul2km7Nmub7ZYKKToHF1kOJka003maiDMQ3iJBz4xpa8x
	K+0tuoJvVD+ZjYDbwVWWY5gPArSEMUzd2KkBd4U4os7TLpBG38ZJfyGY6apyLH2qiRMOkk
	iXYdCK618kONEHJnUqhjQK2+grTMahEmDPXY8vEqohoaMT+vanKWWxCrYAl3JGzKcjdVmZ
	razXYF0H0oRxvSA4VGu4aZfjPy1gxr/JFYMfbHMsuMELemYX/NgOlIeBzGMi4KBatIj7Cg
	ujSgu/NJxkrz7oNh85ELXWjh3cclVHAU97ya+UlM+Bs7tkRMhSzDjPG6gp0n0w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273040;
	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=pGOxyRoXQZjMiwjoSfMUem9okxpvLjBnLKZ7x1PVCyU=;
	b=Qg0ZNbEHuI4LcpjnDGt0ZE7vfrJS+hW4+c3kFAgL3NmE1ZX13Z9B+tnhy+/CPMi/dbe2p8
	icUrfNsYwM6rSL0j0Dj2O0MeS9KX22XUjfrCdP4i6tWhpsgTEKxd6WyplrLGCJmlNsrrN4
	M+TVGhiLaTx0JZwOE/KUqdFjrTwyx7LtV0s7tmRQK2csbwTTVYgNcyL2Wrmjt7dTpKFbDK
	Dc1aSg3tMJHxSusUusqagx1VeYmYyC/cQXoOsshpXnyWBXNyvCToAKyuJn8v8RK+ronC6G
	Y8BslV8FD5829ZVgYRrWUjigERJPZQV/YJA4d3NZvlnH9U3LSjgb/RQxBGLg9A==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2S1xwNzxbv
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:40 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 185ac
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:40 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: b75d670fe755 - stable/15 - ufshci: revisit controller reset path and add I/O timeout handling
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: b75d670fe7559ad5fc23c51d805e1786bbddfd22
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:40 +0000
Message-Id: <6ac4a850.185ac.48aff3d4@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=b75d670fe7559ad5fc23c51d805e1786bbddfd22

commit b75d670fe7559ad5fc23c51d805e1786bbddfd22
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2025-09-18 14:37:08 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:45 +0000

    ufshci: revisit controller reset path and add I/O timeout handling
    
    This patch revisits the controller reset path and introduces timeout
    handling for I/O commands.
    
    To support controller reset during driver operation, the controller’s
    construct, destruct, enable, and disable functions are clearly
    separated in ufshci_ctrlr.c. ufshci_ctrlr_hw_reset() function is
    added to leverage enable/disable.
    
    After initialization, ufshci_ctrlr_reset_task() is also introduced to
    ensure controller resets are performed via the task queue.
    
    Timeout handling is designed in five steps. This patch implements
    Step 1 and Step 5, while the remaining steps will be added later.
    The timeout mechanism follows the same shared timeout model used in
    the NVMe driver.
    
    Test: Intentionally delayed UPIU I/O in QEMU to trigger a timeout and
    verify timeout handling.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D52440
    
    (cherry picked from commit 6b841d70960a3a0ec4e43392683053878c403f9c)
---
 sys/dev/ufshci/ufshci_ctrlr.c     | 399 +++++++++++++++++++++++---------------
 sys/dev/ufshci/ufshci_ctrlr_cmd.c |   2 +-
 sys/dev/ufshci/ufshci_dev.c       |   1 -
 sys/dev/ufshci/ufshci_pci.c       |   3 +-
 sys/dev/ufshci/ufshci_private.h   |  41 +++-
 sys/dev/ufshci/ufshci_req_queue.c | 292 ++++++++++++++++++++++++++--
 sys/dev/ufshci/ufshci_req_sdb.c   |  77 +++++++-
 sys/dev/ufshci/ufshci_sim.c       |   1 -
 8 files changed, 633 insertions(+), 183 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index 21639fc8a53f..fd61451f8a9e 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -12,8 +12,108 @@
 #include "ufshci_private.h"
 #include "ufshci_reg.h"
 
+static void
+ufshci_ctrlr_fail(struct ufshci_controller *ctrlr)
+{
+	ctrlr->is_failed = true;
+
+	ufshci_req_queue_fail(ctrlr,
+	    ctrlr->task_mgmt_req_queue.qops.get_hw_queue(
+		&ctrlr->task_mgmt_req_queue));
+	ufshci_req_queue_fail(ctrlr,
+	    ctrlr->transfer_req_queue.qops.get_hw_queue(
+		&ctrlr->transfer_req_queue));
+}
+
+static void
+ufshci_ctrlr_start(struct ufshci_controller *ctrlr, bool resetting)
+{
+	TSENTER();
+
+	/*
+	 * If `resetting` is true, we are on the reset path.
+	 * Re-enable request queues here because ufshci_ctrlr_reset_task()
+	 * disables them during reset.
+	 */
+	if (resetting) {
+		if (ufshci_utmr_req_queue_enable(ctrlr) != 0) {
+			ufshci_ctrlr_fail(ctrlr);
+			return;
+		}
+		if (ufshci_utr_req_queue_enable(ctrlr) != 0) {
+			ufshci_ctrlr_fail(ctrlr);
+			return;
+		}
+	}
+
+	if (ufshci_ctrlr_send_nop(ctrlr) != 0) {
+		ufshci_ctrlr_fail(ctrlr);
+		return;
+	}
+
+	/* Initialize UFS target drvice */
+	if (ufshci_dev_init(ctrlr) != 0) {
+		ufshci_ctrlr_fail(ctrlr);
+		return;
+	}
+
+	/* Initialize Reference Clock */
+	if (ufshci_dev_init_reference_clock(ctrlr) != 0) {
+		ufshci_ctrlr_fail(ctrlr);
+		return;
+	}
+
+	/* Initialize unipro */
+	if (ufshci_dev_init_unipro(ctrlr) != 0) {
+		ufshci_ctrlr_fail(ctrlr);
+		return;
+	}
+
+	/*
+	 * Initialize UIC Power Mode
+	 * QEMU UFS devices do not support unipro and power mode.
+	 */
+	if (!(ctrlr->quirks & UFSHCI_QUIRK_IGNORE_UIC_POWER_MODE) &&
+	    ufshci_dev_init_uic_power_mode(ctrlr) != 0) {
+		ufshci_ctrlr_fail(ctrlr);
+		return;
+	}
+
+	/* Initialize UFS Power Mode */
+	if (ufshci_dev_init_ufs_power_mode(ctrlr) != 0) {
+		ufshci_ctrlr_fail(ctrlr);
+		return;
+	}
+
+	/* Read Controller Descriptor (Device, Geometry) */
+	if (ufshci_dev_get_descriptor(ctrlr) != 0) {
+		ufshci_ctrlr_fail(ctrlr);
+		return;
+	}
+
+	if (ufshci_dev_config_write_booster(ctrlr)) {
+		ufshci_ctrlr_fail(ctrlr);
+		return;
+	}
+
+	/* TODO: Configure Write Protect */
+
+	/* TODO: Configure Background Operations */
+
+	/*
+	 * If the reset is due to a timeout, it is already attached to the SIM
+	 * and does not need to be attached again.
+	 */
+	if (!resetting && ufshci_sim_attach(ctrlr) != 0) {
+		ufshci_ctrlr_fail(ctrlr);
+		return;
+	}
+
+	TSEXIT();
+}
+
 static int
-ufshci_ctrlr_enable_host_ctrlr(struct ufshci_controller *ctrlr)
+ufshci_ctrlr_disable_host_ctrlr(struct ufshci_controller *ctrlr)
 {
 	int timeout = ticks + MSEC_2_TICKS(ctrlr->device_init_timeout_in_ms);
 	sbintime_t delta_t = SBT_1US;
@@ -27,6 +127,35 @@ ufshci_ctrlr_enable_host_ctrlr(struct ufshci_controller *ctrlr)
 		ufshci_mmio_write_4(ctrlr, hce, hce);
 	}
 
+	/* Wait for the HCE flag to change */
+	while (1) {
+		hce = ufshci_mmio_read_4(ctrlr, hce);
+		if (!UFSHCIV(UFSHCI_HCE_REG_HCE, hce))
+			break;
+		if (timeout - ticks < 0) {
+			ufshci_printf(ctrlr,
+			    "host controller failed to disable "
+			    "within %d ms\n",
+			    ctrlr->device_init_timeout_in_ms);
+			return (ENXIO);
+		}
+
+		pause_sbt("ufshci_disable_hce", delta_t, 0, C_PREL(1));
+		delta_t = min(SBT_1MS, delta_t * 3 / 2);
+	}
+
+	return (0);
+}
+
+static int
+ufshci_ctrlr_enable_host_ctrlr(struct ufshci_controller *ctrlr)
+{
+	int timeout = ticks + MSEC_2_TICKS(ctrlr->device_init_timeout_in_ms);
+	sbintime_t delta_t = SBT_1US;
+	uint32_t hce;
+
+	hce = ufshci_mmio_read_4(ctrlr, hce);
+
 	/* Enable UFS host controller */
 	hce |= UFSHCIM(UFSHCI_HCE_REG_HCE);
 	ufshci_mmio_write_4(ctrlr, hce, hce);
@@ -36,7 +165,7 @@ ufshci_ctrlr_enable_host_ctrlr(struct ufshci_controller *ctrlr)
 	 * unstable, so we need to read the HCE value after some time after
 	 * initialization is complete.
 	 */
-	pause_sbt("ufshci_hce", ustosbt(100), 0, C_PREL(1));
+	pause_sbt("ufshci_enable_hce", ustosbt(100), 0, C_PREL(1));
 
 	/* Wait for the HCE flag to change */
 	while (1) {
@@ -51,17 +180,103 @@ ufshci_ctrlr_enable_host_ctrlr(struct ufshci_controller *ctrlr)
 			return (ENXIO);
 		}
 
-		pause_sbt("ufshci_hce", delta_t, 0, C_PREL(1));
+		pause_sbt("ufshci_enable_hce", delta_t, 0, C_PREL(1));
 		delta_t = min(SBT_1MS, delta_t * 3 / 2);
 	}
 
 	return (0);
 }
 
+static int
+ufshci_ctrlr_disable(struct ufshci_controller *ctrlr)
+{
+	int error;
+
+	/* Disable all interrupts */
+	ufshci_mmio_write_4(ctrlr, ie, 0);
+
+	error = ufshci_ctrlr_disable_host_ctrlr(ctrlr);
+	return (error);
+}
+
+static int
+ufshci_ctrlr_enable(struct ufshci_controller *ctrlr)
+{
+	uint32_t ie, hcs;
+	int error;
+
+	error = ufshci_ctrlr_enable_host_ctrlr(ctrlr);
+	if (error)
+		return (error);
+
+	/* Send DME_LINKSTARTUP command to start the link startup procedure */
+	error = ufshci_uic_send_dme_link_startup(ctrlr);
+	if (error)
+		return (error);
+
+	/*
+	 * The device_present(UFSHCI_HCS_REG_DP) bit becomes true if the host
+	 * controller has successfully received a Link Startup UIC command
+	 * response and the UFS device has found a physical link to the
+	 * controller.
+	 */
+	hcs = ufshci_mmio_read_4(ctrlr, hcs);
+	if (!UFSHCIV(UFSHCI_HCS_REG_DP, hcs)) {
+		ufshci_printf(ctrlr, "UFS device not found\n");
+		return (ENXIO);
+	}
+
+	/* Enable additional interrupts by programming the IE register. */
+	ie = ufshci_mmio_read_4(ctrlr, ie);
+	ie |= UFSHCIM(UFSHCI_IE_REG_UTRCE);  /* UTR Completion */
+	ie |= UFSHCIM(UFSHCI_IE_REG_UEE);    /* UIC Error */
+	ie |= UFSHCIM(UFSHCI_IE_REG_UTMRCE); /* UTMR Completion */
+	ie |= UFSHCIM(UFSHCI_IE_REG_DFEE);   /* Device Fatal Error */
+	ie |= UFSHCIM(UFSHCI_IE_REG_UTPEE);  /* UTP Error */
+	ie |= UFSHCIM(UFSHCI_IE_REG_HCFEE);  /* Host Ctrlr Fatal Error */
+	ie |= UFSHCIM(UFSHCI_IE_REG_SBFEE);  /* System Bus Fatal Error */
+	ie |= UFSHCIM(UFSHCI_IE_REG_CEFEE);  /* Crypto Engine Fatal Error */
+	ufshci_mmio_write_4(ctrlr, ie, ie);
+
+	/* TODO: Initialize interrupt Aggregation Control Register (UTRIACR) */
+
+	return (0);
+}
+
+static int
+ufshci_ctrlr_hw_reset(struct ufshci_controller *ctrlr)
+{
+	int error;
+
+	error = ufshci_ctrlr_disable(ctrlr);
+	if (error)
+		return (error);
+
+	error = ufshci_ctrlr_enable(ctrlr);
+	return (error);
+}
+
+static void
+ufshci_ctrlr_reset_task(void *arg, int pending)
+{
+	struct ufshci_controller *ctrlr = arg;
+	int error;
+
+	/* Release resources */
+	ufshci_utmr_req_queue_disable(ctrlr);
+	ufshci_utr_req_queue_disable(ctrlr);
+
+	error = ufshci_ctrlr_hw_reset(ctrlr);
+	if (error)
+		return (ufshci_ctrlr_fail(ctrlr));
+
+	ufshci_ctrlr_start(ctrlr, true);
+}
+
 int
 ufshci_ctrlr_construct(struct ufshci_controller *ctrlr, device_t dev)
 {
-	uint32_t ver, cap, hcs, ie, ahit;
+	uint32_t ver, cap, ahit;
 	uint32_t timeout_period, retry_count;
 	int error;
 
@@ -114,16 +329,15 @@ ufshci_ctrlr_construct(struct ufshci_controller *ctrlr, device_t dev)
 	TUNABLE_INT_FETCH("hw.ufshci.retry_count", &retry_count);
 	ctrlr->retry_count = retry_count;
 
-	/* Disable all interrupts */
-	ufshci_mmio_write_4(ctrlr, ie, 0);
-
-	/* Enable Host Controller */
-	error = ufshci_ctrlr_enable_host_ctrlr(ctrlr);
-	if (error)
-		return (error);
+	ctrlr->enable_aborts = 1;
+	if (ctrlr->quirks & UFSHCI_QUIRK_NOT_SUPPORT_ABORT_TASK)
+		ctrlr->enable_aborts = 0;
+	else
+		TUNABLE_INT_FETCH("hw.ufshci.enable_aborts",
+		    &ctrlr->enable_aborts);
 
-	/* Send DME_LINKSTARTUP command to start the link startup procedure */
-	error = ufshci_uic_send_dme_link_startup(ctrlr);
+	/* Reset the UFSHCI controller */
+	error = ufshci_ctrlr_hw_reset(ctrlr);
 	if (error)
 		return (error);
 
@@ -134,18 +348,6 @@ ufshci_ctrlr_construct(struct ufshci_controller *ctrlr, device_t dev)
 	ahit = 0;
 	ufshci_mmio_write_4(ctrlr, ahit, ahit);
 
-	/*
-	 * The device_present(UFSHCI_HCS_REG_DP) bit becomes true if the host
-	 * controller has successfully received a Link Startup UIC command
-	 * response and the UFS device has found a physical link to the
-	 * controller.
-	 */
-	hcs = ufshci_mmio_read_4(ctrlr, hcs);
-	if (!UFSHCIV(UFSHCI_HCS_REG_DP, hcs)) {
-		ufshci_printf(ctrlr, "UFS device not found\n");
-		return (ENXIO);
-	}
-
 	/* Allocate and initialize UTP Task Management Request List. */
 	error = ufshci_utmr_req_queue_construct(ctrlr);
 	if (error)
@@ -156,27 +358,21 @@ ufshci_ctrlr_construct(struct ufshci_controller *ctrlr, device_t dev)
 	if (error)
 		return (error);
 
-	/* Enable additional interrupts by programming the IE register. */
-	ie = ufshci_mmio_read_4(ctrlr, ie);
-	ie |= UFSHCIM(UFSHCI_IE_REG_UTRCE);  /* UTR Completion */
-	ie |= UFSHCIM(UFSHCI_IE_REG_UEE);    /* UIC Error */
-	ie |= UFSHCIM(UFSHCI_IE_REG_UTMRCE); /* UTMR Completion */
-	ie |= UFSHCIM(UFSHCI_IE_REG_DFEE);   /* Device Fatal Error */
-	ie |= UFSHCIM(UFSHCI_IE_REG_UTPEE);  /* UTP Error */
-	ie |= UFSHCIM(UFSHCI_IE_REG_HCFEE);  /* Host Ctrlr Fatal Error */
-	ie |= UFSHCIM(UFSHCI_IE_REG_SBFEE);  /* System Bus Fatal Error */
-	ie |= UFSHCIM(UFSHCI_IE_REG_CEFEE);  /* Crypto Engine Fatal Error */
-	ufshci_mmio_write_4(ctrlr, ie, ie);
-
-	/* TODO: Initialize interrupt Aggregation Control Register (UTRIACR) */
-
 	/* TODO: Separate IO and Admin slot */
+
 	/*
 	 * max_hw_pend_io is the number of slots in the transfer_req_queue.
 	 * Reduce num_entries by one to reserve an admin slot.
 	 */
 	ctrlr->max_hw_pend_io = ctrlr->transfer_req_queue.num_entries - 1;
 
+	/* Create a thread for the taskqueue. */
+	ctrlr->taskqueue = taskqueue_create("ufshci_taskq", M_WAITOK,
+	    taskqueue_thread_enqueue, &ctrlr->taskqueue);
+	taskqueue_start_threads(&ctrlr->taskqueue, 1, PI_DISK, "ufshci taskq");
+
+	TASK_INIT(&ctrlr->reset_task, 0, ufshci_ctrlr_reset_task, ctrlr);
+
 	return (0);
 }
 
@@ -208,50 +404,21 @@ ufshci_ctrlr_destruct(struct ufshci_controller *ctrlr, device_t dev)
 	bus_release_resource(dev, SYS_RES_MEMORY, ctrlr->resource_id,
 	    ctrlr->resource);
 nores:
+	KASSERT(!mtx_owned(&ctrlr->uic_cmd_lock),
+	    ("destroying uic_cmd_lock while still owned"));
 	mtx_destroy(&ctrlr->uic_cmd_lock);
+
+	KASSERT(!mtx_owned(&ctrlr->sc_mtx),
+	    ("destroying sc_mtx while still owned"));
 	mtx_destroy(&ctrlr->sc_mtx);
 
 	return;
 }
 
-int
+void
 ufshci_ctrlr_reset(struct ufshci_controller *ctrlr)
 {
-	uint32_t ie;
-	int error;
-
-	/* Backup and disable all interrupts */
-	ie = ufshci_mmio_read_4(ctrlr, ie);
-	ufshci_mmio_write_4(ctrlr, ie, 0);
-
-	/* Release resources */
-	ufshci_utmr_req_queue_destroy(ctrlr);
-	ufshci_utr_req_queue_destroy(ctrlr);
-
-	/* Reset Host Controller */
-	error = ufshci_ctrlr_enable_host_ctrlr(ctrlr);
-	if (error)
-		return (error);
-
-	/* Send DME_LINKSTARTUP command to start the link startup procedure */
-	error = ufshci_uic_send_dme_link_startup(ctrlr);
-	if (error)
-		return (error);
-
-	/* Enable interrupts */
-	ufshci_mmio_write_4(ctrlr, ie, ie);
-
-	/* Allocate and initialize UTP Task Management Request List. */
-	error = ufshci_utmr_req_queue_construct(ctrlr);
-	if (error)
-		return (error);
-
-	/* Allocate and initialize UTP Transfer Request List or SQ/CQ. */
-	error = ufshci_utr_req_queue_construct(ctrlr);
-	if (error)
-		return (error);
-
-	return (0);
+	taskqueue_enqueue(ctrlr->taskqueue, &ctrlr->reset_task);
 }
 
 int
@@ -295,84 +462,6 @@ ufshci_ctrlr_send_nop(struct ufshci_controller *ctrlr)
 	return (0);
 }
 
-static void
-ufshci_ctrlr_fail(struct ufshci_controller *ctrlr, bool admin_also)
-{
-	printf("ufshci(4): ufshci_ctrlr_fail\n");
-
-	ctrlr->is_failed = true;
-
-	/* TODO: task_mgmt_req_queue should be handled as fail */
-
-	ufshci_req_queue_fail(ctrlr,
-	    &ctrlr->transfer_req_queue.hwq[UFSHCI_SDB_Q]);
-}
-
-static void
-ufshci_ctrlr_start(struct ufshci_controller *ctrlr)
-{
-	TSENTER();
-
-	if (ufshci_ctrlr_send_nop(ctrlr) != 0) {
-		ufshci_ctrlr_fail(ctrlr, false);
-		return;
-	}
-
-	/* Initialize UFS target drvice */
-	if (ufshci_dev_init(ctrlr) != 0) {
-		ufshci_ctrlr_fail(ctrlr, false);
-		return;
-	}
-
-	/* Initialize Reference Clock */
-	if (ufshci_dev_init_reference_clock(ctrlr) != 0) {
-		ufshci_ctrlr_fail(ctrlr, false);
-		return;
-	}
-
-	/* Initialize unipro */
-	if (ufshci_dev_init_unipro(ctrlr) != 0) {
-		ufshci_ctrlr_fail(ctrlr, false);
-		return;
-	}
-
-	/*
-	 * Initialize UIC Power Mode
-	 * QEMU UFS devices do not support unipro and power mode.
-	 */
-	if (!(ctrlr->quirks & UFSHCI_QUIRK_IGNORE_UIC_POWER_MODE) &&
-	    ufshci_dev_init_uic_power_mode(ctrlr) != 0) {
-		ufshci_ctrlr_fail(ctrlr, false);
-		return;
-	}
-
-	/* Initialize UFS Power Mode */
-	if (ufshci_dev_init_ufs_power_mode(ctrlr) != 0) {
-		ufshci_ctrlr_fail(ctrlr, false);
-		return;
-	}
-
-	/* Read Controller Descriptor (Device, Geometry) */
-	if (ufshci_dev_get_descriptor(ctrlr) != 0) {
-		ufshci_ctrlr_fail(ctrlr, false);
-		return;
-	}
-
-	if (ufshci_dev_config_write_booster(ctrlr)) {
-		ufshci_ctrlr_fail(ctrlr, false);
-		return;
-	}
-
-	/* TODO: Configure Background Operations */
-
-	if (ufshci_sim_attach(ctrlr) != 0) {
-		ufshci_ctrlr_fail(ctrlr, false);
-		return;
-	}
-
-	TSEXIT();
-}
-
 void
 ufshci_ctrlr_start_config_hook(void *arg)
 {
@@ -382,9 +471,9 @@ ufshci_ctrlr_start_config_hook(void *arg)
 
 	if (ufshci_utmr_req_queue_enable(ctrlr) == 0 &&
 	    ufshci_utr_req_queue_enable(ctrlr) == 0)
-		ufshci_ctrlr_start(ctrlr);
+		ufshci_ctrlr_start(ctrlr, false);
 	else
-		ufshci_ctrlr_fail(ctrlr, false);
+		ufshci_ctrlr_fail(ctrlr);
 
 	ufshci_sysctl_initialize_ctrlr(ctrlr);
 	config_intrhook_disestablish(&ctrlr->config_hook);
diff --git a/sys/dev/ufshci/ufshci_ctrlr_cmd.c b/sys/dev/ufshci/ufshci_ctrlr_cmd.c
index 71d163d998af..253f31a93c2e 100644
--- a/sys/dev/ufshci/ufshci_ctrlr_cmd.c
+++ b/sys/dev/ufshci/ufshci_ctrlr_cmd.c
@@ -15,7 +15,7 @@ ufshci_ctrlr_cmd_send_task_mgmt_request(struct ufshci_controller *ctrlr,
 	struct ufshci_request *req;
 	struct ufshci_task_mgmt_request_upiu *upiu;
 
-	req = ufshci_allocate_request_vaddr(NULL, 0, M_WAITOK, cb_fn, cb_arg);
+	req = ufshci_allocate_request_vaddr(NULL, 0, M_NOWAIT, cb_fn, cb_arg);
 
 	req->request_size = sizeof(struct ufshci_task_mgmt_request_upiu);
 	req->response_size = sizeof(struct ufshci_task_mgmt_response_upiu);
diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index dd196b1d638b..975468e5156f 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -774,4 +774,3 @@ out:
 	ufshci_dev_disable_write_booster(ctrlr);
 	return (error);
 }
-
diff --git a/sys/dev/ufshci/ufshci_pci.c b/sys/dev/ufshci/ufshci_pci.c
index 8da1c2d342a3..c518c6cf6aae 100644
--- a/sys/dev/ufshci/ufshci_pci.c
+++ b/sys/dev/ufshci/ufshci_pci.c
@@ -49,7 +49,8 @@ static struct _pcsid {
 	uint32_t ref_clk;
 	uint32_t quirks;
 } pci_ids[] = { { 0x131b36, "QEMU UFS Host Controller", UFSHCI_REF_CLK_19_2MHz,
-		    UFSHCI_QUIRK_IGNORE_UIC_POWER_MODE },
+		    UFSHCI_QUIRK_IGNORE_UIC_POWER_MODE |
+			UFSHCI_QUIRK_NOT_SUPPORT_ABORT_TASK },
 	{ 0x98fa8086, "Intel Lakefield UFS Host Controller",
 	    UFSHCI_REF_CLK_19_2MHz,
 	    UFSHCI_QUIRK_LONG_PEER_PA_TACTIVATE |
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index 2e033f84c373..ec388c06e248 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -68,7 +68,6 @@ struct ufshci_request {
 	bool is_admin;
 	int32_t retries;
 	bool payload_valid;
-	bool timeout;
 	bool spare[2]; /* Future use */
 	STAILQ_ENTRY(ufshci_request) stailq;
 };
@@ -82,6 +81,7 @@ enum ufshci_slot_state {
 };
 
 struct ufshci_tracker {
+	TAILQ_ENTRY(ufshci_tracker) tailq;
 	struct ufshci_request *req;
 	struct ufshci_req_queue *req_queue;
 	struct ufshci_hw_queue *hwq;
@@ -121,6 +121,8 @@ struct ufshci_qops {
 	    struct ufshci_req_queue *req_queue);
 	int (*enable)(struct ufshci_controller *ctrlr,
 	    struct ufshci_req_queue *req_queue);
+	void (*disable)(struct ufshci_controller *ctrlr,
+	    struct ufshci_req_queue *req_queue);
 	int (*reserve_slot)(struct ufshci_req_queue *req_queue,
 	    struct ufshci_tracker **tr);
 	int (*reserve_admin_slot)(struct ufshci_req_queue *req_queue,
@@ -137,16 +139,27 @@ struct ufshci_qops {
 
 #define UFSHCI_SDB_Q 0 /* Queue number for a single doorbell queue */
 
+enum ufshci_recovery {
+	RECOVERY_NONE = 0, /* Normal operations */
+	RECOVERY_WAITING,  /* waiting for the reset to complete */
+};
+
 /*
  * Generic queue container used by both SDB (fixed 32-slot bitmap) and MCQ
  * (ring buffer) modes. Fields are shared; some such as sq_head, sq_tail and
  * cq_head are not used in SDB but used in MCQ.
  */
 struct ufshci_hw_queue {
+	struct ufshci_controller *ctrlr;
+	struct ufshci_req_queue *req_queue;
 	uint32_t id;
 	int domain;
 	int cpu;
 
+	struct callout timer;		     /* recovery lock */
+	bool timer_armed;		     /* recovery lock */
+	enum ufshci_recovery recovery_state; /* recovery lock */
+
 	union {
 		struct ufshci_utp_xfer_req_desc *utrd;
 		struct ufshci_utp_task_mgmt_req_desc *utmrd;
@@ -161,6 +174,9 @@ struct ufshci_hw_queue {
 	uint32_t num_entries;
 	uint32_t num_trackers;
 
+	TAILQ_HEAD(, ufshci_tracker) free_tr;
+	TAILQ_HEAD(, ufshci_tracker) outstanding_tr;
+
 	/*
 	 * A Request List using the single doorbell method uses a dedicated
 	 * ufshci_tracker, one per slot.
@@ -177,7 +193,13 @@ struct ufshci_hw_queue {
 	int64_t num_retries;
 	int64_t num_failures;
 
+	/*
+	 * Each lock may be acquired independently.
+	 * When both are required, acquire them in this order to avoid
+	 * deadlocks. (recovery_lock -> qlock)
+	 */
 	struct mtx_padalign qlock;
+	struct mtx_padalign recovery_lock;
 };
 
 struct ufshci_req_queue {
@@ -242,6 +264,9 @@ struct ufshci_controller {
 	4 /* Need to wait 1250us after power mode change */
 #define UFSHCI_QUIRK_CHANGE_LANE_AND_GEAR_SEPARATELY \
 	8 /* Need to change the number of lanes before changing HS-GEAR. */
+#define UFSHCI_QUIRK_NOT_SUPPORT_ABORT_TASK \
+	16 /* QEMU does not support Task Management Request */
+
 	uint32_t ref_clk;
 
 	struct cam_sim *ufshci_sim;
@@ -264,6 +289,9 @@ struct ufshci_controller {
 	/* Fields for tracking progress during controller initialization. */
 	struct intr_config_hook config_hook;
 
+	struct task reset_task;
+	struct taskqueue *taskqueue;
+
 	/* For shared legacy interrupt. */
 	int rid;
 	struct resource *res;
@@ -272,6 +300,8 @@ struct ufshci_controller {
 	uint32_t major_version;
 	uint32_t minor_version;
 
+	uint32_t enable_aborts;
+
 	uint32_t num_io_queues;
 	uint32_t max_hw_pend_io;
 
@@ -345,7 +375,7 @@ void ufshci_sim_detach(struct ufshci_controller *ctrlr);
 /* Controller */
 int ufshci_ctrlr_construct(struct ufshci_controller *ctrlr, device_t dev);
 void ufshci_ctrlr_destruct(struct ufshci_controller *ctrlr, device_t dev);
-int ufshci_ctrlr_reset(struct ufshci_controller *ctrlr);
+void ufshci_ctrlr_reset(struct ufshci_controller *ctrlr);
 /* ctrlr defined as void * to allow use with config_intrhook. */
 void ufshci_ctrlr_start_config_hook(void *arg);
 void ufshci_ctrlr_poll(struct ufshci_controller *ctrlr);
@@ -388,7 +418,9 @@ int ufshci_utmr_req_queue_construct(struct ufshci_controller *ctrlr);
 int ufshci_utr_req_queue_construct(struct ufshci_controller *ctrlr);
 void ufshci_utmr_req_queue_destroy(struct ufshci_controller *ctrlr);
 void ufshci_utr_req_queue_destroy(struct ufshci_controller *ctrlr);
+void ufshci_utmr_req_queue_disable(struct ufshci_controller *ctrlr);
 int ufshci_utmr_req_queue_enable(struct ufshci_controller *ctrlr);
+void ufshci_utr_req_queue_disable(struct ufshci_controller *ctrlr);
 int ufshci_utr_req_queue_enable(struct ufshci_controller *ctrlr);
 void ufshci_req_queue_fail(struct ufshci_controller *ctrlr,
     struct ufshci_hw_queue *hwq);
@@ -404,6 +436,8 @@ void ufshci_req_sdb_destroy(struct ufshci_controller *ctrlr,
     struct ufshci_req_queue *req_queue);
 struct ufshci_hw_queue *ufshci_req_sdb_get_hw_queue(
     struct ufshci_req_queue *req_queue);
+void ufshci_req_sdb_disable(struct ufshci_controller *ctrlr,
+    struct ufshci_req_queue *req_queue);
 int ufshci_req_sdb_enable(struct ufshci_controller *ctrlr,
     struct ufshci_req_queue *req_queue);
 int ufshci_req_sdb_reserve_slot(struct ufshci_req_queue *req_queue,
@@ -489,13 +523,12 @@ _ufshci_allocate_request(const int how, ufshci_cb_fn_t cb_fn, void *cb_arg)
 	struct ufshci_request *req;
 
 	KASSERT(how == M_WAITOK || how == M_NOWAIT,
-	    ("nvme_allocate_request: invalid how %d", how));
+	    ("ufshci_allocate_request: invalid how %d", how));
 
 	req = malloc(sizeof(*req), M_UFSHCI, how | M_ZERO);
 	if (req != NULL) {
 		req->cb_fn = cb_fn;
 		req->cb_arg = cb_arg;
-		req->timeout = true;
 	}
 	return (req);
 }
diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
index bb6efa6d2ccc..7aa164d00bec 100644
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -24,6 +24,7 @@ static const struct ufshci_qops sdb_utmr_qops = {
 	.destroy = ufshci_req_sdb_destroy,
 	.get_hw_queue = ufshci_req_sdb_get_hw_queue,
 	.enable = ufshci_req_sdb_enable,
+	.disable = ufshci_req_sdb_disable,
 	.reserve_slot = ufshci_req_sdb_reserve_slot,
 	.reserve_admin_slot = ufshci_req_sdb_reserve_slot,
 	.ring_doorbell = ufshci_req_sdb_utmr_ring_doorbell,
@@ -38,6 +39,7 @@ static const struct ufshci_qops sdb_utr_qops = {
 	.destroy = ufshci_req_sdb_destroy,
 	.get_hw_queue = ufshci_req_sdb_get_hw_queue,
 	.enable = ufshci_req_sdb_enable,
+	.disable = ufshci_req_sdb_disable,
 	.reserve_slot = ufshci_req_sdb_reserve_slot,
 	.reserve_admin_slot = ufshci_req_sdb_reserve_slot,
 	.ring_doorbell = ufshci_req_sdb_utr_ring_doorbell,
@@ -74,6 +76,13 @@ ufshci_utmr_req_queue_destroy(struct ufshci_controller *ctrlr)
 	    &ctrlr->task_mgmt_req_queue);
 }
 
+void
+ufshci_utmr_req_queue_disable(struct ufshci_controller *ctrlr)
+{
+	ctrlr->task_mgmt_req_queue.qops.disable(ctrlr,
+	    &ctrlr->task_mgmt_req_queue);
+}
+
 int
 ufshci_utmr_req_queue_enable(struct ufshci_controller *ctrlr)
 {
@@ -109,6 +118,13 @@ ufshci_utr_req_queue_destroy(struct ufshci_controller *ctrlr)
 	    &ctrlr->transfer_req_queue);
 }
 
+void
+ufshci_utr_req_queue_disable(struct ufshci_controller *ctrlr)
+{
+	ctrlr->transfer_req_queue.qops.disable(ctrlr,
+	    &ctrlr->transfer_req_queue);
+}
+
 int
 ufshci_utr_req_queue_enable(struct ufshci_controller *ctrlr)
 {
@@ -226,31 +242,30 @@ void
 ufshci_req_queue_complete_tracker(struct ufshci_tracker *tr)
 {
 	struct ufshci_req_queue *req_queue = tr->req_queue;
+	struct ufshci_hw_queue *hwq = tr->hwq;
 	struct ufshci_request *req = tr->req;
 	struct ufshci_completion cpl;
 	uint8_t ocs;
 	bool retry, error, retriable;
 
-	mtx_assert(&tr->hwq->qlock, MA_NOTOWNED);
+	mtx_assert(&hwq->qlock, MA_NOTOWNED);
 
 	/* Copy the response from the Request Descriptor or UTP Command
 	 * Descriptor. */
+	cpl.size = tr->response_size;
 	if (req_queue->is_task_mgmt) {
-		cpl.size = tr->response_size;
 		memcpy(&cpl.response_upiu,
-		    (void *)tr->hwq->utmrd[tr->slot_num].response_upiu,
-		    cpl.size);
+		    (void *)hwq->utmrd[tr->slot_num].response_upiu, cpl.size);
 
-		ocs = tr->hwq->utmrd[tr->slot_num].overall_command_status;
+		ocs = hwq->utmrd[tr->slot_num].overall_command_status;
 	} else {
 		bus_dmamap_sync(req_queue->dma_tag_ucd, req_queue->ucdmem_map,
 		    BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
 
-		cpl.size = tr->response_size;
 		memcpy(&cpl.response_upiu, (void *)tr->ucd->response_upiu,
 		    cpl.size);
 
-		ocs = tr->hwq->utrd[tr->slot_num].overall_command_status;
+		ocs = hwq->utrd[tr->slot_num].overall_command_status;
 	}
 
 	error = ufshci_req_queue_response_is_error(req_queue, ocs,
@@ -262,9 +277,9 @@ ufshci_req_queue_complete_tracker(struct ufshci_tracker *tr)
 	retry = error && retriable &&
 	    req->retries < req_queue->ctrlr->retry_count;
 	if (retry)
-		tr->hwq->num_retries++;
+		hwq->num_retries++;
 	if (error && req->retries >= req_queue->ctrlr->retry_count && retriable)
-		tr->hwq->num_failures++;
+		hwq->num_failures++;
 
 	KASSERT(tr->req, ("there is no request assigned to the tracker\n"));
 	KASSERT(cpl.response_upiu.header.task_tag ==
@@ -282,7 +297,7 @@ ufshci_req_queue_complete_tracker(struct ufshci_tracker *tr)
 			req->cb_fn(req->cb_arg, &cpl, error);
 	}
 
-	mtx_lock(&tr->hwq->qlock);
+	mtx_lock(&hwq->qlock);
 
 	/* Clear the UTRL Completion Notification register */
 	req_queue->qops.clear_cpl_ntf(req_queue->ctrlr, tr);
@@ -301,6 +316,9 @@ ufshci_req_queue_complete_tracker(struct ufshci_tracker *tr)
 		ufshci_free_request(req);
 		tr->req = NULL;
 		tr->slot_state = UFSHCI_SLOT_STATE_FREE;
+
+		TAILQ_REMOVE(&hwq->outstanding_tr, tr, tailq);
+		TAILQ_INSERT_HEAD(&hwq->free_tr, tr, tailq);
 	}
 
 	mtx_unlock(&tr->hwq->qlock);
@@ -309,7 +327,16 @@ ufshci_req_queue_complete_tracker(struct ufshci_tracker *tr)
 bool
 ufshci_req_queue_process_completions(struct ufshci_req_queue *req_queue)
 {
-	return (req_queue->qops.process_cpl(req_queue));
+	struct ufshci_hw_queue *hwq;
+	bool done;
+
+	hwq = req_queue->qops.get_hw_queue(req_queue);
+
+	mtx_lock(&hwq->recovery_lock);
+	done = req_queue->qops.process_cpl(req_queue);
+	mtx_unlock(&hwq->recovery_lock);
+
+	return (done);
 }
 
 static void
@@ -427,6 +454,225 @@ ufshci_req_queue_fill_utr_descriptor(struct ufshci_utp_xfer_req_desc *desc,
 	desc->prdt_length = prdt_entry_cnt;
 }
 
+static void
+ufshci_req_queue_timeout_recovery(struct ufshci_controller *ctrlr,
+    struct ufshci_hw_queue *hwq)
+{
+	/* TODO: Step 2. Logical unit reset */
+	/* TODO: Step 3. Target device reset */
+	/* TODO: Step 4. Bus reset */
+
+	/*
+	 * Step 5. All previous commands were timeout.
+	 * Recovery failed, reset the host controller.
+	 */
+	ufshci_printf(ctrlr,
+	    "Recovery step 5: Resetting controller due to a timeout.\n");
+	hwq->recovery_state = RECOVERY_WAITING;
+
+	ufshci_ctrlr_reset(ctrlr);
+}
+
+static void
+ufshci_abort_complete(void *arg, const struct ufshci_completion *status,
+    bool error)
+{
+	struct ufshci_tracker *tr = arg;
+
+	/*
+	 * We still need to check the active tracker array, to cover race where
+	 * I/O timed out at same time controller was completing the I/O. An
+	 * abort request always is on the Task Management Request queue, but
+	 * affects either an Task Management Request or an I/O (UTRL) queue, so
+	 * take the appropriate queue lock for the original command's queue,
+	 * since we'll need it to avoid races with the completion code and to
+	 * complete the command manually.
+	 */
+	mtx_lock(&tr->hwq->qlock);
+	if (tr->slot_state != UFSHCI_SLOT_STATE_FREE) {
+		mtx_unlock(&tr->hwq->qlock);
+		/*
+		 * An I/O has timed out, and the controller was unable to abort
+		 * it for some reason.  And we've not processed a completion for
+		 * it yet. Construct a fake completion status, and then complete
+		 * the I/O's tracker manually.
+		 */
+		ufshci_printf(tr->hwq->ctrlr,
+		    "abort task request failed, aborting task manually\n");
+		ufshci_req_queue_manual_complete_tracker(tr,
+		    UFSHCI_DESC_ABORTED, UFSHCI_RESPONSE_CODE_GENERAL_FAILURE);
+
+		if ((status->response_upiu.task_mgmt_response_upiu
+			    .output_param1 ==
+			UFSHCI_TASK_MGMT_SERVICE_RESPONSE_FUNCTION_COMPLETE) ||
+		    (status->response_upiu.task_mgmt_response_upiu
+			    .output_param1 ==
+			UFSHCI_TASK_MGMT_SERVICE_RESPONSE_FUNCTION_SUCCEEDED)) {
+			ufshci_printf(tr->hwq->ctrlr,
+			    "Warning: the abort task request completed \
+			    successfully, but the original task is still incomplete.");
+			return;
+		}
+
+		/* Abort Task failed. Perform recovery steps 2-5 */
+		ufshci_req_queue_timeout_recovery(tr->hwq->ctrlr, tr->hwq);
+	} else {
+		mtx_unlock(&tr->hwq->qlock);
+	}
+}
+
+static void
+ufshci_req_queue_timeout(void *arg)
+{
+	struct ufshci_hw_queue *hwq = arg;
+	struct ufshci_controller *ctrlr = hwq->ctrlr;
+	struct ufshci_tracker *tr;
+	sbintime_t now;
+	bool idle = true;
+	bool fast;
+
+	mtx_assert(&hwq->recovery_lock, MA_OWNED);
+
+	/*
+	 * If the controller is failed, then stop polling. This ensures that any
+	 * failure processing that races with the hwq timeout will fail safely.
+	 */
+	if (ctrlr->is_failed) {
+		ufshci_printf(ctrlr,
+		    "Failed controller, stopping watchdog timeout.\n");
+		hwq->timer_armed = false;
+		return;
+	}
+
+	/*
+	 * Shutdown condition: We set hwq->timer_armed to false in
+	 * ufshci_req_sdb_destroy before calling callout_drain. When we call
+	 * that, this routine might get called one last time. Exit w/o setting a
+	 * timeout. None of the watchdog stuff needs to be done since we're
+	 * destroying the hwq.
+	 */
+	if (!hwq->timer_armed) {
+		ufshci_printf(ctrlr,
+		    "Timeout fired during ufshci_utr_req_queue_destroy\n");
+		return;
+	}
+
+	switch (hwq->recovery_state) {
+	case RECOVERY_NONE:
+		/*
+		 * See if there's any recovery needed. First, do a fast check to
+		 * see if anything could have timed out. If not, then skip
+		 * everything else.
+		 */
+		fast = false;
+		mtx_lock(&hwq->qlock);
*** 338 LINES SKIPPED ***

From nobody Tue Oct  6 07:50:41 2026
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 4hzT2T5NS1z6cVrv
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:41 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2T3Y1dz4Fq3
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:41 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273041;
	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=BRCrXqm0mITpVJC6GuP8PIL89WbHqs4OeHzCRPQ4nzE=;
	b=WXB49mppcVnUMst9vuRTklarp768amG+d/WYeoScyQQA4jQ+cg1aOy2aGqYyEmra5XDY3Q
	xpqLGI32Tii8Jst4qCxg+QqWlVOMw2OUmC29AWneCLAAer6MGHfh8FbjYC8L/+M1N3TJRT
	Q9wmzXnh57Hw3BxUEVt6Zi95lbngVHRZhQowE2RI8gn3tl3EKiZZhYlVaYmQLD+TU/lhhh
	c+ZCYGs6FkuB0E+pTdQgcBIV/eqSAgHko8MIRjlVrtCB9/HqfS+oCxpRAX5tu2W3J3CD6d
	pY6IL+2D8fptoEXXyGZWa1paW5O61adVao5mZAL0Zp0ks9YaFw7zJIwGSPpPQw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273041;
	b=iX/EUxCmGgJffZvGaf9ew9uiN0EHL8XCRxyOePkn600AUEG0FZY8RfLK58oCIuUIjU80xA
	q5Y4r//lRlQho3JUhTqu52QhLdzvTj6fBYSq/xocyPeZnZqH6Gsj2d/rl6orYMGsGTgrJv
	zPEnUcfiW/l4eeZXrMCRUOEcTk4IsjNIlcYlFugUZJoI1g7N+AvPupQgOVZUGW+a9mZw1i
	G8hPGGBYo56yqLmf3vlX2qNnm+NdYpUSf+DOYVOGBwYdJbThYocf6CCPaUdcg/i6kFMrjY
	h9yIAmTJMUVtcB247EALFdPndkyJegNVj/Nrm3x8nIKQvK0T/IdCfFaeqRPF/g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273041;
	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=BRCrXqm0mITpVJC6GuP8PIL89WbHqs4OeHzCRPQ4nzE=;
	b=H0EDfDyW6BNl4Kj8X87iHWaWv7FdNvKeWqmXx3sQBItOUsYXTLiMiH4pCC7KXlglsXWZAy
	XaaShy6rZxjdiksJIrVcjMNk99JszWVacKlOlxraP87WaTy2LYAc35jeFIktmVYXbcppe7
	+IJEBX0JnFaVynuI/8780hLUWERYZpsmg350h3WFitr2V01OnSXuO4L91NYuvTJRW51bF6
	adfNt0wTs69XGP2Ihw8ZiRUAiB4k9fAM2wGVCFLE21IDbFKnbYI6z3MUoMGz6QxbEbL5iH
	Ekuq5UVI6aCYJDDf5Fjk1znqh8Z4i/QGE8jp9D/FU4n/SEd78oUBtSpMlTGraQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2T2YWmzwyn
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:41 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 185b0
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:41 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 6dfd9f0a81e0 - stable/15 - ufshci: add helper to convert SCSI LUN to UPIU LUN formats
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 6dfd9f0a81e083dd3fd219789668b3eb7e3e6aeb
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:41 +0000
Message-Id: <6ac4a851.185b0.7932ffe4@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=6dfd9f0a81e083dd3fd219789668b3eb7e3e6aeb

commit 6dfd9f0a81e083dd3fd219789668b3eb7e3e6aeb
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2025-12-01 04:38:24 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:45 +0000

    ufshci: add helper to convert SCSI LUN to UPIU LUN formats
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D53919
    
    (cherry picked from commit 3e3d7e590566c7e1a55bfb0f084c9f64c6c46898)
---
 sys/dev/ufshci/ufshci.h     |  2 ++
 sys/dev/ufshci/ufshci_sim.c | 25 ++++++++++++++++++++++++-
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/sys/dev/ufshci/ufshci.h b/sys/dev/ufshci/ufshci.h
index b055d2d2d769..188f8c41def1 100644
--- a/sys/dev/ufshci/ufshci.h
+++ b/sys/dev/ufshci/ufshci.h
@@ -335,6 +335,8 @@ struct ufshci_upiu_header {
 		uint8_t flags;
 	};
 	uint8_t lun;
+#define UFSHCI_UPIU_UNIT_NUMBER_ID_MASK 0x7f
+#define UFSHCI_UPIU_WLUN_ID_MASK	0x80
 	uint8_t task_tag;
 
 	/* dword 1 */
diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index 828b520614a5..1b80df089a46 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -72,6 +72,28 @@ ufshci_sim_illegal_request(union ccb *ccb)
 	xpt_done(ccb);
 }
 
+/*
+ * The SCSI LUN format and the UFS UPIU LUN format are different.
+ * This function converts the SCSI LUN format to the UFS UPIU LUN format.
+ */
+static uint8_t
+ufshci_sim_translate_scsi_to_ufs_lun(lun_id_t scsi_lun)
+{
+	const int address_format_offset = 8;
+	uint8_t address_format = scsi_lun >> address_format_offset;
+
+	/* Well known logical unit */
+	if (((address_format & RPL_LUNDATA_ATYP_MASK) ==
+		RPL_LUNDATA_ATYP_EXTLUN) &&
+	    ((address_format & RPL_LUNDATA_EXT_EAM_MASK) ==
+		RPL_LUNDATA_EXT_EAM_WK))
+		return ((scsi_lun & UFSHCI_UPIU_UNIT_NUMBER_ID_MASK) |
+		    UFSHCI_UPIU_WLUN_ID_MASK);
+
+	/* Logical unit */
+	return (scsi_lun & UFSHCI_UPIU_UNIT_NUMBER_ID_MASK);
+}
+
 static void
 ufshchi_sim_scsiio(struct cam_sim *sim, union ccb *ccb)
 {
@@ -129,7 +151,8 @@ ufshchi_sim_scsiio(struct cam_sim *sim, union ccb *ccb)
 	upiu->header.trans_type = UFSHCI_UPIU_TRANSACTION_CODE_COMMAND;
 	upiu->header.operational_flags = is_write ? UFSHCI_OPERATIONAL_FLAG_W :
 						    UFSHCI_OPERATIONAL_FLAG_R;
-	upiu->header.lun = csio->ccb_h.target_lun;
+	upiu->header.lun = ufshci_sim_translate_scsi_to_ufs_lun(
+	    csio->ccb_h.target_lun);
 	upiu->header.cmd_set_type = UFSHCI_COMMAND_SET_TYPE_SCSI;
 
 	upiu->expected_data_transfer_length = htobe32(payload_len);

From nobody Tue Oct  6 07:50:42 2026
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 4hzT2W0pXlz6cVry
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:43 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2V5Hnlz4FrY
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:42 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273042;
	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=vGP1K08ead59kqQ6biFjPTAAeW1HsXwsVhspPsAD6kA=;
	b=iKn/3HCseiyTLw1z5EGrJ2ELug+IPzvuYE5KNuNoAS5rCSzd6FNcM8ABNo1mmQQEpXFDtE
	A1/0Y7uo3olxCFVAB90QDlkR0tv9oc5yzTCCKYHpJJZvhYAunbmt612Wut34Lh/k+xfbWz
	zlxm0a0+BO0W4/qK/iiC5MC1J7DveSSWZBZg14g5ICRS3rCNKU1A6jbZ6OHXVBOsKMxtW0
	FV88TeArv/FNkw+JXeGx1u+S5Emz8d3B+CFwgCw5eLWXdnaMakvmqtcWC7X4shVrdeRpMK
	m+9QqXcjYvrXbAakxy+durg5vhsILTk0Ev/517E51kuFpaUFLk3CLdncwUxirQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273042;
	b=O8FyMFLnAWR3BXOKUa3zxyNJLOUjvS7juVTT9afPwi3Nat2qvSWpDI442zRDOl6XJR3iqs
	usL1G8CZMrOd1K2aoaSaMhbn5iwlu5hHGs8HtPfCw4E4+gH6AMtK4ueB4q4grrU4sQnQL6
	liX8BNm5517ADkkz7wOXVinOUMuJOvygVhkBNWYL/jM7Cq+PUY7jiQb5AHU0y0e0UIFCDc
	DzW6FYmIpmyBb7ntVHk/jP5NdVMDr1FCx/S3Y7TR9Mbkc1fRASyQXvYz1muEj5oDrQpu6/
	v3RXpneZiX1AOkYwsX/O19O54xVsVj6mCx55M28L0/tLpwDvMzib9MM5Q5RXuw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273042;
	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=vGP1K08ead59kqQ6biFjPTAAeW1HsXwsVhspPsAD6kA=;
	b=iOMVVsncIuvPQC+4e+4tR+jyBfJxyiJN7UIj61Ixq/as+RkjmhUrwmCcBztFcMbl/pMBjM
	ekXA3z6eCsoDDKnXw2HK+uTF3Qzd1JWPKwGMTfjOOYsRuDZr7peEBSj8c4gS3miOzZenAF
	vkyZE6TcQ1yzHXq1Myk6DHebflNoRslRWR0pKxNWyCDkpHzf2jgpAxCnahWM7/dFV2JJ4K
	koUDtFfSCKcK3gAI+QfYUeaAq4taGjCr/hDiqtZwKjfBgwu7RukTlf5XrzNoudgux2pa5U
	jmqdfE+Rl/qC+9dnKEZTmUAPyxrhxRY3kUBzPzqcEQlzVmdhqwxP4G2ENXKZ3A==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2V3NBvzxbw
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:42 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18ffa
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:42 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 17534ff9c2dd - stable/15 - cam/scsi: Support well known logical unit
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 17534ff9c2dd608b7fa6ba212dac810fad91ce02
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:42 +0000
Message-Id: <6ac4a852.18ffa.958db1b@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=17534ff9c2dd608b7fa6ba212dac810fad91ce02

commit 17534ff9c2dd608b7fa6ba212dac810fad91ce02
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2025-12-01 04:38:52 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:46 +0000

    cam/scsi: Support well known logical unit
    
    This patch adds an additional state to probe well-known logical units
    before probing normal logical units.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D53920
    
    (cherry picked from commit ba963776199f84775388a03d072121bf93707020)
---
 sys/cam/cam_ccb.h          |   1 +
 sys/cam/cam_xpt.c          |   1 +
 sys/cam/cam_xpt_internal.h |   1 +
 sys/cam/scsi/scsi_all.h    |   2 +-
 sys/cam/scsi/scsi_xpt.c    | 239 +++++++++++++++++++++++++++++----------------
 5 files changed, 161 insertions(+), 83 deletions(-)

diff --git a/sys/cam/cam_ccb.h b/sys/cam/cam_ccb.h
index 1f110686a658..19f18f36b8c9 100644
--- a/sys/cam/cam_ccb.h
+++ b/sys/cam/cam_ccb.h
@@ -614,6 +614,7 @@ typedef enum {
 } pi_tmflag;
 
 typedef enum {
+	PIM_WLUNS	= 0x400,/* Well known LUNs supported */
 	PIM_ATA_EXT	= 0x200,/* ATA requests can understand ata_ext requests */
 	PIM_EXTLUNS	= 0x100,/* 64bit extended LUNs supported */
 	PIM_SCANHILO	= 0x80,	/* Bus scans from high ID to low ID */
diff --git a/sys/cam/cam_xpt.c b/sys/cam/cam_xpt.c
index cae29226d13c..a97b69fd0d84 100644
--- a/sys/cam/cam_xpt.c
+++ b/sys/cam/cam_xpt.c
@@ -4680,6 +4680,7 @@ xpt_alloc_target(struct cam_eb *bus, target_id_t target_id)
 	target->refcount = 1;
 	target->generation = 0;
 	target->luns = NULL;
+	target->wluns = NULL;
 	mtx_init(&target->luns_mtx, "CAM LUNs lock", NULL, MTX_DEF);
 	timevalclear(&target->last_reset);
 	/*
diff --git a/sys/cam/cam_xpt_internal.h b/sys/cam/cam_xpt_internal.h
index 5a812e6e7d20..73f50895ee74 100644
--- a/sys/cam/cam_xpt_internal.h
+++ b/sys/cam/cam_xpt_internal.h
@@ -169,6 +169,7 @@ struct cam_et {
 	struct		timeval last_reset;
 	u_int		rpl_size;
 	struct scsi_report_luns_data *luns;
+	struct scsi_report_luns_data *wluns;
 	struct mtx	luns_mtx;	/* Protection for luns field. */
 };
 
diff --git a/sys/cam/scsi/scsi_all.h b/sys/cam/scsi/scsi_all.h
index b6fb66beefcd..e50974edac86 100644
--- a/sys/cam/scsi/scsi_all.h
+++ b/sys/cam/scsi/scsi_all.h
@@ -3057,7 +3057,7 @@ struct scsi_report_luns_data {
 	uint8_t length[4];	/* length of LUN inventory, in bytes */
 	uint8_t reserved[4];	/* unused */
 	/*
-	 * LUN inventory- we only support the type zero form for now.
+	 * LUN inventory- we only support type zero and extended (well-known) formats.
 	 */
 	struct scsi_report_luns_lundata luns[0];
 };
diff --git a/sys/cam/scsi/scsi_xpt.c b/sys/cam/scsi/scsi_xpt.c
index bef35243af98..d0c170867b97 100644
--- a/sys/cam/scsi/scsi_xpt.c
+++ b/sys/cam/scsi/scsi_xpt.c
@@ -130,6 +130,7 @@ typedef enum {
 	PROBE_TUR,
 	PROBE_INQUIRY,	/* this counts as DV0 for Basic Domain Validation */
 	PROBE_FULL_INQUIRY,
+	PROBE_REPORT_WLUNS,
 	PROBE_REPORT_LUNS,
 	PROBE_MODE_SENSE,
 	PROBE_SUPPORTED_VPD_LIST,
@@ -148,6 +149,7 @@ static char *probe_action_text[] = {
 	"PROBE_TUR",
 	"PROBE_INQUIRY",
 	"PROBE_FULL_INQUIRY",
+	"PROBE_REPORT_WLUNS",
 	"PROBE_REPORT_LUNS",
 	"PROBE_MODE_SENSE",
 	"PROBE_SUPPORTED_VPD_LIST",
@@ -567,7 +569,7 @@ static int       proberequestbackoff(struct cam_periph *periph,
 static void	 probedone(struct cam_periph *periph, union ccb *done_ccb);
 static void	 probe_purge_old(struct cam_path *path,
 				 struct scsi_report_luns_data *new,
-				 probe_flags flags);
+				 probe_flags flags, bool is_wlun);
 static void	 probecleanup(struct cam_periph *periph);
 static void	 scsi_find_quirk(struct cam_ed *device);
 static void	 scsi_scan_bus(struct cam_periph *periph, union ccb *ccb);
@@ -817,6 +819,23 @@ again:
 			     /*timeout*/60 * 1000);
 		break;
 	}
+	case PROBE_REPORT_WLUNS:
+	{
+		void *rp;
+
+		rp = malloc(periph->path->target->rpl_size,
+		    M_CAMXPT, M_NOWAIT | M_ZERO);
+		if (rp == NULL) {
+			xpt_print(periph->path,
+			    "Unable to alloc report wluns storage\n");
+			PROBE_SET_ACTION(softc, PROBE_REPORT_LUNS);
+			goto again;
+		}
+		scsi_report_luns(csio, 5, probedone, MSG_SIMPLE_Q_TAG,
+		    RPL_REPORT_WELLKNOWN, rp, periph->path->target->rpl_size,
+		    SSD_FULL_SIZE, 60000);
+		break;
+	}
 	case PROBE_REPORT_LUNS:
 	{
 		void *rp;
@@ -1162,6 +1181,7 @@ probedone(struct cam_periph *periph, union ccb *done_ccb)
 	struct cam_path *path;
 	struct scsi_inquiry_data *inq_buf;
 	uint32_t  priority;
+	struct ccb_pathinq cpi;
 
 	CAM_DEBUG(done_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("probedone\n"));
 
@@ -1169,6 +1189,7 @@ probedone(struct cam_periph *periph, union ccb *done_ccb)
 	path = done_ccb->ccb_h.path;
 	priority = done_ccb->ccb_h.pinfo.priority;
 	cam_periph_assert(periph, MA_OWNED);
+	xpt_path_inq(&cpi, path);
 
 	switch (softc->action) {
 	case PROBE_TUR:
@@ -1235,8 +1256,10 @@ out:
 				    SID_ANSI_REV(inq_buf) > SCSI_REV_SPC2 &&
 				    (SCSI_QUIRK(path->device)->quirks &
 				     CAM_QUIRK_NORPTLUNS) == 0) {
-					PROBE_SET_ACTION(softc,
-					    PROBE_REPORT_LUNS);
+					if (cpi.hba_misc & PIM_WLUNS)
+						PROBE_SET_ACTION(softc, PROBE_REPORT_WLUNS);
+					else
+						PROBE_SET_ACTION(softc, PROBE_REPORT_LUNS);
 					/*
 					 * Start with room for *one* lun.
 					 */
@@ -1259,7 +1282,10 @@ out:
 			    SID_ANSI_REV(inq_buf) >= SCSI_REV_SPC2 &&
 			    (SCSI_QUIRK(path->device)->quirks &
 			     CAM_QUIRK_NORPTLUNS) == 0) {
-				PROBE_SET_ACTION(softc, PROBE_REPORT_LUNS);
+				if (cpi.hba_misc & PIM_WLUNS)
+					PROBE_SET_ACTION(softc,	PROBE_REPORT_WLUNS);
+				else
+					PROBE_SET_ACTION(softc, PROBE_REPORT_LUNS);
 				periph->path->target->rpl_size = 16;
 				xpt_release_ccb(done_ccb);
 				xpt_schedule(periph, priority);
@@ -1296,11 +1322,13 @@ out:
 		xpt_release_ccb(done_ccb);
 		break;
 	}
+	case PROBE_REPORT_WLUNS:
 	case PROBE_REPORT_LUNS:
 	{
 		struct ccb_scsiio *csio;
 		struct scsi_report_luns_data *lp;
 		u_int nlun, maxlun;
+		bool is_wlun = softc->action == PROBE_REPORT_WLUNS;
 
 		csio = &done_ccb->csio;
 
@@ -1377,7 +1405,7 @@ out:
 			 * This function will also install the new list
 			 * in the target structure.
 			 */
-			probe_purge_old(path, lp, softc->flags);
+			probe_purge_old(path, lp, softc->flags, is_wlun);
 			lp = NULL;
 		}
 		/* The processing above should either exit via a `goto
@@ -1390,7 +1418,9 @@ out:
 		if (path->device->flags & CAM_DEV_INQUIRY_DATA_VALID &&
 		    (SID_QUAL(inq_buf) == SID_QUAL_LU_CONNECTED ||
 		    SID_QUAL(inq_buf) == SID_QUAL_LU_OFFLINE)) {
-			if (INQ_DATA_TQ_ENABLED(inq_buf))
+			if (is_wlun)
+				PROBE_SET_ACTION(softc, PROBE_REPORT_LUNS);
+			else if (INQ_DATA_TQ_ENABLED(inq_buf))
 				PROBE_SET_ACTION(softc, PROBE_MODE_SENSE);
 			else
 				PROBE_SET_ACTION(softc,
@@ -1815,20 +1845,22 @@ probe_device_check:
 
 static void
 probe_purge_old(struct cam_path *path, struct scsi_report_luns_data *new,
-    probe_flags flags)
+    probe_flags flags, bool is_wlun)
 {
 	struct cam_path *tp;
-	struct scsi_report_luns_data *old;
+	struct scsi_report_luns_data **luns_data, *old;
 	u_int idx1, idx2, nlun_old, nlun_new;
 	lun_id_t this_lun;
 	uint8_t *ol, *nl;
 
+	luns_data = is_wlun ? &path->target->wluns : &path->target->luns;
+
 	if (path->target == NULL) {
 		return;
 	}
 	mtx_lock(&path->target->luns_mtx);
-	old = path->target->luns;
-	path->target->luns = new;
+	old = *luns_data;
+	*luns_data = new;
 	mtx_unlock(&path->target->luns_mtx);
 	if (old == NULL)
 		return;
@@ -1908,11 +1940,16 @@ scsi_find_quirk(struct cam_ed *device)
 	device->maxtags = quirk->maxtags;
 }
 
+typedef struct {
+	int lun;
+	int wlun;
+} lun_pair;
+
 typedef struct {
 	union	ccb *request_ccb;
 	struct 	ccb_pathinq *cpi;
 	int	counter;
-	int	lunindex[0];
+	lun_pair lunindex[0];
 } scsi_scan_bus_info;
 
 static void
@@ -1995,7 +2032,8 @@ scsi_scan_bus(struct cam_periph *periph, union ccb *request_ccb)
 
 		/* Save some state for use while we probe for devices */
 		scan_info = (scsi_scan_bus_info *) malloc(sizeof(scsi_scan_bus_info) +
-		    (work_ccb->cpi.max_target * sizeof (u_int)), M_CAMXPT, M_ZERO|M_NOWAIT);
+		    (work_ccb->cpi.max_target * sizeof(lun_pair)),
+				M_CAMXPT, M_ZERO|M_NOWAIT);
 		if (scan_info == NULL) {
 			request_ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
 			xpt_free_ccb(work_ccb);
@@ -2080,6 +2118,8 @@ scsi_scan_bus(struct cam_periph *periph, union ccb *request_ccb)
 		path_id_t path_id;
 		target_id_t target_id;
 		lun_id_t lun_id;
+		u_int nwluns;
+		bool need_wlun_scan = false;
 
 		oldpath = request_ccb->ccb_h.path;
 
@@ -2093,89 +2133,124 @@ scsi_scan_bus(struct cam_periph *periph, union ccb *request_ccb)
 
 		mtx = xpt_path_mtx(scan_info->request_ccb->ccb_h.path);
 		mtx_lock(mtx);
-		mtx_lock(&target->luns_mtx);
-		if (target->luns) {
-			lun_id_t first;
-			u_int nluns = scsi_4btoul(target->luns->length) / 8;
 
-			/*
-			 * Make sure we skip over lun 0 if it's the first member
-			 * of the list as we've actually just finished probing
-			 * it.
-			 */
-			CAM_GET_LUN(target->luns, 0, first);
-			if (first == 0 && scan_info->lunindex[target_id] == 0) {
-				scan_info->lunindex[target_id]++;
-			}
-
-			/*
-			 * Skip any LUNs that the HBA can't deal with.
-			 */
-			while (scan_info->lunindex[target_id] < nluns) {
-				if (scan_info->cpi->hba_misc & PIM_EXTLUNS) {
-					CAM_GET_LUN(target->luns,
-					    scan_info->lunindex[target_id],
-					    lun_id);
-					break;
-				}
+		if (scan_info->cpi->hba_misc & PIM_WLUNS) {
+			/* Scan Well known logical units */
+			mtx_lock(&target->luns_mtx);
 
-				if (CAM_CAN_GET_SIMPLE_LUN(target->luns,
-				    scan_info->lunindex[target_id])) {
-					CAM_GET_SIMPLE_LUN(target->luns,
-					    scan_info->lunindex[target_id],
-					    lun_id);
-					break;
-				}
-					
-				scan_info->lunindex[target_id]++;
+			if (target->wluns) {
+				nwluns = scsi_4btoul(target->wluns->length) / 8;
+				if (scan_info->lunindex[target_id].wlun < nwluns)
+					need_wlun_scan = true;
 			}
 
-			if (scan_info->lunindex[target_id] < nluns) {
+			if (need_wlun_scan) {
+				/*
+				 * WLUN uses the Extended WLUN address format, so we can handle all of
+				 * them.
+				 */
+				CAM_GET_LUN(target->wluns, scan_info->lunindex[target_id].wlun, lun_id);
+
 				mtx_unlock(&target->luns_mtx);
 				next_target = 0;
 				CAM_DEBUG(request_ccb->ccb_h.path,
-				    CAM_DEBUG_PROBE,
-				   ("next lun to try at index %u is %jx\n",
-				   scan_info->lunindex[target_id],
-				   (uintmax_t)lun_id));
-				scan_info->lunindex[target_id]++;
+						CAM_DEBUG_PROBE,
+					("next wlun to try at index %u is %jx\n",
+					scan_info->lunindex[target_id].wlun,
+					(uintmax_t)lun_id));
+				scan_info->lunindex[target_id].wlun++;
 			} else {
 				mtx_unlock(&target->luns_mtx);
-				/* We're done with scanning all luns. */
+				/* We're done with scanning all wluns. */
 			}
-		} else {
-			mtx_unlock(&target->luns_mtx);
-			device = request_ccb->ccb_h.path->device;
-			/* Continue sequential LUN scan if: */
-			/*  -- we have more LUNs that need recheck */
-			mtx_lock(&target->bus->eb_mtx);
-			nextdev = device;
-			while ((nextdev = TAILQ_NEXT(nextdev, links)) != NULL)
-				if ((nextdev->flags & CAM_DEV_UNCONFIGURED) == 0)
-					break;
-			mtx_unlock(&target->bus->eb_mtx);
-			if (nextdev != NULL) {
-				next_target = 0;
-			/*  -- stop if CAM_QUIRK_NOLUNS is set. */
-			} else if (SCSI_QUIRK(device)->quirks & CAM_QUIRK_NOLUNS) {
-				next_target = 1;
-			/*  -- this LUN is connected and its SCSI version
-			 *     allows more LUNs. */
-			} else if ((device->flags & CAM_DEV_UNCONFIGURED) == 0) {
-				if (lun_id < (CAM_SCSI2_MAXLUN-1) ||
-				    CAN_SRCH_HI_DENSE(device))
+		}
+
+		if (!need_wlun_scan) {
+			/* Scan logical units */
+			mtx_lock(&target->luns_mtx);
+			if (target->luns) {
+				lun_id_t first;
+				u_int nluns = scsi_4btoul(target->luns->length) / 8;
+
+				/*
+				* Make sure we skip over lun 0 if it's the first member
+				* of the list as we've actually just finished probing
+				* it.
+				*/
+				CAM_GET_LUN(target->luns, 0, first);
+				if (first == 0 && scan_info->lunindex[target_id].lun == 0) {
+					scan_info->lunindex[target_id].lun++;
+				}
+
+				/*
+				* Skip any LUNs that the HBA can't deal with.
+				*/
+				while (scan_info->lunindex[target_id].lun < nluns) {
+					if (scan_info->cpi->hba_misc & PIM_EXTLUNS) {
+						CAM_GET_LUN(target->luns,
+								scan_info->lunindex[target_id].lun,
+								lun_id);
+						break;
+					}
+
+					if (CAM_CAN_GET_SIMPLE_LUN(target->luns,
+							scan_info->lunindex[target_id].lun)) {
+						CAM_GET_SIMPLE_LUN(target->luns,
+								scan_info->lunindex[target_id].lun,
+								lun_id);
+						break;
+					}
+
+					scan_info->lunindex[target_id].lun++;
+				}
+
+				if (scan_info->lunindex[target_id].lun < nluns) {
+					mtx_unlock(&target->luns_mtx);
 					next_target = 0;
-			/*  -- this LUN is disconnected, its SCSI version
-			 *     allows more LUNs and we guess they may be. */
-			} else if ((device->flags & CAM_DEV_INQUIRY_DATA_VALID) != 0) {
-				if (lun_id < (CAM_SCSI2_MAXLUN-1) ||
-				    CAN_SRCH_HI_SPARSE(device))
+					CAM_DEBUG(request_ccb->ccb_h.path,
+							CAM_DEBUG_PROBE,
+						("next lun to try at index %u is %jx\n",
+						scan_info->lunindex[target_id].lun,
+						(uintmax_t)lun_id));
+					scan_info->lunindex[target_id].lun++;
+				} else {
+					mtx_unlock(&target->luns_mtx);
+					/* We're done with scanning all luns. */
+				}
+			} else {
+				mtx_unlock(&target->luns_mtx);
+				device = request_ccb->ccb_h.path->device;
+				/* Continue sequential LUN scan if: */
+				/*  -- we have more LUNs that need recheck */
+				mtx_lock(&target->bus->eb_mtx);
+				nextdev = device;
+				while ((nextdev = TAILQ_NEXT(nextdev, links)) != NULL)
+					if ((nextdev->flags & CAM_DEV_UNCONFIGURED) == 0)
+						break;
+				mtx_unlock(&target->bus->eb_mtx);
+				if (nextdev != NULL) {
 					next_target = 0;
-			}
-			if (next_target == 0) {
-				lun_id++;
-				if (lun_id > scan_info->cpi->max_lun)
+				/*  -- stop if CAM_QUIRK_NOLUNS is set. */
+				} else if (SCSI_QUIRK(device)->quirks & CAM_QUIRK_NOLUNS) {
 					next_target = 1;
+				/*  -- this LUN is connected and its SCSI version
+				 *     allows more LUNs. */
+				} else if ((device->flags & CAM_DEV_UNCONFIGURED) == 0) {
+					if (lun_id < (CAM_SCSI2_MAXLUN-1) ||
+					    CAN_SRCH_HI_DENSE(device))
+						next_target = 0;
+				/*  -- this LUN is disconnected, its SCSI version
+				 *     allows more LUNs and we guess they may be. */
+				} else if ((device->flags & CAM_DEV_INQUIRY_DATA_VALID) != 0) {
+					if (lun_id < (CAM_SCSI2_MAXLUN-1) ||
+					    CAN_SRCH_HI_SPARSE(device))
+						next_target = 0;
+				}
+				if (next_target == 0) {
+					lun_id++;
+					if (lun_id > scan_info->cpi->max_lun)
+						next_target = 1;
+				}
 			}
 		}
 

From nobody Tue Oct  6 07:50:43 2026
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 4hzT2X25TDz6cVpr
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:44 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2X0ZYYz4Fqf
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:44 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273044;
	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=r3R7uD9TQCXxjMj2FSC4KM5Ocky7rMP+SOnLtKM0zKQ=;
	b=VaieLYoOwPMfwebIZos0wVAIeRy0FDxNyDqYLzB1otCXPYhJ+G1/vljrR82BSLU8OpLtqn
	1R3JumUcLOGkZ4Nvt3fvrIz8jh2ltHsWyrMPzy19Ouv4lnfeynim+HoJYIyN8opoXJa7P8
	9CD7rsfa2pQTYVJ1NiKukcXIH04aGTmvcFXdWz6JNBOG31NtF6lyBHi90bPPn54IvBMZNE
	NDOF2AA82u6a6FGEPzFOymNCWhIfItsPAuBZTErClYmb9mhOh1ScF3uPHAnJ0NQheboYnZ
	ieSqamfuGGifdLLeOj+RYuaJId61iEEpKqCMNuIRKtP72qFWBxgabsCO4LXkrA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273044;
	b=jmEsqBK07BDJ8URyOTw/tKupTHaWISNJTYHpzqnEiY3Vaju8E3+6SLGEY1lYdirk1xu2Ea
	xse0kHqn+PShwpQYGubHwiP5bqF0SP/D8GDj+A4RHfQSNrEEqZoiH/3eyasayrFD0i0p7y
	5X69uEwry2pMMqc6K52bEgh68fmwnnueKHeGILwS+Z/DLEfPeDMydL39mFZr4b7IfbjOsh
	zIYb0BhJ0ZjHceEkncaqm84KnvHij/3bw3+Br177rf5DHJ0YHUslWD/yThSWACTrCamxWu
	0d7sGuAbOH+rwNfVRJPsWmULe6R1tzWbTFbwyALltE7qank6BowuUBwCNt6Ujg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273044;
	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=r3R7uD9TQCXxjMj2FSC4KM5Ocky7rMP+SOnLtKM0zKQ=;
	b=yU1CNI9ffT/5Zjc6BEDSpifqpF7VPBRokNxX0I3e1s99Y9r+PCKeFfZoPUIj7YhUuywtok
	NLaMHgfPwnxmLW7spoU35j7CyygJrwVoZ61aMAryLtoxoMH5yXpVoO77JyWPNGBy4epP/d
	yjPe+xhmgbpBxWSK87YnhkjsglrNJhU85QbNhLqbul6fcmKsYBDkILTleuV7n+rFhZOPiA
	2nKrd4lITrgMuSUTE4Wr37oVMxCtguHd5C7ZY2ARvyIIr6xigoqj+bCIou1KUmRe1fRKbb
	iHFCi1stPoPUrexiH8LM8DvfP3/0A4Sxbb9+sr8QPT6f5KJYIrniFszagVYA6Q==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2W522rzxKC
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:43 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 4782e
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:43 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: ab96d69e5c77 - stable/15 - ufshci: Enable WLUN scan
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: ab96d69e5c77783c31cdc71c5ba72c19e3580802
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:43 +0000
Message-Id: <6ac4a853.4782e.58fad76c@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=ab96d69e5c77783c31cdc71c5ba72c19e3580802

commit ab96d69e5c77783c31cdc71c5ba72c19e3580802
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2025-12-01 04:39:14 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:46 +0000

    ufshci: Enable WLUN scan
    
    QEMU ufs device does not implement WLUN, so QUIRK is added.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D53921
    
    (cherry picked from commit 5e0d065b5b90d4f4264d8248f39f199f1a2576dc)
---
 sys/dev/ufshci/ufshci.h         | 8 ++++++++
 sys/dev/ufshci/ufshci_pci.c     | 3 ++-
 sys/dev/ufshci/ufshci_private.h | 2 ++
 sys/dev/ufshci/ufshci_sim.c     | 6 +++++-
 4 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/sys/dev/ufshci/ufshci.h b/sys/dev/ufshci/ufshci.h
index 188f8c41def1..766d8de0535b 100644
--- a/sys/dev/ufshci/ufshci.h
+++ b/sys/dev/ufshci/ufshci.h
@@ -644,6 +644,14 @@ struct ufshci_completion {
 
 typedef void (*ufshci_cb_fn_t)(void *, const struct ufshci_completion *, bool);
 
+/* UFS 4.1, section 10.8.5 "Well Known Logical Unit Defined in UFS" */
+enum ufshci_well_known_luns {
+	UFSHCI_WLUN_REPORT_LUNS = 0x81,
+	UFSHCI_WLUN_BOOT = 0xb0,
+	UFSHCI_WLUN_RPMB = 0xc4,
+	UFSHCI_WLUN_UFS_DEVICE = 0xd0,
+};
+
 /*
  * UFS Spec 4.1, section 14.1 "UFS Descriptors"
  * All descriptors use big-endian byte ordering.
diff --git a/sys/dev/ufshci/ufshci_pci.c b/sys/dev/ufshci/ufshci_pci.c
index c518c6cf6aae..756ac6540632 100644
--- a/sys/dev/ufshci/ufshci_pci.c
+++ b/sys/dev/ufshci/ufshci_pci.c
@@ -50,7 +50,8 @@ static struct _pcsid {
 	uint32_t quirks;
 } pci_ids[] = { { 0x131b36, "QEMU UFS Host Controller", UFSHCI_REF_CLK_19_2MHz,
 		    UFSHCI_QUIRK_IGNORE_UIC_POWER_MODE |
-			UFSHCI_QUIRK_NOT_SUPPORT_ABORT_TASK },
+			UFSHCI_QUIRK_NOT_SUPPORT_ABORT_TASK |
+			UFSHCI_QUIRK_SKIP_WELL_KNOWN_LUNS },
 	{ 0x98fa8086, "Intel Lakefield UFS Host Controller",
 	    UFSHCI_REF_CLK_19_2MHz,
 	    UFSHCI_QUIRK_LONG_PEER_PA_TACTIVATE |
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index ec388c06e248..3cee021880a8 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -266,6 +266,8 @@ struct ufshci_controller {
 	8 /* Need to change the number of lanes before changing HS-GEAR. */
 #define UFSHCI_QUIRK_NOT_SUPPORT_ABORT_TASK \
 	16 /* QEMU does not support Task Management Request */
+#define UFSHCI_QUIRK_SKIP_WELL_KNOWN_LUNS \
+	32 /* QEMU does not support Well known logical units*/
 
 	uint32_t ref_clk;
 
diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index 1b80df089a46..db2e194b699b 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -231,11 +231,15 @@ ufshci_cam_action(struct cam_sim *sim, union ccb *ccb)
 		return;
 	case XPT_PATH_INQ: {
 		struct ccb_pathinq *cpi = &ccb->cpi;
+		uint32_t need_scan_wluns = 0;
+
+		if (!(ctrlr->quirks & UFSHCI_QUIRK_SKIP_WELL_KNOWN_LUNS))
+			need_scan_wluns = PIM_WLUNS;
 
 		cpi->version_num = 1;
 		cpi->hba_inquiry = PI_SDTR_ABLE | PI_TAG_ABLE;
 		cpi->target_sprt = 0;
-		cpi->hba_misc = PIM_UNMAPPED | PIM_NO_6_BYTE;
+		cpi->hba_misc = need_scan_wluns | PIM_UNMAPPED | PIM_NO_6_BYTE;
 		cpi->hba_eng_cnt = 0;
 		cpi->max_target = 0;
 		cpi->max_lun = ctrlr->max_lun_count;

From nobody Tue Oct  6 07:50:44 2026
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 4hzT2Y53dMz6cVs7
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:45 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2Y1SR3z4Fxh
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:45 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273045;
	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=wCoGt8Gud5rNGV2rllGy9i9SIaIe9lwoRKvvsqF/A3s=;
	b=E6uDooAMXoLJiFYSVOY+F3EUTfwRlgpo99bgWD5hUIxoZLNuV47wLSpTjWOMhuBY03VrPp
	Z0H/tsy03HbsNE4rWNtgcNRoAzZp+VHbQowyM+cD6NZgSh9WkYjO5cTbdLKeDS4mrjpcdg
	AOjSYc80qSZgAwlvoPW1k7FLw9TSXAIZlsIpVWMSTvgahvWYamXP3cJqHfzCfNFSLbsnyw
	7JhvsmTVQZfICqCCWjJTAkiYuG8R8oVvzc3LSB0sweBnl2Fde3Loj6LweAlPPJlGsd1yZv
	I00bNPwQYxkfTVKujH4PtfKpYBd7eX05BWotr8Oo+bUP9it/s6ItVCICuPxSfQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273045;
	b=c/BsYxnRxLzLpGIKJ7eJeE9Qwlk3i/fKLNuGwc3cXdj0Vc/W2XTkE+R2/Af6qP/nB1Fxzm
	M35QO1mkqtNsEGX6gpyb3+ZzXyTlL3f5lqfj1ODbcKsZKyD6LNtVDInlWPp/B/nsknV5Vy
	zyK85O5uOw7NbGxqmmmX+B3GyO8w6WtbWA7gVDXEr3VobXLoo/wkncOpAcQZ4f6LKoS9ip
	2qLH76KQIrcu9AGD6eJokGhH+RmIORzTqDCrlOOtMKdp6Wd8bpju8KIFbzh8cMdWg3uCce
	yBna3j83BVPL3PFLqCbP+OtZkxYCAIJL97Ab1dudCl0pcK3THEB2tLCUTAtVRg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273045;
	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=wCoGt8Gud5rNGV2rllGy9i9SIaIe9lwoRKvvsqF/A3s=;
	b=DJGc2QdYnnTZd3iHXZVlQL4gFjmGWpRQl7E81TcY1Lgqx7SUo1wT6UEzRlbnqfhhyoyi1j
	zR0S+Z/eh/qNHCFILLeTEFT+YnweeKLlme5GFINtTmwe4YNzP8DlYNGyWhQN/XK31Yty/f
	tsAwrY0lmhRrV8GXnV1h/17+pqmN/RrrlViw3j2p+oNpOOsj8yMbMVZ8kR01ibciLhU+9K
	ZUsVW8WHMXlsz7CeK9rVI4wbdZzN8HilB2RkQlWcoFGcaJw4W9dPJiFWO6WRj8uoPbw2jc
	TUl+jcUjvS/UdHxEYcQSLzehebsb6GAONyu5hRUi/HizRhodunJIwd03DHkU3A==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2X5wlfzxXB
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:44 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18931
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:44 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: c60b3057f7d1 - stable/15 - cam/scsi: Add power condition support to START STOP UNIT
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: c60b3057f7d10868d8ed0218ba2dd76deaa313ce
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:44 +0000
Message-Id: <6ac4a854.18931.7bea772c@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=c60b3057f7d10868d8ed0218ba2dd76deaa313ce

commit c60b3057f7d10868d8ed0218ba2dd76deaa313ce
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2025-12-01 04:39:35 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:47 +0000

    cam/scsi: Add power condition support to START STOP UNIT
    
    This patch adds a power_condition parameter to the
    scsi_start_stop() function and sets the power condition via SSU.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronic
    Differential Revision:  https://reviews.freebsd.org/D53922
    
    (cherry picked from commit 8c35de4982d855950a900483513f341643f6158f)
---
 sbin/camcontrol/camcontrol.c | 1 +
 sys/cam/cam_periph.c         | 1 +
 sys/cam/scsi/scsi_all.c      | 4 +++-
 sys/cam/scsi/scsi_all.h      | 3 ++-
 sys/cam/scsi/scsi_cd.c       | 2 ++
 sys/dev/mpr/mpr_sas_lsi.c    | 1 +
 sys/dev/mps/mps_sas_lsi.c    | 1 +
 7 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/sbin/camcontrol/camcontrol.c b/sbin/camcontrol/camcontrol.c
index 7ad177c3e4b6..73e5a523bd47 100644
--- a/sbin/camcontrol/camcontrol.c
+++ b/sbin/camcontrol/camcontrol.c
@@ -1026,6 +1026,7 @@ scsistart(struct cam_device *device, int startstop, int loadeject,
 			/* start/stop */ startstop,
 			/* load_eject */ loadeject,
 			/* immediate */ 0,
+			/* power_condition */ SSS_PC_START_VALID,
 			/* sense_len */ SSD_FULL_SIZE,
 			/* timeout */ timeout ? timeout : 120000);
 
diff --git a/sys/cam/cam_periph.c b/sys/cam/cam_periph.c
index 730656684e2a..e485ecff8736 100644
--- a/sys/cam/cam_periph.c
+++ b/sys/cam/cam_periph.c
@@ -1791,6 +1791,7 @@ camperiphscsisenseerror(union ccb *ccb, union ccb **orig,
 					/*start*/TRUE,
 					/*load/eject*/le,
 					/*immediate*/FALSE,
+					/*power_condition*/SSS_PC_START_VALID,
 					SSD_FULL_SIZE,
 					/*timeout*/50000);
 			break;
diff --git a/sys/cam/scsi/scsi_all.c b/sys/cam/scsi/scsi_all.c
index b28ec2671d4a..3b991fc248de 100644
--- a/sys/cam/scsi/scsi_all.c
+++ b/sys/cam/scsi/scsi_all.c
@@ -8984,7 +8984,8 @@ void
 scsi_start_stop(struct ccb_scsiio *csio, uint32_t retries,
 		void (*cbfcnp)(struct cam_periph *, union ccb *),
 		uint8_t tag_action, int start, int load_eject,
-		int immediate, uint8_t sense_len, uint32_t timeout)
+		int immediate, uint8_t power_condition, uint8_t sense_len,
+		uint32_t timeout)
 {
 	struct scsi_start_stop_unit *scsi_cmd;
 	int extra_flags = 0;
@@ -8999,6 +9000,7 @@ scsi_start_stop(struct ccb_scsiio *csio, uint32_t retries,
 	}
 	if (load_eject != 0)
 		scsi_cmd->how |= SSS_LOEJ;
+	scsi_cmd->how |= power_condition;
 	if (immediate != 0)
 		scsi_cmd->byte2 |= SSS_IMMED;
 
diff --git a/sys/cam/scsi/scsi_all.h b/sys/cam/scsi/scsi_all.h
index e50974edac86..fb3ed8ee4458 100644
--- a/sys/cam/scsi/scsi_all.h
+++ b/sys/cam/scsi/scsi_all.h
@@ -4326,7 +4326,8 @@ void scsi_unmap(struct ccb_scsiio *csio, uint32_t retries,
 void scsi_start_stop(struct ccb_scsiio *csio, uint32_t retries,
 		     void (*cbfcnp)(struct cam_periph *, union ccb *),
 		     uint8_t tag_action, int start, int load_eject,
-		     int immediate, uint8_t sense_len, uint32_t timeout);
+		     int immediate, uint8_t power_condition, uint8_t sense_len,
+		     uint32_t timeout);
 void scsi_read_attribute(struct ccb_scsiio *csio, uint32_t retries, 
 			 void (*cbfcnp)(struct cam_periph *, union ccb *),
 			 uint8_t tag_action, uint8_t service_action,
diff --git a/sys/cam/scsi/scsi_cd.c b/sys/cam/scsi/scsi_cd.c
index 1e8dc98d53f4..be6f1c47512a 100644
--- a/sys/cam/scsi/scsi_cd.c
+++ b/sys/cam/scsi/scsi_cd.c
@@ -3416,6 +3416,7 @@ cdstartunit(struct cam_periph *periph, int load)
 			/* start */ TRUE,
 			/* load_eject */ load,
 			/* immediate */ FALSE,
+			/* power_condition */ SSS_PC_START_VALID,
 			/* sense_len */ SSD_FULL_SIZE,
 			/* timeout */ 50000);
 
@@ -3444,6 +3445,7 @@ cdstopunit(struct cam_periph *periph, uint32_t eject)
 			/* start */ FALSE,
 			/* load_eject */ eject,
 			/* immediate */ FALSE,
+			/* power_condition */ SSS_PC_START_VALID,
 			/* sense_len */ SSD_FULL_SIZE,
 			/* timeout */ 50000);
 
diff --git a/sys/dev/mpr/mpr_sas_lsi.c b/sys/dev/mpr/mpr_sas_lsi.c
index d9744b1054c2..9ba776e49e7a 100644
--- a/sys/dev/mpr/mpr_sas_lsi.c
+++ b/sys/dev/mpr/mpr_sas_lsi.c
@@ -1517,6 +1517,7 @@ mprsas_SSU_to_SATA_devices(struct mpr_softc *sc, int howto)
 			    /*start*/FALSE,
 			    /*load/eject*/0,
 			    /*immediate*/FALSE,
+			    /*power_condition*/SSS_PC_START_VALID,
 			    MPR_SENSE_LEN,
 			    /*timeout*/10000);
 			xpt_action(ccb);
diff --git a/sys/dev/mps/mps_sas_lsi.c b/sys/dev/mps/mps_sas_lsi.c
index e2d1ef2b013a..42119b5c0a43 100644
--- a/sys/dev/mps/mps_sas_lsi.c
+++ b/sys/dev/mps/mps_sas_lsi.c
@@ -1153,6 +1153,7 @@ mpssas_SSU_to_SATA_devices(struct mps_softc *sc, int howto)
 			    /*start*/FALSE,
 			    /*load/eject*/0,
 			    /*immediate*/FALSE,
+			    /*power_condition*/SSS_PC_START_VALID,
 			    MPS_SENSE_LEN,
 			    /*timeout*/10000);
 			xpt_action(ccb);

From nobody Tue Oct  6 07:50:45 2026
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 4hzT2Z3G7tz6cW1S
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:46 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2Y6ttyz4G67
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:45 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273046;
	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=lTOBSg7WwRivqQSV5+kbFFewu2g1zz/R/rZepcttd00=;
	b=kr62WPqBcWEplBieV5GgL3KHOmwL8Dg0FFqT9DwSFKm9EN4yUFKgIaEh67pKEfOvWn+c/S
	3rEI7qsWCeQxj9lW7+pziHsUxub8Oqa0ZNBc+1cuXTLuGlDqOhM/noepvOxhoPPhX5bTqs
	vpLupvVjE1TmUc9G3LVhCePtqoCaRL4UuZU/EvEaTMG9eBk4fHK23cFiKvNvMbvKPBeq5z
	iMLItRSxXEaaZAOHrO8EZImQNy3Az1YNGLkNYHhQiegZY5HUA+yDbymhUIVYICsb6iX9SG
	9C/1h/4O7a4dbLgTpudZT8oXcQsr5jx5MJ5QwwWMu/CrLgdyCVOTTp1DzIrlSA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273046;
	b=UfqQYhlXu2PHSFPLGAbZixwob5ncbycAcEb1jnQhmI7CKAVaCueHp6094jYIXutHs0Lksn
	bKuwq5JwsQjoj6YgZ9DCqTP8lZYzpHyzphTFtopcRi7ENkPdlsGq87SdlXrmUGflpPJO52
	f3PufwFYRMDFn6P/qg4ZzeMiFA6Xzm04khNBn11CHr5e7PWGg730Ty3Mo5vWNEwP5XU8aX
	pxm259eJu7hrNAL7lYNMkZ3ocJpxdak157oG1BMyL+EW5OngtprZdHyafspYc7mAwJxrWZ
	fRp9UAVs3+1Mjav13OkpRs3ASP44zeNK+l6yuUQs+N5IYf5otRvsYS1HBQqFyA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273046;
	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=lTOBSg7WwRivqQSV5+kbFFewu2g1zz/R/rZepcttd00=;
	b=n/klYFfo7kdMBTB/dN4Tudc5A8ZMQk7iu+6SlxZz3f82fgp4CkAWW6uAokq9hD7XH0plOm
	x8ExX6yaTaxsC+frKLlUpkhwxKfUYfgHEetxpiVTXCjAzWaU5VRA6bW5aSu38Gid5csKqR
	0LnkDDgAHPr1sexrpS7hA2fekyhPZzh/GTpVcnHqeusnaPWJQzBD9fY7cWctID8vyDQ76L
	fpMweDkGWA7cC/1pQjBFAFWntSj1wQXMAYlhB+rpoIjywTvXIyOVMwfF+jASkCDAlSMf+C
	JRrjwBUJEv0LLVugWa4AzAuii4naSjFFUx9yDA4SYxxDPmK8LFKmURA4+cDQiQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2Y5vBCzxby
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:45 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 47b5a
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:45 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 968c352536ff - stable/15 - ufshci: Add a check for WLUN during driver initialization
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 968c352536ff17f5536ebd408c975d1d59b231d0
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:45 +0000
Message-Id: <6ac4a855.47b5a.3aceab8d@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=968c352536ff17f5536ebd408c975d1d59b231d0

commit 968c352536ff17f5536ebd408c975d1d59b231d0
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2025-12-01 04:39:49 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:47 +0000

    ufshci: Add a check for WLUN during driver initialization
    
    This patch checks whether wlun is registered as a periph device.
    It also implements a function to issue an SSU.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D53923
    
    (cherry picked from commit 31407551c3d4d29905f77abddac3fd9b649e166b)
---
 sys/dev/ufshci/ufshci_ctrlr.c   |  12 ++---
 sys/dev/ufshci/ufshci_dev.c     |  14 ++++-
 sys/dev/ufshci/ufshci_private.h |  14 +++++
 sys/dev/ufshci/ufshci_sim.c     | 114 +++++++++++++++++++++++++++++++++++++++-
 sys/dev/ufshci/ufshci_sysctl.c  |   4 ++
 5 files changed, 150 insertions(+), 8 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index fd61451f8a9e..7c225423c266 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -79,12 +79,6 @@ ufshci_ctrlr_start(struct ufshci_controller *ctrlr, bool resetting)
 		return;
 	}
 
-	/* Initialize UFS Power Mode */
-	if (ufshci_dev_init_ufs_power_mode(ctrlr) != 0) {
-		ufshci_ctrlr_fail(ctrlr);
-		return;
-	}
-
 	/* Read Controller Descriptor (Device, Geometry) */
 	if (ufshci_dev_get_descriptor(ctrlr) != 0) {
 		ufshci_ctrlr_fail(ctrlr);
@@ -109,6 +103,12 @@ ufshci_ctrlr_start(struct ufshci_controller *ctrlr, bool resetting)
 		return;
 	}
 
+	/* Initialize UFS Power Mode */
+	if (ufshci_dev_init_ufs_power_mode(ctrlr) != 0) {
+		ufshci_ctrlr_fail(ctrlr);
+		return;
+	}
+
 	TSEXIT();
 }
 
diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index 975468e5156f..9696e8ea8091 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -455,8 +455,20 @@ ufshci_dev_init_uic_power_mode(struct ufshci_controller *ctrlr)
 int
 ufshci_dev_init_ufs_power_mode(struct ufshci_controller *ctrlr)
 {
-	/* TODO: Need to implement */
+	ctrlr->ufs_dev.power_mode_supported = false;
 
+	if (ctrlr->quirks & UFSHCI_QUIRK_SKIP_WELL_KNOWN_LUNS)
+		return (0);
+
+	ctrlr->ufs_device_wlun_periph = ufshci_sim_find_periph(ctrlr,
+	    UFSHCI_WLUN_UFS_DEVICE);
+	if (ctrlr->ufs_device_wlun_periph == NULL) {
+		ufshci_printf(ctrlr,
+		    "Well-known LUN `UFS Device (0x50)` not found\n");
+		return (0);
+	}
+
+	ctrlr->ufs_dev.power_mode_supported = true;
 	return (0);
 }
 
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index 3cee021880a8..22e77c9b9326 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -31,6 +31,8 @@
 
 #include <machine/bus.h>
 
+#include <cam/cam.h>
+
 #include "ufshci.h"
 
 MALLOC_DECLARE(M_UFSHCI);
@@ -247,6 +249,9 @@ struct ufshci_device {
 	uint32_t wb_user_space_config_option;
 	uint8_t wb_dedicated_lu;
 	uint32_t write_booster_flush_threshold;
+
+	/* Power mode */
+	bool power_mode_supported;
 };
 
 /*
@@ -274,6 +279,9 @@ struct ufshci_controller {
 	struct cam_sim *ufshci_sim;
 	struct cam_path *ufshci_path;
 
+	struct cam_periph *ufs_device_wlun_periph;
+	struct mtx ufs_device_wlun_mtx;
+
 	struct mtx sc_mtx;
 	uint32_t sc_unit;
 	uint8_t sc_name[16];
@@ -371,8 +379,14 @@ void ufshci_completion_poll_cb(void *arg, const struct ufshci_completion *cpl,
     bool error);
 
 /* SIM */
+uint8_t ufshci_sim_translate_scsi_to_ufs_lun(lun_id_t scsi_lun);
+uint64_t ufshci_sim_translate_ufs_to_scsi_lun(uint8_t ufs_lun);
 int ufshci_sim_attach(struct ufshci_controller *ctrlr);
 void ufshci_sim_detach(struct ufshci_controller *ctrlr);
+struct cam_periph *ufshci_sim_find_periph(struct ufshci_controller *ctrlr,
+    uint8_t wlun);
+int ufshci_sim_send_ssu(struct ufshci_controller *ctrlr, bool start,
+    int pwr_cond, bool immed);
 
 /* Controller */
 int ufshci_ctrlr_construct(struct ufshci_controller *ctrlr, device_t dev);
diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index db2e194b699b..0cd691de47e2 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -10,9 +10,11 @@
 #include <cam/cam.h>
 #include <cam/cam_ccb.h>
 #include <cam/cam_debug.h>
+#include <cam/cam_periph.h>
 #include <cam/cam_sim.h>
 #include <cam/cam_xpt_sim.h>
 #include <cam/scsi/scsi_all.h>
+#include <cam/scsi/scsi_message.h>
 
 #include "ufshci_private.h"
 
@@ -76,7 +78,7 @@ ufshci_sim_illegal_request(union ccb *ccb)
  * The SCSI LUN format and the UFS UPIU LUN format are different.
  * This function converts the SCSI LUN format to the UFS UPIU LUN format.
  */
-static uint8_t
+uint8_t
 ufshci_sim_translate_scsi_to_ufs_lun(lun_id_t scsi_lun)
 {
 	const int address_format_offset = 8;
@@ -94,6 +96,19 @@ ufshci_sim_translate_scsi_to_ufs_lun(lun_id_t scsi_lun)
 	return (scsi_lun & UFSHCI_UPIU_UNIT_NUMBER_ID_MASK);
 }
 
+uint64_t
+ufshci_sim_translate_ufs_to_scsi_lun(uint8_t ufs_lun)
+{
+	/* Logical unit */
+	if (!(ufs_lun & UFSHCI_UPIU_WLUN_ID_MASK)) {
+		return ufs_lun;
+	}
+
+	/* Well known logical unit */
+	return (((uint64_t)ufs_lun & ~UFSHCI_UPIU_WLUN_ID_MASK) |
+	    (RPL_LUNDATA_ATYP_EXTLUN | RPL_LUNDATA_EXT_EAM_WK) << 8);
+}
+
 static void
 ufshchi_sim_scsiio(struct cam_sim *sim, union ccb *ccb)
 {
@@ -396,3 +411,100 @@ ufshci_sim_detach(struct ufshci_controller *ctrlr)
 		ctrlr->ufshci_sim = NULL;
 	}
 }
+
+struct cam_periph *
+ufshci_sim_find_periph(struct ufshci_controller *ctrlr, uint8_t wlun)
+{
+	struct cam_path *path;
+	struct cam_periph *periph = NULL;
+	uint64_t scsi_lun;
+	uint64_t timeout;
+
+	scsi_lun = ufshci_sim_translate_ufs_to_scsi_lun(wlun);
+
+	if (xpt_create_path(&path, /*periph*/ NULL,
+		cam_sim_path(ctrlr->ufshci_sim), 0, scsi_lun) != CAM_REQ_CMP) {
+		return NULL;
+	}
+
+	/* Wait for the perip device to be found */
+	timeout = ticks + MSEC_2_TICKS(ctrlr->device_init_timeout_in_ms);
+
+	while (1) {
+		xpt_path_lock(path);
+		periph = cam_periph_find(path, "pass");
+		xpt_path_unlock(path);
+
+		if (periph) {
+			xpt_free_path(path);
+			break;
+		}
+
+		if (timeout - ticks < 0) {
+			ufshci_printf(ctrlr,
+			    "Failed to find the Well known LUN(0x%x)\n", wlun);
+			break;
+		}
+
+		pause_sbt("ufshci_find_periph", ustosbt(100), 0, C_PREL(1));
+	}
+
+	return periph;
+}
+
+/* This function is called during suspend/resume. */
+int
+ufshci_sim_send_ssu(struct ufshci_controller *ctrlr, bool start,
+    int power_condition, bool immed)
+{
+	struct cam_periph *periph = ctrlr->ufs_device_wlun_periph;
+	union ccb *ccb;
+	int err;
+
+	/* Acquire periph reference */
+	if (periph && cam_periph_acquire(periph) != 0) {
+		periph = NULL;
+	}
+
+	if (periph == NULL) {
+		/* If the periph device does not exist, it will try to find it
+		 * again */
+		periph = ufshci_sim_find_periph(ctrlr,
+		    (uint8_t)UFSHCI_WLUN_UFS_DEVICE);
+		if (periph)
+			ctrlr->ufs_device_wlun_periph = periph;
+	}
+
+	if (periph == NULL) {
+		ufshci_printf(ctrlr,
+		    "Well-known LUN `UFS Device (0x50)` not found\n");
+		return ENODEV;
+	}
+	cam_periph_lock(periph);
+	ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL);
+	if (!ccb) {
+		cam_periph_unlock(periph);
+		cam_periph_release(periph);
+		return ENOMEM;
+	}
+
+	scsi_start_stop(&ccb->csio,
+	    /*retries*/ 4,
+	    /*cbfcnp*/ NULL,
+	    /*tag_action*/ MSG_SIMPLE_Q_TAG,
+	    /*start*/ start ? 1 : 0,
+	    /*load_eject*/ 0,
+	    /*immediate*/ immed ? 1 : 0,
+	    /*power_condition*/ power_condition, SSD_MIN_SIZE,
+	    ctrlr->device_init_timeout_in_ms);
+
+	ccb->ccb_h.flags |= CAM_DIR_NONE | CAM_DEV_QFRZDIS;
+
+	err = cam_periph_runccb(ccb, NULL, 0, SF_RETRY_UA, NULL);
+
+	cam_periph_unlock(periph);
+	/* Release periph reference */
+	cam_periph_release(periph);
+
+	return (err == 0) ? 0 : EIO;
+}
diff --git a/sys/dev/ufshci/ufshci_sysctl.c b/sys/dev/ufshci/ufshci_sysctl.c
index 56bc06b13f3c..3ec4ea935464 100644
--- a/sys/dev/ufshci/ufshci_sysctl.c
+++ b/sys/dev/ufshci/ufshci_sysctl.c
@@ -197,6 +197,10 @@ ufshci_sysctl_initialize_ctrlr(struct ufshci_controller *ctrlr)
 	    &dev->wb_user_space_config_option, 0,
 	    "WriteBooster preserve user space mode");
 
+	SYSCTL_ADD_BOOL(ctrlr_ctx, ctrlr_list, OID_AUTO, "power_mode_supported",
+	    CTLFLAG_RD, &dev->power_mode_supported, 0,
+	    "Device power mode support");
+
 	SYSCTL_ADD_PROC(ctrlr_ctx, ctrlr_list, OID_AUTO, "timeout_period",
 	    CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, &ctrlr->timeout_period,
 	    0, ufshci_sysctl_timeout_period, "IU",

From nobody Tue Oct  6 07:50:46 2026
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 4hzT2b26ZMz6cW3K
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:47 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2b0TdWz4G1J
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:47 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273047;
	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=DFTmH57dxtyB9MwqfJ8hmr9LYyt+OOyxSaSS+RxNTAc=;
	b=ZHj+6/HHbd/Pp+5HsbehM3YaXS9GnAl95Nv6NjZY1iFBJ/OjhNDTlOkVr61S+7Z81VDNv2
	HOx4L1g7G2fzuRUT5VrD5euHfSKKFAMA+Iiy52/vbgosiSaRk1H0GY8IL4g6+/Quj05T43
	cTYd4eANnIpAIlK+Tfo9xf2geEMN36mX9aconfu3MIWySJWH3NCgdBrzTxPQx0S0paW0iz
	f2dGGxPTfmIPWvnpu0yux+utkLkAIFhpyzSaYfminEfpJz3cU9q9jH3DpIZQBR0TsWlirB
	SrcwpaoGpq3P55tcMhx1yPbhEHT5MpINflYAU1Kon824Ro0dXkTGE3eTUo7EMQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273047;
	b=mO5uIvhzxLi8lByO7xKjiV2Itvi0IUJo1ZNJ69Ng5cItU1tjHxR6xnsBkyoXVto6Q+UleY
	pPdgGd50qVL+E5T0z9d4HWhR9OHfRMQccRIBIbRPD4SUurjfOq15J4kS77hVjPpd5d2Vhb
	lTOPdPRqiLLx2Ck391XkoR2jYFJ7PIKJ5m1VhTjAHdrlii1nh0a7WCdXFGcjQKkRMCQUI/
	Fye7rNxc14V8kdInsa0FkkoL/pfXxzryJwNbtPzrX6rkrIQpIsN4vr1lFGa80f2cJ4Sf+k
	3qCVmdCgs8XSxEFhtcGv8v6cRIJaGNRyDstnvKe9wFv2tBfgN+XqM8YG/9iNag==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273047;
	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=DFTmH57dxtyB9MwqfJ8hmr9LYyt+OOyxSaSS+RxNTAc=;
	b=KzS2t3iU9Aqkxs8zY5yI43dhBesGup45cimtVbttuT7zKa3uGi67F1YIkznPLOfkVF3I4M
	+RQWbBQH04OfTr70bnEFo/Hf2SnsPSn4O8gg9/t6YMRWpZHmDrMAnv+eF/V6pBSGCFdMfn
	qAySwePYqDtqsNLgDot/Csn5Fp6VnhwSL1LP0RttcQJeOnpzhAW8tUU3LwSfylQBXWUz7a
	tuz3jgTMGXAxE/r4ITVwfigRdY8ZSAGV70G4FWNRNUPw/h5nHyZSRx1MOK4bqBbmxvCa/h
	xaEkk/cTTBrXBv7LaxfdY2pPdQjIQIackIPJivUvFg9pai43/xhi55HTVFCzAg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2Z6ffTzxnr
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:46 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 474d0
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:46 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: ae109f0cba29 - stable/15 - ufshci: define the sleep types locally for stable/15
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: ae109f0cba290849a75f4be9eb0c52c853dc6cbe
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:46 +0000
Message-Id: <6ac4a856.474d0.770fad99@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=ae109f0cba290849a75f4be9eb0c52c853dc6cbe

commit ae109f0cba290849a75f4be9eb0c52c853dc6cbe
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-09-28 23:51:39 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:47 +0000

    ufshci: define the sleep types locally for stable/15
    
    The suspend/resume support merged next uses enum power_stype from
    <sys/power.h>. That enum comes from the generic sleep types work
    (c43473dc9b83), which is not in stable/15 and depends on ACPI changes
    that are not here either.
    
    Define the enum in ufshci_private.h with the names the driver uses, so
    the following merges from main apply without changes.
    
    This is a direct commit to stable/15.
    
    Sponsored by:   Samsung Electronics
---
 sys/dev/ufshci/ufshci_private.h | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index 22e77c9b9326..5ded8777753d 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -50,6 +50,20 @@ MALLOC_DECLARE(M_UFSHCI);
 
 #define UFSHCI_SECTOR_SIZE	      (512)
 
+/*
+ * stable/15 has no generic sleep types in <sys/power.h>, so define the
+ * ones this driver uses here.
+ */
+enum power_stype {
+	POWER_STYPE_AWAKE,
+	POWER_STYPE_STANDBY,
+	POWER_STYPE_SUSPEND_TO_MEM,
+	POWER_STYPE_SUSPEND_TO_IDLE,
+	POWER_STYPE_HIBERNATE,
+	POWER_STYPE_POWEROFF,
+	POWER_STYPE_COUNT,
+};
+
 struct ufshci_controller;
 
 struct ufshci_completion_poll_status {

From nobody Tue Oct  6 07:50:48 2026
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 4hzT2c3Q52z6cW7c
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:48 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2c1XPjz4Fs8
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:48 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273048;
	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=L2cLFl1/wfZDaRCNpm/tZ+MIncnxtewHm35oI2/K41k=;
	b=Z2h05I6ykPDp9e5QxZftBgi4DrlEM94ey2K0ExcD/zY/8vDC1RWZOreYi9l9GrPA+mmdK5
	13Ta12ytcWuvrKhP67RzLids6OglFBMxuIKPCZoVnTqFPFkWVqmoiYutEyFv473TYQVg6y
	MrxvKGELK3x8lty+uzo0phmp+Ev0SjKH2vTlh76GzUVBmfRNgOlBoKzelccki2S0uAZqwa
	Ds+N/+7wBuufAjmLyWK8R82EYrWw21V4vr3sxYngNgNl6VoFQ34GuecaMY1vEvI2d/sWKi
	UqS26nB7CN77FiqMPkcKagv5+ySz1qb6fL7gsoJi3UNivVVITBuRTxBtCQKZtw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273048;
	b=vrTuNdHqRaWuUvOtq0PylWdTk/+nkL/tSExuUkVeR99tEuKUYMNZWI/hmXY4b4fzFIdCQc
	E5UYrqszjb5fWlWdNoFbXi0u/maOnlLeKRRN3DyNWkeYimxHMhF3MilTVCKF+/3n2Zbp9q
	65tRl+aladnE/I4GSHhl7bEbU4+nzbdkHMgX9ydoafcyHgGPuqU7vibFAP4hzF6bvVsroc
	egvp+eF7yd2Y4FfK+TS59nrkJieI0eTs69tqeYgvkKW4k2k2z4mou2ODgEpCxc0hbtT1+s
	vp46UX8GNbhwcvdP2jSvQ6rtH8ZKQppRSvYa+1iev43UmAE4JEwbZXv9YGVEYg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273048;
	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=L2cLFl1/wfZDaRCNpm/tZ+MIncnxtewHm35oI2/K41k=;
	b=Wze0HtqchYOb+axTmMtgAhGb5uIY53vV6z7UCLqFjR+e1jmrg+37i7B6VRXA2aOSSMefc8
	E1DHgyyQVvFYg241ULDnUzjJVcSv3vW+yuRa/bEoggfpyVCKZTkcNdbYFqKLUF4jamUU7y
	my072GOHsy8hi+mdSnPcuQ/8GMupbWOKvG7DgphzvIKddZzAPl3bJVxPgX8J24s/VIpxQ8
	/a7m2wyMoIjguA4vwK569jfobHENA/7dxgmuAzo8AEs7pIK/JxO/fqthOEKhLZYNGIK3aJ
	vbTeIqzqBiiPO1f5Artio6COQnYK85NiyOXoUPgo5xTqZZ1YuhiwBqRe5Z+vzw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2c0GQPzxXD
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:48 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18721
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:48 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 1b063270950c - stable/15 - ufshci: Support suspend/resume
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 1b063270950c4b444f156d54619c6740271f96ef
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:48 +0000
Message-Id: <6ac4a858.18721.dbf2b12@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=1b063270950c4b444f156d54619c6740271f96ef

commit 1b063270950c4b444f156d54619c6740271f96ef
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2025-12-03 04:05:36 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:48 +0000

    ufshci: Support suspend/resume
    
    Handle system power events and issue START STOP UNIT (SSU) to the
    UFS Device WLUN (0x50).
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D54002
    
    (cherry picked from commit 3a99f31fdb6c66434f77d83ca5166aae4ad2d22c)
---
 sys/dev/ufshci/ufshci_ctrlr.c     | 50 +++++++++++++++++++++++++++++++++++++++
 sys/dev/ufshci/ufshci_dev.c       | 19 +++++++++++++++
 sys/dev/ufshci/ufshci_pci.c       | 22 ++++++++++++++++-
 sys/dev/ufshci/ufshci_private.h   | 35 ++++++++++++++++++++++++++-
 sys/dev/ufshci/ufshci_req_queue.c |  3 ++-
 sys/dev/ufshci/ufshci_sim.c       |  7 +++++-
 sys/dev/ufshci/ufshci_sysctl.c    |  3 +++
 7 files changed, 135 insertions(+), 4 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index 7c225423c266..6bdee85142a0 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -610,3 +610,53 @@ ufshci_reg_dump(struct ufshci_controller *ctrlr)
 
 	ufshci_printf(ctrlr, "========================================\n");
 }
+
+int
+ufshci_ctrlr_suspend(struct ufshci_controller *ctrlr, enum power_stype stype)
+{
+	int error;
+
+	if (!ctrlr->ufs_dev.power_mode_supported)
+		return (0);
+
+	/* TODO: Need to flush the request queue */
+
+	if (ctrlr->ufs_device_wlun_periph) {
+		ctrlr->ufs_dev.power_mode = power_map[stype].dev_pwr;
+		error = ufshci_sim_send_ssu(ctrlr, /*start*/ false,
+		    power_map[stype].ssu_pc, /*immed*/ false);
+		if (error) {
+			ufshci_printf(ctrlr,
+			    "Failed to send SSU in suspend handler\n");
+			return (error);
+		}
+	}
+
+	/* TODO: Change the link state to Hibernate if necessary. */
+
+	return (0);
+}
+
+int
+ufshci_ctrlr_resume(struct ufshci_controller *ctrlr, enum power_stype stype)
+{
+	int error;
+
+	if (!ctrlr->ufs_dev.power_mode_supported)
+		return (0);
+
+	/* TODO: Change the link state to Active if necessary. */
+
+	if (ctrlr->ufs_device_wlun_periph) {
+		ctrlr->ufs_dev.power_mode = power_map[stype].dev_pwr;
+		error = ufshci_sim_send_ssu(ctrlr, /*start*/ false,
+		    power_map[stype].ssu_pc, /*immed*/ false);
+		if (error) {
+			ufshci_printf(ctrlr,
+			    "Failed to send SSU in resume handler\n");
+			return (error);
+		}
+	}
+
+	return (0);
+}
diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index 9696e8ea8091..136823523fd3 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -469,6 +469,8 @@ ufshci_dev_init_ufs_power_mode(struct ufshci_controller *ctrlr)
 	}
 
 	ctrlr->ufs_dev.power_mode_supported = true;
+	ctrlr->ufs_dev.power_mode = UFSHCI_DEV_PWR_ACTIVE;
+
 	return (0);
 }
 
@@ -786,3 +788,20 @@ out:
 	ufshci_dev_disable_write_booster(ctrlr);
 	return (error);
 }
+
+int
+ufshci_dev_get_current_power_mode(struct ufshci_controller *ctrlr,
+    uint8_t *power_mode)
+{
+	uint64_t value;
+	int err;
+
+	err = ufshci_dev_read_attribute(ctrlr, UFSHCI_ATTR_B_CURRENT_POWER_MODE,
+	    /*index*/ 0, /*selector*/ 0, &value);
+	if (err)
+		return (err);
+
+	*power_mode = (uint8_t)value;
+
+	return (0);
+}
diff --git a/sys/dev/ufshci/ufshci_pci.c b/sys/dev/ufshci/ufshci_pci.c
index 756ac6540632..d4ba05e1a37d 100644
--- a/sys/dev/ufshci/ufshci_pci.c
+++ b/sys/dev/ufshci/ufshci_pci.c
@@ -23,6 +23,8 @@
 static int ufshci_pci_probe(device_t);
 static int ufshci_pci_attach(device_t);
 static int ufshci_pci_detach(device_t);
+static int ufshci_pci_suspend(device_t);
+static int ufshci_pci_resume(device_t);
 
 static int ufshci_pci_setup_interrupts(struct ufshci_controller *ctrlr);
 
@@ -31,7 +33,8 @@ static device_method_t ufshci_pci_methods[] = {
 	DEVMETHOD(device_probe, ufshci_pci_probe),
 	DEVMETHOD(device_attach, ufshci_pci_attach),
 	DEVMETHOD(device_detach, ufshci_pci_detach),
-	/* TODO: Implement Suspend, Resume */
+	DEVMETHOD(device_suspend, ufshci_pci_suspend),
+	DEVMETHOD(device_resume, ufshci_pci_resume),
 	DEVMETHOD_END
 };
 
@@ -261,3 +264,20 @@ msi:
 intx:
 	return (ufshci_pci_setup_shared(ctrlr, ctrlr->msi_count > 0 ? 1 : 0));
 }
+
+static int
+ufshci_pci_suspend(device_t dev)
+{
+	struct ufshci_controller *ctrlr = device_get_softc(dev);
+
+	/* Currently, PCI-based ufshci only supports POWER_STYPE_STANDBY */
+	return (ufshci_ctrlr_suspend(ctrlr, POWER_STYPE_STANDBY));
+}
+
+static int
+ufshci_pci_resume(device_t dev)
+{
+	struct ufshci_controller *ctrlr = device_get_softc(dev);
+
+	return (ufshci_ctrlr_resume(ctrlr, POWER_STYPE_AWAKE));
+}
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index 5ded8777753d..07e29e8ea73e 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -26,12 +26,14 @@
 #include <sys/memdesc.h>
 #include <sys/module.h>
 #include <sys/mutex.h>
+#include <sys/power.h>
 #include <sys/rman.h>
 #include <sys/taskqueue.h>
 
 #include <machine/bus.h>
 
 #include <cam/cam.h>
+#include <cam/scsi/scsi_all.h>
 
 #include "ufshci.h"
 
@@ -247,6 +249,30 @@ struct ufshci_req_queue {
 	bus_dmamap_t ucdmem_map;
 };
 
+enum ufshci_dev_pwr {
+	UFSHCI_DEV_PWR_ACTIVE = 0,
+	UFSHCI_DEV_PWR_SLEEP,
+	UFSHCI_DEV_PWR_POWERDOWN,
+	UFSHCI_DEV_PWR_DEEPSLEEP,
+	UFSHCI_DEV_PWR_COUNT,
+};
+
+struct ufshci_power_entry {
+	enum ufshci_dev_pwr dev_pwr;
+	uint8_t ssu_pc; /* SSU Power Condition */
+};
+
+/* SSU Power Condition 0x40 is defined in the UFS specification */
+static const struct ufshci_power_entry power_map[POWER_STYPE_COUNT] = {
+	[POWER_STYPE_AWAKE] = { UFSHCI_DEV_PWR_ACTIVE, SSS_PC_ACTIVE },
+	[POWER_STYPE_STANDBY] = { UFSHCI_DEV_PWR_SLEEP, SSS_PC_IDLE },
+	[POWER_STYPE_SUSPEND_TO_MEM] = { UFSHCI_DEV_PWR_POWERDOWN,
+	    SSS_PC_STANDBY },
+	[POWER_STYPE_SUSPEND_TO_IDLE] = { UFSHCI_DEV_PWR_SLEEP, SSS_PC_IDLE },
+	[POWER_STYPE_HIBERNATE] = { UFSHCI_DEV_PWR_DEEPSLEEP, 0x40 },
+	[POWER_STYPE_POWEROFF] = { UFSHCI_DEV_PWR_POWERDOWN, SSS_PC_STANDBY },
+};
+
 struct ufshci_device {
 	uint32_t max_lun_count;
 
@@ -266,6 +292,7 @@ struct ufshci_device {
 
 	/* Power mode */
 	bool power_mode_supported;
+	enum ufshci_dev_pwr power_mode;
 };
 
 /*
@@ -400,12 +427,16 @@ void ufshci_sim_detach(struct ufshci_controller *ctrlr);
 struct cam_periph *ufshci_sim_find_periph(struct ufshci_controller *ctrlr,
     uint8_t wlun);
 int ufshci_sim_send_ssu(struct ufshci_controller *ctrlr, bool start,
-    int pwr_cond, bool immed);
+    uint8_t pwr_cond, bool immed);
 
 /* Controller */
 int ufshci_ctrlr_construct(struct ufshci_controller *ctrlr, device_t dev);
 void ufshci_ctrlr_destruct(struct ufshci_controller *ctrlr, device_t dev);
 void ufshci_ctrlr_reset(struct ufshci_controller *ctrlr);
+int ufshci_ctrlr_suspend(struct ufshci_controller *ctrlr,
+    enum power_stype stype);
+int ufshci_ctrlr_resume(struct ufshci_controller *ctrlr,
+    enum power_stype stype);
 /* ctrlr defined as void * to allow use with config_intrhook. */
 void ufshci_ctrlr_start_config_hook(void *arg);
 void ufshci_ctrlr_poll(struct ufshci_controller *ctrlr);
@@ -429,6 +460,8 @@ int ufshci_dev_init_uic_power_mode(struct ufshci_controller *ctrlr);
 int ufshci_dev_init_ufs_power_mode(struct ufshci_controller *ctrlr);
 int ufshci_dev_get_descriptor(struct ufshci_controller *ctrlr);
 int ufshci_dev_config_write_booster(struct ufshci_controller *ctrlr);
+int ufshci_dev_get_current_power_mode(struct ufshci_controller *ctrlr,
+    uint8_t *power_mode);
 
 /* Controller Command */
 void ufshci_ctrlr_cmd_send_task_mgmt_request(struct ufshci_controller *ctrlr,
diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
index 7aa164d00bec..df7e4b159278 100644
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -147,7 +147,8 @@ ufshci_req_queue_response_is_error(struct ufshci_req_queue *req_queue,
 	/* Check response UPIU header */
 	if (response->header.response != UFSHCI_RESPONSE_CODE_TARGET_SUCCESS) {
 		ufshci_printf(req_queue->ctrlr,
-		    "Invalid response code = 0x%x\n",
+		    "Function(0x%x) Invalid response code = 0x%x\n",
+		    response->header.ext_iid_or_function,
 		    response->header.response);
 		is_error = true;
 	}
diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index 0cd691de47e2..1589e7475ad4 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -46,6 +46,11 @@ ufshci_sim_scsiio_done(void *ccb_arg, const struct ufshci_completion *cpl,
 
 	ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
 	if (error) {
+		printf("ufshci: SCSI command completion error, Status(0x%x)"
+		       " Key(0x%x), ASC(0x%x), ASCQ(0x%x)\n",
+		    cpl->response_upiu.cmd_response_upiu.header
+			.ext_iid_or_status,
+		    sense_data[2], sense_data[12], sense_data[13]);
 		ccb->ccb_h.status = CAM_REQ_CMP_ERR;
 		xpt_done(ccb);
 	} else {
@@ -455,7 +460,7 @@ ufshci_sim_find_periph(struct ufshci_controller *ctrlr, uint8_t wlun)
 /* This function is called during suspend/resume. */
 int
 ufshci_sim_send_ssu(struct ufshci_controller *ctrlr, bool start,
-    int power_condition, bool immed)
+    uint8_t power_condition, bool immed)
 {
 	struct cam_periph *periph = ctrlr->ufs_device_wlun_periph;
 	union ccb *ccb;
diff --git a/sys/dev/ufshci/ufshci_sysctl.c b/sys/dev/ufshci/ufshci_sysctl.c
index 3ec4ea935464..30b0ccaeed13 100644
--- a/sys/dev/ufshci/ufshci_sysctl.c
+++ b/sys/dev/ufshci/ufshci_sysctl.c
@@ -201,6 +201,9 @@ ufshci_sysctl_initialize_ctrlr(struct ufshci_controller *ctrlr)
 	    CTLFLAG_RD, &dev->power_mode_supported, 0,
 	    "Device power mode support");
 
+	SYSCTL_ADD_UINT(ctrlr_ctx, ctrlr_list, OID_AUTO, "power_mode",
+	    CTLFLAG_RD, &dev->power_mode, 0, "Current device power mode");
+
 	SYSCTL_ADD_PROC(ctrlr_ctx, ctrlr_list, OID_AUTO, "timeout_period",
 	    CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, &ctrlr->timeout_period,
 	    0, ufshci_sysctl_timeout_period, "IU",

From nobody Tue Oct  6 07:50:49 2026
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 4hzT2g01G2z6cW1j
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:51 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2d5tgJz4FyM
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:49 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273049;
	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=IQqaz89RA9+OxQtxGCu8Qen60fN1tGY3dORAUP0sGWY=;
	b=RcmjfACRfSNI9UOTg1adPNiF0bmFdQCPSELf1Et+OdmjLeM8hREObWeSEW7e4+A65Ygy3d
	JCsB0XqWuugnCNklHKs0iBQ0Wc/iPjUqOqpY/wvmF7xDd6sutdvEAPX72h8239vm8HnEg7
	uwzXNV38uyNJ0DvbKR2njfeB4YDiOFsKmcm1MiPVskc+OgcXgR0DRZ3kxgeh2qRVQbB8+Q
	2HM76dC3jLVrc2aHnkDW03ayitnYG6rAE8N2oTLywfsPp4gnTEIi0kzbhDs8/3E23/Zo+D
	hKNNZqsJqJEYwchUdI7ZIMa91EZ3zp4qq4xfJjq9nV4EfvHcTTg4pvaplkM3mA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273049;
	b=IDpYrjDx9fZlT5mgLuWz56mnWn6Eh6awtDB6qhwspZ2FnUQRwM+ErIIScov+67UZtXQJWh
	vwJr3jvZbPYw52rV5hqV3Xc01G5SbwXpMss+p9i/kQYmMCtucVRMjNkfUixUrKDDzWK5Fi
	fKyEZVZpOORjNjyIUJZ3JD7lPBOsL4DvofasnNRgQmtPs2JW6/FXuEX9Xh4cHt/Zm9ljvV
	iykf2ksSMpWIxz/L4ejXNmmloNZrr79+UrpnniD0SyW/OJRADYS8/AdLU8kMNingVVHb1L
	eT3LZ5YNiuErkGmp49NhAFRExYX091SeAP/vGHC9v+PyVTi2xZX7elaKE3Y2PA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273049;
	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=IQqaz89RA9+OxQtxGCu8Qen60fN1tGY3dORAUP0sGWY=;
	b=YBHJv9bmfbDVkzohzGzgq9oGGE0bbKHscTCALuHzAM6y9HZjAgx0QQu+C4pxiiG2evJHfL
	5SVbRcgKE9LILSVroLY3Zjsj/GB7iVHDdTgJ9CUIx2fkh2pAJRjEgv9CFi6Y9NyCN+ZSVS
	5re3hnfH09UWx6f7r1exa/BY4bEj4jbxTPeu3s4O1K7zXIz7STXTA9PRT28OCCZagUVpII
	Jsz5KWUK/Ih6GT9jwcjgSivlQKlPiXGMZoPcLkn5Efc5zcz3b3TLthvOrMkUTW+SL9Duy6
	vkZHTT1ucVWOlmQu0MUoI9rNGagpYYqvdCIQqWt9IPAunsPr86P27YZkYvmw6g==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2d1F5mzwyw
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:49 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 4772d
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:49 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: ff341c1149f9 - stable/15 - ufshci: Support UIC hibernation enter/exit
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: ff341c1149f958f0038c76ddeaf3bd7abd43e40e
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:49 +0000
Message-Id: <6ac4a859.4772d.5d0a2824@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=ff341c1149f958f0038c76ddeaf3bd7abd43e40e

commit ff341c1149f958f0038c76ddeaf3bd7abd43e40e
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2025-12-03 04:05:51 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:48 +0000

    ufshci: Support UIC hibernation enter/exit
    
    Add helpers to issue DME_HIBERNATE_ENTER/DME_HIBERNATE_EXIT and
    call them during suspend/resume.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D54003
    
    (cherry picked from commit bec77e3a160dba10cbc30416f53a506ca2b9301f)
---
 sys/dev/ufshci/ufshci_ctrlr.c   | 22 ++++++++++--
 sys/dev/ufshci/ufshci_dev.c     | 77 +++++++++++++++++++++++++++++++++++++++--
 sys/dev/ufshci/ufshci_private.h | 33 ++++++++++++++----
 sys/dev/ufshci/ufshci_uic_cmd.c | 77 ++++++++++++++++++++++++++++++++++++++++-
 4 files changed, 196 insertions(+), 13 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index 6bdee85142a0..8c4b88e23587 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -79,6 +79,8 @@ ufshci_ctrlr_start(struct ufshci_controller *ctrlr, bool resetting)
 		return;
 	}
 
+	ufshci_dev_init_uic_link_state(ctrlr);
+
 	/* Read Controller Descriptor (Device, Geometry) */
 	if (ufshci_dev_get_descriptor(ctrlr) != 0) {
 		ufshci_ctrlr_fail(ctrlr);
@@ -187,7 +189,7 @@ ufshci_ctrlr_enable_host_ctrlr(struct ufshci_controller *ctrlr)
 	return (0);
 }
 
-static int
+int
 ufshci_ctrlr_disable(struct ufshci_controller *ctrlr)
 {
 	int error;
@@ -632,7 +634,14 @@ ufshci_ctrlr_suspend(struct ufshci_controller *ctrlr, enum power_stype stype)
 		}
 	}
 
-	/* TODO: Change the link state to Hibernate if necessary. */
+	/* Change the link state */
+	error = ufshci_dev_link_state_transition(ctrlr,
+	    power_map[stype].link_state);
+	if (error) {
+		ufshci_printf(ctrlr,
+		    "Failed to transition link state in suspend handler\n");
+		return (error);
+	}
 
 	return (0);
 }
@@ -645,7 +654,14 @@ ufshci_ctrlr_resume(struct ufshci_controller *ctrlr, enum power_stype stype)
 	if (!ctrlr->ufs_dev.power_mode_supported)
 		return (0);
 
-	/* TODO: Change the link state to Active if necessary. */
+	/* Change the link state */
+	error = ufshci_dev_link_state_transition(ctrlr,
+	    power_map[stype].link_state);
+	if (error) {
+		ufshci_printf(ctrlr,
+		    "Failed to transition link state in resume handler\n");
+		return (error);
+	}
 
 	if (ctrlr->ufs_device_wlun_periph) {
 		ctrlr->ufs_dev.power_mode = power_map[stype].dev_pwr;
diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index 136823523fd3..c4a5bda9c79a 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -433,9 +433,6 @@ ufshci_dev_init_uic_power_mode(struct ufshci_controller *ctrlr)
 		return (ENXIO);
 	}
 
-	/* Clear 'Power Mode completion status' */
-	ufshci_mmio_write_4(ctrlr, is, UFSHCIM(UFSHCI_IS_REG_UPMS));
-
 	if (ctrlr->quirks & UFSHCI_QUIRK_WAIT_AFTER_POWER_MODE_CHANGE) {
 		/*
 		 * Intel Lake-field UFSHCI has a quirk.
@@ -452,6 +449,12 @@ ufshci_dev_init_uic_power_mode(struct ufshci_controller *ctrlr)
 	return (0);
 }
 
+void
+ufshci_dev_init_uic_link_state(struct ufshci_controller *ctrlr)
+{
+	ctrlr->ufs_dev.link_state = UFSHCI_UIC_LINK_STATE_ACTIVE;
+}
+
 int
 ufshci_dev_init_ufs_power_mode(struct ufshci_controller *ctrlr)
 {
@@ -805,3 +808,71 @@ ufshci_dev_get_current_power_mode(struct ufshci_controller *ctrlr,
 
 	return (0);
 }
+
+static int
+ufshci_dev_hibernate_enter(struct ufshci_controller *ctrlr)
+{
+	int error;
+
+	error = ufshci_uic_send_dme_hibernate_enter(ctrlr);
+	if (error)
+		return (error);
+
+	return (ufshci_uic_hibernation_ready(ctrlr));
+}
+
+static int
+ufshci_dev_hibernate_exit(struct ufshci_controller *ctrlr)
+{
+	int error;
+
+	error = ufshci_uic_send_dme_hibernate_exit(ctrlr);
+	if (error)
+		return (error);
+
+	return (ufshci_uic_hibernation_ready(ctrlr));
+}
+
+int
+ufshci_dev_link_state_transition(struct ufshci_controller *ctrlr,
+    enum ufshci_uic_link_state target_state)
+{
+	struct ufshci_device *dev = &ctrlr->ufs_dev;
+	int error = 0;
+
+	if (dev->link_state == target_state)
+		return (0);
+
+	switch (target_state) {
+	case UFSHCI_UIC_LINK_STATE_OFF:
+		error = ufshci_dev_hibernate_enter(ctrlr);
+		if (error)
+			break;
+		error = ufshci_ctrlr_disable(ctrlr);
+		break;
+	case UFSHCI_UIC_LINK_STATE_ACTIVE:
+		if (dev->link_state == UFSHCI_UIC_LINK_STATE_HIBERNATE)
+			error = ufshci_dev_hibernate_exit(ctrlr);
+		else
+			error = EINVAL;
+		break;
+	case UFSHCI_UIC_LINK_STATE_HIBERNATE:
+		if (dev->link_state == UFSHCI_UIC_LINK_STATE_ACTIVE)
+			error = ufshci_dev_hibernate_enter(ctrlr);
+		else
+			error = EINVAL;
+		break;
+	case UFSHCI_UIC_LINK_STATE_BROKEN:
+		break;
+	default:
+		error = EINVAL;
+		break;
+	}
+
+	if (error)
+		return (error);
+
+	dev->link_state = target_state;
+
+	return (0);
+}
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index 07e29e8ea73e..14208abe398b 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -257,20 +257,33 @@ enum ufshci_dev_pwr {
 	UFSHCI_DEV_PWR_COUNT,
 };
 
+enum ufshci_uic_link_state {
+	UFSHCI_UIC_LINK_STATE_OFF = 0,
+	UFSHCI_UIC_LINK_STATE_ACTIVE,
+	UFSHCI_UIC_LINK_STATE_HIBERNATE,
+	UFSHCI_UIC_LINK_STATE_BROKEN,
+};
+
 struct ufshci_power_entry {
 	enum ufshci_dev_pwr dev_pwr;
 	uint8_t ssu_pc; /* SSU Power Condition */
+	enum ufshci_uic_link_state link_state;
 };
 
 /* SSU Power Condition 0x40 is defined in the UFS specification */
 static const struct ufshci_power_entry power_map[POWER_STYPE_COUNT] = {
-	[POWER_STYPE_AWAKE] = { UFSHCI_DEV_PWR_ACTIVE, SSS_PC_ACTIVE },
-	[POWER_STYPE_STANDBY] = { UFSHCI_DEV_PWR_SLEEP, SSS_PC_IDLE },
+	[POWER_STYPE_AWAKE] = { UFSHCI_DEV_PWR_ACTIVE, SSS_PC_ACTIVE,
+	    UFSHCI_UIC_LINK_STATE_ACTIVE },
+	[POWER_STYPE_STANDBY] = { UFSHCI_DEV_PWR_SLEEP, SSS_PC_IDLE,
+	    UFSHCI_UIC_LINK_STATE_HIBERNATE },
 	[POWER_STYPE_SUSPEND_TO_MEM] = { UFSHCI_DEV_PWR_POWERDOWN,
-	    SSS_PC_STANDBY },
-	[POWER_STYPE_SUSPEND_TO_IDLE] = { UFSHCI_DEV_PWR_SLEEP, SSS_PC_IDLE },
-	[POWER_STYPE_HIBERNATE] = { UFSHCI_DEV_PWR_DEEPSLEEP, 0x40 },
-	[POWER_STYPE_POWEROFF] = { UFSHCI_DEV_PWR_POWERDOWN, SSS_PC_STANDBY },
+	    SSS_PC_STANDBY, UFSHCI_UIC_LINK_STATE_HIBERNATE },
+	[POWER_STYPE_SUSPEND_TO_IDLE] = { UFSHCI_DEV_PWR_SLEEP, SSS_PC_IDLE,
+	    UFSHCI_UIC_LINK_STATE_HIBERNATE },
+	[POWER_STYPE_HIBERNATE] = { UFSHCI_DEV_PWR_DEEPSLEEP, 0x40,
+	    UFSHCI_UIC_LINK_STATE_OFF },
+	[POWER_STYPE_POWEROFF] = { UFSHCI_DEV_PWR_POWERDOWN, SSS_PC_STANDBY,
+	    UFSHCI_UIC_LINK_STATE_OFF },
 };
 
 struct ufshci_device {
@@ -293,6 +306,7 @@ struct ufshci_device {
 	/* Power mode */
 	bool power_mode_supported;
 	enum ufshci_dev_pwr power_mode;
+	enum ufshci_uic_link_state link_state;
 };
 
 /*
@@ -437,6 +451,7 @@ int ufshci_ctrlr_suspend(struct ufshci_controller *ctrlr,
     enum power_stype stype);
 int ufshci_ctrlr_resume(struct ufshci_controller *ctrlr,
     enum power_stype stype);
+int ufshci_ctrlr_disable(struct ufshci_controller *ctrlr);
 /* ctrlr defined as void * to allow use with config_intrhook. */
 void ufshci_ctrlr_start_config_hook(void *arg);
 void ufshci_ctrlr_poll(struct ufshci_controller *ctrlr);
@@ -457,11 +472,14 @@ int ufshci_dev_reset(struct ufshci_controller *ctrlr);
 int ufshci_dev_init_reference_clock(struct ufshci_controller *ctrlr);
 int ufshci_dev_init_unipro(struct ufshci_controller *ctrlr);
 int ufshci_dev_init_uic_power_mode(struct ufshci_controller *ctrlr);
+void ufshci_dev_init_uic_link_state(struct ufshci_controller *ctrlr);
 int ufshci_dev_init_ufs_power_mode(struct ufshci_controller *ctrlr);
 int ufshci_dev_get_descriptor(struct ufshci_controller *ctrlr);
 int ufshci_dev_config_write_booster(struct ufshci_controller *ctrlr);
 int ufshci_dev_get_current_power_mode(struct ufshci_controller *ctrlr,
     uint8_t *power_mode);
+int ufshci_dev_link_state_transition(struct ufshci_controller *ctrlr,
+    enum ufshci_uic_link_state target_state);
 
 /* Controller Command */
 void ufshci_ctrlr_cmd_send_task_mgmt_request(struct ufshci_controller *ctrlr,
@@ -522,6 +540,7 @@ int ufshci_req_sdb_get_inflight_io(struct ufshci_controller *ctrlr);
 
 /* UIC Command */
 int ufshci_uic_power_mode_ready(struct ufshci_controller *ctrlr);
+int ufshci_uic_hibernation_ready(struct ufshci_controller *ctrlr);
 int ufshci_uic_cmd_ready(struct ufshci_controller *ctrlr);
 int ufshci_uic_send_dme_link_startup(struct ufshci_controller *ctrlr);
 int ufshci_uic_send_dme_get(struct ufshci_controller *ctrlr, uint16_t attribute,
@@ -533,6 +552,8 @@ int ufshci_uic_send_dme_peer_get(struct ufshci_controller *ctrlr,
 int ufshci_uic_send_dme_peer_set(struct ufshci_controller *ctrlr,
     uint16_t attribute, uint32_t value);
 int ufshci_uic_send_dme_endpoint_reset(struct ufshci_controller *ctrlr);
+int ufshci_uic_send_dme_hibernate_enter(struct ufshci_controller *ctrlr);
+int ufshci_uic_send_dme_hibernate_exit(struct ufshci_controller *ctrlr);
 
 /* SYSCTL */
 void ufshci_sysctl_initialize_ctrlr(struct ufshci_controller *ctrlr);
diff --git a/sys/dev/ufshci/ufshci_uic_cmd.c b/sys/dev/ufshci/ufshci_uic_cmd.c
index b9c867ff7065..29c143cec52c 100644
--- a/sys/dev/ufshci/ufshci_uic_cmd.c
+++ b/sys/dev/ufshci/ufshci_uic_cmd.c
@@ -23,6 +23,7 @@ ufshci_uic_power_mode_ready(struct ufshci_controller *ctrlr)
 	while (1) {
 		is = ufshci_mmio_read_4(ctrlr, is);
 		if (UFSHCIV(UFSHCI_IS_REG_UPMS, is)) {
+			/* Clear 'Power Mode completion status' */
 			ufshci_mmio_write_4(ctrlr, is,
 			    UFSHCIM(UFSHCI_IS_REG_UPMS));
 			break;
@@ -32,7 +33,7 @@ ufshci_uic_power_mode_ready(struct ufshci_controller *ctrlr)
 			ufshci_printf(ctrlr,
 			    "Power mode is not changed "
 			    "within %d ms\n",
-			    ctrlr->uic_cmd_timeout_in_ms);
+			    ctrlr->device_init_timeout_in_ms);
 			return (ENXIO);
 		}
 
@@ -52,6 +53,54 @@ ufshci_uic_power_mode_ready(struct ufshci_controller *ctrlr)
 	return (0);
 }
 
+int
+ufshci_uic_hibernation_ready(struct ufshci_controller *ctrlr)
+{
+	uint32_t is, hcs;
+	int timeout;
+
+	/* Wait for the IS flag to change */
+	timeout = ticks + MSEC_2_TICKS(ctrlr->uic_cmd_timeout_in_ms);
+
+	while (1) {
+		is = ufshci_mmio_read_4(ctrlr, is);
+		if (UFSHCIV(UFSHCI_IS_REG_UHES, is)) {
+			/* Clear 'UIC Hibernate Enter Status' */
+			ufshci_mmio_write_4(ctrlr, is,
+			    UFSHCIM(UFSHCI_IS_REG_UHES));
+			break;
+		}
+		if (UFSHCIV(UFSHCI_IS_REG_UHXS, is)) {
+			/* Clear 'UIC Hibernate Exit Status' */
+			ufshci_mmio_write_4(ctrlr, is,
+			    UFSHCIM(UFSHCI_IS_REG_UHXS));
+			break;
+		}
+
+		if (timeout - ticks < 0) {
+			ufshci_printf(ctrlr,
+			    "Hibernation enter/exit are not completed "
+			    "within %d ms\n",
+			    ctrlr->uic_cmd_timeout_in_ms);
+			return (ENXIO);
+		}
+
+		/* TODO: Replace busy-wait with interrupt-based pause. */
+		DELAY(10);
+	}
+
+	/* Check HCS power mode change request status */
+	hcs = ufshci_mmio_read_4(ctrlr, hcs);
+	if (UFSHCIV(UFSHCI_HCS_REG_UPMCRS, hcs) != 0x01) {
+		ufshci_printf(ctrlr,
+		    "Hibernation enter/exit request status error: 0x%x\n",
+		    UFSHCIV(UFSHCI_HCS_REG_UPMCRS, hcs));
+		return (ENXIO);
+	}
+
+	return (0);
+}
+
 int
 ufshci_uic_cmd_ready(struct ufshci_controller *ctrlr)
 {
@@ -239,3 +288,29 @@ ufshci_uic_send_dme_endpoint_reset(struct ufshci_controller *ctrlr)
 
 	return (ufshci_uic_send_cmd(ctrlr, &uic_cmd, NULL));
 }
+
+int
+ufshci_uic_send_dme_hibernate_enter(struct ufshci_controller *ctrlr)
+{
+	struct ufshci_uic_cmd uic_cmd;
+
+	uic_cmd.opcode = UFSHCI_DME_HIBERNATE_ENTER;
+	uic_cmd.argument1 = 0;
+	uic_cmd.argument2 = 0;
+	uic_cmd.argument3 = 0;
+
+	return (ufshci_uic_send_cmd(ctrlr, &uic_cmd, NULL));
+}
+
+int
+ufshci_uic_send_dme_hibernate_exit(struct ufshci_controller *ctrlr)
+{
+	struct ufshci_uic_cmd uic_cmd;
+
+	uic_cmd.opcode = UFSHCI_DME_HIBERNATE_EXIT;
+	uic_cmd.argument1 = 0;
+	uic_cmd.argument2 = 0;
+	uic_cmd.argument3 = 0;
+
+	return (ufshci_uic_send_cmd(ctrlr, &uic_cmd, NULL));
+}

From nobody Tue Oct  6 07:50:51 2026
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 4hzT2h2B60z6cVsD
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:52 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2g5fqjz4FyS
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:51 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273051;
	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=/HrSuqJwxXeVnnT684UJJ2sTXnU+pGM4qReH9n46ze4=;
	b=U5a48NykIuC+rTNUOz/4TvdVRk8NH/m8i4wu8q6gID6YHhlJpds8J6VTcbD2K9JhJl0r0w
	/iSAfdGuR2kXDdl064U/OZptE+dnlAuvFzKK/zcw2hHjVurc5EZHsrJoAQBPVGbOr00FKk
	fMF+6g+vGKPn5LWlbByvlqAtVXxj72pyPrT491YvWpu1xcxbev5FkgMB4woyK4G9SsZyqF
	qVBKRedtw7HGQ6JfhZtfESvcN122zXxbUmxalTu7j70nbZs2LGm06SahhsUOVQR/rFUTrN
	VZv1cQ/1R6m5cbz/hAdFk7KD9TQqgKUfqEwLQE/gEh9MTvgelc83r4OeWMj0vA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273051;
	b=J5hLonbysD57LaVsUSSYYn6nWE5TgwYTvz/iCq6AQ7rJPXt7QHtTRvbJRFm9bENDMdJrjN
	Z97Ll9vE+3zjDb6dhK/2U8P6/fvASlKqyCPJrK3hQAb2LTquNr8rF+cEDclvbkbkyd7MJ7
	P05iGaGr4I5SMaSyLyMlfhZmhYOEqZiqZDH5pDcTx+SQdJkhGYLFQpiAI85VYrMX0W5K4W
	WlweE33bXIYMpLuzF1Ln1oLjKdkr1wGL98lPzwAUfxzfMd4IfklK4EvbODY0liZtzdmhs8
	I84tuAPw6OhvNerDT1upLX83wtU+bBUOqk/rxS4paPSuI7s5ERj6ah6OdrNgLw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273051;
	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=/HrSuqJwxXeVnnT684UJJ2sTXnU+pGM4qReH9n46ze4=;
	b=ryeov3fujIVD4ZVqEm8M4l+5dXMuTEu0MSdYi2gEbK4oDN74xTlXyrECS7H0kALBpCArup
	6APFsICQ7MKteSWoF3XLwECyBJQC75Jhw24OtPWyzCXdw2K5T/ldEGqYxWyB1lTE1Adi8x
	UXDXhIoMbZtqqJjHw2S/Z0S4liGkgT6fDUBfemrPy9mhEwYBFfUowb/vu4i3FL2gYpkRSE
	zwjs/mZoMbFslNWkFPJHxIjNa+ET75FsU7DSR/3aX/G76aX7sIqRXSS+b4y11QbugfuAnw
	zu3H8I+Mszo9SI9nq3/CaLvjgqS8R2oVya5v716dmOiYFYiXpWjOJiN4iG9Q1g==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2g2kPzzxKH
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:51 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 47b5e
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:51 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 5480024f603d - stable/15 - ufshci: Add a Auto Hibernate quirk to Intel Alder Lake-N
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 5480024f603dab61768dec76fe40dd9fa27f7d2e
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:51 +0000
Message-Id: <6ac4a85b.47b5e.23458dca@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=5480024f603dab61768dec76fe40dd9fa27f7d2e

commit 5480024f603dab61768dec76fe40dd9fa27f7d2e
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2025-12-03 04:06:09 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:49 +0000

    ufshci: Add a Auto Hibernate quirk to Intel Alder Lake-N
    
    Alder Lake-N supports Auto Hibernate, but it does not work.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D54006
    
    (cherry picked from commit 0e60cb8c6a4e9cf943b7360cbd9e9a390f545a10)
---
 sys/dev/ufshci/ufshci_pci.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sys/dev/ufshci/ufshci_pci.c b/sys/dev/ufshci/ufshci_pci.c
index b01d010685ba..606f2a095576 100644
--- a/sys/dev/ufshci/ufshci_pci.c
+++ b/sys/dev/ufshci/ufshci_pci.c
@@ -61,7 +61,8 @@ static struct _pcsid {
 		UFSHCI_QUIRK_WAIT_AFTER_POWER_MODE_CHANGE |
 		UFSHCI_QUIRK_CHANGE_LANE_AND_GEAR_SEPARATELY |
 		UFSHCI_QUIRK_BROKEN_AUTO_HIBERNATE },
-	{ 0x54ff8086, "Intel UFS Host Controller", UFSHCI_REF_CLK_19_2MHz },
+	{ 0x54ff8086, "Intel Alder Lake-N UFS Host Controller",
+	    UFSHCI_REF_CLK_19_2MHz, UFSHCI_QUIRK_BROKEN_AUTO_HIBERNATE },
 	{ 0x00000000, NULL } };
 
 static int

From nobody Tue Oct  6 07:50:50 2026
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 4hzT2h1TRDz6cVy7
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:52 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2g5L7dz4FsH
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:51 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273051;
	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=GZcsqtwfM9yLN5WlObf7Y5pT+xwxAO646AHK3DNqAe8=;
	b=Dhy5w8fVZUjg0XO9gmyIY9MlYKgcZFBt+w2v6iHwN6JgZZKm1XlBTLED8NhvCmc4Gviac+
	ctvmNg1t3GN5iMo1ptJvVTSFjLWWbKYlfUn5SI3/9hUTmNUTIYnVr7WBTgv7sXav/466pY
	kEK1IHtNvCjkSc1EUcKl49kAJl8KkjRydU5NP6pewJuGinSjiWRmx/8NAPz2JzLR2fYTa2
	XLnwW+7JjtMTwDm9cHMgxZ6y5oPIxt4LzRkCKxZbz/wrkOJMbMSgmagZFHO+RH0tSajMM7
	/eDxG288MoCBlglla6+SXZ46eJYsDEAR9D+d/EZsrRbYGPFAKqmpA0Ys/eI7fQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273051;
	b=ImT4F4MLz7cIDi4mphHG9M92yKlAr1UyAWICiaLTNdGeZ1SdMg9sh3umlB1NtnZx7Jjs1I
	ufy2JsW/AIIwpr7238qDYQRLoLKOBJI3gnaDgJcaIcH8Sc31FGM3mI3GrvCY0jdECESNB8
	lkKmH9glbKC0lMZKRGj8KY1D0PISnsSVnmJwVZ5t0Z4VDQabOG8QVxl+KeEpZYZQnEZQ69
	hDY3oaG0cEFqnLI+WjAUfrig6UrrKeJJIZ5zGXVuIDkxIHjkP+df40xWrmKtAb7P/tlvnG
	fYk4AxUulXhoszFBqEeRxxam7fYkk0eunoCTTI2oDQLpYBIrBfP9F8iHgutAdg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273051;
	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=GZcsqtwfM9yLN5WlObf7Y5pT+xwxAO646AHK3DNqAe8=;
	b=H14PvP6f+1SvWbkY6ApkjBsMkE8ektGY72keWwsR4OYfA4P3pf0sLzVUl+IJm2Vxg/s30H
	Iq802bDYPEeksyvNFTBu6qoq0XtDKqE+RQgzOJNEZGUtApDJeeIq10n6Zy6KbvzJp2k+mG
	YCPFVvhHvimO5DzsyJwZff/GoHvfd9ckxZt4EF/Xn3KSMndGz31OFm5ioNPHIfS6Fnh3tv
	MIO4mdfLRTbUC+TZoj9x3E24jD6XrtvVQor+qa4Zoef37p7HTIO+S4ABj1tKnBHV2IwHBS
	EXrFpuKk/qiCQu2ijOCQ14E/CUuNko86KFeu3mNxq1+9YkP0zooP+o8ytNOgHQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2f2FL6zxc1
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:50 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 47f11
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:50 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 810264f0e849 - stable/15 - ufshci: Support UIC Auto Hibernation
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 810264f0e849dd2ac2801eab2f50b2358f472721
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:50 +0000
Message-Id: <6ac4a85a.47f11.265ecbd1@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=810264f0e849dd2ac2801eab2f50b2358f472721

commit 810264f0e849dd2ac2801eab2f50b2358f472721
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2025-12-03 04:06:01 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:49 +0000

    ufshci: Support UIC Auto Hibernation
    
    Automatically transition the UniPro link to Hibernate when it is idle
    for the duration configured by the Auto-Hibernate Idle Timer (AHIT).
    This reduces link power while the device is inactive.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D54004
    
    (cherry picked from commit db8b06468baefb9d9b5db5f91084d85071bfb5cb)
---
 sys/dev/ufshci/ufshci_ctrlr.c   |  4 ++++
 sys/dev/ufshci/ufshci_dev.c     | 27 +++++++++++++++++++++++++++
 sys/dev/ufshci/ufshci_pci.c     |  3 ++-
 sys/dev/ufshci/ufshci_private.h |  9 +++++++++
 sys/dev/ufshci/ufshci_sysctl.c  | 28 ++++++++++++++++++++++++++++
 sys/dev/ufshci/ufshci_uic_cmd.c |  5 +++--
 6 files changed, 73 insertions(+), 3 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index 8c4b88e23587..b51cdbb74f9c 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -92,6 +92,8 @@ ufshci_ctrlr_start(struct ufshci_controller *ctrlr, bool resetting)
 		return;
 	}
 
+	ufshci_dev_init_auto_hibernate(ctrlr);
+
 	/* TODO: Configure Write Protect */
 
 	/* TODO: Configure Background Operations */
@@ -674,5 +676,7 @@ ufshci_ctrlr_resume(struct ufshci_controller *ctrlr, enum power_stype stype)
 		}
 	}
 
+	ufshci_dev_enable_auto_hibernate(ctrlr);
+
 	return (0);
 }
diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index c4a5bda9c79a..38c6de9731a4 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -449,6 +449,33 @@ ufshci_dev_init_uic_power_mode(struct ufshci_controller *ctrlr)
 	return (0);
 }
 
+void
+ufshci_dev_enable_auto_hibernate(struct ufshci_controller *ctrlr)
+{
+	if (!ctrlr->ufs_dev.auto_hibernation_supported)
+		return;
+
+	ufshci_mmio_write_4(ctrlr, ahit, ctrlr->ufs_dev.ahit);
+}
+
+void
+ufshci_dev_init_auto_hibernate(struct ufshci_controller *ctrlr)
+{
+	ctrlr->ufs_dev.auto_hibernation_supported =
+	    UFSHCIV(UFSHCI_CAP_REG_AUTOH8, ctrlr->cap) &&
+	    !(ctrlr->quirks & UFSHCI_QUIRK_BROKEN_AUTO_HIBERNATE);
+
+	if (!ctrlr->ufs_dev.auto_hibernation_supported)
+		return;
+
+	/* The default value for auto hibernation is 150 ms */
+	ctrlr->ufs_dev.ahit = 0;
+	ctrlr->ufs_dev.ahit |= UFSHCIF(UFSHCI_AHIT_REG_AH8ITV, 150);
+	ctrlr->ufs_dev.ahit |= UFSHCIF(UFSHCI_AHIT_REG_TS, 3);
+
+	ufshci_dev_enable_auto_hibernate(ctrlr);
+}
+
 void
 ufshci_dev_init_uic_link_state(struct ufshci_controller *ctrlr)
 {
diff --git a/sys/dev/ufshci/ufshci_pci.c b/sys/dev/ufshci/ufshci_pci.c
index d4ba05e1a37d..b01d010685ba 100644
--- a/sys/dev/ufshci/ufshci_pci.c
+++ b/sys/dev/ufshci/ufshci_pci.c
@@ -59,7 +59,8 @@ static struct _pcsid {
 	    UFSHCI_REF_CLK_19_2MHz,
 	    UFSHCI_QUIRK_LONG_PEER_PA_TACTIVATE |
 		UFSHCI_QUIRK_WAIT_AFTER_POWER_MODE_CHANGE |
-		UFSHCI_QUIRK_CHANGE_LANE_AND_GEAR_SEPARATELY },
+		UFSHCI_QUIRK_CHANGE_LANE_AND_GEAR_SEPARATELY |
+		UFSHCI_QUIRK_BROKEN_AUTO_HIBERNATE },
 	{ 0x54ff8086, "Intel UFS Host Controller", UFSHCI_REF_CLK_19_2MHz },
 	{ 0x00000000, NULL } };
 
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index 14208abe398b..0d67b6ecdabe 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -307,6 +307,10 @@ struct ufshci_device {
 	bool power_mode_supported;
 	enum ufshci_dev_pwr power_mode;
 	enum ufshci_uic_link_state link_state;
+
+	/* Auto Hibernation */
+	bool auto_hibernation_supported;
+	uint32_t ahit;
 };
 
 /*
@@ -328,6 +332,9 @@ struct ufshci_controller {
 	16 /* QEMU does not support Task Management Request */
 #define UFSHCI_QUIRK_SKIP_WELL_KNOWN_LUNS \
 	32 /* QEMU does not support Well known logical units*/
+#define UFSHCI_QUIRK_BROKEN_AUTO_HIBERNATE                                    \
+	64 /* Some controllers have the Auto hibernate feature enabled but it \
+	      does not work. */
 
 	uint32_t ref_clk;
 
@@ -471,6 +478,8 @@ int ufshci_dev_init(struct ufshci_controller *ctrlr);
 int ufshci_dev_reset(struct ufshci_controller *ctrlr);
 int ufshci_dev_init_reference_clock(struct ufshci_controller *ctrlr);
 int ufshci_dev_init_unipro(struct ufshci_controller *ctrlr);
+void ufshci_dev_enable_auto_hibernate(struct ufshci_controller *ctrlr);
+void ufshci_dev_init_auto_hibernate(struct ufshci_controller *ctrlr);
 int ufshci_dev_init_uic_power_mode(struct ufshci_controller *ctrlr);
 void ufshci_dev_init_uic_link_state(struct ufshci_controller *ctrlr);
 int ufshci_dev_init_ufs_power_mode(struct ufshci_controller *ctrlr);
diff --git a/sys/dev/ufshci/ufshci_sysctl.c b/sys/dev/ufshci/ufshci_sysctl.c
index 30b0ccaeed13..495f087f3c50 100644
--- a/sys/dev/ufshci/ufshci_sysctl.c
+++ b/sys/dev/ufshci/ufshci_sysctl.c
@@ -11,6 +11,7 @@
 #include <sys/sysctl.h>
 
 #include "ufshci_private.h"
+#include "ufshci_reg.h"
 
 static int
 ufshci_sysctl_timeout_period(SYSCTL_HANDLER_ARGS)
@@ -106,6 +107,22 @@ ufshci_sysctl_num_failures(SYSCTL_HANDLER_ARGS)
 	return (sysctl_handle_64(oidp, &num_failures, 0, req));
 }
 
+static int
+ufshci_sysctl_ahit(SYSCTL_HANDLER_ARGS)
+{
+	struct ufshci_controller *ctrlr = arg1;
+	int64_t scale, timer;
+	const int64_t scale_factor = 10;
+
+	scale = UFSHCIV(UFSHCI_AHIT_REG_TS, ctrlr->ufs_dev.ahit);
+	timer = UFSHCIV(UFSHCI_AHIT_REG_AH8ITV, ctrlr->ufs_dev.ahit);
+
+	while (scale--)
+		timer *= scale_factor;
+
+	return (sysctl_handle_64(oidp, &timer, 0, req));
+}
+
 static void
 ufshci_sysctl_initialize_queue(struct ufshci_hw_queue *hwq,
     struct sysctl_ctx_list *ctrlr_ctx, struct sysctl_oid *que_tree)
@@ -201,6 +218,17 @@ ufshci_sysctl_initialize_ctrlr(struct ufshci_controller *ctrlr)
 	    CTLFLAG_RD, &dev->power_mode_supported, 0,
 	    "Device power mode support");
 
+	SYSCTL_ADD_BOOL(ctrlr_ctx, ctrlr_list, OID_AUTO,
+	    "auto_hibernation_supported", CTLFLAG_RD,
+	    &dev->auto_hibernation_supported, 0,
+	    "Device auto hibernation support");
+
+	SYSCTL_ADD_PROC(ctrlr_ctx, ctrlr_list, OID_AUTO,
+	    "auto_hibernate_idle_timer_value",
+	    CTLTYPE_S64 | CTLFLAG_RD | CTLFLAG_MPSAFE, ctrlr, 0,
+	    ufshci_sysctl_ahit, "IU",
+	    "Auto-Hibernate Idle Timer Value (in microseconds)");
+
 	SYSCTL_ADD_UINT(ctrlr_ctx, ctrlr_list, OID_AUTO, "power_mode",
 	    CTLFLAG_RD, &dev->power_mode, 0, "Current device power mode");
 
diff --git a/sys/dev/ufshci/ufshci_uic_cmd.c b/sys/dev/ufshci/ufshci_uic_cmd.c
index 29c143cec52c..c6e6afe3f688 100644
--- a/sys/dev/ufshci/ufshci_uic_cmd.c
+++ b/sys/dev/ufshci/ufshci_uic_cmd.c
@@ -196,8 +196,9 @@ ufshci_uic_send_cmd(struct ufshci_controller *ctrlr,
 	config_result_code = ufshci_mmio_read_4(ctrlr, ucmdarg2);
 	if (config_result_code) {
 		ufshci_printf(ctrlr,
-		    "Failed to send UIC command. (config result code = 0x%x)\n",
-		    config_result_code);
+		    "Failed to send UIC command (Opcode: 0x%x"
+		    ", config result code = 0x%x)\n",
+		    uic_cmd->opcode, config_result_code);
 	}
 
 	if (return_value != NULL)

From nobody Tue Oct  6 07:50:52 2026
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 4hzT2j0M7fz6cWDD
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:53 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2h4JJlz4FyY
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:52 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273052;
	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=gm+WH6axDi1T5gOmZz9qCOvED0wfTFTq4naJptSiNto=;
	b=dEaYtnMHwg+2mQTiyXVojJgP7EnZyglfXKZn0OnYKd90H9dCeg6C+GwkSOzb6hqq9RKCj3
	dFQi7X+TFkRivxUWL5QV2r9PED6Sy70hMgu3NA9Utg6nijEiL3JyyGGjKvusoQGgPvzkqE
	Mt7eq6Ohl1w4esxxhHLPa8D7ZoY2lmgz2iq4CdZh4msoIbsqvB1Z6h/TRRVCCKbZ836FHV
	p1cVkT5npre+E6gmTHl0u9csd/hFH7cPKk5Vs9TJq5lGGkdZ/4vcvCAu1AesuztbJnQMGi
	VrVvPpT8EsvbLzMD4tsDB4Zho3QatNIBj/u/Uv65iwWVhcL87cXPypuaLfkS5g==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273052;
	b=mF8JSbwSt1Y3+eTRQLcn4sPcp3cgHOF6lK3sWXuyOAJWl6em12QMeqYfTnDlC5I2D+/rMe
	Pr82ZDzJbtBcGZHBUpEgyDkzdN8pjsz2y/VT0V2w4X1JvWZg3lSP+BQfHq1XxgiCd/sn0r
	v0heoAXT5zjavJXrPlUWLfGvusPqfEtFCu/eY4RpiLNjKP6qV+WEYEdECRMcWqWOKm8uJB
	Zf+O8aekJMGVYM9LfbraxlxLgeC/rka0QUf1lx1CAyTCETGmnYadAlyeXQ0+2OoM9zCPLj
	YzyJ6GUNuFeXjI7XieMuWrZMcM1nLHgfLoqLPxfpmCne9nAH6AUgf8XHfr11xQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273052;
	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=gm+WH6axDi1T5gOmZz9qCOvED0wfTFTq4naJptSiNto=;
	b=KifpmCxhnPmTPCsbvqYUKwTHkDX+cYBY2cDtfYPqGil4Q1jvE5osv39bLqk7nymZwwStuv
	3OOlHEMQPN86XoAX9BLQb1xhzpMXDu9N9bBJWvw7blbQ3xercZagXgPro3gR1XTJWsZEUS
	3hbdZdAkT+LAdhe61syfiBEr74iqElfwDPOfo2Mmhb8fjgemcwugxUXxZIhi9uDGhMjMj7
	U2wtHq6kMSfOwR3VH1sCUU9GrOGyy3dZZDUKt7VRRX8FAQMT+CB/rJoTtY+xW6eRGA786N
	kSr8K0vdH1S2QHvGJcZ8N4S6WmAXGBQZaDX4nhgfTx4fBbkDOkWFSIw6p8nFyA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2h3DBHzxqf
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:52 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 1869b
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:52 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 5e5d927ea373 - stable/15 - ufshci: Fix task management queue num_trackers on failure path
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 5e5d927ea3735c0bc73ef36e7abdc1acb26d8c9f
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:52 +0000
Message-Id: <6ac4a85c.1869b.43e23593@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=5e5d927ea3735c0bc73ef36e7abdc1acb26d8c9f

commit 5e5d927ea3735c0bc73ef36e7abdc1acb26d8c9f
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-01-05 02:35:52 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:50 +0000

    ufshci: Fix task management queue num_trackers on failure path
    
    Fix a kernel panic caused by the task management queue using
    the transfer request queue’s num_entries value.
    
    Sponsored by:           Samsung Electronic
    
    Reviewed by:    imp
    Differential Revision:  https://reviews.freebsd.org/D54243
    
    (cherry picked from commit ef2d7cc11d04728f2b97d2b0188d77be77d5c252)
---
 sys/dev/ufshci/ufshci_ctrlr.c     |  8 ++------
 sys/dev/ufshci/ufshci_private.h   |  2 +-
 sys/dev/ufshci/ufshci_req_queue.c | 14 +++++---------
 3 files changed, 8 insertions(+), 16 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index b51cdbb74f9c..253342fb0cca 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -17,12 +17,8 @@ ufshci_ctrlr_fail(struct ufshci_controller *ctrlr)
 {
 	ctrlr->is_failed = true;
 
-	ufshci_req_queue_fail(ctrlr,
-	    ctrlr->task_mgmt_req_queue.qops.get_hw_queue(
-		&ctrlr->task_mgmt_req_queue));
-	ufshci_req_queue_fail(ctrlr,
-	    ctrlr->transfer_req_queue.qops.get_hw_queue(
-		&ctrlr->transfer_req_queue));
+	ufshci_req_queue_fail(ctrlr, &ctrlr->task_mgmt_req_queue);
+	ufshci_req_queue_fail(ctrlr, &ctrlr->transfer_req_queue);
 }
 
 static void
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index 0d67b6ecdabe..3b33feecfefd 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -513,7 +513,7 @@ int ufshci_utmr_req_queue_enable(struct ufshci_controller *ctrlr);
 void ufshci_utr_req_queue_disable(struct ufshci_controller *ctrlr);
 int ufshci_utr_req_queue_enable(struct ufshci_controller *ctrlr);
 void ufshci_req_queue_fail(struct ufshci_controller *ctrlr,
-    struct ufshci_hw_queue *hwq);
+    struct ufshci_req_queue *req_queue);
 int ufshci_req_queue_submit_request(struct ufshci_req_queue *req_queue,
     struct ufshci_request *req, bool is_admin);
 void ufshci_req_queue_complete_tracker(struct ufshci_tracker *tr);
diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
index df7e4b159278..33008c6b1230 100644
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -199,11 +199,10 @@ ufshci_req_queue_manual_complete_request(struct ufshci_req_queue *req_queue,
 
 void
 ufshci_req_queue_fail(struct ufshci_controller *ctrlr,
-    struct ufshci_hw_queue *hwq)
+    struct ufshci_req_queue *req_queue)
 {
-	struct ufshci_req_queue *req_queue;
+	struct ufshci_hw_queue *hwq = req_queue->qops.get_hw_queue(req_queue);
 	struct ufshci_tracker *tr;
-	struct ufshci_request *req;
 	int i;
 
 	if (!mtx_initialized(&hwq->qlock))
@@ -211,16 +210,13 @@ ufshci_req_queue_fail(struct ufshci_controller *ctrlr,
 
 	mtx_lock(&hwq->qlock);
 
-	req_queue = &ctrlr->transfer_req_queue;
-
-	for (i = 0; i < req_queue->num_entries; i++) {
+	for (i = 0; i < req_queue->num_trackers; i++) {
 		tr = hwq->act_tr[i];
-		req = tr->req;
 
 		if (tr->slot_state == UFSHCI_SLOT_STATE_RESERVED) {
 			mtx_unlock(&hwq->qlock);
-			ufshci_req_queue_manual_complete_request(req_queue, req,
-			    UFSHCI_DESC_ABORTED,
+			ufshci_req_queue_manual_complete_request(req_queue,
+			    tr->req, UFSHCI_DESC_ABORTED,
 			    UFSHCI_RESPONSE_CODE_GENERAL_FAILURE);
 			mtx_lock(&hwq->qlock);
 		} else if (tr->slot_state == UFSHCI_SLOT_STATE_SCHEDULED) {

From nobody Tue Oct  6 07:50:53 2026
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 4hzT2k1yBpz6cW3Y
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:54 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2j69w0z4GBb
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:53 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273053;
	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=BsXDn3CM9CPmcgtCHG9wrxTmELod0R+WzW00+hyY1I4=;
	b=MeFMQcuu1Wvi8al506OzRHGd6MNvSMzJDvRPccgiTUoFO6tEvDZnLyuB80GE+o8nIXcP5h
	l0hkVpj2Wo7tZdnwMoQIlly42TEU2H5+9koP6mUN4IXq6iegrJCq/M9ekKdfTwEctEq6AU
	OrHr7d35AHgEPVvelue1PYZNqIn+OOFP9jjijOxp8Vzg40TgkwfGB5C+RiOylB1tKUhyQB
	3fpFLZHTG8ZHLp74vNo6AvS3IvQlTQg/K/UFnwgB27jLAZnlH4w4+9tQwlNJ/fAC+8JKBR
	JJ3Syzo18Dqcj/FDOJj8G90PxXdQ/ViqFmpsUd+Xs7KoDHoW/6iXOreZKrwzqA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273053;
	b=LOlEsrOSTkpt+Yp06JkXxZtSgbFs1AyHiZX3ZzcId3uRS6CTe7rAW7rvJdCdACj+iRfv8I
	56WezcT95EB6Seqy08yyql1mg46bKXj82TEH84GfDDpYyIeEmgAb5N26amLnHuC0DXE8z/
	oLjPymbs2SXlbIVj9W70m4RzeIZzb7uc79Zo7zckdw+Ebg/Mx9tf+RG6UgvzOBGEz8P8vi
	bhgh4BxyxOQ1Q/4VZebmEFlLd1Z4fKzEYNSy8iGUKmy+r57QQHsif4JtAUVKSsoPw6AFya
	Hw21ghNPP6u4f9TSIvgHXDmBseijGTrksXAn/XnUNtent8IxS0UbOxxynagOnw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273053;
	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=BsXDn3CM9CPmcgtCHG9wrxTmELod0R+WzW00+hyY1I4=;
	b=fzRj8+q4onPQvt7Z7wXKNhryMnoONosgzMOfIimo70uXd6b8/cBuBZek4mexadJ1MI4pZh
	+PR+2ESuI/jp3o9LSL83JkuGJ4RhH7Ij2k+pZVGp2vVFboatVzofrRMijrbOWlABH4vy0M
	0YiPr8xk0eeFPjEiJGVCWEW3i4izNookNbA7qHAm8JKohEJAzVHTJI9GCyfmqscPYKlsAC
	vZ3mS1SceeVpz/TrBLbYMZEw1LkVrVuW4VHbNroUCvWPCxnzL0j1oCICG+6FEoeJxcSKMj
	s+rh2x+ajrQWevrBn4ZQ7lrfLDcwv0z3eF77VgFsyvUq9LUD/6fE39Csg5gxKA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2j41rszwyy
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:53 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18725
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:53 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 873bafa44c0a - stable/15 - ufshci: Enable admin command retry
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 873bafa44c0a0d599bdb4ae0623dbffa20c097a8
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:53 +0000
Message-Id: <6ac4a85d.18725.701753a1@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=873bafa44c0a0d599bdb4ae0623dbffa20c097a8

commit 873bafa44c0a0d599bdb4ae0623dbffa20c097a8
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-01-05 02:36:10 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:50 +0000

    ufshci: Enable admin command retry
    
    Also, This patch fixes an issue where the admin command flag was not
    passed through.
    
    Sponsored by:           Samsung Electronic
    
    Reviewed by:    imp
    Differential Revision:  https://reviews.freebsd.org/D54244
    
    (cherry picked from commit ece6e062ae4b419736c8bb65874ece6be28c2100)
---
 sys/dev/ufshci/ufshci_ctrlr.c     | 17 ++++-------------
 sys/dev/ufshci/ufshci_ctrlr_cmd.c |  6 ++++--
 sys/dev/ufshci/ufshci_dev.c       |  3 ++-
 sys/dev/ufshci/ufshci_private.h   |  6 ++----
 sys/dev/ufshci/ufshci_req_queue.c |  7 +++----
 sys/dev/ufshci/ufshci_sim.c       |  3 ++-
 6 files changed, 17 insertions(+), 25 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index 253342fb0cca..501a1074fa58 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -426,24 +426,15 @@ ufshci_ctrlr_submit_task_mgmt_request(struct ufshci_controller *ctrlr,
     struct ufshci_request *req)
 {
 	return (
-	    ufshci_req_queue_submit_request(&ctrlr->task_mgmt_req_queue, req,
-		/*is_admin*/ false));
+	    ufshci_req_queue_submit_request(&ctrlr->task_mgmt_req_queue, req));
 }
 
 int
-ufshci_ctrlr_submit_admin_request(struct ufshci_controller *ctrlr,
+ufshci_ctrlr_submit_transfer_request(struct ufshci_controller *ctrlr,
     struct ufshci_request *req)
 {
-	return (ufshci_req_queue_submit_request(&ctrlr->transfer_req_queue, req,
-	    /*is_admin*/ true));
-}
-
-int
-ufshci_ctrlr_submit_io_request(struct ufshci_controller *ctrlr,
-    struct ufshci_request *req)
-{
-	return (ufshci_req_queue_submit_request(&ctrlr->transfer_req_queue, req,
-	    /*is_admin*/ false));
+	return (
+	    ufshci_req_queue_submit_request(&ctrlr->transfer_req_queue, req));
 }
 
 int
diff --git a/sys/dev/ufshci/ufshci_ctrlr_cmd.c b/sys/dev/ufshci/ufshci_ctrlr_cmd.c
index 253f31a93c2e..cac01894c062 100644
--- a/sys/dev/ufshci/ufshci_ctrlr_cmd.c
+++ b/sys/dev/ufshci/ufshci_ctrlr_cmd.c
@@ -44,12 +44,13 @@ ufshci_ctrlr_cmd_send_nop(struct ufshci_controller *ctrlr, ufshci_cb_fn_t cb_fn,
 
 	req->request_size = sizeof(struct ufshci_nop_out_upiu);
 	req->response_size = sizeof(struct ufshci_nop_in_upiu);
+	req->is_admin = true;
 
 	upiu = (struct ufshci_nop_out_upiu *)&req->request_upiu;
 	memset(upiu, 0, req->request_size);
 	upiu->header.trans_type = UFSHCI_UPIU_TRANSACTION_CODE_NOP_OUT;
 
-	ufshci_ctrlr_submit_admin_request(ctrlr, req);
+	ufshci_ctrlr_submit_transfer_request(ctrlr, req);
 }
 
 void
@@ -63,6 +64,7 @@ ufshci_ctrlr_cmd_send_query_request(struct ufshci_controller *ctrlr,
 
 	req->request_size = sizeof(struct ufshci_query_request_upiu);
 	req->response_size = sizeof(struct ufshci_query_response_upiu);
+	req->is_admin = true;
 
 	upiu = (struct ufshci_query_request_upiu *)&req->request_upiu;
 	memset(upiu, 0, req->request_size);
@@ -75,5 +77,5 @@ ufshci_ctrlr_cmd_send_query_request(struct ufshci_controller *ctrlr,
 	upiu->value_64 = param.value;
 	upiu->length = param.desc_size;
 
-	ufshci_ctrlr_submit_admin_request(ctrlr, req);
+	ufshci_ctrlr_submit_transfer_request(ctrlr, req);
 }
diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index 38c6de9731a4..406130c537a7 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -33,7 +33,8 @@ ufshci_dev_read_descriptor(struct ufshci_controller *ctrlr,
 	    &status, param);
 	ufshci_completion_poll(&status);
 	if (status.error) {
-		ufshci_printf(ctrlr, "ufshci_dev_read_descriptor failed!\n");
+		ufshci_printf(ctrlr,
+		    "Failed to send Read Descriptor query request!\n");
 		return (ENXIO);
 	}
 
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index 3b33feecfefd..c76483ab60ed 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -465,9 +465,7 @@ void ufshci_ctrlr_poll(struct ufshci_controller *ctrlr);
 
 int ufshci_ctrlr_submit_task_mgmt_request(struct ufshci_controller *ctrlr,
     struct ufshci_request *req);
-int ufshci_ctrlr_submit_admin_request(struct ufshci_controller *ctrlr,
-    struct ufshci_request *req);
-int ufshci_ctrlr_submit_io_request(struct ufshci_controller *ctrlr,
+int ufshci_ctrlr_submit_transfer_request(struct ufshci_controller *ctrlr,
     struct ufshci_request *req);
 int ufshci_ctrlr_send_nop(struct ufshci_controller *ctrlr);
 
@@ -515,7 +513,7 @@ int ufshci_utr_req_queue_enable(struct ufshci_controller *ctrlr);
 void ufshci_req_queue_fail(struct ufshci_controller *ctrlr,
     struct ufshci_req_queue *req_queue);
 int ufshci_req_queue_submit_request(struct ufshci_req_queue *req_queue,
-    struct ufshci_request *req, bool is_admin);
+    struct ufshci_request *req);
 void ufshci_req_queue_complete_tracker(struct ufshci_tracker *tr);
 
 /* Request Single Doorbell Queue */
diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
index 33008c6b1230..4c82b79d0e26 100644
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -268,9 +268,8 @@ ufshci_req_queue_complete_tracker(struct ufshci_tracker *tr)
 	error = ufshci_req_queue_response_is_error(req_queue, ocs,
 	    &cpl.response_upiu);
 
-	/* TODO: Implement retry */
-	// retriable = ufshci_completion_is_retry(cpl);
-	retriable = false;
+	/* Retry for admin commands */
+	retriable = req->is_admin;
 	retry = error && retriable &&
 	    req->retries < req_queue->ctrlr->retry_count;
 	if (retry)
@@ -778,7 +777,7 @@ _ufshci_req_queue_submit_request(struct ufshci_req_queue *req_queue,
 
 int
 ufshci_req_queue_submit_request(struct ufshci_req_queue *req_queue,
-    struct ufshci_request *req, bool is_admin)
+    struct ufshci_request *req)
 {
 	struct ufshci_hw_queue *hwq;
 	uint32_t error;
diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index 1589e7475ad4..bee1fff858ff 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -165,6 +165,7 @@ ufshchi_sim_scsiio(struct cam_sim *sim, union ccb *ccb)
 		data_direction = UFSHCI_DATA_DIRECTION_NO_DATA_TRANSFER;
 	}
 	req->data_direction = data_direction;
+	req->is_admin = false;
 
 	upiu = (struct ufshci_cmd_command_upiu *)&req->request_upiu;
 	memset(upiu, 0, req->request_size);
@@ -191,7 +192,7 @@ ufshchi_sim_scsiio(struct cam_sim *sim, union ccb *ccb)
 	}
 	memcpy(upiu->cdb, cdb, csio->cdb_len);
 
-	error = ufshci_ctrlr_submit_io_request(ctrlr, req);
+	error = ufshci_ctrlr_submit_transfer_request(ctrlr, req);
 	if (error == EBUSY) {
 		ccb->ccb_h.status = CAM_SCSI_BUSY;
 		xpt_done(ccb);

From nobody Tue Oct  6 07:50:54 2026
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 4hzT2l2KbBz6cW1w
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:55 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2k5YZfz4G4r
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:54 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273054;
	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=cLexe1UsXRWK8cHU/44gq7ZToNmvRHU4GJ07AptYk8s=;
	b=BtSEE2gs+ebPcBzLdcDCdsFlbqFsQq9rhfYw76GsIXwUOGUqmwE6kZJb1HzF/O7MLFfot1
	Uee7+ewpci3FmdaXGhCZnGlmLqduUFGpp24cPS9vTbvAVafXql1PyMysJHuyiKMUSm8omw
	JxdHFuR03Uhs7K9Fw5wOPK6rI+OAtUA467PfssarbRp2/3jCMauKjr8vvjZjw00GH3RCAC
	78LgyaSfRboUfyzDkj6vN8c9+SffxEGzB0hyuebhGWH7BxNCbL/88hNw77wTnlAi0lSJ4s
	Oqt3mC/VPQDJpcVrAL4lnkPU7V31+zBDcs0PegNUItKwfr1pdWfRi+uj/4Ov5Q==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273054;
	b=Fgp27AJCXC1y45mhFoI31ASiOX/XatLGCt3OMno1xGRZnn7ng0rKDW7JnBiRB1cAnuQYrP
	XWK+5aoTT5mizZMG19EiYnOpOxWlfzXFc7b/WkRBZfiAKE8RGyQy6QT+NWbC8i58w8YYOu
	53dEnj8sww4YJOhTS8pz++nO6aV7gkPvE9WQyzcpo19jFixqbWEjh9jETuFrrBZkeFckA8
	CraSJbxXB7xqG4FSWMTQgj82Cc8BPFf1n813loKxq0AJtH5sLR36b8R5qyp3S8jEppcJm7
	HnPnEcZxMqnbKH7P7rgIhvIP1Z1nTDgF2NBsSVRCPzqqSs3FsuKtFVgCi4mHPg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273054;
	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=cLexe1UsXRWK8cHU/44gq7ZToNmvRHU4GJ07AptYk8s=;
	b=Jg4LtLnp1xGcoIkYe9vfCm57SWo51QrM2ZHQtNKSqBjugP6mB14QlSQsVbydu2BFS31lin
	yCDqUYscjlciLzeAFXQTsCwNhWPbtbU+gJ3bUc4opw9WqdUvgkcnXGwa1dfazmNQ/kIJ9a
	/CTrcb/delHFzl1+JTAAv56WsFkdlUl/X6ub4mgd5kFe704M5fo49UzO3Ezji/jlVIzFaC
	SONz5uNBbRZ4268zMhb5sQEjW7WQSRp6vNFkANo7GOxwOpkc9BOF/KCMmOBqYyn2utLZAZ
	YPBC0GYuXPVSaUjnONlkWkXHO8uBQW6TRrwwlv1gc/C4xUKrLRhlQeDvzHYRLQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2k4Yv8zxnx
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:54 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 45579
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:54 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 5e2782d26567 - stable/15 - cam/scsi: Restore scsi_start_stop() and add scsi_start_stop_pc()
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 5e2782d26567a4d8d558ca05800855c7fc217e35
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:54 +0000
Message-Id: <6ac4a85e.45579.7f86d894@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=5e2782d26567a4d8d558ca05800855c7fc217e35

commit 5e2782d26567a4d8d558ca05800855c7fc217e35
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-01-26 06:29:28 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:51 +0000

    cam/scsi: Restore scsi_start_stop() and add scsi_start_stop_pc()
    
    Revert the argument change that broke libcam in 8c35de49 and move
    power_condition support to scsi_start_stop_pc().
    
    Reported by:            imp
    Reviewed By:            #cam, imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D54822
    
    (cherry picked from commit 8ef8c6abfadfc9eb0465ce57c6b09ca310415bdd)
---
 sbin/camcontrol/camcontrol.c |  1 -
 sys/cam/cam_periph.c         |  1 -
 sys/cam/scsi/scsi_all.c      | 34 ++++++++++++++++++++++++++++++++++
 sys/cam/scsi/scsi_all.h      |  4 ++++
 sys/cam/scsi/scsi_cd.c       |  2 --
 sys/dev/mpr/mpr_sas_lsi.c    |  1 -
 sys/dev/mps/mps_sas_lsi.c    |  1 -
 sys/dev/ufshci/ufshci_sim.c  |  2 +-
 8 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/sbin/camcontrol/camcontrol.c b/sbin/camcontrol/camcontrol.c
index 73e5a523bd47..7ad177c3e4b6 100644
--- a/sbin/camcontrol/camcontrol.c
+++ b/sbin/camcontrol/camcontrol.c
@@ -1026,7 +1026,6 @@ scsistart(struct cam_device *device, int startstop, int loadeject,
 			/* start/stop */ startstop,
 			/* load_eject */ loadeject,
 			/* immediate */ 0,
-			/* power_condition */ SSS_PC_START_VALID,
 			/* sense_len */ SSD_FULL_SIZE,
 			/* timeout */ timeout ? timeout : 120000);
 
diff --git a/sys/cam/cam_periph.c b/sys/cam/cam_periph.c
index e485ecff8736..730656684e2a 100644
--- a/sys/cam/cam_periph.c
+++ b/sys/cam/cam_periph.c
@@ -1791,7 +1791,6 @@ camperiphscsisenseerror(union ccb *ccb, union ccb **orig,
 					/*start*/TRUE,
 					/*load/eject*/le,
 					/*immediate*/FALSE,
-					/*power_condition*/SSS_PC_START_VALID,
 					SSD_FULL_SIZE,
 					/*timeout*/50000);
 			break;
diff --git a/sys/cam/scsi/scsi_all.c b/sys/cam/scsi/scsi_all.c
index 3b991fc248de..2acf091270a6 100644
--- a/sys/cam/scsi/scsi_all.c
+++ b/sys/cam/scsi/scsi_all.c
@@ -8982,6 +8982,40 @@ scsi_write_buffer(struct ccb_scsiio *csio, uint32_t retries,
 
 void
 scsi_start_stop(struct ccb_scsiio *csio, uint32_t retries,
+		void (*cbfcnp)(struct cam_periph *, union ccb *),
+		uint8_t tag_action, int start, int load_eject,
+		int immediate, uint8_t sense_len, uint32_t timeout)
+{
+	struct scsi_start_stop_unit *scsi_cmd;
+	int extra_flags = 0;
+
+	scsi_cmd = (struct scsi_start_stop_unit *)&csio->cdb_io.cdb_bytes;
+	bzero(scsi_cmd, sizeof(*scsi_cmd));
+	scsi_cmd->opcode = START_STOP_UNIT;
+	if (start != 0) {
+		scsi_cmd->how |= SSS_START;
+		/* it takes a lot of power to start a drive */
+		extra_flags |= CAM_HIGH_POWER;
+	}
+	if (load_eject != 0)
+		scsi_cmd->how |= SSS_LOEJ;
+	if (immediate != 0)
+		scsi_cmd->byte2 |= SSS_IMMED;
+
+	cam_fill_csio(csio,
+		      retries,
+		      cbfcnp,
+		      /*flags*/CAM_DIR_NONE | extra_flags,
+		      tag_action,
+		      /*data_ptr*/NULL,
+		      /*dxfer_len*/0,
+		      sense_len,
+		      sizeof(*scsi_cmd),
+		      timeout);
+}
+
+void
+scsi_start_stop_pc(struct ccb_scsiio *csio, uint32_t retries,
 		void (*cbfcnp)(struct cam_periph *, union ccb *),
 		uint8_t tag_action, int start, int load_eject,
 		int immediate, uint8_t power_condition, uint8_t sense_len,
diff --git a/sys/cam/scsi/scsi_all.h b/sys/cam/scsi/scsi_all.h
index fb3ed8ee4458..0d4354538c2c 100644
--- a/sys/cam/scsi/scsi_all.h
+++ b/sys/cam/scsi/scsi_all.h
@@ -4324,6 +4324,10 @@ void scsi_unmap(struct ccb_scsiio *csio, uint32_t retries,
 		uint8_t sense_len, uint32_t timeout);
 
 void scsi_start_stop(struct ccb_scsiio *csio, uint32_t retries,
+		     void (*cbfcnp)(struct cam_periph *, union ccb *),
+		     uint8_t tag_action, int start, int load_eject,
+		     int immediate, uint8_t sense_len, uint32_t timeout);
+void scsi_start_stop_pc(struct ccb_scsiio *csio, uint32_t retries,
 		     void (*cbfcnp)(struct cam_periph *, union ccb *),
 		     uint8_t tag_action, int start, int load_eject,
 		     int immediate, uint8_t power_condition, uint8_t sense_len,
diff --git a/sys/cam/scsi/scsi_cd.c b/sys/cam/scsi/scsi_cd.c
index be6f1c47512a..1e8dc98d53f4 100644
--- a/sys/cam/scsi/scsi_cd.c
+++ b/sys/cam/scsi/scsi_cd.c
@@ -3416,7 +3416,6 @@ cdstartunit(struct cam_periph *periph, int load)
 			/* start */ TRUE,
 			/* load_eject */ load,
 			/* immediate */ FALSE,
-			/* power_condition */ SSS_PC_START_VALID,
 			/* sense_len */ SSD_FULL_SIZE,
 			/* timeout */ 50000);
 
@@ -3445,7 +3444,6 @@ cdstopunit(struct cam_periph *periph, uint32_t eject)
 			/* start */ FALSE,
 			/* load_eject */ eject,
 			/* immediate */ FALSE,
-			/* power_condition */ SSS_PC_START_VALID,
 			/* sense_len */ SSD_FULL_SIZE,
 			/* timeout */ 50000);
 
diff --git a/sys/dev/mpr/mpr_sas_lsi.c b/sys/dev/mpr/mpr_sas_lsi.c
index 9ba776e49e7a..d9744b1054c2 100644
--- a/sys/dev/mpr/mpr_sas_lsi.c
+++ b/sys/dev/mpr/mpr_sas_lsi.c
@@ -1517,7 +1517,6 @@ mprsas_SSU_to_SATA_devices(struct mpr_softc *sc, int howto)
 			    /*start*/FALSE,
 			    /*load/eject*/0,
 			    /*immediate*/FALSE,
-			    /*power_condition*/SSS_PC_START_VALID,
 			    MPR_SENSE_LEN,
 			    /*timeout*/10000);
 			xpt_action(ccb);
diff --git a/sys/dev/mps/mps_sas_lsi.c b/sys/dev/mps/mps_sas_lsi.c
index 42119b5c0a43..e2d1ef2b013a 100644
--- a/sys/dev/mps/mps_sas_lsi.c
+++ b/sys/dev/mps/mps_sas_lsi.c
@@ -1153,7 +1153,6 @@ mpssas_SSU_to_SATA_devices(struct mps_softc *sc, int howto)
 			    /*start*/FALSE,
 			    /*load/eject*/0,
 			    /*immediate*/FALSE,
-			    /*power_condition*/SSS_PC_START_VALID,
 			    MPS_SENSE_LEN,
 			    /*timeout*/10000);
 			xpt_action(ccb);
diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index bee1fff858ff..404f3e99d1e2 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -494,7 +494,7 @@ ufshci_sim_send_ssu(struct ufshci_controller *ctrlr, bool start,
 		return ENOMEM;
 	}
 
-	scsi_start_stop(&ccb->csio,
+	scsi_start_stop_pc(&ccb->csio,
 	    /*retries*/ 4,
 	    /*cbfcnp*/ NULL,
 	    /*tag_action*/ MSG_SIMPLE_Q_TAG,

From nobody Tue Oct  6 07:50:55 2026
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 4hzT2m16qmz6cW9t
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:56 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2l6vHGz4G07
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:55 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273056;
	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=QIB1QRcanwx0yXHijn7m/2NXEE55o4P8Md9DA0tOlZM=;
	b=TcxFohWlchAjqpSHmRlJjLHegXpfXhNzbALkElusBss4aEZ3ZXaNgqsc4VFIerdmxSaI8o
	XsnEw8fWrjauWBLsYlcc0PK0yjRQ8KT10kwGKZ3izit35Oi3gCfIvJV/hrwsnzziIodaXV
	MCGzSgCNI4ljhydca5Xq6FDMJrFzLzo1So8jx5Ky02TqJAc8biHJebVa/bQAg3e/RfhmTz
	2nKy+Mm0QN8rU+yGzmLsBz2MvtZK+/HAB38wQ4c5tp3kx2+btUaMgv2SUt8VkBGuIjwGDa
	LEo6oOuE1miEQXv8RZ8zYS5AcLUyKGYvd1dXVlp4vZv1g9VoH7u7y1k4QvqnVg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273056;
	b=VoBqfNYHFah6nJiO/WcbUTwOOMPb+arm809anLIh34u84aSBrzEp1jEeKLDjqxyoepDXp3
	bSfBsJnBz3Qw+bxyRIjedEsCxuzUrP32dKfsfarQt1XuYyOV2k/07BWwCcJV/Cxe6ZEfqS
	tjeb8IUU47AlsameEHvjpV5YlM0fVsa1jaTT4/XkzHG5ABWJNrgKrsPtMSr3XCYhnWcv8+
	VISSjxa6GB2ZrRtM7MLjR9F5iVZqTtiAg7+KANzdcq22M1l3/Tt6lvG+Y/Avm9KVp6CM5S
	Aa8bX7Gq2RGHQN4c52Cg84MFmJxu1na2xmW5/iyGDrNu/5gJflsgocR9rkTkDg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273056;
	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=QIB1QRcanwx0yXHijn7m/2NXEE55o4P8Md9DA0tOlZM=;
	b=JsOnXLEm0eLaJxWLX/MjgZxlwA4Dqp0mh6e6+JBJueAF7W5+wDdK0FOv7/bs4oGo76lk2x
	rrXgRvpp385hWuPsVDdmVHS7nPkxTLq9eW74xdJYcjK0xAXt4NIRERX/Qzxl46RU52oPHc
	w9E4QGCV1FaCVy2y64fTPiTbGo/XtYrfCOMX6tOprFtkfqJKAMr4/Ay3t5qdYqf5Zz7d0P
	ju456MYgNXkpXVodywKQEbTpkVUu4GcFYEfyJ4uN6FP0ELvOyJBP87K1f2s84XXbt0K/Dj
	loivJZT/VGSixfkh5hEkHhI0ShnQa9Xbfq3uE/46ofonRHZbabsb7Fp3aASQ5w==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2l5LtWzxqk
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:55 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 185b4
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:55 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: c6c2c22ffe51 - stable/15 - ufshci: Remove UIC error during initialization
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: c6c2c22ffe51d456882e18e1a3c2d8bc0b6e018a
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:55 +0000
Message-Id: <6ac4a85f.185b4.5dcd468f@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=c6c2c22ffe51d456882e18e1a3c2d8bc0b6e018a

commit c6c2c22ffe51d456882e18e1a3c2d8bc0b6e018a
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-02-04 23:53:01 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:51 +0000

    ufshci: Remove UIC error during initialization
    
    This patch removes the UIC error caused by QEMU not supporting certain
    UIC command. Additionally, it removes the unused unipro_version.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D54513
    
    (cherry picked from commit 0f515c0a97489d8d35aca7f5e28c28b22f217dc9)
---
 sys/dev/ufshci/ufshci_dev.c     | 55 +++++++++++++++++------------------------
 sys/dev/ufshci/ufshci_private.h |  3 ---
 2 files changed, 23 insertions(+), 35 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index 406130c537a7..3167945b53b6 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -273,40 +273,31 @@ ufshci_dev_init_unipro(struct ufshci_controller *ctrlr)
 	uint32_t pa_granularity, peer_pa_granularity;
 	uint32_t t_activate, pear_t_activate;
 
-	/*
-	 * Unipro Version:
-	 * - 7~15 = Above 2.0, 6 = 2.0, 5 = 1.8, 4 = 1.61, 3 = 1.6, 2 = 1.41,
-	 * 1 = 1.40, 0 = Reserved
-	 */
-	if (ufshci_uic_send_dme_get(ctrlr, PA_LocalVerInfo,
-		&ctrlr->unipro_version))
-		return (ENXIO);
-	if (ufshci_uic_send_dme_get(ctrlr, PA_RemoteVerInfo,
-		&ctrlr->ufs_dev.unipro_version))
-		return (ENXIO);
-
-	/*
-	 * PA_Granularity: Granularity for PA_TActivate and PA_Hibern8Time
-	 * - 1=1us, 2=4us, 3=8us, 4=16us, 5=32us, 6=100us
-	 */
-	if (ufshci_uic_send_dme_get(ctrlr, PA_Granularity, &pa_granularity))
-		return (ENXIO);
-	if (ufshci_uic_send_dme_peer_get(ctrlr, PA_Granularity,
-		&peer_pa_granularity))
-		return (ENXIO);
+	if (ctrlr->quirks & UFSHCI_QUIRK_LONG_PEER_PA_TACTIVATE) {
+		/*
+		 * PA_Granularity: Granularity for PA_TActivate and
+		 * PA_Hibern8Time
+		 * - 1=1us, 2=4us, 3=8us, 4=16us, 5=32us, 6=100us
+		 */
+		if (ufshci_uic_send_dme_get(ctrlr, PA_Granularity,
+			&pa_granularity))
+			return (ENXIO);
+		if (ufshci_uic_send_dme_peer_get(ctrlr, PA_Granularity,
+			&peer_pa_granularity))
+			return (ENXIO);
 
-	/*
-	 * PA_TActivate: Time to wait before activating a burst in order to
-	 * wake-up peer M-RX
-	 * UniPro automatically sets timing information such as PA_TActivate
-	 * through the PACP_CAP_EXT1_ind command during Link Startup operation.
-	 */
-	if (ufshci_uic_send_dme_get(ctrlr, PA_TActivate, &t_activate))
-		return (ENXIO);
-	if (ufshci_uic_send_dme_peer_get(ctrlr, PA_TActivate, &pear_t_activate))
-		return (ENXIO);
+		/*
+		 * PA_TActivate: Time to wait before activating a burst in order
+		 * to wake-up peer M-RX UniPro automatically sets timing
+		 * information such as PA_TActivate through the
+		 * PACP_CAP_EXT1_ind command during Link Startup operation.
+		 */
+		if (ufshci_uic_send_dme_get(ctrlr, PA_TActivate, &t_activate))
+			return (ENXIO);
+		if (ufshci_uic_send_dme_peer_get(ctrlr, PA_TActivate,
+			&pear_t_activate))
+			return (ENXIO);
 
-	if (ctrlr->quirks & UFSHCI_QUIRK_LONG_PEER_PA_TACTIVATE) {
 		/*
 		 * Intel Lake-field UFSHCI has a quirk. We need to add 200us to
 		 * the PEER's PA_TActivate.
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index c76483ab60ed..de311e659c53 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -292,8 +292,6 @@ struct ufshci_device {
 	struct ufshci_device_descriptor dev_desc;
 	struct ufshci_geometry_descriptor geo_desc;
 
-	uint32_t unipro_version;
-
 	/* WriteBooster */
 	bool is_wb_enabled;
 	bool is_wb_flush_enabled;
@@ -412,7 +410,6 @@ struct ufshci_controller {
 
 	/* UFS Interconnect Layer (UIC) */
 	struct mtx uic_cmd_lock;
-	uint32_t unipro_version;
 	uint8_t hs_gear;
 	uint32_t tx_lanes;
 	uint32_t rx_lanes;

From nobody Tue Oct  6 07:50:56 2026
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 4hzT2n1BXXz6cWDJ
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:57 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2n054xz4Ft5
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:57 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273057;
	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=FFPVmulhC66rP0f4zxor6u/YVi0cac2bFEnNcw6RTZ4=;
	b=VAcXfqRHVpUjY10thFmP2mFm/HjJlBy/DN0jEC/4hkGphtUrkf7wwnyIeJy7NJBHXdi68r
	5aJlvG/gSlWTS77pMIU6GjCO8g3y8dYL4p3xXjbZPmtds2OsIcH8Rax9/omdNRFya0kl48
	F0VOz77Xzp3jUsB1UzmKk8z0wYFKIcn5hjcmYeJ4te5u0EHm7km0EkkwrxIYp/qhF1yjJl
	DKvXJK6qRsrirypFC3XLIKwPHrJUP/dqXpyubeG6/uG0EzeSf1Z8aHaSDBbm7XEcWLwMW9
	jve5L7iqFX5t2svRWwkUExKEFUWlqG52bwnUmQNxBo2fWnZygy22EL3g3VlvZQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273057;
	b=HWm/t4v6i4m3HIpXF0N3vk706m5N6x2ZC3XsSz9WyI8YplvRb33Z6RaeXxJb/8JVd8q0P5
	8H1EY4gJwPH5wxsw58AGAEBrgBmOBpObuVou3Qw0Wq4ll1B/p/uKYI6Sqoa34exWdWDO41
	KeiqAfd4jyDQCSlIRZXUozgVgFa0WHPxWay6+Gug1LEs0NQvT14BAVLCS9z7L2DBFM7lEr
	e5iNWEidATOnU75yQhNWwXT3cnUELeIPx1Ldcdaw3l1aLR6t+KejR0KncCgMRAib7JISMp
	mFXo7FrbgLhq56AvOxOBdrvwa9qa0DpGyCUOZxzGpKkzTVYu33n1bJ+V32x52g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273057;
	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=FFPVmulhC66rP0f4zxor6u/YVi0cac2bFEnNcw6RTZ4=;
	b=WGnew8p2h2UfXXS2OebM2aKuWw2CITJPU4mzkspvSuYa+kdQdPdspqOlPE4CXZCd6xoZN1
	nvlzyurwgfGVIcpr7V/aRqXIXLdxK144MjwiIYLcuCmp/aQITKrn9pzsTNqz0lyOObAOVb
	Y+YH7uX6agVn/kHt/xL7PzJ9LOfDtXwnjCGoxogxXFJqikdhJwH9KwYN0SvwoMlWPsqrJi
	qkV88fKv236BX2z4LsUGdNdGXdDrUaLABarVX/W2MZgBW2OwpcDN2PGYhR1Gcqxa5uUtgp
	WMyY91Oo0WxzvfqcnbNvsfD615xNQAEHGYQzS7EPNpqiuYCCcW1yGRVngsaA4A==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2m66MTzxZ5
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:56 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 473f4
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:56 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 5286fdbc8e97 - stable/15 - ufshci: fix bug in ufshci_req_sdb_enable
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 5286fdbc8e977f1b8cb8ed4153cf01b5648e0dde
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:56 +0000
Message-Id: <6ac4a860.473f4.6cd2648@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=5286fdbc8e977f1b8cb8ed4153cf01b5648e0dde

commit 5286fdbc8e977f1b8cb8ed4153cf01b5648e0dde
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-03-24 05:12:14 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:51 +0000

    ufshci: fix bug in ufshci_req_sdb_enable
    
    When enabling the request queue, safely reset the list base address.
    This was added due to a quirk in the Qualcomm UFS controller during
    the process of activating it.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D55984
    
    (cherry picked from commit c4386988baa2ecdcb482c8ccace183dc643d097c)
---
 sys/dev/ufshci/ufshci_req_sdb.c | 40 ++++++++++++++++++++++++++++++++++++----
 1 file changed, 36 insertions(+), 4 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_req_sdb.c b/sys/dev/ufshci/ufshci_req_sdb.c
index ca47aa159c5b..54542f48b32c 100644
--- a/sys/dev/ufshci/ufshci_req_sdb.c
+++ b/sys/dev/ufshci/ufshci_req_sdb.c
@@ -374,34 +374,63 @@ ufshci_req_sdb_enable(struct ufshci_controller *ctrlr,
     struct ufshci_req_queue *req_queue)
 {
 	struct ufshci_hw_queue *hwq = &req_queue->hwq[UFSHCI_SDB_Q];
+	int error = 0;
+
+	mtx_lock(&hwq->recovery_lock);
+	mtx_lock(&hwq->qlock);
 
 	if (req_queue->is_task_mgmt) {
 		uint32_t hcs, utmrldbr, utmrlrsr;
+		uint32_t utmrlba, utmrlbau;
+
+		/*
+		 * Some controllers require re-enabling. When a controller is
+		 * re-enabled, the utmrlba registers are initialized, and these
+		 * must be reconfigured upon re-enabling.
+		 */
+		utmrlba = hwq->req_queue_addr & 0xffffffff;
+		utmrlbau = hwq->req_queue_addr >> 32;
+		ufshci_mmio_write_4(ctrlr, utmrlba, utmrlba);
+		ufshci_mmio_write_4(ctrlr, utmrlbau, utmrlbau);
 
 		hcs = ufshci_mmio_read_4(ctrlr, hcs);
 		if (!(hcs & UFSHCIM(UFSHCI_HCS_REG_UTMRLRDY))) {
 			ufshci_printf(ctrlr,
 			    "UTP task management request list is not ready\n");
-			return (ENXIO);
+			error = ENXIO;
+			goto out;
 		}
 
 		utmrldbr = ufshci_mmio_read_4(ctrlr, utmrldbr);
 		if (utmrldbr != 0) {
 			ufshci_printf(ctrlr,
 			    "UTP task management request list door bell is not ready\n");
-			return (ENXIO);
+			error = ENXIO;
+			goto out;
 		}
 
 		utmrlrsr = UFSHCIM(UFSHCI_UTMRLRSR_REG_UTMRLRSR);
 		ufshci_mmio_write_4(ctrlr, utmrlrsr, utmrlrsr);
 	} else {
 		uint32_t hcs, utrldbr, utrlcnr, utrlrsr;
+		uint32_t utrlba, utrlbau;
+
+		/*
+		 * Some controllers require re-enabling. When a controller is
+		 * re-enabled, the utrlba registers are initialized, and these
+		 * must be reconfigured upon re-enabling.
+		 */
+		utrlba = hwq->req_queue_addr & 0xffffffff;
+		utrlbau = hwq->req_queue_addr >> 32;
+		ufshci_mmio_write_4(ctrlr, utrlba, utrlba);
+		ufshci_mmio_write_4(ctrlr, utrlbau, utrlbau);
 
 		hcs = ufshci_mmio_read_4(ctrlr, hcs);
 		if (!(hcs & UFSHCIM(UFSHCI_HCS_REG_UTRLRDY))) {
 			ufshci_printf(ctrlr,
 			    "UTP transfer request list is not ready\n");
-			return (ENXIO);
+			error = ENXIO;
+			goto out;
 		}
 
 		utrldbr = ufshci_mmio_read_4(ctrlr, utrldbr);
@@ -434,7 +463,10 @@ ufshci_req_sdb_enable(struct ufshci_controller *ctrlr,
 
 	hwq->recovery_state = RECOVERY_NONE;
 
-	return (0);
+out:
+	mtx_unlock(&hwq->qlock);
+	mtx_unlock(&hwq->recovery_lock);
+	return (error);
 }
 
 int

From nobody Tue Oct  6 07:50:57 2026
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 4hzT2p25qbz6cW3j
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:58 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2p0l6qz4G7J
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:58 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273058;
	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=S3Uws8OhZ7bPIElYg9sr1WrRrE6mupCem7ZEHt8y08I=;
	b=MLHH40pUl9zNCltGk0Fs7ynwYVATnEpI2fTROy4nGdb43J9R2OuRgKwfxlcwHynFJnTiml
	Ac+7f04O5diyrgEopxG2sctiRAgf5ccjdXa7RdD5a0viXZEwgoFytRRCJGqXhp9lIkuB1V
	s3DQWtYl6Ji3q0/ppiG0P3SLwfXlUeONd9oULbivoXJ9r9FsbUBTNX4P2VuIKh8KWqAuK7
	uSfRAx6nlrYHWoeMdlmCq6zyOJCFgNzNv33UAPqfiqn2NKEDFt70/3CFRwat/tzcXFKXYn
	Pn7mo+rF4iTL7HWd+sdMiJtWMEI5Vkbiul764kiAR9f4gV0QkvdoaP+3rIFJng==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273058;
	b=MaUAckjXOFGdV62D5Te09ZtvNqj2dnA5v4hu0PanhJ2cCGBgFTM8JwmqqqlDgV394eELeE
	LrqZ+DIeoysm8IYGQfrpd5Wnd0loapppxVH7w0N0W6TdHEzGqV+/fdic/mBtS6rgSb1DEy
	Nnow1n7VXEqU/oKFClRS2UbmQr9/iLT3cInNApQ6sWXCAflbwF3tDzWpJ+nubTADrnJD8c
	Z+FQ5FaiK/bzxq0mObhVIfGrtJGzMyN3xfawF7c2XmFG9rBTeBojqqEOHZ34aWg7HmTS0m
	IoGi32h0I88ztEqFqBzUOBp4hGGRxSC7jz2yeUJLk6a2w8pWMnDmkQghfceRqg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273058;
	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=S3Uws8OhZ7bPIElYg9sr1WrRrE6mupCem7ZEHt8y08I=;
	b=F3q/hn+oSZN2AmUnRMW73LGoIplFTx/LXTOeZknr7XT5NO3qHC/Wku9STc7WTBWI3nzCy0
	MqHMGht2iIcsayVvVw3rOEXiGVK1BlaYeV7yNiTmhfRR4CaiSuN0IzeC0rV1o51Rg8R1Xb
	NuokxkmLLlaKkh0Z06lJxyiLxHqkyjn4rRaqP/uJ0KjiTgkteDEBUv2lzSdeCV7bbgv3w7
	pW6nkB4dx07At3i9rnN031MCCyIF6shVVidC7EI+miQi6PKoqYHD3/VTg2VB5bwsDBYBPe
	kTjNbPP9FuRV1XJ+ErKp+yiM53zVdLFTYLh398ps9ub3D3p/R6XyulowxwPDQA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2n6wC8zxKK
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:57 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 19044
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:57 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 03ff40e2c183 - stable/15 - ufshci: add uic powermode parameter to sysctl
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 03ff40e2c1838571668a7bedd716b9632976e680
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:57 +0000
Message-Id: <6ac4a861.19044.53ad9c40@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=03ff40e2c1838571668a7bedd716b9632976e680

commit 03ff40e2c1838571668a7bedd716b9632976e680
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-03-24 05:14:04 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:52 +0000

    ufshci: add uic powermode parameter to sysctl
    
    Adds parameters related to the performance of the UFS device.
    Also update man page for the missing sysctl entries.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D55985
    
    (cherry picked from commit 085028463fa92b28939c87d0a14337fc14f394a0)
---
 share/man/man4/ufshci.4         | 34 +++++++++++++++++++++++++++++++++-
 sys/dev/ufshci/ufshci_dev.c     | 12 +++++++-----
 sys/dev/ufshci/ufshci_pci.c     |  3 +--
 sys/dev/ufshci/ufshci_private.h |  3 ++-
 sys/dev/ufshci/ufshci_sysctl.c  | 35 ++++++++++++++++++++++++++++++-----
 5 files changed, 73 insertions(+), 14 deletions(-)

diff --git a/share/man/man4/ufshci.4 b/share/man/man4/ufshci.4
index d722c9902b98..f9de9b39a449 100644
--- a/share/man/man4/ufshci.4
+++ b/share/man/man4/ufshci.4
@@ -124,9 +124,41 @@ nodes are currently implemented:
 (R) Host controller minor version.
 .It Va dev.ufshci.0.major_version
 (R) Host controller major version.
+.It Va dev.ufshci.0.wb_enabled
+(R) WriteBooster enable/disable.
+.It Va dev.ufshci.0.wb_flush_enabled
+(R) WriteBooster flush enable/disable.
+.It Va dev.ufshci.0.wb_buffer_type
+(R) WriteBooster type.
+.It Va dev.ufshci.0.wb_buffer_size_mb
+(R) WriteBooster buffer size in MB.
+.It Va dev.ufshci.0.wb_user_space_config_option
+(R) WriteBooster preserve user space mode.
+.It Va dev.ufshci.0.auto_hibernation_supported
+(R) Device auto hibernation support.
+.It Va dev.ufshci.0.auto_hibernate_idle_timer_value
+(R) Auto-Hibernate Idle Timer Value (in microseconds).
+.It Va dev.ufshci.0.power_mode_supported
+(R) Device power mode support.
+.It Va dev.ufshci.0.power_mode
+(R) Current device power mode.
+.It Va dev.ufshci.0.tx_rx_power_mode
+(R) Current TX/RX PA_PWRMode value.
+.It Va dev.ufshci.0.max_tx_lanes
+(R) Maximum available TX data lanes.
+.It Va dev.ufshci.0.max_rx_lanes
+(R) Maximum available RX data lanes.
+.It Va dev.ufshci.0.tx_lanes
+(R) Active TX data lanes.
+.It Va dev.ufshci.0.rx_lanes
+(R) Active RX data lanes.
+.It Va dev.ufshci.0.max_rx_hs_gear
+(R) Maximum available RX HS gear.
+.It Va dev.ufshci.0.hs_gear
+(R) Active HS gear.
 .It Va dev.ufshci.0.utmrq.num_failures
 (R) Number of failed UTP task-management requests.
-.It Va dev.ufshci.0.utmrq.ioq.num_retries
+.It Va dev.ufshci.0.utmrq.num_retries
 (R) Number of retried UTP task-management requests.
 .It Va dev.ufshci.0.utmrq.num_intr_handler_calls
 (R) Number of interrupt handler calls caused by UTP task-management requests.
diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index 3167945b53b6..0fedbca9a90e 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -325,7 +325,7 @@ ufshci_dev_init_uic_power_mode(struct ufshci_controller *ctrlr)
 	 */
 	const uint32_t fast_mode = 1;
 	const uint32_t rx_bit_shift = 4;
-	uint32_t power_mode, peer_granularity;
+	uint32_t peer_granularity;
 
 	/* Update lanes with available TX/RX lanes */
 	if (ufshci_uic_send_dme_get(ctrlr, PA_AvailTxDataLanes,
@@ -352,9 +352,11 @@ ufshci_dev_init_uic_power_mode(struct ufshci_controller *ctrlr)
 
 	if (ctrlr->quirks & UFSHCI_QUIRK_CHANGE_LANE_AND_GEAR_SEPARATELY) {
 		/* Before changing gears, first change the number of lanes. */
-		if (ufshci_uic_send_dme_get(ctrlr, PA_PWRMode, &power_mode))
+		if (ufshci_uic_send_dme_get(ctrlr, PA_PWRMode,
+			&ctrlr->tx_rx_power_mode))
 			return (ENXIO);
-		if (ufshci_uic_send_dme_set(ctrlr, PA_PWRMode, power_mode))
+		if (ufshci_uic_send_dme_set(ctrlr, PA_PWRMode,
+			ctrlr->tx_rx_power_mode))
 			return (ENXIO);
 
 		/* Wait for power mode changed. */
@@ -415,8 +417,8 @@ ufshci_dev_init_uic_power_mode(struct ufshci_controller *ctrlr)
 		return (ENXIO);
 
 	/* Set TX/RX PWRMode */
-	power_mode = (fast_mode << rx_bit_shift) | fast_mode;
-	if (ufshci_uic_send_dme_set(ctrlr, PA_PWRMode, power_mode))
+	ctrlr->tx_rx_power_mode = (fast_mode << rx_bit_shift) | fast_mode;
+	if (ufshci_uic_send_dme_set(ctrlr, PA_PWRMode, ctrlr->tx_rx_power_mode))
 		return (ENXIO);
 
 	/* Wait for power mode changed. */
diff --git a/sys/dev/ufshci/ufshci_pci.c b/sys/dev/ufshci/ufshci_pci.c
index 606f2a095576..b6b8124bc3a6 100644
--- a/sys/dev/ufshci/ufshci_pci.c
+++ b/sys/dev/ufshci/ufshci_pci.c
@@ -34,8 +34,7 @@ static device_method_t ufshci_pci_methods[] = {
 	DEVMETHOD(device_attach, ufshci_pci_attach),
 	DEVMETHOD(device_detach, ufshci_pci_detach),
 	DEVMETHOD(device_suspend, ufshci_pci_suspend),
-	DEVMETHOD(device_resume, ufshci_pci_resume),
-	DEVMETHOD_END
+	DEVMETHOD(device_resume, ufshci_pci_resume), DEVMETHOD_END
 };
 
 static driver_t ufshci_pci_driver = {
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index de311e659c53..fb57d67d8362 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -410,7 +410,8 @@ struct ufshci_controller {
 
 	/* UFS Interconnect Layer (UIC) */
 	struct mtx uic_cmd_lock;
-	uint8_t hs_gear;
+	uint32_t tx_rx_power_mode;
+	uint32_t hs_gear;
 	uint32_t tx_lanes;
 	uint32_t rx_lanes;
 	uint32_t max_rx_hs_gear;
diff --git a/sys/dev/ufshci/ufshci_sysctl.c b/sys/dev/ufshci/ufshci_sysctl.c
index 495f087f3c50..a113e951798e 100644
--- a/sys/dev/ufshci/ufshci_sysctl.c
+++ b/sys/dev/ufshci/ufshci_sysctl.c
@@ -193,7 +193,7 @@ ufshci_sysctl_initialize_ctrlr(struct ufshci_controller *ctrlr)
 	    CTLFLAG_RD, &ctrlr->num_io_queues, 0, "Number of I/O queue pairs");
 
 	SYSCTL_ADD_UINT(ctrlr_ctx, ctrlr_list, OID_AUTO, "cap", CTLFLAG_RD,
-	    &ctrlr->cap, 0, "Number of I/O queue pairs");
+	    &ctrlr->cap, 0, "Host controller capabilities register value");
 
 	SYSCTL_ADD_BOOL(ctrlr_ctx, ctrlr_list, OID_AUTO, "wb_enabled",
 	    CTLFLAG_RD, &dev->is_wb_enabled, 0, "WriteBooster enable/disable");
@@ -214,10 +214,6 @@ ufshci_sysctl_initialize_ctrlr(struct ufshci_controller *ctrlr)
 	    &dev->wb_user_space_config_option, 0,
 	    "WriteBooster preserve user space mode");
 
-	SYSCTL_ADD_BOOL(ctrlr_ctx, ctrlr_list, OID_AUTO, "power_mode_supported",
-	    CTLFLAG_RD, &dev->power_mode_supported, 0,
-	    "Device power mode support");
-
 	SYSCTL_ADD_BOOL(ctrlr_ctx, ctrlr_list, OID_AUTO,
 	    "auto_hibernation_supported", CTLFLAG_RD,
 	    &dev->auto_hibernation_supported, 0,
@@ -229,9 +225,38 @@ ufshci_sysctl_initialize_ctrlr(struct ufshci_controller *ctrlr)
 	    ufshci_sysctl_ahit, "IU",
 	    "Auto-Hibernate Idle Timer Value (in microseconds)");
 
+	SYSCTL_ADD_BOOL(ctrlr_ctx, ctrlr_list, OID_AUTO, "power_mode_supported",
+	    CTLFLAG_RD, &dev->power_mode_supported, 0,
+	    "Device power mode support");
+
 	SYSCTL_ADD_UINT(ctrlr_ctx, ctrlr_list, OID_AUTO, "power_mode",
 	    CTLFLAG_RD, &dev->power_mode, 0, "Current device power mode");
 
+	SYSCTL_ADD_UINT(ctrlr_ctx, ctrlr_list, OID_AUTO, "tx_rx_power_mode",
+	    CTLFLAG_RD, &ctrlr->tx_rx_power_mode, 0,
+	    "Current TX/RX PA_PWRMode value");
+
+	SYSCTL_ADD_UINT(ctrlr_ctx, ctrlr_list, OID_AUTO, "max_tx_lanes",
+	    CTLFLAG_RD, &ctrlr->max_tx_lanes, 0,
+	    "Maximum available TX data lanes");
+
+	SYSCTL_ADD_UINT(ctrlr_ctx, ctrlr_list, OID_AUTO, "max_rx_lanes",
+	    CTLFLAG_RD, &ctrlr->max_rx_lanes, 0,
+	    "Maximum available RX data lanes");
+
+	SYSCTL_ADD_UINT(ctrlr_ctx, ctrlr_list, OID_AUTO, "tx_lanes", CTLFLAG_RD,
+	    &ctrlr->tx_lanes, 0, "Active TX data lanes");
+
+	SYSCTL_ADD_UINT(ctrlr_ctx, ctrlr_list, OID_AUTO, "rx_lanes", CTLFLAG_RD,
+	    &ctrlr->rx_lanes, 0, "Active RX data lanes");
+
+	SYSCTL_ADD_UINT(ctrlr_ctx, ctrlr_list, OID_AUTO, "max_rx_hs_gear",
+	    CTLFLAG_RD, &ctrlr->max_rx_hs_gear, 0,
+	    "Maximum available RX HS gear");
+
+	SYSCTL_ADD_UINT(ctrlr_ctx, ctrlr_list, OID_AUTO, "hs_gear", CTLFLAG_RD,
+	    &ctrlr->hs_gear, 0, "Active HS gear");
+
 	SYSCTL_ADD_PROC(ctrlr_ctx, ctrlr_list, OID_AUTO, "timeout_period",
 	    CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, &ctrlr->timeout_period,
 	    0, ufshci_sysctl_timeout_period, "IU",

From nobody Tue Oct  6 07:50:59 2026
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 4hzT2q3lQ0z6cWB8
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:50:59 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2q1b2qz4GCX
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:59 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273059;
	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=LsbN71ob+vVMO810lnh6iu2ldPoiVsxnxO7pK3Xg/vQ=;
	b=fVGW2ujxM64PHOFW32iEBu9AkY/Ls7WFqc7wPOV3064pl/v/XtHQu488XHjUpRacG4EG5r
	aCHDYzG1qcGiqSVJjYTqvGk2VCiHsz1dZXFqjOHGyz+CtreveqNRc2fpF0O1W/x+HGi8t/
	kI+EYAN6A7pGbnc5pa8SVhtnAr3MQ1NonHVVZ+lH9IQKk2hP0YErJRApQl6XsPM3El7xYy
	UMtUHDFCpkKy5lDIlX3pmFrHeLCWP67+1B8++ccZCu8Yuvalu5i6CNOjK+xzadraDBpDH0
	+V/hAXKoxUQVCSryhrtJJUXkZwXCjL3fWMFr7UfAZAsIh0GZOdpl3mYx29S1KQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273059;
	b=y32wynSp0m/p8/KWga+paLv8B7pMtGBs/6npqBVhbREsRt4163qCVDz3BGbHOo08IyGcYi
	3sS1kodWkpS0Yf2H6ehaHqggaxwz+DAjLtsqp88eSDASN03HcsEgMCTOfEnCbRGnj8UmDj
	ZuGf5iA9HV/RaiWrHbVI61vW5AxMYPryFR9PKGyC9p+GDXf6r70/2hBGMXafn1zDOYUbFU
	Zg2IExWln0LIuyRbR112bWkWOPlcPC5PjA6mAPHHUj7Ka1HepxtUjYzgtAx8rofKDAOVwE
	IIcq1IpK9fdeMmePo29V0bo7TCJH5YbcuUQyND7bhSnO6qnAvSw1u5/JNtInPQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273059;
	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=LsbN71ob+vVMO810lnh6iu2ldPoiVsxnxO7pK3Xg/vQ=;
	b=srNpcUW8iAqHXVxh/wRLVK/hjyP17whsjk7MMSYTyrGvyuY+l6J+DQ/ZzqmZw4ETKfA5cC
	X6XlQpfbGARgJ+/OHvmLxoTDBQcHcBCXTie80arxNsB2KVbS7BpLLIialVP2aL3QorJkX/
	c/0pRN8vVlrMi9XyNhUYT6YD7eeFAqdw/LnUxoNDcvZhGao6NEfKMq+VCdhcXPQitPGzk3
	mFnGDVzjj5rMaXVzo6sQVqjZ9e1n6on+yG+B/3nEKsvwvT+oKXunR0xT721/yYeJOXFL+o
	S1abaYTvII82HprgN4kVO99OSK8Yg7vij4vMrn/JT9SWezPd7zQVjKCbglvzNg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2q0btMzxp2
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:50:59 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18e02
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:50:59 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: c4035bfbf17e - stable/15 - ufshci: Support ACPI
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: c4035bfbf17e2fd4f42b4562f5cec5df4815635f
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:50:59 +0000
Message-Id: <6ac4a863.18e02.2d8b72d9@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=c4035bfbf17e2fd4f42b4562f5cec5df4815635f

commit c4035bfbf17e2fd4f42b4562f5cec5df4815635f
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-03-24 05:16:26 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:52 +0000

    ufshci: Support ACPI
    
    Supports UFS host controller attachment via ACPI. Tested on the
    Samsung Galaxy Book 4 Edge using Qualcomm Snapdragon X Elite.
    Additionally, a quirk related to power mode change has been added.
    
    For reference, it doesn't reach maximum speed yet. I plan to improve
    it later.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D55986
    
    (cherry picked from commit e2083e8d3a01cac739b38521abc72620d3810aba)
---
 sys/conf/files                  |   3 +-
 sys/dev/ufshci/ufshci_acpi.c    | 248 ++++++++++++++++++++++++++++++++++++++++
 sys/dev/ufshci/ufshci_ctrlr.c   |  71 ++++++++++--
 sys/dev/ufshci/ufshci_private.h |  12 +-
 sys/modules/ufshci/Makefile     |   3 +
 5 files changed, 324 insertions(+), 13 deletions(-)

diff --git a/sys/conf/files b/sys/conf/files
index 0d8a705aab2b..b64b0c1355fa 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -3288,10 +3288,11 @@ dev/uart/uart_tty.c		optional uart
 # Universal Flash Storage Host Controller Interface drivers
 #
 dev/ufshci/ufshci.c		optional ufshci
+dev/ufshci/ufshci_acpi.c	optional ufshci acpi
 dev/ufshci/ufshci_ctrlr.c	optional ufshci
 dev/ufshci/ufshci_ctrlr_cmd.c	optional ufshci
 dev/ufshci/ufshci_dev.c		optional ufshci
-dev/ufshci/ufshci_pci.c		optional ufshci
+dev/ufshci/ufshci_pci.c		optional ufshci pci
 dev/ufshci/ufshci_req_queue.c	optional ufshci
 dev/ufshci/ufshci_req_sdb.c	optional ufshci
 dev/ufshci/ufshci_sim.c		optional ufshci
diff --git a/sys/dev/ufshci/ufshci_acpi.c b/sys/dev/ufshci/ufshci_acpi.c
new file mode 100644
index 000000000000..94da0d3cb411
--- /dev/null
+++ b/sys/dev/ufshci/ufshci_acpi.c
@@ -0,0 +1,248 @@
+/*-
+ * Copyright (c) 2026, Samsung Electronics Co., Ltd.
+ * Written by Jaeyoon Choi
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/buf.h>
+#include <sys/bus.h>
+#include <sys/conf.h>
+#include <sys/proc.h>
+#include <sys/smp.h>
+
+#include <vm/vm.h>
+
+#include <contrib/dev/acpica/include/acpi.h>
+
+#include <dev/acpica/acpivar.h>
+
+#include "ufshci_private.h"
+
+static int ufshci_acpi_probe(device_t);
+static int ufshci_acpi_attach(device_t);
+static int ufshci_acpi_detach(device_t);
+static int ufshci_acpi_suspend(device_t);
+static int ufshci_acpi_resume(device_t);
+
+static device_method_t ufshci_acpi_methods[] = {
+	/* Device interface */
+	DEVMETHOD(device_probe, ufshci_acpi_probe),
+	DEVMETHOD(device_attach, ufshci_acpi_attach),
+	DEVMETHOD(device_detach, ufshci_acpi_detach),
+	DEVMETHOD(device_suspend, ufshci_acpi_suspend),
+	DEVMETHOD(device_resume, ufshci_acpi_resume), { 0, 0 }
+};
+
+static driver_t ufshci_acpi_driver = {
+	"ufshci",
+	ufshci_acpi_methods,
+	sizeof(struct ufshci_controller),
+};
+
+DRIVER_MODULE(ufshci, acpi, ufshci_acpi_driver, 0, 0);
+MODULE_DEPEND(ufshci, acpi, 1, 1, 1);
+
+static struct ufshci_acpi_device {
+	const char *hid;
+	const char *desc;
+	uint32_t ref_clk;
+	uint32_t quirks;
+} ufshci_acpi_devices[] = {
+	{ "QCOM24A5", "Qualcomm Snapdragon X Elite UFS Host Controller",
+	    UFSHCI_REF_CLK_19_2MHz,
+	    UFSHCI_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH |
+			UFSHCI_QUIRK_BROKEN_LSDBS_MCQS_CAP },
+	{ 0x00000000, NULL, 0, 0 }
+};
+
+static char *ufshci_acpi_ids[] = { "QCOM24A5", NULL };
+
+static const struct ufshci_acpi_device *
+ufshci_acpi_find_device(device_t dev)
+{
+	char *hid;
+	int i;
+	int rv;
+
+	rv = ACPI_ID_PROBE(device_get_parent(dev), dev, ufshci_acpi_ids, &hid);
+	if (rv > 0)
+		return (NULL);
+
+	for (i = 0; ufshci_acpi_devices[i].hid != NULL; i++) {
+		if (strcmp(ufshci_acpi_devices[i].hid, hid) != 0)
+			continue;
+		return (&ufshci_acpi_devices[i]);
+	}
+
+	return (NULL);
+}
+
+static int
+ufshci_acpi_probe(device_t dev)
+{
+	struct ufshci_controller *ctrlr = device_get_softc(dev);
+	const struct ufshci_acpi_device *acpi_dev;
+
+	acpi_dev = ufshci_acpi_find_device(dev);
+	if (acpi_dev == NULL)
+		return (ENXIO);
+
+	if (acpi_dev->hid) {
+		ctrlr->quirks = acpi_dev->quirks;
+		ctrlr->ref_clk = acpi_dev->ref_clk;
+	}
+
+	if (acpi_dev->desc) {
+		device_set_desc(dev, acpi_dev->desc);
+		return (BUS_PROBE_DEFAULT);
+	}
+
+	return (ENXIO);
+}
+
+static int
+ufshci_acpi_allocate_memory(struct ufshci_controller *ctrlr)
+{
+	ctrlr->resource_id = 0;
+	ctrlr->resource = bus_alloc_resource_any(ctrlr->dev, SYS_RES_MEMORY,
+	    &ctrlr->resource_id, RF_ACTIVE);
+
+	if (ctrlr->resource == NULL) {
+		ufshci_printf(ctrlr, "unable to allocate acpi resource\n");
+		return (ENOMEM);
+	}
+
+	ctrlr->bus_tag = rman_get_bustag(ctrlr->resource);
+	ctrlr->bus_handle = rman_get_bushandle(ctrlr->resource);
+	ctrlr->regs = (struct ufshci_registers *)ctrlr->bus_handle;
+
+	return (0);
+}
+
+static int
+ufshci_acpi_setup_shared(struct ufshci_controller *ctrlr)
+{
+	int error;
+
+	ctrlr->num_io_queues = 1;
+	ctrlr->rid = 0;
+	ctrlr->res = bus_alloc_resource_any(ctrlr->dev, SYS_RES_IRQ,
+	    &ctrlr->rid, RF_SHAREABLE | RF_ACTIVE);
+	if (ctrlr->res == NULL) {
+		ufshci_printf(ctrlr, "unable to allocate shared interrupt\n");
+		return (ENOMEM);
+	}
+
+	error = bus_setup_intr(ctrlr->dev, ctrlr->res,
+	    INTR_TYPE_MISC | INTR_MPSAFE, NULL, ufshci_ctrlr_shared_handler,
+	    ctrlr, &ctrlr->tag);
+	if (error) {
+		ufshci_printf(ctrlr, "unable to setup shared interrupt\n");
+		return (error);
+	}
+
+	return (0);
+}
+
+static int
+ufshci_acpi_setup_interrupts(struct ufshci_controller *ctrlr)
+{
+	int num_io_queues, per_cpu_io_queues, min_cpus_per_ioq;
+
+	/*
+	 * TODO: Need to implement MCQ(Multi Circular Queue)
+	 * Example: num_io_queues = mp_ncpus;
+	 */
+	num_io_queues = 1;
+	TUNABLE_INT_FETCH("hw.ufshci.num_io_queues", &num_io_queues);
+	if (num_io_queues < 1 || num_io_queues > mp_ncpus)
+		num_io_queues = mp_ncpus;
+
+	per_cpu_io_queues = 1;
+	TUNABLE_INT_FETCH("hw.ufshci.per_cpu_io_queues", &per_cpu_io_queues);
+	if (per_cpu_io_queues == 0)
+		num_io_queues = 1;
+
+	min_cpus_per_ioq = smp_threads_per_core;
+	TUNABLE_INT_FETCH("hw.ufshci.min_cpus_per_ioq", &min_cpus_per_ioq);
+	if (min_cpus_per_ioq > 1) {
+		num_io_queues = min(num_io_queues,
+		    max(1, mp_ncpus / min_cpus_per_ioq));
+	}
+
+	if (num_io_queues > vm_ndomains)
+		num_io_queues -= num_io_queues % vm_ndomains;
+
+	ctrlr->num_io_queues = num_io_queues;
+	return (ufshci_acpi_setup_shared(ctrlr));
+}
+
+static int
+ufshci_acpi_attach(device_t dev)
+{
+	struct ufshci_controller *ctrlr = device_get_softc(dev);
+	int status;
+
+	ctrlr->dev = dev;
+	status = ufshci_acpi_allocate_memory(ctrlr);
+	if (status != 0)
+		goto bad;
+
+	status = ufshci_acpi_setup_interrupts(ctrlr);
+	if (status != 0)
+		goto bad;
+
+	return (ufshci_attach(dev));
+bad:
+	if (ctrlr->resource != NULL) {
+		bus_release_resource(dev, SYS_RES_MEMORY, ctrlr->resource_id,
+		    ctrlr->resource);
+	}
+
+	if (ctrlr->tag)
+		bus_teardown_intr(dev, ctrlr->res, ctrlr->tag);
+
+	if (ctrlr->res)
+		bus_release_resource(dev, SYS_RES_IRQ, rman_get_rid(ctrlr->res),
+		    ctrlr->res);
+
+	return (status);
+}
+
+static int
+ufshci_acpi_detach(device_t dev)
+{
+	return (ufshci_detach(dev));
+}
+
+static int
+ufshci_acpi_suspend(device_t dev)
+{
+	struct ufshci_controller *ctrlr = device_get_softc(dev);
+	int error;
+
+	error = bus_generic_suspend(dev);
+	if (error)
+		return (error);
+
+	/* Currently, PCI-based ufshci only supports POWER_STYPE_STANDBY */
+	error = ufshci_ctrlr_suspend(ctrlr, POWER_STYPE_STANDBY);
+	return (error);
+}
+
+static int
+ufshci_acpi_resume(device_t dev)
+{
+	struct ufshci_controller *ctrlr = device_get_softc(dev);
+	int error;
+
+	error = ufshci_ctrlr_resume(ctrlr, POWER_STYPE_AWAKE);
+	if (error)
+		return (error);
+
+	error = bus_generic_resume(dev);
+	return (error);
+}
diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index 501a1074fa58..b271720efb52 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -21,6 +21,50 @@ ufshci_ctrlr_fail(struct ufshci_controller *ctrlr)
 	ufshci_req_queue_fail(ctrlr, &ctrlr->transfer_req_queue);
 }
 
+/* Some controllers require a reinit after switching to the max gear. */
+static int
+ufshci_ctrlr_reinit_after_max_gear_switch(struct ufshci_controller *ctrlr)
+{
+	int error;
+
+	/* Reset device */
+	ufshci_utmr_req_queue_disable(ctrlr);
+	ufshci_utr_req_queue_disable(ctrlr);
+
+	error = ufshci_ctrlr_disable(ctrlr);
+	if (error != 0)
+		return (error);
+
+	error = ufshci_ctrlr_enable(ctrlr);
+	if (error != 0)
+		return (error);
+
+	error = ufshci_utmr_req_queue_enable(ctrlr);
+	if (error != 0)
+		return (error);
+
+	error = ufshci_utr_req_queue_enable(ctrlr);
+	if (error != 0)
+		return (error);
+
+	error = ufshci_ctrlr_send_nop(ctrlr);
+	if (error != 0)
+		return (error);
+
+	/* Reinit the target device. */
+	error = ufshci_dev_init(ctrlr);
+	if (error != 0)
+		return (error);
+
+	/* Initialize Reference Clock */
+	error = ufshci_dev_init_reference_clock(ctrlr);
+	if (error != 0)
+		return (error);
+
+	/* Initialize unipro */
+	return (ufshci_dev_init_unipro(ctrlr));
+}
+
 static void
 ufshci_ctrlr_start(struct ufshci_controller *ctrlr, bool resetting)
 {
@@ -77,6 +121,12 @@ ufshci_ctrlr_start(struct ufshci_controller *ctrlr, bool resetting)
 
 	ufshci_dev_init_uic_link_state(ctrlr);
 
+	if ((ctrlr->quirks & UFSHCI_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH) &&
+	    ufshci_ctrlr_reinit_after_max_gear_switch(ctrlr) != 0) {
+		ufshci_ctrlr_fail(ctrlr);
+		return;
+	}
+
 	/* Read Controller Descriptor (Device, Geometry) */
 	if (ufshci_dev_get_descriptor(ctrlr) != 0) {
 		ufshci_ctrlr_fail(ctrlr);
@@ -199,7 +249,7 @@ ufshci_ctrlr_disable(struct ufshci_controller *ctrlr)
 	return (error);
 }
 
-static int
+int
 ufshci_ctrlr_enable(struct ufshci_controller *ctrlr)
 {
 	uint32_t ie, hcs;
@@ -302,15 +352,18 @@ ufshci_ctrlr_construct(struct ufshci_controller *ctrlr, device_t dev)
 
 	/* Read Device Capabilities */
 	ctrlr->cap = cap = ufshci_mmio_read_4(ctrlr, cap);
-	ctrlr->is_single_db_supported = UFSHCIV(UFSHCI_CAP_REG_LSDBS, cap);
-	/*
-	 * TODO: This driver does not yet support multi-queue.
-	 * Check the UFSHCI_CAP_REG_MCQS bit in the future to determine if
-	 * multi-queue support is available.
-	 */
-	ctrlr->is_mcq_supported = false;
-	if (!(ctrlr->is_single_db_supported == 0 || ctrlr->is_mcq_supported))
+	if (ctrlr->quirks & UFSHCI_QUIRK_BROKEN_LSDBS_MCQS_CAP) {
+		ctrlr->is_single_db_supported = true;
+		ctrlr->is_mcq_supported = true;
+	} else {
+		ctrlr->is_single_db_supported = (UFSHCIV(UFSHCI_CAP_REG_LSDBS,
+						     cap) == 0);
+		ctrlr->is_mcq_supported = (UFSHCIV(UFSHCI_CAP_REG_MCQS, cap) ==
+		    1);
+	}
+	if (!(ctrlr->is_single_db_supported || ctrlr->is_mcq_supported))
 		return (ENXIO);
+
 	/*
 	 * The maximum transfer size supported by UFSHCI spec is 65535 * 256 KiB
 	 * However, we limit the maximum transfer size to 1MiB(256 * 4KiB) for
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index fb57d67d8362..eab36e88525b 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -329,10 +329,15 @@ struct ufshci_controller {
 #define UFSHCI_QUIRK_NOT_SUPPORT_ABORT_TASK \
 	16 /* QEMU does not support Task Management Request */
 #define UFSHCI_QUIRK_SKIP_WELL_KNOWN_LUNS \
-	32 /* QEMU does not support Well known logical units*/
+	32 /* QEMU does not support Well known logical units */
 #define UFSHCI_QUIRK_BROKEN_AUTO_HIBERNATE                                    \
 	64 /* Some controllers have the Auto hibernate feature enabled but it \
 	      does not work. */
+#define UFSHCI_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH                            \
+	128 /* Some controllers need to reinit the device after gear switch. \
+	     */
+#define UFSHCI_QUIRK_BROKEN_LSDBS_MCQS_CAP \
+	256 /* Some controllers have their LSDB and MCQS fields reset to 0. */
 
 	uint32_t ref_clk;
 
@@ -405,8 +410,8 @@ struct ufshci_controller {
 	/* UFS Transport Protocol Layer (UTP) */
 	struct ufshci_req_queue task_mgmt_req_queue;
 	struct ufshci_req_queue transfer_req_queue;
-	bool is_single_db_supported; /* 0 = supported */
-	bool is_mcq_supported;	     /* 1 = supported */
+	bool is_single_db_supported;
+	bool is_mcq_supported;
 
 	/* UFS Interconnect Layer (UIC) */
 	struct mtx uic_cmd_lock;
@@ -457,6 +462,7 @@ int ufshci_ctrlr_suspend(struct ufshci_controller *ctrlr,
 int ufshci_ctrlr_resume(struct ufshci_controller *ctrlr,
     enum power_stype stype);
 int ufshci_ctrlr_disable(struct ufshci_controller *ctrlr);
+int ufshci_ctrlr_enable(struct ufshci_controller *ctrlr);
 /* ctrlr defined as void * to allow use with config_intrhook. */
 void ufshci_ctrlr_start_config_hook(void *arg);
 void ufshci_ctrlr_poll(struct ufshci_controller *ctrlr);
diff --git a/sys/modules/ufshci/Makefile b/sys/modules/ufshci/Makefile
index ab5f3eaf88d0..aa0419d3a6d6 100644
--- a/sys/modules/ufshci/Makefile
+++ b/sys/modules/ufshci/Makefile
@@ -3,6 +3,7 @@
 KMOD = ufshci
 
 SRCS =	ufshci.c	\
+	ufshci_acpi.c	\
 	ufshci_pci.c	\
 	ufshci_ctrlr.c	\
 	ufshci_dev.c	\
@@ -12,8 +13,10 @@ SRCS =	ufshci.c	\
 	ufshci_req_sdb.c	\
 	ufshci_sim.c		\
 	ufshci_sysctl.c		\
+	acpi_if.h		\
 	bus_if.h		\
 	device_if.h		\
+	opt_acpi.h		\
 	opt_cam.h		\
 	pci_if.h
 

From nobody Tue Oct  6 07:51:01 2026
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 4hzT2s5pPlz6cW6X
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:01 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2s3ThHz4G7g
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:01 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273061;
	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=PRx48xgkiUeYUbngnLv5A56Qpad000frTv3VYmjvRi0=;
	b=vPyF67PYmLaHd+LuhB/nud0qsk/jrWn5LX1OKAMQZqy/FUEo9GaPW5lPNzCbauLuRj64Zz
	qDHzOqUPHBo7J0vO2VblrqU+S9BHsavQTGbWzZK7TzhqDKzbBKzwpIluQS7Y9TJxiY1i6K
	bUPrA4gJV+sTvPppwyLBXCFP90UXcAhy5JFS0uyByTGMIJSlANx1z+dSoN84QA0ed3jhek
	eGIf2Qvg3GDTXS7k7m5BKmZlnwjhkqSdPrBT8I3ZO5dokMnfCrfNzQy8ZCc36CZ5p415th
	Fh+stOYsSy2e5QgSXEuJ1gZ5Dlp8DJZzHbXaZjBsmikZVLAAJSyN1r9Yqs1KSA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273061;
	b=OPhVlvmPOoPtx4nLXCMcXbMcB7RbsyEG2YeajKR5gnLFic+NGu7e3CQnSfBIO2XUvwa0t1
	eyg2azbJil/0uZvZsC8OiTvD5ypS2H/WgEbsDCG7jK5KvzyoZPgmDhQ+DLt6gUMG/TZ52j
	J8CIw3xYIvV3KVfSO6evjIFCJ5ztox8neR6+G/k7Q5RFS2Cy2K7IHhpy1CYVZP8dTRaHt+
	qEXiqK30kR5TPEmfD8tGVAee76sLon7VRT0ZadtY0Vt4V2BLTmm08Xpfch6AMwYpHTwxhs
	+UV/YDgRSEGhRmGpKfoj5IbUAuId2lWLgO9q8IaLj2ZsAojFCC0rWSG4PMraGA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273061;
	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=PRx48xgkiUeYUbngnLv5A56Qpad000frTv3VYmjvRi0=;
	b=weNcdZgRpgcs2NiMolqBbMhwP1m3bOF6J3iioPCJBokzZ/kyR1iU0XaDDrCm4JHB5oHDnU
	TpXa3/jn8037bdGWld01vqs2g773483rWDlxAj6suWX7Kz4WbewjoF3kpbnGHy6nZD3ujo
	Sr4TlueeTwo3EePZEWHG5Z5gvxky6AyqpQBKLBbs4VX/nDVLR52WNT31I039zAVYlYB7Ww
	eYPCJOL5+7figiJWpxqjV9bsloJOp6CThuNwSV00K1Wk3rjmD0W9BR3HEBVaLiXlQKQ/e1
	HlRqPK+9rwsXe6xI8E5ZYwqAaa6aGI7NKdk8yrkV4ya4UKbuTsGvmpHDTkfg/A==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2s2DHYzxsw
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:01 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 19048
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:01 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 3c812d0f02e3 - stable/15 - ufshci: abort submission when payload DMA mapping fails
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 3c812d0f02e35ccc3b2a5087819b1acb052851b8
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:01 +0000
Message-Id: <6ac4a865.19048.14642aa@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=3c812d0f02e35ccc3b2a5087819b1acb052851b8

commit 3c812d0f02e35ccc3b2a5087819b1acb052851b8
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:31:43 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:53 +0000

    ufshci: abort submission when payload DMA mapping fails
    
    When bus_dmamap_load_mem() failed, ufshci_req_queue_prepare_prdt()
    manually completed and released the tracker, but its caller kept going:
    it built the UTRD, set the slot back to SCHEDULED, and rang the
    doorbell for a tracker whose request had already been freed. Return the
    mapping error and stop the submission so the released tracker is not
    resurrected.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58653
    
    (cherry picked from commit 5f3a2b364ea51ea05daa4399693bda2021e39434)
---
 sys/dev/ufshci/ufshci_req_queue.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
index 4c82b79d0e26..395801274f0e 100644
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -371,7 +371,7 @@ ufshci_payload_map(void *arg, bus_dma_segment_t *seg, int nseg, int error)
 	    BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
 }
 
-static void
+static int
 ufshci_req_queue_prepare_prdt(struct ufshci_tracker *tr)
 {
 	struct ufshci_request *req = tr->req;
@@ -403,6 +403,8 @@ ufshci_req_queue_prepare_prdt(struct ufshci_tracker *tr)
 		    UFSHCI_RESPONSE_CODE_GENERAL_FAILURE);
 		mtx_lock(&tr->hwq->qlock);
 	}
+
+	return (error);
 }
 
 static void
@@ -716,9 +718,15 @@ ufshci_req_queue_submit_tracker(struct ufshci_req_queue *req_queue,
 		memcpy(tr->ucd, &req->request_upiu, request_len);
 		memset((uint8_t *)tr->ucd + response_off, 0, response_len);
 
-		/* Prepare PRDT */
-		if (req->payload_valid)
-			ufshci_req_queue_prepare_prdt(tr);
+		/*
+		 * Prepare PRDT. If the payload could not be mapped, the
+		 * tracker has already been completed and released by the
+		 * manual completion path, so the descriptor must not be
+		 * built and the doorbell must not be rung.
+		 */
+		if (req->payload_valid &&
+		    ufshci_req_queue_prepare_prdt(tr) != 0)
+			return;
 
 		/* Prepare UTP Transfer Request Descriptor. */
 		ucd_paddr = tr->ucd_bus_addr;

From nobody Tue Oct  6 07:51:00 2026
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 4hzT2s1fmfz6cVyM
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:01 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2r6S0Vz4GL5
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:00 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273060;
	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=gHtsUm6qNPGLEw9wN7nsxLG6xWkLEFsDFjzE5+343Zg=;
	b=OOSQlPmfK7LSs9C3di8f2Iax2oVWYzchDZssZFRrCciXq8CBLHuYWvsd3HSbdprNg8UXks
	J3lcmRAEJWFmkh30FbCuPTFuVjkxG72oSuE9/GshJLwCyeSHhFbgrxYN0xNhNLkJLgG68X
	u3gxJgEUPmbN0BoyPPa72zzBbqkFy95q3XYCG/LU/rP8B4V2fPwV9OJNVCssbQDWbvmXC7
	T2Z+rk9EtBYab60S+HYqApIg8ryVSQEZOkhH5xthe73sRI6eQEhgcm4nra8DoL/FVeeSR6
	zWwxxtspEDVdOCXd6RjFP04e3zqkQesWLIBSBv2MgR5TVFYXuWcMxoi/93TkWw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273060;
	b=fpblkbS+XTegaZxRCAS9yH+gRId5XR6RAASpkRwXakK3vXZevrEEm5PpI7Y3OkN8q+YttV
	bUtvV1OjJ9f4Lf5ZusJs6qRvFXoCRaEDPquve9sko8t1E1KPc/+BcdR1APRZJ+pZ8ACxSF
	Jj+LFVlTxSHUvRSTPAnMqtmbVXxbu5BfhADdaWa90JFnfFF4nFqqZwGK1EhNhGDcobpoPj
	dpIn0jNWIu+agmzy7+OoJaQc4mUTa3kJ8ZjaL9U7Ot22nPploY0PyZXL58IIoI+hhHls1h
	Y6pFpG0/J5rYJeO7mksQZievTjtCnEb3OS6JKtf5jml8+U9891xuIDMpvjDb7A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273060;
	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=gHtsUm6qNPGLEw9wN7nsxLG6xWkLEFsDFjzE5+343Zg=;
	b=JMcWx5kneriRLNQbcwS16DMmZ22rDFdhf9bL/MV38hBRqaZfKMnfySpDsmxK/4p6DTt5TK
	W7CD7KyVM8BMHlw5xZ8rcog30B9PjYIrzrsNbuKXIidGdCURl1Cu4C8UiBQVmJlcvEHwyD
	KaHr9U9VqxuBgwbsOniPOMzAuwyEx08flaws0FhsgQwhzB4O0jPBbg0golNTtI9vDTnzwc
	hSgqOuyfqfQgR+zh9KGWsp5u/My4ugpiPRJz3bc+e/qRpbr6zz9X75QEPqOfqW/M0efe/M
	SKGalqmpfxsnwn2IThqSclgbqAClakRjaV5E6ftQX8+xjxRoirEGQwTFpI8ppg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2r1N7Jzx01
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:00 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 185b8
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:00 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: c9e2fd2eb3b9 - stable/15 - ufshci: fix data direction encoding for read commands
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: c9e2fd2eb3b91cbef7295e556b22ab249b14686e
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:00 +0000
Message-Id: <6ac4a864.185b8.92cb44c@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=c9e2fd2eb3b91cbef7295e556b22ab249b14686e

commit c9e2fd2eb3b91cbef7295e556b22ab249b14686e
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:30:11 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:53 +0000

    ufshci: fix data direction encoding for read commands
    
    The data_direction field in the UTP Transfer Request Descriptor is only
    2 bits wide ([26:25]). UFSHCI_DATA_DIRECTION_FROM_TGT_TO_SYS was defined
    as 0x10, which truncates to 0b00 (No data transfer) when stored into the
    2-bit field, so every read command was described to the controller as
    having no data phase. Only writes (0b01) happened to be encoded
    correctly.
    
    Define all values as 2-bit binary literals, matching the existing
    RESERVED = 0b11 entry, so read is encoded as 0b10 as required by the
    specification.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58652
    
    (cherry picked from commit cf04a05424f1a79e55303de252e5873abeae7b88)
---
 sys/dev/ufshci/ufshci.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/sys/dev/ufshci/ufshci.h b/sys/dev/ufshci/ufshci.h
index 766d8de0535b..c2bef5c9a807 100644
--- a/sys/dev/ufshci/ufshci.h
+++ b/sys/dev/ufshci/ufshci.h
@@ -154,9 +154,9 @@ enum ufshci_command_type {
 };
 
 enum ufshci_data_direction {
-	UFSHCI_DATA_DIRECTION_NO_DATA_TRANSFER = 0x00,
-	UFSHCI_DATA_DIRECTION_FROM_SYS_TO_TGT = 0x01,
-	UFSHCI_DATA_DIRECTION_FROM_TGT_TO_SYS = 0x10,
+	UFSHCI_DATA_DIRECTION_NO_DATA_TRANSFER = 0b00,
+	UFSHCI_DATA_DIRECTION_FROM_SYS_TO_TGT = 0b01,
+	UFSHCI_DATA_DIRECTION_FROM_TGT_TO_SYS = 0b10,
 	UFSHCI_DATA_DIRECTION_RESERVED = 0b11,
 };
 

From nobody Tue Oct  6 07:51:02 2026
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 4hzT2t5cFlz6cWMZ
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:02 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2t4K0vz4GNt
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:02 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273062;
	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=DtP9xwf9UojCK7hMi/U2dI7cMCBQRg5H5azobLn3b2s=;
	b=hJiIwI1Op2WFQCjZTgALd+2qKB/jlQNRIW0kdzrpg2UKI3pDSIkCCWEr6W2pQYHlGSzNBp
	63z9r8mk/sBrnViXbrtPRtpAlnk2Q3OSX2+8aL9sGziAmPODORq2Dpr12ncM2sXMhduXqK
	bbPxqa15aG2WF4PUBb7gOeLhubUMD4XbANK6mPvoFM7ABpvygsA4LVuzCPhL5N9Gy72RMG
	+u9e2HQIB77cLAdega6YvNWESEtfiIr+JT0LGWuLX/VdLWoLXOp82rg1Et9n65sPdUQX3Z
	4Tk14+PiF4jQRXSsRXgYYaCbcN0ZuYH4BvhKFOdwu083KIljo/bvjh6bM8jC3w==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273062;
	b=LYQhTztzJ9Km4HCe/DtLH17HbqKPxbw763M2ypI6cU6H5qNgo02ckq8K3mif86D0aKWGwV
	9XS4RZOXVS4QTkOLNAd7AxRKDbxgLa21cJ0tBWi5zeSclDJUGfI8WlrH4n8CTdKWJkmzH7
	lF1gwQra4dkav3yMOxtNcOivqckJXT+EYQbDjtnq2pAjxBHkm0LjHpPr7EF5cmdYNIlO2o
	8KmHSfIZzZi8Dm4Y78NIpcRTze7X/+FCEqBSozC4Kc2ht8YYLVdDsqMwGPADk9Uuuk+t/K
	9yY1YgETBbJpbiRFatMWTNGASfHlYBsIlihNZytTAjpHyb439BWOXqg1y9lOBA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273062;
	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=DtP9xwf9UojCK7hMi/U2dI7cMCBQRg5H5azobLn3b2s=;
	b=G39QWG4+bw/K+Bnn7i9I2pR1JUePlYpXII0ExafM0zkpFW5TnEGtejfWVZCU4tgPvwjTOu
	BwQo/WS5LpRQms7dRPJtaTCtIt+tL+WQ2WfENvnmfCXvkCsVrs08cNMRYv2X2GfpvEVxR7
	5a8MgYl7/mcbc8aRPQHNnRvdYqhrrXnqyEQTLe+585ZbpwhPJ9aQRqkXKpYpPpxluveWnd
	a8PmJj3g6Mvvfj26f76eJ4YHrYmev98kiQM7BtNTVr/ImSKuse2lGywjZmlZWJ7jAk3tox
	55kd2GITJAZkMSBaN3rLX91+nOSjLoLKmoSVUWxzuYgla0AwmHK3fmmF1oYpiw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2t35Nrzxp5
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:02 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 1882c
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:02 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: d8ed29dcb9f3 - stable/15 - ufshci: fail attribute reads on a non-zero config result code
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: d8ed29dcb9f3fa7cc2a91c20f2f17e23664db663
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:02 +0000
Message-Id: <6ac4a866.1882c.67afe850@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=d8ed29dcb9f3fa7cc2a91c20f2f17e23664db663

commit d8ed29dcb9f3fa7cc2a91c20f2f17e23664db663
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:33:00 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:54 +0000

    ufshci: fail attribute reads on a non-zero config result code
    
    ufshci_uic_send_cmd() only logged the error code and returned success,
    so a failed DME_GET gave its caller a stale value as if it were valid.
    The gear and lane settings could then be programmed from that garbage.
    
    Return ENXIO for reads instead. Writes keep logging and continuing,
    because a device may reject an optional attribute and that must not
    fail bring-up.
    
    Sponsored by:           Samsung Electronics
    Reviewed by             imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58654
    
    (cherry picked from commit 154e335cd635436c69ad98723e25988852bd11db)
---
 sys/dev/ufshci/ufshci_uic_cmd.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/sys/dev/ufshci/ufshci_uic_cmd.c b/sys/dev/ufshci/ufshci_uic_cmd.c
index c6e6afe3f688..03ea8b2ba9f1 100644
--- a/sys/dev/ufshci/ufshci_uic_cmd.c
+++ b/sys/dev/ufshci/ufshci_uic_cmd.c
@@ -199,6 +199,14 @@ ufshci_uic_send_cmd(struct ufshci_controller *ctrlr,
 		    "Failed to send UIC command (Opcode: 0x%x"
 		    ", config result code = 0x%x)\n",
 		    uic_cmd->opcode, config_result_code);
+		/*
+		 * Reads fail here: there is no valid result to return.
+		 * Writes only log the error, so that a rejected optional
+		 * attribute does not fail bring-up.
+		 */
+		if (return_value != NULL)
+			return (ENXIO);
+		return (0);
 	}
 
 	if (return_value != NULL)

From nobody Tue Oct  6 07:51:03 2026
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 4hzT2w1tMBz6cW8S
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:04 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2v59D0z4GTp
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:03 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273063;
	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=vqD6UBiacGAbhZFXo8s26KfEndiV34lHTP1br/qw1kI=;
	b=mNvQyVHDzmRYyaP+UgNURekNi+lwW/H1S8USOuNce/GLdNClZFBWVnE240VWJptXKsgupO
	3U2JKrqvGBB1aWh8rK6EB27+66aFJHFMBN0kycTpXBksjjcNFK56tsqoAp3bM8T2S9uhKP
	+zxsjWM5x4tew75PN7anop3BSnz6z9uPCy16OqDLplq3noHGmfq3H3IdgZCGeyApuMPrvk
	rRyNIxuy+VFKvdO1c9ckRZugORVgeVqCdFgwWX2wp1XohiwrHdaQ/E0O9edd/0qLzeVqz2
	LzCocHPfJfJOGcR4/30vqr9xj+W0Eu+/Q6GSyYhaL+snbD7xxqmMXdO77MiHAg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273063;
	b=peaHBfFta8CntHqAIy650O29PNV9ujfMwvdlz9LpQ/D9MDlBb/Or7uXfuD0IhjUFOkqfwB
	lrEzvgIxWW1KWg4Y094iOEbjsCgBgdO0vtgxIjvvOgKZGdcfq2sySUxDq8t6QnQCV4iVBh
	1saS3vL78EJKn0JX+Cta7n7B1mQhhI7qzdMDwXSh4Lz3/pC6Qv9d0inoQYS4IPMA12nngw
	1t8omrP3T+MwLaak/QX9Al3W9Cbw3I7A8Zia/Z2TCWF+15fHneop6/MQcv9mDqeA6Ki4Ro
	rrDCqDzEue3A+Z+t4QnKgsxMD0IfbCtNxFQcrrEg97IuH9Smg4R276DLcq/XzA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273063;
	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=vqD6UBiacGAbhZFXo8s26KfEndiV34lHTP1br/qw1kI=;
	b=GUPGma/Pt9r8iGSn7Qv6TndOosK4gY8Pp/BTcK8/fMO/yBOcaBhwOvDFAB20+Hs4io4jxL
	W5l+6/Y5imbsNk90xAI+e1IgRDr3Ww+4OPtZvC7EXafocumwF0W6+g8QNYezCL5CRPsry5
	Pfl+oMaQA2j6CICmXeLRStSdoSwYVhEyNEgsJrDrWlhnAMbwz1GaOWwvnKTej6WVCayil9
	iLDPuwzQY0N934SThTUyWD342ajjhMwJMXfmeTn6fe+ygruMrzR1d32jpvvPtZydNAwDyQ
	t8DsNgCrmhyDGm/ncpWtspJmMspbybS8lx+iHgFrSJfQE4HruOftirwFns1SMQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2v3zsxzxZC
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:03 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18729
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:03 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 9997667c1b34 - stable/15 - ufshci: handle controller command submit failures
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 9997667c1b34eda8a1f3f1bd4c20e28d1144f07b
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:03 +0000
Message-Id: <6ac4a867.18729.39a51846@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=9997667c1b34eda8a1f3f1bd4c20e28d1144f07b

commit 9997667c1b34eda8a1f3f1bd4c20e28d1144f07b
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:34:06 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:54 +0000

    ufshci: handle controller command submit failures
    
    Return submission errors from the controller command helpers and
    propagate them to polled callers before waiting for completion. Free
    requests that never enter a hardware queue so failure paths do not leak
    or panic after the poll timeout.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58655
    
    (cherry picked from commit c9827f1528a69664f4031e1c511b2e7022601a7c)
---
 sys/dev/ufshci/ufshci_ctrlr.c     |  7 +++++-
 sys/dev/ufshci/ufshci_ctrlr_cmd.c | 29 ++++++++++++++++++-----
 sys/dev/ufshci/ufshci_dev.c       | 48 +++++++++++++++++++++++++++++----------
 sys/dev/ufshci/ufshci_private.h   |  6 ++---
 sys/dev/ufshci/ufshci_req_queue.c | 16 +++++++++----
 5 files changed, 79 insertions(+), 27 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index b271720efb52..cb5549f8e7c9 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -494,9 +494,14 @@ int
 ufshci_ctrlr_send_nop(struct ufshci_controller *ctrlr)
 {
 	struct ufshci_completion_poll_status status;
+	int error;
 
 	status.done = 0;
-	ufshci_ctrlr_cmd_send_nop(ctrlr, ufshci_completion_poll_cb, &status);
+	error = ufshci_ctrlr_cmd_send_nop(ctrlr, ufshci_completion_poll_cb,
+	    &status);
+	if (error)
+		return (error);
+
 	ufshci_completion_poll(&status);
 	if (status.error) {
 		ufshci_printf(ctrlr, "ufshci_ctrlr_send_nop failed!\n");
diff --git a/sys/dev/ufshci/ufshci_ctrlr_cmd.c b/sys/dev/ufshci/ufshci_ctrlr_cmd.c
index cac01894c062..2e85cfa4b5b0 100644
--- a/sys/dev/ufshci/ufshci_ctrlr_cmd.c
+++ b/sys/dev/ufshci/ufshci_ctrlr_cmd.c
@@ -7,15 +7,18 @@
 
 #include "ufshci_private.h"
 
-void
+int
 ufshci_ctrlr_cmd_send_task_mgmt_request(struct ufshci_controller *ctrlr,
     ufshci_cb_fn_t cb_fn, void *cb_arg, uint8_t function, uint8_t lun,
     uint8_t task_tag, uint8_t iid)
 {
 	struct ufshci_request *req;
 	struct ufshci_task_mgmt_request_upiu *upiu;
+	int error;
 
 	req = ufshci_allocate_request_vaddr(NULL, 0, M_NOWAIT, cb_fn, cb_arg);
+	if (req == NULL)
+		return (ENOMEM);
 
 	req->request_size = sizeof(struct ufshci_task_mgmt_request_upiu);
 	req->response_size = sizeof(struct ufshci_task_mgmt_response_upiu);
@@ -30,15 +33,20 @@ ufshci_ctrlr_cmd_send_task_mgmt_request(struct ufshci_controller *ctrlr,
 	upiu->input_param2 = task_tag;
 	upiu->input_param3 = iid;
 
-	ufshci_ctrlr_submit_task_mgmt_request(ctrlr, req);
+	error = ufshci_ctrlr_submit_task_mgmt_request(ctrlr, req);
+	if (error)
+		ufshci_free_request(req);
+
+	return (error);
 }
 
-void
+int
 ufshci_ctrlr_cmd_send_nop(struct ufshci_controller *ctrlr, ufshci_cb_fn_t cb_fn,
     void *cb_arg)
 {
 	struct ufshci_request *req;
 	struct ufshci_nop_out_upiu *upiu;
+	int error;
 
 	req = ufshci_allocate_request_vaddr(NULL, 0, M_WAITOK, cb_fn, cb_arg);
 
@@ -50,15 +58,20 @@ ufshci_ctrlr_cmd_send_nop(struct ufshci_controller *ctrlr, ufshci_cb_fn_t cb_fn,
 	memset(upiu, 0, req->request_size);
 	upiu->header.trans_type = UFSHCI_UPIU_TRANSACTION_CODE_NOP_OUT;
 
-	ufshci_ctrlr_submit_transfer_request(ctrlr, req);
+	error = ufshci_ctrlr_submit_transfer_request(ctrlr, req);
+	if (error)
+		ufshci_free_request(req);
+
+	return (error);
 }
 
-void
+int
 ufshci_ctrlr_cmd_send_query_request(struct ufshci_controller *ctrlr,
     ufshci_cb_fn_t cb_fn, void *cb_arg, struct ufshci_query_param param)
 {
 	struct ufshci_request *req;
 	struct ufshci_query_request_upiu *upiu;
+	int error;
 
 	req = ufshci_allocate_request_vaddr(NULL, 0, M_WAITOK, cb_fn, cb_arg);
 
@@ -77,5 +90,9 @@ ufshci_ctrlr_cmd_send_query_request(struct ufshci_controller *ctrlr,
 	upiu->value_64 = param.value;
 	upiu->length = param.desc_size;
 
-	ufshci_ctrlr_submit_transfer_request(ctrlr, req);
+	error = ufshci_ctrlr_submit_transfer_request(ctrlr, req);
+	if (error)
+		ufshci_free_request(req);
+
+	return (error);
 }
diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index 0fedbca9a90e..c53d9b71ba2c 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -19,6 +19,7 @@ ufshci_dev_read_descriptor(struct ufshci_controller *ctrlr,
 {
 	struct ufshci_completion_poll_status status;
 	struct ufshci_query_param param;
+	int error;
 
 	param.function = UFSHCI_QUERY_FUNC_STANDARD_READ_REQUEST;
 	param.opcode = UFSHCI_QUERY_OPCODE_READ_DESCRIPTOR;
@@ -29,8 +30,11 @@ ufshci_dev_read_descriptor(struct ufshci_controller *ctrlr,
 	param.desc_size = desc_size;
 
 	status.done = 0;
-	ufshci_ctrlr_cmd_send_query_request(ctrlr, ufshci_completion_poll_cb,
-	    &status, param);
+	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
+	    ufshci_completion_poll_cb, &status, param);
+	if (error)
+		return (error);
+
 	ufshci_completion_poll(&status);
 	if (status.error) {
 		ufshci_printf(ctrlr,
@@ -74,6 +78,7 @@ ufshci_dev_read_flag(struct ufshci_controller *ctrlr,
 {
 	struct ufshci_completion_poll_status status;
 	struct ufshci_query_param param;
+	int error;
 
 	param.function = UFSHCI_QUERY_FUNC_STANDARD_READ_REQUEST;
 	param.opcode = UFSHCI_QUERY_OPCODE_READ_FLAG;
@@ -83,8 +88,11 @@ ufshci_dev_read_flag(struct ufshci_controller *ctrlr,
 	param.value = 0;
 
 	status.done = 0;
-	ufshci_ctrlr_cmd_send_query_request(ctrlr, ufshci_completion_poll_cb,
-	    &status, param);
+	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
+	    ufshci_completion_poll_cb, &status, param);
+	if (error)
+		return (error);
+
 	ufshci_completion_poll(&status);
 	if (status.error) {
 		ufshci_printf(ctrlr, "ufshci_dev_read_flag failed!\n");
@@ -102,6 +110,7 @@ ufshci_dev_set_flag(struct ufshci_controller *ctrlr,
 {
 	struct ufshci_completion_poll_status status;
 	struct ufshci_query_param param;
+	int error;
 
 	param.function = UFSHCI_QUERY_FUNC_STANDARD_WRITE_REQUEST;
 	param.opcode = UFSHCI_QUERY_OPCODE_SET_FLAG;
@@ -111,8 +120,11 @@ ufshci_dev_set_flag(struct ufshci_controller *ctrlr,
 	param.value = 0;
 
 	status.done = 0;
-	ufshci_ctrlr_cmd_send_query_request(ctrlr, ufshci_completion_poll_cb,
-	    &status, param);
+	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
+	    ufshci_completion_poll_cb, &status, param);
+	if (error)
+		return (error);
+
 	ufshci_completion_poll(&status);
 	if (status.error) {
 		ufshci_printf(ctrlr, "ufshci_dev_set_flag failed!\n");
@@ -128,6 +140,7 @@ ufshci_dev_clear_flag(struct ufshci_controller *ctrlr,
 {
 	struct ufshci_completion_poll_status status;
 	struct ufshci_query_param param;
+	int error;
 
 	param.function = UFSHCI_QUERY_FUNC_STANDARD_WRITE_REQUEST;
 	param.opcode = UFSHCI_QUERY_OPCODE_CLEAR_FLAG;
@@ -137,8 +150,11 @@ ufshci_dev_clear_flag(struct ufshci_controller *ctrlr,
 	param.value = 0;
 
 	status.done = 0;
-	ufshci_ctrlr_cmd_send_query_request(ctrlr, ufshci_completion_poll_cb,
-	    &status, param);
+	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
+	    ufshci_completion_poll_cb, &status, param);
+	if (error)
+		return (error);
+
 	ufshci_completion_poll(&status);
 	if (status.error) {
 		ufshci_printf(ctrlr, "ufshci_dev_clear_flag failed!\n");
@@ -155,6 +171,7 @@ ufshci_dev_read_attribute(struct ufshci_controller *ctrlr,
 {
 	struct ufshci_completion_poll_status status;
 	struct ufshci_query_param param;
+	int error;
 
 	param.function = UFSHCI_QUERY_FUNC_STANDARD_READ_REQUEST;
 	param.opcode = UFSHCI_QUERY_OPCODE_READ_ATTRIBUTE;
@@ -164,8 +181,11 @@ ufshci_dev_read_attribute(struct ufshci_controller *ctrlr,
 	param.value = 0;
 
 	status.done = 0;
-	ufshci_ctrlr_cmd_send_query_request(ctrlr, ufshci_completion_poll_cb,
-	    &status, param);
+	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
+	    ufshci_completion_poll_cb, &status, param);
+	if (error)
+		return (error);
+
 	ufshci_completion_poll(&status);
 	if (status.error) {
 		ufshci_printf(ctrlr, "ufshci_dev_read_attribute failed!\n");
@@ -184,6 +204,7 @@ ufshci_dev_write_attribute(struct ufshci_controller *ctrlr,
 {
 	struct ufshci_completion_poll_status status;
 	struct ufshci_query_param param;
+	int error;
 
 	param.function = UFSHCI_QUERY_FUNC_STANDARD_WRITE_REQUEST;
 	param.opcode = UFSHCI_QUERY_OPCODE_WRITE_ATTRIBUTE;
@@ -193,8 +214,11 @@ ufshci_dev_write_attribute(struct ufshci_controller *ctrlr,
 	param.value = value;
 
 	status.done = 0;
-	ufshci_ctrlr_cmd_send_query_request(ctrlr, ufshci_completion_poll_cb,
-	    &status, param);
+	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
+	    ufshci_completion_poll_cb, &status, param);
+	if (error)
+		return (error);
+
 	ufshci_completion_poll(&status);
 	if (status.error) {
 		ufshci_printf(ctrlr, "ufshci_dev_write_attribute failed!\n");
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index eab36e88525b..e7345fc5a410 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -493,12 +493,12 @@ int ufshci_dev_link_state_transition(struct ufshci_controller *ctrlr,
     enum ufshci_uic_link_state target_state);
 
 /* Controller Command */
-void ufshci_ctrlr_cmd_send_task_mgmt_request(struct ufshci_controller *ctrlr,
+int ufshci_ctrlr_cmd_send_task_mgmt_request(struct ufshci_controller *ctrlr,
     ufshci_cb_fn_t cb_fn, void *cb_arg, uint8_t function, uint8_t lun,
     uint8_t task_tag, uint8_t iid);
-void ufshci_ctrlr_cmd_send_nop(struct ufshci_controller *ctrlr,
+int ufshci_ctrlr_cmd_send_nop(struct ufshci_controller *ctrlr,
     ufshci_cb_fn_t cb_fn, void *cb_arg);
-void ufshci_ctrlr_cmd_send_query_request(struct ufshci_controller *ctrlr,
+int ufshci_ctrlr_cmd_send_query_request(struct ufshci_controller *ctrlr,
     ufshci_cb_fn_t cb_fn, void *cb_arg, struct ufshci_query_param param);
 void ufshci_ctrlr_cmd_send_scsi_command(struct ufshci_controller *ctrlr,
     ufshci_cb_fn_t cb_fn, void *cb_arg, uint8_t *cmd_ptr, uint8_t cmd_len,
diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
index 395801274f0e..371b9c520979 100644
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -632,11 +632,17 @@ ufshci_req_queue_timeout(void *arg)
 				ufshci_printf(ctrlr,
 				    "Recovery step 1: Timeout occurred. aborting the task(%d).\n",
 				    tr->req->request_upiu.header.task_tag);
-				ufshci_ctrlr_cmd_send_task_mgmt_request(ctrlr,
-				    ufshci_abort_complete, tr,
-				    UFSHCI_TASK_MGMT_FUNCTION_ABORT_TASK,
-				    tr->req->request_upiu.header.lun,
-				    tr->req->request_upiu.header.task_tag, 0);
+				if (ufshci_ctrlr_cmd_send_task_mgmt_request(ctrlr,
+					ufshci_abort_complete, tr,
+					UFSHCI_TASK_MGMT_FUNCTION_ABORT_TASK,
+					tr->req->request_upiu.header.lun,
+					tr->req->request_upiu.header.task_tag,
+					0) != 0) {
+					ufshci_req_queue_timeout_recovery(ctrlr,
+					    hwq);
+					idle = false;
+					break;
+				}
 			} else {
 				/* Recovery Step 2-5 */
 				ufshci_req_queue_timeout_recovery(ctrlr, hwq);

From nobody Tue Oct  6 07:51:04 2026
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 4hzT2x1nzxz6cWH4
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:05 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2w5Pldz4GPC
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:04 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273064;
	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=H7fRe3tp7DraUXB1BGGSQlqMsde8ThtYl1OmuiD6cs4=;
	b=q5MxL2hXW5TAtWIXPjGyEQC2VVjgAmYf/jXs43n/jNGhUvMNLh71yyCxUFvl8/SJmh/Em+
	8HZ4xPiPwQ4fkk9g4EeBYjZUwrz/pRV2cWlAtQsf7nYq3S3d+UQ4Yb6JaKTTV6DWuFNaW9
	32aEwvPjxc8VqlVHi5+Yu9WewzvD7UGJ/hPUrcGSklFDkjNhfloATy1HBI0nNcqB+wpNTh
	AhG8x41/sjE2+GAqH0A0URB16CFOOTvRKfTdSk7WwW1H9vZu4lx4YgB1pS/fOeD3xQw17i
	hNH1tH1lHRkDMyZWjIyP/8p7Y3ZqHfPvUOv1K7ogcC7HKh5sO/eGv+6WGF+x1Q==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273064;
	b=W6rabYWFO4Mg4WvqgVrbmejdF88Q6nTXz5j4JD8Q6spAbfPYGD6SA4jJkh4XHo0pVGrTPh
	48ySHgJ74PElI/edxAfVzCKH2yzg2nDJjOiyTprXnE9APy394CA5n9xLg18tYYwHkVBIUs
	1XL6X+WWk++5zLQE+U0P1TnjQHLJLfjTzNBHUgpg0Jfw4IoNZF4HvW/fT7j4CErc9m5BsD
	Xsv61/imsBvv+8bzMNh4w3D8S57uaEkaGc4lQfYR9Q6STXLgmz/mnTQcsxwZ/C9fxwvY/p
	iHiqzXaW5JS0ppztdnwKD+2Scn3ZdesnAGdeez84CJX6Mut0NEclR5+CpJVedQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273064;
	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=H7fRe3tp7DraUXB1BGGSQlqMsde8ThtYl1OmuiD6cs4=;
	b=x+ysYIV7kwjP9keXFWephLb8kU+71ng8MhR0MLt9gy+yJ+P/xe4QduKcNh2VI4tOOrhko3
	FQo47GzA4t0CQoqJ6r/Lxx7sCeyjq96inaB6jV+PGYnu8zR2jZOhdDZCnZJZohc1NpmV6x
	XuhJxZmhHQW3n93qgG7CfWv8zt0Y0sr2Vgy4p3NL4nLeeLAv3bl+zx0UQuidB7CK85OV1K
	I9NFgS5c00LRYkCxsg/7nz6Cm0rDx0Wp7ZhkH/jVwSD9ob4ml+j2bdTrNkRV8PFW3T5zqb
	Zk+dPZ/e9bPVi3hkti716f0lRSbm8wUCQ9DEXLwpQN9+z+MGQRQYuA2DmzW24A==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2w4Tytzxsx
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:04 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 47b62
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:04 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 49c63957ab9b - stable/15 - ufshci: fix SCSI I/O request failure cleanup
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 49c63957ab9b2c41d9de6629371f96a5827ff982
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:04 +0000
Message-Id: <6ac4a868.47b62.20f5a71b@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=49c63957ab9b2c41d9de6629371f96a5827ff982

commit 49c63957ab9b2c41d9de6629371f96a5827ff982
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:35:45 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:55 +0000

    ufshci: fix SCSI I/O request failure cleanup
    
    ufshchi_sim_scsiio() did not check the M_NOWAIT request allocation
    for NULL. The CDB validation and submit failure paths also returned
    without freeing the request.
    
    Fail the CCB when the allocation returns NULL. Free the request on
    every failure path. Mark the CCB as queued right before the submit,
    so the failure paths above do not need to touch that flag.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58656
    
    (cherry picked from commit 360b7c1635ea772d41275f8d1061cef4e131e328)
---
 sys/dev/ufshci/ufshci_sim.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index 404f3e99d1e2..234ee3bf7dfa 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -150,6 +150,11 @@ ufshchi_sim_scsiio(struct cam_sim *sim, union ccb *ccb)
 	else
 		req = ufshci_allocate_request_vaddr(payload, payload_len,
 		    M_NOWAIT, ufshci_sim_scsiio_done, ccb);
+	if (req == NULL) {
+		ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
+		xpt_done(ccb);
+		return;
+	}
 
 	req->request_size = sizeof(struct ufshci_cmd_command_upiu);
 	req->response_size = sizeof(struct ufshci_cmd_response_upiu);
@@ -178,8 +183,6 @@ ufshchi_sim_scsiio(struct cam_sim *sim, union ccb *ccb)
 
 	upiu->expected_data_transfer_length = htobe32(payload_len);
 
-	ccb->ccb_h.status |= CAM_SIM_QUEUED;
-
 	if (csio->ccb_h.flags & CAM_CDB_POINTER)
 		cdb = csio->cdb_io.cdb_ptr;
 	else
@@ -187,18 +190,22 @@ ufshchi_sim_scsiio(struct cam_sim *sim, union ccb *ccb)
 
 	if (cdb == NULL || csio->cdb_len > sizeof(upiu->cdb)) {
 		ccb->ccb_h.status = CAM_REQ_INVALID;
+		ufshci_free_request(req);
 		xpt_done(ccb);
 		return;
 	}
 	memcpy(upiu->cdb, cdb, csio->cdb_len);
 
+	ccb->ccb_h.status |= CAM_SIM_QUEUED;
 	error = ufshci_ctrlr_submit_transfer_request(ctrlr, req);
 	if (error == EBUSY) {
 		ccb->ccb_h.status = CAM_SCSI_BUSY;
+		ufshci_free_request(req);
 		xpt_done(ccb);
 		return;
 	} else if (error) {
 		ccb->ccb_h.status = CAM_REQ_INVALID;
+		ufshci_free_request(req);
 		xpt_done(ccb);
 		return;
 	}

From nobody Tue Oct  6 07:51:05 2026
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 4hzT2y2QMCz6cWH8
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:06 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2x6MWtz4GDW
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:05 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273065;
	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=wKcSm9VKeS0hBv1j586gIQwTgupA0SsX30IK3e5U5kw=;
	b=FradapDwjS5r1QGwjhko5tadI+X36TBl/3ptbbI8DYxYa0uKZQTzI4dLivgxflXohWaghD
	8HWzZ/ueRdUSNBsWoKane2m3KUp+EfUWAoZtDQT7dv2QqJrRUEHMZc66tGDn0+spxaX89E
	2nGzjMejy1vk4QCy4OVcNBVcIWiYrl9qWDlsNUiDikLtMMz7yHvTR71KHCNfqEMDPVVO3n
	4/nlG6wGyrdhyRvQWSoF8c88xCld1DfZS1JAVvQJKoe86yF8MdHADSjTP5BoxmOk3Cky2u
	HWjUJ4kHqmAJVq45u7jhaIhuVYIqHOou7MSqvv6QqTxT8Et5Y2PBECPNoZtk+w==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273065;
	b=p+aoVJ/2+ffaVl7WXnZ181eEsnodgEh9x9gdzc5CXkL73Ffnv1XFcBT+NOculdX6gAqczC
	PQi0L1T7pbNto73NTuk8nRDUkb3RQzlrWGyv0Dry+LbW0Br+DqYKwZJCamS6mM3iHCFm9A
	Hmiy0x+n30FlUPmw1Ppp8QNVwhHAdTgx1sU3+KLfHo/HgeX76hoVeT9eICoGyVia49i8Wj
	wOIeJEMJ5wioA9e3b+gf7ZfO84VqkszarW7cBS3EHgvQ1jIfvTyPZjYv1BpHPDcEan/QSA
	lwmMN51esGGTt+qVV1JPcKNyRIYz+IjQXe1oZKMwvgSAwb1AIkpNAfIFuHZ0XQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273065;
	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=wKcSm9VKeS0hBv1j586gIQwTgupA0SsX30IK3e5U5kw=;
	b=lBWFW0Q4pvQPljIX3CxuBWjwb3B6fNarQydrqUnILQwjidYxR35zXZaqiHtZUpQMqpD3yN
	NyGw1U8cY98l7hKR1lN6XjscY8Is+TbMhSVTy3VYZFq7YK3VzDi1CdNFLtz7+TiVudcQVz
	toAn1Hd0Q3E7SG7BqVfVHNQ0bAsKZ5/2xcvV0CaUZOqoj/yLtIjLok1fcafFt5bgg2+N7Q
	atrJ2Ii3eYURkSM2aaiZw5cvB9J6sJoYCw49izpIlci10D4gBLN9offut0IZNp+WFD3f4P
	kAzplD/8owYLL6EK/LiX8vRFMJoyRSre7RzitoezGzr4VO3U16eMhG86lUY71A==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2x5Q95zxKR
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:05 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 1872d
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:05 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: ad33bd6f67a9 - stable/15 - ufshci: free the lookup path when the periph search times out
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: ad33bd6f67a906e26e96aaf7cfb3448038bc9647
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:05 +0000
Message-Id: <6ac4a869.1872d.32456ebd@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=ad33bd6f67a906e26e96aaf7cfb3448038bc9647

commit ad33bd6f67a906e26e96aaf7cfb3448038bc9647
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:37:00 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:55 +0000

    ufshci: free the lookup path when the periph search times out
    
    ufshci_sim_find_periph() freed the lookup path only when it found the
    periph. The timeout path returned without freeing it and leaked the
    path. Free the path at the single exit instead.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58657
    
    (cherry picked from commit 607189d789ac37fac03025cbf7dfb0d243b7c49e)
---
 sys/dev/ufshci/ufshci_sim.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index 234ee3bf7dfa..148840123d13 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -448,10 +448,8 @@ ufshci_sim_find_periph(struct ufshci_controller *ctrlr, uint8_t wlun)
 		periph = cam_periph_find(path, "pass");
 		xpt_path_unlock(path);
 
-		if (periph) {
-			xpt_free_path(path);
+		if (periph)
 			break;
-		}
 
 		if (timeout - ticks < 0) {
 			ufshci_printf(ctrlr,
@@ -462,6 +460,8 @@ ufshci_sim_find_periph(struct ufshci_controller *ctrlr, uint8_t wlun)
 		pause_sbt("ufshci_find_periph", ustosbt(100), 0, C_PREL(1));
 	}
 
+	xpt_free_path(path);
+
 	return periph;
 }
 

From nobody Tue Oct  6 07:51:06 2026
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 4hzT2z3B7nz6cW8h
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:07 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2y74kfz4GPR
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:06 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273067;
	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=06UZxJpLquIrFFfQJSEzpzjg9G2SKWoOFtwGAMmJjp0=;
	b=WvATHx2nkOi0vMK1kuP3Gts/ExshhgcEl910qLBYeWvt/vKMIgqZDz+vmZNF8if2RQU3hS
	Vw3pCO/so3hhrbcXr0Lxl+LUFiWG+efOtB391CiGkwSKGGSL+FSFbNo7n/dpUFbDWKpaqi
	BYB8DKW4PWbACAIzo3tx5GJ5H/xY/Jq6eZAvZkqKiGTnMdKG+x/R/KVdpSshIWJp4E8VWB
	JT+v37GQQVGTU69Pj4Mof7C86VdmtwEwcakjp4wRB9+ok/VkYYp8vPfEixff9dBdJpYnaM
	vJEfyI0MW9BQ8yBuhwUThiG+MThXqoMgRnrRNmhCdkrno/+Zjbm2+4dkVy2chw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273067;
	b=qQ35bk9ElZatJ80lDbXxWSCauNy1zYMInQPJBhMvLG/xShoFh6CFKrdkvgdyn32Xyxq4gi
	f6w20sAGS23+GcAlUAG6TWSZSKZf35ZG/J3CBTH2cREXLdUNgnTE5p8K694nnvvN6xozSj
	zQ6SEyP0x7lecrpPrrCYcP6hcOaWlXtA18SapI5USar2QOy4rz4h42T6I7Acmx3Nd3jUQY
	1omiTq3B6uXthayNdKT19HcybCGuiTN0PsGz0vUWbfSacob8Xu5iRQMxe/zp/FxhbxJZju
	dn7l2E2XnFNfNbL07/M8kFtvV6WfVQ1AKJ6oKpk/xMusYkRn0c+5RJrva7AD6A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273067;
	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=06UZxJpLquIrFFfQJSEzpzjg9G2SKWoOFtwGAMmJjp0=;
	b=ao2e8D9l2cNjHVTeQvytsKw6MLYAUokeWjUEplXVGzeOO61wJ/Knfn9CZanLOKgDl89csp
	jbwwbBvTXH+H4XVJPhsqtbeusUQS4pBkDdET7iuEs1qxTBfqVSDzpcJm0l41UVfb9Tx17w
	NGCFIECQE/NpeiBVRjXs3aIdantFzTeNcVTXOtVk7yYnqSTG59QyUa8Sg8vtpEzgqMSMre
	QQbQQbiPloOLQMYdBo57kONE0L39AU7/k40bYzUMenFOyzUkvEJNyDM4izr7HyRRPbq1y/
	w1kA92gQBeR/YhldC4bB301AItvVAT/6fHKXzG3RAk2PbqkFMknbcjbrw6uURg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2y63wtzxKS
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:06 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 477ec
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:06 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: c8852e0ac0c1 - stable/15 - ufshci: fix WLUN periph reference counting
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: c8852e0ac0c1b6ce9947e412307fbc7d7659b5c8
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:06 +0000
Message-Id: <6ac4a86a.477ec.25fe14ca@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=c8852e0ac0c1b6ce9947e412307fbc7d7659b5c8

commit c8852e0ac0c1b6ce9947e412307fbc7d7659b5c8
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:39:12 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:56 +0000

    ufshci: fix WLUN periph reference counting
    
    The driver stored the WLUN periph pointer without holding a reference,
    so the pointer went stale when the pass(4) device went away. In
    addition, ufshci_sim_send_ssu() released a reference that it had never
    acquired.
    
    Define a simple ownership rule. ufshci_sim_find_periph() acquires the
    periph and returns it. The cache owns one reference. The controller
    destructor drops it with cam_periph_release() before taking the SIM
    lock, since the release takes the CAM device lock by itself.
    ufshci_sim_send_ssu() acquires its own reference and releases it when
    done. Reuse the cached periph instead of searching again, so the old
    reference is not leaked.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58658
    
    (cherry picked from commit c84c2bf78b39058a339551117323668c933f6162)
---
 sys/dev/ufshci/ufshci_ctrlr.c   |  2 ++
 sys/dev/ufshci/ufshci_dev.c     | 13 ++++++++-----
 sys/dev/ufshci/ufshci_private.h |  1 +
 sys/dev/ufshci/ufshci_sim.c     | 36 +++++++++++++++++++++++++++++++-----
 4 files changed, 42 insertions(+), 10 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index cb5549f8e7c9..421aa1e28124 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -448,6 +448,8 @@ ufshci_ctrlr_destruct(struct ufshci_controller *ctrlr, device_t dev)
 		bus_release_resource(ctrlr->dev, SYS_RES_IRQ,
 		    rman_get_rid(ctrlr->res), ctrlr->res);
 
+	ufshci_sim_release_wlun_periph(ctrlr);
+
 	mtx_lock(&ctrlr->sc_mtx);
 
 	ufshci_sim_detach(ctrlr);
diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index c53d9b71ba2c..7113834db13a 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -508,12 +508,15 @@ ufshci_dev_init_ufs_power_mode(struct ufshci_controller *ctrlr)
 	if (ctrlr->quirks & UFSHCI_QUIRK_SKIP_WELL_KNOWN_LUNS)
 		return (0);
 
-	ctrlr->ufs_device_wlun_periph = ufshci_sim_find_periph(ctrlr,
-	    UFSHCI_WLUN_UFS_DEVICE);
 	if (ctrlr->ufs_device_wlun_periph == NULL) {
-		ufshci_printf(ctrlr,
-		    "Well-known LUN `UFS Device (0x50)` not found\n");
-		return (0);
+		/* The returned reference is kept by the cached pointer. */
+		ctrlr->ufs_device_wlun_periph = ufshci_sim_find_periph(ctrlr,
+		    UFSHCI_WLUN_UFS_DEVICE);
+		if (ctrlr->ufs_device_wlun_periph == NULL) {
+			ufshci_printf(ctrlr,
+			    "Well-known LUN `UFS Device (0x50)` not found\n");
+			return (0);
+		}
 	}
 
 	ctrlr->ufs_dev.power_mode_supported = true;
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index e7345fc5a410..c738e246e96c 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -448,6 +448,7 @@ uint8_t ufshci_sim_translate_scsi_to_ufs_lun(lun_id_t scsi_lun);
 uint64_t ufshci_sim_translate_ufs_to_scsi_lun(uint8_t ufs_lun);
 int ufshci_sim_attach(struct ufshci_controller *ctrlr);
 void ufshci_sim_detach(struct ufshci_controller *ctrlr);
+void ufshci_sim_release_wlun_periph(struct ufshci_controller *ctrlr);
 struct cam_periph *ufshci_sim_find_periph(struct ufshci_controller *ctrlr,
     uint8_t wlun);
 int ufshci_sim_send_ssu(struct ufshci_controller *ctrlr, bool start,
diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index 148840123d13..9d80dd195ad9 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -393,6 +393,20 @@ ufshci_sim_attach(struct ufshci_controller *ctrlr)
 	return (0);
 }
 
+/*
+ * Drop the cached WLUN periph reference. cam_periph_release() takes the
+ * CAM device lock itself, so call this without sc_mtx held: CAM takes
+ * the device lock before the SIM lock, not the other way around.
+ */
+void
+ufshci_sim_release_wlun_periph(struct ufshci_controller *ctrlr)
+{
+	if (ctrlr->ufs_device_wlun_periph != NULL) {
+		cam_periph_release(ctrlr->ufs_device_wlun_periph);
+		ctrlr->ufs_device_wlun_periph = NULL;
+	}
+}
+
 void
 ufshci_sim_detach(struct ufshci_controller *ctrlr)
 {
@@ -425,6 +439,10 @@ ufshci_sim_detach(struct ufshci_controller *ctrlr)
 	}
 }
 
+/*
+ * On success this returns a referenced periph; the caller is responsible
+ * for dropping the reference with cam_periph_release().
+ */
 struct cam_periph *
 ufshci_sim_find_periph(struct ufshci_controller *ctrlr, uint8_t wlun)
 {
@@ -446,6 +464,8 @@ ufshci_sim_find_periph(struct ufshci_controller *ctrlr, uint8_t wlun)
 	while (1) {
 		xpt_path_lock(path);
 		periph = cam_periph_find(path, "pass");
+		if (periph != NULL && cam_periph_acquire(periph) != 0)
+			periph = NULL;
 		xpt_path_unlock(path);
 
 		if (periph)
@@ -474,17 +494,23 @@ ufshci_sim_send_ssu(struct ufshci_controller *ctrlr, bool start,
 	union ccb *ccb;
 	int err;
 
-	/* Acquire periph reference */
-	if (periph && cam_periph_acquire(periph) != 0) {
+	/* Acquire a periph reference for the duration of this call. */
+	if (periph != NULL && cam_periph_acquire(periph) != 0) {
+		/* The cached periph is going away; drop its reference. */
+		cam_periph_release(periph);
+		ctrlr->ufs_device_wlun_periph = NULL;
 		periph = NULL;
 	}
 
 	if (periph == NULL) {
-		/* If the periph device does not exist, it will try to find it
-		 * again */
+		/*
+		 * If the periph device does not exist, try to find it again.
+		 * The reference returned by ufshci_sim_find_periph() is used
+		 * for this call; take an extra one for the cached pointer.
+		 */
 		periph = ufshci_sim_find_periph(ctrlr,
 		    (uint8_t)UFSHCI_WLUN_UFS_DEVICE);
-		if (periph)
+		if (periph != NULL && cam_periph_acquire(periph) == 0)
 			ctrlr->ufs_device_wlun_periph = periph;
 	}
 

From nobody Tue Oct  6 07:51:07 2026
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 4hzT303YQrz6cWKs
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:08 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3018p3z4GY4
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:08 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273068;
	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=d706M8YebRvjK8UOcUlPpdHedTGsfKIwOclM5FyBafw=;
	b=V/XTR9hXY4LFh6MBevap00QTuaawlAvMU1G4c9Em0aM6ukwQyBlnKOoT/Nf9VxYs0Vq0Zj
	lJc5XG+d8toKJyqpWS7ITIcKpPhzeyC1utSATAkfpoti7e3LU0M9R0PKcMTz3wy/Yo3IvI
	w4wRa1WLdIiMmMhIi1X1OnoGeKeorBYtde6aCz/SFYWSQdHm2IRvsh+7eW0b4TqCW6f/Z0
	Fw9RdBxFsqPWcbXRzKAzZUISzCzna49+I17MphnJ2mMSVzVuNKzCtKs01LCQj2aNJo05kV
	OaoXZdBanTnuB84DDir8GlSb/6m24MIr9covoT4evI40aFFFrGwg8PWYkbjtAw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273068;
	b=J+0Zcem/+h1m1h+spcaFm9O8oHfepNHP06kVcESLQsXJ6gaLPH+kcb6No8ZuIpwmzf4GSK
	RtM7M0jlYZAsZsMQQi2rGenswSNMzXtjZqEk+5n7g8GOpgrfoS8HpaH/boGLIfaCGTuFot
	LVwD+5U/mkGwhSf6Bk4I2GAyCkJ+br22DRmKAQqhv+DHMDdLbxBLXKKBq6O5xu1/uuiZFi
	n2tdtEQ+9FY6CXB4O3RDOb0fJYK63nAlbKCTMsucakOS/AKXN85LW3jE1p7ijc899/cFmB
	BMSxESHd3XqbU4h2L3GJ7i0Kk1ShKnRxNzxQc9/4B+biIpZnwzgF5hvaQXNOkQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273068;
	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=d706M8YebRvjK8UOcUlPpdHedTGsfKIwOclM5FyBafw=;
	b=v+esHEpn9DQeXwPo7N0ghmhq9CtBsuoxizPULe8mJ+7q2lVcTKk+pj8FLNfep6sebFaOoO
	dXOOrx6YtnnfesgQjO1T2vfmo/uJ2juhacFGRgTQp9HospawWU55xxOvT5T++joMCkM9hG
	ehyvSt3j71szxZSHCuTWihzVMRgxXX27WIwmj6xl0EfeccKx5crk5wn8ihGNWErsznWKaX
	qcUvLD9mJhZquLop0+/V50OFRpHmZZw+da/ijs7bWae4mBadHXV8G5xhtKMxo6GUDqNU9o
	9wLU74HJfflGrXL/fZeg043G6G0af40ErGQc//PT7c3eDasgx/XGJJTIrZaLQw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2z6z37zxZF
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:07 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 1904c
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:07 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 87ececd2dd8f - stable/15 - ufshci: free the correct address when DMA load fails
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 87ececd2dd8f3de45be0010e0bfbd9941d4e29e5
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:07 +0000
Message-Id: <6ac4a86b.1904c.56e9d025@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=87ececd2dd8f3de45be0010e0bfbd9941d4e29e5

commit 87ececd2dd8f3de45be0010e0bfbd9941d4e29e5
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:40:28 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:56 +0000

    ufshci: free the correct address when DMA load fails
    
    The bus_dmamap_load() error paths passed hwq->utrd and req_queue->ucd
    to bus_dmamem_free(), but both pointers are only assigned after a
    successful load and are still NULL at that point. The freshly
    allocated memory was leaked. Free the local buffer instead.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58659
    
    (cherry picked from commit c2186638ff7052e3803f2bdab9ad62cfb69ac7de)
---
 sys/dev/ufshci/ufshci_req_sdb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_req_sdb.c b/sys/dev/ufshci/ufshci_req_sdb.c
index 54542f48b32c..cc99b645331c 100644
--- a/sys/dev/ufshci/ufshci_req_sdb.c
+++ b/sys/dev/ufshci/ufshci_req_sdb.c
@@ -112,7 +112,7 @@ ufshci_req_sdb_cmd_desc_construct(struct ufshci_req_queue *req_queue,
 	if (bus_dmamap_load(req_queue->dma_tag_ucd, req_queue->ucdmem_map,
 		ucdmem, ucd_allocsz, ufshci_ucd_map, hwq, 0) != 0) {
 		ufshci_printf(ctrlr, "failed to load cmd desc memory\n");
-		bus_dmamem_free(req_queue->dma_tag_ucd, req_queue->ucd,
+		bus_dmamem_free(req_queue->dma_tag_ucd, ucdmem,
 		    req_queue->ucdmem_map);
 		goto out;
 	}
@@ -222,7 +222,7 @@ ufshci_req_sdb_construct(struct ufshci_controller *ctrlr,
 	if (bus_dmamap_load(hwq->dma_tag_queue, hwq->queuemem_map, queuemem,
 		alloc_size, ufshci_single_map, &queuemem_phys, 0) != 0) {
 		ufshci_printf(ctrlr, "failed to load request queue memory\n");
-		bus_dmamem_free(hwq->dma_tag_queue, hwq->utrd,
+		bus_dmamem_free(hwq->dma_tag_queue, queuemem,
 		    hwq->queuemem_map);
 		goto out;
 	}

From nobody Tue Oct  6 07:51:09 2026
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 4hzT315kZ4z6cW42
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:09 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT312Q0zz4GKn
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:09 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273069;
	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=kh1Iw9cGBByDBL2gBjSrXvkeYQ3h9Cxq4zZjLiHrOgc=;
	b=qGGSCgI2kAQlii9fomRQJIv7AEM9oWbSPLQURAPCzfDjeftGghp8asbFmu7aIj8AT4sX6h
	pewpWhrLoAgN9AQjs/8Kp3H+7m8tjTvjVKLlTOpuui0diu0rQ4c92qe0sLZ5xLtaVnn6jE
	Ts0QYOlIEUGolWa025NhjTP7XISud5bCvaGOQU5msIIWGjQAbMxKoE/LPIjeJ3FKtgdTCC
	ykxm1tBf95BDczSSJiwPOcwRM++6IhzeUGXqNRvagL7AQFXGK1OQ3O9MvEWxwBpi2pKAAa
	RUkwl4R4WgPQ74Qqfdekb+D26uZzJij/tje9ihmX2kwKCpy1FKyt7uGPww3EVA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273069;
	b=w63KVbcconexJl2Xkt43OUasL3xO5ltyjYzzWANS5zude8rnYrOQwmrzPTOhmcBw/Nz8nO
	i8YpvPFaY1s7fQkqoLTIH8daIxO5M5XWIa/xq7m5juXoOz0BXZGzlIwvLApinwxZMn2yC4
	7oVL7C+RrVCWidZD+i/IO3JJaUmsRXdvsfo0+vqRP5bEIJYiDlds9OuPcvf8viwDDKzyGw
	WQElSqNQF7kyDzvbYteF7ax+boTACWrNn1uCMx2fNoSuiTO8J5HiVBYOVsQlR5LLzNqLND
	r47MxBP9mZD966OKqSV89p1Y84CgANOPhszIsnfkUzE5bF0KGhy4t7/QRdWWhg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273069;
	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=kh1Iw9cGBByDBL2gBjSrXvkeYQ3h9Cxq4zZjLiHrOgc=;
	b=LA2IWZZl4c1uKkFYAPr0E/Av43uwZn9Tj494D6hzDTsBHXm6b4m5RiG2NrnQB8kN2xg4O7
	aGUTv3vAaAP/XQSO0oWiSGr6I8Y/7EJ+bnP21a1pgZS13207Xl4oQlXs91c6/Hbpg2fO9K
	3Vzx0R57q+noMcOCDtXXeNYbvTGoOKPIWHiD5C7qXJnhEtlhiv/pExdzZfPWl/NwsEWahe
	b/haxRECmKBcvLeq2mENNG18DTmjobo+k2IvDoUovRN2RKwpX874a9hICRmnVIvGilXXgE
	fWhbIrzAWtCd5MQPOTAHyCB3057VN8uUu4PG7r4Z3UMTKrxKB0qi7x+myPP26A==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT310jt5zxt2
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:09 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 19051
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:09 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 6b85b8e923ae - stable/15 - ufshci: tolerate partially constructed queues in SDB teardown
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 6b85b8e923ae55ca57c15eb46103a2a35cdc3ef4
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:09 +0000
Message-Id: <6ac4a86d.19051.c44ae2d@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=6b85b8e923ae55ca57c15eb46103a2a35cdc3ef4

commit 6b85b8e923ae55ca57c15eb46103a2a35cdc3ef4
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:42:16 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:57 +0000

    ufshci: tolerate partially constructed queues in SDB teardown
    
    When attach fails, ufshci_req_sdb_destroy() runs on a partially
    constructed queue, and it runs twice: once from the construct error
    path and once from the controller destructor.
    
    Make that safe: NULL-check each resource before freeing it and clear
    the pointer afterwards, so a second call finds nothing to do. The
    construct error label no longer frees the command descriptors itself,
    which fixes a double free of ucd_bus_addr. Also destroy the payload
    DMA tag, which was previously leaked. Drop the mtx_initialized()
    checks: the locks are always set up before any failure path can reach
    the destroy.
    
    Attach can also fail before the queues were constructed at all. The
    destructor would then call a NULL qops.destroy pointer, so skip the
    destroy when the queue was never set up.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58660
    
    (cherry picked from commit 24c2ead33b44ca5db2605b462c935236f3a73443)
---
 sys/dev/ufshci/ufshci_req_queue.c |  8 +++++++
 sys/dev/ufshci/ufshci_req_sdb.c   | 44 +++++++++++++++++++++++----------------
 2 files changed, 34 insertions(+), 18 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
index 371b9c520979..d8d86070c18c 100644
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -72,6 +72,10 @@ ufshci_utmr_req_queue_construct(struct ufshci_controller *ctrlr)
 void
 ufshci_utmr_req_queue_destroy(struct ufshci_controller *ctrlr)
 {
+	/* Attach may fail before the queue ops are set up. */
+	if (ctrlr->task_mgmt_req_queue.qops.destroy == NULL)
+		return;
+
 	ctrlr->task_mgmt_req_queue.qops.destroy(ctrlr,
 	    &ctrlr->task_mgmt_req_queue);
 }
@@ -114,6 +118,10 @@ ufshci_utr_req_queue_construct(struct ufshci_controller *ctrlr)
 void
 ufshci_utr_req_queue_destroy(struct ufshci_controller *ctrlr)
 {
+	/* Attach may fail before the queue ops are set up. */
+	if (ctrlr->transfer_req_queue.qops.destroy == NULL)
+		return;
+
 	ctrlr->transfer_req_queue.qops.destroy(ctrlr,
 	    &ctrlr->transfer_req_queue);
 }
diff --git a/sys/dev/ufshci/ufshci_req_sdb.c b/sys/dev/ufshci/ufshci_req_sdb.c
index cc99b645331c..c7bf033ddc37 100644
--- a/sys/dev/ufshci/ufshci_req_sdb.c
+++ b/sys/dev/ufshci/ufshci_req_sdb.c
@@ -22,10 +22,16 @@ ufshci_req_sdb_cmd_desc_destroy(struct ufshci_req_queue *req_queue)
 	struct ufshci_tracker *tr;
 	int i;
 
-	for (i = 0; i < req_queue->num_trackers; i++) {
-		tr = hwq->act_tr[i];
-		bus_dmamap_destroy(req_queue->dma_tag_payload,
-		    tr->payload_dma_map);
+	if (req_queue->dma_tag_payload != NULL) {
+		for (i = 0; i < req_queue->num_trackers; i++) {
+			tr = hwq->act_tr[i];
+			if (tr->payload_dma_map != NULL)
+				bus_dmamap_destroy(req_queue->dma_tag_payload,
+				    tr->payload_dma_map);
+		}
+
+		bus_dma_tag_destroy(req_queue->dma_tag_payload);
+		req_queue->dma_tag_payload = NULL;
 	}
 
 	if (req_queue->ucd) {
@@ -42,6 +48,7 @@ ufshci_req_sdb_cmd_desc_destroy(struct ufshci_req_queue *req_queue)
 	}
 
 	free(req_queue->hwq->ucd_bus_addr, M_UFSHCI);
+	req_queue->hwq->ucd_bus_addr = NULL;
 }
 
 static void
@@ -145,7 +152,6 @@ ufshci_req_sdb_cmd_desc_construct(struct ufshci_req_queue *req_queue,
 
 	return (0);
 out:
-	ufshci_req_sdb_cmd_desc_destroy(req_queue);
 	return (ENOMEM);
 }
 
@@ -297,24 +303,27 @@ void
 ufshci_req_sdb_destroy(struct ufshci_controller *ctrlr,
     struct ufshci_req_queue *req_queue)
 {
-	struct ufshci_hw_queue *hwq = &req_queue->hwq[UFSHCI_SDB_Q];
-	struct ufshci_tracker *tr;
+	struct ufshci_hw_queue *hwq;
 	int i;
 
+	if (req_queue->hwq == NULL)
+		return;
+
+	hwq = &req_queue->hwq[UFSHCI_SDB_Q];
+
 	mtx_lock(&hwq->recovery_lock);
 	hwq->timer_armed = false;
 	mtx_unlock(&hwq->recovery_lock);
 	callout_drain(&hwq->timer);
 
-	if (!req_queue->is_task_mgmt)
-		ufshci_req_sdb_cmd_desc_destroy(&ctrlr->transfer_req_queue);
+	if (hwq->act_tr != NULL) {
+		if (!req_queue->is_task_mgmt)
+			ufshci_req_sdb_cmd_desc_destroy(
+			    &ctrlr->transfer_req_queue);
 
-	for (i = 0; i < req_queue->num_trackers; i++) {
-		tr = hwq->act_tr[i];
-		free(tr, M_UFSHCI);
-	}
+		for (i = 0; i < req_queue->num_trackers; i++)
+			free(hwq->act_tr[i], M_UFSHCI);
 
-	if (hwq->act_tr) {
 		free(hwq->act_tr, M_UFSHCI);
 		hwq->act_tr = NULL;
 	}
@@ -331,12 +340,11 @@ ufshci_req_sdb_destroy(struct ufshci_controller *ctrlr,
 		hwq->dma_tag_queue = NULL;
 	}
 
-	if (mtx_initialized(&hwq->recovery_lock))
-		mtx_destroy(&hwq->recovery_lock);
-	if (mtx_initialized(&hwq->qlock))
-		mtx_destroy(&hwq->qlock);
+	mtx_destroy(&hwq->recovery_lock);
+	mtx_destroy(&hwq->qlock);
 
 	free(req_queue->hwq, M_UFSHCI);
+	req_queue->hwq = NULL;
 }
 
 struct ufshci_hw_queue *

From nobody Tue Oct  6 07:51:10 2026
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 4hzT324vQFz6cW6r
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:10 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT322sbVz4GKy
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:10 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273070;
	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=pZ+Zy4uT+FAQMgVTwFR5u5rqfEIqve44CtxTBQyz9Ss=;
	b=EtjqaRpNQ//3HDHQRIWBo/HUncyohnqkUyaic5RtyovVQEBPhQg2GDeLbUE/ZpQvrG/AB1
	GVHidkHgS3ar8qFOPlLTu/rVadK6XKUufW9O++YOQvXsXsQZHHlSDzfykHSbrBmO2pePyi
	kgd9fy7xijYyFmVNGluKNaKdJQ75uShmPysOZVVzgU8Vuc7MgqfpAR60EyIwOaGEhbf8Eu
	cwKyP2bwZuj9/8p5UWnQuvxnHGe5WpdIKavLKdLnRdqE9vbbMCDI4kpk+fOLtgfx5Z1lj5
	Idc4go8rDEHtYPa3cav9+y0EbDnodOuJ2ZIuJ8vrRutnF8jA0YgqUKBGQksrLw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273070;
	b=ktdHdh9toawT6kdl/geXEO+E8eQchK33GGtmDONcuZrkNemd8d+qJZSl16QdJr+CtMiQ0k
	zL3+yGk1EMJGrCV9k7UbHmZSGmZVbdWcWyzPgwoHJakMN26miW2qbFxg8kGvG6ZmVsMO05
	kw3e1Vr/YSj1wuQXMEqaVwgFRO5SQhlCQBYmiBHYJ+TLUXGYKHzeIYFpvZh7jlk+9ilBgb
	pDBqMVKVSRia1u71bjFZEu6ZCaO3Btdt3QWgxy/kiAEHdmj9Vq/9ed8mv76tbYLyFmC1zL
	axRMzaQeN7WrDkR6UOwyGFLi2fNsjWXB4qcXHp2PjR8F3ToNszfFWdjE9C++Qg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273070;
	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=pZ+Zy4uT+FAQMgVTwFR5u5rqfEIqve44CtxTBQyz9Ss=;
	b=m7MOXhGvmRGhapvJQMs506lZlTKGJS+15RgkpvsVWR0SwVZDm9tG8ljq8vwzKQaZkKHBCw
	tREZ4ZmfZwMri0VTbiNpgQCxh6FyMbXXuRLpmC8MbmxfGNbOtTdAEJSGHW3ZZxyrtiSF+k
	Ma5SyauxruNaQWSm7ZAeF4cgoto6yP4VELoRZSPZLlJ0YVdDIkEFEn+JTMLHaCaT4qdWMq
	cpr4pJTX71HaJTN34jGHH8haDKsa8P5jc15WaRS5cCgZaIoaHTAOa9wvGVdu1pSM2b/s4o
	5qcy1KVe8uvCNe3xwERorAyYnNEh4MhNs+q41eusPZJRXcOaijg6gDcWcOGXRQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT321SktzwwV
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:10 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18521
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:10 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: e0ce55de9adc - stable/15 - ufshci: check SDB queue allocations for failure
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: e0ce55de9adcff53dfb9e614f623d3873d095dc7
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:10 +0000
Message-Id: <6ac4a86e.18521.1f3b6b7f@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=e0ce55de9adcff53dfb9e614f623d3873d095dc7

commit e0ce55de9adcff53dfb9e614f623d3873d095dc7
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:43:34 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:57 +0000

    ufshci: check SDB queue allocations for failure
    
    The hardware queue and ucd_bus_addr allocations use M_NOWAIT but were
    used without a NULL check, and the payload bus_dmamap_create() return
    value was ignored, so a failed allocation was only discovered by
    faulting on it later. Fail the construction instead. The teardown
    path handles the partially constructed queue.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58661
    
    (cherry picked from commit 25a61a7927c8b1a516e6e095a6f53031a8636fde)
---
 sys/dev/ufshci/ufshci_req_sdb.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/sys/dev/ufshci/ufshci_req_sdb.c b/sys/dev/ufshci/ufshci_req_sdb.c
index c7bf033ddc37..9f3a2a866ae0 100644
--- a/sys/dev/ufshci/ufshci_req_sdb.c
+++ b/sys/dev/ufshci/ufshci_req_sdb.c
@@ -86,6 +86,8 @@ ufshci_req_sdb_cmd_desc_construct(struct ufshci_req_queue *req_queue,
 	req_queue->hwq->ucd_bus_addr = malloc(sizeof(bus_addr_t) *
 		req_queue->num_trackers,
 	    M_UFSHCI, M_ZERO | M_NOWAIT);
+	if (req_queue->hwq->ucd_bus_addr == NULL)
+		return (ENOMEM);
 
 	/*
 	 * Each component must be page aligned, and individual PRP lists
@@ -141,8 +143,13 @@ ufshci_req_sdb_cmd_desc_construct(struct ufshci_req_queue *req_queue,
 	}
 
 	for (i = 0; i < req_queue->num_trackers; i++) {
-		bus_dmamap_create(req_queue->dma_tag_payload, 0,
+		error = bus_dmamap_create(req_queue->dma_tag_payload, 0,
 		    &hwq->act_tr[i]->payload_dma_map);
+		if (error != 0) {
+			ufshci_printf(ctrlr,
+			    "request payload map create failed %d\n", error);
+			goto out;
+		}
 
 		hwq->act_tr[i]->ucd = (struct ufshci_utp_cmd_desc *)ucdmem;
 		hwq->act_tr[i]->ucd_bus_addr = hwq->ucd_bus_addr[i];
@@ -181,6 +188,8 @@ ufshci_req_sdb_construct(struct ufshci_controller *ctrlr,
 	/* Single Doorbell mode uses only one queue. (UFSHCI_SDB_Q = 0) */
 	req_queue->hwq = malloc(sizeof(struct ufshci_hw_queue), M_UFSHCI,
 	    M_ZERO | M_NOWAIT);
+	if (req_queue->hwq == NULL)
+		return (ENOMEM);
 	hwq = &req_queue->hwq[UFSHCI_SDB_Q];
 	hwq->num_entries = req_queue->num_entries;
 	hwq->num_trackers = req_queue->num_trackers;

From nobody Tue Oct  6 07:51:11 2026
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 4hzT334swgz6cWL1
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:11 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT333dqWz4Gk2
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:11 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273071;
	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=d+yFBpEZcn8ODALRmrXxFuI8WG9AX+ZixD8SvBui1qc=;
	b=GuZhO35e1ZcIJg+GU2nlIFC7qUWKJtk84xXtsz36s0K0YlleTGUV4/s+EiKYEFam8k0Cvd
	7n5Iwd7bsno5jeAoopC0xAEG0qrfkqAWBg9o14ZX7zay8QxP29rrMsmoCivJhpiHvmnJF3
	ViCSa+MSXEL39o7QvSyKY6ix/l77Eg7elMTaBnCWu6QuYyVBXpNOZInC1SSAWPH1q/ZqeO
	gIcV6a2Q6Obve1Mz0dSepv0KYqgvTbcJIKcEEHsoOPfGuPt8ltdRJYbexGQeK2gS0USuhU
	sC1oGYRlwqdhe29ZRpwXQjOSvY4KRif3bRg22SLi7paLzuoduR+lCrwMtA3iMg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273071;
	b=c6gZffqJS7AiWihvkALFB3PjN40bwgCnt9R5uYvfMMsc9JuPHZjzZOVEAYexOwJugYgm8m
	qEmLg1tBnmZRIWZ3deC4gTMQUd0yUjpHDe4fyh3Q8hIditwsbHgukNNxZQoby60veyLxRJ
	PRhWvGnodR/EWx8nSufWZ8bc9/wbpa1TJEkTBCRPeqzz6bpmpjNL5mzoCXVhx+sW2MiwNq
	NwbTQfqjBfs5eDJEPlN4ASnKmGSuh7zcEpabVHbxYkV+FBv8M7XQ8oUQp2SanCwJuwzvZz
	A9jz0k4bC6LQossgGz1BHWLkfbFOzogiiMsR0VCa/P+jNrw5UorLS/oDOq9dZQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273071;
	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=d+yFBpEZcn8ODALRmrXxFuI8WG9AX+ZixD8SvBui1qc=;
	b=NmnlaWALWHomM8fKUIUSDpRKGbtcctR3uG47ap2/Mq5SVvWBcRIPCgUnmC8tdEhbrzjg5G
	MOPbtf+KvXrh1CbykMrnRFKd+DkjmU0t8972e6xZ1CNzRKedCu7PzbvR6Dv25WB53cv2Ko
	lW/pzKK7onzELAV4vqItUdc3GnpGaEEcLoh8ymTsvOw1VmeWobk7BYD+GOshuSGne0B4Ed
	z4VSmwlx1/h5w/AT+wuNbVOeLGtCmnkB6EWdvnnOOToVgL6/OLEWRyI3wxzk0cSEX6Ht1U
	V/ijjCD07Ezl5NT9YbEgsAVyd/KR3SxeKbRgeLV54WE0f+oeKIC9iYHaoa2tQw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3329wpzxqv
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:11 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 475bc
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:11 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 5f7c2adceb5c - stable/15 - ufshci: do not free the devq twice on SIM attach failure
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 5f7c2adceb5c3df28a24e8c6f0287f4a5b640263
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:11 +0000
Message-Id: <6ac4a86f.475bc.5f5756cd@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=5f7c2adceb5c3df28a24e8c6f0287f4a5b640263

commit 5f7c2adceb5c3df28a24e8c6f0287f4a5b640263
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:44:35 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:58 +0000

    ufshci: do not free the devq twice on SIM attach failure
    
    cam_sim_free() with free_devq set already frees the devq, so the
    following cam_simq_free() call on the xpt_bus_register() and
    xpt_create_path() failure paths was a double free. Also clear
    ctrlr->ufshci_sim so a later ufshci_sim_detach() does not operate on
    the freed SIM.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58662
    
    (cherry picked from commit c71705a0830497c080579896b4aa2a5ce2513f1c)
---
 sys/dev/ufshci/ufshci_sim.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index 9d80dd195ad9..4a106a6c7b8a 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -371,8 +371,9 @@ ufshci_sim_attach(struct ufshci_controller *ctrlr)
 
 	mtx_lock(&ctrlr->sc_mtx);
 	if (xpt_bus_register(ctrlr->ufshci_sim, ctrlr->dev, 0) != CAM_SUCCESS) {
+		/* cam_sim_free() with free_devq also frees the devq. */
 		cam_sim_free(ctrlr->ufshci_sim, /*free_devq*/ TRUE);
-		cam_simq_free(devq);
+		ctrlr->ufshci_sim = NULL;
 		mtx_unlock(&ctrlr->sc_mtx);
 		printf("Failed to create a bus\n");
 		return (ENOMEM);
@@ -383,7 +384,7 @@ ufshci_sim_attach(struct ufshci_controller *ctrlr)
 		CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 		xpt_bus_deregister(cam_sim_path(ctrlr->ufshci_sim));
 		cam_sim_free(ctrlr->ufshci_sim, /*free_devq*/ TRUE);
-		cam_simq_free(devq);
+		ctrlr->ufshci_sim = NULL;
 		mtx_unlock(&ctrlr->sc_mtx);
 		printf("Failed to create a path\n");
 		return (ENOMEM);

From nobody Tue Oct  6 07:51:12 2026
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 4hzT346NJhz6cWQ7
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:12 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT344Xqmz4Gl0
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:12 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273072;
	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=f4UZiOvYmA7MUWttPOoWb0gb1FuvNuk1eu2+a+wGOM0=;
	b=ip/b1FkBninBv/UuunMdE/cbjjWPQyZJ6vj+9eeNcWdSpGNqZv4PwwNQnZVBt6qQEQXug5
	Mfix7AWEJ8D6WjAELsgpgog9cVAGzz9I1UsTmWuE3Ni3XBcx4lZh1CwzbpFMKT3sEo4ulg
	zm0/sktWcYrek09kIW/vX9/mqH5UciuuxCyQ7CcblTKe9lXchee+rhn/HL2fVTbCtOnlIa
	YtJ1MS8tawFGEJ2eknYKM4hcDM0ntqy8qrcEeKj3nRiIIaZ8H2p/+/a6rIIBOgJSps94fO
	CUqSfqFO6U/ZnCzJxtsZpIZ1Gq1uPh/1wr/JiBckWtzbwnyh9VV2OYQNYwK4eQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273072;
	b=BRFowL5AlE7kcO+3NkomvX8jB0NN8pnOIUO241i9Z22/scyriXjElSuyJo6NeO0Ujiobjq
	X8uGqoNdGiBfOID8XDeDV6T963N1T11L/A5aEkXocuelTFqy8qB5SIOaqGfSTUVfquFxcj
	ZSD6aQ1X/2YLLhk2ZsKCEgMfn3b0o82UCTBdky+g/wbjiudA5B3gdvUz2CLdX1WpvAzzLU
	DO7yg4CNaMoD0BEhn/gy4HIS2ceao6oRpM4YLg/p3AF1I6WYOHlccPkceQ91qES4P6wk3G
	mubGE+0kMA3IQd6dupbng+DWgGePu1LRk2XrIlFyrPx9hGh/AlPj/quleobKsw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273072;
	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=f4UZiOvYmA7MUWttPOoWb0gb1FuvNuk1eu2+a+wGOM0=;
	b=Sl4veP3M7DhmxqR/F7Q3JVXRsXe+jkL1ivqgSVHfERDEa+LsVm4o8/o/TcrQ+KzD4iTSFP
	POMfPCR/F8ocVdeH1wOlFlGED1W/F542XFeXaZcWf3riLUsyv3h3WUoQRA4QGACKP5SHYy
	Dnb+e0YP/bO5Nu5l8vryHbMQqebuipLn8k8iZb/NEVLect6UBl5FTMGpwm1UdGP/2ukBkT
	yAoB1QEUBSDhSiQ8GdD4xf/AqT5LXa+4b+/ToEEcWbh26D1GnyUnng92FZ18Um5Bmru2z6
	FaBRO8Cl+SZBxQjCtaC2pxGKtxlT490K2rdnSNZHo0Y1fBRj8yz5/FkyB6/j7w==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3433zbzxt5
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:12 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 47731
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:12 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 75180cf2ec09 - stable/15 - ufshci: initialize alloc_units before the dedicated-buffer scan
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 75180cf2ec09248c501ccfd9923dd1e2e5726b65
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:12 +0000
Message-Id: <6ac4a870.47731.341b0bff@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=75180cf2ec09248c501ccfd9923dd1e2e5726b65

commit 75180cf2ec09248c501ccfd9923dd1e2e5726b65
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:45:49 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:58 +0000

    ufshci: initialize alloc_units before the dedicated-buffer scan
    
    If every unit descriptor read failed in the LU-dedicated WriteBooster
    scan, alloc_units was used uninitialized. Start it at zero so that case
    is treated as a zero-sized buffer and WriteBooster is disabled.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58663
    
    (cherry picked from commit 456ab423dddc0ce07787b21fcb79426abc7b436e)
---
 sys/dev/ufshci/ufshci_dev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index 7113834db13a..db7a8c564a29 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -745,7 +745,7 @@ ufshci_dev_config_write_booster(struct ufshci_controller *ctrlr)
 {
 	struct ufshci_device *dev = &ctrlr->ufs_dev;
 	uint32_t extended_ufs_feature_support;
-	uint32_t alloc_units;
+	uint32_t alloc_units = 0;
 	struct ufshci_unit_descriptor unit_desc;
 	uint8_t lun;
 	bool is_life_time_left;

From nobody Tue Oct  6 07:51:13 2026
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 4hzT362NXdz6cWL8
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:14 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT355LMSz4GnP
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:13 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273073;
	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=DAfSxX9hD7Q8VsYVQ7rj+Gmfe6MRscloGRywoelg7jc=;
	b=faq00cOXE4KMVrKLgAT79C+duJfnNuRLyxPnL6DDwW4h0irbfbRXX2s6WVCozHt392G4z2
	dnmeC4yetl9fibVduAFwKrEUyzPDk1aI1T48yY6qYqzSRPy1cbqb6iBEmLETkfsVnRl5Q4
	n34yiXsOXpD7ijX6qQ7LjAkvoJ4/1zqJA/10UuaFT/tWLeud+eZlwkGSFlhBaond4zC6Mn
	9L7fzcD3cDC3HHQuOu1C9xYiMjz4iqWxCS8t0GN1Jdaj0nlYt20yKqwcM8p9M0KbLO6Gv8
	XlF05n43q7/tJJ8hb3Qc1UHT1qQVInyAgkDSuy+Y+U+7B3HfmacwLSqghmTtog==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273073;
	b=m4esqUoxfDwMH3PtXJ2JZTJmb2PZP8/++M72WH3JW1eHeJ2Qj3rfX8pI3f0ZkXfXJGI2Lk
	ksr8K/slKjlDZEcATzPxsCwyCMlKhC/X1tO3w+US1DUngayftRfFs9DlrUGkiB2CH+5ab+
	sgjEiUUjjW8dBpNXSsRmCazaM6Iqgv6t4+8ILh+aE7JL+XCII+PlegM0YjsB8Xm3sYHz4H
	jHuKuky9pm+h3iMgYhKpB29D4w62GQW5Whi/QzAzj6YwTCWh+/R91WmwDiQWgo2crj53rQ
	uqZHHZypSMN6gBvvo4LZiT9ukR6VVSKetH2iPRFJoO8gcjVV3NacOA6Z9pWB/g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273073;
	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=DAfSxX9hD7Q8VsYVQ7rj+Gmfe6MRscloGRywoelg7jc=;
	b=V2+eIzM6z9IZ68NgN4lSyhn16nw5cg6rBvIeNabn+XAXQNNBqVR3WxPWub3+wBPVxJgqYb
	gtfpmlzig0ToC9Q/XZqqwXF1YnI06cLfIkTDrsfoieivR9Ik8kkzKUYTgPLijCl13GhIDm
	iLy58J1wMtQ+ItQE3be1dRT+/9fsdDdCdqD5otWUz/F/WrobSwEp7ZLnEVS+x0IX44izE8
	4L4I7a272leuxfBG/vntuCG5qoDzIpkeR4nosa/45ir2ooA+f9umqm8vva9YTrf/UCY4m5
	HT8psUaI+rdILqFfgTYUk7TI4fjYudj/Sd26YTn1O5fUxgHfG1//JLOGJo018w==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT353rcxzxZG
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:13 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18e06
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:13 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 2e2f523ae699 - stable/15 - ufshci: byte-swap big-endian UPIU fields
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 2e2f523ae6999d39e07dfebffd06f942fe8a13b8
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:13 +0000
Message-Id: <6ac4a871.18e06.51ce0f19@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=2e2f523ae6999d39e07dfebffd06f942fe8a13b8

commit 2e2f523ae6999d39e07dfebffd06f942fe8a13b8
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:46:50 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:59 +0000

    ufshci: byte-swap big-endian UPIU fields
    
    The UPIU wire fields are big-endian. The task management and query
    builders wrote host-order values into them. The completion paths also
    read the results back without conversion. On a little-endian host an
    ABORT_TASK carried a swapped task tag and LUN, a query carried a
    swapped length, and attribute reads returned swapped values. Tolerant
    devices masked most of the damage.
    
    Convert with htobe*/be*toh at the wire boundary, as ufshci_sim.c
    already does for its fields.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58664
    
    (cherry picked from commit 50a00f10d830119ed54f5bce1b34533f3a09325e)
---
 sys/dev/ufshci/ufshci_ctrlr_cmd.c | 10 +++++-----
 sys/dev/ufshci/ufshci_dev.c       |  2 +-
 sys/dev/ufshci/ufshci_req_queue.c | 13 +++++++------
 3 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_ctrlr_cmd.c b/sys/dev/ufshci/ufshci_ctrlr_cmd.c
index 2e85cfa4b5b0..faeb6f98c942 100644
--- a/sys/dev/ufshci/ufshci_ctrlr_cmd.c
+++ b/sys/dev/ufshci/ufshci_ctrlr_cmd.c
@@ -29,9 +29,9 @@ ufshci_ctrlr_cmd_send_task_mgmt_request(struct ufshci_controller *ctrlr,
 	    UFSHCI_UPIU_TRANSACTION_CODE_TASK_MANAGEMENT_REQUEST;
 	upiu->header.lun = lun;
 	upiu->header.ext_iid_or_function = function;
-	upiu->input_param1 = lun;
-	upiu->input_param2 = task_tag;
-	upiu->input_param3 = iid;
+	upiu->input_param1 = htobe32(lun);
+	upiu->input_param2 = htobe32(task_tag);
+	upiu->input_param3 = htobe32(iid);
 
 	error = ufshci_ctrlr_submit_task_mgmt_request(ctrlr, req);
 	if (error)
@@ -87,8 +87,8 @@ ufshci_ctrlr_cmd_send_query_request(struct ufshci_controller *ctrlr,
 	upiu->idn = param.type;
 	upiu->index = param.index;
 	upiu->selector = param.selector;
-	upiu->value_64 = param.value;
-	upiu->length = param.desc_size;
+	upiu->value_64 = htobe64(param.value);
+	upiu->length = htobe16(param.desc_size);
 
 	error = ufshci_ctrlr_submit_transfer_request(ctrlr, req);
 	if (error)
diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index db7a8c564a29..454572f966d5 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -192,7 +192,7 @@ ufshci_dev_read_attribute(struct ufshci_controller *ctrlr,
 		return (ENXIO);
 	}
 
-	*value = status.cpl.response_upiu.query_response_upiu.value_64;
+	*value = be64toh(status.cpl.response_upiu.query_response_upiu.value_64);
 
 	return (0);
 }
diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
index d8d86070c18c..db96d13fad24 100644
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -484,6 +484,7 @@ ufshci_abort_complete(void *arg, const struct ufshci_completion *status,
     bool error)
 {
 	struct ufshci_tracker *tr = arg;
+	uint32_t output_param1;
 
 	/*
 	 * We still need to check the active tracker array, to cover race where
@@ -508,12 +509,12 @@ ufshci_abort_complete(void *arg, const struct ufshci_completion *status,
 		ufshci_req_queue_manual_complete_tracker(tr,
 		    UFSHCI_DESC_ABORTED, UFSHCI_RESPONSE_CODE_GENERAL_FAILURE);
 
-		if ((status->response_upiu.task_mgmt_response_upiu
-			    .output_param1 ==
-			UFSHCI_TASK_MGMT_SERVICE_RESPONSE_FUNCTION_COMPLETE) ||
-		    (status->response_upiu.task_mgmt_response_upiu
-			    .output_param1 ==
-			UFSHCI_TASK_MGMT_SERVICE_RESPONSE_FUNCTION_SUCCEEDED)) {
+		output_param1 = be32toh(
+		    status->response_upiu.task_mgmt_response_upiu.output_param1);
+		if (output_param1 ==
+			UFSHCI_TASK_MGMT_SERVICE_RESPONSE_FUNCTION_COMPLETE ||
+		    output_param1 ==
+			UFSHCI_TASK_MGMT_SERVICE_RESPONSE_FUNCTION_SUCCEEDED) {
 			ufshci_printf(tr->hwq->ctrlr,
 			    "Warning: the abort task request completed \
 			    successfully, but the original task is still incomplete.");

From nobody Tue Oct  6 07:51:14 2026
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 4hzT371WF9z6cW4H
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:15 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT365zGnz4GcT
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:14 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273074;
	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=yxJ9+mnUs+RJbSIteAUr1uSYTzdIIP1EAzLEex2Ag0o=;
	b=XZp8MrtK6o1oGMtgfzcyodSVFHrOx8XPAdn27OsWZmPSllRmLYHUOUZjm/1sSK4dpNVMp9
	ZmCGCbqcvnl5PLSpp+c0P40etOqup0zC2HOxwu0vAGWFVRIvpJ2tQZy0Dkq+myyDeam3o4
	t4S3vUJTeRBCfVeE2qAC/Wc58+0QXuiZB/dhKv7WBlxkB3TShzgO6nNFJ2rjHjkh0IomjK
	QGinlekpLC+AO9LIWcRG7WCk8nxoZg/qXzEkK+As2RF7M2wG6kYXq9HIpkNBcIA9WPTnsq
	Ss8nmuI3sIDAvyp2HpvHjlgD8PNxAMrSJu8F0R4mGRCRTEo50mqDLKkHr7l7nA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273074;
	b=l1keJvHsrTlbyz9TyfwvXUa+iEmq79vDKW0sewcJld5QcUxWOO/fHUCTZmJw0GTbEJ2InJ
	rC/xdOwzugQs3Ka2gXgt29/RP7O8rwh9Hro6+NsAgv/Owyd1EKa9QGo0Cy7AJuB7VsGP4h
	Em9jv2MESYG3mrZZs/PyJK5iIx9UkV/VSlSpkbueHjvML+IicRT7rT0hfTkmVmpFU8+BVX
	Wiy6tOudeX9TB18o135OKYnVc1SbzM9F3LtkjpuJhL7XryZiGtfz9NsjKbBwGFHVCmq6M2
	y0WFzeOGKEJnnqhd35jRvsdDUZJevSqGAJDQGXK8vKfO94u0oJRWhDTfQEd4sA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273074;
	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=yxJ9+mnUs+RJbSIteAUr1uSYTzdIIP1EAzLEex2Ag0o=;
	b=TYCV6FOSPzI/Wn7qJ+L5v/d4Un5QybKTt6DKB4Mw8OeKYW8LCz8CzAVtlUxwtNOsD1zP/K
	D4qYeqUYkkDEYKpwrH8ZvuiOE1jJkuU9dBO2DWhsmcqMwG/G8Nh7VJazLll+PTZ9kyuY3s
	4dDPEMuKiJvb+mgnbsa/edQ4N1Yu5zlrKp7gPwTVcxEvpHLqXIPgc+nEqtU8xmAzn0+R0D
	1ImgYCn7t1mRgypI+DPKnBpsahV7vIQIGmxszKGPYTVqvoLxgG2SLBPOlBFz7fAvkZ6eGo
	EeW6p4r4nUHAvERwBUvtq25d6d/QNhkg9agGroYNp6x9DeDJwMzbzo2DBgRA+g==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT364LfHzxpC
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:14 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18631
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:14 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: b6e20a5ae8a1 - stable/15 - ufshci: initialize desc_size for non-descriptor query requests
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: b6e20a5ae8a1782749495e4caa018e2e2cb26123
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:14 +0000
Message-Id: <6ac4a872.18631.6b1f4e14@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=b6e20a5ae8a1782749495e4caa018e2e2cb26123

commit b6e20a5ae8a1782749495e4caa018e2e2cb26123
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:47:38 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:59 +0000

    ufshci: initialize desc_size for non-descriptor query requests
    
    The flag and attribute query builders left param.desc_size
    uninitialized, so stack garbage was sent as the query UPIU length
    field. Devices generally ignore the length for these opcodes, which
    hid the bug. Zero it explicitly.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58665
    
    (cherry picked from commit af00e00f23a1d427d96fecbb39e276fc2d7dfde1)
---
 sys/dev/ufshci/ufshci_dev.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index 454572f966d5..18546d7120c0 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -86,6 +86,7 @@ ufshci_dev_read_flag(struct ufshci_controller *ctrlr,
 	param.index = 0;
 	param.selector = 0;
 	param.value = 0;
+	param.desc_size = 0;
 
 	status.done = 0;
 	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
@@ -118,6 +119,7 @@ ufshci_dev_set_flag(struct ufshci_controller *ctrlr,
 	param.index = 0;
 	param.selector = 0;
 	param.value = 0;
+	param.desc_size = 0;
 
 	status.done = 0;
 	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
@@ -148,6 +150,7 @@ ufshci_dev_clear_flag(struct ufshci_controller *ctrlr,
 	param.index = 0;
 	param.selector = 0;
 	param.value = 0;
+	param.desc_size = 0;
 
 	status.done = 0;
 	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
@@ -179,6 +182,7 @@ ufshci_dev_read_attribute(struct ufshci_controller *ctrlr,
 	param.index = index;
 	param.selector = selector;
 	param.value = 0;
+	param.desc_size = 0;
 
 	status.done = 0;
 	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
@@ -212,6 +216,7 @@ ufshci_dev_write_attribute(struct ufshci_controller *ctrlr,
 	param.index = index;
 	param.selector = selector;
 	param.value = value;
+	param.desc_size = 0;
 
 	status.done = 0;
 	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,

From nobody Tue Oct  6 07:51:15 2026
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 4hzT381fC7z6cWQB
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:16 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT376SPYz4GtH
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:15 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273075;
	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=jGYb4BLyEivEVNVCJxBsz90krNmGVIJ26+tY50Uo/9o=;
	b=ZLI+n7GYwhivBQSNx4CCFiwbxpDqPOxTIpVYSfT61jy/XEwAm1ChHQs3Qc8cEgXsFTbgp9
	rrKiSr7V0mIKC9L6Q6dvfdHmpKdRM5CZzcZRttftSxgI/s2ZQGtczG2GDxMFUcAIxgP/5x
	dcbreB5Ryqv1qv18pIWYwZ/WDSZsT/ysojUuccVystEYEHVuqQ492qYPq9KANPU4B6ITIk
	fcedmH1zNwLFGfut/crfxv2fLKKDkhZFI9qGlzF0Ud2cyyfJ2jAZv1ic860Rk0As5e8aeO
	4jfRaRPyEDleVGUHvEZiqJvUnKmpj2Kw/O/dONG3xMlLB+ndss3EOHacx68V7A==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273075;
	b=tLLfVYtwiv91TXqsAWm6cygmtNFvVRyapVWoqnR3UVJEEWp8sVUrP2+8bA5VIGSWne0bl7
	+DubDVf1lwT4r+p4KEPLGdWuKYyN9ySAyknmgxnmUkdaBBJlwk4HhxJNXrdjKhNQer2Wjb
	49Y+zrRmJVbQe+R0jMOJrGtLc8e0UcyKKsIiJ7DFSmCzu7koOdhhQVebk6ta5mOFYTJRct
	XhVPknXlVixKKZDgO9SF+UATRb7J55HCXKkZ6sNjadalilVo03TX6WA3wIpBQEPoFfEeij
	y4mC/GiNZ+TpjbPGAsP/lJE+vgzgFuquTuJ4z9wLMRsZgZrVQEKx9IyZBJveHw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273075;
	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=jGYb4BLyEivEVNVCJxBsz90krNmGVIJ26+tY50Uo/9o=;
	b=Wool4AD8jvYAT0EbpSwef8wOE/Uh35L+SoR5kwMtGrmHOeGw0valAo7B7xJ90VF38e8B+u
	uIcEobFq/ngWjglnHzPWZJWQ8K959Fua+P9r2yQuWUhmMKVTcIdQbac0n9Z6ApjHc/TAWq
	bDOBJWI4kVmVIoP9b6+WWZnw/ohsZFaqlv3Eg2aovas2yqhzQSvUv0lgv5avSY4M/tLEU1
	jhPjzpNtM7EAjqskoFGCvJS96N+hw/HKmIMZr3pT4gMd1+t6DdmYkz81F/8rjet5L3XIMB
	LaoHyWIJxqCQtvLBdjosZsV1oe8WJ2UtHt4GoWE/Nkfa0JBUyUZilCgwefVqfg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT374j1QzxcP
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:15 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 475c0
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:15 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: d3ff4bd64c07 - stable/15 - ufshci: read UIC command results while holding the lock
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: d3ff4bd64c07b1c28c38222a89307482d6df080b
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:15 +0000
Message-Id: <6ac4a873.475c0.63f3fa20@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=d3ff4bd64c07b1c28c38222a89307482d6df080b

commit d3ff4bd64c07b1c28c38222a89307482d6df080b
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:48:41 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:27:59 +0000

    ufshci: read UIC command results while holding the lock
    
    The UIC result registers (UICCMDARG2/3) are only valid between a
    command's completion and the next command's submission. They were read
    after uic_cmd_lock was dropped, so a concurrent UIC submitter could
    overwrite them in between. Read them into locals before releasing the
    lock.
    
    Also mask the generic error code to its [7:0] field when checking it,
    so unrelated bits in UICCMDARG2 (such as the attribute set type echoed
    for DME_SET) cannot be mistaken for an error.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58667
    
    (cherry picked from commit 266ce89fc231d58431293cf5b77e0854440aa13d)
---
 sys/dev/ufshci/ufshci_uic_cmd.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_uic_cmd.c b/sys/dev/ufshci/ufshci_uic_cmd.c
index 03ea8b2ba9f1..45ded2a120c6 100644
--- a/sys/dev/ufshci/ufshci_uic_cmd.c
+++ b/sys/dev/ufshci/ufshci_uic_cmd.c
@@ -170,7 +170,7 @@ ufshci_uic_send_cmd(struct ufshci_controller *ctrlr,
     struct ufshci_uic_cmd *uic_cmd, uint32_t *return_value)
 {
 	int error;
-	uint32_t config_result_code;
+	uint32_t config_result_code, result_value;
 
 	mtx_lock(&ctrlr->uic_cmd_lock);
 
@@ -188,12 +188,18 @@ ufshci_uic_send_cmd(struct ufshci_controller *ctrlr,
 
 	error = ufshci_uic_wait_cmd(ctrlr, uic_cmd);
 
+	/* The result registers stay valid only until the next command. */
+	if (error == 0) {
+		config_result_code = UFSHCIV(UFSHCI_UICCMDARG2_REG_ERROR_CODE,
+		    ufshci_mmio_read_4(ctrlr, ucmdarg2));
+		result_value = ufshci_mmio_read_4(ctrlr, ucmdarg3);
+	}
+
 	mtx_unlock(&ctrlr->uic_cmd_lock);
 
 	if (error)
 		return (ENXIO);
 
-	config_result_code = ufshci_mmio_read_4(ctrlr, ucmdarg2);
 	if (config_result_code) {
 		ufshci_printf(ctrlr,
 		    "Failed to send UIC command (Opcode: 0x%x"
@@ -210,7 +216,7 @@ ufshci_uic_send_cmd(struct ufshci_controller *ctrlr,
 	}
 
 	if (return_value != NULL)
-		*return_value = ufshci_mmio_read_4(ctrlr, ucmdarg3);
+		*return_value = result_value;
 
 	return (0);
 }

From nobody Tue Oct  6 07:51:16 2026
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 4hzT391m8Wz6cWHc
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:17 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT386dCPz4Gd1
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:16 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273076;
	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=zym4ScZJ25W6Jl2lVa7V9NkakUywVMk9D50SxZIMfvQ=;
	b=Gg61iTAshzReUm7O3y3Gn/OXPeVlpLRIcC66/iulw3xdp8cSmnuwUMxZOhWLzeZ2wOQffY
	MRMAxxq9Yx14ydTbENVfONp39dgWmiClD6yPSvX2eWUeD4bfeP7NTSYY7PE1PHxq0gOJch
	oLTmG9SHrjQJRnBHnmnQkhmc/2caNEUaCURWCofxL5Lk6QVU+Qu1a7a0nAeUpVg6IW0VcZ
	l/hTiRVNjo38Un6MQODejYDPLyD/Fh3Pi6dYJQOnn8Z0e9f1aNIhShtKjt2HfVMypDo0Ym
	bAWtFtq9urMCFY9j2/SXB6Afrxro2iCOecym87Xa9+ujGwbvvfVAwl69yrYOhA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273076;
	b=UXVGgf+7OKwtEpxay0Rp/lthmI+vrALiXKwd9OPM0sci+zlBs+mwgB3eo93Q6KktNYh/5H
	rz22AZ6OjrWK8hHncI0v7nVc6HIqSvD4SQ0R4U3vLM8muPTISY9k/BZPwBspXrgflWo9s0
	ZFsl+pLctburHjTNWPvnIIw/HfnANc4f3Q74eBt0PgAKGLm65ODOCjbyDUp4uhXsmiwhIL
	V0CHe0FxLRuVFDYgvwV0Z8EKWsxqH4zaR3XPDBRzVnNcEIwOIiCVPAzXvARRHoQOiSfTuj
	a5kS889Mqsmjt7PcaetBdiXpvjNo3tOjzPK9ZRtd/STklL/aEp/Sf30JnStMoA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273076;
	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=zym4ScZJ25W6Jl2lVa7V9NkakUywVMk9D50SxZIMfvQ=;
	b=t47FX7WCnSgRfXQ/eN2r438zXdTQHwXJiMGLfGS1aWWvzPKq0odeh44TpLjxE5uMK45yD5
	W3db4POXhKfM6mUYLctABqArxom+1Lp190gzKW04BF4dLSe6/wxwi1/arpY12lLMnuJDY5
	SYRY3pxVw42M9sVFvXtkHCj5mNGq3BWZFna+i+wt8R4iudsjJBH4REb7BZ6vJOIO0e3vDk
	1bvhDKxpuQ5aF4hVaYXs/+fvO7+XMWuPCxCBonYtLYLofReo12PtB1HTJZRekSd/OLK+9T
	w6EbXxUCRWtnP4Z6xzef9JxzNtsGM/DqQYHEM5HYCm33/PYNHULqEuYB0DE+Kg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT385cL2zxKY
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:16 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18797
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:16 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: af54fe0db727 - stable/15 - ufshci: check completions under the queue lock
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: af54fe0db727a82838f593b1716b4f2a2e404fa8
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:16 +0000
Message-Id: <6ac4a874.18797.180fc5f0@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=af54fe0db727a82838f593b1716b4f2a2e404fa8

commit af54fe0db727a82838f593b1716b4f2a2e404fa8
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:49:31 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:00 +0000

    ufshci: check completions under the queue lock
    
    The completion scan held only the recovery lock. The submit path sets
    a slot to SCHEDULED and then rings the doorbell, both under the queue
    lock. A scan running between those two steps saw a SCHEDULED slot with
    a clear doorbell and completed a command the device had not started.
    The command failed with OCS 0xf, and a reused slot could return wrong
    read data.
    
    Check the slot state and the doorbell under the queue lock. The submit
    path holds it across both steps, so a half-submitted slot can no
    longer be seen. Found with fio randrw verify on QEMU.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58668
    
    (cherry picked from commit c686e7d3b0d315c358be81b4a1151711213d998d)
---
 sys/dev/ufshci/ufshci_req_sdb.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_req_sdb.c b/sys/dev/ufshci/ufshci_req_sdb.c
index 9f3a2a866ae0..80c4e53230e3 100644
--- a/sys/dev/ufshci/ufshci_req_sdb.c
+++ b/sys/dev/ufshci/ufshci_req_sdb.c
@@ -584,16 +584,23 @@ ufshci_req_sdb_process_cpl(struct ufshci_req_queue *req_queue)
 	    BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
 
 	for (slot = 0; slot < req_queue->num_entries; slot++) {
+		bool completed;
+
 		tr = hwq->act_tr[slot];
 
 		KASSERT(tr, ("there is no tracker assigned to the slot"));
 		/*
 		 * When the response is delivered from the device, the doorbell
-		 * is cleared.
+		 * is cleared. Check it under qlock so that a slot whose
+		 * doorbell write is still in flight in the submit path is not
+		 * mistaken for a completed one.
 		 */
-		if (tr->slot_state == UFSHCI_SLOT_STATE_SCHEDULED &&
+		mtx_lock(&hwq->qlock);
+		completed = tr->slot_state == UFSHCI_SLOT_STATE_SCHEDULED &&
 		    req_queue->qops.is_doorbell_cleared(req_queue->ctrlr,
-			slot)) {
+			slot);
+		mtx_unlock(&hwq->qlock);
+		if (completed) {
 			ufshci_req_queue_complete_tracker(tr);
 			done = true;
 		}

From nobody Tue Oct  6 07:51:17 2026
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 4hzT3B3d9rz6cWHn
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:18 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3B1mdZz4Gm8
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:18 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273078;
	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=7d0DTVqJc1VzLK0nnjZ/TkBH6PEqYMlTo8gmTtVgLaM=;
	b=vjo1IwLFCbTCMNc9A+6F8M2ftSB4gK3aQKaFdYwGO5yZSuqaNGmz6dJqW2oF+gSfOmRCeQ
	B7xW9vApfArCLA/dNYPPyN6VxClFHq949eN29JKsj55YDdBL+yO4V8MjwktGBUGAWu8TzG
	3BPFxWtQ4NReTXzH3mzrpRbBkqu1aQaUcJLyFHC2mwMUtciQcUsSFsxSjNhqeZbdviokD4
	w3ruVlw5cGvgoJIuu4Ec9GPfjHx03keBijmgJ9K0TP9HGR4M0m1b3PxBsZQlzkPVVmEzvf
	hQytulmTIivZLjNBOIH9taEOWft9+Ld8adACq3X5qfXwJRm36lRyBdYX6LDKhA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273078;
	b=Y/RIioM5BJafeR+pvW9dwv3VWwd3k5dytVlUvUfiMOnXIyYQcPtYO2n+XCGCJVVsFryS9u
	MYP5qLCRDnJCFGCC9e8sOsS2jlhuCq6R0x6/SEfzseJs51LBSZrWZB/xMmMfsbxDAFuP1e
	hJKqWRL1drYNsxossswimPiPSpgGbT4riB8Nw59yJh4hgWVCyWkri4hYyBv4xzOXVRznDW
	z4TeW7C3wXHjf9/mXBY91aKqHHCqhQtcZ6x73vNHjE4jv4/uNAWRwsib8C3Mz1KJak7a0w
	MpAlX0aXRKObivGp3MxB9BnTNXC9Qsvaaa3h3qveV6rCuHo3EP5HCJdd2UlLfQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273078;
	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=7d0DTVqJc1VzLK0nnjZ/TkBH6PEqYMlTo8gmTtVgLaM=;
	b=MalM9teey/Jv3ZW/uLdQoHlSfttTyjdBC0YcGlBSdDTopFE22TcujRl5WHaL9yBNFZZI7W
	Z1p/UtfnCedPUfdda5Mcr+w4J6WhotKvHwyTqVsDyjVK16hP26DfKkmthMukJEo5HBFDK3
	GrcCBpP6cnYGLlW9CVS6rID5kTHzvI0mcxHjC2OIp+OfBYBSVGoSwKCdP0+F9aLdYqVLY4
	XfPw3AF0g5avrOqyim1fMhxCBVBmbKtwAtcukjcSn3MHrZ9OvUklZLUUB/CMx3Tz86v11b
	+JkEA1VB31E2XXaw7wXAU09S7R8IRIaSpa7WitmlGWfwIczh1DES17fEsVeg6Q==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT396RD4zxpF
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:17 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18525
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:17 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 31d28afe7ec5 - stable/15 - ufshci: release the CCB after sending a start stop unit command
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 31d28afe7ec5b92b8af1bb324be2e93ff78363b4
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:17 +0000
Message-Id: <6ac4a875.18525.4d9b38a1@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=31d28afe7ec5b92b8af1bb324be2e93ff78363b4

commit 31d28afe7ec5b92b8af1bb324be2e93ff78363b4
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:51:30 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:00 +0000

    ufshci: release the CCB after sending a start stop unit command
    
    ufshci_sim_send_ssu() got a CCB from cam_periph_getccb() but never
    returned it. Each call leaked the CCB and one slot of the device's
    CCB allocation budget. When the budget runs out, the next
    cam_periph_getccb() waits forever and the suspend path hangs.
    
    Release the CCB while the periph lock is still held, as the other CAM
    periph drivers do.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58669
    
    (cherry picked from commit aaf0e80e684da35cd527491243583467ae7c75cb)
---
 sys/dev/ufshci/ufshci_sim.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index 4a106a6c7b8a..e40079b23354 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -12,6 +12,7 @@
 #include <cam/cam_debug.h>
 #include <cam/cam_periph.h>
 #include <cam/cam_sim.h>
+#include <cam/cam_xpt_periph.h>
 #include <cam/cam_xpt_sim.h>
 #include <cam/scsi/scsi_all.h>
 #include <cam/scsi/scsi_message.h>
@@ -542,6 +543,8 @@ ufshci_sim_send_ssu(struct ufshci_controller *ctrlr, bool start,
 
 	err = cam_periph_runccb(ccb, NULL, 0, SF_RETRY_UA, NULL);
 
+	xpt_release_ccb(ccb);
+
 	cam_periph_unlock(periph);
 	/* Release periph reference */
 	cam_periph_release(periph);

From nobody Tue Oct  6 07:51:18 2026
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 4hzT3C4KFjz6cWBk
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:19 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3C1mSGz4H2Q
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:19 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273079;
	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=nHYobN4HXRYLUuulvGW7a3iBEkss/9shpnQ0vkV/tiA=;
	b=B1WJloqTB6rwKUecyGJt8rTWyJ2Fq9cXYdxxLc4kHZNoLJYLZQXpcx50fGXu1c+5posQk5
	+DuhQu3CMA3Z2CXOVEwmORIYHwGYM0HBVdEvw23tf8e9x/G4MRjRJYMZdh/XvRnIvDz13F
	/mmsrWplOMOZOn2nfBypA8Q241ymWaLcN51orLzbo14zX7bsMRL/T0VYeE9ww4aqHxiXeY
	503TOqWI4d4mCuvN5ES/lzDEpWZAdr8O//KTgh1zkvla7O22aW1LLfuqmu1BYTV+uXVNqu
	DyJmhtsP8Z3AISHjo+RL7a9I4VRiiRSBGCFm/peyAG+8M/KW2h0f1rTglnQWig==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273079;
	b=PGGW8A/bjOS1qvv8lwxfYNzG7AY5sIJHRBiiZE+9Dk/c2d3hsQaxmr0q9OMwc/XQPk8U4w
	bgsppCOVtEv3117nGkUQPVi3EN61GJG3Xj4DL81OEvMYVvM8GsYbHD3LIjzyPq2STle7vg
	n97cjiVGiZaYJwIfult35t24gMqCWL9XFjb4V0nqF7o6KnZwBDPtXr811TidPtp55x5fWj
	lzQT2vDr7dQ8dR7/8RozY7eOJMuefzu6iQbgymbajdVJ70+ju8gXDG+l98Q+/y/6ULaz8Q
	vXbwyT21v6Y6qW2HjiRZ8diK5wTeig1nOtPZn5zF1FSD4dFU8XmBMnMqCSRvEA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273079;
	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=nHYobN4HXRYLUuulvGW7a3iBEkss/9shpnQ0vkV/tiA=;
	b=aj5k+57SFfSeKNn0GNp98eWqWkEP+Jkqa2TzRh8KlWd3elXP36xieehRaGtQ6jaunoPeC/
	E0p84iyUVtJmuqCSQUuChqrT/RK27+nNzzIG3DOrbgKr+OMhw9lCRT2l+eqptLoTJQxUHh
	SKiKnwgngyg33PC0eefxElBmRW0SbOB0+RwCC7LouJPmHE6QHhnFwMPFE8ne0HiD99qXJx
	a33FoU5lFvu6htDnjbmacIy7jr0fhc3mQgUrh4QuXzauba+cYNKXEKEbQksz1O/3yjW7vf
	GrHayb1jFLhd2ny2i7s1GS0E7VeSQaSVP/JwGJ6lKNg8+J+Q4GL6XMERM2g3OA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3C05yqzxt8
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:19 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 475c4
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:18 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 748239b973e2 - stable/15 - ufshci: free the taskqueue on detach
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 748239b973e2c24160b29742d7e90f0670a6d203
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:18 +0000
Message-Id: <6ac4a876.475c4.60722db5@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=748239b973e2c24160b29742d7e90f0670a6d203

commit 748239b973e2c24160b29742d7e90f0670a6d203
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:52:37 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:01 +0000

    ufshci: free the taskqueue on detach
    
    ufshci_ctrlr_destruct() never freed the taskqueue. Every load and
    unload cycle leaked the taskqueue and its kernel thread. A task that
    was still queued could also run after the module was gone.
    
    Free the taskqueue in destruct. Do it after the interrupt teardown
    so nothing enqueues new work. A reset task that is still queued at
    this point races the queue teardown. That race is older than this
    change. The planned in-flight recovery rework will close it.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58670
    
    (cherry picked from commit 2d32961316248fdff54a2a9fc24ac8b712fee9b0)
---
 sys/dev/ufshci/ufshci_ctrlr.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index 421aa1e28124..bb07ad5f76da 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -448,6 +448,15 @@ ufshci_ctrlr_destruct(struct ufshci_controller *ctrlr, device_t dev)
 		bus_release_resource(ctrlr->dev, SYS_RES_IRQ,
 		    rman_get_rid(ctrlr->res), ctrlr->res);
 
+	/*
+	 * The interrupt and the timers are gone, so nothing enqueues new
+	 * tasks. Free the taskqueue before the SIM teardown below.
+	 */
+	if (ctrlr->taskqueue != NULL) {
+		taskqueue_free(ctrlr->taskqueue);
+		ctrlr->taskqueue = NULL;
+	}
+
 	ufshci_sim_release_wlun_periph(ctrlr);
 
 	mtx_lock(&ctrlr->sc_mtx);

From nobody Tue Oct  6 07:51:20 2026
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 4hzT3F0dmrz6cWFB
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:21 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3D25l7z4H7B
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:20 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273080;
	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=rUfN1w4VY99Nk31FHj/S9EBgS7VM98R19EBS/DZHfwA=;
	b=mFBU21WL5rhYr77QrmuaLjzzWc+DT9mGaJOwUflH4Kydw2LKXZerD4513QtwzSZ9B+dbMb
	eSePuhq3hsFV6hLqVdWgbgN6LzS0+qJGLLaAbvWnDDhEDKpz2sBKx0NBlkCGyJDTMzPI1s
	YrZHwS59hIUrOCi34rVYhbgxiuWd/ukdHtw/iKBf6e0p5MPCa2Jr0imQ0mn73M0AVPrApd
	lzpOpV+FBg6lYlrKbq8ZTYmVn90etuzVPyzq1ZlV42i14zEfHIX+Xc8q1xvri9yrFWlrg9
	w7mYcX8yGZkLa8KBjSYjQDK+E5I1tdOb3xSiuCZCkUrNL2V/cyvJZtd9D5RuTA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273080;
	b=RZcMjwbK+B/Ovo/Ec6cbyoIArKGpHHuPVFG0xbJq1VhMdKiumHcF3V4IiqJ/ifVtDEN9qw
	DGGBUE/6mP+WAnX+GXh8oLRFsK259lyeEudNCzRRnNfVNSijG73kKvEhFu8gyA6+mM81IH
	4swWCNt7XCxjf0Pa0VcB3oto/fq0d2w9d3EXt5Hhg9a2rgIuO29Y73E9Nhv89t/GDWuoN5
	jHgge67aq6VdyJlWaGeVyvFMBvlRSvw8DamYJtGxz9m8as7kRHnihS66/9PrnUW1P4RB39
	P80w0rFlgTUACn4JZLLU1ZkiIMQ+RQkah0pdlZRKxCfzlWjH1sJBJbn02gog1g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273080;
	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=rUfN1w4VY99Nk31FHj/S9EBgS7VM98R19EBS/DZHfwA=;
	b=EBt9C1XywBFL3Q1rp98aPySKGTBSyyZ19m1MbM8GbYZRYWgIp9KZgDs1VPvPksRXQ6BooX
	L02SOdaSNev60Tdflr/3gPzVI1+Ce3rwnhGJG43xYFFDUyaj7ypciqf1ewI9mqWNBWse9Q
	vvkCDWYwyyUf2+eHsrJTrvyeh0y8RrgEHz2BjglK5Yo5EGNOgfya/cVFDBWT+0uv2l5TIK
	jFddM9vhq2PoVdFNeznOxyiOr818iig6gZaaAY2P8xgmcddb7OgQz/6RslGMUUzlSPLBM3
	STBkLv890ZCgi1kw2FxSDEf/tDlPKuBbELOei1Rr+Opfcd3oaJur2bpyHZOoJw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3D0lQCzxr0
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:20 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 47735
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:20 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: b3f313e26e87 - stable/15 - ufshci: do not reset the device in the XPT_RESET_DEV handler
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: b3f313e26e878904fd39722b09520d68e0c8a167
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:20 +0000
Message-Id: <6ac4a878.47735.6eb1e283@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=b3f313e26e878904fd39722b09520d68e0c8a167

commit b3f313e26e878904fd39722b09520d68e0c8a167
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-10 01:53:27 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:01 +0000

    ufshci: do not reset the device in the XPT_RESET_DEV handler
    
    CAM calls the SIM action callback with the SIM lock and the CAM
    device lock held. The XPT_RESET_DEV handler called
    ufshci_dev_reset(), which sleeps on device commands. Sleeping there
    panics when another thread contends for the lock: "panic: sleeping
    thread holds CAM device lock".
    
    Report success without touching the device, as nvme_sim(4) does.
    A real device reset needs the controller reset path. That rework is
    planned together with in-flight request recovery.
    
    Sponsored by:           Samsung Electronics
    Reviewed by:            imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D58671
    
    (cherry picked from commit a33860b0a2b98caf32c2ff62707f254ca92773f4)
---
 sys/dev/ufshci/ufshci_sim.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index e40079b23354..f969d9c8311b 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -288,13 +288,14 @@ ufshci_cam_action(struct cam_sim *sim, union ccb *ccb)
 		break;
 	}
 	case XPT_RESET_BUS:
-		ccb->ccb_h.status = CAM_REQ_CMP;
-		break;
 	case XPT_RESET_DEV:
-		if (ufshci_dev_reset(ctrlr))
-			ccb->ccb_h.status = CAM_REQ_CMP_ERR;
-		else
-			ccb->ccb_h.status = CAM_REQ_CMP;
+		/*
+		 * This callback cannot sleep: CAM calls it with the SIM
+		 * lock and the CAM device lock held. It cannot reset the
+		 * device here. Report success so CAM keeps going, like
+		 * nvme_sim(4) does.
+		 */
+		ccb->ccb_h.status = CAM_REQ_CMP;
 		break;
 	case XPT_ABORT:
 		ccb->ccb_h.status = CAM_FUNC_NOTAVAIL;

From nobody Tue Oct  6 07:51:21 2026
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 4hzT3G3Lfmz6cWQM
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:22 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3F5DWqz4H5D
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:21 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273081;
	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=QF81VjBp38cVLDlDedeVL9ibjtpwWu6OPOZNnhChnQs=;
	b=cjTdv98LV6Pq0QZhfQGZLg7uasGF+6GfBE75D81kZTzB8eE8mkGwc0DbZiywMDkSfKr64x
	usOY1o9vkdeH0E4RrmKZGRm2ST6PdJCBgaGuBXsO7QQjSok1OiupSlQprhTKO/yFLb8vt1
	mencLmoEXuqVk10g3sQRTRmz2iQ6DUSpYHfwVCMYRRWwT5+W/jnMtXjDo19/LN3x6xh7e6
	sC2GWX83/0XlhYyzJlc5TVjE6nyVPXB0pozmn8BSKs/2iEbI8vNWF4Q63ZNx8YZdsGZ/h/
	w6MLV+9mmO7vLyjSieOCZG8c8U+lUAq1IEK56U4tAjj6mJF4n7WjZKn0ZECwtA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273081;
	b=PjVA/Yyw8K9Sw7+LGll9htEIJryvwvdctFzCNT/kDas1z5sxynYLVLCcgUu0caqI8h6TRQ
	6ujs5abVhxyWkAS4eqhUI1abHpppZgSfSAUC1NDcFAjXaiYPcTlw3Rd/B8AGD71PmFRh2S
	an5D36k2QcXkDvTaOn//poYNPTVyAKwLutk1H5kIZn0Y+8CVHd/5yGuQm1XRfYK7czAshr
	FExLgxNTELCeN2QTsO18B2uKSINunELGwnV3Q0HctE/Uo2aiL2Sp7NdfVYaA05EYhCap6b
	pZQ9rF24P3RHpO81w1x752ajycc4qROFf9oUne9/hM8I6SRGtrSeEg6av8Avmw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273081;
	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=QF81VjBp38cVLDlDedeVL9ibjtpwWu6OPOZNnhChnQs=;
	b=cwkm+F7TYJvdqrA242C0Y6Sk4towPcSVJsIbxEBUygkBr+YfQ0oIaXUd02ylHXpvU4PQIN
	vq4jiEPhEh/TD58sh8kbA2qCXzkvzZ26yJnjF18JdsxfVR3XgUFEDz5B39VydTdWwxFKBO
	BYJwc9MDF5zhImuThvUyKyUpvHMNqrlTg4xOPsOtJMhOBdK2s/ojgJlwoNLv8SR2mBzvmk
	yAq0DujMDQ1kwcuOAeuYStYADEeLF4vsvaG7VxAA0kafog/mnu1jqGmfWXBc9xRTwPBxQu
	uM+mzv1/bskp9gTgt1Kl+2iP0ZcTkp2ucxI5AG1gJkciGwB0UL9iluGFvPF7fw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3F1ZdhzxKb
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:21 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 4557d
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:21 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 88fe4b75cf27 - stable/15 - ufshci: return the real errno from SDB queue construction
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 88fe4b75cf27064f9c19dac4be24440a27ae55fe
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:21 +0000
Message-Id: <6ac4a879.4557d.4c6ab52f@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=88fe4b75cf27064f9c19dac4be24440a27ae55fe

commit 88fe4b75cf27064f9c19dac4be24440a27ae55fe
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-18 04:48:56 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:02 +0000

    ufshci: return the real errno from SDB queue construction
    
    ufshci_req_sdb_cmd_desc_construct() and ufshci_req_sdb_construct()
    returned ENOMEM for every failure, so an EINVAL from bus_dma_tag_create()
    was reported as a memory shortage. Capture and return the real errno,
    and drop the cmd descriptor construct's now pointless out label.
    
    No functional change: no caller inspects the value beyond propagating
    it, so this only improves the diagnostics on an attach failure.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D58815
    
    (cherry picked from commit a508a9f7238828fb5fb0f68e9f5df7d24072d6c2)
---
 sys/dev/ufshci/ufshci_req_sdb.c | 39 +++++++++++++++++++++------------------
 1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_req_sdb.c b/sys/dev/ufshci/ufshci_req_sdb.c
index 80c4e53230e3..51e72c4ed4f5 100644
--- a/sys/dev/ufshci/ufshci_req_sdb.c
+++ b/sys/dev/ufshci/ufshci_req_sdb.c
@@ -109,21 +109,23 @@ ufshci_req_sdb_cmd_desc_construct(struct ufshci_req_queue *req_queue,
 	if (error != 0) {
 		ufshci_printf(ctrlr, "request cmd desc tag create failed %d\n",
 		    error);
-		goto out;
+		return (error);
 	}
 
-	if (bus_dmamem_alloc(req_queue->dma_tag_ucd, (void **)&ucdmem,
-		BUS_DMA_COHERENT | BUS_DMA_NOWAIT, &req_queue->ucdmem_map)) {
+	error = bus_dmamem_alloc(req_queue->dma_tag_ucd, (void **)&ucdmem,
+	    BUS_DMA_COHERENT | BUS_DMA_NOWAIT, &req_queue->ucdmem_map);
+	if (error != 0) {
 		ufshci_printf(ctrlr, "failed to allocate cmd desc memory\n");
-		goto out;
+		return (error);
 	}
 
-	if (bus_dmamap_load(req_queue->dma_tag_ucd, req_queue->ucdmem_map,
-		ucdmem, ucd_allocsz, ufshci_ucd_map, hwq, 0) != 0) {
+	error = bus_dmamap_load(req_queue->dma_tag_ucd, req_queue->ucdmem_map,
+	    ucdmem, ucd_allocsz, ufshci_ucd_map, hwq, 0);
+	if (error != 0) {
 		ufshci_printf(ctrlr, "failed to load cmd desc memory\n");
 		bus_dmamem_free(req_queue->dma_tag_ucd, ucdmem,
 		    req_queue->ucdmem_map);
-		goto out;
+		return (error);
 	}
 
 	req_queue->ucd = (struct ufshci_utp_cmd_desc *)ucdmem;
@@ -139,7 +141,7 @@ ufshci_req_sdb_cmd_desc_construct(struct ufshci_req_queue *req_queue,
 	if (error != 0) {
 		ufshci_printf(ctrlr, "request prdt tag create failed %d\n",
 		    error);
-		goto out;
+		return (error);
 	}
 
 	for (i = 0; i < req_queue->num_trackers; i++) {
@@ -148,7 +150,7 @@ ufshci_req_sdb_cmd_desc_construct(struct ufshci_req_queue *req_queue,
 		if (error != 0) {
 			ufshci_printf(ctrlr,
 			    "request payload map create failed %d\n", error);
-			goto out;
+			return (error);
 		}
 
 		hwq->act_tr[i]->ucd = (struct ufshci_utp_cmd_desc *)ucdmem;
@@ -158,8 +160,6 @@ ufshci_req_sdb_cmd_desc_construct(struct ufshci_req_queue *req_queue,
 	}
 
 	return (0);
-out:
-	return (ENOMEM);
 }
 
 int
@@ -227,15 +227,17 @@ ufshci_req_sdb_construct(struct ufshci_controller *ctrlr,
 		goto out;
 	}
 
-	if (bus_dmamem_alloc(hwq->dma_tag_queue, (void **)&queuemem,
-		BUS_DMA_COHERENT | BUS_DMA_NOWAIT, &hwq->queuemem_map)) {
+	error = bus_dmamem_alloc(hwq->dma_tag_queue, (void **)&queuemem,
+	    BUS_DMA_COHERENT | BUS_DMA_NOWAIT, &hwq->queuemem_map);
+	if (error != 0) {
 		ufshci_printf(ctrlr,
 		    "failed to allocate request queue memory\n");
 		goto out;
 	}
 
-	if (bus_dmamap_load(hwq->dma_tag_queue, hwq->queuemem_map, queuemem,
-		alloc_size, ufshci_single_map, &queuemem_phys, 0) != 0) {
+	error = bus_dmamap_load(hwq->dma_tag_queue, hwq->queuemem_map, queuemem,
+	    alloc_size, ufshci_single_map, &queuemem_phys, 0);
+	if (error != 0) {
 		ufshci_printf(ctrlr, "failed to load request queue memory\n");
 		bus_dmamem_free(hwq->dma_tag_queue, queuemem,
 		    hwq->queuemem_map);
@@ -289,8 +291,9 @@ ufshci_req_sdb_construct(struct ufshci_controller *ctrlr,
 		 * UTP Transfer Request (UTR) requires memory for a separate
 		 * command in addition to the queue.
 		 */
-		if (ufshci_req_sdb_cmd_desc_construct(req_queue, num_entries,
-			ctrlr) != 0) {
+		error = ufshci_req_sdb_cmd_desc_construct(req_queue,
+		    num_entries, ctrlr);
+		if (error != 0) {
 			ufshci_printf(ctrlr,
 			    "failed to construct cmd descriptor memory\n");
 			goto out;
@@ -305,7 +308,7 @@ ufshci_req_sdb_construct(struct ufshci_controller *ctrlr,
 	return (0);
 out:
 	ufshci_req_sdb_destroy(ctrlr, req_queue);
-	return (ENOMEM);
+	return (error);
 }
 
 void

From nobody Tue Oct  6 07:51:22 2026
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 4hzT3H1TwRz6cWSf
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:23 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3G3Zpkz4H2n
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:22 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273082;
	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=02gDY6X3upndsi8DkwBev8hrdTqZrpBfMIswaEkui9M=;
	b=ZUbDFUd7lgVdXlR2J5EiDbsMNnxs6S5uhVqEslhWeBsEJWNLg+mVN4LqeUPwWEl3p+AuAt
	zUkkzuFdYEOuu6gwU8+UkX5dZksmrGsnp1TtAwSoZFNSDnzO279NEAGuVmHejQDTMllZHN
	ytR+lZks1Ip5akKsQqISiB6HJhnb4WOjqv2cDftEXXpjOiiJoRvRMJkL1gmJ0PyOHOelUT
	h3waS/Qu3rGbI+IDAw6eTOnkSWN1nxvp2C/JxlKGBuLq4em/99LNMBlOakFerSPenSkpEq
	K4tASK7VCgaU/oCLWV8Or3nGvqJirQJyKAmrnItirb+vC6c2XtCYDcynAs8lXw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273082;
	b=FG4MIIZG8nLoRRRvMv5My+vxv1HDetpSnsMXlILPjxzfZpafo16c839mMO23KR19kYjOo2
	6XTRBIdXv+mhXoNFIfaogAKYeJ0FQTqsuqtpzSlzFu8A5UpFTGd4BAKFUo4SlsQgd3o0BJ
	fDKi3w/dEgEZtTw8aov4XQo2K7j1ZrcqArGdFEbERoyYv3vitKgli6QbyuVudILYAWv3we
	rORdcRIu+856T97R2BqzgyCbcRhLA7SwQGeyWFjCeLQ+VEsmdlpGJrrSObwNeP8bPOKjUn
	eqgYymAxh3gRdRyCx9NkuX+quNeRGvPblG8FgOHoUt1zttVdIV/KBmGuNkdBBA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273082;
	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=02gDY6X3upndsi8DkwBev8hrdTqZrpBfMIswaEkui9M=;
	b=HK+iH3Y1rkdM4LhfxQg92M2C2nqItl4eGZ9G7xrYxMKmbeLWEWOmXrN+7HJhckUqb1/OR3
	Z9Z8aDUtsYVsZLOlqL15A36lXXYHmN3CTFzOyTvlOh2m1GkJF+Ulwj/pG5S6F/AU2+dDlQ
	K1f7CjqhyNArRo02Bbrd1m0FCc/8fqaSMc7SEY7nao8Qn7De/aScym9uB+0wKAHTPJkPCx
	q02ustNqnyXFM2suWGF0RQ3zVOxqKOe5MfnHmUOPJ25jp+2TSBlmeKnAAJXNHpgv6TZ5hZ
	c6waNFAb5TUJkjrluy+2jSvifmwrRan+Ey2du2dPz0yfGiJf5Co8rRo+Md+i8Q==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3G2LDWzwwc
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:22 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 474d4
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:22 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 4adcdaf0da31 - stable/15 - ufshci: pass the queue being destroyed to the cmd descriptor teardown
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 4adcdaf0da316483cc0f5eabb8448dd968a02875
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:22 +0000
Message-Id: <6ac4a87a.474d4.5349d81b@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=4adcdaf0da316483cc0f5eabb8448dd968a02875

commit 4adcdaf0da316483cc0f5eabb8448dd968a02875
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-18 04:50:27 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:02 +0000

    ufshci: pass the queue being destroyed to the cmd descriptor teardown
    
    ufshci_req_sdb_destroy() hardcoded &ctrlr->transfer_req_queue when
    destroying command descriptors instead of using its req_queue argument.
    
    No functional change: the branch only runs for the transfer queue, so
    the two pointers are always the same today. Using the argument keeps
    the function queue-agnostic for when more transfer queues exist (MCQ).
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D58816
    
    (cherry picked from commit dbcebc7c661e961ea6e72ef77e29675aca86ab4b)
---
 sys/dev/ufshci/ufshci_req_sdb.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_req_sdb.c b/sys/dev/ufshci/ufshci_req_sdb.c
index 51e72c4ed4f5..b737a7081fd9 100644
--- a/sys/dev/ufshci/ufshci_req_sdb.c
+++ b/sys/dev/ufshci/ufshci_req_sdb.c
@@ -330,8 +330,7 @@ ufshci_req_sdb_destroy(struct ufshci_controller *ctrlr,
 
 	if (hwq->act_tr != NULL) {
 		if (!req_queue->is_task_mgmt)
-			ufshci_req_sdb_cmd_desc_destroy(
-			    &ctrlr->transfer_req_queue);
+			ufshci_req_sdb_cmd_desc_destroy(req_queue);
 
 		for (i = 0; i < req_queue->num_trackers; i++)
 			free(hwq->act_tr[i], M_UFSHCI);

From nobody Tue Oct  6 07:51:23 2026
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 4hzT3H6xrrz6cWNN
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:23 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3H58tYz4H9h
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:23 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273083;
	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=CEVz1FXcOZllKgdY5/5azQ6jd6sVZ64dE9zH4AQcGQo=;
	b=RvIRD8wujKwZnHefWIR+lrvQOGG9+YiXh1xGMTHODG9uCi/MJJD/sPwzYSxfLAsu2WNrdi
	Dv0DceB+6cowTmeIQUPCZmNAHsr/ynexBEgYN45brPJl22agKgzCLGgAMkL329VP2/Xqhq
	m0Qjn4+DIOUrpr5UyfCg7uZojUBI0/m34xW4pMlNplIpjs7r5K9sUXueSBPpl+i1TqlyUW
	Cw2XVjsvhfMCEPaEmSeDhr2SKm4UQecpx1L3BKf+s0bxyQtg8f7QGYDcjGLH3R/c1hj/sK
	Ob+WHRuJJT8wvwUbfBLYOCa1HRB0fE+Z9vWmSQj3bQbyCRVIWTF7tvtLhblCsA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273083;
	b=Cl4dcy9rj0yzcCHUxEdH2zDp1E4j1x2tmCC+3t2Nsm6ON0dAMi1CWerZMYcfURoO6e1A8V
	E5Dfio5R/Zmh+WmyshNTyFqdMYB8rVMdaIyqDX07g4BwDz1cP89KOotx4SL++3aXExOR7i
	4DaG1uQhnuxSr5jSLj2TZaUkl8N3VlSMoiQ2/mro160YyeXqwYcJfsAw7YzBrWmkPLlwm/
	ppRixR6xU82NSC1LssAs7d7P2HN4vYqiM4vrVVlCgNGeE6DabSGjbsIKxpwn3zJ3ey7qWg
	nL0BaVEkbyixTqXuCwcThiSs9bzTt+GJ2RlDNZpjLBBUd/H7U3Mkk4CSS2c/Lw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273083;
	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=CEVz1FXcOZllKgdY5/5azQ6jd6sVZ64dE9zH4AQcGQo=;
	b=jZL7Mity2ctsR3R0gkQSKhOcF8ojek3lsZctAMePGID8jfYdNqFLdasFmdRj+7YQFz3BnF
	fDRQTfwqVFXFJz/nBn/quXEBkwIlnLWcbV9Q2LMtNTiNr7pOs9WNE10owAcgAK9J9STZP3
	rUELS7M7WDLwzGEQuNxj4wtps6AmkhC/u/w3uDn8gZo03IULCwkXygJ/Z4TJUfBvRVhaho
	3RH0/mi8o2AbuUBrfhy3hhtu0btLME1YWnEcdrYmtj2XYkdnLztjBvEa283brhJ9yiL+aL
	4EDza5Nbgl6g7HYVUKnnXlFUyxUDa1Um6L7KOSa5Ul5EmPm63lG0Pr0FycJC0A==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3H3B62zxZL
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:23 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18830
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:23 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 7fb453f00502 - stable/15 - ufshci: validate the CDB before allocating a request
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 7fb453f00502c522656f44715f2a55a0313e76d0
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:23 +0000
Message-Id: <6ac4a87b.18830.10c718c2@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=7fb453f00502c522656f44715f2a55a0313e76d0

commit 7fb453f00502c522656f44715f2a55a0313e76d0
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-18 04:51:42 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:02 +0000

    ufshci: validate the CDB before allocating a request
    
    The CDB pointer and length checks depend only on the CCB, so perform
    them before allocating and initializing the request. This avoids a
    wasted allocation for invalid CCBs on the I/O path and removes one
    request-free error path.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D58817
    
    (cherry picked from commit f3c3db35d545bb14b96e4cb079312c377247540b)
---
 sys/dev/ufshci/ufshci_sim.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index f969d9c8311b..8ac47fc4a2dc 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -144,6 +144,17 @@ ufshchi_sim_scsiio(struct cam_sim *sim, union ccb *ccb)
 	payload_len = csio->dxfer_len;
 	is_write = csio->ccb_h.flags & CAM_DIR_OUT;
 
+	if (csio->ccb_h.flags & CAM_CDB_POINTER)
+		cdb = csio->cdb_io.cdb_ptr;
+	else
+		cdb = csio->cdb_io.cdb_bytes;
+
+	if (cdb == NULL || csio->cdb_len > sizeof(upiu->cdb)) {
+		ccb->ccb_h.status = CAM_REQ_INVALID;
+		xpt_done(ccb);
+		return;
+	}
+
 	/* TODO: Check other data type */
 	if ((csio->ccb_h.flags & CAM_DATA_MASK) == CAM_DATA_BIO)
 		req = ufshci_allocate_request_bio((struct bio *)payload,
@@ -184,17 +195,6 @@ ufshchi_sim_scsiio(struct cam_sim *sim, union ccb *ccb)
 
 	upiu->expected_data_transfer_length = htobe32(payload_len);
 
-	if (csio->ccb_h.flags & CAM_CDB_POINTER)
-		cdb = csio->cdb_io.cdb_ptr;
-	else
-		cdb = csio->cdb_io.cdb_bytes;
-
-	if (cdb == NULL || csio->cdb_len > sizeof(upiu->cdb)) {
-		ccb->ccb_h.status = CAM_REQ_INVALID;
-		ufshci_free_request(req);
-		xpt_done(ccb);
-		return;
-	}
 	memcpy(upiu->cdb, cdb, csio->cdb_len);
 
 	ccb->ccb_h.status |= CAM_SIM_QUEUED;

From nobody Tue Oct  6 07:51:24 2026
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 4hzT3J6pPqz6cWSq
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:24 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3J5Ntkz4GsF
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:24 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273084;
	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=J4BDkjnKAl2NGZRaFH3DbWGpvj0PlF1UZZLi7jviMbI=;
	b=e9wBTBerDNJWglFx0JbI6F5v9d1gMGXfAjr7ATEaYE6VAIC77uyGQHPR6Ka1apUD6dgyCp
	Xxs/b5BqOLs18RB2nzF8bkihlC16vHF8Zg2f114bysWgAqCKm9lggg36lIx9iyQ3kIdkbe
	lVRRCgVGMQI/3yTdB+JqsaMoq1hr8tp7Wc0LHOn9ORChJZv9UyYCcvtH5mc4fYDnmLyliO
	qmYoFHy5l1yYWa2pvRQqxUrB1NERg6skjh2sIl3V9jm0myM1PW9fVBb+F8OZGaT/X3g5yX
	zDfFad78OBBCVOwRFrCa6tVH6R5PNI7PDZ/yyq+cAKsN1AUL7IC2jpwc1grxmA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273084;
	b=RjilWttArAjkHmUGiMWIdETlRFqxkjb6+HLiNMoy4qKjZc4qv8+ZWynfYbxlo4UbZAizSx
	sDDB/hvYmND3dfyXH2LKPxXuVlxItFLiPlyvH1/r8Q2DgAqb1ON4ssTjUWl3yO57lX+Bgk
	eepELdOIT1rMlG3MimSW7ZNPD2Mm8WmtC1iR1GHR9EpU2Mab5HjMLFwT1/6vV5uzDpBS4V
	QXgsFAJva06d/eNZTT5ON9LC2MO09mAxkf1g1m6sx1faI2R4yqOmoQG2f6xzkZ5gLIIYqh
	nKVFmOotSNy/FzTpkKMZ5AywcMYwL17uahUvx0z0kudOTQGJ+FO6pnm6+Khw4Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273084;
	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=J4BDkjnKAl2NGZRaFH3DbWGpvj0PlF1UZZLi7jviMbI=;
	b=ul8B4uim3484S+qUzMV32MNZSM1b30A1lgboptF78s2VsHUJufjCXw70qI37QXsQuQVrhk
	9yLIUHO1W3oSYd533pq/sQrVHmt3pmPecCnhE/AsPK8Qqjzd9xWi5rVs5ZYghDFW/nbZ/C
	9c/8bulD0DB4OTG2+D9iqLfs+qDelYsD8Lp9bDNcFts0eoxCOZiNYaBcJvCE3bORKP639W
	kA8TFA4FQYKdXH+ejzOlUQBlrve8ApeyCI1huwOlBGzOKdBcsphEFSO65b8OCEr4pkJ+K6
	Ft4N42tqIY0cpRjpQPtYvmfsR/YF3ZZI+sxIgZRUxCcaHcvsOrbeHeDxA9akeA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3J40Vpzx09
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:24 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18f17
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:24 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 5dd01a6f1518 - stable/15 - ufshci: consolidate the device query submit/poll pattern
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 5dd01a6f1518d9bc615880ec04d732fca00489bb
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:24 +0000
Message-Id: <6ac4a87c.18f17.5ab57d96@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=5dd01a6f1518d9bc615880ec04d732fca00489bb

commit 5dd01a6f1518d9bc615880ec04d732fca00489bb
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-18 04:52:54 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:03 +0000

    ufshci: consolidate the device query submit/poll pattern
    
    The six query helpers duplicated the same submit, error check, poll,
    and status check sequence. Move it into ufshci_dev_send_query() so
    future changes to the query flow are made in one place. This also
    unifies the failure log message format.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D58818
    
    (cherry picked from commit e1aa173f812010675005e2917d7b2b44ee4a226e)
---
 sys/dev/ufshci/ufshci_dev.c | 98 +++++++++++++--------------------------------
 1 file changed, 28 insertions(+), 70 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index 18546d7120c0..063b65aaf579 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -12,6 +12,28 @@
 #include "ufshci_private.h"
 #include "ufshci_reg.h"
 
+static int
+ufshci_dev_send_query(struct ufshci_controller *ctrlr,
+    struct ufshci_query_param param,
+    struct ufshci_completion_poll_status *status, const char *fail_msg)
+{
+	int error;
+
+	status->done = 0;
+	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
+	    ufshci_completion_poll_cb, status, param);
+	if (error)
+		return (error);
+
+	ufshci_completion_poll(status);
+	if (status->error) {
+		ufshci_printf(ctrlr, "%s failed!\n", fail_msg);
+		return (ENXIO);
+	}
+
+	return (0);
+}
+
 static int
 ufshci_dev_read_descriptor(struct ufshci_controller *ctrlr,
     enum ufshci_descriptor_type desc_type, uint8_t index, uint8_t selector,
@@ -29,19 +51,10 @@ ufshci_dev_read_descriptor(struct ufshci_controller *ctrlr,
 	param.value = 0;
 	param.desc_size = desc_size;
 
-	status.done = 0;
-	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
-	    ufshci_completion_poll_cb, &status, param);
+	error = ufshci_dev_send_query(ctrlr, param, &status, __func__);
 	if (error)
 		return (error);
 
-	ufshci_completion_poll(&status);
-	if (status.error) {
-		ufshci_printf(ctrlr,
-		    "Failed to send Read Descriptor query request!\n");
-		return (ENXIO);
-	}
-
 	memcpy(desc, status.cpl.response_upiu.query_response_upiu.command_data,
 	    desc_size);
 
@@ -88,18 +101,10 @@ ufshci_dev_read_flag(struct ufshci_controller *ctrlr,
 	param.value = 0;
 	param.desc_size = 0;
 
-	status.done = 0;
-	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
-	    ufshci_completion_poll_cb, &status, param);
+	error = ufshci_dev_send_query(ctrlr, param, &status, __func__);
 	if (error)
 		return (error);
 
-	ufshci_completion_poll(&status);
-	if (status.error) {
-		ufshci_printf(ctrlr, "ufshci_dev_read_flag failed!\n");
-		return (ENXIO);
-	}
-
 	*flag = status.cpl.response_upiu.query_response_upiu.flag_value;
 
 	return (0);
@@ -111,7 +116,6 @@ ufshci_dev_set_flag(struct ufshci_controller *ctrlr,
 {
 	struct ufshci_completion_poll_status status;
 	struct ufshci_query_param param;
-	int error;
 
 	param.function = UFSHCI_QUERY_FUNC_STANDARD_WRITE_REQUEST;
 	param.opcode = UFSHCI_QUERY_OPCODE_SET_FLAG;
@@ -121,19 +125,7 @@ ufshci_dev_set_flag(struct ufshci_controller *ctrlr,
 	param.value = 0;
 	param.desc_size = 0;
 
-	status.done = 0;
-	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
-	    ufshci_completion_poll_cb, &status, param);
-	if (error)
-		return (error);
-
-	ufshci_completion_poll(&status);
-	if (status.error) {
-		ufshci_printf(ctrlr, "ufshci_dev_set_flag failed!\n");
-		return (ENXIO);
-	}
-
-	return (0);
+	return (ufshci_dev_send_query(ctrlr, param, &status, __func__));
 }
 
 static int
@@ -142,7 +134,6 @@ ufshci_dev_clear_flag(struct ufshci_controller *ctrlr,
 {
 	struct ufshci_completion_poll_status status;
 	struct ufshci_query_param param;
-	int error;
 
 	param.function = UFSHCI_QUERY_FUNC_STANDARD_WRITE_REQUEST;
 	param.opcode = UFSHCI_QUERY_OPCODE_CLEAR_FLAG;
@@ -152,19 +143,7 @@ ufshci_dev_clear_flag(struct ufshci_controller *ctrlr,
 	param.value = 0;
 	param.desc_size = 0;
 
-	status.done = 0;
-	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
-	    ufshci_completion_poll_cb, &status, param);
-	if (error)
-		return (error);
-
-	ufshci_completion_poll(&status);
-	if (status.error) {
-		ufshci_printf(ctrlr, "ufshci_dev_clear_flag failed!\n");
-		return (ENXIO);
-	}
-
-	return (0);
+	return (ufshci_dev_send_query(ctrlr, param, &status, __func__));
 }
 
 static int
@@ -184,18 +163,10 @@ ufshci_dev_read_attribute(struct ufshci_controller *ctrlr,
 	param.value = 0;
 	param.desc_size = 0;
 
-	status.done = 0;
-	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
-	    ufshci_completion_poll_cb, &status, param);
+	error = ufshci_dev_send_query(ctrlr, param, &status, __func__);
 	if (error)
 		return (error);
 
-	ufshci_completion_poll(&status);
-	if (status.error) {
-		ufshci_printf(ctrlr, "ufshci_dev_read_attribute failed!\n");
-		return (ENXIO);
-	}
-
 	*value = be64toh(status.cpl.response_upiu.query_response_upiu.value_64);
 
 	return (0);
@@ -208,7 +179,6 @@ ufshci_dev_write_attribute(struct ufshci_controller *ctrlr,
 {
 	struct ufshci_completion_poll_status status;
 	struct ufshci_query_param param;
-	int error;
 
 	param.function = UFSHCI_QUERY_FUNC_STANDARD_WRITE_REQUEST;
 	param.opcode = UFSHCI_QUERY_OPCODE_WRITE_ATTRIBUTE;
@@ -218,19 +188,7 @@ ufshci_dev_write_attribute(struct ufshci_controller *ctrlr,
 	param.value = value;
 	param.desc_size = 0;
 
-	status.done = 0;
-	error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
-	    ufshci_completion_poll_cb, &status, param);
-	if (error)
-		return (error);
-
-	ufshci_completion_poll(&status);
-	if (status.error) {
-		ufshci_printf(ctrlr, "ufshci_dev_write_attribute failed!\n");
-		return (ENXIO);
-	}
-
-	return (0);
+	return (ufshci_dev_send_query(ctrlr, param, &status, __func__));
 }
 
 int

From nobody Tue Oct  6 07:51:25 2026
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 4hzT3L1Y51z6cWQj
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:26 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3K5r5sz4H82
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:25 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273085;
	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=GPOzOdGSdQFltDyJBSaZ0swklIoXSD9+A+z88zVeJfQ=;
	b=jmTZkL5ahusOdRC+mtfegDpxW/OQ2JQkb6GcHOMJ1ojLGge4mecQeCuwFTT12VvjE8ioXi
	/bRMlJ0hDiCku5oYutHx49Ktcz9pjUn5qiOo7QMWbVA6nLp+3d0SEWFmVmDoPj8+GC1ES0
	Lvu3SKM3c8qGrVe5kQxut9SPheBq+sZKh565okVNgzSRo9Bd4O0IFcMXCXP1kEpRC0D/BK
	L2oKqXi3An54O8UjnH618kzBX4uV7FvrhaWhVXDLpr1wHru7+aPKFqjoP83Nm0KV9ZfAiW
	Q2RP5uSgH+n9gTEtk9PutwEJS2V1zDgR7TJDlWEfFEU3Nzkhx6FOlCTZaRQoEw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273085;
	b=pUMla49cbGt8EdVdD1UK3/yM5ekHwVrmVcvWIZf3+EAll5B1r0sacO+CPGYsxsTKv8p7Sq
	010F0nhEHD+XXLq62PXZjAtCCEi4FJGP1tz5sEkk3roc1qBIUo0jKRkMc98Ak3P/ZzjOof
	ET6kyWLH4rubpFUjnI/SLXU78TehyK5YfiLDXh6I8CAgQnuTFz23kY9gXfHauNGdJzhV2p
	Uwrbm/xbBUnpqXs88eIi75vrYXaiUZfX+0A5kohhB1O1FUTQfxzg4MucuXZNUdn+/GPaYX
	uumcuDpG2Gv4DTvvGXnPMi+33Mkbdh9zIo3Wd4hz9hoaunBLAwEGHuxgCm2XRA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273085;
	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=GPOzOdGSdQFltDyJBSaZ0swklIoXSD9+A+z88zVeJfQ=;
	b=Z4zSJ5TKe4mf3EOLd+GzEzKB2/E894CCcnqlsUcflVJu4mgHyvqUEpA7eFdNya3cLb7FJX
	3dUUVApTrBmLn3qtO6qRz1NGLz4SjWt+cL4893Qh1bkpRXfCweKpgoq+1C1885aCYuDtPC
	EIfnOSgQQ9cGxeczfc4IVCxhclwzhI00n/pFoNNuykRG6QIvpMD8WiR3t+KEd4KjB3HXtO
	OeiRVeUsRkfh2spmaPPb59KZRVgIBg9pSg4sUThm8062fgRadgtdaPHBFivC3DBgTAOh8U
	Kl7RcZxsTZCQ7WFavbQ3TnGhksAch5jnKrhaYlaDqvpUoOxi8DYGSJ+KK4g5oQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3K4pj1zxpL
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:25 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 477f0
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:25 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: a078bf6669da - stable/15 - ufshci: correct the crypto/config register offsets and HCMID fields
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: a078bf6669da860792fd2867beba5f5076b78bcd
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:25 +0000
Message-Id: <6ac4a87d.477f0.1fc977c1@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=a078bf6669da860792fd2867beba5f5076b78bcd

commit a078bf6669da860792fd2867beba5f5076b78bcd
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-18 05:06:54 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:03 +0000

    ufshci: correct the crypto/config register offsets and HCMID fields
    
    The reserved array after CCAP must be 508, but it was 511.
    This pushed the config, MCQ config, and ESI registers from 0x300 and
    0x380 up to 0x900. None of these registers are used yet, so nothing
    broke.
    
    Also fix the HCMID bank index field. The spec places it at bits
    [23:16], but it was defined on top of the manufacturer code at [15:0].
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D58819
    
    (cherry picked from commit 34518292a3e077efe239b61f64b9d860bbfb2960)
---
 sys/dev/ufshci/ufshci_reg.h | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_reg.h b/sys/dev/ufshci/ufshci_reg.h
index 6d5768505102..87b4bee64b0a 100644
--- a/sys/dev/ufshci/ufshci_reg.h
+++ b/sys/dev/ufshci/ufshci_reg.h
@@ -61,7 +61,7 @@ struct ufshci_registers {
 	uint8_t vendor[64]; /* Vendor Specific Registers */
 	/* Crypto (100h) */
 	uint32_t ccap; /* Crypto Capability */
-	uint32_t reserved7[511];
+	uint8_t reserved7[508];
 	/* Config (300h) */
 	uint32_t config; /* Global Configuration */
 	uint8_t reserved9[124];
@@ -74,6 +74,23 @@ struct ufshci_registers {
 	/* TODO: Need to define SQ/CQ registers */
 };
 
+_Static_assert(__offsetof(struct ufshci_registers, is) == 0x20,
+    "operation and runtime section must start at 20h");
+_Static_assert(__offsetof(struct ufshci_registers, utrlba) == 0x50,
+    "UTP transfer section must start at 50h");
+_Static_assert(__offsetof(struct ufshci_registers, utmrlba) == 0x70,
+    "UTP task management section must start at 70h");
+_Static_assert(__offsetof(struct ufshci_registers, uiccmd) == 0x90,
+    "UIC command section must start at 90h");
+_Static_assert(__offsetof(struct ufshci_registers, vendor) == 0xC0,
+    "vendor specific section must start at C0h");
+_Static_assert(__offsetof(struct ufshci_registers, ccap) == 0x100,
+    "crypto section must start at 100h");
+_Static_assert(__offsetof(struct ufshci_registers, config) == 0x300,
+    "config section must start at 300h");
+_Static_assert(__offsetof(struct ufshci_registers, mcqconfig) == 0x380,
+    "MCQ configuration section must start at 380h");
+
 /* Register field definitions */
 #define UFSHCI__REG__SHIFT (0)
 #define UFSHCI__REG__MASK  (0)
@@ -155,8 +172,8 @@ struct ufshci_registers {
  */
 #define UFSHCI_HCMID_REG_MIC_SHIFT (0)
 #define UFSHCI_HCMID_REG_MIC_MASK  (0xFFFF)
-#define UFSHCI_HCMID_REG_BI_SHIFT  (8)
-#define UFSHCI_HCMID_REG_BI_MASK   (0xFFFF)
+#define UFSHCI_HCMID_REG_BI_SHIFT  (16)
+#define UFSHCI_HCMID_REG_BI_MASK   (0xFF)
 
 /*
  * UFSHCI 4.1, section 5.2.7, Offset 18h: AHIT

From nobody Tue Oct  6 07:51:27 2026
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 4hzT3N3BrQz6cWY1
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:28 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3N0644z4H3P
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:28 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273088;
	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=e5JD5uvLLyw+bLeOVrvNRsIqytqP7tXnylqRAFHPO7A=;
	b=Aaxc2EZ80ThcMdVODDbYUUxJVsSzabFz9fs6Pk8R0x4mESGosTCT5WtoOF5zgL/vqOdq1a
	Hkcgk+Rw+iL2OowHL/taUQhxwIY05pdSBNQ/4xkZEn/UhpxwJmsp8ODBt5A9BLOGIU/y0N
	LMEb03aIgnzukkte5QKoVEWlXzvgfdQY2nYz+pVFvBumq7YJLRQbtD02t5sXU6nX+tIpj9
	3U3v/wknyHiXmgtIylvzLyZr4ZICIM+gnL1S7TTGnEMquLZd/qoEIgYWRkg6AxFP07Ecm1
	S++Mm6YwVLjQXTS11l5Qf5pTBBnup9+dH3Hd9LE4yy88IdTHFBTwQpVLq4dnIA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273088;
	b=xJ6gwvP0T84bj+HUNtWcg7eU1DbNfhKhtPuNNOYYDGKvS1Czs1bEPOQRa5aYUga/mfWk01
	azMgKdhY1iuKuh19DqH32WJ4lTMZg57HxNRyLHPyJBwDlgoVbQIj3jeXevgruEe6xBygMZ
	/BKTlewHUzPAX+tGxhTNnEo9f58Fv7XomxUWMy4df+Hk0Tl7DxfN8ysddCxljpb0jsRK2u
	SnRGg7ygoaBViHJI6emWn7dV93nCzd90oaveyv3JdR2tM+VazResj6djIKrkNgPK42Nfwi
	qwxQIUQsd9Uxn6XsGwHfqGisPk9z4xxA43zhmMfw8Ni+xJhPTRVm12wYaIBp0A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273088;
	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=e5JD5uvLLyw+bLeOVrvNRsIqytqP7tXnylqRAFHPO7A=;
	b=hzb3iTsvdJ7F23MClVOfxC7hu75FzPDNWsdlp5lldQDZboNsCgPhvB+4k8k2zSHjdXw4rm
	3hjc8FvTeOqfikqGEWRARiWNKQzG5KA2ei+xvCtelFFOn9fjJO1tAwkCvRbvvhTtxm2knV
	Ev7UlIR+MqnCmnR8B2BQKGmEv6b4ySNoA4Mc6TYpr9HqYp78dvI62gATMV6gpWKiTZ6luU
	D3HyVMWSV7M9+AsDQ34kVdyRjTYIMjELmL0sbAfjQYmAXKXxcD2PCjRqjVbLmWlcYwjGWZ
	9pOnA6Mvjr4vprmZadPRNJ7YhnhK3vIYaQBgr9HSZX+CkLHG8CIrDxeHtybiPw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3M6HnpzxKf
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:27 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18aa7
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:27 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 94e28f979a84 - stable/15 - ufshci: run the controller fail path only once
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 94e28f979a84251f7108c10db7efc8ccdf424b2e
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:27 +0000
Message-Id: <6ac4a87f.18aa7.39ac9949@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=94e28f979a84251f7108c10db7efc8ccdf424b2e

commit 94e28f979a84251f7108c10db7efc8ccdf424b2e
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-27 04:58:21 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:04 +0000

    ufshci: run the controller fail path only once
    
    Two threads could run ufshci_ctrlr_fail() at the same time.
    Each one walked the queues and completed the same trackers
    again, which caused a double free and a panic.
    
    Turn is_failed into an atomic gate, so only the first caller
    walks the queues. The reset task now returns early on a failed
    controller instead of re-enabling it.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D58944
    
    (cherry picked from commit 1258ae2bcb559854c966e425f4c5c48668d3cf7b)
---
 sys/dev/ufshci/ufshci_ctrlr.c   | 12 +++++++++++-
 sys/dev/ufshci/ufshci_private.h |  2 +-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index bb07ad5f76da..2f930d55a295 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -15,7 +15,13 @@
 static void
 ufshci_ctrlr_fail(struct ufshci_controller *ctrlr)
 {
-	ctrlr->is_failed = true;
+	/*
+	 * The attach thread and the reset task can both fail the
+	 * controller. A second queue walk would complete the same
+	 * trackers again.
+	 */
+	if (atomic_swap_32(&ctrlr->is_failed, 1) != 0)
+		return;
 
 	ufshci_req_queue_fail(ctrlr, &ctrlr->task_mgmt_req_queue);
 	ufshci_req_queue_fail(ctrlr, &ctrlr->transfer_req_queue);
@@ -312,6 +318,10 @@ ufshci_ctrlr_reset_task(void *arg, int pending)
 	struct ufshci_controller *ctrlr = arg;
 	int error;
 
+	/* A failed controller must not be re-enabled. */
+	if (ctrlr->is_failed)
+		return;
+
 	/* Release resources */
 	ufshci_utmr_req_queue_disable(ctrlr);
 	ufshci_utr_req_queue_disable(ctrlr);
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index c738e246e96c..7b74faf95c53 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -423,7 +423,7 @@ struct ufshci_controller {
 	uint32_t max_tx_lanes;
 	uint32_t max_rx_lanes;
 
-	bool is_failed;
+	uint32_t is_failed;
 };
 
 #define ufshci_mmio_offsetof(reg) offsetof(struct ufshci_registers, reg)

From nobody Tue Oct  6 07:51:26 2026
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 4hzT3M12Zgz6cWQn
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:27 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3L6Rs8z4HDC
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:26 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273086;
	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=Bxsp9Oz9oYlyVZpf8ZmCaO9ECq/oJK2Fl/rWAfKLvNw=;
	b=e8kCwagdWEnYmEkck9xQXPO08LZNh6/8oNQZUxgSFIzqgDm8ch7HKQOnfnyq7LI0DwQSGI
	KiIT2pyoll76iwLBBoU316Zvht5Ip+VuwJnNrfj8RN2o8TP/GzfUXrxbd+eZwGqeXxH+6g
	cRRmOz+zpgRO9ol6gtiDNDhU04JCUfGqrgADMkCZcvHuEyl/VaESU+/3hJZdC/8wrOGd4E
	Wn5S7Sda6Aun2jpNyTwISaPJTw/b6mHerW6V9YNgQqdTogmEnvC2UGCc3chDrW6bKn06FZ
	4S/5oZJcVVTQsYYQmX8zzzZ37Q6Ny+lXz7JBwPU6FYjCVdTo4fcK4SfXUQz8YA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273086;
	b=mykb2VutZmaFvj0YOxieGjujXZGFyqxgwKoxj3veSl3SaXIKVT3ukKunxJe9sENLCQuU4A
	K1Dq8q/JXtwKKypi7yoWPBVq6gw6x5QApc7ui6ZtLDFM2ot3ObqC6BnmDE3hKGD1TP2MkG
	k1Zkpu31rdo53ATyai6FDss1FeUUo8T5PRudJKyTovHNhvEi1ztHMKMSYrdXUqvtQYmchq
	z+WGjml7dEdOHEJXG6PFw0L7PXRXMFzIrZlrKIigGEpenHvy8LlcelZeAgSIucYChQEwNN
	DWOq9jZ7kcUOun54ve7vCmUxVGqNuBnNuq+nBzE3ISKvIkRhCI/4biQrK7jkxg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273086;
	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=Bxsp9Oz9oYlyVZpf8ZmCaO9ECq/oJK2Fl/rWAfKLvNw=;
	b=UVZko8Q+TeW8yCmNCf3BKHnDtU128hwi2QD05tUMZG1lxt+mCZgxL5gLp+xwLMdvnccYlF
	w6KYJTAdamlX7WQbbvDn51hL89z8VtywBtY4Ewl8J5hAz+fcUjI+Bv/1cFZpsGQghfp8fu
	zbTLiP7A8Ngz1HOroU0DqvhhZ7Z+RIjqZOYI/3Z8DpIzD6VcS3frFDMmDlpLcTEhcBs3cH
	LpvEFOHMT7QME5a33nhT9RgKY2z0OHZsbSHeFP7b7JbTORbyymsebYjiJNqq1f7W3x3BEe
	QMkC9iF8vK5E9Owx5iaPCYupdsbnKkADazw1VaxSUSoSGkq4TiHj0ABPdXRNFQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3L5WwgzxZN
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:26 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18529
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:26 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 5f607128c9fb - stable/15 - ufshci: report the highest LUN number in the path inquiry
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 5f607128c9fb20d487b8b040a65172a9bd83387e
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:26 +0000
Message-Id: <6ac4a87e.18529.4cf18efc@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=5f607128c9fb20d487b8b040a65172a9bd83387e

commit 5f607128c9fb20d487b8b040a65172a9bd83387e
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-18 05:09:21 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:04 +0000

    ufshci: report the highest LUN number in the path inquiry
    
    cpi->max_lun is an inclusive upper bound, but the driver reported the
    LUN count (8 or 32), so CAM probed one nonexistent LUN past the end.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D58820
    
    (cherry picked from commit 68091ebf0a72b58424e6b57d6ff9687af9043003)
---
 sys/dev/ufshci/ufshci_sim.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index 8ac47fc4a2dc..2d9a425f6439 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -271,7 +271,7 @@ ufshci_cam_action(struct cam_sim *sim, union ccb *ccb)
 		cpi->hba_misc = need_scan_wluns | PIM_UNMAPPED | PIM_NO_6_BYTE;
 		cpi->hba_eng_cnt = 0;
 		cpi->max_target = 0;
-		cpi->max_lun = ctrlr->max_lun_count;
+		cpi->max_lun = ctrlr->max_lun_count - 1;
 		cpi->async_flags = 0;
 		cpi->maxio = ctrlr->max_xfer_size;
 		cpi->initiator_id = 1;

From nobody Tue Oct  6 07:51:28 2026
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 4hzT3Q1Fmkz6cWGX
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:30 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3P12bHz4H3c
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:29 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273089;
	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=LM5J9NAxK0viWrg7+pM3UG+F6FttroJ2db9itq0yGRQ=;
	b=yddRkLlVjihe3YHMZzSOoZFJReVh0h/SPfbUdCOFyWAN0J7KnJ9ANK2ObwENg69UBJ5a/h
	RMxbXIRTO/M2eqqqyoweHnVKMBbspgeCsB2vVjzZF+HbT4M/DnmSzHFSk//GQrcJuHUYBM
	HJ1ZvP1b5DC7HziYtPKpVEcSQjNUi0fGY1dCH3CJs6UQ9Frfy8t8NlQF9ml/bO/Yr6JGIq
	Md3gs3GVZnwqW8VZqThd5F6moCeiNG8MDWI8aEIVPyrX1ELa0T4mLGe4iv1aRGFnjPFvLA
	bzP/h068wmGdepDiW1uWYssr2Mtdd05OZNea0qdG2ZCB5ZV3WNfOoPiKckIRTg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273089;
	b=lFk24OHdC7PjcH60NdcEDPoW7to/QjSk3vp2rNs+ISAb0lUUxTv1KtrBB4SIR+CKdF0rW8
	58te4ox7bFo3hIWQJbGFwEUBGLH0hr3jCPfPkgXf/xmVq4ojOZSlssjOTpW7YdHBuv7lE2
	iVCpBI3bAj2/VrE0iG4Lpmmp2F4Zm0GzEqhoBNcI4+7mKw0H5YznO1aguKUc9KxfziydPb
	YXjWjNT6QwgsjZZr6mwTKYNH19pGdqx5aI9qfR3mGuFbdurfF+Xf3brcZHCeu5rktCRbvL
	ITLi2i+Wg6Xcu1kADNe1Dbu7CVWQ+XbdT8Xde+BuAeSI4PC2uV6xsUxs8GlQDQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273089;
	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=LM5J9NAxK0viWrg7+pM3UG+F6FttroJ2db9itq0yGRQ=;
	b=YxajNJx7x8cY2oKFewsqeIEGRTJHicoTBjl8jrYmMucjcteWguODwn/Gj0dunDVA714DD5
	uoInAQ7vNcwTOJdGNztkXiGN4nsglNhSiYmuS23TotQkKke75wjMSFCFPP2vYeMQLeA6jA
	QXyo5h/6E3Voaj2t82rOxcvRWeJNb6b8/ZnRoWldzzyk3SFsm0lHwXGkMmKJQF7a59HaS6
	m3157UDeDdVKNj+M2qZBKH8oqNx76sr+dLtjzMYZmU525/I23SVulsPuVGZdG0UvSfyhGn
	W03Ew2emuquwbqXpOp3qRNQnVQuey/2f7COmsG9C0cnR7U8jpLKrPKFTegA+1A==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3P01rWzxcc
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:29 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18f1b
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:28 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: d4e7c457a762 - stable/15 - ufshci: claim trackers before failing them
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: d4e7c457a762403faab9bb1c71844353fda7b275
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:28 +0000
Message-Id: <6ac4a880.18f1b.6d24723b@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=d4e7c457a762403faab9bb1c71844353fda7b275

commit d4e7c457a762403faab9bb1c71844353fda7b275
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-27 05:00:41 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:05 +0000

    ufshci: claim trackers before failing them
    
    ufshci_req_queue_fail() drops the queue lock to complete each
    tracker. In that window the completion path could complete the
    same tracker again.
    
    Claim the slot before dropping the lock, so the completion scan
    skips it. Reserved slots are left to their submit thread, which
    completes them itself. The manual request completion helper
    lost its only caller, so drop it.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D58945
    
    (cherry picked from commit 7682b8f37669671844fedd94a382ec0c459b9b2c)
---
 sys/dev/ufshci/ufshci_req_queue.c | 60 +++++++++++++--------------------------
 1 file changed, 20 insertions(+), 40 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
index db96d13fad24..97eccd082176 100644
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -182,29 +182,6 @@ ufshci_req_queue_manual_complete_tracker(struct ufshci_tracker *tr, uint8_t ocs,
 	ufshci_req_queue_complete_tracker(tr);
 }
 
-static void
-ufshci_req_queue_manual_complete_request(struct ufshci_req_queue *req_queue,
-    struct ufshci_request *req, uint8_t ocs, uint8_t rc)
-{
-	struct ufshci_completion cpl;
-	bool error;
-
-	memset(&cpl, 0, sizeof(cpl));
-	cpl.response_upiu.header.response = rc;
-	error = ufshci_req_queue_response_is_error(req_queue, ocs,
-	    &cpl.response_upiu);
-
-	if (error) {
-		ufshci_printf(req_queue->ctrlr,
-		    "Manual complete request error:0x%x", error);
-	}
-
-	if (req->cb_fn)
-		req->cb_fn(req->cb_arg, &cpl, error);
-
-	ufshci_free_request(req);
-}
-
 void
 ufshci_req_queue_fail(struct ufshci_controller *ctrlr,
     struct ufshci_req_queue *req_queue)
@@ -221,23 +198,26 @@ ufshci_req_queue_fail(struct ufshci_controller *ctrlr,
 	for (i = 0; i < req_queue->num_trackers; i++) {
 		tr = hwq->act_tr[i];
 
-		if (tr->slot_state == UFSHCI_SLOT_STATE_RESERVED) {
-			mtx_unlock(&hwq->qlock);
-			ufshci_req_queue_manual_complete_request(req_queue,
-			    tr->req, UFSHCI_DESC_ABORTED,
-			    UFSHCI_RESPONSE_CODE_GENERAL_FAILURE);
-			mtx_lock(&hwq->qlock);
-		} else if (tr->slot_state == UFSHCI_SLOT_STATE_SCHEDULED) {
-			/*
-			 * Do not remove the tracker. The abort_tracker path
-			 * will do that for us.
-			 */
-			mtx_unlock(&hwq->qlock);
-			ufshci_req_queue_manual_complete_tracker(tr,
-			    UFSHCI_DESC_ABORTED,
-			    UFSHCI_RESPONSE_CODE_GENERAL_FAILURE);
-			mtx_lock(&hwq->qlock);
-		}
+		/*
+		 * A slot in UFSHCI_SLOT_STATE_RESERVED is visible here
+		 * only while its submit thread is failing a PRDT setup.
+		 * That thread completes the request, so leave the slot
+		 * alone.
+		 */
+		if (tr->slot_state != UFSHCI_SLOT_STATE_SCHEDULED)
+			continue;
+
+		/*
+		 * Claim the tracker under the lock. The completion
+		 * scan only completes SCHEDULED slots, so it will
+		 * skip this one while the lock is dropped.
+		 */
+		tr->slot_state = UFSHCI_SLOT_STATE_NEED_ERROR_HANDLING;
+		mtx_unlock(&hwq->qlock);
+		ufshci_req_queue_manual_complete_tracker(tr,
+		    UFSHCI_DESC_ABORTED,
+		    UFSHCI_RESPONSE_CODE_GENERAL_FAILURE);
+		mtx_lock(&hwq->qlock);
 	}
 
 	mtx_unlock(&hwq->qlock);

From nobody Tue Oct  6 07:51:30 2026
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 4hzT3Q4Msjz6cWZ0
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:30 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3Q1xrKz4HDx
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:30 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273090;
	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=SCj2Yr1N3+kopTH1WyK3P3ucgoHilyuMAsViq9WNtFI=;
	b=fdOpDlZE7zji3IX4MZ1/WPaNYJ2JE9O5ZwjJkED50tczmEvp24vAq8nKC4IZ68Ckcualn5
	rDacPJTLw5zd+UQbHYTEIEDO2TBdu7kcQBvj011ksJNzj43OH/IolxO5B7mdddBBeNcf5g
	vEKztG5L5mZa/VRtS6H03uOdq3pHzZ6mpNKA7d92CEFgA5l7XgSEEcJ5mAYBKVYQSNTMxy
	t20cl+w8EppEIk07yHfDZ8WAdIa+lsxbFPGNzwlB3iAV69IV3zeUQqWdTAc5pA7f8+fyvz
	I4sNTxhsixVXmJXuTezSjKd7Y/DK298yDL7ORfkM8gO/7GWq7u3EEjGINzp0Rw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273090;
	b=IAfaSF2kEBWqOP1KEx3CwL8aEkOKQqf1dgPrv5Q9hyAuyROk+M5n306+HhNiae03VrDPg+
	Wuam29yImplrkoei7v64/6zRcl6U0czeehW5cglgSjKEvvlrexwTGwuK9TE5vGxKkrO1e6
	PQvyeh9fI4cF6HARglSRCyvxxb1qHLQBahNosTiYbGCaWklHiF8WaGP3hZC/sb1ptxIKnR
	365c8IwWKv+JKXipXFgepzX6cC9BN1cERl4ZDmCt+pRY25xW6ALP2LAR5FfLOknI/TrNLf
	7Ns2x0LUihvzH2zQdQSsqaEMplpOIZ+nt4q2fy9pUvuLAvrkorloja3YnmkqTA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273090;
	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=SCj2Yr1N3+kopTH1WyK3P3ucgoHilyuMAsViq9WNtFI=;
	b=NcQu5TWuUU7e+zK2BnA2pRmWa+PVTL60ruQC8coskxsxATLuFm5RHGQCEWccJ+pjOufaLh
	fdmGw9AiDu9ya8rHp8B+vVFtaZhDEZki3uPJLEIkslvj9wRKCHZpQPE4AeJ4YaiXsuNCAU
	xDFmYHFto+DKd2aFMO22eEwVYcuWJop89J91PrmM61OZMoS5a3m0LKcaap4PzO5YtDw8QO
	LPULfejFLYm4fqtp4byCqEa5y47hG/EeAhSjBAMevAI0961u/W/VphoT+sP9Gb/KGAL77R
	LNlTQFMWwbffkbrjQjd8DQGkRQ9iw1/LX3/ezhbIQWTeM4E0/cXVnK9qvVqzvA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3Q0kjhzxpN
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:30 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18a43
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:30 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: c8095bbcad86 - stable/15 - ufshci: build valid fake responses for manual completion
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: c8095bbcad867e6342ab1cd498318a7276a52484
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:30 +0000
Message-Id: <6ac4a882.18a43.40300310@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=c8095bbcad867e6342ab1cd498318a7276a52484

commit c8095bbcad867e6342ab1cd498318a7276a52484
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-27 05:02:10 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:05 +0000

    ufshci: build valid fake responses for manual completion
    
    The manual completion wrote the fake response to the wrong
    descriptor for task management slots. It also left the task tag
    at zero, which tripped the task tag check under INVARIANTS.
    
    Write the fake response where the completion path reads it.
    Copy the task tag from the request.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D58946
    
    (cherry picked from commit 746278a6ddc80a98001f875cd975283d7c99b960)
---
 sys/dev/ufshci/ufshci_req_queue.c | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
index 97eccd082176..2e13d244daef 100644
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -168,16 +168,30 @@ static void
 ufshci_req_queue_manual_complete_tracker(struct ufshci_tracker *tr, uint8_t ocs,
     uint8_t rc)
 {
-	struct ufshci_utp_xfer_req_desc *desc;
+	struct ufshci_req_queue *req_queue = tr->req_queue;
+	struct ufshci_hw_queue *hwq = tr->hwq;
 	struct ufshci_upiu_header *resp_header;
 
-	mtx_assert(&tr->hwq->qlock, MA_NOTOWNED);
+	mtx_assert(&hwq->qlock, MA_NOTOWNED);
 
-	resp_header = (struct ufshci_upiu_header *)tr->ucd->response_upiu;
+	/*
+	 * Write the fake response where the completion path reads it.
+	 */
+	if (req_queue->is_task_mgmt) {
+		resp_header = (struct ufshci_upiu_header *)
+		    hwq->utmrd[tr->slot_num].response_upiu;
+		hwq->utmrd[tr->slot_num].overall_command_status = ocs;
+	} else {
+		resp_header = (struct ufshci_upiu_header *)
+		    tr->ucd->response_upiu;
+		hwq->utrd[tr->slot_num].overall_command_status = ocs;
+	}
 	resp_header->response = rc;
-
-	desc = &tr->hwq->utrd[tr->slot_num];
-	desc->overall_command_status = ocs;
+	/*
+	 * The hardware never wrote a response. Copy the task tag from
+	 * the request so the completion checks pass.
+	 */
+	resp_header->task_tag = tr->req->request_upiu.header.task_tag;
 
 	ufshci_req_queue_complete_tracker(tr);
 }

From nobody Tue Oct  6 07:51:31 2026
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 4hzT3S0WSYz6cWNh
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:32 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3R2vP1z4HFC
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:31 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273091;
	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=+QYWwj72jT+nSVHm7tV8MhdQKminfT87Aq445YS9PQY=;
	b=oD54u2rsQ8hADVQUxCV0DilzsXaWV3jbP2eSa0VFIA8INqNskKgNWnilTTXDNRm/ipzHTZ
	+k/1PAliCm19/JDR3CYZgPxdDgJJNNKY5ojQbgeCOuGi6nnUNPviqZgad9sQrznweIchEJ
	YYN8YbGVuDChdWc7yDRlZIwUTR46nRjrNW2c1YpettvUz0S1O9ti2l2xCn8R6wUFsNxJwT
	Xi4rtQN74cEDiwO/qSGbB0WTb9ZY9Rpci6fCUlQOkTuCLS9SduwVT1j4nGF6pP9NihRqVN
	N0X1JJ+faZgE1CbjkGowmK8Rttvf/ub6LfB+gqr+nIX0WCtJfpJwCT6ybe4YLQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273091;
	b=JesAZUMGXGMxfMq5o4N7P6hNieWmJLFftVhezdD2Hew/AimeBZnl5lzUf53yo0huzlWv64
	A4wIuWgNNHrgmBK+TveUIHUJG4eTB8qmkJu84Yhm+/xjRwwH8UIqrbnxdicUeBKhAFXrKW
	7AaFGgy4pT+Gg9KWkybRddUsACMTgm2VfwYXM97TWj9tuUf29sW8qp2G2BA3AZTBYJ/Wor
	cn4HQ3dNt6eINKTZokhpq2NamCDEqLxbJevi/y4faJFFx4qnXMzIazMIGI0U7SqOrh2M38
	+svVY+mF4k8nJ6IkGarQSxqkZvIyNyQXjFetvNiy2K/Y7lCvgKh9z8mcvumPbQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273091;
	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=+QYWwj72jT+nSVHm7tV8MhdQKminfT87Aq445YS9PQY=;
	b=qXAfYKvu52F4VB77spuj9IMQLzf/rj5fv54Kc73oP16imutolGJDRI2E2DpFF7QFfonqLW
	M0xTSiN9G0VO4p2KR2hkzldKhYugYlV+iK30cfIABfH2R93x6bz8/jEMHX5fcGUFGnjXeo
	bTnnmn59ljYKZsFobEQWAipWRFN3WJGIiFDi6oxR6rFUzTIdVkz5mhV/MBIvXbqAo30WE8
	PKq9o7ts+GJ0BpejCO739UKbmmtnG5XmCK+i52ShVYeoz2IQQ913ENXgiACCQJxEd0/gvi
	Xzct9guG3AgMrAUlN95/jFUZ1lN8hH1S2d9II9uSUKLznUoKb7GH0CGZ1wfSLg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3R1jKzzxZS
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:31 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18932
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:31 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 36e915b5eacb - stable/15 - ufshci: handle a recovery reset before the SIM attach
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 36e915b5eacb667a7f65aa6b89083022cf675bff
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:31 +0000
Message-Id: <6ac4a883.18932.4cdf3a9c@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=36e915b5eacb667a7f65aa6b89083022cf675bff

commit 36e915b5eacb667a7f65aa6b89083022cf675bff
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-27 05:03:02 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:06 +0000

    ufshci: handle a recovery reset before the SIM attach
    
    When the first start attempt fails early, the recovery reset
    runs the start sequence again without a SIM. That pass still
    looked up the WLUN, so it dereferenced a NULL SIM and panicked.
    
    Attach the SIM whenever it does not exist yet. Also make the
    WLUN lookup return NULL when there is no SIM.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D58947
    
    (cherry picked from commit e59d4ec66fcab3da813f593f52bb8f1577cbb403)
---
 sys/dev/ufshci/ufshci_ctrlr.c | 7 ++++---
 sys/dev/ufshci/ufshci_sim.c   | 4 ++++
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index 2f930d55a295..69b6869e98e2 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -151,10 +151,11 @@ ufshci_ctrlr_start(struct ufshci_controller *ctrlr, bool resetting)
 	/* TODO: Configure Background Operations */
 
 	/*
-	 * If the reset is due to a timeout, it is already attached to the SIM
-	 * and does not need to be attached again.
+	 * A reset normally arrives after the SIM is attached. But if the
+	 * first start attempt failed early, the reset path runs without a
+	 * SIM. Attach it whenever it does not exist yet.
 	 */
-	if (!resetting && ufshci_sim_attach(ctrlr) != 0) {
+	if (ctrlr->ufshci_sim == NULL && ufshci_sim_attach(ctrlr) != 0) {
 		ufshci_ctrlr_fail(ctrlr);
 		return;
 	}
diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c
index 2d9a425f6439..d9ea84961879 100644
--- a/sys/dev/ufshci/ufshci_sim.c
+++ b/sys/dev/ufshci/ufshci_sim.c
@@ -454,6 +454,10 @@ ufshci_sim_find_periph(struct ufshci_controller *ctrlr, uint8_t wlun)
 	uint64_t scsi_lun;
 	uint64_t timeout;
 
+	/* The reset path can get here before the SIM is attached. */
+	if (ctrlr->ufshci_sim == NULL)
+		return (NULL);
+
 	scsi_lun = ufshci_sim_translate_ufs_to_scsi_lun(wlun);
 
 	if (xpt_create_path(&path, /*periph*/ NULL,

From nobody Tue Oct  6 07:51:32 2026
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 4hzT3S6Nypz6cWJT
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:32 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3S3Mvfz4HFR
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:32 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273092;
	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=jwdTYawxyby3Hk9R0f+L4NR3DCM1lut0ZGC72tMh9BU=;
	b=mpmn0OJtY4+aT9z9nCfw7kJga2aD+5O82080H6TJyHGIQeh4qeYrEgcr7uShV0n1qcK+Sc
	XBdGSC9JlNLzwCJepXn4qx4TnXKk+o9x5g8iXDMsqbIt9PTkgyBHQg7foDDBb1YMeZMCuE
	UXqCUi68XtRGGMVcFFcZophf/KrV/vJ9W6dXItRbjeqidU2VU/FeeVaTcPFd5N+AU5xwSO
	eW7Ou10j3P/WqumxMHMj7yBRI8pPF1IxZ6bJ7/apmvADjpcleZYU1oFIKJJgDxAc1PBAsG
	AczsEfDmaGSbyDjd051Rf36wdi6zilJrqI6mbqC/VGNHXCie/VObNImbE1lfRw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273092;
	b=jKput8/YfI3kWYqC3mNtDxStZsP8k46uEgRUmSOvt/uZdNPripVLw0S7s5mVGlaSnRHcDh
	VaAPSQ5TzMkskS5ph65aG8u+FJy44hO8YRa3Q7HnOJdQ488OoF9X6ymxc+Td+W5Gm8Ps6Y
	reodBUr3l7mF6V3I2fAbWBBA5uyhRdEqY0VFFmiAywgy1hDBDWHAI30v0zGeOaF8oEzso0
	G7szxQ87rCw3hMmFpAllSA0IysMk0EYp+IQdS0TxFJ3NZ2esbo8QLnTAEyfnFfaqEqBGqL
	Fmi7VXuWn1itizb+sM2QbGa7rGQrS01xfXh0UtOYoP2azVL1liO2bcwZLu7wmg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273092;
	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=jwdTYawxyby3Hk9R0f+L4NR3DCM1lut0ZGC72tMh9BU=;
	b=yYZuUlxi3O+saH5X7yuWhVFjIBCUaRAmGEvXtbDDOQiTSyB3/Lr2mr5C7b3yC89RfHpTrk
	grh8xFuV4U28X3zJb8H5x2QxiBAFrKH40WaUCkvEbf/QZbdSONo+YbnM0qYTIdqIbLaHJj
	J52E1GiyJnhoXt21Hyt7qf7jtpqUX67Q30srF2YdZ4noKSmud6yNFywZRy8vribeN5B2XB
	qetrFqDE4Y4Iesd06CV899hxtHH3vJ7nZJA9Ud1/ELRqiCkHerm+4SFWYTAWR7M5akqEOU
	wWm25x80v9RGgrsJmgA9RkDFtbn85SQ8IwsbmkVzNnnpRzF1NnP1pabpaHBvIQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3S2LrPzxpP
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:32 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 1879c
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:32 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 3e6ff534b634 - stable/15 - ufshci: reject new requests on a failed controller
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 3e6ff534b634831cbc5faeda22cb3bbe77979fcb
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:32 +0000
Message-Id: <6ac4a884.1879c.4ec64527@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=3e6ff534b634831cbc5faeda22cb3bbe77979fcb

commit 3e6ff534b634831cbc5faeda22cb3bbe77979fcb
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-08-27 05:04:11 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:06 +0000

    ufshci: reject new requests on a failed controller
    
    A failed controller accepted new requests, but nothing ever
    completed them, so the caller waited forever. The admin retry
    path could also resubmit a request to a dead queue.
    
    Reject new submits and admin retries on a failed controller.
    The submit check runs under the queue lock, so it cannot race
    with the queue walk in the fail path.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D58948
    
    (cherry picked from commit 3ecee9314d88e2bb277b365d9413e219fd9a1283)
---
 sys/dev/ufshci/ufshci_req_queue.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
index 2e13d244daef..886cf9aff77f 100644
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -270,8 +270,8 @@ ufshci_req_queue_complete_tracker(struct ufshci_tracker *tr)
 	error = ufshci_req_queue_response_is_error(req_queue, ocs,
 	    &cpl.response_upiu);
 
-	/* Retry for admin commands */
-	retriable = req->is_admin;
+	/* Retry for admin commands. A failed controller must not retry. */
+	retriable = req->is_admin && !req_queue->ctrlr->is_failed;
 	retry = error && retriable &&
 	    req->retries < req_queue->ctrlr->retry_count;
 	if (retry)
@@ -765,6 +765,9 @@ _ufshci_req_queue_submit_request(struct ufshci_req_queue *req_queue,
 
 	mtx_assert(&req_queue->qops.get_hw_queue(req_queue)->qlock, MA_OWNED);
 
+	if (req_queue->ctrlr->is_failed)
+		return (ENXIO);
+
 	error = req_queue->qops.reserve_slot(req_queue, &tr);
 	if (error != 0) {
 		ufshci_printf(req_queue->ctrlr, "Failed to get tracker");

From nobody Tue Oct  6 07:51:34 2026
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 4hzT3W13CNz6cWYQ
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:35 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3V4wyMz4H6q
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:34 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273094;
	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=932dkggmn3uZpbZ7ard5Y0JwPPOccf8zQ66o2qxbuKc=;
	b=auie2Fxl0VT9aGgzJKoudAstpOwg7/KecpuC1eUlvd7mhiGdIHc0OsQXO5j0EawxpNISpb
	PPSdczvyWfWyBRnSARHy2oHcgVC0vV/nsjrkaKNMEoxsZzcjZGsgskgpItsxqBENAtCHAE
	SEALF0TYBbKCqH0I/PmUZBKP+YqqKgfiUs8Xc/GPvUERzzOVb3YX4Jfta1lMKNmqoY5Dlm
	0EtMVnWiMbjuNBiVfXQG/HfcH79RATsj5HL/oQs/n/uXJDAneZdiLmN3FF5kUVCEsUIGSF
	ds3UyQ88R/OxTWJCqgeC8XyC95sODqKDxFVTiQihHPlKP7aB/5YVhBp/F45ylA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273094;
	b=a+EEIb5pCEnuAG17qt0C58ngGdFxw36yYUBSQrb6AheNBsKLgpixwco8jHURpa/UxzPctj
	m3P2GUxcKdRlkBCigpkJAIsFHdS9Dx6lplCECMFUA6RKFAl547pEvfh6hotnoQ+kxhM/hP
	ngy9xogqCwiBhh6u6mv9NwU9qhIfaUuM42TnnF8BRrkOrHfOI7+0bvsTbiM4Cq/kgY9O3l
	vrwhkabZPkQ5K+kI9B+MRXqixBLY3bTJdv7rgoQjuXXQGON+YRcAzahDaZUjqABU8SjN82
	Z26QlJk8EBMBsrtBk+PN8capwCgZthv4x5ZXoZGR5fPaovDZuuMDiU83/lgJ1A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273094;
	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=932dkggmn3uZpbZ7ard5Y0JwPPOccf8zQ66o2qxbuKc=;
	b=Qb3yio1R12Q/XDBHbeafOM9hbHdcvG1vr9w3ZBqZMae+ipSHfpWVfy6l29XVqSk4wKprzV
	JpI3g8dq4IuvU/nckSq7l4dzT8f2oHfVUPts4aAKKj41dyVNhqfSQ5wmHguMTAL05thiRN
	zsSueNjpzRB8YFRe1LHy1qVI9Ih73mLL1c25Qrtw19siiDaeKshX9EhdhNVJbNoOHN0IZl
	SnT0/FmWCbx6tJHa4iabDF91cAmMcqW9t7Ez8U68dVai7nthIyqUZ8FMjm2GS6mTkJedjB
	wihVaXVqsrODKLjLEzCGjJYOq0OYxOQDtjLy1AmOvlWx1m9UnZH7ZwRIDZdpKQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3V3wVWzxck
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:34 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 47b66
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:34 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 1aaad60ae89a - stable/15 - ufshci: set HS series per platform and adapt type per gear
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 1aaad60ae89a132bbca0b1f1af85a5eb0f65f7b1
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:34 +0000
Message-Id: <6ac4a886.47b66.35fc3845@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=1aaad60ae89a132bbca0b1f1af85a5eb0f65f7b1

commit 1aaad60ae89a132bbca0b1f1af85a5eb0f65f7b1
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-09-02 01:50:09 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:07 +0000

    ufshci: set HS series per platform and adapt type per gear
    
    The driver always asked for Rate-B. It never set the adaptation
    type. The Snapdragon X Elite firmware tunes the PHY for Rate-A.
    A Rate-B link dies at every gear there. HS-G4 and above need
    initial adaptation. This is a UniPro rule. It applies to
    every host.
    
    Add an hs_series field to the device tables. Use Rate-A on the
    Snapdragon X Elite. Keep Rate-B on the PCI hosts. A table entry
    without an HS series fails to attach. Set PA_TxHsAdaptType to
    initial adaptation at HS-G4 and above. Leave it alone below
    that. Hosts before UniPro 1.8 do not have it. The Galaxy Book
    4 Edge now links at HS-G5 Rate-A.
    
    fio results (128k sequential, 4k random, posixaio):
    
    QD  | SEQ_R(MiB/s) | SEQ_W(MiB/s) | RND_R(kIOPS) | RND_W(kIOPS)
    ----+--------------+--------------+--------------+-------------
    1   |         1357 |         1221 |         12.1 |         27.2
    4   |         3103 |         3234 |         46.5 |         92.9
    32  |         3508 |         3238 |        176.4 |        125.0
    
    Sequential writes land in the WriteBooster buffer. Sustained
    writes drop to 556 MiB/s once the buffer runs out.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D59298
    
    (cherry picked from commit c09daa33d6ffbbd1956bfe4dcd9ca746192d6940)
---
 sys/dev/ufshci/ufshci.h         |  4 ++++
 sys/dev/ufshci/ufshci_acpi.c    |  9 +++++++--
 sys/dev/ufshci/ufshci_ctrlr.c   |  7 +++++++
 sys/dev/ufshci/ufshci_dev.c     | 11 +++++++----
 sys/dev/ufshci/ufshci_pci.c     | 10 +++++++---
 sys/dev/ufshci/ufshci_private.h |  1 +
 6 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/sys/dev/ufshci/ufshci.h b/sys/dev/ufshci/ufshci.h
index c2bef5c9a807..ab55c0af938f 100644
--- a/sys/dev/ufshci/ufshci.h
+++ b/sys/dev/ufshci/ufshci.h
@@ -41,6 +41,8 @@
 #define PA_TxTermination		 0x1569
 #define PA_RxTermination		 0x1584
 #define PA_HSSeries			 0x156A
+#define   UFSHCI_HS_SERIES_A		 1
+#define   UFSHCI_HS_SERIES_B		 2
 #define PA_PWRModeUserData0		 0x15B0
 #define PA_PWRModeUserData1		 0x15B1
 #define PA_PWRModeUserData2		 0x15B2
@@ -49,6 +51,8 @@
 #define PA_PWRModeUserData5		 0x15B5
 
 #define PA_TxHsAdaptType		 0x15D4
+#define   PA_INITIAL_ADAPT		 1
+#define   PA_NO_ADAPT			 3
 #define PA_PWRMode			 0x1571
 
 #define DME_LocalFC0ProtectionTimeOutVal 0xD041
diff --git a/sys/dev/ufshci/ufshci_acpi.c b/sys/dev/ufshci/ufshci_acpi.c
index f96a4c29e15e..00078a47dec3 100644
--- a/sys/dev/ufshci/ufshci_acpi.c
+++ b/sys/dev/ufshci/ufshci_acpi.c
@@ -49,17 +49,21 @@ static struct ufshci_acpi_device {
 	const char *hid;
 	const char *desc;
 	uint32_t ref_clk;
+	uint32_t hs_series;
 	uint32_t quirks;
 } ufshci_acpi_devices[] = {
 	/*
 	 * The SoC feeds the device 38.4 MHz from its CXO. The firmware
 	 * has no property for it. Verified on the Galaxy Book 4 Edge.
+	 *
+	 * The firmware calibrates the PHY for Rate-A. A Rate-B link
+	 * comes up dead at every gear.
 	 */
 	{ "QCOM24A5", "Qualcomm Snapdragon X Elite UFS Host Controller",
-	    UFSHCI_REF_CLK_38_4MHz,
+	    UFSHCI_REF_CLK_38_4MHz, UFSHCI_HS_SERIES_A,
 	    UFSHCI_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH |
 			UFSHCI_QUIRK_BROKEN_LSDBS_MCQS_CAP },
-	{ 0x00000000, NULL, 0, 0 }
+	{ 0x00000000, NULL, 0, 0, 0 }
 };
 
 static char *ufshci_acpi_ids[] = { "QCOM24A5", NULL };
@@ -97,6 +101,7 @@ ufshci_acpi_probe(device_t dev)
 	if (acpi_dev->hid) {
 		ctrlr->quirks = acpi_dev->quirks;
 		ctrlr->ref_clk = acpi_dev->ref_clk;
+		ctrlr->hs_series = acpi_dev->hs_series;
 	}
 
 	if (acpi_dev->desc) {
diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index 69b6869e98e2..b3b9abbe867c 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -375,6 +375,13 @@ ufshci_ctrlr_construct(struct ufshci_controller *ctrlr, device_t dev)
 	if (!(ctrlr->is_single_db_supported || ctrlr->is_mcq_supported))
 		return (ENXIO);
 
+	/* Every device table entry must name the HS series. */
+	if (ctrlr->hs_series == 0) {
+		ufshci_printf(ctrlr,
+		    "hs_series is missing from the device table\n");
+		return (ENXIO);
+	}
+
 	/*
 	 * The maximum transfer size supported by UFSHCI spec is 65535 * 256 KiB
 	 * However, we limit the maximum transfer size to 1MiB(256 * 4KiB) for
diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index dd467f85c795..28c91828a925 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -320,8 +320,6 @@ ufshci_dev_init_unipro(struct ufshci_controller *ctrlr)
 int
 ufshci_dev_init_uic_power_mode(struct ufshci_controller *ctrlr)
 {
-	/* HSSerise: A = 1, B = 2 */
-	const uint32_t hs_series = 2;
 	/*
 	 * TX/RX PWRMode:
 	 * - TX[3:0], RX[7:4]
@@ -386,8 +384,13 @@ ufshci_dev_init_uic_power_mode(struct ufshci_controller *ctrlr)
 	if (ufshci_uic_send_dme_set(ctrlr, PA_RxTermination, true))
 		return (ENXIO);
 
-	/* Set HSSerise (A = 1, B = 2) */
-	if (ufshci_uic_send_dme_set(ctrlr, PA_HSSeries, hs_series))
+	/* Set HSSeries */
+	if (ufshci_uic_send_dme_set(ctrlr, PA_HSSeries, ctrlr->hs_series))
+		return (ENXIO);
+
+	/* HS-G4 and above need initial adaptation. */
+	if (ctrlr->hs_gear >= 4 &&
+	    ufshci_uic_send_dme_set(ctrlr, PA_TxHsAdaptType, PA_INITIAL_ADAPT))
 		return (ENXIO);
 
 	/* Set Timeout values */
diff --git a/sys/dev/ufshci/ufshci_pci.c b/sys/dev/ufshci/ufshci_pci.c
index b6b8124bc3a6..3cc184bef714 100644
--- a/sys/dev/ufshci/ufshci_pci.c
+++ b/sys/dev/ufshci/ufshci_pci.c
@@ -49,20 +49,23 @@ static struct _pcsid {
 	uint32_t devid;
 	const char *desc;
 	uint32_t ref_clk;
+	uint32_t hs_series;
 	uint32_t quirks;
 } pci_ids[] = { { 0x131b36, "QEMU UFS Host Controller", UFSHCI_REF_CLK_19_2MHz,
+		    UFSHCI_HS_SERIES_B,
 		    UFSHCI_QUIRK_IGNORE_UIC_POWER_MODE |
 			UFSHCI_QUIRK_NOT_SUPPORT_ABORT_TASK |
 			UFSHCI_QUIRK_SKIP_WELL_KNOWN_LUNS },
 	{ 0x98fa8086, "Intel Lakefield UFS Host Controller",
-	    UFSHCI_REF_CLK_19_2MHz,
+	    UFSHCI_REF_CLK_19_2MHz, UFSHCI_HS_SERIES_B,
 	    UFSHCI_QUIRK_LONG_PEER_PA_TACTIVATE |
 		UFSHCI_QUIRK_WAIT_AFTER_POWER_MODE_CHANGE |
 		UFSHCI_QUIRK_CHANGE_LANE_AND_GEAR_SEPARATELY |
 		UFSHCI_QUIRK_BROKEN_AUTO_HIBERNATE },
 	{ 0x54ff8086, "Intel Alder Lake-N UFS Host Controller",
-	    UFSHCI_REF_CLK_19_2MHz, UFSHCI_QUIRK_BROKEN_AUTO_HIBERNATE },
-	{ 0x00000000, NULL } };
+	    UFSHCI_REF_CLK_19_2MHz, UFSHCI_HS_SERIES_B,
+	    UFSHCI_QUIRK_BROKEN_AUTO_HIBERNATE },
+	{ 0x00000000, NULL, 0, 0, 0 } };
 
 static int
 ufshci_pci_probe(device_t device)
@@ -77,6 +80,7 @@ ufshci_pci_probe(device_t device)
 	if (ep->devid) {
 		ctrlr->quirks = ep->quirks;
 		ctrlr->ref_clk = ep->ref_clk;
+		ctrlr->hs_series = ep->hs_series;
 	}
 
 	if (ep->desc) {
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index 7b74faf95c53..221abb9a9892 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -340,6 +340,7 @@ struct ufshci_controller {
 	256 /* Some controllers have their LSDB and MCQS fields reset to 0. */
 
 	uint32_t ref_clk;
+	uint32_t hs_series;
 
 	struct cam_sim *ufshci_sim;
 	struct cam_path *ufshci_path;

From nobody Tue Oct  6 07:51:33 2026
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 4hzT3V31qhz6cWQw
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:34 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3T43Hcz4H4C
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:33 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273093;
	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=P8pRFrKA2R4bJtel1HVjlwZ6f1YxR3UUQl226jJIdUo=;
	b=wv7gu+H2ZnllO5DOIX5tVf6QOU/paiF710E5Ark9mFQzFkP5P8VGA1XF0u8vPC4qJwiDEi
	GtLueUWEaECUmPoo1S7ID80LJkConqCw88Nt8y7t0NcTTXAjzjwi7HhqQ7qAeYXwTjE6Ge
	hxG0r6RXRCH/wDn6DXuwomGIitgNunxhWkCAB090jUDVXHkeV00J1QF8hDru5GyWgDQr6c
	F+ebpRMFF1iiEGXEfTaaX6KgkbgJfDeeInt6H6brIojsv18YNZ85tp8TGHVf80MfyPN71G
	SxnX6lDTAfkofqZLy3R0yy3aJHmEJ99rsto4SygmcRPUcHVE7NAYOpqe9NU6MA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273093;
	b=JLMnIRkkqKtSr5d4eU6uQ02VmhqON4sYPuveVFbsvE+JgM0uRL9Eg1yBxAR9vPCFSOn23M
	FPxzhJJcaIEhqE6wORdz19NjR4MgFO8Clux+40adWoCj9c2IUgborsOHDd6Zt3ptiK/VzN
	cSvSaCvvB9TXb/6TlpAYWfz3M+b+py9yFBpFV0fvnbifSuA7HT+GRZCH70MWLyY5eTp6EQ
	RlmsjPJN6EPhSffTGgDOGbQkaatirXok6nqbUaBS20gxzd+iOT3SrwP9PcDpiyxiA0RqyK
	89TOY4MdGUbO5oe6KUZheexTyXwFaJJtN0WkuHHSDOl9xhoZRG+0C89Dw0DIyw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273093;
	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=P8pRFrKA2R4bJtel1HVjlwZ6f1YxR3UUQl226jJIdUo=;
	b=vRwKlx2zlHYVI+Tpbv7PqgQEwIeatqB8uESF8XCOG/Wn57w6S1BwHiTUfWdBqHl7c5GH4v
	bjJHBsrZVFT4rc4GKExLQwDNf9ET7Wy9kC8aNLg6n8DTKdPXnekhMPk5VI5BJLz1j45l+Q
	26nG5VIlsBGhz1sLnRrJeARwtcZs4de6wiT/6wstYjTn25qrimfxIL7/u3vWU72k8UZ9R4
	iuEPeRgGjt9G2bBQ6Utr/PEoYbeh3ybpaf2nYw0/cfaiSjosbe5G2iyuKkQzpmRbkKYpnJ
	Ree/Z4lOntqe0s5wCdTOPOqpKnPxDp7GOS87ulFXWiAY9gpl45VWToJZ7ArLCQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3T34pKzwwm
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:33 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18a47
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:33 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 8dcd02bdf8a6 - stable/15 - ufshci: fix the Snapdragon X Elite reference clock
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 8dcd02bdf8a6f25fd541a4f0df9131395bfefc47
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:33 +0000
Message-Id: <6ac4a885.18a47.5515fb5e@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=8dcd02bdf8a6f25fd541a4f0df9131395bfefc47

commit 8dcd02bdf8a6f25fd541a4f0df9131395bfefc47
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-09-02 01:47:18 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:07 +0000

    ufshci: fix the Snapdragon X Elite reference clock
    
    The driver's ACPI table set bRefClkFreq to 19.2 MHz. The
    Snapdragon X Elite feeds the device 38.4 MHz from its CXO. The
    firmware has no property for it. The device ran its PLL from
    the wrong base. Every HS mode failed. PWM still worked. The
    attribute is persistent. The wrong value survived reboots.
    
    Set 38.4 MHz in the table. Read the attribute first. Write it
    only when the value differs or the read fails. Log a changed
    value and a failed read. Verified on the Galaxy Book 4 Edge.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D59297
    
    (cherry picked from commit 973783515e7db6e19550c57c8f9d94d907e3bd0e)
---
 sys/dev/ufshci/ufshci_acpi.c |  6 +++++-
 sys/dev/ufshci/ufshci_dev.c  | 17 +++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/sys/dev/ufshci/ufshci_acpi.c b/sys/dev/ufshci/ufshci_acpi.c
index 94da0d3cb411..f96a4c29e15e 100644
--- a/sys/dev/ufshci/ufshci_acpi.c
+++ b/sys/dev/ufshci/ufshci_acpi.c
@@ -51,8 +51,12 @@ static struct ufshci_acpi_device {
 	uint32_t ref_clk;
 	uint32_t quirks;
 } ufshci_acpi_devices[] = {
+	/*
+	 * The SoC feeds the device 38.4 MHz from its CXO. The firmware
+	 * has no property for it. Verified on the Galaxy Book 4 Edge.
+	 */
 	{ "QCOM24A5", "Qualcomm Snapdragon X Elite UFS Host Controller",
-	    UFSHCI_REF_CLK_19_2MHz,
+	    UFSHCI_REF_CLK_38_4MHz,
 	    UFSHCI_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH |
 			UFSHCI_QUIRK_BROKEN_LSDBS_MCQS_CAP },
 	{ 0x00000000, NULL, 0, 0 }
diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index 063b65aaf579..dd467f85c795 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -242,10 +242,27 @@ ufshci_dev_init_reference_clock(struct ufshci_controller *ctrlr)
 {
 	int error;
 	uint8_t index, selector;
+	uint64_t value;
 
 	index = 0;    /* bRefClkFreq is device type attribute */
 	selector = 0; /* bRefClkFreq is device type attribute */
 
+	/*
+	 * bRefClkFreq is a persistent attribute. Skip the write when
+	 * the device already holds the wanted value.
+	 */
+	error = ufshci_dev_read_attribute(ctrlr, UFSHCI_ATTR_B_REF_CLK_FREQ,
+	    index, selector, &value);
+	if (error != 0) {
+		ufshci_printf(ctrlr, "bRefClkFreq read failed, writing %u\n",
+		    ctrlr->ref_clk);
+	} else if ((uint32_t)value == ctrlr->ref_clk) {
+		return (0);
+	} else {
+		ufshci_printf(ctrlr, "changing bRefClkFreq from %u to %u\n",
+		    (uint32_t)value, ctrlr->ref_clk);
+	}
+
 	error = ufshci_dev_write_attribute(ctrlr, UFSHCI_ATTR_B_REF_CLK_FREQ,
 	    index, selector, ctrlr->ref_clk);
 	if (error)

From nobody Tue Oct  6 07:51:35 2026
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 4hzT3X3Qvlz6cWcZ
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:36 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3W6ljKz4HCq
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:35 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273095;
	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=JTWFQcgl70he4fwpLLl5LJRgJJYvM5s3qdIjR3xd7hU=;
	b=j+0A9cVOJ/FZMemjQNo2TnrcWHSjwambalfTCxALodvLzcBJS5CFSuMVnCBvLl4/jq94nK
	+xQNdaiVRnVfv8CM4JFB821lZwCzI4oB3X7D7YXqqYjoIenLGrNlw7Sze80prnOni0s4v/
	wi4Xt1H2Pyoji7n20fzILcZZeRyZRdmVEtnhKf8kFNEXM1TVjJO6O7nKNILSB+3c8p2UnL
	QSOKHb18ObBAcqdY0nnyn5rKhxgun3NiLlV7VF27/N3E26GTFLChpLyCvDct6oJP+Qmyk2
	jtT2chQeI5JRDhQt16pfw3MlqaWKnA+CuQrPVuUebVuzkEJjf8rYxrZJ8Ti0IA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273095;
	b=srj7p2qoQvqnuHW3YDaDl4AvdWu9fOjuzRQwzm9vau/JJt8Dbs1acU4Iurfsx8Dz6YmTLm
	EX4x07VmjVbYXV8OUVmKgYX4Tb/1QxT2ArtwXROPK2eU6vDJ+o4jkaA/RV+PGOTG6bgQzU
	WaqBstJSRxcM6/5ajiqylT0lBCKzCqKkP62fPy2nDnLFw6WHYZJR2p4hNrIK8IqohBDZSg
	inv6Lrb5uaQ3e4eFOV38g3es4Kp22xE2wor/igxt5dnrDEA5Ew/IJKSnHwkw3s1cKOZ+9M
	rhAHC8PJKp46jt/obxqdHppDlVnYZG5g3DNYl1K2gcAR/L/gDpPWdHbxEtWwtQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273095;
	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=JTWFQcgl70he4fwpLLl5LJRgJJYvM5s3qdIjR3xd7hU=;
	b=IpTyWukA27XmjXcDv8c2CdxG35GBbJnCkXoTMtbZjACnwpZDtOmdYYj46V3m0SRQYXEdX2
	MjmSlW2X5e3HkGRMlF0uYzIFBdyb8XeUxTuy0tJ8cZWoDazTx3psBI6eeJYDbBgIvuMgUE
	LtEy1M8voj4+UPF0BXJAvRMjtjg+jdgvTlvaz4JllNMollrU2HI6ZE/ca1WVXK8vaYLe+j
	UonnejqHw4hGS29BcOspjLuQzrzYn0v3OJClnDlMmsuYFCjfLGzEU/Da+nPS6JZC3EL5CH
	pw/2PQJMY/5tbv3FMZpJ+f9EesgyoCRFvFm5XGRDz6lSw0LIYQCerG05cGMhaw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3W4fHczxpT
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:35 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18834
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:35 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 6f162827ada7 - stable/15 - ufshci: skip the reinit when the new link works
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 6f162827ada7e1cf8cb038a03a26a346bb71ffe6
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:35 +0000
Message-Id: <6ac4a887.18834.344ba8b8@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=6f162827ada7e1cf8cb038a03a26a346bb71ffe6

commit 6f162827ada7e1cf8cb038a03a26a346bb71ffe6
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-09-02 01:52:48 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:08 +0000

    ufshci: skip the reinit when the new link works
    
    UFSHCI_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH always rebuilt the
    link after the gear switch. It threw away a working HS link and
    ended up in PWM. The reinit is only needed for a dead link.
    There the local side reports HS and the peer never answers. A
    local readback cannot tell the two apart. Peer traffic can.
    
    Probe the peer with DME_PEER_GET after the switch. Skip the
    reinit when the probe succeeds. Log it when the probe fails.
    
    Reviewed by:            imp (mentor)
    Sponsored by:           Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D59299
    
    (cherry picked from commit 9930150214d1ca4ad21561d2e0afce9ebf2cdf6c)
---
 sys/dev/ufshci/ufshci_ctrlr.c | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index b3b9abbe867c..480bbfd43d81 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -127,10 +127,25 @@ ufshci_ctrlr_start(struct ufshci_controller *ctrlr, bool resetting)
 
 	ufshci_dev_init_uic_link_state(ctrlr);
 
-	if ((ctrlr->quirks & UFSHCI_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH) &&
-	    ufshci_ctrlr_reinit_after_max_gear_switch(ctrlr) != 0) {
-		ufshci_ctrlr_fail(ctrlr);
-		return;
+	if (ctrlr->quirks & UFSHCI_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH) {
+		uint32_t probe;
+
+		/*
+		 * The reinit is only needed when the link did not survive
+		 * the gear switch. A local readback still shows HS when the
+		 * peer is dead. Only peer traffic proves the link works.
+		 */
+		if (ufshci_uic_send_dme_peer_get(ctrlr, PA_Granularity,
+		    &probe) != 0) {
+			ufshci_printf(ctrlr,
+			    "link probe failed after the gear switch, "
+			    "reinitializing\n");
+			if (ufshci_ctrlr_reinit_after_max_gear_switch(
+			    ctrlr) != 0) {
+				ufshci_ctrlr_fail(ctrlr);
+				return;
+			}
+		}
 	}
 
 	/* Read Controller Descriptor (Device, Geometry) */

From nobody Tue Oct  6 07:51:37 2026
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 4hzT3Z3Hyzz6cWZW
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:38 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3Y6tx4z4HGS
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:37 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273098;
	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=X5uvuQpJCCkzpkF2JWXgBVmodBt2LPXJmoSm5Owo24I=;
	b=f1b4pnbYs5Nip9gTgK0dNLTBPkLaNV1r/H2cL/+BGNnumetF05vaArdSjAXnAhm9QzeMym
	1YHK19Sh3DZarx7ajpt6axBF5ayA1RjGK1Wo0aFrUCGYrYxVcZ8eiQUSd5iBVyJlgZ4eLL
	CQNE2jB5hzJaOXwa6FMCuJYqRIM7NpsxxQ6e+nXRk506QMbrQxyetqP4UvKC9dejVXbVzJ
	qZ7x6ka9qEPEFYUAssy7oOwzIedWhIADZrwQwkSWTCXR753ev5PRTi9Q3WLRqs7kT8OiYA
	zxM4NqIrK7jZ6mlAj5k1vWOh5m9vyNqxkefUEbdGgICvBABM/R+PhcOMfhsQYQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273098;
	b=sdd1vSMdPCdZm0mOp1Zpde7tOvgXEbRh+oerCTvU3InKx5Y9N1Fxzy4oRbXxka45x/AM08
	K7SmoKeZw7OXmtAwCWUpNTQSc/5FLFefpiP6Ea5uKUEAXEqlLYWl6bhqSfhHR4aIceKFTt
	TbrK7wY+cJoLw0wnScUkyQvymlOfIEs91yUvb/FawcNp4NeKm1vNJ6vAs8kMAy+MC3mVeQ
	6OAqF2QmAkFPm9/hxk1Z9xxwX5mrQDMJ2IXHp+s3Jcn9eq3cLAahiOserCmwcsqfYbDsRm
	vTP1G9i2llN4Hmq2Lcj85KvtN+Wof7+Ce8wv3frnkYWaQRw5JhbF4Rq5MVLjuw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273098;
	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=X5uvuQpJCCkzpkF2JWXgBVmodBt2LPXJmoSm5Owo24I=;
	b=av26GUWi+in233q6kQBWRsIsmIOoNw3qFcwNIqeN3IoBQZl4//3XOnrQbjxt8MeWf+WyPL
	jseiEvdLWkxSer+29siyPNJIihFeMifoXlN8W5vSqVnATYspN5AWL9g1QbWac46cjKzR01
	oBba+Wt1X/RYHpLwIQtgwuo6vzwqFGjJsAdCelHWvgB6qjdHakPQDCL9IvNDqvqKnCpXDx
	0bofYoGvN/XwOj/1LKS7rytQUfEclINd96Xn1Fejl7kn5bikC2uvTUR6Q67Cr8+xGR2uVM
	GEmTSBDLGA+mMRELhaV6eK10ol+UfwIAIHO8bY/BmravqUKtJHXybSA4af/89w==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3Y5zkZzx0J
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:37 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 187a0
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:37 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 4392fed5c8ee - stable/15 - ufshci: add a control device node
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 4392fed5c8ee699d22ac833e649b6abacd4afa18
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:37 +0000
Message-Id: <6ac4a889.187a0.21ff91fb@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=4392fed5c8ee699d22ac833e649b6abacd4afa18

commit 4392fed5c8ee699d22ac833e649b6abacd4afa18
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-09-15 01:39:41 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:09 +0000

    ufshci: add a control device node
    
    The driver only exposed a CAM SIM. Userland had no way to reach the
    device for anything that is not a SCSI command, so reading a descriptor
    or an attribute was impossible.
    
    Add /dev/ufshci%d as a root only node and the ioctl ABI header for it.
    The node answers no ioctl yet. The header pulls in ufshci.h, which
    declares bool only under _KERNEL, so include stdbool.h for userland the
    way nvme.h already does.
    
    Reviewed by:    imp (mentor)
    Sponsored by:   Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D59558
    
    (cherry picked from commit 28fefc441e3b701acc2888892a518774394255c7)
---
 sys/dev/ufshci/ufshci.h         |  3 ++
 sys/dev/ufshci/ufshci_ctrlr.c   |  6 ++++
 sys/dev/ufshci/ufshci_ioctl.c   | 67 +++++++++++++++++++++++++++++++++++++++++
 sys/dev/ufshci/ufshci_ioctl.h   | 54 +++++++++++++++++++++++++++++++++
 sys/dev/ufshci/ufshci_private.h |  6 ++++
 sys/modules/ufshci/Makefile     |  1 +
 6 files changed, 137 insertions(+)

diff --git a/sys/dev/ufshci/ufshci.h b/sys/dev/ufshci/ufshci.h
index ab55c0af938f..aaf98cc70d37 100644
--- a/sys/dev/ufshci/ufshci.h
+++ b/sys/dev/ufshci/ufshci.h
@@ -9,6 +9,9 @@
 #define __UFSHCI_H__
 
 #include <sys/param.h>
+#ifndef _KERNEL
+#include <stdbool.h>
+#endif
 #include <sys/endian.h>
 
 /*
diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index 480bbfd43d81..58f101ea27f6 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -459,12 +459,18 @@ ufshci_ctrlr_construct(struct ufshci_controller *ctrlr, device_t dev)
 
 	TASK_INIT(&ctrlr->reset_task, 0, ufshci_ctrlr_reset_task, ctrlr);
 
+	error = ufshci_ioctl_construct(ctrlr, dev);
+	if (error)
+		return (error);
+
 	return (0);
 }
 
 void
 ufshci_ctrlr_destruct(struct ufshci_controller *ctrlr, device_t dev)
 {
+	ufshci_ioctl_destruct(ctrlr);
+
 	if (ctrlr->resource == NULL)
 		goto nores;
 
diff --git a/sys/dev/ufshci/ufshci_ioctl.c b/sys/dev/ufshci/ufshci_ioctl.c
new file mode 100644
index 000000000000..976b28de4cf5
--- /dev/null
+++ b/sys/dev/ufshci/ufshci_ioctl.c
@@ -0,0 +1,67 @@
+/*-
+ * Copyright (c) 2026, Samsung Electronics Co., Ltd.
+ * Written by Jaeyoon Choi
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <sys/param.h>
+#include <sys/conf.h>
+#include <sys/ioccom.h>
+
+#include "ufshci_private.h"
+#include "ufshci_ioctl.h"
+
+static d_ioctl_t ufshci_ioctl;
+
+static struct cdevsw ufshci_cdevsw = {
+	.d_version = D_VERSION,
+	.d_ioctl = ufshci_ioctl,
+	.d_name = "ufshci",
+};
+
+static int
+ufshci_ioctl(struct cdev *cdev, u_long cmd, caddr_t arg, int flag,
+    struct thread *td)
+{
+	switch (cmd) {
+	default:
+		return (ENOTTY);
+	}
+}
+
+int
+ufshci_ioctl_construct(struct ufshci_controller *ctrlr, device_t dev)
+{
+	struct make_dev_args md_args;
+	int error;
+
+	/*
+	 * Set si_drv1 as the node is created. A separate assignment after
+	 * make_dev leaves a window where an open that races the attach finds
+	 * it unset.
+	 */
+	make_dev_args_init(&md_args);
+	md_args.mda_devsw = &ufshci_cdevsw;
+	md_args.mda_uid = UID_ROOT;
+	md_args.mda_gid = GID_WHEEL;
+	md_args.mda_mode = 0600;
+	md_args.mda_unit = device_get_unit(dev);
+	md_args.mda_si_drv1 = ctrlr;
+
+	error = make_dev_s(&md_args, &ctrlr->cdev, "ufshci%d",
+	    device_get_unit(dev));
+	if (error != 0)
+		return (error);
+
+	return (0);
+}
+
+void
+ufshci_ioctl_destruct(struct ufshci_controller *ctrlr)
+{
+	if (ctrlr->cdev != NULL) {
+		destroy_dev(ctrlr->cdev);
+		ctrlr->cdev = NULL;
+	}
+}
diff --git a/sys/dev/ufshci/ufshci_ioctl.h b/sys/dev/ufshci/ufshci_ioctl.h
new file mode 100644
index 000000000000..57e1ce6fa869
--- /dev/null
+++ b/sys/dev/ufshci/ufshci_ioctl.h
@@ -0,0 +1,54 @@
+/*-
+ * Copyright (c) 2026, Samsung Electronics Co., Ltd.
+ * Written by Jaeyoon Choi
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#ifndef __UFSHCI_IOCTL_H__
+#define __UFSHCI_IOCTL_H__
+
+#include <sys/ioccom.h>
+
+#include <dev/ufshci/ufshci.h>
+
+#define UFSHCI_PT_FLAG_DATA_IN	0x01 /* device -> host */
+#define UFSHCI_PT_FLAG_DATA_OUT	0x02 /* host -> device */
+
+/*
+ * Largest data buffer a single passthrough request may carry. A transfer
+ * this long covers 256 pages of 4096 bytes, and one more when the buffer
+ * does not start on a page boundary, which is what the PRDT holds.
+ */
+#define UFSHCI_PT_MAX_XFER	(1024 * 1024)
+
+/*
+ * req_upiu and resp_upiu carry the UPIU whole, including its EHS and its
+ * data segment. A query request keeps its descriptor bytes in that data
+ * segment, so such a request leaves buf NULL and len zero.
+ *
+ * buf is the separate buffer a command UPIU moves through the PRDT. Only
+ * a command UPIU uses it.
+ */
+struct ufshci_pt_command {
+	struct ufshci_upiu req_upiu;  /* [in] */
+	struct ufshci_upiu resp_upiu; /* [out] */
+	void *buf;		      /* [in] PRDT payload, may be NULL */
+	uint32_t len;		      /* [in] length of buf */
+	uint32_t flags;		      /* [in] UFSHCI_PT_FLAG_* */
+	uint32_t timeout_ms;	      /* [in] 0 means the driver default */
+	uint32_t xfer_len;	      /* [out] bytes actually moved */
+	uint8_t ocs;		      /* [out] overall command status */
+	uint8_t reserved[7];
+};
+
+struct ufshci_pt_uic_command {
+	struct ufshci_uic_cmd cmd; /* [in/out] opcode and argument1..3 */
+	uint32_t timeout_ms;	   /* [in] */
+	uint32_t result;	   /* [out] UICCMDARG2 result code */
+};
+
+#define UFSHCI_PASSTHROUGH_CMD	_IOWR('u', 0, struct ufshci_pt_command)
+#define UFSHCI_PASSTHROUGH_UIC	_IOWR('u', 1, struct ufshci_pt_uic_command)
+
+#endif /* __UFSHCI_IOCTL_H__ */
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index 221abb9a9892..dd02c7311599 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -316,6 +316,7 @@ struct ufshci_device {
  */
 struct ufshci_controller {
 	device_t dev;
+	struct cdev *cdev;
 
 	uint32_t quirks;
 #define UFSHCI_QUIRK_IGNORE_UIC_POWER_MODE \
@@ -471,6 +472,11 @@ void ufshci_ctrlr_poll(struct ufshci_controller *ctrlr);
 
 int ufshci_ctrlr_submit_task_mgmt_request(struct ufshci_controller *ctrlr,
     struct ufshci_request *req);
+/* ioctl */
+int ufshci_ioctl_construct(struct ufshci_controller *ctrlr,
+    device_t dev);
+void ufshci_ioctl_destruct(struct ufshci_controller *ctrlr);
+
 int ufshci_ctrlr_submit_transfer_request(struct ufshci_controller *ctrlr,
     struct ufshci_request *req);
 int ufshci_ctrlr_send_nop(struct ufshci_controller *ctrlr);
diff --git a/sys/modules/ufshci/Makefile b/sys/modules/ufshci/Makefile
index aa0419d3a6d6..8b07766bd6fc 100644
--- a/sys/modules/ufshci/Makefile
+++ b/sys/modules/ufshci/Makefile
@@ -12,6 +12,7 @@ SRCS =	ufshci.c	\
 	ufshci_req_queue.c	\
 	ufshci_req_sdb.c	\
 	ufshci_sim.c		\
+	ufshci_ioctl.c		\
 	ufshci_sysctl.c		\
 	acpi_if.h		\
 	bus_if.h		\

From nobody Tue Oct  6 07:51:36 2026
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 4hzT3Y3mGpz6cWZV
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:37 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3X6Dqzz4HL4
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:36 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273096;
	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=5q5zBR7JKANFjBWPWxJbkgInriKK4wOLTU6EjCzLhH8=;
	b=REXPbIeKDdsnh3JrMl7fuqHfphrvNqq4z7tItTAd87fovyjRlgZ/sBghmzEImcrLPQuffo
	5V1pt0dya6guPj2YYYpbfsCIeLEU+QBL3N8uPvfqjL09OXd0PgKyoFFqBk3UVxrODtH1NG
	pwwStsMHTqy+h3S3F89WpCuIu395tejtjcMVfhkQWJjsV/bU2r8owCVdHtcS4jvzNcC5r+
	VPEbgZOa5+4nytmh3WAii1hrVMdxEsTZ7kxjQsXsqcnRxagtsLc5TQ02WqGa1O9z0b7BKD
	uzh+1QeQ9y2vDkbCIW7FjFoLB0z/8apRjL44gcpkdZCrAUGrPbz9v15TcB8leA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273096;
	b=tZi8xmOIFB8AhJfPydzNNgnguja/nIYHmGKidGDPf8e3WeD43+6KH0iaPGBAeN60gqP/Kr
	7/t9YlGbxDhHcTb022HVT3bWzSAV33qgVM3wqJeJt3TiwGM0x8WCxlgv4HaFEn+Skn3yqS
	Wk4E4CMar6Tg/A/ca+J/d4eGZL3oGa4L5ZQVDiu2tXd0T4gcw2i4J90M/whIZQFUVChb0D
	x+OchWG+L+18P3u+O4238k9lwxFPaU4MMTRF53ZXZA2m3ZSzVQC3Hwc4NPZlQgRHBswPqN
	nR48flH8EnZQuNauvyzZaunMp2tfFVulMGohYD1hWopWmJnMc4GumwZXswdSHA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273096;
	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=5q5zBR7JKANFjBWPWxJbkgInriKK4wOLTU6EjCzLhH8=;
	b=DF0g3JgGt7QnjwXnEhqFbxWcmSaqiZV0QJRm9AZxHiuuzJdW9IfuZ/g9KDOZYy0wUMmJEG
	hPLnmom9Igk68Bc19wqvZbim9qmwrK6gjj9TpAVeK+g4/icnqRV6APznUaRVg31vsL2fJ/
	+J4ag89PHxsi/m8tmnFXw1A3qvGIfi30UQPFXqn3uIFcQD5/R/5sQCA9eGaslN1Opi3cLJ
	GC7+7P0uJZVKDLOZBB5qssX1BIyP4DAsKxv5o68hkDoMHZKyA9gKJZLqLXFdLzWd+Rtqx3
	KQalv6gudcsFd0Fds7fQ/ox9rwejWAh8Oqi98XG0jElvMrjN5KpogzX+hz82Uw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3X5C6pzxcm
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:36 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 1852d
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:36 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: ac1ad37b7d84 - stable/15 - ufshci: tell the controller how long the EHS is
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: ac1ad37b7d84d19625c887d89034d6291a3e03d4
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:36 +0000
Message-Id: <6ac4a888.1852d.775233d3@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=ac1ad37b7d84d19625c887d89034d6291a3e03d4

commit ac1ad37b7d84d19625c887d89034d6291a3e03d4
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-09-15 01:37:30 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:08 +0000

    ufshci: tell the controller how long the EHS is
    
    The transfer request descriptor has a field for the total Extra Header
    Segment length. The driver left it at zero. A request that carried an
    EHS went out as the bare command UPIU, and the device answered a request
    it had only seen part of.
    
    Fill the field from the request UPIU header, which already carries the
    same length. Every other path sets it to zero, so nothing else changes.
    An EHS is the first thing that makes a request vary in size, so assert
    that the request and the response still fit in the command descriptor.
    
    Reviewed by:    imp (mentor)
    Sponsored by:   Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D59557
    
    (cherry picked from commit d3e5082ce4dcb154cbf50cba05d8f1dbbd55a5fc)
---
 sys/dev/ufshci/ufshci_req_queue.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
index 886cf9aff77f..f1b145f9791b 100644
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -425,7 +425,7 @@ static void
 ufshci_req_queue_fill_utr_descriptor(struct ufshci_utp_xfer_req_desc *desc,
     uint8_t data_direction, const uint64_t paddr, const uint16_t response_off,
     const uint16_t response_len, const uint16_t prdt_off,
-    const uint16_t prdt_entry_cnt)
+    const uint16_t prdt_entry_cnt, const uint8_t total_ehs_length)
 {
 	uint8_t command_type;
 	/* Value to convert bytes to dwords */
@@ -441,6 +441,7 @@ ufshci_req_queue_fill_utr_descriptor(struct ufshci_utp_xfer_req_desc *desc,
 	desc->command_type = command_type;
 	desc->data_direction = data_direction;
 	desc->interrupt = true;
+	desc->total_ehs_length = total_ehs_length;
 	/* Set the initial value to Invalid. */
 	desc->overall_command_status = UFSHCI_UTR_OCS_INVALID;
 	desc->utp_command_descriptor_base_address = (uint32_t)(paddr &
@@ -719,6 +720,9 @@ ufshci_req_queue_submit_tracker(struct ufshci_req_queue *req_queue,
 		ufshci_req_queue_fill_utmr_descriptor(&tr->hwq->utmrd[slot_num],
 		    req);
 	} else {
+		KASSERT(req->request_size <= UFSHCI_UTP_XFER_REQ_SIZE &&
+		    req->response_size <= UFSHCI_UTP_XFER_RESP_SIZE,
+		    ("UPIU does not fit in the UTP command descriptor"));
 		request_len = req->request_size;
 		response_off = UFSHCI_UTP_XFER_REQ_SIZE;
 		response_len = req->response_size;
@@ -741,7 +745,8 @@ ufshci_req_queue_submit_tracker(struct ufshci_req_queue *req_queue,
 		ucd_paddr = tr->ucd_bus_addr;
 		ufshci_req_queue_fill_utr_descriptor(&tr->hwq->utrd[slot_num],
 		    data_direction, ucd_paddr, response_off, response_len,
-		    tr->prdt_off, tr->prdt_entry_cnt);
+		    tr->prdt_off, tr->prdt_entry_cnt,
+		    req->request_upiu.header.ehs_length);
 
 		bus_dmamap_sync(req_queue->dma_tag_ucd, req_queue->ucdmem_map,
 		    BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);

From nobody Tue Oct  6 07:51:40 2026
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 4hzT3c4mHzz6cWZc
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:40 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3c1MYcz4HR5
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:40 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273100;
	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=ENiymume8G5KZQcfLqy64d1BEpDyHRCG7jRNcJaa21o=;
	b=V5wsSFxF/VjTUfT+c+NgCHqsDp8pgp+aQDNl/LGA3iQU8l/VAtRR/UUV3MsJP4qP9TXch7
	/Pz3X9CYYNJXoC5I/BLcJzGoQPIc+F/PERWmP9OneMop8B5s3TGDOy8ovLCxBtvxcAf3ap
	FPuMRaMdOkehVOr9VKh2cxAQsBTo/S6cTfx2RZ2Tov8i9MBciflroaeyqv1QHlnW7309LC
	atokc3FEt7a6XF/kJ7nVW/4Pi2MPhnehfo2kGD8w7g0ji84MaUkA02xAMTabOXVeidjQh4
	TmdckrvsYYW0+/GbF7GYaWpYBXGS/9iC2S+p45eyjNhn/oQuW5pvTNEzV1gPFw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273100;
	b=FbkxX4iTNCQUoqj0ZAQ9L6O4iANO5XB3ZsyBTlRCbxSxpWBNCkRUIa6pXJp70dzjP4XMJS
	R6qwNmbRZds1rNIEauQAsmlcj3cOEa52G6OsVhYpy1nxQyPxZi07W8TfX0cCifWelBNXol
	PwSEQ4L4FbP9omOkNb9dzC3TkWeI0v7UPpaQEYmhutagJW/2acRc+EKYrW7j5blaFsEUZc
	vEHgjybi0DjskeqDkTV321rDzSYKHSytCfZ51nuOYlZ23jy6xEpDIIWyEQZhebU/MVzl/9
	U5BT6oNo+TjXIcNW85k1dJI/6UBjbh++YkXsqQTJOUtDXf7GHYhCU+1+PiEWZA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273100;
	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=ENiymume8G5KZQcfLqy64d1BEpDyHRCG7jRNcJaa21o=;
	b=TZG0737nA/AJsnnPFUtMGWjHd9A1AdCcvpkQC2aIrAAvaCQnqKSG1CnUvHsOt2p0Itvk8B
	iLHaTpPbM7ejqU5Sx1w4P3CY+7hqW4ubj8pO0BwldFTKZSv5nBKsiLN16gD1FZ0rSy2WVv
	XivShwyz8IXMg8kz9pEeBVThbzBk9oQewfsoE3Znhzu4Yj9BpgOXIlYdjcwQbHsGjdaqkm
	98QR3uf++qMtyRgiR9+4W0hqKnyXerWv6OWNJF+aslbWxAwc6SUZdY+gy/mT7xYYZsVEwe
	6RpFFnMtNlh19Nw9orVBo4E13X54f0DAbZl4usx1U34B5UcMJpyEcz3FHhin7g==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3c0DdFzxpW
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:40 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 18aab
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:40 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: d815ad742011 - stable/15 - ufshci: install the ioctl header
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: d815ad7420115f8e453c42e8e0b94ab2049b53ee
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:40 +0000
Message-Id: <6ac4a88c.18aab.66b64c93@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=d815ad7420115f8e453c42e8e0b94ab2049b53ee

commit d815ad7420115f8e453c42e8e0b94ab2049b53ee
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-09-15 01:42:17 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:09 +0000

    ufshci: install the ioctl header
    
    The passthrough ioctl has a userland ABI header, but nothing installed
    it. A program that wanted to use the ioctl had to copy the headers out
    of the source tree by hand.
    
    Install ufshci.h and ufshci_ioctl.h under /usr/include/dev/ufshci, the
    way nvme installs nvme.h. The ioctl header pulls in ufshci.h, so both
    go. Add the directory to the include mtree so installworld creates it.
    
    Reviewed by:    imp (mentor)
    Sponsored by:   Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D59560
    
    (cherry picked from commit 8895b1348f3d21e2db16a06f31d555be0471e36d)
---
 etc/mtree/BSD.include.dist | 2 ++
 include/Makefile           | 6 ++++++
 2 files changed, 8 insertions(+)

diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist
index 81ea0842035c..a039538a85b8 100644
--- a/etc/mtree/BSD.include.dist
+++ b/etc/mtree/BSD.include.dist
@@ -259,6 +259,8 @@
         ..
         tcp_log
         ..
+        ufshci
+        ..
         usb
         ..
         veriexec
diff --git a/include/Makefile b/include/Makefile
index 80a776d89b12..e7f65adf02ba 100644
--- a/include/Makefile
+++ b/include/Makefile
@@ -192,6 +192,11 @@ NVMFDIR=	${INCLUDEDIR}/dev/nvmf
 PCI=		pcireg.h
 PCIDIR=		${INCLUDEDIR}/dev/pci
 
+.PATH: ${SRCTOP}/sys/dev/ufshci
+UFSHCI=		ufshci.h \
+		ufshci_ioctl.h
+UFSHCIDIR=	${INCLUDEDIR}/dev/ufshci
+
 .PATH: ${SRCTOP}/sys/dev/veriexec
 VERIEXEC=	veriexec_ioctl.h
 VERIEXECDIR=	${INCLUDEDIR}/dev/veriexec
@@ -266,6 +271,7 @@ INCSGROUPS=	INCS \
 		RPC \
 		SECAUDIT \
 		TEKEN \
+		UFSHCI \
 		VERIEXEC \
 		WG
 

From nobody Tue Oct  6 07:51:38 2026
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 4hzT3b2T93z6cWV0
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:39 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3b0ZvTz4HLR
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:39 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273099;
	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=KPaoUxLSwv+aq2coY1/n3dL2xweyuhAVk952rfx6VWc=;
	b=YCqq+S8vFOnYf09wNCgPi6Nr5UeGDohb7xWOQR1RMHxK8l4B8hjqzDYQ1MAUi9vM3reV5W
	XKo5m/RBu/GULUpk6Lbc3fnrpDHE5xQvTXJSE/IKch0LHWA74h2Fbrmk/28ce9pMNrAIj0
	he4htYZKUooLojVAngSv1Yd6ehWU9L6uDL7T14U4jNu9NREQrnvOwPLiIo/NmLC5d2FSKv
	qPOtpZVyEza/+y+qg5+L4I5F2tdDwXBGHiDvY62BRzNX7oa9y6exguQAtqYEcEGSW1C+gu
	c23kwc5M6zFQhhoqjr7JuZvYaL6LzGwznl2TycfqA2OmHaSxCMPqc97YPmkGIg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273099;
	b=XTPdf232AvOkRU83XLMQilIk0RJh7MGKCuKVSdZavG8cmOjf6n1Svp6S57ao9cMyfZj8z7
	EejTIuUX2Y8dGVwUU+H5yaBgLt4pn4Gsog12DyRfOWAjHSO5UjA1/5fz9uv7UYn66q1RMo
	cLW16B9Ehuq76WigrAmWJ7JfK0qfms+Ya5r/xkIEjKppP/FggUPyx4/t8YZqtlgC+qY5pK
	Um68YkOyIqsy45dWbI5/3+FrnhXA5+OFeZMdKOnI0RJeXm9UOjFILvb83islEshrHsLsu5
	xG82fNaPpvY+XzLOLq1GEWASMGJn+FWt+M5ic1gBWIKKvgDbSJJj9VdZANFV3w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273099;
	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=KPaoUxLSwv+aq2coY1/n3dL2xweyuhAVk952rfx6VWc=;
	b=dDbJq0nUvMKdACyoN/Uq5VmNHemijYXpIJbzgZNSrBrzOUUJ+k3z+2ywHYF7A34Il6E8fw
	Yc0eM+jYPmDe3khdk6SovaEzh407XIADuRBL7BE+WkCYA3TOc4etZwugHnF5APoNaEuBlq
	/em5MNlN3BH4NukQXO/QdJIaSc9RnkmcPTd5iAqP0OFFv6jhxMUTKQWQoK9NZwg97vIw4y
	WZ3E/SFa5EJpYyq1DGldpklNfA5QkNZeQ8zY+lqRdUNL5vWICiCmVB8QI02GlwsjNhfQKS
	w3nL45iTxdSdVm1GbqErxR53H8AA+Emg0L3WEBeDl4UZ7wd6UV87ZCgWHmGuwA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3Z6g6yzxtH
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:38 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 47b6a
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:38 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 26ca0a15a8bd - stable/15 - ufshci: add a passthrough ioctl
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 26ca0a15a8bd09843a7df0a3d8f0ace80f291a8b
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:38 +0000
Message-Id: <6ac4a88a.47b6a.74b99121@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=26ca0a15a8bd09843a7df0a3d8f0ace80f291a8b

commit 26ca0a15a8bd09843a7df0a3d8f0ace80f291a8b
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-09-15 01:40:33 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:09 +0000

    ufshci: add a passthrough ioctl
    
    This ioctl is for a port of ufs-utils:
    https://github.com/SanDisk-Open-Source/ufs-utils
    
    The driver only exposed a CAM SIM. Reading a descriptor, an attribute
    or a flag needs a query request, and a UniPro attribute needs a DME
    command. The driver built both only for its own setup, so userland
    could reach neither.
    
    Add two ioctls on the control node. UFSHCI_PASSTHROUGH_CMD sends a
    UPIU the caller built, sizes the request from its transaction code,
    and copies the response UPIU back. UFSHCI_PASSTHROUGH_UIC carries the
    four attribute commands and refuses the rest, which can drop the link
    or power the device off. It keeps the raw argument2 so the caller can
    read the result code the device reported, not just a failure.
    
    Validate the input and bound it by what the controller can map. The
    descriptor has no request length, so the controller reads it from the
    UPIU header, and a header that declares more than was copied in would
    reach past the descriptor. The ioctl layer copies output back only on
    a zero return. So a command that reached the device is a success even
    when it was refused. The caller reads the reason from the response
    header, and an answerless failure comes back as EIO. Clear the
    response before use so no stale bytes read as a device answer.
    
    Reviewed by:    imp (mentor)
    Sponsored by:   Samsung Electronics
    Differential Revision:  https://reviews.freebsd.org/D59559
    
    (cherry picked from commit ae31f2928596f8c6efc8f136559562d864968dcc)
---
 sys/dev/ufshci/ufshci.h         |  10 +-
 sys/dev/ufshci/ufshci_ioctl.c   | 236 ++++++++++++++++++++++++++++++++++++++++
 sys/dev/ufshci/ufshci_ioctl.h   |  14 ++-
 sys/dev/ufshci/ufshci_private.h |   2 +
 sys/dev/ufshci/ufshci_uic_cmd.c |   5 +-
 5 files changed, 259 insertions(+), 8 deletions(-)

diff --git a/sys/dev/ufshci/ufshci.h b/sys/dev/ufshci/ufshci.h
index aaf98cc70d37..3a225d92cb60 100644
--- a/sys/dev/ufshci/ufshci.h
+++ b/sys/dev/ufshci/ufshci.h
@@ -366,6 +366,9 @@ _Static_assert(sizeof(struct ufshci_upiu_header) == 12,
 #define UFSHCI_MAX_UPIU_SIZE  512
 #define UFSHCI_UPIU_ALIGNMENT 8 /* UPIU requires 64-bit alignment. */
 
+/* UFS Spec 4.1, section 10.6.1: Total EHS Length counts 32 byte units. */
+#define UFSHCI_EHS_UNIT_SIZE 32
+
 struct ufshci_upiu {
 	/* dword 0-2 */
 	struct ufshci_upiu_header header;
@@ -517,6 +520,9 @@ struct ufshci_query_param {
 	size_t desc_size;
 };
 
+/* The data segment of a query UPIU, where a descriptor is carried. */
+#define UFSHCI_QUERY_DATA_SEGMENT_SIZE 256
+
 struct ufshci_query_request_upiu {
 	/* dword 0-2 */
 	struct ufshci_upiu_header header;
@@ -543,7 +549,7 @@ struct ufshci_query_request_upiu {
 	/* dword 7 */
 	uint32_t reserved3;
 
-	uint8_t command_data[256];
+	uint8_t command_data[UFSHCI_QUERY_DATA_SEGMENT_SIZE];
 } __packed __aligned(4);
 
 _Static_assert(sizeof(struct ufshci_query_request_upiu) == 288,
@@ -603,7 +609,7 @@ struct ufshci_query_response_upiu {
 	/* dword 7 */
 	uint8_t reserved4[4];
 
-	uint8_t command_data[256];
+	uint8_t command_data[UFSHCI_QUERY_DATA_SEGMENT_SIZE];
 } __packed __aligned(4);
 
 _Static_assert(sizeof(struct ufshci_query_response_upiu) == 288,
diff --git a/sys/dev/ufshci/ufshci_ioctl.c b/sys/dev/ufshci/ufshci_ioctl.c
index 976b28de4cf5..ead404baea8e 100644
--- a/sys/dev/ufshci/ufshci_ioctl.c
+++ b/sys/dev/ufshci/ufshci_ioctl.c
@@ -8,9 +8,12 @@
 #include <sys/param.h>
 #include <sys/conf.h>
 #include <sys/ioccom.h>
+#include <sys/malloc.h>
+#include <sys/systm.h>
 
 #include "ufshci_private.h"
 #include "ufshci_ioctl.h"
+#include "ufshci_reg.h"
 
 static d_ioctl_t ufshci_ioctl;
 
@@ -20,11 +23,244 @@ static struct cdevsw ufshci_cdevsw = {
 	.d_name = "ufshci",
 };
 
+/*
+ * Work out how much of the UPIU the controller has to read and how much
+ * it may write back.
+ */
+static int
+ufshci_passthrough_upiu_sizes(const struct ufshci_pt_command *pt,
+    size_t *req_size, size_t *resp_size, bool *is_admin)
+{
+	const struct ufshci_upiu_header *header = &pt->req_upiu.header;
+	size_t ehs_bytes = header->ehs_length * UFSHCI_EHS_UNIT_SIZE;
+	size_t max_data_len;
+
+	switch (header->trans_code) {
+	case UFSHCI_UPIU_TRANSACTION_CODE_QUERY_REQUEST:
+		/* Only a command UPIU has room for an EHS. */
+		if (header->ehs_length != 0)
+			return (EINVAL);
+		*req_size = sizeof(struct ufshci_query_request_upiu);
+		*resp_size = sizeof(struct ufshci_query_response_upiu);
+		*is_admin = true;
+		max_data_len = UFSHCI_QUERY_DATA_SEGMENT_SIZE;
+		break;
+	case UFSHCI_UPIU_TRANSACTION_CODE_NOP_OUT:
+		if (header->ehs_length != 0)
+			return (EINVAL);
+		*req_size = sizeof(struct ufshci_nop_out_upiu);
+		*resp_size = sizeof(struct ufshci_nop_in_upiu);
+		*is_admin = true;
+		max_data_len = 0;
+		break;
+	case UFSHCI_UPIU_TRANSACTION_CODE_COMMAND:
+		*req_size = sizeof(struct ufshci_cmd_command_upiu) + ehs_bytes;
+		/* The response carries an EHS too, for advanced RPMB. */
+		*resp_size = sizeof(struct ufshci_cmd_response_upiu) +
+		    ehs_bytes;
+		*is_admin = false;
+		/* A command UPIU moves its payload through the PRDT. */
+		max_data_len = 0;
+		break;
+	default:
+		return (EINVAL);
+	}
+
+	/*
+	 * The descriptor has no request length, so the controller takes it
+	 * from the UPIU header. A header that declares more than the UPIU
+	 * has room for would read past the command descriptor.
+	 */
+	if (be16toh(header->data_segment_length) > max_data_len)
+		return (EINVAL);
+
+	return (0);
+}
+
+static int
+ufshci_passthrough_cmd(struct ufshci_controller *ctrlr,
+    struct ufshci_pt_command *pt)
+{
+	struct ufshci_completion_poll_status status;
+	struct ufshci_request *req;
+	size_t req_size, resp_size;
+	void *buf = NULL;
+	bool is_admin;
+	int error;
+
+	/*
+	 * An aborted request is completed by hand and may leave cpl
+	 * unfilled, so stack bytes would go back to userland.
+	 */
+	memset(&status, 0, sizeof(status));
+
+	if (pt->timeout_ms != 0)
+		return (EINVAL);
+
+	/*
+	 * The response copy below is shorter than this field, so without
+	 * clearing it the tail would hold the caller's own input.
+	 */
+	memset(&pt->resp_upiu, 0, sizeof(pt->resp_upiu));
+
+	/*
+	 * The ABI cap is fixed. What a controller can actually map is not,
+	 * so check both.
+	 */
+	if (pt->len > UFSHCI_PT_MAX_XFER || pt->len > ctrlr->max_xfer_size)
+		return (EINVAL);
+	if (pt->len != 0 && pt->buf == NULL)
+		return (EINVAL);
+
+	/* A buffer with no direction would build a PRDT nothing reads. */
+	if (pt->len != 0 && (pt->flags &
+	    (UFSHCI_PT_FLAG_DATA_IN | UFSHCI_PT_FLAG_DATA_OUT)) == 0)
+		return (EINVAL);
+
+	if ((pt->flags & (UFSHCI_PT_FLAG_DATA_IN | UFSHCI_PT_FLAG_DATA_OUT)) ==
+	    (UFSHCI_PT_FLAG_DATA_IN | UFSHCI_PT_FLAG_DATA_OUT))
+		return (EINVAL);
+
+	error = ufshci_passthrough_upiu_sizes(pt, &req_size, &resp_size,
+	    &is_admin);
+	if (error)
+		return (error);
+	if (req_size > sizeof(struct ufshci_upiu))
+		return (EINVAL);
+	/*
+	 * The completion union is smaller than a UPIU. An EHS must not
+	 * push the response past it.
+	 */
+	if (resp_size > sizeof(status.cpl.response_upiu))
+		return (EINVAL);
+	/*
+	 * Without EHSLUTRDS the controller cannot carry the EHS, so the
+	 * device would answer a partial request.
+	 */
+	if (pt->req_upiu.header.ehs_length != 0 &&
+	    UFSHCIV(UFSHCI_CAP_REG_EHSLUTRDS, ctrlr->cap) == 0)
+		return (EOPNOTSUPP);
+
+	if (pt->len != 0) {
+		buf = malloc(pt->len, M_UFSHCI, M_WAITOK | M_ZERO);
+		if (pt->flags & UFSHCI_PT_FLAG_DATA_OUT) {
+			error = copyin(pt->buf, buf, pt->len);
+			if (error)
+				goto out;
+		}
+	}
+
+	req = ufshci_allocate_request_vaddr(buf, pt->len, M_WAITOK,
+	    ufshci_completion_poll_cb, &status);
+
+	memcpy(&req->request_upiu, &pt->req_upiu, sizeof(req->request_upiu));
+	req->request_size = req_size;
+	req->response_size = resp_size;
+	req->is_admin = is_admin;
+
+	if (pt->flags & UFSHCI_PT_FLAG_DATA_OUT)
+		req->data_direction = UFSHCI_DATA_DIRECTION_FROM_SYS_TO_TGT;
+	else if (pt->flags & UFSHCI_PT_FLAG_DATA_IN)
+		req->data_direction = UFSHCI_DATA_DIRECTION_FROM_TGT_TO_SYS;
+	else
+		req->data_direction = UFSHCI_DATA_DIRECTION_NO_DATA_TRANSFER;
+
+	error = ufshci_ctrlr_submit_transfer_request(ctrlr, req);
+	if (error) {
+		ufshci_free_request(req);
+		goto out;
+	}
+
+	ufshci_completion_poll(&status);
+
+	memcpy(&pt->resp_upiu, &status.cpl.response_upiu,
+	    min(sizeof(pt->resp_upiu), sizeof(status.cpl.response_upiu)));
+	pt->xfer_len = pt->len;
+	/* The completion does not carry the overall command status yet. */
+	pt->ocs = 0;
+
+	/*
+	 * A refused command still answered, so let the caller read the
+	 * response. A failure that left the response zeroed had no answer.
+	 */
+	if (status.error && pt->resp_upiu.header.response == 0) {
+		error = EIO;
+		goto out;
+	}
+
+	if (pt->len != 0 && (pt->flags & UFSHCI_PT_FLAG_DATA_IN))
+		error = copyout(buf, pt->buf, pt->len);
+
+out:
+	free(buf, M_UFSHCI);
+	return (error);
+}
+
+static int
+ufshci_passthrough_uic_cmd(struct ufshci_controller *ctrlr,
+    struct ufshci_pt_uic_command *pt)
+{
+	uint32_t return_value = 0;
+	int error;
+
+	if (pt->timeout_ms != 0)
+		return (EINVAL);
+
+	/*
+	 * Only the four attribute commands. The rest can drop the link or
+	 * power the device off.
+	 */
+	switch (pt->cmd.opcode) {
+	case UFSHCI_DME_GET:
+	case UFSHCI_DME_SET:
+	case UFSHCI_DME_PEER_GET:
+	case UFSHCI_DME_PEER_SET:
+		break;
+	default:
+		return (EINVAL);
+	}
+
+	/*
+	 * On a path that never reads the register, a value the caller left
+	 * here would read as an answer.
+	 */
+	pt->cmd.argument2 &= ~(UFSHCI_UICCMDARG2_REG_ERROR_CODE_MASK <<
+	    UFSHCI_UICCMDARG2_REG_ERROR_CODE_SHIFT);
+
+	error = ufshci_uic_send_cmd(ctrlr, &pt->cmd, &return_value);
+
+	pt->result = UFSHCIV(UFSHCI_UICCMDARG2_REG_ERROR_CODE,
+	    pt->cmd.argument2);
+	if (pt->result != 0) {
+		/*
+		 * A refusal is a result, not a transport failure. There is no
+		 * attribute value to go with it, and the caller's own input
+		 * would read like one.
+		 */
+		pt->cmd.argument3 = 0;
+		return (0);
+	}
+	if (error)
+		return (error);
+
+	pt->cmd.argument3 = return_value;
+
+	return (0);
+}
+
 static int
 ufshci_ioctl(struct cdev *cdev, u_long cmd, caddr_t arg, int flag,
     struct thread *td)
 {
+	struct ufshci_controller *ctrlr = cdev->si_drv1;
+
 	switch (cmd) {
+	case UFSHCI_PASSTHROUGH_CMD:
+		return (ufshci_passthrough_cmd(ctrlr,
+		    (struct ufshci_pt_command *)arg));
+	case UFSHCI_PASSTHROUGH_UIC:
+		return (ufshci_passthrough_uic_cmd(ctrlr,
+		    (struct ufshci_pt_uic_command *)arg));
 	default:
 		return (ENOTTY);
 	}
diff --git a/sys/dev/ufshci/ufshci_ioctl.h b/sys/dev/ufshci/ufshci_ioctl.h
index 57e1ce6fa869..c545c073fc0a 100644
--- a/sys/dev/ufshci/ufshci_ioctl.h
+++ b/sys/dev/ufshci/ufshci_ioctl.h
@@ -31,23 +31,29 @@
  * a command UPIU uses it.
  */
 struct ufshci_pt_command {
+	/* The driver overwrites task_tag. */
 	struct ufshci_upiu req_upiu;  /* [in] */
 	struct ufshci_upiu resp_upiu; /* [out] */
 	void *buf;		      /* [in] PRDT payload, may be NULL */
 	uint32_t len;		      /* [in] length of buf */
 	uint32_t flags;		      /* [in] UFSHCI_PT_FLAG_* */
-	uint32_t timeout_ms;	      /* [in] 0 means the driver default */
-	uint32_t xfer_len;	      /* [out] bytes actually moved */
-	uint8_t ocs;		      /* [out] overall command status */
+	uint32_t timeout_ms;	      /* [in] reserved, must be 0 */
+	uint32_t xfer_len;	      /* [out] bytes the request carried */
+	uint8_t ocs;		      /* [out] reserved, always 0 for now */
 	uint8_t reserved[7];
 };
 
 struct ufshci_pt_uic_command {
 	struct ufshci_uic_cmd cmd; /* [in/out] opcode and argument1..3 */
-	uint32_t timeout_ms;	   /* [in] */
+	uint32_t timeout_ms;	   /* [in] reserved, must be 0 */
 	uint32_t result;	   /* [out] UICCMDARG2 result code */
 };
 
+/*
+ * A zero return means the command reached the device, not that the device
+ * accepted it. The response field in the response UPIU header carries
+ * that. On an errno no output field is filled.
+ */
 #define UFSHCI_PASSTHROUGH_CMD	_IOWR('u', 0, struct ufshci_pt_command)
 #define UFSHCI_PASSTHROUGH_UIC	_IOWR('u', 1, struct ufshci_pt_uic_command)
 
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index dd02c7311599..cc0b491d7137 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -561,6 +561,8 @@ int ufshci_req_sdb_get_inflight_io(struct ufshci_controller *ctrlr);
 int ufshci_uic_power_mode_ready(struct ufshci_controller *ctrlr);
 int ufshci_uic_hibernation_ready(struct ufshci_controller *ctrlr);
 int ufshci_uic_cmd_ready(struct ufshci_controller *ctrlr);
+int ufshci_uic_send_cmd(struct ufshci_controller *ctrlr,
+    struct ufshci_uic_cmd *uic_cmd, uint32_t *return_value);
 int ufshci_uic_send_dme_link_startup(struct ufshci_controller *ctrlr);
 int ufshci_uic_send_dme_get(struct ufshci_controller *ctrlr, uint16_t attribute,
     uint32_t *return_value);
diff --git a/sys/dev/ufshci/ufshci_uic_cmd.c b/sys/dev/ufshci/ufshci_uic_cmd.c
index 45ded2a120c6..54e90253ec0b 100644
--- a/sys/dev/ufshci/ufshci_uic_cmd.c
+++ b/sys/dev/ufshci/ufshci_uic_cmd.c
@@ -165,7 +165,7 @@ ufshci_uic_wait_cmd(struct ufshci_controller *ctrlr,
 	return (0);
 }
 
-static int
+int
 ufshci_uic_send_cmd(struct ufshci_controller *ctrlr,
     struct ufshci_uic_cmd *uic_cmd, uint32_t *return_value)
 {
@@ -190,8 +190,9 @@ ufshci_uic_send_cmd(struct ufshci_controller *ctrlr,
 
 	/* The result registers stay valid only until the next command. */
 	if (error == 0) {
+		uic_cmd->argument2 = ufshci_mmio_read_4(ctrlr, ucmdarg2);
 		config_result_code = UFSHCIV(UFSHCI_UICCMDARG2_REG_ERROR_CODE,
-		    ufshci_mmio_read_4(ctrlr, ucmdarg2));
+		    uic_cmd->argument2);
 		result_value = ufshci_mmio_read_4(ctrlr, ucmdarg3);
 	}
 

From nobody Tue Oct  6 07:51:41 2026
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 4hzT3d5gWBz6cWZm
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:51:41 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT3d2BrJz4HJk
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:41 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273101;
	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=BjQqsopkLjZDeT1SRqQWW4T2A8JRoKe87VXsa5qqrnM=;
	b=ZmZgXDpHsWKol5u0KSOqq/A2+zVZvjELro8kJW9Y282BgyLSCjWZS7T+XjjFU8+/vPxAUX
	3dq4vvopo9uZftKPw+4bOXWVWIesryahD2L98RHk8pSxLm7cvG0r+TMdwtn/lKO9mxDPTS
	3YBSaAgr4pCF2xIaJWAy8GYKDwAwCvJALCPj+kkXphLcs09hCrS/sjaNpEGpRHil6YPEUM
	nUKjLqM7TCyprMMfszPa4cUvUb/6czrEy5rUSHrz+UY2H0IbswoShtTgnKQ/QER3oX+fjP
	BYoeBb/JPKWMs8bvvR6gevklz9rVjGe8VoE6RNdXJtEIPHN4OAVI7eP5fqPt5A==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273101;
	b=wl9a27LnQVDVE93tKD+3q8MFfcOW4i089hrIVxXZrdSZliJIFDGljRaC8f0GkD7x9UgufJ
	HM3i4vpb0M8hugXYLpJ77YllByucJJj757oxw26UBJEPdmqUa8UiPPdpz2T7u+IwJnzqcP
	I9vXzzHQPtqQIM7cNivY0Is1u2NDNJ/VBmg8Li3In1eF9MP9hTIZSEcVBVA++rLRbWqbfJ
	ct4R4rFQD8N23tyZf6dAFfY0wzoQ0Q4sk8Xje6D1J3gYeX5ZHfIYFDZQzE6eohMs0hxvdB
	f+m0OBUZkTR/y6kOEbg+OVhgFYEq8+jKUnrLvxPfZIf7zgk6TR173IjPZfT5jA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273101;
	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=BjQqsopkLjZDeT1SRqQWW4T2A8JRoKe87VXsa5qqrnM=;
	b=OGDu4TcylJRkpItNYYwp0E1aAN7YTxeLCniAb5DOrT62zELy92cAHH0H+AmoMlkSBfM1eK
	fKLWJiPGPB6VFGfb3h4r9h1MKTfZd0JG6REAHMgPVn6I3s8hZUuFykuMsFs1MgduGnQdOY
	/3CcefBAhk3v3UeiZlofTzNfTiors7stqn4FTxC2W9KvkU9z01mIq9VMyXZGgi2bmgQQU4
	8Nkn0TLQLBsUgtNj7btfMGhWTOsQHJm1/nBHYf1OC2flOKjFOWq06ljCM5RMtrp6e1kgfi
	Zk4YDH4V83LEpbaC+yKNaNCrD8/E0Lo3yiaSyXHzA/kRwehO7lRQ26yW439viA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT3d18M6zxr7
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:51:41 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 477f4
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:51:41 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Jaeyoon Choi <jaeyoon@FreeBSD.org>
Subject: git: 7c66df657e16 - stable/15 - ufshci: build the ioctl file into the kernel
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: jaeyoon
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 7c66df657e167d1e1759d0e4e8c11d5cc3ed6835
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:51:41 +0000
Message-Id: <6ac4a88d.477f4.1e190f41@gitrepo.freebsd.org>

The branch stable/15 has been updated by jaeyoon:

URL: https://cgit.FreeBSD.org/src/commit/?id=7c66df657e167d1e1759d0e4e8c11d5cc3ed6835

commit 7c66df657e167d1e1759d0e4e8c11d5cc3ed6835
Author:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
AuthorDate: 2026-09-15 03:02:38 +0000
Commit:     Jaeyoon Choi <jaeyoon@FreeBSD.org>
CommitDate: 2026-10-06 06:28:10 +0000

    ufshci: build the ioctl file into the kernel
    
    The passthrough ioctl went into the module build only. A kernel with
    device ufshci then failed to link, because ufshci_ctrlr.c calls
    ufshci_ioctl_construct() and ufshci_ioctl_destruct() and neither was
    compiled in.
    
    Add the file to sys/conf/files.
    
    Fixes:          28fefc441e3b ("ufshci: add a control device node")
    Sponsored by:   Samsung Electronics
    
    (cherry picked from commit d435248a2196bc78f626850a7ae700aaeace1c13)
---
 sys/conf/files | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sys/conf/files b/sys/conf/files
index b64b0c1355fa..07d94ab61547 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -3292,6 +3292,7 @@ dev/ufshci/ufshci_acpi.c	optional ufshci acpi
 dev/ufshci/ufshci_ctrlr.c	optional ufshci
 dev/ufshci/ufshci_ctrlr_cmd.c	optional ufshci
 dev/ufshci/ufshci_dev.c		optional ufshci
+dev/ufshci/ufshci_ioctl.c	optional ufshci
 dev/ufshci/ufshci_pci.c		optional ufshci pci
 dev/ufshci/ufshci_req_queue.c	optional ufshci
 dev/ufshci/ufshci_req_sdb.c	optional ufshci

From nobody Tue Oct  6 07:57:47 2026
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 4hzTBn4TYWz6cWnj
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 07:57:53 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzTBm65sbz4VY7
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:57:52 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791273472;
	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=Vu9BmRXUc57FFq7y471HVkohpMTLagfIfT1KsU0e+mo=;
	b=YamJnGDy8JlpCua/BYvbVTiO7tzNbbxfLOwKKyFPy0jrXCaXKIWC2Ml61JVHTQ6y8zdOtv
	uY616SjhX3h/PvXGarjrhprcyZnooDE80y9D6tlcQRUrFHq27QPK854i481DFoALgvFW60
	pd74p7/cwAdasb7yndS7q/8hUfOLxo0p3fCG3Z2cHgfz6cuaVLDeUIICfBeO4M79C3hyD/
	RVaaraNFDlQlZr1sOLbgMKW5KlPBzgNJHqBRHQKO+hjRITVufcRfdslMgAo86l3DQSMtJE
	lZXaA/kLqkSP5DGcfo4eoHi/f9tKP0VBQ96dWuDT1wR/sdv/zx2Knyj/vzREVg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273472;
	b=YTTniRwBfkQTMhMIo3r2Fw8A7bKUbjmiB1hSs6FF0ThIHgFg55HY4Q8YHT/8CJXBuyMJTq
	ee2OFIu6MvTwIqwetD86K1BuGGu3SGkS4dop+sS9m0N58JffRcJS26isq9JQcwGWXH+fhO
	D2niUUWKUuM5If1yA/T/APxDxtq8+KSybI6I4nwSaRE5RtjP+7mH/qGwAKGXt1Mk868wck
	l5zOUgSO9+uHhKjkDq9aENmwNjThEgNHRoKLHEoP34GLOqGz4M88Jw9S1zBJgS4l+WSnyQ
	AOTuhiHgdLD7ujV+KAZ+7+xj3d2O3iyNdFugYGYAgbnpuZzfU+8rXInd2i++NQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791273472;
	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=Vu9BmRXUc57FFq7y471HVkohpMTLagfIfT1KsU0e+mo=;
	b=gRlMZTcgQp03BeT4J/Em8TeCt8Cmr2kuko5jj33X9D6iHGXEm/PobYMs1rogbUjO4m0cHD
	lwt7UFONhLXY7OUGtQnD8q21V45oCOXrfBOHkKqffAFYxngFdXZIFQ490w4IubVTj4ckGV
	GM8S/9sh/m1jr00H9MS1fUsTNfV7kEJO87dIeuq1NR2FQsN7ZngB8bPgKfVm3QOlY7YMJJ
	Htqpx+K88/cP+9g8lcep94cJ5xnNCDyGDfTfybN8/DkpsFSHrefMVSQlZd0OgKqO6RGbMH
	YDd1wv8+r+aDMQ5rNjjjdsRlSn6/jfQnaEYmVmVq7FLqa4mOpn5zSvDNsGfIEQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzTBm4pcYzxsT
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 07:57:52 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 195be
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 07:57:47 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Konstantin Belousov <kib@FreeBSD.org>
Subject: git: ea23918b025b - main - rtld-elf/i386: remove no longer true __unused args annotations
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: kib
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: ea23918b025baf72a43c0ce6f3f505ef153c2644
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 07:57:47 +0000
Message-Id: <6ac4a9fb.195be.40170485@gitrepo.freebsd.org>

The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=ea23918b025baf72a43c0ce6f3f505ef153c2644

commit ea23918b025baf72a43c0ce6f3f505ef153c2644
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-10-06 07:09:34 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-10-06 07:56:59 +0000

    rtld-elf/i386: remove no longer true __unused args annotations
    
    Fixes:  d45d7aea6197 ("i386 rtld: implement support for TLSDESC relocation")
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
---
 libexec/rtld-elf/i386/reloc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libexec/rtld-elf/i386/reloc.c b/libexec/rtld-elf/i386/reloc.c
index 5dd495f2056c..f22e4f66dab3 100644
--- a/libexec/rtld-elf/i386/reloc.c
+++ b/libexec/rtld-elf/i386/reloc.c
@@ -360,7 +360,7 @@ done:
 
 /* Process the PLT relocations. */
 int
-reloc_plt(Obj_Entry *obj, int flags __unused, RtldLockState *lockstate __unused)
+reloc_plt(Obj_Entry *obj, int flags, RtldLockState *lockstate)
 {
 	const Elf_Rel *rellim;
 	const Elf_Rel *rel;

From nobody Tue Oct  6 08:11:31 2026
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 4hzTVc62lXz6cY6D
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 08:11:36 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzTVc59rDz4c9W
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 08:11:36 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791274296;
	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=C0ikGdyY9hf6lIvrgi8smlia8sCU1KHk3ny+LPkXgUY=;
	b=mT4fH8SsnesD6kcFevaNsYs9xIQikUZ+oVTBQXAvZIAyOcNepGNn9dFH2ZUQIZlH/hIr7S
	6sWUa38+h3Mk40AWqrucK8FIHEQ1Sy/yoah521ou0YQzMxoMF9cOub5vjuNUDWRDtDz45F
	bUIaZlad+MAMvXPCYIglJCOuvr8N4CrxDL/Rz/wTK6LkplCcg7ExPdRsr0m5jBw9c9Ti2U
	/U7Ym4+ZxX4qgiPP3GZAGMdhGtXL61RncECUUxDK+JQfgmT1nppHbthqAOUOeTuZikoUGh
	qAflrHtdgs2i3Pr62LaIo3jkVUBWi9upCjeY44wLy9xzGC4IaHNbfVidjoZOlg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791274296;
	b=bKcycA65n+RTy9UJnMfykhwUfdQ49+WRn5jieQmJkGL5VwNd1f8LANXffaLr9Bavl25zNG
	3keuTwK7PqJEabO7bRlVCXn+8WFJHo2BXU7BuWfjvTdM7EVzMu2sjSlQEoxeG6l9IEwrb/
	2b8BUTUwGH2w30AMdbfobC8T1guiF7nsgRFBjyMeiUNtaoXrq2oCiKBbQv/JYSv1cpzthW
	q8B7ilcoBY/4FVCEfkJPlS6dqJqnoBOFTlcdQPT68/GDAflSqbou6+FOvmle2d2BOxDbwl
	QtfX0zd0yHtP0Eck3wvPyWmOXV3UvfWMC60cnnS9kWs7l1xxkff+kiN5s1PNdw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791274296;
	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=C0ikGdyY9hf6lIvrgi8smlia8sCU1KHk3ny+LPkXgUY=;
	b=lqgMOvH0SLIsv4cEJaFioapYf4G3Ief15ZmKD6QG5dOtkjCEqUzop027gr6qMZTfcK3aHk
	hwQprW9/Y7JFgD0ieCDqFS0ptx/7YHsbVNI5YzDP5tbUYF7k38LESn6AKvCqytdSTYOWt1
	aVxyEbh6ZhYIh+5HZfrFaSFWQLZ6Ta6mBJV/K+o0bmmccZhCqeB/wrcVNwD3rl3UCt7tPR
	AJFyuDC+xvP7IAlqVlLBUMRXEx7pFYhyvLQ5cMMdUVzAQAaR/sz3EwJXMYDbKTEqbgZxpa
	4FsJZdDhlPF+fbWBFKTed6JzytQMpiR50ZXr2OX4mwKgWyEJUOXTCvZXYzcwfQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzTVc3zG8zyHk
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 08:11:36 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 19f5f
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 08:11:31 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Xin LI <delphij@FreeBSD.org>
Subject: git: b4e2c9abaf14 - main - libcasper: tolerate kernels without PD_NOWAITPID
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: delphij
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: b4e2c9abaf14d6eabbce59656d448c064e0dc40b
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 08:11:31 +0000
Message-Id: <6ac4ad33.19f5f.8a9063f@gitrepo.freebsd.org>

The branch main has been updated by delphij:

URL: https://cgit.FreeBSD.org/src/commit/?id=b4e2c9abaf14d6eabbce59656d448c064e0dc40b

commit b4e2c9abaf14d6eabbce59656d448c064e0dc40b
Author:     Xin LI <delphij@FreeBSD.org>
AuthorDate: 2026-10-06 07:17:21 +0000
Commit:     Xin LI <delphij@FreeBSD.org>
CommitDate: 2026-10-06 08:10:57 +0000

    libcasper: tolerate kernels without PD_NOWAITPID
    
    Commit 1a296762b3d0 made libcasper pass PD_NOWAITPID to pdfork(2).
    Kernels predating the flag (15.1 and earlier, since the flag first
    ships in 15.2) reject it with EINVAL, which makes cap_init() and every
    service fork fail when a newer world runs on an older kernel, for
    example in a poudriere jail.
    
    Add casper_pdfork(), which retries without the flag on EINVAL, and use
    it at both pdfork(2) call sites.  The retry is safe because the kernel
    validates pdfork flags before creating a child.  On such kernels the
    zombie must still be reaped with waitpid(2), as before the flag was
    introduced.
    
    The fallback is compiled out once __FreeBSD_version reaches 1700000,
    so it disappears from main when stable/16 branches while remaining in
    the stable/15 and stable/16 branches that need it.
    
    Reviewed by:    kib
    MFC after:      3 days
    
    Differential Revision: https://reviews.freebsd.org/D60401
---
 lib/libcasper/libcasper/libcasper.c      |  2 +-
 lib/libcasper/libcasper/libcasper_impl.h | 23 +++++++++++++++++++++++
 lib/libcasper/libcasper/zygote.c         |  2 +-
 3 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/lib/libcasper/libcasper/libcasper.c b/lib/libcasper/libcasper/libcasper.c
index 8783529d9dc0..9a34b8d7acea 100644
--- a/lib/libcasper/libcasper/libcasper.c
+++ b/lib/libcasper/libcasper/libcasper.c
@@ -95,7 +95,7 @@ cap_init(void)
 		return (NULL);
 	}
 
-	pid = pdfork(&pfd, PD_NOWAITPID);
+	pid = casper_pdfork(&pfd);
 	if (pid == 0) {
 		/* Child. */
 		close(sock[0]);
diff --git a/lib/libcasper/libcasper/libcasper_impl.h b/lib/libcasper/libcasper/libcasper_impl.h
index 43d2495cacf6..682a71fff01c 100644
--- a/lib/libcasper/libcasper/libcasper_impl.h
+++ b/lib/libcasper/libcasper/libcasper_impl.h
@@ -33,6 +33,10 @@
 #ifndef	_LIBCASPER_IMPL_H_
 #define	_LIBCASPER_IMPL_H_
 
+#include <sys/param.h>
+#include <sys/procdesc.h>
+
+#include <errno.h>
 #include <stdbool.h>
 
 #include "libcasper.h"
@@ -44,6 +48,25 @@ struct service_connection;
 bool fd_is_valid(int fd);
 void fd_fix_environment(int *fdp);
 
+static inline pid_t
+casper_pdfork(int *fdp)
+{
+	pid_t pid;
+
+	pid = pdfork(fdp, PD_NOWAITPID);
+#if __FreeBSD_version < 1700000
+	/*
+	 * Kernels predating PD_NOWAITPID (introduced in 15.2) reject the
+	 * flag with EINVAL before creating a child, so retrying without
+	 * it is safe.  The child must then be reaped with waitpid(2), as
+	 * before.  This fallback is compiled out starting with 17.0.
+	 */
+	if (pid == -1 && errno == EINVAL)
+		pid = pdfork(fdp, 0);
+#endif
+	return (pid);
+}
+
 /* Private service functions. */
 struct service	*service_alloc(const char *name,
 		    service_limit_func_t *limitfunc,
diff --git a/lib/libcasper/libcasper/zygote.c b/lib/libcasper/libcasper/zygote.c
index 8295312b6593..574d80a16b01 100644
--- a/lib/libcasper/libcasper/zygote.c
+++ b/lib/libcasper/libcasper/zygote.c
@@ -149,7 +149,7 @@ zygote_main(int *sockp)
 			error = errno;
 			goto send;
 		}
-		pid = pdfork(&procfd, PD_NOWAITPID);
+		pid = casper_pdfork(&procfd);
 		switch (pid) {
 		case -1:
 			/* Failure. */

From nobody Tue Oct  6 08:53:33 2026
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 4hzVR62wkkz6ccnc
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 08:53:38 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzVR62BFxz4hGZ
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 08:53:38 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791276818;
	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=v/WB550Hi5AU4HNE7yEq0XxrWRhid3op3I/9l8+rsXY=;
	b=pebp0vHRzOxICkMH+BiothRdx4Eq5JEWzpLBpsKXyfnwqdAVSZlMKNeROugJgtJr6nVPcR
	kF7OV+JNefKHFPy4h7ouNwJXxbo5UuAZGzSKBtE5tB8FXleAxzReXKbf1FMpSAuqTJhvTZ
	sP4261wbSs1nEuji1utsVLQJScMdsd1u4f84BphHbT2nYB4ixX2079FeLr+z6zWyNwedCG
	3m4vw25weqRzlQ8NgSt/mDykFIJrLjg9/XfE9PJQo74lH+rhogSEpba+r82P0IzCnfUWTR
	TDkYuw7X51Zi4xsAGJzWMDmlMgAriQCLjybcVdN9k1sSwIkVOGKSwcj0tloG/A==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791276818;
	b=vNDiGyoe67niMRAO8QCZYzaewg9oFtC1XRBpldwvZoEbzKhzwKJgHdaetWLTabSXK4tsuN
	AIMBZ/0gS3j2YqoWbUgAlk1pdzSNmW+5RewIY9B4by8QsXn4oHbNdURfDF1EwwUaDYYKOr
	Y0/TpH26D9Mt3x8dvl+M2PSw/t8Mkx/N6mFYb6DrY8Z4YeZTKnTsijs3VxD8cLP0PvOoa5
	mHXR5L6Wr2L5fsx2PQIZoDW82/f8MABu+JGnoxSpiNm4rVJt4UnDXj2uG4+jzeYll2b8VI
	eHJ1MTk9MJfWJolVk2MXK35/eJv/OmpVhE0XDyxEJdhPqfjx/KgYL4jw49lYLg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791276818;
	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=v/WB550Hi5AU4HNE7yEq0XxrWRhid3op3I/9l8+rsXY=;
	b=eZ/Invd+m+tDwoGG+K0rTqGc25zU3TRUJK1s0lX2TDx0t83YohohmxSjjfs/AD8Sb69CqJ
	g/trmX3Dvj79Wrt+GeteCycyVdcHpO021zVWKpd7nu/KEX2Jt+cXHORfv+S9bbew9Cqlef
	pKAek/DYiua7ujUKXou53iA/Frp/mGNmqBOYhc+4avDZkC/wiGpIzWb8OxIMcCWhP4z3py
	XSlxjiE6PkxS16FBbFXrUg35+RY7pFPoMWY43kTRiINAy30Tk5XDcNyQcRxQUSYH6aJnOs
	B6/h3VN7ptWwwXxim5S/YWT5v4Oz58cDrd3m5zgia71wemqjdcI819fjlQbXkA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzVR60yJhz10QV
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 08:53:38 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 1fe21
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 08:53:33 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Roman Bogorodskiy <novel@FreeBSD.org>
Subject: git: 35aeff778dc9 - stable/15 - bhyveload: validate character disk devices
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: novel
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 35aeff778dc976fa48b3a165dd80a92eb452f5e2
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 08:53:33 +0000
Message-Id: <6ac4b70d.1fe21.7f8ce6cd@gitrepo.freebsd.org>

The branch stable/15 has been updated by novel:

URL: https://cgit.FreeBSD.org/src/commit/?id=35aeff778dc976fa48b3a165dd80a92eb452f5e2

commit 35aeff778dc976fa48b3a165dd80a92eb452f5e2
Author:     Roman Bogorodskiy <novel@FreeBSD.org>
AuthorDate: 2026-08-28 17:51:31 +0000
Commit:     Roman Bogorodskiy <novel@FreeBSD.org>
CommitDate: 2026-10-06 08:16:43 +0000

    bhyveload: validate character disk devices
    
    Currently, bhyveload(8) does not validate the supplied disk
    image path. For example, it allows passing the /dev/null
    device, which later fails in userboot because it does not
    support DIOCGSECTORSIZE and DIOCGMEDIASIZE ioctls (see
    userdisk_init() in stand/userboot/userboot/userboot_disk.c).
    
    Fix that by checking DIOCGSECTORSIZE and DIOCGMEDIASIZE ioctls early.
    A similar check already exists in bhyve(8). While here, make
    cb_diskioctl() report the obtained sector size instead of
    hard-coding 512.
    
    Reviewed by:    markj
    MFC after:      2 weeks
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D59253
    
    (cherry picked from commit 51234535ddd6ec0afe9dd4e3f34a31b92d5cdd78)
---
 usr.sbin/bhyveload/bhyveload.c | 34 +++++++++++++++++++++++++++++++---
 1 file changed, 31 insertions(+), 3 deletions(-)

diff --git a/usr.sbin/bhyveload/bhyveload.c b/usr.sbin/bhyveload/bhyveload.c
index 3ee5f7ac7129..3f29d642461d 100644
--- a/usr.sbin/bhyveload/bhyveload.c
+++ b/usr.sbin/bhyveload/bhyveload.c
@@ -364,7 +364,14 @@ cb_diskioctl(void *arg __unused, int unit, u_long cmd, void *data)
 
 	switch (cmd) {
 	case DIOCGSECTORSIZE:
-		*(u_int *)data = 512;
+		if (fstat(disk_fd[unit], &sb) != 0)
+			return (ENOTTY);
+		if (S_ISCHR(sb.st_mode)) {
+			if (ioctl(disk_fd[unit], DIOCGSECTORSIZE, data) != 0)
+				return (ENOTTY);
+		} else {
+			*(u_int *)data = 512;
+		}
 		break;
 	case DIOCGMEDIASIZE:
 		if (fstat(disk_fd[unit], &sb) != 0)
@@ -718,7 +725,9 @@ altcons_open(char *path)
 static int
 disk_open(char *path)
 {
-	int fd;
+	struct stat sbuf;
+	off_t size;
+	int fd, ret, sectsz;
 
 	if (ndisks >= NDISKS)
 		return (ERANGE);
@@ -726,11 +735,30 @@ disk_open(char *path)
 	fd = open(path, O_RDWR);
 	if (fd < 0)
 		return (errno);
+	if (fstat(fd, &sbuf) < 0) {
+		ret = errno;
+		goto err;
+	}
+
+	size = sbuf.st_size;
+	sectsz = DEV_BSIZE;
+	if (S_ISCHR(sbuf.st_mode)) {
+		if (ioctl(fd, DIOCGMEDIASIZE, &size) < 0 ||
+		    ioctl(fd, DIOCGSECTORSIZE, &sectsz) < 0) {
+			ret = errno;
+			goto err;
+		}
+		assert(size != 0);
+		assert(sectsz != 0);
+	}
 
 	disk_fd[ndisks] = fd;
 	ndisks++;
 
 	return (0);
+err:
+	close(fd);
+	return (ret);
 }
 
 static void
@@ -814,7 +842,7 @@ main(int argc, char** argv)
 		case 'd':
 			error = disk_open(optarg);
 			if (error != 0)
-				errx(EX_USAGE, "Could not open '%s'", optarg);
+				errc(EX_USAGE, error, "Could not open '%s'", optarg);
 			break;
 
 		case 'e':

From nobody Tue Oct  6 13:39:26 2026
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 4hzcmt5JkFz6vLl9
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 13:39:26 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzcmt4qxgz4KKM
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 13:39:26 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791293966;
	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=HtSaFZW47h4Sw2FultMkcX0jwnEcVvWWnYdnpKuaaBs=;
	b=I0qoYkE6NxmQFcjd44jIAu2V+Ms6fGJfObFHGi4rEmmtAJH74GHOl159t8FL+PRkNAqS8N
	kDaVBcK9wXZq04s2mCSAETLGzPEXGULRyq+41wSq36oovmLo72kaU8JcRU6qZ5eU3+pRWU
	3ri85uh2+hdxhpDHCJeJWRMjyEuzZnotrxQG34lBpUJhM9g9ExWIRzJh9KPEj7ZhgSjjT9
	H5z/ijK3AK7j9cm7x4EmSV33qNOVBqYGsE6NFpxcjE1xtRFcoVJreHyPHY5tiP0FjhfF7K
	g4hgNRZfwigj6jYPYRBUhHbKZAgXL8ZuweQbo3h3YOmvJtZoiGUgeT3ePZV2xg==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791293966;
	b=gfaGDCNOEX15j3jVNChU5Z87YO3rfebfjTPRlP+Oc4TBQUFSscPjJfm9ePeq2A3tlF8SF0
	waKZr3fu2FfrKIK/yg1itgIXWIr7wu5rvbyZYYCqNBUtc6xa+JjJsMwt79BHaaTo47fV6s
	OXVvcYElRiZ18h0/e+t6xdI+5KTpRx3O+shCnQezGhb4aQtwzq32EOU81L/qZ7kzrZQaZG
	ciTxlJ3DVeYZb8rz1iWTvVCuV1D5zVofWMlcUgIZHY06Rkhcf0955hC/AzqfTwlAhUpTBy
	lCD9g6eRlVK61+0m9oUEwjGVBCzi0aojBsr65oG7T03DBc3turNlPUshKJxMxA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791293966;
	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=HtSaFZW47h4Sw2FultMkcX0jwnEcVvWWnYdnpKuaaBs=;
	b=LdgcCWg5LcNj5n8ctQJE5c/1lR/1eLbOBp6dAS6vTtnM45vIWAqu0bMMK7xOSJJlFH0gsL
	TRIO+/jWxrHSt0x4GTxpva7JqFE9dC6M9surslrl8vsNEV7l20kWCmOfhtr+cVX2opPTMg
	G1z12YFYf54B/iZOVt7eLO3jaroGO44xA0TcgDlWsktx7bTxWP9IeaBVgyKsei81lw1/er
	t5OEKuXfgxB2rKWR2gqshUmcKjWg7iUpvtblB2fQQxXHBHIjGd7WHrKOBBaHiiZ6KYZJnf
	CJgTjI25BUAqZlgTAq9s3AKwSl+g70Fsnoo4XOX2EdVbwPStjqCSHJ0DdzrJYw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzcmt3v1Jz175V
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 13:39:26 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 45651
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 13:39:26 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Olivier Certner <olce@FreeBSD.org>
Subject: git: 42490d5cd29d - main - sched: New scheduler interface definition scheme
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: olce
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 42490d5cd29d7a6acd3c28dacfbdc527c2d39028
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 13:39:26 +0000
Message-Id: <6ac4fa0e.45651.22183126@gitrepo.freebsd.org>

The branch main has been updated by olce:

URL: https://cgit.FreeBSD.org/src/commit/?id=42490d5cd29d7a6acd3c28dacfbdc527c2d39028

commit 42490d5cd29d7a6acd3c28dacfbdc527c2d39028
Author:     Olivier Certner <olce@FreeBSD.org>
AuthorDate: 2026-09-07 16:19:53 +0000
Commit:     Olivier Certner <olce@FreeBSD.org>
CommitDate: 2026-10-06 13:27:41 +0000

    sched: New scheduler interface definition scheme
    
    Define the scheduler interface once and for all (in 'sys/sys/sched.h')
    and remove all code duplication related to it (function signatures, slot
    names, dispatch, scheduler instance declaration), making it easier to
    modify the interface or to add new schedulers.
    
    This is implemented by defining the interface as X macros, which are
    passed a macro (and additional arguments for it) that is "called" with
    a variable number of arguments describing a single function of the
    interface.  The convention used for a function's parameters is that each
    parameter is represented with two macro arguments, the first one being
    the type and the second one being the name.  Helper macros allow to
    process arguments described in this convention in order to generate
    a list of arguments for function definitions (currently, up to
    4 function parameters).  The chosen convention eliminates the need for
    any specific declaration of functions depending on their number of
    arguments.
    
    DECLARE_SCHEDULER() has been changed to automatically declare and fill
    a 'struct sched_instance' structure.  Its number of parameters has been
    reduced to the minimum, and the symbol part used to produce distinct
    structure names can now start with a digit (useful for 4BSD).
    
    The new implementation has the following additional benefits:
    1. The name of implementations for the interface functions is imposed
       (same name as the interface function but with the scheduler symbol
       that was passed to DECLARE_SCHEDULER() added just after the 'sched_'
       prefix, e.g., for ULE, 'sched_ule_*()') and checked at compile-time.
    2. Missing functions in an implementation are detected at compile-time
       (and not at runtime with a NULL dereference).
    3. Failures to fill correctly the 'struct sched_instance' object
       associated to an implementation are eliminated.
    
    Preserve comments/categories of interface functions by moving comments
    that were in the old explicit interface declarations to the SCHED_ITF*()
    macros, and while here, marginally improve some (and move the common
    documentation for sched_initticks() from the implementations to the
    interface).  Several of them are not exact, but this will be fixed in
    a separate commit.
    
    Make the active scheduler instance object internal, as it is not used
    outside of the shim implementation and one of the purposes of the
    interface is also to hide the actual implementation.  If the need
    arises, it would be easy to add scheduler-specific routines as new
    fields in 'struct sched_instance' and to extend the machinery to
    automatically assign routines returning EOPNOTSUPP to these fields, and
    then to provide a macro to register non-trivial implementation, instead
    of making the current instance object visible again.
    
    Additionally, in order to avoid collision with C and C++ keywords:
    1. Fields in 'struct sched_instance' are now suffixed with '_impl', so
       that, e.g., 'switch()' does not require special treatment anymore and
       the corresponding implementations can be renamed back to
       `sched_*_switch()`.  This suffix avoids any collision with existing
       C++ keywords as new functions are added to the interface.  (See
       SCHED_ITF_FIELD_NAME().)
    2. Actual interface functions' C declarations do not list parameter
       names anymore (sched_class() was causing a problem in C++ with its
       'class' parameter).
    allowing to remove the bracketing with '#ifndef __cplusplus'.
    
    Reviewed by:    mchoo, kib
    Fixes:          ce38acee8d0b ("Add kern/sched_shim.c") (+ some followups)
    MFC after:      1 week
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D59988
---
 sys/arm/arm/mp_machdep.c      |   2 +-
 sys/arm64/arm64/mp_machdep.c  |   2 +-
 sys/kern/init_main.c          |   2 +-
 sys/kern/sched_4bsd.c         |  54 +----
 sys/kern/sched_shim.c         |  96 ++------
 sys/kern/sched_ule.c          |  62 +-----
 sys/powerpc/aim/mp_cpudep.c   |   2 +-
 sys/powerpc/booke/mp_cpudep.c |   2 +-
 sys/riscv/riscv/mp_machdep.c  |   2 +-
 sys/sys/sched.h               | 507 ++++++++++++++++++++++++++++--------------
 sys/x86/x86/mp_x86.c          |   2 +-
 11 files changed, 379 insertions(+), 354 deletions(-)

diff --git a/sys/arm/arm/mp_machdep.c b/sys/arm/arm/mp_machdep.c
index 9a4dc4e503e1..a745adef20bc 100644
--- a/sys/arm/arm/mp_machdep.c
+++ b/sys/arm/arm/mp_machdep.c
@@ -177,7 +177,7 @@ init_secondary(int cpu)
 	pc->pc_curthread = pc->pc_idlethread;
 	pc->pc_curpcb = pc->pc_idlethread->td_pcb;
 	set_curthread(pc->pc_idlethread);
-	schedinit_ap();
+	sched_init_ap();
 #ifdef VFP
 	vfp_init();
 #endif
diff --git a/sys/arm64/arm64/mp_machdep.c b/sys/arm64/arm64/mp_machdep.c
index 30f4b30e64a7..2883e7dc74bf 100644
--- a/sys/arm64/arm64/mp_machdep.c
+++ b/sys/arm64/arm64/mp_machdep.c
@@ -280,7 +280,7 @@ init_secondary(uint64_t cpu)
 	/* Initialize curthread */
 	KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread"));
 	pcpup->pc_curthread = pcpup->pc_idlethread;
-	schedinit_ap();
+	sched_init_ap();
 
 	/* Initialize curpmap to match TTBR0's current setting. */
 	pmap0 = vmspace_pmap(&vmspace0);
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c
index cfca5d9d1296..829583cb687c 100644
--- a/sys/kern/init_main.c
+++ b/sys/kern/init_main.c
@@ -493,7 +493,7 @@ proc0_init(void *dummy __unused)
 	 * Initialise scheduler resources.
 	 * Add scheduler specific parts to proc, thread as needed.
 	 */
-	schedinit();	/* scheduler gets its house in order */
+	sched_init();	/* scheduler gets its house in order */
 
 	/*
 	 * Create process 0.
diff --git a/sys/kern/sched_4bsd.c b/sys/kern/sched_4bsd.c
index 5f0246323dea..431957c048eb 100644
--- a/sys/kern/sched_4bsd.c
+++ b/sys/kern/sched_4bsd.c
@@ -1010,7 +1010,7 @@ sched_4bsd_sleep(struct thread *td, int pri)
 }
 
 static void
-sched_4bsd_sswitch(struct thread *td, int flags)
+sched_4bsd_switch(struct thread *td, int flags)
 {
 	struct thread *newtd;
 	struct mtx *tmtx;
@@ -1842,54 +1842,4 @@ sched_4bsd_find_l2_neighbor(int cpu)
 	return (-1);
 }
 
-struct sched_instance sched_4bsd_instance = {
-#define	SLOT(name) .name = sched_4bsd_##name
-	SLOT(load),
-	SLOT(rr_interval),
-	SLOT(runnable),
-	SLOT(exit),
-	SLOT(fork),
-	SLOT(fork_exit),
-	SLOT(class),
-	SLOT(nice),
-	SLOT(ap_entry),
-	SLOT(exit_thread),
-	SLOT(estcpu),
-	SLOT(fork_thread),
-	SLOT(ithread_prio),
-	SLOT(lend_prio),
-	SLOT(lend_user_prio),
-	SLOT(lend_user_prio_cond),
-	SLOT(pctcpu),
-	SLOT(prio),
-	SLOT(sleep),
-	SLOT(sswitch),
-	SLOT(throw),
-	SLOT(unlend_prio),
-	SLOT(user_prio),
-	SLOT(userret_slowpath),
-	SLOT(add),
-	SLOT(choose),
-	SLOT(clock),
-	SLOT(idletd),
-	SLOT(preempt),
-	SLOT(relinquish),
-	SLOT(rem),
-	SLOT(wakeup),
-	SLOT(bind),
-	SLOT(unbind),
-	SLOT(is_bound),
-	SLOT(affinity),
-	SLOT(sizeof_proc),
-	SLOT(sizeof_thread),
-	SLOT(tdname),
-	SLOT(clear_tdname),
-	SLOT(find_l2_neighbor),
-	SLOT(init),
-	SLOT(init_ap),
-	SLOT(setup),
-	SLOT(initticks),
-	SLOT(sysinit),
-#undef SLOT
-};
-DECLARE_SCHEDULER(fourbsd_sched_selector, "4BSD", &sched_4bsd_instance);
+DECLARE_SCHEDULER(4bsd, "4BSD");
diff --git a/sys/kern/sched_shim.c b/sys/kern/sched_shim.c
index 9935c4e40aa8..8fdd12e5f84d 100644
--- a/sys/kern/sched_shim.c
+++ b/sys/kern/sched_shim.c
@@ -18,76 +18,10 @@
 #include <sys/sched.h>
 #include <sys/smp.h>
 #include <sys/sysctl.h>
-#include <machine/ifunc.h>
-
-const struct sched_instance *active_sched;
 
-#define	__DEFINE_SHIM(__m, __r, __n, __p, __a)	\
-	DEFINE_IFUNC(, __r, __n, __p)		\
-	{					\
-		return (active_sched->__m);	\
-	}
-#define	DEFINE_SHIM0(__m, __r, __n)	\
-    __DEFINE_SHIM(__m, __r, __n, (void), ())
-#define	DEFINE_SHIM1(__m, __r, __n, __t1, __a1)	\
-    __DEFINE_SHIM(__m, __r, __n, (__t1 __a1), (__a1))
-#define	DEFINE_SHIM2(__m, __r, __n, __t1, __a1, __t2, __a2)	\
-    __DEFINE_SHIM(__m, __r, __n, (__t1 __a1, __t2 __a2), (__a1, __a2))
-
-DEFINE_SHIM0(load, int, sched_load)
-DEFINE_SHIM0(rr_interval, int, sched_rr_interval)
-DEFINE_SHIM0(runnable, bool, sched_runnable)
-DEFINE_SHIM2(exit, void, sched_exit, struct proc *, p,
-    struct thread *, childtd)
-DEFINE_SHIM2(fork, void, sched_fork, struct thread *, td,
-    struct thread *, childtd)
-DEFINE_SHIM1(fork_exit, void, sched_fork_exit, struct thread *, td)
-DEFINE_SHIM2(class, void, sched_class, struct thread *, td, int, class)
-DEFINE_SHIM2(nice, void, sched_nice, struct proc *, p, int, nice)
-DEFINE_SHIM0(ap_entry, void, sched_ap_entry)
-DEFINE_SHIM2(exit_thread, void, sched_exit_thread, struct thread *, td,
-    struct thread *, child)
-DEFINE_SHIM1(estcpu, u_int, sched_estcpu, struct thread *, td)
-DEFINE_SHIM2(fork_thread, void, sched_fork_thread, struct thread *, td,
-    struct thread *, child)
-DEFINE_SHIM2(ithread_prio, void, sched_ithread_prio, struct thread *, td,
-    u_char, prio)
-DEFINE_SHIM2(lend_prio, void, sched_lend_prio, struct thread *, td,
-    u_char, prio)
-DEFINE_SHIM2(lend_user_prio, void, sched_lend_user_prio, struct thread *, td,
-    u_char, pri)
-DEFINE_SHIM2(lend_user_prio_cond, void, sched_lend_user_prio_cond,
-    struct thread *, td, u_char, pri)
-DEFINE_SHIM1(pctcpu, fixpt_t, sched_pctcpu, struct thread *, td)
-DEFINE_SHIM2(prio, void, sched_prio, struct thread *, td, u_char, prio)
-DEFINE_SHIM2(sleep, void, sched_sleep, struct thread *, td, int, prio)
-DEFINE_SHIM2(sswitch, void, sched_switch, struct thread *, td, int, flags)
-DEFINE_SHIM1(throw, void, sched_throw, struct thread *, td)
-DEFINE_SHIM2(unlend_prio, void, sched_unlend_prio, struct thread *, td,
-    u_char, prio)
-DEFINE_SHIM2(user_prio, void, sched_user_prio, struct thread *, td,
-    u_char, prio)
-DEFINE_SHIM1(userret_slowpath, void, sched_userret_slowpath,
-    struct thread *, td)
-DEFINE_SHIM2(add, void, sched_add, struct thread *, td, int, flags)
-DEFINE_SHIM0(choose, struct thread *, sched_choose)
-DEFINE_SHIM2(clock, void, sched_clock, struct thread *, td, int, cnt)
-DEFINE_SHIM1(idletd, void, sched_idletd, void *, dummy)
-DEFINE_SHIM1(preempt, void, sched_preempt, struct thread *, td)
-DEFINE_SHIM1(relinquish, void, sched_relinquish, struct thread *, td)
-DEFINE_SHIM1(rem, void, sched_rem, struct thread *, td)
-DEFINE_SHIM2(wakeup, void, sched_wakeup, struct thread *, td, int, srqflags)
-DEFINE_SHIM2(bind, void, sched_bind, struct thread *, td, int, cpu)
-DEFINE_SHIM1(unbind, void, sched_unbind, struct thread *, td)
-DEFINE_SHIM1(is_bound, int, sched_is_bound, struct thread *, td)
-DEFINE_SHIM1(affinity, void, sched_affinity, struct thread *, td)
-DEFINE_SHIM0(sizeof_proc, int, sched_sizeof_proc)
-DEFINE_SHIM0(sizeof_thread, int, sched_sizeof_thread)
-DEFINE_SHIM1(tdname, char *, sched_tdname, struct thread *, td)
-DEFINE_SHIM1(clear_tdname, void, sched_clear_tdname, struct thread *, td)
-DEFINE_SHIM1(find_l2_neighbor, int, sched_find_l2_neighbor, int, cpu)
-DEFINE_SHIM0(init_ap, void, schedinit_ap)
+#include <machine/ifunc.h>
 
+static const struct sched_instance *active_sched;
 
 SCHED_STAT_DEFINE(ithread_demotions, "Interrupt thread priority demotions");
 SCHED_STAT_DEFINE(ithread_preemptions,
@@ -117,6 +51,18 @@ int __read_mostly		dtrace_vtime_active;
 dtrace_vtime_switch_func_t	dtrace_vtime_switch_func;
 #endif
 
+/*
+ * Define dispatchers for all functions described by SCHED_ITF_DISPATCH().
+ */
+#define DEFINE_SHIM(args, ret_type, fn, ...)				\
+	DEFINE_IFUNC(, ret_type, SCHED_ITF_FUNCTION_NAME(fn),		\
+	    (SCHED_ITF_ARGS_PROTO_NAME(__VA_ARGS__)))			\
+	{								\
+		return (active_sched->SCHED_ITF_FIELD_NAME(fn));	\
+	}
+SCHED_ITF_DISPATCH(DEFINE_SHIM, );
+#undef DEFINE_SHIM
+
 static char sched_name[32] = "ULE";
 
 SET_DECLARE(sched_instance_set, struct sched_selection);
@@ -155,27 +101,27 @@ sched_instance_select(void)
 }
 
 void
-schedinit(void)
+sched_init(void)
 {
 	if (active_sched == NULL)
 		panic("Cannot find scheduler %s", sched_name);
-	active_sched->init();
+	active_sched->SCHED_ITF_FIELD_NAME(init)();
 }
 
 struct cpu_group __read_mostly *cpu_top;		/* CPU topology */
 
 static void
-sched_setup(void *dummy)
+sched_setup(void)
 {
 	cpu_top = smp_topo();
-	active_sched->setup();
+	active_sched->SCHED_ITF_FIELD_NAME(setup)();
 }
 SYSINIT(sched_setup, SI_SUB_RUN_QUEUE, SI_ORDER_FIRST, sched_setup, NULL);
 
 static void
-sched_initticks(void *dummy)
+sched_initticks(void)
 {
-	active_sched->initticks();
+	active_sched->SCHED_ITF_FIELD_NAME(initticks)();
 }
 SYSINIT(sched_initticks, SI_SUB_CLOCKS, SI_ORDER_THIRD, sched_initticks,
     NULL);
@@ -183,7 +129,7 @@ SYSINIT(sched_initticks, SI_SUB_CLOCKS, SI_ORDER_THIRD, sched_initticks,
 static void
 sched_sysinit(void)
 {
-	active_sched->sysinit();
+	active_sched->SCHED_ITF_FIELD_NAME(sysinit)();
 }
 SYSINIT(sched_sysinit, SI_SUB_LAST, SI_ORDER_FIRST, sched_sysinit, NULL);
 
diff --git a/sys/kern/sched_ule.c b/sys/kern/sched_ule.c
index ea5f63311387..453e3958faf9 100644
--- a/sys/kern/sched_ule.c
+++ b/sys/kern/sched_ule.c
@@ -1899,14 +1899,14 @@ sched_ule_init(void)
 }
 
 /*
- * schedinit_ap() is needed prior to calling sched_throw(NULL) to ensure that
+ * sched_init_ap() is needed prior to calling sched_throw(NULL) to ensure that
  * the pcpu requirements are met for any calls in the period between curthread
  * initialization and sched_throw().  One can safely add threads to the queue
  * before sched_throw(), for instance, as long as the thread lock is setup
  * correctly.
  *
  * TDQ_SELF() relies on the below sched pcpu setting; it may be used only
- * after schedinit_ap().
+ * after sched_init_ap().
  */
 static void
 sched_ule_init_ap(void)
@@ -2320,7 +2320,7 @@ thread_unblock_switch(struct thread *td, struct mtx *mtx)
  * be assigned elsewhere via binding.
  */
 static void
-sched_ule_sswitch(struct thread *td, int flags)
+sched_ule_switch(struct thread *td, int flags)
 {
 	struct thread *newtd;
 	struct tdq *tdq;
@@ -3240,7 +3240,7 @@ sched_ule_ap_entry(void)
 
 	tdq = TDQ_SELF();
 
-	/* This should have been setup in schedinit_ap(). */
+	/* This should have been setup in sched_init_ap(). */
 	THREAD_LOCKPTR_ASSERT(curthread, TDQ_LOCKPTR(tdq));
 
 	TDQ_LOCK(tdq);
@@ -3418,58 +3418,6 @@ sched_ule_find_l2_neighbor(int cpu)
 }
 #endif
 
-struct sched_instance sched_ule_instance = {
-#define	SLOT(name) .name = sched_ule_##name
-	SLOT(load),
-	SLOT(rr_interval),
-	SLOT(runnable),
-	SLOT(exit),
-	SLOT(fork),
-	SLOT(fork_exit),
-	SLOT(class),
-	SLOT(nice),
-	SLOT(ap_entry),
-	SLOT(exit_thread),
-	SLOT(estcpu),
-	SLOT(fork_thread),
-	SLOT(ithread_prio),
-	SLOT(lend_prio),
-	SLOT(lend_user_prio),
-	SLOT(lend_user_prio_cond),
-	SLOT(pctcpu),
-	SLOT(prio),
-	SLOT(sleep),
-	SLOT(sswitch),
-	SLOT(throw),
-	SLOT(unlend_prio),
-	SLOT(user_prio),
-	SLOT(userret_slowpath),
-	SLOT(add),
-	SLOT(choose),
-	SLOT(clock),
-	SLOT(idletd),
-	SLOT(preempt),
-	SLOT(relinquish),
-	SLOT(rem),
-	SLOT(wakeup),
-	SLOT(bind),
-	SLOT(unbind),
-	SLOT(is_bound),
-	SLOT(affinity),
-	SLOT(sizeof_proc),
-	SLOT(sizeof_thread),
-	SLOT(tdname),
-	SLOT(clear_tdname),
-	SLOT(find_l2_neighbor),
-	SLOT(init),
-	SLOT(init_ap),
-	SLOT(setup),
-	SLOT(initticks),
-	SLOT(sysinit),
-#undef SLOT
-};
-DECLARE_SCHEDULER(ule_sched_selector, "ULE", &sched_ule_instance);
-
 static int
 sysctl_kern_quantum(SYSCTL_HANDLER_ARGS)
 {
@@ -3551,3 +3499,5 @@ SYSCTL_INT(_kern_sched_ule, OID_AUTO, always_steal, CTLFLAG_RWTUN,
     &always_steal, 0,
     "Always run the stealer from the idle thread");
 #endif
+
+DECLARE_SCHEDULER(ule, "ULE");
diff --git a/sys/powerpc/aim/mp_cpudep.c b/sys/powerpc/aim/mp_cpudep.c
index 98acfc1a5c37..6bfec392f166 100644
--- a/sys/powerpc/aim/mp_cpudep.c
+++ b/sys/powerpc/aim/mp_cpudep.c
@@ -132,7 +132,7 @@ cpudep_ap_bootstrap(void)
 #endif
 	pcpup->pc_curpcb = pcpup->pc_curthread->td_pcb;
 	sp = pcpup->pc_curpcb->pcb_sp;
-	schedinit_ap();
+	sched_init_ap();
 
 	return (sp);
 }
diff --git a/sys/powerpc/booke/mp_cpudep.c b/sys/powerpc/booke/mp_cpudep.c
index a57c80102045..e38ce1bded99 100644
--- a/sys/powerpc/booke/mp_cpudep.c
+++ b/sys/powerpc/booke/mp_cpudep.c
@@ -83,7 +83,7 @@ cpudep_ap_bootstrap(void)
 #endif
 	pcpup->pc_curpcb = pcpup->pc_curthread->td_pcb;
 	sp = pcpup->pc_curpcb->pcb_sp;
-	schedinit_ap();
+	sched_init_ap();
 
 	/* XXX shouldn't the pcb_sp be checked/forced for alignment here?? */
 
diff --git a/sys/riscv/riscv/mp_machdep.c b/sys/riscv/riscv/mp_machdep.c
index 9c81d9ee1043..5402c6d388ed 100644
--- a/sys/riscv/riscv/mp_machdep.c
+++ b/sys/riscv/riscv/mp_machdep.c
@@ -180,7 +180,7 @@ init_secondary(uint64_t hart)
 	/* Initialize curthread */
 	KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread"));
 	pcpup->pc_curthread = pcpup->pc_idlethread;
-	schedinit_ap();
+	sched_init_ap();
 
 	/* Setup and enable interrupts */
 	intr_pic_init_secondary();
diff --git a/sys/sys/sched.h b/sys/sys/sched.h
index e4cf848cf641..9d8524ee6464 100644
--- a/sys/sys/sched.h
+++ b/sys/sys/sched.h
@@ -36,6 +36,11 @@
 /*-
  * Copyright (c) 2002-2008, Jeffrey Roberson <jeff@freebsd.org>
  * All rights reserved.
+ * Copyright (c) 2026 The FreeBSD Foundation
+ *
+ * Portions of this software were developed by Olivier Certner
+ * <olce@FreeBSD.org> at Kumacom SARL under sponsorship from the FreeBSD
+ * Foundation.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -71,51 +76,316 @@
 #include <sys/linker_set.h>
 #include <sys/sdt.h>
 
-struct proc;
-struct thread;
+/*
+ * Scheduler interface.
+ *
+ * The scheduler interface is the list of functions that external users can
+ * call.  It consists of two parts: Functions that must be provided directly by
+ * a scheduler implementation (called an "instance"), and functions with
+ * a common implementation (which may indirectly call instance functions).
+ *
+ * The former are declared in an abstract manner with some of the SCHED_ITF_*()
+ * macros (SCHED_ITF_INTERNAL() being a notable exception), described in detail
+ * below.  A fUN() line declares a function, and the final interface function
+ * name is the symbol in the third argument prefixed by 'sched_'.  E.g., such
+ * lines:
+ *
+ * FUN((__VA_ARGS__), int, load)
+ * FUN((__VA_ARGS__), void, switch, struct thread *, td, int, flags)
+ *
+ * lead to the C declarations (among others):
+ *
+ * int sched_load(void);
+ * void sched_switch(struct thread *, int);
+ *
+ * and each implementation (instance) must implement corresponding functions,
+ * e.g., for ULE:
+ *
+ * int sched_ule_load(void);
+ * void sched_ule_switch(struct thread *td, int flags);
+ *
+ * Such interface functions are grouped and commented in the SCHED_ITF*()
+ * macros listing them.
+ *
+ * Functions with a common implementation are declared under "Common functions"
+ * below as commented plain C declarations.
+ */
+
+/*
+ * Macros SCHED_ITF_*() define functions that must be provided by an instance.
+ * Please see their herald comments for details about their differences.  They
+ * are X macros to avoid repetitions in function signatures, slot names,
+ * dispatch code, and scheduler instance declaration.  They take as an argument
+ * the FUN() macro, which is expanded on each interface's function descriptor.
+ *
+ * The arguments passed to FUN() are:
+ * - The variable arguments to the X macro, as the first argument.
+ * - The function descriptor, consisting of:
+ *   - Field name in 'struct sched_instance'.
+ *   - Return type.
+ *   - Function name; prefixed by 'sched_' for the publicly visible functions,
+ *     and by 'sched_<instance_name>_' for instance's implementation.
+ *   - Function arguments, each being represented as a pair of successive macro
+ *     parameters, the first being the argument's type and the second its name.
+ * Note that FUN() is passed a variable number of arguments for flexibility.
+ *
+ * In SCHED_ITF_*() macros, please keep the function's parameters on a separate
+ * line for clarity, even if everything would fit on a single line.
+ */
+
+/* sched_add() arguments. */
+#define	SRQ_BORING	0x0000		/* No special circumstances. */
+#define	SRQ_YIELDING	0x0001		/* We are yielding (from mi_switch). */
+#define	SRQ_OURSELF	0x0002		/* It is ourself (from mi_switch). */
+#define	SRQ_INTR	0x0004		/* It is probably urgent. */
+#define	SRQ_PREEMPTED	0x0008		/* has been preempted.. be kind */
+#define	SRQ_BORROWING	0x0010		/* Priority updated due to prio_lend */
+#define	SRQ_HOLD	0x0020		/* Return holding original td lock */
+#define	SRQ_HOLDTD	0x0040		/* Return holding td lock */
 
 /*
- * General scheduling info.
+ * Functions to be directly dispatched to the active scheduler instance.
  *
- * sched_load:
- *	Total runnable non-ithread threads in the system.
+ * These are implemented using ifuncs for zero-cost dispatch.
+ */
+#define SCHED_ITF_DISPATCH(FUN, ...)					\
+	/*								\
+	 * General scheduling info.					\
+	 *								\
+	 * sched_load:							\
+	 *	Total runnable non-ithread threads in the system.	\
+	 *								\
+	 * sched_runnable:						\
+	 *	Runnable threads for this processor.			\
+	 */								\
+	FUN((__VA_ARGS__), int, load)					\
+	FUN((__VA_ARGS__), int, rr_interval)				\
+	FUN((__VA_ARGS__), bool, runnable)				\
+									\
+	/*								\
+	 * Proc related scheduling hooks.				\
+	 */								\
+	FUN((__VA_ARGS__), void, exit,					\
+	    struct proc *, p, struct thread *, child)			\
+	FUN((__VA_ARGS__), void, fork,					\
+	    struct thread *, td, struct thread *, child)		\
+	FUN((__VA_ARGS__), void, fork_exit,				\
+	    struct thread *, td)					\
+	FUN((__VA_ARGS__), void, class,					\
+	    struct thread *, td, int, class)				\
+	FUN((__VA_ARGS__), void, nice,					\
+	    struct proc *, p, int, nice)				\
+									\
+	/*								\
+	 * Threads are switched in and out, block on resources,		\
+	 * have temporary priorities inherited from their procs,	\
+	 * and use up cpu time.						\
+	 */								\
+	FUN((__VA_ARGS__), void, ap_entry)				\
+	FUN((__VA_ARGS__), void, exit_thread,				\
+	    struct thread *, td, struct thread *, child)		\
+	FUN((__VA_ARGS__), u_int, estcpu,				\
+	    struct thread *, td)					\
+	FUN((__VA_ARGS__), void, fork_thread,				\
+	    struct thread *, td, struct thread *, child)		\
+	FUN((__VA_ARGS__), void, ithread_prio,				\
+	    struct thread *, td, u_char, prio)				\
+	FUN((__VA_ARGS__), void, lend_prio,				\
+	    struct thread *, td, u_char, prio)				\
+	FUN((__VA_ARGS__), void, lend_user_prio,			\
+	    struct thread *, td, u_char, pri)				\
+	FUN((__VA_ARGS__), void, lend_user_prio_cond,			\
+	    struct thread *, td, u_char, pri)				\
+	FUN((__VA_ARGS__), fixpt_t, pctcpu,				\
+	    struct thread *, td)					\
+	FUN((__VA_ARGS__), void, prio,					\
+	    struct thread *, td, u_char, prio)				\
+	FUN((__VA_ARGS__), void, sleep,					\
+	    struct thread *, td, int, prio)				\
+	FUN((__VA_ARGS__), void, switch,				\
+	    struct thread *, td, int, flags)				\
+	FUN((__VA_ARGS__), void, throw,					\
+	    struct thread *, td)					\
+	FUN((__VA_ARGS__), void, unlend_prio,				\
+	    struct thread *, td, u_char, prio)				\
+	FUN((__VA_ARGS__), void, user_prio,				\
+	    struct thread *, td, u_char, prio)				\
+	FUN((__VA_ARGS__), void, userret_slowpath,			\
+	    struct thread *, td)					\
+									\
+	/*								\
+	 * Threads are moved on and off of run queues			\
+	 */								\
+	FUN((__VA_ARGS__), void, add,					\
+	    struct thread *, td, int, flags)				\
+	FUN((__VA_ARGS__), struct thread *, choose)			\
+	FUN((__VA_ARGS__), void, clock,					\
+	    struct thread *, td, int, cnt)				\
+	FUN((__VA_ARGS__), void, idletd,				\
+	    void *, dummy)						\
+	FUN((__VA_ARGS__), void, preempt,				\
+	    struct thread *, td)					\
+	FUN((__VA_ARGS__), void, relinquish,				\
+	    struct thread *, td)					\
+	FUN((__VA_ARGS__), void, rem,					\
+	    struct thread *, td)					\
+	FUN((__VA_ARGS__), void, wakeup,				\
+	    struct thread *, td, int, srqflags)				\
+									\
+	/*								\
+	 * Binding makes cpu affinity permanent while pinning is used	\
+	 * to temporarily hold a thread on a particular CPU.		\
+	 */								\
+	FUN((__VA_ARGS__), void, bind,					\
+	    struct thread *, td, int, cpu)				\
+	FUN((__VA_ARGS__), void, unbind,				\
+	    struct thread *, td)					\
+	FUN((__VA_ARGS__), int, is_bound,				\
+	    struct thread *, td)					\
+	FUN((__VA_ARGS__), void, affinity,				\
+	    struct thread *, td)					\
+									\
+	/*								\
+	 * These procedures tell the process data structure allocation  \
+	 * code how many bytes to actually allocate.			\
+	 */								\
+	FUN((__VA_ARGS__), int, sizeof_proc)				\
+	FUN((__VA_ARGS__), int, sizeof_thread)				\
+									\
+	/*								\
+	 * This routine provides a consistent thread name for use with	\
+	 * KTR graphing FUNctions.					\
+	 */								\
+	FUN((__VA_ARGS__), char *, tdname,				\
+	    struct thread *, td)					\
+	FUN((__VA_ARGS__), void, clear_tdname,				\
+	    struct thread *, td)					\
+									\
+	/*								\
+	 * Find an L2 neighbor of the given CPU or return -1 if none	\
+	 * found.  This does not distinguish among multiple L2		\
+	 * if the given CPU has more than one (it will always return	\
+	 * the same result in that case).				\
+	 */								\
+	FUN((__VA_ARGS__), int,	find_l2_neighbor,			\
+	    int, cpu)							\
+									\
+	/*								\
+	 * Fixup scheduler state for secondary APs			\
+	 */								\
+	FUN((__VA_ARGS__), void, init_ap)
+
+/*
+ * Instance functions to be specifically wrapped.
+ *
+ * An explicit common implementation must be provided for these, and it is
+ * expected to call the instance's implementation.
+ */
+#define SCHED_ITF_WRAP(FUN, ...)					\
+	/*								\
+	 * Initialize scheduler state for proc0 and thread0.		\
+	 */								\
+	FUN((__VA_ARGS__), void, init)
+
+/*
+ * Instance functions used internally.
  *
- * sched_runnable:
- *	Runnable threads for this processor.
+ * Functions here are not made available for external callers.
  */
-int	sched_load(void);
-int	sched_rr_interval(void);
-bool	sched_runnable(void);
+#define SCHED_ITF_INTERNAL(FUN, ...)					\
+	/*								\
+	 * Setup run queues ('cpu_top' filled by the shim machinery).   \
+	 */								\
+	FUN((__VA_ARGS__), void, setup)					\
+									\
+	/*								\
+	 * Determines time constants after stathz and hz are setup.	\
+	 */								\
+	FUN((__VA_ARGS__), void, initticks)				\
+									\
+	/*								\
+	 * Final steps after all the rest has been initialized.		\
+	 */								\
+	FUN((__VA_ARGS__), void, sysinit)
+
+/* All parts at once, but common functions. */
+#define SCHED_ITF_NOCOMMON(FUN, ...)					\
+	SCHED_ITF_DISPATCH(FUN, __VA_ARGS__)				\
+	SCHED_ITF_WRAP(FUN, __VA_ARGS__)				\
+	SCHED_ITF_INTERNAL(FUN, __VA_ARGS__)
 
-/* 
- * Proc related scheduling hooks.
+/*
+ * Machinery to help define FUN() macros.
  */
-void	sched_exit(struct proc *p, struct thread *childtd);
-void	sched_fork(struct thread *td, struct thread *childtd);
-void	sched_fork_exit(struct thread *td);
-void	sched_class(struct thread *td, int class);
-void	sched_nice(struct proc *p, int nice);
+#define _SCHED_ITF_ARG1(a0, ...)					\
+	a0
+#define _SCHED_ITF_ARG9(a0, a1, a2, a3, a4, a5, a6, a7, a8, ...)	\
+	a8
+#define _SCHED_ITF_NARGS(...)						\
+	_SCHED_ITF_ARG9(__VA_ARGS__ __VA_OPT__(,) 4, ERR, 3, ERR, 2,	\
+	    ERR, 1, ERR, 0)
+#define _SCHED_ITF_NARGS_DISP(PREFIX, disp_args, full_args)		\
+	__CONCAT(__CONCAT(PREFIX, _), _SCHED_ITF_NARGS disp_args)	\
+		full_args
+#define _SCHED_ITF_ARGS_PAIR_ERR					\
+	"Two macro arguments per interface function argument expected."
+#define _SCHED_ITF_ARGS_PROTO_NAME_0()					\
+	void
+#define _SCHED_ITF_ARGS_PROTO_NAME_1(t1, a1)				\
+	t1 a1
+#define _SCHED_ITF_ARGS_PROTO_NAME_2(t1, a1, t2, a2)			\
+	t1 a1, t2 a2
+#define _SCHED_ITF_ARGS_PROTO_NAME_3(t1, a1, t2, a2, t3, a3)		\
+	t1 a1, t2 a2, t3 a3
+#define _SCHED_ITF_ARGS_PROTO_NAME_4(t1, a1, t2, a2, t3, a3, t4, a4)	\
+	t1 a1, t2 a2, t3 a3, t4 a4
+#define _SCHED_ITF_ARGS_PROTO_NAME_ERR(...)				\
+	_SCHED_ITF_ARGS_PAIR_ERR
+#define SCHED_ITF_ARGS_PROTO_NAME(...)					\
+	_SCHED_ITF_NARGS_DISP(_SCHED_ITF_ARGS_PROTO_NAME,		\
+	    (__VA_ARGS__), (__VA_ARGS__))
+#define _SCHED_ITF_ARGS_PROTO_NONAME_0()				\
+	void
+#define _SCHED_ITF_ARGS_PROTO_NONAME_1(t1, a1)				\
+	t1
+#define _SCHED_ITF_ARGS_PROTO_NONAME_2(t1, a1, t2, a2)			\
+	t1, t2
+#define _SCHED_ITF_ARGS_PROTO_NONAME_3(t1, a1, t2, a2, t3, a3)		\
+	t1, t2, t3
+#define _SCHED_ITF_ARGS_PROTO_NONAME_4(t1, a1, t2, a2, t3, a3, t4, a4)	\
+	t1, t2, t3, t4
+#define _SCHED_ITF_ARGS_PROTO_NONAME_ERR(...)				\
+	_SCHED_ITF_ARGS_PAIR_ERR
+#define SCHED_ITF_ARGS_PROTO_NONAME(...)				\
+	_SCHED_ITF_NARGS_DISP(_SCHED_ITF_ARGS_PROTO_NONAME,		\
+	    (__VA_ARGS__), (__VA_ARGS__))
+
+#define SCHED_ITF_FIELD_NAME(fn)					\
+	__CONCAT(fn, _impl)
+#define SCHED_ITF_FUNCTION_NAME(fn)					\
+	__CONCAT(sched_, fn)
+#define _SCHED_ITF_IMPL_FUNCTION_NAME(sched_name, fn)			\
+	SCHED_ITF_FUNCTION_NAME(__CONCAT(__CONCAT(sched_name, _),	\
+	    fn))
 
 /*
- * Threads are switched in and out, block on resources, have temporary
- * priorities inherited from their procs, and use up cpu time.
+ * C declaration of first part of interface functions.
+ */
+struct proc;
+struct thread;
+
+/* Eliding argument names to avoid collisions with C++ keywords. */
+#define _SCHED_ITF_FUN(args, ret_type, fn, ...)				\
+	ret_type							\
+	SCHED_ITF_FUNCTION_NAME(fn)					\
+		(SCHED_ITF_ARGS_PROTO_NONAME(__VA_ARGS__));
+SCHED_ITF_DISPATCH(_SCHED_ITF_FUN, );
+SCHED_ITF_WRAP(_SCHED_ITF_FUN, );
+#undef _SCHED_ITF_FUN
+
+/*
+ * Common functions.
  */
-void	sched_ap_entry(void);
-void	sched_exit_thread(struct thread *td, struct thread *child);
-u_int	sched_estcpu(struct thread *td);
-void	sched_fork_thread(struct thread *td, struct thread *child);
-void	sched_ithread_prio(struct thread *td, u_char prio);
-void	sched_lend_prio(struct thread *td, u_char prio);
-void	sched_lend_user_prio(struct thread *td, u_char pri);
-void	sched_lend_user_prio_cond(struct thread *td, u_char pri);
-fixpt_t	sched_pctcpu(struct thread *td);
-void	sched_prio(struct thread *td, u_char prio);
-void	sched_sleep(struct thread *td, int prio);
-void	sched_switch(struct thread *td, int flags);
-void	sched_throw(struct thread *td);
-void	sched_unlend_prio(struct thread *td, u_char prio);
-void	sched_user_prio(struct thread *td, u_char prio);
-void	sched_userret_slowpath(struct thread *td);
 
 static inline void
 sched_userret(struct thread *td)
@@ -136,43 +406,6 @@ sched_userret(struct thread *td)
 		sched_userret_slowpath(td);
 }
 
-/*
- * Threads are moved on and off of run queues
- */
-void	sched_add(struct thread *td, int flags);
-struct thread *sched_choose(void);
-void	sched_clock(struct thread *td, int cnt);
-void	sched_idletd(void *);
-void	sched_preempt(struct thread *td);
-void	sched_relinquish(struct thread *td);
-void	sched_rem(struct thread *td);
-void	sched_wakeup(struct thread *td, int srqflags);
-
-/*
- * Binding makes cpu affinity permanent while pinning is used to temporarily
- * hold a thread on a particular CPU.
- */
-void	sched_bind(struct thread *td, int cpu);
-static __inline void sched_pin(void);
-void	sched_unbind(struct thread *td);
-static __inline void sched_unpin(void);
-int	sched_is_bound(struct thread *td);
-void	sched_affinity(struct thread *td);
-
-/*
- * These procedures tell the process data structure allocation code how
- * many bytes to actually allocate.
- */
-int	sched_sizeof_proc(void);
-int	sched_sizeof_thread(void);
-
-/*
- * This routine provides a consistent thread name for use with KTR graphing
- * functions.
- */
-char	*sched_tdname(struct thread *td);
-void	sched_clear_tdname(struct thread *td);
-
 static __inline void
 sched_pin(void)
 {
@@ -188,19 +421,9 @@ sched_unpin(void)
 	curthread->td_pinned--;
 }
 
-void ast_scheduler(struct thread *td, int tda);
-
-/* sched_add arguments (formerly setrunqueue) */
-#define	SRQ_BORING	0x0000		/* No special circumstances. */
-#define	SRQ_YIELDING	0x0001		/* We are yielding (from mi_switch). */
-#define	SRQ_OURSELF	0x0002		/* It is ourself (from mi_switch). */
-#define	SRQ_INTR	0x0004		/* It is probably urgent. */
-#define	SRQ_PREEMPTED	0x0008		/* has been preempted.. be kind */
-#define	SRQ_BORROWING	0x0010		/* Priority updated due to prio_lend */
-#define	SRQ_HOLD	0x0020		/* Return holding original td lock */
-#define	SRQ_HOLDTD	0x0040		/* Return holding td lock */
-
-/* Scheduler stats. */
+/*
+ * Scheduler statistics.
+ */
 #ifdef SCHED_STATS
 DPCPU_DECLARE(long, sched_switch_stats[SWT_COUNT]);
 
@@ -237,6 +460,7 @@ SYSINIT(name, SI_SUB_LAST, SI_ORDER_MIDDLE, name ## _add_proc, NULL);
 SCHED_STAT_DECLARE(ithread_demotions);
 SCHED_STAT_DECLARE(ithread_preemptions);
 
+/* Dtrace. */
 SDT_PROBE_DECLARE(sched, , , change__pri);
 SDT_PROBE_DECLARE(sched, , , dequeue);
 SDT_PROBE_DECLARE(sched, , , enqueue);
@@ -254,95 +478,50 @@ extern dtrace_vtime_switch_func_t dtrace_vtime_switch_func;
 #endif
 
 /*
- * Fixup scheduler state for proc0 and thread0
- */
-void schedinit(void);
-
-/*
- * Fixup scheduler state for secondary APs
- */
-void schedinit_ap(void);
-
-/*
- * Find an L2 neighbor of the given CPU or return -1 if none found.  This
- * does not distinguish among multiple L2 neighbors if the given CPU has
- * more than one (it will always return the same result in that case).
- */
-int sched_find_l2_neighbor(int cpu);
-
-/*
- * The scheduler selection interface uses names that are reserved words in
- * C++, causing problems for downstream projects that use C++ in the
- * kernel.
+ * Scheduler instance structure.
  */
-#ifndef __cplusplus
-
+#define _SCHED_ITF_FUN(args, ret_type, fn, ...)				\
+	ret_type (*SCHED_ITF_FIELD_NAME(fn))				\
+	(SCHED_ITF_ARGS_PROTO_NONAME(__VA_ARGS__));
 struct sched_instance {
-	int	(*load)(void);
-	int	(*rr_interval)(void);
-	bool	(*runnable)(void);
-	void	(*exit)(struct proc *p, struct thread *childtd);
-	void	(*fork)(struct thread *td, struct thread *childtd);
-	void	(*fork_exit)(struct thread *td);
-	void	(*class)(struct thread *td, int class);
-	void	(*nice)(struct proc *p, int nice);
-	void	(*ap_entry)(void);
-	void	(*exit_thread)(struct thread *td, struct thread *child);
-	u_int	(*estcpu)(struct thread *td);
-	void	(*fork_thread)(struct thread *td, struct thread *child);
-	void	(*ithread_prio)(struct thread *td, u_char prio);
-	void	(*lend_prio)(struct thread *td, u_char prio);
-	void	(*lend_user_prio)(struct thread *td, u_char pri);
-	void	(*lend_user_prio_cond)(struct thread *td, u_char pri);
-	fixpt_t	(*pctcpu)(struct thread *td);
-	void	(*prio)(struct thread *td, u_char prio);
-	void	(*sleep)(struct thread *td, int prio);
-	void	(*sswitch)(struct thread *td, int flags);
-	void	(*throw)(struct thread *td);
-	void	(*unlend_prio)(struct thread *td, u_char prio);
-	void	(*user_prio)(struct thread *td, u_char prio);
-	void	(*userret_slowpath)(struct thread *td);
-	void	(*add)(struct thread *td, int flags);
*** 97 LINES SKIPPED ***

From nobody Tue Oct  6 14:42:46 2026
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 4hzfBM4n8xz6vRRf
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 14:43:07 +0000 (UTC)
	(envelope-from yaneurabeya@gmail.com)
Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a])
	(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
	 key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256
	 client-signature RSA-PSS (2048 bits) client-digest SHA256)
	(Client CN "smtp.gmail.com", Issuer "WR4" (verified OK))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzfBK4TShz4Vfm
	for <dev-commits-src-all@freebsd.org>; Tue, 06 Oct 2026 14:43:05 +0000 (UTC)
	(envelope-from yaneurabeya@gmail.com)
Authentication-Results: mx1.freebsd.org;
	dkim=pass header.d=gmail.com header.s=20251104 header.b=bl2AthYB;
	spf=pass (mx1.freebsd.org: domain of yaneurabeya@gmail.com designates 2607:f8b0:4864:20::62a as permitted sender) smtp.mailfrom=yaneurabeya@gmail.com;
	dmarc=pass (policy=none) header.from=gmail.com
Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2e49851734cso6598985ad.3
        for <dev-commits-src-all@freebsd.org>; Tue, 06 Oct 2026 07:43:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20251104; t=1791297779; x=1791902579; darn=freebsd.org;
        h=to:references:message-id:cc:date:in-reply-to:from:subject
         :mime-version:content-type:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=mmSOvT3yvJTeVGsOD87nCRZWD792RciCbA2SwPvxOeA=;
        b=bl2AthYBJsTjd/oJXgBpMlKJHr+sdvL3Cf8nwWHEJ07LEK8uFwIFTitJZk3e5bH8UI
         3UVMTG+ydrIbkDef/I9Rmy5h4rrPCPO1baHZMpF3uZK0SHxXtbNkSTgeRwKEi/CAew4m
         zOUkE5Ae2nsnkShm6pO1nTMO1Ro5gFoFSDPz0IKTdual/qNeR2JjBIwKFinCwiO21M4m
         3g1sgR4zoSKCMTUIAIAkCAib/jcay5lHyaxjZuw02UvJAafL7QTO14wxwJNjuTqzgFhE
         Jsx4JlhNgNo9g7//Tj8u6hxJkypdQQ5LNRf/0Y+g1Y9i/bzBx7KCM9Glzy4dapvvs7/Q
         eVTg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1791297779; x=1791902579;
        h=to:references:message-id:cc:date:in-reply-to:from:subject
         :mime-version:content-type:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=mmSOvT3yvJTeVGsOD87nCRZWD792RciCbA2SwPvxOeA=;
        b=w54XaLDwUOy2Eedc2EDz8OjIb1m57RGFBGWpQo+mSgMaWSWeqJsQ9+smZaQsKJUBcK
         TOBkOAuxLVMvZ/ik0jsEmcq0fM6us5YwF99Iiduxo1ipUDvYHAjXpP/aNyFlqcXrqPQP
         CSmqcgE/tCoy2CMGFTk4DBljAwUzWwAyFV7JcJEi2qij7cOwi261oTD/U5WUE3mLhLjk
         yzFcXjPHIeFyCF+u3p0RMqI6RVxi3jeDNZenHMh7E0Xtif05SYf/azK6uFiJBgvX2XXP
         8BibPlwRtM9HXO4PTNU1zPKv5wYUwnfMYZ9disheG6QtvjOZdxW0S9AknGbSBBaQs1xe
         xjfA==
X-Forwarded-Encrypted: i=1; AKwUvByd3KK2Es63bdr4VcFs/6+AYxmRvg3kQokh97Cd0agHVPpOItuj7yZ6EoS/e0CKa2ZHRt66t2+59DGMasbJcJd5fmRO@freebsd.org
X-Gm-Message-State: AFuF++nviz0tsK871eSJwfxGQx16kB0b5bl62mT0l6gmSG6/ug/X0dbp
	VKN3cWAUk2pKDXlxgWobsJWrUmoExrSjwczZ2I2eimB1DL5K0t8hr3dr
X-Gm-Gg: AYBFou1VaF4hODv1zq1fMd5ZzUs9ab+v/Wr6BCha0WxfaDd36phd4f8tNGSm+Famdm3
	LDDUq0991rZOZWuSUBuLZ/rDOGhRyLu3Q5VlQv5ehLvviHEB5XnPOkkTLguZ9fUXdyJH9ZRPA34
	UcWFVtWKEpMtMJTbmjh8eVls13NHGQzDcWcRHY92OpGpWwZBi/ZtlQT5m5dM64UcARg+fE9DIF8
	ObzZAcZGHWQdVUiDhu52ReWpar1q3wmxd1/8l/jXK+2U04b4rsfH8pppisHjVW904z9uugCf1ro
	or2i3L1C5Kq8OPp0ZbwWG4YaVSsOmmUCMAup2WPVuZqD99MqI88PYbtiK4YGPLft8keexG0VqJP
	n30Nb7N6ipNiLiXHQYhBZK+zsKNe10bJFFidY88zYzNwdT/sttU8o//JUmksdLDiVkhtTyvP9jZ
	J+dmiI/gMcVhx0+0lEtRVTOxLC30aT3M4XHNnZsWySep0nK4d4yRQsjeyQ5tI6S+bkQkb2snpAc
	nRwHAExmkc2SC6eXVVOnnnJJ1ezlHU=
X-Received: by 2002:a17:902:f693:b0:2dd:ad73:c989 with SMTP id d9443c01a7336-2e5dcd94ed8mr12414515ad.33.1791297779301;
        Tue, 06 Oct 2026 07:42:59 -0700 (PDT)
Received: from smtpclient.apple ([187.15.153.55])
        by smtp.gmail.com with ESMTPSA id d9443c01a7336-2e5a5ee0726sm25066145ad.62.2026.10.06.07.42.58
        (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
        Tue, 06 Oct 2026 07:42:58 -0700 (PDT)
Content-Type: multipart/signed;
	boundary="Apple-Mail=_A0D475CB-DDA4-4AAD-9580-CD8F08041ADC";
	protocol="application/pgp-signature";
	micalg=pgp-sha256
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3864.700.51.1.3\))
Subject: Re: git: bb5f10e51bd5 - main - linux: implement sched_getattr()
From: "Enji Cooper (yaneurabeya)" <yaneurabeya@gmail.com>
In-Reply-To: <asQxIRIqvfkVQcCc@nuc>
Date: Tue, 6 Oct 2026 07:42:46 -0700
Cc: Enji Cooper <ngie@freebsd.org>,
 src-committers@freebsd.org,
 dev-commits-src-all@freebsd.org,
 dev-commits-src-main@freebsd.org
Message-Id: <EF976AFC-5327-4A2B-B982-92976CB9BB89@gmail.com>
References: <6ac42979.2608d.d368a5e@gitrepo.freebsd.org>
 <asQxIRIqvfkVQcCc@nuc>
To: Mark Johnston <markj@FreeBSD.org>
X-Mailer: Apple Mail (2.3864.700.51.1.3)
X-Spamd-Bar: --
X-Spamd-Result: default: False [-2.60 / 15.00];
	SIGNED_PGP(-2.00)[];
	DMARC_POLICY_ALLOW(-0.50)[gmail.com,none];
	MV_CASE(0.50)[];
	R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4864::/56:c];
	MIME_GOOD(-0.20)[multipart/signed,text/plain];
	R_DKIM_ALLOW(-0.20)[gmail.com:s=20251104];
	ARC_NA(0.00)[];
	RCVD_TLS_LAST(0.00)[];
	MIME_TRACE(0.00)[0:+,1:+,2:~];
	FROM_HAS_DN(0.00)[];
	FREEMAIL_FROM(0.00)[gmail.com];
	TO_DN_SOME(0.00)[];
	DWL_DNSWL_NONE(0.00)[gmail.com:dkim];
	FREEMAIL_ENVFROM(0.00)[gmail.com];
	DKIM_TRACE(0.00)[gmail.com:+];
	ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US];
	RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::62a:from];
	TO_MATCH_ENVRCPT_SOME(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	HAS_ATTACHMENT(0.00)[];
	PREVIOUSLY_DELIVERED(0.00)[dev-commits-src-all@freebsd.org];
	MID_RHS_MATCH_FROM(0.00)[];
	MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5]
X-Rspamd-Queue-Id: 4hzfBK4TShz4Vfm


--Apple-Mail=_A0D475CB-DDA4-4AAD-9580-CD8F08041ADC
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8


> On Oct 5, 2026, at 4:22=E2=80=AFPM, Mark Johnston <markj@FreeBSD.org> =
wrote:
>=20
> On Mon, Oct 05, 2026 at 10:49:29PM +0000, Enji Cooper wrote:
>> The branch main has been updated by ngie:
>>=20
>> URL: =
https://cgit.FreeBSD.org/src/commit/?id=3Dbb5f10e51bd53771f1a438f36f554256=
fcbd7d08
>>=20
>> commit bb5f10e51bd53771f1a438f36f554256fcbd7d08
>> Author:     Enji Cooper <ngie@FreeBSD.org>
>> AuthorDate: 2026-10-05 22:48:22 +0000
>> Commit:     Enji Cooper <ngie@FreeBSD.org>
>> CommitDate: 2026-10-05 22:49:09 +0000
>>=20
>>    linux: implement sched_getattr()
>>=20
>>    This change adds the necessary glue to translate Linux scheduler =
policy
>>    and priority from FreeBSD so this information is available to =
Linux
>>    applications.
>>=20
>>    This unbreaks using the Linux version of Chromium on FreeBSD.
>>=20
>>    This change was originally submitted via =
[freebsd/freebsd-src#2370][github-pr].
>>=20
>>    MFC after:      2 weeks
>>    PR:     297468
>>    Co-Authored-By: Enji Cooper <ngie@FreeBSD.org>
>=20
> The commit author is already set to you.

I was trying to be a bit more explicit about having=20

>>    Signed-off-by:  Joao Bonifacio <joaoboni017@gmail.com>
>>=20
>>    [github-pr]: https://github.com/freebsd/freebsd-src/pull/2370
>>=20
>>    Differential Revision:  https://reviews.freebsd.org/D60214
>=20
> =
https://docs.freebsd.org/en/articles/committers-guide/#_include_appropriat=
e_metadata_in_a_footer
> documents the right way to label commits with pull request metadata.
> Please follow it instead of inventing your own format.

Ok. In case someone is confused, these are Markdown reference links (the =
rendered version fills in [github-pr] with the link). I have been using =
them to stay under the <80 col text limit and keep things as legible as =
possible for humans, but all of the metadata did get shuffled around =
more than it needed to be.

...

>> + attr.size =3D MIN(args->size, sizeof(attr));

=E2=80=A6

>> + return (copyout(&attr, args->attr, args->size));
>=20
> So, this lets the caller decide how much stack data they want to copy
> out, independent of sizeof(attr).  The only constraint is the
> `args->size > PAGE_SIZE` check at the beginning of the function.

I eliminated a duplicate calculation in the copyout which contradicted =
the [Linux] documented interface [1].

The interface documented by Linux allows the user to specify the amount =
of data to copy out =
(https://www.man7.org/linux/man-pages/man2/sched_getattr.2.html):

>  The fields of the sched_attr structure are as follows:
>
> size This field should be set to the size of the structure in
bytes, as in sizeof(struct sched_attr). If the provided
structure is smaller than the kernel structure, any
additional fields are assumed to be '0'. If the provided
structure is larger than the kernel structure, the kernel
verifies that all additional fields are 0; if they are not,
sched_setattr() fails with the error E2BIG and updates size
to contain the size of the kernel structure.
>
> The above behavior when the size of the user-space
sched_attr structure does not match the size of the kernel
structure allows for future extensibility of the interface.
Malformed applications that pass oversize structures won't
break in the future if the size of the kernel sched_attr
structure is increased. In the future, it could also allow
applications that know about a larger user-space sched_attr
structure to determine whether they are running on an older
kernel that does not support the larger structure.
=E2=80=A6

>  E2BIG The buffer specified by size and attr is too small.
>
>  EINVAL size is invalid; that is, it is smaller than the initial =
version of the sched_attr structure (48 bytes) or larger
than the system page size.

> In fact, the original author of this commit got this bit right, and =
the
> bug was introduced when you modified their patch.
>=20
> Please revert, and in the future be sure to obtain review from kernel
> developers before making changes to the syscall layer.  Yes, sometimes
> patches go unreviewed for longer than we'd like, but that's not an
> excuse to simply go ahead and commit if you aren't familiar with the
> code being modified.  If you're having trouble getting review, please
> feel free to reach out to srcmgr@.

I reverted the change in 32f5a9f3fb512908805901a1739383766417dd8d . I =
hit ^C while the change was being pushed because I realize the branch =
wasn=E2=80=99t clean (see 4abfb452ea2d18c4710dffee7f3e65167d543041), =
which resulted in the revert commit being pushed to the repo, but =
didn=E2=80=99t generate the commit email [3].

-Enji

1. I honestly think the Linux interface is overly complicated and that =
welcomes security issues (like the ones you=E2=80=99re concerned with). =
I was trying to implement it according to the spec/[Linux] source code =
(the documentation contradicts itself [2], so I needed to refer to the =
source code) in order to ensure the interface was compatible with Linux.
2. https://bugzilla.kernel.org/show_bug.cgi?id=3D222094
3. Why are emails generated synchronously as part of push operations =
instead of asynchronously=E2=80=A6?=

--Apple-Mail=_A0D475CB-DDA4-4AAD-9580-CD8F08041ADC
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEkHfexGRJ3gYRdA2gGpE5DjPsNJgFAmrFCOYACgkQGpE5DjPs
NJi70g//UaizE4dkIc8y+EAu/3v6btZYqagbDWT8/UMB2oHtgyxM48fLIjdt+P19
uyEF5MM7n9I4L1nOPK5XHHw19ere7Jpxn4lXe9Qipn0+UusqTHT/nZMMxqfbuvED
ACfGIlw50MmlFyb5ZXAMGVZlHpZEdQUGnYuu6HCVbcP/O+vvZjHb7iGaC9scV2XA
GNzUp2Ah83cweJCcoCMCv05pngTWX0+Nu21MVVKnRQ+sNTVZK4kvzpcX7rEs1lsG
kAGBtu12RoXIrquDkfYwiUi7BoVgDS9YIlJOs3Du3LwuVvVjL9Z9RUmj0MYp+ds3
hR1C52BoYOZZrRJcRTXrw0CLVgYi8aTv4A4+Z1Ev24SBSbaFj3e5BXOYwCKKcwg8
EBRA6HD74unRjvziNrxeHopSuBlcHIVW8+G/wcPH+jSQ50bH3INeD9VBkg3QsZtI
RVs+Xkjj6A9z3l6a9v0Em5feVOc8dA8JZV4Xz6DtRt4PZ5M8Udh9BAehtaMuIJ29
Yyj80JPpc9NOYk/19hYjP+X61dxMFkifGRG5lTZlTLvYqPfEz0dvPKOYkx9/J761
M5Z8yCxD4nLEa0ZifXSoPh6tOje7H02v5JgpRMspX9dlg8VZaOK45TogI4IW6XJ+
0Cx1NxbGcKtCLQA5a+1kvSs3uRG7EZWE4K4H/E71AVtrhemQQRU=
=cQHh
-----END PGP SIGNATURE-----

--Apple-Mail=_A0D475CB-DDA4-4AAD-9580-CD8F08041ADC--

From nobody Tue Oct  6 16:21:42 2026
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 4hzhNC4tdnz4n8Hs
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 16:21:47 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzhNC3t6Jz4kk1
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:21:47 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791303707;
	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=s0PX6xK56OQU49qhD+mNAX9dPan6eSD0cNxy155yH7Q=;
	b=HUNt9w+O21aYoFspmJZxUN51iza26oSOEspUPYIWz5qlV/Pj3E2vdOmYlqQzMYET4fS4P9
	dDREJ6b67JxbCk1cAnshwLOukhjRDn4/iCXXsJueb5MhEYshiLGkkCSqY3CHrzIMZWdrzC
	yPPniVVKRL4M0Uo6DZHmKDtySIJH5oJ22RMyXBaortCZk/MHKnD2H616HIJyrRRYUzlk+T
	YvBkGr9kyO00gWjako8HXd66RjUTc1PI1H1ZsXvEUfPBOrTyVGjNA3g3jsugFmmB2X0LHw
	KzEkl6ezxmHSIWn0Suvu94AOvpzw16Dkkp3Afl6fUu+lHdNSGBvAQP4RG8H5ng==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791303707;
	b=cLQwY+EI5GBEL69752fXhmag/Jp3jvFw/GAwUlsTZcGMRdpRr3SWV2L+yXJxDpQGu/QWT1
	4ri/VheCR0ZlJ3J61QHEITL53eRi6lApbk6VeM7jC19NuyMi0suGbEOrRegQD/lgiioeOC
	NsdD92Por+oim2Vdtjuq35pSwXB7DHDjiflhNyHivg4pC5pEBgp39Js6s0g+hbFwTPcXub
	I+I5KoJRPDFJE2J5SzhWACzHf5KIuQAjsoTDToN6UYEYi4ZcV0SjDX3eJuVimLK+6iZ8mV
	V3f8j2qggpuDyEHetkNCP+X2OzMbeHMsi0si16uOBO/Gy/VhaAKx2KUCfA7k0A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791303707;
	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=s0PX6xK56OQU49qhD+mNAX9dPan6eSD0cNxy155yH7Q=;
	b=WFD73E6qqJUsxlTrFvM9dp/SM7AzD05KxpPWiobGk5pbAlVdi4GpDdYTuYVnCOKolOW7Vo
	eUJ3Fxqrcb9KzpI4d+0KHNHJQtJ+3n9GhD2gY9NpiISeFXJPL0C8TDDEWbyxLIVq2HraO/
	O3zBC0hm/PcrCVEpmxxdu7cYC9cEjjQ2HTZwPFIPNbxrtChtvnKiaZw47TxbCs2MWKldiT
	n5+GXUFVegv6X+dYXu2xN1XT8paYmKcM9QKsUNxZv057BZRslED+UJ6EFl8GF3l/h53FLO
	iaw6cQRTTJTBfHTbQxZcV1eDDRHtquXMTg9z0EARuAMFzh6Vc9Om0nA3bvvOzQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzhNC2ySTz1Ckj
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:21:47 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 27d19
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 16:21:42 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Olivier Certner <olce@FreeBSD.org>
Subject: git: 0bccbb9e9893 - main - sched.h: Fix a typo and remove an extra line
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: olce
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 0bccbb9e98930f55bff5a943c881e460d4f31aec
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 16:21:42 +0000
Message-Id: <6ac52016.27d19.57350bae@gitrepo.freebsd.org>

The branch main has been updated by olce:

URL: https://cgit.FreeBSD.org/src/commit/?id=0bccbb9e98930f55bff5a943c881e460d4f31aec

commit 0bccbb9e98930f55bff5a943c881e460d4f31aec
Author:     Olivier Certner <olce@FreeBSD.org>
AuthorDate: 2026-10-06 16:18:14 +0000
Commit:     Olivier Certner <olce@FreeBSD.org>
CommitDate: 2026-10-06 16:20:56 +0000

    sched.h: Fix a typo and remove an extra line
    
    Fixes:          42490d5cd29d ("sched: New scheduler interface definition scheme")
    Sponsored by:   The FreeBSD Foundation
---
 sys/sys/sched.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/sys/sys/sched.h b/sys/sys/sched.h
index 9d8524ee6464..60afd2344eef 100644
--- a/sys/sys/sched.h
+++ b/sys/sys/sched.h
@@ -86,7 +86,7 @@
  *
  * The former are declared in an abstract manner with some of the SCHED_ITF_*()
  * macros (SCHED_ITF_INTERNAL() being a notable exception), described in detail
- * below.  A fUN() line declares a function, and the final interface function
+ * below.  A FUN() line declares a function, and the final interface function
  * name is the symbol in the third argument prefixed by 'sched_'.  E.g., such
  * lines:
  *
@@ -522,7 +522,6 @@ void sched_instance_select(void);
 
 void ast_scheduler(struct thread *td, int tda);
 
-
 #endif /* _KERNEL */
 
 /* POSIX 1003.1b Process Scheduling */

From nobody Tue Oct  6 16:38:29 2026
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 4hzhlV0zztz4n9dy
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 16:38:30 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzhlV0QBmz4mVW
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:38:30 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791304710;
	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=BBuRffBSN4wmBjteHG0HocO5j7HLwtvBk28/gqaaC0Q=;
	b=sRAevXLpRUXRGRel09gXxYI60uZgR3elYsdDfNk4vyCdH9V9ItKYkWwn9xsRzqRUS0FVeS
	uOm+Bx+zk6jMLug4QFtcdvi3hDuN6/sAj9/qmK7S7gNtSSwZRwrps4k6P9ud6PJ/uIFVZG
	qwykJFRiAQzkQpeWtcDhVdUh8WgF6iLvmGi5+Wb9rzwGzNLGmh+YV+rKSliIEtr9X4U7u0
	ZVv1nQyDv+CAYXKv1izQGVfXmK3iylIe+IWsPkp8JS2Ds6aWsdGaAJxGf0d5b1+OQE/MAX
	C1dZRB0K7Cqq9MWfbu8/HkZsILOVu4rmH9Z1zYje48mfvfmCDv1Sr6GsgR8toQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791304710;
	b=No5TtFZsnt09rEU2IHcpadgz9lz4sFZzk37H1fGOdO8rbdQpFPFkEAQwSWG6/pi9ICcpsh
	wQieiO/cGHoJdVMkmEv5/pUpRynWo2U+//s19/HpcWAfHu9Rxpy+UHoqxUixZ0/FwlowwC
	ivVOXUuG4PBKHWLcfE3oqOY0z4HbN6zNVwEKnfl/CXI6YlTU0F9KF7jdrD3TR0nDQL4/H9
	MJoxm9NDkgQWJ4l8C7Jwm/aOSusN4lIYvmTxnuNJO6yCcZQvNMJuD/eXOooihoIIs0PYwi
	cc6GSM9gaEkgJ7dnu9S+JLO9q2zDys+IpB4u0Wg7AygBzebb7lpSulNnFxVMjA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791304710;
	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=BBuRffBSN4wmBjteHG0HocO5j7HLwtvBk28/gqaaC0Q=;
	b=jLcLkm67/ZKfVZibKn6RNBnWD18VdB9xB9NyRBHJYW5fNmykRZhWstnDNGVbQU0LTH3aCy
	Q4SXL4WPjXW21R1C1RIX+jsyRfXlJOf9cUUJA/qMA4eit+Ggktgk/Kz1mIpe68N4Ky5RKy
	YKgZMmNvKOLbJUptKw80Gy0LvzaUF+rZGsAOVwOlI7EjkLkJu9GG/7YLv1J7RgEociF1Pu
	YO2w4+TzGH8Lk4e9nVbRTnZ5m3VoKrpShq/SS0IaY0PXsbpsNUrb1jmljNB05nQYDqAIgN
	f3HcxBi2ue6lhuvPgiaWUm2rFJYs+Ok0wAy7t6J5uPyeMnt0+TZEpAyrBweYAA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzhlT6c9yz1C9W
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:38:29 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 30155
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 16:38:29 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Dimitry Andric <dim@FreeBSD.org>
Subject: git: afc8c5f9fd73 - stable/15 - Merge commit 80e8c0a59189 from llvm-project (by ShengYi Hung):
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: dim
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: afc8c5f9fd73badc16d8312d86ecfd88ad01be01
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 16:38:29 +0000
Message-Id: <6ac52405.30155.57f9b8ea@gitrepo.freebsd.org>

The branch stable/15 has been updated by dim:

URL: https://cgit.FreeBSD.org/src/commit/?id=afc8c5f9fd73badc16d8312d86ecfd88ad01be01

commit afc8c5f9fd73badc16d8312d86ecfd88ad01be01
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2026-10-01 12:31:42 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2026-10-06 16:34:13 +0000

    Merge commit 80e8c0a59189 from llvm-project (by ShengYi Hung):
    
      [DebugInfo] Fill Column 0 if Line is not found (#227559)
    
      It is possible that user specified line 0 as the start of the line in C
      language (using `# 0`). However, it is rejected by the Lexer as we have
      no line but still carries column information. As a result, we fill
      column to 0 if we cannot find line.
    
      Assisted-by: Claude # Test
      Fixes: #56186
    
    This fixes a fatal error when building the textproc/peg port.
    
    PR:             264853
    MFC after:      3 days
    
    (cherry picked from commit 37c9eba1644b0f9e1b5d130ccff381122f48aebe)
---
 contrib/llvm-project/clang/lib/CodeGen/CGDebugInfo.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/contrib/llvm-project/clang/lib/CodeGen/CGDebugInfo.cpp b/contrib/llvm-project/clang/lib/CodeGen/CGDebugInfo.cpp
index ec28bd259e8e..42e38bfc2872 100644
--- a/contrib/llvm-project/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/contrib/llvm-project/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -4868,9 +4868,12 @@ void CGDebugInfo::CreateLexicalBlock(SourceLocation Loc) {
   llvm::MDNode *Back = nullptr;
   if (!LexicalBlockStack.empty())
     Back = LexicalBlockStack.back().get();
+  // A #line 0 macro carried no line information but still take column
+  // information. This will finally be rejected by the lexer but is legal.
+  unsigned Line = getLineNumber(CurLoc);
+  unsigned Column = Line ? getColumnNumber(CurLoc) : 0;
   LexicalBlockStack.emplace_back(DBuilder.createLexicalBlock(
-      cast<llvm::DIScope>(Back), getOrCreateFile(CurLoc), getLineNumber(CurLoc),
-      getColumnNumber(CurLoc)));
+      cast<llvm::DIScope>(Back), getOrCreateFile(CurLoc), Line, Column));
 }
 
 void CGDebugInfo::AppendAddressSpaceXDeref(

From nobody Tue Oct  6 16:38:31 2026
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 4hzhlW3Kxxz4n9f5
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 16:38: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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzhlW1nX5z4mbp
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:38:31 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791304711;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=45AS1rSLfmzCNS17BlsDZNkQwqEPUQS07lzU+Fumj0Y=;
	b=TQoiwXF8ThMwnz3MYvxB9R0WcN7mG2pguYC3VACGqqp+TF+qE8jlTKd6FFJHRzRqkkCPhr
	Lr+ZGfvLBJyvSEv4F+1vnBl0636Et2TKd5BPIxWIXrkasYS32Brd01wGw/kVAqhpZapnRP
	yKt4KWJoVUmWVe4RYJnu2oOPY9NX3NN5HiJf/AjuoSHqPe5u0iPJV9P8K6dP5jqE8RfEWL
	AM3VFe2LZIN42fnZHqMWZp/eCjHZkz6tURmEANsIXrJeUF2ZzYPs1WbaQVnr4EUz6phR77
	htpYTKL/nk0/hdBFHkuZKJlG66GRieMoXMeunyhIqG+cZIfNQ66IWE2M4a/vWA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791304711;
	b=m5arKNOtc4murJBXHfxjNm1ppe00eqSal2VoDeNqakSwtcxBzswXYhBOrjuvE+WMcNB981
	FvLWATbPkrBXWrVd3iXadnjo3nPLykyEudNiylCpbT57hQqLSJxYmOzXWvxlB3saLrMV5F
	Sb6lrC0oI0D+TzNbNrKeF2LzO1eZWoodYav/CUPEIIk6B22Ss1kBl4TbtmEqmgbzHq8xjf
	W2BBICF1X+23rD8bgO210cAvTSPdsdq5B3k9m/8rYPWjc3GsuivR/fBnCq6vWW7+jie/Dk
	Li7/xHbVqan66DC1RkwK3D7WWqx3TfTLY6bFaE7rnza4qgESldL1PBpTW/zD8A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791304711;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=45AS1rSLfmzCNS17BlsDZNkQwqEPUQS07lzU+Fumj0Y=;
	b=UJLqGeozRxvjqluIJ4Uyv/TGsAOmhyrfMQDeyOtXbjasolUXzTl2cjMj03eJD4T0fAXKsj
	ijlMhaFo3Khyl+CKtMHomX5inGmO3wUHtD+5P0PsN9dI8XhCX0WDipAs9JQ3BFSHEJjH1g
	LX7Je6zE7TUW4hA2vS1xHhDC/1xl3aiflIQ5zcr9yzlsz9drnsMY3MQxzC+gj4RvFEiQ/c
	ZwAwxrYMtZ0ktfT3KST4lIAXrF+TnDuKXb+J0/QQ6m5Qog9OGcaGgrUPpRnBcLmg85FXDJ
	jFjuEzuK+CiW/D7NoAkUUX5ueZl/aR2Wv0KSDX7xwQAYA81sf1h+xP/b4OLumQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzhlW0MbtzDn3
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:38:31 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 30fa9
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 16:38:31 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Cc: Xiaoqiang Zhao <zhaoxiaoqiang007@gmail.com>
From: Dimitry Andric <dim@FreeBSD.org>
Subject: git: 8b754816e803 - stable/15 - llvm: add LoongArch target support, not enabled by default
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: dim
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 8b754816e8032ceac791a9cfd5b6b9f589d81755
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 16:38:31 +0000
Message-Id: <6ac52407.30fa9.7764f8fa@gitrepo.freebsd.org>

The branch stable/15 has been updated by dim:

URL: https://cgit.FreeBSD.org/src/commit/?id=8b754816e8032ceac791a9cfd5b6b9f589d81755

commit 8b754816e8032ceac791a9cfd5b6b9f589d81755
Author:     Xiaoqiang Zhao <zhaoxiaoqiang007@gmail.com>
AuthorDate: 2026-09-28 15:14:09 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2026-10-06 16:37:45 +0000

    llvm: add LoongArch target support, not enabled by default
    
    Note there is ongoing work to add LoongArch support to the base system,
    but having target support in llvm is an essential component.
    
    This must be explicitly enabled using WITH_LLVM_TARGET_LOONGARCH.
    
    Reviewed by:    dim
    MFC after:      1 week
    Differential Revision: https://reviews.freebsd.org/D59899
    
    (cherry picked from commit 2f49e40a684a4bffd8e368a6878384ec4f735ea8)
---
 lib/clang/include/llvm/Config/AsmParsers.def      |  3 ++
 lib/clang/include/llvm/Config/AsmPrinters.def     |  3 ++
 lib/clang/include/llvm/Config/Disassemblers.def   |  3 ++
 lib/clang/include/llvm/Config/Targets.def         |  3 ++
 lib/clang/libllvm/Makefile                        | 55 ++++++++++++++++++++---
 lib/clang/llvm.build.mk                           |  6 +++
 share/man/man5/src.conf.5                         |  7 ++-
 share/mk/src.opts.mk                              |  2 +-
 tools/build/options/WITHOUT_LLVM_TARGET_BPF       |  1 +
 tools/build/options/WITHOUT_LLVM_TARGET_LOONGARCH |  1 +
 tools/build/options/WITH_LLVM_TARGET_BPF          |  3 --
 tools/build/options/WITH_LLVM_TARGET_LOONGARCH    |  1 +
 12 files changed, 74 insertions(+), 14 deletions(-)

diff --git a/lib/clang/include/llvm/Config/AsmParsers.def b/lib/clang/include/llvm/Config/AsmParsers.def
index 8cf3ffd6b0d4..a10e12bb10c7 100644
--- a/lib/clang/include/llvm/Config/AsmParsers.def
+++ b/lib/clang/include/llvm/Config/AsmParsers.def
@@ -33,6 +33,9 @@ LLVM_ASM_PARSER(ARM)
 #ifdef LLVM_TARGET_ENABLE_BPF
 LLVM_ASM_PARSER(BPF)
 #endif
+#ifdef LLVM_TARGET_ENABLE_LOONGARCH
+LLVM_ASM_PARSER(LoongArch)
+#endif
 #ifdef LLVM_TARGET_ENABLE_POWERPC
 LLVM_ASM_PARSER(PowerPC)
 #endif
diff --git a/lib/clang/include/llvm/Config/AsmPrinters.def b/lib/clang/include/llvm/Config/AsmPrinters.def
index b88e60ada874..2f45fe174db7 100644
--- a/lib/clang/include/llvm/Config/AsmPrinters.def
+++ b/lib/clang/include/llvm/Config/AsmPrinters.def
@@ -33,6 +33,9 @@ LLVM_ASM_PRINTER(ARM)
 #ifdef LLVM_TARGET_ENABLE_BPF
 LLVM_ASM_PRINTER(BPF)
 #endif
+#ifdef LLVM_TARGET_ENABLE_LOONGARCH
+LLVM_ASM_PRINTER(LoongArch)
+#endif
 #ifdef LLVM_TARGET_ENABLE_POWERPC
 LLVM_ASM_PRINTER(PowerPC)
 #endif
diff --git a/lib/clang/include/llvm/Config/Disassemblers.def b/lib/clang/include/llvm/Config/Disassemblers.def
index 72c0dcab0ab3..2530e01e635f 100644
--- a/lib/clang/include/llvm/Config/Disassemblers.def
+++ b/lib/clang/include/llvm/Config/Disassemblers.def
@@ -33,6 +33,9 @@ LLVM_DISASSEMBLER(ARM)
 #ifdef LLVM_TARGET_ENABLE_BPF
 LLVM_DISASSEMBLER(BPF)
 #endif
+#ifdef LLVM_TARGET_ENABLE_LOONGARCH
+LLVM_DISASSEMBLER(LoongArch)
+#endif
 #ifdef LLVM_TARGET_ENABLE_POWERPC
 LLVM_DISASSEMBLER(PowerPC)
 #endif
diff --git a/lib/clang/include/llvm/Config/Targets.def b/lib/clang/include/llvm/Config/Targets.def
index 725efe253ced..70ef796f5d0a 100644
--- a/lib/clang/include/llvm/Config/Targets.def
+++ b/lib/clang/include/llvm/Config/Targets.def
@@ -32,6 +32,9 @@ LLVM_TARGET(ARM)
 #ifdef LLVM_TARGET_ENABLE_BPF
 LLVM_TARGET(BPF)
 #endif
+#ifdef LLVM_TARGET_ENABLE_LOONGARCH
+LLVM_TARGET(LoongArch)
+#endif
 #ifdef LLVM_TARGET_ENABLE_POWERPC
 LLVM_TARGET(PowerPC)
 #endif
diff --git a/lib/clang/libllvm/Makefile b/lib/clang/libllvm/Makefile
index e7c146d9c0bf..3553aa44d2b2 100644
--- a/lib/clang/libllvm/Makefile
+++ b/lib/clang/libllvm/Makefile
@@ -23,14 +23,15 @@ CFLAGS+=	-I${.OBJDIR}
 CFLAGS+=	-I${SRCTOP}/sys/contrib/zstd/lib
 
 .if ${MK_LLVM_TARGET_AARCH64} == "no" && ${MK_LLVM_TARGET_ARM} == "no" && \
-    ${MK_LLVM_TARGET_BPF} == "no" && ${MK_LLVM_TARGET_POWERPC} == "no" && \
-    ${MK_LLVM_TARGET_RISCV} == "no" && ${MK_LLVM_TARGET_X86} == "no"
+    ${MK_LLVM_TARGET_BPF} == "no" && ${MK_LLVM_TARGET_LOONGARCH} == "no" && \
+    ${MK_LLVM_TARGET_POWERPC} == "no" && ${MK_LLVM_TARGET_RISCV} == "no" && \
+    ${MK_LLVM_TARGET_X86} == "no"
 .error Please enable at least one of: MK_LLVM_TARGET_AARCH64,\
- MK_LLVM_TARGET_ARM, MK_LLVM_TARGET_BPF, MK_LLVM_TARGET_POWERPC,\
- MK_LLVM_TARGET_RISCV, or MK_LLVM_TARGET_X86
+ MK_LLVM_TARGET_ARM, MK_LLVM_TARGET_BPF, MK_LLVM_TARGET_LOONGARCH, \
+ MK_LLVM_TARGET_POWERPC, MK_LLVM_TARGET_RISCV, or MK_LLVM_TARGET_X86
 .endif
 
-.for arch in AArch64 ARM BPF PowerPC RISCV X86
+.for arch in AArch64 ARM BPF LoongArch PowerPC RISCV X86
 . if ${MK_LLVM_TARGET_${arch:tu}} != "no"
 CFLAGS+=	-I${LLVM_SRCS}/lib/Target/${arch}
 . endif
@@ -1754,6 +1755,36 @@ SRCS_MIN+=	Target/X86/X86VZeroUpper.cpp
 SRCS_MIN+=	Target/X86/X86WinEHState.cpp
 SRCS_MIN+=	Target/X86/X86WinEHUnwindV2.cpp
 .endif # MK_LLVM_TARGET_X86
+.if ${MK_LLVM_TARGET_LOONGARCH} != "no"
+SRCS_MIN+=	Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
+SRCS_MIN+=	Target/LoongArch/Disassembler/LoongArchDisassembler.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchAsmPrinter.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchDeadRegisterDefinitions.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchExpandAtomicPseudoInsts.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchExpandPseudoInsts.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchFrameLowering.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchISelDAGToDAG.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchISelLowering.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchInstrInfo.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchMCInstLower.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchMergeBaseOffset.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchOptWInstrs.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchRegisterInfo.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchSubtarget.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchTargetMachine.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchTargetTransformInfo.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchBaseInfo.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchELFObjectWriter.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchELFStreamer.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchInstPrinter.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchMCAsmInfo.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchMCCodeEmitter.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchMCTargetDesc.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchMatInt.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchTargetStreamer.cpp
+SRCS_MIN+=	Target/LoongArch/TargetInfo/LoongArchTargetInfo.cpp
+.endif # MK_LLVM_TARGET_LOONGARCH
 SRCS_MIN+=	TargetParser/AArch64TargetParser.cpp
 SRCS_MIN+=	TargetParser/ARMTargetParser.cpp
 SRCS_MIN+=	TargetParser/ARMTargetParserCommon.cpp
@@ -2268,7 +2299,8 @@ beforebuild:
 
 # Note: some rules are superfluous, not every combination is valid.
 .for arch in \
-	AArch64/AArch64 ARM/ARM BPF/BPF PowerPC/PPC RISCV/RISCV X86/X86
+	AArch64/AArch64 ARM/ARM BPF/BPF LoongArch/LoongArch PowerPC/PPC \
+	RISCV/RISCV X86/X86
 . for hdr in \
 	AsmMatcher/-gen-asm-matcher \
 	AsmWriter/-gen-asm-writer \
@@ -2415,6 +2447,17 @@ TGHDRS+=	X86GenRegisterBank.inc
 TGHDRS+=	X86GenRegisterInfo.inc
 TGHDRS+=	X86GenSubtargetInfo.inc
 .endif # MK_LLVM_TARGET_X86
+.if ${MK_LLVM_TARGET_LOONGARCH} != "no"
+TGHDRS+=	LoongArchGenAsmMatcher.inc
+TGHDRS+=	LoongArchGenAsmWriter.inc
+TGHDRS+=	LoongArchGenDAGISel.inc
+TGHDRS+=	LoongArchGenDisassemblerTables.inc
+TGHDRS+=	LoongArchGenInstrInfo.inc
+TGHDRS+=	LoongArchGenMCCodeEmitter.inc
+TGHDRS+=	LoongArchGenMCPseudoLowering.inc
+TGHDRS+=	LoongArchGenRegisterInfo.inc
+TGHDRS+=	LoongArchGenSubtargetInfo.inc
+.endif # MK_LLVM_TARGET_LOONGARCH
 
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
diff --git a/lib/clang/llvm.build.mk b/lib/clang/llvm.build.mk
index b975b3c964a2..a1d39f6d5cb7 100644
--- a/lib/clang/llvm.build.mk
+++ b/lib/clang/llvm.build.mk
@@ -83,6 +83,12 @@ CFLAGS+=	-DLLVM_TARGET_ENABLE_RISCV
 LLVM_NATIVE_ARCH=	RISCV
 . endif
 .endif
+.if ${MK_LLVM_TARGET_LOONGARCH} != "no"
+CFLAGS+=	-DLLVM_TARGET_ENABLE_LOONGARCH
+. if ${MACHINE_CPUARCH} == "loongarch"
+LLVM_NATIVE_ARCH=	LoongArch
+. endif
+.endif
 .if ${MK_LLVM_TARGET_X86} != "no"
 CFLAGS+=	-DLLVM_TARGET_ENABLE_X86
 . if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5
index 18dc3b2f2eac..1bd7f0ca28b4 100644
--- a/share/man/man5/src.conf.5
+++ b/share/man/man5/src.conf.5
@@ -1,5 +1,5 @@
 .\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman.
-.Dd October 1, 2026
+.Dd October 6, 2026
 .Dt SRC.CONF 5
 .Os
 .Sh NAME
@@ -1065,9 +1065,8 @@ The
 option should be used rather than this in most cases.
 .It Va WITH_LLVM_TARGET_BPF
 Build LLVM target support for BPF.
-The
-.Va LLVM_TARGET_ALL
-option should be used rather than this in most cases.
+.It Va WITH_LLVM_TARGET_LOONGARCH
+Build LLVM target support for LoongArch.
 .It Va WITHOUT_LLVM_TARGET_POWERPC
 Do not build LLVM target support for PowerPC.
 The
diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk
index 8e67ced5a9a6..63a1b17ea19f 100644
--- a/share/mk/src.opts.mk
+++ b/share/mk/src.opts.mk
@@ -295,7 +295,7 @@ __DEFAULT_DEPENDENT_OPTIONS+=	LLVM_TARGET_${__llt:${__LLVM_TARGET_FILT}:tu}/LLVM
 .endif
 .endfor
 
-__DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF
+__DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF LLVM_TARGET_LOONGARCH
 
 .include <bsd.compiler.mk>
 
diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_BPF b/tools/build/options/WITHOUT_LLVM_TARGET_BPF
new file mode 100644
index 000000000000..392e930d8008
--- /dev/null
+++ b/tools/build/options/WITHOUT_LLVM_TARGET_BPF
@@ -0,0 +1 @@
+Do not build LLVM target support for BPF.
diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_LOONGARCH b/tools/build/options/WITHOUT_LLVM_TARGET_LOONGARCH
new file mode 100644
index 000000000000..e6d5d8be834f
--- /dev/null
+++ b/tools/build/options/WITHOUT_LLVM_TARGET_LOONGARCH
@@ -0,0 +1 @@
+Do not build LLVM target support for LoongArch.
diff --git a/tools/build/options/WITH_LLVM_TARGET_BPF b/tools/build/options/WITH_LLVM_TARGET_BPF
index 664cc85a52b9..45811be6174d 100644
--- a/tools/build/options/WITH_LLVM_TARGET_BPF
+++ b/tools/build/options/WITH_LLVM_TARGET_BPF
@@ -1,4 +1 @@
 Build LLVM target support for BPF.
-The
-.Va LLVM_TARGET_ALL
-option should be used rather than this in most cases.
diff --git a/tools/build/options/WITH_LLVM_TARGET_LOONGARCH b/tools/build/options/WITH_LLVM_TARGET_LOONGARCH
new file mode 100644
index 000000000000..157b18a9df9a
--- /dev/null
+++ b/tools/build/options/WITH_LLVM_TARGET_LOONGARCH
@@ -0,0 +1 @@
+Build LLVM target support for LoongArch.

From nobody Tue Oct  6 16:38:32 2026
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 4hzhlX41CGz4n9Yb
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 16:38:32 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzhlX25JSz4mbs
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:38:32 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791304712;
	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=nsMJJxOT5Erdhdo9+Mjp0IBoGKS/hMqmfQ67rBPaNbg=;
	b=xaXJWFNDXqlKE5QIf7z2KF8GBAUhrBoiqYTyuDDTJ24nshMYxFA0hHz9d8kAv2tJ48BzAr
	vNK7cUC3zPtbEoqPtlJDKvuTG/v1ZyuQle8KWUwBv1yiPGbQQvWHSVIqJXitzjmYcKS6N0
	9j4czmZ08SxUVFWReIeW93FZtC1ekio3WJCUwZ+GmoCOsll9JkuA3+GIA7dJP0XhIXu9tg
	Nkt/3YgPa8BlxeZWMZCaZd3VY1V/TGvVPLirsK1507hafTV7Ya9MwsmN/dkLudP4wsrbXm
	8BKS6o+6jhsjgPnhs/GA4tKzMOfMpLDQRvMyijLG/6Osqu8kOzba1OVvwPZISA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791304712;
	b=Y3DTgzsIbfK7KZIKM8z6q5mrzmBoOlxElvGBvWbtgF15XqSc6B6Y459CjkSd0SOHHZiNEg
	ctJ575jVfEeoH6WLjqr2piMLS5yF++SrisJa0k/KC1ghp0xYPoa3k+2U5JLCc6Usf6uKPW
	vwp6K2u9KZ529uefXu8pgOxvrbPoYod1JAyFfXHuz9OkLPPltRtkrvln/dZU7RppucFeyN
	H/IfPmvqZcgUsKyY5e0sVclJ5Ucu6wdPOXla+0z4mmmZu2fGg+xJA+lXVGBwiFVvkc+4zn
	htO56XNzoLsec2EvVirg931oP5IprFKwv4H7hjorPzzPU/z86ESb0JrUCRbf/g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791304712;
	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=nsMJJxOT5Erdhdo9+Mjp0IBoGKS/hMqmfQ67rBPaNbg=;
	b=o8zdKCo/UR/ngnuO8c8BnPgCtErUwDddMFWcQIbeKlHu1nfqypqKgeCOBX5MkJKl1yyuY2
	dMf8iJaQtVE/uNdQ/Htgqy6eZ0jXwTRm/8fTspDzXqr5AZ+sV+/gyx5t/ZNXL18CheHd/X
	I8Ohuacl6+uuN3zSKvLU06GymCef2atiyOx2pPKQIOsurC0kqQZsL51wBRs9ZFo9d1p4v0
	hwwI44b2m6x7V9EllwVp+bNVf3UuYowKiLoY9FXxbpp9BTd7uetzudefjXtcWHlERbEmoN
	YG0hilDMC1M6H4AWOCAaGSZq7zQMs26ZQIW+G76pyxoN5mPWgn2F3+cDBw3umg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzhlX19GLz1CmD
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:38:32 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 31840
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 16:38:32 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Dimitry Andric <dim@FreeBSD.org>
Subject: git: 0c409a56237a - stable/15 - Merge commit c4ce37507537 from llvm-project (by ShengYi Hung):
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: dim
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 0c409a56237ae09be7ba491750bbbbdb25ef2e4d
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 16:38:32 +0000
Message-Id: <6ac52408.31840.2e8beebf@gitrepo.freebsd.org>

The branch stable/15 has been updated by dim:

URL: https://cgit.FreeBSD.org/src/commit/?id=0c409a56237ae09be7ba491750bbbbdb25ef2e4d

commit 0c409a56237ae09be7ba491750bbbbdb25ef2e4d
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2026-10-03 11:36:42 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2026-10-06 16:38:03 +0000

    Merge commit c4ce37507537 from llvm-project (by ShengYi Hung):
    
      [Clang][Sema] Create LocalScope for Variable Template (#228280)
    
      A variable template should create its own LocalScope, as it should be
      opaque to other instantiations. This can occur when there are multiple
      instantiations in the same lexical scope. The correct behavior is that
      these instantiations should not be chained together.
    
      Assisted-by: Claude # Test ReleaseNote
      Fixes: #134148
    
    This fixes an assertion while building the devel/glaze port.
    
    PR:             276265
    MFC after:      3 days
    
    (cherry picked from commit fe9c7137871ee0b5c48d4c38b87d80f72e73379e)
---
 contrib/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/contrib/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/contrib/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
index d2b87f2702a9..a9755bcc73fe 100644
--- a/contrib/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/contrib/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -5901,6 +5901,10 @@ VarTemplateSpecializationDecl *Sema::BuildVarTemplateInstantiation(
   if (Inst.isInvalid())
     return nullptr;
 
+  // A variable template specialization is never a local declaration, so it
+  // must not see the locals of whatever instantiation we are currently in.
+  LocalInstantiationScope Local(*this);
+
   // Instantiate the first declaration of the variable template: for a partial
   // specialization of a static data member template, the first declaration may
   // or may not be the declaration in the class; if it's in the class, we want

From nobody Tue Oct  6 16:38:46 2026
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 4hzhlp5x64z4n9c6
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 16:38:46 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzhlp3VfDz4n70
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:38:46 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791304726;
	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=uPp4Y1ZlbwzPV8VGrrNlSkLCJIdDuhvsi+NFLqXCWDo=;
	b=CMSfUK4tBVrS2+GzhyJ0PTq8BodufMBjvTQHVRJKt4IajN1pYiS002NeqIqM5c1GAGAD8m
	y4tCM5Q9UbESOtrTbYUSFSo290FHg5k3EVCXsg7PTqBiIUXrnLzNQkOO9MQOyf/8Wuzlf5
	OxkHS3IwyDKE7bZJQhFnT7SIVlmO9NQVRlqXfhJgjV6Rvttarw+vNpb+30E7wPXezu/Dpm
	tAzcb6itashjUaN/RHOqCZhQTREdx45bCqwFkaFMjVGqK/G9Z+bobLHxIru4BmolBjmFKy
	l2ZkioOmxFY3BwKUrGSSzm9PuNvJmBDLEuUx5FS9khVnFBH9eXjAMBXPU2TBjQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791304726;
	b=bXx2OBOBS8UWmbq7ay+ArH5ULcQpG9L73VUtgYCS/gvLsHwvVyQ+TobLKW3qmLHYfcEqUt
	DLSiN6qJMowyG+2IKzWvwIXOwuoJoy9Q7xnspLjOfgqQ3RCAONbKQGmvsGEItd4B0A5uBH
	jUO6WSQ8rbQEIfKwQbLsG/uU9KPfdOlCW+h6CSo+PNkRrTpT2AJa6t68cfxbXhsvWG75r+
	4jKztMp7aTSNwgF3aDN/+x6cvVhqx7vg7GON0OPud2CfwzV+4AgKcLs2UsXF/0tjrxxg2A
	XM6dHPmU+cKBq1hTkwgLa7PTgH/9MHyl/vkNKlRP1Ksyx4CPC4R+0e8RBwIsuQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791304726;
	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=uPp4Y1ZlbwzPV8VGrrNlSkLCJIdDuhvsi+NFLqXCWDo=;
	b=ZJyzU1eBKw5bYKBE996OfJQ+wGYmUj9lvP3+va3rhRaZ5uD3GomlvS0+20Y4HnImKoubYg
	puvhuRxykvdIPw7T2aewcOhiz6waAOg0pzkK1GuQqmLHfUUvEsP3ocLSd7CEbxUY8c2kmI
	GfrkzMcD/JfUUUnb+bOdn24QmOgOxQD+sO/q9v6xc8xoD5mA6pYlp6tpcxiS5FWyiCrtzX
	erzH5UnfV8QPwOq6Up8S/XI5kXz7qkS/ojCk2cZH/UtcLeW1e0Uy68xo2zFsrdcfxQnJTy
	v2/x7C/h3PQ0WmD0uejYO/6o18Ti1Dp2YDMpIE8qw2CYXcOGEyKaXIt0/N370Q==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzhlp1XNmzDn5
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:38:46 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 30fae
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 16:38:46 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Dimitry Andric <dim@FreeBSD.org>
Subject: git: 3108ab674752 - stable/14 - Merge commit 80e8c0a59189 from llvm-project (by ShengYi Hung):
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: dim
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/14
X-Git-Reftype: branch
X-Git-Commit: 3108ab6747524117953d0f9fba511ab4d2bcc1e2
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 16:38:46 +0000
Message-Id: <6ac52416.30fae.43292c92@gitrepo.freebsd.org>

The branch stable/14 has been updated by dim:

URL: https://cgit.FreeBSD.org/src/commit/?id=3108ab6747524117953d0f9fba511ab4d2bcc1e2

commit 3108ab6747524117953d0f9fba511ab4d2bcc1e2
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2026-10-01 12:31:42 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2026-10-06 16:34:23 +0000

    Merge commit 80e8c0a59189 from llvm-project (by ShengYi Hung):
    
      [DebugInfo] Fill Column 0 if Line is not found (#227559)
    
      It is possible that user specified line 0 as the start of the line in C
      language (using `# 0`). However, it is rejected by the Lexer as we have
      no line but still carries column information. As a result, we fill
      column to 0 if we cannot find line.
    
      Assisted-by: Claude # Test
      Fixes: #56186
    
    This fixes a fatal error when building the textproc/peg port.
    
    PR:             264853
    MFC after:      3 days
    
    (cherry picked from commit 37c9eba1644b0f9e1b5d130ccff381122f48aebe)
---
 contrib/llvm-project/clang/lib/CodeGen/CGDebugInfo.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/contrib/llvm-project/clang/lib/CodeGen/CGDebugInfo.cpp b/contrib/llvm-project/clang/lib/CodeGen/CGDebugInfo.cpp
index ec28bd259e8e..42e38bfc2872 100644
--- a/contrib/llvm-project/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/contrib/llvm-project/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -4868,9 +4868,12 @@ void CGDebugInfo::CreateLexicalBlock(SourceLocation Loc) {
   llvm::MDNode *Back = nullptr;
   if (!LexicalBlockStack.empty())
     Back = LexicalBlockStack.back().get();
+  // A #line 0 macro carried no line information but still take column
+  // information. This will finally be rejected by the lexer but is legal.
+  unsigned Line = getLineNumber(CurLoc);
+  unsigned Column = Line ? getColumnNumber(CurLoc) : 0;
   LexicalBlockStack.emplace_back(DBuilder.createLexicalBlock(
-      cast<llvm::DIScope>(Back), getOrCreateFile(CurLoc), getLineNumber(CurLoc),
-      getColumnNumber(CurLoc)));
+      cast<llvm::DIScope>(Back), getOrCreateFile(CurLoc), Line, Column));
 }
 
 void CGDebugInfo::AppendAddressSpaceXDeref(

From nobody Tue Oct  6 16:38:47 2026
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 4hzhlr026rz4n9SF
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 16:38:48 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzhlq30fyz4n32
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:38:47 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791304727;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=YTODjUFq4f6npCEyAV6z3dGxefYz6DGfX4MsoW/LQ5s=;
	b=qOO6wIGN4UYMwr05NnqGrBBwaCTXSp4o+gUa0KbC4JzPD+5EcZ2IEZ12KwfNx+QUEFOBrH
	4g+2CaKw6JCqk/LUkQgb60iiLCUUd6iISBjImy9+Hg5zkw6AONjTllcHRKoHRtbPluxf58
	woSyqxZRf9g3AbngTZ6Sxj9wf5rMivT4t1kf6FEOwt4/iDIbhEVyHGtPv7Rzaq/njQOjCq
	7AoMmzHvJRkppmBPY9Gm3UyW5tmRAYsI72lJX5Tv/cJYEiNje5RRmU+VgUEfIEzxr7av1+
	br2Wr4/tacfeb/fOrDyibgXczFXdzblprCOdYGX/lteIZ9+z+nUh0X9yYtKRzA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791304727;
	b=DN3JjeF68w+xljkUo4iiq4I0FYO8/Xin1iv2VxNBWB9o7CTSOSLilB7uRhiTLR9hJeeRb3
	YHyU8ENv/ZvG8DTRlvP0M6t+5jhRcIBa149l3ApNwWB7SY0vPPPTZODxjXKevOAEY8YStg
	5OYNT54x9yfGISqXEgIJfZIzsYZfN6qtGznvz3kugX7u/RuBFIgaQW2S/XtW++mLyzoAWH
	J+YqSX0p+o2LYTCeb/pjDAA2YRUrRn9ii48KnkbkHT0R/EliULgHLdrtLq31/tborT5mgy
	pabbdeymzXJDa64dZ67q1JIfPo83XKci36y+esSpQZk2xfXLH/8EqayUywZoDg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791304727;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=YTODjUFq4f6npCEyAV6z3dGxefYz6DGfX4MsoW/LQ5s=;
	b=B58JQETeSFh37c2OiyC7ajnbtqg56PnKjr2Yy1SnjRUUTEYRKvgXQvLTU9ACvjXSjd6tsX
	QWAcrDKC4JNXske0XIO1z/hlxbMBTQDX9PQNmIUYas0DfPQeYiEYnJP7QNQvefMLT2P26B
	C3bmU0dysw46kSUiGmcSoB+hoAYRxJQID8BJSdsraJ5sRn6ylHTzb0c4PXk1zMkDERbPqM
	+B3LejhzPeaeKFf878meOQg7u+JvRWY1FwPpduKaXUKLV2wBRe0LR+G4Nhag1xvMbE5D6H
	MON6jHV1stBDUOB2qAzJkrwrwhBX/zcvLgt9/YnNGIjwL0XenFfErUw2zqX17w==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzhlq1xtSz1CxQ
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:38:47 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 311ed
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 16:38:47 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Cc: Xiaoqiang Zhao <zhaoxiaoqiang007@gmail.com>
From: Dimitry Andric <dim@FreeBSD.org>
Subject: git: bceab8be408d - stable/14 - llvm: add LoongArch target support, not enabled by default
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: dim
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/14
X-Git-Reftype: branch
X-Git-Commit: bceab8be408d7d27637d982fecdafa916fef0f7f
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 16:38:47 +0000
Message-Id: <6ac52417.311ed.dacf6d0@gitrepo.freebsd.org>

The branch stable/14 has been updated by dim:

URL: https://cgit.FreeBSD.org/src/commit/?id=bceab8be408d7d27637d982fecdafa916fef0f7f

commit bceab8be408d7d27637d982fecdafa916fef0f7f
Author:     Xiaoqiang Zhao <zhaoxiaoqiang007@gmail.com>
AuthorDate: 2026-09-28 15:14:09 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2026-10-06 16:37:49 +0000

    llvm: add LoongArch target support, not enabled by default
    
    Note there is ongoing work to add LoongArch support to the base system,
    but having target support in llvm is an essential component.
    
    This must be explicitly enabled using WITH_LLVM_TARGET_LOONGARCH.
    
    Reviewed by:    dim
    MFC after:      1 week
    Differential Revision: https://reviews.freebsd.org/D59899
    
    (cherry picked from commit 2f49e40a684a4bffd8e368a6878384ec4f735ea8)
---
 lib/clang/include/llvm/Config/AsmParsers.def      |  3 ++
 lib/clang/include/llvm/Config/AsmPrinters.def     |  3 ++
 lib/clang/include/llvm/Config/Disassemblers.def   |  3 ++
 lib/clang/include/llvm/Config/Targets.def         |  3 ++
 lib/clang/libllvm/Makefile                        | 55 ++++++++++++++++++++---
 lib/clang/llvm.build.mk                           |  6 +++
 share/man/man5/src.conf.5                         |  7 ++-
 share/mk/src.opts.mk                              |  2 +-
 tools/build/options/WITHOUT_LLVM_TARGET_BPF       |  1 +
 tools/build/options/WITHOUT_LLVM_TARGET_LOONGARCH |  1 +
 tools/build/options/WITH_LLVM_TARGET_BPF          |  3 --
 tools/build/options/WITH_LLVM_TARGET_LOONGARCH    |  1 +
 12 files changed, 74 insertions(+), 14 deletions(-)

diff --git a/lib/clang/include/llvm/Config/AsmParsers.def b/lib/clang/include/llvm/Config/AsmParsers.def
index 8cf3ffd6b0d4..a10e12bb10c7 100644
--- a/lib/clang/include/llvm/Config/AsmParsers.def
+++ b/lib/clang/include/llvm/Config/AsmParsers.def
@@ -33,6 +33,9 @@ LLVM_ASM_PARSER(ARM)
 #ifdef LLVM_TARGET_ENABLE_BPF
 LLVM_ASM_PARSER(BPF)
 #endif
+#ifdef LLVM_TARGET_ENABLE_LOONGARCH
+LLVM_ASM_PARSER(LoongArch)
+#endif
 #ifdef LLVM_TARGET_ENABLE_POWERPC
 LLVM_ASM_PARSER(PowerPC)
 #endif
diff --git a/lib/clang/include/llvm/Config/AsmPrinters.def b/lib/clang/include/llvm/Config/AsmPrinters.def
index b88e60ada874..2f45fe174db7 100644
--- a/lib/clang/include/llvm/Config/AsmPrinters.def
+++ b/lib/clang/include/llvm/Config/AsmPrinters.def
@@ -33,6 +33,9 @@ LLVM_ASM_PRINTER(ARM)
 #ifdef LLVM_TARGET_ENABLE_BPF
 LLVM_ASM_PRINTER(BPF)
 #endif
+#ifdef LLVM_TARGET_ENABLE_LOONGARCH
+LLVM_ASM_PRINTER(LoongArch)
+#endif
 #ifdef LLVM_TARGET_ENABLE_POWERPC
 LLVM_ASM_PRINTER(PowerPC)
 #endif
diff --git a/lib/clang/include/llvm/Config/Disassemblers.def b/lib/clang/include/llvm/Config/Disassemblers.def
index 72c0dcab0ab3..2530e01e635f 100644
--- a/lib/clang/include/llvm/Config/Disassemblers.def
+++ b/lib/clang/include/llvm/Config/Disassemblers.def
@@ -33,6 +33,9 @@ LLVM_DISASSEMBLER(ARM)
 #ifdef LLVM_TARGET_ENABLE_BPF
 LLVM_DISASSEMBLER(BPF)
 #endif
+#ifdef LLVM_TARGET_ENABLE_LOONGARCH
+LLVM_DISASSEMBLER(LoongArch)
+#endif
 #ifdef LLVM_TARGET_ENABLE_POWERPC
 LLVM_DISASSEMBLER(PowerPC)
 #endif
diff --git a/lib/clang/include/llvm/Config/Targets.def b/lib/clang/include/llvm/Config/Targets.def
index 725efe253ced..70ef796f5d0a 100644
--- a/lib/clang/include/llvm/Config/Targets.def
+++ b/lib/clang/include/llvm/Config/Targets.def
@@ -32,6 +32,9 @@ LLVM_TARGET(ARM)
 #ifdef LLVM_TARGET_ENABLE_BPF
 LLVM_TARGET(BPF)
 #endif
+#ifdef LLVM_TARGET_ENABLE_LOONGARCH
+LLVM_TARGET(LoongArch)
+#endif
 #ifdef LLVM_TARGET_ENABLE_POWERPC
 LLVM_TARGET(PowerPC)
 #endif
diff --git a/lib/clang/libllvm/Makefile b/lib/clang/libllvm/Makefile
index e7c146d9c0bf..3553aa44d2b2 100644
--- a/lib/clang/libllvm/Makefile
+++ b/lib/clang/libllvm/Makefile
@@ -23,14 +23,15 @@ CFLAGS+=	-I${.OBJDIR}
 CFLAGS+=	-I${SRCTOP}/sys/contrib/zstd/lib
 
 .if ${MK_LLVM_TARGET_AARCH64} == "no" && ${MK_LLVM_TARGET_ARM} == "no" && \
-    ${MK_LLVM_TARGET_BPF} == "no" && ${MK_LLVM_TARGET_POWERPC} == "no" && \
-    ${MK_LLVM_TARGET_RISCV} == "no" && ${MK_LLVM_TARGET_X86} == "no"
+    ${MK_LLVM_TARGET_BPF} == "no" && ${MK_LLVM_TARGET_LOONGARCH} == "no" && \
+    ${MK_LLVM_TARGET_POWERPC} == "no" && ${MK_LLVM_TARGET_RISCV} == "no" && \
+    ${MK_LLVM_TARGET_X86} == "no"
 .error Please enable at least one of: MK_LLVM_TARGET_AARCH64,\
- MK_LLVM_TARGET_ARM, MK_LLVM_TARGET_BPF, MK_LLVM_TARGET_POWERPC,\
- MK_LLVM_TARGET_RISCV, or MK_LLVM_TARGET_X86
+ MK_LLVM_TARGET_ARM, MK_LLVM_TARGET_BPF, MK_LLVM_TARGET_LOONGARCH, \
+ MK_LLVM_TARGET_POWERPC, MK_LLVM_TARGET_RISCV, or MK_LLVM_TARGET_X86
 .endif
 
-.for arch in AArch64 ARM BPF PowerPC RISCV X86
+.for arch in AArch64 ARM BPF LoongArch PowerPC RISCV X86
 . if ${MK_LLVM_TARGET_${arch:tu}} != "no"
 CFLAGS+=	-I${LLVM_SRCS}/lib/Target/${arch}
 . endif
@@ -1754,6 +1755,36 @@ SRCS_MIN+=	Target/X86/X86VZeroUpper.cpp
 SRCS_MIN+=	Target/X86/X86WinEHState.cpp
 SRCS_MIN+=	Target/X86/X86WinEHUnwindV2.cpp
 .endif # MK_LLVM_TARGET_X86
+.if ${MK_LLVM_TARGET_LOONGARCH} != "no"
+SRCS_MIN+=	Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
+SRCS_MIN+=	Target/LoongArch/Disassembler/LoongArchDisassembler.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchAsmPrinter.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchDeadRegisterDefinitions.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchExpandAtomicPseudoInsts.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchExpandPseudoInsts.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchFrameLowering.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchISelDAGToDAG.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchISelLowering.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchInstrInfo.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchMCInstLower.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchMergeBaseOffset.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchOptWInstrs.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchRegisterInfo.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchSubtarget.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchTargetMachine.cpp
+SRCS_MIN+=	Target/LoongArch/LoongArchTargetTransformInfo.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchBaseInfo.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchELFObjectWriter.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchELFStreamer.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchInstPrinter.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchMCAsmInfo.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchMCCodeEmitter.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchMCTargetDesc.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchMatInt.cpp
+SRCS_MIN+=	Target/LoongArch/MCTargetDesc/LoongArchTargetStreamer.cpp
+SRCS_MIN+=	Target/LoongArch/TargetInfo/LoongArchTargetInfo.cpp
+.endif # MK_LLVM_TARGET_LOONGARCH
 SRCS_MIN+=	TargetParser/AArch64TargetParser.cpp
 SRCS_MIN+=	TargetParser/ARMTargetParser.cpp
 SRCS_MIN+=	TargetParser/ARMTargetParserCommon.cpp
@@ -2268,7 +2299,8 @@ beforebuild:
 
 # Note: some rules are superfluous, not every combination is valid.
 .for arch in \
-	AArch64/AArch64 ARM/ARM BPF/BPF PowerPC/PPC RISCV/RISCV X86/X86
+	AArch64/AArch64 ARM/ARM BPF/BPF LoongArch/LoongArch PowerPC/PPC \
+	RISCV/RISCV X86/X86
 . for hdr in \
 	AsmMatcher/-gen-asm-matcher \
 	AsmWriter/-gen-asm-writer \
@@ -2415,6 +2447,17 @@ TGHDRS+=	X86GenRegisterBank.inc
 TGHDRS+=	X86GenRegisterInfo.inc
 TGHDRS+=	X86GenSubtargetInfo.inc
 .endif # MK_LLVM_TARGET_X86
+.if ${MK_LLVM_TARGET_LOONGARCH} != "no"
+TGHDRS+=	LoongArchGenAsmMatcher.inc
+TGHDRS+=	LoongArchGenAsmWriter.inc
+TGHDRS+=	LoongArchGenDAGISel.inc
+TGHDRS+=	LoongArchGenDisassemblerTables.inc
+TGHDRS+=	LoongArchGenInstrInfo.inc
+TGHDRS+=	LoongArchGenMCCodeEmitter.inc
+TGHDRS+=	LoongArchGenMCPseudoLowering.inc
+TGHDRS+=	LoongArchGenRegisterInfo.inc
+TGHDRS+=	LoongArchGenSubtargetInfo.inc
+.endif # MK_LLVM_TARGET_LOONGARCH
 
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
diff --git a/lib/clang/llvm.build.mk b/lib/clang/llvm.build.mk
index e8139908935e..e06f9a2c29f6 100644
--- a/lib/clang/llvm.build.mk
+++ b/lib/clang/llvm.build.mk
@@ -83,6 +83,12 @@ CFLAGS+=	-DLLVM_TARGET_ENABLE_RISCV
 LLVM_NATIVE_ARCH=	RISCV
 . endif
 .endif
+.if ${MK_LLVM_TARGET_LOONGARCH} != "no"
+CFLAGS+=	-DLLVM_TARGET_ENABLE_LOONGARCH
+. if ${MACHINE_CPUARCH} == "loongarch"
+LLVM_NATIVE_ARCH=	LoongArch
+. endif
+.endif
 .if ${MK_LLVM_TARGET_X86} != "no"
 CFLAGS+=	-DLLVM_TARGET_ENABLE_X86
 . if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5
index 91dc67bd5b89..387278020a8b 100644
--- a/share/man/man5/src.conf.5
+++ b/share/man/man5/src.conf.5
@@ -1,5 +1,5 @@
 .\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman.
-.Dd October 1, 2026
+.Dd October 6, 2026
 .Dt SRC.CONF 5
 .Os
 .Sh NAME
@@ -1021,9 +1021,8 @@ The
 option should be used rather than this in most cases.
 .It Va WITH_LLVM_TARGET_BPF
 Build LLVM target support for BPF.
-The
-.Va LLVM_TARGET_ALL
-option should be used rather than this in most cases.
+.It Va WITH_LLVM_TARGET_LOONGARCH
+Build LLVM target support for LoongArch.
 .It Va WITHOUT_LLVM_TARGET_POWERPC
 Do not build LLVM target support for PowerPC.
 The
diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk
index 3afd2df4dbff..30ff25ecb1e6 100644
--- a/share/mk/src.opts.mk
+++ b/share/mk/src.opts.mk
@@ -288,7 +288,7 @@ __DEFAULT_DEPENDENT_OPTIONS+=	LLVM_TARGET_${__llt:${__LLVM_TARGET_FILT}:tu}/LLVM
 .endif
 .endfor
 
-__DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF
+__DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF LLVM_TARGET_LOONGARCH
 
 .include <bsd.compiler.mk>
 
diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_BPF b/tools/build/options/WITHOUT_LLVM_TARGET_BPF
new file mode 100644
index 000000000000..392e930d8008
--- /dev/null
+++ b/tools/build/options/WITHOUT_LLVM_TARGET_BPF
@@ -0,0 +1 @@
+Do not build LLVM target support for BPF.
diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_LOONGARCH b/tools/build/options/WITHOUT_LLVM_TARGET_LOONGARCH
new file mode 100644
index 000000000000..e6d5d8be834f
--- /dev/null
+++ b/tools/build/options/WITHOUT_LLVM_TARGET_LOONGARCH
@@ -0,0 +1 @@
+Do not build LLVM target support for LoongArch.
diff --git a/tools/build/options/WITH_LLVM_TARGET_BPF b/tools/build/options/WITH_LLVM_TARGET_BPF
index 664cc85a52b9..45811be6174d 100644
--- a/tools/build/options/WITH_LLVM_TARGET_BPF
+++ b/tools/build/options/WITH_LLVM_TARGET_BPF
@@ -1,4 +1 @@
 Build LLVM target support for BPF.
-The
-.Va LLVM_TARGET_ALL
-option should be used rather than this in most cases.
diff --git a/tools/build/options/WITH_LLVM_TARGET_LOONGARCH b/tools/build/options/WITH_LLVM_TARGET_LOONGARCH
new file mode 100644
index 000000000000..157b18a9df9a
--- /dev/null
+++ b/tools/build/options/WITH_LLVM_TARGET_LOONGARCH
@@ -0,0 +1 @@
+Build LLVM target support for LoongArch.

From nobody Tue Oct  6 16:38:48 2026
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 4hzhlr6q5dz4n9rl
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 16:38:48 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzhlr3vPxz4n7H
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:38:48 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791304728;
	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=x5ydXWz+tEyuxkrswT57mVnkgKh+ee/bDoUupNjUSgk=;
	b=yDlQpc2Mm8DCkUWLMquffWy1zHB9QwKbQ1VtDsgTgwlIK9L7eBtwNUR7UtbRDpjzo+H/k8
	mtyBES238yRKWlry8bK0oTVQgJr4eozpyUcOfwedZWD/CO2iAEre0Gt05ri9M9Zcr2z7fJ
	EZGi674CqX/MO9IKsJWCNayapIs0GCLA6B74wyWE8OqIXzuqMJYiJHw8GUI0oGYrIfofl4
	2/cmC0pprUR6rulEQA3iqK9D8DwHC7/A80oga6xaQGs5fJY7nca9FGHJR8Uvd9ZHYn32so
	jqTnPLdk/b5wFuGGR08bVJh1gTrnQlTp/7UVwEUY/V9ib5UP/r0PZWzPRekguA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791304728;
	b=L6ze/wIkVq8WejMYMiIIvVEFo9sCoQ9zNc53g7FAnymBJL//lr8R0vvBdwFFuVQEFAG9cG
	X6iGdaBjae9wvQk66A8CwmROoAJSkNZFWmS9g7YXyj3yN1Z9047faW2QoZSimcF6eClmhT
	YQS7QitUQqKDEmRLE+aBFTJFuLQpBKeaYL0i8FLv5ouVtLdS05XuMf5OJjfca2xYtV5ktE
	GpzlgT1c+mtEtPnfc7CXJ3B1AFUcuvS5kAM46aYN5ddjLnI87cSCdqXrM8tFEPxlViWJ3m
	jfrOS4MZH5D+Pd9Ji5z4ey44dsMBY2r80M+eTFankggV4Fgyfta0SrJClYNbWw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791304728;
	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=x5ydXWz+tEyuxkrswT57mVnkgKh+ee/bDoUupNjUSgk=;
	b=LrsCs+8/mSGNjHVawvmo7h4XOxHAkYOjyHRB3qcWAlVYGKHS7MkKPTilr6AJJTFj3xi3Mz
	vA7qfLLbPBgOqaDXHeg1HPGVrEWzgMpM+9c4ByOk6SRO4frMIMiKp5mbJOJ9AbwkA4ef1/
	aQ9T6d4BKvZ4YZb+312KDieT/rEbvVslvE7cU4btIqBB7Gm2DJMgmI+e9Af589TjkQcceY
	GUaCDGs+DF1MD1LC07JwRDQ3lf1ci+3+JLHMaYk0Roq4YasQRbFajbmIbErtC9lDA0ZZVf
	e6gxLlcy0eGKjyI1QxUS/h4FW1awdeZN6tMXZ11hMLHgtFsOj6Uu85zUuZA9+Q==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzhlr2pRvz1Ccv
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:38:48 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 274d9
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 16:38:48 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Dimitry Andric <dim@FreeBSD.org>
Subject: git: fb099c133cae - stable/14 - Merge commit c4ce37507537 from llvm-project (by ShengYi Hung):
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: dim
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/14
X-Git-Reftype: branch
X-Git-Commit: fb099c133cae7bf6c7b9625a3d81d6a3e4bb5cbe
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 16:38:48 +0000
Message-Id: <6ac52418.274d9.381aff11@gitrepo.freebsd.org>

The branch stable/14 has been updated by dim:

URL: https://cgit.FreeBSD.org/src/commit/?id=fb099c133cae7bf6c7b9625a3d81d6a3e4bb5cbe

commit fb099c133cae7bf6c7b9625a3d81d6a3e4bb5cbe
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2026-10-03 11:36:42 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2026-10-06 16:37:58 +0000

    Merge commit c4ce37507537 from llvm-project (by ShengYi Hung):
    
      [Clang][Sema] Create LocalScope for Variable Template (#228280)
    
      A variable template should create its own LocalScope, as it should be
      opaque to other instantiations. This can occur when there are multiple
      instantiations in the same lexical scope. The correct behavior is that
      these instantiations should not be chained together.
    
      Assisted-by: Claude # Test ReleaseNote
      Fixes: #134148
    
    This fixes an assertion while building the devel/glaze port.
    
    PR:             276265
    MFC after:      3 days
    
    (cherry picked from commit fe9c7137871ee0b5c48d4c38b87d80f72e73379e)
---
 contrib/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/contrib/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/contrib/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
index d2b87f2702a9..a9755bcc73fe 100644
--- a/contrib/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/contrib/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -5901,6 +5901,10 @@ VarTemplateSpecializationDecl *Sema::BuildVarTemplateInstantiation(
   if (Inst.isInvalid())
     return nullptr;
 
+  // A variable template specialization is never a local declaration, so it
+  // must not see the locals of whatever instantiation we are currently in.
+  LocalInstantiationScope Local(*this);
+
   // Instantiate the first declaration of the variable template: for a partial
   // specialization of a static data member template, the first declaration may
   // or may not be the declaration in the class; if it's in the class, we want

From nobody Tue Oct  6 16:40:03 2026
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 4hzhnN6k1dz4n9lb
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 16:40:08 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzhnN5v82z4q9k
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:40:08 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791304808;
	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=3tEoxgkXI44Z3MQWJ6aHBj+qNRh+XjnNXzx9EY5cu0Q=;
	b=REzDIJCBKkJEOdAoKV9FTq7OyW3WDzLwdqhhuxyUEDykwv8iJlGeYSBOIfz+1sbUj8BSbn
	aesIeYpM4zkHNxI2Fxuvgd+1vdIpDENUArr9QLx7Bi8wpQW8/tGZTLB5HfmXGSwTk37jA3
	fNWK2IBP4BKiP5zyg36LKd77TiNDvLZAKIjCFF9EVWmZqt/XjFsaug1XP2aje3/qcWwT8V
	qtbEWMnURcuUEXdPfwdO+3dXtGvkFx1M0HpmH5iVDsI+nAl4QjVrX2vrUBX/106AAA5jnj
	LubAbsTYlkTKqqcFnLhb4GYBl5I6b1douQMcz/tl9+4sw6DmJcwiWv3MftT+BQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791304808;
	b=pid4rNpw6XRIogJJI3d5MUokIeumblNVSPovmVjwF0BvUNZL/E97GAJyP9FAdPMdGRWEtK
	obGgcOYoDTYxsIbcAGHieyIMxPxuoki3Oe5k3fHJsZOysWL2CoXR0NRStlwSHAXhMH8Rcf
	8LGjhuMR5iTbFHvNLv8rBdy0rCVJVTSCnPNOqw9BivsbyDhjJe0GYFnf2hSCv5b5Xox8vD
	csfua5dSuay0Jj118JA93Zd5a0j2rkNpBWUAk8akT1DyQTJZu3+M9jQDAgIm1l4XfgfFUG
	PKEfaN5bav9A+rnEupBz3pfJsPfVIGhfNN7tYm+cu0b3WJqLtr5IEjg9NLxf9w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791304808;
	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=3tEoxgkXI44Z3MQWJ6aHBj+qNRh+XjnNXzx9EY5cu0Q=;
	b=dcafN9lxUvmQdY6WL1T3IgT++HPqO+2Jfy+8YFsl49lbCeydxfutdcQca7UNnnpxgPVgWZ
	FTaYVMsAXVgia/0X0oh62f8Von5+18n1NC8mWLsjNHPOFeMLUpSsHiXTOe5ajSLIS2jPC2
	Dvs/M3I6brghj7p6QWL3SU/1n4cydE6itDllxsK85ohQV1HObleb5SQ7/TozdoEwD2MPZj
	cxBuMdnicEniE9oHUYNlPVZH2eiuRRTsimeCQkcPtxS16YcFQQJWByCYDIr0yLfgYiEDO7
	MvwZC7LUaELiq2XxPRBzknPjmco7rldsQYiQh6Zai1VoaFBzYQvEgiIjteFwPw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzhnN4yCnz1Cj3
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:40:08 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 30c2f
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 16:40:03 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Roman Bogorodskiy <novel@FreeBSD.org>
Subject: git: b3b90afc9db7 - stable/14 - bhyveload: validate character disk devices
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: novel
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/14
X-Git-Reftype: branch
X-Git-Commit: b3b90afc9db7e2d2ed8a1c58a1063b5d4901e01d
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 16:40:03 +0000
Message-Id: <6ac52463.30c2f.4ea78871@gitrepo.freebsd.org>

The branch stable/14 has been updated by novel:

URL: https://cgit.FreeBSD.org/src/commit/?id=b3b90afc9db7e2d2ed8a1c58a1063b5d4901e01d

commit b3b90afc9db7e2d2ed8a1c58a1063b5d4901e01d
Author:     Roman Bogorodskiy <novel@FreeBSD.org>
AuthorDate: 2026-08-28 17:51:31 +0000
Commit:     Roman Bogorodskiy <novel@FreeBSD.org>
CommitDate: 2026-10-06 16:39:39 +0000

    bhyveload: validate character disk devices
    
    Currently, bhyveload(8) does not validate the supplied disk
    image path. For example, it allows passing the /dev/null
    device, which later fails in userboot because it does not
    support DIOCGSECTORSIZE and DIOCGMEDIASIZE ioctls (see
    userdisk_init() in stand/userboot/userboot/userboot_disk.c).
    
    Fix that by checking DIOCGSECTORSIZE and DIOCGMEDIASIZE ioctls early.
    A similar check already exists in bhyve(8). While here, make
    cb_diskioctl() report the obtained sector size instead of
    hard-coding 512.
    
    Reviewed by:    markj
    MFC after:      2 weeks
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D59253
    
    (cherry picked from commit 51234535ddd6ec0afe9dd4e3f34a31b92d5cdd78)
---
 usr.sbin/bhyveload/bhyveload.c | 34 +++++++++++++++++++++++++++++++---
 1 file changed, 31 insertions(+), 3 deletions(-)

diff --git a/usr.sbin/bhyveload/bhyveload.c b/usr.sbin/bhyveload/bhyveload.c
index 3ee5f7ac7129..3f29d642461d 100644
--- a/usr.sbin/bhyveload/bhyveload.c
+++ b/usr.sbin/bhyveload/bhyveload.c
@@ -364,7 +364,14 @@ cb_diskioctl(void *arg __unused, int unit, u_long cmd, void *data)
 
 	switch (cmd) {
 	case DIOCGSECTORSIZE:
-		*(u_int *)data = 512;
+		if (fstat(disk_fd[unit], &sb) != 0)
+			return (ENOTTY);
+		if (S_ISCHR(sb.st_mode)) {
+			if (ioctl(disk_fd[unit], DIOCGSECTORSIZE, data) != 0)
+				return (ENOTTY);
+		} else {
+			*(u_int *)data = 512;
+		}
 		break;
 	case DIOCGMEDIASIZE:
 		if (fstat(disk_fd[unit], &sb) != 0)
@@ -718,7 +725,9 @@ altcons_open(char *path)
 static int
 disk_open(char *path)
 {
-	int fd;
+	struct stat sbuf;
+	off_t size;
+	int fd, ret, sectsz;
 
 	if (ndisks >= NDISKS)
 		return (ERANGE);
@@ -726,11 +735,30 @@ disk_open(char *path)
 	fd = open(path, O_RDWR);
 	if (fd < 0)
 		return (errno);
+	if (fstat(fd, &sbuf) < 0) {
+		ret = errno;
+		goto err;
+	}
+
+	size = sbuf.st_size;
+	sectsz = DEV_BSIZE;
+	if (S_ISCHR(sbuf.st_mode)) {
+		if (ioctl(fd, DIOCGMEDIASIZE, &size) < 0 ||
+		    ioctl(fd, DIOCGSECTORSIZE, &sectsz) < 0) {
+			ret = errno;
+			goto err;
+		}
+		assert(size != 0);
+		assert(sectsz != 0);
+	}
 
 	disk_fd[ndisks] = fd;
 	ndisks++;
 
 	return (0);
+err:
+	close(fd);
+	return (ret);
 }
 
 static void
@@ -814,7 +842,7 @@ main(int argc, char** argv)
 		case 'd':
 			error = disk_open(optarg);
 			if (error != 0)
-				errx(EX_USAGE, "Could not open '%s'", optarg);
+				errc(EX_USAGE, error, "Could not open '%s'", optarg);
 			break;
 
 		case 'e':

From nobody Tue Oct  6 16:54:17 2026
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 4hzj5m1spfz4nC9K;
	Tue, 06 Oct 2026 16:54:20 +0000 (UTC)
	(envelope-from des@freebsd.org)
Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83])
	(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 "smtp.freebsd.org", Issuer "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzj5m1MxWz4tH7;
	Tue, 06 Oct 2026 16:54:20 +0000 (UTC)
	(envelope-from des@freebsd.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791305660;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=9z5RZdNczGTzUOMRmC82pmUwl7zaJL6JXXA/2UGV0fo=;
	b=EVGFMgB3RnlpDPHo58MWD1WEx35wZCdVRyCX6atTVAb3GK2gdRvAaJ5iMuI3bAx+TgSnRD
	0/MSGGBcC4f0zKDwj4dif5o/fDnSqBT0Fyug1SWbYbbJGwKok1EBLwwQWqqgaSmbA+7sLJ
	pVkM2rc/v0/tfgGwApmdb3Dz7XIBPIGJ6q7T9USmblMsG1S0XpCHE5SSbgTa6rlJAMCafC
	tPJ1dEtGlWMuevAs4kLULPzL4T9xDIPGrciWOrYtUld3tMKFkDzyr7WTNc76YbghTVKyLu
	hhyeDcW87AHIiV6c55XeXa4PTaHVhUahTUwStmXzn3VCFDOdGMGt5cciBR1kVQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791305660;
	b=C9W0BoaRjPyG7URzjwy2CvYBROnYgV8NcJRVK8zkt1zhcY70fcmCEiEuqcmeNg9hJftiEj
	smEZwFLdoGp0bJ9Si1VOUW0txxU6EL2kTYujZnorQlKYynD5QLxp+9wpIT2xG87e+bNFIY
	SHHUkVFnyPH6vey2y9lXGZxffBXm3YzUZaCMmtK+0Gb/eDSlEiGgj2P7kL7OCl026omqMi
	yzlaFOaWfo0AyvurWgFum5QV4uw2bgQzPeUxHGOuq+r3vHjhmCXLQkceO/sHLYdJQNHi/J
	sgzyGreZlBRNDQzkg9D+i0Hphlq1dvetPJd47mjiyvmGaPYHRlhR2d1NDX7jRg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791305660;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=9z5RZdNczGTzUOMRmC82pmUwl7zaJL6JXXA/2UGV0fo=;
	b=MBGC0ORMY9ndJJSWaWR6m0ScI3uQnSH/cwZcsSyFX2XqAAyAoqim/U20ofyXfF0WFsJQSS
	lDEPwJXhJAPUcfQqx/dEjtkYekrap89hh1kL3T+w5x5230u1NytBVjqqFpKE8iIFz9NGFQ
	aCl2nlMH0daZhFs3gZf0ettXHV/YTu+Vmz5YlURWokoiiMeV948L/vOasP3ZhaYIF9fUI8
	+t0xRHqo72u/0bY0w35ERPFr/U/CIZHLDnejl1lwVKVAeKs5u4tcu29WJH1ES9/GSIkQF3
	j7dQKNglv1V+lp5HE0uQd4vQEsI9Wwqk+Zrd7R+9Xneqs32NY1mOrUyqLgI2bg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from ltc.des.dev (2a01cb0585070b00922e16fffef1acef.ipv6.abo.wanadoo.fr [IPv6:2a01:cb05:8507:b00:922e:16ff:fef1:acef])
	(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)
	(Authenticated sender: des/mail)
	by smtp.freebsd.org (Postfix) with ESMTPSA id 4hzj5l6bltz19wB;
	Tue, 06 Oct 2026 16:54:19 +0000 (UTC)
	(envelope-from des@freebsd.org)
Received: by ltc.des.dev (Postfix, from userid 1001)
	id 4257D11E661; Tue, 06 Oct 2026 18:54:17 +0200 (CEST)
From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@FreeBSD.org>
To: Maxim Sobolev <sobomax@FreeBSD.org>
Cc: src-committers@FreeBSD.org,  dev-commits-src-all@FreeBSD.org,
  dev-commits-src-main@FreeBSD.org
Subject: Re: git: 43b0384bc7e8 - main - mountpoint(1): new utility,
 implemented as a stat(1) hardlink
In-Reply-To: <86jynwnvls.fsf@ltc.des.dev>
References: <6abecfdf.3a8dc.610fc5a7@gitrepo.freebsd.org>
	<86jynwnvls.fsf@ltc.des.dev>
User-Agent: Gnus/5.13 (Gnus v5.13)
Date: Tue, 06 Oct 2026 18:54:17 +0200
Message-ID: <86cxtmojly.fsf@ltc.des.dev>
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Dag-Erling Sm=C3=B8rgrav <des@FreeBSD.org> writes:
> Maxim Sobolev <sobomax@FreeBSD.org> writes:
> >     mountpoint(1): new utility, implemented as a stat(1) hardlink
> Why was this implemented as a stat(1) hardlink?  There is aboslutely no
> common code between the two.

I'm serious, Maxim.  Implementing mountpoint(1) as an alternate move of
stat(1) adds more complexity than it saves.  Please revert and re-commit
as an independent binary.

DES
--=20
Dag-Erling Sm=C3=B8rgrav - des@FreeBSD.org

From nobody Tue Oct  6 16:59:05 2026
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 4hzjCL6VYRz4nCN8
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 16:59:10 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzjCL4q48z4tfj
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:59:10 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791305950;
	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=IuhZhfFfT/v2WHHg4WnnbXWN6ISBuUxKKx1AAMWOc1w=;
	b=d3JxN5o/ILBr9csbZXYFZ4HpcZ54gQjxa0ck1WL0OeWTfpGE0XiyrgocEUI1LTF/jV9zbk
	dZdd1BEdy9P0pUsR1Ew/Re6ocwbejrev62uP3co//qUoPsFh3nKC0cB1E/M//hUJszsARP
	P+hw/Hi7+3NWoStSz3p8q90hBFF/Ei7lt8terQeZdyGfkp5+0mjN3GoTkw0WVDmKRiD8LF
	tkseP6Rwv/Uju2mv8sApO1vWp4pxRepNMrw4Pk8FKslwDbQtf1LDiP79EjkXXlWywPr+ZF
	riqXP0ViHzC6ian8pTWZa+/37TAvo9/quPAELA8NLQ//Xt2xyAQluPkkRTGD4A==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791305950;
	b=Qaw95ddTloqzLqW4iOh7gElkEszSNL5/wQUCxrAjo8mEG1s8b7i/sVdrCVKF1+0kkq9hkh
	7QtWYQsLeUxpAYq1j1MQ7NaFMT1d9o0WcFlImT9PSWpziaG+pFXOMqrZnbbSExsF1kXKBM
	q0/AET7xAaOHkj0Q8OqEL6hlLC1AUVFRQXOq/wflTcKAvi9UJbdRWD2K4hKAcX5P8loaPo
	+FGTS84YtTS5UKQme7uMIapnPcsxNxp2lFICfFXozmNtRvPww6eSn7oQJ8jgep4txNAtyU
	2ITa8A8+RXLSzkTrdcAFOn8PS520fqyhwvJBkF6BjI2TkQZYBerF4YPXtWz76g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791305950;
	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=IuhZhfFfT/v2WHHg4WnnbXWN6ISBuUxKKx1AAMWOc1w=;
	b=hlNta1CF+Ppeqeyegnv2ODEwUn3iCdEV7/MsVM6bJiF423ojz9F/iGPoHqrltXd0LSQnVh
	uYLsj2A8ze2CgSsoaSXCBSHnu3D7INjprV+cZn9Gkwv9DtJDG1+HYP3uH9Zt6bSAPsQGyj
	bEy6rs+3hILI8Gsw0xytqe+fG6A78Cm/FBQzT0tKuN6QaXETZ89OjbMcNbO/g+jy1fXyYG
	Pbj5zI95cerN95h0fBe7tSyC2YiSjOCfVsSOxU2+yYLB/ZiQw6Z2UAszY2c08RTKX1Ycyf
	r2CG3uBnNfKmBMtdycUdvvwI6grrvyxtDOs/JQBUMFnRzfZUftXyTTyxGELOHw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzjCL3hNJzF1K
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 16:59:10 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 33d55
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 16:59:05 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Roman Bogorodskiy <novel@FreeBSD.org>
Subject: git: 4445d039583a - main - stand: userboot: improve userdisk error handling
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: novel
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 4445d039583a0a47fc335e0d34401581bcbc104e
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 16:59:05 +0000
Message-Id: <6ac528d9.33d55.1756a0e@gitrepo.freebsd.org>

The branch main has been updated by novel:

URL: https://cgit.FreeBSD.org/src/commit/?id=4445d039583a0a47fc335e0d34401581bcbc104e

commit 4445d039583a0a47fc335e0d34401581bcbc104e
Author:     Roman Bogorodskiy <novel@FreeBSD.org>
AuthorDate: 2026-08-28 16:43:26 +0000
Commit:     Roman Bogorodskiy <novel@FreeBSD.org>
CommitDate: 2026-10-06 16:51:40 +0000

    stand: userboot: improve userdisk error handling
    
    Currently, userdisk_init() iterates through disks and
    checks whether DIOCGSECTORSIZE and DIOCGMEDIASIZE ioctls
    are available for the device. If either ioctl fails, userdisk_init()
    returns ENXIO with ud_info only partially initialized.
    devinit() records the failure, but loader_main() ignores
    devinit()'s return value, so later code may access an
    uninitialized entry.
    
    In certain cases this code can still boot from a disk even if
    userdisk_init() returns ENXIO, for example, when the first of
    two disks is valid and the second errors out.
    
    To address this issue while not breaking the current behavior, do
    the following:
    
     - Zero-initialize the userdisk_info array and use a zero media size
       to mark disks that do not support the ioctls mentioned above or
       report an empty medium.
     - Update userdisk_print() not to print unusable disks.
     - Update userdisk_open() to return EIO for unusable disks.
     - Update extract_currdev() to pick the first usable disk
       instead of the first disk. Introduce userboot_disk_firstunit()
       for that.
    
    Additionally, reset counters on ud_info allocation failure to prevent
    accessing unallocated data.
    
    Reviewed by:    jhb (previous version), markj
    MFC after:      2 weeks
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D59262
---
 stand/userboot/userboot/libuserboot.h   |  1 +
 stand/userboot/userboot/main.c          |  9 ++++---
 stand/userboot/userboot/userboot_disk.c | 45 +++++++++++++++++++++++----------
 3 files changed, 39 insertions(+), 16 deletions(-)

diff --git a/stand/userboot/userboot/libuserboot.h b/stand/userboot/userboot/libuserboot.h
index e1584ec29412..0844e62684f6 100644
--- a/stand/userboot/userboot/libuserboot.h
+++ b/stand/userboot/userboot/libuserboot.h
@@ -39,6 +39,7 @@ typedef unsigned long physaddr_t;
 /* exported devices */
 extern struct devsw userboot_disk;
 extern int userboot_disk_maxunit;
+int userboot_disk_firstunit(void);
 extern struct devsw host_dev;
 
 /* access to host filesystem */
diff --git a/stand/userboot/userboot/main.c b/stand/userboot/userboot/main.c
index d1f231a12e97..985933bf51e9 100644
--- a/stand/userboot/userboot/main.c
+++ b/stand/userboot/userboot/main.c
@@ -237,9 +237,13 @@ extract_currdev(void)
 {
 	struct disk_devdesc dev;
 	struct devdesc *dd;
+	int diskunit;
 #if defined(USERBOOT_ZFS_SUPPORT)
 	struct zfs_devdesc zdev;
+#endif
 
+	diskunit = userboot_disk_firstunit();
+#if defined(USERBOOT_ZFS_SUPPORT)
 	if (userboot_zfs_found) {
 	
 		/* Leave the pool/root guid's unassigned */
@@ -250,10 +254,9 @@ extract_currdev(void)
 		dd = &zdev.dd;
 	} else
 #endif
-
-	if (userboot_disk_maxunit > 0) {
+	if (diskunit >= 0) {
 		dev.dd.d_dev = &userboot_disk;
-		dev.dd.d_unit = 0;
+		dev.dd.d_unit = diskunit;
 		dev.d_slice = D_SLICEWILD;
 		dev.d_partition = D_PARTWILD;
 		/*
diff --git a/stand/userboot/userboot/userboot_disk.c b/stand/userboot/userboot/userboot_disk.c
index 9adcad4f00ac..78377c582225 100644
--- a/stand/userboot/userboot/userboot_disk.c
+++ b/stand/userboot/userboot/userboot_disk.c
@@ -82,25 +82,29 @@ userdisk_init(void)
 	off_t mediasize;
 	u_int sectorsize;
 	int i;
+	int userdisk_usable = 0;
 
 	userdisk_maxunit = userboot_disk_maxunit;
 	if (userdisk_maxunit > 0) {
-		ud_info = malloc(sizeof(*ud_info) * userdisk_maxunit);
-		if (ud_info == NULL)
+		ud_info = calloc(userdisk_maxunit, sizeof(*ud_info));
+		if (ud_info == NULL) {
+			userdisk_maxunit = 0;
+			userboot_disk_maxunit = 0;
 			return (ENOMEM);
+		}
 		for (i = 0; i < userdisk_maxunit; i++) {
 			if (CALLBACK(diskioctl, i, DIOCGSECTORSIZE,
-			    &sectorsize) != 0 || CALLBACK(diskioctl, i,
-			    DIOCGMEDIASIZE, &mediasize) != 0)
-				return (ENXIO);
-			ud_info[i].mediasize = mediasize;
-			ud_info[i].sectorsize = sectorsize;
-			ud_info[i].ud_open = 0;
-			ud_info[i].ud_bcache = NULL;
+			    &sectorsize) == 0 && CALLBACK(diskioctl, i,
+			    DIOCGMEDIASIZE, &mediasize) == 0 && mediasize > 0) {
+				ud_info[i].mediasize = mediasize;
+				ud_info[i].sectorsize = sectorsize;
+				userdisk_usable++;
+			}
 		}
 	}
-	bcache_add_dev(userdisk_maxunit);
-	return(0);
+	bcache_add_dev(userdisk_usable);
+
+	return (0);
 }
 
 static void
@@ -111,6 +115,18 @@ userdisk_cleanup(void)
 		free(ud_info);
 }
 
+int
+userboot_disk_firstunit(void)
+{
+	int i;
+
+	for (i = 0; i < userdisk_maxunit; i++) {
+		if (ud_info[i].mediasize != 0)
+			return (i);
+	}
+	return (-1);
+}
+
 /*
  * Print information about disks
  */
@@ -121,7 +137,7 @@ userdisk_print(int verbose)
 	char line[80];
 	int i, ret = 0;
 
-	if (userdisk_maxunit == 0)
+	if (userboot_disk_firstunit() < 0)
 		return (0);
 
 	printf("%s devices:", userboot_disk.dv_name);
@@ -129,6 +145,8 @@ userdisk_print(int verbose)
 		return (ret);
 
 	for (i = 0; i < userdisk_maxunit; i++) {
+		if (ud_info[i].mediasize == 0)
+			continue;
 		snprintf(line, sizeof(line),
 		    "    disk%d:   Guest drive image\n", i);
 		ret = pager_output(line);
@@ -163,7 +181,8 @@ userdisk_open(struct open_file *f, ...)
 	dev = va_arg(ap, struct disk_devdesc *);
 	va_end(ap);
 
-	if (dev->dd.d_unit < 0 || dev->dd.d_unit >= userdisk_maxunit)
+	if (dev->dd.d_unit < 0 || dev->dd.d_unit >= userdisk_maxunit ||
+	    ud_info[dev->dd.d_unit].mediasize == 0)
 		return (EIO);
 	ud_info[dev->dd.d_unit].ud_open++;
 	if (ud_info[dev->dd.d_unit].ud_bcache == NULL)

From nobody Tue Oct  6 17:34:00 2026
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 4hzjzX5Mxtz4nG82
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 17:34:00 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzjzX3RqVz3Gv8
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 17:34:00 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791308040;
	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=QeZvETy9CsoE6K2xGREBN27K4iSROa43eynzTXjIHck=;
	b=vyuJ9GedYWlIHWvGbk04gFO7zwFoDpQHrHj/Wsj23UaOrCI32h3osb1f3ZddFc4UamrxTa
	VwHm+XCu/c/Pj7wAG8kxg/kNe6xgyOWn2toYN5bM6f8Qc4lCp6GZNmDUcQx5Fl5XogBAGI
	qpwVQ3Msexi0ZsM8nx5Phe6jGK/NiurOwqsTnv6M3xtoDr91Y45vfUW/qRnV1epGUtAhRB
	RwIFwKYFxbGeMuF57pUFImjV6GgyRcQEsN8QeRjAH2DSSSr0SMFVbkQd2FVGLvo0159YV2
	b37YHUWMS3NhaLE1pPJgJx90Jiuzh6IHutsZyzc5u6m6ZTd0iSi5xQGl7a41eA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791308040;
	b=WWnKGym6eN6qD/BS/oBgY5ZvJ9MXSWMk1ZL57RBahTQ3l7LGvSx65k9yjV+/JwZlgw4nHr
	MnHDIDAGYsrKzqd30KdZJwzadmR4PdJpWAAeZ+O7lt7tENbeG0z8Yo1k+3LKZtitId1TtI
	SJotUpe/ZGDP4hrCFV2crVXcyKDri/d6fNexwtEjWyzjz+IsM96H+OlCFz1tFjMCieSFCb
	NT8iX5HX6pnPgR06SsJ8jxkur1E/dCEDgtGoKLv/8fG7AF0ULkDrHVczG/eshHLFQ64kO+
	1AJmuX63x1QWot62+ucprBbxriM6GUP4+MSM7w+xqBtzsEIXS6L4/2ManDNiTQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791308040;
	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=QeZvETy9CsoE6K2xGREBN27K4iSROa43eynzTXjIHck=;
	b=ndnLF5KfYfs2tiiE7lUMTlan9MQ8f9vaAL9DWZK8T0wSC/erMUmujURc0JMo96GI76QSQv
	wh2pr60TbiMqstXSJUaPJraq2Xz8agkLAr71U8uOwxjFUF7A9Wj2Y7OE6XWxuZ23AoxeEq
	Nu9OxYd0UqWF61zrzht36ajmtbinAHlW7C4jYh//bTJb4BYKFkRwAR9ErnEIxRoE1PYMlZ
	ZGMVAIchHa8xPP3ykFskaUmlQZXgFb0fJrDkx/G9BAVsT31ZVwPYVgNFM9OyQOwcmO+Tqj
	yl6HZ8ThMEs2Jqc14y98kaMm64EwnezKQKHf1bB/m+qbvB8znnZ2vxJX1IhiEQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzjzX2CpPzFng
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 17:34:00 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 382a1
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 17:34:00 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Konstantin Belousov <kib@FreeBSD.org>
Subject: git: 274236ed084a - main - rtld.c: avoid double-free on dso load failure in do_load_object()
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: kib
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 274236ed084a259a0e8a11df1afebd2f2f1fb097
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 17:34:00 +0000
Message-Id: <6ac53108.382a1.1491be4b@gitrepo.freebsd.org>

The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=274236ed084a259a0e8a11df1afebd2f2f1fb097

commit 274236ed084a259a0e8a11df1afebd2f2f1fb097
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-10-06 08:22:21 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-10-06 17:33:27 +0000

    rtld.c: avoid double-free on dso load failure in do_load_object()
    
    The obj->path is assigned directly from the path argument, and
    load_object() frees the path on do_load_object() failure.  Do not free
    it in obj_free() on the error path.
    
    Reviewed by:    markj
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D60402
---
 libexec/rtld-elf/rtld.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index 850e017a404d..048cc473305a 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -3027,6 +3027,7 @@ do_load_object(int fd, const char *name, char *path, struct stat *sbp,
 
 errp:
 	munmap(obj->mapbase, obj->mapsize);
+	obj->path = NULL;	/* obj->path is owned and freed by caller */
 	obj_free(obj);
 	return (NULL);
 }

From nobody Tue Oct  6 17:39:26 2026
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 4hzk5p57FCz4nGkf
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 17:39:26 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzk5p2Q5wz3HDs
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 17:39:26 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791308366;
	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=dd8flugTb1ZwA1vpySlcLXvXUa1laEAbZ6PEGu8SyG0=;
	b=vRjg9GvRHVaI+Kdlg9m47xR3KqUhW7hV/D8kuSWCmVvZjscQdrP2JBp6g6Lng9DbQXZdya
	NZoSjmIk4bPbN8G64q4y8dP8ESEzRzMwOsVzinYzZeJLKmLr7gMi+28ZZ2adrIlckhpS4S
	JU22kS/wJVCYw++wxJ0FxiQpgCCBlACDWPKJzv7Lcj4X5+A18P/2FLbjkD2ht2cF/uPDkQ
	qckx3LkOrVrmnLhRF2BpekDZd7e3YNxbuV/c4z8/hnIIqyJIaFW40ulxAFkicMumhmuars
	D8vwXvRn6sZH6z+bQpjLlxV4BYT359fORkCxUjLQwZlvsX9x16Wr/DFYnb7Nzw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791308366;
	b=ZpVwNssfvfFPhKuiCHAGmk52Nty7l26E3ldWHxwgpRHOyYswcL+wFac6ktYDNpESLnWD+w
	Q2/1pr9VSPNgmZW/XzgTZqfPxVm7SIT7HgZ3MshA72JPNPDwC28LU+SfgCRBeU0N+P2f2w
	gKQLiE18ru9MdyAAaONykWPY1ccPbUtnF1AuC2IQK38qI/uQg9UByO4+R2fc2E9dvnWgWf
	gd933XpmQ8EU5RqfBwRPdNMYzYlZdsnlFmsPBVXsZH0w8vFtRDqvnp87NOvg7+E/rMS5lO
	OQNJceXxBMbyKuqx/UwzkM/EjCH9opKagMyfWF6iF7kQbbwlmCLHMhDN5b56ww==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791308366;
	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=dd8flugTb1ZwA1vpySlcLXvXUa1laEAbZ6PEGu8SyG0=;
	b=EMY+SWTagHny2C89h4l7vQp75YJu7bjcgdl0n24enBno6U2ETbPCDWDRQlYiM5XRJzBvL9
	uNqOMhrQ3LDNnXRvaYEf8aYW5JhXLWUPIqQL3ixVQUepYCUXM3kh6p1kB15sr+qahAHFFw
	x4hceUhaQAfQ79tv01Mt7HEUxlzQcmwPofJPhiPi4MHxy2xH4IJw7gNXa/ljbaTMG3EAWC
	mmbHIwz3n1tatLzcGD/jtEYSjco/0M0L5iBvK4WHQeXUn2zA/kua+gFYt7MLW8r4YqIJCN
	w30aQJXr+aAmaJ8K5u6cl6zVIoL6NH6gLp7RBEW+5BN3H4Bgx3OwoMG+poe3Jg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzk5p0fYTzGM7
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 17:39:26 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 38305
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 17:39:26 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Maxim Konovalov <maxim@FreeBSD.org>
Subject: git: 0154a0df90c7 - stable/15 - bsnmpget: initialise the suboption value in getsubopt1()
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: maxim
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 0154a0df90c736d0c6d246b31f92c7becf71a86a
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 17:39:26 +0000
Message-Id: <6ac5324e.38305.6fad3807@gitrepo.freebsd.org>

The branch stable/15 has been updated by maxim:

URL: https://cgit.FreeBSD.org/src/commit/?id=0154a0df90c736d0c6d246b31f92c7becf71a86a

commit 0154a0df90c736d0c6d246b31f92c7becf71a86a
Author:     Maxim Konovalov <maxim@FreeBSD.org>
AuthorDate: 2026-09-22 22:49:33 +0000
Commit:     Maxim Konovalov <maxim@FreeBSD.org>
CommitDate: 2026-10-06 17:36:47 +0000

    bsnmpget: initialise the suboption value in getsubopt1()
    
    Otherwise, "bsnmpget -o verbose -I cut" crashes.
    
    Reported by:    clang static analyzer
    MFC after:      2 weeks
    
    (cherry picked from commit 5d169b5365b1f5cdf8586efa9421feaa4bfe40af)
---
 usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c b/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c
index d8fbb55290a8..4d1058629496 100644
--- a/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c
+++ b/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c
@@ -316,6 +316,7 @@ getsubopt1(char **arg, const char *const *options, char **valp, char **optp)
 	char *ptr;
 
 	*optp = NULL;
+	*valp = NULL;
 
 	/* Skip leading junk. */
 	for (ptr = *arg; *ptr != '\0'; ptr++)

From nobody Tue Oct  6 17:39:27 2026
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 4hzk5q3q8sz4nGn1
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 17:39:27 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzk5q2JPNz3HYm
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 17:39:27 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791308367;
	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=RKnaWUqairifMt+wH/Mp5bk+pijrngpbVMXXwzZl3As=;
	b=NJ/hJ1o7ZMBVnR3KI+HKiaK3VOYRHB33IX5zjf+jI4azjt/27KilnUTfPj0Z3REa2PE/UH
	Z77XujsqzEOkEEPiS1DkARRnqbLlcAzcSrf8XNNHe466igjRnluX5sErlj66gfKtINHFY4
	EVGJQmBgD7DV+PX2xyFq1ibc3EpW7z9+t/uS/X+RzxfrEvAX7qG00bjKeaW+mb1grnSxEH
	lqud/2B88j0j66Te1Q9h8wKBpHV6NyebPGkhhMYjDJrTuydnjR04p+GEER5DjtJsurolJF
	WBbCEgBd96e0OtKtIQm/R+Xx+NgtblL+2G4lv7WUArlRjSxvWY10C8x9poqk+Q==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791308367;
	b=wN5R6qjOfak4JnlvzSukc/u0cgaPoh8kD0EYTg3ToSu3BN6IQW1TeIM6lYmYQjfh9dBf/m
	+rGEx2w0kfaV9VcqxUObJbOcbey6wmIGAh1owQuW4zuxSb2neGp7mjoiPzLapP+4ZuNAcK
	99F9N6YbXHHAuh0qpoLVWLp9lM0/M3Tgp5Lu8nbNcHLJ326NTVlqdWqYAAuASy1gP259HW
	KFZCGEqGcGWXQjBlfueuG7ah5MjL3huF2oV29/TyjOFW5KWvL6el2OWTEKfNwfQRvdP334
	1ogiLcEf6p9Z4siHPsN636JizM0ogaQbwwE59tOfC6JpWXoReZ4GQVH7KfyuOw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791308367;
	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=RKnaWUqairifMt+wH/Mp5bk+pijrngpbVMXXwzZl3As=;
	b=kmNG9ggJiq+dwgDKG0CeSRmMahO0Vds/YR9C9bo2KUsh4O65Mp9I5b9yRtHsN2MGLm/qhW
	hgrVGFRPNuPWBZ2W3WuyV73Ef5V/uR9MaZ3JoS8G1oC6zYXWTpjjf2I+FDDRdtGWV0fVsi
	JnKsFlI9SgjwlQZ2/W49IA7vwEBLPIMD7h0eURmzMfmqpErHZkyf++9m+A6XVCFO8NVUdm
	Mge2Qrcla+qaziBotftylDaFEVkIR7x7yJiHkB8tR/7FPHD93YLrP2RaBdCi640kefzvbT
	/SsZTxxRnZat4gjYJicrIt4clHc12yffaknetSHZeFT7raxSGkDxNbFql6DYhg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzk5q1KxszG5D
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 17:39:27 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 38176
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 17:39:27 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Maxim Konovalov <maxim@FreeBSD.org>
Subject: git: de5689d1e6ea - stable/15 - bsnmp: validate the lower bound of error_index in responses
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: maxim
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: de5689d1e6ea621249e1ef44db3c2d3ee8431ba5
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 17:39:27 +0000
Message-Id: <6ac5324f.38176.36b47706@gitrepo.freebsd.org>

The branch stable/15 has been updated by maxim:

URL: https://cgit.FreeBSD.org/src/commit/?id=de5689d1e6ea621249e1ef44db3c2d3ee8431ba5

commit de5689d1e6ea621249e1ef44db3c2d3ee8431ba5
Author:     Maxim Konovalov <maxim@FreeBSD.org>
AuthorDate: 2026-09-22 21:32:43 +0000
Commit:     Maxim Konovalov <maxim@FreeBSD.org>
CommitDate: 2026-10-06 17:37:11 +0000

    bsnmp: validate the lower bound of error_index in responses
    
    Check if the response's error_index is within a sane interval.
    Otherwise, a rogue peer could crash us.
    
    PR:             298222
    Reported by:    Robert Morris
    Reviewed by:    markj
    Discussed with: secteam (markj)
    MFC after:      2 weeks
    Analyzed with:  Claude Code Opus 5
    
    (cherry picked from commit 296e3fd54ca8972fa6696974097a2f2705f8dfc4)
---
 usr.sbin/bsnmpd/tools/bsnmptools/bsnmpget.c      | 8 ++++++--
 usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c | 3 ++-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/usr.sbin/bsnmpd/tools/bsnmptools/bsnmpget.c b/usr.sbin/bsnmpd/tools/bsnmptools/bsnmpget.c
index 9252e63749bb..25129567ee92 100644
--- a/usr.sbin/bsnmpd/tools/bsnmptools/bsnmpget.c
+++ b/usr.sbin/bsnmpd/tools/bsnmptools/bsnmpget.c
@@ -413,7 +413,9 @@ snmptool_get(struct snmp_toolinfo *snmptoolctx)
 		 * Loop through the object list and set object->error to the
 		 * varbinding that caused the error.
 		 */
-		if (snmp_object_seterror(snmptoolctx,
+		if (resp.error_index < 1 ||
+		    resp.error_index > (int32_t)resp.nbindings ||
+		    snmp_object_seterror(snmptoolctx,
 		    &(resp.bindings[resp.error_index - 1]),
 		    resp.error_status) <= 0) {
 			snmp_pdu_free(&resp);
@@ -1107,7 +1109,9 @@ snmptool_set(struct snmp_toolinfo *snmptoolctx)
 			break;
 		}
 
-		if (snmp_object_seterror(snmptoolctx,
+		if (resp.error_index < 1 ||
+		    resp.error_index > (int32_t)resp.nbindings ||
+		    snmp_object_seterror(snmptoolctx,
 		    &(resp.bindings[resp.error_index - 1]),
 		    resp.error_status) <= 0) {
 			snmp_pdu_free(&resp);
diff --git a/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c b/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c
index 4d1058629496..857bb205b9b4 100644
--- a/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c
+++ b/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c
@@ -1994,7 +1994,8 @@ snmp_output_err_resp(struct snmp_toolinfo *snmptoolctx, struct snmp_pdu *pdu)
 	struct snmp_object *object;
 	char buf[ASN_OIDSTRLEN];
 
-	if (pdu == NULL || (pdu->error_index > (int32_t) pdu->nbindings)) {
+	if (pdu == NULL || pdu->error_index < 1 ||
+	    (pdu->error_index > (int32_t) pdu->nbindings)) {
 		fprintf(stdout, "Invalid error index in PDU\n");
 		return;
 	}

From nobody Tue Oct  6 17:39:24 2026
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 4hzk5t2dqCz4nGqM
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 17:39:30 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzk5t1SzGz3HcL
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 17:39:30 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791308370;
	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=SSDnYyf5JhrZeQXatn7nIv0Gjg+DkeQhiDulra2iCTs=;
	b=wAz/VS3f/KX1UhXwoCcvS2rwXlIUGcmexJsrOx4q5hAm5vWY7hDq+4EZVm+s61MM7Ibd76
	fVZXPNly2lA0Jkg84J2w3oupBwevEhwcjw60K3CselQncTV9vQlHeTsaVFezMj2YEktFS4
	HMSrGOt7zckLoFIf42k6ssxBEuXpQowzRjHty2AaayFnnmHUdst+ePhcJFLF4HmJ72A6kH
	hbmWxHiTD70s7mIixBOmOeF9mXXt10dw4skq002pX6D8wO3nCGyRrhzb9zCK+gDfRs9u6c
	7olJrZM1/lVrSTF71NqMMUi8Q/N/7vk2ei98hVkv/9vKbfOxXD5YBbK5TG9TnQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791308370;
	b=x5YHhId3HEj7evfcrXkdeASGf4EfXRnx3Be/fjCdO8Pp5tbCdQ7RlUlGaQX7VUMdlFt5uk
	m5HWA0aQ4uQbIp83woCB1G6PrGtieC0cHO1EmpDwKxsMKqvoqsMtkAB/c5l+SStMb1/p9J
	sKP5cpu06f8B/q/SBrRKsvgtkuFS9L/1aJsl6rVXBbdm450DIZy3pvTC0v38of+gc/jMEH
	6qPpoOV9YimUvgWFVYC9JQUEU485gJyGxT3EeSBQSnQJo1puMpaEaxkbnorfJHt3lHOcXb
	Ta0Mpf1w0731TJcMihRp8KJwCmzjZZUWJY00Jmiw2rhDhn2SBtBuRZjLTMvbHg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791308370;
	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=SSDnYyf5JhrZeQXatn7nIv0Gjg+DkeQhiDulra2iCTs=;
	b=A8+73gOAhjC1VBg1usjFadMkcJBxD0a1UGNpgBJPp1HxtzDG/v5euS76IIr5DhP0YhpR2h
	DEOiQieszEhbh9jDOxhbeU3YvGy2xCNiXArMZLVPb1vN/Nrpey5hBxWqs872STbqSdeyvw
	DXqNcWYq1Qlqz0Vs3AVI+nxGcBtUNhXUI+62lO2UUPWBTedjMXxhRmasi4acVai8wVCRHE
	9HMA+oE2NsoYPxY6eRgIs2ArQ9m2rmFxQvCrd/PjEOmCuN2s3LvpLuh511VQWh+69q1492
	QWIXugQDCVTsw/uOd75PJMUhBPRw3QTg4hmxkVUMYW8684HNX1OEX6OHqzW7xw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzk5t08T8zFbn
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 17:39:30 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 37025
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 17:39:24 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Maxim Konovalov <maxim@FreeBSD.org>
Subject: git: 2da109690be8 - stable/15 - dummynet: do not overflow the points[ED_MAX_SAMPLES_NO] array
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: maxim
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 2da109690be8f29f03b68150c827f47db81ad8b5
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 17:39:24 +0000
Message-Id: <6ac5324c.37025.72601dd1@gitrepo.freebsd.org>

The branch stable/15 has been updated by maxim:

URL: https://cgit.FreeBSD.org/src/commit/?id=2da109690be8f29f03b68150c827f47db81ad8b5

commit 2da109690be8f29f03b68150c827f47db81ad8b5
Author:     Maxim Konovalov <maxim@FreeBSD.org>
AuthorDate: 2026-09-21 23:32:09 +0000
Commit:     Maxim Konovalov <maxim@FreeBSD.org>
CommitDate: 2026-10-06 17:36:21 +0000

    dummynet: do not overflow the points[ED_MAX_SAMPLES_NO] array
    
    Otherwise, the following would segfault
    
    dnctl pipe 1 config bw 1Mbit/s profile 1025points.txt
    
    Found with:     Claude Code Sonnet 5
    MFC after:      2 weeks
    
    (cherry picked from commit 04fcf30961266cd77139b40774cb0d6ef6eb2be5)
---
 sbin/ipfw/dummynet.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/sbin/ipfw/dummynet.c b/sbin/ipfw/dummynet.c
index a0cefcffd183..3cf9a1854365 100644
--- a/sbin/ipfw/dummynet.c
+++ b/sbin/ipfw/dummynet.c
@@ -959,6 +959,9 @@ load_extra_delays(const char *filename, struct dn_profile *p,
 		} else if (do_points) {
 		    if (!is_valid_number(name) || !is_valid_number(arg))
 			errx(ED_EFMT("invalid point found"));
+		    if (points_no >= ED_MAX_SAMPLES_NO)
+			errx(ED_EFMT("too many samples, maximum is %d"),
+			    ED_MAX_SAMPLES_NO);
 		    if (delay_first) {
 			points[points_no].delay = atof(name);
 			points[points_no].prob = atof(arg);

From nobody Tue Oct  6 18:36:15 2026
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 4hzlMN5GFTz6Z1vs;
	Tue, 06 Oct 2026 18:36:16 +0000 (UTC)
	(envelope-from jhb@FreeBSD.org)
Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83])
	(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 "smtp.freebsd.org", Issuer "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzlMN4m1Dz4DQr;
	Tue, 06 Oct 2026 18:36:16 +0000 (UTC)
	(envelope-from jhb@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791311776;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=L7cBEwQ8vmrUqDiFWOFNjcZaMURgefAzeVcaYQydXWI=;
	b=lhP+YQUwPrFEi7n09h4dxwYrcsg3i+s68SLKbJ4IBDc3X2ejCetjsomVJC2p3EC4pAe93m
	Pt/W6b2f8TrqfMN+btQpirK6Mli8b/lRJesWIQiruBoG2oy6UJlOV6VTuqTL4VKJwaD+YU
	bQSfL8qcGeuvO7lH/jVJc9RRmAL/ksr59lTgsYLeSOHeMQS8Y9TOvR/z8q79LNjAnaly17
	3+taTW+V/L9yDAASfSWylN36jlzWyzLjlahLmxP/svWHkx6Bt00ZWBzGrorZwU8dokePJ9
	bPYc5LBmz8EmXEE25R2CTWCJE2oVIH3hlyjLQVZlX4O+6DQOAgUl9nwjgrNeMA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791311776;
	b=pDP0gLNWyftKGNNGNPDRajJvixIUCqquFDgc2mDOfABYQiHkMB4eaRRPvq8LpJkoncycP2
	1lMpbyIav3J9CKogRl3BTbDdygdEqOC4bB4PccXG+BR90XhO12O2I0/xl86JWpglopcOYn
	9pUINWyApm1B5A5PUzaEvBnGvjmwXiovEKIUNMAHndhvhltblULasfzfVKEAO3xWi+BoGu
	ykEmf+J41YVnv3EXjsKEN+fe+yDHlLnjv+Pnga5DNuTCA1w2ySPd/493UoK9HQK+pQtXD+
	lYwT38ns6cDEVDLE61wu26CasFMCifQ15M7JqjGZZwvaEkJpPg2zBGUswacXSw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791311776;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=L7cBEwQ8vmrUqDiFWOFNjcZaMURgefAzeVcaYQydXWI=;
	b=SET/a+jagWN2p75uZmj/do+7/GPFFwGLpp8ux/0r2ST9KEgwDk0SEW8DFDwPOd93HHLQs9
	zOwQP6l1vEVqOWcztaU0ZxhBsKbgvyAOB8ooP44hl+e9q4ebgUXwPfLN1x+znZm9lFcA6M
	XjaWIchcMoPys4AZWHmxXhJnpkcLA0BLDCYmBGYwVeYhqKFmgazdWQcTdCr2OOm4lccV1F
	leycufp/gAWjPwitedojPyqpwZGL20groV7Ec/fFpWez+KylaFANPLVE3IiI3cS8Hf8Tz/
	Re44TT2sSeykyl/5PayWHoxSuBYL5lUmsYo8Ee/wB4byvfRrzdGINl/84Y14/g==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from [IPV6:2601:5cc:4480:1036:3129:49c9:2e6c:45d7] (unknown [IPv6:2601:5cc:4480:1036:3129:49c9:2e6c:45d7])
	(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
	 key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
	(Client did not present a certificate)
	(Authenticated sender: jhb)
	by smtp.freebsd.org (Postfix) with ESMTPSA id 4hzlMN27rSz1Byp;
	Tue, 06 Oct 2026 18:36:16 +0000 (UTC)
	(envelope-from jhb@FreeBSD.org)
Message-ID: <05459a0a-8b33-410b-a391-af94384e84b7@FreeBSD.org>
Date: Tue, 6 Oct 2026 14:36:15 -0400
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: git: bb5f10e51bd5 - main - linux: implement sched_getattr()
Content-Language: en-US
To: "Enji Cooper (yaneurabeya)" <yaneurabeya@gmail.com>,
 Mark Johnston <markj@FreeBSD.org>
Cc: Enji Cooper <ngie@freebsd.org>, src-committers@freebsd.org,
 dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org
References: <6ac42979.2608d.d368a5e@gitrepo.freebsd.org>
 <asQxIRIqvfkVQcCc@nuc> <EF976AFC-5327-4A2B-B982-92976CB9BB89@gmail.com>
From: John Baldwin <jhb@FreeBSD.org>
In-Reply-To: <EF976AFC-5327-4A2B-B982-92976CB9BB89@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 10/6/26 10:42, Enji Cooper (yaneurabeya) wrote:
> 
> ...
> 
>>> + attr.size = MIN(args->size, sizeof(attr));
> 
> …
> 
>>> + return (copyout(&attr, args->attr, args->size));
>>
>> So, this lets the caller decide how much stack data they want to copy
>> out, independent of sizeof(attr).  The only constraint is the
>> `args->size > PAGE_SIZE` check at the beginning of the function.
> 
> I eliminated a duplicate calculation in the copyout which contradicted the [Linux] documented interface [1].

.. and introduced a kernel stack disclosure (the kind of thing we normally
have to ship an SA for).  Using attr.size for the length here is the
correct solution.

&attr is on the stack, and it is only sizeof(attr) bytes in size.  If
you copy out _more_ bytes than sizeof(attr), you don't magically copy
out zeroes, you copy out _RANDOM KERNEL STACK DATA_.

> The interface documented by Linux allows the user to specify the amount of data to copy out (https://www.man7.org/linux/man-pages/man2/sched_getattr.2.html):
> 
>>   The fields of the sched_attr structure are as follows:
>>
>> size This field should be set to the size of the structure in
> bytes, as in sizeof(struct sched_attr). If the provided
> structure is smaller than the kernel structure, any
> additional fields are assumed to be '0'. If the provided
> structure is larger than the kernel structure, the kernel
> verifies that all additional fields are 0; if they are not,
> sched_setattr() fails with the error E2BIG and updates size
> to contain the size of the kernel structure.

Right, so the extra bytes in the case that args->size is
> sizeof(attr) are supposed to be all zeroes already (and you
are supposed to check that in the syscall if you aren't already)
so you don't need to copy them back out again, only the
sizeof(attr) bytes including the updated size.

This is not all that weird, and is similar to how we handle
cpuset masks which also can be differently sized than the
kernel's representation.

-- 
John Baldwin


From nobody Tue Oct  6 18:43:33 2026
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 4hzlWn49cdz6Z2DS
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 18:43:33 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzlWn3Kk1z4Fr3
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 18:43:33 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791312213;
	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=lw4+/AjK0r7GgadHR1XQotzrP0Y1/qscNiucxP3iKVQ=;
	b=jPzNXF5av044ALg2XxuEmD8UPotlyKK/HCVfYqUrQwy4s5xi2TJAEH2+9WLRtgO9kSuHYr
	gwQ2yp33APZBbDluymgyhmfLs3EX8yUrC/DM/YDpNq71bjZj60V/NWTyr+2rKYSZMVHp5h
	dKho3ROcN6dVsJGNClwnso1l3pjmQkc79XAudajBQYVvkhBkyCWIVhQWN9+LPzq+4eAMvM
	HFhpBc/HoPAU8TBqrIwsay8M2beKvtbzDX0bukWMerR0/BnIzBHGad0Q2BgUiX5arJqaYe
	1xnSZuopejMAi1PphoQqBjIFFWMyP1uShwxd2obTpuxFTC2lt6hhs2yctNDj2w==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791312213;
	b=D4uO7wRBMoW9vLwavGtUac9rY/uS9KC1AWdbAktdDJl81kkEOAdXsLbd8i5wfvA6HmZVqm
	szD8Xwjs0JIMXuIMTxKee5/HdOvySdOixPGOFTKjTnMNWY1dUK7FvULGkyP2cxF7138eFJ
	yn2OeE1o9cKzVFoab/778Vgx2GyftN9+dQtDCtxcCYWkd8/FPOBR75dJjEJ7TdTcAT8SmX
	N8MMepp2OIcx9/7vlI7mTraqeG9HwT7cXRYgc64BT8pLVOwOw3l90yCjVW4YX6S+/H1moO
	G4DezApzTcUEcAHGd3nCBGGDSD5xTnLiGmsVMkDiBTkNVyVApv/7680MK93+4w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791312213;
	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=lw4+/AjK0r7GgadHR1XQotzrP0Y1/qscNiucxP3iKVQ=;
	b=ZMiA+hmX20oqtx6P/WtPxA9K2UW84fHq3WKZHvtEa2wOWtP2IzJymK6k6EdUX1qc09q4VG
	icGjZ5RHzYkVCPDzB/RrJYJ7vZXVavB+KV0JUigVPk1pd12SrTiElRIRGyiAd24wF3k0kH
	XXqbhjCu0GTUIdx5wkIIV8ua5NuPnT1GKUgFdO915onRgsIXsvdL8xfbY0niMasD4tU6OI
	0xOGZwU1lAeq08/tHmE8xvob8TQwQur8rc3PQwxMM/Z6DRUAoYk0kcT+Ls1xJrxTcVI/Se
	7/mFHJhe4jOvxng9Cl3r6uIY2xYvVtD+5LSgxBEzqnJPRQ7Es61n7gUteiiFqg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzlWn2PTPzJ6c
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 18:43:33 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 3e34c
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 18:43:33 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Mitchell Horne <mhorne@FreeBSD.org>
Subject: git: 04aa36c01c68 - stable/15 - pmc.h: bump PMC_VERSION_MINOR
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: mhorne
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 04aa36c01c68c3ba93cdcb62f1f13f05b9b96da7
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 18:43:33 +0000
Message-Id: <6ac54155.3e34c.21307102@gitrepo.freebsd.org>

The branch stable/15 has been updated by mhorne:

URL: https://cgit.FreeBSD.org/src/commit/?id=04aa36c01c68c3ba93cdcb62f1f13f05b9b96da7

commit 04aa36c01c68c3ba93cdcb62f1f13f05b9b96da7
Author:     Mitchell Horne <mhorne@FreeBSD.org>
AuthorDate: 2026-03-16 23:35:35 +0000
Commit:     Mitchell Horne <mhorne@FreeBSD.org>
CommitDate: 2026-10-06 18:29:17 +0000

    pmc.h: bump PMC_VERSION_MINOR
    
    Bump for the addition of PMC_OP_GETCAPS and the recently added Intel
    CPUs.
    
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit e39d3a6b32331437da6c13a4aeb67e5bcca67625)
---
 sys/sys/pmc.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/sys/pmc.h b/sys/sys/pmc.h
index 7ac6eafdac4d..2630a5326aba 100644
--- a/sys/sys/pmc.h
+++ b/sys/sys/pmc.h
@@ -60,7 +60,7 @@
  * The patch version is incremented for every bug fix.
  */
 #define	PMC_VERSION_MAJOR	0x0A
-#define	PMC_VERSION_MINOR	0x00
+#define	PMC_VERSION_MINOR	0x01
 #define	PMC_VERSION_PATCH	0x0000
 
 #define	PMC_VERSION		(PMC_VERSION_MAJOR << 24 |		\

From nobody Tue Oct  6 18:43:32 2026
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 4hzlWt060Yz6Z2BT
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 18:43:38 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzlWs4mnGz4FNr
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 18:43:37 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791312217;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=ZXJLV0Sj7DxfQz7dBxdmLsMNDFzdV+E7T1O4ZD4G51Y=;
	b=PX2kBFV3AyxXi7f7NI7f2OkuXeiKsaVdemX9ZS8CcbTWpzGV4Xt6PEP+OWmAxd/Zj8tWKN
	xTsUWW7z6eALcQytn/CCITAhtfLiTF/gW8GijzRgb/Bh2Refrkr83sHM+SFvD4HWKlTNIg
	r57Ru7oaBa1swy8Hh88bovgd/tbajQRX3iJSnMSnZoGmF7gFGLBoX///GsTwzv5+tYAMUt
	Y2FoLVcgcVei1Q2U7g3FaoAolY9tuZ8RiMGFwxDj3IRyg0fm/qaq1roDBSjksfQcn59cPw
	KYpaMNUPOuQhpQsnu014qvhADoytQSZtEdRW4WdkF8quS+F2ye1cgBpoe9Vktw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791312217;
	b=M+WRHxo+lMWqiu8hrQIwAy0RsvDSVU1zr6cFvTbjWFa+5oAWkXLNr94blN5INX1UY1A4Hs
	o5HsYC2yqx3fjIexBEIW/VzEqQmRkSKw3ZrJzX7xyhLfyH6z2k/EGkW6R1JEC/wPeSSloR
	eGrciq6MuonpfS2/PGou08rJU/638S5IiKyVbhKZ8QCdWlqfYzOa7/DEYDMOmHyBFoxqnd
	8I85phPSp8LWbH3PyiwN4y+MnFdSP0rzg7+e6/+OnQF84mDNBOb5Iszt0uR1RV+4NU5E7H
	thWl1GU54R5qalw/4gA7WckC9ZJuogPM09dEQj2pRxnlSS4mp2UOVozwB9Q4YA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791312217;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=ZXJLV0Sj7DxfQz7dBxdmLsMNDFzdV+E7T1O4ZD4G51Y=;
	b=X5hMWQ82CK6+Zpc2FVaeBrOn9XTVv4HAPEMnQMsuc6118VLuo9gju94A90skqogkNVP21n
	rLKozBRcE5p9ClTyV0WmDt8IbJ7mFrc0jxOGqDPy83ufMUx1FDEu+WgZVdu5BrgrSvaGDU
	XkweXWbVqXT8l4Z+CAN3zWmVnQVMLFb9ZxJxPenopUW/tGkvL1B6CoOMOs7/RP/VMhthDO
	t28FBb7LlpKfZJh0FH865RL82592SvextruWxMIQVmKkKcOTs5iqcJaxcTTg0Cymt1Ixmw
	8b0jlLBZRK1abhZE9LYSfH+YJDoNLFCpQAxkbbNBc+Qaiq6Fm6NsJkC8w2sJ0Q==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzlWs3fCqzJ6g
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 18:43:37 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 3fb1f
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 18:43:32 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Cc: Ali Mashtizadeh <mashti@uwaterloo.ca>
From: Mitchell Horne <mhorne@FreeBSD.org>
Subject: git: 7c5caf70b6e9 - stable/15 - libpmc: Query hwpmc for caps
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: mhorne
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: 7c5caf70b6e9ec9de608480b841fb1d091f1d3ff
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 18:43:32 +0000
Message-Id: <6ac54154.3fb1f.25850f91@gitrepo.freebsd.org>

The branch stable/15 has been updated by mhorne:

URL: https://cgit.FreeBSD.org/src/commit/?id=7c5caf70b6e9ec9de608480b841fb1d091f1d3ff

commit 7c5caf70b6e9ec9de608480b841fb1d091f1d3ff
Author:     Ali Mashtizadeh <mashti@uwaterloo.ca>
AuthorDate: 2026-03-01 22:08:30 +0000
Commit:     Mitchell Horne <mhorne@FreeBSD.org>
CommitDate: 2026-10-06 18:27:57 +0000

    libpmc: Query hwpmc for caps
    
    This change allows for fine-grained capabilities per counter index. This
    is particularly useful for AMD where subclasses are not exposed to the
    general PMC code, but other architectures also have asymmetric behaviors
    when it comes to specific counter indices.
    
    A new PMC_OP_GETCAPS op is added to the hwpmc(4) ioctl interface.
    
    Reviewed by:    mhorne
    Sponsored by:   Netflix
    Pull Request:   https://github.com/freebsd/freebsd-src/pull/2058
    
    (cherry picked from commit 44a983d249d05d932b6cff333f130baf70febc22)
---
 lib/libpmc/libpmc.c       | 19 +++++++++----------
 share/man/man4/hwpmc.4    |  4 ++++
 sys/dev/hwpmc/hwpmc_amd.c | 15 +++++++++++++++
 sys/dev/hwpmc/hwpmc_mod.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
 sys/sys/pmc.h             | 15 ++++++++++++++-
 5 files changed, 87 insertions(+), 11 deletions(-)

diff --git a/lib/libpmc/libpmc.c b/lib/libpmc/libpmc.c
index 10e357f55935..aad9c2dff737 100644
--- a/lib/libpmc/libpmc.c
+++ b/lib/libpmc/libpmc.c
@@ -1168,17 +1168,16 @@ pmc_attach(pmc_id_t pmc, pid_t pid)
 int
 pmc_capabilities(pmc_id_t pmcid, uint32_t *caps)
 {
-	unsigned int i;
-	enum pmc_class cl;
+	struct pmc_op_caps args;
+	int status;
 
-	cl = PMC_ID_TO_CLASS(pmcid);
-	for (i = 0; i < cpu_info.pm_nclass; i++)
-		if (cpu_info.pm_classes[i].pm_class == cl) {
-			*caps = cpu_info.pm_classes[i].pm_caps;
-			return (0);
-		}
-	errno = EINVAL;
-	return (-1);
+	args.pm_pmcid = pmcid;
+	args.pm_caps = 0;
+
+	status = PMC_CALL(PMC_OP_GETCAPS, &args);
+	*caps = args.pm_caps;
+
+	return (status);
 }
 
 int
diff --git a/share/man/man4/hwpmc.4 b/share/man/man4/hwpmc.4
index 8bb1cb96f694..5b3e9a195b8c 100644
--- a/share/man/man4/hwpmc.4
+++ b/share/man/man4/hwpmc.4
@@ -325,6 +325,10 @@ This operation returns to the caller after the write operation
 has returned.
 The returned error code reflects any pending error state inside
 .Nm .
+.It Dv PMC_OP_GETCAPS
+Retrieve the capabilities associated with a specific PMC counter.
+Some capabilities may be limited to specific indices (i.e., not available
+across all counters within a class).
 .It Dv PMC_OP_GETCPUINFO
 Retrieve information about the highest possible CPU number for the system,
 and the number of hardware performance monitoring counters available per CPU.
diff --git a/sys/dev/hwpmc/hwpmc_amd.c b/sys/dev/hwpmc/hwpmc_amd.c
index 82d1a4c6180c..1ecea9dd28d0 100644
--- a/sys/dev/hwpmc/hwpmc_amd.c
+++ b/sys/dev/hwpmc/hwpmc_amd.c
@@ -695,6 +695,20 @@ amd_get_msr(int ri, uint32_t *msr)
 	return (0);
 }
 
+/*
+ * Return the capabilities of the given PMC.
+ */
+static int
+amd_get_caps(int ri, uint32_t *caps)
+{
+	KASSERT(ri >= 0 && ri < amd_npmcs,
+	    ("[amd,%d] ri %d out of range", __LINE__, ri));
+
+	*caps = amd_pmcdesc[ri].pm_descr.pd_caps;
+
+	return (0);
+}
+
 /*
  * Processor-dependent initialization.
  */
@@ -1022,6 +1036,7 @@ pmc_amd_initialize(void)
 	pcd->pcd_start_pmc	= amd_start_pmc;
 	pcd->pcd_stop_pmc	= amd_stop_pmc;
 	pcd->pcd_write_pmc	= amd_write_pmc;
+	pcd->pcd_get_caps	= amd_get_caps;
 
 	pmc_mdep->pmd_cputype	= cputype;
 	pmc_mdep->pmd_intr	= amd_intr;
diff --git a/sys/dev/hwpmc/hwpmc_mod.c b/sys/dev/hwpmc/hwpmc_mod.c
index 342b600276b0..de6beb165c66 100644
--- a/sys/dev/hwpmc/hwpmc_mod.c
+++ b/sys/dev/hwpmc/hwpmc_mod.c
@@ -4583,6 +4583,51 @@ pmc_syscall_handler(struct thread *td, void *syscall_args)
 	}
 	break;
 
+	/*
+	 * Get the PMC capabilities
+	 */
+
+	case PMC_OP_GETCAPS:
+	{
+		struct pmc_op_caps c;
+		struct pmc *pm;
+		struct pmc_classdep *pcd;
+		pmc_id_t pmcid;
+		int adjri, ri;
+
+		PMC_DOWNGRADE_SX();
+
+		if ((error = copyin(arg, &c, sizeof(c))) != 0)
+			break;
+
+		pmcid = c.pm_pmcid;
+
+		if ((error = pmc_find_pmc(pmcid, &pm)) != 0)
+			break;
+
+		KASSERT(pmcid == pm->pm_id,
+		    ("[pmc,%d] pmc id %x != pmcid %x", __LINE__,
+			pm->pm_id, pmcid));
+
+		ri = PMC_TO_ROWINDEX(pm);
+		pcd = pmc_ri_to_classdep(md, ri, &adjri);
+
+		/*
+		 * If PMC class has no GETCAPS return the class capabilities
+		 * otherwise get the per counter capabilities.
+		 */
+		if (pcd->pcd_get_caps == NULL) {
+			c.pm_caps = pcd->pcd_caps;
+		} else {
+			error = (*pcd->pcd_get_caps)(adjri, &c.pm_caps);
+			if (error < 0)
+				break;
+		}
+
+		if ((error = copyout(&c, arg, sizeof(c))) < 0)
+			break;
+	}
+	break;
 
 	default:
 		error = EINVAL;
diff --git a/sys/sys/pmc.h b/sys/sys/pmc.h
index 726a03c35502..7ac6eafdac4d 100644
--- a/sys/sys/pmc.h
+++ b/sys/sys/pmc.h
@@ -348,7 +348,8 @@ enum pmc_event {
 	__PMC_OP(PMCSTOP, "Stop a PMC")					\
 	__PMC_OP(WRITELOG, "Write a cookie to the log file")		\
 	__PMC_OP(CLOSELOG, "Close log file")				\
-	__PMC_OP(GETDYNEVENTINFO, "Get dynamic events list")
+	__PMC_OP(GETDYNEVENTINFO, "Get dynamic events list")		\
+	__PMC_OP(GETCAPS, "Get capabilities")
 
 enum pmc_ops {
 #undef	__PMC_OP
@@ -639,6 +640,17 @@ struct pmc_op_getdyneventinfo {
 	struct pmc_dyn_event_descr	pm_events[PMC_EV_DYN_COUNT];
 };
 
+/*
+ * OP GETCAPS
+ *
+ * Retrieve the PMC capabilties flags for this type of counter.
+ */
+
+struct pmc_op_caps {
+	pmc_id_t	pm_pmcid;	/* allocated pmc id */
+	uint32_t	pm_caps;	/* capabilities */
+};
+
 #ifdef _KERNEL
 
 #include <sys/malloc.h>
@@ -1031,6 +1043,7 @@ struct pmc_classdep {
 	/* description */
 	int (*pcd_describe)(int _cpu, int _ri, struct pmc_info *_pi,
 		struct pmc **_ppmc);
+	int (*pcd_get_caps)(int _ri, uint32_t *_caps);
 
 	/* class-dependent initialization & finalization */
 	int (*pcd_pcpu_init)(struct pmc_mdep *_md, int _cpu);

From nobody Tue Oct  6 18:49:04 2026
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 4hzlf84Jx1z6Z2fc
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 18:49:04 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzlf81QcJz4Gj7
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 18:49:04 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791312544;
	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=ThGjAoqI/UwqO0P591Kbx/UkxGMne1u3NCH22GEPUoc=;
	b=VT5XI3tZxN06XkS/wKSQBPb5YuHmlIs69p/IyumgF4AIGtQgdxLasn3EpbSI/c6zgKz1nH
	SqXrDFOmZQjCgGAeJnvzUi1OHb9typVJPa+uWreDZ1m2zRN3j0FA/Box1FptIdKUo6h8R0
	Bnt03A7i3PwFehOFsBbzwYYqNmTuDdminEZFgtUvNs+/5GkXuH1CyylT8ouTB7xLUKVLyC
	pT5FniTDtj+wkWI5DmloffNrsKiWBPPXSR75F2NRJ6gcgYjgawUfo+Ic5NjESOCgr/Iv+i
	dvlFdlqu2f4XaBWhMwkvJm9zryWxitfBJpoYSLp+VKXIuJm7Ug+hvXlZ/7cBfw==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791312544;
	b=eg/rDbsW5xSNzY8PVe9BnDvQF+y1mqiJ4KTY7kIYsc9ZlO6mtO4geTnzpu6XW7SyV1cexn
	yYpEdLA7xVovWMdfq9G/mz7eI5zUmJyCdr4M1h7yvhrDxX6q/9YylBv9VEPtY6Zc66L3PL
	2f8ty1weUgynfkz19sJKWexw3XdTU5R+8mqAQOYlfC1+B46pgil/5K0VFmS3TehY99mvcs
	7qakU18pWICsVikJXmf2KiCdBsvAnMg3dML8oplk3ChopCnPIHgj6acG68gddhh6lECIra
	ghdIn4RpmtltC3MhlwegkTST0wWSsZBeXQixQ18C5RkkZr8wJ9feJ2rgq54HbQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791312544;
	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=ThGjAoqI/UwqO0P591Kbx/UkxGMne1u3NCH22GEPUoc=;
	b=tfaZiI7F5pH5Dn/aTn7oLcXF990e1pafyrlefSIqbrBBDi6VpttEgm2Jls1Qzia/C3pku4
	XgYSXleCCBiUdnzcWoS1qcyu6GdZx2zPcdq2KcrpH8F3Yc9kSOzq81pY6K+R4BophT3MnM
	mVgJxiSYOx+/DYdzeB9W2Dnj0xhrlnfW586QGbdOKyKInE+ur1iEUKakixuNgl3x8NlXQN
	tncRzGzZnu+sZGTb3eaO4ekkR9Rvk3AcQVJgA79pqPtJdHcrxwkrG+4IjmvSY8GZK1w4Lc
	IlPReXtG+GwwVX73AVmuOuP7hYLYWg1xbtGYm/X7Vaje/CSmc0BgClQ7ygfvyA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzlf807sdzH0G
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 18:49:04 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 3f527
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 18:49:04 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
From: Mitchell Horne <mhorne@FreeBSD.org>
Subject: git: 3e8ce3834ad5 - stable/14 - pmc.h: bump PMC_VERSION_MINOR
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: mhorne
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/14
X-Git-Reftype: branch
X-Git-Commit: 3e8ce3834ad5d0e1c10ed9e32b721c23c991296e
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 18:49:04 +0000
Message-Id: <6ac542a0.3f527.688e7e65@gitrepo.freebsd.org>

The branch stable/14 has been updated by mhorne:

URL: https://cgit.FreeBSD.org/src/commit/?id=3e8ce3834ad5d0e1c10ed9e32b721c23c991296e

commit 3e8ce3834ad5d0e1c10ed9e32b721c23c991296e
Author:     Mitchell Horne <mhorne@FreeBSD.org>
AuthorDate: 2026-03-16 23:35:35 +0000
Commit:     Mitchell Horne <mhorne@FreeBSD.org>
CommitDate: 2026-10-06 18:48:43 +0000

    pmc.h: bump PMC_VERSION_MINOR
    
    Bump for the addition of PMC_OP_GETCAPS and the recently added Intel
    CPUs.
    
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit e39d3a6b32331437da6c13a4aeb67e5bcca67625)
---
 sys/sys/pmc.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/sys/pmc.h b/sys/sys/pmc.h
index 06987e91b942..5f6b03a028dd 100644
--- a/sys/sys/pmc.h
+++ b/sys/sys/pmc.h
@@ -60,7 +60,7 @@
  * The patch version is incremented for every bug fix.
  */
 #define	PMC_VERSION_MAJOR	0x0A
-#define	PMC_VERSION_MINOR	0x00
+#define	PMC_VERSION_MINOR	0x01
 #define	PMC_VERSION_PATCH	0x0000
 
 #define	PMC_VERSION		(PMC_VERSION_MAJOR << 24 |		\

From nobody Tue Oct  6 18:49:02 2026
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 4hzlfD5JZWz6Z33P
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 18:49:08 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzlfD1cxqz4GnS
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 18:49:08 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791312548;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=WJCOrpdhMg+kjOHr7IK7eyB9Usx10k7b6S88KXUK1So=;
	b=Ut8K7XeXQPOGVUyJqFakMBg8YF7PexLARQ1wLxdCLNzYWbs9LtqIfUum/VEUSzu7s4csOY
	uh7fWVFCDe2f1DeVkYoCzOIdAb6JWuy/42SdYbLds0bWYCk7iJoPG/jMyRx97DOLW8Npf+
	7IS73cOWlAI9em5/A+tViqToYH5MkkgoDXEahBPy7LnUNflO0TZZWSIpkPU7VKz2X/X3k8
	Gx0sU6lO2Mng8bSe70TujkBbpSZwkE6b6HHogZUCtyoRzy9sq5F2wQYegTfv/0pioJrGw7
	aWtcbpWALRAyFeFAk25ux55QCm0HEgefFVvTE15Om8c4YviLGMP0uKwPFOO3sA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791312548;
	b=Yn1Iv8y4Nnt6QwD2VDTNfkK2UZFZP6xCgF4VS6NkarkdwREZnXHBgcwOU+OEKAk8Sa7IGx
	HrBGd/h7kqvRq97jX9k63GSooL3wWsvdVcIS4AkAREKpFwSikW5F4rdbY1W8RDAscaUBU/
	jpElRXsT4CrSDS687qpktdoNYmTIQWAi9Q75Cey1F5trToNF/s/LHOFOApHquziK6xyOvl
	j4CGgpg3w7Z8CKl+IvLHg1+xraaAknKkezUbfFJ5a9Fy/gwTXQytcA9L1YWWGR3Ph2h5JY
	1+B+DTIGd1G7qDjUA5fHmjmx7Z5FaQ0vNfZf8yeiFR0HVsRcnUc7RjE49UT2Gw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791312548;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=WJCOrpdhMg+kjOHr7IK7eyB9Usx10k7b6S88KXUK1So=;
	b=cYWh7IRyTB79hHdjMVonoIA8xsSQG2MLiLshEixJQ+g4/dlcryp1Vp+5BP1Ta94xBd/++N
	4+dW8O7+RWlbP3y9Z/GLc3jlh+FSyls1F7Bc8v1EjISgIVUe9mEkrqnHvKHE56O3Ygo8Pi
	FFQPhxrBsLgS7D8ybOOUP4hLl5AlPtMn8me1vu1+ePAu2/Gve6iYyw10G83q1UlQWE7Suw
	/YEpBbR5O20OobtYAt+11dTUjQVRZ4fpF5Na+nqI7hurhAioI00Ese/zsfikD61UTboD2/
	SKcSfUI2wm5zhpWooz7ZEAtuW21XjwoAMPGBdj1DUCupx2KFp75hbk+EE++vFg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzlfC74ZvzJB4
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 18:49:07 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 3ed9c
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 18:49:02 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Cc: Ali Mashtizadeh <mashti@uwaterloo.ca>
From: Mitchell Horne <mhorne@FreeBSD.org>
Subject: git: 1cc380dbe814 - stable/14 - libpmc: Query hwpmc for caps
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: mhorne
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/14
X-Git-Reftype: branch
X-Git-Commit: 1cc380dbe8148d86ba655a92d663da0fd05fb03f
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 18:49:02 +0000
Message-Id: <6ac5429e.3ed9c.7ac1ff5@gitrepo.freebsd.org>

The branch stable/14 has been updated by mhorne:

URL: https://cgit.FreeBSD.org/src/commit/?id=1cc380dbe8148d86ba655a92d663da0fd05fb03f

commit 1cc380dbe8148d86ba655a92d663da0fd05fb03f
Author:     Ali Mashtizadeh <mashti@uwaterloo.ca>
AuthorDate: 2026-03-01 22:08:30 +0000
Commit:     Mitchell Horne <mhorne@FreeBSD.org>
CommitDate: 2026-10-06 18:48:37 +0000

    libpmc: Query hwpmc for caps
    
    This change allows for fine-grained capabilities per counter index. This
    is particularly useful for AMD where subclasses are not exposed to the
    general PMC code, but other architectures also have asymmetric behaviors
    when it comes to specific counter indices.
    
    A new PMC_OP_GETCAPS op is added to the hwpmc(4) ioctl interface.
    
    Reviewed by:    mhorne
    Sponsored by:   Netflix
    Pull Request:   https://github.com/freebsd/freebsd-src/pull/2058
    
    (cherry picked from commit 44a983d249d05d932b6cff333f130baf70febc22)
---
 lib/libpmc/libpmc.c       | 19 +++++++++----------
 share/man/man4/hwpmc.4    |  4 ++++
 sys/dev/hwpmc/hwpmc_amd.c | 15 +++++++++++++++
 sys/dev/hwpmc/hwpmc_mod.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
 sys/sys/pmc.h             | 15 ++++++++++++++-
 5 files changed, 87 insertions(+), 11 deletions(-)

diff --git a/lib/libpmc/libpmc.c b/lib/libpmc/libpmc.c
index f10a64e28cac..c6aaf5cdec16 100644
--- a/lib/libpmc/libpmc.c
+++ b/lib/libpmc/libpmc.c
@@ -1169,17 +1169,16 @@ pmc_attach(pmc_id_t pmc, pid_t pid)
 int
 pmc_capabilities(pmc_id_t pmcid, uint32_t *caps)
 {
-	unsigned int i;
-	enum pmc_class cl;
+	struct pmc_op_caps args;
+	int status;
 
-	cl = PMC_ID_TO_CLASS(pmcid);
-	for (i = 0; i < cpu_info.pm_nclass; i++)
-		if (cpu_info.pm_classes[i].pm_class == cl) {
-			*caps = cpu_info.pm_classes[i].pm_caps;
-			return (0);
-		}
-	errno = EINVAL;
-	return (-1);
+	args.pm_pmcid = pmcid;
+	args.pm_caps = 0;
+
+	status = PMC_CALL(PMC_OP_GETCAPS, &args);
+	*caps = args.pm_caps;
+
+	return (status);
 }
 
 int
diff --git a/share/man/man4/hwpmc.4 b/share/man/man4/hwpmc.4
index 54a251dcca76..1ab690e5009c 100644
--- a/share/man/man4/hwpmc.4
+++ b/share/man/man4/hwpmc.4
@@ -325,6 +325,10 @@ This operation returns to the caller after the write operation
 has returned.
 The returned error code reflects any pending error state inside
 .Nm .
+.It Dv PMC_OP_GETCAPS
+Retrieve the capabilities associated with a specific PMC counter.
+Some capabilities may be limited to specific indices (i.e., not available
+across all counters within a class).
 .It Dv PMC_OP_GETCPUINFO
 Retrieve information about the highest possible CPU number for the system,
 and the number of hardware performance monitoring counters available per CPU.
diff --git a/sys/dev/hwpmc/hwpmc_amd.c b/sys/dev/hwpmc/hwpmc_amd.c
index 8e1a6ad25be7..1e8f1421eca2 100644
--- a/sys/dev/hwpmc/hwpmc_amd.c
+++ b/sys/dev/hwpmc/hwpmc_amd.c
@@ -919,6 +919,20 @@ amd_get_msr(int ri, uint32_t *msr)
 	return (0);
 }
 
+/*
+ * Return the capabilities of the given PMC.
+ */
+static int
+amd_get_caps(int ri, uint32_t *caps)
+{
+	KASSERT(ri >= 0 && ri < amd_npmcs,
+	    ("[amd,%d] ri %d out of range", __LINE__, ri));
+
+	*caps = amd_pmcdesc[ri].pm_descr.pd_caps;
+
+	return (0);
+}
+
 /*
  * processor dependent initialization.
  */
@@ -1144,6 +1158,7 @@ pmc_amd_initialize(void)
 	pcd->pcd_start_pmc	= amd_start_pmc;
 	pcd->pcd_stop_pmc	= amd_stop_pmc;
 	pcd->pcd_write_pmc	= amd_write_pmc;
+	pcd->pcd_get_caps	= amd_get_caps;
 
 	pmc_mdep->pmd_intr	= amd_intr;
 	pmc_mdep->pmd_switch_in = amd_switch_in;
diff --git a/sys/dev/hwpmc/hwpmc_mod.c b/sys/dev/hwpmc/hwpmc_mod.c
index 216430e3ef5c..0a5ee8c18e13 100644
--- a/sys/dev/hwpmc/hwpmc_mod.c
+++ b/sys/dev/hwpmc/hwpmc_mod.c
@@ -4586,6 +4586,51 @@ pmc_syscall_handler(struct thread *td, void *syscall_args)
 	}
 	break;
 
+	/*
+	 * Get the PMC capabilities
+	 */
+
+	case PMC_OP_GETCAPS:
+	{
+		struct pmc_op_caps c;
+		struct pmc *pm;
+		struct pmc_classdep *pcd;
+		pmc_id_t pmcid;
+		int adjri, ri;
+
+		PMC_DOWNGRADE_SX();
+
+		if ((error = copyin(arg, &c, sizeof(c))) != 0)
+			break;
+
+		pmcid = c.pm_pmcid;
+
+		if ((error = pmc_find_pmc(pmcid, &pm)) != 0)
+			break;
+
+		KASSERT(pmcid == pm->pm_id,
+		    ("[pmc,%d] pmc id %x != pmcid %x", __LINE__,
+			pm->pm_id, pmcid));
+
+		ri = PMC_TO_ROWINDEX(pm);
+		pcd = pmc_ri_to_classdep(md, ri, &adjri);
+
+		/*
+		 * If PMC class has no GETCAPS return the class capabilities
+		 * otherwise get the per counter capabilities.
+		 */
+		if (pcd->pcd_get_caps == NULL) {
+			c.pm_caps = pcd->pcd_caps;
+		} else {
+			error = (*pcd->pcd_get_caps)(adjri, &c.pm_caps);
+			if (error < 0)
+				break;
+		}
+
+		if ((error = copyout(&c, arg, sizeof(c))) < 0)
+			break;
+	}
+	break;
 
 	default:
 		error = EINVAL;
diff --git a/sys/sys/pmc.h b/sys/sys/pmc.h
index d190632f7a9b..06987e91b942 100644
--- a/sys/sys/pmc.h
+++ b/sys/sys/pmc.h
@@ -349,7 +349,8 @@ enum pmc_event {
 	__PMC_OP(PMCSTOP, "Stop a PMC")					\
 	__PMC_OP(WRITELOG, "Write a cookie to the log file")		\
 	__PMC_OP(CLOSELOG, "Close log file")				\
-	__PMC_OP(GETDYNEVENTINFO, "Get dynamic events list")
+	__PMC_OP(GETDYNEVENTINFO, "Get dynamic events list")		\
+	__PMC_OP(GETCAPS, "Get capabilities")
 
 enum pmc_ops {
 #undef	__PMC_OP
@@ -640,6 +641,17 @@ struct pmc_op_getdyneventinfo {
 	struct pmc_dyn_event_descr	pm_events[PMC_EV_DYN_COUNT];
 };
 
+/*
+ * OP GETCAPS
+ *
+ * Retrieve the PMC capabilties flags for this type of counter.
+ */
+
+struct pmc_op_caps {
+	pmc_id_t	pm_pmcid;	/* allocated pmc id */
+	uint32_t	pm_caps;	/* capabilities */
+};
+
 #ifdef _KERNEL
 
 #include <sys/malloc.h>
@@ -1030,6 +1042,7 @@ struct pmc_classdep {
 	/* description */
 	int (*pcd_describe)(int _cpu, int _ri, struct pmc_info *_pi,
 		struct pmc **_ppmc);
+	int (*pcd_get_caps)(int _ri, uint32_t *_caps);
 
 	/* class-dependent initialization & finalization */
 	int (*pcd_pcpu_init)(struct pmc_mdep *_md, int _cpu);

From nobody Tue Oct  6 18:53:52 2026
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 4hzllh29K5z6Z3L3
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 18:53:52 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzllh1L7dz4J43
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 18:53:52 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791312832;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=jENtJj4cK2nRjRLtALRFKHsSIY6zyS5zOqshs46iD2I=;
	b=osfsmeq+qJv+aprTp4qRsnNW9hKd+FLLCRb8GyK55QnRqlTQ+LN7K2T0lAXRG4vbkSrPwe
	Pj+r6Yq6CuaIq6LShOyMVI3pi2gJ0b8mDhAwrcnwdMBSRirinGzA6VU8a1rG3qXdHckhjt
	fegvECSFSrl6OH/fgmpMgahSjwfiJ8JcMmaKnIC4tt7dmUtPGUXa9k0epdlI2SL3sdEQBV
	ltlF42PHSMKHTjNWc0F4BOFq395G4T7xzYHqLcHgqkE/cFen+QZ5RomQbXGGhiEaorZwjV
	lwJD3BJVzxJqMH2DQVS2n+zYsIPAC0upWllCHKrTzUVacli7fVu8HGsM0Fp1gQ==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791312832;
	b=UzUGgINud90RZIbUQGpLNko9nzZCmpyBNgUjm634qNxMpqrsEJRRIarPnuBSL/Sy3eMxlL
	tdkBNuKgwnWMchOCVgzrtCjq5PzLQ9kvVBrxDW3Px+H+Fo1/D15ByZK/p2dGEf7gSFepU/
	og0rS0iFmhxUpyEOdajMRllLiO8J4DPPpA2iiCfCYicB3JZ/mbAKjsADoCCgnCKZ8xPjv/
	LOXZLUsWaQBAcOXArWXnWL7Xs5haQCFhPV2Rlu72qG5WuT7WtLvulLiWe79uMr3N9K2Nfk
	AOKEGyUYkD2758k38kflHkV7ZKJ2LBwOGV/peym2Jo348tLMFcfK8B4mJqIRqg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791312832;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=jENtJj4cK2nRjRLtALRFKHsSIY6zyS5zOqshs46iD2I=;
	b=unQVCLTYlOabqXLS+CMiP7jFcDOp9WU5Sb3GuYBqk50U42bfJTAfQGv+0NqIXdSGZWHJKL
	1mcnwgc6503tmEKLqqyHSZo77Vzsew0nx3qqg2wrX2ChS+NAzjKb/BuuyqhYoKvNpUutsH
	w1FbH0pKL/hER/7ARMgk/ifqRk9W4z+VNBmfJTftH2bRyEX+GNa+PigNcNXd/akbgK20WN
	B/e8EHoHKnSnqE4DiYE03P2uGkRjS4nYOjePCt9khdEahN0XCGYyLZmH6P9n1vrZ7G9xMe
	7C6ifRiIURgXrnYgW/ygu4peQsPpx6KMP4Yo4m7+VXedFjqrx+tkbB1ywCwqqA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzllh0QHVzHrd
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 18:53:52 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 40061
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 18:53:52 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Cc: Andre Silva <andasilv@amd.com>
From: Mitchell Horne <mhorne@FreeBSD.org>
Subject: git: 572cd669d699 - main - hwpmc: handle delayed IBS NMIs on Zen 6
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: mhorne
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 572cd669d6997b759084191007f3744a3610b529
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 18:53:52 +0000
Message-Id: <6ac543c0.40061.62706664@gitrepo.freebsd.org>

The branch main has been updated by mhorne:

URL: https://cgit.FreeBSD.org/src/commit/?id=572cd669d6997b759084191007f3744a3610b529

commit 572cd669d6997b759084191007f3744a3610b529
Author:     Andre Silva <andasilv@amd.com>
AuthorDate: 2026-10-06 18:42:35 +0000
Commit:     Mitchell Horne <mhorne@FreeBSD.org>
CommitDate: 2026-10-06 18:53:44 +0000

    hwpmc: handle delayed IBS NMIs on Zen 6
    
    On Zen 6, an extra IBS NMI can arrive after later samples. Keep the
    credit until the empty NMI arrives, and handle fetch and op samples when
    both are ready.
    
    Reviewed by:    mhorne
    Fixes:  34b00ed041a4 ("hwpmc: fix IBS fetch and op NMI handling")
    Fixes:  e51ef8ae490f ("hwpmc: Initial support for AMD IBS")
    Sponsored by:   AMD
    Differential Revision:  https://reviews.freebsd.org/D60367
---
 sys/dev/hwpmc/hwpmc_ibs.c | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/sys/dev/hwpmc/hwpmc_ibs.c b/sys/dev/hwpmc/hwpmc_ibs.c
index be981b0c7a07..60e7323dbcb8 100644
--- a/sys/dev/hwpmc/hwpmc_ibs.c
+++ b/sys/dev/hwpmc/hwpmc_ibs.c
@@ -48,6 +48,7 @@
 #include <machine/specialreg.h>
 
 #define	IBS_STOP_ITER		50 /* Stopping iterations */
+#define	IBS_NMI_CREDIT_MAX	2  /* Max owed IBS NMIs per CPU */
 
 /* AMD IBS PMCs */
 struct ibs_descr {
@@ -97,7 +98,7 @@ SYSCTL_U64(_kern_hwpmc, OID_AUTO, ibs_op_ctl2_extra_mask, CTLFLAG_RDTUN,
 
 struct ibs_cpu {
 	int		pc_status;
-	int		pc_nmi_credit;	/* latched NMIs already serviced */
+	int		pc_nmi_credit;	/* owed NMIs already serviced */
 	struct pmc_hw	pc_ibspmcs[IBS_NPMCS];
 };
 static struct ibs_cpu **ibs_pcpu;
@@ -725,13 +726,21 @@ pmc_ibs_intr(struct trapframe *tf)
 	}
 
 	/*
-	 * When both units were serviced, the second unit's NMI may still be
-	 * latched and will arrive with no valid bit set.  Claim that one
-	 * NMI so it is not reported as unknown.
+	 * When both units were serviced, the second unit's NMI is still
+	 * owed and will arrive with no valid bit set.  It is not always
+	 * the next NMI: on Zen 6 one or more NMIs carrying a single new
+	 * sample can arrive first, and those may carry both samples again.
+	 * Count the owed NMIs and let each NMI with no valid bit consume one,
+	 * so they are not reported as unknown.  Cap the count, since every
+	 * leftover credit would hide a genuine unknown NMI later.
 	 */
-	if (retval == 0 && pac->pc_nmi_credit != 0)
+	if (retval == 2) {
+		if (pac->pc_nmi_credit < IBS_NMI_CREDIT_MAX)
+			pac->pc_nmi_credit++;
+	} else if (retval == 0 && pac->pc_nmi_credit > 0) {
+		pac->pc_nmi_credit--;
 		retval = 1;
-	pac->pc_nmi_credit = (retval == 2);
+	}
 	if (retval > 1)
 		retval = 1;
 

From nobody Tue Oct  6 19:10:42 2026
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 4hzm7C2GMQz6Z4gK
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 19:10:47 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzm7C1hGQz4L1X
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 19:10:47 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791313847;
	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=mAq9WhhLvU5eGN67ahVxMKG5w6p60gwjTRhNG/+nJ1o=;
	b=jXQoB36mcBYOgmDxPMW6Ym07+PbfXgupyfu7Nur0wGEmPH2QaKNNUCJKwUcWAURzm15Q5L
	PwnFsW+6rMqEA5gUP6NmvaCImqzRhb+aqtzX9/xeIFxSaEs7v51SjmE6clPT3kUYrJVGf5
	HqWynqOGz878FEXTwqeXN07TASI9ff+0uAwwFs+qDHlpCphqRmB2AfdmpizwKYUwT4zoZP
	M8DgnUm1enLlbtkAS29XzybD5gQKh0SUmOAQpjFGu4tYssjSHHE5W6gAY8tPL1inee5Hnb
	f7SdR2YB2aHZMcPmBa3wIlaIlclFxMDetaYwPJ7nwOBg9dyGo2IzLyWG7pcHDA==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791313847;
	b=BqRV+odPFLpY6ZiwjEWex3Hb+c9YjCRLt+juCgy3M1ZrJkwQaTr5Tyj03QJ8ynrk4oDWcG
	WySXD5k9w9F/Bv89g9iobN0Xn9RET/Sizwa57OeAAHr8bQNRbn3ELKIBN0sOuMVZ70Qytf
	Iq+NNCnvpivJtMvs8kwrLWbYwETuy7HiC7vei5kqABIWn63QxuSa5J6mgiA43aNyxSkhMh
	z9khpiJGgMFdRtsWh062rkq+I/3/gMiYrZOIerzJ3JExqkAuxX7Txi5NCuF+w6GbYn1uiA
	RBPER3c9HnKoy3x+Y82aHMRCk0qht67FLLDoaC+8Tr+/c1hKCII7AX0ZFKX30g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791313847;
	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=mAq9WhhLvU5eGN67ahVxMKG5w6p60gwjTRhNG/+nJ1o=;
	b=eZHaliQUr5+OR7lwVrxxja1kLOCNvBXKMJ8RUi+5KLAtLTqoDCuDIgtauj/EO8lteAK+gT
	YePyZZGD87p9b2VY/S9qdWSK5HgF+AZJF5mr97tEiO6mPCSd4ZiC/7AM9OFCEOdAauYF/G
	KzN6OChvt4dhT/AbZzBYc9c+pwZQcTWxKxnKGK8MCmd30zSxjq/SYqNRIO5EVp0Rogs1Oa
	fpqSzQRNhpsrvhHPm/o1MHV08pXxtqw+rAhSdrIzO6JLD8oNFaT8ebsvwFswHRkGe9VzmT
	QLW3uuEQfeDL7j6t96qHOKUleD5I6pEhg/zFCe4ZMwZ8/io/5fjCtR+mOqzIsw==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzm7C0lQszJsN
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 19:10:47 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 41b9b
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 19:10:42 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
From: Ruslan Bukin <br@FreeBSD.org>
Subject: git: 3e01ebda6829 - main - riscv: support the new "riscv,isa-extensions" string-array.
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: br
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 3e01ebda68291db307a5e6c23d4995c638be9228
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 19:10:42 +0000
Message-Id: <6ac547b2.41b9b.2c404c63@gitrepo.freebsd.org>

The branch main has been updated by br:

URL: https://cgit.FreeBSD.org/src/commit/?id=3e01ebda68291db307a5e6c23d4995c638be9228

commit 3e01ebda68291db307a5e6c23d4995c638be9228
Author:     Ruslan Bukin <br@FreeBSD.org>
AuthorDate: 2026-10-06 18:55:39 +0000
Commit:     Ruslan Bukin <br@FreeBSD.org>
CommitDate: 2026-10-06 19:09:04 +0000

    riscv: support the new "riscv,isa-extensions" string-array.
    
    Support the new "riscv,isa-extensions" property on RISC-V hart nodes
    in FDT.
    
    The "riscv,isa" property is deprecated, but cannot be removed because
    doing so would break compatibility with existing DTBs. The new properties
    replace it: "riscv,isa-base" describes the base ISA and
    "riscv,isa-extensions" is a string array containing the supported ISA
    extensions.
    
    The "riscv,isa-extensions" property can be relatively large; on the
    Spacemit K3 SoC it is approximately 300 bytes.
    
    The FreeBSD OFW interface does not provide access to the underlying FDT
    property data without copying it, and memory allocation is not possible
    this early. So allocate a static buffer for the property instead.
    
    Reuse the existing parse_riscv_isa() implementation to parse both the new
    extension property and the legacy "riscv,isa" property.
    
    Reviewed by:    bnovkov, mhorne
    Sponsored by:   EPSRC ("UKRI3001: CHERI Research Centre")
    Differential Revision:  https://reviews.freebsd.org/D60209
---
 sys/riscv/riscv/identcpu.c | 106 ++++++++++++++++++++++++++++++++++-----------
 1 file changed, 80 insertions(+), 26 deletions(-)

diff --git a/sys/riscv/riscv/identcpu.c b/sys/riscv/riscv/identcpu.c
index ca1b2b9ae1af..81e8afde8499 100644
--- a/sys/riscv/riscv/identcpu.c
+++ b/sys/riscv/riscv/identcpu.c
@@ -86,6 +86,8 @@ bool has_zicbom;
 bool has_zicboz;
 bool has_zicbop;
 
+static char isa_extensions[PAGE_SIZE];
+
 struct cpu_desc {
 	const char	*cpu_mvendor_name;
 	const char	*cpu_march_name;
@@ -271,14 +273,7 @@ parse_riscv_isa(struct cpu_desc *desc, char *isa, int len)
 {
 	int i;
 
-	/* Check the string prefix. */
-	if (strncmp(isa, ISA_PREFIX, ISA_PREFIX_LEN) != 0) {
-		printf("%s: Unrecognized ISA string: %s\n", __func__, isa);
-		return (-1);
-	}
-
-	i = ISA_PREFIX_LEN;
-	while (i < len) {
+	for (i = 0; i < len; ) {
 		switch(isa[i]) {
 		case 'a':
 		case 'b':
@@ -372,14 +367,82 @@ parse_cbo_fdt(struct cpu_desc *desc, phandle_t node)
 		desc->cboz_block_size = 0;
 }
 
+static int
+parse_isa_extensions(phandle_t node, u_int cpu, struct cpu_desc *desc)
+{
+	ssize_t len, off, i;
+	char *ext;
+
+	len = OF_getprop(node, "riscv,isa-extensions", isa_extensions,
+	    sizeof(isa_extensions));
+	if (len == -1)
+		return (ESRCH);
+	if (len > sizeof(isa_extensions))
+		panic("isa_extensions string truncated");
+
+	for (i = 0; i < len; i++)
+		isa_extensions[i] = tolower(isa_extensions[i]);
+
+	for (off = 0; off < len; ) {
+		ext = isa_extensions + off;
+		if (*ext == '\0')
+			break;
+		if (bootverbose)
+			printf("riscv extension: %s\n", ext);
+		parse_riscv_isa(desc, ext, strlen(ext));
+		off += strlen(ext) + 1;
+	}
+
+	return (0);
+}
+
+static int
+parse_riscv_isa_legacy(phandle_t node, u_int cpu, struct cpu_desc *desc)
+{
+	u_int hart;
+	ssize_t len;
+	int i;
+
+	hart = pcpu_find(cpu)->pc_hart;
+
+	len = OF_getprop(node, "riscv,isa", isa_extensions,
+	    sizeof(isa_extensions));
+	if (len == -1) {
+		printf("%s: could not find 'riscv,isa' property "
+		    "for CPU %d, hart %u\n", __func__, cpu, hart);
+		return (ESRCH);
+	}
+	if (len > sizeof(isa_extensions))
+		panic("isa string truncated");
+
+	if (bootverbose)
+		printf("hart %d isa: %s\n", hart, isa_extensions);
+
+	/*
+	 * The string is specified to be lowercase, but let's be
+	 * certain.
+	 */
+	for (i = 0; i < len; i++)
+		isa_extensions[i] = tolower(isa_extensions[i]);
+
+	/* Check the string prefix. */
+	if (strncmp(isa_extensions, ISA_PREFIX, ISA_PREFIX_LEN) != 0) {
+		printf("%s: Unrecognized ISA string: %s\n", __func__,
+		    isa_extensions);
+		return (-1);
+	}
+
+	return (parse_riscv_isa(desc, &isa_extensions[ISA_PREFIX_LEN],
+	    len - ISA_PREFIX_LEN));
+}
+
 static void
 identify_cpu_features_fdt(u_int cpu, struct cpu_desc *desc)
 {
-	char isa[1024];
 	phandle_t node;
-	ssize_t len;
 	pcell_t reg;
 	u_int hart;
+	int error;
 
 	node = OF_finddevice("/cpus");
 	if (node == -1) {
@@ -403,26 +466,17 @@ identify_cpu_features_fdt(u_int cpu, struct cpu_desc *desc)
 		    reg != hart)
 			continue;
 
-		len = OF_getprop(node, "riscv,isa", isa, sizeof(isa));
-		KASSERT(len <= sizeof(isa), ("ISA string truncated"));
-		if (len == -1) {
-			printf("%s: could not find 'riscv,isa' property "
+		error = parse_isa_extensions(node, cpu, desc);
+		if (error != 0) {
+			/* Fall-back to the legacy riscv,isa string. */
+			error = parse_riscv_isa_legacy(node, cpu, desc);
+		}
+		if (error != 0) {
+			printf("%s: could not parse ISA string "
 			    "for CPU %d, hart %u\n", __func__, cpu, hart);
 			return;
 		}
 
-		if (bootverbose)
-			printf("hart %d isa: %s\n", hart, isa);
-
-		/*
-		 * The string is specified to be lowercase, but let's be
-		 * certain.
-		 */
-		for (int i = 0; i < len; i++)
-			isa[i] = tolower(isa[i]);
-		if (parse_riscv_isa(desc, isa, len) != 0)
-			return;
-
 		/* Check MMU features. */
 		parse_mmu_fdt(desc, node);
 

From nobody Tue Oct  6 19:13:45 2026
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 4hzmBl0jl9z6Z4lx
	for <dev-commits-src-all@mlmmj.nyi.freebsd.org>; Tue, 06 Oct 2026 19:13:51 +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 "YR2" (not verified))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4hzmBk5GZjz4M0C
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 19:13:50 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1791314030;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=dGcALLwQRULJurdJSjkQOIE/fPnTv0bKj3es7z4a/to=;
	b=p6gPb6l73xbvGOpI3xctBJA/H5d1AAt0J//2w9eqjJBuo+fdR/6u6aKDkzgPFHtUkPDdYH
	8AwGJlcT8h6I6Knp08c75z9OyagEWryBv6IB0xWR3UQ+jULkXakWeczvMtCMqaJpdrc8zp
	CQvuut1nOochffxWpsLos0TxxpPDVx9ry++TE99mI/kunhAyp1DgSjExT3uDNE0urjjyqp
	lVD4G+3Es6lIntEF7Cy8jfiJ4/VyGzqRZ9kA0MRHAWdVF0SdVDV6F4eX81M0pDIIuFXM2o
	UT6q95W2i/7dU0TV+J8QFXhL3ccN73k1Whd0Y6rw4A4Q+W3Ii9X2kVRNgmpz7w==
ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791314030;
	b=SunIHsz0c0A1Ij9giMO7Gsxfd0WunW90DJD8jUFonm7UWAdoND9BEY1wNRVCVDOQtmeiy6
	Ohf3ZBflEZR97Gg1a8rZERH7WA9PBWLa487HBKJcqErwaPGy7P5dRVtCaOuxunEp39Sm2g
	yzNOGxKVqtdWWDDoCTTG5x0BTF9NYjvzcUC5vgOzFPPQroa+wIqynMR5eT4K/xhljOR0mk
	Drs8nhC+pToGhbQMeux9Lq93rJG9WKQ4yhBQovJkmP541fH8zbzPAh9AKwI0HYTVYfuYqJ
	Jv4nu95CZfTsene+meHKocZqiQ0acJ42Av/TsNNTaRJuuu8hmdvUEkULVJZ74g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1791314030;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=dGcALLwQRULJurdJSjkQOIE/fPnTv0bKj3es7z4a/to=;
	b=E6TiIFcN9Vd0e8AK3nhyUxpYePX1vIwoqkVWSkDiWu+99fa8cYCWpY/ilgDkLPRVbK59B4
	ncwmYWWCKdzVv2HzKjyOh+705UuQofvfAHlNIuKP5CdEHLn5W6vyzJMIDQKUudHReaiLmy
	eFQd6BU6zvzzUqNbXC/Hon8jeiNzC7HvfkDJ4rlI9t3XkIbMw5q6pBocsQ6B5bT9TESiZH
	Qfl9QuMuIze9vwa4Vd4BfCofMruIylKgyEVv6bx0VWqXrIpoa3JbJnYnjnx3rZOFzDFBVI
	B03smBDT2ds/qL5lRocCfG/vNHUp7Jk3Aqml1FnayQUHo0rU+nX3ziD4+f2SSg==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzmBk4LLszJyK
	for <dev-commits-src-all@FreeBSD.org>; Tue, 06 Oct 2026 19:13:50 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from git (uid 1279)
	(envelope-from git@FreeBSD.org)
	id 40b41
	by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org);
	Tue, 06 Oct 2026 19:13:45 +0000
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Cc: Peter Eriksson <pen@lysator.liu.se>
From: Ed Maste <emaste@FreeBSD.org>
Subject: git: fabb224f2f15 - stable/15 - camcontrol: Add support for firmware uploading on HPE-branded drives
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-all@freebsd.org
Sender: owner-dev-commits-src-all@FreeBSD.org
List-Id: <dev-commits-src-all.FreeBSD.org>
List-Post: <mailto:dev-commits-src-all@FreeBSD.org>
List-Help: <mailto:dev-commits-src-all+help@FreeBSD.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@FreeBSD.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@FreeBSD.org>
List-Owner: <mailto:postmaster@FreeBSD.org>
Precedence: list
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: emaste
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/15
X-Git-Reftype: branch
X-Git-Commit: fabb224f2f15b80eff4526d6e6b8c1c69834883e
Auto-Submitted: auto-generated
Date: Tue, 06 Oct 2026 19:13:45 +0000
Message-Id: <6ac54869.40b41.3624103b@gitrepo.freebsd.org>

The branch stable/15 has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=fabb224f2f15b80eff4526d6e6b8c1c69834883e

commit fabb224f2f15b80eff4526d6e6b8c1c69834883e
Author:     Peter Eriksson <pen@lysator.liu.se>
AuthorDate: 2026-10-02 16:45:59 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-10-06 19:13:30 +0000

    camcontrol: Add support for firmware uploading on HPE-branded drives
    
    PR:             299059
    (cherry picked from commit b30e67dc130ea8217e92e0b4c462f189e2268eba)
---
 sbin/camcontrol/fwdownload.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sbin/camcontrol/fwdownload.c b/sbin/camcontrol/fwdownload.c
index 569021c2bfc1..d8057dab326c 100644
--- a/sbin/camcontrol/fwdownload.c
+++ b/sbin/camcontrol/fwdownload.c
@@ -197,6 +197,8 @@ static struct fw_vendor vendors_list[] = {
 	0x8000, 0x05, 0x05, 1, 0, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
 	{VENDOR_HP,	 	"HP",		T_ANY,
 	0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
+	{VENDOR_HP,	 	"HPE",		T_ANY,
+	0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
 	{VENDOR_IBM,		"IBM",		T_SEQUENTIAL,
 	0x8000, 0x07, 0x07, 0, 1, FW_TUR_NA, 300 * 1000, FW_TIMEOUT_DEFAULT},
 	{VENDOR_IBM,		"IBM",		T_ANY,

