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@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); };
/**