]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Merge tag 'drm-next-2025-05-28' of https://gitlab.freedesktop.org/drm/kernel
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 28 May 2025 16:46:39 +0000 (09:46 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 28 May 2025 16:46:39 +0000 (09:46 -0700)
Pull drm updates from Dave Airlie:
 "As part of building up nova-core/nova-drm pieces we've brought in some
  rust abstractions through this tree, aux bus being the main one, with
  devres changes also in the driver-core tree. Along with the drm core
  abstractions and enough nova-core/nova-drm to use them. This is still
  all stub work under construction, to build the nova driver upstream.

  The other big NVIDIA related one is nouveau adds support for
  Hopper/Blackwell GPUs, this required a new GSP firmware update to
  570.144, and a bunch of rework in order to support multiple fw
  interfaces.

  There is also the introduction of an asahi uapi header file as a
  precursor to getting the real driver in later, but to unblock
  userspace mesa packages while the driver is trapped behind rust
  enablement.

  Otherwise it's the usual mixture of stuff all over, amdgpu, i915/xe,
  and msm being the main ones, and some changes to vsprintf.

  new drivers:
   - bring in the asahi uapi header standalone
   - nova-drm: stub driver

  rust dependencies (for nova-core):
   - auxiliary
       - bus abstractions
       - driver registration
       - sample driver
   - devres changes from driver-core
   - revocable changes

  core:
   - add Apple fourcc modifiers
   - add virtio capset definitions
   - extend EXPORT_SYNC_FILE for timeline syncobjs
   - convert to devm_platform_ioremap_resource
   - refactor shmem helper page pinning
   - DP powerup/down link helpers
   - extended %p4cc in vsprintf.c to support fourcc prints
   - change vsprintf %p4cn to %p4chR, remove %p4cn
   - Add drm_file_err function
   - IN_FORMATS_ASYNC property
   - move sitronix from tiny to their own subdir

  rust:
   - add drm core infrastructure rust abstractions
     (device/driver, ioctl, file, gem)

  dma-buf:
   - adjust sg handling to not cache map on attach
   - allow setting dma-device for import
   - Add a helper to sort and deduplicate dma_fence arrays

  docs:
   - updated drm scheduler docs
   - fbdev todo update
   - fb rendering
   - actual brightness

  ttm:
   - fix delayed destroy resv object

  bridge:
   - add kunit tests
   - convert tc358775 to atomic
   - convert drivers to devm_drm_bridge_alloc
   - convert rk3066_hdmi to bridge driver

  scheduler:
   - add kunit tests

  panel:
   - refcount panels to improve lifetime handling
   - Powertip PH128800T004-ZZA01
   - NLT NL13676BC25-03F, Tianma TM070JDHG34-00
   - Himax HX8279/HX8279-D DDIC
   - Visionox G2647FB105
   - Sitronix ST7571
   - ZOTAC rotation quirk

  vkms:
   - allow attaching more displays

  i915:
   - xe3lpd display updates
   - vrr refactor
   - intel_display struct conversions
   - xe2hpd memory type identification
   - add link rate/count to i915_display_info
   - cleanup VGA plane handling
   - refactor HDCP GSC
   - fix SLPC wait boosting reference counting
   - add 20ms delay to engine reset
   - fix fence release on early probe errors

  xe:
   - SRIOV updates
   - BMG PCI ID update
   - support separate firmware for each GT
   - SVM fix, prelim SVM multi-device work
   - export fan speed
   - temp disable d3cold on BMG
   - backup VRAM in PM notifier instead of suspend/freeze
   - update xe_ttm_access_memory to use GPU for non-visible access
   - fix guc_info debugfs for VFs
   - use copy_from_user instead of __copy_from_user
   - append PCIe gen5 limitations to xe_firmware document

  amdgpu:
   - DSC cleanup
   - DC Scaling updates
   - Fused I2C-over-AUX updates
   - DMUB updates
   - Use drm_file_err in amdgpu
   - Enforce isolation updates
   - Use new dma_fence helpers
   - USERQ fixes
   - Documentation updates
   - SR-IOV updates
   - RAS updates
   - PSP 12 cleanups
   - GC 9.5 updates
   - SMU 13.x updates
   - VCN / JPEG SR-IOV updates

  amdkfd:
   - Update error messages for SDMA
   - Userptr updates
   - XNACK fixes

  radeon:
   - CIK doorbell cleanup

  nouveau:
   - add support for NVIDIA r570 GSP firmware
   - enable Hopper/Blackwell support

  nova-core:
   - fix task list
   - register definition infrastructure
   - move firmware into own rust module
   - register auxiliary device for nova-drm

  nova-drm:
   - initial driver skeleton

  msm:
   - GPU:
       - ACD (adaptive clock distribution) for X1-85
       - drop fictional address_space_size
       - improve GMU HFI response time out robustness
       - fix crash when throttling during boot
   - DPU:
       - use single CTL path for flushing on DPU 5.x+
       - improve SSPP allocation code for better sharing
       - Enabled SmartDMA on SM8150, SC8180X, SC8280XP, SM8550
       - Added SAR2130P support
       - Disabled DSC support on MSM8937, MSM8917, MSM8953, SDM660
   - DP:
       - switch to new audio helpers
       - better LTTPR handling
   - DSI:
       - Added support for SA8775P
       - Added SAR2130P support
   - HDMI:
       - Switched to use new helpers for ACR data
       - Fixed old standing issue of HPD not working in some cases

  amdxdna:
   - add dma-buf support
   - allow empty command submits

  renesas:
   - add dma-buf support
   - add zpos, alpha, blend support

  panthor:
   - fail properly for NO_MMAP bos
   - add SET_LABEL ioctl
   - debugfs BO dumping support

  imagination:
   - update DT bindings
   - support TI AM68 GPU

  hibmc:
   - improve interrupt handling and HPD support

  virtio:
   - add panic handler support

  rockchip:
   - add RK3588 support
   - add DP AUX bus panel support

  ivpu:
   - add heartbeat based hangcheck

  mediatek:
   - prepares support for MT8195/99 HDMIv2/DDCv2

  anx7625:
   - improve HPD

  tegra:
   - speed up firmware loading

* tag 'drm-next-2025-05-28' of https://gitlab.freedesktop.org/drm/kernel: (1627 commits)
  drm/nouveau/tegra: Fix error pointer vs NULL return in nvkm_device_tegra_resource_addr()
  drm/xe: Default auto_link_downgrade status to false
  drm/xe/guc: Make creation of SLPC debugfs files conditional
  drm/i915/display: Add check for alloc_ordered_workqueue() and alloc_workqueue()
  drm/i915/dp_mst: Work around Thunderbolt sink disconnect after SINK_COUNT_ESI read
  drm/i915/ptl: Use everywhere the correct DDI port clock select mask
  drm/nouveau/kms: add support for GB20x
  drm/dp: add option to disable zero sized address only transactions.
  drm/nouveau: add support for GB20x
  drm/nouveau/gsp: add hal for fifo.chan.doorbell_handle
  drm/nouveau: add support for GB10x
  drm/nouveau/gf100-: track chan progress with non-WFI semaphore release
  drm/nouveau/nv50-: separate CHANNEL_GPFIFO handling out from CHANNEL_DMA
  drm/nouveau: add helper functions for allocating pinned/cpu-mapped bos
  drm/nouveau: add support for GH100
  drm/nouveau: improve handling of 64-bit BARs
  drm/nouveau/gv100-: switch to volta semaphore methods
  drm/nouveau/gsp: support deeper page tables in COPY_SERVER_RESERVED_PDES
  drm/nouveau/gsp: init client VMMs with NV0080_CTRL_DMA_SET_PAGE_DIRECTORY
  drm/nouveau/gsp: fetch level shift and PDE from BAR2 VMM
  ...

39 files changed:
1  2 
Documentation/core-api/printk-formats.rst
Documentation/devicetree/bindings/vendor-prefixes.yaml
MAINTAINERS
drivers/gpu/drm/Makefile
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/pm/amdgpu_pm.c
drivers/gpu/drm/drm_drv.c
drivers/gpu/drm/drm_edid.c
drivers/gpu/drm/drm_gpusvm.c
drivers/gpu/drm/i915/Makefile
drivers/gpu/drm/i915/display/intel_dp_mst.c
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
drivers/gpu/drm/meson/meson_encoder_hdmi.c
drivers/gpu/drm/msm/msm_mdss.c
drivers/gpu/drm/ttm/tests/ttm_bo_test.c
drivers/gpu/drm/v3d/v3d_sched.c
drivers/gpu/drm/xe/instructions/xe_mi_commands.h
drivers/gpu/drm/xe/regs/xe_engine_regs.h
drivers/gpu/drm/xe/regs/xe_gt_regs.h
drivers/gpu/drm/xe/xe_device_types.h
drivers/gpu/drm/xe/xe_exec_queue.c
drivers/gpu/drm/xe/xe_guc_submit.c
drivers/gpu/drm/xe/xe_lrc.c
drivers/gpu/drm/xe/xe_mmio.c
drivers/gpu/drm/xe/xe_module.c
drivers/gpu/drm/xe/xe_pci.c
drivers/gpu/drm/xe/xe_pm.c
drivers/gpu/drm/xe/xe_pt.c
drivers/gpu/drm/xe/xe_svm.c
drivers/gpu/drm/xe/xe_svm.h
drivers/gpu/drm/xe/xe_wa.c
drivers/gpu/nova-core/gpu.rs
lib/vsprintf.c
rust/bindings/bindings_helper.h
rust/kernel/lib.rs
samples/rust/Kconfig
samples/rust/Makefile
scripts/checkpatch.pl

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 0482f26aa48033af10ede104717e25ec6e31114b,06c65dace0264ad9de2d1be96192afffd14b34eb..c8fa2c011666b1ed01373b5d6d09e3cc8bcb52bd
@@@ -330,10 -333,10 +333,12 @@@ struct xe_device 
                u8 has_sriov:1;
                /** @info.has_usm: Device has unified shared memory support */
                u8 has_usm:1;
 +              /** @info.has_64bit_timestamp: Device supports 64-bit timestamps */
 +              u8 has_64bit_timestamp:1;
                /** @info.is_dgfx: is discrete device */
                u8 is_dgfx:1;
+               /** @info.needs_scratch: needs scratch page for oob prefetch to work */
+               u8 needs_scratch:1;
                /**
                 * @info.probe_display: Probe display hardware.  If set to
                 * false, the driver will behave as if there is no display
Simple merge
Simple merge
index 03bfba696b3789ef5b5175361c469cf71580d96f,855c8acaf3f1e74d2c2fcbab75710384e9c344df..61a2e87990a9de62f04d0b35cc5709d9cc16ff56
@@@ -651,8 -654,6 +655,7 @@@ u32 xe_lrc_pphwsp_offset(struct xe_lrc 
  #define LRC_START_SEQNO_PPHWSP_OFFSET (LRC_SEQNO_PPHWSP_OFFSET + 8)
  #define LRC_CTX_JOB_TIMESTAMP_OFFSET (LRC_START_SEQNO_PPHWSP_OFFSET + 8)
  #define LRC_PARALLEL_PPHWSP_OFFSET 2048
- #define LRC_PPHWSP_SIZE SZ_4K
 +#define LRC_ENGINE_ID_PPHWSP_OFFSET 2096
  
  u32 xe_lrc_regs_offset(struct xe_lrc *lrc)
  {
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 975094c1a58279fc00c9d392e4b64e3ff6be97c8,d25f02c8d7fc7ca9d08ae4099924b7e54545c544..6345896585dec6a0db50e3e7904025e478f207e9
@@@ -654,18 -650,12 +659,19 @@@ void xe_svm_fini(struct xe_vm *vm
  }
  
  static bool xe_svm_range_is_valid(struct xe_svm_range *range,
 -                                struct xe_tile *tile)
 +                                struct xe_tile *tile,
 +                                bool devmem_only)
  {
 -      return (range->tile_present & ~range->tile_invalidated) & BIT(tile->id);
 +      /*
 +       * Advisory only check whether the range currently has a valid mapping,
 +       * READ_ONCE pairs with WRITE_ONCE in xe_pt.c
 +       */
 +      return ((READ_ONCE(range->tile_present) &
 +               ~READ_ONCE(range->tile_invalidated)) & BIT(tile->id)) &&
 +              (!devmem_only || xe_svm_range_in_vram(range));
  }
  
