mbox series

[v4,00/15] MSR code cleanup part one

Message ID 20250427092027.1598740-1-xin@zytor.com
Headers show
Series MSR code cleanup part one | expand

Message

Xin Li (Intel) April 27, 2025, 9:20 a.m. UTC
This patch set is the first part of the patch set:

  MSR refactor with new MSR instructions support

@ https://lore.kernel.org/lkml/20250422082216.1954310-1-xin@zytor.com/T/#m5a34be7d4ed55f0baca965cb65452a08e9ad7c8a


It's getting *WAY* too big, and whether to zap the pv_ops MSR APIs is
still under argument.  Dave Hansen suggested to focus on rename stuff
first, most of which he acked.

Jürgen Groß also gave his RBs to the Xen MSR cleanup patches.

So here comes the first MSR cleanup patch set with version 4.


Changes in v4:
1) Add missing includes in a different patch (Ilpo Järvinen).
2) Add all necessary direct inclusions for msr.h (Ilpo Järvinen).
3) Remove two "else" that no longer make sense (Juergen Gross).
4) Collect RBs from Jürgen Groß and ABs from Peter Zijlstra.


Link to the previous v3 patch set:
https://lore.kernel.org/lkml/20250425083442.2390017-1-xin@zytor.com/


This patch series is based on:

  git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/msr


