On Wed, Jan 16, 2019 at 08:29:23AM -0800, Song Liu wrote: > For better performance analysis of dynamically JITed and loaded kernel > functions, such as BPF programs, this patch introduces > PERF_RECORD_KSYMBOL, a new perf_event_type that exposes kernel symbol > register/unregister information to user space. > > The following data structure is used for PERF_RECORD_KSYMBOL. > > /* > * struct { > * struct perf_event_header header; > * u64 addr; > * u32 len; > * u16 ksym_type; > * u16 flags; > * char name[]; > * struct sample_id sample_id; > * }; > */ So I've cobbled together the attached patches to see how it would work out.. I didn't convert ftrace trampolines; because ftrace code has this uncanny ability to make my head hurt. But I don't think it should be hard, once one figures out the right structure to stick that kallsym_node thing in (ftrace_ops ?!). It is compiled only, so no testing what so ever (also, no changelogs). I didn't wire up the KSYM_TYPE thing; I'm wondering if we really need that, OTOH it really doesn't hurt having it either. One weird thing I noticed, wth does bpf_prog_kallsyms_add() check CAP_ADMIN ?! Surely even a non-priv JIT'ed program generates symbols, why hide those? Anyway; with the one nit about the get_names() thing sorted: Acked-by: Peter Zijlstra (Intel) (thanks for sticking with this)