[GIT PULL] KVM changes for 5.2 merge window

Paolo Bonzini
2019-05-17T03:59:49Z

Linus,

The following changes since commit 7a223e06b1a411cef6c4cd7a9b9a33c8d225b10e:

KVM: x86: avoid misreporting level-triggered irqs as edge-triggered in tracing (2019-04-16 15:38:08 +0200)

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 dd53f6102c30a774e0db8e55d49017a38060f6f6:

Merge tag 'kvmarm-for-v5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD (2019-05-15 23:41:43 +0200)

----------------------------------------------------------------

* ARM: support for SVE and Pointer Authentication in guests, PMU improvements

* POWER: support for direct access to the POWER9 XIVE interrupt controller,
memory and performance optimizations.

* x86: support for accessing memory not backed by struct page, fixes and refactoring

* Generic: dirty page tracking improvements

----------------------------------------------------------------
Aaron Lewis (5):
tests: kvm: Add tests to .gitignore
tests: kvm: Add tests for KVM_CAP_MAX_VCPUS and KVM_CAP_MAX_CPU_ID
KVM: nVMX: KVM_SET_NESTED_STATE - Tear down old EVMCS state before setting new state
tests: kvm: Add tests for KVM_SET_NESTED_STATE
kvm: nVMX: Set nested_run_pending in vmx_set_nested_state after checks complete

Alexey Kardashevskiy (3):
KVM: PPC: Book3S HV: Fix lockdep warning when entering the guest
KVM: PPC: Book3S HV: Avoid lockdep debugging in TCE realmode handlers
KVM: PPC: Book3S: Allocate guest TCEs on demand too

Amit Daniel Kachhap (3):
KVM: arm64: Add a vcpu flag to control ptrauth for guest
KVM: arm64: Add userspace flag to enable pointer authentication
KVM: arm64: Add capability to advertise ptrauth for guest

Andrew Murray (9):
arm64: arm_pmu: Remove unnecessary isb instruction
arm64: KVM: Encapsulate kvm_cpu_context in kvm_host_data
arm64: KVM: Add accessors to track guest/host only counters
arm64: arm_pmu: Add !VHE support for exclude_host/exclude_guest attributes
arm64: KVM: Enable !VHE support for :G/:H perf event modifiers
arm64: KVM: Enable VHE support for :G/:H perf event modifiers
arm64: KVM: Avoid isb's by using direct pmxevtyper sysreg
arm64: docs: Document perf event attributes
arm64: KVM: Fix perf cycle counter support for VHE

Borislav Petkov (1):
x86/kvm: Implement HWCR support

Christian Borntraeger (9):
KVM: s390: add vector enhancements facility 2 to cpumodel
KVM: s390: add vector BCD enhancements facility to cpumodel
KVM: s390: add MSA9 to cpumodel
KVM: s390: provide query function for instructions returning 32 byte
KVM: s390: add enhanced sort facilty to cpu model
KVM: s390: add deflate conversion facilty to cpu model
KVM: s390: enable MSA9 keywrapping functions depending on cpu model
KVM: polling: add architecture backend to disable polling
KVM: s390: provide kvm_arch_no_poll function

Colin Ian King (1):
KVM: PPC: Book3S HV: XIVE: Fix spelling mistake "acessing" -> "accessing"

Cédric Le Goater (18):
powerpc/xive: add OPAL extensions for the XIVE native exploitation support
KVM: PPC: Book3S HV: Add a new KVM device for the XIVE native exploitation mode
KVM: PPC: Book3S HV: XIVE: Introduce a new capability KVM_CAP_PPC_IRQ_XIVE
KVM: PPC: Book3S HV: XIVE: add a control to initialize a source
KVM: PPC: Book3S HV: XIVE: Add a control to configure a source
KVM: PPC: Book3S HV: XIVE: Add controls for the EQ configuration
KVM: PPC: Book3S HV: XIVE: Add a global reset control
KVM: PPC: Book3S HV: XIVE: Add a control to sync the sources
KVM: PPC: Book3S HV: XIVE: Add a control to dirty the XIVE EQ pages
KVM: PPC: Book3S HV: XIVE: Add get/set accessors for the VP XIVE state
KVM: Introduce a 'mmap' method for KVM devices
KVM: PPC: Book3S HV: XIVE: Add a TIMA mapping
KVM: PPC: Book3S HV: XIVE: Add a mapping for the source ESB pages
KVM: PPC: Book3S HV: XIVE: Add passthrough support
KVM: PPC: Book3S HV: XIVE: Activate XIVE exploitation mode
KVM: Introduce a 'release' method for KVM devices
KVM: PPC: Book3S HV: XIVE: Replace the 'destroy' method by a 'release' method
KVM: PPC: Book3S: Remove useless checks in 'release' method of KVM device