Xin Li (Intel) (15):
  x86/msr: Add missing includes of <asm/msr.h>
  x86/msr: Move rdtsc{,_ordered}() to <asm/tsc.h>
  x86/msr: Remove rdpmc()
  x86/msr: Rename rdpmcl() to rdpmc()
  x86/msr: Convert the rdpmc() macro into an always inline function
  x86/xen/msr: Return u64 consistently in Xen PMC read functions
  x86/msr: Convert __wrmsr() uses to native_wrmsr{,q}() uses
  x86/msr: Add the native_rdmsrq() helper
  x86/msr: Convert __rdmsr() uses to native_rdmsrq() uses
  x86/xen/msr: Remove calling native_{read,write}_msr{,_safe}() in
    pmu_msr_{read,write}()
  x86/xen/msr: Remove pmu_msr_{read,write}()
  x86/xen/msr: Remove the error pointer argument from set_seg()
  x86/pvops/msr: refactor pv_cpu_ops.write_msr{,_safe}()
  x86/msr: Replace wrmsr(msr, low, 0) with wrmsrq(msr, low)
  x86/msr: Change the function type of native_read_msr_safe()

 arch/x86/coco/sev/core.c                      |   2 +-
 arch/x86/events/amd/brs.c                     |   4 +-
 arch/x86/events/amd/uncore.c                  |   2 +-
 arch/x86/events/core.c                        |   2 +-
 arch/x86/events/intel/core.c                  |   4 +-
 arch/x86/events/intel/ds.c                    |   2 +-
 arch/x86/events/msr.c                         |   3 +
 arch/x86/events/perf_event.h                  |   1 +
 arch/x86/events/probe.c                       |   2 +
 arch/x86/hyperv/hv_apic.c                     |   6 +-
 arch/x86/hyperv/hv_vtl.c                      |   4 +-
 arch/x86/hyperv/ivm.c                         |   3 +-
 arch/x86/include/asm/apic.h                   |   4 +-
 arch/x86/include/asm/fred.h                   |   1 +
 arch/x86/include/asm/microcode.h              |   2 +
 arch/x86/include/asm/mshyperv.h               |   3 +-
 arch/x86/include/asm/msr.h                    | 130 +++++-------------
 arch/x86/include/asm/paravirt.h               |  57 ++++----
 arch/x86/include/asm/paravirt_types.h         |  10 +-
 arch/x86/include/asm/suspend_32.h             |   1 +
 arch/x86/include/asm/suspend_64.h             |   1 +
 arch/x86/include/asm/switch_to.h              |   4 +-
 arch/x86/include/asm/tsc.h                    |  76 +++++++++-
 arch/x86/kernel/cpu/amd.c                     |   2 +-
 arch/x86/kernel/cpu/common.c                  |  10 +-
 arch/x86/kernel/cpu/mce/core.c                |   6 +-
 arch/x86/kernel/cpu/resctrl/pseudo_lock.c     |  25 ++--
 arch/x86/kernel/cpu/resctrl/rdtgroup.c        |   2 +-
 arch/x86/kernel/cpu/umwait.c                  |   4 +-
 arch/x86/kernel/fpu/xstate.h                  |   1 +
 arch/x86/kernel/hpet.c                        |   1 +
 arch/x86/kernel/kvm.c                         |   2 +-
 arch/x86/kernel/kvmclock.c                    |   2 +-
 arch/x86/kernel/process_64.c                  |   1 +
 arch/x86/kernel/trace_clock.c                 |   2 +-
 arch/x86/kernel/tsc_sync.c                    |   1 +
 arch/x86/kvm/svm/svm.c                        |  34 ++---
 arch/x86/kvm/vmx/vmx.c                        |   4 +-
 arch/x86/lib/kaslr.c                          |   2 +-
 arch/x86/mm/mem_encrypt_identity.c            |   5 +-
 arch/x86/realmode/init.c                      |   1 +
 arch/x86/xen/enlighten_pv.c                   |  58 ++++----
 arch/x86/xen/pmu.c                            |  72 +++-------
 arch/x86/xen/xen-ops.h                        |   5 +-
 drivers/acpi/acpi_extlog.c                    |   1 +
 drivers/acpi/processor_perflib.c              |   1 +
 drivers/acpi/processor_throttling.c           |   3 +-
 drivers/char/agp/nvidia-agp.c                 |   1 +
 drivers/cpufreq/amd-pstate-ut.c               |   2 +
 drivers/crypto/ccp/sev-dev.c                  |   1 +
 drivers/edac/amd64_edac.c                     |   1 +
 drivers/edac/ie31200_edac.c                   |   1 +
 drivers/edac/mce_amd.c                        |   1 +
 drivers/hwmon/hwmon-vid.c                     |   4 +
 drivers/idle/intel_idle.c                     |   1 +
 drivers/misc/cs5535-mfgpt.c                   |   1 +
 drivers/net/vmxnet3/vmxnet3_drv.c             |   4 +
 drivers/platform/x86/intel/ifs/core.c         |   1 +
 drivers/platform/x86/intel/ifs/load.c         |   1 +
 drivers/platform/x86/intel/ifs/runtest.c      |   1 +
 drivers/platform/x86/intel/pmc/cnp.c          |   1 +
 .../intel/speed_select_if/isst_if_common.c    |   1 +
 .../intel/speed_select_if/isst_if_mbox_msr.c  |   1 +
 .../intel/speed_select_if/isst_tpmi_core.c    |   1 +
 drivers/platform/x86/intel/turbo_max_3.c      |   1 +
 .../intel/uncore-frequency/uncore-frequency.c |   1 +
 drivers/powercap/intel_rapl_common.c          |   1 +
 drivers/powercap/intel_rapl_msr.c             |   1 +
 .../processor_thermal_device.c                |   1 +
 drivers/thermal/intel/intel_tcc_cooling.c     |   1 +
 drivers/thermal/intel/x86_pkg_temp_thermal.c  |   1 +
 drivers/video/fbdev/geode/display_gx.c        |   1 +
 drivers/video/fbdev/geode/gxfb_core.c         |   1 +
 drivers/video/fbdev/geode/lxfb_ops.c          |   1 +
 74 files changed, 308 insertions(+), 295 deletions(-)


base-commit: a5447e92e169dafaf02fd653500105c7186d7128

Comments

