linux/Documentation/gpu
Dave Airlie 9bdbf7eb25 DRM Rust changes for v7.1-rc1
- DMA:
   - Rework the DMA coherent API: introduce Coherent<T> as a generalized
     container for arbitrary types, replacing the slice-only
     CoherentAllocation<T>. Add CoherentBox for memory initialization
     before exposing a buffer to hardware (converting to Coherent when
     ready), and CoherentHandle for allocations without kernel mapping.
 
   - Add Coherent::init() / init_with_attrs() for one-shot initialization
     via pin-init, and from-slice constructors for both Coherent and
     CoherentBox
 
   - Add uaccess write_dma() for copying from DMA buffers to userspace
     and BinaryWriter support for Coherent<T>
 
 - DRM:
   - Add GPU buddy allocator abstraction
 
   - Add DRM shmem GEM helper abstraction
 
   - Allow drm::Device to dispatch work and delayed work items to driver
     private data
 
   - Add impl_aref_for_gem_obj!() macro to reduce GEM refcount
     boilerplate, and introduce DriverObject::Args for constructor
     context
 
   - Add dma_resv_lock helper and raw_dma_resv() accessor on GEM objects
 
   - Clean up imports across the DRM module
 
 - I/O:
   - Merged via a signed tag from the driver-core tree: register!() macro
     and I/O infrastructure improvements (IoCapable refactor, RelaxedMmio
     wrapper, IoLoc trait, generic accessors, write_reg /
     LocatedRegister)
 
 - Nova (Core):
   - Fix and harden the GSP command queue: correct write pointer
     advancing, empty slot handling, and ring buffer indexing; add mutex
     locking and make Cmdq a pinned type; distinguish wait vs no-wait
     commands
 
   - Add support for large RPCs via continuation records, splitting
     oversized commands across multiple queue slots
 
   - Simplify GSP sequencer and message handling code: remove unused
     trait and Display impls, derive Debug and Zeroable where applicable,
     warn on unconsumed message data
 
   - Refactor Falcon firmware handling: create DMA objects lazily, add
     PIO upload support, and use the Generic Bootloader to boot FWSEC on
     Turing
 
   - Convert all register definitions (PMC, PBUS, PFB, GC6, FUSE, PDISP,
     Falcon) to the kernel register!() macro; add bounded_enum macro to
     define enums usable as register fields
 
   - Migrate all DMA usage to the new Coherent, CoherentBox, and
     CoherentHandle APIs
 
   - Harden firmware parsing with checked arithmetic throughout FWSEC,
     Booter, RISC-V parsing paths
 
   - Add debugfs support for reading GSP-RM log buffers; replace
     module_pci_driver!() with explicit module init to support
     module-level debugfs setup
 
   - Fix auxiliary device registration for multi-GPU systems
 
   - Various cleanups: import style, firmware parsing refactoring,
     framebuffer size logging
 
 - Rust:
   - Add interop::list module providing a C linked list interface
 
   - Extend num::Bounded with shift operations, into_bool(), and const
     get() to support register bitfield manipulation
 
   - Enable the generic_arg_infer Rust feature and add EMSGSIZE error
     code
 
 - Tyr:
   - Adopt vertical import style per kernel Rust guidelines
 
   - Clarify driver/device type names and use DRM device type alias
     consistently across the driver
 
   - Fix GPU model/version decoding in GpuInfo
 
 - Workqueue:
   - Add ARef<T> support for work and delayed work
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQS2q/xV6QjXAdC7k+1FlHeO1qrKLgUCacrovgAKCRBFlHeO1qrK
 LqarAQDSUyg2Z+T/z/svAkklfA9fk+J9yG1s4HLuhcLrAvlqlAEA+ZVCXkoGWmsi
 2wxE8trNl774CvcL0TFLvWFtBG2wmAs=
 =lGBF
 -----END PGP SIGNATURE-----

Merge tag 'drm-rust-next-2026-03-30' of https://gitlab.freedesktop.org/drm/rust/kernel into drm-next

