qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] dyntick timer stall
@ 2008-07-19  9:13 andrzej zaborowski
  2008-07-19 10:20 ` [Qemu-devel] " Jan Kiszka
  0 siblings, 1 reply; 3+ messages in thread
From: andrzej zaborowski @ 2008-07-19  9:13 UTC (permalink / raw)
  To: qemu-devel mailing list

With dyntick enabled I see qemu-system-arm lock up after a while (stay
in code_gen_buffer) due to no more signals reaching qemu. This happens
after a couple of seconds of constantly rearming the host timer with
250usec period (MIN_TIMER_REARM_US).

The offender is audio which, if the QEMU_AUDIO_TIMER_PERIOD env
variable is unset, requests audio_timer() be called every 1 vm_clock
tick, resulting in a negative period in qemu_next_deadline_dyntick
which is then trimmed to MIN_TIMER_REARM_US. It seems to be a problem
in host's timer_settime() though.

timer_settime is constantly called with 250usec as parameter without
the timeout having passed, and then after it's called for the last
time, no signal arrives in the main thread for at least a couple of
minutes. The host is x86_64 Linux 2.6, what may be causing this and
what may be a fix?

Regards

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Qemu-devel] Re: dyntick timer stall
  2008-07-19  9:13 [Qemu-devel] dyntick timer stall andrzej zaborowski
@ 2008-07-19 10:20 ` Jan Kiszka
  2008-07-19 12:55   ` andrzej zaborowski
  0 siblings, 1 reply; 3+ messages in thread
From: Jan Kiszka @ 2008-07-19 10:20 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 1300 bytes --]

andrzej zaborowski wrote:
> With dyntick enabled I see qemu-system-arm lock up after a while (stay
> in code_gen_buffer) due to no more signals reaching qemu. This happens
> after a couple of seconds of constantly rearming the host timer with
> 250usec period (MIN_TIMER_REARM_US).
> 
> The offender is audio which, if the QEMU_AUDIO_TIMER_PERIOD env
> variable is unset, requests audio_timer() be called every 1 vm_clock
> tick, resulting in a negative period in qemu_next_deadline_dyntick
> which is then trimmed to MIN_TIMER_REARM_US. It seems to be a problem
> in host's timer_settime() though.
> 
> timer_settime is constantly called with 250usec as parameter without
> the timeout having passed, and then after it's called for the last
> time, no signal arrives in the main thread for at least a couple of
> minutes. The host is x86_64 Linux 2.6, what may be causing this and
> what may be a fix?

Cannot confirm: I'm running the Musicpal with SVN head on OpenSuse 11.0
(2.6.25.9, SMP) without problems. And when I attach strace to that
process, I see continuous dumps of

timer_settime(0, 0, {it_interval={0, 0}, it_value={0, 250000}}, NULL) = 0
--- SIGALRM (Alarm clock) @ 0 (0) ---

Can you capture the strace of qemu, or does the issue flee in that case?

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] Re: dyntick timer stall
  2008-07-19 10:20 ` [Qemu-devel] " Jan Kiszka
@ 2008-07-19 12:55   ` andrzej zaborowski
  0 siblings, 0 replies; 3+ messages in thread
From: andrzej zaborowski @ 2008-07-19 12:55 UTC (permalink / raw)
  To: qemu-devel

2008/7/19 Jan Kiszka <jan.kiszka@web.de>:
> andrzej zaborowski wrote:
>> With dyntick enabled I see qemu-system-arm lock up after a while (stay
>> in code_gen_buffer) due to no more signals reaching qemu. This happens
>> after a couple of seconds of constantly rearming the host timer with
>> 250usec period (MIN_TIMER_REARM_US).
>>
>> The offender is audio which, if the QEMU_AUDIO_TIMER_PERIOD env
>> variable is unset, requests audio_timer() be called every 1 vm_clock
>> tick, resulting in a negative period in qemu_next_deadline_dyntick
>> which is then trimmed to MIN_TIMER_REARM_US. It seems to be a problem
>> in host's timer_settime() though.
>>
>> timer_settime is constantly called with 250usec as parameter without
>> the timeout having passed, and then after it's called for the last
>> time, no signal arrives in the main thread for at least a couple of
>> minutes. The host is x86_64 Linux 2.6, what may be causing this and
>> what may be a fix?
>
> Cannot confirm: I'm running the Musicpal with SVN head on OpenSuse 11.0
> (2.6.25.9, SMP) without problems. And when I attach strace to that
> process, I see continuous dumps of

Uh, you're right, the signal is there and I wasn't looking at the
right function.  The signal handler doesn't manage to cause an exit
from the cpu loop, looks very similar to an issue that got fixed
before TCG introduction.

>
> timer_settime(0, 0, {it_interval={0, 0}, it_value={0, 250000}}, NULL) = 0
> --- SIGALRM (Alarm clock) @ 0 (0) ---
>
> Can you capture the strace of qemu, or does the issue flee in that case?

Yes, I'm now seeing --- SIGALRM (Alarm clock) @ 0 (0) --- as the last
line from strace and later only some serial port writes before stall.

Regards

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-07-19 12:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-19  9:13 [Qemu-devel] dyntick timer stall andrzej zaborowski
2008-07-19 10:20 ` [Qemu-devel] " Jan Kiszka
2008-07-19 12:55   ` andrzej zaborowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).