From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:52899) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T635q-0001Zt-W1 for qemu-devel@nongnu.org; Mon, 27 Aug 2012 13:27:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T635p-0004LA-Kx for qemu-devel@nongnu.org; Mon, 27 Aug 2012 13:27:18 -0400 Received: from david.siemens.de ([192.35.17.14]:20379) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T635p-0004Kp-BZ for qemu-devel@nongnu.org; Mon, 27 Aug 2012 13:27:17 -0400 Message-ID: <503BADF1.7000200@siemens.com> Date: Mon, 27 Aug 2012 19:27:13 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <36635.9908286997$1346070105@news.gmane.org> In-Reply-To: <36635.9908286997$1346070105@news.gmane.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] Save/load PC speaker internal state List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Pavel Dovgaluk Cc: 'qemu-devel' On 2012-08-27 14:21, Pavel Dovgaluk wrote: > Save PC speaker state to remove differences between system > states after saving the snapshot and after loading it again. > This patch is needed for deterministic replay of the execution. > > Signed-off-by: Pavel Dovgalyuk > --- > hw/pcspk.c | 18 ++++++++++++++++++ > 1 files changed, 18 insertions(+), 0 deletions(-) > > diff --git a/hw/pcspk.c b/hw/pcspk.c > index e430324..3fb3dd1 100644 > --- a/hw/pcspk.c > +++ b/hw/pcspk.c > @@ -159,10 +159,28 @@ 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_ARRAY(sample_buf, PCSpkState, PCSPK_BUF_LEN), Can be regenerated on load. > + VMSTATE_UINT32(pit_count, PCSpkState), > + VMSTATE_UINT32(samples, PCSpkState), Same here. > + VMSTATE_UINT32(play_pos, PCSpkState), > + VMSTATE_INT32(data_on, PCSpkState), > + VMSTATE_INT32(dummy_refresh_clock, PCSpkState), > + VMSTATE_END_OF_LIST() > + } > +}; > + > static int pcspk_initfn(ISADevice *dev) > { > PCSpkState *s = DO_UPCAST(PCSpkState, dev, dev); > > + vmstate_register(NULL, 0, &vmstate_spk, s); > + This function is for legacy users only. You have to register the vmstate via pcspk_class_initfn (set vmsd of the device class). > memory_region_init_io(&s->ioport, &pcspk_io_ops, s, "elcr", 1); > isa_register_ioport(dev, &s->ioport, s->iobase); > > > > Jan -- Siemens AG, Corporate Technology, CT RTC ITP SDP-DE Corporate Competence Center Embedded Linux