[GIT PULL] First batch of KVM changes for 4.13

From: Paolo Bonzini
Date: Tue Jul 04 2017 - 13:15:09 EST


Linus,

The following changes since commit da72ca4d4090a8ab0e6b0a23682ef42d39d7ae00:

KVM: s390: Backup the guest's machine check info (2017-06-27 16:05:38 +0200)

are available in the git repository at:

git://git.kernel.org/pub/scm/virt/kvm/kvm.git tags/for-linus

for you to fetch changes up to 1372324b328cd5dabaef5e345e37ad48c63df2a9:

Update my email address (2017-07-04 14:03:02 +0200)

----------------------------------------------------------------
PPC:
- Better machine check handling for HV KVM
- Ability to support guests with threads=2, 4 or 8 on POWER9
- Fix for a race that could cause delayed recognition of signals
- Fix for a bug where POWER9 guests could sleep with interrupts pending.

ARM:
- VCPU request overhaul
- allow timer and PMU to have their interrupt number selected from userspace
- workaround for Cavium erratum 30115
- handling of memory poisonning
- the usual crop of fixes and cleanups

s390:
- initial machine check forwarding
- migration support for the CMMA page hinting information
- cleanups and fixes

x86:
- nested VMX bugfixes and improvements
- more reliable NMI window detection on AMD
- APIC timer optimizations

Generic:
- VCPU request overhaul + documentation of common code patterns
- kvm_stat improvements

There is a small conflict in arch/s390 due to an arch-wide field rename.

----------------------------------------------------------------
Andrew Jones (10):
KVM: improve arch vcpu request defining
KVM: Add documentation for VCPU requests
KVM: arm/arm64: properly use vcpu requests
KVM: arm/arm64: replace pause checks with vcpu request checks
KVM: arm/arm64: use vcpu requests for power_off
KVM: arm/arm64: optimize VCPU RUN
KVM: arm/arm64: change exit request to sleep request
KVM: arm/arm64: use vcpu requests for irq injection
KVM: arm/arm64: PMU: remove request-less vcpu kick
KVM: arm/arm64: timer: remove request-less vcpu kick

Aravinda Prasad (2):
KVM: PPC: Book3S HV: Add new capability to control MCE behaviour
KVM: PPC: Book3S HV: Exit guest upon MCE when FWNMI capability is enabled

Christian Borntraeger (2):
KVM: s390: implement instruction execution protection for emulated ifetch
Merge tag 'nmiforkvm' of git://git.kernel.org/.../kvms390/linux into kernelorgnext

Christoffer Dall (13):
KVM: arm/arm64: Allow GICv2 to supply a uaccess register function
KVM: arm/arm64: Separate guest and uaccess writes to dist {sc}active
KVM: arm/arm64: Simplify active_change_prepare and plug race
KVM: arm/arm64: Use uaccess functions for GICv3 {sc}active
KVM: arm64: Allow creating the PMU without the in-kernel GIC
KVM: arm: Handle VCPU device attributes in guest.c
KVM: arm/arm64: Move irq_is_ppi() to header file
KVM: arm/arm64: Move timer IRQ default init to arch_timer.c
KVM: arm/arm64: Allow setting the timer IRQ numbers from userspace
KVM: arm/arm64: Introduce an allocator for in-kernel irq lines
KVM: arm/arm64: Check if irq lines to the GIC are already used
KVM: arm/arm64: Disallow userspace control of in-kernel IRQ lines
KVM: arm/arm64: Don't assume initialized vgic when setting PMU IRQ

Claudio Imbrenda (2):
KVM: s390: CMMA tracking, ESSA emulation, migration mode
KVM: s390: ioctls to get and set guest storage attributes

Cornelia Huck (1):
Update my email address

Dan Carpenter (2):
KVM: Tidy the whitespace in nested_svm_check_permissions()
KVM: white space cleanup in nested_vmx_setup_ctls_msrs()

David Daney (2):
arm64: Add MIDR values for Cavium cn83XX SoCs
arm64: Add workaround for Cavium Thunder erratum 30115

Haozhong Zhang (1):
kvm: vmx: allow host to access guest MSR_IA32_BNDCFGS

Hu Huajun (1):
KVM: ARM64: fix phy counter access failure in guest.

James Morse (3):
KVM: arm: Restore banked registers and physical timer access on hyp_panic()
KVM: arm64: Restore host physical timer access on hyp_panic()
KVM: arm/arm64: Signal SIGBUS when stage2 discovers hwpoison memory

Jim Mattson (6):
kvm: vmx: Do not disable intercepts for BNDCFGS
kvm: x86: Guest BNDCFGS requires guest MPX support
kvm: vmx: Check value written to IA32_BNDCFGS
KVM: nVMX: Don't update vmcs12->xss_exit_bitmap on nested VM-exit
KVM: nVMX: Update vmcs12->guest_linear_address on nested VM-exit
kvm: nVMX: Check memory operand to INVVPID

Ladi Prosek (5):
KVM: SVM: introduce disable_nmi_singlestep helper
KVM: nSVM: do not forward NMI window singlestep VM exits to L1
KVM: SVM: hide TF/RF flags used by NMI singlestep
KVM: SVM: don't NMI singlestep over event injection
KVM: SVM: suppress unnecessary NMI singlestep on GIF=0 and nested exit

Mahesh Salgaonkar (1):
powerpc/book3s: EXPORT_SYMBOL_GPL machine_check_print_event_info

Marc Zyngier (26):
Merge branch 'kvmarm-master/master' into HEAD
arm64: Add a facility to turn an ESR syndrome into a sysreg encoding
KVM: arm/arm64: vgic-v3: Add accessors for the ICH_APxRn_EL2 registers
KVM: arm64: Make kvm_condition_valid32() accessible from EL2
KVM: arm64: vgic-v3: Add hook to handle guest GICv3 sysreg accesses at EL2
KVM: arm64: vgic-v3: Add ICV_BPR1_EL1 handler
KVM: arm64: vgic-v3: Add ICV_IGRPEN1_EL1 handler
KVM: arm64: vgic-v3: Add ICV_IAR1_EL1 handler
KVM: arm64: vgic-v3: Add ICV_EOIR1_EL1 handler
KVM: arm64: vgic-v3: Add ICV_AP1Rn_EL1 handler
KVM: arm64: vgic-v3: Add ICV_HPPIR1_EL1 handler
KVM: arm64: vgic-v3: Enable trapping of Group-1 system registers
KVM: arm64: Enable GICv3 Group-1 sysreg trapping via command-line
KVM: arm64: vgic-v3: Add ICV_BPR0_EL1 handler
KVM: arm64: vgic-v3: Add ICV_IGNREN0_EL1 handler
KVM: arm64: vgic-v3: Add misc Group-0 handlers
KVM: arm64: vgic-v3: Enable trapping of Group-0 system registers
KVM: arm64: Enable GICv3 Group-0 sysreg trapping via command-line
KVM: arm64: vgic-v3: Add ICV_DIR_EL1 handler
KVM: arm64: vgic-v3: Add ICV_RPR_EL1 handler
KVM: arm64: vgic-v3: Add ICV_CTLR_EL1 handler
KVM: arm64: vgic-v3: Add ICV_PMR_EL1 handler
KVM: arm64: Enable GICv3 common sysreg trapping via command-line
KVM: arm64: vgic-v3: Log which GICv3 system registers are trapped
KVM: arm64: Log an error if trapping a read-from-write-only GICv3 access
KVM: arm64: Log an error if trapping a write-to-read-only GICv3 access

Mark Rutland (2):
arm64/kvm: sysreg: fix typo'd SYS_ICC_IGRPEN*_EL1
arm64/kvm: vgic: use SYS_DESC()

Martin Schwidefsky (1):
KVM: s390: avoid packed attribute

Nick Desaulniers (2):
KVM: x86: avoid large stack allocations in em_fxrstor
KVM: x86: remove ignored type attribute

Paolo Bonzini (6):
KVM: explain missing kvm_put_kvm in case of failure
Merge tag 'kvm-s390-next-4.13-1' of git://git.kernel.org/.../kvms390/linux into HEAD
KVM: lapic: reorganize start_hv_timer
KVM: lapic: reorganize restart_apic_timer
Merge tag 'kvmarm-for-4.13' of git://git.kernel.org/.../kvmarm/kvmarm into HEAD
Merge branch 'kvm-ppc-next' of git://git.kernel.org/.../paulus/powerpc into HEAD

