Lines Matching refs:vcpu
113 int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) in kvm_arch_vcpu_runnable() argument
115 return !!(vcpu->arch.pending_exceptions); in kvm_arch_vcpu_runnable()
118 bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu) in kvm_arch_vcpu_in_kernel() argument
123 int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu) in kvm_arch_vcpu_should_kick() argument
177 struct kvm_vcpu *vcpu; in kvm_mips_free_vcpus() local
179 kvm_for_each_vcpu(i, vcpu, kvm) { in kvm_mips_free_vcpus()
180 kvm_vcpu_destroy(vcpu); in kvm_mips_free_vcpus()
297 struct kvm_vcpu *vcpu; in kvm_mips_comparecount_wakeup() local
299 vcpu = container_of(timer, struct kvm_vcpu, arch.comparecount_timer); in kvm_mips_comparecount_wakeup()
301 kvm_mips_callbacks->queue_timer_int(vcpu); in kvm_mips_comparecount_wakeup()
303 vcpu->arch.wait = 0; in kvm_mips_comparecount_wakeup()
304 rcuwait_wake_up(&vcpu->wait); in kvm_mips_comparecount_wakeup()
306 return kvm_mips_count_timeout(vcpu); in kvm_mips_comparecount_wakeup()
314 int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu) in kvm_arch_vcpu_create() argument
321 vcpu->kvm, vcpu->vcpu_id, vcpu); in kvm_arch_vcpu_create()
323 err = kvm_mips_callbacks->vcpu_init(vcpu); in kvm_arch_vcpu_create()
327 hrtimer_init(&vcpu->arch.comparecount_timer, CLOCK_MONOTONIC, in kvm_arch_vcpu_create()
329 vcpu->arch.comparecount_timer.function = kvm_mips_comparecount_wakeup; in kvm_arch_vcpu_create()
362 vcpu->arch.guest_ebase = gebase; in kvm_arch_vcpu_create()
389 vcpu->arch.vcpu_run = p; in kvm_arch_vcpu_create()
396 dump_handler("kvm_vcpu_run", vcpu->arch.vcpu_run, p); in kvm_arch_vcpu_create()
399 dump_handler("kvm_exit", gebase + 0x2000, vcpu->arch.vcpu_run); in kvm_arch_vcpu_create()
406 vcpu->arch.last_sched_cpu = -1; in kvm_arch_vcpu_create()
407 vcpu->arch.last_exec_cpu = -1; in kvm_arch_vcpu_create()
410 err = kvm_mips_callbacks->vcpu_setup(vcpu); in kvm_arch_vcpu_create()
419 kvm_mips_callbacks->vcpu_uninit(vcpu); in kvm_arch_vcpu_create()
423 void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) in kvm_arch_vcpu_destroy() argument
425 hrtimer_cancel(&vcpu->arch.comparecount_timer); in kvm_arch_vcpu_destroy()
427 kvm_mips_dump_stats(vcpu); in kvm_arch_vcpu_destroy()
429 kvm_mmu_free_memory_caches(vcpu); in kvm_arch_vcpu_destroy()
430 kfree(vcpu->arch.guest_ebase); in kvm_arch_vcpu_destroy()
432 kvm_mips_callbacks->vcpu_uninit(vcpu); in kvm_arch_vcpu_destroy()
435 int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu, in kvm_arch_vcpu_ioctl_set_guest_debug() argument
441 int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) in kvm_arch_vcpu_ioctl_run() argument
445 vcpu_load(vcpu); in kvm_arch_vcpu_ioctl_run()
447 kvm_sigset_activate(vcpu); in kvm_arch_vcpu_ioctl_run()
449 if (vcpu->mmio_needed) { in kvm_arch_vcpu_ioctl_run()
450 if (!vcpu->mmio_is_write) in kvm_arch_vcpu_ioctl_run()
451 kvm_mips_complete_mmio_load(vcpu); in kvm_arch_vcpu_ioctl_run()
452 vcpu->mmio_needed = 0; in kvm_arch_vcpu_ioctl_run()
455 if (vcpu->run->immediate_exit) in kvm_arch_vcpu_ioctl_run()
462 trace_kvm_enter(vcpu); in kvm_arch_vcpu_ioctl_run()
470 smp_store_mb(vcpu->mode, IN_GUEST_MODE); in kvm_arch_vcpu_ioctl_run()
472 r = kvm_mips_callbacks->vcpu_run(vcpu); in kvm_arch_vcpu_ioctl_run()
474 trace_kvm_out(vcpu); in kvm_arch_vcpu_ioctl_run()
479 kvm_sigset_deactivate(vcpu); in kvm_arch_vcpu_ioctl_run()
481 vcpu_put(vcpu); in kvm_arch_vcpu_ioctl_run()
485 int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu, in kvm_vcpu_ioctl_interrupt() argument
499 dvcpu = vcpu; in kvm_vcpu_ioctl_interrupt()
501 dvcpu = vcpu->kvm->vcpus[irq->cpu]; in kvm_vcpu_ioctl_interrupt()
521 int kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu, in kvm_arch_vcpu_ioctl_get_mpstate() argument
527 int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu, in kvm_arch_vcpu_ioctl_set_mpstate() argument
584 static unsigned long kvm_mips_num_regs(struct kvm_vcpu *vcpu) in kvm_mips_num_regs() argument
589 if (kvm_mips_guest_can_have_fpu(&vcpu->arch)) { in kvm_mips_num_regs()
595 if (kvm_mips_guest_can_have_msa(&vcpu->arch)) in kvm_mips_num_regs()
597 ret += kvm_mips_callbacks->num_regs(vcpu); in kvm_mips_num_regs()
602 static int kvm_mips_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *indices) in kvm_mips_copy_reg_indices() argument
612 if (kvm_mips_guest_can_have_fpu(&vcpu->arch)) { in kvm_mips_copy_reg_indices()
635 if (kvm_mips_guest_can_have_msa(&vcpu->arch)) { in kvm_mips_copy_reg_indices()
649 return kvm_mips_callbacks->copy_reg_indices(vcpu, indices); in kvm_mips_copy_reg_indices()
652 static int kvm_mips_get_reg(struct kvm_vcpu *vcpu, in kvm_mips_get_reg() argument
655 struct mips_coproc *cop0 = vcpu->arch.cop0; in kvm_mips_get_reg()
656 struct mips_fpu_struct *fpu = &vcpu->arch.fpu; in kvm_mips_get_reg()
665 v = (long)vcpu->arch.gprs[reg->id - KVM_REG_MIPS_R0]; in kvm_mips_get_reg()
669 v = (long)vcpu->arch.hi; in kvm_mips_get_reg()
672 v = (long)vcpu->arch.lo; in kvm_mips_get_reg()
676 v = (long)vcpu->arch.pc; in kvm_mips_get_reg()
681 if (!kvm_mips_guest_has_fpu(&vcpu->arch)) in kvm_mips_get_reg()
691 if (!kvm_mips_guest_has_fpu(&vcpu->arch)) in kvm_mips_get_reg()
700 if (!kvm_mips_guest_has_fpu(&vcpu->arch)) in kvm_mips_get_reg()
705 if (!kvm_mips_guest_has_fpu(&vcpu->arch)) in kvm_mips_get_reg()
712 if (!kvm_mips_guest_has_msa(&vcpu->arch)) in kvm_mips_get_reg()
729 if (!kvm_mips_guest_has_msa(&vcpu->arch)) in kvm_mips_get_reg()
734 if (!kvm_mips_guest_has_msa(&vcpu->arch)) in kvm_mips_get_reg()
741 ret = kvm_mips_callbacks->get_one_reg(vcpu, reg, &v); in kvm_mips_get_reg()
764 static int kvm_mips_set_reg(struct kvm_vcpu *vcpu, in kvm_mips_set_reg() argument
767 struct mips_coproc *cop0 = vcpu->arch.cop0; in kvm_mips_set_reg()
768 struct mips_fpu_struct *fpu = &vcpu->arch.fpu; in kvm_mips_set_reg()
799 vcpu->arch.gprs[reg->id - KVM_REG_MIPS_R0] = v; in kvm_mips_set_reg()
803 vcpu->arch.hi = v; in kvm_mips_set_reg()
806 vcpu->arch.lo = v; in kvm_mips_set_reg()
810 vcpu->arch.pc = v; in kvm_mips_set_reg()
815 if (!kvm_mips_guest_has_fpu(&vcpu->arch)) in kvm_mips_set_reg()
825 if (!kvm_mips_guest_has_fpu(&vcpu->arch)) in kvm_mips_set_reg()
834 if (!kvm_mips_guest_has_fpu(&vcpu->arch)) in kvm_mips_set_reg()
839 if (!kvm_mips_guest_has_fpu(&vcpu->arch)) in kvm_mips_set_reg()
846 if (!kvm_mips_guest_has_msa(&vcpu->arch)) in kvm_mips_set_reg()
860 if (!kvm_mips_guest_has_msa(&vcpu->arch)) in kvm_mips_set_reg()
865 if (!kvm_mips_guest_has_msa(&vcpu->arch)) in kvm_mips_set_reg()
872 return kvm_mips_callbacks->set_one_reg(vcpu, reg, v); in kvm_mips_set_reg()
877 static int kvm_vcpu_ioctl_enable_cap(struct kvm_vcpu *vcpu, in kvm_vcpu_ioctl_enable_cap() argument
882 if (!kvm_vm_ioctl_check_extension(vcpu->kvm, cap->cap)) in kvm_vcpu_ioctl_enable_cap()
891 vcpu->arch.fpu_enabled = true; in kvm_vcpu_ioctl_enable_cap()
894 vcpu->arch.msa_enabled = true; in kvm_vcpu_ioctl_enable_cap()
907 struct kvm_vcpu *vcpu = filp->private_data; in kvm_arch_vcpu_async_ioctl() local
915 kvm_debug("[%d] %s: irq: %d\n", vcpu->vcpu_id, __func__, in kvm_arch_vcpu_async_ioctl()
918 return kvm_vcpu_ioctl_interrupt(vcpu, &irq); in kvm_arch_vcpu_async_ioctl()
927 struct kvm_vcpu *vcpu = filp->private_data; in kvm_arch_vcpu_ioctl() local
931 vcpu_load(vcpu); in kvm_arch_vcpu_ioctl()
942 r = kvm_mips_set_reg(vcpu, ®); in kvm_arch_vcpu_ioctl()
944 r = kvm_mips_get_reg(vcpu, ®); in kvm_arch_vcpu_ioctl()
956 reg_list.n = kvm_mips_num_regs(vcpu); in kvm_arch_vcpu_ioctl()
962 r = kvm_mips_copy_reg_indices(vcpu, user_list->reg); in kvm_arch_vcpu_ioctl()
971 r = kvm_vcpu_ioctl_enable_cap(vcpu, &cap); in kvm_arch_vcpu_ioctl()
978 vcpu_put(vcpu); in kvm_arch_vcpu_ioctl()
1026 int kvm_arch_vcpu_ioctl_get_sregs(struct kvm_vcpu *vcpu, in kvm_arch_vcpu_ioctl_get_sregs() argument
1032 int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu, in kvm_arch_vcpu_ioctl_set_sregs() argument
1038 void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu) in kvm_arch_vcpu_postcreate() argument
1042 int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) in kvm_arch_vcpu_ioctl_get_fpu() argument
1047 int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) in kvm_arch_vcpu_ioctl_set_fpu() argument
1052 vm_fault_t kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf) in kvm_arch_vcpu_fault() argument
1104 int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu) in kvm_cpu_has_pending_timer() argument
1106 return kvm_mips_pending_timer(vcpu) || in kvm_cpu_has_pending_timer()
1107 kvm_read_c0_guest_cause(vcpu->arch.cop0) & C_TI; in kvm_cpu_has_pending_timer()
1110 int kvm_arch_vcpu_dump_regs(struct kvm_vcpu *vcpu) in kvm_arch_vcpu_dump_regs() argument
1115 if (!vcpu) in kvm_arch_vcpu_dump_regs()
1119 kvm_debug("\tpc = 0x%08lx\n", vcpu->arch.pc); in kvm_arch_vcpu_dump_regs()
1120 kvm_debug("\texceptions: %08lx\n", vcpu->arch.pending_exceptions); in kvm_arch_vcpu_dump_regs()
1124 vcpu->arch.gprs[i], in kvm_arch_vcpu_dump_regs()
1125 vcpu->arch.gprs[i + 1], in kvm_arch_vcpu_dump_regs()
1126 vcpu->arch.gprs[i + 2], vcpu->arch.gprs[i + 3]); in kvm_arch_vcpu_dump_regs()
1128 kvm_debug("\thi: 0x%08lx\n", vcpu->arch.hi); in kvm_arch_vcpu_dump_regs()
1129 kvm_debug("\tlo: 0x%08lx\n", vcpu->arch.lo); in kvm_arch_vcpu_dump_regs()
1131 cop0 = vcpu->arch.cop0; in kvm_arch_vcpu_dump_regs()
1141 int kvm_arch_vcpu_ioctl_set_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs) in kvm_arch_vcpu_ioctl_set_regs() argument
1145 vcpu_load(vcpu); in kvm_arch_vcpu_ioctl_set_regs()
1147 for (i = 1; i < ARRAY_SIZE(vcpu->arch.gprs); i++) in kvm_arch_vcpu_ioctl_set_regs()
1148 vcpu->arch.gprs[i] = regs->gpr[i]; in kvm_arch_vcpu_ioctl_set_regs()
1149 vcpu->arch.gprs[0] = 0; /* zero is special, and cannot be set. */ in kvm_arch_vcpu_ioctl_set_regs()
1150 vcpu->arch.hi = regs->hi; in kvm_arch_vcpu_ioctl_set_regs()
1151 vcpu->arch.lo = regs->lo; in kvm_arch_vcpu_ioctl_set_regs()
1152 vcpu->arch.pc = regs->pc; in kvm_arch_vcpu_ioctl_set_regs()
1154 vcpu_put(vcpu); in kvm_arch_vcpu_ioctl_set_regs()
1158 int kvm_arch_vcpu_ioctl_get_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs) in kvm_arch_vcpu_ioctl_get_regs() argument
1162 vcpu_load(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
1164 for (i = 0; i < ARRAY_SIZE(vcpu->arch.gprs); i++) in kvm_arch_vcpu_ioctl_get_regs()
1165 regs->gpr[i] = vcpu->arch.gprs[i]; in kvm_arch_vcpu_ioctl_get_regs()
1167 regs->hi = vcpu->arch.hi; in kvm_arch_vcpu_ioctl_get_regs()
1168 regs->lo = vcpu->arch.lo; in kvm_arch_vcpu_ioctl_get_regs()
1169 regs->pc = vcpu->arch.pc; in kvm_arch_vcpu_ioctl_get_regs()
1171 vcpu_put(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
1175 int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu, in kvm_arch_vcpu_ioctl_translate() argument
1195 int kvm_mips_handle_exit(struct kvm_vcpu *vcpu) in kvm_mips_handle_exit() argument
1197 struct kvm_run *run = vcpu->run; in kvm_mips_handle_exit()
1198 u32 cause = vcpu->arch.host_cp0_cause; in kvm_mips_handle_exit()
1200 u32 __user *opc = (u32 __user *) vcpu->arch.pc; in kvm_mips_handle_exit()
1201 unsigned long badvaddr = vcpu->arch.host_cp0_badvaddr; in kvm_mips_handle_exit()
1206 vcpu->mode = OUTSIDE_GUEST_MODE; in kvm_mips_handle_exit()
1221 cause, opc, run, vcpu); in kvm_mips_handle_exit()
1222 trace_kvm_exit(vcpu, exccode); in kvm_mips_handle_exit()
1226 kvm_debug("[%d]EXCCODE_INT @ %p\n", vcpu->vcpu_id, opc); in kvm_mips_handle_exit()
1228 ++vcpu->stat.int_exits; in kvm_mips_handle_exit()
1239 ++vcpu->stat.cop_unusable_exits; in kvm_mips_handle_exit()
1240 ret = kvm_mips_callbacks->handle_cop_unusable(vcpu); in kvm_mips_handle_exit()
1247 ++vcpu->stat.tlbmod_exits; in kvm_mips_handle_exit()
1248 ret = kvm_mips_callbacks->handle_tlb_mod(vcpu); in kvm_mips_handle_exit()
1253 cause, kvm_read_c0_guest_status(vcpu->arch.cop0), opc, in kvm_mips_handle_exit()
1256 ++vcpu->stat.tlbmiss_st_exits; in kvm_mips_handle_exit()
1257 ret = kvm_mips_callbacks->handle_tlb_st_miss(vcpu); in kvm_mips_handle_exit()
1264 ++vcpu->stat.tlbmiss_ld_exits; in kvm_mips_handle_exit()
1265 ret = kvm_mips_callbacks->handle_tlb_ld_miss(vcpu); in kvm_mips_handle_exit()
1269 ++vcpu->stat.addrerr_st_exits; in kvm_mips_handle_exit()
1270 ret = kvm_mips_callbacks->handle_addr_err_st(vcpu); in kvm_mips_handle_exit()
1274 ++vcpu->stat.addrerr_ld_exits; in kvm_mips_handle_exit()
1275 ret = kvm_mips_callbacks->handle_addr_err_ld(vcpu); in kvm_mips_handle_exit()
1279 ++vcpu->stat.syscall_exits; in kvm_mips_handle_exit()
1280 ret = kvm_mips_callbacks->handle_syscall(vcpu); in kvm_mips_handle_exit()
1284 ++vcpu->stat.resvd_inst_exits; in kvm_mips_handle_exit()
1285 ret = kvm_mips_callbacks->handle_res_inst(vcpu); in kvm_mips_handle_exit()
1289 ++vcpu->stat.break_inst_exits; in kvm_mips_handle_exit()
1290 ret = kvm_mips_callbacks->handle_break(vcpu); in kvm_mips_handle_exit()
1294 ++vcpu->stat.trap_inst_exits; in kvm_mips_handle_exit()
1295 ret = kvm_mips_callbacks->handle_trap(vcpu); in kvm_mips_handle_exit()
1299 ++vcpu->stat.msa_fpe_exits; in kvm_mips_handle_exit()
1300 ret = kvm_mips_callbacks->handle_msa_fpe(vcpu); in kvm_mips_handle_exit()
1304 ++vcpu->stat.fpe_exits; in kvm_mips_handle_exit()
1305 ret = kvm_mips_callbacks->handle_fpe(vcpu); in kvm_mips_handle_exit()
1309 ++vcpu->stat.msa_disabled_exits; in kvm_mips_handle_exit()
1310 ret = kvm_mips_callbacks->handle_msa_disabled(vcpu); in kvm_mips_handle_exit()
1315 ret = kvm_mips_callbacks->handle_guest_exit(vcpu); in kvm_mips_handle_exit()
1322 kvm_get_badinstr(opc, vcpu, &inst); in kvm_mips_handle_exit()
1325 kvm_read_c0_guest_status(vcpu->arch.cop0)); in kvm_mips_handle_exit()
1326 kvm_arch_vcpu_dump_regs(vcpu); in kvm_mips_handle_exit()
1336 kvm_vz_acquire_htimer(vcpu); in kvm_mips_handle_exit()
1339 kvm_mips_deliver_interrupts(vcpu, cause); in kvm_mips_handle_exit()
1346 ++vcpu->stat.signal_exits; in kvm_mips_handle_exit()
1347 trace_kvm_exit(vcpu, KVM_TRACE_EXIT_SIGNAL); in kvm_mips_handle_exit()
1352 trace_kvm_reenter(vcpu); in kvm_mips_handle_exit()
1360 smp_store_mb(vcpu->mode, IN_GUEST_MODE); in kvm_mips_handle_exit()
1362 kvm_mips_callbacks->vcpu_reenter(vcpu); in kvm_mips_handle_exit()
1373 if (kvm_mips_guest_has_fpu(&vcpu->arch) && in kvm_mips_handle_exit()
1375 __kvm_restore_fcsr(&vcpu->arch); in kvm_mips_handle_exit()
1377 if (kvm_mips_guest_has_msa(&vcpu->arch) && in kvm_mips_handle_exit()
1379 __kvm_restore_msacsr(&vcpu->arch); in kvm_mips_handle_exit()
1385 void kvm_own_fpu(struct kvm_vcpu *vcpu) in kvm_own_fpu() argument
1387 struct mips_coproc *cop0 = vcpu->arch.cop0; in kvm_own_fpu()
1401 vcpu->arch.aux_inuse & KVM_MIPS_AUX_MSA) in kvm_own_fpu()
1402 kvm_lose_fpu(vcpu); in kvm_own_fpu()
1416 if (!(vcpu->arch.aux_inuse & KVM_MIPS_AUX_FPU)) { in kvm_own_fpu()
1417 __kvm_restore_fpu(&vcpu->arch); in kvm_own_fpu()
1418 vcpu->arch.aux_inuse |= KVM_MIPS_AUX_FPU; in kvm_own_fpu()
1419 trace_kvm_aux(vcpu, KVM_TRACE_AUX_RESTORE, KVM_TRACE_AUX_FPU); in kvm_own_fpu()
1421 trace_kvm_aux(vcpu, KVM_TRACE_AUX_ENABLE, KVM_TRACE_AUX_FPU); in kvm_own_fpu()
1429 void kvm_own_msa(struct kvm_vcpu *vcpu) in kvm_own_msa() argument
1431 struct mips_coproc *cop0 = vcpu->arch.cop0; in kvm_own_msa()
1440 if (kvm_mips_guest_has_fpu(&vcpu->arch)) { in kvm_own_msa()
1448 (vcpu->arch.aux_inuse & (KVM_MIPS_AUX_FPU | in kvm_own_msa()
1450 kvm_lose_fpu(vcpu); in kvm_own_msa()
1463 switch (vcpu->arch.aux_inuse & (KVM_MIPS_AUX_FPU | KVM_MIPS_AUX_MSA)) { in kvm_own_msa()
1468 __kvm_restore_msa_upper(&vcpu->arch); in kvm_own_msa()
1469 vcpu->arch.aux_inuse |= KVM_MIPS_AUX_MSA; in kvm_own_msa()
1470 trace_kvm_aux(vcpu, KVM_TRACE_AUX_RESTORE, KVM_TRACE_AUX_MSA); in kvm_own_msa()
1474 __kvm_restore_msa(&vcpu->arch); in kvm_own_msa()
1475 vcpu->arch.aux_inuse |= KVM_MIPS_AUX_MSA; in kvm_own_msa()
1476 if (kvm_mips_guest_has_fpu(&vcpu->arch)) in kvm_own_msa()
1477 vcpu->arch.aux_inuse |= KVM_MIPS_AUX_FPU; in kvm_own_msa()
1478 trace_kvm_aux(vcpu, KVM_TRACE_AUX_RESTORE, in kvm_own_msa()
1482 trace_kvm_aux(vcpu, KVM_TRACE_AUX_ENABLE, KVM_TRACE_AUX_MSA); in kvm_own_msa()
1491 void kvm_drop_fpu(struct kvm_vcpu *vcpu) in kvm_drop_fpu() argument
1494 if (cpu_has_msa && vcpu->arch.aux_inuse & KVM_MIPS_AUX_MSA) { in kvm_drop_fpu()
1496 trace_kvm_aux(vcpu, KVM_TRACE_AUX_DISCARD, KVM_TRACE_AUX_MSA); in kvm_drop_fpu()
1497 vcpu->arch.aux_inuse &= ~KVM_MIPS_AUX_MSA; in kvm_drop_fpu()
1499 if (vcpu->arch.aux_inuse & KVM_MIPS_AUX_FPU) { in kvm_drop_fpu()
1501 trace_kvm_aux(vcpu, KVM_TRACE_AUX_DISCARD, KVM_TRACE_AUX_FPU); in kvm_drop_fpu()
1502 vcpu->arch.aux_inuse &= ~KVM_MIPS_AUX_FPU; in kvm_drop_fpu()
1508 void kvm_lose_fpu(struct kvm_vcpu *vcpu) in kvm_lose_fpu() argument
1518 if (cpu_has_msa && vcpu->arch.aux_inuse & KVM_MIPS_AUX_MSA) { in kvm_lose_fpu()
1519 __kvm_save_msa(&vcpu->arch); in kvm_lose_fpu()
1520 trace_kvm_aux(vcpu, KVM_TRACE_AUX_SAVE, KVM_TRACE_AUX_FPU_MSA); in kvm_lose_fpu()
1524 if (vcpu->arch.aux_inuse & KVM_MIPS_AUX_FPU) { in kvm_lose_fpu()
1528 vcpu->arch.aux_inuse &= ~(KVM_MIPS_AUX_FPU | KVM_MIPS_AUX_MSA); in kvm_lose_fpu()
1529 } else if (vcpu->arch.aux_inuse & KVM_MIPS_AUX_FPU) { in kvm_lose_fpu()
1530 __kvm_save_fpu(&vcpu->arch); in kvm_lose_fpu()
1531 vcpu->arch.aux_inuse &= ~KVM_MIPS_AUX_FPU; in kvm_lose_fpu()
1532 trace_kvm_aux(vcpu, KVM_TRACE_AUX_SAVE, KVM_TRACE_AUX_FPU); in kvm_lose_fpu()