0f25e493a2
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: Steven Price <steven.price@arm.com> Signed-off-by: Steven Price <steven.price@arm.com> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Steven Price <steven.price@arm.com> Reviewed-by: Liviu Dudau <liviu.dudau@arm.com> Acked-by: Maxime Ripard <mripard@kernel.org> Acked-by: Heiko Stuebner <heiko@sntech.de> Link: https://patchwork.freedesktop.org/patch/msgid/20240229162230.2634044-2-boris.brezillon@collabora.com
30 lines
472 B
ReStructuredText
30 lines
472 B
ReStructuredText
===============
|
|
DRM Driver uAPI
|
|
===============
|
|
|
|
drm/i915 uAPI
|
|
=============
|
|
|
|
.. kernel-doc:: include/uapi/drm/i915_drm.h
|
|
|
|
drm/nouveau uAPI
|
|
================
|
|
|
|
VM_BIND / EXEC uAPI
|
|
-------------------
|
|
|
|
.. kernel-doc:: drivers/gpu/drm/nouveau/nouveau_exec.c
|
|
:doc: Overview
|
|
|
|
.. kernel-doc:: include/uapi/drm/nouveau_drm.h
|
|
|
|
drm/panthor uAPI
|
|
================
|
|
|
|
.. kernel-doc:: include/uapi/drm/panthor_drm.h
|
|
|
|
drm/xe uAPI
|
|
===========
|
|
|
|
.. kernel-doc:: include/uapi/drm/xe_drm.h
|