From nobody Mon Mar 31 02:46:06 2025 X-Original-To: dev-commits-src-main@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 4ZQwVl4l84z5sTp9; Mon, 31 Mar 2025 02:46: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZQwVl0XZHz47GL; Mon, 31 Mar 2025 02:46:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743389167; 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=VmPfqzN21YiZWg79WyL6NebdHjHvN3CNJ9fdRfQoKEE=; b=UIJ5tM+i8yPAMLYc0XZSoG9pg4coLWIp5uutObJ/e99JZLHHiyrvmq3OC7DDCjYnNh9AXj zHXEWY/Z1L47mHLmO2JRL0l0rqbxXPmZ/aJ91MyRM4SQ5NxUuv3nUxfgIXZ3+c46yJXDa7 v5Yy1jBKaHM0bHPHOGiBgnItgQ14gHUxIK9d/iQjm17+ze06m529IHvu3ILMOjmKerAuLL Vt0qrBbm4Zh7kFQleW/u70gp02BWONaPr2VZZ1971eDLexjNuFLpQG3/CFAykiYcCgkIqk UWpKMIYWGF9IbYEhXn9fjHb++/0elInaiOw9JKEmvMPUCgfozA1LrV2RPAKGdw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743389167; a=rsa-sha256; cv=none; b=gWrQtxtHN9NJt5yuDLBm6DABZmYPc179VQKR5qPGxVdLeNXkfjBXagDttG8igOq0SAUjm4 wK34w8GgPFFdQIJaj9pnpFo0rTNdCsMZQv23WrbsuKURT7B3ICvMX5gLllh5eecFfFWqog /rZk5PTby+EK4XNTgqszIgjz30gw9Iqu8k8UGCip7p7jaxV362aMAC6/khhcC4jZoP6b39 PSzusZzlzvPYW6W5+jWKgOcGZnaiiOlj8iUt22A36xg7/BO2LoUzqZ9uIm8R2VfcloQnLt 2rdpBk0imqMWxKDsdAgpNwkteTqyeBPsZa+ktNYZIEByrbCg8W7djFRoWG3CkA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743389167; 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=VmPfqzN21YiZWg79WyL6NebdHjHvN3CNJ9fdRfQoKEE=; b=YsmOSA9z4TPtGYVW0vanTW75QACkWZ6qMMzzhKh2uSBZV9rtJH+aCFooXCXuyJVbv/NBad j/7jfnFVL7bmySddOxL40hpwCQgMD/PyFKADUxcIlQaoLc+/yowXkRbKiwAFIYC0wvfVAX pbIgX82h4QOMaregREVvPhkm25MiKgMlaiTRmaUYwvQuXtuqsjYd9mJQhrYlcy2qrVjKjI C76qvXROtnh/Obn68qTP+/p2wBEGokH7WgAcn4H6wDHYGRPLoS2h/7kwOSTZiEnFMyGVaP OjipmsygEUhIb+ajEahO8aZ7uUsQgN6wpiTQZbHinvIJm2VCYIha1L9PPCuNsA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZQwVk6QwPzBRV; Mon, 31 Mar 2025 02:46:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52V2k6aA066801; Mon, 31 Mar 2025 02:46:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V2k6N8066798; Mon, 31 Mar 2025 02:46:06 GMT (envelope-from git) Date: Mon, 31 Mar 2025 02:46:06 GMT Message-Id: <202503310246.52V2k6N8066798@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 526becbf6e42 - main - ptrace_test: add test for expanded reporting of syscall args List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 526becbf6e42331e3680d55fe1e9a82e1b56a735 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=526becbf6e42331e3680d55fe1e9a82e1b56a735 commit 526becbf6e42331e3680d55fe1e9a82e1b56a735 Author: Konstantin Belousov AuthorDate: 2025-03-24 02:44:38 +0000 Commit: Konstantin Belousov CommitDate: 2025-03-31 02:45:30 +0000 ptrace_test: add test for expanded reporting of syscall args Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49430 --- tests/sys/kern/ptrace_test.c | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tests/sys/kern/ptrace_test.c b/tests/sys/kern/ptrace_test.c index 675d90e144ae..db681293f043 100644 --- a/tests/sys/kern/ptrace_test.c +++ b/tests/sys/kern/ptrace_test.c @@ -4160,6 +4160,53 @@ ATF_TC_BODY(ptrace__syscall_args, tc) REQUIRE_EQ(errno, ECHILD); } +/* + * Check that syscall info is available whenever kernel has valid td_sa. + * Assumes that libc nanosleep(2) is the plain syscall wrapper. + */ +ATF_TC_WITHOUT_HEAD(ptrace__syscall_args_anywhere); +ATF_TC_BODY(ptrace__syscall_args_anywhere, tc) +{ + struct timespec rqt; + struct ptrace_lwpinfo lwpi; + register_t args[8]; + pid_t debuggee, wpid; + int error, status; + + debuggee = fork(); + ATF_REQUIRE(debuggee >= 0); + if (debuggee == 0) { + rqt.tv_sec = 100000; + rqt.tv_nsec = 0; + for (;;) + nanosleep(&rqt, NULL); + _exit(0); + } + + /* Give the debuggee some time to go to sleep. */ + sleep(2); + error = ptrace(PT_ATTACH, debuggee, 0, 0); + ATF_REQUIRE(error == 0); + wpid = waitpid(debuggee, &status, 0); + REQUIRE_EQ(wpid, debuggee); + ATF_REQUIRE(WIFSTOPPED(status)); + REQUIRE_EQ(WSTOPSIG(status), SIGSTOP); + + error = ptrace(PT_LWPINFO, debuggee, (caddr_t)&lwpi, sizeof(lwpi)); + ATF_REQUIRE(error == 0); + ATF_REQUIRE(lwpi.pl_syscall_code == SYS_nanosleep); + ATF_REQUIRE(lwpi.pl_syscall_narg == 2); + error = ptrace(PT_GET_SC_ARGS, debuggee, (caddr_t)&args[0], + lwpi.pl_syscall_narg * sizeof(register_t)); + ATF_REQUIRE(error == 0); + ATF_REQUIRE(args[0] == (register_t)&rqt); + ATF_REQUIRE(args[1] == 0); + + error = ptrace(PT_DETACH, debuggee, 0, 0); + ATF_REQUIRE(error == 0); + kill(SIGKILL, debuggee); +} + /* * Verify that when the process is traced that it isn't reparent * to the init process when we close all process descriptors. @@ -4476,6 +4523,7 @@ ATF_TP_ADD_TCS(tp) #endif ATF_TP_ADD_TC(tp, ptrace__PT_LWPINFO_stale_siginfo); ATF_TP_ADD_TC(tp, ptrace__syscall_args); + ATF_TP_ADD_TC(tp, ptrace__syscall_args_anywhere); ATF_TP_ADD_TC(tp, ptrace__proc_reparent); ATF_TP_ADD_TC(tp, ptrace__procdesc_wait_child); ATF_TP_ADD_TC(tp, ptrace__procdesc_reparent_wait_child); From nobody Mon Mar 31 02:46:05 2025 X-Original-To: dev-commits-src-main@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 4ZQwVk1JY6z5sTW4; Mon, 31 Mar 2025 02:46: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZQwVk004Vz47GH; Mon, 31 Mar 2025 02:46:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743389166; 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=dwyQhwfw7NS5/eWiNNVtf+8u0eBvdeWdCLvgAQLjqD4=; b=gm+3L8CXrFhKAKBkbbQ2rSjQMXTvNcY9kIDwYs4ymcrYsW4otzk1dSj3sVH2RkFNeoBSQ6 l40WoMIm4sREmuYLeONX/qVB6k30oXdQWTkA9LyxVNNzODj7B5LTVszGXZsL+QhQ/wn3Da HQW32/zTR1g7hQ53gSdwNpeMr96tGCNSdQc3KIupiGLwVdtOgIzdOLlONqzKUfOYkuEUrz tUDyKmaTFHG4u+oZjvXR9OpBYdW3vh8rrigJ9JuQk8yfURyy89QdHvPPuo0e10+Y/G9aP1 tIhtxI8UP8chLGV8+gOD9J+i6uTtm3z9MsbWAy3JOso08q0faMCi6lhgvT1Rhw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743389166; a=rsa-sha256; cv=none; b=ZjX2Z9jfeS0NpOiuty5V/NDD8MK+Y0CwXckM2pZv1rF6l7m/5m3jbN/J0RXhPzV7O3JmMl bs1n8usbJvYj1E5+nwcGRMCJnGrdM3veLECX4KX6+14d9JGNnDddGLEW1Ue25r/C5ASt9U UG5F5s1mGMD3r+D4jhj3MfxaOJMwczgBnsGbd9kLriWQjAGrlSYToEJL/CJ/YyLLjDUei+ iSbs2rKlukqLjXgmCeB3GPjKb/BzgcfAs/pXbQ7eSXo7s6cgfjfVabJhWASZhDw3ABrrlt tyiALHop4viNgPqwLeGGsIHMKeYlLunamlPi6OEHowl2NCoiEhHyP/DNUNfYZQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743389166; 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=dwyQhwfw7NS5/eWiNNVtf+8u0eBvdeWdCLvgAQLjqD4=; b=jlWBFdKix5LTlg7As7oVlo3+34ity/kSTpC2tXDBb40Zbx2pd4cwAJiNZe2DbbUq/7kZS6 d4MCHCYl/UXa8pFdGphnk2/C8W0lwnqmGp0lUiiLnpufl4fGts7w3APsZ5a60oTP/+K+LI 8vTyrqJEX4PvbdjY6q+rFQ2EGCyWyp+0uhQZX1ZX1Ny/9MVN2oo34o3Irtf5NeuK613Yh5 VtkY5YmRQMoW+IACGsUfVgd+oclM/zichX33sWfmnuazbHQKfkgsP0jgAJFda6kRYFf6/L U5VFH0taRlv78CcISt8PARGPF0+lJTbpiLNMZ5JQHay0+Z8OOtisHcxZH8vG1A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZQwVj5vLhz9Sm; Mon, 31 Mar 2025 02:46:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52V2k5S4066768; Mon, 31 Mar 2025 02:46:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V2k5ju066765; Mon, 31 Mar 2025 02:46:05 GMT (envelope-from git) Date: Mon, 31 Mar 2025 02:46:05 GMT Message-Id: <202503310246.52V2k5ju066765@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: fd5bc306ff3d - main - ptrace(2): expand ability to fetch syscall parameters List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: fd5bc306ff3d8f908f36703d6ab714322f9f3c75 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=fd5bc306ff3d8f908f36703d6ab714322f9f3c75 commit fd5bc306ff3d8f908f36703d6ab714322f9f3c75 Author: Konstantin Belousov AuthorDate: 2025-03-20 01:52:29 +0000 Commit: Konstantin Belousov CommitDate: 2025-03-31 02:43:22 +0000 ptrace(2): expand ability to fetch syscall parameters Do not limit lwpinfo reporting of syscall number and args to SCE/SCX events. When td_sa holds the values, we can report them. Clear td_sa.code in TDA_SIG ast handler: this handler is run when the process is traced, and it is run with the last ptracestop() points before the return to userspace. This allows debugger to infer the interrupted syscall immediately after PT_ATTACH without the need to loose control to the debuggee' thread. It should work even when the debuggee is stopped in AST. Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49430 --- sys/kern/kern_sig.c | 8 ++++++++ sys/kern/sys_process.c | 8 +++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index d7aa932aa7e3..0ee58af7fbe4 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -343,6 +343,14 @@ ast_sig(struct thread *td, int tda) * the postsig() loop was performed. */ sigfastblock_setpend(td, resched_sigs); + + /* + * Clear td_sa.code: signal to ptrace that syscall arguments + * are unavailable after this point. This AST handler is the + * last chance for ptracestop() to signal the tracer before + * the tracee returns to userspace. + */ + td->td_sa.code = 0; } static void diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index 581f8f65ec56..c7dd505d97ca 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -1168,7 +1168,8 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data) case PT_GET_SC_ARGS: CTR1(KTR_PTRACE, "PT_GET_SC_ARGS: pid %d", p->p_pid); - if ((td2->td_dbgflags & (TDB_SCE | TDB_SCX)) == 0 + if (((td2->td_dbgflags & (TDB_SCE | TDB_SCX)) == 0 && + td2->td_sa.code == 0) #ifdef COMPAT_FREEBSD32 || (wrap32 && !safe) #endif @@ -1511,12 +1512,9 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data) pl->pl_sigmask = td2->td_sigmask; pl->pl_siglist = td2->td_siglist; strcpy(pl->pl_tdname, td2->td_name); - if ((td2->td_dbgflags & (TDB_SCE | TDB_SCX)) != 0) { + if (td2->td_sa.code != 0) { pl->pl_syscall_code = td2->td_sa.code; pl->pl_syscall_narg = td2->td_sa.callp->sy_narg; - } else { - pl->pl_syscall_code = 0; - pl->pl_syscall_narg = 0; } CTR6(KTR_PTRACE, "PT_LWPINFO: tid %d (pid %d) event %d flags %#x child pid %d syscall %d", From nobody Mon Mar 31 04:02:16 2025 X-Original-To: dev-commits-src-main@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 4ZQyBc6xL4z5sYsV; Mon, 31 Mar 2025 04:02: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZQyBc4D1rz3r27; Mon, 31 Mar 2025 04:02:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743393736; 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=6irpxaR4+g9Un9aWaPUBS/ZCd54824fsQqxNmMAV9y4=; b=hcdT3UYv0EPsEpnTD0c0y1y9II2a81abTP4bCpcMXZw+bOwWdox1qE1iHEFxbbHNLA8Xw6 TnouOf8ZC34ykn3RDqM28T+q0J0C3sIyLXq1swPqE5iU/mjlnFfbve0aX4bdnDwbRlK5Fy lMppwoUA/Y5HhCmlJms/uZON7R+8bB6WhHYGIHBQ0z7mZVGB6ykmrewHkOGbgKiVIMiHRI FSOQkNFjJxH89ConqceEu29hc8tNPgRa8GTVDPMckNgKO2aynjiFahJybyOJ39nyaKgrUO JiKr79kzNgvRrUegBEjg9UbsC40a3/Z4AtnlCyerhSTALPuRjYRP3hTt9l88gw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743393736; a=rsa-sha256; cv=none; b=TL5hpjze6FUNMhD46YbptYOeDwJWlRhZ2RmCqCRFCKAoCTU5a+iecCd1AZbZrbf9h4FW6m xM3ihTDfPGL/Sp3MNfAkwUPmCShtojnCGDpCD0U1h54DRX4ggvnXYGW33M24f2UFFSiYZ4 Fiu/A3NGInpF+9i6XxRR7TleNrCN26Nx4k0S3F+msSeVsMFjVBqUNH1R4zpLvCvj2pp7Ve RKlwkCRGfdDYsnfepUo8CWe4WewijztMxqOQ8SyzUQEcpXWnOU34g+L/CFXqIZ1LAqDQh6 sHAOznNjPSIgjqQU7pZf1oFOF7STLdef7RhvLuYEzR2dBeIM9I+m1hKp+phWGw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743393736; 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=6irpxaR4+g9Un9aWaPUBS/ZCd54824fsQqxNmMAV9y4=; b=ZgjwfSL7BAYAAoj6Oe7LCPU29isCoMCsp81UwffbZdmivVAjIP35RPK9aVwGzgg6v4zL+e b1ZtwSOqf/RcXiDptWQW4gJzzTnhYLO5EdWFbOffoBROdNc9hjb/mWgty3zeNEg9zaRWJK 2wQIr0R+2ZSM1Knr+alj+U5Ce7L3hA5aJkqfV/juIOGuuu1LmiMPI/3ZbdCurXO11swZRo OYCCN32O8K0lkT3q1uL9Ak1uopQQ6VPICFgFhbT54HEnhqBZOLzsHsKBHPaqhiZ8XjrdnU YMW0VpRPyWBxvl9pWcV15UQ7MDzH230MfPyEf0nybDNSR0I2oq8N5bZ+40ACfw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZQyBc3fjbzDLk; Mon, 31 Mar 2025 04:02:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52V42Ghp016938; Mon, 31 Mar 2025 04:02:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V42G5A016935; Mon, 31 Mar 2025 04:02:16 GMT (envelope-from git) Date: Mon, 31 Mar 2025 04:02:16 GMT Message-Id: <202503310402.52V42G5A016935@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Doug Moore Subject: git: b68c7ebf5e63 - main - vm_reserv: extract common gap-checking code List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dougm X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b68c7ebf5e633549dfda1cfa25991b097dfbcdce Auto-Submitted: auto-generated The branch main has been updated by dougm: URL: https://cgit.FreeBSD.org/src/commit/?id=b68c7ebf5e633549dfda1cfa25991b097dfbcdce commit b68c7ebf5e633549dfda1cfa25991b097dfbcdce Author: Doug Moore AuthorDate: 2025-03-31 04:00:53 +0000 Commit: Doug Moore CommitDate: 2025-03-31 04:00:53 +0000 vm_reserv: extract common gap-checking code vm_reserv_alloc_contig and vm_reserv_alloc_page both have code to determine whether a new reservation will fit between the predecessor and successor. Extract this code into a separate function rather than having it appear twice. Optimize slightly to avoid checking object size limit when there is a successor, and to avoid checking the upper bound at all when the size to be allocated is a multiple of reservation size. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D49460 --- sys/vm/vm_reserv.c | 175 ++++++++++++++++++++++++----------------------------- 1 file changed, 80 insertions(+), 95 deletions(-) diff --git a/sys/vm/vm_reserv.c b/sys/vm/vm_reserv.c index 3dc278851cc9..e553d115a6d4 100644 --- a/sys/vm/vm_reserv.c +++ b/sys/vm/vm_reserv.c @@ -549,6 +549,73 @@ vm_reserv_has_pindex(vm_reserv_t rv, vm_pindex_t pindex) return (((pindex - rv->pindex) & ~(VM_LEVEL_0_NPAGES - 1)) == 0); } +/* + * How many pages should be in a new allocation that starts at the first page of + * the reservation superpage that contains 'first', fits between the allocations + * that include 'mpred' and 'msucc', fits within 'object', includes at least + * 'minpages' pages, and tries to include every allocated page in a superpage? + * + * We must synchronize with the reserv object lock to protect the pindex/object + * of the resulting reservations against rename while we are inspecting. + */ +static u_long +vm_reserv_num_alloc_pages(vm_object_t object, vm_pindex_t first, + u_long minpages, vm_page_t mpred, vm_page_t msucc) +{ + vm_pindex_t leftcap, rightcap; + vm_reserv_t rv; + u_int allocpages; + + allocpages = roundup2(minpages, VM_LEVEL_0_NPAGES); + + vm_reserv_object_lock(object); + if (mpred != NULL) { + if ((rv = vm_reserv_from_page(mpred))->object != object) + leftcap = mpred->pindex + 1; + else + leftcap = rv->pindex + VM_LEVEL_0_NPAGES; + if (leftcap > first) + allocpages = 0; + } + if (minpages < allocpages) { + if (msucc == NULL) { + /* + * Would the last new reservation extend past the end of + * the object? + * + * If the object is unlikely to grow don't allocate a + * reservation for the tail. + */ + if ((object->flags & OBJ_ANON) == 0) + rightcap = object->size; + else + rightcap = OBJ_MAX_SIZE; + } else { + /* + * Would the last new reservation extend past the start + * of another page or reservation? + * + * If the object would, don't allocate a reservation for + * the tail. + */ + if ((rv = vm_reserv_from_page(msucc))->object != object) + rightcap = msucc->pindex; + else + rightcap = rv->pindex; + } + if (first + allocpages > rightcap) { + /* + * A reservation for the last of the requested pages + * will not fit. Reduce the size of the upcoming + * allocation accordingly. + */ + allocpages = minpages; + } + } + vm_reserv_object_unlock(object); + return (allocpages); +} + /* * Increases the given reservation's population count. Moves the reservation * to the tail of the partially populated reservation queue. @@ -623,9 +690,9 @@ vm_reserv_alloc_contig(vm_object_t object, vm_pindex_t pindex, int domain, struct vm_domain *vmd; vm_paddr_t pa, size; vm_page_t m, m_ret, msucc; - vm_pindex_t first, leftcap, rightcap; + vm_pindex_t first; vm_reserv_t rv; - u_long allocpages, maxpages, minpages; + u_long allocpages; int i, index, n; VM_OBJECT_ASSERT_WLOCKED(object); @@ -690,63 +757,14 @@ out: } /* - * Could at least one reservation fit between the first index to the - * left that can be used ("leftcap") and the first index to the right - * that cannot be used ("rightcap")? - * - * We must synchronize with the reserv object lock to protect the - * pindex/object of the resulting reservations against rename while - * we are inspecting. + * Check whether an allocation including at least one reservation can + * fit between mpred and msucc. */ first = pindex - VM_RESERV_INDEX(object, pindex); - minpages = VM_RESERV_INDEX(object, pindex) + npages; - maxpages = roundup2(minpages, VM_LEVEL_0_NPAGES); - allocpages = maxpages; - vm_reserv_object_lock(object); - if (mpred != NULL) { - if ((rv = vm_reserv_from_page(mpred))->object != object) - leftcap = mpred->pindex + 1; - else - leftcap = rv->pindex + VM_LEVEL_0_NPAGES; - if (leftcap > first) { - vm_reserv_object_unlock(object); - return (NULL); - } - } - if (msucc != NULL) { - if ((rv = vm_reserv_from_page(msucc))->object != object) - rightcap = msucc->pindex; - else - rightcap = rv->pindex; - if (first + maxpages > rightcap) { - if (maxpages == VM_LEVEL_0_NPAGES) { - vm_reserv_object_unlock(object); - return (NULL); - } - - /* - * At least one reservation will fit between "leftcap" - * and "rightcap". However, a reservation for the - * last of the requested pages will not fit. Reduce - * the size of the upcoming allocation accordingly. - */ - allocpages = minpages; - } - } - vm_reserv_object_unlock(object); - - /* - * Would the last new reservation extend past the end of the object? - * - * If the object is unlikely to grow don't allocate a reservation for - * the tail. - */ - if ((object->flags & OBJ_ANON) == 0 && - first + maxpages > object->size) { - if (maxpages == VM_LEVEL_0_NPAGES) - return (NULL); - allocpages = minpages; - } + allocpages = vm_reserv_num_alloc_pages(object, first, + VM_RESERV_INDEX(object, pindex) + npages, mpred, msucc); + if (allocpages < VM_LEVEL_0_NPAGES) + return (NULL); /* * Allocate the physical pages. The alignment and boundary specified @@ -817,7 +835,7 @@ vm_reserv_alloc_page(vm_object_t object, vm_pindex_t pindex, int domain, { struct vm_domain *vmd; vm_page_t m, msucc; - vm_pindex_t first, leftcap, rightcap; + vm_pindex_t first; vm_reserv_t rv; int index; @@ -859,45 +877,12 @@ out: } /* - * Could a reservation fit between the first index to the left that - * can be used and the first index to the right that cannot be used? - * - * We must synchronize with the reserv object lock to protect the - * pindex/object of the resulting reservations against rename while - * we are inspecting. + * Check whether an allocation including reservations can fit + * between mpred and msucc. */ first = pindex - VM_RESERV_INDEX(object, pindex); - vm_reserv_object_lock(object); - if (mpred != NULL) { - if ((rv = vm_reserv_from_page(mpred))->object != object) - leftcap = mpred->pindex + 1; - else - leftcap = rv->pindex + VM_LEVEL_0_NPAGES; - if (leftcap > first) { - vm_reserv_object_unlock(object); - return (NULL); - } - } - if (msucc != NULL) { - if ((rv = vm_reserv_from_page(msucc))->object != object) - rightcap = msucc->pindex; - else - rightcap = rv->pindex; - if (first + VM_LEVEL_0_NPAGES > rightcap) { - vm_reserv_object_unlock(object); - return (NULL); - } - } - vm_reserv_object_unlock(object); - - /* - * Would the last new reservation extend past the end of the object? - * - * If the object is unlikely to grow don't allocate a reservation for - * the tail. - */ - if ((object->flags & OBJ_ANON) == 0 && - first + VM_LEVEL_0_NPAGES > object->size) + if (vm_reserv_num_alloc_pages(object, first, 1, mpred, msucc) < + VM_LEVEL_0_NPAGES) return (NULL); /* From nobody Mon Mar 31 07:55:51 2025 X-Original-To: dev-commits-src-main@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 4ZR3N81M15z5rcRX; Mon, 31 Mar 2025 07:55: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZR3N76Dzlz46Vb; Mon, 31 Mar 2025 07:55:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743407751; 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=KWqiEfAl4lwLa/mIOvFKeEXr0mZJI0SMViFq0GqWkBg=; b=kUEjgB4tsQhDgu5NKQq2i6xr0dIIhmaajEf5FHL2uWhFU0Jtu8Qez+ERaMovRRrGNWUSg6 IQ7EbUCEtKwiOKHU1pMEsnJKEqC6SiSGSZ0SNvZv+TXGMknkaD6HpQB2mlBKrtRNeJ6Dok h8Ih4KafO9JMROxGdwBPhQcEIyAL0R97RHBEpZ9XjEFEZm18O+hM2Nd73Qs8KTjQlf0XDB uE5MF5c6M7Nonuh+s6K684KI5fLFI4BYCOIK1Jgj1rUYqDazHs7bzDGZhb0hLMY/uh9xma 5bJvYnBlHbWUB/tBe9drwuf49TfdUWbd46/wnqP9DTjxVXHZWglqHZvdMTL2Zg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743407751; a=rsa-sha256; cv=none; b=fNATWdzmiKGNV4EhvyTbAsUiXJP85zdcvPAPurcpw4wYPYF+8ujrJkViBnXLioIOF3OSH8 XLimpaWjHGCnPdmqMXzRn2f7FtLIrBCozJFB5Vzunkfc0Wdj7vRqk69HT9M4etz6P3tU8b 8ffFF00pa1NpPliPhymtkfBNA+a4/matwXYMJmBcATBI4WUN/PHNjuV54mPBFUPMMItLhW ht+dAkZfR6dx60mkNgH0XCOWYwX/znle96QumBRF/j4HL+tMoa1RmM9kU4it1LawxCsbZV ei1vHdzHPqDhr33gA8senx6wuQSPHFdlz0cNxaeNwo4ShB+VU5MuNFgsWAGQ+Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743407751; 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=KWqiEfAl4lwLa/mIOvFKeEXr0mZJI0SMViFq0GqWkBg=; b=bOYExdbReQAQR7XHZqoAVQJwZMhMj6TVTxLdmB2GUqaQr2UxO/M9zuC0Z/8TL5Ryh1nxEc tOLLtA2IE8rDL5tdxG5AWkhR1h76uldC/Y65SaRrB+BmT5ff97EPfKoU76opuezzhnmWQb 2ENMR75NewVIHXukb04ebDBh/OPOTLerlvYsxoYRfYYc2U6H7+PB5/FJE8LSO/UWJlv3e7 zxR5kSY+5X01MN8vHv2hT2lJu6DVsFPneXOMJK3vRVJrYroeIXRZ61/KGlYL1IipiHYVEf tGqGbLAOv9Lx2ouUW0TbEkrDy69Loq8S8cKs8QtlzC2OylyonPd7UTyrdWkMCQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZR3N73zdGzcVP; Mon, 31 Mar 2025 07:55:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52V7tpTd046773; Mon, 31 Mar 2025 07:55:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V7tpem046770; Mon, 31 Mar 2025 07:55:51 GMT (envelope-from git) Date: Mon, 31 Mar 2025 07:55:51 GMT Message-Id: <202503310755.52V7tpem046770@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 6091e2aa9236 - main - pfctl.8: fix typo in reference to rc.conf variable List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6091e2aa923617604f7333f26b54bab48d2c0aab Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=6091e2aa923617604f7333f26b54bab48d2c0aab commit 6091e2aa923617604f7333f26b54bab48d2c0aab Author: Quentin Thébault AuthorDate: 2025-03-29 13:12:17 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 07:51:08 +0000 pfctl.8: fix typo in reference to rc.conf variable Reviewed by: kp, @concussious, @ImAwsumm Pull Request: https://github.com/freebsd/freebsd-src/pull/1630 --- sbin/pfctl/pfctl.8 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sbin/pfctl/pfctl.8 b/sbin/pfctl/pfctl.8 index 565cd8f7fd64..5029d8438ed7 100644 --- a/sbin/pfctl/pfctl.8 +++ b/sbin/pfctl/pfctl.8 @@ -82,7 +82,7 @@ Translation rules are described in .Xr pf.conf 5 . .Pp When the variable -.Va pf +.Va pf_enable is set to .Dv YES in From nobody Mon Mar 31 09:06:33 2025 X-Original-To: dev-commits-src-main@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 4ZR4xj3ybXz5rhYM; Mon, 31 Mar 2025 09:06: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZR4xj36T2z3YNh; Mon, 31 Mar 2025 09:06:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411993; 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=t72eaCGnOa8wu4xsxJoqWl+wVOrD0DD7iLNzhjFKYcM=; b=CU0oQCuUvW8ZGTw6tTGqp3i64XUt+4dhwefoy2yJ4f4nE6K7ltDii7eFVIPnKa9UqO+VGv rDpLo71svybzv27iC3rl4hFaS6r5NTs0nNrBAQdKBHzE8qaUfn8F1RMBE/oJJYf90PRD2H R2cRio1mP/RCk3FcVW36AVKeZlg/5JCPLj5Fxhf6A56yYlADpDfCrt/ArjDGwbyzJ2T148 1GgW25iwPE3nsz/XG34s2IUYFN4IaVkzakcUqVBYM/ribATyN7cCUiOS+tuaHc3JkcunvT 035csMqCzdPo9EzBx9X4lad+eQAPcXQr6yQwC98Cp1yZnTHo+DGXM33nSdNLRw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743411993; a=rsa-sha256; cv=none; b=pKbX+zbYuen9e2dRndqDebCSpatcCX7RV8u0vTppk93PQr3WCA6bIjSRDaA1Ir1DWDjvPe 0/IfscLUNUEQ5E3gCsgNxq0ZJSOc5OEou+eTWGSIiOe3BNWQOT4oMh4E+sgroCKEuEDApA hKq7V8Yw5yFLpsCgbR7C0pz9bAHrT3fRWBs6r4FJJkojmeix1hQQ1g/MabfsXh+PNGBkej um+NYTNPhjvzk7cg/2gqMvZ7s8zEg0+cdjctAEX5WKxT5VQE0fViBNgGgd10EkXpl7B+g7 +bC2sc7qVEfsKMFjjvVpB+IgaCZmWUTLHlTKXV6kA/PGiMMLWm4d0AazcDKW3g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411993; 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=t72eaCGnOa8wu4xsxJoqWl+wVOrD0DD7iLNzhjFKYcM=; b=Q/pZnya0kdNUoAkaOydVMnGwaphqZuXvvZdFkUZ/KtSnowyp+kUjBzUslBq/Xp38cM4mGu 98wHxILCIf6jynzdpFPtcH8aYsObaQAsxg5sAQVMQybs7pqwze/2+AedPH1DGKn8Dtxbi7 c9cTJg1YGyx4zxGjbPLgPCBNbo6e7w9hzknTjq28kRiGpsx2ru9976kDUZTmleYihd8kqI 4rtoTxfIiWa6jqgtrQRZWnYNIF4D6zpvGstcYI3oAw6NR6VsZhCgmWGatWB6y5Cb17f50B UTJd3KTCXp7NeHXhUbAjYsy0mpPX+t0/WhyPbDXKBYRUg1LMzVh2OthcqAabMA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZR4xj2NFKzfYp; Mon, 31 Mar 2025 09:06:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52V96XjS078765; Mon, 31 Mar 2025 09:06:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V96Xtj078762; Mon, 31 Mar 2025 09:06:33 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:06:33 GMT Message-Id: <202503310906.52V96Xtj078762@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 1a80a157cbe8 - main - ptrace: Do not pass a negative resid to proc_rwmem() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 1a80a157cbe823ba75bb88823dbf1b245fe87c99 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=1a80a157cbe823ba75bb88823dbf1b245fe87c99 commit 1a80a157cbe823ba75bb88823dbf1b245fe87c99 Author: Mark Johnston AuthorDate: 2025-03-29 08:54:48 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 09:01:09 +0000 ptrace: Do not pass a negative resid to proc_rwmem() While here, avoid truncting uio_resid in proc_rwmem(). Reviewed by: kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49479 --- sys/kern/sys_process.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index c7dd505d97ca..5126f34e3dc3 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -387,7 +387,7 @@ proc_rwmem(struct proc *p, struct uio *uio) /* * How many bytes to copy */ - len = min(PAGE_SIZE - page_offset, uio->uio_resid); + len = MIN(PAGE_SIZE - page_offset, uio->uio_resid); /* * Fault and hold the page on behalf of the process. @@ -1382,6 +1382,10 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data) case PT_IO: piod = addr; + if (piod->piod_len > SSIZE_MAX) { + error = EINVAL; + goto out; + } iov.iov_base = piod->piod_addr; iov.iov_len = piod->piod_len; uio.uio_offset = (off_t)(uintptr_t)piod->piod_offs; From nobody Mon Mar 31 09:06:34 2025 X-Original-To: dev-commits-src-main@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 4ZR4xk5KJSz5rhk9; Mon, 31 Mar 2025 09:06: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZR4xk2rhcz3YNk; Mon, 31 Mar 2025 09:06:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411994; 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=ENCZwrfajdaORctHA48eleSVyOfj+Zl3urdL2O1Rbd4=; b=vljOju7pJmP46F2C7yc9YDp82WL5Sko6DNyTGs8htHnOxNDYmET3eyFJO4C/VSPIqjwIvm ilL05HvPCloItFKxJdewgM7rMNjBmVH4gj6iwHjrLgrwLnR4ltO/jdSm7ny+QGMksfA+h5 5KGX4yrKRRb2uMd4kKNuwlIO9ENm7h1Sdo90PSd0uuenG4ZziG3hnAG3l23u50XVKsoc4N aTrQoREpdaKtjks4LfUaJD8p6AxXwdVxaOjnxIpjfwa1b6h/RxmO2Jss0nx3XNQcJjFFHh PsJl4v0Ux06vzDN+yFjw+u3XdmFdAMhcz0fONQlCjXoSEcV13qWi52QIw8enVg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743411994; a=rsa-sha256; cv=none; b=yNTvqEIcLCaUPb28ICRPazhse78dAhvC67OuAPufC0/9zPzerKHrKhfWQQqcp1bjVNosUH +Dx6oYniWOqcT1QZn5QVuUE/2zTbisHpKYIFSHgC1vF8jz5udYds2OURzKZ1+YoV2jCfOq Jf7OJ8suirQkO2mQzM45BsJkN/M4aaQmLBx2kDZuVagpMZ8fFEAGjvmg2nJjs7rAXB/IiE fGxMVX6Uaoiw5Z/uZ6IQbLPsW5zCOesKLUVjmJ2hqD7EQ7N4khURrWDyvyP1VpTlcO9yoH cOnl4PnIchfDxDN8AVUfS7Td90TwUnjTJyFy7JX5nfc7BVzP+L0I1bWIaSOaRw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411994; 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=ENCZwrfajdaORctHA48eleSVyOfj+Zl3urdL2O1Rbd4=; b=Dmz7DSsDB75YKyIxVnsS5ht7fNsLI/Q/q8c6Qn43vikpAhhLwRhbEGgiVuYREcviIxLjib wXJclxIqvWBubCz2XXt6Gyfc+TffY5uqq8Iu2UfNTWCXNsPOFFmx2MREPgrZFeAtyoLAVs bOPzcrjQrM2t/AFLlQGuxuTRPR3Mdmms4+H4pinfx58lj+emiseCm3STpW9qCY4nm51JfX nDHVvzK1WwGv8yyaoXbLHTUlIvb6Ny4TIlKB6x/w0kvfH7nko5iaSSaFzo3uTx6ifjJR9c Wv9CGwj+luc1JTDXnBKqSr5O6Zjj/6OfQkzXXmIzgZXnI8+VN/UbzpK9ae3g2Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZR4xk2SQPzdyn; Mon, 31 Mar 2025 09:06:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52V96Y2E078799; Mon, 31 Mar 2025 09:06:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V96YGW078796; Mon, 31 Mar 2025 09:06:34 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:06:34 GMT Message-Id: <202503310906.52V96YGW078796@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 590b45036ee1 - main - socket: Handle the possibility of a protocol with no ctloutput List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 590b45036ee16163f9eb8c34791d197e76de502d Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=590b45036ee16163f9eb8c34791d197e76de502d commit 590b45036ee16163f9eb8c34791d197e76de502d Author: Mark Johnston AuthorDate: 2025-03-29 08:55:08 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 09:01:09 +0000 socket: Handle the possibility of a protocol with no ctloutput Add a default ctloutput handler and remove various NULL checks. This fixes a problem wherein the generic SO_SETFIB handler did not check whether the protocol has a ctloutput implementation before calling the function pointer. Reported by: syzkaller Reviewed by: glebius Fixes: caccbaef8e26 ("socket: Move SO_SETFIB handling to protocol layers") MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D49436 --- sys/kern/uipc_domain.c | 7 +++++++ sys/kern/uipc_socket.c | 12 +++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c index 51e0f8cc7726..2d68e11b9f0a 100644 --- a/sys/kern/uipc_domain.c +++ b/sys/kern/uipc_domain.c @@ -97,6 +97,12 @@ pr_control_notsupp(struct socket *so, u_long cmd, void *data, return (EOPNOTSUPP); } +static int +pr_ctloutput_notsupp(struct socket *so, struct sockopt *sopt) +{ + return (ENOPROTOOPT); +} + static int pr_disconnect_notsupp(struct socket *so) { @@ -194,6 +200,7 @@ pr_init(struct domain *dom, struct protosw *pr) NOTSUPP(pr_connect2); NOTSUPP(pr_connectat); NOTSUPP(pr_control); + NOTSUPP(pr_ctloutput); NOTSUPP(pr_disconnect); NOTSUPP(pr_listen); NOTSUPP(pr_peeraddr); diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 63d30f04c8e0..ac00696236a5 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -3804,10 +3804,7 @@ sosetopt(struct socket *so, struct sockopt *sopt) CURVNET_SET(so->so_vnet); error = 0; if (sopt->sopt_level != SOL_SOCKET) { - if (so->so_proto->pr_ctloutput != NULL) - error = (*so->so_proto->pr_ctloutput)(so, sopt); - else - error = ENOPROTOOPT; + error = (*so->so_proto->pr_ctloutput)(so, sopt); } else { switch (sopt->sopt_name) { case SO_ACCEPTFILTER: @@ -4017,7 +4014,7 @@ sosetopt(struct socket *so, struct sockopt *sopt) error = ENOPROTOOPT; break; } - if (error == 0 && so->so_proto->pr_ctloutput != NULL) + if (error == 0) (void)(*so->so_proto->pr_ctloutput)(so, sopt); } bad: @@ -4068,10 +4065,7 @@ sogetopt(struct socket *so, struct sockopt *sopt) CURVNET_SET(so->so_vnet); error = 0; if (sopt->sopt_level != SOL_SOCKET) { - if (so->so_proto->pr_ctloutput != NULL) - error = (*so->so_proto->pr_ctloutput)(so, sopt); - else - error = ENOPROTOOPT; + error = (*so->so_proto->pr_ctloutput)(so, sopt); CURVNET_RESTORE(); return (error); } else { From nobody Mon Mar 31 09:06:35 2025 X-Original-To: dev-commits-src-main@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 4ZR4xl64LGz5rhYQ; Mon, 31 Mar 2025 09:06: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZR4xl3j5Bz3YW3; Mon, 31 Mar 2025 09:06:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411995; 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=jzGECOOrA8Wt6NRATXCL1pSn39aioS08EYHXVXCIIhM=; b=S/q7i+IYNoI6OSxlMgZUvlHkiipdChokDKtRw086OFAj+9CsEq97Iicetr4mJX7Br68lNZ VjYS0TFG4C5bDtuaOBjAIE0V49Egr8KyfjzivOuuM0D/M2hC5nIoZ9/LTznesXvxRX/451 7aaLSAI1DUZJZrlJkGK2palQ7ej9Ans6omVq8p9N/UE8iHs2aXN0JXbNHBG3YTQTUkcSte UtTdEeoH8WnoVzv6MO7HsSBo4yQBe/cARyTwWudiECxE5ogKwGH56yqU421NIpgUrBGfLJ nEBCFrEd4060ehqw8MTOtaMTO12D4BP6p6kSXRlztsldaiaqg+GCv5AL+aXNFQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743411995; a=rsa-sha256; cv=none; b=BNcRKS3OzcgOILk5U/aXZPYVwDWJ11mZ/DIB7naJHhB4Yz6fvp83kw31S2kRhY4svxyJcs Cv/Nw85ZQFu0zVro8vd0n2TrVKRdZ4SrW0U6pQDbkOwsLnTrn18th/J5fN3Wk6cWdCZ8hA vLG2RQq/+JY/jHewc5mt7iJx/+pL3/cK2QG3/e5qbbGJtZ/xVBU03uqB1KO8n0sIUVUzyc FHraMN60DmI3YIJX7m+PCd5iJaDKFswBmt+3hfFaiZ1QLEd+Ams7rF0tmpHmiY0c7Xz5Xb 4zXLnQXMMRU/cIDBPMGgduWBvCp8/H5USZ+K/Oimp6MFx+tYP8y2L4zoHuWQaw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411995; 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=jzGECOOrA8Wt6NRATXCL1pSn39aioS08EYHXVXCIIhM=; b=GAfaz8tmUGQnxzDaVHgEpdTOGv5PXrFz4gPIouumy9YN2e/jsVG0W8aVuuhxYFwOB20lnv QGzzfZOMMIgS/w3SzlShaX7e0S4k9ZocD3VkNTP48MXCltgKOQq+ee6duQEdnzCCl0riCs eqWVSAffPnhWASs4ZAMRNd4fHzP6fRtXs17HfQ3jbU4YAhnH+Qu0is8IErHXOm5fB5ubqi jvmsJwP+5bgXIowAqBhQwH6IJQiZTxE75HNVoeAkOXAhb/AdrwRH1tK8D0iq/tGv1Dcvmg ES5VRdyZBIYLHIZHDO64Lp24GplEtzyklQR/eUJt6T+tRZEP4y4K86DR5q+wqA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZR4xl3JLRzfrm; Mon, 31 Mar 2025 09:06:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52V96ZT5078840; Mon, 31 Mar 2025 09:06:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V96ZJV078837; Mon, 31 Mar 2025 09:06:35 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:06:35 GMT Message-Id: <202503310906.52V96ZJV078837@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: fe7fe3b175b6 - main - rangelock: Fix handling of trylocks List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: fe7fe3b175b626dd1402cd06745b1e3f070c3edd Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=fe7fe3b175b626dd1402cd06745b1e3f070c3edd commit fe7fe3b175b626dd1402cd06745b1e3f070c3edd Author: Mark Johnston AuthorDate: 2025-03-29 08:57:52 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 09:01:09 +0000 rangelock: Fix handling of trylocks When inserting a queue entry, i.e., locking a range, there are two points where a trylock operation may fail, one before the new entry is inserted, one after. In the latter case, rl_(r|w)_validate() would mark the entry and rangelock_lock_int() would free it. However, this is of course incorrect, since the entry is visible to other threads, which will eventually attempt to remove it and free it again. Factor out conflict handling in rl_(r|w)_validate() to a common function as they are functionally the same. Then, introduce a new result which indicates that a trylock failed but that the queue entry must not be cleaned up. While here, assert that a conflicting range isn't owned by the current thread, as that would indicate a bug in the consumer. Reviewed by: olce, kib Reported by: syzkaller Fixes: 5badbeeaf061 ("Re-implement rangelocks part 2") Differential Revision: https://reviews.freebsd.org/D49438 --- sys/kern/kern_rangelock.c | 122 ++++++++++++++++++++++++++++++---------------- 1 file changed, 79 insertions(+), 43 deletions(-) diff --git a/sys/kern/kern_rangelock.c b/sys/kern/kern_rangelock.c index 59112acfb03d..3854ffbeec29 100644 --- a/sys/kern/kern_rangelock.c +++ b/sys/kern/kern_rangelock.c @@ -462,6 +462,10 @@ rl_insert_sleep(struct rangelock *lock) smr_enter(rl_smr); } +/* + * Try to insert an entry into the queue. Return true if successful, otherwise + * false. + */ static bool rl_q_cas(struct rl_q_entry **prev, struct rl_q_entry *old, struct rl_q_entry *new) @@ -517,15 +521,60 @@ again: enum RL_INSERT_RES { RL_TRYLOCK_FAILED, + RL_TRYLOCK_FAILED_MARKED, RL_LOCK_SUCCESS, RL_LOCK_RETRY, }; +/* + * Handle a possible lock conflict between cur and e. "inserted" is true if e + * is already inserted into the queue. + */ +static enum RL_INSERT_RES +rl_conflict(struct rangelock *lock, struct rl_q_entry *cur, struct rl_q_entry *e, + bool trylock, bool inserted) +{ + sleepq_lock(&lock->sleepers); + if (rl_e_is_marked(rl_q_load(&cur->rl_q_next))) { + sleepq_release(&lock->sleepers); + return (RL_LOCK_SUCCESS); /* no conflict after all */ + } + + /* + * Make sure we're not conflicting with one of our own locks. This + * scenario could conceivably happen for one of two reasons: a bug in + * the rangelock consumer (if "inserted" is true), or a bug in the + * rangelock implementation itself (if "inserted" is false). + */ + KASSERT(cur->rl_q_owner != curthread, + ("%s: conflicting range is locked by the current thread", + __func__)); + + if (inserted) + rangelock_unlock_int(lock, e); + if (trylock) { + sleepq_release(&lock->sleepers); + + /* + * If the new entry e has been enqueued and is thus visible to + * other threads, it cannot be safely freed. + */ + return (inserted ? RL_TRYLOCK_FAILED_MARKED: RL_TRYLOCK_FAILED); + } + rl_insert_sleep(lock); + return (RL_LOCK_RETRY); +} + +/* + * Having inserted entry e, verify that no conflicting write locks are present; + * clean up dead entries that we encounter along the way. + */ static enum RL_INSERT_RES rl_r_validate(struct rangelock *lock, struct rl_q_entry *e, bool trylock, struct rl_q_entry **free) { struct rl_q_entry *cur, *next, **prev; + enum RL_INSERT_RES res; again: prev = &e->rl_q_next; @@ -550,28 +599,23 @@ again: cur = rl_e_unmark_unchecked(rl_q_load(prev)); continue; } - if (!rl_e_is_marked(rl_q_load(&cur->rl_q_next))) { - sleepq_lock(&lock->sleepers); - if (rl_e_is_marked(rl_q_load(&cur->rl_q_next))) { - sleepq_release(&lock->sleepers); - continue; - } - rangelock_unlock_int(lock, e); - if (trylock) { - sleepq_release(&lock->sleepers); - return (RL_TRYLOCK_FAILED); - } - rl_insert_sleep(lock); - return (RL_LOCK_RETRY); - } + + res = rl_conflict(lock, cur, e, trylock, true); + if (res != RL_LOCK_SUCCESS) + return (res); } } +/* + * Having inserted entry e, verify that no conflicting locks are present; + * clean up dead entries that we encounter along the way. + */ static enum RL_INSERT_RES rl_w_validate(struct rangelock *lock, struct rl_q_entry *e, bool trylock, struct rl_q_entry **free) { struct rl_q_entry *cur, *next, **prev; + enum RL_INSERT_RES res; again: prev = (struct rl_q_entry **)&lock->head; @@ -596,20 +640,10 @@ again: cur = rl_e_unmark_unchecked(rl_q_load(prev)); continue; } - sleepq_lock(&lock->sleepers); - /* Reload after sleepq is locked */ - next = rl_q_load(&cur->rl_q_next); - if (rl_e_is_marked(next)) { - sleepq_release(&lock->sleepers); - goto again; - } - rangelock_unlock_int(lock, e); - if (trylock) { - sleepq_release(&lock->sleepers); - return (RL_TRYLOCK_FAILED); - } - rl_insert_sleep(lock); - return (RL_LOCK_RETRY); + + res = rl_conflict(lock, cur, e, trylock, true); + if (res != RL_LOCK_SUCCESS) + return (res); } } @@ -653,19 +687,19 @@ again: prev = &cur->rl_q_next; cur = rl_q_load(prev); } else if (r == 0) { - sleepq_lock(&lock->sleepers); - if (__predict_false(rl_e_is_marked(rl_q_load( - &cur->rl_q_next)))) { - sleepq_release(&lock->sleepers); - continue; - } - if (trylock) { - sleepq_release(&lock->sleepers); - return (RL_TRYLOCK_FAILED); + enum RL_INSERT_RES res; + + res = rl_conflict(lock, cur, e, trylock, false); + switch (res) { + case RL_LOCK_SUCCESS: + /* cur does not conflict after all. */ + break; + case RL_LOCK_RETRY: + /* e is still valid. */ + goto again; + default: + return (res); } - rl_insert_sleep(lock); - /* e is still valid */ - goto again; } else /* r == 1 */ { e->rl_q_next = cur; if (rl_q_cas(prev, cur, e)) { @@ -697,10 +731,12 @@ rangelock_lock_int(struct rangelock *lock, bool trylock, vm_ooffset_t start, smr_enter(rl_smr); res = rl_insert(lock, e, trylock, &free); smr_exit(rl_smr); - if (res == RL_TRYLOCK_FAILED) { + if (res == RL_TRYLOCK_FAILED || res == RL_TRYLOCK_FAILED_MARKED) { MPASS(trylock); - e->rl_q_free = free; - free = e; + if (res == RL_TRYLOCK_FAILED) { + e->rl_q_free = free; + free = e; + } e = NULL; } rangelock_free_free(free); From nobody Mon Mar 31 09:06:36 2025 X-Original-To: dev-commits-src-main@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 4ZR4xn1HgDz5rhmQ; Mon, 31 Mar 2025 09:06: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZR4xm5PpDz3YNq; Mon, 31 Mar 2025 09:06:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411996; 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=xZ0+aScfAdkpMnBWQhyLhForPuI9yl0+uW73jBJ/Y8A=; b=R7foS0ik9VwRpxZxgb1FOLzsWMHc8zoYp1L5oBRNzAAiLPVw4iL5zEilYmr2PCgjP/xR/8 OWLHa0ZES+QN5HwUsRqbyvfgpUNvipZtoSQMGuGtaPnC93ysaJOvU8bHvfdUMMLvPjFwL/ KV5TejQHa175hU6s0/MWgZ1GQeKISCfRXeyMubKigFnXv3VRsVJSQ39gl8gLqaigtYk89x PoFcL4xMP6bL0vmVTzqH0t+eQmKAXUM1uNfuFaiZrJp0XRg0uodrSp2vi6taMBtrutl36S GpnZa+JcwrmXACph6KUsillENqz9yewbAJallg8Ksw9D7n/16mOHyvdQBtVfgw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743411996; a=rsa-sha256; cv=none; b=Z5GEj6P+VynA8zlr9gohHUa1oK7puvWqbfZ+aaKVG1JWJM1jKjjQi0RwuMUw4shH2KINuk bz8xpLLk/SFxfgDFVwluCLtvEvJXy5dUwFQpNzVYzfuaYdN0E09aqXzZKukLAclza1zh3P 7lQsOkxjNnQ2uQogyuWLyPQPeSFykja73OZ8pORklpqlRijIWTXF1ii1nL0IrPMiO0PLBh xLzI17I8diS3Th6tk3dZLFg3N7XOSuR/0lHhCJtFgA9wAHxA59+jTspC9HPNCbEpDR7uQm +pW3UwrCAA5nJCy1sLmEEi8MEIaRzryfP45Jtpfx0B/QpkZBsVGi5qRtlgXKlQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411996; 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=xZ0+aScfAdkpMnBWQhyLhForPuI9yl0+uW73jBJ/Y8A=; b=UR8vFuw/zqA1hhlHLbGZOU66Wkjr5zBZEqbBWIzXMpTXUt2PPhnS9S/uOBndEcNtjAJ01R hPVQoLWzct2TqpS4OgGzcn+Qu1lJ6oxAyoa8rHRyz9El8yAIzcscitkIA/lY8+fe+PcA09 /YbFgsVNtidyF6TURN0x5RcVxFRd26DC75E+Tp2K7WVhiBB83hJGc+gefSp/WAyhxAfwnh Yz3h/TuXnaesyS5h1t//TrX7DRuqixxrN18QWhI2KW+skcH8fE/hnADmbPtI8cxWvwilmm 6O5wg+/7hQFTFeTjdqTmNZ7D9NCYkDxyD+R29pt65uptEPEVW4qHLLOOQ8BGOw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZR4xm42hVzfgt; Mon, 31 Mar 2025 09:06:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52V96awH078881; Mon, 31 Mar 2025 09:06:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V96a5t078878; Mon, 31 Mar 2025 09:06:36 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:06:36 GMT Message-Id: <202503310906.52V96a5t078878@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: a6268f89d58c - main - proc: Disallow re-enabling of process itimers during exit List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: a6268f89d58c1962d2372a664a35eaecbf367fbb Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=a6268f89d58c1962d2372a664a35eaecbf367fbb commit a6268f89d58c1962d2372a664a35eaecbf367fbb Author: Mark Johnston AuthorDate: 2025-03-31 01:22:14 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 09:01:09 +0000 proc: Disallow re-enabling of process itimers during exit During process exit, it's possible for the exiting thread to send a signal to its process, via killjobc(). This happens after the itimer is drained. If itimers are stopped, i.e., P2_ITSTOPPED is set, then itimer_proc_continue() will resume the callout after it has been drained. Fix the problem by simply clearing P2_ITSTOPPED as part of the drain. Then, a signal received after that point will not re-enable the callout. For good measure, also make sure that we don't reset the itimer callout in an exiting process. Reported by: syzkaller Reviewed by: kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49529 --- sys/kern/kern_exit.c | 1 + sys/kern/kern_time.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c index a67d6b422964..54e3044ab093 100644 --- a/sys/kern/kern_exit.c +++ b/sys/kern/kern_exit.c @@ -375,6 +375,7 @@ exit1(struct thread *td, int rval, int signo) * Stop the real interval timer. If the handler is currently * executing, prevent it from rearming itself and let it finish. */ + p->p_flag2 &= ~P2_ITSTOPPED; if (timevalisset(&p->p_realtimer.it_value) && callout_stop(&p->p_itcallout) == 0) { timevalclear(&p->p_realtimer.it_interval); diff --git a/sys/kern/kern_time.c b/sys/kern/kern_time.c index c94ae49b6923..d7dc78366292 100644 --- a/sys/kern/kern_time.c +++ b/sys/kern/kern_time.c @@ -884,6 +884,8 @@ realitexpire_reset_callout(struct proc *p, sbintime_t *isbtp) { sbintime_t prec; + if ((p->p_flag & P_WEXIT) != 0) + return; prec = isbtp == NULL ? tvtosbt(p->p_realtimer.it_interval) : *isbtp; callout_reset_sbt(&p->p_itcallout, tvtosbt(p->p_realtimer.it_value), prec >> tc_precexp, realitexpire, p, C_ABSOLUTE); From nobody Mon Mar 31 09:06:37 2025 X-Original-To: dev-commits-src-main@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 4ZR4xp18Rpz5rhmR; Mon, 31 Mar 2025 09:06: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZR4xn5SbNz3YWC; Mon, 31 Mar 2025 09:06:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411997; 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=Bl0ip/sWFSJd7spGxMO3Y8F8EIzqWDc/Qd45tFNWqEs=; b=CEC6YBDjvsd2kzakrPiRMRAQCyDJSaBUN9jRJwuEcSmAzE1+LTRHU879BDW/q5l6+2lpGl nuPIdqnCZGt9R5HmkWQsfn9sOSnwkIWqpPrGnlsa7JCoRbiQR9OMWOUTKIgJlE26kPzZbX wlrv9/6aUpKRccy03GzKrMv0mBM6bXSfwDFTh55SDaG8uUlXfFqnunU5QTcdCkLaAKxJvk isbXuLo2n+8gAWQXW9xBIEeHc/Q9CNSf7F8OHubRL/NSa0R5+C5tr6e1tQ6Llr9QN6KQNF wwQ4oEFOXQixZSck7FHXJmsgLkfot0KMMoiEnNgsRNrceQ7+pTM4BUn10wr/wA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743411997; a=rsa-sha256; cv=none; b=r2YSWaAUPHWybHq2u9OeGzlN90SF5mnelBdBWj/O/Lk3EugVZCfdUKP4BklaNuMVLW6szR 5F+vH+WY6j+BKjZX5JBtik3JagARujqUj3pcdLHF1MYdcoykanFY3vUq+aqPIsEuhO86gr JyHhebeKFQem91bQ/WpRIpFCQg8QOBDbh74puCJQYuNygwl0M22aXHuqwxpBx/WS35XlLE wwHf+W+YYGZ8nsa/1b7uU5yiQsVEHxQsTqbmlNhJdIG9u7xNiY3JniSh3Ao3fPwBeNfLgr QpGcQM410Km0KmUUsgaOpFwE6g7LCLLnPbz7iidMt6L1icU91MpP8cSnpoRNoA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411997; 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=Bl0ip/sWFSJd7spGxMO3Y8F8EIzqWDc/Qd45tFNWqEs=; b=Qnm/qf/2bFrBMyZKfCsow4l6RHjzHkqlXrloUUh9hfW1+q/dLolmpketPtydjFcYHWOmI2 9ix+vUVHksNxN3T+C8Z2Z5JBXQqPCl5RS7j1GvqhZKRu7kvniquWURAIEPPmdB4JXvKrWE 4ImEn5C57TZbTFtwfV1TEcdPgaUTrrkn18fVV8JpeiD3uSOB5L27KL6AtV+aMtAFyGPK8V 4RMtm/6yl8AJP9qneJRLisYGuaLXF3nMruPQB35Bd1IczMD1cwIijUMuQf3H97yWcV/k5t RS8jqyRBIAKppNXzxj25F4DOM/aUJ29eRo32dkJXFPXYve4tH7Do3N7qeg1nsA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZR4xn531Nzfdg; Mon, 31 Mar 2025 09:06:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52V96bXZ078915; Mon, 31 Mar 2025 09:06:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V96bGo078912; Mon, 31 Mar 2025 09:06:37 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:06:37 GMT Message-Id: <202503310906.52V96bGo078912@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 12ecb0fe0afd - main - file: Add foffset_lock_pair() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 12ecb0fe0afda8c051605045e446371ddd34741f Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=12ecb0fe0afda8c051605045e446371ddd34741f commit 12ecb0fe0afda8c051605045e446371ddd34741f Author: Mark Johnston AuthorDate: 2025-03-31 01:25:16 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 09:01:09 +0000 file: Add foffset_lock_pair() This will be used in kern_copy_file_range(), which needs to lock two offsets. Reviewed by: kib, rmacklem MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49440 --- sys/kern/vfs_vnops.c | 20 ++++++++++++++++++++ sys/sys/file.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 0d96bdb3acba..69d8ffcdd5ad 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -892,6 +892,26 @@ foffset_read(struct file *fp) } #endif +void +foffset_lock_pair(struct file *fp1, off_t *off1p, struct file *fp2, off_t *off2p, + int flags) +{ + KASSERT(fp1 != fp2, ("foffset_lock_pair: fp1 == fp2")); + + /* Lock in a consistent order to avoid deadlock. */ + if ((uintptr_t)fp1 > (uintptr_t)fp2) { + struct file *tmpfp; + off_t *tmpoffp; + + tmpfp = fp1, fp1 = fp2, fp2 = tmpfp; + tmpoffp = off1p, off1p = off2p, off2p = tmpoffp; + } + if (fp1 != NULL) + *off1p = foffset_lock(fp1, flags); + if (fp2 != NULL) + *off2p = foffset_lock(fp2, flags); +} + void foffset_lock_uio(struct file *fp, struct uio *uio, int flags) { diff --git a/sys/sys/file.h b/sys/sys/file.h index d0b53196151e..0c025fde475c 100644 --- a/sys/sys/file.h +++ b/sys/sys/file.h @@ -86,6 +86,8 @@ struct ucred; #define FOF_NEXTOFF_W 0x08 /* Also update f_nextoff[UIO_WRITE] */ #define FOF_NOUPDATE 0x10 /* Do not update f_offset */ off_t foffset_lock(struct file *fp, int flags); +void foffset_lock_pair(struct file *fp1, off_t *off1p, struct file *fp2, + off_t *off2p, int flags); void foffset_lock_uio(struct file *fp, struct uio *uio, int flags); void foffset_unlock(struct file *fp, off_t val, int flags); void foffset_unlock_uio(struct file *fp, struct uio *uio, int flags); From nobody Mon Mar 31 09:06:38 2025 X-Original-To: dev-commits-src-main@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 4ZR4xr08Nxz5rhkK; Mon, 31 Mar 2025 09:06: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZR4xq0Vfvz3YC4; Mon, 31 Mar 2025 09:06:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411999; 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=8N/QzN+32GUl9BfXWU74DCnerCE+vpIZQ2dy/ElKgjw=; b=nwg6FcO1XzG6T1WWrnppvVAiCZDnY50a0gTxsbXKN4eXZOEvHOvk9bBxVi/DkMN9i72IjF RDsmf4x42DqxRrfPPLRYVRwzuidoYhMBd58vx0tbJbwMUDupRNfvSWOrfTbCNsFxZ+HX3x zDEfWBESvUhLavb9/SFh6rHVNZpo21NI7l8sxlSWDkmz2dhF/5m8ksV8+FLbILr9rwYXvW VCTUrdKIpMDJ2HqIQ/9TusCbyo9D6YX2LUPNAlJICHuWXOcGtjMXfcAMlLEhxEQB2gus2h aaDsnlHKVcGHW/as00TSKXOXij6lRDmVK9ecjHs1g5EiL38b7KIILXuvYDju/w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743411999; a=rsa-sha256; cv=none; b=t16A0nAIJvzYfu7tG23FOqzt9okUHa6mwFdk/qV0klh/W4w9GXZcXdbKttjQCYESr3njg4 WG9wj6RO1yrEFgI3uGb3RY9O3Kk7VLTZOaMjjEIUxHYIlClheiURBudXvnjX0Aqbd5iVGe woojXXSbfST6LmxPhFa8ikc+42+c9ICr24CEd4gvOTWgba+9g8Xz531amqnkoQCRtZZiPv DiWb35t/BXHGCCJQpNY4Jy3FBggjEAIquXLiy6/z518A7rf5znWZ6pWWvO7vx3OmUz5oyo IoPWDppXs1DcsFQDdL3J/d2zTQG2EFbWHhoaA/MtXToiLSNHVCxOD66TU7atiQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411999; 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=8N/QzN+32GUl9BfXWU74DCnerCE+vpIZQ2dy/ElKgjw=; b=tOusGr/h6dmbkK81EorjYiBBILIposmJkG5K/glECZN/NDjobaZ8mmkAmw++sAtPwZu7ae fuqJ2L/AaB6KzP7ZUbP2kVFaMTB5YifFeiSZzrqql5JfUH7VEp3nPQv9HO17j95vgZfiPg +WyJdMSVHqvuEad190PZ+U7zvq4p66haL8iomVESINszJK4ypuudukKna6kTEgm4xCTXE+ jL9fvvr+BmA2fBYa1Mv/bNb/cpeFLe9kiYmDmWYjqvrvcNL0LRn4iPPAd4bXQvgI3h1Wui WCqdU1j+jnBXCZaiN4RXBwJ5+303ci7nOD0gY8ZfveU8D9LezIppFKp5+9lK7w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZR4xp5hljzfPq; Mon, 31 Mar 2025 09:06:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52V96cjg078949; Mon, 31 Mar 2025 09:06:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V96cJP078946; Mon, 31 Mar 2025 09:06:38 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:06:38 GMT Message-Id: <202503310906.52V96cJP078946@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 197997a4c36d - main - file: Fix offset handling in kern_copy_file_range() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 197997a4c36d8be5807688a4f973ebe8ae807a6e Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=197997a4c36d8be5807688a4f973ebe8ae807a6e commit 197997a4c36d8be5807688a4f973ebe8ae807a6e Author: Mark Johnston AuthorDate: 2025-03-31 01:23:30 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 09:01:09 +0000 file: Fix offset handling in kern_copy_file_range() One can ask copy_file_range(2) to use the file offsets of the file descriptions that it copies from and to. We were updating those offsets without any locking, which is incorrect and can lead to unkillable loops in the event of a race (e.g., the check for overlapping ranges in kern_copy_file_range() is subject to a TOCTOU race with the following loop which range-locks the input and output file). Use foffset_lock() to serialize updates to the file descriptions, as we do for other, similar system calls. Reported by: syzkaller Reviewed by: rmacklem, kib MFC after: 2 weeks Fixes: bbbbeca3e9a3 ("Add kernel support for a Linux compatible copy_file_range(2) syscall.") Differential Revision: https://reviews.freebsd.org/D49440 --- sys/kern/vfs_syscalls.c | 73 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 41609d7c5351..a6c216d61d8c 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -4940,16 +4940,17 @@ int kern_copy_file_range(struct thread *td, int infd, off_t *inoffp, int outfd, off_t *outoffp, size_t len, unsigned int flags) { - struct file *infp, *outfp; + struct file *infp, *infp1, *outfp, *outfp1; struct vnode *invp, *outvp; int error; size_t retlen; void *rl_rcookie, *rl_wcookie; - off_t savinoff, savoutoff; + off_t inoff, outoff, savinoff, savoutoff; + bool foffsets_locked; infp = outfp = NULL; rl_rcookie = rl_wcookie = NULL; - savinoff = -1; + foffsets_locked = false; error = 0; retlen = 0; @@ -4991,13 +4992,35 @@ kern_copy_file_range(struct thread *td, int infd, off_t *inoffp, int outfd, goto out; } - /* Set the offset pointers to the correct place. */ - if (inoffp == NULL) - inoffp = &infp->f_offset; - if (outoffp == NULL) - outoffp = &outfp->f_offset; - savinoff = *inoffp; - savoutoff = *outoffp; + /* + * Figure out which file offsets we're reading from and writing to. + * If the offsets come from the file descriptions, we need to lock them, + * and locking both offsets requires a loop to avoid deadlocks. + */ + infp1 = outfp1 = NULL; + if (inoffp != NULL) + inoff = *inoffp; + else + infp1 = infp; + if (outoffp != NULL) + outoff = *outoffp; + else + outfp1 = outfp; + if (infp1 != NULL || outfp1 != NULL) { + if (infp1 == outfp1) { + /* + * Overlapping ranges are not allowed. A more thorough + * check appears below, but we must not lock the same + * offset twice. + */ + error = EINVAL; + goto out; + } + foffset_lock_pair(infp1, &inoff, outfp1, &outoff, 0); + foffsets_locked = true; + } + savinoff = inoff; + savoutoff = outoff; invp = infp->f_vnode; outvp = outfp->f_vnode; @@ -5017,8 +5040,8 @@ kern_copy_file_range(struct thread *td, int infd, off_t *inoffp, int outfd, * overlap. */ if (invp == outvp) { - if ((savinoff <= savoutoff && savinoff + len > savoutoff) || - (savinoff > savoutoff && savoutoff + len > savinoff)) { + if ((inoff <= outoff && inoff + len > outoff) || + (inoff > outoff && outoff + len > inoff)) { error = EINVAL; goto out; } @@ -5027,28 +5050,36 @@ kern_copy_file_range(struct thread *td, int infd, off_t *inoffp, int outfd, /* Range lock the byte ranges for both invp and outvp. */ for (;;) { - rl_wcookie = vn_rangelock_wlock(outvp, *outoffp, *outoffp + - len); - rl_rcookie = vn_rangelock_tryrlock(invp, *inoffp, *inoffp + - len); + rl_wcookie = vn_rangelock_wlock(outvp, outoff, outoff + len); + rl_rcookie = vn_rangelock_tryrlock(invp, inoff, inoff + len); if (rl_rcookie != NULL) break; vn_rangelock_unlock(outvp, rl_wcookie); - rl_rcookie = vn_rangelock_rlock(invp, *inoffp, *inoffp + len); + rl_rcookie = vn_rangelock_rlock(invp, inoff, inoff + len); vn_rangelock_unlock(invp, rl_rcookie); } retlen = len; - error = vn_copy_file_range(invp, inoffp, outvp, outoffp, &retlen, + error = vn_copy_file_range(invp, &inoff, outvp, &outoff, &retlen, flags, infp->f_cred, outfp->f_cred, td); out: if (rl_rcookie != NULL) vn_rangelock_unlock(invp, rl_rcookie); if (rl_wcookie != NULL) vn_rangelock_unlock(outvp, rl_wcookie); - if (savinoff != -1 && (error == EINTR || error == ERESTART)) { - *inoffp = savinoff; - *outoffp = savoutoff; + if (foffsets_locked) { + if (error == EINTR || error == ERESTART) { + inoff = savinoff; + outoff = savoutoff; + } + if (inoffp == NULL) + foffset_unlock(infp, inoff, 0); + else + *inoffp = inoff; + if (outoffp == NULL) + foffset_unlock(outfp, outoff, 0); + else + *outoffp = outoff; } if (outfp != NULL) fdrop(outfp, td); From nobody Mon Mar 31 09:18:12 2025 X-Original-To: dev-commits-src-main@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 4ZR5C919hBz5rhvH; Mon, 31 Mar 2025 09:18:13 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZR5C86tD5z3gf8; Mon, 31 Mar 2025 09:18:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743412692; 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=MP0EiSd7BHp5SaE+RpfS32CdggmcVaN8LgR4vA6Es4w=; b=k3XlKExI1L8QY1rKkyu5QP41cjDx2dFYFKLoU/y/RpPsPhcxzAZrEDE3MmlrESa9I5oUwk Ie6banrU/9zLN2+TokxGMq1m5tERKp/vsni4/JCK4ihNnKm2nCkcTXZlPtsqUZtS0Q+p05 9u+uAhf+c6IEUGzccqlPn8H7bzj78WXKWqhFSNStQFGMKboGVUNam1NDcotmnnxi8q54Eg cDu3e8Zcg+jZgNdlhNUNaJcnAO/573mpF6R0F7XXLL72nnPpjw/GRhLjohTHQsKiy3QdIK aSJvS79g5efEQgKj1LtRTcd1bJ6MLp4uHmWSvKeJcNromRq/DmncNOT00//7Pw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743412692; a=rsa-sha256; cv=none; b=NC9Jwu2HC89XThyBheb8PCbC3xILbyYODXPHtdvr8410y8ppPGmEIQ0lNhSMc1mpL+uHyO SwHykQuV6uPUgsI/erW/nGe7QYut5/4t/+2ODuli5odwrqOFjdv5tTBMyQ3MEbCJebd6qz gypPelb+0ESzJNfHxMSns+aCRN57+bZCxfpBmbFz/c7hmc9Mb9mOzS09JULLXA51yUDzAx S/GyhvQv0VmXaY2I4fNzQSMHXhti0wvj1Y/j0eB6TlWp3MoTbJtV8HVCzZMHML/UveDxcD z568UNskrkWZoKN4xho12cYewfxZYqaYodrNuN/udZ8AzmulnwWtWBtWbdojag== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743412692; 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=MP0EiSd7BHp5SaE+RpfS32CdggmcVaN8LgR4vA6Es4w=; b=uQQWyYdII7uMv+Tawh17JbSzNz9ZrQhcNPlNXVRttZUYnslPanTGO+wpvhMhQOSPa5Mh9I Emq6wjWR+vDTrxnjFe0AYbCPgRZNeb78i+xdjDLNaZb4Gl2UW0tAbt23sPjX41nABZlhl1 +Q3rUHEJj8rZLwEl8JxnqzjbKqEXNFAkNHk03xiqrkVhO7Zzbb+FO93Ko7eIgziuJmScj/ 8YCvjVan+1P79LQrxNY1CJjk13LxDjZ5CwgrFSbP1LEBROz0FgpRDrHAxIr3KdO9a9JTRI tCeumnFcU/KXX6E5x133KK6Q5lmV4vJsSw5sVSjX9rWwRB2aN0rIsrnIi80Rww== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZR5C85pPXzfsq; Mon, 31 Mar 2025 09:18:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52V9ICKs098954; Mon, 31 Mar 2025 09:18:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V9ICYN098951; Mon, 31 Mar 2025 09:18:12 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:18:12 GMT Message-Id: <202503310918.52V9ICYN098951@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Igor Ostapenko Subject: git: 30e6e008bc06 - main - jail: Add meta and env parameters List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: igoro X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 30e6e008bc06385a66756bebb41676f4f9017eca Auto-Submitted: auto-generated The branch main has been updated by igoro: URL: https://cgit.FreeBSD.org/src/commit/?id=30e6e008bc06385a66756bebb41676f4f9017eca commit 30e6e008bc06385a66756bebb41676f4f9017eca Author: Igor Ostapenko AuthorDate: 2025-03-31 09:08:43 +0000 Commit: Igor Ostapenko CommitDate: 2025-03-31 09:17:03 +0000 jail: Add meta and env parameters Each one is an arbitrary string associated with a jail. It can be set upon jail creation or added/modified later: > jail -cm ... meta="tag1=value1 tag2=value2" env="configuration" The values are not inherited from the parent jail. A parent jail can read both metadata parameters, while a child jail can read only env via security.jail.env sysctl. The maximum size of meta or env per jail is controlled by the global security.jail.meta_maxbufsize sysctl. Decreasing it does not alter the existing meta information. Each metadata buffer can be handled as a set of key=value\n strings: > jail -cm ... meta="$(echo k1=v1; echo k2=v2)" env.1=one > jls meta.k2 env.1 meta.k1 While meta.k1= resets the value to an empty string, the meta.k1 without the equal sign removes the given key. Relnotes: yes Reviewed by: jamie Tested by: dch Sponsored by: SkunkWerks GmbH Differential Revision: https://reviews.freebsd.org/D47668 --- lib/libjail/jail.c | 84 +++++- lib/libjail/jail.h | 1 + libexec/flua/libjail/lua_jail.c | 16 +- sys/conf/files | 1 + sys/kern/kern_jail.c | 11 +- sys/kern/kern_jailmeta.c | 621 ++++++++++++++++++++++++++++++++++++++++ sys/sys/jail.h | 4 + tests/sys/kern/Makefile | 1 + tests/sys/kern/jailmeta.sh | 588 +++++++++++++++++++++++++++++++++++++ usr.sbin/jail/jail.8 | 36 +++ usr.sbin/jls/jls.c | 8 + 11 files changed, 1351 insertions(+), 20 deletions(-) diff --git a/lib/libjail/jail.c b/lib/libjail/jail.c index 8e5b420d677b..30282e67866c 100644 --- a/lib/libjail/jail.c +++ b/lib/libjail/jail.c @@ -59,6 +59,7 @@ static int jailparam_type(struct jailparam *jp); static int kldload_param(const char *name); static char *noname(const char *name); static char *nononame(const char *name); +static char *kvname(const char *name); char jail_errmsg[JAIL_ERRMSGLEN]; @@ -521,6 +522,11 @@ jailparam_set(struct jailparam *jp, unsigned njp, int flags) jiov[i - 1].iov_len = strlen(nname) + 1; } + } else if (jp[j].jp_flags & JP_KEYVALUE && + jp[j].jp_value == NULL) { + /* No value means key removal. */ + jiov[i].iov_base = NULL; + jiov[i].iov_len = 0; } else { /* * Try to fill in missing values with an empty string. @@ -907,22 +913,41 @@ jailparam_type(struct jailparam *jp) * the "no" counterpart to a boolean. */ nname = nononame(name); - if (nname == NULL) { - unknown_parameter: - snprintf(jail_errmsg, JAIL_ERRMSGLEN, - "unknown parameter: %s", jp->jp_name); - errno = ENOENT; - return (-1); + if (nname != NULL) { + snprintf(desc.s, sizeof(desc.s), SJPARAM ".%s", nname); + miblen = sizeof(mib) - 2 * sizeof(int); + if (sysctl(mib, 2, mib + 2, &miblen, desc.s, + strlen(desc.s)) >= 0) { + name = alloca(strlen(nname) + 1); + strcpy(name, nname); + free(nname); + jp->jp_flags |= JP_NOBOOL; + goto mib_desc; + } + free(nname); } - name = alloca(strlen(nname) + 1); - strcpy(name, nname); - free(nname); - snprintf(desc.s, sizeof(desc.s), SJPARAM ".%s", name); - miblen = sizeof(mib) - 2 * sizeof(int); - if (sysctl(mib, 2, mib + 2, &miblen, desc.s, - strlen(desc.s)) < 0) - goto unknown_parameter; - jp->jp_flags |= JP_NOBOOL; + /* + * It might be an assumed sub-node of a fmt='A,keyvalue' sysctl. + */ + nname = kvname(name); + if (nname != NULL) { + snprintf(desc.s, sizeof(desc.s), SJPARAM ".%s", nname); + miblen = sizeof(mib) - 2 * sizeof(int); + if (sysctl(mib, 2, mib + 2, &miblen, desc.s, + strlen(desc.s)) >= 0) { + name = alloca(strlen(nname) + 1); + strcpy(name, nname); + free(nname); + jp->jp_flags |= JP_KEYVALUE; + goto mib_desc; + } + free(nname); + } +unknown_parameter: + snprintf(jail_errmsg, JAIL_ERRMSGLEN, + "unknown parameter: %s", jp->jp_name); + errno = ENOENT; + return (-1); } mib_desc: mib[1] = 4; @@ -943,6 +968,12 @@ jailparam_type(struct jailparam *jp) else if ((desc.i & CTLTYPE) != CTLTYPE_NODE) goto unknown_parameter; } + /* Make sure it is a valid keyvalue param. */ + if (jp->jp_flags & JP_KEYVALUE) { + if ((desc.i & CTLTYPE) != CTLTYPE_STRING || + strcmp(desc.s, "A,keyvalue") != 0) + goto unknown_parameter; + } /* See if this is an array type. */ p = strchr(desc.s, '\0'); isarray = 0; @@ -1119,3 +1150,26 @@ nononame(const char *name) strcpy(nname, name + 2); return (nname); } + +static char * +kvname(const char *name) +{ + const char *p; + char *kvname; + size_t len; + + p = strchr(name, '.'); + if (p == NULL) + return (NULL); + + len = p - name; + kvname = malloc(len + 1); + if (kvname == NULL) { + strerror_r(errno, jail_errmsg, JAIL_ERRMSGLEN); + return (NULL); + } + strncpy(kvname, name, len); + kvname[len] = '\0'; + + return (kvname); +} diff --git a/lib/libjail/jail.h b/lib/libjail/jail.h index 27f07cd98802..6ce79b1b0528 100644 --- a/lib/libjail/jail.h +++ b/lib/libjail/jail.h @@ -33,6 +33,7 @@ #define JP_BOOL 0x02 #define JP_NOBOOL 0x04 #define JP_JAILSYS 0x08 +#define JP_KEYVALUE 0x10 #define JAIL_ERRMSGLEN 1024 diff --git a/libexec/flua/libjail/lua_jail.c b/libexec/flua/libjail/lua_jail.c index f364b090b3f9..9632db795775 100644 --- a/libexec/flua/libjail/lua_jail.c +++ b/libexec/flua/libjail/lua_jail.c @@ -445,9 +445,16 @@ l_getparams(lua_State *L) for (size_t i = 0; i < params_count; ++i) { char *value; - value = jailparam_export(¶ms[i]); - lua_pushstring(L, value); - free(value); + if (params[i].jp_flags & JP_KEYVALUE && + params[i].jp_valuelen == 0) { + /* Communicate back a missing key. */ + lua_pushnil(L); + } else { + value = jailparam_export(¶ms[i]); + lua_pushstring(L, value); + free(value); + } + lua_setfield(L, -2, params[i].jp_name); } @@ -535,7 +542,8 @@ l_setparams(lua_State *L) } value = lua_tostring(L, -1); - if (value == NULL) { + /* Allow passing NULL for key removal. */ + if (value == NULL && !(params[i].jp_flags & JP_KEYVALUE)) { jailparam_free(params, i + 1); free(params); return (luaL_argerror(L, 2, diff --git a/sys/conf/files b/sys/conf/files index 9173fc9b81e5..3be4c1d8e3dd 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -3792,6 +3792,7 @@ kern/kern_hhook.c standard kern/kern_idle.c standard kern/kern_intr.c standard kern/kern_jail.c standard +kern/kern_jailmeta.c standard kern/kern_kcov.c optional kcov \ compile-with "${NOSAN_C} ${MSAN_CFLAGS}" kern/kern_khelp.c standard diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c index 6ffeab59112b..37c0bd49490f 100644 --- a/sys/kern/kern_jail.c +++ b/sys/kern/kern_jail.c @@ -2552,6 +2552,15 @@ kern_jail_get(struct thread *td, struct uio *optuio, int flags) /* By now, all parameters should have been noted. */ TAILQ_FOREACH(opt, opts, link) { + if (!opt->seen && + (strstr(opt->name, JAIL_META_PRIVATE ".") == opt->name || + strstr(opt->name, JAIL_META_SHARED ".") == opt->name)) { + /* Communicate back a missing key. */ + free(opt->value, M_MOUNT); + opt->value = NULL; + opt->len = 0; + continue; + } if (!opt->seen && strcmp(opt->name, "errmsg")) { error = EINVAL; vfs_opterror(opts, "unknown parameter: %s", opt->name); @@ -4272,7 +4281,7 @@ prison_path(struct prison *pr1, struct prison *pr2) /* * Jail-related sysctls. */ -static SYSCTL_NODE(_security, OID_AUTO, jail, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, +SYSCTL_NODE(_security, OID_AUTO, jail, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, "Jails"); #if defined(INET) || defined(INET6) diff --git a/sys/kern/kern_jailmeta.c b/sys/kern/kern_jailmeta.c new file mode 100644 index 000000000000..4e37eccad03a --- /dev/null +++ b/sys/kern/kern_jailmeta.c @@ -0,0 +1,621 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2024 SkunkWerks GmbH + * + * This software was developed by Igor Ostapenko + * under sponsorship from SkunkWerks GmbH. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Buffer limit. + * + * The hard limit is the actual value used during setting or modification. The + * soft limit is used solely by the security.jail.param.meta and .env sysctl. If + * the hard limit is decreased, the soft limit may remain higher to ensure that + * previously set meta strings can still be correctly interpreted by end-user + * interfaces, such as jls(8). + */ + +static uint32_t jm_maxbufsize_hard = 4096; +static uint32_t jm_maxbufsize_soft = 4096; + +static int +jm_sysctl_meta_maxbufsize(SYSCTL_HANDLER_ARGS) +{ + int error; + uint32_t newmax = 0; + + /* Reading only. */ + + if (req->newptr == NULL) { + sx_slock(&allprison_lock); + error = SYSCTL_OUT(req, &jm_maxbufsize_hard, + sizeof(jm_maxbufsize_hard)); + sx_sunlock(&allprison_lock); + + return (error); + } + + /* Reading and writing. */ + + sx_xlock(&allprison_lock); + + error = SYSCTL_OUT(req, &jm_maxbufsize_hard, + sizeof(jm_maxbufsize_hard)); + if (error != 0) + goto end; + + error = SYSCTL_IN(req, &newmax, sizeof(newmax)); + if (error != 0) + goto end; + + jm_maxbufsize_hard = newmax; + if (jm_maxbufsize_hard >= jm_maxbufsize_soft) { + jm_maxbufsize_soft = jm_maxbufsize_hard; + } else if (TAILQ_EMPTY(&allprison)) { + /* + * For now, this is the simplest way to + * avoid O(n) iteration over all prisons in + * case of a large n. + */ + jm_maxbufsize_soft = jm_maxbufsize_hard; + } + +end: + sx_xunlock(&allprison_lock); + return (error); +} +SYSCTL_PROC(_security_jail, OID_AUTO, meta_maxbufsize, + CTLTYPE_U32 | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0, + jm_sysctl_meta_maxbufsize, "IU", + "Maximum buffer size of each meta and env"); + + +/* Jail parameter announcement. */ + +static int +jm_sysctl_param_meta(SYSCTL_HANDLER_ARGS) +{ + uint32_t soft; + + sx_slock(&allprison_lock); + soft = jm_maxbufsize_soft; + sx_sunlock(&allprison_lock); + + return (sysctl_jail_param(oidp, arg1, soft, req)); +} +SYSCTL_PROC(_security_jail_param, OID_AUTO, meta, + CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0, + jm_sysctl_param_meta, "A,keyvalue", + "Jail meta information hidden from the jail"); +SYSCTL_PROC(_security_jail_param, OID_AUTO, env, + CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0, + jm_sysctl_param_meta, "A,keyvalue", + "Jail meta information readable by the jail"); + + +/* Generic OSD-based logic for any metadata buffer. */ + +struct meta { + char *name; + u_int osd_slot; + osd_method_t methods[PR_MAXMETHOD]; +}; + +/* A chain of hunks representing the final buffer after all manipulations. */ +struct hunk { + char *p; /* a buf reference */ + size_t len; /* number of bytes referred */ + char *owned; /* must be freed */ + struct hunk *next; +}; + +static inline struct hunk * +jm_h_alloc(void) +{ + /* All fields are zeroed. */ + return (malloc(sizeof(struct hunk), M_PRISON, M_WAITOK | M_ZERO)); +} + +static inline struct hunk * +jm_h_prepend(struct hunk *h, char *p, size_t len) +{ + struct hunk *n; + + n = jm_h_alloc(); + n->p = p; + n->len = len; + n->next = h; + return (n); +} + +static inline void +jm_h_cut_line(struct hunk *h, char *begin) +{ + struct hunk *rem; + char *end; + + /* Find the end of key=value. */ + for (end = begin; (end + 1) < (h->p + h->len); end++) + if (*end == '\0' || *end == '\n') + break; + + /* Pick up a non-empty remainder. */ + if ((end + 1) < (h->p + h->len) && *(end + 1) != '\0') { + rem = jm_h_alloc(); + rem->p = end + 1; + rem->len = h->p + h->len - rem->p; + + /* insert */ + rem->next = h->next; + h->next = rem; + } + + /* Shorten this hunk. */ + h->len = begin - h->p; +} + +static inline void +jm_h_cut_occurrences(struct hunk *h, const char *key, size_t keylen) +{ + char *p = h->p; + +#define nexthunk() \ + do { \ + h = h->next; \ + p = (h == NULL) ? NULL : h->p; \ + } while (0) + + while (p != NULL) { + p = strnstr(p, key, h->len - (p - h->p)); + if (p == NULL) { + nexthunk(); + continue; + } + if ((p == h->p || *(p - 1) == '\n') && p[keylen] == '=') { + jm_h_cut_line(h, p); + nexthunk(); + continue; + } + /* Continue with this hunk. */ + p += keylen; + /* Empty? The next hunk then. */ + if ((p - h->p) >= h->len) + nexthunk(); + } +} + +static inline size_t +jm_h_len(struct hunk *h) +{ + size_t len = 0; + while (h != NULL) { + len += h->len; + h = h->next; + } + return (len); +} + +static inline void +jm_h_assemble(char *dst, struct hunk *h) +{ + while (h != NULL) { + if (h->len > 0) { + memcpy(dst, h->p, h->len); + dst += h->len; + /* If not the last hunk then concatenate with \n. */ + if (h->next != NULL && *(dst - 1) == '\0') + *(dst - 1) = '\n'; + } + h = h->next; + } +} + +static inline struct hunk * +jm_h_freechain(struct hunk *h) +{ + struct hunk *n = h; + while (n != NULL) { + h = n; + n = h->next; + free(h->owned, M_PRISON); + free(h, M_PRISON); + } + + return (NULL); +} + +static int +jm_osd_method_set(void *obj, void *data, const struct meta *meta) +{ + struct prison *pr = obj; + struct vfsoptlist *opts = data; + struct vfsopt *opt; + + char *origosd; + char *origosd_copy; + char *oldosd; + char *osd; + size_t osdlen; + struct hunk *h; + char *key; + size_t keylen; + int error; + int repeats = 0; + bool repeat; + + sx_assert(&allprison_lock, SA_XLOCKED); + +again: + origosd = NULL; + origosd_copy = NULL; + osd = NULL; + h = NULL; + error = 0; + repeat = false; + TAILQ_FOREACH(opt, opts, link) { + /* Look for options with prefix. */ + if (strstr(opt->name, meta->name) != opt->name) + continue; + /* Consider only full or .* ones. */ + if (opt->name[strlen(meta->name)] != '.' && + opt->name[strlen(meta->name)] != '\0') + continue; + opt->seen = 1; + + /* The very first preconditions. */ + if (opt->len < 0) + continue; + if (opt->len > jm_maxbufsize_hard) { + error = EFBIG; + break; + } + /* NULL-terminated strings are expected from vfsopt. */ + if (opt->value != NULL && + ((char *)opt->value)[opt->len - 1] != '\0') { + error = EINVAL; + break; + } + + /* Work with our own copy of existing metadata. */ + if (h == NULL) { + h = jm_h_alloc(); /* zeroed */ + mtx_lock(&pr->pr_mtx); + origosd = osd_jail_get(pr, meta->osd_slot); + if (origosd != NULL) { + origosd_copy = malloc(strlen(origosd) + 1, + M_PRISON, M_NOWAIT); + if (origosd_copy == NULL) + error = ENOMEM; + else { + h->p = origosd_copy; + h->len = strlen(origosd) + 1; + memcpy(h->p, origosd, h->len); + } + } + mtx_unlock(&pr->pr_mtx); + if (error != 0) + break; + } + + /* 1) Change the whole metadata. */ + if (strcmp(opt->name, meta->name) == 0) { + if (opt->len > jm_maxbufsize_hard) { + error = EFBIG; + break; + } + h = jm_h_freechain(h); + h = jm_h_prepend(h, + (opt->value != NULL) ? opt->value : "", + /* avoid empty NULL-terminated string */ + (opt->len > 1) ? opt->len : 0); + continue; + } + + /* 2) Or add/replace/remove a specific key=value. */ + key = opt->name + strlen(meta->name) + 1; + keylen = strlen(key); + if (keylen < 1) { + error = EINVAL; + break; + } + jm_h_cut_occurrences(h, key, keylen); + if (opt->value == NULL) + continue; /* key removal */ + h = jm_h_prepend(h, NULL, 0); + h->len = keylen + 1 + opt->len; /* key=value\0 */ + h->owned = malloc(h->len, M_PRISON, M_WAITOK | M_ZERO); + h->p = h->owned; + memcpy(h->p, key, keylen); + h->p[keylen] = '='; + memcpy(h->p + keylen + 1, opt->value, opt->len); + } + + if (h == NULL || error != 0) + goto end; + + /* Assemble the final contiguous buffer. */ + osdlen = jm_h_len(h); + if (osdlen > jm_maxbufsize_hard) { + error = EFBIG; + goto end; + } + if (osdlen > 1) { + osd = malloc(osdlen, M_PRISON, M_WAITOK); + jm_h_assemble(osd, h); + osd[osdlen - 1] = '\0'; /* sealed */ + } + + /* Compare and swap the buffers. */ + mtx_lock(&pr->pr_mtx); + oldosd = osd_jail_get(pr, meta->osd_slot); + if (oldosd == origosd) { + error = osd_jail_set(pr, meta->osd_slot, osd); + } else { + /* + * The osd(9) framework requires protection only for pr_osd, + * which is covered by pr_mtx. Therefore, other code might + * legally alter jail metadata without allprison_lock. It + * means that here we could override data just added by other + * thread. This extra caution with retry mechanism aims to + * prevent user data loss in such potential cases. + */ + error = EAGAIN; + repeat = true; + } + mtx_unlock(&pr->pr_mtx); + if (error == 0) + osd = oldosd; + +end: + jm_h_freechain(h); + free(osd, M_PRISON); + free(origosd_copy, M_PRISON); + + if (repeat && ++repeats < 3) + goto again; + + return (error); +} + +static int +jm_osd_method_get(void *obj, void *data, const struct meta *meta) +{ + struct prison *pr = obj; + struct vfsoptlist *opts = data; + struct vfsopt *opt; + char *osd = NULL; + char empty = '\0'; + int error = 0; + bool locked = false; + const char *key; + size_t keylen; + const char *p; + + sx_assert(&allprison_lock, SA_SLOCKED); + + TAILQ_FOREACH(opt, opts, link) { + if (strstr(opt->name, meta->name) != opt->name) + continue; + if (opt->name[strlen(meta->name)] != '.' && + opt->name[strlen(meta->name)] != '\0') + continue; + + if (!locked) { + mtx_lock(&pr->pr_mtx); + locked = true; + osd = osd_jail_get(pr, meta->osd_slot); + if (osd == NULL) + osd = ∅ + } + + /* Provide full metadata. */ + if (strcmp(opt->name, meta->name) == 0) { + if (strlcpy(opt->value, osd, opt->len) >= opt->len) { + error = EINVAL; + break; + } + opt->seen = 1; + continue; + } + + /* Extract a specific key=value. */ + p = osd; + key = opt->name + strlen(meta->name) + 1; + keylen = strlen(key); + while ((p = strstr(p, key)) != NULL) { + if ((p == osd || *(p - 1) == '\n') + && p[keylen] == '=') { + if (strlcpy(opt->value, p + keylen + 1, + MIN(opt->len, strchr(p + keylen + 1, '\n') - + (p + keylen + 1) + 1)) >= opt->len) { + error = EINVAL; + break; + } + opt->seen = 1; + } + p += keylen; + } + if (error != 0) + break; + } + + if (locked) + mtx_unlock(&pr->pr_mtx); + + return (error); +} + +static int +jm_osd_method_check(void *obj __unused, void *data, const struct meta *meta) +{ + struct vfsoptlist *opts = data; + struct vfsopt *opt; + + TAILQ_FOREACH(opt, opts, link) { + if (strstr(opt->name, meta->name) != opt->name) + continue; + if (opt->name[strlen(meta->name)] != '.' && + opt->name[strlen(meta->name)] != '\0') + continue; + opt->seen = 1; + } + + return (0); +} + +static void +jm_osd_destructor(void *osd) +{ + free(osd, M_PRISON); +} + + +/* OSD for "meta" param */ + +static struct meta meta; + +static inline int +jm_osd_method_set_meta(void *obj, void *data) +{ + return (jm_osd_method_set(obj, data, &meta)); +} + +static inline int +jm_osd_method_get_meta(void *obj, void *data) +{ + return (jm_osd_method_get(obj, data, &meta)); +} + +static inline int +jm_osd_method_check_meta(void *obj, void *data) +{ + return (jm_osd_method_check(obj, data, &meta)); +} + +static struct meta meta = { + .name = JAIL_META_PRIVATE, + .osd_slot = 0, + .methods = { + [PR_METHOD_SET] = jm_osd_method_set_meta, + [PR_METHOD_GET] = jm_osd_method_get_meta, + [PR_METHOD_CHECK] = jm_osd_method_check_meta, + } +}; + + +/* OSD for "env" param */ + +static struct meta env; + +static inline int +jm_osd_method_set_env(void *obj, void *data) +{ + return (jm_osd_method_set(obj, data, &env)); +} + +static inline int +jm_osd_method_get_env(void *obj, void *data) +{ + return (jm_osd_method_get(obj, data, &env)); +} + +static inline int +jm_osd_method_check_env(void *obj, void *data) +{ + return (jm_osd_method_check(obj, data, &env)); +} + +static struct meta env = { + .name = JAIL_META_SHARED, + .osd_slot = 0, + .methods = { + [PR_METHOD_SET] = jm_osd_method_set_env, + [PR_METHOD_GET] = jm_osd_method_get_env, + [PR_METHOD_CHECK] = jm_osd_method_check_env, + } +}; + + +/* A jail can read its "env". */ + +static int +jm_sysctl_env(SYSCTL_HANDLER_ARGS) +{ + struct prison *pr; + char empty = '\0'; + char *tmpbuf; + size_t outlen; + int error = 0; + + pr = req->td->td_ucred->cr_prison; + + mtx_lock(&pr->pr_mtx); + arg1 = osd_jail_get(pr, env.osd_slot); + if (arg1 == NULL) { + tmpbuf = ∅ + outlen = 1; + } else { + outlen = strlen(arg1) + 1; + if (req->oldptr != NULL) { + tmpbuf = malloc(outlen, M_PRISON, M_NOWAIT); + error = (tmpbuf == NULL) ? ENOMEM : 0; + if (error == 0) + memcpy(tmpbuf, arg1, outlen); + } + } + mtx_unlock(&pr->pr_mtx); + + if (error != 0) + return (error); + + if (req->oldptr == NULL) + SYSCTL_OUT(req, NULL, outlen); + else { + SYSCTL_OUT(req, tmpbuf, outlen); + if (tmpbuf != &empty) + free(tmpbuf, M_PRISON); + } + + return (error); +} +SYSCTL_PROC(_security_jail, OID_AUTO, env, + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, + 0, 0, jm_sysctl_env, "A", "Meta information provided by parent jail"); + + +/* Setup and tear down. */ + +static int +jm_sysinit(void *arg __unused) +{ + meta.osd_slot = osd_jail_register(jm_osd_destructor, meta.methods); + env.osd_slot = osd_jail_register(jm_osd_destructor, env.methods); + + return (0); +} + +static int +jm_sysuninit(void *arg __unused) +{ + osd_jail_deregister(meta.osd_slot); + osd_jail_deregister(env.osd_slot); + + return (0); +} + +SYSINIT(jailmeta, SI_SUB_DRIVERS, SI_ORDER_ANY, jm_sysinit, NULL); +SYSUNINIT(jailmeta, SI_SUB_DRIVERS, SI_ORDER_ANY, jm_sysuninit, NULL); diff --git a/sys/sys/jail.h b/sys/sys/jail.h index 72799dbf172f..90fcf8cd5a47 100644 --- a/sys/sys/jail.h +++ b/sys/sys/jail.h @@ -141,6 +141,9 @@ MALLOC_DECLARE(M_PRISON); #define DEFAULT_HOSTUUID "00000000-0000-0000-0000-000000000000" #define OSRELEASELEN 32 +#define JAIL_META_PRIVATE "meta" +#define JAIL_META_SHARED "env" + struct racct; struct prison_racct; @@ -376,6 +379,7 @@ extern struct sx allprison_lock; /* * Sysctls to describe jail parameters. */ +SYSCTL_DECL(_security_jail); SYSCTL_DECL(_security_jail_param); #define SYSCTL_JAIL_PARAM_DECL(name) \ diff --git a/tests/sys/kern/Makefile b/tests/sys/kern/Makefile index be05f5d01faa..900c9a5b3bbe 100644 --- a/tests/sys/kern/Makefile +++ b/tests/sys/kern/Makefile @@ -59,6 +59,7 @@ TEST_METADATA.sigsys+= is_exclusive="true" ATF_TESTS_SH+= coredump_phnum_test ATF_TESTS_SH+= logsigexit_test +ATF_TESTS_SH+= jailmeta ATF_TESTS_SH+= sonewconn_overflow TEST_METADATA.sonewconn_overflow+= required_programs="python" TEST_METADATA.sonewconn_overflow+= required_user="root" diff --git a/tests/sys/kern/jailmeta.sh b/tests/sys/kern/jailmeta.sh new file mode 100644 index 000000000000..9a63f958231f --- /dev/null +++ b/tests/sys/kern/jailmeta.sh @@ -0,0 +1,588 @@ +# +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2024 SkunkWerks GmbH +# +# This software was developed by Igor Ostapenko +# under sponsorship from SkunkWerks GmbH. +# + +setup() +{ + # Check if we have enough buffer space for testing + if [ $(sysctl -n security.jail.meta_maxbufsize) -lt 128 ]; then + atf_skip "sysctl security.jail.meta_maxbufsize must be 128+ for testing." + fi +} + +atf_test_case "jail_create" "cleanup" +jail_create_head() +{ + atf_set descr 'Test that metadata can be set upon jail creation with jail(8)' + atf_set require.user root + atf_set execenv jail +} +jail_create_body() +{ + setup + + atf_check -s not-exit:0 -e match:"not found" -o ignore \ + jls -jj + + atf_check -s exit:0 \ + jail -c name=j persist meta="a b c" env="C B A" + + atf_check -s exit:0 -o inline:"a b c\n" \ + jls -jj meta + atf_check -s exit:0 -o inline:"C B A\n" \ + jls -jj env +} +jail_create_cleanup() +{ + jail -r j + return 0 +} + +atf_test_case "jail_modify" "cleanup" +jail_modify_head() +{ + atf_set descr 'Test that metadata can be modified after jail creation with jail(8)' + atf_set require.user root + atf_set execenv jail +} +jail_modify_body() +{ + setup + + atf_check -s not-exit:0 -e match:"not found" -o ignore \ + jls -jj + *** 602 LINES SKIPPED *** From nobody Mon Mar 31 10:07:54 2025 X-Original-To: dev-commits-src-main@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 4ZR6JV6V4zz5rmDX; Mon, 31 Mar 2025 10:07: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZR6JV5ccPz476g; Mon, 31 Mar 2025 10:07:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743415674; 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=QC8p+gtgYiMxIw0u9emXyRUmerl7WiyNpqx0+NPxYq8=; b=hJyz/jjutF5DB8mW/QL9wR6cIq80CBbXR6UQavR/WWpcSLZk2/IWeNPbqTlGprcSRtrnMo BKGNnzHGnSk+3B15vYIe6iiQokqpeue9q82D3wRGNvY7y5/ZTYAXGDTDbZLGtHs/CQx5KT fEfHKqPpZUIIEts3VYx0h/jMl/XfA3ouquBNOFHScMlhb0YwIeSVjeNfr6UiKFDdRt+MKJ 3ErjyF1nHaKrnhghqSAIuanRrJqdSSYAErkiekp85jofceOXkZcvtYe+Wr76dPbtmQNLKn WuK879HKKTnOjzCB2KjCQfPen8JakZryBb7pfPxNCWtPwZO3kLSH8DAZUWUlWQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743415674; a=rsa-sha256; cv=none; b=GO/J2hxbph2pzObXCvcTCpsyZIIMVYnwlPCZgfakyH+2iQCMsl0Xt+W1Uj7PppdrtmWRr/ JH5eCGA1KqWiYtqfVZ6S4lnjxuWFkSoxdvdT9y2NraviaHDGV6yeMq63SmNQaESbH9ZYci VznZoJu702aV7fRviDToR9CVOksUjJFNHzqcxuPIupGOIGnfJD1Tcsg61e4cgYVe5VSC8W Fjh/R9dzOoj35wn0wKcHdL04DDsveGg/dhyEsNG+Dm/kV4nYEXwLlNrQ0b2OeYzGhjIosp vz/OgWt4M7TmVv4RGhN587qkSg8jxOZnSC/uv/FBuhxrpT5UsHTwYCh5uQspwg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743415674; 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=QC8p+gtgYiMxIw0u9emXyRUmerl7WiyNpqx0+NPxYq8=; b=jQhWwAZoFWKWek3QDE08lSrQNykPbhm01U3EMUHCqz2k5OC4QztZKJYuM3BQb6sSaoFvGz Tjpto/D9EinevevCBaxHSO69vVNxKZDZNlRZZ4zafCRIPRM8nEhSst0B7JxLOVQt1SSAEh h3E7ahqJO+uIQS2/CcXlLySOZrkW6Y5htMOgFGSVkJngUbBqWNhJVJfX1+THsAFkCIAn1T ibML0K12Uh5MFSdxcJxllm/WabaJHMyk6hDyjUbGZW1nXu1o4tJKRrxBNJeAuIZoXU8JJb s5/6zaBKWmHCHtviAbXh1xxOcvlH9tEagncH8eFdE2o0e4Jk839sbRR0Ahe9nw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZR6JV4zyYzgfW; Mon, 31 Mar 2025 10:07:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VA7ssj092200; Mon, 31 Mar 2025 10:07:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VA7sw8092197; Mon, 31 Mar 2025 10:07:54 GMT (envelope-from git) Date: Mon, 31 Mar 2025 10:07:54 GMT Message-Id: <202503311007.52VA7sw8092197@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: e8623834ca29 - main - sctp: fix double unlock in case adding a remote address fails List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e8623834ca29b562687db945bdd12a3e2fe4aeb1 Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=e8623834ca29b562687db945bdd12a3e2fe4aeb1 commit e8623834ca29b562687db945bdd12a3e2fe4aeb1 Author: Michael Tuexen AuthorDate: 2025-03-31 01:25:53 +0000 Commit: Michael Tuexen CommitDate: 2025-03-31 01:25:53 +0000 sctp: fix double unlock in case adding a remote address fails Thanks to glebius@ for pointing to the problem. Reported by: syzbot+1d5c164f1c10de84ad8a@syzkaller.appspotmail.com Fixes: 2d5c48eccd9f ("sctp: Tighten up locking around sctp_aloc_assoc()" MFC after: 3 days --- sys/netinet/sctp_pcb.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sys/netinet/sctp_pcb.c b/sys/netinet/sctp_pcb.c index 55b452743f86..1a8a514fbf5f 100644 --- a/sys/netinet/sctp_pcb.c +++ b/sys/netinet/sctp_pcb.c @@ -4232,7 +4232,6 @@ sctp_aloc_assoc_locked(struct sctp_inpcb *inp, struct sockaddr *firstaddr, LIST_REMOVE(stcb, sctp_asocs); LIST_REMOVE(stcb, sctp_tcbasocidhash); SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_asoc), stcb); - SCTP_INP_WUNLOCK(inp); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, ENOBUFS); *error = ENOBUFS; return (NULL); From nobody Mon Mar 31 10:20:13 2025 X-Original-To: dev-commits-src-main@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 4ZR6Zj68QSz5rnXG; Mon, 31 Mar 2025 10:20:13 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZR6Zj4Jl9z4DTm; Mon, 31 Mar 2025 10:20:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743416413; 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=3EKP3sIV78DRvgPCS7xlvwyYeqJz80RHx/PbonSeNUE=; b=hJO/vUfqFcGRCRySo0eSLa+YecYafUDGmE+4/3lshaYpB7pcLlFBbyD8wO5fpjQokz3aOq NxXIwaGoBHujp5MB904JRXcQIS759/UWGrvi0o68QPbtUg7/l5vvRlTScbUTInC4GgD915 CNGn0fJBGsFJKSKdPK3L0Z3/JJpV0a2RKwO9oQMOOVomeDUUcuOli2WM7nwJ9mZNewlx4/ Exf8MSOgLrmbXPMXg2MVbyPd8C4GHX9H2jv1E37EijSiu0pZsNiNAHdvQDGu67esWkqHZf eMC5+TITC6tWo47qeRyEhU3VS3xvKBBHPMuIqspkyUaOs3oU8TAfRfmdN0T+rg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743416413; a=rsa-sha256; cv=none; b=fHA2/6R7UsNuVG3uSJ9YkGOm7gFJ5aqAVSy0Jn1TEFUS/hrvLC8hQ4Oegc/MYfBHjCzo92 zcgem386UiX2fMLTrPiXbJ8ObPBiYmYkZY0lg108nV7IVqfO4Kyum38KHM6e10iSsYvwPI +7h7hkM4HmFEoDldxraPL0z0wc+Po8mxVKIvv6S3TNPYLUub5+kaeYi4376reuE71Bz5H4 Gac7qYxYXag8zuCk5VDgN4+OCptBqN4q/9L0b+jOavHuYNmhmuSq7NTcgbdNw1ITaA7K/g qVEgqo8Ceb0vcmLpLDrIqIZ3pbHItdPF6oJmCHZ1di1V+8TBMxw9vgKBVq36/g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743416413; 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=3EKP3sIV78DRvgPCS7xlvwyYeqJz80RHx/PbonSeNUE=; b=ejf6zpUc0YYbsUwlHnvSrpGytpAE+DKFfiAlXyqocjXvEqn0T+pA8vj03q/n0pBK5gjpCi XzSLZt93MRnwV4BXRjJlgFVO2J650bA4NE8XK5sbRM29Bkn0XPIVsIFbcBYANwpN+FnjI0 WoPDQUHkfSaKzWbuntmJI7EKVRfp0WBslx18AMtsbfLaztDLIX1yTxhQT8WkEQ1cD4PYRl bWgzsujjo62pPoH9JRBwNLX8AOy0qnDb/O4nqiz1/7nFP/TkdXYFwLojvGdjMfYICrg7mA CL9fYpeYSIWie1pR5EhWelPKsaDUXlX/BYxC5WlKjd7mTwAeQLQVAYClNfDclQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZR6Zj29m0zhHx; Mon, 31 Mar 2025 10:20:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VAKDtO017659; Mon, 31 Mar 2025 10:20:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VAKDH7017643; Mon, 31 Mar 2025 10:20:13 GMT (envelope-from git) Date: Mon, 31 Mar 2025 10:20:13 GMT Message-Id: <202503311020.52VAKDH7017643@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: f6deb9ea0a0e - main - tcp rack: cleanup storing values for beta and beta_ecn List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f6deb9ea0a0ee760e5ff9ad5c15d0bd7a1714355 Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=f6deb9ea0a0ee760e5ff9ad5c15d0bd7a1714355 commit f6deb9ea0a0ee760e5ff9ad5c15d0bd7a1714355 Author: Michael Tuexen AuthorDate: 2025-03-31 01:40:17 +0000 Commit: Michael Tuexen CommitDate: 2025-03-31 01:40:17 +0000 tcp rack: cleanup storing values for beta and beta_ecn beta and beta_ecn were stored using a variable of type struct newreno in struct rack_control. Later, struct newreno was extended and now contains several more fields. This results in a memory inefficiency and also in copying around uninitialized memory. This patch fixes this by storing beta and beta_ecn individually in struct rack_control. Please note that the newreno_flags field was only stored and never used. Therefore, this is not stored anymore in struct rack_control. No functional change intended. CID: 1523796 Reviewed by: rrs MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D49578 --- sys/netinet/tcp_stacks/rack.c | 45 +++++++++++++++++---------------------- sys/netinet/tcp_stacks/tcp_rack.h | 7 +++--- 2 files changed, 24 insertions(+), 28 deletions(-) diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index 5a9171abeaf5..f5bc435890e7 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -618,8 +618,9 @@ rack_swap_beta_values(struct tcp_rack *rack, uint8_t flex8) { struct sockopt sopt; struct cc_newreno_opts opt; - struct newreno old; struct tcpcb *tp; + uint32_t old_beta; + uint32_t old_beta_ecn; int error, failed = 0; tp = rack->rc_tp; @@ -639,7 +640,6 @@ rack_swap_beta_values(struct tcp_rack *rack, uint8_t flex8) failed = 2; goto out; } - old.newreno_flags = CC_NEWRENO_BETA_ECN_ENABLED; /* Get the current values out */ sopt.sopt_valsize = sizeof(struct cc_newreno_opts); sopt.sopt_dir = SOPT_GET; @@ -649,33 +649,34 @@ rack_swap_beta_values(struct tcp_rack *rack, uint8_t flex8) failed = 3; goto out; } - old.beta = opt.val; + old_beta = opt.val; opt.name = CC_NEWRENO_BETA_ECN; error = CC_ALGO(tp)->ctl_output(&tp->t_ccv, &sopt, &opt); if (error) { failed = 4; goto out; } - old.beta_ecn = opt.val; + old_beta_ecn = opt.val; /* Now lets set in the values we have stored */ sopt.sopt_dir = SOPT_SET; opt.name = CC_NEWRENO_BETA; - opt.val = rack->r_ctl.rc_saved_beta.beta; + opt.val = rack->r_ctl.rc_saved_beta; error = CC_ALGO(tp)->ctl_output(&tp->t_ccv, &sopt, &opt); if (error) { failed = 5; goto out; } opt.name = CC_NEWRENO_BETA_ECN; - opt.val = rack->r_ctl.rc_saved_beta.beta_ecn; + opt.val = rack->r_ctl.rc_saved_beta_ecn; error = CC_ALGO(tp)->ctl_output(&tp->t_ccv, &sopt, &opt); if (error) { failed = 6; goto out; } /* Save off the values for restoral */ - memcpy(&rack->r_ctl.rc_saved_beta, &old, sizeof(struct newreno)); + rack->r_ctl.rc_saved_beta = old_beta; + rack->r_ctl.rc_saved_beta_ecn = old_beta_ecn; out: if (rack_verbose_logging && tcp_bblogging_on(rack->rc_tp)) { union tcp_log_stackspecific log; @@ -688,8 +689,8 @@ out: log.u_bbr.flex1 = ptr->beta; log.u_bbr.flex2 = ptr->beta_ecn; log.u_bbr.flex3 = ptr->newreno_flags; - log.u_bbr.flex4 = rack->r_ctl.rc_saved_beta.beta; - log.u_bbr.flex5 = rack->r_ctl.rc_saved_beta.beta_ecn; + log.u_bbr.flex4 = rack->r_ctl.rc_saved_beta; + log.u_bbr.flex5 = rack->r_ctl.rc_saved_beta_ecn; log.u_bbr.flex6 = failed; log.u_bbr.flex7 = rack->gp_ready; log.u_bbr.flex7 <<= 1; @@ -14608,7 +14609,6 @@ rack_init(struct tcpcb *tp, void **ptr) rack->r_ctl.rc_split_limit = V_tcp_map_split_limit; /* We want abe like behavior as well */ - rack->r_ctl.rc_saved_beta.newreno_flags |= CC_NEWRENO_BETA_ECN_ENABLED; rack->r_ctl.rc_reorder_fade = rack_reorder_fade; rack->rc_allow_data_af_clo = rack_ignore_data_after_close; rack->r_ctl.rc_tlp_threshold = rack_tlp_thresh; @@ -14648,13 +14648,13 @@ rack_init(struct tcpcb *tp, void **ptr) rack->r_ctl.max_reduction = rack_max_reduce; rack->rc_force_max_seg = 0; TAILQ_INIT(&rack->r_ctl.opt_list); - rack->r_ctl.rc_saved_beta.beta = V_newreno_beta_ecn; - rack->r_ctl.rc_saved_beta.beta_ecn = V_newreno_beta_ecn; + rack->r_ctl.rc_saved_beta = V_newreno_beta_ecn; + rack->r_ctl.rc_saved_beta_ecn = V_newreno_beta_ecn; if (rack_hibeta_setting) { rack->rack_hibeta = 1; if ((rack_hibeta_setting >= 50) && (rack_hibeta_setting <= 100)) { - rack->r_ctl.rc_saved_beta.beta = rack_hibeta_setting; + rack->r_ctl.rc_saved_beta = rack_hibeta_setting; rack->r_ctl.saved_hibeta = rack_hibeta_setting; } } else { @@ -22964,7 +22964,7 @@ rack_process_option(struct tcpcb *tp, struct tcp_rack *rack, int sopt_name, rack->r_ctl.saved_hibeta = optval; if (rack->rc_pacing_cc_set) rack_undo_cc_pacing(rack); - rack->r_ctl.rc_saved_beta.beta = optval; + rack->r_ctl.rc_saved_beta = optval; } if (rack->rc_pacing_cc_set == 0) rack_set_cc_pacing(rack); @@ -23015,8 +23015,7 @@ rack_process_option(struct tcpcb *tp, struct tcp_rack *rack, int sopt_name, * Not pacing yet so set it into our local * rack pcb storage. */ - rack->r_ctl.rc_saved_beta.beta_ecn = optval; - rack->r_ctl.rc_saved_beta.newreno_flags = CC_NEWRENO_BETA_ECN_ENABLED; + rack->r_ctl.rc_saved_beta_ecn = optval; } break; case TCP_DEFER_OPTIONS: @@ -23742,7 +23741,7 @@ rack_inherit(struct tcpcb *tp, struct inpcb *parent) if (src->rack_hibeta != dest->rack_hibeta) { cnt++; if (src->rack_hibeta) { - dest->r_ctl.rc_saved_beta.beta = src->r_ctl.rc_saved_beta.beta; + dest->r_ctl.rc_saved_beta = src->r_ctl.rc_saved_beta; dest->rack_hibeta = 1; } else { dest->rack_hibeta = 0; @@ -23754,12 +23753,8 @@ rack_inherit(struct tcpcb *tp, struct inpcb *parent) cnt++; } /* TCP_RACK_PACING_BETA_ECN */ - if (dest->r_ctl.rc_saved_beta.beta_ecn != src->r_ctl.rc_saved_beta.beta_ecn) { - dest->r_ctl.rc_saved_beta.beta_ecn = src->r_ctl.rc_saved_beta.beta_ecn; - cnt++; - } - if (dest->r_ctl.rc_saved_beta.newreno_flags != src->r_ctl.rc_saved_beta.newreno_flags) { - dest->r_ctl.rc_saved_beta.newreno_flags = src->r_ctl.rc_saved_beta.newreno_flags; + if (dest->r_ctl.rc_saved_beta_ecn != src->r_ctl.rc_saved_beta_ecn) { + dest->r_ctl.rc_saved_beta_ecn = src->r_ctl.rc_saved_beta_ecn; cnt++; } /* We do not do TCP_DEFER_OPTIONS */ @@ -24437,7 +24432,7 @@ rack_get_sockopt(struct tcpcb *tp, struct sockopt *sopt) if (strcmp(tp->t_cc->name, CCALGONAME_NEWRENO) != 0) error = EINVAL; else if (rack->rc_pacing_cc_set == 0) - optval = rack->r_ctl.rc_saved_beta.beta; + optval = rack->r_ctl.rc_saved_beta; else { /* * Reach out into the CC data and report back what @@ -24461,7 +24456,7 @@ rack_get_sockopt(struct tcpcb *tp, struct sockopt *sopt) if (strcmp(tp->t_cc->name, CCALGONAME_NEWRENO) != 0) error = EINVAL; else if (rack->rc_pacing_cc_set == 0) - optval = rack->r_ctl.rc_saved_beta.beta_ecn; + optval = rack->r_ctl.rc_saved_beta_ecn; else { /* * Reach out into the CC data and report back what diff --git a/sys/netinet/tcp_stacks/tcp_rack.h b/sys/netinet/tcp_stacks/tcp_rack.h index a6cb0a81bb81..4374594a1d82 100644 --- a/sys/netinet/tcp_stacks/tcp_rack.h +++ b/sys/netinet/tcp_stacks/tcp_rack.h @@ -542,9 +542,10 @@ struct rack_control { uint32_t last_rcv_tstmp_for_rtt; uint32_t last_time_of_arm_rcv; uint32_t rto_ssthresh; - struct newreno rc_saved_beta; /* - * For newreno cc: - * rc_saved_cc are the values we have had + uint32_t rc_saved_beta; + uint32_t rc_saved_beta_ecn; /* + * For newreno cc: rc_saved_beta and + * rc_saved_beta_ecn are the values we have had * set by the user, if pacing is not happening * (i.e. its early and we have not turned on yet * or it was turned off). The minute pacing From nobody Mon Mar 31 11:16:14 2025 X-Original-To: dev-commits-src-main@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 4ZR7qM0xSbz5rsR9; Mon, 31 Mar 2025 11:16: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZR7qL6Fscz3S37; Mon, 31 Mar 2025 11:16:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743419774; 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=gg/u1//4UwmDNeUtKJlKlrfMcQ8FzK/4kw1tGwVEyV4=; b=EQP5m5c5T9/06fJs4rapOm/joGSIVavvnvi1z9cqT3mNtzg/J+WxtjUb9cXzBKSSZeC8/f +PCGju/wXpTjWe2zh8s1unDtgB6/ezjx7efI07C3ZtUTiu5Sgh3vZJNw1X3nJrmyCuECWf sQHLrkcpEzE0NvoOXYr+VW8WeDOEJxhsyrqCnymGR4pdRfwukidd8rSdvZfoxeEYAb7L7R SJi0o1fIGEf5OUETMs5j7FZis8EpcJLETTkDQ5VLt4AIPyJnOkQOq55QQSXRpQmBYOVuuw IuGDBzVSeXECx3I3REugq23hEyUBkZ/Jcue3FNR3iD81kexF/4kGQLPIQU3/EA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743419774; a=rsa-sha256; cv=none; b=qv5XUTlmxBnhX9CHE6w3B0YZVkWRufnraINQtXAa0vr1NqQxNOBlnKoPkCP99WrFs425nL fcd9LgiEQz29hK1PLte16kn5XEvorF6r2AyvkpOH+BT3FS6AokEyKr27qudsKfbDbip9iz nZXsFHQhwmgrVtPCMHWZOklJNGBmIONCx6EdM8fFkjRoPeopBW0k0ERcRBXtIdjY5jpBKU Bw63WFVX4ykD4bLsKtt/yg1ytgpN5enyJLzD5uPVJXJ1x3YX8AeNytG8lXLdaa8LVowsXg l1S+Es5vm06TIe2YCF+3b7X+g82q7cE9ZDOFaSJnqOpBXlyJ1QyBeiqEZu2Gqw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743419774; 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=gg/u1//4UwmDNeUtKJlKlrfMcQ8FzK/4kw1tGwVEyV4=; b=vFdBvIEZozoyb6eBST8ubzQLMUrBNcH7/MFw6vi/OHsahGjraybEtno2edUa9Vp0F9MHm7 lhzto/iAubumpR6AjkE5A+n8B9HUWsg49MXx6kdBwlWW258B5ruDfmUyHgsfQmdb+ExqbO XgsjHtth7c9gM1QjBIOdacU4hVsvT10M/Zeo1HaomIybjrYHnqZCiIEhpsaEEAOlB5NZ6f 48Y2G9h0zFoGMCdW+wsrVcp6hGdIc5nV5Ebgddam80X7mrAS95WaI8PPnomuKSrhzsalfK HsxBNtxYxI9gYIcs+3QG054fOrEfhano8YTTihQJmQ1x+lKq2u5zlyvWhwrcwQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZR7qL5ZHzzk9d; Mon, 31 Mar 2025 11:16:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VBGEhf023047; Mon, 31 Mar 2025 11:16:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VBGEfT023044; Mon, 31 Mar 2025 11:16:14 GMT (envelope-from git) Date: Mon, 31 Mar 2025 11:16:14 GMT Message-Id: <202503311116.52VBGEfT023044@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: a319ba694538 - main - hyperv/storvsc: Fix busdma constraints List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: a319ba694538a38429115aaaf1d4b3946ea3a8b5 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=a319ba694538a38429115aaaf1d4b3946ea3a8b5 commit a319ba694538a38429115aaaf1d4b3946ea3a8b5 Author: Mark Johnston AuthorDate: 2025-03-31 10:45:14 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 11:14:42 +0000 hyperv/storvsc: Fix busdma constraints - The BUS_DMA_KEEP_PG_OFFSET flag is needed, since storvsc_xferbuf_prepare() assumes that only the first segment may have a non-zero offset, and that all following segments are page-sized and -aligned. - storvsc_xferbuf_prepare() handles 64-bit bus addresses, so avoid unneeded bouncing on i386. PR: 285681 Reported by: dim Tested by: dim, whu MFC after: 2 weeks --- sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c b/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c index eeec169baac5..cc3e7262e8d7 100644 --- a/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c +++ b/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c @@ -954,13 +954,18 @@ storvsc_init_requests(device_t dev) bus_get_dma_tag(dev), /* parent */ 1, /* alignment */ PAGE_SIZE, /* boundary */ +#if defined(__i386__) && defined(PAE) + BUS_SPACE_MAXADDR_48BIT, /* lowaddr */ + BUS_SPACE_MAXADDR_48BIT, /* highaddr */ +#else BUS_SPACE_MAXADDR, /* lowaddr */ BUS_SPACE_MAXADDR, /* highaddr */ +#endif NULL, NULL, /* filter, filterarg */ STORVSC_DATA_SIZE_MAX, /* maxsize */ STORVSC_DATA_SEGCNT_MAX, /* nsegments */ STORVSC_DATA_SEGSZ_MAX, /* maxsegsize */ - 0, /* flags */ + BUS_DMA_KEEP_PG_OFFSET, /* flags */ NULL, /* lockfunc */ NULL, /* lockfuncarg */ &sc->storvsc_req_dtag); From nobody Mon Mar 31 11:16:15 2025 X-Original-To: dev-commits-src-main@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 4ZR7qN3ySxz5rsNl; Mon, 31 Mar 2025 11:16: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZR7qM6JD4z3SST; Mon, 31 Mar 2025 11:16:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743419775; 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=spnyCiPvkAH1Om8lr/6lENMMXAA5EySyYqJ11e+m7eE=; b=IUxbBIAUUFcZChoHeVvXPft2bCBiBep9/dEASqJ82Q9wxn77N7fp+6JFOV627vRMVB0EL7 m8ugmLK/9pA1YDJYUX5XOKVMuTdpO5eKOJxKfm6ntWnV4/biMfQHzaPKsiRRPJZYEywS1a AmcKsDxxRaq30lDuz0KJNbdAeExhX1X0d7s5FNCNVaamsXDZtq8W3gBoOVVWxfqmQVZFcf 0GCxMBDVaWdPl+HBRV3c41ypW7gcOdS9UlCIPH4ALJwF+khT7BTa1RULKyMRKcZ5vI1eWN NgZMk4POZYiipIpcOznrTvtVzfbkdrIln8QMEflo/3QXjiKCqc6UJyB9Axujfw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743419775; a=rsa-sha256; cv=none; b=Ac1+mUeEPUbLgw7/kxfAsIqm1mV3b/f/ZXjubxWPQjBaFxJNYOQ+glA0F8Z6nQo6Ag1n/h tDZSbNylihPR2rVYdZSINf/k/E5IGpsA0zzHhNam+lMPoKLxW8/uc3L81x/BffuiplHuBN skj+EbzQCg3HPUmNNC885fu3b5A6gh7yy5Yf7tKakuLiCFiN+aDp9SC4spcZrS2ncsKSVA mJOqgaiXD2EwyeibMnPpY1PlnB+JfuUARXXMRs1K+6VZ9LFU6798Kp46wiJ1dphflIohll CrllFFXQzq2hmwv6RXcCbbWOSjy7wD+kReZLG370vJWVmI5Mm014IVJlzjAz1Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743419775; 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=spnyCiPvkAH1Om8lr/6lENMMXAA5EySyYqJ11e+m7eE=; b=fZXVwL6Q1Tzpfr+GeXf8+HAGWv2/2+1x0CGH/+sYv4aRAhmojwT3siLfPQY03sEqEnbQDB YQVVJsGxEdGkb2UDcUrK7Ho1cv8j8MQk33X32i5gmSBxKqLqFEFIQSKmbf9tFjs0lLumAM 4nxosby/DOlTh2bbAWnx8C405lySjvSrHD6VgJ6mOGWreZ1Yhj4d7yqNz83M0aYJLRydCy U5PdCm+Z6btO5WWAjnfmvXa4Q9EYbYjqxLlRY8CZnsBrb3rUZczxjJ00HR6lXk8bxlmF/n IVrIBobmONUomfnrRixo1kRMJdM2c5L0l5bdY7ST/59vGMTsHQ9Hq7mE5dn1Xg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZR7qM5vnhzk6m; Mon, 31 Mar 2025 11:16:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VBGFw4023079; Mon, 31 Mar 2025 11:16:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VBGFao023076; Mon, 31 Mar 2025 11:16:15 GMT (envelope-from git) Date: Mon, 31 Mar 2025 11:16:15 GMT Message-Id: <202503311116.52VBGFao023076@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 54a3920dc9b3 - main - hyperv/storvsc: Avoid conditional asserts in storvsc_xferbuf_prepare() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 54a3920dc9b3b5a47cdaaa3132b4fcf1c448a737 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=54a3920dc9b3b5a47cdaaa3132b4fcf1c448a737 commit 54a3920dc9b3b5a47cdaaa3132b4fcf1c448a737 Author: Mark Johnston AuthorDate: 2025-03-31 10:45:55 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 11:15:45 +0000 hyperv/storvsc: Avoid conditional asserts in storvsc_xferbuf_prepare() whu@ cannot reproduce the assertion failure which led to these ifdefs being added in the first place, and since they appear wrong, i.e., the assertions ought to apply to all platforms, let's remove them. This reverts commits 0af5a0cd2788efce9f444f4f781357d317bb0bb1 and 6f7b1310b6fe36f9bb653d3e97bc257adced3a2b. PR: 285681 Tested by: whu MFC after: 2 weeks --- sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c b/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c index cc3e7262e8d7..29a88e76a579 100644 --- a/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c +++ b/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c @@ -1833,7 +1833,6 @@ storvsc_xferbuf_prepare(void *arg, bus_dma_segment_t *segs, int nsegs, int error for (i = 0; i < nsegs; i++) { #ifdef INVARIANTS -#if !defined(__aarch64__) if (nsegs > 1) { if (i == 0) { KASSERT((segs[i].ds_addr & PAGE_MASK) + @@ -1853,7 +1852,6 @@ storvsc_xferbuf_prepare(void *arg, bus_dma_segment_t *segs, int nsegs, int error segs[i].ds_len)); } } -#endif #endif prplist->gpa_page[i] = atop(segs[i].ds_addr); } From nobody Mon Mar 31 12:43:09 2025 X-Original-To: dev-commits-src-main@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 4ZR9ld2WNXz5s05k; Mon, 31 Mar 2025 12:43: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZR9ld2C8lz3FrJ; Mon, 31 Mar 2025 12:43:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743424989; 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=ybQY0LdhLmeCzBtAGr7owkQwUQJOqgbwPrMhY1iQ9SE=; b=fhvmxdDiQ0ZsFvksFxEWwzmSAcQTuqrbWzGjeGlFM6vRAoVwytTAK10UPNKtyD2431VZY1 6lXUoQ2RC9QO8SqWZiL30aqSDbnWdC9gwUu+AVIrvdSdq70m/X4Rs0oXeyimoZMJQoJU5Y YqJ/G9rlRwXCuJYWLRzLTFxWEdRgC2lIQGReG9Y9vvBpydbiGsMMg6GfmfEu5M7pfiJmJw stFjP6bDIFnJRG/WI69w92JEIJ7vgS+Cu8UHPnkcYWqZ+CcybLKZmDxlSxvBWsiyM3tL29 /OeaEpcjkeMFnWY1t7/dv5VG7llT0hzPsMAefDVyDa8xT7eKGmJvZ+Xzq8kcZg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743424989; a=rsa-sha256; cv=none; b=s3Zl7WVOZcFs6qkFUqvRPeYuQa1pxI0xrrh0Aj8fDf16keBa3avh7PbWcVMrlgvIo3N/jk 3z6UOOg+SqdujRexVuOmDVl0A7RQwTPm3o31OPpWVUU4guSDj5cwBsgsVw1gP1OIAVvESp ykN3eR0O21ZYLi38q39CKD26aMcFFI56drLAdEaVHaJdRBs+mC3mlN6BCyarPT4oIuxPHk xbGvA2kfigNPyMvs4PKzxaMLb0bBt1jH7Pam/FeTib26OQfzFPfhsQRvPwSfWBqKeOCziq mvFPY50mWRCRsRzcwDFj/dM6XA79zG4wTl9gafscxFSiI/sK5BUHi/vo1ZXKtA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743424989; 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=ybQY0LdhLmeCzBtAGr7owkQwUQJOqgbwPrMhY1iQ9SE=; b=Q8O3HmMsjDw0Tq8ZXttebT40lymj+yfvAZQ6JLo0k5fuKsm/HzDBmAtxPLhprM8y5YK/Jl Zp/ZrBeZSzHANye8gif6nNu7uAz5SBtGQhlZB/9bkqtktt+hxv67px72vlZM5BiyFbZgWo hJQjR7Lpou3XM49XOrYdm7p5zPXuKJHdmRIbzCXXzsJjJy2RXyMioWH8z2ms/UDQ1V/Oju 3WKvmKVig4ZDDo2BY4ho4bFORIQMzf/Bnx73BX0ovUyh3JpqrFmYE9/CY12k8x2IDObhqm 49I4+CU5FZqOgyH+JQdpU6WEQ+7Rh/jl01b7tnUWQuBiLAaHZ0/R+MKl1rl7Rg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZR9ld1mTrzm71; Mon, 31 Mar 2025 12:43:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VCh9br088859; Mon, 31 Mar 2025 12:43:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VCh9PU088854; Mon, 31 Mar 2025 12:43:09 GMT (envelope-from git) Date: Mon, 31 Mar 2025 12:43:09 GMT Message-Id: <202503311243.52VCh9PU088854@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Tom Jones Subject: git: 2ad0f7e91582 - main - Import iwx as ported from OpenBSD by Future Crew. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: thj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2ad0f7e91582dde5475ceb1a1942930549e5c628 Auto-Submitted: auto-generated The branch main has been updated by thj: URL: https://cgit.FreeBSD.org/src/commit/?id=2ad0f7e91582dde5475ceb1a1942930549e5c628 commit 2ad0f7e91582dde5475ceb1a1942930549e5c628 Author: Tom Jones AuthorDate: 2025-03-31 12:24:15 +0000 Commit: Tom Jones CommitDate: 2025-03-31 12:42:31 +0000 Import iwx as ported from OpenBSD by Future Crew. This driver originates from OpenBSD and was ported to FreeBSD by Future Crew LLC who kindly provided a source release. iwx supports many recent Intel WiFi card and this driver should support running these cards with legacy, HT and VHT rates. There are some issues remaining in the port, but at this point wider testing is sought. To avoid breaking deployed WiFi configurations iwx probes with a lower priority than iwlwifi. This can be changed by blocking iwlwifi with devmatch. Reviewed by: adrian Obtained from: Future Crew LLC Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D49259 --- sys/dev/iwx/if_iwx.c | 11016 +++++++++++++++++++++++++++++++++++++++++++ sys/dev/iwx/if_iwx_debug.c | 321 ++ sys/dev/iwx/if_iwx_debug.h | 265 ++ sys/dev/iwx/if_iwxreg.h | 7922 +++++++++++++++++++++++++++++++ sys/dev/iwx/if_iwxvar.h | 924 ++++ sys/modules/Makefile | 2 + sys/modules/iwx/Makefile | 10 + 7 files changed, 20460 insertions(+) diff --git a/sys/dev/iwx/if_iwx.c b/sys/dev/iwx/if_iwx.c new file mode 100644 index 000000000000..9e5d5a9569d5 --- /dev/null +++ b/sys/dev/iwx/if_iwx.c @@ -0,0 +1,11016 @@ +/*- + * SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) AND ISC + */ + +/* $OpenBSD: if_iwx.c,v 1.175 2023/07/05 15:07:28 stsp Exp $ */ + +/* + * + * Copyright (c) 2025 The FreeBSD Foundation + * + * Portions of this software were developed by Tom Jones + * under sponsorship from the FreeBSD Foundation. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +/*- + * Copyright (c) 2024 Future Crew, LLC + * Author: Mikhail Pchelin + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * Copyright (c) 2014, 2016 genua gmbh + * Author: Stefan Sperling + * Copyright (c) 2014 Fixup Software Ltd. + * Copyright (c) 2017, 2019, 2020 Stefan Sperling + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*- + * Based on BSD-licensed source modules in the Linux iwlwifi driver, + * which were used as the reference documentation for this implementation. + * + ****************************************************************************** + * + * This file is provided under a dual BSD/GPLv2 license. When using or + * redistributing this file, you may do so under either license. + * + * GPL LICENSE SUMMARY + * + * Copyright(c) 2017 Intel Deutschland GmbH + * Copyright(c) 2018 - 2019 Intel Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * BSD LICENSE + * + * Copyright(c) 2017 Intel Deutschland GmbH + * Copyright(c) 2018 - 2019 Intel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ***************************************************************************** + */ + +/*- + * Copyright (c) 2007-2010 Damien Bergamini + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +int iwx_himark = 224; +int iwx_lomark = 192; + +#define IWX_FBSD_RSP_V3 3 +#define IWX_FBSD_RSP_V4 4 + +#define DEVNAME(_sc) (device_get_nameunit((_sc)->sc_dev)) +#define IC2IFP(ic) (((struct ieee80211vap *)TAILQ_FIRST(&(ic)->ic_vaps))->iv_ifp) + +#define le16_to_cpup(_a_) (le16toh(*(const uint16_t *)(_a_))) +#define le32_to_cpup(_a_) (le32toh(*(const uint32_t *)(_a_))) + +#include +#include + +#include + +#define PCI_VENDOR_INTEL 0x8086 +#define PCI_PRODUCT_INTEL_WL_22500_1 0x2723 /* Wi-Fi 6 AX200 */ +#define PCI_PRODUCT_INTEL_WL_22500_2 0x02f0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_3 0xa0f0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_4 0x34f0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_5 0x06f0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_6 0x43f0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_7 0x3df0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_8 0x4df0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_9 0x2725 /* Wi-Fi 6 AX210 */ +#define PCI_PRODUCT_INTEL_WL_22500_10 0x2726 /* Wi-Fi 6 AX211 */ +#define PCI_PRODUCT_INTEL_WL_22500_11 0x51f0 /* Wi-Fi 6 AX211 */ +#define PCI_PRODUCT_INTEL_WL_22500_12 0x7a70 /* Wi-Fi 6 AX211 */ +#define PCI_PRODUCT_INTEL_WL_22500_13 0x7af0 /* Wi-Fi 6 AX211 */ +#define PCI_PRODUCT_INTEL_WL_22500_14 0x7e40 /* Wi-Fi 6 AX210 */ +#define PCI_PRODUCT_INTEL_WL_22500_15 0x7f70 /* Wi-Fi 6 AX211 */ +#define PCI_PRODUCT_INTEL_WL_22500_16 0x54f0 /* Wi-Fi 6 AX211 */ +#define PCI_PRODUCT_INTEL_WL_22500_17 0x51f1 /* Wi-Fi 6 AX211 */ + +static const struct iwx_devices { + uint16_t device; + char *name; +} iwx_devices[] = { + { PCI_PRODUCT_INTEL_WL_22500_1, "Wi-Fi 6 AX200" }, + { PCI_PRODUCT_INTEL_WL_22500_2, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_3, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_4, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_5, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_6, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_7, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_8, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_9, "Wi-Fi 6 AX210" }, + { PCI_PRODUCT_INTEL_WL_22500_10, "Wi-Fi 6 AX211" }, + { PCI_PRODUCT_INTEL_WL_22500_11, "Wi-Fi 6 AX211" }, + { PCI_PRODUCT_INTEL_WL_22500_12, "Wi-Fi 6 AX211" }, + { PCI_PRODUCT_INTEL_WL_22500_13, "Wi-Fi 6 AX211" }, + { PCI_PRODUCT_INTEL_WL_22500_14, "Wi-Fi 6 AX210" }, + { PCI_PRODUCT_INTEL_WL_22500_15, "Wi-Fi 6 AX211" }, + { PCI_PRODUCT_INTEL_WL_22500_16, "Wi-Fi 6 AX211" }, + { PCI_PRODUCT_INTEL_WL_22500_17, "Wi-Fi 6 AX211" }, +}; + +static const uint8_t iwx_nvm_channels_8000[] = { + /* 2.4 GHz */ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 5 GHz */ + 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, + 149, 153, 157, 161, 165, 169, 173, 177, 181 +}; + +static const uint8_t iwx_nvm_channels_uhb[] = { + /* 2.4 GHz */ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 5 GHz */ + 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, + 149, 153, 157, 161, 165, 169, 173, 177, 181, + /* 6-7 GHz */ + 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, + 73, 77, 81, 85, 89, 93, 97, 101, 105, 109, 113, 117, 121, 125, 129, + 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, + 189, 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 233 +}; + +#define IWX_NUM_2GHZ_CHANNELS 14 +#define IWX_NUM_5GHZ_CHANNELS 37 + +const struct iwx_rate { + uint16_t rate; + uint8_t plcp; + uint8_t ht_plcp; +} iwx_rates[] = { + /* Legacy */ /* HT */ + { 2, IWX_RATE_1M_PLCP, IWX_RATE_HT_SISO_MCS_INV_PLCP }, + { 4, IWX_RATE_2M_PLCP, IWX_RATE_HT_SISO_MCS_INV_PLCP }, + { 11, IWX_RATE_5M_PLCP, IWX_RATE_HT_SISO_MCS_INV_PLCP }, + { 22, IWX_RATE_11M_PLCP, IWX_RATE_HT_SISO_MCS_INV_PLCP }, + { 12, IWX_RATE_6M_PLCP, IWX_RATE_HT_SISO_MCS_0_PLCP }, + { 18, IWX_RATE_9M_PLCP, IWX_RATE_HT_SISO_MCS_INV_PLCP }, + { 24, IWX_RATE_12M_PLCP, IWX_RATE_HT_SISO_MCS_1_PLCP }, + { 26, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_8_PLCP }, + { 36, IWX_RATE_18M_PLCP, IWX_RATE_HT_SISO_MCS_2_PLCP }, + { 48, IWX_RATE_24M_PLCP, IWX_RATE_HT_SISO_MCS_3_PLCP }, + { 52, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_9_PLCP }, + { 72, IWX_RATE_36M_PLCP, IWX_RATE_HT_SISO_MCS_4_PLCP }, + { 78, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_10_PLCP }, + { 96, IWX_RATE_48M_PLCP, IWX_RATE_HT_SISO_MCS_5_PLCP }, + { 104, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_11_PLCP }, + { 108, IWX_RATE_54M_PLCP, IWX_RATE_HT_SISO_MCS_6_PLCP }, + { 128, IWX_RATE_INVM_PLCP, IWX_RATE_HT_SISO_MCS_7_PLCP }, + { 156, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_12_PLCP }, + { 208, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_13_PLCP }, + { 234, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_14_PLCP }, + { 260, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_15_PLCP }, +}; +#define IWX_RIDX_CCK 0 +#define IWX_RIDX_OFDM 4 +#define IWX_RIDX_MAX (nitems(iwx_rates)-1) +#define IWX_RIDX_IS_CCK(_i_) ((_i_) < IWX_RIDX_OFDM) +#define IWX_RIDX_IS_OFDM(_i_) ((_i_) >= IWX_RIDX_OFDM) +#define IWX_RVAL_IS_OFDM(_i_) ((_i_) >= 12 && (_i_) != 22) + +/* Convert an MCS index into an iwx_rates[] index. */ +const int iwx_mcs2ridx[] = { + IWX_RATE_MCS_0_INDEX, + IWX_RATE_MCS_1_INDEX, + IWX_RATE_MCS_2_INDEX, + IWX_RATE_MCS_3_INDEX, + IWX_RATE_MCS_4_INDEX, + IWX_RATE_MCS_5_INDEX, + IWX_RATE_MCS_6_INDEX, + IWX_RATE_MCS_7_INDEX, + IWX_RATE_MCS_8_INDEX, + IWX_RATE_MCS_9_INDEX, + IWX_RATE_MCS_10_INDEX, + IWX_RATE_MCS_11_INDEX, + IWX_RATE_MCS_12_INDEX, + IWX_RATE_MCS_13_INDEX, + IWX_RATE_MCS_14_INDEX, + IWX_RATE_MCS_15_INDEX, +}; + +static uint8_t iwx_lookup_cmd_ver(struct iwx_softc *, uint8_t, uint8_t); +static uint8_t iwx_lookup_notif_ver(struct iwx_softc *, uint8_t, uint8_t); +static int iwx_store_cscheme(struct iwx_softc *, const uint8_t *, size_t); +#if 0 +static int iwx_alloc_fw_monitor_block(struct iwx_softc *, uint8_t, uint8_t); +static int iwx_alloc_fw_monitor(struct iwx_softc *, uint8_t); +#endif +static int iwx_apply_debug_destination(struct iwx_softc *); +static void iwx_set_ltr(struct iwx_softc *); +static int iwx_ctxt_info_init(struct iwx_softc *, const struct iwx_fw_sects *); +static int iwx_ctxt_info_gen3_init(struct iwx_softc *, + const struct iwx_fw_sects *); +static void iwx_ctxt_info_free_fw_img(struct iwx_softc *); +static void iwx_ctxt_info_free_paging(struct iwx_softc *); +static int iwx_init_fw_sec(struct iwx_softc *, const struct iwx_fw_sects *, + struct iwx_context_info_dram *); +static void iwx_fw_version_str(char *, size_t, uint32_t, uint32_t, uint32_t); +static int iwx_firmware_store_section(struct iwx_softc *, enum iwx_ucode_type, + const uint8_t *, size_t); +static int iwx_set_default_calib(struct iwx_softc *, const void *); +static void iwx_fw_info_free(struct iwx_fw_info *); +static int iwx_read_firmware(struct iwx_softc *); +static uint32_t iwx_prph_addr_mask(struct iwx_softc *); +static uint32_t iwx_read_prph_unlocked(struct iwx_softc *, uint32_t); +static uint32_t iwx_read_prph(struct iwx_softc *, uint32_t); +static void iwx_write_prph_unlocked(struct iwx_softc *, uint32_t, uint32_t); +static void iwx_write_prph(struct iwx_softc *, uint32_t, uint32_t); +static uint32_t iwx_read_umac_prph(struct iwx_softc *, uint32_t); +static void iwx_write_umac_prph(struct iwx_softc *, uint32_t, uint32_t); +static int iwx_read_mem(struct iwx_softc *, uint32_t, void *, int); +static int iwx_poll_bit(struct iwx_softc *, int, uint32_t, uint32_t, int); +static int iwx_nic_lock(struct iwx_softc *); +static void iwx_nic_assert_locked(struct iwx_softc *); +static void iwx_nic_unlock(struct iwx_softc *); +static int iwx_set_bits_mask_prph(struct iwx_softc *, uint32_t, uint32_t, + uint32_t); +static int iwx_set_bits_prph(struct iwx_softc *, uint32_t, uint32_t); +static int iwx_clear_bits_prph(struct iwx_softc *, uint32_t, uint32_t); +static void iwx_dma_map_addr(void *, bus_dma_segment_t *, int, int); +static int iwx_dma_contig_alloc(bus_dma_tag_t, struct iwx_dma_info *, + bus_size_t, bus_size_t); +static void iwx_dma_contig_free(struct iwx_dma_info *); +static int iwx_alloc_rx_ring(struct iwx_softc *, struct iwx_rx_ring *); +static void iwx_disable_rx_dma(struct iwx_softc *); +static void iwx_reset_rx_ring(struct iwx_softc *, struct iwx_rx_ring *); +static void iwx_free_rx_ring(struct iwx_softc *, struct iwx_rx_ring *); +static int iwx_alloc_tx_ring(struct iwx_softc *, struct iwx_tx_ring *, int); +static void iwx_reset_tx_ring(struct iwx_softc *, struct iwx_tx_ring *); +static void iwx_free_tx_ring(struct iwx_softc *, struct iwx_tx_ring *); +static void iwx_enable_rfkill_int(struct iwx_softc *); +static int iwx_check_rfkill(struct iwx_softc *); +static void iwx_enable_interrupts(struct iwx_softc *); +static void iwx_enable_fwload_interrupt(struct iwx_softc *); +#if 0 +static void iwx_restore_interrupts(struct iwx_softc *); +#endif +static void iwx_disable_interrupts(struct iwx_softc *); +static void iwx_ict_reset(struct iwx_softc *); +static int iwx_set_hw_ready(struct iwx_softc *); +static int iwx_prepare_card_hw(struct iwx_softc *); +static int iwx_force_power_gating(struct iwx_softc *); +static void iwx_apm_config(struct iwx_softc *); +static int iwx_apm_init(struct iwx_softc *); +static void iwx_apm_stop(struct iwx_softc *); +static int iwx_allow_mcast(struct iwx_softc *); +static void iwx_init_msix_hw(struct iwx_softc *); +static void iwx_conf_msix_hw(struct iwx_softc *, int); +static int iwx_clear_persistence_bit(struct iwx_softc *); +static int iwx_start_hw(struct iwx_softc *); +static void iwx_stop_device(struct iwx_softc *); +static void iwx_nic_config(struct iwx_softc *); +static int iwx_nic_rx_init(struct iwx_softc *); +static int iwx_nic_init(struct iwx_softc *); +static int iwx_enable_txq(struct iwx_softc *, int, int, int, int); +static int iwx_disable_txq(struct iwx_softc *sc, int, int, uint8_t); +static void iwx_post_alive(struct iwx_softc *); +static int iwx_schedule_session_protection(struct iwx_softc *, + struct iwx_node *, uint32_t); +static void iwx_unprotect_session(struct iwx_softc *, struct iwx_node *); +static void iwx_init_channel_map(struct ieee80211com *, int, int *, + struct ieee80211_channel[]); +static int iwx_mimo_enabled(struct iwx_softc *); +static void iwx_init_reorder_buffer(struct iwx_reorder_buffer *, uint16_t, + uint16_t); +static void iwx_clear_reorder_buffer(struct iwx_softc *, struct iwx_rxba_data *); +static void iwx_sta_rx_agg(struct iwx_softc *, struct ieee80211_node *, uint8_t, + uint16_t, uint16_t, int, int); +static void iwx_sta_tx_agg_start(struct iwx_softc *, + struct ieee80211_node *, uint8_t); +static void iwx_ba_rx_task(void *, int); +static void iwx_ba_tx_task(void *, int); +static void iwx_set_mac_addr_from_csr(struct iwx_softc *, struct iwx_nvm_data *); +static int iwx_is_valid_mac_addr(const uint8_t *); +static void iwx_flip_hw_address(uint32_t, uint32_t, uint8_t *); +static int iwx_nvm_get(struct iwx_softc *); +static int iwx_load_firmware(struct iwx_softc *); +static int iwx_start_fw(struct iwx_softc *); +static int iwx_pnvm_handle_section(struct iwx_softc *, const uint8_t *, size_t); +static int iwx_pnvm_parse(struct iwx_softc *, const uint8_t *, size_t); +static void iwx_ctxt_info_gen3_set_pnvm(struct iwx_softc *); +static int iwx_load_pnvm(struct iwx_softc *); +static int iwx_send_tx_ant_cfg(struct iwx_softc *, uint8_t); +static int iwx_send_phy_cfg_cmd(struct iwx_softc *); +static int iwx_load_ucode_wait_alive(struct iwx_softc *); +static int iwx_send_dqa_cmd(struct iwx_softc *); +static int iwx_run_init_mvm_ucode(struct iwx_softc *, int); +static int iwx_config_ltr(struct iwx_softc *); +static void iwx_update_rx_desc(struct iwx_softc *, struct iwx_rx_ring *, int, bus_dma_segment_t *); +static int iwx_rx_addbuf(struct iwx_softc *, int, int); +static int iwx_rxmq_get_signal_strength(struct iwx_softc *, struct iwx_rx_mpdu_desc *); +static void iwx_rx_rx_phy_cmd(struct iwx_softc *, struct iwx_rx_packet *, + struct iwx_rx_data *); +static int iwx_get_noise(const struct iwx_statistics_rx_non_phy *); +static int iwx_rx_hwdecrypt(struct iwx_softc *, struct mbuf *, uint32_t); +#if 0 +int iwx_ccmp_decap(struct iwx_softc *, struct mbuf *, + struct ieee80211_node *, struct ieee80211_rxinfo *); +#endif +static void iwx_rx_frame(struct iwx_softc *, struct mbuf *, int, uint32_t, + int, int, uint32_t, uint8_t); +static void iwx_clear_tx_desc(struct iwx_softc *, struct iwx_tx_ring *, int); +static void iwx_txd_done(struct iwx_softc *, struct iwx_tx_ring *, + struct iwx_tx_data *); +static void iwx_txq_advance(struct iwx_softc *, struct iwx_tx_ring *, uint16_t); +static void iwx_rx_tx_cmd(struct iwx_softc *, struct iwx_rx_packet *, + struct iwx_rx_data *); +static void iwx_clear_oactive(struct iwx_softc *, struct iwx_tx_ring *); +static void iwx_rx_bmiss(struct iwx_softc *, struct iwx_rx_packet *, + struct iwx_rx_data *); +static int iwx_binding_cmd(struct iwx_softc *, struct iwx_node *, uint32_t); +static uint8_t iwx_get_vht_ctrl_pos(struct ieee80211com *, struct ieee80211_channel *); +static int iwx_phy_ctxt_cmd_uhb_v3_v4(struct iwx_softc *, + struct iwx_phy_ctxt *, uint8_t, uint8_t, uint32_t, uint8_t, uint8_t, int); +#if 0 +static int iwx_phy_ctxt_cmd_v3_v4(struct iwx_softc *, struct iwx_phy_ctxt *, + uint8_t, uint8_t, uint32_t, uint8_t, uint8_t, int); +#endif +static int iwx_phy_ctxt_cmd(struct iwx_softc *, struct iwx_phy_ctxt *, + uint8_t, uint8_t, uint32_t, uint32_t, uint8_t, uint8_t); +static int iwx_send_cmd(struct iwx_softc *, struct iwx_host_cmd *); +static int iwx_send_cmd_pdu(struct iwx_softc *, uint32_t, uint32_t, uint16_t, + const void *); +static int iwx_send_cmd_status(struct iwx_softc *, struct iwx_host_cmd *, + uint32_t *); +static int iwx_send_cmd_pdu_status(struct iwx_softc *, uint32_t, uint16_t, + const void *, uint32_t *); +static void iwx_free_resp(struct iwx_softc *, struct iwx_host_cmd *); +static void iwx_cmd_done(struct iwx_softc *, int, int, int); +static uint32_t iwx_fw_rateidx_ofdm(uint8_t); +static uint32_t iwx_fw_rateidx_cck(uint8_t); +static const struct iwx_rate *iwx_tx_fill_cmd(struct iwx_softc *, + struct iwx_node *, struct ieee80211_frame *, uint16_t *, uint32_t *, + struct mbuf *); +static void iwx_tx_update_byte_tbl(struct iwx_softc *, struct iwx_tx_ring *, int, + uint16_t, uint16_t); +static int iwx_tx(struct iwx_softc *, struct mbuf *, + struct ieee80211_node *); +static int iwx_flush_sta_tids(struct iwx_softc *, int, uint16_t); +static int iwx_drain_sta(struct iwx_softc *sc, struct iwx_node *, int); +static int iwx_flush_sta(struct iwx_softc *, struct iwx_node *); +static int iwx_beacon_filter_send_cmd(struct iwx_softc *, + struct iwx_beacon_filter_cmd *); +static int iwx_update_beacon_abort(struct iwx_softc *, struct iwx_node *, + int); +static void iwx_power_build_cmd(struct iwx_softc *, struct iwx_node *, + struct iwx_mac_power_cmd *); +static int iwx_power_mac_update_mode(struct iwx_softc *, struct iwx_node *); +static int iwx_power_update_device(struct iwx_softc *); +#if 0 +static int iwx_enable_beacon_filter(struct iwx_softc *, struct iwx_node *); +#endif +static int iwx_disable_beacon_filter(struct iwx_softc *); +static int iwx_add_sta_cmd(struct iwx_softc *, struct iwx_node *, int); +static int iwx_rm_sta_cmd(struct iwx_softc *, struct iwx_node *); +static int iwx_rm_sta(struct iwx_softc *, struct iwx_node *); +static int iwx_fill_probe_req(struct iwx_softc *, + struct iwx_scan_probe_req *); +static int iwx_config_umac_scan_reduced(struct iwx_softc *); +static uint16_t iwx_scan_umac_flags_v2(struct iwx_softc *, int); +static void iwx_scan_umac_dwell_v10(struct iwx_softc *, + struct iwx_scan_general_params_v10 *, int); +static void iwx_scan_umac_fill_general_p_v10(struct iwx_softc *, + struct iwx_scan_general_params_v10 *, uint16_t, int); +static void iwx_scan_umac_fill_ch_p_v6(struct iwx_softc *, + struct iwx_scan_channel_params_v6 *, uint32_t, int); +static int iwx_umac_scan_v14(struct iwx_softc *, int); +static void iwx_mcc_update(struct iwx_softc *, struct iwx_mcc_chub_notif *); +static uint8_t iwx_ridx2rate(struct ieee80211_rateset *, int); +static int iwx_rval2ridx(int); +static void iwx_ack_rates(struct iwx_softc *, struct iwx_node *, int *, + int *); +static void iwx_mac_ctxt_cmd_common(struct iwx_softc *, struct iwx_node *, + struct iwx_mac_ctx_cmd *, uint32_t); +static void iwx_mac_ctxt_cmd_fill_sta(struct iwx_softc *, struct iwx_node *, + struct iwx_mac_data_sta *, int); +static int iwx_mac_ctxt_cmd(struct iwx_softc *, struct iwx_node *, + uint32_t, int); +static int iwx_clear_statistics(struct iwx_softc *); +static int iwx_scan(struct iwx_softc *); +static int iwx_bgscan(struct ieee80211com *); +static int iwx_enable_mgmt_queue(struct iwx_softc *); +static int iwx_disable_mgmt_queue(struct iwx_softc *); +static int iwx_rs_rval2idx(uint8_t); +static uint16_t iwx_rs_ht_rates(struct iwx_softc *, struct ieee80211_node *, + int); +static uint16_t iwx_rs_vht_rates(struct iwx_softc *, struct ieee80211_node *, int); +static int iwx_rs_init_v3(struct iwx_softc *, struct iwx_node *); +static int iwx_rs_init_v4(struct iwx_softc *, struct iwx_node *); +static int iwx_rs_init(struct iwx_softc *, struct iwx_node *); +static int iwx_phy_send_rlc(struct iwx_softc *, struct iwx_phy_ctxt *, + uint8_t, uint8_t); +static int iwx_phy_ctxt_update(struct iwx_softc *, struct iwx_phy_ctxt *, + struct ieee80211_channel *, uint8_t, uint8_t, uint32_t, uint8_t, + uint8_t); +static int iwx_auth(struct ieee80211vap *, struct iwx_softc *); +static int iwx_deauth(struct iwx_softc *); +static int iwx_run(struct ieee80211vap *, struct iwx_softc *); +static int iwx_run_stop(struct iwx_softc *); +static struct ieee80211_node * iwx_node_alloc(struct ieee80211vap *, + const uint8_t[IEEE80211_ADDR_LEN]); +#if 0 +int iwx_set_key(struct ieee80211com *, struct ieee80211_node *, + struct ieee80211_key *); +void iwx_setkey_task(void *); +void iwx_delete_key(struct ieee80211com *, + struct ieee80211_node *, struct ieee80211_key *); +#endif +static int iwx_newstate(struct ieee80211vap *, enum ieee80211_state, int); +static void iwx_endscan(struct iwx_softc *); +static void iwx_fill_sf_command(struct iwx_softc *, struct iwx_sf_cfg_cmd *, + struct ieee80211_node *); +static int iwx_sf_config(struct iwx_softc *, int); +static int iwx_send_bt_init_conf(struct iwx_softc *); +static int iwx_send_soc_conf(struct iwx_softc *); +static int iwx_send_update_mcc_cmd(struct iwx_softc *, const char *); +static int iwx_send_temp_report_ths_cmd(struct iwx_softc *); +static int iwx_init_hw(struct iwx_softc *); +static int iwx_init(struct iwx_softc *); +static void iwx_stop(struct iwx_softc *); +static void iwx_watchdog(void *); +static const char *iwx_desc_lookup(uint32_t); +static void iwx_nic_error(struct iwx_softc *); +static void iwx_dump_driver_status(struct iwx_softc *); +static void iwx_nic_umac_error(struct iwx_softc *); +static void iwx_rx_mpdu_mq(struct iwx_softc *, struct mbuf *, void *, size_t); +static int iwx_rx_pkt_valid(struct iwx_rx_packet *); +static void iwx_rx_pkt(struct iwx_softc *, struct iwx_rx_data *, + struct mbuf *); +static void iwx_notif_intr(struct iwx_softc *); +#if 0 +/* XXX-THJ - I don't have hardware for this */ +static int iwx_intr(void *); +#endif +static void iwx_intr_msix(void *); +static int iwx_preinit(struct iwx_softc *); +static void iwx_attach_hook(void *); +static const struct iwx_device_cfg *iwx_find_device_cfg(struct iwx_softc *); +static int iwx_probe(device_t); +static int iwx_attach(device_t); +static int iwx_detach(device_t); + +/* FreeBSD specific glue */ +u_int8_t etherbroadcastaddr[ETHER_ADDR_LEN] = + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; + +u_int8_t etheranyaddr[ETHER_ADDR_LEN] = + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +#if IWX_DEBUG +#define DPRINTF(x) do { if (sc->sc_debug == IWX_DEBUG_ANY) { printf x; } } while (0) +#else +#define DPRINTF(x) do { ; } while (0) +#endif + +/* FreeBSD specific functions */ +static struct ieee80211vap * iwx_vap_create(struct ieee80211com *, + const char[IFNAMSIZ], int, enum ieee80211_opmode, int, + const uint8_t[IEEE80211_ADDR_LEN], const uint8_t[IEEE80211_ADDR_LEN]); +static void iwx_vap_delete(struct ieee80211vap *); +static void iwx_parent(struct ieee80211com *); +static void iwx_scan_start(struct ieee80211com *); +static void iwx_scan_end(struct ieee80211com *); +static void iwx_update_mcast(struct ieee80211com *ic); +static void iwx_scan_curchan(struct ieee80211_scan_state *, unsigned long); +static void iwx_scan_mindwell(struct ieee80211_scan_state *); +static void iwx_set_channel(struct ieee80211com *); +static void iwx_endscan_cb(void *, int ); +static int iwx_wme_update(struct ieee80211com *); +static int iwx_raw_xmit(struct ieee80211_node *, struct mbuf *, + const struct ieee80211_bpf_params *); +static int iwx_transmit(struct ieee80211com *, struct mbuf *); +static void iwx_start(struct iwx_softc *); +static int iwx_ampdu_rx_start(struct ieee80211_node *, + struct ieee80211_rx_ampdu *, int, int, int); +static void iwx_ampdu_rx_stop(struct ieee80211_node *, + struct ieee80211_rx_ampdu *); +static int iwx_addba_request(struct ieee80211_node *, + struct ieee80211_tx_ampdu *, int, int, int); +static int iwx_addba_response(struct ieee80211_node *, + struct ieee80211_tx_ampdu *, int, int, int); +static void iwx_key_update_begin(struct ieee80211vap *); +static void iwx_key_update_end(struct ieee80211vap *); +static int iwx_key_alloc(struct ieee80211vap *, struct ieee80211_key *, + ieee80211_keyix *,ieee80211_keyix *); +static int iwx_key_set(struct ieee80211vap *, const struct ieee80211_key *); +static int iwx_key_delete(struct ieee80211vap *, + const struct ieee80211_key *); +static int iwx_suspend(device_t); +static int iwx_resume(device_t); +static void iwx_radiotap_attach(struct iwx_softc *); + +/* OpenBSD compat defines */ +#define IEEE80211_HTOP0_SCO_SCN 0 +#define IEEE80211_VHTOP0_CHAN_WIDTH_HT 0 +#define IEEE80211_VHTOP0_CHAN_WIDTH_80 1 + +#define IEEE80211_HT_RATESET_SISO 0 +#define IEEE80211_HT_RATESET_MIMO2 2 + +const struct ieee80211_rateset ieee80211_std_rateset_11a = + { 8, { 12, 18, 24, 36, 48, 72, 96, 108 } }; + +const struct ieee80211_rateset ieee80211_std_rateset_11b = + { 4, { 2, 4, 11, 22 } }; + +const struct ieee80211_rateset ieee80211_std_rateset_11g = + { 12, { 2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108 } }; + +inline int +ieee80211_has_addr4(const struct ieee80211_frame *wh) +{ + return (wh->i_fc[1] & IEEE80211_FC1_DIR_MASK) == + IEEE80211_FC1_DIR_DSTODS; +} + +static uint8_t +iwx_lookup_cmd_ver(struct iwx_softc *sc, uint8_t grp, uint8_t cmd) +{ + const struct iwx_fw_cmd_version *entry; + int i; + + for (i = 0; i < sc->n_cmd_versions; i++) { + entry = &sc->cmd_versions[i]; + if (entry->group == grp && entry->cmd == cmd) + return entry->cmd_ver; + } + + return IWX_FW_CMD_VER_UNKNOWN; +} + +uint8_t +iwx_lookup_notif_ver(struct iwx_softc *sc, uint8_t grp, uint8_t cmd) +{ + const struct iwx_fw_cmd_version *entry; + int i; + + for (i = 0; i < sc->n_cmd_versions; i++) { + entry = &sc->cmd_versions[i]; + if (entry->group == grp && entry->cmd == cmd) + return entry->notif_ver; + } + + return IWX_FW_CMD_VER_UNKNOWN; +} + +static int +iwx_store_cscheme(struct iwx_softc *sc, const uint8_t *data, size_t dlen) +{ + const struct iwx_fw_cscheme_list *l = (const void *)data; + + if (dlen < sizeof(*l) || + dlen < sizeof(l->size) + l->size * sizeof(*l->cs)) + return EINVAL; + + /* we don't actually store anything for now, always use s/w crypto */ + + return 0; +} + +static int +iwx_ctxt_info_alloc_dma(struct iwx_softc *sc, + const struct iwx_fw_onesect *sec, struct iwx_dma_info *dram) +{ + int err = iwx_dma_contig_alloc(sc->sc_dmat, dram, sec->fws_len, 1); + if (err) { + printf("%s: could not allocate context info DMA memory\n", + DEVNAME(sc)); + return err; + } + + memcpy(dram->vaddr, sec->fws_data, sec->fws_len); + + return 0; +} + +static void +iwx_ctxt_info_free_paging(struct iwx_softc *sc) +{ + struct iwx_self_init_dram *dram = &sc->init_dram; + int i; + + if (!dram->paging) + return; + + /* free paging*/ + for (i = 0; i < dram->paging_cnt; i++) + iwx_dma_contig_free(&dram->paging[i]); + + free(dram->paging, M_DEVBUF); + dram->paging_cnt = 0; + dram->paging = NULL; +} + +static int +iwx_get_num_sections(const struct iwx_fw_sects *fws, int start) +{ + int i = 0; + + while (start < fws->fw_count && + fws->fw_sect[start].fws_devoff != IWX_CPU1_CPU2_SEPARATOR_SECTION && + fws->fw_sect[start].fws_devoff != IWX_PAGING_SEPARATOR_SECTION) { + start++; + i++; + } + + return i; +} + +static int +iwx_init_fw_sec(struct iwx_softc *sc, const struct iwx_fw_sects *fws, + struct iwx_context_info_dram *ctxt_dram) +{ + struct iwx_self_init_dram *dram = &sc->init_dram; + int i, ret, fw_cnt = 0; + + KASSERT(dram->paging == NULL, ("iwx_init_fw_sec")); + + dram->lmac_cnt = iwx_get_num_sections(fws, 0); + /* add 1 due to separator */ + dram->umac_cnt = iwx_get_num_sections(fws, dram->lmac_cnt + 1); + /* add 2 due to separators */ + dram->paging_cnt = iwx_get_num_sections(fws, + dram->lmac_cnt + dram->umac_cnt + 2); + + IWX_UNLOCK(sc); + dram->fw = mallocarray(dram->umac_cnt + dram->lmac_cnt, + sizeof(*dram->fw), M_DEVBUF, M_ZERO | M_NOWAIT); + if (!dram->fw) { + printf("%s: could not allocate memory for firmware sections\n", + DEVNAME(sc)); + IWX_LOCK(sc); + return ENOMEM; + } + + dram->paging = mallocarray(dram->paging_cnt, sizeof(*dram->paging), + M_DEVBUF, M_ZERO | M_WAITOK); + IWX_LOCK(sc); + if (!dram->paging) { + printf("%s: could not allocate memory for firmware paging\n", + DEVNAME(sc)); + return ENOMEM; + } + + /* initialize lmac sections */ + for (i = 0; i < dram->lmac_cnt; i++) { + ret = iwx_ctxt_info_alloc_dma(sc, &fws->fw_sect[i], + &dram->fw[fw_cnt]); + if (ret) + return ret; + ctxt_dram->lmac_img[i] = + htole64(dram->fw[fw_cnt].paddr); + IWX_DPRINTF(sc, IWX_DEBUG_FIRMWARE_TLV, + "%s: firmware LMAC section %d at 0x%llx size %lld\n", + __func__, i, + (unsigned long long)dram->fw[fw_cnt].paddr, + (unsigned long long)dram->fw[fw_cnt].size); + fw_cnt++; + } + + /* initialize umac sections */ + for (i = 0; i < dram->umac_cnt; i++) { + /* access FW with +1 to make up for lmac separator */ + ret = iwx_ctxt_info_alloc_dma(sc, + &fws->fw_sect[fw_cnt + 1], &dram->fw[fw_cnt]); + if (ret) + return ret; + ctxt_dram->umac_img[i] = + htole64(dram->fw[fw_cnt].paddr); + IWX_DPRINTF(sc, IWX_DEBUG_FIRMWARE_TLV, + "%s: firmware UMAC section %d at 0x%llx size %lld\n", + __func__, i, + (unsigned long long)dram->fw[fw_cnt].paddr, + (unsigned long long)dram->fw[fw_cnt].size); + fw_cnt++; + } + + /* + * Initialize paging. + * Paging memory isn't stored in dram->fw as the umac and lmac - it is + * stored separately. + * This is since the timing of its release is different - + * while fw memory can be released on alive, the paging memory can be + * freed only when the device goes down. + * Given that, the logic here in accessing the fw image is a bit + * different - fw_cnt isn't changing so loop counter is added to it. + */ + for (i = 0; i < dram->paging_cnt; i++) { + /* access FW with +2 to make up for lmac & umac separators */ + int fw_idx = fw_cnt + i + 2; + + ret = iwx_ctxt_info_alloc_dma(sc, + &fws->fw_sect[fw_idx], &dram->paging[i]); + if (ret) + return ret; + + ctxt_dram->virtual_img[i] = htole64(dram->paging[i].paddr); + IWX_DPRINTF(sc, IWX_DEBUG_FIRMWARE_TLV, + "%s: firmware paging section %d at 0x%llx size %lld\n", + __func__, i, + (unsigned long long)dram->paging[i].paddr, + (unsigned long long)dram->paging[i].size); + } + + return 0; +} + +static void +iwx_fw_version_str(char *buf, size_t bufsize, + uint32_t major, uint32_t minor, uint32_t api) +{ + /* + * Starting with major version 35 the Linux driver prints the minor + * version in hexadecimal. + */ + if (major >= 35) + snprintf(buf, bufsize, "%u.%08x.%u", major, minor, api); + else + snprintf(buf, bufsize, "%u.%u.%u", major, minor, api); +} +#if 0 +static int +iwx_alloc_fw_monitor_block(struct iwx_softc *sc, uint8_t max_power, + uint8_t min_power) +{ + struct iwx_dma_info *fw_mon = &sc->fw_mon; + uint32_t size = 0; + uint8_t power; + int err; + + if (fw_mon->size) + return 0; + + for (power = max_power; power >= min_power; power--) { + size = (1 << power); + + err = iwx_dma_contig_alloc(sc->sc_dmat, fw_mon, size, 0); + if (err) + continue; + + IWX_DPRINTF(sc, IWX_DEBUG_FIRMWARE_TLV, + "%s: allocated 0x%08x bytes for firmware monitor.\n", + DEVNAME(sc), size); + break; + } + + if (err) { + fw_mon->size = 0; + return err; + } + + if (power != max_power) + IWX_DPRINTF(sc, IWX_DEBUG_FIRMWARE_TLV, + "%s: Sorry - debug buffer is only %luK while you requested %luK\n", + DEVNAME(sc), (unsigned long)(1 << (power - 10)), + (unsigned long)(1 << (max_power - 10))); + + return 0; +} + +static int +iwx_alloc_fw_monitor(struct iwx_softc *sc, uint8_t max_power) +{ + if (!max_power) { + /* default max_power is maximum */ + max_power = 26; + } else { + max_power += 11; + } + + if (max_power > 26) { + IWX_DPRINTF(sc, IWX_DEBUG_FIRMWARE_TLV, + "%s: External buffer size for monitor is too big %d, " + "check the FW TLV\n", DEVNAME(sc), max_power); + return 0; + } + + if (sc->fw_mon.size) + return 0; + + return iwx_alloc_fw_monitor_block(sc, max_power, 11); +} +#endif + +static int +iwx_apply_debug_destination(struct iwx_softc *sc) +{ +#if 0 + struct iwx_fw_dbg_dest_tlv_v1 *dest_v1; + int i, err; + uint8_t mon_mode, size_power, base_shift, end_shift; + uint32_t base_reg, end_reg; + + dest_v1 = sc->sc_fw.dbg_dest_tlv_v1; + mon_mode = dest_v1->monitor_mode; + size_power = dest_v1->size_power; + base_reg = le32toh(dest_v1->base_reg); + end_reg = le32toh(dest_v1->end_reg); + base_shift = dest_v1->base_shift; + end_shift = dest_v1->end_shift; + + DPRINTF(("%s: applying debug destination %d\n", DEVNAME(sc), mon_mode)); + + if (mon_mode == EXTERNAL_MODE) { *** 19565 LINES SKIPPED *** From nobody Mon Mar 31 14:57:57 2025 X-Original-To: dev-commits-src-main@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 4ZRDl94Tsyz5s8Dw; Mon, 31 Mar 2025 14:57: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRDl92MZBz442V; Mon, 31 Mar 2025 14:57:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433077; 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=UE33rxKmJdeCM2IW18cgLUhJ7Os3hCAn0IQwBsc6LqM=; b=bL4WArGt7MTarwoyaskomcXl5cCX17h/mgoxoCwYPcQTYEc+mhJSwHPWFZGejWZ2pfV27g qXp0ITrFsbPDITJh/OkR8YS0iZPd/k8nRCYqxyOGAsQAkgHS1fH6RGJlXPiJZqGlL94CxP aNDmDe+OJnAwCyNr11sWf2iCLCtTwcsyfcVtmFUYUcuhdKOUIud9FmoyKwE7Bb7q78nAWv EHlzs8O8av5sNaPx+jTDXXawtFyDuXXijxpQsvkqd2SBpma/W+ouIpEPjgt9ZiFCKaLfn2 1erAlQQFcizBxtj7IqvuE4zaAzUK9OF16BJ77A/Y0K7rlteT/qat/VS2NkKg1g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743433077; a=rsa-sha256; cv=none; b=oQV7Bx6Pu4+nMbAXpHQUOT0kD/QjnIc8OdGj42T7oIWWamJ6zU5afye01sWR+Bz1mM/JaS 9BPCO84Edj/WKoVlF1e44orSzAZlVYNuS+MeyCs0Rur3fEXifWGZdrkNkstebSmU1l8VsY 0Vn2B4vWJxPvLHycd06bX12BDAQhuupDjdj0XDZugaT/Ttjqb2FJ62zzBQsKJJlhKU37NN h2AIImRwH0fmBAR0GiiKvRMTXHUQ4eE8fuNUT+O+UM68x2nqMljXLNvnHdmcBKzu0h5n9t dPKIc5PFfrRUbqOpyyIPX1a5T7yGxic3lWOfZxZRRQJWHYbGou1T+M+Ch8/euw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433077; 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=UE33rxKmJdeCM2IW18cgLUhJ7Os3hCAn0IQwBsc6LqM=; b=GsUZzgUOg8tPFLWOanZsHBqi+Zx5jIy7at23VxweTSe8HyXtOpFp8cyrazqvtHGS/9z1VO DzeBq7L/hP8R/UgmhF3JbsgwaSDLbXbSOy65eqO6cSyLljJcePRO8ymHB/o9lYRVBS6cJJ OYoyrh3mQdCGUoi9F/mnL9HDunbFJnixBbLSs3CEjfFzq8pQhBOo2fImuMGKIaSuEmbXx7 J8z1JNNO0SRhpu5t+uWyieO23EB7W1PAOjhu+W/QX+O+Ao6a6KaypdIt+/zRnaogjSAjaH u0HAPX/IzNhneCyyVLSUHfkSjFMedVf7VMf4BoPkVkkmxWAQ6otEdVwnsrnKcw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRDl91HjkzqZ5; Mon, 31 Mar 2025 14:57:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VEvvE9037954; Mon, 31 Mar 2025 14:57:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VEvveC037951; Mon, 31 Mar 2025 14:57:57 GMT (envelope-from git) Date: Mon, 31 Mar 2025 14:57:57 GMT Message-Id: <202503311457.52VEvveC037951@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 8efd2acf07bc - main - pf: improve pf_state_key_attach() error handling List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8efd2acf07bc0e1c3ea1f7390e0f1cfb7cf6f86c Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=8efd2acf07bc0e1c3ea1f7390e0f1cfb7cf6f86c commit 8efd2acf07bc0e1c3ea1f7390e0f1cfb7cf6f86c Author: Kristof Provost AuthorDate: 2025-03-27 14:21:41 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 12:55:42 +0000 pf: improve pf_state_key_attach() error handling If we fail to attach the stack key that means we've already attached the wire key. That means the state could be found by other cores, and given that we then free it, be used after free. Fix this by not releasing the ID hashrow lock and key locks until after we've removed the inserted key again, ensuring the state cannot be found by other cores. Reported by: markj Submitted by: glebius Reviewed by: glebius, markj MFC after: 3 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D49550 --- sys/netpfil/pf/pf.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index ef86d70db760..ae1ad679d951 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -1523,15 +1523,28 @@ keyattach: printf("\n"); } s->timeout = PFTM_UNLINKED; + if (idx == PF_SK_STACK) + /* + * Remove the wire key from + * the hash. Other threads + * can't be referencing it + * because we still hold the + * hash lock. + */ + pf_state_key_detach(s, + PF_SK_WIRE); PF_HASHROW_UNLOCK(ih); KEYS_UNLOCK(); - if (idx == PF_SK_WIRE) { + if (idx == PF_SK_WIRE) + /* + * We've not inserted either key. + * Free both. + */ uma_zfree(V_pf_state_key_z, skw); - if (skw != sks) - uma_zfree(V_pf_state_key_z, sks); - } else { - pf_detach_state(s); - } + if (skw != sks) + uma_zfree( + V_pf_state_key_z, + sks); return (EEXIST); /* collision! */ } } From nobody Mon Mar 31 14:57:58 2025 X-Original-To: dev-commits-src-main@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 4ZRDlB4lnNz5s8HV; Mon, 31 Mar 2025 14:57: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRDlB2YCDz44JF; Mon, 31 Mar 2025 14:57:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433078; 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=pJcc9ku0H4a9W6qsftOEtaEQoQWf99SFklqMkGk7ZqI=; b=GbMwu4naz+j+d/zxtzU3PY/bgLt23srt3zRY97aGa1KQU9/5dmeGeGzO9hTPWu+rYv1uL8 lIBPCrP97Qr1Hy10ld+84t0ZmUgYZXqotzlQjxGKMm4rpEC0j2b9GSRUJn1tcwiCfgc+8N yR0WJRhlqu4KUgkZ1tzu53HeOAbAqC3eXe4VfwfDYTCXs4Uiy7WckWw1lFvEgs8flekUQz BnMyAUPU3JKOhsT12NfaL2r4Qzh1RcjDu+Jrwr9rvzyd4LGODT5AtBBbvbFdK4BtbMUaUX TAlOyAlgKwxOjtbvbLljflrXfLA1OUUOM81yzlkbKXVmnpY/ys0K6GPuA2M1vw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743433078; a=rsa-sha256; cv=none; b=oTYdaC6o3eSB9kKOrUTvHZCQU9HLBT/CsKu+PcllamyeuSAvenIky2vvJTlI0v8J8etsmV N/F/77HJYbHH2TdGc2K0WIulLn7rHoTuw3lprVGmmOb+wU/vmAsba5NGfMYBBBl2h94urS YTi6HbQ2ComvtMfI2ZcI0Awy2ebk05L7YckoDUtX/ZzHkk4CGnL+Kq2V7UwBYmrWtjgz3s xeXpP0KLry2mLi2RcGp+VbaO1Y3JaZG1hzHRRThcD0/htGReSmqlXheoMC0L1XHzIGhJDP B7IWPIYBBup2PLFgsjkv6D7QbSXvEdJi8UCvYxP47wdeQvRZ67KPbWFMmm7dFQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433078; 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=pJcc9ku0H4a9W6qsftOEtaEQoQWf99SFklqMkGk7ZqI=; b=R2ds7bwm1AZiDyxzvbxF0Yn7rv46K5fdxP9qszHd0OlQzCzlCQ++CcyfudkMD0Re7u5rZS KntpHPg7ExR445cKz/867tn48N/ZcQHJvmTW6jo7Ii9o0urEmsFjnuiUsNU+SknJ5MuGky +FkTKbgI3/JzHzKjuqiW/ma1XOF7QX828PVvFCvXTd2K4Ab1coXRw7bgIPEJ/4FidiSBla SC3VzuDSxT0pUyc7aqbRiuM0YDyjEZSjB9caFJIZuJpAqiToErDbyFZAtaxLxg6lHi587k qcV58tf5EfFzCYF2urPPkyghzd+69lhkNR2orNYPG/IBj/uRe89R+nLVD+Kjrw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRDlB26gVzqh6; Mon, 31 Mar 2025 14:57:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VEvwak037991; Mon, 31 Mar 2025 14:57:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VEvwOk037988; Mon, 31 Mar 2025 14:57:58 GMT (envelope-from git) Date: Mon, 31 Mar 2025 14:57:58 GMT Message-Id: <202503311457.52VEvwOk037988@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: bdea9cbcf2de - main - pf: don't use state keys after pf_state_insert() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bdea9cbcf2decafeb4da5a0280313efccc09e1b3 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=bdea9cbcf2decafeb4da5a0280313efccc09e1b3 commit bdea9cbcf2decafeb4da5a0280313efccc09e1b3 Author: Kristof Provost AuthorDate: 2025-03-27 14:35:40 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 12:56:16 +0000 pf: don't use state keys after pf_state_insert() pf_state_insert() may free the state keys, it's not safe to access these pointers after the call. Introduce osrc/odst (similar to osport/odport) to store the original source and destination addresses. This allows us to undo NAT transformations without having to access the state keys. Reviewed by: glebius, markj MFC after: 3 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D49551 --- sys/net/pfvar.h | 2 ++ sys/netpfil/pf/pf.c | 30 +++++++++++++++--------------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index 39ca13c89379..156ffd22c07b 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -1633,6 +1633,8 @@ struct pf_pdesc { struct pf_addr *src; /* src address */ struct pf_addr *dst; /* dst address */ + struct pf_addr osrc; + struct pf_addr odst; u_int16_t *pcksum; /* proto cksum */ u_int16_t *sport; u_int16_t *dport; diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index ae1ad679d951..12b4d8c1398b 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -4280,8 +4280,7 @@ pf_send_tcp(const struct pf_krule *r, sa_family_t af, static void pf_return(struct pf_krule *r, struct pf_krule *nr, struct pf_pdesc *pd, - struct pf_state_key *sk, struct tcphdr *th, - u_int16_t bproto_sum, u_int16_t bip_sum, + struct tcphdr *th, u_int16_t bproto_sum, u_int16_t bip_sum, u_short *reason, int rtableid) { struct pf_addr * const saddr = pd->src; @@ -4289,12 +4288,12 @@ pf_return(struct pf_krule *r, struct pf_krule *nr, struct pf_pdesc *pd, /* undo NAT changes, if they have taken place */ if (nr != NULL) { - PF_ACPY(saddr, &sk->addr[pd->sidx], pd->af); - PF_ACPY(daddr, &sk->addr[pd->didx], pd->af); + PF_ACPY(saddr, &pd->osrc, pd->af); + PF_ACPY(daddr, &pd->odst, pd->af); if (pd->sport) - *pd->sport = sk->port[pd->sidx]; + *pd->sport = pd->osport; if (pd->dport) - *pd->dport = sk->port[pd->didx]; + *pd->dport = pd->odport; if (pd->ip_sum) *pd->ip_sum = bip_sum; m_copyback(pd->m, pd->off, pd->hdrlen, pd->hdr.any); @@ -5926,7 +5925,7 @@ nextrule: ((r->rule_flag & PFRULE_RETURNRST) || (r->rule_flag & PFRULE_RETURNICMP) || (r->rule_flag & PFRULE_RETURN))) { - pf_return(r, nr, pd, sk, th, bproto_sum, + pf_return(r, nr, pd, th, bproto_sum, bip_sum, &reason, r->rtableid); } @@ -5975,7 +5974,7 @@ nextrule: pd->act.log |= PF_LOG_FORCE; if (action == PF_DROP && (r->rule_flag & PFRULE_RETURN)) - pf_return(r, nr, pd, sk, th, + pf_return(r, nr, pd, th, bproto_sum, bip_sum, &reason, pd->act.rtableid); return (action); @@ -6255,15 +6254,12 @@ pf_create_state(struct pf_krule *r, struct pf_krule *nr, struct pf_krule *a, pf_set_protostate(s, PF_PEER_SRC, PF_TCPS_PROXY_SRC); /* undo NAT changes, if they have taken place */ if (nr != NULL) { - struct pf_state_key *skt = s->key[PF_SK_WIRE]; - if (pd->dir == PF_OUT) - skt = s->key[PF_SK_STACK]; - PF_ACPY(pd->src, &skt->addr[pd->sidx], pd->af); - PF_ACPY(pd->dst, &skt->addr[pd->didx], pd->af); + PF_ACPY(pd->src, &pd->osrc, pd->af); + PF_ACPY(pd->dst, &pd->odst, pd->af); if (pd->sport) - *pd->sport = skt->port[pd->sidx]; + *pd->sport = pd->osport; if (pd->dport) - *pd->dport = skt->port[pd->didx]; + *pd->dport = pd->odport; if (pd->ip_sum) *pd->ip_sum = bip_sum; m_copyback(pd->m, pd->off, pd->hdrlen, pd->hdr.any); @@ -9883,6 +9879,8 @@ pf_setup_pdesc(sa_family_t af, int dir, struct pf_pdesc *pd, struct mbuf **m0, } pd->src = (struct pf_addr *)&h->ip_src; pd->dst = (struct pf_addr *)&h->ip_dst; + PF_ACPY(&pd->osrc, pd->src, af); + PF_ACPY(&pd->odst, pd->dst, af); pd->ip_sum = &h->ip_sum; pd->virtual_proto = pd->proto = h->ip_p; pd->tos = h->ip_tos & ~IPTOS_ECN_MASK; @@ -9924,6 +9922,8 @@ pf_setup_pdesc(sa_family_t af, int dir, struct pf_pdesc *pd, struct mbuf **m0, h = mtod(pd->m, struct ip6_hdr *); pd->src = (struct pf_addr *)&h->ip6_src; pd->dst = (struct pf_addr *)&h->ip6_dst; + PF_ACPY(&pd->osrc, pd->src, af); + PF_ACPY(&pd->odst, pd->dst, af); pd->ip_sum = NULL; pd->tos = IPV6_DSCP(h); pd->ttl = h->ip6_hlim; From nobody Mon Mar 31 14:57:59 2025 X-Original-To: dev-commits-src-main@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 4ZRDlC67Gfz5s8Sg; Mon, 31 Mar 2025 14:57: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRDlC3PgTz44Fx; Mon, 31 Mar 2025 14:57:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433079; 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=Ues0sdQnAMEpKCU3sqOaJHUn5RC98+eIPVwfOeu8Lno=; b=K7SGpvcrFyN5gbxl8dhF3l0U562vQNvbMp9V6mUEg8IzobKcWTt0GwM4FxQmdspnAKZPPg RuywO4Ef8YcdMRZ6oa1aVsQK3jxllRYTgOqdC482zNEsOd+ccjj9IMHGI6bd/rCUtpR1bN gQumDddDdQ8uWQIYTsLLoKTAivpcxQfn4Fj2zdN6VPy9CGH/NB2m/ca/OgtMjS2EyLNpsz ctjpaSMcZ8wPQo3tiHKKS3n+qFYd4meeSUgGlzFVJ+TUWLZrrJLHMeI030On6iCKx5LwG3 olxMp8EQJyYKSzLKIs+j6/C6SD5oaqSBF7PZPUjMwCoB/HlWu/dqXeYrejc5pQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743433079; a=rsa-sha256; cv=none; b=Cu+iMgdW/m7gYUU+OoTc0s1cFLlKEbl0zG5R/fCnQauAyP6VyDI9o4D8FcE7zfTLw0qdhk oOnhlHDupZvVvajLfTwq4WbxxOsDxpE8HvFbxWoX1CQoZCPvsKdgbuZznGHLczfPUtr2dV oX1A+FhYBuRw2v8iwdnfuAhMNbRRoSNdJ9K3mXXaNwlO2pzI7PIKDU9HOWrKCegJmryERP f4WOLy01xvegLTzoIDfgNs+x53O7kwuXln7mkyo6R6nC/soZI5kTf/w2iuhZXOItmBmmpb 00WTecrJIcyIhhBwGmRDkypp8aBVl2eN9AgZAgpn5HDzGEGdCCywxjzzAhqdLw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433079; 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=Ues0sdQnAMEpKCU3sqOaJHUn5RC98+eIPVwfOeu8Lno=; b=q8KkQonaCMZzarrLBDLDIEm9ZobVe9FMkpfBzUI54F1/qWwF3BLVK5g3HaVKuyJbq3K3Cc 79XNehcVvaJd+Gu8GShjSTxcWjmJc5Jeao18ax2eH0VD8BCe76UBNuRegR96wLqw/KoV89 xvJ1lRUdZNUql9HEZaQm+mouxZBlbrFpKfDirK5zr1d43m+cijpkJlkObMfwT5YOw3OqdX PMesm4aB2mr7mdEbDgCuRN0SNqBMh4LLyRfF35o2MMhMYkpPwTcpoez1uFd8I74sqsjWCN QBKp9TKUSX4C4LdOyWz+rhTLGGfDi/zpQJ71x9nPVdnWMDVQyvu/S8mETR88Xw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRDlC2q5Gzqh7; Mon, 31 Mar 2025 14:57:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VEvxYR038026; Mon, 31 Mar 2025 14:57:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VEvxPN038023; Mon, 31 Mar 2025 14:57:59 GMT (envelope-from git) Date: Mon, 31 Mar 2025 14:57:59 GMT Message-Id: <202503311457.52VEvxPN038023@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: d7eacb1531e7 - main - pf: simplify action resolution in pf_test_rule() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d7eacb1531e7d3e8089ec59dd75717038eb18f41 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=d7eacb1531e7d3e8089ec59dd75717038eb18f41 commit d7eacb1531e7d3e8089ec59dd75717038eb18f41 Author: Kristof Provost AuthorDate: 2025-03-27 14:47:23 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 12:56:29 +0000 pf: simplify action resolution in pf_test_rule() Rather than looking at state keys after the fact just save the action in the nat64 section. This simplifies things and it also ensures we don't use state keys after pf_insert_state(). Reviewed by: glebius, markj Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D49552 --- sys/netpfil/pf/pf.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 12b4d8c1398b..c75737f688b0 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -5491,6 +5491,7 @@ pf_test_rule(struct pf_krule **rm, struct pf_kstate **sm, int asd = 0; int match = 0; int state_icmp = 0, icmp_dir; + int action = PF_PASS; u_int16_t virtual_type, virtual_id; u_int16_t bproto_sum = 0, bip_sum = 0; u_int8_t icmptype = 0, icmpcode = 0; @@ -5963,7 +5964,6 @@ nextrule: if (pd->virtual_proto != PF_VPROTO_FRAGMENT && (!state_icmp && (r->keep_state || nr != NULL || (pd->flags & PFDESC_TCP_NORM)))) { - int action; bool nat64; action = pf_create_state(r, nr, a, pd, nk, sk, @@ -6005,6 +6005,9 @@ nextrule: goto cleanup; rewrite += ret; + + if (rewrite && sk->af != nk->af) + action = PF_AFRT; } } else { while ((ri = SLIST_FIRST(&match_rules))) { @@ -6032,10 +6035,7 @@ nextrule: */ return (PF_DEFER); - if (rewrite && sk != NULL && nk != NULL && sk->af != nk->af) { - return (PF_AFRT); - } else - return (PF_PASS); + return (action); cleanup: while ((ri = SLIST_FIRST(&match_rules))) { From nobody Mon Mar 31 14:58:00 2025 X-Original-To: dev-commits-src-main@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 4ZRDlF1Plyz5s8KL; Mon, 31 Mar 2025 14:58: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRDlD4W1fz440C; Mon, 31 Mar 2025 14:58:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433080; 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=ruqH09PO99kmVCR9ORdKj3c5Wqou/Ie0u0VNeCYBWhY=; b=RrZFKmK8xryhw32IDeP2OQBFUAuNsoHaHbmFAMb/HZ2DXSe5DmB1Nbb01tq5ztGNmcY+0X JS2qWPutppIfuyX9c4XQDBIP4aaCO05UvoqwYMxafxiLL+2bi1ISgo4YFLs0PE37VB6Oo3 URVrD7ig1KGb3pdGtaC2QJQoEKloQz1df4wqvRwvUZdeiluPdE8sgl4FRiHmhouE/Kwc8Z 8XUNAPz2i4LJwb4vcZuwY14MGsdRisAOagJcmutzt1wjWt9eO8xwwPXhfRaouDMqXRRMsf 4Q7KoBHxCF22rhvlFqa60m6sQ1/yscPeyNHn4PsVsLoJcZ2AODQ4TGuVQmIkEQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743433080; a=rsa-sha256; cv=none; b=feZYe/iVZBRyCfY8jiQZvg8hPR2o+Fs2lDRyoFLLHtP6975Igv7MLt0dljlaesmkjAucol DrgWaern7rj3cEwO8YwMDpaecf5MckdbYCOAl40AcuVQ6yCLWIpzcua7pTploiOmK4ySVz rGelxxkae+C7A75OICsOTkUiKM9QlfToiyV7HeueXXkoz248k5TMdlDFob/mm8Gh3/7BuH p2IeqBRdmo8LVp5UNnmPaG0204A8sUx9d7LOwW0T2FnnjEz3iPDiXpkHPmXCrbc/IBOLNu LhjalLFKJlj4koVdKSgwdoEtrFtzk1Plj2Kt6LHinId1RxmOJCxWwhQb8jitSg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433080; 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=ruqH09PO99kmVCR9ORdKj3c5Wqou/Ie0u0VNeCYBWhY=; b=sNGBQW0ZWlzGF1xYTe76ygbwDkmxeoudQOJB4M4By9fPDzdnlwsDQFOtfQb8VPeWzlNAnC NAc8zegi/JkMuS2aEf9G8g+VKfAREAvV0xjjceNj8ZhkK1Thz4abs3+o6iQgwrrXev47sm mehelNlk+JgklqKQeCt2sspkYYPBm7w2vlQQJm2Pkys8Ea6O71x6LwtO3L0U+BlZFkE2z3 CLvoIs7JacUqcrM/Pygtge5Tkq+A76vkZIO8J+CaigJ3quCcMIuptwQ9TkLkAKrJ3ZwucP ZBZkeprQmUH7x+uzoY13ZR+7uza+cJVFt51QwenO7UlmPbL0AowqDdBng2CPSQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRDlD46Lfzqb7; Mon, 31 Mar 2025 14:58:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VEw0MA038066; Mon, 31 Mar 2025 14:58:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VEw0r1038063; Mon, 31 Mar 2025 14:58:00 GMT (envelope-from git) Date: Mon, 31 Mar 2025 14:58:00 GMT Message-Id: <202503311458.52VEw0r1038063@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 592418343348 - main - pf: explicitly NULL state key pointers List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 592418343348bcf4355c249f53cff89ed90ea1f5 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=592418343348bcf4355c249f53cff89ed90ea1f5 commit 592418343348bcf4355c249f53cff89ed90ea1f5 Author: Kristof Provost AuthorDate: 2025-03-27 14:37:59 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 12:56:43 +0000 pf: explicitly NULL state key pointers After the pf_state_insert() call we may not use these pointers again. Explicitly NULL them to ensure we don't. Also NULL them out if we free the keys directly. Reviewed by: glebius, markj MFC after: 3 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D49553 --- sys/netpfil/pf/pf.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index c75737f688b0..d60b30057cbb 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -1835,6 +1835,7 @@ pf_state_insert(struct pfi_kkif *kif, struct pfi_kkif *orig_kif, /* Returns with ID locked on success. */ if ((error = pf_state_key_attach(skw, sks, s)) != 0) return (error); + skw = sks = NULL; ih = &V_pf_idhash[PF_IDHASH(s)]; PF_HASHROW_ASSERT(ih); @@ -5969,6 +5970,7 @@ nextrule: action = pf_create_state(r, nr, a, pd, nk, sk, &rewrite, sm, tag, bproto_sum, bip_sum, &match_rules, udp_mapping); + sk = nk = NULL; if (action != PF_PASS) { pf_udp_mapping_release(udp_mapping); pd->act.log |= PF_LOG_FORCE; @@ -6017,6 +6019,7 @@ nextrule: uma_zfree(V_pf_state_key_z, sk); uma_zfree(V_pf_state_key_z, nk); + sk = nk = NULL; pf_udp_mapping_release(udp_mapping); } @@ -6234,6 +6237,7 @@ pf_create_state(struct pf_krule *r, struct pf_krule *nr, struct pf_krule *a, goto drop; } else *sm = s; + sk = nk = NULL; STATE_INC_COUNTERS(s); From nobody Mon Mar 31 14:58:01 2025 X-Original-To: dev-commits-src-main@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 4ZRDlG306jz5s88J; Mon, 31 Mar 2025 14:58: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRDlF5n28z44JQ; Mon, 31 Mar 2025 14:58:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433081; 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=irAMakyIVZBtW88TbQGwGAnwXxsznFdFwc5hMO7CxMo=; b=VxP3ivFvN5SCph4cBh3ki9S/LQy/0KF+OijvG62m7aKVOUS3NDkAVq1CBxH818HKFuQMYv Rl1VC9LsfkjpYOxROCG7CBBr4JQCBZ2OyBZnbqPJJ1osqxWEgDjwgyqeHYqpvB8kIRvmem KkDk9mBozhzi1MYW0nQpIzuhuQBpSoEAQg0pV1oup1tap6JjXL5HyhGpzAPAVkyQZ5+4K2 PIfZoYleJgMDuegpOcHwBvnxQV7XiEUTnZUFlbZFsfs7+XxN7tTSMim8E3lvWsxLc+YkZD Zm97LQBV3xoIiNu7jMx3o/wJ4YYcjaB3DtwKSVdNsFl2QpcnnVcPX6KTDeHK8w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743433081; a=rsa-sha256; cv=none; b=ucBIc1gCEhtQl1Kv1WLgusgqz4kWmO3oVdW34BgMcuSD5sYEdmef28q0ZWxCYcbcGCnv4g qSlW1dG6+zAUJugbsqzj+7ACF1ZRVNt2dyOv+udZiL15d20k+Q3SHf7TmWEE4OtLPEdteH v7++S9N7yiVt9vvBhWXMBIS/Av/aI0RPfMS/geSiyyhW2OR+jMuju+ikVn7xJy3EvYhacG ZZJnmCKBwhChwJNXVaWHDl+vdT0F5ygW9EXh0KafQO1d837F/HR5KwyYSaFzm6dtm/ZXPd pSSJS9/QjrDBRoUW778S59+3+nbwGhKZv62ycO1lrjI1cOG5KhtJHtKRfZrpIQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433081; 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=irAMakyIVZBtW88TbQGwGAnwXxsznFdFwc5hMO7CxMo=; b=BfNHSkde5WLi18mUrGOlC0xg1XB+ugyHMQn4dmNgHODNMjWfnfdRBdKjQVTlzp6C61hc8i Vux1OF+r6Xch0+qIdswKHxhvv7ybWBR/7H5IJ56ayq/qAXGNSAfWflIl9Y0ypAL3laI2mA CEl5WyYhaJ/YFGx0dXOfdPWEEgUbzH40+BZbz79quKUpDg74DAYrVkRgEcNLUOmRr5m5K4 r9/kjbKVxtT5xcsvCyG0p9jAC2novTO7wUlVo8+zQV4bvGtccVXxJVzz+ZvmjKIFXAtWAQ IsZL+jKLXocW/I9z5q0aDdDei7kZ/PdrePGf4tSzo42k2XCl/Ef6/Te11ghcHg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRDlF4qS8zqZ6; Mon, 31 Mar 2025 14:58:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VEw1sa038100; Mon, 31 Mar 2025 14:58:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VEw1vx038097; Mon, 31 Mar 2025 14:58:01 GMT (envelope-from git) Date: Mon, 31 Mar 2025 14:58:01 GMT Message-Id: <202503311458.52VEw1vx038097@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: e7995c99f1e4 - main - pf: inline pf_addrcpy() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e7995c99f1e4b3ae001a4ce53c07fb97ada3d003 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=e7995c99f1e4b3ae001a4ce53c07fb97ada3d003 commit e7995c99f1e4b3ae001a4ce53c07fb97ada3d003 Author: Kristof Provost AuthorDate: 2025-03-29 09:46:54 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 12:56:57 +0000 pf: inline pf_addrcpy() Make it easier for the compiler to inline this in the many cases where the 'af' is known at compile time. Reviewed by: glebius, markj Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D49581 --- sys/net/pfvar.h | 19 +++++++++++++++++++ sys/netpfil/pf/pf.c | 17 ----------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index 156ffd22c07b..82967dc10d03 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -598,6 +598,25 @@ extern struct sx pf_end_lock; #endif /* PF_INET6_ONLY */ #endif /* PF_INET_INET6 */ +#ifdef _KERNEL +#ifdef INET6 +static void inline +pf_addrcpy(struct pf_addr *dst, const struct pf_addr *src, sa_family_t af) +{ + switch (af) { +#ifdef INET + case AF_INET: + memcpy(&dst->v4, &src->v4, sizeof(dst->v4)); + break; +#endif /* INET */ + case AF_INET6: + memcpy(&dst->v6, &src->v6, sizeof(dst->v6)); + break; + } +} +#endif /* INET6 */ +#endif + /* * XXX callers not FIB-aware in our version of pf yet. * OpenBSD fixed it later it seems, 2010/05/07 13:33:16 claudio. diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index d60b30057cbb..e4affb502d0e 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -798,23 +798,6 @@ pf_set_protostate(struct pf_kstate *s, int which, u_int8_t newstate) s->src.state = newstate; } -#ifdef INET6 -void -pf_addrcpy(struct pf_addr *dst, const struct pf_addr *src, sa_family_t af) -{ - switch (af) { -#ifdef INET - case AF_INET: - memcpy(&dst->v4, &src->v4, sizeof(dst->v4)); - break; -#endif /* INET */ - case AF_INET6: - memcpy(&dst->v6, &src->v6, sizeof(dst->v6)); - break; - } -} -#endif /* INET6 */ - static void pf_init_threshold(struct pf_threshold *threshold, u_int32_t limit, u_int32_t seconds) From nobody Mon Mar 31 14:58:02 2025 X-Original-To: dev-commits-src-main@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 4ZRDlH58SZz5s8F6; Mon, 31 Mar 2025 14:58:03 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRDlH0zNRz4477; Mon, 31 Mar 2025 14:58:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433083; 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=RZJBu8yABC1EsiWzMAVJdozKHTz/qhdsPFjhGAeNPAg=; b=njHA+DTbHy6quqbPPh4oIYWUWfiFulrdMoYByT0ev+9JOyakVN4ZD1OFCzLSl+hvBkK8Ki xSQ8Yzw3DIuGKy9Ijqw/QxIxx43XvxEY9TOlnWP0hdvzURuHVsnLhctHrhX8aLaNmFd2To l2ZWECdJ17wbrBMeAPN7zIgPmhYKSKpHajhyQgL24dmNnZUCc/+gAz0qNFo41Mygqsi3bP N+4yUQlDMq6iZL8I78rQAl5q3dndtNGLKqmSGk9iGw6LZNKhWt0+6I5e3gQSk62c7w7BHg UCZjaFMTociFLWxwkO/weDL5dyZB7jzfKE6CnxTuVA0wMY9fsG78tWC+ALye9g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743433083; a=rsa-sha256; cv=none; b=kfm3T/xrG5+w370JhEnvQSSel3ACLFXdYbw4sScpv774mdcgnBkVLG/DobxWJhZUSuDjPu CRNqN7GkDnFXbRCmvItTe46xNbeLLmIh6q6OqiuKBnNi0x3Norr2u5KMtYUCTRyMdxiZfm RrZW2xWtDuEh3qBL5ildO4D4Q+NyraeBNuNesK+aEXVqHr630lDfEEBxtgW/H5jjrYBAmy HH1/92+1oJDF+xMtai7WoQjJ3vL7aDuu7GSRvrMIncuvzBnrlazj8sDnUQ2dEbF9hzlykR 8vKrhsYIj/XI9PDj32HkkGR8qqpfpYdFK04Fg8hZ7cblmNoiKUNyixp+xqUG0w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433083; 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=RZJBu8yABC1EsiWzMAVJdozKHTz/qhdsPFjhGAeNPAg=; b=htgOFF3TCdZVRWzKAhAF3xtjmoFX/boODRkCWdE7u2y3mykHc+SJzD/fwyKEPaZ0Unt+ns O7C5vDY0ndAfyKIU4T0pBq7dLdI79+AiD69l5/WLQlG6RJ/5GPwfG69yiyDQnTDoSk6B4Z rfIGVgXwMYxjIyR8ch8qlb/zHbrKSo0I/lp3+nO/TbnP/KvmQG0NFn4VzazH2F8a5SQ6QF KwhsuWQz5MlzpVmaACS4oeSn3lvd09GqhvbItZMlT2MdqOEKrsxw8yBpmcIg+p3VD/Ayx/ QNH1pXRP0ZQ2DBJlvyqk5W3GVuTv8P0W+TkYXd1eH1d3mWcvdmkjqGXNCNcCWQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRDlG5qndzqZ7; Mon, 31 Mar 2025 14:58:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VEw2AK038139; Mon, 31 Mar 2025 14:58:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VEw2EV038132; Mon, 31 Mar 2025 14:58:02 GMT (envelope-from git) Date: Mon, 31 Mar 2025 14:58:02 GMT Message-Id: <202503311458.52VEw2EV038132@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 1bf46184cdc3 - main - pf: factor out duplicate code to undo nat List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1bf46184cdc35779849d909b3a483183245a0aba Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=1bf46184cdc35779849d909b3a483183245a0aba commit 1bf46184cdc35779849d909b3a483183245a0aba Author: Kristof Provost AuthorDate: 2025-03-29 09:51:57 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 12:57:14 +0000 pf: factor out duplicate code to undo nat Suggested by: markj Reviewed by: markj Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D49582 --- sys/netpfil/pf/pf.c | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index e4affb502d0e..775bd016c656 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -4263,17 +4263,12 @@ pf_send_tcp(const struct pf_krule *r, sa_family_t af, } static void -pf_return(struct pf_krule *r, struct pf_krule *nr, struct pf_pdesc *pd, - struct tcphdr *th, u_int16_t bproto_sum, u_int16_t bip_sum, - u_short *reason, int rtableid) +pf_undo_nat(struct pf_krule *nr, struct pf_pdesc *pd, uint16_t bip_sum) { - struct pf_addr * const saddr = pd->src; - struct pf_addr * const daddr = pd->dst; - /* undo NAT changes, if they have taken place */ if (nr != NULL) { - PF_ACPY(saddr, &pd->osrc, pd->af); - PF_ACPY(daddr, &pd->odst, pd->af); + PF_ACPY(pd->src, &pd->osrc, pd->af); + PF_ACPY(pd->dst, &pd->odst, pd->af); if (pd->sport) *pd->sport = pd->osport; if (pd->dport) @@ -4282,6 +4277,15 @@ pf_return(struct pf_krule *r, struct pf_krule *nr, struct pf_pdesc *pd, *pd->ip_sum = bip_sum; m_copyback(pd->m, pd->off, pd->hdrlen, pd->hdr.any); } +} + +static void +pf_return(struct pf_krule *r, struct pf_krule *nr, struct pf_pdesc *pd, + struct tcphdr *th, u_int16_t bproto_sum, u_int16_t bip_sum, + u_short *reason, int rtableid) +{ + pf_undo_nat(nr, pd, bip_sum); + if (pd->proto == IPPROTO_TCP && ((r->rule_flag & PFRULE_RETURNRST) || (r->rule_flag & PFRULE_RETURN)) && @@ -6239,18 +6243,7 @@ pf_create_state(struct pf_krule *r, struct pf_krule *nr, struct pf_krule *a, if (pd->proto == IPPROTO_TCP && (tcp_get_flags(th) & (TH_SYN|TH_ACK)) == TH_SYN && r->keep_state == PF_STATE_SYNPROXY) { pf_set_protostate(s, PF_PEER_SRC, PF_TCPS_PROXY_SRC); - /* undo NAT changes, if they have taken place */ - if (nr != NULL) { - PF_ACPY(pd->src, &pd->osrc, pd->af); - PF_ACPY(pd->dst, &pd->odst, pd->af); - if (pd->sport) - *pd->sport = pd->osport; - if (pd->dport) - *pd->dport = pd->odport; - if (pd->ip_sum) - *pd->ip_sum = bip_sum; - m_copyback(pd->m, pd->off, pd->hdrlen, pd->hdr.any); - } + pf_undo_nat(nr, pd, bip_sum); s->src.seqhi = htonl(arc4random()); /* Find mss option */ int rtid = M_GETFIB(pd->m); From nobody Mon Mar 31 15:14:04 2025 X-Original-To: dev-commits-src-main@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 4ZRF5n6ssLz5s9W3; Mon, 31 Mar 2025 15:14:05 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRF5n5qbnz48Sv; Mon, 31 Mar 2025 15:14:05 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743434045; 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: in-reply-to:in-reply-to:references:references; bh=swLPVSivDthYqMvFfmx7lHLwWQIm5WJfdT4Zr0S4lPs=; b=nykEZZCOZLVNm4lR2I+UQKRsr6NccikFVmZUGAg9/BW4Phm0nlKyQTJPeI4IN8uU6QEJXz /JMaTgB2MTyClO9dfHrWec0ftasYqA1c2/bGQY4r5rPBWXuCgjwwpe7Zx7hdhIb+iFOoFs anmdf8FNsdlZvMqc5YLpP54lx/4K8UxWnHCpQkcuNYD2aLKGKhiPp72D+jlcz+NSwNKCor BwAAzCAPgKSU6XZzDgi6wULhwCtNGZPE1Inc7CYs6iCZ3NHTatbpKdIxJGiUPl4lW6LBDP QKTgPUa0Qc4UYDX3/32u2U8utJJjsBIHg6xkEUh0tKvCioC54hefmk3OOQkt3w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743434045; a=rsa-sha256; cv=none; b=aUxLktD8VSefNwQrf72Dd2pB1/dzj1aRYxAhaPnz9QgMw0CBg1B+zrV7oeJaIGxivrxY4j Aq8epj+k584WuFSBTJeAv7xJghEj96tUVQd9tvflH9w7KL+TSdP03B7HDsJyo2l5mlNMXi m5GUhL7w1kiZprvSOZMdLNTwUem0cecQIrsLmVfPff+I8Xj8wSp1MHGcPoJYxaORILsjvL u4LEls242EjNera4DxIGAZwSGVQjr+oKnWnvFl02S6+Du02b9CXpWkPWtghk5XL/8no1Jr pT4U54R1KlxhRnAJDKxXV9OKsUArRqhh4RXBQvfpZi0Z7CmaOF4YvqyD9DXIag== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743434045; 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: in-reply-to:in-reply-to:references:references; bh=swLPVSivDthYqMvFfmx7lHLwWQIm5WJfdT4Zr0S4lPs=; b=CQ/GiX515Vb5fPCi5UocgqOfr2IQdrA88tlFjsfqWvSYhH84oMkwqG32rHzwSu2GfxdlsM yTVbG8swmQqA1nNCEFdAg4XXGy98agiZOE/kLMny8v7p4ahAr4oMMg0oIDRERtqW9tW+1+ hMPuvOh48AqPoIuuLnU3OaoBNL6TY/acbHUF8PmgQc9LQH07imRG3KcnSvr06tk28l2WCB oPcXq9Wc+L8gVPP4BhwM5BebzhHU371AmuTvBmP+UGiVJ9cY1pZ+j1QGWzZnG4N6p0fdr0 qenYBIXIGUxwklNurWFfoEo9nCchxCjMOgSdf0Z1tzbpMKxYG7sPSnp/taYmRw== Received: from [IPV6:2601:5c0:4200:b830:95ca:52bb:57ab:e333] (unknown [IPv6:2601:5c0:4200:b830:95ca:52bb:57ab:e333]) (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 4ZRF5n3tLwzymL; Mon, 31 Mar 2025 15:14:05 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: <25967c7b-79c0-4883-8b92-86e58201589b@FreeBSD.org> Date: Mon, 31 Mar 2025 11:14:04 -0400 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: e24279e0f9e2 - main - Remove mentions of ENOSYS added in d97e44784bb5 Content-Language: en-US To: Enji Cooper , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202503280240.52S2elHG075912@gitrepo.freebsd.org> From: John Baldwin In-Reply-To: <202503280240.52S2elHG075912@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 3/27/25 21:40, Enji Cooper wrote: > The branch main has been updated by ngie: > > URL: https://cgit.FreeBSD.org/src/commit/?id=e24279e0f9e28ba0c1920cb539fc357568790c0a > > commit e24279e0f9e28ba0c1920cb539fc357568790c0a > Author: Enji Cooper > AuthorDate: 2025-03-27 19:26:59 +0000 > Commit: Enji Cooper > CommitDate: 2025-03-28 02:40:07 +0000 > > Remove mentions of ENOSYS added in d97e44784bb5 > > aio(4) is a hard requirement in the kernel as of f3215338ef82. The > scenario that the patch was submitted for is no longer possible. > > This isn't a straight up revert since the previous change also addressed > some minor issues. > > PR: 190942 > Reported by: asomers > MFC after: 2 weeks > MFC with: d97e44784bb5 > Fixes: d97e44784bb5 ("aio_*(2): mention ENOSYS under ERRORS") > Differential Revision: https://reviews.freebsd.org/D49541 FWIW, I think it would have been cleaner to do a full revert and then do a followup commit applying the other changes. You had to do the followup commit anyway to bump .Dd. Not anything to change here, but something to consider in the future. -- John Baldwin From nobody Mon Mar 31 17:07:49 2025 X-Original-To: dev-commits-src-main@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 4ZRHd14g32z5sHmr; Mon, 31 Mar 2025 17:07:49 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRHd12vdpz3Vwv; Mon, 31 Mar 2025 17:07:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743440869; 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=2Tf0u3nUSwsMZN6yzQW5ur1h5t944xJani2c96Dk8Hw=; b=S3MMBlbAmXUZeREU9Pq6o75epOt1n2rnYpHhSzZ5VdYhcr3q7NsVBGqZcAQD6q20W8i6eV Ueedgv59gT0k8cBQxeFotG4HLfQeG/Y4QvTwYpwY/MlksG9DINHfBEqrcHTLUIdLVZCqmo IOqOuFUnrOtOYQwGyyRes4dg3HOWOLHvMjtR+0KM4VTFopsMuncZbawgjXZfkG/tM4eg6x b+m1u3t0QJoJ+k6sUw/LQxAgc3Q7fgqWNdyuwkU/lUVyZSTryOiN+iUQ48T4M0a0lNUOOo MmafhxSBdpMRxwUUATK2U1NSDLH3McBp68uvjRUfdV9Y+S/9LXsqJoYUEzGiOA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743440869; a=rsa-sha256; cv=none; b=kM4meQZG6xcdKPOV6qVmoy+ZFdu/yGkMYnK8Q9nsnwZ8LuanjzF3/2ASBvj+7WTwCagg5J 0IyMpSlgjQwaqekqzw3FXnrzVchGhmGgwLwd+5Yw7Cyjtx7cOerJXOr3tMd2oLGdl89ezu YjNttsoa9wta819bdVEcG8o9RBzbXxkoQvqfk+HFP9I5C3FytcdbzVy0e2vNNZ289tW9ol CZnvfdyjIc7oTSndNaQbvCt+KIu+QiZY/tv5hHZO6GGpNqlIUsKrmwxKDnEVTcG+GgIzjL oEQIVCNi6idQJzR9Um2Lbm4rkkQt9fPcVJQrdP2pV38TUvpVTgW+zlEV3pks/Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743440869; 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=2Tf0u3nUSwsMZN6yzQW5ur1h5t944xJani2c96Dk8Hw=; b=ZwXFVqKCr1Z6NlsFbWTWk/pLsI6SIDaNrvM0ggAQqBly673GBlhr6EFDWxNMQyepmN0SV9 wgcGP3HISsm/nJ2xoZnc2gAUy8SDuW2sSw7EKOkKGVXCLbAxakCm3L90fdn+8roF1mGu4d H0kjoX3opmD6TSwRE7NutuVmELZBsO88gdXTRTZnl1a14D4/OKaTHU3Yq8jfE87zvAsRk3 f/vCE5qhMlQDrlKs5nKsnqU+W7WnPFiXUIshRRPbRpqwHwSvPnfvsmjLiS4OnqTeeDnoPf CyKhR+sNMRz+vACW646GKpObRSbyUeBUm42lrUUox1+JITez1xxhMkwIxnWXCA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRHd12S5sztSw; Mon, 31 Mar 2025 17:07:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VH7nBP087086; Mon, 31 Mar 2025 17:07:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VH7ngb087083; Mon, 31 Mar 2025 17:07:49 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:07:49 GMT Message-Id: <202503311707.52VH7ngb087083@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: 6e76489098c6 - main - tcp: remove support for TCPPCAP List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6e76489098c6dc415ac3f2ae084154c3c22558ec Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=6e76489098c6dc415ac3f2ae084154c3c22558ec commit 6e76489098c6dc415ac3f2ae084154c3c22558ec Author: Michael Tuexen AuthorDate: 2025-03-31 14:55:39 +0000 Commit: Michael Tuexen CommitDate: 2025-03-31 14:55:39 +0000 tcp: remove support for TCPPCAP This feature could be used to store the last sent and received TCP packets for a TCP endpoint. There was no utility to get these packets from a live system or core. This functionality is now provided by TCP Black Box Logging, which also stores additional events. There are tools to get these traces from a live system or a core. Therefore remove TCPPCAP to avoid maintaining it, when it is not used anymore. Reviewed by: rrs, rscheff, Peter Lei, glebiu Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D49589 --- ObsoleteFiles.inc | 3 + sys/conf/NOTES | 4 - sys/conf/files | 2 - sys/conf/options | 1 - sys/netinet/tcp.h | 4 +- sys/netinet/tcp_input.c | 7 - sys/netinet/tcp_output.c | 12 - sys/netinet/tcp_pcap.c | 452 --------------------------------- sys/netinet/tcp_pcap.h | 39 --- sys/netinet/tcp_subr.c | 24 -- sys/netinet/tcp_usrreq.c | 33 --- sys/netinet/tcp_var.h | 4 - tools/build/test-includes/badfiles.inc | 1 - usr.sbin/tcpsso/tcpsso.c | 2 - 14 files changed, 5 insertions(+), 583 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 850133db608a..14f54d75bc1d 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -51,6 +51,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20250331: removal of TCPPCAP +OLD_FILES+=usr/include/netinet/tcp_pcap.h + # 20250310: caroot bundle updated OLD_FILES+=usr/share/certs/trusted/Entrust_Root_Certification_Authority_-_G4.pem OLD_FILES+=usr/share/certs/trusted/SecureSign_RootCA11.pem diff --git a/sys/conf/NOTES b/sys/conf/NOTES index fc32acd681b3..081cb985c7fe 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -1025,9 +1025,6 @@ device dummymbuf # # PF_DEFAULT_TO_DROP causes the default pf(4) rule to deny everything. # -# TCPPCAP enables code which keeps the last n packets sent and received -# on a TCP socket. -# # TCP_BLACKBOX enables enhanced TCP event logging. # # TCP_HHOOK enables the hhook(9) framework hooks for the TCP stack. @@ -1050,7 +1047,6 @@ options IPFILTER_LOOKUP #ipfilter pools options IPFILTER_DEFAULT_BLOCK #block all packets by default options IPSTEALTH #support for stealth forwarding options PF_DEFAULT_TO_DROP #drop everything by default -options TCPPCAP options TCP_BLACKBOX options TCP_HHOOK options SOCKET_HHOOK diff --git a/sys/conf/files b/sys/conf/files index 3be4c1d8e3dd..2f4b7126a9cd 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -4389,8 +4389,6 @@ netinet/tcp_output.c optional inet | inet6 netinet/tcp_offload.c optional tcp_offload inet | tcp_offload inet6 netinet/tcp_hpts.c optional tcphpts inet | tcphpts inet6 netinet/tcp_ratelimit.c optional ratelimit inet | ratelimit inet6 -netinet/tcp_pcap.c optional inet tcppcap | inet6 tcppcap \ - compile-with "${NORMAL_C} ${NO_WNONNULL}" netinet/tcp_reass.c optional inet | inet6 netinet/tcp_sack.c optional inet | inet6 netinet/tcp_stacks/bbr.c optional inet tcphpts tcp_bbr | inet6 tcphpts tcp_bbr \ diff --git a/sys/conf/options b/sys/conf/options index c467dc9995c2..92f3c310c77b 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -479,7 +479,6 @@ ROUTETABLES opt_route.h FIB_ALGO opt_route.h RSS opt_rss.h SLIP_IFF_OPTS opt_slip.h -TCPPCAP opt_global.h SIFTR TCP_BLACKBOX opt_global.h TCP_HHOOK opt_global.h diff --git a/sys/netinet/tcp.h b/sys/netinet/tcp.h index 69a8116a2201..94d41ff67836 100644 --- a/sys/netinet/tcp.h +++ b/sys/netinet/tcp.h @@ -224,8 +224,8 @@ __tcp_set_flags(struct tcphdr *th, uint16_t flags) #define TCP_KEEPINTVL 512 /* L,N interval between keepalives */ #define TCP_KEEPCNT 1024 /* L,N number of keepalives before close */ #define TCP_FASTOPEN 1025 /* enable TFO / was created via TFO */ -#define TCP_PCAP_OUT 2048 /* number of output packets to keep */ -#define TCP_PCAP_IN 4096 /* number of input packets to keep */ +/* unused 2048 was TCP_PCAP_OUT */ +/* unused 4096 was TCP_PCAP_IN */ #define TCP_FUNCTION_BLK 8192 /* Set the tcp function pointers to the specified stack */ #define TCP_FUNCTION_ALIAS 8193 /* Get the current tcp function pointer name alias */ /* Options for Rack and BBR */ diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 2fc1e0deea16..29a6b431f311 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -112,9 +112,6 @@ #include #include #include -#ifdef TCPPCAP -#include -#endif #include #ifdef TCP_OFFLOAD #include @@ -1546,10 +1543,6 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th, KASSERT(tp->t_state != TCPS_TIME_WAIT, ("%s: TCPS_TIME_WAIT", __func__)); -#ifdef TCPPCAP - /* Save segment, if requested. */ - tcp_pcap_add(th, m, &(tp->t_inpkts)); -#endif TCP_LOG_EVENT(tp, th, &so->so_rcv, &so->so_snd, TCP_LOG_IN, 0, tlen, NULL, true); diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c index 135e7d8493e2..bc5b42ee6f2c 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -85,9 +85,6 @@ #include #include #include -#ifdef TCPPCAP -#include -#endif #ifdef TCP_OFFLOAD #include #endif @@ -1466,10 +1463,6 @@ send: TCP_PROBE5(send, NULL, tp, ip6, tp, th); -#ifdef TCPPCAP - /* Save packet, if requested. */ - tcp_pcap_add(th, m, &(tp->t_outpkts)); -#endif /* TODO: IPv6 IP6TOS_ECT bit on */ error = ip6_output(m, inp->in6p_outputopts, &inp->inp_route6, @@ -1512,11 +1505,6 @@ send: TCP_PROBE5(send, NULL, tp, ip, tp, th); -#ifdef TCPPCAP - /* Save packet, if requested. */ - tcp_pcap_add(th, m, &(tp->t_outpkts)); -#endif - error = ip_output(m, inp->inp_options, &inp->inp_route, ((so->so_options & SO_DONTROUTE) ? IP_ROUTETOIF : 0), 0, inp); diff --git a/sys/netinet/tcp_pcap.c b/sys/netinet/tcp_pcap.c deleted file mode 100644 index f26287bd7f03..000000000000 --- a/sys/netinet/tcp_pcap.c +++ /dev/null @@ -1,452 +0,0 @@ -/*- - * Copyright (c) 2015 - * Jonathan Looney. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define M_LEADINGSPACE_NOWRITE(m) \ - ((m)->m_data - M_START(m)) - -int tcp_pcap_aggressive_free = 1; -static int tcp_pcap_clusters_referenced_cur = 0; -static int tcp_pcap_clusters_referenced_max = 0; - -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_aggressive_free, - CTLFLAG_RW, &tcp_pcap_aggressive_free, 0, - "Free saved packets when the memory system comes under pressure"); -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_clusters_referenced_cur, - CTLFLAG_RD, &tcp_pcap_clusters_referenced_cur, 0, - "Number of clusters currently referenced on TCP PCAP queues"); -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_clusters_referenced_max, - CTLFLAG_RW, &tcp_pcap_clusters_referenced_max, 0, - "Maximum number of clusters allowed to be referenced on TCP PCAP " - "queues"); - -static int tcp_pcap_alloc_reuse_ext = 0; -static int tcp_pcap_alloc_reuse_mbuf = 0; -static int tcp_pcap_alloc_new_mbuf = 0; -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_alloc_reuse_ext, - CTLFLAG_RD, &tcp_pcap_alloc_reuse_ext, 0, - "Number of mbufs with external storage reused for the TCP PCAP " - "functionality"); -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_alloc_reuse_mbuf, - CTLFLAG_RD, &tcp_pcap_alloc_reuse_mbuf, 0, - "Number of mbufs with internal storage reused for the TCP PCAP " - "functionality"); -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_alloc_new_mbuf, - CTLFLAG_RD, &tcp_pcap_alloc_new_mbuf, 0, - "Number of new mbufs allocated for the TCP PCAP functionality"); - -VNET_DEFINE(int, tcp_pcap_packets) = 0; -#define V_tcp_pcap_packets VNET(tcp_pcap_packets) -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_packets, - CTLFLAG_VNET | CTLFLAG_RW, &VNET_NAME(tcp_pcap_packets), 0, - "Default number of packets saved per direction per TCPCB"); - -/* Initialize the values. */ -static void -tcp_pcap_max_set(void) -{ - - tcp_pcap_clusters_referenced_max = nmbclusters / 4; -} - -void -tcp_pcap_init(void) -{ - - tcp_pcap_max_set(); - EVENTHANDLER_REGISTER(nmbclusters_change, tcp_pcap_max_set, - NULL, EVENTHANDLER_PRI_ANY); -} - -/* - * If we are below the maximum allowed cluster references, - * increment the reference count and return TRUE. Otherwise, - * leave the reference count alone and return FALSE. - */ -static __inline bool -tcp_pcap_take_cluster_reference(void) -{ - if (atomic_fetchadd_int(&tcp_pcap_clusters_referenced_cur, 1) >= - tcp_pcap_clusters_referenced_max) { - atomic_add_int(&tcp_pcap_clusters_referenced_cur, -1); - return FALSE; - } - return TRUE; -} - -/* - * For all the external entries in m, apply the given adjustment. - * This can be used to adjust the counter when an mbuf chain is - * copied or freed. - */ -static __inline void -tcp_pcap_adj_cluster_reference(struct mbuf *m, int adj) -{ - while (m) { - if (m->m_flags & M_EXT) - atomic_add_int(&tcp_pcap_clusters_referenced_cur, adj); - - m = m->m_next; - } -} - -/* - * Free all mbufs in a chain, decrementing the reference count as - * necessary. - * - * Functions in this file should use this instead of m_freem() when - * they are freeing mbuf chains that may contain clusters that were - * already included in tcp_pcap_clusters_referenced_cur. - */ -static void -tcp_pcap_m_freem(struct mbuf *mb) -{ - while (mb != NULL) { - if (mb->m_flags & M_EXT) - atomic_subtract_int(&tcp_pcap_clusters_referenced_cur, - 1); - mb = m_free(mb); - } -} - -/* - * Copy data from m to n, where n cannot fit all the data we might - * want from m. - * - * Prioritize data like this: - * 1. TCP header - * 2. IP header - * 3. Data - */ -static void -tcp_pcap_copy_bestfit(struct tcphdr *th, struct mbuf *m, struct mbuf *n) -{ - struct mbuf *m_cur = m; - int bytes_to_copy=0, trailing_data, skip=0, tcp_off; - - /* Below, we assume these will be non-NULL. */ - KASSERT(th, ("%s: called with th == NULL", __func__)); - KASSERT(m, ("%s: called with m == NULL", __func__)); - KASSERT(n, ("%s: called with n == NULL", __func__)); - - /* We assume this initialization occurred elsewhere. */ - KASSERT(n->m_len == 0, ("%s: called with n->m_len=%d (expected 0)", - __func__, n->m_len)); - KASSERT(n->m_data == M_START(n), - ("%s: called with n->m_data != M_START(n)", __func__)); - - /* - * Calculate the size of the TCP header. We use this often - * enough that it is worth just calculating at the start. - */ - tcp_off = th->th_off << 2; - - /* Trim off leading empty mbufs. */ - while (m && m->m_len == 0) - m = m->m_next; - - if (m) { - m_cur = m; - } - else { - /* - * No data? Highly unusual. We would expect to at - * least see a TCP header in the mbuf. - * As we have a pointer to the TCP header, I guess - * we should just copy that. (???) - */ -fallback: - bytes_to_copy = tcp_off; - if (bytes_to_copy > M_SIZE(n)) - bytes_to_copy = M_SIZE(n); - bcopy(th, n->m_data, bytes_to_copy); - n->m_len = bytes_to_copy; - return; - } - - /* - * Find TCP header. Record the total number of bytes up to, - * and including, the TCP header. - */ - while (m_cur) { - if ((caddr_t) th >= (caddr_t) m_cur->m_data && - (caddr_t) th < (caddr_t) (m_cur->m_data + m_cur->m_len)) - break; - bytes_to_copy += m_cur->m_len; - m_cur = m_cur->m_next; - } - if (m_cur) - bytes_to_copy += (caddr_t) th - (caddr_t) m_cur->m_data; - else - goto fallback; - bytes_to_copy += tcp_off; - - /* - * If we already want to copy more bytes than we can hold - * in the destination mbuf, skip leading bytes and copy - * what we can. - * - * Otherwise, consider trailing data. - */ - if (bytes_to_copy > M_SIZE(n)) { - skip = bytes_to_copy - M_SIZE(n); - bytes_to_copy = M_SIZE(n); - } - else { - /* - * Determine how much trailing data is in the chain. - * We start with the length of this mbuf (the one - * containing th) and subtract the size of the TCP - * header (tcp_off) and the size of the data prior - * to th (th - m_cur->m_data). - * - * This *should not* be negative, as the TCP code - * should put the whole TCP header in a single - * mbuf. But, it isn't a problem if it is. We will - * simple work off our negative balance as we look - * at subsequent mbufs. - */ - trailing_data = m_cur->m_len - tcp_off; - trailing_data -= (caddr_t) th - (caddr_t) m_cur->m_data; - m_cur = m_cur->m_next; - while (m_cur) { - trailing_data += m_cur->m_len; - m_cur = m_cur->m_next; - } - if ((bytes_to_copy + trailing_data) > M_SIZE(n)) - bytes_to_copy = M_SIZE(n); - else - bytes_to_copy += trailing_data; - } - - m_copydata(m, skip, bytes_to_copy, n->m_data); - n->m_len = bytes_to_copy; -} - -void -tcp_pcap_add(struct tcphdr *th, struct mbuf *m, struct mbufq *queue) -{ - struct mbuf *n = NULL, *mhead; - - KASSERT(th, ("%s: called with th == NULL", __func__)); - KASSERT(m, ("%s: called with m == NULL", __func__)); - KASSERT(queue, ("%s: called with queue == NULL", __func__)); - - /* We only care about data packets. */ - while (m && m->m_type != MT_DATA) - m = m->m_next; - - /* We only need to do something if we still have an mbuf. */ - if (!m) - return; - - /* If we are not saving mbufs, return now. */ - if (queue->mq_maxlen == 0) - return; - - /* - * Check to see if we will need to recycle mbufs. - * - * If we need to get rid of mbufs to stay below - * our packet count, try to reuse the mbuf. Once - * we already have a new mbuf (n), then we can - * simply free subsequent mbufs. - * - * Note that most of the logic in here is to deal - * with the reuse. If we are fine with constant - * mbuf allocs/deallocs, we could ditch this logic. - * But, it only seems to make sense to reuse - * mbufs we already have. - */ - while (mbufq_full(queue)) { - mhead = mbufq_dequeue(queue); - - if (n) { - tcp_pcap_m_freem(mhead); - } - else { - /* - * If this held an external cluster, try to - * detach the cluster. But, if we held the - * last reference, go through the normal - * free-ing process. - */ - if (mhead->m_flags & M_EXTPG) { - /* Don't mess around with these. */ - tcp_pcap_m_freem(mhead); - continue; - } else if (mhead->m_flags & M_EXT) { - switch (mhead->m_ext.ext_type) { - case EXT_SFBUF: - /* Don't mess around with these. */ - tcp_pcap_m_freem(mhead); - continue; - default: - if (atomic_fetchadd_int( - mhead->m_ext.ext_cnt, -1) == 1) - { - /* - * We held the last reference - * on this cluster. Restore - * the reference count and put - * it back in the pool. - */ - *(mhead->m_ext.ext_cnt) = 1; - tcp_pcap_m_freem(mhead); - continue; - } - /* - * We were able to cleanly free the - * reference. - */ - atomic_subtract_int( - &tcp_pcap_clusters_referenced_cur, - 1); - tcp_pcap_alloc_reuse_ext++; - break; - } - } else { - tcp_pcap_alloc_reuse_mbuf++; - } - - n = mhead; - tcp_pcap_m_freem(n->m_next); - m_init(n, M_NOWAIT, MT_DATA, 0); - } - } - - /* Check to see if we need to get a new mbuf. */ - if (!n) { - if (!(n = m_get(M_NOWAIT, MT_DATA))) - return; - tcp_pcap_alloc_new_mbuf++; - } - - /* - * What are we dealing with? If a cluster, attach it. Otherwise, - * try to copy the data from the beginning of the mbuf to the - * end of data. (There may be data between the start of the data - * area and the current data pointer. We want to get this, because - * it may contain header information that is useful.) - * In cases where that isn't possible, settle for what we can - * get. - */ - if ((m->m_flags & (M_EXT | M_EXTPG)) && - tcp_pcap_take_cluster_reference()) { - n->m_data = m->m_data; - n->m_len = m->m_len; - mb_dupcl(n, m); - } - else if (((m->m_data + m->m_len) - M_START(m)) <= M_SIZE(n)) { - /* - * At this point, n is guaranteed to be a normal mbuf - * with no cluster and no packet header. Because the - * logic in this code block requires this, the assert - * is here to catch any instances where someone - * changes the logic to invalidate that assumption. - */ - KASSERT((n->m_flags & (M_EXT | M_PKTHDR)) == 0, - ("%s: Unexpected flags (%#x) for mbuf", - __func__, n->m_flags)); - n->m_data = n->m_dat + M_LEADINGSPACE_NOWRITE(m); - n->m_len = m->m_len; - if (m->m_flags & M_EXTPG) - m_copydata(m, 0, m->m_len, n->m_data); - else - bcopy(M_START(m), n->m_dat, - m->m_len + M_LEADINGSPACE_NOWRITE(m)); - } - else { - /* - * This is the case where we need to "settle for what - * we can get". The most probable way to this code - * path is that we've already taken references to the - * maximum number of mbuf clusters we can, and the data - * is too long to fit in an mbuf's internal storage. - * Try for a "best fit". - */ - tcp_pcap_copy_bestfit(th, m, n); - - /* Don't try to get additional data. */ - goto add_to_queue; - } - - if (m->m_next) { - n->m_next = m_copym(m->m_next, 0, M_COPYALL, M_NOWAIT); - tcp_pcap_adj_cluster_reference(n->m_next, 1); - } - -add_to_queue: - /* Add the new mbuf to the list. */ - if (mbufq_enqueue(queue, n)) { - /* This shouldn't happen. If INVARIANTS is defined, panic. */ - KASSERT(0, ("%s: mbufq was unexpectedly full!", __func__)); - tcp_pcap_m_freem(n); - } -} - -void -tcp_pcap_drain(struct mbufq *queue) -{ - struct mbuf *m; - while ((m = mbufq_dequeue(queue))) - tcp_pcap_m_freem(m); -} - -void -tcp_pcap_tcpcb_init(struct tcpcb *tp) -{ - mbufq_init(&(tp->t_inpkts), V_tcp_pcap_packets); - mbufq_init(&(tp->t_outpkts), V_tcp_pcap_packets); -} - -void -tcp_pcap_set_sock_max(struct mbufq *queue, int newval) -{ - queue->mq_maxlen = newval; - while (queue->mq_len > queue->mq_maxlen) - tcp_pcap_m_freem(mbufq_dequeue(queue)); -} - -int -tcp_pcap_get_sock_max(struct mbufq *queue) -{ - return queue->mq_maxlen; -} diff --git a/sys/netinet/tcp_pcap.h b/sys/netinet/tcp_pcap.h deleted file mode 100644 index 8250c06d4ce0..000000000000 --- a/sys/netinet/tcp_pcap.h +++ /dev/null @@ -1,39 +0,0 @@ -/*- - * Copyright (c) 2015 - * Jonathan Looney. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef _NETINET_TCP_PCAP_H_ -#define _NETINET_TCP_PCAP_H_ - -void tcp_pcap_init(void); -void tcp_pcap_add(struct tcphdr *th, struct mbuf *m, struct mbufq *queue); -void tcp_pcap_drain(struct mbufq *queue); -void tcp_pcap_tcpcb_init(struct tcpcb *tp); -void tcp_pcap_set_sock_max(struct mbufq *queue, int newval); -int tcp_pcap_get_sock_max(struct mbufq *queue); - -extern int tcp_pcap_aggressive_free; - -#endif /* _NETINET_TCP_PCAP_H_ */ diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index f6317815521d..34964ed8283c 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -109,9 +109,6 @@ #include #include #include -#ifdef TCPPCAP -#include -#endif #ifdef TCP_OFFLOAD #include #endif @@ -1415,13 +1412,6 @@ tcp_drain(void *ctx __unused, int flags __unused) tcp_clean_sackreport(tcpb); #ifdef TCP_BLACKBOX tcp_log_drain(tcpb); -#endif -#ifdef TCPPCAP - if (tcp_pcap_aggressive_free) { - /* Free the TCP PCAP queues. */ - tcp_pcap_drain(&(tcpb->t_inpkts)); - tcp_pcap_drain(&(tcpb->t_outpkts)); - } #endif } } @@ -1535,9 +1525,6 @@ tcp_init(void *arg __unused) tcp_bad_csums = counter_u64_alloc(M_WAITOK); tcp_pacing_failures = counter_u64_alloc(M_WAITOK); tcp_dgp_failures = counter_u64_alloc(M_WAITOK); -#ifdef TCPPCAP - tcp_pcap_init(); -#endif hashsize = tcp_tcbhashsize; if (hashsize == 0) { @@ -2337,12 +2324,6 @@ tcp_newtcpcb(struct inpcb *inp, struct tcpcb *listening_tcb) * which may match an IPv4-mapped IPv6 address. */ inp->inp_ip_ttl = V_ip_defttl; -#ifdef TCPPCAP - /* - * Init the TCP PCAP queues. - */ - tcp_pcap_tcpcb_init(tp); -#endif #ifdef TCP_BLACKBOX /* Initialize the per-TCPCB log data. */ tcp_log_tcpcbinit(tp); @@ -2419,11 +2400,6 @@ tcp_discardcb(struct tcpcb *tp) if (tp->t_flags & TF_TOE) tcp_offload_detach(tp); #endif -#ifdef TCPPCAP - /* Free the TCP PCAP queues. */ - tcp_pcap_drain(&(tp->t_inpkts)); - tcp_pcap_drain(&(tp->t_outpkts)); -#endif /* Allow the CC algorithm to clean up after itself. */ if (CC_ALGO(tp)->cb_destroy != NULL) diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c index 13e66f758d45..fbc204097b25 100644 --- a/sys/netinet/tcp_usrreq.c +++ b/sys/netinet/tcp_usrreq.c @@ -95,9 +95,6 @@ #include #include #include -#ifdef TCPPCAP -#include -#endif #ifdef TCP_OFFLOAD #include #endif @@ -2342,26 +2339,6 @@ unlock_and_done: TP_MAXIDLE(tp)); goto unlock_and_done; -#ifdef TCPPCAP - case TCP_PCAP_OUT: - case TCP_PCAP_IN: - INP_WUNLOCK(inp); - error = sooptcopyin(sopt, &optval, sizeof optval, - sizeof optval); - if (error) - return (error); - - INP_WLOCK_RECHECK(inp); - if (optval >= 0) - tcp_pcap_set_sock_max( - (sopt->sopt_name == TCP_PCAP_OUT) ? - &(tp->t_outpkts) : &(tp->t_inpkts), - optval); - else - error = EINVAL; - goto unlock_and_done; -#endif - case TCP_FASTOPEN: { struct tcp_fastopen tfo_optval; @@ -2592,16 +2569,6 @@ unhold: INP_WUNLOCK(inp); error = sooptcopyout(sopt, &ui, sizeof(ui)); break; -#ifdef TCPPCAP - case TCP_PCAP_OUT: - case TCP_PCAP_IN: - optval = tcp_pcap_get_sock_max( - (sopt->sopt_name == TCP_PCAP_OUT) ? - &(tp->t_outpkts) : &(tp->t_inpkts)); - INP_WUNLOCK(inp); - error = sooptcopyout(sopt, &optval, sizeof optval); - break; -#endif case TCP_FASTOPEN: optval = tp->t_flags & TF_FASTOPEN; INP_WUNLOCK(inp); diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h index 31663ed48f81..5be024ededc7 100644 --- a/sys/netinet/tcp_var.h +++ b/sys/netinet/tcp_var.h @@ -499,10 +499,6 @@ struct tcpcb { uint64_t tcp_cnt_counters[TCP_NUM_CNT_COUNTERS]; uint64_t tcp_proc_time[TCP_NUM_CNT_COUNTERS]; #endif -#ifdef TCPPCAP - struct mbufq t_inpkts; /* List of saved input packets. */ - struct mbufq t_outpkts; /* List of saved output packets. */ -#endif }; #endif /* _KERNEL || _WANT_TCPCB */ diff --git a/tools/build/test-includes/badfiles.inc b/tools/build/test-includes/badfiles.inc index 5f088d3862aa..1e5182e40911 100644 --- a/tools/build/test-includes/badfiles.inc +++ b/tools/build/test-includes/badfiles.inc @@ -280,7 +280,6 @@ BADHDRS= \ netinet/tcp_log_buf.h \ netinet/tcp_lro.h \ netinet/tcp_offload.h \ - netinet/tcp_pcap.h \ netinet/tcp_ratelimit.h \ netinet/tcp_var.h \ netinet/tcpip.h \ diff --git a/usr.sbin/tcpsso/tcpsso.c b/usr.sbin/tcpsso/tcpsso.c index 95773fe5a4d7..14ea71f9ebbd 100644 --- a/usr.sbin/tcpsso/tcpsso.c +++ b/usr.sbin/tcpsso/tcpsso.c @@ -193,8 +193,6 @@ static struct so_name so_names[] = { tcp_entry(TCP_KEEPINTVL), /* unsigned int */ tcp_entry(TCP_KEEPINIT), /* unsigned int */ tcp_entry(TCP_KEEPCNT), /* unsigned int */ - tcp_entry(TCP_PCAP_OUT), /* int */ - tcp_entry(TCP_PCAP_IN), /* int */ tcp_entry(TCP_LOG), /* int */ tcp_entry(TCP_LOGID), /* char * */ tcp_entry(TCP_LOGDUMP), /* char * */ From nobody Mon Mar 31 19:00:12 2025 X-Original-To: dev-commits-src-main@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 4ZRL6h71kQz5sQdZ; Mon, 31 Mar 2025 19:00: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRL6h6HBfz3Bnx; Mon, 31 Mar 2025 19:00:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743447612; 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=I3f+pyWisSaOwDmGczje9/ufXV75Dv+FKBE8+JYrVO8=; b=nNrfEanti2qs50qNhJMDrzeDUKvM/aPuc+rzQSebq5JuZ2qTrj1dPRbS9M8H2p894AMGTK 2RSz0g+gqLiql+rYbGgRSlhnny+MftwuH6hHazKf64yC2FNmVbtF5G9KSuRBe0I1kPdysQ FHn1PLGaSb2yAN1lC5QvxRPVHitowhfobzo9BXJ8K6zcNWBmoY97UzdiWtc79a8apCDj/1 vlYSAFufL8fP92HeUwq4CaEWvsB68XmacWFOnYOpgZIof14wfqbodlM19mOYGCK6/pDoeK aHQoH/l5bitKRB64M3e3imgnNP+YL8Urd+5zVvZelK9xs3R1Q/SlNtffIuM4bA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743447612; a=rsa-sha256; cv=none; b=vzwB3lWrTW5mDJdXxb0vYJ2uRZD5eNuf2DIhMymYXT0omqthVM1jyr8lssGK0PfDE/l09V XZaYj7OxGY6l8BdrAJUSKxmxhvDU1FQofIAKBPpMxVijSTU6ajAnF7oUk1MbaE+/6bvDmX B+hVMXK1rLUN30KA3MWL6CWngMhInG0Qkh/atZqLv9Uusufw8fk9mHsqNlolutMrURe3HM 4ys0BkciluW5XcRlCeMC1qZdElzSvFwBGzLczdQQOBGYfgjYtJer0NATssnzFdADeD927k 7QnaDRFzape+k4AtoXF4XKP4WeRFxYKs8PAG+xVLMGSGfZYew39V8aByG4V7cA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743447612; 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=I3f+pyWisSaOwDmGczje9/ufXV75Dv+FKBE8+JYrVO8=; b=xMogji7skazlr8vEDAynfWSuN5qAifC+lY31D7UGsoZCrDvYCP460EIQfEjpxbwW/qC1qH 7XwNR5j5Y8zDipPiGVX5EKPZpIdLSfoJmzL4ZgrJyuRrzs+ubYTtpQViO7lsEHl5BTT8Dy l2ofGVG43zvlaMokHVCQgIEgc8+XgXHO+CjiY2xMYysru0I469rPfNb/swYk3u30r+ob/E xV10GzctQO4zv11GgevhZxDOfpV8YfNcvJaqJYsC2UguwE/anzavCsDQHgJ8qLh02FSXzE MXwu28cAb96OKcW1RoK2XrDJo+I2lzhin1awt1LvusU5w5n+NJXXN+efm6fGeA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRL6h572LzxF6; Mon, 31 Mar 2025 19:00:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VJ0CFX001193; Mon, 31 Mar 2025 19:00:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VJ0CmD001184; Mon, 31 Mar 2025 19:00:12 GMT (envelope-from git) Date: Mon, 31 Mar 2025 19:00:12 GMT Message-Id: <202503311900.52VJ0CmD001184@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: f0adc907fc7d - main - mlx5en: sync channel close with the rq completion processing List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: f0adc907fc7d3eebfc692fd5f4987c97e61b103d Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=f0adc907fc7d3eebfc692fd5f4987c97e61b103d commit f0adc907fc7d3eebfc692fd5f4987c97e61b103d Author: Konstantin Belousov AuthorDate: 2025-03-04 07:45:17 +0000 Commit: Konstantin Belousov CommitDate: 2025-03-31 18:59:50 +0000 mlx5en: sync channel close with the rq completion processing Without the wait, mlx5e_destroy_rq() might free mbuf that is passed up to the network stack on receive in mlx5e_poll_rx_cq(). Sponsored by: NVidia networking MFC after: 1 week --- sys/dev/mlx5/mlx5_en/en.h | 1 + sys/dev/mlx5/mlx5_en/mlx5_en_main.c | 11 +++++++++++ sys/dev/mlx5/mlx5_en/mlx5_en_rx.c | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/sys/dev/mlx5/mlx5_en/en.h b/sys/dev/mlx5/mlx5_en/en.h index fdc12381e91b..f59902be226a 100644 --- a/sys/dev/mlx5/mlx5_en/en.h +++ b/sys/dev/mlx5/mlx5_en/en.h @@ -772,6 +772,7 @@ struct mlx5e_rq { struct mlx5e_cq cq; struct lro_ctrl lro; volatile int enabled; + int processing; int ix; /* Dynamic Interrupt Moderation */ diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c index 2c83492bdaa9..c3539cf8b8f2 100644 --- a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c +++ b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c @@ -1470,6 +1470,17 @@ static void mlx5e_close_rq_wait(struct mlx5e_rq *rq) { + mtx_lock(&rq->mtx); + MPASS(rq->enabled == 0); + while (rq->processing > 0) { + /* + * No wakeup, relying on timeout. + * Use msleep_sbt() since msleep() conflicts with linuxkpi. + */ + msleep_sbt(&rq->processing, &rq->mtx, 0, "mlx5ecrq", + tick_sbt * hz, 0, C_HARDCLOCK); + } + mtx_unlock(&rq->mtx); mlx5e_disable_rq(rq); mlx5e_close_cq(&rq->cq); cancel_work_sync(&rq->dim.work); diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c b/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c index 3aef10109720..6b53db6fea23 100644 --- a/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c +++ b/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c @@ -697,6 +697,9 @@ mlx5e_rx_cq_comp(struct mlx5_core_cq *mcq, struct mlx5_eqe *eqe __unused) mtx_unlock(&c->iq.lock); mtx_lock(&rq->mtx); + if (rq->enabled == 0) + goto out; + rq->processing++; /* * Polling the entire CQ without posting new WQEs results in @@ -717,6 +720,8 @@ mlx5e_rx_cq_comp(struct mlx5_core_cq *mcq, struct mlx5_eqe *eqe __unused) net_dim(&rq->dim, rq->stats.packets, rq->stats.bytes); mlx5e_cq_arm(&rq->cq, MLX5_GET_DOORBELL_LOCK(&rq->channel->priv->doorbell_lock)); tcp_lro_flush_all(&rq->lro); + rq->processing--; +out: mtx_unlock(&rq->mtx); for (int j = 0; j != MLX5E_MAX_TX_NUM_TC; j++) { From nobody Mon Mar 31 19:14:38 2025 X-Original-To: dev-commits-src-main@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 4ZRLRd2lshz5sRPY for ; Mon, 31 Mar 2025 19:14:53 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 4ZRLRc29rxz3MJQ for ; Mon, 31 Mar 2025 19:14:52 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=freebsd.org (policy=none); spf=pass (mx1.freebsd.org: domain of jrtc27@jrtc27.com designates 209.85.128.45 as permitted sender) smtp.mailfrom=jrtc27@jrtc27.com Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-43cfb6e9031so43880325e9.0 for ; Mon, 31 Mar 2025 12:14:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743448490; x=1744053290; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lpizo2OwMi+XLl0pQ13vqszssQcb/KqimIYqrBm2c4s=; b=QCXqPWyRjCop3qdxyJgJoFvM4FjVopClxU+JNhfHqR98W6/JHrfPQItULigrWnjKbA OU4ylJk+3f/hOBYLrML4tooW4XuxCr3MrjFaI12/ureCLVI2wY8G7JFQhR4CtRPS2CyX Bf4Bo0Xztb3iKELoykWdmMq9u0oGnCgcgJfAtxmLQjFmiMLDSUiEiHKQudvEjA4hYq/5 +/PqZgdtyeXiEVUPpge47Uq9m6WkRmuDgv19f4NnjMnYq514vy6O0oW76LGX2G2HLT2V vArEZ9sUtBfHt1RUSH+bwVzHdAFszhIKPnfgAw5IrI4FnIaLsC7a4kdIJ+AVymajFGzM uZZQ== X-Forwarded-Encrypted: i=1; AJvYcCVQ+F+WrP/Iq7Id3XPoklucfT8ntUObQxR+xPRc2SFP+Ep1wgUyylneKoK7TcVNhs8weQ4nctghbWsWqDKx8ZF0ntnINQ==@freebsd.org X-Gm-Message-State: AOJu0Yxe6K3cmyggCpzPJMM+h+QheJn97yD+UfUknj/7p4tytLko/EaW KbpP79CR9ZDh6kzZTGJHVO5hNREXIZynDKDA+ugeujQ9n3TumFf+LRkHwj9Oyixj1ShVN7HUlpx e X-Gm-Gg: ASbGncu1zTvO/IjOGPtEac9CuFemNEZqclsTFiO9t6GL/j2w564Hok5yUvBX1U+xBDC Lv8+PRGKX7c5VUP09BCxxqkyZpq3Pc6JEGx1qwuKiJMQKqZOHUO9XlbPUnBKdHA1ydUSKC52HuB R9Cycpw4bOUevByhMhhADknbP2TRi1uxXYn8/Mgdc2fc9eG/9VlckBAOaUlmqKrOd33u+b4DehM 0cjwjFLVprpUPL8WqCtOUxEcNRVNkRj/i+KLF22E76M6ivQautwo8Xt4VqQhHo44NHzlJ88YntG wwDr4Y5LmGdrFHhWjCXz/WVUCUH14q/1pW1LyCcspptk6boQrHT8b9HcHNXCzEg2iD3Mjw== X-Google-Smtp-Source: AGHT+IHOhkc2kYVm9Wjh0IIAq3Zv6g7qTx5Huz6nefadVxaHauRYfLGWOMGTRsRC+0cJPzqyaqKYig== X-Received: by 2002:a05:600c:34c1:b0:43d:b85:1831 with SMTP id 5b1f17b1804b1-43dabe240cemr111495185e9.0.1743448490375; Mon, 31 Mar 2025 12:14:50 -0700 (PDT) Received: from smtpclient.apple ([131.111.5.201]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d82e6a532sm172788125e9.9.2025.03.31.12.14.49 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 31 Mar 2025 12:14:49 -0700 (PDT) Content-Type: text/plain; charset=us-ascii List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.300.87.4.3\)) Subject: Re: git: 0e33c2e6df7a - main - pci: Only re-route IRQs based on firmware on x86 From: Jessica Clarke In-Reply-To: <202503292018.52TKI7va048377@gitrepo.freebsd.org> Date: Mon, 31 Mar 2025 20:14:38 +0100 Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Content-Transfer-Encoding: quoted-printable Message-Id: References: <202503292018.52TKI7va048377@gitrepo.freebsd.org> To: Colin Percival X-Mailer: Apple Mail (2.3826.300.87.4.3) X-Spamd-Result: default: False [3.40 / 15.00]; NEURAL_SPAM_LONG(1.00)[1.000]; NEURAL_SPAM_MEDIUM(0.84)[0.839]; RBL_SENDERSCORE_REPUT_7(0.50)[209.85.128.45:from]; MV_CASE(0.50)[]; FORGED_SENDER(0.30)[jrtc27@freebsd.org,jrtc27@jrtc27.com]; NEURAL_SPAM_SHORT(0.16)[0.158]; MIME_GOOD(-0.10)[text/plain]; DMARC_POLICY_SOFTFAIL(0.10)[freebsd.org : SPF not aligned (relaxed), No valid DKIM,none]; BAD_REP_POLICIES(0.10)[]; TO_DN_EQ_ADDR_SOME(0.00)[]; TO_DN_SOME(0.00)[]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; FREEFALL_USER(0.00)[jrtc27]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; TO_MATCH_ENVRCPT_SOME(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[dev-commits-src-main@freebsd.org]; RCVD_COUNT_TWO(0.00)[2]; FROM_NEQ_ENVFROM(0.00)[jrtc27@freebsd.org,jrtc27@jrtc27.com]; RCVD_IN_DNSWL_NONE(0.00)[209.85.128.45:from]; MLMMJ_DEST(0.00)[dev-commits-src-main@freebsd.org]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_NA(0.00)[]; R_SPF_ALLOW(0.00)[+ip4:209.85.128.0/17:c]; RWL_MAILSPIKE_POSSIBLE(0.00)[209.85.128.45:from]; FROM_HAS_DN(0.00)[] X-Rspamd-Queue-Id: 4ZRLRc29rxz3MJQ X-Spamd-Bar: +++ On 29 Mar 2025, at 20:18, Colin Percival wrote: >=20 > The branch main has been updated by cperciva: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3D0e33c2e6df7a5de65db40c7cc0fc97f6= 6da28ccd >=20 > commit 0e33c2e6df7a5de65db40c7cc0fc97f66da28ccd > Author: Colin Percival > AuthorDate: 2025-03-28 18:07:01 +0000 > Commit: Colin Percival > CommitDate: 2025-03-29 20:17:29 +0000 >=20 > pci: Only re-route IRQs based on firmware on x86 >=20 > There is a (very historical) call to pci_assign_interrupt for the > purpose of routing IRQs which may have been set up wrong by x86 = BIOS > or firmware. On non-x86 systems, this is unnecessary; and on = INTRNG > systems it results in a (synthetic) IRQ leak and ultimately a = kernel > panic after many hotplug/unplug cycles. This is in fact incorrect. Whilst there may well be a leak that needs fixing, the rerouting is absolutely needed on non-x86 platforms. See 5884fab46153dee52bda660bcabca95c3cc97f44 and 7de649170fd804668da78f005c7966941b402106 for some of the history behind this. As a result of this commit the problem described in the second commit is reintroduced. Jess > Suggested by: jhb > Reviewed by: jhb > MFC after: 2 weeks > Sponsored by: Amazon > Differential Revision: https://reviews.freebsd.org/D49560 > --- > sys/dev/pci/pci.c | 2 ++ > 1 file changed, 2 insertions(+) >=20 > diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c > index fe99d6beb029..3a51e4c38296 100644 > --- a/sys/dev/pci/pci.c > +++ b/sys/dev/pci/pci.c > @@ -4175,6 +4175,7 @@ pci_add_resources(device_t bus, device_t dev, = int force, uint32_t prefetchmask) > if (q->devid =3D=3D devid && q->type =3D=3D PCI_QUIRK_MAP_REG) > pci_add_map(bus, dev, q->arg1, rl, force, 0); >=20 > +#if defined(__i386__) || defined(__amd64__) > if (cfg->intpin > 0 && PCI_INTERRUPT_VALID(cfg->intline)) { > /* > * Try to re-route interrupts. Sometimes the BIOS or > @@ -4184,6 +4185,7 @@ pci_add_resources(device_t bus, device_t dev, = int force, uint32_t prefetchmask) > */ > pci_assign_interrupt(bus, dev, 1); > } > +#endif >=20 > if (pci_usb_takeover && pci_get_class(dev) =3D=3D PCIC_SERIALBUS && > pci_get_subclass(dev) =3D=3D PCIS_SERIALBUS_USB) { From nobody Mon Mar 31 20:59:37 2025 X-Original-To: dev-commits-src-main@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 4ZRNmX2QxLz5sXy4; Mon, 31 Mar 2025 20:59:40 +0000 (UTC) (envelope-from cperciva@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRNmX1JDBz3cj2; Mon, 31 Mar 2025 20:59:40 +0000 (UTC) (envelope-from cperciva@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743454780; 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:autocrypt:autocrypt; bh=bQkNrsHkMxnH2ftYp/yp81OHMJYnec1e5tw1OIlS0ZA=; b=CkJG7lM0+HUc4WxYYo5iWbZ6sRCOQVJThzfm5/kpX+lniq844pynEVgBePJMImq5dZaFtg Fb7b0DbW4s7M44JFk4XCco3WdqO9XZLv2dlUp0nbE4yBtfdQTxJPstmVB08clMeL6x4Dzh K5Mtfm5W50pYDHYGab28wEDT0mVVfizOGdKIjQ5DXv8JpaTC458WLkNoxgJyYJpeT9B2EW RFvX1HXx90u83+IiiiM+6iY+wh0D3gwq79PYjIQPtzjLolHld+DwL3UmAA/RwsbKBHGFka ZdKDvpZLRuqAF6Cr+uK+tntWRsOWg5cejKaI4GuZfxzYmvbG/1UI4zM+klSmVg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743454780; a=rsa-sha256; cv=none; b=Fnosi4bRh2rOr4FzMdw6hBOcffSbuWtxQX4ZfLDRcB3Lba96eUr9OVwk6sf5H8M151Ef9n IASdoo7FqCxfA8JgXQcPFdFcFtYuFZ3UuOOciso3D0rJCC4z5zcEs1cPfrsYd68WxdFZQd zaPwiLJ4JphTvGiTgnGXdh/PGj/Z91EHrPBKHh/eGrDG0FcWHvwewf04ViTYRuBLH+0X2Y 6tkN8k+sDFD0sW2juTjky+B7bkckHKqKWinTgHHxzJy63Q6DY4nE0p2ocURybXhvBODa7e YliAm3xduMTOS4zTflkn8ykzfR7NQFJs0C7rXGHz+3nOT7PT36cCDIRtUaQc0Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743454780; 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:autocrypt:autocrypt; bh=bQkNrsHkMxnH2ftYp/yp81OHMJYnec1e5tw1OIlS0ZA=; b=eOhNs+NX0ZM/xMaZTUQlERMDyjIqFKoUp+xo2v2P95FGirKz9ltMtJgO1xyW3WukW9+HAZ Ll9MKwqrK07CfHfjcjK8Fq7nr2Dp0IDcKNaIlMfzljOTocmFjAmzRlogw21kkSSY/HNyDm sT52vhD48FQKUrbrTqtGAgIdWlDPYFl9+Tr3/+z69wUlKOVzR/ChQgLb7ONyW361wjAI0i d3K0yeDn3XmWEsqyQwciRAva2oqcNjyA3pK82TnjTi2PUz+yTspLgnprjMmQVvsDiBeiOg TbkewZ7OP1Mg0lZGVzFHYDw9BN3De145jwFGVzWvhMZ5bYlpsnFAtH2HY2wdHA== Received: from [192.168.6.36] (S0106684a76304d01.vf.shawcable.net [70.69.240.84]) (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: cperciva/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4ZRNmW3mbMz156k; Mon, 31 Mar 2025 20:59:39 +0000 (UTC) (envelope-from cperciva@freebsd.org) Message-ID: <8897817f-b403-4e72-8fa7-87db143695cd@freebsd.org> Date: Mon, 31 Mar 2025 13:59:37 -0700 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 0e33c2e6df7a - main - pci: Only re-route IRQs based on firmware on x86 To: Jessica Clarke , John Baldwin Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" References: <202503292018.52TKI7va048377@gitrepo.freebsd.org> Content-Language: en-US From: Colin Percival Autocrypt: addr=cperciva@freebsd.org; keydata= xsFNBGWMSrYBEACdWRqDn3B3SKO7IG0/fGHYtfs26f3Q5QeAcasy1fQLniwGQWn5rlILhbCD K/jdNoDm5Zxq20eqyffoDNObCjnHgg4tGANdi+RmDy+7CDpE789H8dss9y7Pt5DlGGAXQQnt hxush3EYS/Ctprd9UUL/lzOOLOU1aNtzB84tNrJBtcJmL7OYHfyTSNFxvedqJrrasejIQOLI t/DQ89BPzz+vsKHz7FJPXh3fsVkzLA00DJYcfkgxyABfJNA7U6yMwd4DVSdx/SsvfIDMVXnu UXCXswo106WPZbYGlZPpq0wW6iibtTerJix+8AeuwXvl9O1p8yESK4ErkIxCnmghTSz+pdzj z/6xBRkdDM9VdZ0r+CzsaNXMpDOzFuKyjaiYBdgCLljbDnXIHFcqXenrZ7Xwkm09g/M4uVSh pIUG2RYa6tsHSQoGCp3f2RZv1znfViKQFbbL83QjtPA20AhseZSYbHp1FPhXyy9J0wkGL16L e99g6gdGeIRE82BZjBjKGDkoyDPq+oDRSFl8NtzmIKy+cfz00nViqcTF4bREXEawFGhlpO0X O9q8mijI9iFB6zaPBiSdJGBL5ML5qLTNCl8Zlf4m1TBvmRTqF/lzMHVXHidDoUhpSh/y3AFZ 1KrYc27ztJQywDJPJPWPbtY8YhFLFs377gfP8WldsZjzp8nvoQARAQABzSVDb2xpbiBQZXJj aXZhbCA8Y3BlcmNpdmFARnJlZUJTRC5vcmc+wsGRBBMBCAA7FiEEglY7hNBiDtwN+4ZBOJfy 4i5lrT8FAmWMSrYCGwMICwkNCAwHCwMFFQoJCAsFFgMCAQACHgUCF4AACgkQOJfy4i5lrT++ ig/9GZKdN2fHSyrANKZX38ivd7IX2wAYouqH9DrQM94W8IciaDLmarN4Pl9mY+aucMwQUSyp uNtKOJwKqhVVaalF9Zw0sRMH4CJuvT7vKCtZ3q1Okb7soRvFte4d+vXhvPxCvBFDA5JzU7Lg DR5eqqcvF1dN1OuCq16pl0zCOSH/Jr5ToE3LM3Av1KBGcZD7ZSzHRWsFjV5AOUJKySuA3GwJ e/jASQcQ0YfCnru8ntLmYg/2SKvZFlfthZiCBnAppMt4n4BUAw3TDvf10HIDtdneejawcbLS gofLCvGqumwbZYAMKWrFzT4+7KQvr0pOw8QD7EbxnB4f9hQ7UiVF8qWsyKU3iv6b5JLhbS59 ooKRccyOvdMLcVJ0ZdpqoxrNv061ZUqLL5RiWjBlc1qjBnDxeg5oyM0rT8WLftdgvyH6RQt0 KWngumBAT5AT2DUYL8Uz1490cqfO9K4yEGZAJB9XRVX1g2IWTOjae+0g9ZII+h91UngFz+Rz aKDeseKBbCGDOFXx1TqKiHl2g255ZnUxKYTlucFtguv4gDGBgEk4G9JaEWBw1IWblcKhxH7L 2vWsUhvwghjIxHdO/RkeIeHvSp4YZxCJ7a3TaJLYAlwYopfTKVzNhcDY5h5syEuoHjyJCxXK SyoJYAVu8Yl2KUhvOtOmL1VZ6xyHnpdMRWKJZ5jOwU0EZYxKtgEQANYfgbtUMVnhjxDHhWLp g5kLHK3YW0TfJKzpXqDB7NiqxHofn4OcbZnVC3MKggcbs9o1/UtsjnlsG8550PfiYkDXvPiO RJwgbGs6MGIDK797C6cnBLQ8xwBa9SL4cl5iQFnhWmt6vwnJ+an/cm5JpYves3wL7jV09qU9 57hkHXEUcl38r4FssZzVcLKPUVTa3Un+QGRTGDGe/f4ctjMaqv0ZCM+l2ixPhf/vqESrfSLv V/+T3dmtUfXjazO3SABvsHwxgGuTTYOlKoPCaebr+BRdqm0xeIShoIlhvTI8y4clchqx/Uxg UG5X2kvU13k3DS3Q8uLE4Et9x1CcZT6WGgBZSR6R0WfD0SDnzufNnRWJ0dEPA2MtJHE7+85R Vi9j/IgZV+y5Ur+bnPkjDG1s2SVciX5v9HQ0oilcBhvx0j5lGE9hhurD9F+fCvkr4KdbCknE 6Y8ce8pCNBUoB/DqibJivOzTk9K9MGB5x0De5TerIrFiaw3/mQC9nGeO9dtE7wvDJetWeoTq 4BEaCzpufNqbkpOaTQILr4V6Gp7M6v97g83TVAwZntz/q8ptwuKQPZ2JaSFLZn7oWUpYXA5s +SIODFHLn6iMoYpBQskHQjnj4lEPJadl4qj+ZKA89iDAKsniyoFXsbJe2CPbMS1yzBxKZq6K D/jpt7BOnuHr/JrXABEBAAHCwXYEGAEIACAWIQSCVjuE0GIO3A37hkE4l/LiLmWtPwUCZYxK tgIbDAAKCRA4l/LiLmWtP3jmEACQrh9gWe8F1Tkw3m6VoHKwLc5he4tX3WpQa//soPO6iGG3 S3WPruQ46NrAaAojoOcKI9UONDO5rxG0ZTX53S+lu2EO47jbcLwOCjaEpjKpDRt9ZXBQE8Xl mtBE9Bp3W9gpjB1nE3KNM1mJYgsK0QdRpwwfh4pVgGpOj8j23I6MCK+v99zEBnpgCn2GX8W/ kctRXHqWwndHysOJtRP/zrl7dDaABF1f9efUl0LL3TD3GJ9VDz+DNOin/uK2a1hiJo8QzTRk PpfUQ2ebzDsrd1i/pOWkMSkdH+rEu4AGrXWtaBwrMyrGkL6Icb6yO+P9/z0W2wlgBf3P1YRt JPgQt/Dj3yvA/UnaV/QmuVQPjl13o24UnJGsZM8XGnNdfWBKkC1Q6VXC4QT+dyBHYH9MuE9d 6oGl8pFM1+cTfEfbM62/rRoPkF1yHMsI/903VxEvuUIKfhEZAVLFyHldooNxuchntHQP9y8J 8Ou9bWYQP7MnEn+kwSwrZkjurfPkan+xQvp6dDYnj3V0GwA5pprBMaB928VIDVOv+1PNQI3t Cvk5VPv/skq+TJRMHW7bFSt8PRa91cUf1FOLIz9APDiJOzXkwxUEHGV3zPSaUhs1JYjyBeGT wDAvtLUdjOnRhEUOwlnIrztmvyciutjJoVzKEEjj5WXnHk9L9kQ1bpAjkjTONw== In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 3/31/25 12:14, Jessica Clarke wrote: > On 29 Mar 2025, at 20:18, Colin Percival wrote: >> commit 0e33c2e6df7a5de65db40c7cc0fc97f66da28ccd >> Author: Colin Percival >> AuthorDate: 2025-03-28 18:07:01 +0000 >> Commit: Colin Percival >> CommitDate: 2025-03-29 20:17:29 +0000 >> >> pci: Only re-route IRQs based on firmware on x86 >> >> There is a (very historical) call to pci_assign_interrupt for the >> purpose of routing IRQs which may have been set up wrong by x86 BIOS >> or firmware. On non-x86 systems, this is unnecessary; and on INTRNG >> systems it results in a (synthetic) IRQ leak and ultimately a kernel >> panic after many hotplug/unplug cycles. > > This is in fact incorrect. Whilst there may well be a leak that needs > fixing, the rerouting is absolutely needed on non-x86 platforms. See > 5884fab46153dee52bda660bcabca95c3cc97f44 and > 7de649170fd804668da78f005c7966941b402106 for some of the history behind > this. As a result of this commit the problem described in the second > commit is reintroduced. Interesting. I also got an email telling me that this broke vtnet on powerpc64. BTW in addition to causing a leak (which ultimately happens in intr_map_irq) on arm64 I'm seeing the synthetic value from intr_map_irq being returned into PCI code as a *real* IRQ and causing a panic when PCI_INVALID_IRQ is returned. So there's something very wonky going on here... I'll back this out for now though; this is clearly not the right fix. -- Colin Percival FreeBSD Release Engineering Lead & EC2 platform maintainer Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid From nobody Mon Mar 31 21:01:14 2025 X-Original-To: dev-commits-src-main@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 4ZRNpL52d7z5sYJ3; Mon, 31 Mar 2025 21:01: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRNpL492gz3dp1; Mon, 31 Mar 2025 21:01:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743454874; 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=3aJl39QyLYfx8+kqmeDoFcj1sx01YNNvw0kOaf3Vw8A=; b=NV64agmb2kFaBlQGH4YU7nr6nXjhRWXJ6Ash+d1w1gRPG9iIZ5zSMOIpyvpzWhxfCbx5hn sUo2qk41vqn4z564qPnVurbyHkY109AGe8c1Vf39gSenJYjWH68oG5oV6+3c6yzZEfwzka y5XhiaesOwRknGFJrohceRk3SeKY8W2Afl6FYfPe4k98e7Ch5iP1hn8bYUzTZoowUyiUEf Df+H42ubtIWKSjqqlTkFz1X7t6rgEawJecUO8SkawgFmMxHOIITvyB9d7MaNYFk0kul679 Vwdx+C1CHqiG9xsdZypKX2twA8BAgqeKaEJs99LqnP3MlfXyaFLzl/ty4YVTeA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743454874; a=rsa-sha256; cv=none; b=YHAO1UKdccjtXgZqsDM1xytWRVS1u7TXoVGGMkiS5NY9A0SQxceoof5De94ELquUx4afgx jDSnxWldV7jxuBl+HfnLgcwghc6yYYAoMSCTLczPUV5boO+vqdy/lgB2g2rlwt5gM6UqPq xXjYR0mAF2P1nuIo5v06SmoZlx18ggn9qnJ2pC+hjeAuFbL552KqLjT6so5GLSj78kKLYW 4mcr5ekkpL+WlcIB8nhbkSOA/Xusp2sGhTAfNPfFOptdaPKcGEylLQASxkpykZ3WxwtXxN f54I5QBc/2TscN68OLcH0xLsQ6uDRiKlwkeEu2beWa7x2qztOf+4Kp+1AC2zpg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743454874; 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=3aJl39QyLYfx8+kqmeDoFcj1sx01YNNvw0kOaf3Vw8A=; b=OSTasVZ346d6NFtKiS8P6swH8swW+QMXxfACiB4x8UNGJvIuoci3x5Jgs0X1q6UyQR483i y019ZyBwKASkEGkhajTlxnehgIiyzBZaeL8Bs46GZlyv2ThmnKqMzVuPQsSyWoMokQq/V5 g+OnP+JVOovFaAXgJ495TTM3sRSDlJX5saP0eDAdayT7HK3tZjjdl3vl0MZqk+J48b1czz HwHdTbmt20KsO+jcLYcdAS82rMOO19ZDe0OFlcEKp5UBXlR4zSYplsIX3DiemHMEBmnUwf gUMc0h9NMrlkJcZZexLBTEvNZTmglPNQqf17z0wyvCnX5Vbpk21WmHSm4I5VYg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRNpL3MPCz10wQ; Mon, 31 Mar 2025 21:01:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VL1Ega032616; Mon, 31 Mar 2025 21:01:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VL1EFb032613; Mon, 31 Mar 2025 21:01:14 GMT (envelope-from git) Date: Mon, 31 Mar 2025 21:01:14 GMT Message-Id: <202503312101.52VL1EFb032613@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Colin Percival Subject: git: 680d34896c36 - main - Revert "pci: Only re-route IRQs based on firmware on x86" List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 680d34896c3672da439a1bc3ca5711339e6e5f01 Auto-Submitted: auto-generated The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=680d34896c3672da439a1bc3ca5711339e6e5f01 commit 680d34896c3672da439a1bc3ca5711339e6e5f01 Author: Colin Percival AuthorDate: 2025-03-31 21:00:36 +0000 Commit: Colin Percival CommitDate: 2025-03-31 21:01:09 +0000 Revert "pci: Only re-route IRQs based on firmware on x86" This reverts commit 0e33c2e6df7a5de65db40c7cc0fc97f66da28ccd. --- sys/dev/pci/pci.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 3a51e4c38296..fe99d6beb029 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -4175,7 +4175,6 @@ pci_add_resources(device_t bus, device_t dev, int force, uint32_t prefetchmask) if (q->devid == devid && q->type == PCI_QUIRK_MAP_REG) pci_add_map(bus, dev, q->arg1, rl, force, 0); -#if defined(__i386__) || defined(__amd64__) if (cfg->intpin > 0 && PCI_INTERRUPT_VALID(cfg->intline)) { /* * Try to re-route interrupts. Sometimes the BIOS or @@ -4185,7 +4184,6 @@ pci_add_resources(device_t bus, device_t dev, int force, uint32_t prefetchmask) */ pci_assign_interrupt(bus, dev, 1); } -#endif if (pci_usb_takeover && pci_get_class(dev) == PCIC_SERIALBUS && pci_get_subclass(dev) == PCIS_SERIALBUS_USB) { From nobody Mon Mar 31 22:39:21 2025 X-Original-To: dev-commits-src-main@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 4ZRQzb4qYPz5rRH8; Mon, 31 Mar 2025 22:39:23 +0000 (UTC) (envelope-from rm@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (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 "freefall.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRQzb2Lpmz459X; Mon, 31 Mar 2025 22:39:23 +0000 (UTC) (envelope-from rm@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743460763; 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: in-reply-to:in-reply-to:references:references; bh=0WJ6oQTtbvaPFldphQnEqTsxXNNpR825RlEb4cLwgCQ=; b=uIK7p8aNXXUGia0JlNAHYU24wiZhhd43v7kswySl/lGmXG4fAunvSikRzI2Py6eFWMNx7Z RvZWDCu/nBURrZ60Chu9YEmIQ5hP0TuWC5jHIW/EbBTQ++/o5bBMWQAdgWtls+K2TsDqwG V3W27/gsWhpmURdIswWWXz46Ua6e0rAqIB28Sqrq1CPsK1SVWsCmw7s8df0CwrPmB28zpt 2UWz93K4vXanGfiBjE60fUSLlrUvHhf1CGeSr4wiKERfvGtIQR8ru/+clAHIM+3ZpVpATf c5aSl4+6M7rZPZrZ8DnLthiDWPvQfm4HiUzrvNuugQHGj6/AFET9C82cOQQdFw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743460763; a=rsa-sha256; cv=none; b=MeEYpF6PaBvdGGrT+wzQW3bA4qtAgUx+DarNpF8qEbzZpUbOMxZIDpz4qcqDiSQuhUhQYc OHEvazwfLvq5dVkXURs5bl8UhVdYSbeaoTn1WONsyZ1rHSzrR7LYxRQvXDX8MUxtDCfGhf geDJVF4SMCH+zpkYolC20nHmhRKQQkaRGNsi59bhb3CDfSmlHIVMrhI0kfuEjDU+uciHZh dqscQHsEbMqzqNkkBfK6F+t8hWchH3VMcT/WyZb5EWs/9H5HdnibkNr1QJoS3KyIIHaZ5z QAkyPadl2j/aJJbu0G2ZLzs3NvmfncG4BOBRuTVVl0i5wfu6zOf8QwYrCt+bcw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743460763; 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: in-reply-to:in-reply-to:references:references; bh=0WJ6oQTtbvaPFldphQnEqTsxXNNpR825RlEb4cLwgCQ=; b=CK15AxsZv/ynS5SMHVLzXW0plXhI3W5ddElV8ARWcpyyEqV9J5Ta79M4gKHB680GDyMui0 XKcwzXbW5CErWOOCYttkysmHKvtj6oUbYglxZSuYLfCUPHlrthey+9MIiTM+J6f9jmb42I 71WLZQ17xLNUMEubTPBxCsZmEDsGlUDNtrTvqx+b04Ih8cAjYtW2/GeQ+aZRqpoWQPb4f6 OBH5G0CrkhwOMTj9p819xPOpcL4lCflsuNYS+dLE4zqQZltm8G9K6E8rGMKJpQCh1IE5KF DlgJ5oVHMfchqOHyFU5WTJYprAIEOvHTiJic46Z2CLnPa8ItlvB+RXArybu+Nw== Received: from [127.0.0.1] (unknown [127.0.1.132]) by freefall.freebsd.org (Postfix) with ESMTP id 750CDBF12; Mon, 31 Mar 2025 22:39:22 +0000 (UTC) (envelope-from rm@FreeBSD.org) Message-ID: <27cc3bec-d002-4b65-b503-ac195379e823@FreeBSD.org> Date: Tue, 1 Apr 2025 01:39:21 +0300 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 2ad0f7e91582 - main - Import iwx as ported from OpenBSD by Future Crew. To: Tom Jones , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202503311243.52VCh9PU088854@gitrepo.freebsd.org> Content-Language: en-US From: Ruslan Makhmatkhanov In-Reply-To: <202503311243.52VCh9PU088854@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Tom Jones wrote on 3/31/25 3:43 PM: > The branch main has been updated by thj: > > URL: https://cgit.FreeBSD.org/src/commit/?id=2ad0f7e91582dde5475ceb1a1942930549e5c628 > > commit 2ad0f7e91582dde5475ceb1a1942930549e5c628 > Author: Tom Jones > AuthorDate: 2025-03-31 12:24:15 +0000 > Commit: Tom Jones > CommitDate: 2025-03-31 12:42:31 +0000 > > Import iwx as ported from OpenBSD by Future Crew. Wow! nobody expected the Spanish Inquisition. That's great, thank you! Works smoothly at glance. I had this in dmesg, not sure if it's known issue (should I submit PR?): wlan0: Ethernet address: xx:xx:xx:xx:xx:xx lo0: link state changed to UP lock order reversal: 1st 0xfffffe0111962058 iwx0_tx_lock (iwx0_tx_lock, sleep mutex) @ /usr/src/sys/net80211/ieee80211_output.c:1038 2nd 0xfffffe01119e93b0 iwx0 (network driver, sleep mutex) @ /usr/src/sys/dev/iwx/if_iwx.c:10778 lock order iwx0_tx_lock -> network driver attempted at: #0 0xffffffff80bceb31 at witness_checkorder+0xbe1 #1 0xffffffff80b31631 at __mtx_lock_flags+0x91 #2 0xffffffff848fc896 at iwx_raw_xmit+0x36 #3 0xffffffff80d0b17b at ieee80211_mgmt_output+0x1eb #4 0xffffffff80d0d00a at ieee80211_send_mgmt+0xc0a #5 0xffffffff80d19f04 at sta_newstate+0x5e4 #6 0xffffffff84900e2d at iwx_newstate+0xa4d #7 0xffffffff80d111dc at ieee80211_newstate_cb+0x29c #8 0xffffffff80bc10b2 at taskqueue_run_locked+0x1c2 #9 0xffffffff80bc1f73 at taskqueue_thread_loop+0xd3 #10 0xffffffff80b0af52 at fork_exit+0x82 #11 0xffffffff8106936e at fork_trampoline+0xe wlan0: link state changed to UP Intel(R) Wireless WiFi based driver for FreeBSD Connection was established as: media: IEEE 802.11 Wireless Ethernet autoselect mode 11na Thank you! -- Regards, Ruslan T.O.S. Of Reality From nobody Tue Apr 1 06:10:55 2025 X-Original-To: dev-commits-src-main@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 4ZRd0b4nP7z5s1Wj; Tue, 01 Apr 2025 06:10: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRd0b43XJz3Q6Q; Tue, 01 Apr 2025 06:10:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743487855; 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=KKtCMeQHB22jBKSCxhFyQAxCAq7PaCTeCi5yiIJf0K4=; b=QhTiBBnsgrxDcwDvNoPItzR1cumVpazV8hCicBd60sAcMlfNnLQrtSkJCVldFltpZNpLvq 3UOCdLWdkqn1HLQj6FE8jAO2WotZhTr5Ns5gK9q8IeeeA6xbi2IYEh1s7csrl4cVFu3dM+ DJvrdf+UQa4HBrc+PITr2x81Uoasmor/K40+jEeUrcITG9t3G96rnkSYnZMepXQcyu3AMT cE28m2xF3lAZEUp3aSaFP4mznXunzwCzZ590v2/9aCfwJvt+x8Y9UTx1UDLbGyQKXP/VOf 8yi0BG9jkdFFKcy36xeKY9ZcLEO8TjIPJ/4MT+qH1v9V7SgzOPWut8tqf8QIjA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743487855; a=rsa-sha256; cv=none; b=wWFTniV/8NGhnlkA1bUhjzznEJhJzuXK1UkSOxQ1OBQ4bU/5qK+D8Oi57uRGQvYZ2BOQaS GFdRKhM1ukqKr2/Hu8l7k9V/73FHdIpMWBD3Eib1p6ddjg2GFf5zDUd61HNMV31xEPLnaw y18QDsuqiCDufTine5W8oUUJarKe8lbQZd9u3qh2XxK2cOreNX9ay0irzseiQPeJrTlJj3 6NWJCj8KaxRL58XU5cLnoCzeVvE26eO8xDBMOTpygqsKq4WzLFPf5t/PoKjsZBYM3oac/f o6OjeKz9UpWhR/dOViYHV+707Q4kAqhwBRno+okjMgGPJjDMYkofH2KRvQqo8g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743487855; 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=KKtCMeQHB22jBKSCxhFyQAxCAq7PaCTeCi5yiIJf0K4=; b=LG7Kn90f0dPeQECIqtehpPIXfpGS9IxdVjVh2o17E5LZqOZuBANVUMoSyReJl6pjz0EBBt vDuk3AmBrCDQJEdbGqmF1WZXqfiYHaxFdIH8iiuuubOSCrWgF6Gl4Q+RI0m5E4ZbGmS3nv hfzHysaw3WbTvTWi+0E5F/jrEl4WWS43KjT0Jeu1S4IDjB6P6RrSTCzYIN+VcLcH9iXqfy auUw3+XSptt83w5SsBVHVnuKzvloQyffpbHvE9EbG/RuIALAFDLLE29tPu3i1nPel7mv9G byy12acrCUdGGBZbjxiPTB9RUTjSuRkTPyGJHSu6w2FnyItce/YCJadtmXwNIA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRd0b3V14z3v2; Tue, 01 Apr 2025 06:10:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5316At1I055451; Tue, 1 Apr 2025 06:10:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5316AtcP055448; Tue, 1 Apr 2025 06:10:55 GMT (envelope-from git) Date: Tue, 1 Apr 2025 06:10:55 GMT Message-Id: <202504010610.5316AtcP055448@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Doug Moore Subject: git: 7becd87c988c - main - vm_grab: use iterator for grab lookup List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dougm X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7becd87c988c090bdc41a177bf06ad2894f79a5b Auto-Submitted: auto-generated The branch main has been updated by dougm: URL: https://cgit.FreeBSD.org/src/commit/?id=7becd87c988c090bdc41a177bf06ad2894f79a5b commit 7becd87c988c090bdc41a177bf06ad2894f79a5b Author: Doug Moore AuthorDate: 2025-04-01 06:09:34 +0000 Commit: Doug Moore CommitDate: 2025-04-01 06:09:34 +0000 vm_grab: use iterator for grab lookup When a page lookup fails in a vm_page_grab operation, use the results of the failed search, stored in an iterator, to begin the search for a predecessor to use in a call to vm_page_alloc_after(), to avoid doing that search from the root in vm_page_alloc(), as happens now. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D49371 --- sys/vm/vm_page.c | 145 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 89 insertions(+), 56 deletions(-) diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 4d9a57544487..f351f60f833c 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -4823,46 +4823,70 @@ vm_page_grab_pflags(int allocflags) } /* - * Grab a page, waiting until we are waken up due to the page - * changing state. We keep on waiting, if the page continues - * to be in the object. If the page doesn't exist, first allocate it - * and then conditionally zero it. + * Grab a page, waiting until we are woken up due to the page changing state. + * We keep on waiting, if the page continues to be in the object, unless + * allocflags forbid waiting. * - * This routine may sleep. + * The object must be locked on entry. This routine may sleep. The lock will, + * however, be released and reacquired if the routine sleeps. * - * The object must be locked on entry. The lock will, however, be released - * and reacquired if the routine sleeps. + * Return a grabbed page, or NULL. Set *found if a page was found, whether or + * not it was grabbed. + */ +static inline vm_page_t +vm_page_grab_lookup(struct pctrie_iter *pages, vm_object_t object, + vm_pindex_t pindex, int allocflags, bool *found) +{ + vm_page_t m; + + while ((*found = (m = vm_radix_iter_lookup(pages, pindex)) != NULL) && + !vm_page_tryacquire(m, allocflags)) { + if (!vm_page_grab_sleep(object, m, pindex, "pgrbwt", + allocflags, true)) + return (NULL); + pctrie_iter_reset(pages); + } + return (m); +} + +/* + * Grab a page. Keep on waiting, as long as the page exists in the object. If + * the page doesn't exist, first allocate it and then conditionally zero it. + * + * The object must be locked on entry. This routine may sleep. The lock will, + * however, be released and reacquired if the routine sleeps. */ vm_page_t vm_page_grab(vm_object_t object, vm_pindex_t pindex, int allocflags) { - vm_page_t m; + struct pctrie_iter pages; + vm_page_t m, mpred; + bool found; VM_OBJECT_ASSERT_WLOCKED(object); vm_page_grab_check(allocflags); -retrylookup: - if ((m = vm_page_lookup(object, pindex)) != NULL) { - if (!vm_page_tryacquire(m, allocflags)) { - if (vm_page_grab_sleep(object, m, pindex, "pgrbwt", - allocflags, true)) - goto retrylookup; + vm_page_iter_init(&pages, object); + while ((m = vm_page_grab_lookup( + &pages, object, pindex, allocflags, &found)) == NULL) { + if ((allocflags & VM_ALLOC_NOCREAT) != 0) + return (NULL); + if (found && + (allocflags & (VM_ALLOC_NOWAIT | VM_ALLOC_WAITFAIL)) != 0) return (NULL); + mpred = vm_radix_iter_lookup_le(&pages, pindex); + m = vm_page_alloc_after(object, pindex, + vm_page_grab_pflags(allocflags), mpred); + if (m != NULL) { + if ((allocflags & VM_ALLOC_ZERO) != 0 && + (m->flags & PG_ZERO) == 0) + pmap_zero_page(m); + break; } - goto out; - } - if ((allocflags & VM_ALLOC_NOCREAT) != 0) - return (NULL); - m = vm_page_alloc(object, pindex, vm_page_grab_pflags(allocflags)); - if (m == NULL) { - if ((allocflags & (VM_ALLOC_NOWAIT | VM_ALLOC_WAITFAIL)) != 0) + if ((allocflags & + (VM_ALLOC_NOWAIT | VM_ALLOC_WAITFAIL)) != 0) return (NULL); - goto retrylookup; } - if (allocflags & VM_ALLOC_ZERO && (m->flags & PG_ZERO) == 0) - pmap_zero_page(m); - -out: vm_page_grab_release(m, allocflags); return (m); @@ -5054,48 +5078,57 @@ out: } /* - * Fill a partial page with zeroes. The object write lock is held on entry and - * exit, but may be temporarily released. + * Grab a page. Keep on waiting, as long as the page exists in the object. If + * the page doesn't exist, and the pager has it, allocate it and zero part of + * it. + * + * The object must be locked on entry. This routine may sleep. The lock will, + * however, be released and reacquired if the routine sleeps. */ int vm_page_grab_zero_partial(vm_object_t object, vm_pindex_t pindex, int base, int end) { - vm_page_t m; - int rv; + struct pctrie_iter pages; + vm_page_t m, mpred; + int allocflags, rv; + bool found; VM_OBJECT_ASSERT_WLOCKED(object); KASSERT(base >= 0, ("%s: base %d", __func__, base)); KASSERT(end - base <= PAGE_SIZE, ("%s: base %d end %d", __func__, base, end)); -retry: - m = vm_page_grab(object, pindex, VM_ALLOC_NOCREAT); - if (m != NULL) { - MPASS(vm_page_all_valid(m)); - } else if (vm_pager_has_page(object, pindex, NULL, NULL)) { - m = vm_page_alloc(object, pindex, - VM_ALLOC_NORMAL | VM_ALLOC_WAITFAIL); - if (m == NULL) - goto retry; - vm_object_pip_add(object, 1); - VM_OBJECT_WUNLOCK(object); - rv = vm_pager_get_pages(object, &m, 1, NULL, NULL); - VM_OBJECT_WLOCK(object); - vm_object_pip_wakeup(object); - if (rv != VM_PAGER_OK) { - vm_page_free(m); - return (EIO); - } + allocflags = VM_ALLOC_NOCREAT | VM_ALLOC_NORMAL | VM_ALLOC_WAITFAIL; + vm_page_iter_init(&pages, object); + while ((m = vm_page_grab_lookup( + &pages, object, pindex, allocflags, &found)) == NULL) { + if (!vm_pager_has_page(object, pindex, NULL, NULL)) + return (0); + mpred = vm_radix_iter_lookup_le(&pages, pindex); + m = vm_page_alloc_after(object, pindex, + vm_page_grab_pflags(allocflags), mpred); + if (m != NULL) { + vm_object_pip_add(object, 1); + VM_OBJECT_WUNLOCK(object); + rv = vm_pager_get_pages(object, &m, 1, NULL, NULL); + VM_OBJECT_WLOCK(object); + vm_object_pip_wakeup(object); + if (rv != VM_PAGER_OK) { + vm_page_free(m); + return (EIO); + } - /* - * Since the page was not resident, and therefore not recently - * accessed, immediately enqueue it for asynchronous laundering. - * The current operation is not regarded as an access. - */ - vm_page_launder(m); - } else - return (0); + /* + * Since the page was not resident, and therefore not + * recently accessed, immediately enqueue it for + * asynchronous laundering. The current operation is + * not regarded as an access. + */ + vm_page_launder(m); + break; + } + } pmap_zero_page_area(m, base, end - base); KASSERT(vm_page_all_valid(m), ("%s: page %p is invalid", __func__, m)); From nobody Tue Apr 1 08:01:42 2025 X-Original-To: dev-commits-src-main@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 4ZRgSQ6Yhpz5s8D5; Tue, 01 Apr 2025 08:01:42 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRgSQ5mblz3MsY; Tue, 01 Apr 2025 08:01:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743494502; 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=UsXQUBWyVEChGtFHrjO33UCkSxaoHWzPvm0R/BKfYnE=; b=ymHHrhb6QK4ElLkhCRLF18cX1IJSuHwFQcfccISMRtyUMAawkGYD3Q7h218rvo3vZGAk4S bUDaYCDX8i71vkuVipewDQZywxv1C1YqEP8ilIHPMcBwtqzalQp/Bt3vY0wkE4X9hK+yWK V96SY898zmg7GQbn3EklSat0U+ubUYSHn9W2Qq9eZQYSlziQRl/Q9V9bJL+8CC5SC+iHJh KaYfMxDFRZbe7MZSI/GnXI6olv1UqtTBoX1CaUNT5GE5/cI4L3VFeeVVvT+yJ4mdtgToA6 iVKaA/8u2a3g/JPCKIkRjDgsH31gV1YHA3ECaFBJJDoxBN0IdH1ezX0PeOLEYw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743494502; a=rsa-sha256; cv=none; b=IXB7J1HzCNz9l2sO0rDBh5z35XgZniGlaTueJvSFY2fO83n5DhX9qGGpvXZCLAKA1+E3Hf jNshTzk3MIJE4fKicb/LD0DnzE1yMhq+IE63+NWtvpQPm6kn75ZBPVNgs8jy1krF5K+e5q +vOlr/HTjINOQhRHij8lZfjM4jIvH0QWVKe/q30CrrfrvvYniyg6Ipz1XCr7E7nS6Di7Gi 9MFjcJZus557j7fYBhs1dX2R95t68EzlrtlnJbfCwcXbFtNLFyYT+7A7uHG3ybWIuHVv/s MiNwD6jpOOxYt8GmeGKX/HNgrUF+11YHh020dht922bimgSmmdN1qRZ8Tm7Zzw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743494502; 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=UsXQUBWyVEChGtFHrjO33UCkSxaoHWzPvm0R/BKfYnE=; b=FEEf+IJqDQobNqf33im/UmoVbYtKCVhl7cP3iBbvgOHwYQUDy2Vew++w/ypbWqrGwDJPJI wtvk4d4rQsG9qi3jIzN9PYjv+q4CwpmkCCOtlqzTU7YrsynMLx32Jt9z6ECCGqpzXZKwM5 2exmgoq4Dc1+nNWoPb7sqMWRcOd0xPkXBGGlh2RwDGi3hLxdQDDAw3XlasFxcfn9NEMhlb GMdfDaEjuyBOSvtz1P7ev41mmTZU9WqerNEBVsCWGU03S2QKyeQ5fb3v/icfneGdOTbxuy nnSyQn2xI53nHHwanusXqw1EvGhlP/34IxdYj+N4qXQCKb4CTNSD6WXDPb+tpA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRgSQ5MJRz6h2; Tue, 01 Apr 2025 08:01:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 53181gLb063096; Tue, 1 Apr 2025 08:01:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53181gLO063093; Tue, 1 Apr 2025 08:01:42 GMT (envelope-from git) Date: Tue, 1 Apr 2025 08:01:42 GMT Message-Id: <202504010801.53181gLO063093@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Tom Jones Subject: git: 9f3e7b75976b - main - if_rsu: Add sitecom device id List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: thj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9f3e7b75976b40107160d1d1676051792b45b0bc Auto-Submitted: auto-generated The branch main has been updated by thj: URL: https://cgit.FreeBSD.org/src/commit/?id=9f3e7b75976b40107160d1d1676051792b45b0bc commit 9f3e7b75976b40107160d1d1676051792b45b0bc Author: Nia Alarie AuthorDate: 2025-04-01 07:47:02 +0000 Commit: Tom Jones CommitDate: 2025-04-01 07:59:42 +0000 if_rsu: Add sitecom device id Approved by: thj, adrian Obtained from: NetBSD Differential Revision: https://reviews.freebsd.org/D49588 --- share/man/man4/rsu.4 | 4 +++- sys/dev/usb/usbdevs | 1 + sys/dev/usb/wlan/if_rsu.c | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/share/man/man4/rsu.4 b/share/man/man4/rsu.4 index 7aaacb8112a0..1c4f9774ea53 100644 --- a/share/man/man4/rsu.4 +++ b/share/man/man4/rsu.4 @@ -17,7 +17,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd November 10, 2024 +.Dd April 1, 2025 .Dt RSU 4 .Os .Sh NAME @@ -126,6 +126,8 @@ Sitecom WL-349 v1 .It Sitecom WL-353 .It +Sitecom WLA-1100 v1001 +.It Sweex LW154 .It TRENDnet TEW-646UBH diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs index 0dc99526d991..24a1591233f4 100644 --- a/sys/dev/usb/usbdevs +++ b/sys/dev/usb/usbdevs @@ -4560,6 +4560,7 @@ product SITECOMEU WLA1000 0x005b WLA-1000 product SITECOMEU RTL8188CU_1 0x0052 RTL8188CU product SITECOMEU RTL8188CU_2 0x005c RTL8188CU product SITECOMEU RTL8192CU 0x0061 RTL8192CU +product SITECOMEU RTL8188S 0x006b RTL8188S product SITECOMEU LN032 0x0072 LN-032 product SITECOMEU WLA7100 0x0074 WLA-7100 product SITECOMEU LN031 0x0056 LN-031 diff --git a/sys/dev/usb/wlan/if_rsu.c b/sys/dev/usb/wlan/if_rsu.c index 35deed163706..07f7b6f3a708 100644 --- a/sys/dev/usb/wlan/if_rsu.c +++ b/sys/dev/usb/wlan/if_rsu.c @@ -144,6 +144,7 @@ static const STRUCT_USB_HOST_ID rsu_devs[] = { RSU_DEV_HT(SENAO, RTL8192SU_2), RSU_DEV_HT(SITECOMEU, WL349V1), RSU_DEV_HT(SITECOMEU, WL353), + RSU_DEV_HT(SITECOMEU, RTL8188S), RSU_DEV_HT(SWEEX2, LW154), RSU_DEV_HT(TRENDNET, TEW646UBH), #undef RSU_DEV_HT From nobody Tue Apr 1 08:01:43 2025 X-Original-To: dev-commits-src-main@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 4ZRgSS1G6Tz5s7pC; Tue, 01 Apr 2025 08:01: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRgSR6nmSz3Msc; Tue, 01 Apr 2025 08:01:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743494504; 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=0VDzPNaofs89jI3WDWgdumt6S66mvsomFUd9otmqv7s=; b=jwNhW/vvvkTeZKy7HasXEY7Gf0cy/c3CULxy+p0Y7rCi+PLxd5r1QwX+yHKVpRCXlQl5e6 6Cee3l8f+L6SZfeRUaPubWDe28tAibVzXHbhSvBJ+crjUoHpy59pYmsgWqfcn8zEDUqh70 VPKhybmd1lOI4gju4eI/nVXWzZrheIsdI7oBHxS801G3DF1DShSWNjKLETP3E753bAIc01 uzUKDAjtuN3IDA1Fh8fW23PhQyxg/THhWdSvxC0fujdHHgUXgME/P/C/M5pn2dIjnNEBcI /xi2OINLgUXjGNTLI2PrhyzzAEAZa+vCNMKfvTDQ99VVt0wNOloU9+3fI5uKHQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743494504; a=rsa-sha256; cv=none; b=BgoacFZNMF3m0B6H29rwl62xRTsycX1VH4JS5aP6RZLIjxKEgtRvtRZx7Bg4rBjvwjfA2Z n5XRecCNGwoFvK5E0eRObwgMEX1mIAxqdvO4SzdkaNRrp89LEdaH7o5h57QShTJCbg8W4g gqSztV2GqtEnkecYs13exZis3Hz91Zqaf7CJ3eK3noj7l80L/6IJC2JW1hpOJlrH7qIHhx x7pJIgotQLp1uPjs3mR6at/ycHNGKQhx6nxzQi/l4NmzjAaYQxsMbf3g3/NiRL6gKBfVlx W8hGwnP/4Voh9zrtU1p56xysonMeeYHxs8DUTMl+J+YWji1MFKkV+jtQjx6yKw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743494504; 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=0VDzPNaofs89jI3WDWgdumt6S66mvsomFUd9otmqv7s=; b=fH+jqfIOIowqlJF+Kh3m/DdVksni/VLGfDWYfW9eFIYb7Yg6wveEhNXax4hmv38nC8vwiQ RAVoUUlJ4r+7Z4KoP9E8OqbuA04okL3iyU9Vf9C2lTxMFAGI71vQaEohSa0qqmnpeY8OOg 2Z3FNEqAIxk/WHAmDSYorKY2MGO0XM2Sc7+4qCy02Uin4Gs4VLRBRHxDfjF8ylboIC1Oyy jnHXsPANGCVGLPaYFUlz1pCZjoj4AZbbiTAdMSvITV6ChXBQiz4bttkF6NnBCLpigLOEI1 fNgqKoHgjgPhkEdFeHcyzVLP0NVw/Yx7edFO/sg2qA8tV0RiiCW2aZXejl/xJw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRgSR6Nk4z6fG; Tue, 01 Apr 2025 08:01:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 53181h23063129; Tue, 1 Apr 2025 08:01:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53181hE2063126; Tue, 1 Apr 2025 08:01:43 GMT (envelope-from git) Date: Tue, 1 Apr 2025 08:01:43 GMT Message-Id: <202504010801.53181hE2063126@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Tom Jones Subject: git: 426f4e5e2e70 - main - if_run: Add sitecom device id List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: thj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 426f4e5e2e70e2a26d143bd3cc37c509a41684d5 Auto-Submitted: auto-generated The branch main has been updated by thj: URL: https://cgit.FreeBSD.org/src/commit/?id=426f4e5e2e70e2a26d143bd3cc37c509a41684d5 commit 426f4e5e2e70e2a26d143bd3cc37c509a41684d5 Author: Nia Alarie AuthorDate: 2025-04-01 07:47:49 +0000 Commit: Tom Jones CommitDate: 2025-04-01 08:00:07 +0000 if_run: Add sitecom device id Reviewed by: thj, adrian Obtained from: NetBSD Differential Revision: https://reviews.freebsd.org/D49588 --- share/man/man4/run.4 | 4 +++- sys/dev/usb/usbdevs | 1 + sys/dev/usb/wlan/if_run.c | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/share/man/man4/run.4 b/share/man/man4/run.4 index 0e8a74d948bd..c3d9d75f8e28 100644 --- a/share/man/man4/run.4 +++ b/share/man/man4/run.4 @@ -17,7 +17,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd November 10, 2024 +.Dd April 1, 2025 .Dt RUN 4 .Os .Sh NAME @@ -228,6 +228,8 @@ Sitecom WL-302 .It Sitecom WL-315 .It +Sitecom WL-364 +.It SMC SMCWUSBS-N2 .It Sweex LW303 diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs index 24a1591233f4..d4176193d0b1 100644 --- a/sys/dev/usb/usbdevs +++ b/sys/dev/usb/usbdevs @@ -4557,6 +4557,7 @@ product SITECOMEU RT3072_5 0x004a RT3072 product SITECOMEU WL349V1 0x004b WL-349 v1 product SITECOMEU RT3072_6 0x004d RT3072 product SITECOMEU WLA1000 0x005b WLA-1000 +product SITECOMEU RT3070_1 0x0051 RT3070 product SITECOMEU RTL8188CU_1 0x0052 RTL8188CU product SITECOMEU RTL8188CU_2 0x005c RTL8188CU product SITECOMEU RTL8192CU 0x0061 RTL8192CU diff --git a/sys/dev/usb/wlan/if_run.c b/sys/dev/usb/wlan/if_run.c index 00e005fd7d4d..97c790dd5b81 100644 --- a/sys/dev/usb/wlan/if_run.c +++ b/sys/dev/usb/wlan/if_run.c @@ -324,6 +324,7 @@ static const STRUCT_USB_HOST_ID run_devs[] = { RUN_DEV(SITECOMEU, RT2870_3), RUN_DEV(SITECOMEU, RT2870_4), RUN_DEV(SITECOMEU, RT3070), + RUN_DEV(SITECOMEU, RT3070_1), RUN_DEV(SITECOMEU, RT3070_2), RUN_DEV(SITECOMEU, RT3070_3), RUN_DEV(SITECOMEU, RT3070_4), From nobody Tue Apr 1 08:10:09 2025 X-Original-To: dev-commits-src-main@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 4ZRgf96Lmrz5s8fj; Tue, 01 Apr 2025 08:10: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRgf94wlGz3Q3B; Tue, 01 Apr 2025 08:10:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743495009; 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=jVHymtY7GJNbBsw2gsJfKZOEV2bCbNajebMitdZzJrg=; b=BQd+XDsxFrI2rEV0Tzft8v05DJUkysLI/+icpZTh6Usr9/Y/UhPUeAvAkplN3t0mGDETli eFO6VLgCFb7ku7j7v3l4KJ6pfCw1c59YevkkOjaVjZPPkvCJd9yk8Ij1Hxby9MyNcl9/Wb Xtt7FujDX4T7U3hYkiOAEfwUxEdQYpk2IKRQtic6+KM6knFOFYmAMKU8c0cTo5IDNfksZ/ oeZc810l2mrFVuJBuuwodXz9MocuLiYJ6qJzRvPRKcErmb/0BgGF3Upt22xRp0YLCMvIAN Op2UVPyeSfxDK8DBCzJje5qYk/JVTgCNQU8YeiKTEVNBnqOOqijuEpAwiPb/uw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743495009; a=rsa-sha256; cv=none; b=ev/w3m4o2nMKbuy+SJ7EpqX39NuSg6/ymtIDQ+fDZxRsBHLFfsjirm6tY3UYeXxIMBm8nR zndBU9z0qi6HYzzPA4vZrYzt5kT7QRXt/yQTqlPSGr/Ekxyu05NyCZIrj+rtT6kumNXxhv eoeesEs4gQsrhAcccgQKlVqsSVFySkFLrkI/YR0cjmLLVsYM13Bs9YmatfbZs4K7LPZX9/ sr0quk5iDUeZ17ezUihoKJsNY612OLWE/j4QOHiVQi/4fRHEXr7dFLJa1b1spDbJFee0RG 9PskEzkJg9i+w+xIjZ9y0UeBSy9nO0VD3UlRI3mkZ77z/iUvEDxZSdCkYxHICw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743495009; 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=jVHymtY7GJNbBsw2gsJfKZOEV2bCbNajebMitdZzJrg=; b=ydBJNHNwp5gC5UZyTDTd7gAvH9suOVICI+uiaW1Zu54C8+k4fjyKuV9XhCrNzPWd15+Lll EEFtKmAbzbH/aPLrN1j3CBL2Za4QqV8HWcrbEPwcTYMjrIt8iQ/qPt3WpxBmM+fhj5Z64e 8/kKRHXFDjgdtW/mbnhGO1IYPKrdtp/27DHLdR4y7r4yyc+P9UxvEnhvdB8t0g0wLSuqK7 yd7+S099r014hITTlfrgR+4qff9iNHMejTmzEN59RdHQfrGFwBv2VQW+mA3youZzGHKXt6 u9PSfwHiLWLBYUYoCbdg2ddHpXXcpxGoJQIZBBhBlLJ3JScslfnesFx2w4dCCQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRgf9434pz6hG; Tue, 01 Apr 2025 08:10:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5318A9TP073972; Tue, 1 Apr 2025 08:10:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5318A96d073963; Tue, 1 Apr 2025 08:10:09 GMT (envelope-from git) Date: Tue, 1 Apr 2025 08:10:09 GMT Message-Id: <202504010810.5318A96d073963@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Philip Paeps Subject: git: 91506dba7f2e - main - zoneinfo: also install tzdata.zi and version List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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/main X-Git-Reftype: branch X-Git-Commit: 91506dba7f2eb147eeb55ec30640bc11755a1e8e Auto-Submitted: auto-generated The branch main has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=91506dba7f2eb147eeb55ec30640bc11755a1e8e commit 91506dba7f2eb147eeb55ec30640bc11755a1e8e Author: Philip Paeps AuthorDate: 2025-04-01 08:09:37 +0000 Commit: Philip Paeps CommitDate: 2025-04-01 08:09:37 +0000 zoneinfo: also install tzdata.zi and version Build and install the shrunk version of the time zone database required by libc++ 19 std::chrono::current_zone (etc). While here, also install the tzdata 'version' file to align more closely with other vendors. PR: 282377 Reviewed by: dim, emaste, imp Differential Revision: https://reviews.freebsd.org/D49577 --- share/zoneinfo/Makefile | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/share/zoneinfo/Makefile b/share/zoneinfo/Makefile index 824dda827e44..e3111c915a93 100644 --- a/share/zoneinfo/Makefile +++ b/share/zoneinfo/Makefile @@ -98,6 +98,20 @@ zonefiles: ${TDATA} (umask 022; cd ${.CURDIR}; \ ${ZIC:Uzic} -D -d ${TZBUILDDIR} ${ZICFLAGS} -m ${NOBINMODE} \ ${LEAPFILE} ${TZFILES}) + (umask 022; cd ${TZBUILDDIR}; \ + read -r version <${CONTRIBDIR}version && \ + LC_ALL=C awk \ + -v DATAFORM='main' \ + -v PACKRATDATA='' \ + -v PACKRATLIST='' \ + -f ${CONTRIBDIR}ziguard.awk ${TZFILES} >${TZBUILDDIR}/main.zi; \ + LC_ALL=C awk \ + -v dataform='main' \ + -v deps='zishrink.awk' \ + -v redo='posix_only' \ + -v version="$$version" \ + -f ${CONTRIBDIR}zishrink.awk \ + main.zi >tzdata.zi; rm main.zi) (cd ${TZBUILDDIR} && find * -type f | LC_ALL=C sort) > ${.TARGET} beforeinstall: install-zoneinfo @@ -113,6 +127,8 @@ install-zoneinfo: ${CONTRIBDIR}/zone.tab ${DESTDIR}/usr/share/zoneinfo/ ${INSTALL} ${TAG_ARGS} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \ ${CONTRIBDIR}/zone1970.tab ${DESTDIR}/usr/share/zoneinfo/ + ${INSTALL} ${TAG_ARGS} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \ + ${CONTRIBDIR}/version ${DESTDIR}/usr/share/zoneinfo/ afterinstall: # From nobody Tue Apr 1 08:18:18 2025 X-Original-To: dev-commits-src-main@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 4ZRgqZ3Dc7z5s944; Tue, 01 Apr 2025 08:18: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRgqZ2F8Sz3Srw; Tue, 01 Apr 2025 08:18:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743495498; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=R/K9BZCaq79MGKpMwSIHm9POElrcpIwvxfulLcMuvCU=; b=bS5pPhUw+5Te6HxZeTqmuydn2IjqdkhRZzhllRl8PqHTiMZSNxCTyPJ0XJQwSpZQUJXV6j cTbmu1NgZs6ZyPNcPXw+fQcsXL1uvUtzQ0TxHPcvvikh23g/519FT8YlPxPhzUjGPu4UQM RcAIAtXWhi6r9OwXij4HTTbKl3xxIKVkYinG3LEhn09McEIePKlVQuJNfWV+NwRn1wbO6s 8gmrjWNyxWwbw+QcbsIw/nYBCbX8Zbotm/rATzJ3RfVwMXDZ6dztZ5sLkvqbjrNG1OTKq6 dYzORuyjaBLBeJ/shrsDo84Nlz4OuOEEKjHdBtfVJx+aICFvE1C95QXptahWOw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743495498; a=rsa-sha256; cv=none; b=IWhpabKRA3NP37ByDj4c+0FiZLU8rZ3H4vvWDMGoyOc7mAv1sy5ZqnN5hiL8HTmxbiKi7q ENMGoonl4l7mjAQvEPaAZ89IbRXzMgamAWAByPnCEdbe6LyWB8Bt/gbmzqkkjlFUi9R8B1 PZkYI7TyMa4a77W4NFWYE4YFzfOJr+DwtROASk9aT1IwLjQU0N/IQY/dyks0guLVC0+Y/C AKn+fchFzE7SPHVoaZdzH+yBUeUYzd5HUcvxpVCAUUvy+5vNB4g5XS4juzU//5OSLCsaUF kzpbgGrYEaOE630SpkP3CBdfQmKA7fFj6PpoYFW5h6z5xx08Q4ZudGrMPP8DKQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743495498; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=R/K9BZCaq79MGKpMwSIHm9POElrcpIwvxfulLcMuvCU=; b=TB9ApndK0d76WJGpnBZTrBW3Lg66hZ+OnNTJBUGvb17O8mp8zpjAx4l0amLVUPg4kL2elq JlNoy108kIUwfI7ymmI2JQ3AfOwomgifFwlqV9rcbS/cjFXHOzACDq7leA+20mCCIF0JmT V8ZbrAG1Unre5Fx/kBt2dc7apVMIa3SW8UM8EWccdTmTBIhxbfqLamELtn+38j+Hprlg97 qlEsdE+rRz9DuDaLk8NHwiq7Mu5FG0zZdvyZ4nBqQIZRfrx9wH44e5hFVq96wFu49qIxn8 3RqmX6Lw8A6DmtS3XhF1eTyjOpYIuN83r+gTvw/tFnZeAdxY/4vKqkWAv3PzJA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRgqZ1Y4Zz7Kw; Tue, 01 Apr 2025 08:18:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5318IIZa087949; Tue, 1 Apr 2025 08:18:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5318IIDu087946; Tue, 1 Apr 2025 08:18:18 GMT (envelope-from git) Date: Tue, 1 Apr 2025 08:18:18 GMT Message-Id: <202504010818.5318IIDu087946@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Tom Jones Subject: git: e9efa3ed25d4 - main - Add a kgdb python script to extract bbl from kernel dumps List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: thj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e9efa3ed25d4d5dad48a7bdf1816b79f3df5297d Auto-Submitted: auto-generated The branch main has been updated by thj: URL: https://cgit.FreeBSD.org/src/commit/?id=e9efa3ed25d4d5dad48a7bdf1816b79f3df5297d commit e9efa3ed25d4d5dad48a7bdf1816b79f3df5297d Author: Tom Jones AuthorDate: 2025-04-01 08:15:36 +0000 Commit: Tom Jones CommitDate: 2025-04-01 08:17:31 +0000 Add a kgdb python script to extract bbl from kernel dumps A kgdb script allows us to be relatively resilient to kernel structure changes, with a lower burden for updates when they happen than a C tool. tuexen@ requested we ship this script in a source distribution. Making it easier for users to extract useful debugging information from a core. It requires kgdb and python3 and would ideally be a lldb lua script, but there is more work needed on lldb lua before we can do that. Add the script as is. A single script we could run against a core would be nice, but I don't want to let that block making this tool more available. Reviewed by: teuxen, rrs Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D48705 --- tools/tools/kgdb/tcplog.py | 267 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 267 insertions(+) diff --git a/tools/tools/kgdb/tcplog.py b/tools/tools/kgdb/tcplog.py new file mode 100644 index 000000000000..380f5fc85b53 --- /dev/null +++ b/tools/tools/kgdb/tcplog.py @@ -0,0 +1,267 @@ +#!/usr/bin/env python3 + +#- +# SPDX-License-Identifier: BSD-2-Clause-FreeBSD +# +# This software was developed by Tom Jones under sponsorship +# from The FreeBSD Foundation + +## Extracting logs using the kgdb script +# +# This script extracts tcp black box logs from a kernel core for use with +# tcplog_dumper[1] and readbbr_log[2]. +# +# Some system configuration is required to enable black box logs +# +# [1]: https://github.com/Netflix/tcplog_dumper +# [2]: https://github.com/Netflix/read_bbrlog +# +# TCP Logs can be extracted from FreeBSD kernel core dumps using the gdb plugin +# provided in the `kgdb` directory. An example usage assuming relevant kernel +# builds and coredumps looks like: +# +# $ kgdb kernel-debug/kernel.debug vmcore.last +# Reading symbols from coredump/kernel-debug/kernel.debug... +# +# Unread portion of the kernel message buffer: +# KDB: enter: sysctl debug.kdb.enter +# +# __curthread () at /usr/src/sys/amd64/include/pcpu_aux.h:57 +# 57 __asm("movq %%gs:%P1,%0" : "=r" (td) : "n" (offsetof(struct pcpu, +# (kgdb) source tcplog.py +# (kgdb) tcplog_dump vnet0 +# processing struct tcpcb * 0xfffff80006e8ca80 +# _t_logstate: 4 _t_logpoint: 0 '\000' t_lognum: 25 t_logsn: 25 +# log written to 0xfffff80006e8ca80_tcp_log.bin +# processing struct tcpcb * 0xfffff8000ec2b540 +# _t_logstate: 4 _t_logpoint: 0 '\000' t_lognum: 8 t_logsn: 8 +# log written to 0xfffff8000ec2b540_tcp_log.bin +# processing struct tcpcb * 0xfffff80006bd9540 +# no logs +# processing struct tcpcb * 0xfffff80006bd9a80 +# no logs +# processing struct tcpcb * 0xfffff8001d837540 +# no logs +# processing struct tcpcb * 0xfffff8001d837000 +# no logs +# +# processed 1 vnets, dumped 2 logs +# 0xfffff80006e8ca80_tcp_log.bin 0xfffff8000ec2b540_tcp_log.bin +# +# +# The generated files can be given to tcplog_dumper to generate pcaps like so: +# +# $ tcplog_dumper -s -f 0xfffff80006e8ca80_tcp_log.bin +# + +import struct + +TLB_FLAG_RXBUF = 0x0001 #/* Includes receive buffer info */ +TLB_FLAG_TXBUF = 0x0002 #/* Includes send buffer info */ +TLB_FLAG_HDR = 0x0004 #/* Includes a TCP header */ +TLB_FLAG_VERBOSE = 0x0008 #/* Includes function/line numbers */ +TLB_FLAG_STACKINFO = 0x0010 #/* Includes stack-specific info */ + +TCP_LOG_BUF_VER = 9 # from netinet/tcp_log_buf.h +TCP_LOG_DEV_TYPE_BBR = 1 # from dev/tcp_log/tcp_log_dev.h + +TCP_LOG_ID_LEN = 64 +TCP_LOG_TAG_LEN = 32 +TCP_LOG_REASON_LEN = 32 + +AF_INET = 2 +AF_INET6 = 28 + +INC_ISIPV6 = 0x01 + +class TCPLogDump(gdb.Command): + + def __init__(self): + super(TCPLogDump, self).__init__( + "tcplog_dump", gdb.COMMAND_USER + ) + + def dump_tcpcb(self, tcpcb): + if tcpcb['t_lognum'] == 0: + print("processing {}\t{}\n\tno logs".format(tcpcb.type, tcpcb)) + return + else: + print("processing {}\t{}".format(tcpcb.type, tcpcb)) + + print("\t_t_logstate:\t{} _t_logpoint:\t{} t_lognum:\t{} t_logsn:\t{}".format( + tcpcb['_t_logstate'], tcpcb['_t_logpoint'], tcpcb['t_lognum'], tcpcb['t_logsn'])) + + eaddr = (tcpcb['t_logs']['stqh_first']) + log_buf = bytes() + while eaddr != 0: + log_buf += self.print_tcplog_entry(eaddr) + eaddr = eaddr.dereference()['tlm_queue']['stqe_next'] + + if log_buf: + filename = "{}_tcp_log.bin".format(tcpcb) + + with open(filename, "wb") as f: + f.write(self.format_header(tcpcb, eaddr, len(log_buf))) + f.write(log_buf) + self.logfiles_dumped.append(filename) + print("\tlog written to {}".format(filename)) + + # tcpcb, entry address, length of data for header + def format_header(self, tcpcb, eaddr, datalen): + # Get a handle we can use to read memory + inf = gdb.inferiors()[0] # in a coredump this should always be safe + + # Add the common header + hdrlen = gdb.parse_and_eval("sizeof(struct tcp_log_header)") + hdr = struct.pack("=llq", TCP_LOG_BUF_VER, TCP_LOG_DEV_TYPE_BBR, hdrlen+datalen) + + inp = tcpcb.cast(gdb.lookup_type("struct inpcb").pointer()) + + # Add entry->tldl_ie + bufaddr = gdb.parse_and_eval( + "&(((struct inpcb *){})->inp_inc.inc_ie)".format(tcpcb)) + length = gdb.parse_and_eval("sizeof(struct in_endpoints)") + hdr += inf.read_memory(bufaddr, length).tobytes() + + # Add boot time + hdr += struct.pack("=16x") # BOOTTIME + + # Add id, tag and reason as UNKNOWN + + unknown = bytes("UNKNOWN", "ascii") + + hdr += struct.pack("={}s{}s{}s" + .format(TCP_LOG_ID_LEN, TCP_LOG_TAG_LEN, TCP_LOG_REASON_LEN), + unknown, unknown, unknown + ) + + # Add entry->tldl_af + if inp['inp_inc']['inc_flags'] & INC_ISIPV6: + hdr += struct.pack("=b", AF_INET6) + else: + hdr += struct.pack("=b", AF_INET) + + hdr += struct.pack("=7x") # pad[7] + + if len(hdr) != hdrlen: + print("header len {} bytes NOT CORRECT should be {}".format(len(hdr), hdrlen)) + + return hdr + + def print_tcplog_entry(self, eaddr): + # implement tcp_log_logs_to_buf + entry = eaddr.dereference() + + # If header is present copy out entire buffer + # otherwise copy just to the start of the header. + if entry['tlm_buf']['tlb_eventflags'] & TLB_FLAG_HDR: + length = gdb.parse_and_eval("sizeof(struct tcp_log_buffer)") + else: + length = gdb.parse_and_eval("&((struct tcp_log_buffer *) 0)->tlb_th") + + bufaddr = gdb.parse_and_eval("&(((struct tcp_log_mem *){})->tlm_buf)".format(eaddr)) + + # Get a handle we can use to read memory + inf = gdb.inferiors()[0] # in a coredump this should always be safe + buf_mem = inf.read_memory(bufaddr, length).tobytes() + + # If needed copy out a header size worth of 0 bytes + # this was a simple expression untiil gdb got involved. + if not entry['tlm_buf']['tlb_eventflags'] & TLB_FLAG_HDR: + buf_mem += bytes([0 for b + in range( + gdb.parse_and_eval("sizeof(struct tcp_log_buffer) - {}".format(length)) + ) + ]) + + # If verbose is set: + if entry['tlm_buf']['tlb_eventflags'] & TLB_FLAG_VERBOSE: + bufaddr = gdb.parse_and_eval("&(((struct tcp_log_mem *){})->tlm_v)".format(eaddr)) + length = gdb.parse_and_eval("sizeof(struct tcp_log_verbose)") + buf_mem += inf.read_memory(bufaddr, length).tobytes() + + return buf_mem + + def dump_vnet(self, vnet): + # This is the general access pattern for something in a vnet. + cmd = "(struct inpcbinfo*)((((struct vnet *) {} )->vnet_data_base) + (uintptr_t )&vnet_entry_tcbinfo)".format(vnet) + ti = gdb.parse_and_eval(cmd) + + # Get the inplist head (struct inpcb *)(struct inpcbinfo*)({})->ipi_listhead + inplist = ti['ipi_listhead'] + self.walk_inplist(inplist) + + def walk_inplist(self, inplist): + inp = inplist['clh_first'] + while inp != 0: + self.dump_tcpcb(inp.cast(gdb.lookup_type("struct tcpcb").pointer())) + inp = inp['inp_list']['cle_next'] + + def walk_vnets(self, vnet): + vnets = [] + while vnet != 0: + vnets.append(vnet) + vnet = vnet['vnet_le']['le_next'] + return vnets + + def complete(self, text, word): + return gdb.COMPLETE_SYMBOL + + def invoke(self, args, from_tty): + if not args: + self.usage() + return + + self.logfiles_dumped = [] + + node = gdb.parse_and_eval(args) + + # If we are passed vnet0 pull out the first vnet, it is always there. + if str(node.type) == "struct vnet_list_head *": + print("finding start of the vnet list and continuing") + node = node["lh_first"] + + if str(node.type) == "struct vnet *": + vnets = self.walk_vnets(node) + for vnet in vnets: + self.dump_vnet(vnet) + + print("\nprocessed {} vnets, dumped {} logs\n\t{}" + .format(len(vnets), len(self.logfiles_dumped), " ".join(self.logfiles_dumped))) + elif str(node.type) == "struct inpcbinfo *": + inplist = node['ipi_listhead'] + self.walk_inplist(inplist) + + print("\ndumped {} logs\n\t{}" + .format(len(self.logfiles_dumped), " ".join(self.logfiles_dumped))) + elif str(node.type) == "struct tcpcb *": + self.dump_tcpcb(node) + else: + self.usage() + + return + + def usage(self): + print("tcplog_dump
") + print("Locate tcp_log_buffers and write them to a file") + print("Address can be one of:") + print("\tvnet list head (i.e. vnet0)") + print("\tvnet directly") + print("\tinpcbinfo") + print("\ttcpcb") + print("\nIf given anything other than a struct tcpcb *, will try and walk all available members") + print("that can be found") + print("\n") + print("logs will be written to files in cwd in the format:") + print("\t\t `%p_tcp_log.bin` struct tcpcb *") + print("\t\t existing files will be stomped on") + print("\nexamples:\n") + print("\t(kgdb) tcplog_dump vnet0") + print("\t(kgdb) tcplog_dump (struct inpcbinfo *)V_tcbinfo # on a non-vnet kernel (maybe, untested)") + print("\t(kgdb) tcplog_dump (struct tcpcb *)0xfffff80006e8ca80") + print("\t\twill result in a file called: 0xfffff80006e8ca80_tcp_log.bin\n\n") + + return + +TCPLogDump() + From nobody Tue Apr 1 08:19:20 2025 X-Original-To: dev-commits-src-main@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 4ZRgsR53vbz5s9Fk; Tue, 01 Apr 2025 08:19:55 +0000 (UTC) (envelope-from thj@freebsd.org) Received: from fout-a5-smtp.messagingengine.com (fout-a5-smtp.messagingengine.com [103.168.172.148]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRgsR42dQz3VD3; Tue, 01 Apr 2025 08:19:55 +0000 (UTC) (envelope-from thj@freebsd.org) Authentication-Results: mx1.freebsd.org; none Received: from phl-compute-13.internal (phl-compute-13.phl.internal [10.202.2.53]) by mailfout.phl.internal (Postfix) with ESMTP id E675E1384566; Tue, 1 Apr 2025 04:19:54 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-13.internal (MEProxy); Tue, 01 Apr 2025 04:19:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; t=1743495594; x=1743581994; bh=7 2t5+5aqXNv/Ck/UeXUw74mEVlGSiccMCgNjBzAk2Jk=; b=qj3JtS0lJTeMQv/6N P0ekCLizKKELlebqb4SYJkAJcCRqxjodKbawhGlnOhZy2dfsyesnaAKlJloh1a6o 6P5sv+tRztuPBedjjQdEepD1hyDITu6EJtQXH9VJikCmIo2GOJfQvYatss4rHO2y 966z1xSD5fdAeVidAhdP9Q6BHyW7fm2lwp9QiK6eEa0allURtc2YGV67On6/kPpc XHBH0cDaPg7wrkoxSgq5FUtgT9Y5H1xRRpas1BfKCYGIi4uNdvuSVfGaJ4UcPYVE QAd7EIPSOzxUOl5jJWjoKJ7qoiMu0FJV6DgdWhlZN1eXHJawBJukkkBxb5/iugLL Bk0sw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddukedvfedtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhepofggfffhvffkjghfufgtgfesthejredtredt tdenucfhrhhomhepfdfvohhmucflohhnvghsfdcuoehthhhjsehfrhgvvggsshgurdhorh hgqeenucggtffrrghtthgvrhhnpeeitdfhvdejuddvjeeuudduhfehtdduleehtdfghfej ledvhfejuedvieeljeejgfenucffohhmrghinhepfhhrvggvsghsugdrohhrghenucevlh hushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehthhhjsehfrhgv vggsshgurdhorhhgpdhnsggprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprh gtphhtthhopeguvghvqdgtohhmmhhithhsqdhsrhgtqdgrlhhlsehfrhgvvggsshgurdho rhhgpdhrtghpthhtohepuggvvhdqtghomhhmihhtshdqshhrtgdqmhgrihhnsehfrhgvvg gsshgurdhorhhgpdhrtghpthhtoheprhhmsehfrhgvvggsshgurdhorhhgpdhrtghpthht ohepshhrtgdqtghomhhmihhtthgvrhhssehfrhgvvggsshgurdhorhhg X-ME-Proxy: Feedback-ID: ib75146ab:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id AA298BA006F; Tue, 1 Apr 2025 04:19:54 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 X-ThreadId: Tfc9e6b13354e4541 Date: Tue, 01 Apr 2025 09:19:20 +0100 From: "Tom Jones" To: "Ruslan Makhmatkhanov" , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Message-Id: <21d25fe5-9bc2-4a9a-a828-e0fffebfb397@app.fastmail.com> In-Reply-To: <27cc3bec-d002-4b65-b503-ac195379e823@FreeBSD.org> References: <202503311243.52VCh9PU088854@gitrepo.freebsd.org> <27cc3bec-d002-4b65-b503-ac195379e823@FreeBSD.org> Subject: Re: git: 2ad0f7e91582 - main - Import iwx as ported from OpenBSD by Future Crew. Content-Type: text/plain Content-Transfer-Encoding: 7bit X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:151847, ipnet:103.168.172.0/24, country:AU] X-Rspamd-Queue-Id: 4ZRgsR42dQz3VD3 X-Spamd-Bar: ---- On Mon, Mar 31, 2025, at 23:39, Ruslan Makhmatkhanov wrote: > Tom Jones wrote on 3/31/25 3:43 PM: >> The branch main has been updated by thj: >> >> URL: https://cgit.FreeBSD.org/src/commit/?id=2ad0f7e91582dde5475ceb1a1942930549e5c628 >> >> commit 2ad0f7e91582dde5475ceb1a1942930549e5c628 >> Author: Tom Jones >> AuthorDate: 2025-03-31 12:24:15 +0000 >> Commit: Tom Jones >> CommitDate: 2025-03-31 12:42:31 +0000 >> >> Import iwx as ported from OpenBSD by Future Crew. > > Wow! nobody expected the Spanish Inquisition. That's great, thank you! > Works smoothly at glance. I had this in dmesg, not sure if it's known > issue (should I submit PR?): Thanks for the report, I think this is an issue with the tx lock. I'm working with adrian@ to further improve iwx and resolve these issues - Tom From nobody Tue Apr 1 13:30:06 2025 X-Original-To: dev-commits-src-main@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 4ZRplL6k5Cz5rXLN; Tue, 01 Apr 2025 13:30: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRplL5PjSz3Sw2; Tue, 01 Apr 2025 13:30:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743514206; 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=Hn+ome3yCLSItvPlTRRZbqs9gOJ4hXDNStkVc9mvnIk=; b=bRbOfkb17axcwTk7IS/PvM7Tz5BZl9WSRiPJsDlQw+6Ln0SPKCj70JCptIAbFDC0is0xah PQn8wlkYte4RfCfIw73c1PubOoMdPJ7NiakCOI3TB6bRDjgT+zo4X3zzLl+3QBDJwXSP3q avftKXC44wSIijqXYTIGJYWt+0sLXQLEa9cFEVwmpxacXOwQA/7nGy0d35isti9sH7mwpX e8KVpfS0GaZFHjnZLG9ajDE0fTQm3tlO+k+oMEeOa+dMfEF8Z2c+EpmwnxLlys1ilNu5dF uKivqIyFx93vmp8B60CDa+DTZDwLqJOT8If9dO5e1fxapQHw3Zo9QK9ONv/9wg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743514206; a=rsa-sha256; cv=none; b=LgmX0ccXfCCFP4wNIutaW7S3Dd79BYRg0pO9vo+RQhhJycJLW94J47YB02bJqXEp6QfEAB Nqm52sRrC7hPXXBv135F6c1tJwxlX6suIf9sBQbz5aYR1xAc0dwOwEYDPoMpQUzYuwuIz8 VV4GhgOM2gvOSLh0U99VsAYCSxLuZslwWv0LQfxMoG087A6LrY+XMkkbNjqdk1G1+tpWWT /BUbqSR4YQXsufSrgJ7u2L0JZoBqQeal1CJsLWsmhYFCARo/+pDhsGzPB3gV4GLh90U3y3 DLGgJCedQAYr0ZCO/KsheZ0lLWq7KhETg5mFeOOD2ozcoANa74z7o2LgExlf2g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743514206; 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=Hn+ome3yCLSItvPlTRRZbqs9gOJ4hXDNStkVc9mvnIk=; b=lTPTrJSxRbTSZExHZYzDOw87NH8UD6mgmXMmpdA7T8btSqHNJ5Zd9XZua1eG6ngrdC0lu/ 9TDKfxdsh9DagN6HQyuaId1hqc3ByjZk8JXHghne4+GOna/MiKeRH9QoCwX0wI56wDxTyd dRhYw3ohqPoyFIw6MblTXUVroB1jIJkIG0yCob5YosctbrYjP34DBnuCLswFZ4RXPst8AW IgHKAu0bTJeAf8s3eClf8+cFQpSd4qciejnzYiSBxq0tLqIETwgUhIymVoKVBvVW9VuHrc 1uUuvWhdGFWhfvmQ085fCY7T3Cc0uA2TiXC0/9jEMlmUQ6ktECMT8lH02TKcDw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRplL4gVpzZ2r; Tue, 01 Apr 2025 13:30:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 531DU6Sv071128; Tue, 1 Apr 2025 13:30:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531DU6QO071123; Tue, 1 Apr 2025 13:30:06 GMT (envelope-from git) Date: Tue, 1 Apr 2025 13:30:06 GMT Message-Id: <202504011330.531DU6QO071123@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Christos Margiolis Subject: git: 8900283fa37f - main - pkg.7: Add example for fetching package for different FreeBSD versions List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8900283fa37f6555055d8af5ffa1a5a2fbe2940e Auto-Submitted: auto-generated The branch main has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=8900283fa37f6555055d8af5ffa1a5a2fbe2940e commit 8900283fa37f6555055d8af5ffa1a5a2fbe2940e Author: Christos Margiolis AuthorDate: 2025-04-01 13:29:50 +0000 Commit: Christos Margiolis CommitDate: 2025-04-01 13:29:50 +0000 pkg.7: Add example for fetching package for different FreeBSD versions MFC after: 1 week Reviewed by: bapt Differential Revision: https://reviews.freebsd.org/D49580 --- usr.sbin/pkg/pkg.7 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/usr.sbin/pkg/pkg.7 b/usr.sbin/pkg/pkg.7 index 605653bbd8c6..982fd8ecaeb3 100644 --- a/usr.sbin/pkg/pkg.7 +++ b/usr.sbin/pkg/pkg.7 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd August 24, 2022 +.Dd March 30, 2025 .Dt PKG 7 .Os .Sh NAME @@ -313,6 +313,11 @@ Check installed packages for checksum mismatches: .Pp Check for missing dependencies: .Dl # pkg check -d -a +.Pp +Fetch a package for a different +.Fx +version, along with all its dependencies: +.Dl # pkg -o ABI=FreeBSD:15:amd64 -o IGNORE_OSVERSION=yes fetch -o destdir -d perl .Sh SEE ALSO .Xr ports 7 , .Xr pkg 8 From nobody Tue Apr 1 13:59:46 2025 X-Original-To: dev-commits-src-main@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 4ZRqPZ2l3Jz5rZDN; Tue, 01 Apr 2025 13:59: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRqPZ290Rz3gyd; Tue, 01 Apr 2025 13:59:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743515986; 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=NIzELiZIHLCD3O1xf42gLafhTHLScgSxjbuHX77IvG8=; b=H1RWBTLvnqieJQaZocReipHY7KoWUdlDDsLd4ECuU9sGgVljQk6PFnlpk2uwBF9YW7kQmk i5UxZSZeW/eLbg68POLRm5FUPeugCkNh/ruoZeIJUY0FSePuzP016cTyC2+JuwbHxNTCgV FB4MrGk8MjnBF5/EfJq7OHt25C6pZt7yj+gAGkErj434jYA/9e0K3u5Ms5SRXKC7zFQGbC T354kHnmKAF6p1WQrrtaFCjimcRvaQatPT721GA3GOBbffYkk7H38UrECbPosKHYkjxxpi qMrJK3T1NREWpOk+kd5p0u9FPJzxt+QBvKE4RoUD7REKRUcBxppHE18p82AfSg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743515986; a=rsa-sha256; cv=none; b=EkwJ7dDets7FRsOKn9qkPfg9eJ83466Y+fnLVwVi8rCXTk0BlqgpTESxpxPuiyeRH14MaR qwt2KpTAAJ//ggiRuGPsVchJJFJMWYN/Qk3IWTuHZ5CZPoGk8ekuzPXK6pTPKKH5CLykzD wxbyw7cr6s/mXXkYhnXMcTt/sbdOV0hMLXT4gkf3H9u1hHy4rTtC06GqhdONWvzkvKWrsa MCvje1Gp+LfYTdu+PWYGLjY0q9QLo1J8Aoy2Gt//YOgVJV02iM/2Bm3CTFVqdRI0tGeTWJ kLmxtEKcEBFAMxvYt61L/BcHMnzDLcNbzqACAmePbnPxqjKLbq14bEnomTfI7Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743515986; 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=NIzELiZIHLCD3O1xf42gLafhTHLScgSxjbuHX77IvG8=; b=DAu1hay49FdrcMzmv/O6tYC/1Y5cfMg9nWPk/whvzM0xTby3nnefaEkLIGKGqZK8dLpghO KZFbCNsPYO0TQpzzaiV6t+uOrSeXvCeLJ66BlPKJvsUCaAJzyxLzhEU+DgJ3DEinhy1ADP DhV0V1pEKitB/Cp5eKCAqR2+Alvwe9CMkVPpv94xEfzFGToIVG+M2x60edB2+UKBkjdDV/ ta1O6LLFTeWSNEPx6IcreDwG01YxuqxWB004XHWlGLGLkrEDBdNW+2qZNrTvsEX+CMtg5W kpIJnb/u9d4pzcmk84cvw5o7oLvuDFG0ocBuoBsC3wTk24AH4b//UTIsZ4cXyQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRqPZ1Sg5zZtH; Tue, 01 Apr 2025 13:59:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 531Dxk24023698; Tue, 1 Apr 2025 13:59:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531DxkKu023695; Tue, 1 Apr 2025 13:59:46 GMT (envelope-from git) Date: Tue, 1 Apr 2025 13:59:46 GMT Message-Id: <202504011359.531DxkKu023695@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 5abef29833d3 - main - fts: Stop abusing the comma operator. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5abef29833d32d257a20b61732993987dd2a6056 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=5abef29833d32d257a20b61732993987dd2a6056 commit 5abef29833d32d257a20b61732993987dd2a6056 Author: Dag-Erling Smørgrav AuthorDate: 2025-04-01 13:56:52 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-04-01 13:59:42 +0000 fts: Stop abusing the comma operator. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: allanjude Differential Revision: https://reviews.freebsd.org/D49624 --- lib/libc/gen/fts.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/libc/gen/fts.c b/lib/libc/gen/fts.c index 80f98a993123..0c26c91feb84 100644 --- a/lib/libc/gen/fts.c +++ b/lib/libc/gen/fts.c @@ -900,10 +900,12 @@ fts_stat(FTS *sp, FTSENT *p, int follow, int dfd) int saved_errno; const char *path; - if (dfd == -1) - path = p->fts_accpath, dfd = AT_FDCWD; - else + if (dfd == -1) { + path = p->fts_accpath; + dfd = AT_FDCWD; + } else { path = p->fts_name; + } /* If user needs stat info, stat buffer already allocated. */ sbp = ISSET(FTS_NOSTAT) ? &sb : p->fts_statp; From nobody Tue Apr 1 14:25:43 2025 X-Original-To: dev-commits-src-main@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 4ZRqzW2cXtz5rcDK; Tue, 01 Apr 2025 14:25: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRqzW1ptmz3pbX; Tue, 01 Apr 2025 14:25:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743517543; 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=W9i1oohFGaqYaZ+QDBdbmSmhkCUcLfmcZpXY0aCOgdE=; b=r50sjTIB1hkqpNhQzZgDniZSeL5Gn9zxcpUBTe6/4MzE8uM0j8XuVzVCpuO94RY7pIFLlW PMgj0n9g+MBFVCOQo4NgUc/gOJs+m9q9OaTUe5AEm5oDeaWY/K5VmuDDk2ER8ADlufCNrt XT+L0sdes+ZurshNRDUH5iFVAVK/D9dIyPTYhnbK5JHTnpIOdnKd9w79ks84gFzpwsqmxx Rg8DFJTqnU0P/8M7QQJ+8pIdxBz9KZtIg00sqEyKAqVSDH165qWob1xOkTMwmBZBcQgl9X 5qmsEiMbZG5JVgSad665YGvR1Eh9YM/DkkX1esys3WLexT2hnz94G6mjXJkHVA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743517543; a=rsa-sha256; cv=none; b=Z/+y4cEhnBKAglpQC3TZgaEuO6oeIL68bwGxGS/htltGSg+XVm9XWXOGyJMinXb54WcTxv LS+Is3QIn4tUxyYTqIg6GeDu6bwSlH2OcLJhugO25S35z+NozP2w+HLNKnxO0VAPU3pScJ 1Gbgd4YRy/iaMtBvlJR4fO1g/navtkxjQ/FF+HZCzoKrBNuSd1wW4kffebRlZSnCOCwIxU jQZaCGVNzxuH3ENcQ8992/EnzCeuRXmFWZo5YYxxQBORPsI4t3Wg5h+ahcMCm84TLHcZLW JM9jKCkeF33zlhXs2YOXuAZ744sMIKgbjoKtWwHxzydw5e8xHjNCet0tosuqqw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743517543; 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=W9i1oohFGaqYaZ+QDBdbmSmhkCUcLfmcZpXY0aCOgdE=; b=Kys+quHFaS+UHO13fv+/jE37c4tKPs9S2aw5UluaJeEbUETEoFejW3cK8qQvfy0hLEukzu lOMso8zY6kam3X4GhsTG/XNQzNmddwgJ1QuM7T1f4AMVTI35VY/5ndqcvIfbedTNUHrsCi 3puZmPbNrdj0fB2+TCriapmjeuxJgzN0LOXeH1y56LOarVZj+ipAHFlKGcGV8LSngeBrE8 pwUMrAXdmKa+NoVPut71Dh8vTqv0+843VDEH/2I91zfsyDagpopcd8CoUrpPZASY3qbPTT tMX4X/na/YqHH1S/SBjULn/Bt/tsgbeNVWWx8vMJo4QMWASt/sqZBxYTpm7KVg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRqzW1P4Czbd5; Tue, 01 Apr 2025 14:25:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 531EPhZi078871; Tue, 1 Apr 2025 14:25:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531EPhu4078868; Tue, 1 Apr 2025 14:25:43 GMT (envelope-from git) Date: Tue, 1 Apr 2025 14:25:43 GMT Message-Id: <202504011425.531EPhu4078868@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 04a7134c1e92 - main - if_ovpn: fix use-after-free of mbuf List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 04a7134c1e92c7752ffdc665f99ae26db70866c0 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=04a7134c1e92c7752ffdc665f99ae26db70866c0 commit 04a7134c1e92c7752ffdc665f99ae26db70866c0 Author: Kristof Provost AuthorDate: 2025-04-01 13:19:26 +0000 Commit: Kristof Provost CommitDate: 2025-04-01 14:15:29 +0000 if_ovpn: fix use-after-free of mbuf m_unshare() can return a new mbuf pointer. We update the 'm' pointer in ovpn_udp_input(), but if we decide to pass on the packet (e.g. because it's for an unknown peer) the caller (udp_append()) continues with the old 'm' pointer, eventually resulting in a use-after-free. Re-order operations in ovpn_udp_input() so that we don't modify the 'm' pointer until we're committed to keeping the packet. PR: 283426 Test case by: takahiro.kurosawa@gmail.com MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") --- sys/net/if_ovpn.c | 12 +++--- tests/sys/net/if_ovpn/if_ovpn.sh | 81 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 6 deletions(-) diff --git a/sys/net/if_ovpn.c b/sys/net/if_ovpn.c index cbcfe15dffc7..7bdbc565f4ca 100644 --- a/sys/net/if_ovpn.c +++ b/sys/net/if_ovpn.c @@ -2248,12 +2248,6 @@ ovpn_udp_input(struct mbuf *m, int off, struct inpcb *inp, M_ASSERTPKTHDR(m); - m = m_unshare(m, M_NOWAIT); - if (m == NULL) { - OVPN_COUNTER_ADD(sc, nomem_data_pkts_in, 1); - return (true); - } - OVPN_COUNTER_ADD(sc, transport_bytes_received, m->m_pkthdr.len - off); ohdrlen = sizeof(*ohdr) - sizeof(ohdr->auth_tag); @@ -2281,6 +2275,12 @@ ovpn_udp_input(struct mbuf *m, int off, struct inpcb *inp, return (false); } + m = m_unshare(m, M_NOWAIT); + if (m == NULL) { + OVPN_COUNTER_ADD(sc, nomem_data_pkts_in, 1); + return (true); + } + m = m_pullup(m, off + sizeof(*uhdr) + ohdrlen); if (m == NULL) { OVPN_RUNLOCK(sc); diff --git a/tests/sys/net/if_ovpn/if_ovpn.sh b/tests/sys/net/if_ovpn/if_ovpn.sh index ea1eed88de9e..2138e0f666ec 100644 --- a/tests/sys/net/if_ovpn/if_ovpn.sh +++ b/tests/sys/net/if_ovpn/if_ovpn.sh @@ -106,6 +106,86 @@ atf_test_case "4in4" "cleanup" ovpn_cleanup } +atf_test_case "bz283426" "cleanup" +bz283426_head() +{ + atf_set descr 'FreeBSD Bugzilla 283426' + atf_set require.user root + atf_set require.progs openvpn python3 +} + +bz283426_body() +{ + ovpn_init + + l=$(vnet_mkepair) + + vnet_mkjail a ${l}a + jexec a ifconfig ${l}a 192.0.2.1/24 up + vnet_mkjail b ${l}b + jexec b ifconfig ${l}b 192.0.2.2/24 up + + # Sanity check + atf_check -s exit:0 -o ignore jexec a ping -c 1 192.0.2.2 + + ovpn_start a " + dev ovpn0 + dev-type tun + proto udp4 + + cipher AES-256-GCM + auth SHA256 + + bind 0.0.0.0:1194 + server 198.51.100.0 255.255.255.0 + ca $(atf_get_srcdir)/ca.crt + cert $(atf_get_srcdir)/server.crt + key $(atf_get_srcdir)/server.key + dh $(atf_get_srcdir)/dh.pem + + mode server + script-security 2 + auth-user-pass-verify /usr/bin/true via-env + topology subnet + + keepalive 100 600 + " + ovpn_start b " + dev tun0 + dev-type tun + + client + + remote 192.0.2.1 + auth-user-pass $(atf_get_srcdir)/user.pass + + ca $(atf_get_srcdir)/ca.crt + cert $(atf_get_srcdir)/client.crt + key $(atf_get_srcdir)/client.key + dh $(atf_get_srcdir)/dh.pem + + keepalive 100 600 + " + + # Give the tunnel time to come up + sleep 10 + + atf_check -s exit:0 -o ignore jexec b ping -c 1 198.51.100.1 + + # Send a broadcast packet in the outer link. + echo "import socket as sk +s = sk.socket(sk.AF_INET, sk.SOCK_DGRAM) +s.setsockopt(sk.SOL_SOCKET, sk.SO_BROADCAST, 1) +s.sendto(b'x' * 1000, ('192.0.2.255', 1194))" | jexec b python3 + + atf_check -s exit:0 -o ignore jexec b ping -c 3 198.51.100.1 +} + +bz283426_cleanup() +{ + ovpn_cleanup +} + atf_test_case "4mapped" "cleanup" 4mapped_head() { @@ -1072,6 +1152,7 @@ destroy_unused_cleanup() atf_init_test_cases() { atf_add_test_case "4in4" + atf_add_test_case "bz283426" atf_add_test_case "4mapped" atf_add_test_case "6in4" atf_add_test_case "6in6" From nobody Tue Apr 1 14:39:12 2025 X-Original-To: dev-commits-src-main@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 4ZRrH50nFdz5rd7r; Tue, 01 Apr 2025 14:39:13 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRrH50CXXz3wKj; Tue, 01 Apr 2025 14:39:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743518353; 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=NBeLtVWfrA2SnfxFXrWR+zaLJreTnqPleotyvgVtwHA=; b=fxjG1D6UhNbG48Lu3I5UOT9lUjzTIJDX3j1DBlFiRe98VSHUwNMrr4IjvKMlaQuYyfe+SU 45n/5LpanJ4BNd6e6kewyeSag97M1dqJRwEndezd2b623A9Utn5erplh84A0BCnZAzs1B7 5KqbZvXZ6NzJSFi//NWw7Kbu6aATsJHr2GzKlkkctNQ0/5xNm2iHpT0S5sqZCVf9U+Mxpn JtkK4KLD1YU8qhqH7IS8N8z2l/z4ZW2906ch2/ui/XNWNRX5yQG8luHnOZGoPATJYnKqbr 8nyHBULngpgOuCHsOImXzmDAFNomoDw9TZ7ZYTGRYAAK2DA5XwurDIoB7SgL5g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743518353; a=rsa-sha256; cv=none; b=C76+leRtAZOzWW1pGjtvaQo4GxcNWOhBVVwaTyO502dpKMxkM8ktpYMUMPsSazHrWVy0wP uDi8V6DvFI0qW7JuUE7o/hFOM7vYbvt2CVaaCUXMKnygmBFVr/+kMlQssVzSHRFoOoA8eb tSh9CuC/YwZGik4PZZheERemJ2Hb3se2ahfO2Axlc1Bdp/Lp45GAwjtUie6IvTMlxHe3rk VDZF3z+V6PMDB46j4ThGaqHS/MAU32PoQCocOVxbR8aiK5ma9qLFPmQq/8/KJ8ceNK66Ny laJnLr92HF9a2R6xUH62CdekQhZjGpP05mqiEw9Esu9m3vgOXrBxlmHwsnG4Yw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743518353; 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=NBeLtVWfrA2SnfxFXrWR+zaLJreTnqPleotyvgVtwHA=; b=dORewgHOKQgFTz52NCBZtoCsrVfLBQy66VCrnCcnNmf1DRwjqUCPSN+PSBPuopkv1wvynk 3Mox9BVIrECS/r0G1Oh2Tm9S0WYRxUNMJNL1EM95WX5qd+Uz3KYAoThd66XQ9j+ZtS3Dps J1U2HwzE7rQT17AxQUvRwebZ1qFUBHnTzqikfpdeTBAQWdhaa7n53+u+eHy0RrD5n0Vi4q esQ7aAAlMvvFh23qzMeVzjukJ+aW8J2I7IylWI0i+2HKkym2zWqQ9WWHIB5P7ymcz7PXMC xgqc4lzdERvpaPj1oARyMRU+fEKnBoLuY+fWRy7QuhUY5Hy92bdDynR1ixLheA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRrH46dGSzbK6; Tue, 01 Apr 2025 14:39:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 531EdCru098275; Tue, 1 Apr 2025 14:39:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531EdCPG098272; Tue, 1 Apr 2025 14:39:12 GMT (envelope-from git) Date: Tue, 1 Apr 2025 14:39:12 GMT Message-Id: <202504011439.531EdCPG098272@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: a12a9c6c5976 - main - LinuxKPI: be more verbose on _bus_dmamap_load_phys failures if debug is on List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a12a9c6c59764b876f06355f9f857e0018188d91 Auto-Submitted: auto-generated The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=a12a9c6c59764b876f06355f9f857e0018188d91 commit a12a9c6c59764b876f06355f9f857e0018188d91 Author: Bjoern A. Zeeb AuthorDate: 2025-03-29 14:31:18 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-04-01 14:37:28 +0000 LinuxKPI: be more verbose on _bus_dmamap_load_phys failures if debug is on With the [k]malloc adjustments in switching skbuff from using a tunable and conditional contigmalloc with boundries to using __kmalloc as allocator should just work. The allocations are now physically contiguous and nseg=1 should be fine even if we have to bounce. The problem now coming back is that busdma bounce code cannot deal with larger contiguous nseg=1 allocations. I originally found that on arm64 more than two years ago but I am also seeing it for amd64 now. Improve the debugging beyond the dump_stack() call and print the busdma error (so we know if it is EFBIG or else), print the physical address so we can see better if we should bounce and print the length so we have an idea on what lengths we are failing. D45813 has some observations and rtw88 seems to be a good driver to test with. Sponsored by: The FreeBSD Foundation MFC after: 3 days Reviewed by: dumbbell Differential Revision: https://reviews.freebsd.org/D49569 --- sys/compat/linuxkpi/common/src/linux_pci.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sys/compat/linuxkpi/common/src/linux_pci.c b/sys/compat/linuxkpi/common/src/linux_pci.c index a9942a657dce..fa5e3c71fad0 100644 --- a/sys/compat/linuxkpi/common/src/linux_pci.c +++ b/sys/compat/linuxkpi/common/src/linux_pci.c @@ -1471,14 +1471,19 @@ linux_dma_map_phys_common(struct device *dev, vm_paddr_t phys, size_t len, } nseg = -1; - if (_bus_dmamap_load_phys(obj->dmat, obj->dmamap, phys, len, - BUS_DMA_NOWAIT, &seg, &nseg) != 0) { + error = _bus_dmamap_load_phys(obj->dmat, obj->dmamap, phys, len, + BUS_DMA_NOWAIT, &seg, &nseg); + if (error != 0) { bus_dmamap_destroy(obj->dmat, obj->dmamap); DMA_PRIV_UNLOCK(priv); uma_zfree(linux_dma_obj_zone, obj); counter_u64_add(lkpi_pci_nseg1_fail, 1); - if (linuxkpi_debug) + if (linuxkpi_debug) { + device_printf(dev->bsddev, "%s: _bus_dmamap_load_phys " + "error %d, phys %#018jx len %zu\n", __func__, + error, (uintmax_t)phys, len); dump_stack(); + } return (0); } From nobody Tue Apr 1 14:41:38 2025 X-Original-To: dev-commits-src-main@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 4ZRrKv0kMpz5rd1b; Tue, 01 Apr 2025 14:41: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRrKt6SVHz3xRc; Tue, 01 Apr 2025 14:41:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743518498; 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=H+wvBnk4jjjd3KtcoGzCIytSoNtrL3EEHdssStcKd8U=; b=fPA9dBVYchz3N1NHOcb6dJREe33FC6OnpFse/NEpPOotyD9MjpsDpZikVMbHN+4owNpc51 TTm8sA91Fj5LnsiiT8GU7oK5tRn9No1u2vDG9ZEbyAuLHDTxml+C3ceREf37iVEXw5XRDh +cYVcYqjhfVuo0Za+zzR7F5DGrg3iWfBxUeYzDvSgzktOPmZrstZ7yFX5bphN7g2JY/d1M TVv86b77Hcc4sOiLblhpVZ+/SyvbwMpvbGbskc8HY27d/Gf6cAy5igpZtVy3Oi89r+gJ08 bBurg6WqexB81mVSWIVO9HwGvMeuppkUSoWof6qN0bsBnfTgdIf/Ca0igiKmPQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743518498; a=rsa-sha256; cv=none; b=N7KL+Qv9qh5Ooy3U6MYJ99p76Gf2jL0HJQ6/4St1xaHYRPcVQx+JYbLsmVlyp/FlMJ7PCl S3bmITz075QJPfYi6abmc8DGzNt/bLubg95kxjjvYsOlLCpG4zHewWs2wA3pC5CgOmN669 t2Xv6P3YfkUaUVpQfRUpYqAnK4xjzd7PO6f5xxz3ICTfO4GfZsdjwDxUIPnOtccpMZgsFp mNaYVF5mxCS0x1PbDjRJ/MM55v/tQ60IaUUzPJIcdfbYKIlfB5yOyUyfEuAOPbQ8E1j8SL WSm1hBRVJtoHx3qYmc+9KI1n8RoGpKtNhuUOEbF21+UMbffaz016PUpYj58XeA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743518498; 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=H+wvBnk4jjjd3KtcoGzCIytSoNtrL3EEHdssStcKd8U=; b=Tejhi51f1MxCbx+61I3aT6Ls5WhlaBZpDqHc2xoPCLx1oXiNkwo14pisxVBSlVl4o+bsjG VkHp7JWB3VasmVNmsIvEdbVmKWWtABlrNTbZjBhQsaJTRQkXk9iKWeoEJRjmaazdklDTX7 YqYy/PbtZSiwlTHPnTKonMygPOcA6+hant5x3p43oHdxC8biQ9OdJ+Jgh4gsg4nO00SyRd NtdPmKhBGqh5heEyiIRfPp3eu3AQddcFdDwdtc0MFxiYicBEuSPPW/5FkBJw//DSoXR+g3 5Lr+1MS+e1JaEt18qbyC7Oh89HJswEoRma0AQ6uRi/dMUlO2qlFlJLNJkQ9Rng== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRrKt5vbrzbfD; Tue, 01 Apr 2025 14:41:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 531EfcGG009649; Tue, 1 Apr 2025 14:41:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531EfcBO009646; Tue, 1 Apr 2025 14:41:38 GMT (envelope-from git) Date: Tue, 1 Apr 2025 14:41:38 GMT Message-Id: <202504011441.531EfcBO009646@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 19efc9e6320a - main - LinuxKPi: lkpi___kmalloc change a < into <= for proper boundry check List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 19efc9e6320a30e230b0b40d5bae90142ec13aeb Auto-Submitted: auto-generated The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=19efc9e6320a30e230b0b40d5bae90142ec13aeb commit 19efc9e6320a30e230b0b40d5bae90142ec13aeb Author: Bjoern A. Zeeb AuthorDate: 2025-03-29 14:30:26 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-04-01 14:40:25 +0000 LinuxKPi: lkpi___kmalloc change a < into <= for proper boundry check lkpi___kmalloc() would use contigmalloc if the requested size is exactly PAGE_SIZE. But we can still fullfill this request from malloc() without losing the guarantee of physical contiguous memory. Sponsored by: The FreeBSD Foundation Reported by: emaste (in D46656) Fixes: 19df0c5abcb9d MFC after: 3 days Reviewed by: dumbbell, emaste Differential Revision: https://reviews.freebsd.org/D49570 --- sys/compat/linuxkpi/common/src/linux_slab.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/compat/linuxkpi/common/src/linux_slab.c b/sys/compat/linuxkpi/common/src/linux_slab.c index 5be4c1ec674c..bc780ab3f609 100644 --- a/sys/compat/linuxkpi/common/src/linux_slab.c +++ b/sys/compat/linuxkpi/common/src/linux_slab.c @@ -215,7 +215,7 @@ lkpi___kmalloc(size_t size, gfp_t flags) /* sizeof(struct llist_node) is used for kfree_async(). */ _s = MAX(size, sizeof(struct llist_node)); - if (_s < PAGE_SIZE) + if (_s <= PAGE_SIZE) return (malloc(_s, M_KMALLOC, linux_check_m_flags(flags))); else return (contigmalloc(_s, M_KMALLOC, linux_check_m_flags(flags), From nobody Tue Apr 1 16:21:16 2025 X-Original-To: dev-commits-src-main@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 4ZRtY14ykfz5rlhg; Tue, 01 Apr 2025 16:21:25 +0000 (UTC) (envelope-from jhb@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRtY118l9z3dnd; Tue, 01 Apr 2025 16:21:25 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743524485; 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=OS6O3QAvaXYnh+UM0ilVGsqmYZtgabL1m8cb0WhQqw0=; b=cjUKdsNG9OC0J5B3q3ZbqU3Q/LCD9dn9nyuRL568M0DezYorGJRrVauZ27BFTUtSwE8lNr KbESNE620NbHPJXh7AKmZmgzMvz4eLkO+wZxaMVBHesBwB2DASLZsrDqBKHBDG/gWjPf6G a1W1G5ckZnDp90Rp9mTFPbY1uJUu/9YR5hqTc8kTE9kwsDTPnggJ9nB1PSp/uGlYxHr5ov RllyGr/NNRnxLDslGIHq3UH+wVgCi2VgIWM8OI2BXN81ceaRzkIyNJ8XBHPTzTmIU1anXN 63+fTeGJxkp16AsHlmDDDX1Jhkwa15JcwiauumZSfbJSZ/mte1PX7kKoRX5x3g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743524485; a=rsa-sha256; cv=none; b=oOhcrtGfEBymE2q74VpBkzhmZ3+Hu6Euf2kInR2H5icAIWo6yFNA0kQaS/NvyAUgfd7D4b dHg3RP9TqIGQK6AZjvLGDAgFcvOd2bq9G/g18tlIpwdRTuS/H0rkloe4LYTLWsv1yC10hb kLxEJZrFJFxln5KUfoTJuFpnc5ggDUs4xWU+cYs6oxzFcewoZa8h3rlSYepWf6wH7MEmKB uQCLebwfKSIVLdlcBEbXKdfYmRD9I3IL2iZtclYFAUU316i1BG9JNhtg/Ottbg8c8aF8f2 CLU/8FphG1cJE1uAV1lqxFSuTS+zktgqWVzhis9AtwaS4D4DgN/mYQJzQb5RvQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743524485; 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=OS6O3QAvaXYnh+UM0ilVGsqmYZtgabL1m8cb0WhQqw0=; b=SYxDcKZSetvS3MW+W2WzKU+tj/56Wz2sh4Um5TfZRM4kko9ICcJRn0mGpqzoDERTTH8t15 RiavwMxw2yZBFtaDHJN2Z3l2USQlt/X/pOx2Rm0Jz7/xJgwjxxV6RCd6d5/1aId7YEUDVr JjtRRvaNJs8RIurnIlc/EIVmwmI+xAcjJh9XaI6HrWfsz4c+FmGnkuJ599KvwUq9qr7VKw G17LTy6sMpZpjJ/dPxlywJLMsTLPylhP0nuq7/akdTBTTtQoD/ZstFS4N342Jzk2MlBGFL bZIap10fwni6/EA/XO3WoahncIoYqgxB9Kw+J83mtU34C3uOhjjvBzFb0POLhg== Received: from [IPV6:2a05:b400:110:12fe::54] (user-12fe-54.svr-vpn-1.vpn.cl.cam.ac.uk [IPv6:2a05:b400:110:12fe::54]) (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 4ZRtXz6J5vzGBY; Tue, 01 Apr 2025 16:21:23 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: Date: Tue, 1 Apr 2025 12:21:16 -0400 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 0e33c2e6df7a - main - pci: Only re-route IRQs based on firmware on x86 Content-Language: en-US To: Jessica Clarke , Colin Percival Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" References: <202503292018.52TKI7va048377@gitrepo.freebsd.org> From: John Baldwin In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 3/31/25 14:14, Jessica Clarke wrote: > On 29 Mar 2025, at 20:18, Colin Percival wrote: >> >> The branch main has been updated by cperciva: >> >> URL: https://cgit.FreeBSD.org/src/commit/?id=0e33c2e6df7a5de65db40c7cc0fc97f66da28ccd >> >> commit 0e33c2e6df7a5de65db40c7cc0fc97f66da28ccd >> Author: Colin Percival >> AuthorDate: 2025-03-28 18:07:01 +0000 >> Commit: Colin Percival >> CommitDate: 2025-03-29 20:17:29 +0000 >> >> pci: Only re-route IRQs based on firmware on x86 >> >> There is a (very historical) call to pci_assign_interrupt for the >> purpose of routing IRQs which may have been set up wrong by x86 BIOS >> or firmware. On non-x86 systems, this is unnecessary; and on INTRNG >> systems it results in a (synthetic) IRQ leak and ultimately a kernel >> panic after many hotplug/unplug cycles. > > This is in fact incorrect. Whilst there may well be a leak that needs > fixing, the rerouting is absolutely needed on non-x86 platforms. See > 5884fab46153dee52bda660bcabca95c3cc97f44 and > 7de649170fd804668da78f005c7966941b402106 for some of the history behind > this. As a result of this commit the problem described in the second > commit is reintroduced. Hmm, this is my bad as I should have remembered those. However, as the second commit log alludes to, INTRng does not really match the design of what is intended here and what the PCI bus currently expects. The intr_map[] entry should probably only be allocated when the INTx IRQ is allocated via bus_alloc_resource() with a rid of 0, not when the IRQ is routed. In particular, there is no "unroute" callback which is where the leak comes from. The intention of routing is to confirm which pin on a PIC a PCI INTx line is connected to. It is not to actually allocate the interrupt as the routing may never get used if either MSI is used instead or if no driver attaches. The 0x20-0x23 you mention in the second commit log should probably be the IRQ value used instead of a dynamically allocated value, and the dynamically allocated value should be allocated as a result of bus_alloc_resource and stored internally. x86 manages to do this today with the mapping of (local APIC, IDT vector) tuples not encoded in the IRQ values. -- John Baldwin From nobody Tue Apr 1 17:09:59 2025 X-Original-To: dev-commits-src-main@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 4ZRvd40cZ6z5rpvP; Tue, 01 Apr 2025 17:10: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRvd34Dxyz41Jq; Tue, 01 Apr 2025 17:09:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743527399; 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=I+1eJLH7F648NLL9vVZ/Dn9X1XhYtwHWJFF8t/+5+Ys=; b=oOiWYrbHt+O+A1/tXc2DkwTU4Wreyiv3qpObWAPeSEIJeJh8DZyyZi6laKvZzHPgFhWRvo 7DnED3lU9VUpuP1XUNGeg3Xsocv+OxMgfiObe1CvtqAcY6b4ws++E6V5T8Dbw8o+xh/2nh 3uPz1RQDWOk0g5ojda6864LIkeFOli+KXmVzPJ8SzgKhCsKUCDBM4HjC6PRvCRqznyYRWN +3Q4n7L8evg/zwpyw/exTIDgaUHqGe22hxc6OYdgPwBI0cdDWTv9cXnyfA2KRMy6P+LX4e BXSnExsWaKzpeqsi0THzny45nc0JMwQIrOUSBr7DUKiZQ7gZDOPjtIm62G2P/A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743527399; a=rsa-sha256; cv=none; b=gTeAGCcB/lOc311KMDnUDMwB5QafJr7bTTAeGBigcLC2pWGP3RWC8wiRlm4mYAnxzAgpyK Tc6K5TdxnVPOBhKLBrVKEfkPs461qyxmBCxhUD7aOs0+Mr5JmkiF2jbUZwvUPL6ulII/nC l28bCGNaigTdmvCTNlwMgBn7peiFxLCCdVjB5kvRLdt3VnUqntmFBI0GzIq15eI1r6cO4Z EwvbYd84YcQ7xuqZhOhbUIZAGD3Wk1/HLJ4rbEy4YOwDrG6fXXYDf5HDrFaJeSe0pj6Fkp xq6xzSbdl2ARK7sLUYJAcaNgoNuXQuiZEi6EW50xTOm9Wy5YBEzj0kM0kmOrog== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743527399; 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=I+1eJLH7F648NLL9vVZ/Dn9X1XhYtwHWJFF8t/+5+Ys=; b=HTwZVZG3rA3D/8rrcRrZV2rEF6ofCTPoQ0sutxut+N237Mjqa7FfPQrHqSD/7g6YRJEjJ1 IOTqM91DkCuSOlpUwK+pksyz8n1bAQTh5mBrBRb9o7/MkVMLH9OYzxzRdjeh4Zga2oz23s zx8uNxmpIn+N5gqnvSxMCZsM+3dvmKrQKNBbXJzvr8IcFAVhwDE3/TI1ne7FJMM9MaTT1H BAEmaxAWIoz6fi7cs8A1sTilTB6fGUapw896BFVojpuf21iO2glZhTr+a3yiiyjRnOsgro 1nvWYsqixqdr3jpnhqBLfK64outl+7Pc4hEATXAQgTN7kwtuB/lGOnyMuO1VAg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRvd339dNzg0f; Tue, 01 Apr 2025 17:09:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 531H9xw0077004; Tue, 1 Apr 2025 17:09:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531H9x5t077001; Tue, 1 Apr 2025 17:09:59 GMT (envelope-from git) Date: Tue, 1 Apr 2025 17:09:59 GMT Message-Id: <202504011709.531H9x5t077001@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Igor Ostapenko Subject: git: ea1e4a7dd9bc - main - tests.7: Announce allow_network_access test suite conf variable List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: igoro X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ea1e4a7dd9bcf1f46f55e4cc2dac6fa273bd3358 Auto-Submitted: auto-generated The branch main has been updated by igoro: URL: https://cgit.FreeBSD.org/src/commit/?id=ea1e4a7dd9bcf1f46f55e4cc2dac6fa273bd3358 commit ea1e4a7dd9bcf1f46f55e4cc2dac6fa273bd3358 Author: Igor Ostapenko AuthorDate: 2025-04-01 17:08:48 +0000 Commit: Igor Ostapenko CommitDate: 2025-04-01 17:08:48 +0000 tests.7: Announce allow_network_access test suite conf variable Reviewed by: olivier Differential Revision: https://reviews.freebsd.org/D49594 --- share/man/man7/tests.7 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/share/man/man7/tests.7 b/share/man/man7/tests.7 index 1fbaad7d42a0..3cca7bdb1b91 100644 --- a/share/man/man7/tests.7 +++ b/share/man/man7/tests.7 @@ -171,6 +171,9 @@ Enables tests that change globally significant .Xr sysctl 8 variables. The tests will undo any changes in their cleanup phases. +.It allow_network_access +Enables tests that need to access the network the test host is connected to. +Such tests may require properly configured Internet access. .It disks Must be set to a space delimited list of disk device nodes. Tests that need destructive access to disks must use these devices. From nobody Tue Apr 1 22:56:31 2025 X-Original-To: dev-commits-src-main@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 4ZS3Jv5FV3z5sFRq; Tue, 01 Apr 2025 22:56: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZS3Jv30rtz3TcX; Tue, 01 Apr 2025 22:56:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548191; 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=mHUizYajC0yQjvZSEiL5S6DfdH4UWKCJ1D0LLGPguII=; b=wY7ltH0Mzo5u1gTevlZnekWeh9OQujE+Wh7C4llXZSADvjyQXrvvvlrDJJkVCFIZTXiPrb S81LVW8n9NBzN1oCU89z2hroX+QI2mVGgHDl/lBIV+O9TYxAtboTlf4uCnd17wF+sAZz0M QzQXF2Af0Qi/5JRLXv1XBd3wH5pjeXTWgko6FiLtDBktbR1e6GYq9IfM+v4/Vitbu2tcrb P5SQnEuXuS4s7Mt9Vw7IcyO4rOVdhnBuXeJ2oNIGBJ7obIU8KXGjyybUY693lc9y+sA4wn E7AkAcTkylu+PK0z+dRffkESz0jZpe1scowkcIvW/YXYBmK+JihoFH9BKOPSUQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743548191; a=rsa-sha256; cv=none; b=pg3n4r21zDaXcOP9BRf0Xnkgmv3eyChQYgRHGPdgaFU8ieS0Mt/1zU4XpsTIsKl6hdbyQt DzMA52ASNgAWGCYdKvi8PNTB6pz9mYb5HpW/Oypmi/jk0VRFdDHaz7go2v4uXmWo3Y94B2 5x2CXVBxC+9x+Legx11uSUlPdP5wE7+QfWbRyiVAKRD+rBoHfvUar1zQlKBzqcDpkHBXGc Wy7y4WTSJxcWBNj3MTNPpJkta0SGEiXGutgmb0HTZBNUo7vzYrIyYo5TjI/MtVQX5nd8/0 oZFzQPeKddPwykpKAHMRTu1DAIbW/4Xwv+1rkGySDC6SoblGTj5Jx5bAhBJIhQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548191; 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=mHUizYajC0yQjvZSEiL5S6DfdH4UWKCJ1D0LLGPguII=; b=KYZQDDwjqQg0VCR49XmIq6wIfVVw/4gp/39OWiJeP+w28fGhiOygiY5Rs7phhuUvkxgDpQ KT+Vqa1NLkg6cwB1mjMUFeBJ9GRDQfUauh4/SRt+ggCrd7oNaKv6X+ynWIwmWzQK1IZ/+S Yi8EWlOs23IHOD6vMIdUDHlIwdw9qEBaSuVXd+Ou9sb4tDefA2Yc1vr74M2xKXYcjxQBqo GL3Gj6OPyvRoUunGlLfLTgSfyQubA0PFWZKkrOvI6OvSwK+zPrL9h02GJyiEw1NgwIpzL8 g1QpGb58+/Esq/AxxsPgBhHxHaMJ/n/hsNpui/rvD49ljaNLdqGTURr+BXc7TA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZS3Jv2X8Qzqv3; Tue, 01 Apr 2025 22:56:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 531MuVfp029567; Tue, 1 Apr 2025 22:56:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531MuVEn029564; Tue, 1 Apr 2025 22:56:31 GMT (envelope-from git) Date: Tue, 1 Apr 2025 22:56:31 GMT Message-Id: <202504012256.531MuVEn029564@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 45f70f98fc55 - main - iommu_gas_map_region(): add comment explaining the ma array shift List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 45f70f98fc55b753b1e7a7374b4a061aa1f27392 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=45f70f98fc55b753b1e7a7374b4a061aa1f27392 commit 45f70f98fc55b753b1e7a7374b4a061aa1f27392 Author: Konstantin Belousov AuthorDate: 2025-01-25 09:37:50 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-01 22:23:17 +0000 iommu_gas_map_region(): add comment explaining the ma array shift and the difference between start and entry->start values at this point. Sponsored by: Advanced Micro Devices (AMD) Sponsored by: The FreeBSD Foundation MFC after: 3 days --- sys/dev/iommu/iommu_gas.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sys/dev/iommu/iommu_gas.c b/sys/dev/iommu/iommu_gas.c index d97bdee47b28..ffa8dc096adc 100644 --- a/sys/dev/iommu/iommu_gas.c +++ b/sys/dev/iommu/iommu_gas.c @@ -875,6 +875,11 @@ iommu_gas_map_region(struct iommu_domain *domain, struct iommu_map_entry *entry, if (entry->end == entry->start) return (0); + /* + * iommu_gas_alloc_region() might clipped the entry start and + * end positions. Adjust the beginning of the ma array to map + * the pages at the requested relative positions. + */ error = domain->ops->map(domain, entry, ma + OFF_TO_IDX(start - entry->start), eflags, ((flags & IOMMU_MF_CANWAIT) != 0 ? IOMMU_PGF_WAITOK : 0)); From nobody Tue Apr 1 22:59:50 2025 X-Original-To: dev-commits-src-main@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 4ZS3Nk5c4yz5sFXd; Tue, 01 Apr 2025 22:59:50 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZS3Nk58Y8z3WvY; Tue, 01 Apr 2025 22:59:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548390; 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=v2eOC/arh+SD2rdAfzlciEJyX7zUovPqN0EjC9OYI0M=; b=Wv7FYZ8BgygtuQZGrz/Q0qGzWbwBqaXQ/2cnAkcoxn1WX0+jlsqfMvEudnj0gM7zJotgQU 5q9iAdCkwKJcyNj3wkyj6pfEm/ojGbB1p7L6TY0+gcaWmSMCzo+1mxHRF/FI28oqX3b5K9 ZhxJxKriYVZoUkfxcJSAHYau391Kw5orGxp0x/hCQQbU2YzkjfXwP2r52fmlqWB7rIsliJ TArW80XJiu+3UrXbnM5eOfKHmAnPZUs2Q0j0EMI8Meq35IktWf0NozGrnZlVI5A+tdz5pe e4UIDOcby8EpsfgsSyNSLIv8rJFTFjw+RLcLYd9ChHPR6tDn6dhGLMRDODzBWA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743548390; a=rsa-sha256; cv=none; b=m5wdil+U4l5TVnDcs3UI9+5yJJbFPM8QO7WxId1Lbnj3RPqql+s4Z/RGD3Z3VLUJIBqY+c T29ZBTr6WNjz4Cs/GdU4G5iboKEeKfEplwwWeZBNowf+kbiqs84eYxyBMcWu5d7kqmIInZ k4tYkJWlLPqXePGSAHz88Hzjgk3xszJU3g4ypFC0hL67tnbU4hrUoEcipmH7qxBrVKCw7Z e3Yt4grFGXy987hBGLbh7FBzBUmR7JmG0pYj58EuPvOAeYFdf+2Ne8hZ3rTW84JSldRHD3 j5+WSL+OrsPWRrT5kj7d7TXG+PSFGQTmtO06lK3bxHvIkcBNrvEmsDYCOdLC2Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548390; 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=v2eOC/arh+SD2rdAfzlciEJyX7zUovPqN0EjC9OYI0M=; b=Vj+3TG/QMZAwNQ10oxbjQy/xktkz/DaZxHNXil5hSxkKIQg8xyOjR1hjmHzDWqCxKeKdbt YHIy8VVtNeMsXmmcjxp8mFQszC6TZIsJr3leEISDM5+6Es23+wBoqlrczezccrAXxJ1uhz qednYOjAMXPgtD1sn6UHl8ih2YCs6u/I1GBj8g1RIIb49XMsq1dyDbTnReg6bLNav/sqSq 8RRb17i5RfOraa1ogv7VpRwDz6HYFUhloKHFGJE4SoViwLIxTmWCjE8gM5KWs2hy9RGZlO z/eDuFsMO08Tr/4JksXTVDGKpCivn9fJQlg//XeIS/DUDGVYfzumSCRUF0kvOg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZS3Nk4ksSzrGy; Tue, 01 Apr 2025 22:59:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 531Mxonn030669; Tue, 1 Apr 2025 22:59:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531MxoD3030666; Tue, 1 Apr 2025 22:59:50 GMT (envelope-from git) Date: Tue, 1 Apr 2025 22:59:50 GMT Message-Id: <202504012259.531MxoD3030666@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 299bb57d9b71 - main - bhyve: style, add comma to the last line of designated initializer List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 299bb57d9b71be2b033a92033268d8b1c732e4fe Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=299bb57d9b71be2b033a92033268d8b1c732e4fe commit 299bb57d9b71be2b033a92033268d8b1c732e4fe Author: Konstantin Belousov AuthorDate: 2023-12-19 15:57:43 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-01 22:59:16 +0000 bhyve: style, add comma to the last line of designated initializer Sponsored by: The FreeBSD Foundation MFC after: 3 days --- sys/amd64/vmm/amd/amdvi_hw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/amd64/vmm/amd/amdvi_hw.c b/sys/amd64/vmm/amd/amdvi_hw.c index 881bfa2ef946..87283325600c 100644 --- a/sys/amd64/vmm/amd/amdvi_hw.c +++ b/sys/amd64/vmm/amd/amdvi_hw.c @@ -1378,5 +1378,5 @@ const struct iommu_ops iommu_ops_amd = { .remove_mapping = amdvi_remove_mapping, .add_device = amdvi_add_device, .remove_device = amdvi_remove_device, - .invalidate_tlb = amdvi_invalidate_tlb + .invalidate_tlb = amdvi_invalidate_tlb, }; From nobody Tue Apr 1 23:07:13 2025 X-Original-To: dev-commits-src-main@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 4ZS3YF5LSCz5sG3g; Tue, 01 Apr 2025 23:07:13 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZS3YF3sGBz3dKb; Tue, 01 Apr 2025 23:07:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548833; 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=L3Blpnpffj6uNAsFGDHusZrjl+scvwspN+uLO9GQHsk=; b=pRf7RywIoYNPU5RB+ccDPKO3Fl1jtK3bhaOk2hQyQIW7BleLazxc/MP3DfTT6RtC4MzSts jQVkB6chG6Y2M1n9GpQ7AHOuHdugSoECdJD1YdYEA+Mviue+AYzRvvIjTDslPikOYaDqpm 0IZYqeeRll+UmRKq6vlY0vuYrOXW1uxUgY/r4EKtPO34dohgQw9t8mJ9Gs1P16FASmCW+O fe7r85ZeWiEW23VxV7rCYCOeC/EbRALzrejjBMS/WCEAxRccQlb5mmXfzfhO1p1XLpM7Sm zbJHbNt1q9I4bvZZSmUvYXYoi2hxg1Tc7cWeTsBW1ro/qq9wXIYprQvAMRz1hQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743548833; a=rsa-sha256; cv=none; b=vLp/GKJ6mu37B71cN4qJqxc+pOtRNL0rjIbwiDOT80zFNxlMxevMwWVvhx/c9tfit+W9IR rEXt/9MY15Mct8nOkPe4o2V24k1YxSSywjkaYAP4axEpJSNN+AXMnfWFmUNz6ViKDypN/K 4QKyqdVnb42xdHpdS5vFvyIa1dYfubhrSqdxQp99TRujWkCCjGifwmLZ0/HcIyXz1QVEbd 062iv2NBQRT+pgcLhAspHvz0NxFkHk0Mr/W0luV7LBAUVzy5RTINLmyfyn0ZxSnXHn+22Z mEeW4NFZ4kYoPW6dUNEskgKVqedV8qbDAJ2y7YngVa4giDxr8W7lmG5BXQJbDA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548833; 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=L3Blpnpffj6uNAsFGDHusZrjl+scvwspN+uLO9GQHsk=; b=aHEaOGYsUnmVjrQmc5MxTGvgLJJwYPCgTMtMW74YzekRGhAhZbDghV19VMlAm0kRExSC9S asKvWrVdu1+HxvRuyqn+QqC7z5ICfoxSi9HoccIIaH/OuHnvRGOudw/5SglGNz6ot6V1Kk SEYpiMXYuL6tW0FvqQsOmQYPnK8sYM8OAyUVck4IXYAUggrPF3VKTL+CfN8CdwmvIkGYis wEJXddi3mwNkCHyuQvgtkna+nKLAqxeky+lnnYFFsbpXGPaxC0OOUAwuX13psAsEOwTUPg ggE6gs4PmJC+eJlpkzO6nnRcupxa8IlMZDj5uSz4/1G8egZQ82tYRmczG8K8YQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZS3YF38cWzqw2; Tue, 01 Apr 2025 23:07:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 531N7DRt050454; Tue, 1 Apr 2025 23:07:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531N7D7b050451; Tue, 1 Apr 2025 23:07:13 GMT (envelope-from git) Date: Tue, 1 Apr 2025 23:07:13 GMT Message-Id: <202504012307.531N7D7b050451@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 512bb0da518b - main - x86/dmar: add dmar_is_running() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 512bb0da518be1dff3f937b7f653c6d3deb4b071 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=512bb0da518be1dff3f937b7f653c6d3deb4b071 commit 512bb0da518be1dff3f937b7f653c6d3deb4b071 Author: Konstantin Belousov AuthorDate: 2023-12-14 02:06:04 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-01 23:01:34 +0000 x86/dmar: add dmar_is_running() Sponsored by: Advanced Micro Devices (AMD) Sponsored by: The FreeBSD Foundation MFC after: 1 week --- sys/x86/iommu/intel_dmar.h | 2 ++ sys/x86/iommu/intel_drv.c | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/sys/x86/iommu/intel_dmar.h b/sys/x86/iommu/intel_dmar.h index 57a66aae69b2..018501082dd2 100644 --- a/sys/x86/iommu/intel_dmar.h +++ b/sys/x86/iommu/intel_dmar.h @@ -263,6 +263,8 @@ int dmar_map_ioapic_intr(u_int ioapic_id, u_int cpu, u_int vector, bool edge, bool activehi, int irq, u_int *cookie, uint32_t *hi, uint32_t *lo); int dmar_unmap_ioapic_intr(u_int ioapic_id, u_int *cookie); +int dmar_is_running(void); + extern int haw; extern int dmar_rmrr_enable; diff --git a/sys/x86/iommu/intel_drv.c b/sys/x86/iommu/intel_drv.c index dd2a3d1a631f..28db14bba95b 100644 --- a/sys/x86/iommu/intel_drv.c +++ b/sys/x86/iommu/intel_drv.c @@ -86,6 +86,7 @@ static device_t *dmar_devs; static int dmar_devcnt; +static bool dmar_running = false; typedef int (*dmar_iter_t)(ACPI_DMAR_HEADER *, void *); @@ -539,6 +540,7 @@ dmar_attach(device_t dev) DMAR_UNLOCK(unit); #endif + dmar_running = true; return (0); } @@ -1055,6 +1057,13 @@ dmar_inst_rmrr_iter(ACPI_DMAR_HEADER *dmarh, void *arg) } +int +dmar_is_running(void) +{ + + return (dmar_running ? 0 : ENXIO); +} + /* * Pre-create all contexts for the DMAR which have RMRR entries. */ From nobody Wed Apr 2 02:57:56 2025 X-Original-To: dev-commits-src-main@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 4ZS8gT34hdz5sWfD; Wed, 02 Apr 2025 02:57: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZS8gT0mnRz3gbB; Wed, 02 Apr 2025 02:57:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743562677; 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=pKlEBTmBwJNSzAVR0r41/hH1ZxZ5RMeNMqLnr509ACI=; b=H3MCZZdSd1fOAMDAz9c2+9GzHuhuNZI8O5INz/8w3dePqksYvVleSCCpSANY+G1NAsvUH/ I0axm/cM6A4e0sr7GgqxlQqYu0LreayH+SocVRLSpf5+TSioKjR8mF1XVoGVdCT+XdvfBr ViclQ+w0J4roRTEp6EkWuBcD2AWb/jjn3+WPTQy4HQ+YL7SVx3yMROJDUS4UWeO/NJG0iy TVJcMHzwf6ZAuM5alCgMEakSddwtjORwoXvzNjrfKQ093t6co7G8SeN1iWK4iVixvjhk4S 6PiI2obryIZf4xlLVNCrYhcPClBV6c7yF3ilwMyvYCsCmrcZktav33k40dIceg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743562677; a=rsa-sha256; cv=none; b=pgzJRFR9fTQEGq/hdjzXCDM3c144owWwjSNw6IejlO1jjGPeCa5623MXe+YLgxIDWxlMQW H1dU4DiMG6IQDerV0fNfxLMMPIEkLzFT/bRisChTigdXSt5tSF0h1cRm2JQZl5KYrymKjZ uCVK8HnyGOSIgfsUC9SumC7GbgGcRKkdnagdAKqttU9nXy93Q92JxEjbHp5MCF17LG8Xpo rPx5UyeHDOm0nGXIwrsqXceQtxlDAgMlVXtxyFQApeJHMdv/C6o2CRgn0EH1xAYl4X5KFO f8Dk8X2oFCEgA4YXz0yH2OnNudLWi3lhmbpIPVvg7Tbev2Xd6AakHr4ywmGENw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743562677; 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=pKlEBTmBwJNSzAVR0r41/hH1ZxZ5RMeNMqLnr509ACI=; b=lKTzQAe6nksJMUwLwupjYOrLnOIQ688gca3FqrHYScmkDPVY9j4bBLV5cPNWBMFLfRrzui wlW03ETlyKH3c2+mNKJTZojlkFYCRczHAPd1e0LB0+LcbCuWkbSg7fOLv8YVRe7lJIIJWs RT+QM+WSNYgPNYGy588FhjtxVCTR+jdRkSJnKTNOA5OiL4H6VTKFNLSMGBNRoQ/m0yFnNH VME9vUta2BCBF5QYLtm3IhnAHYtFdy4cFX/DvSx+Clb2wIG7USjQttewtasbvudvmDnbPw CP27kwhCD7ifArSgLt5HQefe1FvO7UnNHYPuv0ceEJvq4jbDrNDwyoPubjpjVQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZS8gT0LwwzyCV; Wed, 02 Apr 2025 02:57:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5322vuho078590; Wed, 2 Apr 2025 02:57:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5322vuj0078587; Wed, 2 Apr 2025 02:57:56 GMT (envelope-from git) Date: Wed, 2 Apr 2025 02:57:56 GMT Message-Id: <202504020257.5322vuj0078587@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: ba2336d3044c - main - arm64: add a driver for the uart found on Apple Silicon machines List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ba2336d3044c681462224c12879ecc8f659be54a Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=ba2336d3044c681462224c12879ecc8f659be54a commit ba2336d3044c681462224c12879ecc8f659be54a Author: Kyle Evans AuthorDate: 2025-04-02 02:57:16 +0000 Commit: Kyle Evans CommitDate: 2025-04-02 02:57:17 +0000 arm64: add a driver for the uart found on Apple Silicon machines This is a revival of the old exynos4210 driver, with some additional bits to configure the apple "s5l" uart (which is actually slightly different to operate). This hasn't been tested on anything that would hit the non-s5l path, so banish it off to the apple/ domain until someone cares to confirm that none of the other hardware is broken -- it may be that nobody does, but the complexity isn't too bad: mostly the driver1 construct added to the uart_bas that we use to avoid having a whole bunch of shims for uart driver methods and hardcoded references to the cfg structs. Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D48120 --- sys/arm64/apple/exynos_uart.c | 568 ++++++++++++++++++++++++++++++++++++++++++ sys/arm64/apple/exynos_uart.h | 136 ++++++++++ sys/conf/files.arm64 | 1 + sys/dev/uart/uart.h | 1 + 4 files changed, 706 insertions(+) diff --git a/sys/arm64/apple/exynos_uart.c b/sys/arm64/apple/exynos_uart.c new file mode 100644 index 000000000000..2767c338b918 --- /dev/null +++ b/sys/arm64/apple/exynos_uart.c @@ -0,0 +1,568 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2003 Marcel Moolenaar + * Copyright (c) 2007-2009 Andrew Turner + * Copyright (c) 2013 Ruslan Bukin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include "uart_if.h" + +struct exynos_uart_cfg; + +#define DEF_CLK 100000000 + +static int sscomspeed(long, long); +static int exynos4210_uart_param(struct uart_bas *, int, int, int, int); + +/* + * Low-level UART interface. + */ +static int exynos4210_probe(struct uart_bas *bas); +static void exynos4210_init_common(struct exynos_uart_cfg *cfg, + struct uart_bas *bas, int, int, int, int); +static void exynos4210_init(struct uart_bas *bas, int, int, int, int); +static void exynos4210_s5l_init(struct uart_bas *bas, int, int, int, int); +static void exynos4210_term(struct uart_bas *bas); +static void exynos4210_putc(struct uart_bas *bas, int); +static int exynos4210_rxready(struct uart_bas *bas); +static int exynos4210_getc(struct uart_bas *bas, struct mtx *mtx); + +extern SLIST_HEAD(uart_devinfo_list, uart_devinfo) uart_sysdevs; + +static struct uart_ops uart_exynos4210_ops; +static struct uart_ops uart_s5l_ops; +static kobj_method_t exynos4210_methods[]; +static kobj_method_t s5l_methods[]; +static struct ofw_compat_data compat_data[]; + +enum exynos_uart_type { + EXUART_4210, + EXUART_S5L, +}; + +struct exynos_uart_cfg { + enum exynos_uart_type cfg_type; + uint64_t cfg_uart_full_mask; +}; + +struct exynos_uart_class { + struct uart_class base; + struct exynos_uart_cfg cfg; +}; + +static struct exynos_uart_class uart_ex4210_class = { + .base = { + "exynos4210 class", + exynos4210_methods, + 1, + .uc_ops = &uart_exynos4210_ops, + .uc_range = 8, + .uc_rclk = 0, + .uc_rshift = 0 + }, + .cfg = { + .cfg_type = EXUART_4210, + .cfg_uart_full_mask = UFSTAT_TXFULL, + }, +}; + + +static struct exynos_uart_class uart_s5l_class = { + .base = { + "s5l class", + s5l_methods, + 1, + .uc_ops = &uart_s5l_ops, + .uc_range = 8, + .uc_rclk = 0, + .uc_rshift = 0 + }, + .cfg = { + .cfg_type = EXUART_S5L, + .cfg_uart_full_mask = UFSTAT_S5L_TXFULL, + }, +}; + +static int +sscomspeed(long speed, long frequency) +{ + int x; + + if (speed <= 0 || frequency <= 0) + return (-1); + x = (frequency / 16) / speed; + return (x-1); +} + +static int +exynos4210_uart_param(struct uart_bas *bas, int baudrate, int databits, + int stopbits, int parity) +{ + int brd, ulcon; + + ulcon = 0; + + switch(databits) { + case 5: + ulcon |= ULCON_LENGTH_5; + break; + case 6: + ulcon |= ULCON_LENGTH_6; + break; + case 7: + ulcon |= ULCON_LENGTH_7; + break; + case 8: + ulcon |= ULCON_LENGTH_8; + break; + default: + return (EINVAL); + } + + switch (parity) { + case UART_PARITY_NONE: + ulcon |= ULCON_PARITY_NONE; + break; + case UART_PARITY_ODD: + ulcon |= ULCON_PARITY_ODD; + break; + case UART_PARITY_EVEN: + ulcon |= ULCON_PARITY_EVEN; + break; + case UART_PARITY_MARK: + case UART_PARITY_SPACE: + default: + return (EINVAL); + } + + if (stopbits == 2) + ulcon |= ULCON_STOP; + + uart_setreg(bas, SSCOM_ULCON, ulcon); + + /* baudrate may be negative, in which case we just leave it alone. */ + if (baudrate > 0) { + brd = sscomspeed(baudrate, bas->rclk); + uart_setreg(bas, SSCOM_UBRDIV, brd); + } + + return (0); +} + +static struct uart_ops uart_exynos4210_ops = { + .probe = exynos4210_probe, + .init = exynos4210_init, + .term = exynos4210_term, + .putc = exynos4210_putc, + .rxready = exynos4210_rxready, + .getc = exynos4210_getc, +}; + +static struct uart_ops uart_s5l_ops = { + .probe = exynos4210_probe, + .init = exynos4210_s5l_init, + .term = exynos4210_term, + .putc = exynos4210_putc, + .rxready = exynos4210_rxready, + .getc = exynos4210_getc, +}; + +static int +exynos4210_probe(struct uart_bas *bas) +{ + + return (0); +} + +static void +exynos4210_init_common(struct exynos_uart_cfg *cfg, struct uart_bas *bas, + int baudrate, int databits, int stopbits, int parity) +{ + + if (bas->rclk == 0) + bas->rclk = DEF_CLK; + + KASSERT(bas->rclk != 0, ("exynos4210_init: Invalid rclk")); + + bas->driver1 = cfg; + + /* Clear interrupts */ + if (cfg->cfg_type == EXUART_S5L) { + uart_setreg(bas, SSCOM_UTRSTAT, 0); + } else { + uart_setreg(bas, SSCOM_UCON, 0); + uart_setreg(bas, SSCOM_UFCON, + UFCON_TXTRIGGER_8 | UFCON_RXTRIGGER_8 | + UFCON_TXFIFO_RESET | UFCON_RXFIFO_RESET | + UFCON_FIFO_ENABLE); + } + + exynos4210_uart_param(bas, baudrate, databits, stopbits, parity); + + /* Enable UART. */ + if (cfg->cfg_type == EXUART_S5L) { + uart_setreg(bas, SSCOM_UCON, uart_getreg(bas, SSCOM_UCON) | + UCON_TOINT | UCON_S5L_RXTHRESH | UCON_S5L_RX_TIMEOUT | + UCON_S5L_TXTHRESH); + } else { + uart_setreg(bas, SSCOM_UCON, uart_getreg(bas, SSCOM_UCON) | + UCON_TXMODE_INT | UCON_RXMODE_INT | UCON_TOINT); + uart_setreg(bas, SSCOM_UMCON, UMCON_RTS); + } +} + +static void +exynos4210_init(struct uart_bas *bas, int baudrate, int databits, int stopbits, + int parity) +{ + + return (exynos4210_init_common(&uart_ex4210_class.cfg, bas, baudrate, + databits, stopbits, parity)); +} + +static void +exynos4210_s5l_init(struct uart_bas *bas, int baudrate, int databits, int stopbits, + int parity) +{ + + return (exynos4210_init_common(&uart_s5l_class.cfg, bas, baudrate, + databits, stopbits, parity)); +} + +static void +exynos4210_term(struct uart_bas *bas) +{ + /* XXX */ +} + +static void +exynos4210_putc(struct uart_bas *bas, int c) +{ + struct exynos_uart_cfg *cfg; + + cfg = bas->driver1; + + while ((bus_space_read_4(bas->bst, bas->bsh, SSCOM_UFSTAT) & + cfg->cfg_uart_full_mask) != 0) + continue; + + uart_setreg(bas, SSCOM_UTXH, c); + uart_barrier(bas); +} + +static int +exynos4210_rxready_impl(struct uart_bas *bas, bool intr) +{ + struct exynos_uart_cfg *cfg; + int ufstat, utrstat; + + cfg = bas->driver1; + if (!intr || cfg->cfg_type != EXUART_S5L) { + utrstat = bus_space_read_4(bas->bst, bas->bsh, SSCOM_UTRSTAT); + + if ((utrstat & UTRSTAT_RXREADY) != 0) + return (1); + if (cfg->cfg_type != EXUART_S5L) + return (0); + } + + ufstat = bus_space_read_4(bas->bst, bas->bsh, SSCOM_UFSTAT); + + return ((ufstat & (UFSTAT_RXCOUNT | UFSTAT_RXFULL)) != 0); +} + +static int +exynos4210_rxready(struct uart_bas *bas) +{ + + return (exynos4210_rxready_impl(bas, false)); +} + +static int +exynos4210_getc(struct uart_bas *bas, struct mtx *mtx) +{ + + while (!exynos4210_rxready(bas)) { + continue; + } + + return (uart_getreg(bas, SSCOM_URXH)); +} + +static int exynos4210_bus_probe(struct uart_softc *sc); +static int exynos4210_bus_attach(struct uart_softc *sc); +static int exynos4210_bus_flush(struct uart_softc *, int); +static int exynos4210_bus_getsig(struct uart_softc *); +static int exynos4210_bus_ioctl(struct uart_softc *, int, intptr_t); +static int exynos4210_bus_ipend(struct uart_softc *); +static int s5l_bus_ipend(struct uart_softc *); +static int exynos4210_bus_param(struct uart_softc *, int, int, int, int); +static int exynos4210_bus_receive(struct uart_softc *); +static int exynos4210_bus_setsig(struct uart_softc *, int); +static int exynos4210_bus_transmit(struct uart_softc *); + +static kobj_method_t exynos4210_methods[] = { + KOBJMETHOD(uart_probe, exynos4210_bus_probe), + KOBJMETHOD(uart_attach, exynos4210_bus_attach), + KOBJMETHOD(uart_flush, exynos4210_bus_flush), + KOBJMETHOD(uart_getsig, exynos4210_bus_getsig), + KOBJMETHOD(uart_ioctl, exynos4210_bus_ioctl), + KOBJMETHOD(uart_ipend, exynos4210_bus_ipend), + KOBJMETHOD(uart_param, exynos4210_bus_param), + KOBJMETHOD(uart_receive, exynos4210_bus_receive), + KOBJMETHOD(uart_setsig, exynos4210_bus_setsig), + KOBJMETHOD(uart_transmit, exynos4210_bus_transmit), + {0, 0 } +}; + +static kobj_method_t s5l_methods[] = { + KOBJMETHOD(uart_probe, exynos4210_bus_probe), + KOBJMETHOD(uart_attach, exynos4210_bus_attach), + KOBJMETHOD(uart_flush, exynos4210_bus_flush), + KOBJMETHOD(uart_getsig, exynos4210_bus_getsig), + KOBJMETHOD(uart_ioctl, exynos4210_bus_ioctl), + KOBJMETHOD(uart_ipend, s5l_bus_ipend), + KOBJMETHOD(uart_param, exynos4210_bus_param), + KOBJMETHOD(uart_receive, exynos4210_bus_receive), + KOBJMETHOD(uart_setsig, exynos4210_bus_setsig), + KOBJMETHOD(uart_transmit, exynos4210_bus_transmit), + {0, 0 } +}; + +int +exynos4210_bus_probe(struct uart_softc *sc) +{ + + sc->sc_txfifosz = 16; + sc->sc_rxfifosz = 16; + + return (0); +} + +static int +exynos4210_bus_attach(struct uart_softc *sc) +{ + struct exynos_uart_class *class; + struct exynos_uart_cfg *cfg; + + sc->sc_hwiflow = 0; + sc->sc_hwoflow = 0; + + class = (struct exynos_uart_class *)ofw_bus_search_compatible(sc->sc_dev, + compat_data)->ocd_data; + MPASS(class != NULL); + + cfg = &class->cfg; + MPASS(sc->sc_sysdev == NULL || cfg == sc->sc_sysdev->bas.driver1); + sc->sc_bas.driver1 = cfg; + + return (0); +} + +static int +exynos4210_bus_transmit(struct uart_softc *sc) +{ + struct exynos_uart_cfg *cfg; + int i; + int reg; + + cfg = sc->sc_bas.driver1; + uart_lock(sc->sc_hwmtx); + + /* tx fifo has room, fire away. */ + for (i = 0; i < sc->sc_txdatasz; i++) { + uart_setreg(&sc->sc_bas, SSCOM_UTXH, sc->sc_txbuf[i]); + uart_barrier(&sc->sc_bas); + } + + if (cfg->cfg_type == EXUART_S5L) { + sc->sc_txbusy = 1; + } else { + /* unmask TX interrupt */ + reg = bus_space_read_4(sc->sc_bas.bst, sc->sc_bas.bsh, + SSCOM_UINTM); + reg &= ~(1 << 2); + bus_space_write_4(sc->sc_bas.bst, sc->sc_bas.bsh, SSCOM_UINTM, + reg); + } + + uart_unlock(sc->sc_hwmtx); + + return (0); +} + +static int +exynos4210_bus_setsig(struct uart_softc *sc, int sig) +{ + + return (0); +} + +static int +exynos4210_bus_receive(struct uart_softc *sc) +{ + struct uart_bas *bas; + + bas = &sc->sc_bas; + uart_lock(sc->sc_hwmtx); + + while (exynos4210_rxready_impl(bas, true)) { + if (uart_rx_full(sc)) { + sc->sc_rxbuf[sc->sc_rxput] = UART_STAT_OVERRUN; + break; + } + + uart_rx_put(sc, uart_getreg(&sc->sc_bas, SSCOM_URXH)); + } + + uart_unlock(sc->sc_hwmtx); + + return (0); +} + +static int +exynos4210_bus_param(struct uart_softc *sc, int baudrate, int databits, + int stopbits, int parity) +{ + int error; + + if (sc->sc_bas.rclk == 0) + sc->sc_bas.rclk = DEF_CLK; + + KASSERT(sc->sc_bas.rclk != 0, ("exynos4210_init: Invalid rclk")); + + uart_lock(sc->sc_hwmtx); + error = exynos4210_uart_param(&sc->sc_bas, baudrate, databits, stopbits, + parity); + uart_unlock(sc->sc_hwmtx); + + return (error); +} + +static int +s5l_bus_ipend(struct uart_softc *sc) +{ + int ipend; + uint32_t uerstat, utrstat; + + ipend = 0; + uart_lock(sc->sc_hwmtx); + utrstat = bus_space_read_4(sc->sc_bas.bst, sc->sc_bas.bsh, + SSCOM_UTRSTAT); + + if (utrstat & (UTRSTAT_S5L_RXTHRESH | UTRSTAT_S5L_RX_TIMEOUT)) + ipend |= SER_INT_RXREADY; + + if (utrstat & UTRSTAT_S5L_TXTHRESH) + ipend |= SER_INT_TXIDLE; + + uerstat = bus_space_read_4(sc->sc_bas.bst, sc->sc_bas.bsh, + SSCOM_UERSTAT); + if ((uerstat & UERSTAT_BREAK) != 0) + ipend |= SER_INT_BREAK; + + bus_space_write_4(sc->sc_bas.bst, sc->sc_bas.bsh, SSCOM_UTRSTAT, + utrstat); + uart_unlock(sc->sc_hwmtx); + + return (ipend); +} + +static int +exynos4210_bus_ipend(struct uart_softc *sc) +{ + uint32_t ints; + int reg; + int ipend; + + uart_lock(sc->sc_hwmtx); + ints = bus_space_read_4(sc->sc_bas.bst, sc->sc_bas.bsh, SSCOM_UINTP); + bus_space_write_4(sc->sc_bas.bst, sc->sc_bas.bsh, SSCOM_UINTP, ints); + + ipend = 0; + if ((ints & UINTP_TXEMPTY) != 0) { + if (sc->sc_txbusy != 0) + ipend |= SER_INT_TXIDLE; + + /* mask TX interrupt */ + reg = bus_space_read_4(sc->sc_bas.bst, sc->sc_bas.bsh, + SSCOM_UINTM); + reg |= UINTM_TXINTR; + bus_space_write_4(sc->sc_bas.bst, sc->sc_bas.bsh, + SSCOM_UINTM, reg); + } + + if ((ints & UINTP_RXREADY) != 0) { + ipend |= SER_INT_RXREADY; + } + + uart_unlock(sc->sc_hwmtx); + return (ipend); +} + +static int +exynos4210_bus_flush(struct uart_softc *sc, int what) +{ + + return (0); +} + +static int +exynos4210_bus_getsig(struct uart_softc *sc) +{ + + return (0); +} + +static int +exynos4210_bus_ioctl(struct uart_softc *sc, int request, intptr_t data) +{ + + return (EINVAL); +} + +static struct ofw_compat_data compat_data[] = { + {"apple,s5l-uart", (uintptr_t)&uart_s5l_class.base}, + {"samsung,exynos4210-uart", (uintptr_t)&uart_ex4210_class.base}, + {NULL, (uintptr_t)NULL}, +}; +UART_FDT_CLASS_AND_DEVICE(compat_data); diff --git a/sys/arm64/apple/exynos_uart.h b/sys/arm64/apple/exynos_uart.h new file mode 100644 index 000000000000..6c817252a69a --- /dev/null +++ b/sys/arm64/apple/exynos_uart.h @@ -0,0 +1,136 @@ +/* $NetBSD: s3c2xx0reg.h,v 1.4 2004/02/12 03:47:29 bsh Exp $ */ + +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 2002, 2003 Fujitsu Component Limited + * Copyright (c) 2002, 2003 Genetec Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of The Fujitsu Component Limited nor the name of + * Genetec corporation may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY FUJITSU COMPONENT LIMITED AND GENETEC + * CORPORATION ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL FUJITSU COMPONENT LIMITED OR GENETEC + * CORPORATION BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* s3c2410-specific registers */ +#define UMCON_AFC (1 << 4) /* auto flow control */ +#define UMSTAT_DCTS (1 << 2) /* CTS change */ +#define ULCON_IR (1 << 6) +#define ULCON_PARITY_SHIFT 3 + +/* + * Exynos-specific + * + * UFSTAT_TXFULL register differs between Exynos and others. + * Others have UFSTAT_TXFULL (1 << 9) + */ +#define UFSTAT_TXFULL (1 << 24) +#define UFSTAT_S5L_TXFULL (1 << 9) + +#define SSCOM_UINTM 0x038 +#define UINTM_TXINTR (1 << 2) +#define SSCOM_UINTP 0x030 +#define UINTP_RXREADY (1 << 0) +#define UINTP_TXEMPTY (1 << 2) + +/* common for s3c2800 and s3c24x0 */ +#define SSCOM_ULCON 0x00 /* UART line control */ +#define ULCON_PARITY_NONE (0 << ULCON_PARITY_SHIFT) +#define ULCON_PARITY_ODD (4 << ULCON_PARITY_SHIFT) +#define ULCON_PARITY_EVEN (5 << ULCON_PARITY_SHIFT) +#define ULCON_PARITY_ONE (6 << ULCON_PARITY_SHIFT) +#define ULCON_PARITY_ZERO (7 << ULCON_PARITY_SHIFT) +#define ULCON_STOP (1 << 2) +#define ULCON_LENGTH_5 0 +#define ULCON_LENGTH_6 1 +#define ULCON_LENGTH_7 2 +#define ULCON_LENGTH_8 3 +#define SSCOM_UCON 0x04 /* UART control */ +#define UCON_TXINT_TYPE (1 << 9) /* Tx interrupt. 0=pulse,1=level */ +#define UCON_TXINT_TYPE_LEVEL UCON_TXINT_TYPE +#define UCON_TXINT_TYPE_PULSE 0 +#define UCON_RXINT_TYPE (1 << 8) /* Rx interrupt */ +#define UCON_RXINT_TYPE_LEVEL UCON_RXINT_TYPE +#define UCON_RXINT_TYPE_PULSE 0 +#define UCON_TOINT (1 << 7) /* Rx timeout interrupt */ +#define UCON_ERRINT (1 << 6) /* receive error interrupt */ +#define UCON_LOOP (1 << 5) /* loopback */ +#define UCON_SBREAK (1 << 4) /* send break */ +#define UCON_TXMODE_DISABLE (0 << 2) +#define UCON_TXMODE_INT (1 << 2) +#define UCON_TXMODE_DMA (2 << 2) +#define UCON_TXMODE_MASK (3 << 2) +#define UCON_RXMODE_DISABLE (0 << 0) +#define UCON_RXMODE_INT (1 << 0) +#define UCON_RXMODE_DMA (2 << 0) +#define UCON_RXMODE_MASK (3 << 0) +#define UCON_S5L_RX_TIMEOUT (0x1 << 9) +#define UCON_S5L_RXTHRESH (0x1 << 12) +#define UCON_S5L_TXTHRESH (0x1 << 13) +#define SSCOM_UFCON 0x08 /* FIFO control */ +#define UFCON_TXTRIGGER_0 (0 << 6) +#define UFCON_TXTRIGGER_4 (1 << 6) +#define UFCON_TXTRIGGER_8 (2 << 6) +#define UFCON_TXTRIGGER_16 (3 << 6) +#define UFCON_RXTRIGGER_4 (0 << 4) +#define UFCON_RXTRIGGER_8 (1 << 4) +#define UFCON_RXTRIGGER_12 (2 << 4) +#define UFCON_RXTRIGGER_16 (3 << 4) +#define UFCON_TXFIFO_RESET (1 << 2) +#define UFCON_RXFIFO_RESET (1 << 1) +#define UFCON_FIFO_ENABLE (1 << 0) +#define SSCOM_UMCON 0x0c /* MODEM control */ +#define UMCON_RTS (1 << 0) /* Request to send */ +#define SSCOM_UTRSTAT 0x10 /* Status register */ +#define UTRSTAT_TXSHIFTER_EMPTY ( 1<< 2) +#define UTRSTAT_TXEMPTY (1 << 1) /* TX fifo or buffer empty */ +#define UTRSTAT_RXREADY (1 << 0) /* RX fifo or buffer is not empty */ +#define UTRSTAT_S5L_RXTHRESH (0x1 << 4) +#define UTRSTAT_S5L_TXTHRESH (0x1 << 5) +#define UTRSTAT_S5L_RX_TIMEOUT (0x1 << 9) +#define SSCOM_UERSTAT 0x14 /* Error status register */ +#define UERSTAT_BREAK (1 << 3) /* Break signal, not 2410 */ +#define UERSTAT_FRAME (1 << 2) /* Frame error */ +#define UERSTAT_PARITY (1 << 1) /* Parity error, not 2410 */ +#define UERSTAT_OVERRUN (1 << 0) /* Overrun */ +#define UERSTAT_ALL_ERRORS \ + (UERSTAT_OVERRUN|UERSTAT_BREAK|UERSTAT_FRAME|UERSTAT_PARITY) +#define SSCOM_UFSTAT 0x18 /* Fifo status register */ +#define UFSTAT_RXFULL (1 <<8) /* Rx fifo full */ +#define UFSTAT_TXCOUNT_SHIFT 4 /* TX FIFO count */ +#define UFSTAT_TXCOUNT (0x0f << UFSTAT_TXCOUNT_SHIFT) +#define UFSTAT_RXCOUNT_SHIFT 0 /* RX FIFO count */ +#define UFSTAT_RXCOUNT (0x0f << UFSTAT_RXCOUNT_SHIFT) +#define SSCOM_UMSTAT 0x1c /* Modem status register */ +#define UMSTAT_CTS (1 << 0) /* Clear to send */ +#if _BYTE_ORDER == _LITTLE_ENDIAN +#define SSCOM_UTXH 0x20 /* Transmit data register */ +#define SSCOM_URXH 0x24 /* Receive data register */ +#else +#define SSCOM_UTXH 0x23 /* Transmit data register */ +#define SSCOM_URXH 0x27 /* Receive data register */ +#endif +#define SSCOM_UBRDIV 0x28 /* baud-reate divisor */ +#define SSCOM_SIZE 0x2c diff --git a/sys/conf/files.arm64 b/sys/conf/files.arm64 index 480f1ac78905..74387914043e 100644 --- a/sys/conf/files.arm64 +++ b/sys/conf/files.arm64 @@ -548,6 +548,7 @@ arm/annapurna/alpine/alpine_serdes.c optional al_serdes fdt \ # Apple arm64/apple/apple_aic.c optional soc_apple_t8103 fdt arm64/apple/apple_wdog.c optional soc_apple_t8103 fdt +arm64/apple/exynos_uart.c optional soc_apple_t8103 fdt # Broadcom arm64/broadcom/brcmmdio/mdio_mux_iproc.c optional soc_brcm_ns2 fdt diff --git a/sys/dev/uart/uart.h b/sys/dev/uart/uart.h index 9b80f0148dc2..b9401996e655 100644 --- a/sys/dev/uart/uart.h +++ b/sys/dev/uart/uart.h @@ -40,6 +40,7 @@ struct uart_bas { bus_space_tag_t bst; bus_space_handle_t bsh; + void *driver1; u_int chan; u_int rclk; u_int regshft; From nobody Wed Apr 2 08:59:48 2025 X-Original-To: dev-commits-src-main@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 4ZSJj34Ydnz5ryRD; Wed, 02 Apr 2025 08:59: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSJj32jX6z4JgL; Wed, 02 Apr 2025 08:59:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743584391; 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=4jKllDKxmofJU89/80bQoHiD4uB60TwE6mPXvZx829I=; b=lIihab9I3BwohEQpqCMouaVR8ezB+DKpl4mbQAFrvPfJN8trTuDH3F1ZDIdd5aqbYOoijP Uf5GqgID47qz28yiOIOJtviZCJiUJcbT9yOArrUevKMeAEHsq/jT+kHMsM4ouEkCB5u4fj kQTnN1c4+7YyCzm/x/3/I7WGSgvDtb+Gtkq9OqL1za10HkCQezqWz+jCtBnr9tfpiBb8Ag CG9KoWlntT3QXnRpeJeyB4v8u+uPa1aQF4PdWjVRIB3uMDWLgJ2y3SLnStJqm8fahEYCkE Y2NzAjNh8Pg+ZsCB5j1QDvgAnlMZ6PKW9jtrSYMEmzevCqe6KLwvM+EnkSDKyQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743584391; a=rsa-sha256; cv=none; b=IK+8iazfOtts7XFOFQmO4a/bOYOJCys+IXRu0CqL/pD/b6Bj/gBxqk0Tot90wP6uy2VM+F aQ599uyn3DjqztmRsK+Rdt5eqCskmg9XZmdYvHcH3iE/RkhzF03/F0u0dZ7c9gbpP2qmsF t8I4Ny4x/BBm9ni4kzg6FACzg7+RgRBuCfr3AKvm9UDw3t5od77zMN39MMiRnY1YrFD5uw VyoLe8rcTZe+FifJQwc28qw75io/kQm6VNee2AZ978Ipz2MQCef11Mtgv2ymsUemKZioCt LDK62R916KgVoFr0t2dWfBOxp31jSglxzBcrK0zwViI9l4FSAtNPE9BA5gsLmQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743584391; 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=4jKllDKxmofJU89/80bQoHiD4uB60TwE6mPXvZx829I=; b=ThEEXQHvnLtUjlIQtmYqX3xdTA6Q73EwcZ5hhC6TdKK3bLiQ846sc2xMTrPk8mgM5TZoA5 +t81E2cHoI0nCBbxJrT4odZybfWeajrGHAfr2kla+thAJpeIg7d1pjdQ1sX0YnkCEqm5P8 MtooQzD4w/7Z1/pChNdiTmqwe2jqZOqMuGm7S78mEt5kXmjIH7QAWezLlj9PRtrfoAYLte izRz7bEB1lfCfbj9N+1B/YeH0oFHwxRSQxfwFcJN4RDo/gmyN2Swlf19JLO3WAr0qog25v w77pfIhe4IHFOFLnyGi/m6o1SFTzuieR9Qp+WBKSGn1h8O+amP8fsUSphAkJ4g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSJj30kZsz18Nm; Wed, 02 Apr 2025 08:59:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5328xmZp053991; Wed, 2 Apr 2025 08:59:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5328xmnx053989; Wed, 2 Apr 2025 08:59:48 GMT (envelope-from git) Date: Wed, 2 Apr 2025 08:59:48 GMT Message-Id: <202504020859.5328xmnx053989@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Philip Paeps Subject: git: fe9278888fd4 - main - contrib/expat: import expat 2.7.1 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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/main X-Git-Reftype: branch X-Git-Commit: fe9278888fd4414abe2d922e469cf608005f4c65 Auto-Submitted: auto-generated The branch main has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=fe9278888fd4414abe2d922e469cf608005f4c65 commit fe9278888fd4414abe2d922e469cf608005f4c65 Merge: ba2336d3044c b09cf48da48a Author: Philip Paeps AuthorDate: 2025-04-02 08:56:02 +0000 Commit: Philip Paeps CommitDate: 2025-04-02 08:56:02 +0000 contrib/expat: import expat 2.7.1 Changes: https://github.com/libexpat/libexpat/blob/R_2_7_1/expat/Changes https://github.com/libexpat/libexpat/blob/R_2_7_0/expat/Changes Security: CVE-2024-8176 MFC after: 3 days contrib/expat/COPYING | 2 +- contrib/expat/Changes | 123 +++++- contrib/expat/Makefile.am | 4 +- contrib/expat/Makefile.in | 4 +- contrib/expat/README.md | 18 +- contrib/expat/configure.ac | 4 +- contrib/expat/doc/reference.html | 9 +- contrib/expat/doc/xmlwf.1 | 2 +- contrib/expat/doc/xmlwf.xml | 4 +- contrib/expat/fuzz/xml_lpm_fuzzer.cpp | 464 ++++++++++++++++++++++ contrib/expat/fuzz/xml_lpm_fuzzer.proto | 58 +++ contrib/expat/fuzz/xml_parse_fuzzer.c | 2 +- contrib/expat/fuzz/xml_parsebuffer_fuzzer.c | 2 +- contrib/expat/lib/expat.h | 6 +- contrib/expat/lib/internal.h | 5 +- contrib/expat/lib/xmlparse.c | 586 ++++++++++++++++++++-------- contrib/expat/tests/acc_tests.c | 5 +- contrib/expat/tests/alloc_tests.c | 27 ++ contrib/expat/tests/basic_tests.c | 331 +++++++++++++++- contrib/expat/tests/benchmark/benchmark.c | 57 ++- contrib/expat/tests/common.c | 33 +- contrib/expat/tests/common.h | 4 +- contrib/expat/tests/handlers.c | 23 ++ contrib/expat/tests/handlers.h | 9 + contrib/expat/tests/minicheck.h | 6 +- contrib/expat/tests/misc_tests.c | 247 ++++++++++-- contrib/expat/tests/xmltest.sh | 5 +- contrib/expat/xmlwf/readfilemap.c | 3 +- 28 files changed, 1779 insertions(+), 264 deletions(-) diff --cc contrib/expat/README.md index 23d26dad2b92,000000000000..77c6bf27d307 mode 100644,000000..100644 --- a/contrib/expat/README.md +++ b/contrib/expat/README.md @@@ -1,315 -1,0 +1,311 @@@ +[![Run Linux CI tasks](https://github.com/libexpat/libexpat/actions/workflows/linux.yml/badge.svg)](https://github.com/libexpat/libexpat/actions/workflows/linux.yml) +[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/libexpat/libexpat?svg=true)](https://ci.appveyor.com/project/libexpat/libexpat) +[![Packaging status](https://repology.org/badge/tiny-repos/expat.svg)](https://repology.org/metapackage/expat/versions) +[![Downloads SourceForge](https://img.shields.io/sourceforge/dt/expat?label=Downloads%20SourceForge)](https://sourceforge.net/projects/expat/files/) +[![Downloads GitHub](https://img.shields.io/github/downloads/libexpat/libexpat/total?label=Downloads%20GitHub)](https://github.com/libexpat/libexpat/releases) ++[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10205/badge)](https://www.bestpractices.dev/projects/10205) + +> [!CAUTION] +> +> Expat is **understaffed** and without funding. +> There is a [call for help with details](https://github.com/libexpat/libexpat/blob/master/expat/Changes) +> at the top of the `Changes` file. + + - # Expat, Release 2.6.4 ++# Expat, Release 2.7.1 + +This is Expat, a C99 library for parsing +[XML 1.0 Fourth Edition](https://www.w3.org/TR/2006/REC-xml-20060816/), started by +[James Clark](https://en.wikipedia.org/wiki/James_Clark_%28programmer%29) in 1997. +Expat is a stream-oriented XML parser. This means that you register +handlers with the parser before starting the parse. These handlers +are called when the parser discovers the associated structures in the +document being parsed. A start tag is an example of the kind of +structures for which you may register handlers. + - Expat supports the following compilers: ++Expat supports the following C99 compilers: + - - GNU GCC >=4.5 ++- GNU GCC >=4.5 (for use from C) or GNU GCC >=4.8.1 (for use from C++) +- LLVM Clang >=3.5 +- Microsoft Visual Studio >=16.0/2019 (rolling `${today} minus 5 years`) + +Windows users can use the +[`expat-win32bin-*.*.*.{exe,zip}` download](https://github.com/libexpat/libexpat/releases), +which includes both pre-compiled libraries and executables, and source code for +developers. + +Expat is [free software](https://www.gnu.org/philosophy/free-sw.en.html). +You may copy, distribute, and modify it under the terms of the License +contained in the file +[`COPYING`](https://github.com/libexpat/libexpat/blob/master/expat/COPYING) +distributed with this package. +This license is the same as the MIT/X Consortium license. + + +## Using libexpat in your CMake-Based Project + +There are three documented ways of using libexpat with CMake: + +### a) `find_package` with Module Mode + +This approach leverages CMake's own [module `FindEXPAT`](https://cmake.org/cmake/help/latest/module/FindEXPAT.html). + +Notice the *uppercase* `EXPAT` in the following example: + +```cmake - cmake_minimum_required(VERSION 3.0) # or 3.10, see below ++cmake_minimum_required(VERSION 3.10) + +project(hello VERSION 1.0.0) + +find_package(EXPAT 2.2.8 MODULE REQUIRED) + +add_executable(hello + hello.c +) + - # a) for CMake >=3.10 (see CMake's FindEXPAT docs) +target_link_libraries(hello PUBLIC EXPAT::EXPAT) - - # b) for CMake >=3.0 - target_include_directories(hello PRIVATE ${EXPAT_INCLUDE_DIRS}) - target_link_libraries(hello PUBLIC ${EXPAT_LIBRARIES}) +``` + +### b) `find_package` with Config Mode + +This approach requires files from… + +- libexpat >=2.2.8 where packaging uses the CMake build system +or +- libexpat >=2.3.0 where packaging uses the GNU Autotools build system + on Linux +or +- libexpat >=2.4.0 where packaging uses the GNU Autotools build system + on macOS or MinGW. + +Notice the *lowercase* `expat` in the following example: + +```cmake - cmake_minimum_required(VERSION 3.0) ++cmake_minimum_required(VERSION 3.10) + +project(hello VERSION 1.0.0) + +find_package(expat 2.2.8 CONFIG REQUIRED char dtd ns) + +add_executable(hello + hello.c +) + +target_link_libraries(hello PUBLIC expat::expat) +``` + +### c) The `FetchContent` module + +This approach — as demonstrated below — requires CMake >=3.18 for both the +[`FetchContent` module](https://cmake.org/cmake/help/latest/module/FetchContent.html) +and its support for the `SOURCE_SUBDIR` option to be available. + +Please note that: +- Use of the `FetchContent` module with *non-release* SHA1s or `master` + of libexpat is neither advised nor considered officially supported. +- Pinning to a specific commit is great for robust CI. +- Pinning to a specific commit needs updating every time there is a new + release of libexpat — either manually or through automation —, + to not miss out on libexpat security updates. + +For an example that pulls in libexpat via Git: + +```cmake +cmake_minimum_required(VERSION 3.18) + +include(FetchContent) + +project(hello VERSION 1.0.0) + +FetchContent_Declare( + expat + GIT_REPOSITORY https://github.com/libexpat/libexpat/ + GIT_TAG 000000000_GIT_COMMIT_SHA1_HERE_000000000 # i.e. Git tag R_0_Y_Z + SOURCE_SUBDIR expat/ +) + +FetchContent_MakeAvailable(expat) + +add_executable(hello + hello.c +) + +target_link_libraries(hello PUBLIC expat) +``` + + +## Building from a Git Clone + +If you are building Expat from a check-out from the +[Git repository](https://github.com/libexpat/libexpat/), +you need to run a script that generates the configure script using the +GNU autoconf and libtool tools. To do this, you need to have +autoconf 2.58 or newer. Run the script like this: + +```console +./buildconf.sh +``` + +Once this has been done, follow the same instructions as for building +from a source distribution. + + +## Building from a Source Distribution + +### a) Building with the configure script (i.e. GNU Autotools) + +To build Expat from a source distribution, you first run the +configuration shell script in the top level distribution directory: + +```console +./configure +``` + +There are many options which you may provide to configure (which you +can discover by running configure with the `--help` option). But the +one of most interest is the one that sets the installation directory. +By default, the configure script will set things up to install +libexpat into `/usr/local/lib`, `expat.h` into `/usr/local/include`, and +`xmlwf` into `/usr/local/bin`. If, for example, you'd prefer to install +into `/home/me/mystuff/lib`, `/home/me/mystuff/include`, and +`/home/me/mystuff/bin`, you can tell `configure` about that with: + +```console +./configure --prefix=/home/me/mystuff +``` + +Another interesting option is to enable 64-bit integer support for +line and column numbers and the over-all byte index: + +```console +./configure CPPFLAGS=-DXML_LARGE_SIZE +``` + +However, such a modification would be a breaking change to the ABI +and is therefore not recommended for general use — e.g. as part of +a Linux distribution — but rather for builds with special requirements. + +After running the configure script, the `make` command will build +things and `make install` will install things into their proper +location. Have a look at the `Makefile` to learn about additional +`make` options. Note that you need to have write permission into +the directories into which things will be installed. + +If you are interested in building Expat to provide document +information in UTF-16 encoding rather than the default UTF-8, follow +these instructions (after having run `make distclean`). +Please note that we configure with `--without-xmlwf` as xmlwf does not +support this mode of compilation (yet): + +1. Mass-patch `Makefile.am` files to use `libexpatw.la` for a library name: +
+ `find . -name Makefile.am -exec sed + -e 's,libexpat\.la,libexpatw.la,' + -e 's,libexpat_la,libexpatw_la,' + -i.bak {} +` + +1. Run `automake` to re-write `Makefile.in` files:
+ `automake` + +1. For UTF-16 output as unsigned short (and version/error strings as char), + run:
+ `./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf`
+ For UTF-16 output as `wchar_t` (incl. version/error strings), run:
+ `./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T + --without-xmlwf` +
Note: The latter requires libc compiled with `-fshort-wchar`, as well. + +1. Run `make` (which excludes xmlwf). + +1. Run `make install` (again, excludes xmlwf). + +Using `DESTDIR` is supported. It works as follows: + +```console +make install DESTDIR=/path/to/image +``` + +overrides the in-makefile set `DESTDIR`, because variable-setting priority is + +1. commandline +1. in-makefile +1. environment + +Note: This only applies to the Expat library itself, building UTF-16 versions +of xmlwf and the tests is currently not supported. + +When using Expat with a project using autoconf for configuration, you +can use the probing macro in `conftools/expat.m4` to determine how to +include Expat. See the comments at the top of that file for more +information. + +A reference manual is available in the file `doc/reference.html` in this +distribution. + + +### b) Building with CMake + +The CMake build system is still *experimental* and may replace the primary +build system based on GNU Autotools at some point when it is ready. + + +#### Available Options + +For an idea of the available (non-advanced) options for building with CMake: + +```console +# rm -f CMakeCache.txt ; cmake -D_EXPAT_HELP=ON -LH . | grep -B1 ':.*=' | sed 's,^--$,,' +// Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +// Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +// Path to a program. +DOCBOOK_TO_MAN:FILEPATH=/usr/bin/docbook2x-man + +// Build man page for xmlwf +EXPAT_BUILD_DOCS:BOOL=ON + +// Build the examples for expat library +EXPAT_BUILD_EXAMPLES:BOOL=ON + +// Build fuzzers for the expat library +EXPAT_BUILD_FUZZERS:BOOL=OFF + +// Build pkg-config file +EXPAT_BUILD_PKGCONFIG:BOOL=ON + +// Build the tests for expat library +EXPAT_BUILD_TESTS:BOOL=ON + +// Build the xmlwf tool for expat library +EXPAT_BUILD_TOOLS:BOOL=ON + +// Character type to use (char|ushort|wchar_t) [default=char] +EXPAT_CHAR_TYPE:STRING=char + +// Install expat files in cmake install target +EXPAT_ENABLE_INSTALL:BOOL=ON + +// Use /MT flag (static CRT) when compiling in MSVC +EXPAT_MSVC_STATIC_CRT:BOOL=OFF + - // Build fuzzers via ossfuzz for the expat library ++// Build fuzzers via OSS-Fuzz for the expat library +EXPAT_OSSFUZZ_BUILD:BOOL=OFF + +// Build a shared expat library +EXPAT_SHARED_LIBS:BOOL=ON + +// Treat all compiler warnings as errors +EXPAT_WARNINGS_AS_ERRORS:BOOL=OFF + +// Make use of getrandom function (ON|OFF|AUTO) [default=AUTO] +EXPAT_WITH_GETRANDOM:STRING=AUTO + +// Utilize libbsd (for arc4random_buf) +EXPAT_WITH_LIBBSD:BOOL=OFF + +// Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO] +EXPAT_WITH_SYS_GETRANDOM:STRING=AUTO +``` diff --cc contrib/expat/fuzz/xml_lpm_fuzzer.cpp index 000000000000,f52ea7b21e40..f52ea7b21e40 mode 000000,100644..100644 --- a/contrib/expat/fuzz/xml_lpm_fuzzer.cpp +++ b/contrib/expat/fuzz/xml_lpm_fuzzer.cpp diff --cc contrib/expat/fuzz/xml_lpm_fuzzer.proto index 000000000000,ddc4e958b919..ddc4e958b919 mode 000000,100644..100644 --- a/contrib/expat/fuzz/xml_lpm_fuzzer.proto +++ b/contrib/expat/fuzz/xml_lpm_fuzzer.proto From nobody Wed Apr 2 14:31:49 2025 X-Original-To: dev-commits-src-main@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 4ZSS460MTrz5sMY0; Wed, 02 Apr 2025 14:31:50 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSS455ccxz3YPX; Wed, 02 Apr 2025 14:31:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743604309; 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=uJistIeOAdE4QGv4hJO7yl1X42pTCWpLN/AcBILX/bo=; b=KKkqsRfiOr0qfnmnFDFltrYKuq6xUClYar6KUY7cPFytKuPtQOqQqwXhImGkJAduJbUiKN CjSkYCbG6zV2sJa1bqJSU7UYOAEKCRSiQMBTPzWTwRzFrO+6pTpezU6gByVUH42fm6Yg3Y aFygF24UJnZzNZFfcWnmG+Q9Ub22uIO85sjY2osSqUYJOBQ3gdE2b9GH5mvBnPIcXk13JG t5JBr+3GMCSeihh2LnrcH/k2XiqK2pYeVz55pAcC2+dldkLYNmeRrESX6VBKNtPl2E5SYS r/tAYDl6vJgMGKF6nX/b5C4HOsIpxosbhmX0lR+3/AdlVJKReVrcg6aKKqBlqg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743604309; a=rsa-sha256; cv=none; b=BFe6vDe37HyEtHyTG4p2qVef3I8i5QoaJlC4eSy35zd8UJZ/YFjGX+JjwMkJr3nGxECwgI 0oCBuyXD7hUmPgv2kgfifjHVtsNdXLudlSdzzwBOci4sh34bYJwCzlhgzhgRaF/f/MY/Hb A00yOCjOxWvRkbOTMCiD0zYFgDm1djnL36zBfPNLbhcwJmkyycDdFCSt/k40V9xCICrV2O Uz4Uzkrta1EopMdE38PYxk6lqOxTvX48zm15T5fvoTXw//HGJY1gcNxdwPbLOdlrg757v0 p+xuebIMGhJ0RNDvYOk8GbEqP+hyBfxtO1NgD7vy55C1bOjyMW0zo5Gl02AbWQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743604309; 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=uJistIeOAdE4QGv4hJO7yl1X42pTCWpLN/AcBILX/bo=; b=SomdM/IKO1xpeL8EV6AQwDOlZpmZfHhWnVRfgWjfBbah8M9h8q149kMNWIMAudagmcw79I OsGQ+Z1O1/mv5rPXA+FbdKtZdosdTk8ZupQK9PakW7gW72KwUqA+6Tn063wop+9x3pyl9C OPyfnDOxMVe3EB+FnpYxd+joQeamU53q4ZraWpUpTRRtjwnChF+HN7gX0L62ffZD1LBOtj N79fLghgK+6hPGqEAMiVTDOV5iP39APo36ev2J4iShPcaEYp8tdDwiYSai86z+w4x50lkp OjhUCnjg7mw5rMwI71mLq/8YhtReIoc/F0L++E7QgU0OGF6MJqUw49037fAqgg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSS455CCCz4cp; Wed, 02 Apr 2025 14:31:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532EVnGj080674; Wed, 2 Apr 2025 14:31:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532EVnsB080671; Wed, 2 Apr 2025 14:31:49 GMT (envelope-from git) Date: Wed, 2 Apr 2025 14:31:49 GMT Message-Id: <202504021431.532EVnsB080671@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Olivier Cochard Subject: git: c10fd9ac00b1 - main - tests: Require allow_network_access for tests needing name resolution List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olivier X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c10fd9ac00b1097ab622d055dcc3d1484012bccc Auto-Submitted: auto-generated The branch main has been updated by olivier: URL: https://cgit.FreeBSD.org/src/commit/?id=c10fd9ac00b1097ab622d055dcc3d1484012bccc commit c10fd9ac00b1097ab622d055dcc3d1484012bccc Author: Olivier Cochard AuthorDate: 2025-04-02 14:25:40 +0000 Commit: Olivier Cochard CommitDate: 2025-04-02 14:31:18 +0000 tests: Require allow_network_access for tests needing name resolution Tests that require working name resolution or network access now mandate that the kuya variable allow_network_access be set. PR: 285826 Reported by: ngie Reviewed by: igoro Approved by: lwhsu Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D49633 --- lib/libc/tests/net/getaddrinfo/getaddrinfo.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/libc/tests/net/getaddrinfo/getaddrinfo.c b/lib/libc/tests/net/getaddrinfo/getaddrinfo.c index 022405f464ce..1e066add3119 100644 --- a/lib/libc/tests/net/getaddrinfo/getaddrinfo.c +++ b/lib/libc/tests/net/getaddrinfo/getaddrinfo.c @@ -79,7 +79,12 @@ send(int s, const void *msg, size_t len, int flags) } } -ATF_TC_WITHOUT_HEAD(basic); +ATF_TC(basic); +ATF_TC_HEAD(basic, tc) +{ + atf_tc_set_md_var(tc, "require.config", "allow_network_access"); +} + ATF_TC_BODY(basic, tc) { static const struct addrinfo hints = { @@ -205,7 +210,11 @@ ATF_TC_BODY(netdown, tc) /* * See https://reviews.freebsd.org/D37139. */ -ATF_TC_WITHOUT_HEAD(nofamily); +ATF_TC(nofamily); +ATF_TC_HEAD(nofamily, tc) +{ + atf_tc_set_md_var(tc, "require.config", "allow_network_access"); +} ATF_TC_BODY(nofamily, tc) { static const struct addrinfo hints4 = { From nobody Wed Apr 2 15:51:43 2025 X-Original-To: dev-commits-src-main@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 4ZSTrJ0Vktz5sSS9; Wed, 02 Apr 2025 15:51: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSTrH73NQz3lWT; Wed, 02 Apr 2025 15:51:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743609104; 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=rWp4vZFvDv3UxUOLs+Vjwen4i/fjYkOs25jJAIDX6SE=; b=lKNKu1LS3sYP07hNG72N4ikRLD/wtQat1PhcobLusfz7/cxzxbsA2JeTMZnEi48wQ29DSN 2eeP8x7SZfmj9F2/a9ONI3hQt54yApzZ40BNTOSyjHtZZZpTjFOhOJykNd82QvE0lqsrtJ dorCCDjTl6LHZpnrs4kawKjN66blsdLm+N5r6UzCGI2bHh/PQCXoVf9aAJsCAIfk9ZcSJu /X7eIFXZRHpgHys5FJ2KVttm29LY+dfQ47HlaWoGjcQSMbKDvvSlxExeenvjVnQ566+50f Dq0TZLMOBAE7S+sOhF68ZBvxbLQ5liUdakpzImf9/JfDvgq6XvtNV7IR4+CHJQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743609104; a=rsa-sha256; cv=none; b=iAAsXXWxbWm1Pgw1wzpA2gjStTn7gyyKWdTDkW1OI8AGBSrLG5iJJarujsN55WaSaP0hyH ZnURYg1qUAMDwq32pg6bkafjtzaUUDUsVeX1cHx02SHyaV+hVRsZ7Iz2qsVDIAqNJ9EmiR PRYiCtzipfNwMKVvnqmFUJoCpiW00GrpgQHRCvgofL1gavozOCRn48897LJXtWCjjr6EI6 DnC/9siHYNnqu6Ah1oTHJfM4NqNuzA8wmehx5d6/rIU2CLYZ1dD0xKsWf73o+v1XSaz5IQ 8seL/A/5FkslXD0X+Hwei8cKGba5YjxU0TpFxE5H3+zM1rQbVzVmYQjEzNOMOQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743609104; 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=rWp4vZFvDv3UxUOLs+Vjwen4i/fjYkOs25jJAIDX6SE=; b=u1T7Is1x7trcVR+T3hbQnRoYkzEgM33MUWdJeWeK4mdZTra/1opoxRJxa+XmnwWaG5dyh3 v+CHfVL8VQ+5aT7rDx6hX6h2MZs21PjV/61u3uwDHwFlEehqIovaM5JHJkITvBK8Ndzvu6 nhL4l7aEYEGGaXr/8EKEUAT1Ra3+bzoLJYeo8wyKoMuuieTgogxLpR8+15fx0kVFUfRShF 9LQ9MZCzlVGCB280ypzsotqAlAgqggQOi/teAZVIlf8GEmprzZ7+uDfABd3THwtPZiqy2j yYGwPg2GzsD+DK8aIxOWJSiDl3SvfEo+ON3vM0TX2JyAKb/lMWX74BLG9Lkpdw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSTrH6502z75F; Wed, 02 Apr 2025 15:51:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532FphXI033972; Wed, 2 Apr 2025 15:51:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532Fph8x033969; Wed, 2 Apr 2025 15:51:43 GMT (envelope-from git) Date: Wed, 2 Apr 2025 15:51:43 GMT Message-Id: <202504021551.532Fph8x033969@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Colin Percival Subject: git: e85aaed60eb0 - main - Correct CTLTYPE of SYSCTL_SBINTIME_MSEC etc List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e85aaed60eb061f31b2f1e5dc92b0ff0419b5fbf Auto-Submitted: auto-generated The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=e85aaed60eb061f31b2f1e5dc92b0ff0419b5fbf commit e85aaed60eb061f31b2f1e5dc92b0ff0419b5fbf Author: Colin Percival AuthorDate: 2025-03-31 04:05:33 +0000 Commit: Colin Percival CommitDate: 2025-04-02 15:51:04 +0000 Correct CTLTYPE of SYSCTL_SBINTIME_MSEC etc These should be CTLTYPE_S64, not CTLTYPE_INT, since they handle 64-bit values. Reviewed by: imp Fixes: 003ffd57fee1 ("Add sysctl_usec_to_sbintime [...]") MFC after: 2 weeks Sponsored by: Amazon Differential Revision: https://reviews.freebsd.org/D49584 --- sys/sys/sysctl.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/sys/sysctl.h b/sys/sys/sysctl.h index 916c91da3d53..0eb9ff274c1b 100644 --- a/sys/sys/sysctl.h +++ b/sys/sys/sysctl.h @@ -864,7 +864,7 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_entry); /* OID expressing a sbintime_t as microseconds */ #define SYSCTL_SBINTIME_USEC(parent, nbr, name, access, ptr, descr) \ SYSCTL_OID(parent, nbr, name, \ - CTLTYPE_INT | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ + CTLTYPE_S64 | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ (ptr), 0, sysctl_usec_to_sbintime, "Q", descr); \ CTASSERT(((access) & CTLTYPE) == 0 || \ ((access) & SYSCTL_CT_ASSERT_MASK) == CTLTYPE_S64) @@ -874,7 +874,7 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_entry); CTASSERT(((access) & CTLTYPE) == 0 || \ ((access) & SYSCTL_CT_ASSERT_MASK) == CTLTYPE_S64); \ sysctl_add_oid(ctx, parent, nbr, name, \ - CTLTYPE_INT | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ + CTLTYPE_S64 | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ __ptr, 0, sysctl_usec_to_sbintime, "Q", __DESCR(descr), \ NULL); \ }) @@ -882,7 +882,7 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_entry); /* OID expressing a sbintime_t as milliseconds */ #define SYSCTL_SBINTIME_MSEC(parent, nbr, name, access, ptr, descr) \ SYSCTL_OID(parent, nbr, name, \ - CTLTYPE_INT | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ + CTLTYPE_S64 | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ (ptr), 0, sysctl_msec_to_sbintime, "Q", descr); \ CTASSERT(((access) & CTLTYPE) == 0 || \ ((access) & SYSCTL_CT_ASSERT_MASK) == CTLTYPE_S64) @@ -892,7 +892,7 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_entry); CTASSERT(((access) & CTLTYPE) == 0 || \ ((access) & SYSCTL_CT_ASSERT_MASK) == CTLTYPE_S64); \ sysctl_add_oid(ctx, parent, nbr, name, \ - CTLTYPE_INT | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ + CTLTYPE_S64 | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ __ptr, 0, sysctl_msec_to_sbintime, "Q", __DESCR(descr), \ NULL); \ }) From nobody Wed Apr 2 16:25:33 2025 X-Original-To: dev-commits-src-main@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 4ZSVbK6l3Hz5sVWV; Wed, 02 Apr 2025 16:25: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSVbK61Phz3rpy; Wed, 02 Apr 2025 16:25:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743611133; 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=eM3YhrlSgrTYDFcTjq8dOVXHjmlWzjM577jNcYaLLDo=; b=tEvrR8/n9wis4d2JQNfOflbAFA4iM/dFvOf1IuDk2CXSX/sPEcgacM1GBadYDKmrSY+c/P z1aebKiyBoLe4F2KrUPMWuJbqxo/XhjwXr4ENj7Es5k9etD80MNEV4DzmnzcX5WBc1S1qk AODJ1r0vcBW1q+ICmNEcTMn/m3snXTq3dDVi83V7EYe8SJGKg8R3HLmms3yxN5/c2b6Z7I eEk5PFrtzetT33sT+AjibLZ3CAHuaCnFKEdBnSuqnMrf9he2YtlczLw7qZH9IQGKc5+6GT MfwrgwuuhPzd55yY+DmaCBwkxzYDBdQQzIc/G1UeqqnJhYFwc6sU6dsAvzJCpw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743611133; a=rsa-sha256; cv=none; b=JPUiATNhDawCpyK+QIIVPxwcJcNX71JJJ4F8hwJhextNlBw3kFN4821IVhXqGAH9qL6snR 6Qq1Thp9xGrK+WsCYDRxvPQ/yykJGYowOulqoN5Nw67/RaFjLh/3iWApdvVNf863jfl73u OHh2YlCXSlvk54R0jJ55bPRHiL0y2tOAAyF+kxdhJwvbNnTCu1aGBEBTh8u82PP4KodN9q gP4aJuVmFx3xBbl0RfXZQwWGo7zjDsHKaw4xMAJc+X0zf5OK9JZt8cbckEqVuFWVzO5niH 8m/FTa7Wnpkgtn4HYluh2T8wIDrrADFHXDSdceWAq0hzKYej6LRoeL496cOJHA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743611133; 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=eM3YhrlSgrTYDFcTjq8dOVXHjmlWzjM577jNcYaLLDo=; b=UTvk8PGXm+hcwHAJQlt4n00aB15K7uI0ifwU31lyaWuzIB8qqEFd++yuyH60+N55knYYw9 qcZ+g4Bu1F/znyR0CCNsapDKtYX1Dt/c1g9k3aTAfewMOuTr5dOACx5hFkfXYgC8Uav7V2 AZjKSx8zsgdPDvrgRaLyYzODhgLNShShd9q2SVpUmDPjI1RCaXK0wuNJUJ701uxqptK9Nl 1R9rYaAlW7MJ9D0dW+sO2TBfkhopTNvQv5SC0C5lR1BZRy25AJPgu2fqS4+lUXU01UUqCg 9dQ8pv8iQskaLIcAYJvB7eAYxFilxrb4znq9kRQIFZuN5bdoKNYyeCgvTfhYJQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSVbK5339z7Wx; Wed, 02 Apr 2025 16:25:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532GPXon092755; Wed, 2 Apr 2025 16:25:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532GPXBp092752; Wed, 2 Apr 2025 16:25:33 GMT (envelope-from git) Date: Wed, 2 Apr 2025 16:25:33 GMT Message-Id: <202504021625.532GPXBp092752@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: ce9c46738295 - main - ktrace tests: don't use INADDR_ANY as a destination for sendto(2) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ce9c4673829561bf66c78577be2b078d5662a33b Auto-Submitted: auto-generated The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=ce9c4673829561bf66c78577be2b078d5662a33b commit ce9c4673829561bf66c78577be2b078d5662a33b Author: Gleb Smirnoff AuthorDate: 2025-04-02 16:21:04 +0000 Commit: Gleb Smirnoff CommitDate: 2025-04-02 16:25:01 +0000 ktrace tests: don't use INADDR_ANY as a destination for sendto(2) The INADDR_ANY is a broadcast address, and with recent changes its use as destination for UDP sendto(2) was disallowed unless SO_BROADCAST is set. Use just a localhost address for a successful sendto(2). While here convert a couple checks that happen in the parent to use normal ATF_REQUIRE() instead of CHILD_REQUIRE(). PR: 285851 Fixes: 3b281d1421a78b588c5fc4182009ce62d8823d95 --- tests/sys/kern/ktrace_test.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/sys/kern/ktrace_test.c b/tests/sys/kern/ktrace_test.c index dfd60b73a5cd..785c78bedaba 100644 --- a/tests/sys/kern/ktrace_test.c +++ b/tests/sys/kern/ktrace_test.c @@ -378,12 +378,11 @@ ATF_TC_BODY(ktrace__cap_sockaddr, tc) ATF_REQUIRE(sigaddset(&set, SIGUSR1) != -1); ATF_REQUIRE(sigprocmask(SIG_BLOCK, &set, NULL) != -1); - CHILD_REQUIRE((sfd = socket(AF_INET, SOCK_DGRAM, - IPPROTO_UDP)) != -1); + ATF_REQUIRE((sfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) != -1); addr.sin_family = AF_INET; addr.sin_port = htons(5000); - addr.sin_addr.s_addr = INADDR_ANY; - CHILD_REQUIRE(bind(sfd, (const struct sockaddr *)&addr, + addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + ATF_REQUIRE(bind(sfd, (const struct sockaddr *)&addr, sizeof(addr)) != -1); ATF_REQUIRE((pid = fork()) != -1); @@ -409,7 +408,7 @@ ATF_TC_BODY(ktrace__cap_sockaddr, tc) saddr = (struct sockaddr_in *)&violation.cap_data.cap_sockaddr; ATF_REQUIRE_EQ(saddr->sin_family, AF_INET); ATF_REQUIRE_EQ(saddr->sin_port, htons(5000)); - ATF_REQUIRE_EQ(saddr->sin_addr.s_addr, INADDR_ANY); + ATF_REQUIRE_EQ(saddr->sin_addr.s_addr, htonl(INADDR_LOOPBACK)); close(sfd); } From nobody Wed Apr 2 16:26:51 2025 X-Original-To: dev-commits-src-main@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 4ZSVcr2JGVz5sVgS; Wed, 02 Apr 2025 16:26: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSVcr0LVFz3swc; Wed, 02 Apr 2025 16:26:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743611212; 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=Rt98GqE8fAYh/uZ2QOyrxPQvAlnu+5zc3R+yLXYA1LU=; b=xAYjhJAi4MHs6vpzi4rkA472plV/GBGLF8gw/JAciUEyBU5vX0KFIZy8EMSdgtXezLsUQ1 GQhZjV3+eMLrWOONuvoHAC65jfhFv5BBYc4gBRl3r2Ve4t5N9ct6xCc7OJIu08flpQa3EP nj+bMbJMpz7xpT2ViYuMbKhk2/MCGcZNsANmqL8/Js2t3oN2uwBc36fgeM5ftoTKD4ag+O 6AXLnVkyfNs6VRa/eZoyI6Z5ox5tvM/fWdguZV77Mrd17M3S//KNrqGjm9NZwni1RvVUe1 00aDEhqAcE3BoF0m0AI3aNWl6ScW5BEv/86HWMi+6jc4eN2dWlVyeDe06vdDNg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743611212; a=rsa-sha256; cv=none; b=Wo02GzZlCW94te5mBm+PAguj4qn710QEQarX385FH9wd7eTMSQ6fA4NVKnNzYPXiMNZqIE 1IHDtfAVZTxjeHhTLGNSsz0AxJOuStGj07rflkYhBuYG96pj1kygVUXgz699Dyc4TRGb5z oadFMifgoOlXhvWrEitWN07sD1yOVlLMrel86MvrwHBql9Hv/GfdQvZv16uk57SHiwEk3r 3D8bUtIcCMwnWJDY08W8zkI8nrIQ71WYAnkPlHRmvgoulG12QKu5Rgv3kpnWrjz+9j8EU4 BvtGeWIi0Y//ZGF/jpS3CFzlEaQz2XIxsARCKmH26uhaYSFfCWZfHRQlrBLSjQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743611212; 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=Rt98GqE8fAYh/uZ2QOyrxPQvAlnu+5zc3R+yLXYA1LU=; b=hL1pOJW8WbyvVdy/3RvSm/vmkQDM82F9rega5FP+Hwjnyfr45Mx2dObhWeqxI4kH0+wULL 1o/4P5n5KEY2lhcCj8b3ST5aoOxFofm5kCmSFrioeIew25dvgeTNc5hGx/R8CwNqNIl7EL qONNuLPzcVD8d/1PwC7cRXXrsjl5qFHUqYB7J9BhK987aJj25wrnO5nVEeWNj2H38UFeHw rlM9H/FqRx6HsL6hj/jlP+6KAKHlW6D3MQlJvCrYtBoEBWTOi0gTlOBMeLVRXLL8+5Mfqv wekSznS51VX9ftDk8wYoURWH37mWGjNN78kQWt00+N89Xp1yiI/PrTR9Hxl0Pw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSVcq70hwz7w1; Wed, 02 Apr 2025 16:26:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532GQpba093279; Wed, 2 Apr 2025 16:26:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532GQpMQ093276; Wed, 2 Apr 2025 16:26:51 GMT (envelope-from git) Date: Wed, 2 Apr 2025 16:26:51 GMT Message-Id: <202504021626.532GQpMQ093276@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Olivier Certner Subject: git: 03c12d0c21a3 - main - MAC/do: parse_single_rule(): Fix herald comment's first line List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 03c12d0c21a3f3aba5db8b86fc3b4637cfe109a7 Auto-Submitted: auto-generated The branch main has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=03c12d0c21a3f3aba5db8b86fc3b4637cfe109a7 commit 03c12d0c21a3f3aba5db8b86fc3b4637cfe109a7 Author: Olivier Certner AuthorDate: 2025-04-01 16:43:40 +0000 Commit: Olivier Certner CommitDate: 2025-04-02 16:26:33 +0000 MAC/do: parse_single_rule(): Fix herald comment's first line No functional change. MFC after: 5 days Sponsored by: The FreeBSD Foundation --- sys/security/mac_do/mac_do.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 8175f8ccdab4..7bd3e2294798 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -844,7 +844,7 @@ pour_list_into_rule(const id_type_t type, struct id_list *const list, } /* - * See also first comments for parse_rule() below. + * See also the herald comment for parse_rules() below. * * The second part of a rule, called (or ), is a comma-separated * (',') list of '=' clauses similar to that of the From nobody Wed Apr 2 16:26:53 2025 X-Original-To: dev-commits-src-main@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 4ZSVcs2JgQz5sVGQ; Wed, 02 Apr 2025 16:26: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSVcs1FtCz3swd; Wed, 02 Apr 2025 16:26:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743611213; 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=N4l53Ym/P7gY9UJOwK51T0q+uxijZWMG40XevkFsNEY=; b=t4XmB8L2IYNR+H8phWmfs3yRWZb63eeKZ3n1GI5Sv6wuBWT9NaiE6bM404hq+96ZBTIRYR i6Gy7NZ/roMPS2Y4V+ebV2msQD5mVLvpMyaE9a0U4Vw8lDm6HTnA9E5QclUhz9yu4E+Tky GeVNwCeIAEgAOtgsi745xTvPkILbZp3UlvqNqadI/1hq241Il0skgi6z0R5Q/TNLTnVn7Y LhMqYoyqUjajI1EgluCbyZI+m6xVXjHBPZ5jX+OtaTRy/MdIrAIKL/xAuuBGTOSzmq8oI6 GqFkBBdXjvxFR/P7CjNYpT7d+p+nE+r9Ln9BqRleMlNftQV0M6lc6BKexvpd+A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743611213; a=rsa-sha256; cv=none; b=dyp5g3AN1SKU+qzUy5K1apkOLn6jdspJzWiPNwenktlZ8YO3kgNkW6xzyF9s6LkbIhRkoJ F8vVlwGzsshi2BDUGr3WxsgjklRr2reuyvdft3kIiGNuGf0ZjYaf7v8UF8YwiESqQVQaIx thZ6IDDlbWpvNFSvSAnT+JrM+RnmmXq1UNY5/F4MkENkcLBzG/52fhS4Zft1LYwxC6gkGA Ix8wDP1q80wdH7SLFMqlXvAdP0YfZbfmXC27NS/wymFtwsvM+MuD01g6/WvQGnTXgbuyPO QB2Yav2WRcO6LOylKI2s0fVxyNuZLuAe7aevL0bLjE/gUqKRfBX238rF9/hPKA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743611213; 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=N4l53Ym/P7gY9UJOwK51T0q+uxijZWMG40XevkFsNEY=; b=ERoAti38/tXT2wFwehEO0lcfZ4npxpwHCXN56WzKjWm6ufXY+5krWNogC4eHeTZd+cjR45 SYUCvr4frThwIkoMxSnSc9TcI+XKYUoAFCZuz9imtwHcQWuZhioCxSRsWDD4IfvtqlwIBC vdDommppgkL4oZgNBCsrBqT82CejVQJJyOr7s0RKrR4vmm/M+GMufknnt6vRWF1yY7AdMF W89aIGy1FJwul3YSu9hgdEgpwI4mLGwQ1UGNFy4hZ4U6dAxvf1vZMI1UYCOd6TODFlqkZs QQSmrhxfsWhvQh6IZs8i4tbieaDnysGZOL4p60FXwagEdmGnH7/IMD+6BjddiQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSVcs0r21z7w2; Wed, 02 Apr 2025 16:26:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532GQr6R093315; Wed, 2 Apr 2025 16:26:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532GQrT9093312; Wed, 2 Apr 2025 16:26:53 GMT (envelope-from git) Date: Wed, 2 Apr 2025 16:26:53 GMT Message-Id: <202504021626.532GQrT9093312@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Olivier Certner Subject: git: f01d26dec67f - main - MAC/do: Rules: and parts now to be separated by '>' List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: f01d26dec67fb6597438ed765269b85d1099a6fa Auto-Submitted: auto-generated The branch main has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=f01d26dec67fb6597438ed765269b85d1099a6fa commit f01d26dec67fb6597438ed765269b85d1099a6fa Author: Olivier Certner AuthorDate: 2025-04-01 17:06:17 +0000 Commit: Olivier Certner CommitDate: 2025-04-02 16:26:38 +0000 MAC/do: Rules: and parts now to be separated by '>' Previously, we would accept only ':' as the separator, which makes parsing of the rule specification harder for humans, especially those people that are used to UNIX systems where ':' is used as the separator in PATH. With ':', the and parts can look like two different elements that are unrelated, especially to these eyes. Change parse_single_rule() so that '>' is also accepted as a separator between and , and promote it as the one to use. During a transition period, we will still allow the use of ':' for backwards compatibility. The manual page update comes from separate revision D49628. ':' has been completely removed from it on purpose. Reviewed by: bapt, manpages (ziaee) MFC after: 5 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D49627 --- share/man/man4/mac_do.4 | 34 +++++++++++++++++----------------- sys/security/mac_do/mac_do.c | 11 ++++++----- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/share/man/man4/mac_do.4 b/share/man/man4/mac_do.4 index 9a9f669cd51c..4c067205225c 100644 --- a/share/man/man4/mac_do.4 +++ b/share/man/man4/mac_do.4 @@ -75,9 +75,9 @@ and a .Li Aq to part .Pq also called Dq target , -in this order, separated by a colon -.Pq Ql ":" : -.Dl Ao rule Ac \ ⟶\ Ao from Ac So ":" Sc Ao to Ac +in this order, separated by a greater-than sign +.Pq Ql > : +.Dl Ao rule Ac \ ⟶\ Ao from Ac So > Sc Ao to Ac .Ss Rule's Ao from Ac Part The first part of a rule, .Li Aq from , @@ -347,32 +347,32 @@ as this path is currently not configurable. Here are several examples of single rules matching processes having a real user ID of 10001: .Bl -tag -width indent -.It Li uid=10001:uid=10002 +.It Li uid=10001>uid=10002 Allows the process to switch any of its real, effective or saved user ID to 10002, but keeping the groups it is already in, and with the same primary/supplementary groups split. -.It Li uid=10001:uid=10002,uid=10003 +.It Li uid=10001>uid=10002,uid=10003 Same as the first example, but also allows to switch to UID 10003 instead of 10002. -.It Li uid=10001:uid=10002,gid=10002 +.It Li uid=10001>uid=10002,gid=10002 Same as the first example, but the new primary groups must be set to 10002 and no supplementary groups should be set. -.It Li uid=10001:uid=10002,gid=10002,+gid=.\& +.It Li uid=10001>uid=10002,gid=10002,+gid=.\& Same as the previous example, but in addition allowing to retain any current supplementary groups. -.It Li uid=10001:uid=10002,gid=10002,!gid=.\& +.It Li uid=10001>uid=10002,gid=10002,!gid=.\& Same as the previous example, but with the additional constraint that all current supplementary groups must be kept. -.It Li uid=10001:uid=10002,gid=10002,+gid=.,-gid=10001 +.It Li uid=10001>uid=10002,gid=10002,+gid=.,-gid=10001 Same as -.Ql uid=10001:uid=10002,gid=10002,+gid=.\& +.Ql uid=10001>uid=10002,gid=10002,+gid=.\& above, but 10001 cannot be retained as a supplementary group. -.It Li uid=10001:uid=10002,gid=10002,+gid=.,!gid=10003 +.It Li uid=10001>uid=10002,gid=10002,+gid=.,!gid=10003 Same as -.Ql uid=10001:uid=10002,gid=10002,+gid=.\& +.Ql uid=10001>uid=10002,gid=10002,+gid=.\& above, with the additional constraint that 10003 must appear in the supplementary groups. -.It Li uid=10001:uid=10002,gid=*,+gid=* +.It Li uid=10001>uid=10002,gid=*,+gid=* Same as the first example, but lifting any constraints on groups, allowing the process to become part of any groups it sees fit. .El @@ -380,17 +380,17 @@ process to become part of any groups it sees fit. Here are several examples of single rules matching processes having a real group ID of 10001: .Bl -tag -width indent -.It Li gid=10001:uid=0 +.It Li gid=10001>uid=0 Makes 10001 a more powerful .Ql wheel group, allowing its members to switch to root without password. -.It Li gid=10001:gid=10002 +.It Li gid=10001>gid=10002 Allows the process to enter GID 10002 as a primary group, but only if giving up all its supplementary groups. -.It Li security.mac.do.rules=gid=10001:gid=10002,+gid=.\& +.It Li security.mac.do.rules=gid=10001>gid=10002,+gid=.\& Same as the previous example, but allows to retain any current supplementary groups. -.It Li gid=10001:gid=10002,!gid=.\& +.It Li gid=10001>gid=10002,!gid=.\& Same as the previous example, but with the additional constraint that all current supplementary groups must be kept. .El diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 7bd3e2294798..a83c194b24ae 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -891,7 +891,7 @@ parse_single_rule(char *rule, struct rules *const rules, goto einval; } - from_id = strsep_noblanks(&rule, ":"); + from_id = strsep_noblanks(&rule, ":>"); if (is_null_or_empty(from_id)) { make_parse_error(parse_error, 0, "No ID specified."); goto einval; @@ -991,8 +991,9 @@ einval: * to point to a 'struct parse_error' giving an error message for the problem, * else '*parse_error' is set to NULL. * - * Expected format: A semi-colon-separated list of rules of the form - * ":". The part is of the form "=" where + * Expected format: A >-colon-separated list of rules of the form + * ">" (for backwards compatibility, a semi-colon ":" is accepted + * in place of '>'). The part is of the form "=" where * is "uid" or "gid", an UID or GID (depending on ) and is * "*", "any" or a comma-separated list of '=' clauses (see the * comment for parse_single_rule() for more details). For convenience, empty @@ -1002,8 +1003,8 @@ einval: * allowed between '' and ''). * * Examples: - * - "uid=1001:uid=1010,gid=1010;uid=1002:any" - * - "gid=1010:gid=1011,gid=1012,gid=1013" + * - "uid=1001>uid=1010,gid=1010;uid=1002>any" + * - "gid=1010>gid=1011,gid=1012,gid=1013" */ static int parse_rules(const char *const string, struct rules **const rulesp, From nobody Wed Apr 2 16:57:09 2025 X-Original-To: dev-commits-src-main@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 4ZSWHn4M3Fz5sWvr; Wed, 02 Apr 2025 16:57: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSWHn3h37z3w3d; Wed, 02 Apr 2025 16:57:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743613029; 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=Zeivw4R2jFRImEQeMF7v/TCLAlUwkh5tXVdyQghI6SM=; b=xWxBP5B5yItWA0/R2yYWkt6mVf4iNTzwLxmgaOF1srJv1lRX+J73ecLtekifuHxNQ/sBtj redlPWxlLI1Z8E7QdLYBydBdtfhJEqAbTJfYUzPcFWkqvLsk56LbGm4AEhOMGk76NakbME Mnj/1fHNq2hsyYZb41yX+HHTKbCRkLU5voT/RcBFt2k6mex/+FsVnAEZbG/0JopVho7n2G gcpUzgxxArL/6jQK6bqEluDdi+3KxlR93i2qhBaYWKKfRSPkH736HcRLN96gSag+M391rr R5cqh7hFsH67ALGcEuGI5s5LTvlkQwJzgLr0lgEdLUO87o9Adij6Gz3x10TWGw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743613029; a=rsa-sha256; cv=none; b=LH1nKdHC/U8/ZHMyhaIseRWHmJeZR/H+4+DRzlcnIpH6JUT/fn+IHynD1T6iqq2JwGs2Si xk984ZSD+JB+/UJs1wzZhaRXKH9xsCQh9MhE9MRiveUwEkRr8NUBuq1x7TuiYr9gXcQNad TQt/qVnJDhu+Zb+A+KgXTtGDH04+KhruhxLRp8/twFNTfhFwBfn8/dOCQOic5iTNvR/YYq 3jWjeOAUmKfUOWOmN2ZNSgyMxyQYGG+ZsoeJdXui27z/03RUc+qj3T7Gsfj0sLuXtJqmrh EfZAZO5NdqmNVFJD8RcPYYsqPdcwxEMdW36I5YeH3kHktNpZN2Qs2eNwgHPVkQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743613029; 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=Zeivw4R2jFRImEQeMF7v/TCLAlUwkh5tXVdyQghI6SM=; b=MJwKylNaEcIGh7v21rY6KZfYDGHC/pUT7kohObT/sye4dQfQvK4hGSlIYIBKldw9FN4z4V p5qEKL7Jvf8iE1/8nlEYWsX+gm1HfM2VtxipqxzZCsAwd4FrAM6tEHFGoiaA7DG2JPPerJ 8uCGgTRmTnVlud/wm+KV3V26zPexDQTukmys3MG4FxnjClooOlSjTHt3E62zo1IIzdcfBO N+O9T3m2zpECkBm8iPFbrFS+SDMjZfTPZd9F1j5KZu7/nIdLr6QRp6hhpZxAIdOoQK7rs6 aROyxHe01MkJ45hf+xV8qfh5d9OILmy2+ad5ZXjE+kfQpRORbOfKIxEtbc/Prw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSWHn3BMYz8TB; Wed, 02 Apr 2025 16:57:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532Gv9Or049183; Wed, 2 Apr 2025 16:57:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532Gv93w049180; Wed, 2 Apr 2025 16:57:09 GMT (envelope-from git) Date: Wed, 2 Apr 2025 16:57:09 GMT Message-Id: <202504021657.532Gv93w049180@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mitchell Horne Subject: git: e69623451ea6 - main - mccomphy: add support for YT8531 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: e69623451ea62d2c3c76e0d0e775aa3f7317f2eb Auto-Submitted: auto-generated The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=e69623451ea62d2c3c76e0d0e775aa3f7317f2eb commit e69623451ea62d2c3c76e0d0e775aa3f7317f2eb Author: Jari Sihvola AuthorDate: 2025-03-29 20:55:13 +0000 Commit: Mitchell Horne CommitDate: 2025-04-02 16:56:36 +0000 mccomphy: add support for YT8531 Reviewed by: mhorne Tested by: mhorne MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D45600 --- sys/dev/mii/mcommphy.c | 258 ++++++++++++++++++++++++++++++++++++++++++++----- sys/dev/mii/miidevs | 2 + 2 files changed, 235 insertions(+), 25 deletions(-) diff --git a/sys/dev/mii/mcommphy.c b/sys/dev/mii/mcommphy.c index a8a16c00bade..edbed0c66279 100644 --- a/sys/dev/mii/mcommphy.c +++ b/sys/dev/mii/mcommphy.c @@ -1,6 +1,7 @@ /* * Copyright (c) 2022 Jared McNeill * Copyright (c) 2022 Soren Schmidt + * Copyright (c) 2024 Jari Sihvola * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,7 +27,8 @@ */ /* - * Motorcomm YT8511C / YT8511H Integrated 10/100/1000 Gigabit Ethernet phy + * Motorcomm YT8511C/YT8511H/YT8531 + * Integrated 10/100/1000 Gigabit Ethernet phy */ #include @@ -42,12 +44,16 @@ #include #include +#include +#include "miidevs.h" #include "miibus_if.h" -#define MCOMMPHY_OUI 0x000000 -#define MCOMMPHY_MODEL 0x10 -#define MCOMMPHY_REV 0x0a +#define MCOMMPHY_YT8511_OUI 0x000000 +#define MCOMMPHY_YT8511_MODEL 0x10 +#define MCOMMPHY_YT8511_REV 0x0a + +#define MCOMMPHY_YT8531_MODEL 0x11 #define EXT_REG_ADDR 0x1e #define EXT_REG_DATA 0x1f @@ -61,9 +67,49 @@ #define PHY_SLEEP_CONTROL1_REG 0x27 #define PLLON_IN_SLP 0x4000 +/* Registers and values for YT8531 */ +#define YT8531_CHIP_CONFIG 0xa001 +#define RXC_DLY_EN (1 << 8) + +#define YT8531_PAD_DRSTR_CFG 0xa010 +#define PAD_RXC_MASK 0x7 +#define PAD_RXC_SHIFT 13 +#define JH7110_RGMII_RXC_STRENGTH 6 + +#define YT8531_RGMII_CONFIG1 0xa003 +#define RX_DELAY_SEL_SHIFT 10 +#define RX_DELAY_SEL_MASK 0xf +#define RXC_DLY_THRESH 2250 +#define RXC_DLY_ADDON 1900 +#define TX_DELAY_SEL_FE_MASK 0xf +#define TX_DELAY_SEL_FE_SHIFT 4 +#define TX_DELAY_SEL_MASK 0xf +#define TX_DELAY_SEL_SHIFT 0 +#define TX_CLK_SEL (1 << 14) +#define INTERNAL_DLY_DIV 150 + +#define YT8531_SYNCE_CFG 0xa012 +#define EN_SYNC_E (1 << 6) + #define LOWEST_SET_BIT(mask) ((((mask) - 1) & (mask)) ^ (mask)) #define SHIFTIN(x, mask) ((x) * LOWEST_SET_BIT(mask)) +static const struct mii_phydesc mcommphys[] = { + MII_PHY_DESC(MOTORCOMM, YT8511), + MII_PHY_DESC(MOTORCOMM2, YT8531), + MII_PHY_END +}; + +struct mcommphy_softc { + mii_softc_t mii_sc; + device_t dev; + bool tx_10_inv; + bool tx_100_inv; + bool tx_1000_inv; +}; + +static void mcommphy_yt8531_speed_adjustment(struct mii_softc *sc); + static int mcommphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) { @@ -84,6 +130,16 @@ mcommphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) /* Update the media status. */ PHY_STATUS(sc); + /* + * For the needs of JH7110 which has two Ethernet devices with + * different TX inverted configuration depending on speed used + */ + if (sc->mii_mpd_model == MCOMMPHY_YT8531_MODEL && + (sc->mii_media_active != mii->mii_media_active || + sc->mii_media_status != mii->mii_media_status)) { + mcommphy_yt8531_speed_adjustment(sc); + } + /* Callback if something changed. */ mii_phy_update(sc, cmd); @@ -105,26 +161,22 @@ mcommphy_probe(device_t dev) * The YT8511C reports an OUI of 0. Best we can do here is to match * exactly the contents of the PHY identification registers. */ - if (MII_OUI(ma->mii_id1, ma->mii_id2) == MCOMMPHY_OUI && - MII_MODEL(ma->mii_id2) == MCOMMPHY_MODEL && - MII_REV(ma->mii_id2) == MCOMMPHY_REV) { + if (MII_OUI(ma->mii_id1, ma->mii_id2) == MCOMMPHY_YT8511_OUI && + MII_MODEL(ma->mii_id2) == MCOMMPHY_YT8511_MODEL && + MII_REV(ma->mii_id2) == MCOMMPHY_YT8511_REV) { device_set_desc(dev, "Motorcomm YT8511 media interface"); - return BUS_PROBE_DEFAULT; + return (BUS_PROBE_DEFAULT); } - return (ENXIO); + + /* YT8531 follows a conventional procedure */ + return (mii_phy_dev_probe(dev, mcommphys, BUS_PROBE_DEFAULT)); } -static int -mcommphy_attach(device_t dev) +static void +mcommphy_yt8511_setup(struct mii_softc *sc) { - struct mii_softc *sc = device_get_softc(dev); uint16_t oldaddr, data; - mii_phy_dev_attach(dev, MIIF_NOMANPAUSE, &mcommphy_funcs, 0); - - PHY_RESET(sc); - - /* begin chip stuff */ oldaddr = PHY_READ(sc, EXT_REG_ADDR); PHY_WRITE(sc, EXT_REG_ADDR, PHY_CLOCK_GATING_REG); @@ -150,21 +202,177 @@ mcommphy_attach(device_t dev) PHY_WRITE(sc, EXT_REG_DATA, data); PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); - /* end chip stuff */ +} + +static void +mcommphy_yt8531_speed_adjustment(struct mii_softc *sc) +{ + struct mcommphy_softc *mcomm_sc = (struct mcommphy_softc *)sc; + struct mii_data *mii = sc->mii_pdata; + bool tx_clk_inv = false; + uint16_t reg, oldaddr; + + switch (IFM_SUBTYPE(mii->mii_media_active)) { + case IFM_1000_T: + tx_clk_inv = mcomm_sc->tx_1000_inv; + break; + case IFM_100_T: + tx_clk_inv = mcomm_sc->tx_100_inv; + break; + case IFM_10_T: + tx_clk_inv = mcomm_sc->tx_10_inv; + break; + } + + oldaddr = PHY_READ(sc, EXT_REG_ADDR); + + PHY_WRITE(sc, EXT_REG_ADDR, YT8531_RGMII_CONFIG1); + reg = PHY_READ(sc, EXT_REG_DATA); + if (tx_clk_inv) + reg |= TX_CLK_SEL; + else + reg &= ~TX_CLK_SEL; + PHY_WRITE(sc, EXT_REG_DATA, reg); + + PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); + + return; +} + +static int +mcommphy_yt8531_setup_delay(struct mii_softc *sc) +{ + struct mcommphy_softc *mcomm_sc = (struct mcommphy_softc *)sc; + mii_fdt_phy_config_t *cfg = mii_fdt_get_config(mcomm_sc->dev); + pcell_t val; + uint16_t reg, oldaddr; + int rx_delay, tx_delay = 0; + bool rxc_dly_en_off = false; + + if (OF_getencprop(cfg->phynode, "rx-internal-delay-ps", &val, + sizeof(val)) > 0) { + if (val <= RXC_DLY_THRESH && val % INTERNAL_DLY_DIV == 0) { + rx_delay = val / INTERNAL_DLY_DIV; + rxc_dly_en_off = true; + } else { + rx_delay = (val - RXC_DLY_ADDON) / INTERNAL_DLY_DIV; + if ((val - RXC_DLY_ADDON) % INTERNAL_DLY_DIV != 0) + return (ENXIO); + } + } + + if (OF_getencprop(cfg->phynode, "tx-internal-delay-ps", &val, + sizeof(val)) > 0) { + tx_delay = val / INTERNAL_DLY_DIV; + if (val % INTERNAL_DLY_DIV != 0) + return (ENXIO); + } + + mii_fdt_free_config(cfg); - sc->mii_capabilities = PHY_READ(sc, MII_BMSR) & sc->mii_capmask; - if (sc->mii_capabilities & BMSR_EXTSTAT) - sc->mii_extcapabilities = PHY_READ(sc, MII_EXTSR); + oldaddr = PHY_READ(sc, EXT_REG_ADDR); + + /* Modifying Chip Config register */ + PHY_WRITE(sc, EXT_REG_ADDR, YT8531_CHIP_CONFIG); + reg = PHY_READ(sc, EXT_REG_DATA); + if (rxc_dly_en_off) + reg &= ~(RXC_DLY_EN); + PHY_WRITE(sc, EXT_REG_DATA, reg); + + /* Modifying RGMII Config1 register */ + PHY_WRITE(sc, EXT_REG_ADDR, YT8531_RGMII_CONFIG1); + reg = PHY_READ(sc, EXT_REG_DATA); + reg &= ~(RX_DELAY_SEL_MASK << RX_DELAY_SEL_SHIFT); + reg |= rx_delay << RX_DELAY_SEL_SHIFT; + reg &= ~(TX_DELAY_SEL_MASK << TX_DELAY_SEL_SHIFT); + reg |= tx_delay << TX_DELAY_SEL_SHIFT; + PHY_WRITE(sc, EXT_REG_DATA, reg); + + PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); + + return (0); +} + +static int +mcommphy_yt8531_setup(struct mii_softc *sc) +{ + struct mcommphy_softc *mcomm_sc = (struct mcommphy_softc *)sc; + mii_fdt_phy_config_t *cfg = mii_fdt_get_config(mcomm_sc->dev); + uint16_t reg, oldaddr; + + if (OF_hasprop(cfg->phynode, "motorcomm,tx-clk-10-inverted")) + mcomm_sc->tx_10_inv = true; + + if (OF_hasprop(cfg->phynode, "motorcomm,tx-clk-100-inverted")) + mcomm_sc->tx_100_inv = true; + + if (OF_hasprop(cfg->phynode, "motorcomm,tx-clk-1000-inverted")) + mcomm_sc->tx_1000_inv = true; + + mii_fdt_free_config(cfg); + + oldaddr = PHY_READ(sc, EXT_REG_ADDR); + + /* Modifying Pad Drive Strength register */ + PHY_WRITE(sc, EXT_REG_ADDR, YT8531_PAD_DRSTR_CFG); + reg = PHY_READ(sc, EXT_REG_DATA); + reg &= ~(PAD_RXC_MASK << PAD_RXC_SHIFT); + reg |= (JH7110_RGMII_RXC_STRENGTH << PAD_RXC_SHIFT); + PHY_WRITE(sc, EXT_REG_DATA, reg); + + /* Modifying SyncE Config register */ + PHY_WRITE(sc, EXT_REG_ADDR, YT8531_SYNCE_CFG); + reg = PHY_READ(sc, EXT_REG_DATA); + reg &= ~(EN_SYNC_E); + PHY_WRITE(sc, EXT_REG_DATA, reg); + + PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); + + if (mcommphy_yt8531_setup_delay(sc) != 0) + return (ENXIO); + + return (0); +} + +static int +mcommphy_attach(device_t dev) +{ + struct mcommphy_softc *mcomm_sc = device_get_softc(dev); + mii_softc_t *mii_sc = &mcomm_sc->mii_sc; + int ret = 0; + + mcomm_sc->dev = dev; + + mii_phy_dev_attach(dev, MIIF_NOMANPAUSE, &mcommphy_funcs, 0); + + PHY_RESET(mii_sc); + + if (mii_sc->mii_mpd_model == MCOMMPHY_YT8511_MODEL) + mcommphy_yt8511_setup(mii_sc); + else if (mii_sc->mii_mpd_model == MCOMMPHY_YT8531_MODEL) + ret = mcommphy_yt8531_setup(mii_sc); + else { + device_printf(dev, "no PHY model detected\n"); + return (ENXIO); + } + if (ret) { + device_printf(dev, "PHY setup failed, error: %d\n", ret); + return (ret); + } + + mii_sc->mii_capabilities = PHY_READ(mii_sc, MII_BMSR) & + mii_sc->mii_capmask; + if (mii_sc->mii_capabilities & BMSR_EXTSTAT) + mii_sc->mii_extcapabilities = PHY_READ(mii_sc, MII_EXTSR); device_printf(dev, " "); - mii_phy_add_media(sc); + mii_phy_add_media(mii_sc); printf("\n"); - MIIBUS_MEDIAINIT(sc->mii_dev); + MIIBUS_MEDIAINIT(mii_sc->mii_dev); return (0); } - static device_method_t mcommphy_methods[] = { /* device interface */ DEVMETHOD(device_probe, mcommphy_probe), @@ -177,7 +385,7 @@ static device_method_t mcommphy_methods[] = { static driver_t mcommphy_driver = { "mcommphy", mcommphy_methods, - sizeof(struct mii_softc) + sizeof(struct mcommphy_softc) }; DRIVER_MODULE(mcommphy, miibus, mcommphy_driver, 0, 0); diff --git a/sys/dev/mii/miidevs b/sys/dev/mii/miidevs index c8eba403c22d..5c10fd0f0224 100644 --- a/sys/dev/mii/miidevs +++ b/sys/dev/mii/miidevs @@ -63,6 +63,7 @@ oui LEVEL1 0x00207b Level 1 oui MARVELL 0x005043 Marvell Semiconductor oui MICREL 0x0010a1 Micrel oui MOTORCOMM 0x000000 Motorcomm +oui MOTORCOMM2 0xc82b5e Motorcomm oui MYSON 0x00c0b4 Myson Technology oui NATSEMI 0x080017 National Semiconductor oui PMCSIERRA 0x00e004 PMC-Sierra @@ -295,6 +296,7 @@ model MICREL KSZ9031 0x0022 Micrel KSZ9031 10/100/1000 PHY /* Motorcomm PHYs */ model MOTORCOMM YT8511 0x010a Motorcomm YT8511 10/100/1000 PHY +model MOTORCOMM2 YT8531 0x0011 Motorcomm YT8531 10/100/1000 PHY /* Myson Technology PHYs */ model xxMYSON MTD972 0x0000 MTD972 10/100 media interface From nobody Wed Apr 2 16:57:10 2025 X-Original-To: dev-commits-src-main@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 4ZSWHp6y0pz5sXFs; Wed, 02 Apr 2025 16:57: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSWHp4bGyz3wPk; Wed, 02 Apr 2025 16:57:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743613030; 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=BmdhR1iJcQ2LlYWyWAgO/nxRGZhmK8SAWlfvpeJjTdk=; b=JIS3MaCd9lrFFqgY3IXQhu2mIxV0zq0oiAfaNlkP3arf/GGQ6vZ+HeTp0pBnR8wvzS6IbS a8Jg6WQNX5dr0Pr6/p9+Gs3bQDc3fcs4SBKrfiJQCjwSydR0Cn1qb4uU60LNRfjYaE15vD 1upfZJOPFWHKyK0RfPIBEiv+kuOHLJB1j7DDWbgJgLfGq7gxwtK5IKRZnD6PIl3OptcGip Z5RN1DMBcCn563+Xc8Zb7c22DtJxwYSa6nExG5JbTeEITFJMvtZ2TMwOzIiZjyZDognMiD diR7nVbYoBi2r+9tYJnWgLOoovM27cpxRV2wdfWOyKJgmVqLXHsZA9wgSeOB+Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743613030; a=rsa-sha256; cv=none; b=dGZ1og2RSOAo4tK0v6U03NJpiYV3Fpsb2URPGdR0A9M8xJo5t9uPvFKLosi4FisocNhEm6 Qh4QLAEI8R2QUKm5G6jdu+pXeDGgheGpSWszJ2M6z91I47hbadK3My7j3gTES5vugZJrBD 3j7ayiea1UNaNNSd1K4fnOu6PnvH3wbRjOL6JU+kbukqgs3jhxz488AMAxQcVQOOHkleOr rQxmx6HqVcwowpcJ5qdoAIkKW5lwodBVWrAgEJC8kznqylISBJqjGNMijDnjD08rY5aiWk 8QcZWFE5FW1mkPMO640zRgVJxKThhaxehm0PMvpvYee37tHNkr9jY2bbnMnghQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743613030; 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=BmdhR1iJcQ2LlYWyWAgO/nxRGZhmK8SAWlfvpeJjTdk=; b=jiYLSUtpi/K5ZPnSI+fqx8C8Lip2oP33YpUEbf8AVZO6fXv7LsswWSpnZ6rrAtnrdTAVzn RHDfq7lIt67Hy7gsCSvNpfbHXhZXYmuKu6PdquRP0z9jSkxo0KVxx0WVmzAgtA3bR/LJPY OzubaVtE5gf1XVw7bjql1/+UL47M4NBjQyAx4VlOY/YD+UHa/YsXecJZOR6VurEzhb6msA knpAD4YxjMKyKnDm77oZQ7OoNhwTdBiPAx+cHZmZ6agGbof3rgtxfHToIj2tjgqxI+R0m2 4SHNpKrxjoRhsEHczQoMhm9VGAsfUC9GXdjVDe6H4hRFwFoWjPtkDCfXKgV8Jg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSWHp47hCz8TC; Wed, 02 Apr 2025 16:57:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532GvAtY049215; Wed, 2 Apr 2025 16:57:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532GvAcA049212; Wed, 2 Apr 2025 16:57:10 GMT (envelope-from git) Date: Wed, 2 Apr 2025 16:57:10 GMT Message-Id: <202504021657.532GvAcA049212@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mitchell Horne Subject: git: cd92dd23241e - main - eqos: Add StarFive JH7110 variant List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: cd92dd23241e22dce06ebeb0c8e98eec5afcc896 Auto-Submitted: auto-generated The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=cd92dd23241e22dce06ebeb0c8e98eec5afcc896 commit cd92dd23241e22dce06ebeb0c8e98eec5afcc896 Author: Jari Sihvola AuthorDate: 2025-04-02 16:30:23 +0000 Commit: Mitchell Horne CommitDate: 2025-04-02 16:56:38 +0000 eqos: Add StarFive JH7110 variant Found on the VisionFive v2 SBC, and similar. Reviewed by: mhorne Tested by: mhorne Discussed with: sos Differential Revision: https://reviews.freebsd.org/D45600 --- sys/dev/eqos/if_eqos.c | 33 ++++-- sys/dev/eqos/if_eqos_reg.h | 1 + sys/dev/eqos/if_eqos_starfive.c | 219 ++++++++++++++++++++++++++++++++++++++ sys/dev/eqos/if_eqos_var.h | 7 ++ sys/riscv/conf/std.starfive | 2 + sys/riscv/starfive/files.starfive | 4 + 6 files changed, 260 insertions(+), 6 deletions(-) diff --git a/sys/dev/eqos/if_eqos.c b/sys/dev/eqos/if_eqos.c index 6e2eea2e6c37..de3d8da7c3bf 100644 --- a/sys/dev/eqos/if_eqos.c +++ b/sys/dev/eqos/if_eqos.c @@ -456,7 +456,7 @@ eqos_reset(struct eqos_softc *sc) int retry; WR4(sc, GMAC_DMA_MODE, GMAC_DMA_MODE_SWR); - for (retry = 2000; retry > 0; retry--) { + for (retry = 5000; retry > 0; retry--) { DELAY(1000); val = RD4(sc, GMAC_DMA_MODE); if (!(val & GMAC_DMA_MODE_SWR)) @@ -491,7 +491,7 @@ eqos_init(void *if_softc) struct eqos_softc *sc = if_softc; if_t ifp = sc->ifp; struct mii_data *mii = device_get_softc(sc->miibus); - uint32_t val; + uint32_t val, mtl_tx_val, mtl_rx_val; if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) return; @@ -508,13 +508,18 @@ eqos_init(void *if_softc) val = RD4(sc, GMAC_DMA_CHAN0_CONTROL); val &= ~GMAC_DMA_CHAN0_CONTROL_DSL_MASK; val |= ((DESC_ALIGN - 16) / 8) << GMAC_DMA_CHAN0_CONTROL_DSL_SHIFT; - val |= GMAC_DMA_CHAN0_CONTROL_PBLX8; + if (sc->pblx8) + val |= GMAC_DMA_CHAN0_CONTROL_PBLX8; WR4(sc, GMAC_DMA_CHAN0_CONTROL, val); val = RD4(sc, GMAC_DMA_CHAN0_TX_CONTROL); + if (sc->txpbl > 0) + val |= (sc->txpbl << GMAC_DMA_CHAN0_TXRX_PBL_SHIFT); val |= GMAC_DMA_CHAN0_TX_CONTROL_OSP; val |= GMAC_DMA_CHAN0_TX_CONTROL_START; WR4(sc, GMAC_DMA_CHAN0_TX_CONTROL, val); val = RD4(sc, GMAC_DMA_CHAN0_RX_CONTROL); + if (sc->rxpbl > 0) + val |= (sc->rxpbl << GMAC_DMA_CHAN0_TXRX_PBL_SHIFT); val &= ~GMAC_DMA_CHAN0_RX_CONTROL_RBSZ_MASK; val |= (MCLBYTES << GMAC_DMA_CHAN0_RX_CONTROL_RBSZ_SHIFT); val |= GMAC_DMA_CHAN0_RX_CONTROL_START; @@ -527,11 +532,19 @@ eqos_init(void *if_softc) GMAC_MMC_CONTROL_CNTPRSTLVL); /* Configure operation modes */ + if (sc->thresh_dma_mode) { + mtl_tx_val = sc->ttc; + mtl_rx_val = sc->rtc; + } else { + mtl_tx_val = GMAC_MTL_TXQ0_OPERATION_MODE_TSF; + mtl_rx_val = GMAC_MTL_RXQ0_OPERATION_MODE_RSF; + } + WR4(sc, GMAC_MTL_TXQ0_OPERATION_MODE, - GMAC_MTL_TXQ0_OPERATION_MODE_TSF | + mtl_tx_val | GMAC_MTL_TXQ0_OPERATION_MODE_TXQEN_EN); WR4(sc, GMAC_MTL_RXQ0_OPERATION_MODE, - GMAC_MTL_RXQ0_OPERATION_MODE_RSF | + mtl_rx_val | GMAC_MTL_RXQ0_OPERATION_MODE_FEP | GMAC_MTL_RXQ0_OPERATION_MODE_FUP); @@ -1112,6 +1125,14 @@ eqos_attach(device_t dev) int error; int n; + /* default values */ + sc->thresh_dma_mode = false; + sc->pblx8 = true; + sc->txpbl = 0; + sc->rxpbl = 0; + sc->ttc = 0x10; + sc->rtc = 0; + /* setup resources */ if (bus_alloc_resources(dev, eqos_spec, sc->res)) { device_printf(dev, "Could not allocate resources\n"); @@ -1128,7 +1149,7 @@ eqos_attach(device_t dev) GMAC_MAC_VERSION_USERVER_SHIFT; snpsver = ver & GMAC_MAC_VERSION_SNPSVER_MASK; - if (snpsver != 0x51) { + if (snpsver != 0x51 && snpsver != 0x52) { device_printf(dev, "EQOS version 0x%02x not supported\n", snpsver); return (ENXIO); diff --git a/sys/dev/eqos/if_eqos_reg.h b/sys/dev/eqos/if_eqos_reg.h index f9e7f9368cf2..fe7440bd19c7 100644 --- a/sys/dev/eqos/if_eqos_reg.h +++ b/sys/dev/eqos/if_eqos_reg.h @@ -241,6 +241,7 @@ #define GMAC_DMA_CHAN0_RX_END_ADDR 0x1128 #define GMAC_DMA_CHAN0_TX_RING_LEN 0x112C #define GMAC_DMA_CHAN0_RX_RING_LEN 0x1130 +#define GMAC_DMA_CHAN0_TXRX_PBL_SHIFT 16 #define GMAC_DMA_CHAN0_INTR_ENABLE 0x1134 #define GMAC_DMA_CHAN0_INTR_ENABLE_NIE (1U << 15) #define GMAC_DMA_CHAN0_INTR_ENABLE_AIE (1U << 14) diff --git a/sys/dev/eqos/if_eqos_starfive.c b/sys/dev/eqos/if_eqos_starfive.c new file mode 100644 index 000000000000..62f8b3f38983 --- /dev/null +++ b/sys/dev/eqos/if_eqos_starfive.c @@ -0,0 +1,219 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2024 Jari Sihvola + */ + +#include "opt_platform.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include "if_eqos_if.h" +#include "gpio_if.h" + +#include + +/* JH7110's board specific code for eqos Ethernet controller driver */ + +#define JH7110_CSR_FREQ 198000000 + +#define WR4(sc, o, v) bus_write_4(sc->base.res[EQOS_RES_MEM], (o), (v)) + +static const struct ofw_compat_data compat_data[] = { + {"starfive,jh7110-dwmac", 1}, + { NULL, 0} +}; + +struct if_eqos_starfive_softc { + struct eqos_softc base; + clk_t gtx; + clk_t tx; + clk_t stmmaceth; + clk_t pclk; +}; + +static int +if_eqos_starfive_set_speed(device_t dev, int speed) +{ + struct if_eqos_starfive_softc *sc = device_get_softc(dev); + uint64_t freq; + int err; + + switch (speed) { + case IFM_1000_T: + case IFM_1000_SX: + freq = 125000000; + break; + case IFM_100_TX: + freq = 25000000; + break; + case IFM_10_T: + freq = 2500000; + break; + default: + device_printf(dev, "unsupported media %u\n", speed); + return (-EINVAL); + } + + clk_set_freq(sc->gtx, freq, 0); + err = clk_enable(sc->gtx); + if (err != 0) { + device_printf(dev, "Could not enable clock %s\n", + clk_get_name(sc->gtx)); + } + + return (0); +} + + + +static int +if_eqos_starfive_clk_init(device_t dev) +{ + struct if_eqos_starfive_softc *sc = device_get_softc(dev); + int err; + + if (clk_get_by_ofw_name(dev, 0, "gtx", &sc->gtx) != 0) { + device_printf(sc->base.dev, "could not get gtx clock\n"); + return (ENXIO); + } + + if (clk_get_by_ofw_name(dev, 0, "tx", &sc->tx) == 0) { + err = clk_enable(sc->tx); + if (err != 0) { + device_printf(dev, "Could not enable clock %s\n", + clk_get_name(sc->tx)); + } + } + if (clk_get_by_ofw_name(dev, 0, "stmmaceth", &sc->stmmaceth) == 0) { + err = clk_enable(sc->stmmaceth); + if (err != 0) { + device_printf(dev, "Could not enable clock %s\n", + clk_get_name(sc->stmmaceth)); + } + } + if (clk_get_by_ofw_name(dev, 0, "pclk", &sc->pclk) == 0) { + err = clk_enable(sc->pclk); + if (err != 0) { + device_printf(dev, "Could not enable clock %s\n", + clk_get_name(sc->pclk)); + } + } + + return (0); +} + +static int +if_eqos_starfive_init(device_t dev) +{ + struct if_eqos_starfive_softc *sc = device_get_softc(dev); + hwreset_t rst_ahb, rst_stmmaceth; + phandle_t node; + + node = ofw_bus_get_node(dev); + + sc->base.ttc = 0x10; + sc->base.rtc = 0; + + if (OF_hasprop(node, "snps,force_thresh_dma_mode")) + sc->base.thresh_dma_mode = true; + + if (OF_hasprop(node, "snps,no-pbl-x8")) + sc->base.pblx8 = false; + + if (OF_hasprop(node, "snps,txpbl")) { + OF_getencprop(node, "snps,txpbl", &sc->base.txpbl, + sizeof(sc->base.txpbl)); + } + if (OF_hasprop(node, "snps,rxpbl")) { + OF_getencprop(node, "snps,rxpbl", &sc->base.rxpbl, + sizeof(sc->base.rxpbl)); + } + + if (hwreset_get_by_ofw_name(dev, 0, "ahb", &rst_ahb)) { + device_printf(dev, "Cannot get ahb reset\n"); + return (ENXIO); + } + if (hwreset_assert(rst_ahb) != 0) { + device_printf(dev, "Cannot assert ahb reset\n"); + return (ENXIO); + } + + if (hwreset_get_by_ofw_name(dev, 0, "stmmaceth", &rst_stmmaceth)) { + device_printf(dev, "Cannot get stmmaceth reset\n"); + return (ENXIO); + } + if (hwreset_assert(rst_stmmaceth) != 0) { + device_printf(dev, "Cannot assert stmmaceth reset\n"); + return (ENXIO); + } + + sc->base.csr_clock = JH7110_CSR_FREQ; + sc->base.csr_clock_range = GMAC_MAC_MDIO_ADDRESS_CR_150_250; + + if (if_eqos_starfive_clk_init(dev) != 0) { + device_printf(dev, "Clock initialization failed\n"); + return (ENXIO); + } + if (hwreset_deassert(rst_ahb) != 0) { + device_printf(dev, "Cannot deassert rst_ahb\n"); + return (ENXIO); + } + if (hwreset_deassert(rst_stmmaceth) != 0) { + device_printf(dev, "Cannot deassert rst_stmmaceth\n"); + return (ENXIO); + } + + return (0); +} + +static int +eqos_starfive_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "DesignWare EQOS Gigabit Ethernet for JH7110"); + + return (BUS_PROBE_DEFAULT); +} + + +static device_method_t eqos_starfive_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, eqos_starfive_probe), + + /* EQOS interface */ + DEVMETHOD(if_eqos_init, if_eqos_starfive_init), + DEVMETHOD(if_eqos_set_speed, if_eqos_starfive_set_speed), + + DEVMETHOD_END +}; + +DEFINE_CLASS_1(eqos, eqos_starfive_driver, eqos_starfive_methods, + sizeof(struct if_eqos_starfive_softc), eqos_driver); +DRIVER_MODULE(eqos_starfive, simplebus, eqos_starfive_driver, 0, 0); diff --git a/sys/dev/eqos/if_eqos_var.h b/sys/dev/eqos/if_eqos_var.h index c21a703747ec..892b15ba589e 100644 --- a/sys/dev/eqos/if_eqos_var.h +++ b/sys/dev/eqos/if_eqos_var.h @@ -85,6 +85,13 @@ struct eqos_softc { bool link_up; int tx_watchdog; + bool thresh_dma_mode; + bool pblx8; + uint32_t txpbl; + uint32_t rxpbl; + uint32_t ttc; + uint32_t rtc; + struct ifnet *ifp; device_t miibus; struct mtx lock; diff --git a/sys/riscv/conf/std.starfive b/sys/riscv/conf/std.starfive index e4e3e7c46f3e..9bdb1af9e79c 100644 --- a/sys/riscv/conf/std.starfive +++ b/sys/riscv/conf/std.starfive @@ -4,6 +4,8 @@ device uart_snps # DesignWare Synopsis UART driver +device eqos + # MMC/SD/SDIO Card slot support device dwmmc device dwmmc_starfive diff --git a/sys/riscv/starfive/files.starfive b/sys/riscv/starfive/files.starfive index 10c56448970d..57d4618d00f9 100644 --- a/sys/riscv/starfive/files.starfive +++ b/sys/riscv/starfive/files.starfive @@ -5,4 +5,8 @@ dev/clk/starfive/jh7110_clk_sys.c standard dev/clk/starfive/jh7110_clk_stg.c standard dev/mmc/host/dwmmc_starfive.c optional dwmmc_starfive fdt +dev/eqos/if_eqos.c optional eqos +dev/eqos/if_eqos_if.m optional eqos +dev/eqos/if_eqos_starfive.c optional eqos + riscv/starfive/starfive_syscon.c standard From nobody Wed Apr 2 18:43:28 2025 X-Original-To: dev-commits-src-main@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 4ZSYfT19C4z5rQp5; Wed, 02 Apr 2025 18:43: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSYfS74Ynz3CM9; Wed, 02 Apr 2025 18:43:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619409; 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=KZgwttJBtVJP5EXzZznnIh3m3K5qOxtP+9YMwX5UJoc=; b=e4vy02OjXWscGcuf4T+XYTF2u8Sp2sxJ18vULN8eWEskSg1rIY3k50AtV2RE99Iakn4+eG Y3itxNyD/ZgCxDPi46S1eAt2VihPwmUQlC60yMnq8yWYmEFIqWN4+b3rFCy2sKCxrq5+51 Ir3V5c7nOuAXHYI3C93GNX8byOEKekF1H6OrnJ2h5sfRV/1SLVM288mbK7Geu9IYUra9dq VdOnFiGtffzreUvZa1gOUD9vILc8wtM/i6JGWrP7AjmhnovtaVdhQYJDMazlEMYRSR29Y/ 6uOZ0aCO8M4+FvKigizL9h7eSBKghgsl8zQRFRBom7wR88Gmnc8WTT8awuI+ng== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743619409; a=rsa-sha256; cv=none; b=ORMsrcoL2RJdayg1pcjLh67VlnSYFiVKHyUvAGc0ZJc4ERXnWpYyNBm4ChUQiWzgPPOMqL EqHCsio1jIdcFptTS41wFxiU5oAxuFIEvZSxw+iLr1Oi92tofIwynFRK/9OtINfBpZKc4D P9IO3QSbMBfpv4eGF2uwqm7iFmmLdGEeSPD/8KLS+kShryHpK4OFmXedfSVTFofr9xghtl wwSGQkC9Yrhgw1A3kXJVf2JZbTr8tRR/tRLyjWzQ7tz7GbtG91AWqJ/eTD+B4IItZNZdq0 +AIDKDk0bxgw8ElVgMyVF9iQrmA+fRnKS9X4FQ4kKFclxnaE0X4HQqvzF3TBwA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619409; 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=KZgwttJBtVJP5EXzZznnIh3m3K5qOxtP+9YMwX5UJoc=; b=n96VzthoPRAJEpK99AUITzlAlt244EVaj3K0D661khaDSSJF/Sfh759G/dHbsDUq5PL36F sj/qxZ/HGgja8OQAPzAuTjBVxNXN7sAu0ohAalL42yS64tfH/lAHM/HkwksHlQvvMG7NrZ kU9WuE/H3VPPLDs8OpHDeAq6FtpW6uz1VyMoUekFIB58aprdS4KjhCk7vD/3xLIfdLxXo4 /PSIxtrioZkXdDl8Bteb2aUSyfrr2bCLyxThWO7oDG4IIJBLC3CqKk9+0FMBYNE6tbl1ZU lGywNooYxohPcmZmkZoeaECveRtmXzsiRXVLFBl8NSX8nqrfUGcrYuEoN/e7bA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSYfS6ZdMzCW9; Wed, 02 Apr 2025 18:43:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532IhSK6053787; Wed, 2 Apr 2025 18:43:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532IhSGn053784; Wed, 2 Apr 2025 18:43:28 GMT (envelope-from git) Date: Wed, 2 Apr 2025 18:43:28 GMT Message-Id: <202504021843.532IhSGn053784@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: e94d3f65b901 - main - libiscsiutil: Fix header to work with C++ List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: e94d3f65b90107204d477a7fab059d8cf3b1b0c3 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=e94d3f65b90107204d477a7fab059d8cf3b1b0c3 commit e94d3f65b90107204d477a7fab059d8cf3b1b0c3 Author: John Baldwin AuthorDate: 2025-04-02 18:40:32 +0000 Commit: John Baldwin CommitDate: 2025-04-02 18:40:32 +0000 libiscsiutil: Fix header to work with C++ Reviewed by: asomers Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D49137 --- lib/libiscsiutil/libiscsiutil.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/libiscsiutil/libiscsiutil.h b/lib/libiscsiutil/libiscsiutil.h index c091c1d9753a..b50afa1c9409 100644 --- a/lib/libiscsiutil/libiscsiutil.h +++ b/lib/libiscsiutil/libiscsiutil.h @@ -95,6 +95,8 @@ struct rchap { size_t rchap_challenge_len; }; +__BEGIN_DECLS + struct chap *chap_new(void); char *chap_get_id(const struct chap *chap); char *chap_get_challenge(const struct chap *chap); @@ -174,4 +176,6 @@ void log_debugx(const char *, ...) __printflike(1, 2); char *checked_strdup(const char *); +__END_DECLS + #endif /* !__LIBISCSIUTIL_H__ */ From nobody Wed Apr 2 18:43:29 2025 X-Original-To: dev-commits-src-main@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 4ZSYfV2KsSz5rQZJ; Wed, 02 Apr 2025 18:43: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSYfV0s8sz3CB9; Wed, 02 Apr 2025 18:43:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619410; 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=xpB6nCOUTGHg2IgCJP0yaVOGeSo1ZCFGRA4MkHde044=; b=Vp7DGL1hkqlIk5tZUm1SYnkk8G9jtSMvZMugkXjR4JELNbh03vKh/o2F7H2zAbFSrHG1Di R2KHHoKnDYzjwMellvKC6aqnYAiTjkM2M8FFSDGwG65A3Bt5W/rPvfO/i0k23wh3Yu0CoN OQqS1zqpb3GxZfgMcm9GZPptuW/V+UN80ztOk22crmZEL+me2g2w0tGTSez96pTAEWvQZM l25iU/rkd2Bp1O3uA7rU5RubINmP7KTGKFJzcYgtcyCnpEO+n6/KSqoBd0CLJWHBUlmDQg YSkcZyWzsEgJsMSS0ZvFs8rotGMMxD2n3hGG1i7RHBAZhOv1PDilFhWRK17ETw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743619410; a=rsa-sha256; cv=none; b=XYoNY1lcRx/l9PdLbPqakZSHnASb/g006DJG+PneZiTwSzUqticFRBVt4JgjjBZNSF1o0/ LLbyx5exHz9aNu10jyvvR3NwRPzB43J2m8UrbvFpp6C8PVgvxPtkOqcq0SuPA7zp2mj85L Vrfjz4+cP5Unm8X3oASjcnczJf6rVC8rt43LBUjjNk1RHfx3yClq7bwaKuL+49zWVeeRZC xi91yFEampQMz17DueJJdASHSryYbKp2RMEAZVKZcrgASOwPggViHidW9iMe44yFQaX0lY XUmaBYMWgsrk/+lCleQ1XW0i2IpLAiRkEupWcOcDio2aEIlDQQ6qmG5nwFZ4hw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619410; 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=xpB6nCOUTGHg2IgCJP0yaVOGeSo1ZCFGRA4MkHde044=; b=eymuUJ2nSZxICpuZKJbi3G6zvj9avqMRKHL0HijD5WK+WAnaaqC6jBGFwh4CF4aZUBgEP0 gR7n1CcIOWChEQw2IzDfcGwQPJ3fb1/AWDmcXs6RdpJllAzrXlkGNXJMP6GHZs8swZkP/U KJipyzCNUNwyYXI+jnfbR2/jO0YUzQ4wylMbPuIHxuS171yp0pTfJAl3epZGcG2x2+YtZX imIlF/+SOI1TzQJVuDaAmIlw2nVbFm77E/PaP5fzbi4u9z8oYwQjYCZF+MvICs6otToI3x cpQxsGpy/6UDCwELBm7BCq6FelwbWfzW/p5SeG2KjtMi9i7sscC+TryjNqFscQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSYfV0QCHzCgy; Wed, 02 Apr 2025 18:43:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532IhTTn053820; Wed, 2 Apr 2025 18:43:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532IhTxj053817; Wed, 2 Apr 2025 18:43:29 GMT (envelope-from git) Date: Wed, 2 Apr 2025 18:43:29 GMT Message-Id: <202504021843.532IhTxj053817@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 480009522604 - main - ctl_ioctl.h: Do not use enums for bit fields of flags List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 48000952260469477346c8a89e927af69ebc00e2 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=48000952260469477346c8a89e927af69ebc00e2 commit 48000952260469477346c8a89e927af69ebc00e2 Author: John Baldwin AuthorDate: 2025-04-02 18:40:54 +0000 Commit: John Baldwin CommitDate: 2025-04-02 18:41:22 +0000 ctl_ioctl.h: Do not use enums for bit fields of flags C++ does not permit treating enum values as individual bits used with the bitwise operators. For types that are a mask of flags, switch the typedef to an unsigned int and use preprocessor macros for flag constants. Reviewed by: imp, asomers Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D49138 --- sys/cam/ctl/ctl_ioctl.h | 104 ++++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/sys/cam/ctl/ctl_ioctl.h b/sys/cam/ctl/ctl_ioctl.h index c7070b63eb09..ae48951f8acd 100644 --- a/sys/cam/ctl/ctl_ioctl.h +++ b/sys/cam/ctl/ctl_ioctl.h @@ -112,10 +112,10 @@ typedef enum { CTL_SS_ERROR } ctl_stats_status; -typedef enum { - CTL_STATS_FLAG_NONE = 0x00, - CTL_STATS_FLAG_TIME_VALID = 0x01 -} ctl_stats_flags; +typedef u_int ctl_stats_flags; + +#define CTL_STATS_FLAG_NONE 0x00 +#define CTL_STATS_FLAG_TIME_VALID 0x01 struct ctl_io_stats { uint32_t item; @@ -151,16 +151,16 @@ struct ctl_get_io_stats { * CONTINUOUS: This error will stay around until explicitly cleared. * DESCRIPTOR: Use descriptor sense instead of fixed sense. */ -typedef enum { - CTL_LUN_INJ_NONE = 0x000, - CTL_LUN_INJ_ABORTED = 0x001, - CTL_LUN_INJ_MEDIUM_ERR = 0x002, - CTL_LUN_INJ_UA = 0x003, - CTL_LUN_INJ_CUSTOM = 0x004, - CTL_LUN_INJ_TYPE = 0x0ff, - CTL_LUN_INJ_CONTINUOUS = 0x100, - CTL_LUN_INJ_DESCRIPTOR = 0x200 -} ctl_lun_error; +typedef u_int ctl_lun_error; + +#define CTL_LUN_INJ_NONE 0x000 +#define CTL_LUN_INJ_ABORTED 0x001 +#define CTL_LUN_INJ_MEDIUM_ERR 0x002 +#define CTL_LUN_INJ_UA 0x003 +#define CTL_LUN_INJ_CUSTOM 0x004 +#define CTL_LUN_INJ_TYPE 0x0ff +#define CTL_LUN_INJ_CONTINUOUS 0x100 +#define CTL_LUN_INJ_DESCRIPTOR 0x200 /* * Flags to specify what type of command the given error pattern will @@ -180,18 +180,18 @@ typedef enum { * RANGE: For read/write commands, act when the LBA is in the * specified range. */ -typedef enum { - CTL_LUN_PAT_NONE = 0x000, - CTL_LUN_PAT_READ = 0x001, - CTL_LUN_PAT_WRITE = 0x002, - CTL_LUN_PAT_READWRITE = CTL_LUN_PAT_READ | CTL_LUN_PAT_WRITE, - CTL_LUN_PAT_READCAP = 0x004, - CTL_LUN_PAT_TUR = 0x008, - CTL_LUN_PAT_ANY = 0x0ff, - CTL_LUN_PAT_MASK = 0x0ff, - CTL_LUN_PAT_CMD = 0x100, - CTL_LUN_PAT_RANGE = 0x200 -} ctl_lun_error_pattern; +typedef u_int ctl_lun_error_pattern; + +#define CTL_LUN_PAT_NONE 0x000 +#define CTL_LUN_PAT_READ 0x001 +#define CTL_LUN_PAT_WRITE 0x002 +#define CTL_LUN_PAT_READWRITE CTL_LUN_PAT_READ | CTL_LUN_PAT_WRITE +#define CTL_LUN_PAT_READCAP 0x004 +#define CTL_LUN_PAT_TUR 0x008 +#define CTL_LUN_PAT_ANY 0x0ff +#define CTL_LUN_PAT_MASK 0x0ff +#define CTL_LUN_PAT_CMD 0x100 +#define CTL_LUN_PAT_RANGE 0x200 /* * This structure allows the user to specify a particular CDB pattern to @@ -231,10 +231,10 @@ struct ctl_error_desc { STAILQ_ENTRY(ctl_error_desc) links; /* Kernel use only */ }; -typedef enum { - CTL_OOA_FLAG_NONE = 0x00, - CTL_OOA_FLAG_ALL_LUNS = 0x01 -} ctl_ooa_flags; +typedef u_int ctl_ooa_flags; + +#define CTL_OOA_FLAG_NONE 0x00 +#define CTL_OOA_FLAG_ALL_LUNS 0x01 typedef enum { CTL_OOA_OK, @@ -242,16 +242,16 @@ typedef enum { CTL_OOA_ERROR } ctl_get_ooa_status; -typedef enum { - CTL_OOACMD_FLAG_NONE = 0x00, - CTL_OOACMD_FLAG_DMA = 0x01, - CTL_OOACMD_FLAG_BLOCKED = 0x02, - CTL_OOACMD_FLAG_ABORT = 0x04, - CTL_OOACMD_FLAG_RTR = 0x08, - CTL_OOACMD_FLAG_DMA_QUEUED = 0x10, - CTL_OOACMD_FLAG_STATUS_QUEUED = 0x20, - CTL_OOACMD_FLAG_STATUS_SENT = 0x40 -} ctl_ooa_cmd_flags; +typedef u_int ctl_ooa_cmd_flags; + +#define CTL_OOACMD_FLAG_NONE 0x00 +#define CTL_OOACMD_FLAG_DMA 0x01 +#define CTL_OOACMD_FLAG_BLOCKED 0x02 +#define CTL_OOACMD_FLAG_ABORT 0x04 +#define CTL_OOACMD_FLAG_RTR 0x08 +#define CTL_OOACMD_FLAG_DMA_QUEUED 0x10 +#define CTL_OOACMD_FLAG_STATUS_QUEUED 0x20 +#define CTL_OOACMD_FLAG_STATUS_SENT 0x40 struct ctl_ooa_entry { ctl_ooa_cmd_flags cmd_flags; @@ -322,18 +322,18 @@ typedef enum { * * The OFFLINE flag tells us that this LUN can not access backing store. */ -typedef enum { - CTL_LUN_FLAG_ID_REQ = 0x01, - CTL_LUN_FLAG_STOPPED = 0x02, - CTL_LUN_FLAG_NO_MEDIA = 0x04, - CTL_LUN_FLAG_PRIMARY = 0x08, - CTL_LUN_FLAG_SERIAL_NUM = 0x10, - CTL_LUN_FLAG_DEVID = 0x20, - CTL_LUN_FLAG_DEV_TYPE = 0x40, - CTL_LUN_FLAG_UNMAP = 0x80, - CTL_LUN_FLAG_EJECTED = 0x100, - CTL_LUN_FLAG_READONLY = 0x200 -} ctl_backend_lun_flags; +typedef u_int ctl_backend_lun_flags; + +#define CTL_LUN_FLAG_ID_REQ 0x01 +#define CTL_LUN_FLAG_STOPPED 0x02 +#define CTL_LUN_FLAG_NO_MEDIA 0x04 +#define CTL_LUN_FLAG_PRIMARY 0x08 +#define CTL_LUN_FLAG_SERIAL_NUM 0x10 +#define CTL_LUN_FLAG_DEVID 0x20 +#define CTL_LUN_FLAG_DEV_TYPE 0x40 +#define CTL_LUN_FLAG_UNMAP 0x80 +#define CTL_LUN_FLAG_EJECTED 0x100 +#define CTL_LUN_FLAG_READONLY 0x200 /* * LUN creation parameters: From nobody Wed Apr 2 18:43:31 2025 X-Original-To: dev-commits-src-main@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 4ZSYfW4MPQz5rR5w; Wed, 02 Apr 2025 18:43: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSYfW1qJDz3CBD; Wed, 02 Apr 2025 18:43:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619411; 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=4crWn84xClsSW7BHm+X0MBLRadE2auPQzD9k/he2+DE=; b=RwPOSLbP1ctCrzo4c61eu4OQ48T32eT3TvC4Kqlg2ArUvwGfaMVX0r2JFdwTzqHZFxjcIT O8zriQFNKiCvUF9tUxB8DO6EcHCZK2V8CksHUdt9i2qauOVBlI5Ts2OdrTqCYtJjngB0lq UyIbEtuNCPhDllR6Ti7mEq6LQunTOVCl+YPTPptLd6OXiGZwsFhwDrVHh1wOo9RC/6VNnr QvoWcNkWe8OpCwCngw94aRIde74ciqOW0h8KZjcoQEfNoqst94V0xgSnMgr6mmLCtqRd+z 5xPdPpzDoHkEioqIHh1yNgLDfAEE4/TGT+rMdKhEIW8nRys3QOXmufSkWb5kmg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743619411; a=rsa-sha256; cv=none; b=h7JGKYYzS4ZFB8/7KcVLp8cBt/VUe4PnWLkJ1yVopQOMoMX5FeBc5AD+QpA8ZDpBEEAJ3X OEsHJupdyraeAQMaRje+uVY+tZMcRVcPb801H/bLHyvIZjk/QdoRfrgDSSlkEdZV+s9qT2 rj/X85Rr+JSufbA79SI0otTI4RTek60RwNKytGDpwPpwVFmMCk6rDEwUSQtClviKzHOP43 O1h4y+NRAtPb9QHBnSTCNd1BDWikEFh64noSApf78qaCQ0B4iHCqKJH+O8nUQ7SG1UGhtN hnoRoHYMpHoc6yevXp3KaFir186KnPIjDvVxPC/dxq4OJi/LVZxjZXn/fN8fCQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619411; 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=4crWn84xClsSW7BHm+X0MBLRadE2auPQzD9k/he2+DE=; b=pw+ezSf6p+E0AZ/PZK29y74X/dWRyhS0DJT4TdjVXsEHDYu1I4dTyN04yaANl0vwpUOkMi Yx0V0yjg+a9SV7YLxn5maQVf7/1fO+NgB2vPgG8wTiIGxpf/Zu9jTUAPTtWOSy+rdErBfP nDu+ghFo08Iq+T9Qsop11aeMl8/5GNIGDklZLUvcKxr70b1cdi1niPzevKQMcN4iI1uQ60 MtMM/X94244Tg+HYSffvuUnNIwA8D2gaqwGm6kAe67oQmxw2nEysHRxc2TdU1FHmN68/T6 gn5QvwkETmqdjM22prIgfTx/u5+ASWG9XZOAHZljrSE95mPKh5uarbV3OObvjA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSYfW1JPgzCGK; Wed, 02 Apr 2025 18:43:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532IhVX1053853; Wed, 2 Apr 2025 18:43:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532IhVXE053850; Wed, 2 Apr 2025 18:43:31 GMT (envelope-from git) Date: Wed, 2 Apr 2025 18:43:31 GMT Message-Id: <202504021843.532IhVXE053850@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 839d0755fea8 - main - ctld: Convert to C++ List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 839d0755fea8ef761698b50fa5f293546ae832a8 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=839d0755fea8ef761698b50fa5f293546ae832a8 commit 839d0755fea8ef761698b50fa5f293546ae832a8 Author: John Baldwin AuthorDate: 2025-04-02 18:41:35 +0000 Commit: John Baldwin CommitDate: 2025-04-02 18:41:35 +0000 ctld: Convert to C++ This is the minimal set of changes need to compile as C++ so git can handle the rename correctly. Reviewed by: asomers Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D49139 --- usr.sbin/ctld/Makefile | 6 ++--- usr.sbin/ctld/{conf.c => conf.cc} | 0 usr.sbin/ctld/conf.h | 4 ++++ usr.sbin/ctld/{ctld.c => ctld.cc} | 35 ++++++++++++++++------------- usr.sbin/ctld/{discovery.c => discovery.cc} | 0 usr.sbin/ctld/{isns.c => isns.cc} | 6 ++--- usr.sbin/ctld/{kernel.c => kernel.cc} | 12 +++++----- usr.sbin/ctld/{login.c => login.cc} | 8 +++---- usr.sbin/ctld/{uclparse.c => uclparse.cc} | 0 9 files changed, 39 insertions(+), 32 deletions(-) diff --git a/usr.sbin/ctld/Makefile b/usr.sbin/ctld/Makefile index 787a608c37be..f96f3152e061 100644 --- a/usr.sbin/ctld/Makefile +++ b/usr.sbin/ctld/Makefile @@ -4,9 +4,9 @@ CFLAGS+=-I${SRCTOP}/contrib/libucl/include .PATH: ${SRCTOP}/contrib/libucl/include PACKAGE= iscsi -PROG= ctld -SRCS= ctld.c conf.c discovery.c isns.c kernel.c -SRCS+= login.c parse.y token.l y.tab.h uclparse.c +PROG_CXX= ctld +SRCS= ctld.cc conf.cc discovery.cc isns.cc kernel.cc +SRCS+= login.cc parse.y token.l y.tab.h uclparse.cc CFLAGS+= -I${.CURDIR} CFLAGS+= -I${SRCTOP}/sys CFLAGS+= -I${SRCTOP}/sys/cam/ctl diff --git a/usr.sbin/ctld/conf.c b/usr.sbin/ctld/conf.cc similarity index 100% rename from usr.sbin/ctld/conf.c rename to usr.sbin/ctld/conf.cc diff --git a/usr.sbin/ctld/conf.h b/usr.sbin/ctld/conf.h index d8f036e67136..6e287ce70436 100644 --- a/usr.sbin/ctld/conf.h +++ b/usr.sbin/ctld/conf.h @@ -36,6 +36,8 @@ * ctld. */ +__BEGIN_DECLS + bool auth_group_start(const char *name); void auth_group_finish(void); bool auth_group_add_chap(const char *user, const char *secret); @@ -97,4 +99,6 @@ bool lun_set_size(uint64_t value); bool parse_conf(const char *path); +__END_DECLS + #endif /* !__CONF_H__ */ diff --git a/usr.sbin/ctld/ctld.c b/usr.sbin/ctld/ctld.cc similarity index 98% rename from usr.sbin/ctld/ctld.c rename to usr.sbin/ctld/ctld.cc index 21d833df5f83..f07ee7b34cd7 100644 --- a/usr.sbin/ctld/ctld.c +++ b/usr.sbin/ctld/ctld.cc @@ -77,6 +77,9 @@ static struct connection_ops conn_ops = { #ifdef ICL_KERNEL_PROXY .pdu_receive_proxy = pdu_receive_proxy, .pdu_send_proxy = pdu_send_proxy, +#else + .pdu_receive_proxy = nullptr, + .pdu_send_proxy = nullptr, #endif .fail = pdu_fail, }; @@ -95,7 +98,7 @@ conf_new(void) { struct conf *conf; - conf = calloc(1, sizeof(*conf)); + conf = reinterpret_cast(calloc(1, sizeof(*conf))); if (conf == NULL) log_err(1, "calloc"); TAILQ_INIT(&conf->conf_luns); @@ -145,7 +148,7 @@ auth_new(struct auth_group *ag) { struct auth *auth; - auth = calloc(1, sizeof(*auth)); + auth = reinterpret_cast(calloc(1, sizeof(*auth))); if (auth == NULL) log_err(1, "calloc"); auth->a_auth_group = ag; @@ -303,7 +306,7 @@ auth_name_new(struct auth_group *ag, const char *name) { struct auth_name *an; - an = calloc(1, sizeof(*an)); + an = reinterpret_cast(calloc(1, sizeof(*an))); if (an == NULL) log_err(1, "calloc"); an->an_auth_group = ag; @@ -361,7 +364,7 @@ auth_portal_new(struct auth_group *ag, const char *portal) char *net, *mask, *str, *tmp; int len, dm, m; - ap = calloc(1, sizeof(*ap)); + ap = reinterpret_cast(calloc(1, sizeof(*ap))); if (ap == NULL) log_err(1, "calloc"); ap->ap_auth_group = ag; @@ -494,7 +497,7 @@ auth_group_new(struct conf *conf, const char *name) } } - ag = calloc(1, sizeof(*ag)); + ag = reinterpret_cast(calloc(1, sizeof(*ag))); if (ag == NULL) log_err(1, "calloc"); if (name != NULL) @@ -547,7 +550,7 @@ portal_new(struct portal_group *pg) { struct portal *portal; - portal = calloc(1, sizeof(*portal)); + portal = reinterpret_cast(calloc(1, sizeof(*portal))); if (portal == NULL) log_err(1, "calloc"); TAILQ_INIT(&portal->p_targets); @@ -578,7 +581,7 @@ portal_group_new(struct conf *conf, const char *name) return (NULL); } - pg = calloc(1, sizeof(*pg)); + pg = reinterpret_cast(calloc(1, sizeof(*pg))); if (pg == NULL) log_err(1, "calloc"); pg->pg_name = checked_strdup(name); @@ -711,7 +714,7 @@ isns_new(struct conf *conf, const char *addr) { struct isns *isns; - isns = calloc(1, sizeof(*isns)); + isns = reinterpret_cast(calloc(1, sizeof(*isns))); if (isns == NULL) log_err(1, "calloc"); isns->i_conf = conf; @@ -973,7 +976,7 @@ pport_new(struct kports *kports, const char *name, uint32_t ctl_port) { struct pport *pp; - pp = calloc(1, sizeof(*pp)); + pp = reinterpret_cast(calloc(1, sizeof(*pp))); if (pp == NULL) log_err(1, "calloc"); pp->pp_kports = kports; @@ -1032,7 +1035,7 @@ port_new(struct conf *conf, struct target *target, struct portal_group *pg) free(name); return (NULL); } - port = calloc(1, sizeof(*port)); + port = reinterpret_cast(calloc(1, sizeof(*port))); if (port == NULL) log_err(1, "calloc"); port->p_conf = conf; @@ -1077,7 +1080,7 @@ port_new_ioctl(struct conf *conf, struct kports *kports, struct target *target, free(name); return (NULL); } - port = calloc(1, sizeof(*port)); + port = reinterpret_cast(calloc(1, sizeof(*port))); if (port == NULL) log_err(1, "calloc"); port->p_conf = conf; @@ -1106,7 +1109,7 @@ port_new_pp(struct conf *conf, struct target *target, struct pport *pp) free(name); return (NULL); } - port = calloc(1, sizeof(*port)); + port = reinterpret_cast(calloc(1, sizeof(*port))); if (port == NULL) log_err(1, "calloc"); port->p_conf = conf; @@ -1187,7 +1190,7 @@ target_new(struct conf *conf, const char *name) if (valid_iscsi_name(name, log_warnx) == false) { return (NULL); } - targ = calloc(1, sizeof(*targ)); + targ = reinterpret_cast(calloc(1, sizeof(*targ))); if (targ == NULL) log_err(1, "calloc"); targ->t_name = checked_strdup(name); @@ -1245,7 +1248,7 @@ lun_new(struct conf *conf, const char *name) return (NULL); } - lun = calloc(1, sizeof(*lun)); + lun = reinterpret_cast(calloc(1, sizeof(*lun))); if (lun == NULL) log_err(1, "calloc"); lun->l_conf = conf; @@ -1365,7 +1368,7 @@ connection_new(struct portal *portal, int fd, const char *host, { struct ctld_connection *conn; - conn = calloc(1, sizeof(*conn)); + conn = reinterpret_cast(calloc(1, sizeof(*conn))); if (conn == NULL) log_err(1, "calloc"); connection_init(&conn->conn, &conn_ops, proxy_mode); @@ -2254,7 +2257,7 @@ found: switch (kev.filter) { case EVFILT_READ: - portal = kev.udata; + portal = reinterpret_cast(kev.udata); assert(portal->p_socket == (int)kev.ident); client_salen = sizeof(client_sa); diff --git a/usr.sbin/ctld/discovery.c b/usr.sbin/ctld/discovery.cc similarity index 100% rename from usr.sbin/ctld/discovery.c rename to usr.sbin/ctld/discovery.cc diff --git a/usr.sbin/ctld/isns.c b/usr.sbin/ctld/isns.cc similarity index 96% rename from usr.sbin/ctld/isns.c rename to usr.sbin/ctld/isns.cc index 0b836324ff47..e4d3744b84dc 100644 --- a/usr.sbin/ctld/isns.c +++ b/usr.sbin/ctld/isns.cc @@ -48,14 +48,14 @@ isns_req_alloc(void) { struct isns_req *req; - req = calloc(1, sizeof(struct isns_req)); + req = reinterpret_cast(calloc(1, sizeof(struct isns_req))); if (req == NULL) { log_err(1, "calloc"); return (NULL); } req->ir_buflen = sizeof(struct isns_hdr); req->ir_usedlen = 0; - req->ir_buf = calloc(1, req->ir_buflen); + req->ir_buf = reinterpret_cast(calloc(1, req->ir_buflen)); if (req->ir_buf == NULL) { free(req); log_err(1, "calloc"); @@ -101,7 +101,7 @@ isns_req_getspace(struct isns_req *req, uint32_t len) log_err(1, "realloc"); return (1); } - req->ir_buf = newbuf; + req->ir_buf = reinterpret_cast(newbuf); req->ir_buflen = newlen; return (0); } diff --git a/usr.sbin/ctld/kernel.c b/usr.sbin/ctld/kernel.cc similarity index 98% rename from usr.sbin/ctld/kernel.c rename to usr.sbin/ctld/kernel.cc index 06ca99ce9d1f..9ddf22b9f4e0 100644 --- a/usr.sbin/ctld/kernel.c +++ b/usr.sbin/ctld/kernel.cc @@ -170,7 +170,7 @@ cctl_start_element(void *user_data, const char *name, const char **attr) log_errx(1, "%s: improper lun element nesting", __func__); - cur_lun = calloc(1, sizeof(*cur_lun)); + cur_lun = reinterpret_cast(calloc(1, sizeof(*cur_lun))); if (cur_lun == NULL) log_err(1, "%s: cannot allocate %zd bytes", __func__, sizeof(*cur_lun)); @@ -287,7 +287,7 @@ cctl_start_pelement(void *user_data, const char *name, const char **attr) log_errx(1, "%s: improper port element nesting (%s)", __func__, name); - cur_port = calloc(1, sizeof(*cur_port)); + cur_port = reinterpret_cast(calloc(1, sizeof(*cur_port))); if (cur_port == NULL) log_err(1, "%s: cannot allocate %zd bytes", __func__, sizeof(*cur_port)); @@ -422,7 +422,7 @@ conf_new_from_kernel(struct kports *kports) str = NULL; len = 4096; retry: - str = realloc(str, len); + str = reinterpret_cast(realloc(str, len)); if (str == NULL) log_err(1, "realloc"); @@ -471,7 +471,7 @@ retry: str = NULL; len = 4096; retry_port: - str = realloc(str, len); + str = reinterpret_cast(realloc(str, len)); if (str == NULL) log_err(1, "realloc"); @@ -691,13 +691,13 @@ kernel_lun_add(struct lun *lun) req.reqdata.create.device_type = lun->l_device_type; if (lun->l_serial != NULL) { - strncpy(req.reqdata.create.serial_num, lun->l_serial, + strncpy((char *)req.reqdata.create.serial_num, lun->l_serial, sizeof(req.reqdata.create.serial_num)); req.reqdata.create.flags |= CTL_LUN_FLAG_SERIAL_NUM; } if (lun->l_device_id != NULL) { - strncpy(req.reqdata.create.device_id, lun->l_device_id, + strncpy((char *)req.reqdata.create.device_id, lun->l_device_id, sizeof(req.reqdata.create.device_id)); req.reqdata.create.flags |= CTL_LUN_FLAG_DEVID; } diff --git a/usr.sbin/ctld/login.c b/usr.sbin/ctld/login.cc similarity index 99% rename from usr.sbin/ctld/login.c rename to usr.sbin/ctld/login.cc index 8833779c825f..84d329964ada 100644 --- a/usr.sbin/ctld/login.c +++ b/usr.sbin/ctld/login.cc @@ -47,7 +47,7 @@ #define MAX_DATA_SEGMENT_LENGTH (128 * 1024) static void login_send_error(struct pdu *request, - char class, char detail); + char error_class, char detail); static void kernel_limits(const char *offload, int s, int *max_recv_dsl, int *max_send_dsl, @@ -230,16 +230,16 @@ login_new_response(struct pdu *request) } static void -login_send_error(struct pdu *request, char class, char detail) +login_send_error(struct pdu *request, char error_class, char detail) { struct pdu *response; struct iscsi_bhs_login_response *bhslr2; log_debugx("sending Login Response PDU with failure class 0x%x/0x%x; " - "see next line for reason", class, detail); + "see next line for reason", error_class, detail); response = login_new_response(request); bhslr2 = (struct iscsi_bhs_login_response *)response->pdu_bhs; - bhslr2->bhslr_status_class = class; + bhslr2->bhslr_status_class = error_class; bhslr2->bhslr_status_detail = detail; pdu_send(response); diff --git a/usr.sbin/ctld/uclparse.c b/usr.sbin/ctld/uclparse.cc similarity index 100% rename from usr.sbin/ctld/uclparse.c rename to usr.sbin/ctld/uclparse.cc From nobody Wed Apr 2 18:43:32 2025 X-Original-To: dev-commits-src-main@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 4ZSYfZ1BHlz5rQl8; Wed, 02 Apr 2025 18:43: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSYfX2tvsz3CS8; Wed, 02 Apr 2025 18:43:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619412; 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=BGbEDWj+xcMyaFAnDuY6pFVdFPjr1CeOi8m3+G4AZGY=; b=dzP3x9gbgfo9FZrY1VvgQWy4n4BoloGoIcuSU3UAkazlhkRotvrkfTNBQSO32qlBaNPtdW XRHoVG5YKb7eNkb1Q2QEv4BQjyZnsk3+TbHW4fQ7dbQjOSsk5JL7gwoFB8eJEqQ3kEUGwO U0PheAQD8CfmBC10Jnj/goS+kyn/r0ZtAh8N3KxJJbK2il+3NjKhtu5wwqcjWDUCvZ33Vm ETtJwtqSjn2hjVyzhF1vpkVQmrlaH48hWNoZIxy6M4mOIHHC+i4WfNvcmQuruzhjXpU1XC 97FK5t4KbiWhVt/KhT08n0nBcHrWAWlphm+j2s9gUF32F/g792GCfGJi0ZarAw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743619412; a=rsa-sha256; cv=none; b=T4lORMRFs8VSZPXdw/DAvAPREXVnyJ47PqPtHQ/tAHciwPsXMxXxGnJ7Fz5Qv0xNE7uBg7 4u79bOBd/6hSzmRSliqdpMQvvmvMxZ7KzVxbyLB3QgfHhD0duvNv4DPgYRtebAIG/3MPt6 KYznzTnbc3fi5rswDzVPopKI0EKXI5WjAG9qrkAODN0d9ccDKI5j6RtjjDBkKftagVZiMA 06yv66fFpYrUU0MIvVc/JRjQyYZ+wDgrSYMgbwZuY3D/waUxQUYR6/NVL4PDVgUrEGB5TC fMfoPHTyQao9862s9BmMOl0c+qVQbXL7lGMb2FeKcKO58SyWMitFBoLph+Imgg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619412; 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=BGbEDWj+xcMyaFAnDuY6pFVdFPjr1CeOi8m3+G4AZGY=; b=mREwvMtkP07b2qt8P3YO+qVPI3al36odYXPUWW0vFoGME/DeqegVUbw6pY8sDQP9ejDmxz B87sfCn+F1+hlHpwKNIMkMGpMAtuXUY484Rrzrlgi9SBMKwX97aDwXBdwN0JYTrIZlYivb dXZ6ql8o71G3Uzod4kRAG0Oej79WM+G4PV9m6pU54fLLBMEPZdimwxbnv59P8TUMAz+7jO IBbRBn82nv6yCWPVXXQgFT/uS+Fh5vZWE29NBWQWUuQh8XUzXRbSE50/meLvoOMWMKxcyB qusmv6tY0rgPnyzIsKtjwkUelgF+EUFIXdaM+3t3OCmYWh4g8gaDGgkxGOhnrA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSYfX2G9tzCWB; Wed, 02 Apr 2025 18:43:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532IhWqk053893; Wed, 2 Apr 2025 18:43:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532IhWg9053889; Wed, 2 Apr 2025 18:43:32 GMT (envelope-from git) Date: Wed, 2 Apr 2025 18:43:32 GMT Message-Id: <202504021843.532IhWg9053889@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 7feee915ace1 - main - depend-cleanup: Handle ctld moving from C to C++ List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 7feee915ace1adcbbeca6bdbaf68ac27dee13ce5 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=7feee915ace1adcbbeca6bdbaf68ac27dee13ce5 commit 7feee915ace1adcbbeca6bdbaf68ac27dee13ce5 Author: John Baldwin AuthorDate: 2025-04-02 18:42:08 +0000 Commit: John Baldwin CommitDate: 2025-04-02 18:43:17 +0000 depend-cleanup: Handle ctld moving from C to C++ Reviewed by: asomers Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D49140 --- tools/build/depend-cleanup.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/build/depend-cleanup.sh b/tools/build/depend-cleanup.sh index eec073feca19..ab779ea83a64 100755 --- a/tools/build/depend-cleanup.sh +++ b/tools/build/depend-cleanup.sh @@ -337,3 +337,12 @@ if [ $MACHINE_ARCH = aarch64 ]; then # 20250110 3f224333af16 add timingsafe_memcmp() assembly implementation ALL_libcompats= clean_dep lib/libc timingsafe_memcmp c fi + +# 20250402 839d0755fea8 ctld converted to C++ +clean_dep usr.sbin/ctld ctld c +clean_dep usr.sbin/ctld conf c +clean_dep usr.sbin/ctld discovery c +clean_dep usr.sbin/ctld isns c +clean_dep usr.sbin/ctld kernel c +clean_dep usr.sbin/ctld login c +clean_dep usr.sbin/ctld uclparse c From nobody Wed Apr 2 19:12:23 2025 X-Original-To: dev-commits-src-main@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 4ZSZHq5KrYz5rSdV; Wed, 02 Apr 2025 19:12: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSZHq4QPKz3JNB; Wed, 02 Apr 2025 19:12:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743621143; 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=gVokESxDeLPoDtopB99ZkN+sfzBW9Skqadhdy9p8ALw=; b=hrvF0hebJkuWBWEmfwWetilORRnwLphBOiRyJ+MVArzXOqAqfa3EXTGkH1POsiQKQWUXi1 zdicjVBtcjaQrhjh/J0nZj2S3mPhK/Pv8oXe512lMrV20FtEqZ74unyRauk1gbnBewrniO ERbvx0v5YVpXFj4iCGraDlO0Gs3gEdtuAk37dYvsEFcBQ6othg1gbeG0A7vZh1tHSdytC+ bhpQRzpUbRSTA3Cp6q2KB8KlCnIGa3+LcT5JlhcEegdnO4zjoecqZJRKr/yxb+O3xapTp9 OOmg8PR4Xc7raVjLdiAQARaqwS1CdZvmgs2DZQAGZnrSCyNoYIoyTya4pFc77Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743621143; a=rsa-sha256; cv=none; b=j+hb1CHeQc4gEeo0lwJCc7h2YzGVcR7Ej4s3wWVY7b7sH6nJslWyah2Xg84LHwhh2gzRKf 2641Iz0K47pByGL8Scq2qgIrPVid2gbtOyXpO3SurpiCRCjHNqWojvYdkB0rBD5Zqoer9w lNSAE84MrlBjxaWkuIRnLTQV7kScC7D5tPIgrij0i8ct5/WVek9h0lo1n9NubWWmo4KOwt u7s3kmcmDcFWOFaye3i7XradbZk/GZv81sv3yMtnIRRKCxfOQbDhWG0aj7QT0tn//wQW1Z y+wjyrcP+igig4JZoA5icNNhqv/NMUcnSM5KEhOOcfxUWIxaCLx2DtUgJDr/2A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743621143; 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=gVokESxDeLPoDtopB99ZkN+sfzBW9Skqadhdy9p8ALw=; b=ockn1NxjxkIV2K4hvkZgBpUujsD1cqfyt2x7/Vo/utODmEfi7hQ2ljywE5nbxruCiM382e G8MKZxrqg+wtuPTQA9QhhpDnT32OcmVId2BwiDSN3zyU5P6YSSQQ6FakgUaPo+EvRGw7fU rO22jsDi3m2vlxJTJtTKh1vmrB8EHHMEZSIN/SzJCscj4zbf3Z2cyBRAnFBAu1ETnLnQ/p HApEJpGLHnT/Y/hCfwS/LKKFHhgLpy7cnIPfaS8Uwpp1y6FvyyjY44th6N3Kmz5b3sY8GY tWc6o0HPPa3km89hvehautnPmH8IKIpTdBXulrG+goiyrWFNYkOOP0kHxmdfwA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSZHq3klxzD01; Wed, 02 Apr 2025 19:12:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532JCNYZ010035; Wed, 2 Apr 2025 19:12:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532JCNlU010031; Wed, 2 Apr 2025 19:12:23 GMT (envelope-from git) Date: Wed, 2 Apr 2025 19:12:23 GMT Message-Id: <202504021912.532JCNlU010031@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 58164dcb55d6 - main - pfctl: fix recursive printing of NAT rules List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 58164dcb55d62ca73b5e550b8344bf61e2d8a47a Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=58164dcb55d62ca73b5e550b8344bf61e2d8a47a commit 58164dcb55d62ca73b5e550b8344bf61e2d8a47a Author: Kristof Provost AuthorDate: 2025-04-02 16:04:46 +0000 Commit: Kristof Provost CommitDate: 2025-04-02 19:11:47 +0000 pfctl: fix recursive printing of NAT rules pfctl_show_nat() is called recursively to print nat anchors. This passes the anchor path, but this path was modified by pfctl_show_nat(), leading to issues printing the anchors. Make a copy of the path ('npath') before we modify it. Ensure we do this correctly by sprinking in 'const', and add a test case to verify that we do now print things correctly. Reported by: Thomas Pasqualini MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") --- sbin/pfctl/pfctl.c | 33 +++++++++++++++--------------- tests/sys/netpfil/pf/anchor.sh | 46 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 16 deletions(-) diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c index 7e06f4136686..1c5b7f5e1fc0 100644 --- a/sbin/pfctl/pfctl.c +++ b/sbin/pfctl/pfctl.c @@ -93,12 +93,12 @@ int pfctl_load_hostid(struct pfctl *, u_int32_t); int pfctl_load_reassembly(struct pfctl *, u_int32_t); int pfctl_load_syncookies(struct pfctl *, u_int8_t); int pfctl_get_pool(int, struct pfctl_pool *, u_int32_t, u_int32_t, int, - char *, int); + const char *, int); void pfctl_print_eth_rule_counters(struct pfctl_eth_rule *, int); void pfctl_print_rule_counters(struct pfctl_rule *, int); int pfctl_show_eth_rules(int, char *, int, enum pfctl_show, char *, int, int); int pfctl_show_rules(int, char *, int, enum pfctl_show, char *, int, int); -int pfctl_show_nat(int, char *, int, char *, int, int); +int pfctl_show_nat(int, const char *, int, char *, int, int); int pfctl_show_src_nodes(int, int); int pfctl_show_states(int, const char *, int); int pfctl_show_status(int, int); @@ -956,7 +956,7 @@ pfctl_id_kill_states(int dev, const char *iface, int opts) int pfctl_get_pool(int dev, struct pfctl_pool *pool, u_int32_t nr, - u_int32_t ticket, int r_action, char *anchorname, int which) + u_int32_t ticket, int r_action, const char *anchorname, int which) { struct pfioc_pooladdr pp; struct pf_pooladdr *pa; @@ -1438,7 +1438,7 @@ pfctl_show_rules(int dev, char *path, int opts, enum pfctl_show format, } int -pfctl_show_nat(int dev, char *path, int opts, char *anchorname, int depth, +pfctl_show_nat(int dev, const char *path, int opts, char *anchorname, int depth, int wildcard) { struct pfctl_rules_info ri; @@ -1461,16 +1461,17 @@ pfctl_show_nat(int dev, char *path, int opts, char *anchorname, int depth, p[0] = '\0'; } + if ((npath = calloc(1, MAXPATHLEN)) == NULL) + errx(1, "pfctl_rules: calloc"); + if (anchorname[0] == '/') { - if ((npath = calloc(1, MAXPATHLEN)) == NULL) - errx(1, "pfctl_rules: calloc"); snprintf(npath, MAXPATHLEN, "%s", anchorname); } else { - if (path[0]) - snprintf(&path[len], MAXPATHLEN - len, "/%s", anchorname); + snprintf(npath, MAXPATHLEN, "%s", path); + if (npath[0]) + snprintf(&npath[len], MAXPATHLEN - len, "/%s", anchorname); else - snprintf(&path[len], MAXPATHLEN - len, "%s", anchorname); - npath = path; + snprintf(&npath[len], MAXPATHLEN - len, "%s", anchorname); } /* @@ -1500,12 +1501,12 @@ pfctl_show_nat(int dev, char *path, int opts, char *anchorname, int depth, INDENT(depth, !(opts & PF_OPT_VERBOSE)); printf("}\n"); } - path[len] = '\0'; + npath[len] = '\0'; return (0); } for (i = 0; i < 3; i++) { - ret = pfctl_get_rules_info_h(pfh, &ri, nattype[i], path); + ret = pfctl_get_rules_info_h(pfh, &ri, nattype[i], npath); if (ret != 0) { warnc(ret, "DIOCGETRULES"); return (-1); @@ -1513,19 +1514,19 @@ pfctl_show_nat(int dev, char *path, int opts, char *anchorname, int depth, for (nr = 0; nr < ri.nr; ++nr) { INDENT(depth, !(opts & PF_OPT_VERBOSE)); - if ((ret = pfctl_get_rule_h(pfh, nr, ri.ticket, path, + if ((ret = pfctl_get_rule_h(pfh, nr, ri.ticket, npath, nattype[i], &rule, anchor_call)) != 0) { warnc(ret, "DIOCGETRULE"); return (-1); } if (pfctl_get_pool(dev, &rule.rdr, nr, - ri.ticket, nattype[i], path, PF_RDR) != 0) + ri.ticket, nattype[i], npath, PF_RDR) != 0) return (-1); if (pfctl_get_pool(dev, &rule.nat, nr, - ri.ticket, nattype[i], path, PF_NAT) != 0) + ri.ticket, nattype[i], npath, PF_NAT) != 0) return (-1); if (pfctl_get_pool(dev, &rule.route, nr, - ri.ticket, nattype[i], path, PF_RT) != 0) + ri.ticket, nattype[i], npath, PF_RT) != 0) return (-1); if (dotitle) { diff --git a/tests/sys/netpfil/pf/anchor.sh b/tests/sys/netpfil/pf/anchor.sh index 40e8354a2343..463cd4d475e3 100644 --- a/tests/sys/netpfil/pf/anchor.sh +++ b/tests/sys/netpfil/pf/anchor.sh @@ -316,6 +316,51 @@ counter_cleanup() pft_cleanup } +atf_test_case "nat" "cleanup" +nat_head() +{ + atf_set descr 'Test nested nat anchors' + atf_set require.user root +} + +nat_body() +{ + pft_init + + epair=$(vnet_mkepair) + vnet_mkjail alcatraz ${epair}a + + ifconfig ${epair}b 192.0.2.2/24 up + jexec alcatraz ifconfig ${epair}a 192.0.2.1/24 up + + # Sanity check + atf_check -s exit:0 -o ignore ping -c 1 192.0.2.1 + + jexec alcatraz pfctl -e + pft_set_rules alcatraz \ + "nat-anchor \"foo/*\"" \ + "pass" + + echo "nat log on ${epair}a inet from 192.0.2.0/24 to any port = 53 -> 192.0.2.1" \ + | jexec alcatraz pfctl -a "foo/bar" -g -f - + echo "rdr on ${epair}a proto tcp to port echo -> 127.0.0.1 port echo" \ + | jexec alcatraz pfctl -a "foo/baz" -g -f - + + jexec alcatraz pfctl -sn -a "*" + jexec alcatraz pfctl -sn -a "foo/bar" + jexec alcatraz pfctl -sn -a "foo/baz" + + atf_check -s exit:0 -o match:"nat log on epair0a inet from 192.0.2.0/24 to any port = domain -> 192.0.2.1" \ + jexec alcatraz pfctl -sn -a "*" + atf_check -s exit:0 -o match:"rdr on epair0a inet proto tcp from any to any port = echo -> 127.0.0.1 port 7" \ + jexec alcatraz pfctl -sn -a "*" +} + +nat_cleanup() +{ + pft_cleanup +} + atf_init_test_cases() { atf_add_test_case "pr183198" @@ -326,4 +371,5 @@ atf_init_test_cases() atf_add_test_case "quick" atf_add_test_case "quick_nested" atf_add_test_case "counter" + atf_add_test_case "nat" } From nobody Wed Apr 2 19:28:33 2025 X-Original-To: dev-commits-src-main@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 4ZSZff3VWXz5rTs9; Wed, 02 Apr 2025 19:28:42 +0000 (UTC) (envelope-from olce@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSZff2tRZz3LXh; Wed, 02 Apr 2025 19:28:42 +0000 (UTC) (envelope-from olce@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743622122; 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=SiWXNKSqe2vZ6y4nwSpD2Xthlbqsu9bRC9320GGWl6s=; b=ettk3/c7y+zrZP44u9/b7pHz+mV+9PjtLYGls/aisDufFzSC+mQ/LAYFsqCSHUTKU/ldSv Q5QL+p0aSwtwffKjOUIjO5KcL4f4fKPNoWSeil82vNpV8Eh9l3wu/AMKMqAmv1BbiCodtT mYeE5gSNrJie09ZZtr7U6NxzerK0OqImoTnr7e+VQpMfOG0SVw8VJJtjWLEJQCTGnloZvR HMolsavYjj1v/KoVY1kxfI2r6YOnrJcixfCOCyysdIr2W+4qT+il12b1Yf2sTL+/+R9Dzr AAlJHPsX5bDzwbNfKU9Gc6rmC4dyvRnruRepOS1HaaE95VEQwABg8t6JrSGsag== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743622122; a=rsa-sha256; cv=none; b=UxH1XIrthAB4d5T7LXFyO2y3hYMY+D0lKZKzuMvEm6X1clqb7TPZ3D5q034RwEJecxlDnM Wqz1xsUDR06k6jnS/PguyTxAMyI+WaA9qsQrdx2e98t08EgV+Ho20L9uE1uKm23s0Tnuwk FZ3hFmPqICTpqQvUoe/cB2BMFBqV3T999Uim1+PHIlo0DXu6B8iFq8OeGMLkQsfE6CWrf0 egxqp5zybcNi6t2VKBWUPDxKEfcU57cKijVUDJ5K2ssjGTW+QPvSsKm5lB/b29p3qfzqPv gObwlTE2NRWcnG4rWrx4QzrCA1lJMIy675N0+CkMOmRTkJaqCsxJJDNorGdHUg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743622122; 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=SiWXNKSqe2vZ6y4nwSpD2Xthlbqsu9bRC9320GGWl6s=; b=oQ87vMYTgEbFMQlAF0fP84i7mW9hiVGk2ye2gRF1UFw2L3usdZiYstt/PQJo55Qs/prqlC hPcDGulmeOvBbgcXsj6WzqfzzI1N0AwIHaoG3IryRV2YxhXpCga25Sa9pv77/xPwTuQ9gv Gzz9/5ucqQcH3h9R1h4w7NHUZ0SAX9jKeiVZagJP/a8jYs58rqXW79M/nFFNXnVyvN+os3 X8J8mOOpIZuAISkk8BiB5wAiAs87esDY1vYn4k+fik5EcxAy6sWpDyLZPFbR5yagkO+UPt OUys/XrwlaG6X6V+L0E9U6XLl42INcEkbQ790ARniuFXCKPw5TNxh4vmVewyBg== Received: from ravel.localnet (aclermont-ferrand-653-1-222-123.w90-14.abo.wanadoo.fr [90.14.66.123]) (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: olce/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4ZSZfd5WkVz170h; Wed, 02 Apr 2025 19:28:41 +0000 (UTC) (envelope-from olce@freebsd.org) From: Olivier Certner To: Mitchell Horne Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: e69623451ea6 - main - mccomphy: add support for YT8531 Date: Wed, 02 Apr 2025 21:28:33 +0200 Message-ID: <2992932.slGk94SIus@ravel> In-Reply-To: <202504021657.532Gv93w049180@gitrepo.freebsd.org> References: <202504021657.532Gv93w049180@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart3044768.hHqAuc6tWs"; micalg="pgp-sha384"; protocol="application/pgp-signature" --nextPart3044768.hHqAuc6tWs Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="UTF-8"; protected-headers="v1" From: Olivier Certner To: Mitchell Horne Date: Wed, 02 Apr 2025 21:28:33 +0200 Message-ID: <2992932.slGk94SIus@ravel> In-Reply-To: <202504021657.532Gv93w049180@gitrepo.freebsd.org> References: <202504021657.532Gv93w049180@gitrepo.freebsd.org> MIME-Version: 1.0 Hi Mitchell, This commit is likely the cause of the current build failure on amd64, see: https://ci.freebsd.org/job/FreeBSD-main-amd64-build/31518/ Thanks and regards. -- Olivier Certner --nextPart3044768.hHqAuc6tWs Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part. Content-Transfer-Encoding: 7Bit -----BEGIN PGP SIGNATURE----- iQIzBAABCQAdFiEEmNCxHjkosai0LYIujKEwQJceJicFAmftj+EACgkQjKEwQJce JievKhAAhSOV+pMxoQwRqjEwACzvW828AcksFG6mouZzrFucxR1IK0vp9/MYEQnh SMGdMFTVwkkO1CdCOSfUtn3Oc3Cn0PVfrUaxA/etqHqHl4aQYdWAdO9Pm45Vf7Ir xEdOQI7Mr+wzroFOfgLCvI4aF/xBc4EnrznFeQkHTv4sN3WXjn25Kkxoz7OtODzL +6TIR2e7XDHSzAUOMcW9bJHNIEeOgXxcTMW7GIX6kcZW3+QnGdDN1hlvl9tT2X1P hTZfpxdJzfRvBs2qKOwnxYxY6R/6Pjw/X06Tg35IjKR4NfROkOvcG4/CYHBvcXay 2eOZsokO4UZHj9C/qHhP6mfeNPUTpmoc7jCDNi95NKsL46pjAfEc+roSgUMwbxc/ Uxt7SWfeDRnHEY9rNvM3+M5JQLDISVFeQ1oCwKKDa1F+xd3dtCjiPrFI3eb1otbv UtpH5QxikBV0wQ8Tt4JOKlx+H+sP2JYWaKESbwDNy7MTUMVhZ5QNgWkMWo1UcTf6 zVzJtBZ9XGPCSjion5hVUZN9vmFLKBqT0ILMqQQug4DR6SNRGNrROpbJ8u2UGcr4 lNYhw3nTZE0tQbC5qI+kMvh8llYXtO9I2QegcSLRNIeSVQOn5G3wgJW/xz7ye+QK Hzi9C00bC+Bm+F7C0mAACfEB0HKfFKvkOLXA3XVFWyh+MPRMt5A= =729C -----END PGP SIGNATURE----- --nextPart3044768.hHqAuc6tWs-- From nobody Wed Apr 2 19:43:28 2025 X-Original-To: dev-commits-src-main@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 4ZSZzl714pz5rW1Z; Wed, 02 Apr 2025 19:43:31 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from omta004.cacentral1.a.cloudfilter.net (omta002.cacentral1.a.cloudfilter.net [3.97.99.33]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "Client", Issuer "CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSZzl53cgz3Pmw; Wed, 02 Apr 2025 19:43:31 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Authentication-Results: mx1.freebsd.org; none Received: from shw-obgw-4004a.ext.cloudfilter.net ([10.228.9.227]) by cmsmtp with ESMTPS id zsrUtdSXW5Mqy03zmuHT83; Wed, 02 Apr 2025 19:43:30 +0000 Received: from spqr.komquats.com ([70.66.136.217]) by cmsmtp with ESMTPSA id 03zluUDD2JhBP03zmuhKR9; Wed, 02 Apr 2025 19:43:30 +0000 X-Auth-User: cschuber X-Authority-Analysis: v=2.4 cv=QY3Fvdbv c=1 sm=1 tr=0 ts=67ed9362 a=h7br+8Ma+Xn9xscxy5znUg==:117 a=h7br+8Ma+Xn9xscxy5znUg==:17 a=kj9zAlcOel0A:10 a=XR8D0OoHHMoA:10 a=6I5d2MoRAAAA:8 a=EkcXrb_YAAAA:8 a=YxBL1-UpAAAA:8 a=QJRumn0MJZXuOLPX7-kA:9 a=CjuIK1q_8ugA:10 a=LK5xJRSDVpKd5WXXoEvA:22 a=Ia-lj3WSrqcvXOmTRaiG:22 Received: from slippy.cwsent.com (slippy [10.1.1.91]) by spqr.komquats.com (Postfix) with ESMTP id BC0FD244; Wed, 02 Apr 2025 12:43:28 -0700 (PDT) Received: by slippy.cwsent.com (Postfix, from userid 1000) id 8A364214; Wed, 02 Apr 2025 12:43:28 -0700 (PDT) X-Mailer: exmh version 2.9.0 11/07/2018 with nmh-1.8+dev Reply-to: Cy Schubert From: Cy Schubert X-os: FreeBSD X-Sender: cy@cwsent.com X-URL: http://www.cschubert.com/ To: Olivier Certner cc: Mitchell Horne , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: e69623451ea6 - main - mccomphy: add support for YT8531 In-reply-to: <2992932.slGk94SIus@ravel> References: <202504021657.532Gv93w049180@gitrepo.freebsd.org> <2992932.slGk94SIus@ravel> Comments: In-reply-to Olivier Certner message dated "Wed, 02 Apr 2025 21:28:33 +0200." List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Wed, 02 Apr 2025 12:43:28 -0700 Message-Id: <20250402194328.8A364214@slippy.cwsent.com> X-CMAE-Envelope: MS4xfDid13pctxuSV98IYaJdeJVjujXduY4FpEhLKwDNolfhcPfibeLWvKnUq8tbK0ioyYjFVRzWpHTfjoMiqnDFUqja8rEr6tkdbmOZ/tzyGxqA8wJpWg2+ 0QVUXw5+yoNgy9qLnlqBlHWS9E1OXDkxtjN8dJCxV2+t/hdcjR4Q3JQyKRlfUy62WYBw5vegoKEa5bBywr8gWkTkA4g9+azjd3m7U7vb2Q0xzOihtO0zT+rW 5BIV6ILe+ATMtXm7nHjF70BXJqIGvA7OEc/UbKI2e8DNCYt5QvpJNEz7TkQgr7j5mR6tU+EOAeBalSOpkOxyZFCwLom481wZtnYIvkqpQEGcTlSrgamKB+M7 K1SiEmXL X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:16509, ipnet:3.96.0.0/15, country:US] X-Rspamd-Queue-Id: 4ZSZzl53cgz3Pmw X-Spamd-Bar: ---- In message <2992932.slGk94SIus@ravel>, Olivier Certner writes: > > Hi Mitchell, > > This commit is likely the cause of the current build failure on amd64, see: > https://ci.freebsd.org/job/FreeBSD-main-amd64-build/31518/ > > Thanks and regards. > > -- > Olivier Certner Hmm. I wonder why this was committed in the first place. The review listed isn't this commit. Should this be reverted to a) correct the commit log message to document the correct revision and b) fix the build? -- Cheers, Cy Schubert FreeBSD UNIX: Web: https://FreeBSD.org NTP: Web: https://nwtime.org e^(i*pi)+1=0 From nobody Wed Apr 2 19:44:26 2025 X-Original-To: dev-commits-src-main@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 4ZSb0p63gpz5rWN9; Wed, 02 Apr 2025 19:44: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSb0p3jbmz3Px6; Wed, 02 Apr 2025 19:44:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743623066; 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=hHm7zryA1OvB9sv8ni1ec4u741X6ecUexQNcm5T2mNc=; b=FPRpT2nU5MOBl4oCABT9yJKfhxtF0a6uw790vTCGiHvYdD+1bRCxIkQAGIcUDISvaVmmx2 ituAumjhZjJppmcJC90772A7jQ7E1ky8lqgIRFMyrRTAIDPvViXO8E4ieaK1zQ96GffbDk gv6p8Tm6JgMO1S6AMjZ3gY2fIglWTUoIjCEmTUVbsUkpAdcUMnibYjpy9UxhH/mTsv2KEY raRiv/VDXFosy7JQPii5EySKErB/P9DFI09EoY0QZJZ7zIJVE+Fe1RnUwMFstNnVAkBPV3 sO6OCgCvQGmMQ9lGlgiQGPP4gII/jl+WjSdeYGgb0KntWpBG2NLIjVTLfN8Iew== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743623066; a=rsa-sha256; cv=none; b=bG7sIYISgRpH5jEVGYc8u7TkeDJb5wthUuVucPuDtQnum7JPBsEa70uYC00gBnRorP/iJL qNRjm4xJW68RtzJsGN9MtQ5gg/y+UUFOtO+82nPUmambln4bNN4KJbXjFPCGIBcqxV+RED RAOr5CXl0Y2R1BbHthJQj96F8lM4b0DSR8iOHTG138ArQnMiWK0v4j/ViDGDuy/7kj1yjV AsVN0yqCX9tRf6avX5jaTxnBaHJvvxPylaEGbOi9cKvyvt/rx3QW7eLBYcjtUXk9JLlknA A/fJDgX2n4d0U4szv32Q18sJ99ZNha0KG34ZXfG1iFianVcE1g3Lj4s7J2sJEA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743623066; 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=hHm7zryA1OvB9sv8ni1ec4u741X6ecUexQNcm5T2mNc=; b=Yh783VGv150H6j8eLlYXMq8rfwWARzv4oczTYRffyZa6D0dT3KHfCzXZIX2Hu8AaHx2Jx8 R6vKa7cbe9aRd9ht9gZZmMNTXPNMBdaQ8JJI1r+/Nz9ISUqdfGJJMGgUZK79FIavt7w7sC pjkly/9ELsxL6lY/0vsMc9cD7VANC29LXYE/chCoHsNeTxwP54qjjf1zFpXVZdFnzPcUPP Q1vdhAhoE6uFiJCsPgws4n7kJ26j9AS0LRUmHcjs3rXfI8lmi3T7PkVSdUn1Nwq0JvD0io AQM3slo0jXU4hEfdLPXb6HrSrsaBqKByBGP4h95TvmcArqKDBmTe6HNFXXzAyw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSb0p38nWzTsY; Wed, 02 Apr 2025 19:44:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532JiQbG066510; Wed, 2 Apr 2025 19:44:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532JiQwC066507; Wed, 2 Apr 2025 19:44:26 GMT (envelope-from git) Date: Wed, 2 Apr 2025 19:44:26 GMT Message-Id: <202504021944.532JiQwC066507@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: 61c010f3b35e - main - tests/netinet: enable test against kern/189088 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 61c010f3b35e867166a2be5906a71b9cbcedf7db Auto-Submitted: auto-generated The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=61c010f3b35e867166a2be5906a71b9cbcedf7db commit 61c010f3b35e867166a2be5906a71b9cbcedf7db Author: Gleb Smirnoff AuthorDate: 2025-04-02 19:44:14 +0000 Commit: Gleb Smirnoff CommitDate: 2025-04-02 19:44:14 +0000 tests/netinet: enable test against kern/189088 This test was created together with the bug, however after fixing commit 9fdbf7eef5c0 it was not enabled. Also, the test has a mistake: the second netstat check would fail cause it would see the route remaining from the first run. Workaround that by running the second run in a separate pair of fibs to the first one. --- tests/sys/netinet/fibs_test.sh | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/sys/netinet/fibs_test.sh b/tests/sys/netinet/fibs_test.sh index b58a45b26f3e..5fe8f7d87641 100644 --- a/tests/sys/netinet/fibs_test.sh +++ b/tests/sys/netinet/fibs_test.sh @@ -352,14 +352,13 @@ same_ip_multiple_ifaces_head() } same_ip_multiple_ifaces_body() { - atf_expect_fail "kern/189088 Assigning the same IP to multiple interfaces in different FIBs creates a host route for only one" ADDR="192.0.2.2" MASK0="24" MASK1="32" # Unlike most of the tests in this file, this is applicable regardless # of net.add_addr_allfibs - get_fibs 2 + get_fibs 4 # Setup the interfaces, then remove one alias. It should not panic. setup_tap ${FIB0} inet ${ADDR} ${MASK0} @@ -371,13 +370,13 @@ same_ip_multiple_ifaces_body() setfib ${FIB1} netstat -rn -f inet # Do it again, in the opposite order. It should not panic. - setup_tap ${FIB0} inet ${ADDR} ${MASK0} + setup_tap ${FIB2} inet ${ADDR} ${MASK0} TAP0=${TAP} - setup_tap ${FIB1} inet ${ADDR} ${MASK1} + setup_tap ${FIB3} inet ${ADDR} ${MASK1} TAP1=${TAP} ifconfig ${TAP0} -alias ${ADDR} atf_check -o not-match:"^${ADDR}[[:space:]]" \ - setfib ${FIB0} netstat -rn -f inet + setfib ${FIB2} netstat -rn -f inet } same_ip_multiple_ifaces_cleanup() { From nobody Wed Apr 2 19:48:36 2025 X-Original-To: dev-commits-src-main@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 4ZSb5d1L82z5rWcR; Wed, 02 Apr 2025 19:48: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSb5d0XQNz3QVr; Wed, 02 Apr 2025 19:48:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743623317; 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=TenN7cVhbNpMUSFz2EY0+5hkj9vDXqKKSZhURcV8ERU=; b=IMwOeo1F+P9yAcwJ4IE7BfYPKcFTfeqwvuk7sa+UGAv5b33uqu5g+hJQXVYDnlU2Zy1hP8 t8zVcTsYvQ0GHACBS0eSDMp/xnIPU29Oo3fF7XMMdtOKrLc48+x0SpU2izUKUYTtrp2/1L Z8jPiT1sSue/yz7UaoAoj1qfeA2DO1qr5ogrume8DZi2WQOBnQv0BiwPtfMkpfLDRsXMmS CCtKxHYrds0z63+l0+Z9tXrBIj79huCh96iPHj/XgNGmy2Q9qM47lXTHqCbbz0w8FZWBJk FpIuQeieEzIwl24kx/kYO+vZoB75RwxZFzQKWVR/R+c3gb61si/tIK303GHgtQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743623317; a=rsa-sha256; cv=none; b=IYR5MWYvdP06kSWBTif5Ti6uxgLscJkVf6ahsP2MUvJVCI7wrODx6WDXfCMPevmA1c4+hS dxXSsg7VND26oxElKl2Ylv8K5fTYgwEIj7/TZ/dxPmNGjxJagJexNvbKU+DcYEDAUaVdgf 0g1rW1Y2bpfD/WjeQ0hp5sbd+tE3sbYLvSI0LELSeDSPElLoAnmAtgDscUMasP1UAyfyGX 5ygnZ+CtY8j+MpY+OWaQsMDi+KwSyN0KXOkYtJSQLITrvxoMaCODY8I8VuUg79Wet42qvU FQrLcu/YXaXAPA8OwunVZifYcWEI9shP1qS+Tt9tJJkVxTeEOgBJA/5dEs0RLw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743623317; 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=TenN7cVhbNpMUSFz2EY0+5hkj9vDXqKKSZhURcV8ERU=; b=dX4kTg/t9UWkKB3PkV9dmjpeMMzs+wIlho5Wt/T3t6PVR1PnHL0ethCyNPNQOw+yvT0l6k Ckvv6stI26V0YaLEJQRRbYEmIOTlX23rmokSnDHPIbfKMvgissohOsYrR2kEZ55JGxUgmu WiM13DxwM61L3VIdGA/FVwe8DpHgNOmTlzyAeyotyDeyg1OmQRNvh/4cLuxO3cAG2uQhv2 8y6236+6BEEwXxfU6qwC7qV+Bayl5cWKCHFsQffoh0oHa9DUeLnrW3iCO3vRxpVPo5Ym4G 7DEcAEt+0f19YQUMGUBrXPtMoPi5i5XQeVOD68UGjLbkofjeXzx64IQP/gqdpw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSb5c6lG2zVMh; Wed, 02 Apr 2025 19:48:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532Jmar1067882; Wed, 2 Apr 2025 19:48:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532JmaON067879; Wed, 2 Apr 2025 19:48:36 GMT (envelope-from git) Date: Wed, 2 Apr 2025 19:48:36 GMT Message-Id: <202504021948.532JmaON067879@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Navdeep Parhar Subject: git: cc05f8de571d - main - pci.4: Update the information on pci_bar_mmap to match pciio.h List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: np X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cc05f8de571dcb9f8c64a4151d7a5567873295e3 Auto-Submitted: auto-generated The branch main has been updated by np: URL: https://cgit.FreeBSD.org/src/commit/?id=cc05f8de571dcb9f8c64a4151d7a5567873295e3 commit cc05f8de571dcb9f8c64a4151d7a5567873295e3 Author: Navdeep Parhar AuthorDate: 2025-04-02 19:15:46 +0000 Commit: Navdeep Parhar CommitDate: 2025-04-02 19:47:59 +0000 pci.4: Update the information on pci_bar_mmap to match pciio.h Reviewed by: kib,markj,ziaee MFC after: 1 week Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D49639 --- share/man/man4/pci.4 | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/share/man/man4/pci.4 b/share/man/man4/pci.4 index 8623eaf3c3b5..91fbb557f644 100644 --- a/share/man/man4/pci.4 +++ b/share/man/man4/pci.4 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd March 1, 2025 +.Dd April 2, 2025 .Dt PCI 4 .Os .Sh NAME @@ -372,16 +372,18 @@ The input parameters and results are passed in the .Va pci_bar_mmap structure, which has the following fields: .Bl -tag -width Vt struct pcise pbm_sel -.It Vt uint64_t pbm_map_base +.It Vt void *pbm_map_base Reports the established mapping base to the caller. If .Va PCIIO_BAR_MMAP_FIXED flag was specified, then this field must be filled before the call with the desired address for the mapping. -.It Vt uint64_t pbm_map_length +.It Vt size_t pbm_map_length Reports the mapped length of the BAR, in bytes. -Its .Vt uint64_t value is always multiple of machine pages. -.It Vt int64_t pbm_bar_length +Its +.Vt size_t +value is always multiple of machine pages. +.It Vt uint64_t pbm_bar_length Reports length of the bar as exposed by the device. .It Vt int pbm_bar_off Reports offset from the mapped base to the start of the From nobody Wed Apr 2 19:48:24 2025 X-Original-To: dev-commits-src-main@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 4ZSb5k64l0z5rW71 for ; Wed, 02 Apr 2025 19:48:42 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 4ZSb5k3dF4z3Qn8 for ; Wed, 02 Apr 2025 19:48:37 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-43d0359b1fcso1328875e9.0 for ; Wed, 02 Apr 2025 12:48:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743623316; x=1744228116; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eDtJFobK9CyUiqpakA9XeiNTBWC+qTKot7fbfeFqz8I=; b=lVa5pvDk3yVZqLqgo/mIf/ryhr1GvJtpbYjE9+yWb0rEknci+Qeu+bbBv6Wac3i+r1 KDAmBUvjIaWfdlrBJiLi0dA+2b5mreZRiCDCMovnUqH1TiRrBpCTN8hZfCG+0vD8KQA/ kygk0SOKsvcZUyBaD3Oz6jqYGaxKgb8OnUCE3bHgPCs0yd8l+v7VNIiPG6zmzo6+XIsO zCUoTzYKo+p3IlLpc3zF/H6xdvRv+WlUd2DwU43DAyX4KFmmZ+Q2owEfaFL8pJ4t2Raz /20W3/IPOlYwfDgLhXeHPeXw9WYWsh+rwL4n6vrg56d+sMFyIQMH+yLJ/4/uQJbSsW8q mBTA== X-Forwarded-Encrypted: i=1; AJvYcCXea7w04RuFdIQoSVhKORtCDNZzN1TKoX1wkK9egI/RajAxNKyDl7ALBZ6o18iBBftjtS6ERCzm+zE2wTi5FBuh7gK+aQ==@freebsd.org X-Gm-Message-State: AOJu0Yyp19mnSDcrUeuaQjyd4IpSE1JrHNp4e24SdLDTDAoUx2qNTypi hG43ouHaMcM9Gk2wRsstOZOX/fPNIWpv8nmDqf+am+wADRxhUXdkXHMA+o9IVk4= X-Gm-Gg: ASbGnctgNKPU2WFRraogu/8yv7Cgr+lFo9u1LylPP/Q8kU87jHeVU4U1WiJskUYMrAQ KMn+p2vjFDdEfW+VPSAPFY57nfQolvDnbuNhualhexF5HeCfOKXUQJYOo6KXAUCrwIWCGYrNUr+ V29IJJt1px54NiKtrf2hrlGkofimJavvfm4t6PxIUIZteIPtvNTwwW/pVp3geSOxxyGAqlN0dp3 zB8eHpYMaFNYZJ12klbvOTa4anfrmKq6DpQdvzIrAbsQXff0DV9T5sH5OY2TVcEyut72IKcvYOp soZrTUALCk9iagp1oCf6IQ1zfj8iB6sJx4s7nfOa86MYhWVmyk+fJKYY95c= X-Google-Smtp-Source: AGHT+IEhJmJ2suYoapcLcorso42vZtL7BH7ym/M4jFObgc3QCMT+ok8HG5hYFttR/f49lxkiAvkYPw== X-Received: by 2002:a05:600c:1ca3:b0:439:9737:675b with SMTP id 5b1f17b1804b1-43ebeed6dd4mr6724405e9.7.1743623315531; Wed, 02 Apr 2025 12:48:35 -0700 (PDT) Received: from smtpclient.apple ([131.111.5.201]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39c0b658b5dsm17627474f8f.3.2025.04.02.12.48.34 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Apr 2025 12:48:35 -0700 (PDT) Content-Type: text/plain; charset=us-ascii List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.300.87.4.3\)) Subject: Re: git: e69623451ea6 - main - mccomphy: add support for YT8531 From: Jessica Clarke In-Reply-To: <20250402194328.8A364214@slippy.cwsent.com> Date: Wed, 2 Apr 2025 20:48:24 +0100 Cc: Olivier Certner , Mitchell Horne , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <97BD6C92-2FE2-4630-A137-AFBB156D54B5@freebsd.org> References: <202504021657.532Gv93w049180@gitrepo.freebsd.org> <2992932.slGk94SIus@ravel> <20250402194328.8A364214@slippy.cwsent.com> To: Cy Schubert X-Mailer: Apple Mail (2.3826.300.87.4.3) X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US] X-Rspamd-Queue-Id: 4ZSb5k3dF4z3Qn8 X-Spamd-Bar: ---- On 2 Apr 2025, at 20:43, Cy Schubert wrote: >=20 > In message <2992932.slGk94SIus@ravel>, Olivier Certner writes: >>=20 >> Hi Mitchell, >>=20 >> This commit is likely the cause of the current build failure on = amd64, see: >> https://ci.freebsd.org/job/FreeBSD-main-amd64-build/31518/ >>=20 >> Thanks and regards. >>=20 >> --=20 >> Olivier Certner >=20 > Hmm. I wonder why this was committed in the first place. The review = listed=20 > isn't this commit. >=20 > Should this be reverted to a) correct the commit log message to = document=20 > the correct revision and b) fix the build? The review was split into multiple commits and Phabricator automatically updated it to match the changes from a single one of the commits. https://reviews.freebsd.org/D45600?id=3D139913 is an earlier version that included these changes. Jess From nobody Wed Apr 2 20:14:39 2025 X-Original-To: dev-commits-src-main@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 4ZSbgg4WPqz5rYV6; Wed, 02 Apr 2025 20:14: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSbgg3bkGz3Vjd; Wed, 02 Apr 2025 20:14:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743624879; 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=2m1nqpEMNUoaXHxqgzZaNchB9EICGesOsafhIH9o+QY=; b=ATRMVqnfcu2eCsVRdnw+6pSCGEU4z/R36WjbNbc0E3drj7omDG694svg390eG6qzcpGBs7 8faowrrTUAChQiVUgPapIHpmccg+Wmd2lNviOterdK7qY6FZ6QKlTA//fbU6fGk6THEX35 vapmDBiNZ/ZVP8z0vF1YhMYmNqpW45Z/ukrunx2ta19xyAI0cH65iltOYqa0NfxjC782rz ZTTnnl52DizJD0n832kQSRzTqPqKe/1FcvzOUFnqQ/LKAenqNaHaVzHlenj5QcxF+CD36k nimUPgf58lVzaUZf0QXzjmr/gmSow4N4xDemrvQyqMKUTab+tWmWE8jsMrko3g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743624879; a=rsa-sha256; cv=none; b=bIYLwDIaQjqJnPtVFG/hnqARpETueHXRCpjBxRBOLrXKUTR5oJVtVRwlpTBxa+OCJVnwDu KY7r+mPcAWq+l6PkxccIVcgAMvDcXCU9+88ErvWGfSgFLPRfHpIdhPZq9gJaLO5Edoo/0y j7cSiAv2XjVYUTOKn08Y+9XxmaBgnh1G2UGmvxNfO7t9SGnCYEpMftQ4sQvg3IQHLg5p4k 29dlBEUk0dSsDbeiFalC17XyW9kbHnrcD5inka67ha7FepGb5jDzF6C1UuXFJyfOpJ19jf UkU23ZAn0DXxb+o7qnapt+i04RX/9rR88ey9+DHBcT2/N2bePNtbhYSzkPJJ7w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743624879; 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=2m1nqpEMNUoaXHxqgzZaNchB9EICGesOsafhIH9o+QY=; b=rJaOJz7cmHrSJJaCDbQJp9eHOEhx4GrgCLxbnLHAYnGLmftaL9JylLEGMePnXtZMm2RK10 X8aFZOCb7l33K2cJSMsKXg2seHi7qTcpjKFzWXwzTL6VN9aBEy3DMSeifGXyukb9vX+vfM FOiS6TsZsqosbq3n7epBz/BDrpfClzOzwp7f3B4HSU39UL7oESjzUsZceFRGfg4g/cGDL2 dtbNN1pf8heLYsDpTZBt4/SvT73OhHUxuYeV0PM5WJTMgUt/v3Cbxtqpm2jjJmkpPe2I7a OC1eEp96+NwaPQzWK+/C38sb/xjTbcRuX3XVum1T/QOzszRJ0zy14WrNeHySDw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSbgg3B1FzX1S; Wed, 02 Apr 2025 20:14:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532KEdqf024260; Wed, 2 Apr 2025 20:14:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532KEdTG024257; Wed, 2 Apr 2025 20:14:39 GMT (envelope-from git) Date: Wed, 2 Apr 2025 20:14:39 GMT Message-Id: <202504022014.532KEdTG024257@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Colin Percival Subject: git: 9be42ee6c9c7 - main - pci: Make PCIe Eject timeout configurable List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9be42ee6c9c741052bdc49f13bc953bf88a24423 Auto-Submitted: auto-generated The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=9be42ee6c9c741052bdc49f13bc953bf88a24423 commit 9be42ee6c9c741052bdc49f13bc953bf88a24423 Author: Colin Percival AuthorDate: 2025-03-31 04:08:44 +0000 Commit: Colin Percival CommitDate: 2025-04-02 20:14:24 +0000 pci: Make PCIe Eject timeout configurable PCIe mandates a 5 second delay between when the "Attention Button" is pressed and when the associated device is detached; this is to allow for the button to be pressed a second time to cancel the ejection. On some systems this 5 second delay may not be desireable; so introduce a hw.pci.pcie_hp_detach_timeout sysctl (which can also be set as a loader tunable) which specifies the timeout in milliseconds (default 5000). If set to zero, the device is detached immediately. Reviewed by: jhb MFC after: 2 weeks Sponsored by: Amazon Differential Revision: https://reviews.freebsd.org/D49585 --- sys/dev/pci/pci_pci.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/sys/dev/pci/pci_pci.c b/sys/dev/pci/pci_pci.c index 10133c0c68d9..5e71a376604b 100644 --- a/sys/dev/pci/pci_pci.c +++ b/sys/dev/pci/pci_pci.c @@ -800,6 +800,11 @@ SYSCTL_INT(_hw_pci, OID_AUTO, enable_pcie_hp, CTLFLAG_RDTUN, &pci_enable_pcie_hp, 0, "Enable support for native PCI-express HotPlug."); +static sbintime_t pcie_hp_detach_timeout = 5 * SBT_1S; +SYSCTL_SBINTIME_MSEC(_hw_pci, OID_AUTO, pcie_hp_detach_timeout, CTLFLAG_RWTUN, + &pcie_hp_detach_timeout, + "Attention Button delay for PCI-express Eject."); + static void pcib_probe_hotplug(struct pcib_softc *sc) { @@ -1068,11 +1073,17 @@ pcib_pcie_intr_hotplug(void *arg) &sc->pcie_ab_task, NULL); } else if (old_slot_sta & PCIEM_SLOT_STA_PDS) { /* Only initiate detach sequence if device present. */ - device_printf(dev, - "Attention Button Pressed: Detaching in 5 seconds\n"); - sc->flags |= PCIB_DETACH_PENDING; - taskqueue_enqueue_timeout(taskqueue_bus, - &sc->pcie_ab_task, 5 * hz); + if (pcie_hp_detach_timeout != 0) { + device_printf(dev, + "Attention Button Pressed: Detaching in %ld ms\n", + (long)(pcie_hp_detach_timeout / SBT_1MS)); + sc->flags |= PCIB_DETACH_PENDING; + taskqueue_enqueue_timeout_sbt(taskqueue_bus, + &sc->pcie_ab_task, pcie_hp_detach_timeout, + SBT_1S, 0); + } else { + sc->flags |= PCIB_DETACHING; + } } } if (sc->pcie_slot_sta & PCIEM_SLOT_STA_PFD) From nobody Wed Apr 2 20:14:40 2025 X-Original-To: dev-commits-src-main@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 4ZSbgh5VmTz5rXv0; Wed, 02 Apr 2025 20:14: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSbgh4W4Wz3VgK; Wed, 02 Apr 2025 20:14:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743624880; 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=2lggKKs0XBJZ9ejgzvFcAMuxYoH2G3Q5L44SCOROrb8=; b=vH8Ens4Y70B5D+jAfKENxlzfVxv3HpvoX89XL69Mel5VMWQwQjthza1NH9jwxjSnjgJaoD 0NLNKvjSJeFgw8VGbboM19ZSOSX5L9Z5UuniTCOl2kzvMKhULr6+rc6OD/MC6LGTJcK9O/ T4GUuy7V82shnVba1FXKFxQ8yexhiQFWnDH44pF0rPp7PBFzXMna+OfkrhlZoQho5a8ggM ASPl9gQr+8jr+S1dzla2xNgESqaTRiVaTGeLTrQs3NG5DQ1ho2ASJ4pBTTdmB0JA/orRLU Q5nrTCV62lweEXSkzkNYMzsFo1C5mcjjmwgfD60v+qewt0/OyUlCVat1MnSoFg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743624880; a=rsa-sha256; cv=none; b=iN4RY3RAS3dcjpSz/DKizs7E1V4y3HsvLa1gEsuRKskiJYZegPy3Z28zNKDehZciIUeifa 14yy9eznUvRkNM1Nf1W2tT6SIRWbhkPizpJSmckHlLIA2YpvV5HNk8oygOlkd9jFxSjqM4 04IpYa0GruvI9xXtgLxbxEzM/Gs/6zESVmwsyUCgDjxvc6UbaWDHObNmd9IMDCAbeyPgF3 PkuxYUM9s8YDlP4tvr78qJ5bvyRLELtkf3/IRdqijCK/0rBvAjQ2/nTa7AtCu+MBYFJP6R XiNYXMiKSau+AIPNLlfxxOd3KCEFAz+DOJn7/p6/kGM25AyfQJ9p870FJvNj+g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743624880; 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=2lggKKs0XBJZ9ejgzvFcAMuxYoH2G3Q5L44SCOROrb8=; b=NWWBoSvWmgUgmZa7fP2ctjQItofE2QBeTxM2NTWDg5ppYhdLmgVYOXxpAfjmGhIq4Nv2Ti EbvX9hsAROvWPzyDDAveCDwjSo8u1k0VHjVWRJTQYsBZ7rWc/WAqWzfQQ/nGZ5pjh6MNnm 86jZrUoYcll7+DW25TbIKhfYsCHpFPF5MMWarrb0BV/2y348OoS26mZalGoGece7iRvpY9 7R8J+xIOZ05i+A0d3Vfd0uY305CRl63v1JTPhVz4i/Re2pc+ZbqZsVsB373j9G6NhzAms6 Ex2zGLtn+vV+UTkW3sPzvONUmLMCBA25V3aCFWFaOrBKnvEempx5VpgfRrOqQA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSbgh3qCzzWrJ; Wed, 02 Apr 2025 20:14:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532KEe25024298; Wed, 2 Apr 2025 20:14:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532KEeow024295; Wed, 2 Apr 2025 20:14:40 GMT (envelope-from git) Date: Wed, 2 Apr 2025 20:14:40 GMT Message-Id: <202504022014.532KEeow024295@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Colin Percival Subject: git: 80febaa1714e - main - EC2: Set PCIe eject timeout to 0 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 80febaa1714e897d67a8217edc305a0e81498a6f Auto-Submitted: auto-generated The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=80febaa1714e897d67a8217edc305a0e81498a6f commit 80febaa1714e897d67a8217edc305a0e81498a6f Author: Colin Percival AuthorDate: 2025-03-31 04:11:23 +0000 Commit: Colin Percival CommitDate: 2025-04-02 20:14:24 +0000 EC2: Set PCIe eject timeout to 0 Since PCIe device detaching is done via API, there is no opportunity to "press the attention button a second time" and thus the 5 second timeout mandated by PCIe serves no purpose. MFC after: 2 weeks Sponsored by: Amazon --- release/tools/ec2.conf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/release/tools/ec2.conf b/release/tools/ec2.conf index 4f78e5913e56..507d9acabfd9 100644 --- a/release/tools/ec2.conf +++ b/release/tools/ec2.conf @@ -86,6 +86,12 @@ ec2_common() { # historical "nvd" driver. echo 'hw.nvme.use_nvd="0"' >> ${DESTDIR}/boot/loader.conf + # Reduce the timeout for PCIe Eject ("hotunplug") requests. PCIe + # mandates a 5 second timeout to allow someone to cancel the eject + # by pressing the "Attention button" a second time, but in the EC2 + # environment this delay serves no purpose. + echo 'hw.pci.pcie_hp_detach_timeout="0"' >> ${DESTDIR}/boot/loader.conf + # Disable KbdInteractiveAuthentication according to EC2 requirements. sed -i '' -e \ 's/^#KbdInteractiveAuthentication yes/KbdInteractiveAuthentication no/' \ From nobody Wed Apr 2 20:22:13 2025 X-Original-To: dev-commits-src-main@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 4ZSbrP2zQtz5rYgZ; Wed, 02 Apr 2025 20:22:13 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSbrP1mHmz3XKs; Wed, 02 Apr 2025 20:22:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743625333; 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=drQHqDoMXmg4e2ENtrd3IrgKGXMdHfoDtTWZOEIKWtM=; b=VfLS/GsGNjAkikGYPCYfZxfyfNdqMddsXUeLFYJlYon6fefoZr8Pg5JwWyNhSVtW0TEHkj ugV+CIRDIUkVLMKFuiQfjrQkIxoPgvCUuSJN0yeUA3HSSBm0Bof8dOrIgt/3RKcWhnWtQN 94uqgW6P6V5p8dxVJzA29HfevFFzB0aD73WYbUO6wc1f0qNoGPppGGBvNyonVQEQbUK9yM 73fRwH6K/XxjrpZ6Ge5Ab5fhk3AyReofRRnbQeNLZnOOQIDbiAAgplR8g4Jygh+mre3Tyd 8ipQUzo4fuL5T+zRUEPLghnl4/l0MjGZ0UPz/7apR8hRLv+F1soq6YzLVyojEA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743625333; a=rsa-sha256; cv=none; b=PL5WS/NKT82xRtTlOf1uxFxWTA+CY8CUVrketnbxnJ6YWa58tx/F3mxPXyxW3kJ8H+k8df oWCmD1as6E0bdJvP7ufL2kHdR0oulpQslFo+jLKTwIrFmYC/A+O/7EDv2c7OMl/pme57OT UOgJ7KZMbiiox2P2uX1r+vd8lPRVpYDaALyWyCto20APTvsagA4/BaSjbWchyrVVmW4p71 C3MfSeIZ7bi+q3VCOTucQOaQ1GotPQt5KtQrfKznJTAPOAL1MO2sH0CEbGz4X3DnKXAE39 S0Sr/00o4hYIqEWS7y2HViqzdbeUM1zazGdA+PWjq08tT79uPwhirPEPhDID4w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743625333; 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=drQHqDoMXmg4e2ENtrd3IrgKGXMdHfoDtTWZOEIKWtM=; b=nwrttG+H2LpQf0/99iPuPXirfFxv5BzbswzFvhSDmFf+VubRHeG8yamVYCTiX9GUQphKno V4VbGHykFanQCyIatlC/mfMYEvNNDdvOeu7E3yBbCXc1Xa6UoFE7fg5fRzeKKqINrBrfRM a8LpMYvHDeMImKOppPO2TdI3paSCHHCtyOkt6aKjDkHCUqvXtYwMhNx0CznN+g1+Qbd6ni avBtHAP0uA47yxQSRGQ2E9Gp/AxXZWHwGFpK+IsaoAomd/A02fQN+5PV8Dxh6cY4xjVHoI eiZ1uSgN6LM7yBPvVfFvzNXX5qCw4ZpxUtPk04e9+Hjmubda+CzA4OIWf1sndg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSbrP1BC5zWs6; Wed, 02 Apr 2025 20:22:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532KMDrR042026; Wed, 2 Apr 2025 20:22:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532KMDWu042023; Wed, 2 Apr 2025 20:22:13 GMT (envelope-from git) Date: Wed, 2 Apr 2025 20:22:13 GMT Message-Id: <202504022022.532KMDWu042023@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: fd748c7d5b7a - main - efirt: add a tunable to disable printing faults during EFIRT calls List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: fd748c7d5b7aefbeda604403f203637b12ae89df Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=fd748c7d5b7aefbeda604403f203637b12ae89df commit fd748c7d5b7aefbeda604403f203637b12ae89df Author: Konstantin Belousov AuthorDate: 2025-03-31 18:38:36 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-02 20:21:56 +0000 efirt: add a tunable to disable printing faults during EFIRT calls PR: 285797 Reported and tested by: Bakul Shah Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49592 --- sys/amd64/amd64/trap.c | 13 +++++++++++-- sys/arm64/arm64/trap.c | 3 +++ sys/dev/efidev/efirt.c | 11 ++++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c index 8e9b115ef224..1041422b9f92 100644 --- a/sys/amd64/amd64/trap.c +++ b/sys/amd64/amd64/trap.c @@ -163,6 +163,9 @@ SYSCTL_INT(_machdep, OID_AUTO, uprintf_signal, CTLFLAG_RWTUN, &uprintf_signal, 0, "Print debugging information on trap signal to ctty"); +u_long cnt_efirt_faults; +int print_efirt_faults = 1; + /* * Control L1D flush on return from NMI. * @@ -431,8 +434,14 @@ trap(struct trapframe *frame) */ if ((td->td_pflags & TDP_EFIRT) != 0 && curpcb->pcb_onfault != NULL && type != T_PAGEFLT) { - trap_diag(frame, 0); - printf("EFI RT fault %s\n", traptype_to_msg(type)); + u_long cnt = atomic_fetchadd_long(&cnt_efirt_faults, 1); + + if ((print_efirt_faults == 1 && cnt == 1) || + print_efirt_faults == 2) { + trap_diag(frame, 0); + printf("EFI RT fault %s\n", + traptype_to_msg(type)); + } frame->tf_rip = (long)curpcb->pcb_onfault; return; } diff --git a/sys/arm64/arm64/trap.c b/sys/arm64/arm64/trap.c index d612905b77c8..fdcc38cd9a31 100644 --- a/sys/arm64/arm64/trap.c +++ b/sys/arm64/arm64/trap.c @@ -85,6 +85,9 @@ static void print_registers(struct trapframe *frame); int (*dtrace_invop_jump_addr)(struct trapframe *); +u_long cnt_efirt_faults; +int print_efirt_faults; + typedef void (abort_handler)(struct thread *, struct trapframe *, uint64_t, uint64_t, int); diff --git a/sys/dev/efidev/efirt.c b/sys/dev/efidev/efirt.c index 5dff2258725d..9523ffc7f386 100644 --- a/sys/dev/efidev/efirt.c +++ b/sys/dev/efidev/efirt.c @@ -123,11 +123,20 @@ efi_status_to_errno(efi_status status) } static struct mtx efi_lock; -static SYSCTL_NODE(_hw, OID_AUTO, efi, CTLFLAG_RWTUN | CTLFLAG_MPSAFE, NULL, +SYSCTL_NODE(_hw, OID_AUTO, efi, CTLFLAG_RWTUN | CTLFLAG_MPSAFE, NULL, "EFI"); static bool efi_poweroff = true; SYSCTL_BOOL(_hw_efi, OID_AUTO, poweroff, CTLFLAG_RWTUN, &efi_poweroff, 0, "If true, use EFI runtime services to power off in preference to ACPI"); +extern int print_efirt_faults; +SYSCTL_INT(_hw_efi, OID_AUTO, print_faults, CTLFLAG_RWTUN, + &print_efirt_faults, 0, + "Print fault information upon trap from EFIRT calls: " + "0 - never, 1 - once, 2 - always"); +extern u_long cnt_efirt_faults; +SYSCTL_ULONG(_hw_efi, OID_AUTO, total_faults, CTLFLAG_RD, + &cnt_efirt_faults, 0, + "Total number of faults that occurred during EFIRT calls"); static bool efi_is_in_map(struct efi_md *map, int ndesc, int descsz, vm_offset_t addr) From nobody Wed Apr 2 20:47:22 2025 X-Original-To: dev-commits-src-main@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 4ZScPR0j9Mz5rbhN; Wed, 02 Apr 2025 20:47: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZScPQ5JjRz3bk2; Wed, 02 Apr 2025 20:47:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743626842; 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=9Oav4mU4UUNz9cR/evreoYfX07GbffjAWqNyoKwIKoA=; b=rDuUOnVFzkaXuM+I03/4DGkQ9+Beb+isbDgYbk+yIBT3x1kz+FPslngUk2nTyJXrsYxs4Q WmGUiOh/W4BQVRcJJ0Zp+6HQCvOKwuZZAoOv7Irt1YAeEBHnFeCLvSeG+M+H7G3ZeBxcwN ihBPL++Nf+fytpnPPF+dO5ayk5wHZudJnfubl2fXNVxoWbCISGaBd7nByeiUXoivjJVw2X HY7bjkZRTaKhGQVjKQYVh4Gu209kdU8jpPPX/PXBhk5JxmoLkcTGc3FXjmcWFqTR5VoOEX x4AXjrf4Slx1a3UE9Ity3qEJMZxYiAzEzW9gGW0cB32DNRdWJULcF0/4zaT8ow== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743626842; a=rsa-sha256; cv=none; b=OQ5vn2EKtMupErRh9szsTpdmmglzbfPF5I8gej5zC4hB2lIcjxp3BSbnNBRLCCoYPuHVXA Zi4wdz7zPEEpnxSzw+0D0JHxO8A24YHO9vnwyArumpyrmaDw7nkhWnT4TwjLW5MI19Ukfm xxZqARi6cEd47zWldBbchsOTvzx9Fc9/fuylYrCesyujWNyO+NDiUWdEKp78LSvtMt+13X S+TuiQYqjJbh6Xh5AmQEAoiaQrG1n3eaQ8cJuRQFTQ2TlSRYqGl0d2CmZ+tA1SmMISVDUf DqZq87FzWMDvP1G39hDxoxoyHOKuRZrPVIM000/A19mQa8RpZUI8YWVHHcHXXw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743626842; 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=9Oav4mU4UUNz9cR/evreoYfX07GbffjAWqNyoKwIKoA=; b=DebrzJdq9IwdTlmBqX+FTh/kmhZE3XZkVjlnn2jqBGKHvum95czo67POUJzQHLhVhH7hS3 54KIjs/XLzPjl/2ngfoPB//oU0jKVaRwqaUkvcnLdxaIm6tkmGUA7DIFCSUNC6s0cJSr13 TWct40Ntn418wlhFUCbQTweV0d5NXN2WKWX2d/wGV0yFSnN8xKXCRZIyitwwHyp1dLwTOb PqCR1Zi4cRjS37dBtDngL6+X8nRF5+nQVLcpkdj5gS/sLq49zpc7eIyVE5T07elMqFAb07 L+eOXKdG5OwUumx3NtFdOq+or11iO6OWg55+X7Niw19Lk0xi3/+Q33P+sQYQHw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZScPQ4hPWzY2C; Wed, 02 Apr 2025 20:47:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532KlMCP080614; Wed, 2 Apr 2025 20:47:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532KlMGP080611; Wed, 2 Apr 2025 20:47:22 GMT (envelope-from git) Date: Wed, 2 Apr 2025 20:47:22 GMT Message-Id: <202504022047.532KlMGP080611@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 2ec2ba7e232d - main - vfs: Add VFS/syscall support for Solaris style extended attributes List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2ec2ba7e232dd126df0617194fd07be78c7a2ab9 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=2ec2ba7e232dd126df0617194fd07be78c7a2ab9 commit 2ec2ba7e232dd126df0617194fd07be78c7a2ab9 Author: Rick Macklem AuthorDate: 2025-04-02 20:45:14 +0000 Commit: Rick Macklem CommitDate: 2025-04-02 20:45:14 +0000 vfs: Add VFS/syscall support for Solaris style extended attributes Some systems, such as Solaris, represent extended attributes as a set of files in a directory associated with a file object. This allows extended attributes to be acquired/modified via regular file system operations, such as read(2), write(2), lseek(2) and ftruncate(2). Since ZFS already has the capability to do this, this patch allows system calls (and the NFSv4 client/server) such access to extended attributes. This permits handling of large extended attributes and allows the NFSv4 server to provide the service to NFSv4 clients that want it, such as Windows, MacOS and Solaris. The top level syscall change is a new open(2)/openat(2) flag I called O_NAMEDATTR that allows the named attribute directory or any attribute within that directory to be open'd. The patch defines two new v_irflag flags called VIRF_NAMEDDIR and VIRF_NAMEDATTR to indicate that the vnode is for this alternate name space and not a normal file object. The patch also defines flags (OPENNAMED and CREATENAMED) for VOP_LOOKUP() to pass this new case down into VOP_LOOKUP() and MNT_NAMEDATTR for file systems that support named attributes. Most of the code in this patch is to avoid creation of links, symlinks or non-regular file objects in the named attribute directory. It also must avoid using the name cache, since the named attribute directory is associated with the same name as the file object. Man pages updates will be done as separate commits. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D49583 --- sys/kern/vfs_cache.c | 6 +++++- sys/kern/vfs_default.c | 1 + sys/kern/vfs_lookup.c | 1 + sys/kern/vfs_subr.c | 1 + sys/kern/vfs_syscalls.c | 42 ++++++++++++++++++++++++++++++++++++++++++ sys/kern/vfs_vnops.c | 39 ++++++++++++++++++++++++++++++++++++++- sys/sys/fcntl.h | 1 + sys/sys/mount.h | 4 +++- sys/sys/namei.h | 5 +++-- sys/sys/unistd.h | 1 + sys/sys/vnode.h | 9 ++++++--- 11 files changed, 102 insertions(+), 8 deletions(-) diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c index c55e103a1a37..e96724b928a6 100644 --- a/sys/kern/vfs_cache.c +++ b/sys/kern/vfs_cache.c @@ -4461,7 +4461,7 @@ cache_fpl_terminated(struct cache_fpl *fpl) (NC_NOMAKEENTRY | NC_KEEPPOSENTRY | LOCKLEAF | LOCKPARENT | WANTPARENT | \ FAILIFEXISTS | FOLLOW | EMPTYPATH | LOCKSHARED | ISRESTARTED | WILLBEDIR | \ ISOPEN | NOMACCHECK | AUDITVNODE1 | AUDITVNODE2 | NOCAPCHECK | OPENREAD | \ - OPENWRITE | WANTIOCTLCAPS) + OPENWRITE | WANTIOCTLCAPS | OPENNAMED) #define CACHE_FPL_INTERNAL_CN_FLAGS \ (ISDOTDOT | MAKEENTRY | ISLASTCN) @@ -4525,6 +4525,10 @@ cache_can_fplookup(struct cache_fpl *fpl) cache_fpl_aborted_early(fpl); return (false); } + if ((cnp->cn_flags & OPENNAMED) != 0) { + cache_fpl_aborted_early(fpl); + return (false); + } return (true); } diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index 5e6516921002..9f150570945b 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -451,6 +451,7 @@ vop_stdpathconf(struct vop_pathconf_args *ap) case _PC_DEALLOC_PRESENT: case _PC_INF_PRESENT: case _PC_MAC_PRESENT: + case _PC_NAMEDATTR_ENABLED: *ap->a_retval = 0; return (0); default: diff --git a/sys/kern/vfs_lookup.c b/sys/kern/vfs_lookup.c index 290834c10be5..127d068f1fff 100644 --- a/sys/kern/vfs_lookup.c +++ b/sys/kern/vfs_lookup.c @@ -381,6 +381,7 @@ namei_setup(struct nameidata *ndp, struct vnode **dpp, struct pwd **pwdp) error = fgetvp_lookup(ndp, dpp); } if (error == 0 && (*dpp)->v_type != VDIR && + (cnp->cn_flags & OPENNAMED) == 0 && (cnp->cn_pnbuf[0] != '\0' || (cnp->cn_flags & EMPTYPATH) == 0)) error = ENOTDIR; diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 96e8bb765972..c8ccbc18a7fe 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -4774,6 +4774,7 @@ DB_SHOW_COMMAND(mount, db_show_mount) MNT_FLAG(MNT_FORCE); MNT_FLAG(MNT_SNAPSHOT); MNT_FLAG(MNT_BYFSID); + MNT_FLAG(MNT_NAMEDATTR); #undef MNT_FLAG if (mflags != 0) { if (buf[0] != '\0') diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index a6c216d61d8c..7096c4b34d5b 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -1435,6 +1435,10 @@ restart: vput(nd.ni_dvp); vrele(vp); return (EEXIST); + } else if ((vn_irflag_read(nd.ni_dvp) & VIRF_NAMEDDIR) != 0) { + NDFREE_PNBUF(&nd); + vput(nd.ni_dvp); + return (EINVAL); } else { VATTR_NULL(&vattr); vattr.va_mode = (mode & ALLPERMS) & @@ -1543,6 +1547,11 @@ restart: vrele(nd.ni_vp); return (EEXIST); } + if ((vn_irflag_read(nd.ni_dvp) & VIRF_NAMEDDIR) != 0) { + NDFREE_PNBUF(&nd); + vput(nd.ni_dvp); + return (EINVAL); + } if (vn_start_write(nd.ni_dvp, &mp, V_NOWAIT) != 0) { NDFREE_PNBUF(&nd); vput(nd.ni_dvp); @@ -1688,6 +1697,10 @@ kern_linkat_vp(struct thread *td, struct vnode *vp, int fd, const char *path, vrele(vp); return (EPERM); /* POSIX */ } + if ((vn_irflag_read(vp) & (VIRF_NAMEDDIR | VIRF_NAMEDATTR)) != 0) { + vrele(vp); + return (EINVAL); + } NDINIT_ATRIGHTS(&nd, CREATE, LOCKPARENT | AUDITVNODE2 | NOCACHE, segflag, path, fd, &cap_linkat_target_rights); @@ -1829,6 +1842,10 @@ restart: goto out; goto restart; } + if ((vn_irflag_read(nd.ni_dvp) & VIRF_NAMEDDIR) != 0) { + error = EINVAL; + goto out; + } VATTR_NULL(&vattr); vattr.va_mode = ACCESSPERMS &~ td->td_proc->p_pd->pd_cmask; #ifdef MAC @@ -3721,6 +3738,7 @@ kern_renameat(struct thread *td, int oldfd, const char *old, int newfd, struct nameidata fromnd, tond; uint64_t tondflags; int error; + short irflag; again: bwillwrite(); @@ -3773,6 +3791,12 @@ again: return (error); goto again; } + irflag = vn_irflag_read(fvp); + if (((irflag & VIRF_NAMEDATTR) != 0 && tdvp != fromnd.ni_dvp) || + (irflag & VIRF_NAMEDDIR) != 0) { + error = EINVAL; + goto out; + } if (tvp != NULL) { if (fvp->v_type == VDIR && tvp->v_type != VDIR) { error = ENOTDIR; @@ -3892,6 +3916,10 @@ restart: return (error); goto restart; } + if ((vn_irflag_read(nd.ni_dvp) & VIRF_NAMEDDIR) != 0) { + error = EINVAL; + goto out; + } VATTR_NULL(&vattr); vattr.va_type = VDIR; vattr.va_mode = (mode & ACCESSPERMS) &~ td->td_proc->p_pd->pd_cmask; @@ -4629,6 +4657,7 @@ kern_fhopen(struct thread *td, const struct fhandle *u_fhp, int flags) struct file *fp; int fmode, error; int indx; + bool named_attr; error = priv_check(td, PRIV_VFS_FHOPEN); if (error != 0) @@ -4651,6 +4680,19 @@ kern_fhopen(struct thread *td, const struct fhandle *u_fhp, int flags) if (error != 0) return (error); + /* + * Check to see if the file handle refers to a named attribute + * directory or attribute. If it does, the O_NAMEDATTR flag + * must have been specified. + */ + named_attr = (vn_irflag_read(vp) & + (VIRF_NAMEDDIR | VIRF_NAMEDATTR)) != 0; + if ((named_attr && (fmode & O_NAMEDATTR) == 0) || + (!named_attr && (fmode & O_NAMEDATTR) != 0)) { + vput(vp); + return (ENOATTR); + } + error = falloc_noinstall(td, &fp); if (error != 0) { vput(vp); diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 69d8ffcdd5ad..c448d62e9920 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -208,6 +208,11 @@ open2nameif(int fmode, u_int vn_open_flags) res |= OPENREAD; if ((fmode & FWRITE) != 0) res |= OPENWRITE; + if ((fmode & O_NAMEDATTR) != 0) { + res |= OPENNAMED; + if ((fmode & O_CREAT) != 0) + res |= CREATENAMED; + } if ((vn_open_flags & VN_OPEN_NOAUDIT) == 0) res |= AUDITVNODE1; if ((vn_open_flags & VN_OPEN_NOCAPCHECK) != 0) @@ -261,6 +266,19 @@ restart: if ((error = namei(ndp)) != 0) return (error); if (ndp->ni_vp == NULL) { + if ((fmode & O_NAMEDATTR) != 0) { + if ((ndp->ni_dvp->v_mount->mnt_flag & + MNT_NAMEDATTR) == 0) + error = EINVAL; + else if ((vn_irflag_read(ndp->ni_dvp) & + VIRF_NAMEDDIR) == 0) + error = ENOENT; + if (error != 0) { + vp = ndp->ni_dvp; + ndp->ni_dvp = NULL; + goto bad; + } + } VATTR_NULL(vap); vap->va_type = VREG; vap->va_mode = cmode; @@ -315,7 +333,21 @@ restart: error = EEXIST; goto bad; } - if (vp->v_type == VDIR) { + if ((fmode & O_NAMEDATTR) != 0) { + short irflag; + + irflag = vn_irflag_read(vp); + if ((vp->v_mount->mnt_flag & + MNT_NAMEDATTR) == 0 || + ((irflag & VIRF_NAMEDATTR) != 0 && + vp->v_type != VREG)) + error = EINVAL; + else if ((irflag & (VIRF_NAMEDDIR | + VIRF_NAMEDATTR)) == 0) + error = ENOATTR; + if (error != 0) + goto bad; + } else if (vp->v_type == VDIR) { error = EISDIR; goto bad; } @@ -331,6 +363,11 @@ restart: if ((error = namei(ndp)) != 0) return (error); vp = ndp->ni_vp; + if ((fmode & O_NAMEDATTR) != 0 && (vp->v_mount->mnt_flag & + MNT_NAMEDATTR) == 0) { + error = EINVAL; + goto bad; + } } error = vn_open_vnode(vp, fmode, cred, curthread, fp); if (first_open) { diff --git a/sys/sys/fcntl.h b/sys/sys/fcntl.h index 143824558fc2..08aa26fbce02 100644 --- a/sys/sys/fcntl.h +++ b/sys/sys/fcntl.h @@ -140,6 +140,7 @@ typedef __pid_t pid_t; #define O_DSYNC 0x01000000 /* POSIX data sync */ #if __BSD_VISIBLE #define O_EMPTY_PATH 0x02000000 +#define O_NAMEDATTR 0x04000000 /* NFSv4 named attributes */ #endif /* diff --git a/sys/sys/mount.h b/sys/sys/mount.h index 6715c55d7a6d..66822a5aadc2 100644 --- a/sys/sys/mount.h +++ b/sys/sys/mount.h @@ -365,6 +365,7 @@ struct mntoptnames { { MNT_RELOAD, "reload" }, \ { MNT_FORCE, "force" }, \ { MNT_SNAPSHOT, "snapshot" }, \ + { MNT_NAMEDATTR, "named attributes" }, \ { 0, NULL } #endif @@ -390,6 +391,7 @@ struct mntoptnames { #define MNT_SUJ 0x0000000100000000ULL /* using journaled soft updates */ #define MNT_AUTOMOUNTED 0x0000000200000000ULL /* mounted by automountd(8) */ #define MNT_UNTRUSTED 0x0000000800000000ULL /* filesys metadata untrusted */ +#define MNT_NAMEDATTR 0x0000020000000000ULL /* named attributes enabled */ /* * NFS export related mount flags. @@ -429,7 +431,7 @@ struct mntoptnames { MNT_IGNORE | MNT_EXPUBLIC | MNT_NOSYMFOLLOW | \ MNT_GJOURNAL | MNT_MULTILABEL | MNT_ACLS | \ MNT_NFS4ACLS | MNT_AUTOMOUNTED | MNT_VERIFIED | \ - MNT_UNTRUSTED) + MNT_UNTRUSTED | MNT_NAMEDATTR) /* Mask of flags that can be updated. */ #define MNT_UPDATEMASK (MNT_NOSUID | MNT_NOEXEC | \ diff --git a/sys/sys/namei.h b/sys/sys/namei.h index 1416ff983f32..20c4f4c34dc0 100644 --- a/sys/sys/namei.h +++ b/sys/sys/namei.h @@ -172,14 +172,15 @@ int cache_fplookup(struct nameidata *ndp, enum cache_fpl_status *status, #define OPENREAD 0x00200000 /* open for reading */ #define OPENWRITE 0x00400000 /* open for writing */ #define WANTIOCTLCAPS 0x00800000 /* leave ioctl caps for the caller */ -/* UNUSED 0x01000000 */ +#define OPENNAMED 0x01000000 /* opening a named attribute (dir) */ #define NOEXECCHECK 0x02000000 /* do not perform exec check on dir */ #define MAKEENTRY 0x04000000 /* entry is to be added to name cache */ #define ISSYMLINK 0x08000000 /* symlink needs interpretation */ #define ISLASTCN 0x10000000 /* this is last component of pathname */ #define ISDOTDOT 0x20000000 /* current component name is .. */ #define TRAILINGSLASH 0x40000000 /* path ended in a slash */ -#define PARAMASK 0x7ffffe00 /* mask of parameter descriptors */ +#define CREATENAMED 0x80000000 /* create a named attribute dir */ +#define PARAMASK 0xfffffe00 /* mask of parameter descriptors */ /* * Flags which must not be passed in by callers. diff --git a/sys/sys/unistd.h b/sys/sys/unistd.h index 096d3444f997..59cef241754a 100644 --- a/sys/sys/unistd.h +++ b/sys/sys/unistd.h @@ -154,6 +154,7 @@ #define _PC_MAC_PRESENT 63 #define _PC_ACL_NFS4 64 #define _PC_DEALLOC_PRESENT 65 +#define _PC_NAMEDATTR_ENABLED 66 #endif /* From OpenSolaris, used by SEEK_DATA/SEEK_HOLE. */ diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 00f8a1eabc4e..e1b30977f4bd 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -246,6 +246,8 @@ _Static_assert(sizeof(struct vnode) <= 448, "vnode size crosses 448 bytes"); #define VIRF_MOUNTPOINT 0x0004 /* This vnode is mounted on */ #define VIRF_TEXT_REF 0x0008 /* Executable mappings ref the vnode */ #define VIRF_CROSSMP 0x0010 /* Cross-mp vnode, no locking */ +#define VIRF_NAMEDDIR 0x0020 /* Named attribute directory */ +#define VIRF_NAMEDATTR 0x0040 /* Named attribute */ #define VI_UNUSED0 0x0001 /* unused */ #define VI_MOUNT 0x0002 /* Mount in progress */ @@ -305,9 +307,10 @@ struct vattr { /* * Flags for va_vaflags. */ -#define VA_UTIMES_NULL 0x01 /* utimes argument was NULL */ -#define VA_EXCLUSIVE 0x02 /* exclusive create request */ -#define VA_SYNC 0x04 /* O_SYNC truncation */ +#define VA_UTIMES_NULL 0x01 /* utimes argument was NULL */ +#define VA_EXCLUSIVE 0x02 /* exclusive create request */ +#define VA_SYNC 0x04 /* O_SYNC truncation */ +#define VA_NAMEDATTR_TYPE 0x08 /* vnode is for named attribute */ /* * Flags for ioflag. (high 16 bits used to ask for read-ahead and From nobody Wed Apr 2 21:18:45 2025 X-Original-To: dev-commits-src-main@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 4ZSd5f2QlQz5rtVK; Wed, 02 Apr 2025 21:18: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSd5d6f86z3j0y; Wed, 02 Apr 2025 21:18:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743628725; 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=q6J+ce+O/ztJ0oBXl41/r0z1ZDmkFF+HgEBMef3Db+o=; b=KZiPbds1sLvYT4jGQuilXymz9iW15oPlT7QSi5NxTet+JP4yKJ5jcwusdA5YlOmrajUxCJ TAe7MSWZ0JA2h0xTGC/dXeWtdrJwoupdY/gapbo65ROqe5jHk/tPzsmkAWEN6ZPftGHxfD j+jT3WQ1FwtsZdFfeyv8jI28btLLdgADW5IWk/DrlfY/kZg9VdCxXIilakmORsRc5JKtU+ axkdjkXHCmoZ4F4H0gxXTLLjWIwUQwm1hYCV+4/tLPgu3ZIQbJ2PxonyLbdjB9L6juexxl IvSBS0XtV9048MsYYOfGnTVaLydxe27tLXP9pt7ZF+FV+TMqC8EupmiXAyR2GA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743628725; a=rsa-sha256; cv=none; b=JiGeA2O1041aUZ28Lcc8UUXCXMZYsNRpaIY5wsSztEnc6s6Oi0xfyu0WrHBy/UcPwz+SFB bkp9VdHVS4LIESWthSY9Z47/vMWH49sZg7RAbPa8pnk4YIu3xt5UgqVesqLqjSGxnqgYpS Gjyhr3i0y/5H0EQEatsw8ZLvEkkeY/5rPPs36qcZ4jRxicM+tcmrlt1Ph+gsuCORAkjRZ9 r7aZ2oklHjBMZ7Idxm4V0+ZNio/s6s/zu0dJ66er65swfRr7ROE4HG5WhsnSMJ7Y3ehxv+ jjl0Tw1huhFErhm7j/IiqjcL32XTK2987NtVa2ghhZxzABQp8IK8laZwIkqrGg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743628725; 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=q6J+ce+O/ztJ0oBXl41/r0z1ZDmkFF+HgEBMef3Db+o=; b=ynipGP+aRMz3ReZSXZRjwsdtKfad+R6+BTtQX2u8Gft7u5GvSHJ4WwSP3UYW8fv91oy+T5 U9YrE3A5kihFDff6416f9gf+55uHNyufDMcH3cSlBrgT+ZTb0D7WIXa2T+jO15KNF2mUg5 RMxxlgvLMdXi6zbbNluEUMDhWQAMpkkuM2LWFyfNP+/JZdesAM+t753L0faYctvh2myS3t Y+tWYjvWCRD+DFSMbssLk6Y0W8wMqG8e1NGTbPucetnpzOeKeDHZ6qcsDfaDuOa3eQvs/Q huP863fl36or1Nxi92PshK8QwNf2WvbIJDFpFC2NPdQKT/mV8+C4Bu9FZtHqYQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSd5d6FfGzYyH; Wed, 02 Apr 2025 21:18:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532LIjOw038105; Wed, 2 Apr 2025 21:18:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532LIjLI038102; Wed, 2 Apr 2025 21:18:45 GMT (envelope-from git) Date: Wed, 2 Apr 2025 21:18:45 GMT Message-Id: <202504022118.532LIjLI038102@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 6441407b297e - main - vnode.h: Delete VA_NAMEDATTR_TYPE List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6441407b297eb4a449b8e66632dd3ba56a412ff1 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=6441407b297eb4a449b8e66632dd3ba56a412ff1 commit 6441407b297eb4a449b8e66632dd3ba56a412ff1 Author: Rick Macklem AuthorDate: 2025-04-02 21:17:18 +0000 Commit: Rick Macklem CommitDate: 2025-04-02 21:17:18 +0000 vnode.h: Delete VA_NAMEDATTR_TYPE Commit 2ec2ba7e232d added a new va_vaflags called VA_NAMEDATTR_TYPE. This is not needed, since a new flag will be committed by D49651 when it is committed. This patch reverts the definition of this flag value. Discussed with: kib --- sys/sys/vnode.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index e1b30977f4bd..8b4ac2031cf2 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -307,10 +307,9 @@ struct vattr { /* * Flags for va_vaflags. */ -#define VA_UTIMES_NULL 0x01 /* utimes argument was NULL */ -#define VA_EXCLUSIVE 0x02 /* exclusive create request */ -#define VA_SYNC 0x04 /* O_SYNC truncation */ -#define VA_NAMEDATTR_TYPE 0x08 /* vnode is for named attribute */ +#define VA_UTIMES_NULL 0x01 /* utimes argument was NULL */ +#define VA_EXCLUSIVE 0x02 /* exclusive create request */ +#define VA_SYNC 0x04 /* O_SYNC truncation */ /* * Flags for ioflag. (high 16 bits used to ask for read-ahead and From nobody Wed Apr 2 21:54:40 2025 X-Original-To: dev-commits-src-main@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 4ZSdv41tbVz5rxBB; Wed, 02 Apr 2025 21:54: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSdv41GXLz3qLL; Wed, 02 Apr 2025 21:54:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743630880; 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=7VZhvWFG4I9YU2LkxkdyfuxBZoAvE3yuIJRpgh3wSQ4=; b=HbdPhWDlU8YlOBA7MzLtzkSII7kYSMkuTtWR6K00OfAvNlEYm4IcX98MG8zv4GzFWpn1Sw qd06ubGFEwNkkfokev8uuwDohgMj/WRRq2K4vC1i+iN+HC6PyePV8cSK2iRNkcNAuUmkpD POxW57Xz2Vl3Bwp/tqF9z9p8iSdhUvZpxDW/Kby3FEa0/RiYPRe6t5uhzdg2g+0ZLqJw23 xfbdOMmZuW/NfBDKk4YWvhivKm2DwYB2YYNVXDumKl557P+VW9GurIyRQGUQT58MB1/5ht 62k1gbG//Dd0ZmeIvEZLiuNSwTMCIs3qmd3++a+ovR7zXR4dmP4NVTt9Gi2itA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743630880; a=rsa-sha256; cv=none; b=unxPGbDuFtu0lAFIIq5JeFdkF2Jau690NtqQyfTxgzlb+k1qms9mQYyO+jpNlYdSxXu96Z yBgbGFdwvOiMlEiqhUDKzaMAffxDTfXw3jWitftW3GUT+bEqLz8CpkUGVuY4i/VtHpR3Kh 0MUGxcBjnFMIlMpRxLTkjj/ZInZ4z8zxBvVCivgiGpd0H6EiKXUuDub3NM37HMPXbHTttV zIc9tBFkBD87Uh/8aSoXu4q0wYprLRT1H90G4tRGsgR/Xr/XU/f0pCnVfaku6qIPg1QHhU Uyj901tapvKGoycbmKEJ46V7cRDOPKSaXarShjSNrvV9ItuLqBKxru741/0/cQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743630880; 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=7VZhvWFG4I9YU2LkxkdyfuxBZoAvE3yuIJRpgh3wSQ4=; b=kBuBSMoY2WRWG/s9PG/TulCD3DIFVoGFi6/4i6DJl+n26DZCi+y/Pk19J1x87ZDCaw7ZGm Ct04498NrMQ5R8DaHUqJOio3pt4R56Gl2HI0nhzjNsk02nkIwmMoMqp02725cDd8TLf5H9 5T+7nmoAsNdN9th3hCDO3Ysio+BTZjNlejTSQY9pYGwbffomiR1E1GNEduCzx8GsFfDqg6 7IPQpcYY+3beIT291RKG4XTDVgsoBJME2vmILRYJdltTtsGH1zEIuKCTHto1M0ld4U4G2r kouSKxOLQBthqnhLW7rvOTVdlMhpde38f6rgkiwc3yfFtKUkCWE/jwdPrK/v4Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSdv40ssPzb44; Wed, 02 Apr 2025 21:54:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 532Lsepm010055; Wed, 2 Apr 2025 21:54:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532LseGA010052; Wed, 2 Apr 2025 21:54:40 GMT (envelope-from git) Date: Wed, 2 Apr 2025 21:54:40 GMT Message-Id: <202504022154.532LseGA010052@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: d0b59c4d3a09 - main - kern_mkdirat(): unconditionally provide the out label List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: d0b59c4d3a091a7a3cf589dead8dddafe00703f7 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=d0b59c4d3a091a7a3cf589dead8dddafe00703f7 commit d0b59c4d3a091a7a3cf589dead8dddafe00703f7 Author: Konstantin Belousov AuthorDate: 2025-04-02 21:53:14 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-02 21:54:23 +0000 kern_mkdirat(): unconditionally provide the out label Needed for the MAC-less kernel configs. Fixes: 2ec2ba7e232dd126df0617194fd07be78c7a2ab9 Sponsored by: The FreeBSD Foundation --- sys/kern/vfs_syscalls.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 7096c4b34d5b..1a3400a87eeb 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -3930,9 +3930,7 @@ restart: goto out; #endif error = VOP_MKDIR(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); -#ifdef MAC out: -#endif NDFREE_PNBUF(&nd); VOP_VPUT_PAIR(nd.ni_dvp, error == 0 ? &nd.ni_vp : NULL, true); vn_finished_write(mp); From nobody Thu Apr 3 00:52:03 2025 X-Original-To: dev-commits-src-main@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 4ZSjr3511Yz5s9RD; Thu, 03 Apr 2025 00:52:19 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSjr24kTQz3L5P; Thu, 03 Apr 2025 00:52:18 +0000 (UTC) (envelope-from kostikbel@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=gmail.com (policy=none); spf=softfail (mx1.freebsd.org: 2001:470:d5e7:1::1 is neither permitted nor denied by domain of kostikbel@gmail.com) smtp.mailfrom=kostikbel@gmail.com Received: from tom.home (kib@localhost [127.0.0.1] (may be forged)) by kib.kiev.ua (8.18.1/8.18.1) with ESMTP id 5330q3F6047267; Thu, 3 Apr 2025 03:52:06 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 5330q3F6047267 Received: (from kostik@localhost) by tom.home (8.18.1/8.18.1/Submit) id 5330q31E047266; Thu, 3 Apr 2025 03:52:03 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Thu, 3 Apr 2025 03:52:03 +0300 From: Konstantin Belousov To: Navdeep Parhar Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 011e3d0b8b90 - main - cxgbe(4): Perform Conventional Reset instead of FLR on the device. Message-ID: References: <202503160235.52G2ZIgC026408@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <202503160235.52G2ZIgC026408@gitrepo.freebsd.org> X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on tom.home X-Spamd-Result: default: False [-0.32 / 15.00]; NEURAL_SPAM_MEDIUM(1.00)[1.000]; NEURAL_HAM_LONG(-0.85)[-0.849]; NEURAL_HAM_SHORT(-0.47)[-0.465]; DMARC_POLICY_SOFTFAIL(0.10)[gmail.com : No valid SPF, No valid DKIM,none]; MIME_GOOD(-0.10)[text/plain]; ARC_NA(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; TO_DN_SOME(0.00)[]; MISSING_XM_UA(0.00)[]; R_DKIM_NA(0.00)[]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org,dev-commits-src-main@freebsd.org]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; R_SPF_SOFTFAIL(0.00)[~all]; RCVD_TLS_LAST(0.00)[]; HAS_XAW(0.00)[] X-Rspamd-Queue-Id: 4ZSjr24kTQz3L5P X-Spamd-Bar: / On Sun, Mar 16, 2025 at 02:35:18AM +0000, Navdeep Parhar wrote: > The branch main has been updated by np: > > URL: https://cgit.FreeBSD.org/src/commit/?id=011e3d0b8b90a4330f14b2cb7da45ed7b805ed10 > > commit 011e3d0b8b90a4330f14b2cb7da45ed7b805ed10 > Author: Navdeep Parhar > AuthorDate: 2024-12-07 08:00:49 +0000 > Commit: Navdeep Parhar > CommitDate: 2025-03-16 01:16:42 +0000 > > cxgbe(4): Perform Conventional Reset instead of FLR on the device. > > The driver uses bus_reset_child on its parent to reset itself but that > performs an FLR whereas the hardware needs a Conventional Reset[1] for > full re-initialization. Add routines that perform conventional hot > reset and use them instead. The available reset mechanisms are: > * PCIe secondary bus reset (default) > * PCIe link bounce > > hw.cxgbe.reset_method can be used to override the default. The internal > PL_RST is also available but is for testing only. > > [1] 6.6.1 in PCI Express® Base Specification 5.0 version 1.0 > > MFC after: 1 month > Sponsored by: Chelsio Communications > --- > sys/dev/cxgbe/t4_main.c | 137 +++++++++++++++++++++++++++++++++++++++++------- > 1 file changed, 118 insertions(+), 19 deletions(-) > > diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c > index 6ee839151db0..20df6a97aa87 100644 > --- a/sys/dev/cxgbe/t4_main.c > +++ b/sys/dev/cxgbe/t4_main.c > @@ -633,6 +633,10 @@ static int t4_reset_on_fatal_err = 0; > SYSCTL_INT(_hw_cxgbe, OID_AUTO, reset_on_fatal_err, CTLFLAG_RWTUN, > &t4_reset_on_fatal_err, 0, "reset adapter on fatal errors"); > > +static int t4_reset_method = 1; > +SYSCTL_INT(_hw_cxgbe, OID_AUTO, reset_method, CTLFLAG_RWTUN, &t4_reset_method, > + 0, "reset method: 0 = PL_RST, 1 = PCIe secondary bus reset, 2 = PCIe link bounce"); > + > static int t4_clock_gate_on_suspend = 0; > SYSCTL_INT(_hw_cxgbe, OID_AUTO, clock_gate_on_suspend, CTLFLAG_RWTUN, > &t4_clock_gate_on_suspend, 0, "gate the clock on suspend"); > @@ -2535,40 +2539,135 @@ t4_reset_post(device_t dev, device_t child) > return (0); > } > > -static int > -reset_adapter_with_pci_bus_reset(struct adapter *sc) > -{ > - int rc; > - > - mtx_lock(&Giant); > - rc = BUS_RESET_CHILD(device_get_parent(sc->dev), sc->dev, 0); > - mtx_unlock(&Giant); > - return (rc); > -} > - > static int > reset_adapter_with_pl_rst(struct adapter *sc) > { > - suspend_adapter(sc); > - > /* This is a t4_write_reg without the hw_off_limits check. */ > MPASS(sc->error_flags & HW_OFF_LIMITS); > bus_space_write_4(sc->bt, sc->bh, A_PL_RST, > F_PIORSTMODE | F_PIORST | F_AUTOPCIEPAUSE); > pause("pl_rst", 1 * hz); /* Wait 1s for reset */ > + return (0); > +} > > - resume_adapter(sc); > +static int > +reset_adapter_with_pcie_sbr(struct adapter *sc) > +{ > + device_t pdev = device_get_parent(sc->dev); > + device_t gpdev = device_get_parent(pdev); > + device_t *children; > + int rc, i, lcap, lsta, nchildren; > + uint32_t v; > > - return (0); > + rc = pci_find_cap(gpdev, PCIY_EXPRESS, &v); > + if (rc != 0) { > + CH_ERR(sc, "%s: pci_find_cap(%s, pcie) failed: %d\n", __func__, > + device_get_nameunit(gpdev), rc); > + return (ENOTSUP); > + } > + lcap = v + PCIER_LINK_CAP; > + lsta = v + PCIER_LINK_STA; > + > + nchildren = 0; > + device_get_children(pdev, &children, &nchildren); > + for (i = 0; i < nchildren; i++) > + pci_save_state(children[i]); > + v = pci_read_config(gpdev, PCIR_BRIDGECTL_1, 2); > + pci_write_config(gpdev, PCIR_BRIDGECTL_1, v | PCIB_BCR_SECBUS_RESET, 2); > + pause("pcie_sbr1", hz / 10); /* 100ms */ > + pci_write_config(gpdev, PCIR_BRIDGECTL_1, v, 2); > + pause("pcie_sbr2", hz); /* Wait 1s before restore_state. */ > + v = pci_read_config(gpdev, lsta, 2); > + if (pci_read_config(gpdev, lcap, 2) & PCIEM_LINK_CAP_DL_ACTIVE) > + rc = v & PCIEM_LINK_STA_DL_ACTIVE ? 0 : ETIMEDOUT; > + else if (v & (PCIEM_LINK_STA_TRAINING_ERROR | PCIEM_LINK_STA_TRAINING)) > + rc = ETIMEDOUT; > + else > + rc = 0; > + if (rc != 0) > + CH_ERR(sc, "%s: PCIe link is down after reset, LINK_STA 0x%x\n", > + __func__, v); > + else { > + for (i = 0; i < nchildren; i++) > + pci_restore_state(children[i]); > + } > + free(children, M_TEMP); > + > + return (rc); > +} > + > +static int > +reset_adapter_with_pcie_link_bounce(struct adapter *sc) We already have pcie_link_reset() that is used for BUS_RESET_CHILD() on pcib. See e.g. mlx5_core/mlx5_fwdump.c::mlx5_fw_reset() for its use. We needed exactly link bounce for that. From nobody Thu Apr 3 01:11:40 2025 X-Original-To: dev-commits-src-main@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 4ZSkGN66cSz5sBx6; Thu, 03 Apr 2025 01:11: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSkGN3GNJz3PHR; Thu, 03 Apr 2025 01:11:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743642700; 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=XL2tajn4w1AstARqBMX7a3iWKiRGMlI7BKJwoov/4dc=; b=mlYLNYd4uaZ8uc3/iP+JOUAEUTryWT89M4RNba9mgNfEnmeopXsY1MK8/67f0K/TX0kKSs J0k4XqMBSucttXMJsvFXKG6DuzBPpqgWzAb1KMCI/8L6EzDQ60EsgW2tZUhL6nFcyMEcGY KKFY1naBaIqYc+PVmLnPDjupWVsDdhGsW0wj48TLi0bevw2J0vjI18xH1tauA09srA+Kw5 I6EgY1Rh6HkibfZHkdO6JHV4EtE+XqT+pVGbS9qgB6X23PufbVxKBYJCQ7mMwTa4422nR8 Cz8/ZHQafpeeHmr4CGbP+hP0yTJ5D25joDy8pMY4K0YOMa0W2yyoVxcgvuznXw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743642700; a=rsa-sha256; cv=none; b=gKxK1mtaEDzckLZb2+/hEFSS05IXQwrdHx9/OanFlKB0rYCAKwmSfsrivybDaUVdyFChBT r4AJ5UBr2bN9MNG9TiJ42FgRu+m6N2sp/F3yvkQM3Xt/tRFMEQsKW6w0y63GncmaNbdMsi QqFPbxEZbA4QeNVwbQfpNLvzp9XBuWkhMlR3KWOBrLw9lm37IRsVvqeNNTdYOyXrfwwO2r 6u3LJDTiya5+3YxJCLg58vjht1nCgTTZF5UdUT8hqtlOgNl4N/Uoz2slcaBg/kLNcGnO/w IKGr7ZVfvLv0/a2M8P90cloidLvd6+2rb+BJDoolDJxpDXW7LwZzgy8JJUjm1w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743642700; 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=XL2tajn4w1AstARqBMX7a3iWKiRGMlI7BKJwoov/4dc=; b=BIQS2sYCcixfv5KGgJ1L0v8+kQKn+vl7mGMDY9ZaNEciZc+U/O3DrxbPJQDlLxM0Ge3HOR h+Aw9yFo+VgHda7Vjf1OOAXXOruxyq8h+V3kkMVO3KQmu6vXjbcCoWvkQ97Pu15F3P7BAD HQNICFzna0v9QY6XpfiAbVjkwuu3uxdTG/kD/ghBxtk0YQtIgkiP6eOEvRqlASZ2BlFnGO Cn0H505F9Hikqtdc6e37Xih4MjcT9U9te/NIw5tyioSpdAxenYAnFCDlLVMy951rTWO9yc /IPRsCzYdVW8Q3vuDbihbW4UjXqvJrWz9j/t5vPep4uxOEtuPeYTb0ZujL7eOw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSkGN1vWGzgmF; Thu, 03 Apr 2025 01:11:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5331Besu082345; Thu, 3 Apr 2025 01:11:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5331BeQ0082342; Thu, 3 Apr 2025 01:11:40 GMT (envelope-from git) Date: Thu, 3 Apr 2025 01:11:40 GMT Message-Id: <202504030111.5331BeQ0082342@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 0a91888870e2 - main - arm64: add a GPIO driver for Apple Silicon List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0a91888870e2227d3b3576aaa949764929550b94 Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=0a91888870e2227d3b3576aaa949764929550b94 commit 0a91888870e2227d3b3576aaa949764929550b94 Author: Kyle Evans AuthorDate: 2025-04-03 01:11:26 +0000 Commit: Kyle Evans CommitDate: 2025-04-03 01:11:33 +0000 arm64: add a GPIO driver for Apple Silicon This is a ported version of OpenBSD's work, modulo interrupt functionality. We won't need GPIO interrupts until we start to get closer to audio support, and the existing version is sufficient for, e.g., pcie. Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D49630 --- sys/arm64/apple/apple_pinctrl.c | 469 ++++++++++++++++++++++++++++++++++++++++ sys/conf/files.arm64 | 1 + 2 files changed, 470 insertions(+) diff --git a/sys/arm64/apple/apple_pinctrl.c b/sys/arm64/apple/apple_pinctrl.c new file mode 100644 index 000000000000..ec2dd5907024 --- /dev/null +++ b/sys/arm64/apple/apple_pinctrl.c @@ -0,0 +1,469 @@ +/* $OpenBSD: aplpinctrl.c,v 1.4 2022/04/06 18:59:26 naddy Exp $ */ +/* + * Copyright (c) 2021 Mark Kettenis + * Copyright (c) 2022 Kyle Evans + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include "pic_if.h" +#include "gpio_if.h" + +#define APPLE_PIN(pinmux) ((pinmux) & 0xffff) +#define APPLE_FUNC(pinmux) ((pinmux) >> 16) + +#define GPIO_PIN(pin) ((pin) * 4) +#define GPIO_PIN_GROUP_MASK (7 << 16) +#define GPIO_PIN_INPUT_ENABLE (1 << 9) +#define GPIO_PIN_FUNC_MASK (3 << 5) +#define GPIO_PIN_FUNC_SHIFT 5 +#define GPIO_PIN_MODE_MASK (7 << 1) +#define GPIO_PIN_MODE_INPUT (0 << 1) +#define GPIO_PIN_MODE_OUTPUT (1 << 1) +#define GPIO_PIN_MODE_IRQ_HI (2 << 1) +#define GPIO_PIN_MODE_IRQ_LO (3 << 1) +#define GPIO_PIN_MODE_IRQ_UP (4 << 1) +#define GPIO_PIN_MODE_IRQ_DN (5 << 1) +#define GPIO_PIN_MODE_IRQ_ANY (6 << 1) +#define GPIO_PIN_MODE_IRQ_OFF (7 << 1) +#define GPIO_PIN_DATA (1 << 0) +#define GPIO_IRQ(grp, pin) (0x800 + (grp) * 64 + ((pin) >> 5) * 4) + +#define APPLE_PINCTRL_DEFAULT_CAPS \ + (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT) + +#define HREAD4(sc, reg) \ + bus_read_4((sc)->sc_res[APPLE_PINCTRL_MEMRES], reg) +#define HWRITE4(sc, reg, val) \ + bus_write_4((sc)->sc_res[APPLE_PINCTRL_MEMRES], reg, val) +#define HSET4(sc, reg, bits) \ + HWRITE4((sc), (reg), HREAD4((sc), (reg)) | (bits)) +#define HCLR4(sc, reg, bits) \ + HWRITE4((sc), (reg), HREAD4((sc), (reg)) & ~(bits)) + +struct apple_pinctrl_irqsrc { + struct intr_irqsrc isrc; + int irq; + int type; +}; + +enum { + APPLE_PINCTRL_MEMRES = 0, + APPLE_PINCTRL_IRQRES, + APPLE_PINCTRL_NRES, +}; + +struct apple_pinctrl_softc { + device_t sc_dev; + device_t sc_busdev; + struct mtx sc_mtx; + int sc_ngpios; + + void *sc_intrhand; + struct resource *sc_res[APPLE_PINCTRL_NRES]; + struct apple_pinctrl_irqsrc *sc_irqs; +}; + +#define APPLE_PINCTRL_LOCK(sc) mtx_lock_spin(&(sc)->sc_mtx) +#define APPLE_PINCTRL_UNLOCK(sc) mtx_unlock_spin(&(sc)->sc_mtx) +#define APPLE_PINCTRL_LOCK_ASSERT(sc) mtx_assert(&(sc)->sc_mtx, MA_OWNED) + +static struct ofw_compat_data compat_data[] = { + {"apple,pinctrl", 1}, + {NULL, 0}, +}; + +static struct resource_spec apple_pinctrl_res_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { SYS_RES_IRQ, 0, RF_ACTIVE }, + { -1, 0, 0 }, +}; + +static int apple_pinctrl_probe(device_t dev); +static int apple_pinctrl_attach(device_t dev); +static int apple_pinctrl_detach(device_t dev); + +static int apple_pinctrl_configure(device_t, phandle_t); +static phandle_t apple_pinctrl_get_node(device_t, device_t); + +static int +apple_pinctrl_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Apple Pinmux Controller"); + return (BUS_PROBE_DEFAULT); +} + +static int +apple_pinctrl_attach(device_t dev) +{ + pcell_t gpio_ranges[4]; + phandle_t node; + struct apple_pinctrl_softc *sc; + int error; + + sc = device_get_softc(dev); + sc->sc_dev = dev; + + node = ofw_bus_get_node(dev); + + if (bus_alloc_resources(dev, apple_pinctrl_res_spec, sc->sc_res) != 0) { + device_printf(dev, "cannot allocate device resources\n"); + return (ENXIO); + } + + mtx_init(&sc->sc_mtx, "aapl gpio", "gpio", MTX_SPIN); + + error = OF_getencprop(node, "gpio-ranges", gpio_ranges, + sizeof(gpio_ranges)); + if (error == -1) { + device_printf(dev, "failed to get gpio-ranges\n"); + goto error; + } + + sc->sc_ngpios = gpio_ranges[3]; + if (sc->sc_ngpios == 0) { + device_printf(dev, "no GPIOs\n"); + goto error; + } + + sc->sc_busdev = gpiobus_attach_bus(dev); + if (sc->sc_busdev == NULL) { + device_printf(dev, "failed to attach gpiobus\n"); + goto error; + } + + fdt_pinctrl_register(dev, "pinmux"); + fdt_pinctrl_configure_tree(dev); + + if (!OF_hasprop(node, "interrupt-controller")) + return (0); + + sc->sc_irqs = mallocarray(sc->sc_ngpios, + sizeof(*sc->sc_irqs), M_DEVBUF, M_ZERO | M_WAITOK); + intr_pic_register(dev, OF_xref_from_node(ofw_bus_get_node(dev))); + + return (0); +error: + mtx_destroy(&sc->sc_mtx); + bus_release_resources(dev, apple_pinctrl_res_spec, sc->sc_res); + return (ENXIO); +} + +static int +apple_pinctrl_detach(device_t dev) +{ + + return (EBUSY); +} + +static void +apple_pinctrl_pin_configure(struct apple_pinctrl_softc *sc, uint32_t pin, + uint32_t flags) +{ + uint32_t reg; + + APPLE_PINCTRL_LOCK_ASSERT(sc); + + MPASS(pin < sc->sc_ngpios); + + reg = HREAD4(sc, GPIO_PIN(pin)); + reg &= ~GPIO_PIN_FUNC_MASK; + reg &= ~GPIO_PIN_MODE_MASK; + + if ((flags & GPIO_PIN_PRESET_LOW) != 0) + reg &= ~GPIO_PIN_DATA; + else if ((flags & GPIO_PIN_PRESET_HIGH) != 0) + reg |= GPIO_PIN_DATA; + + if ((flags & GPIO_PIN_INPUT) != 0) + reg |= GPIO_PIN_MODE_INPUT; + else if ((flags & GPIO_PIN_OUTPUT) != 0) + reg |= GPIO_PIN_MODE_OUTPUT; + + HWRITE4(sc, GPIO_PIN(pin), reg); +} + +static device_t +apple_pinctrl_get_bus(device_t dev) +{ + struct apple_pinctrl_softc *sc; + + sc = device_get_softc(dev); + return (sc->sc_busdev); +} + +static int +apple_pinctrl_pin_max(device_t dev, int *maxpin) +{ + struct apple_pinctrl_softc *sc; + + sc = device_get_softc(dev); + *maxpin = sc->sc_ngpios - 1; + return (0); +} + +static int +apple_pinctrl_pin_getname(device_t dev, uint32_t pin, char *name) +{ + struct apple_pinctrl_softc *sc; + + sc = device_get_softc(dev); + if (pin >= sc->sc_ngpios) + return (EINVAL); + + snprintf(name, GPIOMAXNAME - 1, "gpio%c%d", + device_get_unit(dev) + 'a', pin); + + return (0); +} + +static int +apple_pinctrl_pin_getflags(device_t dev, uint32_t pin, uint32_t *flags) +{ + struct apple_pinctrl_softc *sc; + uint32_t reg; + + sc = device_get_softc(dev); + if (pin >= sc->sc_ngpios) + return (EINVAL); + + *flags = 0; + + APPLE_PINCTRL_LOCK(sc); + + reg = HREAD4(sc, GPIO_PIN(pin)); + if ((reg & GPIO_PIN_MODE_INPUT) != 0) + *flags |= GPIO_PIN_INPUT; + else if ((reg & GPIO_PIN_MODE_OUTPUT) != 0) + *flags |= GPIO_PIN_OUTPUT; + + APPLE_PINCTRL_UNLOCK(sc); + + return (0); +} + +static int +apple_pinctrl_pin_getcaps(device_t dev, uint32_t pin, uint32_t *caps) +{ + + *caps = APPLE_PINCTRL_DEFAULT_CAPS; + return (0); +} + +static int +apple_pinctrl_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) +{ + struct apple_pinctrl_softc *sc; + + sc = device_get_softc(dev); + if (pin >= sc->sc_ngpios) + return (EINVAL); + + APPLE_PINCTRL_LOCK(sc); + apple_pinctrl_pin_configure(sc, pin, flags); + APPLE_PINCTRL_UNLOCK(sc); + + return (0); +} + +static int +apple_pinctrl_pin_get(device_t dev, uint32_t pin, unsigned int *val) +{ + struct apple_pinctrl_softc *sc; + uint32_t reg; + + sc = device_get_softc(dev); + if (pin >= sc->sc_ngpios) + return (EINVAL); + + APPLE_PINCTRL_LOCK(sc); + reg = HREAD4(sc, GPIO_PIN(pin)); + *val = !!(reg & GPIO_PIN_DATA); + APPLE_PINCTRL_UNLOCK(sc); + + return (0); +} + +static int +apple_pinctrl_pin_set(device_t dev, uint32_t pin, unsigned int value) +{ + struct apple_pinctrl_softc *sc; + + sc = device_get_softc(dev); + if (pin >= sc->sc_ngpios) + return (EINVAL); + + APPLE_PINCTRL_LOCK(sc); + if (value) + HSET4(sc, GPIO_PIN(pin), GPIO_PIN_DATA); + else + HCLR4(sc, GPIO_PIN(pin), GPIO_PIN_DATA); + device_printf(sc->sc_dev, "set pin %d to %x\n", + pin, HREAD4(sc, GPIO_PIN(pin))); + APPLE_PINCTRL_UNLOCK(sc); + return (0); +} + + +static int +apple_pinctrl_pin_toggle(device_t dev, uint32_t pin) +{ + struct apple_pinctrl_softc *sc; + uint32_t reg; + + sc = device_get_softc(dev); + if (pin >= sc->sc_ngpios) + return (EINVAL); + + APPLE_PINCTRL_LOCK(sc); + reg = HREAD4(sc, GPIO_PIN(pin)); + if ((reg & GPIO_PIN_DATA) == 0) + reg |= GPIO_PIN_DATA; + else + reg &= ~GPIO_PIN_DATA; + HWRITE4(sc, GPIO_PIN(pin), reg); + APPLE_PINCTRL_UNLOCK(sc); + return (0); +} + + +static int +apple_pinctrl_pin_config_32(device_t dev, uint32_t first_pin, uint32_t num_pins, + uint32_t *pin_flags) +{ + struct apple_pinctrl_softc *sc; + uint32_t pin; + + sc = device_get_softc(dev); + if (first_pin >= sc->sc_ngpios) + return (EINVAL); + + /* + * The configuration for a bank of pins is scattered among several + * registers; we cannot g'tee to simultaneously change the state of all + * the pins in the flags array. So just loop through the array + * configuring each pin for now. If there was a strong need, it might + * be possible to support some limited simultaneous config, such as + * adjacent groups of 8 pins that line up the same as the config regs. + */ + APPLE_PINCTRL_LOCK(sc); + for (pin = first_pin; pin < num_pins; ++pin) { + if (pin_flags[pin] & (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT)) + apple_pinctrl_pin_configure(sc, pin, pin_flags[pin]); + } + APPLE_PINCTRL_UNLOCK(sc); + + return (0); +} + +static phandle_t +apple_pinctrl_get_node(device_t dev, device_t bus) +{ + + /* GPIO bus */ + return (ofw_bus_get_node(dev)); +} + +static int +apple_pinctrl_configure(device_t dev, phandle_t cfgxref) +{ + struct apple_pinctrl_softc *sc; + pcell_t *pinmux; + phandle_t node; + ssize_t len; + uint32_t reg; + uint16_t pin, func; + int i; + + sc = device_get_softc(dev); + node = OF_node_from_xref(cfgxref); + + len = OF_getencprop_alloc(node, "pinmux", (void **)&pinmux); + if (len <= 0) + return (-1); + + APPLE_PINCTRL_LOCK(sc); + for (i = 0; i < len / sizeof(pcell_t); i++) { + pin = APPLE_PIN(pinmux[i]); + func = APPLE_FUNC(pinmux[i]); + reg = HREAD4(sc, GPIO_PIN(pin)); + reg &= ~GPIO_PIN_FUNC_MASK; + reg |= (func << GPIO_PIN_FUNC_SHIFT) & GPIO_PIN_FUNC_MASK; + HWRITE4(sc, GPIO_PIN(pin), reg); + } + APPLE_PINCTRL_UNLOCK(sc); + + OF_prop_free(pinmux); + return 0; +} + +static device_method_t apple_pinctrl_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, apple_pinctrl_probe), + DEVMETHOD(device_attach, apple_pinctrl_attach), + DEVMETHOD(device_detach, apple_pinctrl_detach), + + /* GPIO protocol */ + DEVMETHOD(gpio_get_bus, apple_pinctrl_get_bus), + DEVMETHOD(gpio_pin_max, apple_pinctrl_pin_max), + DEVMETHOD(gpio_pin_getname, apple_pinctrl_pin_getname), + DEVMETHOD(gpio_pin_getflags, apple_pinctrl_pin_getflags), + DEVMETHOD(gpio_pin_getcaps, apple_pinctrl_pin_getcaps), + DEVMETHOD(gpio_pin_setflags, apple_pinctrl_pin_setflags), + DEVMETHOD(gpio_pin_get, apple_pinctrl_pin_get), + DEVMETHOD(gpio_pin_set, apple_pinctrl_pin_set), + DEVMETHOD(gpio_pin_toggle, apple_pinctrl_pin_toggle), + DEVMETHOD(gpio_pin_config_32, apple_pinctrl_pin_config_32), + + /* ofw_bus interface */ + DEVMETHOD(ofw_bus_get_node, apple_pinctrl_get_node), + + /* fdt_pinctrl interface */ + DEVMETHOD(fdt_pinctrl_configure, apple_pinctrl_configure), + + DEVMETHOD_END +}; + +static driver_t apple_pinctrl_driver = { + "gpio", + apple_pinctrl_methods, + sizeof(struct apple_pinctrl_softc), +}; + +EARLY_DRIVER_MODULE(apple_pinctrl, simplebus, apple_pinctrl_driver, + 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LATE); diff --git a/sys/conf/files.arm64 b/sys/conf/files.arm64 index 74387914043e..901da27e63f2 100644 --- a/sys/conf/files.arm64 +++ b/sys/conf/files.arm64 @@ -547,6 +547,7 @@ arm/annapurna/alpine/alpine_serdes.c optional al_serdes fdt \ # Apple arm64/apple/apple_aic.c optional soc_apple_t8103 fdt +arm64/apple/apple_pinctrl.c optional soc_apple_t8103 fdt arm64/apple/apple_wdog.c optional soc_apple_t8103 fdt arm64/apple/exynos_uart.c optional soc_apple_t8103 fdt From nobody Thu Apr 3 02:27:16 2025 X-Original-To: dev-commits-src-main@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 4ZSlxc75dhz5sJRn; Thu, 03 Apr 2025 02:27: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSlxc6Lbvz3cHH; Thu, 03 Apr 2025 02:27:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743647236; 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=/a2hg2xNhOoWoRyodSjFZs4lTZRsGTCwRcgXHSKAUTw=; b=Er4SyTQFCbBpmfq8wVWBWYDvR7jj8PQVnQwrIipI4bHd0K0WO/eE4HjJBbS7rsWmeE4B9g pNAAmYSAnr5aYcFgfLHa92FdioRXGLZZ7CDViinpZLM/J3R0DXoQ08wpXUm9Zij1+cfsjv 5Uze9M51fOMBtAAUSv33Alsr9tAiQ1cLPYE+FpW0why+KscYUasBqYwZ583vRBgOGw4g/d 9U16ZAtMya+rbL7VtdyP+eL1hqgTY+3BXVnLGlLSM7XAfO9B/8b76g/oarLW+WDcVajDLt MJBU0mVX647k2Q6j+oZ5PRypgKLOAOfrlbGpMnrZxF6quKgybOfr1bPBh4r00g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743647236; a=rsa-sha256; cv=none; b=A2phqOuHcYXTD6l5ybWNTyRGixwMapWiktLx2cQ7xCF6PnUzrho31JVCXXnaNd/1W+cxLA VU3waHlfXYPJkLybkvuhj9bFavav9QespRDc5ZB0XrY3N3qZ43UfVKOm1Nk9eAqp34c777 ijBc7blxFrP5XKVbNCdRL5GqAkpPzSncNynRDFbnCn4gpjyxkOsXSFEjt6m6Bs148h5R14 60zATeLcFJbDWZGjTDQYGYuwL5NqbUpcpuhpohhtA/yBrxyRL4CQTCTE57zy5WpRRvrVkQ JAD3uR3hWaJrhhSwDM8sPPm6UKnOnAuyDJ+XtpeHpyOYAyoz+qNDxbcJ+xTl2A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743647236; 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=/a2hg2xNhOoWoRyodSjFZs4lTZRsGTCwRcgXHSKAUTw=; b=f3U8ZKL5dK8iJH2xlRkuPvx0MbiSHGn3OPiWAH45lvvjjYKNz0ro15qrgglwCPoBJy2UY+ NCdRSL8MczCBI0rhxs1n5oR3CQVcjpTVvHU/D30wQct6tEYKP3jr4senkdP28xMQsua13x eW8DXCi3maUC11Uw6+1xiR3vDGaBrOY8CNK8xK3hZmBWvLCipp5cBH5CHLgw7m99xbwRwq kEpOZvAT3c5C4mfgQ/5zHcqo+z7s1CAx6Qclnrb2+aXtb/iYU7MOW/Ar/MOFoN6irD4gNw ozbMAtpJJfXk66JSVk5JdSv3hh1Sw6RqS6lwIH6ErpQLm6ntXMjKbZVS+RzfFw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSlxc5CW2zjXZ; Thu, 03 Apr 2025 02:27:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5332RGsi014886; Thu, 3 Apr 2025 02:27:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5332RGCb014883; Thu, 3 Apr 2025 02:27:16 GMT (envelope-from git) Date: Thu, 3 Apr 2025 02:27:16 GMT Message-Id: <202504030227.5332RGCb014883@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mitchell Horne Subject: git: b847e406e1df - main - Revert "mccomphy: add support for YT8531" List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: b847e406e1df46a732dab71d324e9dbfa1969447 Auto-Submitted: auto-generated The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=b847e406e1df46a732dab71d324e9dbfa1969447 commit b847e406e1df46a732dab71d324e9dbfa1969447 Author: Mitchell Horne AuthorDate: 2025-04-03 02:22:35 +0000 Commit: Mitchell Horne CommitDate: 2025-04-03 02:26:58 +0000 Revert "mccomphy: add support for YT8531" The new code makes use of FDT/OFW types and interfaces, and obviously fails to build on amd64. Revert to fix. Pointy-hat-to: mhorne This reverts commit e69623451ea62d2c3c76e0d0e775aa3f7317f2eb. --- sys/dev/mii/mcommphy.c | 258 +++++-------------------------------------------- sys/dev/mii/miidevs | 2 - 2 files changed, 25 insertions(+), 235 deletions(-) diff --git a/sys/dev/mii/mcommphy.c b/sys/dev/mii/mcommphy.c index edbed0c66279..a8a16c00bade 100644 --- a/sys/dev/mii/mcommphy.c +++ b/sys/dev/mii/mcommphy.c @@ -1,7 +1,6 @@ /* * Copyright (c) 2022 Jared McNeill * Copyright (c) 2022 Soren Schmidt - * Copyright (c) 2024 Jari Sihvola * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,8 +26,7 @@ */ /* - * Motorcomm YT8511C/YT8511H/YT8531 - * Integrated 10/100/1000 Gigabit Ethernet phy + * Motorcomm YT8511C / YT8511H Integrated 10/100/1000 Gigabit Ethernet phy */ #include @@ -44,16 +42,12 @@ #include #include -#include -#include "miidevs.h" #include "miibus_if.h" -#define MCOMMPHY_YT8511_OUI 0x000000 -#define MCOMMPHY_YT8511_MODEL 0x10 -#define MCOMMPHY_YT8511_REV 0x0a - -#define MCOMMPHY_YT8531_MODEL 0x11 +#define MCOMMPHY_OUI 0x000000 +#define MCOMMPHY_MODEL 0x10 +#define MCOMMPHY_REV 0x0a #define EXT_REG_ADDR 0x1e #define EXT_REG_DATA 0x1f @@ -67,49 +61,9 @@ #define PHY_SLEEP_CONTROL1_REG 0x27 #define PLLON_IN_SLP 0x4000 -/* Registers and values for YT8531 */ -#define YT8531_CHIP_CONFIG 0xa001 -#define RXC_DLY_EN (1 << 8) - -#define YT8531_PAD_DRSTR_CFG 0xa010 -#define PAD_RXC_MASK 0x7 -#define PAD_RXC_SHIFT 13 -#define JH7110_RGMII_RXC_STRENGTH 6 - -#define YT8531_RGMII_CONFIG1 0xa003 -#define RX_DELAY_SEL_SHIFT 10 -#define RX_DELAY_SEL_MASK 0xf -#define RXC_DLY_THRESH 2250 -#define RXC_DLY_ADDON 1900 -#define TX_DELAY_SEL_FE_MASK 0xf -#define TX_DELAY_SEL_FE_SHIFT 4 -#define TX_DELAY_SEL_MASK 0xf -#define TX_DELAY_SEL_SHIFT 0 -#define TX_CLK_SEL (1 << 14) -#define INTERNAL_DLY_DIV 150 - -#define YT8531_SYNCE_CFG 0xa012 -#define EN_SYNC_E (1 << 6) - #define LOWEST_SET_BIT(mask) ((((mask) - 1) & (mask)) ^ (mask)) #define SHIFTIN(x, mask) ((x) * LOWEST_SET_BIT(mask)) -static const struct mii_phydesc mcommphys[] = { - MII_PHY_DESC(MOTORCOMM, YT8511), - MII_PHY_DESC(MOTORCOMM2, YT8531), - MII_PHY_END -}; - -struct mcommphy_softc { - mii_softc_t mii_sc; - device_t dev; - bool tx_10_inv; - bool tx_100_inv; - bool tx_1000_inv; -}; - -static void mcommphy_yt8531_speed_adjustment(struct mii_softc *sc); - static int mcommphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) { @@ -130,16 +84,6 @@ mcommphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) /* Update the media status. */ PHY_STATUS(sc); - /* - * For the needs of JH7110 which has two Ethernet devices with - * different TX inverted configuration depending on speed used - */ - if (sc->mii_mpd_model == MCOMMPHY_YT8531_MODEL && - (sc->mii_media_active != mii->mii_media_active || - sc->mii_media_status != mii->mii_media_status)) { - mcommphy_yt8531_speed_adjustment(sc); - } - /* Callback if something changed. */ mii_phy_update(sc, cmd); @@ -161,22 +105,26 @@ mcommphy_probe(device_t dev) * The YT8511C reports an OUI of 0. Best we can do here is to match * exactly the contents of the PHY identification registers. */ - if (MII_OUI(ma->mii_id1, ma->mii_id2) == MCOMMPHY_YT8511_OUI && - MII_MODEL(ma->mii_id2) == MCOMMPHY_YT8511_MODEL && - MII_REV(ma->mii_id2) == MCOMMPHY_YT8511_REV) { + if (MII_OUI(ma->mii_id1, ma->mii_id2) == MCOMMPHY_OUI && + MII_MODEL(ma->mii_id2) == MCOMMPHY_MODEL && + MII_REV(ma->mii_id2) == MCOMMPHY_REV) { device_set_desc(dev, "Motorcomm YT8511 media interface"); - return (BUS_PROBE_DEFAULT); + return BUS_PROBE_DEFAULT; } - - /* YT8531 follows a conventional procedure */ - return (mii_phy_dev_probe(dev, mcommphys, BUS_PROBE_DEFAULT)); + return (ENXIO); } -static void -mcommphy_yt8511_setup(struct mii_softc *sc) +static int +mcommphy_attach(device_t dev) { + struct mii_softc *sc = device_get_softc(dev); uint16_t oldaddr, data; + mii_phy_dev_attach(dev, MIIF_NOMANPAUSE, &mcommphy_funcs, 0); + + PHY_RESET(sc); + + /* begin chip stuff */ oldaddr = PHY_READ(sc, EXT_REG_ADDR); PHY_WRITE(sc, EXT_REG_ADDR, PHY_CLOCK_GATING_REG); @@ -202,177 +150,21 @@ mcommphy_yt8511_setup(struct mii_softc *sc) PHY_WRITE(sc, EXT_REG_DATA, data); PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); -} - -static void -mcommphy_yt8531_speed_adjustment(struct mii_softc *sc) -{ - struct mcommphy_softc *mcomm_sc = (struct mcommphy_softc *)sc; - struct mii_data *mii = sc->mii_pdata; - bool tx_clk_inv = false; - uint16_t reg, oldaddr; - - switch (IFM_SUBTYPE(mii->mii_media_active)) { - case IFM_1000_T: - tx_clk_inv = mcomm_sc->tx_1000_inv; - break; - case IFM_100_T: - tx_clk_inv = mcomm_sc->tx_100_inv; - break; - case IFM_10_T: - tx_clk_inv = mcomm_sc->tx_10_inv; - break; - } - - oldaddr = PHY_READ(sc, EXT_REG_ADDR); - - PHY_WRITE(sc, EXT_REG_ADDR, YT8531_RGMII_CONFIG1); - reg = PHY_READ(sc, EXT_REG_DATA); - if (tx_clk_inv) - reg |= TX_CLK_SEL; - else - reg &= ~TX_CLK_SEL; - PHY_WRITE(sc, EXT_REG_DATA, reg); - - PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); - - return; -} - -static int -mcommphy_yt8531_setup_delay(struct mii_softc *sc) -{ - struct mcommphy_softc *mcomm_sc = (struct mcommphy_softc *)sc; - mii_fdt_phy_config_t *cfg = mii_fdt_get_config(mcomm_sc->dev); - pcell_t val; - uint16_t reg, oldaddr; - int rx_delay, tx_delay = 0; - bool rxc_dly_en_off = false; - - if (OF_getencprop(cfg->phynode, "rx-internal-delay-ps", &val, - sizeof(val)) > 0) { - if (val <= RXC_DLY_THRESH && val % INTERNAL_DLY_DIV == 0) { - rx_delay = val / INTERNAL_DLY_DIV; - rxc_dly_en_off = true; - } else { - rx_delay = (val - RXC_DLY_ADDON) / INTERNAL_DLY_DIV; - if ((val - RXC_DLY_ADDON) % INTERNAL_DLY_DIV != 0) - return (ENXIO); - } - } - - if (OF_getencprop(cfg->phynode, "tx-internal-delay-ps", &val, - sizeof(val)) > 0) { - tx_delay = val / INTERNAL_DLY_DIV; - if (val % INTERNAL_DLY_DIV != 0) - return (ENXIO); - } - - mii_fdt_free_config(cfg); + /* end chip stuff */ - oldaddr = PHY_READ(sc, EXT_REG_ADDR); - - /* Modifying Chip Config register */ - PHY_WRITE(sc, EXT_REG_ADDR, YT8531_CHIP_CONFIG); - reg = PHY_READ(sc, EXT_REG_DATA); - if (rxc_dly_en_off) - reg &= ~(RXC_DLY_EN); - PHY_WRITE(sc, EXT_REG_DATA, reg); - - /* Modifying RGMII Config1 register */ - PHY_WRITE(sc, EXT_REG_ADDR, YT8531_RGMII_CONFIG1); - reg = PHY_READ(sc, EXT_REG_DATA); - reg &= ~(RX_DELAY_SEL_MASK << RX_DELAY_SEL_SHIFT); - reg |= rx_delay << RX_DELAY_SEL_SHIFT; - reg &= ~(TX_DELAY_SEL_MASK << TX_DELAY_SEL_SHIFT); - reg |= tx_delay << TX_DELAY_SEL_SHIFT; - PHY_WRITE(sc, EXT_REG_DATA, reg); - - PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); - - return (0); -} - -static int -mcommphy_yt8531_setup(struct mii_softc *sc) -{ - struct mcommphy_softc *mcomm_sc = (struct mcommphy_softc *)sc; - mii_fdt_phy_config_t *cfg = mii_fdt_get_config(mcomm_sc->dev); - uint16_t reg, oldaddr; - - if (OF_hasprop(cfg->phynode, "motorcomm,tx-clk-10-inverted")) - mcomm_sc->tx_10_inv = true; - - if (OF_hasprop(cfg->phynode, "motorcomm,tx-clk-100-inverted")) - mcomm_sc->tx_100_inv = true; - - if (OF_hasprop(cfg->phynode, "motorcomm,tx-clk-1000-inverted")) - mcomm_sc->tx_1000_inv = true; - - mii_fdt_free_config(cfg); - - oldaddr = PHY_READ(sc, EXT_REG_ADDR); - - /* Modifying Pad Drive Strength register */ - PHY_WRITE(sc, EXT_REG_ADDR, YT8531_PAD_DRSTR_CFG); - reg = PHY_READ(sc, EXT_REG_DATA); - reg &= ~(PAD_RXC_MASK << PAD_RXC_SHIFT); - reg |= (JH7110_RGMII_RXC_STRENGTH << PAD_RXC_SHIFT); - PHY_WRITE(sc, EXT_REG_DATA, reg); - - /* Modifying SyncE Config register */ - PHY_WRITE(sc, EXT_REG_ADDR, YT8531_SYNCE_CFG); - reg = PHY_READ(sc, EXT_REG_DATA); - reg &= ~(EN_SYNC_E); - PHY_WRITE(sc, EXT_REG_DATA, reg); - - PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); - - if (mcommphy_yt8531_setup_delay(sc) != 0) - return (ENXIO); - - return (0); -} - -static int -mcommphy_attach(device_t dev) -{ - struct mcommphy_softc *mcomm_sc = device_get_softc(dev); - mii_softc_t *mii_sc = &mcomm_sc->mii_sc; - int ret = 0; - - mcomm_sc->dev = dev; - - mii_phy_dev_attach(dev, MIIF_NOMANPAUSE, &mcommphy_funcs, 0); - - PHY_RESET(mii_sc); - - if (mii_sc->mii_mpd_model == MCOMMPHY_YT8511_MODEL) - mcommphy_yt8511_setup(mii_sc); - else if (mii_sc->mii_mpd_model == MCOMMPHY_YT8531_MODEL) - ret = mcommphy_yt8531_setup(mii_sc); - else { - device_printf(dev, "no PHY model detected\n"); - return (ENXIO); - } - if (ret) { - device_printf(dev, "PHY setup failed, error: %d\n", ret); - return (ret); - } - - mii_sc->mii_capabilities = PHY_READ(mii_sc, MII_BMSR) & - mii_sc->mii_capmask; - if (mii_sc->mii_capabilities & BMSR_EXTSTAT) - mii_sc->mii_extcapabilities = PHY_READ(mii_sc, MII_EXTSR); + sc->mii_capabilities = PHY_READ(sc, MII_BMSR) & sc->mii_capmask; + if (sc->mii_capabilities & BMSR_EXTSTAT) + sc->mii_extcapabilities = PHY_READ(sc, MII_EXTSR); device_printf(dev, " "); - mii_phy_add_media(mii_sc); + mii_phy_add_media(sc); printf("\n"); - MIIBUS_MEDIAINIT(mii_sc->mii_dev); + MIIBUS_MEDIAINIT(sc->mii_dev); return (0); } + static device_method_t mcommphy_methods[] = { /* device interface */ DEVMETHOD(device_probe, mcommphy_probe), @@ -385,7 +177,7 @@ static device_method_t mcommphy_methods[] = { static driver_t mcommphy_driver = { "mcommphy", mcommphy_methods, - sizeof(struct mcommphy_softc) + sizeof(struct mii_softc) }; DRIVER_MODULE(mcommphy, miibus, mcommphy_driver, 0, 0); diff --git a/sys/dev/mii/miidevs b/sys/dev/mii/miidevs index 5c10fd0f0224..c8eba403c22d 100644 --- a/sys/dev/mii/miidevs +++ b/sys/dev/mii/miidevs @@ -63,7 +63,6 @@ oui LEVEL1 0x00207b Level 1 oui MARVELL 0x005043 Marvell Semiconductor oui MICREL 0x0010a1 Micrel oui MOTORCOMM 0x000000 Motorcomm -oui MOTORCOMM2 0xc82b5e Motorcomm oui MYSON 0x00c0b4 Myson Technology oui NATSEMI 0x080017 National Semiconductor oui PMCSIERRA 0x00e004 PMC-Sierra @@ -296,7 +295,6 @@ model MICREL KSZ9031 0x0022 Micrel KSZ9031 10/100/1000 PHY /* Motorcomm PHYs */ model MOTORCOMM YT8511 0x010a Motorcomm YT8511 10/100/1000 PHY -model MOTORCOMM2 YT8531 0x0011 Motorcomm YT8531 10/100/1000 PHY /* Myson Technology PHYs */ model xxMYSON MTD972 0x0000 MTD972 10/100 media interface From nobody Thu Apr 3 02:29:00 2025 X-Original-To: dev-commits-src-main@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 4ZSlzf0Hz3z5sJJw; Thu, 03 Apr 2025 02:29:02 +0000 (UTC) (envelope-from mhorne@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSlzd60s0z3cXR; Thu, 03 Apr 2025 02:29:01 +0000 (UTC) (envelope-from mhorne@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743647341; 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=ta07fTwRss2dSoN/5YI56cfTRHhgWdRlel3dhhLyXVU=; b=UW9ij9R/Tw+dhNoymeK0nMBi58EhUgwt5tZVPY+kB0KxugaHiicEZLTYuIvsz6Exx5oEjB 0CdxlF0iLNSmq4FtjQQxZNtgnklls71vhAto50uLLyu/7YiHDdM6ZrkhhqxYIhwyFDh9Ol EK3eSoWe5gaFex1g3K1nKtTU0+ocQeK7gwXIwqM2oqN/MwWBZ2dx4rCkcm82M8Hy4xNN4B tmoPBrJ0GW8vHw8t2kc+PRCNDnnWYqOatLcpUTq/++HBhbvvedyaRN4rSFeWycO03ipS1T VUd++5Ja0OA9PF41BYgmASyhyP3k0TuYLr1x1Nh9CXb3FTsvEROy3L5cTMDgnw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743647341; a=rsa-sha256; cv=none; b=vgF/bMXqzMbVNvq3HLo/GepHbn8vEyf2W10MScq4OKsSiEQzw4hYMhpVUYcMHfgCVmxa7I yhxlYdPEIRILci3A5WwO27exnyl3RQ77Y0wH/BMjjr2pNr/B9xwgVPRh7IHEm/xwnR00y0 rG4FezZjAldajuK7N2CCYyseVnVp9c3Oi+Y/nOT7QpE572AYKRxWQtXcHazjJkGk/3xlN/ ZHFmHiUdaTLNaOBIbu7wD8Gt451o3b5unCYlo68sBeIFAtp+J9gcVUB6ETVJUSlFelz8jG 1Ee1MkpG1fBJUl7staSNvfbGMytCwZAgikRqD0JuzPQn5mVeklMYSyrCNTZNuA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743647341; 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=ta07fTwRss2dSoN/5YI56cfTRHhgWdRlel3dhhLyXVU=; b=wdhwneQMjGisf/+cSgWQMcXqi6J9NUcJyhhvFLBGGMBnPTUK/g/GlxTKucu/oJvoyJIK1n CKd4PgGVOv1+/ndd6aOyHzjmQtCYqKLcFvlNTKstKKMsrAVN875VUiSBN73x0IPeophCDN 68VQmZv5HEo7kVxYBiP1SIL8M5GUNz9puMdOYArfjI9g5JNb/C7qfZUjG4U0r2VyLrLImi kRWiFiLFc8c0Ec88CI/A2YRiM5se2CR6f4wplk8QNPoEi+f20fU3lVACcBTE3fCdt2U/ij W6JnugwYxpJ5reCVcRCBRTQXpte79zLhpqXk3I6sF3ecXPVnGESgQCIOvbBdvA== Received: from [192.168.1.151] (hlfxns018gw-134-41-170-224.dhcp-dynamic.fibreop.ns.bellaliant.net [134.41.170.224]) (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: mhorne) by smtp.freebsd.org (Postfix) with ESMTPSA id 4ZSlzd37Gxz2kZ; Thu, 03 Apr 2025 02:29:01 +0000 (UTC) (envelope-from mhorne@freebsd.org) Message-ID: <0bf8c000-7c4d-4509-814b-e28bdac7dbee@freebsd.org> Date: Wed, 2 Apr 2025 23:29:00 -0300 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: e69623451ea6 - main - mccomphy: add support for YT8531 To: Olivier Certner Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org References: <202504021657.532Gv93w049180@gitrepo.freebsd.org> <2992932.slGk94SIus@ravel> Content-Language: en-CA From: Mitchell Horne In-Reply-To: <2992932.slGk94SIus@ravel> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 4/2/25 16:28, Olivier Certner wrote: > Hi Mitchell, > > This commit is likely the cause of the current build failure on amd64, see: > https://ci.freebsd.org/job/FreeBSD-main-amd64-build/31518/ > > Thanks and regards. > Yes, apparently I did not do my due diligence with this one. Reverted in b847e406e1df. Thanks and apologies! Mitchell From nobody Thu Apr 3 07:07:25 2025 X-Original-To: dev-commits-src-main@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 4ZSt8t0Q2Xz5sdbt; Thu, 03 Apr 2025 07:07: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSt8s6vsmz3K9S; Thu, 03 Apr 2025 07:07:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743664046; 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=PIFPwYQHt4P1QYtT59TAeM9SQ/FuoNCJsOExUEj+1zc=; b=f7cWHR7IkDV0Bo+Os2HpLFqwqvCv2aXrfj/B53OfaBLhnZUxkyIHmbkR4m7y4BH7LtlN/S fPKZsw4ZSEoqq2uH2cgMgal4erE2c1IxY4LbPXb8VGVdeMpVnankKgMajHR+L9J+TUFqLp Lktdb9xqhiH4d8kaT9MkxYEcTX2QC1hWrQiurHQjZDQ7umgIJpMMJgN9vmt6xCUYJP02fP 0aemnQnraMlhpw0+gtfLx47gW98Qg3jsmBCv/k4dsBObaJ8YLsCraNsW4xkLDXQ8UPoyZA IKiAUzwoJ6dnpLmtUgkUiTKLb5ZMGaZkk3cag2TinDN+XxGVjSObsKMYYuIrmA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743664046; a=rsa-sha256; cv=none; b=PqqbkYshPUEY8QeP+wWfTZCcm/hYGTcQGssd/je4nmIedYOJIMkWLytWLk6NQwjkTzMjv1 LYs6IrZfMv7cMj4rbAw/1+u/LU6KtRJlAJNrm3fp+V2NJge6HkPmbf0C8v6Cg3rM7ZYDht 3BJ/iyVbekUEIrBii/PDCWjsXoHQTfu6DZvafmkTYjv/CnPSn5wcXOcBFyGP7MjBxIPGbx F869Qz8hx/vaU8qEYOFFWl3f94KCIQYEa3JhVSDKDZmxMFHNmZXQGPBT7bZz9gmGzBVINg S0a5u82KcflWuhGVhFXW9n5bczHQ5rlyh0pOrtO5Uu74t3JTKEDZNym/oY10EQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743664046; 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=PIFPwYQHt4P1QYtT59TAeM9SQ/FuoNCJsOExUEj+1zc=; b=OgOC5mCXdJeBApxsMlkdGlbFOYHSD2sFBttF+IeNOPTEXE5gQNw484OqS/cR3RRWpGySXh y6bxNuGI+kBrFR1CxeLIJKwLIA8zn+G5HIp1+X8KmbKTZUB0huFyhTlIZlNba1S6BjCMqH BB3EQt1fDhgyOXgR4fPsRK/tPj6wVJSaHBW0CFGiP7ScJA0wCPPgNwfJodEX3NjY4Vt4sd /NLd49cVKosrHuSrTvQSbTvAYBB9KDcEuS/E+Sn2c80LQi3Atn8cQwWv6Chl/lFwczcmxP oGJ/HvNXbjLztpDd86142Eb6i0e2LZJ2vTu1VVbXxCM6RrmngrmlT8TSOQTXBg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSt8s6Qmwzrq6; Thu, 03 Apr 2025 07:07:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 53377Ph9040793; Thu, 3 Apr 2025 07:07:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53377PCW040790; Thu, 3 Apr 2025 07:07:25 GMT (envelope-from git) Date: Thu, 3 Apr 2025 07:07:25 GMT Message-Id: <202504030707.53377PCW040790@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Tom Jones Subject: git: 74a6f2a76b32 - main - iwx: Shorten log code field List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: thj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 74a6f2a76b32e01d05c4ad71897bd3a6831e703e Auto-Submitted: auto-generated The branch main has been updated by thj: URL: https://cgit.FreeBSD.org/src/commit/?id=74a6f2a76b32e01d05c4ad71897bd3a6831e703e commit 74a6f2a76b32e01d05c4ad71897bd3a6831e703e Author: Tom Jones AuthorDate: 2025-04-03 07:06:40 +0000 Commit: Tom Jones CommitDate: 2025-04-03 07:06:40 +0000 iwx: Shorten log code field The widest value used with code is 32 bits, other values are smaller. Reduce this down. Update printfs. This fixes the build on i386. Reviewed by: bapt, emast, kevans, adrian Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D49634 --- sys/dev/iwx/if_iwx_debug.c | 10 +++++----- sys/dev/iwx/if_iwx_debug.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/sys/dev/iwx/if_iwx_debug.c b/sys/dev/iwx/if_iwx_debug.c index 7ce1ea8abe43..6a2bf32ad738 100644 --- a/sys/dev/iwx/if_iwx_debug.c +++ b/sys/dev/iwx/if_iwx_debug.c @@ -126,7 +126,7 @@ iwx_dump_cmd(uint32_t id, void *data, uint16_t len, const char *str, int type) } void -iwx_bbl_add_entry(uint64_t code, int type, int ticks) +iwx_bbl_add_entry(uint32_t code, int type, int ticks) { /* * Compress together repeated notifications, but increment the sequence @@ -162,22 +162,22 @@ iwx_bbl_print_entry(struct iwx_bbl_entry *e) switch(e->type) { case IWX_BBL_PKT_TX: printf("pkt "); - printf("seq %08d\t pkt len %ld", + printf("seq %08d\t pkt len %u", e->seq, e->code); break; printf("pkt dup "); - printf("seq %08d\t dup count %ld", + printf("seq %08d\t dup count %u", e->seq, e->code); break; case IWX_BBL_CMD_TX: printf("tx -> "); - printf("seq %08d\tcode 0x%08lx (%s:%s)", + printf("seq %08d\tcode 0x%08x (%s:%s)", e->seq, e->code, get_label(command_group, group), get_label(get_table(group), opcode)); break; case IWX_BBL_CMD_RX: printf("rx "); - printf("seq %08d\tcode 0x%08lx (%s:%s)", + printf("seq %08d\tcode 0x%08x (%s:%s)", e->seq, e->code, get_label(command_group, group), get_label(get_table(group), opcode)); break; diff --git a/sys/dev/iwx/if_iwx_debug.h b/sys/dev/iwx/if_iwx_debug.h index 7875338ef6b6..80fd3ffa6eed 100644 --- a/sys/dev/iwx/if_iwx_debug.h +++ b/sys/dev/iwx/if_iwx_debug.h @@ -56,7 +56,7 @@ enum { void print_opcode(const char *, int, int, uint32_t); void print_ratenflags(const char *, int , uint32_t , int ); void iwx_dump_cmd(uint32_t , void *, uint16_t, const char *, int); -void iwx_bbl_add_entry(uint64_t, int, int); +void iwx_bbl_add_entry(uint32_t, int, int); void iwx_bbl_print_log(void); #define IWX_BBL_NONE 0x00 @@ -254,7 +254,7 @@ static struct opcode_label phyops_opcodes[] = { struct iwx_bbl_entry { uint8_t type; - uint64_t code; + uint32_t code; uint32_t seq; uint32_t ticks; uint32_t count; From nobody Thu Apr 3 09:21:37 2025 X-Original-To: dev-commits-src-main@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 4ZSx7j3yw7z5snZt; Thu, 03 Apr 2025 09:21: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSx7j2v7dz3Z9Q; Thu, 03 Apr 2025 09:21:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743672097; 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=f3W80gWUNnGx5WGJf5W6ryXsHFej/erAtlclAsuVoKc=; b=nQjfeMcM0hgiubWtOwrKSCijd7GIE3lRRSoQT23EbnEqoAtM9YmUGDnxBj/VDvwHFPl1RB 0njd8ZqBBYITegTGFX5EZByspk/AKRLC40GXZz9Sqhai5zj4TNKpCxMf0o97qY8ATRUxVr CRjGBfP3sONwqJHH6OYCp0Yu63MjZnC59w3IzLKyC12NOvqfv6KnP2l47/DyrE0RK6VLXx 7cejvW2092+nK5Z2JSC7TalsloiQofV7B8Bvr96v55W4iJCgO8e2aG7tbqb99AoKIlkfu+ SCcFpFUYDRnmkzV/drhLXvqWri1q8sucQ5Ng7x12yfnpIBMSC437P5QAHhQeaQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743672097; a=rsa-sha256; cv=none; b=Jvig0NY7GRCfo2KoEapGCv6uKMcW3ZDc8I5ER5Q/JeDp743DP2TIQtLOk5amvuNMpsd/JL JfF48EoSXqB9r/8Cqk6RxcL854ki0HvQAwJy9GnKJnPUlI6QKKgMYwZk9do235Q8sPaEJF 9zYXqfFmRF4l0IJWIwjT5BYZmoiTJBTKQqOw8JMEK6BIF971Yodk3PKHbxNdWS20zkKLw6 hPL9E0t/MlQOhkwZrLx/9+n9K+Io1Spd7GEOTiP2m5j5nGiCNcWBBr8spdz45fB2fr6GE5 TI2jV7ju6Kv8WbJrS9OTzbVXA8tGktdANiDH3CoRwZeqKJKRHv+u3CXCNvvA5A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743672097; 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=f3W80gWUNnGx5WGJf5W6ryXsHFej/erAtlclAsuVoKc=; b=l5XmhJmJ4Emwf32BPbpISFQ7cIMW976D8cJ1AkHWzg4GB/eHb5EiBwc8seVdbTk+YGkBjC Ou/RL25LesLIWmBeI8IuAU2BrviOb5kFS5EyRIWMey6ZH0staIRADAJ0DD3VeM33QXjVEG WNwL6EOHGBdNig3V/mGLTzLenangG1oP5EZjSeYD40I3RtXmob/mDrs+06uPo0xAv0HL7a XGzX1fa9SnGpVZ/5M9cgqqP3f6/iyGuxWmEsyyTZ7dlbLr/6N9/OaACPV6WFT1bQvDaoqt cey/mZ0A72+w6YR2pb/ORddXx85zuOBKosAJclxFiZ7fmSs2sTMu/RqYkr2vEA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSx7j2GC1zvxl; Thu, 03 Apr 2025 09:21:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5339LbjS000307; Thu, 3 Apr 2025 09:21:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5339LblJ000304; Thu, 3 Apr 2025 09:21:37 GMT (envelope-from git) Date: Thu, 3 Apr 2025 09:21:37 GMT Message-Id: <202504030921.5339LblJ000304@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Peter Holm Subject: git: fb7687edea52 - main - stress2: New tests added List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pho X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fb7687edea52ff1ddbae5fe947055fb37bd23ae3 Auto-Submitted: auto-generated The branch main has been updated by pho: URL: https://cgit.FreeBSD.org/src/commit/?id=fb7687edea52ff1ddbae5fe947055fb37bd23ae3 commit fb7687edea52ff1ddbae5fe947055fb37bd23ae3 Author: Peter Holm AuthorDate: 2025-04-03 09:20:41 +0000 Commit: Peter Holm CommitDate: 2025-04-03 09:20:41 +0000 stress2: New tests added --- datamove6.sh | 50 ++++++ ftruncate3.sh | 96 +++++++++++ growfs3.sh | 41 +++++ kcmp.sh | 67 +++++++ marcus8.sh | 41 +++++ mprotect3.sh | 70 ++++++++ mprotect4.sh | 109 ++++++++++++ mprotect5.sh | 118 +++++++++++++ mprotect6.sh | 146 ++++++++++++++++ msdos17.sh | 144 ++++++++++++++++ msdos20.sh | 87 ++++++++++ msdos21.sh | 25 +++ newfs8.sh | 69 ++++++++ nullfs31.sh | 75 ++++++++ nullfs32.sh | 43 +++++ pthread10.sh | 106 ++++++++++++ rangelocks.sh | 194 +++++++++++++++++++++ rangelocks2.sh | 178 +++++++++++++++++++ rename16.sh | 261 ++++++++++++++++++++++++++++ rmdir.sh | 119 +++++++++++++ rsync.sh | 49 ++++++ rsync2.sh | 17 ++ rsync3.sh | 43 +++++ seekhole2.sh | 65 +++++++ syzkaller71.sh | 171 ++++++++++++++++++ syzkaller72.sh | 70 ++++++++ syzkaller73.sh | 537 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 27 files changed, 2991 insertions(+) diff --git a/datamove6.sh b/datamove6.sh new file mode 100755 index 000000000000..88bfea425bdc --- /dev/null +++ b/datamove6.sh @@ -0,0 +1,50 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +# Variation of the datamove.sh, using MSDOSFS + +# No problems seen + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +. ../default.cfg + +here=`pwd` +prog=$(basename "$0" .sh) +cd /tmp +sed '1,/^EOF/d' < $here/datamove.sh > $prog.c +mycc -o $prog -Wall -Wextra -O2 -g $prog.c +rm -f $prog.c + +set -eu +mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint +[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart +mdconfig -a -t swap -s 2g -u $mdstart +newfs_msdos -F 32 -b 8192 /dev/md$mdstart 2> /dev/null +#mount -t msdosfs /dev/md$mdstart $mntpoint +mount_msdosfs -m 777 /dev/md$mdstart $mntpoint +set +e + +$here/../testcases/swap/swap -t 5m -i 100 -h & +for i in `jot 5`; do + su $testuser -c "cd $mntpoint; /tmp/$prog" +done +mv /tmp/$prog $mntpoint +for i in `jot 5`; do + mkdir -p $mntpoint/datamove.dir.$i + cd $mntpoint/datamove.dir.$i + $mntpoint/$prog & +done +pkill swap +wait +while mount | grep -q $mntpoint; do + umount -f $mntpoint > /dev/null 2>&1 +done +mdconfig -d -u $mdstart + +exit 0 diff --git a/ftruncate3.sh b/ftruncate3.sh new file mode 100755 index 000000000000..7373ae8d22a8 --- /dev/null +++ b/ftruncate3.sh @@ -0,0 +1,96 @@ +#!/bin/sh + +# Test scenario from Bug 64816: [nfs] [patch] mmap and/or ftruncate does not work correctly on nfs mounted file systems + +. ../default.cfg + +set -u +grep -q $mntpoint /etc/exports || + { echo "$mntpoint missing from /etc/exports"; exit 0; } +rpcinfo 2>/dev/null | grep -q mountd || exit 0 + +prog=$(basename "$0" .sh) +cat > /tmp/$prog.c < +#include +#include +#include +#include +#include +#include +#include +#include + +void error(char *msg) +{ + fprintf(stderr, "Error: %s\nSystem error %d: %s\n", msg, errno, strerror(errno)); + exit(-1); +} + +#define SZ 1024 // Less than page size + +int main(int argn, char *argv[]) +{ + int fd, s; + char buffer[SZ]; + char *map; + + if (argn!=2) + { + fprintf(stderr, "Usage:\n %s [filename]\n", argv[0]); + _exit(-1); + } + + memset(buffer, 0, SZ); + s = 0; + + fd=open(argv[1], O_RDWR|O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR); + if (fd==-1) + error("Could not create file"); + + if (write(fd, buffer, SZ)!=SZ) + error("Could not write buffer"); + + map=mmap(NULL, SZ, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); + if (map==MAP_FAILED) + error("Map failed"); + map[SZ-1]=1; + + if (ftruncate(fd, SZ+1)!=0) + error("Could not truncate file"); + + if (map[SZ-1]==1) + printf("Test passed\n"); + else { + printf("Test failed\n"); + s = 1; + } + + exit(s); +} +EOF +mycc -o /tmp/$prog -Wall -Wextra -O0 -g /tmp/$prog.c || exit 1 + +mount | grep -q "on $mntpoint " && umount -f $mntpoint +mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart +mdconfig -s 1g -u $mdstart +newfs -n $newfs_flags /dev/md$mdstart > /dev/null +mount /dev/md$mdstart $mntpoint + +mp2=${mntpoint}2 +mkdir -p $mp2 +mount | grep -q "on $mp2 " && umount -f $mp2 +mount -t nfs -o retrycnt=3 127.0.0.1:$mntpoint $mp2 || exit 1 +sleep .2 +mount | grep $mntpoint + +cd $mp2 +/tmp/$prog $prog.data; s=$? +ls -ls $mp2/$prog.data +cd - + +umount $mp2 +umount $mntpoint +mdconfig -d -u $mdstart +rm -f /tmp/$prog /tmp/$prog.c +exit $s diff --git a/growfs3.sh b/growfs3.sh new file mode 100755 index 000000000000..33e8327cdbbc --- /dev/null +++ b/growfs3.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +. ../default.cfg +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +set -eu +prog=$(basename "$0" .sh) +log=/tmp/$prog.log +mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint +[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart +mdconfig -a -t swap -s 32g -u $mdstart +/sbin/gpart create -s GPT md$mdstart > /dev/null +/sbin/gpart add -t freebsd-ufs -s 2g -a 4k md$mdstart > /dev/null +set +e + +newfs_flags=$(echo "-O1" "-O2" "-U" "-j" | awk -v N=`jot -r 1 1 4` '{print $N}') +echo "newfs $newfs_flags md${mdstart}p1" +newfs $newfs_flags md${mdstart}p1 > /dev/null +[ "$newfs_flags" = "-O2" ] && + tunefs -n disable md${mdstart}p1 > /dev/null 2>&1 +mount /dev/md${mdstart}p1 $mntpoint +cp -r /usr/include $mntpoint/inc1 +umount $mntpoint + +gpart resize -i 1 -s 31g -a 4k md$mdstart +growfs -y md${mdstart}p1 > /dev/null + +mount /dev/md${mdstart}p1 $mntpoint +cp -r /usr/include $mntpoint/inc2 +umount $mntpoint +fsck -fy /dev/md${mdstart}p1 > $log 2>&1; s=$? +grep -q "WAS MODIFIED" $log && { cat $log; s=1; } +rm -f $log +mdconfig -d -u $mdstart +exit $s diff --git a/kcmp.sh b/kcmp.sh new file mode 100755 index 000000000000..7c571dd8e8a1 --- /dev/null +++ b/kcmp.sh @@ -0,0 +1,67 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +# Seen: +# UID PID PPID C PRI NI VSZ RSS MWCHAN STAT TT TIME COMMAND +# 0 3730 3668 11 20 0 13596 2904 exithold DE+ 0 1:59.68 ./kcmp + +# Fixed by: 5b3e5c6ce3e5 + +. ../default.cfg + +set -u +prog=$(basename "$0" .sh) +cat > /tmp/$prog.c < + +#include +#include +#include +#include +#include +#include +#include + +static void * +t1(void *data __unused) +{ + for (;;) + pause(); + + return (NULL); +} + +int +main(void) +{ + pid_t p1, p2; + pthread_t tid[2]; + time_t start; + uintptr_t idx1, idx2; + int r; + + if ((r = pthread_create(&tid[0], NULL, t1, NULL)) != 0) + errc(1, r, "pthread_create"); + if ((r = pthread_create(&tid[1], NULL, t1, NULL)) != 0) + errc(1, r, "pthread_create"); + + start = time(NULL); + while (time(NULL) - start < 60) { + idx1 = idx2 = 0; + p1 = arc4random() % 1000000; + p2 = arc4random() % 1000000; + kcmp(p1, p2, KCMP_VM, idx1, idx2); + } +} +EOF +mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1 + +/tmp/$prog + +rm /tmp/$prog.c /tmp/$prog +exit 0 diff --git a/marcus8.sh b/marcus8.sh new file mode 100755 index 000000000000..0c6110c8ec4c --- /dev/null +++ b/marcus8.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +# Run with marcus.cfg on a 5g swap backed MD with UFS non SU fs. +# Check for non empty file system after test. + +. ../default.cfg + +set -u +mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint +mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart +mdconfig -a -t swap -s 4g -u $mdstart +newfs_flags="" # With SU this test runs out of disk space +newfs $newfs_flags md$mdstart > /dev/null +tunefs -n disable md$mdstart # Remove the default SU flag +mount /dev/md$mdstart $mntpoint +chmod 777 $mntpoint + +export runRUNTIME=5m +export CTRLDIR=$mntpoint/stressX.control +export RUNDIR=$mntpoint/stressX + +su $testuser -c 'cd ..; ./run.sh marcus.cfg' + +nb=`find $RUNDIR | wc -l` +[ $nb -gt 1 ] && { find $RUNDIR -ls | head -12; s=1; } || s=0 +n=0 +while mount | grep $mntpoint | grep -q /dev/md; do + umount $mntpoint || sleep 1 + [ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; } +done +checkfs /dev/md$mdstart; s2=$? +mdconfig -d -u $mdstart +exit $((s + s2)) diff --git a/mprotect3.sh b/mprotect3.sh new file mode 100755 index 000000000000..9bd4a6f9be79 --- /dev/null +++ b/mprotect3.sh @@ -0,0 +1,70 @@ +#!/bin/sh + +# Test scenario from: +# Bug 272585 - calling mprotect in an mmap-ed stack can affect non-target pages +# Test scenario by: John F. Carr + +. ../default.cfg +set -u +prog=$(basename "$0" .sh) +cat > /tmp/$prog.c < +#include +#include +#include +#include +#include +#include + +#ifndef MAP_GROWSDOWN +#define MAP_GROWSDOWN 0 +#endif +#ifndef MAP_STACK +#define MAP_STACK 0 +#endif + +int main(void) +{ + long pagesize; + char *addr, *guard; + size_t alloc_size; + + pagesize = sysconf(_SC_PAGESIZE); + if (pagesize < 0) + err(EX_OSERR, "getPAGESIZE"); + + alloc_size = 0x200000 + pagesize; + + addr = mmap(0, alloc_size, PROT_READ|PROT_WRITE, + MAP_GROWSDOWN|MAP_STACK|MAP_PRIVATE|MAP_ANONYMOUS, + -1, 0); + if (addr == MAP_FAILED) { + err(EX_OSERR, "mmap"); + } + + /* Only 0x20 causes a failure. */ + guard = addr + alloc_size - 0x20 * pagesize; + + if (mprotect(guard, pagesize, PROT_NONE)) { + err(EX_OSERR, "mprotect"); + } + + printf("mapped %p..%p, guard at %p\n", addr, addr + alloc_size, guard); + fflush(stdout); + + ((volatile char *)guard)[-1]; + + return 0; +} +EOF +mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c || exit 0 + +cd /tmp +./$prog; s=$? +cd - + +rm -f /tmp/$prog /tmp/$prog.c /tmp/$prog.core +exit $s diff --git a/mprotect4.sh b/mprotect4.sh new file mode 100755 index 000000000000..c233d20852a2 --- /dev/null +++ b/mprotect4.sh @@ -0,0 +1,109 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +. ../default.cfg +set -u +prog=$(basename "$0" .sh) +cat > /tmp/$prog.c < +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static int go, n, ps; +static char *cp; +static volatile char v; + +void * +rd(void *arg __unused) +{ + int i; + + while (go == 0) + usleep(100); + while (go == 1) { + for (i = 0; i < n; i += ps) { + v = cp[i]; + } + pthread_yield(); + } + return(NULL); +} + +void +usage(char *prog) { + fprintf(stderr, "Usage: %s \n", prog); + _exit(1); +} + +int +main(int argc, char *argv[]) +{ + pthread_t *tid; + time_t start; + int e, i, nb; + + if (argc != 2) + usage(argv[0]); + if (sscanf(argv[1], "%d", &n) != 1) + usage(argv[0]); + if (n > 1) + n--; + if ((tid = calloc(n, sizeof(pthread_t *))) == NULL) + err(1, "calloc()"); + + ps = getpagesize(); + cp = mmap(NULL, n * ps, PROT_READ, MAP_PRIVATE | MAP_ANON, -1, 0); + go = 0; + for (i = 0; i < n; i++) { + if ((e = pthread_create(&tid[i], NULL, rd, NULL)) != 0) + errc(1, e, "pthread_create()"); + } + go = 1; + + nb = 0; + start = time(NULL); + while (time(NULL) - start < 120) { + for (i = 0; i < n; i += ps) { + if (mprotect(&cp[i], ps, PROT_READ|PROT_WRITE) == -1) + err(1, "mprotect(PROT_READ)"); + cp[i] = 1; + if (mprotect(&cp[i], ps, PROT_READ) == -1) + err(1, "mprotect(PROT_READ)"); + nb++; + } + } + go = 0; + for (i = 0; i < n; i++) { + if ((e = pthread_join(tid[i], NULL)) != 0) + errc(1, e, "pthread_join() in loop %d", i); + } + if (nb >= 0) { +#if defined(DEBUG) + fprintf(stderr, "%d loops\n", nb); +#endif + ; + } +} +EOF +mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1 + +/tmp/$prog `sysctl -n hw.ncpu`; s=$? + +rm -d /tmp/$prog /tmp/$prog.c +exit $s diff --git a/mprotect5.sh b/mprotect5.sh new file mode 100755 index 000000000000..ab4d2eeee118 --- /dev/null +++ b/mprotect5.sh @@ -0,0 +1,118 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +. ../default.cfg +set -u +prog=$(basename "$0" .sh) +cat > /tmp/$prog.c < +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static pthread_mutex_t write_mutex; +static int go, n, ps; +static char *cp, *wp; + +void * +wr(void *arg __unused) +{ + while (go == 0) + usleep(100); + while (go == 1) { + pthread_mutex_lock(&write_mutex); + if (wp != NULL) + *wp += 1; + pthread_mutex_unlock(&write_mutex); + } + return(NULL); +} + +void +usage(char *prog) { + fprintf(stderr, "Usage: %s \n", prog); + _exit(1); +} + +int +main(int argc, char *argv[]) +{ + pthread_t *tid; + time_t start; + int e, i, nb; + + if (argc != 2) + usage(argv[0]); + if (sscanf(argv[1], "%d", &n) != 1) + usage(argv[0]); + if (n > 1) + n--; + if ((tid = calloc(n, sizeof(pthread_t *))) == NULL) + err(1, "calloc()"); + + ps = getpagesize(); + cp = mmap(NULL, n * ps, PROT_READ, MAP_PRIVATE | MAP_ANON, -1, 0); + pthread_mutex_init(&write_mutex, NULL); + pthread_mutex_lock(&write_mutex); + go = 0; + for (i = 0; i < n; i++) { + if ((e = pthread_create(&tid[i], NULL, wr, NULL)) != 0) + errc(1, e, "pthread_create()"); + } + go = 1; + + nb = 0; + start = time(NULL); + while (time(NULL) - start < 120) { + for (i = 0; i < n; i += ps) { + pthread_mutex_lock(&write_mutex); + if (mprotect(&cp[i], ps, PROT_READ|PROT_WRITE) == -1) + err(1, "mprotect(PROT_READ)"); + cp[i] = 0; + wp = &cp[i]; + pthread_mutex_unlock(&write_mutex); + + usleep(100); + + pthread_mutex_lock(&write_mutex); + if (mprotect(&cp[i], ps, PROT_READ) == -1) + err(1, "mprotect(PROT_READ)"); + wp = NULL; + pthread_mutex_unlock(&write_mutex); + nb++; + } + } + go = 0; + for (i = 0; i < n; i++) { + if ((e = pthread_join(tid[i], NULL)) != 0) + errc(1, e, "pthread_join() in loop %d", i); + } + if (nb >= 0) { +#if defined(DEBUG) + fprintf(stderr, "%d loops\n", nb); +#endif + ; + } +} +EOF +mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1 + +/tmp/$prog `sysctl -n hw.ncpu`; s=$? + +rm -d /tmp/$prog /tmp/$prog.c +exit $s diff --git a/mprotect6.sh b/mprotect6.sh new file mode 100755 index 000000000000..ef1443c216d3 --- /dev/null +++ b/mprotect6.sh @@ -0,0 +1,146 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +. ../default.cfg +set -u +prog=$(basename "$0" .sh) +cat > /tmp/$prog.c < +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static pthread_mutex_t write_mutex; +static volatile int done; +static int go, n, *once, *p, ps; + +static void * +wr(void *arg) +{ + int idx; + + alarm(180); + idx = *(int *)arg; + while (go == 0) + usleep(100); + while (go == 1) { + while (go == 1 && once[idx] == 0) + usleep(100); + if (go == 0) + break; + p[idx]++; + once[idx] = 0; + pthread_mutex_lock(&write_mutex); + done++; + pthread_mutex_unlock(&write_mutex); + } + return(NULL); +} + +static void +setonce(int val) +{ + int i; + + for (i = 0; i < n; i++) + once[i] = val; +} + +static void +usage(char *prog) { + fprintf(stderr, "Usage: %s \n", prog); + _exit(1); +} + +int +main(int argc, char *argv[]) +{ + pthread_t *tid; + time_t start; + int *arg; + int e, i, nb, r; + + if (argc != 2) + usage(argv[0]); + if (sscanf(argv[1], "%d", &n) != 1) + usage(argv[0]); + if (n > 1) + n--; + if ((tid = calloc(n, sizeof(pthread_t *))) == NULL) + err(1, "calloc()"); + if ((once = calloc(n, sizeof(int *))) == NULL) + err(1, "calloc()"); + setonce(0); + + ps = getpagesize(); + p = mmap(NULL, n * ps, PROT_READ, MAP_PRIVATE | MAP_ANON, -1, 0); + go = 0; + pthread_mutex_init(&write_mutex, NULL); + for (i = 0; i < n; i++) { + arg = malloc(sizeof(int)); + *arg = i; + if ((e = pthread_create(&tid[i], NULL, wr, (void *)arg)) != 0) + errc(1, e, "pthread_create()"); + } + go = 1; + + nb = 0; + start = time(NULL); + while (time(NULL) - start < 120) { + if (mprotect(p, n * ps, PROT_READ|PROT_WRITE) == -1) + err(1, "mprotect(PROT_READ)"); + done = 0; + setonce(1); + while (done != n) + usleep(100); + if (mprotect(p, n * ps, PROT_READ) == -1) + err(1, "mprotect(PROT_READ)"); + nb++; + usleep(100); + } + go = 0; + for (i = 0; i < n; i++) { + if ((e = pthread_join(tid[i], NULL)) != 0) + errc(1, e, "pthread_join() in loop %d", i); + } + r = 0; + for (i = 1; i < n; i++) { + if (p[0] != p[i]) + r++; + } + if (r != 0) { + fprintf(stderr, "%d loops.\n", nb); + for (i = 0; i < n; i++) + fprintf(stderr, "p[%3d] = %d\n", i, p[i]); + } + + return (r); +} +EOF +mycc -o /tmp/$prog -Wall -Wextra -O0 -g /tmp/$prog.c -lpthread || exit 1 + +n=`sysctl -n hw.ncpu` +if [ $# -eq 1 ]; then + echo $1 | grep -Eq '^[0-9]+$' && n=$1 +fi +../testcases/swap/swap -t 2m > /dev/null & +sleep 10 +/tmp/$prog $n; s=$? +pkill -9 swap +wait + +rm -d /tmp/$prog /tmp/$prog.c +exit $s diff --git a/msdos17.sh b/msdos17.sh new file mode 100755 index 000000000000..392a9a622b9a --- /dev/null +++ b/msdos17.sh @@ -0,0 +1,144 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +# No problems observed + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +. ../default.cfg + +set -u +prog=$(basename "$0" .sh) +mount | grep -q "on $mntpoint " && umount $mntpoint +[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart + +mdconfig -a -t swap -s 1g -u $mdstart +gpart create -s bsd md$mdstart > /dev/null +gpart add -t freebsd-ufs md$mdstart > /dev/null +part=a +newfs_msdos -F 32 -b 8192 /dev/md${mdstart}$part > /dev/null || exit 1 +mount -t msdosfs /dev/md${mdstart}$part $mntpoint + +here=`pwd` +cd /tmp +cat > $prog.c < +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +static volatile u_int *share; +static char file1[80], file2[80]; + +#define SYNC 0 +#define STOP 1 + +static void +test0(void) +{ + struct stat sb; + + while (share[STOP] == 0) { + while (share[SYNC] != 0) + usleep(100); + if (rename(file1, file2) == -1) + err(1, "rename(%s, %s)", file1, file2); + if (stat(file1, &sb) == 0) + err(1, "stat(%s)", file1); + atomic_add_int(&share[SYNC], 1); + } + + _exit(0); +} + +static void +test1(void) +{ + struct stat sb; + + while (share[STOP] == 0) { + while (share[SYNC] != 1) + usleep(100); + if (rename(file2, file1) == -1) + err(1, "rename(%s, %s)", file2, file1); + if (stat(file2, &sb) == 0) + err(1, "stat(%s)", file2); + atomic_add_int(&share[SYNC], -1); + } + + _exit(0); +} + +int +main(void) +{ + pid_t pids[2]; + size_t len; + int fd; + char cwd[80]; + + len = PAGE_SIZE; + if ((share = mmap(NULL, len, PROT_READ | PROT_WRITE, + MAP_ANON | MAP_SHARED, -1, 0)) == MAP_FAILED) + err(1, "mmap"); + + if (getcwd(cwd, sizeof(cwd)) == NULL) + err(1, "getcwd()"); + snprintf(file1, sizeof(file1), "%s/a.%06d", cwd, getpid()); + snprintf(file2, sizeof(file2), "%s/b.%06d", cwd, getpid()); + if ((fd = open(file1, O_CREAT, 0640)) == -1) + err(1, "open(%s)", file1); + close(fd); + + if ((pids[0] = fork()) == 0) + test0(); + if ((pids[1] = fork()) == 0) + test1(); + + sleep(120); + share[STOP] = 1; + + if (waitpid(pids[0], NULL, 0) == -1) + err(1, "waitpid(%d)", pids[0]); + if (waitpid(pids[1], NULL, 0) == -1) + err(1, "waitpid(%d)", pids[1]); + unlink(file1); + unlink(file2); +} +EOF +mycc -o $prog -Wall $prog.c || exit 1 +rm -f $prog.c +cd $here + +(cd ../testcases/swap; ./swap -t 5m -i 20 -l 100) & +cd $mntpoint +pids="" +for i in `jot 30`; do + /tmp/$prog & + pids="$pids $!" +done +for pid in $pids; do + wait $pid +done +cd $here +while pkill swap; do :; done +wait + +umount $mntpoint +mdconfig -d -u $mdstart +rm -f /tmp/$prog +exit 0 diff --git a/msdos20.sh b/msdos20.sh new file mode 100755 index 000000000000..96c224a629f3 --- /dev/null *** 2207 LINES SKIPPED *** From nobody Thu Apr 3 10:27:12 2025 X-Original-To: dev-commits-src-main@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 4ZSybP1Lrjz5rPBM; Thu, 03 Apr 2025 10:27:13 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSybP0htnz3gmg; Thu, 03 Apr 2025 10:27:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743676033; 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=W2oweZG9CTwRm01hSWoeRG8+fO9Ku72nCVYJ5o5FraQ=; b=pmwe/pbUcLB3Fz5UHzSdBqL2Y8YwvAUOR9bkz1u9MfmvrKDYUOACc54a6FVNvGYZI2KmRq CzSiiVFoxfxQsBmuUGQYSTfYnAGUtUMZHqVMaNEtBgGVybRp+Up1RnLxdn0lPeCvwhFsQQ qYzxxQmD9HTsshwkmqmtaaZUXniB/pGyLbgqQj1f1j7MDxKAhpf7OphrRKdHUpAxbCD4xG BlzelA44LZG0jkbTRWsUWSDHGg+AvHS2AEYj3satFxIcbvFR3yr4AtGNOEHxoWJu8mCoao bdeH6ThEpC3FwvGt3Hi4j6edUFZCDVYs4zzSnKrCKHufiz9koOGIKXtUDgj/rQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743676033; a=rsa-sha256; cv=none; b=DjcF0RFlzgwv20XAkzzyY4SOzxALeyWQ7Fap0QAaDY1Ydjypmf7WaiLWcDTh1edC4OGWa9 qCdlIPWRmhRrG36NMfeqYlqkPvdh0qMVhqjhO5jBi7BxzIdBToVzb21iowclTqD79K4vSj p8LarmFEH0ymVM9DcNKo3o28NzjyRtaWHAfHgRn+nKUlMpRkmM/8OqhqkeSBSJB9ocgYb4 OtiKAhQS7bgR9VyXSaGFfHCTnDRsCi2uffG1O7FLM8idL+BMXZroZ++7Tz3LXcF+BaXd6F NX1jHXiSdsiaMPYam7fLnZpFGJw7+Xg7AAm0/15f+gaQu7hRZD3xe2YgWPg2ZQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743676033; 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=W2oweZG9CTwRm01hSWoeRG8+fO9Ku72nCVYJ5o5FraQ=; b=vLLVFXNsShTZlV6fVApz48zfI+Ap2JQ7xqc82rOszqyVp9Qp7ZSBMleTf492gCl/KxX5oW ugErBcXhrUEIaWANV68135Qe74GxLXh1z3cvIDscBSS/KFcLmktIVf8uDOPBPHnFQwawZS GpUGGTWv3IjJa1r2g6pbwcjAHp00R4nv9rTyD5wRH97f9bCUEZcXEStURIBDdiOJqVBPif dDJJnbPnaasNO+G09gCyshuaA+XgTmMTlMSsPoHIEE17uRX3YItvbct9b0eojlb9UzSDLy JvzhoS5NFIrr47BlIcF90qqv60YIVtOZAlGSrqUURnM1OoVVI7125hGyPIK96w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZSybP0JXYzxW8; Thu, 03 Apr 2025 10:27:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 533ARCEL013820; Thu, 3 Apr 2025 10:27:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533ARCPt013817; Thu, 3 Apr 2025 10:27:12 GMT (envelope-from git) Date: Thu, 3 Apr 2025 10:27:12 GMT Message-Id: <202504031027.533ARCPt013817@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Peter Holm Subject: git: ef777be98543 - main - stress2: Move files to the right directory List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pho X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ef777be98543f7daae90bd123d4fc1ec4a54efc2 Auto-Submitted: auto-generated The branch main has been updated by pho: URL: https://cgit.FreeBSD.org/src/commit/?id=ef777be98543f7daae90bd123d4fc1ec4a54efc2 commit ef777be98543f7daae90bd123d4fc1ec4a54efc2 Author: Peter Holm AuthorDate: 2025-04-03 10:25:31 +0000 Commit: Peter Holm CommitDate: 2025-04-03 10:25:31 +0000 stress2: Move files to the right directory --- datamove6.sh => tools/test/stress2/misc/datamove6.sh | 0 ftruncate3.sh => tools/test/stress2/misc/ftruncate3.sh | 0 growfs3.sh => tools/test/stress2/misc/growfs3.sh | 0 kcmp.sh => tools/test/stress2/misc/kcmp.sh | 0 marcus8.sh => tools/test/stress2/misc/marcus8.sh | 0 mprotect3.sh => tools/test/stress2/misc/mprotect3.sh | 0 mprotect4.sh => tools/test/stress2/misc/mprotect4.sh | 0 mprotect5.sh => tools/test/stress2/misc/mprotect5.sh | 0 mprotect6.sh => tools/test/stress2/misc/mprotect6.sh | 0 msdos17.sh => tools/test/stress2/misc/msdos17.sh | 0 msdos20.sh => tools/test/stress2/misc/msdos20.sh | 0 msdos21.sh => tools/test/stress2/misc/msdos21.sh | 0 newfs8.sh => tools/test/stress2/misc/newfs8.sh | 0 nullfs31.sh => tools/test/stress2/misc/nullfs31.sh | 0 nullfs32.sh => tools/test/stress2/misc/nullfs32.sh | 0 pthread10.sh => tools/test/stress2/misc/pthread10.sh | 0 rangelocks.sh => tools/test/stress2/misc/rangelocks.sh | 0 rangelocks2.sh => tools/test/stress2/misc/rangelocks2.sh | 0 rename16.sh => tools/test/stress2/misc/rename16.sh | 0 rmdir.sh => tools/test/stress2/misc/rmdir.sh | 0 rsync.sh => tools/test/stress2/misc/rsync.sh | 0 rsync2.sh => tools/test/stress2/misc/rsync2.sh | 0 rsync3.sh => tools/test/stress2/misc/rsync3.sh | 0 seekhole2.sh => tools/test/stress2/misc/seekhole2.sh | 0 syzkaller71.sh => tools/test/stress2/misc/syzkaller71.sh | 0 syzkaller72.sh => tools/test/stress2/misc/syzkaller72.sh | 0 syzkaller73.sh => tools/test/stress2/misc/syzkaller73.sh | 0 27 files changed, 0 insertions(+), 0 deletions(-) diff --git a/datamove6.sh b/tools/test/stress2/misc/datamove6.sh similarity index 100% rename from datamove6.sh rename to tools/test/stress2/misc/datamove6.sh diff --git a/ftruncate3.sh b/tools/test/stress2/misc/ftruncate3.sh similarity index 100% rename from ftruncate3.sh rename to tools/test/stress2/misc/ftruncate3.sh diff --git a/growfs3.sh b/tools/test/stress2/misc/growfs3.sh similarity index 100% rename from growfs3.sh rename to tools/test/stress2/misc/growfs3.sh diff --git a/kcmp.sh b/tools/test/stress2/misc/kcmp.sh similarity index 100% rename from kcmp.sh rename to tools/test/stress2/misc/kcmp.sh diff --git a/marcus8.sh b/tools/test/stress2/misc/marcus8.sh similarity index 100% rename from marcus8.sh rename to tools/test/stress2/misc/marcus8.sh diff --git a/mprotect3.sh b/tools/test/stress2/misc/mprotect3.sh similarity index 100% rename from mprotect3.sh rename to tools/test/stress2/misc/mprotect3.sh diff --git a/mprotect4.sh b/tools/test/stress2/misc/mprotect4.sh similarity index 100% rename from mprotect4.sh rename to tools/test/stress2/misc/mprotect4.sh diff --git a/mprotect5.sh b/tools/test/stress2/misc/mprotect5.sh similarity index 100% rename from mprotect5.sh rename to tools/test/stress2/misc/mprotect5.sh diff --git a/mprotect6.sh b/tools/test/stress2/misc/mprotect6.sh similarity index 100% rename from mprotect6.sh rename to tools/test/stress2/misc/mprotect6.sh diff --git a/msdos17.sh b/tools/test/stress2/misc/msdos17.sh similarity index 100% rename from msdos17.sh rename to tools/test/stress2/misc/msdos17.sh diff --git a/msdos20.sh b/tools/test/stress2/misc/msdos20.sh similarity index 100% rename from msdos20.sh rename to tools/test/stress2/misc/msdos20.sh diff --git a/msdos21.sh b/tools/test/stress2/misc/msdos21.sh similarity index 100% rename from msdos21.sh rename to tools/test/stress2/misc/msdos21.sh diff --git a/newfs8.sh b/tools/test/stress2/misc/newfs8.sh similarity index 100% rename from newfs8.sh rename to tools/test/stress2/misc/newfs8.sh diff --git a/nullfs31.sh b/tools/test/stress2/misc/nullfs31.sh similarity index 100% rename from nullfs31.sh rename to tools/test/stress2/misc/nullfs31.sh diff --git a/nullfs32.sh b/tools/test/stress2/misc/nullfs32.sh similarity index 100% rename from nullfs32.sh rename to tools/test/stress2/misc/nullfs32.sh diff --git a/pthread10.sh b/tools/test/stress2/misc/pthread10.sh similarity index 100% rename from pthread10.sh rename to tools/test/stress2/misc/pthread10.sh diff --git a/rangelocks.sh b/tools/test/stress2/misc/rangelocks.sh similarity index 100% rename from rangelocks.sh rename to tools/test/stress2/misc/rangelocks.sh diff --git a/rangelocks2.sh b/tools/test/stress2/misc/rangelocks2.sh similarity index 100% rename from rangelocks2.sh rename to tools/test/stress2/misc/rangelocks2.sh diff --git a/rename16.sh b/tools/test/stress2/misc/rename16.sh similarity index 100% rename from rename16.sh rename to tools/test/stress2/misc/rename16.sh diff --git a/rmdir.sh b/tools/test/stress2/misc/rmdir.sh similarity index 100% rename from rmdir.sh rename to tools/test/stress2/misc/rmdir.sh diff --git a/rsync.sh b/tools/test/stress2/misc/rsync.sh similarity index 100% rename from rsync.sh rename to tools/test/stress2/misc/rsync.sh diff --git a/rsync2.sh b/tools/test/stress2/misc/rsync2.sh similarity index 100% rename from rsync2.sh rename to tools/test/stress2/misc/rsync2.sh diff --git a/rsync3.sh b/tools/test/stress2/misc/rsync3.sh similarity index 100% rename from rsync3.sh rename to tools/test/stress2/misc/rsync3.sh diff --git a/seekhole2.sh b/tools/test/stress2/misc/seekhole2.sh similarity index 100% rename from seekhole2.sh rename to tools/test/stress2/misc/seekhole2.sh diff --git a/syzkaller71.sh b/tools/test/stress2/misc/syzkaller71.sh similarity index 100% rename from syzkaller71.sh rename to tools/test/stress2/misc/syzkaller71.sh diff --git a/syzkaller72.sh b/tools/test/stress2/misc/syzkaller72.sh similarity index 100% rename from syzkaller72.sh rename to tools/test/stress2/misc/syzkaller72.sh diff --git a/syzkaller73.sh b/tools/test/stress2/misc/syzkaller73.sh similarity index 100% rename from syzkaller73.sh rename to tools/test/stress2/misc/syzkaller73.sh From nobody Thu Apr 3 14:05:57 2025 X-Original-To: dev-commits-src-main@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 4ZT3Rp1BYhz5rxBl; Thu, 03 Apr 2025 14:05: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZT3Rp0T64z41dl; Thu, 03 Apr 2025 14:05:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743689158; 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=jklQIm9EIUROMO+uEfPHZk3n1f/T2dyitxJMwU98l54=; b=IKN6JgRUoZFT6XpkY02t5agUde/vCPJFmJTCJNFS/85KDP/oOx2jTKbLLM65dD//7Hjkpn lPiqmMVtNPW8jT9CJ9RfmbvbHFJr6aeRcAKc2YU3gBmB4Y3qiThJqOmgRuQ/OvdyGlOG50 AL6rQRN//BcQPeu/XOhMoQHrEH2V/ibbCZCQ7Xwzx4lKYguLQ1wzMysGwpmz722utCREgW tPLs1qajv+JrFYgU7Fv8Ak/gsYeVh7ObWXH3c+lJPLRj/DJ23pk34JBAiBH7mGgTw3XS9R 5MUoWRUYTyKfLyvF/wvH6ULKbt5ThNLspZD/t7PV4rMuklgbAMGDFN1AaI8NEw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743689158; a=rsa-sha256; cv=none; b=cRa6L1vnHFKl3jCIOmpyO+AgRb/csbcrJIp9JcTy5I329wsAjpS9tydRWh4HFyJ1rlDX9o Nv31F6xzyds27tFluMeYVtnHQXa5t8monqpRSXXs4FNzGtHaW6XCEQ6FhoTFXz7GU7ht3/ Nfuh4GPlLL3ysZhVD8Tv3whpOo/U0spelEPCnYbRRHWu5pLV4J5gbaxZ6pRnfRbhoCqnDV hYwg6Y/LGBZj9Wk/enRL5SJ1KLbAS/gw6MLQz+qpmSTCs507cDs9m0CZrwc08lqouXWYM/ NH4HORAfUgR+kKkxlesXxkoXjQv2yB7YOyiEeOdnMfCqJ9K/rJWL7NGwW4KJtA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743689158; 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=jklQIm9EIUROMO+uEfPHZk3n1f/T2dyitxJMwU98l54=; b=gyCwOyvkLsBp/mWy6sM4Z9RszdEuqd3jC4Fb4WICvQjTk+2NC6/ONrzxdiIea6szig1nOi opeK3bsszFfbaT11GaRdpP4oGlZ9SG2F9i5cMpCYisBEIRD0ZTLAmPrm9NHzifZuL4oMBm TFvktCkpb+rEiaJTVj3Cifcd7rfeeApQZl1eWfSYMVk79DYtvkp7XQts+yoBjdIxpLwENz za0Kdhk9BUNYtbBopgUzY/g9UV9cHFAMC22s4SSh04WP9bq4lgZIHMN/zTcouS/ShLDe9c qUtReLGKjsskz3t8eisfRPjlZH3N1MyTJ8abXVcsFMnECuZ6QH//y7+9roJ7bw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZT3Rn6v25z14RY; Thu, 03 Apr 2025 14:05:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 533E5vlk024547; Thu, 3 Apr 2025 14:05:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533E5vEY024544; Thu, 3 Apr 2025 14:05:57 GMT (envelope-from git) Date: Thu, 3 Apr 2025 14:05:57 GMT Message-Id: <202504031405.533E5vEY024544@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 944eda42fa6e - main - openfirm: Add OF_device_unregister_xref List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 944eda42fa6e449ec802958d41302e71a125ca5f Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=944eda42fa6e449ec802958d41302e71a125ca5f commit 944eda42fa6e449ec802958d41302e71a125ca5f Author: Emannuel Vadot AuthorDate: 2025-04-03 13:54:41 +0000 Commit: Kyle Evans CommitDate: 2025-04-03 14:03:44 +0000 openfirm: Add OF_device_unregister_xref When a device fails to attach, or a module is unloaded, we want to be able to unregister the xref as the device goes away. While the device_t may still be valid, it won't be providing whatever functionality the consumer that follows the xref wants it for and thus, we should not keep it discoverable. [Commit message re-worded by kevans@] Reviewed by: ian, imp Differential Revision: https://reviews.freebsd.org/D22945 --- share/man/man9/OF_device_from_xref.9 | 14 +++++++++++++- sys/dev/ofw/openfirm.c | 19 +++++++++++++++++++ sys/dev/ofw/openfirm.h | 1 + 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/share/man/man9/OF_device_from_xref.9 b/share/man/man9/OF_device_from_xref.9 index 85a19df6641b..0b858866b654 100644 --- a/share/man/man9/OF_device_from_xref.9 +++ b/share/man/man9/OF_device_from_xref.9 @@ -23,19 +23,22 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd April 9, 2018 +.Dd April 3, 2025 .Dt OF_DEVICE_FROM_XREF 9 .Os .Sh NAME .Nm OF_device_from_xref , .Nm OF_xref_from_device , .Nm OF_device_register_xref +.Nm OF_device_unregister_xref .Nd "manage mappings between xrefs and devices" .Sh SYNOPSIS .In dev/ofw/ofw_bus.h .In dev/ofw/ofw_bus_subr.h .Ft int .Fn OF_device_register_xref "phandle_t xref" "device_t dev" +.Ft void +.Fn OF_device_unregister_xref "phandle_t xref" "device_t dev" .Ft device_t .Fn OF_device_from_xref "phandle_t xref" .Ft phandle_t @@ -57,6 +60,15 @@ If a mapping entry for already exists, it is replaced with the new one. The function always returns 0. .Pp +.Fn OF_device_unregister_xref +removes a map entry from the effective phandle +.Fa xref +to device +.Fa dev . +If a mapping entry for +.Fa xref +does not exists, it silently returns. +.Pp .Fn OF_device_from_xref returns a device_t instance associated with the effective phandle .Fa xref . diff --git a/sys/dev/ofw/openfirm.c b/sys/dev/ofw/openfirm.c index f9c73122b454..22e8d470e6c9 100644 --- a/sys/dev/ofw/openfirm.c +++ b/sys/dev/ofw/openfirm.c @@ -187,6 +187,15 @@ xrefinfo_add(phandle_t node, phandle_t xref, device_t dev) return (xi); } +static void +xrefinfo_remove(struct xrefinfo *xi) +{ + + mtx_lock(&xreflist_lock); + SLIST_REMOVE(&xreflist, xi, xrefinfo, next_entry); + mtx_unlock(&xreflist_lock); +} + /* * OFW install routines. Highest priority wins, equal priority also * overrides allowing last-set to win. @@ -704,6 +713,16 @@ OF_device_register_xref(phandle_t xref, device_t dev) panic("Attempt to register device before xreflist_init"); } +void +OF_device_unregister_xref(phandle_t xref, device_t dev) +{ + struct xrefinfo *xi; + + if ((xi = xrefinfo_find(xref, FIND_BY_XREF)) == NULL) + return; + xrefinfo_remove(xi); +} + /* Call the method in the scope of a given instance. */ int OF_call_method(const char *method, ihandle_t instance, int nargs, int nreturns, diff --git a/sys/dev/ofw/openfirm.h b/sys/dev/ofw/openfirm.h index 30203404a6b0..4e2b035827cb 100644 --- a/sys/dev/ofw/openfirm.h +++ b/sys/dev/ofw/openfirm.h @@ -149,6 +149,7 @@ phandle_t OF_xref_from_node(phandle_t node); device_t OF_device_from_xref(phandle_t xref); phandle_t OF_xref_from_device(device_t dev); int OF_device_register_xref(phandle_t xref, device_t dev); +void OF_device_unregister_xref(phandle_t xref, device_t dev); /* Device I/O functions */ ihandle_t OF_open(const char *path); From nobody Thu Apr 3 15:00:40 2025 X-Original-To: dev-commits-src-main@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 4ZT4fx03TQz5s1dR; Thu, 03 Apr 2025 15:00: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZT4fw6fdSz456F; Thu, 03 Apr 2025 15:00:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743692440; 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=mSUAr7CRW5IO9rBujabZzSCAdplF5JYFWzl7a52+89M=; b=DnV1trvrdNMuF9UTSE7nMtjo50ckEFRdxjWUooiXWkF3CrMcws+uTb7eYuPeqSOVJzQ1gt d+0JD1HqzgvSOEYlg/8E1XxgUnBLmMt8sxOjlRGGEDmvlVhqamJ28566sc5Amfyh8q75rF td9lRL/Mw9DyLNijjSXPsqNeRmN5sUPQ8Isn83MlodYOlOFWnWGsnjHii6m+yGEIOx9sgH 4CHcGMVV6d3CpUfAZq1+480/pW1grWDOjsJvC1hJe0K9i4uw2xyK2YWES+ZU9KfOoC4437 Zibn2y+XST3PCzLEqa26l2yNyFDOOa+UrfAu0OiY39U2gvnavJvGIgE2t7i1cw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743692440; a=rsa-sha256; cv=none; b=TBxqH3o0koTIzYd2bGzR0CYfwElTLkxMgxtLxveiznwaOQ0MjTP40hy6AoOGMm+krQ3bra QnSoIeo9JvS4Rgr5YlEUCR74LGmWsw1Pv/WZgzLQ1/toA/cuorQ972BB6FQ6W7jqIMkXuk +bUWuvVcHcQ8KetYB7eOUviZjMhiT/wSoBcdofJkd5o1LAqYCOfMoiqQcFJxYuF05OKG3X gBa0K5IXs506yryoTFlhMY9jPidvQcLOoWbujtHC6rTLf9l6723ynGYDkKS6jIL6ANRx4E K5Kj6QXmcAoOBM2eVARRh6VnZJl7dkphh8iQtZOg/LdEyz3sLmQj4ShNhQXoVw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743692440; 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=mSUAr7CRW5IO9rBujabZzSCAdplF5JYFWzl7a52+89M=; b=U+swh1gVX3ibbXffn3Vg7uEN8bDkX0ep0DushVCKrel+y3/jNXLdXsby6ja5OohB19hfLl 0uWSjh/094z4ITNmOx+M4KiCj8ZtpZFeKEumegeRUYSyLHAHAQCXgtCEeGOcZTByojevbA pqd1qvhHZ47WV10lYqQMHpNRAP9xw80VezwVvnfellhs24VWIyKoIoXLSGL+TdDvtnfvgU JETyxYmnSUGrx/bVDJAJBWbccCBNWHwyrYjs48Lpu0QOj93arRt+garLLOoMgLkwuFn47K Do5GiShdq96RRDI894cmVXGFTVjyzHYieqOTzlvTD9tsVrR2koS9Svnw6EGTQQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZT4fw6CK4z15Zj; Thu, 03 Apr 2025 15:00:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 533F0e4l032184; Thu, 3 Apr 2025 15:00:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533F0eYL032181; Thu, 3 Apr 2025 15:00:40 GMT (envelope-from git) Date: Thu, 3 Apr 2025 15:00:40 GMT Message-Id: <202504031500.533F0eYL032181@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 86db734ae292 - main - stat(2): add st_bsdflags field List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 86db734ae292fee58532f09b17b50438f6889cc8 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=86db734ae292fee58532f09b17b50438f6889cc8 commit 86db734ae292fee58532f09b17b50438f6889cc8 Author: Konstantin Belousov AuthorDate: 2025-04-02 20:43:53 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-03 14:45:05 +0000 stat(2): add st_bsdflags field Reviewed by: markj, rmacklem Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49651 --- sys/compat/freebsd32/freebsd32.h | 2 +- sys/compat/freebsd32/freebsd32_misc.c | 2 +- sys/kern/kern_descrip.c | 1 + sys/kern/vfs_default.c | 2 ++ sys/kern/vfs_subr.c | 1 + sys/sys/stat.h | 5 ++++- sys/sys/vnode.h | 4 ++-- 7 files changed, 12 insertions(+), 5 deletions(-) diff --git a/sys/compat/freebsd32/freebsd32.h b/sys/compat/freebsd32/freebsd32.h index 3b45d291c70a..9d7a99535288 100644 --- a/sys/compat/freebsd32/freebsd32.h +++ b/sys/compat/freebsd32/freebsd32.h @@ -214,7 +214,7 @@ struct stat32 { ino_t st_ino; nlink_t st_nlink; mode_t st_mode; - uint16_t st_padding0; + uint16_t st_bsdflags; uid_t st_uid; gid_t st_gid; uint32_t st_padding1; diff --git a/sys/compat/freebsd32/freebsd32_misc.c b/sys/compat/freebsd32/freebsd32_misc.c index e10f5782c10f..3efc93969419 100644 --- a/sys/compat/freebsd32/freebsd32_misc.c +++ b/sys/compat/freebsd32/freebsd32_misc.c @@ -2309,8 +2309,8 @@ copy_stat(struct stat *in, struct stat32 *out) CP(*in, *out, st_flags); CP(*in, *out, st_gen); CP(*in, *out, st_filerev); + CP(*in, *out, st_bsdflags); TS_CP(*in, *out, st_birthtim); - out->st_padding0 = 0; out->st_padding1 = 0; #ifdef __STAT32_TIME_T_EXT out->st_atim_ext = 0; diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c index 9d81c30df328..f007b22f90ec 100644 --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -1618,6 +1618,7 @@ kern_fstat(struct thread *td, int fd, struct stat *sbp) AUDIT_ARG_FILE(td->td_proc, fp); sbp->st_filerev = 0; + sbp->st_bsdflags = 0; error = fo_stat(fp, sbp, td->td_ucred); fdrop(fp, td); #ifdef __STAT_TIME_T_EXT diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index 9f150570945b..c76fc9f9dc59 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -1513,6 +1513,7 @@ vop_stdstat(struct vop_stat_args *a) vap->va_gen = 0; vap->va_rdev = NODEV; vap->va_filerev = 0; + vap->va_bsdflags = 0; error = VOP_GETATTR(vp, vap, a->a_active_cred); if (error) @@ -1590,6 +1591,7 @@ vop_stdstat(struct vop_stat_args *a) sb->st_blocks = vap->va_bytes / S_BLKSIZE; sb->st_gen = vap->va_gen; sb->st_filerev = vap->va_filerev; + sb->st_bsdflags = vap->va_bsdflags; out: return (vop_stat_helper_post(a, error)); } diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index c8ccbc18a7fe..fb624f751402 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -1202,6 +1202,7 @@ vattr_null(struct vattr *vap) vap->va_gen = VNOVAL; vap->va_vaflags = 0; vap->va_filerev = VNOVAL; + vap->va_bsdflags = 0; } /* diff --git a/sys/sys/stat.h b/sys/sys/stat.h index 15b7ec99bdd9..6aa536732efd 100644 --- a/sys/sys/stat.h +++ b/sys/sys/stat.h @@ -159,7 +159,7 @@ struct stat { ino_t st_ino; /* inode's number */ nlink_t st_nlink; /* number of hard links */ mode_t st_mode; /* inode protection mode */ - __int16_t st_padding0; + __int16_t st_bsdflags; /* misc system flags */ uid_t st_uid; /* user ID of the file's owner */ gid_t st_gid; /* group ID of the file's group */ __int32_t st_padding1; @@ -340,6 +340,9 @@ struct nstat { #define SF_NOUNLINK 0x00100000 /* file may not be removed or renamed */ #define SF_SNAPSHOT 0x00200000 /* snapshot inode */ +/* st_bsdflags */ +#define SFBSD_NAMEDATTR 0x0001 /* file is named attribute or dir */ + #ifdef _KERNEL /* * Shorthand abbreviations of above. diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 8b4ac2031cf2..a2706e6e6b88 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -283,7 +283,7 @@ _Static_assert(sizeof(struct vnode) <= 448, "vnode size crosses 448 bytes"); struct vattr { __enum_uint8(vtype) va_type; /* vnode type (for create) */ u_short va_mode; /* files access mode and type */ - u_short va_padding0; + uint16_t va_bsdflags; /* same as st_bsdflags from stat(2) */ uid_t va_uid; /* owner user id */ gid_t va_gid; /* owner group id */ nlink_t va_nlink; /* number of references to file */ @@ -988,10 +988,10 @@ void vop_rename_fail(struct vop_rename_args *ap); AUDIT_ARG_VNODE1(ap->a_vp); \ _error = mac_vnode_check_stat(_ap->a_active_cred, _ap->a_file_cred, _ap->a_vp);\ if (__predict_true(_error == 0)) { \ - ap->a_sb->st_padding0 = 0; \ ap->a_sb->st_padding1 = 0; \ bzero(_ap->a_sb->st_spare, sizeof(_ap->a_sb->st_spare)); \ ap->a_sb->st_filerev = 0; \ + ap->a_sb->st_bsdflags = 0; \ } \ _error; \ }) From nobody Thu Apr 3 17:00:17 2025 X-Original-To: dev-commits-src-main@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 4ZT7Jx3WvNz5s9LH; Thu, 03 Apr 2025 17:00: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZT7Jx3598z4Lp6; Thu, 03 Apr 2025 17:00:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743699617; 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=5rUFxBjh2Tgd5hedv1Y6SVR8Veo/gJt6QZAD+mdFqbM=; b=oZv26jBHppoq69RKT8xeSF/mgtABBD4RZlYSFiy0jtagSTNe+IVetPjiQCjRUSWoMAmgO/ 0ZfPmacRgV3sMG30F8HDbpjdRAdEb9dolGgRAMJVChO0W/CsefjGShmvt3GJJam8bYvdFA KnPMkZITat+P+kP/8Yg3bUX22gqKb+8fJaVKNHkLONfYya0VhxtjBGFnNLDQQoUVyq03AX cxIFo7u6iH5N/5dOBtXfhagh2z0Z8SliBFHx5ov3VYdzcmn/B6t3JaAGkmU7BYNWAk0frj 8LYU+ZiSfcpgtN2VhsAQp6xQ2XunEVW9M12jm7wnvuu01X7D8fHYw7oW5/J2GA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743699617; a=rsa-sha256; cv=none; b=t86Lg56/je8WGp4oOxhuKgPUrWXMTS3wXqDYBkem+ZuO1XDiITIFMEvtFS6H4JUM00Xx9f pGuX7J8NEFmq+xzdOminmV5XZgCxDz6vxT5d1HYkUkMPZn4jOfdf3YQktkXKYvtjWTWfmP unMQTVcLc+9LSki4PEyvv9iMPxXK6VRylE8NHRofZuus7uSQ7rSEkVL9U8OAxfOEHSO5cY 8vKX6XUQcXwz/0p4SX+Tkh/UFcQn1q3G+3FlEBqoDJ8xbP15JzSm4XTle9PsErvX9YgZNm 8w41pe3y69ikCClHS+NB8IZp6zedxtjOPLjj5du6Rab05hubenGQmIeWp1asgQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743699617; 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=5rUFxBjh2Tgd5hedv1Y6SVR8Veo/gJt6QZAD+mdFqbM=; b=KVbq/O+8wKAvO3LRB1B5MXNdga9F3bhqgHVYK7bB9BviXShL+s7B57DTUZjdiVIcvxKtt2 dpC2ODA5LGx2W9Y0EEHhuqUrppovVBs7A0aqQkwBB3X8b86ki6MyaeLxPggD62DndpgGcg lASe5e9K3/9CoC1ned6Sr1fRbVCKf2jiuy4aYr+WEsObgXtfTXmDWq5FaHDc7nX/Ly2KYV V5H8mAyAbe3Ij9MJrAW3l1pIePsyDQgGhf082Ca0lbr6Yl/gv8wpQatmwlMRVT+RVDZ/xt jfp6KbmChf/lV43BJte5Yyy4oNCltXwYC2Mn+phlLZcW3ZnwVRmDoa+7ylNyvg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZT7Jx2dklz18S8; Thu, 03 Apr 2025 17:00:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 533H0HDm052489; Thu, 3 Apr 2025 17:00:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533H0HXR052468; Thu, 3 Apr 2025 17:00:17 GMT (envelope-from git) Date: Thu, 3 Apr 2025 17:00:17 GMT Message-Id: <202504031700.533H0HXR052468@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 7e70d94acd68 - main - pf: allow 'allow-opts' to be used on match rules List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7e70d94acd68b3ac6b45f49d4ab7a0f7867c3ea7 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=7e70d94acd68b3ac6b45f49d4ab7a0f7867c3ea7 commit 7e70d94acd68b3ac6b45f49d4ab7a0f7867c3ea7 Author: Kristof Provost AuthorDate: 2025-04-03 12:58:21 +0000 Commit: Kristof Provost CommitDate: 2025-04-03 16:29:38 +0000 pf: allow 'allow-opts' to be used on match rules Allow the 'allow-opts' setting to be set on match rules. The intended use case is to simplify dealing with traffic where IP options are expected (e.g. IGMP), without allowing them on other traffic, or making the ruleset more complex. Add a test case confirming this works as expected. Sponsored by: Rubicon Communications, LLC ("Netgate") --- sbin/pfctl/parse.y | 5 ++-- sys/net/pfvar.h | 1 + sys/netpfil/pf/pf.c | 6 ++-- tests/sys/netpfil/pf/match.sh | 66 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+), 4 deletions(-) diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y index ea81efd7fd94..1362ae43428c 100644 --- a/sbin/pfctl/parse.y +++ b/sbin/pfctl/parse.y @@ -5325,8 +5325,9 @@ filter_consistent(struct pfctl_rule *r, int anchor_call) r->af == AF_INET ? "inet" : "inet6"); problems++; } - if (r->allow_opts && r->action != PF_PASS) { - yyerror("allow-opts can only be specified for pass rules"); + if (r->allow_opts && r->action != PF_PASS && r->action != PF_MATCH) { + yyerror("allow-opts can only be specified for pass or " + "match rules"); problems++; } if (r->rule_flag & PFRULE_FRAGMENT && (r->src.port_op || diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index 82967dc10d03..c511d61d6cc1 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -696,6 +696,7 @@ struct pf_rule_actions { uint8_t min_ttl; uint8_t set_prio[2]; uint8_t rt; + uint8_t allow_opts; }; union pf_keth_rule_ptr { diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 775bd016c656..c343512b20dd 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -4890,6 +4890,8 @@ pf_rule_to_actions(struct pf_krule *r, struct pf_rule_actions *a) a->set_prio[0] = r->set_prio[0]; a->set_prio[1] = r->set_prio[1]; } + if (r->allow_opts) + a->allow_opts = r->allow_opts; } int @@ -6102,7 +6104,7 @@ pf_create_state(struct pf_krule *r, struct pf_krule *nr, struct pf_krule *a, memcpy(&s->match_rules, match_rules, sizeof(s->match_rules)); memcpy(&s->act, &pd->act, sizeof(struct pf_rule_actions)); - if (r->allow_opts) + if (pd->act.allow_opts) s->state_flags |= PFSTATE_ALLOWOPTS; if (r->rule_flag & PFRULE_STATESLOPPY) s->state_flags |= PFSTATE_SLOPPY; @@ -10473,7 +10475,7 @@ done: goto eat_pkt; if (action == PF_PASS && pd.badopts && - !((s && s->state_flags & PFSTATE_ALLOWOPTS) || r->allow_opts)) { + !((s && s->state_flags & PFSTATE_ALLOWOPTS) || pd.act.allow_opts)) { action = PF_DROP; REASON_SET(&reason, PFRES_IPOPTIONS); pd.act.log = PF_LOG_FORCE; diff --git a/tests/sys/netpfil/pf/match.sh b/tests/sys/netpfil/pf/match.sh index 93b908e62f2d..58c1e021310a 100644 --- a/tests/sys/netpfil/pf/match.sh +++ b/tests/sys/netpfil/pf/match.sh @@ -26,6 +26,8 @@ . $(atf_get_srcdir)/utils.subr +common_dir=$(atf_get_srcdir)/../common + atf_test_case "dummynet" "cleanup" dummynet_head() { @@ -112,8 +114,72 @@ quick_cleanup() pft_cleanup } +atf_test_case "allow_opts" "cleanup" +allow_opts_head() +{ + atf_set descr 'Test allowing IP options via match' + atf_set require.user root + atf_set require.progs python3 scapy +} + +allow_opts_body() +{ + pft_init + + epair=$(vnet_mkepair) + + ifconfig ${epair}b 192.0.2.2/24 up + + vnet_mkjail alcatraz ${epair}a + jexec alcatraz ifconfig ${epair}a 192.0.2.1/24 up + + jexec alcatraz pfctl -e + jexec alcatraz pfctl -x loud + pft_set_rules alcatraz \ + "match proto icmp allow-opts" \ + "pass" + + # Sanity check + atf_check -s exit:0 -o ignore \ + ping -c 1 192.0.2.1 + + atf_check -s exit:0 -o ignore \ + ${common_dir}/pft_ping.py \ + --sendif ${epair}b \ + --to 192.0.2.1 \ + --send-nop \ + --replyif ${epair}b + + # This doesn't work without 'allow-opts' + pft_set_rules alcatraz \ + "match proto icmp" \ + "pass" + atf_check -s exit:1 -o ignore \ + ${common_dir}/pft_ping.py \ + --sendif ${epair}b \ + --to 192.0.2.1 \ + --send-nop \ + --replyif ${epair}b + + # Setting it on a pass rule still works. + pft_set_rules alcatraz \ + "pass allow-opts" + atf_check -s exit:0 -o ignore \ + ${common_dir}/pft_ping.py \ + --sendif ${epair}b \ + --to 192.0.2.1 \ + --send-nop \ + --replyif ${epair}b +} + +allow_opts_cleanup() +{ + pft_cleanup +} + atf_init_test_cases() { atf_add_test_case "dummynet" atf_add_test_case "quick" + atf_add_test_case "allow_opts" } From nobody Thu Apr 3 17:38:46 2025 X-Original-To: dev-commits-src-main@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 4ZT89M5Thqz5sCwb for ; Thu, 03 Apr 2025 17:38:47 +0000 (UTC) (envelope-from 01000195fcbbe2f8-a81d93cd-2146-4472-86d3-6ee087dd6c82-000000@amazonses.com) Received: from a8-176.smtp-out.amazonses.com (a8-176.smtp-out.amazonses.com [54.240.8.176]) (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) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZT89M3kJqz3G7m for ; Thu, 03 Apr 2025 17:38:47 +0000 (UTC) (envelope-from 01000195fcbbe2f8-a81d93cd-2146-4472-86d3-6ee087dd6c82-000000@amazonses.com) Authentication-Results: mx1.freebsd.org; none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=vnqrkfnvu6csdl6mwgk5t6ix3nnepx57; d=tarsnap.com; t=1743701926; h=Message-ID:Date:MIME-Version:Subject:To:References:From:In-Reply-To:Content-Type:Content-Transfer-Encoding; bh=ZNjFqeFA013cybgGqYdoiGtYBDOvJI3vWKI+e0MUgx4=; b=Q1bGF6KYnJomjHHulE1qnrF7atQ8fzj6wXjYrwXQL0/tzVTpdvqmYUreCkjCQTl6 wuESbXxax/y3OA4UfrF23KZgD73Ex2meLrJ67r+YtdPQHjyOdGoFnwJIO8WZJVcywE+ FQUjUzWxpzs+YazPTcalMtnt+eOeVVZ84EE0GMhY= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=6gbrjpgwjskckoa6a5zn6fwqkn67xbtw; d=amazonses.com; t=1743701926; h=Message-ID:Date:MIME-Version:Subject:To:References:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Feedback-ID; bh=ZNjFqeFA013cybgGqYdoiGtYBDOvJI3vWKI+e0MUgx4=; b=FNWcKVE5D5WmIfo7RqC2g3hQRVbZLvYmaXeNTEWwaaEJSlecNn39z4Jbp/y7iHl1 3vvvODcaWnYVVJowU0FJAJzSHIb3mpOUJs3rgjdJq/Pypf1X94GUCuVf0GgrlBQd45s hDSyqKHnyA5ygJ0dQ+AG4nyzZ6FMaAF4sQvC8f2Y= Message-ID: <01000195fcbbe2f8-a81d93cd-2146-4472-86d3-6ee087dd6c82-000000@email.amazonses.com> Date: Thu, 3 Apr 2025 17:38:46 +0000 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 74a6f2a76b32 - main - iwx: Shorten log code field To: Tom Jones , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202504030707.53377PCW040790@gitrepo.freebsd.org> Content-Language: en-US From: Colin Percival Autocrypt: addr=cperciva@tarsnap.com; keydata= xsFNBGWMSrYBEACdWRqDn3B3SKO7IG0/fGHYtfs26f3Q5QeAcasy1fQLniwGQWn5rlILhbCD K/jdNoDm5Zxq20eqyffoDNObCjnHgg4tGANdi+RmDy+7CDpE789H8dss9y7Pt5DlGGAXQQnt hxush3EYS/Ctprd9UUL/lzOOLOU1aNtzB84tNrJBtcJmL7OYHfyTSNFxvedqJrrasejIQOLI t/DQ89BPzz+vsKHz7FJPXh3fsVkzLA00DJYcfkgxyABfJNA7U6yMwd4DVSdx/SsvfIDMVXnu UXCXswo106WPZbYGlZPpq0wW6iibtTerJix+8AeuwXvl9O1p8yESK4ErkIxCnmghTSz+pdzj z/6xBRkdDM9VdZ0r+CzsaNXMpDOzFuKyjaiYBdgCLljbDnXIHFcqXenrZ7Xwkm09g/M4uVSh pIUG2RYa6tsHSQoGCp3f2RZv1znfViKQFbbL83QjtPA20AhseZSYbHp1FPhXyy9J0wkGL16L e99g6gdGeIRE82BZjBjKGDkoyDPq+oDRSFl8NtzmIKy+cfz00nViqcTF4bREXEawFGhlpO0X O9q8mijI9iFB6zaPBiSdJGBL5ML5qLTNCl8Zlf4m1TBvmRTqF/lzMHVXHidDoUhpSh/y3AFZ 1KrYc27ztJQywDJPJPWPbtY8YhFLFs377gfP8WldsZjzp8nvoQARAQABzSVDb2xpbiBQZXJj aXZhbCA8Y3BlcmNpdmFAdGFyc25hcC5jb20+wsGRBBMBCAA7FiEEglY7hNBiDtwN+4ZBOJfy 4i5lrT8FAmWMSyYCGwMICwkNCAwHCwMFFQoJCAsFFgMCAQACHgUCF4AACgkQOJfy4i5lrT+i Yg/+PYyJNoFuygtV5t/skcjYmvEC93mnazEvh+x99vGYZnGKeJ8NDOF4QCUzeHquOWxDi8Zl reXyswKcrIquPxxX6+YyGe97VbvLnez3ksfzOYRj1F4qV0Rq8ZNK51+bvIrbcS3SfDaRioAk D7WWwFor8y/hSwxYkfsKbtP5PRcem20JUxuC085zqWLaKv5t5n2CBzAGMjwJaQ3tM3AXVwWJ uJaHA6ot/6fntJlmkfcyCYyyr0D6b0guRj3STbZ2hNn5o2AI+f6LJJ31s2sPFjl6rs7fORf3 hFSNOHDd2HxfVBXFdQy24ROkC4orBBz2xh9GScjxxT/hbXkfufkubFubw7n0HkvHzA3UF+Qq A8JiI3n+d7ocsP0/5BQ2sZdeqPGJgHx6RkAMuW1tJ29wSvCN1qMgFwhYkpQdfvHlociQrimU fvlRfSrBEe8o7tvIuEdpvwvCZSTJqQbVoMw8UHFE7nzyCXUSab5h6PbjakCqim13ekVO2KFF TTPcz5o5jEeUY75tzbIwcDfFbT5KqNjWy06TVdM9VEJDHSfOfxHR3kSEwZ+tT2aTvL3grsUn gFwSNcj4Cl4CRFfUw8zVZY+7O7RiMlhBqykikvUurrdGKc1Scwa0yuppdA6eVvylyTWSQGrQ +uLWtV1LUKN7ZqKJWBkLPt9nS4XZWGyBvxOHYqjOwU0EZYxKtgEQANYfgbtUMVnhjxDHhWLp g5kLHK3YW0TfJKzpXqDB7NiqxHofn4OcbZnVC3MKggcbs9o1/UtsjnlsG8550PfiYkDXvPiO RJwgbGs6MGIDK797C6cnBLQ8xwBa9SL4cl5iQFnhWmt6vwnJ+an/cm5JpYves3wL7jV09qU9 57hkHXEUcl38r4FssZzVcLKPUVTa3Un+QGRTGDGe/f4ctjMaqv0ZCM+l2ixPhf/vqESrfSLv V/+T3dmtUfXjazO3SABvsHwxgGuTTYOlKoPCaebr+BRdqm0xeIShoIlhvTI8y4clchqx/Uxg UG5X2kvU13k3DS3Q8uLE4Et9x1CcZT6WGgBZSR6R0WfD0SDnzufNnRWJ0dEPA2MtJHE7+85R Vi9j/IgZV+y5Ur+bnPkjDG1s2SVciX5v9HQ0oilcBhvx0j5lGE9hhurD9F+fCvkr4KdbCknE 6Y8ce8pCNBUoB/DqibJivOzTk9K9MGB5x0De5TerIrFiaw3/mQC9nGeO9dtE7wvDJetWeoTq 4BEaCzpufNqbkpOaTQILr4V6Gp7M6v97g83TVAwZntz/q8ptwuKQPZ2JaSFLZn7oWUpYXA5s +SIODFHLn6iMoYpBQskHQjnj4lEPJadl4qj+ZKA89iDAKsniyoFXsbJe2CPbMS1yzBxKZq6K D/jpt7BOnuHr/JrXABEBAAHCwXYEGAEIACAWIQSCVjuE0GIO3A37hkE4l/LiLmWtPwUCZYxK tgIbDAAKCRA4l/LiLmWtP3jmEACQrh9gWe8F1Tkw3m6VoHKwLc5he4tX3WpQa//soPO6iGG3 S3WPruQ46NrAaAojoOcKI9UONDO5rxG0ZTX53S+lu2EO47jbcLwOCjaEpjKpDRt9ZXBQE8Xl mtBE9Bp3W9gpjB1nE3KNM1mJYgsK0QdRpwwfh4pVgGpOj8j23I6MCK+v99zEBnpgCn2GX8W/ kctRXHqWwndHysOJtRP/zrl7dDaABF1f9efUl0LL3TD3GJ9VDz+DNOin/uK2a1hiJo8QzTRk PpfUQ2ebzDsrd1i/pOWkMSkdH+rEu4AGrXWtaBwrMyrGkL6Icb6yO+P9/z0W2wlgBf3P1YRt JPgQt/Dj3yvA/UnaV/QmuVQPjl13o24UnJGsZM8XGnNdfWBKkC1Q6VXC4QT+dyBHYH9MuE9d 6oGl8pFM1+cTfEfbM62/rRoPkF1yHMsI/903VxEvuUIKfhEZAVLFyHldooNxuchntHQP9y8J 8Ou9bWYQP7MnEn+kwSwrZkjurfPkan+xQvp6dDYnj3V0GwA5pprBMaB928VIDVOv+1PNQI3t Cvk5VPv/skq+TJRMHW7bFSt8PRa91cUf1FOLIz9APDiJOzXkwxUEHGV3zPSaUhs1JYjyBeGT wDAvtLUdjOnRhEUOwlnIrztmvyciutjJoVzKEEjj5WXnHk9L9kQ1bpAjkjTONw== In-Reply-To: <202504030707.53377PCW040790@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Feedback-ID: ::1.us-east-1.Lv9FVjaNvvR5llaqfLoOVbo2VxOELl7cjN0AOyXnPlk=:AmazonSES X-SES-Outgoing: 2025.04.03-54.240.8.176 X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:14618, ipnet:54.240.8.0/21, country:US] X-Rspamd-Queue-Id: 4ZT89M3kJqz3G7m X-Spamd-Bar: ---- On 4/3/25 00:07, Tom Jones wrote: > commit 74a6f2a76b32e01d05c4ad71897bd3a6831e703e > > This fixes the build on i386. You sure about that? /usr/src/sys/dev/iwx/if_iwx.c:5762:22: error: shift count >= width of type [-Werror,-Wshift-count-overflow] 5762 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + le32toh(desc->tbs[0].tb_len)) >> 32) | ^ ~~ /usr/src/sys/dev/iwx/if_iwx.c:5762:80: error: shift count >= width of type [-Werror,-Wshift-count-overflow] 5762 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + le32toh(desc->tbs[0].tb_len)) >> 32) | ^ ~~ /usr/src/sys/dev/iwx/if_iwx.c:5769:22: error: shift count >= width of type [-Werror,-Wshift-count-overflow] 5769 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + le32toh(desc->tbs[1].tb_len)) >> 32) | ^ ~~ /usr/src/sys/dev/iwx/if_iwx.c:5769:80: error: shift count >= width of type [-Werror,-Wshift-count-overflow] 5769 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + le32toh(desc->tbs[1].tb_len)) >> 32) | ^ ~~ /usr/src/sys/dev/iwx/if_iwx.c:5778:23: error: shift count >= width of type [-Werror,-Wshift-count-overflow] 5778 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + le32toh(desc->tbs[i + 2].tb_len)) >> 32) | ^ ~~ /usr/src/sys/dev/iwx/if_iwx.c:5778:85: error: shift count >= width of type [-Werror,-Wshift-count-overflow] 5778 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + le32toh(desc->tbs[i + 2].tb_len)) >> 32) | ^ ~~ /usr/src/sys/dev/iwx/if_iwx.c:10971:47: error: format specifies type 'unsigned long' but the argument has type 'uint64_t' (aka 'unsigned long long') [-Werror,-Wformat] 10971 | DPRINTF(("%s: k->wk_keytsc=%lu\n", __func__, k->wk_keytsc)); | ~~~ ^~~~~~~~~~~~ | %llu -- Colin Percival FreeBSD Release Engineering Lead & EC2 platform maintainer Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid From nobody Thu Apr 3 19:09:29 2025 X-Original-To: dev-commits-src-main@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 4ZTBB12sL5z5sKS3; Thu, 03 Apr 2025 19:09: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTBB12KvDz3Pvl; Thu, 03 Apr 2025 19:09:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743707369; 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=6mk4cxwl/giV9HJHn5WKAgZT2Ae98mwHAUZMcG8CVZM=; b=jF/dW88x+ONBPJ0x85dSquUoEHLXumiSiCrY2Lf7DNfOzXI74PP2Thl8Y4f6pL66pzUg2L J5RKBRtX5iZftKfolQX1XascovzdqCljKQ8Ds9u4rMXMyJvVrXTUz718InL7YLdiEkHKQ2 nUQvJXmxD66GEGAx65+0qyjn/F6+mYsRih7gigYCFixavI2pLIFx/vG1T+xlHMahtnH3ls uVvUJRGYBqrgw02dU4S1Ey9Rpcdn+TileMfslpS/sJMYcI/rV2ZjPDCq/Kewuhx3xykbFM qK0h21Z72vb/dt+lEfEM0SBvXXjESqDtqWx2kCGd5QbqXZG/BAQeeDwn8pV7Tg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743707369; a=rsa-sha256; cv=none; b=cmxgtG4LrbLn/YFBMr1xuFCO19fnYk/ru8Y4MVR6rIouodnkLjxgshnCyrAHp9dqxUG1Jq JQZfN5ABONOI6JcjShk/eyxX6pNhVxHiQoRjybgMKL+0R57Q7QsWaWy8R+I4P2uIT34xB0 ID0oKtjxjMFXqkIKEgrI7FJTGrjiaOewkzxTF45PlC0VOyRBoSBxVgeQ5rQC3dAIWO11mN 8RdQ+DT0/PVYDl+xvJbZ9zU4i/nyOvLaR/PjhqaiDCVDLuE7gB8x4d+gyAhI8ywoivWBip RUWuiRnn3E/Zh5LMyUkUn1Ms63PQvDJxcK30MnKpKgcvBMEnfawW8+4c0oxejQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743707369; 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=6mk4cxwl/giV9HJHn5WKAgZT2Ae98mwHAUZMcG8CVZM=; b=Gt+R9KcacC6nMSWSdYauMP88+HBz/DfLE3c7rIvUME/qUzDk10lxTXUOSjCIXS+tWYvRYd I/CT0JByUfZ0uKxPpPIYjOcYvUMyIw2YMT4P+UThv4ygBdJrQVJ2AzNKrEbG8yIv24irAe eiJEsYLlGVhhrMVq/cQ8M3t7qNx0n7/3PeOxPRrZY86dzdS7/InwML7ct9JYnnZ2y4Tyhz LGaHTM0R/sMDPot3d6aIslle74QUQdF3ySjKYE8s3+xEjDwQx33CtuD2e0tmHUS+TbTEZ3 xcARwyCH76H4eWJwKJSTlVdsyzBaKgmg0MPrMKMFR745L5Bq3D+xPwAhK40JgA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTBB11VVbz1CVw; Thu, 03 Apr 2025 19:09:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 533J9Tug085721; Thu, 3 Apr 2025 19:09:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533J9TsK085718; Thu, 3 Apr 2025 19:09:29 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:09:29 GMT Message-Id: <202504031909.533J9TsK085718@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 296b60793df6 - main - iwx: Disconnect from the i386 build List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 296b60793df6ae855ba414fbf4823467e9615b2f Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=296b60793df6ae855ba414fbf4823467e9615b2f commit 296b60793df6ae855ba414fbf4823467e9615b2f Author: Mark Johnston AuthorDate: 2025-04-03 19:08:23 +0000 Commit: Mark Johnston CommitDate: 2025-04-03 19:08:23 +0000 iwx: Disconnect from the i386 build The module fails to compile. Disconnect it until that's resolved one way or another. Reported by: cperciva --- sys/modules/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/modules/Makefile b/sys/modules/Makefile index 3442b35c2233..71193e3559be 100644 --- a/sys/modules/Makefile +++ b/sys/modules/Makefile @@ -803,7 +803,6 @@ _ipw= ipw _iwi= iwi _iwm= iwm _iwn= iwn -_iwx= iwx .if ${MK_SOURCELESS_UCODE} != "no" _ipwfw= ipwfw _iwifw= iwifw @@ -836,6 +835,7 @@ _ccp= ccp _enic= enic _iavf= iavf _ioat= ioat +_iwx= iwx _ixl= ixl _nvdimm= nvdimm _pms= pms From nobody Thu Apr 3 21:04:22 2025 X-Original-To: dev-commits-src-main@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 4ZTDkZ52VXz5sTrX; Thu, 03 Apr 2025 21:04: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTDkZ4MVnz3tQp; Thu, 03 Apr 2025 21:04:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743714262; 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=KeBUB57Si6Z8wPJwv5D23Vt6Z2W9cUQHUF6yAPvM2Y0=; b=Fzcg6jitAydI3ytUxw5Ik20x8yTi5QAo82agUYaSU63AP+uCnaBr63y8fmykfpjV2+e6Ei jBCKwgUsI3xwmyDG0CRZa+aq+ZgdxZIRjNE+6n9c8cp9v743vkqjcik1ZGMWp4Xkoo5gBA IOv7m0GdW616EEw5Tfa7QhdE/pLYZxGlQC2aJk9OnF0rUb5QFIosn4c426QUiriq8TdIbz ZX843M9OeQWoPcjm2NmW4Frycw0bCt7I7u2p/IVfTgheXminbCr+lUNRXrkOAPW9hf6SUd LcMf+jnV34gB3vjqPs+Pj/Utl9roVA0pqir85cOtrwAHZCTT4BvqdygOQnKO+Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743714262; a=rsa-sha256; cv=none; b=EgrXIsaF+EuCVZTuzZ0nmqQ1yLWLK5DKg/5TVILkUTijWSxGkC4AjsX/AX+dJJg5Xun+zC 4v0/RYH/SNtQxGWziNtSFXXcV5BdKvL2FVKU1EMbt7tC1/KZm0WQyZrj4bSyt/Cp+MTH4C g0AmwZnjncjMGovnyv4rt4DkGfk0SmrXhX5lo3Zwvi7dmWdEQEEfBFuRit/XWgQIAZFL9G u1XVGPvyLqUWrUgEpgvirqTt99Ng1Z6GNluJ0XBso/loYUWj/YaQu6aYzDh/Vyx3rVsPfm YycAARqxLywWfVswh/QpyMjZY1eUyRMwqJwRkm8r3VtzXKrIybWK7RRE7BkrXg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743714262; 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=KeBUB57Si6Z8wPJwv5D23Vt6Z2W9cUQHUF6yAPvM2Y0=; b=wbMs6omjoG/N5k2XfkslFvGZQblcKgalIUQ3sdIVwkojf8WMQheC46fbpZs9jH5Sq/4b+l v+fywRKdERZj1EtaA4nNZAUDiJOGHG2BCAITMOhCQEXRhr631srgaWmvgQsWhcZhv8pfFX cnbSXRdeDcqVJSWiQG0pg/kMZ8FO0nmXp0v39ACeTpHBlUVhrvUQ/V6jNu+klHeC4SUemc jyoWyYTTFHcAxzQ9Me06vQePWKgi0DWCIBYBIxal3jed6ZKUK6bBxo6QUMVl87UK4+5oYv g+xA+EY4hgaiI2aYIAZI/IJcsnGwshYTrXEUwxYH8M0Ps14A19CFTiyiwCRjRQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTDkZ3rngz2XN; Thu, 03 Apr 2025 21:04:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 533L4MC6010052; Thu, 3 Apr 2025 21:04:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533L4MBG010049; Thu, 3 Apr 2025 21:04:22 GMT (envelope-from git) Date: Thu, 3 Apr 2025 21:04:22 GMT Message-Id: <202504032104.533L4MBG010049@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: 94acddd2ad01 - main - tcp: improve initializing the fields in tcp_log_buffer List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 94acddd2ad0142221124c3fb7fe3778a5a1f8036 Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=94acddd2ad0142221124c3fb7fe3778a5a1f8036 commit 94acddd2ad0142221124c3fb7fe3778a5a1f8036 Author: Michael Tuexen AuthorDate: 2025-04-03 06:59:46 +0000 Commit: Michael Tuexen CommitDate: 2025-04-03 06:59:46 +0000 tcp: improve initializing the fields in tcp_log_buffer Initialize the fields in the tcp_log_buffer in the sequence they appear in the structure and add the initialization of tlb_flex1, tlb_flex2, and _pad[]. Reviewed by: rrs, Peter Lei MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D49652 --- sys/netinet/tcp_log_buf.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sys/netinet/tcp_log_buf.c b/sys/netinet/tcp_log_buf.c index 7b937958a4fb..e9ad05382b81 100644 --- a/sys/netinet/tcp_log_buf.c +++ b/sys/netinet/tcp_log_buf.c @@ -1857,16 +1857,21 @@ retry: COPY_STAT_T(rttvar); COPY_STAT(rcv_up); COPY_STAT(rcv_adv); + COPY_STAT_T(flags2); COPY_STAT(rcv_nxt); COPY_STAT(rcv_wnd); COPY_STAT_T(dupacks); COPY_STAT_T(segqlen); COPY_STAT(snd_numholes); - COPY_STAT(snd_scale); - COPY_STAT(rcv_scale); - COPY_STAT_T(flags2); + log_buf->tlb_flex1 = 0; + log_buf->tlb_flex2 = 0; COPY_STAT_T(fbyte_in); COPY_STAT_T(fbyte_out); + COPY_STAT(snd_scale); + COPY_STAT(rcv_scale); + log_buf->_pad[0] = 0; + log_buf->_pad[1] = 0; + log_buf->_pad[2] = 0; #undef COPY_STAT #undef COPY_STAT_T /* Copy stack-specific info. */ From nobody Fri Apr 4 03:24:24 2025 X-Original-To: dev-commits-src-main@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 4ZTP951T0Pz5rSvX; Fri, 04 Apr 2025 03:24:25 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTP950QFSz3lC4; Fri, 04 Apr 2025 03:24:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743737065; 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=BFI5ooCVuEnr2Qs2kd4PNQMAs+1UvA3Msj61Zz6rHI4=; b=sJ9XVrMUlt0Ttz05rFXgEGxroJGrGMPl6oEgiUZkCCfWayH0luGsUiUYHJkvectQuuoeTI 8pMSlE0qWsMZhC+ANL8dnSGKzxiWVL1ePr+DEpzxNduN9qqFVvYCWMqa4gakCsZ2PskZ8V hJVIl+PFpGw+7y0lgFsor9Jsk7M6d57Kp+taulaqMNebFfVUJY52SbB8uDhOs0SNjLgZfl pZ6huRS3pBOMAgMxJtdSKYgd/hXrt6RMQkeLTwJ2evlZYhqj5yae8NaL7mYkgi0ryVhGa+ lE2WGfv8OGO8U7n1Nx9UIGbfo/YCzkIgq8A26VogEVYEZpz/HiKVvlcaET0TSw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743737065; a=rsa-sha256; cv=none; b=WCLfTzGxoj4F7hD9giB5Qa7pbVrKRU3+4vICSXJP6kygOVsVrpOfKECFcO/P3N+c1+BJ7H SJ1o9HiBOBNTym5GPmlYtx/NjLUhIzHxmiJZLqIV/wXDn9YozU+2phlzMUEmDLtCIu21/E bad3fVFTBtTNkhZumTahhgZI8cTBEmIgqSFmuZLFe3Ar0e3inuJKb7xOyHD1n1FgO3+q/T 4xLK+fpBBkF+b5YcSKQU6COvXofxhpRfoG2jsOzjdMMJNmJ1at5iuXn987XAAWAOgNl2gr z1xKGWxhBPQkhdc3roPreBHzSrWRNcQ8NNx8n8D2RbqpbZwYcZqaVG3118B7xg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743737065; 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=BFI5ooCVuEnr2Qs2kd4PNQMAs+1UvA3Msj61Zz6rHI4=; b=Ur5Bq2QTJjc/C0s0bgtV/IW37SrdN8GkTe6eY5rvJC8hI4lqihr+6aCvAZcL+3HeBTh1k/ 735jyCgIOQouub2qs7tKYfkfJkhDCWauMxs3OMgq57zeoWsuyV63lCuOgphtBzv+mpSeRk 44Vdho/dOnVCG+QoBfHRXVxRkweaaA/Pjp5kuzo6KZngsNKmxkepjSti1OmJYu6TMO+ppn acCiNwyQC+GCn9CtwQ6llMWMcXME7F74cDinc9NlTdTKLhSGhTQSsQm5wipNV7kQBMtpHk hH8UEDevJrqLr2nKDm0MjHh3cnxgQky0/4R6pc0+aNJsFMhYjgaTCA7Xe+3SSw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTP946fh4zTZn; Fri, 04 Apr 2025 03:24:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5343OOKD020589; Fri, 4 Apr 2025 03:24:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5343OOeP020586; Fri, 4 Apr 2025 03:24:24 GMT (envelope-from git) Date: Fri, 4 Apr 2025 03:24:24 GMT Message-Id: <202504040324.5343OOeP020586@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Adrian Chadd Subject: git: 08fd0689d06f - main - net80211: document the crypto enmic/demic functions. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: adrian X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 08fd0689d06fb8587f7d37d8a39647992456b3fd Auto-Submitted: auto-generated The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=08fd0689d06fb8587f7d37d8a39647992456b3fd commit 08fd0689d06fb8587f7d37d8a39647992456b3fd Author: Adrian Chadd AuthorDate: 2025-03-16 18:13:01 +0000 Commit: Adrian Chadd CommitDate: 2025-04-04 03:23:10 +0000 net80211: document the crypto enmic/demic functions. These functions implement what's needed for TKIP Michael MIC - which is performed over the entire unencrypted MSDU. Each potential fragmented MPDU is encrypted and has its own ICV/MIC. CCMP/GCMP encrypts each MPDU separately (including the MPDUs that make up an A-MPDU), so they'll implement null functions here and instead do the MIC/ICV insertion inline in the crypto functions themselves. Hopefully this makes it a bit clearer on how things should behave, and will help figure out and clean up what further hardware offload features we need. Differential Revision: https://reviews.freebsd.org/D49392 Reviewed by: bz --- sys/net80211/ieee80211_crypto.c | 18 ++++++++++++++++-- sys/net80211/ieee80211_crypto.h | 25 +++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/sys/net80211/ieee80211_crypto.c b/sys/net80211/ieee80211_crypto.c index 600d69d6043b..744d69ce3d1d 100644 --- a/sys/net80211/ieee80211_crypto.c +++ b/sys/net80211/ieee80211_crypto.c @@ -774,8 +774,22 @@ ieee80211_crypto_decap(struct ieee80211_node *ni, struct mbuf *m, int hdrlen, #undef IEEE80211_WEP_HDRLEN } -/* - * Check and remove any MIC. +/** + * @brief Check and remove any post-defragmentation MIC from an MSDU. + * + * This is called after defragmentation. Crypto types that implement + * a MIC/ICV check per MSDU will not implement this function. + * + * As an example, TKIP decapsulation covers both MIC/ICV checks per + * MPDU (the "WEP" ICV) and then a Michael MIC verification on the + * defragmented MSDU. Please see 802.11-2020 12.5.2.1.3 (TKIP decapsulation) + * for more information. + * + * @param vap the current VAP + * @param k the current key + * @param m the mbuf representing the MSDU + * @param f set to 1 to force a MSDU MIC check, even if HW decrypted + * @returns 0 if error / MIC check failed, 1 if OK */ int ieee80211_crypto_demic(struct ieee80211vap *vap, struct ieee80211_key *k, diff --git a/sys/net80211/ieee80211_crypto.h b/sys/net80211/ieee80211_crypto.h index a830d89c6dc8..fa0d3fc3272a 100644 --- a/sys/net80211/ieee80211_crypto.h +++ b/sys/net80211/ieee80211_crypto.h @@ -216,6 +216,11 @@ struct ieee80211_cipher { void (*ic_setiv)(struct ieee80211_key *, uint8_t *); int (*ic_encap)(struct ieee80211_key *, struct mbuf *); int (*ic_decap)(struct ieee80211_key *, struct mbuf *, int); + /* + * ic_enmic() and ic_demic() are currently only used by TKIP. + * Please see ieee80211_crypto_enmic() and ieee80211_crypto_demic() + * for more information. + */ int (*ic_enmic)(struct ieee80211_key *, struct mbuf *, int); int (*ic_demic)(struct ieee80211_key *, struct mbuf *, int); }; @@ -240,8 +245,24 @@ int ieee80211_crypto_decap(struct ieee80211_node *, struct mbuf *, int, struct ieee80211_key **); int ieee80211_crypto_demic(struct ieee80211vap *vap, struct ieee80211_key *k, struct mbuf *, int); -/* - * Add any MIC. +/** + * @brief Add any pre-fragmentation MIC to an MSDU. + * + * This is called before 802.11 fragmentation. Crypto types that implement + * a MIC/ICV check per MSDU will not implement this function. + * + * As an example, TKIP implements a Michael MIC check over the entire + * unencrypted MSDU before fragmenting it into MPDUs and passing each + * MPDU to be separately encrypted with their own MIC/ICV. + * + * Please see 802.11-2020 12.5.2.1.2 (TKIP cryptographic encapsulation) + * for more information. + * + * @param vap the current VAP + * @param k the current key + * @param m the mbuf representing the MSDU + * @param f set to 1 to force a MSDU MIC check, even if HW encrypted + * @returns 0 if error / MIC encap failed, 1 if OK */ static __inline int ieee80211_crypto_enmic(struct ieee80211vap *vap, From nobody Fri Apr 4 03:24:25 2025 X-Original-To: dev-commits-src-main@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 4ZTP961bW4z5rSPD; Fri, 04 Apr 2025 03:24: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTP960bMrz3lM4; Fri, 04 Apr 2025 03:24:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743737066; 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=/IsX50caP34tSpf2ex/o3fuCCkjzquozEk90FlfY4gY=; b=cn6RHurobY3/mx0KJKMpYNzf4UW4IxTAPBiXcW0S9lPOHMqUx6vgq6elHwYKicXf67mRMj vQ42AGFy/MGmsQYjlkVv7IAh+uPWJ3OmmIdmB8WXxC/OgCvjd4oE2XvWTB/507S1SvWroM HVTL8EuHJCpFYJhYBDrxIG9XKX1KtJIQskULnWFqcpOSkdeNxPIfO4ccIHNephXM0R2Vdq zHPa13bd+fZ8JkNNPd7lEFPmw26EkEDdS+dz7lR8LVdGH5L3EnKp3Ozbbk0eMS+spC330q fbI65REJU0Xa0Ni1H4CbgMe6JaDQ5T/3vgd2Sltfu/f0bFV6c7+SqnFRj7To2g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743737066; a=rsa-sha256; cv=none; b=Dl8ecYEoEFas/2BvvfBuxzOCi2Qs+hWWc5diOGy5LBy2kwe55Dm7mY6TC3ouN+vzkm2XGy h+8KBgqUhdDi1s9+cLrLg2hKYMnJAZpbHvXyalPueKGkef8xAAIQ9iIeGaAQ6dJ7ukgXBv usSEjYWnu874Di2WY3Yv434jiB4Q66DeIT6vg7ReXeLWDDd0oZVXfoWTUPd6kogYF72jHk F4RszCOfZIUYfGHDz8Wd03Rj1U7M7Go69b9Xz3vPVbR/94h/mvXGfJXbFMauf/fRnXEB79 90ufX4b3J0bq24xs6eY1KbjEySRa2zZWWwCNdHS248/AYpZTYIyDMNYviRedWQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743737066; 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=/IsX50caP34tSpf2ex/o3fuCCkjzquozEk90FlfY4gY=; b=Ritfslpw4W1TZJiadHurU209SR+QQEKXRNqOV7hkCgvntbJTT4zJiYWditN7cOPcNCH2Kv 3TwnZvNGqUOJ9sQ2xL2cQt+OBm3X/jYffZJ7KGxptO8vfzdOAKpqQOHc/goPohiosGcuQn sF2kT/Zu89HYmLse9CZXrbe2Ig9mAFtZpQGqQvL7sRZwDBMLhVeft8HnbTrNaghFkBaj5y uxL3qSKQJNYF5QU9e8nY41xkq8BKzVDVj6X8/VY3bVnMbJCLtpb3G8EB24FRr8adNUuPhm NcFPCpEPXu/mNyAwVpKDhjFb9KFhZeSnzD9sSsZknDmZ48xJSmxOV8DJT0snNw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTP960BTrzDW0; Fri, 04 Apr 2025 03:24:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5343OPTY020622; Fri, 4 Apr 2025 03:24:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5343OPkK020619; Fri, 4 Apr 2025 03:24:25 GMT (envelope-from git) Date: Fri, 4 Apr 2025 03:24:25 GMT Message-Id: <202504040324.5343OPkK020619@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Adrian Chadd Subject: git: 628d1501f7ec - main - ifconfig: decode 256 bit CCM/GCM ciphers and 256 bit 802.1x/none keymgmt List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: adrian X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 628d1501f7ec5674ac06d10861d60e7326e0ef25 Auto-Submitted: auto-generated The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=628d1501f7ec5674ac06d10861d60e7326e0ef25 commit 628d1501f7ec5674ac06d10861d60e7326e0ef25 Author: Adrian Chadd AuthorDate: 2025-03-24 01:14:21 +0000 Commit: Adrian Chadd CommitDate: 2025-04-04 03:23:47 +0000 ifconfig: decode 256 bit CCM/GCM ciphers and 256 bit 802.1x/none keymgmt * add AES-GCM-256 and AES-CCM-256 ciphers * add WPA-PSK-SHA256 and UNSPEC-SHA256 key management This allows them to show in ifconfig -v wlan0 list scan, eg RSN Differential Revision: https://reviews.freebsd.org/D49481 Reviewed by: thj --- sbin/ifconfig/ifieee80211.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sbin/ifconfig/ifieee80211.c b/sbin/ifconfig/ifieee80211.c index 656e71e325cd..80633e5e9ffc 100644 --- a/sbin/ifconfig/ifieee80211.c +++ b/sbin/ifconfig/ifieee80211.c @@ -3138,6 +3138,10 @@ rsn_cipher(const u_int8_t *sel) return "AES-OCB"; case RSN_SEL(RSN_CSE_GCMP_128): return "AES-GCMP"; + case RSN_SEL(RSN_CSE_CCMP_256): + return "AES-CCMP-256"; + case RSN_SEL(RSN_CSE_GCMP_256): + return "AES-GCMP-256"; } return "?"; #undef WPA_SEL @@ -3154,6 +3158,10 @@ rsn_keymgmt(const u_int8_t *sel) return "8021X-UNSPEC"; case RSN_SEL(RSN_ASE_8021X_PSK): return "8021X-PSK"; + case RSN_SEL(RSN_ASE_8021X_UNSPEC_SHA256): + return "8021X-UNSPEC-SHA256"; + case RSN_SEL(RSN_ASE_8021X_PSK_SHA256): + return "8021X-PSK-256"; case RSN_SEL(RSN_ASE_NONE): return "NONE"; } From nobody Fri Apr 4 16:56:24 2025 X-Original-To: dev-commits-src-main@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 4ZTlB06pMkz5s4ls; Fri, 04 Apr 2025 16:56: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTlB05sWdz3JnV; Fri, 04 Apr 2025 16:56:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743785784; 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=9miVLS1EJZOreosvxHEmie3h4WKi8LSmH4IFBArubc4=; b=NpIExGWdz6zc0uF4uJIJ8vW8AJkqo0Yptr6Nh9ATfFpWJzfWP2MPF9d/rHm187+Otc5XBA FZVvCv2zOkAGRaxgqK4WI22uTDQpQmC/Q1Lu3a753yu42U4OK/p4T4quC+X6x0aURD29Mx 48lAf1tp2EyWjpasH2tdO6omnp6rpHLHhsiybjizBBa7aeTzLluO+jAbGyuZFyjMkCkErc SpezE8rpthJpSEaWKxNM2ty4WBDm41DjaRpKFTud7NhnbPux3vUwktC6xXomkoKjeknaR3 oIXBgcMI7nt5IarC4a7ozC2rE9SWob6vFeYLWOlKkS0GTVMXLZ3rTWLvd0zh6w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743785784; a=rsa-sha256; cv=none; b=Mkmy68/jDpFO5ItuYA8Rc0mBRTHQR82sHTC/3XOPYr62rHh14Oomnej5OFGX67slieTjWZ pVgZiL81Ki8nEaDnvwqi+ICflBblCeO8t7uEEUrALvy8pBp/2rzhCl4K9QoJ0IAxsphLBU 9oT+HgIiy4Zzs1BZaXOxhthwPnXns0X39u0XepSkRLj7xYOG5kvPpfmPddy789HwQT1JGs XgVlpnRFluZQxPxlL52dLk870qhI+ZWJUDdZ9YY9zAZx+X+WX62juJuWkNIUwqQ9d4D/S7 AD/xK/tsgIxKz9jBLUhn43UfWdUxEnseHuAGlRKKJq3cm+HAZgCc2Gt0F9jkjw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743785784; 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=9miVLS1EJZOreosvxHEmie3h4WKi8LSmH4IFBArubc4=; b=aAhi/lOSLy2Iry5pLvowmWxkG9KhluIgtjzujURkOVGepe/BCUBO2N8rhgSQf0Cbj69wz3 kU5w2Rp86Egz64BWgeAKBAwQ7wjfqR4Zhv4sICdk2Qzq0Ecz2Oucx2Wg5fISON8vd6QT8N vQBRhRy+vKb0oaVv8Dqa+4tFRwlqs1AtkCuIBgKRm1BYvuXLUn5fFyUqFGz7TiYhU/qlYk ceRn6X4V+M/NVRmZ/0cgwLBGI/AgJQxL7gPU8yDGYrY3PKuEm/IWERE6KScKFErvyDu7qS 5Derjqplgxx2W9GqMtu5arbqbGipFWL6Eo0Yjk3SRe1bgCflT0j/xmOrTyMPfw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTlB05RyhzvNr; Fri, 04 Apr 2025 16:56:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 534GuOqI031572; Fri, 4 Apr 2025 16:56:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534GuO64031569; Fri, 4 Apr 2025 16:56:24 GMT (envelope-from git) Date: Fri, 4 Apr 2025 16:56:24 GMT Message-Id: <202504041656.534GuO64031569@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: 2a0d26d793b2 - main - tcp: fix typos in comment List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2a0d26d793b2ff63d36305aa98047a4bc6a6cd8c Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=2a0d26d793b2ff63d36305aa98047a4bc6a6cd8c commit 2a0d26d793b2ff63d36305aa98047a4bc6a6cd8c Author: Peter Lei AuthorDate: 2025-04-04 16:54:35 +0000 Commit: Michael Tuexen CommitDate: 2025-04-04 16:54:35 +0000 tcp: fix typos in comment Reviewed by: tuexen MFC after: 3 days Sponsored by: Netflix, Inc. --- sys/netinet/tcp_input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 29a6b431f311..a9b5f5374503 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1453,7 +1453,7 @@ drop: * is at least 3/8 of the current socket buffer size. * 3. receive buffer size has not hit maximal automatic size; * - * If all of the criteria are met we increaset the socket buffer + * If all of the criteria are met, we increase the socket buffer * by a 1/2 (bounded by the max). This allows us to keep ahead * of slow-start but also makes it so our peer never gets limited * by our rwnd which we then open up causing a burst. From nobody Fri Apr 4 20:09:20 2025 X-Original-To: dev-commits-src-main@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 4ZTqSc6v3Pz5sLgy; Fri, 04 Apr 2025 20:09:20 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTqSc655Yz4154; Fri, 04 Apr 2025 20:09:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743797360; 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=HW200ifUS42kC+8/2Xz/uDLXKQ6jXpYohTXAI1KjGqk=; b=dMSM6uB7kkwlThRnA9WzYmY54D+DqSSJp24it71K7Qr3WSl0f7XrzjlaTYK3ZYj8qsFooA IeqdyIE+a17juGpnFMNEMdzVz46ROcleiuKkSk0iEPtHGfXte70us+FfVYALZ2Qt0CqR64 eiDC9e9EUFOWNwLZHqaVhAUWCV81TH6b3+LjyCo3+8aVM3wQTXzK3MYcVYVqNEsK94IHYg 8K59q4K6qStSbPvEWSMa4YAS4nV+qT0VPM+sgAMI6bCp7BFwhUoWIIP4B6R6GNCKRn/mll r6xsKPsNRqmVT+Kn/2tLcarY9qJwEn8vd0kpA7P3qjA6vzcH1ot4dE1+c9Gy0w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743797360; a=rsa-sha256; cv=none; b=vsHNWZ8bwlqD1e6sDFJB098V9VsCrMdlg+B/d13hpgAjpViJ4F1dw76MFdJjFp4uiNd9yi qK3/XEgJ+8L2WreNDddD6IKoZIHvQOhsX1EMc1HrukdW9R6tODah8wOHlywAWcxCok8ixU 1ru+4ljfEbSZt4yH1FmKjaYwO16B0w5fWFkfabHlwZAr2XBNWmbU2yPKI8wfkFIpe0ubRz gv+5S+4RGSd0YFeNHHDPjKQn8zLU3bvFwWLSlIR4uQb2unO0VZaxzphPiv00PVfTArJbYE FwMp79pFC/HGu28A9xJj0qrr4AmGysS3EjjK/U0BT0PwUDk5susStfJPH1yStQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743797360; 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=HW200ifUS42kC+8/2Xz/uDLXKQ6jXpYohTXAI1KjGqk=; b=vVVIjXe8hUOJucCyVOcQA9BVHaL/lZr1c2tPlum2M/pS0iKoGKdEC3plcknO2lBB8i2TYS iOIcoNUEwBufnqSV88nOvrTfy++e2vWd+bqa/Gs/5Iw+6kkTR4bXKwr6LzhSNfVusuxBmT rlaSkd054kwNyE8fG9IpoMr1ro7YV+vMWz8jfM47/rVzdihuYftjZQYJn5zHPgvYQWbuWF kRCcDn8sycIElsmJla8HUptVyc+h6AxktZeuEYPS+p+Tklw5ufLhgpo99aOq4cTXXKMImJ xH8N/eoQ66Vc+Xau0ueWru1nkj/S9YUG+/tis+DfZ1vOVjeRwjNUghmXTBjUWw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTqSc5Dg8z11BL; Fri, 04 Apr 2025 20:09:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 534K9KaE090273; Fri, 4 Apr 2025 20:09:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534K9Kv4090270; Fri, 4 Apr 2025 20:09:20 GMT (envelope-from git) Date: Fri, 4 Apr 2025 20:09:20 GMT Message-Id: <202504042009.534K9Kv4090270@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: 3bd1e85fc13c - main - tcp: clear sendfile logging struct List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3bd1e85fc13cb90853046300dcaa31d63b45ee21 Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=3bd1e85fc13cb90853046300dcaa31d63b45ee21 commit 3bd1e85fc13cb90853046300dcaa31d63b45ee21 Author: Peter Lei AuthorDate: 2025-04-04 20:07:09 +0000 Commit: Michael Tuexen CommitDate: 2025-04-04 20:07:09 +0000 tcp: clear sendfile logging struct The sendfile black box logging struct is much smaller than the encompassing stack specific logging union. Be sure to clear the trailing unused memory when logging. Reviewed by: tuexen MFC after: 3 days Sponsored by: Netflix, Inc. --- sys/netinet/tcp_log_buf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/netinet/tcp_log_buf.c b/sys/netinet/tcp_log_buf.c index e9ad05382b81..5142b3ebdd71 100644 --- a/sys/netinet/tcp_log_buf.c +++ b/sys/netinet/tcp_log_buf.c @@ -2878,6 +2878,7 @@ tcp_log_sendfile(struct socket *so, off_t offset, size_t nbytes, int flags) struct timeval tv; tcp_log_eventspecific_t log; + memset(&log, 0, sizeof(log)); microuptime(&tv); log.u_sf.offset = offset; log.u_sf.length = nbytes; From nobody Fri Apr 4 20:12:28 2025 X-Original-To: dev-commits-src-main@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 4ZTqXF0vFDz5sMk5; Fri, 04 Apr 2025 20:12: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTqXF0bT2z423C; Fri, 04 Apr 2025 20:12:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743797549; 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=Es31No3C+NBnCfUG9/n9y1hEaidx/Pf8IHHgoqVYCps=; b=RRNj5Q9FPiwwVWbkOcjMkAZvoyUEjmh5cQc/upX6koBttmL0OyK5e66K3vpADw/IFPV9hM yZ10jVH25YaY8d/nJxc1usj3nUP/XmW6RLhEgouUyje7qathhsGw8urfVhlYkwUEf9+L0H HamABlACnDR+pJ2S2HwzrtY7r7A7iXg2kuzZPsFtYK9LuKHGFdPhovFIZ497OJhDDyON5A 24pneq57W57oNuD0Olm7OhGrWuwAra6EH+yUjXhO6lYf3dyCWfKqwTf3iXhkzuG7i9BFBu krDW16snrjEbZL0g10ihcnQsHBnEV4yKfTLeVXWBNnV9dAbCzrbOCaERcogtIw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743797549; a=rsa-sha256; cv=none; b=k7IDldQlF6DsvG/NMWzPiNbC22V2wIsizd3/cpB10RMFemINPHW3EF4rylJK71+W/dnMQ3 djUnB24O/4PEfw4Hh8qdmHLehQtI+tWohuDT9cruuYzAtWOtkhzY9ATkRMlS7G4NX33aDZ +swUrv0Hp2gGVG3EMsQbYaTmOgrgR61wf+zydWtkBrMTt+ABKipn/y4PcbP6JwkAV+UljI EwhmbZwWnr+OuBr2A6wmuOyWX6Pg8RMV7E/3CyJNB5WqYNRgepaJhviDlpjhaZyc6U30Vy W60budVJShlEHiyZADgBN9ynXtjTE5+WczyPUGyaqi+8W63ymiDcG6zMU+6+LA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743797549; 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=Es31No3C+NBnCfUG9/n9y1hEaidx/Pf8IHHgoqVYCps=; b=dCdYmwYK5T7OGRUxjJMfcR8fKTwJ0yN3hY0wIOdrIDPLlfMjggiINqCH+d/G6nb754xME+ IuG7XzsDvC0bH17AWzByn1u1+xzoXyyHLhg6aCDUbmy6ZtksjrGYJjjOtQ0/EGt6r5p+dz 6g+OV4RraoOES56t4jzw74oW1YQ8BmSXdCG+gBFCpWt6pCNFQB1Byq5fl8ifcOS7CF27x0 Fr84w0gHny6emUOUrsZ4oyby0MoKoKz7kgzNRAoS7zj9aCCvMBGECsO6l+/asEBJJyf56i 1REolPmjJSwZdyvyy3u0683AZEQBAfIzSu8ahx4OP7CNmIKQjAkpTk9E9r6v3w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTqXF07Jqz11YC; Fri, 04 Apr 2025 20:12:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 534KCSGp006516; Fri, 4 Apr 2025 20:12:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534KCSSw006513; Fri, 4 Apr 2025 20:12:28 GMT (envelope-from git) Date: Fri, 4 Apr 2025 20:12:28 GMT Message-Id: <202504042012.534KCSSw006513@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: 382af4d38b62 - main - tcp: clear blackbox logging union List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 382af4d38b62675f00f64275793a6b5fccfe62fa Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=382af4d38b62675f00f64275793a6b5fccfe62fa commit 382af4d38b62675f00f64275793a6b5fccfe62fa Author: Peter Lei AuthorDate: 2025-04-04 20:10:48 +0000 Commit: Michael Tuexen CommitDate: 2025-04-04 20:10:48 +0000 tcp: clear blackbox logging union Clear the black box logging containing union rather than the u_bbr structure for clarity and consistency. Currently u_bbr, u_raw, and u64_raw are the same size. No functional change intended. Reviewed by: tuexen MFC after: 3 days Sponsored by: Netflix, Inc. --- sys/netinet/tcp_hpts.c | 2 +- sys/netinet/tcp_stacks/rack.c | 66 +++++++++++++++++++-------------------- sys/netinet/tcp_stacks/rack_pcm.c | 2 +- sys/netinet/tcp_subr.c | 4 +-- 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/sys/netinet/tcp_hpts.c b/sys/netinet/tcp_hpts.c index 5b39c94e0e58..91f8251589e4 100644 --- a/sys/netinet/tcp_hpts.c +++ b/sys/netinet/tcp_hpts.c @@ -440,7 +440,7 @@ tcp_hpts_log(struct tcp_hpts_entry *hpts, struct tcpcb *tp, struct timeval *tv, * 16 bit - cwnd_gain * 8 bit - bbr_state, bbr_substate, inhpts; */ - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = hpts->p_nxt_slot; log.u_bbr.flex2 = hpts->p_cur_slot; log.u_bbr.flex3 = hpts->p_prev_slot; diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index f5bc435890e7..cb4e22401c12 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -684,7 +684,7 @@ out: struct newreno *ptr; ptr = ((struct newreno *)tp->t_ccv.cc_data); - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = ptr->beta; log.u_bbr.flex2 = ptr->beta_ecn; @@ -2678,7 +2678,7 @@ rack_log_retran_reason(struct tcp_rack *rack, struct rack_sendmap *rsm, uint32_t */ return; } - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = tsused; log.u_bbr.flex2 = thresh; log.u_bbr.flex3 = rsm->r_flags; @@ -2709,7 +2709,7 @@ rack_log_to_start(struct tcp_rack *rack, uint32_t cts, uint32_t to, int32_t slot union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = rack->rc_tp->t_srtt; log.u_bbr.flex2 = to; log.u_bbr.flex3 = rack->r_ctl.rc_hpts_flags; @@ -2752,7 +2752,7 @@ rack_log_to_event(struct tcp_rack *rack, int32_t to_num, struct rack_sendmap *rs union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex8 = to_num; log.u_bbr.flex1 = rack->r_ctl.rc_rack_min_rtt; @@ -2792,7 +2792,7 @@ rack_log_map_chg(struct tcpcb *tp, struct tcp_rack *rack, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex8 = flag; log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.cur_del_rate = (uintptr_t)prev; @@ -2840,7 +2840,7 @@ rack_log_rtt_upd(struct tcpcb *tp, struct tcp_rack *rack, uint32_t t, uint32_t l if (tcp_bblogging_on(tp)) { union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = t; log.u_bbr.flex2 = len; @@ -3013,7 +3013,7 @@ rack_log_progress_event(struct tcp_rack *rack, struct tcpcb *tp, uint32_t tick, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = line; log.u_bbr.flex2 = tick; @@ -3042,7 +3042,7 @@ rack_log_type_bbrsnd(struct tcp_rack *rack, uint32_t len, uint32_t slot, uint32_ if (rack_verbose_logging && tcp_bblogging_on(rack->rc_tp)) { union tcp_log_stackspecific log; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = slot; if (rack->rack_no_prr) @@ -3149,7 +3149,7 @@ rack_log_type_just_return(struct tcp_rack *rack, uint32_t cts, uint32_t tlen, ui union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = slot; log.u_bbr.flex2 = rack->r_ctl.rc_hpts_flags; @@ -3185,7 +3185,7 @@ rack_log_to_cancel(struct tcp_rack *rack, int32_t hpts_removed, int line, uint32 if (tcp_bblogging_on(rack->rc_tp)) { union tcp_log_stackspecific log; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = line; log.u_bbr.flex2 = rack->r_ctl.rc_last_output_to; @@ -3230,7 +3230,7 @@ rack_log_alt_to_to_cancel(struct tcp_rack *rack, /* No you can't use 1, its for the real to cancel */ return; } - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = flex1; log.u_bbr.flex2 = flex2; @@ -3255,7 +3255,7 @@ rack_log_to_processing(struct tcp_rack *rack, uint32_t cts, int32_t ret, int32_t union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = timers; log.u_bbr.flex2 = ret; log.u_bbr.flex3 = rack->r_ctl.rc_timer_exp; @@ -3285,7 +3285,7 @@ rack_log_to_prr(struct tcp_rack *rack, int frm, int orig_cwnd, int line) union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = rack->r_ctl.rc_prr_out; log.u_bbr.flex2 = rack->r_ctl.rc_prr_recovery_fs; if (rack->rack_no_prr) @@ -4118,7 +4118,7 @@ rack_log_rtt_shrinks(struct tcp_rack *rack, uint32_t us_cts, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = line; log.u_bbr.flex2 = rack->r_ctl.rc_time_probertt_starts; log.u_bbr.flex3 = rack->r_ctl.rc_lower_rtt_us_cts; @@ -4864,7 +4864,7 @@ rack_log_gp_calc(struct tcp_rack *rack, uint32_t add_part, uint32_t sub_part, ui union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = add_part; log.u_bbr.flex2 = sub_part; @@ -5214,7 +5214,7 @@ rack_do_goodput_measurement(struct tcpcb *tp, struct tcp_rack *rack, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = rack->r_ctl.current_round; log.u_bbr.flex2 = rack->r_ctl.last_rnd_of_gp_rise; @@ -5250,7 +5250,7 @@ rack_do_goodput_measurement(struct tcpcb *tp, struct tcp_rack *rack, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = rack->r_ctl.current_round; log.u_bbr.flex2 = (uint32_t)gp_est; @@ -5533,7 +5533,7 @@ rack_ack_received(struct tcpcb *tp, struct tcp_rack *rack, uint32_t th_ack, uint union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = th_ack; log.u_bbr.flex2 = tp->t_ccv.flags; @@ -5648,7 +5648,7 @@ rack_post_recovery(struct tcpcb *tp, uint32_t th_ack) union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = th_ack; log.u_bbr.flex2 = tp->t_ccv.flags; @@ -6481,7 +6481,7 @@ rack_log_hpts_diag(struct tcp_rack *rack, uint32_t cts, if (rack_verbose_logging && tcp_bblogging_on(rack->rc_tp)) { union tcp_log_stackspecific log; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = diag->p_nxt_slot; log.u_bbr.flex2 = diag->p_cur_slot; log.u_bbr.flex3 = diag->slot_req; @@ -6520,7 +6520,7 @@ rack_log_wakeup(struct tcpcb *tp, struct tcp_rack *rack, struct sockbuf *sb, uin union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = sb->sb_flags; log.u_bbr.flex2 = len; log.u_bbr.flex3 = sb->sb_state; @@ -14227,7 +14227,7 @@ rack_log_chg_info(struct tcpcb *tp, struct tcp_rack *rack, uint8_t mod, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex8 = mod; log.u_bbr.flex1 = flex1; @@ -15117,7 +15117,7 @@ rack_fini(struct tcpcb *tp, int32_t tcb_is_purged) union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex8 = 10; log.u_bbr.flex1 = rack->r_ctl.rc_num_maps_alloced; log.u_bbr.flex2 = rack->rc_free_cnt; @@ -15361,7 +15361,7 @@ rack_log_input_packet(struct tcpcb *tp, struct tcp_rack *rack, struct tcp_ackent tcp_req = tcp_req_find_req_for_seq(tp, ae->ack); } #endif - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); if (rack->rack_no_prr == 0) log.u_bbr.flex1 = rack->r_ctl.rc_prr_sndcnt; @@ -15564,7 +15564,7 @@ rack_log_pcm(struct tcp_rack *rack, uint8_t mod, uint32_t flex1, uint32_t flex2, struct timeval tv; (void)tcp_get_usecs(&tv); - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_tv_to_usectick(&tv); log.u_bbr.inflight = ctf_flight_size(rack->rc_tp, rack->r_ctl.rc_sacked); log.u_bbr.flex8 = mod; @@ -15647,7 +15647,7 @@ rack_new_round_setup(struct tcpcb *tp, struct tcp_rack *rack, uint32_t high_seq) union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = rack->r_ctl.current_round; log.u_bbr.flex2 = rack->r_ctl.last_rnd_of_gp_rise; @@ -16570,7 +16570,7 @@ rack_do_segment_nounlock(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th, tcp_req = tcp_req_find_req_for_seq(tp, th->th_ack); } #endif - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); if (rack->rack_no_prr == 0) log.u_bbr.flex1 = rack->r_ctl.rc_prr_sndcnt; @@ -17344,7 +17344,7 @@ at_lt_bw: union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = rack_bw_multipler; log.u_bbr.flex2 = len; @@ -18102,7 +18102,7 @@ rack_log_fsb(struct tcp_rack *rack, struct tcpcb *tp, struct socket *so, uint32_ union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = error; log.u_bbr.flex2 = flags; @@ -18367,7 +18367,7 @@ rack_log_queue_level(struct tcpcb *tp, struct tcp_rack *rack, err = in_pcbquery_txrlevel(rack->rc_inp, &p_queue); err = in_pcbquery_txrtlmt(rack->rc_inp, &p_rate); #endif - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = p_rate; log.u_bbr.flex2 = p_queue; @@ -18820,7 +18820,7 @@ rack_fast_rsm_output(struct tcpcb *tp, struct tcp_rack *rack, struct rack_sendma counter_u64_add(rack_collapsed_win_rxt, 1); counter_u64_add(rack_collapsed_win_rxt_bytes, (rsm->r_end - rsm->r_start)); } - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); if (rack->rack_no_prr) log.u_bbr.flex1 = 0; @@ -19369,7 +19369,7 @@ again: if (tcp_bblogging_on(rack->rc_tp)) { union tcp_log_stackspecific log; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); if (rack->rack_no_prr) log.u_bbr.flex1 = 0; @@ -21886,7 +21886,7 @@ send: if (tcp_bblogging_on(rack->rc_tp)) { union tcp_log_stackspecific log; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); if (rack->rack_no_prr) log.u_bbr.flex1 = 0; diff --git a/sys/netinet/tcp_stacks/rack_pcm.c b/sys/netinet/tcp_stacks/rack_pcm.c index 09e90da88895..b0e300847c4a 100644 --- a/sys/netinet/tcp_stacks/rack_pcm.c +++ b/sys/netinet/tcp_stacks/rack_pcm.c @@ -241,7 +241,7 @@ skip_ack_accounting: for (i=0; ir_ctl.pcm_i.cnt; i++) { e = &rack->r_ctl.pcm_s[i]; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_tv_to_usectick(&tv); log.u_bbr.inflight = ctf_flight_size(rack->rc_tp, rack->r_ctl.rc_sacked); log.u_bbr.flex8 = 1; diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 34964ed8283c..f3f28f54c459 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -2086,7 +2086,7 @@ tcp_respond(struct tcpcb *tp, void *ipgen, struct tcphdr *th, struct mbuf *m, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(tp); log.u_bbr.flex8 = 4; log.u_bbr.pkts_out = tp->t_maxseg; @@ -4364,7 +4364,7 @@ tcp_req_log_req_info(struct tcpcb *tp, struct tcp_sendfile_track *req, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(tp); log.u_bbr.flex8 = val; log.u_bbr.rttProp = req->timestamp; From nobody Fri Apr 4 20:41:27 2025 X-Original-To: dev-commits-src-main@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 4ZTrB721lBz5sPbV; Fri, 04 Apr 2025 20:41:51 +0000 (UTC) (envelope-from thj@freebsd.org) Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTrB64nhyz458n; Fri, 04 Apr 2025 20:41:50 +0000 (UTC) (envelope-from thj@freebsd.org) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=messagingengine.com header.s=fm2 header.b=MXrdcPIZ; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=freebsd.org (policy=none); spf=softfail (mx1.freebsd.org: 103.168.172.144 is neither permitted nor denied by domain of thj@freebsd.org) smtp.mailfrom=thj@freebsd.org Received: from phl-compute-10.internal (phl-compute-10.phl.internal [10.202.2.50]) by mailfout.phl.internal (Postfix) with ESMTP id C89A413801BB; Fri, 4 Apr 2025 16:41:49 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-10.internal (MEProxy); Fri, 04 Apr 2025 16:41:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; t=1743799309; x=1743885709; bh=5 Qa6ZJIMQ40keRa7Mmp65HDs6VxW5PZfBqKHtBxjJJE=; b=MXrdcPIZLuDBG5BjJ 9xcySRs/gvFdb6F9XPubk+4vD9bfDH9Mm/MEocC47oHlfH062nd4Lpcv5qAC5xtj beMB4WCdjumLRA4QQ5lv+t+QpvkftRH6ThiC3/RbeCsshv02YbwnLeCJRIhdNqQ1 97OgEQp5ggPOPaCPAIm5IiXsdeXse1j706qSn+eO13t4vJv5QLJPLj1dIOD05P14 NRouclewZK+yHZvuiWzAHUeSxnZkjNqSz28ausEbAKyclaUSn4B+5pcGZfRc0OEA 7nGn2DKW0fgLApNDjyYZLVsmazsNTqeeXIqzrIg4NFRkDZJWjM4Afoe3xDQF4y9z MzMMQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduledvgeefucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhepofggfffhvffkjghfufgtgfesthhqredtredt jeenucfhrhhomhepfdfvohhmucflohhnvghsfdcuoehthhhjsehfrhgvvggsshgurdhorh hgqeenucggtffrrghtthgvrhhnpefhveetjeeggedtudeuffevleevudejveduiedtfeeh ffelveejtdejkedutdehveenucffohhmrghinhepthgrrhhsnhgrphdrtghomhenucevlh hushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehthhhjsehfrhgv vggsshgurdhorhhgpdhnsggprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprh gtphhtthhopeguvghvqdgtohhmmhhithhsqdhsrhgtqdgrlhhlsehfrhgvvggsshgurdho rhhgpdhrtghpthhtohepuggvvhdqtghomhhmihhtshdqshhrtgdqmhgrihhnsehfrhgvvg gsshgurdhorhhgpdhrtghpthhtohepshhrtgdqtghomhhmihhtthgvrhhssehfrhgvvggs shgurdhorhhgpdhrtghpthhtoheptghpvghrtghivhgrsehtrghrshhnrghprdgtohhm X-ME-Proxy: Feedback-ID: ib75146ab:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 7C1C6BA0070; Fri, 4 Apr 2025 16:41:49 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 X-ThreadId: Te805ccfc18d7a474 Date: Fri, 04 Apr 2025 21:41:27 +0100 From: "Tom Jones" To: "Colin Percival" , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Message-Id: <1db1061f-f8a7-40d8-b9b3-e3a81bdfaebf@app.fastmail.com> In-Reply-To: <01000195fcbbe2ed-0afa2175-1e23-4d89-bda4-5bd86437b3a2-000000@email.amazonses.com> References: <202504030707.53377PCW040790@gitrepo.freebsd.org> <01000195fcbbe2ed-0afa2175-1e23-4d89-bda4-5bd86437b3a2-000000@email.amazonses.com> Subject: Re: git: 74a6f2a76b32 - main - iwx: Shorten log code field Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [-4.29 / 15.00]; RBL_SENDERSCORE_REPUT_9(-1.00)[103.168.172.144:from]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-0.995]; R_DKIM_ALLOW(-0.20)[messagingengine.com:s=fm2]; RCVD_IN_DNSWL_LOW(-0.10)[103.168.172.144:from]; MIME_GOOD(-0.10)[text/plain]; DMARC_POLICY_SOFTFAIL(0.10)[freebsd.org : No valid SPF, DKIM not aligned (relaxed),none]; XM_UA_NO_VERSION(0.01)[]; TO_DN_SOME(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEFALL_USER(0.00)[thj]; ARC_NA(0.00)[]; ASN(0.00)[asn:209242, ipnet:103.168.172.0/24, country:US]; DWL_DNSWL_NONE(0.00)[messagingengine.com:dkim]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org,dev-commits-src-main@freebsd.org]; RCVD_COUNT_THREE(0.00)[3]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCVD_TLS_LAST(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[messagingengine.com:+] X-Rspamd-Queue-Id: 4ZTrB64nhyz458n X-Spamd-Bar: ---- Sorry for the breakage, something has broken in my mail filters so direc= t mails to me aren=E2=80=99t landing in my inbox when also sent to src-c= ommits (just the folder for commits).=20 I=E2=80=99ll look at this as soon as I can (probably not until Monday). = If you want to remove iwx from the build (or just i386 in the meantime)= please do.=20 On Thu, Apr 3, 2025, at 18:38, Colin Percival wrote: > On 4/3/25 00:07, Tom Jones wrote: >> commit 74a6f2a76b32e01d05c4ad71897bd3a6831e703e >> =20 >> This fixes the build on i386. > > You sure about that? > > /usr/src/sys/dev/iwx/if_iwx.c:5762:22: error: shift count >=3D width o= f type=20 > [-Werror,-Wshift-count-overflow] > 5762 | if (data->cmd_paddr >> 32 !=3D (data->cmd_paddr +=20 > le32toh(desc->tbs[0].tb_len)) >> 32) > | ^ ~~ > /usr/src/sys/dev/iwx/if_iwx.c:5762:80: error: shift count >=3D width o= f type=20 > [-Werror,-Wshift-count-overflow] > 5762 | if (data->cmd_paddr >> 32 !=3D (data->cmd_paddr +=20 > le32toh(desc->tbs[0].tb_len)) >> 32) > |=20 > ^ ~~ > /usr/src/sys/dev/iwx/if_iwx.c:5769:22: error: shift count >=3D width o= f type=20 > [-Werror,-Wshift-count-overflow] > 5769 | if (data->cmd_paddr >> 32 !=3D (data->cmd_paddr +=20 > le32toh(desc->tbs[1].tb_len)) >> 32) > | ^ ~~ > /usr/src/sys/dev/iwx/if_iwx.c:5769:80: error: shift count >=3D width o= f type=20 > [-Werror,-Wshift-count-overflow] > 5769 | if (data->cmd_paddr >> 32 !=3D (data->cmd_paddr +=20 > le32toh(desc->tbs[1].tb_len)) >> 32) > |=20 > ^ ~~ > /usr/src/sys/dev/iwx/if_iwx.c:5778:23: error: shift count >=3D width o= f type=20 > [-Werror,-Wshift-count-overflow] > 5778 | if (data->cmd_paddr >> 32 !=3D (data->cmd_pad= dr +=20 > le32toh(desc->tbs[i + 2].tb_len)) >> 32) > | ^ ~~ > /usr/src/sys/dev/iwx/if_iwx.c:5778:85: error: shift count >=3D width o= f type=20 > [-Werror,-Wshift-count-overflow] > 5778 | if (data->cmd_paddr >> 32 !=3D (data->cmd_pad= dr +=20 > le32toh(desc->tbs[i + 2].tb_len)) >> 32) > |=20 > ^ ~~ > /usr/src/sys/dev/iwx/if_iwx.c:10971:47: error: format specifies type '= unsigned=20 > long' but the argument has type 'uint64_t' (aka 'unsigned long long')=20 > [-Werror,-Wformat] > 10971 | DPRINTF(("%s: k->wk_keytsc=3D%lu\n", __func__, k->wk= _keytsc)); > | ~~~ ^~~~~~~= ~~~~~ > | %llu > > --=20 > Colin Percival > FreeBSD Release Engineering Lead & EC2 platform maintainer > Founder, Tarsnap | www.tarsnap.com | Online backups for the truly para= noid --=20 - Tom From nobody Fri Apr 4 21:37:55 2025 X-Original-To: dev-commits-src-main@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 4ZTsQq34pYz5sSfl; Fri, 04 Apr 2025 21: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTsQq2KHFz3Fxm; Fri, 04 Apr 2025 21: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=1743802675; 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=AuK/6xhIaucXuy+IqIna6eBgXhUuX7kReOAFFSluI+c=; b=rcZ3yyihyWA8EoubtAwrJJCNOoWTJI8T7IZSmJtgcxy/sXAERgOv1jBrD4c7O6Nbni4l8C OZGWw/Ko0lk0mPF0hxPRzwT3KvxWAHQ7IbTNnILlDx+ysx5QBOFbFEC/SGJQJKYn75B95X uCB+ap81j2dot1UBLaAasbuNnAwWejS4VzAOTUw5Pcot1BRBhjUs0sq1/40oaN6UZbJETI n1JH4n0MntbdOOsvXcY7+WC9Vz7xw7C9rrL5eKmqet7JkrB47C0/Z/DXOA6F+45+TcQ0MM JY+gm5WdmO64oL7XJbRSsoFAcBwytkm0Q83mpDr3LQuWQatTNNI9JaP9stPkSg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743802675; a=rsa-sha256; cv=none; b=oxFReru5gsXAYlJ3/IU5rpUymI36gFLuDIChjSwJxnmtilNK9s6qKYfwdtbqdq89jo1ebn d8+NkcYk9RcfZ/DGExv+lLEhYXJF+EqoEjBTa1Ilq9w6g2BvAxoaROLQ5qaNT1H/YICbNe ORHaurBcRiuQwUiPCLZbZHr5HeSGyoyHoww5B1Mabr+ymaECs3Bb65NvEufTKnzbwC1Jun Yteax83d8eg1/W1Jzsjv6c3BZv8ICXeiwKLh8Wn8vJPP32CxA9FYYD6G4HMcZj+c9TkqGk KI8ZQmVMyBs3v1aj2kjCn4884HfsSm6kmtOjQLdcqt6VSjdrK60Omknf4tEv2w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743802675; 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=AuK/6xhIaucXuy+IqIna6eBgXhUuX7kReOAFFSluI+c=; b=l0hono0Z7DQw5tqZ4jxRdPqlf6OEiLIBPz7+oZQLppe3+PhN4D9jT8YBRNah/DvDB2F2aT GglSRsrdA/5IvsTuc6nJq8cDVGIrjku0UEpczI2WZkN6YNySwhmrj/+IwVgS9EV5Eaghaj xletm36/0jcrwGt+ZLFgHJTUrxajES5NCDyuJiILCi5+yaDh15pDyrfSuWlrbXOP7wgSey 2UFtj7gwsmXlIAYmX1p5EGzvY8L8pMu7FAT3ynZr4ONlAZv1BR1KOKDd77f67UOkFDR/CQ FzABWI4ucxMsPIlG/3Aay583Bt8OF2a9nTUnPdQsFsgtSBR07LWbNmS3lwC4Kg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTsQq1dF9z13fv; Fri, 04 Apr 2025 21:37:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 534Lbtcc058021; Fri, 4 Apr 2025 21:37:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534LbtF5058018; Fri, 4 Apr 2025 21:37:55 GMT (envelope-from git) Date: Fri, 4 Apr 2025 21:37:55 GMT Message-Id: <202504042137.534LbtF5058018@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: b1c62081feec - main - tcp: remove struct tcp_log_rack List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b1c62081feec535a4f2eeb4f8deb58913d9e281c Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=b1c62081feec535a4f2eeb4f8deb58913d9e281c commit b1c62081feec535a4f2eeb4f8deb58913d9e281c Author: Michael Tuexen AuthorDate: 2025-04-04 21:34:30 +0000 Commit: Michael Tuexen CommitDate: 2025-04-04 21:34:30 +0000 tcp: remove struct tcp_log_rack struct tcp_log_rack is not used, therefore remove it. Reviewed by: Peter Lei MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D49669 --- sys/netinet/tcp_log_buf.h | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/sys/netinet/tcp_log_buf.h b/sys/netinet/tcp_log_buf.h index 9ee2d97d47c2..06b2998b19ed 100644 --- a/sys/netinet/tcp_log_buf.h +++ b/sys/netinet/tcp_log_buf.h @@ -60,14 +60,6 @@ struct tcp_log_verbose uint8_t _pad[4]; } ALIGN_TCP_LOG; -/* Internal RACK state variables. */ -struct tcp_log_rack -{ - uint32_t tlr_rack_rtt; /* rc_rack_rtt */ - uint8_t tlr_state; /* Internal RACK state */ - uint8_t _pad[3]; /* Padding */ -}; - struct tcp_log_bbr { uint64_t cur_del_rate; uint64_t delRate; @@ -126,7 +118,6 @@ struct tcp_log_sendfile { */ union tcp_log_stackspecific { - struct tcp_log_rack u_rack; struct tcp_log_bbr u_bbr; struct tcp_log_sendfile u_sf; struct tcp_log_raw u_raw; /* "raw" log access */ @@ -185,7 +176,6 @@ struct tcp_log_buffer uint8_t _pad[3]; /* Padding */ /* Per-stack info */ union tcp_log_stackspecific tlb_stackinfo; -#define tlb_rack tlb_stackinfo.u_rack /* The packet */ uint32_t tlb_len; /* The packet's data length */ From nobody Fri Apr 4 23:23:41 2025 X-Original-To: dev-commits-src-main@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 4ZTvmz51jWz5sbVr; Fri, 04 Apr 2025 23:23:47 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: from mail-qk1-x733.google.com (mail-qk1-x733.google.com [IPv6:2607:f8b0:4864:20::733]) (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 4ZTvmz0J8Rz3VbY; Fri, 04 Apr 2025 23:23:47 +0000 (UTC) (envelope-from markjdb@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-qk1-x733.google.com with SMTP id af79cd13be357-7c5e2fe5f17so248539685a.3; Fri, 04 Apr 2025 16:23:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743809025; x=1744413825; darn=freebsd.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:sender :from:to:cc:subject:date:message-id:reply-to; bh=Umw1+sK3JlLczvqaArquLggNDd+t4YG9fK7EmCCeKYo=; b=b5uBB2oP7581AE2j/xqCkEQj6zhpMjWRjDLiAdpNiGt71UW79iFd3MUtONEIqUxhMl FWVxleGRFVXXEgKv9XGoqvZCO7FhB7spts0Bo3YonWrDgJW1GmF0xSNFzUsSR/6Ng5m+ vpVjOrA4SoCn/FYLRgN0QPz3Yjaa2V6vMq24JGqENzUe/+QmwRo9C0FpujSA44i7EQBp MP4X1CdTdKa0Yp2KYITDpxiZQrMoMsFzt3JvzaQifSNJMgpv6/FYZAhtodtq5hWLcpub XnSu9R9MoiV8CkZQKIiJD/ebi68wjW5S6YJWoBY/zoNKoicTpIg6NWEfhkf3t2356StG kPpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743809025; x=1744413825; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:sender :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Umw1+sK3JlLczvqaArquLggNDd+t4YG9fK7EmCCeKYo=; b=X+cxCX6atFZ0zbYYocEKWlnIFJNHTup/Ca7qA2SRPndH/k+57anMyF9fxsV6Em0WlN LC28YYFLetKxXb3HyKRGxWGcQC+SDilqMg+J/h1kZ5SYOn2hbsJvS70Kf8iApDeuPXWK SVPEDoNGWKNNif5PBk3ibnxQt2V762KnHZnGwcw1tTQJheWeCMmJ+w4EsFlMOWmowZXd QBrrul80rbKQw4FRfHX70VHb1hqSDuiKz+AjgHIEgjpeGTx0mf4hkinw8V51LqFOd/Ml m7k4J1AsonuPDtM5qUQebj8jcLmzqUVn3bYlgzGI58MU69skVFYtWR9w0FRrSM9LE1VB fEig== X-Forwarded-Encrypted: i=1; AJvYcCW3AT3he9VrUOfqfJhqQoIzRceAA342qBfmNx/7KJYhwKNYzXQ3OZai5DANTZHA+oeZC0xX8kB11SNcVlszc112TeY3RnE=@freebsd.org, AJvYcCWFlxE30JZk8uCjQo4/GtMD5of9lXQUo9ZdV9LHt4hwUSa93W6TRbvq6kIiWOEmqLE/FthNJAKpjceJoRw+cSSsEZNF@freebsd.org, AJvYcCX1NZ/HXJPR6Qk2tb0MsarbSP3kyLrJ0/z+4aJsVBVWSnt1XQGSOBgCXdBD89LR+wZDHa65V2VqSWuB/tdb91I=@freebsd.org X-Gm-Message-State: AOJu0YxcX6asFKojl3yz09Z/JZ95cr/uodl/xVpuJ8UALv7qWpUvQJmg Pu+ef2tqNZs2gk1Uo3qVxLmNY5SBCHDW2XsMMeE17Fmf6yBEgOlPf08i6yop3cw= X-Gm-Gg: ASbGnctOSS5ugkDqnhpiiESYjKD5SDRmuWJeAaf3B5lItNz8TfaTwxg5C/AR+r4W/LA t5XFllAopTVFwNG7OHeglHnaasd14V40HEOQg0zMw98T30m4PWJB3dDYLSI5grdEF1eE+PrHbgd +GomR97vf9fnEvuQVqCLb4eJbRU3DTiRASWazu8OrOeNIoZEJEjre78tIGE5OGJv+3/f9Ke03lu RVaFSPS2aGqttmBNDPuGD3Ht5JY2I2RlVll2jdID7eqOx92WL3CMORUZugY6CWW12C/6HW/Gk9e 1z5CA9ZyREP8E2Mn3d5GcQY/FiWaODCpgFo+4HYvXeOlh64MDOTHefmPOqk= X-Google-Smtp-Source: AGHT+IFPpAQXfSQiPBfTy/0wHLQPhvimXVMGw3xDw6o/JkFN3QlNXTCRAbImVBKyXqgRWbiYPTzhsw== X-Received: by 2002:a05:620a:24c6:b0:7c5:4949:2400 with SMTP id af79cd13be357-7c77dd6b3d4mr220408685a.9.1743809025268; Fri, 04 Apr 2025 16:23:45 -0700 (PDT) Received: from nuc (192-0-220-237.cpe.teksavvy.com. [192.0.220.237]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c76e75ec7bsm272868685a.43.2025.04.04.16.23.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Apr 2025 16:23:44 -0700 (PDT) Date: Fri, 4 Apr 2025 19:23:41 -0400 From: Mark Johnston To: Tom Jones Cc: Colin Percival , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 74a6f2a76b32 - main - iwx: Shorten log code field Message-ID: References: <202504030707.53377PCW040790@gitrepo.freebsd.org> <01000195fcbbe2ed-0afa2175-1e23-4d89-bda4-5bd86437b3a2-000000@email.amazonses.com> <1db1061f-f8a7-40d8-b9b3-e3a81bdfaebf@app.fastmail.com> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1db1061f-f8a7-40d8-b9b3-e3a81bdfaebf@app.fastmail.com> X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US] X-Rspamd-Queue-Id: 4ZTvmz0J8Rz3VbY X-Spamd-Bar: ---- On Fri, Apr 04, 2025 at 09:41:27PM +0100, Tom Jones wrote: > Sorry for the breakage, something has broken in my mail filters so direct mails to me aren’t landing in my inbox when also sent to src-commits (just the folder for commits). > > I’ll look at this as soon as I can (probably not until Monday). If you want to remove iwx from the build (or just i386 in the meantime) please do. I removed iwx from the i386 build yesterday: https://cgit.freebsd.org/src/commit/?id=296b60793df6ae855ba414fbf4823467e9615b2f > > On Thu, Apr 3, 2025, at 18:38, Colin Percival wrote: > > On 4/3/25 00:07, Tom Jones wrote: > >> commit 74a6f2a76b32e01d05c4ad71897bd3a6831e703e > >> > >> This fixes the build on i386. > > > > You sure about that? > > > > /usr/src/sys/dev/iwx/if_iwx.c:5762:22: error: shift count >= width of type > > [-Werror,-Wshift-count-overflow] > > 5762 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + > > le32toh(desc->tbs[0].tb_len)) >> 32) > > | ^ ~~ > > /usr/src/sys/dev/iwx/if_iwx.c:5762:80: error: shift count >= width of type > > [-Werror,-Wshift-count-overflow] > > 5762 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + > > le32toh(desc->tbs[0].tb_len)) >> 32) > > | > > ^ ~~ > > /usr/src/sys/dev/iwx/if_iwx.c:5769:22: error: shift count >= width of type > > [-Werror,-Wshift-count-overflow] > > 5769 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + > > le32toh(desc->tbs[1].tb_len)) >> 32) > > | ^ ~~ > > /usr/src/sys/dev/iwx/if_iwx.c:5769:80: error: shift count >= width of type > > [-Werror,-Wshift-count-overflow] > > 5769 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + > > le32toh(desc->tbs[1].tb_len)) >> 32) > > | > > ^ ~~ > > /usr/src/sys/dev/iwx/if_iwx.c:5778:23: error: shift count >= width of type > > [-Werror,-Wshift-count-overflow] > > 5778 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + > > le32toh(desc->tbs[i + 2].tb_len)) >> 32) > > | ^ ~~ > > /usr/src/sys/dev/iwx/if_iwx.c:5778:85: error: shift count >= width of type > > [-Werror,-Wshift-count-overflow] > > 5778 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + > > le32toh(desc->tbs[i + 2].tb_len)) >> 32) > > | > > ^ ~~ > > /usr/src/sys/dev/iwx/if_iwx.c:10971:47: error: format specifies type 'unsigned > > long' but the argument has type 'uint64_t' (aka 'unsigned long long') > > [-Werror,-Wformat] > > 10971 | DPRINTF(("%s: k->wk_keytsc=%lu\n", __func__, k->wk_keytsc)); > > | ~~~ ^~~~~~~~~~~~ > > | %llu > > > > -- > > Colin Percival > > FreeBSD Release Engineering Lead & EC2 platform maintainer > > Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid > > -- > - Tom > From nobody Fri Apr 4 23:25:03 2025 X-Original-To: dev-commits-src-main@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 4ZTvpR4MQTz5sbY9; Fri, 04 Apr 2025 23:25:03 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTvpR3h4Gz3W5D; Fri, 04 Apr 2025 23:25:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809103; 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=titvMm1vrUnWoKYPG2jC1r+afxZ0EDhneD7xNlmq2Mg=; b=M2l9IpC9gxfazvY+ujHLMxjQJny0tHJj4QgzsLpP01r3juyfTtFPF7jnBxED3/CfSQcFRo cDQUfcnOLATd4z1DC5ldwU3/Ye2TmulTppu4phDUFOcA4IIGBquLl0OL2a0utLCRjkdBfN VVxpRlrvOD2s0vZh8yTfBOnhU4zdiIXpm++dEKQ+XvXMJl7ZDPDHhyReQISrVMbHg1WnJT GVsOQNW/lbL5sYcqMhmZxau7sbZrcrN7O/5XIWZDYfCVnUQZXdvBGuWdQ41VnQe9dFfiZX YC2mHpDKpecqan+6z1Cu1Jr7j8SBq+CG0wCcl3xiyCoDB+xZ07przi1Su8XLGw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743809103; a=rsa-sha256; cv=none; b=OUfwYIa1a91YhLV1Q+AYncLZfFd7oEpZVrJIWqSkmo1G0cFoSOtI2eP8KKWUZVVlWzT1cE B13iR2rn25FL3Ev7uWTv0Fd8gsQ+l8QyH7WwVoZqivxpfWJsSo11VMuPExGrSc13LHpqV+ dBbPl8PFFWqQE1vR78YbsTwCdEY8QTpK7jO4Ea6VyvhCYnCxkKjK5ukY4/UhMiZe1gMDmz N+015408kxtlaMY3zxlUZaqWBaD8e+CXFGb0wg5Pp+h+uIkeO4wQZNVg0dVGdgLbI06bby nWDlHrzDoYYyLGZeuW0Rs4D3R0Ommon5Ioio1cVXGJ/+dXHLt7YfK7kDrbs0EA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809103; 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=titvMm1vrUnWoKYPG2jC1r+afxZ0EDhneD7xNlmq2Mg=; b=JafzpYlYTinxdV0tAeiMAO7/S5ogcEA6b5puyS+XLhXhVAEdGjTZxpXM2asllgDHpWi5H2 mOjW0OoRYwQFhiTAMg7a7jMW5Ipebj0L00pFR+x9HNnJ1xBus+id8uf/T5G51mKNGrJR9E yn6l7JX7z1x2bWNNW/g2zQgSOrjWCVPaAFgBL5GKwEpy0bmYrCN/LA830eeJVmf8qnRh41 AAcZT45A/O4znSBT5yGE95FszojZCn9ygD2Iccna1Z1T0lTLKfn2yxRJer9xuLOiQHqaSy DfJr/iFcEQJnZIRmtvdfbVd/D1dfmuwxRob2HGSy5vyc2c98qqqaAwaFgevheg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTvpR300Yz16Sc; Fri, 04 Apr 2025 23:25:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 534NP3BW063241; Fri, 4 Apr 2025 23:25:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534NP385063238; Fri, 4 Apr 2025 23:25:03 GMT (envelope-from git) Date: Fri, 4 Apr 2025 23:25:03 GMT Message-Id: <202504042325.534NP385063238@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 43c1eb894a57 - main - vm_object: Fix handling of wired map entries in vm_object_split() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 43c1eb894a57ef30562a02708445c512610d4f02 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=43c1eb894a57ef30562a02708445c512610d4f02 commit 43c1eb894a57ef30562a02708445c512610d4f02 Author: Mark Johnston AuthorDate: 2025-04-04 20:29:25 +0000 Commit: Mark Johnston CommitDate: 2025-04-04 23:24:49 +0000 vm_object: Fix handling of wired map entries in vm_object_split() Suppose a vnode is mapped with MAP_PROT and MAP_PRIVATE, mlock() is called on the mapping, and then the vnode is truncated such that the last page of the mapping becomes invalid. The now-invalid page will be unmapped, but stays resident in the VM object to preserve the invariant that a range of pages mapped by a wired map entry is always resident. This invariant is checked by vm_object_unwire(), for example. Then, suppose that the mapping is upgraded to PROT_READ|PROT_WRITE. We will copy the invalid page into a new anonymous VM object. If the process then forks, vm_object_split() may then be called on the object. Upon encountering an invalid page, rather than moving it into the destination object, it is removed. However, this is wrong when the entry is wired, since the invalid page's wiring belongs to the map entry; this behaviour also violates the invariant mentioned above. Fix this by moving invalid pages into the destination object if the map entry is wired. In this case we must not dirty the page, so add a flag to vm_page_iter_rename() to control this. Reported by: syzkaller Reviewed by: dougm, kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49443 --- sys/vm/vm_object.c | 11 ++++++++--- sys/vm/vm_page.c | 16 ++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 4ab20a86e155..c69fd0d1c161 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -1597,16 +1597,21 @@ retry: } /* - * The page was left invalid. Likely placed there by + * If the page was left invalid, it was likely placed there by * an incomplete fault. Just remove and ignore. + * + * One other possibility is that the map entry is wired, in + * which case we must hang on to the page to avoid leaking it, + * as the map entry owns the wiring. This case can arise if the + * backing pager is truncated. */ - if (vm_page_none_valid(m)) { + if (vm_page_none_valid(m) && entry->wired_count == 0) { if (vm_page_iter_remove(&pages, m)) vm_page_free(m); continue; } - /* vm_page_iter_rename() will dirty the page. */ + /* vm_page_iter_rename() will dirty the page if it is valid. */ if (!vm_page_iter_rename(&pages, m, new_object, m->pindex - offidxstart)) { vm_page_xunbusy(m); diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index f351f60f833c..f9653f1d1ec9 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -2038,15 +2038,10 @@ vm_page_replace(vm_page_t mnew, vm_object_t object, vm_pindex_t pindex, * * Panics if a page already resides in the new object at the new pindex. * - * Note: swap associated with the page must be invalidated by the move. We - * have to do this for several reasons: (1) we aren't freeing the - * page, (2) we are dirtying the page, (3) the VM system is probably - * moving the page from object A to B, and will then later move - * the backing store from A to B and we can't have a conflict. - * - * Note: we *always* dirty the page. It is necessary both for the - * fact that we moved it, and because we may be invalidating - * swap. + * This routine dirties the page if it is valid, as callers are expected to + * transfer backing storage only after moving the page. Dirtying the page + * ensures that the destination object retains the most recent copy of the + * page. * * The objects must be locked. */ @@ -2087,7 +2082,8 @@ vm_page_iter_rename(struct pctrie_iter *old_pages, vm_page_t m, m->object = new_object; vm_page_insert_radixdone(m, new_object, mpred); - vm_page_dirty(m); + if (vm_page_any_valid(m)) + vm_page_dirty(m); vm_pager_page_inserted(new_object, m); return (true); } From nobody Fri Apr 4 23:25:04 2025 X-Original-To: dev-commits-src-main@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 4ZTvpS65Scz5sbBW; Fri, 04 Apr 2025 23:25: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTvpS450gz3WJ2; Fri, 04 Apr 2025 23:25:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809104; 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=yAHBPimYQpXBvlVAfLEvHFTj784m9UnX6sInP+X9GbE=; b=awshiEiudrSJKOlnj4ugWXMoQx11aS5aAJSbuo84CTNaWM2QXAgeIqTDmO7Yqm/GXEX39w 48BMCkAvhAgmntDruLFNm4CzIPPjaKXXn2CcpgHHoWQCO3wPSwtsn0IdcuPZ246RJ8B3E2 lOUEXUeNU/EhYmEw86tfsoujPgcYkh9idcIRptF9BfYwewp8z4fuCP5H0CiliI2BKDuRrQ 54h3Ky1rJqIyg2zUKe7N6akGytmpT8FpU8LMOiIs7oCY1K6SQFluRD/mvZlPyzZNERJii5 TrDntVGX/6iKRpftnO3bOu44x3oFXME4QbGJL4drgjGiH7PF6QRVZzdEGlxD0g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743809104; a=rsa-sha256; cv=none; b=SXPVXjQL5IfIGOV2hiaRwsHx5pI0LxsjtWEbQY/Mu8iN9kbP8rI7qx0LhnbfVWKB9t0Yn+ iyxARRa1xJ1YMy/PGS8/5RLw2N5rKgA9tZs0oexL+xqlHG/8v/1GaJ47TMI1ShQ3RTVZHG y2UmOyre63FNQWnSICqE4d46/J76ncm2BfVQ8iB+TmattW8/9jWho2BASn3Wqy774L5j0l nfVT39GheKHp3O9dh0uRm6+quuQaI6Le0dEIIJ0IrsODTcRX7rFCPYMdhhxl3R9e2ci5+d e/KCH7ivl+/QOjdVvOZ9iva72RZUhcy1ek944q/+2sYpZIJHkIuLdyBbEq+r/Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809104; 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=yAHBPimYQpXBvlVAfLEvHFTj784m9UnX6sInP+X9GbE=; b=V9xvA0ETci0gKMvJ+kwM9XxBuS41Syh/K2bLe5zGbPUHbB1AQ6AbLZ40M2JI4RDen0KqMl 6BHxZOYXGHKcOmrcK3lYk5+Zd4/cjVxGMkBnNTF9FERWWE5yCfz6KqUGYpae589Q0sRqYU lOJ7jHho4+h5Q6SLR0pt1J+MlGoTpnAUIceViVp5F7l2BmBMyzbIZ3CXCTTkVArYfRs+5B +Pg+Vgm7xbNRrr1G9LlreIsUoOGONlGX80CdXJVUd3jfazI+QM/kEcKHBErGDyu7bEbDhM B4e4mmsDmsstLvrQ95RF/k/mG10NrX84LPQO38dwWC9yxHHC60jwc3xDnKDjDw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTvpS3fc2z15vB; Fri, 04 Apr 2025 23:25:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 534NP4vA063276; Fri, 4 Apr 2025 23:25:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534NP4oS063273; Fri, 4 Apr 2025 23:25:04 GMT (envelope-from git) Date: Fri, 4 Apr 2025 23:25:04 GMT Message-Id: <202504042325.534NP4oS063273@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: f8ed8382daf4 - main - gve: Allocate qpl per ring at ring allocation time List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: f8ed8382daf4b9a97056b1dba4fe4e5cb4f7485c Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=f8ed8382daf4b9a97056b1dba4fe4e5cb4f7485c commit f8ed8382daf4b9a97056b1dba4fe4e5cb4f7485c Author: Vee Agarwal AuthorDate: 2025-04-04 22:53:31 +0000 Commit: Mark Johnston CommitDate: 2025-04-04 23:24:49 +0000 gve: Allocate qpl per ring at ring allocation time Every tx and rx ring has its own queue-page-list (QPL) that serves as the bounce buffer. Previously we were allocating QPLs for all queues before the queues themselves were allocated and later associating a QPL with a queue. This is avoidable complexity: it is much more natural for each queue to allocate and free its own QPL. Signed-off-by: Vee Agarwal Reviewed by: markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49426 --- sys/dev/gve/gve.h | 6 +- sys/dev/gve/gve_main.c | 8 --- sys/dev/gve/gve_qpl.c | 174 +++++++++++++++++------------------------------ sys/dev/gve/gve_rx.c | 15 +++- sys/dev/gve/gve_rx_dqo.c | 15 +++- sys/dev/gve/gve_tx.c | 12 +++- sys/dev/gve/gve_tx_dqo.c | 16 ++++- 7 files changed, 114 insertions(+), 132 deletions(-) diff --git a/sys/dev/gve/gve.h b/sys/dev/gve/gve.h index 39965c8669cf..bf15eb3ccabc 100644 --- a/sys/dev/gve/gve.h +++ b/sys/dev/gve/gve.h @@ -542,7 +542,6 @@ struct gve_priv { struct gve_irq_db *irq_db_indices; enum gve_queue_format queue_format; - struct gve_queue_page_list *qpls; struct gve_queue_config tx_cfg; struct gve_queue_config rx_cfg; uint32_t num_queues; @@ -629,8 +628,9 @@ void gve_db_bar_write_4(struct gve_priv *priv, bus_size_t offset, uint32_t val); void gve_db_bar_dqo_write_4(struct gve_priv *priv, bus_size_t offset, uint32_t val); /* QPL (Queue Page List) functions defined in gve_qpl.c */ -int gve_alloc_qpls(struct gve_priv *priv); -void gve_free_qpls(struct gve_priv *priv); +struct gve_queue_page_list *gve_alloc_qpl(struct gve_priv *priv, uint32_t id, + int npages, bool single_kva); +void gve_free_qpl(struct gve_priv *priv, struct gve_queue_page_list *qpl); int gve_register_qpls(struct gve_priv *priv); int gve_unregister_qpls(struct gve_priv *priv); void gve_mextadd_free(struct mbuf *mbuf); diff --git a/sys/dev/gve/gve_main.c b/sys/dev/gve/gve_main.c index 8e764f9660d7..72e7fc2e3f89 100644 --- a/sys/dev/gve/gve_main.c +++ b/sys/dev/gve/gve_main.c @@ -482,8 +482,6 @@ gve_free_rings(struct gve_priv *priv) gve_free_irqs(priv); gve_free_tx_rings(priv); gve_free_rx_rings(priv); - if (gve_is_qpl(priv)) - gve_free_qpls(priv); } static int @@ -491,12 +489,6 @@ gve_alloc_rings(struct gve_priv *priv) { int err; - if (gve_is_qpl(priv)) { - err = gve_alloc_qpls(priv); - if (err != 0) - goto abort; - } - err = gve_alloc_rx_rings(priv); if (err != 0) goto abort; diff --git a/sys/dev/gve/gve_qpl.c b/sys/dev/gve/gve_qpl.c index 1fcc2b5365c9..0e7098dcd4a1 100644 --- a/sys/dev/gve/gve_qpl.c +++ b/sys/dev/gve/gve_qpl.c @@ -36,28 +36,9 @@ static MALLOC_DEFINE(M_GVE_QPL, "gve qpl", "gve qpl allocations"); -static uint32_t -gve_num_tx_qpls(struct gve_priv *priv) -{ - if (!gve_is_qpl(priv)) - return (0); - - return (priv->tx_cfg.max_queues); -} - -static uint32_t -gve_num_rx_qpls(struct gve_priv *priv) -{ - if (!gve_is_qpl(priv)) - return (0); - - return (priv->rx_cfg.max_queues); -} - -static void -gve_free_qpl(struct gve_priv *priv, uint32_t id) +void +gve_free_qpl(struct gve_priv *priv, struct gve_queue_page_list *qpl) { - struct gve_queue_page_list *qpl = &priv->qpls[id]; int i; for (i = 0; i < qpl->num_dmas; i++) { @@ -92,12 +73,14 @@ gve_free_qpl(struct gve_priv *priv, uint32_t id) if (qpl->dmas != NULL) free(qpl->dmas, M_GVE_QPL); + + free(qpl, M_GVE_QPL); } -static int +struct gve_queue_page_list * gve_alloc_qpl(struct gve_priv *priv, uint32_t id, int npages, bool single_kva) { - struct gve_queue_page_list *qpl = &priv->qpls[id]; + struct gve_queue_page_list *qpl; int err; int i; @@ -105,9 +88,12 @@ gve_alloc_qpl(struct gve_priv *priv, uint32_t id, int npages, bool single_kva) device_printf(priv->dev, "Reached max number of registered pages %ju > %ju\n", (uintmax_t)npages + priv->num_registered_pages, (uintmax_t)priv->max_registered_pages); - return (EINVAL); + return (NULL); } + qpl = malloc(sizeof(struct gve_queue_page_list), M_GVE_QPL, + M_WAITOK | M_ZERO); + qpl->id = id; qpl->num_pages = 0; qpl->num_dmas = 0; @@ -163,126 +149,90 @@ gve_alloc_qpl(struct gve_priv *priv, uint32_t id, int npages, bool single_kva) priv->num_registered_pages++; } - return (0); + return (qpl); abort: - gve_free_qpl(priv, id); - return (err); + gve_free_qpl(priv, qpl); + return (NULL); } -void -gve_free_qpls(struct gve_priv *priv) -{ - int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); - int i; - - if (num_qpls == 0) - return; - - if (priv->qpls != NULL) { - for (i = 0; i < num_qpls; i++) - gve_free_qpl(priv, i); - free(priv->qpls, M_GVE_QPL); - priv->qpls = NULL; - } -} - -int gve_alloc_qpls(struct gve_priv *priv) +int +gve_register_qpls(struct gve_priv *priv) { - int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); - int num_pages; + struct gve_ring_com *com; + struct gve_tx_ring *tx; + struct gve_rx_ring *rx; int err; int i; - if (num_qpls == 0) + if (gve_get_state_flag(priv, GVE_STATE_FLAG_QPLREG_OK)) return (0); - priv->qpls = malloc(num_qpls * sizeof(*priv->qpls), M_GVE_QPL, - M_WAITOK | M_ZERO); - - num_pages = gve_is_gqi(priv) ? - priv->tx_desc_cnt / GVE_QPL_DIVISOR : - GVE_TX_NUM_QPL_PAGES_DQO; - for (i = 0; i < gve_num_tx_qpls(priv); i++) { - err = gve_alloc_qpl(priv, i, num_pages, - /*single_kva=*/true); - if (err != 0) - goto abort; - } - - num_pages = gve_is_gqi(priv) ? priv->rx_desc_cnt : GVE_RX_NUM_QPL_PAGES_DQO; - for (; i < num_qpls; i++) { - err = gve_alloc_qpl(priv, i, num_pages, /*single_kva=*/false); - if (err != 0) - goto abort; - } - - return (0); - -abort: - gve_free_qpls(priv); - return (err); -} - -static int -gve_unregister_n_qpls(struct gve_priv *priv, int n) -{ - int err; - int i; - - for (i = 0; i < n; i++) { - err = gve_adminq_unregister_page_list(priv, priv->qpls[i].id); + /* Register TX qpls */ + for (i = 0; i < priv->tx_cfg.num_queues; i++) { + tx = &priv->tx[i]; + com = &tx->com; + err = gve_adminq_register_page_list(priv, com->qpl); if (err != 0) { device_printf(priv->dev, - "Failed to unregister qpl %d, err: %d\n", - priv->qpls[i].id, err); + "Failed to register qpl %d, err: %d\n", + com->qpl->id, err); + /* Caller schedules a reset when this fails */ + return (err); } } - if (err != 0) - return (err); - - return (0); -} - -int -gve_register_qpls(struct gve_priv *priv) -{ - int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); - int err; - int i; - - if (gve_get_state_flag(priv, GVE_STATE_FLAG_QPLREG_OK)) - return (0); - - for (i = 0; i < num_qpls; i++) { - err = gve_adminq_register_page_list(priv, &priv->qpls[i]); + /* Register RX qpls */ + for (i = 0; i < priv->rx_cfg.num_queues; i++) { + rx = &priv->rx[i]; + com = &rx->com; + err = gve_adminq_register_page_list(priv, com->qpl); if (err != 0) { device_printf(priv->dev, "Failed to register qpl %d, err: %d\n", - priv->qpls[i].id, err); - goto abort; + com->qpl->id, err); + /* Caller schedules a reset when this fails */ + return (err); } } - gve_set_state_flag(priv, GVE_STATE_FLAG_QPLREG_OK); return (0); - -abort: - gve_unregister_n_qpls(priv, i); - return (err); } int gve_unregister_qpls(struct gve_priv *priv) { - int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); int err; + int i; + struct gve_ring_com *com; + struct gve_tx_ring *tx; + struct gve_rx_ring *rx; if (!gve_get_state_flag(priv, GVE_STATE_FLAG_QPLREG_OK)) return (0); - err = gve_unregister_n_qpls(priv, num_qpls); + for (i = 0; i < priv->tx_cfg.num_queues; i++) { + tx = &priv->tx[i]; + com = &tx->com; + err = gve_adminq_unregister_page_list(priv, com->qpl->id); + if (err != 0) { + device_printf(priv->dev, + "Failed to unregister qpl %d, err: %d\n", + com->qpl->id, err); + } + } + + for (i = 0; i < priv->rx_cfg.num_queues; i++) { + rx = &priv->rx[i]; + com = &rx->com; + err = gve_adminq_unregister_page_list(priv, com->qpl->id); + if (err != 0) { + device_printf(priv->dev, + "Failed to unregister qpl %d, err: %d\n", + com->qpl->id, err); + } + } + if (err != 0) return (err); diff --git a/sys/dev/gve/gve_rx.c b/sys/dev/gve/gve_rx.c index e540ad6f4c11..e1a228c0e69c 100644 --- a/sys/dev/gve/gve_rx.c +++ b/sys/dev/gve/gve_rx.c @@ -36,6 +36,7 @@ static void gve_rx_free_ring_gqi(struct gve_priv *priv, int i) { struct gve_rx_ring *rx = &priv->rx[i]; + struct gve_ring_com *com = &rx->com; if (rx->page_info != NULL) { free(rx->page_info, M_GVE); @@ -51,6 +52,11 @@ gve_rx_free_ring_gqi(struct gve_priv *priv, int i) gve_dma_free_coherent(&rx->desc_ring_mem); rx->desc_ring = NULL; } + + if (com->qpl != NULL) { + gve_free_qpl(priv, com->qpl); + com->qpl = NULL; + } } static void @@ -113,10 +119,13 @@ gve_rx_alloc_ring_gqi(struct gve_priv *priv, int i) rx->mask = priv->rx_pages_per_qpl - 1; rx->desc_ring = rx->desc_ring_mem.cpu_addr; - com->qpl = &priv->qpls[priv->tx_cfg.max_queues + i]; + com->qpl = gve_alloc_qpl(priv, i + priv->tx_cfg.max_queues, + priv->rx_desc_cnt, /*single_kva=*/false); if (com->qpl == NULL) { - device_printf(priv->dev, "No QPL left for rx ring %d", i); - return (ENOMEM); + device_printf(priv->dev, + "Failed to alloc QPL for rx ring %d", i); + err = ENOMEM; + goto abort; } rx->page_info = malloc(priv->rx_desc_cnt * sizeof(*rx->page_info), diff --git a/sys/dev/gve/gve_rx_dqo.c b/sys/dev/gve/gve_rx_dqo.c index 6ce9ddd887d0..a499ac9d3c6a 100644 --- a/sys/dev/gve/gve_rx_dqo.c +++ b/sys/dev/gve/gve_rx_dqo.c @@ -58,6 +58,7 @@ void gve_rx_free_ring_dqo(struct gve_priv *priv, int i) { struct gve_rx_ring *rx = &priv->rx[i]; + struct gve_ring_com *com = &rx->com; int j; if (rx->dqo.compl_ring != NULL) { @@ -86,6 +87,11 @@ gve_rx_free_ring_dqo(struct gve_priv *priv, int i) if (!gve_is_qpl(priv) && rx->dqo.buf_dmatag) bus_dma_tag_destroy(rx->dqo.buf_dmatag); + + if (com->qpl != NULL) { + gve_free_qpl(priv, com->qpl); + com->qpl = NULL; + } } int @@ -123,10 +129,13 @@ gve_rx_alloc_ring_dqo(struct gve_priv *priv, int i) M_GVE, M_WAITOK | M_ZERO); if (gve_is_qpl(priv)) { - rx->com.qpl = &priv->qpls[priv->tx_cfg.max_queues + i]; + rx->com.qpl = gve_alloc_qpl(priv, i + priv->tx_cfg.max_queues, + GVE_RX_NUM_QPL_PAGES_DQO, /*single_kva=*/false); if (rx->com.qpl == NULL) { - device_printf(priv->dev, "No QPL left for rx ring %d", i); - return (ENOMEM); + device_printf(priv->dev, + "Failed to alloc QPL for rx ring %d", i); + err = ENOMEM; + goto abort; } return (0); } diff --git a/sys/dev/gve/gve_tx.c b/sys/dev/gve/gve_tx.c index 04dde4f1a79b..e594c66149bc 100644 --- a/sys/dev/gve/gve_tx.c +++ b/sys/dev/gve/gve_tx.c @@ -52,6 +52,7 @@ static void gve_tx_free_ring_gqi(struct gve_priv *priv, int i) { struct gve_tx_ring *tx = &priv->tx[i]; + struct gve_ring_com *com = &tx->com; if (tx->desc_ring != NULL) { gve_dma_free_coherent(&tx->desc_ring_mem); @@ -62,6 +63,11 @@ gve_tx_free_ring_gqi(struct gve_priv *priv, int i) free(tx->info, M_GVE); tx->info = NULL; } + + if (com->qpl != NULL) { + gve_free_qpl(priv, com->qpl); + com->qpl = NULL; + } } static void @@ -109,9 +115,11 @@ gve_tx_alloc_ring_gqi(struct gve_priv *priv, int i) } tx->desc_ring = tx->desc_ring_mem.cpu_addr; - com->qpl = &priv->qpls[i]; + com->qpl = gve_alloc_qpl(priv, i, priv->tx_desc_cnt / GVE_QPL_DIVISOR, + /*single_kva=*/true); if (com->qpl == NULL) { - device_printf(priv->dev, "No QPL left for tx ring %d\n", i); + device_printf(priv->dev, + "Failed to alloc QPL for tx ring %d\n", i); err = ENOMEM; goto abort; } diff --git a/sys/dev/gve/gve_tx_dqo.c b/sys/dev/gve/gve_tx_dqo.c index bf314ef95173..7361d47b8ce6 100644 --- a/sys/dev/gve/gve_tx_dqo.c +++ b/sys/dev/gve/gve_tx_dqo.c @@ -75,6 +75,7 @@ void gve_tx_free_ring_dqo(struct gve_priv *priv, int i) { struct gve_tx_ring *tx = &priv->tx[i]; + struct gve_ring_com *com = &tx->com; int j; if (tx->dqo.desc_ring != NULL) { @@ -109,6 +110,11 @@ gve_tx_free_ring_dqo(struct gve_priv *priv, int i) free(tx->dqo.qpl_bufs, M_GVE); tx->dqo.qpl_bufs = NULL; } + + if (com->qpl != NULL) { + gve_free_qpl(priv, com->qpl); + com->qpl = NULL; + } } static int @@ -210,7 +216,15 @@ gve_tx_alloc_ring_dqo(struct gve_priv *priv, int i) if (gve_is_qpl(priv)) { int qpl_buf_cnt; - tx->com.qpl = &priv->qpls[i]; + tx->com.qpl = gve_alloc_qpl(priv, i, GVE_TX_NUM_QPL_PAGES_DQO, + /*single_kva*/false); + if (tx->com.qpl == NULL) { + device_printf(priv->dev, + "Failed to alloc QPL for tx ring %d", i); + err = ENOMEM; + goto abort; + } + qpl_buf_cnt = GVE_TX_BUFS_PER_PAGE_DQO * tx->com.qpl->num_pages; From nobody Fri Apr 4 23:25:05 2025 X-Original-To: dev-commits-src-main@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 4ZTvpV1KTRz5sbdY; Fri, 04 Apr 2025 23:25: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTvpT5yv0z3WJ7; Fri, 04 Apr 2025 23:25:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809105; 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=7oUp8gxi2EQpHLJoSTJf/QoreWNDscg4O2XMM0MwXXk=; b=cfvpjz/AgxmAjJRTGrK/YBz3+rS94LNGT5REVT9riGhuyD5+YczfWAmt6mxSjz+GXk5tDm 5ZCj/W0FERdhbtaQFWts20Q3/f/qDmr0yPKOk2eEf7kDZlVvZZ5LzUnbpUpUyWqddsh2jG aOYvD3Rv50cnNzfK47z9DJ8v7X2MwZ61sXdpwwJluPJhcYSrfKTelV6s0JXyDtSVkEFG4z 9PRHLN3bRSIq7MFJUZdP4msSQdDvCd+35+EKmttgYK6dtYXsR5AJu6W8GAktWogpcKgbWb C8rJqZf4fIBPOE89wtZ4XQ1RT7SK2JyCpZjk8EMA21sD4856rAP8rLg4BBOHig== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743809105; a=rsa-sha256; cv=none; b=VjjJyLvNwlkpQ/CyCaGe5i+4eTRZKKvaE7rGrUqbGdB3Timl9VYF1TbAAQ/Ex6cNPaWmNY UUZYHboVxrx/s04wKUDHP8TOxf9Ll+MrDWkUryeZd4d160XsI8QDBlOp5vmwK2wSrKdUBc Y1521hzxSsPdkWbM5jpFmSVoiSGpM7yCxTAkGiVxJamHW5f6CZedR74aCWidIE1Da0RkOl vdJKmxz2dwRXntkXA4y4Gj1N+IWidVqIMkTIjOLtKB3k1eeiJgdSs9ps7KhhNpW0TOtlgh Cr2nwR2N0ultDQznhdmaZop2tAwEZ5pY79ea28SinM0aKgPNW+idpEJalbSVgA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809105; 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=7oUp8gxi2EQpHLJoSTJf/QoreWNDscg4O2XMM0MwXXk=; b=uChJppgSVyjHbHBGwocKIoG+aTzlyS274ShEK2rDFsr3lO0UXpqAXFCRb8t83AD+LSabB+ iu1KEDvZbDWRY9gsaJT9GRFASKN4SUJepqCCE5EN3lkqkmPsISHYHITyNqiPPHO3XktONL rxi59rD6SO4Lon/HQs5MT9d7bPZyx7cB4v01z8EtRLSP0L2+iNdiGpdS1GFlQ8UG+1icN4 B3g/aerlEqWlawzS+5CLFlIOQ9Hi8Vdrlhp4e/MUdQER2qkN2qecXdi4f0yYcPHqI8gBmt MllHfB3oarcIpxA2BidKMXoNQVIIm77NBw6DbqrogWJaCVj1V3xuZOg8jpwvew== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTvpT4CmZz15vC; Fri, 04 Apr 2025 23:25:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 534NP5m9063309; Fri, 4 Apr 2025 23:25:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534NP52a063306; Fri, 4 Apr 2025 23:25:05 GMT (envelope-from git) Date: Fri, 4 Apr 2025 23:25:05 GMT Message-Id: <202504042325.534NP52a063306@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: e0464f74d557 - main - gve: Add feature to adjust RX/TX queue counts List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: e0464f74d5579e1538ce741b0a15e6604dbc53c4 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=e0464f74d5579e1538ce741b0a15e6604dbc53c4 commit e0464f74d5579e1538ce741b0a15e6604dbc53c4 Author: Vee Agarwal AuthorDate: 2025-04-04 22:53:32 +0000 Commit: Mark Johnston CommitDate: 2025-04-04 23:24:49 +0000 gve: Add feature to adjust RX/TX queue counts This change introduces new sysctl handlers that allow the user to change RX/TX queue counts. As before, the default queue counts will be the max value the device can support. When chaning queue counts, the interface turns down momentarily while allocating/freeing resources as necessary. Signed-off-by: Vee Agarwal Reviewed by: markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49427 --- share/man/man4/gve.4 | 19 +++++++++++ sys/dev/gve/gve.h | 10 +++--- sys/dev/gve/gve_main.c | 88 +++++++++++++++++++++++++++++++++++++++++++++--- sys/dev/gve/gve_rx.c | 20 ++++------- sys/dev/gve/gve_sysctl.c | 83 +++++++++++++++++++++++++++++++++++++++++++++ sys/dev/gve/gve_tx.c | 21 ++++-------- sys/dev/gve/gve_utils.c | 6 ++-- 7 files changed, 208 insertions(+), 39 deletions(-) diff --git a/share/man/man4/gve.4 b/share/man/man4/gve.4 index 5f58a4c1a503..2ae96c93e37d 100644 --- a/share/man/man4/gve.4 +++ b/share/man/man4/gve.4 @@ -79,6 +79,13 @@ binds to a single PCI device ID presented by gVNIC: .It 0x1AE0:0x0042 .El +.Sh EXAMPLES +.Pp +Change the TX queue count to 4 for the gve0 interface: +.D1 sysctl dev.gve.0.num_tx_queues=4 +.Pp +Change the RX queue count to 4 for the gve0 interface: +.D1 sysctl dev.gve.0.num_rx_queues=4 .Sh DIAGNOSTICS The following messages are recorded during driver initialization: .Bl -diag @@ -211,6 +218,18 @@ The default value is 0, which means hardware LRO is enabled by default. The software LRO stack in the kernel is always used. This sysctl variable needs to be set before loading the driver, using .Xr loader.conf 5 . +.It Va dev.gve.X.num_rx_queues and dev.gve.X.num_tx_queues +Run-time tunables that represent the number of currently used RX/TX queues. +The default value is the max number of RX/TX queues the device can support. +.Pp +This call turns down the interface while setting up the new queues, +which may potentially cause any new packets to be dropped. +This call can fail if the system is not able to provide the driver with enough resources. +In that situation, the driver will revert to the previous number of RX/TX queues. +If this also fails, a device reset will be triggered. +.Pp +Note: sysctl nodes for queue stats remain available even if a queue is removed. +.Pp .El .Sh LIMITATIONS .Nm diff --git a/sys/dev/gve/gve.h b/sys/dev/gve/gve.h index bf15eb3ccabc..2b49ee5ad45a 100644 --- a/sys/dev/gve/gve.h +++ b/sys/dev/gve/gve.h @@ -620,6 +620,8 @@ gve_is_qpl(struct gve_priv *priv) /* Defined in gve_main.c */ void gve_schedule_reset(struct gve_priv *priv); +int gve_adjust_tx_queues(struct gve_priv *priv, uint16_t new_queue_cnt); +int gve_adjust_rx_queues(struct gve_priv *priv, uint16_t new_queue_cnt); /* Register access functions defined in gve_utils.c */ uint32_t gve_reg_bar_read_4(struct gve_priv *priv, bus_size_t offset); @@ -636,8 +638,8 @@ int gve_unregister_qpls(struct gve_priv *priv); void gve_mextadd_free(struct mbuf *mbuf); /* TX functions defined in gve_tx.c */ -int gve_alloc_tx_rings(struct gve_priv *priv); -void gve_free_tx_rings(struct gve_priv *priv); +int gve_alloc_tx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx); +void gve_free_tx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx); int gve_create_tx_rings(struct gve_priv *priv); int gve_destroy_tx_rings(struct gve_priv *priv); int gve_tx_intr(void *arg); @@ -656,8 +658,8 @@ int gve_xmit_dqo_qpl(struct gve_tx_ring *tx, struct mbuf *mbuf); void gve_tx_cleanup_tq_dqo(void *arg, int pending); /* RX functions defined in gve_rx.c */ -int gve_alloc_rx_rings(struct gve_priv *priv); -void gve_free_rx_rings(struct gve_priv *priv); +int gve_alloc_rx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx); +void gve_free_rx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx); int gve_create_rx_rings(struct gve_priv *priv); int gve_destroy_rx_rings(struct gve_priv *priv); int gve_rx_intr(void *arg); diff --git a/sys/dev/gve/gve_main.c b/sys/dev/gve/gve_main.c index 72e7fc2e3f89..39556b85f493 100644 --- a/sys/dev/gve/gve_main.c +++ b/sys/dev/gve/gve_main.c @@ -192,6 +192,74 @@ reset: gve_schedule_reset(priv); } +int +gve_adjust_rx_queues(struct gve_priv *priv, uint16_t new_queue_cnt) +{ + int err; + + GVE_IFACE_LOCK_ASSERT(priv->gve_iface_lock); + + gve_down(priv); + + if (new_queue_cnt < priv->rx_cfg.num_queues) { + /* + * Freeing a ring still preserves its ntfy_id, + * which is needed if we create the ring again. + */ + gve_free_rx_rings(priv, new_queue_cnt, priv->rx_cfg.num_queues); + } else { + err = gve_alloc_rx_rings(priv, priv->rx_cfg.num_queues, new_queue_cnt); + if (err != 0) { + device_printf(priv->dev, "Failed to allocate new queues"); + /* Failed to allocate rings, start back up with old ones */ + gve_up(priv); + return (err); + + } + } + priv->rx_cfg.num_queues = new_queue_cnt; + + err = gve_up(priv); + if (err != 0) + gve_schedule_reset(priv); + + return (err); +} + +int +gve_adjust_tx_queues(struct gve_priv *priv, uint16_t new_queue_cnt) +{ + int err; + + GVE_IFACE_LOCK_ASSERT(priv->gve_iface_lock); + + gve_down(priv); + + if (new_queue_cnt < priv->tx_cfg.num_queues) { + /* + * Freeing a ring still preserves its ntfy_id, + * which is needed if we create the ring again. + */ + gve_free_tx_rings(priv, new_queue_cnt, priv->tx_cfg.num_queues); + } else { + err = gve_alloc_tx_rings(priv, priv->tx_cfg.num_queues, new_queue_cnt); + if (err != 0) { + device_printf(priv->dev, "Failed to allocate new queues"); + /* Failed to allocate rings, start back up with old ones */ + gve_up(priv); + return (err); + + } + } + priv->tx_cfg.num_queues = new_queue_cnt; + + err = gve_up(priv); + if (err != 0) + gve_schedule_reset(priv); + + return (err); +} + static int gve_set_mtu(if_t ifp, uint32_t new_mtu) { @@ -480,8 +548,14 @@ static void gve_free_rings(struct gve_priv *priv) { gve_free_irqs(priv); - gve_free_tx_rings(priv); - gve_free_rx_rings(priv); + + gve_free_tx_rings(priv, 0, priv->tx_cfg.num_queues); + free(priv->tx, M_GVE); + priv->tx = NULL; + + gve_free_rx_rings(priv, 0, priv->rx_cfg.num_queues); + free(priv->rx, M_GVE); + priv->rx = NULL; } static int @@ -489,11 +563,15 @@ gve_alloc_rings(struct gve_priv *priv) { int err; - err = gve_alloc_rx_rings(priv); + priv->rx = malloc(sizeof(struct gve_rx_ring) * priv->rx_cfg.max_queues, + M_GVE, M_WAITOK | M_ZERO); + err = gve_alloc_rx_rings(priv, 0, priv->rx_cfg.num_queues); if (err != 0) goto abort; - err = gve_alloc_tx_rings(priv); + priv->tx = malloc(sizeof(struct gve_tx_ring) * priv->tx_cfg.max_queues, + M_GVE, M_WAITOK | M_ZERO); + err = gve_alloc_tx_rings(priv, 0, priv->tx_cfg.num_queues); if (err != 0) goto abort; @@ -595,7 +673,7 @@ gve_set_queue_cnts(struct gve_priv *priv) priv->rx_cfg.num_queues); } - priv->num_queues = priv->tx_cfg.num_queues + priv->rx_cfg.num_queues; + priv->num_queues = priv->tx_cfg.max_queues + priv->rx_cfg.max_queues; priv->mgmt_msix_idx = priv->num_queues; } diff --git a/sys/dev/gve/gve_rx.c b/sys/dev/gve/gve_rx.c index e1a228c0e69c..de64375ac4f3 100644 --- a/sys/dev/gve/gve_rx.c +++ b/sys/dev/gve/gve_rx.c @@ -185,38 +185,32 @@ abort: } int -gve_alloc_rx_rings(struct gve_priv *priv) +gve_alloc_rx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx) { - int err = 0; int i; + int err; - priv->rx = malloc(sizeof(struct gve_rx_ring) * priv->rx_cfg.num_queues, - M_GVE, M_WAITOK | M_ZERO); + KASSERT(priv->rx != NULL, ("priv->rx is NULL!")); - for (i = 0; i < priv->rx_cfg.num_queues; i++) { + for (i = start_idx; i < stop_idx; i++) { err = gve_rx_alloc_ring(priv, i); if (err != 0) goto free_rings; } return (0); - free_rings: - while (i--) - gve_rx_free_ring(priv, i); - free(priv->rx, M_GVE); + gve_free_rx_rings(priv, start_idx, i); return (err); } void -gve_free_rx_rings(struct gve_priv *priv) +gve_free_rx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx) { int i; - for (i = 0; i < priv->rx_cfg.num_queues; i++) + for (i = start_idx; i < stop_idx; i++) gve_rx_free_ring(priv, i); - - free(priv->rx, M_GVE); } static void diff --git a/sys/dev/gve/gve_sysctl.c b/sys/dev/gve/gve_sysctl.c index c96d082837a4..8f52ffad6f3e 100644 --- a/sys/dev/gve/gve_sysctl.c +++ b/sys/dev/gve/gve_sysctl.c @@ -285,6 +285,88 @@ gve_setup_main_stat_sysctl(struct sysctl_ctx_list *ctx, &priv->reset_cnt, 0, "Times reset"); } +static int +gve_check_num_queues(struct gve_priv *priv, int val, bool is_rx) +{ + if (val < 1) { + device_printf(priv->dev, + "Requested num queues (%u) must be a positive integer\n", val); + return (EINVAL); + } + + if (val > (is_rx ? priv->rx_cfg.max_queues : priv->tx_cfg.max_queues)) { + device_printf(priv->dev, + "Requested num queues (%u) is too large\n", val); + return (EINVAL); + } + + return (0); +} + +static int +gve_sysctl_num_tx_queues(SYSCTL_HANDLER_ARGS) +{ + struct gve_priv *priv = arg1; + int val; + int err; + + val = priv->tx_cfg.num_queues; + err = sysctl_handle_int(oidp, &val, 0, req); + if (err != 0 || req->newptr == NULL) + return (err); + + err = gve_check_num_queues(priv, val, /*is_rx=*/false); + if (err != 0) + return (err); + + if (val != priv->tx_cfg.num_queues) { + GVE_IFACE_LOCK_LOCK(priv->gve_iface_lock); + err = gve_adjust_tx_queues(priv, val); + GVE_IFACE_LOCK_UNLOCK(priv->gve_iface_lock); + } + + return (err); +} + +static int +gve_sysctl_num_rx_queues(SYSCTL_HANDLER_ARGS) +{ + struct gve_priv *priv = arg1; + int val; + int err; + + val = priv->rx_cfg.num_queues; + err = sysctl_handle_int(oidp, &val, 0, req); + if (err != 0 || req->newptr == NULL) + return (err); + + err = gve_check_num_queues(priv, val, /*is_rx=*/true); + + if (err != 0) + return (err); + + if (val != priv->rx_cfg.num_queues) { + GVE_IFACE_LOCK_LOCK(priv->gve_iface_lock); + err = gve_adjust_rx_queues(priv, val); + GVE_IFACE_LOCK_UNLOCK(priv->gve_iface_lock); + } + + return (err); +} + +static void +gve_setup_sysctl_writables(struct sysctl_ctx_list *ctx, + struct sysctl_oid_list *child, struct gve_priv *priv) +{ + SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "num_tx_queues", + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, priv, 0, + gve_sysctl_num_tx_queues, "I", "Number of TX queues"); + + SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "num_rx_queues", + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, priv, 0, + gve_sysctl_num_rx_queues, "I", "Number of RX queues"); +} + void gve_setup_sysctl(struct gve_priv *priv) { device_t dev; @@ -300,6 +382,7 @@ void gve_setup_sysctl(struct gve_priv *priv) gve_setup_queue_stat_sysctl(ctx, child, priv); gve_setup_adminq_stat_sysctl(ctx, child, priv); gve_setup_main_stat_sysctl(ctx, child, priv); + gve_setup_sysctl_writables(ctx, child, priv); } void diff --git a/sys/dev/gve/gve_tx.c b/sys/dev/gve/gve_tx.c index e594c66149bc..b667df4ca06e 100644 --- a/sys/dev/gve/gve_tx.c +++ b/sys/dev/gve/gve_tx.c @@ -181,39 +181,32 @@ abort: } int -gve_alloc_tx_rings(struct gve_priv *priv) +gve_alloc_tx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx) { - int err = 0; int i; + int err; - priv->tx = malloc(sizeof(struct gve_tx_ring) * priv->tx_cfg.num_queues, - M_GVE, M_WAITOK | M_ZERO); + KASSERT(priv->tx != NULL, ("priv->tx is NULL!")); - for (i = 0; i < priv->tx_cfg.num_queues; i++) { + for (i = start_idx; i < stop_idx; i++) { err = gve_tx_alloc_ring(priv, i); if (err != 0) goto free_rings; - } return (0); - free_rings: - while (i--) - gve_tx_free_ring(priv, i); - free(priv->tx, M_GVE); + gve_free_tx_rings(priv, start_idx, i); return (err); } void -gve_free_tx_rings(struct gve_priv *priv) +gve_free_tx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx) { int i; - for (i = 0; i < priv->tx_cfg.num_queues; i++) + for (i = start_idx; i < stop_idx; i++) gve_tx_free_ring(priv, i); - - free(priv->tx, M_GVE); } static void diff --git a/sys/dev/gve/gve_utils.c b/sys/dev/gve/gve_utils.c index 080343d3f651..4e9dd4625e2f 100644 --- a/sys/dev/gve/gve_utils.c +++ b/sys/dev/gve/gve_utils.c @@ -234,7 +234,7 @@ gve_free_irqs(struct gve_priv *priv) return; } - num_irqs = priv->tx_cfg.num_queues + priv->rx_cfg.num_queues + 1; + num_irqs = priv->tx_cfg.max_queues + priv->rx_cfg.max_queues + 1; for (i = 0; i < num_irqs; i++) { irq = &priv->irq_tbl[i]; @@ -268,8 +268,8 @@ gve_free_irqs(struct gve_priv *priv) int gve_alloc_irqs(struct gve_priv *priv) { - int num_tx = priv->tx_cfg.num_queues; - int num_rx = priv->rx_cfg.num_queues; + int num_tx = priv->tx_cfg.max_queues; + int num_rx = priv->rx_cfg.max_queues; int req_nvecs = num_tx + num_rx + 1; int got_nvecs = req_nvecs; struct gve_irq *irq; From nobody Fri Apr 4 23:25:06 2025 X-Original-To: dev-commits-src-main@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 4ZTvpW1Mm8z5sbSt; Fri, 04 Apr 2025 23:25: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTvpV6WDjz3Vtf; Fri, 04 Apr 2025 23:25:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809106; 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=eZqhi3Ye9c8g51TPSXm0SKJT2sOXU9R68ER3rXV9ROg=; b=OfaMXvrQbnqFX8UfjABXtzAmBTFC3zMmyG5ONVY9N6BpIctJ4XhanzVRGpfgNcVUX7+N// ASdVLOLyk/gMJjHphUT/eTbLCcPBbXPkyU0GLoUf61wxrO9U3tDBRTVem6juEGG4AuME6S BxqQiNUFWpH7BlPVVj8PYzKu0jdlQQtWoy5O3JygDKPKvBkvvYVVeAXIlaB8ijQhR3RRPB 3aBRog3mjTObiidkM2zgKeV2EFvX2/Wm/4uSvWKBkJi6f17FjPumWkUZ7Z9Udk8mlxXQsk bNllV4P5M1N+p81erwUSbQFMtonaptyzFhcbzb7lyNiEDHWO2nwtSTFobpvj9A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743809106; a=rsa-sha256; cv=none; b=ZUzLJ8cJQn/gSfeTJBzEF8Nc+YOvhXNl9clGmcIn21vMDvF2CSdqFdkkrAFVJhWsxM3njy /QpV9UMAth/Uf+uxYOnTkYCeOZlep0I57VEQcPFpJ7HI5x6Ew8feQ70FnPjIdtlcfiQEWM 3yjNLZoh1ggpyiWhs43muFkFAK6wByQYAs2X4x2MleqIQFE+VB0+DxmjaDTz3BU0LxjUq5 VzfYO0DsHeKjrTK9ZbAn+61vZvHPmFFKk/mGSEIdwX+IOtIc8cQbozfnw+H2wxzQTZlMjz b/X+73ie/PWk2fEuNISOCOOpptmiN6vamzboLsilUutxRM2LY6Vh922mh8UBQw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809106; 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=eZqhi3Ye9c8g51TPSXm0SKJT2sOXU9R68ER3rXV9ROg=; b=oDCDozofdbnn5ZxmTL5pCvLz2UTXfUQGztrWWijSSFPCOkbClf73jmo8ZYwHuMKDtwC+Fx 0pNOhozfcz5XX4O+zOcii5I24nNzsU5FQiTyFhm2rRHyJY5VjKGU0FDW8AZoDm+qrPXhkY TZUHnScJ44CV7xtdzIHOizzqy3+/XHBC2cPbdLB+UroFhfMoTV3tqfKSqYnTIKr3edp9d0 sXYA+rS2+u27wgXJfRgOUnQeh/2yL4VGH19WfXe4szJeffGg12DkrOiqc6mrOiN7z9EXWq /Av9pmTjtCGXI6j1XFdfEGgEJewKfC1dOVcqQap+NP+G1yp8f7QVForkYFL4rg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTvpV4wNFz16Dm; Fri, 04 Apr 2025 23:25:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 534NP66l063342; Fri, 4 Apr 2025 23:25:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534NP6HZ063339; Fri, 4 Apr 2025 23:25:06 GMT (envelope-from git) Date: Fri, 4 Apr 2025 23:25:06 GMT Message-Id: <202504042325.534NP6HZ063339@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 22fe926a62b7 - main - gve: Add feature to change TX/RX ring size List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 22fe926a62b7bca771d46502dd6a8c202f25b5be Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=22fe926a62b7bca771d46502dd6a8c202f25b5be commit 22fe926a62b7bca771d46502dd6a8c202f25b5be Author: Vee Agarwal AuthorDate: 2025-04-04 22:53:33 +0000 Commit: Mark Johnston CommitDate: 2025-04-04 23:24:49 +0000 gve: Add feature to change TX/RX ring size This change introduces new sysctl handlers that allow the user to change RX/TX ring sizes. As before, the default ring sizes will come from the device (usually 1024). We also get the max/min limits from the device. In the case min values are not provided we have statically defined constants for the min values. Additionally, if the modify ring option is not enabled on the device, changing ring sizes via sysctl will not be possible. When changing ring sizes, the interface turns down momentarily while allocating/freeing resources as necessary. Signed-off-by: Vee Agarwal Reviewed by: markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49428 --- share/man/man4/gve.4 | 17 ++++++++++ sys/dev/gve/gve.h | 10 ++++++ sys/dev/gve/gve_adminq.c | 53 ++++++++++++++++++++++++++++- sys/dev/gve/gve_adminq.h | 14 ++++++-- sys/dev/gve/gve_main.c | 52 +++++++++++++++++++++++++++-- sys/dev/gve/gve_sysctl.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 227 insertions(+), 6 deletions(-) diff --git a/share/man/man4/gve.4 b/share/man/man4/gve.4 index 2ae96c93e37d..754071e2fad8 100644 --- a/share/man/man4/gve.4 +++ b/share/man/man4/gve.4 @@ -86,6 +86,12 @@ Change the TX queue count to 4 for the gve0 interface: .Pp Change the RX queue count to 4 for the gve0 interface: .D1 sysctl dev.gve.0.num_rx_queues=4 +.Pp +Change the TX ring size to 512 for the gve0 interface: +.D1 sysctl dev.gve.0.tx_ring_size=512 +.Pp +Change the RX ring size to 512 for the gve0 interface: +.D1 sysctl dev.gve.0.rx_ring_size=512 .Sh DIAGNOSTICS The following messages are recorded during driver initialization: .Bl -diag @@ -230,6 +236,17 @@ If this also fails, a device reset will be triggered. .Pp Note: sysctl nodes for queue stats remain available even if a queue is removed. .Pp +.It Va dev.gve.X.rx_ring_size and dev.gve.X.tx_ring_size +Run-time tunables that represent the current ring size for RX/TX queues. +The default value is set to device defaults for ring size. +.Pp +This call turns down the interface while setting up the queues with the new ring size, +which may potentially cause any new packets to be dropped. +This call can fail if the system is not able to provide the driver with enough resources. +In that situation, the driver will try to revert to the previous ring size for RX/TX queues. +If this also fails, the device will be in an unhealthy state and will need to be reloaded. +This value must be a power of 2 and within the defined range. +.Pp .El .Sh LIMITATIONS .Nm diff --git a/sys/dev/gve/gve.h b/sys/dev/gve/gve.h index 2b49ee5ad45a..5b298b889ed6 100644 --- a/sys/dev/gve/gve.h +++ b/sys/dev/gve/gve.h @@ -63,6 +63,10 @@ */ #define GVE_QPL_DIVISOR 16 +/* Ring Size Limits */ +#define GVE_DEFAULT_MIN_RX_RING_SIZE 512 +#define GVE_DEFAULT_MIN_TX_RING_SIZE 256 + static MALLOC_DEFINE(M_GVE, "gve", "gve allocations"); struct gve_dma_handle { @@ -529,12 +533,17 @@ struct gve_priv { uint16_t num_event_counters; uint16_t default_num_queues; uint16_t tx_desc_cnt; + uint16_t max_tx_desc_cnt; + uint16_t min_tx_desc_cnt; uint16_t rx_desc_cnt; + uint16_t max_rx_desc_cnt; + uint16_t min_rx_desc_cnt; uint16_t rx_pages_per_qpl; uint64_t max_registered_pages; uint64_t num_registered_pages; uint32_t supported_features; uint16_t max_mtu; + bool modify_ringsize_enabled; struct gve_dma_handle counter_array_mem; __be32 *counters; @@ -622,6 +631,7 @@ gve_is_qpl(struct gve_priv *priv) void gve_schedule_reset(struct gve_priv *priv); int gve_adjust_tx_queues(struct gve_priv *priv, uint16_t new_queue_cnt); int gve_adjust_rx_queues(struct gve_priv *priv, uint16_t new_queue_cnt); +int gve_adjust_ring_sizes(struct gve_priv *priv, uint16_t new_desc_cnt, bool is_rx); /* Register access functions defined in gve_utils.c */ uint32_t gve_reg_bar_read_4(struct gve_priv *priv, bus_size_t offset); diff --git a/sys/dev/gve/gve_adminq.c b/sys/dev/gve/gve_adminq.c index dd03f817f45a..3415d2fa4b60 100644 --- a/sys/dev/gve/gve_adminq.c +++ b/sys/dev/gve/gve_adminq.c @@ -59,6 +59,7 @@ void gve_parse_device_option(struct gve_priv *priv, struct gve_device_option_gqi_qpl **dev_op_gqi_qpl, struct gve_device_option_dqo_rda **dev_op_dqo_rda, struct gve_device_option_dqo_qpl **dev_op_dqo_qpl, + struct gve_device_option_modify_ring **dev_op_modify_ring, struct gve_device_option_jumbo_frames **dev_op_jumbo_frames) { uint32_t req_feat_mask = be32toh(option->required_features_mask); @@ -121,6 +122,34 @@ void gve_parse_device_option(struct gve_priv *priv, *dev_op_dqo_qpl = (void *)(option + 1); break; + case GVE_DEV_OPT_ID_MODIFY_RING: + if (option_length < (sizeof(**dev_op_modify_ring) - + sizeof(struct gve_ring_size_bound)) || + req_feat_mask != GVE_DEV_OPT_REQ_FEAT_MASK_MODIFY_RING) { + device_printf(priv->dev, GVE_DEVICE_OPTION_ERROR_FMT, + "Modify Ring", (int)sizeof(**dev_op_modify_ring), + GVE_DEV_OPT_REQ_FEAT_MASK_MODIFY_RING, + option_length, req_feat_mask); + break; + } + + if (option_length > sizeof(**dev_op_modify_ring)) { + device_printf(priv->dev, GVE_DEVICE_OPTION_TOO_BIG_FMT, + "Modify Ring"); + } + *dev_op_modify_ring = (void *)(option + 1); + + /* Min ring size included; set the minimum ring size. */ + if (option_length == sizeof(**dev_op_modify_ring)) { + priv->min_rx_desc_cnt = max( + be16toh((*dev_op_modify_ring)->min_ring_size.rx), + GVE_DEFAULT_MIN_RX_RING_SIZE); + priv->min_tx_desc_cnt = max( + be16toh((*dev_op_modify_ring)->min_ring_size.tx), + GVE_DEFAULT_MIN_TX_RING_SIZE); + } + break; + case GVE_DEV_OPT_ID_JUMBO_FRAMES: if (option_length < sizeof(**dev_op_jumbo_frames) || req_feat_mask != GVE_DEV_OPT_REQ_FEAT_MASK_JUMBO_FRAMES) { @@ -155,6 +184,7 @@ gve_process_device_options(struct gve_priv *priv, struct gve_device_option_gqi_qpl **dev_op_gqi_qpl, struct gve_device_option_dqo_rda **dev_op_dqo_rda, struct gve_device_option_dqo_qpl **dev_op_dqo_qpl, + struct gve_device_option_modify_ring **dev_op_modify_ring, struct gve_device_option_jumbo_frames **dev_op_jumbo_frames) { char *desc_end = (char *)descriptor + be16toh(descriptor->total_length); @@ -176,6 +206,7 @@ gve_process_device_options(struct gve_priv *priv, dev_op_gqi_qpl, dev_op_dqo_rda, dev_op_dqo_qpl, + dev_op_modify_ring, dev_op_jumbo_frames); dev_opt = (void *)((char *)(dev_opt + 1) + be16toh(dev_opt->option_length)); } @@ -390,8 +421,18 @@ gve_adminq_set_mtu(struct gve_priv *priv, uint32_t mtu) { static void gve_enable_supported_features(struct gve_priv *priv, uint32_t supported_features_mask, + const struct gve_device_option_modify_ring *dev_op_modify_ring, const struct gve_device_option_jumbo_frames *dev_op_jumbo_frames) { + if (dev_op_modify_ring && + (supported_features_mask & GVE_SUP_MODIFY_RING_MASK)) { + if (bootverbose) + device_printf(priv->dev, "MODIFY RING device option enabled.\n"); + priv->modify_ringsize_enabled = true; + priv->max_rx_desc_cnt = be16toh(dev_op_modify_ring->max_ring_size.rx); + priv->max_tx_desc_cnt = be16toh(dev_op_modify_ring->max_ring_size.tx); + } + if (dev_op_jumbo_frames && (supported_features_mask & GVE_SUP_JUMBO_FRAMES_MASK)) { if (bootverbose) @@ -410,6 +451,7 @@ gve_adminq_describe_device(struct gve_priv *priv) struct gve_device_option_gqi_qpl *dev_op_gqi_qpl = NULL; struct gve_device_option_dqo_rda *dev_op_dqo_rda = NULL; struct gve_device_option_dqo_qpl *dev_op_dqo_qpl = NULL; + struct gve_device_option_modify_ring *dev_op_modify_ring = NULL; struct gve_device_option_jumbo_frames *dev_op_jumbo_frames = NULL; uint32_t supported_features_mask = 0; int rc; @@ -438,10 +480,15 @@ gve_adminq_describe_device(struct gve_priv *priv) bus_dmamap_sync(desc_mem.tag, desc_mem.map, BUS_DMASYNC_POSTREAD); + /* Default min in case device options don't have min values */ + priv->min_rx_desc_cnt = GVE_DEFAULT_MIN_RX_RING_SIZE; + priv->min_tx_desc_cnt = GVE_DEFAULT_MIN_TX_RING_SIZE; + rc = gve_process_device_options(priv, desc, &dev_op_gqi_qpl, &dev_op_dqo_rda, &dev_op_dqo_qpl, + &dev_op_modify_ring, &dev_op_jumbo_frames); if (rc != 0) goto free_device_descriptor; @@ -489,8 +536,12 @@ gve_adminq_describe_device(struct gve_priv *priv) priv->default_num_queues = be16toh(desc->default_num_queues); priv->supported_features = supported_features_mask; + /* Default max to current in case modify ring size option is disabled */ + priv->max_rx_desc_cnt = priv->rx_desc_cnt; + priv->max_tx_desc_cnt = priv->tx_desc_cnt; + gve_enable_supported_features(priv, supported_features_mask, - dev_op_jumbo_frames); + dev_op_modify_ring, dev_op_jumbo_frames); for (i = 0; i < ETHER_ADDR_LEN; i++) priv->mac[i] = desc->mac[i]; diff --git a/sys/dev/gve/gve_adminq.h b/sys/dev/gve/gve_adminq.h index 37a7cb3ecbb8..bc51046a3037 100644 --- a/sys/dev/gve/gve_adminq.h +++ b/sys/dev/gve/gve_adminq.h @@ -153,13 +153,21 @@ struct gve_device_option_dqo_qpl { _Static_assert(sizeof(struct gve_device_option_dqo_qpl) == 8, "gve: bad admin queue struct length"); +struct gve_ring_size_bound { + __be16 rx; + __be16 tx; +}; + +_Static_assert(sizeof(struct gve_ring_size_bound) == 4, + "gve: bad admin queue struct length"); + struct gve_device_option_modify_ring { __be32 supported_features_mask; - __be16 max_rx_ring_size; - __be16 max_tx_ring_size; + struct gve_ring_size_bound max_ring_size; + struct gve_ring_size_bound min_ring_size; }; -_Static_assert(sizeof(struct gve_device_option_modify_ring) == 8, +_Static_assert(sizeof(struct gve_device_option_modify_ring) == 12, "gve: bad admin queue struct length"); struct gve_device_option_jumbo_frames { diff --git a/sys/dev/gve/gve_main.c b/sys/dev/gve/gve_main.c index 39556b85f493..8a00deedef36 100644 --- a/sys/dev/gve/gve_main.c +++ b/sys/dev/gve/gve_main.c @@ -32,10 +32,10 @@ #include "gve_adminq.h" #include "gve_dqo.h" -#define GVE_DRIVER_VERSION "GVE-FBSD-1.3.2\n" +#define GVE_DRIVER_VERSION "GVE-FBSD-1.3.3\n" #define GVE_VERSION_MAJOR 1 #define GVE_VERSION_MINOR 3 -#define GVE_VERSION_SUB 2 +#define GVE_VERSION_SUB 3 #define GVE_DEFAULT_RX_COPYBREAK 256 @@ -260,6 +260,54 @@ gve_adjust_tx_queues(struct gve_priv *priv, uint16_t new_queue_cnt) return (err); } +int +gve_adjust_ring_sizes(struct gve_priv *priv, uint16_t new_desc_cnt, bool is_rx) +{ + int err; + uint16_t prev_desc_cnt; + + GVE_IFACE_LOCK_ASSERT(priv->gve_iface_lock); + + gve_down(priv); + + if (is_rx) { + gve_free_rx_rings(priv, 0, priv->rx_cfg.num_queues); + prev_desc_cnt = priv->rx_desc_cnt; + priv->rx_desc_cnt = new_desc_cnt; + err = gve_alloc_rx_rings(priv, 0, priv->rx_cfg.num_queues); + if (err != 0) { + device_printf(priv->dev, + "Failed to allocate rings. Trying to start back up with previous ring size."); + priv->rx_desc_cnt = prev_desc_cnt; + err = gve_alloc_rx_rings(priv, 0, priv->rx_cfg.num_queues); + } + } else { + gve_free_tx_rings(priv, 0, priv->tx_cfg.num_queues); + prev_desc_cnt = priv->tx_desc_cnt; + priv->tx_desc_cnt = new_desc_cnt; + err = gve_alloc_tx_rings(priv, 0, priv->tx_cfg.num_queues); + if (err != 0) { + device_printf(priv->dev, + "Failed to allocate rings. Trying to start back up with previous ring size."); + priv->tx_desc_cnt = prev_desc_cnt; + err = gve_alloc_tx_rings(priv, 0, priv->tx_cfg.num_queues); + } + } + + if (err != 0) { + device_printf(priv->dev, "Failed to allocate rings! Cannot start device back up!"); + return (err); + } + + err = gve_up(priv); + if (err != 0) { + gve_schedule_reset(priv); + return (err); + } + + return (0); +} + static int gve_set_mtu(if_t ifp, uint32_t new_mtu) { diff --git a/sys/dev/gve/gve_sysctl.c b/sys/dev/gve/gve_sysctl.c index 8f52ffad6f3e..f7c7b5803865 100644 --- a/sys/dev/gve/gve_sysctl.c +++ b/sys/dev/gve/gve_sysctl.c @@ -354,6 +354,83 @@ gve_sysctl_num_rx_queues(SYSCTL_HANDLER_ARGS) return (err); } +static int +gve_check_ring_size(struct gve_priv *priv, int val, bool is_rx) +{ + if (!powerof2(val) || val == 0) { + device_printf(priv->dev, + "Requested ring size (%u) must be a power of 2\n", val); + return (EINVAL); + } + + if (val < (is_rx ? priv->min_rx_desc_cnt : priv->min_tx_desc_cnt)) { + device_printf(priv->dev, + "Requested ring size (%u) cannot be less than %d\n", val, + (is_rx ? priv->min_rx_desc_cnt : priv->min_tx_desc_cnt)); + return (EINVAL); + } + + + if (val > (is_rx ? priv->max_rx_desc_cnt : priv->max_tx_desc_cnt)) { + device_printf(priv->dev, + "Requested ring size (%u) cannot be greater than %d\n", val, + (is_rx ? priv->max_rx_desc_cnt : priv->max_tx_desc_cnt)); + return (EINVAL); + } + + return (0); +} + +static int +gve_sysctl_tx_ring_size(SYSCTL_HANDLER_ARGS) +{ + struct gve_priv *priv = arg1; + int val; + int err; + + val = priv->tx_desc_cnt; + err = sysctl_handle_int(oidp, &val, 0, req); + if (err != 0 || req->newptr == NULL) + return (err); + + err = gve_check_ring_size(priv, val, /*is_rx=*/false); + if (err != 0) + return (err); + + if (val != priv->tx_desc_cnt) { + GVE_IFACE_LOCK_LOCK(priv->gve_iface_lock); + err = gve_adjust_ring_sizes(priv, val, /*is_rx=*/false); + GVE_IFACE_LOCK_UNLOCK(priv->gve_iface_lock); + } + + return (err); +} + +static int +gve_sysctl_rx_ring_size(SYSCTL_HANDLER_ARGS) +{ + struct gve_priv *priv = arg1; + int val; + int err; + + val = priv->rx_desc_cnt; + err = sysctl_handle_int(oidp, &val, 0, req); + if (err != 0 || req->newptr == NULL) + return (err); + + err = gve_check_ring_size(priv, val, /*is_rx=*/true); + if (err != 0) + return (err); + + if (val != priv->rx_desc_cnt) { + GVE_IFACE_LOCK_LOCK(priv->gve_iface_lock); + err = gve_adjust_ring_sizes(priv, val, /*is_rx=*/true); + GVE_IFACE_LOCK_UNLOCK(priv->gve_iface_lock); + } + + return (err); +} + static void gve_setup_sysctl_writables(struct sysctl_ctx_list *ctx, struct sysctl_oid_list *child, struct gve_priv *priv) @@ -365,6 +442,16 @@ gve_setup_sysctl_writables(struct sysctl_ctx_list *ctx, SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "num_rx_queues", CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, priv, 0, gve_sysctl_num_rx_queues, "I", "Number of RX queues"); + + if (priv->modify_ringsize_enabled) { + SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "tx_ring_size", + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, priv, 0, + gve_sysctl_tx_ring_size, "I", "TX ring size"); + + SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "rx_ring_size", + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, priv, 0, + gve_sysctl_rx_ring_size, "I", "RX ring size"); + } } void gve_setup_sysctl(struct gve_priv *priv) From nobody Sat Apr 5 00:48:17 2025 X-Original-To: dev-commits-src-main@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 4ZTxfT64mDz5shSS; Sat, 05 Apr 2025 00:48: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTxfT5ChCz3lLK; Sat, 05 Apr 2025 00:48:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743814097; 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=LL8njGV6qVyjQh6BG31Lc6xMmnPZRcOG8qGEZEI0/v8=; b=N2qpKdv58i9PUJ50qdyuIhIG3qmLTxQs5jOhCl4dBE03LuUfO7S4Rmlk22U2Fp4ZPAsVBq 9eynttQTCR8LanALaLziJYVHJaNl/oY05huGxmXs5//Ag1a8/ABh/EldoH+ameeQNd6KuU 0Mo18h8VeMPz/MgtXlcRB7OJkvav07n8/FsdtHBN6Ep2obNfrkW1g6maYTr8gi4hK9is8b N+Siq42dMaWzg8ZGvmvK9AsE0VeiBBVC59FFVlJ/GkSBYmJQgX6Sv+kEbUzhEedlJo7tBG ewRrP54vzyTAhapzVCTPtzPpCnfkCBoXQ0ig2XxV0tdPdpXIq3QjaMd/EcFhxQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743814097; a=rsa-sha256; cv=none; b=o9Rxohe9tt/rnV8xGSoqstDfJvCoVU9eaGFarmG0beRX7U7MNt82POSpykjaS8jrRYnnij wxywPb9kfOns0AJiBAqEuaf4L4MBSOAbeJbDTcUtrLwumll2QUFKdLG3e8lQgWhnxHr9/W 1DpZNi1QrY0gPe2BjuW7yB/kSfKYuR9HuJuWqVAjBpeh2QulAxNM+BAwVtvjSnhXMv8xhv OpVnmyMkYPj999kiQSS8rx/y9kylLGPv/C1nPMffH+9Z345WxqGqCCgHX1swQVEFB76sxq cuCoak3DNz9iQfdZ7bKB9Jr3sv3UTUobJDmpDWR/C+sjSiFTdhi5O4mGGFpFWw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743814097; 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=LL8njGV6qVyjQh6BG31Lc6xMmnPZRcOG8qGEZEI0/v8=; b=jRIbnoRgJkVpVRO3eCq102Eu7KZgtbDGb3MYUtvUGbMlTxKguCrOkviTNNUgvC1gCOeLX6 UFr9POOnBxfhu5GIpXXY6OkDktvQUIloKlFNRa9lE5qIuj02Ng3jiiXBKOGZDG8iAElhMC WwlNJmZdPnZW+Xjv/6gAlmX8N9UjIUNtBZPw66UT79hJtYXU3yfgtwDwqw50YoIY6Qv5/H tT03sff9iy5PManhsba1PSuAoV6o4fbpkQIJGYDpQwPq4cD+8g5JYB+0ZO7L+Zg0sF/bAM pN61FPzHPD5geapzXNtRprjpAiLMXn/xdwBPUcDMl2HLl4tiTTwpy/BVmEBDpw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTxfT4l5yz17C1; Sat, 05 Apr 2025 00:48:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5350mHqo012856; Sat, 5 Apr 2025 00:48:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5350mHXh012853; Sat, 5 Apr 2025 00:48:17 GMT (envelope-from git) Date: Sat, 5 Apr 2025 00:48:17 GMT Message-Id: <202504050048.5350mHXh012853@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 23427c8e1fed - main - libc: allow __cxa_atexit handlers to be added during __cxa_finalize List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 23427c8e1fedb9fc68ad0bd27a59c7ffd2b3008c Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=23427c8e1fedb9fc68ad0bd27a59c7ffd2b3008c commit 23427c8e1fedb9fc68ad0bd27a59c7ffd2b3008c Author: Aurélien Croc de Suray AuthorDate: 2025-04-05 00:47:53 +0000 Commit: Kyle Evans CommitDate: 2025-04-05 00:47:53 +0000 libc: allow __cxa_atexit handlers to be added during __cxa_finalize science/dlib-cpp reveals an interesting scenario that works fine on other platforms but not on FreeBSD; notably, it ends up creating a new global object from some destructor which is called during __cxa_finalize. This breaks when libdlib is dlopen()ed and then subsequently dlclose()ed, as we never end up invoking the created object's dtor until program exit when the shlib is already unmapped. Fix it by noting when we're in the middle of __cxa_finalize for a dso, and then restarting the search if __cxa_atexit() was called in the middle somewhere. We wait until we've processed the initial set before starting over and processing the newly added handlers as if it were a complete set of handlers added during runtime. The alternative is calling them as they're added to maintain a LIFO in terms of total ordering, but in theory a constructor could add another global object that also needs to be destroyed, and that object needs to be destroyed after the one that constructed it to avoid creating unexpected lifetime issues. This manifests in the pdlib PHP extension for dlib crashing, see [0]. [0] https://github.com/goodspb/pdlib/issues/39 PR: 285870 Reviewed by: kevans (also supplied commit message) MFC after: 1 week --- lib/libc/stdlib/atexit.c | 61 ++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/lib/libc/stdlib/atexit.c b/lib/libc/stdlib/atexit.c index e5aa66c51f38..6e4a12f9e530 100644 --- a/lib/libc/stdlib/atexit.c +++ b/lib/libc/stdlib/atexit.c @@ -35,6 +35,7 @@ #include "namespace.h" #include #include +#include #include #include #include @@ -56,6 +57,8 @@ _Block_copy(void*); #define ATEXIT_FN_CXA 2 static pthread_mutex_t atexit_mutex = PTHREAD_MUTEX_INITIALIZER; +static void *current_finalize_dso = NULL; +static bool call_finalize_again = false; #define _MUTEX_LOCK(x) if (__isthreaded) _pthread_mutex_lock(x) #define _MUTEX_UNLOCK(x) if (__isthreaded) _pthread_mutex_unlock(x) @@ -115,6 +118,9 @@ atexit_register(struct atexit_fn *fptr) __atexit = p; } p->fns[p->ind++] = *fptr; + if (current_finalize_dso != NULL && + current_finalize_dso == fptr->fn_dso) + call_finalize_again = true; _MUTEX_UNLOCK(&atexit_mutex); return 0; } @@ -208,33 +214,38 @@ __cxa_finalize(void *dso) } _MUTEX_LOCK(&atexit_mutex); - for (p = __atexit; p; p = p->next) { - for (n = p->ind; --n >= 0;) { - if (p->fns[n].fn_type == ATEXIT_FN_EMPTY) - continue; /* already been called */ - fn = p->fns[n]; - if (dso != NULL && dso != fn.fn_dso) { - /* wrong DSO ? */ - if (!has_phdr || global_exit || - !__elf_phdr_match_addr(&phdr_info, - fn.fn_ptr.cxa_func)) - continue; + current_finalize_dso = dso; + do { + call_finalize_again = false; + for (p = __atexit; p; p = p->next) { + for (n = p->ind; --n >= 0;) { + if (p->fns[n].fn_type == ATEXIT_FN_EMPTY) + continue; /* already been called */ + fn = p->fns[n]; + if (dso != NULL && dso != fn.fn_dso) { + /* wrong DSO ? */ + if (!has_phdr || global_exit || + !__elf_phdr_match_addr(&phdr_info, + fn.fn_ptr.cxa_func)) + continue; + } + /* + Mark entry to indicate that this particular + handler has already been called. + */ + p->fns[n].fn_type = ATEXIT_FN_EMPTY; + _MUTEX_UNLOCK(&atexit_mutex); + + /* Call the function of correct type. */ + if (fn.fn_type == ATEXIT_FN_CXA) + fn.fn_ptr.cxa_func(fn.fn_arg); + else if (fn.fn_type == ATEXIT_FN_STD) + fn.fn_ptr.std_func(); + _MUTEX_LOCK(&atexit_mutex); } - /* - Mark entry to indicate that this particular handler - has already been called. - */ - p->fns[n].fn_type = ATEXIT_FN_EMPTY; - _MUTEX_UNLOCK(&atexit_mutex); - - /* Call the function of correct type. */ - if (fn.fn_type == ATEXIT_FN_CXA) - fn.fn_ptr.cxa_func(fn.fn_arg); - else if (fn.fn_type == ATEXIT_FN_STD) - fn.fn_ptr.std_func(); - _MUTEX_LOCK(&atexit_mutex); } - } + } while (call_finalize_again); + current_finalize_dso = NULL; _MUTEX_UNLOCK(&atexit_mutex); if (dso == NULL) _MUTEX_DESTROY(&atexit_mutex); From nobody Sat Apr 5 00:48:18 2025 X-Original-To: dev-commits-src-main@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 4ZTxfW127Nz5shKs; Sat, 05 Apr 2025 00:48: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTxfV6Vgrz3lYd; Sat, 05 Apr 2025 00:48:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743814098; 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=RaHnwtyvFqSUQd1NmJt19Dju0f+HDSdF5f/0VJcEhQc=; b=rwxRux0wKkOU8wkSxPHMCqXTORBSE27JVWLVsW5sEcxp/6NdeZiorYGUIo9g/3MvQ67bNE PG60KKw9RkjtwMK2J4fNAS6Xt1fF//Vu6azCff/r91YpUhL+K5C7NHRE0tVxKQABucpH10 83IF3nibLVnPW1hSI9+RxyBzxVqW1+VHf+G+inTcNyI7ttbkZzr3DhGWkatqXfv69cGXtl LA9tkhcMCOStC4HLRVWdmnX9VxvAv9ljymuA9uWqaVcbNwStwpzsuY+Mz9AbNumZE7dntX iSngixRDEUO6WpL1Zs4KydHZk0FeXDN7m7BOOMdDceaI3A3VcD+AGxDKpgm5Ag== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743814098; a=rsa-sha256; cv=none; b=MaYKcbBudDlRvEh5Cu63HbRmdRCkDLJjazxQmjBG0aa0BFLh54K2FBiJrRG6envjwvOnwz xixjSrgFKqAOowgEU1FurFumqzmvJKnRe70dN3ucvlwpja25nnWkvtmBWlX9hZHLGg3Sj9 5RVOuPvCGiROxeTiTC1yUeFJbJuy9o1upOeoqM+6J57VQdBxOeGVUEr2QtgFn2Le/SGNt6 l4Unilpf98XxAKWNgHNrbh6KAmeSi5RcgB8KWGp2kI8yk67mqf+yGX0qMuaxPwOD3snJZe F489sRNFyeuEOeShNrS3yHulbe1ZzeSusd92Y9z84nwK/2L/7u6/iX1XxizUYw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743814098; 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=RaHnwtyvFqSUQd1NmJt19Dju0f+HDSdF5f/0VJcEhQc=; b=wPhsdGWzmfkhc+ZRESHFAE6YBK7/RpOwjwI8aA70RHe1zvAJlkL1KE2O9xjJTHfJ4uD4Ok 2h/Vbro3IAI6+LKORGmH3VY2/7F7sv1x2nkZ6tCmwIrVl/BZ7LzcUUuui+HOEPS3oi627U SxBPKklbNnWPzEjaq4vx5CrP39Inqrwis+QKzDP/zfi27Qvopmi2PUu48augSBZsaOWju8 gwBV155MatFonVgbEcM7CcQuZfL1x7UnfbjUAxUX9nrAQvjmmPfEAMIuaEWr6nszrGOxs3 3g8RZxWYpY1iPMH7Iy588W23wtDaG0+MxroyBcAJdOnnXPqkS7OkgH98RzAZYQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZTxfV5zmXz188q; Sat, 05 Apr 2025 00:48:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5350mI2U012888; Sat, 5 Apr 2025 00:48:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5350mIcR012885; Sat, 5 Apr 2025 00:48:18 GMT (envelope-from git) Date: Sat, 5 Apr 2025 00:48:18 GMT Message-Id: <202504050048.5350mIcR012885@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: ee9ce1078c59 - main - libc: tests: add some tests for __cxa_atexit handling List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ee9ce1078c596f5719f312feedd616ab0fb41dc9 Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=ee9ce1078c596f5719f312feedd616ab0fb41dc9 commit ee9ce1078c596f5719f312feedd616ab0fb41dc9 Author: Kyle Evans AuthorDate: 2025-04-05 00:47:54 +0000 Commit: Kyle Evans CommitDate: 2025-04-05 00:47:54 +0000 libc: tests: add some tests for __cxa_atexit handling This adds a basic test that __cxa_atexit works, and also adds some tests for __cxa_atexit handlers registered in the middle of __cxa_finalize. PR: 285870 --- lib/libc/tests/stdlib/Makefile | 2 + lib/libc/tests/stdlib/cxa_atexit_test.c | 132 +++++++++++++++++++++++++++ lib/libc/tests/stdlib/libatexit/Makefile | 11 +++ lib/libc/tests/stdlib/libatexit/libatexit.cc | 67 ++++++++++++++ 4 files changed, 212 insertions(+) diff --git a/lib/libc/tests/stdlib/Makefile b/lib/libc/tests/stdlib/Makefile index 6f57b8014a1e..54ac8a5f3b42 100644 --- a/lib/libc/tests/stdlib/Makefile +++ b/lib/libc/tests/stdlib/Makefile @@ -1,6 +1,7 @@ .include ATF_TESTS_C+= clearenv_test +ATF_TESTS_C+= cxa_atexit_test ATF_TESTS_C+= dynthr_test ATF_TESTS_C+= heapsort_test ATF_TESTS_C+= libc_exit_test @@ -79,5 +80,6 @@ LIBADD.libc_exit_test+= pthread LIBADD.strtod_test+= m SUBDIR+= dynthr_mod +SUBDIR+= libatexit .include diff --git a/lib/libc/tests/stdlib/cxa_atexit_test.c b/lib/libc/tests/stdlib/cxa_atexit_test.c new file mode 100644 index 000000000000..7e2cafbce850 --- /dev/null +++ b/lib/libc/tests/stdlib/cxa_atexit_test.c @@ -0,0 +1,132 @@ +/*- + * Copyright (c) 2025 Kyle Evans + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include + +#include +#include +#include +#include + +#include + +#define ARBITRARY_EXIT_CODE 42 + +static char * +get_shlib(const char *srcdir) +{ + char *shlib; + + shlib = NULL; + if (asprintf(&shlib, "%s/libatexit.so", srcdir) < 0) + atf_tc_fail("failed to construct path to libatexit.so"); + return (shlib); +} + +static void +run_test(const atf_tc_t *tc, bool with_fatal_atexit, bool with_exit) +{ + pid_t p; + void (*set_fatal_atexit)(bool); + void (*set_exit_code)(int); + void *hdl; + char *shlib; + + shlib = get_shlib(atf_tc_get_config_var(tc, "srcdir")); + + hdl = dlopen(shlib, RTLD_LAZY); + ATF_REQUIRE_MSG(hdl != NULL, "dlopen: %s", dlerror()); + + free(shlib); + + if (with_fatal_atexit) { + set_fatal_atexit = dlsym(hdl, "set_fatal_atexit"); + ATF_REQUIRE_MSG(set_fatal_atexit != NULL, + "set_fatal_atexit: %s", dlerror()); + } + if (with_exit) { + set_exit_code = dlsym(hdl, "set_exit_code"); + ATF_REQUIRE_MSG(set_exit_code != NULL, "set_exit_code: %s", + dlerror()); + } + + p = atf_utils_fork(); + if (p == 0) { + /* + * Don't let the child clobber the results file; stderr/stdout + * have been replaced by atf_utils_fork() to capture it. We're + * intentionally using exit() instead of _exit() here to run + * __cxa_finalize at exit, otherwise we'd just leave it be. + */ + closefrom(3); + + if (with_fatal_atexit) + set_fatal_atexit(true); + if (with_exit) + set_exit_code(ARBITRARY_EXIT_CODE); + + dlclose(hdl); + + /* + * If the dtor was supposed to exit (most cases), then we should + * not have made it to this point. If it's not supposed to + * exit, then we just exit with success here because we might + * be expecting either a clean exit or a signal on our way out + * as the final __cxa_finalize tries to run a callback in the + * unloaded DSO. + */ + if (with_exit) + exit(1); + exit(0); + } + + dlclose(hdl); + atf_utils_wait(p, with_exit ? ARBITRARY_EXIT_CODE : 0, "", ""); +} + +ATF_TC_WITHOUT_HEAD(simple_cxa_atexit); +ATF_TC_BODY(simple_cxa_atexit, tc) +{ + /* + * This test exits in a global object's dtor so that we check for our + * dtor being run at dlclose() time. If it isn't, then the forked child + * will have a chance to exit(1) after dlclose() to raise a failure. + */ + run_test(tc, false, true); +} + +ATF_TC_WITHOUT_HEAD(late_cxa_atexit); +ATF_TC_BODY(late_cxa_atexit, tc) +{ + /* + * This test creates another global object during a __cxa_atexit handler + * invocation. It's been observed in the wild that we weren't executing + * it, then the DSO gets torn down and it was executed at application + * exit time instead. In the best case scenario we would crash if + * something else hadn't been mapped there. + */ + run_test(tc, true, false); +} + +ATF_TC_WITHOUT_HEAD(late_cxa_atexit_ran); +ATF_TC_BODY(late_cxa_atexit_ran, tc) +{ + /* + * This is a slight variation of the previous test where we trigger an + * exit() in our late-registered __cxa_atexit handler so that we can + * ensure it was ran *before* dlclose() finished and not through some + * weird chain of events afterwards. + */ + run_test(tc, true, true); +} + +ATF_TP_ADD_TCS(tp) +{ + ATF_TP_ADD_TC(tp, simple_cxa_atexit); + ATF_TP_ADD_TC(tp, late_cxa_atexit); + ATF_TP_ADD_TC(tp, late_cxa_atexit_ran); + return (atf_no_error()); +} diff --git a/lib/libc/tests/stdlib/libatexit/Makefile b/lib/libc/tests/stdlib/libatexit/Makefile new file mode 100644 index 000000000000..9ba04c77af62 --- /dev/null +++ b/lib/libc/tests/stdlib/libatexit/Makefile @@ -0,0 +1,11 @@ +SHLIB_CXX= libatexit +SHLIB_NAME= libatexit.so +SHLIB_MAJOR= 1 +SHLIBDIR= ${TESTSDIR} +PACKAGE= tests +SRCS= libatexit.cc + +TESTSDIR:= ${TESTSBASE}/${RELDIR:C/libc\/tests/libc/:H} + + +.include diff --git a/lib/libc/tests/stdlib/libatexit/libatexit.cc b/lib/libc/tests/stdlib/libatexit/libatexit.cc new file mode 100644 index 000000000000..bb286c97e421 --- /dev/null +++ b/lib/libc/tests/stdlib/libatexit/libatexit.cc @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2025 Kyle Evans + * + * SPDX-License-Identifier: BSD-2-Clause + * + */ + +#include + +static int exit_code = -1; +static bool fatal_atexit; + +extern "C" { + void set_fatal_atexit(bool); + void set_exit_code(int); +} + +void +set_fatal_atexit(bool fexit) +{ + fatal_atexit = fexit; +} + +void +set_exit_code(int code) +{ + exit_code = code; +} + +struct other_object { + ~other_object() { + + /* + * In previous versions of our __cxa_atexit handling, we would + * never actually execute this handler because it's added during + * ~object() below; __cxa_finalize would never revisit it. We + * will allow the caller to configure us to exit with a certain + * exit code so that it can run us twice: once to ensure we + * don't crash at the end, and again to make sure the handler + * actually ran. + */ + if (exit_code != -1) + _exit(exit_code); + } +}; + +void +create_staticobj() +{ + static other_object obj; +} + +struct object { + ~object() { + /* + * If we're doing the fatal_atexit behavior (i.e., create an + * object that will add its own dtor for __cxa_finalize), then + * we don't exit here. + */ + if (fatal_atexit) + create_staticobj(); + else if (exit_code != -1) + _exit(exit_code); + } +}; + +static object obj; From nobody Sat Apr 5 16:30:36 2025 X-Original-To: dev-commits-src-main@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 4ZVLYn5mLWz5sRF9; Sat, 05 Apr 2025 16:30: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZVLYn0085z3GSH; Sat, 05 Apr 2025 16:30:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743870637; 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=4ef+zbdNbqYHZjUyxM3lWivdwiXM9IIqcMJ5x5/HCIc=; b=ohfoy1wEJJUEisXkJ3nR7XHU5ACjRCLqdJ/KPbCcAX8RCvfyDgY6QJl444TC52TzFWFb7e nhHfy4i5Mj6td0Sgu9Eanv3Zfxe86SbYi3COro9jwNl8Tgvs2AIy0GD5mHR8jqM5lSzOos jSvxqXIiRYaJKJAgHoyV3GZNV15veyqtkoGZT0qN67w6zZK9ZCdvw7EcPiAM1UEL/Sc57t 5jdeKDLN2iG2cTcJ2RmSo59cJGhqm13uVWRvv9zbe9sQ6vgJK6gvvdSKapPuWlqzgWQgmP q8sohtZ6juijT3dxohRZiCanJcCv5xKbWyKAUeRJ+bebwCYx6PvyGzexuf7XbQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743870637; a=rsa-sha256; cv=none; b=hncKvu6N9KOywmJrNYjMGbCi/7ieJiJ5T2s/FwU8wJJ0MAhRWr+Cdaq4DFzwr0WAQAdo9i 0t/e246AmeGKxwtNCUYHferC1YA9vj1GIqCILnneRPPSYeDRNMCtX2XR6OahZaAtMze5r8 2H3FLS7VITo88rns2NUR6wZfYYYgzdsoJ++U2OFDXIwMc/MvDXzrnXaSaMnDLhzUsI0lVV 2zyvn0g5LEis/G0u7pFKTLLRJEfnOV9RjLCu+QDpZ8fpn/3EMHEfhZhLiOvFGInkxQW9g1 TV54GO/prKai2cXTiOo3cOPLf6GAR6QeEUUFhI2Grm1vq2G72vPETPXlFzJ0CA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743870637; 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=4ef+zbdNbqYHZjUyxM3lWivdwiXM9IIqcMJ5x5/HCIc=; b=ao1M0+En0kZ5v+eTb4TEkmtl79bn2OEd/o3fObPdDbe8+HIr70AboQqk4PwrompCAnrXB+ WA6pNXRU6nTMczRB/CPNfYNmplAcnwby6yim5354zA+4CQVrLXJA9iL52dn9rp//DZQ7Fs rRGxkD3a1s5G1iDzjb+Ep+S0dkUiQkuYMDsmywDvYvAi7Nt9hfSlx681XzVxrJ6DfwA7e4 MwlVjxNey9DCEE+HD06RAMZx4BSiVRt9eqyRD/MatVnX3sRZXY4Anr7dfNL1iRIUVEH75x roJ4pVtTu9A00LB4MNAsL4F8vVdb5zYAvUbSifsaJojrfrowZuS8rCLLFAT1og== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZVLYm6hsRz7XP; Sat, 05 Apr 2025 16:30:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 535GUa90077880; Sat, 5 Apr 2025 16:30:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 535GUaaM077877; Sat, 5 Apr 2025 16:30:36 GMT (envelope-from git) Date: Sat, 5 Apr 2025 16:30:36 GMT Message-Id: <202504051630.535GUaaM077877@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: d35c4cfad580 - main - sysctl: Panic on OID reuse List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: d35c4cfad5800b15ab730af5246df0366f2be558 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=d35c4cfad5800b15ab730af5246df0366f2be558 commit d35c4cfad5800b15ab730af5246df0366f2be558 Author: Mark Johnston AuthorDate: 2025-04-05 16:22:20 +0000 Commit: Mark Johnston CommitDate: 2025-04-05 16:22:20 +0000 sysctl: Panic on OID reuse In CheriBSD we had a conflict in the KERN_PROC OID space and didn't notice for some time. Let's panic instead to make such conflicts easier to detect. Note that this doesn't affect conflicts arising from name collisions in OID_AUTO sysctls, which happen sometimes due to driver bugs. Reviewed by: brooks, kib, jhb MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D49351 --- sys/kern/kern_sysctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c index 8cf8e7b19c89..46226cc31980 100644 --- a/sys/kern/kern_sysctl.c +++ b/sys/kern/kern_sysctl.c @@ -516,7 +516,7 @@ sysctl_register_oid(struct sysctl_oid *oidp) /* check for non-auto OID number collision */ if (oidp->oid_number >= 0 && oidp->oid_number < CTL_AUTO_START && oid_number >= CTL_AUTO_START) { - printf("sysctl: OID number(%d) is already in use for '%s'\n", + panic("sysctl: OID number(%d) is already in use for '%s'\n", oidp->oid_number, oidp->oid_name); } /* update the OID number, if any */ From nobody Sat Apr 5 16:30:37 2025 X-Original-To: dev-commits-src-main@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 4ZVLYp33wzz5sRBd; Sat, 05 Apr 2025 16:30: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZVLYp0rfMz3GVR; Sat, 05 Apr 2025 16:30:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743870638; 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=wJm8LvtfE6vgpLMyqIBhBZCjFHZDoDhpngEdgHyzfVc=; b=Neb1xQh6fe3mUuP4jQvPk4J4xi/ok6iwjAazK0r6dyCEERaV3xZewnPzGXUtbMuC01Mvts 7WGpmhYsUWhlCRhnl3WwpzBxTaTM0KUwF1cAqGWgvXXyIPpps6JyA6EfPtYSJvZ9JxiuyP vKR2MG9aPw3IG2uDWy8EHywInHRiIwa2XUlzRYoeQNhX68io5NWeVHBI5LfAQPkwz0yF8n sIRXhjGXE7Q9bwDfV7FDW6SgJ2Cd2L69baZnl93tvd6eq3iWF3C9QMX+j7Rza3CK0FnqxC uAJEVcLX+FyQc28vIUfPeSCrtpz3HIAhpEIG7B4kDwQz9Rnnzkb3ThMscg26aA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743870638; a=rsa-sha256; cv=none; b=WpLN4ANlTdHe0SxolhLLdHQ/pawUe9WjLHxnHiKjUby8kRmVnBntzNeO7fUE0EjDqEyZLW YJsQdiPwvWGWNiPbNdkp60Xe6LE6Maa2jRisPuzlnPN0HJsM65nO4boeQhYPEnmHWUescs uMBmL0TAaoMl2gQD6ZYygGzqwLewbWrfyi8gNCfkbpd21FA7soXy1AY9IB3PfWcwJxnn8b ZK5210tBAvUzyFs3EGJUH/h2rq/tHugDvAvNQKv8TzZQWTZwi/iGTcbGeZI4YteyTvHjIF ouTZK+LU2Tm6DCA1nhNkoqd9LoIyyqo2eXnT8IpbJ0PmnS6ITrcJ6SfA1YRfaA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743870638; 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=wJm8LvtfE6vgpLMyqIBhBZCjFHZDoDhpngEdgHyzfVc=; b=lbC4l0ecoj8x3KzQQCm19bP4p1FXLeCywCT48Ww4CKpYleVcXHaWVSLiZqFDKjedwOcBS4 1WlcSDhR+IQA0qZV640PsrkxZLcttFgA5NzgT984HVU5MiQfMZd8xyPD8Z1EOi8W9QD43/ 9JVblEzd8ROMrfysW9ImK/MTS9eICrlUONkFGq4dGLk4rSAi+KNDCYZW3rFoxMx2aNAF41 DKJPDxIdQlS4X5KnsDxHAZxUAGPufxYEoJeUeRHC9KI5yqA9Q/4AXQK6Ajnn6omJ9IZ9zc aY2uzE8JV8vbXqv000kF1fWb6mTukz7rJjkfoLNL9Vl3LfXYB8U+Ik4rmuRQ2w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZVLYp09bvz7rt; Sat, 05 Apr 2025 16:30:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 535GUbQB077924; Sat, 5 Apr 2025 16:30:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 535GUbDN077921; Sat, 5 Apr 2025 16:30:37 GMT (envelope-from git) Date: Sat, 5 Apr 2025 16:30:37 GMT Message-Id: <202504051630.535GUbDN077921@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: c5773d366ecc - main - ktr: Make debug.ktr.verbose available whenever KTR is configured List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: c5773d366ecc5271b9bd6e5506c00fb3520f19ae Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=c5773d366ecc5271b9bd6e5506c00fb3520f19ae commit c5773d366ecc5271b9bd6e5506c00fb3520f19ae Author: Mark Johnston AuthorDate: 2025-04-05 16:23:51 +0000 Commit: Mark Johnston CommitDate: 2025-04-05 16:29:44 +0000 ktr: Make debug.ktr.verbose available whenever KTR is configured This is more useful and matches the documentation. While here, make it settable as a tunable and add a sysctl description. PR: 139425 MFC after: 2 weeks --- sys/kern/kern_ktr.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sys/kern/kern_ktr.c b/sys/kern/kern_ktr.c index e862816c4613..cbd32d13248a 100644 --- a/sys/kern/kern_ktr.c +++ b/sys/kern/kern_ktr.c @@ -251,9 +251,12 @@ SYSCTL_PROC(_debug_ktr, OID_AUTO, entries, #ifdef KTR_VERBOSE int ktr_verbose = KTR_VERBOSE; -TUNABLE_INT("debug.ktr.verbose", &ktr_verbose); -SYSCTL_INT(_debug_ktr, OID_AUTO, verbose, CTLFLAG_RW, &ktr_verbose, 0, ""); +#else +int ktr_verbose = 0; #endif +TUNABLE_INT("debug.ktr.verbose", &ktr_verbose); +SYSCTL_INT(_debug_ktr, OID_AUTO, verbose, CTLFLAG_RWTUN, &ktr_verbose, 0, + "Print extra info when logging to the console"); #ifdef KTR_ALQ struct alq *ktr_alq; @@ -375,7 +378,6 @@ ktr_tracepoint(uint64_t mask, const char *file, int line, const char *format, file += 3; entry->ktr_file = file; entry->ktr_line = line; -#ifdef KTR_VERBOSE if (ktr_verbose) { #ifdef SMP printf("cpu%d ", cpu); @@ -387,7 +389,6 @@ ktr_tracepoint(uint64_t mask, const char *file, int line, const char *format, printf(format, arg1, arg2, arg3, arg4, arg5, arg6); printf("\n"); } -#endif entry->ktr_desc = format; entry->ktr_parms[0] = arg1; entry->ktr_parms[1] = arg2; From nobody Sat Apr 5 21:20:12 2025 X-Original-To: dev-commits-src-main@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 4ZVSzw3PQXz5sLKV; Sat, 05 Apr 2025 21:20: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZVSzw36LSz3HSj; Sat, 05 Apr 2025 21:20:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743888012; 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=yLdm+xclIvxhQ/pHeYS+nI7V0ez2gMwO0EHQfuTI/aI=; b=n+pYxcHnuCudwfLRMI7VCprZ+AdOeFFHipGeYHxEAGh+bxW53w8AELO5PHSFJ4Jtw2+aBr r3SOgiUEnAKyw6ljSJHZ0vZPPs7a1G09cuov6us5HbTwOE0ITbcBGhFAunrQkEGdI5K+6Y m2KjXCQNHQdhs6Gp/Yr49XuFWZgjzBi9dtdH9mCp37DEj7DOQFLMTF/LcV275lC8Qxk9I5 Y0u6iAmDxni0N9gM127dACQ/R8flSUP0bygYKzYWJmSbqRClXUuLxBJ+TsmMfWMLnnQxBz L/VvkhwBtYjuZC9FZ0liDBk62VFLUBYZlurvLEL5ybHwC0/pdHd7bCckZCGcIQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743888012; a=rsa-sha256; cv=none; b=DwY/a++zdn0PZ6/Rb4X5cJ88rsX5HnGcE2PibuFlHLi6cNXGAbOIAJYyoH5LHSJfedFaMp f2+90GoN4U3xejsSoL2dU2Uqa4xB1Pltegr9p+o4RX0hIoByH1oa2dyS7EIklR6BFmqAq6 46xAu6+/FnmaeSirXGAVgGy66tqZG0bTd0AYSnY/GwsahLNm42g6UYaHDjyUuBRJPRjAUZ aMluClfATv3tBzcPnluDO1KJRfirxbCHkEQzbvGSx6WoT0ZiuT5dsTcHDmsTEVtPmylbpP BCDgTjE2JPNWpkQyKocmVV8HK/42+kr3A8GWWQhdqT9GV7kERjIoZcChkhRROQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743888012; 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=yLdm+xclIvxhQ/pHeYS+nI7V0ez2gMwO0EHQfuTI/aI=; b=MhK0BldVGLsCq/i8Vl6PrSnsG6DsFwOofaTBw+xvEAEfnIsAQFA01DjancIiNR0G9/JL0a SIq+r/sRO6W7cZ+XSRSgdF/QcC33yylzY15clNtVo4159JC7muv7Ytz2HSt8EeK2Xdck8P Q8mgIAVA0NPzXh0ssVF/a1O49XAwNOOv0TDUh82pa06jQZGTrkPRq7Mx1cnOKwgIRDOT+i Jp+FNxqT5rcdV4F6z823vT34IxT27q1zTIoxG01HY2Ma+XYnBJhG/uukwkUc0eYAPH6xOL weiOWHpIkuEk+t3OFuLP2QeRbRyozVvEetjsTLuTfeXeLO5cg/MbMVgcCX/AKA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZVSzw2PJLzZ1C; Sat, 05 Apr 2025 21:20:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 535LKC7T016173; Sat, 5 Apr 2025 21:20:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 535LKCpL016160; Sat, 5 Apr 2025 21:20:12 GMT (envelope-from git) Date: Sat, 5 Apr 2025 21:20:12 GMT Message-Id: <202504052120.535LKCpL016160@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Chuck Silvers Subject: git: 1ac6ea8a0251 - main - kerberos5, libcom_err, others: append to LDFLAGS instead of replacing List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: chs X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1ac6ea8a0251243d34f0ede2315b8f2b4393080d Auto-Submitted: auto-generated The branch main has been updated by chs: URL: https://cgit.FreeBSD.org/src/commit/?id=1ac6ea8a0251243d34f0ede2315b8f2b4393080d commit 1ac6ea8a0251243d34f0ede2315b8f2b4393080d Author: Chuck Silvers AuthorDate: 2025-04-05 21:18:35 +0000 Commit: Chuck Silvers CommitDate: 2025-04-05 21:19:57 +0000 kerberos5, libcom_err, others: append to LDFLAGS instead of replacing Reviewed by: imp, emaste Differential Revision: https://reviews.freebsd.org/D49548 --- kerberos5/lib/libasn1/Makefile | 2 +- kerberos5/lib/libgssapi_krb5/Makefile | 2 +- kerberos5/lib/libgssapi_ntlm/Makefile | 2 +- kerberos5/lib/libgssapi_spnego/Makefile | 2 +- kerberos5/lib/libhdb/Makefile | 2 +- kerberos5/lib/libheimbase/Makefile | 2 +- kerberos5/lib/libheimntlm/Makefile | 2 +- kerberos5/lib/libhx509/Makefile | 2 +- kerberos5/lib/libkadm5clnt/Makefile | 2 +- kerberos5/lib/libkadm5srv/Makefile | 2 +- kerberos5/lib/libkafs5/Makefile | 2 +- kerberos5/lib/libkdc/Makefile | 2 +- kerberos5/lib/libkrb5/Makefile | 2 +- kerberos5/lib/libwind/Makefile | 2 +- kerberos5/libexec/digest-service/Makefile | 2 +- kerberos5/libexec/hprop/Makefile | 2 +- kerberos5/libexec/hpropd/Makefile | 2 +- kerberos5/libexec/ipropd-master/Makefile | 2 +- kerberos5/libexec/ipropd-slave/Makefile | 2 +- kerberos5/libexec/kadmind/Makefile | 2 +- kerberos5/libexec/kcm/Makefile | 2 +- kerberos5/libexec/kdc/Makefile | 2 +- kerberos5/libexec/kpasswdd/Makefile | 2 +- kerberos5/usr.bin/kadmin/Makefile | 2 +- kerberos5/usr.bin/kpasswd/Makefile | 2 +- kerberos5/usr.sbin/iprop-log/Makefile | 2 +- kerberos5/usr.sbin/kstash/Makefile | 2 +- lib/libcom_err/Makefile | 2 +- tools/regression/tls/ttls3/Makefile | 2 +- tools/tools/net80211/w00t/Makefile.inc | 2 +- 30 files changed, 30 insertions(+), 30 deletions(-) diff --git a/kerberos5/lib/libasn1/Makefile b/kerberos5/lib/libasn1/Makefile index 58fde4ded382..0398ed185481 100644 --- a/kerberos5/lib/libasn1/Makefile +++ b/kerberos5/lib/libasn1/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= asn1 -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined INCS= asn1_err.h asn1-common.h heim_asn1.h der.h der-protos.h der-private.h LIBADD= com_err roken VERSION_MAP= ${.CURDIR}/version.map diff --git a/kerberos5/lib/libgssapi_krb5/Makefile b/kerberos5/lib/libgssapi_krb5/Makefile index 630cb11ad6ca..6f74f6516c4e 100644 --- a/kerberos5/lib/libgssapi_krb5/Makefile +++ b/kerberos5/lib/libgssapi_krb5/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= gssapi_krb5 -LDFLAGS= -Wl,-Bsymbolic -Wl,--no-undefined +LDFLAGS+= -Wl,-Bsymbolic -Wl,--no-undefined LIBADD= gssapi krb5 crypto roken asn1 com_err SHLIB_MAJOR= 10 diff --git a/kerberos5/lib/libgssapi_ntlm/Makefile b/kerberos5/lib/libgssapi_ntlm/Makefile index 8698c5c2e3e1..51da17339620 100644 --- a/kerberos5/lib/libgssapi_ntlm/Makefile +++ b/kerberos5/lib/libgssapi_ntlm/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= gssapi_ntlm -LDFLAGS= -Wl,-Bsymbolic -Wl,--no-undefined +LDFLAGS+= -Wl,-Bsymbolic -Wl,--no-undefined LIBADD= crypto gssapi krb5 heimntlm roken SHLIB_MAJOR= 10 diff --git a/kerberos5/lib/libgssapi_spnego/Makefile b/kerberos5/lib/libgssapi_spnego/Makefile index 421c3fecce7c..2cf73285cd37 100644 --- a/kerberos5/lib/libgssapi_spnego/Makefile +++ b/kerberos5/lib/libgssapi_spnego/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= gssapi_spnego -LDFLAGS= -Wl,-Bsymbolic -Wl,--no-undefined +LDFLAGS+= -Wl,-Bsymbolic -Wl,--no-undefined LIBADD= gssapi heimbase asn1 roken SHLIB_MAJOR= 10 diff --git a/kerberos5/lib/libhdb/Makefile b/kerberos5/lib/libhdb/Makefile index be18779a047e..04e3a4739ef9 100644 --- a/kerberos5/lib/libhdb/Makefile +++ b/kerberos5/lib/libhdb/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= hdb -LDFLAGS= -Wl,--no-undefined ${LDAPLDFLAGS} +LDFLAGS+= -Wl,--no-undefined ${LDAPLDFLAGS} VERSION_MAP= ${KRB5DIR}/lib/hdb/version-script.map LIBADD= asn1 com_err krb5 roken sqlite3 LDADD= ${LDAPLDADD} diff --git a/kerberos5/lib/libheimbase/Makefile b/kerberos5/lib/libheimbase/Makefile index e3cb2fc6c770..9870fe1d6204 100644 --- a/kerberos5/lib/libheimbase/Makefile +++ b/kerberos5/lib/libheimbase/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= heimbase -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined LIBADD= pthread VERSION_MAP= ${KRB5DIR}/base/version-script.map diff --git a/kerberos5/lib/libheimntlm/Makefile b/kerberos5/lib/libheimntlm/Makefile index f68a3d498d20..cc32e4c5e509 100644 --- a/kerberos5/lib/libheimntlm/Makefile +++ b/kerberos5/lib/libheimntlm/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= heimntlm -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined LIBADD= crypto com_err krb5 roken SRCS= ntlm.c ntlm_err.c ntlm_err.h INCS= heimntlm.h heimntlm-protos.h ntlm_err.h diff --git a/kerberos5/lib/libhx509/Makefile b/kerberos5/lib/libhx509/Makefile index 0e82a79d9a8a..7713b4897170 100644 --- a/kerberos5/lib/libhx509/Makefile +++ b/kerberos5/lib/libhx509/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= hx509 -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined VERSION_MAP= ${KRB5DIR}/lib/hx509/version-script.map LIBADD= asn1 com_err crypto roken wind diff --git a/kerberos5/lib/libkadm5clnt/Makefile b/kerberos5/lib/libkadm5clnt/Makefile index dee95b0c8b4b..182d60c9843c 100644 --- a/kerberos5/lib/libkadm5clnt/Makefile +++ b/kerberos5/lib/libkadm5clnt/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= kadm5clnt -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined LIBADD= com_err krb5 roken INCS= admin.h \ diff --git a/kerberos5/lib/libkadm5srv/Makefile b/kerberos5/lib/libkadm5srv/Makefile index 9905668c529a..05006288220c 100644 --- a/kerberos5/lib/libkadm5srv/Makefile +++ b/kerberos5/lib/libkadm5srv/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= kadm5srv -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined LIBADD= com_err hdb krb5 roken VERSION_MAP= ${KRB5DIR}/lib/kadm5/version-script.map MAN= kadm5_pwcheck.3 diff --git a/kerberos5/lib/libkafs5/Makefile b/kerberos5/lib/libkafs5/Makefile index ba83533bd84e..91e06d5d777a 100644 --- a/kerberos5/lib/libkafs5/Makefile +++ b/kerberos5/lib/libkafs5/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= kafs5 -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined LIBADD= asn1 krb5 roken INCS= kafs.h MAN= kafs5.3 diff --git a/kerberos5/lib/libkdc/Makefile b/kerberos5/lib/libkdc/Makefile index 58355fd6d810..72bd7d183a29 100644 --- a/kerberos5/lib/libkdc/Makefile +++ b/kerberos5/lib/libkdc/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= kdc -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined VERSION_MAP= ${KRB5DIR}/kdc/version-script.map LIBADD= roken hdb hx509 krb5 heimntlm asn1 crypto diff --git a/kerberos5/lib/libkrb5/Makefile b/kerberos5/lib/libkrb5/Makefile index edc14556dc59..d377446cd437 100644 --- a/kerberos5/lib/libkrb5/Makefile +++ b/kerberos5/lib/libkrb5/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= krb5 -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined VERSION_MAP= ${KRB5DIR}/lib/krb5/version-script.map LIBADD= asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc diff --git a/kerberos5/lib/libwind/Makefile b/kerberos5/lib/libwind/Makefile index 2ce6947dce7d..b57d62dc830f 100644 --- a/kerberos5/lib/libwind/Makefile +++ b/kerberos5/lib/libwind/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= wind -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined VERSION_MAP= ${KRB5DIR}/lib/wind/version-script.map LIBADD= com_err roken diff --git a/kerberos5/libexec/digest-service/Makefile b/kerberos5/libexec/digest-service/Makefile index 521e3b294709..0996f8704d16 100644 --- a/kerberos5/libexec/digest-service/Makefile +++ b/kerberos5/libexec/digest-service/Makefile @@ -10,7 +10,7 @@ CFLAGS+= -I${KRB5DIR}/kdc \ -I${KRB5DIR}/lib/roken \ -I${SRCTOP}/contrib/com_err LIBADD= hdb kdc heimipcs krb5 roken asn1 crypto vers heimntlm -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/hprop/Makefile b/kerberos5/libexec/hprop/Makefile index 96ac9205d040..b52ccc89e1ce 100644 --- a/kerberos5/libexec/hprop/Makefile +++ b/kerberos5/libexec/hprop/Makefile @@ -14,7 +14,7 @@ CFLAGS+=-I${.OBJDIR:H:H}/lib/libkrb5 LIBADD= hdb krb5 roken vers DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/hpropd/Makefile b/kerberos5/libexec/hpropd/Makefile index 20619c070aa8..9e2039c67a63 100644 --- a/kerberos5/libexec/hpropd/Makefile +++ b/kerberos5/libexec/hpropd/Makefile @@ -7,7 +7,7 @@ CFLAGS+=-I${KRB5DIR}/lib/roken -I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/asn1 \ LIBADD= hdb krb5 roken vers DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/ipropd-master/Makefile b/kerberos5/libexec/ipropd-master/Makefile index 640de69120a1..ee8e2146a716 100644 --- a/kerberos5/libexec/ipropd-master/Makefile +++ b/kerberos5/libexec/ipropd-master/Makefile @@ -8,7 +8,7 @@ CFLAGS+=-I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/asn1 -I${KRB5DIR}/lib/roken \ LIBADD= kadm5srv hdb krb5 roken vers DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/ipropd-slave/Makefile b/kerberos5/libexec/ipropd-slave/Makefile index 748183eb09b9..6738181a6455 100644 --- a/kerberos5/libexec/ipropd-slave/Makefile +++ b/kerberos5/libexec/ipropd-slave/Makefile @@ -8,7 +8,7 @@ CFLAGS+=-I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/asn1 -I${KRB5DIR}/lib/roken \ LIBADD= kadm5srv hdb krb5 roken vers DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/kadmind/Makefile b/kerberos5/libexec/kadmind/Makefile index b228b653b021..6ffe59d6e2cf 100644 --- a/kerberos5/libexec/kadmind/Makefile +++ b/kerberos5/libexec/kadmind/Makefile @@ -12,7 +12,7 @@ CFLAGS+=-I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/asn1 -I${KRB5DIR}/lib/roken \ LIBADD= kadm5srv gssapi hdb krb5 roken vers DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/kcm/Makefile b/kerberos5/libexec/kcm/Makefile index f62e39a920f4..fda4b8e367b0 100644 --- a/kerberos5/libexec/kcm/Makefile +++ b/kerberos5/libexec/kcm/Makefile @@ -24,7 +24,7 @@ CFLAGS+="-DKRB5_DEPRECATED_FUNCTION(X)=" LIBADD= krb5 roken heimntlm heimipcs crypto DPADD= ${LDAPDPADD} LDADD= ${LIBVERS} ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/kdc/Makefile b/kerberos5/libexec/kdc/Makefile index 587f850d5953..6c8f91af2631 100644 --- a/kerberos5/libexec/kdc/Makefile +++ b/kerberos5/libexec/kdc/Makefile @@ -11,7 +11,7 @@ SRCS= config.c \ CFLAGS+=-I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/asn1 -I${KRB5DIR}/lib/roken \ -I${KRB5DIR}/kdc -I${SRCTOP}/contrib/com_err ${LDAPCFLAGS} LIBADD= kdc hdb krb5 roken crypt vers -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/kpasswdd/Makefile b/kerberos5/libexec/kpasswdd/Makefile index 8b09c0eea5cc..8fb8a7eb0a50 100644 --- a/kerberos5/libexec/kpasswdd/Makefile +++ b/kerberos5/libexec/kpasswdd/Makefile @@ -6,7 +6,7 @@ CFLAGS+=-I${KRB5DIR}/lib/roken -I${KRB5DIR}/lib/libhdb ${LDAPCFLAGS} LIBADD= kadm5srv hdb krb5 roken vers asn1 DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/usr.bin/kadmin/Makefile b/kerberos5/usr.bin/kadmin/Makefile index 3ff90ff1e1d9..62aca1b81a83 100644 --- a/kerberos5/usr.bin/kadmin/Makefile +++ b/kerberos5/usr.bin/kadmin/Makefile @@ -29,7 +29,7 @@ CFLAGS+=-I${KRB5DIR}/lib/asn1 -I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/roken \ LIBADD= kadm5clnt kadm5srv hdb krb5 roken vers sl asn1 crypto edit DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} CLEANFILES= kadmin-commands.h kadmin-commands.c diff --git a/kerberos5/usr.bin/kpasswd/Makefile b/kerberos5/usr.bin/kpasswd/Makefile index d8da1baadf39..659067f7ad12 100644 --- a/kerberos5/usr.bin/kpasswd/Makefile +++ b/kerberos5/usr.bin/kpasswd/Makefile @@ -3,7 +3,7 @@ PACKAGE= kerberos PROG= kpasswd CFLAGS+=-I${KRB5DIR}/lib/roken LIBADD= hdb krb5 roken vers crypto -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/usr.sbin/iprop-log/Makefile b/kerberos5/usr.sbin/iprop-log/Makefile index e4e7964cd009..511b46a48b8c 100644 --- a/kerberos5/usr.sbin/iprop-log/Makefile +++ b/kerberos5/usr.sbin/iprop-log/Makefile @@ -9,7 +9,7 @@ CFLAGS+= -I${KRB5DIR}/lib/kadm5 \ -I${KRB5DIR}/lib/sl \ -I. LIBADD= kadm5srv hdb krb5 roken edit sl vers -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} CLEANFILES= iprop-commands.h iprop-commands.c diff --git a/kerberos5/usr.sbin/kstash/Makefile b/kerberos5/usr.sbin/kstash/Makefile index f2e2ce691cac..62ff9c70b05f 100644 --- a/kerberos5/usr.sbin/kstash/Makefile +++ b/kerberos5/usr.sbin/kstash/Makefile @@ -7,7 +7,7 @@ CFLAGS+=-I${KRB5DIR}/lib/asn1 -I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/roken \ LIBADD= hdb krb5 crypto vers DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/lib/libcom_err/Makefile b/lib/libcom_err/Makefile index 2bfd26bae968..f070fd534469 100644 --- a/lib/libcom_err/Makefile +++ b/lib/libcom_err/Makefile @@ -7,7 +7,7 @@ MAN= com_err.3 COM_ERRDIR= ${SRCTOP}/contrib/com_err CFLAGS+= -I${COM_ERRDIR} -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined VERSION_MAP= ${COM_ERRDIR}/version-script.map .include diff --git a/tools/regression/tls/ttls3/Makefile b/tools/regression/tls/ttls3/Makefile index ef00223e4c25..03413ea8e1d6 100644 --- a/tools/regression/tls/ttls3/Makefile +++ b/tools/regression/tls/ttls3/Makefile @@ -1,6 +1,6 @@ all: ttls3 -LDFLAGS=-shared -Bsymbolic --allow-shlib-undefined +LDFLAGS+=-shared -Bsymbolic --allow-shlib-undefined CFLAGS+= -lpthread CFLAGS+= -Wl,--rpath=${.OBJDIR} diff --git a/tools/tools/net80211/w00t/Makefile.inc b/tools/tools/net80211/w00t/Makefile.inc index 69c06542d367..fcde408757e6 100644 --- a/tools/tools/net80211/w00t/Makefile.inc +++ b/tools/tools/net80211/w00t/Makefile.inc @@ -1,7 +1,7 @@ W00T= ../libw00t # NB: we get crc32 from -lz DPADD= ${W00T}/libw00t.a -LDFLAGS= -L${W00T} +LDFLAGS+= -L${W00T} LDADD= -lw00t LIBADD+= crypto z From nobody Sun Apr 6 01:27:31 2025 X-Original-To: dev-commits-src-main@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 4ZVZTM5NTPz5sgC3; Sun, 06 Apr 2025 01:27:35 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from omta003.cacentral1.a.cloudfilter.net (omta001.cacentral1.a.cloudfilter.net [3.97.99.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "Client", Issuer "CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZVZTM21Fcz3Dp2; Sun, 06 Apr 2025 01:27:35 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Authentication-Results: mx1.freebsd.org; none Received: from shw-obgw-4004a.ext.cloudfilter.net ([10.228.9.227]) by cmsmtp with ESMTPS id 0znWu8UCZ9JM21EnOutCt0; Sun, 06 Apr 2025 01:27:34 +0000 Received: from spqr.komquats.com ([70.66.136.217]) by cmsmtp with ESMTPSA id 1EnMujHkDJhBP1EnNunEaf; Sun, 06 Apr 2025 01:27:34 +0000 X-Auth-User: cschuber X-Authority-Analysis: v=2.4 cv=QY3Fvdbv c=1 sm=1 tr=0 ts=67f1d886 a=h7br+8Ma+Xn9xscxy5znUg==:117 a=h7br+8Ma+Xn9xscxy5znUg==:17 a=kj9zAlcOel0A:10 a=XR8D0OoHHMoA:10 a=6I5d2MoRAAAA:8 a=EkcXrb_YAAAA:8 a=YxBL1-UpAAAA:8 a=WPX5ioEIp-PHNTJl24EA:9 a=CjuIK1q_8ugA:10 a=LK5xJRSDVpKd5WXXoEvA:22 a=Ia-lj3WSrqcvXOmTRaiG:22 Received: from slippy.cwsent.com (slippy [10.1.1.91]) by spqr.komquats.com (Postfix) with ESMTP id 29167879; Sat, 05 Apr 2025 18:27:32 -0700 (PDT) Received: by slippy.cwsent.com (Postfix, from userid 1000) id EB58124B; Sat, 05 Apr 2025 18:27:31 -0700 (PDT) X-Mailer: exmh version 2.9.0 11/07/2018 with nmh-1.8+dev Reply-to: Cy Schubert From: Cy Schubert X-os: FreeBSD X-Sender: cy@cwsent.com X-URL: http://www.cschubert.com/ To: Chuck Silvers cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 1ac6ea8a0251 - main - kerberos5, libcom_err, others: append to LDFLAGS instead of replacing In-reply-to: <202504052120.535LKCpL016160@gitrepo.freebsd.org> References: <202504052120.535LKCpL016160@gitrepo.freebsd.org> Comments: In-reply-to Chuck Silvers message dated "Sat, 05 Apr 2025 21:20:12 +0000." List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sat, 05 Apr 2025 18:27:31 -0700 Message-Id: <20250406012731.EB58124B@slippy.cwsent.com> X-CMAE-Envelope: MS4xfNfke9POf24cFBc0xIZNXUrBIMZMfayvbXry5FR9+f6VvW99dFsMClZVAUHOG73oiPxCz3HBTG1PMmTHMvfqH0O1GuvH9y8wsBBLbm4sVMdGFLG78VWk m8coRD4heqT9G9lcMLyB77wDkbnVTVdR3Bgvd3FayTNeLUPyFIYzLNBk21oQu42SQEfbZWqtZuQIffMMXhBuGGMc9QKKcxKV1I1Eu2r0htnZenxQkzuJp+5G ObzcNBl8d6ylHgzAp+2jux7+n0MqTVUdMMGGvw47UEvk5fEUcVFVajMrR0BsBo9DlpkFWEt6q5z8IDpO7OWiOV5TBoDxKVYhKSPWY1JZ3iY= X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:16509, ipnet:3.96.0.0/15, country:US] X-Rspamd-Queue-Id: 4ZVZTM21Fcz3Dp2 X-Spamd-Bar: ---- In message <202504052120.535LKCpL016160@gitrepo.freebsd.org>, Chuck Silvers wri tes: > The branch main has been updated by chs: > > URL: https://cgit.FreeBSD.org/src/commit/?id=1ac6ea8a0251243d34f0ede2315b8f2b > 4393080d > > commit 1ac6ea8a0251243d34f0ede2315b8f2b4393080d > Author: Chuck Silvers > AuthorDate: 2025-04-05 21:18:35 +0000 > Commit: Chuck Silvers > CommitDate: 2025-04-05 21:19:57 +0000 > > kerberos5, libcom_err, others: append to LDFLAGS instead of replacing > > Reviewed by: imp, emaste > Differential Revision: https://reviews.freebsd.org/D49548 > --- > kerberos5/lib/libasn1/Makefile | 2 +- > kerberos5/lib/libgssapi_krb5/Makefile | 2 +- > kerberos5/lib/libgssapi_ntlm/Makefile | 2 +- > kerberos5/lib/libgssapi_spnego/Makefile | 2 +- > kerberos5/lib/libhdb/Makefile | 2 +- > kerberos5/lib/libheimbase/Makefile | 2 +- > kerberos5/lib/libheimntlm/Makefile | 2 +- > kerberos5/lib/libhx509/Makefile | 2 +- > kerberos5/lib/libkadm5clnt/Makefile | 2 +- > kerberos5/lib/libkadm5srv/Makefile | 2 +- > kerberos5/lib/libkafs5/Makefile | 2 +- > kerberos5/lib/libkdc/Makefile | 2 +- > kerberos5/lib/libkrb5/Makefile | 2 +- > kerberos5/lib/libwind/Makefile | 2 +- > kerberos5/libexec/digest-service/Makefile | 2 +- > kerberos5/libexec/hprop/Makefile | 2 +- > kerberos5/libexec/hpropd/Makefile | 2 +- > kerberos5/libexec/ipropd-master/Makefile | 2 +- > kerberos5/libexec/ipropd-slave/Makefile | 2 +- > kerberos5/libexec/kadmind/Makefile | 2 +- > kerberos5/libexec/kcm/Makefile | 2 +- > kerberos5/libexec/kdc/Makefile | 2 +- > kerberos5/libexec/kpasswdd/Makefile | 2 +- > kerberos5/usr.bin/kadmin/Makefile | 2 +- > kerberos5/usr.bin/kpasswd/Makefile | 2 +- > kerberos5/usr.sbin/iprop-log/Makefile | 2 +- > kerberos5/usr.sbin/kstash/Makefile | 2 +- > lib/libcom_err/Makefile | 2 +- > tools/regression/tls/ttls3/Makefile | 2 +- > tools/tools/net80211/w00t/Makefile.inc | 2 +- > 30 files changed, 30 insertions(+), 30 deletions(-) > What was the reason for this? -- Cheers, Cy Schubert FreeBSD UNIX: Web: https://FreeBSD.org NTP: Web: https://nwtime.org e^(i*pi)+1=0 From nobody Sun Apr 6 01:37:57 2025 X-Original-To: dev-commits-src-main@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 4ZVZjT4QLRz5sgjM; Sun, 06 Apr 2025 01:38:05 +0000 (UTC) (envelope-from chuq@chuq.com) Received: from mail.vc.panix.com (mail.vc.panix.com [166.84.1.92]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZVZjT2ZRxz3Gc4; Sun, 06 Apr 2025 01:38:05 +0000 (UTC) (envelope-from chuq@chuq.com) Authentication-Results: mx1.freebsd.org; none Received: from vc.chuq.com (vc.chuq.com [166.84.7.169]) by mail.vc.panix.com (Postfix) with ESMTPS id 4ZVZjM0ddsz4slP; Sat, 5 Apr 2025 21:37:59 -0400 (EDT) Received: from spathi.chuq.com (spathi.chuq.com [24.6.146.244]) by vc169.vc.panix.com (Postfix) with ESMTPS id 93E223B5D79; Sat, 05 Apr 2025 18:37:58 -0700 (PDT) (envelope-from chuq@chuq.com) Received: by spathi.chuq.com (Postfix, from userid 1022) id B25213CFFA25; Sat, 5 Apr 2025 18:37:57 -0700 (PDT) Date: Sat, 5 Apr 2025 18:37:57 -0700 From: Chuck Silvers To: Cy Schubert Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 1ac6ea8a0251 - main - kerberos5, libcom_err, others: append to LDFLAGS instead of replacing Message-ID: References: <202504052120.535LKCpL016160@gitrepo.freebsd.org> <20250406012731.EB58124B@slippy.cwsent.com> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250406012731.EB58124B@slippy.cwsent.com> X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:2033, ipnet:166.84.0.0/16, country:US] X-Rspamd-Queue-Id: 4ZVZjT2ZRxz3Gc4 X-Spamd-Bar: ---- On Sat, Apr 05, 2025 at 06:27:31PM -0700, Cy Schubert wrote: > In message <202504052120.535LKCpL016160@gitrepo.freebsd.org>, Chuck Silvers > wri > tes: > > The branch main has been updated by chs: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=1ac6ea8a0251243d34f0ede2315b8f2b > > 4393080d > > > > commit 1ac6ea8a0251243d34f0ede2315b8f2b4393080d > > Author: Chuck Silvers > > AuthorDate: 2025-04-05 21:18:35 +0000 > > Commit: Chuck Silvers > > CommitDate: 2025-04-05 21:19:57 +0000 > > > > kerberos5, libcom_err, others: append to LDFLAGS instead of replacing > > > > Reviewed by: imp, emaste > > Differential Revision: https://reviews.freebsd.org/D49548 > > --- > > kerberos5/lib/libasn1/Makefile | 2 +- > > kerberos5/lib/libgssapi_krb5/Makefile | 2 +- > > kerberos5/lib/libgssapi_ntlm/Makefile | 2 +- > > kerberos5/lib/libgssapi_spnego/Makefile | 2 +- > > kerberos5/lib/libhdb/Makefile | 2 +- > > kerberos5/lib/libheimbase/Makefile | 2 +- > > kerberos5/lib/libheimntlm/Makefile | 2 +- > > kerberos5/lib/libhx509/Makefile | 2 +- > > kerberos5/lib/libkadm5clnt/Makefile | 2 +- > > kerberos5/lib/libkadm5srv/Makefile | 2 +- > > kerberos5/lib/libkafs5/Makefile | 2 +- > > kerberos5/lib/libkdc/Makefile | 2 +- > > kerberos5/lib/libkrb5/Makefile | 2 +- > > kerberos5/lib/libwind/Makefile | 2 +- > > kerberos5/libexec/digest-service/Makefile | 2 +- > > kerberos5/libexec/hprop/Makefile | 2 +- > > kerberos5/libexec/hpropd/Makefile | 2 +- > > kerberos5/libexec/ipropd-master/Makefile | 2 +- > > kerberos5/libexec/ipropd-slave/Makefile | 2 +- > > kerberos5/libexec/kadmind/Makefile | 2 +- > > kerberos5/libexec/kcm/Makefile | 2 +- > > kerberos5/libexec/kdc/Makefile | 2 +- > > kerberos5/libexec/kpasswdd/Makefile | 2 +- > > kerberos5/usr.bin/kadmin/Makefile | 2 +- > > kerberos5/usr.bin/kpasswd/Makefile | 2 +- > > kerberos5/usr.sbin/iprop-log/Makefile | 2 +- > > kerberos5/usr.sbin/kstash/Makefile | 2 +- > > lib/libcom_err/Makefile | 2 +- > > tools/regression/tls/ttls3/Makefile | 2 +- > > tools/tools/net80211/w00t/Makefile.inc | 2 +- > > 30 files changed, 30 insertions(+), 30 deletions(-) > > > > What was the reason for this? this is so that things added to LDFLAGS by eg. /etc/make.conf or /etc/src.conf are not lost just because an individual makefile wants to add something to LDFLAGS as well. -Chuck From nobody Sun Apr 6 03:25:55 2025 X-Original-To: dev-commits-src-main@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 4ZVd5v5YlZz5spCf; Sun, 06 Apr 2025 03:25: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZVd5v5J7Yz3ZRl; Sun, 06 Apr 2025 03:25:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743909955; 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=jlmqNGnLRi5HewIUVuJSX33vuHC2zmoVFyl/zMs+BSI=; b=PUH30f/Aa5cdFXcPjLrr6g18K/gsGER1i80HxS61nI5BnvgEmS5zKPDY24LrsnlvcsHQFy he3Avo7tMNE+SaTKGxzPhIqMH9I+OlkOW04o8VFco6gMEQeTkhrcX6hSVoHfsaZQNfPzkk lAQSNujZyuKLYlwBYR0BgIu332oUJHrXURDAa1UcVKg2JvK342yMEHCtBZGMnfBByRUjw+ 1fhjAtFh4aEH9uwkpZIZdpVoSDlxYh2HyDGkfBrFF0XUoBt0PT3t5SjeVY/XCUN4Q6GCfh /P8GSpzcuXS1e6FSjnvWtLw4+49zHdFWK6GAZD4mXhq4Q//X4N0veXO0YQfNWA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743909955; a=rsa-sha256; cv=none; b=xwDqFBsAndSWGVksfZKOK6560nZ+SUCH+twQiXXwXyTVLpUHjMeTRtTguwoKTsChL9RD+1 ym+u3e+j8ljrTnSZHdWQ8OXyyf70nN2RV9ubOvXDFkm4ddD6VOjb9/dtjRTQAkGI4As7zE TB/iWNDkcFFEJQrTIDzxOHimtUCXCrr7OvhKmDsbr26ce1caMf7z4bdl2LJTb1D5MjWQgh 7d9dB+8+2s7rsBt5kKCjHJ3NzyKcNb7PkFH9Ac4Aslds4T8TQlXBWh6mb1RQ7wb4ou0JeX lf6AhEHVtTesht9zhY87F3UybKCl5hT/PWb6KpMEmrZouallhF0NaRjmwBuR0A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743909955; 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=jlmqNGnLRi5HewIUVuJSX33vuHC2zmoVFyl/zMs+BSI=; b=gzbRWxCcQ9zFkL03Wb6A8OYo8JNxv/wrZJcCL9E1s/XEBgp9NUVIfa+++de7tGpexyrwku /ukteCiWIJc6fEeDAxW6/bB7bKKzsycR7TaIT5d4p93gmnDKMsmYv1RiAZ0FeS53sAMaWY ZTM29j/ZYT2JQWbu2qDiSCdagQLzc5SnTulCiAAyJDlmVct6Qh5S/k3aHPy/mh6uLaIsDu VEx1sh2bFUGT7x/VUCKOu4fMbigPvW5hADz3dnlBRb3IU2JpcH09PHe3yyUoJ5uC7xI+kH 1fuYTxbZK5AaykA/tzSCs7gVmubyFHnm4hrwib/8zrOSVi9Yvb0IupxaFtqFbA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZVd5v4tcMzkws; Sun, 06 Apr 2025 03:25:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5363Pt7x002076; Sun, 6 Apr 2025 03:25:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5363PtrF002073; Sun, 6 Apr 2025 03:25:55 GMT (envelope-from git) Date: Sun, 6 Apr 2025 03:25:55 GMT Message-Id: <202504060325.5363PtrF002073@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 2eeb95ccf39a - main - bhyve: make most of the iommu_ops interfaces return error List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 2eeb95ccf39ac5d79326c4482112b6b7dd5fc8b2 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=2eeb95ccf39ac5d79326c4482112b6b7dd5fc8b2 commit 2eeb95ccf39ac5d79326c4482112b6b7dd5fc8b2 Author: Konstantin Belousov AuthorDate: 2023-12-19 15:41:32 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-06 03:25:38 +0000 bhyve: make most of the iommu_ops interfaces return error and change create_mapping()/remove_mapping() to allow shorten results. Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49629 --- sys/amd64/vmm/amd/amdvi_hw.c | 39 +++++++------- sys/amd64/vmm/intel/vtd.c | 28 ++++++---- sys/amd64/vmm/io/iommu.c | 119 +++++++++++++++++++++++++------------------ sys/amd64/vmm/io/iommu.h | 26 +++++----- sys/amd64/vmm/io/ppt.c | 33 ++++++++---- sys/amd64/vmm/vmm.c | 22 ++++---- 6 files changed, 159 insertions(+), 108 deletions(-) diff --git a/sys/amd64/vmm/amd/amdvi_hw.c b/sys/amd64/vmm/amd/amdvi_hw.c index 87283325600c..831c31277570 100644 --- a/sys/amd64/vmm/amd/amdvi_hw.c +++ b/sys/amd64/vmm/amd/amdvi_hw.c @@ -1155,9 +1155,9 @@ amdvi_update_mapping(struct amdvi_domain *domain, vm_paddr_t gpa, return (mapped); } -static uint64_t +static int amdvi_create_mapping(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, - uint64_t len) + uint64_t len, uint64_t *res_len) { struct amdvi_domain *domain; @@ -1165,7 +1165,7 @@ amdvi_create_mapping(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, if (domain->id && !domain->ptp) { printf("ptp is NULL"); - return (-1); + return (EINVAL); } /* @@ -1173,13 +1173,14 @@ amdvi_create_mapping(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, * table set-up. */ if (domain->ptp) - return (amdvi_update_mapping(domain, gpa, hpa, len, true)); + *res_len = amdvi_update_mapping(domain, gpa, hpa, len, true); else - return (len); + *res_len = len; + return (0); } -static uint64_t -amdvi_remove_mapping(void *arg, vm_paddr_t gpa, uint64_t len) +static int +amdvi_remove_mapping(void *arg, vm_paddr_t gpa, uint64_t len, uint64_t *res_len) { struct amdvi_domain *domain; @@ -1189,9 +1190,10 @@ amdvi_remove_mapping(void *arg, vm_paddr_t gpa, uint64_t len) * table set-up. */ if (domain->ptp) - return (amdvi_update_mapping(domain, gpa, 0, len, false)); - return - (len); + *res_len = amdvi_update_mapping(domain, gpa, 0, len, false); + else + *res_len = len; + return (0); } static struct amdvi_softc * @@ -1268,8 +1270,8 @@ amdvi_inv_device(struct amdvi_softc *softc, uint16_t devid) amdvi_wait(softc); } -static void -amdvi_add_device(void *arg, uint16_t devid) +static int +amdvi_add_device(void *arg, device_t dev __unused, uint16_t devid) { struct amdvi_domain *domain; struct amdvi_softc *softc; @@ -1282,13 +1284,14 @@ amdvi_add_device(void *arg, uint16_t devid) #endif softc = amdvi_find_iommu(devid); if (softc == NULL) - return; + return (ENXIO); amdvi_set_dte(domain, softc, devid, true); amdvi_inv_device(softc, devid); + return (0); } -static void -amdvi_remove_device(void *arg, uint16_t devid) +static int +amdvi_remove_device(void *arg, device_t dev __unused, uint16_t devid) { struct amdvi_domain *domain; struct amdvi_softc *softc; @@ -1300,9 +1303,10 @@ amdvi_remove_device(void *arg, uint16_t devid) #endif softc = amdvi_find_iommu(devid); if (softc == NULL) - return; + return (ENXIO); amdvi_set_dte(domain, softc, devid, false); amdvi_inv_device(softc, devid); + return (0); } static void @@ -1357,7 +1361,7 @@ amdvi_disable(void) } } -static void +static int amdvi_invalidate_tlb(void *arg) { struct amdvi_domain *domain; @@ -1365,6 +1369,7 @@ amdvi_invalidate_tlb(void *arg) domain = (struct amdvi_domain *)arg; KASSERT(domain, ("domain is NULL")); amdvi_do_inv_domain(domain->id, false); + return (0); } const struct iommu_ops iommu_ops_amd = { diff --git a/sys/amd64/vmm/intel/vtd.c b/sys/amd64/vmm/intel/vtd.c index 72cedeca6ec1..b56541290a9d 100644 --- a/sys/amd64/vmm/intel/vtd.c +++ b/sys/amd64/vmm/intel/vtd.c @@ -431,8 +431,8 @@ vtd_disable(void) } } -static void -vtd_add_device(void *arg, uint16_t rid) +static int +vtd_add_device(void *arg, device_t dev __unused, uint16_t rid) { int idx; uint64_t *ctxp; @@ -475,10 +475,11 @@ vtd_add_device(void *arg, uint16_t rid) * 'Not Present' entries are not cached in either the Context Cache * or in the IOTLB, so there is no need to invalidate either of them. */ + return (0); } -static void -vtd_remove_device(void *arg, uint16_t rid) +static int +vtd_remove_device(void *arg, device_t dev __unused, uint16_t rid) { int i, idx; uint64_t *ctxp; @@ -506,6 +507,7 @@ vtd_remove_device(void *arg, uint16_t rid) vtd_ctx_global_invalidate(vtdmap); vtd_iotlb_global_invalidate(vtdmap); } + return (0); } #define CREATE_MAPPING 0 @@ -600,21 +602,24 @@ vtd_update_mapping(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, uint64_t len, return (1UL << ptpshift); } -static uint64_t -vtd_create_mapping(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, uint64_t len) +static int +vtd_create_mapping(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, uint64_t len, + uint64_t *res_len) { - return (vtd_update_mapping(arg, gpa, hpa, len, CREATE_MAPPING)); + *res_len = vtd_update_mapping(arg, gpa, hpa, len, CREATE_MAPPING); + return (0); } -static uint64_t -vtd_remove_mapping(void *arg, vm_paddr_t gpa, uint64_t len) +static int +vtd_remove_mapping(void *arg, vm_paddr_t gpa, uint64_t len, uint64_t *res_len) { - return (vtd_update_mapping(arg, gpa, 0, len, REMOVE_MAPPING)); + *res_len = vtd_update_mapping(arg, gpa, 0, len, REMOVE_MAPPING); + return (0); } -static void +static int vtd_invalidate_tlb(void *dom) { int i; @@ -628,6 +633,7 @@ vtd_invalidate_tlb(void *dom) vtdmap = vtdmaps[i]; vtd_iotlb_global_invalidate(vtdmap); } + return (0); } static void * diff --git a/sys/amd64/vmm/io/iommu.c b/sys/amd64/vmm/io/iommu.c index dc4a0de94bb6..bd86ac37a83e 100644 --- a/sys/amd64/vmm/io/iommu.c +++ b/sys/amd64/vmm/io/iommu.c @@ -58,6 +58,8 @@ static const struct iommu_ops *ops; static void *host_domain; static eventhandler_tag add_tag, delete_tag; +static void iommu_cleanup_int(bool iommu_disable); + static __inline int IOMMU_INIT(void) { @@ -92,48 +94,51 @@ IOMMU_DESTROY_DOMAIN(void *dom) (*ops->destroy_domain)(dom); } -static __inline uint64_t -IOMMU_CREATE_MAPPING(void *domain, vm_paddr_t gpa, vm_paddr_t hpa, uint64_t len) +static __inline int +IOMMU_CREATE_MAPPING(void *domain, vm_paddr_t gpa, vm_paddr_t hpa, + uint64_t len, uint64_t *res_len) { if (ops != NULL && iommu_avail) - return ((*ops->create_mapping)(domain, gpa, hpa, len)); - else - return (len); /* XXX */ + return ((*ops->create_mapping)(domain, gpa, hpa, len, res_len)); + return (EOPNOTSUPP); } static __inline uint64_t -IOMMU_REMOVE_MAPPING(void *domain, vm_paddr_t gpa, uint64_t len) +IOMMU_REMOVE_MAPPING(void *domain, vm_paddr_t gpa, uint64_t len, + uint64_t *res_len) { if (ops != NULL && iommu_avail) - return ((*ops->remove_mapping)(domain, gpa, len)); - else - return (len); /* XXX */ + return ((*ops->remove_mapping)(domain, gpa, len, res_len)); + return (EOPNOTSUPP); } -static __inline void -IOMMU_ADD_DEVICE(void *domain, uint16_t rid) +static __inline int +IOMMU_ADD_DEVICE(void *domain, device_t dev, uint16_t rid) { if (ops != NULL && iommu_avail) - (*ops->add_device)(domain, rid); + return ((*ops->add_device)(domain, dev, rid)); + return (EOPNOTSUPP); } -static __inline void -IOMMU_REMOVE_DEVICE(void *domain, uint16_t rid) +static __inline int +IOMMU_REMOVE_DEVICE(void *domain, device_t dev, uint16_t rid) { if (ops != NULL && iommu_avail) - (*ops->remove_device)(domain, rid); + return ((*ops->remove_device)(domain, dev, rid)); + return (EOPNOTSUPP); } -static __inline void +static __inline int IOMMU_INVALIDATE_TLB(void *domain) { if (ops != NULL && iommu_avail) - (*ops->invalidate_tlb)(domain); + return ((*ops->invalidate_tlb)(domain)); + return (0); } static __inline void @@ -157,14 +162,14 @@ iommu_pci_add(void *arg, device_t dev) { /* Add new devices to the host domain. */ - iommu_add_device(host_domain, pci_get_rid(dev)); + iommu_add_device(host_domain, dev, pci_get_rid(dev)); } static void iommu_pci_delete(void *arg, device_t dev) { - iommu_remove_device(host_domain, pci_get_rid(dev)); + iommu_remove_device(host_domain, dev, pci_get_rid(dev)); } static void @@ -230,17 +235,20 @@ iommu_init(void) * Everything else belongs to the host * domain. */ - iommu_add_device(host_domain, + error = iommu_add_device(host_domain, dev, pci_get_rid(dev)); + if (error != 0) { + iommu_cleanup_int(false); + return; + } } } } IOMMU_ENABLE(); - } -void -iommu_cleanup(void) +static void +iommu_cleanup_int(bool iommu_disable) { if (add_tag != NULL) { @@ -251,12 +259,19 @@ iommu_cleanup(void) EVENTHANDLER_DEREGISTER(pci_delete_device, delete_tag); delete_tag = NULL; } - IOMMU_DISABLE(); + if (iommu_disable) + IOMMU_DISABLE(); IOMMU_DESTROY_DOMAIN(host_domain); host_domain = NULL; IOMMU_CLEANUP(); } +void +iommu_cleanup(void) +{ + iommu_cleanup_int(true); +} + void * iommu_create_domain(vm_paddr_t maxaddr) { @@ -280,33 +295,39 @@ iommu_destroy_domain(void *dom) IOMMU_DESTROY_DOMAIN(dom); } -void +int iommu_create_mapping(void *dom, vm_paddr_t gpa, vm_paddr_t hpa, size_t len) { uint64_t mapped, remaining; - - remaining = len; - - while (remaining > 0) { - mapped = IOMMU_CREATE_MAPPING(dom, gpa, hpa, remaining); - gpa += mapped; - hpa += mapped; - remaining -= mapped; + int error; + + for (remaining = len; remaining > 0; gpa += mapped, hpa += mapped, + remaining -= mapped) { + error = IOMMU_CREATE_MAPPING(dom, gpa, hpa, remaining, + &mapped); + if (error != 0) { + /* XXXKIB rollback */ + return (error); + } } + return (0); } -void +int iommu_remove_mapping(void *dom, vm_paddr_t gpa, size_t len) { uint64_t unmapped, remaining; - - remaining = len; - - while (remaining > 0) { - unmapped = IOMMU_REMOVE_MAPPING(dom, gpa, remaining); - gpa += unmapped; - remaining -= unmapped; + int error; + + for (remaining = len; remaining > 0; gpa += unmapped, + remaining -= unmapped) { + error = IOMMU_REMOVE_MAPPING(dom, gpa, remaining, &unmapped); + if (error != 0) { + /* XXXKIB ? */ + return (error); + } } + return (0); } void * @@ -316,23 +337,23 @@ iommu_host_domain(void) return (host_domain); } -void -iommu_add_device(void *dom, uint16_t rid) +int +iommu_add_device(void *dom, device_t dev, uint16_t rid) { - IOMMU_ADD_DEVICE(dom, rid); + return (IOMMU_ADD_DEVICE(dom, dev, rid)); } -void -iommu_remove_device(void *dom, uint16_t rid) +int +iommu_remove_device(void *dom, device_t dev, uint16_t rid) { - IOMMU_REMOVE_DEVICE(dom, rid); + return (IOMMU_REMOVE_DEVICE(dom, dev, rid)); } -void +int iommu_invalidate_tlb(void *domain) { - IOMMU_INVALIDATE_TLB(domain); + return (IOMMU_INVALIDATE_TLB(domain)); } diff --git a/sys/amd64/vmm/io/iommu.h b/sys/amd64/vmm/io/iommu.h index c2891b62b5f2..5294a9d92a6b 100644 --- a/sys/amd64/vmm/io/iommu.h +++ b/sys/amd64/vmm/io/iommu.h @@ -35,13 +35,13 @@ typedef void (*iommu_enable_func_t)(void); typedef void (*iommu_disable_func_t)(void); typedef void *(*iommu_create_domain_t)(vm_paddr_t maxaddr); typedef void (*iommu_destroy_domain_t)(void *domain); -typedef uint64_t (*iommu_create_mapping_t)(void *domain, vm_paddr_t gpa, - vm_paddr_t hpa, uint64_t len); -typedef uint64_t (*iommu_remove_mapping_t)(void *domain, vm_paddr_t gpa, - uint64_t len); -typedef void (*iommu_add_device_t)(void *domain, uint16_t rid); -typedef void (*iommu_remove_device_t)(void *dom, uint16_t rid); -typedef void (*iommu_invalidate_tlb_t)(void *dom); +typedef int (*iommu_create_mapping_t)(void *domain, vm_paddr_t gpa, + vm_paddr_t hpa, uint64_t len, uint64_t *res_len); +typedef int (*iommu_remove_mapping_t)(void *domain, vm_paddr_t gpa, + uint64_t len, uint64_t *res_len); +typedef int (*iommu_add_device_t)(void *domain, device_t dev, uint16_t rid); +typedef int (*iommu_remove_device_t)(void *dom, device_t dev, uint16_t rid); +typedef int (*iommu_invalidate_tlb_t)(void *dom); struct iommu_ops { iommu_init_func_t init; /* module wide */ @@ -65,10 +65,10 @@ void iommu_cleanup(void); void *iommu_host_domain(void); void *iommu_create_domain(vm_paddr_t maxaddr); void iommu_destroy_domain(void *dom); -void iommu_create_mapping(void *dom, vm_paddr_t gpa, vm_paddr_t hpa, - size_t len); -void iommu_remove_mapping(void *dom, vm_paddr_t gpa, size_t len); -void iommu_add_device(void *dom, uint16_t rid); -void iommu_remove_device(void *dom, uint16_t rid); -void iommu_invalidate_tlb(void *domain); +int iommu_create_mapping(void *dom, vm_paddr_t gpa, vm_paddr_t hpa, + size_t len); +int iommu_remove_mapping(void *dom, vm_paddr_t gpa, size_t len); +int iommu_add_device(void *dom, device_t dev, uint16_t rid); +int iommu_remove_device(void *dom, device_t dev, uint16_t rid); +int iommu_invalidate_tlb(void *domain); #endif diff --git a/sys/amd64/vmm/io/ppt.c b/sys/amd64/vmm/io/ppt.c index 3b043c64fbde..c3b2b57da988 100644 --- a/sys/amd64/vmm/io/ppt.c +++ b/sys/amd64/vmm/io/ppt.c @@ -151,14 +151,19 @@ static int ppt_attach(device_t dev) { struct pptdev *ppt; - uint16_t cmd; + uint16_t cmd, cmd1; + int error; ppt = device_get_softc(dev); - cmd = pci_read_config(dev, PCIR_COMMAND, 2); + cmd1 = cmd = pci_read_config(dev, PCIR_COMMAND, 2); cmd &= ~(PCIM_CMD_PORTEN | PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN); pci_write_config(dev, PCIR_COMMAND, cmd, 2); - iommu_remove_device(iommu_host_domain(), pci_get_rid(dev)); + error = iommu_remove_device(iommu_host_domain(), dev, pci_get_rid(dev)); + if (error != 0) { + pci_write_config(dev, PCIR_COMMAND, cmd1, 2); + return (error); + } num_pptdevs++; TAILQ_INSERT_TAIL(&pptdev_list, ppt, next); ppt->dev = dev; @@ -173,17 +178,23 @@ static int ppt_detach(device_t dev) { struct pptdev *ppt; + int error; ppt = device_get_softc(dev); if (ppt->vm != NULL) return (EBUSY); + if (iommu_host_domain() != NULL) { + error = iommu_add_device(iommu_host_domain(), dev, + pci_get_rid(dev)); + } else { + error = 0; + } + if (error != 0) + return (error); num_pptdevs--; TAILQ_REMOVE(&pptdev_list, ppt, next); - if (iommu_host_domain() != NULL) - iommu_add_device(iommu_host_domain(), pci_get_rid(dev)); - return (0); } @@ -410,8 +421,11 @@ ppt_assign_device(struct vm *vm, int bus, int slot, int func) pci_save_state(ppt->dev); ppt_pci_reset(ppt->dev); pci_restore_state(ppt->dev); + error = iommu_add_device(vm_iommu_domain(vm), ppt->dev, + pci_get_rid(ppt->dev)); + if (error != 0) + return (error); ppt->vm = vm; - iommu_add_device(vm_iommu_domain(vm), pci_get_rid(ppt->dev)); cmd = pci_read_config(ppt->dev, PCIR_COMMAND, 2); cmd |= PCIM_CMD_BUSMASTEREN | ppt_bar_enables(ppt); pci_write_config(ppt->dev, PCIR_COMMAND, cmd, 2); @@ -438,9 +452,10 @@ ppt_unassign_device(struct vm *vm, int bus, int slot, int func) ppt_unmap_all_mmio(vm, ppt); ppt_teardown_msi(ppt); ppt_teardown_msix(ppt); - iommu_remove_device(vm_iommu_domain(vm), pci_get_rid(ppt->dev)); + error = iommu_remove_device(vm_iommu_domain(vm), ppt->dev, + pci_get_rid(ppt->dev)); ppt->vm = NULL; - return (0); + return (error); } int diff --git a/sys/amd64/vmm/vmm.c b/sys/amd64/vmm/vmm.c index 1d410835be88..bd703f63b557 100644 --- a/sys/amd64/vmm/vmm.c +++ b/sys/amd64/vmm/vmm.c @@ -745,12 +745,12 @@ vm_unmap_mmio(struct vm *vm, vm_paddr_t gpa, size_t len) return (0); } -static void +static int vm_iommu_map(struct vm *vm) { vm_paddr_t gpa, hpa; struct vm_mem_map *mm; - int i; + int error, i; sx_assert(&vm->mem.mem_segs_lock, SX_LOCKED); @@ -789,15 +789,16 @@ vm_iommu_map(struct vm *vm) } } - iommu_invalidate_tlb(iommu_host_domain()); + error = iommu_invalidate_tlb(iommu_host_domain()); + return (error); } -static void +static int vm_iommu_unmap(struct vm *vm) { vm_paddr_t gpa; struct vm_mem_map *mm; - int i; + int error, i; sx_assert(&vm->mem.mem_segs_lock, SX_LOCKED); @@ -826,7 +827,8 @@ vm_iommu_unmap(struct vm *vm) * Invalidate the cached translations associated with the domain * from which pages were removed. */ - iommu_invalidate_tlb(vm->iommu); + error = iommu_invalidate_tlb(vm->iommu); + return (error); } int @@ -839,9 +841,9 @@ vm_unassign_pptdev(struct vm *vm, int bus, int slot, int func) return (error); if (ppt_assigned_devices(vm) == 0) - vm_iommu_unmap(vm); + error = vm_iommu_unmap(vm); - return (0); + return (error); } int @@ -858,10 +860,12 @@ vm_assign_pptdev(struct vm *vm, int bus, int slot, int func) vm->iommu = iommu_create_domain(maxaddr); if (vm->iommu == NULL) return (ENXIO); - vm_iommu_map(vm); } error = ppt_assign_device(vm, bus, slot, func); + if (error != 0) + return (error); + error = vm_iommu_map(vm); return (error); } From nobody Sun Apr 6 03:25:56 2025 X-Original-To: dev-commits-src-main@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 4ZVd5x0J8hz5spFH; Sun, 06 Apr 2025 03:25: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZVd5w5Z0Jz3ZML; Sun, 06 Apr 2025 03:25:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743909956; 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=CU4BjYvHHc4WtTsUE35DlAUBHdCIyzWedAATG5JJYm0=; b=bGI+mvtq1flaKhwBxkPrp/8Jmwp7n6xIwMAHbcaGOQ7ZoHodHu5ewRBRXGwS2YhV0SIQ6J Je2Y99Aj3NuEtMpVbdi88isQ/tWetPTzTaj9HZWBSIwX+ri48U4115XJ3uuzMRKZEC50j0 zWAPg7QXc4CfPchKJ4yQ/R5HmJGrm/BQONubTCXDumr9i+JpQsfonw4OtykPt4CV2c6+jR EgZBrVwOUDqH126pePrX4lKGKB3/JE027HALsXGUmxJPSdVEovagY7RLD2v5axeMjB9rHg mv/iASKrCXxBWoFH1Wlt8ui4Q3fxhxr30+ILa7rDj7dJFTNtfZ8XpI9Kx8lmOg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743909956; a=rsa-sha256; cv=none; b=A1Ia0F7gR1gNM/39bzXYpkEW2fzCyhIVxMPtH3W1OGBVtLEMW/WsHh2xsy0AVF4Xe1KPZ7 WpAGN2tuF60SaJJnzX1EzzYCw6gUOIYPuy3kyfCei6qCSoRX2ry6IfHs2ipLYF060ucEa6 xBVGzxnGeFW2Jvsdp4rEx0nqFMs3a/Rt2gAXoxaOQKw7wF3E9tJTq6fqX11/kEAE9bKuMA hPJO01YCzDPMIkL+ba8FaOcTdltomDZVz2NfOuDimm8rEYcq4/iNTCwCqP/tZIU8EOXvuF kOKxS5rldmFrqaL0g/p+SQWTHu5X0tXYZdWEvM5Nl9XLkWDAsR1JCNjKo+M59A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743909956; 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=CU4BjYvHHc4WtTsUE35DlAUBHdCIyzWedAATG5JJYm0=; b=y0FVWlAG3yqMdPnOVSEKzlzV+JmyXidjTKejmxKVqw1B3ipXEdftegYCPdEAEZQNFCGeZq lOQu7acEe13WLlSa9gv8BxnMo7+AaZNcascLgRUmS25aucsqVKN/JiwgwQnbuZS45wpZ9Y jwTtZFs9vY3mCfW2u5iCF5gHL9/OsSF3r1spr7rGNeOD0POur7mdJL502gQSNDU7L3mmuY GtJg/5ygTurpcbRNeZhC0ErJ+BnGHJgrXQmlc7l5qNHW7pJqMYU1LFwMMz9XdakU2J6tZ/ f8aUpopq2ztkr2K/8NRjwN0qX4ie9b6WtCqd5uESlMtwYSiw6/jmPCrjABAjOw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZVd5w59YMzlFl; Sun, 06 Apr 2025 03:25:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5363PuGC002118; Sun, 6 Apr 2025 03:25:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5363Puv6002115; Sun, 6 Apr 2025 03:25:56 GMT (envelope-from git) Date: Sun, 6 Apr 2025 03:25:56 GMT Message-Id: <202504060325.5363Puv6002115@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 297473069610 - main - bhyve IOMMU_REMOVE_DEVICE(): ignore iommu absence for sake of ppt_attach() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 29747306961017bb65324908d794b4f6bb08c1c8 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=29747306961017bb65324908d794b4f6bb08c1c8 commit 29747306961017bb65324908d794b4f6bb08c1c8 Author: Konstantin Belousov AuthorDate: 2023-12-19 16:05:16 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-06 03:25:38 +0000 bhyve IOMMU_REMOVE_DEVICE(): ignore iommu absence for sake of ppt_attach() Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49629 --- sys/amd64/vmm/io/iommu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/amd64/vmm/io/iommu.c b/sys/amd64/vmm/io/iommu.c index bd86ac37a83e..7167734c000b 100644 --- a/sys/amd64/vmm/io/iommu.c +++ b/sys/amd64/vmm/io/iommu.c @@ -129,7 +129,7 @@ IOMMU_REMOVE_DEVICE(void *domain, device_t dev, uint16_t rid) if (ops != NULL && iommu_avail) return ((*ops->remove_device)(domain, dev, rid)); - return (EOPNOTSUPP); + return (0); /* To allow ppt_attach() to succeed. */ } static __inline int From nobody Sun Apr 6 22:13:49 2025 X-Original-To: dev-commits-src-main@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 4ZW67K4ds7z5sZwL; Sun, 06 Apr 2025 22:13:49 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZW67K3wVPz3Ckk; Sun, 06 Apr 2025 22:13:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743977629; 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=gFf7Odmf+5W7HpSplTNPYFnBKioGd441/dkOB8xU1fc=; b=tFfCZ7NDgnYJ1//q468euOEIdCR00bacEBXN2vJGOO7/fH9sPA4d8mlf9hSgwz3JSI69Lm ER6mSXiWOSljyQMfMYSkZDB9XzDxJNn3kC++ZXBbT48YXyARSyeNyujxBYAppbCADQ1uPY l4JNlAsEqu90CbcM/DWX2OTaICvJSC2Aa/hQJb8jt7kfPtbvd/l1XNmMHqGIeYgTiSV3X/ eJGP2SaiTGdTZmTnRZ27U7rE9bliQSdrx5kTcQ+c8fhGRZ9tOEDX+HtLxLYzwFhOht9uUC 1WRuWQIswtVShCePoKUKQGtBu9Rh22pfrEJl3+SAfFR3ZYKG+6iN1SwQwY+a1w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743977629; a=rsa-sha256; cv=none; b=Q+qlQeP1jg/Umu7GYkFArnJhqEnIiYrhQrHrClC65/v1xuYlUjjWVazfx7gXqSSztEwQFM sIjsfXLJoXjdZkRMqNjpwHPih+OvztOxtklGUGsQm2fC1ZZMeO8PXlsKLeXWHkgaeuyWTp U04iFHpDmiQXDnPo/zLdgIvU4KrMWqc0x1UvRYbg6n2coZxy+WTBmB51RMu4wsNK2lJ9tv 1HbjQaNOVq8dpebd4WRnug1ApQAPBQpXgJOOP+hmEKenaXEfZvdLbmxcfZU4XmRclRw0FM Y9D0q4OFPrWzAjQRsI7x5c/3xDcll4LqmJfEe4EL1LtuYlPZQPvuF7mgvP6JBQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743977629; 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=gFf7Odmf+5W7HpSplTNPYFnBKioGd441/dkOB8xU1fc=; b=bFK7vjy+fCL6FjCxJXt6gJbIYZyOESLS0WzTQl51ddPCDVU0JvF8WQaPN4hRFqOrMifiNy RaS7Oz/WPbnSMk3CoT7Dhq0uCHvorg5Ww0tvo2YHjseJg+jgrX8mpOE9PppAsebQfTVgSa 0QL7L1g3bkzbr+p0UG4rO3HePVj03EEQex1ZAN6aPTbtZyjge7fkbIqNlP9ddPo1r/aP0m PR1kezzcbmyypESNMKT+JMYjDJJNbZUE/BOdpiPlfrEiWOHPPYvVOApZ1H+glDXdJMDK/s Di4tWSjlEWonfJIyAoO+P8nI7wdS4zsYr6hPS08a6w6O2LyKeiCFnvDiqJWuLg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZW67K3WVwz4hF; Sun, 06 Apr 2025 22:13:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 536MDneT007119; Sun, 6 Apr 2025 22:13:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 536MDnTK007116; Sun, 6 Apr 2025 22:13:49 GMT (envelope-from git) Date: Sun, 6 Apr 2025 22:13:49 GMT Message-Id: <202504062213.536MDnTK007116@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 8ef6d8ad1a61 - main - jails: delegate checking PRIV_PROC_MEM_WRITE to priv_check_cred() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: 8ef6d8ad1a61a17cdaed2f5666d5a6904fd0737c Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=8ef6d8ad1a61a17cdaed2f5666d5a6904fd0737c commit 8ef6d8ad1a61a17cdaed2f5666d5a6904fd0737c Author: Konstantin Belousov AuthorDate: 2025-04-06 16:57:01 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-06 22:13:30 +0000 jails: delegate checking PRIV_PROC_MEM_WRITE to priv_check_cred() PR: 285811 Fixes: 4a5fa1086184f7450f63d4a8e403b16f40a78fce Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49682 --- sys/kern/kern_jail.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c index 37c0bd49490f..5dd07fbf77d1 100644 --- a/sys/kern/kern_jail.c +++ b/sys/kern/kern_jail.c @@ -4017,6 +4017,11 @@ prison_priv_check(struct ucred *cred, int priv) case PRIV_PROC_SETLOGIN: case PRIV_PROC_SETRLIMIT: + /* + * Debuggers should work in jails. + */ + case PRIV_PROC_MEM_WRITE: + /* * System V and POSIX IPC privileges are granted in jail. */