All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] exynos4210/mct: Avoid infinite loop on non incremental timers
@ 2012-12-01 17:08 Jean-Christophe DUBOIS
  2012-12-03  8:44 ` Evgeny Voevodin
  0 siblings, 1 reply; 2+ messages in thread
From: Jean-Christophe DUBOIS @ 2012-12-01 17:08 UTC (permalink / raw)
  To: qemu-devel, e.voevodin, m.kozlov, Igor Mitsyanko, d.solodkiy
  Cc: Jean-Christophe Dubois

Check for a 0 "distance" value to avoid infinite loop when the
expired FCR timer was not programed with auto-increment.

With this change the behavior is coherent with the same type
of code in the exynos4210_gfrc_restart() function in the same
file.

Linux seems to mostly use this timer with auto-increment
which explain why it is not a problem most of the time.

However other OS might have a problem with this if they
don't use the auto-increment feature.

Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net>
---
  hw/exynos4210_mct.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/exynos4210_mct.c b/hw/exynos4210_mct.c
index e79cd6a..31a41d5 100644
--- a/hw/exynos4210_mct.c
+++ b/hw/exynos4210_mct.c
@@ -568,7 +568,7 @@ static void exynos4210_gfrc_event(void *opaque)
      /* Reload FRC to reach nearest comparator */
      s->g_timer.curr_comp = exynos4210_gcomp_find(s);
      distance = exynos4210_gcomp_get_distance(s, s->g_timer.curr_comp);
-    if (distance > MCT_GT_COUNTER_STEP) {
+    if ((distance > MCT_GT_COUNTER_STEP) || !distance) {
          distance = MCT_GT_COUNTER_STEP;
      }
      exynos4210_gfrc_set_count(&s->g_timer, distance);
--

1.7.9.5

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

end of thread, other threads:[~2012-12-03  8:44 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-01 17:08 [Qemu-devel] [PATCH] exynos4210/mct: Avoid infinite loop on non incremental timers Jean-Christophe DUBOIS
2012-12-03  8:44 ` Evgeny Voevodin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.