thunderbolt: Disable XDomain lane 1 only in software connection manager

commit 84ee211c83212f4d35b56e0603acdcc41f860f1b upstream.

When firmware connection manager is in use we should not touch the lane
adapter (well or any) configuration space so do this only when we know
that the software connection manager is active.

Fixes: 8e1de70425 ("thunderbolt: Add support for XDomain lane bonding")
Cc: stable@vger.kernel.org
Acked-by: Yehezkel Bernat <YehezkelShB@gmail.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Mika Westerberg 2022-09-08 09:45:22 +03:00 committed by Greg Kroah-Hartman
parent d048df8baf
commit 627ae8c627

View File

@ -1419,12 +1419,19 @@ static int tb_xdomain_get_properties(struct tb_xdomain *xd)
* registered, we notify the userspace that it has changed.
*/
if (!update) {
struct tb_port *port;
/*
* Now disable lane 1 if bonding was not enabled. Do
* this only if bonding was possible at the beginning
* (that is we are the connection manager and there are
* two lanes).
*/
if (xd->bonding_possible) {
struct tb_port *port;
/* Now disable lane 1 if bonding was not enabled */
port = tb_port_at(xd->route, tb_xdomain_parent(xd));
if (!port->bonded)
tb_port_disable(port->dual_link_port);
port = tb_port_at(xd->route, tb_xdomain_parent(xd));
if (!port->bonded)
tb_port_disable(port->dual_link_port);
}
if (device_add(&xd->dev)) {
dev_err(&xd->dev, "failed to add XDomain device\n");