Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp7464634ybi; Mon, 8 Jul 2019 22:30:20 -0700 (PDT) X-Google-Smtp-Source: APXvYqx7hvxQSjEHR1bpnuQ4CI/p7QLAHbd51orjT3yOFHRTQc83yc4hQpU2HKVjy9t5K7E3ezM4 X-Received: by 2002:a63:60c8:: with SMTP id u191mr26565443pgb.401.1562650220610; Mon, 08 Jul 2019 22:30:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562650220; cv=none; d=google.com; s=arc-20160816; b=eaFdJG5KDyFGymfJyyUV/xNb7kaIxQaO9cZnBIW5FX1VQg7I8tTxbiNQwEVLFC6zhx knHG7u2ngrUHh0RWnZCkmqoAJxRIk8ZRAKTi0nOK6Su1oY9B5yGENUwNvfjeo/L0qtuc kW2ADxH1C1/5euJNXvf2CiwKFPWUERQ8UKCIrzyaRyMS715fQAdsIKkfAGkRazWaL5A4 KJq+cZ5P1Ikr1/U1AMqPX6t/RKfcjdy4V9oUl31dMTS1N6RkKuRzj+zuMkb9cFR2Wo2R EZuCGj6nVcS4JqR5khV2cz3/Fgi5881lpA+6jyAMc8OGRtMdgmsPRgu2+JtJk0epZ1eA 8taA== 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 :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=m4zqd8igU1n1PF9UfLtfSv92o/5cd2wDutCo88jET28=; b=lcYwphfaGAbGtPVofG7L05CwW9cmaWOMuCTaZ9HsQVnrm4qgdAdkC6Lu3x29+hGAl+ +tREj943ZCPy9TI9fuKFmPUDrxnEmIgMInK1a/lVW63M1BKuyDK8pRFuAbQCinO6sNdn x8/XEGne+6HKLPSHPU4RzRRAroCTjA7OnW9XTlxZtDj4ruKmVCHud9vDRmFdWTbBEgGA SyRmn5djUY2FEdlzcD0nAlKq4zVWHY8oCOWnSiTPwu8y3RGrTA9kcvu8zXnALUWYcdNs ZDtadpgCVpaB4qIPqWDXYG9KzExS4sffl5jPj2nLx/A2K2R6FfofVWzmKv64RbFiqNf1 S+8Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=nZ1Tuclv; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m68si23535643pfm.150.2019.07.08.22.30.05; Mon, 08 Jul 2019 22:30:20 -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=@nxp.com header.s=selector2 header.b=nZ1Tuclv; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727059AbfGIF11 (ORCPT + 99 others); Tue, 9 Jul 2019 01:27:27 -0400 Received: from mail-eopbgr60080.outbound.protection.outlook.com ([40.107.6.80]:53057 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725951AbfGIF11 (ORCPT ); Tue, 9 Jul 2019 01:27:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m4zqd8igU1n1PF9UfLtfSv92o/5cd2wDutCo88jET28=; b=nZ1Tuclvyg/G+92EGAGojohTSDy3abt/On1c3Vm7qhUkiAHqvRd0Hf2ayxijmrWWcsFfqSIr3U21Hrn6GnZD/ZP0qumKNY6bUGlw89BD2fG/SNsdVDy9migdIFeHcKyAUFAWXFaHUlttUjsbcz6T6nJwtnYuF9dBpy0r2LUS9cs= Received: from DB7PR04MB4490.eurprd04.prod.outlook.com (52.135.138.150) by DB7PR04MB4569.eurprd04.prod.outlook.com (52.135.138.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2052.17; Tue, 9 Jul 2019 05:27:14 +0000 Received: from DB7PR04MB4490.eurprd04.prod.outlook.com ([fe80::413e:84ea:f3bb:40bd]) by DB7PR04MB4490.eurprd04.prod.outlook.com ([fe80::413e:84ea:f3bb:40bd%5]) with mapi id 15.20.2052.020; Tue, 9 Jul 2019 05:27:14 +0000 From: Biwen Li To: Leo Li , "a.zummo@towertech.it" , "alexandre.belloni@bootlin.com" CC: "linux-rtc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Xiaobo Xie , Jiafei Pan , Ran Wang Subject: RE: [PATCH 1/2] rtc/fsl: add FTM alarm driver as the wakeup source Thread-Topic: [PATCH 1/2] rtc/fsl: add FTM alarm driver as the wakeup source Thread-Index: AQHVMxw2SSddYqd/uEG7XEnDJg/D8abBJAAAgACiLuA= Date: Tue, 9 Jul 2019 05:27:14 +0000 Message-ID: References: <20190705101800.44561-1-biwen.li@nxp.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=biwen.li@nxp.com; x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: cd937e91-aa6d-4d5e-bf4e-08d7042e1a05 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DB7PR04MB4569; x-ms-traffictypediagnostic: DB7PR04MB4569: x-ms-exchange-purlcount: 1 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4941; x-forefront-prvs: 0093C80C01 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(376002)(346002)(396003)(366004)(39860400002)(136003)(199004)(189003)(13464003)(44832011)(33656002)(6246003)(446003)(14454004)(55016002)(4326008)(11346002)(229853002)(256004)(476003)(6436002)(14444005)(8676002)(99286004)(81166006)(81156014)(9686003)(486006)(53946003)(8936002)(25786009)(53936002)(76116006)(54906003)(66946007)(6306002)(73956011)(2501003)(186003)(66446008)(64756008)(66556008)(66476007)(26005)(53546011)(6506007)(3846002)(6116002)(102836004)(316002)(30864003)(71190400001)(52536014)(71200400001)(7696005)(68736007)(2906002)(110136005)(66066001)(305945005)(966005)(2201001)(74316002)(5660300002)(7736002)(478600001)(86362001)(76176011)(2004002);DIR:OUT;SFP:1101;SCL:1;SRVR:DB7PR04MB4569;H:DB7PR04MB4490.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: KaU0degjOB9mXMkm5pNl4ZSrcTD6vRgN0lp0bT/KvA6O4USro7MIfgKqC/uEeG3gT7z1GjCSwfDawyR5zsgJtDtecgJq/P+etlhlF0uOl4SQKazBhsvrazi/D7EUKAN2wPo6wMdyStg6lYsBX7+HntijPsTVatGWhsJT8sc5m3WH1MBnYi+cJmhui9aYvHMu/1vRPrG77v/tdBGLKUcIGK/kgxS67uqN7LxTfGcwyPJKnpHY6FJQzef6p4HsTg/qpAkm1Tz+SSHKX+ZwMYfI7DBeCgT3th1is0G2OBBbvdL1z0BNkhBhcz1ba2y2vnY4QbUzcDpai8fzTxqA7pyNxMYSSF/+c7/Ai39zGlNKQ9Y/3gVtyOQrPSW9rpuK3mbb2cunrsDrSWDnU9NBgPf+qA7JuR2JshPos6b7DnsBJjc= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: cd937e91-aa6d-4d5e-bf4e-08d7042e1a05 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jul 2019 05:27:14.5766 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: biwen.li@nxp.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4569 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBMZW8gTGkgDQpTZW50OiAyMDE5 xOo31MI5yNUgMzo0MQ0KVG86IEJpd2VuIExpIDxiaXdlbi5saUBueHAuY29tPjsgYS56dW1tb0B0 b3dlcnRlY2guaXQ7IGFsZXhhbmRyZS5iZWxsb25pQGJvb3RsaW4uY29tDQpDYzogbGludXgtcnRj QHZnZXIua2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgWGlhb2JvIFhp ZSA8eGlhb2JvLnhpZUBueHAuY29tPjsgSmlhZmVpIFBhbiA8amlhZmVpLnBhbkBueHAuY29tPjsg UmFuIFdhbmcgPHJhbi53YW5nXzFAbnhwLmNvbT47IEJpd2VuIExpIDxiaXdlbi5saUBueHAuY29t Pg0KU3ViamVjdDogUkU6IFtQQVRDSCAxLzJdIHJ0Yy9mc2w6IGFkZCBGVE0gYWxhcm0gZHJpdmVy IGFzIHRoZSB3YWtldXAgc291cmNlDQoNCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+IEZyb206IEJpd2VuIExpIDxiaXdlbi5saUBueHAuY29tPg0KPiBTZW50OiBGcmlkYXksIEp1 bHkgNSwgMjAxOSA1OjE4IEFNDQo+IFRvOiBhLnp1bW1vQHRvd2VydGVjaC5pdDsgYWxleGFuZHJl LmJlbGxvbmlAYm9vdGxpbi5jb207IExlbyBMaSANCj4gPGxlb3lhbmcubGlAbnhwLmNvbT4NCj4g Q2M6IGxpbnV4LXJ0Y0B2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5v cmc7IFhpYW9ibyANCj4gWGllIDx4aWFvYm8ueGllQG54cC5jb20+OyBKaWFmZWkgUGFuIDxqaWFm ZWkucGFuQG54cC5jb20+OyBSYW4gV2FuZyANCj4gPHJhbi53YW5nXzFAbnhwLmNvbT47IEJpd2Vu IExpIDxiaXdlbi5saUBueHAuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggMS8yXSBydGMvZnNsOiBh ZGQgRlRNIGFsYXJtIGRyaXZlciBhcyB0aGUgd2FrZXVwIA0KPiBzb3VyY2UNCj4gDQo+IEZvciB0 aGUgcGFsdGZvcm1zIGluY2x1ZGluZyBMUzEwMTJBLCBMUzEwMjFBLCBMUzEwMjhBLCBMUzEwNDNB LCANCj4gTFMxMDQ2QSwgTFMxMDg4QSwgTFMyMDh4QSB0aGF0IGhhcyB0aGUgRmxleFRpbWVyIG1v ZHVsZSwgaW1wbGVtZW50aW5nIA0KPiBhbGFybSBmdW5jdGlvbnMgd2l0aGluIFJUQyBzdWJzeXN0 ZW0gdG8gd2FrZXVwIHRoZSBzeXN0ZW0gd2hlbiBzeXN0ZW0gDQo+IGdvaW5nIHRvIHNsZWVwLg0K PiANCj4gU2lnbmVkLW9mZi1ieTogQml3ZW4gTGkgPGJpd2VuLmxpQG54cC5jb20+DQo+IC0tLQ0K PiAgZHJpdmVycy9ydGMvS2NvbmZpZyAgICAgICAgICAgICB8ICAxNCArKw0KPiAgZHJpdmVycy9y dGMvTWFrZWZpbGUgICAgICAgICAgICB8ICAgMSArDQo+ICBkcml2ZXJzL3J0Yy9ydGMtZnNsLWZ0 bS1hbGFybS5jIHwgNDE3DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysNCj4gIDMgZmlsZXMgY2hhbmdlZCwgNDMyIGluc2VydGlvbnMoKykNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL3J0Yy9ydGMtZnNsLWZ0bS1hbGFybS5jDQo+IA0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ydGMvS2NvbmZpZyBiL2RyaXZlcnMvcnRjL0tjb25maWcgaW5kZXggDQo+IDAz YjYwZDUuLjA3NThhMDgNCj4gMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvcnRjL0tjb25maWcNCj4g KysrIGIvZHJpdmVycy9ydGMvS2NvbmZpZw0KPiBAQCAtMTMxMyw2ICsxMzEzLDIwIEBAIGNvbmZp ZyBSVENfRFJWX0lNWERJDQo+ICAJICAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMg YSBtb2R1bGUsIGlmIHNvLCB0aGUgbW9kdWxlDQo+ICAJICAgd2lsbCBiZSBjYWxsZWQgInJ0Yy1p bXhkaSIuDQo+IA0KPiArY29uZmlnIFJUQ19EUlZfRlNMX0ZUTV9BTEFSTQ0KPiArCXRyaXN0YXRl ICJGcmVlc2NhbGUgRmxleFRpbWVyIGFsYXJtIHRpbWVyIg0KPiArCWRlcGVuZHMgb24gQVJDSF9M QVlFUlNDQVBFDQo+ICsJZGVmYXVsdCB5DQo+ICsJaGVscA0KPiArCSAgIEZvciB0aGUgRmxleFRp bWVyIGluIExTMTAxMkEsIExTMTAyMUEsIExTMTAyOEEsIExTMTA0M0EsIExTMTA0NkEsDQo+ICsJ ICAgTFMxMDg4QSwgTFMyMDh4QSwgd2UgY2FuIHVzZSBGVE0gYXMgdGhlIHdha2V1cCBzb3VyY2Uu DQo+ICsNCj4gKwkgICBTYXkgeSBoZXJlIHRvIGVuYWJsZSBGVE0gYWxhcm0gc3VwcG9ydC4gVGhl IEZUTSBhbGFybSBwcm92aWRlcw0KPiArCSAgIGFsYXJtIGZ1bmN0aW9ucyBmb3Igd2FrZXVwIHN5 c3RlbSBmcm9tIGRlZXAgc2xlZXAuDQo+ICsNCj4gKwkgICBUaGlzIGRyaXZlciBjYW4gYWxzbyBi ZSBidWlsdCBhcyBhIG1vZHVsZSwgaWYgc28sIHRoZSBtb2R1bGUNCj4gKwkgICB3aWxsIGJlIGNh bGxlZCAicnRjLWZzbC1mdG0tYWxhcm0iLg0KPiArDQo+ICBjb25maWcgUlRDX0RSVl9NRVNPTg0K PiAgCXRyaXN0YXRlICJBbWxvZ2ljIE1lc29uIFJUQyINCj4gIAlkZXBlbmRzIG9uIChBUk0gJiYg QVJDSF9NRVNPTikgfHwgQ09NUElMRV9URVNUIGRpZmYgLS1naXQgDQo+IGEvZHJpdmVycy9ydGMv TWFrZWZpbGUgYi9kcml2ZXJzL3J0Yy9NYWtlZmlsZSBpbmRleCA5ZDk5N2ZhLi41Y2NjYjA3IA0K PiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ydGMvTWFrZWZpbGUNCj4gKysrIGIvZHJpdmVycy9y dGMvTWFrZWZpbGUNCj4gQEAgLTc5LDYgKzc5LDcgQEAgb2JqLSQoQ09ORklHX1JUQ19EUlZfSElE X1NFTlNPUl9USU1FKSArPSBydGMtIA0KPiBoaWQtc2Vuc29yLXRpbWUubw0KPiAgb2JqLSQoQ09O RklHX1JUQ19EUlZfSFlNODU2MykJKz0gcnRjLWh5bTg1NjMubw0KPiAgb2JqLSQoQ09ORklHX1JU Q19EUlZfSU1YREkpCSs9IHJ0Yy1pbXhkaS5vDQo+ICBvYmotJChDT05GSUdfUlRDX0RSVl9JTVhf U0MpCSs9IHJ0Yy1pbXgtc2Mubw0KPiArb2JqLSQoQ09ORklHX1JUQ19EUlZfRlNMX0ZUTV9BTEFS TSkJKz0gcnRjLWZzbC1mdG0tYWxhcm0ubw0KPiAgb2JqLSQoQ09ORklHX1JUQ19EUlZfSVNMMTIw MjIpCSs9IHJ0Yy1pc2wxMjAyMi5vDQo+ICBvYmotJChDT05GSUdfUlRDX0RSVl9JU0wxMjAyNikJ Kz0gcnRjLWlzbDEyMDI2Lm8NCj4gIG9iai0kKENPTkZJR19SVENfRFJWX0lTTDEyMDgpCSs9IHJ0 Yy1pc2wxMjA4Lm8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1mc2wtZnRtLWFsYXJt LmMgDQo+IGIvZHJpdmVycy9ydGMvcnRjLWZzbC1mdG0tYWxhcm0uYyBuZXcgZmlsZSBtb2RlIDEw MDY0NCBpbmRleCANCj4gMDAwMDAwMC4uZTQwNzVmMA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L2RyaXZlcnMvcnRjL3J0Yy1mc2wtZnRtLWFsYXJtLmMNCj4gQEAgLTAsMCArMSw0MTcgQEANCj4g Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICsvKg0KPiArICogRnJlZXNj YWxlIEZsZXhUaW1lciBNb2R1bGUgKEZUTSkgYWxhcm0gZGV2aWNlIGRyaXZlci4NCj4gKyAqDQo+ ICsgKiBDb3B5cmlnaHQgMjAxNCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLg0KPiArICog Q29weXJpZ2h0IDIwMTkgTlhQDQo+ICsgKg0KPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KPiArICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCj4gKyAqIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyDQo+ICsgKiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+DQo+ICsj aW5jbHVkZSA8bGludXgvZXJyLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQo+ ICsjaW5jbHVkZSA8bGludXgvaW8uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+ DQo+ICsjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZv cm1fZGV2aWNlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4NCj4gKyNpbmNsdWRlIDxsaW51 eC9vZl9kZXZpY2UuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gKyNpbmNsdWRl IDxsaW51eC9mc2wvZnRtLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcnRjLmg+DQo+ICsjaW5jbHVk ZSA8bGludXgvdGltZS5oPg0KPiArDQo+ICsjZGVmaW5lIEZUTV9TQ19DTEsoYykJCSgoYykgPDwg RlRNX1NDX0NMS19NQVNLX1NISUZUKQ0KPiArDQo+ICsvKg0KPiArICogU2VsZWN0IEZpeGVkIGZy ZXF1ZW5jeSBjbG9jayBhcyBjbG9jayBzb3VyY2UNCj4gKyAqIG9mIEZsZXhUaW1lciBNb2R1bGUN Cj4gKyAqLw0KPiArI2RlZmluZSBGVE1fU0NfQ0xLU19GSVhFRF9GUkVRCTB4MDINCj4gKw0KPiAr I2RlZmluZSBGSVhFRF9GUkVRX0NMSwkJMzIwMDANCj4gKyNkZWZpbmUgTUFYX0ZSRVFfRElWCQko MSA8PCBGVE1fU0NfUFNfTUFTSykNCj4gKyNkZWZpbmUgTUFYX0NPVU5UX1ZBTAkJMHhmZmZmDQo+ ICsNCj4gK3N0cnVjdCBmdG1fcnRjIHsNCj4gKwlzdHJ1Y3QgcnRjX2RldmljZSAqcnRjX2RldjsN Cj4gKwl2b2lkIF9faW9tZW0gKmJhc2U7DQo+ICsJYm9vbCBlbmRpYW47DQo+ICsJdTMyIGFsYXJt X2ZyZXE7DQo+ICt9Ow0KPiArDQo+ICtlbnVtIHBtdV9lbmRpYW5fdHlwZSB7DQo+ICsJQklHX0VO RElBTiwNCj4gKwlMSVRUTEVfRU5ESUFOLA0KPiArfTsNCj4gKw0KPiArLyoNCj4gKyAqIHJjcG0g KFJ1biBDb250cm9sIGFuZCBQb3dlciBNYW5hZ2VtZW50KQ0KPiArICogaXMgYW5vdGhlciBJUCBi bG9jayxkaWZmZXJlbnQgSVAgYmxvY2sNCj4gKyAqIGhhcyBkaWZmZXJlbnQgZW5kaWFubmVzcyxz byBhZGQgbmV3IGVsZW1lbnQNCj4gKyAqIGJpZ19lbmRpYW4gdG8gc3RydWN0IHJjcG1fY2ZnLg0K PiArICovDQo+ICtzdHJ1Y3QgcmNwbV9jZmcgew0KPiArCWVudW0gcG11X2VuZGlhbl90eXBlIGJp Z19lbmRpYW47IC8qIEJpZy9MaXR0bGUgZW5kaWFuIG9mIFBNVQ0KPiBtb2R1bGUgKi8NCj4gKwl1 MzIgZmxleHRpbWVyX3NldF9iaXQ7CS8qIEZUTSBpcyBub3QgcG93ZXJkb3duIGR1cmluZyBkZXZp Y2UNCj4gc2xlZXAgKi8NCj4gK307DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgcmNwbV9jZmcgZGVm YXVsdF9yY3BtX2NmZyA9IHsNCj4gKwkuYmlnX2VuZGlhbiA9IExJVFRMRV9FTkRJQU4sDQo+ICsJ LmZsZXh0aW1lcl9zZXRfYml0ID0gMHg0MDAwLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVj dCByY3BtX2NmZyBsczEwMTJhX3JjcG1fY2ZnID0gew0KPiArCS5iaWdfZW5kaWFuID0gQklHX0VO RElBTiwNCj4gKwkuZmxleHRpbWVyX3NldF9iaXQgPSAweDIwMDAwLA0KPiArfTsNCj4gKw0KPiAr c3RhdGljIHN0cnVjdCByY3BtX2NmZyBsczEwMjFhX3JjcG1fY2ZnID0gew0KPiArCS5iaWdfZW5k aWFuID0gQklHX0VORElBTiwNCj4gKwkuZmxleHRpbWVyX3NldF9iaXQgPSAweDIwMDAwLA0KPiAr fTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCByY3BtX2NmZyBsczEwNDNhX3JjcG1fY2ZnID0gew0K PiArCS5iaWdfZW5kaWFuID0gQklHX0VORElBTiwNCj4gKwkuZmxleHRpbWVyX3NldF9iaXQgPSAw eDIwMDAwLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCByY3BtX2NmZyBsczEwNDZhX3Jj cG1fY2ZnID0gew0KPiArCS5iaWdfZW5kaWFuID0gQklHX0VORElBTiwNCj4gKwkuZmxleHRpbWVy X3NldF9iaXQgPSAweDIwMDAwLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCByY3BtX2Nm ZyBsczEwODhhX3JjcG1fY2ZnID0gew0KPiArCS5iaWdfZW5kaWFuID0gTElUVExFX0VORElBTiwN Cj4gKwkuZmxleHRpbWVyX3NldF9iaXQgPSAweDQwMDAsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMg c3RydWN0IHJjcG1fY2ZnIGxzMjA4eGFfcmNwbV9jZmcgPSB7DQo+ICsJLmJpZ19lbmRpYW4gPSBM SVRUTEVfRU5ESUFOLA0KPiArCS5mbGV4dGltZXJfc2V0X2JpdCA9IDB4NDAwMCwNCj4gK307DQo+ ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgcmNwbV9jZmcgbHMxMDI4YV9yY3BtX2NmZyA9IHsNCj4gKwku YmlnX2VuZGlhbiA9IExJVFRMRV9FTkRJQU4sDQo+ICsJLyoxNHRoIGJpdDpGbGV4VGltZXIxLTQg YXJlIG5vdCBwb3dlcmRvd24gZHVyaW5nIGRldmljZSBzbGVlcCovDQo+ICsJLmZsZXh0aW1lcl9z ZXRfYml0ID0gMHg0MDAwLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgaXBwZGV4cGNyX29mX21hdGNoW10gPSB7DQo+ICsJeyAuY29tcGF0aWJsZSA9ICJm c2wsZnRtLWFsYXJtIiwgLmRhdGEgPSAmZGVmYXVsdF9yY3BtX2NmZ30sDQo+ICsJeyAuY29tcGF0 aWJsZSA9ICJmc2wsbHMxMDEyYS1mdG0tYWxhcm0iLCAuZGF0YSA9ICZsczEwMTJhX3JjcG1fY2Zn fSwNCj4gKwl7IC5jb21wYXRpYmxlID0gImZzbCxsczEwMjFhLWZ0bS1hbGFybSIsIC5kYXRhID0g JmxzMTAyMWFfcmNwbV9jZmd9LA0KPiArCXsgLmNvbXBhdGlibGUgPSAiZnNsLGxzMTA0M2EtZnRt LWFsYXJtIiwgLmRhdGEgPSAmbHMxMDQzYV9yY3BtX2NmZ30sDQo+ICsJeyAuY29tcGF0aWJsZSA9 ICJmc2wsbHMxMDQ2YS1mdG0tYWxhcm0iLCAuZGF0YSA9ICZsczEwNDZhX3JjcG1fY2ZnfSwNCj4g Kwl7IC5jb21wYXRpYmxlID0gImZzbCxsczEwODhhLWZ0bS1hbGFybSIsIC5kYXRhID0gJmxzMTA4 OGFfcmNwbV9jZmd9LA0KPiArCXsgLmNvbXBhdGlibGUgPSAiZnNsLGxzMjA4eGEtZnRtLWFsYXJt IiwgLmRhdGEgPSAmbHMyMDh4YV9yY3BtX2NmZ30sDQo+ICsJeyAuY29tcGF0aWJsZSA9ICJmc2ws bHMxMDI4YS1mdG0tYWxhcm0iLCAuZGF0YSA9ICZsczEwMjhhX3JjcG1fY2ZnfSwNCj4gKwl7fSwN Cj4gK307DQo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpcHBkZXhwY3Jfb2ZfbWF0Y2gpOw0K DQpIb3cgYWJvdXQgcmV1c2luZyB0aGUgaXBwZGV4cGNyIHJlZ2lzdGVyIHNldHVwIGZyb20gdGhl IFJDUE0gZHJpdmVyIHN1Ym1pdHRlZCBieSBSYW4gV2FuZz8gIGh0dHBzOi8vbGttbC5vcmcvbGtt bC8yMDE5LzUvMjAvMzc5DQpXaXRoIHRoYXQgYXBwcm9hY2gsIHdlIGRvbid0IG5lZWQgdG8gZGVm aW5lIGFuZCBrZWVwIHVwZGF0aW5nIHRoZSBiaXQgZGVmaW5pdGlvbiBmb3IgZWFjaCBTb0MgaW4g dGhlIGRyaXZlciwgYnV0IG9ubHkgbmVlZCB0byBkZWZpbmUgaXQgaW4gdGhlIGRldmljZSB0cmVl cy4NCltCaXdlbiBMaV0gWWVzLGl0J3MgYSBnb29kIGlkZWEuSSB3aWxsIHJlbW92ZSB0aGUgY29k ZSBhYm91dCBSQ1BNIGluIHYyLg0KDQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdTMyIHJ0Y19yZWFk bChzdHJ1Y3QgZnRtX3J0YyAqZGV2LCB1MzIgcmVnKSB7DQo+ICsJaWYgKGRldi0+ZW5kaWFuKQ0K PiArCQlyZXR1cm4gaW9yZWFkMzJiZShkZXYtPmJhc2UgKyByZWcpOyAvKmJpZyBlbmRpYW5uZXNz Ki8NCj4gKw0KPiArCXJldHVybiBpb3JlYWQzMihkZXYtPmJhc2UgKyByZWcpOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcnRjX3dyaXRlbChzdHJ1Y3QgZnRtX3J0YyAqZGV2LCB1 MzIgcmVnLCB1MzIgdmFsKSB7DQo+ICsJaWYgKGRldi0+ZW5kaWFuKQ0KPiArCQlpb3dyaXRlMzJi ZSh2YWwsIGRldi0+YmFzZSArIHJlZyk7DQo+ICsJZWxzZQ0KPiArCQlpb3dyaXRlMzIodmFsLCBk ZXYtPmJhc2UgKyByZWcpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgZnRtX2Nv dW50ZXJfZW5hYmxlKHN0cnVjdCBmdG1fcnRjICpydGMpIHsNCj4gKwl1MzIgdmFsOw0KPiArDQo+ ICsJLyogc2VsZWN0IGFuZCBlbmFibGUgY291bnRlciBjbG9jayBzb3VyY2UgKi8NCj4gKwl2YWwg PSBydGNfcmVhZGwocnRjLCBGVE1fU0MpOw0KPiArCXZhbCAmPSB+KEZUTV9TQ19QU19NQVNLIHwg RlRNX1NDX0NMS19NQVNLKTsNCj4gKwl2YWwgfD0gKEZUTV9TQ19QU19NQVNLIHwNCj4gRlRNX1ND X0NMSyhGVE1fU0NfQ0xLU19GSVhFRF9GUkVRKSk7DQo+ICsJcnRjX3dyaXRlbChydGMsIEZUTV9T QywgdmFsKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSB2b2lkIGZ0bV9jb3VudGVyX2Rp c2FibGUoc3RydWN0IGZ0bV9ydGMgKnJ0Yykgew0KPiArCXUzMiB2YWw7DQo+ICsNCj4gKwkvKiBk aXNhYmxlIGNvdW50ZXIgY2xvY2sgc291cmNlICovDQo+ICsJdmFsID0gcnRjX3JlYWRsKHJ0Yywg RlRNX1NDKTsNCj4gKwl2YWwgJj0gfihGVE1fU0NfUFNfTUFTSyB8IEZUTV9TQ19DTEtfTUFTSyk7 DQo+ICsJcnRjX3dyaXRlbChydGMsIEZUTV9TQywgdmFsKTsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGlubGluZSB2b2lkIGZ0bV9pcnFfYWNrbm93bGVkZ2Uoc3RydWN0IGZ0bV9ydGMgKnJ0Yykgew0K PiArCXVuc2lnbmVkIGludCB0aW1lb3V0ID0gMTAwOw0KPiArDQo+ICsJd2hpbGUgKChGVE1fU0Nf VE9GICYgcnRjX3JlYWRsKHJ0YywgRlRNX1NDKSkgJiYgdGltZW91dC0tKQ0KPiArCQlydGNfd3Jp dGVsKHJ0YywgRlRNX1NDLCBydGNfcmVhZGwocnRjLCBGVE1fU0MpICYNCj4gKH5GVE1fU0NfVE9G KSk7IH0NCj4gKw0KPiArc3RhdGljIGlubGluZSB2b2lkIGZ0bV9pcnFfZW5hYmxlKHN0cnVjdCBm dG1fcnRjICpydGMpIHsNCj4gKwl1MzIgdmFsOw0KPiArDQo+ICsJdmFsID0gcnRjX3JlYWRsKHJ0 YywgRlRNX1NDKTsNCj4gKwl2YWwgfD0gRlRNX1NDX1RPSUU7DQo+ICsJcnRjX3dyaXRlbChydGMs IEZUTV9TQywgdmFsKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSB2b2lkIGZ0bV9pcnFf ZGlzYWJsZShzdHJ1Y3QgZnRtX3J0YyAqcnRjKSB7DQo+ICsJdTMyIHZhbDsNCj4gKw0KPiArCXZh bCA9IHJ0Y19yZWFkbChydGMsIEZUTV9TQyk7DQo+ICsJdmFsICY9IH5GVE1fU0NfVE9JRTsNCj4g KwlydGNfd3JpdGVsKHJ0YywgRlRNX1NDLCB2YWwpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5s aW5lIHZvaWQgZnRtX3Jlc2V0X2NvdW50ZXIoc3RydWN0IGZ0bV9ydGMgKnJ0Yykgew0KPiArCS8q DQo+ICsJICogVGhlIENOVCByZWdpc3RlciBjb250YWlucyB0aGUgRlRNIGNvdW50ZXIgdmFsdWUu DQo+ICsJICogUmVzZXQgY2xlYXJzIHRoZSBDTlQgcmVnaXN0ZXIuIFdyaXRpbmcgYW55IHZhbHVl IHRvIENPVU5UDQo+ICsJICogdXBkYXRlcyB0aGUgY291bnRlciB3aXRoIGl0cyBpbml0aWFsIHZh bHVlLCBDTlRJTi4NCj4gKwkgKi8NCj4gKwlydGNfd3JpdGVsKHJ0YywgRlRNX0NOVCwgMHgwMCk7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGZ0bV9jbGVhbl9hbGFybShzdHJ1Y3QgZnRtX3J0 YyAqcnRjKSB7DQo+ICsJZnRtX2NvdW50ZXJfZGlzYWJsZShydGMpOw0KPiArDQo+ICsJcnRjX3dy aXRlbChydGMsIEZUTV9DTlRJTiwgMHgwMCk7DQo+ICsJcnRjX3dyaXRlbChydGMsIEZUTV9NT0Qs IH4wVSk7DQo+ICsNCj4gKwlmdG1fcmVzZXRfY291bnRlcihydGMpOw0KPiArfQ0KPiArDQo+ICtz dGF0aWMgaXJxcmV0dXJuX3QgZnRtX3J0Y19hbGFybV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAq ZGV2KSB7DQo+ICsJc3RydWN0IGZ0bV9ydGMgKnJ0YyA9IGRldjsNCj4gKw0KPiArCWZ0bV9pcnFf YWNrbm93bGVkZ2UocnRjKTsNCj4gKwlmdG1faXJxX2Rpc2FibGUocnRjKTsNCj4gKwlmdG1fY2xl YW5fYWxhcm0ocnRjKTsNCj4gKw0KPiArCXJldHVybiBJUlFfSEFORExFRDsNCj4gK30NCj4gKw0K PiArc3RhdGljIGludCBmdG1fcnRjX2FsYXJtX2lycV9lbmFibGUoc3RydWN0IGRldmljZSAqZGV2 LA0KPiArCQl1bnNpZ25lZCBpbnQgZW5hYmxlZCkNCj4gK3sNCj4gKwlzdHJ1Y3QgZnRtX3J0YyAq cnRjID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICsNCj4gKwlpZiAoZW5hYmxlZCkNCj4gKwkJ ZnRtX2lycV9lbmFibGUocnRjKTsNCj4gKwllbHNlDQo+ICsJCWZ0bV9pcnFfZGlzYWJsZShydGMp Ow0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBOb3RlOg0KPiAr ICoJVGhlIGZ1bmN0aW9uIGlzIG5vdCByZWFsbHkgZ2V0dGluZyB0aW1lIGZyb20gdGhlIFJUQw0K PiArICoJc2luY2UgRmxleFRpbWVyIGlzIG5vdCBhIFJUQyBkZXZpY2UsIGJ1dCB3ZSBuZWVkIHRv DQo+ICsgKglnZXQgdGltZSB0byBzZXR1cCBhbGFybSwgc28gd2UgYXJlIHVzaW5nIHN5c3RlbSB0 aW1lDQo+ICsgKglmb3Igbm93Lg0KPiArICovDQo+ICtzdGF0aWMgaW50IGZ0bV9ydGNfcmVhZF90 aW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJ0Y190aW1lICp0bSkgew0KPiArCXN0cnVj dCB0aW1lc3BlYzY0IHRzNjQ7DQo+ICsJdW5zaWduZWQgbG9uZyBsb2NhbF90aW1lOw0KPiArDQo+ ICsJa3RpbWVfZ2V0X3JlYWxfdHM2NCgmdHM2NCk7DQo+ICsJbG9jYWxfdGltZSA9ICh1bnNpZ25l ZCBsb25nKSh0czY0LnR2X3NlYyAtIChzeXNfdHoudHpfbWludXRlc3dlc3QgKiANCj4gKzYwKSk7 DQo+ICsNCj4gKwlydGNfdGltZV90b190bShsb2NhbF90aW1lLCB0bSk7DQo+ICsNCj4gKwlyZXR1 cm4gMDsNCj4gK30NCj4gK3N0YXRpYyBpbnQgZnRtX3J0Y19yZWFkX2FsYXJtKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IHJ0Y193a2Fscm0NCj4gKyphbG0pIHsNCj4gKwlyZXR1cm4gMDsNCj4g K30NCj4gKw0KPiArLyoyNTBIeiwgNjU1MzYgLyAyNTAgPSAyNjIgc2Vjb25kIG1heCovIHN0YXRp YyBpbnQgDQo+ICtmdG1fcnRjX3NldF9hbGFybShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBy dGNfd2thbHJtICphbG0pIHsNCj4gKwlzdHJ1Y3QgcnRjX3RpbWUgdG07DQo+ICsJdW5zaWduZWQg bG9uZyBub3csIGFsbV90aW1lLCBjeWNsZTsNCj4gKwlzdHJ1Y3QgZnRtX3J0YyAqcnRjID0gZGV2 X2dldF9kcnZkYXRhKGRldik7DQo+ICsNCj4gKwlmdG1fcnRjX3JlYWRfdGltZShkZXYsICZ0bSk7 DQo+ICsJcnRjX3RtX3RvX3RpbWUoJnRtLCAmbm93KTsNCj4gKwlydGNfdG1fdG9fdGltZSgmYWxt LT50aW1lLCAmYWxtX3RpbWUpOw0KPiArDQo+ICsJZnRtX2NsZWFuX2FsYXJtKHJ0Yyk7DQo+ICsJ Y3ljbGUgPSAoYWxtX3RpbWUgLSBub3cpICogcnRjLT5hbGFybV9mcmVxOw0KPiArCWlmIChjeWNs ZSA+IE1BWF9DT1VOVF9WQUwpIHsNCj4gKwkJcHJfZXJyKCJPdXQgb2YgYWxhcm0gcmFuZ2UuXG4i KTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArDQo+ICsJZnRtX2lycV9kaXNhYmxl KHJ0Yyk7DQo+ICsNCj4gKwkvKg0KPiArCSAqIFRoZSBjb3VudGVyIGluY3JlbWVudHMgdW50aWwg dGhlIHZhbHVlIG9mIE1PRCBpcyByZWFjaGVkLA0KPiArCSAqIGF0IHdoaWNoIHBvaW50IHRoZSBj b3VudGVyIGlzIHJlbG9hZGVkIHdpdGggdGhlIHZhbHVlIG9mIENOVElOLg0KPiArCSAqIFRoZSBU T0YgKHRoZSBvdmVyZmxvdyBmbGFnKSBiaXQgaXMgc2V0IHdoZW4gdGhlIEZUTSBjb3VudGVyDQo+ ICsJICogY2hhbmdlcyBmcm9tIE1PRCB0byBDTlRJTi4gU28gd2Ugc2hvdWxkIHVzaW5nIHRoZSBj eWNsZSAtIDEuDQo+ICsJICovDQo+ICsJcnRjX3dyaXRlbChydGMsIEZUTV9NT0QsIGN5Y2xlIC0g MSk7DQo+ICsNCj4gKwlmdG1fY291bnRlcl9lbmFibGUocnRjKTsNCj4gKwlmdG1faXJxX2VuYWJs ZShydGMpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNv bnN0IHN0cnVjdCBydGNfY2xhc3Nfb3BzIGZ0bV9ydGNfb3BzID0gew0KPiArCS5yZWFkX3RpbWUJ CT0gZnRtX3J0Y19yZWFkX3RpbWUsDQo+ICsJLnJlYWRfYWxhcm0JCT0gZnRtX3J0Y19yZWFkX2Fs YXJtLA0KPiArCS5zZXRfYWxhcm0JCT0gZnRtX3J0Y19zZXRfYWxhcm0sDQo+ICsJLmFsYXJtX2ly cV9lbmFibGUJPSBmdG1fcnRjX2FsYXJtX2lycV9lbmFibGUsDQo+ICt9Ow0KPiArc3RhdGljIGlu dCBmdG1fcnRjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpIHsNCj4gKwlzdHJ1 Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi0+ZGV2Lm9mX25vZGU7DQo+ICsJc3RydWN0IHJlc291 cmNlICpyOw0KPiArCWludCBpcnE7DQo+ICsJaW50IHJldDsNCj4gKwlzdHJ1Y3QgcmNwbV9jZmcg KnJjcG1fY2ZnOw0KPiArCXUzMiBpcHBkZXhwY3I7IC8qIFN0b3JlIHJlZ2lzdGVyJ3MgdmFsdWUN Cj4gKwkJCSogb2YgSVBQREVYUENSbiBmcm9tIFJDUE0gbW9kdWxlDQo+ICsJCQkqLw0KPiArCWNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX2lkOw0KPiArCXN0cnVjdCBmdG1fcnRjICpydGM7 DQo+ICsJdm9pZCBfX2lvbWVtICpyY3BtX2Z0bV9hZGRyOw0KPiArDQo+ICsJb2ZfaWQgPSBvZl9t YXRjaF9ub2RlKGlwcGRleHBjcl9vZl9tYXRjaCwgbnApOw0KPiArCWlmICghb2ZfaWQpIHsNCj4g KwkJcHJfZXJyKCJmdG06IG5vdCBoYXZlIG1hdGNoZWQgY29tcGF0aWJsZSBpZCBmb3INCj4gaXBw ZGV4cGNyXG4iKTsNCj4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ICsJfQ0KPiArDQo+ICsJcmNwbV9j ZmcgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpyY3BtX2NmZyksDQo+IEdGUF9L RVJORUwpOw0KPiArCWlmICghcmNwbV9jZmcpDQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ ICsJcmNwbV9jZmcgPSAoc3RydWN0IHJjcG1fY2ZnICopb2ZfaWQtPmRhdGE7DQo+ICsNCj4gKwkv KiBNYWtlIEZUTShJUCkgYSB3YWtlLXVwIHNvdXJjZSAqLw0KPiArCXIgPSBwbGF0Zm9ybV9nZXRf cmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLA0KPiAicG1jdHJsIik7DQo+ICsJ aWYgKHIpIHsNCj4gKwkJcmNwbV9mdG1fYWRkciA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRl di0+ZGV2LCByKTsNCj4gKwkJaWYgKElTX0VSUihyY3BtX2Z0bV9hZGRyKSkgew0KPiArCQkJcHJf ZXJyKCJmdG06IGNhbm5vdCBpb3JlbWFwIHJlc291cmNlIGZvcg0KPiByY3BtX2Z0bV9hZGRyXG4i KTsNCj4gKwkJCXJldHVybiBQVFJfRVJSKHJjcG1fZnRtX2FkZHIpOw0KPiArCQl9DQo+ICsJCWlm IChyY3BtX2NmZy0+YmlnX2VuZGlhbiA9PSBCSUdfRU5ESUFOKSB7DQo+ICsJCQlpcHBkZXhwY3Ig PSBpb3JlYWQzMmJlKHJjcG1fZnRtX2FkZHIpIHwgcmNwbV9jZmctDQo+ID5mbGV4dGltZXJfc2V0 X2JpdDsNCj4gKwkJCWlvd3JpdGUzMmJlKGlwcGRleHBjciwgcmNwbV9mdG1fYWRkcik7DQo+ICsN Cj4gKwkJfSBlbHNlIHsNCj4gKwkJCWlwcGRleHBjciA9IGlvcmVhZDMyKHJjcG1fZnRtX2FkZHIp IHwgcmNwbV9jZmctDQo+ID5mbGV4dGltZXJfc2V0X2JpdDsNCj4gKwkJCWlvd3JpdGUzMihpcHBk ZXhwY3IsIHJjcG1fZnRtX2FkZHIpOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJcnRjID0gZGV2 bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqcnRjKSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYg KHVubGlrZWx5KCFydGMpKSB7DQo+ICsJCXByX2VycigiZnRtOiBjYW5ub3QgYWxsb2MgbWVtZXJ5 IGZvciBydGNcbiIpOw0KPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gKwl9DQo+ICsNCj4gKw0KPiAr CXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHJ0Yyk7DQo+ICsNCj4gKwlyID0gcGxhdGZvcm1f Z2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsNCj4gKwlpZiAoIXIpIHsNCj4g KwkJcHJfZXJyKCJmdG06IGNhbm5vdCBnZXQgcmVzb3VyY2UgZm9yIHJ0Y1xuIik7DQo+ICsJCXJl dHVybiAtRU5PREVWOw0KPiArCX0NCj4gKw0KPiArCXJ0Yy0+YmFzZSA9IGRldm1faW9yZW1hcF9y ZXNvdXJjZSgmcGRldi0+ZGV2LCByKTsNCj4gKwlpZiAoSVNfRVJSKHJ0Yy0+YmFzZSkpIHsNCj4g KwkJcHJfZXJyKCJmdG06IGNhbm5vdCBpb3JlbWFwIHJlc291cmNlIGZvciBydGNcbiIpOw0KPiAr CQlyZXR1cm4gUFRSX0VSUihydGMtPmJhc2UpOw0KPiArCX0NCj4gKw0KPiArCWlycSA9IGlycV9v Zl9wYXJzZV9hbmRfbWFwKG5wLCAwKTsNCj4gKwlpZiAoaXJxIDw9IDApIHsNCj4gKwkJcHJfZXJy KCJmdG06IHVuYWJsZSB0byBnZXQgSVJRIGZyb20gRFQsICVkXG4iLCBpcnEpOw0KPiArCQlyZXR1 cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4gKwlydGMtPmVuZGlhbiA9IG9mX3Byb3BlcnR5X3Jl YWRfYm9vbChucCwgImJpZy1lbmRpYW4iKTsNCj4gKw0KPiArCXJldCA9IGRldm1fcmVxdWVzdF9p cnEoJnBkZXYtPmRldiwgaXJxLCBmdG1fcnRjX2FsYXJtX2ludGVycnVwdCwNCj4gKwkJCSAgICAg ICBJUlFGX05PX1NVU1BFTkQsIGRldl9uYW1lKCZwZGV2LT5kZXYpLA0KPiBydGMpOw0KPiArCWlm IChyZXQgPCAwKSB7DQo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byByZXF1ZXN0 IGlycVxuIik7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJcnRjLT5hbGFybV9m cmVxID0gKHUzMilGSVhFRF9GUkVRX0NMSyAvICh1MzIpTUFYX0ZSRVFfRElWOw0KPiArDQo+ICsJ ZnRtX2NsZWFuX2FsYXJtKHJ0Yyk7DQo+ICsNCj4gKwlkZXZpY2VfaW5pdF93YWtldXAoJnBkZXYt PmRldiwgdHJ1ZSk7DQo+ICsJcnRjLT5ydGNfZGV2ID0gZGV2bV9ydGNfZGV2aWNlX3JlZ2lzdGVy KCZwZGV2LT5kZXYsICJmdG0tYWxhcm0iLA0KPiArCQkJCQkJCSZmdG1fcnRjX29wcywNCj4gKwkJ CQkJCQlUSElTX01PRFVMRSk7DQo+ICsJaWYgKElTX0VSUihydGMtPnJ0Y19kZXYpKSB7DQo+ICsJ CWRldl9lcnIoJnBkZXYtPmRldiwgImNhbid0IHJlZ2lzdGVyIHJ0YyBkZXZpY2VcbiIpOw0KPiAr CQlyZXR1cm4gUFRSX0VSUihydGMtPnJ0Y19kZXYpOw0KPiArCX0NCj4gKwlyZXR1cm4gcmV0Ow0K PiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBmdG1fcnRjX21h dGNoW10gPSB7DQo+ICsJeyAuY29tcGF0aWJsZSA9ICJmc2wsZnRtLWFsYXJtIiwgfSwNCj4gKwl7 IC5jb21wYXRpYmxlID0gImZzbCxsczEwMTJhLWZ0bS1hbGFybSIsIH0sDQo+ICsJeyAuY29tcGF0 aWJsZSA9ICJmc2wsbHMxMDIxYS1mdG0tYWxhcm0iLCB9LA0KPiArCXsgLmNvbXBhdGlibGUgPSAi ZnNsLGxzMTA0M2EtZnRtLWFsYXJtIiwgfSwNCj4gKwl7IC5jb21wYXRpYmxlID0gImZzbCxsczEw NDZhLWZ0bS1hbGFybSIsIH0sDQo+ICsJeyAuY29tcGF0aWJsZSA9ICJmc2wsbHMxMDg4YS1mdG0t YWxhcm0iLCB9LA0KPiArCXsgLmNvbXBhdGlibGUgPSAiZnNsLGxzMjA4eGEtZnRtLWFsYXJtIiwg fSwNCj4gKwl7IC5jb21wYXRpYmxlID0gImZzbCxsczEwMjhhLWZ0bS1hbGFybSIsIH0sDQo+ICsJ eyB9LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZnRtX3J0 Y19kcml2ZXIgPSB7DQo+ICsJLnByb2JlCQk9IGZ0bV9ydGNfcHJvYmUsDQo+ICsJLmRyaXZlcgkJ PSB7DQo+ICsJCS5uYW1lCT0gImZ0bS1hbGFybSIsDQo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IGZ0 bV9ydGNfbWF0Y2gsDQo+ICsJfSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbnQgX19pbml0IGZ0 bV9hbGFybV9pbml0KHZvaWQpIHsNCj4gKwlyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVy KCZmdG1fcnRjX2RyaXZlcik7DQo+ICt9DQo+ICsNCj4gKy8qKioqKioqKioqKioqKioNCj4gKyAq RW5zdXJlIHRoYXQgdGhlIGRyaXZlciBpcyBpbml0aWFsaXplZCBhZnRlciAgKmFueSByZWFsIHJ0 YyBkcml2ZXIgIA0KPiArKi8gZGV2aWNlX2luaXRjYWxsX3N5bmMoZnRtX2FsYXJtX2luaXQpOw0K PiArDQo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk5YUC9GcmVlc2NhbGUgRmxleFRpbWVyIGFsYXJt IGRyaXZlciIpOyANCj4gK01PRFVMRV9BVVRIT1IoIkJpd2VuIExpIDxiaXdlbi5saUBueHAuY29t PiIpOw0KPiBNT0RVTEVfTElDRU5TRSgiR1BMIik7DQo+IC0tDQo+IDIuNy40DQoNCg==