lkml.org 
[lkml]   [2018]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 3.18 035/102] selftests/powerpc: Fix TM resched DSCR test with some compilers
    Date
    From: Michael Ellerman <mpe@ellerman.id.au>

    [ Upstream commit fe06fe860250a4f01d0eaf70a2563b1997174a74 ]

    The tm-resched-dscr test has started failing sometimes, depending on
    what compiler it's built with, eg:

    test: tm_resched_dscr
    Check DSCR TM context switch: tm-resched-dscr: tm-resched-dscr.c:76: test_body: Assertion `rv' failed.
    !! child died by signal 6

    When it fails we see that the compiler doesn't initialise rv to 1 before
    entering the inline asm block. Although that's counter intuitive, it
    is allowed because we tell the compiler that the inline asm will write
    to rv (using "=r"), meaning the original value is irrelevant.

    Marking it as a read/write parameter would presumably work, but it seems
    simpler to fix it by setting the initial value of rv in the inline asm.

    Fixes: 96d016108640 ("powerpc: Correct DSCR during TM context switch")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Acked-by: Michael Neuling <mikey@neuling.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    tools/testing/selftests/powerpc/tm/tm-resched-dscr.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/tools/testing/selftests/powerpc/tm/tm-resched-dscr.c b/tools/testing/selftests/powerpc/tm/tm-resched-dscr.c
    index 42d4c8caad81..de8dc82e2567 100644
    --- a/tools/testing/selftests/powerpc/tm/tm-resched-dscr.c
    +++ b/tools/testing/selftests/powerpc/tm/tm-resched-dscr.c
    @@ -45,12 +45,12 @@ int test_body(void)
    printf("Check DSCR TM context switch: ");
    fflush(stdout);
    for (;;) {
    - rv = 1;
    asm __volatile__ (
    /* set a known value into the DSCR */
    "ld 3, %[dscr1];"
    "mtspr %[sprn_dscr], 3;"

    + "li %[rv], 1;"
    /* start and suspend a transaction */
    TBEGIN
    "beq 1f;"
    --
    2.14.1
    \
     
     \ /
      Last update: 2018-03-19 17:14    [W:2.110 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site