On 17/11/2017 21:07, Peter Maydell wrote: > On 16 November 2017 at 11:59, Paolo Bonzini <pbonz...@redhat.com> wrote: >> From: Pavel Dovgalyuk <pavel.dovga...@ispras.ru> >> >> This patch adds a condition before overwriting exception_index fiels. >> It is needed when exception_index is already set to some meaningful value. >> >> Signed-off-by: Pavel Dovgalyuk <pavel.dovga...@ispras.ru> >> >> Message-Id: <20171114081812.27640.26372.stgit@pasha-VirtualBox> >> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> >> --- >> accel/tcg/cpu-exec.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c >> index 61297f8f4a..0473055a08 100644 >> --- a/accel/tcg/cpu-exec.c >> +++ b/accel/tcg/cpu-exec.c >> @@ -594,7 +594,9 @@ static inline bool cpu_handle_interrupt(CPUState *cpu, >> if (unlikely(atomic_read(&cpu->exit_request) >> || (use_icount && cpu->icount_decr.u16.low + cpu->icount_extra == >> 0))) { >> atomic_set(&cpu->exit_request, 0); >> - cpu->exception_index = EXCP_INTERRUPT; >> + if (cpu->exception_index == -1) { >> + cpu->exception_index = EXCP_INTERRUPT; >> + } >> return true; >> } > > Hi. This commit breaks booting of Debian on aarch64 virt board. > (repro instructions for creating the image available at: > https://translatedcode.wordpress.com/2017/07/24/installing-debian-on-qemus-64-bit-arm-virt-board/) > The guest kernel never prints anything to the serial port. > > Reverting this commit fixes master for me, so I plan to do > that on Monday.
Maybe you can also test moving the atomic_set inside the "if". It does seem to be a genuine bugfix. Paolo