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

Reply via email to