diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c index faea331af105..8fff934f5ffc 100644 --- a/drivers/usb/dwc3/dwc3-msm.c +++ b/drivers/usb/dwc3/dwc3-msm.c @@ -3990,12 +3990,13 @@ static int dwc3_msm_probe(struct platform_device *pdev) } /* - * Create freezable workqueue for sm_work so that it gets scheduled only - * after pm_resume has happened completely. This helps in avoiding race - * conditions between xhci_plat_resume and xhci_runtime_resume; and also - * between hcd disconnect and xhci_resume. + * Create an ordered freezable workqueue for sm_work so that it gets + * scheduled only after pm_resume has happened completely. This helps + * in avoiding race conditions between xhci_plat_resume and + * xhci_runtime_resume and also between hcd disconnect and xhci_resume. */ - mdwc->sm_usb_wq = create_freezable_workqueue("k_sm_usb"); + mdwc->sm_usb_wq = alloc_ordered_workqueue("k_sm_usb", + WQ_FREEZABLE | WQ_MEM_RECLAIM); if (!mdwc->sm_usb_wq) { destroy_workqueue(mdwc->dwc3_wq); return -ENOMEM;