One thing I don't get is that arm64 doesn't have fentry support.. does it? At least I just checked CONFIG_HAVE_FENTRY is not set on arm64, and e.g. (not checked recently) bpftrace --info used to print `fentry: no`, so how does this trampoline talk on arm64 apply without this part?

The last section in the article touches on this, albeit obliquely: "The eBPF trampoline support among different architectures."

Basically the answer is essentially emulation, as I understand it. Fentry can be emulated using kprobes, for example. I haven't absorbed the article well enough to know how that fits in with what it's describing.

Hm, I'm not sure it makes sense to add more arguments before the feature works.. But I think I was just not up to date.

Looking around the patches they sent, they've also gotten rid of tools/testing/selftests/bpf/DENYLIST.aarch64 so now all bpf features should be working on aarch64 including fentry/fexit (removed in 149ead9d7e3d selftests/bpf: enable many-args tests for arm64)

I think I'm just out of the loop and fentry can work since 6.14 on arm64 with this merge commit "Have fprobes built on top of function graph infrastructure" https://git.kernel.org/linus/2e04247f7cce8b8cd8381a290787016...

Shame we're just getting started porting our board to 6.12 so I won't see this for another few years, but I'll give mainline a new spin sooner or later...