Message ID | 1447817215-15804-5-git-send-email-cyrilbur@gmail.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
On Wed, 2015-11-18 at 14:26 +1100, Cyril Bur wrote: > With threads leaving the math bits enabled in their saved MSR to > indicate > that the hardware is hot and a restore is not needed, children need > to turn > it off as when they do get scheduled, there's no way their registers > could > have been hot. > > Signed-off-by: Cyril Bur <cyrilbur@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 398f7bf..441d9e5 100644 > --- a/arch/powerpc/kernel/process.c > +++ b/arch/powerpc/kernel/process.c > @@ -1243,6 +1243,7 @@ int copy_thread(unsigned long clone_flags, > unsigned long usp, > > f = ret_from_fork; > } > + childregs->msr &= ~(MSR_FP|MSR_VEC|MSR_VSX); Is this a current bug? Mikey > sp -= STACK_FRAME_OVERHEAD; > > /*
On Mon, 23 Nov 2015 12:08:38 +1100 Michael Neuling <mikey@neuling.org> wrote: > On Wed, 2015-11-18 at 14:26 +1100, Cyril Bur wrote: > > With threads leaving the math bits enabled in their saved MSR to > > indicate > > that the hardware is hot and a restore is not needed, children need > > to turn > > it off as when they do get scheduled, there's no way their registers > > could > > have been hot. > > > > Signed-off-by: Cyril Bur <cyrilbur@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 398f7bf..441d9e5 100644 > > --- a/arch/powerpc/kernel/process.c > > +++ b/arch/powerpc/kernel/process.c > > @@ -1243,6 +1243,7 @@ int copy_thread(unsigned long clone_flags, > > unsigned long usp, > > > > f = ret_from_fork; > > } > > + childregs->msr &= ~(MSR_FP|MSR_VEC|MSR_VSX); > > Is this a current bug? > It is impossible currently because saving the registers (of the parent, before the creating the child) also forces a giveup of the facilities. The next patch in the series decouples the saving and the giving up which makes this situation possible. > Mikey > > > sp -= STACK_FRAME_OVERHEAD; > > > > /*
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 398f7bf..441d9e5 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1243,6 +1243,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp, f = ret_from_fork; } + childregs->msr &= ~(MSR_FP|MSR_VEC|MSR_VSX); sp -= STACK_FRAME_OVERHEAD; /*
With threads leaving the math bits enabled in their saved MSR to indicate that the hardware is hot and a restore is not needed, children need to turn it off as when they do get scheduled, there's no way their registers could have been hot. Signed-off-by: Cyril Bur <cyrilbur@gmail.com> --- arch/powerpc/kernel/process.c | 1 + 1 file changed, 1 insertion(+)