qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] Re: [PATCH, RFC] qemu-timer: fix alarm_timer pending


From: TeLeMan
Subject: [Qemu-devel] Re: [PATCH, RFC] qemu-timer: fix alarm_timer pending
Date: Fri, 19 Mar 2010 17:47:03 +0800

On Fri, Mar 19, 2010 at 17:33, Paolo Bonzini <address@hidden> wrote:
> On 03/19/2010 06:24 AM, TeLeMan wrote:
>>
>> I fetched the lastest qemu-timer codes and found qemu would have no
>> response when the guest os was WinXP and the timer was "dynticks" on
>> the win32 host.  After qemu froze, it seemed the win32_rearm_timer()
>> would never be called and alarm_timer->pending was always 0.
>> I could not find the more deeper reason and just referred to the
>> previous implement to make this patch.
>
> Interesting, it ran fine for me under Wine.
>
> I can see why the patch you have works, but I don't think it's 100% correct.
>  alarm_timer->pending should remain 1 until qemu_run_all_timers runs.  Can
> you test this one instead:

Yes, I did test this one firstly. It's working also but different with
the previous implement and I didn't know the exact reason, so I made
the another patch.


> diff --git a/qemu-timer.c b/qemu-timer.c
> index 329d3a4..49eac86 100644
> --- a/qemu-timer.c
> +++ b/qemu-timer.c
> @@ -706,14 +706,14 @@ void configure_icount(const char *option)
>
>  void qemu_run_all_timers(void)
>  {
> +    alarm_timer->pending = 0;
> +
>     /* rearm timer, if not periodic */
>     if (alarm_timer->expired) {
>         alarm_timer->expired = 0;
>         qemu_rearm_alarm_timer(alarm_timer);
>     }
>
> -    alarm_timer->pending = 0;
> -
>     /* vm time timers */
>     if (vm_running) {
>         qemu_run_timers(vm_clock);
>
>
> If it doesn't work, I'm fine with TeLeMan's patch.
>
> Paolo
>




reply via email to

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