• Rob Herring's avatar
    drm/panfrost: Add support for GPU heap allocations · 187d2929
    Rob Herring authored
    
    
    The midgard/bifrost GPUs need to allocate GPU heap memory which is
    allocated on GPU page faults and not pinned in memory. The vendor driver
    calls this functionality GROW_ON_GPF.
    
    This implementation assumes that BOs allocated with the
    PANFROST_BO_NOEXEC flag are never mmapped or exported. Both of those may
    actually work, but I'm unsure if there's some interaction there. It
    would cause the whole object to be pinned in memory which would defeat
    the point of this.
    
    On faults, we map in 2MB at a time in order to utilize huge pages (if
    enabled). Currently, once we've mapped pages in, they are only unmapped
    if the BO is freed. Once we add shrinker support, we can unmap pages
    with the shrinker.
    
    Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com>
    Cc: Boris Brezillon <boris.brezillon@collabora.com>
    Cc: Robin Murphy <robin.murphy@arm.com>
    Acked-by: default avatarAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
    Reviewed-by: default avatarSteven Price <steven.price@arm.com>
    Signed-off-by: Rob Her...
    187d2929
panfrost_mmu.c 12.7 KB