Re: [PATCH v7 14/16] usb: resume (wakeup) child device when port is powered on

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 1, 2014 at 12:02 PM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> On Thu, 1 May 2014, Dan Williams wrote:
>
>> > @@ -122,6 +127,11 @@ static int usb_port_runtime_suspend(stru
>> >                         == PM_QOS_FLAGS_ALL)
>> >                 return -EAGAIN;
>> >
>> > +       if (hub->in_reset) {
>> > +               port_dev->power_is_on = 0;
>> > +               return 0;
>> > +       }
>>
>> Why lie?  Just return -EBUSY and be done.
>
> Good idea; the complete, updated patch is below.  (It's against
> 3.15-rc2, without any of your RFC changes.)
>
>>  In fact that also has the
>> nice side effect of clearing runtime errors it seems.
>
> Not really, because if there was an earlier runtime PM error then
> dev->power.runtime_error would be set, so rpm_check_suspend_allowed()
> would fail and the suspend callback wouldn't get called in the first
> place.
>
> Alan Stern
>
>
> 8<---------------------------------------------------------------->8
>
> The USB core doesn't properly handle mutual exclusion between
> resetting a hub and changing the power states of the hub's ports.  We
> need to avoid sending port-power requests to the hub while it is being
> reset, because such requests cannot succeed.
>
> This patch fixes the problem by keeping track of when a reset is in
> progress.  At such times, attempts to suspend (power-off) a port will
> fail immediately with -EBUSY, and calls to usb_port_runtime_resume()
> will update the power_is_on flag and return immediately.  When the
> reset is complete, hub_activate() will automatically restore each port
> to the proper power state.
>
> Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>

Acked-by: Dan Williams <dan.j.williams@xxxxxxxxx>

I'll throw this at the front of my series when resubmitting.
--
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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux