Skip to content

Commit a3d15c4

Browse files
committed
drm/dp_mst: Remove port validation in drm_dp_atomic_find_vcpi_slots()
Since we now have an easy way of refcounting drm_dp_mst_port structs and safely accessing their contents, there isn't any good reason to keep validating ports here. It doesn't prevent us from performing modesets on branch devices that have been removed either, and we already disallow enabling new displays on unregistered connectors in update_connector_routing() in drm_atomic_check_modeset(). All it does is cause us to have to make weird special exceptions in our atomic modesetting code. So, get rid of it entirely. Signed-off-by: Lyude Paul <lyude@redhat.com> Fixes: eceae14 ("drm/dp_mst: Start tracking per-port VCPI allocations") Reviewed-by: Daniel Vetter <daniel@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20190202002023.29665-3-lyude@redhat.com
1 parent 3a8844c commit a3d15c4

File tree

3 files changed

+9
-23
lines changed

3 files changed

+9
-23
lines changed

drivers/gpu/drm/drm_dp_mst_topology.c

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3117,10 +3117,6 @@ int drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state,
31173117
if (IS_ERR(topology_state))
31183118
return PTR_ERR(topology_state);
31193119

3120-
port = drm_dp_mst_topology_get_port_validated(mgr, port);
3121-
if (port == NULL)
3122-
return -EINVAL;
3123-
31243120
/* Find the current allocation for this port, if any */
31253121
list_for_each_entry(pos, &topology_state->vcpis, next) {
31263122
if (pos->port == port) {
@@ -3153,10 +3149,8 @@ int drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state,
31533149
/* Add the new allocation to the state */
31543150
if (!vcpi) {
31553151
vcpi = kzalloc(sizeof(*vcpi), GFP_KERNEL);
3156-
if (!vcpi) {
3157-
ret = -ENOMEM;
3158-
goto out;
3159-
}
3152+
if (!vcpi)
3153+
return -ENOMEM;
31603154

31613155
drm_dp_mst_get_port_malloc(port);
31623156
vcpi->port = port;
@@ -3165,8 +3159,6 @@ int drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state,
31653159
vcpi->vcpi = req_slots;
31663160

31673161
ret = req_slots;
3168-
out:
3169-
drm_dp_mst_topology_put_port(port);
31703162
return ret;
31713163
}
31723164
EXPORT_SYMBOL(drm_dp_atomic_find_vcpi_slots);

drivers/gpu/drm/i915/intel_dp_mst.c

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,12 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
8080
mst_pbn = drm_dp_calc_pbn_mode(adjusted_mode->crtc_clock, bpp);
8181
pipe_config->pbn = mst_pbn;
8282

83-
/* Zombie connectors can't have VCPI slots */
84-
if (!drm_connector_is_unregistered(connector)) {
85-
slots = drm_dp_atomic_find_vcpi_slots(state,
86-
&intel_dp->mst_mgr,
87-
port,
88-
mst_pbn);
89-
if (slots < 0) {
90-
DRM_DEBUG_KMS("failed finding vcpi slots:%d\n",
91-
slots);
92-
return slots;
93-
}
83+
slots = drm_dp_atomic_find_vcpi_slots(state, &intel_dp->mst_mgr, port,
84+
mst_pbn);
85+
if (slots < 0) {
86+
DRM_DEBUG_KMS("failed finding vcpi slots:%d\n",
87+
slots);
88+
return slots;
9489
}
9590

9691
intel_link_compute_m_n(bpp, lane_count,

drivers/gpu/drm/nouveau/dispnv50/disp.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -771,8 +771,7 @@ nv50_msto_atomic_check(struct drm_encoder *encoder,
771771
mstc->pbn = drm_dp_calc_pbn_mode(crtc_state->adjusted_mode.clock,
772772
bpp);
773773

774-
if (drm_atomic_crtc_needs_modeset(crtc_state) &&
775-
!drm_connector_is_unregistered(connector)) {
774+
if (drm_atomic_crtc_needs_modeset(crtc_state)) {
776775
slots = drm_dp_atomic_find_vcpi_slots(state, &mstm->mgr,
777776
mstc->port, mstc->pbn);
778777
if (slots < 0)

0 commit comments

Comments
 (0)