Linus, The following changes since commit 40e020c129cfc991e8ab4736d2665351ffd1468d: Linux 4.20-rc6 (2018-12-09 15:31:00 -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 a0aea130afebcd091d5396d13f25b9da24c9144a: KVM: x86: Add CPUID support for new instruction WBNOINVD (2018-12-21 14:26:32 +0100) The PT and Hyper-V changes have been acked by the maintainers; since Ingo acked the MPX issue and is going to remove the topic branch, all that is left is two trivial conflicts. One is due to the disintegration of arch/x86/kvm/vmx.c; only one commit in all of linux-next touched that file, so this will be enough to fix it: $ git log --oneline v4.20-rc6..origin/master -- arch/x86/kvm/vmx.c c2dd5146e9fe KVM: Fix UAF in nested posted interrupt processing $ git rm arch/x86/kvm/vmx.c $ git show c2dd5146e9fe | patch arch/x86/kvm/vmx/nested.c patching file arch/x86/kvm/vmx/nested.c Hunk #1 succeeded at 2881 (offset -9104 lines). The second is with the PPC tree, due to commit d7b456152230 in my tree, you can solve it in your sleep but anyway the resolution is after the diffstat. Thanks, Paolo ---------------------------------------------------------------- * ARM: selftests improvements, large PUD support for HugeTLB, single-stepping fixes, improved tracing, various timer and vGIC fixes * x86: Processor Tracing virtualization, STIBP support, some correctness fixes, refactorings and splitting of vmx.c, use the Hyper-V range TLB flush hypercall, reduce order of vcpu struct, WBNOINVD support, do not use -ftrace for __noclone functions, nested guest support for PAUSE filtering on AMD, more Hyper-V enlightenments (direct mode for synthetic timers) * PPC: nested VFIO * s390: bugfixes only this time ---------------------------------------------------------------- Andrew Jones (8): kvm: selftests: x86_64: dirty_log_test: fix -t kvm: selftests: dirty_log_test: don't identity map the test mem kvm: selftests: dirty_log_test: always use -t kvm: selftests: dirty_log_test: reset guest test phys offset kvm: selftests: dirty_log_test: improve mode param management kvm: selftests: add pa-48/va-48 VM modes kvm: selftests: aarch64: dirty_log_test: support greater than 40-bit IPAs kvm: selftests: ucall: fix exit mmio address guessing Bharata B Rao (1): KVM: PPC: Pass change type down to memslot commit function Chao Peng (7): perf/x86/intel/pt: Move Intel PT MSRs bit defines to global header perf/x86/intel/pt: Export pt_cap_get() KVM: x86: Add Intel PT virtualization work mode KVM: x86: Add Intel Processor Trace cpuid emulation KVM: x86: Add Intel PT context switch for each vcpu KVM: x86: Implement Intel PT MSRs read/write emulation KVM: x86: Set intercept for Intel PT MSRs read/write Christoffer Dall (9): KVM: arm/arm64: Fix VMID alloc race by reverting to lock-less KVM: arm/arm64: vgic-v2: Set active_source to 0 when restoring state KVM: arm64: Clarify explanation of STAGE2_PGTABLE_LEVELS KVM: arm/arm64: vgic: Consider priority and active state for pending irq KVM: arm/arm64: Fixup the kvm_exit tracepoint KVM: arm/arm64: Remove arch timer workqueue KVM: arm/arm64: arch_timer: Simplify kvm_timer_vcpu_terminate KVM: arm64: Make vcpu const in vcpu_read_sys_reg KVM: arm/arm64: Fix unintended stage 2 PMD mappings Eduardo Habkost (1): kvm: x86: Report STIBP on GET_SUPPORTED_CPUID Gustavo A. R. Silva (1): KVM: arm/arm64: vgic: Fix off-by-one bug in vgic_get_irq() Jim Mattson (11): KVM: nVMX: Unrestricted guest mode requires EPT kvm: nVMX: Set VM instruction error for VMPTRLD of unbacked page kvm: vmx: Set IA32_TSC_AUX for legacy mode guests kvm: vmx: Document the need for MSR_STAR in i386 builds kvm: vmx: Don't set hardware IA32_CSTAR MSR on VM-entry kvm: vmx: Skip all SYSCALL MSRs in setup_msrs() when !EFER.SCE kvm: x86: Don't modify MSR_PLATFORM_INFO on vCPU reset kvm: Disallow wraparound in kvm_gfn_to_hva_cache_init kvm: Change offset in kvm_write_guest_offset_cached to unsigned kvm: nVMX: NMI-window and interrupt-window exiting should wake L2 from HLT kvm: vmx: Allow guest read access to IA32_TSC Julien Thierry (1): KVM: arm/arm64: vgic: Do not cond_resched_lock() with IRQs disabled Krish Sadhukhan (8): nVMX x86: Check VMX-preemption timer controls on vmentry of L2 guests KVM nVMX: MSRs should not be stored if VM-entry fails during or after loading guest state KVM: nVMX: Prepend "nested_vmx_" to check_vmentry_{pre,post}reqs() KVM: nVMX: Move the checks for VM-Execution Control Fields to a separate helper function KVM: nVMX: Move the checks for VM-Exit Control Fields to a separate helper function KVM: nVMX: Move the checks for VM-Entry Control Fields to a separate helper function KVM: nVMX: Move the checks for Host Control Registers and MSRs to a separate helper function KVM: nVMX: Move the checks for Guest Non-Register States to a separate helper function Lan Tianyu (10): KVM/VMX: Check ept_pointer before flushing ept tlb KVM: Add tlb_remote_flush_with_range callback in kvm_x86_ops x86/hyper-v: Add HvFlushGuestAddressList hypercall support KVM/VMX: Add hv tlb range flush support KVM/MMU: Add tlb flush with range helper function KVM: Replace old tlb flush function with new one to flush a specified range. KVM: Make kvm_set_spte_hva() return int KVM/MMU: Move tlb flush in kvm_set_pte_rmapp() to kvm_mmu_notifier_change_pte() KVM/MMU: Flush tlb directly in kvm_set_pte_rmapp() KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range() Luwei Kang (5): perf/x86/intel/pt: Introduce intel_pt_validate_cap() perf/x86/intel/pt: Add new bit definitions for PT MSRs perf/x86/intel/pt: add new capability for Intel PT KVM: x86: Introduce a function to initialize the PT configuration KVM: x86: Disable Intel PT when VMXON in L1 guest Marc Orr (2): kvm: x86: Use task structs fpu field for user kvm: x86: Dynamically allocate guest_fpu Marc Zyngier (5): KVM: arm/arm64: vgic: Cap SPIs to the VM-defined maximum arm64: KVM: Add trapped system register access tracepoint arm/arm64: KVM: vgic: Force VM halt when changing the active state of GICv3 PPIs/SGIs arm/arm64: KVM: Add ARM_EXCEPTION_IS_TRAP macro arm: KVM: Add S2_PMD_{MASK,SIZE} constants Mark Rutland (3): arm64: KVM: Skip MMIO insn after emulation arm64: KVM: Consistently advance singlestep when emulating instructions KVM: arm/arm64: Log PSTATE for unhandled sysregs Michael Mueller (2): KVM: s390: unregister debug feature on failing arch init KVM: s390: fix kmsg component kvm-s390 Paolo Bonzini (10): KVM: x86: Trace changes to active TSC offset regardless if vCPU in guest-mode Merge branch 'khdr_fix' of git://git.kernel.org/.../shuah/linux-kselftest into HEAD kvm: make KVM_CAP_ENABLE_CAP_VM architecture agnostic kvm: rename last argument to kvm_get_dirty_log_protect kvm: introduce manual dirty log reprotect kvm: selftests: ucall: improve ucall placement in memory, fix unsigned comparison Merge tag 'kvmarm-for-v4.21' of git://git.kernel.org/.../kvmarm/kvmarm into HEAD Merge tag 'kvm-s390-next-4.21-1' of git://git.kernel.org/.../kvms390/linux into HEAD KVM: x86: fix size of x86_fpu_cache objects Merge tag 'kvm-ppc-next-4.21-2' of git://git.kernel.org/.../paulus/powerpc into kvm-next Paul Mackerras (4): KVM: PPC: Book3S HV: Fix race between kvm_unmap_hva_range and MMU mode switch KVM: PPC: Book3S HV: Map single pages when doing dirty page logging KVM: PPC: Book3S HV: Cleanups - constify memslots, fix comments KVM: PPC: Book3S HV: Flush guest mappings when turning dirty tracking on/off Peng Hao (3): kvm: svm: remove unused struct definition kvm: x86: remove unnecessary recalculate_apic_map x86/kvmclock: convert to SPDX identifiers Punit Agrawal (8): KVM: arm/arm64: Share common code in user_mem_abort() KVM: arm/arm64: Re-factor setting the Stage 2 entry to exec on fault KVM: arm/arm64: Introduce helpers to manipulate page table entries KVM: arm64: Support dirty page tracking for PUD hugepages KVM: arm64: Support PUD hugepage in stage2_is_exec() KVM: arm64: Support handling access faults for PUD hugepages KVM: arm64: Update age handlers to support PUD hugepages KVM: arm64: Add support for creating PUD hugepages at stage 2 Radim Krčmář (1): Merge tag 'kvm-ppc-next-4.21-1' of git://git.kernel.org/.../paulus/powerpc Robert Hoo (1): KVM: x86: Add CPUID support for new instruction WBNOINVD Roman Kagan (2): x86: kvm: hyperv: simplify SynIC message delivery x86: kvm: hyperv: don't retry message delivery for periodic timers Sean Christopherson (35): KVM: nVMX: Free the VMREAD/VMWRITE bitmaps if alloc_kvm_area() fails KVM: nVMX: Allocate and configure VM{READ,WRITE} bitmaps iff enable_shadow_vmcs KVM: VMX: Alphabetize the includes in vmx.c KVM: x86: Add requisite includes to kvm_cache_regs.h KVM: x86: Add requisite includes to hyperv.h KVM: VMX: Move VMX specific files to a "vmx" subdirectory KVM: VMX: rename vmx_shadow_fields.h to vmcs_shadow_fields.h KVM: VMX: Drop the "vmx" prefix from vmx_evmcs.h KVM: VMX: Move caching of MSR_IA32_XSS to hardware_setup() KVM: VMX: Properly handle dynamic VM Entry/Exit controls KVM: VMX: Pass vmx_capability struct to setup_vmcs_config() KVM: VMX: Move capabilities structs and helpers to dedicated file KVM: VMX: Expose various module param vars via capabilities.h KVM: VMX: Move VMCS definitions to dedicated file KVM: nVMX: Move vmcs12 code to dedicated files KVM: VMX: Add vmx.h to hold VMX definitions KVM: VMX: Move eVMCS code to dedicated files KVM: VMX: Move VMX instruction wrappers to a dedicated header file KVM: VMX: Move nested hardware/vcpu {un}setup to helper functions KVM: x86: nVMX: Allow nested_enable_evmcs to be NULL KVM: VMX: Move the hardware {un}setup functions to the bottom KVM: nVMX: Set callbacks for nested functions during hardware setup KVM: nVMX: Call nested_vmx_setup_ctls_msrs() iff @nested is true KVM: nVMX: Move "vmcs12 to shadow/evmcs sync" to helper function KVM: VMX: Expose misc variables needed for nested VMX KVM: VMX: Expose various getters and setters to nested VMX KVM: VMX: Expose nested_vmx_allowed() to nested VMX as a non-inline KVM: nVMX: Move nested code to dedicated files KVM: nVMX: Remove param indirection from nested_vmx_check_msr_switch() KVM: x86: Remove KF() macro placeholder MAINTAINERS: Add arch/x86/kvm sub-directories to existing KVM/x86 entry KVM: x86: Use jmp to invoke kvm_spurious_fault() from .fixup KVM: VMX: Explicitly reference RCX as the vmx_vcpu pointer in asm blobs KVM: VMX: Move VM-Enter + VM-Exit handling to non-inline sub-routines Revert "compiler-gcc: disable -ftracer for __noclone functions" Shuah Khan (1): selftests: Fix test errors related to lib.mk khdr target Stefan Raspl (1): tools/kvm_stat: switch to python3 Suraj Jitindar Singh (14): KVM: PPC: Book3S PR: Set hflag to indicate that POWER9 supports 1T segments KVM: PPC: Book3S: Only report KVM_CAP_SPAPR_TCE_VFIO on powernv machines KVM: PPC: Book3S HV: Add function kvmhv_vcpu_is_radix() KVM: PPC: Book3S HV: Implement functions to access quadrants 1 & 2 KVM: PPC: Add load_from_eaddr and store_to_eaddr to the kvmppc_ops struct KVM: PPC: Update kvmppc_st and kvmppc_ld to use quadrants KVM: PPC: Book3S HV: Allow passthrough of an emulated device to an L2 guest KVM: PPC: Book3S: Introduce new hcall H_COPY_TOFROM_GUEST to access quadrants 1 & 2 KVM: PPC: Book3S HV: Allow passthrough of an emulated device to an L3 guest KVM: PPC: Book3S HV: Hold kvm->mmu_lock across updating nested pte rc bits KVM: PPC: Book3S HV: Align gfn to L1 page size when inserting nest-rmap entry KVM: PPC: Book3S HV: Apply combination of host and l1 pte rc for nested guest KVM: PPC: Book3S HV: Introduce kvmhv_update_nest_rmap_rc_list() KVM: PPC: Book3S HV: Keep rc bits in shadow pgtable in sync with host Tambe, William (1): KVM: nSVM: Fix nested guest support for PAUSE filtering. Uros Bizjak (2): KVM/nVMX: Remove unneeded forward jump in nested_vmx_check_vmentry_hw asm KVM/x86: Use SVM assembly instruction mnemonics instead of .byte streams Vitaly Kuznetsov (14): x86/hyper-v: Mark TLFS structures packed x86/hyper-v: Do some housekeeping in hyperv-tlfs.h x86/hyper-v: Drop HV_X64_CONFIGURE_PROFILER definition x86/kvm/hyper-v: Introduce nested_get_evmcs_version() helper x86/kvm/hyper-v: Introduce KVM_GET_SUPPORTED_HV_CPUID KVM: selftests: implement an unchecked version of vcpu_ioctl() KVM: selftests: Add hyperv_cpuid test x86/hyper-v: move synic/stimer control structures definitions to hyperv-tlfs.h x86/kvm/hyper-v: use stimer config definition from hyperv-tlfs.h x86/kvm/hyper-v: direct mode for synthetic timers x86/kvm/hyper-v: avoid open-coding stimer_mark_pending() in kvm_hv_notify_acked_sint() x86/hyper-v: Stop caring about EOI for direct stimers KVM: x86: svm: report MSR_IA32_MCG_EXT_CTL as unsupported selftests: kvm: report failed stage when exit reason is unexpected Wei Huang (1): kvm: vmx: add cpu into VMX preemption timer bug list Wei Yang (1): KVM: fix some typos Will Deacon (1): arm64: KVM: Avoid setting the upper 32 bits of VTCR_EL2 to 1 Yangtao Li (1): KVM: PPC: Book3S HV: Change to use DEFINE_SHOW_ATTRIBUTE macro YueHaibing (1): KVM: VMX: Remove duplicated include from vmx.c Documentation/virtual/kvm/api.txt | 136 +- MAINTAINERS | 1 + arch/arm/include/asm/kvm_asm.h | 4 + arch/arm/include/asm/kvm_host.h | 7 +- arch/arm/include/asm/kvm_mmu.h | 61 + arch/arm/include/asm/stage2_pgtable.h | 8 + arch/arm/kvm/coproc.c | 4 +- arch/arm64/include/asm/kvm_arm.h | 6 +- arch/arm64/include/asm/kvm_asm.h | 7 + arch/arm64/include/asm/kvm_emulate.h | 35 +- arch/arm64/include/asm/kvm_host.h | 5 +- arch/arm64/include/asm/kvm_mmu.h | 48 + arch/arm64/include/asm/pgtable-hwdef.h | 4 + arch/arm64/include/asm/pgtable.h | 9 + arch/arm64/include/asm/stage2_pgtable.h | 16 +- arch/arm64/kvm/debug.c | 21 - arch/arm64/kvm/handle_exit.c | 14 +- arch/arm64/kvm/hyp/switch.c | 43 +- arch/arm64/kvm/hyp/vgic-v2-cpuif-proxy.c | 12 +- arch/arm64/kvm/sys_regs.c | 12 +- arch/arm64/kvm/sys_regs.h | 4 + arch/arm64/kvm/trace.h | 35 + arch/mips/include/asm/kvm_host.h | 2 +- arch/mips/kvm/mips.c | 29 +- arch/mips/kvm/mmu.c | 3 +- arch/powerpc/include/asm/hvcall.h | 1 + arch/powerpc/include/asm/kvm_book3s.h | 23 +- arch/powerpc/include/asm/kvm_book3s_64.h | 18 +- arch/powerpc/include/asm/kvm_host.h | 5 +- arch/powerpc/include/asm/kvm_ppc.h | 10 +- arch/powerpc/kernel/exceptions-64s.S | 9 + arch/powerpc/kvm/book3s.c | 8 +- arch/powerpc/kvm/book3s_64_mmu_hv.c | 12 +- arch/powerpc/kvm/book3s_64_mmu_radix.c | 160 +- arch/powerpc/kvm/book3s_hv.c | 95 +- arch/powerpc/kvm/book3s_hv_nested.c | 190 +- arch/powerpc/kvm/book3s_hv_rm_mmu.c | 2 +- arch/powerpc/kvm/book3s_pr.c | 4 +- arch/powerpc/kvm/book3s_xics.c | 12 +- arch/powerpc/kvm/book3s_xive.c | 12 +- arch/powerpc/kvm/booke.c | 3 +- arch/powerpc/kvm/e500_mmu_host.c | 3 +- arch/powerpc/kvm/powerpc.c | 47 +- arch/powerpc/mm/fault.c | 1 + arch/s390/kvm/kvm-s390.c | 35 +- arch/x86/events/intel/pt.c | 60 +- arch/x86/events/intel/pt.h | 58 - arch/x86/hyperv/nested.c | 80 + arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/include/asm/hyperv-tlfs.h | 335 +- arch/x86/include/asm/intel_pt.h | 26 + arch/x86/include/asm/kvm_host.h | 25 +- arch/x86/include/asm/mshyperv.h | 15 + arch/x86/include/asm/msr-index.h | 37 + arch/x86/include/asm/svm.h | 7 - arch/x86/include/asm/trace/hyperv.h | 14 + arch/x86/include/asm/vmx.h | 9 + arch/x86/kernel/kvmclock.c | 15 +- arch/x86/kvm/Makefile | 2 +- arch/x86/kvm/cpuid.c | 31 +- arch/x86/kvm/hyperv.c | 305 +- arch/x86/kvm/hyperv.h | 4 + arch/x86/kvm/kvm_cache_regs.h | 2 + arch/x86/kvm/lapic.c | 5 +- arch/x86/kvm/mmu.c | 98 +- arch/x86/kvm/paging_tmpl.h | 3 +- arch/x86/kvm/svm.c | 68 +- arch/x86/kvm/trace.h | 10 +- arch/x86/kvm/vmx.c | 15250 ------------------- arch/x86/kvm/vmx/capabilities.h | 343 + arch/x86/kvm/{vmx_evmcs.h => vmx/evmcs.c} | 78 +- arch/x86/kvm/vmx/evmcs.h | 202 + arch/x86/kvm/vmx/nested.c | 5719 +++++++ arch/x86/kvm/vmx/nested.h | 282 + arch/x86/kvm/vmx/ops.h | 285 + arch/x86/kvm/{ => vmx}/pmu_intel.c | 0 arch/x86/kvm/vmx/vmcs.h | 136 + arch/x86/kvm/vmx/vmcs12.c | 157 + arch/x86/kvm/vmx/vmcs12.h | 462 + .../vmcs_shadow_fields.h} | 0 arch/x86/kvm/vmx/vmenter.S | 57 + arch/x86/kvm/vmx/vmx.c | 7935 ++++++++++ arch/x86/kvm/vmx/vmx.h | 519 + arch/x86/kvm/x86.c | 161 +- drivers/hv/hv.c | 2 +- drivers/hv/hyperv_vmbus.h | 68 - include/kvm/arm_arch_timer.h | 4 - include/linux/compiler_attributes.h | 9 +- include/linux/kvm_host.h | 12 +- include/uapi/linux/kvm.h | 19 + tools/kvm/kvm_stat/kvm_stat | 2 +- tools/testing/selftests/android/Makefile | 2 +- tools/testing/selftests/futex/functional/Makefile | 1 + tools/testing/selftests/gpio/Makefile | 6 +- tools/testing/selftests/kvm/Makefile | 5 +- tools/testing/selftests/kvm/clear_dirty_log_test.c | 2 + tools/testing/selftests/kvm/dirty_log_test.c | 165 +- tools/testing/selftests/kvm/include/kvm_util.h | 8 + .../testing/selftests/kvm/lib/aarch64/processor.c | 18 +- tools/testing/selftests/kvm/lib/kvm_util.c | 67 +- .../testing/selftests/kvm/lib/kvm_util_internal.h | 1 + tools/testing/selftests/kvm/lib/ucall.c | 36 +- tools/testing/selftests/kvm/x86_64/evmcs_test.c | 4 +- tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c | 157 + tools/testing/selftests/kvm/x86_64/state_test.c | 4 +- tools/testing/selftests/lib.mk | 8 +- .../selftests/networking/timestamping/Makefile | 1 + tools/testing/selftests/tc-testing/bpf/Makefile | 1 + tools/testing/selftests/vm/Makefile | 1 + virt/kvm/arm/arch_timer.c | 35 +- virt/kvm/arm/arm.c | 47 +- virt/kvm/arm/hyp/vgic-v3-sr.c | 6 +- virt/kvm/arm/mmio.c | 11 +- virt/kvm/arm/mmu.c | 390 +- virt/kvm/arm/trace.h | 18 +- virt/kvm/arm/vgic/vgic-mmio.c | 44 +- virt/kvm/arm/vgic/vgic.c | 13 +- virt/kvm/async_pf.c | 2 +- virt/kvm/kvm_main.c | 208 +- 119 files changed, 19022 insertions(+), 16327 deletions(-) delete mode 100644 arch/x86/kvm/vmx.c create mode 100644 arch/x86/kvm/vmx/capabilities.h rename arch/x86/kvm/{vmx_evmcs.h => vmx/evmcs.c} (88%) create mode 100644 arch/x86/kvm/vmx/evmcs.h create mode 100644 arch/x86/kvm/vmx/nested.c create mode 100644 arch/x86/kvm/vmx/nested.h create mode 100644 arch/x86/kvm/vmx/ops.h rename arch/x86/kvm/{ => vmx}/pmu_intel.c (100%) create mode 100644 arch/x86/kvm/vmx/vmcs.h create mode 100644 arch/x86/kvm/vmx/vmcs12.c create mode 100644 arch/x86/kvm/vmx/vmcs12.h rename arch/x86/kvm/{vmx_shadow_fields.h => vmx/vmcs_shadow_fields.h} (100%) create mode 100644 arch/x86/kvm/vmx/vmenter.S create mode 100644 arch/x86/kvm/vmx/vmx.c create mode 100644 arch/x86/kvm/vmx/vmx.h create mode 100644 tools/testing/selftests/kvm/clear_dirty_log_test.c create mode 100644 tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c diff --cc arch/powerpc/mm/fault.c index c866d9a710fe,2e6fb1d758c3..000000000000 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c @@@ -650,9 -636,9 +650,10 @@@ void bad_page_fault(struct pt_regs *reg switch (TRAP(regs)) { case 0x300: case 0x380: + case 0xe00: - printk(KERN_ALERT "Unable to handle kernel paging request for " - "data at address 0x%08lx\n", regs->dar); + pr_alert("BUG: %s at 0x%08lx\n", + regs->dar < PAGE_SIZE ? "Kernel NULL pointer dereference" : + "Unable to handle kernel data access", regs->dar); break; case 0x400: case 0x480: