From 9ae7c620880643258e6ca2e38d723e16c068f8fd Mon Sep 17 00:00:00 2001 From: Anton Blanchard Date: Sun, 15 Apr 2012 20:56:45 +0000 Subject: [PATCH] --- yaml --- r: 305343 b: refs/heads/master c: 35000870fcfbb28757ad47de77b4645072d916b8 h: refs/heads/master i: 305341: fc37314d21a60cd01abaa24ef770801fc8df5c76 305339: cf611e38423fb87d0b11c4148ae4fdc98e866c03 305335: fd11ecf0b5b2dea7dcba09958b45e3c6c96c4bdf 305327: f9ae7589cd10f910fc649a3decdd02a493c3df32 305311: 6fc4554081a63cb2af900ad53a4da05f92575264 305279: 5277092bcb2cc8d6bd166c44c2300a8c3e6a155a v: v3 --- [refs] | 2 +- trunk/arch/powerpc/include/asm/switch_to.h | 1 + trunk/arch/powerpc/kernel/process.c | 2 +- trunk/arch/powerpc/kernel/vector.S | 10 ++++++++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 61a8433b931c..fac57ac9b304 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8cd3c23df79411f6b24ddb7d2ed58d26e3b06815 +refs/heads/master: 35000870fcfbb28757ad47de77b4645072d916b8 diff --git a/trunk/arch/powerpc/include/asm/switch_to.h b/trunk/arch/powerpc/include/asm/switch_to.h index 2824609319c7..1a6320290d26 100644 --- a/trunk/arch/powerpc/include/asm/switch_to.h +++ b/trunk/arch/powerpc/include/asm/switch_to.h @@ -40,6 +40,7 @@ static inline void discard_lazy_cpu_state(void) #ifdef CONFIG_ALTIVEC extern void flush_altivec_to_thread(struct task_struct *); extern void giveup_altivec(struct task_struct *); +extern void giveup_altivec_notask(void); #else static inline void flush_altivec_to_thread(struct task_struct *t) { diff --git a/trunk/arch/powerpc/kernel/process.c b/trunk/arch/powerpc/kernel/process.c index 4937c9690090..bb58f41fc045 100644 --- a/trunk/arch/powerpc/kernel/process.c +++ b/trunk/arch/powerpc/kernel/process.c @@ -124,7 +124,7 @@ void enable_kernel_altivec(void) if (current->thread.regs && (current->thread.regs->msr & MSR_VEC)) giveup_altivec(current); else - giveup_altivec(NULL); /* just enable AltiVec for kernel - force */ + giveup_altivec_notask(); #else giveup_altivec(last_task_used_altivec); #endif /* CONFIG_SMP */ diff --git a/trunk/arch/powerpc/kernel/vector.S b/trunk/arch/powerpc/kernel/vector.S index 4d5a3edff49e..e830289d2e48 100644 --- a/trunk/arch/powerpc/kernel/vector.S +++ b/trunk/arch/powerpc/kernel/vector.S @@ -89,6 +89,16 @@ _GLOBAL(load_up_altivec) /* restore registers and return */ blr +_GLOBAL(giveup_altivec_notask) + mfmsr r3 + andis. r4,r3,MSR_VEC@h + bnelr /* Already enabled? */ + oris r3,r3,MSR_VEC@h + SYNC + MTMSRD(r3) /* enable use of VMX now */ + isync + blr + /* * giveup_altivec(tsk) * Disable VMX for the task given as the argument,