[GIT PULL] KVM fixes for Linux 6.1-rc6

From: Paolo Bonzini
Date: Fri Nov 11 2022 - 09:25:48 EST


Linus,

The following changes since commit f0c4d9fc9cc9462659728d168387191387e903cc:

Linux 6.1-rc4 (2022-11-06 15:07:11 -0800)

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 6d3085e4d89ad7e6c7f1c6cf929d903393565861:

KVM: x86/mmu: Block all page faults during kvm_zap_gfn_range() (2022-11-11 07:19:46 -0500)

This is a pretty large diffstat for this time of the release. The main
culprit is a reorganization of the AMD assembly trampoline, allowing
percpu variables to be accessed early. This is needed for the return
stack depth tracking retbleed mitigation that will be in 6.2, but it
also makes it possible to tighten the IBRS restore on vmexit. The latter
change is a long tail of the spectrev2/retbleed patches (the corresponding
Intel change was simpler and went in already last June), which is why I
am including it right now instead of sharing a topic branch with tip.

Being assembly and being rich in comments makes the line count balloon
a bit, but I am pretty confident in the change (famous last words)
because the reorganization actually makes everything simpler and more
understandable than before. It has also had external review and has been
tested on the aforementioned 6.2 changes, which explode quite brutally
without the fix.

Apart from this, things are pretty normal. Do shout metaphorically if
you disagree.

Thanks,

Paolo

----------------------------------------------------------------
s390:

* PCI fix

* PV clock fix

x86:

* Fix clash between PMU MSRs and other MSRs

* Prepare SVM assembly trampoline for 6.2 retbleed mitigation
and for...

* ... tightening IBRS restore on vmexit, moving it before
the first RET or indirect branch

* Fix log level for VMSA dump

* Block all page faults during kvm_zap_gfn_range()

Tools:

* kvm_stat: fix incorrect detection of debugfs

* kvm_stat: update vmexit definitions

----------------------------------------------------------------
Like Xu (3):
KVM: x86/pmu: Do not speculatively query Intel GP PMCs that don't exist yet
KVM: x86/pmu: Limit the maximum number of supported Intel GP counters
KVM: x86/pmu: Limit the maximum number of supported AMD GP counters

Matthias Gerstner (1):
tools/kvm_stat: fix incorrect detection of debugfs

Nico Boehr (1):
KVM: s390: pv: don't allow userspace to set the clock under PV

Paolo Bonzini (12):
KVM: x86: use a separate asm-offsets.c file
KVM: SVM: replace regs argument of __svm_vcpu_run() with vcpu_svm
KVM: SVM: adjust register allocation for __svm_vcpu_run()
KVM: SVM: retrieve VMCB from assembly
KVM: SVM: remove unused field from struct vcpu_svm
KVM: SVM: remove dead field from struct svm_cpu_data
KVM: SVM: do not allocate struct svm_cpu_data dynamically
KVM: SVM: move guest vmsave/vmload back to assembly
KVM: SVM: restore host save area from assembly
KVM: SVM: move MSR_IA32_SPEC_CTRL save/restore to assembly
x86, KVM: remove unnecessary argument to x86_virt_spec_ctrl and callers
Merge tag 'kvm-s390-master-6.1-1' of https://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD

Peter Gonda (1):
KVM: SVM: Only dump VMSA to klog at KERN_DEBUG level

Rafael Mendonca (1):
KVM: s390: pci: Fix allocation size of aift kzdev elements

Rong Tao (1):
tools/kvm_stat: update exit reasons for vmx/svm/aarch64/userspace

Sean Christopherson (1):
KVM: x86/mmu: Block all page faults during kvm_zap_gfn_range()

Documentation/virt/kvm/devices/vm.rst | 3 +
arch/s390/kvm/kvm-s390.c | 26 ++--
arch/s390/kvm/kvm-s390.h | 1 -
arch/s390/kvm/pci.c | 2 +-
arch/x86/include/asm/kvm_host.h | 7 +-
arch/x86/include/asm/spec-ctrl.h | 10 +-
arch/x86/kernel/asm-offsets.c | 6 -
arch/x86/kernel/cpu/bugs.c | 15 +-
arch/x86/kvm/.gitignore | 2 +
arch/x86/kvm/Makefile | 12 ++
arch/x86/kvm/kvm-asm-offsets.c | 29 ++++
arch/x86/kvm/mmu/mmu.c | 4 +-
arch/x86/kvm/pmu.c | 2 +-
arch/x86/kvm/svm/pmu.c | 7 +-
arch/x86/kvm/svm/sev.c | 6 +-
arch/x86/kvm/svm/svm.c | 105 +++++---------
arch/x86/kvm/svm/svm.h | 11 +-
arch/x86/kvm/svm/svm_ops.h | 5 -
arch/x86/kvm/svm/vmenter.S | 260 +++++++++++++++++++++++++++-------
arch/x86/kvm/vmx/pmu_intel.c | 4 +-
arch/x86/kvm/vmx/vmenter.S | 2 +-
arch/x86/kvm/x86.c | 25 ++--
tools/kvm/kvm_stat/kvm_stat | 98 +++++++++++--
23 files changed, 435 insertions(+), 207 deletions(-)
create mode 100644 arch/x86/kvm/.gitignore
create mode 100644 arch/x86/kvm/kvm-asm-offsets.c