On 2 July 2018 at 16:05, Peter Maydell <peter.mayd...@linaro.org> wrote: > One thing I do notice reading the code is that we don't > actually do anything to re-enable the timer on a write to > the VALUE register. We call ptimer_set_count(), but that will > not reenable the timer if it was disabled -- the cmsdk timer > code needs to call ptimer_run() if necessary, I think. But > that bug should manifest whether we're setting the timer up > as a one-shot or as a periodic with a 0 limit, because > ptimer_tick() will disable the timer when it fires whichever > way we do that.
...but as it happens the Linux driver doesn't rely on this: https://elixir.bootlin.com/linux/v4.18-rc3/source/drivers/clocksource/mps2-timer.c#L66 mps2_timer_set_next_event() always writes both VALUE and the CTRL register, so it will re-enable the timer anyway and avoid this QEMU bug. thanks -- PMM