qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH for 1.2] qemu-timer: properly arm alarm timer fo


From: Michael Tokarev
Subject: Re: [Qemu-devel] [PATCH for 1.2] qemu-timer: properly arm alarm timer for timers set by device initialization
Date: Tue, 04 Sep 2012 11:06:48 +0400
User-agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.6esrpre) Gecko/20120817 Icedove/10.0.6

On 03.09.2012 19:34, Paolo Bonzini wrote:
> QEMU will hang when fed the following command-line
> 
>   qemu-system-mips -kernel vmlinux-2.6.32-5-4kc-malta -append "console=ttyS0" 
> -nographic -net none
> 
> The -net none is important otherwise it seems some events are generated
> causing the things to work. When it doesn't work, the guest hangs when
> measuring the CPU frequency, after the following line:
> 
>   [    0.000000] NR_IRQS:256
> 
> Pressing a key on the serial port unblocks it, hinting that the problem
> is due to the recent elimination of the 1 second timeout in the main
> loop.
> 
> The problem is that because init_timer_alarm sets the timer's pending
> flag to true, the alarm timer is never armed until after the first time
> through the main loop.  Thus the bug started when QEMU started testing
> the pending flag in qemu_mod_timer (commit 1828be3, more alarm timer
> cleanup, 2010-03-10).
> 
> But actually, it isn't true at all that a timer is pending when the
> alarm timer is created, and the real bug has been latent forever: the
> fix is to remove the bogus setting of pending flag.
> 
> Reported-by: Aurelien Jarno <address@hidden>
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
>  qemu-timer.c | 3 ---
>  1 file modificato, 3 rimozioni(-)
> 
> diff --git a/qemu-timer.c b/qemu-timer.c
> index 5aea94e..c7a1551 100644
> --- a/qemu-timer.c
> +++ b/qemu-timer.c
> @@ -759,11 +759,8 @@ int init_timer_alarm(void)
>          goto fail;
>      }
>  
> -    /* first event is at time 0 */
>      atexit(quit_timers);
> -    t->pending = true;
>      alarm_timer = t;
> -
>      return 0;
>  
>  fail:

This also fixes the pty-char hang I reported yesterday
in thread "apparently missing yet another notify_event()".

Tested-By: Michael Tokarev <address@hidden>

This should go to 1.1-stable too, as this problem exists
there, with both -net none and -serial pty being reproducers.
Cc'ing -stable.

Thanks!

/mjt



reply via email to

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