On Mon, Jan 28, 2019 at 09:31:23AM +0100, Peter Zijlstra wrote: > On Fri, Jan 25, 2019 at 03:42:43PM -0800, Alexei Starovoitov wrote: > > On Fri, Jan 25, 2019 at 10:10:57AM +0100, Peter Zijlstra wrote: > > > On Thu, Jan 24, 2019 at 03:58:59PM -0800, Alexei Starovoitov wrote: > > > > > nmi checks for bpf_prog_active==0. See bpf_overflow_handler. > > > > yuck yuck yuck.. That's horrific :-( That means the whole BPF crud is > > > unreliable and events can go randomly missing. > > > > bpf_prog_active is the mechanism to workaround non-reentrant pieces of the > > kernel. > > 'the kernel' or 'bpf' ? > > perf has a recursion counter per context (task,softirq,hardirq,nmi) and > that ensures that perf doesn't recurse in on itself while allowing the > nesting of these contexts. > > But if BPF itself is not able to deal with such nesting that won't work > of course.
Ooh, later you say: > Also we allow tracing progs to nest with networking progs. Which seems to suggest BPF itself can suppord (limited) nesting. See: kernel/events/internal.h:get_recursion_context()