On Sat, 19 Sep 2020, Rob Clark <robdclark@xxxxxxxxx> wrote: > From: Rob Clark <robdclark@xxxxxxxxxxxx> > > This will be used for non-block atomic commits. > > Signed-off-by: Rob Clark <robdclark@xxxxxxxxxxxx> > --- > drivers/gpu/drm/drm_crtc.c | 11 +++++++++++ > include/drm/drm_crtc.h | 8 ++++++++ > 2 files changed, 19 insertions(+) > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index aecdd7ea26dc..4f7c0bfce0a3 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -326,6 +326,14 @@ int drm_crtc_init_with_planes(struct drm_device *dev, struct drm_crtc *crtc, > config->prop_out_fence_ptr, 0); > drm_object_attach_property(&crtc->base, > config->prop_vrr_enabled, 0); > + > + crtc->worker = kthread_create_worker(0, "%s-worker", crtc->name); > + if (IS_ERR(crtc->worker)) { > + drm_mode_object_unregister(dev, &crtc->base); > + ret = PTR_ERR(crtc->worker); > + crtc->worker = NULL; > + return ret; > + } > } > > return 0; > @@ -366,6 +374,9 @@ void drm_crtc_cleanup(struct drm_crtc *crtc) > > kfree(crtc->name); > > + if (crtc->worker) > + kthread_destroy_worker(crtc->worker); > + > memset(crtc, 0, sizeof(*crtc)); > } > EXPORT_SYMBOL(drm_crtc_cleanup); > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h > index 59b51a09cae6..8964a3732bca 100644 > --- a/include/drm/drm_crtc.h > +++ b/include/drm/drm_crtc.h > @@ -30,6 +30,7 @@ > #include <linux/types.h> > #include <linux/fb.h> > #include <linux/hdmi.h> > +#include <linux/kthread.h> A forward declaration would suffice. > #include <linux/media-bus-format.h> > #include <uapi/drm/drm_mode.h> > #include <uapi/drm/drm_fourcc.h> > @@ -1172,6 +1173,13 @@ struct drm_crtc { > * Initialized via drm_self_refresh_helper_init(). > */ > struct drm_self_refresh_data *self_refresh_data; > + > + /** > + * worker: Missing @, should be "@worker:". > + * > + * Per-CRTC worker for nonblock atomic commits. > + */ > + struct kthread_worker *worker; > }; > > /** -- Jani Nikula, Intel Open Source Graphics Center