From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Verma, Vishal L" Subject: Re: [PATCH 3/3] acpi: nfit: Add support for hotplug Date: Fri, 9 Oct 2015 18:08:42 +0000 Message-ID: <1444414122.9638.13.camel@intel.com> References: <1444254577-23744-1-git-send-email-vishal.l.verma@intel.com> <1444254577-23744-4-git-send-email-vishal.l.verma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com ([192.55.52.93]:24542 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751093AbbJISIo (ORCPT ); Fri, 9 Oct 2015 14:08:44 -0400 In-Reply-To: Content-Language: en-US Content-ID: <8453BD78EE5835468B23FB4C17F69BB2@intel.com> Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: "jmoyer@redhat.com" Cc: "linux-acpi@vger.kernel.org" , "linux-nvdimm@ml01.01.org" , "Wysocki, Rafael J" T24gRnJpLCAyMDE1LTEwLTA5IGF0IDEzOjMzIC0wNDAwLCBKZWZmIE1veWVyIHdyb3RlOg0KPiBW aXNoYWwgVmVybWEgPHZpc2hhbC5sLnZlcm1hQGludGVsLmNvbT4gd3JpdGVzOg0KPiANCj4gPiBB ZGQgYSAubm90aWZ5IGNhbGxiYWNrIHRvIHRoZSBhY3BpX25maXRfZHJpdmVyIHRoYXQgZ2V0cyBj YWxsZWQgb24NCj4gPiBhDQo+ID4gaG90cGx1ZyBldmVudC4gRnJvbSB0aGlzLCBldmFsdWF0ZSB0 aGUgX0ZJVCBBQ1BJIG1ldGhvZCB3aGljaA0KPiA+IHJldHVybnMNCj4gPiB0aGUgdXBkYXRlZCBO RklUIHdpdGggaGFuZGxlcyBmb3IgdGhlIGhvdC1wbHVnZ2VkIE5WRElNTS4NCj4gPiANCj4gPiBJ dGVyYXRlIG92ZXIgdGhlIG5ldyBORklULCBhbmQgYWRkIGFueSBuZXcgdGFibGVzIGZvdW5kLCBh bmQNCj4gPiByZWdpc3Rlci9lbmFibGUgdGhlIGNvcnJlc3BvbmRpbmcgcmVnaW9ucy4NCj4gPiAN Cj4gPiBJbiB0aGUgbmZpdCB0ZXN0IGZyYW1ld29yaywgYWZ0ZXIgbm9ybWFsIGluaXRpYWxpemF0 aW9uLCB1cGRhdGUgdGhlDQo+ID4gTkZJVA0KPiA+IHdpdGggYSBuZXcgaG90LXBsdWdnZWQgTlZE SU1NLCBhbmQgZGlyZWN0bHkgY2FsbCBpbnRvIHRoZSBkcml2ZXIgdG8NCj4gPiB1cGRhdGUgaXRz IHZpZXcgb2YgdGhlIGF2YWlsYWJsZSByZWdpb25zLg0KPiANCj4gT0ssIHNvIGp1c3QgcGx1Z2dp bmcgaW4gbmV3IE5WRElNTXMgaXMgc3VwcG9ydGVkLCByaWdodD8gIEFyZSB0aGVyZQ0KPiBwbGFu cyB0byBzdXBwb3J0IHVucGx1Z2dpbmcgRElNTXM/DQoNClJpZ2h0LCB0aGlzIGlzIGhvdC1hZGQg b25seSB1bnRpbCBzb21lb25lIGhhcyBhIGhvdC1yZW1vdmUgdXNlIGNhc2UuDQoNCj4gDQo+IC1K ZWZmDQo+IA0KPiA+IA0KPiA+IENjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVs LmNvbT4NCj4gPiBDYzogUmFmYWVsIEouIFd5c29ja2kgPHJhZmFlbC5qLnd5c29ja2lAaW50ZWwu Y29tPg0KPiA+IENjOiA8bGludXgtYWNwaUB2Z2VyLmtlcm5lbC5vcmc+DQo+ID4gQ2M6IDxsaW51 eC1udmRpbW1AbGlzdHMuMDEub3JnPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFZpc2hhbCBWZXJtYSA8 dmlzaGFsLmwudmVybWFAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL2FjcGkvbmZp dC5jICAgICAgICAgICAgICB8IDEzNg0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLQ0KPiA+ICBkcml2ZXJzL2FjcGkvbmZpdC5oICAgICAgICAgICAgICB8ICAgMiArDQo+ ID4gIHRvb2xzL3Rlc3RpbmcvbnZkaW1tL3Rlc3QvbmZpdC5jIHwgMTQ0DQo+ID4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystDQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMjY3 IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2FjcGkvbmZpdC5jIGIvZHJpdmVycy9hY3BpL25maXQuYw0KPiA+IGluZGV4IGVkNTk5 ZDEuLjJjMjQ0NjYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9hY3BpL25maXQuYw0KPiA+ICsr KyBiL2RyaXZlcnMvYWNwaS9uZml0LmMNCj4gPiBAQCAtMjI0LDkgKzIyNCwxMyBAQCBzdGF0aWMg Ym9vbCBhZGRfc3BhKHN0cnVjdCBhY3BpX25maXRfZGVzYw0KPiA+ICphY3BpX2Rlc2MsDQo+ID4g IAkJc3RydWN0IGFjcGlfbmZpdF9zeXN0ZW1fYWRkcmVzcyAqc3BhKQ0KPiA+ICB7DQo+ID4gIAlz dHJ1Y3QgZGV2aWNlICpkZXYgPSBhY3BpX2Rlc2MtPmRldjsNCj4gPiAtCXN0cnVjdCBuZml0X3Nw YSAqbmZpdF9zcGEgPSBkZXZtX2t6YWxsb2MoZGV2LA0KPiA+IHNpemVvZigqbmZpdF9zcGEpLA0K PiA+IC0JCQlHRlBfS0VSTkVMKTsNCj4gPiArCXN0cnVjdCBuZml0X3NwYSAqbmZpdF9zcGE7DQo+ ID4gKw0KPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShuZml0X3NwYSwgJmFjcGlfZGVzYy0+c3Bh cywgbGlzdCkNCj4gPiArCQlpZiAobWVtY21wKG5maXRfc3BhLT5zcGEsIHNwYSwgc2l6ZW9mKCpz cGEpKSA9PSAwKQ0KPiA+ICsJCQlyZXR1cm4gdHJ1ZTsNCj4gPiAgDQo+ID4gKwluZml0X3NwYSA9 IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqbmZpdF9zcGEpLA0KPiA+IEdGUF9LRVJORUwpOw0K PiA+ICAJaWYgKCFuZml0X3NwYSkNCj4gPiAgCQlyZXR1cm4gZmFsc2U7DQo+ID4gIAlJTklUX0xJ U1RfSEVBRCgmbmZpdF9zcGEtPmxpc3QpOw0KPiA+IEBAIC0yNDIsOSArMjQ2LDEzIEBAIHN0YXRp YyBib29sIGFkZF9tZW1kZXYoc3RydWN0IGFjcGlfbmZpdF9kZXNjDQo+ID4gKmFjcGlfZGVzYywN Cj4gPiAgCQlzdHJ1Y3QgYWNwaV9uZml0X21lbW9yeV9tYXAgKm1lbWRldikNCj4gPiAgew0KPiA+ ICAJc3RydWN0IGRldmljZSAqZGV2ID0gYWNwaV9kZXNjLT5kZXY7DQo+ID4gLQlzdHJ1Y3QgbmZp dF9tZW1kZXYgKm5maXRfbWVtZGV2ID0gZGV2bV9remFsbG9jKGRldiwNCj4gPiAtCQkJc2l6ZW9m KCpuZml0X21lbWRldiksIEdGUF9LRVJORUwpOw0KPiA+ICsJc3RydWN0IG5maXRfbWVtZGV2ICpu Zml0X21lbWRldjsNCj4gPiArDQo+ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5maXRfbWVtZGV2 LCAmYWNwaV9kZXNjLT5tZW1kZXZzLA0KPiA+IGxpc3QpDQo+ID4gKwkJaWYgKG1lbWNtcChuZml0 X21lbWRldi0+bWVtZGV2LCBtZW1kZXYsDQo+ID4gc2l6ZW9mKCptZW1kZXYpKSA9PSAwKQ0KPiA+ ICsJCQlyZXR1cm4gdHJ1ZTsNCj4gPiAgDQo+ID4gKwluZml0X21lbWRldiA9IGRldm1fa3phbGxv YyhkZXYsIHNpemVvZigqbmZpdF9tZW1kZXYpLA0KPiA+IEdGUF9LRVJORUwpOw0KPiA+ICAJaWYg KCFuZml0X21lbWRldikNCj4gPiAgCQlyZXR1cm4gZmFsc2U7DQo+ID4gIAlJTklUX0xJU1RfSEVB RCgmbmZpdF9tZW1kZXYtPmxpc3QpOw0KPiA+IEBAIC0yNjAsOSArMjY4LDEzIEBAIHN0YXRpYyBi b29sIGFkZF9kY3Ioc3RydWN0IGFjcGlfbmZpdF9kZXNjDQo+ID4gKmFjcGlfZGVzYywNCj4gPiAg CQlzdHJ1Y3QgYWNwaV9uZml0X2NvbnRyb2xfcmVnaW9uICpkY3IpDQo+ID4gIHsNCj4gPiAgCXN0 cnVjdCBkZXZpY2UgKmRldiA9IGFjcGlfZGVzYy0+ZGV2Ow0KPiA+IC0Jc3RydWN0IG5maXRfZGNy ICpuZml0X2RjciA9IGRldm1fa3phbGxvYyhkZXYsDQo+ID4gc2l6ZW9mKCpuZml0X2RjciksDQo+ ID4gLQkJCUdGUF9LRVJORUwpOw0KPiA+ICsJc3RydWN0IG5maXRfZGNyICpuZml0X2RjcjsNCj4g PiAgDQo+ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5maXRfZGNyLCAmYWNwaV9kZXNjLT5kY3Jz LCBsaXN0KQ0KPiA+ICsJCWlmIChtZW1jbXAobmZpdF9kY3ItPmRjciwgZGNyLCBzaXplb2YoKmRj cikpID09IDApDQo+ID4gKwkJCXJldHVybiB0cnVlOw0KPiA+ICsNCj4gPiArCW5maXRfZGNyID0g ZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpuZml0X2RjciksDQo+ID4gR0ZQX0tFUk5FTCk7DQo+ ID4gIAlpZiAoIW5maXRfZGNyKQ0KPiA+ICAJCXJldHVybiBmYWxzZTsNCj4gPiAgCUlOSVRfTElT VF9IRUFEKCZuZml0X2Rjci0+bGlzdCk7DQo+ID4gQEAgLTI3Nyw5ICsyODksMTMgQEAgc3RhdGlj IGJvb2wgYWRkX2JkdyhzdHJ1Y3QgYWNwaV9uZml0X2Rlc2MNCj4gPiAqYWNwaV9kZXNjLA0KPiA+ ICAJCXN0cnVjdCBhY3BpX25maXRfZGF0YV9yZWdpb24gKmJkdykNCj4gPiAgew0KPiA+ICAJc3Ry dWN0IGRldmljZSAqZGV2ID0gYWNwaV9kZXNjLT5kZXY7DQo+ID4gLQlzdHJ1Y3QgbmZpdF9iZHcg Km5maXRfYmR3ID0gZGV2bV9remFsbG9jKGRldiwNCj4gPiBzaXplb2YoKm5maXRfYmR3KSwNCj4g PiAtCQkJR0ZQX0tFUk5FTCk7DQo+ID4gKwlzdHJ1Y3QgbmZpdF9iZHcgKm5maXRfYmR3Ow0KPiA+ ICANCj4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnkobmZpdF9iZHcsICZhY3BpX2Rlc2MtPmJkd3Ms IGxpc3QpDQo+ID4gKwkJaWYgKG1lbWNtcChuZml0X2Jkdy0+YmR3LCBiZHcsIHNpemVvZigqYmR3 KSkgPT0gMCkNCj4gPiArCQkJcmV0dXJuIHRydWU7DQo+ID4gKw0KPiA+ICsJbmZpdF9iZHcgPSBk ZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKm5maXRfYmR3KSwNCj4gPiBHRlBfS0VSTkVMKTsNCj4g PiAgCWlmICghbmZpdF9iZHcpDQo+ID4gIAkJcmV0dXJuIGZhbHNlOw0KPiA+ICAJSU5JVF9MSVNU X0hFQUQoJm5maXRfYmR3LT5saXN0KTsNCj4gPiBAQCAtMjk0LDkgKzMxMCwxMyBAQCBzdGF0aWMg Ym9vbCBhZGRfaWR0KHN0cnVjdCBhY3BpX25maXRfZGVzYw0KPiA+ICphY3BpX2Rlc2MsDQo+ID4g IAkJc3RydWN0IGFjcGlfbmZpdF9pbnRlcmxlYXZlICppZHQpDQo+ID4gIHsNCj4gPiAgCXN0cnVj dCBkZXZpY2UgKmRldiA9IGFjcGlfZGVzYy0+ZGV2Ow0KPiA+IC0Jc3RydWN0IG5maXRfaWR0ICpu Zml0X2lkdCA9IGRldm1fa3phbGxvYyhkZXYsDQo+ID4gc2l6ZW9mKCpuZml0X2lkdCksDQo+ID4g LQkJCUdGUF9LRVJORUwpOw0KPiA+ICsJc3RydWN0IG5maXRfaWR0ICpuZml0X2lkdDsNCj4gPiAg DQo+ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5maXRfaWR0LCAmYWNwaV9kZXNjLT5pZHRzLCBs aXN0KQ0KPiA+ICsJCWlmIChtZW1jbXAobmZpdF9pZHQtPmlkdCwgaWR0LCBzaXplb2YoKmlkdCkp ID09IDApDQo+ID4gKwkJCXJldHVybiB0cnVlOw0KPiA+ICsNCj4gPiArCW5maXRfaWR0ID0gZGV2 bV9remFsbG9jKGRldiwgc2l6ZW9mKCpuZml0X2lkdCksDQo+ID4gR0ZQX0tFUk5FTCk7DQo+ID4g IAlpZiAoIW5maXRfaWR0KQ0KPiA+ICAJCXJldHVybiBmYWxzZTsNCj4gPiAgCUlOSVRfTElTVF9I RUFEKCZuZml0X2lkdC0+bGlzdCk7DQo+ID4gQEAgLTMxMSw5ICszMzEsMTMgQEAgc3RhdGljIGJv b2wgYWRkX2ZsdXNoKHN0cnVjdCBhY3BpX25maXRfZGVzYw0KPiA+ICphY3BpX2Rlc2MsDQo+ID4g IAkJc3RydWN0IGFjcGlfbmZpdF9mbHVzaF9hZGRyZXNzICpmbHVzaCkNCj4gPiAgew0KPiA+ICAJ c3RydWN0IGRldmljZSAqZGV2ID0gYWNwaV9kZXNjLT5kZXY7DQo+ID4gLQlzdHJ1Y3QgbmZpdF9m bHVzaCAqbmZpdF9mbHVzaCA9IGRldm1fa3phbGxvYyhkZXYsDQo+ID4gc2l6ZW9mKCpuZml0X2Zs dXNoKSwNCj4gPiAtCQkJR0ZQX0tFUk5FTCk7DQo+ID4gKwlzdHJ1Y3QgbmZpdF9mbHVzaCAqbmZp dF9mbHVzaDsNCj4gPiAgDQo+ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5maXRfZmx1c2gsICZh Y3BpX2Rlc2MtPmZsdXNoZXMsIGxpc3QpDQo+ID4gKwkJaWYgKG1lbWNtcChuZml0X2ZsdXNoLT5m bHVzaCwgZmx1c2gsDQo+ID4gc2l6ZW9mKCpmbHVzaCkpID09IDApDQo+ID4gKwkJCXJldHVybiB0 cnVlOw0KPiA+ICsNCj4gPiArCW5maXRfZmx1c2ggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2Yo Km5maXRfZmx1c2gpLA0KPiA+IEdGUF9LRVJORUwpOw0KPiA+ICAJaWYgKCFuZml0X2ZsdXNoKQ0K PiA+ICAJCXJldHVybiBmYWxzZTsNCj4gPiAgCUlOSVRfTElTVF9IRUFEKCZuZml0X2ZsdXNoLT5s aXN0KTsNCj4gPiBAQCAtODExLDYgKzgzNSw4IEBAIHN0YXRpYyBpbnQgYWNwaV9uZml0X3JlZ2lz dGVyX2RpbW1zKHN0cnVjdA0KPiA+IGFjcGlfbmZpdF9kZXNjICphY3BpX2Rlc2MpDQo+ID4gIAkJ CSAqLw0KPiA+ICAJCQlkZXZfZXJyKGFjcGlfZGVzYy0+ZGV2LCAiZHVwbGljYXRlIERDUg0KPiA+ IGRldGVjdGVkOiAlc1xuIiwNCj4gPiAgCQkJCQludmRpbW1fbmFtZShudmRpbW0pKTsNCj4gPiAr CQkJLyogVE9ETyBEbyB3ZSBuZWVkIHRoZSB3YXJuaW5nPyAqLw0KPiA+ICsJCQlkaW1tX2NvdW50 Kys7DQo+ID4gIAkJCWNvbnRpbnVlOw0KPiA+ICAJCX0NCj4gPiAgDQo+ID4gQEAgLTE1MzIsNiAr MTU1OCw4IEBAIHN0YXRpYyBpbnQgYWNwaV9uZml0X3JlZ2lzdGVyX3JlZ2lvbihzdHJ1Y3QNCj4g PiBhY3BpX25maXRfZGVzYyAqYWNwaV9kZXNjLA0KPiA+ICAJCWlmICghbnZkaW1tX3ZvbGF0aWxl X3JlZ2lvbl9jcmVhdGUobnZkaW1tX2J1cywNCj4gPiBuZHJfZGVzYykpDQo+ID4gIAkJCXJldHVy biAtRU5PTUVNOw0KPiA+ICAJfQ0KPiA+ICsNCj4gPiArCWFjcGlfZGVzYy0+bGFzdF9pbml0X3Nw YSA9IG5maXRfc3BhOw0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiAgDQo+ID4gQEAgLTE1 MzksNyArMTU2NywxNSBAQCBzdGF0aWMgaW50IGFjcGlfbmZpdF9yZWdpc3Rlcl9yZWdpb25zKHN0 cnVjdA0KPiA+IGFjcGlfbmZpdF9kZXNjICphY3BpX2Rlc2MpDQo+ID4gIHsNCj4gPiAgCXN0cnVj dCBuZml0X3NwYSAqbmZpdF9zcGE7DQo+ID4gIA0KPiA+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShu Zml0X3NwYSwgJmFjcGlfZGVzYy0+c3BhcywgbGlzdCkgew0KPiA+ICsJaWYgKGFjcGlfZGVzYy0+ bGFzdF9pbml0X3NwYSkgew0KPiA+ICsJCW5maXRfc3BhID0gYWNwaV9kZXNjLT5sYXN0X2luaXRf c3BhOw0KPiA+ICsJCW5maXRfc3BhID0gbGlzdF9uZXh0X2VudHJ5KG5maXRfc3BhLCBsaXN0KTsN Cj4gPiArDQo+ID4gKwl9IGVsc2UNCj4gPiArCQluZml0X3NwYSA9IGxpc3RfZmlyc3RfZW50cnko JmFjcGlfZGVzYy0+c3BhcywNCj4gPiArCQkJCXR5cGVvZigqbmZpdF9zcGEpLCBsaXN0KTsNCj4g PiArDQo+ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Zyb20obmZpdF9zcGEsICZhY3BpX2Rlc2Mt PnNwYXMsIGxpc3QpDQo+ID4gew0KPiA+ICAJCWludCByYyA9IGFjcGlfbmZpdF9yZWdpc3Rlcl9y ZWdpb24oYWNwaV9kZXNjLA0KPiA+IG5maXRfc3BhKTsNCj4gPiAgDQo+ID4gIAkJaWYgKHJjKQ0K PiA+IEBAIC0xNTkwLDYgKzE2MjYsNTIgQEAgaW50IGFjcGlfbmZpdF9pbml0KHN0cnVjdCBhY3Bp X25maXRfZGVzYw0KPiA+ICphY3BpX2Rlc2MsIGFjcGlfc2l6ZSBzeikNCj4gPiAgfQ0KPiA+ICBF WFBPUlRfU1lNQk9MX0dQTChhY3BpX25maXRfaW5pdCk7DQo+ID4gIA0KPiA+ICtpbnQgYWNwaV9u Zml0X21lcmdlKHN0cnVjdCBhY3BpX25maXRfZGVzYyAqYWNwaV9kZXNjLCBhY3BpX3NpemUNCj4g PiBzeikNCj4gPiArew0KPiA+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gYWNwaV9kZXNjLT5kZXY7 DQo+ID4gKwljb25zdCB2b2lkICplbmQ7DQo+ID4gKwl1OCAqZGF0YTsNCj4gPiArCWludCByYzsN Cj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICogVE9ETyBDYW4gd2UgZ2V0IGhlcmUgd2l0aCBhbiB1 bmluaXRpYWxpemVkIGFjcGlfZGVzYz8NCj4gPiArCSAqIEluIHRoZSBjYXNlIHdoZXJlIHRoZSBv bmx5IG52ZGltbSBpbiB0aGUgc3lzdGVtIGlzDQo+ID4gaG90cGx1Z2dlZD8NCj4gPiArCSAqLw0K PiA+ICsJaWYgKCFhY3BpX2Rlc2MpIHsNCj4gPiArCQlkZXZfZXJyKGRldiwgIiVzOiBhY3BpX2Rl c2MgdW5pbml0aWFsaXplZFxuIiwNCj4gPiBfX2Z1bmNfXyk7DQo+ID4gKwkJcmV0dXJuIC1FTlhJ TzsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICogQXQgdGhpcyBwb2ludCwgYWNw aV9kZXNjLT5uZml0IHdpbGwgaGF2ZSB0aGUgdXBkYXRlZA0KPiA+IG5maXQgdGFibGUsDQo+ID4g KwkgKiBidXQgdGhlIHZhcmlvdXMgbGlzdHMgaW4gYWNwaV9kZXYgY29ycmVzcG9uZCB0byB0aGUg b2xkDQo+ID4gdGFibGUuDQo+ID4gKwkgKi8NCj4gPiArCWRhdGEgPSAodTggKikgYWNwaV9kZXNj LT5uZml0Ow0KPiA+ICsJZW5kID0gZGF0YSArIHN6Ow0KPiA+ICsJZGF0YSArPSBzaXplb2Yoc3Ry dWN0IGFjcGlfdGFibGVfbmZpdCk7DQo+ID4gKwl3aGlsZSAoIUlTX0VSUl9PUl9OVUxMKGRhdGEp KQ0KPiA+ICsJCWRhdGEgPSBhZGRfdGFibGUoYWNwaV9kZXNjLCBkYXRhLCBlbmQpOw0KPiA+ICsN Cj4gPiArCWlmIChJU19FUlIoZGF0YSkpIHsNCj4gPiArCQlkZXZfZGJnKGRldiwgIiVzOiBuZml0 IHRhYmxlIHBhcnNpbmcgZXJyb3I6DQo+ID4gJWxkXG4iLCBfX2Z1bmNfXywNCj4gPiArCQkJCVBU Ul9FUlIoZGF0YSkpOw0KPiA+ICsJCXJldHVybiBQVFJfRVJSKGRhdGEpOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCWlmIChuZml0X21lbV9pbml0KGFjcGlfZGVzYykgIT0gMCkNCj4gPiArCQlyZXR1 cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKwlhY3BpX25maXRfaW5pdF9kc21zKGFjcGlfZGVzYyk7 DQo+ID4gKw0KPiA+ICsJcmMgPSBhY3BpX25maXRfcmVnaXN0ZXJfZGltbXMoYWNwaV9kZXNjKTsN Cj4gPiArCWlmIChyYykNCj4gPiArCQlyZXR1cm4gcmM7DQo+ID4gKw0KPiA+ICsJcmMgPSBhY3Bp X25maXRfcmVnaXN0ZXJfcmVnaW9ucyhhY3BpX2Rlc2MpOw0KPiA+ICsJcmV0dXJuIHJjOw0KPiA+ ICt9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKGFjcGlfbmZpdF9tZXJnZSk7DQo+ID4gKw0KPiA+ ICBzdGF0aWMgaW50IGFjcGlfbmZpdF9hZGQoc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KQ0KPiA+ ICB7DQo+ID4gIAlzdHJ1Y3QgbnZkaW1tX2J1c19kZXNjcmlwdG9yICpuZF9kZXNjOw0KPiA+IEBA IC0xNjM5LDYgKzE3MjEsMzMgQEAgc3RhdGljIGludCBhY3BpX25maXRfcmVtb3ZlKHN0cnVjdA0K PiA+IGFjcGlfZGV2aWNlICphZGV2KQ0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiAgDQo+ ID4gK3N0YXRpYyB2b2lkIGFjcGlfbmZpdF9ub3RpZnkoc3RydWN0IGFjcGlfZGV2aWNlICphZGV2 LCB1MzIgZXZlbnQpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBhY3BpX25maXRfZGVzYyAqYWNwaV9k ZXNjID0gZGV2X2dldF9kcnZkYXRhKCZhZGV2DQo+ID4gLT5kZXYpOw0KPiA+ICsJc3RydWN0IGFj cGlfdGFibGVfbmZpdCAqbmZpdF9zYXZlZDsNCj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZh ZGV2LT5kZXY7DQo+ID4gKwlzdHJ1Y3QgYWNwaV9idWZmZXIgKmJ1ZjsNCj4gPiArCWFjcGlfc3Rh dHVzIHN0YXR1czsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJZGV2X2RiZyhkZXYsICIl czogZXZlbnQ6ICVkXG4iLCBfX2Z1bmNfXywgZXZlbnQpOw0KPiA+ICsNCj4gPiArCS8qIEV2YWx1 YXRlIF9GSVQgKi8NCj4gPiArCXN0YXR1cyA9IGFjcGlfZXZhbHVhdGVfZml0KGFkZXYtPmhhbmRs ZSwgJmJ1Zik7DQo+ID4gKwlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpDQo+ID4gKwkJZGV2X2Vy cihkZXYsICJmYWlsZWQgdG8gZXZhbHVhdGUgX0ZJVFxuIik7DQo+ID4gKw0KPiA+ICsJbmZpdF9z YXZlZCA9IGFjcGlfZGVzYy0+bmZpdDsNCj4gPiArCWFjcGlfZGVzYy0+bmZpdCA9IChzdHJ1Y3Qg YWNwaV90YWJsZV9uZml0ICopYnVmOw0KPiA+ICsJcmV0ID0gYWNwaV9uZml0X21lcmdlKGFjcGlf ZGVzYywgYnVmLT5sZW5ndGgpOw0KPiA+ICsJaWYgKCFyZXQpIHsNCj4gPiArCQkvKiBNZXJnZSBm YWlsZWQsIHJlc3RvcmUgb2xkIG5maXQgYnVmLCBhbmQgZXhpdCAqLw0KPiA+ICsJCWFjcGlfZGVz Yy0+bmZpdCA9IG5maXRfc2F2ZWQ7DQo+ID4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gbWVy Z2UgdXBkYXRlZCBORklUXG4iKTsNCj4gPiArCX0NCj4gPiArCWtmcmVlKGJ1Zi0+cG9pbnRlcik7 DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQg YWNwaV9uZml0X2lkc1tdID0gew0KPiA+ICAJeyAiQUNQSTAwMTIiLCAwIH0sDQo+ID4gIAl7ICIi LCAwIH0sDQo+ID4gQEAgLTE2NTEsNiArMTc2MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWNwaV9kcml2 ZXIgYWNwaV9uZml0X2RyaXZlciA9DQo+ID4gew0KPiA+ICAJLm9wcyA9IHsNCj4gPiAgCQkuYWRk ID0gYWNwaV9uZml0X2FkZCwNCj4gPiAgCQkucmVtb3ZlID0gYWNwaV9uZml0X3JlbW92ZSwNCj4g PiArCQkubm90aWZ5ID0gYWNwaV9uZml0X25vdGlmeSwNCj4gPiAgCX0sDQo+ID4gIH07DQo+ID4g IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvbmZpdC5oIGIvZHJpdmVycy9hY3BpL25m aXQuaA0KPiA+IGluZGV4IDdlNzQwMTUuLjlmNDc1OGYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVy cy9hY3BpL25maXQuaA0KPiA+ICsrKyBiL2RyaXZlcnMvYWNwaS9uZml0LmgNCj4gPiBAQCAtMTA1 LDYgKzEwNSw3IEBAIHN0cnVjdCBhY3BpX25maXRfZGVzYyB7DQo+ID4gIAlzdHJ1Y3QgbGlzdF9o ZWFkIGRjcnM7DQo+ID4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGJkd3M7DQo+ID4gIAlzdHJ1Y3QgbGlz dF9oZWFkIGlkdHM7DQo+ID4gKwlzdHJ1Y3QgbmZpdF9zcGEgKmxhc3RfaW5pdF9zcGE7DQo+ID4g IAlzdHJ1Y3QgbnZkaW1tX2J1cyAqbnZkaW1tX2J1czsNCj4gPiAgCXN0cnVjdCBkZXZpY2UgKmRl djsNCj4gPiAgCXVuc2lnbmVkIGxvbmcgZGltbV9kc21fZm9yY2VfZW47DQo+ID4gQEAgLTE3OSw1 ICsxODAsNiBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBhY3BpX25maXRfZGVzYw0KPiA+ICp0b19h Y3BpX2Rlc2MoDQo+ID4gIA0KPiA+ICBjb25zdCB1OCAqdG9fbmZpdF91dWlkKGVudW0gbmZpdF91 dWlkcyBpZCk7DQo+ID4gIGludCBhY3BpX25maXRfaW5pdChzdHJ1Y3QgYWNwaV9uZml0X2Rlc2Mg Km5maXQsIGFjcGlfc2l6ZSBzeik7DQo+ID4gK2ludCBhY3BpX25maXRfbWVyZ2Uoc3RydWN0IGFj cGlfbmZpdF9kZXNjICphY3BpX2Rlc2MsIGFjcGlfc2l6ZQ0KPiA+IHN6KTsNCj4gPiAgZXh0ZXJu IGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmFjcGlfbmZpdF9hdHRyaWJ1dGVfZ3JvdXBz W107DQo+ID4gICNlbmRpZiAvKiBfX05GSVRfSF9fICovDQo+ID4gZGlmZiAtLWdpdCBhL3Rvb2xz L3Rlc3RpbmcvbnZkaW1tL3Rlc3QvbmZpdC5jDQo+ID4gYi90b29scy90ZXN0aW5nL252ZGltbS90 ZXN0L25maXQuYw0KPiA+IGluZGV4IDAyMWU2ZjkuLjNhN2I2OTEgMTAwNjQ0DQo+ID4gLS0tIGEv dG9vbHMvdGVzdGluZy9udmRpbW0vdGVzdC9uZml0LmMNCj4gPiArKysgYi90b29scy90ZXN0aW5n L252ZGltbS90ZXN0L25maXQuYw0KPiA+IEBAIC00NCw2ICs0NCwxNSBAQA0KPiA+ICAgKiArLS0t LS0tKyAgfCAgICAgICAgICAgICAgICAgYmxrNS4wICAgICAgICAgICAgIHwgIHBtMS4wICB8ICAg IDMNCj4gPiAgICAgICByZWdpb241DQo+ID4gICAqICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0rLS0tLS0tLSsNCj4gPiAgICoNCj4gPiArICogKy0tKy0t LSsNCj4gPiArICogfCBjcHUxIHwNCj4gPiArICogKy0tKy0tLSsgICAgICAgICAgICAgICAgICAg KEhvdHBsdWcgRElNTSkNCj4gPiArICogICAgfCAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+ICsgKiArLS0rLS0tKyAgfCAgICAgICAgICAg ICAgICAgYmxrNi4wL3BtNy4wICAgICAgICAgICAgICAgICB8ICAgIDQNCj4gPiAgICAgICByZWdp b242DQo+ID4gKyAqIHwgaW1jMCArLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsNCj4gPiArICogKy0tLS0tLSsNCj4gPiArICoNCj4gPiArICoNCj4gPiAg ICogKikgSW4gdGhpcyBsYXlvdXQgd2UgaGF2ZSBmb3VyIGRpbW1zIGFuZCB0d28gbWVtb3J5IGNv bnRyb2xsZXJzDQo+ID4gaW4gb25lDQo+ID4gICAqICAgIHNvY2tldC4gIEVhY2ggdW5pcXVlIGlu dGVyZmFjZSAoQkxLIG9yIFBNRU0pIHRvIERQQSBzcGFjZQ0KPiA+ICAgKiAgICBpcyBpZGVudGlm aWVkIGJ5IGEgcmVnaW9uIGRldmljZSB3aXRoIGEgZHluYW1pY2FsbHkgYXNzaWduZWQNCj4gPiBp ZC4NCj4gPiBAQCAtODUsOCArOTQsOCBAQA0KPiA+ICAgKiAgICByZWZlcmVuY2UgYW4gTlZESU1N Lg0KPiA+ICAgKi8NCj4gPiAgZW51bSB7DQo+ID4gLQlOVU1fUE0gID0gMiwNCj4gPiAtCU5VTV9E Q1IgPSA0LA0KPiA+ICsJTlVNX1BNICA9IDMsDQo+ID4gKwlOVU1fRENSID0gNSwNCj4gPiAgCU5V TV9CRFcgPSBOVU1fRENSLA0KPiA+ICAJTlVNX1NQQSA9IE5VTV9QTSArIE5VTV9EQ1IgKyBOVU1f QkRXLA0KPiA+ICAJTlVNX01FTSA9IE5VTV9EQ1IgKyBOVU1fQkRXICsgMiAvKiBzcGEwIGlzZXQg Ki8gKyA0IC8qDQo+ID4gc3BhMSBpc2V0ICovLA0KPiA+IEBAIC0xMTUsNiArMTI0LDcgQEAgc3Rh dGljIHUzMiBoYW5kbGVbTlVNX0RDUl0gPSB7DQo+ID4gIAlbMV0gPSBORklUX0RJTU1fSEFORExF KDAsIDAsIDAsIDAsIDEpLA0KPiA+ICAJWzJdID0gTkZJVF9ESU1NX0hBTkRMRSgwLCAwLCAxLCAw LCAwKSwNCj4gPiAgCVszXSA9IE5GSVRfRElNTV9IQU5ETEUoMCwgMCwgMSwgMCwgMSksDQo+ID4g KwlbNF0gPSBORklUX0RJTU1fSEFORExFKDAsIDEsIDAsIDAsIDApLA0KPiA+ICB9Ow0KPiA+ICAN Cj4gPiAgc3RydWN0IG5maXRfdGVzdCB7DQo+ID4gQEAgLTEzOCw2ICsxNDgsNyBAQCBzdHJ1Y3Qg bmZpdF90ZXN0IHsNCj4gPiAgCWRtYV9hZGRyX3QgKmRjcl9kbWE7DQo+ID4gIAlpbnQgKCphbGxv Yykoc3RydWN0IG5maXRfdGVzdCAqdCk7DQo+ID4gIAl2b2lkICgqc2V0dXApKHN0cnVjdCBuZml0 X3Rlc3QgKnQpOw0KPiA+ICsJaW50IHNldHVwX2hvdHBsdWc7DQo+ID4gIH07DQo+ID4gIA0KPiA+ ICBzdGF0aWMgc3RydWN0IG5maXRfdGVzdCAqdG9fbmZpdF90ZXN0KHN0cnVjdCBkZXZpY2UgKmRl dikNCj4gPiBAQCAtNDI4LDYgKzQzOSwxMCBAQCBzdGF0aWMgaW50IG5maXRfdGVzdDBfYWxsb2Mo c3RydWN0IG5maXRfdGVzdA0KPiA+ICp0KQ0KPiA+ICAJaWYgKCF0LT5zcGFfc2V0WzFdKQ0KPiA+ ICAJCXJldHVybiAtRU5PTUVNOw0KPiA+ICANCj4gPiArCXQtPnNwYV9zZXRbMl0gPSB0ZXN0X2Fs bG9jX2NvaGVyZW50KHQsIFNQQTBfU0laRSwgJnQNCj4gPiAtPnNwYV9zZXRfZG1hWzJdKTsNCj4g PiArCWlmICghdC0+c3BhX3NldFsyXSkNCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ ID4gIAlmb3IgKGkgPSAwOyBpIDwgTlVNX0RDUjsgaSsrKSB7DQo+ID4gIAkJdC0+ZGltbVtpXSA9 IHRlc3RfYWxsb2ModCwgRElNTV9TSVpFLCAmdA0KPiA+IC0+ZGltbV9kbWFbaV0pOw0KPiA+ICAJ CWlmICghdC0+ZGltbVtpXSkNCj4gPiBAQCAtOTUwLDYgKzk2NSwxMTkgQEAgc3RhdGljIHZvaWQg bmZpdF90ZXN0MF9zZXR1cChzdHJ1Y3QgbmZpdF90ZXN0DQo+ID4gKnQpDQo+ID4gIAlmbHVzaC0+ aGludF9jb3VudCA9IDE7DQo+ID4gIAlmbHVzaC0+aGludF9hZGRyZXNzWzBdID0gdC0+Zmx1c2hf ZG1hWzNdOw0KPiA+ICANCj4gPiArDQo+ID4gKwlpZiAodC0+c2V0dXBfaG90cGx1Zykgew0KPiA+ ICsJCW9mZnNldCA9IG9mZnNldCArIHNpemVvZihzdHJ1Y3QNCj4gPiBhY3BpX25maXRfZmx1c2hf YWRkcmVzcykgKiA0Ow0KPiA+ICsJCS8qIGRjci1kZXNjcmlwdG9yNCAqLw0KPiA+ICsJCWRjciA9 IG5maXRfYnVmICsgb2Zmc2V0Ow0KPiA+ICsJCWRjci0+aGVhZGVyLnR5cGUgPSBBQ1BJX05GSVRf VFlQRV9DT05UUk9MX1JFR0lPTjsNCj4gPiArCQlkY3ItPmhlYWRlci5sZW5ndGggPSBzaXplb2Yo c3RydWN0DQo+ID4gYWNwaV9uZml0X2NvbnRyb2xfcmVnaW9uKTsNCj4gPiArCQlkY3ItPnJlZ2lv bl9pbmRleCA9IDQrMTsNCj4gPiArCQlkY3ItPnZlbmRvcl9pZCA9IDB4YWJjZDsNCj4gPiArCQlk Y3ItPmRldmljZV9pZCA9IDA7DQo+ID4gKwkJZGNyLT5yZXZpc2lvbl9pZCA9IDE7DQo+ID4gKwkJ ZGNyLT5zZXJpYWxfbnVtYmVyID0gfmhhbmRsZVs0XTsNCj4gPiArCQlkY3ItPndpbmRvd3MgPSAw Ow0KPiA+ICsJCWRjci0+d2luZG93X3NpemUgPSAwOw0KPiA+ICsJCWRjci0+Y29tbWFuZF9vZmZz ZXQgPSAwOw0KPiA+ICsJCWRjci0+Y29tbWFuZF9zaXplID0gMDsNCj4gPiArCQlkY3ItPnN0YXR1 c19vZmZzZXQgPSAwOw0KPiA+ICsJCWRjci0+c3RhdHVzX3NpemUgPSAwOw0KPiA+ICsNCj4gPiAr CQlvZmZzZXQgPSBvZmZzZXQgKyBzaXplb2Yoc3RydWN0DQo+ID4gYWNwaV9uZml0X2NvbnRyb2xf cmVnaW9uKTsNCj4gPiArCQkvKiBiZHc0IChzcGEvZGNyNCwgZGltbTQpICovDQo+ID4gKwkJYmR3 ID0gbmZpdF9idWYgKyBvZmZzZXQ7DQo+ID4gKwkJYmR3LT5oZWFkZXIudHlwZSA9IEFDUElfTkZJ VF9UWVBFX0RBVEFfUkVHSU9OOw0KPiA+ICsJCWJkdy0+aGVhZGVyLmxlbmd0aCA9IHNpemVvZihz dHJ1Y3QNCj4gPiBhY3BpX25maXRfZGF0YV9yZWdpb24pOw0KPiA+ICsJCWJkdy0+cmVnaW9uX2lu ZGV4ID0gNCsxOw0KPiA+ICsJCWJkdy0+d2luZG93cyA9IDE7DQo+ID4gKwkJYmR3LT5vZmZzZXQg PSAwOw0KPiA+ICsJCWJkdy0+c2l6ZSA9IEJEV19TSVpFOw0KPiA+ICsJCWJkdy0+Y2FwYWNpdHkg PSBESU1NX1NJWkU7DQo+ID4gKwkJYmR3LT5zdGFydF9hZGRyZXNzID0gMDsNCj4gPiArDQo+ID4g KwkJb2Zmc2V0ID0gb2Zmc2V0ICsgc2l6ZW9mKHN0cnVjdA0KPiA+IGFjcGlfbmZpdF9kYXRhX3Jl Z2lvbik7DQo+ID4gKwkJLyogc3BhMTAgKGRjcjQpIGRpbW00ICovDQo+ID4gKwkJc3BhID0gbmZp dF9idWYgKyBvZmZzZXQ7DQo+ID4gKwkJc3BhLT5oZWFkZXIudHlwZSA9IEFDUElfTkZJVF9UWVBF X1NZU1RFTV9BRERSRVNTOw0KPiA+ICsJCXNwYS0+aGVhZGVyLmxlbmd0aCA9IHNpemVvZigqc3Bh KTsNCj4gPiArCQltZW1jcHkoc3BhLT5yYW5nZV9ndWlkLA0KPiA+IHRvX25maXRfdXVpZChORklU X1NQQV9EQ1IpLCAxNik7DQo+ID4gKwkJc3BhLT5yYW5nZV9pbmRleCA9IDEwKzE7DQo+ID4gKwkJ c3BhLT5hZGRyZXNzID0gdC0+ZGNyX2RtYVs0XTsNCj4gPiArCQlzcGEtPmxlbmd0aCA9IERDUl9T SVpFOw0KPiA+ICsNCj4gPiArCQkvKg0KPiA+ICsJCSAqIHNwYTExIChzaW5nbGUtZGltbSBpbnRl cmxlYXZlIGZvciBob3RwbHVnLCBub3RlDQo+ID4gc3RvcmFnZQ0KPiA+ICsJCSAqIGRvZXMgbm90 IGFjdHVhbGx5IGFsaWFzIHRoZSByZWxhdGVkIGJsb2NrLWRhdGENCj4gPiAtd2luZG93DQo+ID4g KwkJICogcmVnaW9ucykNCj4gPiArCQkgKi8NCj4gPiArCQlzcGEgPSBuZml0X2J1ZiArIG9mZnNl dCArIHNpemVvZigqc3BhKTsNCj4gPiArCQlzcGEtPmhlYWRlci50eXBlID0gQUNQSV9ORklUX1RZ UEVfU1lTVEVNX0FERFJFU1M7DQo+ID4gKwkJc3BhLT5oZWFkZXIubGVuZ3RoID0gc2l6ZW9mKCpz cGEpOw0KPiA+ICsJCW1lbWNweShzcGEtPnJhbmdlX2d1aWQsIHRvX25maXRfdXVpZChORklUX1NQ QV9QTSksDQo+ID4gMTYpOw0KPiA+ICsJCXNwYS0+cmFuZ2VfaW5kZXggPSAxMSsxOw0KPiA+ICsJ CXNwYS0+YWRkcmVzcyA9IHQtPnNwYV9zZXRfZG1hWzJdOw0KPiA+ICsJCXNwYS0+bGVuZ3RoID0g U1BBMF9TSVpFOw0KPiA+ICsNCj4gPiArCQkvKiBzcGExMiAoYmR3IGZvciBkY3I0KSBkaW1tNCAq Lw0KPiA+ICsJCXNwYSA9IG5maXRfYnVmICsgb2Zmc2V0ICsgc2l6ZW9mKCpzcGEpICogMjsNCj4g PiArCQlzcGEtPmhlYWRlci50eXBlID0gQUNQSV9ORklUX1RZUEVfU1lTVEVNX0FERFJFU1M7DQo+ ID4gKwkJc3BhLT5oZWFkZXIubGVuZ3RoID0gc2l6ZW9mKCpzcGEpOw0KPiA+ICsJCW1lbWNweShz cGEtPnJhbmdlX2d1aWQsDQo+ID4gdG9fbmZpdF91dWlkKE5GSVRfU1BBX0JEVyksIDE2KTsNCj4g PiArCQlzcGEtPnJhbmdlX2luZGV4ID0gMTIrMTsNCj4gPiArCQlzcGEtPmFkZHJlc3MgPSB0LT5k aW1tX2RtYVs0XTsNCj4gPiArCQlzcGEtPmxlbmd0aCA9IERJTU1fU0laRTsNCj4gPiArDQo+ID4g KwkJb2Zmc2V0ID0gb2Zmc2V0ICsgc2l6ZW9mKCpzcGEpICogMzsNCj4gPiArCQkvKiBtZW0tcmVn aW9uMTQgKHNwYS9kY3I0LCBkaW1tNCkgKi8NCj4gPiArCQltZW1kZXYgPSBuZml0X2J1ZiArIG9m ZnNldDsNCj4gPiArCQltZW1kZXYtPmhlYWRlci50eXBlID0gQUNQSV9ORklUX1RZUEVfTUVNT1JZ X01BUDsNCj4gPiArCQltZW1kZXYtPmhlYWRlci5sZW5ndGggPSBzaXplb2YoKm1lbWRldik7DQo+ ID4gKwkJbWVtZGV2LT5kZXZpY2VfaGFuZGxlID0gaGFuZGxlWzRdOw0KPiA+ICsJCW1lbWRldi0+ cGh5c2ljYWxfaWQgPSA0Ow0KPiA+ICsJCW1lbWRldi0+cmVnaW9uX2lkID0gMDsNCj4gPiArCQlt ZW1kZXYtPnJhbmdlX2luZGV4ID0gMTArMTsNCj4gPiArCQltZW1kZXYtPnJlZ2lvbl9pbmRleCA9 IDQrMTsNCj4gPiArCQltZW1kZXYtPnJlZ2lvbl9zaXplID0gMDsNCj4gPiArCQltZW1kZXYtPnJl Z2lvbl9vZmZzZXQgPSAwOw0KPiA+ICsJCW1lbWRldi0+YWRkcmVzcyA9IDA7DQo+ID4gKwkJbWVt ZGV2LT5pbnRlcmxlYXZlX2luZGV4ID0gMDsNCj4gPiArCQltZW1kZXYtPmludGVybGVhdmVfd2F5 cyA9IDE7DQo+ID4gKw0KPiA+ICsJCS8qIG1lbS1yZWdpb24xNSAoc3BhMCwgZGltbTQpICovDQo+ ID4gKwkJbWVtZGV2ID0gbmZpdF9idWYgKyBvZmZzZXQgKw0KPiA+ICsJCQkJc2l6ZW9mKHN0cnVj dA0KPiA+IGFjcGlfbmZpdF9tZW1vcnlfbWFwKTsNCj4gPiArCQltZW1kZXYtPmhlYWRlci50eXBl ID0gQUNQSV9ORklUX1RZUEVfTUVNT1JZX01BUDsNCj4gPiArCQltZW1kZXYtPmhlYWRlci5sZW5n dGggPSBzaXplb2YoKm1lbWRldik7DQo+ID4gKwkJbWVtZGV2LT5kZXZpY2VfaGFuZGxlID0gaGFu ZGxlWzRdOw0KPiA+ICsJCW1lbWRldi0+cGh5c2ljYWxfaWQgPSA0Ow0KPiA+ICsJCW1lbWRldi0+ cmVnaW9uX2lkID0gMDsNCj4gPiArCQltZW1kZXYtPnJhbmdlX2luZGV4ID0gMTErMTsNCj4gPiAr CQltZW1kZXYtPnJlZ2lvbl9pbmRleCA9IDQrMTsNCj4gPiArCQltZW1kZXYtPnJlZ2lvbl9zaXpl ID0gU1BBMF9TSVpFOw0KPiA+ICsJCW1lbWRldi0+cmVnaW9uX29mZnNldCA9IHQtPnNwYV9zZXRf ZG1hWzJdOw0KPiA+ICsJCW1lbWRldi0+YWRkcmVzcyA9IDA7DQo+ID4gKwkJbWVtZGV2LT5pbnRl cmxlYXZlX2luZGV4ID0gMDsNCj4gPiArCQltZW1kZXYtPmludGVybGVhdmVfd2F5cyA9IDE7DQo+ ID4gKw0KPiA+ICsJCS8qIG1lbS1yZWdpb24xNiAoc3BhL2RjcjQsIGRpbW00KSAqLw0KPiA+ICsJ CW1lbWRldiA9IG5maXRfYnVmICsgb2Zmc2V0ICsNCj4gPiArCQkJCXNpemVvZihzdHJ1Y3QNCj4g PiBhY3BpX25maXRfbWVtb3J5X21hcCkgKiAyOw0KPiA+ICsJCW1lbWRldi0+aGVhZGVyLnR5cGUg PSBBQ1BJX05GSVRfVFlQRV9NRU1PUllfTUFQOw0KPiA+ICsJCW1lbWRldi0+aGVhZGVyLmxlbmd0 aCA9IHNpemVvZigqbWVtZGV2KTsNCj4gPiArCQltZW1kZXYtPmRldmljZV9oYW5kbGUgPSBoYW5k bGVbNF07DQo+ID4gKwkJbWVtZGV2LT5waHlzaWNhbF9pZCA9IDQ7DQo+ID4gKwkJbWVtZGV2LT5y ZWdpb25faWQgPSAwOw0KPiA+ICsJCW1lbWRldi0+cmFuZ2VfaW5kZXggPSAxMisxOw0KPiA+ICsJ CW1lbWRldi0+cmVnaW9uX2luZGV4ID0gNCsxOw0KPiA+ICsJCW1lbWRldi0+cmVnaW9uX3NpemUg PSAwOw0KPiA+ICsJCW1lbWRldi0+cmVnaW9uX29mZnNldCA9IDA7DQo+ID4gKwkJbWVtZGV2LT5h ZGRyZXNzID0gMDsNCj4gPiArCQltZW1kZXYtPmludGVybGVhdmVfaW5kZXggPSAwOw0KPiA+ICsJ CW1lbWRldi0+aW50ZXJsZWF2ZV93YXlzID0gMTsNCj4gPiArDQo+ID4gKwl9DQo+ID4gKw0KPiA+ ICAJYWNwaV9kZXNjID0gJnQtPmFjcGlfZGVzYzsNCj4gPiAgCXNldF9iaXQoTkRfQ01EX0dFVF9D T05GSUdfU0laRSwgJmFjcGlfZGVzYw0KPiA+IC0+ZGltbV9kc21fZm9yY2VfZW4pOw0KPiA+ICAJ c2V0X2JpdChORF9DTURfR0VUX0NPTkZJR19EQVRBLCAmYWNwaV9kZXNjDQo+ID4gLT5kaW1tX2Rz bV9mb3JjZV9lbik7DQo+ID4gQEAgLTExMTQsNiArMTI0MiwxOCBAQCBzdGF0aWMgaW50IG5maXRf dGVzdF9wcm9iZShzdHJ1Y3QNCj4gPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gIAkJcmV0 dXJuIHJjOw0KPiA+ICAJfQ0KPiA+ICANCj4gPiArCWlmIChuZml0X3Rlc3QtPnNldHVwICE9IG5m aXRfdGVzdDBfc2V0dXApDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICsJbmZpdF90ZXN0 LT5zZXR1cF9ob3RwbHVnID0gMTsNCj4gPiArCW5maXRfdGVzdC0+c2V0dXAobmZpdF90ZXN0KTsN Cj4gPiArDQo+ID4gKwlyYyA9IGFjcGlfbmZpdF9tZXJnZShhY3BpX2Rlc2MsIG5maXRfdGVzdC0+ bmZpdF9zaXplKTsNCj4gPiArCWlmIChyYykgew0KPiA+ICsJCW52ZGltbV9idXNfdW5yZWdpc3Rl cihhY3BpX2Rlc2MtPm52ZGltbV9idXMpOw0KPiA+ICsJCXJldHVybiByYzsNCj4gPiArCX0NCj4g PiArDQo+ID4gIAlyZXR1cm4gMDsNCj4gPiAgfQ==