From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4F0C6C43381 for ; Wed, 27 Feb 2019 09:32:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0B180213A2 for ; Wed, 27 Feb 2019 09:32:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729313AbfB0Jch (ORCPT ); Wed, 27 Feb 2019 04:32:37 -0500 Received: from mx07-00178001.pphosted.com ([62.209.51.94]:42719 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725881AbfB0Jch (ORCPT ); Wed, 27 Feb 2019 04:32:37 -0500 Received: from pps.filterd (m0046037.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x1R9Vni4007922; Wed, 27 Feb 2019 10:32:17 +0100 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2qtvtx5dfp-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 27 Feb 2019 10:32:17 +0100 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 882F431; Wed, 27 Feb 2019 09:32:16 +0000 (GMT) Received: from Webmail-eu.st.com (sfhdag3node2.st.com [10.75.127.8]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 4029B2BA6; Wed, 27 Feb 2019 09:32:16 +0000 (GMT) Received: from SFHDAG3NODE2.st.com (10.75.127.8) by SFHDAG3NODE2.st.com (10.75.127.8) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Wed, 27 Feb 2019 10:32:16 +0100 Received: from SFHDAG3NODE2.st.com ([fe80::b82f:1ce:8854:5b96]) by SFHDAG3NODE2.st.com ([fe80::b82f:1ce:8854:5b96%20]) with mapi id 15.00.1347.000; Wed, 27 Feb 2019 10:32:16 +0100 From: Amelie DELAUNAY To: Lee Jones CC: Linus Walleij , Rob Herring , Mark Rutland , Alexandre TORGUE , Maxime Coquelin , "linux-gpio@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-stm32@st-md-mailman.stormreply.com" Subject: Re: [PATCH v3 2/7] mfd: Add ST Multi-Function eXpander (STMFX) core driver Thread-Topic: [PATCH v3 2/7] mfd: Add ST Multi-Function eXpander (STMFX) core driver Thread-Index: AQHUVlbbMUibYria3kWHuz6PS2MFyqUWnhgAgN2jGwA= Date: Wed, 27 Feb 2019 09:32:16 +0000 Message-ID: <5ad2b556-4a46-c4c3-271b-19782cbbb045@st.com> References: <1538048404-9041-1-git-send-email-amelie.delaunay@st.com> <1538048404-9041-3-git-send-email-amelie.delaunay@st.com> <20181009095504.GG4939@dell> In-Reply-To: <20181009095504.GG4939@dell> Accept-Language: fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.75.127.44] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-02-27_06:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMTAvOS8xOCAxMTo1NSBBTSwgTGVlIEpvbmVzIHdyb3RlOg0KPiBPbiBUaHUsIDI3IFNlcCAy MDE4LCBBbWVsaWUgRGVsYXVuYXkgd3JvdGU6DQo+IA0KPj4gU1RNaWNyb2VsZWN0cm9uaWNzIE11 bHRpLUZ1bmN0aW9uIGVYcGFuZGVyIChTVE1GWCkgaXMgYSBzbGF2ZSBjb250cm9sbGVyDQo+PiB1 c2luZyBJMkMgZm9yIGNvbW11bmljYXRpb24gd2l0aCB0aGUgbWFpbiBNQ1UuIE1haW4gZmVhdHVy ZXMgYXJlOg0KPj4gLSAxNiBmYXN0IEdQSU9zIGluZGl2aWR1YWxseSBjb25maWd1cmFibGUgaW4g aW5wdXQvb3V0cHV0DQo+PiAtIDggYWx0ZXJuYXRlIEdQSU9zIGluZGl2aWR1YWxseSBjb25maWd1 cmFibGUgaW4gaW5wdXQvb3V0cHV0IHdoZW4gb3RoZXINCj4+IFNUTUZYIGZ1bmN0aW9ucyBhcmUg bm90IHVzZWQNCj4+IC0gTWFpbiBNQ1UgSUREIG1lYXN1cmVtZW50DQo+PiAtIFJlc2lzdGl2ZSB0 b3VjaHNjcmVlbiBjb250cm9sbGVyDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogQW1lbGllIERlbGF1 bmF5IDxhbWVsaWUuZGVsYXVuYXlAc3QuY29tPg0KPj4gUmV2aWV3ZWQtYnk6IExpbnVzIFdhbGxl aWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4NCj4+IC0tLQ0KPj4gICBkcml2ZXJzL21mZC9L Y29uZmlnICAgICAgIHwgIDE0ICsrDQo+PiAgIGRyaXZlcnMvbWZkL01ha2VmaWxlICAgICAgfCAg IDIgKy0NCj4+ICAgZHJpdmVycy9tZmQvc3RtZnguYyAgICAgICB8IDYyNiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+PiAgIGluY2x1ZGUvbGludXgvbWZk L3N0bWZ4LmggfCAgMjcgKysNCj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCA2NjggaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQ0KPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZmQvc3Rt ZnguYw0KPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9tZmQvc3RtZnguaA0K Pj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9LY29uZmlnIGIvZHJpdmVycy9tZmQvS2Nv bmZpZw0KPj4gaW5kZXggZjNhNWY4ZC4uOGM0MTM0MiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMv bWZkL0tjb25maWcNCj4+ICsrKyBiL2RyaXZlcnMvbWZkL0tjb25maWcNCj4+IEBAIC0xODYyLDYg KzE4NjIsMjAgQEAgY29uZmlnIE1GRF9TVE0zMl9USU1FUlMNCj4+ICAgCSAgZm9yIFBXTSBhbmQg SUlPIFRpbWVyLiBUaGlzIGRyaXZlciBhbGxvdyB0byBzaGFyZSB0aGUNCj4+ICAgCSAgcmVnaXN0 ZXJzIGJldHdlZW4gdGhlIG90aGVycyBkcml2ZXJzLg0KPj4gICANCj4+ICtjb25maWcgTUZEX1NU TUZYDQo+PiArCXRyaXN0YXRlICJTdXBwb3J0IGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGkt RnVuY3Rpb24gZVhwYW5kZXIgKFNUTUZYKSINCj4+ICsJZGVwZW5kcyBvbiBJMkMNCj4+ICsJZGVw ZW5kcyBvbiBPRiB8fCBDT01QSUxFX1RFU1QNCj4+ICsJc2VsZWN0IE1GRF9DT1JFDQo+PiArCXNl bGVjdCBSRUdNQVBfSTJDDQo+PiArCWhlbHANCj4+ICsJICBTdXBwb3J0IGZvciB0aGUgU1RNaWNy b2VsZWN0cm9uaWNzIE11bHRpLUZ1bmN0aW9uIGVYcGFuZGVyLg0KPj4gKw0KPj4gKwkgIFRoaXMg ZHJpdmVyIHByb3ZpZGVzIGNvbW1vbiBzdXBwb3J0IGZvciBhY2Nlc3NpbmcgdGhlIGRldmljZSwN Cj4+ICsJICBhZGRpdGlvbmFsIGRyaXZlcnMgbXVzdCBiZSBlbmFibGVkIGluIG9yZGVyIHRvIHVz ZSB0aGUgZnVuY3Rpb25hbGl0eQ0KPj4gKwkgIG9mIHRoZSBkZXZpY2UuDQo+PiArDQo+PiArDQo+ PiAgIG1lbnUgIk11bHRpbWVkaWEgQ2FwYWJpbGl0aWVzIFBvcnQgZHJpdmVycyINCj4+ICAgCWRl cGVuZHMgb24gQVJDSF9TQTExMDANCj4+ICAgDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQv TWFrZWZpbGUgYi9kcml2ZXJzL21mZC9NYWtlZmlsZQ0KPj4gaW5kZXggNTg1NmE5NC4uMjgyMzIz YiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvbWZkL01ha2VmaWxlDQo+PiArKysgYi9kcml2ZXJz L21mZC9NYWtlZmlsZQ0KPj4gQEAgLTI0MCw0ICsyNDAsNCBAQCBvYmotJChDT05GSUdfTUZEX01Y U19MUkFEQykgICAgICs9IG14cy1scmFkYy5vDQo+PiAgIG9iai0kKENPTkZJR19NRkRfU0MyN1hY X1BNSUMpCSs9IHNwcmQtc2MyN3h4LXNwaS5vDQo+PiAgIG9iai0kKENPTkZJR19SQVZFX1NQX0NP UkUpCSs9IHJhdmUtc3Aubw0KPj4gICBvYmotJChDT05GSUdfTUZEX1JPSE1fQkQ3MThYWCkJKz0g cm9obS1iZDcxOHg3Lm8NCj4+IC0NCj4+ICtvYmotJChDT05GSUdfTUZEX1NUTUZYKSAJKz0gc3Rt Zngubw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3N0bWZ4LmMgYi9kcml2ZXJzL21mZC9z dG1meC5jDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMC4uY2ZkNGZj YQ0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVycy9tZmQvc3RtZnguYw0KPj4gQEAg LTAsMCArMSw2MjYgQEANCj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0K Pj4gKy8qDQo+PiArICogRHJpdmVyIGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktRnVuY3Rp b24gZVhwYW5kZXIgKFNUTUZYKSBjb3JlDQo+PiArICoNCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MTggU1RNaWNyb2VsZWN0cm9uaWNzDQo+PiArICogQXV0aG9yKHMpOiBBbWVsaWUgRGVsYXVuYXkg PGFtZWxpZS5kZWxhdW5heUBzdC5jb20+Lg0KPj4gKyAqLw0KPj4gKyNpbmNsdWRlIDxsaW51eC9i aXRmaWVsZC5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4NCj4+ICsjaW5jbHVkZSA8bGlu dXgvaW50ZXJydXB0Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L2lycS5oPg0KPj4gKyNpbmNsdWRl IDxsaW51eC9tZmQvY29yZS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9tZmQvc3RtZnguaD4NCj4+ ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRv ci9jb25zdW1lci5oPg0KPj4gKw0KPj4gKy8qIEdlbmVyYWwgKi8NCj4+ICsjZGVmaW5lIFNUTUZY X1JFR19DSElQX0lECQkweDAwIC8qIFIgKi8NCj4+ICsjZGVmaW5lIFNUTUZYX1JFR19GV19WRVJT SU9OX01TQgkweDAxIC8qIFIgKi8NCj4+ICsjZGVmaW5lIFNUTUZYX1JFR19GV19WRVJTSU9OX0xT QgkweDAyIC8qIFIgKi8NCj4+ICsjZGVmaW5lIFNUTUZYX1JFR19TWVNfQ1RSTAkJMHg0MCAvKiBS VyAqLw0KPj4gKy8qIElSUSBvdXRwdXQgbWFuYWdlbWVudCAqLw0KPj4gKyNkZWZpbmUgU1RNRlhf UkVHX0lSUV9PVVRfUElOCQkweDQxIC8qIFJXICovDQo+PiArI2RlZmluZSBTVE1GWF9SRUdfSVJR X1NSQ19FTgkJMHg0MiAvKiBSVyAqLw0KPj4gKyNkZWZpbmUgU1RNRlhfUkVHX0lSUV9QRU5ESU5H CQkweDA4IC8qIFIgKi8NCj4+ICsjZGVmaW5lIFNUTUZYX1JFR19JUlFfQUNLCQkweDQ0IC8qIFJX ICovDQo+PiArLyogR1BJTyBtYW5hZ2VtZW50ICovDQo+PiArI2RlZmluZSBTVE1GWF9SRUdfSVJR X0dQSV9QRU5ESU5HMQkweDBDIC8qIFIgKi8NCj4+ICsjZGVmaW5lIFNUTUZYX1JFR19JUlFfR1BJ X1BFTkRJTkcyCTB4MEQgLyogUiAqLw0KPj4gKyNkZWZpbmUgU1RNRlhfUkVHX0lSUV9HUElfUEVO RElORzMJMHgwRSAvKiBSICovDQo+PiArI2RlZmluZSBTVE1GWF9SRUdfR1BJT19TVEFURTEJCTB4 MTAgLyogUiAqLw0KPj4gKyNkZWZpbmUgU1RNRlhfUkVHX0dQSU9fU1RBVEUyCQkweDExIC8qIFIg Ki8NCj4+ICsjZGVmaW5lIFNUTUZYX1JFR19HUElPX1NUQVRFMwkJMHgxMiAvKiBSICovDQo+PiAr I2RlZmluZSBTVE1GWF9SRUdfSVJRX0dQSV9TUkMxCQkweDQ4IC8qIFJXICovDQo+PiArI2RlZmlu ZSBTVE1GWF9SRUdfSVJRX0dQSV9TUkMyCQkweDQ5IC8qIFJXICovDQo+PiArI2RlZmluZSBTVE1G WF9SRUdfSVJRX0dQSV9TUkMzCQkweDRBIC8qIFJXICovDQo+PiArI2RlZmluZSBTVE1GWF9SRUdf R1BPX1NFVDEJCTB4NkMgLyogUlcgKi8NCj4+ICsjZGVmaW5lIFNUTUZYX1JFR19HUE9fU0VUMgkJ MHg2RCAvKiBSVyAqLw0KPj4gKyNkZWZpbmUgU1RNRlhfUkVHX0dQT19TRVQzCQkweDZFIC8qIFJX ICovDQo+PiArI2RlZmluZSBTVE1GWF9SRUdfR1BPX0NMUjEJCTB4NzAgLyogUlcgKi8NCj4+ICsj ZGVmaW5lIFNUTUZYX1JFR19HUE9fQ0xSMgkJMHg3MSAvKiBSVyAqLw0KPj4gKyNkZWZpbmUgU1RN RlhfUkVHX0dQT19DTFIzCQkweDcyIC8qIFJXICovDQo+PiArDQo+PiArI2RlZmluZSBTVE1GWF9S RUdfTUFYCQkJMHhCMA0KPj4gKw0KPj4gKy8qIE1GWCBib290IHRpbWUgaXMgYXJvdW5kIDEwbXMs IHNvIGFmdGVyIHJlc2V0LCB3ZSBoYXZlIHRvIHdhaXQgdGhpcyBkZWxheSAqLw0KPj4gKyNkZWZp bmUgU1RNRlhfQk9PVF9USU1FX01TIDEwDQo+PiArDQo+PiArLyogU1RNRlhfUkVHX0NISVBfSUQg Yml0ZmllbGRzICovDQo+PiArI2RlZmluZSBTVE1GWF9SRUdfQ0hJUF9JRF9NQVNLCQlHRU5NQVNL KDcsIDApDQo+PiArDQo+PiArLyogU1RNRlhfUkVHX1NZU19DVFJMIGJpdGZpZWxkcyAqLw0KPj4g KyNkZWZpbmUgU1RNRlhfUkVHX1NZU19DVFJMX0dQSU9fRU4JQklUKDApDQo+PiArI2RlZmluZSBT VE1GWF9SRUdfU1lTX0NUUkxfVFNfRU4JQklUKDEpDQo+PiArI2RlZmluZSBTVE1GWF9SRUdfU1lT X0NUUkxfSUREX0VOCUJJVCgyKQ0KPj4gKyNkZWZpbmUgU1RNRlhfUkVHX1NZU19DVFJMX0FMVEdQ SU9fRU4JQklUKDMpDQo+PiArI2RlZmluZSBTVE1GWF9SRUdfU1lTX0NUUkxfU1dSU1QJQklUKDcp DQo+PiArDQo+PiArLyogU1RNRlhfUkVHX0lSUV9PVVRfUElOIGJpdGZpZWxkcyAqLw0KPj4gKyNk ZWZpbmUgU1RNRlhfUkVHX0lSUV9PVVRfUElOX1RZUEUJQklUKDApIC8qIDAtT0QgMS1QUCAqLw0K Pj4gKyNkZWZpbmUgU1RNRlhfUkVHX0lSUV9PVVRfUElOX1BPTAlCSVQoMSkgLyogMC1hY3RpdmUg TE9XIDEtYWN0aXZlIEhJR0ggKi8NCj4+ICsNCj4+ICsvKiBTVE1GWF9SRUdfSVJRXyhTUkNfRU4v UEVORElORy9BQ0spIGJpdCBzaGlmdCAqLw0KPj4gK2VudW0gc3RtZnhfaXJxcyB7DQo+PiArCVNU TUZYX1JFR19JUlFfU1JDX0VOX0dQSU8gPSAwLA0KPj4gKwlTVE1GWF9SRUdfSVJRX1NSQ19FTl9J REQsDQo+PiArCVNUTUZYX1JFR19JUlFfU1JDX0VOX0VSUk9SLA0KPj4gKwlTVE1GWF9SRUdfSVJR X1NSQ19FTl9UU19ERVQsDQo+PiArCVNUTUZYX1JFR19JUlFfU1JDX0VOX1RTX05FLA0KPj4gKwlT VE1GWF9SRUdfSVJRX1NSQ19FTl9UU19USCwNCj4+ICsJU1RNRlhfUkVHX0lSUV9TUkNfRU5fVFNf RlVMTCwNCj4+ICsJU1RNRlhfUkVHX0lSUV9TUkNfRU5fVFNfT1ZGLA0KPj4gKwlTVE1GWF9SRUdf SVJRX1NSQ19NQVgsDQo+PiArfTsNCj4gDQo+IEknZCBwcmVmZXIgZnJvbSBoZXJlIHVwIHRvIHRo ZSBpbmNsdWRlcyB0byBiZSBwbGFjZWQgaW50byB0aGUgaGVhZGVyLg0KPiANCg0KT0suDQoNCj4+ ICsvKioNCj4+ICsgKiBzdHJ1Y3Qgc3RtZnhfZGRhdGEgLSBTVE1GWCBNRkQgcHJpdmF0ZSBzdHJ1 Y3R1cmUNCj4gDQo+IFlvdSBjYW4gZHJvcCAnX2RkYXRhJyBmcm9tIGhlcmUgKHJlYWQgbmV4dCBj b21tZW50KS4NCj4gDQo+PiArICogQHN0bWZ4OgkJc3RhdGUgaG9sZGVyIHdpdGggZGV2aWNlIGZv ciBsb2dzIGFuZCByZWdpc3RlciBtYXANCj4gDQo+IEkgZG9uJ3QgdW5kZXJzdGFuZCB3aHkgdGhp cyByZXF1aXJlcyBhbiBhZGRpdGlvbmFsIHN0cnVjdC4NCj4gDQo+PiArICogQHZkZDoJCVNUTUZY IHBvd2VyIHN1cHBseQ0KPj4gKyAqIEBpcnFfZG9tYWluOgkJSVJRIGRvbWFpbg0KPj4gKyAqIEBs b2NrOgkJSVJRIGJ1cyBsb2NrDQo+PiArICogQGlycV9zcmM6CQljYWNoZSBvZiBJUlFfU1JDX0VO IHJlZ2lzdGVyIGZvciBidXNfbG9jaw0KPj4gKyAqIEBia3Bfc3lzY3RybDoJYmFja3VwIG9mIFNZ U19DVFJMIHJlZ2lzdGVyIGZvciBzdXNwZW5kL3Jlc3VtZQ0KPj4gKyAqIEBia3BfaXJxb3V0cGlu OgliYWNrdXAgb2YgSVJRX09VVF9QSU4gcmVnaXN0ZXIgZm9yIHN1c3BlbmQvcmVzdW1lDQo+PiAr ICovDQo+PiArc3RydWN0IHN0bWZ4X2RkYXRhIHsNCj4+ICsJc3RydWN0IHN0bWZ4ICpzdG1meDsN Cj4+ICsJc3RydWN0IHJlZ3VsYXRvciAqdmRkOw0KPj4gKwlzdHJ1Y3QgaXJxX2RvbWFpbiAqaXJx X2RvbWFpbjsNCj4+ICsJc3RydWN0IG11dGV4IGxvY2s7IC8qIElSUSBidXMgbG9jayAqLw0KPj4g Kwl1OCBpcnFfc3JjOw0KPj4gKyNpZmRlZiBDT05GSUdfUE0NCj4+ICsJdTggYmtwX3N5c2N0cmw7 DQo+PiArCXU4IGJrcF9pcnFvdXRwaW47DQo+PiArI2VuZGlmDQo+IA0KPiBJIGhhdmVuJ3Qgc2Vl biB0aGlzIGJlZm9yZS4NCj4gDQo+IFdoeSBpcyB0aGlzIG5lY2Vzc2FyeSBmb3IgKnRoaXMqIGRl dmljZSBhbmQgbm8gb3RoZXJzPw0KPiANCg0KTm90IG5lY2Vzc2FyeSBpbiBmYWN0LiBQcml2YXRl IHN0cnVjdHVyZSB3YXMgaGVyZSB0byByZWZsZWN0IHRoZSBtZmQgDQpjb3JlIHNwZWNpZmljIG1l bWJlcnMgYmVjYXVzZSBJIHRob3VnaHQgaXQgd2FzIHVzZWxlc3MgZm9yIGhpcyBjaGlsZHJlbiAN CnRvIGhhdmUgYWNjZXNzIHRvIHRoZXNlIHN0cnVjdCBtZW1iZXJzLg0KDQo+PiArfTsNCj4+ICsN Cj4+ICtzdGF0aWMgdTggc3RtZnhfZnVuY190b19tYXNrKHUzMiBmdW5jKQ0KPj4gK3sNCj4+ICsJ dTggbWFzayA9IDA7DQo+PiArDQo+PiArCWlmIChmdW5jICYgU1RNRlhfRlVOQ19HUElPKQ0KPj4g KwkJbWFzayB8PSBTVE1GWF9SRUdfU1lTX0NUUkxfR1BJT19FTjsNCj4+ICsNCj4+ICsJaWYgKChm dW5jICYgU1RNRlhfRlVOQ19BTFRHUElPX0xPVykgfHwgKGZ1bmMgJiBTVE1GWF9GVU5DX0FMVEdQ SU9fSElHSCkpDQo+PiArCQltYXNrIHw9IFNUTUZYX1JFR19TWVNfQ1RSTF9BTFRHUElPX0VOOw0K Pj4gKw0KPj4gKwlpZiAoZnVuYyAmIFNUTUZYX0ZVTkNfVFMpDQo+PiArCQltYXNrIHw9IFNUTUZY X1JFR19TWVNfQ1RSTF9UU19FTjsNCj4+ICsNCj4+ICsJaWYgKGZ1bmMgJiBTVE1GWF9GVU5DX0lE RCkNCj4+ICsJCW1hc2sgfD0gU1RNRlhfUkVHX1NZU19DVFJMX0lERF9FTjsNCj4+ICsNCj4+ICsJ cmV0dXJuIG1hc2s7DQo+PiArfQ0KPj4gKw0KPj4gK2ludCBzdG1meF9mdW5jdGlvbl9lbmFibGUo c3RydWN0IHN0bWZ4ICpzdG1meCwgdTMyIGZ1bmMpDQo+PiArew0KPj4gKwl1MzIgc3lzX2N0cmw7 DQo+PiArCXU4IG1hc2s7DQo+PiArCWludCByZXQ7DQo+PiArDQo+PiArCXJldCA9IHJlZ21hcF9y ZWFkKHN0bWZ4LT5tYXAsIFNUTUZYX1JFR19TWVNfQ1RSTCwgJnN5c19jdHJsKTsNCj4+ICsJaWYg KHJldCkNCj4+ICsJCXJldHVybiByZXQ7DQo+PiArDQo+PiArCS8qDQo+PiArCSAqIElERCBhbmQg VFMgaGF2ZSBwcmlvcml0eSBpbiBTVE1GWCBGVywgc28gaWYgSUREIGFuZCBUUyBhcmUgZW5hYmxl ZCwNCj4+ICsJICogQUxUR1BJTyBmdW5jdGlvbiBpcyBkaXNhYmxlZCBieSBTVE1GWCBGVy4gSWYg SUREIG9yIFRTIGlzIGVuYWJsZWQsDQo+PiArCSAqIHRoZSBudW1iZXIgb2YgYUdQSU8gYXZhaWxh YmxlIGRlY3JlYXNlcy4gVG8gYXZvaWQgR1BJTyBtYW5hZ2VtZW50DQo+PiArCSAqIGRpc3R1cmJh bmNlLCBhYm9ydCBJREQgb3IgVFMgZnVuY3Rpb24gZW5hYmxlIGluIHRoaXMgY2FzZS4NCj4+ICsJ ICovDQo+PiArCWlmICgoKGZ1bmMgJiBTVE1GWF9GVU5DX0lERCkgfHwgKGZ1bmMgJiBTVE1GWF9G VU5DX1RTKSkgJiYNCj4+ICsJICAgIChzeXNfY3RybCAmIFNUTUZYX1JFR19TWVNfQ1RSTF9BTFRH UElPX0VOKSkgew0KPj4gKwkJZGV2X2VycihzdG1meC0+ZGV2LCAiQUxUR1BJTyBmdW5jdGlvbiBh bHJlYWR5IGVuYWJsZWRcbiIpOw0KPj4gKwkJcmV0dXJuIC1FQlVTWTsNCj4+ICsJfQ0KPj4gKw0K Pj4gKwkvKiBJZiBUUyBpcyBlbmFibGVkLCBhR1BJT1szOjBdIGNhbm5vdCBiZSB1c2VkICovDQo+ PiArCWlmICgoZnVuYyAmIFNUTUZYX0ZVTkNfQUxUR1BJT19MT1cpICYmDQo+PiArCSAgICAoc3lz X2N0cmwgJiBTVE1GWF9SRUdfU1lTX0NUUkxfVFNfRU4pKSB7DQo+PiArCQlkZXZfZXJyKHN0bWZ4 LT5kZXYsICJUUyBpbiB1c2UsIGFHUElPWzM6MF0gdW5hdmFpbGFibGVcbiIpOw0KPj4gKwkJcmV0 dXJuIC1FQlVTWTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwkvKiBJZiBJREQgaXMgZW5hYmxlZCwgYUdQ SU9bNzo0XSBjYW5ub3QgYmUgdXNlZCAqLw0KPj4gKwlpZiAoKGZ1bmMgJiBTVE1GWF9GVU5DX0FM VEdQSU9fSElHSCkgJiYNCj4+ICsJICAgIChzeXNfY3RybCAmIFNUTUZYX1JFR19TWVNfQ1RSTF9J RERfRU4pKSB7DQo+PiArCQlkZXZfZXJyKHN0bWZ4LT5kZXYsICJJREQgaW4gdXNlLCBhR1BJT1s3 OjRdIHVuYXZhaWxhYmxlXG4iKTsNCj4+ICsJCXJldHVybiAtRUJVU1k7DQo+PiArCX0NCj4+ICsN Cj4+ICsJbWFzayA9IHN0bWZ4X2Z1bmNfdG9fbWFzayhmdW5jKTsNCj4+ICsNCj4+ICsJcmV0dXJu IHJlZ21hcF91cGRhdGVfYml0cyhzdG1meC0+bWFwLCBTVE1GWF9SRUdfU1lTX0NUUkwsIG1hc2ss IG1hc2spOw0KPj4gK30NCj4+ICtFWFBPUlRfU1lNQk9MX0dQTChzdG1meF9mdW5jdGlvbl9lbmFi bGUpOw0KPj4gKw0KPj4gK2ludCBzdG1meF9mdW5jdGlvbl9kaXNhYmxlKHN0cnVjdCBzdG1meCAq c3RtZngsIHUzMiBmdW5jKQ0KPj4gK3sNCj4+ICsJdTggbWFzayA9IHN0bWZ4X2Z1bmNfdG9fbWFz ayhmdW5jKTsNCj4+ICsNCj4+ICsJcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhzdG1meC0+bWFw LCBTVE1GWF9SRUdfU1lTX0NUUkwsIG1hc2ssIDApOw0KPj4gK30NCj4+ICtFWFBPUlRfU1lNQk9M X0dQTChzdG1meF9mdW5jdGlvbl9kaXNhYmxlKTsNCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBzdG1m eF9pcnFfYnVzX2xvY2soc3RydWN0IGlycV9kYXRhICpkYXRhKQ0KPj4gK3sNCj4+ICsJc3RydWN0 IHN0bWZ4X2RkYXRhICpkZGF0YSA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGRhdGEpOw0K Pj4gKw0KPj4gKwltdXRleF9sb2NrKCZkZGF0YS0+bG9jayk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0 YXRpYyB2b2lkIHN0bWZ4X2lycV9idXNfc3luY191bmxvY2soc3RydWN0IGlycV9kYXRhICpkYXRh KQ0KPj4gK3sNCj4+ICsJc3RydWN0IHN0bWZ4X2RkYXRhICpkZGF0YSA9IGlycV9kYXRhX2dldF9p cnFfY2hpcF9kYXRhKGRhdGEpOw0KPj4gKw0KPj4gKwlyZWdtYXBfd3JpdGUoZGRhdGEtPnN0bWZ4 LT5tYXAsIFNUTUZYX1JFR19JUlFfU1JDX0VOLCBkZGF0YS0+aXJxX3NyYyk7DQo+PiArDQo+PiAr CW11dGV4X3VubG9jaygmZGRhdGEtPmxvY2spOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9p ZCBzdG1meF9pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEpDQo+PiArew0KPj4gKwlzdHJ1 Y3Qgc3RtZnhfZGRhdGEgKmRkYXRhID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZGF0YSk7 DQo+PiArDQo+PiArCWRkYXRhLT5pcnFfc3JjICY9IH5CSVQoZGF0YS0+aHdpcnEgJSA4KTsNCj4+ ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgc3RtZnhfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2Rh dGEgKmRhdGEpDQo+PiArew0KPj4gKwlzdHJ1Y3Qgc3RtZnhfZGRhdGEgKmRkYXRhID0gaXJxX2Rh dGFfZ2V0X2lycV9jaGlwX2RhdGEoZGF0YSk7DQo+PiArDQo+PiArCWRkYXRhLT5pcnFfc3JjIHw9 IEJJVChkYXRhLT5od2lycSAlIDgpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0IGly cV9jaGlwIHN0bWZ4X2lycV9jaGlwID0gew0KPj4gKwkubmFtZQkJCT0gInN0bWZ4LWNvcmUiLA0K Pj4gKwkuaXJxX2J1c19sb2NrCQk9IHN0bWZ4X2lycV9idXNfbG9jaywNCj4+ICsJLmlycV9idXNf c3luY191bmxvY2sJPSBzdG1meF9pcnFfYnVzX3N5bmNfdW5sb2NrLA0KPj4gKwkuaXJxX21hc2sJ CT0gc3RtZnhfaXJxX21hc2ssDQo+PiArCS5pcnFfdW5tYXNrCQk9IHN0bWZ4X2lycV91bm1hc2ss DQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgaXJxcmV0dXJuX3Qgc3RtZnhfaXJxX2hhbmRsZXIo aW50IGlycSwgdm9pZCAqZGF0YSkNCj4+ICt7DQo+PiArCXN0cnVjdCBzdG1meF9kZGF0YSAqZGRh dGEgPSBkYXRhOw0KPj4gKwl1bnNpZ25lZCBsb25nIG4sIHBlbmRpbmc7DQo+PiArCXUzMiBhY2s7 DQo+PiArCWludCByZXQ7DQo+PiArDQo+PiArCXJldCA9IHJlZ21hcF9yZWFkKGRkYXRhLT5zdG1m eC0+bWFwLCBTVE1GWF9SRUdfSVJRX1BFTkRJTkcsDQo+PiArCQkJICAodTMyICopJnBlbmRpbmcp Ow0KPj4gKwlpZiAocmV0KQ0KPj4gKwkJcmV0dXJuIElSUV9OT05FOw0KPj4gKw0KPj4gKwkvKg0K Pj4gKwkgKiBUaGVyZSBpcyBubyBBQ0sgZm9yIEdQSU8sIE1GWF9SRUdfSVJRX1BFTkRJTkdfR1BJ TyBpcyBhIGxvZ2ljYWwgT1INCj4+ICsJICogb2YgTUZYX1JFR19JUlFfR1BJIF9QRU5ESU5HMS9f UEVORElORzIvX1BFTkRJTkczDQo+PiArCSAqLw0KPj4gKwlhY2sgPSBwZW5kaW5nICYgfkJJVChT VE1GWF9SRUdfSVJRX1NSQ19FTl9HUElPKTsNCj4+ICsJaWYgKGFjaykgew0KPj4gKwkJcmV0ID0g cmVnbWFwX3dyaXRlKGRkYXRhLT5zdG1meC0+bWFwLCBTVE1GWF9SRUdfSVJRX0FDSywgYWNrKTsN Cj4+ICsJCWlmIChyZXQpDQo+PiArCQkJcmV0dXJuIElSUV9OT05FOw0KPj4gKwl9DQo+PiArDQo+ PiArCWZvcl9lYWNoX3NldF9iaXQobiwgJnBlbmRpbmcsIFNUTUZYX1JFR19JUlFfU1JDX01BWCkN Cj4+ICsJCWhhbmRsZV9uZXN0ZWRfaXJxKGlycV9maW5kX21hcHBpbmcoZGRhdGEtPmlycV9kb21h aW4sIG4pKTsNCj4+ICsNCj4+ICsJcmV0dXJuIElSUV9IQU5ETEVEOw0KPj4gK30NCj4+ICsNCj4+ ICtzdGF0aWMgaW50IHN0bWZ4X2lycV9tYXAoc3RydWN0IGlycV9kb21haW4gKmQsIHVuc2lnbmVk IGludCB2aXJxLA0KPj4gKwkJCSBpcnFfaHdfbnVtYmVyX3QgaHdpcnEpDQo+PiArew0KPj4gKwlp cnFfc2V0X2NoaXBfZGF0YSh2aXJxLCBkLT5ob3N0X2RhdGEpOw0KPj4gKwlpcnFfc2V0X2NoaXBf YW5kX2hhbmRsZXIodmlycSwgJnN0bWZ4X2lycV9jaGlwLCBoYW5kbGVfc2ltcGxlX2lycSk7DQo+ PiArCWlycV9zZXRfbmVzdGVkX3RocmVhZCh2aXJxLCAxKTsNCj4+ICsJaXJxX3NldF9ub3Byb2Jl KHZpcnEpOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZv aWQgc3RtZnhfaXJxX3VubWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgdmly cSkNCj4+ICt7DQo+PiArCWlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcih2aXJxLCBOVUxMLCBOVUxM KTsNCj4+ICsJaXJxX3NldF9jaGlwX2RhdGEodmlycSwgTlVMTCk7DQo+PiArfQ0KPj4gKw0KPj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgc3RtZnhfaXJxX29wcyA9IHsNCj4+ ICsJLm1hcAk9IHN0bWZ4X2lycV9tYXAsDQo+PiArCS51bm1hcAk9IHN0bWZ4X2lycV91bm1hcCwN Cj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIHN0bWZ4X2lycV9leGl0KHN0cnVjdCBzdG1m eF9kZGF0YSAqZGRhdGEpDQo+PiArew0KPj4gKwlpbnQgaHdpcnE7DQo+PiArDQo+PiArCWZvciAo aHdpcnEgPSAwOyBod2lycSA8IFNUTUZYX1JFR19JUlFfU1JDX01BWDsgaHdpcnErKykNCj4+ICsJ CWlycV9kaXNwb3NlX21hcHBpbmcoaXJxX2ZpbmRfbWFwcGluZyhkZGF0YS0+aXJxX2RvbWFpbiwg aHdpcnEpKTsNCj4gDQo+ICdcbicgaGVyZSBwbGVhc2UuDQo+IA0KPj4gKwlpcnFfZG9tYWluX3Jl bW92ZShkZGF0YS0+aXJxX2RvbWFpbik7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgc3Rt ZnhfaXJxX2luaXQoc3RydWN0IHN0bWZ4X2RkYXRhICpkZGF0YSwgaW50IGlycSkNCj4+ICt7DQo+ PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGRkYXRhLT5zdG1meC0+ZGV2Ow0KPiANCj4gQmV0dGVy IHRvIHBhc3MgZWl0aGVyICdkZXYnIG9yICdwZGV2JyBhcm91bmQgYW5kIGV4dHJhcG9sYXRlIHVz aW5nIHRoZQ0KPiBkZXZfZ2V0X2RydmRhdGEoKSBoZWxwZXJzLCByYXRoZXIgdGhhbiB0aGUgb3Ro ZXIgd2F5IGFyb3VuZC4NCj4gDQoNCkkgYWdyZWUuIEkgY2FuIHBhc3MgaTJjIGNsaWVudCBhbmQg ZXh0cmFwb2xhdGUgdXNpbmcgdGhlIA0KaTJjX2dldF9jbGllbnRkYXRhIGhlbHBlciwgaGVyZSBh bmQgaW4gX2lycV9leGl0LCBfY2hpcF9pbml0LCANCl9jaGlwX2V4aXQsIHRvIGhvbW9nZW5pemUu DQoNCj4+ICsJdTMyIGlycW91dHBpbiA9IDAsIGlycXRyaWdnZXI7DQo+PiArCWludCByZXQ7DQo+ PiArDQo+PiArCWRkYXRhLT5pcnFfZG9tYWluID0gaXJxX2RvbWFpbl9hZGRfc2ltcGxlKGRldi0+ b2Zfbm9kZSwNCj4+ICsJCQkJCQkgIFNUTUZYX1JFR19JUlFfU1JDX01BWCwgMCwNCj4+ICsJCQkJ CQkgICZzdG1meF9pcnFfb3BzLCBkZGF0YSk7DQo+PiArCWlmICghZGRhdGEtPmlycV9kb21haW4p IHsNCj4+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBpcnEgZG9tYWluXG4iKTsN Cj4gDQo+IHMvaXJxL0lSUS8NCj4gDQo+IEkgYWxzbyBwcmVmZXIgY2FwaXRhbCBsZXR0ZXJzIHRv IHN0YXJ0IHNlbnRlbmNlcywgYnV0IGl0J3Mgbm90DQo+IGNyaXRpY2FsIGhlcmUuDQo+IA0KDQpP SywgSSB3aWxsIGZpeCBhbGwgdHlwb3MuDQoNCj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4gKwl9 DQo+PiArDQo+PiArCWlmICghb2ZfcHJvcGVydHlfcmVhZF9ib29sKGRldi0+b2Zfbm9kZSwgImRy aXZlLW9wZW4tZHJhaW4iKSkNCj4+ICsJCWlycW91dHBpbiB8PSBTVE1GWF9SRUdfSVJRX09VVF9Q SU5fVFlQRTsNCj4+ICsNCj4+ICsJaXJxdHJpZ2dlciA9IGlycV9nZXRfdHJpZ2dlcl90eXBlKGly cSk7DQo+PiArCWlmICgoaXJxdHJpZ2dlciAmIElSUV9UWVBFX0VER0VfUklTSU5HKSB8fA0KPj4g KwkgICAgKGlycXRyaWdnZXIgJiBJUlFfVFlQRV9MRVZFTF9ISUdIKSkNCj4+ICsJCWlycW91dHBp biB8PSBTVE1GWF9SRUdfSVJRX09VVF9QSU5fUE9MOw0KPj4gKw0KPj4gKwlyZXQgPSByZWdtYXBf d3JpdGUoZGRhdGEtPnN0bWZ4LT5tYXAsIFNUTUZYX1JFR19JUlFfT1VUX1BJTiwgaXJxb3V0cGlu KTsNCj4+ICsJaWYgKHJldCkNCj4+ICsJCXJldHVybiByZXQ7DQo+PiArDQo+PiArCXJldCA9IGRl dm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBpcnEsIE5VTEwsIHN0bWZ4X2lycV9oYW5kbGVy LA0KPj4gKwkJCQkJaXJxdHJpZ2dlciB8IElSUUZfT05FU0hPVCwNCj4+ICsJCQkJCSJzdG1meCIs IGRkYXRhKTsNCj4+ICsJaWYgKHJldCkNCj4+ICsJCXN0bWZ4X2lycV9leGl0KGRkYXRhKTsNCj4+ ICsNCj4+ICsJcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBzdG1meF9j aGlwX3Jlc2V0KHN0cnVjdCBzdG1meF9kZGF0YSAqZGRhdGEpDQo+PiArew0KPj4gKwlpbnQgcmV0 Ow0KPj4gKw0KPj4gKwlyZXQgPSByZWdtYXBfd3JpdGUoZGRhdGEtPnN0bWZ4LT5tYXAsIFNUTUZY X1JFR19TWVNfQ1RSTCwNCj4+ICsJCQkgICBTVE1GWF9SRUdfU1lTX0NUUkxfU1dSU1QpOw0KPj4g KwlpZiAocmV0KQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsNCj4+ICsJbXNsZWVwKFNUTUZYX0JP T1RfVElNRV9NUyk7DQo+PiArDQo+PiArCXJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0 YXRpYyBpbnQgc3RtZnhfY2hpcF9pbml0KHN0cnVjdCBzdG1meF9kZGF0YSAqZGRhdGEsIHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpDQo+IA0KPiBObyBuZWVkIHRvIHByb3ZpZGUgYm90aCBkZGF0 YSBhbmQgY2xpZW50LCB5b3UgY2FuIGV4dHJhcG9sYXRlIHRoZQ0KPiBmb3JtZXIgZnJvbSB0aGUg bGF0dGVyLg0KPiANCj4+ICt7DQo+PiArCXUzMiBpZDsNCj4+ICsJdTggdmVyc2lvblsyXTsNCj4+ ICsJaW50IHJldDsNCj4+ICsNCj4+ICsJZGRhdGEtPnZkZCA9IGRldm1fcmVndWxhdG9yX2dldF9v cHRpb25hbCgmY2xpZW50LT5kZXYsICJ2ZGQiKTsNCj4+ICsJaWYgKElTX0VSUihkZGF0YS0+dmRk KSkgew0KPj4gKwkJcmV0ID0gUFRSX0VSUihkZGF0YS0+dmRkKTsNCj4+ICsJCWlmIChyZXQgIT0g LUVOT0RFVikgew0KPj4gKwkJCWlmIChyZXQgIT0gLUVQUk9CRV9ERUZFUikNCj4+ICsJCQkJZGV2 X2VycigmY2xpZW50LT5kZXYsDQo+PiArCQkJCQkibm8gdmRkIHJlZ3VsYXRvciBmb3VuZDolZFxu IiwgcmV0KTsNCj4gDQo+IHMvdmRkL1ZERC8/DQo+IA0KPj4gKwkJCXJldHVybiByZXQ7DQo+PiAr CQl9DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYgKCFJU19FUlIoZGRhdGEtPnZkZCkpIHsNCj4gDQo+ IFdoeSBub3QganVzdCAnZWxzZSc/DQo+IA0KPj4gKwkJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShk ZGF0YS0+dmRkKTsNCj4+ICsJCWlmIChyZXQpIHsNCj4+ICsJCQlkZXZfZXJyKCZjbGllbnQtPmRl diwgInZkZCBlbmFibGUgZmFpbGVkOiAlZFxuIiwgcmV0KTsNCj4gDQo+IHMvdmRkL1ZERC8/DQo+ IA0KPj4gKwkJCXJldHVybiByZXQ7DQo+PiArCQl9DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0ID0g cmVnbWFwX3JlYWQoZGRhdGEtPnN0bWZ4LT5tYXAsIFNUTUZYX1JFR19DSElQX0lELCAmaWQpOw0K Pj4gKwlpZiAocmV0KSB7DQo+PiArCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgImVycm9yIHJlYWRp bmcgY2hpcCBpZDogJWRcbiIsIHJldCk7DQo+IA0KPiBzL2lkL0lELw0KPiANCj4+ICsJCWdvdG8g ZXJyOw0KPj4gKwl9DQo+PiArDQo+PiArCS8qDQo+PiArCSAqIENoZWNrIHRoYXQgSUQgaXMgdGhl IGNvbXBsZW1lbnQgb2YgdGhlIEkyQyBhZGRyZXNzOg0KPj4gKwkgKiBTVE1GWCBJMkMgYWRkcmVz cyBmb2xsb3dzIHRoZSA3LWJpdCBmb3JtYXQgKE1TQiksIHRoYXQncyB3aHkNCj4+ICsJICogY2xp ZW50LT5hZGRyIGlzIHNoaWZ0ZWQuDQo+PiArCSAqDQo+PiArCSAqIFNUTUZYX0kyQ19BRERSfCAg ICAgICBTVE1GWCAgICAgICAgIHwgICAgICAgIExpbnV4DQo+PiArCSAqICAgaW5wdXQgcGluICAg fCBJMkMgZGV2aWNlIGFkZHJlc3MgIHwgSTJDIGRldmljZSBhZGRyZXNzDQo+PiArCSAqLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+PiAr CSAqICAgICAgIDAgICAgICAgfCBiOiAxMDAwIDAxMHggaDoweDg0IHwgICAgICAgMHg0Mg0KPj4g KwkgKiAgICAgICAxICAgICAgIHwgYjogMTAwMCAwMTF4IGg6MHg4NiB8ICAgICAgIDB4NDMNCj4+ ICsJICovDQo+PiArCWlmIChGSUVMRF9HRVQoU1RNRlhfUkVHX0NISVBfSURfTUFTSywgfmlkKSAh PSAoY2xpZW50LT5hZGRyIDw8IDEpKSB7DQo+PiArCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgInVu a25vd24gY2hpcCBpZDogJSN4XG4iLCBpZCk7DQo+PiArCQlyZXQgPSAtRUlOVkFMOw0KPj4gKwkJ Z290byBlcnI7DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0ID0gcmVnbWFwX2J1bGtfcmVhZChkZGF0 YS0+c3RtZngtPm1hcCwgU1RNRlhfUkVHX0ZXX1ZFUlNJT05fTVNCLA0KPj4gKwkJCSAgICAgICB2 ZXJzaW9uLCBBUlJBWV9TSVpFKHZlcnNpb24pKTsNCj4+ICsJaWYgKHJldCkgew0KPj4gKwkJZGV2 X2VycigmY2xpZW50LT5kZXYsICJlcnJvciByZWFkaW5nIGZ3IHZlcnNpb246ICVkXG4iLCByZXQp Ow0KPj4gKwkJZ290byBlcnI7DQo+PiArCX0NCj4+ICsNCj4+ICsJZGV2X2luZm8oJmNsaWVudC0+ ZGV2LCAiU1RNRlggaWQ6ICUjeCwgZncgdmVyc2lvbjogJXguJTAyeFxuIiwNCj4+ICsJCSBpZCwg dmVyc2lvblswXSwgdmVyc2lvblsxXSk7DQo+PiArDQo+PiArCXJldHVybiBzdG1meF9jaGlwX3Jl c2V0KGRkYXRhKTsNCj4+ICsNCj4+ICtlcnI6DQo+PiArCWlmICghSVNfRVJSKGRkYXRhLT52ZGQp KQ0KPj4gKwkJcmV0dXJuIHJlZ3VsYXRvcl9kaXNhYmxlKGRkYXRhLT52ZGQpOw0KPj4gKw0KPj4g KwlyZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IHN0bWZ4X2NoaXBfZXhp dChzdHJ1Y3Qgc3RtZnhfZGRhdGEgKmRkYXRhKQ0KPj4gK3sNCj4+ICsJcmVnbWFwX3dyaXRlKGRk YXRhLT5zdG1meC0+bWFwLCBTVE1GWF9SRUdfSVJRX1NSQ19FTiwgMCk7DQo+PiArCXJlZ21hcF93 cml0ZShkZGF0YS0+c3RtZngtPm1hcCwgU1RNRlhfUkVHX1NZU19DVFJMLCAwKTsNCj4+ICsNCj4+ ICsJaWYgKCFJU19FUlIoZGRhdGEtPnZkZCkpDQo+PiArCQlyZXR1cm4gcmVndWxhdG9yX2Rpc2Fi bGUoZGRhdGEtPnZkZCk7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHJlc291cmNlIHN0bWZ4X3BpbmN0cmxfcmVzb3VyY2VzW10gPSB7 DQo+PiArCURFRklORV9SRVNfSVJRKFNUTUZYX1JFR19JUlFfU1JDX0VOX0dQSU8pLA0KPj4gK307 DQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCBtZmRfY2VsbCBzdG1meF9jZWxsc1tdID0gew0KPj4g Kwl7DQo+PiArCQkub2ZfY29tcGF0aWJsZSA9ICJzdCxzdG1meC0wMzAwLXBpbmN0cmwiLA0KPj4g KwkJLm5hbWUgPSAic3RtZngtcGluY3RybCIsDQo+PiArCQkucmVzb3VyY2VzID0gc3RtZnhfcGlu Y3RybF9yZXNvdXJjZXMsDQo+PiArCQkubnVtX3Jlc291cmNlcyA9IEFSUkFZX1NJWkUoc3RtZnhf cGluY3RybF9yZXNvdXJjZXMpLA0KPj4gKwl9DQo+PiArfTsNCj4gDQo+IFdoYXQgb3RoZXIgZGV2 aWNlcyBtYWtlIHVwIHRoaXMgTUZEPw0KPiANCg0KSSBjYW4gYWRkIHR3byBvdGhlciBjZWxscyBm b3IgVG91Y2hTY3JlZW4gZmVhdHVyZSB3aXRoIFRvdWNoU2NyZWVuIA0KaW50ZXJydXB0cywgYW5k IElERCBmZWF0dXJlIHdpdGggSUREIGFuZCBFcnJvciBpbnRlcnJ1cHQgKHVzZWQgYnkgSUREIA0K bW9kdWxlIHRvIHJhaXNlIGRlZmF1bHQvZXJyb3IgZW5jb3VudGVyZWQgZHVyaW5nIElERCBtZWFz dXJlbWVudCkuDQoNCj4+ICtzdGF0aWMgYm9vbCBzdG1meF9yZWdfdm9sYXRpbGUoc3RydWN0IGRl dmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcmVnKQ0KPj4gK3sNCj4+ICsJc3dpdGNoIChyZWcpIHsN Cj4+ICsJY2FzZSBTVE1GWF9SRUdfU1lTX0NUUkw6DQo+PiArCWNhc2UgU1RNRlhfUkVHX0lSUV9T UkNfRU46DQo+PiArCWNhc2UgU1RNRlhfUkVHX0lSUV9QRU5ESU5HOg0KPj4gKwljYXNlIFNUTUZY X1JFR19JUlFfR1BJX1BFTkRJTkcxOg0KPj4gKwljYXNlIFNUTUZYX1JFR19JUlFfR1BJX1BFTkRJ TkcyOg0KPj4gKwljYXNlIFNUTUZYX1JFR19JUlFfR1BJX1BFTkRJTkczOg0KPj4gKwljYXNlIFNU TUZYX1JFR19HUElPX1NUQVRFMToNCj4+ICsJY2FzZSBTVE1GWF9SRUdfR1BJT19TVEFURTI6DQo+ PiArCWNhc2UgU1RNRlhfUkVHX0dQSU9fU1RBVEUzOg0KPj4gKwljYXNlIFNUTUZYX1JFR19JUlFf R1BJX1NSQzE6DQo+PiArCWNhc2UgU1RNRlhfUkVHX0lSUV9HUElfU1JDMjoNCj4+ICsJY2FzZSBT VE1GWF9SRUdfSVJRX0dQSV9TUkMzOg0KPj4gKwljYXNlIFNUTUZYX1JFR19HUE9fU0VUMToNCj4+ ICsJY2FzZSBTVE1GWF9SRUdfR1BPX1NFVDI6DQo+PiArCWNhc2UgU1RNRlhfUkVHX0dQT19TRVQz Og0KPj4gKwljYXNlIFNUTUZYX1JFR19HUE9fQ0xSMToNCj4+ICsJY2FzZSBTVE1GWF9SRUdfR1BP X0NMUjI6DQo+PiArCWNhc2UgU1RNRlhfUkVHX0dQT19DTFIzOg0KPj4gKwkJcmV0dXJuIHRydWU7 DQo+PiArCWRlZmF1bHQ6DQo+PiArCQlyZXR1cm4gZmFsc2U7DQo+PiArCX0NCj4+ICt9DQo+PiAr DQo+PiArc3RhdGljIGJvb2wgc3RtZnhfcmVnX3dyaXRlYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYs IHVuc2lnbmVkIGludCByZWcpDQo+PiArew0KPj4gKwlyZXR1cm4gKHJlZyA+PSBTVE1GWF9SRUdf U1lTX0NUUkwpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9j b25maWcgc3RtZnhfcmVnbWFwX2NvbmZpZyA9IHsNCj4+ICsJLnJlZ19iaXRzCT0gOCwNCj4+ICsJ LnJlZ19zdHJpZGUJPSAxLA0KPj4gKwkudmFsX2JpdHMJPSA4LA0KPj4gKwkubWF4X3JlZ2lzdGVy CT0gU1RNRlhfUkVHX01BWCwNCj4+ICsJLnZvbGF0aWxlX3JlZwk9IHN0bWZ4X3JlZ192b2xhdGls ZSwNCj4+ICsJLndyaXRlYWJsZV9yZWcJPSBzdG1meF9yZWdfd3JpdGVhYmxlLA0KPj4gKwkuY2Fj aGVfdHlwZQk9IFJFR0NBQ0hFX1JCVFJFRSwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBpbnQg c3RtZnhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwNCj4+ICsJCSAgICAgICBjb25z dCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpDQo+PiArew0KPj4gKwlzdHJ1Y3QgZGV2aWNlICpk ZXYgPSAmY2xpZW50LT5kZXY7DQo+PiArCXN0cnVjdCBzdG1meF9kZGF0YSAqZGRhdGE7DQo+PiAr CWludCBpLCByZXQ7DQo+PiArDQo+PiArCWRkYXRhID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9m KCpkZGF0YSksIEdGUF9LRVJORUwpOw0KPj4gKwlpZiAoIWRkYXRhKQ0KPj4gKwkJcmV0dXJuIC1F Tk9NRU07DQo+IA0KPiAnXG4nIGhlcmUgcGxlYXNlLg0KPiANCj4+ICsJLyogU3RhdGUgaG9sZGVy ICovDQo+PiArCWRkYXRhLT5zdG1meCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZGRhdGEt PnN0bWZ4KSwgR0ZQX0tFUk5FTCk7DQo+PiArCWlmICghZGRhdGEtPnN0bWZ4KQ0KPj4gKwkJcmV0 dXJuIC1FTk9NRU07DQo+PiArDQo+PiArCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGRkYXRh KTsNCj4+ICsNCj4+ICsJZGRhdGEtPnN0bWZ4LT5kZXYgPSBkZXY7DQo+PiArDQo+PiArCWRkYXRh LT5zdG1meC0+bWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LCAmc3RtZnhfcmVnbWFw X2NvbmZpZyk7DQo+IA0KPiBKdXN0IHB1dCB0aGlzIHN0cmFpZ2h0IGludG8gdGhlIHBhcmVudCBz dHJ1Y3QgYW5kIGRvIGF3YXkgd2l0aCB0aGUNCj4gZXh0cmEgY29tcGxpY2F0aW9uLg0KPiANCj4+ ICsJaWYgKElTX0VSUihkZGF0YS0+c3RtZngtPm1hcCkpIHsNCj4+ICsJCXJldCA9IFBUUl9FUlIo ZGRhdGEtPnN0bWZ4LT5tYXApOw0KPj4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gYWxsb2Nh dGUgcmVnaXN0ZXIgbWFwOiAlZFxuIiwgcmV0KTsNCj4+ICsJCXJldHVybiByZXQ7DQo+PiArCX0N Cj4+ICsNCj4+ICsJbXV0ZXhfaW5pdCgmZGRhdGEtPmxvY2spOw0KPj4gKw0KPj4gKwlyZXQgPSBz dG1meF9jaGlwX2luaXQoZGRhdGEsIGNsaWVudCk7DQo+PiArCWlmIChyZXQpIHsNCj4+ICsJCWlm IChyZXQgPT0gLUVUSU1FRE9VVCkNCj4+ICsJCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsNCj4+ICsJ CXJldHVybiByZXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYgKGNsaWVudC0+aXJxIDwgMCkgew0K Pj4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IGlycTogJWRcbiIsIGNsaWVudC0+aXJx KTsNCj4+ICsJCXJldCA9IGNsaWVudC0+aXJxOw0KPj4gKwkJZ290byBlcnJfY2hpcF9leGl0Ow0K Pj4gKwl9DQo+PiArDQo+PiArCXJldCA9IHN0bWZ4X2lycV9pbml0KGRkYXRhLCBjbGllbnQtPmly cSk7DQo+PiArCWlmIChyZXQpDQo+PiArCQlnb3RvIGVycl9jaGlwX2V4aXQ7DQo+PiArDQo+PiAr CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHN0bWZ4X2NlbGxzKTsgaSsrKSB7DQo+PiArCQlz dG1meF9jZWxsc1tpXS5wbGF0Zm9ybV9kYXRhID0gZGRhdGEtPnN0bWZ4Ow0KPj4gKwkJc3RtZnhf Y2VsbHNbaV0ucGRhdGFfc2l6ZSA9IHNpemVvZihzdHJ1Y3Qgc3RtZngpOw0KPj4gKwl9DQo+PiAr DQo+PiArCXJldCA9IGRldm1fbWZkX2FkZF9kZXZpY2VzKGRldiwgUExBVEZPUk1fREVWSURfTk9O RSwNCj4+ICsJCQkJICAgc3RtZnhfY2VsbHMsIEFSUkFZX1NJWkUoc3RtZnhfY2VsbHMpLCBOVUxM LA0KPj4gKwkJCQkgICAwLCBkZGF0YS0+aXJxX2RvbWFpbik7DQo+PiArCWlmIChyZXQpDQo+PiAr CQlnb3RvIGVycl9pcnFfZXhpdDsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArDQo+PiArZXJy X2lycV9leGl0Og0KPj4gKwlzdG1meF9pcnFfZXhpdChkZGF0YSk7DQo+PiArZXJyX2NoaXBfZXhp dDoNCj4+ICsJc3RtZnhfY2hpcF9leGl0KGRkYXRhKTsNCj4+ICsNCj4+ICsJcmV0dXJuIHJldDsN Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBzdG1meF9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkNCj4+ICt7DQo+PiArCXN0cnVjdCBzdG1meF9kZGF0YSAqZGRhdGEgPSBpMmNf Z2V0X2NsaWVudGRhdGEoY2xpZW50KTsNCj4+ICsNCj4+ICsJc3RtZnhfaXJxX2V4aXQoZGRhdGEp Ow0KPj4gKw0KPj4gKwlyZXR1cm4gc3RtZnhfY2hpcF9leGl0KGRkYXRhKTsNCj4+ICt9DQo+PiAr DQo+PiArI2lmZGVmIENPTkZJR19QTV9TTEVFUA0KPj4gK3N0YXRpYyBpbnQgc3RtZnhfYmFja3Vw X3JlZ3Moc3RydWN0IHN0bWZ4X2RkYXRhICpkZGF0YSkNCj4+ICt7DQo+PiArCWludCByZXQ7DQo+ PiArDQo+PiArCXJldCA9IHJlZ21hcF9yYXdfcmVhZChkZGF0YS0+c3RtZngtPm1hcCwgU1RNRlhf UkVHX1NZU19DVFJMLA0KPj4gKwkJCSAgICAgICZkZGF0YS0+YmtwX3N5c2N0cmwsIHNpemVvZihk ZGF0YS0+YmtwX3N5c2N0cmwpKTsNCj4+ICsJaWYgKHJldCkNCj4+ICsJCXJldHVybiByZXQ7DQo+ PiArCXJldCA9IHJlZ21hcF9yYXdfcmVhZChkZGF0YS0+c3RtZngtPm1hcCwgU1RNRlhfUkVHX0lS UV9PVVRfUElOLA0KPj4gKwkJCSAgICAgICZkZGF0YS0+YmtwX2lycW91dHBpbiwNCj4+ICsJCQkg ICAgICBzaXplb2YoZGRhdGEtPmJrcF9pcnFvdXRwaW4pKTsNCj4+ICsJaWYgKHJldCkNCj4+ICsJ CXJldHVybiByZXQ7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0 aWMgaW50IHN0bWZ4X3Jlc3RvcmVfcmVncyhzdHJ1Y3Qgc3RtZnhfZGRhdGEgKmRkYXRhKQ0KPj4g K3sNCj4+ICsJaW50IHJldDsNCj4+ICsNCj4+ICsJcmV0ID0gcmVnbWFwX3Jhd193cml0ZShkZGF0 YS0+c3RtZngtPm1hcCwgU1RNRlhfUkVHX1NZU19DVFJMLA0KPj4gKwkJCSAgICAgICAmZGRhdGEt PmJrcF9zeXNjdHJsLCBzaXplb2YoZGRhdGEtPmJrcF9zeXNjdHJsKSk7DQo+PiArCWlmIChyZXQp DQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4gKwlyZXQgPSByZWdtYXBfcmF3X3dyaXRlKGRkYXRhLT5z dG1meC0+bWFwLCBTVE1GWF9SRUdfSVJRX09VVF9QSU4sDQo+PiArCQkJICAgICAgICZkZGF0YS0+ YmtwX2lycW91dHBpbiwNCj4+ICsJCQkgICAgICAgc2l6ZW9mKGRkYXRhLT5ia3BfaXJxb3V0cGlu KSk7DQo+PiArCWlmIChyZXQpDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4gKwlyZXQgPSByZWdtYXBf cmF3X3dyaXRlKGRkYXRhLT5zdG1meC0+bWFwLCBTVE1GWF9SRUdfSVJRX1NSQ19FTiwNCj4+ICsJ CQkgICAgICAgJmRkYXRhLT5pcnFfc3JjLCBzaXplb2YoZGRhdGEtPmlycV9zcmMpKTsNCj4+ICsJ aWYgKHJldCkNCj4+ICsJCXJldHVybiByZXQ7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30N Cj4+ICsNCj4+ICtzdGF0aWMgaW50IHN0bWZ4X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0K Pj4gK3sNCj4+ICsJc3RydWN0IHN0bWZ4X2RkYXRhICpkZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShk ZXYpOw0KPj4gKwlpbnQgcmV0Ow0KPj4gKw0KPj4gKwlyZXQgPSBzdG1meF9iYWNrdXBfcmVncyhk ZGF0YSk7DQo+PiArCWlmIChyZXQpIHsNCj4+ICsJCWRldl9lcnIoZGRhdGEtPnN0bWZ4LT5kZXYs ICJyZWdpc3RlcnMgYmFja3VwIGZhaWx1cmVcbiIpOw0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsJ fQ0KPj4gKw0KPj4gKwlpZiAoIUlTX0VSUihkZGF0YS0+dmRkKSkgew0KPj4gKwkJcmV0ID0gcmVn dWxhdG9yX2Rpc2FibGUoZGRhdGEtPnZkZCk7DQo+PiArCQlpZiAocmV0KQ0KPj4gKwkJCXJldHVy biByZXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0 YXRpYyBpbnQgc3RtZnhfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCj4+ICt7DQo+PiArCXN0 cnVjdCBzdG1meF9kZGF0YSAqZGRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4+ICsJaW50 IHJldDsNCj4+ICsNCj4+ICsJaWYgKCFJU19FUlIoZGRhdGEtPnZkZCkpIHsNCj4+ICsJCXJldCA9 IHJlZ3VsYXRvcl9lbmFibGUoZGRhdGEtPnZkZCk7DQo+PiArCQlpZiAocmV0KSB7DQo+PiArCQkJ ZGV2X2VycihkZGF0YS0+c3RtZngtPmRldiwNCj4+ICsJCQkJInZkZCBlbmFibGUgZmFpbGVkOiAl ZFxuIiwgcmV0KTsNCj4+ICsJCQlyZXR1cm4gcmV0Ow0KPj4gKwkJfQ0KPj4gKwl9DQo+PiArDQo+ PiArCXJldCA9IHN0bWZ4X3Jlc3RvcmVfcmVncyhkZGF0YSk7DQo+PiArCWlmIChyZXQpIHsNCj4+ ICsJCWRldl9lcnIoZGRhdGEtPnN0bWZ4LT5kZXYsICJyZWdpc3RlcnMgcmVzdG9yYXRpb24gZmFp bHVyZVxuIik7DQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4gKwl9DQo+PiArDQo+PiArCXJldHVybiAw Ow0KPj4gK30NCj4+ICsjZW5kaWYNCj4+ICsNCj4+ICtzdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMo c3RtZnhfZGV2X3BtX29wcywgc3RtZnhfc3VzcGVuZCwgc3RtZnhfcmVzdW1lKTsNCj4+ICsNCj4+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdG1meF9vZl9tYXRjaFtdID0gew0K Pj4gKwl7IC5jb21wYXRpYmxlID0gInN0LHN0bWZ4LTAzMDAiLCB9LA0KPj4gKwl7fSwNCj4+ICt9 Ow0KPj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0bWZ4X29mX21hdGNoKTsNCj4+ICsNCj4+ ICtzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgc3RtZnhfZHJpdmVyID0gew0KPj4gKwkuZHJpdmVy ID0gew0KPj4gKwkJLm5hbWUgPSAic3RtZngtY29yZSIsDQo+PiArCQkub2ZfbWF0Y2hfdGFibGUg PSBvZl9tYXRjaF9wdHIoc3RtZnhfb2ZfbWF0Y2gpLA0KPj4gKwkJLnBtID0gJnN0bWZ4X2Rldl9w bV9vcHMsDQo+PiArCX0sDQo+PiArCS5wcm9iZSA9IHN0bWZ4X3Byb2JlLA0KPj4gKwkucmVtb3Zl ID0gc3RtZnhfcmVtb3ZlLA0KPj4gK307DQo+PiArbW9kdWxlX2kyY19kcml2ZXIoc3RtZnhfZHJp dmVyKTsNCj4+ICsNCj4+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlNUTUZYIGNvcmUgZHJpdmVyIik7 DQo+PiArTU9EVUxFX0FVVEhPUigiQW1lbGllIERlbGF1bmF5IDxhbWVsaWUuZGVsYXVuYXlAc3Qu Y29tPiIpOw0KPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L21mZC9zdG1meC5oIGIvaW5jbHVkZS9saW51eC9tZmQvc3RtZnguaA0KPj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAuLjM1YzNkNDINCj4+IC0tLSAv ZGV2L251bGwNCj4+ICsrKyBiL2luY2x1ZGUvbGludXgvbWZkL3N0bWZ4LmgNCj4+IEBAIC0wLDAg KzEsMjcgQEANCj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPj4g Ky8qDQo+PiArICogQ29weXJpZ2h0IChDKSAyMDE4IFNUTWljcm9lbGVjdHJvbmljcw0KPj4gKyAq IEF1dGhvcihzKTogQW1lbGllIERlbGF1bmF5IDxhbWVsaWUuZGVsYXVuYXlAc3QuY29tPi4NCj4+ ICsgKi8NCj4+ICsNCj4+ICsjaWZuZGVmIE1GRF9TVE1GWF9IDQo+PiArI2RlZmluZSBNRlhfU1RN RlhfSA0KPj4gKw0KPj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4NCj4+ICsNCj4+ICtlbnVt IHN0bWZ4X2Z1bmN0aW9ucyB7DQo+PiArCVNUTUZYX0ZVTkNfR1BJTwkJPSBCSVQoMCksIC8qIEdQ SU9bMTU6MF0gKi8NCj4+ICsJU1RNRlhfRlVOQ19BTFRHUElPX0xPVwk9IEJJVCgxKSwgLyogYUdQ SU9bMzowXSAqLw0KPj4gKwlTVE1GWF9GVU5DX0FMVEdQSU9fSElHSCA9IEJJVCgyKSwgLyogYUdQ SU9bNzo0XSAqLw0KPj4gKwlTVE1GWF9GVU5DX1RTCQk9IEJJVCgzKSwNCj4+ICsJU1RNRlhfRlVO Q19JREQJCT0gQklUKDQpLA0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IHN0bWZ4IHsNCj4+ICsJ c3RydWN0IGRldmljZSAqZGV2Ow0KPj4gKwlzdHJ1Y3QgcmVnbWFwICptYXA7DQo+PiArfTsNCj4+ ICsNCj4+ICtpbnQgc3RtZnhfZnVuY3Rpb25fZW5hYmxlKHN0cnVjdCBzdG1meCAqc3RtZngsIHUz MiBmdW5jKTsNCj4+ICtpbnQgc3RtZnhfZnVuY3Rpb25fZGlzYWJsZShzdHJ1Y3Qgc3RtZnggKnN0 bWZ4LCB1MzIgZnVuYyk7DQo+PiArI2VuZGlmDQo+IA0KDQpWNCBpcyBjb21pbmcsIGJhc2VkIG9u IHlvdXIgY29tbWVudHMuIFRoYW5rcyBmb3IgdGhlIHJldmlldy4NCg0KUmVnYXJkcywNCkFtZWxp ZQ==