On Thu, 9 Oct 2014 17:28:57 +0100 Peter Maydell <peter.mayd...@linaro.org> wrote:
> On 9 October 2014 14:36, Cornelia Huck <cornelia.h...@de.ibm.com> wrote: > > From: Thomas Huth <th...@linux.vnet.ibm.com> > > > > This patch provides the cpu save information for dumps and later life > > migration and enables migration of the CPU state. The code is based on > > earlier work from Christian Borntraeger and Jason Herne. > > > > Signed-off-by: Thomas Huth <th...@linux.vnet.ibm.com> > > Signed-off-by: David Hildenbrand <d...@linux.vnet.ibm.com> > > [provide cpu_post_load()] > > Signed-off-by: Jens Freimann <jf...@linux.vnet.ibm.com> > > CC: Andreas Faerber <afaer...@suse.de> > > CC: Christian Borntraeger <borntrae...@de.ibm.com> > > CC: Jason J. Herne <jjhe...@us.ibm.com> > > Tested-by: Christian Borntraeger <borntrae...@de.ibm.com> > > Signed-off-by: Cornelia Huck <cornelia.h...@de.ibm.com> > > --- > > target-s390x/cpu.c | 59 > > ++++++++++++++++++++++++++++++++++++++++++++++++++-- > > 1 file changed, 57 insertions(+), 2 deletions(-) > > > > diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c > > index ec7df90..c9c237f 100644 > > --- a/target-s390x/cpu.c > > +++ b/target-s390x/cpu.c > > I think the migration code should live in machine.c like > it does for our other targets. (Among other useful things, > this means you can have the makefile say > obj-$(CONFIG_SOFTMMU) += machine.o > so it doesn't try to build it for the linux-user target :-)) We originally had that file for s390x, too, but it had been removed by Andreas with this commit: c7396bbb2597577b1463fc997a73e67b8a067880 I guess we could re-introduce it again now that we have some meaningful contents for the file. Andreas, is that ok for you? > > static const VMStateDescription vmstate_s390_cpu = { > > .name = "cpu", > > - .unmigratable = 1, > > + .post_load = cpu_post_load, > > + .version_id = 1, > > + .minimum_version_id = 1, > > + .minimum_version_id_old = 1, > > You don't need minimum_version_id_old any more. Ok, I'll remove it. > > + .fields = (VMStateField[]) { > > + VMSTATE_UINT64(env.fregs[0].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[1].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[2].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[3].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[4].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[5].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[6].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[7].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[8].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[9].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[10].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[11].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[12].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[13].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[14].ll, S390CPU), > > + VMSTATE_UINT64(env.fregs[15].ll, S390CPU), > > + VMSTATE_UINT64_ARRAY(env.regs, S390CPU, 16), > > + VMSTATE_UINT64(env.psw.mask, S390CPU), > > + VMSTATE_UINT64(env.psw.addr, S390CPU), > > + VMSTATE_UINT64(env.psa, S390CPU), > > + VMSTATE_UINT32(env.fpc, S390CPU), > > + VMSTATE_UINT32(env.todpr, S390CPU), > > + VMSTATE_UINT64(env.pfault_token, S390CPU), > > + VMSTATE_UINT64(env.pfault_compare, S390CPU), > > + VMSTATE_UINT64(env.pfault_select, S390CPU), > > + VMSTATE_UINT64(env.cputm, S390CPU), > > + VMSTATE_UINT64(env.ckc, S390CPU), > > + VMSTATE_UINT64(env.gbea, S390CPU), > > + VMSTATE_UINT64(env.pp, S390CPU), > > + VMSTATE_UINT32_ARRAY(env.aregs, S390CPU, 16), > > + VMSTATE_UINT64_ARRAY(env.cregs, S390CPU, 16), > > + VMSTATE_UINT8(env.cpu_state, S390CPU), > > + VMSTATE_END_OF_LIST() > > + }, > > + .subsections = (VMStateSubsection[]) { > > + { > > + /* empty */ > > + } > > Why the empty subsections list? Likely an old copy-n-paste error ... I'll remove that, too. Thomas