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? > 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 */ Alan Stern -- 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