mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "tip-bot2 for Juergen Gross" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: Juergen Gross <jgross@suse.com>, Ingo Molnar <mingo@kernel.org>,
	x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [tip: x86/msr] x86/cpu: Stop using 32-bit MSR interfaces
Date: Thu, 02 Jul 2026 10:15:54 -0000	[thread overview]
Message-ID: <178298735495.3843924.289690164073708304.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20260629060526.3638272-20-jgross@suse.com>

The following commit has been merged into the x86/msr branch of tip:

Commit-ID:     2e9e6edbad45fe9078dfb2d35d1213c9969de49d
Gitweb:        https://git.kernel.org/tip/2e9e6edbad45fe9078dfb2d35d1213c9969de49d
Author:        Juergen Gross <jgross@suse.com>
AuthorDate:    Mon, 29 Jun 2026 08:05:10 +02:00
Committer:     Ingo Molnar <mingo@kernel.org>
CommitterDate: Thu, 02 Jul 2026 11:54:52 +02:00

x86/cpu: Stop using 32-bit MSR interfaces

The 32-bit MSR interfaces rdmsr() and wrmsr() are planned to be
removed. Use the related 64-bit variants instead.

Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://patch.msgid.link/20260629060526.3638272-20-jgross@suse.com
---
 arch/x86/kernel/cpu/centaur.c   | 35 ++++++++++++++++----------------
 arch/x86/kernel/cpu/common.c    | 12 ++++++-----
 arch/x86/kernel/cpu/intel.c     |  8 +++----
 arch/x86/kernel/cpu/transmeta.c |  9 ++++----
 arch/x86/kernel/cpu/zhaoxin.c   | 12 ++++-------
 5 files changed, 39 insertions(+), 37 deletions(-)

