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

Reply via email to