On 19 June 2018 at 03:08, Guenter Roeck <li...@roeck-us.net> wrote: > The CMSDK APB timer is currently always configured as periodic timer. > This results in the following messages when trying to boot Linux. > > Timer with delta zero, disabling > > If the timer limit set with the RELOAD command is 0, the timer > needs to be enabled as one-shot timer. > > Signed-off-by: Guenter Roeck <li...@roeck-us.net> > --- > hw/timer/cmsdk-apb-timer.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/timer/cmsdk-apb-timer.c b/hw/timer/cmsdk-apb-timer.c > index 9878746..79c1b49 100644 > --- a/hw/timer/cmsdk-apb-timer.c > +++ b/hw/timer/cmsdk-apb-timer.c > @@ -119,7 +119,7 @@ static void cmsdk_apb_timer_write(void *opaque, hwaddr > offset, uint64_t value, > } > s->ctrl = value & 0xf; > if (s->ctrl & R_CTRL_EN_MASK) { > - ptimer_run(s->timer, 0); > + ptimer_run(s->timer, ptimer_get_limit(s->timer) == 0); > } else { > ptimer_stop(s->timer); > } > -- > 2.7.4
Thanks for this patch. I was wondering whether it would be better just to remove the fprintf message instead. I'll either apply this or send a patch to do that before 3.0, anyway. I think we also want to make sure we convert back to a periodic timer if the reload register is written with a nonzero value before the timer expires (and that if that happens after the timer expired that we restart the timer). Thinking about this is also on my todo list. -- PMM