Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp39902imm; Tue, 18 Sep 2018 16:07:49 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZIiNu+bPsMMbNbieUwulMC8wkAXhacTNusPVajl5XWXRvm8bmoCI3MIh7h7byGOUw/qJRF X-Received: by 2002:a17:902:28e8:: with SMTP id f95-v6mr31182117plb.240.1537312069188; Tue, 18 Sep 2018 16:07:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537312069; cv=none; d=google.com; s=arc-20160816; b=uU2iJmCnO0ivS0Gcjvg5cZweg8PhyjGRLU41+MQMrUTnkL1TlSkEIgYykvWSKKAnPk NRInxWH6Rvmry6SR7pAo7WbzQ+Js4G+RLSqLcKrsfi+HRFUYaSdne+/hBF9zAs5E8CnW QcB/84d+3QRrPPYd2Uqf2sZTbc4kxi83INdegu2K1mzm5Nv+EoYSryD0TOCLCday8EGO oBHE8MGmkxVTclK1JXHu8dX84O2gDi9CTo8quYgQs2qrOKfXeCCoZY2v65XCJjXfIpRY tjY6+vCN6Q2M/i2F/ByYDbBMkPl1Xg1catjgonz1iYFN2ym0vHzXIuIO0nNdk8Fu47NW dY5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=62UTqQbSTU1NJWn/0UAPS0BrxyP4RIqCg2LI5e3sr0c=; b=Buq6v/k5pWW9BE9bXEolFRbsLjza7cQkuTaDEPFhIQKpO3/VGAAUOXh5qtjjpv2PKS 45sDCviWMMAx4SvR8qd6+zkeghaXd+Wk45GU7qUX/MLNzrKUQhsAK04or31S25eU/oWd aIqE6Z0MTB8yd5QZI19bUfP2sdImTCYETDtaOOqh7fY8qiEv6Ntzyrp/1P3TVX2Drvo/ Ti7tQMi6/VL4qRhCv9pEa6ZDoF5KR9R5bXiyZdbXa53xzWO9Bt8U4eQpI0erH/WFWqSG S3hzN/94Xajs4pWvrkuwcMfGCdgwclsnK9Bimy65n63Pfxth+lRedHD0zTglOLNzBxqn q1NQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g6-v6si19017952pfh.346.2018.09.18.16.07.23; Tue, 18 Sep 2018 16:07:49 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728372AbeISEmA (ORCPT + 99 others); Wed, 19 Sep 2018 00:42:00 -0400 Received: from mx1.redhat.com ([209.132.183.28]:41472 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725873AbeISEl7 (ORCPT ); Wed, 19 Sep 2018 00:41:59 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D03993091D54; Tue, 18 Sep 2018 23:07:08 +0000 (UTC) Received: from whitewolf.lyude.net.com (ovpn-125-172.rdu2.redhat.com [10.10.125.172]) by smtp.corp.redhat.com (Postfix) with ESMTP id C5BCA7A4D1; Tue, 18 Sep 2018 23:07:06 +0000 (UTC) From: Lyude Paul To: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: stable@vger.kernel.org, Ben Skeggs , David Airlie , Daniel Vetter , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Sean Paul , Ilia Mirkin , linux-kernel@vger.kernel.org Subject: [PATCH 2/6] drm/nouveau: Unbreak nv50_mstc->best_encoder() Date: Tue, 18 Sep 2018 19:06:18 -0400 Message-Id: <20180918230637.20700-3-lyude@redhat.com> In-Reply-To: <20180918230637.20700-1-lyude@redhat.com> References: <20180918230637.20700-1-lyude@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Tue, 18 Sep 2018 23:07:08 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As mentioned in the previous commit, we currently prevent new modesets on recently-removed MST connectors by returning no encoder from our ->best_encoder() callback once the MST port has disappeared. This is wrong however, because it prevents legacy modesetting users from being able to disable CRTCs on MST connectors after the connector's respective topology has disappeared. So, fix this by instead using the new drm_dp_mst_connector_atomic_check() helper instead while always returning a valid encoder from ->best_encoder(). Signed-off-by: Lyude Paul Cc: stable@vger.kernel.org --- drivers/gpu/drm/nouveau/dispnv50/disp.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c index 9da0bdfe1e1c..8d6f6ee9bc75 100644 --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c @@ -881,22 +881,16 @@ nv50_mstc_atomic_best_encoder(struct drm_connector *connector, { struct nv50_head *head = nv50_head(connector_state->crtc); struct nv50_mstc *mstc = nv50_mstc(connector); - if (mstc->port) { - struct nv50_mstm *mstm = mstc->mstm; - return &mstm->msto[head->base.index]->encoder; - } - return NULL; + + return &mstc->mstm->msto[head->base.index]->encoder; } static struct drm_encoder * nv50_mstc_best_encoder(struct drm_connector *connector) { struct nv50_mstc *mstc = nv50_mstc(connector); - if (mstc->port) { - struct nv50_mstm *mstm = mstc->mstm; - return &mstm->msto[0]->encoder; - } - return NULL; + + return &mstc->mstm->msto[0]->encoder; } static enum drm_mode_status @@ -926,10 +920,21 @@ nv50_mstc_get_modes(struct drm_connector *connector) return ret; } +static int +nv50_mstc_atomic_check(struct drm_connector *connector, + struct drm_connector_state *state) +{ + struct nv50_mstc *mstc = nv50_mstc(connector); + + return drm_dp_mst_connector_atomic_check(connector, state, + &mstc->mstm->mgr); +} + static const struct drm_connector_helper_funcs nv50_mstc_help = { .get_modes = nv50_mstc_get_modes, .mode_valid = nv50_mstc_mode_valid, + .atomic_check = nv50_mstc_atomic_check, .best_encoder = nv50_mstc_best_encoder, .atomic_best_encoder = nv50_mstc_atomic_best_encoder, }; -- 2.17.1