Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp5024881imm; Tue, 19 Jun 2018 03:55:42 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJYspLF6HCPmr3DxLPWFP1DPWCSbmwNKAnIVDM/PbRfGvRTnHK0HBMifhTNN2c2ksL1Hikv X-Received: by 2002:a63:7e51:: with SMTP id o17-v6mr13898460pgn.398.1529405742365; Tue, 19 Jun 2018 03:55:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529405742; cv=none; d=google.com; s=arc-20160816; b=XXDYeCilWNFIPEA+/tmaxeq1HoWgk2QVVdJXz8XOLdQCzyW37Jqc+toHKrId1CPzTO 9mcLs7Ak4jtgjhw9C/ue8sFEoaq+77n1+J0/G4OtDqehgdohIf4Ip/PYUtJsWxL80tY6 uekSwHoiEd+RxkouvtqJh8kqwBSi5oZ9M3vIz9Q67sa/9dYox5dUS7v1zr5nRH4akgzQ GQ86p1GpCJdQ3Z9qb5JXcdFn3hTuOH8Er/TdFV2ztNmMAr20uuJkD7Cjyvx9r6eblkaz zGtVGbJOQmxmZGO1Ji+0A1M0ll1sQp5GZlUuR9a9UKzzcCnmil9hCHrj5hXj70Ky45wA nXlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :spamdiagnosticmetadata:spamdiagnosticoutput:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=xv68OmkxBkWk+uGR78ASFzHkd1YjUj3V4aDKuoGQN6U=; b=piZoOfiwBIe2VhBik58ndk7pDctjpX6dTM34uwhVxErlvtyCU3EIIvaO0Zkfn74hDK 9C+7l4J7z//PKutaHA+jYQaytIug7kVOFNJqucX5JX6K0ZCEGt8S3n87mJNXTbt9ugol LrLLk4EgfBbEmGwh9nK/emh5/LuBPnpUf3DLVP4Fnbp9belYxwTyk4JwWSYWHignBaj9 uWA7n8ZBVBLfGC/B0z994b9EY7Dx5s9SQ2CeBP6nYEcmwU21uUDd9xUVUZp/PtRYymA1 2sj6WMP2iOhvrkdhs5MJ0U5CycdDYzW0EkF5otDZDUN1xKaLhF54BkS6iQS5jPGzUMpt 6qqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@xilinx.onmicrosoft.com header.s=selector1-xilinx-com header.b=sRMdPQT+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b2-v6si16429225plx.88.2018.06.19.03.55.28; Tue, 19 Jun 2018 03:55:42 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@xilinx.onmicrosoft.com header.s=selector1-xilinx-com header.b=sRMdPQT+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S937623AbeFSKyF (ORCPT + 99 others); Tue, 19 Jun 2018 06:54:05 -0400 Received: from mail-eopbgr690081.outbound.protection.outlook.com ([40.107.69.81]:13798 "EHLO NAM04-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S936108AbeFSKyD (ORCPT ); Tue, 19 Jun 2018 06:54:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xv68OmkxBkWk+uGR78ASFzHkd1YjUj3V4aDKuoGQN6U=; b=sRMdPQT+RsNhwO1s2TXckuxFG9oAW44j4ofBKqJERdW9JbhREWUICZ6JEVTN3YlqNrpAGZsDfMxNKMaQBBK/M8/zTnEGwYPaV8liDpk2GmHSIlf2IDwZWcnfHys2bPcOLULWLGnkvaBieIvWW1UjJLu5Nqko70r/qVINoHrIEVs= Received: from MWHPR02MB2623.namprd02.prod.outlook.com (10.168.206.9) by MWHPR02MB2319.namprd02.prod.outlook.com (10.168.244.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.863.14; Tue, 19 Jun 2018 10:54:00 +0000 Received: from MWHPR02MB2623.namprd02.prod.outlook.com ([fe80::fcca:2142:386d:ec1b]) by MWHPR02MB2623.namprd02.prod.outlook.com ([fe80::fcca:2142:386d:ec1b%6]) with mapi id 15.20.0863.016; Tue, 19 Jun 2018 10:54:00 +0000 From: Naga Sureshkumar Relli To: Miquel Raynal CC: "boris.brezillon@bootlin.com" , "richard@nod.at" , "wmw2@infradead.org" , "computersforpeace@gmail.com" , "marek.vasut@gmail.com" , "f.fainelli@gmail.com" , "mmayer@broadcom.com" , "rogerq@ti.com" , "ladis@linux-mips.org" , "ada@thorsis.com" , "honghui.zhang@mediatek.com" , "linux-mtd@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "nagasureshkumarrelli@gmail.com" Subject: RE: [LINUX PATCH v9 2/4] memory: pl353: Add driver for arm pl353 static memory controller Thread-Topic: [LINUX PATCH v9 2/4] memory: pl353: Add driver for arm pl353 static memory controller Thread-Index: AQHT/WsqFbFno5us2U+aj7DaiCm6CaRU+FcAgBJ0iVA= Date: Tue, 19 Jun 2018 10:54:00 +0000 Message-ID: References: <1528271382-21690-1-git-send-email-naga.sureshkumar.relli@xilinx.com> <1528271382-21690-3-git-send-email-naga.sureshkumar.relli@xilinx.com> <20180607180710.5b53e95b@xps13> In-Reply-To: <20180607180710.5b53e95b@xps13> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=nagasure@xilinx.com; x-originating-ip: [182.72.145.30] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;MWHPR02MB2319;7:vpvGGQmrGidwRY6pBkz8k3KYBZ+u5mcME/r1lvGh6C8GLEgdIT6J3xK3KQWMgIiTXqJqEOp939Lz4bTP3DZ0cplGnOXeTf9/vzh1i7bX6RS3akuTCeY/DQaLXT6n1byI2BZKM3UwBp3fgBsI0njOCw7BGi04COjkOhSvBjwLngRtOi/PbDjpLsnLlvavawNJuhInpdyx7cr4Syvx/YEjfYFu56S62WNaAY0bX35wXR6yt4ajhoGMA/I/dzKFVn0Q x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 44164acb-bae7-47b7-c3a4-08d5d5d2f6d6 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(711020)(2017052603328)(7153060)(7193020);SRVR:MWHPR02MB2319; x-ms-traffictypediagnostic: MWHPR02MB2319: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(31051911155226)(9452136761055)(85827821059158)(258649278758335)(192813158149592); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(6072148)(201708071742011)(7699016);SRVR:MWHPR02MB2319;BCL:0;PCL:0;RULEID:;SRVR:MWHPR02MB2319; x-forefront-prvs: 07083FF734 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(396003)(366004)(39860400002)(39380400002)(346002)(376002)(199004)(189003)(13464003)(8676002)(55016002)(6436002)(11346002)(446003)(97736004)(2900100001)(476003)(3846002)(575784001)(81166006)(229853002)(6306002)(14454004)(966005)(66066001)(486006)(8936002)(81156014)(86362001)(6116002)(5250100002)(55236004)(6506007)(53546011)(9686003)(7696005)(26005)(54906003)(68736007)(102836004)(53946003)(53936002)(3280700002)(99286004)(76176011)(39060400002)(2906002)(59450400001)(305945005)(33656002)(7736002)(186003)(4326008)(6246003)(478600001)(25786009)(105586002)(3660700001)(74316002)(316002)(106356001)(7416002)(6916009)(5660300001)(217873001)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR02MB2319;H:MWHPR02MB2623.namprd02.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: xilinx.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: TEBgJDHxz2PaDetFyn7+B0tyUBpjMzwyvXZgdDDN6rAPRh6G+RFO3l/7MTkE6/NiZ1cpk/kkY+deEeXngWgDuzCRtD1sfc9yRsh1ggsrUGbSy9KE/Rw6j6hJLw1PLDgT3uPod4TAammoESZhpKlP2iaLJJfpY3oSV7BKC5PGjoBsWgfUcHLDDmsRG8COJWjiSUzuhRWwMjAz0uCfJS8DlqMMRPuXrKJNWKHTf+oUMgy8/aWmhre8W9dp2ba6yOSmpx5k6cWOXPi5YHAosujh5k3fiAtamJk2yWQ5Fh43lJRdyJoslqEcfw/2+KgyYRwhphf6zg1gnUe7MQwEm5NhWA== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-Network-Message-Id: 44164acb-bae7-47b7-c3a4-08d5d5d2f6d6 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Jun 2018 10:54:00.2505 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB2319 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgTWlxdWVsLA0KDQpTb3JyeSBmb3IgdGhlIGxhdGUgcmVwbHkuDQpDdXJyZW50bHkgSSBhbSBh ZGRyZXNzaW5nIHRoZSBjb21tZW50cyB0aGF0IHlvdSBnYXZlIHRvICBwbDM1M19uYW5kIGRyaXZl ci4NCkFuZCBkb25lIHdpdGggdGhvc2UsIGJ1dCB0aGlzIGlzIHBlbmRpbmcuDQoNCj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWlxdWVsIFJheW5hbCBbbWFpbHRvOm1pcXVl bC5yYXluYWxAYm9vdGxpbi5jb21dDQo+IFNlbnQ6IFRodXJzZGF5LCBKdW5lIDcsIDIwMTggOToz NyBQTQ0KPiBUbzogTmFnYSBTdXJlc2hrdW1hciBSZWxsaSA8bmFnYXN1cmVAeGlsaW54LmNvbT4N Cj4gQ2M6IGJvcmlzLmJyZXppbGxvbkBib290bGluLmNvbTsgcmljaGFyZEBub2QuYXQ7IHdtdzJA aW5mcmFkZWFkLm9yZzsNCj4gY29tcHV0ZXJzZm9ycGVhY2VAZ21haWwuY29tOyBtYXJlay52YXN1 dEBnbWFpbC5jb207IGYuZmFpbmVsbGlAZ21haWwuY29tOw0KPiBtbWF5ZXJAYnJvYWRjb20uY29t OyByb2dlcnFAdGkuY29tOyBsYWRpc0BsaW51eC1taXBzLm9yZzsgYWRhQHRob3JzaXMuY29tOw0K PiBob25naHVpLnpoYW5nQG1lZGlhdGVrLmNvbTsgbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5v cmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7DQo+IG5hZ2FzdXJlc2hrdW1hcnJlbGxp QGdtYWlsLmNvbQ0KPiBTdWJqZWN0OiBSZTogW0xJTlVYIFBBVENIIHY5IDIvNF0gbWVtb3J5OiBw bDM1MzogQWRkIGRyaXZlciBmb3IgYXJtIHBsMzUzIHN0YXRpYw0KPiBtZW1vcnkgY29udHJvbGxl cg0KPiANCj4gSGkgTmFnYSwNCj4gDQo+IE9uIFdlZCwgNiBKdW4gMjAxOCAxMzoxOTo0MCArMDUz MCwgTmFnYSBTdXJlc2hrdW1hciBSZWxsaQ0KPiA8bmFnYS5zdXJlc2hrdW1hci5yZWxsaUB4aWxp bnguY29tPiB3cm90ZToNCj4gDQo+ID4gQWRkIGRyaXZlciBmb3IgYXJtIHBsMzUzIHN0YXRpYyBt ZW1vcnkgY29udHJvbGxlci4gVGhpcyBjb250cm9sbGVyIGlzDQo+ID4gdXNlZCBpbiB4aWxpbngg enlucSBzb2MgZm9yIGludGVyZmFjaW5nIHRoZSBuYW5kIGFuZCBub3Ivc3JhbSBtZW1vcnkNCj4g PiBkZXZpY2VzLg0KPiANCj4gVXBwZXIgY2FzZTogWGlsaW54IFp5bnEsIFNvQywgTkFORCwgTk9S LCBTUkFNLg0KT2ssIEkgd2lsbCB1cGRhdGUgaXQgaW4gbmV4dCB2ZXJzaW9uLg0KDQo+IA0KPiA+ DQo+ID4gU2lnbmVkLW9mZi1ieTogTmFnYSBTdXJlc2hrdW1hciBSZWxsaQ0KPiA+IDxuYWdhLnN1 cmVzaGt1bWFyLnJlbGxpQHhpbGlueC5jb20+DQo+ID4gLS0tDQo+ID4gQ2hhbmdlcyBpbiB2OToN Cj4gPiAgLSBBZGRyZXNzZWQgdGhlIGNvbW1lbnRzIGdpdmVuIGJ5IEp1bGlhIENhcnR3cmlnaHQg dG8gdGhlIHY4IHNlcmllcy4NCj4gPiBDaGFuZ2VzIGluIHY4Og0KPiA+IC0gTm9uZQ0KPiA+IENo YW5nZXMgaW4gdjc6DQo+ID4gLSBDb3JyZWN0ZWQgdGhlIGtjb25maWcgdG8gdXNlIHRyaXN0YXRl IHNlbGVjdGlvbg0KPiA+IC0gQ29ycmVjdGVkIHRoZSBHUEwgbGljZW5jZSBpZGVudA0KPiA+IC0g QWRkZWQgYm91bmRhcnkgY2hlY2tzIGZvciBuYW5kIHRpbWluZyBwYXJhbWV0ZXJzIENoYW5nZXMg aW4gdjY6DQo+ID4gLSBGaXhlZCBjaGVja3BhdGNoLnBsIHJlcG9ydGVkIHdhcm5pbmdzIENoYW5n ZXMgaW4gdjU6DQo+ID4gLSBBZGRlZCBwbDM1M19zbWNfZ2V0X2Nsa3JhdGUgZnVuY3Rpb24sIG1h ZGUgcGwzNTNfc21jX3NldF9jeWNsZXMgYXMgcHVibGljDQo+ID4gICBBUEkNCj4gPiAtIFJlbW92 ZWQgbmFuZCB0aW1pbmcgcGFyYW1ldGVyIGluaXRpYWxpemF0aW9uIGFuZCBtb3ZlZCBpdCB0byBu YW5kDQo+ID4gZHJpdmVyIENoYW5nZXMgaW4gdjQ6DQo+ID4gLSBNb2RpZmllZCBkcml2ZXIgdG8g c3VwcG9ydCBtdWx0aXBsZSBpbnN0YW5jZXMNCj4gPiAtIFVzZWQgc2xlZXAgaW5zdGFlZCBvZiBi dXN5d2FpdCBmb3IgZGVsYXkgQ2hhbmdlcyBpbiB2MzoNCj4gPiAtIE5vbmUNCj4gPiBDaGFuZ2Vz IGluIHYyOg0KPiA+IC0gU2luY2Ugbm93IHRoZSB0aW1pbmcgcGFyYW1ldGVycyBhcmUgaW4gbmFu byBzZWNvbmRzLCBhZGRlZCBsb2dpYyB0byBjb252ZXJ0DQo+ID4gICB0aGVtIHRvIHRoZSBjeWNs ZXMNCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9tZW1vcnkvS2NvbmZpZyAgICAgICAgICAgICAgICAg IHwgICA4ICsNCj4gPiAgZHJpdmVycy9tZW1vcnkvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwg ICAxICsNCj4gPiAgZHJpdmVycy9tZW1vcnkvcGwzNTMtc21jLmMgICAgICAgICAgICAgIHwgNTIz DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIGluY2x1ZGUvbGludXgv cGxhdGZvcm1fZGF0YS9wbDM1My1zbWMuaCB8ICAyOSArKw0KPiA+ICA0IGZpbGVzIGNoYW5nZWQs IDU2MSBpbnNlcnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lbW9y eS9wbDM1My1zbWMuYyAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gaW5jbHVkZS9saW51eC9wbGF0 Zm9ybV9kYXRhL3BsMzUzLXNtYy5oDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZW1v cnkvS2NvbmZpZyBiL2RyaXZlcnMvbWVtb3J5L0tjb25maWcgaW5kZXgNCj4gPiAxOWEwZTgzLi45 NTE3ZGE3IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWVtb3J5L0tjb25maWcNCj4gPiArKysg Yi9kcml2ZXJzL21lbW9yeS9LY29uZmlnDQo+ID4gQEAgLTE1Myw2ICsxNTMsMTQgQEAgY29uZmln IERBOFhYX0REUkNUTA0KPiA+ICAJICBUZXhhcyBJbnN0cnVtZW50cyBkYTh4eCBTb0NzLiBJdCdz IHVzZWQgdG8gdHdlYWsgdmFyaW91cyBtZW1vcnkNCj4gPiAgCSAgY29udHJvbGxlciBjb25maWd1 cmF0aW9uIG9wdGlvbnMuDQo+ID4NCj4gPiArY29uZmlnIFBMMzUzX1NNQw0KPiA+ICsJdHJpc3Rh dGUgIkFSTSBQTDM1WCBTdGF0aWMgTWVtb3J5IENvbnRyb2xsZXIoU01DKSBkcml2ZXIiDQo+ID4g KwlkZWZhdWx0IHkNCj4gDQo+IFRoaXMgaXMgbm90IHJlc3RyaWNpdmUgYXQgYWxsLiBJZiB0aGlz IGNvbnRyb2xsZXIgaXMgb25seSBvbiBhIHNwZWNpZmljIFNvQywgeW91IHNob3VsZCBhZGQgYW5v dGhlcg0KPiBjb25kaXRpb24gdG8gY29tcGlsZSB0aGUgZHJpdmVyPw0KQ2FuIEkgYWRkIHNvbWUg dGhpbmcgbGlrZSB0aGlzPw0KZGVwZW5kcyBvbiAgQVJDSF9aWU5RDQpkZXBlbmRzIG9uICBBUk0N Cj4gDQo+ID4gKwlkZXBlbmRzIG9uIEFSTQ0KPiANCj4gT3IgaGVyZSAgICAgICAgICAgICBeDQo+ IA0KPiA+ICsJaGVscA0KPiA+ICsJICBUaGlzIGRyaXZlciBpcyBmb3IgdGhlIEFSTSBQTDM1MS9Q TDM1MyBTdGF0aWMgTWVtb3J5DQo+ID4gKwkgIENvbnRyb2xsZXIoU01DKSBtb2R1bGUuDQo+ID4g Kw0KPiA+ICBzb3VyY2UgImRyaXZlcnMvbWVtb3J5L3NhbXN1bmcvS2NvbmZpZyINCj4gPiAgc291 cmNlICJkcml2ZXJzL21lbW9yeS90ZWdyYS9LY29uZmlnIg0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVtb3J5L01ha2VmaWxlIGIvZHJpdmVycy9tZW1vcnkvTWFrZWZpbGUgaW5kZXgN Cj4gPiA2NmY1NTI0Li41OGU3OTRkIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWVtb3J5L01h a2VmaWxlDQo+ID4gKysrIGIvZHJpdmVycy9tZW1vcnkvTWFrZWZpbGUNCj4gPiBAQCAtMjAsNiAr MjAsNyBAQCBvYmotJChDT05GSUdfVEVHUkEyMF9NQykJKz0gdGVncmEyMC1tYy5vDQo+ID4gIG9i ai0kKENPTkZJR19KWjQ3ODBfTkVNQykJKz0gano0NzgwLW5lbWMubw0KPiA+ICBvYmotJChDT05G SUdfTVRLX1NNSSkJCSs9IG10ay1zbWkubw0KPiA+ICBvYmotJChDT05GSUdfREE4WFhfRERSQ1RM KQkrPSBkYTh4eC1kZHJjdGwubw0KPiA+ICtvYmotJChDT05GSUdfUEwzNTNfU01DKQkJKz0gcGwz NTMtc21jLm8NCj4gPg0KPiA+ICBvYmotJChDT05GSUdfU0FNU1VOR19NQykJKz0gc2Ftc3VuZy8N Cj4gPiAgb2JqLSQoQ09ORklHX1RFR1JBX01DKQkJKz0gdGVncmEvDQo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVtb3J5L3BsMzUzLXNtYy5jIGIvZHJpdmVycy9tZW1vcnkvcGwzNTMtc21jLmMN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleCAwMDAwMDAwLi44NzU4OTMwDQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvbWVtb3J5L3BsMzUzLXNtYy5jDQo+ID4gQEAg LTAsMCArMSw1MjMgQEANCj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAN Cj4gPiArLyoNCj4gPiArICogQVJNIFBMMzUzIFNNQyBkcml2ZXINCj4gPiArICoNCj4gPiArICog Q29weXJpZ2h0IChDKSAyMDEyIFhpbGlueCwgSW5jDQo+ID4gKyAqIEF1dGhvcjogUHVubmFpYWgg Q2hvdWRhcnkgS2FsbHVyaSA8cHVubmFpYWhAeGlsaW54LmNvbT4NCj4gPiArICogQXV0aG9yOiBO YWdhIFN1cmVzaGt1bWFyIFJlbGxpIDxuYWdhc3VyZUB4aWxpbnguY29tPg0KPiA+ICsgKg0KPiA+ ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gPiArI2luY2x1ZGUg PGxpbnV4L2lvLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4gPiArI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4N Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiA+ICsjaW5jbHVkZSA8 bGludXgvc2xhYi5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGF0YS9wbDM1My1z bWMuaD4NCj4gPiArDQo+ID4gKy8qIFJlZ2lzdGVyIGRlZmluaXRpb25zICovDQo+ID4gKyNkZWZp bmUgUEwzNTNfU01DX01FTUNfU1RBVFVTX09GRlMJMAkvKiBDb250cm9sbGVyIHN0YXR1cyByZWcs IFJPDQo+ICovDQo+ID4gKyNkZWZpbmUgUEwzNTNfU01DX0NGR19DTFJfT0ZGUwkJMHhDCS8qIENs ZWFyIGNvbmZpZyByZWcsIFdPICovDQo+ID4gKyNkZWZpbmUgUEwzNTNfU01DX0RJUkVDVF9DTURf T0ZGUwkweDEwCS8qIERpcmVjdCBjb21tYW5kIHJlZywgV08NCj4gKi8NCj4gPiArI2RlZmluZSBQ TDM1M19TTUNfU0VUX0NZQ0xFU19PRkZTCTB4MTQJLyogU2V0IGN5Y2xlcyByZWdpc3RlciwgV08g Ki8NCj4gPiArI2RlZmluZSBQTDM1M19TTUNfU0VUX09QTU9ERV9PRkZTCTB4MTgJLyogU2V0IG9w bW9kZSByZWdpc3RlciwgV08gKi8NCj4gPiArI2RlZmluZSBQTDM1M19TTUNfRUNDX1NUQVRVU19P RkZTCTB4NDAwCS8qIEVDQyBzdGF0dXMgcmVnaXN0ZXIgKi8NCj4gPiArI2RlZmluZSBQTDM1M19T TUNfRUNDX01FTUNGR19PRkZTCTB4NDA0CS8qIEVDQyBtZW0gY29uZmlnIHJlZyAqLw0KPiA+ICsj ZGVmaW5lIFBMMzUzX1NNQ19FQ0NfTUVNQ01EMV9PRkZTCTB4NDA4CS8qIEVDQyBtZW0gY21kMSBy ZWcgKi8NCj4gPiArI2RlZmluZSBQTDM1M19TTUNfRUNDX01FTUNNRDJfT0ZGUwkweDQwQwkvKiBF Q0MgbWVtIGNtZDIgcmVnICovDQo+ID4gKyNkZWZpbmUgUEwzNTNfU01DX0VDQ19WQUxVRTBfT0ZG UwkweDQxOAkvKiBFQ0MgdmFsdWUgMCByZWcgKi8NCj4gPiArDQo+ID4gKy8qIENvbnRyb2xsZXIg c3RhdHVzIHJlZ2lzdGVyIHNwZWNpZmljIGNvbnN0YW50cyAqLw0KPiA+ICsjZGVmaW5lIFBMMzUz X1NNQ19NRU1DX1NUQVRVU19SQVdfSU5UXzFfU0hJRlQJNg0KPiA+ICsNCj4gPiArLyogQ2xlYXIg Y29uZmlndXJhdGlvbiByZWdpc3RlciBzcGVjaWZpYyBjb25zdGFudHMgKi8NCj4gPiArI2RlZmlu ZSBQTDM1M19TTUNfQ0ZHX0NMUl9JTlRfQ0xSXzEJMHgxMA0KPiA+ICsjZGVmaW5lIFBMMzUzX1NN Q19DRkdfQ0xSX0VDQ19JTlRfRElTXzEJMHg0MA0KPiA+ICsjZGVmaW5lIFBMMzUzX1NNQ19DRkdf Q0xSX0lOVF9ESVNfMQkweDINCj4gPiArI2RlZmluZSBQTDM1M19TTUNfQ0ZHX0NMUl9ERUZBVUxU X01BU0sNCj4gCShQTDM1M19TTUNfQ0ZHX0NMUl9JTlRfQ0xSXzEgfCBcDQo+ID4gKwkJCQkJIFBM MzUzX1NNQ19DRkdfQ0xSX0VDQ19JTlRfRElTXzEgfCBcDQo+ID4gKwkJCQkJIFBMMzUzX1NNQ19D RkdfQ0xSX0lOVF9ESVNfMSkNCj4gPiArDQo+ID4gKy8qIFNldCBjeWNsZXMgcmVnaXN0ZXIgc3Bl Y2lmaWMgY29uc3RhbnRzICovDQo+ID4gKyNkZWZpbmUgUEwzNTNfU01DX1NFVF9DWUNMRVNfVDBf TUFTSwkweEYNCj4gPiArI2RlZmluZSBQTDM1M19TTUNfU0VUX0NZQ0xFU19UMF9TSElGVAkwDQo+ ID4gKyNkZWZpbmUgUEwzNTNfU01DX1NFVF9DWUNMRVNfVDFfTUFTSwkweEYNCj4gPiArI2RlZmlu ZSBQTDM1M19TTUNfU0VUX0NZQ0xFU19UMV9TSElGVAk0DQo+ID4gKyNkZWZpbmUgUEwzNTNfU01D X1NFVF9DWUNMRVNfVDJfTUFTSwkweDcNCj4gPiArI2RlZmluZSBQTDM1M19TTUNfU0VUX0NZQ0xF U19UMl9TSElGVAk4DQo+ID4gKyNkZWZpbmUgUEwzNTNfU01DX1NFVF9DWUNMRVNfVDNfTUFTSwkw eDcNCj4gPiArI2RlZmluZSBQTDM1M19TTUNfU0VUX0NZQ0xFU19UM19TSElGVAkxMQ0KPiA+ICsj ZGVmaW5lIFBMMzUzX1NNQ19TRVRfQ1lDTEVTX1Q0X01BU0sJMHg3DQo+ID4gKyNkZWZpbmUgUEwz NTNfU01DX1NFVF9DWUNMRVNfVDRfU0hJRlQJMTQNCj4gPiArI2RlZmluZSBQTDM1M19TTUNfU0VU X0NZQ0xFU19UNV9NQVNLCTB4Nw0KPiA+ICsjZGVmaW5lIFBMMzUzX1NNQ19TRVRfQ1lDTEVTX1Q1 X1NISUZUCTE3DQo+ID4gKyNkZWZpbmUgUEwzNTNfU01DX1NFVF9DWUNMRVNfVDZfTUFTSwkweEYN Cj4gPiArI2RlZmluZSBQTDM1M19TTUNfU0VUX0NZQ0xFU19UNl9TSElGVAkyMA0KPiA+ICsNCj4g PiArLyogRUNDIHN0YXR1cyByZWdpc3RlciBzcGVjaWZpYyBjb25zdGFudHMgKi8NCj4gPiArI2Rl ZmluZSBQTDM1M19TTUNfRUNDX1NUQVRVU19CVVNZCUJJVCg2KQ0KPiA+ICsNCj4gPiArLyogRUND IG1lbW9yeSBjb25maWcgcmVnaXN0ZXIgc3BlY2lmaWMgY29uc3RhbnRzICovDQo+ID4gKyNkZWZp bmUgUEwzNTNfU01DX0VDQ19NRU1DRkdfTU9ERV9NQVNLCTB4Qw0KPiA+ICsjZGVmaW5lIFBMMzUz X1NNQ19FQ0NfTUVNQ0ZHX01PREVfU0hJRlQJMg0KPiA+ICsjZGVmaW5lIFBMMzUzX1NNQ19FQ0Nf TUVNQ0ZHX1BHU0laRV9NQVNLCTB4Qw0KPiA+ICsNCj4gPiArI2RlZmluZSBQTDM1M19TTUNfRENf VVBUX05BTkRfUkVHUwkoKDQgPDwgMjMpIHwJLyogQ1M6IE5BTkQgY2hpcCAqLw0KPiBcDQo+ID4g KwkJCQkgKDIgPDwgMjEpKQkvKiBVcGRhdGVSZWdzIG9wZXJhdGlvbiAqLw0KPiA+ICsNCj4gPiAr I2RlZmluZSBQTDM1M19OQU5EX0VDQ19DTUQxCSgoMHg4MCkgICAgICAgfAkvKiBXcml0ZSBjb21t YW5kICovIFwNCj4gPiArCQkJCSAoMCA8PCA4KSAgICAgfAkvKiBSZWFkIGNvbW1hbmQgKi8gXA0K PiA+ICsJCQkJICgweDMwIDw8IDE2KSB8CS8qIFJlYWQgRW5kIGNvbW1hbmQgKi8gXA0KPiA+ICsJ CQkJICgxIDw8IDI0KSkJLyogUmVhZCBFbmQgY29tbWFuZCBjYWxpZCAqLw0KPiA+ICsNCj4gPiAr I2RlZmluZSBQTDM1M19OQU5EX0VDQ19DTUQyCSgoMHg4NSkJICAgICAgfAkvKiBXcml0ZSBjb2wg Y2hhbmdlIGNtZCAqLyBcDQo+ID4gKwkJCQkgKDUgPDwgOCkgICAgIHwJLyogUmVhZCBjb2wgY2hh bmdlIGNtZCAqLyBcDQo+ID4gKwkJCQkgKDB4RTAgPDwgMTYpIHwJLyogUmVhZCBjb2wgY2hhbmdl IGVuZCBjbWQgKi8gXA0KPiA+ICsJCQkJICgxIDw8IDI0KSkgLyogUmVhZCBjb2wgY2hhbmdlIGVu ZCBjbWQgdmFsaWQgKi8NCj4gPiArI2RlZmluZSBQTDM1M19OQU5EX0VDQ19CVVNZX1RJTUVPVVQJ KDEgKiBIWikNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBwbDM1M19zbWNfZGF0YSAtIFByaXZh dGUgc21jIGRyaXZlciBzdHJ1Y3R1cmUNCj4gPiArICogQGRldmNsazoJCVBvaW50ZXIgdG8gdGhl IHBlcmlwaGVyYWwgY2xvY2sNCj4gPiArICogQGFwZXJjbGs6CQlQb2ludGVyIHRvIHRoZSBBUEVS IGNsb2NrDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgcGwzNTNfc21jX2RhdGEgew0KPiA+ICsJc3Ry dWN0IGNsawkJKm1lbWNsazsNCj4gPiArCXN0cnVjdCBjbGsJCSphY2xrOw0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArLyogU01DIHZpcnR1YWwgcmVnaXN0ZXIgYmFzZSAqLw0KPiA+ICtzdGF0aWMgdm9p ZCBfX2lvbWVtICpwbDM1M19zbWNfYmFzZTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBwbDM1 M19zbWNfc2V0X2J1c3dpZHRoIC0gU2V0IG1lbW9yeSBidXN3aWR0aA0KPiA+ICsgKiBAYnc6CU1l bW9yeSBidXN3aWR0aCAoOCB8IDE2KQ0KPiA+ICsgKiBSZXR1cm46IDAgb24gc3VjY2VzcyBvciBu ZWdhdGl2ZSBlcnJuby4NCj4gPiArICovDQo+ID4gK2ludCBwbDM1M19zbWNfc2V0X2J1c3dpZHRo KHVuc2lnbmVkIGludCBidykgew0KPiA+ICsJaWYgKGJ3ICE9IFBMMzUzX1NNQ19NRU1fV0lEVEhf OCAgJiYgYncgIT0NCj4gUEwzNTNfU01DX01FTV9XSURUSF8xNikNCj4gPiArCQlyZXR1cm4gLUVJ TlZBTDsNCj4gPiArDQo+ID4gKwl3cml0ZWwoYncsIHBsMzUzX3NtY19iYXNlICsgUEwzNTNfU01D X1NFVF9PUE1PREVfT0ZGUyk7DQo+ID4gKwl3cml0ZWwoUEwzNTNfU01DX0RDX1VQVF9OQU5EX1JF R1MsIHBsMzUzX3NtY19iYXNlICsNCj4gPiArCSAgICAgICBQTDM1M19TTUNfRElSRUNUX0NNRF9P RkZTKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9M X0dQTChwbDM1M19zbWNfc2V0X2J1c3dpZHRoKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBw bDM1M19zbWNfc2V0X2N5Y2xlcyAtIFNldCBtZW1vcnkgdGltaW5nIHBhcmFtZXRlcnMNCj4gPiAr ICogQHQwOgl0X3JjCQlyZWFkIGN5Y2xlIHRpbWUNCj4gPiArICogQHQxOgl0X3djCQl3cml0ZSBj eWNsZSB0aW1lDQo+ID4gKyAqIEB0MjoJdF9yZWEvdF9jZW9lCW91dHB1dCBlbmFibGUgYXNzZXJ0 aW9uIGRlbGF5DQo+ID4gKyAqIEB0MzoJdF93cAkJd3JpdGUgZW5hYmxlIGRlYXNzZXJ0aW9uIGRl bGF5DQo+ID4gKyAqIEB0NDoJdF9jbHIvdF9wYwlwYWdlIGN5Y2xlIHRpbWUNCj4gPiArICogQHQ1 Ogl0X2FyL3RfdGEJSUQgcmVhZCB0aW1lL3R1cm5hcm91bmQgdGltZQ0KPiA+ICsgKiBAdDY6CXRf cnIJCWJ1c3kgdG8gUkUgdGltaW5nDQo+ID4gKyAqDQo+ID4gKyAqIFNldHMgTkFORCBjaGlwIHNw ZWNpZmljIHRpbWluZyBwYXJhbWV0ZXJzLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIHZvaWQgcGwz NTNfc21jX3NldF9jeWNsZXModTMyIHQwLCB1MzIgdDEsIHUzMiB0MiwgdTMyIHQzLCB1MzINCj4g PiArCQkJICAgICAgdDQsIHUzMiB0NSwgdTMyIHQ2KQ0KPiA+ICt7DQo+ID4gKwl0MCAmPSBQTDM1 M19TTUNfU0VUX0NZQ0xFU19UMF9NQVNLOw0KPiA+ICsJdDEgPSAodDEgJiBQTDM1M19TTUNfU0VU X0NZQ0xFU19UMV9NQVNLKSA8PA0KPiA+ICsJCQlQTDM1M19TTUNfU0VUX0NZQ0xFU19UMV9TSElG VDsNCj4gPiArCXQyID0gKHQyICYgUEwzNTNfU01DX1NFVF9DWUNMRVNfVDJfTUFTSykgPDwNCj4g PiArCQkJUEwzNTNfU01DX1NFVF9DWUNMRVNfVDJfU0hJRlQ7DQo+ID4gKwl0MyA9ICh0MyAmIFBM MzUzX1NNQ19TRVRfQ1lDTEVTX1QzX01BU0spIDw8DQo+ID4gKwkJCVBMMzUzX1NNQ19TRVRfQ1lD TEVTX1QzX1NISUZUOw0KPiA+ICsJdDQgPSAodDQgJiBQTDM1M19TTUNfU0VUX0NZQ0xFU19UNF9N QVNLKSA8PA0KPiA+ICsJCQlQTDM1M19TTUNfU0VUX0NZQ0xFU19UNF9TSElGVDsNCj4gPiArCXQ1 ID0gKHQ1ICYgUEwzNTNfU01DX1NFVF9DWUNMRVNfVDVfTUFTSykgPDwNCj4gPiArCQkJUEwzNTNf U01DX1NFVF9DWUNMRVNfVDVfU0hJRlQ7DQo+ID4gKwl0NiA9ICh0NiAmIFBMMzUzX1NNQ19TRVRf Q1lDTEVTX1Q2X01BU0spIDw8DQo+ID4gKwkJCVBMMzUzX1NNQ19TRVRfQ1lDTEVTX1Q2X1NISUZU Ow0KPiA+ICsNCj4gPiArCXQwIHw9IHQxIHwgdDIgfCB0MyB8IHQ0IHwgdDUgfCB0NjsNCj4gPiAr DQo+ID4gKwl3cml0ZWwodDAsIHBsMzUzX3NtY19iYXNlICsgUEwzNTNfU01DX1NFVF9DWUNMRVNf T0ZGUyk7DQo+ID4gKwl3cml0ZWwoUEwzNTNfU01DX0RDX1VQVF9OQU5EX1JFR1MsIHBsMzUzX3Nt Y19iYXNlICsNCj4gPiArCSAgICAgICBQTDM1M19TTUNfRElSRUNUX0NNRF9PRkZTKTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHBsMzUzX3NtY19lY2NfaXNfYnVzeSAtIFJlYWQg ZWNjIGJ1c3kgZmxhZw0KPiA+ICsgKiBSZXR1cm46IHRoZSBlY2Nfc3RhdHVzIGJpdCBmcm9tIHRo ZSBlY2Nfc3RhdHVzIHJlZ2lzdGVyLiAxID0gYnVzeSwNCj4gPiArMCA9IGlkbGUgICovIGludCBw bDM1M19zbWNfZWNjX2lzX2J1c3kodm9pZCkgew0KPiA+ICsJcmV0dXJuICEhKHJlYWRsKHBsMzUz X3NtY19iYXNlICsgUEwzNTNfU01DX0VDQ19TVEFUVVNfT0ZGUykgJg0KPiA+ICsJCSAgUEwzNTNf U01DX0VDQ19TVEFUVVNfQlVTWSk7DQo+IA0KPiBZb3UgY2FuIHJldHVybiBhIGJvb2wgYW5kIGF2 b2lkIHRoZSAnISEnLg0KT2ssIEkgd2lsbCB1cGRhdGUgaW4gbmV4dCB2ZXJzaW9uLg0KPiANCj4g PiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChwbDM1M19zbWNfZWNjX2lzX2J1c3kpOw0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAqIHBsMzUzX3NtY19nZXRfZWNjX3ZhbCAtIFJlYWQgZWNjX3Zh bHVlTiByZWdpc3RlcnMNCj4gPiArICogQGVjY19yZWc6CUluZGV4IG9mIHRoZSBlY2NfdmFsdWUg cmVnICgwLi4zKQ0KPiA+ICsgKiBSZXR1cm46IHRoZSBjb250ZW50IG9mIHRoZSByZXF1ZXN0ZWQg ZWNjX3ZhbHVlIHJlZ2lzdGVyLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGVyZSBhcmUgZm91ciB2YWxp ZCBlY2NfdmFsdWUgcmVnaXN0ZXJzLiBUaGUgYXJndW1lbnQgaXMNCj4gPiArdHJ1bmNhdGVkIHRv IHN0YXkNCj4gPiArICogd2l0aGluIHRoaXMgdmFsaWQgYm91bmRhcnkuDQo+ID4gKyAqLw0KPiA+ ICt1MzIgcGwzNTNfc21jX2dldF9lY2NfdmFsKGludCBlY2NfcmVnKSB7DQo+ID4gKwl1MzIgYWRk ciwgcmVnOw0KPiA+ICsNCj4gPiArCWVjY19yZWcgJj0gMzsNCj4gDQo+IFRoaXMgaXMgbm90IHJl YWRhYmxlLiBQbGVhc2UgY2hlY2sgZm9yIHRoZSB2YWxpZGl0eSBvZiBlY2NfcmVnIHdpdGggc3Rh bmRhcmQgJzwnICc+JyBvcGVyYXRvcnMuDQpPaywgSSB3aWxsIGNoYW5nZSBpdC4NCj4gDQo+ID4g KwlhZGRyID0gUEwzNTNfU01DX0VDQ19WQUxVRTBfT0ZGUyArIChlY2NfcmVnIDw8IDIpOw0KPiAN Cj4gMiBzaG91bGQgYmUgZGVmaW5lZA0KPiANCj4gPiArCXJlZyA9IHJlYWRsKHBsMzUzX3NtY19i YXNlICsgYWRkcik7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJlZzsNCj4gPiArfQ0KPiA+ICtFWFBP UlRfU1lNQk9MX0dQTChwbDM1M19zbWNfZ2V0X2VjY192YWwpOw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAqIHBsMzUzX3NtY19nZXRfbmFuZF9pbnRfc3RhdHVzX3JhdyAtIEdldCBOQU5EIGludGVy cnVwdCBzdGF0dXMgYml0DQo+ID4gKyAqIFJldHVybjogdGhlIHJhd19pbnRfc3RhdHVzMSBiaXQg ZnJvbSB0aGUgbWVtY19zdGF0dXMgcmVnaXN0ZXINCj4gDQo+IElmIHlvdSB1c2Uga2VybmVsLWRv YyBmb3JtYXQsIHNob3VsZCBiZSAiQHJldHVybiIuDQpPaywgSSB3aWxsIHVwZGF0ZSBpdC4NCj4g DQo+ID4gKyAqLw0KPiA+ICtpbnQgcGwzNTNfc21jX2dldF9uYW5kX2ludF9zdGF0dXNfcmF3KHZv aWQpDQo+ID4gK3sNCj4gPiArCXUzMiByZWc7DQo+ID4gKw0KPiA+ICsJcmVnID0gcmVhZGwocGwz NTNfc21jX2Jhc2UgKyBQTDM1M19TTUNfTUVNQ19TVEFUVVNfT0ZGUyk7DQo+ID4gKwlyZWcgPj49 IFBMMzUzX1NNQ19NRU1DX1NUQVRVU19SQVdfSU5UXzFfU0hJRlQ7DQo+ID4gKwlyZWcgJj0gMTsN Cj4gPiArDQo+ID4gKwlyZXR1cm4gcmVnOw0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BM KHBsMzUzX3NtY19nZXRfbmFuZF9pbnRfc3RhdHVzX3Jhdyk7DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICogcGwzNTNfc21jX2Nscl9uYW5kX2ludCAtIENsZWFyIE5BTkQgaW50ZXJydXB0ICAqLyB2 b2lkDQo+ID4gK3BsMzUzX3NtY19jbHJfbmFuZF9pbnQodm9pZCkgew0KPiA+ICsJd3JpdGVsKFBM MzUzX1NNQ19DRkdfQ0xSX0lOVF9DTFJfMSwNCj4gPiArCSAgICAgICBwbDM1M19zbWNfYmFzZSAr IFBMMzUzX1NNQ19DRkdfQ0xSX09GRlMpOyB9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKHBsMzUz X3NtY19jbHJfbmFuZF9pbnQpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHBsMzUzX3NtY19z ZXRfZWNjX21vZGUgLSBTZXQgU01DIEVDQyBtb2RlDQo+ID4gKyAqIEBtb2RlOglFQ0MgbW9kZSAo QllQQVNTLCBBUEIsIE1FTSkNCj4gPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRp dmUgZXJybm8uDQo+ID4gKyAqLw0KPiA+ICtpbnQgcGwzNTNfc21jX3NldF9lY2NfbW9kZShlbnVt IHBsMzUzX3NtY19lY2NfbW9kZSBtb2RlKQ0KPiA+ICt7DQo+ID4gKwl1MzIgcmVnOw0KPiA+ICsJ aW50IHJldCA9IDA7DQo+ID4gKw0KPiA+ICsJc3dpdGNoIChtb2RlKSB7DQo+ID4gKwljYXNlIFBM MzUzX1NNQ19FQ0NNT0RFX0JZUEFTUzoNCj4gPiArCWNhc2UgUEwzNTNfU01DX0VDQ01PREVfQVBC Og0KPiA+ICsJY2FzZSBQTDM1M19TTUNfRUNDTU9ERV9NRU06DQo+ID4gKw0KPiA+ICsJCXJlZyA9 IHJlYWRsKHBsMzUzX3NtY19iYXNlICsgUEwzNTNfU01DX0VDQ19NRU1DRkdfT0ZGUyk7DQo+ID4g KwkJcmVnICY9IH5QTDM1M19TTUNfRUNDX01FTUNGR19NT0RFX01BU0s7DQo+ID4gKwkJcmVnIHw9 IG1vZGUgPDwgUEwzNTNfU01DX0VDQ19NRU1DRkdfTU9ERV9TSElGVDsNCj4gPiArCQl3cml0ZWwo cmVnLCBwbDM1M19zbWNfYmFzZSArIFBMMzUzX1NNQ19FQ0NfTUVNQ0ZHX09GRlMpOw0KPiA+ICsN Cj4gPiArCQlicmVhazsNCj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJcmV0ID0gLUVJTlZBTDsNCj4g PiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1C T0xfR1BMKHBsMzUzX3NtY19zZXRfZWNjX21vZGUpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IHBsMzUzX3NtY19zZXRfZWNjX3BnX3NpemUgLSBTZXQgU01DIEVDQyBwYWdlIHNpemUNCj4gPiAr ICogQHBnX3N6OglFQ0MgcGFnZSBzaXplDQo+ID4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzIG9y IG5lZ2F0aXZlIGVycm5vLg0KPiA+ICsgKi8NCj4gPiAraW50IHBsMzUzX3NtY19zZXRfZWNjX3Bn X3NpemUodW5zaWduZWQgaW50IHBnX3N6KQ0KPiA+ICt7DQo+ID4gKwl1MzIgcmVnLCBzejsNCj4g PiArDQo+ID4gKwlzd2l0Y2ggKHBnX3N6KSB7DQo+ID4gKwljYXNlIDA6DQo+ID4gKwkJc3ogPSAw Ow0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBTWl81MTI6DQo+ID4gKwkJc3ogPSAxOw0KPiA+ ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBTWl8xSzoNCj4gPiArCQlzeiA9IDI7DQo+ID4gKwkJYnJl YWs7DQo+ID4gKwljYXNlIFNaXzJLOg0KPiA+ICsJCXN6ID0gMzsNCj4gPiArCQlicmVhazsNCj4g PiArCWRlZmF1bHQ6DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ ICsJcmVnID0gcmVhZGwocGwzNTNfc21jX2Jhc2UgKyBQTDM1M19TTUNfRUNDX01FTUNGR19PRkZT KTsNCj4gPiArCXJlZyAmPSB+UEwzNTNfU01DX0VDQ19NRU1DRkdfUEdTSVpFX01BU0s7DQo+ID4g KwlyZWcgfD0gc3o7DQo+ID4gKwl3cml0ZWwocmVnLCBwbDM1M19zbWNfYmFzZSArIFBMMzUzX1NN Q19FQ0NfTUVNQ0ZHX09GRlMpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4g K0VYUE9SVF9TWU1CT0xfR1BMKHBsMzUzX3NtY19zZXRfZWNjX3BnX3NpemUpOw0KPiA+ICsNCj4g PiArc3RhdGljIGludCBfX21heWJlX3VudXNlZCBwbDM1M19zbWNfc3VzcGVuZChzdHJ1Y3QgZGV2 aWNlICpkZXYpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBwbDM1M19zbWNfZGF0YSAqcGwzNTNfc21j ID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ID4gKw0KPiA+ICsJY2xrX2Rpc2FibGUocGwzNTNf c21jLT5tZW1jbGspOw0KPiA+ICsJY2xrX2Rpc2FibGUocGwzNTNfc21jLT5hY2xrKTsNCj4gDQo+ IEFyZSB5b3Ugc3VyZSB5b3UgZG9uJ3QgbmVlZCB0byBzYXZlIGFueSBvZiB0aGUgY29uZmlndXJl ZCByZWdpc3RlcnM/DQpZZXMNCj4gDQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgcGwzNTNfc21jX3Jlc3VtZShzdHJ1 Y3QgZGV2aWNlICpkZXYpDQo+ID4gK3sNCj4gPiArCWludCByZXQ7DQo+ID4gKwlzdHJ1Y3QgcGwz NTNfc21jX2RhdGEgKnBsMzUzX3NtYyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ICsNCj4g PiArCXJldCA9IGNsa19lbmFibGUocGwzNTNfc21jLT5hY2xrKTsNCj4gPiArCWlmIChyZXQpIHsN Cj4gPiArCQlkZXZfZXJyKGRldiwgIkNhbm5vdCBlbmFibGUgYXhpIGRvbWFpbiBjbG9jay5cbiIp Ow0KPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0ID0gY2xrX2Vu YWJsZShwbDM1M19zbWMtPm1lbWNsayk7DQo+ID4gKwlpZiAocmV0KSB7DQo+ID4gKwkJZGV2X2Vy cihkZXYsICJDYW5ub3QgZW5hYmxlIG1lbW9yeSBjbG9jay5cbiIpOw0KPiA+ICsJCWNsa19kaXNh YmxlKHBsMzUzX3NtYy0+YWNsayk7DQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArCX0NCj4gDQo+ IE5ldyBsaW5lDQpPaywgSSB3aWxsIHVwZGF0ZQ0KPiANCj4gPiArCXJldHVybiByZXQ7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhwbDM1M19zbWNfZGV2X3Bt X29wcywgcGwzNTNfc21jX3N1c3BlbmQsDQo+ID4gKwkJCSBwbDM1M19zbWNfcmVzdW1lKTsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgKiBwbDM1M19zbWNfaW5pdF9uYW5kX2ludGVyZmFjZSAtIElu aXRpYWxpemUgdGhlIE5BTkQgaW50ZXJmYWNlDQo+ID4gKyAqIEBwZGV2OglQb2ludGVyIHRvIHRo ZSBwbGF0Zm9ybV9kZXZpY2Ugc3RydWN0DQo+ID4gKyAqIEBuYW5kX25vZGU6CVBvaW50ZXIgdG8g dGhlIHBsMzUzX25hbmQgZGV2aWNlX25vZGUgc3RydWN0DQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMg dm9pZCBwbDM1M19zbWNfaW5pdF9uYW5kX2ludGVyZmFjZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2LA0KPiA+ICsJCQkJCSAgc3RydWN0IGRldmljZV9ub2RlICpuYW5kX25vZGUpDQo+ID4g K3sNCj4gPiArCXUzMiB0X3JjLCB0X3djLCB0X3JlYSwgdF93cCwgdF9jbHIsIHRfYXIsIHRfcnI7 DQo+ID4gKwlpbnQgZXJyOw0KPiA+ICsJdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gamlmZmllcyAr IFBMMzUzX05BTkRfRUNDX0JVU1lfVElNRU9VVDsNCj4gDQo+IE1heWJlIHRoaXMgc2hvdWxkIGJl IGRlZmluZWQgbGF0ZXIgaW4gdGhlIGNvZGUuDQpJIHdpbGwgdXBkYXRlIGluIG5leHQgdmVyc2lv bi4NCj4gDQo+IE5ldyBsaW5lLg0KPiANCj4gPiArCS8qIG5hbmQtY3ljbGUtPFg+IHByb3BlcnR5 IGlzIHJlZmVyIHRvIHRoZSBOQU5EIGZsYXNoIHRpbWluZw0KPiA+ICsJICogbWFwcGluZyBiZXR3 ZWVuIGR0cyBhbmQgdGhlIE5BTkQgZmxhc2ggQUMgdGltaW5nDQo+ID4gKwkgKiAgWCAgOiBBQyB0 aW1pbmcgbmFtZQ0KPiA+ICsJICogIHQwIDogdF9yYw0KPiA+ICsJICogIHQxIDogdF93Yw0KPiA+ ICsJICogIHQyIDogdF9yZWENCj4gPiArCSAqICB0MyA6IHRfd3ANCj4gPiArCSAqICB0NCA6IHRf Y2xyDQo+ID4gKwkgKiAgdDUgOiB0X2FyDQo+ID4gKwkgKiAgdDYgOiB0X3JyDQo+ID4gKwkgKi8N Cj4gPiArCWVyciA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5hbmRfbm9kZSwgImFybSxuYW5kLWN5 Y2xlLXQwIiwgJnRfcmMpOw0KPiA+ICsJaWYgKGVycikgew0KPiA+ICsJCWRldl93YXJuKCZwZGV2 LT5kZXYsICJhcm0sbmFuZC1jeWNsZS10MCBub3QgaW4gZGV2aWNlIHRyZWUiKTsNCj4gPiArCQln b3RvIGRlZmF1bHRfbmFuZF90aW1pbmc7DQo+ID4gKwl9DQo+ID4gKwllcnIgPSBvZl9wcm9wZXJ0 eV9yZWFkX3UzMihuYW5kX25vZGUsICJhcm0sbmFuZC1jeWNsZS10MSIsICZ0X3djKTsNCj4gPiAr CWlmIChlcnIpIHsNCj4gPiArCQlkZXZfd2FybigmcGRldi0+ZGV2LCAiYXJtLG5hbmQtY3ljbGUt dDEgbm90IGluIGRldmljZSB0cmVlIik7DQo+ID4gKwkJZ290byBkZWZhdWx0X25hbmRfdGltaW5n Ow0KPiA+ICsJfQ0KPiA+ICsJZXJyID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobmFuZF9ub2RlLCAi YXJtLG5hbmQtY3ljbGUtdDIiLCAmdF9yZWEpOw0KPiA+ICsJaWYgKGVycikgew0KPiA+ICsJCWRl dl93YXJuKCZwZGV2LT5kZXYsICJhcm0sbmFuZC1jeWNsZS10MiBub3QgaW4gZGV2aWNlIHRyZWUi KTsNCj4gPiArCQlnb3RvIGRlZmF1bHRfbmFuZF90aW1pbmc7DQo+ID4gKwl9DQo+ID4gKwllcnIg PSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihuYW5kX25vZGUsICJhcm0sbmFuZC1jeWNsZS10MyIsICZ0 X3dwKTsNCj4gPiArCWlmIChlcnIpIHsNCj4gPiArCQlkZXZfd2FybigmcGRldi0+ZGV2LCAiYXJt LG5hbmQtY3ljbGUtdDMgbm90IGluIGRldmljZSB0cmVlIik7DQo+ID4gKwkJZ290byBkZWZhdWx0 X25hbmRfdGltaW5nOw0KPiA+ICsJfQ0KPiA+ICsJZXJyID0gb2ZfcHJvcGVydHlfcmVhZF91MzIo bmFuZF9ub2RlLCAiYXJtLG5hbmQtY3ljbGUtdDQiLCAmdF9jbHIpOw0KPiA+ICsJaWYgKGVycikg ew0KPiA+ICsJCWRldl93YXJuKCZwZGV2LT5kZXYsICJhcm0sbmFuZC1jeWNsZS10NCBub3QgaW4g ZGV2aWNlIHRyZWUiKTsNCj4gPiArCQlnb3RvIGRlZmF1bHRfbmFuZF90aW1pbmc7DQo+ID4gKwl9 DQo+ID4gKwllcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihuYW5kX25vZGUsICJhcm0sbmFuZC1j eWNsZS10NSIsICZ0X2FyKTsNCj4gPiArCWlmIChlcnIpIHsNCj4gPiArCQlkZXZfd2FybigmcGRl di0+ZGV2LCAiYXJtLG5hbmQtY3ljbGUtdDUgbm90IGluIGRldmljZSB0cmVlIik7DQo+ID4gKwkJ Z290byBkZWZhdWx0X25hbmRfdGltaW5nOw0KPiA+ICsJfQ0KPiA+ICsJZXJyID0gb2ZfcHJvcGVy dHlfcmVhZF91MzIobmFuZF9ub2RlLCAiYXJtLG5hbmQtY3ljbGUtdDYiLCAmdF9ycik7DQo+ID4g KwlpZiAoZXJyKSB7DQo+ID4gKwkJZGV2X3dhcm4oJnBkZXYtPmRldiwgImFybSxuYW5kLWN5Y2xl LXQ2IG5vdCBpbiBkZXZpY2UgdHJlZSIpOw0KPiA+ICsJCWdvdG8gZGVmYXVsdF9uYW5kX3RpbWlu ZzsNCj4gPiArCX0NCj4gDQo+IFNlZSB0aGUgY29tbWVudCBpbiB0aGUgYmluZGluZ3MgYWJvdXQg dGhpcyBzZWN0aW9uLg0KQW55IHdheSBJIGFtIHJlbW92aW5nIHRoZSBhYm92ZSBwYXJhbWV0ZXJz IHJlYWRpbmcgYXMgcGVyIHlvdXIgY29tbWVudC4NCkkgd2lsbCBpbXBsZW1lbnQgc2V0dXBfZGF0 YV9pbnRlcmZhY2UoKSBob29rIHRvIGdldCB0aGUgdGltaW5ncy4gQW5kIHRoaXMgDQpBcHBsaWVz IHRvIGJlbG93IGNvbW1lbnRzIGFzIHdlbGwuDQo+IA0KPiA+ICsNCj4gPiArZGVmYXVsdF9uYW5k X3RpbWluZzoNCj4gPiArCS8qDQo+ID4gKwkgKiBEZWZhdWx0IGFzc3VtZSA1ME1IeiBjbG9jayAo MjBucyBjeWNsZSB0aW1lKSBhbmQgM1Ygb3BlcmF0aW9uDQo+ID4gKwkgKiBUaGUgU0VUX0NZQ0xF U19SRUcgcmVnaXN0ZXIgdmFsdWUgZGVwZW5kcyBvbiB0aGUgZmxhc2ggZGV2aWNlLg0KPiA+ICsJ ICogTG9vayBpbiB0byB0aGUgZGV2aWNlIGRhdGFzaGVldCBhbmQgY2hhbmdlIGl0cyB2YWx1ZSwg VGhpcyB2YWx1ZQ0KPiA+ICsJICogaXMgZm9yIDJHYiBOdW1vbnl4IGZsYXNoLg0KPiANCj4gTm8g OikNCj4gDQo+IFRoZSBjb250cm9sbGVyIGlzIG5vdCBzdXBwb3NlZCB0byB3b3JrIHdpdGggb25s eSBvbmUgY2hpcCwgcmlnaHQ/IFNvIGl0DQo+IHNob3VsZCBub3QgZW1iZWQgYW55IGNoaXAtc3Bl Y2lmaWMgaW5mb3JtYXRpb24uDQo+IA0KPiBJZiB0aGlzIGNoaXAgaXMgbm90IE9ORkkgbm9yIEpF REVDIGFuZCBpcyBub3Qgc3VwcG9ydGVkIHlldCwgdGhlIHJpZ2h0DQo+IHdheSB0byBkbyBpcyB0 byB3cml0ZSBhIG1hbnVmYWN0dXJlciBkcml2ZXIuDQo+IA0KPiA+ICsJICovDQo+ID4gKwlpZiAo ZXJyKSB7DQo+ID4gKwkJLyogc2V0IGRlZmF1bHQgTkFORCBmbGFzaCB0aW1pbmcgcHJvcGVydHkg Ki8NCj4gPiArCQlkZXZfd2FybigmcGRldi0+ZGV2LCAiVXNpbmcgZGVmYXVsdCB0aW1pbmcgZm9y Iik7DQo+ID4gKwkJZGV2X3dhcm4oJnBkZXYtPmRldiwgIjJHYiBOdW1vbnl4IE1UMjlGMkcwOEFC QUVBV1AgTkFORA0KPiBmbGFzaCIpOw0KPiA+ICsJCWRldl93YXJuKCZwZGV2LT5kZXYsICJ0X3dw LCB0X2NsciwgdF9hciBhcmUgc2V0IHRvIDIiKTsNCj4gPiArCQlkZXZfd2FybigmcGRldi0+ZGV2 LCAidF9yYywgdF93YywgdF9yciBhcmUgc2V0IHRvIDQiKTsNCj4gPiArCQlkZXZfd2FybigmcGRl di0+ZGV2LCAidF9yZWEgaXMgc2V0IHRvIDEiKTsNCj4gPiArCQl0X3JjID0gNDsNCj4gPiArCQl0 X3djID0gNDsNCj4gPiArCQl0X3JyID0gNDsNCj4gPiArCQl0X3JlYSA9IDE7DQo+ID4gKwkJdF93 cCA9IDI7DQo+ID4gKwkJdF9jbHIgPSAyOw0KPiA+ICsJCXRfYXIgPSAyOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCXBsMzUzX3NtY19zZXRfYnVzd2lkdGgoUEwzNTNfU01DX01FTV9XSURUSF84KTsN Cj4gPiArCXBsMzUzX3NtY19zZXRfY3ljbGVzKHRfcmMsIHRfd2MsIHRfcmVhLCB0X3dwLCB0X2Ns ciwgdF9hciwgdF9ycik7DQo+ID4gKwl3cml0ZWwoUEwzNTNfU01DX0NGR19DTFJfSU5UX0NMUl8x LA0KPiA+ICsJICAgICAgIHBsMzUzX3NtY19iYXNlICsgUEwzNTNfU01DX0NGR19DTFJfT0ZGUyk7 DQo+ID4gKwl3cml0ZWwoUEwzNTNfU01DX0RDX1VQVF9OQU5EX1JFR1MsIHBsMzUzX3NtY19iYXNl ICsNCj4gPiArCSAgICAgICBQTDM1M19TTUNfRElSRUNUX0NNRF9PRkZTKTsNCj4gPiArCS8qIFdh aXQgdGlsbCB0aGUgRUNDIG9wZXJhdGlvbiBpcyBjb21wbGV0ZSAqLw0KPiA+ICsJZG8gew0KPiA+ ICsJCWlmIChwbDM1M19zbWNfZWNjX2lzX2J1c3koKSkNCj4gPiArCQkJY3B1X3JlbGF4KCk7DQo+ ID4gKwkJZWxzZQ0KPiA+ICsJCQlicmVhazsNCj4gPiArCX0gd2hpbGUgKCF0aW1lX2FmdGVyX2Vx KGppZmZpZXMsIHRpbWVvdXQpKTsNCj4gPiArDQo+ID4gKwlpZiAodGltZV9hZnRlcl9lcShqaWZm aWVzLCB0aW1lb3V0KSkNCj4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJuYW5kIGVjYyBidXN5 IHN0YXR1cyB0aW1lZCBvdXQiKTsNCj4gPiArDQo+ID4gKwl3cml0ZWwoUEwzNTNfTkFORF9FQ0Nf Q01EMSwNCj4gPiArCSAgICAgICBwbDM1M19zbWNfYmFzZSArIFBMMzUzX1NNQ19FQ0NfTUVNQ01E MV9PRkZTKTsNCj4gPiArCXdyaXRlbChQTDM1M19OQU5EX0VDQ19DTUQyLA0KPiA+ICsJICAgICAg IHBsMzUzX3NtY19iYXNlICsgUEwzNTNfU01DX0VDQ19NRU1DTUQyX09GRlMpOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBwbDM1M19zbWNfc3Vw cG9ydGVkX2NoaWxkcmVuW10gPSB7DQo+ID4gKwl7IC5jb21wYXRpYmxlID0gImNmaS1mbGFzaCIg fSwNCj4gPiArCXsgLmNvbXBhdGlibGUgPSAiYXJtLHBsMzUzLW5hbmQtcjJwMSIsDQo+ID4gKwku ZGF0YSA9IHBsMzUzX3NtY19pbml0X25hbmRfaW50ZXJmYWNlIH0sDQo+IA0KPiBQbGVhc2UgcHV0 IHRoZSBjb21wYXRpYmxlcyBvbiBhbm90aGVyIGxpbmUgYW5kIGFsaWduIGRhdGEgd2l0aCB0aGVt Lg0KT2ssIEkgd2lsbCB1cGRhdGUgaXQgbmV4dCB2ZXJzaW9uLg0KDQo+IA0KPiA+ICsJe30NCj4g PiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgcGwzNTNfc21jX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBwbDM1M19zbWNfZGF0YSAq cGwzNTNfc21jOw0KPiA+ICsJc3RydWN0IGRldmljZV9ub2RlICpjaGlsZDsNCj4gPiArCXN0cnVj dCByZXNvdXJjZSAqcmVzOw0KPiA+ICsJaW50IGVycjsNCj4gPiArCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqb2Zfbm9kZSA9IHBkZXYtPmRldi5vZl9ub2RlOw0KPiA+ICsJdm9pZCAoKmluaXQpKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsDQo+ID4gKwkJICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUg Km5hbmRfbm9kZSk7DQo+ID4gKwljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaCA9IE5V TEw7DQo+ID4gKw0KPiA+ICsJcGwzNTNfc21jID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNp emVvZigqcGwzNTNfc21jKSwgR0ZQX0tFUk5FTCk7DQo+ID4gKwlpZiAoIXBsMzUzX3NtYykNCj4g PiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKwkvKiBHZXQgdGhlIE5BTkQgY29udHJv bGxlciB2aXJ0dWFsIGFkZHJlc3MgKi8NCj4gPiArCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJj ZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQo+ID4gKwlwbDM1M19zbWNfYmFzZSA9IGRldm1f aW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCByZXMpOw0KPiA+ICsJaWYgKElTX0VSUihwbDM1 M19zbWNfYmFzZSkpDQo+ID4gKwkJcmV0dXJuIFBUUl9FUlIocGwzNTNfc21jX2Jhc2UpOw0KPiA+ ICsNCj4gPiArCXBsMzUzX3NtYy0+YWNsayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAiYWNs ayIpOw0KPiA+ICsJaWYgKElTX0VSUihwbDM1M19zbWMtPmFjbGspKSB7DQo+ID4gKwkJZGV2X2Vy cigmcGRldi0+ZGV2LCAiYWNsayBjbG9jayBub3QgZm91bmQuXG4iKTsNCj4gPiArCQlyZXR1cm4g UFRSX0VSUihwbDM1M19zbWMtPmFjbGspOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXBsMzUzX3Nt Yy0+bWVtY2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJtZW1jbGsiKTsNCj4gPiArCWlm IChJU19FUlIocGwzNTNfc21jLT5tZW1jbGspKSB7DQo+ID4gKwkJZGV2X2VycigmcGRldi0+ZGV2 LCAibWVtY2xrIGNsb2NrIG5vdCBmb3VuZC5cbiIpOw0KPiA+ICsJCXJldHVybiBQVFJfRVJSKHBs MzUzX3NtYy0+bWVtY2xrKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwllcnIgPSBjbGtfcHJlcGFy ZV9lbmFibGUocGwzNTNfc21jLT5hY2xrKTsNCj4gPiArCWlmIChlcnIpIHsNCj4gPiArCQlkZXZf ZXJyKCZwZGV2LT5kZXYsICJVbmFibGUgdG8gZW5hYmxlIEFYSSBjbG9jay5cbiIpOw0KPiA+ICsJ CXJldHVybiBlcnI7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZXJyID0gY2xrX3ByZXBhcmVfZW5h YmxlKHBsMzUzX3NtYy0+bWVtY2xrKTsNCj4gPiArCWlmIChlcnIpIHsNCj4gPiArCQlkZXZfZXJy KCZwZGV2LT5kZXYsICJVbmFibGUgdG8gZW5hYmxlIG1lbW9yeSBjbG9jay5cbiIpOw0KPiA+ICsJ CWdvdG8gb3V0X2Nsa19kaXNfYXBlcjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlwbGF0Zm9ybV9z ZXRfZHJ2ZGF0YShwZGV2LCBwbDM1M19zbWMpOw0KPiA+ICsNCj4gPiArCS8qIGNsZWFyIGludGVy cnVwdHMgKi8NCj4gPiArCXdyaXRlbChQTDM1M19TTUNfQ0ZHX0NMUl9ERUZBVUxUX01BU0ssDQo+ ID4gKwkgICAgICAgcGwzNTNfc21jX2Jhc2UgKyBQTDM1M19TTUNfQ0ZHX0NMUl9PRkZTKTsNCj4g PiArDQo+ID4gKwkvKiBGaW5kIGNvbXBhdGlibGUgY2hpbGRyZW4uIE9ubHkgYSBzaW5nbGUgY2hp bGQgaXMgc3VwcG9ydGVkICovDQo+ID4gKwlmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9k ZShvZl9ub2RlLCBjaGlsZCkgew0KPiA+ICsJCW1hdGNoID0gb2ZfbWF0Y2hfbm9kZShwbDM1M19z bWNfc3VwcG9ydGVkX2NoaWxkcmVuLCBjaGlsZCk7DQo+ID4gKwkJaWYgKCFtYXRjaCkgew0KPiA+ ICsJCQlkZXZfd2FybigmcGRldi0+ZGV2LCAidW5zdXBwb3J0ZWQgY2hpbGQgbm9kZVxuIik7DQo+ ID4gKwkJCWNvbnRpbnVlOw0KPiA+ICsJCX0NCj4gPiArCQlicmVhazsNCj4gPiArCX0NCj4gPiAr CWlmICghbWF0Y2gpIHsNCj4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJubyBtYXRjaGluZyBj aGlsZHJlblxuIik7DQo+ID4gKwkJZ290byBvdXRfY2xrX2Rpc2FibGU7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJaW5pdCA9IG1hdGNoLT5kYXRhOw0KPiA+ICsJaWYgKGluaXQpDQo+ID4gKwkJaW5p dChwZGV2LCBjaGlsZCk7DQo+ID4gKwlvZl9wbGF0Zm9ybV9kZXZpY2VfY3JlYXRlKGNoaWxkLCBO VUxMLCAmcGRldi0+ZGV2KTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArDQo+ID4gK291 dF9jbGtfZGlzYWJsZToNCj4gPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShwbDM1M19zbWMtPm1l bWNsayk7DQo+ID4gK291dF9jbGtfZGlzX2FwZXI6DQo+ID4gKwljbGtfZGlzYWJsZV91bnByZXBh cmUocGwzNTNfc21jLT5hY2xrKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gZXJyOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IHBsMzUzX3NtY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikNCj4gPiArew0KPiA+ICsJc3RydWN0IHBsMzUzX3NtY19kYXRhICpwbDM1M19z bWMgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4gPiArDQo+ID4gKwljbGtfZGlzYWJs ZV91bnByZXBhcmUocGwzNTNfc21jLT5tZW1jbGspOw0KPiA+ICsJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKHBsMzUzX3NtYy0+YWNsayk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4g PiArDQo+ID4gKy8qIE1hdGNoIHRhYmxlIGZvciBkZXZpY2UgdHJlZSBiaW5kaW5nICovDQo+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHBsMzUzX3NtY19vZl9tYXRjaFtdID0g ew0KPiA+ICsJeyAuY29tcGF0aWJsZSA9ICJhcm0scGwzNTMtc21jLXIycDEiIH0sDQo+ID4gKwl7 IH0sDQo+ID4gK307DQo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHBsMzUzX3NtY19vZl9t YXRjaCk7DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBwbDM1M19z bWNfZHJpdmVyID0gew0KPiA+ICsJLnByb2JlCQk9IHBsMzUzX3NtY19wcm9iZSwNCj4gPiArCS5y ZW1vdmUJCT0gcGwzNTNfc21jX3JlbW92ZSwNCj4gPiArCS5kcml2ZXIJCT0gew0KPiA+ICsJCS5u YW1lCT0gInBsMzUzLXNtYyIsDQo+ID4gKwkJLnBtCT0gJnBsMzUzX3NtY19kZXZfcG1fb3BzLA0K PiA+ICsJCS5vZl9tYXRjaF90YWJsZSA9IHBsMzUzX3NtY19vZl9tYXRjaCwNCj4gPiArCX0sDQo+ ID4gK307DQo+ID4gKw0KPiA+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHBsMzUzX3NtY19kcml2 ZXIpOw0KPiA+ICsNCj4gPiArTU9EVUxFX0FVVEhPUigiWGlsaW54LCBJbmMuIik7DQo+ID4gK01P RFVMRV9ERVNDUklQVElPTigiQVJNIFBMMzUzIFNNQyBEcml2ZXIiKTsNCj4gPiArTU9EVUxFX0xJ Q0VOU0UoIkdQTCIpOw0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2Rh dGEvcGwzNTMtc21jLmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvcGwzNTMtDQo+IHNt Yy5oDQo+IA0KPiBJIGRvbid0IHRoaW5rIHlvdSByZWFsbHkgbmVlZCBhIHNlcGFyYXRlIGZpbGUg Zm9yIHRoZXNlIGVudW1zPyBVbmxlc3MNCj4gaXQgaXMgcmVhbGx5IHBsYXRmb3JtIHNwZWNpZmlj Pw0KVGhlIGlzc3VlIGhlcmUgaXMgSSBoYXZlIHRvIGluY2x1ZGUgdGhpcyBpbiBwbDM1M19uYW5k IGRyaXZlci4NCkFuZCBJIGp1c3QgcmVmZXJyZWQgIiBpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2Rh dGEvbXRkLW5hbmQtcHhhM3h4LmgiLCBoZW5jZQ0KSSBhZGRlZCBsaWtlIHRoaXMuDQo+IA0KPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uZmM0MTI5ZQ0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvcGwzNTMt c21jLmgNCj4gPiBAQCAtMCwwICsxLDI5IEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wDQo+ID4gKy8qDQo+ID4gKyAqIEFSTSBQTDM1MyBTTUMgRHJpdmVyIEhlYWRl cg0KPiA+ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWGlsaW54LCBJbmMNCj4gPiAr ICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fTElOVVhfTUVNT1JZX1BMMzUzX1NNQ19IDQo+ID4g KyNkZWZpbmUgX19MSU5VWF9NRU1PUllfUEwzNTNfU01DX0gNCj4gPiArDQo+ID4gK2VudW0gcGwz NTNfc21jX2VjY19tb2RlIHsNCj4gPiArCVBMMzUzX1NNQ19FQ0NNT0RFX0JZUEFTUyA9IDAsDQo+ ID4gKwlQTDM1M19TTUNfRUNDTU9ERV9BUEIgPSAxLA0KPiA+ICsJUEwzNTNfU01DX0VDQ01PREVf TUVNID0gMg0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArZW51bSBwbDM1M19zbWNfbWVtX3dpZHRoIHsN Cj4gPiArCVBMMzUzX1NNQ19NRU1fV0lEVEhfOCA9IDAsDQo+ID4gKwlQTDM1M19TTUNfTUVNX1dJ RFRIXzE2ID0gMQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArdTMyIHBsMzUzX3NtY19nZXRfZWNjX3Zh bChpbnQgZWNjX3JlZyk7DQo+ID4gK2ludCBwbDM1M19zbWNfZWNjX2lzX2J1c3kodm9pZCk7DQo+ ID4gK2ludCBwbDM1M19zbWNfZ2V0X25hbmRfaW50X3N0YXR1c19yYXcodm9pZCk7DQo+ID4gK3Zv aWQgcGwzNTNfc21jX2Nscl9uYW5kX2ludCh2b2lkKTsNCj4gPiAraW50IHBsMzUzX3NtY19zZXRf ZWNjX21vZGUoZW51bSBwbDM1M19zbWNfZWNjX21vZGUgbW9kZSk7DQo+ID4gK2ludCBwbDM1M19z bWNfc2V0X2VjY19wZ19zaXplKHVuc2lnbmVkIGludCBwZ19zeik7DQo+ID4gK2ludCBwbDM1M19z bWNfc2V0X2J1c3dpZHRoKHVuc2lnbmVkIGludCBidyk7DQo+ID4gKyNlbmRpZg0KPiANCj4gVGhh bmtzLA0KPiBNaXF1w6hsDQo+IA0KPiAtLQ0KPiBNaXF1ZWwgUmF5bmFsLCBCb290bGluIChmb3Jt ZXJseSBGcmVlIEVsZWN0cm9ucykNCj4gRW1iZWRkZWQgTGludXggYW5kIEtlcm5lbCBlbmdpbmVl cmluZw0KPiBodHRwczovL2Jvb3RsaW4uY29tDQoNClRoYW5rcywNCk5hZ2EgU3VyZXNoa3VtYXIg UmVsbGkNCg==