Merge "usb: host: Flush hub workqueue before stopping controller"
This commit is contained in:
commit
5b3cec6473
3 changed files with 10 additions and 1 deletions
|
@ -2990,6 +2990,9 @@ void usb_remove_hcd(struct usb_hcd *hcd)
|
||||||
cancel_work_sync(&hcd->wakeup_work);
|
cancel_work_sync(&hcd->wakeup_work);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* handle any pending hub events before XHCI stops */
|
||||||
|
usb_flush_hub_wq();
|
||||||
|
|
||||||
mutex_lock(&usb_bus_list_lock);
|
mutex_lock(&usb_bus_list_lock);
|
||||||
usb_disconnect(&rhdev); /* Sets rhdev to NULL */
|
usb_disconnect(&rhdev); /* Sets rhdev to NULL */
|
||||||
mutex_unlock(&usb_bus_list_lock);
|
mutex_unlock(&usb_bus_list_lock);
|
||||||
|
|
|
@ -610,6 +610,12 @@ void usb_kick_hub_wq(struct usb_device *hdev)
|
||||||
kick_hub_wq(hub);
|
kick_hub_wq(hub);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void usb_flush_hub_wq(void)
|
||||||
|
{
|
||||||
|
flush_workqueue(hub_wq);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(usb_flush_hub_wq);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Let the USB core know that a USB 3.0 device has sent a Function Wake Device
|
* Let the USB core know that a USB 3.0 device has sent a Function Wake Device
|
||||||
* Notification, which indicates it had initiated remote wakeup.
|
* Notification, which indicates it had initiated remote wakeup.
|
||||||
|
|
|
@ -502,7 +502,7 @@ extern void usb_hc_died(struct usb_hcd *hcd);
|
||||||
extern void usb_hcd_poll_rh_status(struct usb_hcd *hcd);
|
extern void usb_hcd_poll_rh_status(struct usb_hcd *hcd);
|
||||||
extern void usb_wakeup_notification(struct usb_device *hdev,
|
extern void usb_wakeup_notification(struct usb_device *hdev,
|
||||||
unsigned int portnum);
|
unsigned int portnum);
|
||||||
|
extern void usb_flush_hub_wq(void);
|
||||||
extern void usb_hcd_start_port_resume(struct usb_bus *bus, int portnum);
|
extern void usb_hcd_start_port_resume(struct usb_bus *bus, int portnum);
|
||||||
extern void usb_hcd_end_port_resume(struct usb_bus *bus, int portnum);
|
extern void usb_hcd_end_port_resume(struct usb_bus *bus, int portnum);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue