On Mon, Apr 28, 2014 at 4:46 PM, Dan Williams <dan.j.williams@xxxxxxxxx> wrote: > Changes since v7 [1]: > * Added patch 8 "usb: make usb_port flags atomic" > > * Added patch 15 "usb: hub_handle_remote_wakeup() depends on > CONFIG_PM_RUNTIME=y" > > * Fixed patch 16 "usb: resume (wakeup) child device when port is powered > on" > - added USB_PORTDEV_WAKE flag to force usb_remote_wakeup() in > hub_handle_remote_wakeup() > > * Added a port_event() comment in patch 13 "usb: synchronize port > poweroff and khubd" > > * Reworked patch 12 "usb: refactor port handling in hub_events()" to > avoid indentation churn and a cleanup to consolidate calls to > usb_reset_device() > > See a summary of the review state of the series below. > > ===== > > This series addresses the following disconnect scenarios when attempting > to use port power-off. > > 1/ Superspeed devices downgrade to their hispeed connection when > rx-detection fails on the superspeed pins. Address this by > preventing superspeed port poweroff/suspension until the peer port is > suspended, and powering on the superspeed port before the hispeed > port is resumed. This depends on the ability to identify peer ports > (patches 4-7, and patch 9 implements the policy). > > 2/ khubd prematurely disconnects ports that are in the process of being > resumed or reset. After this series khubd will ignore ports in the > pm-runtime-suspended or suspending state, or force active ports in the > resuming state (patch 13). While it is running it holds a new port > status lock to synchronize the port status changes of > usb_port_{suspend|resume} and usb_reset_and_verify_device() (patch 14). > > 3/ Superspeed devices fail to reconnect after a 2 second timeout This > event has two causes: > > 3.1/ Repeated {Set|Clear}PortFeature(PORT_POWER) toggles results in > the the device switching to its hispeed connection (due to > perceived instability of the superspeed connection). Address > this by arranging for the child device to be woken up > and complete a resume cycle when the parent port resumes (patch 16). > > 3.2/ Devices may require a warm reset when recovering the power > session. When the child device is woken up per above and the > port timed out on reconnect, force a warm-reset during the > child's reset-resume (patch 17). > > [1]: v7: http://marc.info/?l=linux-usb&m=139526512014030&w=2 > > --- > > ACK => Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > ack => Acked-by another reviewer > > ACK [01/18] usb: disable port power control if not supported in wHubCharacteristics > ACK [02/18] usb: rename usb_port device objects > ACK [03/18] usb: cleanup setting udev->removable from port_dev->connect_type > ACK [04/18] usb: assign default peer ports for root hubs > ACK [05/18] usb: assign usb3 external hub port peers > ACK [06/18] usb: find internal hub tier mismatch via acpi > ACK [07/18] usb: sysfs link peer ports > [08/18] usb: make usb_port flags atomic > ACK [09/18] usb: block suspension of superspeed port while hispeed peer is active > ACK [10/18] usb: don't clear FEAT_C_ENABLE on usb_port_runtime_resume failure > ACK [11/18] usb: usb3 ports do not support FEAT_C_ENABLE > [12/18] usb: refactor port handling in hub_events() > [13/18] usb: synchronize port poweroff and khubd > [14/18] usb: introduce port status lock > [15/18] usb: hub_handle_remote_wakeup() depends on CONFIG_PM_RUNTIME=y > [16/18] usb: resume (wakeup) child device when port is powered on > ack [17/18] usb: force warm reset to break link re-connect livelock > [18/18] usb: documentation for usb port power off mechanisms Alan, sorry, I neglected to cc you directly on the non-acked patches. Let me know if you want a resend or can pick them up from the list. -- Dan -- 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