[PATCH] ppc64: Add VMX save flag to VPA
authorOlof Johansson <olof@lixom.net>
Sat, 3 Sep 2005 22:55:59 +0000 (15:55 -0700)
committerLinus Torvalds <torvalds@evo.osdl.org>
Mon, 5 Sep 2005 07:06:01 +0000 (00:06 -0700)
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>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/ppc64/kernel/pSeries_lpar.c
arch/ppc64/kernel/pacaData.c
include/asm-ppc64/lppaca.h

index 0a3ddc9..a1d5fdf 100644 (file)
@@ -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)
index 6182a2c..33a2d8d 100644 (file)
@@ -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
index 70766b5..9e2a6c0 100644 (file)
@@ -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
 
 
 //=============================================================================