usb: dwc3-msm: Use dedicated workqueue for resume_work
Currently resume_work() is scheduled on the system_wq workqueue, however that may allow resume_work to get scheduled on multiple CPUs simultaneously. This can be seen when multiple VBUS or ID pin events are generated in rapid succession which can lead to the input event bits getting set to an inconsistent state. Alleviate this by creating a dedicated workqueue with the WQ_ORDERED flag set, which will restrict resume_work() to only run once at a time. Since it also flushes sm_work, that will ensure that resume_work and sm_work are properly serialized. Change-Id: I47e5167ee989b60e860391870e693ee631999809 Signed-off-by:Mayank Rana <mrana@codeaurora.org> Signed-off-by:
Jack Pham <jackp@codeaurora.org>
Loading
Please register or sign in to comment