From nobody Tue Feb 3 14:05:05 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 4f54xY5cwRz6PcDb for ; Tue, 03 Feb 2026 14:05: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 "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f54xY2BYcz3k4Z for ; Tue, 03 Feb 2026 14:05:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770127505; 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=xCBePsEzq9N/BP0eAwjn/OMIiUkU/lGAQX8ZfNQDTWY=; b=cDFtRHrPc8D/pocdhK+cOmhiXMw+wahjNMr+mobPNQq9qV9lrhacuNCn/x4tzbyWTzkYs5 8uM8h0lFwk2jAcKFOGV5vLQz1mYmijYWAgErwsN5YF3Sqb5IsqOUctNfur9lFuPm+ps/q1 e+8QnqSRqD9YnORW0cGt7qGlauCK07wf6qDaUiLyDX9PxTUMBvuiN9+KqEmtg/nBwlBYSn sfm1t+WD8leGlk/EnKwcq3GKX9p5hTJ6PKqoE8PEZrpRprzzmlcwryUjwsHU/15EvnJcgX P4CApBnF39ymXkTlhx1EhosPfH/W1eDVlIRkOhRzw/imTRB2EcXqPeeNkUJ+pg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1770127505; a=rsa-sha256; cv=none; b=vC/eS8KLe9GhmFUgpc1/jAqa5cAdCl24QFq97UhFGUnVuNxSBFUrJHQy4+qJLFoUeNlhdm /c6VR0rbECbnhpGdjY1lBOZp0N3Xu6BcbZuk/le8+1L/cBIkpExDNSORu8LonwQ9UnyI0+ woWfCwm/K9+A3JwBpVKoiQRua8zAjO4rEbraPJIZdhdLGrz+jjLh4svjwRM3H2frXATJrE PFfmpCGIuHO1Izu6mqNZ9Javra/cJMIYkFkCDiKYY1XsJilPep4ZAG1vPJYwiK7gfBmp9r V+kvLK/dn0Xyn3wgk7kF8ncvjsh+TmO4KkdOHFPOn6N8rNXpN1gPENxmvwJTeA== 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=1770127505; 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=xCBePsEzq9N/BP0eAwjn/OMIiUkU/lGAQX8ZfNQDTWY=; b=o7bFJC+/Ok7nRnZEi9m+8XeoRmGb57kEKBL7P9nuriCn9Hs86XKPCSCw0hrJICg0FbaaC9 0xwcklHiXtRk2qyR5b2ugjuE5rDkJ2/x7dpcwpE3F17pQfv2nnqV4rjsMx85ynwoqUnCzt hqXQqBN1LE4cUEFWgHr7AuxQae3evFHjyFQjcppJFe7WUvWsKlopAfp8FWG2bsw2MMtNTS Ew23UhX62RhHiAqP8bGS0ThUSzE7zVSnN6qTaEBrCLo0ata+Qvnf3iL64MvNLdD7jA1za0 9Hh1y6nLIvBSrMocnB+EEOQqD8B2+mxgcL+LzeevXtpait5r3Stp8H4BoFpQtA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f54xY1kfMz1M1 for ; Tue, 03 Feb 2026 14:05:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 39f45 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 03 Feb 2026 14:05:05 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Olivier Certner Subject: git: e5f8cbb86d58 - main - x86: x86_msr_op(): MSR_OP_LOCAL: Disable interrupts on atomic ops 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: e5f8cbb86d58f25b5ff168506b78d09dca266fb6 Auto-Submitted: auto-generated Date: Tue, 03 Feb 2026 14:05:05 +0000 Message-Id: <69820091.39f45.5f1e54ad@gitrepo.freebsd.org> The branch main has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=e5f8cbb86d58f25b5ff168506b78d09dca266fb6 commit e5f8cbb86d58f25b5ff168506b78d09dca266fb6 Author: Olivier Certner AuthorDate: 2026-01-23 20:52:46 +0000 Commit: Olivier Certner CommitDate: 2026-02-03 14:03:01 +0000 x86: x86_msr_op(): MSR_OP_LOCAL: Disable interrupts on atomic ops On MSR_OP_LOCAL and non-naturally-atomic operations (MSR_OP_ANDNOT and MSR_OP_OR), there is no guarantee that we are not interrupted between reading and writing the MSR, and that interruption could actually perform some operation on that MSR, which would be lost. Prevent that problem by temporarily disabling interrupts around MSR manipulation. Reviewed by: kib Discussed with: markj MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D54996 --- sys/x86/include/x86_var.h | 2 ++ sys/x86/x86/cpu_machdep.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/sys/x86/include/x86_var.h b/sys/x86/include/x86_var.h index 701b982e6afb..215fe0562465 100644 --- a/sys/x86/include/x86_var.h +++ b/sys/x86/include/x86_var.h @@ -171,6 +171,8 @@ uint64_t rdtsc_ordered(void); /* * Where and which execution mode + * + * All modes cause execution on the target CPU(s) with interrupts disabled. */ #define MSR_OP_LOCAL 0x10000000 #define MSR_OP_SCHED_ALL 0x20000000 diff --git a/sys/x86/x86/cpu_machdep.c b/sys/x86/x86/cpu_machdep.c index 5cbcb40540bb..5f8965bd5614 100644 --- a/sys/x86/x86/cpu_machdep.c +++ b/sys/x86/x86/cpu_machdep.c @@ -160,6 +160,7 @@ x86_msr_op(u_int msr, u_int op, uint64_t arg1, uint64_t *res) struct thread *td; struct msr_op_arg a; cpuset_t set; + register_t flags; u_int exmode; int bound_cpu, cpu, i, is_bound; @@ -171,7 +172,9 @@ x86_msr_op(u_int msr, u_int op, uint64_t arg1, uint64_t *res) switch (exmode) { case MSR_OP_LOCAL: + flags = intr_disable(); x86_msr_op_one(&a); + intr_restore(flags); break; case MSR_OP_SCHED_ALL: td = curthread;