Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[linux-2.6-block.git] / virt / kvm / arm / vgic / vgic-init.c
index e621b5d45b278b6e1d03f997849422ad3a94fe97..6f50c429196de19c4be0e359172632666181951d 100644 (file)
@@ -54,6 +54,7 @@ void kvm_vgic_early_init(struct kvm *kvm)
        struct vgic_dist *dist = &kvm->arch.vgic;
 
        INIT_LIST_HEAD(&dist->lpi_list_head);
+       INIT_LIST_HEAD(&dist->lpi_translation_cache);
        raw_spin_lock_init(&dist->lpi_list_lock);
 }
 
@@ -199,7 +200,6 @@ int kvm_vgic_vcpu_init(struct kvm_vcpu *vcpu)
        int i;
 
        vgic_cpu->rd_iodev.base_addr = VGIC_ADDR_UNDEF;
-       vgic_cpu->sgi_iodev.base_addr = VGIC_ADDR_UNDEF;
 
        INIT_LIST_HEAD(&vgic_cpu->ap_list_head);
        raw_spin_lock_init(&vgic_cpu->ap_list_lock);
@@ -304,6 +304,7 @@ int vgic_init(struct kvm *kvm)
        }
 
        if (vgic_has_its(kvm)) {
+               vgic_lpi_translation_cache_init(kvm);
                ret = vgic_v4_init(kvm);
                if (ret)
                        goto out;
@@ -345,6 +346,9 @@ static void kvm_vgic_dist_destroy(struct kvm *kvm)
                INIT_LIST_HEAD(&dist->rd_regions);
        }
 
+       if (vgic_has_its(kvm))
+               vgic_lpi_translation_cache_destroy(kvm);
+
        if (vgic_supports_direct_msis(kvm))
                vgic_v4_teardown(kvm);
 }
@@ -515,7 +519,7 @@ int kvm_vgic_hyp_init(void)
                break;
        default:
                ret = -ENODEV;
-       };
+       }
 
        if (ret)
                return ret;