Thread (160 messages) 160 messages, 11 authors, 2015-04-20

Re: [PATCH RFC v2 67/70] MIPS: kernel: process: Do not allow FR=0 on MIPS R6

From: Paul Burton <hidden>
Date: 2015-01-29 23:13:51

On Fri, Jan 16, 2015 at 10:49:46AM +0000, Markos Chandras wrote:
quoted hunk ↗ jump to hunk
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 <redacted>
Cc: Matthew Fortune <redacted>
Signed-off-by: Markos Chandras <redacted>
---
 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
quoted hunk ↗ jump to hunk
 		/* 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help