[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250331082251.3171276-1-xin@zytor.com>
Date: Mon, 31 Mar 2025 01:22:36 -0700
From: "Xin Li (Intel)" <xin@...or.com>
To: linux-kernel@...r.kernel.org, linux-perf-users@...r.kernel.org,
linux-hyperv@...r.kernel.org, virtualization@...ts.linux.dev,
linux-edac@...r.kernel.org, kvm@...r.kernel.org,
xen-devel@...ts.xenproject.org, linux-ide@...r.kernel.org,
linux-pm@...r.kernel.org, bpf@...r.kernel.org, llvm@...ts.linux.dev
Cc: tglx@...utronix.de, mingo@...hat.com, bp@...en8.de,
dave.hansen@...ux.intel.com, x86@...nel.org, hpa@...or.com,
jgross@...e.com, andrew.cooper3@...rix.com, peterz@...radead.org,
acme@...nel.org, namhyung@...nel.org, mark.rutland@....com,
alexander.shishkin@...ux.intel.com, jolsa@...nel.org,
irogers@...gle.com, adrian.hunter@...el.com, kan.liang@...ux.intel.com,
wei.liu@...nel.org, ajay.kaher@...adcom.com,
alexey.amakhalov@...adcom.com, bcm-kernel-feedback-list@...adcom.com,
tony.luck@...el.com, pbonzini@...hat.com, vkuznets@...hat.com,
seanjc@...gle.com, luto@...nel.org, boris.ostrovsky@...cle.com,
kys@...rosoft.com, haiyangz@...rosoft.com, decui@...rosoft.com
Subject: [RFC PATCH v1 00/15] MSR refactor with new MSR instructions support
Obviously the existing MSR code and the pv_ops MSR access APIs need some
love: https://lore.kernel.org/lkml/87y1h81ht4.ffs@tglx/
hpa has started a discussion about how to refactor it last October:
https://lore.kernel.org/lkml/7a4de623-ecda-4369-a7ae-0c43ef328177@zytor.com/
The consensus so far is to utilize the alternatives mechanism to eliminate
the Xen MSR access overhead on native systems and enable new MSR instructions
based on their availability.
To achieve this, a code refactor is necessary. Initially, the MSR API usage
needs to be unified and simplified, which is addressed by patches 1 through 7.
Patches 8 and 9 introduce basic support for immediate form MSR instructions,
while patch 10 employs the immediate form WRMSRNS in VMX.
Finally, patches 11 to 15 leverage the alternatives mechanism to read and
write MSR.
H. Peter Anvin (Intel) (1):
x86/extable: Implement EX_TYPE_FUNC_REWIND
Xin Li (Intel) (14):
x86/msr: Replace __wrmsr() with native_wrmsrl()
x86/msr: Replace __rdmsr() with native_rdmsrl()
x86/msr: Simplify pmu_msr_{read,write}()
x86/msr: Let pv_cpu_ops.write_msr{_safe}() take an u64 instead of two
u32
x86/msr: Replace wrmsr(msr, low, 0) with wrmsrl(msr, value)
x86/msr: Remove MSR write APIs that take the MSR value in two u32
arguments
x86/msr: Remove pmu_msr_{read,write}()
x86/cpufeatures: Add a CPU feature bit for MSR immediate form
instructions
x86/opcode: Add immediate form MSR instructions to x86-opcode-map
KVM: VMX: Use WRMSRNS or its immediate form when available
x86/msr: Use the alternatives mechanism to write MSR
x86/msr: Use the alternatives mechanism to read MSR
x86/extable: Add support for the immediate form MSR instructions
x86/msr: Move the ARGS macros after the MSR read/write APIs
arch/x86/coco/sev/core.c | 2 +-
arch/x86/events/amd/brs.c | 4 +-
arch/x86/hyperv/hv_apic.c | 6 +-
arch/x86/hyperv/hv_vtl.c | 4 +-
arch/x86/hyperv/ivm.c | 2 +-
arch/x86/include/asm/apic.h | 4 +-
arch/x86/include/asm/asm.h | 6 +
arch/x86/include/asm/cpufeatures.h | 19 +-
arch/x86/include/asm/extable_fixup_types.h | 1 +
arch/x86/include/asm/fred.h | 2 +-
arch/x86/include/asm/mshyperv.h | 2 +-
arch/x86/include/asm/msr-index.h | 6 +
arch/x86/include/asm/msr.h | 664 ++++++++++++++++-----
arch/x86/include/asm/paravirt.h | 64 --
arch/x86/include/asm/paravirt_types.h | 11 -
arch/x86/include/asm/switch_to.h | 2 +-
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 | 12 +-
arch/x86/kernel/cpu/resctrl/rdtgroup.c | 2 +-
arch/x86/kernel/cpu/scattered.c | 1 +
arch/x86/kernel/cpu/umwait.c | 4 +-
arch/x86/kernel/kvm.c | 2 +-
arch/x86/kernel/kvmclock.c | 2 +-
arch/x86/kernel/paravirt.c | 4 -
arch/x86/kvm/svm/svm.c | 15 +-
arch/x86/kvm/vmx/vmenter.S | 28 +-
arch/x86/kvm/vmx/vmx.c | 4 +-
arch/x86/lib/x86-opcode-map.txt | 5 +-
arch/x86/mm/extable.c | 186 ++++--
arch/x86/mm/mem_encrypt_identity.c | 4 +-
arch/x86/xen/enlighten_pv.c | 110 ++--
arch/x86/xen/pmu.c | 43 +-
arch/x86/xen/xen-asm.S | 89 +++
arch/x86/xen/xen-ops.h | 12 +-
drivers/ata/pata_cs5535.c | 12 +-
drivers/ata/pata_cs5536.c | 6 +-
drivers/cpufreq/acpi-cpufreq.c | 2 +-
drivers/cpufreq/e_powersaver.c | 2 +-
drivers/cpufreq/powernow-k6.c | 8 +-
tools/arch/x86/lib/x86-opcode-map.txt | 5 +-
42 files changed, 896 insertions(+), 479 deletions(-)
base-commit: 8fc8ae1aeed6dc895bf35a4797c6e770574f4612
--
2.49.0
Powered by blists - more mailing lists