From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933325AbbFWQu0 (ORCPT ); Tue, 23 Jun 2015 12:50:26 -0400 Received: from mail-wg0-f48.google.com ([74.125.82.48]:36296 "EHLO mail-wg0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932350AbbFWQuR (ORCPT ); Tue, 23 Jun 2015 12:50:17 -0400 From: Paolo Bonzini To: torvalds@linux-foundation.org Cc: linux-kernel@vger.kernel.org, gleb@kernel.org, kvm@vger.kernel.org Subject: [GIT PULL] First batch of KVM changes for 4.2 Date: Tue, 23 Jun 2015 18:49:56 +0200 Message-Id: <1435078196-13199-1-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Linus, The following changes since commit c447e76b4cabb49ddae8e49c5758f031f35d55fb: kvm/fpu: Enable eager restore kvm FPU for MPX (2015-05-20 12:30:26 +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 f2ae45edbca7ba5324eef01719ede0151dc5cead: KVM: s390: clear floating interrupt bitmap and parameters (2015-06-23 17:02:39 +0200) ---------------------------------------------------------------- The bulk of the changes here is for x86. And for once it's not for silicon that no one owns: these are really new features for everyone. * ARM: several features are in progress but missed the 4.2 deadline. So here is just a smattering of bug fixes, plus enabling the VFIO integration. * s390: Some fixes/refactorings/optimizations, plus support for 2GB pages. * x86: 1) host and guest support for marking kvmclock as a stable scheduler clock. 2) support for write combining. 3) support for system management mode, needed for secure boot in guests. 4) a bunch of cleanups required for 2+3. 5) support for virtualized performance counters on AMD; 6) legacy PCI device assignment is deprecated and defaults to "n" in Kconfig; VFIO replaces it. On top of this there are also bug fixes and eager FPU context loading for FPU-heavy guests. * Common code: Support for multiple address spaces; for now it is used only for x86 SMM but the s390 folks also have plans. There are some x86 conflicts, one with the rc8 pull request and the rest with Ingo's FPU rework. ---------------------------------------------------------------- Alex Bennée (1): KVM: arm64: fix misleading comments in save/restore Andre Przywara (1): KVM: arm64: add active register handling to GICv3 emulation as well Andrew Morton (1): arch/x86/kvm/mmu.c: work around gcc-4.4.4 bug Bandan Das (1): KVM: nSVM: Check for NRIPS support before updating control field Christian Borntraeger (5): KVM: provide irq_unsafe kvm_guest_{enter|exit} KVM: arm/mips/x86/power use __kvm_guest_{enter|exit} KVM: s390: optimize round trip time in request handling KVM: s390: make exit_sie_sync more robust KVM: s390: provide functions for blocking all CPUs Christoffer Dall (1): arm/arm64: KVM: Properly account for guest CPU time David Hildenbrand (5): KVM: s390: fix external call injection without sigp interpretation KVM: s390: factor out and optimize floating irq VCPU kick KVM: s390: drop handling of interception code 12 KVM: s390: call exit_sie() directly on vcpu block/request KVM: s390: introduce KMSG_COMPONENT for kvm-s390 Firo Yang (1): ARM: KVM: Remove pointless void pointer cast Guenther Hutzl (2): KVM: s390: make EDAT1 depend on host support KVM: s390: Enable guest EDAT2 support Heiko Carstens (1): KVM: remove pointless cpu hotplug messages James Sullivan (2): kvm: x86: Extended struct kvm_lapic_irq with msi_redir_hint for MSI delivery kvm: x86: Deliver MSI IRQ to only lowest prio cpu if msi_redir_hint is true Jan Kiszka (2): KVM: nVMX: Fix host crash when loading MSRs with userspace irqchip KVM: x86: Allow ARAT CPU feature Jens Freimann (2): KVM: s390: optimize interrupt handling round trip time KVM: s390: clear floating interrupt bitmap and parameters Joerg Roedel (1): kvm: irqchip: Break up high order allocations of kvm_irq_routing_table Julia Lawall (1): KVM: x86: drop unneeded null test Kevin Mulvey (2): KVM: fix checkpatch.pl errors in kvm/async_pf.h KVM: fix checkpatch.pl errors in kvm/coalesced_mmio.h Kim Phillips (1): KVM: arm/arm64: Enable the KVM-VFIO device Lorenzo Pieralisi (1): ARM: kvm: psci: fix handling of unimplemented functions Luiz Capitulino (2): kvmclock: set scheduler clock stable x86: kvmclock: set scheduler clock stable Marc Zyngier (5): arm: KVM: force execution of HCPTR access on VM exit KVM: arm: vgic: Drop useless Group0 warning arm/arm64: KVM: vgic: Do not save GICH_HCR / ICH_HCR_EL2 KVM: arm/arm64: vgic: Avoid injecting reserved IRQ numbers KVM: arm/arm64: vgic: Remove useless arm-gic.h #include Marcelo Tosatti (4): x86: kvmclock: drop rdtsc_barrier() KVM: x86: add module parameter to disable periodic kvmclock sync x86: kvmclock: add flag to indicate pvclock counts from zero KVM: x86: zero kvmclock_offset when vcpu0 initializes kvmclock system MSR Nadav Amit (6): KVM: x86: Support for disabling quirks KVM: x86: INIT and reset sequences are different KVM: x86: Call-far should not be emulated as stack op KVM: x86: Fix DR7 mask on task-switch while debugging KVM: x86: Fix update RCX/RDI/RSI on REP-string KVM: x86: Fix zero iterations REP-string Nicholas Krause (1): kvm: x86: Make functions that have no external callers static Paolo Bonzini (38): KVM: booke: use __kvm_guest_exit KVM: x86: tweak types of fields in kvm_lapic_irq KVM: x86: dump VMCS on invalid entry KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages Merge tag 'kvm-s390-next-20150508' of git://git.kernel.org/.../kvms390/linux into HEAD Revert "kvmclock: set scheduler clock stable" KVM: mips: use id_to_memslot correctly KVM: export __gfn_to_pfn_memslot, drop gfn_to_pfn_async Merge branch 'kvm-master' into kvm-next KVM: introduce kvm_alloc/free_memslots KVM: use kvm_memslots whenever possible KVM: const-ify uses of struct kvm_userspace_memory_region KVM: add memslots argument to kvm_arch_memslots_updated KVM: add "new" argument to kvm_arch_commit_memory_region KVM: pass kvm_memory_slot to gfn_to_page_many_atomic KVM: remove __gfn_to_pfn KVM: x86: pass struct kvm_mmu_page to account/unaccount_shadowed KVM: remove unused argument from mark_page_dirty_in_slot Merge tag 'kvm-s390-next-20150602' of git://git.kernel.org/.../kvms390/linux into kvm-next kvm: x86: default legacy PCI device assignment support to "n" kvm: x86: fix kvm_apic_has_events to check for NULL pointer KVM: x86: clear hidden CPU state at reset time KVM: x86: introduce num_emulated_msrs KVM: x86: pass host_initiated to functions that read MSRs KVM: x86: pass the whole hflags field to emulator and back KVM: x86: API changes for SMM support KVM: x86: stubs for SMM support KVM: x86: latch INITs while in system management mode KVM: x86: save/load state on SMM switch KVM: add vcpu-specific functions to read/write/translate GFNs KVM: implement multiple address spaces KVM: x86: pass struct kvm_mmu_page to gfn_to_rmap KVM: x86: use vcpu-specific functions to read/write/translate GFNs KVM: x86: work on all available address spaces KVM: x86: add SMM to the MMU role, support SMRAM address space KVM: x86: advertise KVM_CAP_X86_SMM KVM: x86: mark legacy PCI device assignment as deprecated Merge tag 'kvm-arm-for-4.2' of git://git.kernel.org/.../kvmarm/kvmarm into HEAD Radim Krčmář (4): KVM: x86: fix initial PAT value KVM: reuse memslot in kvm_write_guest_page KVM: x86: use correct APIC ID on x2APIC transition KVM: x86: preserve x2APIC LDR on INIT Rik van Riel (1): kvm,x86: load guest FPU context more eagerly Tiejun Chen (1): kvm: remove one useless check extension Wei Huang (9): KVM: x86/vPMU: rename a few PMU functions KVM: x86/vPMU: introduce pmu.h header KVM: x86/vPMU: use the new macros to go between PMC, PMU and VCPU KVM: x86/vPMU: whitespace and stylistic adjustments in PMU code KVM: x86/vPMU: reorder PMU functions KVM: x86/vPMU: introduce kvm_pmu_msr_idx_to_pmc KVM: x86/vPMU: Define kvm_pmu_ops to support vPMU function dispatch KVM: x86/vPMU: Implement AMD vPMU code for KVM KVM: x86/vPMU: Enable PMU handling for AMD PERFCTRn and EVNTSELn MSRs Xiao Guangrong (26): KVM: MMU: fix smap permission check KVM: MMU: fix SMAP virtualization KVM: MMU: introduce for_each_rmap_spte() KVM: MMU: introduce PT_MAX_HUGEPAGE_LEVEL KVM: MMU: introduce for_each_slot_rmap_range KVM: MMU: introduce slot_handle_level_range() and its helpers KVM: MMU: use slot_handle_level and its helper to clean up the code KVM: MMU: introduce kvm_zap_rmapp KVM: MMU: fix decoding cache type from MTRR KVM: MMU: fix MTRR update KVM: x86: do not reset mmu if CR0.CD and CR0.NW are changed KVM: x86: fix CR0.CD virtualization KVM: x86: move MTRR related code to a separate file KVM: MTRR: handle MSR_MTRRcap in kvm_mtrr_get_msr KVM: MTRR: remove mtrr_state.have_fixed KVM: MTRR: exactly define the size of variable MTRRs KVM: MTRR: clean up mtrr default type KVM: MTRR: do not split 64 bits MSR content KVM: MTRR: improve kvm_mtrr_get_guest_memory_type KVM: MTRR: introduce fixed_mtrr_segment table KVM: MTRR: introduce var_mtrr_range KVM: MTRR: sort variable MTRRs KVM: MTRR: introduce fixed_mtrr_addr_* functions KVM: MTRR: introduce mtrr_for_each_mem_type KVM: MTRR: simplify kvm_mtrr_get_guest_memory_type KVM: MTRR: do not map huge page for non-consistent range Documentation/virtual/kvm/api.txt | 69 ++- Documentation/virtual/kvm/mmu.txt | 6 + arch/arm/kvm/Kconfig | 1 + arch/arm/kvm/Makefile | 2 +- arch/arm/kvm/arm.c | 24 +- arch/arm/kvm/interrupts.S | 10 +- arch/arm/kvm/interrupts_head.S | 23 +- arch/arm/kvm/mmu.c | 14 +- arch/arm/kvm/psci.c | 16 +- arch/arm64/kvm/Kconfig | 1 + arch/arm64/kvm/Makefile | 2 +- arch/arm64/kvm/hyp.S | 8 +- arch/arm64/kvm/vgic-v2-switch.S | 3 - arch/arm64/kvm/vgic-v3-switch.S | 2 - arch/mips/include/asm/kvm_host.h | 2 +- arch/mips/kvm/mips.c | 13 +- arch/powerpc/include/asm/kvm_book3s_64.h | 2 +- arch/powerpc/include/asm/kvm_host.h | 2 +- arch/powerpc/include/asm/kvm_ppc.h | 14 +- arch/powerpc/kvm/book3s.c | 9 +- arch/powerpc/kvm/book3s_64_mmu_hv.c | 2 +- arch/powerpc/kvm/book3s_hv.c | 15 +- arch/powerpc/kvm/book3s_pr.c | 11 +- arch/powerpc/kvm/booke.c | 13 +- arch/powerpc/kvm/powerpc.c | 9 +- arch/s390/include/asm/kvm_host.h | 6 +- arch/s390/kernel/entry.S | 2 +- arch/s390/kvm/intercept.c | 16 - arch/s390/kvm/interrupt.c | 90 ++-- arch/s390/kvm/kvm-s390.c | 81 ++- arch/s390/kvm/kvm-s390.h | 25 +- arch/s390/kvm/priv.c | 8 +- arch/x86/include/asm/kvm_emulate.h | 9 +- arch/x86/include/asm/kvm_host.h | 94 ++-- arch/x86/include/asm/pvclock-abi.h | 1 + arch/x86/include/asm/pvclock.h | 1 - arch/x86/include/uapi/asm/kvm.h | 14 +- arch/x86/kernel/kvm.c | 4 +- arch/x86/kernel/kvmclock.c | 14 +- arch/x86/kvm/Kconfig | 9 +- arch/x86/kvm/Makefile | 6 +- arch/x86/kvm/cpuid.c | 12 +- arch/x86/kvm/cpuid.h | 8 + arch/x86/kvm/emulate.c | 303 ++++++++++- arch/x86/kvm/ioapic.c | 9 +- arch/x86/kvm/irq_comm.c | 14 +- arch/x86/kvm/kvm_cache_regs.h | 5 + arch/x86/kvm/lapic.c | 59 +- arch/x86/kvm/lapic.h | 15 +- arch/x86/kvm/mmu.c | 692 ++++++++++++------------ arch/x86/kvm/mmu.h | 2 + arch/x86/kvm/mmu_audit.c | 20 +- arch/x86/kvm/mtrr.c | 699 ++++++++++++++++++++++++ arch/x86/kvm/paging_tmpl.h | 18 +- arch/x86/kvm/pmu.c | 553 +++++-------------- arch/x86/kvm/pmu.h | 118 ++++ arch/x86/kvm/pmu_amd.c | 207 +++++++ arch/x86/kvm/pmu_intel.c | 358 ++++++++++++ arch/x86/kvm/svm.c | 116 ++-- arch/x86/kvm/trace.h | 22 + arch/x86/kvm/vmx.c | 363 +++++++++---- arch/x86/kvm/x86.c | 898 ++++++++++++++++++++----------- arch/x86/kvm/x86.h | 8 + include/linux/kvm_host.h | 96 +++- include/linux/kvm_types.h | 1 + include/uapi/linux/kvm.h | 9 +- virt/kvm/arm/vgic-v3-emul.c | 56 +- virt/kvm/arm/vgic.c | 7 +- virt/kvm/async_pf.h | 4 +- virt/kvm/coalesced_mmio.h | 4 +- virt/kvm/irqchip.c | 41 +- virt/kvm/kvm_main.c | 432 ++++++++++----- 72 files changed, 4089 insertions(+), 1713 deletions(-) create mode 100644 arch/x86/kvm/mtrr.c create mode 100644 arch/x86/kvm/pmu.h create mode 100644 arch/x86/kvm/pmu_amd.c create mode 100644 arch/x86/kvm/pmu_intel.c