[GIT PULL] Second batch of KVM changes for 4.7

From: Radim KrÄmÃÅ
Date: Thu May 26 2016 - 14:50:47 EST


Linus,

The following changes since commit 9842df62004f366b9fed2423e24df10542ee0dc5:

KVM: MTRR: remove MSR 0x2f8 (2016-05-18 18:04:32 +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 fabc712866435660f7fa1070e1fabe29eba5bc4c:

tools: kvm_stat: Add comments (2016-05-25 16:12:06 +0200)

----------------------------------------------------------------
- move kvm_stat tool from QEMU repo into tools/kvm/kvm_stat
(kvm_stat had nothing to do with QEMU in the first place -- the tool
only interprets debugfs)
- expose per-vm statistics in debugfs and support them in kvm_stat
(KVM always collected per-vm statistics, but they were summarised into
global statistics)

x86:
- fix dynamic APICv (VMX was improperly configured and a guest could
access host's APIC MSRs, CVE-2016-4440)
- minor fixes

ARM changes from Christoffer Dall:
"This set of changes include the new vgic, which is a reimplementation
of our horribly broken legacy vgic implementation. The two
implementations will live side-by-side (with the new being the
configured default) for one kernel release and then we'll remove the
legacy one.

Also fixes a non-critical issue with virtual abort injection to
guests."

----------------------------------------------------------------
Andre Przywara (29):
KVM: arm/arm64: vgic: streamline vgic_update_irq_pending() interface
KVM: arm/arm64: vgic: avoid map in kvm_vgic_inject_mapped_irq()
KVM: arm/arm64: vgic: avoid map in kvm_vgic_map_is_active()
KVM: arm/arm64: vgic: avoid map in kvm_vgic_unmap_phys_irq()
KVM: arm/arm64: arch_timer: Remove irq_phys_map
KVM: arm/arm64: vgic: Remove irq_phys_map from interface
KVM: arm/arm64: pmu: abstract access to number of SPIs
KVM: arm/arm64: move GICv2 emulation defines into arm-gic-v3.h
KVM: arm/arm64: vgic-new: Add GICv2 MMIO handling framework
KVM: arm/arm64: vgic-new: Add ENABLE registers handlers
KVM: arm/arm64: vgic-new: Add PENDING registers handlers
KVM: arm/arm64: vgic-new: Add ACTIVE registers handlers
KVM: arm/arm64: vgic-new: Add PRIORITY registers handlers
KVM: arm/arm64: vgic-new: Add CONFIG registers handlers
KVM: arm/arm64: vgic-new: Add TARGET registers handlers
KVM: arm/arm64: vgic-new: Add SGIR register handler
KVM: arm/arm64: vgic-new: Add SGIPENDR register handlers
KVM: arm/arm64: vgic-new: Add GICv3 MMIO handling framework
KVM: arm/arm64: vgic-new: Add GICv3 CTLR, IIDR, TYPER handlers
KVM: arm/arm64: vgic-new: Add GICv3 redistributor IIDR and TYPER handler
KVM: arm/arm64: vgic-new: Add GICv3 IDREGS register handler
KVM: arm/arm64: vgic-new: Add GICv3 IROUTER register handlers
KVM: arm/arm64: vgic-new: Add GICv3 SGI system register trap handler
KVM: arm/arm64: vgic-new: Add userland access to VGIC dist registers
KVM: arm/arm64: vgic-new: Add GICH_VMCR accessors
KVM: arm/arm64: vgic-new: Add userland GIC CPU interface access
KVM: arm/arm64: vgic-new: Wire up irqfd injection
KVM: arm/arm64: vgic-new: implement mapped IRQ handling
KVM: arm/arm64: vgic-new: enable build

Christoffer Dall (12):
KVM: arm/arm64: Remove the IRQ field from struct irq_phys_map
KVM: arm/arm64: Move timer IRQ map to latest possible time
KVM: arm/arm64: Get rid of vgic_cpu->nr_lr
KVM: arm/arm64: Fix MMIO emulation data handling
KVM: arm/arm64: Export mmio_read/write_bus
KVM: arm/arm64: Provide functionality to pause and resume a guest
KVM: arm/arm64: vgic-new: Add data structure definitions
KVM: arm/arm64: vgic-new: Add acccessor to new struct vgic_irq instance
KVM: arm/arm64: vgic-new: Implement virtual IRQ injection
KVM: arm/arm64: vgic-new: Add IRQ sorting
KVM: arm/arm64: vgic-new: Export register access interface
KVM: arm/arm64: vgic-new: Synchronize changes to active state

Dan Carpenter (1):
svm: bitwise vs logical op typo

Eric Auger (12):
KVM: arm/arm64: vgic-new: Implement kvm_vgic_vcpu_pending_irq
KVM: arm/arm64: vgic-new: vgic_kvm_device: KVM device ops registration
KVM: arm/arm64: vgic-new: vgic_kvm_device: KVM_DEV_ARM_VGIC_GRP_NR_IRQS
KVM: arm/arm64: vgic-new: vgic_kvm_device: KVM_DEV_ARM_VGIC_GRP_CTRL
KVM: arm/arm64: vgic-new: vgic_kvm_device: implement kvm_vgic_addr
KVM: arm/arm64: vgic-new: vgic_kvm_device: KVM_DEV_ARM_VGIC_GRP_ADDR
KVM: arm/arm64: vgic-new: vgic_kvm_device: access to VGIC registers
KVM: arm/arm64: vgic-new: vgic_init: implement kvm_vgic_hyp_init
KVM: arm/arm64: vgic-new: vgic_init: implement vgic_create
KVM: arm/arm64: vgic-new: vgic_init: implement vgic_init
KVM: arm/arm64: vgic-new: vgic_init: implement map_resources
KVM: arm/arm64: vgic-new: Add vgic_v2/v3_enable

Hemant Kumar (1):
tools: kvm_stat: Powerpc related fixes

Jan Kiszka (2):
KVM: Unify traced vector format
KVM: SVM: Add more SVM_EXIT_REASONS

Janosch Frank (5):
tools: Add kvm_stat vm monitor script
MAINTAINERS: Add kvm tools
KVM: Create debugfs dir and stat files for each VM
tools: kvm_stat: Introduce pid monitoring
tools: kvm_stat: Add comments

Marc Zyngier (5):
KVM: arm/arm64: vgic-new: Add IRQ sync/flush framework
KVM: arm/arm64: vgic-new: Add GICv2 world switch backend
KVM: arm/arm64: vgic-new: Add GICv3 world switch backend
KVM: arm/arm64: vgic-new: Add MMIO handling framework
KVM: arm/arm64: vgic-new: Add CTLR, TYPER and IIDR handlers

Matt Evans (1):
kvm: arm64: Fix EC field in inject_abt64

Paolo Bonzini (2):
Merge tag 'kvm-arm-for-4-7-take2' of git://git.kernel.org/.../kvmarm/kvmarm into kvm-next
tools: Add kvm_stat man page

Roman Kagan (1):
kvm:vmx: more complete state update on APICv on/off

MAINTAINERS | 1 +
arch/arm/include/asm/kvm_host.h | 6 +
arch/arm/include/asm/kvm_mmio.h | 3 +
arch/arm/kvm/Kconfig | 7 +
arch/arm/kvm/Makefile | 11 +
arch/arm/kvm/arm.c | 37 +-
arch/arm/kvm/mmio.c | 24 +-
arch/arm64/include/asm/kvm_host.h | 6 +
arch/arm64/include/asm/kvm_mmio.h | 3 +
arch/arm64/kvm/Kconfig | 7 +
arch/arm64/kvm/Makefile | 12 +
arch/arm64/kvm/inject_fault.c | 2 +-
arch/x86/include/uapi/asm/svm.h | 44 +-
arch/x86/kvm/svm.c | 4 +-
arch/x86/kvm/vmx.c | 46 +-
include/kvm/arm_arch_timer.h | 11 +-
include/kvm/arm_vgic.h | 20 +-
include/kvm/vgic/vgic.h | 246 ++++++++
include/linux/irqchip/arm-gic-v3.h | 6 +
include/linux/irqchip/arm-gic.h | 2 +
include/linux/kvm_host.h | 7 +
include/trace/events/kvm.h | 6 +-
tools/Makefile | 6 +-
tools/kvm/kvm_stat/Makefile | 41 ++
tools/kvm/kvm_stat/kvm_stat | 1127 +++++++++++++++++++++++++++++++++++
tools/kvm/kvm_stat/kvm_stat.txt | 63 ++
virt/kvm/arm/arch_timer.c | 68 ++-
virt/kvm/arm/hyp/timer-sr.c | 5 +-
virt/kvm/arm/hyp/vgic-v2-sr.c | 17 +-
virt/kvm/arm/pmu.c | 25 +-
virt/kvm/arm/vgic-v2.c | 4 +-
virt/kvm/arm/vgic-v3.c | 8 +-
virt/kvm/arm/vgic.c | 86 +--
virt/kvm/arm/vgic/vgic-init.c | 452 ++++++++++++++
virt/kvm/arm/vgic/vgic-irqfd.c | 52 ++
virt/kvm/arm/vgic/vgic-kvm-device.c | 431 ++++++++++++++
virt/kvm/arm/vgic/vgic-mmio-v2.c | 446 ++++++++++++++
virt/kvm/arm/vgic/vgic-mmio-v3.c | 455 ++++++++++++++
virt/kvm/arm/vgic/vgic-mmio.c | 526 ++++++++++++++++
virt/kvm/arm/vgic/vgic-mmio.h | 150 +++++
virt/kvm/arm/vgic/vgic-v2.c | 352 +++++++++++
virt/kvm/arm/vgic/vgic-v3.c | 330 ++++++++++
virt/kvm/arm/vgic/vgic.c | 619 +++++++++++++++++++
virt/kvm/arm/vgic/vgic.h | 131 ++++
virt/kvm/kvm_main.c | 187 +++++-
45 files changed, 5900 insertions(+), 192 deletions(-)
create mode 100644 include/kvm/vgic/vgic.h
create mode 100644 tools/kvm/kvm_stat/Makefile
create mode 100755 tools/kvm/kvm_stat/kvm_stat
create mode 100644 tools/kvm/kvm_stat/kvm_stat.txt
create mode 100644 virt/kvm/arm/vgic/vgic-init.c
create mode 100644 virt/kvm/arm/vgic/vgic-irqfd.c
create mode 100644 virt/kvm/arm/vgic/vgic-kvm-device.c
create mode 100644 virt/kvm/arm/vgic/vgic-mmio-v2.c
create mode 100644 virt/kvm/arm/vgic/vgic-mmio-v3.c
create mode 100644 virt/kvm/arm/vgic/vgic-mmio.c
create mode 100644 virt/kvm/arm/vgic/vgic-mmio.h
create mode 100644 virt/kvm/arm/vgic/vgic-v2.c
create mode 100644 virt/kvm/arm/vgic/vgic-v3.c
create mode 100644 virt/kvm/arm/vgic/vgic.c
create mode 100644 virt/kvm/arm/vgic/vgic.h