From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCHv5 5/5] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Tue, 17 May 2016 14:28:05 +0300 Message-ID: <1463484485.2669.24.camel@gmail.com> References: <1463379967-27751-1-git-send-email-durgadoss.r@intel.com> <1463379967-27751-6-git-send-email-durgadoss.r@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pf0-x244.google.com (mail-pf0-x244.google.com [IPv6:2607:f8b0:400e:c00::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 95E946E6B1 for ; Tue, 17 May 2016 11:28:01 +0000 (UTC) Received: by mail-pf0-x244.google.com with SMTP id 145so1645947pfz.1 for ; Tue, 17 May 2016 04:28:01 -0700 (PDT) In-Reply-To: <1463379967-27751-6-git-send-email-durgadoss.r@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Durgadoss R , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE2LTA1LTE2IGF0IDExOjU2ICswNTMwLCBEdXJnYWRvc3MgUiB3cm90ZToKPiBU byBzdXBwb3J0IFVTQiB0eXBlIEMgYWx0ZXJuYXRlIERQIG1vZGUsIHRoZSBkaXNwbGF5IGRyaXZl ciBuZWVkcyB0bwo+IGtub3cgdGhlIG51bWJlciBvZiBsYW5lcyByZXF1aXJlZCBieSB0aGUgRFAg cGFuZWwgYXMgd2VsbCBhcyBudW1iZXIKPiBvZiBsYW5lcyB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQg YnkgdGhlIHR5cGUtQyBjYWJsZS4gU29tZXRpbWVzLCB0aGUKPiB0eXBlLUMgY2FibGUgbWF5IGxp bWl0IHRoZSBiYW5kd2lkdGggZXZlbiBpZiBQYW5lbCBjYW4gc3VwcG9ydAo+IG1vcmUgbGFuZXMu IFRvIGFkZHJlc3MgdGhlc2Ugc2NlbmFyaW9zLCB0aGUgZGlzcGxheSBkcml2ZXIgd2lsbAo+IHN0 YXJ0IGxpbmsgdHJhaW5pbmcgd2l0aCBtYXggbGFuZXMsIGFuZCBpZiB0aGF0IGZhaWxzLCB0aGUg ZHJpdmVyCj4gZmFsbHMgYmFjayB0byB4MiBsYW5lczsgYW5kIHJlcGVhdHMgdGhpcyBwcm9jZWR1 cmUgZm9yIGFsbAo+IGJhbmR3aWR0aC9sYW5lIGNvbmZpZ3VyYXRpb25zLgo+IAo+ICogU2luY2Ug bGluayB0cmFpbmluZyBpcyBkb25lIGJlZm9yZSBtb2Rlc2V0IG9ubHkgdGhlIHBvcnQKPiDCoCAo YW5kIG5vdCBwaXBlL3BsYW5lcykgYW5kIGl0cyBhc3NvY2lhdGVkIFBMTHMgYXJlIGVuYWJsZWQu Cj4gKiBPbiBEUCBob3RwbHVnOiBEaXJlY3RseSBzdGFydCBsaW5rIHRyYWluaW5nIG9uIHRoZSBE UCBlbmNvZGVyLgo+ICogT24gQ29ubmVjdGVkIGJvb3Qgc2NlbmFyaW9zOiBXaGVuIGJvb3RlZCB3 aXRoIGFuIExGUCBhbmQgYSBEUCwKPiDCoCB0eXBpY2FsbHksIEJJT1MgYnJpbmdzIHVwIERQLiBJ biB0aGVzZSBjYXNlcywgd2UgZGlzYWJsZSB0aGUKPiDCoCBjcnRjIGFuZCB0aGVuIGRvIHVwZnJv bnQgbGluayB0cmFpbmluZzsgYW5kIGJyaW5nIGl0IGJhY2sgdXAuCj4gKiBBbGwgbG9jYWwgY2hh bmdlcyBtYWRlIGZvciB1cGZyb250IGxpbmsgdHJhaW5pbmcgYXJlIHJlc2V0Cj4gwqAgdG8gdGhl aXIgcHJldmlvdXMgdmFsdWVzIG9uY2UgaXQgaXMgZG9uZTsgc28gdGhhdCB0aGUKPiDCoCBzdWJz ZXF1ZW50IG1vZGVzZXQgaXMgbm90IGF3YXJlIG9mIHRoZXNlIGNoYW5nZXMuCj4gCj4gQ2hhbmdl cyBzaW5jZSB2NDoKPiAqIFJlbW92ZWQgdXNhZ2Ugb2YgY3J0Y19zdGF0ZSBpbiB1cGZyb250IGxp bmsgdHJhaW5pbmc7Cj4gwqAgSGVuY2Ugbm8gbmVlZCB0byBmaW5kIGZyZWUgY3J0YyB0byBkbyB1 cGZyb250IG5vdy4KPiAqIFJlLWVuYWJsZSBjcnRjIGlmIGl0IHdhcyBkaXNhYmxlZCBmb3IgdXBm cm9udC4KPiAqIFVzZSBzZXBhcmF0ZSB2YXJpYWJsZXMgdG8gdHJhY2sgbWF4IGxhbmUgY291bnQK PiDCoCBhbmQgbGluayByYXRlIGZvdW5kIGJ5IHVwZnJvbnQsIHdpdGhvdXQgbW9kaWZ5aW5nCj4g wqAgdGhlIG9yaWdpbmFsIERQQ0QgcmVhZCBmcm9tIHBhbmVsLgo+IENoYW5nZXMgc2luY2UgdjM6 Cj4gKiBGaXhlZCBhIHJldHVybiB2YWx1ZSBvbiBCWFQgY2hlY2sKPiAqIFJld29ya2VkIG9uIHRv cCBvZiBieHRfZGRpX3BsbF9zZWxlY3Qgc3BsaXQgZnJvbSBBbmRlcgo+ICogUmVuYW1lZCBmcm9t IGRkaV91cGZyb250IHRvIGJ4dF91cGZyb250IHNpbmNlIHRoZQo+IMKgIHVwZnJvbnQgbG9naWMg aW5jbHVkZXMgQlhUIHNwZWNpZmljIGZ1bmN0aW9ucyBmb3Igbm93Lgo+IENoYW5nZXMgc2luY2Ug djI6Cj4gKiBSZWJhc2VkIG9uIHRvcCBvZiBsYXRlc3QgZHBsbF9tZ3IuYyBjb2RlIGFuZAo+IMKg IGxhdGVzdCBIUEQgcmVsYXRlZCBjbGVhbiB1cHMuCj4gKiBDb3JyZWN0ZWQgcmV0dXJuIHZhbHVl cyBmcm9tIHVwZnJvbnQgKEFuZGVyKQo+ICogQ29ycmVjdGVkIGF0b21pYyBsb2NraW5nIGZvciB1 cGZyb250IGluIGludGVsX2RwLmMgKFZpbGxlKQo+IENoYW5nZXMgc2luY2UgdjE6Cj4gKsKgwqBh bGwgcGxsIHJlbGF0ZWQgZnVuY3Rpb25zIGluc2lkZSBkZGkuYwo+IAo+IFNpZ25lZC1vZmYtYnk6 IER1cmdhZG9zcyBSIDxkdXJnYWRvc3MuckBpbnRlbC5jb20+Cj4gLS0tCj4gwqBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYyB8wqDCoDU4ICsrKysrKysrKysrKysKPiDCoGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmPCoMKgfCAxODMgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0KPiAtCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCB8 wqDCoDEyICsrKwo+IMKgMyBmaWxlcyBjaGFuZ2VkLCAyNDcgaW5zZXJ0aW9ucygrKSwgNiBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRp LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gaW5kZXggN2U2MzMxYS4u M2NjZDFjNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gQEAgLTIzMzAsNiArMjMz MCw2NCBAQCBpbnRlbF9kZGlfaW5pdF9oZG1pX2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0Cj4gKmludGVsX2RpZ19wb3J0KQo+IMKgCXJldHVybiBjb25uZWN0b3I7Cj4gwqB9Cj4g wqAKPiAraW50IGludGVsX2J4dF91cGZyb250X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwKPiArCQkJCWludCBjbG9jaywgdWludDhfdCBsYW5lX2NvdW50KQo+ICt7Cj4gKwlz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBpbnRlbF9kcC0+YXR0YWNoZWRfY29u bmVjdG9yOwo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBjb25uZWN0b3ItPmVu Y29kZXI7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ICsJ c3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyB0bXBfcGxsX2NvbmZpZzsKPiArCXN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHAp Owo+ICsJZW51bSBpbnRlbF9kcGxsX2lkIGRwbGxfaWQgPSAoZW51bSBpbnRlbF9kcGxsX2lkKWRp Z19wb3J0LT5wb3J0Owo+ICsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5kcGxsX2xvY2spOwo+ ICsJLyoKPiArCcKgKiBGSVhNRTogV29ya3Mgb25seSBmb3IgQlhULgo+ICsJwqAqIFNlbGVjdCB0 aGUgcmVxdWlyZWQgUExMLiBUaGlzIHdvcmtzIGZvciBwbGF0Zm9ybXMgd2hlcmUKPiArCcKgKiB0 aGVyZSBpcyBubyBzaGFyZWQgRFBMTC4KPiArCcKgKi8KPiArCXBsbCA9ICZkZXZfcHJpdi0+c2hh cmVkX2RwbGxzW2RwbGxfaWRdOwo+ICsJaWYgKFdBUk5fT04ocGxsLT5hY3RpdmVfbWFzaykpIHsK PiArCQlEUk1fRVJST1IoIlNoYXJlZCBEUExMIGFscmVhZHkgaW4gdXNlLiBhY3RpdmVfbWFzazol eFxuIiwKPiBwbGwtPmFjdGl2ZV9tYXNrKTsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5k cGxsX2xvY2spOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXRtcF9wbGxfY29u ZmlnID0gcGxsLT5jb25maWc7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiVXBmcm9udCBsaW5rIHRy YWluIHN0YXJ0IDogbGlua19jbG9jazolZCBsYW5lczolZFxuIiwKPiArCQkJCQkJCWNsb2NrLCBs YW5lX2NvdW50KTsKPiArCWRvIHsKPiArCQlpZiAoIWJ4dF9kZGlfZHBfc2V0X2RwbGxfaHdfc3Rh dGUoY2xvY2ssICZwbGwtCj4gPmNvbmZpZy5od19zdGF0ZSkpIHsKPiArCQkJRFJNX0VSUk9SKCJD b3VsZCBub3Qgc2V0dXAgRFBMTFxuIik7Cj4gKwkJCWdvdG8gZXhpdF9wbGw7Cj4gKwkJfQo+ICsK PiArCQkvKiBFbmFibGUgUExMIGZvbGxvd2VkIGJ5IHBvcnQgKi8KPiArCQlwbGwtPmZ1bmNzLmVu YWJsZShkZXZfcHJpdiwgcGxsKTsKPiArCQlpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChlbmNvZGVy LCBjbG9jaywgbGFuZV9jb3VudCwgcGxsKTsKPiArCj4gKwkJaWYgKGludGVsX2RwLT50cmFpbl9z ZXRfdmFsaWQpCj4gKwkJCWludGVsX2RwX3NldF91cGZyb250X3BhcmFtcyhpbnRlbF9kcCwgY2xv Y2ssCj4gbGFuZV9jb3VudCk7Cj4gKwo+ICsJCS8qIERpc2FibGUgcG9ydCBmb2xsb3dlZCBieSBQ TEwgZm9yIG5leHQgcmV0cnkvY2xlYW4gdXAgKi8KPiArCQlpbnRlbF9kZGlfcG9zdF9kaXNhYmxl KGVuY29kZXIpOwo+ICsJCXBsbC0+ZnVuY3MuZGlzYWJsZShkZXZfcHJpdiwgcGxsKTsKPiArCj4g Kwl9IHdoaWxlICghaW50ZWxfZHAtPnRyYWluX3NldF92YWxpZCAmJgo+ICsJCWludGVsX2RwX2dl dF9saW5rX3JldHJ5X3BhcmFtcyhpbnRlbF9kcCwgJmNsb2NrLAo+ICZsYW5lX2NvdW50KSk7CgpX aGF0IEkgaGFkIGluIG1pbmQgaXMgdGhhdCB0aGlzIGxvb3Agd291bGQgc3RpbGwgYmUgaW4gdGhl IGdlbmVyaWMgRFAgY29kZS4KU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBpbsKgaW50ZWxf ZHBfdXBmcm9udF9saW5rX3RyYWluKCk6Cgpmb3IgKGRvbmUgPSBmYWxzZSwgbGFuZV9jb3VudCA9 IDQ7IGxhbmVfY291bnQgPj0gMSAmJiAhZG9uZTsgbGFuZV9jb3VudCA+PiAxKSB7CgoJLyogbWF5 YmUgdXNlIGludGVsX2RwX2NvbW1vbl9yYXRlcygpIGhlcmUgKi8KCWZvciAobGlua19yYXRlID0g SEJSMjsgbGlua19yYXRlID49IFJCUiAmJiAhZG9uZTsgbGlua19yYXRlIC4uLiApIHsKCQlkb25l ID0gcGxhdGZvcm1fc3BlY2lmaWNfbGlua19lbmFibGUoaW50ZWxfZHAsCgkJCQkJCcKgIMKgIMKg bGlua19yYXRlLCBsYW5lX2NvdW50KTsKCgkJaWYgKGRvbmUpIHsKCQkJaW50ZWxfZHAtPm1heF9s aW5rX2J3X3VwZnJvbnQgPSAuLi47CgkJCWludGVsX2RwLT5tYXhfbGFuZV9jb3VudF91cGZyb250 ID0gLi4uOwoJCX0KCX0KfQoKVGhlIG9uZSBpbmNvbnZlbmllbmNlIGlzIHRoYXQgZGV2X3ByaXYt PmRwbGxfbG9jayB3aWxsIGhhdmUgdG8gYmUgbG9ja2VkIGluCmludGVsX2RwX3VwZnJvbnRfbGlu a190cmFpbigpIGluc3RlYWQgb2YgZG93biBoZXJlLiBCdXQgdGhlIGVuZCByZXN1bHQgd2lsbCBi ZQpwcmV0dHkgbXVjaCB0aGUgc2FtZS4KCgoKPiArCj4gKwlEUk1fREVCVUdfS01TKCJVcGZyb250 IGxpbmsgdHJhaW4gJXM6IGxpbmtfY2xvY2s6JWQgbGFuZXM6JWRcbiIsCj4gKwlpbnRlbF9kcC0+ dHJhaW5fc2V0X3ZhbGlkID8gIlBhc3NlZCIgOiAiRmFpbGVkIiwgY2xvY2ssIGxhbmVfY291bnQp Owo+ICsKPiArZXhpdF9wbGw6Cj4gKwlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwo+ICsJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHBsbF9sb2NrKTsKPiArCj4gKwlyZXR1cm4gaW50ZWxf ZHAtPnRyYWluX3NldF92YWxpZCA/IDAgOiAtMTsKCkRvIHlvdSByZWFsbHkgaW50ZW5kIHRvIHJl dHVybiAtRVBFUk0gaW4gdGhlIGZhaWx1cmUgY2FzZT8gTWF5YmUgdGhlIHJldHVybgp2YWx1ZSBz aG91bGQganVzdCBiZSBhIGJvb2wuCgpBbmRlcgoKPiArfQo+ICsKPiDCoHZvaWQgaW50ZWxfZGRp X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQpCj4gwqB7Cj4gwqAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRleCA5NWJhNWFhLi5hNTJjOTg5IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTE0NywxOCArMTQ3LDI4IEBAIGludGVsX2RwX21heF9s aW5rX2J3KHN0cnVjdCBpbnRlbF9kcMKgwqAqaW50ZWxfZHApCj4gwqAJCW1heF9saW5rX2J3ID0g RFBfTElOS19CV18xXzYyOwo+IMKgCQlicmVhazsKPiDCoAl9Cj4gLQlyZXR1cm4gbWF4X2xpbmtf Ync7Cj4gKwkvKgo+ICsJwqAqIExpbWl0IG1heCBsaW5rIGJ3IHcuci50IHRvIHRoZSBtYXggdmFs dWUgZm91bmQKPiArCcKgKiB1c2luZyBVcGZyb250IGxpbmsgdHJhaW5pbmcgYWxzby4KPiArCcKg Ki8KPiArCXJldHVybiBtaW4obWF4X2xpbmtfYncsIGludGVsX2RwLT5tYXhfbGlua19id191cGZy b250KTsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHU4IGludGVsX2RwX21heF9sYW5lX2NvdW50KHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gwqB7Cj4gwqAJc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gLQl1OCBz b3VyY2VfbWF4LCBzaW5rX21heDsKPiArCXU4IHRlbXAsIHNvdXJjZV9tYXgsIHNpbmtfbWF4Owo+ IMKgCj4gwqAJc291cmNlX21heCA9IGludGVsX2RpZ19wb3J0LT5tYXhfbGFuZXM7Cj4gwqAJc2lu a19tYXggPSBkcm1fZHBfbWF4X2xhbmVfY291bnQoaW50ZWxfZHAtPmRwY2QpOwo+IMKgCj4gLQly ZXR1cm4gbWluKHNvdXJjZV9tYXgsIHNpbmtfbWF4KTsKPiArCXRlbXAgPSBtaW4oc291cmNlX21h eCwgc2lua19tYXgpOwo+ICsKPiArCS8qCj4gKwnCoCogTGltaXQgbWF4IGxhbmVzIHcuci50IHRv IHRoZSBtYXggdmFsdWUgZm91bmQKPiArCcKgKiB1c2luZyBVcGZyb250IGxpbmsgdHJhaW5pbmcg YWxzby4KPiArCcKgKi8KPiArCXJldHVybiBtaW4odGVtcCwgaW50ZWxfZHAtPm1heF9sYW5lc191 cGZyb250KTsKPiDCoH0KPiDCoAo+IMKgLyoKPiBAQCAtMTU5MCw2ICsxNjAwLDQ5IEBAIHZvaWQg aW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcAo+ICppbnRlbF9kcCwKPiDC oAlpbnRlbF9kcC0+bGFuZV9jb3VudCA9IGxhbmVfY291bnQ7Cj4gwqB9Cj4gwqAKPiArc3RhdGlj IHZvaWQgaW50ZWxfZHBfaW5pdF91cGZyb250X3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQo+ICt7Cj4gKwlpZiAoV0FSTl9PTihpbnRlbF9kcC0+dXBmcm9udF9kb25lKSkKPiArCQly ZXR1cm47Cj4gKwo+ICsJaW50ZWxfZHAtPm1heF9saW5rX2J3X3VwZnJvbnQgPSBpbnRlbF9kcC0+ ZHBjZFtEUF9NQVhfTElOS19SQVRFXTsKPiArCWludGVsX2RwLT5tYXhfbGFuZXNfdXBmcm9udCA9 IGRybV9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcC0+ZHBjZCk7Cj4gK30KPiArCj4gK3ZvaWQg aW50ZWxfZHBfc2V0X3VwZnJvbnRfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4g KwkJCQlpbnQgbGlua19yYXRlLCB1aW50OF90IGxhbmVfY291bnQpCj4gK3sKPiArCWludGVsX2Rw LT5tYXhfbGlua19id191cGZyb250ID0KPiBkcm1fZHBfbGlua19yYXRlX3RvX2J3X2NvZGUobGlu a19yYXRlKTsKPiArCWludGVsX2RwLT5tYXhfbGFuZXNfdXBmcm9udCA9IGxhbmVfY291bnQ7Cj4g K30KPiArCj4gK2Jvb2wgaW50ZWxfZHBfZ2V0X2xpbmtfcmV0cnlfcGFyYW1zKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsCj4gKwkJCWludCAqbGlua19yYXRlLCB1aW50OF90ICpsYW5lX2NvdW50 KQo+ICt7Cj4gKwl1aW50OF90IGxpbmtfYncgPSBkcm1fZHBfbGlua19yYXRlX3RvX2J3X2NvZGUo KmxpbmtfcmF0ZSk7Cj4gKwo+ICsJLyoKPiArCcKgKiBBcyBwZXIgRFAxLjMgU3BlYywgcmV0cnkg YWxsIGxpbmsgcmF0ZXMgZm9yIGEgcGFydGljdWxhcgo+ICsJwqAqIGxhbmUgY291bnQgdmFsdWUs IGJlZm9yZSByZWR1Y2luZyBudW1iZXIgb2YgbGFuZXMuCj4gKwnCoCovCj4gKwlpZiAobGlua19i dyA9PSBEUF9MSU5LX0JXXzVfNCkgewo+ICsJCSpsaW5rX3JhdGUgPSBkcm1fZHBfYndfY29kZV90 b19saW5rX3JhdGUoRFBfTElOS19CV18yXzcpOwo+ICsJfSBlbHNlIGlmIChsaW5rX2J3ID09IERQ X0xJTktfQldfMl83KSB7Cj4gKwkJKmxpbmtfcmF0ZSA9IGRybV9kcF9id19jb2RlX3RvX2xpbmtf cmF0ZShEUF9MSU5LX0JXXzFfNjIpOwo+ICsJfSBlbHNlIGlmICgqbGFuZV9jb3VudCA9PSA0KSB7 Cj4gKwkJKmxhbmVfY291bnQgPSAyOwo+ICsJCSpsaW5rX3JhdGUgPSBpbnRlbF9kcF9tYXhfbGlu a19yYXRlKGludGVsX2RwKTsKPiArCX0gZWxzZSBpZiAoKmxhbmVfY291bnQgPT0gMikgewo+ICsJ CSpsYW5lX2NvdW50ID0gMTsKPiArCQkqbGlua19yYXRlID0gaW50ZWxfZHBfbWF4X2xpbmtfcmF0 ZShpbnRlbF9kcCk7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qIFRyaWVkIGFsbCBjb21iaW5hdGlvbnMs IHNvIGV4aXQgKi8KPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHRydWU7 Cj4gK30KPiArCj4gwqBzdGF0aWMgdm9pZCBpbnRlbF9kcF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyKQo+IMKgewo+IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNv ZGVyLT5iYXNlLmRldjsKPiBAQCAtMzQyNCw2ICszNDc3LDE2IEBAIGludGVsX2RwX2dldF9kcGNk KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gwqAJCWludGVsX2RwLT5udW1fc2lua19yYXRl cyA9IGk7Cj4gwqAJfQo+IMKgCj4gKwkvKgo+ICsJwqAqIFRoZSBsaW5rX2J3IGFuZCBsYW5lIGNv dW50IHZhdWVzIGFyZSBpbml0aWFsaXplZCB0byBNQVggcG9zc2libGUKPiArCcKgKiB2YWx1ZSBm b3IgYWxsIGVuY29kZXIgdHlwZXMgaS5lIERQLCBlRFAsIERQLU1TVCwgc28gdGhhdCB0aGUKPiAr CcKgKiBpbnRlbF9kcF9tYXhfe2xpbmtfYncvbGFuZV9jb3VudH0gQVBJcyBkbyBub3QgaGF2ZSB0 byB3b3JyeQo+ICsJwqAqIGFib3V0IGVuY29kZXIgdHlwZXMuIFRoZXkgZnVydGhlciBjYXAgdGhl IG1heCB3LnIudCB0aGUgdXBmcm9udAo+ICsJwqAqIHZhbHVlcyBhbHNvLgo+ICsJwqAqLwo+ICsJ aWYgKCFpbnRlbF9kcC0+dXBmcm9udF9kb25lKQo+ICsJCWludGVsX2RwX2luaXRfdXBmcm9udF9w YXJhbXMoaW50ZWxfZHApOwo+ICsKPiDCoAlpbnRlbF9kcF9wcmludF9yYXRlcyhpbnRlbF9kcCk7 Cj4gwqAKPiDCoAlpZiAoIShpbnRlbF9kcC0+ZHBjZFtEUF9ET1dOU1RSRUFNUE9SVF9QUkVTRU5U XSAmCj4gQEAgLTQxNDAsNiArNDIwMyw5OSBAQCBpbnRlbF9kcF91bnNldF9lZGlkKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCj4gwqAJaW50ZWxfZHAtPmhhc19hdWRpbyA9IGZhbHNlOwo+IMKg fQo+IMKgCj4gK3N0YXRpYyBpbnQgaW50ZWxfZHBfdXBmcm9udF9jcnRjX2Rpc2FibGUoc3RydWN0 IGludGVsX2NydGMgKmNydGMsCj4gKwkJCQlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHgg KmN0eCwKPiArCQkJCWJvb2wgZW5hYmxlKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsJc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gKwll bnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gKwo+ICsJc3RhdGUgPSBkcm1fYXRvbWljX3N0 YXRlX2FsbG9jKGRldik7Cj4gKwlpZiAoIXN0YXRlKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsK PiArCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKPiArCj4gKwljcnRjX3N0YXRlID0gaW50ZWxf YXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiArCWlmIChJU19FUlIoY3J0Y19z dGF0ZSkpIHsKPiArCQlyZXQgPSBQVFJfRVJSKGNydGNfc3RhdGUpOwo+ICsJCWRybV9hdG9taWNf c3RhdGVfZnJlZShzdGF0ZSk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlEUk1fREVC VUdfS01TKCIlc2FibGluZyBjcnRjICVjICVzIHVwZnJvbnQgbGluayB0cmFpblxuIiwKPiArCQkJ ZW5hYmxlID8gIkVuIiA6ICJEaXMiLAo+ICsJCQlwaXBlX25hbWUocGlwZSksCj4gKwkJCWVuYWJs ZSA/ICJhZnRlciIgOiAiYmVmb3JlIik7Cj4gKwo+ICsJY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUg PSBlbmFibGU7Cj4gKwlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Cj4gKwlpZiAocmV0 KQo+ICsJCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsK PiArfQo+ICsKPiArc3RhdGljIGludCBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKPiArewo+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFzZTsKPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9lbmNvZGVyLT5iYXNlLmRldjsKPiArCXN0cnVj dCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOwo+ICsJc3RydWN0 IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gTlVMTDsKPiArCWludCByZXQsIHN0 YXR1cyA9IDA7Cj4gKwl1aW50OF90IG1heF9sYW5lcyA9IGludGVsX2RwLT5tYXhfbGFuZXNfdXBm cm9udDsKPiArCWludCBtYXhfY2xvY2sgPSBpbnRlbF9kcF9tYXhfbGlua19yYXRlKGludGVsX2Rw KTsKPiArCj4gKwlpZiAoIUlTX0JST1hUT04oZGV2KSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlk cm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gK3JldHJ5Ogo+ICsJcmV0ID0gZHJt X21vZGVzZXRfbG9jaygmY29uZmlnLT5jb25uZWN0aW9uX211dGV4LCAmY3R4KTsKPiArCWlmIChy ZXQpCj4gKwkJZ290byBleGl0X2ZhaWw7Cj4gKwo+ICsJaWYgKGludGVsX2VuY29kZXItPmJhc2Uu Y3J0Yykgewo+ICsJCWNydGMgPSBpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGM7Cj4gKwo+ICsJCXJl dCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCAmY3R4KTsKPiArCQlpZiAocmV0KQo+ ICsJCQlnb3RvIGV4aXRfZmFpbDsKPiArCj4gKwkJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0 Yy0+cHJpbWFyeS0+bXV0ZXgsICZjdHgpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gZXhpdF9m YWlsOwo+ICsKPiArCQlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiArCQlyZXQg PSBpbnRlbF9kcF91cGZyb250X2NydGNfZGlzYWJsZShpbnRlbF9jcnRjLCAmY3R4LCBmYWxzZSk7 Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBleGl0X2ZhaWw7Cj4gKwl9Cj4gKwo+ICsJaWYgKElT X0JST1hUT04oZGV2KSkKPiArCQlzdGF0dXMgPSBpbnRlbF9ieHRfdXBmcm9udF9saW5rX3RyYWlu KGludGVsX2RwLAo+ICsJCQkJCQltYXhfY2xvY2ssIG1heF9sYW5lcyk7Cj4gKwkJLyogT3RoZXIg cGxhdGZvcm1zIHVwZnJvbnQgbGluayB0cmFpbiBjYWxsIGdvZXMgaGVyZS4uKi8KPiArCj4gKwlp ZiAoY3J0YykKPiArCQlyZXQgPSBpbnRlbF9kcF91cGZyb250X2NydGNfZGlzYWJsZShpbnRlbF9j cnRjLCAmY3R4LCB0cnVlKTsKPiArCj4gK2V4aXRfZmFpbDoKPiArCWlmIChyZXQgPT0gLUVERUFE TEspIHsKPiArCQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+ICsJCWdvdG8gcmV0cnk7Cj4g Kwl9Cj4gKwlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwo+ICsJZHJtX21vZGVzZXRfYWNx dWlyZV9maW5pKCZjdHgpOwo+ICsJcmV0dXJuIHN0YXR1czsKPiArfQo+ICsKPiDCoHN0YXRpYyB2 b2lkCj4gwqBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVs X2Nvbm5lY3RvcikKPiDCoHsKPiBAQCAtNDE1MCw3ICs0MzA2LDcgQEAgaW50ZWxfZHBfbG9uZ19w dWxzZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yCj4gKmludGVsX2Nvbm5lY3RvcikKPiDCoAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4gwqAJZW51bSBkcm1fY29ubmVj dG9yX3N0YXR1cyBzdGF0dXM7Cj4gwqAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBw b3dlcl9kb21haW47Cj4gLQlib29sIHJldDsKPiArCWJvb2wgcmV0LCBkb191cGZyb250X2xpbmtf dHJhaW47Cj4gwqAJdTggc2lua19pcnFfdmVjdG9yOwo+IMKgCj4gwqAJcG93ZXJfZG9tYWluID0g aW50ZWxfZGlzcGxheV9wb3J0X2F1eF9wb3dlcl9kb21haW4oaW50ZWxfZW5jb2Rlcik7Cj4gQEAg LTQyMzUsMTAgKzQzOTEsMjUgQEAgaW50ZWxfZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yCj4gKmludGVsX2Nvbm5lY3RvcikKPiDCoAkJCURSTV9ERUJVR19EUklWRVIoIkNQIG9y IHNpbmsgc3BlY2lmaWMgaXJxCj4gdW5oYW5kbGVkXG4iKTsKPiDCoAl9Cj4gwqAKPiArCS8qIERv IG5vdCBkbyB1cGZyb250IGxpbmsgdHJhaW4sIGlmIGl0IGlzIGEgY29tcGxpYW5jZSByZXF1ZXN0 ICovCj4gKwlkb191cGZyb250X2xpbmtfdHJhaW4gPSAhaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSAm Jgo+ICsJCWludGVsX2VuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUICYm Cj4gKwkJaW50ZWxfZHAtPmNvbXBsaWFuY2VfdGVzdF90eXBlICE9IERQX1RFU1RfTElOS19UUkFJ TklORzsKPiArCj4gKwlpZiAoZG9fdXBmcm9udF9saW5rX3RyYWluKSB7Cj4gKwkJaWYgKGludGVs X2RwX3VwZnJvbnRfbGlua190cmFpbihpbnRlbF9kcCkpIHsKPiArCQkJc3RhdHVzID0gY29ubmVj dG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7Cj4gKwkJCWludGVsX2RwLT51cGZyb250X2RvbmUgPSBm YWxzZTsKPiArCQl9IGVsc2Ugewo+ICsJCQlpbnRlbF9kcC0+dXBmcm9udF9kb25lID0gdHJ1ZTsK PiArCQl9Cj4gKwl9Cj4gKwo+IMKgb3V0Ogo+IC0JaWYgKChzdGF0dXMgIT0gY29ubmVjdG9yX3N0 YXR1c19jb25uZWN0ZWQpICYmCj4gLQnCoMKgwqDCoChpbnRlbF9kcC0+aXNfbXN0ID09IGZhbHNl KSkKPiArCWlmIChzdGF0dXMgIT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQgJiYgIWludGVs X2RwLT5pc19tc3QpIHsKPiDCoAkJaW50ZWxfZHBfdW5zZXRfZWRpZChpbnRlbF9kcCk7Cj4gKwkJ aW50ZWxfZHAtPnVwZnJvbnRfZG9uZSA9IGZhbHNlOwo+ICsJfQo+IMKgCj4gwqAJaW50ZWxfZGlz cGxheV9wb3dlcl9wdXQodG9faTkxNShkZXYpLCBwb3dlcl9kb21haW4pOwo+IMKgCXJldHVybjsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggMzMxNWQ1Ny4uNzkzMGM2MCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTgxMiw2ICs4MTIsMTIgQEAgc3RydWN0 IGludGVsX2RwIHsKPiDCoAllbnVtIGhkbWlfZm9yY2VfYXVkaW8gZm9yY2VfYXVkaW87Cj4gwqAJ Ym9vbCBsaW1pdGVkX2NvbG9yX3JhbmdlOwo+IMKgCWJvb2wgY29sb3JfcmFuZ2VfYXV0bzsKPiAr Cj4gKwkvKiBVcGZyb250IGxpbmsgdHJhaW4gcGFyYW1ldGVycyAqLwo+ICsJaW50IG1heF9saW5r X2J3X3VwZnJvbnQ7Cj4gKwl1aW50OF90IG1heF9sYW5lc191cGZyb250Owo+ICsJYm9vbCB1cGZy b250X2RvbmU7Cj4gKwo+IMKgCXVpbnQ4X3QgZHBjZFtEUF9SRUNFSVZFUl9DQVBfU0laRV07Cj4g wqAJdWludDhfdCBwc3JfZHBjZFtFRFBfUFNSX1JFQ0VJVkVSX0NBUF9TSVpFXTsKPiDCoAl1aW50 OF90IGRvd25zdHJlYW1fcG9ydHNbRFBfTUFYX0RPV05TVFJFQU1fUE9SVFNdOwo+IEBAIC0xMDg2 LDYgKzEwOTIsOCBAQCB2b2lkIGludGVsX2RkaV9jbG9ja19nZXQoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4gwqAJCQnCoHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZp Zyk7Cj4gwqB2b2lkIGludGVsX2RkaV9zZXRfdmNfcGF5bG9hZF9hbGxvYyhzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsIGJvb2wgc3RhdGUpOwo+IMKgdWludDMyX3QgZGRpX3NpZ25hbF9sZXZlbHMoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gK2ludCBpbnRlbF9ieHRfdXBmcm9udF9saW5rX3Ry YWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gKwkJCQlpbnQgY2xvY2ssIHVpbnQ4X3Qg bGFuZV9jb3VudCk7Cj4gwqAKPiDCoC8qIGludGVsX2Zyb250YnVmZmVyLmMgKi8KPiDCoHZvaWQg aW50ZWxfZmJfb2JqX2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK PiBAQCAtMTI5Miw2ICsxMzAwLDEwIEBAIGJvb2wgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydAo+ICppbnRlbF9kaWdfcG9ydCwKPiDCoAkJCcKgwqDCoMKg wqBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpOwo+IMKgdm9pZCBpbnRl bF9kcF9zZXRfbGlua19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiDCoAkJCQlp bnQgbGlua19yYXRlLCB1aW50OF90IGxhbmVfY291bnQpOwo+ICt2b2lkIGludGVsX2RwX3NldF91 cGZyb250X3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICsJCQkJaW50IGxpbmtf cmF0ZSwgdWludDhfdCBsYW5lX2NvdW50KTsKPiArYm9vbCBpbnRlbF9kcF9nZXRfbGlua19yZXRy eV9wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiArCQkJCWludCAqbGlua19yYXRl LCB1aW50OF90ICpsYW5lX2NvdW50KTsKPiDCoHZvaWQgaW50ZWxfZHBfc3RhcnRfbGlua190cmFp bihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiDCoHZvaWQgaW50ZWxfZHBfc3RvcF9saW5r X3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+IMKgdm9pZCBpbnRlbF9kcF9zaW5r X2RwbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IG1vZGUpOwpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK