On 06/06/2016 11:32 PM, Michael Rolnik wrote:
> Hi Richard,
> 
> /Consider making the vm save state reflect the actual hardware format.  That
> way you can change the qemu internal format while retaining migration
> compatibility./
> 
> How it can be done? how can I modify a value passed to VMSTATE_UINT32?

There are two different ways.  You can see both of them in use in target-i386.

The first is to manually describe the field, using custom get and put fields.
For example:

static const VMStateInfo vmstate_fpreg = {
    .name = "fpreg",
    .get  = get_fpreg,
    .put  = put_fpreg,
};


The second is to reserve extra space for the external representation and then
use the pre_save / post_load hooks.  For i386, see the cpu_pre_save, where we
take the fpus, fpstt, and fptags fields and store them into the fpus_vmstate
field.  It is then the vmstate field that is mentioned in vmstate_x86_cpu.

I personally prefer the get/put fields, but I admit they can be tricky to use.


r~

Reply via email to