Several unused ports may share the same bogus location data in ACPI PLD tables. This causes port peering failures as these several unused USB2 and USB3 ports suddenly match based on their location. Don't print the "usb: port power management may be unreliable" warning, or block port power-off in case peering failed for two ports with connect type set to USB_PORT_NOT_USED. Signed-off-by: Mathias Nyman <mathias.nyman@xxxxxxxxxxxxxxx> --- drivers/usb/core/port.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c index c628c1abc907..d45fc234bad1 100644 --- a/drivers/usb/core/port.c +++ b/drivers/usb/core/port.c @@ -517,6 +517,11 @@ static void link_peers_report(struct usb_port *left, struct usb_port *right) rc = link_peers(left, right); if (rc == 0) { dev_dbg(&left->dev, "peered to %s\n", dev_name(&right->dev)); + + } else if (left->connect_type == USB_PORT_NOT_USED && + right->connect_type == USB_PORT_NOT_USED) { + dev_dbg(&left->dev, "ignore peering failure to %s as ports are not connectable\n", + dev_name(&right->dev)); } else { dev_dbg(&left->dev, "failed to peer to %s (%d)\n", dev_name(&right->dev), rc); -- 2.25.1