From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752071AbdLACGC (ORCPT ); Thu, 30 Nov 2017 21:06:02 -0500 Received: from mail-pf0-f195.google.com ([209.85.192.195]:36187 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750735AbdLACGA (ORCPT ); Thu, 30 Nov 2017 21:06:00 -0500 X-Google-Smtp-Source: AGs4zMa+iJKFtO6598OTk2/Fg1hEaL1Vu5TCU56b7xxxixcMKMeqmZt9ynyEacP1uLvdLk/ronf6mg== Date: Thu, 30 Nov 2017 18:05:56 -0800 From: Jakub Kicinski To: Kirill Tkhai Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, oss-drivers@netronome.com, alexei.starovoitov@gmail.com, daniel@iogearbox.net, "Eric W . Biederman" Subject: Re: [RFC] bpf: offload: report device information for offloaded programs Message-ID: <20171130180556.2913ecdb@cakuba.netronome.com> In-Reply-To: <85513945-bcd2-b2b4-24e7-5fbb3e695419@virtuozzo.com> References: <20171130002251.30498-1-jakub.kicinski@netronome.com> <85513945-bcd2-b2b4-24e7-5fbb3e695419@virtuozzo.com> Organization: Netronome Systems, Ltd. MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@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!