On Fri, Jun 14, 2019 at 07:57:45PM +0100, Mark Cave-Ayland wrote: > QEMU's kvm_handle_debug() function identifies software breakpoints by checking > for a value of 0 in kvm_debug_exit_arch's status field. Since this field isn't > explicitly set to 0 when the software breakpoint instruction is detected, any > previous non-zero value present causes a hang in QEMU as it tries to process > the breakpoint instruction incorrectly as a hardware breakpoint. > > Ensure that the kvm_debug_exit_arch status field is set to 0 when the software > breakpoint instruction is detected (similar to the existing logic in booke.c > and e500_emulate.c) to restore software breakpoint functionality under Book3S > PR. > > Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@xxxxxxxxxxxx> > --- > arch/powerpc/kvm/emulate.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/powerpc/kvm/emulate.c b/arch/powerpc/kvm/emulate.c > index bb4d09c1ad56..6fca38ca791f 100644 > --- a/arch/powerpc/kvm/emulate.c > +++ b/arch/powerpc/kvm/emulate.c > @@ -271,6 +271,7 @@ int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu) > */ > if (inst == KVMPPC_INST_SW_BREAKPOINT) { > run->exit_reason = KVM_EXIT_DEBUG; > + run->debug.arch.status = 0; > run->debug.arch.address = kvmppc_get_pc(vcpu); > emulated = EMULATE_EXIT_USER; > advance = 0; Thanks, applied to my kvm-ppc-next branch. Paul.