From nobody Tue Oct 27 12:01:21 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4jDTc159zjz6xTgp for ; Tue, 27 Oct 2026 12:01:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jDTc11Tn8z3Cyg for ; Tue, 27 Oct 2026 12:01:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793102481; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Xw4VTLlQiIFODuK7Yt/zwkg5kNRYtWYKPdthH6Ea3I4=; b=T3CyYuA5/r9QorGBoav8Yc8Jne3bfqiMRA8MWU7UOoGmuxWaJ9+T0NcF1cD+Gnufh3B4du wnMxkZN1fqfZdG4hyvh+CfgAihorFYepsBhDg7nvzTIVaTE7HRUIS5Lk6eNxpyzOkSklmu 8L4dOq2viNqPXIn2QySt7c4PyCdVRhHzqixNcmO5eLs8aH2qyeDvT4OeyEI2n8/djrJm8T xvbQCKxXCKcoUSduoQP/o0H/45YmlZVqLnFc6pAEKPEKEB0u5F3Gn/Ly4UmaAMcgyISj1v OgyshcC+gCv3SEPqMwdhf92qf0uRa/AiiS47kbfr3u4Flq81FARYiVuwJ3H2Ig== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793102481; b=ebIL4eYz7CQTirsH/I8qCIgicPO8U3LqeaFRjgp08FIvM4pTfgaWS6P6ZEmUKALGhsRxix UTNw7pgM7Rb1UOqc8ZpFE5PfXXxUYk1Rn3DHE35tobWpa8FPWueFpI2LRyaX2efDOlAXoZ WUpwrNn/SZdf8GgnhdvxPz0m38CfN8h0ekCWT2Q4D9yGgkFgiyjD4JjKHs+TlnlRGbSlS0 85wh33APRsrNDNji1jAsVmKCqkSiZFIdyusINkG5xKH6cC5cqsfmRQtSTguKBYwdNLz+5i J2nXKMg2AcuFAMHc8VRlxJg6CGVrmyO53XeJMXDVNy8JoaTUqdcc3bkeDIwARQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793102481; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Xw4VTLlQiIFODuK7Yt/zwkg5kNRYtWYKPdthH6Ea3I4=; b=vUc08JZH7HL26eZ7+Euz+8f37CxuLNhw6DdUOEVwJYf2BTxvSlIRdkmlZMbHvZ96ZmimMB dORQaI/RlHpMXad07S05uyEIALNXaedOOpomk0MRoq0130kEhbWX0wbgu1s7O/unuvNXyG 8ZhVcIh8DsYCNkPW1N7ToOe/mG/rvbuyjVt9AZoo6noo2tt5o+CiqlTEMC0ePgDqNBtZZm tZbvzEDh4kClwDUDEQfCAEmCWdrV9+EdH/HUSks4b/Vb9oXmlabH4oGpusrdkxfUpCg5Pl q8WZTc5E1SP2Ex+N3FHLQ7UYxuDo6q4bCBwtDgWS84jV+sghvIS0cXoX9/6x6w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4jDTc1141KzK11 for ; Tue, 27 Oct 2026 12:01:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 32ed7 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 27 Oct 2026 12:01:21 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 8671e823b767 - main - amd64: do not pass SYSENTER frame to FRED fast syscall handler List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: Commit messages for all branches of the src repository 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: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8671e823b7678731cd1aaf8850ccde4a2c293527 Auto-Submitted: auto-generated Date: Tue, 27 Oct 2026 12:01:21 +0000 Message-Id: <6ae09291.32ed7.38dc343c@gitrepo.freebsd.org> The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=8671e823b7678731cd1aaf8850ccde4a2c293527 commit 8671e823b7678731cd1aaf8850ccde4a2c293527 Author: Konstantin Belousov AuthorDate: 2026-10-27 10:08:14 +0000 Commit: Konstantin Belousov CommitDate: 2026-10-27 11:59:41 +0000 amd64: do not pass SYSENTER frame to FRED fast syscall handler With FRED, SYSCALL is delivered as event type syscall (7) and vector 1. SYSENTER is syscall with vector 2. Handle SYSENTER in slow path, otherwise 32bit code is able to execute 64bit syscalls. Also check that SYSCALL comes from the 64bit mode. Intel already specifies that SYSCALL causes #UD in compatibility mode, but there is no AMD specification for SYSCALL under FRED yet, and SYSCALL is allowed in compatibility mode on AMD with IDT event delivery. Fixes: 6e93f5e4d693 ("amd64: FRED support") Sponsored by: The FreeBSD Foundation MFC after: 1 week --- sys/amd64/amd64/exception.S | 8 ++++---- sys/amd64/amd64/genassym.c | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/sys/amd64/amd64/exception.S b/sys/amd64/amd64/exception.S index 206b56abc545..1fa797cf5d9e 100644 --- a/sys/amd64/amd64/exception.S +++ b/sys/amd64/amd64/exception.S @@ -1650,10 +1650,10 @@ fred_events_handlers: movq %rsi,TF_RSI(%rsp) movl TF_FRED_EVINFO2(%rsp),%edi movl %edi,%eax - andl $TF_FRED_EVINFO2_TYPEMASK,%edi - cmpl $TF_FRED_EVINFO2_TYPE_SYSCALL,%edi - je user_fred_syscall - jmp user_fred_non_syscall + andl $TF_FRED_EVINFO2_SYSCALLMASK,%edi + cmpl $TF_FRED_EVINFO2_SYSCALLVAL,%edi + jne user_fred_non_syscall + jmp user_fred_syscall . = fred_events_handlers + 256 subq $TF_ERR,%rsp diff --git a/sys/amd64/amd64/genassym.c b/sys/amd64/amd64/genassym.c index 9a5a74b3f6d6..e9ab1e23c81f 100644 --- a/sys/amd64/amd64/genassym.c +++ b/sys/amd64/amd64/genassym.c @@ -190,9 +190,15 @@ ASSYM(TF_FRED_EVINFO2, offsetof(struct trapframe, tf_fred_evinfo2)); ASSYM(TF_FLAGS, offsetof(struct trapframe, tf_flags)); ASSYM(TF_SIZE, sizeof(struct trapframe)); ASSYM(TF_HASSEGS, TF_HASSEGS); +ASSYM(TF_FRED_EVINFO2_VECMASK, TF_FRED_EVINFO2_VECMASK); +ASSYM(TF_FRED_EVINFO2_VEC_SYSCALL, TF_FRED_EVINFO2_VEC_SYSCALL); +ASSYM(TF_FRED_EVINFO2_SYSCALLMASK, TF_FRED_EVINFO2_TYPEMASK | + TF_FRED_EVINFO2_VECMASK | TF_FRED_EVINFO2_LM); ASSYM(TF_FRED_EVINFO2_TYPE_EXC, TF_FRED_EVINFO2_TYPE_EXC); ASSYM(TF_FRED_EVINFO2_TYPE_SYSCALL, TF_FRED_EVINFO2_TYPE_SYSCALL); ASSYM(TF_FRED_EVINFO2_TYPEMASK, TF_FRED_EVINFO2_TYPEMASK); +ASSYM(TF_FRED_EVINFO2_SYSCALLVAL, TF_FRED_EVINFO2_TYPE_SYSCALL | + TF_FRED_EVINFO2_VEC_SYSCALL | TF_FRED_EVINFO2_LM); ASSYM(TF_FRED_EVINFO2_INSTLENMASK, TF_FRED_EVINFO2_INSTLENMASK); ASSYM(TF_FRED_EVINFO2_INSTLENSHIFT, TF_FRED_EVINFO2_INSTLENSHIFT);