[RFC 4/6] dma-buf: Add DMA-BUF exporter op to charge a DMA-BUF to a cgroup.
Christian König
christian.koenig at amd.com
Mon Jan 17 07:46:16 UTC 2022
Am 15.01.22 um 02:06 schrieb Hridya Valsaraju:
> The optional exporter op provides a way for processes to transfer
> charge of a buffer to a different process. This is essential for the
> cases where a central allocator process does allocations for various
> subsystems, hands over the fd to the client who
> requested the memory and drops all references to the allocated memory.
>
> Signed-off-by: Hridya Valsaraju <hridya at google.com>
> ---
> include/linux/dma-buf.h | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
> index 7ab50076e7a6..d5e52f81cc6f 100644
> --- a/include/linux/dma-buf.h
> +++ b/include/linux/dma-buf.h
> @@ -13,6 +13,7 @@
> #ifndef __DMA_BUF_H__
> #define __DMA_BUF_H__
>
> +#include <linux/cgroup_gpu.h>
> #include <linux/dma-buf-map.h>
> #include <linux/file.h>
> #include <linux/err.h>
> @@ -285,6 +286,23 @@ struct dma_buf_ops {
>
> int (*vmap)(struct dma_buf *dmabuf, struct dma_buf_map *map);
> void (*vunmap)(struct dma_buf *dmabuf, struct dma_buf_map *map);
> +
> + /**
> + * @charge_to_cgroup:
> + *
> + * This is called by an exporter to charge a buffer to the specified
> + * cgroup.
Well that sentence makes absolutely no sense at all.
The dma_buf_ops are supposed to be called by the DMA-buf subsystem on
behalves of the importer and never by the exporter itself.
I hope that this is just a documentation mixup.
Regards,
Christian.
> The caller must hold a reference to @gpucg obtained via
> + * gpucg_get(). The DMA-BUF will be uncharged from the cgroup it is
> + * currently charged to before being charged to @gpucg. The caller must
> + * belong to the cgroup the buffer is currently charged to.
> + *
> + * This callback is optional.
> + *
> + * Returns:
> + *
> + * 0 on success or negative error code on failure.
> + */
> + int (*charge_to_cgroup)(struct dma_buf *dmabuf, struct gpucg *gpucg);
> };
>
> /**
More information about the dri-devel
mailing list