From: Juergen Gross <jgross@suse.com>
To: linux-kernel@vger.kernel.org, x86@kernel.org
Cc: Juergen Gross <jgross@suse.com>,
Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
"H. Peter Anvin" <hpa@zytor.com>
Subject: [PATCH v2 05/32] x86/mtrr: Stop using 32-bit MSR interfaces
Date: Fri, 3 Jul 2026 13:23:44 +0200 [thread overview]
Message-ID: <20260703112344.1762985-1-jgross@suse.com> (raw)
In-Reply-To: <20260629060526.3638272-6-jgross@suse.com>
The 32-bit MSR interfaces rdmsr(), wrmsr(), rdmsr_safe() and
wrmsr_safe() are planned to be removed. Use the related 64-bit variants
instead.
Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- use struct msr instead of anonymous union (Ingo Molnar)
---
arch/x86/kernel/cpu/mtrr/amd.c | 31 ++++++----
arch/x86/kernel/cpu/mtrr/centaur.c | 18 +++---
arch/x86/kernel/cpu/mtrr/cleanup.c | 18 +++---
arch/x86/kernel/cpu/mtrr/generic.c | 97 ++++++++++++++++--------------
arch/x86/kernel/cpu/mtrr/mtrr.c | 4 +-
5 files changed, 92 insertions(+), 76 deletions(-)
diff --git a/arch/x86/kernel/cpu/mtrr/amd.c b/arch/x86/kernel/cpu/mtrr/amd.c
index ef3e8e42b782..a73715d6f05c 100644
--- a/arch/x86/kernel/cpu/mtrr/amd.c
+++ b/arch/x86/kernel/cpu/mtrr/amd.c
@@ -10,20 +10,23 @@ static void
amd_get_mtrr(unsigned int reg, unsigned long *base,
unsigned long *size, mtrr_type *type)
{
- unsigned long low, high;
+ unsigned long val;
+ struct msr msr;
- rdmsr(MSR_K6_UWCCR, low, high);
+ rdmsrq(MSR_K6_UWCCR, msr.q);
/* Upper dword is region 1, lower is region 0 */
if (reg == 1)
- low = high;
+ val = msr.h;
+ else
+ val = msr.l;
/* The base masks off on the right alignment */
- *base = (low & 0xFFFE0000) >> PAGE_SHIFT;
+ *base = (val & 0xFFFE0000) >> PAGE_SHIFT;
*type = 0;
- if (low & 1)
+ if (val & 1)
*type = MTRR_TYPE_UNCACHABLE;
- if (low & 2)
+ if (val & 2)
*type = MTRR_TYPE_WRCOMB;
- if (!(low & 3)) {
+ if (!(val & 3)) {
*size = 0;
return;
}
@@ -42,8 +45,8 @@ amd_get_mtrr(unsigned int reg, unsigned long *base,
* +1 000 0000 0000 0100
* *128K ...
*/
- low = (~low) & 0x1FFFC;
- *size = (low + 4) << (15 - PAGE_SHIFT);
+ val = (~val) & 0x1FFFC;
+ *size = (val + 4) << (15 - PAGE_SHIFT);
}
/**
@@ -59,12 +62,16 @@ amd_get_mtrr(unsigned int reg, unsigned long *base,
static void
amd_set_mtrr(unsigned int reg, unsigned long base, unsigned long size, mtrr_type type)
{
+ struct msr msr;
u32 regs[2];
/*
* Low is MTRR0, High MTRR 1
*/
- rdmsr(MSR_K6_UWCCR, regs[0], regs[1]);
+ rdmsrq(MSR_K6_UWCCR, msr.q);
+ regs[0] = msr.l;
+ regs[1] = msr.h;
+
/*
* Blank to disable
*/
@@ -89,7 +96,9 @@ amd_set_mtrr(unsigned int reg, unsigned long base, unsigned long size, mtrr_type
* disable local interrupts, write back the cache, set the mtrr
*/
wbinvd();
- wrmsr(MSR_K6_UWCCR, regs[0], regs[1]);
+ msr.l = regs[0];
+ msr.h = regs[1];
+ wrmsrq(MSR_K6_UWCCR, msr.q);
}
static int
diff --git a/arch/x86/kernel/cpu/mtrr/centaur.c b/arch/x86/kernel/cpu/mtrr/centaur.c
index 6f6c3ae92943..e32cca1caf59 100644
--- a/arch/x86/kernel/cpu/mtrr/centaur.c
+++ b/arch/x86/kernel/cpu/mtrr/centaur.c
@@ -65,26 +65,26 @@ static void
centaur_set_mcr(unsigned int reg, unsigned long base,
unsigned long size, mtrr_type type)
{
- unsigned long low, high;
+ struct msr val;
if (size == 0) {
/* Disable */
- high = low = 0;
+ val.q = 0;
} else {
- high = base << PAGE_SHIFT;
+ val.h = base << PAGE_SHIFT;
if (centaur_mcr_type == 0) {
/* Only support write-combining... */
- low = -size << PAGE_SHIFT | 0x1f;
+ val.l = -size << PAGE_SHIFT | 0x1f;
} else {
if (type == MTRR_TYPE_UNCACHABLE)
- low = -size << PAGE_SHIFT | 0x02; /* NC */
+ val.l = -size << PAGE_SHIFT | 0x02; /* NC */
else
- low = -size << PAGE_SHIFT | 0x09; /* WWO, WC */
+ val.l = -size << PAGE_SHIFT | 0x09; /* WWO, WC */
}
}
- centaur_mcr[reg].high = high;
- centaur_mcr[reg].low = low;
- wrmsr(MSR_IDT_MCR0 + reg, low, high);
+ centaur_mcr[reg].high = val.h;
+ centaur_mcr[reg].low = val.l;
+ wrmsrq(MSR_IDT_MCR0 + reg, val.q);
}
static int
diff --git a/arch/x86/kernel/cpu/mtrr/cleanup.c b/arch/x86/kernel/cpu/mtrr/cleanup.c
index e3eee9ae4141..cd1a6dec4064 100644
--- a/arch/x86/kernel/cpu/mtrr/cleanup.c
+++ b/arch/x86/kernel/cpu/mtrr/cleanup.c
@@ -658,8 +658,8 @@ static int __init mtrr_search_optimal_index(void)
int __init mtrr_cleanup(void)
{
unsigned long x_remove_base, x_remove_size;
- unsigned long base, size, def, dummy;
- u64 chunk_size, gran_size;
+ u64 def, chunk_size, gran_size;
+ unsigned long base, size;
mtrr_type type;
int index_good;
int i;
@@ -670,7 +670,7 @@ int __init mtrr_cleanup(void)
if (!cpu_feature_enabled(X86_FEATURE_MTRR) || enable_mtrr_cleanup < 1)
return 0;
- rdmsr(MSR_MTRRdefType, def, dummy);
+ rdmsrq(MSR_MTRRdefType, def);
def &= 0xff;
if (def != MTRR_TYPE_UNCACHABLE)
return 0;
@@ -806,7 +806,7 @@ early_param("disable_mtrr_trim", disable_mtrr_trim_setup);
int __init amd_special_default_mtrr(void)
{
- u32 l, h;
+ u64 q;
if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD &&
boot_cpu_data.x86_vendor != X86_VENDOR_HYGON)
@@ -814,13 +814,13 @@ int __init amd_special_default_mtrr(void)
if (boot_cpu_data.x86 < 0xf)
return 0;
/* In case some hypervisor doesn't pass SYSCFG through: */
- if (rdmsr_safe(MSR_AMD64_SYSCFG, &l, &h) < 0)
+ if (rdmsrq_safe(MSR_AMD64_SYSCFG, &q) < 0)
return 0;
/*
* Memory between 4GB and top of mem is forced WB by this magic bit.
* Reserved before K8RevF, but should be zero there.
*/
- if ((l & (Tom2Enabled | Tom2ForceMemTypeWB)) ==
+ if ((q & (Tom2Enabled | Tom2ForceMemTypeWB)) ==
(Tom2Enabled | Tom2ForceMemTypeWB))
return 1;
return 0;
@@ -854,9 +854,9 @@ real_trim_memory(unsigned long start_pfn, unsigned long limit_pfn)
*/
int __init mtrr_trim_uncached_memory(unsigned long end_pfn)
{
- unsigned long i, base, size, highest_pfn = 0, def, dummy;
+ unsigned long i, base, size, highest_pfn = 0;
mtrr_type type;
- u64 total_trim_size;
+ u64 def, total_trim_size;
/* extra one for all 0 */
int num[MTRR_NUM_TYPES + 1];
@@ -870,7 +870,7 @@ int __init mtrr_trim_uncached_memory(unsigned long end_pfn)
if (!cpu_feature_enabled(X86_FEATURE_MTRR) || disable_mtrr_trim)
return 0;
- rdmsr(MSR_MTRRdefType, def, dummy);
+ rdmsrq(MSR_MTRRdefType, def);
def &= MTRR_DEF_TYPE_TYPE;
if (def != MTRR_TYPE_UNCACHABLE)
return 0;
diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c
index 3a8317060732..67cf69f24b00 100644
--- a/arch/x86/kernel/cpu/mtrr/generic.c
+++ b/arch/x86/kernel/cpu/mtrr/generic.c
@@ -103,7 +103,7 @@ u32 phys_hi_rsvd;
*/
static inline void k8_check_syscfg_dram_mod_en(void)
{
- u32 lo, hi;
+ struct msr val;
if (!((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) &&
(boot_cpu_data.x86 >= 0x0f)))
@@ -112,13 +112,13 @@ static inline void k8_check_syscfg_dram_mod_en(void)
if (cc_platform_has(CC_ATTR_HOST_SEV_SNP))
return;
- rdmsr(MSR_AMD64_SYSCFG, lo, hi);
- if (lo & K8_MTRRFIXRANGE_DRAM_MODIFY) {
+ rdmsrq(MSR_AMD64_SYSCFG, val.q);
+ if (val.l & K8_MTRRFIXRANGE_DRAM_MODIFY) {
pr_err(FW_WARN "MTRR: CPU %u: SYSCFG[MtrrFixDramModEn]"
" not cleared by BIOS, clearing this bit\n",
smp_processor_id());
- lo &= ~K8_MTRRFIXRANGE_DRAM_MODIFY;
- mtrr_wrmsr(MSR_AMD64_SYSCFG, lo, hi);
+ val.l &= ~K8_MTRRFIXRANGE_DRAM_MODIFY;
+ mtrr_wrmsr(MSR_AMD64_SYSCFG, val.l, val.h);
}
}
@@ -557,8 +557,14 @@ u8 mtrr_type_lookup(u64 start, u64 end, u8 *uniform)
static void
get_mtrr_var_range(unsigned int index, struct mtrr_var_range *vr)
{
- rdmsr(MTRRphysBase_MSR(index), vr->base_lo, vr->base_hi);
- rdmsr(MTRRphysMask_MSR(index), vr->mask_lo, vr->mask_hi);
+ struct msr val;
+
+ rdmsrq(MTRRphysBase_MSR(index), val.q);
+ vr->base_lo = val.l;
+ vr->base_hi = val.h;
+ rdmsrq(MTRRphysMask_MSR(index), val.q);
+ vr->mask_lo = val.l;
+ vr->mask_hi = val.h;
}
/* Fill the MSR pair relating to a var range */
@@ -577,17 +583,17 @@ void fill_mtrr_var_range(unsigned int index,
static void get_fixed_ranges(mtrr_type *frs)
{
- unsigned int *p = (unsigned int *)frs;
+ u64 *p = (u64 *)frs;
int i;
k8_check_syscfg_dram_mod_en();
- rdmsr(MSR_MTRRfix64K_00000, p[0], p[1]);
+ rdmsrq(MSR_MTRRfix64K_00000, p[0]);
for (i = 0; i < 2; i++)
- rdmsr(MSR_MTRRfix16K_80000 + i, p[2 + i * 2], p[3 + i * 2]);
+ rdmsrq(MSR_MTRRfix16K_80000 + i, p[1 + i]);
for (i = 0; i < 8; i++)
- rdmsr(MSR_MTRRfix4K_C0000 + i, p[6 + i * 2], p[7 + i * 2]);
+ rdmsrq(MSR_MTRRfix4K_C0000 + i, p[3 + i]);
}
void mtrr_save_fixed_ranges(void *info)
@@ -689,31 +695,26 @@ static void __init print_mtrr_state(void)
bool __init get_mtrr_state(void)
{
struct mtrr_var_range *vrs;
- unsigned lo, dummy;
unsigned int i;
+ u64 q;
vrs = mtrr_state.var_ranges;
- rdmsr(MSR_MTRRcap, lo, dummy);
- mtrr_state.have_fixed = lo & MTRR_CAP_FIX;
+ rdmsrq(MSR_MTRRcap, q);
+ mtrr_state.have_fixed = q & MTRR_CAP_FIX;
for (i = 0; i < num_var_ranges; i++)
get_mtrr_var_range(i, &vrs[i]);
if (mtrr_state.have_fixed)
get_fixed_ranges(mtrr_state.fixed_ranges);
- rdmsr(MSR_MTRRdefType, lo, dummy);
- mtrr_state.def_type = lo & MTRR_DEF_TYPE_TYPE;
- mtrr_state.enabled = (lo & MTRR_DEF_TYPE_ENABLE) >> MTRR_STATE_SHIFT;
+ rdmsrq(MSR_MTRRdefType, q);
+ mtrr_state.def_type = q & MTRR_DEF_TYPE_TYPE;
+ mtrr_state.enabled = (q & MTRR_DEF_TYPE_ENABLE) >> MTRR_STATE_SHIFT;
if (amd_special_default_mtrr()) {
- unsigned low, high;
-
/* TOP_MEM2 */
- rdmsr(MSR_K8_TOP_MEM2, low, high);
- mtrr_tom2 = high;
- mtrr_tom2 <<= 32;
- mtrr_tom2 |= low;
+ rdmsrq(MSR_K8_TOP_MEM2, mtrr_tom2);
mtrr_tom2 &= 0xffffff800000ULL;
}
@@ -750,7 +751,9 @@ void __init mtrr_state_warn(void)
*/
void mtrr_wrmsr(unsigned msr, unsigned a, unsigned b)
{
- if (wrmsr_safe(msr, a, b) < 0) {
+ struct msr val = { .l = a, .h = b };
+
+ if (wrmsrq_safe(msr, val.q) < 0) {
pr_err("MTRR: CPU %u: Writing MSR %x to %x:%x failed\n",
smp_processor_id(), msr, a, b);
}
@@ -765,11 +768,11 @@ void mtrr_wrmsr(unsigned msr, unsigned a, unsigned b)
*/
static void set_fixed_range(int msr, bool *changed, unsigned int *msrwords)
{
- unsigned lo, hi;
+ struct msr val;
- rdmsr(msr, lo, hi);
+ rdmsrq(msr, val.q);
- if (lo != msrwords[0] || hi != msrwords[1]) {
+ if (val.l != msrwords[0] || val.h != msrwords[1]) {
mtrr_wrmsr(msr, msrwords[0], msrwords[1]);
*changed = true;
}
@@ -806,9 +809,8 @@ generic_get_free_region(unsigned long base, unsigned long size, int replace_reg)
static void generic_get_mtrr(unsigned int reg, unsigned long *base,
unsigned long *size, mtrr_type *type)
{
- u32 mask_lo, mask_hi, base_lo, base_hi;
+ u64 tmp, mask, base_msr;
unsigned int hi;
- u64 tmp, mask;
/*
* get_mtrr doesn't need to update mtrr_state, also it could be called
@@ -816,9 +818,9 @@ static void generic_get_mtrr(unsigned int reg, unsigned long *base,
*/
get_cpu();
- rdmsr(MTRRphysMask_MSR(reg), mask_lo, mask_hi);
+ rdmsrq(MTRRphysMask_MSR(reg), mask);
- if (!(mask_lo & MTRR_PHYSMASK_V)) {
+ if (!(mask & MTRR_PHYSMASK_V)) {
/* Invalid (i.e. free) range */
*base = 0;
*size = 0;
@@ -826,10 +828,10 @@ static void generic_get_mtrr(unsigned int reg, unsigned long *base,
goto out_put_cpu;
}
- rdmsr(MTRRphysBase_MSR(reg), base_lo, base_hi);
+ rdmsrq(MTRRphysBase_MSR(reg), base_msr);
/* Work out the shifted address mask: */
- tmp = (u64)mask_hi << 32 | (mask_lo & PAGE_MASK);
+ tmp = mask & PAGE_MASK;
mask = (u64)phys_hi_rsvd << 32 | tmp;
/* Expand tmp with high bits to all 1s: */
@@ -849,8 +851,8 @@ static void generic_get_mtrr(unsigned int reg, unsigned long *base,
* contiguous range:
*/
*size = -mask >> PAGE_SHIFT;
- *base = (u64)base_hi << (32 - PAGE_SHIFT) | base_lo >> PAGE_SHIFT;
- *type = base_lo & MTRR_PHYSBASE_TYPE;
+ *base = base_msr >> PAGE_SHIFT;
+ *type = base_msr & MTRR_PHYSBASE_TYPE;
out_put_cpu:
put_cpu();
@@ -884,21 +886,21 @@ static int set_fixed_ranges(mtrr_type *frs)
*/
static bool set_mtrr_var_ranges(unsigned int index, struct mtrr_var_range *vr)
{
- unsigned int lo, hi;
bool changed = false;
+ struct msr val;
- rdmsr(MTRRphysBase_MSR(index), lo, hi);
- if ((vr->base_lo & ~MTRR_PHYSBASE_RSVD) != (lo & ~MTRR_PHYSBASE_RSVD)
- || (vr->base_hi & ~phys_hi_rsvd) != (hi & ~phys_hi_rsvd)) {
+ rdmsrq(MTRRphysBase_MSR(index), val.q);
+ if ((vr->base_lo & ~MTRR_PHYSBASE_RSVD) != (val.l & ~MTRR_PHYSBASE_RSVD)
+ || (vr->base_hi & ~phys_hi_rsvd) != (val.h & ~phys_hi_rsvd)) {
mtrr_wrmsr(MTRRphysBase_MSR(index), vr->base_lo, vr->base_hi);
changed = true;
}
- rdmsr(MTRRphysMask_MSR(index), lo, hi);
+ rdmsrq(MTRRphysMask_MSR(index), val.q);
- if ((vr->mask_lo & ~MTRR_PHYSMASK_RSVD) != (lo & ~MTRR_PHYSMASK_RSVD)
- || (vr->mask_hi & ~phys_hi_rsvd) != (hi & ~phys_hi_rsvd)) {
+ if ((vr->mask_lo & ~MTRR_PHYSMASK_RSVD) != (val.l & ~MTRR_PHYSMASK_RSVD)
+ || (vr->mask_hi & ~phys_hi_rsvd) != (val.h & ~phys_hi_rsvd)) {
mtrr_wrmsr(MTRRphysMask_MSR(index), vr->mask_lo, vr->mask_hi);
changed = true;
}
@@ -947,8 +949,12 @@ static unsigned long set_mtrr_state(void)
void mtrr_disable(void)
{
+ struct msr val;
+
/* Save MTRR state */
- rdmsr(MSR_MTRRdefType, deftype_lo, deftype_hi);
+ rdmsrq(MSR_MTRRdefType, val.q);
+ deftype_lo = val.l;
+ deftype_hi = val.h;
/* Disable MTRRs, and set the default type to uncached */
mtrr_wrmsr(MSR_MTRRdefType, deftype_lo & MTRR_DEF_TYPE_DISABLE, deftype_hi);
@@ -1057,8 +1063,9 @@ int generic_validate_add_page(unsigned long base, unsigned long size,
static int generic_have_wrcomb(void)
{
- unsigned long config, dummy;
- rdmsr(MSR_MTRRcap, config, dummy);
+ u64 config;
+
+ rdmsrq(MSR_MTRRcap, config);
return config & MTRR_CAP_WC;
}
diff --git a/arch/x86/kernel/cpu/mtrr/mtrr.c b/arch/x86/kernel/cpu/mtrr/mtrr.c
index 4b3d492afe17..468c53b20acf 100644
--- a/arch/x86/kernel/cpu/mtrr/mtrr.c
+++ b/arch/x86/kernel/cpu/mtrr/mtrr.c
@@ -547,7 +547,7 @@ void __init mtrr_bp_init(void)
{
bool generic_mtrrs = cpu_feature_enabled(X86_FEATURE_MTRR);
const char *why = "(not available)";
- unsigned long config, dummy;
+ unsigned long config;
phys_hi_rsvd = GENMASK(31, boot_cpu_data.x86_phys_bits - 32);
@@ -571,7 +571,7 @@ void __init mtrr_bp_init(void)
if (mtrr_enabled()) {
/* Get the number of variable MTRR ranges. */
if (mtrr_if == &generic_mtrr_ops)
- rdmsr(MSR_MTRRcap, config, dummy);
+ rdmsrq(MSR_MTRRcap, config);
else
config = mtrr_if->var_regs;
num_var_ranges = config & MTRR_CAP_VCNT;
--
2.54.0
next prev parent reply other threads:[~2026-07-03 11:23 UTC|newest]
Thread overview: 114+ 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 ` Juergen Gross [this message]
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-07-19 9:44 ` [tip: x86/msr] x86/mce: Work around " tip-bot2 for Juergen Gross
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: x86/msr] " tip-bot2 for Juergen Gross
2026-07-03 21:48 ` 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=20260703112344.1762985-1-jgross@suse.com \
--to=jgross@suse.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@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
all inboxes | Powered by JetHome®