+ #if IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
  static struct xe_vram_region *tile_to_vr(struct xe_tile *tile)
  {
        return &tile->mem.vram;
@@@ -727,37 -717,15 +733,45 @@@ unlock
  
        return err;
  }
+ #else
+ static int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
+                            struct xe_svm_range *range,
+                            const struct drm_gpusvm_ctx *ctx)
+ {
+       return -EOPNOTSUPP;
+ }
+ #endif
  
 +static bool supports_4K_migration(struct xe_device *xe)
 +{
 +      if (xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K)
 +              return false;
 +
 +      return true;
 +}
 +
 +static bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range *range,
 +                                             struct xe_vma *vma)
 +{
 +      struct xe_vm *vm = range_to_vm(&range->base);
 +      u64 range_size = xe_svm_range_size(range);
 +
 +      if (!range->base.flags.migrate_devmem)
 +              return false;
 +
 +      if (xe_svm_range_in_vram(range)) {
 +              drm_dbg(&vm->xe->drm, "Range is already in VRAM\n");
 +              return false;
 +      }
 +
 +      if (range_size <= SZ_64K && !supports_4K_migration(vm->xe)) {
 +              drm_dbg(&vm->xe->drm, "Platform doesn't support SZ_4K range migration\n");
 +              return false;
 +      }
 +
 +      return true;
 +}
 +
  /**
   * xe_svm_handle_pagefault() - SVM handle page fault
   * @vm: The VM.
@@@ -790,7 -754,7 +804,8 @@@ int xe_svm_handle_pagefault(struct xe_v
        struct drm_gpusvm_range *r;
        struct drm_exec exec;
        struct dma_fence *fence;
 +      int migrate_try_count = ctx.devmem_only ? 3 : 1;
+       struct xe_tile *tile = gt_to_tile(gt);
        ktime_t end = 0;
        int err;
  
index fe58ac2f4baaca41cce4314d8e6b4d781b84661e,2881af1e60b23a6c61da2e59b674826606fe488d..30fc78b85b30f792b36b978486be7c0faa03758d
@@@ -36,9 -39,13 +39,8 @@@ struct xe_svm_range 
         * range. Protected by GPU SVM notifier lock.
         */
        u8 tile_invalidated;
 -      /**
 -       * @skip_migrate: Skip migration to VRAM, protected by GPU fault handler
 -       * locking.
 -       */
 -      u8 skip_migrate :1;
  };
  
