aboutsummaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/check-perf-trace.py
diff options
context:
space:
mode:
authorJames Morse <[email protected]>2017-11-02 12:12:37 +0000
committerWill Deacon <[email protected]>2017-11-02 15:55:41 +0000
commit8d66772e869e79ffb94eed7492ca3d2267e150e8 (patch)
tree5392449810e76786aaed93c02dfd010f1b62cfb0 /tools/perf/scripts/python/check-perf-trace.py
parent41bd5b5d22b77c7300df2a2fa5397cbe785189b4 (diff)
arm64: Mask all exceptions during kernel_exit
To take RAS Exceptions as quickly as possible we need to keep SError unmasked as much as possible. We need to mask it during kernel_exit as taking an error from this code will overwrite the exception-registers. Adding a naked 'disable_daif' to kernel_exit causes a performance problem for micro-benchmarks that do no real work, (e.g. calling getpid() in a loop). This is because the ret_to_user loop has already masked IRQs so that the TIF_WORK_MASK thread flags can't change underneath it, adding disable_daif is an additional self-synchronising operation. In the future, the RAS APEI code may need to modify the TIF_WORK_MASK flags from an SError, in which case the ret_to_user loop must mask SError while it examines the flags. Disable all exceptions for return to EL1. For return to EL0 get the ret_to_user loop to leave all exceptions masked once it has done its work, this avoids an extra pstate-write. Signed-off-by: James Morse <[email protected]> Reviewed-by: Julien Thierry <[email protected]> Reviewed-by: Catalin Marinas <[email protected]> Signed-off-by: Will Deacon <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/check-perf-trace.py')
0 files changed, 0 insertions, 0 deletions