• Tomi Valkeinen's avatar
    drm/omap: add OMAP_BO flags to affect buffer allocation · 23b48225
    Tomi Valkeinen authored
    On SoCs with DMM/TILER, we have two ways to allocate buffers: normal
    dma_alloc or via DMM (which basically functions as an IOMMU). DMM can
    map 128MB at a time, and we only map the DMM buffers when they are used
    (i.e. not at alloc time). If DMM is present, omapdrm always uses DMM.
    
    There are use cases that require lots of big buffers that are being used
    at the same time by different IPs. At the moment the userspace has a
    hard maximum of 128MB.
    
    This patch adds three new flags that can be used by the userspace to
    solve the situation:
    
    OMAP_BO_MEM_CONTIG: The driver will use dma_alloc to get the memory.
    This can be used to avoid DMM if the userspace knows it needs more than
    128M of memory at the same time.
    
    OMAP_BO_MEM_DMM: The driver will use DMM to get the memory. There's not
    much use for this flag at the moment, as on platforms with DMM it is
    used by default, but it's here for completeness.
    
    OMAP_BO_MEM_PIN: The driver will pin the memory at alloc time, and keep
    it pinned. This can be used to 1) get an error at alloc time if DMM
    space is full, and 2) get rid of the constant pin/unpin operations which
    may have some effect on performance.
    
    If none of the flags are given, the behavior is the same as currently.
    Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
    Reviewed-by: default avatarJean-Jacques Hiblot <jjhiblot@ti.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20191010120000.1421-9-jjhiblot@ti.com
    23b48225
omap_drm.h 4.17 KB