All three are addressed in v4: https://lore.kernel.org/bpf/[email protected]/
- The ftrace argument printer is a real problem: it can run from ftrace_dump() with interrupts disabled. print_function_args() now only prints the arguments if the vmlinux BTF is already loaded (bpf_peek_btf_vmlinux(), patch 5/12), like bpf_snprintf_btf(); in v4 the lookup it uses would not load the BTF anyway. Tested with func-args on and sysrq-z as the first thing touching BTF after boot, on a kernel with CONFIG_DEBUG_ATOMIC_SLEEP. - The opening of the changelog now names the exceptions: BPF_PRELOAD, users of kernel types that run before btf_vmlinux.ko can be loaded, and code that assumes the vmlinux BTF has id 1. - btf.rst now lists the requests that load the BTF, including struct_ops maps, kprobe events with BTF arguments, tracepoint btf_ids files and bpffs delegate_* options. PROBE_EVENTS_BTF_ARGS and FUNCTION_TRACE_ARGS do stay enabled with =m, which is intended: creating a probe with BTF arguments loads the BTF, in process context, and the argument printer uses it once it is there. Jay
