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=-13.1 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=unavailable 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 5ED6AC43461 for ; Mon, 7 Sep 2020 09:17:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D69532078E for ; Mon, 7 Sep 2020 09:17:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="LkFxTf+E"; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="jBIcNwty" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728293AbgIGJRR (ORCPT ); Mon, 7 Sep 2020 05:17:17 -0400 Received: from esa4.microchip.iphmx.com ([68.232.154.123]:26586 "EHLO esa4.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728173AbgIGJRE (ORCPT ); Mon, 7 Sep 2020 05:17:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1599470221; x=1631006221; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=wA723HqO3WncHSNqAUyxI0kCShkemxzj/fpkkitaCG8=; b=LkFxTf+EO6gQ7M7mwxw23R3O63kteqMGJp71tA7GNq3/zaf9krf25xjS MQiU4v+vGgcuE8FpTdM3FiasI1S/SHuNq3Y8p6ZUvk73rnfr1E1Pw+fRd 9Y5OV5eeXdn2RPolIN+fdl7f+ESX//b9EzubvFNRLQVu0J/a/8T9Iuqoh 7UucB7g9cmA6UHKrZXcjJ5xredmUEPfmAgBhhNCzvf5WjBL9iMJnskVOY VWzxOB/6jGEhY2mlCXbdJ1zTxdJZoUl12ZRZa4GF2BzYBUX3iNWO9VW2E RRgG4upjM97vipUPIUaDPUHTuWURL2tEEPjiGel1TGuttibAhaXSPHFi+ w==; IronPort-SDR: KYR0CiC3jRbG53ZtZ2Y3bJubEV+WvTfSoCFo5+hO/qb8nSbPUpUkmIbRl35/qGzLNBtQLzwECe cYcYsABaCc+RNLWPL9sW8oDKZK9f0sKSuSHz+0tcf2bjIFwpWhitZHpbfra8WLpmacfWH74bsn mKxbDVkHHwNkGxrP9wYA5YJFX8YbkRXo9TR1ONepTcMjixjbBvPFwYq66g5E/MIoK5SZyckuWN +sZZ5/LjoWtEJ7sUL7PYbxX+2t5deZVfnk5DknrY2w6iMWpqrPl6igE4HHEIBPKNSfGnqeGtoV Zpc= X-IronPort-AV: E=Sophos;i="5.76,401,1592895600"; d="scan'208";a="86039770" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 07 Sep 2020 02:17:00 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Mon, 7 Sep 2020 02:16:35 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3 via Frontend Transport; Mon, 7 Sep 2020 02:16:48 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iy7kjlu4oqXwXwaUweiDyMxyMgXOvmfkhfaCxK8dUdcLmyQwa/nRDc9ngUvLDmpO9dtrCxiPaRgLkFSK8U86lJQjLnEmvJAMl2N8B2qGw4g+OV/Kh1aXvZKnHOgARwM4UwXF32x8xdLYAjFuM6Wp1us/jW1kcmWsdfJiyOwA1uphaqzcPA1beY5KWKAYPDtb2aCA6aFKmVN2SjAczL2Nui/xnetRIJ+WzedlNgDrg7g5uLqXinC6DD60XsjbV2XnZJU+Mc1Ze0+vxCG86RFpsNwLWgjTiLczoxjVl3RkQBMGTJFnYDpQZy+R6qdPgU44Z79qdf6gMoy0VFhbw68D8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wA723HqO3WncHSNqAUyxI0kCShkemxzj/fpkkitaCG8=; b=EofAj7gtlHU8IRYSjk3IDN7qQe4h4hvqnUfaiq9PWoJFizX6dRVV0+oeIQzUfIzM5wtWA2doVlBpePC46pM2q5bUpiqO+LqYVBm9uztYkbPU5oNtX+eT98gftbkUtIHOAuY9Q56dDpp0DvDRp3BiSEIgE+u5xd3Ff14rK9JvK6y0/G5YVTeeFd8q+XlOOpjcHjIG1N3aft4HKn0QGd0gcxC0nCA9ZwuieRwuaGA7PdwK6l4Vy5voxZU1gIe1zvxryLykIfnhYKHlijr8WWCIy2FR3u85iZIoAKUOABhx+orXT3RiSBYfsDeuIJXg4oL9Vlcvk/6H9W0HoSqJLXcxyQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wA723HqO3WncHSNqAUyxI0kCShkemxzj/fpkkitaCG8=; b=jBIcNwtyJlmagx+y4o2hdtVRqE/vzxWqdaujzUL+0sViZ6fAK+tIs1oOy6BBYR2g/7ekduet438Q40CtFqzaTK4PpGgPdc0m8to3eNvn1phqnNlCY89Wz4S9/bSfmA48e+zEhy9tstM9uf5AJUV7uj9Q3/oAtIa4mLZT1LRSQ5Q= Received: from BYAPR11MB2999.namprd11.prod.outlook.com (2603:10b6:a03:90::17) by BYAPR11MB3494.namprd11.prod.outlook.com (2603:10b6:a03:86::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3348.15; Mon, 7 Sep 2020 09:16:57 +0000 Received: from BYAPR11MB2999.namprd11.prod.outlook.com ([fe80::3956:c6f:11a4:b79]) by BYAPR11MB2999.namprd11.prod.outlook.com ([fe80::3956:c6f:11a4:b79%7]) with mapi id 15.20.3348.015; Mon, 7 Sep 2020 09:16:57 +0000 From: To: CC: , , , , Subject: Re: [PATCH v3 2/3] media: atmel: introduce microchip csi2dc driver Thread-Topic: [PATCH v3 2/3] media: atmel: introduce microchip csi2dc driver Thread-Index: AQHWe3V9RwslavJrYkuDX2boZhbxY6lR8KWAgAsHsoA= Date: Mon, 7 Sep 2020 09:16:57 +0000 Message-ID: References: <20200826065142.205000-1-eugen.hristev@microchip.com> <20200826065142.205000-2-eugen.hristev@microchip.com> <20200831085031.GB844@valkosipuli.retiisi.org.uk> In-Reply-To: <20200831085031.GB844@valkosipuli.retiisi.org.uk> Accept-Language: en-US, ro-RO Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 authentication-results: iki.fi; dkim=none (message not signed) header.d=none;iki.fi; dmarc=none action=none header.from=microchip.com; x-originating-ip: [188.27.154.227] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ccc2fe02-c978-4ae1-366e-08d8530ec548 x-ms-traffictypediagnostic: BYAPR11MB3494: x-microsoft-antispam-prvs: x-bypassexternaltag: True x-ms-oob-tlc-oobclassifiers: OLM:7219; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xcNXYgtVCTofL8XNozIwU2DTKZch5gsaOjlTeHNxJRaJqGlUSUee9LD0xiZVgOeZJ8G9jOHi9fc9zBLrTGk+sJvsAPeHkvQRc00NdYatTDK3eIZvkyB+eeIf3VbnHxStzdFbv5OAP3UrHHMmsQcLdes9u1hkiSil7xCB0TGkVBREfzw/7fjNBegvMLuGjFnhBEYYMt2LZ9Cn5wge5GWW14iJwH3sk9GFvzwg0X4YOtEDMeopOqj13HXCan93rzjIEOLjMkDZfy/vzoWoHPC6rzmBO4S1pLb0vppRwrHVEwO6B29g6cNcIrGAZAoYE4C0k5XjFLF225lhbJ+ZL0V3HoH8rES99ITrgqDCO5CNXghm5hQH71vvOJtwv1RpBsn31FXlw7OMCnqOcEK4IlSc/HYolXQcQI3oVbIDrfuhgkA= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR11MB2999.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(136003)(39860400002)(376002)(396003)(346002)(26005)(2616005)(186003)(2906002)(86362001)(54906003)(83380400001)(36756003)(316002)(30864003)(4326008)(6512007)(31696002)(76116006)(8936002)(64756008)(478600001)(6486002)(6916009)(5660300002)(66446008)(31686004)(91956017)(6506007)(66476007)(71200400001)(53546011)(8676002)(66946007)(66556008)(461764006)(43740500002)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: XokJANnhr/JEcZUISHYK4l5W52xj2lk9xoVeXywsCS3auBLjPKT9aTEFGo5jQvXpKVP85TjdR54zbuxMxiMsvnCPV10Edw/KcDkX3ZNe4H5d0l4cN3YodvWOEDtG+/3N1+qKDYWgZwCIobtDq0VaHzAe5ujdScAJeQyEAP+JLfHa+ZvAEqi+5HO0W0p0Jr/ZtHB7VcJzxsx4jRLszlJ386p1IcVGbe8z82O5YRQ5ggVx6b+/kI4ldKCWJ1GL+8t+sOnLbnZ5OERF0PT0cLSDAo0kVJL1Lka/wq9RkTdkMaIjonZPlLOowDODOPTf/pyEG97qCjmnrZN38QEMyynRmH+zymbr7vCaUkyXHiqjiXGZvLAbhRtgP1cpK2XFkKMcA19GaANV+je58fyj7YhQnWCZ2O5Du7OBIl5+2UwW5uy+1M70c/aiM2XOcgwLTh8FBqjMemsMCrvf2VRz2wjPWnBQNBuWmte5T9+yTnH7+BoWHd/oxYJF4HILkWRhwbh+RSxx+VgiVnXC3d3ZtkWSAR16Khqz/eygHZhgswBG7RWhh992VHpHE6UouP2+yAf0vVlnbdPTlSlG27ygkEdhdK74mXT20eq4X4duXlCdYV2kNSEVop4CoVKlphrKAPP9x+DTpAhGaymrEma+68OqTA== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <870928CBFA4CA946BF19908ACD83FC5F@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB2999.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ccc2fe02-c978-4ae1-366e-08d8530ec548 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Sep 2020 09:16:57.5727 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: yODmFxAueRHPee7wAIHEVnflQQENn4LiUrQq17gbruLNbyHxiBDbzAGPTWAsx2h0zIbsGgQ/YCJlxLaG8r7hfJ2pe9YzZBbP2ebbolmGd74= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3494 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMzEuMDguMjAyMCAxMTo1MCwgU2FrYXJpIEFpbHVzIHdyb3RlOg0KDQo+IEhpIEV1Z2VuLA0K PiANCj4gVGhhbmtzIGZvciB0aGUgdXBkYXRlLg0KDQpIaSBTYWthcmksDQoNClRoYW5rcyBmb3Ig cmV2aWV3aW5nLCBidXQsIGNvdWxkIHlvdSBwbGVhc2UgaGVscCBtZSB1bmRlcnN0YW5kIHlvdXIg DQpyZXZpZXcgYmVsb3cgPw0KDQo+IA0KPiBPbiBXZWQsIEF1ZyAyNiwgMjAyMCBhdCAwOTo1MTo0 MUFNICswMzAwLCBFdWdlbiBIcmlzdGV2IHdyb3RlOg0KPj4gTWljcm9jaGlwIENTSTJEQyAoQ1NJ MiBEZW11bHRpcGxleGVyIENvbnRyb2xsZXIpIGlzIGEgbWlzYyBicmlkZ2UgZGV2aWNlDQo+PiB0 aGF0IGNvbnZlcnRzIGEgYnl0ZSBzdHJlYW0gaW4gSURJIFN5bm9wc3lzIGZvcm1hdCAoY29taW5n IGZyb20gYSBDU0kySE9TVCkNCj4+IHRvIGEgcGl4ZWwgc3RyZWFtIHRoYXQgY2FuIGJlIGNhcHR1 cmVkIGJ5IGEgc2Vuc29yIGNvbnRyb2xsZXIuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogRXVnZW4g SHJpc3RldiA8ZXVnZW4uaHJpc3RldkBtaWNyb2NoaXAuY29tPg0KPj4gLS0tDQo+PiBDaGFuZ2Vz IGluIHYyOg0KPj4gLSBtb3ZlZCBkcml2ZXIgdG8gcGxhdGZvcm0vYXRtZWwNCj4+IC0gZml4ZWQg bWlub3IgdGhpbmdzIGFzIHBlciBTYWthcmkncyByZXZpZXcNCj4+IC0gc3RpbGwgc29tZSB0aGlu Z3MgZnJvbSB2MiByZXZpZXcgYXJlIG5vdCB5ZXQgYWRkcmVzc2VkLCB0byBiZSBmb2xsb3dlZCB1 cA0KPj4NCj4+ICAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9LY29uZmlnICAgICAgICAg IHwgIDEzICsNCj4+ICAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9NYWtlZmlsZSAgICAg ICAgIHwgICAxICsNCj4+ICAgLi4uL21lZGlhL3BsYXRmb3JtL2F0bWVsL21pY3JvY2hpcC1jc2ky ZGMuYyAgIHwgNzAwICsrKysrKysrKysrKysrKysrKw0KPj4gICAzIGZpbGVzIGNoYW5nZWQsIDcx NCBpbnNlcnRpb25zKCspDQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3Bs YXRmb3JtL2F0bWVsL21pY3JvY2hpcC1jc2kyZGMuYw0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL0tjb25maWcgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L2F0bWVsL0tjb25maWcNCj4+IGluZGV4IDE4NTBmZTdmOTM2MC4uODBiYmRkY2MyNTA0IDEwMDY0 NA0KPj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9LY29uZmlnDQo+PiArKysg Yi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL0tjb25maWcNCj4+IEBAIC0yMSwzICsyMSwx NiBAQCBjb25maWcgVklERU9fQVRNRUxfSVNJDQo+PiAgICAgICAgaGVscA0KPj4gICAgICAgICAg VGhpcyBtb2R1bGUgbWFrZXMgdGhlIEFUTUVMIEltYWdlIFNlbnNvciBJbnRlcmZhY2UgYXZhaWxh YmxlDQo+PiAgICAgICAgICBhcyBhIHY0bDIgZGV2aWNlLg0KPj4gKw0KPj4gK2NvbmZpZyBWSURF T19NSUNST0NISVBfQ1NJMkRDDQo+PiArICAgICB0cmlzdGF0ZSAiTWljcm9jaGlwIENTSTIgRGVt dXggQ29udHJvbGxlciINCj4+ICsgICAgIGRlcGVuZHMgb24gVklERU9fVjRMMiAmJiBDT01NT05f Q0xLICYmIE9GDQo+PiArICAgICBkZXBlbmRzIG9uIEFSQ0hfQVQ5MSB8fCBDT01QSUxFX1RFU1QN Cj4+ICsgICAgIHNlbGVjdCBNRURJQV9DT05UUk9MTEVSDQo+PiArICAgICBzZWxlY3QgVklERU9f VjRMMl9TVUJERVZfQVBJDQo+PiArICAgICBzZWxlY3QgVjRMMl9GV05PREUNCj4+ICsgICAgIGhl bHANCj4+ICsgICAgICAgQ1NJMiBEZW11eCBDb250cm9sbGVyIGRyaXZlci4gQ1NJMkRDIGlzIGEg aGVscGVyIGNoaXANCj4+ICsgICAgICAgdGhhdCBjb252ZXJ0cyBJREkgaW50ZXJmYWNlIGJ5dGUg c3RyZWFtIHRvIGEgcGFyYWxsZWwgcGl4ZWwgc3RyZWFtLg0KPj4gKyAgICAgICBJdCBzdXBwb3J0 cyB2YXJpb3VzIFJBVyBmb3JtYXRzIGFzIGlucHV0Lg0KPj4gKyAgICAgICBQZXJmb3JtcyBjbG9j ayBkb21haW4gY3Jvc3NpbmcgYmV0d2VlbiBoYXJkd2FyZSBibG9ja3MuDQo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vYXRtZWwvTWFrZWZpbGUNCj4+IGluZGV4IDJkYmEzODk5NGE3MC4uOGFmN2M1YjUz NGMzIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9NYWtlZmls ZQ0KPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9NYWtlZmlsZQ0KPj4gQEAg LTMsMyArMyw0IEBAIGF0bWVsLWlzYy1vYmpzID0gYXRtZWwtc2FtYTVkMi1pc2MubyBhdG1lbC1p c2MtYmFzZS5vDQo+Pg0KPj4gICBvYmotJChDT05GSUdfVklERU9fQVRNRUxfSVNJKSArPSBhdG1l bC1pc2kubw0KPj4gICBvYmotJChDT05GSUdfVklERU9fQVRNRUxfSVNDKSArPSBhdG1lbC1pc2Mu bw0KPj4gK29iai0kKENPTkZJR19WSURFT19NSUNST0NISVBfQ1NJMkRDKSArPSBtaWNyb2NoaXAt Y3NpMmRjLm8NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL21p Y3JvY2hpcC1jc2kyZGMuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvbWljcm9jaGlw LWNzaTJkYy5jDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAw Li45N2QwN2E4MGJiZjcNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vYXRtZWwvbWljcm9jaGlwLWNzaTJkYy5jDQo+PiBAQCAtMCwwICsxLDcwMCBAQA0K Pj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+PiArLyoNCj4+ICsgKiBN aWNyb2NoaXAgQ1NJMiBEZW11eCBDb250cm9sbGVyIChDU0kyREMpIGRyaXZlcg0KPj4gKyAqDQo+ PiArICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgTWljcm9jaGlwIFRlY2hub2xvZ3ksIEluYy4N Cj4+ICsgKg0KPj4gKyAqIEF1dGhvcjogRXVnZW4gSHJpc3RldiA8ZXVnZW4uaHJpc3RldkBtaWNy b2NoaXAuY29tPg0KPj4gKyAqDQo+PiArICovDQo+PiArDQo+PiArI2luY2x1ZGUgPGxpbnV4L2Ns ay5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgv b2YuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4NCj4+ICsjaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4N Cj4+ICsjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYyLmg+DQo+PiArDQo+PiArI2luY2x1ZGUgPG1l ZGlhL3Y0bDItZGV2aWNlLmg+DQo+PiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItZndub2RlLmg+DQo+ PiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItc3ViZGV2Lmg+DQo+PiArI2luY2x1ZGUgPG1lZGlhL3Zp ZGVvYnVmMi1kbWEtY29udGlnLmg+DQo+PiArDQo+PiArLyogR2xvYmFsIGNvbmZpZ3VyYXRpb24g cmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19HQ0ZHICAgICAgICAgICAgICAgICAgMHgw DQo+PiArDQo+PiArLyogTUlQSSBzZW5zb3IgcGl4ZWwgY2xvY2sgaXMgZnJlZSBydW5uaW5nICov DQo+PiArI2RlZmluZSBDU0kyRENfR0NGR19NSVBJRlJOICAgICAgICAgIEJJVCgwKQ0KPj4gKy8q IE91dHB1dCB3YXZlZm9ybSBpbnRlci1saW5lIG1pbmltdW0gZGVsYXkgKi8NCj4+ICsjZGVmaW5l IENTSTJEQ19HQ0ZHX0hMQyh2KSAgICAgICAgICAgKCh2KSA8PCA0KQ0KPj4gKyNkZWZpbmUgQ1NJ MkRDX0dDRkdfSExDX01BU0sgICAgICAgICBHRU5NQVNLKDcsIDQpDQo+PiArDQo+PiArLyogR2xv YmFsIGNvbnRyb2wgcmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19HQ1RMUiAgICAgICAg ICAgICAgICAgMHgwNA0KPj4gKyNkZWZpbmUgQ1NJMkRDX0dDVExSX1NXUlNUICAgICAgICAgICBC SVQoMCkNCj4+ICsNCj4+ICsvKiBHbG9iYWwgc3RhdHVzIHJlZ2lzdGVyICovDQo+PiArI2RlZmlu ZSBDU0kyRENfR1MgICAgICAgICAgICAgICAgICAgIDB4MDgNCj4+ICsNCj4+ICsvKiBTU1AgaW50 ZXJydXB0IHN0YXR1cyByZWdpc3RlciAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1NTUElTICAgICAg ICAgICAgICAgICAweDI4DQo+PiArLyogUGlwZSB1cGRhdGUgcmVnaXN0ZXIgKi8NCj4+ICsjZGVm aW5lIENTSTJEQ19QVSAgICAgICAgICAgICAgICAgICAgMHhDMA0KPj4gKy8qIFZpZGVvIHBpcGUg YXR0cmlidXRlcyB1cGRhdGUgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19QVV9WUCAgICAgICAgICAg ICAgICAgQklUKDApDQo+PiArDQo+PiArLyogUGlwZSB1cGRhdGUgc3RhdHVzIHJlZ2lzdGVyICov DQo+PiArI2RlZmluZSBDU0kyRENfUFVTICAgICAgICAgICAgICAgICAgIDB4QzQNCj4+ICsNCj4+ ICsvKiBWaWRlbyBwaXBlbGluZSBlbmFibGUgcmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJE Q19WUEUgICAgICAgICAgICAgICAgICAgMHhGOA0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQRV9FTkFC TEUgICAgICAgICAgICBCSVQoMCkNCj4+ICsNCj4+ICsvKiBWaWRlbyBwaXBlbGluZSBjb25maWd1 cmF0aW9uIHJlZ2lzdGVyICovDQo+PiArI2RlZmluZSBDU0kyRENfVlBDRkcgICAgICAgICAgICAg ICAgIDB4RkMNCj4+ICsvKiBEYXRhIHR5cGUgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19E VCh2KSAgICAgICAgICAgKCh2KSA8PCAwKQ0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX0RUX01B U0sgICAgICAgICBHRU5NQVNLKDUsIDApDQo+PiArLyogVmlydHVhbCBjaGFubmVsIGlkZW50aWZp ZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19WQyh2KSAgICAgICAgICAgKCh2KSA8PCA2 KQ0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX1ZDX01BU0sgICAgICAgICBHRU5NQVNLKDcsIDYp DQo+PiArLyogRGVjb21wcmVzc2lvbiBlbmFibGUgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19WUENG R19ERSAgICAgICAgICAgICAgICAgICAgICBCSVQoOCkNCj4+ICsvKiBEZWNvZGVyIG1vZGUgKi8N Cj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19ETSh2KSAgICAgICAgICAgKCh2KSA8PCA5KQ0KPj4g KyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX0RNX0RFQ09ERVI4VE8xMiAwDQo+PiArLyogRGVjb2RlciBw cmVkaWN0b3IgMiBzZWxlY3Rpb24gKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19EUDIgICAg ICAgICAgICAgQklUKDEyKQ0KPj4gKy8qIFJlY29tbWVuZGVkIG1lbW9yeSBzdG9yYWdlICovDQo+ PiArI2RlZmluZSBDU0kyRENfVlBDRkdfUk1TICAgICAgICAgICAgIEJJVCgxMykNCj4+ICsvKiBQ b3N0IGFkanVzdG1lbnQgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19QQSAgICAgICAgICAg ICAgICAgICAgICBCSVQoMTQpDQo+PiArDQo+PiArLyogVmlkZW8gcGlwZWxpbmUgY29sdW1uIHJl Z2lzdGVyICovDQo+PiArI2RlZmluZSBDU0kyRENfVlBDT0wgICAgICAgICAgICAgICAgIDB4MTAw DQo+PiArLyogQ29sdW1uIG51bWJlciAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ09MX0NPTCh2 KSAgICAgICAgICAoKHYpIDw8IDApDQo+PiArI2RlZmluZSBDU0kyRENfVlBDT0xfQ09MX01BU0sg ICAgICAgICAgICAgICAgR0VOTUFTSygxNSwgMCkNCj4+ICsNCj4+ICsvKiBWaWRlbyBwaXBlbGlu ZSByb3cgcmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19WUFJPVyAgICAgICAgICAgICAg ICAgMHgxMDQNCj4+ICsvKiBSb3cgbnVtYmVyICovDQo+PiArI2RlZmluZSBDU0kyRENfVlBST1df Uk9XKHYpICAgICAgICAgICgodikgPDwgMCkNCj4+ICsjZGVmaW5lIENTSTJEQ19WUFJPV19ST1df TUFTSyAgICAgICAgICAgICAgICBHRU5NQVNLKDE1LCAwKQ0KPj4gKw0KPj4gKy8qIFZlcnNpb24g cmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19WRVJTSU9OICAgICAgICAgICAgICAgICAg ICAgICAweDFGQw0KPj4gKw0KPj4gKy8qIHJlZ2lzdGVyIHJlYWQvd3JpdGUgaGVscGVycyAqLw0K Pj4gKyNkZWZpbmUgY3NpMmRjX3JlYWRsKHN0LCByZWcpICAgICAgICAgICAgICAgIHJlYWRsX3Jl bGF4ZWQoKHN0KS0+YmFzZSArIChyZWcpKQ0KPj4gKyNkZWZpbmUgY3NpMmRjX3dyaXRlbChzdCwg cmVnLCB2YWwpICB3cml0ZWxfcmVsYXhlZCgodmFsKSwgKHN0KS0+YmFzZSArIChyZWcpKQ0KPj4g Kw0KPj4gKy8qIHN1cHBvcnRlZCBSQVcgZGF0YSB0eXBlcyAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRD X0RUX1JBVzYgICAgICAgICAgICAgICAgICAgICAgIDB4MjgNCj4+ICsjZGVmaW5lIENTSTJEQ19E VF9SQVc3ICAgICAgICAgICAgICAgICAgICAgICAweDI5DQo+PiArI2RlZmluZSBDU0kyRENfRFRf UkFXOCAgICAgICAgICAgICAgICAgICAgICAgMHgyQQ0KPj4gKyNkZWZpbmUgQ1NJMkRDX0RUX1JB VzEwICAgICAgICAgICAgICAgICAgICAgIDB4MkINCj4+ICsjZGVmaW5lIENTSTJEQ19EVF9SQVcx MiAgICAgICAgICAgICAgICAgICAgICAweDJDDQo+PiArI2RlZmluZSBDU0kyRENfRFRfUkFXMTQg ICAgICAgICAgICAgICAgICAgICAgMHgyRA0KPj4gKw0KPj4gK3N0cnVjdCBjc2kyZGNfZm9ybWF0 IHsNCj4+ICsgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWJ1c19jb2RlOw0K Pj4gKyAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdDsNCj4+ICt9Ow0KPj4g Kw0KPj4gK3N0YXRpYyBzdHJ1Y3QgY3NpMmRjX2Zvcm1hdCBjc2kyZGNfZm9ybWF0c19saXN0W10g PSB7DQo+IA0KPiBjb25zdA0KDQpFbGVtZW50cyBmcm9tIHRoaXMgYXJyYXkgYXJlIGJlaW5nIHNl bGVjdGVkIGluIGEgZHluYW1pYyBsaXN0LCBhbmQgDQpwb2ludGVkIGZyb20gYSBub24tY29uc3Qg YXJyYXkgb2Ygc2VsZWN0ZWQgd29ya2luZyBmb3JtYXRzIChhdCBzdWJkZXZpY2UgDQpjb21wbGV0 aW9uIHRpbWUpLiBJZiBJIG1ha2UgdGhpcyBjb25zdCAsIEkgd2lsbCBnZXQgY29tcGlsZXIgd2Fy bmluZ3MgDQp3aGVuIGFzc2lnbmluZyB0byB0aGUgbm9uLWNvbnN0IGFycmF5Lg0KV2hhdCBzb2x1 dGlvbiBkbyB5b3Ugc3VnZ2VzdCBmb3IgdGhpcyA/DQoNCg0KPiANCj4+ICsgICAgIHsNCj4+ICsg ICAgICAgICAgICAgLm1idXNfY29kZSA9ICAgICAgICAgICAgTUVESUFfQlVTX0ZNVF9TUkdHQjEw XzFYMTAsDQo+PiArICAgICAgICAgICAgIC5kdCA9ICAgICAgICAgICAgICAgICAgIENTSTJEQ19E VF9SQVcxMCwNCj4+ICsgICAgIH0sDQo+PiArfTsNCj4+ICsNCj4+ICtlbnVtIG1pcGlfY3NpX3Bh ZHMgew0KPj4gKyAgICAgQ1NJMkRDX1BBRF9TSU5LICAgICAgICAgICAgICAgICA9IDAsDQo+PiAr ICAgICBDU0kyRENfUEFEX1NPVVJDRSAgICAgICAgICAgICAgID0gMSwNCj4+ICsgICAgIENTSTJE Q19QQURTX05VTSAgICAgICAgICAgICAgICAgPSAyLA0KPj4gK307DQo+PiArDQo+PiArc3RydWN0 IGNzaTJkY19kZXZpY2Ugew0KPj4gKyAgICAgdm9pZCBfX2lvbWVtICAgICAgICAgICAgICAgICAg ICAqYmFzZTsNCj4+ICsgICAgIHN0cnVjdCB2NGwyX3N1YmRldiAgICAgICAgICAgICAgY3NpMmRj X3NkOw0KPj4gKyAgICAgc3RydWN0IGRldmljZSAgICAgICAgICAgICAgICAgICAqZGV2Ow0KPj4g KyAgICAgc3RydWN0IHY0bDJfZGV2aWNlICAgICAgICAgICAgICB2NGwyX2RldjsNCj4gDQo+IFRo aXMgZGV2aWNlIGlzIGEgYnJpZGdlOyB0aGUgVjRMMiBkZXZpY2Ugc2hvdWxkIGJlIHJlZ2lzdGVy ZWQgYnkgdGhlIG1hc3Rlcg0KPiBkcml2ZXIsIGkuZS4gdGhlIG9uZSBoYW5kbGluZyBETUEgYW5k IHJlZ2lzdGVyaW5nIHRoZSB2aWRlbyBub2Rlcy4gUGxlYXNlDQo+IGRyb3AgdGhpcy4NCj4gDQo+ PiArICAgICBzdHJ1Y3QgY2xrICAgICAgICAgICAgICAgICAgICAgICpwY2xrOw0KPj4gKyAgICAg c3RydWN0IGNsayAgICAgICAgICAgICAgICAgICAgICAqc2NjazsNCj4+ICsNCj4+ICsgICAgIGJv b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9fcGlwZTsNCj4+ICsNCj4+ICsgICAg IHUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX2ZtdHM7DQo+PiArICAgICBzdHJ1 Y3QgY3NpMmRjX2Zvcm1hdCAgICAgICAgICAgICoqZm9ybWF0czsNCj4+ICsNCj4+ICsgICAgIHN0 cnVjdCBjc2kyZGNfZm9ybWF0ICAgICAgICAgICAgKmN1cl9mbXQ7DQo+PiArICAgICBzdHJ1Y3Qg Y3NpMmRjX2Zvcm1hdCAgICAgICAgICAgICp0cnlfZm10Ow0KPj4gKw0KPj4gKyAgICAgc3RydWN0 IG1lZGlhX3BhZCAgICAgICAgICAgICAgICBwYWRzW0NTSTJEQ19QQURTX05VTV07DQo+PiArDQo+ PiArICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsa19nYXRlZDsNCj4+ICsg ICAgIHUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJfbGluZV9kZWxheTsNCj4+ ICsgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmM7DQo+PiArDQo+PiArICAg ICBzdHJ1Y3QgdjRsMl9hc3luY19zdWJkZXYgICAgICAgICphc2Q7DQo+PiArICAgICBzdHJ1Y3Qg djRsMl9hc3luY19ub3RpZmllciAgICAgIG5vdGlmaWVyOw0KPj4gKw0KPj4gKyAgICAgc3RydWN0 IHY0bDJfc3ViZGV2ICAgICAgICAgICAgICAqaW5wdXRfc2Q7DQo+PiArICAgICBib29sICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZDsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRp YyB2b2lkIGNzaTJkY192cF91cGRhdGUoc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYykNCj4+ ICt7DQo+PiArICAgICB1MzIgdnA7DQo+PiArDQo+PiArICAgICB2cCA9IENTSTJEQ19WUENGR19E VChjc2kyZGMtPmN1cl9mbXQtPmR0KSAmIENTSTJEQ19WUENGR19EVF9NQVNLOw0KPj4gKyAgICAg dnAgfD0gQ1NJMkRDX1ZQQ0ZHX1ZDKGNzaTJkYy0+dmMpICYgQ1NJMkRDX1ZQQ0ZHX1ZDX01BU0s7 DQo+PiArICAgICB2cCAmPSB+Q1NJMkRDX1ZQQ0ZHX0RFOw0KPj4gKyAgICAgdnAgfD0gQ1NJMkRD X1ZQQ0ZHX0RNKENTSTJEQ19WUENGR19ETV9ERUNPREVSOFRPMTIpOw0KPj4gKyAgICAgdnAgJj0g fkNTSTJEQ19WUENGR19EUDI7DQo+PiArICAgICB2cCAmPSB+Q1NJMkRDX1ZQQ0ZHX1JNUzsNCj4+ ICsgICAgIHZwIHw9IENTSTJEQ19WUENGR19QQTsNCj4+ICsNCj4+ICsgICAgIGNzaTJkY193cml0 ZWwoY3NpMmRjLCBDU0kyRENfVlBDRkcsIHZwKTsNCj4+ICsgICAgIGNzaTJkY193cml0ZWwoY3Np MmRjLCBDU0kyRENfVlBFLCBDU0kyRENfVlBFX0VOQUJMRSk7DQo+PiArICAgICBjc2kyZGNfd3Jp dGVsKGNzaTJkYywgQ1NJMkRDX1BVLCBDU0kyRENfUFVfVlApOw0KPj4gK30NCj4+ICsNCj4+ICtz dGF0aWMgaW5saW5lIHN0cnVjdCBjc2kyZGNfZGV2aWNlICoNCj4+ICtjc2kyZGNfc2RfdG9fY3Np MmRjX2RldmljZShzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNzaTJkY19zZCkNCj4+ICt7DQo+PiArICAg ICByZXR1cm4gY29udGFpbmVyX29mKGNzaTJkY19zZCwgc3RydWN0IGNzaTJkY19kZXZpY2UsIGNz aTJkY19zZCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgY3NpMmRjX2VudW1fbWJ1c19j b2RlKHN0cnVjdCB2NGwyX3N1YmRldiAqY3NpMmRjX3NkLA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjZmcsDQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X21idXNfY29kZV9l bnVtICpjb2RlKQ0KPj4gK3sNCj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMg PSBjc2kyZGNfc2RfdG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0KPj4gKw0KPj4gKyAgICAg aWYgKGNvZGUtPmluZGV4ID49IGNzaTJkYy0+bnVtX2ZtdHMpDQo+PiArICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOw0KPj4gKw0KPj4gKyAgICAgY29kZS0+Y29kZSA9IGNzaTJkYy0+Zm9ybWF0 c1tjb2RlLT5pbmRleF0tPm1idXNfY29kZTsNCj4+ICsgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ ICsNCj4+ICtzdGF0aWMgaW50IGNzaTJkY190cnlfZm10KHN0cnVjdCB2NGwyX3N1YmRldiAqY3Np MmRjX3NkLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X3Bh ZF9jb25maWcgKmNmZywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1 YmRldl9mb3JtYXQgKnJlcV9mbXQpDQo+PiArew0KPj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZp Y2UgKmNzaTJkYyA9IGNzaTJkY19zZF90b19jc2kyZGNfZGV2aWNlKGNzaTJkY19zZCk7DQo+PiAr ICAgICBzdHJ1Y3QgY3NpMmRjX2Zvcm1hdCAqZm10Ow0KPj4gKw0KPj4gKyAgICAgaWYgKCFjc2ky ZGMtPmNvbXBsZXRlZCkgew0KPj4gKyAgICAgICAgICAgICBkZXZfZGJnKChjc2kyZGMpLT5kZXYs ICJzdWJkZXYgbm90IHJlZ2lzdGVyZWQgeWV0XG4iKTsNCj4+ICsgICAgICAgICAgICAgcmV0dXJu IDA7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICBmb3IgKGZtdCA9IGNzaTJkYy0+Zm9ybWF0 c1swXTsgZm10OyBmbXQrKykNCj4+ICsgICAgICAgICAgICAgaWYgKHJlcV9mbXQtPmZvcm1hdC5j b2RlID09IGZtdC0+bWJ1c19jb2RlKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgIGNzaTJkYy0+ dHJ5X2ZtdCA9IGZtdDsNCj4+ICsNCj4+ICsgICAgIC8qIGluIGNhc2Ugd2UgY291bGQgbm90IGZp bmQgdGhlIGRlc2lyZWQgZm9ybWF0LCBkZWZhdWx0IHRvIHNvbWV0aGluZyAqLw0KPj4gKyAgICAg aWYgKCFjc2kyZGMtPnRyeV9mbXQgIHx8DQo+PiArICAgICAgICAgcmVxX2ZtdC0+Zm9ybWF0LmNv ZGUgIT0gY3NpMmRjLT50cnlfZm10LT5tYnVzX2NvZGUpIHsNCj4+ICsgICAgICAgICAgICAgY3Np MmRjLT50cnlfZm10ID0gY3NpMmRjLT5mb3JtYXRzWzBdOw0KPj4gKyAgICAgICAgICAgICByZXFf Zm10LT5mb3JtYXQuY29kZSA9IGNzaTJkYy0+Zm9ybWF0c1swXS0+bWJ1c19jb2RlOw0KPj4gKyAg ICAgfQ0KPj4gKw0KPj4gKyAgICAgcmV0dXJuIHY0bDJfc3ViZGV2X2NhbGwoY3NpMmRjLT5pbnB1 dF9zZCwgcGFkLCBzZXRfZm10LCBjZmcsIHJlcV9mbXQpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0 aWMgaW50IGNzaTJkY19zZXRfZm10KHN0cnVjdCB2NGwyX3N1YmRldiAqY3NpMmRjX3NkLA0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X3BhZF9jb25maWcgKmNm ZywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9mb3JtYXQg KnJlcV9mbXQpDQo+PiArew0KPj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9 IGNzaTJkY19zZF90b19jc2kyZGNfZGV2aWNlKGNzaTJkY19zZCk7DQo+PiArICAgICBpbnQgcmV0 Ow0KPj4gKw0KPj4gKyAgICAgaWYgKCFjc2kyZGMtPmNvbXBsZXRlZCkgew0KPj4gKyAgICAgICAg ICAgICBkZXZfZGJnKChjc2kyZGMpLT5kZXYsICJzdWJkZXYgbm90IHJlZ2lzdGVyZWQgeWV0XG4i KTsNCj4+ICsgICAgICAgICAgICAgcmV0dXJuIDA7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAg ICBjc2kyZGNfdHJ5X2ZtdChjc2kyZGNfc2QsIGNmZywgcmVxX2ZtdCk7DQo+PiArDQo+PiArICAg ICBpZiAoY3NpMmRjLT50cnlfZm10LT5tYnVzX2NvZGUgIT0gcmVxX2ZtdC0+Zm9ybWF0LmNvZGUp IHsNCj4+ICsgICAgICAgICAgICAgZGV2X2RiZyhjc2kyZGMtPmRldiwgIkNTSTJEQyB1bnN1cHBv cnRlZCBmb3JtYXQgMHgleFxuIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICByZXFfZm10LT5m b3JtYXQuY29kZSk7DQo+IA0KPiBQbGVhc2UgYWRqdXN0IHRoZSBmb3JtYXQgaW50byBhIHN1cHBv cnRlZCBvbmUgaW5zdGVhZC4NCg0KSSB0aG91Z2h0IHRoYXQgb25seSB0aGUgJ3RyeV9mbXQnIGNh bGxzIHNob3VsZCBhZGFwdCB0byBzb21ldGhpbmcgdGhhdCANCndvcmtzLiBJdCBpcyB0aGUgc2Ft ZSBjYXNlIGZvciBzZXRfZm10ID8gVGhpcyBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIA0KaW52YWxp ZCBmb3JtYXQgPw0KPiANCj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArICAg ICB9DQo+PiArDQo+PiArICAgICByZXQgPSB2NGwyX3N1YmRldl9jYWxsKGNzaTJkYy0+aW5wdXRf c2QsIHBhZCwgc2V0X2ZtdCwgY2ZnLCByZXFfZm10KTsNCj4+ICsgICAgIGlmIChyZXQpIHsNCj4+ ICsgICAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwgImlucHV0IHN1YmRldiBmYWlsZWQg JWRcbiIsIHJldCk7DQo+PiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+PiArICAgICB9DQo+ PiArDQo+PiArICAgICBjc2kyZGMtPmN1cl9mbXQgPSBjc2kyZGMtPnRyeV9mbXQ7DQo+PiArICAg ICAvKiB1cGRhdGUgdmlkZW8gcGlwZSAqLw0KPj4gKyAgICAgY3NpMmRjX3ZwX3VwZGF0ZShjc2ky ZGMpOw0KPj4gKw0KPj4gKyAgICAgZGV2X2RiZyhjc2kyZGMtPmRldiwgIkNTSTJEQyBuZXcgZm9y bWF0OiAweCV4XG4iLCByZXFfZm10LT5mb3JtYXQuY29kZSk7DQo+PiArICAgICByZXR1cm4gMDsN Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfZm9ybWF0c19pbml0KHN0cnVjdCBj c2kyZGNfZGV2aWNlICpjc2kyZGMpDQo+PiArew0KPj4gKyAgICAgaW50IGksIGo7DQo+PiArICAg ICBzdHJ1Y3QgY3NpMmRjX2Zvcm1hdCAqZm10ID0gJmNzaTJkY19mb3JtYXRzX2xpc3RbMF07DQo+ PiArDQo+PiArICAgICBjc2kyZGMtPm51bV9mbXRzID0gMTsNCj4+ICsNCj4+ICsgICAgIGNzaTJk Yy0+Zm9ybWF0cyA9IGRldm1fa2NhbGxvYyhjc2kyZGMtPmRldiwgY3NpMmRjLT5udW1fZm10cywN Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKmNzaTJkYy0+ Zm9ybWF0cyksIEdGUF9LRVJORUwpOw0KPj4gKw0KPj4gKyAgICAgZm9yIChpID0gMCwgaiA9IDA7 IGkgPCBBUlJBWV9TSVpFKGNzaTJkY19mb3JtYXRzX2xpc3QpOyBpKyssIGZtdCsrKQ0KPj4gKyAg ICAgICAgICAgICBpZiAoZm10LT5tYnVzX2NvZGUgPT0gTUVESUFfQlVTX0ZNVF9TUkdHQjEwXzFY MTApDQo+PiArICAgICAgICAgICAgICAgICAgICAgY3NpMmRjLT5mb3JtYXRzW2orK10gPSBmbXQ7 DQo+PiArICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNf c19wb3dlcihzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNzaTJkY19zZCwgaW50IG9uKQ0KPj4gK3sNCj4+ ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBjc2kyZGNfc2RfdG9fY3NpMmRj X2RldmljZShjc2kyZGNfc2QpOw0KPj4gKyAgICAgaW50IHJldCA9IDA7DQo+PiArDQo+PiArICAg ICBpZiAoIWNzaTJkYy0+Y29tcGxldGVkKSB7DQo+PiArICAgICAgICAgICAgIGRldl9kYmcoKGNz aTJkYyktPmRldiwgInN1YmRldiBub3QgcmVnaXN0ZXJlZCB5ZXRcbiIpOw0KPj4gKyAgICAgICAg ICAgICByZXR1cm4gMDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIGlmIChvbikNCj4+ICsg ICAgICAgICAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNzaTJkYy0+c2Njayk7DQo+PiAr ICAgICBlbHNlDQo+PiArICAgICAgICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShjc2kyZGMt PnNjY2spOw0KPj4gKyAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgZGV2X2Vycihjc2ky ZGMtPmRldiwgImZhaWxlZCB0byBlbmFibGUgc2NjazogJWRcbiIsIHJldCk7DQo+PiArDQo+PiAr ICAgICAvKiBpZiBwb3dlcmluZyB1cCwgZGVhc3NlcnQgcmVzZXQgbGluZSAqLw0KPj4gKyAgICAg aWYgKG9uKQ0KPj4gKyAgICAgICAgICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRDX0dD VExSLCBDU0kyRENfR0NUTFJfU1dSU1QpOw0KPj4gKw0KPj4gKyAgICAgcmV0ID0gdjRsMl9zdWJk ZXZfY2FsbChjc2kyZGMtPmlucHV0X3NkLCBjb3JlLCBzX3Bvd2VyLCBvbik7DQo+PiArDQo+PiAr ICAgICAvKiBpZiBwb3dlcmluZyBkb3duLCBhc3NlcnQgcmVzZXQgbGluZSAqLw0KPj4gKyAgICAg aWYgKCFvbikNCj4+ICsgICAgICAgICAgICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENTSTJEQ19H Q1RMUiwgIUNTSTJEQ19HQ1RMUl9TV1JTVCk7DQo+IA0KPiBUaGVzZSBnbyB0byB0aGUgcnVudGlt ZSByZXN1bWUgYW5kIHN1c3BlbmQgY2FsbGJhY2tzLg0KDQpPa2F5IEkgd2lsbCB1cGRhdGUNCg0K PiANCj4+ICsNCj4+ICsgICAgIHJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBp bnQgY3NpMmRjX3Nfc3RyZWFtKHN0cnVjdCB2NGwyX3N1YmRldiAqY3NpMmRjX3NkLCBpbnQgZW5h YmxlKQ0KPj4gK3sNCj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBjc2ky ZGNfc2RfdG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0KPj4gKw0KPj4gKyAgICAgaWYgKCFj c2kyZGMtPmNvbXBsZXRlZCkgew0KPj4gKyAgICAgICAgICAgICBkZXZfZGJnKChjc2kyZGMpLT5k ZXYsICJzdWJkZXYgbm90IHJlZ2lzdGVyZWQgeWV0XG4iKTsNCj4+ICsgICAgICAgICAgICAgcmV0 dXJuIDA7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICByZXR1cm4gdjRsMl9zdWJkZXZfY2Fs bChjc2kyZGMtPmlucHV0X3NkLCB2aWRlbywgc19zdHJlYW0sIGVuYWJsZSk7DQo+PiArfQ0KPj4g Kw0KPj4gK3N0YXRpYyBpbnQgY3NpMmRjX2dfZnJhbWVfaW50ZXJ2YWwoc3RydWN0IHY0bDJfc3Vi ZGV2ICpjc2kyZGNfc2QsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgdjRsMl9zdWJkZXZfZnJhbWVfaW50ZXJ2YWwgKmludGVydmFsKQ0KPj4gK3sNCj4+ICsgICAg IHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBjc2kyZGNfc2RfdG9fY3NpMmRjX2Rldmlj ZShjc2kyZGNfc2QpOw0KPj4gKw0KPj4gKyAgICAgaWYgKCFjc2kyZGMtPmNvbXBsZXRlZCkgew0K Pj4gKyAgICAgICAgICAgICBkZXZfZGJnKChjc2kyZGMpLT5kZXYsICJzdWJkZXYgbm90IHJlZ2lz dGVyZWQgeWV0XG4iKTsNCj4+ICsgICAgICAgICAgICAgcmV0dXJuIDA7DQo+PiArICAgICB9DQo+ PiArDQo+PiArICAgICByZXR1cm4gdjRsMl9zdWJkZXZfY2FsbChjc2kyZGMtPmlucHV0X3NkLCB2 aWRlbywgZ19mcmFtZV9pbnRlcnZhbCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludGVydmFsKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfc19mcmFtZV9p bnRlcnZhbChzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNzaTJkY19zZCwNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9mcmFtZV9pbnRlcnZhbCAqaW50 ZXJ2YWwpDQo+PiArew0KPj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9IGNz aTJkY19zZF90b19jc2kyZGNfZGV2aWNlKGNzaTJkY19zZCk7DQo+PiArDQo+PiArICAgICBpZiAo IWNzaTJkYy0+Y29tcGxldGVkKSB7DQo+PiArICAgICAgICAgICAgIGRldl9kYmcoKGNzaTJkYykt PmRldiwgInN1YmRldiBub3QgcmVnaXN0ZXJlZCB5ZXRcbiIpOw0KPj4gKyAgICAgICAgICAgICBy ZXR1cm4gMDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIHJldHVybiB2NGwyX3N1YmRldl9j YWxsKGNzaTJkYy0+aW5wdXRfc2QsIHZpZGVvLCBzX2ZyYW1lX2ludGVydmFsLA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwpOw0KPiANCj4gSWYgeW91ciBkcml2ZXIg aXMgdXNlZCB3aXRoIGEgTUMtZW5hYmxlZCBtYXN0ZXIgZHJpdmVyLCB5b3UgY2FuIGRyb3AgYWxs DQo+IHRoZSB2NGwyX3N1YmRldl9jYWxsKCkgbWFjcm9zIGFwYXJ0IGZyb20gdGhlIG9uZXMgcmVs YXRlZCB0byBzX3N0cmVhbQ0KPiBvcGVyYXRpb24uDQoNCkFuZCB0aGUgc2V0IGZyYW1lIGludGVy dmFsIGZvciBleGFtcGxlLCB3aWxsIGl0IGJlIHNlbnQgdG8gdGhlIHNlbnNvciANCmF1dG9tYXRp Y2FsbHkgPw0KSSBub3RpY2VkIHRoYXQgc3VjaCBvcGVyYXRpb25zIG9uIHRoZSBtYXN0ZXIgZHJp dmVyIHdlcmUgbm90IHByb3BhZ2F0ZWQgDQp0byB0aGUgdW5kZXJseWluZyBzdWJkZXZpY2UuIEhv dyBkb2VzIHRoZSBtYXN0ZXIgZGV2aWNlICdrbm93JyBob3cgdG8gDQpjYWxsIHRoZSBpbnB1dF9z ZCA/IHRoaXMgaW5wdXRfc2QgaXMgbm90IHJlZmVyZW5jZWQgYW55d2hlcmUgaW4gdGhlIA0KbWFz dGVyIGRyaXZlci4NCg0KPiANCj4gSWYgbm90LCB0aGVuIHlvdSBjYW4gZHJvcCB0aGUgSEFTX0RF Vk5PREUgZmxhZyBmcm9tIHRoZSBzdWJkZXYgZmxhZ3MuIEJ1dA0KPiBJJ2QgdHJ5IHRvIGF2b2lk IHRoaXMgcm91dGUgaWYgcG9zc2libGUuDQo+IA0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50 IGNzaTJkY19lbnVtX2ZyYW1lX3NpemUoc3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QsDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9wYWRf Y29uZmlnICpjZmcsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2 NGwyX3N1YmRldl9mcmFtZV9zaXplX2VudW0gKmZzZSkNCj4+ICt7DQo+PiArICAgICBzdHJ1Y3Qg Y3NpMmRjX2RldmljZSAqY3NpMmRjID0gY3NpMmRjX3NkX3RvX2NzaTJkY19kZXZpY2UoY3NpMmRj X3NkKTsNCj4+ICsNCj4+ICsgICAgIGlmICghY3NpMmRjLT5jb21wbGV0ZWQpIHsNCj4+ICsgICAg ICAgICAgICAgZGV2X2RiZygoY3NpMmRjKS0+ZGV2LCAic3ViZGV2IG5vdCByZWdpc3RlcmVkIHll dFxuIik7DQo+PiArICAgICAgICAgICAgIHJldHVybiAwOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4g KyAgICAgcmV0dXJuIHY0bDJfc3ViZGV2X2NhbGwoY3NpMmRjLT5pbnB1dF9zZCwgcGFkLCBlbnVt X2ZyYW1lX3NpemUsIGNmZywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzZSk7 DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgY3NpMmRjX2VudW1fZnJhbWVfaW50ZXJ2YWwo c3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QsDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX2NvbmZpZyAqY2ZnLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X2ZyYW1l X2ludGVydmFsX2VudW0gKmZpZSkNCj4+ICt7DQo+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2Rldmlj ZSAqY3NpMmRjID0gY3NpMmRjX3NkX3RvX2NzaTJkY19kZXZpY2UoY3NpMmRjX3NkKTsNCj4+ICsN Cj4+ICsgICAgIGlmICghY3NpMmRjLT5jb21wbGV0ZWQpIHsNCj4+ICsgICAgICAgICAgICAgZGV2 X2RiZygoY3NpMmRjKS0+ZGV2LCAic3ViZGV2IG5vdCByZWdpc3RlcmVkIHlldFxuIik7DQo+PiAr ICAgICAgICAgICAgIHJldHVybiAwOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgcmV0dXJu IHY0bDJfc3ViZGV2X2NhbGwoY3NpMmRjLT5pbnB1dF9zZCwgcGFkLCBlbnVtX2ZyYW1lX2ludGVy dmFsLCBjZmcsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWUpOw0KPj4gK30N Cj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X2NvcmVfb3BzIGNzaTJk Y19jb3JlX29wcyA9IHsNCj4+ICsgICAgIC5zX3Bvd2VyID0gY3NpMmRjX3NfcG93ZXIsDQo+IA0K PiBQbGVhc2UgdXNlIHJ1bnRpbWUgUE0gaW5zdGVhZC4NCj4gDQo+PiArfTsNCj4+ICsNCj4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X3BhZF9vcHMgY3NpMmRjX3BhZF9vcHMgPSB7 DQo+PiArICAgICAuZW51bV9tYnVzX2NvZGUgPSBjc2kyZGNfZW51bV9tYnVzX2NvZGUsDQo+PiAr ICAgICAuc2V0X2ZtdCA9IGNzaTJkY19zZXRfZm10LA0KPj4gKyAgICAgLmVudW1fZnJhbWVfc2l6 ZSA9IGNzaTJkY19lbnVtX2ZyYW1lX3NpemUsDQo+PiArICAgICAuZW51bV9mcmFtZV9pbnRlcnZh bCA9IGNzaTJkY19lbnVtX2ZyYW1lX2ludGVydmFsLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGlj IGNvbnN0IHN0cnVjdCB2NGwyX3N1YmRldl92aWRlb19vcHMgY3NpMmRjX3ZpZGVvX29wcyA9IHsN Cj4+ICsgICAgIC5zX3N0cmVhbSA9IGNzaTJkY19zX3N0cmVhbSwNCj4+ICsgICAgIC5nX2ZyYW1l X2ludGVydmFsID0gY3NpMmRjX2dfZnJhbWVfaW50ZXJ2YWwsDQo+PiArICAgICAuc19mcmFtZV9p bnRlcnZhbCA9IGNzaTJkY19zX2ZyYW1lX2ludGVydmFsLA0KPj4gK307DQo+PiArDQo+PiArc3Rh dGljIGNvbnN0IHN0cnVjdCB2NGwyX3N1YmRldl9vcHMgY3NpMmRjX3N1YmRldl9vcHMgPSB7DQo+ PiArICAgICAuY29yZSA9ICZjc2kyZGNfY29yZV9vcHMsDQo+PiArICAgICAucGFkID0gJmNzaTJk Y19wYWRfb3BzLA0KPj4gKyAgICAgLnZpZGVvID0gJmNzaTJkY192aWRlb19vcHMsDQo+PiArfTsN Cj4+ICsNCj4+ICtzdGF0aWMgaW50IGNzaTJkY19hc3luY19ib3VuZChzdHJ1Y3QgdjRsMl9hc3lu Y19ub3RpZmllciAqbm90aWZpZXIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHY0bDJfYXN5bmNfc3ViZGV2ICphc2QpDQo+PiArew0KPj4gKyAgICAgc3RydWN0IGNz aTJkY19kZXZpY2UgKmNzaTJkYyA9IGNvbnRhaW5lcl9vZihub3RpZmllci0+djRsMl9kZXYsDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjc2kyZGNfZGV2 aWNlLCB2NGwyX2Rldik7DQo+PiArICAgICBjc2kyZGMtPmlucHV0X3NkID0gc3ViZGV2Ow0KPj4g Kw0KPj4gKyAgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgY3NpMmRj X2FzeW5jX2NvbXBsZXRlKHN0cnVjdCB2NGwyX2FzeW5jX25vdGlmaWVyICpub3RpZmllcikNCj4+ ICt7DQo+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjID0NCj4+ICsgICAgICAg ICAgICAgY29udGFpbmVyX29mKG5vdGlmaWVyLT52NGwyX2Rldiwgc3RydWN0IGNzaTJkY19kZXZp Y2UsIHY0bDJfZGV2KTsNCj4gDQo+IE92ZXIgODAgY2hhcmFjdGVycyBwZXIgbGluZS4gUGxlYXNl IGNoZWNrIHRoZSByZXN0IG9mIHRoZSBkcml2ZXIsIHRvby4NCj4gDQo+PiArICAgICBpbnQgcmV0 Ow0KPj4gKw0KPj4gKyAgICAgcmV0ID0gdjRsMl9kZXZpY2VfcmVnaXN0ZXJfc3ViZGV2X25vZGVz KCZjc2kyZGMtPnY0bDJfZGV2KTsNCj4+ICsgICAgIGlmIChyZXQgPCAwKSB7DQo+PiArICAgICAg ICAgICAgIHY0bDJfZXJyKCZjc2kyZGMtPnY0bDJfZGV2LCAiZmFpbGVkIHRvIHJlZ2lzdGVyIHN1 YmRldiBub2Rlc1xuIik7DQo+PiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+PiArICAgICB9 DQo+PiArDQo+PiArICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRDX0dDRkcsDQo+PiAr ICAgICAgICAgICAgICAgICAgIChDU0kyRENfR0NGR19ITEMoY3NpMmRjLT5pbnRlcl9saW5lX2Rl bGF5KSAmDQo+PiArICAgICAgICAgICAgICAgICAgIENTSTJEQ19HQ0ZHX0hMQ19NQVNLKSB8DQo+ PiArICAgICAgICAgICAgICAgICAgIChjc2kyZGMtPmNsa19nYXRlZCA/IDAgOiBDU0kyRENfR0NG R19NSVBJRlJOKSk7DQo+PiArDQo+PiArICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRD X1ZQQ09MLA0KPj4gKyAgICAgICAgICAgICAgICAgICBDU0kyRENfVlBDT0xfQ09MKDB4RkZGKSAm IENTSTJEQ19WUENPTF9DT0xfTUFTSyk7DQo+PiArICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywg Q1NJMkRDX1ZQUk9XLA0KPj4gKyAgICAgICAgICAgICAgICAgICBDU0kyRENfVlBST1dfUk9XKDB4 RkZGKSAmIENTSTJEQ19WUFJPV19ST1dfTUFTSyk7DQo+PiArDQo+PiArICAgICBjc2kyZGMtPmNv bXBsZXRlZCA9IHRydWU7DQo+PiArDQo+PiArICAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfYXN5bmNfbm90aWZpZXJfb3BlcmF0aW9ucyBj c2kyZGNfYXN5bmNfb3BzID0gew0KPj4gKyAgICAgLmJvdW5kID0gY3NpMmRjX2FzeW5jX2JvdW5k LA0KPj4gKyAgICAgLmNvbXBsZXRlID0gY3NpMmRjX2FzeW5jX2NvbXBsZXRlLA0KPj4gK307DQo+ PiArDQo+PiArc3RhdGljIHZvaWQgY3NpMmRjX2NsZWFudXBfbm90aWZpZXIoc3RydWN0IGNzaTJk Y19kZXZpY2UgKmNzaTJkYykNCj4+ICt7DQo+PiArICAgICB2NGwyX2FzeW5jX25vdGlmaWVyX3Vu cmVnaXN0ZXIoJmNzaTJkYy0+bm90aWZpZXIpOw0KPj4gKyAgICAgdjRsMl9hc3luY19ub3RpZmll cl9jbGVhbnVwKCZjc2kyZGMtPm5vdGlmaWVyKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlu dCBjc2kyZGNfcHJlcGFyZV9ub3RpZmllcihzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjLA0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRldmljZV9ub2RlICpp bnB1dF9wYXJlbnQpDQo+PiArew0KPj4gKyAgICAgaW50IHJldDsNCj4+ICsNCj4+ICsgICAgIHY0 bDJfYXN5bmNfbm90aWZpZXJfaW5pdCgmY3NpMmRjLT5ub3RpZmllcik7DQo+PiArDQo+PiArICAg ICBjc2kyZGMtPmFzZCA9IGt6YWxsb2Moc2l6ZW9mKCpjc2kyZGMtPmFzZCksIEdGUF9LRVJORUwp Ow0KPj4gKyAgICAgaWYgKCFjc2kyZGMtPmFzZCkNCj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1F Tk9NRU07DQo+PiArDQo+PiArICAgICBjc2kyZGMtPmFzZC0+bWF0Y2hfdHlwZSA9IFY0TDJfQVNZ TkNfTUFUQ0hfRldOT0RFOw0KPj4gKyAgICAgY3NpMmRjLT5hc2QtPm1hdGNoLmZ3bm9kZSA9IG9m X2Z3bm9kZV9oYW5kbGUoaW5wdXRfcGFyZW50KTsNCj4+ICsNCj4+ICsgICAgIHJldCA9IHY0bDJf YXN5bmNfbm90aWZpZXJfYWRkX3N1YmRldigmY3NpMmRjLT5ub3RpZmllciwgY3NpMmRjLT5hc2Qp Ow0KPj4gKyAgICAgaWYgKHJldCkgew0KPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ ZGV2LCAiZmFpbGVkIHRvIGFkZCBhc3luYyBub3RpZmllci5cbiIpOw0KPj4gKyAgICAgICAgICAg ICB2NGwyX2FzeW5jX25vdGlmaWVyX2NsZWFudXAoJmNzaTJkYy0+bm90aWZpZXIpOw0KPj4gKyAg ICAgICAgICAgICBnb3RvIGNzaTJkY19wcmVwYXJlX25vdGlmaWVyX2VycjsNCj4+ICsgICAgIH0N Cj4+ICsNCj4+ICsgICAgIGNzaTJkYy0+bm90aWZpZXIub3BzID0gJmNzaTJkY19hc3luY19vcHM7 DQo+PiArDQo+PiArICAgICByZXQgPSB2NGwyX2FzeW5jX25vdGlmaWVyX3JlZ2lzdGVyKCZjc2ky ZGMtPnY0bDJfZGV2LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmY3NpMmRjLT5ub3RpZmllcik7DQo+PiArDQo+PiArICAgICBpZiAocmV0KSB7DQo+PiArICAg ICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsICJmYWlsIHRvIHJlZ2lzdGVyIGFzeW5jIG5v dGlmaWVyLlxuIik7DQo+PiArICAgICAgICAgICAgIGdvdG8gY3NpMmRjX3ByZXBhcmVfbm90aWZp ZXJfZXJyOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gK2NzaTJkY19wcmVwYXJlX25vdGlmaWVyX2Vy cjoNCj4+ICsgICAgIG9mX25vZGVfcHV0KGlucHV0X3BhcmVudCk7DQo+PiArDQo+PiArICAgICBy ZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGNzaTJkY19vZl9wYXJzZShz dHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBkZXZpY2Vfbm9kZSAqb2Zfbm9kZSkNCj4+ICt7DQo+PiArICAgICBzdHJ1Y3QgZGV2 aWNlX25vZGUgKmlucHV0X25vZGUsICpzaW5rX25vZGUsICppbnB1dF9wYXJlbnQ7DQo+PiArICAg ICBzdHJ1Y3QgdjRsMl9md25vZGVfZW5kcG9pbnQgaW5wdXRfZW5kcG9pbnQgPSB7IDAgfSwgc2lu a19lbmRwb2ludCA9IHsgMCB9Ow0KPj4gKyAgICAgaW50IHJldDsNCj4+ICsNCj4+ICsgICAgIGlu cHV0X25vZGUgPSBvZl9ncmFwaF9nZXRfbmV4dF9lbmRwb2ludChvZl9ub2RlLCBOVUxMKTsNCj4+ ICsNCj4+ICsgICAgIGlmICghaW5wdXRfbm9kZSkgew0KPj4gKyAgICAgICAgICAgICBkZXZfZXJy KGNzaTJkYy0+ZGV2LCAibWlzc2luZyBwb3J0IG5vZGUgYXQgJXMsIGlucHV0IG5vZGUgaXMgbWFu ZGF0b3J5LlxuIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICBvZl9ub2RlLT5mdWxsX25hbWUp Ow0KPj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ ICsgICAgIHJldCA9IHY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlKG9mX2Z3bm9kZV9oYW5kbGUo aW5wdXRfbm9kZSksDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm aW5wdXRfZW5kcG9pbnQpOw0KPj4gKw0KPj4gKyAgICAgaWYgKHJldCkgew0KPj4gKyAgICAgICAg ICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LCAiZW5kcG9pbnQgbm90IGRlZmluZWQgYXQgJXNcbiIs DQo+PiArICAgICAgICAgICAgICAgICAgICAgb2Zfbm9kZS0+ZnVsbF9uYW1lKTsNCj4+ICsgICAg ICAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIGlucHV0X3Bh cmVudCA9IG9mX2dyYXBoX2dldF9yZW1vdGVfcG9ydF9wYXJlbnQoaW5wdXRfbm9kZSk7DQo+PiAr ICAgICBpZiAoIWlucHV0X3BhcmVudCkgew0KPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGNzaTJk Yy0+ZGV2LCAiY291bGQgbm90IGdldCBpbnB1dCBub2RlJ3MgcGFyZW50IG5vZGUuXG4iKTsNCj4+ ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAg ICBzaW5rX25vZGUgPSBvZl9ncmFwaF9nZXRfbmV4dF9lbmRwb2ludChvZl9ub2RlLCBpbnB1dF9u b2RlKTsNCj4+ICsNCj4+ICsgICAgIGlmIChzaW5rX25vZGUpDQo+PiArICAgICAgICAgICAgIHJl dCA9IHY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlKG9mX2Z3bm9kZV9oYW5kbGUoc2lua19ub2Rl KSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNp bmtfZW5kcG9pbnQpOw0KPj4gKw0KPj4gKyAgICAgaWYgKCFzaW5rX25vZGUgfHwgcmV0KSB7DQo+ PiArICAgICAgICAgICAgIGRldl9pbmZvKGNzaTJkYy0+ZGV2LCAibWlzc2luZyBzaW5rIG5vZGUg YXQgJXMsIGRhdGEgcGlwZSBhdmFpbGFibGUgb25seS5cbiIsDQo+PiArICAgICAgICAgICAgICAg ICAgICAgIG9mX25vZGUtPmZ1bGxfbmFtZSk7DQo+PiArICAgICB9IGVsc2Ugew0KPj4gKyAgICAg ICAgICAgICBjc2kyZGMtPnZpZGVvX3BpcGUgPSB0cnVlOw0KPj4gKyAgICAgICAgICAgICBjc2ky ZGMtPnZjID0gc2lua19lbmRwb2ludC5iYXNlLmlkOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICBk ZXZfZGJnKGNzaTJkYy0+ZGV2LCAiYmxvY2sgJXMgJWQuJWQtPiVkLiVkIHZpZGVvIHBpcGUgVkMg JWRcbiIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgb2Zfbm9kZS0+ZnVsbF9uYW1lLCBpbnB1 dF9lbmRwb2ludC5iYXNlLnBvcnQsDQo+PiArICAgICAgICAgICAgICAgICAgICAgaW5wdXRfZW5k cG9pbnQuYmFzZS5pZCwgc2lua19lbmRwb2ludC5iYXNlLnBvcnQsDQo+PiArICAgICAgICAgICAg ICAgICAgICAgc2lua19lbmRwb2ludC5iYXNlLmlkLCBjc2kyZGMtPnZjKTsNCj4+ICsgICAgIH0N Cj4+ICsNCj4+ICsgICAgIGNzaTJkYy0+Y2xrX2dhdGVkID0gb2ZfcHJvcGVydHlfcmVhZF9ib29s KG9mX25vZGUsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAibWljcm9jaGlwLGNsay1nYXRlZCIpOw0KPj4gKw0KPj4gKyAgICAgZGV2X2RiZyhjc2ky ZGMtPmRldiwgIiVzIGNsb2NrXG4iLA0KPj4gKyAgICAgICAgICAgICBjc2kyZGMtPmNsa19nYXRl ZCA/ICJHYXRlZCIgOiAiRnJlZSBydW5uaW5nIik7DQo+PiArDQo+PiArICAgICByZXQgPSBvZl9w cm9wZXJ0eV9yZWFkX3UzMihvZl9ub2RlLCAibWljcm9jaGlwLGludGVyLWxpbmUtZGVsYXkiLA0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNzaTJkYy0+aW50ZXJfbGluZV9k ZWxheSk7DQo+PiArDQo+PiArICAgICBpZiAocmV0IHx8IGNzaTJkYy0+aW50ZXJfbGluZV9kZWxh eSA+IDE2IHx8DQo+PiArICAgICAgICAgY3NpMmRjLT5pbnRlcl9saW5lX2RlbGF5ID09IDApIHsN Cj4+ICsgICAgICAgICAgICAgZGV2X2RiZyhjc2kyZGMtPmRldiwgImFzc3VtaW5nIGludGVyIGxp bmUgZGVsYXkgPSAxNiBjbG9ja3MiKTsNCj4+ICsgICAgICAgICAgICAgY3NpMmRjLT5pbnRlcl9s aW5lX2RlbGF5ID0gMTY7DQo+PiArICAgICAgICAgICAgIHJldCA9IDA7DQo+PiArICAgICB9DQo+ PiArICAgICAvKiBoYXJkd2FyZSBhdXRvbWF0aWNhbGx5IGFkZHMgMSAqLw0KPj4gKyAgICAgY3Np MmRjLT5pbnRlcl9saW5lX2RlbGF5LS07DQo+PiArDQo+PiArICAgICAvKiBwcmVwYXJlIGFzeW5j IG5vdGlmaWVyIGZvciBzdWJkZXZpY2UgY29tcGxldGlvbiAqLw0KPj4gKw0KPj4gKyAgICAgb2Zf bm9kZV9wdXQoc2lua19ub2RlKTsNCj4+ICsgICAgIG9mX25vZGVfcHV0KGlucHV0X25vZGUpOw0K Pj4gKw0KPj4gKyAgICAgcmV0dXJuIGNzaTJkY19wcmVwYXJlX25vdGlmaWVyKGNzaTJkYywgaW5w dXRfcGFyZW50KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4+ICt7DQo+PiArICAgICBzdHJ1Y3QgZGV2aWNl ICpkZXYgPSAmcGRldi0+ZGV2Ow0KPj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJk YzsNCj4+ICsgICAgIHN0cnVjdCByZXNvdXJjZSAqcmVzID0gTlVMTDsNCj4+ICsgICAgIGludCBy ZXQgPSAwOw0KPj4gKw0KPj4gKyAgICAgY3NpMmRjID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9m KCpjc2kyZGMpLCBHRlBfS0VSTkVMKTsNCj4+ICsgICAgIGlmICghY3NpMmRjKQ0KPj4gKyAgICAg ICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4+ICsNCj4+ICsgICAgIGNzaTJkYy0+ZGV2ID0gZGV2 Ow0KPj4gKw0KPj4gKyAgICAgcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVT T1VSQ0VfTUVNLCAwKTsNCj4+ICsgICAgIGlmICghcmVzKQ0KPj4gKyAgICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsgICAgIGNzaTJkYy0+YmFzZSA9IGRldm1faW9yZW1hcF9y ZXNvdXJjZShkZXYsIHJlcyk7DQo+PiArDQo+PiArICAgICBpZiAoSVNfRVJSKGNzaTJkYy0+YmFz ZSkpIHsNCj4+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJiYXNlIGFkZHJlc3Mgbm90IHNl dFxuIik7DQo+PiArICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGNzaTJkYy0+YmFzZSk7DQo+ PiArICAgICB9DQo+PiArDQo+PiArICAgICBjc2kyZGMtPnBjbGsgPSBkZXZtX2Nsa19nZXQoZGV2 LCAicGNsayIpOw0KPj4gKyAgICAgaWYgKElTX0VSUihjc2kyZGMtPnBjbGspKSB7DQo+PiArICAg ICAgICAgICAgIHJldCA9IFBUUl9FUlIoY3NpMmRjLT5wY2xrKTsNCj4+ICsgICAgICAgICAgICAg ZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IHBjbGs6ICVkXG4iLCByZXQpOw0KPj4gKyAgICAg ICAgICAgICByZXR1cm4gcmV0Ow0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgcmV0ID0gY2xr X3ByZXBhcmVfZW5hYmxlKGNzaTJkYy0+cGNsayk7DQo+PiArICAgICBpZiAocmV0KSB7DQo+PiAr ICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBwY2xrOiAlZFxuIiwg cmV0KTsNCj4+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ ICsgICAgIGNzaTJkYy0+c2NjayA9IGRldm1fY2xrX2dldChkZXYsICJzY2NrIik7DQo+PiArICAg ICBpZiAoSVNfRVJSKGNzaTJkYy0+c2NjaykpIHsNCj4+ICsgICAgICAgICAgICAgcmV0ID0gUFRS X0VSUihjc2kyZGMtPnNjY2spOw0KPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxl ZCB0byBnZXQgc2NjazogJWRcbiIsIHJldCk7DQo+PiArICAgICAgICAgICAgIGdvdG8gY3NpMmRj X2Nsa19mYWlsOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgcmV0ID0gdjRsMl9kZXZpY2Vf cmVnaXN0ZXIoZGV2LCAmY3NpMmRjLT52NGwyX2Rldik7DQo+PiArICAgICBpZiAocmV0KSB7DQo+ PiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAidW5hYmxlIHRvIHJlZ2lzdGVyIHY0bDIgZGV2 aWNlLlxuIik7DQo+PiArICAgICAgICAgICAgIGdvdG8gY3NpMmRjX2Nsa19mYWlsOw0KPj4gKyAg ICAgfQ0KPj4gKw0KPj4gKyAgICAgdjRsMl9zdWJkZXZfaW5pdCgmY3NpMmRjLT5jc2kyZGNfc2Qs ICZjc2kyZGNfc3ViZGV2X29wcyk7DQo+PiArDQo+PiArICAgICBjc2kyZGMtPmNzaTJkY19zZC5v d25lciA9IFRISVNfTU9EVUxFOw0KPj4gKyAgICAgY3NpMmRjLT5jc2kyZGNfc2QuZGV2ID0gZGV2 Ow0KPj4gKyAgICAgc25wcmludGYoY3NpMmRjLT5jc2kyZGNfc2QubmFtZSwgc2l6ZW9mKGNzaTJk Yy0+Y3NpMmRjX3NkLm5hbWUpLA0KPj4gKyAgICAgICAgICAgICAgIkNTSTJEQy4wIik7DQo+PiAr DQo+PiArICAgICBjc2kyZGMtPmNzaTJkY19zZC5mbGFncyB8PSBWNEwyX1NVQkRFVl9GTF9IQVNf REVWTk9ERTsNCj4+ICsgICAgIGNzaTJkYy0+Y3NpMmRjX3NkLmVudGl0eS5mdW5jdGlvbiA9IE1F RElBX0VOVF9GX1ZJRF9JRl9CUklER0U7DQo+PiArICAgICBjc2kyZGMtPnBhZHNbQ1NJMkRDX1BB RF9TSU5LXS5mbGFncyA9IE1FRElBX1BBRF9GTF9TSU5LOw0KPj4gKyAgICAgY3NpMmRjLT5wYWRz W0NTSTJEQ19QQURfU09VUkNFXS5mbGFncyA9IE1FRElBX1BBRF9GTF9TT1VSQ0U7DQo+PiArDQo+ PiArICAgICByZXQgPSBtZWRpYV9lbnRpdHlfcGFkc19pbml0KCZjc2kyZGMtPmNzaTJkY19zZC5l bnRpdHksIENTSTJEQ19QQURTX05VTSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY3NpMmRjLT5wYWRzKTsNCj4+ICsgICAgIGlmIChyZXQgPCAwKSB7DQo+PiArICAgICAg ICAgICAgIGRldl9lcnIoZGV2LCAibWVkaWEgZW50aXR5IGluaXQgZmFpbGVkXG4iKTsNCj4+ICsg ICAgICAgICAgICAgZ290byBjc2kyZGNfcHJvYmVfZW50aXR5X2VycjsNCj4+ICsgICAgIH0NCj4+ ICsNCj4+ICsgICAgIHY0bDJfc2V0X3N1YmRldmRhdGEoJmNzaTJkYy0+Y3NpMmRjX3NkLCBwZGV2 KTsNCj4+ICsNCj4+ICsgICAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsICZjc2kyZGMtPmNz aTJkY19zZCk7DQo+PiArDQo+PiArICAgICByZXQgPSBjc2kyZGNfb2ZfcGFyc2UoY3NpMmRjLCBk ZXYtPm9mX25vZGUpOw0KPj4gKyAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgZ290byBj c2kyZGNfcHJvYmVfZW50aXR5X2VycjsNCj4+ICsNCj4+ICsgICAgIHJldCA9IGNzaTJkY19mb3Jt YXRzX2luaXQoY3NpMmRjKTsNCj4+ICsgICAgIGlmIChyZXQpDQo+PiArICAgICAgICAgICAgIGdv dG8gY3NpMmRjX3Byb2JlX2Vycm9yOw0KPj4gKw0KPj4gKyAgICAgcmV0ID0gdjRsMl9hc3luY19y ZWdpc3Rlcl9zdWJkZXYoJmNzaTJkYy0+Y3NpMmRjX3NkKTsNCj4+ICsgICAgIGlmIChyZXQpDQo+ PiArICAgICAgICAgICAgIGdvdG8gY3NpMmRjX3Byb2JlX2Vycm9yOw0KPj4gKw0KPj4gKyAgICAg cHJfaW5mbygiTWljcm9jaGlwIENTSTJEQyB2ZXJzaW9uICV4XG4iLA0KPj4gKyAgICAgICAgICAg ICBjc2kyZGNfcmVhZGwoY3NpMmRjLCBDU0kyRENfVkVSU0lPTikpOw0KPiANCj4gZGV2X2luZm8o KSwgcGxlYXNlLiBPciBqdXN0IGRldl9kYmcoKS4NCj4gDQo+PiArDQo+PiArICAgICBwbV9ydW50 aW1lX3NldF9hY3RpdmUoZGV2KTsNCj4+ICsgICAgIHBtX3J1bnRpbWVfZW5hYmxlKGRldik7DQo+ PiArICAgICBwbV9yZXF1ZXN0X2lkbGUoZGV2KTsNCj4+ICsNCj4+ICsgICAgIHJldHVybiAwOw0K Pj4gKw0KPj4gK2NzaTJkY19wcm9iZV9lcnJvcjoNCj4+ICsgICAgIHY0bDJfYXN5bmNfdW5yZWdp c3Rlcl9zdWJkZXYoJmNzaTJkYy0+Y3NpMmRjX3NkKTsNCj4+ICsgICAgIGNzaTJkY19jbGVhbnVw X25vdGlmaWVyKGNzaTJkYyk7DQo+PiArDQo+PiArY3NpMmRjX3Byb2JlX2VudGl0eV9lcnI6DQo+ PiArICAgICBtZWRpYV9lbnRpdHlfY2xlYW51cCgmY3NpMmRjLT5jc2kyZGNfc2QuZW50aXR5KTsN Cj4+ICsgICAgIHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmNzaTJkYy0+djRsMl9kZXYpOw0KPj4g K2NzaTJkY19jbGtfZmFpbDoNCj4+ICsgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShjc2kyZGMt PnBjbGspOw0KPj4gKyAgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlu dCBjc2kyZGNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+PiArew0KPj4g KyAgICAgc3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0 YShwZGV2KTsNCj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBjc2kyZGNf c2RfdG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0KPj4gKw0KPj4gKyAgICAgcG1fcnVudGlt ZV9kaXNhYmxlKCZwZGV2LT5kZXYpOw0KPj4gKyAgICAgY3NpMmRjX2NsZWFudXBfbm90aWZpZXIo Y3NpMmRjKTsNCj4+ICsgICAgIG1lZGlhX2VudGl0eV9jbGVhbnVwKCZjc2kyZGMtPmNzaTJkY19z ZC5lbnRpdHkpOw0KPj4gKyAgICAgdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmY3NpMmRjLT52NGwy X2Rldik7DQo+PiArICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoY3NpMmRjLT5wY2xrKTsNCj4+ ICsNCj4+ICsgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IF9fbWF5 YmVfdW51c2VkIGNzaTJkY19ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KPj4g K3sNCj4+ICsgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IF9fbWF5 YmVfdW51c2VkIGNzaTJkY19ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+PiAr ew0KPj4gKyAgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZGV2X3BtX29wcyBjc2kyZGNfZGV2X3BtX29wcyA9IHsNCj4+ICsgICAgIFNFVF9SVU5USU1F X1BNX09QUyhjc2kyZGNfcnVudGltZV9zdXNwZW5kLCBjc2kyZGNfcnVudGltZV9yZXN1bWUsIE5V TEwpDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBj c2kyZGNfb2ZfbWF0Y2hbXSA9IHsNCj4+ICsgICAgIHsgLmNvbXBhdGlibGUgPSAibWljcm9jaGlw LHNhbWE3ZzUtY3NpMmRjIiB9LA0KPj4gKyAgICAgeyB9DQo+PiArfTsNCj4+ICsNCj4+ICtNT0RV TEVfREVWSUNFX1RBQkxFKG9mLCBjc2kyZGNfb2ZfbWF0Y2gpOw0KPj4gKw0KPj4gK3N0YXRpYyBz dHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNzaTJkY19kcml2ZXIgPSB7DQo+PiArICAgICAucHJvYmUg ID0gY3NpMmRjX3Byb2JlLA0KPj4gKyAgICAgLnJlbW92ZSA9IGNzaTJkY19yZW1vdmUsDQo+PiAr ICAgICAuZHJpdmVyID0gew0KPj4gKyAgICAgICAgICAgICAubmFtZSAgICAgICAgICAgPSAibWlj cm9jaGlwLWNzaTJkYyIsDQo+PiArICAgICAgICAgICAgIC5wbSAgICAgICAgICAgICA9ICZjc2ky ZGNfZGV2X3BtX29wcywNCj4+ICsgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0 Y2hfcHRyKGNzaTJkY19vZl9tYXRjaCksDQo+PiArICAgICB9LA0KPj4gK307DQo+PiArDQo+PiAr bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihjc2kyZGNfZHJpdmVyKTsNCj4+ICsNCj4+ICtNT0RVTEVf QVVUSE9SKCJFdWdlbiBIcmlzdGV2IDxldWdlbi5ocmlzdGV2QG1pY3JvY2hpcC5jb20+Iik7DQo+ PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJNaWNyb2NoaXAgQ1NJMiBEZW11eCBDb250cm9sbGVyIGRy aXZlciIpOw0KPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4+ICtNT0RVTEVfU1VQUE9S VEVEX0RFVklDRSgidmlkZW8iKTsNCj4gDQo+IEhtbS4gVGhpcyBsaW5lIG5lZWRzIHRvIGJlIG1v cmUgc3BlY2lmaWMuIEknZCBqdXN0IGRyb3AgaXQuDQo+IA0KPiAtLQ0KPiBLaW5kIHJlZ2FyZHMs DQo+IA0KPiBTYWthcmkgQWlsdXMNCj4gDQoNCg==