[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v11 0/7] PTimer fixes/features and ARM MPTimer conve
From: |
Dmitry Osipenko |
Subject: |
[Qemu-devel] [PATCH v11 0/7] PTimer fixes/features and ARM MPTimer conversion |
Date: |
Thu, 21 Jan 2016 22:03:43 +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.
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.
Dmitry Osipenko (7):
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
arm_mptimer: Convert to use ptimer
hw/core/ptimer.c | 111 ++++++++++++++++++++--------------
hw/timer/arm_mptimer.c | 131 +++++++++++++++++++++--------------------
include/hw/ptimer.h | 1 +
include/hw/timer/arm_mptimer.h | 5 +-
4 files changed, 135 insertions(+), 113 deletions(-)
--
2.7.0
- [Qemu-devel] [PATCH v11 0/7] PTimer fixes/features and ARM MPTimer conversion,
Dmitry Osipenko <=
- [Qemu-devel] [PATCH v11 3/7] hw/ptimer: Update .delta on period/freq change, Dmitry Osipenko, 2016/01/21
- [Qemu-devel] [PATCH v11 1/7] hw/ptimer: Fix issues caused by the adjusted timer limit value, Dmitry Osipenko, 2016/01/21
- [Qemu-devel] [PATCH v11 4/7] hw/ptimer: Support "on the fly" timer mode switch, Dmitry Osipenko, 2016/01/21
- [Qemu-devel] [PATCH v11 2/7] hw/ptimer: Perform counter wrap around if timer already expired, Dmitry Osipenko, 2016/01/21
- [Qemu-devel] [PATCH v11 6/7] hw/ptimer: Legalize running with delta = load = 0 and abort on period = 0, Dmitry Osipenko, 2016/01/21
- [Qemu-devel] [PATCH v11 7/7] arm_mptimer: Convert to use ptimer, Dmitry Osipenko, 2016/01/21