Re: [Intel-gfx] [PATCH 02/15] dma-buf: Switch to inline kerneldoc

Alex Deucher
2021-06-22T18:24:41Z

On Tue, Jun 22, 2021 at 12:55 PM Daniel Vetter <daniel.vetter@ffwll.ch> wrote:
>
> Also review & update everything while we're at it.
>
> This is prep work to smash a ton of stuff into the kerneldoc for
> @resv.
>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Sumit Semwal <sumit.semwal@linaro.org>
> Cc: "Christian König" <christian.koenig@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: Nirmoy Das <nirmoy.das@amd.com>
> Cc: Deepak R Varma <mh12gx2825@gmail.com>
> Cc: Chen Li <chenli@uniontech.com>
> Cc: Kevin Wang <kevin1.wang@amd.com>
> Cc: linux-media@vger.kernel.org
> Cc: linaro-mm-sig@lists.linaro.org
> ---
> include/linux/dma-buf.h | 107 +++++++++++++++++++++++++++++++---------
> 1 file changed, 83 insertions(+), 24 deletions(-)
>
> diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
> index 92eec38a03aa..6d18b9e448b9 100644
> --- a/include/linux/dma-buf.h
> +++ b/include/linux/dma-buf.h
> @@ -289,28 +289,6 @@ struct dma_buf_ops {
>
> /**
> * struct dma_buf - shared buffer object
> - * @size: size of the buffer; invariant over the lifetime of the buffer.
> - * @file: file pointer used for sharing buffers across, and for refcounting.
> - * @attachments: list of dma_buf_attachment that denotes all devices attached,
> - * protected by dma_resv lock.
> - * @ops: dma_buf_ops associated with this buffer object.
> - * @lock: used internally to serialize list manipulation, attach/detach and
> - * vmap/unmap
> - * @vmapping_counter: used internally to refcnt the vmaps
> - * @vmap_ptr: the current vmap ptr if vmapping_counter > 0
> - * @exp_name: name of the exporter; useful for debugging.
> - * @name: userspace-provided name; useful for accounting and debugging,
> - * protected by @resv.
> - * @name_lock: spinlock to protect name access
> - * @owner: pointer to exporter module; used for refcounting when exporter is a
> - * kernel module.
> - * @list_node: node for dma_buf accounting and debugging.
> - * @priv: exporter specific private data for this buffer object.
> - * @resv: reservation object linked to this dma-buf
> - * @poll: for userspace poll support
> - * @cb_excl: for userspace poll support
> - * @cb_shared: for userspace poll support
> - * @sysfs_entry: for exposing information about this buffer in sysfs.
> * The attachment_uid member of @sysfs_entry is protected by dma_resv lock
> * and is incremented on each attach.
> *
> @@ -324,24 +302,100 @@ struct dma_buf_ops {
> * Device DMA access is handled by the separate &struct dma_buf_attachment.
> */
> struct dma_buf {
> + /**
> + * @size:
> + *
> + * Size of the buffer; invariant over the lifetime of the buffer.
> + */
> size_t size;
> +
> + /**
> + * @file:
> + *
> + * File pointer used for sharing buffers across, and for refcounting.
> + * See dma_buf_get() and dma_buf_put().
> + */
> struct file *file;
> +
> + /**
> + * @attachments:
> + *
> + * List of dma_buf_attachment that denotes all devices attached,
> + * protected by &dma_resv lock @resv.
> + */
> struct list_head attachments;
> +
> + /** @ops: dma_buf_ops associated with this buffer object. */

For consistency you may want to format this like:
/**
* @ops:
*
* dma_buf_ops associated with this buffer object.
*/

> const struct dma_buf_ops *ops;
> +
> + /**
> + * @lock:
> + *
> + * Used internally to serialize list manipulation, attach/detach and
> + * vmap/unmap. Note that in many cases this is superseeded by
> + * dma_resv_lock() on @resv.
> + */
> struct mutex lock;
> +
> + /**
> + * @vmapping_counter:
> + *
> + * Used internally to refcnt the vmaps returned by dma_buf_vmap().
> + * Protected by @lock.
> + */
> unsigned vmapping_counter;
> +
> + /**
> + * @vmap_ptr:
> + * The current vmap ptr if @vmapping_counter > 0. Protected by @lock.
> + */

Same comment as above.

> struct dma_buf_map vmap_ptr;
> +
> + /**
> + * @exp_name:
> + *
> + * Name of the exporter; useful for debugging. See the
> + * DMA_BUF_SET_NAME IOCTL.
> + */
> const char *exp_name;
> +
> + /**
> + * @name:
> + *
> + * Userspace-provided name; useful for accounting and debugging,
> + * protected by dma_resv_lock() on @resv and @name_lock for read access.
> + */
> const char *name;
> +
> + /** @name_lock: Spinlock to protect name acces for read access. */
> spinlock_t name_lock;
> +
> + /**
> + * @owner:
> + *
> + * Pointer to exporter module; used for refcounting when exporter is a
> + * kernel module.
> + */
> struct module *owner;
> +
> + /** @list_node: node for dma_buf accounting and debugging. */

and here.

> struct list_head list_node;
> +
> + /** @priv: exporter specific private data for this buffer object. */

and here.

> void *priv;
> +
> + /**
> + * @resv:
> + *
> + * Reservation object linked to this dma-buf.
> + */
> struct dma_resv *resv;
>
> - /* poll support */
> + /** @poll: for userspace poll support */

here.

> wait_queue_head_t poll;
>
> + /** @cb_excl: for userspace poll support */
> + /** @cb_shared: for userspace poll support */

Here.

Either way,
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> struct dma_buf_poll_cb_t {
> struct dma_fence_cb cb;
> wait_queue_head_t *poll;
> @@ -349,7 +403,12 @@ struct dma_buf {
> __poll_t active;
> } cb_excl, cb_shared;
> #ifdef CONFIG_DMABUF_SYSFS_STATS
> - /* for sysfs stats */
> + /**
> + * @sysfs_entry:
> + *
> + * For exposing information about this buffer in sysfs. See also
> + * `DMA-BUF statistics`_ for the uapi this enables.
> + */
> struct dma_buf_sysfs_entry {
> struct kobject kobj;
> struct dma_buf *dmabuf;
> --
> 2.32.0.rc2