Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'drm-misc-next-fixes-2024-05-23' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next

drm-misc-next-fixes for v6.10-rc1:
- MST null deref fix.
- Don't let next bridge create connector in adv7511 to make probe work.

Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/f171b14a-ed6b-4124-893b-802a336dbe2b@linux.intel.com

+6 -8
+1 -1
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
··· 363 363 mst_state = to_drm_dp_mst_topology_state(mst_mgr->base.state); 364 364 new_payload = drm_atomic_get_mst_payload_state(mst_state, aconnector->mst_output_port); 365 365 366 - ret = drm_dp_add_payload_part2(mst_mgr, mst_state->base.state, new_payload); 366 + ret = drm_dp_add_payload_part2(mst_mgr, new_payload); 367 367 368 368 if (ret) { 369 369 amdgpu_dm_set_mst_status(&aconnector->mst_status,
+2 -1
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
··· 953 953 int ret = 0; 954 954 955 955 if (adv->next_bridge) { 956 - ret = drm_bridge_attach(bridge->encoder, adv->next_bridge, bridge, flags); 956 + ret = drm_bridge_attach(bridge->encoder, adv->next_bridge, bridge, 957 + flags | DRM_BRIDGE_ATTACH_NO_CONNECTOR); 957 958 if (ret) 958 959 return ret; 959 960 }
+1 -3
drivers/gpu/drm/display/drm_dp_mst_topology.c
··· 3421 3421 /** 3422 3422 * drm_dp_add_payload_part2() - Execute payload update part 2 3423 3423 * @mgr: Manager to use. 3424 - * @state: The global atomic state 3425 3424 * @payload: The payload to update 3426 3425 * 3427 3426 * If @payload was successfully assigned a starting time slot by drm_dp_add_payload_part1(), this ··· 3429 3430 * Returns: 0 on success, negative error code on failure. 3430 3431 */ 3431 3432 int drm_dp_add_payload_part2(struct drm_dp_mst_topology_mgr *mgr, 3432 - struct drm_atomic_state *state, 3433 3433 struct drm_dp_mst_atomic_payload *payload) 3434 3434 { 3435 3435 int ret = 0; 3436 3436 3437 3437 /* Skip failed payloads */ 3438 3438 if (payload->payload_allocation_status != DRM_DP_MST_PAYLOAD_ALLOCATION_DFP) { 3439 - drm_dbg_kms(state->dev, "Part 1 of payload creation for %s failed, skipping part 2\n", 3439 + drm_dbg_kms(mgr->dev, "Part 1 of payload creation for %s failed, skipping part 2\n", 3440 3440 payload->port->connector->name); 3441 3441 return -EIO; 3442 3442 }
+1 -1
drivers/gpu/drm/i915/display/intel_dp_mst.c
··· 1241 1241 if (first_mst_stream) 1242 1242 intel_ddi_wait_for_fec_status(encoder, pipe_config, true); 1243 1243 1244 - drm_dp_add_payload_part2(&intel_dp->mst_mgr, &state->base, 1244 + drm_dp_add_payload_part2(&intel_dp->mst_mgr, 1245 1245 drm_atomic_get_mst_payload_state(mst_state, connector->port)); 1246 1246 1247 1247 if (DISPLAY_VER(dev_priv) >= 12)
+1 -1
drivers/gpu/drm/nouveau/dispnv50/disp.c
··· 915 915 msto->disabled = false; 916 916 drm_dp_remove_payload_part2(mgr, new_mst_state, old_payload, new_payload); 917 917 } else if (msto->enabled) { 918 - drm_dp_add_payload_part2(mgr, state, new_payload); 918 + drm_dp_add_payload_part2(mgr, new_payload); 919 919 msto->enabled = false; 920 920 } 921 921 }
-1
include/drm/display/drm_dp_mst_helper.h
··· 871 871 struct drm_dp_mst_topology_state *mst_state, 872 872 struct drm_dp_mst_atomic_payload *payload); 873 873 int drm_dp_add_payload_part2(struct drm_dp_mst_topology_mgr *mgr, 874 - struct drm_atomic_state *state, 875 874 struct drm_dp_mst_atomic_payload *payload); 876 875 void drm_dp_remove_payload_part1(struct drm_dp_mst_topology_mgr *mgr, 877 876 struct drm_dp_mst_topology_state *mst_state,