From: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
To: Stefan Berger <stefanb@linux.vnet.ibm.com>,
agraf@suse.de, qemu-devel <qemu-devel@nongnu.org>,
qemu-ppc@nongnu.org
Subject: Re: [Qemu-devel] ppc64 not resuming with v2.3.0-rc3
Date: Thu, 16 Apr 2015 20:42:07 +0100 [thread overview]
Message-ID: <5530108F.9000607@ilande.co.uk> (raw)
In-Reply-To: <552FE6C8.106@linux.vnet.ibm.com>
On 16/04/15 17:43, Stefan Berger wrote:
> The culprit patch seems to be the following commit. If I remove these
> changes from the tip of the tree it works again (on SLOF level):
>
> commit 2360b6e84f78d41fa0f76555a947148b73645259
> Author: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Date: Mon Feb 9 22:40:48 2015 +0000
>
> target-ppc: force update of msr bits in cpu_post_load
>
> Since env->msr has already been restored by the time cpu_post_load
> is called,
> make sure that ppc_store_msr() is explicitly called with all msr
> bits except
> MSR_TGPR marked as invalid.
>
> This solves the issue where MSR flags aren't set correctly when
> restoring a VM
> snapshot, in particular the internal env->excp_prefix value when
> MSR_EP has
> been altered by a guest.
>
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Signed-off-by: Alexander Graf <agraf@suse.de>
>
> diff --git a/target-ppc/machine.c b/target-ppc/machine.c
> index c801b82..3921012 100644
> --- a/target-ppc/machine.c
> +++ b/target-ppc/machine.c
> @@ -159,6 +159,7 @@ static int cpu_post_load(void *opaque, int version_id)
> PowerPCCPU *cpu = opaque;
> CPUPPCState *env = &cpu->env;
> int i;
> + target_ulong msr;
>
> /*
> * We always ignore the source PVR. The user or management
> @@ -190,7 +191,12 @@ static int cpu_post_load(void *opaque, int version_id)
> /* Restore htab_base and htab_mask variables */
> ppc_store_sdr1(env, env->spr[SPR_SDR1]);
> }
> - hreg_compute_hflags(env);
> +
> + /* Mark msr bits except MSR_TGPR invalid before restoring */
> + msr = env->msr;
> + env->msr ^= ~(1ULL << MSR_TGPR);
> + ppc_store_msr(env, msr);
> +
> hreg_compute_mem_idx(env);
>
> return 0;
>
>
> Stefan
>
> PS: Sorry for the late notice (-rc3), but I only started doing things
> with ppc64 a few days ago.
Hmmmm the fix is correct in that internal MSR variables need to be
updated post-restore (as noted in the message above it was the exception
prefix variables that weren't updated by having MSR_EP set).
Maybe on ppc64 there is another bit similar to MSR_TGPR that needs to be
excluded? Alex, any thoughts?
ATB,
Mark.
next prev parent reply other threads:[~2015-04-16 19:42 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-16 16:43 [Qemu-devel] ppc64 not resuming with v2.3.0-rc3 Stefan Berger
2015-04-16 19:42 ` Mark Cave-Ayland [this message]
2015-04-16 19:49 ` Stefan Berger
2015-04-16 20:53 ` Mark Cave-Ayland
2015-04-16 21:24 ` Stefan Berger
2015-04-16 21:53 ` Paolo Bonzini
2015-04-16 22:23 ` Mark Cave-Ayland
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=5530108F.9000607@ilande.co.uk \
--to=mark.cave-ayland@ilande.co.uk \
--cc=agraf@suse.de \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=stefanb@linux.vnet.ibm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.