Ingo,
On 11.09.26 09:45, Juergen Gross wrote:
> For accessing the MSR registers on the local CPU, there are 2 types of
> interfaces: the "modern" 64-bit ones (rdmsrq() etc.) and the 32-bit
> ones (rdmsr() etc.) which are using the upper and lower 32-bit halves
> of the 64-bit wide MSR register values.
>
> The 32-bit interfaces are not optimal for 3 reasons:
>
> - They are based on primitives using 64-bit sized values anyway.
>
> - Modern x86 CPUs have added support for MSR access instructions using
> an immediate value instead of a register for addressing the MSR,
> while the value is in a 64-bit register.
>
> - rdmsr() is a macro storing the upper and lower 32-bit halves in
> variables specified as macro parameters. This is obscuring variable
> assignment through a macro. Additionally rdmsrq() is mimicking this
> pattern by being a macro, too, with the target variable specified as
> a parameter as well.
>
> For those reasons drop the 32-bit interfaces for accessing the x86 MSR
> registers completely and only use the 64-bit variants.
>
> This allows to switch all "high-level" MSR access macros to inline
> functions in the end.
>
> This series will be used as the base for further reorganisation of the
> MSR access functions, especially for completely inlining the MSR
> access instructions even with paravirtualization being active.
>
> Based on kernel 7.3 as of 2026-09-11.
>
> Changes in V2:
> - dropped already applied patches
> - added patch 1
> - rebased
>
> Changes in V3:
> - small fixes in patches 4 and 13
> - rebased
>
> Juergen Gross (13):
> x86/cpu: Fix coding style violation
> x86/msr: Remove wrmsr_safe()
> x86/msr: Remove rdmsr_safe()
> drivers/ata: Stop using 32-bit MSR interfaces
> agp/nvidia: Stop using 32-bit MSR interfaces
> fbdev/geode: Stop using 32-bit MSR interfaces
> hw_random/via-rng: Stop using 32-bit MSR interfaces
> drivers/gpio: Stop using 32-bit MSR interfaces
> drivers/misc: Stop using 32-bit MSR interfaces
> x86/msr: Remove wrmsr()
> x86/msr: Remove rdmsr()
> treewide: convert rdmsrq() from a macro to an inline function
> x86/msr: Simplify some rdmsrq() use cases
>
> arch/x86/coco/sev/core.c | 2 +-
> arch/x86/events/amd/brs.c | 4 +-
> arch/x86/events/amd/core.c | 8 +--
> arch/x86/events/amd/ibs.c | 18 +++----
> arch/x86/events/amd/lbr.c | 16 ++----
> arch/x86/events/amd/power.c | 8 +--
> arch/x86/events/amd/uncore.c | 4 +-
> arch/x86/events/core.c | 20 ++++----
> arch/x86/events/intel/core.c | 15 ++----
> arch/x86/events/intel/cstate.c | 5 +-
> arch/x86/events/intel/ds.c | 2 +-
> arch/x86/events/intel/knc.c | 10 ++--
> arch/x86/events/intel/lbr.c | 25 +++-------
> arch/x86/events/intel/p4.c | 6 +--
> arch/x86/events/intel/p6.c | 4 +-
> arch/x86/events/intel/pt.c | 12 ++---
> arch/x86/events/intel/uncore.c | 6 +--
> arch/x86/events/intel/uncore_nhmex.c | 4 +-
> arch/x86/events/intel/uncore_snb.c | 2 +-
> arch/x86/events/intel/uncore_snbep.c | 6 +--
> arch/x86/events/msr.c | 2 +-
> arch/x86/events/perf_event.h | 6 +--
> arch/x86/events/rapl.c | 6 +--
> arch/x86/events/zhaoxin/core.c | 10 ++--
> arch/x86/hyperv/hv_apic.c | 9 ++--
> arch/x86/hyperv/hv_init.c | 26 +++++-----
> arch/x86/hyperv/hv_spinlock.c | 2 +-
> arch/x86/include/asm/apic.h | 7 +--
> arch/x86/include/asm/debugreg.h | 6 +--
> arch/x86/include/asm/fsgsbase.h | 2 +-
> arch/x86/include/asm/kvm_host.h | 10 ----
> arch/x86/include/asm/msr.h | 39 ++-------------
> arch/x86/include/asm/paravirt.h | 26 +---------
> arch/x86/kernel/apic/apic.c | 14 +++---
> arch/x86/kernel/apic/apic_numachip.c | 6 +--
> arch/x86/kernel/cet.c | 2 +-
> arch/x86/kernel/cpu/amd.c | 14 +++---
> arch/x86/kernel/cpu/aperfmperf.c | 8 +--
> arch/x86/kernel/cpu/bugs.c | 12 ++---
> arch/x86/kernel/cpu/bus_lock.c | 8 +--
> arch/x86/kernel/cpu/centaur.c | 8 +--
> arch/x86/kernel/cpu/common.c | 12 ++---
> arch/x86/kernel/cpu/feat_ctl.c | 4 +-
> arch/x86/kernel/cpu/hygon.c | 4 +-
> arch/x86/kernel/cpu/intel.c | 6 +--
> arch/x86/kernel/cpu/intel_epb.c | 4 +-
> arch/x86/kernel/cpu/mce/amd.c | 4 +-
> arch/x86/kernel/cpu/mce/core.c | 8 +--
> arch/x86/kernel/cpu/mce/inject.c | 2 +-
> arch/x86/kernel/cpu/mce/intel.c | 18 +++----
> arch/x86/kernel/cpu/mce/p5.c | 8 +--
> arch/x86/kernel/cpu/mce/winchip.c | 2 +-
> arch/x86/kernel/cpu/microcode/intel.c | 2 +-
> arch/x86/kernel/cpu/mshyperv.c | 6 +--
> arch/x86/kernel/cpu/mtrr/amd.c | 4 +-
> arch/x86/kernel/cpu/mtrr/cleanup.c | 4 +-
> arch/x86/kernel/cpu/mtrr/generic.c | 32 ++++++------
> arch/x86/kernel/cpu/mtrr/mtrr.c | 2 +-
> arch/x86/kernel/cpu/resctrl/core.c | 2 +-
> arch/x86/kernel/cpu/resctrl/monitor.c | 4 +-
> arch/x86/kernel/cpu/resctrl/pseudo_lock.c | 4 +-
> arch/x86/kernel/cpu/resctrl/rdtgroup.c | 2 +-
> arch/x86/kernel/cpu/topology.c | 2 +-
> arch/x86/kernel/cpu/topology_amd.c | 4 +-
> arch/x86/kernel/cpu/transmeta.c | 8 +--
> arch/x86/kernel/cpu/tsx.c | 10 ++--
> arch/x86/kernel/cpu/umwait.c | 2 +-
> arch/x86/kernel/cpu/zhaoxin.c | 4 +-
> arch/x86/kernel/fpu/core.c | 2 +-
> arch/x86/kernel/hpet.c | 2 +-
> arch/x86/kernel/kvm.c | 2 +-
> arch/x86/kernel/mmconf-fam10h_64.c | 6 +--
> arch/x86/kernel/process.c | 4 +-
> arch/x86/kernel/process_64.c | 14 +++---
> arch/x86/kernel/shstk.c | 8 +--
> arch/x86/kernel/traps.c | 4 +-
> arch/x86/kernel/tsc.c | 2 +-
> arch/x86/kernel/tsc_msr.c | 6 +--
> arch/x86/kernel/tsc_sync.c | 6 +--
> arch/x86/kvm/msrs.c | 2 +-
> arch/x86/kvm/svm/pmu.c | 4 +-
> arch/x86/kvm/svm/svm.c | 4 +-
> arch/x86/kvm/vmx/nested.c | 4 +-
> arch/x86/kvm/vmx/pmu_intel.c | 8 +--
> arch/x86/kvm/vmx/sgx.c | 6 +--
> arch/x86/kvm/vmx/tdx.c | 2 +-
> arch/x86/kvm/vmx/vmx.c | 42 ++++++++--------
> arch/x86/kvm/x86.c | 6 +--
> arch/x86/lib/insn-eval.c | 6 +--
> arch/x86/lib/msr-smp.c | 2 +-
> arch/x86/mm/pat/memtype.c | 2 +-
> arch/x86/pci/amd_bus.c | 8 +--
> arch/x86/platform/olpc/olpc-xo1-rtc.c | 6 +--
> arch/x86/platform/olpc/olpc-xo1-sci.c | 2 +-
> arch/x86/power/cpu.c | 10 ++--
> arch/x86/realmode/init.c | 2 +-
> arch/x86/virt/hw.c | 8 +--
> arch/x86/virt/svm/sev.c | 18 +++----
> arch/x86/virt/vmx/tdx/tdx.c | 2 +-
> arch/x86/xen/suspend.c | 2 +-
> drivers/acpi/processor_perflib.c | 2 +-
> drivers/ata/pata_cs5535.c | 24 ++++-----
> drivers/ata/pata_cs5536.c | 17 +++----
> drivers/char/agp/nvidia-agp.c | 32 ++++++------
> drivers/char/hw_random/via-rng.c | 29 +++++------
> drivers/cpufreq/acpi-cpufreq.c | 8 +--
> drivers/cpufreq/amd-pstate.c | 4 +-
> drivers/cpufreq/e_powersaver.c | 20 ++++----
> drivers/cpufreq/intel_pstate.c | 28 +++++------
> drivers/cpufreq/longhaul.c | 12 ++---
> drivers/cpufreq/longrun.c | 16 +++---
> drivers/cpufreq/powernow-k7.c | 10 ++--
> drivers/cpufreq/powernow-k8.c | 8 +--
> drivers/cpufreq/speedstep-centrino.c | 4 +-
> drivers/cpufreq/speedstep-lib.c | 14 +++---
> drivers/edac/amd64_edac.c | 6 +--
> drivers/gpio/gpio-cs5535.c | 10 ++--
> drivers/hv/mshv_vtl_main.c | 2 +-
> drivers/hwmon/hwmon-vid.c | 4 +-
> drivers/idle/intel_idle.c | 26 +++++-----
> drivers/misc/cs5535-mfgpt.c | 33 ++++++------
> drivers/mtd/nand/raw/cs553x_nand.c | 6 +--
> drivers/platform/x86/intel/ifs/load.c | 10 ++--
> drivers/platform/x86/intel/ifs/runtest.c | 8 +--
> drivers/platform/x86/intel/pmc/cnp.c | 2 +-
> .../intel/speed_select_if/isst_if_mbox_msr.c | 6 +--
> .../intel/speed_select_if/isst_tpmi_core.c | 2 +-
> drivers/platform/x86/intel_ips.c | 20 ++++----
> drivers/powercap/intel_rapl_msr.c | 2 +-
> drivers/thermal/intel/intel_hfi.c | 8 +--
> drivers/thermal/intel/therm_throt.c | 22 ++++----
> drivers/thermal/intel/x86_pkg_temp_thermal.c | 6 +--
> drivers/video/fbdev/geode/display_gx.c | 8 +--
> drivers/video/fbdev/geode/gxfb_core.c | 2 +-
> drivers/video/fbdev/geode/lxfb_ops.c | 50 +++++++++----------
> drivers/video/fbdev/geode/suspend_gx.c | 24 +++++----
> drivers/video/fbdev/geode/video_gx.c | 8 +--
> include/linux/cs5535.h | 10 ++--
> 138 files changed, 575 insertions(+), 694 deletions(-)
>
anything you need from me to get this series into 7.4?
Juergen