Lines Matching defs:kvm
7 #include <linux/kvm.h>
9 #include <kvm/arm_vgic.h>
39 u32 model = vcpu->kvm->arch.vgic.vgic_model;
64 if (lr_signals_eoi_mi(val) && vgic_valid_spi(vcpu->kvm, intid))
65 kvm_notify_acked_irq(vcpu->kvm, 0,
68 irq = vgic_get_irq(vcpu->kvm, vcpu, intid);
100 vgic_put_irq(vcpu->kvm, irq);
109 u32 model = vcpu->kvm->arch.vgic.vgic_model;
197 u32 model = vcpu->kvm->arch.vgic.vgic_model;
227 u32 model = vcpu->kvm->arch.vgic.vgic_model;
277 if (vcpu->kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3) {
305 int vgic_v3_lpi_sync_pending_status(struct kvm *kvm, struct vgic_irq *irq)
326 ret = kvm_read_guest_lock(kvm, ptr, &val, 1);
338 vgic_queue_irq_unlock(vcpu->kvm, irq, flags);
343 ret = vgic_write_guest_lock(kvm, ptr, &val, 1);
354 static void unmap_all_vpes(struct kvm *kvm)
356 struct vgic_dist *dist = &kvm->arch.vgic;
360 free_irq(dist->its_vm.vpes[i]->irq, kvm_get_vcpu(kvm, i));
363 static void map_all_vpes(struct kvm *kvm)
365 struct vgic_dist *dist = &kvm->arch.vgic;
369 WARN_ON(vgic_v4_request_vpe_irq(kvm_get_vcpu(kvm, i),
375 * kvm lock and all vcpu lock must be held
377 int vgic_v3_save_pending_tables(struct kvm *kvm)
379 struct vgic_dist *dist = &kvm->arch.vgic;
386 if (unlikely(!vgic_initialized(kvm)))
395 unmap_all_vpes(kvm);
417 ret = kvm_read_guest_lock(kvm, ptr, &val, 1);
438 ret = vgic_write_guest_lock(kvm, ptr, &val, 1);
445 map_all_vpes(kvm);
454 * @kvm: kvm handle
460 bool vgic_v3_rdist_overlap(struct kvm *kvm, gpa_t base, size_t size)
462 struct vgic_dist *d = &kvm->arch.vgic;
467 (base < rdreg->base + vgic_v3_rd_region_size(kvm, rdreg)))
477 bool vgic_v3_check_base(struct kvm *kvm)
479 struct vgic_dist *d = &kvm->arch.vgic;
487 size_t sz = vgic_v3_rd_region_size(kvm, rdreg);
489 if (vgic_check_iorange(kvm, VGIC_ADDR_UNDEF,
497 return !vgic_v3_rdist_overlap(kvm, d->vgic_dist_base,
524 struct vgic_redist_region *vgic_v3_rdist_region_from_index(struct kvm *kvm,
527 struct list_head *rd_regions = &kvm->arch.vgic.rd_regions;
538 int vgic_v3_map_resources(struct kvm *kvm)
540 struct vgic_dist *dist = &kvm->arch.vgic;
544 kvm_for_each_vcpu(c, vcpu, kvm) {
558 if (!vgic_v3_check_base(kvm)) {
567 if (!vgic_initialized(kvm)) {
572 vgic_v4_configure_vsgis(kvm);
583 early_param("kvm-arm.vgic_v3_group0_trap", early_group0_trap_cfg);
589 early_param("kvm-arm.vgic_v3_group1_trap", early_group1_trap_cfg);
595 early_param("kvm-arm.vgic_v3_common_trap", early_common_trap_cfg);
601 early_param("kvm-arm.vgic_v4_enable", early_gicv4_enable);