diff options
| -rw-r--r-- | include/kvm/arm_arch_timer.h | 2 | ||||
| -rw-r--r-- | virt/kvm/arm/arch_timer.c | 13 | ||||
| -rw-r--r-- | virt/kvm/arm/arm.c | 2 |
3 files changed, 10 insertions, 7 deletions
diff --git a/include/kvm/arm_arch_timer.h b/include/kvm/arm_arch_timer.h index 6e45608b2399..9da6ce22803f 100644 --- a/include/kvm/arm_arch_timer.h +++ b/include/kvm/arm_arch_timer.h | |||
| @@ -62,7 +62,7 @@ struct arch_timer_cpu { | |||
| 62 | bool enabled; | 62 | bool enabled; |
| 63 | }; | 63 | }; |
| 64 | 64 | ||
| 65 | int kvm_timer_hyp_init(void); | 65 | int kvm_timer_hyp_init(bool); |
| 66 | int kvm_timer_enable(struct kvm_vcpu *vcpu); | 66 | int kvm_timer_enable(struct kvm_vcpu *vcpu); |
| 67 | int kvm_timer_vcpu_reset(struct kvm_vcpu *vcpu); | 67 | int kvm_timer_vcpu_reset(struct kvm_vcpu *vcpu); |
| 68 | void kvm_timer_vcpu_init(struct kvm_vcpu *vcpu); | 68 | void kvm_timer_vcpu_init(struct kvm_vcpu *vcpu); |
diff --git a/virt/kvm/arm/arch_timer.c b/virt/kvm/arm/arch_timer.c index f9555b1e7f15..aa9adfafe12b 100644 --- a/virt/kvm/arm/arch_timer.c +++ b/virt/kvm/arm/arch_timer.c | |||
| @@ -720,7 +720,7 @@ static int kvm_timer_dying_cpu(unsigned int cpu) | |||
| 720 | return 0; | 720 | return 0; |
| 721 | } | 721 | } |
| 722 | 722 | ||
| 723 | int kvm_timer_hyp_init(void) | 723 | int kvm_timer_hyp_init(bool has_gic) |
| 724 | { | 724 | { |
| 725 | struct arch_timer_kvm_info *info; | 725 | struct arch_timer_kvm_info *info; |
| 726 | int err; | 726 | int err; |
| @@ -756,10 +756,13 @@ int kvm_timer_hyp_init(void) | |||
| 756 | return err; | 756 | return err; |
| 757 | } | 757 | } |
| 758 | 758 | ||
| 759 | err = irq_set_vcpu_affinity(host_vtimer_irq, kvm_get_running_vcpus()); | 759 | if (has_gic) { |
| 760 | if (err) { | 760 | err = irq_set_vcpu_affinity(host_vtimer_irq, |
| 761 | kvm_err("kvm_arch_timer: error setting vcpu affinity\n"); | 761 | kvm_get_running_vcpus()); |
| 762 | goto out_free_irq; | 762 | if (err) { |
| 763 | kvm_err("kvm_arch_timer: error setting vcpu affinity\n"); | ||
| 764 | goto out_free_irq; | ||
| 765 | } | ||
| 763 | } | 766 | } |
| 764 | 767 | ||
| 765 | kvm_info("virtual timer IRQ%d\n", host_vtimer_irq); | 768 | kvm_info("virtual timer IRQ%d\n", host_vtimer_irq); |
diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c index 6b60c98a6e22..2e43f9d42bd5 100644 --- a/virt/kvm/arm/arm.c +++ b/virt/kvm/arm/arm.c | |||
| @@ -1326,7 +1326,7 @@ static int init_subsystems(void) | |||
| 1326 | /* | 1326 | /* |
| 1327 | * Init HYP architected timer support | 1327 | * Init HYP architected timer support |
| 1328 | */ | 1328 | */ |
| 1329 | err = kvm_timer_hyp_init(); | 1329 | err = kvm_timer_hyp_init(vgic_present); |
| 1330 | if (err) | 1330 | if (err) |
| 1331 | goto out; | 1331 | goto out; |
| 1332 | 1332 | ||
