• Jordan Niethe's avatar
    powerpc/sstep: Fix VSX instruction emulation · 5c88a17e
    Jordan Niethe authored
    Commit af99da74 ("powerpc/sstep: Support VSX vector paired storage
    access instructions") added loading and storing 32 word long data into
    adjacent VSRs. However the calculation used to determine if two VSRs
    needed to be loaded/stored inadvertently prevented the load/storing
    taking place for instructions with a data length less than 16 words.
    
    This causes the emulation to not function correctly, which can be seen
    by the alignment_handler selftest:
    
    $ ./alignment_handler
    [snip]
    test: test_alignment_handler_vsx_207
    tags: git_version:powerpc-5.12-1-0-g82d2c16b
    VSX: 2.07B
            Doing lxsspx:   PASSED
            Doing lxsiwax:  FAILED: Wrong Data
            Doing lxsiwzx:  PASSED
            Doing stxsspx:  PASSED
            Doing stxsiwx:  PASSED
    failure: test_alignment_handler_vsx_207
    test: test_alignment_handler_vsx_300
    tags: git_version:powerpc-5.12-1-0-g82d2c16b
    VSX: 3.00B
            Doing lxsd:     PASSED
            Doing lxsibzx:  PASSED
            Doing lxsihzx:  PASSED
            Doing lxssp:    FAILED: Wrong Data
            Doing lxv:      PASSED
            Doing lxvb16x:  PASSED
            Doing lxvh8x:   PASSED
            Doing lxvx:     PASSED
            Doing lxvwsx:   FAILED: Wrong Data
            Doing lxvl:     PASSED
            Doing lxvll:    PASSED
            Doing stxsd:    PASSED
            Doing stxsibx:  PASSED
            Doing stxsihx:  PASSED
            Doing stxssp:   PASSED
            Doing stxv:     PASSED
            Doing stxvb16x: PASSED
            Doing stxvh8x:  PASSED
            Doing stxvx:    PASSED
            Doing stxvl:    PASSED
            Doing stxvll:   PASSED
    failure: test_alignment_handler_vsx_300
    [snip]
    
    Fix this by making sure all VSX instruction emulation correctly
    load/store from the VSRs.
    
    Fixes: af99da74 ("powerpc/sstep: Support VSX vector paired storage access instructions")
    Signed-off-by: default avatarJordan Niethe <jniethe5@gmail.com>
    Reviewed-by: default avatarRavi Bangoria <ravi.bangoria@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210225031946.1458206-1-jniethe5@gmail.com
    5c88a17e
sstep.c 80.3 KB