• Boris Brezillon's avatar
    drm/panthor: Add uAPI · 0f25e493
    Boris Brezillon authored
    Panthor follows the lead of other recently submitted drivers with
    ioctls allowing us to support modern Vulkan features, like sparse memory
    binding:
    
    - Pretty standard GEM management ioctls (BO_CREATE and BO_MMAP_OFFSET),
      with the 'exclusive-VM' bit to speed-up BO reservation on job submission
    - VM management ioctls (VM_CREATE, VM_DESTROY and VM_BIND). The VM_BIND
      ioctl is loosely based on the Xe model, and can handle both
      asynchronous and synchronous requests
    - GPU execution context creation/destruction, tiler heap context creation
      and job submission. Those ioctls reflect how the hardware/scheduler
      works and are thus driver specific.
    
    We also have a way to expose IO regions, such that the usermode driver
    can directly access specific/well-isolate registers, like the
    LATEST_FLUSH register used to implement cache-flush reduction.
    
    This uAPI intentionally keeps usermode queues out of the scope, which
    explains why doorbell registers and command stream ring-buffers are not
    directly exposed to userspace.
    
    v6:
    - Add Maxime's and Heiko's acks
    
    v5:
    - Fix typo
    - Add Liviu's R-b
    
    v4:
    - Add a VM_GET_STATE ioctl
    - Fix doc
    - Expose the CORE_FEATURES register so we can deal with variants in the
      UMD
    - Add Steve's R-b
    
    v3:
    - Add the concept of sync-only VM operation
    - Fix support for 32-bit userspace
    - Rework drm_panthor_vm_create to pass the user VA size instead of
      the kernel VA size (suggested by Robin Murphy)
    - Typo fixes
    - Explicitly cast enums with top bit set to avoid compiler warnings in
      -pedantic mode.
    - Drop property core_group_count as it can be easily calculated by the
      number of bits set in l2_present.
    Co-developed-by: default avatarSteven Price <steven.price@arm.com>
    Signed-off-by: default avatarSteven Price <steven.price@arm.com>
    Signed-off-by: default avatarBoris Brezillon <boris.brezillon@collabora.com>
    Reviewed-by: default avatarSteven Price <steven.price@arm.com>
    Reviewed-by: default avatarLiviu Dudau <liviu.dudau@arm.com>
    Acked-by: default avatarMaxime Ripard <mripard@kernel.org>
    Acked-by: default avatarHeiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240229162230.2634044-2-boris.brezillon@collabora.com
    0f25e493
panthor_drm.h 27.1 KB