From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH 12/14] mtd: maps: Merge gpio-addr-flash.c into physmap-core.c Date: Tue, 9 Oct 2018 09:11:06 +0200 Message-ID: <20181009091106.7f25a314@bbrezillon> References: <20181008201027.17952-1-boris.brezillon@bootlin.com> <20181008201027.17952-13-boris.brezillon@bootlin.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+gldm-linux-mtd-36=gmane.org@lists.infradead.org To: Ricardo Ribalda Delgado Cc: Mark Rutland , devicetree@vger.kernel.org, Pawel Moll , Ian Campbell , Richard Weinberger , Marek Vasut , Rob Herring , linux-mtd@lists.infradead.org, Kumar Gala , Brian Norris , David Woodhouse List-Id: devicetree@vger.kernel.org T24gVHVlLCA5IE9jdCAyMDE4IDA5OjA0OjUxICswMjAwClJpY2FyZG8gUmliYWxkYSBEZWxnYWRv IDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPiB3cm90ZToKCj4gSGkgQm9yaXMKPiAKPiBNYXli ZSB3ZSB3YW50IHRvIGxlYXZlIHRoZSBwZGF0YSBleGFtcGxlLgo+IAo+IC8qKgo+ICAqIFRoZSBw bGF0Zm9ybSByZXNvdXJjZSBsYXlvdXQgZXhwZWN0ZWQgbG9va3Mgc29tZXRoaW5nIGxpa2U6Cj4g ICogc3RydWN0IG10ZF9wYXJ0aXRpb24gcGFydGl0aW9uc1tdID0geyAuLi4gfTsKPiAgKiBzdHJ1 Y3QgcGh5c21hcF9mbGFzaF9kYXRhIGZsYXNoX2RhdGEgPQo+IC4uLi4uCgpTdXJlLCBJJ2xsIGFk ZCBpdCBiYWNrLgoKPiAKPiAKPiBPbiBNb24sIE9jdCA4LCAyMDE4IGF0IDEwOjEwIFBNIEJvcmlz IEJyZXppbGxvbgo+IDxib3Jpcy5icmV6aWxsb25AYm9vdGxpbi5jb20+IHdyb3RlOgo+ID4KPiA+ IENvbnRyb2xsaW5nIHNvbWUgTVNCIGFkZHJlc3MgbGluZXMgdXNpbmcgR1BJT3MgaXMganVzdCBh IHNtYWxsCj4gPiBkZXZpYXRpb24gb2YgdGhlIGdlbmVyaWMgcGh5c21hcCBsb2dpYywgYW5kIG1l cmdpbmcgdGhvc2UgdHdvIGRyaXZlcnMKPiA+IGFsbG93cyB1cyB0byBzaGFyZSBtb3N0IG9mIHRo ZSBwcm9iZSBsb2dpYywgd2hpY2ggaXMgYSBnb29kIHRoaW5nLgo+ID4KPiA+IFNpZ25lZC1vZmYt Ynk6IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGJvb3RsaW4uY29tPgo+ID4gLS0t Cj4gPiAgZHJpdmVycy9tdGQvbWFwcy9LY29uZmlnICAgICAgICAgICB8ICAxOSArKy0KPiA+ICBk cml2ZXJzL210ZC9tYXBzL01ha2VmaWxlICAgICAgICAgIHwgICAxIC0KPiA+ICBkcml2ZXJzL210 ZC9tYXBzL2dwaW8tYWRkci1mbGFzaC5jIHwgMjgxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiA+ICBkcml2ZXJzL210ZC9tYXBzL3BoeXNtYXAtY29yZS5jICAgIHwgMTUw ICsrKysrKysrKysrKysrKysrKystCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAxNTcgaW5zZXJ0aW9u cygrKSwgMjk0IGRlbGV0aW9ucygtKQo+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL210 ZC9tYXBzL2dwaW8tYWRkci1mbGFzaC5jCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRk L21hcHMvS2NvbmZpZyBiL2RyaXZlcnMvbXRkL21hcHMvS2NvbmZpZwo+ID4gaW5kZXggNWJmZmVi YWNjZTg2Li40ZmQxM2Q3NmI3YjUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL210ZC9tYXBzL0tj b25maWcKPiA+ICsrKyBiL2RyaXZlcnMvbXRkL21hcHMvS2NvbmZpZwo+ID4gQEAgLTk0LDYgKzk0 LDE1IEBAIGNvbmZpZyBNVERfUEhZU01BUF9PRl9HRU1JTkkKPiA+ICAgICAgICAgICBwbGF0Zm9y bXMsIHNvbWUgZGV0ZWN0aW9uIGFuZCBzZXR0aW5nIHVwIHBhcmFsbGVsIG1vZGUgb24gdGhlCj4g PiAgICAgICAgICAgZXh0ZXJuYWwgaW50ZXJmYWNlLgo+ID4KPiA+ICtjb25maWcgTVREX1BIWVNN QVBfR1BJT19BRERSCj4gPiArICAgICAgIGJvb2wgIkdQSU8tYXNzaXN0ZWQgRmxhc2ggQ2hpcCBT dXBwb3J0Igo+ID4gKyAgICAgICBkZXBlbmRzIG9uIE1URF9QSFlTTUFQCj4gPiArICAgICAgIGRl cGVuZHMgb24gR1BJT0xJQiB8fCBDT01QSUxFX1RFU1QKPiA+ICsgICAgICAgZGVwZW5kcyBvbiBN VERfQ09NUExFWF9NQVBQSU5HUwo+ID4gKyAgICAgICBoZWxwCj4gPiArICAgICAgICAgRXh0ZW5k IHRoZSBwaHlzbWFwIGRyaXZlciB0byBhbGxvdyBmbGFzaGVzIHRvIGJlIHBhcnRpYWxseQo+ID4g KyAgICAgICAgIHBoeXNpY2FsbHkgYWRkcmVzc2VkIGFuZCBhc3Npc3RlZCBieSBHUElPcy4KPiA+ ICsKPiA+ICBjb25maWcgTVREX1BNQ19NU1BfRVZNCj4gPiAgICAgICAgIHRyaXN0YXRlICJDRkkg Rmxhc2ggZGV2aWNlIG1hcHBlZCBvbiBQTUMtU2llcnJhIE1TUCIKPiA+ICAgICAgICAgZGVwZW5k cyBvbiBQTUNfTVNQICYmIE1URF9DRkkKPiA+IEBAIC0zMzQsMTYgKzM0Myw2IEBAIGNvbmZpZyBN VERfUENNQ0lBX0FOT05ZTU9VUwo+ID4KPiA+ICAgICAgICAgICBJZiB1bnN1cmUsIHNheSBOLgo+ ID4KPiA+IC1jb25maWcgTVREX0dQSU9fQUREUgo+ID4gLSAgICAgICB0cmlzdGF0ZSAiR1BJTy1h c3Npc3RlZCBGbGFzaCBDaGlwIFN1cHBvcnQiCj4gPiAtICAgICAgIGRlcGVuZHMgb24gR1BJT0xJ QiB8fCBDT01QSUxFX1RFU1QKPiA+IC0gICAgICAgZGVwZW5kcyBvbiBNVERfQ09NUExFWF9NQVBQ SU5HUwo+ID4gLSAgICAgICBoZWxwCj4gPiAtICAgICAgICAgTWFwIGRyaXZlciB3aGljaCBhbGxv d3MgZmxhc2hlcyB0byBiZSBwYXJ0aWFsbHkgcGh5c2ljYWxseSBhZGRyZXNzZWQKPiA+IC0gICAg ICAgICBhbmQgYXNzaXN0ZWQgYnkgR1BJT3MuCj4gPiAtCj4gPiAtICAgICAgICAgSWYgY29tcGls ZWQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkIGdwaW8tYWRkci1mbGFzaC4KPiA+IC0K PiA+ICBjb25maWcgTVREX1VDTElOVVgKPiA+ICAgICAgICAgYm9vbCAiR2VuZXJpYyB1Q2xpbnV4 IFJBTS9ST00gZmlsZXN5c3RlbSBzdXBwb3J0Igo+ID4gICAgICAgICBkZXBlbmRzIG9uIChNVERf UkFNPXkgfHwgTVREX1JPTT15KSAmJiAoIU1NVSB8fCBDT0xERklSRSkKPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL210ZC9tYXBzL01ha2VmaWxlIGIvZHJpdmVycy9tdGQvbWFwcy9NYWtlZmlsZQo+ ID4gaW5kZXggYWQzMmIxODVhMTIwLi5hY2VjMGZiZmExOGQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2 ZXJzL210ZC9tYXBzL01ha2VmaWxlCj4gPiArKysgYi9kcml2ZXJzL210ZC9tYXBzL01ha2VmaWxl Cj4gPiBAQCAtNDMsNiArNDMsNSBAQCBvYmotJChDT05GSUdfTVREX1BMQVRSQU0pICAgICArPSBw bGF0LXJhbS5vCj4gPiAgb2JqLSQoQ09ORklHX01URF9JTlRFTF9WUl9OT1IpICs9IGludGVsX3Zy X25vci5vCj4gPiAgb2JqLSQoQ09ORklHX01URF9SQlRYNDkzOSkgICAgICs9IHJidHg0OTM5LWZs YXNoLm8KPiA+ICBvYmotJChDT05GSUdfTVREX1ZNVSkgICAgICAgICAgKz0gdm11LWZsYXNoLm8K PiA+IC1vYmotJChDT05GSUdfTVREX0dQSU9fQUREUikgICAgKz0gZ3Bpby1hZGRyLWZsYXNoLm8K PiA+ICBvYmotJChDT05GSUdfTVREX0xBVENIX0FERFIpICAgKz0gbGF0Y2gtYWRkci1mbGFzaC5v Cj4gPiAgb2JqLSQoQ09ORklHX01URF9MQU5USVEpICAgICAgICs9IGxhbnRpcS1mbGFzaC5vCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbWFwcy9ncGlvLWFkZHItZmxhc2guYyBiL2RyaXZl cnMvbXRkL21hcHMvZ3Bpby1hZGRyLWZsYXNoLmMKPiA+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAo+ID4gaW5kZXggYTIwZTg1YWE3NzBlLi4wMDAwMDAwMDAwMDAKPiA+IC0tLSBhL2RyaXZlcnMv bXRkL21hcHMvZ3Bpby1hZGRyLWZsYXNoLmMKPiA+ICsrKyAvZGV2L251bGwKPiA+IEBAIC0xLDI4 MSArMCwwIEBACj4gPiAtLyoKPiA+IC0gKiBkcml2ZXJzL210ZC9tYXBzL2dwaW8tYWRkci1mbGFz aC5jCj4gPiAtICoKPiA+IC0gKiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYSBmbGFzaCBkZXZpY2Ug aXMgbW9zdGx5IGFkZHJlc3NlZCB1c2luZyBwaHlzaWNhbAo+ID4gLSAqIGxpbmUgYW5kIHN1cHBs ZW1lbnRlZCBieSBHUElPcy4gIFRoaXMgd2F5IHlvdSBjYW4gaG9vayB1cCBzYXkgYSA4TWlCIGZs YXNoCj4gPiAtICogdG8gYSAyTWlCIG1lbW9yeSByYW5nZSBhbmQgdXNlIHRoZSBHUElPcyB0byBz ZWxlY3QgYSBwYXJ0aWN1bGFyIHJhbmdlLgo+ID4gLSAqCj4gPiAtICogQ29weXJpZ2h0IMKpIDIw MDAgTmljb2xhcyBQaXRyZSA8bmljb0BjYW0ub3JnPgo+ID4gLSAqIENvcHlyaWdodCDCqSAyMDA1 LTIwMDkgQW5hbG9nIERldmljZXMgSW5jLgo+ID4gLSAqCj4gPiAtICogRW50ZXIgYnVncyBhdCBo dHRwOi8vYmxhY2tmaW4udWNsaW51eC5vcmcvCj4gPiAtICoKPiA+IC0gKiBMaWNlbnNlZCB1bmRl ciB0aGUgR1BMLTIgb3IgbGF0ZXIuCj4gPiAtICovCj4gPiAtCj4gPiAtI2luY2x1ZGUgPGxpbnV4 L2dwaW8uaD4KPiA+IC0jaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgo+ID4gLSNpbmNs dWRlIDxsaW51eC9pby5oPgo+ID4gLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiA+IC0jaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiAtI2luY2x1ZGUgPGxpbnV4L210ZC9tdGQuaD4KPiA+ IC0jaW5jbHVkZSA8bGludXgvbXRkL21hcC5oPgo+ID4gLSNpbmNsdWRlIDxsaW51eC9tdGQvcGFy dGl0aW9ucy5oPgo+ID4gLSNpbmNsdWRlIDxsaW51eC9tdGQvcGh5c21hcC5oPgo+ID4gLSNpbmNs dWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiA+IC0jaW5jbHVkZSA8bGludXgvc2xhYi5o Pgo+ID4gLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ID4gLQo+ID4gLSNkZWZpbmUgd2luX21h c2soeCkgKChCSVQoeCkpIC0gMSkKPiA+IC0KPiA+IC0jZGVmaW5lIERSSVZFUl9OQU1FICJncGlv LWFkZHItZmxhc2giCj4gPiAtCj4gPiAtLyoqCj4gPiAtICogc3RydWN0IGFzeW5jX3N0YXRlIC0g a2VlcCBHUElPIGZsYXNoIHN0YXRlCj4gPiAtICogICAgIEBtdGQ6ICAgICAgICAgTVREIHN0YXRl IGZvciB0aGlzIG1hcHBpbmcKPiA+IC0gKiAgICAgQG1hcDogICAgICAgICBNVEQgbWFwIHN0YXRl IGZvciB0aGlzIGZsYXNoCj4gPiAtICogICAgIEBncGlvczogICAgICAgU3RydWN0IGNvbnRhaW5p bmcgdGhlIGFycmF5IG9mIEdQSU8gZGVzY3JpcHRvcnMKPiA+IC0gKiAgICAgQGdwaW9fdmFsdWVz OiBjYWNoZWQgR1BJTyB2YWx1ZXMKPiA+IC0gKiAgICAgQHdpbl9vcmRlcjogICBkZWRpY2F0ZWQg bWVtb3J5IHNpemUgKGlmIG5vIEdQSU9zKQo+ID4gLSAqLwo+ID4gLXN0cnVjdCBhc3luY19zdGF0 ZSB7Cj4gPiAtICAgICAgIHN0cnVjdCBtdGRfaW5mbyAqbXRkOwo+ID4gLSAgICAgICBzdHJ1Y3Qg bWFwX2luZm8gbWFwOwo+ID4gLSAgICAgICBzdHJ1Y3QgZ3Bpb19kZXNjcyAqZ3Bpb3M7Cj4gPiAt ICAgICAgIHVuc2lnbmVkIGludCBncGlvX3ZhbHVlczsKPiA+IC0gICAgICAgdW5zaWduZWQgaW50 IHdpbl9vcmRlcjsKPiA+IC19Owo+ID4gLSNkZWZpbmUgZ2ZfbWFwX2luZm9fdG9fc3RhdGUobWkp ICgoc3RydWN0IGFzeW5jX3N0YXRlICopKG1pKS0+bWFwX3ByaXZfMSkKPiA+IC0KPiA+IC0vKioK PiA+IC0gKiBnZl9zZXRfZ3Bpb3MoKSAtIHNldCBHUElPIGFkZHJlc3MgbGluZXMgdG8gYWNjZXNz IHNwZWNpZmllZCBmbGFzaCBvZmZzZXQKPiA+IC0gKiAgICAgQHN0YXRlOiBHUElPIGZsYXNoIHN0 YXRlCj4gPiAtICogICAgIEBvZnM6ICAgZGVzaXJlZCBvZmZzZXQgdG8gYWNjZXNzCj4gPiAtICoK PiA+IC0gKiBSYXRoZXIgdGhhbiBjYWxsIHRoZSBHUElPIGZyYW1ld29yayBldmVyeSB0aW1lLCBj YWNoZSB0aGUgbGFzdC1wcm9ncmFtbWVkCj4gPiAtICogdmFsdWUuICBUaGlzIHNwZWVkcyB1cCBz ZXF1ZW50aWFsIGFjY2Vzc2VzICh3aGljaCBhcmUgYnkgZmFyIHRoZSBtb3N0IGNvbW1vbgo+ID4g LSAqIHR5cGUpLgo+ID4gLSAqLwo+ID4gLXN0YXRpYyB2b2lkIGdmX3NldF9ncGlvcyhzdHJ1Y3Qg YXN5bmNfc3RhdGUgKnN0YXRlLCB1bnNpZ25lZCBsb25nIG9mcykKPiA+IC17Cj4gPiAtICAgICAg IGludCBpOwo+ID4gLQo+ID4gLSAgICAgICBvZnMgPj49IHN0YXRlLT53aW5fb3JkZXI7Cj4gPiAt Cj4gPiAtICAgICAgIGlmIChvZnMgPT0gc3RhdGUtPmdwaW9fdmFsdWVzKQo+ID4gLSAgICAgICAg ICAgICAgIHJldHVybjsKPiA+IC0KPiA+IC0gICAgICAgZm9yIChpID0gMDsgaSA8IHN0YXRlLT5n cGlvcy0+bmRlc2NzOyBpKyspIHsKPiA+IC0gICAgICAgICAgICAgICBpZiAoKG9mcyAmIEJJVChp KSkgPT0gKHN0YXRlLT5ncGlvX3ZhbHVlcyAmIEJJVChpKSkpCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICBjb250aW51ZTsKPiA+IC0KPiA+IC0gICAgICAgICAgICAgICBncGlvZF9zZXRfdmFs dWUoc3RhdGUtPmdwaW9zLT5kZXNjW2ldLCAhIShvZnMgJiBCSVQoaSkpKTsKPiA+IC0gICAgICAg fQo+ID4gLQo+ID4gLSAgICAgICBzdGF0ZS0+Z3Bpb192YWx1ZXMgPSBvZnM7Cj4gPiAtfQo+ID4g LQo+ID4gLS8qKgo+ID4gLSAqIGdmX3JlYWQoKSAtIHJlYWQgYSB3b3JkIGF0IHRoZSBzcGVjaWZp ZWQgb2Zmc2V0Cj4gPiAtICogICAgIEBtYXA6IE1URCBtYXAgc3RhdGUKPiA+IC0gKiAgICAgQG9m czogZGVzaXJlZCBvZmZzZXQgdG8gcmVhZAo+ID4gLSAqLwo+ID4gLXN0YXRpYyBtYXBfd29yZCBn Zl9yZWFkKHN0cnVjdCBtYXBfaW5mbyAqbWFwLCB1bnNpZ25lZCBsb25nIG9mcykKPiA+IC17Cj4g PiAtICAgICAgIHN0cnVjdCBhc3luY19zdGF0ZSAqc3RhdGUgPSBnZl9tYXBfaW5mb190b19zdGF0 ZShtYXApOwo+ID4gLSAgICAgICB1aW50MTZfdCB3b3JkOwo+ID4gLSAgICAgICBtYXBfd29yZCB0 ZXN0Owo+ID4gLQo+ID4gLSAgICAgICBnZl9zZXRfZ3Bpb3Moc3RhdGUsIG9mcyk7Cj4gPiAtCj4g PiAtICAgICAgIHdvcmQgPSByZWFkdyhtYXAtPnZpcnQgKyAob2ZzICYgd2luX21hc2soc3RhdGUt Pndpbl9vcmRlcikpKTsKPiA+IC0gICAgICAgdGVzdC54WzBdID0gd29yZDsKPiA+IC0gICAgICAg cmV0dXJuIHRlc3Q7Cj4gPiAtfQo+ID4gLQo+ID4gLS8qKgo+ID4gLSAqIGdmX2NvcHlfZnJvbSgp IC0gY29weSBhIGNodW5rIG9mIGRhdGEgZnJvbSB0aGUgZmxhc2gKPiA+IC0gKiAgICAgQG1hcDog IE1URCBtYXAgc3RhdGUKPiA+IC0gKiAgICAgQHRvOiAgIG1lbW9yeSB0byBjb3B5IHRvCj4gPiAt ICogICAgIEBmcm9tOiBmbGFzaCBvZmZzZXQgdG8gY29weSBmcm9tCj4gPiAtICogICAgIEBsZW46 ICBob3cgbXVjaCB0byBjb3B5Cj4gPiAtICoKPiA+IC0gKiBUaGUgImZyb20iIHJlZ2lvbiBtYXkg c3RyYWRkbGUgbW9yZSB0aGFuIG9uZSB3aW5kb3csIHNvIHRvZ2dsZSB0aGUgR1BJT3MgZm9yCj4g PiAtICogZWFjaCB3aW5kb3cgcmVnaW9uIGJlZm9yZSByZWFkaW5nIGl0cyBkYXRhLgo+ID4gLSAq Lwo+ID4gLXN0YXRpYyB2b2lkIGdmX2NvcHlfZnJvbShzdHJ1Y3QgbWFwX2luZm8gKm1hcCwgdm9p ZCAqdG8sIHVuc2lnbmVkIGxvbmcgZnJvbSwgc3NpemVfdCBsZW4pCj4gPiAtewo+ID4gLSAgICAg ICBzdHJ1Y3QgYXN5bmNfc3RhdGUgKnN0YXRlID0gZ2ZfbWFwX2luZm9fdG9fc3RhdGUobWFwKTsK PiA+IC0KPiA+IC0gICAgICAgaW50IHRoaXNfbGVuOwo+ID4gLQo+ID4gLSAgICAgICB3aGlsZSAo bGVuKSB7Cj4gPiAtICAgICAgICAgICAgICAgdGhpc19sZW4gPSBmcm9tICYgd2luX21hc2soc3Rh dGUtPndpbl9vcmRlcik7Cj4gPiAtICAgICAgICAgICAgICAgdGhpc19sZW4gPSBCSVQoc3RhdGUt Pndpbl9vcmRlcikgLSB0aGlzX2xlbjsKPiA+IC0gICAgICAgICAgICAgICB0aGlzX2xlbiA9IG1p bl90KGludCwgbGVuLCB0aGlzX2xlbik7Cj4gPiAtCj4gPiAtICAgICAgICAgICAgICAgZ2Zfc2V0 X2dwaW9zKHN0YXRlLCBmcm9tKTsKPiA+IC0gICAgICAgICAgICAgICBtZW1jcHlfZnJvbWlvKHRv LAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLT52aXJ0ICsgKGZyb20gJiB3 aW5fbWFzayhzdGF0ZS0+d2luX29yZGVyKSksCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aGlzX2xlbik7Cj4gPiAtICAgICAgICAgICAgICAgbGVuIC09IHRoaXNfbGVuOwo+ID4g LSAgICAgICAgICAgICAgIGZyb20gKz0gdGhpc19sZW47Cj4gPiAtICAgICAgICAgICAgICAgdG8g Kz0gdGhpc19sZW47Cj4gPiAtICAgICAgIH0KPiA+IC19Cj4gPiAtCj4gPiAtLyoqCj4gPiAtICog Z2Zfd3JpdGUoKSAtIHdyaXRlIGEgd29yZCBhdCB0aGUgc3BlY2lmaWVkIG9mZnNldAo+ID4gLSAq ICAgICBAbWFwOiBNVEQgbWFwIHN0YXRlCj4gPiAtICogICAgIEBvZnM6IGRlc2lyZWQgb2Zmc2V0 IHRvIHdyaXRlCj4gPiAtICovCj4gPiAtc3RhdGljIHZvaWQgZ2Zfd3JpdGUoc3RydWN0IG1hcF9p bmZvICptYXAsIG1hcF93b3JkIGQxLCB1bnNpZ25lZCBsb25nIG9mcykKPiA+IC17Cj4gPiAtICAg ICAgIHN0cnVjdCBhc3luY19zdGF0ZSAqc3RhdGUgPSBnZl9tYXBfaW5mb190b19zdGF0ZShtYXAp Owo+ID4gLSAgICAgICB1aW50MTZfdCBkOwo+ID4gLQo+ID4gLSAgICAgICBnZl9zZXRfZ3Bpb3Mo c3RhdGUsIG9mcyk7Cj4gPiAtCj4gPiAtICAgICAgIGQgPSBkMS54WzBdOwo+ID4gLSAgICAgICB3 cml0ZXcoZCwgbWFwLT52aXJ0ICsgKG9mcyAmIHdpbl9tYXNrKHN0YXRlLT53aW5fb3JkZXIpKSk7 Cj4gPiAtfQo+ID4gLQo+ID4gLS8qKgo+ID4gLSAqIGdmX2NvcHlfdG8oKSAtIGNvcHkgYSBjaHVu ayBvZiBkYXRhIHRvIHRoZSBmbGFzaAo+ID4gLSAqICAgICBAbWFwOiAgTVREIG1hcCBzdGF0ZQo+ ID4gLSAqICAgICBAdG86ICAgZmxhc2ggb2Zmc2V0IHRvIGNvcHkgdG8KPiA+IC0gKiAgICAgQGZy b206IG1lbW9yeSB0byBjb3B5IGZyb20KPiA+IC0gKiAgICAgQGxlbjogIGhvdyBtdWNoIHRvIGNv cHkKPiA+IC0gKgo+ID4gLSAqIFNlZSBnZl9jb3B5X2Zyb20oKSBjYXZlYXQuCj4gPiAtICovCj4g PiAtc3RhdGljIHZvaWQgZ2ZfY29weV90byhzdHJ1Y3QgbWFwX2luZm8gKm1hcCwgdW5zaWduZWQg bG9uZyB0bywKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZnJvbSwgc3Np emVfdCBsZW4pCj4gPiAtewo+ID4gLSAgICAgICBzdHJ1Y3QgYXN5bmNfc3RhdGUgKnN0YXRlID0g Z2ZfbWFwX2luZm9fdG9fc3RhdGUobWFwKTsKPiA+IC0KPiA+IC0gICAgICAgaW50IHRoaXNfbGVu Owo+ID4gLQo+ID4gLSAgICAgICB3aGlsZSAobGVuKSB7Cj4gPiAtICAgICAgICAgICAgICAgdGhp c19sZW4gPSB0byAmIHdpbl9tYXNrKHN0YXRlLT53aW5fb3JkZXIpOwo+ID4gLSAgICAgICAgICAg ICAgIHRoaXNfbGVuID0gQklUKHN0YXRlLT53aW5fb3JkZXIpIC0gdGhpc19sZW47Cj4gPiAtICAg ICAgICAgICAgICAgdGhpc19sZW4gPSBtaW5fdChpbnQsIGxlbiwgdGhpc19sZW4pOwo+ID4gLQo+ ID4gLSAgICAgICAgICAgICAgIGdmX3NldF9ncGlvcyhzdGF0ZSwgdG8pOwo+ID4gLSAgICAgICAg ICAgICAgIG1lbWNweV90b2lvKG1hcC0+dmlydCArICh0byAmIHdpbl9tYXNrKHN0YXRlLT53aW5f b3JkZXIpKSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tLCBsZW4pOwo+ID4g LQo+ID4gLSAgICAgICAgICAgICAgIGxlbiAtPSB0aGlzX2xlbjsKPiA+IC0gICAgICAgICAgICAg ICB0byArPSB0aGlzX2xlbjsKPiA+IC0gICAgICAgICAgICAgICBmcm9tICs9IHRoaXNfbGVuOwo+ ID4gLSAgICAgICB9Cj4gPiAtfQo+ID4gLQo+ID4gLXN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qg cGFydF9wcm9iZV90eXBlc1tdID0gewo+ID4gLSAgICAgICAiY21kbGluZXBhcnQiLCAiUmVkQm9v dCIsIE5VTEwgfTsKPiA+IC0KPiA+IC0vKioKPiA+IC0gKiBncGlvX2ZsYXNoX3Byb2JlKCkgLSBz ZXR1cCBhIG1hcHBpbmcgZm9yIGEgR1BJTyBhc3Npc3RlZCBmbGFzaAo+ID4gLSAqICAgICBAcGRl djogcGxhdGZvcm0gZGV2aWNlCj4gPiAtICoKPiA+IC0gKiBUaGUgcGxhdGZvcm0gcmVzb3VyY2Ug bGF5b3V0IGV4cGVjdGVkIGxvb2tzIHNvbWV0aGluZyBsaWtlOgo+ID4gLSAqIHN0cnVjdCBtdGRf cGFydGl0aW9uIHBhcnRpdGlvbnNbXSA9IHsgLi4uIH07Cj4gPiAtICogc3RydWN0IHBoeXNtYXBf Zmxhc2hfZGF0YSBmbGFzaF9kYXRhID0geyAuLi4gfTsKPiA+IC0gKiBzdGF0aWMgc3RydWN0IGdw aW9kX2xvb2t1cF90YWJsZSBhZGRyX2ZsYXNoX2dwaW9zID0gewo+ID4gLSAqICAgICAgICAgICAg IC5kZXZfaWQgPSAiZ3Bpby1hZGRyLWZsYXNoLjAiLAo+ID4gLSAqICAgICAgICAgICAgIC50YWJs ZSA9IHsKPiA+IC0gKiAgICAgICAgICAgICBHUElPX0xPT0tVUF9JRFgoImdwaW8uMCIsIDE1LCAi YWRkciIsIDAsIEdQSU9fQUNUSVZFX0hJR0gpLAo+ID4gLSAqICAgICAgICAgICAgIEdQSU9fTE9P S1VQX0lEWCgiZ3Bpby4wIiwgMTYsICJhZGRyIiwgMSwgR1BJT19BQ1RJVkVfSElHSCksCj4gPiAt ICogICAgICAgICAgICAgKTsKPiA+IC0gKiB9Owo+ID4gLSAqIGdwaW9kX2FkZF9sb29rdXBfdGFi bGUoJmFkZHJfZmxhc2hfZ3Bpb3MpOwo+ID4gLSAqCj4gPiAtICogc3RydWN0IHJlc291cmNlIGZs YXNoX3Jlc291cmNlW10gPSB7Cj4gPiAtICogICAgIHsKPiA+IC0gKiAgICAgICAgICAgICAubmFt ZSAgPSAiY2ZpX3Byb2JlIiwKPiA+IC0gKiAgICAgICAgICAgICAuc3RhcnQgPSAweDIwMDAwMDAw LAo+ID4gLSAqICAgICAgICAgICAgIC5lbmQgICA9IDB4MjAxZmZmZmYsCj4gPiAtICogICAgICAg ICAgICAgLmZsYWdzID0gSU9SRVNPVVJDRV9NRU0sCj4gPiAtICogICAgIH0sCj4gPiAtICogfTsK PiA+IC0gKiBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGZsYXNoX2RldmljZSA9IHsKPiA+IC0gKiAg ICAgLm5hbWUgICAgICAgICAgPSAiZ3Bpby1hZGRyLWZsYXNoIiwKPiA+IC0gKiAgICAgLmRldiAg ICAgICAgICAgPSB7IC5wbGF0Zm9ybV9kYXRhID0gJmZsYXNoX2RhdGEsIH0sCj4gPiAtICogICAg IC5udW1fcmVzb3VyY2VzID0gQVJSQVlfU0laRShmbGFzaF9yZXNvdXJjZSksCj4gPiAtICogICAg IC5yZXNvdXJjZSAgICAgID0gZmxhc2hfcmVzb3VyY2UsCj4gPiAtICogICAgIC4uLgo+ID4gLSAq IH07Cj4gPiAtICovCj4gPiAtc3RhdGljIGludCBncGlvX2ZsYXNoX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPiAtewo+ID4gLSAgICAgICBzdHJ1Y3QgcGh5c21hcF9mbGFz aF9kYXRhICpwZGF0YTsKPiA+IC0gICAgICAgc3RydWN0IHJlc291cmNlICptZW1vcnk7Cj4gPiAt ICAgICAgIHN0cnVjdCBhc3luY19zdGF0ZSAqc3RhdGU7Cj4gPiAtCj4gPiAtICAgICAgIHBkYXRh ID0gZGV2X2dldF9wbGF0ZGF0YSgmcGRldi0+ZGV2KTsKPiA+IC0gICAgICAgbWVtb3J5ID0gcGxh dGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiA+IC0KPiA+IC0g ICAgICAgaWYgKCFtZW1vcnkpCj4gPiAtICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4g PiAtCj4gPiAtICAgICAgIHN0YXRlID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigq c3RhdGUpLCBHRlBfS0VSTkVMKTsKPiA+IC0gICAgICAgaWYgKCFzdGF0ZSkKPiA+IC0gICAgICAg ICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+IC0KPiA+IC0gICAgICAgc3RhdGUtPmdwaW9zID0g ZGV2bV9ncGlvZF9nZXRfYXJyYXkoJnBkZXYtPmRldiwgImFkZHIiLCBHUElPRF9PVVRfTE9XKTsK PiA+IC0gICAgICAgaWYgKElTX0VSUihzdGF0ZS0+Z3Bpb3MpKQo+ID4gLSAgICAgICAgICAgICAg IHJldHVybiBQVFJfRVJSKHN0YXRlLT5ncGlvcyk7Cj4gPiAtCj4gPiAtICAgICAgIHN0YXRlLT53 aW5fb3JkZXIgICAgICA9IGdldF9iaXRtYXNrX29yZGVyKHJlc291cmNlX3NpemUobWVtb3J5KSkg LSAxOwo+ID4gLQo+ID4gLSAgICAgICBzdGF0ZS0+bWFwLm5hbWUgICAgICAgPSBEUklWRVJfTkFN RTsKPiA+IC0gICAgICAgc3RhdGUtPm1hcC5yZWFkICAgICAgID0gZ2ZfcmVhZDsKPiA+IC0gICAg ICAgc3RhdGUtPm1hcC5jb3B5X2Zyb20gID0gZ2ZfY29weV9mcm9tOwo+ID4gLSAgICAgICBzdGF0 ZS0+bWFwLndyaXRlICAgICAgPSBnZl93cml0ZTsKPiA+IC0gICAgICAgc3RhdGUtPm1hcC5jb3B5 X3RvICAgID0gZ2ZfY29weV90bzsKPiA+IC0gICAgICAgc3RhdGUtPm1hcC5iYW5rd2lkdGggID0g cGRhdGEtPndpZHRoOwo+ID4gLSAgICAgICBzdGF0ZS0+bWFwLnNpemUgICAgICAgPSBCSVQoc3Rh dGUtPndpbl9vcmRlciArIHN0YXRlLT5ncGlvcy0+bmRlc2NzKTsKPiA+IC0gICAgICAgc3RhdGUt Pm1hcC52aXJ0ICAgICAgID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIG1lbW9y eSk7Cj4gPiAtICAgICAgIGlmIChJU19FUlIoc3RhdGUtPm1hcC52aXJ0KSkKPiA+IC0gICAgICAg ICAgICAgICByZXR1cm4gUFRSX0VSUihzdGF0ZS0+bWFwLnZpcnQpOwo+ID4gLQo+ID4gLSAgICAg ICBzdGF0ZS0+bWFwLnBoeXMgICAgICAgPSBOT19YSVA7Cj4gPiAtICAgICAgIHN0YXRlLT5tYXAu bWFwX3ByaXZfMSA9ICh1bnNpZ25lZCBsb25nKXN0YXRlOwo+ID4gLQo+ID4gLSAgICAgICBwbGF0 Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBzdGF0ZSk7Cj4gPiAtCj4gPiAtICAgICAgIGRldl9ub3Rp Y2UoJnBkZXYtPmRldiwgInByb2JpbmcgJWQtYml0IGZsYXNoIGJ1c1xuIiwKPiA+IC0gICAgICAg ICAgICAgICAgICBzdGF0ZS0+bWFwLmJhbmt3aWR0aCAqIDgpOwo+ID4gLSAgICAgICBzdGF0ZS0+ bXRkID0gZG9fbWFwX3Byb2JlKG1lbW9yeS0+bmFtZSwgJnN0YXRlLT5tYXApOwo+ID4gLSAgICAg ICBpZiAoIXN0YXRlLT5tdGQpCj4gPiAtICAgICAgICAgICAgICAgcmV0dXJuIC1FTlhJTzsKPiA+ IC0gICAgICAgc3RhdGUtPm10ZC0+ZGV2LnBhcmVudCA9ICZwZGV2LT5kZXY7Cj4gPiAtCj4gPiAt ICAgICAgIG10ZF9kZXZpY2VfcGFyc2VfcmVnaXN0ZXIoc3RhdGUtPm10ZCwgcGFydF9wcm9iZV90 eXBlcywgTlVMTCwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZGF0YS0+ cGFydHMsIHBkYXRhLT5ucl9wYXJ0cyk7Cj4gPiAtCj4gPiAtICAgICAgIHJldHVybiAwOwo+ID4g LX0KPiA+IC0KPiA+IC1zdGF0aWMgaW50IGdwaW9fZmxhc2hfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCj4gPiAtewo+ID4gLSAgICAgICBzdHJ1Y3QgYXN5bmNfc3RhdGUgKnN0 YXRlID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gPiAtCj4gPiAtICAgICAgIG10ZF9k ZXZpY2VfdW5yZWdpc3RlcihzdGF0ZS0+bXRkKTsKPiA+IC0gICAgICAgbWFwX2Rlc3Ryb3koc3Rh dGUtPm10ZCk7Cj4gPiAtICAgICAgIHJldHVybiAwOwo+ID4gLX0KPiA+IC0KPiA+IC1zdGF0aWMg c3RydWN0IHBsYXRmb3JtX2RyaXZlciBncGlvX2ZsYXNoX2RyaXZlciA9IHsKPiA+IC0gICAgICAg LnByb2JlICAgICAgICAgID0gZ3Bpb19mbGFzaF9wcm9iZSwKPiA+IC0gICAgICAgLnJlbW92ZSAg ICAgICAgID0gZ3Bpb19mbGFzaF9yZW1vdmUsCj4gPiAtICAgICAgIC5kcml2ZXIgICAgICAgICA9 IHsKPiA+IC0gICAgICAgICAgICAgICAubmFtZSAgID0gRFJJVkVSX05BTUUsCj4gPiAtICAgICAg IH0sCj4gPiAtfTsKPiA+IC0KPiA+IC1tb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGdwaW9fZmxhc2hf ZHJpdmVyKTsKPiA+IC0KPiA+IC1NT0RVTEVfQVVUSE9SKCJNaWtlIEZyeXNpbmdlciA8dmFwaWVy QGdlbnRvby5vcmc+Iik7Cj4gPiAtTU9EVUxFX0RFU0NSSVBUSU9OKCJNVEQgbWFwIGRyaXZlciBm b3IgZmxhc2hlcyBhZGRyZXNzZWQgcGh5c2ljYWxseSBhbmQgd2l0aCBncGlvcyIpOwo+ID4gLU1P RFVMRV9MSUNFTlNFKCJHUEwiKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tYXBzL3Bo eXNtYXAtY29yZS5jIGIvZHJpdmVycy9tdGQvbWFwcy9waHlzbWFwLWNvcmUuYwo+ID4gaW5kZXgg N2E1MGZmOWVmODEyLi4yZGMzM2FlNzEzMzUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL210ZC9t YXBzL3BoeXNtYXAtY29yZS5jCj4gPiArKysgYi9kcml2ZXJzL210ZC9tYXBzL3BoeXNtYXAtY29y ZS5jCj4gPiBAQCAtMTMsNiArMTMsMTQgQEAKPiA+ICAgKgo+ID4gICAqICAgIFJldmlzZWQgdG8g aGFuZGxlIG5ld2VyIHN0eWxlIGZsYXNoIGJpbmRpbmcgYnk6Cj4gPiAgICogICAgQ29weXJpZ2h0 IChDKSAyMDA3IERhdmlkIEdpYnNvbiwgSUJNIENvcnBvcmF0aW9uLgo+ID4gKyAqCj4gPiArICog R1BJTyBhZGRyZXNzIGV4dGVuc2lvbjoKPiA+ICsgKiAgICBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUg YSBmbGFzaCBkZXZpY2UgaXMgbW9zdGx5IGFkZHJlc3NlZCB1c2luZyBwaHlzaWNhbAo+ID4gKyAq ICAgIGxpbmUgYW5kIHN1cHBsZW1lbnRlZCBieSBHUElPcy4gIFRoaXMgd2F5IHlvdSBjYW4gaG9v ayB1cCBzYXkgYSA4TWlCIGZsYXNoCj4gPiArICogICAgdG8gYSAyTWlCIG1lbW9yeSByYW5nZSBh bmQgdXNlIHRoZSBHUElPcyB0byBzZWxlY3QgYSBwYXJ0aWN1bGFyIHJhbmdlLgo+ID4gKyAqCj4g PiArICogICAgQ29weXJpZ2h0IMKpIDIwMDAgTmljb2xhcyBQaXRyZSA8bmljb0BjYW0ub3JnPgo+ ID4gKyAqICAgIENvcHlyaWdodCDCqSAyMDA1LTIwMDkgQW5hbG9nIERldmljZXMgSW5jLgo+ID4g ICAqLwo+ID4KPiA+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiBAQCAtMzAsNiArMzgs NyBAQAo+ID4gICNpbmNsdWRlIDxsaW51eC9tdGQvY2ZpX2VuZGlhbi5oPgo+ID4gICNpbmNsdWRl IDxsaW51eC9pby5oPgo+ID4gICNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KPiA+ICsjaW5j bHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgo+ID4KPiA+ICAjaW5jbHVkZSAicGh5c21hcF9v Zl9nZW1pbmkuaCIKPiA+ICAjaW5jbHVkZSAicGh5c21hcF9vZl92ZXJzYXRpbGUuaCIKPiA+IEBA IC00NSw2ICs1NCw5IEBAIHN0cnVjdCBwaHlzbWFwX2ZsYXNoX2luZm8gewo+ID4gICAgICAgICBj b25zdCBjaGFyICogY29uc3QgICAgICAqcGFydF90eXBlczsKPiA+ICAgICAgICAgdW5zaWduZWQg aW50ICAgICAgICAgICAgbnBhcnRzOwo+ID4gICAgICAgICBjb25zdCBzdHJ1Y3QgbXRkX3BhcnRp dGlvbiAqcGFydHM7Cj4gPiArICAgICAgIHN0cnVjdCBncGlvX2Rlc2NzICAgICAgICpncGlvczsK PiA+ICsgICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgZ3Bpb192YWx1ZXM7Cj4gPiArICAg ICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIHdpbl9vcmRlcjsKPiA+ICB9Owo+ID4KPiA+ICBz dGF0aWMgaW50IHBoeXNtYXBfZmxhc2hfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRl dikKPiA+IEBAIC0xMDQsNiArMTE2LDExOSBAQCBzdGF0aWMgdm9pZCBwaHlzbWFwX3NldF92cHAo c3RydWN0IG1hcF9pbmZvICptYXAsIGludCBzdGF0ZSkKPiA+ICAgICAgICAgc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmaW5mby0+dnBwX2xvY2ssIGZsYWdzKTsKPiA+ICB9Cj4gPgo+ID4gKyNpZiBJ U19FTkFCTEVEKENPTkZJR19NVERfUEhZU01BUF9HUElPX0FERFIpCj4gPiArc3RhdGljIHZvaWQg cGh5c21hcF9zZXRfYWRkcl9ncGlvcyhzdHJ1Y3QgcGh5c21hcF9mbGFzaF9pbmZvICppbmZvLAo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9mcykK PiA+ICt7Cj4gPiArICAgICAgIHVuc2lnbmVkIGludCBpOwo+ID4gKwo+ID4gKyAgICAgICBvZnMg Pj49IGluZm8tPndpbl9vcmRlcjsKPiA+ICsgICAgICAgaWYgKGluZm8tPmdwaW9fdmFsdWVzID09 IG9mcykKPiA+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gPiArCj4gPiArICAgICAgIGZvciAo aSA9IDA7IGkgPCBpbmZvLT5ncGlvcy0+bmRlc2NzOyBpKyspIHsKPiA+ICsgICAgICAgICAgICAg ICBpZiAoKEJJVChpKSAmIG9mcykgPT0gKEJJVChpKSAmIGluZm8tPmdwaW9fdmFsdWVzKSkKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gKwo+ID4gKyAgICAgICAgICAg ICAgIGdwaW9kX3NldF92YWx1ZShpbmZvLT5ncGlvcy0+ZGVzY1tpXSwgISEoQklUKGkpICYgb2Zz KSk7Cj4gPiArICAgICAgIH0KPiA+ICt9Cj4gPiArCj4gPiArI2RlZmluZSB3aW5fbWFzayhvcmRl cikgICAgICAgICAgICAgICAgKEJJVChvcmRlcikgLSAxKQo+ID4gKwo+ID4gK3N0YXRpYyBtYXBf d29yZCBwaHlzbWFwX2FkZHJfZ3Bpb3NfcmVhZChzdHJ1Y3QgbWFwX2luZm8gKm1hcCwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9mcykK PiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7Cj4gPiArICAg ICAgIHN0cnVjdCBwaHlzbWFwX2ZsYXNoX2luZm8gKmluZm87Cj4gPiArICAgICAgIG1hcF93b3Jk IG13Owo+ID4gKyAgICAgICB1MTYgd29yZDsKPiA+ICsKPiA+ICsgICAgICAgcGRldiA9IChzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICopbWFwLT5tYXBfcHJpdl8xOwo+ID4gKyAgICAgICBpbmZvID0g cGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gPiArICAgICAgIHBoeXNtYXBfc2V0X2FkZHJf Z3Bpb3MoaW5mbywgb2ZzKTsKPiA+ICsKPiA+ICsgICAgICAgd29yZCA9IHJlYWR3KG1hcC0+dmly dCArIChvZnMgJiB3aW5fbWFzayhpbmZvLT53aW5fb3JkZXIpKSk7Cj4gPiArICAgICAgIG13Lnhb MF0gPSB3b3JkOwo+ID4gKyAgICAgICByZXR1cm4gbXc7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRp YyB2b2lkIHBoeXNtYXBfYWRkcl9ncGlvc19jb3B5X2Zyb20oc3RydWN0IG1hcF9pbmZvICptYXAs IHZvaWQgKmJ1ZiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBvZnMsIHNzaXplX3QgbGVuKQo+ID4gK3sKPiA+ICsgICAgICAgc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldjsKPiA+ICsgICAgICAgc3RydWN0IHBoeXNtYXBfZmxhc2hf aW5mbyAqaW5mbzsKPiA+ICsKPiA+ICsgICAgICAgcGRldiA9IChzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICopbWFwLT5tYXBfcHJpdl8xOwo+ID4gKyAgICAgICBpbmZvID0gcGxhdGZvcm1fZ2V0X2Ry dmRhdGEocGRldik7Cj4gPiArCj4gPiArICAgICAgIHdoaWxlIChsZW4pIHsKPiA+ICsgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgd2lub2ZzID0gb2ZzICYgd2luX21hc2soaW5mby0+d2luX29y ZGVyKTsKPiA+ICsgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY2h1bmtsZW4gPSBtaW5fdCh1 bnNpZ25lZCBpbnQsIGxlbiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBCSVQoaW5mby0+d2luX29yZGVyKSAtIHdpbm9mcyk7Cj4gPiArCj4gPiArICAg ICAgICAgICAgICAgcGh5c21hcF9zZXRfYWRkcl9ncGlvcyhpbmZvLCBvZnMpOwo+ID4gKyAgICAg ICAgICAgICAgIG1lbWNweV9mcm9taW8oYnVmLCBtYXAtPnZpcnQgKyB3aW5vZnMsIGNodW5rbGVu KTsKPiA+ICsgICAgICAgICAgICAgICBsZW4gLT0gY2h1bmtsZW47Cj4gPiArICAgICAgICAgICAg ICAgYnVmICs9IGNodW5rbGVuOwo+ID4gKyAgICAgICAgICAgICAgIG9mcyArPSBjaHVua2xlbjsK PiA+ICsgICAgICAgfQo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBwaHlzbWFwX2FkZHJf Z3Bpb3Nfd3JpdGUoc3RydWN0IG1hcF9pbmZvICptYXAsIG1hcF93b3JkIG13LAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2ZzKQo+ID4gK3sK PiA+ICsgICAgICAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKPiA+ICsgICAgICAgc3Ry dWN0IHBoeXNtYXBfZmxhc2hfaW5mbyAqaW5mbzsKPiA+ICsgICAgICAgdTE2IHdvcmQ7Cj4gPiAr Cj4gPiArICAgICAgIHBkZXYgPSAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqKW1hcC0+bWFwX3By aXZfMTsKPiA+ICsgICAgICAgaW5mbyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+ID4g KyAgICAgICBwaHlzbWFwX3NldF9hZGRyX2dwaW9zKGluZm8sIG9mcyk7Cj4gPiArCj4gPiArICAg ICAgIHdvcmQgPSBtdy54WzBdOwo+ID4gKyAgICAgICB3cml0ZXcod29yZCwgbWFwLT52aXJ0ICsg KG9mcyAmIHdpbl9tYXNrKGluZm8tPndpbl9vcmRlcikpKTsKPiA+ICt9Cj4gPiArCj4gPiArc3Rh dGljIHZvaWQgcGh5c21hcF9hZGRyX2dwaW9zX2NvcHlfdG8oc3RydWN0IG1hcF9pbmZvICptYXAs IHVuc2lnbmVkIGxvbmcgb2ZzLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgdm9pZCAqYnVmLCBzc2l6ZV90IGxlbikKPiA+ICt7Cj4gPiArICAgICAgIHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7Cj4gPiArICAgICAgIHN0cnVjdCBwaHlzbWFwX2Zs YXNoX2luZm8gKmluZm87Cj4gPiArCj4gPiArICAgICAgIHBkZXYgPSAoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqKW1hcC0+bWFwX3ByaXZfMTsKPiA+ICsgICAgICAgaW5mbyA9IHBsYXRmb3JtX2dl dF9kcnZkYXRhKHBkZXYpOwo+ID4gKwo+ID4gKyAgICAgICB3aGlsZSAobGVuKSB7Cj4gPiArICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IHdpbm9mcyA9IG9mcyAmIHdpbl9tYXNrKGluZm8tPndp bl9vcmRlcik7Cj4gPiArICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNodW5rbGVuID0gbWlu X3QodW5zaWduZWQgaW50LCBsZW4sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQklUKGluZm8tPndpbl9vcmRlcikgLSB3aW5vZnMpOwo+ID4gKwo+ID4g KyAgICAgICAgICAgICAgIHBoeXNtYXBfc2V0X2FkZHJfZ3Bpb3MoaW5mbywgb2ZzKTsKPiA+ICsg ICAgICAgICAgICAgICBtZW1jcHlfdG9pbyhtYXAtPnZpcnQgKyB3aW5vZnMsIGJ1ZiwgY2h1bmts ZW4pOwo+ID4gKyAgICAgICAgICAgICAgIGxlbiAtPSBjaHVua2xlbjsKPiA+ICsgICAgICAgICAg ICAgICBidWYgKz0gY2h1bmtsZW47Cj4gPiArICAgICAgICAgICAgICAgb2ZzICs9IGNodW5rbGVu Owo+ID4gKyAgICAgICB9Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgcGh5c21hcF9hZGRy X2dwaW9zX21hcF9pbml0KHN0cnVjdCBtYXBfaW5mbyAqbWFwKQo+ID4gK3sKPiA+ICsgICAgICAg bWFwLT5waHlzID0gTk9fWElQOwo+ID4gKyAgICAgICBtYXAtPnJlYWQgPSBwaHlzbWFwX2FkZHJf Z3Bpb3NfcmVhZDsKPiA+ICsgICAgICAgbWFwLT5jb3B5X2Zyb20gPSBwaHlzbWFwX2FkZHJfZ3Bp b3NfY29weV9mcm9tOwo+ID4gKyAgICAgICBtYXAtPndyaXRlID0gcGh5c21hcF9hZGRyX2dwaW9z X3dyaXRlOwo+ID4gKyAgICAgICBtYXAtPmNvcHlfdG8gPSBwaHlzbWFwX2FkZHJfZ3Bpb3NfY29w eV90bzsKPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKyNlbHNlCj4gPiAr c3RhdGljIGludCBwaHlzbWFwX2FkZHJfZ3Bpb3NfbWFwX2luaXQoc3RydWN0IG1hcF9pbmZvICpt YXApCj4gPiArewo+ID4gKyAgICAgICByZXR1cm4gLUVOT1RTVVBQOwo+ID4gK30KPiA+ICsjZW5k aWYKPiA+ICsKPiA+ICAjaWYgSVNfRU5BQkxFRChDT05GSUdfTVREX1BIWVNNQVBfT0YpCj4gPiAg c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2ZfZmxhc2hfbWF0Y2hbXSA9IHsKPiA+ ICAgICAgICAgewo+ID4gQEAgLTM0Myw2ICs0NjgsMTYgQEAgc3RhdGljIGludCBwaHlzbWFwX2Zs YXNoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldikKPiA+Cj4gPiAgICAgICAgIHBs YXRmb3JtX3NldF9kcnZkYXRhKGRldiwgaW5mbyk7Cj4gPgo+ID4gKyAgICAgICBpbmZvLT5ncGlv cyA9IGRldm1fZ3Bpb2RfZ2V0X2FycmF5X29wdGlvbmFsKCZkZXYtPmRldiwgImFkZHIiLAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9E X09VVF9MT1cpOwo+ID4gKyAgICAgICBpZiAoSVNfRVJSKGluZm8tPmdwaW9zKSkKPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gUFRSX0VSUihpbmZvLT5ncGlvcyk7Cj4gPiArCj4gPiArICAgICAg IGlmIChpbmZvLT5ncGlvcyAmJiBpbmZvLT5ubWFwcyA+IDEpIHsKPiA+ICsgICAgICAgICAgICAg ICBkZXZfZXJyKCZkZXYtPmRldiwgImFkZHItZ3Bpb3Mgb25seSBzdXBwb3J0ZWQgZm9yIG5tYXBz ID09IDFcbiIpOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gKyAgICAg ICB9Cj4gPiArCj4gPiAgICAgICAgIGVyciA9IHBoeXNtYXBfZmxhc2hfb2ZfaW5pdChkZXYpOwo+ ID4gICAgICAgICBpZiAoZXJyKQo+ID4gICAgICAgICAgICAgICAgIGVyciA9IHBoeXNtYXBfZmxh c2hfcGRhdGFfaW5pdChkZXYpOwo+ID4gQEAgLTM2OCwxMCArNTAzLDIwIEBAIHN0YXRpYyBpbnQg cGh5c21hcF9mbGFzaF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpCj4gPiAgICAg ICAgICAgICAgICAgaWYgKCFpbmZvLT5tYXBzW2ldLnBoeXMpCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICBpbmZvLT5tYXBzW2ldLnBoeXMgPSByZXMtPnN0YXJ0Owo+ID4KPiA+IC0gICAgICAg ICAgICAgICBpbmZvLT5tYXBzW2ldLnNpemUgPSByZXNvdXJjZV9zaXplKHJlcyk7Cj4gPiArICAg ICAgICAgICAgICAgaW5mby0+d2luX29yZGVyID0gZ2V0X2JpdG1hc2tfb3JkZXIocmVzb3VyY2Vf c2l6ZShyZXMpKSAtIDE7Cj4gPiArICAgICAgICAgICAgICAgaW5mby0+bWFwc1tpXS5zaXplID0g QklUKGluZm8tPndpbl9vcmRlciArCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpbmZvLT5ncGlvcyA/Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbmZvLT5ncGlvcy0+bmRlc2NzIDogMCkpOwo+ID4gKwo+ID4gICAgICAg ICAgICAgICAgIGluZm8tPm1hcHNbaV0ubWFwX3ByaXZfMSA9ICh1bnNpZ25lZCBsb25nKWRldjsK PiA+Cj4gPiAtICAgICAgICAgICAgICAgc2ltcGxlX21hcF9pbml0KCZpbmZvLT5tYXBzW2ldKTsK PiA+ICsgICAgICAgICAgICAgICBpZiAoaW5mby0+Z3Bpb3MpIHsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGVyciA9IHBoeXNtYXBfYWRkcl9ncGlvc19tYXBfaW5pdCgmaW5mby0+bWFwc1tp XSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQ7Cj4gPiArICAgICAgICAgICAgICAgfSBl bHNlIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHNpbXBsZV9tYXBfaW5pdCgmaW5mby0+ bWFwc1tpXSk7Cj4gPiArICAgICAgICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgICAgICAgICBw cm9iZV90eXBlID0gcm9tX3Byb2JlX3R5cGVzOwo+ID4gICAgICAgICAgICAgICAgIGlmICghaW5m by0+cHJvYmVfdHlwZSkgewo+ID4gQEAgLTQ5Niw2ICs2NDEsNyBAQCBtb2R1bGVfZXhpdChwaHlz bWFwX2V4aXQpOwo+ID4gIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPiA+ICBNT0RVTEVfQVVUSE9S KCJEYXZpZCBXb29kaG91c2UgPGR3bXcyQGluZnJhZGVhZC5vcmc+Iik7Cj4gPiAgTU9EVUxFX0FV VEhPUigiVml0YWx5IFdvb2wgPHZ3b29sQHJ1Lm12aXN0YS5jb20+Iik7Cj4gPiArTU9EVUxFX0FV VEhPUigiTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPiIpOwo+ID4gIE1PRFVMRV9E RVNDUklQVElPTigiR2VuZXJpYyBjb25maWd1cmFibGUgTVREIG1hcCBkcml2ZXIiKTsKPiA+Cj4g PiAgLyogbGVnYWN5IHBsYXRmb3JtIGRyaXZlcnMgY2FuJ3QgaG90cGx1ZyBvciBjb2xkcGxnICov Cj4gPiAtLQo+ID4gMi4xNC4xCj4gPiAgCj4gCj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4IE1URCBkaXNjdXNzaW9uIG1haWxp bmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LW10ZC8K