On Fri, 2014-03-14 at 12:12 -0400, Alan Stern wrote: > On Thu, 13 Mar 2014, Dan Williams wrote: > > > The port pm_runtime implementation unconditionally clears FEAT_C_ENABLE > > after clearing PORT_POWER, but the bit is reserved on usb3 hub ports. > > We expect khubd to be prevented from running because the port state is > > not RPM_ACTIVE, so we need to clear any errors for usb2 ports. > > > > Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> > > --- > > drivers/usb/core/port.c | 3 ++- > > 1 files changed, 2 insertions(+), 1 deletions(-) > > > > diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c > > index 96f7a29e2ac6..0ff5854c9581 100644 > > --- a/drivers/usb/core/port.c > > +++ b/drivers/usb/core/port.c > > @@ -136,7 +136,8 @@ static int usb_port_runtime_suspend(struct device *dev) > > set_bit(port1, hub->busy_bits); > > retval = usb_hub_set_port_power(hdev, hub, port1, false); > > usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_CONNECTION); > > - usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_ENABLE); > > + if (!hub_is_superspeed(hdev)) > > Maybe use !port->is_superspeed instead. Sure. 8<----- Subject: usb: usb3 ports do not support FEAT_C_ENABLE From: Dan Williams <dan.j.williams@xxxxxxxxx> The port pm_runtime implementation unconditionally clears FEAT_C_ENABLE after clearing PORT_POWER, but the bit is reserved on usb3 hub ports. We expect khubd to be prevented from running because the port state is not RPM_ACTIVE, so we need to clear any errors for usb2 ports. Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> --- drivers/usb/core/port.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c index 191d7c3c9791..4917473de203 100644 --- a/drivers/usb/core/port.c +++ b/drivers/usb/core/port.c @@ -136,7 +136,8 @@ static int usb_port_runtime_suspend(struct device *dev) set_bit(port1, hub->busy_bits); retval = usb_hub_set_port_power(hdev, hub, port1, false); usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_CONNECTION); - usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_ENABLE); + if (!port_dev->is_superspeed) + usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_ENABLE); clear_bit(port1, hub->busy_bits); usb_autopm_put_interface(intf); -- 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