From: Guenter Roeck Date: Mon, 9 Jul 2018 13:51:34 +0000 (+0100) Subject: hw/timer/cmsdk-apb-timer: Correctly identify and set one-shot mode X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=0e256833085cc9d292e59a5bda9b886fd09a5f83;p=qemu.git hw/timer/cmsdk-apb-timer: Correctly identify and set one-shot mode 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 Reviewed-by: Richard Henderson Reviewed-by: Peter Maydell Tested-by: Guenter Roeck Signed-off-by: Peter Maydell --- diff --git a/hw/timer/cmsdk-apb-timer.c b/hw/timer/cmsdk-apb-timer.c index 1f99081db1..3ebdc7be40 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); }