--- a/cpus.c
+++ b/cpus.c
@@ -131,6 +131,10 @@ static void do_vm_stop(int reason)
 
 static int cpu_can_run(CPUState *env)
 {
+    if (env->halted) {
+        return 0;
+    }
+
     if (env->stop) {
         return 0;
     }
