• Home
  • Raw
  • Download

Lines Matching refs:kvm

17 int vgic_check_ioaddr(struct kvm *kvm, phys_addr_t *ioaddr,  in vgic_check_ioaddr()  argument
20 if (addr & ~kvm_phys_mask(kvm)) in vgic_check_ioaddr()
32 static int vgic_check_type(struct kvm *kvm, int type_needed) in vgic_check_type() argument
34 if (kvm->arch.vgic.vgic_model != type_needed) in vgic_check_type()
56 int kvm_vgic_addr(struct kvm *kvm, unsigned long type, u64 *addr, bool write) in kvm_vgic_addr() argument
59 struct vgic_dist *vgic = &kvm->arch.vgic; in kvm_vgic_addr()
63 mutex_lock(&kvm->lock); in kvm_vgic_addr()
66 r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V2); in kvm_vgic_addr()
71 r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V2); in kvm_vgic_addr()
76 r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V3); in kvm_vgic_addr()
83 r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V3); in kvm_vgic_addr()
87 r = vgic_v3_set_redist_base(kvm, 0, *addr, 0); in kvm_vgic_addr()
103 r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V3); in kvm_vgic_addr()
119 r = vgic_v3_set_redist_base(kvm, index, in kvm_vgic_addr()
124 rdreg = vgic_v3_rdist_region_from_index(kvm, index); in kvm_vgic_addr()
143 r = vgic_check_ioaddr(kvm, addr_ptr, *addr, alignment); in kvm_vgic_addr()
151 mutex_unlock(&kvm->lock); in kvm_vgic_addr()
169 r = kvm_vgic_addr(dev->kvm, type, &addr, true); in vgic_set_common_attr()
191 mutex_lock(&dev->kvm->lock); in vgic_set_common_attr()
193 if (vgic_ready(dev->kvm) || dev->kvm->arch.vgic.nr_spis) in vgic_set_common_attr()
196 dev->kvm->arch.vgic.nr_spis = in vgic_set_common_attr()
199 mutex_unlock(&dev->kvm->lock); in vgic_set_common_attr()
206 mutex_lock(&dev->kvm->lock); in vgic_set_common_attr()
207 r = vgic_init(dev->kvm); in vgic_set_common_attr()
208 mutex_unlock(&dev->kvm->lock); in vgic_set_common_attr()
229 r = kvm_vgic_addr(dev->kvm, type, &addr, false); in vgic_get_common_attr()
240 r = put_user(dev->kvm->arch.vgic.nr_spis + in vgic_get_common_attr()
251 return kvm_vgic_create(dev->kvm, type); in vgic_create()
289 if (cpuid >= atomic_read(&dev->kvm->online_vcpus)) in vgic_v2_parse_attr()
292 reg_attr->vcpu = kvm_get_vcpu(dev->kvm, cpuid); in vgic_v2_parse_attr()
299 static void unlock_vcpus(struct kvm *kvm, int vcpu_lock_idx) in unlock_vcpus() argument
304 tmp_vcpu = kvm_get_vcpu(kvm, vcpu_lock_idx); in unlock_vcpus()
309 void unlock_all_vcpus(struct kvm *kvm) in unlock_all_vcpus() argument
311 unlock_vcpus(kvm, atomic_read(&kvm->online_vcpus) - 1); in unlock_all_vcpus()
315 bool lock_all_vcpus(struct kvm *kvm) in lock_all_vcpus() argument
326 kvm_for_each_vcpu(c, tmp_vcpu, kvm) { in lock_all_vcpus()
328 unlock_vcpus(kvm, c - 1); in lock_all_vcpus()
360 mutex_lock(&dev->kvm->lock); in vgic_v2_attr_regs_access()
362 ret = vgic_init(dev->kvm); in vgic_v2_attr_regs_access()
366 if (!lock_all_vcpus(dev->kvm)) { in vgic_v2_attr_regs_access()
383 unlock_all_vcpus(dev->kvm); in vgic_v2_attr_regs_access()
385 mutex_unlock(&dev->kvm->lock); in vgic_v2_attr_regs_access()
487 reg_attr->vcpu = kvm_mpidr_to_vcpu(dev->kvm, mpidr_reg); in vgic_v3_parse_attr()
489 reg_attr->vcpu = kvm_get_vcpu(dev->kvm, 0); in vgic_v3_parse_attr()
525 mutex_lock(&dev->kvm->lock); in vgic_v3_attr_regs_access()
527 if (unlikely(!vgic_initialized(dev->kvm))) { in vgic_v3_attr_regs_access()
532 if (!lock_all_vcpus(dev->kvm)) { in vgic_v3_attr_regs_access()
582 unlock_all_vcpus(dev->kvm); in vgic_v3_attr_regs_access()
584 mutex_unlock(&dev->kvm->lock); in vgic_v3_attr_regs_access()
635 mutex_lock(&dev->kvm->lock); in vgic_v3_set_attr()
637 if (!lock_all_vcpus(dev->kvm)) { in vgic_v3_set_attr()
638 mutex_unlock(&dev->kvm->lock); in vgic_v3_set_attr()
641 ret = vgic_v3_save_pending_tables(dev->kvm); in vgic_v3_set_attr()
642 unlock_all_vcpus(dev->kvm); in vgic_v3_set_attr()
643 mutex_unlock(&dev->kvm->lock); in vgic_v3_set_attr()