From: Lino Sanfilippo <LinoSanfilippo@gmx.de>
To: olteanv@gmail.com
Cc: p.rosenberger@kunbus.com, woojung.huh@microchip.com,
UNGLinuxDriver@microchip.com, andrew@lunn.ch,
vivien.didelot@gmail.com, f.fainelli@gmail.com,
davem@davemloft.net, kuba@kernel.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org,
Lino Sanfilippo <LinoSanfilippo@gmx.de>
Subject: [PATCH 0/3] Fix for KSZ DSA switch shutdown
Date: Thu, 9 Sep 2021 11:53:21 +0200 [thread overview]
Message-ID: <20210909095324.12978-1-LinoSanfilippo@gmx.de> (raw)
This patch series fixes a system hang I got each time i tried to shutdown
or reboot a system that uses a KSZ9897 as a DSA switch with a broadcom
GENET network device as the DSA master device. At the time the system hangs
the message "unregister_netdevice: waiting for eth0 to become free. Usage
count = 2." is dumped periodically to the console.
After some investigation I found the reason to be unreleased references to
the master device which are still held by the slave devices at the time the
system is shut down (I have two slave devices in use).
While these references are supposed to be released in ksz_switch_remove()
this function never gets the chance to be called due to the system hang at
the master device deregistration which happens before ksz_switch_remove()
is called.
The fix is to make sure that the master device references are already
released when the device is unregistered. For this reason PATCH1 provides
a new function dsa_tree_shutdown() that can be called by DSA drivers to
untear the DSA switch at shutdown. PATCH2 uses this function in a new
helper function for KSZ switches to properly shutdown the KSZ switch.
PATCH 3 uses the new helper function in the KSZ9477 shutdown handler.
Theses patches have been tested on a Raspberry PI 5.10 kernel with a
KSZ9897. The patches have been adjusted to apply against net-next and are
compile tested with next-next.
Lino Sanfilippo (3):
net: dsa: introduce function dsa_tree_shutdown()
net: dsa: microchip: provide the function ksz_switch_shutdown()
net: dsa: microchip: tear down DSA tree at system shutdown
drivers/net/dsa/microchip/ksz9477.c | 12 +++++++++++-
drivers/net/dsa/microchip/ksz_common.c | 13 +++++++++++++
drivers/net/dsa/microchip/ksz_common.h | 1 +
include/net/dsa.h | 1 +
net/dsa/dsa2.c | 8 ++++++++
5 files changed, 34 insertions(+), 1 deletion(-)
base-commit: 626bf91a292e2035af5b9d9cce35c5c138dfe06d
--
2.33.0
next reply other threads:[~2021-09-09 9:54 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-09 9:53 Lino Sanfilippo [this message]
2021-09-09 9:53 ` [PATCH 1/3] net: dsa: introduce function dsa_tree_shutdown() Lino Sanfilippo
2021-09-09 9:53 ` [PATCH 2/3] net: dsa: microchip: provide the function ksz_switch_shutdown() Lino Sanfilippo
2021-09-09 9:53 ` [PATCH 3/3] net: dsa: microchip: tear down DSA tree at system shutdown Lino Sanfilippo
2021-09-09 10:14 ` [PATCH 0/3] Fix for KSZ DSA switch shutdown Vladimir Oltean
2021-09-09 11:08 ` Lino Sanfilippo
2021-09-09 11:42 ` Vladimir Oltean
2021-09-09 12:56 ` Vladimir Oltean
2021-09-09 13:19 ` Aw: " Lino Sanfilippo
2021-09-09 14:29 ` Lino Sanfilippo
2021-09-09 15:17 ` Andrew Lunn
2021-09-09 16:41 ` Lino Sanfilippo
2021-09-09 15:11 ` Andrew Lunn
2021-09-09 16:46 ` Lino Sanfilippo
2021-09-09 17:55 ` Andrew Lunn
2021-09-09 15:47 ` Vladimir Oltean
2021-09-09 16:00 ` Florian Fainelli
2021-09-10 1:32 ` Saravana Kannan
2021-09-09 16:37 ` Lino Sanfilippo
2021-09-09 16:44 ` Florian Fainelli
2021-09-09 17:07 ` Lino Sanfilippo
2021-09-09 22:54 ` Vladimir Oltean
2021-09-09 23:23 ` Vladimir Oltean
2021-09-10 1:08 ` Vladimir Oltean
2021-09-10 2:15 ` Florian Fainelli
2021-09-10 11:51 ` Andrew Lunn
2021-09-10 14:58 ` Vladimir Oltean
2021-09-11 11:44 ` Vladimir Oltean
[not found] ` <53f2509f-b648-b33d-1542-17a2c9d69966@gmx.de>
2021-09-12 20:29 ` Vladimir Oltean
2021-09-13 10:32 ` Aw: " Lino Sanfilippo
2021-09-13 10:44 ` Vladimir Oltean
2021-09-13 11:01 ` Aw: " Lino Sanfilippo
2021-09-14 18:48 ` Vladimir Oltean
2021-09-15 5:42 ` Lino Sanfilippo
2021-09-18 19:37 ` Lino Sanfilippo
2021-09-18 22:04 ` Vladimir Oltean
2021-09-19 0:29 ` Vladimir Oltean
2021-09-09 12:40 ` Andrew Lunn
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=20210909095324.12978-1-LinoSanfilippo@gmx.de \
--to=linosanfilippo@gmx.de \
--cc=UNGLinuxDriver@microchip.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=p.rosenberger@kunbus.com \
--cc=vivien.didelot@gmail.com \
--cc=woojung.huh@microchip.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