From: Anthony Liguori <anthony@codemonkey.ws>
To: Paolo Bonzini <pbonzini@redhat.com>, qemu-devel@nongnu.org
Cc: yang.z.zhang@intel.com, mdroth@linux.vnet.ibm.com, quintela@redhat.com
Subject: Re: [Qemu-devel] [PATCH 0/10] Remove periodic wakeup from RTC timer
Date: Wed, 01 Aug 2012 14:51:44 -0500 [thread overview]
Message-ID: <87txwmcrvz.fsf@codemonkey.ws> (raw)
In-Reply-To: <1343839312-24030-1-git-send-email-pbonzini@redhat.com>
Paolo Bonzini <pbonzini@redhat.com> writes:
> 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.
>
> 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.
Other than the few minor comments, the series looks good overall.
Can you talk about the guests that you've tested with this?
Specifically, have you tested win2k8 64-bit?
Regards,
Anthony Liguori
>
> 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
next prev parent reply other threads:[~2012-08-01 19:51 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-01 16:41 [Qemu-devel] [PATCH 0/10] Remove periodic wakeup from RTC timer Paolo Bonzini
2012-08-01 16:41 ` [Qemu-devel] [PATCH 01/10] RTC: Remove the logic to update time format when DM bit changed Paolo Bonzini
2012-08-01 16:41 ` [Qemu-devel] [PATCH 02/10] RTC: Rename rtc_timer_update Paolo Bonzini
2012-08-01 16:41 ` [Qemu-devel] [PATCH 03/10] RTC: Update interrupt state when interrupts are masked/unmasked Paolo Bonzini
2012-08-01 16:41 ` [Qemu-devel] [PATCH 06/10] vmstate: add VMSTATE_TIMER_V Paolo Bonzini
2012-08-02 8:56 ` Juan Quintela
2012-08-02 9:02 ` Paolo Bonzini
2012-08-01 16:41 ` [Qemu-devel] [PATCH 05/10] RTC: Update the RTC clock only when reading it Paolo Bonzini
2012-08-01 19:48 ` Anthony Liguori
2012-08-02 9:09 ` Juan Quintela
2012-08-02 9:14 ` Paolo Bonzini
2012-08-02 9:58 ` Juan Quintela
2012-08-01 16:41 ` [Qemu-devel] [PATCH 06/10] RTC: Add divider reset support Paolo Bonzini
2012-08-01 16:41 ` [Qemu-devel] [PATCH 07/10] RTC: Do not fire timer periodically to catch next alarm Paolo Bonzini
2012-08-01 16:41 ` [Qemu-devel] [PATCH 08/10] RTC: Get and set time without going through s->current_tm Paolo Bonzini
2012-08-01 16:41 ` [Qemu-devel] [PATCH 09/10] RTC: Remove the current_tm field Paolo Bonzini
2012-08-01 16:41 ` [Qemu-devel] [PATCH 10/10] RTC: Allow to migrate from old QEMU Paolo Bonzini
2012-08-01 19:51 ` Anthony Liguori [this message]
2012-08-02 6:32 ` [Qemu-devel] [PATCH 0/10] Remove periodic wakeup from RTC timer Paolo Bonzini
2012-08-02 0:44 ` Zhang, Yang Z
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=87txwmcrvz.fsf@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=mdroth@linux.vnet.ibm.com \
--cc=pbonzini@redhat.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).