qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] arm/translate-a64: treat DISAS_UPDATE as varian


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH] arm/translate-a64: treat DISAS_UPDATE as variant of DISAS_EXIT
Date: Tue, 20 Mar 2018 11:04:49 +0000

On 20 March 2018 at 06:12, Victor Kamensky <address@hidden> wrote:
> In OE project 4.15 linux kernel boot hang was observed under
> single cpu aarch64 qemu. Kernel code was in a loop waiting for
> vtimer arrival, spinning in TC generated blocks, while interrupt
> was pending unprocessed. This happened because when qemu tried to
> handle vtimer interrupt target had interrupts disabled, as
> result flag indicating TCG exit, cpu->icount_decr.u16.high,
> was cleared but arm_cpu_exec_interrupt function did not call
> arm_cpu_do_interrupt to process interrupt. Latter when target
> reenabled interrupts, it happened without exit into main loop, so
> following code that waited for result of interrupt execution
> run in infinite loop.
>
> To solve the problem instructions that operate on CPU sys state
> (i.e enable/disable interrupt), and marked as DISAS_UPDATE,
> should be considered as DISAS_EXIT variant, and should be
> forced to exit back to main loop so qemu will have a chance
> processing pending CPU state updates, including pending
> interrupts.
>
> This change brings consistency with how DISAS_UPDATE is treated
> in aarch32 case.
>
> CC: Peter Maydell <address@hidden>
> CC: Alex Bennée <address@hidden>
> CC: address@hidden
> Suggested-by: Peter Maydell <address@hidden>
> Signed-off-by: Victor Kamensky <address@hidden>
> Reviewed-by: Richard Henderson <address@hidden>



Applied to target-arm.next, thanks.

-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]