DRM Rust changes for v7.1-rc1

- DMA:
  - Rework the DMA coherent API: introduce Coherent<T> as a generalized
    container for arbitrary types, replacing the slice-only
    CoherentAllocation<T>. Add CoherentBox for memory initialization
    before exposing a buffer to hardware (converting to Coherent when
    ready), and CoherentHandle for allocations without kernel mapping.

  - Add Coherent::init() / init_with_attrs() for one-shot initialization
    via pin-init, and from-slice constructors for both Coherent and
    CoherentBox

  - Add uaccess write_dma() for copying from DMA buffers to userspace
    and BinaryWriter support for Coherent<T>

- DRM:
  - Add GPU buddy allocator abstraction

  - Add DRM shmem GEM helper abstraction

  - Allow drm::Device to dispatch work and delayed work items to driver
    private data

  - Add impl_aref_for_gem_obj!() macro to reduce GEM refcount
    boilerplate, and introduce DriverObject::Args for constructor
    context

  - Add dma_resv_lock helper and raw_dma_resv() accessor on GEM objects

  - Clean up imports across the DRM module

- I/O:
  - Merged via a signed tag from the driver-core tree: register!() macro
    and I/O infrastructure improvements (IoCapable refactor, RelaxedMmio
    wrapper, IoLoc trait, generic accessors, write_reg /
    LocatedRegister)

- Nova (Core):
  - Fix and harden the GSP command queue: correct write pointer
    advancing, empty slot handling, and ring buffer indexing; add mutex
    locking and make Cmdq a pinned type; distinguish wait vs no-wait
    commands

  - Add support for large RPCs via continuation records, splitting
    oversized commands across multiple queue slots

  - Simplify GSP sequencer and message handling code: remove unused
    trait and Display impls, derive Debug and Zeroable where applicable,
    warn on unconsumed message data

  - Refactor Falcon firmware handling: create DMA objects lazily, add
    PIO upload support, and use the Generic Bootloader to boot FWSEC on
    Turing

  - Convert all register definitions (PMC, PBUS, PFB, GC6, FUSE, PDISP,
    Falcon) to the kernel register!() macro; add bounded_enum macro to
    define enums usable as register fields

  - Migrate all DMA usage to the new Coherent, CoherentBox, and
    CoherentHandle APIs

  - Harden firmware parsing with checked arithmetic throughout FWSEC,
    Booter, RISC-V parsing paths

  - Add debugfs support for reading GSP-RM log buffers; replace
    module_pci_driver!() with explicit module init to support
    module-level debugfs setup

  - Fix auxiliary device registration for multi-GPU systems

  - Various cleanups: import style, firmware parsing refactoring,
    framebuffer size logging

- Rust:
  - Add interop::list module providing a C linked list interface

  - Extend num::Bounded with shift operations, into_bool(), and const
    get() to support register bitfield manipulation

  - Enable the generic_arg_infer Rust feature and add EMSGSIZE error
    code

- Tyr:
  - Adopt vertical import style per kernel Rust guidelines

  - Clarify driver/device type names and use DRM device type alias
    consistently across the driver

  - Fix GPU model/version decoding in GpuInfo

- Workqueue:
  - Add ARef<T> support for work and delayed work

Signed-off-by: Dave Airlie <airlied@redhat.com>

