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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html