[PATCH] drm: Remove struct drm_flip_task from DRM interfaces

Daniel Vetter daniel at ffwll.ch
Wed Oct 18 08:16:30 UTC 2023


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 at suse.de>
> ---
>  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 at ffwll.ch>

>   */
>  
>  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


More information about the dri-devel mailing list