Re: [PATCH v9 09/19] usb: make usb_port flags atomic, rename did_runtime_put to child_usage

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

 



On Fri, May 16, 2014 at 11:32 AM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> On Wed, 7 May 2014, Dan Williams wrote:
>
>> We want to manipulate ->did_runtime_put in usb_port_runtime_resume(),
>> but we don't want that to collide with other updates.  Move usb_port
>> flags to new port-bitmap fields in usb_hub. "did_runtime_put" is renamed
>> "child_usage_bits" to reflect that it is strictly standing in for the
>> fact that usb_devices are not the device_model children of their parent
>> port.
>>
>> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>
>
>
>> @@ -4628,8 +4628,10 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
>>               spin_lock_irq(&device_state_lock);
>>               if (hdev->state == USB_STATE_NOTATTACHED)
>>                       status = -ENOTCONN;
>> -             else
>> +             else {
>>                       port_dev->child = udev;
>> +                     set_bit(port1, hub->child_usage_bits);
>> +             }
>
> Doesn't this line belong in usb_new_device(), next to the
> pm_runtime_get_sync(&port_dev->dev) line?  Or maybe does that line
> belong here?

I believe it belongs in usb_new_device() especially because that
routine initializes the runtime pm state of the device.  Were the
usb_device a device-model child of its port then usb_new_device()
would already be implicitly modifying the port_dev usage count.

>>               spin_unlock_irq(&device_state_lock);
>>               mutex_unlock(&usb_port_peer_mutex);
>>
>> diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h
>> index 048c797f394c..b3432deb8355 100644
>> --- a/drivers/usb/core/hub.h
>> +++ b/drivers/usb/core/hub.h
>> @@ -51,6 +51,10 @@ struct usb_hub {
>>                                                       device present */
>>       unsigned long           wakeup_bits[1]; /* ports that have signaled
>>                                                       remote wakeup */
>> +     unsigned long           power_bits[1]; /* ports that are powered */
>> +     unsigned long           child_usage_bits[1]; /* child pm_runtime
>> +                                                     active */
>
> I'd say rather /* ports powered on for children */

Done.

> Alan Stern

Thanks!
--
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