--- target-ppc/helper.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) Index: qemu/target-ppc/helper.c =================================================================== --- qemu.orig/target-ppc/helper.c +++ qemu/target-ppc/helper.c @@ -1493,10 +1493,12 @@ void do_store_msr (CPUPPCState *env, tar break; } if (enter_pm) { - /* power save: exit cpu loop */ - env->halted = 1; - env->exception_index = EXCP_HLT; - cpu_loop_exit(); + if (likely(!env->halted)) { + /* power save: exit cpu loop */ + env->halted = 1; + env->exception_index = EXCP_HLT; + cpu_loop_exit(); + } } }