• Michael Ellerman's avatar
    selftests/powerpc: Check all FPRs in fpu_syscall test · 1bdf2258
    Michael Ellerman authored
    There is a selftest that checks if FPRs are corrupted across a fork, aka
    clone. It was added as part of the series that optimised the clone path
    to save the parent's FP state without "giving up" (turning off FP).
    
    See commit 8792468d ("powerpc: Add the ability to save FPU without
    giving it up").
    
    The test encodes the assumption that FPRs 0-13 are volatile across the
    syscall, by only checking the volatile FPRs are not changed by the fork.
    There was also a comment in the fpu_preempt test alluding to that:
    
      The check_fpu function in asm only checks the non volatile registers
      as it is reused from the syscall test
    
    It is true that the function call ABI treats f0-f13 as volatile,
    however the syscall ABI has since been documented as *not* treating those
    registers as volatile. See commit 7b8845a2 ("powerpc/64: Document
    the syscall ABI").
    
    So change the test to check all FPRs are not corrupted by the syscall.
    Note that this currently fails, because save_fpu() etc. do not restore
    f0/vsr0.
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20231128132748.1990179-5-mpe@ellerman.id.au
    1bdf2258
fpu_asm.S 3.16 KB