From: Greg Kurz <groug@kaod.org>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: lvivier@redhat.com, wei.guo.simon@gmail.com, ldoktor@redhat.com,
qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] target/ppc: Fix backwards migration of msr_mask
Date: Tue, 20 Mar 2018 10:41:03 +0100 [thread overview]
Message-ID: <20180320104103.56d541c2@bahia.lan> (raw)
In-Reply-To: <20180320022319.17199-1-david@gibson.dropbear.id.au>
On Tue, 20 Mar 2018 13:23:19 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:
> 21b786f "PowerPC: Add TS bits into msr_mask" added the transaction states
> to msr_mask for recent POWER CPUs to allow correct migration of machines
> that are in certain interim transactional memory states.
>
> This was correct, but unfortunately breaks backwards of pseries-2.7 and
> earlier machine types which (stupidly) transferred the msr_mask in the
> migration stream and failed if it wasn't equal on each end.
>
> This works around the problem by masking out the new MSR bits in the
> compatibility code to send the msr_mask on old machine types.
>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> ---
Reviewed-by: Greg Kurz <groug@kaod.org>
and
Tested-by: Greg Kurz <groug@kaod.org>
> target/ppc/machine.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/target/ppc/machine.c b/target/ppc/machine.c
> index e475206c6a..0634cdb295 100644
> --- a/target/ppc/machine.c
> +++ b/target/ppc/machine.c
> @@ -190,7 +190,15 @@ static int cpu_pre_save(void *opaque)
>
> /* Hacks for migration compatibility between 2.6, 2.7 & 2.8 */
> if (cpu->pre_2_8_migration) {
> - cpu->mig_msr_mask = env->msr_mask;
> + /* Mask out bits that got added to msr_mask since the versions
> + * which stupidly included it in the migration stream. */
> + target_ulong metamask = 0
> +#if defined(TARGET_PPC64)
> + | (1ULL << MSR_TS0)
> + | (1ULL << MSR_TS1)
> +#endif
> + ;
> + cpu->mig_msr_mask = env->msr_mask & ~metamask;
> cpu->mig_insns_flags = env->insns_flags & insns_compat_mask;
> cpu->mig_insns_flags2 = env->insns_flags2 & insns_compat_mask2;
> cpu->mig_nb_BATs = env->nb_BATs;
next prev parent reply other threads:[~2018-03-20 9:41 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-20 2:23 [Qemu-devel] [PATCH] target/ppc: Fix backwards migration of msr_mask David Gibson
2018-03-20 8:08 ` Laurent Vivier
2018-03-20 9:41 ` Greg Kurz [this message]
2018-03-20 12:17 ` Lukáš Doktor
2018-04-04 3:27 ` Simon Guo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180320104103.56d541c2@bahia.lan \
--to=groug@kaod.org \
--cc=david@gibson.dropbear.id.au \
--cc=ldoktor@redhat.com \
--cc=lvivier@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=wei.guo.simon@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).