[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC 15/17] ppc: Check that CPU model stays consistent
From: |
Alexey Kardashevskiy |
Subject: |
Re: [Qemu-devel] [RFC 15/17] ppc: Check that CPU model stays consistent across migration |
Date: |
Fri, 4 Nov 2016 18:54:48 +1100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 |
On 30/10/16 22:12, David Gibson wrote:
> When a vmstate for the ppc cpu was first introduced (a90db15 "target-ppc:
> Convert ppc cpu savevm to VMStateDescription"), a VMSTATE_EQUAL was used
> to ensure that identical CPU models were used at source and destination
> as based on the PVR (Processor Version Register).
>
> However this was a problem for HV KVM, where due to hardware limitations
> we always need to use the real PVR of the host CPU. So, to allow
> migration between hosts with "similar enough" CPUs, the PVR check was
> removed in 569be9f0 "target-ppc: Remove PVR check from migration". This
> left the onus on user / management to only attempt migration between
> compatible CPUs.
>
> Now that we've reworked the handling of compatiblity modes, we have the
> information to actually determine if we're making a compatible migration.
> So this patch partially restores the PVR check. If the source was running
> in a compatibility mode, we just make sure that the destination cpu can
> also run in that compatibility mode. However, if the source was running
> in "raw" mode, we verify that the destination has the same PVR value.
>
> Signed-off-by: David Gibson <address@hidden>
> ---
> target-ppc/machine.c | 15 +++++++++++----
> 1 file changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/target-ppc/machine.c b/target-ppc/machine.c
> index 5d87ff6..62b9e94 100644
> --- a/target-ppc/machine.c
> +++ b/target-ppc/machine.c
> @@ -173,10 +173,12 @@ static int cpu_post_load(void *opaque, int version_id)
> target_ulong msr;
>
> /*
> - * We always ignore the source PVR. The user or management
> - * software has to take care of running QEMU in a compatible mode.
> + * If we're operating in compat mode, we should be ok as long as
> + * the destination supports the same compatiblity mode.
> + *
> + * Otherwise, however, we require that the destination has exactly
> + * the same CPU model as the source.
> */
> - env->spr[SPR_PVR] = env->spr_cb[SPR_PVR].default_value;
>
> #if defined(TARGET_PPC64)
> if (cpu->compat_pvr) {
> @@ -188,8 +190,13 @@ static int cpu_post_load(void *opaque, int version_id)
> error_free(local_err);
> return -1;
> }
> - }
> + } else
> #endif
> + {
> + if (env->spr[SPR_PVR] != env->spr_cb[SPR_PVR].default_value) {
> + return -1;
> + }
> + }
This should break migration from host with PVR=004d0200 to host with
PVR=004d0201, what is the benefit of such limitation?
>
> env->lr = env->spr[SPR_LR];
> env->ctr = env->spr[SPR_CTR];
>
--
Alexey
- Re: [Qemu-devel] [RFC 15/17] ppc: Check that CPU model stays consistent across migration,
Alexey Kardashevskiy <=