Commit f053c83a authored by Uma Shankar's avatar Uma Shankar Committed by Jani Nikula

Revert "drm/fbdev: Fallback to non tiled mode if all tiles not present"

This reverts commit f25c7a00 ("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@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: default avatarUma Shankar <uma.shankar@intel.com>
Fixes: f25c7a00 ("drm/fbdev: Fallback to non tiled mode if all tiles not present")
Closes: https://gitlab.freedesktop.org/drm/intel/issues/6Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191123091840.32382-1-uma.shankar@intel.com
parent 6b7ce2c4
...@@ -114,33 +114,6 @@ drm_client_find_modeset(struct drm_client_dev *client, struct drm_crtc *crtc) ...@@ -114,33 +114,6 @@ drm_client_find_modeset(struct drm_client_dev *client, struct drm_crtc *crtc)
return NULL; 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 * static struct drm_display_mode *
drm_connector_has_preferred_mode(struct drm_connector *connector, int width, int height) 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, ...@@ -375,14 +348,8 @@ static bool drm_client_target_preferred(struct drm_connector **connectors,
struct drm_connector *connector; struct drm_connector *connector;
u64 conn_configured = 0; u64 conn_configured = 0;
int tile_pass = 0; int tile_pass = 0;
int num_tiled_conns = 0;
int i; int i;
for (i = 0; i < connector_count; i++) {
if (connectors[i]->has_tile)
num_tiled_conns++;
}
retry: retry:
for (i = 0; i < connector_count; i++) { for (i = 0; i < connector_count; i++) {
connector = connectors[i]; connector = connectors[i];
...@@ -432,28 +399,6 @@ static bool drm_client_target_preferred(struct drm_connector **connectors, ...@@ -432,28 +399,6 @@ static bool drm_client_target_preferred(struct drm_connector **connectors,
list_for_each_entry(modes[i], &connector->modes, head) list_for_each_entry(modes[i], &connector->modes, head)
break; 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 : DRM_DEBUG_KMS("found mode %s\n", modes[i] ? modes[i]->name :
"none"); "none");
conn_configured |= BIT_ULL(i); conn_configured |= BIT_ULL(i);
...@@ -570,7 +515,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, ...@@ -570,7 +515,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
bool fallback = true, ret = true; bool fallback = true, ret = true;
int num_connectors_enabled = 0; int num_connectors_enabled = 0;
int num_connectors_detected = 0; int num_connectors_detected = 0;
int num_tiled_conns = 0;
struct drm_modeset_acquire_ctx ctx; struct drm_modeset_acquire_ctx ctx;
if (!drm_drv_uses_atomic_modeset(dev)) if (!drm_drv_uses_atomic_modeset(dev))
...@@ -588,10 +532,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, ...@@ -588,10 +532,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
memcpy(save_enabled, enabled, count); memcpy(save_enabled, enabled, count);
mask = GENMASK(count - 1, 0); mask = GENMASK(count - 1, 0);
conn_configured = 0; conn_configured = 0;
for (i = 0; i < count; i++) {
if (connectors[i]->has_tile)
num_tiled_conns++;
}
retry: retry:
conn_seq = conn_configured; conn_seq = conn_configured;
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
...@@ -691,16 +631,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, ...@@ -691,16 +631,6 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
connector->name); connector->name);
modes[i] = &connector->state->crtc->mode; 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; crtcs[i] = new_crtc;
DRM_DEBUG_KMS("connector %s on [CRTC:%d:%s]: %dx%d%s\n", DRM_DEBUG_KMS("connector %s on [CRTC:%d:%s]: %dx%d%s\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment