Commit 765e717d authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-misc-fixes-2026-05-07' of...

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

 into drm-fixes

Short summary of fixes pull:

bochs:
- fix managed cleanup

bridge:
- tda998x: fix sparse warnings on type correctness

etnaviv:
- schedule armed jobs

exynos:
- managed bridge cleanup

fb-helper:
- fix clipping

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

ttm:
- update GPU MM stats on pool shrinking

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

From: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patch.msgid.link/20260507115213.GA206508@linux.fritz.box
parents 22e170e9 b15838b0
Loading
Loading
Loading
Loading
+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:
+2 −2
Original line number Diff line number Diff line
@@ -1293,7 +1293,7 @@ static const struct drm_edid *tda998x_edid_read(struct tda998x_priv *priv,
	 * can't handle signals gracefully.
	 */
	if (tda998x_edid_delay_wait(priv))
		return 0;
		return NULL;

	if (priv->rev == TDA19988)
		reg_clear(priv, REG_TX4, TX4_PD_RAM);
@@ -1762,7 +1762,7 @@ static const struct drm_bridge_funcs tda998x_bridge_funcs = {
static int tda998x_get_audio_ports(struct tda998x_priv *priv,
				   struct device_node *np)
{
	const u32 *port_data;
	const __be32 *port_data;
	u32 size;
	int i;

+1 −1
Original line number Diff line number Diff line
@@ -490,7 +490,7 @@ static void drm_fb_helper_memory_range_to_clip(struct fb_info *info, off_t off,
		 * the number of horizontal pixels that need an update.
		 */
		off_t bit_off = (off % line_length) * 8;
		off_t bit_end = (end % line_length) * 8;
		off_t bit_end = bit_off + len * 8;

		x1 = bit_off / info->var.bits_per_pixel;
		x2 = DIV_ROUND_UP(bit_end, info->var.bits_per_pixel);
+9 −7
Original line number Diff line number Diff line
@@ -116,16 +116,18 @@ int etnaviv_sched_push_job(struct etnaviv_gem_submit *submit)
	 */
	mutex_lock(&gpu->sched_lock);

	ret = xa_alloc_cyclic(&gpu->user_fences, &submit->out_fence_id,
			      NULL, xa_limit_32b, &gpu->next_user_fence,
			      GFP_KERNEL);
	if (ret < 0)
		goto out_unlock;

	drm_sched_job_arm(&submit->sched_job);

	submit->out_fence = dma_fence_get(&submit->sched_job.s_fence->finished);
	ret = xa_alloc_cyclic(&gpu->user_fences, &submit->out_fence_id,
			      submit->out_fence, xa_limit_32b,
			      &gpu->next_user_fence, GFP_KERNEL);
	if (ret < 0) {
		drm_sched_job_cleanup(&submit->sched_job);
		goto out_unlock;
	}

	xa_store(&gpu->user_fences, submit->out_fence_id,
		 submit->out_fence, GFP_KERNEL);

	/* the scheduler holds on to the job now */
	kref_get(&submit->refcount);
Loading