[llvm] [llvm-exegesis][AArch64] Check for PAC keys before disabling them (PR #138643)
Anatoly Trosinenko via llvm-commits
llvm-commits at lists.llvm.org
Mon May 19 04:41:00 PDT 2025
================
@@ -207,18 +216,38 @@ class ExegesisAArch64Target : public ExegesisTarget {
if (isPointerAuth(Opcode)) {
#if defined(__aarch64__) && defined(__linux__)
+ // For some systems with existing PAC keys set, it is better to
+ // check the existing state of the key before setting it.
+ // For systems without PAC, this is a No-op but with PAC, it is
+ // better to check the existing key state and then disable/enable them
+ // to avoid runtime crashes owing to unsupported prctl opcodes or if the
+ // CPU implements FEAT_PAuth with FEAT_FPAC (in which case this method
+ // would silently return.).
+ // Hence the guard for switching.
----------------
atrosinenko wrote:
I think, now this comment could be updated to summarize the information collected so far. Something like
> If the CPU implements FEAT_FPAC, authentication instructions almost certainly crash when being benchmarked, so disable all the keys by default. On the other hand, disabling the keys at run-time can probably crash llvm-exegesis at some later point, depending on how it was built. For that reason, the user may pass --COMMAND-LINE-OPTION-NAME in case llvm-exegesis crashes or instruction timings are affected.
... and then before the second `prctl` call we could add an extra explanation like
> PR_PAC_* prctl operations return EINVAL when Pointer Authentication is not available, but no more errors are expected if we got here.
https://github.com/llvm/llvm-project/pull/138643
More information about the llvm-commits
mailing list