Thread (16 messages) 16 messages, 3 authors, 2016-02-10

Re: [v3, 6/9] powerpc: Prepare for splitting giveup_{fpu, altivec, vsx} in two

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2016-02-10 07:51:34

On Thu, 2016-21-01 at 00:55:46 UTC, Cyril Bur wrote:
This prepares for the decoupling of saving {fpu,altivec,vsx} registers and
marking {fpu,altivec,vsx} as being unused by a thread.

Currently giveup_{fpu,altivec,vsx}() does both however optimisations to
task switching can be made if these two operations are decoupled.
save_all() will permit the saving of registers to thread structs and leave
threads MSR with bits enabled.

This patch introduces no functional change.
quoted hunk ↗ jump to hunk
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 0955b7c..45e37c0 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -349,6 +349,14 @@ void flush_spe_to_thread(struct task_struct *tsk)
 		preempt_enable();
 	}
 }
+#else
+/*
+ * save_all() is going to test MSR_SPE, rather than pull in all the
+ * booke definitions all the time on a books kernel just ensure it exists
+ * but acts as a nop.
+ */
+
+#define MSR_SPE 0
 #endif /* CONFIG_SPE */

Building corenet32/64_defconfig this gives me:

  arch/powerpc/kernel/process.c:392:0: error: "MSR_SPE" redefined [-Werror]
   #define MSR_SPE 0
   ^
  In file included from ./arch/powerpc/include/asm/reg.h:18:0,
                   from ./arch/powerpc/include/asm/processor.h:13,
                   from ./arch/powerpc/include/asm/thread_info.h:33,
                   from include/linux/thread_info.h:54,
                   from include/asm-generic/preempt.h:4,
                   from arch/powerpc/include/generated/asm/preempt.h:1,
                   from include/linux/preempt.h:59,
                   from include/linux/spinlock.h:50,
                   from include/linux/seqlock.h:35,
                   from include/linux/time.h:5,
                   from include/uapi/linux/timex.h:56,
                   from include/linux/timex.h:56,
                   from include/linux/sched.h:19,
                   from arch/powerpc/kernel/process.c:18:
  ./arch/powerpc/include/asm/reg_booke.h:33:0: note: this is the location of the previous definition
   #define MSR_SPE  __MASK(MSR_SPE_LG)
   ^
  cc1: all warnings being treated as errors
  scripts/Makefile.build:258: recipe for target 'arch/powerpc/kernel/process.o' failed
  make[1]: *** [arch/powerpc/kernel/process.o] Error 1
  make[1]: *** Waiting for unfinished jobs....
  Makefile:950: recipe for target 'arch/powerpc/kernel' failed

cheers
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help