diff --git a/common/usb_hub.c b/common/usb_hub.c
index 7aac2201166300c2dab5a72a053c33ec408fab68..af39c76f7fa181843f4a22eaf01be2e385e11488 100644
--- a/common/usb_hub.c
+++ b/common/usb_hub.c
@@ -271,7 +271,8 @@ int usb_hub_port_connect_change(struct usb_device *dev, int port)
 	/* Reset the port */
 	ret = legacy_hub_port_reset(dev, port, &portstatus);
 	if (ret < 0) {
-		printf("cannot reset port %i!?\n", port + 1);
+		if (ret != -ENXIO)
+			printf("cannot reset port %i!?\n", port + 1);
 		return ret;
 	}
 
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index ce760d0cd3056b21ec300e5324678a2aa811d8cd..e4c462f3438b204ba575117e053dd14c29ac22bb 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -875,7 +875,7 @@ static int ehci_submit_root(struct usb_device *dev, unsigned long pipe,
 				      port - 1);
 				reg |= EHCI_PS_PO;
 				ehci_writel(status_reg, reg);
-				break;
+				return -ENXIO;
 			} else {
 				int ret;
 
@@ -905,6 +905,7 @@ static int ehci_submit_root(struct usb_device *dev, unsigned long pipe,
 						reg &= ~EHCI_PS_CLEAR;
 						reg |= EHCI_PS_PO;
 						ehci_writel(status_reg, reg);
+						return -ENXIO;
 					} else {
 						ctrl->portreset |= 1 << port;
 					}