lkml.org 
[lkml]   [2019]   [Feb]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 62/71] drm/i915/fbdev: Actually configure untiled displays
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Chris Wilson <chris@chris-wilson.co.uk>

    commit d179b88deb3bf6fed4991a31fd6f0f2cad21fab5 upstream.

    If we skipped all the connectors that were not part of a tile, we would
    leave conn_seq=0 and conn_configured=0, convincing ourselves that we
    had stagnated in our configuration attempts. Avoid this situation by
    starting conn_seq=ALL_CONNECTORS, and repeating until we find no more
    connectors to configure.

    Fixes: 754a76591b12 ("drm/i915/fbdev: Stop repeating tile configuration on stagnation")
    Reported-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190215123019.32283-1-chris@chris-wilson.co.uk
    Cc: <stable@vger.kernel.org> # v3.19+
    (cherry picked from commit d9b308b1f8a1acc0c3279f443d4fe0f9f663252e)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/gpu/drm/i915/intel_fbdev.c | 12 +++++++-----
    1 file changed, 7 insertions(+), 5 deletions(-)

    --- a/drivers/gpu/drm/i915/intel_fbdev.c
    +++ b/drivers/gpu/drm/i915/intel_fbdev.c
    @@ -326,8 +326,8 @@ static bool intel_fb_initial_config(stru
    bool *enabled, int width, int height)
    {
    struct drm_i915_private *dev_priv = to_i915(fb_helper->dev);
    - unsigned long conn_configured, conn_seq, mask;
    unsigned int count = min(fb_helper->connector_count, BITS_PER_LONG);
    + unsigned long conn_configured, conn_seq;
    int i, j;
    bool *save_enabled;
    bool fallback = true, ret = true;
    @@ -345,10 +345,9 @@ static bool intel_fb_initial_config(stru
    drm_modeset_backoff(&ctx);

    memcpy(save_enabled, enabled, count);
    - mask = GENMASK(count - 1, 0);
    + conn_seq = GENMASK(count - 1, 0);
    conn_configured = 0;
    retry:
    - conn_seq = conn_configured;
    for (i = 0; i < count; i++) {
    struct drm_fb_helper_connector *fb_conn;
    struct drm_connector *connector;
    @@ -361,7 +360,8 @@ retry:
    if (conn_configured & BIT(i))
    continue;

    - if (conn_seq == 0 && !connector->has_tile)
    + /* First pass, only consider tiled connectors */
    + if (conn_seq == GENMASK(count - 1, 0) && !connector->has_tile)
    continue;

    if (connector->status == connector_status_connected)
    @@ -465,8 +465,10 @@ retry:
    conn_configured |= BIT(i);
    }

    - if ((conn_configured & mask) != mask && conn_configured != conn_seq)
    + if (conn_configured != conn_seq) { /* repeat until no more are found */
    + conn_seq = conn_configured;
    goto retry;
    + }

    /*
    * If the BIOS didn't enable everything it could, fall back to have the

    \
     
     \ /
      Last update: 2019-02-25 22:19    [W:2.883 / U:0.536 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site