diff options
author | Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru> | 2017-01-26 15:34:18 +0300 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2017-01-27 18:07:30 +0100 |
commit | 8499c8fca1ee9af86f1ad8d6daaddf053830aca2 (patch) | |
tree | 0bc24bc48b88e26e226f6d61ff0954923fdb75c4 | |
parent | 9c2037d0a41d3d55b17a68e42e815be45036d8d2 (diff) |
replay: exception replay fix
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>
-rw-r--r-- | translate-all.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/translate-all.c b/translate-all.c index 20262938bb..6d2fcabca7 100644 --- a/translate-all.c +++ b/translate-all.c @@ -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); } |