- #if IS_ENABLED(CONFIG_DRM_GPUSVM)
  /**
   * xe_svm_range_pages_valid() - SVM range pages valid
   * @range: SVM range
Simple merge
Simple merge
diff --cc lib/vsprintf.c
Simple merge
Simple merge
Simple merge
Simple merge
index b3c9178d654afed5c9553b1b6fa91ae8736c316e,6a466afd2a21eba84a3b7b2be29f25dce44e9053..bd2faad63b4f3befe7d1ed5139fe25c7a8b6d7f6
@@@ -8,7 -8,7 +8,8 @@@ obj-$(CONFIG_SAMPLE_RUST_DMA)                    += rust
  obj-$(CONFIG_SAMPLE_RUST_DRIVER_PCI)          += rust_driver_pci.o
  obj-$(CONFIG_SAMPLE_RUST_DRIVER_PLATFORM)     += rust_driver_platform.o
  obj-$(CONFIG_SAMPLE_RUST_DRIVER_FAUX)         += rust_driver_faux.o
+ obj-$(CONFIG_SAMPLE_RUST_DRIVER_AUXILIARY)    += rust_driver_auxiliary.o
 +obj-$(CONFIG_SAMPLE_RUST_CONFIGFS)            += rust_configfs.o
  
  rust_print-y := rust_print_main.o rust_print_events.o
  
Simple merge