Michael Kelley May 2, 2025, 2:13 p.m. UTC | #1
From: Xin Li (Intel) <xin@zytor.com> Sent: Sunday, April 27, 2025 2:20 AM
> 
> This patch set is the first part of the patch set:
> 
>   MSR refactor with new MSR instructions support
> 
> @ https://lore.kernel.org/lkml/20250422082216.1954310-1-xin@zytor.com/ 
> 
> It's getting *WAY* too big, and whether to zap the pv_ops MSR APIs is
> still under argument.  Dave Hansen suggested to focus on rename stuff
> first, most of which he acked.
> 
> Jürgen Groß also gave his RBs to the Xen MSR cleanup patches.
> 
> So here comes the first MSR cleanup patch set with version 4.
> 
> 
> Changes in v4:
> 1) Add missing includes in a different patch (Ilpo Järvinen).
> 2) Add all necessary direct inclusions for msr.h (Ilpo Järvinen).
> 3) Remove two "else" that no longer make sense (Juergen Gross).
> 4) Collect RBs from Jürgen Groß and ABs from Peter Zijlstra.
> 
> 
> Link to the previous v3 patch set:
> https://lore.kernel.org/lkml/20250425083442.2390017-1-xin@zytor.com/ 
> 
> 
> This patch series is based on:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/msr

Tested this patch set (plus the v4A version of Patch 1) in VMs on
Hyper-V. Tested a normal VM, a TDX VM (with paravisor) and a
SEV-SNP VM (with paravisor). No issues found. Since this patch set is
just a rename, the risk should be low. But I wanted to make sure
there's nothing unexpected happening with Hyper-V and the
synthetic MSRs that it presents to guest VMs, as well as with the
paravisor configurations.

Tested-by: Michael Kelley <mhklinux@outlook.com>

