From: Olof Johansson <olof@lixom.net>

We need to indicate to the hypervisor that it needs to save our VMX
registers when switching partitions on a shared-processor system, just as
it needs to for FP and PMC registers.

This could be made to be on-demand when VMX is used, but we don't do that
for FP nor PMC right now either so let's not overcomplicate things.

Signed-off-by: Olof Johansson <olof@lixom.net>
Acked-by: Paul Mackerras <paulus@samba.org>
Cc: Anton Blanchard <anton@samba.org>
Cc: <engebret@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 arch/ppc64/kernel/pSeries_lpar.c |    4 ++++
 arch/ppc64/kernel/pacaData.c     |    1 +
 include/asm-ppc64/lppaca.h       |    2 +-
 3 files changed, 6 insertions(+), 1 deletion(-)

diff -puN arch/ppc64/kernel/pacaData.c~ppc64-add-vmx-save-flag-to-vpa arch/ppc64/kernel/pacaData.c
--- devel/arch/ppc64/kernel/pacaData.c~ppc64-add-vmx-save-flag-to-vpa	2005-08-30 18:41:30.000000000 -0700
+++ devel-akpm/arch/ppc64/kernel/pacaData.c	2005-08-30 18:41:30.000000000 -0700
@@ -59,6 +59,7 @@ extern unsigned long __toc_start;
 		.fpregs_in_use = 1,					    \
 		.end_of_quantum = 0xfffffffffffffffful,			    \
 		.slb_count = 64,					    \
+		.vmxregs_in_use = 0,					    \
 	},								    \
 
 #ifdef CONFIG_PPC_ISERIES
diff -puN arch/ppc64/kernel/pSeries_lpar.c~ppc64-add-vmx-save-flag-to-vpa arch/ppc64/kernel/pSeries_lpar.c
--- devel/arch/ppc64/kernel/pSeries_lpar.c~ppc64-add-vmx-save-flag-to-vpa	2005-08-30 18:41:30.000000000 -0700
+++ devel-akpm/arch/ppc64/kernel/pSeries_lpar.c	2005-08-30 18:41:30.000000000 -0700
@@ -266,6 +266,10 @@ void vpa_init(int cpu)
 
 	/* Register the Virtual Processor Area (VPA) */
 	flags = 1UL << (63 - 18);
+
+	if (cpu_has_feature(CPU_FTR_ALTIVEC))
+		paca[cpu].lppaca.vmxregs_in_use = 1;
+
 	ret = register_vpa(flags, hwcpu, __pa(vpa));
 
 	if (ret)
diff -puN include/asm-ppc64/lppaca.h~ppc64-add-vmx-save-flag-to-vpa include/asm-ppc64/lppaca.h
--- devel/include/asm-ppc64/lppaca.h~ppc64-add-vmx-save-flag-to-vpa	2005-08-30 18:41:30.000000000 -0700
+++ devel-akpm/include/asm-ppc64/lppaca.h	2005-08-30 18:41:30.000000000 -0700
@@ -108,7 +108,7 @@ struct lppaca
 	volatile u32 virtual_decr;	// Virtual DECR for shared procsx78-x7B
 	u16	slb_count;		// # of SLBs to maintain        x7C-x7D
 	u8	idle;			// Indicate OS is idle          x7E
-	u8	reserved5;		// Reserved                     x7F
+	u8	vmxregs_in_use;		// VMX registers in use         x7F
 
 
 //=============================================================================
_