Re: [PATCH] MIPS: CPS: Fix MIPS_ISA_LEVEL_RAW fallout

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxx>
> Fixes: 17278a91e04f ("MIPS: CPS: Fix r1 .set mt assembler warning")
> Signed-off-by: James Hogan <jhogan@xxxxxxxxxx>
> Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx>
> Cc: Paul Burton <paul.burton@xxxxxxxx>
> Cc: linux-mips@xxxxxxxxxxxxxx
> Cc: <stable@xxxxxxxxxxxxxxx> # 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@xxxxxxxxxxxxxx>

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 */
>  
> 




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]