Message ID | 20191123091840.32382-1-uma.shankar@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Revert "drm/fbdev: Fallback to non tiled mode if all tiles not present" | expand |
On Sat, 23 Nov 2019, Uma Shankar <uma.shankar@intel.com> wrote: > This reverts commit f25c7a006cd1c07254780e3406e45cee4842b933. > > 2p2c display configuration blows up dmesg when one connector is > disconnected, causing issues in CI. > > Below are the sample errors thrown in logs: > > [IGT] core_getversion: executing > [IGT] core_getversion: exiting, ret=0 > Setting dangerous option reset - tainting kernel > drm:drm_atomic_helper_wait_for_dependencies] ERROR [CRTC:152:pipe B] flip_done timed out > drm:drm_atomic_helper_wait_for_dependencies] ERROR [CONNECTOR:299:DP-2] flip_done timed out > drm:drm_atomic_helper_wait_for_dependencies] ERROR [PLANE:92:plane 1B] flip_done timed out > [drm:drm_atomic_helper_wait_for_flip_done] ERROR [CRTC:152:pipe B] flip_done timed out > [drm:drm_atomic_helper_wait_for_dependencies] ERROR [CRTC:152:pipe B] flip_done timed out > [drm:drm_atomic_helper_wait_for_dependencies] ERROR [CONNECTOR:299:DP-2] flip_done timed out > [drm:drm_atomic_helper_wait_for_dependencies] ERROR [PLANE:92:plane 1B] flip_done timed out > [drm:drm_atomic_helper_wait_for_flip_done] ERROR [CRTC:152:pipe B] flip_done timed out > Console: switching to colour frame buffer device 480x135 > [drm:drm_atomic_helper_wait_for_dependencies] ERROR [CRTC:152:pipe B] flip_done timed out > [drm:drm_atomic_helper_wait_for_dependencies] ERROR [CONNECTOR:299:DP-2] flip_done timed out > > Reverting the change for now to unblock CI execution. > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: Jani Nikula <jani.nikula@intel.com> > Cc: Manasi Navare <manasi.d.navare@intel.com> > Signed-off-by: Uma Shankar <uma.shankar@intel.com> Pushed to drm-misc-next with Daniel's irc ack. Thanks for the revert. Back to the drawing board. I was about to add the Bugzilla: reference, but this being a gitlab issue instead, I opted for the gitlab Closes: tag: Closes: https://gitlab.freedesktop.org/drm/intel/issues/6 We should probably align on what we want to use going forward. And do we want to keep using Bugzilla for bugzilla bugs? BR, Jani. > --- > drivers/gpu/drm/drm_client_modeset.c | 70 ---------------------------- > 1 file changed, 70 deletions(-) > > diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c > index f2150a0bac4c..895b73f23079 100644 > --- a/drivers/gpu/drm/drm_client_modeset.c > +++ b/drivers/gpu/drm/drm_client_modeset.c > @@ -114,33 +114,6 @@ drm_client_find_modeset(struct drm_client_dev *client, struct drm_crtc *crtc) > return NULL; > } > > -static struct drm_display_mode * > -drm_connector_get_tiled_mode(struct drm_connector *connector) > -{ > - struct drm_display_mode *mode; > - > - list_for_each_entry(mode, &connector->modes, head) { > - if (mode->hdisplay == connector->tile_h_size && > - mode->vdisplay == connector->tile_v_size) > - return mode; > - } > - return NULL; > -} > - > -static struct drm_display_mode * > -drm_connector_fallback_non_tiled_mode(struct drm_connector *connector) > -{ > - struct drm_display_mode *mode; > - > - list_for_each_entry(mode, &connector->modes, head) { > - if (mode->hdisplay == connector->tile_h_size && > - mode->vdisplay == connector->tile_v_size) > - continue; > - return mode; > - } > - return NULL; > -} > - > static struct drm_display_mode * > drm_connector_has_preferred_mode(struct drm_connector *connector, int width, int height) > { > @@ -375,14 +348,8 @@ static bool drm_client_target_preferred(struct drm_connector **connectors, > struct drm_connector *connector; > u64 conn_configured = 0; > int tile_pass = 0; > - int num_tiled_conns = 0; > int i; > > - for (i = 0; i < connector_count; i++) { > - if (connectors[i]->has_tile) > - num_tiled_conns++; > - } > - > retry: > for (i = 0; i < connector_count; i++) { > connector = connectors[i]; > @@ -432,28 +399,6 @@ static bool drm_client_target_preferred(struct drm_connector **connectors, > list_for_each_entry(modes[i], &connector->modes, head) > break; > } > - /* > - * In case of tiled mode if all tiles not present fallback to > - * first available non tiled mode. > - * After all tiles are present, try to find the tiled mode > - * for all and if tiled mode not present due to fbcon size > - * limitations, use first non tiled mode only for > - * tile 0,0 and set to no mode for all other tiles. > - */ > - if (connector->has_tile) { > - if (num_tiled_conns < > - connector->num_h_tile * connector->num_v_tile || > - (connector->tile_h_loc == 0 && > - connector->tile_v_loc == 0 && > - !drm_connector_get_tiled_mode(connector))) { > - DRM_DEBUG_KMS("Falling back to non tiled mode on Connector %d\n", > - connector->base.id); > - modes[i] = drm_connector_fallback_non_tiled_mode(connector); > - } else { > - modes[i] = drm_connector_get_tiled_mode(connector); > - } > - } > - > DRM_DEBUG_KMS("found mode %s\n", modes[i] ? modes[i]->name : > "none"); > conn_configured |= BIT_ULL(i); > @@ -570,7 +515,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, > bool fallback = true, ret = true; > int num_connectors_enabled = 0; > int num_connectors_detected = 0; > - int num_tiled_conns = 0; > struct drm_modeset_acquire_ctx ctx; > > if (!drm_drv_uses_atomic_modeset(dev)) > @@ -588,10 +532,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, > memcpy(save_enabled, enabled, count); > mask = GENMASK(count - 1, 0); > conn_configured = 0; > - for (i = 0; i < count; i++) { > - if (connectors[i]->has_tile) > - num_tiled_conns++; > - } > retry: > conn_seq = conn_configured; > for (i = 0; i < count; i++) { > @@ -691,16 +631,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, > connector->name); > modes[i] = &connector->state->crtc->mode; > } > - /* > - * In case of tiled modes, if all tiles are not present > - * then fallback to a non tiled mode. > - */ > - if (connector->has_tile && > - num_tiled_conns < connector->num_h_tile * connector->num_v_tile) { > - DRM_DEBUG_KMS("Falling back to non tiled mode on Connector %d\n", > - connector->base.id); > - modes[i] = drm_connector_fallback_non_tiled_mode(connector); > - } > crtcs[i] = new_crtc; > > DRM_DEBUG_KMS("connector %s on [CRTC:%d:%s]: %dx%d%s\n",
On Mon, Nov 25, 2019 at 05:07:26PM +0200, Jani Nikula wrote: > On Sat, 23 Nov 2019, Uma Shankar <uma.shankar@intel.com> wrote: > > This reverts commit f25c7a006cd1c07254780e3406e45cee4842b933. > > > > 2p2c display configuration blows up dmesg when one connector is > > disconnected, causing issues in CI. > > > > Below are the sample errors thrown in logs: > > > > [IGT] core_getversion: executing > > [IGT] core_getversion: exiting, ret=0 > > Setting dangerous option reset - tainting kernel > > drm:drm_atomic_helper_wait_for_dependencies] ERROR [CRTC:152:pipe B] flip_done timed out > > drm:drm_atomic_helper_wait_for_dependencies] ERROR [CONNECTOR:299:DP-2] flip_done timed out > > drm:drm_atomic_helper_wait_for_dependencies] ERROR [PLANE:92:plane 1B] flip_done timed out > > [drm:drm_atomic_helper_wait_for_flip_done] ERROR [CRTC:152:pipe B] flip_done timed out > > [drm:drm_atomic_helper_wait_for_dependencies] ERROR [CRTC:152:pipe B] flip_done timed out > > [drm:drm_atomic_helper_wait_for_dependencies] ERROR [CONNECTOR:299:DP-2] flip_done timed out > > [drm:drm_atomic_helper_wait_for_dependencies] ERROR [PLANE:92:plane 1B] flip_done timed out > > [drm:drm_atomic_helper_wait_for_flip_done] ERROR [CRTC:152:pipe B] flip_done timed out > > Console: switching to colour frame buffer device 480x135 > > [drm:drm_atomic_helper_wait_for_dependencies] ERROR [CRTC:152:pipe B] flip_done timed out > > [drm:drm_atomic_helper_wait_for_dependencies] ERROR [CONNECTOR:299:DP-2] flip_done timed out > > > > Reverting the change for now to unblock CI execution. > > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Cc: Dave Airlie <airlied@redhat.com> > > Cc: Jani Nikula <jani.nikula@intel.com> > > Cc: Manasi Navare <manasi.d.navare@intel.com> > > Signed-off-by: Uma Shankar <uma.shankar@intel.com> > > Pushed to drm-misc-next with Daniel's irc ack. Thanks for the > revert. Back to the drawing board. > > I was about to add the Bugzilla: reference, but this being a gitlab > issue instead, I opted for the gitlab Closes: tag: > > Closes: https://gitlab.freedesktop.org/drm/intel/issues/6 > > We should probably align on what we want to use going forward. And do we > want to keep using Bugzilla for bugzilla bugs? I guess we could/should have that discussion once we have the git repos on gitlab too. Right now I don't think the above does anything ... Aside from that I think this makes sense. -Daniel > > BR, > Jani. > > > > --- > > drivers/gpu/drm/drm_client_modeset.c | 70 ---------------------------- > > 1 file changed, 70 deletions(-) > > > > diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c > > index f2150a0bac4c..895b73f23079 100644 > > --- a/drivers/gpu/drm/drm_client_modeset.c > > +++ b/drivers/gpu/drm/drm_client_modeset.c > > @@ -114,33 +114,6 @@ drm_client_find_modeset(struct drm_client_dev *client, struct drm_crtc *crtc) > > return NULL; > > } > > > > -static struct drm_display_mode * > > -drm_connector_get_tiled_mode(struct drm_connector *connector) > > -{ > > - struct drm_display_mode *mode; > > - > > - list_for_each_entry(mode, &connector->modes, head) { > > - if (mode->hdisplay == connector->tile_h_size && > > - mode->vdisplay == connector->tile_v_size) > > - return mode; > > - } > > - return NULL; > > -} > > - > > -static struct drm_display_mode * > > -drm_connector_fallback_non_tiled_mode(struct drm_connector *connector) > > -{ > > - struct drm_display_mode *mode; > > - > > - list_for_each_entry(mode, &connector->modes, head) { > > - if (mode->hdisplay == connector->tile_h_size && > > - mode->vdisplay == connector->tile_v_size) > > - continue; > > - return mode; > > - } > > - return NULL; > > -} > > - > > static struct drm_display_mode * > > drm_connector_has_preferred_mode(struct drm_connector *connector, int width, int height) > > { > > @@ -375,14 +348,8 @@ static bool drm_client_target_preferred(struct drm_connector **connectors, > > struct drm_connector *connector; > > u64 conn_configured = 0; > > int tile_pass = 0; > > - int num_tiled_conns = 0; > > int i; > > > > - for (i = 0; i < connector_count; i++) { > > - if (connectors[i]->has_tile) > > - num_tiled_conns++; > > - } > > - > > retry: > > for (i = 0; i < connector_count; i++) { > > connector = connectors[i]; > > @@ -432,28 +399,6 @@ static bool drm_client_target_preferred(struct drm_connector **connectors, > > list_for_each_entry(modes[i], &connector->modes, head) > > break; > > } > > - /* > > - * In case of tiled mode if all tiles not present fallback to > > - * first available non tiled mode. > > - * After all tiles are present, try to find the tiled mode > > - * for all and if tiled mode not present due to fbcon size > > - * limitations, use first non tiled mode only for > > - * tile 0,0 and set to no mode for all other tiles. > > - */ > > - if (connector->has_tile) { > > - if (num_tiled_conns < > > - connector->num_h_tile * connector->num_v_tile || > > - (connector->tile_h_loc == 0 && > > - connector->tile_v_loc == 0 && > > - !drm_connector_get_tiled_mode(connector))) { > > - DRM_DEBUG_KMS("Falling back to non tiled mode on Connector %d\n", > > - connector->base.id); > > - modes[i] = drm_connector_fallback_non_tiled_mode(connector); > > - } else { > > - modes[i] = drm_connector_get_tiled_mode(connector); > > - } > > - } > > - > > DRM_DEBUG_KMS("found mode %s\n", modes[i] ? modes[i]->name : > > "none"); > > conn_configured |= BIT_ULL(i); > > @@ -570,7 +515,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, > > bool fallback = true, ret = true; > > int num_connectors_enabled = 0; > > int num_connectors_detected = 0; > > - int num_tiled_conns = 0; > > struct drm_modeset_acquire_ctx ctx; > > > > if (!drm_drv_uses_atomic_modeset(dev)) > > @@ -588,10 +532,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, > > memcpy(save_enabled, enabled, count); > > mask = GENMASK(count - 1, 0); > > conn_configured = 0; > > - for (i = 0; i < count; i++) { > > - if (connectors[i]->has_tile) > > - num_tiled_conns++; > > - } > > retry: > > conn_seq = conn_configured; > > for (i = 0; i < count; i++) { > > @@ -691,16 +631,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, > > connector->name); > > modes[i] = &connector->state->crtc->mode; > > } > > - /* > > - * In case of tiled modes, if all tiles are not present > > - * then fallback to a non tiled mode. > > - */ > > - if (connector->has_tile && > > - num_tiled_conns < connector->num_h_tile * connector->num_v_tile) { > > - DRM_DEBUG_KMS("Falling back to non tiled mode on Connector %d\n", > > - connector->base.id); > > - modes[i] = drm_connector_fallback_non_tiled_mode(connector); > > - } > > crtcs[i] = new_crtc; > > > > DRM_DEBUG_KMS("connector %s on [CRTC:%d:%s]: %dx%d%s\n", > > -- > Jani Nikula, Intel Open Source Graphics Center
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c index f2150a0bac4c..895b73f23079 100644 --- a/drivers/gpu/drm/drm_client_modeset.c +++ b/drivers/gpu/drm/drm_client_modeset.c @@ -114,33 +114,6 @@ drm_client_find_modeset(struct drm_client_dev *client, struct drm_crtc *crtc) return NULL; } -static struct drm_display_mode * -drm_connector_get_tiled_mode(struct drm_connector *connector) -{ - struct drm_display_mode *mode; - - list_for_each_entry(mode, &connector->modes, head) { - if (mode->hdisplay == connector->tile_h_size && - mode->vdisplay == connector->tile_v_size) - return mode; - } - return NULL; -} - -static struct drm_display_mode * -drm_connector_fallback_non_tiled_mode(struct drm_connector *connector) -{ - struct drm_display_mode *mode; - - list_for_each_entry(mode, &connector->modes, head) { - if (mode->hdisplay == connector->tile_h_size && - mode->vdisplay == connector->tile_v_size) - continue; - return mode; - } - return NULL; -} - static struct drm_display_mode * drm_connector_has_preferred_mode(struct drm_connector *connector, int width, int height) { @@ -375,14 +348,8 @@ static bool drm_client_target_preferred(struct drm_connector **connectors, struct drm_connector *connector; u64 conn_configured = 0; int tile_pass = 0; - int num_tiled_conns = 0; int i; - for (i = 0; i < connector_count; i++) { - if (connectors[i]->has_tile) - num_tiled_conns++; - } - retry: for (i = 0; i < connector_count; i++) { connector = connectors[i]; @@ -432,28 +399,6 @@ static bool drm_client_target_preferred(struct drm_connector **connectors, list_for_each_entry(modes[i], &connector->modes, head) break; } - /* - * In case of tiled mode if all tiles not present fallback to - * first available non tiled mode. - * After all tiles are present, try to find the tiled mode - * for all and if tiled mode not present due to fbcon size - * limitations, use first non tiled mode only for - * tile 0,0 and set to no mode for all other tiles. - */ - if (connector->has_tile) { - if (num_tiled_conns < - connector->num_h_tile * connector->num_v_tile || - (connector->tile_h_loc == 0 && - connector->tile_v_loc == 0 && - !drm_connector_get_tiled_mode(connector))) { - DRM_DEBUG_KMS("Falling back to non tiled mode on Connector %d\n", - connector->base.id); - modes[i] = drm_connector_fallback_non_tiled_mode(connector); - } else { - modes[i] = drm_connector_get_tiled_mode(connector); - } - } - DRM_DEBUG_KMS("found mode %s\n", modes[i] ? modes[i]->name : "none"); conn_configured |= BIT_ULL(i); @@ -570,7 +515,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, bool fallback = true, ret = true; int num_connectors_enabled = 0; int num_connectors_detected = 0; - int num_tiled_conns = 0; struct drm_modeset_acquire_ctx ctx; if (!drm_drv_uses_atomic_modeset(dev)) @@ -588,10 +532,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, memcpy(save_enabled, enabled, count); mask = GENMASK(count - 1, 0); conn_configured = 0; - for (i = 0; i < count; i++) { - if (connectors[i]->has_tile) - num_tiled_conns++; - } retry: conn_seq = conn_configured; for (i = 0; i < count; i++) { @@ -691,16 +631,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, connector->name); modes[i] = &connector->state->crtc->mode; } - /* - * In case of tiled modes, if all tiles are not present - * then fallback to a non tiled mode. - */ - if (connector->has_tile && - num_tiled_conns < connector->num_h_tile * connector->num_v_tile) { - DRM_DEBUG_KMS("Falling back to non tiled mode on Connector %d\n", - connector->base.id); - modes[i] = drm_connector_fallback_non_tiled_mode(connector); - } crtcs[i] = new_crtc; DRM_DEBUG_KMS("connector %s on [CRTC:%d:%s]: %dx%d%s\n",
This reverts commit f25c7a006cd1c07254780e3406e45cee4842b933. 2p2c display configuration blows up dmesg when one connector is disconnected, causing issues in CI. Below are the sample errors thrown in logs: [IGT] core_getversion: executing [IGT] core_getversion: exiting, ret=0 Setting dangerous option reset - tainting kernel drm:drm_atomic_helper_wait_for_dependencies] ERROR [CRTC:152:pipe B] flip_done timed out drm:drm_atomic_helper_wait_for_dependencies] ERROR [CONNECTOR:299:DP-2] flip_done timed out drm:drm_atomic_helper_wait_for_dependencies] ERROR [PLANE:92:plane 1B] flip_done timed out [drm:drm_atomic_helper_wait_for_flip_done] ERROR [CRTC:152:pipe B] flip_done timed out [drm:drm_atomic_helper_wait_for_dependencies] ERROR [CRTC:152:pipe B] flip_done timed out [drm:drm_atomic_helper_wait_for_dependencies] ERROR [CONNECTOR:299:DP-2] flip_done timed out [drm:drm_atomic_helper_wait_for_dependencies] ERROR [PLANE:92:plane 1B] flip_done timed out [drm:drm_atomic_helper_wait_for_flip_done] ERROR [CRTC:152:pipe B] flip_done timed out Console: switching to colour frame buffer device 480x135 [drm:drm_atomic_helper_wait_for_dependencies] ERROR [CRTC:152:pipe B] flip_done timed out [drm:drm_atomic_helper_wait_for_dependencies] ERROR [CONNECTOR:299:DP-2] flip_done timed out Reverting the change for now to unblock CI execution. Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Dave Airlie <airlied@redhat.com> Cc: Jani Nikula <jani.nikula@intel.com> Cc: Manasi Navare <manasi.d.navare@intel.com> Signed-off-by: Uma Shankar <uma.shankar@intel.com> --- drivers/gpu/drm/drm_client_modeset.c | 70 ---------------------------- 1 file changed, 70 deletions(-)