Dan Carpenter (1):
KVM: vmx: clean up some debug output

Dave Martin (41):
KVM: Documentation: Document arm64 core registers in detail
arm64: fpsimd: Always set TIF_FOREIGN_FPSTATE on task state flush
KVM: arm64: Delete orphaned declaration for __fpsimd_enabled()
KVM: arm64: Refactor kvm_arm_num_regs() for easier maintenance
KVM: arm64: Add missing #includes to kvm_host.h
arm64/sve: Clarify role of the VQ map maintenance functions
arm64/sve: Check SVE virtualisability
arm64/sve: Enable SVE state tracking for non-task contexts
KVM: arm64: Add a vcpu flag to control SVE visibility for the guest
KVM: arm64: Propagate vcpu into read_id_reg()
KVM: arm64: Support runtime sysreg visibility filtering
KVM: arm64/sve: System register context switch and access support
KVM: arm64/sve: Context switch the SVE registers
KVM: Allow 2048-bit register access via ioctl interface
KVM: arm64: Add missing #include of <linux/string.h> in guest.c
KVM: arm64: Factor out core register ID enumeration
KVM: arm64: Reject ioctl access to FPSIMD V-regs on SVE vcpus
KVM: arm64/sve: Add SVE support to register access ioctl interface
KVM: arm64: Enumerate SVE register indices for KVM_GET_REG_LIST
arm64/sve: In-kernel vector length availability query interface
KVM: arm/arm64: Add hook for arch-specific KVM initialisation
KVM: arm/arm64: Add KVM_ARM_VCPU_FINALIZE ioctl
KVM: arm64/sve: Add pseudo-register for the guest's vector lengths
KVM: arm64/sve: Allow userspace to enable SVE for vcpus
KVM: arm64: Add a capability to advertise SVE support
KVM: Document errors for KVM_GET_ONE_REG and KVM_SET_ONE_REG
KVM: arm64/sve: Document KVM API extensions for SVE
arm64/sve: Clarify vq map semantics
KVM: arm/arm64: Demote kvm_arm_init_arch_resources() to just set up SVE
KVM: arm: Make vcpu finalization stubs into inline functions
KVM: arm64/sve: sys_regs: Demote redundant vcpu_has_sve() checks to WARNs
KVM: arm64/sve: Clean up UAPI register ID definitions
KVM: arm64/sve: Miscellaneous tidyups in guest.c
KVM: arm64/sve: Make register ioctl access errors more consistent
KVM: arm64/sve: WARN when avoiding divide-by-zero in sve_reg_to_region()
KVM: arm64/sve: Simplify KVM_REG_ARM64_SVE_VLS array sizing
KVM: arm64/sve: Explain validity checks in set_sve_vls()
KVM: arm/arm64: Clean up vcpu finalization function parameter naming
KVM: Clarify capability requirements for KVM_ARM_VCPU_FINALIZE
KVM: Clarify KVM_{SET,GET}_ONE_REG error code documentation
KVM: arm64: Clarify access behaviour for out-of-range SVE register slice IDs

Eric Farman (1):
KVM: s390: Fix potential spectre warnings

Filippo Sironi (1):
X86/KVM: Handle PFNs outside of kernel reach when touching GPTEs

Jiang Biao (1):
kvm_main: fix some comments

Kai Huang (1):
kvm: x86: Fix L1TF mitigation for shadow MMU

