[Intel-gfx] [PATCH] Revert "drm/fbdev: Fallback to non tiled mode if all tiles not present"
Daniel Vetter
daniel at ffwll.ch
Mon Nov 25 21:20:24 UTC 2019
On Mon, Nov 25, 2019 at 05:07:26PM +0200, Jani Nikula wrote:
> On Sat, 23 Nov 2019, Uma Shankar <uma.shankar at 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 at linux.intel.com>
> > Cc: Dave Airlie <airlied at redhat.com>
> > Cc: Jani Nikula <jani.nikula at intel.com>
> > Cc: Manasi Navare <manasi.d.navare at intel.com>
> > Signed-off-by: Uma Shankar <uma.shankar at 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
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the Intel-gfx
mailing list