Netdev Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Leon Romanovsky <leon@kernel.org>
To: Jakub Kicinski <kuba@kernel.org>
Cc: Cong Wang <xiyou.wangcong@gmail.com>,
	David Miller <davem@davemloft.net>,
	Linux Kernel Network Developers <netdev@vger.kernel.org>,
	"Cong Wang ." <cong.wang@bytedance.com>,
	Peilin Ye <peilin.ye@bytedance.com>,
	Jiri Pirko <jiri@resnulli.us>
Subject: Re: [PATCH net-next] Revert "netdevsim: Add multi-queue support"
Date: Wed, 4 Aug 2021 15:49:53 +0300	[thread overview]
Message-ID: <YQqM8XUyHKVaj1WF@unreal> (raw)
In-Reply-To: <20210804045247.057c5e9c@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>

On Wed, Aug 04, 2021 at 04:52:47AM -0700, Jakub Kicinski wrote:
> On Wed, 4 Aug 2021 10:14:36 +0300 Leon Romanovsky wrote:
> > On Tue, Aug 03, 2021 at 02:51:24PM -0700, Jakub Kicinski wrote:
> > > On Tue, 3 Aug 2021 14:32:19 -0700 Cong Wang wrote:  
> > > > On Tue, Aug 3, 2021 at 2:18 PM Jakub Kicinski <kuba@kernel.org> wrote:  
> > 
> > <...>
> > 
> > > > Please remove all those not covered by upstream tests just to be fair??  
> > > 
> > > I'd love to remove all test harnesses upstream which are not used by
> > > upstream tests, sure :)  
> > 
> > Jakub,
> > 
> > Something related and unrelated at the same time.
> > 
> > I need to get rid of devlink_reload_enable()/_disable() to fix some
> > panics in the devlink reload flow.
> > 
> > Such change is relatively easy for the HW drivers, but not so for the
> > netdevism due to attempt to synchronize sysfs with devlink.
> > 
> >   200         mutex_lock(&nsim_bus_dev->nsim_bus_reload_lock);
> >   201         devlink_reload_disable(devlink);
> >   202         ret = nsim_dev_port_add(nsim_bus_dev, NSIM_DEV_PORT_TYPE_PF, port_index);
> >   203         devlink_reload_enable(devlink);
> >   204         mutex_unlock(&nsim_bus_dev->nsim_bus_reload_lock);
> > 
> > Are these sysfs files declared as UAPI? Or can I update upstream test
> > suite and delete them safely?
> 
> You can change netdevsim in whatever way is appropriate.
> 
> What's your plan, tho? Jiri changed the spawning from rtnetlink 
> to sysfs - may be good to consult with him before typing too much 
> code.

It is something preliminary, I have POC code which works but it is far
from the actual patches yet.

The problem is that "devlink reload" in its current form causes us
(mlx5) a lot of grief. We see deadlocks due to combinations of internal
flows with external ones, without going too much in details loops of
module removal together with health recovery and devlink reload doesn't
work properly :).

The same problem exists in all drivers that implement "devlink reload",
mlx5 just most complicated one and looks like most tested either.

My idea (for now) is pretty simple:
1. Move devlink ops callbacks from devlink_alloc phase to devlink_register().
2. Ensure that devlink_register() is the last command in the probe sequence.
3. Delete devlink_reload_enable/disable. It is not needed if proper ops used.
4. Add reference counting to struct devlink to make sure that we
properly account netlink users, so we will be able to drop big devlink_lock.
5. Convert linked list of devlink instances to be xarray. It gives us an
option to work relatively lockless.
....

Every step solves some bug, even first one solves current bug where
devlink reload statistics presented despite devlink_reload_disable().

Of course, we can try to patch devlink with specific fix for specific
bug, but better to make it error prone from the beginning.

So I'm trying to get a sense what can and what can't be done in the netdev.
And netdevsim combination of devlink and sysfs knobs adds challenges. :)

Thanks

  reply	other threads:[~2021-08-04 12:50 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-03 12:39 Jakub Kicinski
2021-08-03 17:11 ` Cong Wang
2021-08-03 21:18   ` Jakub Kicinski
2021-08-03 21:32     ` Cong Wang
2021-08-03 21:51       ` Jakub Kicinski
2021-08-03 22:04         ` Cong Wang
2021-08-04  7:14         ` Leon Romanovsky
2021-08-04 11:52           ` Jakub Kicinski
2021-08-04 12:49             ` Leon Romanovsky [this message]
2021-08-04 15:56               ` Jakub Kicinski
2021-08-04 17:25                 ` Leon Romanovsky
2021-08-03 22:16 ` [PATCH net-next] tc-testing: Add control-plane selftests for sch_mq Peilin Ye
2021-08-03 22:21   ` Cong Wang
2021-08-04 11:50   ` patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YQqM8XUyHKVaj1WF@unreal \
    --to=leon@kernel.org \
    --cc=cong.wang@bytedance.com \
    --cc=davem@davemloft.net \
    --cc=jiri@resnulli.us \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=peilin.ye@bytedance.com \
    --cc=xiyou.wangcong@gmail.com \
    --subject='Re: [PATCH net-next] Revert "netdevsim: Add multi-queue support"' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).