Sat, 19 Sep 2020 12:37:25 -0700 Rob Clark wrote: > > @@ -1797,6 +1797,7 @@ int drm_atomic_helper_commit(struct drm_device *dev, > struct drm_atomic_state *state, > bool nonblock) > { > + struct kthread_worker *worker = NULL; > int ret; > > if (state->async_update) { > @@ -1814,7 +1815,7 @@ int drm_atomic_helper_commit(struct drm_device *dev, > if (ret) > return ret; > > - INIT_WORK(&state->commit_work, commit_work); > + kthread_init_work(&state->commit_kwork, commit_work); > > ret = drm_atomic_helper_prepare_planes(dev, state); > if (ret) > @@ -1857,8 +1858,12 @@ int drm_atomic_helper_commit(struct drm_device *dev, > */ > > drm_atomic_state_get(state); > + > if (nonblock) > - queue_work(system_unbound_wq, &state->commit_work); > + worker = drm_atomic_pick_worker(state); > + > + if (worker) > + kthread_queue_work(worker, &state->commit_kwork); > else > commit_tail(state); A minor change in behavior: commit_tail() would have nothing to do with either worker or work, rather than the fallback in case no worker is available. _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel