Second batch of KVM changes for 4.7
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