From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v18 5/6] drm/i915/dp: Enable Upfront link training on DDI platforms Date: Tue, 27 Sep 2016 16:59:57 +0300 Message-ID: <87oa39o336.fsf@intel.com> References: <1473984244-4349-6-git-send-email-manasi.d.navare@intel.com> <1474409056-6412-1-git-send-email-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 91D4A6E0FE for ; Tue, 27 Sep 2016 14:06:22 +0000 (UTC) In-Reply-To: <1474409056-6412-1-git-send-email-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMSBTZXAgMjAxNiwgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVs LmNvbT4gd3JvdGU6Cj4gVG8gc3VwcG9ydCBVU0IgdHlwZSBDIGFsdGVybmF0ZSBEUCBtb2RlLCB0 aGUgZGlzcGxheSBkcml2ZXIgbmVlZHMgdG8KPiBrbm93IHRoZSBudW1iZXIgb2YgbGFuZXMgcmVx dWlyZWQgYnkgdGhlIERQIHBhbmVsIGFzIHdlbGwgYXMgbnVtYmVyCj4gb2YgbGFuZXMgdGhhdCBj YW4gYmUgc3VwcG9ydGVkIGJ5IHRoZSB0eXBlLUMgY2FibGUuIFNvbWV0aW1lcywgdGhlCj4gdHlw ZS1DIGNhYmxlIG1heSBsaW1pdCB0aGUgYmFuZHdpZHRoIGV2ZW4gaWYgUGFuZWwgY2FuIHN1cHBv cnQKPiBtb3JlIGxhbmVzLiBUbyBhZGRyZXNzIHRoZXNlIHNjZW5hcmlvcyB3ZSBuZWVkIHRvIHRy YWluIHRoZSBsaW5rIGJlZm9yZQo+IG1vZGVzZXQuIFRoaXMgdXBmcm9udCBsaW5rIHRyYWluaW5n IGNhY2hlcyB0aGUgdmFsdWVzIG9mIG1heCBsaW5rIHJhdGUKPiBhbmQgbWF4IGxhbmUgY291bnQg dGhhdCBnZXQgdXNlZCBsYXRlciBkdXJpbmcgbW9kZXNldC4gVXBmcm9udCBsaW5rCj4gdHJhaW5p bmcgZG9lcyBub3QgY2hhbmdlIGFueSBIVyBzdGF0ZSwgdGhlIGxpbmsgaXMgZGlzYWJsZWQgYW5k IFBMTAo+IHZhbHVlcyBhcmUgcmVzZXQgdG8gcHJldmlvdXMgdmFsdWVzIGFmdGVyIHVwZnJvbnQg bGluayB0YXJpbmluZyBzbwo+IHRoYXQgc3Vic2VxdWVudCBtb2Rlc2V0IGlzIG5vdCBhd2FyZSBv ZiB0aGVzZSBjaGFuZ2VzLgoKSSB0aGluayB3ZSBzaG91bGQgY2FsbCB0aW1lb3V0IG9uIHRoaXMg cGF0Y2gsIGFuZCBmb2N1cyBvbiB0aGUgRFAKY29tcGxpYW5jZSBwYXJ0cyBmaXJzdC4gRnJhbmts eSwgSSB0aGluayB0aGlzIHBhdGNoIGlzIHJlYWxseSBzY2FyeS4gSWYKSSBnb3QgYSBiaXNlY3Qg cmVzdWx0IGZvciBhIHJlZ3Jlc3Npb24gb24gdGhpcywgSSB3b3VsZCBoYXZlIGFic29sdXRlbHkK bm8gY2x1ZSB3aGF0IGV4YWN0bHkgY2F1c2VkIGl0LgoKUGxlYXNlIGNvcnJlY3QgbWUgaWYgeW91 IHRoaW5rIEknbSB3cm9uZywgYnV0IEkgZG9uJ3QgdGhpbmsgdXBmcm9udCBsaW5rCnRyYWluaW5n IGlzIHN0cmljdGx5IHJlcXVpcmVkIGZvciBEUCBjb21wbGlhbmNlLiAoQ29udmVyc2VseSwgaWYg eW91CnRoaW5rIHRoaXMgaXMgcmVxdWlyZWQgZm9yIERQIGNvbXBsaWFuY2UsIHRoZSByYXRpb25h bGUgaXMgYWJzb2x1dGVseQpyZXF1aXJlZCBpbiB0aGUgY29tbWl0IG1lc3NhZ2UgaW4gbW9yZSB0 aGFuIGp1c3QgYSBmZXcgd29yZHMuKQoKQlIsCkphbmkuCgoKPgo+IFRoaXMgcGF0Y2ggaXMgYmFz ZWQgb24gcHJpb3Igd29yayBkb25lIGJ5Cj4gUixEdXJnYWRvc3MgPGR1cmdhZG9zcy5yQGludGVs LmNvbT4KPgo+IENoYW5nZXMgc2luY2UgdjE3Ogo+ICogUmViYXNlZCBvbiB0aGUgbGF0ZXN0IG5p Z2h0bHkKPiBDaGFuZ2VzIHNpbmNlIHYxNjoKPiAqIFVzZSBIQVNfRERJIG1hY3JvIGZvciBlbmFi bGluZyB0aGlzIGZlYXR1cmUgKFJvZHJpZ28gVml2aSkKPiAqIEZpeCBzb21lIHVubmVjZXNzYXJ5 IHJlbW92YWxzL2NoYW5nZXMgZHVlIHRvIHJlYmFzZSAoUm9kcmlnbyBWaXZpKQo+Cj4gQ2hhbmdl cyBzaW5jZSB2MTU6Cj4gKiBTcGxpdCB0aGlzIHBhdGNoIGludG8gdHdvIHBhdGNoZXMgLSBvbmUg d2l0aCBmdW5jdGlvbmFsCj4gY2hhbmdlcyB0byBlbmFibGUgdXBmcm9udCBhbmQgb3RoZXIgd2l0 aCBtb3ZpbmcgdGhlIGV4aXN0aW5nCj4gZnVuY3Rpb25zIGFyb3VuZCBzbyB0aGF0IHRoZXkgY2Fu IGJlIHVzZWQgZm9yIHVwZnJvbnQgKEphbmkgTmlrdWxhKQo+ICogQ2xlYW5lZCB1cCB0aGUgY29t bWl0IG1lc3NhZ2UKPgo+IFNpZ25lZC1vZmYtYnk6IER1cmdhZG9zcyBSIDxkdXJnYWRvc3MuckBp bnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSmltIEJyaWRlIDxqaW0uYnJpZGVAbGludXguaW50 ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBp bnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICAg ICAgICAgICB8ICAyMSArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAg ICAgICAgICAgIHwgMTkwICsrKysrKysrKysrKysrKysrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYyB8ICAgMSAtCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICB8ICAxNCArLQo+ICA0IGZpbGVzIGNo YW5nZWQsIDIxOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmMKPiBpbmRleCAwOTMwMzhjLi44ZTUyNTA3IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmMKPiBAQCAtMTY3Niw3ICsxNjc2LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRp X3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlwbGwtPmNv bmZpZy5jcnRjX21hc2sgPSAwOwo+ICAKPiAgCS8qIElmIExpbmsgVHJhaW5pbmcgZmFpbHMsIHNl bmQgYSB1ZXZlbnQgdG8gZ2VuZXJhdGUgYSBob3RwbHVnICovCj4gLQlpZiAoIWludGVsX2RkaV9s aW5rX3RyYWluKGludGVsX2RwLCBsaW5rX3JhdGUsIGxhbmVfY291bnQsIGxpbmtfbXN0KSkKPiAr CWlmICghaW50ZWxfZGRpX2xpbmtfdHJhaW4oaW50ZWxfZHAsIGxpbmtfcmF0ZSwgbGFuZV9jb3Vu dCwgbGlua19tc3QsCj4gKwkJCQkgIGZhbHNlKSkKPiAgCQlkcm1fa21zX2hlbHBlcl9ob3RwbHVn X2V2ZW50KGVuY29kZXItPmJhc2UuZGV2KTsKPiAgCXBsbC0+Y29uZmlnID0gdG1wX3BsbF9jb25m aWc7Cj4gIH0KPiBAQCAtMjQ2NCw3ICsyNDY1LDcgQEAgaW50ZWxfZGRpX2dldF9saW5rX2RwbGwo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IGNsb2NrKQo+ICAKPiAgYm9vbAo+ICBpbnRl bF9kZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgbWF4X2xpbmtf cmF0ZSwKPiAtCQkgICAgIHVpbnQ4X3QgbWF4X2xhbmVfY291bnQsIGJvb2wgbGlua19tc3QpCj4g KwkJICAgICB1aW50OF90IG1heF9sYW5lX2NvdW50LCBib29sIGxpbmtfbXN0LCBib29sIGlzX3Vw ZnJvbnQpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGludGVs X2RwLT5hdHRhY2hlZF9jb25uZWN0b3I7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciA9IGNvbm5lY3Rvci0+ZW5jb2RlcjsKPiBAQCAtMjUxMyw2ICsyNTE0LDcgQEAgaW50ZWxfZGRp X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IG1heF9saW5rX3JhdGUs Cj4gIAkJCXBsbC0+ZnVuY3MuZGlzYWJsZShkZXZfcHJpdiwgcGxsKTsKPiAgCQkJcGxsLT5jb25m aWcgPSB0bXBfcGxsX2NvbmZpZzsKPiAgCQl9Cj4gKwo+ICAJCWlmIChyZXQpIHsKPiAgCQkJRFJN X0RFQlVHX0tNUygiTGluayBUcmFpbmluZyBzdWNjZXNzZnVsIGF0IGxpbmsgcmF0ZTogJWQgbGFu ZTogJWRcbiIsCj4gIAkJCQkgICAgICBsaW5rX3JhdGUsIGxhbmVfY291bnQpOwo+IEBAIC0yNTIy LDYgKzI1MjQsMjEgQEAgaW50ZWxfZGRpX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwgaW50IG1heF9saW5rX3JhdGUsCj4gIAo+ICAJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWlu KGludGVsX2RwKTsKPiAgCj4gKwlpZiAoaXNfdXBmcm9udCkgewo+ICsJCURSTV9ERUJVR19LTVMo IlVwZnJvbnQgbGluayB0cmFpbiAlczogbGlua19jbG9jazolZCBsYW5lczolZFxuIiwKPiArCQkJ ICAgICAgcmV0ID8gIlBhc3NlZCIgOiAiRmFpbGVkIiwKPiArCQkJICAgICAgbGlua19yYXRlLCBs YW5lX2NvdW50KTsKPiArCQkvKiBEaXNhYmxlIHBvcnQgZm9sbG93ZWQgYnkgUExMIGZvciBuZXh0 IHJldHJ5L2NsZWFuIHVwICovCj4gKwkJaW50ZWxfZGRpX3Bvc3RfZGlzYWJsZShlbmNvZGVyLCBO VUxMLCBOVUxMKTsKPiArCQlwbGwtPmZ1bmNzLmRpc2FibGUoZGV2X3ByaXYsIHBsbCk7Cj4gKwkJ cGxsLT5jb25maWcgPSB0bXBfcGxsX2NvbmZpZzsKPiArCQlpZiAocmV0KSB7Cj4gKwkJCS8qIFNh dmUgdGhlIHVwZnJvbnQgdmFsdWVzICovCj4gKwkJCWludGVsX2RwLT5tYXhfbGFuZXNfdXBmcm9u dCA9IGxhbmVfY291bnQ7Cj4gKwkJCWludGVsX2RwLT5tYXhfbGlua19yYXRlX3VwZnJvbnQgPSBs aW5rX3JhdGU7Cj4gKwkJfQo+ICsJfQo+ICsKPiAgCWlmICghbGFuZV9jb3VudCkKPiAgCQlEUk1f RVJST1IoIkxpbmsgVHJhaW5pbmcgRmFpbGVkXG4iKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jCj4gaW5kZXggOGQ5YThhYi4uYTA1OGQ1ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu Ywo+IEBAIC0xNTMsMTIgKzE1MywyMSBAQCBpbnRlbF9kcF9tYXhfbGlua19idyhzdHJ1Y3QgaW50 ZWxfZHAgICppbnRlbF9kcCkKPiAgc3RhdGljIHU4IGludGVsX2RwX21heF9sYW5lX2NvdW50KHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+IC0JdTggc291 cmNlX21heCwgc2lua19tYXg7Cj4gKwl1OCB0ZW1wLCBzb3VyY2VfbWF4LCBzaW5rX21heDsKPiAg Cj4gIAlzb3VyY2VfbWF4ID0gaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lczsKPiAgCXNpbmtfbWF4 ID0gZHJtX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwLT5kcGNkKTsKPiAgCj4gLQlyZXR1cm4g bWluKHNvdXJjZV9tYXgsIHNpbmtfbWF4KTsKPiArCXRlbXAgPSBtaW4oc291cmNlX21heCwgc2lu a19tYXgpOwo+ICsKPiArCS8qCj4gKwkgKiBMaW1pdCBtYXggbGFuZXMgdy5yLnQgdG8gdGhlIG1h eCB2YWx1ZSBmb3VuZAo+ICsJICogdXNpbmcgVXBmcm9udCBsaW5rIHRyYWluaW5nIGFsc28uCj4g KwkgKi8KPiArCWlmIChpbnRlbF9kcC0+bWF4X2xhbmVzX3VwZnJvbnQpCj4gKwkJcmV0dXJuIG1p bih0ZW1wLCBpbnRlbF9kcC0+bWF4X2xhbmVzX3VwZnJvbnQpOwo+ICsJZWxzZQo+ICsJCXJldHVy biB0ZW1wOwo+ICB9Cj4gIAo+ICAvKgo+IEBAIC0xOTAsNiArMTk5LDQyIEBAIGludGVsX2RwX21h eF9kYXRhX3JhdGUoaW50IG1heF9saW5rX2Nsb2NrLCBpbnQgbWF4X2xhbmVzKQo+ICAJcmV0dXJu IChtYXhfbGlua19jbG9jayAqIG1heF9sYW5lcyAqIDgpIC8gMTA7Cj4gIH0KPiAgCj4gK3N0YXRp YyBpbnQgaW50ZWxfZHBfdXBmcm9udF9jcnRjX2Rpc2FibGUoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gKwkJCQkJIHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4LAo+ICsJCQkJ CSBib29sIGVuYWJsZSkKPiArewo+ICsJaW50IHJldDsKPiArCXN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICsJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICsJZW51bSBwaXBlIHBp cGUgPSBjcnRjLT5waXBlOwo+ICsKPiArCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhk ZXYpOwo+ICsJaWYgKCFzdGF0ZSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlzdGF0ZS0+ YWNxdWlyZV9jdHggPSBjdHg7Cj4gKwo+ICsJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRf Y3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gKwlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKSB7Cj4g KwkJcmV0ID0gUFRSX0VSUihjcnRjX3N0YXRlKTsKPiArCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUo c3RhdGUpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiJXNh YmxpbmcgY3J0YyAlYyAlcyB1cGZyb250IGxpbmsgdHJhaW5cbiIsCj4gKwkJCWVuYWJsZSA/ICJF biIgOiAiRGlzIiwKPiArCQkJcGlwZV9uYW1lKHBpcGUpLAo+ICsJCQllbmFibGUgPyAiYWZ0ZXIi IDogImJlZm9yZSIpOwo+ICsKPiArCWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlID0gZW5hYmxlOwo+ ICsJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwo+ICsJaWYgKHJldCkKPiArCQlkcm1f YXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4g IHN0YXRpYyBpbnQKPiAgaW50ZWxfZHBfZG93bnN0cmVhbV9tYXhfZG90Y2xvY2soc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKPiAgewo+IEBAIC0yODEsNiArMzI2LDE3IEBAIHN0YXRpYyBpbnQg aW50ZWxfZHBfY29tbW9uX3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAlpbnQg c291cmNlX2xlbiwgc2lua19sZW47Cj4gIAo+ICAJc2lua19sZW4gPSBpbnRlbF9kcF9zaW5rX3Jh dGVzKGludGVsX2RwLCAmc2lua19yYXRlcyk7Cj4gKwo+ICsJLyogQ2FwIHNpbmsgcmF0ZXMgdy5y LnQgdXBmcm9udCB2YWx1ZXMgKi8KPiArCWlmIChpbnRlbF9kcC0+bWF4X2xpbmtfcmF0ZV91cGZy b250KSB7Cj4gKwkJaW50IGxlbiA9IHNpbmtfbGVuIC0gMTsKPiArCj4gKwkJd2hpbGUgKGxlbiA+ IDAgJiYgc2lua19yYXRlc1tsZW5dID4KPiArCQkgICAgICAgaW50ZWxfZHAtPm1heF9saW5rX3Jh dGVfdXBmcm9udCkKPiArCQkJbGVuLS07Cj4gKwkJc2lua19sZW4gPSBsZW4gKyAxOwo+ICsJfQo+ ICsKPiAgCXNvdXJjZV9sZW4gPSBpbnRlbF9kcF9zb3VyY2VfcmF0ZXMoaW50ZWxfZHAsICZzb3Vy Y2VfcmF0ZXMpOwo+ICAKPiAgCXJldHVybiBpbnRlcnNlY3RfcmF0ZXMoc291cmNlX3JhdGVzLCBz b3VyY2VfbGVuLAo+IEBAIC0yODgsNiArMzQ0LDkyIEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfY29t bW9uX3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJCSAgICAgICBjb21tb25f cmF0ZXMpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgYm9vbCBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJh aW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiArewo+ICsJc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gKwlz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFz ZTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9lbmNvZGVyLT5iYXNlLmRldjsK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAr CXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOwo+ICsJ c3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKPiArCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gTlVMTDsKPiArCXN0cnVj dCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2Nv bmZpZyB0bXBfcGxsX2NvbmZpZzsKPiArCWJvb2wgZGlzYWJsZV9kcGxsID0gZmFsc2U7Cj4gKwlp bnQgcmV0Owo+ICsJYm9vbCBkb25lID0gZmFsc2UsIGhhc19tc3QgPSBmYWxzZTsKPiArCXVpbnQ4 X3QgbWF4X2xhbmVzOwo+ICsJaW50IGNvbW1vbl9yYXRlc1tEUF9NQVhfU1VQUE9SVEVEX1JBVEVT XSA9IHt9Owo+ICsJaW50IGNvbW1vbl9sZW47Cj4gKwllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJf ZG9tYWluIHBvd2VyX2RvbWFpbjsKPiArCj4gKwlwb3dlcl9kb21haW4gPSBpbnRlbF9kaXNwbGF5 X3BvcnRfcG93ZXJfZG9tYWluKGludGVsX2VuY29kZXIpOwo+ICsJaW50ZWxfZGlzcGxheV9wb3dl cl9nZXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7Cj4gKwo+ICsJY29tbW9uX2xlbiA9IGludGVs X2RwX2NvbW1vbl9yYXRlcyhpbnRlbF9kcCwgY29tbW9uX3JhdGVzKTsKPiArCW1heF9sYW5lcyA9 IGludGVsX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwKTsKPiArCWlmIChXQVJOX09OKGNvbW1v bl9sZW4gPD0gMCkpCj4gKwkJcmV0dXJuIHRydWU7Cj4gKwo+ICsJZHJtX21vZGVzZXRfYWNxdWly ZV9pbml0KCZjdHgsIDApOwo+ICtyZXRyeToKPiArCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNv bmZpZy0+Y29ubmVjdGlvbl9tdXRleCwgJmN0eCk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXhp dF9mYWlsOwo+ICsKPiArCWlmIChpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMpIHsKPiArCQljcnRj ID0gaW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRjOwo+ICsKPiArCQlyZXQgPSBkcm1fbW9kZXNldF9s b2NrKCZjcnRjLT5tdXRleCwgJmN0eCk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBleGl0X2Zh aWw7Cj4gKwo+ICsJCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPnByaW1hcnktPm11dGV4 LCAmY3R4KTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGV4aXRfZmFpbDsKPiArCj4gKwkJaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwkJcGxsID0gaW50ZWxfY3J0Yy0+Y29u ZmlnLT5zaGFyZWRfZHBsbDsKPiArCQlkaXNhYmxlX2RwbGwgPSB0cnVlOwo+ICsJCWhhc19tc3Qg PSBpbnRlbF9jcnRjX2hhc190eXBlKGludGVsX2NydGMtPmNvbmZpZywKPiArCQkJCQkgICAgICBJ TlRFTF9PVVRQVVRfRFBfTVNUKTsKPiArCQlyZXQgPSBpbnRlbF9kcF91cGZyb250X2NydGNfZGlz YWJsZShpbnRlbF9jcnRjLCAmY3R4LCBmYWxzZSk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBl eGl0X2ZhaWw7Cj4gKwl9Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRwbGxfbG9jayk7 Cj4gKwlpZiAoZGlzYWJsZV9kcGxsKSB7Cj4gKwkJLyogQ2xlYXIgdGhlIFBMTCBjb25maWcgc3Rh dGUgKi8KPiArCQl0bXBfcGxsX2NvbmZpZyA9IHBsbC0+Y29uZmlnOwo+ICsJCXBsbC0+Y29uZmln LmNydGNfbWFzayA9IDA7Cj4gKwl9Cj4gKwo+ICsJZG9uZSA9IGludGVsX2RwLT51cGZyb250X2xp bmtfdHJhaW4oaW50ZWxfZHAsCj4gKwkJCQkJICAgIGNvbW1vbl9yYXRlc1tjb21tb25fbGVuLTFd LAo+ICsJCQkJCSAgICBtYXhfbGFuZXMsCj4gKwkJCQkJICAgIGhhc19tc3QsCj4gKwkJCQkJICAg IHRydWUpOwo+ICsJaWYgKGRpc2FibGVfZHBsbCkKPiArCQlwbGwtPmNvbmZpZyA9IHRtcF9wbGxf Y29uZmlnOwo+ICsKPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRwbGxfbG9jayk7Cj4gKwo+ ICsJaWYgKGNydGMpCj4gKwkJcmV0ID0gaW50ZWxfZHBfdXBmcm9udF9jcnRjX2Rpc2FibGUoaW50 ZWxfY3J0YywgJmN0eCwgdHJ1ZSk7Cj4gKwo+ICtleGl0X2ZhaWw6Cj4gKwlpZiAocmV0ID09IC1F REVBRExLKSB7Cj4gKwkJZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKPiArCQlnb3RvIHJldHJ5 Owo+ICsJfQo+ICsJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiArCWRybV9tb2Rlc2V0 X2FjcXVpcmVfZmluaSgmY3R4KTsKPiArCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2 LCBwb3dlcl9kb21haW4pOwo+ICsJcmV0dXJuIGRvbmU7Cj4gK30KPiArCj4gIHN0YXRpYyBlbnVt IGRybV9tb2RlX3N0YXR1cwo+ICBpbnRlbF9kcF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4gIAkJICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+ IEBAIC0zMTEsNiArNDUzLDE5IEBAIGludGVsX2RwX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwKPiAgCQl0YXJnZXRfY2xvY2sgPSBmaXhlZF9tb2RlLT5jbG9jazsK PiAgCX0KPiAgCj4gKwlpZiAoaW50ZWxfZHAtPnVwZnJvbnRfbGlua190cmFpbiAmJiAhaW50ZWxf ZHAtPnVwZnJvbnRfZG9uZSkgewo+ICsJCWJvb2wgZG9fdXBmcm9udF9saW5rX3RyYWluOwo+ICsJ CS8qIERvIG5vdCBkbyB1cGZyb250IGxpbmsgdHJhaW4sIGlmIGl0IGlzIGEgY29tcGxpYW5jZQo+ ICsJCSAqIHJlcXVlc3QKPiArCQkgKi8KPiArCQlkb191cGZyb250X2xpbmtfdHJhaW4gPSAhaW50 ZWxfZHAtPnVwZnJvbnRfZG9uZSAmJgo+ICsJCQkoaW50ZWxfZHAtPmNvbXBsaWFuY2VfdGVzdF90 eXBlICE9Cj4gKwkJCSBEUF9URVNUX0xJTktfVFJBSU5JTkcpOwo+ICsKPiArCQlpZiAoZG9fdXBm cm9udF9saW5rX3RyYWluKQo+ICsJCQlpbnRlbF9kcC0+dXBmcm9udF9kb25lID0gaW50ZWxfZHBf dXBmcm9udF9saW5rX3RyYWluKGludGVsX2RwKTsKPiArCX0KPiArCj4gIAltYXhfbGlua19jbG9j ayA9IGludGVsX2RwX21heF9saW5rX3JhdGUoaW50ZWxfZHApOwo+ICAJbWF4X2xhbmVzID0gaW50 ZWxfZHBfbWF4X2xhbmVfY291bnQoaW50ZWxfZHApOwo+ICAKPiBAQCAtMTQ5OSw2ICsxNjU0LDkg QEAgaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJ aW50IHJhdGVzW0RQX01BWF9TVVBQT1JURURfUkFURVNdID0ge307Cj4gIAlpbnQgbGVuOwo+ICAK PiArCWlmIChpbnRlbF9kcC0+bWF4X2xpbmtfcmF0ZV91cGZyb250KQo+ICsJCXJldHVybiBpbnRl bF9kcC0+bWF4X2xpbmtfcmF0ZV91cGZyb250Owo+ICsKPiAgCWxlbiA9IGludGVsX2RwX2NvbW1v bl9yYXRlcyhpbnRlbF9kcCwgcmF0ZXMpOwo+ICAJaWYgKFdBUk5fT04obGVuIDw9IDApKQo+ICAJ CXJldHVybiAxNjIwMDA7Cj4gQEAgLTE2NDQsNiArMTgwMiwyMSBAQCBpbnRlbF9kcF9jb21wdXRl X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCWZvciAoOyBicHAgPj0g NiozOyBicHAgLT0gMiozKSB7Cj4gIAkJbW9kZV9yYXRlID0gaW50ZWxfZHBfbGlua19yZXF1aXJl ZChhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLAo+ICAJCQkJCQkgICBicHApOwo+ICsKPiArCQlp ZiAoIWlzX2VkcChpbnRlbF9kcCkgJiYgaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSkgewo+ICsJCQlj bG9jayA9IG1heF9jbG9jazsKPiArCQkJbGFuZV9jb3VudCA9IGludGVsX2RwLT5tYXhfbGFuZXNf dXBmcm9udDsKPiArCQkJbGlua19jbG9jayA9IGludGVsX2RwLT5tYXhfbGlua19yYXRlX3VwZnJv bnQ7Cj4gKwkJCWxpbmtfYXZhaWwgPSBpbnRlbF9kcF9tYXhfZGF0YV9yYXRlKGxpbmtfY2xvY2ss Cj4gKwkJCQkJCQkgICAgbGFuZV9jb3VudCk7Cj4gKwkJCW1vZGVfcmF0ZSA9IGludGVsX2RwX2xp bmtfcmVxdWlyZWQoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKPiArCQkJCQkJCSAgIGJwcCk7 Cj4gKwkJCWlmIChtb2RlX3JhdGUgPD0gbGlua19hdmFpbCkKPiArCQkJCWdvdG8gZm91bmQ7Cj4g KwkJCWVsc2UKPiArCQkJCWNvbnRpbnVlOwo+ICsJCX0KPiArCj4gIAkJY2xvY2sgPSBtYXhfY2xv Y2s7Cj4gIAkJbGFuZV9jb3VudCA9IG1heF9sYW5lX2NvdW50Owo+ICAJCWxpbmtfY2xvY2sgPSBj b21tb25fcmF0ZXNbY2xvY2tdOwo+IEBAIC0xNjcyLDcgKzE4NDUsNiBAQCBmb3VuZDoKPiAgCX0K PiAgCj4gIAlwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCA9IGxhbmVfY291bnQ7Cj4gLQo+ICAJcGlw ZV9jb25maWctPnBpcGVfYnBwID0gYnBwOwo+ICAJcGlwZV9jb25maWctPnBvcnRfY2xvY2sgPSBj b21tb25fcmF0ZXNbY2xvY2tdOwo+ICAKPiBAQCAtNDQ1Myw4ICs0NjI1LDEyIEBAIGludGVsX2Rw X2xvbmdfcHVsc2Uoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQo+ICAK PiAgb3V0Ogo+ICAJaWYgKChzdGF0dXMgIT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpICYm Cj4gLQkgICAgKGludGVsX2RwLT5pc19tc3QgPT0gZmFsc2UpKQo+ICsJICAgIChpbnRlbF9kcC0+ aXNfbXN0ID09IGZhbHNlKSkgewo+ICAJCWludGVsX2RwX3Vuc2V0X2VkaWQoaW50ZWxfZHApOwo+ ICsJCWludGVsX2RwLT51cGZyb250X2RvbmUgPSBmYWxzZTsKPiArCQlpbnRlbF9kcC0+bWF4X2xh bmVzX3VwZnJvbnQgPSAwOwo+ICsJCWludGVsX2RwLT5tYXhfbGlua19yYXRlX3VwZnJvbnQgPSAw Owo+ICsJfQo+ICAKPiAgCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHRvX2k5MTUoZGV2KSwgcG93 ZXJfZG9tYWluKTsKPiAgCXJldHVybjsKPiBAQCAtNTY5OCw2ICs1ODc0LDEyIEBAIGludGVsX2Rw X2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 LAo+ICAJaWYgKHR5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCkKPiAgCQlpbnRlbF9lbmNv ZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0VEUDsKPiAgCj4gKwkvKiBJbml0aWFsaXplIHVwZnJv bnQgbGluayB0cmFpbmluZyB2ZnVuYyBmb3IgRFAgKi8KPiArCWlmIChpbnRlbF9lbmNvZGVyLT50 eXBlICE9IElOVEVMX09VVFBVVF9FRFApIHsKPiArCQlpZiAoSEFTX0RESShkZXZfcHJpdikpCj4g KwkJCWludGVsX2RwLT51cGZyb250X2xpbmtfdHJhaW4gPSBpbnRlbF9kZGlfbGlua190cmFpbjsK PiArCX0KPiArCj4gIAkvKiBlRFAgb25seSBvbiBwb3J0IEIgYW5kL29yIEMgb24gdmx2L2NodiAq Lwo+ICAJaWYgKFdBUk5fT04oKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRl dikpICYmCj4gIAkJICAgIGlzX2VkcChpbnRlbF9kcCkgJiYgcG9ydCAhPSBQT1JUX0IgJiYgcG9y dCAhPSBQT1JUX0MpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cF9saW5rX3RyYWluaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3Ry YWluaW5nLmMKPiBpbmRleCA2ZWI1ZWI2Li43ODJhOTE5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+IEBAIC0zMDQsNyArMzA0LDYgQEAg aW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQo+ICAJaW50ZWxfZHBfc2V0X2lkbGVfbGlua190cmFpbihpbnRlbF9kcCk7 Cj4gIAo+ICAJcmV0dXJuIGludGVsX2RwLT5jaGFubmVsX2VxX3N0YXR1czsKPiAtCj4gIH0KPiAg Cj4gIHZvaWQgaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCAwYWViMzE3Li5mZGZjMGI2IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtODg3LDYgKzg4NywxMiBAQCBzdHJ1 Y3QgaW50ZWxfZHAgewo+ICAJZW51bSBoZG1pX2ZvcmNlX2F1ZGlvIGZvcmNlX2F1ZGlvOwo+ICAJ Ym9vbCBsaW1pdGVkX2NvbG9yX3JhbmdlOwo+ICAJYm9vbCBjb2xvcl9yYW5nZV9hdXRvOwo+ICsK PiArCS8qIFVwZnJvbnQgbGluayB0cmFpbiBwYXJhbWV0ZXJzICovCj4gKwlpbnQgbWF4X2xpbmtf cmF0ZV91cGZyb250Owo+ICsJdWludDhfdCBtYXhfbGFuZXNfdXBmcm9udDsKPiArCWJvb2wgdXBm cm9udF9kb25lOwo+ICsKPiAgCXVpbnQ4X3QgZHBjZFtEUF9SRUNFSVZFUl9DQVBfU0laRV07Cj4g IAl1aW50OF90IHBzcl9kcGNkW0VEUF9QU1JfUkVDRUlWRVJfQ0FQX1NJWkVdOwo+ICAJdWludDhf dCBkb3duc3RyZWFtX3BvcnRzW0RQX01BWF9ET1dOU1RSRUFNX1BPUlRTXTsKPiBAQCAtOTQ0LDYg Kzk1MCwxMSBAQCBzdHJ1Y3QgaW50ZWxfZHAgewo+ICAJLyogVGhpcyBpcyBjYWxsZWQgYmVmb3Jl IGEgbGluayB0cmFpbmluZyBpcyBzdGFydGVyZCAqLwo+ICAJdm9pZCAoKnByZXBhcmVfbGlua19y ZXRyYWluKShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiAgCj4gKwkvKiBGb3IgVXBmcm9u dCBsaW5rIHRyYWluaW5nICovCj4gKwlib29sICgqdXBmcm9udF9saW5rX3RyYWluKShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLCBpbnQgY2xvY2ssCj4gKwkJCQkgICB1aW50OF90IGxhbmVfY291 bnQsIGJvb2wgbGlua19tc3QsCj4gKwkJCQkgICBib29sIGlzX3VwZnJvbnQpOwo+ICsKPiAgCS8q IERpc3BsYXlwb3J0IGNvbXBsaWFuY2UgdGVzdGluZyAqLwo+ICAJdW5zaWduZWQgbG9uZyBjb21w bGlhbmNlX3Rlc3RfdHlwZTsKPiAgCXVuc2lnbmVkIGxvbmcgY29tcGxpYW5jZV90ZXN0X2RhdGE7 Cj4gQEAgLTExNjYsNyArMTE3Nyw4IEBAIHZvaWQgaW50ZWxfZGRpX2Nsb2NrX2dldChzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgdm9pZCBpbnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRf YWxsb2Moc3RydWN0IGRybV9jcnRjICpjcnRjLCBib29sIHN0YXRlKTsKPiAgdWludDMyX3QgZGRp X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gIGJvb2wgaW50ZWxf ZGRpX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IG1heF9saW5rX3Jh dGUsCj4gLQkJCSAgdWludDhfdCBtYXhfbGFuZV9jb3VudCwgYm9vbCBsaW5rX21zdCk7Cj4gKwkJ CSAgdWludDhfdCBtYXhfbGFuZV9jb3VudCwgYm9vbCBsaW5rX21zdCwKPiArCQkJICBib29sIGlz X3VwZnJvbnQpOwo+ICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKmludGVsX2RkaV9nZXRfbGlu a19kcGxsKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJCQkJCSAgaW50IGNsb2NrKTsK PiAgdW5zaWduZWQgaW50IGludGVsX2ZiX2FsaWduX2hlaWdodChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRl cgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK