On Fri, Jan 16, 2015 at 10:49:46AM +0000, Markos Chandras wrote: > A prctl() call to set FR=0 for MIPS R6 should not be allowed > since FR=1 is the only option for R6 cores. > > Cc: Paul Burton <paul.burton@xxxxxxxxxx> > Cc: Matthew Fortune <matthew.fortune@xxxxxxxxxx> > Signed-off-by: Markos Chandras <markos.chandras@xxxxxxxxxx> > --- > arch/mips/include/asm/fpu.h | 3 ++- > arch/mips/kernel/process.c | 4 ++++ > 2 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/arch/mips/include/asm/fpu.h b/arch/mips/include/asm/fpu.h > index 994d21939676..b96d9d327626 100644 > --- a/arch/mips/include/asm/fpu.h > +++ b/arch/mips/include/asm/fpu.h > @@ -68,7 +68,8 @@ static inline int __enable_fpu(enum fpu_mode mode) > goto fr_common; > > case FPU_64BIT: > -#if !(defined(CONFIG_CPU_MIPS32_R2) || defined(CONFIG_64BIT)) > +#if !(defined(CONFIG_CPU_MIPS32_R2) || defined(CONFIG_CPU_MIPS32_R6) \ > + || defined(CONFIG_64BIT)) Hi Markos, This change really seems like a separate one, since it has nothing to do with the prctl or disallowing FR=1, but rather with allowing FR=1 on r6. Thanks, Paul > /* we only have a 32-bit FPU */ > return SIGFPE; > #endif > diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c > index b732c0ce2e56..41ebd5d0ac30 100644 > --- a/arch/mips/kernel/process.c > +++ b/arch/mips/kernel/process.c > @@ -581,6 +581,10 @@ int mips_set_process_fp_mode(struct task_struct *task, unsigned int value) > if ((value & PR_FP_MODE_FRE) && !cpu_has_fre) > return -EOPNOTSUPP; > > + /* FR = 0 not supported in MIPS R6 */ > + if (!(value & PR_FP_MODE_FR) && cpu_has_fpu && cpu_has_mips_r6) > + return -EOPNOTSUPP; > + > /* Save FP & vector context, then disable FPU & MSA */ > if (task->signal == current->signal) > lose_fpu(1); > -- > 2.2.1 >