Paul Mackerras (10):
KVM: PPC: Book3S HV: Enable guests to use large decrementer mode on POWER9
KVM: PPC: Book3S HV: Don't let VCPU sleep if it has a doorbell pending
KVM: PPC: Book3S HV: Context-switch HFSCR between host and guest on POWER9
KVM: PPC: Book3S HV: Allow userspace to set the desired SMT mode
KVM: PPC: Book3S HV: Virtualize doorbell facility on POWER9
KVM: PPC: Book3S HV: Don't sleep if XIVE interrupt pending on POWER9
KVM: PPC: Book3S HV: Add capability to report possible virtual SMT modes
KVM: PPC: Book3S HV: Simplify dynamic micro-threading code
KVM: PPC: Book3S HV: Close race with testing for signals on guest entry
KVM: PPC: Book3S: Fix typo in XICS-on-XIVE state saving code

Peter Feiner (4):
x86: kvm: mmu: dead code thanks to access tracking
x86: kvm: mmu: make spte mmio mask more explicit
kvm: x86: mmu: allow A/D bits to be disabled in an mmu
x86: kvm: mmu: use ept a/d in vmcs02 iff used in vmcs12

QingFeng Hao (2):
KVM: s390: Inject machine check into the guest
KVM: s390: Inject machine check into the nested guest

Radim KrÄmÃÅ (1):
KVM: add kvm_request_pending

Roman Storozhenko (1):
KVM: Replaces symbolic permissions with numeric

Stefan Raspl (20):
tools/kvm_stat: fix typo
tools/kvm_stat: fix event counts display for interrupted intervals
tools/kvm_stat: fix undue use of initial sleeptime
tools/kvm_stat: remove unnecessary header redraws
tools/kvm_stat: simplify line print logic
tools/kvm_stat: removed unused function
tools/kvm_stat: remove extra statement
tools/kvm_stat: simplify initializers
tools/kvm_stat: move functions to corresponding classes
tools/kvm_stat: show cursor in selection screens
tools/kvm_stat: display message indicating lack of events
tools/kvm_stat: make heading look a bit more like 'top'
tools/kvm_stat: rename 'Current' column to 'CurAvg/s'
tools/kvm_stat: add new interactive command 'h'
tools/kvm_stat: add new interactive command 's'
tools/kvm_stat: add new interactive command 'o'
tools/kvm_stat: display guest list in pid/guest selection screens
tools/kvm_stat: fix error on interactive command 'g'
tools/kvm_stat: add new command line switch '-i'
tools/kvm_stat: add new interactive command 'b'

Stefan Traby (1):
arm64: Remove a redundancy in sysreg.h

Wanpeng Li (1):
KVM: LAPIC: Fix lapic timer injection delay

Yi Min Zhao (1):
KVM: S390: add new group for flic

