On Tue, 10 Jun 2025 15:57:05 -0700, Sean Christopherson wrote: > Clean up KVM's MSR interception code (especially the SVM code, which is all > kinds of ugly). The main goals are to: > > - Make the SVM and VMX APIs consistent (and sane; the current SVM APIs have > inverted polarity). > > - Eliminate the shadow bitmaps that are used to determine intercepts on > userspace MSR filter update. > > [...] Applied to kvm-x86 misc, thanks! [01/32] KVM: SVM: Disable interception of SPEC_CTRL iff the MSR exists for the guest https://github.com/kvm-x86/linux/commit/674ffc650351 [02/32] KVM: SVM: Allocate IOPM pages after initial setup in svm_hardware_setup() https://github.com/kvm-x86/linux/commit/fb96d5cf0fda [03/32] KVM: SVM: Don't BUG if setting up the MSR intercept bitmaps fails https://github.com/kvm-x86/linux/commit/5ebd73730832 [04/32] KVM: SVM: Tag MSR bitmap initialization helpers with __init https://github.com/kvm-x86/linux/commit/f886515f9ba2 [05/32] KVM: SVM: Use ARRAY_SIZE() to iterate over direct_access_msrs https://github.com/kvm-x86/linux/commit/b241c50c4e30 [06/32] KVM: SVM: Kill the VM instead of the host if MSR interception is buggy https://github.com/kvm-x86/linux/commit/6353cd685c69 [07/32] KVM: x86: Use non-atomic bit ops to manipulate "shadow" MSR intercepts https://github.com/kvm-x86/linux/commit/b1bccf788390 [08/32] KVM: SVM: Massage name and param of helper that merges vmcb01 and vmcb12 MSRPMs https://github.com/kvm-x86/linux/commit/925149b6d054 [09/32] KVM: SVM: Clean up macros related to architectural MSRPM definitions https://github.com/kvm-x86/linux/commit/16e9584cc0a8 [10/32] KVM: nSVM: Use dedicated array of MSRPM offsets to merge L0 and L1 bitmaps https://github.com/kvm-x86/linux/commit/9b72c3d59f42 [11/32] KVM: nSVM: Omit SEV-ES specific passthrough MSRs from L0+L1 bitmap merge https://github.com/kvm-x86/linux/commit/f21ff2c8c997 [12/32] KVM: nSVM: Don't initialize vmcb02 MSRPM with vmcb01's "always passthrough" https://github.com/kvm-x86/linux/commit/4879dc9469e6 [13/32] KVM: SVM: Add helpers for accessing MSR bitmap that don't rely on offsets https://github.com/kvm-x86/linux/commit/c38595ad69ce [14/32] KVM: SVM: Implement and adopt VMX style MSR intercepts APIs https://github.com/kvm-x86/linux/commit/6b7315fe54ce [15/32] KVM: SVM: Pass through GHCB MSR if and only if VM is an SEV-ES guest https://github.com/kvm-x86/linux/commit/3a0f09b361e1 [16/32] KVM: SVM: Drop "always" flag from list of possible passthrough MSRs https://github.com/kvm-x86/linux/commit/cb53d079484c [17/32] KVM: x86: Move definition of X2APIC_MSR() to lapic.h https://github.com/kvm-x86/linux/commit/405a63d4d386 [18/32] KVM: VMX: Manually recalc all MSR intercepts on userspace MSR filter change https://github.com/kvm-x86/linux/commit/8a056ece45d2 [19/32] KVM: SVM: Manually recalc all MSR intercepts on userspace MSR filter change https://github.com/kvm-x86/linux/commit/160f143cc131 [20/32] KVM: x86: Rename msr_filter_changed() => recalc_msr_intercepts() https://github.com/kvm-x86/linux/commit/4ceca57e3f20 [21/32] KVM: SVM: Rename init_vmcb_after_set_cpuid() to make it intercepts specific https://github.com/kvm-x86/linux/commit/049dff172b6d [22/32] KVM: SVM: Fold svm_vcpu_init_msrpm() into its sole caller https://github.com/kvm-x86/linux/commit/40ba80e4b043 [23/32] KVM: SVM: Merge "after set CPUID" intercept recalc helpers https://github.com/kvm-x86/linux/commit/4880919aaf8d [24/32] KVM: SVM: Drop explicit check on MSRPM offset when emulating SEV-ES accesses https://github.com/kvm-x86/linux/commit/2f89888434bc [25/32] KVM: SVM: Move svm_msrpm_offset() to nested.c https://github.com/kvm-x86/linux/commit/5c9c08476363 [26/32] KVM: SVM: Store MSRPM pointer as "void *" instead of "u32 *" https://github.com/kvm-x86/linux/commit/7fe057804118 [27/32] KVM: nSVM: Access MSRPM in 4-byte chunks only for merging L0 and L1 bitmaps https://github.com/kvm-x86/linux/commit/52f82177429e [28/32] KVM: SVM: Return -EINVAL instead of MSR_INVALID to signal out-of-range MSR https://github.com/kvm-x86/linux/commit/5904ba517246 [29/32] KVM: nSVM: Merge MSRPM in 64-bit chunks on 64-bit kernels https://github.com/kvm-x86/linux/commit/54f1c770611b [30/32] KVM: SVM: Add a helper to allocate and initialize permissions bitmaps https://github.com/kvm-x86/linux/commit/73be81b3bb7c [31/32] KVM: x86: Simplify userspace filter logic when disabling MSR interception https://github.com/kvm-x86/linux/commit/bea44d199240 [32/32] KVM: selftests: Verify KVM disable interception (for userspace) on filter change https://github.com/kvm-x86/linux/commit/0792c71c1c94 -- https://github.com/kvm-x86/kvm-unit-tests/tree/next