Message ID | 000001cd844e$7747c480$65d74d80$@Dovgaluk@ispras.ru |
---|---|
State | New |
Headers | show |
Am 27.08.2012 14:21, schrieb Pavel Dovgaluk: > 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<pavel.dovgaluk@gmail.com> > --- > 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), > + VMSTATE_UINT32(pit_count, PCSpkState), > + VMSTATE_UINT32(samples, PCSpkState), > + 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); > + > memory_region_init_io(&s->ioport, &pcspk_io_ops, s, "elcr", 1); > isa_register_ioport(dev, &s->ioport, s->iobase); > What about pc-1.0 etc. machines? Does this need to be backported to stable branches first for migration from v1.2 to work? Or is such incoming excess data silently ignored? Or any compat magic required on top? Andreas
Andreas Färber <afaerber@suse.de> wrote: > Am 27.08.2012 14:21, schrieb Pavel Dovgaluk: >> 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. >> > > What about pc-1.0 etc. machines? Does this need to be backported to > stable branches first for migration from v1.2 to work? Or is such > incoming excess data silently ignored? Or any compat magic required on top? Is there a way to detect if we have ever used the speaker? Otherwise, it is difficult to know if we should sent it or not. Later, Juan.
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), + VMSTATE_UINT32(pit_count, PCSpkState), + VMSTATE_UINT32(samples, PCSpkState), + 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); + memory_region_init_io(&s->ioport, &pcspk_io_ops, s, "elcr", 1); isa_register_ioport(dev, &s->ioport, s->iobase);
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<pavel.dovgaluk@gmail.com> --- hw/pcspk.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-)