From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=52948 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q8DuS-0000nj-1j for qemu-devel@nongnu.org; Fri, 08 Apr 2011 11:47:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q8DuR-00052r-2f for qemu-devel@nongnu.org; Fri, 08 Apr 2011 11:47:43 -0400 Received: from mail-iw0-f173.google.com ([209.85.214.173]:53501) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q8DuQ-00052h-Vy for qemu-devel@nongnu.org; Fri, 08 Apr 2011 11:47:43 -0400 Received: by iwl42 with SMTP id 42so4362456iwl.4 for ; Fri, 08 Apr 2011 08:47:42 -0700 (PDT) Message-ID: <4D9F2E1A.6030807@codemonkey.ws> Date: Fri, 08 Apr 2011 10:47:38 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH v2 3/5] hpet 'driftfix': add fields to HPETTimer and VMStateDescription References: <1302276042-3497-1-git-send-email-uobergfe@redhat.com> <1302276042-3497-4-git-send-email-uobergfe@redhat.com> In-Reply-To: <1302276042-3497-4-git-send-email-uobergfe@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Ulrich Obergfell Cc: aliguori@us.ibm.com, kvm@vger.kernel.org, jan.kiszka@siemens.com, qemu-devel@nongnu.org, gcosta@redhat.com, avi@redhat.com On 04/08/2011 10:20 AM, Ulrich Obergfell wrote: > Signed-off-by: Ulrich Obergfell > --- > hw/hpet.c | 14 ++++++++++++-- > 1 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/hw/hpet.c b/hw/hpet.c > index 45847ed..c150da5 100644 > --- a/hw/hpet.c > +++ b/hw/hpet.c > @@ -55,6 +55,11 @@ typedef struct HPETTimer { /* timers */ > uint8_t wrap_flag; /* timer pop will indicate wrap for one-shot 32-bit > * mode. Next pop will be actual timer expiration. > */ > + uint64_t saved_period; > + uint64_t ticks_not_accounted; > + uint32_t irqs_to_inject; > + uint32_t irq_rate; > + uint32_t divisor; > } HPETTimer; > > typedef struct HPETState { > @@ -248,7 +253,7 @@ static int hpet_post_load(void *opaque, int version_id) > > static const VMStateDescription vmstate_hpet_timer = { > .name = "hpet_timer", > - .version_id = 1, > + .version_id = 3, Why jump from 1 to 3? > .minimum_version_id = 1, > .minimum_version_id_old = 1, > .fields = (VMStateField []) { > @@ -258,6 +263,11 @@ static const VMStateDescription 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? Regards, Anthony Liguori > VMSTATE_TIMER(qemu_timer, HPETTimer), > VMSTATE_END_OF_LIST() > } > @@ -265,7 +275,7 @@ static const VMStateDescription vmstate_hpet_timer = { > > static const VMStateDescription vmstate_hpet = { > .name = "hpet", > - .version_id = 2, > + .version_id = 3, > .minimum_version_id = 1, > .minimum_version_id_old = 1, > .pre_save = hpet_pre_save,