Lines Matching refs:run
94 vcpu->run->exit_reason = KVM_EXIT_INTR; in kvmppc_prepare_to_enter()
281 int kvmppc_emulate_mmio(struct kvm_run *run, struct kvm_vcpu *vcpu) in kvmppc_emulate_mmio() argument
297 run->exit_reason = KVM_EXIT_MMIO; in kvmppc_emulate_mmio()
1111 struct kvm_run *run) in kvmppc_complete_mmio_load() argument
1115 if (run->mmio.len > sizeof(gpr)) { in kvmppc_complete_mmio_load()
1116 printk(KERN_ERR "bad MMIO length: %d\n", run->mmio.len); in kvmppc_complete_mmio_load()
1121 switch (run->mmio.len) { in kvmppc_complete_mmio_load()
1122 case 8: gpr = *(u64 *)run->mmio.data; break; in kvmppc_complete_mmio_load()
1123 case 4: gpr = *(u32 *)run->mmio.data; break; in kvmppc_complete_mmio_load()
1124 case 2: gpr = *(u16 *)run->mmio.data; break; in kvmppc_complete_mmio_load()
1125 case 1: gpr = *(u8 *)run->mmio.data; break; in kvmppc_complete_mmio_load()
1128 switch (run->mmio.len) { in kvmppc_complete_mmio_load()
1129 case 8: gpr = swab64(*(u64 *)run->mmio.data); break; in kvmppc_complete_mmio_load()
1130 case 4: gpr = swab32(*(u32 *)run->mmio.data); break; in kvmppc_complete_mmio_load()
1131 case 2: gpr = swab16(*(u16 *)run->mmio.data); break; in kvmppc_complete_mmio_load()
1132 case 1: gpr = *(u8 *)run->mmio.data; break; in kvmppc_complete_mmio_load()
1137 if ((vcpu->arch.mmio_sp64_extend) && (run->mmio.len == 4)) in kvmppc_complete_mmio_load()
1141 switch (run->mmio.len) { in kvmppc_complete_mmio_load()
1222 static int __kvmppc_handle_load(struct kvm_run *run, struct kvm_vcpu *vcpu, in __kvmppc_handle_load() argument
1236 if (bytes > sizeof(run->mmio.data)) { in __kvmppc_handle_load()
1238 run->mmio.len); in __kvmppc_handle_load()
1241 run->mmio.phys_addr = vcpu->arch.paddr_accessed; in __kvmppc_handle_load()
1242 run->mmio.len = bytes; in __kvmppc_handle_load()
1243 run->mmio.is_write = 0; in __kvmppc_handle_load()
1253 ret = kvm_io_bus_read(vcpu, KVM_MMIO_BUS, run->mmio.phys_addr, in __kvmppc_handle_load()
1254 bytes, &run->mmio.data); in __kvmppc_handle_load()
1259 kvmppc_complete_mmio_load(vcpu, run); in __kvmppc_handle_load()
1267 int kvmppc_handle_load(struct kvm_run *run, struct kvm_vcpu *vcpu, in kvmppc_handle_load() argument
1271 return __kvmppc_handle_load(run, vcpu, rt, bytes, is_default_endian, 0); in kvmppc_handle_load()
1276 int kvmppc_handle_loads(struct kvm_run *run, struct kvm_vcpu *vcpu, in kvmppc_handle_loads() argument
1280 return __kvmppc_handle_load(run, vcpu, rt, bytes, is_default_endian, 1); in kvmppc_handle_loads()
1284 int kvmppc_handle_vsx_load(struct kvm_run *run, struct kvm_vcpu *vcpu, in kvmppc_handle_vsx_load() argument
1295 emulated = __kvmppc_handle_load(run, vcpu, rt, bytes, in kvmppc_handle_vsx_load()
1301 vcpu->arch.paddr_accessed += run->mmio.len; in kvmppc_handle_vsx_load()
1310 int kvmppc_handle_store(struct kvm_run *run, struct kvm_vcpu *vcpu, in kvmppc_handle_store() argument
1313 void *data = run->mmio.data; in kvmppc_handle_store()
1324 if (bytes > sizeof(run->mmio.data)) { in kvmppc_handle_store()
1326 run->mmio.len); in kvmppc_handle_store()
1329 run->mmio.phys_addr = vcpu->arch.paddr_accessed; in kvmppc_handle_store()
1330 run->mmio.len = bytes; in kvmppc_handle_store()
1331 run->mmio.is_write = 1; in kvmppc_handle_store()
1357 ret = kvm_io_bus_write(vcpu, KVM_MMIO_BUS, run->mmio.phys_addr, in kvmppc_handle_store()
1358 bytes, &run->mmio.data); in kvmppc_handle_store()
1426 int kvmppc_handle_vsx_store(struct kvm_run *run, struct kvm_vcpu *vcpu, in kvmppc_handle_vsx_store() argument
1442 emulated = kvmppc_handle_store(run, vcpu, in kvmppc_handle_vsx_store()
1448 vcpu->arch.paddr_accessed += run->mmio.len; in kvmppc_handle_vsx_store()
1458 struct kvm_run *run) in kvmppc_emulate_mmio_vsx_loadstore() argument
1463 vcpu->arch.paddr_accessed += run->mmio.len; in kvmppc_emulate_mmio_vsx_loadstore()
1466 emulated = kvmppc_handle_vsx_load(run, vcpu, vcpu->arch.io_gpr, in kvmppc_emulate_mmio_vsx_loadstore()
1467 run->mmio.len, 1, vcpu->arch.mmio_sign_extend); in kvmppc_emulate_mmio_vsx_loadstore()
1469 emulated = kvmppc_handle_vsx_store(run, vcpu, in kvmppc_emulate_mmio_vsx_loadstore()
1470 vcpu->arch.io_gpr, run->mmio.len, 1); in kvmppc_emulate_mmio_vsx_loadstore()
1475 run->exit_reason = KVM_EXIT_MMIO; in kvmppc_emulate_mmio_vsx_loadstore()
1480 run->exit_reason = KVM_EXIT_INTERNAL_ERROR; in kvmppc_emulate_mmio_vsx_loadstore()
1481 run->internal.suberror = KVM_INTERNAL_ERROR_EMULATION; in kvmppc_emulate_mmio_vsx_loadstore()
1493 int kvmppc_handle_vmx_load(struct kvm_run *run, struct kvm_vcpu *vcpu, in kvmppc_handle_vmx_load() argument
1502 emulated = __kvmppc_handle_load(run, vcpu, rt, bytes, in kvmppc_handle_vmx_load()
1508 vcpu->arch.paddr_accessed += run->mmio.len; in kvmppc_handle_vmx_load()
1588 int kvmppc_handle_vmx_store(struct kvm_run *run, struct kvm_vcpu *vcpu, in kvmppc_handle_vmx_store() argument
1623 emulated = kvmppc_handle_store(run, vcpu, val, bytes, in kvmppc_handle_vmx_store()
1628 vcpu->arch.paddr_accessed += run->mmio.len; in kvmppc_handle_vmx_store()
1637 struct kvm_run *run) in kvmppc_emulate_mmio_vmx_loadstore() argument
1642 vcpu->arch.paddr_accessed += run->mmio.len; in kvmppc_emulate_mmio_vmx_loadstore()
1645 emulated = kvmppc_handle_vmx_load(run, vcpu, in kvmppc_emulate_mmio_vmx_loadstore()
1646 vcpu->arch.io_gpr, run->mmio.len, 1); in kvmppc_emulate_mmio_vmx_loadstore()
1648 emulated = kvmppc_handle_vmx_store(run, vcpu, in kvmppc_emulate_mmio_vmx_loadstore()
1649 vcpu->arch.io_gpr, run->mmio.len, 1); in kvmppc_emulate_mmio_vmx_loadstore()
1654 run->exit_reason = KVM_EXIT_MMIO; in kvmppc_emulate_mmio_vmx_loadstore()
1659 run->exit_reason = KVM_EXIT_INTERNAL_ERROR; in kvmppc_emulate_mmio_vmx_loadstore()
1660 run->internal.suberror = KVM_INTERNAL_ERROR_EMULATION; in kvmppc_emulate_mmio_vmx_loadstore()
1768 int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run) in kvm_arch_vcpu_ioctl_run() argument
1777 kvmppc_complete_mmio_load(vcpu, run); in kvm_arch_vcpu_ioctl_run()
1785 r = kvmppc_emulate_mmio_vsx_loadstore(vcpu, run); in kvm_arch_vcpu_ioctl_run()
1799 r = kvmppc_emulate_mmio_vmx_loadstore(vcpu, run); in kvm_arch_vcpu_ioctl_run()
1807 u64 *gprs = run->osi.gprs; in kvm_arch_vcpu_ioctl_run()
1816 kvmppc_set_gpr(vcpu, 3, run->papr_hcall.ret); in kvm_arch_vcpu_ioctl_run()
1818 kvmppc_set_gpr(vcpu, 4 + i, run->papr_hcall.args[i]); in kvm_arch_vcpu_ioctl_run()
1822 kvmppc_set_epr(vcpu, run->epr.epr); in kvm_arch_vcpu_ioctl_run()
1829 if (run->immediate_exit) in kvm_arch_vcpu_ioctl_run()
1832 r = kvmppc_vcpu_run(run, vcpu); in kvm_arch_vcpu_ioctl_run()