From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jakub Kicinski Subject: Re: [RFC] bpf: offload: report device information for offloaded programs Date: Thu, 30 Nov 2017 18:05:56 -0800 Message-ID: <20171130180556.2913ecdb@cakuba.netronome.com> References: <20171130002251.30498-1-jakub.kicinski@netronome.com> <85513945-bcd2-b2b4-24e7-5fbb3e695419@virtuozzo.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, oss-drivers@netronome.com, alexei.starovoitov@gmail.com, daniel@iogearbox.net, "Eric W . Biederman" To: Kirill Tkhai Return-path: In-Reply-To: <85513945-bcd2-b2b4-24e7-5fbb3e695419@virtuozzo.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org Hi Kirill, On Thu, 30 Nov 2017 16:19:13 +0300, Kirill Tkhai wrote: > > @@ -164,6 +166,38 @@ int bpf_prog_offload_compile(struct bpf_prog *prog) > > return bpf_prog_offload_translate(prog); > > } > > > > +int bpf_prog_offload_info_fill(struct bpf_prog_info *info, > > + struct bpf_prog *prog) > > +{ > > + struct bpf_dev_offload *offload = prog->aux->offload; > > + struct inode *ns_inode; > > + struct path ns_path; > > + struct net *net; > > + int ret = 0; > > + void *ptr; > > + > > + info->dev_bound = 1; > > + > > + rtnl_lock(); > > rtnl_lock() is too big lock and it is already overused in kernel. > Can't we use smaller lock in this driver to protect bpf_prog_offload_devs? > I suppose rwlock would be appropriate for that. > > (Then, we may completely remove rtnl_lock() from bpf_prog_offload_init() > and use readlocked dev_base_lock for __dev_get_by_index() instead and > the new small_rwlock to link in the list. > > Not sure about bpf_prog_offload_verifier_prep() and bpf_prog_offload_translate() > and which context expect net_device_ops->ndo_bpf users. Either they need rtnl > or not). Thanks for the comments, removing the use of rtnl_lock is definitely on my todo list!