From: Juan Quintela <quintela@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Zhang, Yang Z" <yang.z.zhang@intel.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 4/7] RTC: Update the RTC clock only when reading it
Date: Mon, 23 Jul 2012 07:17:33 +0200 [thread overview]
Message-ID: <87mx2rjbte.fsf@elfo.mitica> (raw)
In-Reply-To: <1342781633-7288-5-git-send-email-pbonzini@redhat.com> (Paolo Bonzini's message of "Fri, 20 Jul 2012 12:53:50 +0200")
Paolo Bonzini <pbonzini@redhat.com> wrote:
> From: "Zhang, Yang Z" <yang.z.zhang@intel.com>
>
> Calculate guest RTC based on the time of the last update, instead of
> using timers. The formula is
>
> (base_rtc + guest_time_now - guest_time_last_update + offset)
>
> Base_rtc is the RTC value when the RTC was last updated.
> Guest_time_now is the guest time when the access happens.
> Guest_time_last_update was the guest time when the RTC was last updated.
> Offset is used when divider reset happens or the set bit is toggled.
>
> The timer is kept in order to signal interrupts, but it only needs to
> run when either UF or AF is cleared. When the bits are both set, the
> timer does not run.
>
> UIP is now synthesized when reading register A. If the timer is not set,
> or if there is more than one second before it (as is the case at the
> end of this series), the leading edge of UIP is computed and the rising
> edge occurs 220us later. If the update timer occurs within one second,
> however, the rising edge of the AF and UF bits should coincide withe
> the falling edge of UIP. We do not know exactly when this will happen
> because there could be delays in the servicing of the timer. Hence, in
> this case reading register A only computes for the rising edge of UIP,
> and latches the bit until the timer is fired and clears it.
>
> Signed-off-by: Yang Zhang <yang.z.zhang@intel.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> @@ -540,11 +593,12 @@ static const VMStateDescription vmstate_rtc = {
> VMSTATE_INT32(current_tm.tm_mday, RTCState),
> VMSTATE_INT32(current_tm.tm_mon, RTCState),
> VMSTATE_INT32(current_tm.tm_year, RTCState),
> + VMSTATE_UINT64(base_rtc, RTCState),
> + VMSTATE_UINT64(last_update, RTCState),
> + VMSTATE_INT64(offset, RTCState),
VMSTATE_UINT64_V(base_rtc, RTCState, 3)
same ofr the others.
Normally, new fields are added at the end of the structure.
> VMSTATE_TIMER(periodic_timer, RTCState),
> VMSTATE_INT64(next_periodic_time, RTCState),
> - VMSTATE_INT64(next_second_time, RTCState),
> - VMSTATE_TIMER(second_timer, RTCState),
> - VMSTATE_TIMER(second_timer2, RTCState),
> + VMSTATE_TIMER(update_timer, RTCState),
I have to read the rest of the patch to know what is the relation of
this 4 fields, to see if there is any way to create this in any sane
way that is compatible.
The new fields can go in a different subsection. The three ones that
are removed, I don't know if that values can be calculated.
> VMSTATE_UINT32_V(irq_coalesced, RTCState, 2),
> VMSTATE_UINT32_V(period, RTCState, 2),
> VMSTATE_END_OF_LIST()
Later, Juan.
next prev parent reply other threads:[~2012-07-23 5:18 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-20 10:53 [Qemu-devel] [PATCH 0/7] Remove periodic wakeup from RTC timer Paolo Bonzini
2012-07-20 10:53 ` [Qemu-devel] [PATCH 1/7] RTC: Remove the logic to update time format when DM bit changed Paolo Bonzini
2012-07-20 10:53 ` [Qemu-devel] [PATCH 2/7] RTC: Rename rtc_timer_update Paolo Bonzini
2012-07-20 10:53 ` [Qemu-devel] [PATCH 3/7] RTC: Update interrupt state when interrupts are masked/unmasked Paolo Bonzini
2012-07-20 10:53 ` [Qemu-devel] [PATCH 4/7] RTC: Update the RTC clock only when reading it Paolo Bonzini
2012-07-23 5:17 ` Juan Quintela [this message]
2012-07-23 7:19 ` Paolo Bonzini
2012-07-20 10:53 ` [Qemu-devel] [PATCH 5/7] RTC: Add divider reset support Paolo Bonzini
2012-07-20 10:53 ` [Qemu-devel] [PATCH 6/7] RTC: Do not fire timer periodically to catch next alarm Paolo Bonzini
2012-07-20 10:53 ` [Qemu-devel] [PATCH 7/7] RTC: Allow to migrate from old QEMU Paolo Bonzini
2012-07-20 17:38 ` Michael Roth
2012-07-20 19:02 ` Paolo Bonzini
2012-07-23 5:12 ` Juan Quintela
2012-07-23 7:30 ` Paolo Bonzini
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=87mx2rjbte.fsf@elfo.mitica \
--to=quintela@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.