]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
thunderbolt: Mark XDomain as unplugged when router is removed
authorMika Westerberg <mika.westerberg@linux.intel.com>
Thu, 13 Jun 2024 12:05:03 +0000 (15:05 +0300)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Tue, 6 Aug 2024 05:01:10 +0000 (08:01 +0300)
I noticed that when we do discrete host router NVM upgrade and it gets
hot-removed from the PCIe side as a result of NVM firmware authentication,
if there is another host connected with enabled paths we hang in tearing
them down. This is due to fact that the Thunderbolt networking driver
also tries to cleanup the paths and ends up blocking in
tb_disconnect_xdomain_paths() waiting for the domain lock.

However, at this point we already cleaned the paths in tb_stop() so
there is really no need for tb_disconnect_xdomain_paths() to do that
anymore. Furthermore it already checks if the XDomain is unplugged and
bails out early so take advantage of that and mark the XDomain as
unplugged when we remove the parent router.

Cc: stable@vger.kernel.org
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/switch.c

index 326433df5880e26cfef2bc4ce13fdbf37e6b79be..6a2116cbb06f92965028e01b51546903d6a0de56 100644 (file)
@@ -3392,6 +3392,7 @@ void tb_switch_remove(struct tb_switch *sw)
                        tb_switch_remove(port->remote->sw);
                        port->remote = NULL;
                } else if (port->xdomain) {
+                       port->xdomain->is_unplugged = true;
                        tb_xdomain_remove(port->xdomain);
                        port->xdomain = NULL;
                }