Commit 3590b44b authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-misc-fixes-2022-07-07-1' of...

Merge tag 'drm-misc-fixes-2022-07-07-1' of ssh://git.freedesktop.org/git/drm/drm-misc

 into drm-fixes

Three mode setting fixes for fsl-ldb, a fbdev removal use-after-free fix,
a dma-buf fence use-after-free fix, a DMA setup fix for rockchip, an error
path fix and memory corruption fix for panfrost and one more orientation
quirk

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

From: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20220708054306.wr6jcfdunuypftbq@houat
parents 42e0a872 b68277f1
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -343,7 +343,7 @@ void dma_resv_replace_fences(struct dma_resv *obj, uint64_t context,
		if (old->context != context)
			continue;

		dma_resv_list_set(list, i, replacement, usage);
		dma_resv_list_set(list, i, dma_fence_get(replacement), usage);
		dma_fence_put(old);
	}
}
+2 −19
Original line number Diff line number Diff line
@@ -74,22 +74,6 @@ static int fsl_ldb_attach(struct drm_bridge *bridge,
				 bridge, flags);
}

static int fsl_ldb_atomic_check(struct drm_bridge *bridge,
				struct drm_bridge_state *bridge_state,
				struct drm_crtc_state *crtc_state,
				struct drm_connector_state *conn_state)
{
	/* Invert DE signal polarity. */
	bridge_state->input_bus_cfg.flags &= ~(DRM_BUS_FLAG_DE_LOW |
					       DRM_BUS_FLAG_DE_HIGH);
	if (bridge_state->output_bus_cfg.flags & DRM_BUS_FLAG_DE_LOW)
		bridge_state->input_bus_cfg.flags |= DRM_BUS_FLAG_DE_HIGH;
	else if (bridge_state->output_bus_cfg.flags & DRM_BUS_FLAG_DE_HIGH)
		bridge_state->input_bus_cfg.flags |= DRM_BUS_FLAG_DE_LOW;

	return 0;
}

static void fsl_ldb_atomic_enable(struct drm_bridge *bridge,
				  struct drm_bridge_state *old_bridge_state)
{
@@ -153,7 +137,7 @@ static void fsl_ldb_atomic_enable(struct drm_bridge *bridge,
	reg = LDB_CTRL_CH0_ENABLE;

	if (fsl_ldb->lvds_dual_link)
		reg |= LDB_CTRL_CH1_ENABLE;
		reg |= LDB_CTRL_CH1_ENABLE | LDB_CTRL_SPLIT_MODE;

	if (lvds_format_24bpp) {
		reg |= LDB_CTRL_CH0_DATA_WIDTH;
@@ -233,7 +217,7 @@ fsl_ldb_mode_valid(struct drm_bridge *bridge,
{
	struct fsl_ldb *fsl_ldb = to_fsl_ldb(bridge);

	if (mode->clock > (fsl_ldb->lvds_dual_link ? 80000 : 160000))
	if (mode->clock > (fsl_ldb->lvds_dual_link ? 160000 : 80000))
		return MODE_CLOCK_HIGH;

	return MODE_OK;
@@ -241,7 +225,6 @@ fsl_ldb_mode_valid(struct drm_bridge *bridge,

static const struct drm_bridge_funcs funcs = {
	.attach = fsl_ldb_attach,
	.atomic_check = fsl_ldb_atomic_check,
	.atomic_enable = fsl_ldb_atomic_enable,
	.atomic_disable = fsl_ldb_atomic_disable,
	.atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
+15 −0
Original line number Diff line number Diff line
@@ -286,6 +286,21 @@ static const struct dmi_system_id orientation_data[] = {
		  DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X9"),
		},
		.driver_data = (void *)&lcd1200x1920_rightside_up,
	}, {	/* Lenovo Yoga Tablet 2 830F / 830L */
		.matches = {
		 /*
		  * Note this also matches the Lenovo Yoga Tablet 2 1050F/L
		  * since that uses the same mainboard. The resolution match
		  * will limit this to only matching on the 830F/L. Neither has
		  * any external video outputs so those are not a concern.
		  */
		 DMI_MATCH(DMI_SYS_VENDOR, "Intel Corp."),
		 DMI_MATCH(DMI_PRODUCT_NAME, "VALLEYVIEW C0 PLATFORM"),
		 DMI_MATCH(DMI_BOARD_NAME, "BYT-T FFD8"),
		 /* Partial match on beginning of BIOS version */
		 DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21"),
		},
		.driver_data = (void *)&lcd1200x1920_rightside_up,
	}, {	/* OneGX1 Pro */
		.matches = {
		  DMI_EXACT_MATCH(DMI_SYS_VENDOR, "SYSTEM_MANUFACTURER"),
+2 −2
Original line number Diff line number Diff line
@@ -433,7 +433,7 @@ static int panfrost_ioctl_madvise(struct drm_device *dev, void *data,

	if (args->retained) {
		if (args->madv == PANFROST_MADV_DONTNEED)
			list_add_tail(&bo->base.madv_list,
			list_move_tail(&bo->base.madv_list,
				       &pfdev->shrinker_list);
		else if (args->madv == PANFROST_MADV_WILLNEED)
			list_del_init(&bo->base.madv_list);
+1 −1
Original line number Diff line number Diff line
@@ -518,7 +518,7 @@ static int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as,
err_pages:
	drm_gem_shmem_put_pages(&bo->base);
err_bo:
	drm_gem_object_put(&bo->base.base);
	panfrost_gem_mapping_put(bomapping);
	return ret;
}

Loading