Lines Matching full:vgic
13 #include "vgic.h"
16 * Initialization rules: there are multiple stages to the vgic
18 * idea is that even though the VGIC is not functional or not requested from
19 * user space, the critical path of the run loop can still call VGIC functions
45 * kvm_vgic_early_init() - Initialize static VGIC VCPU data structures
46 * @kvm: The VM whose VGIC districutor should be initialized
54 struct vgic_dist *dist = &kvm->arch.vgic; in kvm_vgic_early_init()
64 * kvm_vgic_create: triggered by the instantiation of the VGIC device by
110 kvm->arch.vgic.in_kernel = true; in kvm_vgic_create()
111 kvm->arch.vgic.vgic_model = type; in kvm_vgic_create()
113 kvm->arch.vgic.vgic_dist_base = VGIC_ADDR_UNDEF; in kvm_vgic_create()
116 kvm->arch.vgic.vgic_cpu_base = VGIC_ADDR_UNDEF; in kvm_vgic_create()
118 INIT_LIST_HEAD(&kvm->arch.vgic.rd_regions); in kvm_vgic_create()
134 struct vgic_dist *dist = &kvm->arch.vgic; in kvm_vgic_dist_init()
144 * no other action on irq structs can happen while the VGIC is in kvm_vgic_dist_init()
178 * kvm_vgic_vcpu_init() - Initialize static VGIC VCPU data
184 * VGIC CPU interface
189 struct vgic_dist *dist = &vcpu->kvm->arch.vgic; in kvm_vgic_vcpu_init()
257 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_init()
277 /* Initialize groups on CPUs created before the VGIC type was known */ in vgic_init()
336 struct vgic_dist *dist = &kvm->arch.vgic; in kvm_vgic_dist_destroy()
409 * We only provide the automatic initialization of the VGIC in vgic_lazy_init()
414 if (kvm->arch.vgic.vgic_model != KVM_DEV_TYPE_ARM_VGIC_V2) in vgic_lazy_init()
428 * Map the MMIO regions depending on the VGIC model exposed to the guest
432 * v3 and derivatives return an error if the VGIC is not initialized.
438 struct vgic_dist *dist = &kvm->arch.vgic; in kvm_vgic_map_resources()
484 * We cannot rely on the vgic maintenance interrupt to be in vgic_maintenance_handler()
538 kvm_err("No vgic maintenance irq\n"); in kvm_vgic_hyp_init()
547 kvm_info("Non-architectural vgic, tainting kernel\n"); in kvm_vgic_hyp_init()
580 "vgic", kvm_get_running_vcpus()); in kvm_vgic_hyp_init()
588 "kvm/arm/vgic:starting", in kvm_vgic_hyp_init()
591 kvm_err("Cannot register vgic CPU notifier\n"); in kvm_vgic_hyp_init()
595 kvm_info("vgic interrupt IRQ%d\n", kvm_vgic_global_state.maint_irq); in kvm_vgic_hyp_init()