From: "Danilo Krummrich" <dakr@kernel.org>
Link: https://patch.msgid.link/DHGH4BLT03BU.ZJH5U52WE8BY@kernel.org
2026-04-01 07:32:05 +10:00
..
amdgpu drm/amd: Update IP versions for Gorgon Point products 2026-01-20 17:19:01 -05:00
bridge
dp-mst
imagination drm/imagination: Numerous documentation fixes. 2023-11-28 18:56:03 +01:00
nova Documentation: nova: remove register abstraction task 2026-03-26 15:10:29 +09:00
rfc drm/doc/rfc: Describe why prescriptive color pipeline is needed 2025-11-26 22:17:52 +01:00
xe drm/xe: Decouple GuC RC code from xe_guc_pc 2026-02-05 14:17:30 -08:00
afbc.rst
automated_testing.rst drm/ci: enable lockdep detection 2025-03-12 08:16:31 +05:30
backlight.rst
driver-uapi.rst drm: Add UAPI for the Asahi driver 2025-04-08 17:15:57 -04:00
drivers.rst Documentation: use a source-read extension for the index link boilerplate 2026-01-23 11:59:34 -07:00
drm-client.rst drm/client: Move client event handlers to drm_client_event.c 2024-10-18 09:23:03 +02:00
drm-compute.rst kernel/cgroup: Add "dmem" memory accounting cgroup 2025-01-06 17:24:38 +01:00
drm-internals.rst drm/doc: Document KUnit expectations 2025-02-26 16:04:15 +01:00
drm-kms-helpers.rst drm/simple-kms: Deprecate simple-kms helpers 2026-03-25 15:05:22 +01:00
drm-kms.rst Documentation/gpu: document drm_colorop 2025-11-26 23:03:32 +01:00
drm-mm.rst gpu: Move DRM buddy allocator one level up (part two) 2026-02-06 11:38:35 +10:00
drm-ras.rst drm/ras: Introduce the DRM RAS infrastructure over generic netlink 2026-03-05 19:38:55 -05:00
drm-uapi.rst drm/doc: Update documentation for 'none' recovery method 2026-03-23 22:00:38 -07:00
drm-usage-stats.rst Documentation/gpu: Clarify format of driver-specific fidnfo keys 2025-02-07 15:22:46 +01:00
drm-vm-bind-async.rst Documentation/gpu: Add a VM_BIND async document 2023-10-17 10:38:07 +02:00
drm-vm-bind-locking.rst Documentation/gpu: VM_BIND locking document 2023-11-29 20:54:43 +01:00
i915.rst drm/i915: Remove todo and comments about struct_mutex 2025-09-09 10:39:39 -04:00
implementation_guidelines.rst Documentation/gpu: VM_BIND locking document 2023-11-29 20:54:43 +01:00
index.rst Merge drm/drm-next into drm-xe-next 2026-03-12 07:23:23 -07:00
introduction.rst drm/simple-kms: Deprecate simple-kms helpers 2026-03-25 15:05:22 +01:00
kms-properties.csv drm/connector: hdmi: Add Broadcast RGB property 2024-05-28 10:24:37 +02:00
komeda-kms.rst Documentation/gpu: Fix typo in Documentation/gpu/komeda-kms.rst 2024-09-05 14:33:06 -06:00
mcde.rst
meson.rst
msm-crash-dump.rst Documentation: Fix typos 2023-08-18 11:29:03 -06:00
msm-preemption.rst Documentation: document adreno preemption 2024-10-04 08:47:29 -07:00
nouveau.rst Documentation: nouveau: Update GSP message queue kernel-doc reference 2025-06-13 16:46:35 +02:00
panfrost.rst drm/panfrost: Replace fdinfo's profiling debugfs knob with sysfs 2024-03-11 13:27:10 +01:00
panthor.rst Documentation/gpu: Add fdinfo meanings of panthor-*-memory tags 2025-02-07 15:23:39 +01:00
pl111.rst
tegra.rst
todo.rst drm/simple-kms: Deprecate simple-kms helpers 2026-03-25 15:05:22 +01:00
tve200.rst
v3d.rst
vc4.rst drm/vc4: Improve the KUnit documentation 2022-12-15 08:54:08 +01:00
vga-switcheroo.rst
vgaarbiter.rst Documentation: vgaarbiter: Fix grammar 2025-03-19 15:11:49 +01:00
vkms.rst drm/vkms: Update testing with IGT IGT_DEVICE 2025-11-04 11:51:15 +01:00
xen-front.rst
zynqmp.rst drm: xlnx: zynqmp_dpsub: Fix kernel doc 2025-01-16 12:45:16 +01:00