> 
> 
> Xin Li (Intel) (15):
>   x86/msr: Add missing includes of <asm/msr.h>
>   x86/msr: Move rdtsc{,_ordered}() to <asm/tsc.h>
>   x86/msr: Remove rdpmc()
>   x86/msr: Rename rdpmcl() to rdpmc()
>   x86/msr: Convert the rdpmc() macro into an always inline function
>   x86/xen/msr: Return u64 consistently in Xen PMC read functions
>   x86/msr: Convert __wrmsr() uses to native_wrmsr{,q}() uses
>   x86/msr: Add the native_rdmsrq() helper
>   x86/msr: Convert __rdmsr() uses to native_rdmsrq() uses
>   x86/xen/msr: Remove calling native_{read,write}_msr{,_safe}() in
>     pmu_msr_{read,write}()
>   x86/xen/msr: Remove pmu_msr_{read,write}()
>   x86/xen/msr: Remove the error pointer argument from set_seg()
>   x86/pvops/msr: refactor pv_cpu_ops.write_msr{,_safe}()
>   x86/msr: Replace wrmsr(msr, low, 0) with wrmsrq(msr, low)
>   x86/msr: Change the function type of native_read_msr_safe()
> 
>  arch/x86/coco/sev/core.c                      |   2 +-
>  arch/x86/events/amd/brs.c                     |   4 +-
>  arch/x86/events/amd/uncore.c                  |   2 +-
>  arch/x86/events/core.c                        |   2 +-
>  arch/x86/events/intel/core.c                  |   4 +-
>  arch/x86/events/intel/ds.c                    |   2 +-
>  arch/x86/events/msr.c                         |   3 +
>  arch/x86/events/perf_event.h                  |   1 +
>  arch/x86/events/probe.c                       |   2 +
>  arch/x86/hyperv/hv_apic.c                     |   6 +-
>  arch/x86/hyperv/hv_vtl.c                      |   4 +-
>  arch/x86/hyperv/ivm.c                         |   3 +-
>  arch/x86/include/asm/apic.h                   |   4 +-
>  arch/x86/include/asm/fred.h                   |   1 +
>  arch/x86/include/asm/microcode.h              |   2 +
>  arch/x86/include/asm/mshyperv.h               |   3 +-
>  arch/x86/include/asm/msr.h                    | 130 +++++-------------
>  arch/x86/include/asm/paravirt.h               |  57 ++++----
>  arch/x86/include/asm/paravirt_types.h         |  10 +-
>  arch/x86/include/asm/suspend_32.h             |   1 +
>  arch/x86/include/asm/suspend_64.h             |   1 +
>  arch/x86/include/asm/switch_to.h              |   4 +-
>  arch/x86/include/asm/tsc.h                    |  76 +++++++++-
>  arch/x86/kernel/cpu/amd.c                     |   2 +-
>  arch/x86/kernel/cpu/common.c                  |  10 +-
>  arch/x86/kernel/cpu/mce/core.c                |   6 +-
>  arch/x86/kernel/cpu/resctrl/pseudo_lock.c     |  25 ++--
>  arch/x86/kernel/cpu/resctrl/rdtgroup.c        |   2 +-
>  arch/x86/kernel/cpu/umwait.c                  |   4 +-
>  arch/x86/kernel/fpu/xstate.h                  |   1 +
>  arch/x86/kernel/hpet.c                        |   1 +
>  arch/x86/kernel/kvm.c                         |   2 +-
>  arch/x86/kernel/kvmclock.c                    |   2 +-
>  arch/x86/kernel/process_64.c                  |   1 +
>  arch/x86/kernel/trace_clock.c                 |   2 +-
>  arch/x86/kernel/tsc_sync.c                    |   1 +
>  arch/x86/kvm/svm/svm.c                        |  34 ++---
>  arch/x86/kvm/vmx/vmx.c                        |   4 +-
>  arch/x86/lib/kaslr.c                          |   2 +-
>  arch/x86/mm/mem_encrypt_identity.c            |   5 +-
>  arch/x86/realmode/init.c                      |   1 +
>  arch/x86/xen/enlighten_pv.c                   |  58 ++++----
>  arch/x86/xen/pmu.c                            |  72 +++-------
>  arch/x86/xen/xen-ops.h                        |   5 +-
>  drivers/acpi/acpi_extlog.c                    |   1 +
>  drivers/acpi/processor_perflib.c              |   1 +
>  drivers/acpi/processor_throttling.c           |   3 +-
>  drivers/char/agp/nvidia-agp.c                 |   1 +
>  drivers/cpufreq/amd-pstate-ut.c               |   2 +
>  drivers/crypto/ccp/sev-dev.c                  |   1 +
>  drivers/edac/amd64_edac.c                     |   1 +
>  drivers/edac/ie31200_edac.c                   |   1 +
>  drivers/edac/mce_amd.c                        |   1 +
>  drivers/hwmon/hwmon-vid.c                     |   4 +
>  drivers/idle/intel_idle.c                     |   1 +
>  drivers/misc/cs5535-mfgpt.c                   |   1 +
>  drivers/net/vmxnet3/vmxnet3_drv.c             |   4 +
>  drivers/platform/x86/intel/ifs/core.c         |   1 +
>  drivers/platform/x86/intel/ifs/load.c         |   1 +
>  drivers/platform/x86/intel/ifs/runtest.c      |   1 +
>  drivers/platform/x86/intel/pmc/cnp.c          |   1 +
>  .../intel/speed_select_if/isst_if_common.c    |   1 +
>  .../intel/speed_select_if/isst_if_mbox_msr.c  |   1 +
>  .../intel/speed_select_if/isst_tpmi_core.c    |   1 +
>  drivers/platform/x86/intel/turbo_max_3.c      |   1 +
>  .../intel/uncore-frequency/uncore-frequency.c |   1 +
>  drivers/powercap/intel_rapl_common.c          |   1 +
>  drivers/powercap/intel_rapl_msr.c             |   1 +
>  .../processor_thermal_device.c                |   1 +
>  drivers/thermal/intel/intel_tcc_cooling.c     |   1 +
>  drivers/thermal/intel/x86_pkg_temp_thermal.c  |   1 +
>  drivers/video/fbdev/geode/display_gx.c        |   1 +
>  drivers/video/fbdev/geode/gxfb_core.c         |   1 +
>  drivers/video/fbdev/geode/lxfb_ops.c          |   1 +
>  74 files changed, 308 insertions(+), 295 deletions(-)
> 
> 
> base-commit: a5447e92e169dafaf02fd653500105c7186d7128
> --
> 2.49.0
>