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: eceae1472467 ("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
This commit is contained in:
parent
3a8844c298
commit
a3d15c4b0e
@ -3117,10 +3117,6 @@ int drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state,
|
||||
if (IS_ERR(topology_state))
|
||||
return PTR_ERR(topology_state);
|
||||
|
||||
port = drm_dp_mst_topology_get_port_validated(mgr, port);
|
||||
if (port == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
/* Find the current allocation for this port, if any */
|
||||
list_for_each_entry(pos, &topology_state->vcpis, next) {
|
||||
if (pos->port == port) {
|
||||
@ -3153,10 +3149,8 @@ int drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state,
|
||||
/* Add the new allocation to the state */
|
||||
if (!vcpi) {
|
||||
vcpi = kzalloc(sizeof(*vcpi), GFP_KERNEL);
|
||||
if (!vcpi) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
if (!vcpi)
|
||||
return -ENOMEM;
|
||||
|
||||
drm_dp_mst_get_port_malloc(port);
|
||||
vcpi->port = port;
|
||||
@ -3165,8 +3159,6 @@ int drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state,
|
||||
vcpi->vcpi = req_slots;
|
||||
|
||||
ret = req_slots;
|
||||
out:
|
||||
drm_dp_mst_topology_put_port(port);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_dp_atomic_find_vcpi_slots);
|
||||
|
@ -80,17 +80,12 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
|
||||
mst_pbn = drm_dp_calc_pbn_mode(adjusted_mode->crtc_clock, bpp);
|
||||
pipe_config->pbn = mst_pbn;
|
||||
|
||||
/* Zombie connectors can't have VCPI slots */
|
||||
if (!drm_connector_is_unregistered(connector)) {
|
||||
slots = drm_dp_atomic_find_vcpi_slots(state,
|
||||
&intel_dp->mst_mgr,
|
||||
port,
|
||||
mst_pbn);
|
||||
if (slots < 0) {
|
||||
DRM_DEBUG_KMS("failed finding vcpi slots:%d\n",
|
||||
slots);
|
||||
return slots;
|
||||
}
|
||||
slots = drm_dp_atomic_find_vcpi_slots(state, &intel_dp->mst_mgr, port,
|
||||
mst_pbn);
|
||||
if (slots < 0) {
|
||||
DRM_DEBUG_KMS("failed finding vcpi slots:%d\n",
|
||||
slots);
|
||||
return slots;
|
||||
}
|
||||
|
||||
intel_link_compute_m_n(bpp, lane_count,
|
||||
|
@ -771,8 +771,7 @@ nv50_msto_atomic_check(struct drm_encoder *encoder,
|
||||
mstc->pbn = drm_dp_calc_pbn_mode(crtc_state->adjusted_mode.clock,
|
||||
bpp);
|
||||
|
||||
if (drm_atomic_crtc_needs_modeset(crtc_state) &&
|
||||
!drm_connector_is_unregistered(connector)) {
|
||||
if (drm_atomic_crtc_needs_modeset(crtc_state)) {
|
||||
slots = drm_dp_atomic_find_vcpi_slots(state, &mstm->mgr,
|
||||
mstc->port, mstc->pbn);
|
||||
if (slots < 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user