• evgpbfhnr 2 days ago

    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?

    • antonvs 2 days ago

      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.

      • evgpbfhnr 2 days ago

        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...