On Thu, Sep 02, 2021 at 09:57:05AM -0700, Song Liu wrote: > +BPF_CALL_3(bpf_get_branch_snapshot, void *, buf, u32, size, u64, flags) > +{ > +#ifndef CONFIG_X86 > + return -ENOENT; > +#else > + static const u32 br_entry_size = sizeof(struct perf_branch_entry); > + u32 entry_cnt = size / br_entry_size; > + > + if (unlikely(flags)) > + return -EINVAL; > + > + if (!buf || (size % br_entry_size != 0)) > + return -EINVAL; > + > + entry_cnt = static_call(perf_snapshot_branch_stack)(buf, entry_cnt); > + > + if (!entry_cnt) > + return -ENOENT; > + > + return entry_cnt * br_entry_size; > +#endif > +} Do we really need that CONFIG_X86 thing? Seems rather bad practise.