public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Vladimir Oltean <olteanv@gmail.com>
To: Hans Schultz <schultz.hans@gmail.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
	davem@davemloft.net, kuba@kernel.org, netdev@vger.kernel.org,
	Vivien Didelot <vivien.didelot@gmail.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Jiri Pirko <jiri@resnulli.us>, Ivan Vecera <ivecera@redhat.com>,
	Roopa Prabhu <roopa@nvidia.com>,
	Nikolay Aleksandrov <razor@blackwall.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Ido Schimmel <idosch@nvidia.com>,
	linux-kernel@vger.kernel.org, bridge@lists.linux-foundation.org
Subject: Re: [PATCH net-next 3/3] net: dsa: mv88e6xxx: mac-auth/MAB implementation
Date: Wed, 23 Mar 2022 13:54:19 +0200	[thread overview]
Message-ID: <20220323115419.svxnbcqqd7pyargn@skbuf> (raw)
In-Reply-To: <86tuboao8o.fsf@gmail.com>

On Wed, Mar 23, 2022 at 12:43:03PM +0100, Hans Schultz wrote:
> On ons, mar 23, 2022 at 13:21, Vladimir Oltean <olteanv@gmail.com> wrote:
> > On Wed, Mar 23, 2022 at 11:57:16AM +0100, Hans Schultz wrote:
> >> >> >> Another issue I see, is that there is a deadlock or similar issue when
> >> >> >> receiving violations and running 'bridge fdb show' (it seemed that
> >> >> >> member violations also caused this, but not sure yet...), as the unit
> >> >> >> freezes, not to return...
> >> >> >
> >> >> > Have you enabled lockdep, debug atomic sleep, detect hung tasks, things
> >> >> > like that?
> >> >> 
> >> >> I have now determined that it is the rtnl_lock() that causes the
> >> >> "deadlock". The doit() in rtnetlink.c is under rtnl_lock() and is what
> >> >> takes care of getting the fdb entries when running 'bridge fdb show'. In
> >> >> principle there should be no problem with this, but I don't know if some
> >> >> interrupt queue is getting jammed as they are blocked from rtnetlink.c?
> >> >
> >> > Sorry, I forgot to respond yesterday to this.
> >> > By any chance do you maybe have an AB/BA lock inversion, where from the
> >> > ATU interrupt handler you do mv88e6xxx_reg_lock() -> rtnl_lock(), while
> >> > from the port_fdb_dump() handler you do rtnl_lock() -> mv88e6xxx_reg_lock()?
> >> 
> >> If I release the mv88e6xxx_reg_lock() before calling the handler, I need
> >> to get it again for the mv88e6xxx_g1_atu_loadpurge() call at least. But
> >> maybe the vtu_walk also needs the mv88e6xxx_reg_lock()?
> >> I could also just release the mv88e6xxx_reg_lock() before the
> >> call_switchdev_notifiers() call and reacquire it immediately after?
> >
> > The cleanest way to go about this would be to have the call_switchdev_notifiers()
> > portion of the ATU interrupt handling at the very end of mv88e6xxx_g1_atu_prob_irq_thread_fn(),
> > with no hardware access needed, and therefore no reg_lock() held.
> 
> So something like?
> 	mv88e6xxx_reg_unlock(chip);
> 	rtnl_lock();
> 	err = call_switchdev_notifiers(SWITCHDEV_FDB_ADD_TO_BRIDGE, brport, &info.info, NULL);
> 	rtnl_unlock();
> 	mv88e6xxx_reg_lock(chip);