Documentation/admin-guide/kernel-parameters.txt | 12 +
Documentation/arm64/silicon-errata.txt | 1 +
Documentation/virtual/kvm/api.txt | 172 +++++
Documentation/virtual/kvm/devices/s390_flic.txt | 15 +
Documentation/virtual/kvm/devices/vcpu.txt | 41 +-
Documentation/virtual/kvm/devices/vm.txt | 33 +
Documentation/virtual/kvm/mmu.txt | 4 +
Documentation/virtual/kvm/vcpu-requests.rst | 307 +++++++++
MAINTAINERS | 6 +-
arch/arm/include/asm/kvm_host.h | 28 +-
arch/arm/include/uapi/asm/kvm.h | 8 +
arch/arm/kvm/guest.c | 51 ++
arch/arm/kvm/handle_exit.c | 1 +
arch/arm/kvm/hyp/switch.c | 2 +
arch/arm/kvm/reset.c | 16 +-
arch/arm64/Kconfig | 11 +
arch/arm64/include/asm/arch_gicv3.h | 2 +-
arch/arm64/include/asm/cpucaps.h | 3 +-
arch/arm64/include/asm/cputype.h | 2 +
arch/arm64/include/asm/esr.h | 24 +
arch/arm64/include/asm/kvm_host.h | 6 +-
arch/arm64/include/asm/kvm_hyp.h | 1 +
arch/arm64/include/asm/sysreg.h | 23 +-
arch/arm64/include/uapi/asm/kvm.h | 3 +
arch/arm64/kernel/cpu_errata.c | 21 +
arch/arm64/kvm/guest.c | 9 +
arch/arm64/kvm/handle_exit.c | 1 +
arch/arm64/kvm/hyp/switch.c | 15 +
arch/arm64/kvm/reset.c | 16 +-
arch/arm64/kvm/sys_regs.c | 27 +-
arch/arm64/kvm/vgic-sys-reg-v3.c | 45 +-
arch/mips/kvm/trap_emul.c | 2 +-
arch/mips/kvm/vz.c | 2 +-
arch/powerpc/include/asm/kvm_book3s.h | 1 -
arch/powerpc/include/asm/kvm_book3s_asm.h | 2 +-
arch/powerpc/include/asm/kvm_host.h | 13 +-
arch/powerpc/include/asm/kvm_ppc.h | 2 +
arch/powerpc/include/asm/ppc-opcode.h | 2 +
arch/powerpc/include/uapi/asm/kvm.h | 6 +
arch/powerpc/kernel/asm-offsets.c | 3 +
arch/powerpc/kernel/mce.c | 1 +
arch/powerpc/kvm/book3s_hv.c | 511 +++++++++++----
arch/powerpc/kvm/book3s_hv_builtin.c | 2 +-
arch/powerpc/kvm/book3s_hv_interrupts.S | 8 +-
arch/powerpc/kvm/book3s_hv_ras.c | 18 +-
arch/powerpc/kvm/book3s_hv_rmhandlers.S | 165 +++--
arch/powerpc/kvm/book3s_xive.c | 4 +-
arch/powerpc/kvm/booke.c | 2 +-
arch/powerpc/kvm/emulate.c | 4 +-
arch/powerpc/kvm/powerpc.c | 45 +-
arch/s390/include/asm/ctl_reg.h | 4 +-
arch/s390/include/asm/kvm_host.h | 33 +-
arch/s390/include/asm/nmi.h | 6 +
arch/s390/include/uapi/asm/kvm.h | 12 +
arch/s390/kvm/gaccess.c | 43 +-
arch/s390/kvm/interrupt.c | 91 ++-
arch/s390/kvm/kvm-s390.c | 373 ++++++++++-
arch/s390/kvm/kvm-s390.h | 2 +
arch/s390/kvm/priv.c | 103 ++-
arch/s390/kvm/vsie.c | 25 +-
arch/x86/include/asm/kvm_host.h | 50 +-
arch/x86/include/asm/msr-index.h | 2 +
arch/x86/kvm/cpuid.h | 8 +
arch/x86/kvm/emulate.c | 84 ++-
arch/x86/kvm/lapic.c | 116 ++--
arch/x86/kvm/lapic.h | 2 +-
arch/x86/kvm/mmu.c | 155 +++--
arch/x86/kvm/mmu.h | 2 +-
arch/x86/kvm/mmutrace.h | 6 +-
arch/x86/kvm/svm.c | 95 ++-
arch/x86/kvm/vmx.c | 83 ++-
arch/x86/kvm/x86.c | 14 +-
include/kvm/arm_arch_timer.h | 8 +-
include/kvm/arm_pmu.h | 6 +
include/kvm/arm_vgic.h | 14 +-
include/linux/irqchip/arm-gic-v3.h | 6 +
include/linux/kvm_host.h | 12 +
include/uapi/linux/kvm.h | 35 +
tools/kvm/kvm_stat/kvm_stat | 669 ++++++++++++-------
tools/kvm/kvm_stat/kvm_stat.txt | 12 +
virt/kvm/arm/aarch32.c | 2 +-
virt/kvm/arm/arch_timer.c | 139 +++-
virt/kvm/arm/arm.c | 82 ++-
virt/kvm/arm/hyp/vgic-v3-sr.c | 823 +++++++++++++++++++++++-
virt/kvm/arm/mmu.c | 23 +
virt/kvm/arm/pmu.c | 117 ++--
virt/kvm/arm/psci.c | 8 +-
virt/kvm/arm/vgic/vgic-irqfd.c | 2 +-
virt/kvm/arm/vgic/vgic-mmio-v2.c | 24 +-
virt/kvm/arm/vgic/vgic-mmio-v3.c | 22 +-
virt/kvm/arm/vgic/vgic-mmio.c | 68 +-
virt/kvm/arm/vgic/vgic-mmio.h | 12 +-
virt/kvm/arm/vgic/vgic-v3.c | 45 ++
virt/kvm/arm/vgic/vgic.c | 68 +-
virt/kvm/kvm_main.c | 12 +-
95 files changed, 4250 insertions(+), 967 deletions(-)