[PATCH v2 00/13] x86/msr: Drop 32-bit MSR interfaces

Juergen Gross posted 13 patches 1 month ago
Only 1 patches received!
There is a newer version of this series
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               |  5 +-
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/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/vmx.c                        | 36 ++++++-------
arch/x86/kvm/x86.c                            |  8 +--
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                     | 20 ++++----
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                | 30 +++++------
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 ++--
136 files changed, 571 insertions(+), 683 deletions(-)
[PATCH v2 00/13] x86/msr: Drop 32-bit MSR interfaces
Posted by Juergen Gross 1 month ago
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-08-19.

Changes in V2:
- dropped already applied patches
- added patch 1
- 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               |  5 +-
 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/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/vmx.c                        | 36 ++++++-------
 arch/x86/kvm/x86.c                            |  8 +--
 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                     | 20 ++++----
 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                | 30 +++++------
 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 ++--
 136 files changed, 571 insertions(+), 683 deletions(-)

-- 
2.55.0
Re: [PATCH v2 00/13] x86/msr: Drop 32-bit MSR interfaces
Posted by Dave Hansen 1 month ago
Hey Juergen,

These look great. Thanks for doing it!

The only wonky thing is how we're going to actually merge it. We
obviously can't do patches 10-11 until all the "stop using" patches have
been applied.

I obviously 100% realize that it's during the merge window, but any acks
that the maintainers of 5-9 provide in the next few weeks would be super
helpful. Or, if any of those maintainers want to cherry pick their
subsystem's stuff out of this series and apply it, that would be great too.

But, the last time we did some MSR function munging, the tip tree
carried most of the patches. I would expect we'll have a repeat of that
here too. I'll pencil in the idea of just merging the lot around -rc1 time.
Re: [PATCH v2 00/13] x86/msr: Drop 32-bit MSR interfaces
Posted by Sean Christopherson 1 month ago
On Wed, Aug 19, 2026, Dave Hansen wrote:
> Hey Juergen,
> 
> These look great. Thanks for doing it!
> 
> The only wonky thing is how we're going to actually merge it. We
> obviously can't do patches 10-11 until all the "stop using" patches have
> been applied.
> 
> I obviously 100% realize that it's during the merge window, but any acks
> that the maintainers of 5-9 provide in the next few weeks would be super
> helpful. Or, if any of those maintainers want to cherry pick their
> subsystem's stuff out of this series and apply it, that would be great too.
> 
> But, the last time we did some MSR function munging, the tip tree
> carried most of the patches. I would expect we'll have a repeat of that
> here too. I'll pencil in the idea of just merging the lot around -rc1 time.

Note, patch 12 "treewide: convert rdmsrq() from a macro to an inline function"
is going to conflict with the KVM changes for 7.3; kvm_access_xstate_msr() is
getting moved from x86.c to msrs.c.  Somewhat surprisingly, AFAICT that's the
only conflict with KVM's code movement, so it's probably not strictly required
to send a new version after the KVM pull request?
Re: [PATCH v2 00/13] x86/msr: Drop 32-bit MSR interfaces
Posted by Jürgen Groß 1 month ago
On 19.08.26 17:33, Sean Christopherson wrote:
> On Wed, Aug 19, 2026, Dave Hansen wrote:
>> Hey Juergen,
>>
>> These look great. Thanks for doing it!
>>
>> The only wonky thing is how we're going to actually merge it. We
>> obviously can't do patches 10-11 until all the "stop using" patches have
>> been applied.
>>
>> I obviously 100% realize that it's during the merge window, but any acks
>> that the maintainers of 5-9 provide in the next few weeks would be super
>> helpful. Or, if any of those maintainers want to cherry pick their
>> subsystem's stuff out of this series and apply it, that would be great too.
>>
>> But, the last time we did some MSR function munging, the tip tree
>> carried most of the patches. I would expect we'll have a repeat of that
>> here too. I'll pencil in the idea of just merging the lot around -rc1 time.
> 
> Note, patch 12 "treewide: convert rdmsrq() from a macro to an inline function"
> is going to conflict with the KVM changes for 7.3; kvm_access_xstate_msr() is
> getting moved from x86.c to msrs.c.  Somewhat surprisingly, AFAICT that's the
> only conflict with KVM's code movement, so it's probably not strictly required
> to send a new version after the KVM pull request?

I'm expecting some more conflicts especially for patches 10-12 before they are
merged. I'm more or less constantly rebasing locally. In case a conflict is
detected, I'll send a V3 after rc1.


Juergen
Re: [PATCH v2 00/13] x86/msr: Drop 32-bit MSR interfaces
Posted by Jürgen Groß 1 month ago
On 19.08.26 16:40, Dave Hansen wrote:
> Hey Juergen,
> 
> These look great. Thanks for doing it!
> 
> The only wonky thing is how we're going to actually merge it. We
> obviously can't do patches 10-11 until all the "stop using" patches have
> been applied.
> 
> I obviously 100% realize that it's during the merge window, but any acks
> that the maintainers of 5-9 provide in the next few weeks would be super
> helpful. Or, if any of those maintainers want to cherry pick their
> subsystem's stuff out of this series and apply it, that would be great too.
> 
> But, the last time we did some MSR function munging, the tip tree
> carried most of the patches. I would expect we'll have a repeat of that
> here too. I'll pencil in the idea of just merging the lot around -rc1 time.

Ingo requested this series to be carried through the tip tree.


Juergen