[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v12 0/9] PTimer fixes/features and ARM MPTimer conve
From: |
Dmitry Osipenko |
Subject: |
[Qemu-devel] [PATCH v12 0/9] PTimer fixes/features and ARM MPTimer conversion |
Date: |
Sat, 30 Jan 2016 19:43:09 +0300 |
Changelog for ARM MPTimer QEMUTimer to ptimer conversion:
V2: Fixed changing periodic timer counter value "on the fly". I added a
test to the gist to cover that issue.
V3: Fixed starting the timer with load = 0 and counter != 0, added tests
to the gist for this issue. Changed vmstate version for all VMSD's,
since loadvm doesn't check version of nested VMSD.
V4: Fixed spurious IT bit set for the timer starting in the periodic mode
with counter = 0. Test added.
V5: Code cleanup, now depends on ptimer_set_limit() fix.
V6: No code change, added test to check ptimer_get_count() with corrected
.limit value.
V7: No change.
V8: No change.
V9: No change.
V10: Correctly handle cases when counter = load = 0 and prescaler != 0,
i.e. triggering interrupt in that case. Call ptimer_* only when
certain MPTimer state was changed, like prescaler change. Factor out
timerblock_set_count from timerblock_run and inline both.
Tests updated.
V11: Fixed missed periodic timer stopping on setting counter => 0 with
load = 0 and prescaler = 0.
v12: Timer isn't doing uninterruptible IRQ, but ticks continuously.
On setting counter/load to 0 with prescaler != 0, timer would trigger
IRQ after one period. Verified on real HW, tests updated.
ARM MPTimer tests: https://gist.github.com/digetx/dbd46109503b1a91941a
Patches for ptimer are introduced since V5 of "ARM MPTimer conversion".
Changelog for the ptimer patches:
V5: Only fixed ptimer_set_limit() for the disabled timer.
V6: As was pointed by Peter Maydell, there are other issues beyond
ptimer_set_limit(), so V6 supposed to cover all those issues.
V7: Added accidentally removed !use_icount check.
Added missed "else" statement.
V8: Adjust period instead of the limit and do it for periodic timer only
(.limit adjusting bug). Added patch/fix for freq/period change and
ptimer_get_count() improvement.
V9: Don't do wrap around if counter == 0, otherwise polled periodic
timer won't ever return counter = 0.
V10: Addressed V8/9 review comments.
Adjust timer period based on delta instead of limit.
Don't wrap around when in icount mode.
New patches: "on the fly" mode switch, silence error msg when
delta = load = 0, introduce ptimer_get_limit.
V11: Dropped timer tick from "Perform tick and counter wrap around if
timer already expired" patch since it would cause bogus tick after
QEMU been reset if ptimer was stopped and it's QEMUtimer expired
during reset.
Patch "Legalize running with delta = load = 0" now explicitly
forbids period = 0.
v12: Fixed missed abort on setting freq > 1000000000.
New patches:
"Fix counter - 1 returned by ptimer_get_count for the active timer"
"Perform delayed tick instead of immediate if delta = 0"
Dmitry Osipenko (9):
hw/ptimer: Fix issues caused by the adjusted timer limit value
hw/ptimer: Perform counter wrap around if timer already expired
hw/ptimer: Update .delta on period/freq change
hw/ptimer: Support "on the fly" timer mode switch
hw/ptimer: Introduce ptimer_get_limit
hw/ptimer: Legalize running with delta = load = 0 and abort on period
= 0
hw/ptimer: Fix counter - 1 returned by ptimer_get_count for the active
timer
hw/ptimer: Perform delayed tick instead of immediate if delta = 0
arm_mptimer: Convert to use ptimer
hw/core/ptimer.c | 114 ++++++++++++++++++++---------------
hw/timer/arm_mptimer.c | 133 +++++++++++++++++++++--------------------
include/hw/ptimer.h | 1 +
include/hw/timer/arm_mptimer.h | 5 +-
4 files changed, 138 insertions(+), 115 deletions(-)
--
2.7.0
- [Qemu-devel] [PATCH v12 0/9] PTimer fixes/features and ARM MPTimer conversion,
Dmitry Osipenko <=
- [Qemu-devel] [PATCH v12 1/9] hw/ptimer: Fix issues caused by the adjusted timer limit value, Dmitry Osipenko, 2016/01/30
- [Qemu-devel] [PATCH v12 4/9] hw/ptimer: Support "on the fly" timer mode switch, Dmitry Osipenko, 2016/01/30
- [Qemu-devel] [PATCH v12 3/9] hw/ptimer: Update .delta on period/freq change, Dmitry Osipenko, 2016/01/30
- [Qemu-devel] [PATCH v12 8/9] hw/ptimer: Perform delayed tick instead of immediate if delta = 0, Dmitry Osipenko, 2016/01/30
- [Qemu-devel] [PATCH v12 5/9] hw/ptimer: Introduce ptimer_get_limit, Dmitry Osipenko, 2016/01/30
- [Qemu-devel] [PATCH v12 2/9] hw/ptimer: Perform counter wrap around if timer already expired, Dmitry Osipenko, 2016/01/30
- [Qemu-devel] [PATCH v12 6/9] hw/ptimer: Legalize running with delta = load = 0 and abort on period = 0, Dmitry Osipenko, 2016/01/30
- [Qemu-devel] [PATCH v12 7/9] hw/ptimer: Fix counter - 1 returned by ptimer_get_count for the active timer, Dmitry Osipenko, 2016/01/30
- [Qemu-devel] [PATCH v12 9/9] arm_mptimer: Convert to use ptimer, Dmitry Osipenko, 2016/01/30