diff options
Diffstat (limited to 'arch/powerpc/kvm/powerpc.c')
-rw-r--r-- | arch/powerpc/kvm/powerpc.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c index fe0257a8e335..cfa6cfabf4a3 100644 --- a/arch/powerpc/kvm/powerpc.c +++ b/arch/powerpc/kvm/powerpc.c | |||
@@ -280,6 +280,9 @@ int kvmppc_emulate_mmio(struct kvm_run *run, struct kvm_vcpu *vcpu) | |||
280 | * actually modified. */ | 280 | * actually modified. */ |
281 | r = RESUME_GUEST_NV; | 281 | r = RESUME_GUEST_NV; |
282 | break; | 282 | break; |
283 | case EMULATE_AGAIN: | ||
284 | r = RESUME_GUEST; | ||
285 | break; | ||
283 | case EMULATE_DO_MMIO: | 286 | case EMULATE_DO_MMIO: |
284 | run->exit_reason = KVM_EXIT_MMIO; | 287 | run->exit_reason = KVM_EXIT_MMIO; |
285 | /* We must reload nonvolatiles because "update" load/store | 288 | /* We must reload nonvolatiles because "update" load/store |
@@ -289,11 +292,15 @@ int kvmppc_emulate_mmio(struct kvm_run *run, struct kvm_vcpu *vcpu) | |||
289 | r = RESUME_HOST_NV; | 292 | r = RESUME_HOST_NV; |
290 | break; | 293 | break; |
291 | case EMULATE_FAIL: | 294 | case EMULATE_FAIL: |
295 | { | ||
296 | u32 last_inst; | ||
297 | |||
298 | kvmppc_get_last_inst(vcpu, false, &last_inst); | ||
292 | /* XXX Deliver Program interrupt to guest. */ | 299 | /* XXX Deliver Program interrupt to guest. */ |
293 | printk(KERN_EMERG "%s: emulation failed (%08x)\n", __func__, | 300 | pr_emerg("%s: emulation failed (%08x)\n", __func__, last_inst); |
294 | kvmppc_get_last_inst(vcpu)); | ||
295 | r = RESUME_HOST; | 301 | r = RESUME_HOST; |
296 | break; | 302 | break; |
303 | } | ||
297 | default: | 304 | default: |
298 | WARN_ON(1); | 305 | WARN_ON(1); |
299 | r = RESUME_GUEST; | 306 | r = RESUME_GUEST; |