qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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

  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).