On Wed, 13 Mar 2013, Jenya Y wrote:
> Here how it went.
> I did fresh rebuild of 3.8.2 kernel with my previous settings (where all of
> the mentioned flags were set as 'm') restarted to check the errors - they
> were
> there (-71). Then I went back and applied your patch and this time I got
> something else
> ______________________________________________________________________
> Mar 13 13:33:10 Y8 kernel: usb 1-2.2: can't set config #1, error -19
> Mar 13 13:33:10 Y8 dbus-daemon[231]: dbus[231]: [system] Activating via
> systemd: service name='org.freedesktop.PolicyKit1' unit='polkit.service'
> Mar 13 13:33:10 Y8 kernel: usb 1-2.2: USB disconnect, device number 3
> Mar 13 13:33:10 Y8 kernel: usb 2-1: USB disconnect, device number 2
> Mar 13 13:33:10 Y8 kernel: usb 2-2: USB disconnect, device number 3
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: hub_port_status failed (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot disable port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot reset port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot disable port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot reset port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot disable port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot reset port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot disable port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: unable to enumerate USB device on
> port
> 2
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot disable port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: usb 4-1: USB disconnect, device number 2
> Mar 13 13:33:10 Y8 kernel: usb 4-1.3: new full-speed USB device number 3
> using
> uhci_hcd
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot reset port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot disable port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot reset port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot disable port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot reset port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot disable port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot reset port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot disable port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: unable to enumerate USB device on
> port
> 3
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot disable port 3 (err = -19)
> ___________________________________________________________________________
>
> Not sure if it's better or worse but that's where we are right now. :)
> So I'm back to 3.9 where everything works beatifully (well, almost)
Okay. We don't need to see all those -19 errors. The patch below
(applied on top of the previous patch) will eliminate them.
> I think I should mention that one thing has chnaged in my installation. I've
> updated my systemd to 198, but it had no negative effects on 3.9
>
> Let me know if I should try something else.
>
> PS I have friend who accidentally also had usb issues with 3.8.2 on nvidia
> chipsets and I took the liberty to send him your patch. It worked for
> him....thought It cheer you up a little :)
Good to know. :-)
Alan Stern
Index: 3.8/drivers/usb/core/hub.c
===================================================================
--- 3.8.orig/drivers/usb/core/hub.c
+++ 3.8/drivers/usb/core/hub.c
@@ -905,11 +905,8 @@ static int hub_usb3_port_disable(struct
return -EINVAL;
ret = hub_set_port_link_state(hub, port1, USB_SS_PORT_LS_SS_DISABLED);
- if (ret) {
- dev_err(hub->intfdev, "cannot disable port %d (err = %d)\n",
- port1, ret);
+ if (ret)
return ret;
- }
/* Wait for the link to enter the disabled state. */
for (total_time = 0; ; total_time += HUB_DEBOUNCE_STEP) {
@@ -946,7 +943,7 @@ static int hub_port_disable(struct usb_h
ret = clear_port_feature(hdev, port1,
USB_PORT_FEAT_ENABLE);
}
- if (ret)
+ if (ret && ret != -ENODEV)
dev_err(hub->intfdev, "cannot disable port %d (err = %d)\n",
port1, ret);
return ret;
@@ -2679,14 +2676,16 @@ static int hub_port_reset(struct usb_hub
status = set_port_feature(hub->hdev, port1, (warm ?
USB_PORT_FEAT_BH_PORT_RESET :
USB_PORT_FEAT_RESET));
- if (status) {
+ if (status == -ENODEV) {
+ ; /* The hub is gone */
+ } else if (status) {
dev_err(hub->intfdev,
"cannot %sreset port %d (err = %d)\n",
warm ? "warm " : "", port1, status);
} else {
status = hub_port_wait_reset(hub, port1, udev, delay,
warm);
- if (status && status != -ENOTCONN)
+ if (status && status != -ENOTCONN && status != -ENODEV)
dev_dbg(hub->intfdev,
"port_wait_reset: err = %d\n",
status);
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html