On Fri, 25 Apr 2014, Dan Williams wrote:
> >> @@ -4892,11 +4897,17 @@ static void hub_events(void)
> >>
> >> /* deal with port status changes */
> >> for (i = 1; i <= hdev->maxchild; i++) {
> >> + struct usb_port *port_dev = hub->ports[i - 1];
> >> +
> >> if (!test_bit(i, hub->busy_bits)
> >> && (test_and_clear_bit(i,
> >> hub->event_bits)
> >> || test_bit(i,
> >> hub->change_bits)
> >> - || test_bit(i,
> >> hub->wakeup_bits)))
> >> + || test_bit(i,
> >> hub->wakeup_bits))) {
> >
> > Please add a comment here, explaining that this is to prevent any
> > runtime suspends from powering-off the port while we're handling the
> > events.
> >
>
> Added:
> /*
> * The get_noresume and barrier ensures that
> if
s/ensures/ensure/
> * the port was in the process of resuming we
s/resuming/resuming,/
> * flush that work and keep the port active
> for
> * the duration of the port_event(). However,
> * if the port is runtime pm suspended
> * (powered-off), we leave it in that state,
> run
> * an abbreviated port_event(), and move on.
> */
Otherwise fine.
Alan Stern
--
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