[RFT PATCH 2/2] usb: port: Don't block port power-off on false peer failures

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux