From nobody Tue Sep 29 00:32:00 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4htzdd5Zsvz6t5Bs for ; Tue, 29 Sep 2026 00:32:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4htzdd4PxYz4WGF for ; Tue, 29 Sep 2026 00:32:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790641925; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7I1QRYvFXwZR4LFv9rcBe4HKcgU0jorm3luCwE7wCps=; b=at3e29OB/Y+XubEGdS2UYDCPV93ZbpgVIzDtHfYWsvrv4rJAwN/fL4AupU8epYLxhoVycS KLUXkGue58hHUFqu40MX0pjmAOHo75PTXzNGZQMYjgc1UYzeio2XX//HL51lS+9y0dOai9 ZGmchnNqK+Il8gRgnhApkC3w36u1e5dx+ahH+Ilzj1sdBVKJyCmr8FMKQZ2oc9USrPAW/E E2M/Me1AqNCZnSUS8quXWJSgERvA1w2mY/mmFYVkPiWQZl7PFLb7CUVtK6LBQKwu114NUf kMVldCuu2zzu84OcloMnj4e+uVjPYLWniaRHBlhYHs0w9BwgZolIUTuovODCQQ== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1790641925; b=QEmeumPDJnuPpCWdQFGTWRBq4+pJtig8t1QhyX7FdlauqatIuk/b5IreHTV6tSP0oIZ90y Z8assiWT3fThaek9hjV4ZxG3Iqm11k7QSBA7tolPX8l1oos+rOQdhFvnHwBTdW+NCAwiYf Y2EgTthQmhoKpp36FKYPNI1g27JLHCyLsNtztADexZc/C1L5FciTwGVsLnn/h69WSbllWa Y7QNvI7THwRBvuU9LcZM1Vt8AS4bsexmS2frER76NJCVwANirGp5GFUWNXXY7WDywrlbzg Tq/H0z+L5t+Mjdz9Lyw+yddaWJjiv9musyp3zCowxpTbCZyqxOEtZn/V5xq+Jw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790641925; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7I1QRYvFXwZR4LFv9rcBe4HKcgU0jorm3luCwE7wCps=; b=uQUanv/ZjxvUjkv5idT00mXLI9SJaYQyLbu3Simnf11Ils2kJUTGpH0O6DaK+du+J36vfd vrI00MDHsTS/BJQoyukXa8NirWyAidUk+63L1VhtOI3OYQ9oYMXBvfCVqUQzGwxDf6Gy7n /lpBtiAW0G45KDaLQqLK9DMJnAbmleJ7xg9OQ7CHbtyopEhwFBMSHaX8lCSkF1J/O73oDo wUCYTqlMfLGPU00RMSLh2MzAj+/wH3zlLMcmaoqKI+29wPItYFqR8kkvrXCIHbKPmczCYd EgJtP+xfNcOxdmr+TFbK68+Wd6Bs5+/AbfUsdJQkdBTrRyKjIcML+zOyvFd2+g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4htzdd3B9bzrVb for ; Tue, 29 Sep 2026 00:32:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3cf16 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 29 Sep 2026 00:32:00 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: c52f99acee2a - stable/15 - amd64: use WRMSRNS immediate form to update splitlock control, when available 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: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: c52f99acee2a65b8e58b9cc50a00130eb238f909 Auto-Submitted: auto-generated Date: Tue, 29 Sep 2026 00:32:00 +0000 Message-Id: <6abb0700.3cf16.1769dbae@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=c52f99acee2a65b8e58b9cc50a00130eb238f909 commit c52f99acee2a65b8e58b9cc50a00130eb238f909 Author: Konstantin Belousov AuthorDate: 2026-09-19 07:54:00 +0000 Commit: Konstantin Belousov CommitDate: 2026-09-29 00:27:15 +0000 amd64: use WRMSRNS immediate form to update splitlock control, when available (cherry picked from commit 20c09e6fece29dbcf4835b4dd90e969f1b9b3e59) --- 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 c871838c9c7b..038abe929753 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -1930,13 +1930,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) { @@ -1947,13 +1962,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) {