No, call_switchdev_notifiers() should be the very end, no reg_lock() afterwards.
Do all the hardware handling you need, populate some variables to denote
that you need to notify switchdev, and if you do, lock the rtnetlink
mutex and do it.

  reply	other threads:[~2022-03-23 11:54 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-10 14:23 [PATCH net-next 0/3] Extend locked port feature with FDB locked flag (MAC-Auth/MAB) Hans Schultz
2022-03-10 14:23 ` [PATCH net-next 1/3] net: bridge: add fdb flag to extent locked port feature Hans Schultz
2022-03-10 14:42   ` Nikolay Aleksandrov
2022-03-10 15:38     ` Hans Schultz
2022-03-10 15:57       ` Nikolay Aleksandrov
2022-03-10 16:11         ` Hans Schultz
2022-03-10 16:14           ` Nikolay Aleksandrov
2022-03-10 16:33             ` Hans Schultz
2022-03-14 15:30   ` Ido Schimmel
2022-03-15  8:48     ` Hans Schultz
2022-03-15 11:00       ` Ido Schimmel
2022-03-10 14:23 ` [PATCH net-next 2/3] net: switchdev: add support for offloading of fdb locked flag Hans Schultz
2022-03-10 14:23 ` [PATCH net-next 3/3] net: dsa: mv88e6xxx: mac-auth/MAB implementation Hans Schultz
2022-03-10 14:28   ` Vladimir Oltean
2022-03-10 15:00     ` Hans Schultz
2022-03-10 15:07       ` Vladimir Oltean
2022-03-10 15:51         ` Hans Schultz
2022-03-10 16:05           ` Vladimir Oltean
2022-03-10 16:40             ` Hans Schultz
2022-03-10 15:57     ` Hans Schultz
2022-03-14 10:46     ` Hans Schultz
2022-03-16 23:34       ` Vladimir Oltean
2022-03-17  8:52         ` Hans Schultz
2022-03-17 14:19           ` Andrew Lunn
2022-03-17 15:36             ` Vladimir Oltean
2022-03-17 16:07               ` Hans Schultz
2022-03-17 16:18                 ` Vladimir Oltean
2022-03-17 16:58                   ` Hans Schultz
2022-03-17 17:20                     ` Vladimir Oltean
2022-03-18 10:04                       ` Hans Schultz
2022-03-18 12:14                         ` Vladimir Oltean
2022-03-18 13:10                           ` Hans Schultz
2022-03-18 13:19                             ` Vladimir Oltean
2022-03-22 11:01                               ` Hans Schultz
2022-03-22 11:08                                 ` Vladimir Oltean
2022-03-22 13:21                                   ` Hans Schultz
2022-03-22 14:47                                     ` Hans Schultz
2022-03-23 10:13                                   ` Hans Schultz
2022-03-23 10:16                                     ` Vladimir Oltean
2022-03-23 10:46                                       ` Hans Schultz
2022-03-23 10:57                                       ` Hans Schultz
2022-03-23 11:21                                         ` Vladimir Oltean
2022-03-23 11:43                                           ` Hans Schultz
2022-03-23 11:54                                             ` Vladimir Oltean [this message]
2022-03-21 14:51             ` Hans Schultz
2022-03-10 14:54   ` Andrew Lunn
2022-03-11  7:59     ` Hans Schultz
2022-03-14 15:50 ` [PATCH net-next 0/3] Extend locked port feature with FDB locked flag (MAC-Auth/MAB) Ido Schimmel
2022-03-15  8:59   ` Hans Schultz
2022-03-15 11:11     ` Ido Schimmel
2022-03-17  0:18 ` Florian Fainelli
2022-03-17  8:29   ` Hans Schultz
2022-03-17 18:42     ` Vladimir Oltean
  -- strict thread matches above, loose matches on Subject: below --
2022-12-05 18:59 [PATCH net-next 0/3] mv88e6xxx: Add MAB offload support Hans J. Schultz
2022-12-05 18:59 ` [PATCH net-next 3/3] net: dsa: mv88e6xxx: mac-auth/MAB implementation Hans J. Schultz
2022-12-06 12:53   ` Ido Schimmel
2022-12-06 16:36     ` netdev
2022-12-07 20:29       ` Vladimir Oltean
2022-12-08 12:28         ` netdev
2022-12-08 13:35           ` Vladimir Oltean
2022-12-08 14:41             ` netdev
2022-12-08 14:43               ` Vladimir Oltean
2022-12-08 16:03             ` netdev
2022-12-08 16:09               ` Vladimir Oltean

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=20220323115419.svxnbcqqd7pyargn@skbuf \
    --to=olteanv@gmail.com \
    --cc=andrew@lunn.ch \
    --cc=bridge@lists.linux-foundation.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=f.fainelli@gmail.com \
    --cc=idosch@nvidia.com \
    --cc=ivecera@redhat.com \
    --cc=jiri@resnulli.us \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=razor@blackwall.org \
    --cc=roopa@nvidia.com \
    --cc=schultz.hans@gmail.com \
    --cc=vivien.didelot@gmail.com \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox