linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] kvm-pr: manage illegal instructions
@ 2016-03-15 20:18 Laurent Vivier
  2016-03-22 10:11 ` Laurent Vivier
                   ` (3 more replies)
  0 siblings, 4 replies; 19+ messages in thread
From: Laurent Vivier @ 2016-03-15 20:18 UTC (permalink / raw)
  To: kvm-ppc, kvm
  Cc: Gleb Natapov, Paolo Bonzini, Alexander Graf,
	Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman,
	linuxppc-dev, linux-kernel, Laurent Vivier

While writing some instruction tests for kvm-unit-tests for powerpc,
I've found that illegal instructions are not managed correctly with kvm-pr,
while it is fine with kvm-hv.

When an illegal instruction (like ".long 0") is processed by kvm-pr,
the kernel logs are filled with:

     Couldn't emulate instruction 0x00000000 (op 0 xop 0)
     kvmppc_handle_exit_pr: emulation at 700 failed (00000000)

While the exception handler receives an interrupt for each instruction
executed after the illegal instruction.

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
 arch/powerpc/kvm/book3s_emulate.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/kvm/book3s_emulate.c b/arch/powerpc/kvm/book3s_emulate.c
index 2afdb9c..4ee969d 100644
--- a/arch/powerpc/kvm/book3s_emulate.c
+++ b/arch/powerpc/kvm/book3s_emulate.c
@@ -99,7 +99,6 @@ int kvmppc_core_emulate_op_pr(struct kvm_run *run, struct kvm_vcpu *vcpu,
 
 	switch (get_op(inst)) {
 	case 0:
-		emulated = EMULATE_FAIL;
 		if ((kvmppc_get_msr(vcpu) & MSR_LE) &&
 		    (inst == swab32(inst_sc))) {
 			/*
@@ -112,6 +111,9 @@ int kvmppc_core_emulate_op_pr(struct kvm_run *run, struct kvm_vcpu *vcpu,
 			kvmppc_set_gpr(vcpu, 3, EV_UNIMPLEMENTED);
 			kvmppc_set_pc(vcpu, kvmppc_get_pc(vcpu) + 4);
 			emulated = EMULATE_DONE;
+		} else {
+			kvmppc_core_queue_program(vcpu, SRR1_PROGILL);
+			emulated = EMULATE_AGAIN;
 		}
 		break;
 	case 19:
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2016-05-19  7:12 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-15 20:18 [PATCH] kvm-pr: manage illegal instructions Laurent Vivier
2016-03-22 10:11 ` Laurent Vivier
2016-04-07 11:31 ` Laurent Vivier
2016-04-21  9:25 ` Thomas Huth
2016-05-09  8:14   ` Thomas Huth
2016-05-10 17:25     ` Paolo Bonzini
2016-05-11 10:35 ` Alexander Graf
2016-05-11 11:14   ` Laurent Vivier
2016-05-11 11:49     ` Alexander Graf
2016-05-12  9:10       ` Laurent Vivier
2016-05-12  9:27         ` Alexander Graf
2016-05-12 14:23           ` Laurent Vivier
2016-05-17  8:35             ` Laurent Vivier
2016-05-17  8:37               ` Alexander Graf
2016-05-17 17:49                 ` Laurent Vivier
2016-05-18 10:18                   ` Thomas Huth
2016-05-18 10:53                     ` Thomas Huth
2016-05-18 18:39                       ` Thomas Huth
2016-05-19  7:11                       ` Thomas Huth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).