From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50952) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XMCmR-0004Rw-HB for qemu-devel@nongnu.org; Tue, 26 Aug 2014 05:11:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XMCmL-0004z9-GO for qemu-devel@nongnu.org; Tue, 26 Aug 2014 05:11:07 -0400 Received: from mail-qg0-x236.google.com ([2607:f8b0:400d:c04::236]:33032) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XMCmL-0004yz-Cr for qemu-devel@nongnu.org; Tue, 26 Aug 2014 05:11:01 -0400 Received: by mail-qg0-f54.google.com with SMTP id j5so11594794qga.13 for ; Tue, 26 Aug 2014 02:11:01 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <53FC4F20.9030301@redhat.com> Date: Tue, 26 Aug 2014 11:10:56 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <20140826071427.1672.48119.stgit@PASHA-ISP> <20140826071441.1672.17434.stgit@PASHA-ISP> In-Reply-To: <20140826071441.1672.17434.stgit@PASHA-ISP> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 02/12] pcspk: adding vmstate for save/restore List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Pavel Dovgalyuk , qemu-devel@nongnu.org Cc: zealot351@gmail.com, maria.klimushenkova@ispras.ru Il 26/08/2014 09:14, Pavel Dovgalyuk ha scritto: > VMState added by this patch preserves correct > loading of the PC speaker device state. > > Signed-off-by: Pavel Dovgalyuk > --- > hw/audio/pcspk.c | 18 ++++++++++++++++-- > 1 files changed, 16 insertions(+), 2 deletions(-) > > diff --git a/hw/audio/pcspk.c b/hw/audio/pcspk.c > index 1d81bbe..8b22dbf 100644 > --- a/hw/audio/pcspk.c > +++ b/hw/audio/pcspk.c > @@ -50,8 +50,8 @@ typedef struct { > unsigned int pit_count; > unsigned int samples; > unsigned int play_pos; > - int data_on; > - int dummy_refresh_clock; > + uint8_t data_on; > + uint8_t dummy_refresh_clock; > } PCSpkState; > > static const char *s_spk = "pcspk"; > @@ -163,6 +163,18 @@ static const MemoryRegionOps pcspk_io_ops = { > }, > }; > > +static const VMStateDescription vmstate_spk = { > + .name = "pcspk", > + .version_id = 1, > + .minimum_version_id = 1, > + .minimum_version_id_old = 1, > + .fields = (VMStateField[]) { > + VMSTATE_UINT8(data_on, PCSpkState), > + VMSTATE_UINT8(dummy_refresh_clock, PCSpkState), > + VMSTATE_END_OF_LIST() > + } > +}; > + > static void pcspk_initfn(Object *obj) > { > PCSpkState *s = PC_SPEAKER(obj); > @@ -175,6 +187,8 @@ static void pcspk_realizefn(DeviceState *dev, Error **errp) > ISADevice *isadev = ISA_DEVICE(dev); > PCSpkState *s = PC_SPEAKER(dev); > > + vmstate_register(NULL, 0, &vmstate_spk, s); > + > isa_register_ioport(isadev, &s->ioport, s->iobase); > > pcspk_state = s; > > > I think you should use dc->vmsd. Paolo