]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
KVM: arm/arm64: Set VCPU affinity for virt timer irq
authorChristoffer Dall <cdall@linaro.org>
Wed, 5 Jul 2017 10:50:27 +0000 (12:50 +0200)
committerChristoffer Dall <christoffer.dall@linaro.org>
Mon, 6 Nov 2017 15:23:13 +0000 (16:23 +0100)
As we are about to take physical interrupts for the virtual timer on the
host but want to leave those active while running the VM (and let the VM
deactivate them), we need to set the vtimer PPI affinity accordingly.

Signed-off-by: Christoffer Dall <cdall@linaro.org>
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
virt/kvm/arm/arch_timer.c

index 93c8973a71f47f28b9252bc633b8f79eb5151a54..eac1b3d83a86fa0a6768795a5dc05750d7bce699 100644 (file)
@@ -649,11 +649,20 @@ int kvm_timer_hyp_init(void)
                return err;
        }
 
+       err = irq_set_vcpu_affinity(host_vtimer_irq, kvm_get_running_vcpus());
+       if (err) {
+               kvm_err("kvm_arch_timer: error setting vcpu affinity\n");
+               goto out_free_irq;
+       }
+
        kvm_info("virtual timer IRQ%d\n", host_vtimer_irq);
 
        cpuhp_setup_state(CPUHP_AP_KVM_ARM_TIMER_STARTING,
                          "kvm/arm/timer:starting", kvm_timer_starting_cpu,
                          kvm_timer_dying_cpu);
+       return 0;
+out_free_irq:
+       free_percpu_irq(host_vtimer_irq, kvm_get_running_vcpus());
        return err;
 }