KarimAllah Ahmed (13):
X86/nVMX: handle_vmon: Read 4 bytes from guest memory
X86/nVMX: Update the PML table without mapping and unmapping the page
KVM: Introduce a new guest mapping API
X86/nVMX: handle_vmptrld: Use kvm_vcpu_map when copying VMCS12 from guest memory
KVM/nVMX: Use kvm_vcpu_map when mapping the L1 MSR bitmap
KVM/nVMX: Use kvm_vcpu_map when mapping the virtual APIC page
KVM/nVMX: Use kvm_vcpu_map when mapping the posted interrupt descriptor table
KVM/X86: Use kvm_vcpu_map in emulator_cmpxchg_emulated
KVM/nSVM: Use the new mapping API for mapping guest memory
KVM/nVMX: Use kvm_vcpu_map for accessing the shadow VMCS
KVM/nVMX: Use kvm_vcpu_map for accessing the enlightened VMCS
KVM/nVMX: Use page_address_valid in a few more locations
kvm, x86: Properly check whether a pfn is an MMIO or not

Krish Sadhukhan (2):
kvm: nVMX: Check "load IA32_PAT" VM-exit control on vmentry
kvm: nVMX: Check "load IA32_PAT" VM-entry control on vmentry

Kristina Martsenko (1):
KVM: arm64: Fix ptrauth ID register masking logic

Liran Alon (1):
KVM: VMX: Nop emulation of MSR_IA32_POWER_CTL

Luwei Kang (2):
KVM: x86: Inject PMI for KVM guest
KVM: x86: Add support of clear Trace_ToPA_PMI status

Marc Zyngier (1):
arm64: KVM: Fix system register enumeration

Mark Rutland (1):
KVM: arm/arm64: Context-switch ptrauth registers

Michael Neuling (1):
powerpc: Add force enable of DAWR on P9 option

Palmer Dabbelt (1):
KVM: PPC: Book3S HV: smb->smp comment fixup

Paolo Bonzini (10):
KVM: vmx: print more APICv fields in dump_vmcs
KVM: x86: clear VM_EXIT_SAVE_IA32_PAT
KVM: x86: optimize check for valid PAT value
KVM: nVMX: Return -EINVAL when signaling failure in pre-VM-Entry helpers
kvm: move KVM_CAP_NR_MEMSLOTS to common code
Merge tag 'kvm-s390-next-5.2-1' of git://git.kernel.org/.../kvms390/linux into HEAD
KVM: fix KVM_CLEAR_DIRTY_LOG for memory slots of unaligned size
KVM: x86: use direct accessors for RIP and RSP
Merge tag 'kvm-ppc-next-5.2-2' of git://git.kernel.org/.../paulus/powerpc into HEAD
Merge tag 'kvmarm-for-v5.2' of git://git.kernel.org/.../kvmarm/kvmarm into HEAD

Paul Mackerras (7):
KVM: PPC: Book3S HV: Fix XICS-on-XIVE H_IPI when priority = 0
KVM: PPC: Book3S HV: Move HPT guest TLB flushing to C code
KVM: PPC: Book3S HV: Flush TLB on secondary radix threads
Merge remote-tracking branch 'remotes/powerpc/topic/ppc-kvm' into kvm-ppc-next
KVM: PPC: Book3S HV: XIVE: Prevent races when releasing device
KVM: PPC: Book3S HV: XIVE: Clear escalation interrupt pointers on device close
KVM: PPC: Book3S HV: Make sure to load LPID for radix VCPUs

Peter Xu (3):
KVM: Fix the bitmap range to copy during clear dirty
KVM: Fix kvm_clear_dirty_log_protect off-by-(minus-)one
KVM: Introduce KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2

Pierre Morel (2):
KVM: s390: vsie: Do not shadow CRYCB when no AP and no keys
KVM: s390: vsie: Return correct values for Invalid CRYCB format

Radim Krčmář (1):
Revert "KVM: doc: Document the life cycle of a VM and its resources"

