Lines Matching defs:kvm
9 #include <kvm/arm_vgic.h>
17 int vgic_check_ioaddr(struct kvm *kvm, phys_addr_t *ioaddr,
20 if (addr & ~kvm_phys_mask(kvm))
32 static int vgic_check_type(struct kvm *kvm, int type_needed)
34 if (kvm->arch.vgic.vgic_model != type_needed)
42 * @kvm: pointer to the vm struct
56 int kvm_vgic_addr(struct kvm *kvm, unsigned long type, u64 *addr, bool write)
59 struct vgic_dist *vgic = &kvm->arch.vgic;
63 mutex_lock(&kvm->lock);
66 r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V2);
71 r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V2);
76 r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V3);
83 r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V3);
87 r = vgic_v3_set_redist_base(kvm, 0, *addr, 0);
103 r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V3);
119 r = vgic_v3_set_redist_base(kvm, index,
124 rdreg = vgic_v3_rdist_region_from_index(kvm, index);
143 r = vgic_check_ioaddr(kvm, addr_ptr, *addr, alignment);
151 mutex_unlock(&kvm->lock);
169 r = kvm_vgic_addr(dev->kvm, type, &addr, true);
191 mutex_lock(&dev->kvm->lock);
193 if (vgic_ready(dev->kvm) || dev->kvm->arch.vgic.nr_spis)
196 dev->kvm->arch.vgic.nr_spis =
199 mutex_unlock(&dev->kvm->lock);
206 mutex_lock(&dev->kvm->lock);
207 r = vgic_init(dev->kvm);
208 mutex_unlock(&dev->kvm->lock);
232 r = kvm_vgic_addr(dev->kvm, type, &addr, false);
243 r = put_user(dev->kvm->arch.vgic.nr_spis +
254 return kvm_vgic_create(dev->kvm, type);
292 if (cpuid >= atomic_read(&dev->kvm->online_vcpus))
295 reg_attr->vcpu = kvm_get_vcpu(dev->kvm, cpuid);
302 static void unlock_vcpus(struct kvm *kvm, int vcpu_lock_idx)
307 tmp_vcpu = kvm_get_vcpu(kvm, vcpu_lock_idx);
312 void unlock_all_vcpus(struct kvm *kvm)
314 unlock_vcpus(kvm, atomic_read(&kvm->online_vcpus) - 1);
318 bool lock_all_vcpus(struct kvm *kvm)
329 kvm_for_each_vcpu(c, tmp_vcpu, kvm) {
331 unlock_vcpus(kvm, c - 1);
342 * @dev: kvm device handle
343 * @attr: kvm device attribute
363 mutex_lock(&dev->kvm->lock);
365 ret = vgic_init(dev->kvm);
369 if (!lock_all_vcpus(dev->kvm)) {
386 unlock_all_vcpus(dev->kvm);
388 mutex_unlock(&dev->kvm->lock);
468 .name = "kvm-arm-vgic-v2",
490 reg_attr->vcpu = kvm_mpidr_to_vcpu(dev->kvm, mpidr_reg);
492 reg_attr->vcpu = kvm_get_vcpu(dev->kvm, 0);
506 * @dev: kvm device handle
507 * @attr: kvm device attribute
528 mutex_lock(&dev->kvm->lock);
530 if (unlikely(!vgic_initialized(dev->kvm))) {
535 if (!lock_all_vcpus(dev->kvm)) {
585 unlock_all_vcpus(dev->kvm);
587 mutex_unlock(&dev->kvm->lock);
638 mutex_lock(&dev->kvm->lock);
640 if (!lock_all_vcpus(dev->kvm)) {
641 mutex_unlock(&dev->kvm->lock);
644 ret = vgic_v3_save_pending_tables(dev->kvm);
645 unlock_all_vcpus(dev->kvm);
646 mutex_unlock(&dev->kvm->lock);
738 .name = "kvm-arm-vgic-v3",