The architected timer integration with the vgic had some shortcomings in that certain guests (one being UEFI) weren't fully supported. In fixing this I also found that we are scheduling the hrtimer for the virtual timer way too often, with a potential performance overhead. This series tries to address these problems in proviging level-triggered semantics for the arch timer and vgic intergration and seeks to clarify the behavior when setting/clearing the active state on the physical distributor. Series based on kvmarm/next and also available at: https://git.linaro.org/people/christoffer.dall/linux-kvm-arm.git timer-rework Christoffer Dall (9): KVM: Add kvm_arch_vcpu_{un}blocking callbacks arm/arm64: KVM: arch_timer: Only schedule soft timer on vcpu_block arm/arm64: KVM: vgic: Factor out level irq processing on guest exit arm/arm64: Implement GICD_ICFGR as RO for PPIs arm/arm64: KVM: Use appropriate define in VGIC reset code arm/arm64: KVM: Add mapped interrupts documentation arm/arm64: KVM: vgic: Move active state handling to flush_hwstate arm/arm64: KVM: Rework the arch timer to use level-triggered semantics arm/arm64: KVM: arch timer: Reset CNTV_CTL to 0 Documentation/virtual/kvm/arm/vgic-mapped-irqs.txt | 59 ++++++ arch/arm/kvm/arm.c | 21 ++- arch/mips/include/asm/kvm_host.h | 2 + arch/powerpc/include/asm/kvm_host.h | 2 + arch/s390/include/asm/kvm_host.h | 2 + arch/x86/include/asm/kvm_host.h | 3 + include/kvm/arm_arch_timer.h | 4 +- include/kvm/arm_vgic.h | 3 - include/linux/kvm_host.h | 2 + virt/kvm/arm/arch_timer.c | 160 +++++++++++----- virt/kvm/arm/vgic.c | 201 +++++++++++---------- virt/kvm/kvm_main.c | 3 + 12 files changed, 308 insertions(+), 154 deletions(-) create mode 100644 Documentation/virtual/kvm/arm/vgic-mapped-irqs.txt -- 2.1.2.330.g565301e.dirty -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html