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()
62 * kvm_vgic_create: triggered by the instantiation of the VGIC device by
115 kvm->arch.vgic.in_kernel = true; in kvm_vgic_create()
116 kvm->arch.vgic.vgic_model = type; in kvm_vgic_create()
118 kvm->arch.vgic.vgic_dist_base = VGIC_ADDR_UNDEF; in kvm_vgic_create()
121 kvm->arch.vgic.vgic_cpu_base = VGIC_ADDR_UNDEF; in kvm_vgic_create()
123 INIT_LIST_HEAD(&kvm->arch.vgic.rd_regions); in kvm_vgic_create()
140 struct vgic_dist *dist = &kvm->arch.vgic; in kvm_vgic_dist_init()
150 * no other action on irq structs can happen while the VGIC is in kvm_vgic_dist_init()
238 * kvm_vgic_vcpu_init() - Initialize static VGIC VCPU data
244 * VGIC CPU interface
249 struct vgic_dist *dist = &vcpu->kvm->arch.vgic; in kvm_vgic_vcpu_init()
296 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_init()
318 /* Initialize groups on CPUs created before the VGIC type was known */ in vgic_init()
381 struct vgic_dist *dist = &kvm->arch.vgic; in kvm_vgic_dist_destroy()
420 if (vcpu->kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3) { in __kvm_vgic_vcpu_destroy()
470 if (kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3) in kvm_vgic_destroy()
489 * We only provide the automatic initialization of the VGIC in vgic_lazy_init()
494 if (kvm->arch.vgic.vgic_model != KVM_DEV_TYPE_ARM_VGIC_V2) in vgic_lazy_init()
511 * Map the MMIO regions depending on the VGIC model exposed to the guest
515 * v3 and derivatives return an error if the VGIC is not initialized.
520 struct vgic_dist *dist = &kvm->arch.vgic; in kvm_vgic_map_resources()
552 kvm_err("Unable to register VGIC dist MMIO regions\n"); in kvm_vgic_map_resources()
592 * We cannot rely on the vgic maintenance interrupt to be in vgic_maintenance_handler()
646 kvm_err("No vgic maintenance irq\n"); in kvm_vgic_hyp_init()
655 kvm_info("Non-architectural vgic, tainting kernel\n"); in kvm_vgic_hyp_init()
688 "vgic", kvm_get_running_vcpus()); in kvm_vgic_hyp_init()
695 kvm_info("vgic interrupt IRQ%d\n", kvm_vgic_global_state.maint_irq); in kvm_vgic_hyp_init()