Skip to content

Commit 37f332e

Browse files
committed
Merge tag 'drm-misc-fixes-2025-01-24' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
Short summary of fixes pull: bochs: - Fix double-free on driver removal client: - Improve support for tile-based modes - Fix fbdev Kconfig select rules xlnx: - zynqmp_dp: Add locking to DP-bridge enable helper Signed-off-by: Simona Vetter <simona.vetter@ffwll.ch> From: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20250124082932.GA13715@linux.fritz.box
2 parents 07c5b27 + 0a1ee19 commit 37f332e

File tree

5 files changed

+21
-9
lines changed

5 files changed

+21
-9
lines changed

drivers/gpu/drm/Kconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,7 @@ config DRM_TTM_HELPER
294294
tristate
295295
depends on DRM
296296
select DRM_TTM
297+
select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
297298
select FB_CORE if DRM_FBDEV_EMULATION
298299
select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
299300
help
@@ -302,6 +303,7 @@ config DRM_TTM_HELPER
302303
config DRM_GEM_DMA_HELPER
303304
tristate
304305
depends on DRM
306+
select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
305307
select FB_CORE if DRM_FBDEV_EMULATION
306308
select FB_DMAMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
307309
help
@@ -310,6 +312,7 @@ config DRM_GEM_DMA_HELPER
310312
config DRM_GEM_SHMEM_HELPER
311313
tristate
312314
depends on DRM && MMU
315+
select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
313316
select FB_CORE if DRM_FBDEV_EMULATION
314317
select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
315318
help

drivers/gpu/drm/drm_client_modeset.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,15 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
743743
if ((conn_configured & mask) != mask && conn_configured != conn_seq)
744744
goto retry;
745745

746+
for (i = 0; i < count; i++) {
747+
struct drm_connector *connector = connectors[i];
748+
749+
if (connector->has_tile)
750+
drm_client_get_tile_offsets(dev, connectors, connector_count,
751+
modes, offsets, i,
752+
connector->tile_h_loc, connector->tile_v_loc);
753+
}
754+
746755
/*
747756
* If the BIOS didn't enable everything it could, fall back to have the
748757
* same user experiencing of lighting up as much as possible like the

drivers/gpu/drm/drm_fb_helper.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1354,14 +1354,14 @@ int drm_fb_helper_set_par(struct fb_info *info)
13541354
}
13551355
EXPORT_SYMBOL(drm_fb_helper_set_par);
13561356

1357-
static void pan_set(struct drm_fb_helper *fb_helper, int x, int y)
1357+
static void pan_set(struct drm_fb_helper *fb_helper, int dx, int dy)
13581358
{
13591359
struct drm_mode_set *mode_set;
13601360

13611361
mutex_lock(&fb_helper->client.modeset_mutex);
13621362
drm_client_for_each_modeset(mode_set, &fb_helper->client) {
1363-
mode_set->x = x;
1364-
mode_set->y = y;
1363+
mode_set->x += dx;
1364+
mode_set->y += dy;
13651365
}
13661366
mutex_unlock(&fb_helper->client.modeset_mutex);
13671367
}
@@ -1370,16 +1370,18 @@ static int pan_display_atomic(struct fb_var_screeninfo *var,
13701370
struct fb_info *info)
13711371
{
13721372
struct drm_fb_helper *fb_helper = info->par;
1373-
int ret;
1373+
int ret, dx, dy;
13741374

1375-
pan_set(fb_helper, var->xoffset, var->yoffset);
1375+
dx = var->xoffset - info->var.xoffset;
1376+
dy = var->yoffset - info->var.yoffset;
1377+
pan_set(fb_helper, dx, dy);
13761378

13771379
ret = drm_client_modeset_commit_locked(&fb_helper->client);
13781380
if (!ret) {
13791381
info->var.xoffset = var->xoffset;
13801382
info->var.yoffset = var->yoffset;
13811383
} else
1382-
pan_set(fb_helper, info->var.xoffset, info->var.yoffset);
1384+
pan_set(fb_helper, -dx, -dy);
13831385

13841386
return ret;
13851387
}

drivers/gpu/drm/tiny/bochs.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -757,7 +757,6 @@ static void bochs_pci_remove(struct pci_dev *pdev)
757757

758758
drm_dev_unplug(dev);
759759
drm_atomic_helper_shutdown(dev);
760-
drm_dev_put(dev);
761760
}
762761

763762
static void bochs_pci_shutdown(struct pci_dev *pdev)

drivers/gpu/drm/xlnx/zynqmp_dp.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1564,7 +1564,7 @@ static void zynqmp_dp_bridge_atomic_enable(struct drm_bridge *bridge,
15641564

15651565
pm_runtime_get_sync(dp->dev);
15661566

1567-
mutex_lock(&dp->lock);
1567+
guard(mutex)(&dp->lock);
15681568
zynqmp_dp_disp_enable(dp, old_bridge_state);
15691569

15701570
/*
@@ -1624,7 +1624,6 @@ static void zynqmp_dp_bridge_atomic_enable(struct drm_bridge *bridge,
16241624
zynqmp_dp_write(dp, ZYNQMP_DP_SOFTWARE_RESET,
16251625
ZYNQMP_DP_SOFTWARE_RESET_ALL);
16261626
zynqmp_dp_write(dp, ZYNQMP_DP_MAIN_STREAM_ENABLE, 1);
1627-
mutex_unlock(&dp->lock);
16281627
}
16291628

16301629
static void zynqmp_dp_bridge_atomic_disable(struct drm_bridge *bridge,

0 commit comments

Comments
 (0)