* [GIT PULL] Second batch of KVM changes for Linux 5.18
@ 2022-04-01 15:32 Paolo Bonzini
2022-04-01 20:40 ` Linus Torvalds
0 siblings, 1 reply; 3+ messages in thread
From: Paolo Bonzini @ 2022-04-01 15:32 UTC (permalink / raw)
To: torvalds; +Cc: linux-kernel, kvm
Linus,
The following changes since commit c9b8fecddb5bb4b67e351bbaeaa648a6f7456912:
KVM: use kvcalloc for array allocations (2022-03-21 09:28:41 -0400)
are available in the Git repository at:
https://git.kernel.org/pub/scm/virt/kvm/kvm.git tags/for-linus
for you to fetch changes up to d1fb6a1ca3e535f89628193ab94203533b264c8c:
KVM: x86: fix sending PV IPI (2022-04-01 11:15:52 -0400)
----------------------------------------------------------------
The larger change here is support for in-kernel delivery of Xen events
and timers, but there are also several other smaller features and fixes,
consisting of 1-2 patches each.
* New ioctls to get/set TSC frequency for a whole VM
* Only do MSR filtering for MSRs accessed by rdmsr/wrmsr
* Allow userspace to opt out of hypercall patching
* Documentation improvements
Nested virtualization improvements for AMD:
* Support for "nested nested" optimizations (nested vVMLOAD/VMSAVE,
nested vGIF)
* Allow AVIC to co-exist with a nested guest running
* Fixes for LBR virtualizations when a nested guest is running,
and nested LBR virtualization support
* PAUSE filtering for nested hypervisors
Bugfixes:
* Prevent module exit until all VMs are freed
* PMU Virtualization fixes
* Fix for kvm_irq_delivery_to_apic_fast() NULL-pointer dereferences
* Other miscellaneous bugfixes
Guest support:
* Decoupling of vcpu_is_preempted from PV spinlocks
----------------------------------------------------------------
Boris Ostrovsky (1):
KVM: x86/xen: handle PV spinlocks slowpath
Dan Carpenter (1):
KVM: MMU: fix an IS_ERR() vs NULL bug
David Matlack (2):
KVM: Prevent module exit until all VMs are freed
Revert "KVM: set owner of cpu and vm file operations"
David Woodhouse (16):
KVM: avoid double put_page with gfn-to-pfn cache
KVM: Remove dirty handling from gfn_to_pfn_cache completely
KVM: x86/xen: Use gfn_to_pfn_cache for runstate area
KVM: x86: Use gfn_to_pfn_cache for pv_time
KVM: x86/xen: Use gfn_to_pfn_cache for vcpu_info
KVM: x86/xen: Use gfn_to_pfn_cache for vcpu_time_info
KVM: x86/xen: Make kvm_xen_set_evtchn() reusable from other places
KVM: x86/xen: Support direct injection of event channel events
KVM: x86/xen: Add KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID
KVM: x86/xen: Kernel acceleration for XENVER_version
KVM: x86/xen: Support per-vCPU event channel upcall via local APIC
KVM: x86/xen: Advertise and document KVM_XEN_HVM_CONFIG_EVTCHN_SEND
KVM: x86/xen: Add self tests for KVM_XEN_HVM_CONFIG_EVTCHN_SEND
KVM: x86/xen: Update self test for Xen PV timers
KVM: x86: Accept KVM_[GS]ET_TSC_KHZ as a VM ioctl.
KVM: x86: Test case for TSC scaling and offset sync
Hou Wenlong (3):
KVM: x86/emulator: Emulate RDPID only if it is enabled in guest
KVM: x86: Only do MSR filtering when access MSR by rdmsr/wrmsr
KVM: x86/mmu: Don't rebuild page when the page is synced and no tlb flushing is required
Jim Mattson (2):
KVM: x86/pmu: Use different raw event masks for AMD and Intel
KVM: x86/svm: Clear reserved bits written to PerfEvtSeln MSRs
Joao Martins (3):
KVM: x86/xen: intercept EVTCHNOP_send from guests
KVM: x86/xen: handle PV IPI vcpu yield
KVM: x86/xen: handle PV timers oneshot mode
Jon Kohler (1):
KVM: x86: optimize PKU branching in kvm_load_{guest|host}_xsave_state
Lai Jiangshan (4):
KVM: X86: Change the type of access u32 to u64
KVM: X86: Fix comments in update_permission_bitmask
KVM: X86: Rename variable smap to not_smap in permission_fault()
KVM: X86: Handle implicit supervisor access with SMAP
Li RongQing (2):
KVM: x86: Support the vCPU preemption check with nopvspin and realtime hint
KVM: x86: fix sending PV IPI
Like Xu (2):
KVM: x86/i8259: Remove a dead store of irq in a conditional block
KVM: x86/pmu: Fix and isolate TSX-specific performance event logic
Maxim Levitsky (17):
KVM: x86: nSVM: implement nested VMLOAD/VMSAVE
KVM: x86: SVM: allow to force AVIC to be enabled
KVM: x86: mark synthetic SMM vmexit as SVM_EXIT_SW
KVM: x86: mmu: trace kvm_mmu_set_spte after the new SPTE was set
KVM: x86: SVM: use vmcb01 in init_vmcb
kvm: x86: SVM: use vmcb* instead of svm->vmcb where it makes sense
KVM: x86: SVM: fix avic spec based definitions again
KVM: x86: SVM: move tsc ratio definitions to svm.h
kvm: x86: SVM: remove unused defines
KVM: x86: SVM: fix tsc scaling when the host doesn't support it
KVM: x86: SVM: remove vgif_enabled()
KVM: x86: nSVM: correctly virtualize LBR msrs when L2 is running
KVM: x86: nSVM: implement nested LBR virtualization
KVM: x86: nSVM: support PAUSE filtering when L0 doesn't intercept PAUSE
KVM: x86: nSVM: implement nested vGIF
KVM: x86: allow per cpu apicv inhibit reasons
KVM: x86: SVM: allow AVIC to co-exist with a nested guest running
Nathan Chancellor (1):
KVM: x86: Fix clang -Wimplicit-fallthrough in do_host_cpuid()
Oliver Upton (2):
KVM: x86: Allow userspace to opt out of hypercall patching
selftests: KVM: Test KVM_X86_QUIRK_FIX_HYPERCALL_INSN
Paolo Bonzini (10):
Documentation: kvm: fixes for locking.rst
Documentation: kvm: include new locks
Documentation: KVM: add separate directories for architecture-specific documentation
Documentation: KVM: add virtual CPU errata documentation
Documentation: KVM: add API issues section
KVM: MMU: propagate alloc_workqueue failure
KVM: x86: document limitations of MSR filtering
KVM: MIPS: remove reference to trap&emulate virtualization
x86, kvm: fix compilation for !CONFIG_PARAVIRT_SPINLOCKS or !CONFIG_SMP
KVM: x86/mmu: do compare-and-exchange of gPTE via the user address
Peter Gonda (1):
KVM: SVM: Fix kvm_cache_regs.h inclusions for is_guest_mode()
Sean Christopherson (7):
KVM: x86/mmu: Zap only TDP MMU leafs in zap range and mmu_notifier unmap
KVM: Don't actually set a request when evicting vCPUs for GFN cache invd
KVM: Use enum to track if cached PFN will be used in guest and/or host
KVM: x86: Make APICv inhibit reasons an enum and cleanup naming
KVM: x86: Add wrappers for setting/clearing APICv inhibits
KVM: x86: Trace all APICv inhibit changes and capture overall status
KVM: x86: Don't snapshot "max" TSC if host TSC is constant
Vitaly Kuznetsov (3):
KVM: x86: Check lapic_in_kernel() before attempting to set a SynIC irq
KVM: x86: Avoid theoretical NULL pointer dereference in kvm_irq_delivery_to_apic_fast()
KVM: x86: Forbid VMM to set SYNIC/STIMER MSRs when SynIC wasn't activated
Yi Wang (1):
KVM: SVM: fix panic on out-of-bounds guest IRQ
Zeng Guang (1):
KVM: VMX: Prepare VMCS setting for posted interrupt enabling when APICv is available
Zhenzhong Duan (2):
KVM: x86: cleanup enter_rmode()
KVM: x86: Remove redundant vm_entry_controls_clearbit() call
Documentation/virt/kvm/api.rst | 210 +++-
Documentation/virt/kvm/index.rst | 26 +-
Documentation/virt/kvm/locking.rst | 43 +-
Documentation/virt/kvm/s390/index.rst | 12 +
Documentation/virt/kvm/{ => s390}/s390-diag.rst | 0
Documentation/virt/kvm/{ => s390}/s390-pv-boot.rst | 0
Documentation/virt/kvm/{ => s390}/s390-pv.rst | 0
Documentation/virt/kvm/vcpu-requests.rst | 10 +
.../virt/kvm/{ => x86}/amd-memory-encryption.rst | 0
Documentation/virt/kvm/{ => x86}/cpuid.rst | 0
Documentation/virt/kvm/x86/errata.rst | 39 +
Documentation/virt/kvm/{ => x86}/halt-polling.rst | 0
Documentation/virt/kvm/{ => x86}/hypercalls.rst | 0
Documentation/virt/kvm/x86/index.rst | 19 +
Documentation/virt/kvm/{ => x86}/mmu.rst | 0
Documentation/virt/kvm/{ => x86}/msr.rst | 0
Documentation/virt/kvm/{ => x86}/nested-vmx.rst | 0
.../virt/kvm/{ => x86}/running-nested-guests.rst | 0
Documentation/virt/kvm/{ => x86}/timekeeping.rst | 0
arch/s390/kvm/kvm-s390.c | 2 +-
arch/x86/include/asm/kvm-x86-ops.h | 1 +
arch/x86/include/asm/kvm_host.h | 80 +-
arch/x86/include/asm/svm.h | 14 +-
arch/x86/include/uapi/asm/kvm.h | 11 +-
arch/x86/kernel/asm-offsets_64.c | 4 +-
arch/x86/kernel/kvm.c | 77 +-
arch/x86/kvm/cpuid.c | 1 +
arch/x86/kvm/emulate.c | 8 +-
arch/x86/kvm/hyperv.c | 22 +-
arch/x86/kvm/i8254.c | 6 +-
arch/x86/kvm/i8259.c | 1 -
arch/x86/kvm/irq.c | 10 +-
arch/x86/kvm/irq_comm.c | 2 +-
arch/x86/kvm/kvm_emulate.h | 3 +
arch/x86/kvm/lapic.c | 4 +
arch/x86/kvm/mmu.h | 32 +-
arch/x86/kvm/mmu/mmu.c | 45 +-
arch/x86/kvm/mmu/paging_tmpl.h | 82 +-
arch/x86/kvm/mmu/tdp_mmu.c | 72 +-
arch/x86/kvm/mmu/tdp_mmu.h | 12 +-
arch/x86/kvm/pmu.c | 18 +-
arch/x86/kvm/svm/avic.c | 24 +-
arch/x86/kvm/svm/nested.c | 297 +++--
arch/x86/kvm/svm/pmu.c | 9 +-
arch/x86/kvm/svm/svm.c | 239 ++--
arch/x86/kvm/svm/svm.h | 68 +-
arch/x86/kvm/svm/svm_onhyperv.c | 1 -
arch/x86/kvm/trace.h | 22 +-
arch/x86/kvm/vmx/pmu_intel.c | 14 +-
arch/x86/kvm/vmx/vmx.c | 28 +-
arch/x86/kvm/x86.c | 372 +++---
arch/x86/kvm/xen.c | 1253 ++++++++++++++++----
arch/x86/kvm/xen.h | 62 +-
include/linux/kvm_host.h | 63 +-
include/linux/kvm_types.h | 11 +-
include/uapi/linux/kvm.h | 48 +-
tools/testing/selftests/kvm/.gitignore | 1 +
tools/testing/selftests/kvm/Makefile | 2 +
.../selftests/kvm/x86_64/fix_hypercall_test.c | 170 +++
.../selftests/kvm/x86_64/tsc_scaling_sync.c | 119 ++
.../testing/selftests/kvm/x86_64/xen_shinfo_test.c | 366 +++++-
virt/kvm/kvm_main.c | 22 +-
virt/kvm/pfncache.c | 72 +-
63 files changed, 3157 insertions(+), 972 deletions(-)
create mode 100644 Documentation/virt/kvm/s390/index.rst
rename Documentation/virt/kvm/{ => s390}/s390-diag.rst (100%)
rename Documentation/virt/kvm/{ => s390}/s390-pv-boot.rst (100%)
rename Documentation/virt/kvm/{ => s390}/s390-pv.rst (100%)
rename Documentation/virt/kvm/{ => x86}/amd-memory-encryption.rst (100%)
rename Documentation/virt/kvm/{ => x86}/cpuid.rst (100%)
create mode 100644 Documentation/virt/kvm/x86/errata.rst
rename Documentation/virt/kvm/{ => x86}/halt-polling.rst (100%)
rename Documentation/virt/kvm/{ => x86}/hypercalls.rst (100%)
create mode 100644 Documentation/virt/kvm/x86/index.rst
rename Documentation/virt/kvm/{ => x86}/mmu.rst (100%)
rename Documentation/virt/kvm/{ => x86}/msr.rst (100%)
rename Documentation/virt/kvm/{ => x86}/nested-vmx.rst (100%)
rename Documentation/virt/kvm/{ => x86}/running-nested-guests.rst (100%)
rename Documentation/virt/kvm/{ => x86}/timekeeping.rst (100%)
create mode 100644 tools/testing/selftests/kvm/x86_64/fix_hypercall_test.c
create mode 100644 tools/testing/selftests/kvm/x86_64/tsc_scaling_sync.c
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [GIT PULL] Second batch of KVM changes for Linux 5.18
2022-04-01 15:32 [GIT PULL] Second batch of KVM changes for Linux 5.18 Paolo Bonzini
@ 2022-04-01 20:40 ` Linus Torvalds
2022-04-01 21:59 ` Paolo Bonzini
0 siblings, 1 reply; 3+ messages in thread
From: Linus Torvalds @ 2022-04-01 20:40 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: Linux Kernel Mailing List, KVM list
On Fri, Apr 1, 2022 at 8:33 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> The larger change here is support for in-kernel delivery of Xen events
> and timers, but there are also several other smaller features and fixes,
> consisting of 1-2 patches each.
No.
I've had enough with the big random kvm pull requests.
NONE of this has been in linux-next before the merge window. In fact,
None of it was there even the first week of the merge window.
So by all means send me fixes.
But no more of this last-minute development stuff, which clearfly was
not ready to go before the merge window started, and must have been
some wild last-minute merging thing.
kvm needs to make stability as a priority.
Linus
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [GIT PULL] Second batch of KVM changes for Linux 5.18
2022-04-01 20:40 ` Linus Torvalds
@ 2022-04-01 21:59 ` Paolo Bonzini
0 siblings, 0 replies; 3+ messages in thread
From: Paolo Bonzini @ 2022-04-01 21:59 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Linux Kernel Mailing List, KVM list
On 4/1/22 22:40, Linus Torvalds wrote:
> I've had enough with the big random kvm pull requests.
>
> NONE of this has been in linux-next before the merge window. In fact,
> None of it was there even the first week of the merge window.
>
> So by all means send me fixes.
>
> But no more of this last-minute development stuff, which clearly was
> not ready to go before the merge window started, and must have been
> some wild last-minute merging thing.
tl;dr okey dokey, will resend in a few minutes. But anyway here's a
description of how I do things; there's certainly a lot of variability
among subsystems, so perhaps it helps to share it.
All this stuff in general has been ready for a few weeks, even though it
was not committed to linux-next. It was not committed because in
general I prioritize big merges that affect existing code, as those need
a lot more time in linux-next and absolutely go in the first pull
request. These are the larger patch series with higher chance of
introducing regressions, often nondeterministic ones with little
possibility to bisect, and they take a lot of time for both reviewing
and testing.
While I focus on the bigger stuff for the first pull request, others are
busy sending and also reviewing smaller series. I start to grab around
-rc6, though this time it was a bit later due to a larger first PR and
due to the whole family being sick at the wrong time. But in general,
things that spill into the second week of the merge window are usually:
* covered very well by the testsuites (today's pull request was 30%
documentation and tests; those tests only cover new code and even more
tests exist outside the selftests framework and outside the Linux tree).
* and/or only activated by userspace bits that only exist in developer
trees, or sometimes do not exist at all outside Amazon/Google.
Very often, at the time this code is merged, there are zero chances that
any linux-next tester ever hits the code except via selftests or static
analysis; even syzkaller needs to be taught the new ioctls.
This is a workflow that I've been using for a few years. If that's not
okay, I can certainly stop doing that and only send one pull request.
> kvm needs to make stability as a priority.
We are, and this includes both selftests for new features and lots of
eyes looking at older code. Some of that crappy code I can definitely
blame on my own inexperience or overwork; I am happy that people go
through it with a fine-toothed comb and I try to help as well (which
takes away time from development, so you could say it also helps stability).
Of the stuff you see from me during -rc, merge-window bugs are
relatively rare and merge-window regressions even less so. Instead
you'll see a lot of new selftests, fixes to old bugs, cleaning up
lockless code to removes nasty race conditions, etc. (one of these days
I want to get some numbers to see if my intuition is correct, though).
Again, if you prefer this kind of work to go through the merge window
because it's too large for -rc, that's fine by me. But overall, rest
assured that when I send things late it's not to sneak them into a
release; if anything, it's out of abundance of caution, and wanting to
keep linux-next.git and linux.git as stable and bisectable as possible.
Thanks,
Paolo
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-04-01 21:59 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-01 15:32 [GIT PULL] Second batch of KVM changes for Linux 5.18 Paolo Bonzini
2022-04-01 20:40 ` Linus Torvalds
2022-04-01 21:59 ` Paolo Bonzini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).