Lines Matching defs:kvm

16 #include <linux/kvm.h>
42 * Define loongarch kvm version.
43 * Add version number when qemu/kvm interface changed
211 struct kvm *kvm = vcpu->kvm;
226 idx = srcu_read_lock(&kvm->srcu);
227 if (kvm_is_error_hva(gfn_to_hva(kvm, ipa >> PAGE_SHIFT)))
229 srcu_read_unlock(&kvm->srcu, idx);
381 int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
384 kvm->arch.gpa_mm.pgd = kvm_pgd_alloc();
385 if (!kvm->arch.gpa_mm.pgd)
388 kvm->arch.cpucfg_lasx = (read_cpucfg(LOONGARCH_CPUCFG2) &
391 _kvm_init_iocsr(kvm);
392 kvm->arch.vmcs = vmcs;
397 static void kvm_free_vcpus(struct kvm *kvm)
402 kvm_for_each_vcpu(i, vcpu, kvm) {
406 mutex_lock(&kvm->lock);
408 for (i = 0; i < atomic_read(&kvm->online_vcpus); i++)
409 kvm->vcpus[i] = NULL;
411 atomic_set(&kvm->online_vcpus, 0);
413 mutex_unlock(&kvm->lock);
416 void kvm_arch_destroy_vm(struct kvm *kvm)
418 kvm_destroy_ls3a_ipi(kvm);
419 kvm_destroy_ls7a_ioapic(kvm);
420 kvm_destroy_ls3a_ext_irq(kvm);
421 kvm_free_vcpus(kvm);
422 _kvm_destroy_mm(kvm);
431 int kvm_arch_create_memslot(struct kvm *kvm, struct kvm_memory_slot *slot,
437 int kvm_arch_prepare_memory_region(struct kvm *kvm,
450 context = per_cpu_ptr(vcpu->kvm->arch.vmcs, cpu);
496 context = per_cpu_ptr(vcpu->kvm->arch.vmcs, cpu);
615 int kvm_arch_vcpu_precreate(struct kvm *kvm, unsigned int id)
634 vcpu->kvm->arch.online_vcpus = vcpu->vcpu_id + 1;
642 * kvm all exceptions share one exception entry, and host <-> guest switch
689 context = per_cpu_ptr(vcpu->kvm->arch.vmcs, cpu);
844 context = per_cpu_ptr(vcpu->kvm->arch.vmcs, cpu);
865 kvm_write_csr_gcntc((ulong)vcpu->kvm->arch.stablecounter_gftoffset);
922 if (vcpu->kvm->created_vcpus > 1)
1065 *v = drdtime() + vcpu->kvm->arch.stablecounter_gftoffset;
1125 if (!vcpu->kvm->arch.stablecounter_gftoffset)
1126 vcpu->kvm->arch.stablecounter_gftoffset = (signed long)(v - drdtime());
1127 kvm_write_csr_gcntc((ulong)vcpu->kvm->arch.stablecounter_gftoffset);
1134 kvm_setup_ls3a_extirq(vcpu->kvm);
1143 vcpu->kvm->arch.stablecounter_gftoffset = 0;
1210 if (!kvm_vm_ioctl_check_extension(vcpu->kvm, cap->cap))
1249 int kvm_vm_ioctl_irq_line(struct kvm *kvm, struct kvm_irq_level *irq_level,
1254 int nrcpus = atomic_read(&kvm->online_vcpus);
1264 if (!ls7a_ioapic_in_kernel(kvm))
1270 ls7a_ioapic_lock(ls7a_ioapic_irqchip(kvm), &flags);
1271 ret = kvm_ls7a_ioapic_set_irq(kvm, irq_num, level);
1272 ls7a_ioapic_unlock(ls7a_ioapic_irqchip(kvm), &flags);
1275 kvm->stat.vm_ioctl_irq_line++;
1280 static int kvm_vm_ioctl_get_irqchip(struct kvm *kvm, struct loongarch_kvm_irqchip *chip)
1292 r = kvm_get_ls7a_ioapic(kvm, (void *)chip->data);
1299 r = kvm_get_ls3a_ipi(kvm, (void *)chip->data);
1309 r = kvm_get_ls3a_extirq(kvm, (void *)chip->data);
1323 static int kvm_vm_ioctl_set_irqchip(struct kvm *kvm, struct loongarch_kvm_irqchip *chip)
1335 r = kvm_set_ls7a_ioapic(kvm, (void *)chip->data);
1342 r = kvm_set_ls3a_ipi(kvm, (void *)chip->data);
1352 r = kvm_set_ls3a_extirq(kvm, (void *)chip->data);
1538 vcpu_state.online_vcpus = vcpu->kvm->arch.online_vcpus;
1561 vcpu->kvm->arch.online_vcpus = vcpu_state.online_vcpus;
1562 vcpu->kvm->arch.is_migrate = vcpu_state.is_migrate;
1608 void kvm_arch_sync_dirty_log(struct kvm *kvm, struct kvm_memory_slot *memslot)
1613 void kvm_arch_flush_remote_tlbs_memslot(struct kvm *kvm,
1623 kvm_flush_remote_tlbs(kvm);
1628 struct kvm *kvm = filp->private_data;
1635 mutex_lock(&kvm->lock);
1637 if (kvm->arch.v_ioapic)
1640 r = kvm_create_ls7a_ioapic(kvm);
1643 r = kvm_create_ls3a_ipi(kvm);
1645 mutex_lock(&kvm->slots_lock);
1646 kvm_destroy_ls7a_ioapic(kvm);
1647 mutex_unlock(&kvm->slots_lock);
1650 r = kvm_create_ls3a_ext_irq(kvm);
1652 mutex_lock(&kvm->slots_lock);
1653 kvm_destroy_ls3a_ipi(kvm);
1654 kvm_destroy_ls7a_ioapic(kvm);
1655 mutex_unlock(&kvm->slots_lock);
1657 kvm_ls7a_setup_default_irq_routing(kvm);
1658 irqchip_debug_init(kvm);
1659 /* Write kvm->irq_routing before kvm->arch.vpic. */
1662 mutex_unlock(&kvm->lock);
1677 if (!ls7a_ioapic_in_kernel(kvm))
1679 r = kvm_vm_ioctl_get_irqchip(kvm, kchip);
1702 if (!ls7a_ioapic_in_kernel(kvm))
1704 r = kvm_vm_ioctl_set_irqchip(kvm, kchip);
1714 r = _kvm_get_iocsr(kvm, argp);
1719 r = _kvm_set_iocsr(kvm, argp);
1725 if (copy_from_user(&kvm->arch.cpucfgs, argp, sizeof(struct kvm_cpucfg)))
1732 if (copy_to_user(argp, &kvm->arch.cpucfgs, sizeof(struct kvm_cpucfg)))
1752 printk(KERN_ERR "kvm: failed to allocate percpu kvm_context\n");
1826 int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
1875 /* get user defined kvm version */