Lines Matching refs:kvm

113 int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)  in kvm_arch_init_vm()  argument
120 ret = kvm_alloc_stage2_pgd(kvm); in kvm_arch_init_vm()
124 ret = create_hyp_mappings(kvm, kvm + 1); in kvm_arch_init_vm()
128 kvm_vgic_early_init(kvm); in kvm_arch_init_vm()
129 kvm_timer_init(kvm); in kvm_arch_init_vm()
132 kvm->arch.vmid_gen = 0; in kvm_arch_init_vm()
135 kvm->arch.max_vcpus = kvm_vgic_get_max_vcpus(); in kvm_arch_init_vm()
139 kvm_free_stage2_pgd(kvm); in kvm_arch_init_vm()
154 void kvm_arch_destroy_vm(struct kvm *kvm) in kvm_arch_destroy_vm() argument
158 kvm_free_stage2_pgd(kvm); in kvm_arch_destroy_vm()
161 if (kvm->vcpus[i]) { in kvm_arch_destroy_vm()
162 kvm_arch_vcpu_free(kvm->vcpus[i]); in kvm_arch_destroy_vm()
163 kvm->vcpus[i] = NULL; in kvm_arch_destroy_vm()
167 kvm_vgic_destroy(kvm); in kvm_arch_destroy_vm()
170 int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext) in kvm_vm_ioctl_check_extension() argument
213 struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm, unsigned int id) in kvm_arch_vcpu_create() argument
218 if (irqchip_in_kernel(kvm) && vgic_initialized(kvm)) { in kvm_arch_vcpu_create()
223 if (id >= kvm->arch.max_vcpus) { in kvm_arch_vcpu_create()
234 err = kvm_vcpu_init(vcpu, kvm, id); in kvm_arch_vcpu_create()
381 static bool need_new_vmid_gen(struct kvm *kvm) in need_new_vmid_gen() argument
383 return unlikely(kvm->arch.vmid_gen != atomic64_read(&kvm_vmid_gen)); in need_new_vmid_gen()
394 static void update_vttbr(struct kvm *kvm) in update_vttbr() argument
399 if (!need_new_vmid_gen(kvm)) in update_vttbr()
409 if (!need_new_vmid_gen(kvm)) { in update_vttbr()
433 kvm->arch.vmid_gen = atomic64_read(&kvm_vmid_gen); in update_vttbr()
434 kvm->arch.vmid = kvm_next_vmid; in update_vttbr()
438 pgd_phys = virt_to_phys(kvm_get_hwpgd(kvm)); in update_vttbr()
440 vmid = ((u64)(kvm->arch.vmid) << VTTBR_VMID_SHIFT) & VTTBR_VMID_MASK; in update_vttbr()
441 kvm->arch.vttbr = pgd_phys | vmid; in update_vttbr()
448 struct kvm *kvm = vcpu->kvm; in kvm_vcpu_first_run_init() local
460 if (unlikely(irqchip_in_kernel(kvm) && !vgic_ready(kvm))) { in kvm_vcpu_first_run_init()
461 ret = kvm_vgic_map_resources(kvm); in kvm_vcpu_first_run_init()
471 if (irqchip_in_kernel(kvm) && vgic_initialized(kvm)) in kvm_vcpu_first_run_init()
472 kvm_timer_enable(kvm); in kvm_vcpu_first_run_init()
477 bool kvm_arch_intc_initialized(struct kvm *kvm) in kvm_arch_intc_initialized() argument
479 return vgic_initialized(kvm); in kvm_arch_intc_initialized()
482 static void kvm_arm_halt_guest(struct kvm *kvm) __maybe_unused;
483 static void kvm_arm_resume_guest(struct kvm *kvm) __maybe_unused;
485 static void kvm_arm_halt_guest(struct kvm *kvm) in kvm_arm_halt_guest() argument
490 kvm_for_each_vcpu(i, vcpu, kvm) in kvm_arm_halt_guest()
495 static void kvm_arm_resume_guest(struct kvm *kvm) in kvm_arm_resume_guest() argument
500 kvm_for_each_vcpu(i, vcpu, kvm) { in kvm_arm_resume_guest()
561 update_vttbr(vcpu->kvm); in kvm_arch_vcpu_ioctl_run()
585 if (ret <= 0 || need_new_vmid_gen(vcpu->kvm) || in kvm_arch_vcpu_ioctl_run()
687 int kvm_vm_ioctl_irq_line(struct kvm *kvm, struct kvm_irq_level *irq_level, in kvm_vm_ioctl_irq_line() argument
692 int nrcpus = atomic_read(&kvm->online_vcpus); in kvm_vm_ioctl_irq_line()
704 if (irqchip_in_kernel(kvm)) in kvm_vm_ioctl_irq_line()
710 vcpu = kvm_get_vcpu(kvm, vcpu_idx); in kvm_vm_ioctl_irq_line()
719 if (!irqchip_in_kernel(kvm)) in kvm_vm_ioctl_irq_line()
725 vcpu = kvm_get_vcpu(kvm, vcpu_idx); in kvm_vm_ioctl_irq_line()
732 return kvm_vgic_inject_irq(kvm, vcpu->vcpu_id, irq_num, level); in kvm_vm_ioctl_irq_line()
734 if (!irqchip_in_kernel(kvm)) in kvm_vm_ioctl_irq_line()
740 return kvm_vgic_inject_irq(kvm, 0, irq_num, level); in kvm_vm_ioctl_irq_line()
802 stage2_unmap_vm(vcpu->kvm); in kvm_arch_vcpu_ioctl_vcpu_init()
888 int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log) in kvm_vm_ioctl_get_dirty_log() argument
893 mutex_lock(&kvm->slots_lock); in kvm_vm_ioctl_get_dirty_log()
895 r = kvm_get_dirty_log_protect(kvm, log, &is_dirty); in kvm_vm_ioctl_get_dirty_log()
898 kvm_flush_remote_tlbs(kvm); in kvm_vm_ioctl_get_dirty_log()
900 mutex_unlock(&kvm->slots_lock); in kvm_vm_ioctl_get_dirty_log()
904 static int kvm_vm_ioctl_set_device_addr(struct kvm *kvm, in kvm_vm_ioctl_set_device_addr() argument
916 return kvm_vgic_addr(kvm, type, &dev_addr->addr, true); in kvm_vm_ioctl_set_device_addr()
925 struct kvm *kvm = filp->private_data; in kvm_arch_vm_ioctl() local
930 return kvm_vgic_create(kvm, KVM_DEV_TYPE_ARM_VGIC_V2); in kvm_arch_vm_ioctl()
937 return kvm_vm_ioctl_set_device_addr(kvm, &dev_addr); in kvm_arch_vm_ioctl()
1150 struct kvm_vcpu *kvm_mpidr_to_vcpu(struct kvm *kvm, unsigned long mpidr) in kvm_mpidr_to_vcpu() argument
1156 kvm_for_each_vcpu(i, vcpu, kvm) { in kvm_mpidr_to_vcpu()