diff --git a/arch/x86/kernel/cpu/centaur.c b/arch/x86/kernel/cpu/centaur.c
index 681d2da..513fa1f 100644
--- a/arch/x86/kernel/cpu/centaur.c
+++ b/arch/x86/kernel/cpu/centaur.c
@@ -22,7 +22,7 @@
 
 static void init_c3(struct cpuinfo_x86 *c)
 {
-	u32  lo, hi;
+	u64 msr;
 
 	/* Test for Centaur Extended Feature Flags presence */
 	if (cpuid_eax(0xC0000000) >= 0xC0000001) {
@@ -30,17 +30,17 @@ static void init_c3(struct cpuinfo_x86 *c)
 
 		/* enable ACE unit, if present and disabled */
 		if ((tmp & (ACE_PRESENT | ACE_ENABLED)) == ACE_PRESENT) {
-			rdmsr(MSR_VIA_FCR, lo, hi);
-			lo |= ACE_FCR;		/* enable ACE unit */
-			wrmsr(MSR_VIA_FCR, lo, hi);
+			rdmsrq(MSR_VIA_FCR, msr);
+			/* enable ACE unit */
+			wrmsrq(MSR_VIA_FCR, msr | ACE_FCR);
 			pr_info("CPU: Enabled ACE h/w crypto\n");
 		}
 
 		/* enable RNG unit, if present and disabled */
 		if ((tmp & (RNG_PRESENT | RNG_ENABLED)) == RNG_PRESENT) {
-			rdmsr(MSR_VIA_RNG, lo, hi);
-			lo |= RNG_ENABLE;	/* enable RNG unit */
-			wrmsr(MSR_VIA_RNG, lo, hi);
+			rdmsrq(MSR_VIA_RNG, msr);
+			/* enable RNG unit */
+			wrmsrq(MSR_VIA_RNG, msr | RNG_ENABLE);
 			pr_info("CPU: Enabled h/w RNG\n");
 		}
 
@@ -52,9 +52,8 @@ static void init_c3(struct cpuinfo_x86 *c)
 #ifdef CONFIG_X86_32
 	/* Cyrix III family needs CX8 & PGE explicitly enabled. */
 	if (c->x86_model >= 6 && c->x86_model <= 13) {
-		rdmsr(MSR_VIA_FCR, lo, hi);
-		lo |= (1<<1 | 1<<7);
-		wrmsr(MSR_VIA_FCR, lo, hi);
+		rdmsrq(MSR_VIA_FCR, msr);
+		wrmsrq(MSR_VIA_FCR, msr | (1 << 1 | 1 << 7));
 		set_cpu_cap(c, X86_FEATURE_CX8);
 	}
 
@@ -115,8 +114,9 @@ static void init_centaur(struct cpuinfo_x86 *c)
 	char *name;
 	u32  fcr_set = 0;
 	u32  fcr_clr = 0;
-	u32  lo, hi, newlo;
+	u32  newlo;
 	u32  aa, bb, cc, dd;
+	struct msr val;
 #endif
 	early_init_centaur(c);
 	init_intel_cacheinfo(c);
@@ -169,15 +169,16 @@ static void init_centaur(struct cpuinfo_x86 *c)
 			name = "??";
 		}
 
-		rdmsr(MSR_IDT_FCR1, lo, hi);
-		newlo = (lo|fcr_set) & (~fcr_clr);
+		rdmsrq(MSR_IDT_FCR1, val.q);
+		newlo = (val.l | fcr_set) & (~fcr_clr);
 
-		if (newlo != lo) {
+		if (newlo != val.l) {
 			pr_info("Centaur FCR was 0x%X now 0x%X\n",
-				lo, newlo);
-			wrmsr(MSR_IDT_FCR1, newlo, hi);
+				val.l, newlo);
+			val.l = newlo;
+			wrmsrq(MSR_IDT_FCR1, val.q);
 		} else {
-			pr_info("Centaur FCR is 0x%X\n", lo);
+			pr_info("Centaur FCR is 0x%X\n", val.l);
 		}
 		/* Emulate MTRRs using Centaur's MCR. */
 		set_cpu_cap(c, X86_FEATURE_CENTAUR_MCR);
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index a3df21d..cbef2c6 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -339,16 +339,16 @@ bool cpuid_feature(void)
 
 static void squash_the_stupid_serial_number(struct cpuinfo_x86 *c)
 {
-	unsigned long lo, hi;
+	struct msr val;
 
 	if (!cpu_has(c, X86_FEATURE_PN) || !disable_x86_serial_nr)
 		return;
 
 	/* Disable processor serial number: */
 
-	rdmsr(MSR_IA32_BBL_CR_CTL, lo, hi);
-	lo |= 0x200000;
-	wrmsr(MSR_IA32_BBL_CR_CTL, lo, hi);
+	rdmsrq(MSR_IA32_BBL_CR_CTL, val.q);
+	val.l |= 0x200000;
+	wrmsrq(MSR_IA32_BBL_CR_CTL, val.q);
 
 	pr_notice("CPU serial number disabled.\n");
 	clear_cpu_cap(c, X86_FEATURE_PN);
@@ -2299,8 +2299,10 @@ static inline void idt_syscall_init(void)
 /* May not be marked __init: used by software suspend */
 void syscall_init(void)
 {
+	struct msr val = { .h = (__USER32_CS << 16) | __KERNEL_CS };
+
 	/* The default user and kernel segments */
-	wrmsr(MSR_STAR, 0, (__USER32_CS << 16) | __KERNEL_CS);
+	wrmsrq(MSR_STAR, val.q);
 
 	/*
 	 * Except the IA32_STAR MSR, there is NO need to setup SYSCALL and
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index abb3984..076bdd0 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -542,12 +542,12 @@ static void init_intel(struct cpuinfo_x86 *c)
 		set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC);
 
 	if (boot_cpu_has(X86_FEATURE_DS)) {
-		unsigned int l1, l2;
+		u64 l;
 
-		rdmsr(MSR_IA32_MISC_ENABLE, l1, l2);
-		if (!(l1 & MSR_IA32_MISC_ENABLE_BTS_UNAVAIL))
+		rdmsrq(MSR_IA32_MISC_ENABLE, l);
+		if (!(l & MSR_IA32_MISC_ENABLE_BTS_UNAVAIL))
 			set_cpu_cap(c, X86_FEATURE_BTS);
-		if (!(l1 & MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL))
+		if (!(l & MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL))
 			set_cpu_cap(c, X86_FEATURE_PEBS);
 	}
 
diff --git a/arch/x86/kernel/cpu/transmeta.c b/arch/x86/kernel/cpu/transmeta.c
index 1fdcd69..c670fbb 100644
--- a/arch/x86/kernel/cpu/transmeta.c
+++ b/arch/x86/kernel/cpu/transmeta.c
@@ -24,7 +24,8 @@ static void early_init_transmeta(struct cpuinfo_x86 *c)
 
 static void init_transmeta(struct cpuinfo_x86 *c)
 {
-	unsigned int cap_mask, uk, max, dummy;
+	u64 msr;
+	unsigned int max, dummy;
 	unsigned int cms_rev1, cms_rev2;
 	unsigned int cpu_rev, cpu_freq = 0, cpu_flags, new_cpu_rev;
 	char cpu_info[65];
@@ -86,10 +87,10 @@ static void init_transmeta(struct cpuinfo_x86 *c)
 	}
 
 	/* Unhide possibly hidden capability flags */
-	rdmsr(0x80860004, cap_mask, uk);
-	wrmsr(0x80860004, ~0, uk);
+	rdmsrq(0x80860004, msr);
+	wrmsrq(0x80860004, msr | ~0U);
 	c->x86_capability[CPUID_1_EDX] = cpuid_edx(0x00000001);
-	wrmsr(0x80860004, cap_mask, uk);
+	wrmsrq(0x80860004, msr);
 
 	/* All Transmeta CPUs have a constant TSC */
 	set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
diff --git a/arch/x86/kernel/cpu/zhaoxin.c b/arch/x86/kernel/cpu/zhaoxin.c
index 761aef5..fe504fd 100644
--- a/arch/x86/kernel/cpu/zhaoxin.c
+++ b/arch/x86/kernel/cpu/zhaoxin.c
@@ -21,7 +21,7 @@
 
 static void init_zhaoxin_cap(struct cpuinfo_x86 *c)
 {
-	u32  lo, hi;
+	u64 msr;
 
 	/* Test for Extended Feature Flags presence */
 	if (cpuid_eax(0xC0000000) >= 0xC0000001) {
@@ -29,19 +29,17 @@ static void init_zhaoxin_cap(struct cpuinfo_x86 *c)
 
 		/* Enable ACE unit, if present and disabled */
 		if ((tmp & (ACE_PRESENT | ACE_ENABLED)) == ACE_PRESENT) {
-			rdmsr(MSR_ZHAOXIN_FCR57, lo, hi);
+			rdmsrq(MSR_ZHAOXIN_FCR57, msr);
 			/* Enable ACE unit */
-			lo |= ACE_FCR;
-			wrmsr(MSR_ZHAOXIN_FCR57, lo, hi);
+			wrmsrq(MSR_ZHAOXIN_FCR57, msr | ACE_FCR);
 			pr_info("CPU: Enabled ACE h/w crypto\n");
 		}
 
 		/* Enable RNG unit, if present and disabled */
 		if ((tmp & (RNG_PRESENT | RNG_ENABLED)) == RNG_PRESENT) {
-			rdmsr(MSR_ZHAOXIN_FCR57, lo, hi);
+			rdmsrq(MSR_ZHAOXIN_FCR57, msr);
 			/* Enable RNG unit */
-			lo |= RNG_ENABLE;
-			wrmsr(MSR_ZHAOXIN_FCR57, lo, hi);
+			wrmsrq(MSR_ZHAOXIN_FCR57, msr | RNG_ENABLE);
 			pr_info("CPU: Enabled h/w RNG\n");
 		}
 

  reply	other threads:[~2026-07-02 10:15 UTC|newest]

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-29  6:04 [PATCH 00/32] x86/msr: Drop " Juergen Gross
2026-06-29  6:04 ` [PATCH 01/32] thermal/intel: Stop using " Juergen Gross
2026-07-02  9:31   ` Ingo Molnar
2026-07-02 11:18     ` Jürgen Groß
2026-07-03 11:22   ` [PATCH v2 " Juergen Gross
2026-07-06 12:47     ` Rafael J. Wysocki (Intel)
2026-07-17  9:26     ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:04 ` [PATCH 02/32] powercap: " Juergen Gross
2026-06-29 11:25   ` Ingo Molnar
2026-06-29 11:33     ` Jürgen Groß
2026-06-29 12:31       ` Ingo Molnar
2026-06-29 12:52         ` Jürgen Groß
2026-07-06 12:48   ` Rafael J. Wysocki (Intel)
2026-07-17  9:26   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:04 ` [PATCH 03/32] edac: " Juergen Gross
2026-06-30  1:50   ` Zhuo, Qiuxu
2026-07-02 10:15   ` [tip: x86/msr] EDAC: " tip-bot2 for Juergen Gross
2026-06-29  6:04 ` [PATCH 04/32] acpi: " Juergen Gross
2026-06-30 12:30   ` Rafael J. Wysocki (Intel)
2026-06-30 12:42     ` Jürgen Groß
2026-07-02  9:17     ` Ingo Molnar
2026-07-02 11:33       ` Rafael J. Wysocki (Intel)
2026-07-04  8:26         ` Ingo Molnar
2026-07-06 12:50           ` Rafael J. Wysocki (Intel)
2026-07-17  9:26   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:04 ` [PATCH 05/32] x86/mtrr: " Juergen Gross
2026-06-29 11:33   ` Ingo Molnar
2026-06-29 11:41     ` Jürgen Groß
2026-06-29 12:27       ` Ingo Molnar
2026-06-29 13:04         ` Jürgen Groß
2026-07-02  9:15           ` Ingo Molnar
2026-07-03 11:23   ` [PATCH v2 " Juergen Gross
2026-07-17  9:42     ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:04 ` [PATCH 06/32] x86/msr: Stop using 32-bit MSR interfaces in lib/msr-smp.c Juergen Gross
2026-07-02 10:16   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:04 ` [PATCH 07/32] x86/msr: Remove wrmsr_safe() Juergen Gross
2026-06-29  6:04 ` [PATCH 08/32] x86/mce: Stop using 32-bit MSR interfaces Juergen Gross
2026-07-02 10:16   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-07-03 10:55   ` [PATCH] x86/mce: Fix build warning after MSR-interface switch Juergen Gross
2026-07-17  9:28     ` Ingo Molnar
2026-07-17 10:18       ` Jürgen Groß
2026-07-17 10:25         ` Ingo Molnar
2026-07-17 11:03           ` Jürgen Groß
2026-06-29  6:05 ` [PATCH 09/32] KVM/x86: Stop using 32-bit MSR interfaces Juergen Gross
2026-07-17  9:42   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:05 ` [PATCH 10/32] x86/hygon: " Juergen Gross
2026-07-02 10:16   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:05 ` [PATCH 11/32] x86/pci: " Juergen Gross
2026-07-02 10:16   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:05 ` [PATCH 12/32] x86/amd: " Juergen Gross
2026-07-02 10:16   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:05 ` [PATCH 13/32] x86/featctl: " Juergen Gross
2026-07-02  9:39   ` Ingo Molnar
2026-07-02 11:19     ` Jürgen Groß
2026-07-03 11:24   ` [PATCH v2 " Juergen Gross
2026-07-17  9:42     ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:05 ` [PATCH 14/32] x86/tsc: " Juergen Gross
2026-07-02 10:15   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:05 ` [PATCH 15/32] x86/msr: Remove rdmsr_safe() Juergen Gross
2026-06-29  6:05 ` [PATCH 16/32] cpufreq: Stop using 32-bit MSR interfaces Juergen Gross
2026-06-29 14:55   ` Zhongqiu Han
2026-06-30  6:38     ` Juergen Gross
2026-07-03 11:24   ` [PATCH v2 " Juergen Gross
2026-07-05  4:51     ` Zhongqiu Han
2026-07-17  9:42     ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:05 ` [PATCH 17/32] x86/resctrl: " Juergen Gross
2026-07-01 16:49   ` Reinette Chatre
2026-07-02 10:15   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:05 ` [PATCH 18/32] x86/apic: " Juergen Gross
2026-07-02 10:15   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:05 ` [PATCH 19/32] x86/cpu: " Juergen Gross
2026-07-02 10:15   ` tip-bot2 for Juergen Gross [this message]
2026-07-03 21:48     ` [tip: x86/msr] " Borislav Petkov
2026-07-06  8:30       ` Juergen Gross
2026-07-06 14:26         ` Borislav Petkov
2026-07-06 14:39           ` Jürgen Groß
2026-07-17  9:36       ` Ingo Molnar
2026-07-17 10:18         ` Jürgen Groß
2026-07-17 10:26           ` Ingo Molnar
2026-06-29  6:05 ` [PATCH 20/32] drivers/ata: " Juergen Gross
2026-07-03 11:25   ` [PATCH v2 " Juergen Gross
2026-06-29  6:05 ` [PATCH 21/32] agp/nvidia: " Juergen Gross
2026-06-29  6:05 ` [PATCH 22/32] fbdev/geode: " Juergen Gross
2026-06-29  6:05 ` [PATCH 23/32] hw_random/via-rng: " Juergen Gross
2026-06-29  6:05 ` [PATCH 24/32] drivers/gpio: " Juergen Gross
2026-06-29 10:33   ` Bartosz Golaszewski
2026-07-01  8:13   ` Linus Walleij
2026-07-01  8:32     ` Juergen Gross
2026-06-29  6:05 ` [PATCH 25/32] drivers/misc: " Juergen Gross
2026-06-29  6:05 ` [PATCH 26/32] x86/msr: Remove wrmsr() Juergen Gross
2026-06-29  6:05 ` [PATCH 27/32] x86/hyperv: Stop using 32-bit MSR interfaces Juergen Gross
2026-07-03  9:39   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:05 ` [PATCH 28/32] x86/olpc: " Juergen Gross
2026-07-03  9:39   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:05 ` [PATCH 29/32] hwmon: " Juergen Gross
2026-06-29 15:05   ` Guenter Roeck
2026-07-03  9:39   ` [tip: x86/msr] " tip-bot2 for Juergen Gross
2026-06-29  6:05 ` [PATCH 30/32] x86/msr: Remove rdmsr() Juergen Gross
2026-06-29  6:05 ` [PATCH 31/32] treewide: convert rdmsrq() from a macro to an inline function Juergen Gross
2026-06-29  6:05 ` [PATCH 32/32] x86/msr: Simplify some rdmsrq() use cases Juergen Gross
2026-06-29  6:52 ` [PATCH 00/32] x86/msr: Drop 32-bit MSR interfaces Arnd Bergmann
2026-06-29  7:01   ` Jürgen Groß
2026-06-29  8:06     ` Arnd Bergmann
2026-06-29  8:15       ` Jürgen Groß
2026-06-29  8:30         ` Jan Beulich
2026-06-29  8:38         ` Arnd Bergmann
2026-06-30 20:06           ` H. Peter Anvin
2026-06-29 11:19       ` Ingo Molnar
2026-06-30 18:59         ` Sean Christopherson
2026-07-01  8:33           ` Jürgen Groß
2026-07-02 10:07           ` Ingo Molnar
2026-07-02 11:03             ` Juergen Gross
2026-07-17  9:38               ` Ingo Molnar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178298735495.3843924.289690164073708304.tip-bot2@tip-bot2 \
    --to=tip-bot2@linutronix.de \
    --cc=jgross@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox