Commit 26df51ad authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'drm-fixes-2026-03-28-1' of https://gitlab.freedesktop.org/drm/kernel

Pull drm fixes from Dave Airlie:
 "Weekly fixes, still a bit busy, but the usual suspects amdgpu and
  i915/xe have a bunch of small fixes, and otherwise it's just a few
  minor driver fixes.

  loognsoon:
   - update MAINTAINERS

  shmem:
   - fault handler fix

  syncobj:
   - fix GFP flags

  amdgpu:
   - DSC fix
   - Module parameter parsing fix
   - PASID reuse fix
   - drm_edid leak fix
   - SMU 13.x fixes
   - SMU 14.x fix
   - Fence fix in amdgpu_amdkfd_submit_ib()
   - LVDS fixes
   - GPU page fault fix for non-4K pages

  amdkfd:
   - Ordering fix in kfd_ioctl_create_process()

  i915/display:
   - DP tunnel error handling fix
   - Spurious GMBUS timeout fix
   - Unlink NV12 planes earlier
   - Order OP vs. timeout correctly in __wait_for()

  xe:
   - Fix UAF in SRIOV migration restore
   - Updates to HW W/a
   - VMBind remap fix

  ivpu:
   - poweroff fix

  mediatek:
   - fix register ordering"

* tag 'drm-fixes-2026-03-28-1' of https://gitlab.freedesktop.org/drm/kernel: (25 commits)
  MAINTAINERS: Update GPU driver maintainer information
  drm/xe: always keep track of remap prev/next
  drm/syncobj: Fix xa_alloc allocation flags
  drm/amd/display: Fix DCE LVDS handling
  drm/amdgpu: Handle GPU page faults correctly on non-4K page systems
  drm/amd/pm: disable OD_FAN_CURVE if temp or pwm range invalid for smu v14
  drm/amdkfd: Fix NULL pointer check order in kfd_ioctl_create_process
  drm/amd/display: check if ext_caps is valid in BL setup
  drm/amdgpu: Fix fence put before wait in amdgpu_amdkfd_submit_ib
  drm/xe: Implement recent spec updates to Wa_16025250150
  accel/ivpu: Add disable clock relinquish workaround for NVL-A0
  drm/i915/dp_tunnel: Fix error handling when clearing stream BW in atomic state
  drm/amd/pm: disable OD_FAN_CURVE if temp or pwm range invalid for smu v13
  drm/amd/pm: Return -EOPNOTSUPP for unsupported OD_MCLK on smu_v13_0_6
  drm/amd/pm: Skip redundant UCLK restore in smu_v13_0_6
  drm/amd/display: Fix drm_edid leak in amdgpu_dm
  drm/amdgpu: prevent immediate PASID reuse case
  drm/amdgpu: fix strsep() corrupting lockup_timeout on multi-GPU (v3)
  drm/amd/display: Do not skip unrelated mode changes in DSC validation
  drm/xe/pf: Fix use-after-free in migration restore
  ...
parents 335c9017 5ba61d8a
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -8628,8 +8628,14 @@ F: drivers/gpu/drm/lima/
F:	include/uapi/drm/lima_drm.h
DRM DRIVERS FOR LOONGSON
M:	Jianmin Lv <lvjianmin@loongson.cn>
M:	Qianhai Wu <wuqianhai@loongson.cn>
R:	Huacai Chen <chenhuacai@kernel.org>
R:	Mingcong Bai <jeffbai@aosc.io>
R:	Xi Ruoyao <xry111@xry111.site>
R:	Icenowy Zheng <zhengxingda@iscas.ac.cn>
L:	dri-devel@lists.freedesktop.org
S:	Orphan
S:	Maintained
T:	git https://gitlab.freedesktop.org/drm/misc/kernel.git
F:	drivers/gpu/drm/loongson/
+1 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
#define IVPU_HW_IP_60XX 60

#define IVPU_HW_IP_REV_LNL_B0 4
#define IVPU_HW_IP_REV_NVL_A0 0

#define IVPU_HW_BTRS_MTL 1
#define IVPU_HW_BTRS_LNL 2
+4 −2
Original line number Diff line number Diff line
@@ -70,8 +70,10 @@ static void wa_init(struct ivpu_device *vdev)
	if (ivpu_hw_btrs_gen(vdev) == IVPU_HW_BTRS_MTL)
		vdev->wa.interrupt_clear_with_0 = ivpu_hw_btrs_irqs_clear_with_0_mtl(vdev);

	if (ivpu_device_id(vdev) == PCI_DEVICE_ID_LNL &&
	    ivpu_revision(vdev) < IVPU_HW_IP_REV_LNL_B0)
	if ((ivpu_device_id(vdev) == PCI_DEVICE_ID_LNL &&
	     ivpu_revision(vdev) < IVPU_HW_IP_REV_LNL_B0) ||
	    (ivpu_device_id(vdev) == PCI_DEVICE_ID_NVL &&
	     ivpu_revision(vdev) == IVPU_HW_IP_REV_NVL_A0))
		vdev->wa.disable_clock_relinquish = true;

	if (ivpu_test_mode & IVPU_TEST_MODE_CLK_RELINQ_ENABLE)
+2 −2
Original line number Diff line number Diff line
@@ -692,9 +692,9 @@ int amdgpu_amdkfd_submit_ib(struct amdgpu_device *adev,
		goto err_ib_sched;
	}

	/* Drop the initial kref_init count (see drm_sched_main as example) */
	dma_fence_put(f);
	ret = dma_fence_wait(f, false);
	/* Drop the returned fence reference after the wait completes */
	dma_fence_put(f);

err_ib_sched:
	amdgpu_job_free(job);
+11 −2
Original line number Diff line number Diff line
@@ -4207,7 +4207,8 @@ static void amdgpu_device_xgmi_reset_func(struct work_struct *__work)

static int amdgpu_device_get_job_timeout_settings(struct amdgpu_device *adev)
{
	char *input = amdgpu_lockup_timeout;
	char buf[AMDGPU_MAX_TIMEOUT_PARAM_LENGTH];
	char *input = buf;
	char *timeout_setting = NULL;
	int index = 0;
	long timeout;
@@ -4217,9 +4218,17 @@ static int amdgpu_device_get_job_timeout_settings(struct amdgpu_device *adev)
	adev->gfx_timeout = adev->compute_timeout = adev->sdma_timeout =
		adev->video_timeout = msecs_to_jiffies(2000);

	if (!strnlen(input, AMDGPU_MAX_TIMEOUT_PARAM_LENGTH))
	if (!strnlen(amdgpu_lockup_timeout, AMDGPU_MAX_TIMEOUT_PARAM_LENGTH))
		return 0;

	/*
	 * strsep() destructively modifies its input by replacing delimiters
	 * with '\0'. Use a stack copy so the global module parameter buffer
	 * remains intact for multi-GPU systems where this function is called
	 * once per device.
	 */
	strscpy(buf, amdgpu_lockup_timeout, sizeof(buf));

	while ((timeout_setting = strsep(&input, ",")) &&
	       strnlen(timeout_setting, AMDGPU_MAX_TIMEOUT_PARAM_LENGTH)) {
		ret = kstrtol(timeout_setting, 0, &timeout);
Loading