]> git.proxmox.com Git - mirror_qemu.git/commitdiff
replay: exception replay fix
authorPavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
Thu, 26 Jan 2017 12:34:18 +0000 (15:34 +0300)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 27 Jan 2017 17:07:30 +0000 (18:07 +0100)
This patch fixes replaying the exception when TB cache is full.
It breaks cpu loop execution through setting exception_index
to process such queued work as TB flush.

v8: moved setting of exeption_index to tb_gen_code

Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
Message-Id: <20170126123418.5412.33815.stgit@PASHA-ISP>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
translate-all.c

index 20262938bb707388d5e8f9b6a6b87376fa8cc4fc..6d2fcabca792a5e54af2bda1e95ea28c837b2338 100644 (file)
@@ -1290,6 +1290,8 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
         /* flush must be done */
         tb_flush(cpu);
         mmap_unlock();
+        /* Make the execution loop process the flush as soon as possible.  */
+        cpu->exception_index = EXCP_INTERRUPT;
         cpu_loop_exit(cpu);
     }