[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aecb14d84b1af658a87a2b1ba3a49ac13d39560e.camel@physik.fu-berlin.de>
Date: Thu, 28 Aug 2025 14:36:43 +0200
From: John Paul Adrian Glaubitz <glaubitz@...sik.fu-berlin.de>
To: Michael Karcher <kernel@...rcher.dialup.fu-berlin.de>,
linux-kernel@...r.kernel.org
Cc: sparclinux@...r.kernel.org, Andreas Larsson <andreas@...sler.com>,
Anthony Yznaga <anthony.yznaga@...cle.com>
Subject: Re: [PATCH 1/1] sparc: fix accurate exception reporting in
copy_{from_to}_user for M7
Hi Michael,
On Thu, 2025-08-28 at 14:18 +0200, Michael Karcher wrote:
> ---
> arch/sparc/lib/M7memcpy.S | 20 ++++++++++----------
> arch/sparc/lib/Memcpy_utils.S | 9 +++++++++
> 2 files changed, 19 insertions(+), 10 deletions(-)
>
> diff --git a/arch/sparc/lib/M7memcpy.S b/arch/sparc/lib/M7memcpy.S
> index cbd42ea7c3f7..99357bfa8e82 100644
> --- a/arch/sparc/lib/M7memcpy.S
> +++ b/arch/sparc/lib/M7memcpy.S
> @@ -696,16 +696,16 @@ FUNC_NAME:
> EX_LD_FP(LOAD(ldd, %o4+40, %f26), memcpy_retl_o2_plus_o5_plus_40)
> faligndata %f24, %f26, %f10
> EX_ST_FP(STORE(std, %f6, %o0+24), memcpy_retl_o2_plus_o5_plus_40)
> - EX_LD_FP(LOAD(ldd, %o4+48, %f28), memcpy_retl_o2_plus_o5_plus_40)
> + EX_LD_FP(LOAD(ldd, %o4+48, %f28), memcpy_retl_o2_plus_o5_plus_32)
> faligndata %f26, %f28, %f12
> - EX_ST_FP(STORE(std, %f8, %o0+32), memcpy_retl_o2_plus_o5_plus_40)
> + EX_ST_FP(STORE(std, %f8, %o0+32), memcpy_retl_o2_plus_o5_plus_32)
> add %o4, 64, %o4
> - EX_LD_FP(LOAD(ldd, %o4-8, %f30), memcpy_retl_o2_plus_o5_plus_40)
> + EX_LD_FP(LOAD(ldd, %o4-8, %f30), memcpy_retl_o2_plus_o5_plus_24)
> faligndata %f28, %f30, %f14
> - EX_ST_FP(STORE(std, %f10, %o0+40), memcpy_retl_o2_plus_o5_plus_40)
> - EX_ST_FP(STORE(std, %f12, %o0+48), memcpy_retl_o2_plus_o5_plus_40)
> + EX_ST_FP(STORE(std, %f10, %o0+40), memcpy_retl_o2_plus_o5_plus_24)
> + EX_ST_FP(STORE(std, %f12, %o0+48), memcpy_retl_o2_plus_o5_plus_16)
> add %o0, 64, %o0
> - EX_ST_FP(STORE(std, %f14, %o0-8), memcpy_retl_o2_plus_o5_plus_40)
> + EX_ST_FP(STORE(std, %f14, %o0-8), memcpy_retl_o2_plus_o5_plus_8)
> fsrc2 %f30, %f14
> bgu,pt %xcc, .Lunalign_sloop
> prefetch [%o4 + (8 * BLOCK_SIZE)], 20
> @@ -728,7 +728,7 @@ FUNC_NAME:
> add %o4, 8, %o4
> faligndata %f0, %f2, %f16
> subcc %o5, 8, %o5
> - EX_ST_FP(STORE(std, %f16, %o0), memcpy_retl_o2_plus_o5)
> + EX_ST_FP(STORE(std, %f16, %o0), memcpy_retl_o2_plus_o5_plus_8)
> fsrc2 %f2, %f0
> bgu,pt %xcc, .Lunalign_by8
> add %o0, 8, %o0
> @@ -772,7 +772,7 @@ FUNC_NAME:
> subcc %o5, 0x20, %o5
> EX_ST(STORE(stx, %o3, %o0 + 0x00), memcpy_retl_o2_plus_o5_plus_32)
> EX_ST(STORE(stx, %g2, %o0 + 0x08), memcpy_retl_o2_plus_o5_plus_24)
> - EX_ST(STORE(stx, %g7, %o0 + 0x10), memcpy_retl_o2_plus_o5_plus_24)
> + EX_ST(STORE(stx, %g7, %o0 + 0x10), memcpy_retl_o2_plus_o5_plus_16)
> EX_ST(STORE(stx, %o4, %o0 + 0x18), memcpy_retl_o2_plus_o5_plus_8)
> bne,pt %xcc, 1b
> add %o0, 0x20, %o0
> @@ -804,12 +804,12 @@ FUNC_NAME:
> brz,pt %o3, 2f
> sub %o2, %o3, %o2
>
> -1: EX_LD(LOAD(ldub, %o1 + 0x00, %g2), memcpy_retl_o2_plus_g1)
> +1: EX_LD(LOAD(ldub, %o1 + 0x00, %g2), memcpy_retl_o2_plus_o3)
> add %o1, 1, %o1
> subcc %o3, 1, %o3
> add %o0, 1, %o0
> bne,pt %xcc, 1b
> - EX_ST(STORE(stb, %g2, %o0 - 0x01), memcpy_retl_o2_plus_g1_plus_1)
> + EX_ST(STORE(stb, %g2, %o0 - 0x01), memcpy_retl_o2_plus_o3_plus_1)
> 2:
> and %o1, 0x7, %o3
> brz,pn %o3, .Lmedium_noprefetch_cp
> diff --git a/arch/sparc/lib/Memcpy_utils.S b/arch/sparc/lib/Memcpy_utils.S
> index 64fbac28b3db..207343367bb2 100644
> --- a/arch/sparc/lib/Memcpy_utils.S
> +++ b/arch/sparc/lib/Memcpy_utils.S
> @@ -137,6 +137,15 @@ ENTRY(memcpy_retl_o2_plus_63_8)
> ba,pt %xcc, __restore_asi
> add %o2, 8, %o0
> ENDPROC(memcpy_retl_o2_plus_63_8)
> +ENTRY(memcpy_retl_o2_plus_o3)
> + ba,pt %xcc, __restore_asi
> + add %o2, %o3, %o0
> +ENDPROC(memcpy_retl_o2_plus_o3)
> +ENTRY(memcpy_retl_o2_plus_o3_plus_1)
> + add %o3, 1, %o3
> + ba,pt %xcc, __restore_asi
> + add %o2, %o3, %o0
> +ENDPROC(memcpy_retl_o2_plus_o3_plus_1)
> ENTRY(memcpy_retl_o2_plus_o5)
> ba,pt %xcc, __restore_asi
> add %o2, %o5, %o0
Shouldn't this have:
Fixes 34060b8fffa7 ("arch/sparc: Add accurate exception reporting in M7memcpy")
?
Adrian
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer
`. `' Physicist
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
Powered by blists - more mailing lists