Messages in this thread | | | Subject | Re: [RFC 4/6] dma-buf: Add DMA-BUF exporter op to charge a DMA-BUF to a cgroup. | From | Christian König <> | Date | Mon, 17 Jan 2022 08:46:16 +0100 |
| |
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); > }; > > /**
| |