Lines Matching defs:kvm

8 #include <linux/kvm.h>
11 #include <kvm/iodev.h>
12 #include <kvm/arm_vgic.h>
41 bool vgic_has_its(struct kvm *kvm)
43 struct vgic_dist *dist = &kvm->arch.vgic;
51 bool vgic_supports_direct_msis(struct kvm *kvm)
54 (kvm_vgic_global_state.has_gicv4 && vgic_has_its(kvm)));
67 struct vgic_dist *vgic = &vcpu->kvm->arch.vgic;
81 if (vgic_has_its(vcpu->kvm)) {
108 struct vgic_dist *dist = &vcpu->kvm->arch.vgic;
114 mutex_lock(&vcpu->kvm->arch.config_lock);
134 vgic_v4_configure_vsgis(vcpu->kvm);
138 kvm_make_all_cpus_request(vcpu->kvm, KVM_REQ_RELOAD_GICv4);
140 vgic_kick_vcpus(vcpu->kvm);
142 mutex_unlock(&vcpu->kvm->arch.config_lock);
157 struct vgic_dist *dist = &vcpu->kvm->arch.vgic;
197 struct vgic_irq *irq = vgic_get_irq(vcpu->kvm, NULL, intid);
207 vgic_put_irq(vcpu->kvm, irq);
223 irq = vgic_get_irq(vcpu->kvm, NULL, intid);
232 irq->target_vcpu = kvm_mpidr_to_vcpu(vcpu->kvm, irq->mpidr);
235 vgic_put_irq(vcpu->kvm, irq);
265 if (!vgic_has_its(vcpu->kvm))
280 vgic_its_invalidate_cache(vcpu->kvm);
294 struct vgic_dist *vgic = &vcpu->kvm->arch.vgic;
329 if (vgic_has_its(vcpu->kvm))
365 struct vgic_irq *irq = vgic_get_irq(vcpu->kvm, vcpu, intid + i);
384 vgic_queue_irq_unlock(vcpu->kvm, irq, flags);
388 vgic_put_irq(vcpu->kvm, irq);
480 struct vgic_dist *dist = &vcpu->kvm->arch.vgic;
489 struct vgic_dist *dist = &vcpu->kvm->arch.vgic;
571 irq = vgic_get_irq(vcpu->kvm, NULL, lower_32_bits(val));
573 vgic_its_inv_lpi(vcpu->kvm, irq);
574 vgic_put_irq(vcpu->kvm, irq);
773 struct kvm *kvm = vcpu->kvm;
774 struct vgic_dist *vgic = &kvm->arch.vgic;
781 lockdep_assert_held(&kvm->slots_lock);
782 mutex_lock(&kvm->arch.config_lock);
797 if (!vgic_v3_check_base(kvm)) {
814 mutex_unlock(&kvm->arch.config_lock);
816 ret = kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, rd_base,
826 mutex_unlock(&kvm->arch.config_lock);
834 kvm_io_bus_unregister_dev(vcpu->kvm, KVM_MMIO_BUS, &rd_dev->dev);
837 static int vgic_register_all_redist_iodevs(struct kvm *kvm)
843 kvm_for_each_vcpu(c, vcpu, kvm) {
854 vcpu = kvm_get_vcpu(kvm, i);
869 * @kvm: kvm handle
877 static int vgic_v3_alloc_redist_region(struct kvm *kvm, uint32_t index,
880 struct vgic_dist *d = &kvm->arch.vgic;
883 int nr_vcpus = atomic_read(&kvm->online_vcpus);
916 vgic_dist_overlap(kvm, base, size))
920 if (vgic_v3_rdist_overlap(kvm, base, size))
929 ret = vgic_check_iorange(kvm, rdreg->base, base, SZ_64K, size);
951 int vgic_v3_set_redist_base(struct kvm *kvm, u32 index, u64 addr, u32 count)
955 mutex_lock(&kvm->arch.config_lock);
956 ret = vgic_v3_alloc_redist_region(kvm, index, addr, count);
957 mutex_unlock(&kvm->arch.config_lock);
965 ret = vgic_register_all_redist_iodevs(kvm);
969 mutex_lock(&kvm->arch.config_lock);
970 rdreg = vgic_v3_rdist_region_from_index(kvm, index);
972 mutex_unlock(&kvm->arch.config_lock);
1078 struct kvm *kvm = vcpu->kvm;
1100 kvm_for_each_vcpu(c, c_vcpu, kvm) {
1122 irq = vgic_get_irq(vcpu->kvm, c_vcpu, sgi);
1134 vgic_queue_irq_unlock(vcpu->kvm, irq, flags);
1148 vgic_put_irq(vcpu->kvm, irq);