diff mbox

[RFC,1/2] target-ppc: migrate interrupt vectors address for spapr VM

Message ID 1458568928-3055-2-git-send-email-clg@fr.ibm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Cédric Le Goater March 21, 2016, 2:02 p.m. UTC
This address is changed by the linux kernel using the H_SET_MODE hcall
and needs to be migrated in order to restart a spapr VM running in
TCG. Other platforms should not be affected.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 target-ppc/machine.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Thomas Huth March 21, 2016, 4:18 p.m. UTC | #1
On 21.03.2016 15:02, Cédric Le Goater wrote:
> This address is changed by the linux kernel using the H_SET_MODE hcall
> and needs to be migrated in order to restart a spapr VM running in
> TCG. Other platforms should not be affected.
> 
> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
> ---
>  target-ppc/machine.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/target-ppc/machine.c b/target-ppc/machine.c
> index 692121e98319..a418d463db83 100644
> --- a/target-ppc/machine.c
> +++ b/target-ppc/machine.c
> @@ -553,6 +553,9 @@ const VMStateDescription vmstate_ppc_cpu = {
>          VMSTATE_UINTTL(env.hflags_nmsr, PowerPCCPU),
>          /* FIXME: access_type? */
>  
> +        /* Effective Address of interrupt vectors */
> +        VMSTATE_UINTTL(env.excp_prefix, PowerPCCPU),
> +
>          /* Sanity checking */
>          VMSTATE_UINTTL_EQUAL(env.msr_mask, PowerPCCPU),
>          VMSTATE_UINT64_EQUAL(env.insns_flags, PowerPCCPU),

I'm really no expert with all this migration stuff, but don't you have
to bump the version_id when you add new fields to the vmstate?
... and/or use VMSTATE_UINTTL_V() so that migration from older versions
of QEMU to the current one also still works with KVM? For example, is it
still possible to migrate from QEMU 2.5 to QEMU 2.6 in KVM if you only
use VMSTATE_UINTTL without the _V suffix?

 Thomas
Greg Kurz March 21, 2016, 4:45 p.m. UTC | #2
On Mon, 21 Mar 2016 17:18:17 +0100
Thomas Huth <thuth@redhat.com> wrote:

> On 21.03.2016 15:02, Cédric Le Goater wrote:
> > This address is changed by the linux kernel using the H_SET_MODE hcall
> > and needs to be migrated in order to restart a spapr VM running in
> > TCG. Other platforms should not be affected.
> > 
> > Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
> > ---
> >  target-ppc/machine.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/target-ppc/machine.c b/target-ppc/machine.c
> > index 692121e98319..a418d463db83 100644
> > --- a/target-ppc/machine.c
> > +++ b/target-ppc/machine.c
> > @@ -553,6 +553,9 @@ const VMStateDescription vmstate_ppc_cpu = {
> >          VMSTATE_UINTTL(env.hflags_nmsr, PowerPCCPU),
> >          /* FIXME: access_type? */
> >  
> > +        /* Effective Address of interrupt vectors */
> > +        VMSTATE_UINTTL(env.excp_prefix, PowerPCCPU),
> > +
> >          /* Sanity checking */
> >          VMSTATE_UINTTL_EQUAL(env.msr_mask, PowerPCCPU),
> >          VMSTATE_UINT64_EQUAL(env.insns_flags, PowerPCCPU),  
> 
> I'm really no expert with all this migration stuff, but don't you have
> to bump the version_id when you add new fields to the vmstate?

Yes...

> ... and/or use VMSTATE_UINTTL_V() so that migration from older versions

... and also yes.

> of QEMU to the current one also still works with KVM? For example, is it
> still possible to migrate from QEMU 2.5 to QEMU 2.6 in KVM if you only
> use VMSTATE_UINTTL without the _V suffix?
> 

No we really want to use the _V version here: it indicates that starting with
this version (v6), cpu objects stream env.excp_prefix.

>  Thomas
> 
> 

--
Greg
diff mbox

Patch

diff --git a/target-ppc/machine.c b/target-ppc/machine.c
index 692121e98319..a418d463db83 100644
--- a/target-ppc/machine.c
+++ b/target-ppc/machine.c
@@ -553,6 +553,9 @@  const VMStateDescription vmstate_ppc_cpu = {
         VMSTATE_UINTTL(env.hflags_nmsr, PowerPCCPU),
         /* FIXME: access_type? */
 
+        /* Effective Address of interrupt vectors */
+        VMSTATE_UINTTL(env.excp_prefix, PowerPCCPU),
+
         /* Sanity checking */
         VMSTATE_UINTTL_EQUAL(env.msr_mask, PowerPCCPU),
         VMSTATE_UINT64_EQUAL(env.insns_flags, PowerPCCPU),