Sean Christopherson (15):
KVM: nVMX: Move guest non-reg state checks to VM-Exit path
KVM: nVMX: Rename and split top-level consistency checks to match SDM
KVM: nVMX: Return -EINVAL when signaling failure in VM-Entry helpers
KVM: x86: Skip EFER vs. guest CPUID checks for host-initiated writes
KVM: x86: Inject #GP if guest attempts to set unsupported EFER bits
KVM: lapic: Busy wait for timer to expire when using hv_timer
KVM: lapic: Explicitly cancel the hv timer if it's pre-expired
KVM: lapic: Refactor ->set_hv_timer to use an explicit expired param
KVM: lapic: Check for a pending timer intr prior to start_hv_timer()
KVM: VMX: Skip delta_tsc shift-and-divide if the dividend is zero
KVM: VMX: Include architectural defs header in capabilities.h
KVM: x86: Omit caching logic for always-available GPRs
KVM: VMX: Use accessors for GPRs outside of dedicated caching logic
KVM: nVMX: Disable intercept for FS/GS base MSRs in vmcs02 when possible
Revert "KVM: nVMX: Expose RDPMC-exiting only when guest supports PMU"

Suraj Jitindar Singh (4):
KVM: PPC: Book3S HV: Implement virtual mode H_PAGE_INIT handler
KVM: PPC: Book3S HV: Implement real mode H_PAGE_INIT handler
KVM: PPC: Book3S HV: Handle virtual mode in XIVE VCPU push code
KVM: PPC: Book3S HV: Save/restore vrsave register in kvmhv_p9_guest_entry()

