From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Breana, Tiberiu A" To: Daniel Baluta , Jonathan Cameron CC: "linux-iio@vger.kernel.org" Subject: RE: [PATCH 2/2] iio: temperature: Add threshold interrupt support for max31722 Date: Mon, 14 Mar 2016 15:06:29 +0000 Message-ID: <4586F61A4A291F4DA44D32824E7C0F4023568C54@IRSMSX109.ger.corp.intel.com> References: <1457530252-4984-1-git-send-email-tiberiu.a.breana@intel.com> <1457530252-4984-3-git-send-email-tiberiu.a.breana@intel.com> <56E3ECC6.5010808@kernel.org> In-Reply-To: Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 List-ID: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBEYW5pZWwgQmFsdXRhIFttYWls dG86ZGFuaWVsLmJhbHV0YUBnbWFpbC5jb21dDQo+IFNlbnQ6IE1vbmRheSwgTWFyY2ggMTQsIDIw MTYgMjoyNiBQTQ0KPiBUbzogSm9uYXRoYW4gQ2FtZXJvbiA8amljMjNAa2VybmVsLm9yZz4NCj4g Q2M6IEJyZWFuYSwgVGliZXJpdSBBIDx0aWJlcml1LmEuYnJlYW5hQGludGVsLmNvbT47IGxpbnV4 LQ0KPiBpaW9Admdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMi8yXSBpaW86 IHRlbXBlcmF0dXJlOiBBZGQgdGhyZXNob2xkIGludGVycnVwdCBzdXBwb3J0DQo+IGZvciBtYXgz MTcyMg0KPiANCj4gT24gU2F0LCBNYXIgMTIsIDIwMTYgYXQgMTI6MTcgUE0sIEpvbmF0aGFuIENh bWVyb24gPGppYzIzQGtlcm5lbC5vcmc+DQo+IHdyb3RlOg0KPiA+IE9uIDA5LzAzLzE2IDEzOjMw LCBUaWJlcml1IEJyZWFuYSB3cm90ZToNCj4gPj4gQWRkZWQgaW50ZXJydXB0IHN1cHBvcnQgZm9y IGhpZ2gvbG93IHRlbXBlcmF0dXJlIHRocmVzaG9sZCBldmVudHMgdG8NCj4gPj4gdGhlIG1heDMx NzIyIGRyaXZlci4NCj4gPj4NCj4gPj4gU2lnbmVkLW9mZi1ieTogVGliZXJpdSBCcmVhbmEgPHRp YmVyaXUuYS5icmVhbmFAaW50ZWwuY29tPg0KPiA+IE9ubHkgY29tbWVudCBpbiBoZXJlIGlzIHRo YXQgeW91IG1pZ2h0IGJlIGJldHRlciBvZmYgcmVwb3J0aW5nIHRoZQ0KPiA+IGV2ZW50IGRpcmVj dGlvbiBhcyBJSU9fRVZFTlRfRElSX0VJVEhFUiBhbmQgbGVhdmluZyB0aGUgZmlndXJpbmcgb3V0 DQo+ID4gd2hpY2ggY2FzZSBvY2N1cmVkIHRvIHVzZXJzcGFjZS4NCj4gPg0KPiA+IFRoaXMgY2Fz ZSBpcyBpcml0YXRpbmdseSBjb21tb24hDQo+ID4NCj4gPiBKb25hdGhhbg0KPiA+PiAtLS0NCj4g Pj4gIGRyaXZlcnMvaWlvL3RlbXBlcmF0dXJlL21heDMxNzIyLmMgfCAzMDMNCj4gPj4gKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQ0KPiA+PiAgMSBmaWxlIGNoYW5nZWQsIDMw MSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9paW8vdGVtcGVyYXR1cmUvbWF4MzE3MjIuYw0KPiA+PiBiL2RyaXZlcnMvaWlvL3Rl bXBlcmF0dXJlL21heDMxNzIyLmMNCj4gPj4gaW5kZXggZmE4MzNiNi4uYThiZmUzNSAxMDA2NDQN Cj4gPj4gLS0tIGEvZHJpdmVycy9paW8vdGVtcGVyYXR1cmUvbWF4MzE3MjIuYw0KPiA+PiArKysg Yi9kcml2ZXJzL2lpby90ZW1wZXJhdHVyZS9tYXgzMTcyMi5jDQo+ID4+IEBAIC0xMCwyMSArMTAs MzIgQEANCj4gPj4NCj4gPj4gICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4gPj4gICNpbmNs dWRlIDxsaW51eC9hY3BpLmg+DQo+ID4+ICsjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5o Pg0KPiA+PiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPiA+PiAgI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPg0KPiA+PiAgI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPg0KPiA+PiAgI2lu Y2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4NCj4gPj4gKyNpbmNsdWRlIDxsaW51eC9paW8vZXZlbnRz Lmg+DQo+ID4+ICAjaW5jbHVkZSA8bGludXgvaWlvL2lpby5oPg0KPiA+PiAgI2luY2x1ZGUgPGxp bnV4L2lpby9zeXNmcy5oPg0KPiA+Pg0KPiA+PiAgI2RlZmluZSBNQVgzMTcyMl9SRUdfQ0ZHICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwDQo+ID4+ICAjZGVmaW5lIE1BWDMxNzIyX1JF R19URU1QX0xTQiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDENCj4gPj4gICNkZWZpbmUgTUFY MzE3MjJfUkVHX1RFTVBfTVNCICAgICAgICAgICAgICAgICAgICAgICAgMHgwMg0KPiA+PiArI2Rl ZmluZSBNQVgzMTcyMl9SRUdfVEhJR0hfTFNCICAgICAgICAgMHgwMw0KPiA+PiArI2RlZmluZSBN QVgzMTcyMl9SRUdfVExPV19MU0IgICAgICAgICAgMHgwNQ0KPiA+PiAgI2RlZmluZSBNQVgzMTcy Ml9NQVhfUkVHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2DQo+ID4+DQo+ID4+ICAj ZGVmaW5lIE1BWDMxNzIyX01PREVfQ09OVElOVU9VUyAgICAgICAgICAgICAweDAwDQo+ID4+ICAj ZGVmaW5lIE1BWDMxNzIyX01PREVfU1RBTkRCWSAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEN Cj4gPj4gKyNkZWZpbmUgTUFYMzE3MjJfTU9ERV9USEVSTU9TVEFUICAgICAgIDB4ODANCj4gPj4g Kw0KPiA+PiArI2RlZmluZSBNQVgzMTcyMl9NSU5fVEVNUCAgICAgICAgICAtNTUNCj4gPj4gKyNk ZWZpbmUgTUFYMzE3MjJfTUFYX1RFTVAgICAgICAgICAgMTI1DQo+ID4+DQo+ID4+ICAjZGVmaW5l IE1BWDMxNzIyX1JFR01BUF9OQU1FICAgICAgICAgICAgICAgICAibWF4MzE3MjJfcmVnbWFwIg0K PiA+PiArI2RlZmluZSBNQVgzMTcyMl9FVkVOVCAgICAgICAgICAgICAibWF4MzE3MjJfZXZlbnQi DQo+ID4+ICsjZGVmaW5lIE1BWDMxNzIyX0dQSU8gICAgICAgICAgICAgICJtYXgzMTcyMl9ncGlv Ig0KPiA+Pg0KPiA+PiAgI2RlZmluZSBNQVgzMTcyMl9TQ0FMRV9BVkFJTEFCTEUgICAgICAgICAg ICAgIjAuNSAwLjI1IDAuMTI1IDAuMDYyNSINCj4gPj4NCj4gPj4gQEAgLTQzLDYgKzU0LDggQEAg c3RhdGljIGNvbnN0IHN0cnVjdCByZWdfZmllbGQNCj4gbWF4MzE3MjJfcmVnX2ZpZWxkX3N0YXRl ID0NCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0ZJRUxEKE1BWDMxNzIy X1JFR19DRkcsIDAsIDApOw0KPiA+PiBzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ19maWVsZCBtYXgz MTcyMl9yZWdfZmllbGRfcmVzb2x1dGlvbiA9DQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJFR19GSUVMRChNQVgzMTcyMl9SRUdfQ0ZHLCAxLCAyKTsNCj4gPj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgcmVnX2ZpZWxkIG1heDMxNzIyX3JlZ19maWVsZF90aGVybW9zdGF0ID0NCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0ZJRUxEKE1BWDMxNzIyX1JFR19D RkcsIDMsIDMpOw0KPiA+Pg0KPiA+PiAgc3RydWN0IG1heDMxNzIyX2RhdGEgew0KPiA+PiAgICAg ICBzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpX2RldmljZTsNCj4gPj4gQEAgLTUwLDYgKzYzLDggQEAg c3RydWN0IG1heDMxNzIyX2RhdGEgew0KPiA+PiAgICAgICBzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7 DQo+ID4+ICAgICAgIHN0cnVjdCByZWdtYXBfZmllbGQgKnJlZ19zdGF0ZTsNCj4gPj4gICAgICAg c3RydWN0IHJlZ21hcF9maWVsZCAqcmVnX3Jlc29sdXRpb247DQo+ID4+ICsgICAgIHN0cnVjdCBy ZWdtYXBfZmllbGQgKnJlZ190aGVybW9zdGF0Ow0KPiA+PiArICAgICB1NjQgdGltZXN0YW1wOw0K PiA+PiAgfTsNCj4gPj4NCj4gPj4gIC8qDQo+ID4+IEBAIC03MSwxMSArODYsMzAgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXANCj4gbWF4MzE3MjJfYXR0cmlidXRlX2dyb3Vw ID0gew0KPiA+PiAgICAgICAuYXR0cnMgPSBtYXgzMTcyMl9hdHRyaWJ1dGVzDQo+ID4+ICB9Ow0K PiA+Pg0KPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBpaW9fZXZlbnRfc3BlYyBtYXgzMTcyMl9l dmVudHNbXSA9IHsNCj4gPj4gKyAgICAgLyogSGlnaCB0ZW1wZXJhdHVyZSBldmVudCAqLw0KPiA+ PiArICAgICB7DQo+ID4+ICsgICAgICAgICAgICAgLnR5cGUgPSBJSU9fRVZfVFlQRV9USFJFU0gs DQo+ID4+ICsgICAgICAgICAgICAgLmRpciA9IElJT19FVl9ESVJfUklTSU5HLA0KPiA+PiArICAg ICAgICAgICAgIC5tYXNrX3NlcGFyYXRlID0gQklUKElJT19FVl9JTkZPX1ZBTFVFKSB8DQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoSUlPX0VWX0lORk9fRU5BQkxFKSwN Cj4gPj4gKyAgICAgfSwNCj4gPj4gKyAgICAgLyogTG93IHRlbXBlcmF0dXJlIGV2ZW50ICovDQo+ ID4+ICsgICAgIHsNCj4gPj4gKyAgICAgICAgICAgICAudHlwZSA9IElJT19FVl9UWVBFX1RIUkVT SCwNCj4gPj4gKyAgICAgICAgICAgICAuZGlyID0gSUlPX0VWX0RJUl9GQUxMSU5HLA0KPiA+PiAr ICAgICAgICAgICAgIC5tYXNrX3NlcGFyYXRlID0gQklUKElJT19FVl9JTkZPX1ZBTFVFKSB8DQo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoSUlPX0VWX0lORk9fRU5BQkxF KSwNCj4gPj4gKyAgICAgfSwNCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaWlvX2NoYW5fc3BlYyBtYXgzMTcyMl9jaGFubmVsc1tdID0gew0KPiA+PiAgICAgICB7 DQo+ID4+ICAgICAgICAgICAgICAgLnR5cGUgPSBJSU9fVEVNUCwNCj4gPj4gICAgICAgICAgICAg ICAuaW5mb19tYXNrX3NlcGFyYXRlID0gQklUKElJT19DSEFOX0lORk9fUkFXKSB8DQo+ID4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJVChJSU9fQ0hBTl9JTkZPX1NDQUxF KSwNCj4gPj4gKyAgICAgICAgICAgICAuZXZlbnRfc3BlYyA9IG1heDMxNzIyX2V2ZW50cywNCj4g Pj4gKyAgICAgICAgICAgICAubnVtX2V2ZW50X3NwZWNzID0gQVJSQVlfU0laRShtYXgzMTcyMl9l dmVudHMpLA0KPiA+PiAgICAgICB9LA0KPiA+PiAgfTsNCj4gPj4NCj4gPj4gQEAgLTE2Nyw2ICsy MDEsMTcyIEBAIHN0YXRpYyB2b2lkIG1heDMxNzIyX3JlZ190b19mbG9hdCh1MTYgcmVnX3ZhbCwN Cj4gaW50ICp2YWwsIGludCAqdmFsMikNCj4gPj4gICAgICAgfQ0KPiA+PiAgfQ0KPiA+Pg0KPiA+ PiArLyogQ29udmVydCBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIHRvIGEgcmVnaXN0ZXIgdmFsdWUu ICovIHN0YXRpYyB1MTYNCj4gPj4gK21heDMxNzIyX2Zsb2F0X3RvX3JlZyhpbnQgdmFsLCBpbnQg dmFsMikgew0KPiA+PiArICAgICBpbnQgaTsNCj4gPj4gKyAgICAgYm9vbCBuZWdhdGl2ZV9ucjsN Cj4gPj4gKyAgICAgdTggbHNiOw0KPiA+PiArICAgICB1MTYgcmVnX3ZhbDsNCj4gPj4gKw0KPiA+ PiArICAgICBuZWdhdGl2ZV9uciA9ICh2YWwgJiAweDgwKSB8fCB2YWwyIDwgMDsNCj4gPj4gKyAg ICAgaWYgKHZhbDIgPCAwKQ0KPiA+PiArICAgICAgICAgICAgIHZhbDIgKj0gLTE7DQo+ID4+ICsN Cj4gPj4gKyAgICAgLyoNCj4gPj4gKyAgICAgICogVGhlIExTQiB2YWx1ZSB3aWxsIGJlIGFuIGFw cHJveGltYXRpb24gb2YgdmFsMg0KPiA+PiArICAgICAgKiBkdWUgdG8gaXRzIGxpbWl0ZWQgNC1i aXQgcmFuZ2UuDQo+ID4+ICsgICAgICAqLw0KPiA+PiArICAgICBsc2IgPSAwOw0KPiA+PiArICAg ICBmb3IgKGkgPSAwIDsgaSA8IEFSUkFZX1NJWkUobWF4MzE3MjJfc2NhbGVfdGFibGUpICYmIHZh bDIgPiAwOyBpKyspDQo+ID4+ICsgICAgICAgICAgICAgaWYgKHZhbDIgLSBtYXgzMTcyMl9zY2Fs ZV90YWJsZVtpXSA+PSAwKSB7DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICB2YWwyIC09IG1h eDMxNzIyX3NjYWxlX3RhYmxlW2ldOw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgbHNiICs9 IDEgPDwgKDQgLSBpIC0gMSk7DQo+ID4+ICsgICAgICAgICAgICAgfQ0KPiA+PiArICAgICBsc2Ig PDw9IDQ7DQo+ID4+ICsNCj4gPj4gKyAgICAgaWYgKG5lZ2F0aXZlX25yKSB7DQo+ID4+ICsgICAg ICAgICAgICAgLyoNCj4gPj4gKyAgICAgICAgICAgICAgKiBOZWdhdGl2ZSB2YWx1ZS4gVGVtcG9y YXJpbHkgdXNlIHRoZSBjb21wbGVtZW50IG9mIHZhbCBmb3INCj4gPj4gKyAgICAgICAgICAgICAg KiB0aGUgTVNCLCB0aGVuIGNvbmNhdGVuYXRlIHRoZSBMU0IsIHJldmVyc2UgYml0cyAmIGFkZCAx IGZvcg0KPiA+PiArICAgICAgICAgICAgICAqIHRoZSBmaW5hbCB2YWx1ZS4NCj4gPj4gKyAgICAg ICAgICAgICAgKi8NCj4gPj4gKyAgICAgICAgICAgICB1OCBtc2IgPSAodTgpKC0xICogdmFsKTsN Cj4gPj4gKyAgICAgICAgICAgICB1MTYgcmV2ID0gMDsNCj4gPj4gKyAgICAgICAgICAgICBpbnQg bnVtX2JpdHMgPSBzaXplb2YocmV2KSAqIDg7DQo+ID4+ICsNCj4gPj4gKyAgICAgICAgICAgICBy ZWdfdmFsID0gKG1zYiA8PCA4KSB8IGxzYjsNCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAgIGZv ciAoaSA9IDAgOyBpIDwgbnVtX2JpdHMgOyBpKyspIHsNCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgIHJldiB8PSAhKHJlZ192YWwgJiAweDAxKSA8PCBpOw0KPiA+PiArICAgICAgICAgICAgICAg ICAgICAgcmVnX3ZhbCA+Pj0gMTsNCj4gPj4gKyAgICAgICAgICAgICB9DQo+ID4+ICsgICAgICAg ICAgICAgcmV2ICs9IDE7DQo+ID4+ICsgICAgICAgICAgICAgcmV0dXJuIHJldjsNCj4gPj4gKw0K PiA+PiArICAgICB9IGVsc2Ugew0KPiA+PiArICAgICAgICAgICAgIHJlZ192YWwgPSAoKHU4KXZh bCA8PCA4KSB8IGxzYjsNCj4gPj4gKyAgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgIHJldHVybiBy ZWdfdmFsOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtzdGF0aWMgaW50IG1heDMxNzIyX3JlYWRf ZXZlbnRfY29uZmlnKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjICpjaGFu LA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGlpb19ldmVu dF90eXBlIHR5cGUsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu dW0gaWlvX2V2ZW50X2RpcmVjdGlvbiBkaXIpIHsNCj4gPj4gKyAgICAgdW5zaWduZWQgaW50IGV2 ZW50X3ZhbDsNCj4gPj4gKyAgICAgaW50IHJldDsNCj4gPj4gKyAgICAgc3RydWN0IG1heDMxNzIy X2RhdGEgKmRhdGEgPSBpaW9fcHJpdihpbmRpb19kZXYpOw0KPiA+PiArICAgICBzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpID0gZGF0YS0+c3BpX2RldmljZTsNCj4gPj4gKw0KPiA+PiArICAgICBtdXRl eF9sb2NrKCZkYXRhLT5sb2NrKTsNCj4gPj4gKyAgICAgcmV0ID0gcmVnbWFwX2ZpZWxkX3JlYWQo ZGF0YS0+cmVnX3RoZXJtb3N0YXQsICZldmVudF92YWwpOw0KPiA+PiArICAgICBpZiAocmV0IDwg MCkgew0KPiA+PiArICAgICAgICAgICAgIGRldl9lcnIoJnNwaS0+ZGV2LCAiZmFpbGVkIHRvIHJl YWQgdGhlcm1vc3RhdCBzdGF0dXNcbiIpOw0KPiA+PiArICAgICAgICAgICAgIG11dGV4X3VubG9j aygmZGF0YS0+bG9jayk7DQo+ID4+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPj4gKyAg ICAgfQ0KPiA+PiArICAgICBtdXRleF91bmxvY2soJmRhdGEtPmxvY2spOw0KPiA+PiArDQo+ID4+ ICsgICAgIHJldHVybiBldmVudF92YWw7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gK3N0YXRpYyBp bnQgbWF4MzE3MjJfd3JpdGVfZXZlbnRfY29uZmlnKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYs DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg aWlvX2NoYW5fc3BlYyAqY2hhbiwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVudW0gaWlvX2V2ZW50X3R5cGUgdHlwZSwNCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVudW0gaWlvX2V2ZW50X2RpcmVjdGlvbiBkaXIsDQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdGUpIHsNCj4gPj4gKyAg ICAgaW50IHJldDsNCj4gPj4gKyAgICAgc3RydWN0IG1heDMxNzIyX2RhdGEgKmRhdGEgPSBpaW9f cHJpdihpbmRpb19kZXYpOw0KPiA+PiArICAgICBzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpID0gZGF0 YS0+c3BpX2RldmljZTsNCj4gPj4gKw0KPiA+PiArICAgICBpZiAoc3RhdGUgIT0gMCAmJiBzdGF0 ZSAhPSAxKQ0KPiA+PiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+PiArDQo+ID4+ ICsgICAgIC8qDQo+ID4+ICsgICAgICAqIFNldCB0aGVybW9zdGF0IG1vZGU6DQo+ID4+ICsgICAg ICAqIDAgOiBjb21wYXJhdG9yIG1vZGUgKGRlZmF1bHQpDQo+ID4+ICsgICAgICAqIDEgOiBpbnRl cnJ1cHQgbW9kZQ0KPiA+PiArICAgICAgKi8NCj4gPj4gKyAgICAgbXV0ZXhfbG9jaygmZGF0YS0+ bG9jayk7DQo+ID4+ICsgICAgIHJldCA9IHJlZ21hcF9maWVsZF93cml0ZShkYXRhLT5yZWdfdGhl cm1vc3RhdCwgc3RhdGUpOw0KPiA+PiArICAgICBpZiAocmV0IDwgMCkNCj4gPj4gKyAgICAgICAg ICAgICBkZXZfZXJyKCZzcGktPmRldiwgImZhaWxlZCB0byBzZXQgdGhlcm1vc3RhdCBtb2RlXG4i KTsNCj4gPj4gKyAgICAgbXV0ZXhfdW5sb2NrKCZkYXRhLT5sb2NrKTsNCj4gPj4gKw0KPiA+PiAr ICAgICByZXR1cm4gcmV0Ow0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtzdGF0aWMgaW50IG1heDMx NzIyX3JlYWRfZXZlbnQoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwNCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyAqY2hhbiwNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGlpb19ldmVudF90eXBlIHR5cGUs DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpaW9fZXZlbnRfZGlyZWN0 aW9uIGRpciwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGlpb19ldmVu dF9pbmZvIGluZm8sDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp2YWws IGludCAqdmFsMikgew0KPiA+PiArICAgICBpbnQgcmV0Ow0KPiA+PiArICAgICB1OCByZWc7DQo+ ID4+ICsgICAgIHUxNiBidWY7DQo+ID4+ICsgICAgIHN0cnVjdCBtYXgzMTcyMl9kYXRhICpkYXRh ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4gPj4gKw0KPiA+PiArICAgICBpZiAoaW5mbyAhPSBJ SU9fRVZfSU5GT19WQUxVRSkNCj4gPj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4g Pj4gKw0KPiA+PiArICAgICBpZiAoZGlyID09IElJT19FVl9ESVJfUklTSU5HKQ0KPiA+PiArICAg ICAgICAgICAgIHJlZyA9IE1BWDMxNzIyX1JFR19USElHSF9MU0I7DQo+ID4+ICsgICAgIGVsc2Ug aWYgKGRpciA9PSBJSU9fRVZfRElSX0ZBTExJTkcpDQo+ID4+ICsgICAgICAgICAgICAgcmVnID0g TUFYMzE3MjJfUkVHX1RMT1dfTFNCOw0KPiA+PiArICAgICBlbHNlDQo+ID4+ICsgICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4+ICsNCj4gPj4gKyAgICAgbXV0ZXhfbG9jaygmZGF0YS0+ bG9jayk7DQo+ID4+ICsgICAgIHJldCA9IHJlZ21hcF9idWxrX3JlYWQoZGF0YS0+cmVnbWFwLCBy ZWcsICZidWYsIDIpOw0KPiA+PiArICAgICBtdXRleF91bmxvY2soJmRhdGEtPmxvY2spOw0KPiA+ PiArICAgICBpZiAocmV0IDwgMCkgew0KPiA+PiArICAgICAgICAgICAgIGRldl9lcnIoJmRhdGEt PnNwaV9kZXZpY2UtPmRldiwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8g cmVhZCB0aHJlc2hvbGQgcmVnaXN0ZXJcbiIpOw0KPiA+PiArICAgICAgICAgICAgIHJldHVybiBy ZXQ7DQo+ID4+ICsgICAgIH0NCj4gPj4gKyAgICAgbWF4MzE3MjJfcmVnX3RvX2Zsb2F0KGJ1Ziwg dmFsLCB2YWwyKTsNCj4gPj4gKw0KPiA+PiArICAgICByZXR1cm4gSUlPX1ZBTF9JTlRfUExVU19N SUNSTzsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArc3RhdGljIGludCBtYXgzMTcyMl93cml0ZV9l dmVudChzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LA0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyAqY2hhbiwNCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpaW9fZXZlbnRfdHlwZSB0eXBlLA0KPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGlpb19ldmVudF9kaXJlY3Rpb24gZGly LA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGlpb19ldmVudF9pbmZv IGluZm8sDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWwsIGludCB2 YWwyKSB7DQo+ID4+ICsgICAgIGludCByZXQ7DQo+ID4+ICsgICAgIHU4IHJlZzsNCj4gPj4gKyAg ICAgdTE2IGJ1ZjsNCj4gPj4gKyAgICAgc3RydWN0IG1heDMxNzIyX2RhdGEgKmRhdGEgPSBpaW9f cHJpdihpbmRpb19kZXYpOw0KPiA+PiArDQo+ID4+ICsgICAgIGlmICh2YWwgPCBNQVgzMTcyMl9N SU5fVEVNUCB8fCB2YWwgPiBNQVgzMTcyMl9NQVhfVEVNUCkNCj4gPj4gKyAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsNCj4gPj4gKw0KPiA+PiArICAgICBpZiAoZGlyID09IElJT19FVl9ESVJf UklTSU5HKQ0KPiA+PiArICAgICAgICAgICAgIHJlZyA9IE1BWDMxNzIyX1JFR19USElHSF9MU0I7 DQo+ID4+ICsgICAgIGVsc2UgaWYgKGRpciA9PSBJSU9fRVZfRElSX0ZBTExJTkcpDQo+ID4+ICsg ICAgICAgICAgICAgcmVnID0gTUFYMzE3MjJfUkVHX1RMT1dfTFNCOw0KPiA+PiArICAgICBlbHNl DQo+ID4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4+ICsNCj4gPj4gKyAgICAg YnVmID0gbWF4MzE3MjJfZmxvYXRfdG9fcmVnKHZhbCwgdmFsMik7DQo+ID4+ICsNCj4gPj4gKyAg ICAgcmV0ID0gcmVnbWFwX2J1bGtfd3JpdGUoZGF0YS0+cmVnbWFwLCByZWcsICZidWYsIDIpOw0K PiA+PiArICAgICBpZiAocmV0IDwgMCkNCj4gPj4gKyAgICAgICAgICAgICBkZXZfZXJyKCZkYXRh LT5zcGlfZGV2aWNlLT5kZXYsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRv IHdyaXRlIHRocmVzaG9sZCByZWdpc3RlclxuIik7DQo+ID4+ICsNCj4gPj4gKyAgICAgcmV0dXJu IHJldDsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiAgc3RhdGljIGludCBtYXgzMTcyMl9yZWFkX3Jh dyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LA0KPiA+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBjb25zdCAqY2hhbiwNCj4gPj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50ICp2YWwsIGludCAqdmFsMiwgbG9uZyBtYXNrKSBAQCAtMjQxLDgN Cj4gPj4gKzQ0MSw2MyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19pbmZvIG1heDMxNzIyX2lu Zm8gPSB7DQo+ID4+ICAgICAgIC5yZWFkX3JhdyAgICAgICAgICAgICAgID0gbWF4MzE3MjJfcmVh ZF9yYXcsDQo+ID4+ICAgICAgIC53cml0ZV9yYXcgICAgICAgICAgICAgID0gbWF4MzE3MjJfd3Jp dGVfcmF3LA0KPiA+PiAgICAgICAuYXR0cnMgICAgICAgICAgICAgICAgICA9ICZtYXgzMTcyMl9h dHRyaWJ1dGVfZ3JvdXAsDQo+ID4+ICsgICAgIC5yZWFkX2V2ZW50X3ZhbHVlICAgICAgID0gbWF4 MzE3MjJfcmVhZF9ldmVudCwNCj4gPj4gKyAgICAgLndyaXRlX2V2ZW50X3ZhbHVlICAgICAgPSBt YXgzMTcyMl93cml0ZV9ldmVudCwNCj4gPj4gKyAgICAgLnJlYWRfZXZlbnRfY29uZmlnICAgICAg PSBtYXgzMTcyMl9yZWFkX2V2ZW50X2NvbmZpZywNCj4gPj4gKyAgICAgLndyaXRlX2V2ZW50X2Nv bmZpZyAgICAgPSBtYXgzMTcyMl93cml0ZV9ldmVudF9jb25maWcsDQo+ID4+ICB9Ow0KPiA+Pg0K PiA+PiArc3RhdGljIGlycXJldHVybl90IG1heDMxNzIyX2lycV9oYW5kbGVyKGludCBpcnEsIHZv aWQgKnByaXZhdGUpIHsNCj4gPj4gKyAgICAgc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IHBy aXZhdGU7DQo+ID4+ICsgICAgIHN0cnVjdCBtYXgzMTcyMl9kYXRhICpkYXRhID0gaWlvX3ByaXYo aW5kaW9fZGV2KTsNCj4gPj4gKw0KPiA+PiArICAgICBkYXRhLT50aW1lc3RhbXAgPSBpaW9fZ2V0 X3RpbWVfbnMoKTsNCj4gPj4gKw0KPiA+PiArICAgICByZXR1cm4gSVJRX1dBS0VfVEhSRUFEOw0K PiA+PiArfQ0KPiA+PiArDQo+ID4+ICtzdGF0aWMgaXJxcmV0dXJuX3QgbWF4MzE3MjJfaXJxX2V2 ZW50X2hhbmRsZXIoaW50IGlycSwgdm9pZA0KPiA+PiArKnByaXZhdGUpIHsNCj4gPj4gKyAgICAg aW50IHJldDsNCj4gPj4gKyAgICAgdTY0IGV2ZW50Ow0KPiA+PiArICAgICB1MTYgdGVtcDsNCj4g Pj4gKyAgICAgdTE2IHRsb3c7DQo+ID4+ICsgICAgIHUxNiB0aGlnaDsNCj4gPj4gKyAgICAgdW5z aWduZWQgaW50IGRpcjsNCj4gPj4gKyAgICAgc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IHBy aXZhdGU7DQo+ID4+ICsgICAgIHN0cnVjdCBtYXgzMTcyMl9kYXRhICpkYXRhID0gaWlvX3ByaXYo aW5kaW9fZGV2KTsNCj4gPj4gKw0KPiA+PiArICAgICAvKg0KPiA+PiArICAgICAgKiBEbyBhIHF1 aWNrIHRlbXBlcmF0dXJlIHJlYWRpbmcgYW5kIGNvbXBhcmUgaXQgd2l0aCBUTE9XL1RISUdIDQo+ ID4+ICsgICAgICAqIHNvIHdlIGNhbiB0ZWxsIHdoaWNoIHRocmVzaG9sZCBoYXMgYmVlbiBtZXQu DQo+ID4gSG1tLiBNaWdodCBlbmQgdXAgZGV0ZWN0aW5nIG5laXRoZXIgb2NjdXJlZCBpZiB0aGUg Y29uZGl0aW9uIGlzIG5vDQo+ID4gbG9uZ2VyIG1ldC4gIElyaXRhdGluZyBoYXJkd2FyZSENCj4g Pg0KPiA+IFdlIGRvIGhhdmUgdGhlICdtYWdpYycgb3B0aW9uIG9mIElJT19FVl9ESVJfRUlUSEVS IHRvIHNwZWNpZnkgdGhhdCB3ZQ0KPiA+IGRvbid0IGtub3cgd2hpY2ggb25lIG9jY3VyZWQuICBU aGUgaWRlYSBvZiB0aGF0IGhhcyBhbHdheXMgYmVlbiB0aGF0DQo+ID4gdXNlcnNwYWNlIGNhbiBl bGVjdCB0byBkbyB3aGF0IHlvdSBoYXZlIGhlcmUgaWYgaXQgY2FyZXMgcmF0aGVyIHRoYW4NCj4g PiBwdXNoaW5nIHRoaXMgY29kZSBpbnRvIGRyaXZlcnMuDQo+ID4+ICsgICAgICAqLw0KPiA+PiAr ICAgICBtdXRleF9sb2NrKCZkYXRhLT5sb2NrKTsNCj4gPj4gKyAgICAgcmV0ID0gcmVnbWFwX2J1 bGtfcmVhZChkYXRhLT5yZWdtYXAsIE1BWDMxNzIyX1JFR19URU1QX0xTQiwNCj4gJnRlbXAsIDIp Ow0KPiA+PiArICAgICBpZiAocmV0IDwgMCkNCj4gPj4gKyAgICAgICAgICAgICBnb3RvIGV4aXRf ZXJyOw0KPiA+PiArICAgICByZXQgPSByZWdtYXBfYnVsa19yZWFkKGRhdGEtPnJlZ21hcCwgTUFY MzE3MjJfUkVHX1RMT1dfTFNCLA0KPiAmdGxvdywgMik7DQo+ID4+ICsgICAgIGlmIChyZXQgPCAw KQ0KPiA+PiArICAgICAgICAgICAgIGdvdG8gZXhpdF9lcnI7DQo+ID4+ICsgICAgIHJldCA9IHJl Z21hcF9idWxrX3JlYWQoZGF0YS0+cmVnbWFwLCBNQVgzMTcyMl9SRUdfVEhJR0hfTFNCLA0KPiAm dGhpZ2gsIDIpOw0KPiA+PiArICAgICBpZiAocmV0IDwgMCkNCj4gPj4gKyAgICAgICAgICAgICBn b3RvIGV4aXRfZXJyOw0KPiA+PiArICAgICBtdXRleF91bmxvY2soJmRhdGEtPmxvY2spOw0KPiA+ PiArDQo+ID4+ICsgICAgIGRpciA9ICh0ZW1wID4gdGhpZ2ggPyAxIDogMCk7DQo+ID4+ICsgICAg IGV2ZW50ID0gSUlPX1VOTU9EX0VWRU5UX0NPREUoSUlPX1RFTVAsIDAsDQo+IElJT19FVl9UWVBF X1RIUkVTSCwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGlyID8g SUlPX0VWX0RJUl9SSVNJTkcgOg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJSU9fRVZfRElSX0ZBTExJTkcpKTsNCj4gPj4gKyAgICAgaWlvX3B1c2hfZXZl bnQoaW5kaW9fZGV2LCBldmVudCwgZGF0YS0+dGltZXN0YW1wKTsNCj4gPj4gKw0KPiA+PiArICAg ICByZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ID4+ICsNCj4gPj4gK2V4aXRfZXJyOg0KPiA+PiArICAg ICBkZXZfZXJyKCZkYXRhLT5zcGlfZGV2aWNlLT5kZXYsICJmYWlsZWQgdG8gcmVhZCB0ZW1wZXJh dHVyZQ0KPiByZWdpc3RlclxuIik7DQo+ID4+ICsgICAgIG11dGV4X3VubG9jaygmZGF0YS0+bG9j ayk7DQo+ID4+ICsgICAgIHJldHVybiByZXQ7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gIHN0YXRp YyBpbnQgbWF4MzE3MjJfaW5pdChzdHJ1Y3QgbWF4MzE3MjJfZGF0YSAqZGF0YSkgIHsNCj4gPj4g ICAgICAgaW50IHJldCA9IDA7DQo+ID4+IEBAIC0yNTksMTUgKzUxNCw0MCBAQCBzdGF0aWMgaW50 IG1heDMxNzIyX2luaXQoc3RydWN0IG1heDMxNzIyX2RhdGENCj4gPj4gKmRhdGEpDQo+ID4+DQo+ ID4+ICAgICAgIE1BWDMxNzIyX1JFR0ZJRUxEKHN0YXRlKTsNCj4gPj4gICAgICAgTUFYMzE3MjJf UkVHRklFTEQocmVzb2x1dGlvbik7DQo+ID4+ICsgICAgIE1BWDMxNzIyX1JFR0ZJRUxEKHRoZXJt b3N0YXQpOw0KPiA+Pg0KPiA+PiAgICAgICAvKiBTZXQgU0QgYml0IHRvIDAgc28gd2UgY2FuIGhh dmUgY29udGludW91cyBtZWFzdXJlbWVudHMuICovDQo+ID4+ICAgICAgIHJldCA9IHJlZ21hcF9m aWVsZF93cml0ZShkYXRhLT5yZWdfc3RhdGUsDQo+ID4+IE1BWDMxNzIyX01PREVfQ09OVElOVU9V Uyk7DQo+ID4+ICsgICAgIGlmIChyZXQgPCAwKSB7DQo+ID4+ICsgICAgICAgICAgICAgZGV2X2Vy cigmc3BpLT5kZXYsICJmYWlsZWQgdG8gY29uZmlndXJlIHNlbnNvci5cbiIpOw0KPiA+PiArICAg ICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4+ICsgICAgIH0NCj4gPj4gKw0KPiA+PiArICAgICAv KiBTZXQgdGhlcm1vc3RhdCBpbnRlcnJ1cHQgbW9kZSAqLw0KPiA+PiArICAgICByZXQgPSByZWdt YXBfZmllbGRfd3JpdGUoZGF0YS0+cmVnX3RoZXJtb3N0YXQsIDEpOw0KPiA+PiAgICAgICBpZiAo cmV0IDwgMCkNCj4gPj4gICAgICAgICAgICAgICBkZXZfZXJyKCZzcGktPmRldiwgImZhaWxlZCB0 byBjb25maWd1cmUgc2Vuc29yLlxuIik7DQo+ID4+DQo+ID4+ICAgICAgIHJldHVybiByZXQ7DQo+ ID4+ICB9DQo+ID4+DQo+ID4+ICtzdGF0aWMgaW50IG1heDMxNzIyX2dwaW9fcHJvYmUoc3RydWN0 IHNwaV9kZXZpY2UgKnNwaSkgew0KPiA+PiArICAgICBzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvOw0K PiA+PiArDQo+ID4+ICsgICAgIGlmICghc3BpKQ0KPiA+PiArICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOw0KPiA+PiArDQo+ID4+ICsgICAgIC8qIGdwaW8gaW50ZXJydXB0IHBpbiAqLw0KPiA+ PiArICAgICBncGlvID0gZGV2bV9ncGlvZF9nZXRfaW5kZXgoJnNwaS0+ZGV2LCBNQVgzMTcyMl9H UElPLCAwLA0KPiBHUElPRF9JTik7DQo+ID4+ICsgICAgIGlmIChJU19FUlIoZ3BpbykpIHsNCj4g Pj4gKyAgICAgICAgICAgICBkZXZfZXJyKCZzcGktPmRldiwgImdwaW8gcmVxdWVzdCBmYWlsZWQu XG4iKTsNCj4gPj4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihncGlvKTsNCj4gPj4gKyAg ICAgfQ0KPiA+IElmIHRoaXMgaXMgYW4gaW50ZXJydXB0LCB3aHkgYXJlIHdlIHNwZWNpZnlpbmcg aXQgYXMgYSBncGlvPw0KPiANCj4gSXQgaXMgYW4gaW50ZXJydXB0IHJlcXVlc3RlZCBvbiBhIEdQ SU8gcGluLiBJc24ndCB0aGlzIHRoZSBzdGFuZGFyZCB3YXkgb2YNCj4gbWFwcGluZyBhIEdQSU8g cGluIHRvIGFuIElSUT8gQW55aG93LCBhcyBleHBsYWluZWQgYmVsb3cgdGhpcyBpcyBubyBsb25n ZXINCj4gbmVlZGVkLg0KDQpBY3R1YWxseSwgd2l0aG91dCBjYWxsaW5nIGRldm1fZ3Bpb2RfZ2V0 X2luZGV4LCB3aGljaCBldmVudHVhbGx5IGNhbGxzIGdwaW9kX3JlcXVlc3QsDQpJJ20gdW5hYmxl IHRvIHJlY2VpdmUgaW50ZXJydXB0cy4NCg0KPiANCj4gPj4gKw0KPiA+PiArICAgICByZXR1cm4g Z3Bpb2RfdG9faXJxKGdwaW8pOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICBzdGF0aWMgaW50IG1h eDMxNzIyX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpICB7DQo+ID4+ICAgICAgIGludCBy ZXQ7DQo+ID4+IEBAIC0yOTQsMTUgKzU3NCwzNCBAQCBzdGF0aWMgaW50IG1heDMxNzIyX3Byb2Jl KHN0cnVjdCBzcGlfZGV2aWNlDQo+ID4+ICpzcGkpDQo+ID4+DQo+ID4+ICAgICAgIHJldCA9IG1h eDMxNzIyX2luaXQoZGF0YSk7DQo+ID4+ICAgICAgIGlmIChyZXQgPCAwKQ0KPiA+PiAtICAgICAg ICAgICAgIHJldHVybiByZXQ7DQo+ID4+ICsgICAgICAgICAgICAgZ290byBlcnJfc3RhbmRieTsN Cj4gPj4gKw0KPiA+PiArICAgICByZXQgPSBtYXgzMTcyMl9ncGlvX3Byb2JlKGRhdGEtPnNwaV9k ZXZpY2UpOw0KPiA+PiArICAgICBpZiAocmV0IDwgMCkNCj4gPj4gKyAgICAgICAgICAgICBnb3Rv IGVycl9zdGFuZGJ5Ow0KPiA+PiArDQo+ID4+ICsgICAgIHNwaS0+aXJxID0gcmV0Ow0KPiANCj4g SWYgQUNQSSBvciBEVCBpcyBwcm9wZXJseSBjb25maWd1cmVkIHNwaS0+aXJxIHNob3VsZCBhbHJl YWR5IGNvbnRhaW4gdGhlDQo+IGNvcnJlY3QgaXJxIG51bWJlci4gV2UgdXNlZCB0aGUgZ3Bpb19w cm9iZSBhcHByb2FjaCB3aGVuIEFDUEkgZGlkbid0DQo+IHNhdmUgdGhlIGludGVycnVwdCBudW1i ZXIuIE5ld2VyIGtlcm5lbCB2ZXJzaW9uIHNob3VsZG4ndCBoYXZlIHRoaXMNCj4gcHJvYmxlbS4N Cj4NCg0KVGhlIEFDUEkgY29yZSBpcyBpbmRlZWQgYWxsb2NhdGluZyBhIHZhbGlkIHNwaS0+aXJx IG51bWJlciwgaG93ZXZlciwgZ3Bpbw0KSW50ZXJydXB0cyBkb24ndCB3b3JrIHVubGVzcyBncGlv ZF9yZXF1ZXN0IGlzIGNhbGxlZC4gUGVyaGFwcyB0aGlzIGlzIGR1ZSB0bw0KYW4gaXNzdWUgaW4g dGhlIFNQSSBjb3JlPw0KDQo+ID4+ICsgICAgIHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9p cnEoJnNwaS0+ZGV2LCBzcGktPmlycSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtYXgzMTcyMl9pcnFfaGFuZGxlciwNCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtYXgzMTcyMl9pcnFfZXZlbnRfaGFuZGxlciwNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUlFGX1RSSUdHRVJfTE9XLA0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWDMxNzIyX0VWRU5ULCBp bmRpb19kZXYpOw0KPiA+PiArICAgICBpZiAocmV0IDwgMCkgew0KPiA+PiArICAgICAgICAgICAg IGRldl9lcnIoJnNwaS0+ZGV2LCAicmVxdWVzdCBpcnEgJWQgZmFpbGVkXG4iLCBzcGktPmlycSk7 DQo+ID4+ICsgICAgICAgICAgICAgZ290byBlcnJfc3RhbmRieTsNCj4gPj4gKyAgICAgfQ0KPiA+ IEkgd291bGQgc3VnZ2VzdCB5b3Ugd2FudCB0byBtYWtlIHRoZSBpcnEgb3B0aW9uYWwsIHRob3Vn aCB0aGF0IGNvdWxkDQo+ID4gaGFwcGVuIGF0IGEgbGF0ZXIgZGF0ZSB3aGVuIHNvbWVvbmUgaGFz IGEgYm9hcmQgd2hlcmUgaXQgaXNuJ3Qgd2lyZWQuDQo+IA0KPiBBZ3JlZS4gV2UgaGFkIHByZXZp b3VzIGV4cGVyaWVuY2Ugd2l0aCB1bndpcmVkIGludGVycnVwdHMgcGlucy4NCj4gDQo+ID4+DQo+ ID4+ICAgICAgIHJldCA9IGlpb19kZXZpY2VfcmVnaXN0ZXIoaW5kaW9fZGV2KTsNCj4gPj4gICAg ICAgaWYgKHJldCA8IDApIHsNCj4gPj4gICAgICAgICAgICAgICBkZXZfZXJyKCZzcGktPmRldiwg Imlpb19kZXZpY2VfcmVnaXN0ZXIgZmFpbGVkXG4iKTsNCj4gPj4gLSAgICAgICAgICAgICByZWdt YXBfZmllbGRfd3JpdGUoZGF0YS0+cmVnX3N0YXRlLA0KPiBNQVgzMTcyMl9NT0RFX1NUQU5EQlkp Ow0KPiA+PiArICAgICAgICAgICAgIGdvdG8gZXJyX3N0YW5kYnk7DQo+ID4+ICAgICAgIH0NCj4g Pj4NCj4gPj4gICAgICAgcmV0dXJuIHJldDsNCj4gPj4gKw0KPiA+PiArZXJyX3N0YW5kYnk6DQo+ ID4+ICsgICAgIHJlZ21hcF9maWVsZF93cml0ZShkYXRhLT5yZWdfc3RhdGUsIE1BWDMxNzIyX01P REVfU1RBTkRCWSk7DQo+ID4+ICsgICAgIHJldHVybiByZXQ7DQo+ID4+ICB9DQo+ID4+DQo+ID4+ ICBzdGF0aWMgaW50IG1heDMxNzIyX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQ0KPiA+ Pg0KPiA+DQo+ID4gLS0NCj4gPiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0 aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtaWlvIg0KPiA+IGluIHRoZSBib2R5IG9mIGEgbWVz c2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnIE1vcmUNCj4gbWFqb3Jkb21vDQo+ID4g aW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sDQo=