From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v7 1/6] drm/i915: Fallback to lower link rate and lane count during link training Date: Tue, 27 Sep 2016 08:25:02 -0700 Message-ID: <20160927152502.GA18889@intel.com> References: <1473984244-4349-2-git-send-email-manasi.d.navare@intel.com> <1474051514-5811-1-git-send-email-manasi.d.navare@intel.com> <87twd2kcfd.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 125406E25B for ; Tue, 27 Sep 2016 15:24:39 +0000 (UTC) Content-Disposition: inline In-Reply-To: <87twd2kcfd.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBTZXAgMjYsIDIwMTYgYXQgMDQ6Mzk6MzRQTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gRnJpLCAxNiBTZXAgMjAxNiwgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJl QGludGVsLmNvbT4gd3JvdGU6Cj4gPiBBY2NvcmRpbmcgdG8gdGhlIERpc3BsYXlQb3J0IFNwZWMs IGluIGNhc2Ugb2YgQ2xvY2sgUmVjb3ZlcnkgZmFpbHVyZQo+ID4gdGhlIGxpbmsgdHJhaW5pbmcg c2VxdWVuY2Ugc2hvdWxkIGZhbGwgYmFjayB0byB0aGUgbG93ZXIgbGluayByYXRlCj4gPiBmb2xs b3dlZCBieSBsb3dlciBsYW5lIGNvdW50IHVudGlsIENSIHN1Y2NlZWRzLgo+ID4gT24gQ1Igc3Vj Y2VzcywgdGhlIHNlcXVlbmNlIHByb2NlZWRzIHdpdGggQ2hhbm5lbCBFUS4KPiA+IEluIGNhc2Ug b2YgQ2hhbm5lbCBFUSBmYWlsdXJlcywgaXQgc2hvdWxkIGZhbGxiYWNrIHRvCj4gPiBsb3dlciBs aW5rIHJhdGUgYW5kIGxhbmUgY291bnQgYW5kIHN0YXJ0IHRoZSBDUiBwaGFzZSBhZ2Fpbi4KPiAK PiBUaGlzIGNoYW5nZSBtYWtlcyB0aGUgbGluayB0cmFpbmluZyBzdGFydCBhdCB0aGUgbWF4IGxh bmUgY291bnQgYW5kIG1heAo+IGxpbmsgcmF0ZS4gVGhpcyBpcyBub3QgaWRlYWwsIGFzIGl0IHdh c3RlcyB0aGUgbGluay4gQW5kIGl0IGlzIG5vdCBhCj4gc3BlYyByZXF1aXJlbWVudC4gIlRoZSBM aW5rIFBvbGljeSBNYWtlciBvZiB0aGUgdXBzdHJlYW0gZGV2aWNlIG1heQo+IGNob29zZSBhbnkg bGluayBjb3VudCBhbmQgbGluayByYXRlIGFzIGxvbmcgYXMgdGhleSBkbyBub3QgZXhjZWVkIHRo ZQo+IGNhcGFiaWxpdGllcyBvZiB0aGUgRFAgcmVjZWl2ZXIuIgo+IAo+IE91ciBjdXJyZW50IGNv ZGUgc3RhcnRzIGF0IHRoZSBtaW5pbXVtIHJlcXVpcmVkIGJhbmR3aWR0aCBmb3IgdGhlIG1vZGUs Cj4gdGhlcmVmb3JlIHdlIGNhbid0IGZhbGwgYmFjayB0byBsb3dlciBsaW5rIHJhdGUgYW5kIGxh bmUgY291bnQgd2l0aG91dAo+IHJlZHVjaW5nIHRoZSBtb2RlLgo+IAo+IEFGQUlDVCB0aGlzIHBh dGNoIGhlcmUgbWFrZXMgaXQgcG9zc2libGUgZm9yIHRoZSBsaW5rIGJhbmR3aWR0aCB0byBkcm9w Cj4gYmVsb3cgd2hhdCBpcyByZXF1aXJlZCBmb3IgdGhlIG1vZGUuIFRoaXMgaXMgdW5hY2NlcHRh YmxlLgo+IAo+IEJSLAo+IEphbmkuCj4gCj4KClRoYW5rcyBKYW5pIGZvciB5b3VyIHJldmlldyBj b21tZW50cy4KWWVzIGluIHRoaXMgY2hhbmdlIHdlIHN0YXJ0IGF0IHRoZSBtYXggbGluayByYXRl IGFuZCBsYW5lIGNvdW50LiBUaGlzIGNoYW5nZSB3YXMKbWFkZSBhY2NvcmRpbmcgdG8gdGhlIGRl c2lnbiBkb2N1bWVudCBkaXNjdXNzaW9ucyB3ZSBoYWQgYmVmb3JlIHN0cmF0aW5nIHRoaXMgRFAg ClJlZGVzaWduIHByb2plY3QuIFRoZSBtYWluIHJlYXNvbiBmb3Igc3RhcnRpbmcgYXQgdGhlIG1h eGxpbmsgcmF0ZSBhbmQgbWF4IGxhbmUKY291bnQgd2FzIGZvciBlbnN1cmluZyBwcm9wZXIgYmVo YXZpb3Igb2YgRFAgTVNULiBJbiBjYXNlIG9mIERQIE1TVCwgd2Ugd2FudCB0bwp0cmFpbiB0aGUg bGluayBhdCB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgbGluayByYXRlL2xhbmUgY291bnQgYmFzZWQg b24gYW4gZWFybHkvCnVwZnJvbnQgbGluayB0cmFpbmluZyByZXN1bHQgc28gdGhhdCB3ZSBkb250 IGZhaWwgd2hlbiB3ZSB0cnkgdG8gY29ubmVjdCBhCmhpZ2hlciByZXNvbHV0aW9uIG1vbml0b3Ig YXMgYSBzZWNvbmQgbW9uaXRvci4gVGhpcyBhIHRyYWRlIG9mZiBiZXR3ZWVuIHdzdGluZyAKdGhl IGxpbmsgb3IgaGlnaGVyIHBvd2VyIHZzLiBuZWVkaW5nIHRvIHJldHJhaW4gZm9yIGV2ZXJ5IG1v bml0b3IgdGhhdCByZXF1ZXN0cwphIGhpZ2hlciBCVyBpbiBjYXNlIG9mIERQIE1TVC4KIApBY3R1 YWxseSB0aGlzIGlzIGFsc28gdGhlIHJlYXNvbiBmb3IgZW5hYmxpbmcgdXBmcm9udCBsaW5rIHRy YWluaW5nIGluIHRoZSAKZm9sbG93aW5nIHBhdGNoIHdoZXJlIHdlIHRyYWluIHRoZSBsaW5rIG11 Y2ggYWhlYWQgaW4gdGhlIG1vZGVzZXQgc2VxdWVuY2UgCnRvIHVuZGVyc3RhbmQgdGhlIGxpbmsg cmF0ZSBhbmQgbGFuZSBjb3VudCB2YWx1ZXMgYXQgd2hpY2ggdGhlIGxpbmsgY2FuIGJlIApzdWNj ZXNzZnVsbHkgdHJhaW5lZCBhbmQgdGhlbiB0aGUgbGluayB0cmFpbmluZyB0aHJvdWdoIG1vZGVz ZXQgd2lsbCBhbHdheXMgc3RhcnQKYXQgdGhlIHVwZnJvbnQgdmFsdWVzIChtYXhpbXVtIHN1cHBv cnRlZCB2YWx1ZXMgb2YgbGFuZSBjb3VudCBhbmQgbGluayByYXRlIGJhc2VkCm9uIHVwZnJvbnQg bGluayB0cmFpbmluZykuCgpBcyBwZXIgdGhlIENUUywgYWxsIHRoZSB0ZXN0IDQuMy4xLjQgcmVx dWlyZXMgdGhhdCB5b3UgZmFsbCBiYWNrIHRvIHRoZSBsb3dlciBsaW5rCnJhdGUgYWZ0ZXIgdHJ5 aW5nIHRvIHRyYWluIGF0IHRoZSBtYXhpbXVtIGxpbmsgcmF0ZSBhZHZlcnRpc2VkIHRocm91Z2gg dGhlIERQQ0QgCnJlZ2lzdGVycy4KClRoaXMgd2lsbCBub3QgZHJvcCB0aGUgbGluayBCVyB0byBh IG51bWJlciBiZWxvdyB3aGF0IGlzIHJlcXVpcmVkIGZvciB0aGUgbW9kZSAKYmVjYXVzZSB0aGUg cmVxdWVzdGVkIG1vZGVzIGFyZSBwcnVuZWQgb3IgdmFsaWRhdGVkIGluIGludGVsX2RwX21vZGVf dmFsaWQKYmFzZWQgb24gdGhlIHVwZnJvbnQgbGluayB0cmFpbmluZyByZXN1bHRzIGluIHRoZSBm b2xsb3dpbmcgcGF0Y2guIEFuZCB0aGVzZSAKdmFsdWVzIGFyZSB1c2VkIGhlcmUgYXMgdGhlIHN0 YXJ0aW5nIHZhbHVlcyBvZiBsaW5rIHJhdGUgYW5kIGxhbmUgY291bnQuCgpJIGFsbW9zdCBmZWVs IHRoYXQgdGhlIHVwZnJvbnQgbGluayB0cmFpbmluZyBwYXRjaCBhbmQgdGhpcyBwYXRjaCBzaG91 bGQgYmUgCmNvbWJpbmVkIHNvIHRoYXQgaW5zZWFkIG9mIHN0YXJ0aW5nIGZyb20gdGhlIG1heCBs aW5rIHJhdGUgYW5kIGxhbmUgY291bnQgaXQKaXMgY2xlYXIgdGhhdCB3ZSBhcmUgc3RhcnRpbmcg ZnJvbSB0aGUgdXBmcm9udCB2YWx1ZXMuCgpSZWdhcmRzLApNYW5hc2kgCj4gPgo+ID4gdjc6Cj4g PiAqIEFkZHJlc3MgcmVhZGFiaWxpdHkgY29uY2VybnMgKE1pa2EgS2Fob2xhKQo+ID4gdjY6Cj4g PiAqIERvIG5vdCBzcGxpdCBxdW90ZWQgc3RyaW5nIGFjcm9zcyBsaW5lIChNaWthIEthaG9sYSkK PiA+IHY1Ogo+ID4gKiBSZXNldCB0aGUgbGluayByYXRlIGluZGV4IHRvIHRoZSBtYXggbGluayBy YXRlIGluZGV4Cj4gPiBiZWZvcmUgbG93ZXJpbmcgdGhlIGxhbmUgY291bnQgKEphbmkgTmlrdWxh KQo+ID4gKiBVc2UgdGhlIHBhcmFkaWdtIGZvciBsb29wIGluIGludGVsX2RwX2xpbmtfcmF0ZV9p bmRleAo+ID4gdjQ6Cj4gPiAqIEZpeGVkIHRoZSBsaW5rIHJhdGUgZmFsbGJhY2sgbG9vcCAoTWFu YXNpIE5hdmFyZSkKPiA+IHYzOgo+ID4gKiBGaXhlZCBzb21lIHJlYmFzZSBpc3N1ZXMgKE1pa2Eg S2Fob2xhKQo+ID4gdjI6Cj4gPiAqIEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0byByZXR1cm4gaW5k ZXggb2YgcmVxdWVzdGVkIGxpbmsgcmF0ZQo+ID4gaW50byBjb21tb25fcmF0ZXMgYXJyYXkKPiA+ ICogQ2hhbmdlZCB0aGUgbGluayByYXRlIGZhbGxiYWNrIGxvb3AgdG8gbWFrZSB1c2UKPiA+IG9m IGNvbW1vbl9yYXRlcyBhcnJheSAoTWlrYSBLYWhvbGEpCj4gPiAqIENoYW5nZWQgSU5URUxfSU5G TyB0byBJTlRFTF9HRU4gKERhdmlkIFdlaW5laGFsbCkKPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBN YW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgICAgICAgICAgIHwgMTEzICsrKysrKysr KysrKysrKysrKysrKysrLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAg ICAgICAgICAgICAgIHwgIDE1ICsrKysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cF9saW5rX3RyYWluaW5nLmMgfCAgMTMgKystCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggICAgICAgICAgICAgIHwgICA2ICstCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAxMzMg aW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGRpLmMKPiA+IGluZGV4IDgwNjVhNWYuLjA5MzAzOGMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmMKPiA+IEBAIC0xNjM3LDE5ICsxNjM3LDE4IEBAIHZvaWQgaW50ZWxfZGRpX2Ns a19zZWxlY3Qoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCX0KPiA+ICB9Cj4g PiAgCj4gPiAtc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gPiArc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVf ZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJCQkgICAgaW50IGxpbmtf cmF0ZSwgdWludDMyX3QgbGFuZV9jb3VudCwKPiA+IC0JCQkJICAgIHN0cnVjdCBpbnRlbF9zaGFy ZWRfZHBsbCAqcGxsLAo+ID4gLQkJCQkgICAgYm9vbCBsaW5rX21zdCkKPiA+ICsJCQkJICAgIHN0 cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+ID4gIHsKPiA+ICAJc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYp Owo+ID4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGVuY29k ZXIpOwo+ID4gIAo+ID4gIAlpbnRlbF9kcF9zZXRfbGlua19wYXJhbXMoaW50ZWxfZHAsIGxpbmtf cmF0ZSwgbGFuZV9jb3VudCwKPiA+IC0JCQkJIGxpbmtfbXN0KTsKPiA+IC0JaWYgKGVuY29kZXIt PnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkKPiA+IC0JCWludGVsX2VkcF9wYW5lbF9vbihpbnRl bF9kcCk7Cj4gPiArCQkJCSBmYWxzZSk7Cj4gPiArCj4gPiArCWludGVsX2VkcF9wYW5lbF9vbihp bnRlbF9kcCk7Cj4gPiAgCj4gPiAgCWludGVsX2RkaV9jbGtfc2VsZWN0KGVuY29kZXIsIHBsbCk7 Cj4gPiAgCWludGVsX3ByZXBhcmVfZHBfZGRpX2J1ZmZlcnMoZW5jb2Rlcik7Cj4gPiBAQCAtMTY2 MCw2ICsxNjU5LDI4IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWlu KGludGVsX2RwKTsKPiA+ICB9Cj4gPiAgCj4gPiArc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9l bmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiArCQkJCSAgICBpbnQg bGlua19yYXRlLCB1aW50MzJfdCBsYW5lX2NvdW50LAo+ID4gKwkJCQkgICAgc3RydWN0IGludGVs X3NoYXJlZF9kcGxsICpwbGwsCj4gPiArCQkJCSAgICBib29sIGxpbmtfbXN0KQo+ID4gK3sKPiA+ ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+ YmFzZSk7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZW5jb2Rlci0+YmFzZS5kZXYpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmln IHRtcF9wbGxfY29uZmlnOwo+ID4gKwo+ID4gKwkvKiBEaXNhYmxlIHRoZSBQTEwgYW5kIG9idGFp biB0aGUgUExMIGZvciBMaW5rIFRyYWluaW5nCj4gPiArCSAqIHRoYXQgc3RhcnRzIHdpdGggaGln aGVzdCBsaW5rIHJhdGUgYW5kIGxhbmUgY291bnQuCj4gPiArCSAqLwo+ID4gKwl0bXBfcGxsX2Nv bmZpZyA9IHBsbC0+Y29uZmlnOwo+ID4gKwlwbGwtPmZ1bmNzLmRpc2FibGUoZGV2X3ByaXYsIHBs bCk7Cj4gPiArCXBsbC0+Y29uZmlnLmNydGNfbWFzayA9IDA7Cj4gPiArCj4gPiArCS8qIElmIExp bmsgVHJhaW5pbmcgZmFpbHMsIHNlbmQgYSB1ZXZlbnQgdG8gZ2VuZXJhdGUgYSBob3RwbHVnICov Cj4gPiArCWlmICghaW50ZWxfZGRpX2xpbmtfdHJhaW4oaW50ZWxfZHAsIGxpbmtfcmF0ZSwgbGFu ZV9jb3VudCwgbGlua19tc3QpKQo+ID4gKwkJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudChl bmNvZGVyLT5iYXNlLmRldik7Cj4gPiArCXBsbC0+Y29uZmlnID0gdG1wX3BsbF9jb25maWc7Cj4g PiArfQo+ID4gKwo+ID4gIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCQkJCSAgICAgIGJvb2wgaGFzX2hkbWlf c2luaywKPiA+ICAJCQkJICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUsCj4gPiBAQCAtMTY5MywyMCArMTcxNCwyNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJl X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiA+ICAJc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmNydGMpOwo+ID4gIAlp bnQgdHlwZSA9IGludGVsX2VuY29kZXItPnR5cGU7Cj4gPiAgCj4gPiAtCWlmICh0eXBlID09IElO VEVMX09VVFBVVF9EUCB8fCB0eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKPiA+ICsJaWYgKHR5 cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkKPiA+ICsJCWludGVsX2RkaV9wcmVfZW5hYmxlX2VkcChp bnRlbF9lbmNvZGVyLAo+ID4gKwkJCQkJY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrLAo+ID4gKwkJ CQkJY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50LAo+ID4gKwkJCQkJY3J0Yy0+Y29uZmlnLT5zaGFy ZWRfZHBsbCk7Cj4gPiArCj4gPiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9EUCkKPiA+ICAJ CWludGVsX2RkaV9wcmVfZW5hYmxlX2RwKGludGVsX2VuY29kZXIsCj4gPiAgCQkJCQljcnRjLT5j b25maWctPnBvcnRfY2xvY2ssCj4gPiAgCQkJCQljcnRjLT5jb25maWctPmxhbmVfY291bnQsCj4g PiAgCQkJCQljcnRjLT5jb25maWctPnNoYXJlZF9kcGxsLAo+ID4gIAkJCQkJaW50ZWxfY3J0Y19o YXNfdHlwZShjcnRjLT5jb25maWcsCj4gPiAgCQkJCQkJCSAgICBJTlRFTF9PVVRQVVRfRFBfTVNU KSk7Cj4gPiAtCX0KPiA+IC0JaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0hETUkpIHsKPiA+ICsK PiA+ICsJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0hETUkpCj4gPiAgCQlpbnRlbF9kZGlfcHJl X2VuYWJsZV9oZG1pKGludGVsX2VuY29kZXIsCj4gPiAgCQkJCQkgIGNydGMtPmNvbmZpZy0+aGFz X2hkbWlfc2luaywKPiA+ICAJCQkJCSAgJmNydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2Rl LAo+ID4gIAkJCQkJICBjcnRjLT5jb25maWctPnNoYXJlZF9kcGxsKTsKPiA+IC0JfQo+ID4gKwo+ ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcG9zdF9kaXNhYmxlKHN0cnVj dCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ID4gQEAgLTI0MzUsNiArMjQ2Miw3MiBA QCBpbnRlbF9kZGlfZ2V0X2xpbmtfZHBsbChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQg Y2xvY2spCj4gPiAgCXJldHVybiBwbGw7Cj4gPiAgfQo+ID4gIAo+ID4gK2Jvb2wKPiA+ICtpbnRl bF9kZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgbWF4X2xpbmtf cmF0ZSwKPiA+ICsJCSAgICAgdWludDhfdCBtYXhfbGFuZV9jb3VudCwgYm9vbCBsaW5rX21zdCkK PiA+ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGludGVsX2Rw LT5hdHRhY2hlZF9jb25uZWN0b3I7Cj4gPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy ID0gY29ubmVjdG9yLT5lbmNvZGVyOwo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiA+ICsJc3RydWN0IGludGVsX3No YXJlZF9kcGxsICpwbGw7Cj4gPiArCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9jb25maWcgdG1w X3BsbF9jb25maWc7Cj4gPiArCWludCBsaW5rX3JhdGUsIG1heF9saW5rX3JhdGVfaW5kZXgsIGxp bmtfcmF0ZV9pbmRleDsKPiA+ICsJdWludDhfdCBsYW5lX2NvdW50Owo+ID4gKwlpbnQgY29tbW9u X3JhdGVzW0RQX01BWF9TVVBQT1JURURfUkFURVNdID0ge307Cj4gPiArCWJvb2wgcmV0ID0gZmFs c2U7Cj4gPiArCj4gPiArCW1heF9saW5rX3JhdGVfaW5kZXggPSBpbnRlbF9kcF9saW5rX3JhdGVf aW5kZXgoaW50ZWxfZHAsIGNvbW1vbl9yYXRlcywKPiA+ICsJCQkJCQkgICAgICAgbWF4X2xpbmtf cmF0ZSk7Cj4gPiArCWlmIChtYXhfbGlua19yYXRlX2luZGV4IDwgMCkgewo+ID4gKwkJRFJNX0VS Uk9SKCJJbnZhbGlkIExpbmsgUmF0ZVxuIik7Cj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCX0K PiA+ICsKPiA+ICsJZm9yIChsYW5lX2NvdW50ID0gbWF4X2xhbmVfY291bnQ7IGxhbmVfY291bnQg PiAwOyBsYW5lX2NvdW50ID4+PSAxKSB7Cj4gPiArCQlmb3IgKGxpbmtfcmF0ZV9pbmRleCA9IG1h eF9saW5rX3JhdGVfaW5kZXg7Cj4gPiArCQkgICAgIGxpbmtfcmF0ZV9pbmRleCA+PSAwOyBsaW5r X3JhdGVfaW5kZXgtLSkgewo+ID4gKwkJCWxpbmtfcmF0ZSA9IGNvbW1vbl9yYXRlc1tsaW5rX3Jh dGVfaW5kZXhdOwo+ID4gKwkJCXBsbCA9IGludGVsX2RkaV9nZXRfbGlua19kcGxsKGludGVsX2Rw LCBsaW5rX3JhdGUpOwo+ID4gKwkJCWlmIChwbGwgPT0gTlVMTCkgewo+ID4gKwkJCQlEUk1fRVJS T1IoIkNvdWxkIG5vdCBmaW5kIERQTEwgZm9yIGxpbmsgdHJhaW5pbmcuXG4iKTsKPiA+ICsJCQkJ cmV0dXJuIGZhbHNlOwo+ID4gKwkJCX0KPiA+ICsJCQl0bXBfcGxsX2NvbmZpZyA9IHBsbC0+Y29u ZmlnOwo+ID4gKwkJCXBsbC0+ZnVuY3MuZW5hYmxlKGRldl9wcml2LCBwbGwpOwo+ID4gKwo+ID4g KwkJCWludGVsX2RwX3NldF9saW5rX3BhcmFtcyhpbnRlbF9kcCwgbGlua19yYXRlLAo+ID4gKwkJ CQkJCSBsYW5lX2NvdW50LCBsaW5rX21zdCk7Cj4gPiArCj4gPiArCQkJaW50ZWxfZGRpX2Nsa19z ZWxlY3QoZW5jb2RlciwgcGxsKTsKPiA+ICsJCQlpbnRlbF9wcmVwYXJlX2RwX2RkaV9idWZmZXJz KGVuY29kZXIpOwo+ID4gKwkJCWludGVsX2RkaV9pbml0X2RwX2J1Zl9yZWcoZW5jb2Rlcik7Cj4g PiArCQkJaW50ZWxfZHBfc2lua19kcG1zKGludGVsX2RwLCBEUk1fTU9ERV9EUE1TX09OKTsKPiA+ ICsJCQlyZXQgPSBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGludGVsX2RwKTsKPiA+ICsJCQlp ZiAocmV0KQo+ID4gKwkJCQlicmVhazsKPiA+ICsKPiA+ICsJCQkvKiBEaXNhYmxlIHBvcnQgZm9s bG93ZWQgYnkgUExMIGZvciBuZXh0Cj4gPiArCQkJICpyZXRyeS9jbGVhbiB1cAo+ID4gKwkJCSAq Lwo+ID4gKwkJCWludGVsX2RkaV9wb3N0X2Rpc2FibGUoZW5jb2RlciwgTlVMTCwgTlVMTCk7Cj4g PiArCQkJcGxsLT5mdW5jcy5kaXNhYmxlKGRldl9wcml2LCBwbGwpOwo+ID4gKwkJCXBsbC0+Y29u ZmlnID0gdG1wX3BsbF9jb25maWc7Cj4gPiArCQl9Cj4gPiArCQlpZiAocmV0KSB7Cj4gPiArCQkJ RFJNX0RFQlVHX0tNUygiTGluayBUcmFpbmluZyBzdWNjZXNzZnVsIGF0IGxpbmsgcmF0ZTogJWQg bGFuZTogJWRcbiIsCj4gPiArCQkJCSAgICAgIGxpbmtfcmF0ZSwgbGFuZV9jb3VudCk7Cj4gPiAr CQkJYnJlYWs7Cj4gPiArCQl9Cj4gPiArCX0KPiA+ICsKPiA+ICsJaW50ZWxfZHBfc3RvcF9saW5r X3RyYWluKGludGVsX2RwKTsKPiA+ICsKPiA+ICsJaWYgKCFsYW5lX2NvdW50KQo+ID4gKwkJRFJN X0VSUk9SKCJMaW5rIFRyYWluaW5nIEZhaWxlZFxuIik7Cj4gPiArCj4gPiArCXJldHVybiByZXQ7 Cj4gPiArfQo+ID4gKwo+ID4gIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgZW51bSBwb3J0IHBvcnQpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ IGluZGV4IDY5Y2VlOWIuLmQ4MWM2N2NiIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu Ywo+ID4gQEAgLTE1MDYsNiArMTUwNiwyMSBAQCBpbnRlbF9kcF9tYXhfbGlua19yYXRlKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiAgCXJldHVybiByYXRlc1tsZW4gLSAxXTsKPiA+ICB9 Cj4gPiAgCj4gPiAraW50IGludGVsX2RwX2xpbmtfcmF0ZV9pbmRleChzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLCBpbnQgKmNvbW1vbl9yYXRlcywKPiA+ICsJCQkgICAgIGludCBsaW5rX3JhdGUp Cj4gPiArewo+ID4gKwlpbnQgY29tbW9uX2xlbjsKPiA+ICsJaW50IGluZGV4Owo+ID4gKwo+ID4g Kwljb21tb25fbGVuID0gaW50ZWxfZHBfY29tbW9uX3JhdGVzKGludGVsX2RwLCBjb21tb25fcmF0 ZXMpOwo+ID4gKwlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBjb21tb25fbGVuOyBpbmRleCsrKSB7 Cj4gPiArCQlpZiAobGlua19yYXRlID09IGNvbW1vbl9yYXRlc1tjb21tb25fbGVuIC0gaW5kZXgg LSAxXSkKPiA+ICsJCQlyZXR1cm4gY29tbW9uX2xlbiAtIGluZGV4IC0gMTsKPiA+ICsJfQo+ID4g Kwo+ID4gKwlyZXR1cm4gLTE7Cj4gPiArfQo+ID4gKwo+ID4gIGludCBpbnRlbF9kcF9yYXRlX3Nl bGVjdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgcmF0ZSkKPiA+ICB7Cj4gPiAgCXJl dHVybiByYXRlX3RvX2luZGV4KHJhdGUsIGludGVsX2RwLT5zaW5rX3JhdGVzKTsKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPiA+IGluZGV4IGM0 MzhiMDIuLjZlYjVlYjYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcF9saW5rX3RyYWluaW5nLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwX2xpbmtfdHJhaW5pbmcuYwo+ID4gQEAgLTMxMyw5ICszMTMsMTYgQEAgdm9pZCBpbnRlbF9k cF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICAJCQkJRFBf VFJBSU5JTkdfUEFUVEVSTl9ESVNBQkxFKTsKPiA+ICB9Cj4gPiAgCj4gPiAtdm9pZAo+ID4gK2Jv b2wKPiA+ICBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4gPiAgewo+ID4gLQlpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KGlu dGVsX2RwKTsKPiA+IC0JaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlv bihpbnRlbF9kcCk7Cj4gPiArCWJvb2wgcmV0Owo+ID4gKwo+ID4gKwlpZiAoaW50ZWxfZHBfbGlu a190cmFpbmluZ19jbG9ja19yZWNvdmVyeShpbnRlbF9kcCkpIHsKPiA+ICsJCXJldCA9IGludGVs X2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24oaW50ZWxfZHApOwo+ID4gKwkJ aWYgKHJldCkKPiA+ICsJCQlyZXR1cm4gdHJ1ZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4g ZmFsc2U7Cj4gPiAgfQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IGluZGV4IDhmZDE2 YWQuLjA4Y2I1NzEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IEBAIC0x MTY0LDYgKzExNjQsOCBAQCB2b2lkIGludGVsX2RkaV9jbG9ja19nZXQoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gPiAgCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZyk7Cj4gPiAgdm9pZCBpbnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2Moc3RydWN0IGRy bV9jcnRjICpjcnRjLCBib29sIHN0YXRlKTsKPiA+ICB1aW50MzJfdCBkZGlfc2lnbmFsX2xldmVs cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+ICtib29sIGludGVsX2RkaV9saW5rX3Ry YWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtYXhfbGlua19yYXRlLAo+ID4gKwkJ CSAgdWludDhfdCBtYXhfbGFuZV9jb3VudCwgYm9vbCBsaW5rX21zdCk7Cj4gPiAgc3RydWN0IGlu dGVsX3NoYXJlZF9kcGxsICppbnRlbF9kZGlfZ2V0X2xpbmtfZHBsbChzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLAo+ID4gIAkJCQkJCSAgaW50IGNsb2NrKTsKPiA+ICB1bnNpZ25lZCBpbnQgaW50 ZWxfZmJfYWxpZ25faGVpZ2h0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiBAQCAtMTM4NSw3 ICsxMzg3LDcgQEAgYm9vbCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiA+ICB2b2lkIGludGVsX2RwX3NldF9saW5rX3Bh cmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ID4gIAkJCSAgICAgIGludCBsaW5rX3Jh dGUsIHVpbnQ4X3QgbGFuZV9jb3VudCwKPiA+ICAJCQkgICAgICBib29sIGxpbmtfbXN0KTsKPiA+ IC12b2lkIGludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9k cCk7Cj4gPiArYm9vbCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApOwo+ID4gIHZvaWQgaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApOwo+ID4gIHZvaWQgaW50ZWxfZHBfc2lua19kcG1zKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsIGludCBtb2RlKTsKPiA+ICB2b2lkIGludGVsX2RwX2VuY29kZXJfcmVz ZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPiA+IEBAIC0xNDA3LDYgKzE0MDksOCBA QCB2b2lkIGludGVsX2RwX2FkZF9wcm9wZXJ0aWVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs IHN0cnVjdCBkcm1fY29ubmVjdG9yICpjbwo+ID4gIHZvaWQgaW50ZWxfZHBfbXN0X3N1c3BlbmQo c3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gPiAgdm9pZCBpbnRlbF9kcF9tc3RfcmVzdW1lKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gIGludCBpbnRlbF9kcF9tYXhfbGlua19yYXRlKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gK2ludCBpbnRlbF9kcF9saW5rX3JhdGVfaW5k ZXgoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50ICpjb21tb25fcmF0ZXMsCj4gPiArCQkJ ICAgICBpbnQgbGlua19yYXRlKTsKPiA+ICBpbnQgaW50ZWxfZHBfcmF0ZV9zZWxlY3Qoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwgaW50IHJhdGUpOwo+ID4gIHZvaWQgaW50ZWxfZHBfaG90X3Bs dWcoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpOwo+ID4gIHZvaWQgaW50ZWxf cG93ZXJfc2VxdWVuY2VyX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 Cj4gCj4gLS0gCj4gSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2Vu dGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=