Lines Matching full:run

157 int kvm_emu_iocsr(larch_inst inst, struct kvm_run *run, struct kvm_vcpu *vcpu)  in kvm_emu_iocsr()  argument
170 run->iocsr_io.phys_addr = addr; in kvm_emu_iocsr()
171 run->iocsr_io.is_write = 0; in kvm_emu_iocsr()
177 run->iocsr_io.len = 1; in kvm_emu_iocsr()
180 run->iocsr_io.len = 2; in kvm_emu_iocsr()
183 run->iocsr_io.len = 4; in kvm_emu_iocsr()
186 run->iocsr_io.len = 8; in kvm_emu_iocsr()
189 run->iocsr_io.len = 1; in kvm_emu_iocsr()
190 run->iocsr_io.is_write = 1; in kvm_emu_iocsr()
193 run->iocsr_io.len = 2; in kvm_emu_iocsr()
194 run->iocsr_io.is_write = 1; in kvm_emu_iocsr()
197 run->iocsr_io.len = 4; in kvm_emu_iocsr()
198 run->iocsr_io.is_write = 1; in kvm_emu_iocsr()
201 run->iocsr_io.len = 8; in kvm_emu_iocsr()
202 run->iocsr_io.is_write = 1; in kvm_emu_iocsr()
208 if (run->iocsr_io.is_write) { in kvm_emu_iocsr()
210 ret = kvm_io_bus_write(vcpu, KVM_IOCSR_BUS, addr, run->iocsr_io.len, val); in kvm_emu_iocsr()
217 memcpy(run->iocsr_io.data, val, run->iocsr_io.len); in kvm_emu_iocsr()
219 trace_kvm_iocsr(KVM_TRACE_IOCSR_WRITE, run->iocsr_io.len, addr, val); in kvm_emu_iocsr()
222 ret = kvm_io_bus_read(vcpu, KVM_IOCSR_BUS, addr, run->iocsr_io.len, val); in kvm_emu_iocsr()
231 trace_kvm_iocsr(KVM_TRACE_IOCSR_READ, run->iocsr_io.len, addr, NULL); in kvm_emu_iocsr()
237 int kvm_complete_iocsr_read(struct kvm_vcpu *vcpu, struct kvm_run *run) in kvm_complete_iocsr_read() argument
242 switch (run->iocsr_io.len) { in kvm_complete_iocsr_read()
244 *gpr = *(s8 *)run->iocsr_io.data; in kvm_complete_iocsr_read()
247 *gpr = *(s16 *)run->iocsr_io.data; in kvm_complete_iocsr_read()
250 *gpr = *(s32 *)run->iocsr_io.data; in kvm_complete_iocsr_read()
253 *gpr = *(s64 *)run->iocsr_io.data; in kvm_complete_iocsr_read()
257 run->iocsr_io.len, vcpu->arch.badv); in kvm_complete_iocsr_read()
281 struct kvm_run *run = vcpu->run; in kvm_trap_handle_gspr() local
306 er = kvm_emu_iocsr(inst, run, vcpu); in kvm_trap_handle_gspr()
354 vcpu->run->exit_reason = KVM_EXIT_MMIO; in kvm_handle_gspr()
357 vcpu->run->exit_reason = KVM_EXIT_LOONGARCH_IOCSR; in kvm_handle_gspr()
371 struct kvm_run *run = vcpu->run; in kvm_emu_mmio_read() local
373 run->mmio.phys_addr = vcpu->arch.badv; in kvm_emu_mmio_read()
385 run->mmio.len = 4; in kvm_emu_mmio_read()
388 run->mmio.len = 8; in kvm_emu_mmio_read()
400 run->mmio.len = 1; in kvm_emu_mmio_read()
404 run->mmio.len = 1; in kvm_emu_mmio_read()
407 run->mmio.len = 2; in kvm_emu_mmio_read()
411 run->mmio.len = 2; in kvm_emu_mmio_read()
414 run->mmio.len = 4; in kvm_emu_mmio_read()
418 run->mmio.len = 4; in kvm_emu_mmio_read()
421 run->mmio.len = 8; in kvm_emu_mmio_read()
434 run->mmio.len = 1; in kvm_emu_mmio_read()
437 run->mmio.len = 1; in kvm_emu_mmio_read()
441 run->mmio.len = 2; in kvm_emu_mmio_read()
444 run->mmio.len = 2; in kvm_emu_mmio_read()
448 run->mmio.len = 4; in kvm_emu_mmio_read()
451 run->mmio.len = 4; in kvm_emu_mmio_read()
455 run->mmio.len = 8; in kvm_emu_mmio_read()
467 trace_kvm_mmio(KVM_TRACE_MMIO_READ, run->mmio.len, run->mmio.phys_addr, NULL); in kvm_emu_mmio_read()
476 run->mmio.len, &vcpu->arch.gprs[rd]); in kvm_emu_mmio_read()
486 run->mmio.is_write = 0; in kvm_emu_mmio_read()
499 int kvm_complete_mmio_read(struct kvm_vcpu *vcpu, struct kvm_run *run) in kvm_complete_mmio_read() argument
506 switch (run->mmio.len) { in kvm_complete_mmio_read()
509 *gpr = *(s8 *)run->mmio.data; in kvm_complete_mmio_read()
511 *gpr = *(u8 *)run->mmio.data; in kvm_complete_mmio_read()
515 *gpr = *(s16 *)run->mmio.data; in kvm_complete_mmio_read()
517 *gpr = *(u16 *)run->mmio.data; in kvm_complete_mmio_read()
521 *gpr = *(s32 *)run->mmio.data; in kvm_complete_mmio_read()
523 *gpr = *(u32 *)run->mmio.data; in kvm_complete_mmio_read()
526 *gpr = *(s64 *)run->mmio.data; in kvm_complete_mmio_read()
530 run->mmio.len, vcpu->arch.badv); in kvm_complete_mmio_read()
535 trace_kvm_mmio(KVM_TRACE_MMIO_READ, run->mmio.len, in kvm_complete_mmio_read()
536 run->mmio.phys_addr, run->mmio.data); in kvm_complete_mmio_read()
546 struct kvm_run *run = vcpu->run; in kvm_emu_mmio_write() local
547 void *data = run->mmio.data; in kvm_emu_mmio_write()
557 run->mmio.phys_addr = vcpu->arch.badv; in kvm_emu_mmio_write()
566 run->mmio.len = 4; in kvm_emu_mmio_write()
570 run->mmio.len = 8; in kvm_emu_mmio_write()
585 run->mmio.len = 1; in kvm_emu_mmio_write()
589 run->mmio.len = 2; in kvm_emu_mmio_write()
593 run->mmio.len = 4; in kvm_emu_mmio_write()
597 run->mmio.len = 8; in kvm_emu_mmio_write()
611 run->mmio.len = 1; in kvm_emu_mmio_write()
615 run->mmio.len = 2; in kvm_emu_mmio_write()
619 run->mmio.len = 4; in kvm_emu_mmio_write()
623 run->mmio.len = 8; in kvm_emu_mmio_write()
636 trace_kvm_mmio(KVM_TRACE_MMIO_WRITE, run->mmio.len, run->mmio.phys_addr, data); in kvm_emu_mmio_write()
644 ret = kvm_io_bus_write(vcpu, KVM_MMIO_BUS, vcpu->arch.badv, run->mmio.len, data); in kvm_emu_mmio_write()
649 run->mmio.is_write = 1; in kvm_emu_mmio_write()
669 struct kvm_run *run = vcpu->run; in kvm_handle_rdwr_fault() local
698 run->exit_reason = KVM_EXIT_MMIO; in kvm_handle_rdwr_fault()
718 int kvm_complete_user_service(struct kvm_vcpu *vcpu, struct kvm_run *run) in kvm_complete_user_service() argument
721 kvm_write_reg(vcpu, LOONGARCH_GPR_A0, run->hypercall.ret); in kvm_complete_user_service()
735 struct kvm_run *run = vcpu->run; in kvm_handle_fpu_disabled() local
749 run->exit_reason = KVM_EXIT_INTERNAL_ERROR; in kvm_handle_fpu_disabled()
897 vcpu->run->exit_reason = KVM_EXIT_HYPERCALL; in kvm_handle_hypercall()
898 vcpu->run->hypercall.nr = KVM_HCALL_USER_SERVICE; in kvm_handle_hypercall()
899 vcpu->run->hypercall.args[0] = kvm_read_reg(vcpu, LOONGARCH_GPR_A0); in kvm_handle_hypercall()
900 vcpu->run->hypercall.args[1] = kvm_read_reg(vcpu, LOONGARCH_GPR_A1); in kvm_handle_hypercall()
901 vcpu->run->hypercall.args[2] = kvm_read_reg(vcpu, LOONGARCH_GPR_A2); in kvm_handle_hypercall()
902 vcpu->run->hypercall.args[3] = kvm_read_reg(vcpu, LOONGARCH_GPR_A3); in kvm_handle_hypercall()
903 vcpu->run->hypercall.args[4] = kvm_read_reg(vcpu, LOONGARCH_GPR_A4); in kvm_handle_hypercall()
904 vcpu->run->hypercall.args[5] = kvm_read_reg(vcpu, LOONGARCH_GPR_A5); in kvm_handle_hypercall()
905 vcpu->run->hypercall.flags = 0; in kvm_handle_hypercall()
909 vcpu->run->hypercall.ret = KVM_HCALL_INVALID_CODE; in kvm_handle_hypercall()
915 vcpu->run->exit_reason = KVM_EXIT_DEBUG; in kvm_handle_hypercall()