[B][SRU][PATCH 0/1] selftests/powerpc: Fix ptrace tm failure

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

[B][SRU][PATCH 0/1] selftests/powerpc: Fix ptrace tm failure

Po-Hsu Lin (Sam)
BugLink: https://bugs.launchpad.net/bugs/1813127

== Justification ==
ptrace-tm-spd-gpr in powerpc/ptrace will fail with Power8 on Bionic:
$ sudo ./ptrace-tm-spd-gpr
test: ptrace_tm_spd_gpr
tags: git_version:c186097-dirty
!! killing ptrace_tm_spd_gpr
!! child died by signal 15
failure: ptrace_tm_spd_gpr

This is due to a segmentation fault that happens on the child process
prior to setting cptr[2] = 1. This causes the parent process to wait
forever at 'while (!pptr[2])' and the test to be killed by the test
harness framework by timeout.

== Fix ==
48dc0ef (selftests/powerpc: Fix ptrace tm failure)

This patch can be cherry-picked for Bionic.

== Test ==
After the patch, the test will pass with:
$ sudo ./ptrace-tm-spd-gpr
test: ptrace_tm_spd_gpr
tags: git_version:c186097-dirty
success: ptrace_tm_spd_gpr

== Regression potential ==
None, change for the testing tool only.


Breno Leitao (1):
  selftests/powerpc: Fix ptrace tm failure

 tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[B][SRU][PATCH 1/1] selftests/powerpc: Fix ptrace tm failure

Po-Hsu Lin (Sam)
From: Breno Leitao <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1813127

Test ptrace-tm-spd-gpr fails on current kernel (4.19) due to a segmentation
fault that happens on the child process prior to setting cptr[2] = 1. This
causes the parent process to wait forever at 'while (!pptr[2])' and the test to
be killed by the test harness framework by timeout, thus, failing.

The segmentation fault happens because of a inline assembly being
generated as:

        0x10000355c <tm_spd_gpr+492>    lfs    f0, 0(0)

This is reading memory position 0x0 and causing the segmentation fault.

This code is being generated by ASM_LOAD_FPR_SINGLE_PRECISION(flt_4), where
flt_4 is passed to the inline assembly block as:

        [flt_4] "r" (&d)

Since the inline assembly 'r' constraint means any GPR, gpr0 is being
chosen, thus causing this issue when issuing a Load Floating-Point Single
instruction.

This patch simply changes the constraint to 'b', which specify that this
register will be used as base, and r0 is not allowed to be used, avoiding
this issue.

Other than that, removing flt_2 register from the input operands, since it
is not used by the inline assembly code at all.

Cc: [hidden email]
Signed-off-by: Breno Leitao <[hidden email]>
Acked-by: Segher Boessenkool <[hidden email]>
Signed-off-by: Michael Ellerman <[hidden email]>
(cherry picked from commit 48dc0ef19044bfb69193302fbe3a834e3331b7ae)
Signed-off-by: Po-Hsu Lin <[hidden email]>
---
 tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c b/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c
index 327fa94..dbdffa2 100644
--- a/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c
+++ b/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c
@@ -67,8 +67,8 @@ void tm_spd_gpr(void)
  "3: ;"
  : [res] "=r" (result), [texasr] "=r" (texasr)
  : [gpr_1]"i"(GPR_1), [gpr_2]"i"(GPR_2), [gpr_4]"i"(GPR_4),
- [sprn_texasr] "i" (SPRN_TEXASR), [flt_1] "r" (&a),
- [flt_2] "r" (&b), [flt_4] "r" (&d)
+ [sprn_texasr] "i" (SPRN_TEXASR), [flt_1] "b" (&a),
+ [flt_4] "b" (&d)
  : "memory", "r5", "r6", "r7",
  "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
  "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [B][SRU][PATCH 1/1] selftests/powerpc: Fix ptrace tm failure

Stefan Bader-2
On 24.01.19 09:30, Po-Hsu Lin wrote:

> From: Breno Leitao <[hidden email]>
>
> BugLink: https://bugs.launchpad.net/bugs/1813127
>
> Test ptrace-tm-spd-gpr fails on current kernel (4.19) due to a segmentation
> fault that happens on the child process prior to setting cptr[2] = 1. This
> causes the parent process to wait forever at 'while (!pptr[2])' and the test to
> be killed by the test harness framework by timeout, thus, failing.
>
> The segmentation fault happens because of a inline assembly being
> generated as:
>
> 0x10000355c <tm_spd_gpr+492>    lfs    f0, 0(0)
>
> This is reading memory position 0x0 and causing the segmentation fault.
>
> This code is being generated by ASM_LOAD_FPR_SINGLE_PRECISION(flt_4), where
> flt_4 is passed to the inline assembly block as:
>
> [flt_4] "r" (&d)
>
> Since the inline assembly 'r' constraint means any GPR, gpr0 is being
> chosen, thus causing this issue when issuing a Load Floating-Point Single
> instruction.
>
> This patch simply changes the constraint to 'b', which specify that this
> register will be used as base, and r0 is not allowed to be used, avoiding
> this issue.
>
> Other than that, removing flt_2 register from the input operands, since it
> is not used by the inline assembly code at all.
>
> Cc: [hidden email]
> Signed-off-by: Breno Leitao <[hidden email]>
> Acked-by: Segher Boessenkool <[hidden email]>
> Signed-off-by: Michael Ellerman <[hidden email]>
> (cherry picked from commit 48dc0ef19044bfb69193302fbe3a834e3331b7ae)
> Signed-off-by: Po-Hsu Lin <[hidden email]>
Acked-by: Stefan Bader <[hidden email]>

