From: Paolo Bonzini <pbonzini@redhat.com>
Cc: yang.z.zhang@intel.com, aliguori@linux.vnet.ibm.com,
quintela@redhat.com, qemu-devel@nongnu.org,
mdroth@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [PATCH v3 00/10] Remove periodic wakeup from RTC timer
Date: Mon, 10 Sep 2012 19:05:16 +0200 [thread overview]
Message-ID: <504E1DCC.3040608@redhat.com> (raw)
In-Reply-To: <1343923453-13026-1-git-send-email-pbonzini@redhat.com>
Il 02/08/2012 18:04, Paolo Bonzini ha scritto:
> 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
> to reorganize them for better bisectability, and cleaning up migration
> support as well as the computation of UIP.
>
> 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 five patches are simple preparatory changes.
>
> The sixth 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. With this in
> place we can implement support for divider reset (patch 7), which helps
> testing the RTC because it places it in a known state.
>
> The eighth patch avoids firing the timer every second until the next
> alarm. The final two patches clean up the state of the RTC to eliminate
> useless duplication.
>
> 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.
> Forwards migration works, and I also tested migration (same version and
> forward) with a unit test for alarms.
>
> v1->v2: annotate versions correctly in the vmstate, added new
> patches to remove current_tm
>
> v2->v3: use gmtime_r [Anthony], compute exact UIP hold time [Anthony],
> do not use load_old [Juan] so migration remains bisectable
>
> Paolo Bonzini (5):
> RTC: introduce RTC_CLOCK_RATE
> 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 (5):
> 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
>
> hw/mc146818rtc.c | 520 +++++++++++++++++++++++++++++++++----------------
> hw/mc146818rtc_regs.h | 1 +
> vmstate.h | 5 +-
> 3 files changed, 354 insertions(+), 172 deletions(-)
>
Ping! :)
Paolo
next prev parent reply other threads:[~2012-09-10 17:05 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-02 16:04 [Qemu-devel] [PATCH v3 00/10] Remove periodic wakeup from RTC timer Paolo Bonzini
2012-08-02 16:04 ` [Qemu-devel] [PATCH v3 01/10] RTC: Remove the logic to update time format when DM bit changed Paolo Bonzini
2012-08-02 16:04 ` [Qemu-devel] [PATCH v3 02/10] RTC: Rename rtc_timer_update Paolo Bonzini
2012-08-02 16:04 ` [Qemu-devel] [PATCH v3 03/10] RTC: introduce RTC_CLOCK_RATE Paolo Bonzini
2012-08-02 16:04 ` [Qemu-devel] [PATCH v3 04/10] RTC: Update interrupt state when interrupts are masked/unmasked Paolo Bonzini
2012-08-02 16:04 ` [Qemu-devel] [PATCH v3 05/10] vmstate: add VMSTATE_TIMER_V Paolo Bonzini
2012-08-02 16:04 ` [Qemu-devel] [PATCH v3 06/10] RTC: Update the RTC clock only when reading it Paolo Bonzini
2012-08-02 16:04 ` [Qemu-devel] [PATCH v3 07/10] RTC: Add divider reset support Paolo Bonzini
2012-08-02 16:04 ` [Qemu-devel] [PATCH v3 08/10] RTC: Do not fire timer periodically to catch next alarm Paolo Bonzini
2012-08-02 16:04 ` [Qemu-devel] [PATCH v3 09/10] RTC: Get and set time without going through s->current_tm Paolo Bonzini
2012-08-02 16:04 ` [Qemu-devel] [PATCH v3 10/10] RTC: Remove the current_tm field Paolo Bonzini
2012-09-10 17:05 ` Paolo Bonzini [this message]
2012-09-10 23:00 ` [Qemu-devel] [PATCH v3 00/10] Remove periodic wakeup from RTC timer Anthony Liguori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=504E1DCC.3040608@redhat.com \
--to=pbonzini@redhat.com \
--cc=aliguori@linux.vnet.ibm.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=yang.z.zhang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).