* [GIT PULL] KVM: Non-x86 changes for 6.4
@ 2023-04-24 17:35 Sean Christopherson
2023-04-24 17:35 ` [GIT PULL] KVM: x86: Misc " Sean Christopherson
` (6 more replies)
0 siblings, 7 replies; 17+ messages in thread
From: Sean Christopherson @ 2023-04-24 17:35 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: kvm
Non-x86, a.k.a. generic, KVM changes for 6.4. Nothing particularly
interesting, just a random smattering of one-off patches.
The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7:
KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400)
are available in the Git repository at:
https://github.com/kvm-x86/linux.git tags/kvm-x86-generic-6.4
for you to fetch changes up to b0d237087c674c43df76c1a0bc2737592f3038f4:
KVM: Fix comments that refer to the non-existent install_new_memslots() (2023-03-24 08:20:17 -0700)
----------------------------------------------------------------
Common KVM changes for 6.4:
- Drop unnecessary casts from "void *" throughout kvm_main.c
- Tweak the layout of "struct kvm_mmu_memory_cache" to shrink the struct
size by 8 bytes on 64-bit kernels by utilizing a padding hole
- Fix a documentation format goof that was introduced when the KVM docs
were converted to ReST
- Constify MIPS's internal callbacks (a leftover from the hardware enabling
rework that landed in 6.3)
----------------------------------------------------------------
Jun Miao (1):
KVM: Fix comments that refer to the non-existent install_new_memslots()
Li kunyu (1):
kvm: kvm_main: Remove unnecessary (void*) conversions
Mathias Krause (1):
KVM: Shrink struct kvm_mmu_memory_cache
Sean Christopherson (1):
KVM: MIPS: Make kvm_mips_callbacks const
Shaoqin Huang (1):
KVM: Add the missed title format
Documentation/virt/kvm/api.rst | 1 +
Documentation/virt/kvm/locking.rst | 2 +-
arch/mips/include/asm/kvm_host.h | 2 +-
arch/mips/kvm/vz.c | 2 +-
include/linux/kvm_host.h | 4 ++--
include/linux/kvm_types.h | 2 +-
virt/kvm/kvm_main.c | 26 ++++++++++++--------------
7 files changed, 19 insertions(+), 20 deletions(-)
^ permalink raw reply [flat|nested] 17+ messages in thread* [GIT PULL] KVM: x86: Misc changes for 6.4. 2023-04-24 17:35 [GIT PULL] KVM: Non-x86 changes for 6.4 Sean Christopherson @ 2023-04-24 17:35 ` Sean Christopherson 2023-04-26 19:49 ` Paolo Bonzini 2023-04-24 17:35 ` [GIT PULL] KVM: x86: MMU " Sean Christopherson ` (5 subsequent siblings) 6 siblings, 1 reply; 17+ messages in thread From: Sean Christopherson @ 2023-04-24 17:35 UTC (permalink / raw) To: Paolo Bonzini; +Cc: kvm KVM x86 "misc" changes for 6.4. The two highlights are Mathias' optimization for CR0.WP toggling and Binbin's addition of helpers to query individual CR0/CR4 bits (a very nice and overdue cleanup). The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) are available in the Git repository at: https://github.com/kvm-x86/linux.git tags/kvm-x86-misc-6.4 for you to fetch changes up to cf9f4c0eb1699d306e348b1fd0225af7b2c282d3: KVM: x86/mmu: Refresh CR0.WP prior to checking for emulated permission faults (2023-04-10 15:25:36 -0700) ---------------------------------------------------------------- KVM x86 changes for 6.4: - Optimize CR0.WP toggling by avoiding an MMU reload when TDP is enabled, and by giving the guest control of CR0.WP when EPT is enabled on VMX (VMX-only because SVM doesn't support per-bit controls) - Add CR0/CR4 helpers to query single bits, and clean up related code where KVM was interpreting kvm_read_cr4_bits()'s "unsigned long" return as a bool - Move AMD_PSFD to cpufeatures.h and purge KVM's definition - Misc cleanups ---------------------------------------------------------------- Binbin Wu (4): KVM: x86: Add helpers to query individual CR0/CR4 bits KVM: x86: Use boolean return value for is_{pae,pse,paging}() KVM: SVM: Use kvm_is_cr4_bit_set() to query SMAP/SMEP in "can emulate" KVM: x86: Change return type of is_long_mode() to bool Mathias Krause (4): KVM: x86: Do not unload MMU roots when only toggling CR0.WP with TDP enabled KVM: x86: Ignore CR0.WP toggles in non-paging mode KVM: x86: Make use of kvm_read_cr*_bits() when testing bits KVM: VMX: Make CR0.WP a guest owned bit Robert Hoo (1): KVM: x86: Remove a redundant guest cpuid check in kvm_set_cr4() Sean Christopherson (4): KVM: SVM: Fix benign "bool vs. int" comparison in svm_set_cr0() x86: KVM: Add common feature flag for AMD's PSFD KVM: x86: Assert that the emulator doesn't load CS with garbage in !RM KVM: x86/mmu: Refresh CR0.WP prior to checking for emulated permission faults Tom Rix (1): KVM: x86: set "mitigate_smt_rsb" storage-class-specifier to static arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/kvm/cpuid.c | 12 +++------- arch/x86/kvm/emulate.c | 8 +++++++ arch/x86/kvm/kvm_cache_regs.h | 18 ++++++++++++++- arch/x86/kvm/mmu.h | 28 ++++++++++++++++++++++-- arch/x86/kvm/mmu/mmu.c | 15 +++++++++++++ arch/x86/kvm/pmu.c | 4 ++-- arch/x86/kvm/svm/svm.c | 6 ++--- arch/x86/kvm/vmx/nested.c | 6 ++--- arch/x86/kvm/vmx/vmx.c | 8 +++---- arch/x86/kvm/vmx/vmx.h | 18 +++++++++++++++ arch/x86/kvm/x86.c | 45 ++++++++++++++++++++++++-------------- arch/x86/kvm/x86.h | 22 +++++++++---------- 13 files changed, 139 insertions(+), 52 deletions(-) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] KVM: x86: Misc changes for 6.4. 2023-04-24 17:35 ` [GIT PULL] KVM: x86: Misc " Sean Christopherson @ 2023-04-26 19:49 ` Paolo Bonzini 0 siblings, 0 replies; 17+ messages in thread From: Paolo Bonzini @ 2023-04-26 19:49 UTC (permalink / raw) To: Sean Christopherson; +Cc: kvm On Mon, Apr 24, 2023 at 7:35 PM Sean Christopherson <seanjc@google.com> wrote: > > KVM x86 "misc" changes for 6.4. The two highlights are Mathias' > optimization for CR0.WP toggling and Binbin's addition of helpers to query > individual CR0/CR4 bits (a very nice and overdue cleanup). > > The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: > > KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) > > are available in the Git repository at: > > https://github.com/kvm-x86/linux.git tags/kvm-x86-misc-6.4 > > for you to fetch changes up to cf9f4c0eb1699d306e348b1fd0225af7b2c282d3: > > KVM: x86/mmu: Refresh CR0.WP prior to checking for emulated permission faults (2023-04-10 15:25:36 -0700) Pulled (but didn't push yet), thanks. Paolo > ---------------------------------------------------------------- > KVM x86 changes for 6.4: > > - Optimize CR0.WP toggling by avoiding an MMU reload when TDP is enabled, > and by giving the guest control of CR0.WP when EPT is enabled on VMX > (VMX-only because SVM doesn't support per-bit controls) > > - Add CR0/CR4 helpers to query single bits, and clean up related code > where KVM was interpreting kvm_read_cr4_bits()'s "unsigned long" return > as a bool > > - Move AMD_PSFD to cpufeatures.h and purge KVM's definition > > - Misc cleanups > > ---------------------------------------------------------------- > Binbin Wu (4): > KVM: x86: Add helpers to query individual CR0/CR4 bits > KVM: x86: Use boolean return value for is_{pae,pse,paging}() > KVM: SVM: Use kvm_is_cr4_bit_set() to query SMAP/SMEP in "can emulate" > KVM: x86: Change return type of is_long_mode() to bool > > Mathias Krause (4): > KVM: x86: Do not unload MMU roots when only toggling CR0.WP with TDP enabled > KVM: x86: Ignore CR0.WP toggles in non-paging mode > KVM: x86: Make use of kvm_read_cr*_bits() when testing bits > KVM: VMX: Make CR0.WP a guest owned bit > > Robert Hoo (1): > KVM: x86: Remove a redundant guest cpuid check in kvm_set_cr4() > > Sean Christopherson (4): > KVM: SVM: Fix benign "bool vs. int" comparison in svm_set_cr0() > x86: KVM: Add common feature flag for AMD's PSFD > KVM: x86: Assert that the emulator doesn't load CS with garbage in !RM > KVM: x86/mmu: Refresh CR0.WP prior to checking for emulated permission faults > > Tom Rix (1): > KVM: x86: set "mitigate_smt_rsb" storage-class-specifier to static > > arch/x86/include/asm/cpufeatures.h | 1 + > arch/x86/kvm/cpuid.c | 12 +++------- > arch/x86/kvm/emulate.c | 8 +++++++ > arch/x86/kvm/kvm_cache_regs.h | 18 ++++++++++++++- > arch/x86/kvm/mmu.h | 28 ++++++++++++++++++++++-- > arch/x86/kvm/mmu/mmu.c | 15 +++++++++++++ > arch/x86/kvm/pmu.c | 4 ++-- > arch/x86/kvm/svm/svm.c | 6 ++--- > arch/x86/kvm/vmx/nested.c | 6 ++--- > arch/x86/kvm/vmx/vmx.c | 8 +++---- > arch/x86/kvm/vmx/vmx.h | 18 +++++++++++++++ > arch/x86/kvm/x86.c | 45 ++++++++++++++++++++++++-------------- > arch/x86/kvm/x86.h | 22 +++++++++---------- > 13 files changed, 139 insertions(+), 52 deletions(-) > ^ permalink raw reply [flat|nested] 17+ messages in thread
* [GIT PULL] KVM: x86: MMU changes for 6.4 2023-04-24 17:35 [GIT PULL] KVM: Non-x86 changes for 6.4 Sean Christopherson 2023-04-24 17:35 ` [GIT PULL] KVM: x86: Misc " Sean Christopherson @ 2023-04-24 17:35 ` Sean Christopherson 2023-04-26 19:52 ` Paolo Bonzini 2023-04-24 17:35 ` [GIT PULL] KVM: x86: PMU " Sean Christopherson ` (4 subsequent siblings) 6 siblings, 1 reply; 17+ messages in thread From: Sean Christopherson @ 2023-04-24 17:35 UTC (permalink / raw) To: Paolo Bonzini; +Cc: kvm KVM x86/mmu changes for 6.4. The highlights are optimizations from Lai (.invlpg(), .sync_page(), and rmaps) and Vipin (A/D harvesting). I am also planning on sending the "persistent TDP MMU roots" patch[*] for 6.4-rc1, just waiting a few more days to give syzbot extra time to beat on v2, and to settle on whether to guard VM desctruction with mmu_lock or RCU. [*] https://lore.kernel.org/all/20230421214946.2571580-1-seanjc@google.com The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) are available in the Git repository at: https://github.com/kvm-x86/linux.git tags/kvm-x86-mmu-6.4 for you to fetch changes up to 9ed3bf411226f446a9795f2b49a15b9df98d7cf5: KVM: x86/mmu: Move filling of Hyper-V's TLB range struct into Hyper-V code (2023-04-10 15:17:29 -0700) ---------------------------------------------------------------- KVM x86 MMU changes for 6.4: - Tweak FNAME(sync_spte) to avoid unnecessary writes+flushes when the guest is only adding new PTEs - Overhaul .sync_page() and .invlpg() to share the .sync_page() implementation, i.e. utilize .sync_page()'s optimizations when emulating invalidations - Clean up the range-based flushing APIs - Revamp the TDP MMU's reaping of Accessed/Dirty bits to clear a single A/D bit using a LOCK AND instead of XCHG, and skip all of the "handle changed SPTE" overhead associated with writing the entire entry - Track the number of "tail" entries in a pte_list_desc to avoid having to walk (potentially) all descriptors during insertion and deletion, which gets quite expensive if the guest is spamming fork() - Misc cleanups ---------------------------------------------------------------- David Matlack (3): KVM: x86/mmu: Collapse kvm_flush_remote_tlbs_with_{range,address}() together KVM: x86/mmu: Rename kvm_flush_remote_tlbs_with_address() KVM: x86/mmu: Use gfn_t in kvm_flush_remote_tlbs_range() Lai Jiangshan (14): KVM: x86/mmu: Use 64-bit address to invalidate to fix a subtle bug KVM: x86/mmu: Move the check in FNAME(sync_page) as kvm_sync_page_check() KVM: x86/mmu: Check mmu->sync_page pointer in kvm_sync_page_check() KVM: x86/mmu: Set mmu->sync_page as NULL for direct paging KVM: x86/mmu: Move the code out of FNAME(sync_page)'s loop body into mmu.c KVM: x86/mmu: Reduce the update to the spte in FNAME(sync_spte) kvm: x86/mmu: Use KVM_MMU_ROOT_XXX for kvm_mmu_invalidate_addr() KVM: x86/mmu: Use kvm_mmu_invalidate_addr() in kvm_mmu_invpcid_gva() KVM: x86/mmu: Use kvm_mmu_invalidate_addr() in nested_ept_invalidate_addr() KVM: x86/mmu: Allow the roots to be invalid in FNAME(invlpg) KVM: x86/mmu: Remove FNAME(invlpg) and use FNAME(sync_spte) to update vTLB instead. kvm: x86/mmu: Remove @no_dirty_log from FNAME(prefetch_gpte) KVM: x86/mmu: Skip calling mmu->sync_spte() when the spte is 0 KVM: x86/mmu: Track tail count in pte_list_desc to optimize guest fork() Mathias Krause (1): KVM: x86/mmu: Fix comment typo Paolo Bonzini (1): KVM: x86/mmu: Avoid indirect call for get_cr3 Sean Christopherson (6): KVM: x86/mmu: Sanity check input to kvm_mmu_free_roots() KVM: x86/mmu: Rename slot rmap walkers to add clarity and clean up code KVM: x86/mmu: Replace comment with an actual lockdep assertion on mmu_lock KVM: x86/mmu: Clean up mmu.c functions that put return type on separate line KVM: x86: Rename Hyper-V remote TLB hooks to match established scheme KVM: x86/mmu: Move filling of Hyper-V's TLB range struct into Hyper-V code Vipin Sharma (13): KVM: x86/mmu: Add a helper function to check if an SPTE needs atomic write KVM: x86/mmu: Use kvm_ad_enabled() to determine if TDP MMU SPTEs need wrprot KVM: x86/mmu: Consolidate Dirty vs. Writable clearing logic in TDP MMU KVM: x86/mmu: Atomically clear SPTE dirty state in the clear-dirty-log flow KVM: x86/mmu: Drop access tracking checks when clearing TDP MMU dirty bits KVM: x86/mmu: Bypass __handle_changed_spte() when clearing TDP MMU dirty bits KVM: x86/mmu: Remove "record_dirty_log" in __tdp_mmu_set_spte() KVM: x86/mmu: Clear only A-bit (if enabled) when aging TDP MMU SPTEs KVM: x86/mmu: Drop unnecessary dirty log checks when aging TDP MMU SPTEs KVM: x86/mmu: Bypass __handle_changed_spte() when aging TDP MMU SPTEs KVM: x86/mmu: Remove "record_acc_track" in __tdp_mmu_set_spte() KVM: x86/mmu: Remove handle_changed_spte_dirty_log() KVM: x86/mmu: Merge all handle_changed_pte*() functions arch/x86/include/asm/kvm-x86-ops.h | 4 +- arch/x86/include/asm/kvm_host.h | 32 +-- arch/x86/kvm/kvm_onhyperv.c | 33 ++- arch/x86/kvm/kvm_onhyperv.h | 5 +- arch/x86/kvm/mmu/mmu.c | 506 ++++++++++++++++++++++--------------- arch/x86/kvm/mmu/mmu_internal.h | 8 +- arch/x86/kvm/mmu/paging_tmpl.h | 224 +++++----------- arch/x86/kvm/mmu/spte.c | 2 +- arch/x86/kvm/mmu/tdp_iter.h | 48 +++- arch/x86/kvm/mmu/tdp_mmu.c | 215 ++++++---------- arch/x86/kvm/svm/svm_onhyperv.h | 5 +- arch/x86/kvm/vmx/nested.c | 5 +- arch/x86/kvm/vmx/vmx.c | 5 +- arch/x86/kvm/x86.c | 4 +- 14 files changed, 522 insertions(+), 574 deletions(-) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] KVM: x86: MMU changes for 6.4 2023-04-24 17:35 ` [GIT PULL] KVM: x86: MMU " Sean Christopherson @ 2023-04-26 19:52 ` Paolo Bonzini 0 siblings, 0 replies; 17+ messages in thread From: Paolo Bonzini @ 2023-04-26 19:52 UTC (permalink / raw) To: Sean Christopherson; +Cc: kvm On Mon, Apr 24, 2023 at 7:35 PM Sean Christopherson <seanjc@google.com> wrote: > > KVM x86/mmu changes for 6.4. The highlights are optimizations from Lai > (.invlpg(), .sync_page(), and rmaps) and Vipin (A/D harvesting). > > I am also planning on sending the "persistent TDP MMU roots" patch[*] for > 6.4-rc1, just waiting a few more days to give syzbot extra time to beat on > v2, and to settle on whether to guard VM desctruction with mmu_lock or RCU. No problem; due to a slightly ugly coincidence of these PRs with Italian public holiday on April 25th, and the need to handle RISC-V separately on the second week anyway, I'll probably send ARM+s390 tomorrow and wait a little more for x86, so we'll get the persistent TDP MMU roots patch in time. I'll push all these to kvm/queue anyway in the meanwhile. Paolo > [*] https://lore.kernel.org/all/20230421214946.2571580-1-seanjc@google.com > > > The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: > > KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) > > are available in the Git repository at: > > https://github.com/kvm-x86/linux.git tags/kvm-x86-mmu-6.4 > > for you to fetch changes up to 9ed3bf411226f446a9795f2b49a15b9df98d7cf5: > > KVM: x86/mmu: Move filling of Hyper-V's TLB range struct into Hyper-V code (2023-04-10 15:17:29 -0700) > > ---------------------------------------------------------------- > KVM x86 MMU changes for 6.4: > > - Tweak FNAME(sync_spte) to avoid unnecessary writes+flushes when the > guest is only adding new PTEs > > - Overhaul .sync_page() and .invlpg() to share the .sync_page() > implementation, i.e. utilize .sync_page()'s optimizations when emulating > invalidations > > - Clean up the range-based flushing APIs > > - Revamp the TDP MMU's reaping of Accessed/Dirty bits to clear a single > A/D bit using a LOCK AND instead of XCHG, and skip all of the "handle > changed SPTE" overhead associated with writing the entire entry > > - Track the number of "tail" entries in a pte_list_desc to avoid having > to walk (potentially) all descriptors during insertion and deletion, > which gets quite expensive if the guest is spamming fork() > > - Misc cleanups > > ---------------------------------------------------------------- > David Matlack (3): > KVM: x86/mmu: Collapse kvm_flush_remote_tlbs_with_{range,address}() together > KVM: x86/mmu: Rename kvm_flush_remote_tlbs_with_address() > KVM: x86/mmu: Use gfn_t in kvm_flush_remote_tlbs_range() > > Lai Jiangshan (14): > KVM: x86/mmu: Use 64-bit address to invalidate to fix a subtle bug > KVM: x86/mmu: Move the check in FNAME(sync_page) as kvm_sync_page_check() > KVM: x86/mmu: Check mmu->sync_page pointer in kvm_sync_page_check() > KVM: x86/mmu: Set mmu->sync_page as NULL for direct paging > KVM: x86/mmu: Move the code out of FNAME(sync_page)'s loop body into mmu.c > KVM: x86/mmu: Reduce the update to the spte in FNAME(sync_spte) > kvm: x86/mmu: Use KVM_MMU_ROOT_XXX for kvm_mmu_invalidate_addr() > KVM: x86/mmu: Use kvm_mmu_invalidate_addr() in kvm_mmu_invpcid_gva() > KVM: x86/mmu: Use kvm_mmu_invalidate_addr() in nested_ept_invalidate_addr() > KVM: x86/mmu: Allow the roots to be invalid in FNAME(invlpg) > KVM: x86/mmu: Remove FNAME(invlpg) and use FNAME(sync_spte) to update vTLB instead. > kvm: x86/mmu: Remove @no_dirty_log from FNAME(prefetch_gpte) > KVM: x86/mmu: Skip calling mmu->sync_spte() when the spte is 0 > KVM: x86/mmu: Track tail count in pte_list_desc to optimize guest fork() > > Mathias Krause (1): > KVM: x86/mmu: Fix comment typo > > Paolo Bonzini (1): > KVM: x86/mmu: Avoid indirect call for get_cr3 > > Sean Christopherson (6): > KVM: x86/mmu: Sanity check input to kvm_mmu_free_roots() > KVM: x86/mmu: Rename slot rmap walkers to add clarity and clean up code > KVM: x86/mmu: Replace comment with an actual lockdep assertion on mmu_lock > KVM: x86/mmu: Clean up mmu.c functions that put return type on separate line > KVM: x86: Rename Hyper-V remote TLB hooks to match established scheme > KVM: x86/mmu: Move filling of Hyper-V's TLB range struct into Hyper-V code > > Vipin Sharma (13): > KVM: x86/mmu: Add a helper function to check if an SPTE needs atomic write > KVM: x86/mmu: Use kvm_ad_enabled() to determine if TDP MMU SPTEs need wrprot > KVM: x86/mmu: Consolidate Dirty vs. Writable clearing logic in TDP MMU > KVM: x86/mmu: Atomically clear SPTE dirty state in the clear-dirty-log flow > KVM: x86/mmu: Drop access tracking checks when clearing TDP MMU dirty bits > KVM: x86/mmu: Bypass __handle_changed_spte() when clearing TDP MMU dirty bits > KVM: x86/mmu: Remove "record_dirty_log" in __tdp_mmu_set_spte() > KVM: x86/mmu: Clear only A-bit (if enabled) when aging TDP MMU SPTEs > KVM: x86/mmu: Drop unnecessary dirty log checks when aging TDP MMU SPTEs > KVM: x86/mmu: Bypass __handle_changed_spte() when aging TDP MMU SPTEs > KVM: x86/mmu: Remove "record_acc_track" in __tdp_mmu_set_spte() > KVM: x86/mmu: Remove handle_changed_spte_dirty_log() > KVM: x86/mmu: Merge all handle_changed_pte*() functions > > arch/x86/include/asm/kvm-x86-ops.h | 4 +- > arch/x86/include/asm/kvm_host.h | 32 +-- > arch/x86/kvm/kvm_onhyperv.c | 33 ++- > arch/x86/kvm/kvm_onhyperv.h | 5 +- > arch/x86/kvm/mmu/mmu.c | 506 ++++++++++++++++++++++--------------- > arch/x86/kvm/mmu/mmu_internal.h | 8 +- > arch/x86/kvm/mmu/paging_tmpl.h | 224 +++++----------- > arch/x86/kvm/mmu/spte.c | 2 +- > arch/x86/kvm/mmu/tdp_iter.h | 48 +++- > arch/x86/kvm/mmu/tdp_mmu.c | 215 ++++++---------- > arch/x86/kvm/svm/svm_onhyperv.h | 5 +- > arch/x86/kvm/vmx/nested.c | 5 +- > arch/x86/kvm/vmx/vmx.c | 5 +- > arch/x86/kvm/x86.c | 4 +- > 14 files changed, 522 insertions(+), 574 deletions(-) > ^ permalink raw reply [flat|nested] 17+ messages in thread
* [GIT PULL] KVM: x86: PMU changes for 6.4 2023-04-24 17:35 [GIT PULL] KVM: Non-x86 changes for 6.4 Sean Christopherson 2023-04-24 17:35 ` [GIT PULL] KVM: x86: Misc " Sean Christopherson 2023-04-24 17:35 ` [GIT PULL] KVM: x86: MMU " Sean Christopherson @ 2023-04-24 17:35 ` Sean Christopherson 2023-04-26 19:55 ` Paolo Bonzini 2023-04-24 17:35 ` [GIT PULL] KVM: x86: Selftests " Sean Christopherson ` (3 subsequent siblings) 6 siblings, 1 reply; 17+ messages in thread From: Sean Christopherson @ 2023-04-24 17:35 UTC (permalink / raw) To: Paolo Bonzini; +Cc: kvm KVM x86/pmu changes for 6.4. Hiding in the pile of selftests changes are a a handful of small-but-important fixes. Note, this superficially conflicts with the PRED_CMD/FLUSH_CMD changes sitting in kvm/next due to "KVM: VMX: Refactor intel_pmu_{g,}set_msr() to align with other helpers". The resolution I have been using when preparing kvm-x86/next for linux-next is to replace a "return 0" with a "break". The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) are available in the Git repository at: https://github.com/kvm-x86/linux.git tags/kvm-x86-pmu-6.4 for you to fetch changes up to 457bd7af1a17182e7f1f97eeb5d9107f8699e99d: KVM: selftests: Test the PMU event "Instructions retired" (2023-04-14 13:21:38 -0700) ---------------------------------------------------------------- KVM x86 PMU changes for 6.4: - Disallow virtualizing legacy LBRs if architectural LBRs are available, the two are mutually exclusive in hardware - Disallow writes to immutable feature MSRs (notably PERF_CAPABILITIES) after KVM_RUN, and overhaul the vmx_pmu_caps selftest to better validate PERF_CAPABILITIES - Apply PMU filters to emulated events and add test coverage to the pmu_event_filter selftest - Misc cleanups and fixes ---------------------------------------------------------------- Aaron Lewis (5): KVM: x86/pmu: Prevent the PMU from counting disallowed events KVM: selftests: Add a common helper for the PMU event filter guest code KVM: selftests: Add helpers for PMC asserts in PMU event filter test KVM: selftests: Print detailed info in PMU event filter asserts KVM: selftests: Test the PMU event "Instructions retired" Like Xu (4): KVM: x86/pmu: Zero out pmu->all_valid_pmc_idx each time it's refreshed KVM: x86/pmu: Rename pmc_is_enabled() to pmc_is_globally_enabled() KVM: x86/pmu: Rewrite reprogram_counters() to improve performance KVM: x86/pmu: Fix a typo in kvm_pmu_request_counter_reprogam() Mathias Krause (1): KVM: x86: Shrink struct kvm_pmu Sean Christopherson (25): KVM: x86/pmu: Disallow legacy LBRs if architectural LBRs are available KVM: x86: Rename kvm_init_msr_list() to clarify it inits multiple lists KVM: x86: Add a helper to query whether or not a vCPU has ever run KVM: x86: Add macros to track first...last VMX feature MSRs KVM: x86: Generate set of VMX feature MSRs using first/last definitions KVM: selftests: Split PMU caps sub-tests to avoid writing MSR after KVM_RUN KVM: x86: Disallow writes to immutable feature MSRs after KVM_RUN KVM: x86/pmu: WARN and bug the VM if PMU is refreshed after vCPU has run KVM: x86/pmu: Zero out LBR capabilities during PMU refresh KVM: selftests: Move 0/initial value PERF_CAPS checks to dedicated sub-test KVM: selftests: Assert that full-width PMC writes are supported if PDCM=1 KVM: selftests: Print out failing MSR and value in vcpu_set_msr() KVM: selftests: Verify KVM preserves userspace writes to "durable" MSRs KVM: selftests: Drop now-redundant checks on PERF_CAPABILITIES writes KVM: selftests: Test all fungible features in PERF_CAPABILITIES KVM: selftests: Test all immutable non-format bits in PERF_CAPABILITIES KVM: selftests: Expand negative testing of guest writes to PERF_CAPABILITIES KVM: selftests: Test post-KVM_RUN writes to PERF_CAPABILITIES KVM: selftests: Drop "all done!" printf() from PERF_CAPABILITIES test KVM: selftests: Refactor LBR_FMT test to avoid use of separate macro KVM: selftests: Add negative testcase for PEBS format in PERF_CAPABILITIES KVM: selftests: Verify LBRs are disabled if vPMU is disabled KVM: VMX: Refactor intel_pmu_{g,}set_msr() to align with other helpers KVM: selftests: Use error codes to signal errors in PMU event filter test KVM: selftests: Copy full counter values from guest in PMU event filter test arch/x86/include/asm/kvm_host.h | 2 +- arch/x86/kvm/cpuid.c | 2 +- arch/x86/kvm/mmu/mmu.c | 2 +- arch/x86/kvm/pmu.c | 21 +- arch/x86/kvm/pmu.h | 2 +- arch/x86/kvm/svm/pmu.c | 2 +- arch/x86/kvm/svm/svm.c | 2 +- arch/x86/kvm/vmx/pmu_intel.c | 135 ++++++----- arch/x86/kvm/vmx/vmx.c | 16 +- arch/x86/kvm/x86.c | 102 ++++++--- arch/x86/kvm/x86.h | 13 ++ .../selftests/kvm/include/x86_64/processor.h | 41 +++- .../selftests/kvm/x86_64/pmu_event_filter_test.c | 252 ++++++++++++--------- .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 248 ++++++++++++++++---- 14 files changed, 565 insertions(+), 275 deletions(-) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] KVM: x86: PMU changes for 6.4 2023-04-24 17:35 ` [GIT PULL] KVM: x86: PMU " Sean Christopherson @ 2023-04-26 19:55 ` Paolo Bonzini 0 siblings, 0 replies; 17+ messages in thread From: Paolo Bonzini @ 2023-04-26 19:55 UTC (permalink / raw) To: Sean Christopherson; +Cc: kvm On Mon, Apr 24, 2023 at 7:35 PM Sean Christopherson <seanjc@google.com> wrote: > > KVM x86/pmu changes for 6.4. Hiding in the pile of selftests changes are a > a handful of small-but-important fixes. > > Note, this superficially conflicts with the PRED_CMD/FLUSH_CMD changes > sitting in kvm/next due to "KVM: VMX: Refactor intel_pmu_{g,}set_msr() to > align with other helpers". The resolution I have been using when preparing > kvm-x86/next for linux-next is to replace a "return 0" with a "break". Yup, figured out the same. Pulled (put not pushed yet), thanks. Paolo > The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: > > KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) > > are available in the Git repository at: > > https://github.com/kvm-x86/linux.git tags/kvm-x86-pmu-6.4 > > for you to fetch changes up to 457bd7af1a17182e7f1f97eeb5d9107f8699e99d: > > KVM: selftests: Test the PMU event "Instructions retired" (2023-04-14 13:21:38 -0700) > > ---------------------------------------------------------------- > KVM x86 PMU changes for 6.4: > > - Disallow virtualizing legacy LBRs if architectural LBRs are available, > the two are mutually exclusive in hardware > > - Disallow writes to immutable feature MSRs (notably PERF_CAPABILITIES) > after KVM_RUN, and overhaul the vmx_pmu_caps selftest to better > validate PERF_CAPABILITIES > > - Apply PMU filters to emulated events and add test coverage to the > pmu_event_filter selftest > > - Misc cleanups and fixes > > ---------------------------------------------------------------- > Aaron Lewis (5): > KVM: x86/pmu: Prevent the PMU from counting disallowed events > KVM: selftests: Add a common helper for the PMU event filter guest code > KVM: selftests: Add helpers for PMC asserts in PMU event filter test > KVM: selftests: Print detailed info in PMU event filter asserts > KVM: selftests: Test the PMU event "Instructions retired" > > Like Xu (4): > KVM: x86/pmu: Zero out pmu->all_valid_pmc_idx each time it's refreshed > KVM: x86/pmu: Rename pmc_is_enabled() to pmc_is_globally_enabled() > KVM: x86/pmu: Rewrite reprogram_counters() to improve performance > KVM: x86/pmu: Fix a typo in kvm_pmu_request_counter_reprogam() > > Mathias Krause (1): > KVM: x86: Shrink struct kvm_pmu > > Sean Christopherson (25): > KVM: x86/pmu: Disallow legacy LBRs if architectural LBRs are available > KVM: x86: Rename kvm_init_msr_list() to clarify it inits multiple lists > KVM: x86: Add a helper to query whether or not a vCPU has ever run > KVM: x86: Add macros to track first...last VMX feature MSRs > KVM: x86: Generate set of VMX feature MSRs using first/last definitions > KVM: selftests: Split PMU caps sub-tests to avoid writing MSR after KVM_RUN > KVM: x86: Disallow writes to immutable feature MSRs after KVM_RUN > KVM: x86/pmu: WARN and bug the VM if PMU is refreshed after vCPU has run > KVM: x86/pmu: Zero out LBR capabilities during PMU refresh > KVM: selftests: Move 0/initial value PERF_CAPS checks to dedicated sub-test > KVM: selftests: Assert that full-width PMC writes are supported if PDCM=1 > KVM: selftests: Print out failing MSR and value in vcpu_set_msr() > KVM: selftests: Verify KVM preserves userspace writes to "durable" MSRs > KVM: selftests: Drop now-redundant checks on PERF_CAPABILITIES writes > KVM: selftests: Test all fungible features in PERF_CAPABILITIES > KVM: selftests: Test all immutable non-format bits in PERF_CAPABILITIES > KVM: selftests: Expand negative testing of guest writes to PERF_CAPABILITIES > KVM: selftests: Test post-KVM_RUN writes to PERF_CAPABILITIES > KVM: selftests: Drop "all done!" printf() from PERF_CAPABILITIES test > KVM: selftests: Refactor LBR_FMT test to avoid use of separate macro > KVM: selftests: Add negative testcase for PEBS format in PERF_CAPABILITIES > KVM: selftests: Verify LBRs are disabled if vPMU is disabled > KVM: VMX: Refactor intel_pmu_{g,}set_msr() to align with other helpers > KVM: selftests: Use error codes to signal errors in PMU event filter test > KVM: selftests: Copy full counter values from guest in PMU event filter test > > arch/x86/include/asm/kvm_host.h | 2 +- > arch/x86/kvm/cpuid.c | 2 +- > arch/x86/kvm/mmu/mmu.c | 2 +- > arch/x86/kvm/pmu.c | 21 +- > arch/x86/kvm/pmu.h | 2 +- > arch/x86/kvm/svm/pmu.c | 2 +- > arch/x86/kvm/svm/svm.c | 2 +- > arch/x86/kvm/vmx/pmu_intel.c | 135 ++++++----- > arch/x86/kvm/vmx/vmx.c | 16 +- > arch/x86/kvm/x86.c | 102 ++++++--- > arch/x86/kvm/x86.h | 13 ++ > .../selftests/kvm/include/x86_64/processor.h | 41 +++- > .../selftests/kvm/x86_64/pmu_event_filter_test.c | 252 ++++++++++++--------- > .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 248 ++++++++++++++++---- > 14 files changed, 565 insertions(+), 275 deletions(-) ^ permalink raw reply [flat|nested] 17+ messages in thread
* [GIT PULL] KVM: x86: Selftests changes for 6.4 2023-04-24 17:35 [GIT PULL] KVM: Non-x86 changes for 6.4 Sean Christopherson ` (2 preceding siblings ...) 2023-04-24 17:35 ` [GIT PULL] KVM: x86: PMU " Sean Christopherson @ 2023-04-24 17:35 ` Sean Christopherson 2023-04-26 19:56 ` Paolo Bonzini 2023-04-24 17:35 ` [GIT PULL] KVM: x86: SVM " Sean Christopherson ` (2 subsequent siblings) 6 siblings, 1 reply; 17+ messages in thread From: Sean Christopherson @ 2023-04-24 17:35 UTC (permalink / raw) To: Paolo Bonzini; +Cc: kvm KVM x86 selftests change for 6.4. And an AMX+XCR0 bugfix that I landed here to avoid creating a mess of unnecessary conflicts between the series to overhaul the AMX test and the related selftests changes to verify the fix. The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) are available in the Git repository at: https://github.com/kvm-x86/linux.git tags/kvm-x86-selftests-6.4 for you to fetch changes up to 20aef201dafba6a1ffe9daa145c7f2c525b74aae: KVM: selftests: Fix spelling mistake "perrmited" -> "permitted" (2023-04-14 10:04:51 -0700) ---------------------------------------------------------------- KVM selftests, and an AMX/XCR0 bugfix, for 6.4: - Don't advertisze XTILE_CFG in KVM_GET_SUPPORTED_CPUID if XTILE_DATA is not being reported due to userspace not opting in via prctl() - Overhaul the AMX selftests to improve coverage and cleanup the test - Misc cleanups ---------------------------------------------------------------- Aaron Lewis (9): KVM: selftests: Assert that XTILE is XSAVE-enabled KVM: selftests: Assert that both XTILE{CFG,DATA} are XSAVE-enabled KVM: selftests: Move XSAVE and OSXSAVE CPUID checks into AMX's init_regs() KVM: selftests: Check that the palette table exists before using it KVM: selftests: Check that XTILEDATA supports XFD KVM: x86: Add a helper to handle filtering of unpermitted XCR0 features KVM: selftests: Move XGETBV and XSETBV helpers to common code KVM: selftests: Add all known XFEATURE masks to common code KVM: selftests: Add test to verify KVM's supported XCR0 Ackerley Tng (1): KVM: selftests: Adjust VM's initial stack address to align with SysV ABI spec Anish Moorthy (1): KVM: selftests: Fix nsec to sec conversion in demand_paging_test Colin Ian King (1): KVM: selftests: Fix spelling mistake "perrmited" -> "permitted" Hao Ge (1): KVM: selftests: Close opened file descriptor in stable_tsc_check_supported() Ivan Orlov (1): KVM: selftests: Add 'malloc' failure check in vcpu_save_state Like Xu (2): KVM: selftests: Add a helper to read kvm boolean module parameters KVM: selftests: Report enable_pmu module value when test is skipped Mingwei Zhang (6): KVM: selftests: Add a fully functional "struct xstate" for x86 KVM: selftests: Fix an error in comment of amx_test KVM: selftests: Enable checking on xcomp_bv in amx_test KVM: selftests: Add check of CR0.TS in the #NM handler in amx_test KVM: selftests: Assert that XTILE_DATA is set in IA32_XFD on #NM KVM: selftests: Verify XTILE_DATA in XSTATE isn't affected by IA32_XFD Sean Christopherson (2): KVM: x86: Filter out XTILE_CFG if XTILE_DATA isn't permitted KVM: selftests: Rework dynamic XFeature helper to take mask, not bit arch/x86/kvm/cpuid.c | 2 +- arch/x86/kvm/x86.c | 4 +- arch/x86/kvm/x86.h | 29 +++++ tools/testing/selftests/kvm/Makefile | 1 + tools/testing/selftests/kvm/demand_paging_test.c | 2 +- .../testing/selftests/kvm/include/kvm_util_base.h | 1 + .../selftests/kvm/include/x86_64/processor.h | 83 +++++++++++-- tools/testing/selftests/kvm/lib/kvm_util.c | 5 + tools/testing/selftests/kvm/lib/x86_64/processor.c | 36 ++++-- tools/testing/selftests/kvm/x86_64/amx_test.c | 118 ++++++++---------- .../selftests/kvm/x86_64/pmu_event_filter_test.c | 1 + .../kvm/x86_64/vmx_nested_tsc_scaling_test.c | 8 +- .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 1 + .../testing/selftests/kvm/x86_64/xcr0_cpuid_test.c | 132 +++++++++++++++++++++ 14 files changed, 326 insertions(+), 97 deletions(-) create mode 100644 tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] KVM: x86: Selftests changes for 6.4 2023-04-24 17:35 ` [GIT PULL] KVM: x86: Selftests " Sean Christopherson @ 2023-04-26 19:56 ` Paolo Bonzini 0 siblings, 0 replies; 17+ messages in thread From: Paolo Bonzini @ 2023-04-26 19:56 UTC (permalink / raw) To: Sean Christopherson; +Cc: kvm On Mon, Apr 24, 2023 at 7:35 PM Sean Christopherson <seanjc@google.com> wrote: > > KVM x86 selftests change for 6.4. And an AMX+XCR0 bugfix that I landed here > to avoid creating a mess of unnecessary conflicts between the series to > overhaul the AMX test and the related selftests changes to verify the fix. > > The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: > > KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) > > are available in the Git repository at: > > https://github.com/kvm-x86/linux.git tags/kvm-x86-selftests-6.4 > > for you to fetch changes up to 20aef201dafba6a1ffe9daa145c7f2c525b74aae: > > KVM: selftests: Fix spelling mistake "perrmited" -> "permitted" (2023-04-14 10:04:51 -0700) Pulled (put not pushed yet), thanks. Paolo > ---------------------------------------------------------------- > KVM selftests, and an AMX/XCR0 bugfix, for 6.4: > > - Don't advertisze XTILE_CFG in KVM_GET_SUPPORTED_CPUID if XTILE_DATA is > not being reported due to userspace not opting in via prctl() > > - Overhaul the AMX selftests to improve coverage and cleanup the test > > - Misc cleanups > > ---------------------------------------------------------------- > Aaron Lewis (9): > KVM: selftests: Assert that XTILE is XSAVE-enabled > KVM: selftests: Assert that both XTILE{CFG,DATA} are XSAVE-enabled > KVM: selftests: Move XSAVE and OSXSAVE CPUID checks into AMX's init_regs() > KVM: selftests: Check that the palette table exists before using it > KVM: selftests: Check that XTILEDATA supports XFD > KVM: x86: Add a helper to handle filtering of unpermitted XCR0 features > KVM: selftests: Move XGETBV and XSETBV helpers to common code > KVM: selftests: Add all known XFEATURE masks to common code > KVM: selftests: Add test to verify KVM's supported XCR0 > > Ackerley Tng (1): > KVM: selftests: Adjust VM's initial stack address to align with SysV ABI spec > > Anish Moorthy (1): > KVM: selftests: Fix nsec to sec conversion in demand_paging_test > > Colin Ian King (1): > KVM: selftests: Fix spelling mistake "perrmited" -> "permitted" > > Hao Ge (1): > KVM: selftests: Close opened file descriptor in stable_tsc_check_supported() > > Ivan Orlov (1): > KVM: selftests: Add 'malloc' failure check in vcpu_save_state > > Like Xu (2): > KVM: selftests: Add a helper to read kvm boolean module parameters > KVM: selftests: Report enable_pmu module value when test is skipped > > Mingwei Zhang (6): > KVM: selftests: Add a fully functional "struct xstate" for x86 > KVM: selftests: Fix an error in comment of amx_test > KVM: selftests: Enable checking on xcomp_bv in amx_test > KVM: selftests: Add check of CR0.TS in the #NM handler in amx_test > KVM: selftests: Assert that XTILE_DATA is set in IA32_XFD on #NM > KVM: selftests: Verify XTILE_DATA in XSTATE isn't affected by IA32_XFD > > Sean Christopherson (2): > KVM: x86: Filter out XTILE_CFG if XTILE_DATA isn't permitted > KVM: selftests: Rework dynamic XFeature helper to take mask, not bit > > arch/x86/kvm/cpuid.c | 2 +- > arch/x86/kvm/x86.c | 4 +- > arch/x86/kvm/x86.h | 29 +++++ > tools/testing/selftests/kvm/Makefile | 1 + > tools/testing/selftests/kvm/demand_paging_test.c | 2 +- > .../testing/selftests/kvm/include/kvm_util_base.h | 1 + > .../selftests/kvm/include/x86_64/processor.h | 83 +++++++++++-- > tools/testing/selftests/kvm/lib/kvm_util.c | 5 + > tools/testing/selftests/kvm/lib/x86_64/processor.c | 36 ++++-- > tools/testing/selftests/kvm/x86_64/amx_test.c | 118 ++++++++---------- > .../selftests/kvm/x86_64/pmu_event_filter_test.c | 1 + > .../kvm/x86_64/vmx_nested_tsc_scaling_test.c | 8 +- > .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 1 + > .../testing/selftests/kvm/x86_64/xcr0_cpuid_test.c | 132 +++++++++++++++++++++ > 14 files changed, 326 insertions(+), 97 deletions(-) > create mode 100644 tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c > ^ permalink raw reply [flat|nested] 17+ messages in thread
* [GIT PULL] KVM: x86: SVM changes for 6.4 2023-04-24 17:35 [GIT PULL] KVM: Non-x86 changes for 6.4 Sean Christopherson ` (3 preceding siblings ...) 2023-04-24 17:35 ` [GIT PULL] KVM: x86: Selftests " Sean Christopherson @ 2023-04-24 17:35 ` Sean Christopherson 2023-04-26 19:58 ` Paolo Bonzini 2023-04-24 17:35 ` [GIT PULL] KVM: x86: VMX " Sean Christopherson 2023-04-26 19:49 ` [GIT PULL] KVM: Non-x86 " Paolo Bonzini 6 siblings, 1 reply; 17+ messages in thread From: Sean Christopherson @ 2023-04-24 17:35 UTC (permalink / raw) To: Paolo Bonzini; +Cc: kvm KVM SVM changes for 6.4. The highlight, by a country mile, is support for virtual NMIs. The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) are available in the Git repository at: https://github.com/kvm-x86/linux.git tags/kvm-x86-svm-6.4 for you to fetch changes up to c0d0ce9b5a851895f34fd401c9dddc70616711a4: KVM: SVM: Remove a duplicate definition of VMCB_AVIC_APIC_BAR_MASK (2023-04-04 11:08:12 -0700) ---------------------------------------------------------------- KVM SVM changes for 6.4: - Add support for virtual NMIs - Fixes for edge cases related to virtual interrupts ---------------------------------------------------------------- Maxim Levitsky (2): KVM: nSVM: Raise event on nested VM exit if L1 doesn't intercept IRQs KVM: SVM: add wrappers to enable/disable IRET interception Santosh Shukla (5): KVM: nSVM: Don't sync vmcb02 V_IRQ back to vmcb12 if KVM (L0) is intercepting VINTR KVM: nSVM: Disable intercept of VINTR if saved L1 host RFLAGS.IF is 0 KVM: SVM: Add definitions for new bits in VMCB::int_ctrl related to vNMI KVM: x86: Add support for SVM's Virtual NMI KVM: nSVM: Implement support for nested VNMI Sean Christopherson (5): KVM: x86: Raise an event request when processing NMIs if an NMI is pending KVM: x86: Tweak the code and comment related to handling concurrent NMIs KVM: x86: Save/restore all NMIs when multiple NMIs are pending x86/cpufeatures: Redefine synthetic virtual NMI bit as AMD's "real" vNMI KVM: x86: Route pending NMIs from userspace through process_nmi() Xinghui Li (1): KVM: SVM: Remove a duplicate definition of VMCB_AVIC_APIC_BAR_MASK arch/x86/include/asm/cpufeatures.h | 8 +- arch/x86/include/asm/kvm-x86-ops.h | 2 + arch/x86/include/asm/kvm_host.h | 11 ++- arch/x86/include/asm/svm.h | 10 ++- arch/x86/kvm/svm/nested.c | 91 ++++++++++++++++++---- arch/x86/kvm/svm/svm.c | 153 ++++++++++++++++++++++++++++++------- arch/x86/kvm/svm/svm.h | 29 +++++++ arch/x86/kvm/x86.c | 46 +++++++++-- 8 files changed, 292 insertions(+), 58 deletions(-) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] KVM: x86: SVM changes for 6.4 2023-04-24 17:35 ` [GIT PULL] KVM: x86: SVM " Sean Christopherson @ 2023-04-26 19:58 ` Paolo Bonzini 2023-04-26 20:02 ` Sean Christopherson 0 siblings, 1 reply; 17+ messages in thread From: Paolo Bonzini @ 2023-04-26 19:58 UTC (permalink / raw) To: Sean Christopherson; +Cc: kvm On Mon, Apr 24, 2023 at 7:35 PM Sean Christopherson <seanjc@google.com> wrote: > > KVM SVM changes for 6.4. The highlight, by a country mile, is support for > virtual NMIs. > > The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: > > KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) > > are available in the Git repository at: > > https://github.com/kvm-x86/linux.git tags/kvm-x86-svm-6.4 > > for you to fetch changes up to c0d0ce9b5a851895f34fd401c9dddc70616711a4: > > KVM: SVM: Remove a duplicate definition of VMCB_AVIC_APIC_BAR_MASK (2023-04-04 11:08:12 -0700) Pulled (but not pushed yet), thanks. This is probably the sub-PR for which I'm more interested in giving the code a closer look, but this is more about understanding the changes than it is about expecting something bad in it. Paolo > ---------------------------------------------------------------- > KVM SVM changes for 6.4: > > - Add support for virtual NMIs > > - Fixes for edge cases related to virtual interrupts > > ---------------------------------------------------------------- > Maxim Levitsky (2): > KVM: nSVM: Raise event on nested VM exit if L1 doesn't intercept IRQs > KVM: SVM: add wrappers to enable/disable IRET interception > > Santosh Shukla (5): > KVM: nSVM: Don't sync vmcb02 V_IRQ back to vmcb12 if KVM (L0) is intercepting VINTR > KVM: nSVM: Disable intercept of VINTR if saved L1 host RFLAGS.IF is 0 > KVM: SVM: Add definitions for new bits in VMCB::int_ctrl related to vNMI > KVM: x86: Add support for SVM's Virtual NMI > KVM: nSVM: Implement support for nested VNMI > > Sean Christopherson (5): > KVM: x86: Raise an event request when processing NMIs if an NMI is pending > KVM: x86: Tweak the code and comment related to handling concurrent NMIs > KVM: x86: Save/restore all NMIs when multiple NMIs are pending > x86/cpufeatures: Redefine synthetic virtual NMI bit as AMD's "real" vNMI > KVM: x86: Route pending NMIs from userspace through process_nmi() > > Xinghui Li (1): > KVM: SVM: Remove a duplicate definition of VMCB_AVIC_APIC_BAR_MASK > > arch/x86/include/asm/cpufeatures.h | 8 +- > arch/x86/include/asm/kvm-x86-ops.h | 2 + > arch/x86/include/asm/kvm_host.h | 11 ++- > arch/x86/include/asm/svm.h | 10 ++- > arch/x86/kvm/svm/nested.c | 91 ++++++++++++++++++---- > arch/x86/kvm/svm/svm.c | 153 ++++++++++++++++++++++++++++++------- > arch/x86/kvm/svm/svm.h | 29 +++++++ > arch/x86/kvm/x86.c | 46 +++++++++-- > 8 files changed, 292 insertions(+), 58 deletions(-) > ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] KVM: x86: SVM changes for 6.4 2023-04-26 19:58 ` Paolo Bonzini @ 2023-04-26 20:02 ` Sean Christopherson 2023-04-26 20:48 ` Paolo Bonzini 0 siblings, 1 reply; 17+ messages in thread From: Sean Christopherson @ 2023-04-26 20:02 UTC (permalink / raw) To: Paolo Bonzini; +Cc: kvm On Wed, Apr 26, 2023, Paolo Bonzini wrote: > On Mon, Apr 24, 2023 at 7:35 PM Sean Christopherson <seanjc@google.com> wrote: > > > > KVM SVM changes for 6.4. The highlight, by a country mile, is support for > > virtual NMIs. > > > > The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: > > > > KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) > > > > are available in the Git repository at: > > > > https://github.com/kvm-x86/linux.git tags/kvm-x86-svm-6.4 > > > > for you to fetch changes up to c0d0ce9b5a851895f34fd401c9dddc70616711a4: > > > > KVM: SVM: Remove a duplicate definition of VMCB_AVIC_APIC_BAR_MASK (2023-04-04 11:08:12 -0700) > > Pulled (but not pushed yet), thanks. > > This is probably the sub-PR for which I'm more interested in giving > the code a closer look, but this is more about understanding the > changes than it is about expecting something bad in it. 100% agree. If you were to scrutinize only one thing for 6.4, the vNMI changes are definitely my choice for extra eyeballs. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] KVM: x86: SVM changes for 6.4 2023-04-26 20:02 ` Sean Christopherson @ 2023-04-26 20:48 ` Paolo Bonzini 2023-04-26 22:40 ` Sean Christopherson 0 siblings, 1 reply; 17+ messages in thread From: Paolo Bonzini @ 2023-04-26 20:48 UTC (permalink / raw) To: Sean Christopherson; +Cc: kvm On Wed, Apr 26, 2023 at 10:02 PM Sean Christopherson <seanjc@google.com> wrote: > > This is probably the sub-PR for which I'm more interested in giving > > the code a closer look, but this is more about understanding the > > changes than it is about expecting something bad in it. > > 100% agree. If you were to scrutinize only one thing for 6.4, the vNMI changes > are definitely my choice for extra eyeballs. Interesting read. The split commits left me wondering _why_ patches 1-7 were needed for vNMI, but that's a known limitation of losing the cover letter, and the Link or Message-Id trailers try to amend for that. I have a few comments indeed, most of which are absolutely nits and can be ignored or fixed as follow-ups. It's my turn to send a "belated review" patch series, which I'll do for -rc2, but please check if there are any disagreements. First of all, this comment caught my attention: + /* + * Rules for synchronizing int_ctl bits from vmcb02 to vmcb01: + * + * V_IRQ, V_IRQ_VECTOR, V_INTR_PRIO_MASK, V_IGN_TPR: If L1 doesn't + * intercept interrupts, then KVM will use vmcb02's V_IRQ (and related + * flags) to detect interrupt windows for L1 IRQs (even if L1 uses + * virtual interrupt masking). Raise KVM_REQ_EVENT to ensure that + * KVM re-requests an interrupt window if necessary, which implicitly + * copies this bits from vmcb02 to vmcb01. + * + * V_TPR: If L1 doesn't use virtual interrupt masking, then L1's vTPR + * is stored in vmcb02, but its value doesn't need to be copied from/to + * vmcb01 because it is copied from/to the virtual APIC's TPR register + * on each VM entry/exit. + * + * V_GIF: If nested vGIF is not used, KVM uses vmcb02's V_GIF for L1's + * V_GIF. However, GIF is architecturally clear on each VM exit, thus + * there is no need to copy V_GIF from vmcb02 to vmcb01. + */ "Rules for synchronizing int_ctl bits from vmcb02 to vmcb01" suggests that this is work done here, and it also misled me into looking at nested_sync_control_from_vmcb02 (which is instead about vmcb02 -> vmcb12). So what about replacing it with * int_ctl bits from vmcb02 have to be synchronized to both vmcb12 and vmcb01. * The former is in nested_sync_control_from_vmcb02, invoked on every vmexit, * while the latter is scattered all over the place: and perhaps also call out nested_svm_virtualize_tpr(), sync_lapic_to_cr8() and sync_cr8_to_lapic in the V_TPR part? Another super small thing which is not worth a respin (would have been): Subject: [PATCH 05/13] KVM: x86: Raise an event request when processing NMIs - if an NMI is pending + iff an NMI is pending The "if" suggests that we were missing an event request, while "iff" suggests that we were doing them unnecessarily. As an aside, I like the "coding style violation" of commit 400fee8c9b2d. Because the "limit = 2" case is anti-architectural, it makes more sense to have it as an "else" rather than as the default. An alternative could have been: unsigned limit = 1; if (!static_call(kvm_x86_get_nmi_mask)(vcpu) && !vcpu->arch.nmi_injected) limit = 2; but the ugly condition makes this solution worse. Next on, commit ab2ee212a57b ("KVM: x86: Save/restore all NMIs when multiple NMIs are pending"). Here, "allows userspace to restore 255 pending NMIs" in the commit message is kinda scary, and I thought about following up with a fixlet to KVM_SET_VCPU_EVENTS: + events->nmi.pending = min(vcpu->arch.nmi_pending, 2); vcpu->arch.nmi_pending = 0; atomic_set(&vcpu->arch.nmi_queued, events->nmi.pending); kvm_make_request(KVM_REQ_NMI, vcpu); but really this isn't needed because process_nmi() does have vcpu->arch.nmi_pending = min(vcpu->arch.nmi_pending, limit); So in the end this is also fine, just a remark on the commit message. May be worth an additional comment instead here in KVM_SET_VCPU_EVENTS, before the atomic_set(). On to the actual vNMI patch: + /* + * KVM should never request an NMI window when vNMI is enabled, as KVM + * allows at most one to-be-injected NMI and one pending NMI, i.e. if + * two NMIs arrive simultaneously, KVM will inject one and set + * V_NMI_PENDING for the other. WARN, but continue with the standard + * single-step approach to try and salvage the pending NMI. + */ + WARN_ON_ONCE(is_vnmi_enabled(svm)); Understandable, but also scary. :) I am not sure losing a pending NMI is a big deal. IIRC the "limit = 2" case only matters because Windows uses an NMI shootdown when rebooting the system and in some cases it would hang; but in this case we're in a buggy situation. And it means having to think about how the IRET+single-step method interacts with vNMI, and what is the meaning of !svm->awaiting_iret_completion (tested right below) in this buggy case. I'd just "return" here. And another small nit to conclude - kvm_get_nr_pending_nmis() could be static. The only thing that leaves me a bit puzzled is the naming and rationale of get_vnmi_vmcb_l1(). I'll let you or Santosh clarify that. Thanks, Paolo ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] KVM: x86: SVM changes for 6.4 2023-04-26 20:48 ` Paolo Bonzini @ 2023-04-26 22:40 ` Sean Christopherson 0 siblings, 0 replies; 17+ messages in thread From: Sean Christopherson @ 2023-04-26 22:40 UTC (permalink / raw) To: Paolo Bonzini; +Cc: kvm On Wed, Apr 26, 2023, Paolo Bonzini wrote: > On Wed, Apr 26, 2023 at 10:02 PM Sean Christopherson <seanjc@google.com> wrote: > > > This is probably the sub-PR for which I'm more interested in giving > > > the code a closer look, but this is more about understanding the > > > changes than it is about expecting something bad in it. > > > > 100% agree. If you were to scrutinize only one thing for 6.4, the vNMI changes > > are definitely my choice for extra eyeballs. > > Interesting read. The split commits left me wondering _why_ patches > 1-7 were needed for vNMI, but that's a known limitation of losing the > cover letter, and the Link or Message-Id trailers try to amend for > that. > > I have a few comments indeed, most of which are absolutely nits and > can be ignored or fixed as follow-ups. It's my turn to send a "belated > review" patch series, which I'll do for -rc2, but please check if > there are any disagreements. > > First of all, this comment caught my attention: > > + /* > + * Rules for synchronizing int_ctl bits from vmcb02 to vmcb01: > + * > + * V_IRQ, V_IRQ_VECTOR, V_INTR_PRIO_MASK, V_IGN_TPR: If L1 doesn't > + * intercept interrupts, then KVM will use vmcb02's V_IRQ (and related > + * flags) to detect interrupt windows for L1 IRQs (even if L1 uses > + * virtual interrupt masking). Raise KVM_REQ_EVENT to ensure that > + * KVM re-requests an interrupt window if necessary, which implicitly > + * copies this bits from vmcb02 to vmcb01. > + * > + * V_TPR: If L1 doesn't use virtual interrupt masking, then L1's vTPR > + * is stored in vmcb02, but its value doesn't need to be copied from/to > + * vmcb01 because it is copied from/to the virtual APIC's TPR register > + * on each VM entry/exit. > + * > + * V_GIF: If nested vGIF is not used, KVM uses vmcb02's V_GIF for L1's > + * V_GIF. However, GIF is architecturally clear on each VM exit, thus > + * there is no need to copy V_GIF from vmcb02 to vmcb01. > + */ > > "Rules for synchronizing int_ctl bits from vmcb02 to vmcb01" suggests > that this is work done here, and it also misled me into looking at > nested_sync_control_from_vmcb02 (which is instead about vmcb02 -> > vmcb12). +1. I had a similar reaction when I first saw the code, but learned to live with it after a few versions :-) > So what about replacing it with > > * int_ctl bits from vmcb02 have to be synchronized to both vmcb12 > and vmcb01. > * The former is in nested_sync_control_from_vmcb02, invoked on every vmexit, > * while the latter is scattered all over the place: > > and perhaps also call out nested_svm_virtualize_tpr(), sync_lapic_to_cr8() and > sync_cr8_to_lapic in the V_TPR part? > > Another super small thing which is not worth a respin (would have been): > > Subject: [PATCH 05/13] KVM: x86: Raise an event request when processing NMIs > - if an NMI is pending > + iff an NMI is pending > > The "if" suggests that we were missing an event request, while "iff" > suggests that we were doing them unnecessarily. Gah, suprised I didn't catch that, I do love me some "iff". > As an aside, I like the "coding style violation" of commit > 400fee8c9b2d. Because the "limit = 2" case is anti-architectural, it > makes more sense to have it as an "else" rather than as the default. > An alternative could have been: > > unsigned limit = 1; > if (!static_call(kvm_x86_get_nmi_mask)(vcpu) && !vcpu->arch.nmi_injected) > limit = 2; > > but the ugly condition makes this solution worse. > > Next on, commit ab2ee212a57b ("KVM: x86: Save/restore all NMIs when > multiple NMIs are pending"). Here, "allows userspace to restore 255 > pending NMIs" in the commit message is kinda scary, and I thought > about following up with a fixlet to KVM_SET_VCPU_EVENTS: > > + events->nmi.pending = min(vcpu->arch.nmi_pending, 2); > vcpu->arch.nmi_pending = 0; > atomic_set(&vcpu->arch.nmi_queued, events->nmi.pending); > kvm_make_request(KVM_REQ_NMI, vcpu); > > but really this isn't needed because process_nmi() does have > > vcpu->arch.nmi_pending = min(vcpu->arch.nmi_pending, limit); > > So in the end this is also fine, just a remark on the commit message. Even restoring 255 NMIs would be fine from KVM's perspective. The guest might not be happy, but that's likely true if there are _any_ spurious NMIs. IIRC, I didn't call out the process_nmi() behavior because having 255 pending virtual NMIs doesn't put KVM at risk anymore than does having 2 pending virtual NMIs. > May be worth an additional comment instead here in > KVM_SET_VCPU_EVENTS, before the atomic_set(). > > On to the actual vNMI patch: > > + /* > + * KVM should never request an NMI window when vNMI is enabled, as KVM > + * allows at most one to-be-injected NMI and one pending NMI, i.e. if > + * two NMIs arrive simultaneously, KVM will inject one and set > + * V_NMI_PENDING for the other. WARN, but continue with the standard > + * single-step approach to try and salvage the pending NMI. > + */ > + WARN_ON_ONCE(is_vnmi_enabled(svm)); > > Understandable, but also scary. :) I am not sure losing a pending NMI > is a big deal. IIRC the "limit = 2" case only matters because Windows > uses an NMI shootdown when rebooting the system and in some cases it > would hang; but in this case we're in a buggy situation. And it means > having to think about how the IRET+single-step method interacts with > vNMI, and what is the meaning of !svm->awaiting_iret_completion > (tested right below) in this buggy case. I'd just "return" here. Heh, Santosh originally had it return and I had the opposite reaction: why bail and *guarantee* problems for the guest, instead of continuing on and *maybe* causing problems for the guest. : Last thought, unless there's something that will obviously break, it's probably : better to WARN and continue than to bail. I.e. do the single-step and hope for : the best. Bailing at this point doesn't seem like it would help. I don't have a super strong preference. As you said, KVM is already in a buggy scenario, though my vote is still to carry on. https://lkml.kernel.org/r/Y9mwz%2FG6%2BG8NSX3%2B%40google.com > And another small nit to conclude - kvm_get_nr_pending_nmis() could be static. > > The only thing that leaves me a bit puzzled is the naming and > rationale of get_vnmi_vmcb_l1(). I'll let you or Santosh clarify that. Ah, I think what happened is that I complained about is_vnmi_enabled() being misleading (https://lore.kernel.org/all/Y9m0q31NBmsnhVGD@google.com), but instead of renaming the top-level helper, Santosh added an inner helper and here we are. Re-reading what I wrote, and looking at the code with fresh eyes, I don't think I agree with past me regarding the name of is_vnmi_enabled(). My biggest objection/confusion with the original code was the comment saying vNMI was "inhibited". Appending "for_l1()" makes the usage in the callers quite confusing. So my vote is to do: static inline bool is_vnmi_enabled(struct vcpu_svm *svm) { if (!vnmi) return false; if (is_guest_mode(&svm->vcpu)) return false; return !!(svm->vmcb01.ptr->control.int_ctl & V_NMI_ENABLE_MASK); } --- diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index f44751dd8d5d..5b604565d4b3 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -556,25 +556,15 @@ static inline bool is_x2apic_msrpm_offset(u32 offset) (msr < (APIC_BASE_MSR + 0x100)); } -static inline struct vmcb *get_vnmi_vmcb_l1(struct vcpu_svm *svm) +static inline bool is_vnmi_enabled(struct vcpu_svm *svm) { if (!vnmi) - return NULL; + return false; if (is_guest_mode(&svm->vcpu)) - return NULL; - else - return svm->vmcb01.ptr; -} - -static inline bool is_vnmi_enabled(struct vcpu_svm *svm) -{ - struct vmcb *vmcb = get_vnmi_vmcb_l1(svm); - - if (vmcb) - return !!(vmcb->control.int_ctl & V_NMI_ENABLE_MASK); - else return false; + + return !!(svm->vmcb01.ptr->control.int_ctl & V_NMI_ENABLE_MASK); } /* svm.c */ ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [GIT PULL] KVM: x86: VMX changes for 6.4 2023-04-24 17:35 [GIT PULL] KVM: Non-x86 changes for 6.4 Sean Christopherson ` (4 preceding siblings ...) 2023-04-24 17:35 ` [GIT PULL] KVM: x86: SVM " Sean Christopherson @ 2023-04-24 17:35 ` Sean Christopherson 2023-04-26 19:57 ` Paolo Bonzini 2023-04-26 19:49 ` [GIT PULL] KVM: Non-x86 " Paolo Bonzini 6 siblings, 1 reply; 17+ messages in thread From: Sean Christopherson @ 2023-04-24 17:35 UTC (permalink / raw) To: Paolo Bonzini; +Cc: kvm KVM VMX changes for 6.4. A few cleanups and a few fixes, nothing super interesting or urgent. IMO, the most notable part of this pull request is that ENCLS is actually allowed in compatibility mode. :-) The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) are available in the Git repository at: https://github.com/kvm-x86/linux.git tags/kvm-x86-vmx-6.4 for you to fetch changes up to 4984563823f0034d3533854c1b50e729f5191089: KVM: nVMX: Emulate NOPs in L2, and PAUSE if it's not intercepted (2023-04-11 09:35:49 -0700) ---------------------------------------------------------------- KVM VMX changes for 6.4: - Fix a bug in emulation of ENCLS in compatibility mode - Allow emulation of NOP and PAUSE for L2 - Misc cleanups ---------------------------------------------------------------- Binbin Wu (1): KVM: VMX: Use is_64_bit_mode() to check 64-bit mode in SGX handler Sean Christopherson (1): KVM: nVMX: Emulate NOPs in L2, and PAUSE if it's not intercepted Yu Zhang (2): KVM: nVMX: Remove outdated comments in nested_vmx_setup_ctls_msrs() KVM: nVMX: Add helpers to setup VMX control msr configs arch/x86/kvm/vmx/nested.c | 112 ++++++++++++++++++++++++++++++---------------- arch/x86/kvm/vmx/sgx.c | 4 +- arch/x86/kvm/vmx/vmx.c | 15 +++++++ 3 files changed, 91 insertions(+), 40 deletions(-) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] KVM: x86: VMX changes for 6.4 2023-04-24 17:35 ` [GIT PULL] KVM: x86: VMX " Sean Christopherson @ 2023-04-26 19:57 ` Paolo Bonzini 0 siblings, 0 replies; 17+ messages in thread From: Paolo Bonzini @ 2023-04-26 19:57 UTC (permalink / raw) To: Sean Christopherson; +Cc: kvm On Mon, Apr 24, 2023 at 7:35 PM Sean Christopherson <seanjc@google.com> wrote: > > KVM VMX changes for 6.4. A few cleanups and a few fixes, nothing super > interesting or urgent. IMO, the most notable part of this pull request is > that ENCLS is actually allowed in compatibility mode. :-) > > The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: > > KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) > > are available in the Git repository at: > > https://github.com/kvm-x86/linux.git tags/kvm-x86-vmx-6.4 > > for you to fetch changes up to 4984563823f0034d3533854c1b50e729f5191089: > > KVM: nVMX: Emulate NOPs in L2, and PAUSE if it's not intercepted (2023-04-11 09:35:49 -0700) Pulled (but not pushed yet), thanks. Paolo > ---------------------------------------------------------------- > KVM VMX changes for 6.4: > > - Fix a bug in emulation of ENCLS in compatibility mode > > - Allow emulation of NOP and PAUSE for L2 > > - Misc cleanups > > ---------------------------------------------------------------- > Binbin Wu (1): > KVM: VMX: Use is_64_bit_mode() to check 64-bit mode in SGX handler > > Sean Christopherson (1): > KVM: nVMX: Emulate NOPs in L2, and PAUSE if it's not intercepted > > Yu Zhang (2): > KVM: nVMX: Remove outdated comments in nested_vmx_setup_ctls_msrs() > KVM: nVMX: Add helpers to setup VMX control msr configs > > arch/x86/kvm/vmx/nested.c | 112 ++++++++++++++++++++++++++++++---------------- > arch/x86/kvm/vmx/sgx.c | 4 +- > arch/x86/kvm/vmx/vmx.c | 15 +++++++ > 3 files changed, 91 insertions(+), 40 deletions(-) > ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [GIT PULL] KVM: Non-x86 changes for 6.4 2023-04-24 17:35 [GIT PULL] KVM: Non-x86 changes for 6.4 Sean Christopherson ` (5 preceding siblings ...) 2023-04-24 17:35 ` [GIT PULL] KVM: x86: VMX " Sean Christopherson @ 2023-04-26 19:49 ` Paolo Bonzini 6 siblings, 0 replies; 17+ messages in thread From: Paolo Bonzini @ 2023-04-26 19:49 UTC (permalink / raw) To: Sean Christopherson; +Cc: kvm On Mon, Apr 24, 2023 at 7:35 PM Sean Christopherson <seanjc@google.com> wrote: > > Non-x86, a.k.a. generic, KVM changes for 6.4. Nothing particularly > interesting, just a random smattering of one-off patches. > > The following changes since commit d8708b80fa0e6e21bc0c9e7276ad0bccef73b6e7: > > KVM: Change return type of kvm_arch_vm_ioctl() to "int" (2023-03-16 10:18:07 -0400) > > are available in the Git repository at: > > https://github.com/kvm-x86/linux.git tags/kvm-x86-generic-6.4 > > for you to fetch changes up to b0d237087c674c43df76c1a0bc2737592f3038f4: > > KVM: Fix comments that refer to the non-existent install_new_memslots() (2023-03-24 08:20:17 -0700) Pulled (but didn't push yet), thanks. Paolo > ---------------------------------------------------------------- > Common KVM changes for 6.4: > > - Drop unnecessary casts from "void *" throughout kvm_main.c > > - Tweak the layout of "struct kvm_mmu_memory_cache" to shrink the struct > size by 8 bytes on 64-bit kernels by utilizing a padding hole > > - Fix a documentation format goof that was introduced when the KVM docs > were converted to ReST > > - Constify MIPS's internal callbacks (a leftover from the hardware enabling > rework that landed in 6.3) > > ---------------------------------------------------------------- > Jun Miao (1): > KVM: Fix comments that refer to the non-existent install_new_memslots() > > Li kunyu (1): > kvm: kvm_main: Remove unnecessary (void*) conversions > > Mathias Krause (1): > KVM: Shrink struct kvm_mmu_memory_cache > > Sean Christopherson (1): > KVM: MIPS: Make kvm_mips_callbacks const > > Shaoqin Huang (1): > KVM: Add the missed title format > > Documentation/virt/kvm/api.rst | 1 + > Documentation/virt/kvm/locking.rst | 2 +- > arch/mips/include/asm/kvm_host.h | 2 +- > arch/mips/kvm/vz.c | 2 +- > include/linux/kvm_host.h | 4 ++-- > include/linux/kvm_types.h | 2 +- > virt/kvm/kvm_main.c | 26 ++++++++++++-------------- > 7 files changed, 19 insertions(+), 20 deletions(-) > ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2023-04-26 22:41 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-04-24 17:35 [GIT PULL] KVM: Non-x86 changes for 6.4 Sean Christopherson 2023-04-24 17:35 ` [GIT PULL] KVM: x86: Misc " Sean Christopherson 2023-04-26 19:49 ` Paolo Bonzini 2023-04-24 17:35 ` [GIT PULL] KVM: x86: MMU " Sean Christopherson 2023-04-26 19:52 ` Paolo Bonzini 2023-04-24 17:35 ` [GIT PULL] KVM: x86: PMU " Sean Christopherson 2023-04-26 19:55 ` Paolo Bonzini 2023-04-24 17:35 ` [GIT PULL] KVM: x86: Selftests " Sean Christopherson 2023-04-26 19:56 ` Paolo Bonzini 2023-04-24 17:35 ` [GIT PULL] KVM: x86: SVM " Sean Christopherson 2023-04-26 19:58 ` Paolo Bonzini 2023-04-26 20:02 ` Sean Christopherson 2023-04-26 20:48 ` Paolo Bonzini 2023-04-26 22:40 ` Sean Christopherson 2023-04-24 17:35 ` [GIT PULL] KVM: x86: VMX " Sean Christopherson 2023-04-26 19:57 ` Paolo Bonzini 2023-04-26 19:49 ` [GIT PULL] KVM: Non-x86 " Paolo Bonzini
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.