From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 07/12] drm/i915: Move DP link retraining into intel_dp_detect() Date: Mon, 1 Aug 2016 13:03:56 +0300 Message-ID: <20160801100356.GL4329@intel.com> References: <1469717448-4297-1-git-send-email-ville.syrjala@linux.intel.com> <1469717448-4297-8-git-send-email-ville.syrjala@linux.intel.com> <20160728194853.GA23736@intel.com> <20160728201522.GT4329@intel.com> <20160729003614.GB23736@intel.com> <20160729214529.GB25660@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id E59296E0FE for ; Mon, 1 Aug 2016 10:04:00 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20160729214529.GB25660@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 Cc: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKdWwgMjksIDIwMTYgYXQgMDI6NDU6MjlQTSAtMDcwMCwgTWFuYXNpIE5hdmFyZSB3 cm90ZToKPiBPbiBUaHUsIEp1bCAyOCwgMjAxNiBhdCAwNTozNjoxNFBNIC0wNzAwLCBNYW5hc2kg TmF2YXJlIHdyb3RlOgo+ID4gT24gVGh1LCBKdWwgMjgsIDIwMTYgYXQgMTE6MTU6MjJQTSArMDMw MCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gPiBPbiBUaHUsIEp1bCAyOCwgMjAxNiBhdCAx Mjo0ODo1M1BNIC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+ID4gPiA+IE9uIFRodSwgSnVs IDI4LCAyMDE2IGF0IDA1OjUwOjQzUE0gKzAzMDAsIHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tIHdyb3RlOgo+ID4gPiA+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gRFAgbGluayByZXRyYWluaW5n IG5lZWRzIHRvIGdyYWIgc29tZSBtb2Rlc2V0IGxvY2tzIHRvIG5vdCByYWNlIHdpdGgKPiA+ID4g PiA+IG1vZGVzZXRzLCBzbyB3ZSBjYW4ndCByZWFsbHkgZG8gaXQgc2FmZWx5IGZyb20gdGhlIGhw ZF9wdWxzZSwgbGVzdCB3ZQo+ID4gPiA+ID4gcmlzayBkZWFkbG9ja2luZyBkdWUgdG8gTVNUIHNp ZGViYW5kIHN0dWZmLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBNb3ZlIHRoZSBsaW5rIHJldHJhaW5p bmcgdG8gaGFwcGVuIGZyb20gdGhlIGhvdHBsdWcgd29yayBpbnN0ZWFkLgo+ID4gPiA+ID4gRG9p bmcgYXQgdGhlIGVuZCBvZiBpbnRlbF9kcF9kZXRlY3QoKSBzZWVtcyBsaWtlIGEgZ29vZCBwbGFj ZSBpbiBjYXNlCj4gPiA+ID4gPiB0aGUgc2luayBhbHJlYWR5IGdvdCBkaXNjb25uZWN0ZWQsIGlu IHdoaWNoIGNhc2UgcmV0cmFpbmluZyBpcwo+ID4gPiA+ID4gcG9pbnRsZXNzLgo+ID4gPiA+ID4g Cj4gPiA+ID4gPiBUbyBkZXRlcm1pbmUgaWYgd2UgbmVlZCB0byBzY2hlZHVsZSB0aGUgaG90cGx1 ZyB3b3JrLCB3ZSdsbCBqdXN0IGNoZWNrCj4gPiA+ID4gPiB0aGUgc2luayBsYW5lIHN0YXR1cyB3 aXRob3V0IGxvY2tzIGZyb20gaHBkX3B1bHNlLiBBIGxpdHRsZSByYWN5Cj4gPiA+ID4gPiBzdGls bCBlZy4gZHVlIHRvIHVzZWluZyBpbnRlbF9kcC0+bGFuZV9jb3VudCwgYnV0IG5vIGxlc3MgcmFj eSB0aGFuCj4gPiA+ID4gPiB3aGF0IHdlIGFscmVhZHkgaGFkLiBXZSdsbCByZXBlYXQgdGhlIGNo ZWNrIGluIGZyb20gaW50ZWxfZHBfZGV0ZWN0KCkKPiA+ID4gPiA+IHdpdGggcHJvcGVyIGxvY2tp bmcsIHdoZXJlIHdlJ2xsIGFsc28gY2hlY2sgaWYgdGhlIGxpbmsgYXMgYWN0dWFsbHkKPiA+ID4g PiA+IGFjdGl2ZSBvciBub3QuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IENjOiBBbmRlciBDb25zZWx2 YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+Cj4g PiA+ID4gPiBDYzogSmltIEJyaWRlIDxqaW0uYnJpZGVAbGludXguaW50ZWwuY29tPgo+ID4gPiA+ ID4gQ2M6IE1hbmFzaSBEIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiA+ID4g PiA+IENjOiBEdXJnYWRvc3MgUiA8ZHVyZ2Fkb3NzLnJAaW50ZWwuY29tPgo+ID4gPiA+ID4gU2ln bmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMgfCAxNTQgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gPiA+ ID4gIDEgZmlsZSBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCA4OCBkZWxldGlvbnMoLSkKPiA+ ID4gPiA+IAo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+ID4gPiBpbmRleCA0 YTQxODRjMjE5ODkuLjY3NWI4M2Y1N2EwNyAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKPiA+ID4gPiA+IEBAIC0zODQyLDE1ICszODQyLDYgQEAgaW50ZWxfZHBf Y2hlY2tfbXN0X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPiA+ID4gIAkJ YnJldCA9IGludGVsX2RwX2dldF9zaW5rX2lycV9lc2koaW50ZWxfZHAsIGVzaSk7Cj4gPiA+ID4g PiAgZ29fYWdhaW46Cj4gPiA+ID4gPiAgCQlpZiAoYnJldCA9PSB0cnVlKSB7Cj4gPiA+ID4gPiAt Cj4gPiA+ID4gPiAtCQkJLyogY2hlY2sgbGluayBzdGF0dXMgLSBlc2lbMTBdID0gMHgyMDBjICov Cj4gPiA+ID4gPiAtCQkJaWYgKGludGVsX2RwLT5hY3RpdmVfc3RyZWFtcyAmJgo+ID4gPiA+ID4g LQkJCSAgICAhZHJtX2RwX2NoYW5uZWxfZXFfb2soJmVzaVsxMF0sIGludGVsX2RwLT5sYW5lX2Nv dW50KSkgewo+ID4gPiA+ID4gLQkJCQlEUk1fREVCVUdfS01TKCJjaGFubmVsIEVRIG5vdCBvaywg cmV0cmFpbmluZ1xuIik7Cj4gPiA+ID4gPiAtCQkJCWludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4o aW50ZWxfZHApOwo+ID4gPiA+ID4gLQkJCQlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oaW50ZWxf ZHApOwo+ID4gPiA+ID4gLQkJCX0KPiA+ID4gPiA+IC0KPiA+ID4gPiA+ICAJCQlEUk1fREVCVUdf S01TKCJnb3QgZXNpICUzcGhcbiIsIGVzaSk7Cj4gPiA+ID4gPiAgCQkJcmV0ID0gZHJtX2RwX21z dF9ocGRfaXJxKCZpbnRlbF9kcC0+bXN0X21nciwgZXNpLCAmaGFuZGxlZCk7Cj4gPiA+ID4gPiAg Cj4gPiA+ID4gPiBAQCAtMzg4NiwzNCArMzg3Nyw0MiBAQCBnb19hZ2FpbjoKPiA+ID4gPiA+ICAJ cmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gLXN0YXRp YyB2b2lkCj4gPiA+ID4gPiAtaW50ZWxfZHBfY2hlY2tfbGlua19zdGF0dXMoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKPiA+ID4gPiA+ICtzdGF0aWMgYm9vbAo+ID4gPiA+ID4gK2ludGVsX2Rw X2xpbmtfbmVlZHNfcmV0cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPiA+ID4g IHsKPiA+ID4gPiA+IC0Jc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIgPSAmZHBf dG9fZGlnX3BvcnQoaW50ZWxfZHApLT5iYXNlOwo+ID4gPiA+ID4gLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKPiA+ID4gPiA+ICAJdTggbGlua19z dGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV07Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAtCVdBUk5f T04oIWRybV9tb2Rlc2V0X2lzX2xvY2tlZCgmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211 dGV4KSk7Cj4gPiA+ID4gPiArCWlmIChpbnRlbF9kcC0+YWN0aXZlX3N0cmVhbXMgPT0gMCkKPiA+ ID4gPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJaWYgKGludGVs X2RwLT5jb21wbGlhbmNlX3Rlc3RfdHlwZSA9PSBEUF9URVNUX0xJTktfVFJBSU5JTkcpCj4gPiA+ ID4gPiArCQlyZXR1cm4gdHJ1ZTsKPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICAJaWYgKCFpbnRlbF9k cF9nZXRfbGlua19zdGF0dXMoaW50ZWxfZHAsIGxpbmtfc3RhdHVzKSkgewo+ID4gPiA+ID4gIAkJ RFJNX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGxpbmsgc3RhdHVzXG4iKTsKPiA+ID4gPiA+IC0JCXJl dHVybjsKPiA+ID4gPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ID4gPiA+ICAJfQo+ID4gPiA+ID4g IAo+ID4gPiA+ID4gLQlpZiAoIWludGVsX2VuY29kZXItPmJhc2UuY3J0YykKPiA+ID4gPiA+IC0J CXJldHVybjsKPiA+ID4gPiA+ICsJcmV0dXJuICFkcm1fZHBfY2hhbm5lbF9lcV9vayhsaW5rX3N0 YXR1cywgaW50ZWxfZHAtPmxhbmVfY291bnQpOwo+ID4gPiA+IAo+ID4gPiA+IEFjY29yZGluZyB0 byB0aGUgRFAgc3BlYywgd2Ugc2hvdWxkIGFsc28gY2hlY2sgZm9yIHRoZSBjbG9jayByZWNvdmVy eSBiaXQgaW4gRFBDRAo+ID4gPiA+IFdlIHNob3VsZCBhbHNvIGFkZCBhIGNoZWNrIGRybV9kcF9j bG9ja19yZWNvdmVyeV9vayhsaW5rX3N0YXR1cywgaW50ZWxfZHAtPmxhbmVfY291bnQpCj4gPiA+ IAo+ID4gPiBJIHRoaW5rIGRybV9kcF9jaGFubmVsX2VxX29rKCkgY2hlY2tzIGFsbCB0aGUgYml0 czogSU5URVJMQU5FX0FMSUdOX0RPTkUsCj4gPiA+IENSX0RPTkUsIEVRX0RPTkUsIGFuZCBTWU1C T0xfTE9DS0VELgo+ID4gCj4gPiBJdCBvbmx5IGNoZWNrcyBmb3IgRVFfRE9ORSBhbmQgSU5URVJM QU5FX0FMSUdOX0RPTkUuCj4gPiBkcm1fZHBfY2xvY2tfcmVjb3Zlcnlfb2soKSBjaGVja3MgZm9y IERQX0xBTkVfQ1JfRE9ORSBiaXQuCj4gPiA+IAo+ID4gPiBBbnl3YXlzLCB3aGlsZSBJIHdhcyBs b29raW5nIGF0IHRoZSBzaG9ydCBwdWxzZSBoYW5kbGluZyBhIGJpdCBtb3JlLCBJIGNhbWUKPiA+ ID4gdG8gdGhlIGNvbmNsdXNpb24gdGhhdCB3ZSBzaG91bGQgcmV3cml0ZSBpdCBhIGJpdC4KPiA+ ID4gCj4gPiA+IFRoZSBDVFMgZG9jcyBzZWVtIHRvIHNheSB0aGF0IHdlJ3JlIGV4cGVjdGVkIHRv IHJlYWQgRFBDRCAweDIwMC0weDIwNSBvbiAKPiA+ID4gc2hvcnQgcHVsc2UsIGFuZCB1c2UgdGhh dCBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgd2hhdCB3ZSBzaG91bGQgZG8uCj4gPiA+IEN1cnJl bnRseSB3ZSBkb24ndCBkbyB0aGF0Lgo+ID4gPiAKPiA+ID4gU28gSSB3YXMgdGh1bmtpbmcgdGhh dCB3ZSdkIGFkanVzdCB0aGUgbGlua19zdGF0dXMgc3R1ZmYgdG8gcmVhZCAweDIwMC0weDIwNwo+ ID4gPiBpbnN0ZWFkIG9mIDB4MjAyLTB4MjA3LCBsaWtlIHNvOgo+ID4gPiAtI2RlZmluZSBEUF9M SU5LX1NUQVRVU19TSVpFICAgICAgIDYKPiA+ID4gKyNkZWZpbmUgRFBfTElOS19TVEFUVVNfU0la RSAgICAgICA4Cj4gPiA+IAo+ID4gPiAgc3RhdGljIHU4IGRwX2xpbmtfc3RhdHVzKGNvbnN0IHU4 IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdLCBpbnQgcikKPiA+ID4gIHsKPiA+ID4g LSAgICAgICByZXR1cm4gbGlua19zdGF0dXNbciAtIERQX0xBTkUwXzFfU1RBVFVTXTsKPiA+ID4g KyAgICAgICByZXR1cm4gbGlua19zdGF0dXNbciAtIERQX1NJTktfQ09VTlRdOwo+ID4gPiAgfQo+ ID4gPiAKPiA+ID4gQW5kIHRoZW4gd2UnZCB1c2Ugc29tZXRoaW5nIGxpa2UgdGhpcyBhcyBvdXIg c2hvcnQgcHVsc2UgaGFuZGxlcjoKPiA+ID4gCj4gPiA+IHN0YXRpYyBib29sCj4gPiA+IGludGVs X2RwX3Nob3J0X3B1bHNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+IHsKPiA+ID4g ICAgICAgICB1OCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXSwgdG1wOwo+ID4gPiAK PiA+ID4gICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKPiA+ID4gICAgICAgICAgKiBDbGVhcmluZyBjb21wbGlhbmNlIHRlc3QgdmFy aWFibGVzIHRvIGFsbG93IGNhcHR1cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKPiA+ID4gICAgICAgICAgKiBvZiB2YWx1ZXMgZm9yIG5l eHQgYXV0b21hdGVkIHRlc3QgcmVxdWVzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPiA+ID4gICAgICAgICAgKi8KPiA+ ID4gICAgICAgICBpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X2FjdGl2ZSA9IDA7Cj4gPiA+ICAg ICAgICAgaW50ZWxfZHAtPmNvbXBsaWFuY2VfdGVzdF90eXBlID0gMDsKPiA+ID4gICAgICAgICBp bnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X2RhdGEgPSAwOwo+ID4gPiAKPiA+ID4gICAgICAgICBp ZiAoIWludGVsX2RwX2dldF9saW5rX3N0YXR1cyhpbnRlbF9kcCwgbGlua19zdGF0dXMpKQo+ID4g PiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gPiAKPiA+ID4gICAgICAgICB0bXAg PSBkcm1fZHBfbGlua19zdGF0dXMobGlua19zdGF0dXMsIERQX0RFVklDRV9TRVJWSUNFX0lSUV9W RUNUT1IpOwo+ID4gPiAgICAgICAgIGlmICh0bXApCj4gPiA+ICAgICAgICAgICAgICAgICBkcm1f ZHBfZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsCj4gPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRFBfREVWSUNFX1NFUlZJQ0VfSVJRX1ZFQ1RPUiwKPiA+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXApOwo+ID4gPiAKPiA+ID4gICAgICAgICBp ZiAodG1wICYgRFBfQVVUT01BVEVEX1RFU1RfUkVRVUVTVCkKPiA+ID4gICAgICAgICAgICAgICAg IERSTV9ERUJVR19EUklWRVIoIlRlc3QgcmVxdWVzdCBpbiBzaG9ydCBwdWxzZSBub3QgaGFuZGxl ZFxuIik7Cj4gPiA+ICAgICAgICAgaWYgKHRtcCAmIChEUF9DUF9JUlEgfCBEUF9TSU5LX1NQRUNJ RklDX0lSUSkpCj4gPiA+ICAgICAgICAgICAgICAgICBEUk1fREVCVUdfRFJJVkVSKCJDUCBvciBz aW5rIHNwZWNpZmljIGlycSB1bmhhbmRsZWRcbiIpOwo+ID4gPiAKPiA+ID4gICAgICAgICB0bXAg PSBkcm1fZHBfbGlua19zdGF0dXMobGlua19zdGF0dXMsIERQX0xBTkVfQUxJR05fU1RBVFVTX1VQ REFURUQpOwo+ID4gPiAgICAgICAgIGlmICh0bXAgJiBEUF9ET1dOU1RSRUFNX1BPUlRfU1RBVFVT X0NIQU5HRUQpCj4gPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPiA+IAo+ID4g PiAgICAgICAgIHRtcCA9IGRybV9kcF9saW5rX3N0YXR1cyhsaW5rX3N0YXR1cywgRFBfU0lOS19D T1VOVCk7Cj4gPiA+ICAgICAgICAgaWYgKERQX0dFVF9TSU5LX0NPVU5UKHRtcCkgIT0gaW50ZWxf ZHAtPnNpbmtfY291bnQpCj4gPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPiA+ IAo+ID4gPiAgICAgICAgIGlmIChpbnRlbF9kcC0+YWN0aXZlX3N0cmVhbXMgIT0gMCAmJgo+ID4g PiAgICAgICAgICAgICAhZHJtX2RwX2NoYW5uZWxfZXFfb2sobGlua19zdGF0dXMsIGludGVsX2Rw LT5sYW5lX2NvdW50KSkKPiA+ID4gICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+ID4g Cj4gPiA+ICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiA+IH0KPiA+ID4gCj4gPiA+IGFuZCBvYnZp b3VzbHkgZmlsbCBpbiB3aGF0ZXZlciBlbHNlIHNpbmsgaXJxIGhhbmRsaW5nIHdlIG5lZWQuCj4g PiA+IAo+ID4gPiBUaG91Z2h0cz8gRG9lcyB0aGF0IGxvb2sgc2FuZT8KPiA+IAo+ID4gWWVzIGFs bCB0aGUgTGluayBtYWludGVuYW5jZSB0ZXN0cyBpbiBDVFMgc3BlYyBleHBlY3QgRFBDRCByZWdp c3RlcnMKPiA+IDAyMDBoLTAyMDVoIHRvIGJlIHJlYWQgb24gbG9zcyBvZiBzeW1ib2wgbG9jayBv ciBsb3NzIG9mIGNsb2NrIHJlY292ZXJ5Lgo+ID4gU28gSSB0aGluayBpdCBtYWtlcyBzZW5zZSB0 byByZWFkIDAyMDAtMDIwNWguCj4gPiAKPiA+ID4gCj4gPiA+IDxzbmlwPgo+ID4gPiA+ID4gIAo+ ID4gPiA+ID4gIHN0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzCj4gPiA+ID4gPiAgaW50 ZWxfZHBfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2Up Cj4gPiA+ID4gPiAgewo+ID4gPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gaW50 ZWxfYXR0YWNoZWRfZHAoY29ubmVjdG9yKTsKPiA+ID4gPiA+IC0Jc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gPiA+ ID4gPiAtCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gJmludGVsX2RpZ19w b3J0LT5iYXNlOwo+ID4gPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25u ZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKTsKPiA+ID4gPiA+ICsJZW51bSBk cm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAgCURSTV9E RUJVR19LTVMoIltDT05ORUNUT1I6JWQ6JXNdXG4iLAo+ID4gPiA+ID4gIAkJICAgICAgY29ubmVj dG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUpOwo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gLQlp ZiAoaW50ZWxfZHAtPmlzX21zdCkgewo+ID4gPiA+ID4gLQkJLyogTVNUIGRldmljZXMgYXJlIGRp c2Nvbm5lY3RlZCBmcm9tIGEgbW9uaXRvciBQT1YgKi8KPiA+ID4gPiA+IC0JCWludGVsX2RwX3Vu c2V0X2VkaWQoaW50ZWxfZHApOwo+ID4gPiA+ID4gLQkJaWYgKGludGVsX2VuY29kZXItPnR5cGUg IT0gSU5URUxfT1VUUFVUX0VEUCkKPiA+ID4gPiA+IC0JCQlpbnRlbF9lbmNvZGVyLT50eXBlID0g SU5URUxfT1VUUFVUX0RQOwo+ID4gPiA+ID4gLQkJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfZGlz Y29ubmVjdGVkOwo+ID4gPiA+ID4gLQl9Cj4gPiA+ID4gPiAtCj4gPiA+ID4gPiAtCS8qIElmIGZ1 bGwgZGV0ZWN0IGlzIG5vdCBwZXJmb3JtZWQgeWV0LCBkbyBhIGZ1bGwgZGV0ZWN0ICovCj4gPiA+ ID4gPiAtCWlmICghaW50ZWxfZHAtPmRldGVjdF9kb25lKQo+ID4gPiA+ID4gLQkJaW50ZWxfZHBf bG9uZ19wdWxzZShpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yKTsKPiA+ID4gPiA+ICsJc3Rh dHVzID0gaW50ZWxfZHBfbG9uZ19wdWxzZShpbnRlbF9jb25uZWN0b3IpOwo+ID4gPiA+ID4gIAo+ ID4gPiA+ID4gLQlpbnRlbF9kcC0+ZGV0ZWN0X2RvbmUgPSBmYWxzZTsKPiA+ID4gPiA+ICsJaWYg KHN0YXR1cyA9PSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCB8fCBpbnRlbF9kcC0+aXNfbXN0 KQo+ID4gPiA+IAo+ID4gPiA+IFdoeWEgcmUgd2Ugbm90IGNoZWNraW5nIGZvciAoIWludGVsX2Vu Y29kZXItPmNydGMuYmFzZSkgYmVmb3JlIHJldHJhaW5pbmc/Cj4gPiA+ID4gSSBoYWQgc2VlbiBp c3N1ZXMgd2l0aCBjb25uZWN0ZWQgYm9vdCBjYXNlIHdoZW4gY29ubmVjdG9yIHN0YXR1cyBpcyBj b25uZWN0ZWQgYW5kIGlmIGl0Cj4gPiA+ID4gdHJpZXMgdG8gcmV0cmFpbiBpdCBmYWlscyB3aXRo IHJldHJpZXMgYmVjYXVzZSB0aGVyZSBpcyBubyBhY3RpdmUgcGlwZS4gSW4gdGhhdAo+ID4gPiA+ IGNhc2UgaXQgc2hvdWxkIG5vdCBhdHRlbXB0IHRvIHJldHJhaW4uCj4gPiA+IAo+ID4gPiBJIGNo YW5nZWQgaXQgdG8gdXNlIGludGVsX2RwLT5hY3RpdmVfc3RyZWFtcyBpbnN0ZWFkLiBUaGF0J2xs IHdvcmsgZm9yIE1TVAo+ID4gPiBhcyB3ZWxsIGFzIFNTVC4gQ2hlY2tpbmcgZm9yIHRoZSBjcnRj IHdvdWxkIG9ubHkgY292ZXIgU1NULgo+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiA+ ICsJCWludGVsX2RwX2xpbmtfcmV0cmFpbihpbnRlbF9kcCk7Cj4gPiA+ID4gPiAgCj4gPiA+ID4g PiAtCWlmIChpc19lZHAoaW50ZWxfZHApIHx8IGludGVsX2Nvbm5lY3Rvci0+ZGV0ZWN0X2VkaWQp Cj4gPiA+ID4gPiAtCQlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cj4gPiA+ID4g PiAtCWVsc2UKPiA+ID4gPiA+IC0JCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3Rl ZDsKPiA+ID4gPiA+ICsJcmV0dXJuIHN0YXR1czsKPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiAgCj4g PiA+ID4gPiAgc3RhdGljIHZvaWQKPiA+ID4gPiA+IEBAIC00NzA2LDM5ICs0NjgyLDQxIEBAIGlu dGVsX2RwX2hwZF9wdWxzZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCwgYm9vbCBsb25nX2hwZCkKPiA+ID4gPiA+ICAJCSAgICAgIHBvcnRfbmFtZShpbnRlbF9kaWdf cG9ydC0+cG9ydCksCj4gPiA+ID4gPiAgCQkgICAgICBsb25nX2hwZCA/ICJsb25nIiA6ICJzaG9y dCIpOwo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gKwlpZiAobG9uZ19ocGQpCj4gPiA+ID4gPiArCQly ZXR1cm4gSVJRX05PTkU7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgCXBvd2VyX2RvbWFpbiA9IGlu dGVsX2Rpc3BsYXlfcG9ydF9hdXhfcG93ZXJfZG9tYWluKGludGVsX2VuY29kZXIpOwo+ID4gPiA+ ID4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiA+ ID4gPiA+ICAKPiA+ID4gPiA+IC0JaWYgKGxvbmdfaHBkKSB7Cj4gPiA+ID4gPiAtCQlpbnRlbF9k cF9sb25nX3B1bHNlKGludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3IpOwo+ID4gPiA+ID4gLQkJ aWYgKGludGVsX2RwLT5pc19tc3QpCj4gPiA+ID4gPiAtCQkJcmV0ID0gSVJRX0hBTkRMRUQ7Cj4g PiA+ID4gPiAtCQlnb3RvIHB1dF9wb3dlcjsKPiA+ID4gPiA+IC0KPiA+ID4gPiA+IC0JfSBlbHNl IHsKPiA+ID4gPiA+IC0JCWlmIChpbnRlbF9kcC0+aXNfbXN0KSB7Cj4gPiA+ID4gPiAtCQkJaWYg KGludGVsX2RwX2NoZWNrX21zdF9zdGF0dXMoaW50ZWxfZHApID09IC1FSU5WQUwpIHsKPiA+ID4g PiA+IC0JCQkJLyoKPiA+ID4gPiA+IC0JCQkJICogSWYgd2Ugd2VyZSBpbiBNU1QgbW9kZSwgYW5k IGRldmljZSBpcyBub3QKPiA+ID4gPiA+IC0JCQkJICogdGhlcmUsIGdldCBvdXQgb2YgTVNUIG1v ZGUKPiA+ID4gPiA+IC0JCQkJICovCj4gPiA+ID4gPiAtCQkJCURSTV9ERUJVR19LTVMoIk1TVCBk ZXZpY2UgbWF5IGhhdmUgZGlzYXBwZWFyZWQgJWQgdnMgJWRcbiIsCj4gPiA+ID4gPiAtCQkJCQkg ICAgICBpbnRlbF9kcC0+aXNfbXN0LCBpbnRlbF9kcC0+bXN0X21nci5tc3Rfc3RhdGUpOwo+ID4g PiA+ID4gLQkJCQlpbnRlbF9kcC0+aXNfbXN0ID0gZmFsc2U7Cj4gPiA+ID4gPiAtCQkJCWRybV9k cF9tc3RfdG9wb2xvZ3lfbWdyX3NldF9tc3QoJmludGVsX2RwLT5tc3RfbWdyLAo+ID4gPiA+ID4g LQkJCQkJCQkJaW50ZWxfZHAtPmlzX21zdCk7Cj4gPiA+ID4gPiAtCQkJCWdvdG8gcHV0X3Bvd2Vy Owo+ID4gPiA+ID4gLQkJCX0KPiA+ID4gPiA+IC0JCX0KPiA+ID4gPiA+IC0KPiA+ID4gPiA+IC0J CWlmICghaW50ZWxfZHAtPmlzX21zdCkgewo+ID4gPiA+ID4gLQkJCWlmICghaW50ZWxfZHBfc2hv cnRfcHVsc2UoaW50ZWxfZHApKSB7Cj4gPiA+ID4gPiAtCQkJCWludGVsX2RwX2xvbmdfcHVsc2Uo aW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvcik7Cj4gPiA+ID4gPiAtCQkJCWdvdG8gcHV0X3Bv d2VyOwo+ID4gPiA+ID4gLQkJCX0KPiA+ID4gPiA+ICsJaWYgKGludGVsX2RwLT5pc19tc3QpIHsK PiA+ID4gPiA+ICsJCWlmIChpbnRlbF9kcF9jaGVja19tc3Rfc3RhdHVzKGludGVsX2RwKSA9PSAt RUlOVkFMKSB7Cj4gPiA+ID4gPiArCQkJLyoKPiA+ID4gPiA+ICsJCQkgKiBJZiB3ZSB3ZXJlIGlu IE1TVCBtb2RlLCBhbmQgZGV2aWNlIGlzIG5vdAo+ID4gPiA+ID4gKwkJCSAqIHRoZXJlLCBnZXQg b3V0IG9mIE1TVCBtb2RlCj4gPiA+ID4gPiArCQkJICovCj4gPiA+ID4gPiArCQkJRFJNX0RFQlVH X0tNUygiTVNUIGRldmljZSBtYXkgaGF2ZSBkaXNhcHBlYXJlZCAlZCB2cyAlZFxuIiwKPiA+ID4g PiA+ICsJCQkJICAgICAgaW50ZWxfZHAtPmlzX21zdCwgaW50ZWxfZHAtPm1zdF9tZ3IubXN0X3N0 YXRlKTsKPiA+ID4gPiA+ICsJCQlpbnRlbF9kcC0+aXNfbXN0ID0gZmFsc2U7Cj4gPiA+ID4gPiAr CQkJZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jfc2V0X21zdCgmaW50ZWxfZHAtPm1zdF9tZ3IsCj4g PiA+ID4gPiArCQkJCQkJCWludGVsX2RwLT5pc19tc3QpOwo+ID4gPiA+ID4gKwkJCWdvdG8gcHV0 X3Bvd2VyOwo+ID4gPiA+ID4gIAkJfQo+ID4gPiA+ID4gKwl9IGVsc2Ugewo+ID4gPiA+ID4gKwkJ aWYgKCFpbnRlbF9kcF9zaG9ydF9wdWxzZShpbnRlbF9kcCkpCj4gPiA+ID4gPiArCQkJZ290byBw dXRfcG93ZXI7Cj4gPiA+ID4gPiAgCX0KPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICsJLyoKPiA+ID4g PiA+ICsJICogTGluayByZXRyYWluaW5nIGhhcHBlbnMgZnJvbSB0aGUgaG90cGx1ZyB3b3JrLAo+ ID4gPiA+ID4gKwkgKiBjaGVjayBpZiB3ZSBtaWdodCBuZWVkIHRvIHNjaGR1bGUgaXQuCj4gPiA+ ID4gPiArCSAqCj4gPiA+ID4gPiArCSAqIFRoZXJlIGhhcyBiZWVuIGtub3duIGlzc3VlcyBvZiBs aW5rIGxvc3MKPiA+ID4gPiA+ICsJICogdHJpZ2dlcnJpbmcgbG9uZyBwdWxzZSwgc28gbGV0J3Mg Y2hlY2sgYm90aAo+ID4gPiA+ID4gKwkgKiBmb3Igc2hvcnQgYW5kIGxvbmcgcHVsc2UuCj4gPiA+ ID4gPiArCSAqLwo+ID4gPiA+ID4gKwlpZiAoaW50ZWxfZHBfbGlua19uZWVkc19yZXRyYWluKGlu dGVsX2RwKSkKPiA+ID4gPiA+ICsJCWdvdG8gcHV0X3Bvd2VyOwo+IAo+IFdoYXQgaGFwcGVucyBp biBjYXNlIG9mIGxpbmsgbG9zcyB0cmlnZ2VyaW5nIGxvbmcgcHVsc2UsIGRvZXMgdGhpcyBsaW5r IHJldHJhaW5pbmcKPiBhbHNvIGdldCBoYW5kbGVkIGluIGludGVsX2RwX2RldGVjdCgpPwoKWWVz LCBpbiBmYWN0IGxpbmsgdHJhaW5pbmcgaXMgX29ubHlfIGRvbmUgZnJvbSBpbnRlbF9kcF9kZXRl Y3QoKS4gU28gaWYKd2UgZGV0ZWN0IGEgbGluayBsb3NzIGZyb20gYSBzaG9ydCBocGQsIHdlJ2xs IHNjaGVkdWxlIHRoZSBmdWxsCmludGVsX2RwX2RldGVjdCgpIHRvIHJldHJhaW4gdGhlIGxpbmsu Cgo+IAo+IE1hbmFzaQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gIAlyZXQgPSBJUlFfSEFORExFRDsK PiA+ID4gPiA+ICAKPiA+ID4gPiA+ICBwdXRfcG93ZXI6Cj4gPiA+ID4gPiAtLSAKPiA+ID4gPiA+ IDIuNy40Cj4gPiA+ID4gPiAKPiA+ID4gCj4gPiA+IC0tIAo+ID4gPiBWaWxsZSBTeXJqw6Rsw6QK PiA+ID4gSW50ZWwgT1RDCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=