stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] MIPS: CPS: Fix MIPS_ISA_LEVEL_RAW fallout
       [not found] <20180202120658.GA8479@saruman>
@ 2018-02-02 14:36 ` James Hogan
  2018-02-04 23:53   ` Greg Ungerer
  0 siblings, 1 reply; 2+ messages in thread
From: James Hogan @ 2018-02-02 14:36 UTC (permalink / raw)
  To: linux-mips; +Cc: Greg Ungerer, James Hogan, Ralf Baechle, Paul Burton, stable

Commit 17278a91e04f ("MIPS: CPS: Fix r1 .set mt assembler warning")
added .set MIPS_ISA_LEVEL_RAW to silence warnings about .set mt on r1,
however this can result in a MOVE being encoded as a 64-bit DADDU
instruction on certain version of binutils (e.g. 2.22), and reserved
instruction exceptions at runtime on 32-bit hardware.

Reduce the sizes of the push/pop sections to include only instructions
that are part of the MT ASE or which won't convert to 64-bit
instructions after .set mips64r2/mips64r6.

Reported-by: Greg Ungerer <gerg@linux-m68k.org>
Fixes: 17278a91e04f ("MIPS: CPS: Fix r1 .set mt assembler warning")
Signed-off-by: James Hogan <jhogan@kernel.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Paul Burton <paul.burton@mips.com>
Cc: linux-mips@linux-mips.org
Cc: <stable@vger.kernel.org> # 4.15
---
Greg: Please can you test this patch.
---
 arch/mips/kernel/cps-vec.S | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/arch/mips/kernel/cps-vec.S b/arch/mips/kernel/cps-vec.S
index e68e6e04063a..1025f937ab0e 100644
--- a/arch/mips/kernel/cps-vec.S
+++ b/arch/mips/kernel/cps-vec.S
@@ -388,15 +388,16 @@ LEAF(mips_cps_boot_vpes)
 
 #elif defined(CONFIG_MIPS_MT)
 
-	.set	push
-	.set	MIPS_ISA_LEVEL_RAW
-	.set	mt
-
 	/* If the core doesn't support MT then return */
 	has_mt	t0, 5f
 
 	/* Enter VPE configuration state */
+	.set	push
+	.set	MIPS_ISA_LEVEL_RAW
+	.set	mt
 	dvpe
+	.set	pop
+
 	PTR_LA	t1, 1f
 	jr.hb	t1
 	 nop
@@ -422,6 +423,10 @@ LEAF(mips_cps_boot_vpes)
 	mtc0	t0, CP0_VPECONTROL
 	ehb
 
+	.set	push
+	.set	MIPS_ISA_LEVEL_RAW
+	.set	mt
+
 	/* Skip the VPE if its TC is not halted */
 	mftc0	t0, CP0_TCHALT
 	beqz	t0, 2f
@@ -495,6 +500,8 @@ LEAF(mips_cps_boot_vpes)
 	ehb
 	evpe
 
+	.set	pop
+
 	/* Check whether this VPE is meant to be running */
 	li	t0, 1
 	sll	t0, t0, a1
@@ -509,7 +516,7 @@ LEAF(mips_cps_boot_vpes)
 1:	jr.hb	t0
 	 nop
 
-2:	.set	pop
+2:
 
 #endif /* CONFIG_MIPS_MT_SMP */
 
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] MIPS: CPS: Fix MIPS_ISA_LEVEL_RAW fallout
  2018-02-02 14:36 ` [PATCH] MIPS: CPS: Fix MIPS_ISA_LEVEL_RAW fallout James Hogan
@ 2018-02-04 23:53   ` Greg Ungerer
  0 siblings, 0 replies; 2+ messages in thread
From: Greg Ungerer @ 2018-02-04 23:53 UTC (permalink / raw)
  To: James Hogan, linux-mips; +Cc: Ralf Baechle, Paul Burton, stable

Hi James,

On 03/02/18 00:36, James Hogan wrote:
> Commit 17278a91e04f ("MIPS: CPS: Fix r1 .set mt assembler warning")
> added .set MIPS_ISA_LEVEL_RAW to silence warnings about .set mt on r1,
> however this can result in a MOVE being encoded as a 64-bit DADDU
> instruction on certain version of binutils (e.g. 2.22), and reserved
> instruction exceptions at runtime on 32-bit hardware.
> 
> Reduce the sizes of the push/pop sections to include only instructions
> that are part of the MT ASE or which won't convert to 64-bit
> instructions after .set mips64r2/mips64r6.
> 
> Reported-by: Greg Ungerer <gerg@linux-m68k.org>
> Fixes: 17278a91e04f ("MIPS: CPS: Fix r1 .set mt assembler warning")
> Signed-off-by: James Hogan <jhogan@kernel.org>
> Cc: Ralf Baechle <ralf@linux-mips.org>
> Cc: Paul Burton <paul.burton@mips.com>
> Cc: linux-mips@linux-mips.org
> Cc: <stable@vger.kernel.org> # 4.15
> ---
> Greg: Please can you test this patch.

Tested and works. Thanks for the quick response and turn around.

Tested-by: Greg Ungerer <gerg@linux-m68k.org>

Regards
Greg


> ---
>  arch/mips/kernel/cps-vec.S | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/mips/kernel/cps-vec.S b/arch/mips/kernel/cps-vec.S
> index e68e6e04063a..1025f937ab0e 100644
> --- a/arch/mips/kernel/cps-vec.S
> +++ b/arch/mips/kernel/cps-vec.S
> @@ -388,15 +388,16 @@ LEAF(mips_cps_boot_vpes)
>  
>  #elif defined(CONFIG_MIPS_MT)
>  
> -	.set	push
> -	.set	MIPS_ISA_LEVEL_RAW
> -	.set	mt
> -
>  	/* If the core doesn't support MT then return */
>  	has_mt	t0, 5f
>  
>  	/* Enter VPE configuration state */
> +	.set	push
> +	.set	MIPS_ISA_LEVEL_RAW
> +	.set	mt
>  	dvpe
> +	.set	pop
> +
>  	PTR_LA	t1, 1f
>  	jr.hb	t1
>  	 nop
> @@ -422,6 +423,10 @@ LEAF(mips_cps_boot_vpes)
>  	mtc0	t0, CP0_VPECONTROL
>  	ehb
>  
> +	.set	push
> +	.set	MIPS_ISA_LEVEL_RAW
> +	.set	mt
> +
>  	/* Skip the VPE if its TC is not halted */
>  	mftc0	t0, CP0_TCHALT
>  	beqz	t0, 2f
> @@ -495,6 +500,8 @@ LEAF(mips_cps_boot_vpes)
>  	ehb
>  	evpe
>  
> +	.set	pop
> +
>  	/* Check whether this VPE is meant to be running */
>  	li	t0, 1
>  	sll	t0, t0, a1
> @@ -509,7 +516,7 @@ LEAF(mips_cps_boot_vpes)
>  1:	jr.hb	t0
>  	 nop
>  
> -2:	.set	pop
> +2:
>  
>  #endif /* CONFIG_MIPS_MT_SMP */
>  
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-02-05  0:03 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20180202120658.GA8479@saruman>
2018-02-02 14:36 ` [PATCH] MIPS: CPS: Fix MIPS_ISA_LEVEL_RAW fallout James Hogan
2018-02-04 23:53   ` Greg Ungerer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).