From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Pandiyan, Dhinakaran" Subject: Re: [PATCH v3] drm/i915/psr: Execute the default PSR code path when setting i915_edp_psr_debug Date: Wed, 6 Feb 2019 02:22:42 +0000 Message-ID: <1d65178da6b59a32a575105b006cc7e17679e86d.camel@intel.com> References: <20190201015958.24692-1-jose.souza@intel.com> <58e19521037ac72b5c25eb59f0f75cb3847244a1.camel@intel.com> <24475825e660d0f36d14effbcc3f198aeb600089.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3D6806E04F for ; Wed, 6 Feb 2019 02:22:44 +0000 (UTC) In-Reply-To: <24475825e660d0f36d14effbcc3f198aeb600089.camel@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: "intel-gfx@lists.freedesktop.org" , "Souza, Jose" List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAyMDE5LTAyLTA1IGF0IDE2OjIzIC0wODAwLCBTb3V6YSwgSm9zZSB3cm90ZToNCj4g T24gVHVlLCAyMDE5LTAyLTA1IGF0IDE1OjUwIC0wODAwLCBEaGluYWthcmFuIFBhbmRpeWFuIHdy b3RlOg0KPiA+IE9uIFRodSwgMjAxOS0wMS0zMSBhdCAxNzo1OSAtMDgwMCwgSm9zw6kgUm9iZXJ0 byBkZSBTb3V6YSB3cm90ZToNCj4gPiA+IENoYW5naW5nIHRoZSBpOTE1X2VkcF9wc3JfZGVidWcg d2FzIGVuYWJsaW5nLCBkaXNhYmxpbmcgb3INCj4gPiA+IHN3aXRjaGluZw0KPiA+ID4gUFNSIHZl cnNpb24gYnkgZGlyZWN0bHkgY2FsbGluZyBpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoKSBhbmQN Cj4gPiA+IGludGVsX3Bzcl9lbmFibGVfbG9ja2VkKCksIHdoYXQgaXMgbm90IHRoZSBkZWZhdWx0 IFBTUiBwYXRoIHRoYXQNCj4gPiA+IHdpbGwNCj4gPiA+IGJlIGV4ZWN1dGVkIGJ5IHJlYWwgdXNl cnMuDQo+ID4gPiANCj4gPiA+IFNvIGxldHMgZm9yY2UgYSBmYXN0c2V0IGluIHRoZSBQU1IgQ1JU QyB0byB0cmlnZ2VyIGEgcGlwZSB1cGRhdGUNCj4gPiA+IGFuZA0KPiA+ID4gc3RyZXNzIHRoZSBk ZWZhdWx0IGNvZGUgcGF0aC4NCj4gPiA+IA0KPiA+ID4gUmVjZW50bHkgYSBidWcgd2FzIGZvdW5k IHdoZW4gc3dpdGNoaW5nIGZyb20gUFNSMiB0byBQU1IxIHdoaWxlDQo+ID4gPiBlbmFibGVfcHNy IGtlcm5lbCBwYXJhbWV0ZXIgd2FzIHNldCB0byB0aGUgZGVmYXVsdCBwYXJhbWV0ZXIsDQo+ID4g PiB0aGlzDQo+ID4gPiBjaGFuZ2VzIGZpeCBpdCBhbmQgYWxzbyBmaXhlcyB0aGUgYnVnIGxpbmtl ZCBiZWxsb3cgd2VyZSBEUlJTIHdhcw0KPiA+ID4gbGVmdCBlbmFibGVkIHRvZ2V0aGVyIHdpdGgg UFNSIHdoZW4gZW5hYmxpbmcgUFNSIGZyb20gZGVidWdmcy4NCj4gPiA+IA0KPiA+ID4gdjI6IEhh bmRsaW5nIG1pc3NpbmcgY2FzZTogZGlzYWJsZWQgdG8gUFNSMQ0KPiA+ID4gDQo+ID4gPiB2Mzog Tm90IGR1cGxpY2F0aW5nIHRoZSB3aG9sZSBhdG9taWMgc3RhdGUoTWFhcnRlbikNCj4gPiA+IA0K PiA+ID4gQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dp P2lkPTEwODM0MQ0KPiA+ID4gQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3Jz dEBsaW51eC5pbnRlbC5jb20+DQo+ID4gPiBDYzogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFr YXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+DQo+ID4gPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdv LnZpdmlAaW50ZWwuY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogSm9zw6kgUm9iZXJ0byBkZSBT b3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+DQo+ID4gPiAtLS0NCj4gPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyB8ICAxNCArLS0NCj4gPiA+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oICAgICB8ICAgMiArLQ0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jICAgIHwgICAyICstDQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggICAgfCAgIDYgKy0NCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wc3IuYyAgICB8IDE4OCArKysrKysrKysrKysrKysrKy0tLS0tDQo+ID4gPiAtLQ0KPiA+ID4g LS0NCj4gPiA+IC0tDQo+ID4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAxMTkgaW5zZXJ0aW9ucygrKSwg OTMgZGVsZXRpb25zKC0pDQo+ID4gPiANCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYw0KPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYw0KPiA+ID4gaW5kZXggZmEyYzIyNmZjNzc5Li43NjZhNWI0YWQzZDYgMTAwNjQ0 DQo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYw0KPiA+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMNCj4gPiA+IEBAIC0yNjA3 LDcgKzI2MDcsNiBAQCBzdGF0aWMgaW50DQo+ID4gPiAgaTkxNV9lZHBfcHNyX2RlYnVnX3NldCh2 b2lkICpkYXRhLCB1NjQgdmFsKQ0KPiA+ID4gIHsNCj4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGF0YTsNCj4gPiA+IC0Jc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVp cmVfY3R4IGN0eDsNCj4gPiA+ICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7DQo+ID4gPiAgCWlu dCByZXQ7DQo+ID4gPiAgDQo+ID4gPiBAQCAtMjYxOCwxOCArMjYxNyw3IEBAIGk5MTVfZWRwX3Bz cl9kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0DQo+ID4gPiB2YWwpDQo+ID4gPiAgDQo+ID4gPiAg CXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7DQo+ID4gPiAgDQo+ID4g PiAtCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LA0KPiA+ID4gRFJNX01PREVTRVRfQUNR VUlSRV9JTlRFUlJVUFRJQkxFKTsNCj4gPiA+IC0NCj4gPiA+IC1yZXRyeToNCj4gPiA+IC0JcmV0 ID0gaW50ZWxfcHNyX3NldF9kZWJ1Z2ZzX21vZGUoZGV2X3ByaXYsICZjdHgsIHZhbCk7DQo+ID4g PiAtCWlmIChyZXQgPT0gLUVERUFETEspIHsNCj4gPiA+IC0JCXJldCA9IGRybV9tb2Rlc2V0X2Jh Y2tvZmYoJmN0eCk7DQo+ID4gPiAtCQlpZiAoIXJldCkNCj4gPiA+IC0JCQlnb3RvIHJldHJ5Ow0K PiA+ID4gLQl9DQo+ID4gPiAtDQo+ID4gPiAtCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7 DQo+ID4gPiAtCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsNCj4gPiA+ICsJcmV0ID0g aW50ZWxfcHNyX3NldF9kZWJ1Z2ZzX21vZGUoZGV2X3ByaXYsIHZhbCk7DQo+ID4gPiAgDQo+ID4g PiAgCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsNCj4gPiA+ICANCj4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ID4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gPiA+IGluZGV4IGYxMWM2NmQxNzJk My4uYmFlZTU4MWEwZDViIDEwMDY0NA0KPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaA0KPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0K PiA+ID4gQEAgLTQ5Niw3ICs0OTYsNyBAQCBzdHJ1Y3QgaTkxNV9wc3Igew0KPiA+ID4gIA0KPiA+ ID4gIAl1MzIgZGVidWc7DQo+ID4gPiAgCWJvb2wgc2lua19zdXBwb3J0Ow0KPiA+ID4gLQlib29s IHByZXBhcmVkLCBlbmFibGVkOw0KPiA+ID4gKwlib29sIGVuYWJsZWQ7DQo+ID4gPiAgCXN0cnVj dCBpbnRlbF9kcCAqZHA7DQo+ID4gPiAgCWVudW0gcGlwZSBwaXBlOw0KPiA+ID4gIAlib29sIGFj dGl2ZTsNCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGku Yw0KPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYw0KPiA+ID4gaW5kZXgg Y2E3MDU1NDZhMGFiLi45MjExZTQ1Nzk0ODkgMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYw0KPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmMNCj4gPiA+IEBAIC0zNTU2LDcgKzM1NTYsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9kZGlfdXBkYXRlX3BpcGVfZHAoc3RydWN0DQo+ID4gPiBpbnRlbF9lbmNvZGVyICplbmNvZGVy LA0KPiA+ID4gIHsNCj4gPiA+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19p bnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7DQo+ID4gPiAgDQo+ID4gPiAtCWludGVsX3Bzcl9lbmFi bGUoaW50ZWxfZHAsIGNydGNfc3RhdGUpOw0KPiA+ID4gKwlpbnRlbF9wc3JfdXBkYXRlKGludGVs X2RwLCBjcnRjX3N0YXRlKTsNCj4gPiA+ICAJaW50ZWxfZWRwX2RycnNfZW5hYmxlKGludGVsX2Rw LCBjcnRjX3N0YXRlKTsNCj4gPiA+ICANCj4gPiA+ICAJaW50ZWxfcGFuZWxfdXBkYXRlX2JhY2ts aWdodChlbmNvZGVyLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsNCj4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaA0KPiA+ID4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaA0KPiA+ID4gaW5kZXggOTBiYTU0MzYzNzBlLi40YzAxZGVjYzMw ZDMgMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaA0K PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4gPiA+IEBAIC0y MDY3LDkgKzIwNjcsOSBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwDQo+ ID4gPiAqaW50ZWxfZHAsDQo+ID4gPiAgCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSk7DQo+ID4gPiAgdm9pZCBpbnRlbF9wc3JfZGlzYWJsZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLA0KPiA+ID4gIAkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKTsNCj4gPiA+IC1pbnQgaW50ZWxfcHNyX3NldF9kZWJ1 Z2ZzX21vZGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gPiA+ICpkZXZfcHJpdiwNCj4gPiA+ IC0JCQkgICAgICAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgsDQo+ID4gPiAt CQkJICAgICAgIHU2NCB2YWx1ZSk7DQo+ID4gPiArdm9pZCBpbnRlbF9wc3JfdXBkYXRlKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ID4gPiArCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7DQo+ID4gPiAraW50IGludGVsX3Bzcl9zZXRfZGVidWdm c19tb2RlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ID4gPiAqZGV2X3ByaXYsDQo+ID4gPiB1 NjQgdmFsdWUpOw0KPiA+ID4gIHZvaWQgaW50ZWxfcHNyX2ludmFsaWRhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+ID4gIAkJCSAgdW5zaWduZWQgZnJvbnRidWZmZXJf Yml0cywNCj4gPiA+ICAJCQkgIGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdpbik7DQo+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMNCj4gPiA+IGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMNCj4gPiA+IGluZGV4IDg0YTBmYjk4MTU2MS4uZTk3 MGZmZDdkZDBkIDEwMDY0NA0KPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cHNyLmMNCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jDQo+ID4g PiBAQCAtNTEsNiArNTEsOCBAQA0KPiA+ID4gICAqIG11c3QgYmUgY29ycmVjdGx5IHN5bmNocm9u aXplZC9jYW5jZWxsZWQgd2hlbiBzaHV0dGluZyBkb3duDQo+ID4gPiB0aGUNCj4gPiA+IHBpcGUu Ig0KPiA+ID4gICAqLw0KPiA+ID4gIA0KPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPg0KPiA+ ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4NCj4gPiA+ICANCj4gPiA+ICAj aW5jbHVkZSAiaW50ZWxfZHJ2LmgiDQo+ID4gPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiDQo+ID4g PiBAQCAtNzE4LDggKzcyMCwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX2xvY2tl ZChzdHJ1Y3QNCj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+ID4gIHsNCj4g PiA+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGRldl9wcml2LT5wc3IuZHA7DQo+ID4g PiAgDQo+ID4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpDQo+ID4gPiAtCQlyZXR1cm47 DQo+ID4gPiArCVdBUk5fT04oZGV2X3ByaXYtPnBzci5lbmFibGVkKTsNCj4gPiA+ICsNCj4gPiA+ ICsJZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQgPSBpbnRlbF9wc3IyX2VuYWJsZWQoZGV2X3By aXYsDQo+ID4gPiBjcnRjX3N0YXRlKTsNCj4gPiA+ICsJZGV2X3ByaXYtPnBzci5idXN5X2Zyb250 YnVmZmVyX2JpdHMgPSAwOw0KPiA+ID4gKwlkZXZfcHJpdi0+cHNyLnBpcGUgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0YyktDQo+ID4gPiA+IHBpcGU7DQo+ID4gPiANCj4gPiA+ ICANCj4gPiA+ICAJRFJNX0RFQlVHX0tNUygiRW5hYmxpbmcgUFNSJXNcbiIsDQo+ID4gPiAgCQkg ICAgICBkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCA/ICIyIiA6ICIxIik7DQo+ID4gPiBAQCAt NzUyLDIwICs3NTcsMTMgQEAgdm9pZCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcA0K PiA+ID4gKmludGVsX2RwLA0KPiA+ID4gIAlXQVJOX09OKGRldl9wcml2LT5kcnJzLmRwKTsNCj4g PiA+ICANCj4gPiA+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+IC0J aWYgKGRldl9wcml2LT5wc3IucHJlcGFyZWQpIHsNCj4gPiA+IC0JCURSTV9ERUJVR19LTVMoIlBT UiBhbHJlYWR5IGluIHVzZVxuIik7DQo+ID4gPiArDQo+ID4gPiArCWlmICghcHNyX2dsb2JhbF9l bmFibGVkKGRldl9wcml2LT5wc3IuZGVidWcpKSB7DQo+ID4gPiArCQlEUk1fREVCVUdfS01TKCJQ U1IgZGlzYWJsZWQgYnkgZmxhZ1xuIik7DQo+ID4gPiAgCQlnb3RvIHVubG9jazsNCj4gPiA+ICAJ fQ0KPiA+ID4gIA0KPiA+ID4gLQlkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCA9IGludGVsX3Bz cjJfZW5hYmxlZChkZXZfcHJpdiwNCj4gPiA+IGNydGNfc3RhdGUpOw0KPiA+ID4gLQlkZXZfcHJp di0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyA9IDA7DQo+ID4gPiAtCWRldl9wcml2LT5wc3Iu cHJlcGFyZWQgPSB0cnVlOw0KPiA+IA0KPiA+IFNpbmNlIHlvdSBhcmUgcmVtb3ZpbmcgLnByZXBh cmVkLCBpcyB0aGVyZSBhIG5lZWQgZm9yDQo+ID4gcHNyX2VuYWJsZS9wc3JfZW5hYmxlX2xvY2tl ZCBzZXBhcmF0aW9uPyBTYW1lIHdpdGggZGlzYWJsZSBhbmQNCj4gPiBkaXNhYmxlX2xvY2tlZD8g VGhlIHdob2xlIHRoaW5nIHdhcyBhZGRlZCBiZWZvcmUgZmFzdHNldCB0byBhdm9pZA0KPiA+IG1v ZGVzZXRzLg0KPiA+IA0KPiANCj4gcHNyX2VuYWJsZV9sb2NrZWQoKSBub3cgd2lsbCBiZSBjYWxs ZWQgZnJvbSBwc3JfZW5hYmxlKCkgYW5kDQo+IHBzcl91cGRhdGUoKSBzbyB3ZSBjYW4ndCBkcm9w IGl0LCB0aGUgc2FtZSBmb3IgcHNyX2Rpc2FibGVfbG9ja2VkKCkNCj4gaXQNCj4gd2lsbCBiZSBj YWxsZWQgZnJvbSBwc3JfZGlzYWJsZSgpIGFuZCBwc3JfdXBkYXRlKCkuDQo+IA0KPiA+IA0KPiA+ ID4gLQlkZXZfcHJpdi0+cHNyLnBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2Uu Y3J0YyktDQo+ID4gPiA+IHBpcGU7DQo+ID4gPiANCj4gPiA+IC0NCj4gPiA+IC0JaWYgKHBzcl9n bG9iYWxfZW5hYmxlZChkZXZfcHJpdi0+cHNyLmRlYnVnKSkNCj4gPiA+IC0JCWludGVsX3Bzcl9l bmFibGVfbG9ja2VkKGRldl9wcml2LCBjcnRjX3N0YXRlKTsNCj4gPiA+IC0JZWxzZQ0KPiA+ID4g LQkJRFJNX0RFQlVHX0tNUygiUFNSIGRpc2FibGVkIGJ5IGZsYWdcbiIpOw0KPiA+ID4gKwlpbnRl bF9wc3JfZW5hYmxlX2xvY2tlZChkZXZfcHJpdiwgY3J0Y19zdGF0ZSk7DQo+ID4gPiAgDQo+ID4g PiAgdW5sb2NrOg0KPiA+ID4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ ID4gPiBAQCAtODQ4LDE4ICs4NDYsNjIgQEAgdm9pZCBpbnRlbF9wc3JfZGlzYWJsZShzdHJ1Y3Qg aW50ZWxfZHANCj4gPiA+ICppbnRlbF9kcCwNCj4gPiA+ICAJCXJldHVybjsNCj4gPiA+ICANCj4g PiA+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+IC0JaWYgKCFkZXZf cHJpdi0+cHNyLnByZXBhcmVkKSB7DQo+ID4gPiAtCQltdXRleF91bmxvY2soJmRldl9wcml2LT5w c3IubG9jayk7DQo+ID4gPiAtCQlyZXR1cm47DQo+ID4gPiAtCX0NCj4gPiA+ICANCj4gPiA+ICAJ aW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKGludGVsX2RwKTsNCj4gPiA+ICANCj4gPiA+IC0JZGV2 X3ByaXYtPnBzci5wcmVwYXJlZCA9IGZhbHNlOw0KPiA+ID4gIAltdXRleF91bmxvY2soJmRldl9w cml2LT5wc3IubG9jayk7DQo+ID4gPiAgCWNhbmNlbF93b3JrX3N5bmMoJmRldl9wcml2LT5wc3Iu d29yayk7DQo+ID4gPiAgfQ0KPiA+ID4gIA0KPiA+ID4gKyNkZWZpbmUgUFNSX01PREVfU1RSSU5H X0dFVChlbmFibGVkLCBwc3IyX2VuYWJsZWQpIFwNCj4gPiA+ICsJCWVuYWJsZWQgPyAocHNyMl9l bmFibGVkID8gIlBTUjIiIDogIlBTUjEiKSA6ICJkaXNhYmxlZCINCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgKiBpbnRlbF9wc3JfdXBkYXRlIC0gVXBkYXRlIFBTUiBzdGF0ZQ0KPiA+ID4g KyAqIEBpbnRlbF9kcDogSW50ZWwgRFANCj4gPiA+ICsgKiBAY3J0Y19zdGF0ZTogbmV3IENSVEMg c3RhdGUNCj4gPiA+ICsgKg0KPiA+ID4gKyAqIFRoaXMgZnVuY3Rpb25zIHdpbGwgdXBkYXRlIFBT UiBzdGF0ZXMsIGRpc2FibGluZywgZW5hYmxpbmcgb3INCj4gPiA+IHN3aXRjaGluZyBQU1INCj4g PiA+ICsgKiB2ZXJzaW9uIHdoZW4gZXhlY3V0aW5nIGZhc3RzZXRzLiBGb3IgZnVsbCBtb2Rlc2V0 LA0KPiA+ID4gaW50ZWxfcHNyX2Rpc2FibGUoKSBhbmQNCj4gPiA+ICsgKiBpbnRlbF9wc3JfZW5h YmxlKCkgc2hvdWxkIGJlIGNhbGxlZCBpbnN0ZWFkLg0KPiA+ID4gKyAqLw0KPiA+ID4gK3ZvaWQg aW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiA+ID4gKwkJICAg ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpDQo+ID4gPiArew0K PiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGlu dGVsX2RwKTsNCj4gPiA+ICsJc3RydWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsN Cj4gPiA+ICsJYm9vbCBlbmFibGUsIHBzcjJfZW5hYmxlOw0KPiA+ID4gKwljb25zdCBjaGFyICpv bGRfbW9kZSwgKm5ld19tb2RlOw0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoIUNBTl9QU1IoZGV2X3By aXYpIHx8IFJFQURfT05DRShwc3ItPmRwKSAhPSBpbnRlbF9kcCkNCj4gPiA+ICsJCXJldHVybjsN Cj4gPiA+ICsNCj4gPiA+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+ ICsNCj4gPiA+ICsJZW5hYmxlID0gY3J0Y19zdGF0ZS0+aGFzX3BzciAmJiBwc3JfZ2xvYmFsX2Vu YWJsZWQocHNyLT5kZWJ1Zyk7DQo+ID4gPiArCXBzcjJfZW5hYmxlID0gaW50ZWxfcHNyMl9lbmFi bGVkKGRldl9wcml2LCBjcnRjX3N0YXRlKTsNCj4gPiANCj4gPiBUaGlzIGdldHMgY29tcHV0ZWQg YWdhaW4gaW4gcHNyX2VuYWJsZV9sb2NrZWQoKS4gTW92ZSB0aGUNCj4gPiBhc3NpZ25tZW50DQo+ ID4gb2YNCj4gPiBkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCBvdXRzaWRlIG9mIHBzcl9lbmFi bGVfbG9ja2VkKCkgPw0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IExvb2tpbmcgYXQgdGhlIGRpZmYs IHRoaXMgcGF0Y2ggbW92ZWQgaXQgZG93biB0bw0KPiA+IHBzcl9lbmFibGVfbG9ja2VkKCksDQo+ ID4gd2h5Pw0KPiANCj4gSSBtb3ZlZCB0byBtYWtlIHBzcl9lbmFibGVfbG9ja2VkKCkgYmUgdGhl IG9uZSByZXNwb3NpYmxlIHRvIGNhbGwgdGhlDQo+IG5lY2Vzc2FyeSBmdW5jdGlvbnMgYW5kIGNo YW5nZSB0aGUgaW50ZXJuYWwgc3RhdGUsIG90aGVyd2lzZSB3ZSB3b3VsZA0KPiBoYXZlIHRoZSBh c3NpZ25tZW50IG9mIGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKCkgaW4NCj4gaW50ZWxfcHNy X2VuYWJsZSgpIGFuZCBpbnRlbF9wc3JfdXBkYXRlKCkuDQo+IEluIG15IG9wbmlvbiBjYWxsIGlu dGVsX3BzcjJfZW5hYmxlZCgpIGl0IGZyb20gaW50ZWxfcHNyX3VwZGF0ZSgpIGFuZA0KPiB0aGVu IGluIGludGVsX3Bzcl9lbmFibGVfbG9ja2VkKCkgaXMgYSB2ZXJ5IHNtYWxsIHByaWNlIHRoYXQg d2UgcGF5DQo+IHRvDQo+IG1ha2UgY29kZSBtb3JlIHNpbXBsZS4NCj4gDQo+ID4gDQo+ID4gPiAr DQo+ID4gPiArCWlmIChwc3ItPmVuYWJsZWQgPT0gZW5hYmxlICYmIHBzcjJfZW5hYmxlID09IHBz ci0+cHNyMl9lbmFibGVkKQ0KPiA+IA0KPiA+IG5pdDoga2VlcGluZyB0aGUgb3JkZXIgY29uc2lz dGVudCBtYWtlcyBpdCBlYXN5IHRvIHJlYWQgSU1PDQo+IA0KPiBPa2F5DQo+IA0KPiA+IA0KPiA+ IGlmIChlbmFibGUgPT0gcHNyLT5lbmFibGVkICYmIHBzcjJfZW5hYmxlID09IHBzci0+cHNyMl9l bmFibGVkKQ0KPiA+ID4gKwkJZ290byB1bmxvY2s7DQo+ID4gPiArDQo+ID4gPiArCW9sZF9tb2Rl ID0gUFNSX01PREVfU1RSSU5HX0dFVChwc3ItPmVuYWJsZWQsIHBzci0NCj4gPiA+ID4gcHNyMl9l bmFibGVkKTsNCj4gPiA+IA0KPiA+ID4gKwluZXdfbW9kZSA9IFBTUl9NT0RFX1NUUklOR19HRVQo ZW5hYmxlLCBwc3IyX2VuYWJsZSk7DQo+ID4gPiArCURSTV9ERUJVR19LTVMoIlVwZGF0aW5nIGZy b20gJXMgdG8gJXMiLCBvbGRfbW9kZSwgbmV3X21vZGUpOw0KPiA+IA0KPiA+IEJvdGggaW50ZWxf cHNyX3tlbmFibGUsIGRpc2FibGV9X2xvY2tlZCgpIHByaW50IHdoYXQncyBoYXBwZW5pbmcsDQo+ ID4gZG9lc24ndCBsb29rIGxpa2UgdGhpcyBhZGRzIGEgYW55IG5ldyBpbmZvcm1hdGlvbi4NCj4g DQo+IEluIHRoZSBsb2dzIHdlIGhhdmUgdGhlIGluZm9ybWF0aW9uIHRoYXQgUFNSIGlzIGJlaW5n IGRpc2FibGVkIGJ1dCB3ZQ0KPiBkb24ndCBrbm93IHRoZSB2ZXJzaW9uIGJ1dCBhbnl3YXlzIGlm IHlvdSB3YW50IEkgY2FuIGRyb3AgdGhpcyBkZWJ1Zw0KPiBtZXNzYWdlLg0KSSBzZWUgdGhpcyBp biBwc3JfZGlzYWJsZV9sb2NrZWQoKSAgDQogICAgICBEUk1fREVCVUdfS01TKCJEaXNhYmxpbmcg UFNSJXNcbiIsDQogICAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJs ZWQgPyAiMiIgOiAiMSIpOw0KPiANCj4gPiANCj4gPiA+ICsNCj4gPiA+ICsJaWYgKHBzci0+ZW5h YmxlZCkgew0KPiA+ID4gKwkJaWYgKCFlbmFibGUgfHwgcHNyMl9lbmFibGUgIT0gcHNyLT5wc3Iy X2VuYWJsZWQpDQo+ID4gPiArCQkJaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKGludGVsX2RwKTsN Cj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoZW5hYmxlKSB7DQo+ID4gPiArCQlpZiAo IXBzci0+ZW5hYmxlZCB8fCBwc3IyX2VuYWJsZSAhPSBwc3ItPnBzcjJfZW5hYmxlZCkNCj4gPiA+ ICsJCQlpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChkZXZfcHJpdiwgY3J0Y19zdGF0ZSk7DQo+ID4g PiArCX0NCj4gPiA+ICsNCj4gPiA+ICt1bmxvY2s6DQo+ID4gPiArCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAgLyoqDQo+ID4gPiAg ICogaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUgLSB3YWl0IGZvciBQU1IxIHRvIGlkbGUNCj4gPiA+ ICAgKiBAbmV3X2NydGNfc3RhdGU6IG5ldyBDUlRDIHN0YXRlDQo+ID4gPiBAQCAtOTI0LDM2ICs5 NjYsNjMgQEAgc3RhdGljIGJvb2wNCj4gPiA+IF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKHN0 cnVjdA0KPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ID4gPiAgCXJldHVybiBl cnIgPT0gMCAmJiBkZXZfcHJpdi0+cHNyLmVuYWJsZWQ7DQo+ID4gPiAgfQ0KPiA+ID4gIA0KPiA+ ID4gLXN0YXRpYyBib29sIHN3aXRjaGluZ19wc3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LA0KPiA+ID4gLQkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs DQo+ID4gPiAtCQkJICB1MzIgbW9kZSkNCj4gPiA+ICtzdGF0aWMgaW50IGludGVsX3Bzcl9mYXN0 c2V0X2ZvcmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ID4gPiAqZGV2X3ByaXYpDQo+ID4g PiAgew0KPiA+ID4gLQkvKiBDYW4ndCBzd2l0Y2ggcHNyIHN0YXRlIGFueXdheSBpZiBQU1IyIGlz IG5vdCBzdXBwb3J0ZWQuICovDQo+ID4gPiAtCWlmICghY3J0Y19zdGF0ZSB8fCAhY3J0Y19zdGF0 ZS0+aGFzX3BzcjIpDQo+ID4gPiAtCQlyZXR1cm4gZmFsc2U7DQo+ID4gPiArCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsNCj4gPiA+ICsJc3RydWN0IGRybV9tb2Rlc2V0 X2FjcXVpcmVfY3R4IGN0eDsNCj4gPiA+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl Ow0KPiA+ID4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7DQo+ID4gPiArCWludCBlcnI7DQo+ID4g PiAgDQo+ID4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCAmJiBtb2RlID09DQo+ ID4gPiBJOTE1X1BTUl9ERUJVR19GT1JDRV9QU1IxKQ0KPiA+ID4gLQkJcmV0dXJuIHRydWU7DQo+ ID4gPiArCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhkZXYpOw0KPiA+ID4gKwlpZiAo IXN0YXRlKQ0KPiA+ID4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ID4gPiAgDQo+ID4gPiAtCWlmICgh ZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQgJiYgbW9kZSAhPQ0KPiA+ID4gSTkxNV9QU1JfREVC VUdfRk9SQ0VfUFNSMSkNCj4gPiA+IC0JCXJldHVybiB0cnVlOw0KPiA+ID4gKwlkcm1fbW9kZXNl dF9hY3F1aXJlX2luaXQoJmN0eCwNCj4gPiA+IERSTV9NT0RFU0VUX0FDUVVJUkVfSU5URVJSVVBU SUJMRSk7DQo+ID4gPiArCXN0YXRlLT5hY3F1aXJlX2N0eCA9ICZjdHg7DQo+ID4gPiArDQo+ID4g PiArcmV0cnk6DQo+ID4gPiArCWRybV9mb3JfZWFjaF9jcnRjKGNydGMsIGRldikgew0KPiA+ID4g KwkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOw0KPiA+ID4gKwkJc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmludGVsX2NydGNfc3RhdGU7DQo+ID4gPiArDQo+ID4gPiArCQljcnRj X3N0YXRlID0gZHJtX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7DQo+ID4gPiAr CQlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKSB7DQo+ID4gPiArCQkJZXJyID0gUFRSX0VSUihjcnRj X3N0YXRlKTsNCj4gPiA+ICsJCQlnb3RvIGVycm9yOw0KPiA+ID4gKwkJfQ0KPiA+ID4gKw0KPiA+ ID4gKwkJaW50ZWxfY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7 DQo+ID4gPiArDQo+ID4gPiArCQlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShpbnRlbF9jcnRjX3N0 YXRlLA0KPiA+ID4gSU5URUxfT1VUUFVUX0VEUCkpIHsNCj4gPiA+ICsJCQkvKiBNYXJrIG1vZGUg YXMgY2hhbmdlZCB0byB0cmlnZ2VyIGEgcGlwZS0NCj4gPiA+ID4gdXBkYXRlKCkgKi8NCj4gPiA+ IA0KPiA+ID4gKwkJCWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7DQo+ID4gDQo+ID4g QWRkIGEgZmxhZyB0byBjb21taXQgb25seSBpZiB3ZSBmb3VuZCBhIGNydGMgd2l0aCBlRFAgb3V0 cHV0PyBBbmQNCj4gPiBwZXJoYXBzLCBjaGVjayBmb3IgY3J0Y19zdGF0ZS0+aGFzX3BzciBpbnN0 ZWFkIG9mIGVEUCBvdXRwdXQ/DQo+IA0KPiBIdXVtIHdlIGNvdWxkIGFkZCB0aGUgY3J0Y19zdGF0 ZS0+aGFzX3BzciBjaGVjayBidXQgbWF5YmUgdGhlcmUgd2lsbA0KPiBiZQ0KPiBhIGNhc2Ugd2hl cmUgaXQgaXMgc2V0IHRvIGZhbHNlIGFuZCBhIG5ldyBjb21wdXRlKCkgd2lsbCBzZXQgaXQgdG8N Cj4gZmFsc2U/DQpJIGNhbid0IHRoaW5rIG9mIGEgY2FzZSwgYW5kIHdoYXRldmVyIGlzIHJlc3Bv bnNpYmxlIGZvciBjaGFuZ2luZw0KY3J0Y19zdGF0ZS0+aGFzX3BzciB3b3VsZCBiZSBkb2luZyBh IHNlcGFyYXRlIG1vZGVzZXQgaWl1Yw0KDQo+ICBBbnl3YXlzIHRoZXJlIGlzIG5vIGRvd24gc2lk ZSBpbiBub3QgY2hlY2tpbmcgaXQgdG9vLg0KPiANCj4gPiANCj4gPiANCj4gPiA+ICsJCQlicmVh azsNCj4gPiA+ICsJCX0NCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwllcnIgPSBkcm1fYXRv bWljX2NvbW1pdChzdGF0ZSk7DQo+ID4gPiArDQo+ID4gPiArZXJyb3I6DQo+ID4gPiArCWlmIChl cnIgPT0gLUVERUFETEspIHsNCj4gPiA+ICsJCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUp Ow0KPiA+ID4gKwkJZXJyID0gZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsNCj4gPiA+ICsJCWlm ICghZXJyKQ0KPiA+ID4gKwkJCWdvdG8gcmV0cnk7DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ ICsJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsNCj4gPiA+ICsJZHJtX21vZGVzZXRfYWNx dWlyZV9maW5pKCZjdHgpOw0KPiA+ID4gKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7DQo+ ID4gPiAgDQo+ID4gPiAtCXJldHVybiBmYWxzZTsNCj4gPiA+ICsJcmV0dXJuIGVycjsNCj4gPiA+ ICB9DQo+ID4gPiAgDQo+ID4gPiAtaW50IGludGVsX3Bzcl9zZXRfZGVidWdmc19tb2RlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlDQo+ID4gPiAqZGV2X3ByaXYsDQo+ID4gPiAtCQkJICAgICAgIHN0 cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4LA0KPiA+ID4gLQkJCSAgICAgICB1NjQg dmFsKQ0KPiA+ID4gK2ludCBpbnRlbF9wc3Jfc2V0X2RlYnVnZnNfbW9kZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZQ0KPiA+ID4gKmRldl9wcml2LA0KPiA+ID4gdTY0IHZhbCkNCj4gPiA+ICB7DQo+ ID4gPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsNCj4gPiA+IC0J c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7DQo+ID4gPiAtCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gTlVMTDsNCj4gPiA+IC0Jc3RydWN0IGRybV9j cnRjX2NvbW1pdCAqY29tbWl0Ow0KPiA+ID4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7DQo+ID4g PiAtCXN0cnVjdCBpbnRlbF9kcCAqZHA7DQo+ID4gPiArCWNvbnN0IHUzMiBtb2RlID0gdmFsICYg STkxNV9QU1JfREVCVUdfTU9ERV9NQVNLOw0KPiA+ID4gKwl1MzIgb2xkX21vZGU7DQo+ID4gPiAg CWludCByZXQ7DQo+ID4gPiAtCWJvb2wgZW5hYmxlOw0KPiA+ID4gLQl1MzIgbW9kZSA9IHZhbCAm IEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSzsNCj4gPiA+ICANCj4gPiA+ICAJaWYgKHZhbCAmIH4o STkxNV9QU1JfREVCVUdfSVJRIHwgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLKSB8fA0KPiA+ID4g IAkgICAgbW9kZSA+IEk5MTVfUFNSX0RFQlVHX0ZPUkNFX1BTUjEpIHsNCj4gPiA+IEBAIC05NjEs NDkgKzEwMzAsMTggQEAgaW50IGludGVsX3Bzcl9zZXRfZGVidWdmc19tb2RlKHN0cnVjdA0KPiA+ ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ID4gPiAgCQlyZXR1cm4gLUVJTlZBTDsN Cj4gPiA+ICAJfQ0KPiA+ID4gIA0KPiA+ID4gLQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZkZXYt Pm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgsDQo+ID4gPiBjdHgpOw0KPiA+ID4gLQlpZiAo cmV0KQ0KPiA+ID4gLQkJcmV0dXJuIHJldDsNCj4gPiA+IC0NCj4gPiA+IC0JLyogZGV2X3ByaXYt PnBzci5kcCBzaG91bGQgYmUgc2V0IG9uY2UgYW5kIHRoZW4gbmV2ZXIgdG91Y2hlZA0KPiA+ID4g YWdhaW4uICovDQo+ID4gPiAtCWRwID0gUkVBRF9PTkNFKGRldl9wcml2LT5wc3IuZHApOw0KPiA+ ID4gLQljb25uX3N0YXRlID0gZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+YmFzZS5zdGF0ZTsNCj4g PiA+IC0JY3J0YyA9IGNvbm5fc3RhdGUtPmNydGM7DQo+ID4gPiAtCWlmIChjcnRjKSB7DQo+ID4g PiAtCQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgY3R4KTsNCj4gPiA+IC0J CWlmIChyZXQpDQo+ID4gPiAtCQkJcmV0dXJuIHJldDsNCj4gPiA+IC0NCj4gPiA+IC0JCWNydGNf c3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsNCj4gPiA+IC0JCWNvbW1p dCA9IGNydGNfc3RhdGUtPmJhc2UuY29tbWl0Ow0KPiA+ID4gLQl9IGVsc2Ugew0KPiA+ID4gLQkJ Y29tbWl0ID0gY29ubl9zdGF0ZS0+Y29tbWl0Ow0KPiA+ID4gLQl9DQo+ID4gPiAtCWlmIChjb21t aXQpIHsNCj4gPiA+IC0JCXJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZSgm Y29tbWl0LQ0KPiA+ID4gPiBod19kb25lKTsNCj4gPiA+IA0KPiA+ID4gLQkJaWYgKHJldCkNCj4g PiA+IC0JCQlyZXR1cm4gcmV0Ow0KPiA+ID4gLQl9DQo+ID4gPiAtDQo+ID4gPiAgCXJldCA9IG11 dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+ICAJaWYg KHJldCkNCj4gPiA+ICAJCXJldHVybiByZXQ7DQo+ID4gPiAgDQo+ID4gPiAtCWVuYWJsZSA9IHBz cl9nbG9iYWxfZW5hYmxlZCh2YWwpOw0KPiA+ID4gLQ0KPiA+ID4gLQlpZiAoIWVuYWJsZSB8fCBz d2l0Y2hpbmdfcHNyKGRldl9wcml2LCBjcnRjX3N0YXRlLCBtb2RlKSkNCj4gPiA+IC0JCWludGVs X3Bzcl9kaXNhYmxlX2xvY2tlZChkZXZfcHJpdi0+cHNyLmRwKTsNCj4gPiA+IC0NCj4gPiA+ICsJ b2xkX21vZGUgPSBkZXZfcHJpdi0+cHNyLmRlYnVnICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNL Ow0KPiA+ID4gIAlkZXZfcHJpdi0+cHNyLmRlYnVnID0gdmFsOw0KPiA+ID4gLQlpZiAoY3J0YykN Cj4gPiA+IC0JCWRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkID0NCj4gPiA+IGludGVsX3BzcjJf ZW5hYmxlZChkZXZfcHJpdiwgY3J0Y19zdGF0ZSk7DQo+ID4gPiAgDQo+ID4gPiAtCWludGVsX3Bz cl9pcnFfY29udHJvbChkZXZfcHJpdiwgZGV2X3ByaXYtPnBzci5kZWJ1Zyk7DQo+ID4gPiArCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+ICANCj4gPiA+IC0JaWYgKGRl dl9wcml2LT5wc3IucHJlcGFyZWQgJiYgZW5hYmxlKQ0KPiA+ID4gLQkJaW50ZWxfcHNyX2VuYWJs ZV9sb2NrZWQoZGV2X3ByaXYsIGNydGNfc3RhdGUpOw0KPiA+ID4gKwlpZiAob2xkX21vZGUgIT0g bW9kZSkNCj4gPiANCj4gPiBXaGF0IGlmIGl0IHdhcyB0aGUgSVJRIGRlYnVnIGJpdCB0aGF0IGhh ZCBjaGFuZ2VkPw0KPiANCj4gT2ggZ29vZCBjYXRjaCwgSSBwcm9iYWJseSBsb3N0IGl0IGluIHNv bWUgcmViYXNlL3ZlcnNpb24sIGl0IHNob3VsZA0KPiBiZToNCj4gDQo+ICsJb2xkX21vZGUgPSBk ZXZfcHJpdi0+cHNyLmRlYnVnICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLOw0KPiAgIAlkZXZf cHJpdi0+cHNyLmRlYnVnID0gdmFsOw0KPiArCWludGVsX3Bzcl9pcnFfY29udHJvbChkZXZfcHJp diwgZGV2X3ByaXYtPnBzci5kZWJ1Zyk7DQo+IA0KPiA+IA0KPiA+ID4gKwkJcmV0ID0gaW50ZWxf cHNyX2Zhc3RzZXRfZm9yY2UoZGV2X3ByaXYpOw0KPiA+ID4gIA0KPiA+ID4gLQltdXRleF91bmxv Y2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ID4gPiAgCXJldHVybiByZXQ7DQo+ID4gPiAgfQ0K PiA+ID4gIA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==