[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200324130810.484423970@linuxfoundation.org>
Date: Tue, 24 Mar 2020 14:10:28 +0100
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-kernel@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
stable@...r.kernel.org,
Ville Syrjälä
<ville.syrjala@...ux.intel.com>, Dave Airlie <airlied@...hat.com>,
Jani Nikula <jani.nikula@...el.com>,
Manasi Navare <manasi.d.navare@...el.com>,
Uma Shankar <uma.shankar@...el.com>,
Daniel Vetter <daniel.vetter@...ll.ch>,
Sasha Levin <sashal@...nel.org>
Subject: [PATCH 5.4 036/102] Revert "drm/fbdev: Fallback to non tiled mode if all tiles not present"
[ Upstream commit f053c83ad5c88427644e06746bfddcefa409c27d ]
This reverts commit f25c7a006cd1 ("drm/fbdev: Fallback to non tiled mode
if all tiles not present"). The commit causes flip done timeouts 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@...ux.intel.com>
Cc: Dave Airlie <airlied@...hat.com>
Cc: Jani Nikula <jani.nikula@...el.com>
Cc: Manasi Navare <manasi.d.navare@...el.com>
Signed-off-by: Uma Shankar <uma.shankar@...el.com>
Fixes: f25c7a006cd1 ("drm/fbdev: Fallback to non tiled mode if all tiles not present")
Closes: https://gitlab.freedesktop.org/drm/intel/issues/6
Acked-by: Daniel Vetter <daniel.vetter@...ll.ch>
Signed-off-by: Jani Nikula <jani.nikula@...el.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191123091840.32382-1-uma.shankar@intel.com
Signed-off-by: Sasha Levin <sashal@...nel.org>
---
drivers/gpu/drm/drm_client_modeset.c | 72 ----------------------------
1 file changed, 72 deletions(-)
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index 18cb88b9105e4..bf1bdb0aac19b 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,15 +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 &&
- connectors[i]->status == connector_status_connected)
- num_tiled_conns++;
- }
-
retry:
for (i = 0; i < connector_count; i++) {
connector = connectors[i];
@@ -433,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);
@@ -572,7 +516,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))
@@ -590,11 +533,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 &&
- connectors[i]->status == connector_status_connected)
- num_tiled_conns++;
- }
retry:
conn_seq = conn_configured;
for (i = 0; i < count; i++) {
@@ -694,16 +632,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",
--
2.20.1
Powered by blists - more mailing lists