Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Mar 2026 23:31:34 +0000
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: eb0a78f6cef0 - main - x86 FRED: add CPUID, MSR, and CR4 bits
Message-ID:  <69b49e56.2116f.1c52bb7c@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=eb0a78f6cef0c2924b565d7c297cb08bb4de7cb0

commit eb0a78f6cef0c2924b565d7c297cb08bb4de7cb0
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-02-07 10:22:22 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-03-13 23:30:27 +0000

    x86 FRED: add CPUID, MSR, and CR4 bits
    
    Reviewed by:    jhb
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D55810
---
 sys/x86/include/specialreg.h | 23 +++++++++++++++++++++++
 sys/x86/x86/identcpu.c       | 11 +++++++----
 2 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/sys/x86/include/specialreg.h b/sys/x86/include/specialreg.h
index 3e5f598cd82a..4eb4f2c398b2 100644
--- a/sys/x86/include/specialreg.h
+++ b/sys/x86/include/specialreg.h
@@ -91,6 +91,7 @@
 #define	CR4_LASS	0x08000000	/* Linear Address Space Separation */
 #define	CR4_LAM_SUP	0x10000000	/* Linear-Address Masking for
 					   Supervisor */
+#define	CR4_FRED	0x100000000ull	/* FRED */
 
 /*
  * Bits in AMD64 special registers.  EFER is 64 bits wide.
@@ -549,6 +550,10 @@
  * CPUID instruction 7 Structured Extended Features, leaf 1 eax info
  */
 #define	CPUID_STDEXT4_LASS		0x00000040
+#define	CPUID_STDEXT4_FRED		0x00020000
+#define	CPUID_STDEXT4_LKGS		0x00040000
+#define	CPUID_STDEXT4_WRMSRNS		0x00080000
+#define	CPUID_STDEXT4_NMISRC		0x00100000
 #define	CPUID_STDEXT4_LAM		0x04000000
 
 /* CPUID_HYBRID_ID leaf 0x1a */
@@ -644,6 +649,15 @@
 #define	MSR_IA32_ENERGY_PERF_BIAS	0x1b0
 #define	MSR_IA32_PKG_THERM_STATUS	0x1b1
 #define	MSR_IA32_PKG_THERM_INTERRUPT	0x1b2
+#define	MSR_FRED_RSP0		0x1cc
+#define	MSR_FRED_RSP1		0x1cd
+#define	MSR_FRED_RSP2		0x1ce
+#define	MSR_FRED_RSP3		0x1cf
+#define	MSR_FRED_STKLVLS	0x1d0
+#define	MSR_FRED_SSP1		0x1d1
+#define	MSR_FRED_SSP2		0x1d2
+#define	MSR_FRED_SSP3		0x1d3
+#define	MSR_FRED_CONFIG		0x1d4
 #define	MSR_DEBUGCTLMSR		0x1d9
 #define	MSR_LASTBRANCHFROMIP	0x1db
 #define	MSR_LASTBRANCHTOIP	0x1dc
@@ -925,6 +939,15 @@
 /* MSR IA32_PKG_THERM_INTERRUPT */
 #define	IA32_PKG_THERM_INTERRUPT_HFI_ENABLE		(0x1ULL << 25)
 
+/* MSR IA32_FRED_CONFIG */
+#define	IA32_FRED_CONFIG_CSL_MASK			0x00000003
+#define	IA32_FRED_CONFIG_DECR_SSP			0x00000008
+#define	IA32_FRED_CONFIG_REDZONESZ_MASK			0x000000e0
+#define	IA32_FRED_CONFIG_REDZONESZ_SHIFT		6
+#define	IA32_FRED_CONFIG_REDZONESZ_MULT			64
+#define	IA32_FRED_CONFIG_EXTINT_SLC_MASK		0x00000600
+#define	IA32_FRED_CONFIG_EXTINT_SLC_SHIFT		9
+
 /*
  * PAT modes.
  */
diff --git a/sys/x86/x86/identcpu.c b/sys/x86/x86/identcpu.c
index 7661c82f4394..7e0ccc72f7bb 100644
--- a/sys/x86/x86/identcpu.c
+++ b/sys/x86/x86/identcpu.c
@@ -1046,16 +1046,19 @@ printcpuinfo(void)
 				       "\040SSBD"
 				       );
 			}
-#define	STDEXT4_MASK	(CPUID_STDEXT4_LASS | CPUID_STDEXT4_LAM)
-			if ((cpu_stdext_feature4 & STDEXT4_MASK) != 0) {
+
+			if (cpu_stdext_feature4 != 0) {
 				printf("\n  Structured Extended Features4=0x%b",
-				    cpu_stdext_feature4 & STDEXT4_MASK,
+				    cpu_stdext_feature4,
 				       "\020"
 				       "\007LASS"
+				       "\022FRED"
+				       "\023LKGS"
+				       "\024WRMSRNS"
+				       "\025NMISRC"
 				       "\033LAM"
 				       );
 			}
-#undef STDEXT4_MASK
 
 			if ((cpu_feature2 & CPUID2_XSAVE) != 0) {
 				cpuid_count(0xd, 0x1, regs);


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69b49e56.2116f.1c52bb7c>