Documentation/arm64/perf.txt | 85 ++
Documentation/arm64/pointer-authentication.txt | 22 +-
Documentation/powerpc/DAWR-POWER9.txt | 32 +
Documentation/virtual/kvm/api.txt | 230 +++-
Documentation/virtual/kvm/devices/vm.txt | 3 +-
Documentation/virtual/kvm/devices/xive.txt | 197 +++
arch/arm/include/asm/kvm_emulate.h | 2 +
arch/arm/include/asm/kvm_host.h | 26 +-
arch/arm64/Kconfig | 6 +-
arch/arm64/include/asm/fpsimd.h | 29 +-
arch/arm64/include/asm/kvm_asm.h | 3 +-
arch/arm64/include/asm/kvm_emulate.h | 16 +
arch/arm64/include/asm/kvm_host.h | 101 +-
arch/arm64/include/asm/kvm_hyp.h | 1 -
arch/arm64/include/asm/kvm_ptrauth.h | 111 ++
arch/arm64/include/asm/sysreg.h | 3 +
arch/arm64/include/uapi/asm/kvm.h | 43 +
arch/arm64/kernel/asm-offsets.c | 7 +
arch/arm64/kernel/cpufeature.c | 2 +-
arch/arm64/kernel/fpsimd.c | 179 ++-
arch/arm64/kernel/perf_event.c | 50 +-
arch/arm64/kernel/signal.c | 5 -
arch/arm64/kvm/Makefile | 2 +-
arch/arm64/kvm/fpsimd.c | 17 +-
arch/arm64/kvm/guest.c | 415 ++++++-
arch/arm64/kvm/handle_exit.c | 36 +-
arch/arm64/kvm/hyp/entry.S | 15 +
arch/arm64/kvm/hyp/switch.c | 80 +-
arch/arm64/kvm/pmu.c | 239 ++++
arch/arm64/kvm/reset.c | 167 ++-
arch/arm64/kvm/sys_regs.c | 183 ++-
arch/arm64/kvm/sys_regs.h | 25 +
arch/powerpc/include/asm/hw_breakpoint.h | 8 +
arch/powerpc/include/asm/kvm_host.h | 11 +-
arch/powerpc/include/asm/kvm_ppc.h | 41 +-
arch/powerpc/include/asm/opal-api.h | 7 +-
arch/powerpc/include/asm/opal.h | 7 +
arch/powerpc/include/asm/xive.h | 17 +
arch/powerpc/include/uapi/asm/kvm.h | 46 +
arch/powerpc/kernel/hw_breakpoint.c | 62 +-
arch/powerpc/kernel/process.c | 9 +-
arch/powerpc/kernel/ptrace.c | 3 +-
arch/powerpc/kvm/Makefile | 2 +-
arch/powerpc/kvm/book3s.c | 42 +-
arch/powerpc/kvm/book3s_64_vio.c | 102 +-
arch/powerpc/kvm/book3s_64_vio_hv.c | 105 +-
arch/powerpc/kvm/book3s_hv.c | 159 ++-
arch/powerpc/kvm/book3s_hv_builtin.c | 57 +
arch/powerpc/kvm/book3s_hv_rm_mmu.c | 144 +++
arch/powerpc/kvm/book3s_hv_rmhandlers.S | 109 +-
arch/powerpc/kvm/book3s_xive.c | 250 +++-
arch/powerpc/kvm/book3s_xive.h | 37 +
arch/powerpc/kvm/book3s_xive_native.c | 1249 ++++++++++++++++++++
arch/powerpc/kvm/book3s_xive_template.c | 78 +-
arch/powerpc/kvm/powerpc.c | 40 +-
arch/powerpc/platforms/powernv/opal-call.c | 3 +
arch/powerpc/sysdev/xive/native.c | 110 ++
arch/s390/include/asm/cpacf.h | 1 +
arch/s390/include/asm/kvm_host.h | 2 +
arch/s390/include/uapi/asm/kvm.h | 5 +-
arch/s390/kvm/Kconfig | 1 +
arch/s390/kvm/interrupt.c | 11 +-
arch/s390/kvm/kvm-s390.c | 120 +-
arch/s390/kvm/vsie.c | 13 +-
arch/s390/tools/gen_facilities.c | 3 +
arch/x86/events/intel/core.c | 6 +-
arch/x86/include/asm/e820/api.h | 1 +
arch/x86/include/asm/kvm_host.h | 7 +-
arch/x86/include/asm/msr-index.h | 8 +
arch/x86/kernel/e820.c | 18 +-
arch/x86/kvm/cpuid.c | 12 +-
arch/x86/kvm/hyperv.c | 24 +-
arch/x86/kvm/kvm_cache_regs.h | 42 +-
arch/x86/kvm/lapic.c | 38 +-
arch/x86/kvm/mmu.c | 23 +-
arch/x86/kvm/mtrr.c | 10 +-
arch/x86/kvm/paging_tmpl.h | 38 +-
arch/x86/kvm/svm.c | 128 +-
arch/x86/kvm/vmx/capabilities.h | 2 +
arch/x86/kvm/vmx/nested.c | 348 +++---
arch/x86/kvm/vmx/pmu_intel.c | 8 +-
arch/x86/kvm/vmx/vmx.c | 90 +-
arch/x86/kvm/vmx/vmx.h | 11 +-
arch/x86/kvm/x86.c | 199 ++--
arch/x86/kvm/x86.h | 10 +
include/linux/kvm_host.h | 48 +
include/linux/perf_event.h | 1 +
include/uapi/linux/kvm.h | 15 +-
tools/arch/s390/include/uapi/asm/kvm.h | 3 +-
tools/testing/selftests/kvm/.gitignore | 7 +-
tools/testing/selftests/kvm/Makefile | 2 +
tools/testing/selftests/kvm/dirty_log_test.c | 8 +-
tools/testing/selftests/kvm/include/kvm_util.h | 4 +
tools/testing/selftests/kvm/lib/kvm_util.c | 32 +
.../selftests/kvm/x86_64/kvm_create_max_vcpus.c | 70 ++
.../kvm/x86_64/vmx_set_nested_state_test.c | 280 +++++
virt/kvm/Kconfig | 3 +
virt/kvm/arm/arm.c | 43 +-
virt/kvm/kvm_main.c | 108 +-
99 files changed, 5838 insertions(+), 995 deletions(-)
create mode 100644 Documentation/arm64/perf.txt
create mode 100644 Documentation/virtual/kvm/devices/xive.txt
create mode 100644 arch/arm64/include/asm/kvm_ptrauth.h
create mode 100644 arch/arm64/kvm/pmu.c
create mode 100644 arch/powerpc/kvm/book3s_xive_native.c
create mode 100644 tools/testing/selftests/kvm/x86_64/kvm_create_max_vcpus.c
create mode 100644 tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c