summaryrefslogtreecommitdiff
path: root/arch/riscv/Kbuild
diff options
context:
space:
mode:
authorAnton Blanchard <antonb@tenstorrent.com>2024-06-06 23:13:35 -0700
committerPalmer Dabbelt <palmer@rivosinc.com>2024-07-26 05:50:45 -0700
commit5d5fc33ce58e81e8738816f5ee59f8e85fd3b404 (patch)
tree07fc1a589239ec6d46cd12457c245ce5b9871ee5 /arch/riscv/Kbuild
parent8d22d0db5bbcec95c70e025dce3d00821da8be7d (diff)
riscv: Improve exception and system call latency
Many CPUs implement return address branch prediction as a stack. The RISCV architecture refers to this as a return address stack (RAS). If this gets corrupted then the CPU will mispredict at least one but potentally many function returns. There are two issues with the current RISCV exception code: - We are using the alternate link stack (x5/t0) for the indirect branch which makes the hardware think this is a function return. This will corrupt the RAS. - We modify the return address of handle_exception to point to ret_from_exception. This will also corrupt the RAS. Testing the null system call latency before and after the patch: Visionfive2 (StarFive JH7110 / U74) baseline: 189.87 ns patched: 176.76 ns Lichee pi 4a (T-Head TH1520 / C910) baseline: 666.58 ns patched: 636.90 ns Just over 7% on the U74 and just over 4% on the C910. Signed-off-by: Anton Blanchard <antonb@tenstorrent.com> Signed-off-by: Cyril Bur <cyrilbur@tenstorrent.com> Tested-by: Jisheng Zhang <jszhang@kernel.org> Reviewed-by: Jisheng Zhang <jszhang@kernel.org> Link: https://lore.kernel.org/r/20240607061335.2197383-1-cyrilbur@tenstorrent.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Diffstat (limited to 'arch/riscv/Kbuild')
0 files changed, 0 insertions, 0 deletions