Commit 51d24842 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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

Pull drm fixes from Dave Airlie:
 "Weekly fixes, lots of them but all pretty small, amdgpu and xe are the
  usual but then a large amount of fixes all over.

  core:
   - fix race condition in handle change ioctl

  fb-helper:
   - fix clipping

  rust:
   - fix unsound initialization
   - fix GEM state cleanup
   - fix wrong ARef import

  ttm:
   - update GPU MM stats on pool shrinking

  i915:
   - Re-enable ccs modifiers on dg2

  nova:
   - fix mailing list

  xe:
   - Add NULL check for media_gt in intel_hdcp_gsc_check_status
   - Fix EAGAIN sign in pf_migration_consume
   - Fix MMIO access using PF view instead of VF view during migration
   - Exclude indirect ring state page from ADS engine state size

  amdgpu:
   - GFX9 fixes
   - Hawaii SMU fixes
   - SDMA4 fix
   - GART fix
   - Userq fixes

  amdkfd:
   - GPUVM TLB flush fix
   - Hotplug fix

  radeon:
   - Hawaii SMU fixes

  bochs:
   - fix managed cleanup

  bridge:
   - tda998x: fix sparse warnings on type correctness

  etnaviv:
   - schedule armed jobs

  exynos:
   - managed bridge cleanup

  ivpu:
   - disallow reexport of GEM buffer objects

  noveau:
   - revert support for GA100

  panel:
   - boe-tv101wum-nl16: use correct MIPI_DSI mode
   - feyjang-fy07024di26a30d: fix error reporting
   - himax-hx83102: use correct MIPI_DSI mode
   - himax-hx83121a: fix error checks
   - himax-hx83121a: select DRM_DISPLAY_DSC_HELPER

  qaic:
   - fix RAS message handling

  qxl:
   - clean up polling

  sti:
   - managed bridge cleanup

* tag 'drm-fixes-2026-05-08-1' of https://gitlab.freedesktop.org/drm/kernel: (37 commits)
  drm: Set old handle to NULL before prime swap in change_handle
  drm/bochs: Drop manual put on probe error path
  drm/xe/guc: Exclude indirect ring state page from ADS engine state size
  drm/xe/pf: Fix MMIO access using PF view instead of VF view during migration
  drm/xe/pf: Fix EAGAIN sign in pf_migration_consume()
  drm/xe/hdcp: Add NULL check for media_gt in intel_hdcp_gsc_check_status()
  drm/exynos: remove bridge when component_add fails
  drm/amdgpu: nuke amdgpu_userq_fence_slab v2
  drm/amdgpu/userq: fix access to stale wptr mapping
  drm/amdkfd: Check if there are kfd porcesses using adev by kfd_processes_count
  drm/amdgpu: zero-initialize GART table on allocation
  drm/amdgpu/sdma4: replace BUG_ON with WARN_ON in fence emission
  drm/radeon: add missing revision check for CI
  drm/amdgpu/pm: align Hawaii mclk workaround with radeon
  drm/amdgpu/pm: add missing revision check for CI
  drm/amdgpu/gfx9: drop unnecessary 64-bit fence flag check in KIQ
  drm/amdkfd: Make all TLB-flushes heavy-weight
  drm/panel: himax-hx83102: restore MODE_LPM after sending disable cmds
  drm/panel: boe-tv101wum-nl6: restore MODE_LPM after sending disable cmds
  drm/panel: feiyang-fy07024di26a30d: return display-on error
  ...
parents fa7431eb 5e28b7b9
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -8199,10 +8199,9 @@ F: include/uapi/drm/nouveau_drm.h
CORE DRIVER FOR NVIDIA GPUS [RUST]
M:	Danilo Krummrich <dakr@kernel.org>
M:	Alexandre Courbot <acourbot@nvidia.com>
L:	nouveau@lists.freedesktop.org
L:	nova-gpu@lists.linux.dev
S:	Supported
W:	https://rust-for-linux.com/nova-gpu-driver
Q:	https://patchwork.freedesktop.org/project/nouveau/
B:	https://gitlab.freedesktop.org/drm/nova/-/issues
C:	irc://irc.oftc.net/nouveau
T:	git https://gitlab.freedesktop.org/drm/rust/kernel.git drm-rust-next
@@ -8211,10 +8210,9 @@ F: drivers/gpu/nova-core/
DRM DRIVER FOR NVIDIA GPUS [RUST]
M:	Danilo Krummrich <dakr@kernel.org>
L:	nouveau@lists.freedesktop.org
L:	nova-gpu@lists.linux.dev
S:	Supported
W:	https://rust-for-linux.com/nova-gpu-driver
Q:	https://patchwork.freedesktop.org/project/nouveau/
B:	https://gitlab.freedesktop.org/drm/nova/-/issues
C:	irc://irc.oftc.net/nouveau
T:	git https://gitlab.freedesktop.org/drm/rust/kernel.git drm-rust-next
+21 −0
Original line number Diff line number Diff line
@@ -537,6 +537,26 @@ static const struct file_operations ivpu_fops = {
#endif
};

static int ivpu_gem_prime_handle_to_fd(struct drm_device *dev, struct drm_file *file_priv,
				       u32 handle, u32 flags, int *prime_fd)
{
	struct drm_gem_object *obj;

	obj = drm_gem_object_lookup(file_priv, handle);
	if (!obj)
		return -ENOENT;

	if (drm_gem_is_imported(obj)) {
		/* Do not allow re-exporting */
		drm_gem_object_put(obj);
		return -EOPNOTSUPP;
	}

	drm_gem_object_put(obj);

	return drm_gem_prime_handle_to_fd(dev, file_priv, handle, flags, prime_fd);
}

static const struct drm_driver driver = {
	.driver_features = DRIVER_GEM | DRIVER_COMPUTE_ACCEL,

@@ -545,6 +565,7 @@ static const struct drm_driver driver = {

	.gem_create_object = ivpu_gem_create_object,
	.gem_prime_import = ivpu_gem_prime_import,
	.prime_handle_to_fd = ivpu_gem_prime_handle_to_fd,

	.ioctls = ivpu_drm_ioctls,
	.num_ioctls = ARRAY_SIZE(ivpu_drm_ioctls),
+2 −2
Original line number Diff line number Diff line
@@ -497,11 +497,11 @@ static void decode_ras_msg(struct qaic_device *qdev, struct ras_data *msg)
			qdev->ce_count++;
		break;
	case UE:
		if (qdev->ce_count != UINT_MAX)
		if (qdev->ue_count != UINT_MAX)
			qdev->ue_count++;
		break;
	case UE_NF:
		if (qdev->ce_count != UINT_MAX)
		if (qdev->ue_nf_count != UINT_MAX)
			qdev->ue_nf_count++;
		break;
	default:
+3 −10
Original line number Diff line number Diff line
@@ -3149,11 +3149,7 @@ static int __init amdgpu_init(void)

	r = amdgpu_sync_init();
	if (r)
		goto error_sync;

	r = amdgpu_userq_fence_slab_init();
	if (r)
		goto error_fence;
		return r;

	amdgpu_register_atpx_handler();
	amdgpu_acpi_detect();
@@ -3161,7 +3157,7 @@ static int __init amdgpu_init(void)
	/* Ignore KFD init failures when CONFIG_HSA_AMD is not set. */
	r = amdgpu_amdkfd_init();
	if (r && r != -ENOENT)
		goto error_fence;
		goto error_fini_sync;

	if (amdgpu_pp_feature_mask & PP_OVERDRIVE_MASK) {
		add_taint(TAINT_CPU_OUT_OF_SPEC, LOCKDEP_STILL_OK);
@@ -3172,10 +3168,8 @@ static int __init amdgpu_init(void)
	/* let modprobe override vga console setting */
	return pci_register_driver(&amdgpu_kms_pci_driver);

error_fence:
error_fini_sync:
	amdgpu_sync_fini();

error_sync:
	return r;
}

@@ -3186,7 +3180,6 @@ static void __exit amdgpu_exit(void)
	amdgpu_unregister_atpx_handler();
	amdgpu_acpi_release();
	amdgpu_sync_fini();
	amdgpu_userq_fence_slab_fini();
	mmu_notifier_synchronize();
	amdgpu_xcp_drv_release();
}
+10 −3
Original line number Diff line number Diff line
@@ -262,12 +262,19 @@ void amdgpu_gart_table_ram_free(struct amdgpu_device *adev)
 */
int amdgpu_gart_table_vram_alloc(struct amdgpu_device *adev)
{
	int r;

	if (adev->gart.bo != NULL)
		return 0;

	return amdgpu_bo_create_kernel(adev,  adev->gart.table_size, PAGE_SIZE,
	r = amdgpu_bo_create_kernel(adev,  adev->gart.table_size, PAGE_SIZE,
				    AMDGPU_GEM_DOMAIN_VRAM, &adev->gart.bo,
				    NULL, (void *)&adev->gart.ptr);
	if (r)
		return r;

	memset_io(adev->gart.ptr, adev->gart.gart_pte_flags, adev->gart.table_size);
	return 0;
}

/**
Loading