Subject: Re: [PATCH] netns: deinline net_generic()

From: Denys Vlasenko <[email-masked]>
Date: Tue, 14 Apr 2015 17:04:41 +0200

On 04/14/2015 04:21 PM, Eric Dumazet wrote:
> On Tue, 2015-04-14 at 15:57 +0200, Denys Vlasenko wrote:
> 
>> My allyesconfig, with BUG_ON's commented out:
>>
> 
> Right. But I can tell you nobody uses lockdep on a production kernel.
> 
> Here, at Google, we get what I described.

I'm trying to get to the .config which generates a small function.

So far, with LOCKDEP off, it is still this big:

net_generic:
        call    __fentry__
        pushq   %rbp    #
#APP
# 72 "./arch/x86/include/asm/preempt.h" 1
        incl %gs:__preempt_count(%rip)  # __preempt_count
# 0 "" 2
#NO_APP
        movq    %rsp, %rbp      #,
        pushq   %r12    #
        movq    %rdi, %r12      # net, net
        pushq   %rbx    #
        movl    %esi, %ebx      # id, id
        call    rcu_lock_acquire.constprop.15   #
        movq    4784(%r12), %rax        # MEM[(struct net_generic * const volatile *)net_2(D) + 4784B], _________p1
        decl    %ebx    # tmp65
        movslq  %ebx, %rbx      # tmp65, tmp66
        movq    24(%rax,%rbx,8), %rbx   # _________p1_4->ptr, ptr
        call    rcu_read_unlock #
        movq    %rbx, %rax      # ptr,
        popq    %rbx    #
        popq    %r12    #
        popq    %rbp    #
        ret

Config is attached.