From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Zhang, Yang Z" <yang.z.zhang@intel.com>,
qemu-devel@nongnu.org, Juan Quintela <quintela@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 7/7] RTC: Allow to migrate from old QEMU
Date: Fri, 20 Jul 2012 12:38:36 -0500 [thread overview]
Message-ID: <20120720173836.GD2941@illuin> (raw)
In-Reply-To: <1342781633-7288-8-git-send-email-pbonzini@redhat.com>
On Fri, Jul 20, 2012 at 12:53:53PM +0200, Paolo Bonzini wrote:
> From: "Zhang, Yang Z" <yang.z.zhang@intel.com>
>
> The new logic is compatible with old, and it should not block migration
> from old QEMU. However, the new version cannot migrate to the old one.
Do we not plan to support 1.2 -> 1.1 with -M pc-1.1? I'm not sure what
the "official" stance is, but I think we could do it by making the behavior
configurable and defaulting to the old behavior for -M pc-1.1, and using
VMSTATE_*_TEST(..., rtc_on_demand_enabled) to send the new fields
conditionally.
>
> Cc: Juan Quintela <quintela@redhat.com>
> Signed-off-by: Yang Zhang <yang.z.zhang@intel.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> hw/mc146818rtc.c | 42 +++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 39 insertions(+), 3 deletions(-)
>
> diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
> index f0b75cb..d3871d8 100644
> --- a/hw/mc146818rtc.c
> +++ b/hw/mc146818rtc.c
> @@ -697,11 +697,47 @@ static int rtc_post_load(void *opaque, int version_id)
> return 0;
> }
>
> +static int rtc_load_old(QEMUFile *f, void *opaque, int version_id)
> +{
> + RTCState *s = opaque;
> + uint8_t buf[77];
> +
> + if (version_id > 2) {
> + return -EINVAL;
> + }
> +
> + qemu_get_buffer(f, s->cmos_data, sizeof(s->cmos_data));
> + qemu_get_8s(f, &s->cmos_index);
> +
> + /* Skip loading of s->current_tm, we already have the
> + * information in cmos_data.
> + */
> + qemu_get_buffer(f, buf, 7*4);
> +
> + qemu_get_timer(f, s->periodic_timer);
> + s->next_periodic_time = qemu_get_be64(f);
> +
> + /* Skip loading of next_second_time, second_timer, second_timer2. */
> + qemu_get_buffer(f, buf, 3*8);
> +
> + rtc_set_time(s);
> + s->offset = 0;
> + check_update_timer(s);
> +
> + if (version_id >= 2) {
> + s->irq_coalesced = qemu_get_be32(f);
> + s->period = qemu_get_be32(f);
> + }
> +
> + return rtc_post_load(opaque, version_id);
> +}
> +
> static const VMStateDescription vmstate_rtc = {
> .name = "mc146818rtc",
> - .version_id = 2,
> - .minimum_version_id = 1,
> + .version_id = 3,
> + .minimum_version_id = 3,
> .minimum_version_id_old = 1,
> + .load_state_old = rtc_load_old,
> .post_load = rtc_post_load,
> .fields = (VMStateField []) {
> VMSTATE_BUFFER(cmos_data, RTCState),
> @@ -837,7 +873,7 @@ static int rtc_initfn(ISADevice *dev)
> memory_region_init_io(&s->io, &cmos_ops, s, "rtc", 2);
> isa_register_ioport(dev, &s->io, base);
>
> - qdev_set_legacy_instance_id(&dev->qdev, base, 2);
> + qdev_set_legacy_instance_id(&dev->qdev, base, 3);
> qemu_register_reset(rtc_reset, s);
>
> object_property_add(OBJECT(s), "date", "struct tm",
> --
> 1.7.10.2
>
>
next prev parent reply other threads:[~2012-07-20 17:42 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
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 [this message]
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=20120720173836.GD2941@illuin \
--to=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 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.