On 7/11/26 16:48, Robert Mader wrote: > As udmabuf increasingly enjoys popularity - being used in projects like > libcamera, Gstreamer, Mesa and KWin - users more frequently encounter > cases where the current default size limit of 64MB is too low. Examples > include allocating video buffers at a 8K resolution - and even 4K is > affected when using non-subsampled video formats or high bit depths. > > While the limit can already be changed via the kernel command line, > exposing it as a kernel config makes that easier and more discoverable > for distros. Thus let's do that.
Well config options are usually only useful if the value can't be changed on runtime through a module parameter, but that is clearly not the case here. On the other hand I do see your problem. I would just vote to disable the limit by default, there is nothing preventing userspace from allocating multiple uDMA-bufs so it doesn't seem to prevent any security issue or similar. Regards, Christian. > > Signed-off-by: Robert Mader <[email protected]> > --- > drivers/dma-buf/Kconfig | 6 ++++++ > drivers/dma-buf/udmabuf.c | 4 ++++ > 2 files changed, 10 insertions(+) > > diff --git a/drivers/dma-buf/Kconfig b/drivers/dma-buf/Kconfig > index 7efc0f0d0712..35f0779cdc80 100644 > --- a/drivers/dma-buf/Kconfig > +++ b/drivers/dma-buf/Kconfig > @@ -40,6 +40,12 @@ config UDMABUF > A driver to let userspace turn memfd regions into dma-bufs. > Qemu can use this to create host dmabufs for guest framebuffers. > > +config UDMABUF_SIZE_LIMIT_MBYTES > + int "Size limit in Mega Bytes" > + default 64 > + help > + Maximum size of a udmabuf, in megabytes. Default is 64. > + > config DMABUF_DEBUG > bool "DMA-BUF debug checks" > depends on DMA_SHARED_BUFFER > diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c > index bced421c0d65..a83153326362 100644 > --- a/drivers/dma-buf/udmabuf.c > +++ b/drivers/dma-buf/udmabuf.c > @@ -20,7 +20,11 @@ static int list_limit = 1024; > module_param(list_limit, int, 0644); > MODULE_PARM_DESC(list_limit, "udmabuf_create_list->count limit. Default is > 1024."); > > +#ifdef CONFIG_UDMABUF_SIZE_LIMIT_MBYTES > +static int size_limit_mb = CONFIG_UDMABUF_SIZE_LIMIT_MBYTES; > +#else > static int size_limit_mb = 64; > +#endif > module_param(size_limit_mb, int, 0644); > MODULE_PARM_DESC(size_limit_mb, "Max size of a dmabuf, in megabytes. Default > is 64."); > > -- > 2.55.0 >
