On Thu, 21 Jan 2016 11:55:44 +1100 Cyril Bur <cyril...@gmail.com> wrote:
> Currently when threads get scheduled off they always giveup the FPU, > Altivec (VMX) and Vector (VSX) units if they were using them. When they are > scheduled back on a fault is then taken to enable each facility and load > registers. As a result explicitly disabling FPU/VMX/VSX has not been > necessary. > > Future changes and optimisations remove this mandatory giveup and fault > which could cause calls such as clone() and fork() to copy threads and run > them later with FPU/VMX/VSX enabled but no registers loaded. > > This patch starts the process of having MSR_{FP,VEC,VSX} mean that a > threads registers are hot while not having MSR_{FP,VEC,VSX} means that the > registers must be loaded. This allows for a smarter return to userspace. > > Signed-off-by: Cyril Bur <cyril...@gmail.com> > --- > arch/powerpc/kernel/process.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c > index dccc87e..e0c3d2d 100644 > --- a/arch/powerpc/kernel/process.c > +++ b/arch/powerpc/kernel/process.c > @@ -1307,6 +1307,7 @@ int copy_thread(unsigned long clone_flags, unsigned > long usp, > > f = ret_from_fork; > } > + childregs->msr &= ~(MSR_FP|MSR_VEC|MSR_VSX); Ideally you want to use __msr_check_and_clear() Basically we start with these bits off and then take an exception on use? > sp -= STACK_FRAME_OVERHEAD; > > /* _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev