[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 0/10] Remove periodic wakeup from RTC timer
From: |
Zhang, Yang Z |
Subject: |
Re: [Qemu-devel] [PATCH 0/10] Remove periodic wakeup from RTC timer |
Date: |
Thu, 2 Aug 2012 00:44:30 +0000 |
Paolo Bonzini wrote on 2012-08-02:
> The current RTC emulation has two timers firing every second, one
> on each edge of the UIP bit. This will prevent CPUs from staying at
> deep C-states. Intel's measurements from previous submissions show the
> C6 residency reduced by 6% when running 64 idle guests.
>
> The following patches remove the two timers. The patches update the RTC
> clock only when the guest tries to read it, and only set timers when
> update or alarm is clear. Hence, a guest will typically fire the RTC
> timer only twice, respectively one second after it starts and at the
> next midnight.
>
> The patches are mostly the work of Yang Zhang. My contribution was
> limited to reorganizing them for better bisectability, and cleaning
> up the computation of UIP.
Thanks for your review and great effort to push those patches.
> A qtest for this is not as reliable as a test that actually runs code
> in a VM. A qtest is more deterministic, and the "wiggling" introduced
> by running code in the VM is much more likely to find bugs. I'll post
> the unit test separately. Because the patches also improve the quality
> of the emulation, this test fails without the patches.
>
> The first four patches are simple preparatory changes.
>
> The fifth patch removes the timers, and replaces them with a single
> timer that is fired every second until UF and AF. The update logic is
> moved to the reading of the registers, and so is UIP.
>
> The sixth patch implements support for divider reset, which helps testing
> the RTC because it places it in a known state. The seventh patch avoids
> firing the timer every second until the next alarm.
>
> The next two patches clean up the state of the RTC to eliminate a useless
> duplication, and the tenth completes migration support. Still, backwards
> migration is broken because the algorithms in the new device model are
> pretty much completely different. Downstreams that care should include
> both device models and pick the old one for old machine types.
>
> v1->v2: annotate versions correctly in the vmstate, added new
> patches to remove current_tm
> Paolo Bonzini (4):
> vmstate: add VMSTATE_TIMER_V
> RTC: Do not fire timer periodically to catch next alarm
> RTC: Get and set time without going through s->current_tm
> RTC: Remove the current_tm field
> Yang Zhang (6):
> RTC: Remove the logic to update time format when DM bit changed
> RTC: Rename rtc_timer_update
> RTC: Update interrupt state when interrupts are masked/unmasked
> RTC: Update the RTC clock only when reading it
> RTC: Add divider reset support
> RTC: Allow to migrate from old QEMU
> hw/mc146818rtc.c | 540
> ++++++++++++++++++++++++++++++++++--------------- hw/mc146818rtc_regs.h
> | 1 + vmstate.h | 5 +- 3 files changed, 377
> insertions(+), 169 deletions(-)
> --
> 1.7.10.4
Best regards,
Yang
- Re: [Qemu-devel] [PATCH 05/10] RTC: Update the RTC clock only when reading it, (continued)
[Qemu-devel] [PATCH 07/10] RTC: Do not fire timer periodically to catch next alarm, Paolo Bonzini, 2012/08/01
[Qemu-devel] [PATCH 09/10] RTC: Remove the current_tm field, Paolo Bonzini, 2012/08/01
[Qemu-devel] [PATCH 08/10] RTC: Get and set time without going through s->current_tm, Paolo Bonzini, 2012/08/01
[Qemu-devel] [PATCH 10/10] RTC: Allow to migrate from old QEMU, Paolo Bonzini, 2012/08/01
Re: [Qemu-devel] [PATCH 0/10] Remove periodic wakeup from RTC timer, Anthony Liguori, 2012/08/01
Re: [Qemu-devel] [PATCH 0/10] Remove periodic wakeup from RTC timer,
Zhang, Yang Z <=