On Wed, Sep 18, 2019 at 04:22:57PM +0200, Thomas Zimmermann wrote: > Drivers with dedicated video memory occasionally need to reserve a memory > area for a specific purpose, such as cursor images or sprites. Using GEM > VRAM buffer objects can be problematic. For small buffers, GEM VRAM buffer > objects are inefficient as they are aligned to page boundaries. I would still allocate gem objects for that. Then use them as pool instead of using them directly. Not sure this is worth the trouble just for the cursors though as they are big enough that page-sized allocations don't waste memory. > And they cannot easily be placed at specific memory offsets. This can > lead to memory fragmentation and is a problem for hardware with only a > small amount of memory. Note that there is a flag to change the allocation strategy (TTM_PL_FLAG_TOPDOWN). You could allocate the cursor objects with the flag set. Should be good enough to avoid fragmentation. I have a patch doing exactly that for qxl, for the same reason: https://git.kraxel.org/cgit/linux/commit/?id=e00e913a64c6fba9630b311f8bc71bd7c9842479 (no, that patch wasn't sent to the list yet). We could do the same for vram and either let the driver explicitly ask for top-down allocation, or use some threshold like the qxl patch. So, I'm not convinced we actually need the drm_vram_buffer infrastructure. cheers, Gerd