Procházet zdrojové kódy

KVM: PPC: Pass through program interrupts

When we get a program interrupt in guest kernel mode, we try to emulate the
instruction.

If that doesn't fail, we report to the user and try again - at the exact same
instruction pointer. So if the guest kernel really does trigger an invalid
instruction, we loop forever.

So let's better go and forward program exceptions to the guest when we don't
know the instruction we're supposed to emulate.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Avi Kivity <avi@redhat.com>
Alexander Graf před 16 roky
rodič
revize
5f2b105a1d
1 změnil soubory, kde provedl 1 přidání a 0 odebrání
  1. 1 0
      arch/powerpc/kvm/emulate.c

+ 1 - 0
arch/powerpc/kvm/emulate.c

@@ -476,6 +476,7 @@ int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu)
 			advance = 0;
 			advance = 0;
 			printk(KERN_ERR "Couldn't emulate instruction 0x%08x "
 			printk(KERN_ERR "Couldn't emulate instruction 0x%08x "
 			       "(op %d xop %d)\n", inst, get_op(inst), get_xop(inst));
 			       "(op %d xop %d)\n", inst, get_op(inst), get_xop(inst));
+			kvmppc_core_queue_program(vcpu, 0);
 		}
 		}
 	}
 	}