From nobody Thu Oct 29 01:34:58 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 4jFRcL68kjz6xWsN for ; Thu, 29 Oct 2026 01:34:58 +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 4jFRcL3KVwz4Dfx for ; Thu, 29 Oct 2026 01:34:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793237698; 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=T4ceI5WLrwvxS2pmX390EcrqFWErdObWKgTzVPwkLaw=; b=fCrLhwwvI4tjCTAduIhKUOGTDGf/5szC0qdHHjxrxSgh1PddOy1sNKwF0MLf0uGjczxRp2 SBsbmcezoNRfoQO4RtLKh7BYlQxOO3jo8tr9kMl1zE9VMsJkph+DDLiMEJIyI+XxX7iMa5 JS4KnVFTmqVHtTmqGSWjA44ozWsCslwRxjkUVwfg31hltS3D/GpoFG58LAgEYtsjV8OCMw 8WgoK0/3zxo7HA9jTXSQn6ODetwkQ7f0+xnmGzOkywi1WielSM18IEp+pKZYlA2e9ggXQG gcHkKzOeRSLNZjghmzfb4NBYQO1i5S3ctMha2A6hIiSJXSv/DnuYQZTtB3JA/w== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793237698; b=UNgZ0d9SOo/ml1DCAcvZ1vyhiJZnj7w69WSzuRVcKQdChsNvgAHwwf20+IInYj4PcWo98P XFiAS7jzqNwio4hPqipYPMEJP7PDwa5NYKGvmT1xcb8Q17zU2BN/x5e82qHzlwyLmwukW3 J9ItZAvO5y2J3ofS8PE8ZqH7LJlVGzTSl+3iuvCUkXE8Jdu9k723UTuz9dNQMDOUQvweWj CKn5Oh4OJhcoEG+royrwWhUmZCNtfmt7AgbqQaEK11hZRD76WNMvUE4RuDdy3JA8/Wfraj NRYUGxgR/cMfxQbIG95tY/Kl2r/aE9pf70r5zXDJGFAcLZ5GElMVOTrgkw4Wjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793237698; 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=T4ceI5WLrwvxS2pmX390EcrqFWErdObWKgTzVPwkLaw=; b=jJNHSIT1B+dDTULTkLo57SGhOSx2LLYo5kgkQeArlmdNt4yWanphlTakoNmc7/Syxbrq/m 7L8+w234GbD92YmaOD57kKgpG0pZLS1+BRyFXqxk244BjbJSZyZSMUHolaDVceczq7uKmN qomxFz2nRGy2C+IDk9CF73e48bzS40uGpXj8SFTkhBnOHWk8AZSPUrKci3ClO2BneR5YNg KvganwwRYZMfM5lxIKslpbBZiNBRILJHeJ4HxBlMm52y32fXF+0BYbMEy3D/GcpldxTXdT 6+Zrf4UMYXjcMLBXdgXgjlWvgimtIZIYWeOP7D2Wv/DU+6BWpGBB3FTUsP4JKw== 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 4jFRcL30mGzHQ6 for ; Thu, 29 Oct 2026 01:34:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 4515b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 29 Oct 2026 01:34:58 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 2fd12bf2dd9c - main - amd64 resumectx(): restore FRED state before loading %cr4 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: 2fd12bf2dd9c1cf997ce2505bc2af10572ca70e2 Auto-Submitted: auto-generated Date: Thu, 29 Oct 2026 01:34:58 +0000 Message-Id: <6ae2a2c2.4515b.474e3169@gitrepo.freebsd.org> The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=2fd12bf2dd9c1cf997ce2505bc2af10572ca70e2 commit 2fd12bf2dd9c1cf997ce2505bc2af10572ca70e2 Author: Konstantin Belousov AuthorDate: 2026-10-28 14:05:50 +0000 Commit: Konstantin Belousov CommitDate: 2026-10-29 01:33:47 +0000 amd64 resumectx(): restore FRED state before loading %cr4 %cr4 has the FRED enable bit. This only matters for NMI and #MC, and the kernel is really not ready to handle them while in resumectx(), but do it for formal correctness. Sponsored by: The FreeBSD Foundation MFC after: 1 week --- sys/amd64/amd64/cpu_switch.S | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/sys/amd64/amd64/cpu_switch.S b/sys/amd64/amd64/cpu_switch.S index 774098d7def5..47519c38b7ee 100644 --- a/sys/amd64/amd64/cpu_switch.S +++ b/sys/amd64/amd64/cpu_switch.S @@ -467,22 +467,10 @@ ENTRY(resumectx) movl PCB_SFMASK(%rdi),%eax wrmsr - /* Restore CR0, CR2, CR4 and CR3. */ - movq PCB_CR0(%rdi),%rax - movq %rax,%cr0 - movq PCB_CR2(%rdi),%rax - movq %rax,%cr2 - movq PCB_CR4(%rdi),%rax - movq %rax,%cr4 - movq PCB_CR3(%rdi),%rax - movq %rax,%cr3 - - /* Restore descriptor tables. */ + /* Restore FRED state before reloading %cr4. */ cmpb $0,fred - jne 1f - lidt PCB_IDT(%rdi) - jmp 2f -1: movl $MSR_FRED_RSP0,%ecx + je 1f + movl $MSR_FRED_RSP0,%ecx movl PCB_FRED_RSP0(%rdi),%eax movl 4 + PCB_FRED_RSP0(%rdi),%edx wrmsr @@ -506,7 +494,22 @@ ENTRY(resumectx) movl PCB_FRED_CONFIG(%rdi),%eax movl 4 + PCB_FRED_CONFIG(%rdi),%edx wrmsr -2: lldt PCB_LDT(%rdi) +1: + /* Restore CR0, CR2, CR4 and CR3. */ + movq PCB_CR0(%rdi),%rax + movq %rax,%cr0 + movq PCB_CR2(%rdi),%rax + movq %rax,%cr2 + movq PCB_CR4(%rdi),%rax + movq %rax,%cr4 + movq PCB_CR3(%rdi),%rax + movq %rax,%cr3 + + /* Restore descriptor tables. */ + cmpb $0,fred + jne 1f + lidt PCB_IDT(%rdi) +1: lldt PCB_LDT(%rdi) #define SDT_SYSTSS 9 #define SDT_SYSBSY 11