On Tue, Oct 17, 2023 at 02:20:53PM +0200, Thomas Zimmermann wrote: > Contain struct drm_flip_task and its helper functions > drm_flip_work_allocate_task() and drm_flip_work_queue_task() within > drm_flip_work.c There are no callers outside of the flip-work code. > > Signed-off-by: Thomas Zimmermann <tzimmermann@xxxxxxx> > --- > drivers/gpu/drm/drm_flip_work.c | 27 +++++++-------------------- > include/drm/drm_flip_work.h | 18 ++---------------- > 2 files changed, 9 insertions(+), 36 deletions(-) > > diff --git a/drivers/gpu/drm/drm_flip_work.c b/drivers/gpu/drm/drm_flip_work.c > index 060b753881a27..8c6090a90d564 100644 > --- a/drivers/gpu/drm/drm_flip_work.c > +++ b/drivers/gpu/drm/drm_flip_work.c > @@ -27,14 +27,12 @@ > #include <drm/drm_print.h> > #include <drm/drm_util.h> > > -/** > - * drm_flip_work_allocate_task - allocate a flip-work task > - * @data: data associated to the task > - * @flags: allocator flags > - * > - * Allocate a drm_flip_task object and attach private data to it. > - */ > -struct drm_flip_task *drm_flip_work_allocate_task(void *data, gfp_t flags) > +struct drm_flip_task { > + struct list_head node; > + void *data; > +}; > + > +static struct drm_flip_task *drm_flip_work_allocate_task(void *data, gfp_t flags) > { > struct drm_flip_task *task; > > @@ -44,18 +42,8 @@ struct drm_flip_task *drm_flip_work_allocate_task(void *data, gfp_t flags) > > return task; > } > -EXPORT_SYMBOL(drm_flip_work_allocate_task); > > -/** > - * drm_flip_work_queue_task - queue a specific task > - * @work: the flip-work > - * @task: the task to handle > - * > - * Queues task, that will later be run (passed back to drm_flip_func_t > - * func) on a work queue after drm_flip_work_commit() is called. > - */ > -void drm_flip_work_queue_task(struct drm_flip_work *work, > - struct drm_flip_task *task) > +static void drm_flip_work_queue_task(struct drm_flip_work *work, struct drm_flip_task *task) > { > unsigned long flags; > > @@ -63,7 +51,6 @@ void drm_flip_work_queue_task(struct drm_flip_work *work, > list_add_tail(&task->node, &work->queued); > spin_unlock_irqrestore(&work->lock, flags); > } > -EXPORT_SYMBOL(drm_flip_work_queue_task); > > /** > * drm_flip_work_queue - queue work > diff --git a/include/drm/drm_flip_work.h b/include/drm/drm_flip_work.h > index 21c3d512d25c4..6be4ba6f35143 100644 > --- a/include/drm/drm_flip_work.h > +++ b/include/drm/drm_flip_work.h > @@ -33,9 +33,8 @@ > * > * Util to queue up work to run from work-queue context after flip/vblank. > * Typically this can be used to defer unref of framebuffer's, cursor > - * bo's, etc until after vblank. The APIs are all thread-safe. > - * Moreover, drm_flip_work_queue_task and drm_flip_work_queue can be called > - * in atomic context. > + * bo's, etc until after vblank. The APIs are all thread-safe. Moreover, > + * drm_flip_work_queue can be called in atomic context. Since you edit this anyway, add () so it becomes a hyperlink? Also looking at the code it's actually drm_flip_work_commit() that's atomic safe, _queue is not super irq safe (because it allocates and that could fail). With that fixed. Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > */ > > struct drm_flip_work; > @@ -51,16 +50,6 @@ struct drm_flip_work; > */ > typedef void (*drm_flip_func_t)(struct drm_flip_work *work, void *val); > > -/** > - * struct drm_flip_task - flip work task > - * @node: list entry element > - * @data: data to pass to &drm_flip_work.func > - */ > -struct drm_flip_task { > - struct list_head node; > - void *data; > -}; > - > /** > * struct drm_flip_work - flip work queue > * @name: debug name > @@ -79,9 +68,6 @@ struct drm_flip_work { > spinlock_t lock; > }; > > -struct drm_flip_task *drm_flip_work_allocate_task(void *data, gfp_t flags); > -void drm_flip_work_queue_task(struct drm_flip_work *work, > - struct drm_flip_task *task); > void drm_flip_work_queue(struct drm_flip_work *work, void *val); > void drm_flip_work_commit(struct drm_flip_work *work, > struct workqueue_struct *wq); > -- > 2.42.0 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch