On Mon, Jul 31, 2023 at 11:46:12PM +0200, Peter Zijlstra wrote: > > Ideally it would only print a single warning for this case, something > > like: > > > > vmlinux.o: warning: objtool: __flush_tlb_all_noinstr+0x4: indirect call to native_flush_tlb_local() leaves .noinstr.text section > > But then what for the case where there are multiple implementations and > more than one isn't noinstr? The warning would be in the loop in pv_call_dest(), so it would potentially print multiple warnings, one for each potential dest. > IIRC that is where these double prints came from. One is the callsite > (always one) and the second is the offending implementation (but there > could be more). It's confusing to warn about the call site and the destination in two separate warnings. That's why I'm proposing combining them into a single warning (which still could end up as multiple warnings if there are multiple affected dests). > > I left out "pv_ops[1]" because it's already long enough :-) > > The index number is useful when also looking at the assembler, which > IIRC is an indexed indirect call. Ok, so something like so? vmlinux.o: warning: objtool: __flush_tlb_all_noinstr+0x4: indirect call to pv_ops[1] (native_flush_tlb_local) leaves .noinstr.text section -- Josh