On Wed, May 18, 2016 at 09:01:20PM +0200, Thomas Huth wrote: > If kvmppc_handle_exit_pr() calls kvmppc_emulate_instruction() to emulate > one instruction (in the BOOK3S_INTERRUPT_H_EMUL_ASSIST case), it calls > kvmppc_core_queue_program() afterwards if kvmppc_emulate_instruction() > returned EMULATE_FAIL, so the guest gets an program interrupt for the > illegal opcode. > However, the kvmppc_emulate_instruction() also tried to inject a > program exception for this already, so the program interrupt gets > injected twice and the return address in srr0 gets destroyed. > All other callers of kvmppc_emulate_instruction() are also injecting > a program interrupt, and since the callers have the right knowledge > about the srr1 flags that should be used, it is the function > kvmppc_emulate_instruction() that should _not_ inject program > interrupts, so remove the kvmppc_core_queue_program() here. > > This fixes the issue discovered by Laurent Vivier with kvm-unit-tests > where the logs are filled with these messages when the test tries > to execute an illegal instruction: > > Couldn't emulate instruction 0x00000000 (op 0 xop 0) > kvmppc_handle_exit_pr: emulation at 700 failed (00000000) > > Signed-off-by: Thomas Huth <thuth@xxxxxxxxxx> Thanks, applied to my kvm-ppc-next branch (with adjusted subject). Paul. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html