> ---
>  tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c b/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c
> index 327fa94..dbdffa2 100644
> --- a/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c
> +++ b/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c
> @@ -67,8 +67,8 @@ void tm_spd_gpr(void)
>   "3: ;"
>   : [res] "=r" (result), [texasr] "=r" (texasr)
>   : [gpr_1]"i"(GPR_1), [gpr_2]"i"(GPR_2), [gpr_4]"i"(GPR_4),
> - [sprn_texasr] "i" (SPRN_TEXASR), [flt_1] "r" (&a),
> - [flt_2] "r" (&b), [flt_4] "r" (&d)
> + [sprn_texasr] "i" (SPRN_TEXASR), [flt_1] "b" (&a),
> + [flt_4] "b" (&d)
>   : "memory", "r5", "r6", "r7",
>   "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
>   "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
>


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team

signature.asc (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

ACK: [B][SRU][PATCH 1/1] selftests/powerpc: Fix ptrace tm failure

Kleber Souza
In reply to this post by Po-Hsu Lin (Sam)
On 1/24/19 9:30 AM, Po-Hsu Lin wrote:

> From: Breno Leitao <[hidden email]>
>
> BugLink: https://bugs.launchpad.net/bugs/1813127
>
> Test ptrace-tm-spd-gpr fails on current kernel (4.19) due to a segmentation
> fault that happens on the child process prior to setting cptr[2] = 1. This
> causes the parent process to wait forever at 'while (!pptr[2])' and the test to
> be killed by the test harness framework by timeout, thus, failing.
>
> The segmentation fault happens because of a inline assembly being
> generated as:
>
> 0x10000355c <tm_spd_gpr+492>    lfs    f0, 0(0)
>
> This is reading memory position 0x0 and causing the segmentation fault.
>
> This code is being generated by ASM_LOAD_FPR_SINGLE_PRECISION(flt_4), where
> flt_4 is passed to the inline assembly block as:
>
> [flt_4] "r" (&d)
>
> Since the inline assembly 'r' constraint means any GPR, gpr0 is being
> chosen, thus causing this issue when issuing a Load Floating-Point Single
> instruction.
>
> This patch simply changes the constraint to 'b', which specify that this
> register will be used as base, and r0 is not allowed to be used, avoiding
> this issue.
>
> Other than that, removing flt_2 register from the input operands, since it
> is not used by the inline assembly code at all.
>
> Cc: [hidden email]
> Signed-off-by: Breno Leitao <[hidden email]>
> Acked-by: Segher Boessenkool <[hidden email]>
> Signed-off-by: Michael Ellerman <[hidden email]>
> (cherry picked from commit 48dc0ef19044bfb69193302fbe3a834e3331b7ae)
> Signed-off-by: Po-Hsu Lin <[hidden email]>
Acked-by: Kleber Sacilotto de Souza <[hidden email]>

> ---
>  tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c b/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c
> index 327fa94..dbdffa2 100644
> --- a/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c
> +++ b/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c
> @@ -67,8 +67,8 @@ void tm_spd_gpr(void)
>   "3: ;"
>   : [res] "=r" (result), [texasr] "=r" (texasr)
>   : [gpr_1]"i"(GPR_1), [gpr_2]"i"(GPR_2), [gpr_4]"i"(GPR_4),
> - [sprn_texasr] "i" (SPRN_TEXASR), [flt_1] "r" (&a),
> - [flt_2] "r" (&b), [flt_4] "r" (&d)
> + [sprn_texasr] "i" (SPRN_TEXASR), [flt_1] "b" (&a),
> + [flt_4] "b" (&d)
>   : "memory", "r5", "r6", "r7",
>   "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
>   "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",



--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED: [B][SRU][PATCH 0/1] selftests/powerpc: Fix ptrace tm failure

Khaled Elmously
In reply to this post by Po-Hsu Lin (Sam)
On 2019-01-24 16:30:06 , Po-Hsu Lin wrote:

> BugLink: https://bugs.launchpad.net/bugs/1813127
>
> == Justification ==
> ptrace-tm-spd-gpr in powerpc/ptrace will fail with Power8 on Bionic:
> $ sudo ./ptrace-tm-spd-gpr
> test: ptrace_tm_spd_gpr
> tags: git_version:c186097-dirty
> !! killing ptrace_tm_spd_gpr
> !! child died by signal 15
> failure: ptrace_tm_spd_gpr
>
> This is due to a segmentation fault that happens on the child process
> prior to setting cptr[2] = 1. This causes the parent process to wait
> forever at 'while (!pptr[2])' and the test to be killed by the test
> harness framework by timeout.
>
> == Fix ==
> 48dc0ef (selftests/powerpc: Fix ptrace tm failure)
>
> This patch can be cherry-picked for Bionic.
>
> == Test ==
> After the patch, the test will pass with:
> $ sudo ./ptrace-tm-spd-gpr
> test: ptrace_tm_spd_gpr
> tags: git_version:c186097-dirty
> success: ptrace_tm_spd_gpr
>
> == Regression potential ==
> None, change for the testing tool only.
>
>
> Breno Leitao (1):
>   selftests/powerpc: Fix ptrace tm failure
>
>  tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> --
> 2.7.4
>
>
> --
> kernel-team mailing list
> [hidden email]
> https://lists.ubuntu.com/mailman/listinfo/kernel-team

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team