From nobody Thu Sep 03 15:05:33 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hbNFZ6CGwz6rPKP for ; Thu, 03 Sep 2026 15:05:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hbNFZ2zp4z43c8 for ; Thu, 03 Sep 2026 15:05:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788447938; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Zkh08uh4L7HFCahqvM1Wt9qRrrlgI4WW8hiLNVAoDPs=; b=GNkWQlUsAAXPKDuckh/vLENRBpX8sckjf6GO/v5mQYBGwThY7jGmvlKS3OocjkwvtGgjJs LnyaeCVQsK1nx1ol1Xd6dBaRuR49f9z7nhcX3Hiy3j82hsoOrlt5fJbcxlDeN1Pv4ozVvS hVsP/RoHFHLgw4DZiEq6T0RTS4g0oFTPqHS7EN+LEY1izeAcOWiZpQTKvvNK981cZ5XOWi d9RSm+PVJ3k476Nfc8hzpT1xHvRn7nTI+0zINv9VqOZe7e7/wl10eiP/LYg/6tr3s24Y3l YrcR8ZJ5ZzG5wpz0xavb60wD2vPY0hzFUpdGeLEeznBuzGM4DUepP2yMu92iPw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1788447938; a=rsa-sha256; cv=none; b=px7u/ueA7o5f8/K9uDhknkNAKlkXnWCmkPQH1e3tw+UwyChyr8QSobXhB9ufZG1POIJo72 qkUQnzn+DW+GlQVFizaEAomip4QLgmOhnSNvjaddVY1zddqnQcOoIDMIEOpMDEe+/m1jgg FCwcvbfH0U8/I/WeHNN+iR2/WFArB2sP3nIDEhz8TIdMZOXNOMDk6UXWkiuTXR10ngiWau jgcDq8hkVfq9x3HTkJAwTrHoa8SGi2E3ENc/v9o7pAlXKMGolQKfNz6AOciCn+k9Y/cY5K J6NbZDAr9bx6mRTGR23hiGb/4+j4lFlp4+aXmfR4L3pujK37k9KIMJJpWD68lQ== 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=1788447938; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Zkh08uh4L7HFCahqvM1Wt9qRrrlgI4WW8hiLNVAoDPs=; b=Y6M0JWUGQKRZFjg86He8YjPuGQvwFQEhF2/gryV1OD5Zi9ZExPY0WpTX9BFVZi8LcXq+gi +fuuJoyfsF4B98PYHOKIwBz0n1DOseQqTPJPDBs+AiHZu24rxlnOE7FeEdom4L0nrOi3/7 8apsEcevf8Isw9lBOoTaySxlkHx1Jy8mAgWMLDp0Ad78mNi/rkjNVHsVtSjnxniIHwp3Lw eIDutOqLDmmXNbcW0UrxrkNtwjvQ/GWmTeEM7zM77NK9s4wIRsz2Nqt4t00hyJlmJVEoop ftyME4AX4qO8jS6Bv9aZQSGPMG3jxom3+fBDQbyGKjUNm2avls0Ig+jAf7o13Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hbNFZ0yqgz3WV for ; Thu, 03 Sep 2026 15:05:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 300a9 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 03 Sep 2026 15:05:33 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Benjamin Jacobs From: Mark Johnston Subject: git: 3e6bc5c3b563 - main - sys/arm: Fix DTrace trap hook List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3e6bc5c3b5632ac9f55633b7d4e2e1a42b96a78b Auto-Submitted: auto-generated Date: Thu, 03 Sep 2026 15:05:33 +0000 Message-Id: <6a998cbd.300a9.368bc208@gitrepo.freebsd.org> The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=3e6bc5c3b5632ac9f55633b7d4e2e1a42b96a78b commit 3e6bc5c3b5632ac9f55633b7d4e2e1a42b96a78b Author: Benjamin Jacobs AuthorDate: 2026-09-03 13:52:19 +0000 Commit: Mark Johnston CommitDate: 2026-09-03 15:05:03 +0000 sys/arm: Fix DTrace trap hook Move the dtrace_trap hook at the start of the abort handler to exit early when a trap is handled by DTrace. Fix the type argument to be the actual fault type instead of the value of the FAR. The latter will need to be added to the trapframe, until then DTrace will report unmapped addresses as the null address. Correct the comment of the PUSHFRAMEINSVC assembler macro to reflect that coming from SVC32 mode is expected for DTrace traps. PR: 298064 MFC after: 1 month Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D59279 --- sys/arm/arm/exception.S | 6 +++--- sys/arm/arm/trap-v6.c | 15 ++++++++------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/sys/arm/arm/exception.S b/sys/arm/arm/exception.S index 2c25628f77cc..9df8e029385c 100644 --- a/sys/arm/arm/exception.S +++ b/sys/arm/arm/exception.S @@ -106,9 +106,9 @@ _C_LABEL(dtrace_invop_jump_addr): /* * PUSHFRAMEINSVC - macro to push a trap frame on the stack in SVC32 mode * This should only be used if the processor is not currently in SVC32 - * mode. The processor mode is switched to SVC mode and the trap frame is - * stored. The SVC lr field is used to store the previous value of - * lr in SVC mode. + * mode, except for data abort generated and handled by DTrace. + * The processor mode is switched to SVC mode and the trap frame is stored. + * The SVC lr field is used to store the previous value of lr in SVC mode. */ #define PUSHFRAMEINSVC \ stmdb sp, {r0-r3}; /* Save 4 registers */ \ diff --git a/sys/arm/arm/trap-v6.c b/sys/arm/arm/trap-v6.c index be7a10bb1f0a..60d716603f3f 100644 --- a/sys/arm/arm/trap-v6.c +++ b/sys/arm/arm/trap-v6.c @@ -328,6 +328,14 @@ abort_handler(struct trapframe *tf, int prefetch) return; } +#ifdef KDTRACE_HOOKS + if (!usermode) { + if (dtrace_trap_func != NULL && (*dtrace_trap_func)(tf, idx)) { + return; + } + } +#endif + /* * ARM has a set of unprivileged load and store instructions * (LDRT/LDRBT/STRT/STRBT ...) which are supposed to be used in other @@ -550,13 +558,6 @@ abort_fatal(struct trapframe *tf, u_int idx, u_int fsr, u_int far, #endif usermode = TRAPF_USERMODE(tf); -#ifdef KDTRACE_HOOKS - if (!usermode) { - if (dtrace_trap_func != NULL && (*dtrace_trap_func)(tf, far)) - return (0); - } -#endif - mode = usermode ? "user" : "kernel"; rw_mode = fsr & FSR_WNR ? "write" : "read"; disable_interrupts(PSR_I);