From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zanoni, Paulo R" Subject: Re: [PATCH 4/4] drm/i915: Determine DP++ type 1 DVI adaptor presence based on VBT Date: Mon, 4 Apr 2016 14:09:45 +0000 Message-ID: <1459778984.2368.3.camel@intel.com> References: <1456245988-19442-1-git-send-email-ville.syrjala@linux.intel.com> <1456245988-19442-5-git-send-email-ville.syrjala@linux.intel.com> <1459461996.2369.7.camel@intel.com> <20160401144534.GS4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160401144534.GS4329@intel.com> Content-Language: en-US Content-ID: 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: "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org RW0gU2V4LCAyMDE2LTA0LTAxIMOgcyAxNzo0NSArMDMwMCwgVmlsbGUgU3lyasOkbMOkIGVzY3Jl dmV1Og0KPiBPbiBUaHUsIE1hciAzMSwgMjAxNiBhdCAxMDowNjozN1BNICswMDAwLCBaYW5vbmks IFBhdWxvIFIgd3JvdGU6DQo+ID4gDQo+ID4gRW0gVGVyLCAyMDE2LTAyLTIzIMOgcyAxODo0NiAr MDIwMCwgdmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20NCj4gPiBlc2NyZXZldToNCj4gPiA+ IA0KPiA+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbT4NCj4gPiA+IA0KPiA+ID4gRFAgZHVhbCBtb2RlIHR5cGUgMSBEVkkgYWRhcHRvcnMgYXJl bid0IHJlcXVpcmVkIHRvIGltcGxlbWVudCBhbnkNCj4gPiA+IHJlZ2lzdGVycywgc28gaXQncyBh IGJpdCBoYXJkIHRvIGRldGVjdCB0aGVtLiBUaGUgYmVzdCB3YXkgd291bGQNCj4gPiA+IGJlIHRv IGNoZWNrIHRoZSBzdGF0ZSBvZiB0aGUgQ09ORklHMSBwaW4sIGJ1dCB3ZSBoYXZlIG5vIHdheSB0 bw0KPiA+ID4gZG8gdGhhdC4gU28gYXMgYSBsYXN0IHJlc29ydCwgY2hlY2sgdGhlIFZCVCB0byBz ZWUgaWYgdGhlIEhETUkNCj4gPiA+IHBvcnQgaXMgaW4gZmFjdCBhIGR1YWwgbW9kZSBjYXBhYmxl IERQIHBvcnQuDQo+ID4gPiANCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8 dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+DQo+ID4gPiAtLS0NCj4gPiA+IMKgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5oIHzCoMKgMyArKysNCj4gPiA+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuY8KgwqDCoHwgMjgNCj4gPiA+ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysNCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmjCoMKg fMKgwqAxICsNCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIHwgMjMg KysrKysrKysrKysrKysrKysrKysrLS0NCj4gPiA+IMKgNCBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KPiA+ID4gDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5oDQo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Jpb3MuaA0KPiA+ID4gaW5kZXggMzUwZDRlMGY3NWE0Li41MGQxNjU5ZWZlNDcg MTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmgNCj4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuaA0KPiA+ID4gQEAgLTcz MCw2ICs3MzAsNyBAQCBzdHJ1Y3QgYmRiX3BzciB7DQo+ID4gPiDCoCNkZWZpbmUJwqBERVZJQ0Vf VFlQRV9JTlRfVFYJMHgxMDA5DQo+ID4gPiDCoCNkZWZpbmUJwqBERVZJQ0VfVFlQRV9IRE1JCTB4 NjBEMg0KPiA+ID4gwqAjZGVmaW5lCcKgREVWSUNFX1RZUEVfRFAJCTB4NjhDNg0KPiA+ID4gKyNk ZWZpbmUJwqBERVZJQ0VfVFlQRV9EUF9EVUFMX01PREUJMHg2MEQ2DQo+ID4gPiDCoCNkZWZpbmUJ wqBERVZJQ0VfVFlQRV9lRFAJMHg3OEM2DQo+ID4gPiDCoA0KPiA+ID4gwqAjZGVmaW5lwqDCoERF VklDRV9UWVBFX0NMQVNTX0VYVEVOU0lPTgkoMSA8PCAxNSkNCj4gPiA+IEBAIC03NjQsNiArNzY1 LDggQEAgc3RydWN0IGJkYl9wc3Igew0KPiA+ID4gwqAJwqBERVZJQ0VfVFlQRV9ESVNQTEFZUE9S VF9PVVRQVVQgfCBcDQo+ID4gPiDCoAnCoERFVklDRV9UWVBFX0FOQUxPR19PVVRQVVQpDQo+ID4g PiDCoA0KPiA+ID4gKyNkZWZpbmUgREVWSUNFX1RZUEVfRFBfRFVBTF9NT0RFX0JJVFMNCj4gPiA+ IH5ERVZJQ0VfVFlQRV9OT1RfSERNSV9PVVRQVVQNCj4gPiA+ICsNCj4gPiA+IMKgLyogZGVmaW5l IHRoZSBEVk8gcG9ydCBmb3IgSERNSSBvdXRwdXQgdHlwZSAqLw0KPiA+ID4gwqAjZGVmaW5lCQlE Vk9fQgkJMQ0KPiA+ID4gwqAjZGVmaW5lCQlEVk9fQwkJMg0KPiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMNCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYw0KPiA+ID4gaW5kZXggY2JjMDY1OTY2NTlhLi5mM2VkYWNmNTE3YWMgMTAw NjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jDQo+ID4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jDQo+ID4gPiBAQCAtNTEwNCw2ICs1 MTA0LDM0IEBAIGJvb2wgaW50ZWxfZHBfaXNfZWRwKHN0cnVjdCBkcm1fZGV2aWNlDQo+ID4gPiAq ZGV2LA0KPiA+ID4gZW51bSBwb3J0IHBvcnQpDQo+ID4gPiDCoAlyZXR1cm4gZmFsc2U7DQo+ID4g PiDCoH0NCj4gPiA+IMKgDQo+ID4gPiArYm9vbCBpbnRlbF9kcF9pc19kdWFsX21vZGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+ID4gZW51bQ0KPiA+ID4gcG9ydCBwb3J0 KQ0KPiA+ID4gK3sNCj4gPiA+ICsJY29uc3QgdW5pb24gY2hpbGRfZGV2aWNlX2NvbmZpZyAqcF9j aGlsZDsNCj4gPiA+ICsJaW50IGk7DQo+ID4gPiArCXN0YXRpYyBjb25zdCBzaG9ydCBwb3J0X21h cHBpbmdbXSA9IHsNCj4gPiA+ICsJCVtQT1JUX0JdID0gRFZPX1BPUlRfRFBCLA0KPiA+ID4gKwkJ W1BPUlRfQ10gPSBEVk9fUE9SVF9EUEMsDQo+ID4gPiArCQlbUE9SVF9EXSA9IERWT19QT1JUX0RQ RCwNCj4gPiA+ICsJCVtQT1JUX0VdID0gRFZPX1BPUlRfRFBFLA0KPiA+ID4gKwl9Ow0KPiA+ID4g Kw0KPiA+ID4gKwlpZiAocG9ydCA9PSBQT1JUX0EgfHwgcG9ydCA+PSBBUlJBWV9TSVpFKHBvcnRf bWFwcGluZykpDQo+ID4gPiArCQlyZXR1cm4gZmFsc2U7DQo+ID4gPiArDQo+ID4gPiArCWlmICgh ZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVtKQ0KPiA+ID4gKwkJcmV0dXJuIGZhbHNlOw0KPiA+ ID4gKw0KPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVt OyBpKyspIHsNCj4gPiA+ICsJCXBfY2hpbGQgPSAmZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZbaV07 DQo+ID4gPiArDQo+ID4gPiArCQlpZiAocF9jaGlsZC0+Y29tbW9uLmR2b19wb3J0ID09DQo+ID4g PiBwb3J0X21hcHBpbmdbcG9ydF0NCj4gPiA+ICYmDQo+ID4gPiArCQnCoMKgwqDCoChwX2NoaWxk LT5jb21tb24uZGV2aWNlX3R5cGUgJg0KPiA+ID4gREVWSUNFX1RZUEVfRFBfRFVBTF9NT0RFX0JJ VFMpID09DQo+ID4gPiArCQnCoMKgwqDCoChERVZJQ0VfVFlQRV9EUF9EVUFMX01PREUgJg0KPiA+ ID4gREVWSUNFX1RZUEVfRFBfRFVBTF9NT0RFX0JJVFMpKQ0KPiA+ID4gKwkJCXJldHVybiB0cnVl Ow0KPiA+ID4gKwl9DQo+ID4gU29tZSB0aG91Z2h0czoNCj4gPiANCj4gPiBUaGlzIGlzIGdvaW5n IHRvIGJlIGltcGxlbWVudGVkIGZvciBhbGwgVkJUIHZlcnNpb25zLiBTaW5jZSB0aGVyZSdzDQo+ ID4gbm8NCj4gPiByZWFsIGhpc3RvcnkgYWJvdXQgYW55dGhpbmcgYmVmb3JlIHZlcnNpb24gMTU1 LCBpcyB0aGlzIHJlYWxseSB3aGF0DQo+ID4gd2UNCj4gPiB3YW50PyBBIGh1Z2UgcGFydCBvZiB0 aGUgIndlIGRvbid0IHRydXN0IHRoZSBWQlQiIGN1bHR1cmUgd2UgaGF2ZQ0KPiA+IG9uDQo+ID4g b3VyIHRlYW0gaXMgYmVjYXVzZSBvZiB0aG9zZSBvbGQgdmVyc2lvbnMgYmVpbmcgY29tcGxldGVs eQ0KPiA+IHVucmVsaWFibGUuDQo+ID4gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgY291bGQgbWFr ZSB0aGlzIGltcGxlbWVudGF0aW9uIGp1c3QgYmUgYQ0KPiA+IHNtYWxsDQo+ID4gcGF0Y2ggaW4g cGFyc2VfZGRpX3BvcnQoKS4gSSdtIGtpbmRhIGFmcmFpZCB3ZSBtYXkgc29tZWhvdyBicmVhaw0K PiA+IG9sZA0KPiA+IG1hY2hpbmVzIHlldCBhZ2Fpbi4NCj4gSSBkb24ndCB0aGluayBpdCBtYXR0 ZXJzIG11Y2guIElMSyBiZWluZyB0aGUgb2xkZXN0IHBsYXRmb3JtIHdpdGgNCj4gRFArKw0KPiBj YXBhYmxlIG9mID4xNjVNSHosIGFuZCBhdCBsZWFzdCBteSBJTEsgaGVyZSBhbHJlYWR5IGhhcyBW QlQgdmVyc2lvbg0KPiAxNjMuIEFsc28gdGhpcyBkZXZpY2UgdHlwZSBzdHVmZiB3YXMgdGhlcmUg YmVmb3JlIDE1NSBhbHJlYWR5LiBBbmQNCj4gdGhlIGlzX2VkcCgpIHRoaW5nIGhhcyB3b3JrZWQg Zm9yIHVzIG1vc3RseSBmaW5lIHNvIGlmIHdlIHRoaW5ncyB0aGUNCj4gc2FtZSB3YXkgaXQgc2Vl bXMgdW5saWtlbHkgd2UgZ2V0IHRvbyBtYW55IHByb2JsZW1zLg0KDQo+IA0KPiA+IA0KPiA+IA0K PiA+IC0gSW5zdGVhZCBvZiBjcmVhdGluZyB0aGVzZSBjb21wbGljYXRlZCBiaXQgbWFza3MsIHdo eSBkb24ndCB3ZQ0KPiA+IGp1c3QNCj4gPiBzcGVjaWZpY2FsbHkgY2hlY2sgImlmIGJpdCAyIGFu ZCBiaXQgNCBhcmUgZW5hYmxlZCwgd2UncmUgdXNpbmcgYW4NCj4gPiBhZGFwdG9yIj8gTXVjaCBz aW1wbGVyIElNSE8uDQo+IEknbSBub3Qgc3VyZSBpdCdzIGEgZ29vZCBpZGVhIHRvIHRydXN0IHRo YXQgc29tZSBjcmFwcHkgQklPUyBkb2Vzbid0DQo+IGp1c3Qgc2V0IHdoYXRldmVyIHJhbmRvbSBi aXRzIG9uIGEgcmFuZG9tIHBvcnQuIFNvIGEgbW9yZQ0KPiBjb25zZXJ2YXRpdmUgYXBwcm9hY2gg c2VlbXMgbGlrZSBhIGJldHRlciBpZGVhIHRvIG1lLiBBbHNvIGl0IG1hdGNoZXMNCj4gaG93IHdl IGRvIHRoZSBpc19lZHAoKSBjaGVjay4NCg0KRnVuY2lvbiBpbnRlbF9kZGlfaW5pdCgpIGFscmVh ZHkgb25seSBsb29rcyBhdCB0aGUgc3BlY2lmaWMgYml0cyB3aGVuDQpkZWNpZGluZyB3aGV0aGVy IHRvIGluaXRpYWxpemUgRFAgb3IgSERNSS4gT1RPSCB0aGF0J3MganVzdCBmb3IgSFNXKw0Kd2hp Y2ggaGFzIGEgc29tZXdoYXQtdHJ1c3RhYmxlIFZCVC4NCg0KQW55d2F5LCBJIGhhdmUgbm8gZnVy dGhlciBjb21tZW50cyBmb3IgdGhlIHNlcmllcy4gRmVlbCBmcmVlIHRvIHNlbmQgdjINCmJhc2Vk IG9uIHRoZSBkaXNjdXNzaW9uIGFuZCB5b3VyIGNvbmNsdXNpb25zLg0KDQo+IA0KPiA+IA0KPiA+ IA0KPiA+IC0gSmFuaSdzIHJlY2VudCBwYXRjaCBzdWdnZXN0cyB5b3UgbWF5IHdhbnQgdG8gbW92 ZSB0aGlzIGZ1bmN0aW9uDQo+ID4gdG8NCj4gPiBpbnRlbF9iaW9zLmMgaW4gb3JkZXIgdG8gYXZv aWQgaW5jbHVkaW5nIGludGVsX3ZidF9kZWZzLmggZnJvbQ0KPiA+IGludGVsX2hkbWkuYy4gQW55 d2F5LCB5b3UnbGwgaGF2ZSB0byByZWJhc2UuDQo+ID4gDQo+ID4gPiANCj4gPiA+ICsJcmV0dXJu IGZhbHNlOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+IMKgdm9pZA0KPiA+ID4gwqBpbnRlbF9k cF9hZGRfcHJvcGVydGllcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBzdHJ1Y3QNCj4gPiA+ IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikNCj4gPiA+IMKgew0KPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+ID4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oDQo+ID4gPiBpbmRleCAzY2EyOWExODFlNjQuLmM3ZDFlYTRkYmU0 MiAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaA0KPiA+ID4gQEAgLTEy NDgsNiArMTI0OCw3IEBAIGludCBpbnRlbF9kcF9zaW5rX2NyYyhzdHJ1Y3QgaW50ZWxfZHANCj4g PiA+ICppbnRlbF9kcCwgdTggKmNyYyk7DQo+ID4gPiDCoGJvb2wgaW50ZWxfZHBfY29tcHV0ZV9j b25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ID4gPiDCoAkJCcKgwqDCoMKg wqBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0KPiA+ID4gKnBpcGVfY29uZmlnKTsNCj4gPiA+IMKg Ym9vbCBpbnRlbF9kcF9pc19lZHAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBv cnQpOw0KPiA+ID4gK2Jvb2wgaW50ZWxfZHBfaXNfZHVhbF9tb2RlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwNCj4gPiA+IGVudW0NCj4gPiA+IHBvcnQgcG9ydCk7DQo+ID4gPiDC oGVudW0gaXJxcmV0dXJuIGludGVsX2RwX2hwZF9wdWxzZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0DQo+ID4gPiAqaW50ZWxfZGlnX3BvcnQsDQo+ID4gPiDCoAkJCQnCoMKgYm9vbCBsb25nX2hw ZCk7DQo+ID4gPiDCoHZvaWQgaW50ZWxfZWRwX2JhY2tsaWdodF9vbihzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKTsNCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oZG1pLmMNCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jDQo+ID4g PiBpbmRleCA2NjBhNjVmNDhmZDguLjE0NzZmM2FmYjdlMiAxMDA2NDQNCj4gPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYw0KPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRtaS5jDQo+ID4gPiBAQCAtMTM5MCwxNCArMTM5MCwzMyBAQCBpbnRl bF9oZG1pX3Vuc2V0X2VkaWQoc3RydWN0DQo+ID4gPiBkcm1fY29ubmVjdG9yDQo+ID4gPiAqY29u bmVjdG9yKQ0KPiA+ID4gwqB9DQo+ID4gPiDCoA0KPiA+ID4gwqBzdGF0aWMgdm9pZA0KPiA+ID4g LWludGVsX2hkbWlfZHBfZHVhbF9tb2RlX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yKQ0KPiA+ID4gK2ludGVsX2hkbWlfZHBfZHVhbF9tb2RlX2RldGVjdChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLA0KPiA+ID4gYm9vbA0KPiA+ID4gaGFzX2VkaWQpDQo+ID4g PiDCoHsNCj4gPiA+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY29ubmVjdG9yLQ0KPiA+ID4gPmRldik7DQo+ID4gPiDCoAlzdHJ1Y3QgaW50ZWxfaGRtaSAq aGRtaSA9DQo+ID4gPiBpbnRlbF9hdHRhY2hlZF9oZG1pKGNvbm5lY3Rvcik7DQo+ID4gPiArCWVu dW0gcG9ydCBwb3J0ID0gaGRtaV90b19kaWdfcG9ydChoZG1pKS0+cG9ydDsNCj4gPiA+IMKgCXN0 cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9DQo+ID4gPiDCoAkJaW50ZWxfZ21idXNfZ2V0X2Fk YXB0ZXIoZGV2X3ByaXYsIGhkbWktDQo+ID4gPiA+ZGRjX2J1cyk7DQo+ID4gPiDCoAllbnVtIGRy bV9kcF9kdWFsX21vZGVfdHlwZSB0eXBlID0NCj4gPiA+IGRybV9kcF9kdWFsX21vZGVfZGV0ZWN0 KGFkYXB0ZXIpOw0KPiA+ID4gwqANCj4gPiA+ICsJLyoNCj4gPiA+ICsJwqAqIFR5cGUgMSBEVkkg YWRhcHRvcnMgYXJlIG5vdCByZXF1aXJlZCB0byBpbXBsZW1lbnQgYW55DQo+ID4gPiArCcKgKiBy ZWdpc3RlcnMsIHNvIHdlIGNhbid0IGFsd2F5cyBkZXRlY3QgdGhlaXIgcHJlc2VuY2UuDQo+ID4g PiArCcKgKiBJZGVhbGx5IHdlIHNob3VsZCBiZSBhYmxlIHRvIGNoZWNrIHRoZSBzdGF0ZSBvZiB0 aGUNCj4gPiA+ICsJwqAqIENPTkZJRzEgcGluLCBidXQgbm8gc3VjaCBsdWNrIG9uIG91ciBoYXJk d2FyZS4NCj4gPiA+ICsJwqAqDQo+ID4gPiArCcKgKiBUaGUgb25seSBtZXRob2QgbGVmdCB0byB1 cyBpcyB0byBjaGVjayB0aGUgVkJUIHRvIHNlZQ0KPiA+ID4gKwnCoCogaWYgdGhlIHBvcnQgaXMg YSBkdWFsIG1vZGUgY2FwYWJsZSBEUCBwb3J0LiBCdXQgbGV0J3MNCj4gPiA+ICsJwqAqIG9ubHkg ZG8gdGhhdCB3aGVuIHdlIHN1Y2VzZnVsbHkgcmVhZCB0aGUgRURJRCwgdG8NCj4gPiA+IGF2b2lk DQo+ID4gPiArCcKgKiBjb25mdXNpbmcgbG9nIG1lc3NhZ2VzIGFib3V0IERQIGR1YWwgbW9kZSBh ZGFwdG9ycw0KPiA+ID4gd2hlbg0KPiA+ID4gKwnCoCogdGhlcmUncyBub3RoaW5nIGNvbm5lY3Rl ZCB0byB0aGUgcG9ydC4NCj4gPiA+ICsJwqAqLw0KPiA+ID4gKwlpZiAodHlwZSA9PSBEUk1fRFBf RFVBTF9NT0RFX05PTkUgJiYgaGFzX2VkaWQgJiYNCj4gPiA+ICsJwqDCoMKgwqBpbnRlbF9kcF9p c19kdWFsX21vZGUoZGV2X3ByaXYsIHBvcnQpKSB7DQo+ID4gPiArCQlEUk1fREVCVUdfS01TKCJB c3N1bWluZyBEUCBkdWFsIG1vZGUgYWRhcHRvcg0KPiA+ID4gcHJlc2VuY2UgYmFzZWQgb24gVkJU XG4iKTsNCj4gPiA+ICsJCXR5cGUgPSBEUk1fRFBfRFVBTF9NT0RFX1RZUEUxX0RWSTsNCj4gPiA+ ICsJfQ0KPiA+ID4gKw0KPiA+ID4gwqAJaWYgKHR5cGUgPT0gRFJNX0RQX0RVQUxfTU9ERV9OT05F KQ0KPiA+ID4gwqAJCXJldHVybjsNCj4gPiA+IMKgDQo+ID4gPiBAQCAtMTQ0MSw3ICsxNDYwLDcg QEAgaW50ZWxfaGRtaV9zZXRfZWRpZChzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcg0KPiA+ID4gKmNvbm5l Y3RvciwgYm9vbCBmb3JjZSkNCj4gPiA+IMKgCQkJCcKgwqDCoMKgaW50ZWxfZ21idXNfZ2V0X2Fk YXB0ZXIoZGV2Xw0KPiA+ID4gcHJpdg0KPiA+ID4gLA0KPiA+ID4gwqAJCQkJwqDCoMKgwqBpbnRl bF9oZG1pLT5kZGNfYnVzKSk7DQo+ID4gPiDCoA0KPiA+ID4gLQkJaW50ZWxfaGRtaV9kcF9kdWFs X21vZGVfZGV0ZWN0KGNvbm5lY3Rvcik7DQo+ID4gPiArCQlpbnRlbF9oZG1pX2RwX2R1YWxfbW9k ZV9kZXRlY3QoY29ubmVjdG9yLCBlZGlkDQo+ID4gPiAhPQ0KPiA+ID4gTlVMTCk7DQo+ID4gPiDC oA0KPiA+ID4gwqAJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LA0KPiA+ID4gUE9X RVJfRE9NQUlOX0dNQlVTKTsNCj4gPiA+IMKgCX0KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==