From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jim Bride Subject: Re: [PATCH 07/12] drm/i915: Move DP link retraining into intel_dp_detect() Date: Fri, 29 Jul 2016 13:37:55 -0700 Message-ID: <20160729203755.GA6557@shiv> References: <1469717448-4297-1-git-send-email-ville.syrjala@linux.intel.com> <1469717448-4297-8-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 306D36E0BA for ; Fri, 29 Jul 2016 20:38:30 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1469717448-4297-8-git-send-email-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: ville.syrjala@linux.intel.com Cc: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdWwgMjgsIDIwMTYgYXQgMDU6NTA6NDNQTSArMDMwMCwgdmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiAKPiBEUCBsaW5rIHJldHJhaW5pbmcgbmVlZHMgdG8gZ3Jh YiBzb21lIG1vZGVzZXQgbG9ja3MgdG8gbm90IHJhY2Ugd2l0aAo+IG1vZGVzZXRzLCBzbyB3ZSBj YW4ndCByZWFsbHkgZG8gaXQgc2FmZWx5IGZyb20gdGhlIGhwZF9wdWxzZSwgbGVzdCB3ZQo+IHJp c2sgZGVhZGxvY2tpbmcgZHVlIHRvIE1TVCBzaWRlYmFuZCBzdHVmZi4KPiAKPiBNb3ZlIHRoZSBs aW5rIHJldHJhaW5pbmcgdG8gaGFwcGVuIGZyb20gdGhlIGhvdHBsdWcgd29yayBpbnN0ZWFkLgo+ IERvaW5nIGF0IHRoZSBlbmQgb2YgaW50ZWxfZHBfZGV0ZWN0KCkgc2VlbXMgbGlrZSBhIGdvb2Qg cGxhY2UgaW4gY2FzZQo+IHRoZSBzaW5rIGFscmVhZHkgZ290IGRpc2Nvbm5lY3RlZCwgaW4gd2hp Y2ggY2FzZSByZXRyYWluaW5nIGlzCj4gcG9pbnRsZXNzLgo+IAo+IFRvIGRldGVybWluZSBpZiB3 ZSBuZWVkIHRvIHNjaGVkdWxlIHRoZSBob3RwbHVnIHdvcmssIHdlJ2xsIGp1c3QgY2hlY2sKPiB0 aGUgc2luayBsYW5lIHN0YXR1cyB3aXRob3V0IGxvY2tzIGZyb20gaHBkX3B1bHNlLiBBIGxpdHRs ZSByYWN5Cj4gc3RpbGwgZWcuIGR1ZSB0byB1c2VpbmcgaW50ZWxfZHAtPmxhbmVfY291bnQsIGJ1 dCBubyBsZXNzIHJhY3kgdGhhbgo+IHdoYXQgd2UgYWxyZWFkeSBoYWQuIFdlJ2xsIHJlcGVhdCB0 aGUgY2hlY2sgaW4gZnJvbSBpbnRlbF9kcF9kZXRlY3QoKQo+IHdpdGggcHJvcGVyIGxvY2tpbmcs IHdoZXJlIHdlJ2xsIGFsc28gY2hlY2sgaWYgdGhlIGxpbmsgYXMgYWN0dWFsbHkKPiBhY3RpdmUg b3Igbm90Lgo+IAo+IENjOiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNl bHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+Cj4gQ2M6IEppbSBCcmlkZSA8amltLmJyaWRlQGxp bnV4LmludGVsLmNvbT4KPiBDYzogTWFuYXNpIEQgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50 ZWwuY29tPgo+IENjOiBEdXJnYWRvc3MgUiA8ZHVyZ2Fkb3NzLnJAaW50ZWwuY29tPgo+IFNpZ25l ZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgfCAxNTQgKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNjYgaW5z ZXJ0aW9ucygrKSwgODggZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4g aW5kZXggNGE0MTg0YzIxOTg5Li42NzViODNmNTdhMDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwLmMKPiBAQCAtMzg0MiwxNSArMzg0Miw2IEBAIGludGVsX2RwX2NoZWNrX21zdF9zdGF0dXMo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCQlicmV0ID0gaW50ZWxfZHBfZ2V0X3Npbmtf aXJxX2VzaShpbnRlbF9kcCwgZXNpKTsKPiAgZ29fYWdhaW46Cj4gIAkJaWYgKGJyZXQgPT0gdHJ1 ZSkgewo+IC0KPiAtCQkJLyogY2hlY2sgbGluayBzdGF0dXMgLSBlc2lbMTBdID0gMHgyMDBjICov Cj4gLQkJCWlmIChpbnRlbF9kcC0+YWN0aXZlX3N0cmVhbXMgJiYKPiAtCQkJICAgICFkcm1fZHBf Y2hhbm5lbF9lcV9vaygmZXNpWzEwXSwgaW50ZWxfZHAtPmxhbmVfY291bnQpKSB7Cj4gLQkJCQlE Uk1fREVCVUdfS01TKCJjaGFubmVsIEVRIG5vdCBvaywgcmV0cmFpbmluZ1xuIik7Cj4gLQkJCQlp bnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGludGVsX2RwKTsKPiAtCQkJCWludGVsX2RwX3N0b3Bf bGlua190cmFpbihpbnRlbF9kcCk7Cj4gLQkJCX0KPiAtCj4gIAkJCURSTV9ERUJVR19LTVMoImdv dCBlc2kgJTNwaFxuIiwgZXNpKTsKPiAgCQkJcmV0ID0gZHJtX2RwX21zdF9ocGRfaXJxKCZpbnRl bF9kcC0+bXN0X21nciwgZXNpLCAmaGFuZGxlZCk7Cj4gIAo+IEBAIC0zODg2LDM0ICszODc3LDQy IEBAIGdvX2FnYWluOgo+ICAJcmV0dXJuIC1FSU5WQUw7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lk Cj4gLWludGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gK3N0YXRpYyBib29sCj4gK2ludGVsX2RwX2xpbmtfbmVlZHNfcmV0cmFpbihzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5j b2RlciA9ICZkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2U7Cj4gLQlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKPiAgCXU4IGxpbmtfc3RhdHVz W0RQX0xJTktfU1RBVFVTX1NJWkVdOwo+ICAKPiAtCVdBUk5fT04oIWRybV9tb2Rlc2V0X2lzX2xv Y2tlZCgmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4KSk7Cj4gKwlpZiAoaW50ZWxf ZHAtPmFjdGl2ZV9zdHJlYW1zID09IDApCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWlmIChp bnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5cGUgPT0gRFBfVEVTVF9MSU5LX1RSQUlOSU5HKQo+ ICsJCXJldHVybiB0cnVlOwo+ICAKPiAgCWlmICghaW50ZWxfZHBfZ2V0X2xpbmtfc3RhdHVzKGlu dGVsX2RwLCBsaW5rX3N0YXR1cykpIHsKPiAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byBnZXQgbGlu ayBzdGF0dXNcbiIpOwo+IC0JCXJldHVybjsKPiArCQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gIAo+ IC0JaWYgKCFpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMpCj4gLQkJcmV0dXJuOwo+ICsJcmV0dXJu ICFkcm1fZHBfY2hhbm5lbF9lcV9vayhsaW5rX3N0YXR1cywgaW50ZWxfZHAtPmxhbmVfY291bnQp Owo+ICt9Cj4gIAo+IC0JaWYgKCF0b19pbnRlbF9jcnRjKGludGVsX2VuY29kZXItPmJhc2UuY3J0 YyktPmFjdGl2ZSkKPiAtCQlyZXR1cm47Cj4gK3N0YXRpYyB2b2lkCj4gK2ludGVsX2RwX2xpbmtf cmV0cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciA9ICZkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2U7Cj4gKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKPiArCj4g Kwlkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgsIE5V TEwpOwo+ICAKPiAtCS8qIGlmIGxpbmsgdHJhaW5pbmcgaXMgcmVxdWVzdGVkIHdlIHNob3VsZCBw ZXJmb3JtIGl0IGFsd2F5cyAqLwo+IC0JaWYgKChpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5 cGUgPT0gRFBfVEVTVF9MSU5LX1RSQUlOSU5HKSB8fAo+IC0JICAgICghZHJtX2RwX2NoYW5uZWxf ZXFfb2sobGlua19zdGF0dXMsIGludGVsX2RwLT5sYW5lX2NvdW50KSkpIHsKPiArCWlmIChpbnRl bF9kcF9saW5rX25lZWRzX3JldHJhaW4oaW50ZWxfZHApKSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygi JXM6IGNoYW5uZWwgRVEgbm90IG9rLCByZXRyYWluaW5nXG4iLAo+IC0JCQkgICAgICBpbnRlbF9l bmNvZGVyLT5iYXNlLm5hbWUpOwo+ICsJCQkgICAgICBlbmNvZGVyLT5iYXNlLm5hbWUpOwo+ICsK PiAgCQlpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGludGVsX2RwKTsKPiAgCQlpbnRlbF9kcF9z dG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ICAJfQo+ICsKPiArCWRybV9tb2Rlc2V0X3VubG9j aygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4KTsKPiAgfQo+ICAKPiAgLyoKPiBA QCAtMzkzMiw3ICszOTMxLDYgQEAgaW50ZWxfZHBfY2hlY2tfbGlua19zdGF0dXMoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKPiAgc3RhdGljIGJvb2wKPiAgaW50ZWxfZHBfc2hvcnRfcHVsc2Uo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGludGVsX2RwX3RvX2RldihpbnRlbF9kcCk7Cj4gIAl1OCBzaW5rX2lycV92ZWN0b3I7Cj4g IAl1OCBvbGRfc2lua19jb3VudCA9IGludGVsX2RwLT5zaW5rX2NvdW50Owo+ICAJYm9vbCByZXQ7 Cj4gQEAgLTM5NzIsMTAgKzM5NzAsNiBAQCBpbnRlbF9kcF9zaG9ydF9wdWxzZShzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQo+ICAJCQlEUk1fREVCVUdfRFJJVkVSKCJDUCBvciBzaW5rIHNwZWNp ZmljIGlycSB1bmhhbmRsZWRcbiIpOwo+ICAJfQo+ICAKPiAtCWRybV9tb2Rlc2V0X2xvY2soJmRl di0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwgTlVMTCk7Cj4gLQlpbnRlbF9kcF9jaGVj a19saW5rX3N0YXR1cyhpbnRlbF9kcCk7Cj4gLQlkcm1fbW9kZXNldF91bmxvY2soJmRldi0+bW9k ZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCk7Cj4gLQo+ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiAg Cj4gQEAgLTM5ODYsNiArMzk4MCw4IEBAIGludGVsX2RwX2RldGVjdF9kcGNkKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gIAl1aW50OF90ICpkcGNkID0gaW50ZWxfZHAtPmRwY2Q7Cj4gIAl1 aW50OF90IHR5cGU7Cj4gIAo+ICsJV0FSTl9PTihpc19lZHAoaW50ZWxfZHApKTsKPiArCj4gIAlp ZiAoIWludGVsX2RwX2dldF9kcGNkKGludGVsX2RwKSkKPiAgCQlyZXR1cm4gY29ubmVjdG9yX3N0 YXR1c19kaXNjb25uZWN0ZWQ7Cj4gIAo+IEBAIC00MjE4LDcgKzQyMTQsNyBAQCBpbnRlbF9kcF91 bnNldF9lZGlkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlpbnRlbF9kcC0+aGFzX2F1 ZGlvID0gZmFsc2U7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkCj4gK3N0YXRpYyBlbnVtIGRybV9j b25uZWN0b3Jfc3RhdHVzCj4gIGludGVsX2RwX2xvbmdfcHVsc2Uoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqaW50ZWxfY29ubmVjdG9yKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yID0gJmludGVsX2Nvbm5lY3Rvci0+YmFzZTsKPiBAQCAtNDI3MywxOCArNDI2OSwxMiBA QCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5l Y3RvcikKPiAgCQkgKi8KPiAgCQlzdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3Rl ZDsKPiAgCQlnb3RvIG91dDsKPiAtCX0gZWxzZSBpZiAoY29ubmVjdG9yLT5zdGF0dXMgPT0gY29u bmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpIHsKPiAtCQkvKgo+IC0JCSAqIElmIGRpc3BsYXkgd2Fz IGNvbm5lY3RlZCBhbHJlYWR5IGFuZCBpcyBzdGlsbCBjb25uZWN0ZWQKPiAtCQkgKiBjaGVjayBs aW5rcyBzdGF0dXMsIHRoZXJlIGhhcyBiZWVuIGtub3duIGlzc3VlcyBvZgo+IC0JCSAqIGxpbmsg bG9zcyB0cmlnZ2VycmluZyBsb25nIHB1bHNlISEhIQo+IC0JCSAqLwo+IC0JCWRybV9tb2Rlc2V0 X2xvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwgTlVMTCk7Cj4gLQkJaW50 ZWxfZHBfY2hlY2tfbGlua19zdGF0dXMoaW50ZWxfZHApOwo+IC0JCWRybV9tb2Rlc2V0X3VubG9j aygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4KTsKPiAtCQlnb3RvIG91dDsKPiAg CX0KPiAgCj4gKwkvKiBjb25uZWN0ZWQtPmNvbm5lY3RlZCwgbm90aGluZyB0byBkbyAqLwo+ICsJ aWYgKGNvbm5lY3Rvci0+c3RhdHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKQo+ICsJ CWdvdG8gb3V0Owo+ICsKPiAgCS8qCj4gIAkgKiBDbGVhcmluZyBOQUNLIGFuZCBkZWZlciBjb3Vu dHMgdG8gZ2V0IHRoZWlyIGV4YWN0IHZhbHVlcwo+ICAJICogd2hpbGUgcmVhZGluZyBFRElEIHdo aWNoIGFyZSByZXF1aXJlZCBieSBDb21wbGlhbmNlIHRlc3RzCj4gQEAgLTQyOTYsNyArNDI4Niw2 IEBAIGludGVsX2RwX2xvbmdfcHVsc2Uoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yKQo+ICAJaW50ZWxfZHBfc2V0X2VkaWQoaW50ZWxfZHApOwo+ICAKPiAgCXN0YXR1cyA9 IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwo+IC0JaW50ZWxfZHAtPmRldGVjdF9kb25lID0g dHJ1ZTsKPiAgCj4gIAkvKiBUcnkgdG8gcmVhZCB0aGUgc291cmNlIG9mIHRoZSBpbnRlcnJ1cHQg Ki8KPiAgCWlmIChpbnRlbF9kcC0+ZHBjZFtEUF9EUENEX1JFVl0gPj0gMHgxMSAmJgo+IEBAIC00 MzEzLDQzICs0MzAyLDMwIEBAIGludGVsX2RwX2xvbmdfcHVsc2Uoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqaW50ZWxfY29ubmVjdG9yKQo+ICAJfQo+ICAKPiAgb3V0Ogo+IC0JaWYgKChzdGF0dXMg IT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpICYmCj4gLQkgICAgKGludGVsX2RwLT5pc19t c3QgPT0gZmFsc2UpKQo+ICsJaWYgKHN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3Rl ZCkKPiAgCQlpbnRlbF9kcF91bnNldF9lZGlkKGludGVsX2RwKTsKPiAgCj4gIAlpbnRlbF9kaXNw bGF5X3Bvd2VyX3B1dCh0b19pOTE1KGRldiksIHBvd2VyX2RvbWFpbik7Cj4gLQlyZXR1cm47Cj4g Kwo+ICsJcmV0dXJuIHN0YXR1czsKPiAgfQo+ICAKPiAgc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rv cl9zdGF0dXMKPiAgaW50ZWxfZHBfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsIGJvb2wgZm9yY2UpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBpbnRl bF9hdHRhY2hlZF9kcChjb25uZWN0b3IpOwo+IC0Jc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gLQlzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFzZTsKPiAgCXN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rv cihjb25uZWN0b3IpOwo+ICsJZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7Cj4gIAo+ ICAJRFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc11cbiIsCj4gIAkJICAgICAgY29ubmVj dG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUpOwo+ICAKPiAtCWlmIChpbnRlbF9kcC0+aXNf bXN0KSB7Cj4gLQkJLyogTVNUIGRldmljZXMgYXJlIGRpc2Nvbm5lY3RlZCBmcm9tIGEgbW9uaXRv ciBQT1YgKi8KPiAtCQlpbnRlbF9kcF91bnNldF9lZGlkKGludGVsX2RwKTsKPiAtCQlpZiAoaW50 ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKQo+IC0JCQlpbnRlbF9lbmNvZGVy LT50eXBlID0gSU5URUxfT1VUUFVUX0RQOwo+IC0JCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rp c2Nvbm5lY3RlZDsKPiAtCX0KPiAtCj4gLQkvKiBJZiBmdWxsIGRldGVjdCBpcyBub3QgcGVyZm9y bWVkIHlldCwgZG8gYSBmdWxsIGRldGVjdCAqLwo+IC0JaWYgKCFpbnRlbF9kcC0+ZGV0ZWN0X2Rv bmUpCj4gLQkJaW50ZWxfZHBfbG9uZ19wdWxzZShpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9y KTsKPiArCXN0YXR1cyA9IGludGVsX2RwX2xvbmdfcHVsc2UoaW50ZWxfY29ubmVjdG9yKTsKPiAg Cj4gLQlpbnRlbF9kcC0+ZGV0ZWN0X2RvbmUgPSBmYWxzZTsKPiArCWlmIChzdGF0dXMgPT0gY29u bmVjdG9yX3N0YXR1c19jb25uZWN0ZWQgfHwgaW50ZWxfZHAtPmlzX21zdCkKPiArCQlpbnRlbF9k cF9saW5rX3JldHJhaW4oaW50ZWxfZHApOwo+ICAKPiAtCWlmIChpc19lZHAoaW50ZWxfZHApIHx8 IGludGVsX2Nvbm5lY3Rvci0+ZGV0ZWN0X2VkaWQpCj4gLQkJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0 dXNfY29ubmVjdGVkOwo+IC0JZWxzZQo+IC0JCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nv bm5lY3RlZDsKPiArCXJldHVybiBzdGF0dXM7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gQEAg LTQ3MDYsMzkgKzQ2ODIsNDEgQEAgaW50ZWxfZHBfaHBkX3B1bHNlKHN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LCBib29sIGxvbmdfaHBkKQo+ICAJCSAgICAgIHBvcnRf bmFtZShpbnRlbF9kaWdfcG9ydC0+cG9ydCksCj4gIAkJICAgICAgbG9uZ19ocGQgPyAibG9uZyIg OiAic2hvcnQiKTsKPiAgCj4gKwlpZiAobG9uZ19ocGQpCj4gKwkJcmV0dXJuIElSUV9OT05FOwo+ ICsKPiAgCXBvd2VyX2RvbWFpbiA9IGludGVsX2Rpc3BsYXlfcG9ydF9hdXhfcG93ZXJfZG9tYWlu KGludGVsX2VuY29kZXIpOwo+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIHBv d2VyX2RvbWFpbik7Cj4gIAo+IC0JaWYgKGxvbmdfaHBkKSB7Cj4gLQkJaW50ZWxfZHBfbG9uZ19w dWxzZShpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yKTsKPiAtCQlpZiAoaW50ZWxfZHAtPmlz X21zdCkKPiAtCQkJcmV0ID0gSVJRX0hBTkRMRUQ7Cj4gLQkJZ290byBwdXRfcG93ZXI7Cj4gLQo+ IC0JfSBlbHNlIHsKPiAtCQlpZiAoaW50ZWxfZHAtPmlzX21zdCkgewo+IC0JCQlpZiAoaW50ZWxf ZHBfY2hlY2tfbXN0X3N0YXR1cyhpbnRlbF9kcCkgPT0gLUVJTlZBTCkgewo+IC0JCQkJLyoKPiAt CQkJCSAqIElmIHdlIHdlcmUgaW4gTVNUIG1vZGUsIGFuZCBkZXZpY2UgaXMgbm90Cj4gLQkJCQkg KiB0aGVyZSwgZ2V0IG91dCBvZiBNU1QgbW9kZQo+IC0JCQkJICovCj4gLQkJCQlEUk1fREVCVUdf S01TKCJNU1QgZGV2aWNlIG1heSBoYXZlIGRpc2FwcGVhcmVkICVkIHZzICVkXG4iLAo+IC0JCQkJ CSAgICAgIGludGVsX2RwLT5pc19tc3QsIGludGVsX2RwLT5tc3RfbWdyLm1zdF9zdGF0ZSk7Cj4g LQkJCQlpbnRlbF9kcC0+aXNfbXN0ID0gZmFsc2U7Cj4gLQkJCQlkcm1fZHBfbXN0X3RvcG9sb2d5 X21ncl9zZXRfbXN0KCZpbnRlbF9kcC0+bXN0X21nciwKPiAtCQkJCQkJCQlpbnRlbF9kcC0+aXNf bXN0KTsKPiAtCQkJCWdvdG8gcHV0X3Bvd2VyOwo+IC0JCQl9Cj4gLQkJfQo+IC0KPiAtCQlpZiAo IWludGVsX2RwLT5pc19tc3QpIHsKPiAtCQkJaWYgKCFpbnRlbF9kcF9zaG9ydF9wdWxzZShpbnRl bF9kcCkpIHsKPiAtCQkJCWludGVsX2RwX2xvbmdfcHVsc2UoaW50ZWxfZHAtPmF0dGFjaGVkX2Nv bm5lY3Rvcik7Cj4gLQkJCQlnb3RvIHB1dF9wb3dlcjsKPiAtCQkJfQo+ICsJaWYgKGludGVsX2Rw LT5pc19tc3QpIHsKPiArCQlpZiAoaW50ZWxfZHBfY2hlY2tfbXN0X3N0YXR1cyhpbnRlbF9kcCkg PT0gLUVJTlZBTCkgewo+ICsJCQkvKgo+ICsJCQkgKiBJZiB3ZSB3ZXJlIGluIE1TVCBtb2RlLCBh bmQgZGV2aWNlIGlzIG5vdAo+ICsJCQkgKiB0aGVyZSwgZ2V0IG91dCBvZiBNU1QgbW9kZQo+ICsJ CQkgKi8KPiArCQkJRFJNX0RFQlVHX0tNUygiTVNUIGRldmljZSBtYXkgaGF2ZSBkaXNhcHBlYXJl ZCAlZCB2cyAlZFxuIiwKPiArCQkJCSAgICAgIGludGVsX2RwLT5pc19tc3QsIGludGVsX2RwLT5t c3RfbWdyLm1zdF9zdGF0ZSk7Cj4gKwkJCWludGVsX2RwLT5pc19tc3QgPSBmYWxzZTsKPiArCQkJ ZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jfc2V0X21zdCgmaW50ZWxfZHAtPm1zdF9tZ3IsCj4gKwkJ CQkJCQlpbnRlbF9kcC0+aXNfbXN0KTsKPiArCQkJZ290byBwdXRfcG93ZXI7Cj4gIAkJfQo+ICsJ fSBlbHNlIHsKPiArCQlpZiAoIWludGVsX2RwX3Nob3J0X3B1bHNlKGludGVsX2RwKSkKPiArCQkJ Z290byBwdXRfcG93ZXI7Cj4gIAl9CgpEb24ndCB3ZSBuZWVkIGEgd2F5IGZvciBzaG9ydCBwdWxz ZXMgdG8gYmUgcHJvY2Vzc2VkIG9uIE1TVCBjb25uZWN0aW9ucyBhcwp3ZWxsPyAgSW4gcGFydGlj dWxhciwgSSdtIHRoaW5raW5nIG9mIERQIGNvbXBsaWFuY2UgdGVzdGluZyBvbiBNU1QKdG9wb2xv Z2llcy4KCkppbQoKPiArCS8qCj4gKwkgKiBMaW5rIHJldHJhaW5pbmcgaGFwcGVucyBmcm9tIHRo ZSBob3RwbHVnIHdvcmssCj4gKwkgKiBjaGVjayBpZiB3ZSBtaWdodCBuZWVkIHRvIHNjaGR1bGUg aXQuCj4gKwkgKgo+ICsJICogVGhlcmUgaGFzIGJlZW4ga25vd24gaXNzdWVzIG9mIGxpbmsgbG9z cwo+ICsJICogdHJpZ2dlcnJpbmcgbG9uZyBwdWxzZSwgc28gbGV0J3MgY2hlY2sgYm90aAo+ICsJ ICogZm9yIHNob3J0IGFuZCBsb25nIHB1bHNlLgo+ICsJICovCj4gKwlpZiAoaW50ZWxfZHBfbGlu a19uZWVkc19yZXRyYWluKGludGVsX2RwKSkKPiArCQlnb3RvIHB1dF9wb3dlcjsKPiArCj4gIAly ZXQgPSBJUlFfSEFORExFRDsKPiAgCj4gIHB1dF9wb3dlcjoKPiAtLSAKPiAyLjcuNApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK