From: Scott Wood <scottwood@freescale.com>
To: kvm-ppc@vger.kernel.org
Subject: Re: [PATCH] KVM: PPC: bookehv: Fix save/restore of guest accessible SPRGs.
Date: Fri, 06 Apr 2012 19:02:24 +0000 [thread overview]
Message-ID: <4F7F3DC0.5030404@freescale.com> (raw)
In-Reply-To: <1333535635-14820-1-git-send-email-b16395@freescale.com>
On 04/04/2012 05:33 AM, b16395@freescale.com wrote:
> From: Varun Sethi<Varun.Sethi@freescale.com>
>
> For Guest accessible SPRGs 4-7, save/restore must be handled differently for 64bit and
> non-64 bit case. The registers are maintained as 64 bit copies by KVM. While saving/restoring
> for the non-64 bit case we should always take the lower 4 bytes.
>
> Signed-off-by: Varun Sethi<Varun.Sethi@freescale.com>
> ---
> arch/powerpc/kvm/bookehv_interrupts.S | 48 +++++++++++++++++++++++++++-----
> 1 files changed, 40 insertions(+), 8 deletions(-)
>
> diff --git a/arch/powerpc/kvm/bookehv_interrupts.S b/arch/powerpc/kvm/bookehv_interrupts.S
> index 909e96e..c1c0bae 100644
> --- a/arch/powerpc/kvm/bookehv_interrupts.S
> +++ b/arch/powerpc/kvm/bookehv_interrupts.S
> @@ -320,13 +320,29 @@ _GLOBAL(kvmppc_resume_host)
> PPC_STL r5, VCPU_LR(r4)
> mfspr r7, SPRN_SPRG5
> PPC_STL r3, VCPU_VRSAVE(r4)
> - PPC_STL r6, VCPU_SHARED_SPRG4(r11)
> +#ifdef CONFIG_64BIT
> + std r6, VCPU_SHARED_SPRG4(r11)
> +#else
> + stw r6, (VCPU_SHARED_SPRG4 + 4)(r11)
> +#endif
> mfspr r8, SPRN_SPRG6
> - PPC_STL r7, VCPU_SHARED_SPRG5(r11)
> +#ifdef CONFIG_64BIT
> + std r7, VCPU_SHARED_SPRG5(r11)
> +#else
> + stw r7, (VCPU_SHARED_SPRG5 + 4)(r11)
> +#endif
> mfspr r9, SPRN_SPRG7
> - PPC_STL r8, VCPU_SHARED_SPRG6(r11)
> +#ifdef CONFIG_64BIT
> + std r8, VCPU_SHARED_SPRG6(r11)
> +#else
> + stw r8, (VCPU_SHARED_SPRG6 + 4)(r11)
> +#endif
> mfxer r3
> - PPC_STL r9, VCPU_SHARED_SPRG7(r11)
> +#ifdef CONFIG_64BIT
> + std r9, VCPU_SHARED_SPRG7(r11)
> +#else
> + stw r9, (VCPU_SHARED_SPRG7 + 4)(r11)
> +#endif
>
> /* save guest MAS registers and restore host mas4& mas6 */
> mfspr r5, SPRN_MAS0
> @@ -549,13 +565,29 @@ lightweight_exit:
> * SPRGs, so we need to reload them here with the guest's values.
> */
> lwz r3, VCPU_VRSAVE(r4)
> - lwz r5, VCPU_SHARED_SPRG4(r11)
> +#ifdef CONFIG_64BIT
> + ld r5, VCPU_SHARED_SPRG4(r11)
> +#else
> + lwz r5, (VCPU_SHARED_SPRG4 + 4)(r11)
> +#endif
> mtspr SPRN_VRSAVE, r3
> - lwz r6, VCPU_SHARED_SPRG5(r11)
> +#ifdef CONFIG_64BIT
> + ld r6, VCPU_SHARED_SPRG5(r11)
> +#else
> + lwz r6, (VCPU_SHARED_SPRG5 + 4)(r11)
> +#endif
> mtspr SPRN_SPRG4W, r5
> - lwz r7, VCPU_SHARED_SPRG6(r11)
> +#ifdef CONFIG_64BIT
> + ld r7, VCPU_SHARED_SPRG6(r11)
> +#else
> + lwz r7, (VCPU_SHARED_SPRG6 + 4)(r11)
> +#endif
> mtspr SPRN_SPRG5W, r6
> - lwz r8, VCPU_SHARED_SPRG7(r11)
> +#ifdef CONFIG_64BIT
> + ld r8, VCPU_SHARED_SPRG7(r11)
> +#else
> + lwz r8, (VCPU_SHARED_SPRG7 + 4)(r11)
> +#endif
> mtspr SPRN_SPRG6W, r7
> mtspr SPRN_SPRG7W, r8
>
Maybe introduce a macro for accesses of this form?
-Scott
next prev parent reply other threads:[~2012-04-06 19:02 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-04 10:45 [PATCH] KVM: PPC: bookehv: Fix save/restore of guest accessible SPRGs b16395
2012-04-06 19:02 ` Scott Wood [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-04-04 10:33 Varun Sethi
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=4F7F3DC0.5030404@freescale.com \
--to=scottwood@freescale.com \
--cc=kvm-ppc@vger.kernel.org \
/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.