From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 1/4] drm/i915: Don't clobber M/N values during fastset check Date: Thu, 13 Jun 2019 12:24:59 +0300 Message-ID: <20190613092459.GV5942@intel.com> References: <20190612130801.2085-1-ville.syrjala@linux.intel.com> <20190612172423.25231-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9857389819 for ; Thu, 13 Jun 2019 09:25:03 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190612172423.25231-1-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Blubberbub@protonmail.com, stable@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdW4gMTIsIDIwMTkgYXQgMDg6MjQ6MjNQTSArMDMwMCwgVmlsbGUgU3lyamFsYSB3 cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+IAo+IFdlJ3JlIG5vdyBjYWxsaW5nIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoLi4u LCB0cnVlKSB1bmNvZGl0aW9uYWxseQo+IHdoaWNoIG1lYW5zIHdlJ3JlIGFsd2F5cyBnb2luZyBj bG9iYmVyIHRoZSBjYWxjdWxhdGVkIE0vTiB2YWx1ZXMgd2l0aAo+IHRoZSBvbGQgdmFsdWVzIGlm IHRoZSBmdXp6eSBNL04gY2hlY2sgcGFzc2VzLiBUaGF0IGNhdXNlcyBwcm9ibGVtcwo+IGJlY2F1 c2UgdGhlIGZ1enp5IGNoZWNrIGFsbG93cyBmb3IgYSBodWdlIGRpZmZlcmVuY2UgaW4gdGhlIHZh bHVlcy4KPiAKPiBJJ20gYWN0dWFsbHkgdGVtcHRlZCB0byBqdXN0IG1ha2UgdGhlIE0vTiBjaGVj a3MgZXhhY3QsIGJ1dCB0aGF0IG1pZ2h0Cj4gcHJldmVudCBmYXN0Ym9vdCBmcm9tIGtpY2tpbmcg aW4gd2hlbiBwZW9wbGUgd2FudCBpdC4gU28gZm9yIG5vdyBsZXQncwo+IG92ZXJ3cml0ZSB0aGUg Y29tcHV0ZWQgdmFsdWVzIHdpdGggdGhlIG9sZCB2YWx1ZXMgb25seSBpZiBkZWNpZGUgdG8gc2tp cAo+IHRoZSBtb2Rlc2V0Lgo+IAo+IHYyOiBDb3B5IGhhc19kcnJzIGFsb25nIHdpdGggTS9OIE0y L04yIHZhbHVlcwo+IAo+IENjOiBzdGFibGVAdmdlci5rZXJuZWwub3JnCj4gQ2M6IEJsdWJiZXJi dWJAcHJvdG9ubWFpbC5jb20KPiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hv cnN0QGxpbnV4LmludGVsLmNvbT4KPiBDYzogSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0 LmNvbT4KPiBUZXN0ZWQtYnk6IEJsdWJiZXJidWJAcHJvdG9ubWFpbC5jb20KPiBCdWd6aWxsYTog aHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNzgyCj4gRml4 ZXM6IGQxOWY5NThkYjIzYyAoImRybS9pOTE1OiBFbmFibGUgZmFzdHNldCBmb3Igbm9uLWJvb3Qg bW9kZXNldHMuIikKPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmph bGFAbGludXguaW50ZWwuY29tPgoKTG9va3MgbGlrZSBhbHNvCmh0dHBzOi8vYnVncy5mcmVlZGVz a3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDY3NQoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMzYgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQo+ ICAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggMWIxZGRiNDhjYTdhLi4zZDhl ZDFjZjBhYjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTEy Mjk5LDkgKzEyMjk5LDYgQEAgaW50ZWxfY29tcGFyZV9saW5rX21fbihjb25zdCBzdHJ1Y3QgaW50 ZWxfbGlua19tX24gKm1fbiwKPiAgCQkJICAgICAgbTJfbjItPmdtY2hfbSwgbTJfbjItPmdtY2hf biwgIWFkanVzdCkgJiYKPiAgCSAgICBpbnRlbF9jb21wYXJlX21fbihtX24tPmxpbmtfbSwgbV9u LT5saW5rX24sCj4gIAkJCSAgICAgIG0yX24yLT5saW5rX20sIG0yX24yLT5saW5rX24sICFhZGp1 c3QpKSB7Cj4gLQkJaWYgKGFkanVzdCkKPiAtCQkJKm0yX24yID0gKm1fbjsKPiAtCj4gIAkJcmV0 dXJuIHRydWU7Cj4gIAl9Cj4gIAo+IEBAIC0xMzQzMyw2ICsxMzQzMCwzMyBAQCBzdGF0aWMgaW50 IGNhbGNfd2F0ZXJtYXJrX2RhdGEoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4g IAlyZXR1cm4gMDsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19jaGVja19mYXN0 c2V0KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiArCQkJCSAgICAg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ICsJCXRvX2k5MTUobmV3X2NydGNfc3RhdGUt PmJhc2UuY3J0Yy0+ZGV2KTsKPiArCj4gKwlpZiAoIWludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUo ZGV2X3ByaXYsIG9sZF9jcnRjX3N0YXRlLAo+ICsJCQkJICAgICAgIG5ld19jcnRjX3N0YXRlLCB0 cnVlKSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJbmV3X2NydGNfc3RhdGUtPmJhc2UubW9kZV9jaGFu Z2VkID0gZmFsc2U7Cj4gKwluZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUgPSB0cnVlOwo+ICsK PiArCS8qCj4gKwkgKiBJZiB3ZSdyZSBub3QgZG9pbmcgdGhlIGZ1bGwgbW9kZXNldCB3ZSB3YW50 IHRvCj4gKwkgKiBrZWVwIHRoZSBjdXJyZW50IE0vTiB2YWx1ZXMgYXMgdGhleSBtYXkgYmUKPiAr CSAqIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgdG8gdGhlIGNvbXB1dGVkIHZhbHVlcwo+ICsJICog dG8gY2F1c2UgcHJvYmxlbXMuCj4gKwkgKgo+ICsJICogRklYTUU6IHNob3VsZCByZWFsbHkgY29w eSBtb3JlIGZ1enp5IHN0YXRlIGhlcmUKPiArCSAqLwo+ICsJbmV3X2NydGNfc3RhdGUtPmZkaV9t X24gPSBvbGRfY3J0Y19zdGF0ZS0+ZmRpX21fbjsKPiArCW5ld19jcnRjX3N0YXRlLT5kcF9tX24g PSBvbGRfY3J0Y19zdGF0ZS0+ZHBfbV9uOwo+ICsJbmV3X2NydGNfc3RhdGUtPmRwX20yX24yID0g b2xkX2NydGNfc3RhdGUtPmRwX20yX24yOwo+ICsJbmV3X2NydGNfc3RhdGUtPmhhc19kcnJzID0g b2xkX2NydGNfc3RhdGUtPmhhc19kcnJzOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogaW50ZWxfYXRv bWljX2NoZWNrIC0gdmFsaWRhdGUgc3RhdGUgb2JqZWN0Cj4gICAqIEBkZXY6IGRybSBkZXZpY2UK PiBAQCAtMTM0NzQsMTEgKzEzNDk4LDcgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY2hlY2so c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlpZiAocmV0KQo+ICAJCQlnb3RvIGZhaWw7Cj4g IAo+IC0JCWlmIChpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGRldl9wcml2LCBvbGRfY3J0Y19z dGF0ZSwKPiAtCQkJCQkgICAgICBuZXdfY3J0Y19zdGF0ZSwgdHJ1ZSkpIHsKPiAtCQkJbmV3X2Ny dGNfc3RhdGUtPmJhc2UubW9kZV9jaGFuZ2VkID0gZmFsc2U7Cj4gLQkJCW5ld19jcnRjX3N0YXRl LT51cGRhdGVfcGlwZSA9IHRydWU7Cj4gLQkJfQo+ICsJCWludGVsX2NydGNfY2hlY2tfZmFzdHNl dChvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUpOwo+ICAKPiAgCQlpZiAobmVlZHNfbW9k ZXNldCgmbmV3X2NydGNfc3RhdGUtPmJhc2UpKQo+ICAJCQlhbnlfbXMgPSB0cnVlOwo+IC0tIAo+ IDIuMjEuMAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZng= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B28FBC31E45 for ; Thu, 13 Jun 2019 15:48:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 95B2720851 for ; Thu, 13 Jun 2019 15:48:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728654AbfFMPsA (ORCPT ); Thu, 13 Jun 2019 11:48:00 -0400 Received: from mga01.intel.com ([192.55.52.88]:12151 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731743AbfFMJZE (ORCPT ); Thu, 13 Jun 2019 05:25:04 -0400 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Jun 2019 02:25:03 -0700 X-ExtLoop1: 1 Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga001.jf.intel.com with SMTP; 13 Jun 2019 02:25:00 -0700 Received: by stinkbox (sSMTP sendmail emulation); Thu, 13 Jun 2019 12:24:59 +0300 Date: Thu, 13 Jun 2019 12:24:59 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: intel-gfx@lists.freedesktop.org Cc: stable@vger.kernel.org, Blubberbub@protonmail.com, Maarten Lankhorst , Hans de Goede Subject: Re: [PATCH v2 1/4] drm/i915: Don't clobber M/N values during fastset check Message-ID: <20190613092459.GV5942@intel.com> References: <20190612130801.2085-1-ville.syrjala@linux.intel.com> <20190612172423.25231-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20190612172423.25231-1-ville.syrjala@linux.intel.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org On Wed, Jun 12, 2019 at 08:24:23PM +0300, Ville Syrjala wrote: > From: Ville Syrjälä > > We're now calling intel_pipe_config_compare(..., true) uncoditionally > which means we're always going clobber the calculated M/N values with > the old values if the fuzzy M/N check passes. That causes problems > because the fuzzy check allows for a huge difference in the values. > > I'm actually tempted to just make the M/N checks exact, but that might > prevent fastboot from kicking in when people want it. So for now let's > overwrite the computed values with the old values only if decide to skip > the modeset. > > v2: Copy has_drrs along with M/N M2/N2 values > > Cc: stable@vger.kernel.org > Cc: Blubberbub@protonmail.com > Cc: Maarten Lankhorst > Cc: Hans de Goede > Tested-by: Blubberbub@protonmail.com > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110782 > Fixes: d19f958db23c ("drm/i915: Enable fastset for non-boot modesets.") > Signed-off-by: Ville Syrjälä Looks like also https://bugs.freedesktop.org/show_bug.cgi?id=110675 > --- > drivers/gpu/drm/i915/intel_display.c | 36 +++++++++++++++++++++------- > 1 file changed, 28 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 1b1ddb48ca7a..3d8ed1cf0ab7 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -12299,9 +12299,6 @@ intel_compare_link_m_n(const struct intel_link_m_n *m_n, > m2_n2->gmch_m, m2_n2->gmch_n, !adjust) && > intel_compare_m_n(m_n->link_m, m_n->link_n, > m2_n2->link_m, m2_n2->link_n, !adjust)) { > - if (adjust) > - *m2_n2 = *m_n; > - > return true; > } > > @@ -13433,6 +13430,33 @@ static int calc_watermark_data(struct intel_atomic_state *state) > return 0; > } > > +static void intel_crtc_check_fastset(struct intel_crtc_state *old_crtc_state, > + struct intel_crtc_state *new_crtc_state) > +{ > + struct drm_i915_private *dev_priv = > + to_i915(new_crtc_state->base.crtc->dev); > + > + if (!intel_pipe_config_compare(dev_priv, old_crtc_state, > + new_crtc_state, true)) > + return; > + > + new_crtc_state->base.mode_changed = false; > + new_crtc_state->update_pipe = true; > + > + /* > + * If we're not doing the full modeset we want to > + * keep the current M/N values as they may be > + * sufficiently different to the computed values > + * to cause problems. > + * > + * FIXME: should really copy more fuzzy state here > + */ > + new_crtc_state->fdi_m_n = old_crtc_state->fdi_m_n; > + new_crtc_state->dp_m_n = old_crtc_state->dp_m_n; > + new_crtc_state->dp_m2_n2 = old_crtc_state->dp_m2_n2; > + new_crtc_state->has_drrs = old_crtc_state->has_drrs; > +} > + > /** > * intel_atomic_check - validate state object > * @dev: drm device > @@ -13474,11 +13498,7 @@ static int intel_atomic_check(struct drm_device *dev, > if (ret) > goto fail; > > - if (intel_pipe_config_compare(dev_priv, old_crtc_state, > - new_crtc_state, true)) { > - new_crtc_state->base.mode_changed = false; > - new_crtc_state->update_pipe = true; > - } > + intel_crtc_check_fastset(old_crtc_state, new_crtc_state); > > if (needs_modeset(&new_crtc_state->base)) > any_ms = true; > -- > 2.21.0 -- Ville Syrjälä Intel