qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 1/2] arm_timer: reload timer when enabled
@ 2010-05-02  9:50 Rabin Vincent
  2010-05-02  9:50 ` [Qemu-devel] [PATCH 2/2] arm_timer: fix oneshot mode Rabin Vincent
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Rabin Vincent @ 2010-05-02  9:50 UTC (permalink / raw)
  To: qemu-devel; +Cc: Rabin Vincent

Reload the timer when TimerControl is written, if the timer is to be
enabled.  Otherwise, if an earlier write to TimerLoad was done while
periodic mode was not set, s->delta may incorrectly still have the value
of the maximum limit instead of the value written to TimerLoad.

This problem is evident on versatileap on current linux-next, which
enables TIMER_CTRL_32BIT before writing to TimerLoad and then enabling
periodic mode and starting the timer.  This causes the first periodic
tick to be scheduled to occur after 0xffffffff periods, leading to a
perceived hang while the kernel waits for the first timer tick.

Signed-off-by: Rabin Vincent <rabin@rab.in>
---
 hw/arm_timer.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/hw/arm_timer.c b/hw/arm_timer.c
index 9fef191..5b6947a 100644
--- a/hw/arm_timer.c
+++ b/hw/arm_timer.c
@@ -113,7 +113,7 @@ static void arm_timer_write(void *opaque, target_phys_addr_t offset,
         case 1: freq >>= 4; break;
         case 2: freq >>= 8; break;
         }
-        arm_timer_recalibrate(s, 0);
+        arm_timer_recalibrate(s, s->control & TIMER_CTRL_ENABLE);
         ptimer_set_freq(s->timer, freq);
         if (s->control & TIMER_CTRL_ENABLE) {
             /* Restart the timer if still enabled.  */
-- 
1.7.0.4

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

end of thread, other threads:[~2010-05-21 10:03 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-02  9:50 [Qemu-devel] [PATCH 1/2] arm_timer: reload timer when enabled Rabin Vincent
2010-05-02  9:50 ` [Qemu-devel] [PATCH 2/2] arm_timer: fix oneshot mode Rabin Vincent
2010-05-21 10:00   ` Aurelien Jarno
2010-05-20 17:27 ` [Qemu-devel] Re: [PATCH 1/2] arm_timer: reload timer when enabled Rabin Vincent
2010-05-21 10:00 ` [Qemu-devel] " Aurelien Jarno

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).