qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <aliguori@us.ibm.com>
To: Avi Kivity <avi@redhat.com>
Cc: jan kiszka <jan.kiszka@siemens.com>,
	gcosta@redhat.com, Ulrich Obergfell <uobergfe@redhat.com>,
	kvm@vger.kernel.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v2 3/5] hpet 'driftfix': add fields to HPETTimer and VMStateDescription
Date: Mon, 11 Apr 2011 08:10:00 -0500	[thread overview]
Message-ID: <4DA2FDA8.9070109@us.ibm.com> (raw)
In-Reply-To: <4DA2C4F2.1000002@redhat.com>

On 04/11/2011 04:08 AM, Avi Kivity wrote:
> On 04/11/2011 12:06 PM, Ulrich Obergfell wrote:
>> >>  vmstate_hpet_timer = {
>> >>            VMSTATE_UINT64(fsb, HPETTimer),
>> >>            VMSTATE_UINT64(period, HPETTimer),
>> >>            VMSTATE_UINT8(wrap_flag, HPETTimer),
>> >>  + VMSTATE_UINT64_V(saved_period, HPETTimer, 3),
>> >>  + VMSTATE_UINT64_V(ticks_not_accounted, HPETTimer, 3),
>> >>  + VMSTATE_UINT32_V(irqs_to_inject, HPETTimer, 3),
>> >>  + VMSTATE_UINT32_V(irq_rate, HPETTimer, 3),
>> >>  + VMSTATE_UINT32_V(divisor, HPETTimer, 3),
>> >
>> >  We ought to be able to use a subsection keyed off of whether any 
>> ticks
>> >  are currently accumulated, no?
>>
>>
>> Anthony,
>>
>> I'm not sure if I understand your question correctly. Are you suggesting
>> to migrate the driftfix-related state conditionally / only if there are
>> any ticks accumulated in 'ticks_not_accounted' and 'irqs_to_inject' ?
>>
>> The size of the driftfix-related state is 28 bytes per timer and we have
>> 32 timers per HPETState, i.e. 896 additional bytes per HPETState. With a
>> maximum number of 8 HPET blocks (HPETState), this amounts to 7168 bytes.
>> Hence, unconditional migration of the driftfix-related state should not
>> cause significant additional overhead.
>>
>
> It's not about overhead.
>
>> Maybe I missed something. Could you please explain which benefit you see
>> in using a subsection ?
>
> In the common case of there being no drift, you can migrate from a 
> qemu that supports driftfix to a qemu that doesn't.
>

Right, subsections are a trick.  The idea is that when you introduce new 
state for a device model that is not always going to be set, when you do 
the migration, you detect whether the state is set or not and if it's 
not set, instead of sending empty versions of that state (i.e. 
missed_ticks=0) you just don't send the new state at all.

This means that you can migrate to an older version of QEMU provided the 
migration would work correctly.

Regards,

Anthony Liguori

  reply	other threads:[~2011-04-11 13:10 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-08 15:20 [Qemu-devel] [PATCH v2 0/5] hpet 'driftfix': alleviate time drift with HPET periodic timers Ulrich Obergfell
2011-04-08 15:20 ` [Qemu-devel] [PATCH v2 1/5] hpet 'driftfix': add hooks required to detect coalesced interrupts (x86 apic only) Ulrich Obergfell
2011-04-08 15:46   ` Anthony Liguori
2011-04-08 15:51   ` [Qemu-devel] " Jan Kiszka
2011-04-08 15:20 ` [Qemu-devel] [PATCH v2 2/5] hpet 'driftfix': add driftfix property to HPETState and DeviceInfo Ulrich Obergfell
2011-04-08 15:20 ` [Qemu-devel] [PATCH v2 3/5] hpet 'driftfix': add fields to HPETTimer and VMStateDescription Ulrich Obergfell
2011-04-08 15:47   ` Anthony Liguori
2011-04-11  8:24     ` Ulrich Obergfell
2011-04-11  9:06       ` Ulrich Obergfell
2011-04-11  9:08         ` Avi Kivity
2011-04-11 13:10           ` Anthony Liguori [this message]
2011-04-11 13:39             ` Glauber Costa
2011-04-11 13:43               ` Avi Kivity
2011-04-11 13:47               ` Anthony Liguori
2011-04-11 13:57                 ` Glauber Costa
2011-04-11 13:10       ` Anthony Liguori
2011-04-08 15:20 ` [Qemu-devel] [PATCH v2 4/5] hpet 'driftfix': add code in update_irq() to detect coalesced interrupts (x86 apic only) Ulrich Obergfell
2011-04-08 15:20 ` [Qemu-devel] [PATCH v2 5/5] hpet 'driftfix': add code in hpet_timer() to compensate delayed callbacks and coalesced interrupts Ulrich Obergfell
2011-04-08 15:54   ` [Qemu-devel] " Jan Kiszka
2011-04-08 16:08     ` Glauber Costa
2011-04-08 16:12       ` Jan Kiszka

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=4DA2FDA8.9070109@us.ibm.com \
    --to=aliguori@us.ibm.com \
    --cc=avi@redhat.com \
    --cc=gcosta@redhat.com \
    --cc=jan.kiszka@siemens.com \
    --cc=kvm@vger.kernel.org \
    --cc=qemu-devel@nongnu.org \
    --cc=uobergfe@redhat.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).