On 19.04.2011, at 00:31, Scott Wood wrote:

> Linux doesn't use USPRG0 (now renamed VRSAVE in the architecture, even
> when Altivec isn't involved), but a guest might.
> 
> Signed-off-by: Scott Wood <[email protected]>
> ---
> Sent to the right list this time... <sigh>
> 
> arch/powerpc/include/asm/kvm_host.h |    1 +
> arch/powerpc/kernel/asm-offsets.c   |    1 +
> arch/powerpc/kvm/booke_interrupts.S |    5 ++++-
> 3 files changed, 6 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/kvm_host.h 
> b/arch/powerpc/include/asm/kvm_host.h
> index bfb0e0f..34b8732 100644
> --- a/arch/powerpc/include/asm/kvm_host.h
> +++ b/arch/powerpc/include/asm/kvm_host.h
> @@ -228,6 +228,7 @@ struct kvm_vcpu_arch {
>       ulong hflags;
>       ulong guest_owned_ext;
> #endif
> +     u32 vrsave; /* also USPRG0 */
>       u32 mmucr;
>       ulong shadow_msr;
>       ulong sprg4;
> diff --git a/arch/powerpc/kernel/asm-offsets.c 
> b/arch/powerpc/kernel/asm-offsets.c
> index 2b223de..7b9e35e 100644
> --- a/arch/powerpc/kernel/asm-offsets.c
> +++ b/arch/powerpc/kernel/asm-offsets.c
> @@ -395,6 +395,7 @@ int main(void)
>       DEFINE(VCPU_HOST_STACK, offsetof(struct kvm_vcpu, arch.host_stack));
>       DEFINE(VCPU_HOST_PID, offsetof(struct kvm_vcpu, arch.host_pid));
>       DEFINE(VCPU_GPRS, offsetof(struct kvm_vcpu, arch.gpr));
> +     DEFINE(VCPU_VRSAVE, offsetof(struct kvm_vcpu, arch.vrsave));
>       DEFINE(VCPU_SPRG4, offsetof(struct kvm_vcpu, arch.sprg4));
>       DEFINE(VCPU_SPRG5, offsetof(struct kvm_vcpu, arch.sprg5));
>       DEFINE(VCPU_SPRG6, offsetof(struct kvm_vcpu, arch.sprg6));
> diff --git a/arch/powerpc/kvm/booke_interrupts.S 
> b/arch/powerpc/kvm/booke_interrupts.S
> index 54c19d2..cde29c4 100644
> --- a/arch/powerpc/kvm/booke_interrupts.S
> +++ b/arch/powerpc/kvm/booke_interrupts.S
> @@ -184,6 +184,8 @@ _GLOBAL(kvmppc_resume_host)
>       stw     r3, VCPU_GPR(r4)(r4)
>       mfspr   r3, SPRN_SRR0
>       stw     r3, VCPU_PC(r4)
> +     mfspr   r3, SPRN_VRSAVE
> +     stw     r3, VCPU_VRSAVE(r4)

Do we need to swap this on every exit or is vcpu_load/put enough?

Alex

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to