mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
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 -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEchf7rIzpz2NEoWjlaA3BHVMLeiMFAmeTTyAACgkQaA3BHVML eiMM6wf9HhDTc+Rg8o3boXHj94KW9qvsNChs8iTs7J5dYtEbqvjkHqE7cUR7OcFZ A00XyoLoA5aZAl3t6AzRzuQzs83J5sE5j/U1MsYJfhODEh0d3FP2zcknFztVC06T jOp9OZxJHAsF9I4+pLDyg/vIn+x4OQb4JgJkstDESFIJ4UYMzpoLR66/Vt6ZutuB UPOTl2PntDJbpuhD4ofvfKInlUaCvVRjBJi3tg8ZogqGhQeWDAhSEzNq6CF8SmGZ fy59ep8p1yLR6cmbfi3ENjjYSSLh3km6A0QHNT01tl/jqIuTIjDxdjtYJjaiAem4 RLX7SWC1BWC/ctDPANuvC584rhI/+w== =psVJ -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
37f332ea1d
|
|
@ -294,6 +294,7 @@ config DRM_TTM_HELPER
|
|||
tristate
|
||||
depends on DRM
|
||||
select DRM_TTM
|
||||
select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
|
||||
select FB_CORE if DRM_FBDEV_EMULATION
|
||||
select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
|
||||
help
|
||||
|
|
@ -302,6 +303,7 @@ config DRM_TTM_HELPER
|
|||
config DRM_GEM_DMA_HELPER
|
||||
tristate
|
||||
depends on DRM
|
||||
select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
|
||||
select FB_CORE if DRM_FBDEV_EMULATION
|
||||
select FB_DMAMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
|
||||
help
|
||||
|
|
@ -310,6 +312,7 @@ config DRM_GEM_DMA_HELPER
|
|||
config DRM_GEM_SHMEM_HELPER
|
||||
tristate
|
||||
depends on DRM && MMU
|
||||
select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
|
||||
select FB_CORE if DRM_FBDEV_EMULATION
|
||||
select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
|
||||
help
|
||||
|
|
|
|||
|
|
@ -743,6 +743,15 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
|
|||
if ((conn_configured & mask) != mask && conn_configured != conn_seq)
|
||||
goto retry;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
struct drm_connector *connector = connectors[i];
|
||||
|
||||
if (connector->has_tile)
|
||||
drm_client_get_tile_offsets(dev, connectors, connector_count,
|
||||
modes, offsets, i,
|
||||
connector->tile_h_loc, connector->tile_v_loc);
|
||||
}
|
||||
|
||||
/*
|
||||
* If the BIOS didn't enable everything it could, fall back to have the
|
||||
* same user experiencing of lighting up as much as possible like the
|
||||
|
|
|
|||
|
|
@ -1354,14 +1354,14 @@ int drm_fb_helper_set_par(struct fb_info *info)
|
|||
}
|
||||
EXPORT_SYMBOL(drm_fb_helper_set_par);
|
||||
|
||||
static void pan_set(struct drm_fb_helper *fb_helper, int x, int y)
|
||||
static void pan_set(struct drm_fb_helper *fb_helper, int dx, int dy)
|
||||
{
|
||||
struct drm_mode_set *mode_set;
|
||||
|
||||
mutex_lock(&fb_helper->client.modeset_mutex);
|
||||
drm_client_for_each_modeset(mode_set, &fb_helper->client) {
|
||||
mode_set->x = x;
|
||||
mode_set->y = y;
|
||||
mode_set->x += dx;
|
||||
mode_set->y += dy;
|
||||
}
|
||||
mutex_unlock(&fb_helper->client.modeset_mutex);
|
||||
}
|
||||
|
|
@ -1370,16 +1370,18 @@ static int pan_display_atomic(struct fb_var_screeninfo *var,
|
|||
struct fb_info *info)
|
||||
{
|
||||
struct drm_fb_helper *fb_helper = info->par;
|
||||
int ret;
|
||||
int ret, dx, dy;
|
||||
|
||||
pan_set(fb_helper, var->xoffset, var->yoffset);
|
||||
dx = var->xoffset - info->var.xoffset;
|
||||
dy = var->yoffset - info->var.yoffset;
|
||||
pan_set(fb_helper, dx, dy);
|
||||
|
||||
ret = drm_client_modeset_commit_locked(&fb_helper->client);
|
||||
if (!ret) {
|
||||
info->var.xoffset = var->xoffset;
|
||||
info->var.yoffset = var->yoffset;
|
||||
} else
|
||||
pan_set(fb_helper, info->var.xoffset, info->var.yoffset);
|
||||
pan_set(fb_helper, -dx, -dy);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -757,7 +757,6 @@ static void bochs_pci_remove(struct pci_dev *pdev)
|
|||
|
||||
drm_dev_unplug(dev);
|
||||
drm_atomic_helper_shutdown(dev);
|
||||
drm_dev_put(dev);
|
||||
}
|
||||
|
||||
static void bochs_pci_shutdown(struct pci_dev *pdev)
|
||||
|
|
|
|||
|
|
@ -1564,7 +1564,7 @@ static void zynqmp_dp_bridge_atomic_enable(struct drm_bridge *bridge,
|
|||
|
||||
pm_runtime_get_sync(dp->dev);
|
||||
|
||||
mutex_lock(&dp->lock);
|
||||
guard(mutex)(&dp->lock);
|
||||
zynqmp_dp_disp_enable(dp, old_bridge_state);
|
||||
|
||||
/*
|
||||
|
|
@ -1624,7 +1624,6 @@ static void zynqmp_dp_bridge_atomic_enable(struct drm_bridge *bridge,
|
|||
zynqmp_dp_write(dp, ZYNQMP_DP_SOFTWARE_RESET,
|
||||
ZYNQMP_DP_SOFTWARE_RESET_ALL);
|
||||
zynqmp_dp_write(dp, ZYNQMP_DP_MAIN_STREAM_ENABLE, 1);
|
||||
mutex_unlock(&dp->lock);
|
||||
}
|
||||
|
||||
static void zynqmp_dp_bridge_atomic_disable(struct drm_bridge *bridge,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user