From nobody Tue Sep 22 15:41:53 2026 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 4hq48f3WDLz6sNl2 for ; Tue, 22 Sep 2026 15:41:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hq48f0Kg0z4vXP for ; Tue, 22 Sep 2026 15:41:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790091714; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=by2hNdCNrj0cGcZtsdx7ZJGu8ffSZYRmMn61RLgDdSE=; b=Ayl1ongh+Mb7CuueYUctQ61aeC7gtBq/DRgE3wb0TlFBTat7+gBrFqpJ/suK1Fv6s09WMh 3ewxGLWzqc51HGULbCTqDz5ss/aaVCZ8kvnkFRYfmU3Gy/aA6cNy+BR5tRWIZoTHYfYjlJ L2+7oi8F69gUZZpuoSyvGAFzml34zyFcuC51ba+4MDX/jktGPQXG+q220B3q6Y69dObW8+ fkaopRVzZHZxzXjb2glwuly7dB7B2jfvuMkvqxiNQORFLkC5qTNo+huyhZUlB7LEMgndjG iuwpF91jhitJiHuy2Wo409kmZZ/l/6aPYb281ipY2CQ795cKBR8EVfrG4966uQ== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1790091714; b=oEBReCMq7VggfHpWf54ecTKK9WpUfFQ9iXUC+gqo5qIBIj0lAwsZgUqu+5c8R77WEIzcdy 8dpJXAKoLXRc+fK7L7JrA57ueei9w6hR0kJook4pkdqjr0jm8OUBp8k6kyFv2OmSO7/gvr Ca8jlLhjcF+KJMHZmimVrDJPhOMNwpORWFynqH7pt4NJB1D/lgFlNngcx1zsWmJJ7TIgqD RIOimcIuO+GbXPAM8VZjstgi7T1xq5dhy4P4VgKBJ9OLYePBCYzjQCHcU5ItUhBhENXNz3 9+tGqNOq8ZQwCI2yttdmchWVDqN7vB3aJEtC3aXQxNAayA+6yggpqp7IP1xDhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790091714; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=by2hNdCNrj0cGcZtsdx7ZJGu8ffSZYRmMn61RLgDdSE=; b=s+lIPdVWUNIfmUcjSbBXk94iDTkiKJiAQ5GeuvsAiGAngc6ro3gLhRZLG0jlCDc93aRUv7 5sAIUJs9AdUkhU9tRIOuQJqF/hVBsSJpIjA5qy5ultz6t1d+bEvt8Oj1F3/opgSY7yGKi9 kiqpnuFLNvTmGFonI/KJyOR8482IPnZBecOHnzn+Y2Hk+qp1eMo+JbTlHuGcRrR5FqP7mp xPyJtwrvK7HCpKXZTF5+NaglvBDOumX0816QN//PYaZMU1MfXbONdUnSPq3st8hOWyw3yk QlVGuvDQfjr5jyTKX3AlNhEPBn4ouULzVmQjlp0zYE2qHDyLqPOuPVjqWttT5g== 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 4hq48d64Fwz1C8S for ; Tue, 22 Sep 2026 15:41:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 348ca by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 22 Sep 2026 15:41:53 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 20c09e6fece2 - main - amd64: use WRMSRNS immediate form to update splitlock control, when available 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 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: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 20c09e6fece29dbcf4835b4dd90e969f1b9b3e59 Auto-Submitted: auto-generated Date: Tue, 22 Sep 2026 15:41:53 +0000 Message-Id: <6ab2a1c1.348ca.2ffa1222@gitrepo.freebsd.org> The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=20c09e6fece29dbcf4835b4dd90e969f1b9b3e59 commit 20c09e6fece29dbcf4835b4dd90e969f1b9b3e59 Author: Konstantin Belousov AuthorDate: 2026-09-19 07:54:00 +0000 Commit: Konstantin Belousov CommitDate: 2026-09-22 15:40:41 +0000 amd64: use WRMSRNS immediate form to update splitlock control, when available Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D59815 --- sys/amd64/amd64/machdep.c | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index a1b2d116295f..099bc7163bde 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -1929,13 +1929,28 @@ safe_read(vm_offset_t addr, char *valp) return (uiomove_mem(UIO_MEM_KMEM, &uio)); } -void -enable_splitlock_ac(void) +static void +enable_splitlock_ac_wrmsr(void) { MPASS(ia32_splitlock); wrmsr(MSR_MEMORY_CTL, PCPU_GET(msr_memctl) | MSR_MEMORY_CTL_SPLITLOCK); } +static void +enable_splitlock_ac_wrmsrimm(void) +{ + MPASS(ia32_splitlock); + wrmsr_imm(MSR_MEMORY_CTL, PCPU_GET(msr_memctl) | + MSR_MEMORY_CTL_SPLITLOCK); +} + +DEFINE_IFUNC(, void, enable_splitlock_ac, (void)) +{ + if ((cpu_stdext_feature5 & CPUID_STDEXT5_MSR_IMM) != 0) + return (enable_splitlock_ac_wrmsrimm); + return (enable_splitlock_ac_wrmsr); +} + void enable_splitlock(struct thread *td) { @@ -1946,13 +1961,28 @@ enable_splitlock(struct thread *td) critical_exit(); } -void -disable_splitlock_ac(void) +static void +disable_splitlock_ac_wrmsr(void) { MPASS(ia32_splitlock); wrmsr(MSR_MEMORY_CTL, PCPU_GET(msr_memctl) & ~MSR_MEMORY_CTL_SPLITLOCK); } +static void +disable_splitlock_ac_wrmsrimm(void) +{ + MPASS(ia32_splitlock); + wrmsr_imm(MSR_MEMORY_CTL, PCPU_GET(msr_memctl) & + ~MSR_MEMORY_CTL_SPLITLOCK); +} + +DEFINE_IFUNC(, void, disable_splitlock_ac, (void)) +{ + if ((cpu_stdext_feature5 & CPUID_STDEXT5_MSR_IMM) != 0) + return (disable_splitlock_ac_wrmsrimm); + return (disable_splitlock_ac_wrmsr); +} + void disable_splitlock(struct thread *td) {