From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932354AbeCLVMb (ORCPT ); Mon, 12 Mar 2018 17:12:31 -0400 Received: from mga12.intel.com ([192.55.52.136]:6160 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932242AbeCLVMa (ORCPT ); Mon, 12 Mar 2018 17:12:30 -0400 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,463,1515484800"; d="scan'208";a="37574549" Date: Mon, 12 Mar 2018 23:12:26 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Lyude Paul Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Manasi Navare , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , David Airlie , linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 5/5] drm/i915: Implement proper fallback training for MST Message-ID: <20180312211226.GT5453@intel.com> References: <20180308232421.14049-1-lyude@redhat.com> <20180309213232.19855-1-lyude@redhat.com> <20180309213232.19855-5-lyude@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20180309213232.19855-5-lyude@redhat.com> User-Agent: Mutt/1.7.2 (2016-11-26) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 09, 2018 at 04:32:31PM -0500, Lyude Paul wrote: > @@ -6266,25 +6368,98 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp, > return false; > } > > +static void intel_dp_mst_retrain_link_work(struct work_struct *work) > +{ Why do we need another work for this? Can't we just retrain from the hotplug work always? > + struct drm_modeset_acquire_ctx ctx; > + struct intel_dp *intel_dp = container_of(work, typeof(*intel_dp), > + mst_retrain_work); > + struct intel_encoder *intel_encoder = &dp_to_dig_port(intel_dp)->base; > + struct drm_device *dev = intel_encoder->base.dev; > + int ret; > + bool had_error = false; > + > + drm_modeset_acquire_init(&ctx, 0); > + > + for (;;) { > + ret = intel_dp_retrain_link(intel_encoder, &ctx); > + if (ret == -EDEADLK) { > + drm_modeset_backoff(&ctx); > + continue; > + } > + > + break; > + } > + if (!ret) { > + DRM_DEBUG_KMS("Retrain complete\n"); > + goto out; > + } else if (ret == -EIO) { > + DRM_ERROR("IO error with sink during retrain? Aborting\n"); > + had_error = true; > + goto out; > + } > + > + DRM_DEBUG_KMS("Retraining failed with %d, marking link status as bad\n", > + ret); > + > + /* We ran out of retries, if the sink hasn't changed the link rate in > + * it's dpcd yet force us to fallback to a lower link rate/count */ > + if (ret == -EINVAL) { > + ret = intel_dp_get_dpcd(intel_dp); > + if (!ret) { > + DRM_ERROR("IO error while reading dpcd from sink\n"); > + had_error = true; > + goto out; > + } > + > + if (intel_dp->link_rate == intel_dp_max_link_rate(intel_dp) && > + intel_dp->lane_count == intel_dp_max_lane_count(intel_dp)) { > + intel_dp_get_link_train_fallback_values( > + intel_dp, intel_dp_max_link_rate(intel_dp), > + intel_dp_max_lane_count(intel_dp)); > + } > + } > + > + intel_dp->mst_link_is_bad = true; > + intel_dp->mst_bw_locked = false; > + schedule_work(&intel_dp->modeset_retry_work); > +out: > + drm_modeset_drop_locks(&ctx); > + drm_modeset_acquire_fini(&ctx); > + if (had_error) > + drm_kms_helper_hotplug_event(dev); > +} > + -- Ville Syrjälä Intel OTC From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 5/5] drm/i915: Implement proper fallback training for MST Date: Mon, 12 Mar 2018 23:12:26 +0200 Message-ID: <20180312211226.GT5453@intel.com> References: <20180308232421.14049-1-lyude@redhat.com> <20180309213232.19855-1-lyude@redhat.com> <20180309213232.19855-5-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180309213232.19855-5-lyude@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lyude Paul Cc: David Airlie , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, Manasi Navare , dri-devel@lists.freedesktop.org, Rodrigo Vivi List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBNYXIgMDksIDIwMTggYXQgMDQ6MzI6MzFQTSAtMDUwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBAQCAtNjI2NiwyNSArNjM2OCw5OCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfaW5pdF9j b25uZWN0b3Ioc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCXJldHVybiBmYWxzZTsKPiAg fQo+ICAKPiArc3RhdGljIHZvaWQgaW50ZWxfZHBfbXN0X3JldHJhaW5fbGlua193b3JrKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKPiArewoKV2h5IGRvIHdlIG5lZWQgYW5vdGhlciB3b3JrIGZv ciB0aGlzPyBDYW4ndCB3ZSBqdXN0IHJldHJhaW4gZnJvbSB0aGUKaG90cGx1ZyB3b3JrIGFsd2F5 cz8KCj4gKwlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+ICsJc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmludGVsX2RwKSwK PiArCQkJCQkJIG1zdF9yZXRyYWluX3dvcmspOwo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmlu dGVsX2VuY29kZXIgPSAmZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5iYXNlOwo+ICsJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2VuY29kZXItPmJhc2UuZGV2Owo+ICsJaW50IHJldDsK PiArCWJvb2wgaGFkX2Vycm9yID0gZmFsc2U7Cj4gKwo+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9p bml0KCZjdHgsIDApOwo+ICsKPiArCWZvciAoOzspIHsKPiArCQlyZXQgPSBpbnRlbF9kcF9yZXRy YWluX2xpbmsoaW50ZWxfZW5jb2RlciwgJmN0eCk7Cj4gKwkJaWYgKHJldCA9PSAtRURFQURMSykg ewo+ICsJCQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+ICsJCQljb250aW51ZTsKPiArCQl9 Cj4gKwo+ICsJCWJyZWFrOwo+ICsJfQo+ICsJaWYgKCFyZXQpIHsKPiArCQlEUk1fREVCVUdfS01T KCJSZXRyYWluIGNvbXBsZXRlXG4iKTsKPiArCQlnb3RvIG91dDsKPiArCX0gZWxzZSBpZiAocmV0 ID09IC1FSU8pIHsKPiArCQlEUk1fRVJST1IoIklPIGVycm9yIHdpdGggc2luayBkdXJpbmcgcmV0 cmFpbj8gQWJvcnRpbmdcbiIpOwo+ICsJCWhhZF9lcnJvciA9IHRydWU7Cj4gKwkJZ290byBvdXQ7 Cj4gKwl9Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiUmV0cmFpbmluZyBmYWlsZWQgd2l0aCAlZCwg bWFya2luZyBsaW5rIHN0YXR1cyBhcyBiYWRcbiIsCj4gKwkJICAgICAgcmV0KTsKPiArCj4gKwkv KiBXZSByYW4gb3V0IG9mIHJldHJpZXMsIGlmIHRoZSBzaW5rIGhhc24ndCBjaGFuZ2VkIHRoZSBs aW5rIHJhdGUgaW4KPiArCSAqIGl0J3MgZHBjZCB5ZXQgZm9yY2UgdXMgdG8gZmFsbGJhY2sgdG8g YSBsb3dlciBsaW5rIHJhdGUvY291bnQgKi8KPiArCWlmIChyZXQgPT0gLUVJTlZBTCkgewo+ICsJ CXJldCA9IGludGVsX2RwX2dldF9kcGNkKGludGVsX2RwKTsKPiArCQlpZiAoIXJldCkgewo+ICsJ CQlEUk1fRVJST1IoIklPIGVycm9yIHdoaWxlIHJlYWRpbmcgZHBjZCBmcm9tIHNpbmtcbiIpOwo+ ICsJCQloYWRfZXJyb3IgPSB0cnVlOwo+ICsJCQlnb3RvIG91dDsKPiArCQl9Cj4gKwo+ICsJCWlm IChpbnRlbF9kcC0+bGlua19yYXRlID09IGludGVsX2RwX21heF9saW5rX3JhdGUoaW50ZWxfZHAp ICYmCj4gKwkJICAgIGludGVsX2RwLT5sYW5lX2NvdW50ID09IGludGVsX2RwX21heF9sYW5lX2Nv dW50KGludGVsX2RwKSkgewo+ICsJCQlpbnRlbF9kcF9nZXRfbGlua190cmFpbl9mYWxsYmFja192 YWx1ZXMoCj4gKwkJCSAgICBpbnRlbF9kcCwgaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9k cCksCj4gKwkJCSAgICBpbnRlbF9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcCkpOwo+ICsJCX0K PiArCX0KPiArCj4gKwlpbnRlbF9kcC0+bXN0X2xpbmtfaXNfYmFkID0gdHJ1ZTsKPiArCWludGVs X2RwLT5tc3RfYndfbG9ja2VkID0gZmFsc2U7Cj4gKwlzY2hlZHVsZV93b3JrKCZpbnRlbF9kcC0+ bW9kZXNldF9yZXRyeV93b3JrKTsKPiArb3V0Ogo+ICsJZHJtX21vZGVzZXRfZHJvcF9sb2Nrcygm Y3R4KTsKPiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiArCWlmIChoYWRfZXJy b3IpCj4gKwkJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudChkZXYpOwo+ICt9Cj4gKwoKLS0g ClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==