diff options
| -rw-r--r-- | include/kvm/arm_vgic.h | 6 | ||||
| -rw-r--r-- | virt/kvm/arm/vgic.c | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h index 3e262b9bbddf..ac4888dc86bc 100644 --- a/include/kvm/arm_vgic.h +++ b/include/kvm/arm_vgic.h | |||
| @@ -287,6 +287,7 @@ bool vgic_handle_mmio(struct kvm_vcpu *vcpu, struct kvm_run *run, | |||
| 287 | struct kvm_exit_mmio *mmio); | 287 | struct kvm_exit_mmio *mmio); |
| 288 | 288 | ||
| 289 | #define irqchip_in_kernel(k) (!!((k)->arch.vgic.in_kernel)) | 289 | #define irqchip_in_kernel(k) (!!((k)->arch.vgic.in_kernel)) |
| 290 | #define vgic_initialized(k) (!!((k)->arch.vgic.nr_cpus)) | ||
| 290 | #define vgic_ready(k) ((k)->arch.vgic.ready) | 291 | #define vgic_ready(k) ((k)->arch.vgic.ready) |
| 291 | 292 | ||
| 292 | int vgic_v2_probe(struct device_node *vgic_node, | 293 | int vgic_v2_probe(struct device_node *vgic_node, |
| @@ -369,6 +370,11 @@ static inline int irqchip_in_kernel(struct kvm *kvm) | |||
| 369 | return 0; | 370 | return 0; |
| 370 | } | 371 | } |
| 371 | 372 | ||
| 373 | static inline bool vgic_initialized(struct kvm *kvm) | ||
| 374 | { | ||
| 375 | return true; | ||
| 376 | } | ||
| 377 | |||
| 372 | static inline bool vgic_ready(struct kvm *kvm) | 378 | static inline bool vgic_ready(struct kvm *kvm) |
| 373 | { | 379 | { |
| 374 | return true; | 380 | return true; |
diff --git a/virt/kvm/arm/vgic.c b/virt/kvm/arm/vgic.c index 4edb2572ea9a..d862ea502167 100644 --- a/virt/kvm/arm/vgic.c +++ b/virt/kvm/arm/vgic.c | |||
| @@ -1780,6 +1780,7 @@ void kvm_vgic_destroy(struct kvm *kvm) | |||
| 1780 | dist->irq_spi_cpu = NULL; | 1780 | dist->irq_spi_cpu = NULL; |
| 1781 | dist->irq_spi_target = NULL; | 1781 | dist->irq_spi_target = NULL; |
| 1782 | dist->irq_pending_on_cpu = NULL; | 1782 | dist->irq_pending_on_cpu = NULL; |
| 1783 | dist->nr_cpus = 0; | ||
| 1783 | } | 1784 | } |
| 1784 | 1785 | ||
| 1785 | /* | 1786 | /* |
| @@ -1793,7 +1794,7 @@ static int vgic_init(struct kvm *kvm) | |||
| 1793 | int nr_cpus, nr_irqs; | 1794 | int nr_cpus, nr_irqs; |
| 1794 | int ret, i, vcpu_id; | 1795 | int ret, i, vcpu_id; |
| 1795 | 1796 | ||
| 1796 | if (dist->nr_cpus) /* Already allocated */ | 1797 | if (vgic_initialized(kvm)) |
| 1797 | return 0; | 1798 | return 0; |
| 1798 | 1799 | ||
| 1799 | nr_cpus = dist->nr_cpus = atomic_read(&kvm->online_vcpus); | 1800 | nr_cpus = dist->nr_cpus = atomic_read(&kvm->online_vcpus); |
