We had trouble with the latest QEMU 0.8.1 tree (http://xenbits.xensource.com/chris/xs-tools-ioemu.pq.hg). Basically, QEMU window appeared but freezed immediately. This happened to both 32-bit and 64-bit hypervisors. The root cause of this problem is in vnc-fixes patch. It removes initialization of gui_timer (see below), which actually is used by gui_update() in vl.c. Retaining these two statements will fix the problem and QEMU can perform normally. ==========diff -r 15da4d2106fe vl.c --- a/vl.c Thu Jul 06 14:27:28 2006 +0100 +++ b/vl.c Thu Jul 06 20:19:49 2006 +0100 @@ -5972,8 +5972,7 @@ int main(int argc, char **argv) kernel_filename, kernel_cmdline, initrd_filename, timeoffset); - gui_timer = qemu_new_timer(rt_clock, gui_update, NULL); <==- qemu_mod_timer(gui_timer, qemu_get_clock(rt_clock)); <==+ display_state.dpy_refresh(&display_state); #ifdef CONFIG_GDBSTUB if (use_gdbstub) { ... ========== _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Christian Limpach
2006-Jul-11 22:33 UTC
Re: [Xen-devel] [Bug] Fix for QEMU 0.8.1 Window Freeze
On 7/11/06, Huang2, Wei <Wei.Huang2@amd.com> wrote:> We had trouble with the latest QEMU 0.8.1 tree > (http://xenbits.xensource.com/chris/xs-tools-ioemu.pq.hg). Basically, > QEMU window appeared but freezed immediately. This happened to both > 32-bit and 64-bit hypervisors. > > The root cause of this problem is in vnc-fixes patch. It removes > initialization of gui_timer (see below), which actually is used by > gui_update() in vl.c. Retaining these two statements will fix the > problem and QEMU can perform normally.That''s not the root cause because the gui_timer is obselete, or at least it should be. gui_update only calls display_state.dpy_refresh but the vnc-fixes patch also changes vnc_update_client to call dpy_refresh and that gets called from the vs->timer. Could you check if somehow the vnc_update_client doesn''t get called for you? christian> > > ==========> diff -r 15da4d2106fe vl.c > --- a/vl.c Thu Jul 06 14:27:28 2006 +0100 > +++ b/vl.c Thu Jul 06 20:19:49 2006 +0100 > @@ -5972,8 +5972,7 @@ int main(int argc, char **argv) > kernel_filename, kernel_cmdline, initrd_filename, > timeoffset); > > - gui_timer = qemu_new_timer(rt_clock, gui_update, NULL); <==> - qemu_mod_timer(gui_timer, qemu_get_clock(rt_clock)); <==> + display_state.dpy_refresh(&display_state); > > #ifdef CONFIG_GDBSTUB > if (use_gdbstub) { > ... > ==========> > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
The discrepancy comes from the guest configuration file. With [sdl=0 and vnc=1], vnc-fixes patch works fine. However, if DomU uses [sdl=1 and vnc=0], I think vnc_update_client() will not be called. -Wei -----Original Message----- From: Christian Limpach [mailto:christian.limpach@gmail.com] Sent: Tuesday, July 11, 2006 5:34 PM To: Huang2, Wei Cc: Christian Limpach; xen-devel@lists.xensource.com Subject: Re: [Xen-devel] [Bug] Fix for QEMU 0.8.1 Window Freeze On 7/11/06, Huang2, Wei <Wei.Huang2@amd.com> wrote:> We had trouble with the latest QEMU 0.8.1 tree > (http://xenbits.xensource.com/chris/xs-tools-ioemu.pq.hg). Basically, > QEMU window appeared but freezed immediately. This happened to both > 32-bit and 64-bit hypervisors. > > The root cause of this problem is in vnc-fixes patch. It removes > initialization of gui_timer (see below), which actually is used by > gui_update() in vl.c. Retaining these two statements will fix the > problem and QEMU can perform normally.That''s not the root cause because the gui_timer is obselete, or at least it should be. gui_update only calls display_state.dpy_refresh but the vnc-fixes patch also changes vnc_update_client to call dpy_refresh and that gets called from the vs->timer. Could you check if somehow the vnc_update_client doesn''t get called for you? christian> > > ==========> diff -r 15da4d2106fe vl.c > --- a/vl.c Thu Jul 06 14:27:28 2006 +0100 > +++ b/vl.c Thu Jul 06 20:19:49 2006 +0100 > @@ -5972,8 +5972,7 @@ int main(int argc, char **argv) > kernel_filename, kernel_cmdline, initrd_filename, > timeoffset); > > - gui_timer = qemu_new_timer(rt_clock, gui_update, NULL); <==> - qemu_mod_timer(gui_timer, qemu_get_clock(rt_clock)); <==> + display_state.dpy_refresh(&display_state); > > #ifdef CONFIG_GDBSTUB > if (use_gdbstub) { > ... > ==========> > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Christian Limpach
2006-Jul-11 23:22 UTC
Re: [Xen-devel] [Bug] Fix for QEMU 0.8.1 Window Freeze
On 12/7/06 12:19, "Huang2, Wei" <Wei.Huang2@amd.com> wrote:> The discrepancy comes from the guest configuration file. With [sdl=0 and > vnc=1], vnc-fixes patch works fine. However, if DomU uses [sdl=1 and > vnc=0], I think vnc_update_client() will not be called.Ah yes, good point, then the fix is to use the gui_timer only when sdl is enabled. Thanks. christian> > -Wei > -----Original Message----- > From: Christian Limpach [mailto:christian.limpach@gmail.com] > Sent: Tuesday, July 11, 2006 5:34 PM > To: Huang2, Wei > Cc: Christian Limpach; xen-devel@lists.xensource.com > Subject: Re: [Xen-devel] [Bug] Fix for QEMU 0.8.1 Window Freeze > > On 7/11/06, Huang2, Wei <Wei.Huang2@amd.com> wrote: >> We had trouble with the latest QEMU 0.8.1 tree >> (http://xenbits.xensource.com/chris/xs-tools-ioemu.pq.hg). Basically, >> QEMU window appeared but freezed immediately. This happened to both >> 32-bit and 64-bit hypervisors. >> >> The root cause of this problem is in vnc-fixes patch. It removes >> initialization of gui_timer (see below), which actually is used by >> gui_update() in vl.c. Retaining these two statements will fix the >> problem and QEMU can perform normally. > > That''s not the root cause because the gui_timer is obselete, or at > least it should be. > > gui_update only calls display_state.dpy_refresh but the vnc-fixes > patch also changes vnc_update_client to call dpy_refresh and that gets > called from the vs->timer. > > Could you check if somehow the vnc_update_client doesn''t get called for > you? > > christian > >> >> >> ==========>> diff -r 15da4d2106fe vl.c >> --- a/vl.c Thu Jul 06 14:27:28 2006 +0100 >> +++ b/vl.c Thu Jul 06 20:19:49 2006 +0100 >> @@ -5972,8 +5972,7 @@ int main(int argc, char **argv) >> kernel_filename, kernel_cmdline, initrd_filename, >> timeoffset); >> >> - gui_timer = qemu_new_timer(rt_clock, gui_update, NULL); <==>> - qemu_mod_timer(gui_timer, qemu_get_clock(rt_clock)); <==>> + display_state.dpy_refresh(&display_state); >> >> #ifdef CONFIG_GDBSTUB >> if (use_gdbstub) { >> ... >> ==========>> >> >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@lists.xensource.com >> http://lists.xensource.com/xen-devel >> > > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel