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 <aurel...@aurel32.net> > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > 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 <m...@tls.msk.ru> 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