Lines Matching defs:kvm

19 	struct kvm *kvm = dev->kvm;
22 if (irqchip_in_kernel(kvm))
26 if (kvm_trylock_all_vcpus(kvm))
29 kvm_for_each_vcpu(i, vcpu, kvm) {
35 kvm->arch.aia.in_kernel = true;
38 kvm_unlock_all_vcpus(kvm);
47 static int aia_config(struct kvm *kvm, unsigned long type,
50 struct kvm_aia *aia = &kvm->arch.aia;
53 if (write && kvm_riscv_aia_initialized(kvm))
141 static int aia_aplic_addr(struct kvm *kvm, u64 *addr, bool write)
143 struct kvm_aia *aia = &kvm->arch.aia;
147 if (kvm_riscv_aia_initialized(kvm))
160 static int aia_imsic_addr(struct kvm *kvm, u64 *addr,
166 vcpu = kvm_get_vcpu(kvm, vcpu_idx);
173 if (kvm_riscv_aia_initialized(kvm))
222 static int aia_init(struct kvm *kvm)
228 struct kvm_aia *aia = &kvm->arch.aia;
232 if (kvm_riscv_aia_initialized(kvm))
236 if (kvm->created_vcpus != atomic_read(&kvm->online_vcpus))
248 ret = kvm_riscv_aia_aplic_init(kvm);
253 kvm_for_each_vcpu(idx, vcpu, kvm) {
281 kvm->arch.aia.initialized = true;
287 vcpu = kvm_get_vcpu(kvm, i);
292 kvm_riscv_aia_aplic_cleanup(kvm);
309 mutex_lock(&dev->kvm->lock);
310 r = aia_config(dev->kvm, type, &nr, true);
311 mutex_unlock(&dev->kvm->lock);
319 nr_vcpus = atomic_read(&dev->kvm->online_vcpus);
320 mutex_lock(&dev->kvm->lock);
322 r = aia_aplic_addr(dev->kvm, &addr, true);
324 r = aia_imsic_addr(dev->kvm, &addr,
326 mutex_unlock(&dev->kvm->lock);
333 mutex_lock(&dev->kvm->lock);
334 r = aia_init(dev->kvm);
335 mutex_unlock(&dev->kvm->lock);
344 mutex_lock(&dev->kvm->lock);
345 r = kvm_riscv_aia_aplic_set_attr(dev->kvm, type, nr);
346 mutex_unlock(&dev->kvm->lock);
353 mutex_lock(&dev->kvm->lock);
354 r = kvm_riscv_aia_imsic_rw_attr(dev->kvm, type, true, &v);
355 mutex_unlock(&dev->kvm->lock);
376 mutex_lock(&dev->kvm->lock);
377 r = aia_config(dev->kvm, type, &nr, false);
378 mutex_unlock(&dev->kvm->lock);
390 nr_vcpus = atomic_read(&dev->kvm->online_vcpus);
391 mutex_lock(&dev->kvm->lock);
393 r = aia_aplic_addr(dev->kvm, &addr, false);
395 r = aia_imsic_addr(dev->kvm, &addr,
397 mutex_unlock(&dev->kvm->lock);
409 mutex_lock(&dev->kvm->lock);
410 r = kvm_riscv_aia_aplic_get_attr(dev->kvm, type, &nr);
411 mutex_unlock(&dev->kvm->lock);
423 mutex_lock(&dev->kvm->lock);
424 r = kvm_riscv_aia_imsic_rw_attr(dev->kvm, type, false, &v);
425 mutex_unlock(&dev->kvm->lock);
456 nr_vcpus = atomic_read(&dev->kvm->online_vcpus);
469 return kvm_riscv_aia_aplic_has_attr(dev->kvm, attr->attr);
471 return kvm_riscv_aia_imsic_has_attr(dev->kvm, attr->attr);
478 .name = "kvm-riscv-aia",
489 if (!kvm_riscv_aia_initialized(vcpu->kvm))
505 if (!kvm_riscv_aia_initialized(vcpu->kvm))
536 if (!kvm_riscv_aia_initialized(vcpu->kvm))
543 int kvm_riscv_aia_inject_msi_by_id(struct kvm *kvm, u32 hart_index,
550 if (!kvm_riscv_aia_initialized(kvm))
554 kvm_for_each_vcpu(idx, vcpu, kvm) {
564 int kvm_riscv_aia_inject_msi(struct kvm *kvm, struct kvm_msi *msi)
570 struct kvm_aia *aia = &kvm->arch.aia;
574 if (!kvm_riscv_aia_initialized(kvm))
585 kvm_for_each_vcpu(idx, vcpu, kvm) {
598 int kvm_riscv_aia_inject_irq(struct kvm *kvm, unsigned int irq, bool level)
601 if (!kvm_riscv_aia_initialized(kvm))
605 return kvm_riscv_aia_aplic_inject(kvm, irq, level);
608 void kvm_riscv_aia_init_vm(struct kvm *kvm)
610 struct kvm_aia *aia = &kvm->arch.aia;
634 void kvm_riscv_aia_destroy_vm(struct kvm *kvm)
637 if (!kvm_riscv_aia_initialized(kvm))
641 kvm_riscv_aia_aplic_cleanup(kvm);