From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1942CC10F13 for ; Mon, 8 Apr 2019 11:48:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id BBD302087F for ; Mon, 8 Apr 2019 11:48:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="XY5X+XrD" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726554AbfDHLsX (ORCPT ); Mon, 8 Apr 2019 07:48:23 -0400 Received: from esa2.microchip.iphmx.com ([68.232.149.84]:30421 "EHLO esa2.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726119AbfDHLsX (ORCPT ); Mon, 8 Apr 2019 07:48:23 -0400 X-IronPort-AV: E=Sophos;i="5.60,325,1549954800"; d="scan'208";a="29663990" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa2.microchip.iphmx.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 08 Apr 2019 04:48:21 -0700 Received: from NAM05-BY2-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.76.106) with Microsoft SMTP Server (TLS) id 14.3.352.0; Mon, 8 Apr 2019 04:48:21 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector1-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lSfJt3gHKeG40Ht5Hv4+5/DcNQLjDZIyYbIqxEgH6dQ=; b=XY5X+XrDbN+5G3Qh4YRVqAZZpL/jba0N5GAdegXns5ZTfLL4LYjE/sbSqsYhZzJp0srrkNl3H/Yy9J/H5dBd+gsO4paFov4eR0KMUFT8gVuREGq7SXJ59XbNYmOU151prphPtlacjMacselPWIG3u77+kInr7L0waentQu9jph0= Received: from MWHPR11MB1549.namprd11.prod.outlook.com (10.172.54.17) by MWHPR11MB1358.namprd11.prod.outlook.com (10.169.232.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1771.13; Mon, 8 Apr 2019 11:48:19 +0000 Received: from MWHPR11MB1549.namprd11.prod.outlook.com ([fe80::a93b:a765:cf98:383]) by MWHPR11MB1549.namprd11.prod.outlook.com ([fe80::a93b:a765:cf98:383%2]) with mapi id 15.20.1771.016; Mon, 8 Apr 2019 11:48:19 +0000 From: To: , , , , , , CC: , , Subject: Re: [PATCH 2/5] clocksource/drivers/timer-microchip-pit64b: add Microchip PIT64B support Thread-Topic: [PATCH 2/5] clocksource/drivers/timer-microchip-pit64b: add Microchip PIT64B support Thread-Index: AQHU2oKzNY9L7o7MvUGRVNlgkbjplaYyGT4AgAAzkIA= Date: Mon, 8 Apr 2019 11:48:19 +0000 Message-ID: References: <1552580772-8499-1-git-send-email-claudiu.beznea@microchip.com> <1552580772-8499-3-git-send-email-claudiu.beznea@microchip.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR0802CA0004.eurprd08.prod.outlook.com (2603:10a6:800:aa::14) To MWHPR11MB1549.namprd11.prod.outlook.com (2603:10b6:301:c::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Claudiu.Beznea@microchip.com; x-ms-exchange-messagesentrepresentingtype: 1 x-tagtoolbar-keys: D20190408144759599 x-originating-ip: [94.177.32.154] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2d286933-34f6-492a-57c8-08d6bc1817de x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(2017052603328)(7193020);SRVR:MWHPR11MB1358; x-ms-traffictypediagnostic: MWHPR11MB1358: x-microsoft-antispam-prvs: x-forefront-prvs: 0001227049 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(376002)(396003)(366004)(39850400004)(136003)(346002)(189003)(199004)(110136005)(6246003)(5660300002)(66066001)(36756003)(478600001)(8676002)(386003)(81166006)(76176011)(8936002)(30864003)(81156014)(68736007)(54906003)(26005)(6506007)(53546011)(102836004)(31696002)(186003)(99286004)(446003)(316002)(11346002)(71200400001)(31686004)(97736004)(106356001)(2906002)(86362001)(229853002)(2501003)(486006)(3846002)(6116002)(105586002)(305945005)(7736002)(14454004)(6486002)(14444005)(256004)(2616005)(6436002)(72206003)(476003)(25786009)(71190400001)(6512007)(53946003)(52116002)(4326008)(53936002);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR11MB1358;H:MWHPR11MB1549.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: microchip.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: jmr5Og+PqRLrr76IAQuw7DtgHCZ/v8DlS6ifX249vNG4m+XEhOOAW2FDM3w+JsOncTsboLlsaIBKlhaloAQHoy+l//qT+OBOCl0pmOTdqm96L5JDfFqStxvH2HyfHXo0nzHBdoeo4wMlPVAatKb9+nWo7AKhM2eNRULNjbHm7qAE8VY1CnvmGMJu2vo7yC+VylI2FjgN8pZNoP787qmDNUa0KZAOT8Gn1Oivw+Sr7yEYSvCGqY11lHHmuK1zI1IlZ/nYONjUDzF0CSLLk8LBorAdpGrgw2JkqwtZEYQQZLCQDKrH+Bs+Nb0uy1LvL+/mqAcsvCn0qKQo4+vD2vB/6A0aR6DM59NkaA+R06QJxR8+YHVGL8/55M4istDlwKAlI7b/tkPNXLQhDmKQsqzD76W/hQ7fksi5TpmUybAqQ/Q= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 2d286933-34f6-492a-57c8-08d6bc1817de X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Apr 2019 11:48:19.1674 (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-Transport-CrossTenantHeadersStamped: MWHPR11MB1358 X-OriginatorOrg: microchip.com Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgRGFuaWVsLA0KDQpPbiAwOC4wNC4yMDE5IDExOjQzLCBEYW5pZWwgTGV6Y2FubyB3cm90ZToN Cj4gRXh0ZXJuYWwgRS1NYWlsDQo+IA0KPiANCj4gSGkgQ2xhdWRpdSwNCj4gDQo+IE9uIDE0LzAz LzIwMTkgMTc6MjYsIENsYXVkaXUuQmV6bmVhQG1pY3JvY2hpcC5jb20gd3JvdGU6DQo+PiBGcm9t OiBDbGF1ZGl1IEJlem5lYSA8Y2xhdWRpdS5iZXpuZWFAbWljcm9jaGlwLmNvbT4NCj4+DQo+PiBB ZGQgZHJpdmVyIGZvciBNaWNyb2NoaXAgUElUNjRCIHRpbWVyLiBUaW1lciBjb3VsZCBiZSB1c2Vk IGluIGNvbnRpbnVvdXMNCj4+IG1vZGUgb3Igb25lc2hvdCBtb2RlLiBUaGUgaGFyZHdhcmUgaGFz IDJ4MzIgYml0IHJlZ2lzdGVycyBmb3IgcGVyaW9kDQo+PiBlbXVsYXRpbmcgYSA2NCBiaXQgdGlt ZXIuIFRoZSBMU0JfUFIgYW5kIE1TQl9QUiByZWdpc3RlcnMgYXJlIHVzZWQgdG8gc2V0DQo+PiB0 aGUgcGVyaW9kIHZhbHVlIChjb21wYXJlIHZhbHVlKS4gVExTQiBhbmQgVE1TQiBrZWVwcyB0aGUg Y3VycmVudCB2YWx1ZQ0KPj4gb2YgdGhlIGNvdW50ZXIuIEFmdGVyIGEgY29tcGFyZSB0aGUgVExT QiBhbmQgVE1TQiByZWdpc3RlciByZXNldHMuIEFwYXJ0DQo+PiBmcm9tIHRoaXMgdGhlIGhhcmR3 YXJlIGhhcyBTTU9EIGJpdCBpbiBtb2RlIHJlZ2lzdGVyIHRoYXQgYWxsb3cgdG8NCj4+IHJlY29u ZmlndXJlIHRoZSB0aW1lciB3aXRob3V0IHJlc2V0IGFuZCBzdGFydCBjb21tYW5kcyAoc3RhcnQg Y29tbWFuZA0KPj4gd2hpbGUgdGltZXIgaXMgYWN0aXZlIGlzIGlnbm9yZWQpLg0KPj4gVGhlIGRy aXZlciB1c2VzIFBJVDY0QiB0aW1lciBhcyBjbG9ja3NvdXJjZSBvciBjbG9ja2V2ZW50LiBGaXJz dCByZXF1ZXN0ZWQNCj4+IHRpbWVyIHdvdWxkIGJlIHJlZ2lzdGVyZWQgYXMgY2xvY2tldmVudCwg c2Vjb25kIG9uZSB3b3VsZCBiZSByZWdpc3RlcmVkIGFzDQo+PiBjbG9ja3NvdXJjZS4NCj4gDQo+ IEV2ZW4gaWYgdGhhdCB3YXMgZG9uZSB0aGlzIHdheSBiZWZvcmUsIGFzc3VtaW5nIHRoZSBEVCBk ZXNjcmliZXMgdGhlDQo+IGNsb2NrZXZlbnQgYXQgdGhlIGZpcnN0IHBsYWNlIGFuZCB0aGVuIHRo ZSBjbG9ja3NvdXJjZSwgaXQgaXMgYSBmcmFnaWxlDQo+IGFwcHJvYWNoLg0KPiANCj4gV2hhdCBh Ym91dCB1c2luZyBvbmUgb2YgdGhlc2UgYXBwcm9hY2g/DQo+IA0KPiBlZy4NCj4gDQo+IGFyY2gv YXJtL2Jvb3QvZHRzL2F0OTFzYW05MjYxZWsuZHRzDQo+IA0KPiBjaG9zZW4gew0KPiAJYm9vdGFy Z3MgPSAicm9vdGZzdHlwZT11YmlmcyB1YmkubXRkPTUgcm9vdD11YmkwOnJvb3RmcyBydyI7DQo+ ICAgICAgICAgICAgICAgICBzdGRvdXQtcGF0aCA9ICJzZXJpYWwwOjExNTIwMG44IjsNCj4gDQo+ IAljbG9ja3NvdXJjZSB7DQo+IAkJdGltZXIgPSA8JnRpbWVyMD47DQo+IAl9Ow0KPiANCj4gICAg ICAgICBjbG9ja2V2ZW50IHsNCj4gCQl0aW1lciA9IDwmdGltZXIxPjsNCj4gICAgICAgICB9Ow0K PiB9Ow0KPiANCj4gb3INCj4gDQo+IGFyY2gvYXJtL2Jvb3QvZHRzL2ludGVncmF0b3JhcC5kdHMN Cj4gDQo+IGFsaWFzZXMgew0KPiAJYXJtLHRpbWVyLXByaW1hcnkgPSAmdGltZXIyOw0KPiAJYXJt LHRpbWVyLXNlY29uZGFyeSA9ICZ0aW1lcjE7DQo+IH07DQo+IA0KPiBTbyB3ZSBjYW4gaGF2ZSBj b250cm9sIG9mIHdoYXQgaXMgdGhlIGNsb2Nrc291cmNlIG9yIHRoZSBjbG9ja2V2ZW50Lg0KPiBU aGF0IGlzIHBhcnRpY3VsYXJ5IGhhbmR5IGluIGNhc2Ugb2YgbXVsdGlwbGUgY2hhbm5lbHMuDQoN ClN1cmUsIEkgd2lsbCBsb29rIG92ZXIgdGhlc2UuDQoNClRoYW5rIHlvdSwNCkNsYXVkaXUgQmV6 bmVhDQoNCj4gDQo+IE5vdCBzdXJlIGlmIHdlIGNhbiByZXBsYWNlIHRoZSAnYXJtLHRpbWVyX3By aW1hcnknIHRvICdjbG9ja3NvdXJjZScuDQo+IA0KPiBSb2I/IFdoYXQgaXMgeW91ciBvcGluaW9u Pw0KPiANCj4+IEluZGl2aWR1YWwgUElUNjRCIGhhcmR3YXJlIHJlc291cmNlcyB3ZXJlIHVzZWQg Zm9yIGNsb2Nrc291cmNlDQo+PiBhbmQgY2xvY2tldmVudCB0byBiZSBhYmxlIHRvIHN1cHBvcnQg aGlnaCByZXNvbHV0aW9uIHRpbWVycyB3aXRoIHRoaXMNCj4+IGhhcmR3YXJlIGltcGxlbWVudGF0 aW9uLg0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IENsYXVkaXUgQmV6bmVhIDxjbGF1ZGl1LmJlem5l YUBtaWNyb2NoaXAuY29tPg0KPj4gLS0tDQo+PiAgZHJpdmVycy9jbG9ja3NvdXJjZS9LY29uZmln ICAgICAgICAgICAgICAgICAgfCAgIDYgKw0KPj4gIGRyaXZlcnMvY2xvY2tzb3VyY2UvTWFrZWZp bGUgICAgICAgICAgICAgICAgIHwgICAxICsNCj4+ICBkcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVy LW1pY3JvY2hpcC1waXQ2NGIuYyB8IDQ2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+ ICAzIGZpbGVzIGNoYW5nZWQsIDQ3MSBpbnNlcnRpb25zKCspDQo+PiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItbWljcm9jaGlwLXBpdDY0Yi5jDQo+Pg0KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xvY2tzb3VyY2UvS2NvbmZpZyBiL2RyaXZlcnMvY2xvY2tz b3VyY2UvS2NvbmZpZw0KPj4gaW5kZXggNWQ5M2U1ODBlNWRjLi4yYWQ2Zjg4MWEwYmIgMTAwNjQ0 DQo+PiAtLS0gYS9kcml2ZXJzL2Nsb2Nrc291cmNlL0tjb25maWcNCj4+ICsrKyBiL2RyaXZlcnMv Y2xvY2tzb3VyY2UvS2NvbmZpZw0KPj4gQEAgLTQ0OCw2ICs0NDgsMTIgQEAgY29uZmlnIE9YTkFT X1JQU19USU1FUg0KPj4gIGNvbmZpZyBTWVNfU1VQUE9SVFNfU0hfQ01UDQo+PiAgICAgICAgICBi b29sDQo+PiAgDQo+PiArY29uZmlnIE1JQ1JPQ0hJUF9QSVQ2NEINCj4+ICsJYm9vbCAiTWljcm9j aGlwIFBJVDY0QiBzdXBwb3J0Ig0KPj4gKwlkZXBlbmRzIG9uIE9GIHx8IENPTVBJTEVfVEVTVA0K Pj4gKwloZWxwDQo+PiArCSAgVGhpcyBvcHRpb24gZW5hYmxlcyBNaWNyb2NoaXAgUElUNjRCIHRp bWVyLg0KPj4gKw0KPj4gIGNvbmZpZyBNVEtfVElNRVINCj4+ICAJYm9vbCAiTWVkaWF0ZWsgdGlt ZXIgZHJpdmVyIiBpZiBDT01QSUxFX1RFU1QNCj4+ICAJZGVwZW5kcyBvbiBIQVNfSU9NRU0NCj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsb2Nrc291cmNlL01ha2VmaWxlIGIvZHJpdmVycy9jbG9j a3NvdXJjZS9NYWtlZmlsZQ0KPj4gaW5kZXggYzRhOGU5ZWY5MzJhLi5jNTNmYTEyYjliOTQgMTAw NjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2Nsb2Nrc291cmNlL01ha2VmaWxlDQo+PiArKysgYi9kcml2 ZXJzL2Nsb2Nrc291cmNlL01ha2VmaWxlDQo+PiBAQCAtMzUsNiArMzUsNyBAQCBvYmotJChDT05G SUdfVTMwMF9USU1FUikJKz0gdGltZXItdTMwMC5vDQo+PiAgb2JqLSQoQ09ORklHX1NVTjRJX1RJ TUVSKQkrPSB0aW1lci1zdW40aS5vDQo+PiAgb2JqLSQoQ09ORklHX1NVTjVJX0hTVElNRVIpCSs9 IHRpbWVyLXN1bjVpLm8NCj4+ICBvYmotJChDT05GSUdfTUVTT042X1RJTUVSKQkrPSB0aW1lci1t ZXNvbjYubw0KPj4gK29iai0kKENPTkZJR19NSUNST0NISVBfUElUNjRCKQkrPSB0aW1lci1taWNy b2NoaXAtcGl0NjRiLm8NCj4+ICBvYmotJChDT05GSUdfVEVHUkFfVElNRVIpCSs9IHRpbWVyLXRl Z3JhMjAubw0KPj4gIG9iai0kKENPTkZJR19WVDg1MDBfVElNRVIpCSs9IHRpbWVyLXZ0ODUwMC5v DQo+PiAgb2JqLSQoQ09ORklHX05TUElSRV9USU1FUikJKz0gdGltZXItemV2aW8ubw0KPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItbWljcm9jaGlwLXBpdDY0Yi5jIGIv ZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1taWNyb2NoaXAtcGl0NjRiLmMNCj4+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjY3ODdhYTk4ZWYwMQ0KPj4gLS0t IC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1taWNyb2NoaXAt cGl0NjRiLmMNCj4+IEBAIC0wLDAgKzEsNDY0IEBADQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjANCj4+ICsvLw0KPj4gKy8vIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb2No aXAgVGVjaG5vbG9neSBJbmMuDQo+PiArLy8gQ29weXJpZ2h0IChDKSAyMDE5IENsYXVkaXUgQmV6 bmVhIChjbGF1ZGl1LmJlem5lYUBtaWNyb2NoaXAuY29tKQ0KPj4gKw0KPj4gKyNpbmNsdWRlIDxs aW51eC9jbGsuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvY2xvY2tjaGlwcy5oPg0KPj4gKyNpbmNs dWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5o Pg0KPj4gKyNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvc2No ZWRfY2xvY2suaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KPj4gKw0KPj4gKyNkZWZp bmUgTUNIUF9QSVQ2NEJfQ1IJCTB4MDAJLyogQ29udHJvbCBSZWdpc3RlciAqLw0KPj4gKyNkZWZp bmUgTUNIUF9QSVQ2NEJfQ1JfU1RBUlQJQklUKDApDQo+PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9D Ul9TV1JTVAlCSVQoOCkNCj4+ICsNCj4+ICsjZGVmaW5lIE1DSFBfUElUNjRCX01SCQkweDA0CS8q IE1vZGUgUmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5lIE1DSFBfUElUNjRCX01SX0NPTlQJQklUKDAp DQo+PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9NUl9TR0NMSwlCSVQoMykNCj4+ICsjZGVmaW5lIE1D SFBfUElUNjRCX01SX1NNT0QJQklUKDQpDQo+PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9NUl9QUkVT CUdFTk1BU0soMTEsIDgpDQo+PiArDQo+PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9MU0JfUFIJMHgw OAkvKiBMU0IgUGVyaW9kIFJlZ2lzdGVyICovDQo+PiArDQo+PiArI2RlZmluZSBNQ0hQX1BJVDY0 Ql9NU0JfUFIJMHgwQwkvKiBNU0IgUGVyaW9kIFJlZ2lzdGVyICovDQo+PiArDQo+PiArI2RlZmlu ZSBNQ0hQX1BJVDY0Ql9JRVIJCTB4MTAJLyogSW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAqLw0K Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2NEJfSUVSX1BFUklPRAlCSVQoMCkNCj4+ICsNCj4+ICsjZGVm aW5lIE1DSFBfUElUNjRCX0lTUgkJMHgxQwkvKiBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyICov DQo+PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9JU1JfUEVSSU9ECUJJVCgwKQ0KPj4gKw0KPj4gKyNk ZWZpbmUgTUNIUF9QSVQ2NEJfVExTQlIJMHgyMAkvKiBUaW1lciBMU0IgUmVnaXN0ZXIgKi8NCj4+ ICsNCj4+ICsjZGVmaW5lIE1DSFBfUElUNjRCX1RNU0JSCTB4MjQJLyogVGltZXIgTVNCIFJlZ2lz dGVyICovDQo+PiArDQo+PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9QUkVTX01BWAkweDEwDQo+PiAr I2RlZmluZSBNQ0hQX1BJVDY0Ql9ERUZfRlJFUQkyNTAwMDAwVUwJLyogMi41IE1IeiAqLw0KPj4g KyNkZWZpbmUgTUNIUF9QSVQ2NEJfTFNCTUFTSwlHRU5NQVNLX1VMTCgzMSwgMCkNCj4+ICsjZGVm aW5lIE1DSFBfUElUNjRCX1BSRVNDQUxFUihwKQkoTUNIUF9QSVQ2NEJfTVJfUFJFUyAmICgocCkg PDwgOCkpDQo+PiArDQo+PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9OQU1FCSJwaXQ2NGIiDQo+PiAr DQo+PiArc3RydWN0IG1jaHBfcGl0NjRiX2NvbW1vbl9kYXRhIHsNCj4+ICsJdm9pZCBfX2lvbWVt ICpiYXNlOw0KPj4gKwlzdHJ1Y3QgY2xrICpwY2xrOw0KPj4gKwlzdHJ1Y3QgY2xrICpnY2xrOw0K Pj4gKwl1NjQgY3ljbGVzOw0KPj4gKwl1OCBwcmVzOw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0 IG1jaHBfcGl0NjRiX2Nsa3NyY19kYXRhIHsNCj4+ICsJc3RydWN0IGNsb2Nrc291cmNlICpjbGtz cmM7DQo+PiArCXN0cnVjdCBtY2hwX3BpdDY0Yl9jb21tb25fZGF0YSAqY2Q7DQo+PiArfTsNCj4+ ICsNCj4+ICtzdHJ1Y3QgbWNocF9waXQ2NGJfY2xrZXZ0X2RhdGEgew0KPj4gKwlzdHJ1Y3QgY2xv Y2tfZXZlbnRfZGV2aWNlICpjbGtldnQ7DQo+PiArCXN0cnVjdCBtY2hwX3BpdDY0Yl9jb21tb25f ZGF0YSAqY2Q7DQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0IG1jaHBfcGl0NjRiX2Rh dGEgew0KPj4gKwlzdHJ1Y3QgbWNocF9waXQ2NGJfY2xrc3JjX2RhdGEgKmNzZDsNCj4+ICsJc3Ry dWN0IG1jaHBfcGl0NjRiX2Nsa2V2dF9kYXRhICpjZWQ7DQo+PiArfSBkYXRhOw0KPj4gKw0KPj4g K3N0YXRpYyBpbmxpbmUgdTMyIG1jaHBfcGl0NjRiX3JlYWQodm9pZCBfX2lvbWVtICpiYXNlLCB1 MzIgb2Zmc2V0KQ0KPj4gK3sNCj4+ICsJcmV0dXJuIHJlYWRsX3JlbGF4ZWQoYmFzZSArIG9mZnNl dCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBtY2hwX3BpdDY0Yl93cml0 ZSh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwpDQo+PiArew0KPj4gKwl3 cml0ZWxfcmVsYXhlZCh2YWwsIGJhc2UgKyBvZmZzZXQpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0 aWMgaW5saW5lIHU2NCBtY2hwX3BpdDY0Yl9nZXRfcGVyaW9kKHZvaWQgX19pb21lbSAqYmFzZSkN Cj4+ICt7DQo+PiArCXUzMiBsc2IsIG1zYjsNCj4+ICsNCj4+ICsJLyogTFNCIG11c3QgYmUgcmVh ZCBmaXJzdCB0byBndWFyYW50ZWUgYW4gYXRvbWljIHJlYWQgb2YgdGhlIDY0IGJpdA0KPj4gKwkg KiB0aW1lci4NCj4+ICsJICovDQo+PiArCWxzYiA9IG1jaHBfcGl0NjRiX3JlYWQoYmFzZSwgTUNI UF9QSVQ2NEJfVExTQlIpOw0KPj4gKwltc2IgPSBtY2hwX3BpdDY0Yl9yZWFkKGJhc2UsIE1DSFBf UElUNjRCX1RNU0JSKTsNCj4+ICsNCj4+ICsJcmV0dXJuICgoKHU2NCltc2IgPDwgMzIpIHwgbHNi KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGluZSB2b2lkIG1jaHBfcGl0NjRiX3NldF9w ZXJpb2Qodm9pZCBfX2lvbWVtICpiYXNlLCB1NjQgY3ljbGVzKQ0KPj4gK3sNCj4+ICsJdTMyIGxz YiwgbXNiOw0KPj4gKw0KPj4gKwlsc2IgPSBjeWNsZXMgJiBNQ0hQX1BJVDY0Ql9MU0JNQVNLOw0K Pj4gKwltc2IgPSBjeWNsZXMgPj4gMzI7DQo+PiArDQo+PiArCS8qIExTQiBtdXN0IGJlIHdyaXRl IGxhc3QgdG8gZ3VhcmFudGVlIGFuIGF0b21pYyB1cGRhdGUgb2YgdGhlIHRpbWVyDQo+PiArCSAq IGV2ZW4gd2hlbiBTTU9EPTEuDQo+PiArCSAqLw0KPj4gKwltY2hwX3BpdDY0Yl93cml0ZShiYXNl LCBNQ0hQX1BJVDY0Ql9NU0JfUFIsIG1zYik7DQo+PiArCW1jaHBfcGl0NjRiX3dyaXRlKGJhc2Us IE1DSFBfUElUNjRCX0xTQl9QUiwgbHNiKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGlu ZSB2b2lkIG1jaHBfcGl0NjRiX3Jlc2V0KHN0cnVjdCBtY2hwX3BpdDY0Yl9jb21tb25fZGF0YSAq ZGF0YSwNCj4+ICsJCQkJICAgICB1MzIgbW9kZSwgYm9vbCBpcnFfZW5hKQ0KPj4gK3sNCj4+ICsJ bW9kZSB8PSBNQ0hQX1BJVDY0Ql9QUkVTQ0FMRVIoZGF0YS0+cHJlcyk7DQo+PiArCWlmIChkYXRh LT5nY2xrKQ0KPj4gKwkJbW9kZSB8PSBNQ0hQX1BJVDY0Ql9NUl9TR0NMSzsNCj4+ICsNCj4+ICsJ bWNocF9waXQ2NGJfd3JpdGUoZGF0YS0+YmFzZSwgTUNIUF9QSVQ2NEJfQ1IsIE1DSFBfUElUNjRC X0NSX1NXUlNUKTsNCj4+ICsJbWNocF9waXQ2NGJfd3JpdGUoZGF0YS0+YmFzZSwgTUNIUF9QSVQ2 NEJfTVIsIG1vZGUpOw0KPj4gKwltY2hwX3BpdDY0Yl9zZXRfcGVyaW9kKGRhdGEtPmJhc2UsIGRh dGEtPmN5Y2xlcyk7DQo+PiArCWlmIChpcnFfZW5hKQ0KPj4gKwkJbWNocF9waXQ2NGJfd3JpdGUo ZGF0YS0+YmFzZSwgTUNIUF9QSVQ2NEJfSUVSLA0KPj4gKwkJCQkgIE1DSFBfUElUNjRCX0lFUl9Q RVJJT0QpOw0KPj4gKwltY2hwX3BpdDY0Yl93cml0ZShkYXRhLT5iYXNlLCBNQ0hQX1BJVDY0Ql9D UiwgTUNIUF9QSVQ2NEJfQ1JfU1RBUlQpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdTY0IG1j aHBfcGl0NjRiX3JlYWRfY2xrKHN0cnVjdCBjbG9ja3NvdXJjZSAqY3MpDQo+PiArew0KPj4gKwly ZXR1cm4gbWNocF9waXQ2NGJfZ2V0X3BlcmlvZChkYXRhLmNzZC0+Y2QtPmJhc2UpOw0KPj4gK30N Cj4+ICsNCj4+ICtzdGF0aWMgdTY0IG1jaHBfc2NoZWRfcmVhZF9jbGsodm9pZCkNCj4+ICt7DQo+ PiArCXJldHVybiBtY2hwX3BpdDY0Yl9nZXRfcGVyaW9kKGRhdGEuY3NkLT5jZC0+YmFzZSk7DQo+ PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3QgY2xvY2tzb3VyY2UgbWNocF9waXQ2NGJfY2xr c3JjID0gew0KPj4gKwkubmFtZSA9IE1DSFBfUElUNjRCX05BTUUsDQo+PiArCS5tYXNrID0gQ0xP Q0tTT1VSQ0VfTUFTSyg2NCksDQo+PiArCS5mbGFncyA9IENMT0NLX1NPVVJDRV9JU19DT05USU5V T1VTLA0KPj4gKwkucmF0aW5nID0gMjEwLA0KPj4gKwkucmVhZCA9IG1jaHBfcGl0NjRiX3JlYWRf Y2xrLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGludCBtY2hwX3BpdDY0Yl9jbGtldnRfc2h1 dGRvd24oc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqY2VkZXYpDQo+PiArew0KPj4gKwltY2hw X3BpdDY0Yl93cml0ZShkYXRhLmNlZC0+Y2QtPmJhc2UsIE1DSFBfUElUNjRCX0NSLA0KPj4gKwkJ CSAgTUNIUF9QSVQ2NEJfQ1JfU1dSU1QpOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+ PiArDQo+PiArc3RhdGljIGludCBtY2hwX3BpdDY0Yl9jbGtldnRfc2V0X3BlcmlvZGljKHN0cnVj dCBjbG9ja19ldmVudF9kZXZpY2UgKmNlZGV2KQ0KPj4gK3sNCj4+ICsJbWNocF9waXQ2NGJfcmVz ZXQoZGF0YS5jZWQtPmNkLCBNQ0hQX1BJVDY0Ql9NUl9DT05ULCB0cnVlKTsNCj4+ICsNCj4+ICsJ cmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgbWNocF9waXQ2NGJfY2xrZXZ0 X3NldF9vbmVzaG90KHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmNlZGV2KQ0KPj4gK3sNCj4+ ICsJbWNocF9waXQ2NGJfcmVzZXQoZGF0YS5jZWQtPmNkLCBNQ0hQX1BJVDY0Ql9NUl9TTU9ELCB0 cnVlKTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQg bWNocF9waXQ2NGJfY2xrZXZ0X3NldF9uZXh0X2V2ZW50KHVuc2lnbmVkIGxvbmcgZXZ0LA0KPj4g KwkJCQkJICAgICBzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlICpjZWRldikNCj4+ICt7DQo+PiAr CW1jaHBfcGl0NjRiX3NldF9wZXJpb2QoZGF0YS5jZWQtPmNkLT5iYXNlLCBldnQpOw0KPj4gKwlt Y2hwX3BpdDY0Yl93cml0ZShkYXRhLmNlZC0+Y2QtPmJhc2UsIE1DSFBfUElUNjRCX0NSLA0KPj4g KwkJCSAgTUNIUF9QSVQ2NEJfQ1JfU1RBUlQpOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9 DQo+PiArDQo+PiArc3RhdGljIHZvaWQgbWNocF9waXQ2NGJfY2xrZXZ0X3N1c3BlbmQoc3RydWN0 IGNsb2NrX2V2ZW50X2RldmljZSAqY2VkZXYpDQo+PiArew0KPj4gKwltY2hwX3BpdDY0Yl93cml0 ZShkYXRhLmNlZC0+Y2QtPmJhc2UsIE1DSFBfUElUNjRCX0NSLA0KPj4gKwkJCSAgTUNIUF9QSVQ2 NEJfQ1JfU1dSU1QpOw0KPj4gKwlpZiAoZGF0YS5jZWQtPmNkLT5nY2xrKQ0KPj4gKwkJY2xrX2Rp c2FibGVfdW5wcmVwYXJlKGRhdGEuY2VkLT5jZC0+Z2Nsayk7DQo+PiArCWNsa19kaXNhYmxlX3Vu cHJlcGFyZShkYXRhLmNlZC0+Y2QtPnBjbGspOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9p ZCBtY2hwX3BpdDY0Yl9jbGtldnRfcmVzdW1lKHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmNl ZGV2KQ0KPj4gK3sNCj4+ICsJdTMyIG1vZGUgPSBNQ0hQX1BJVDY0Ql9NUl9TTU9EOw0KPj4gKw0K Pj4gKwljbGtfcHJlcGFyZV9lbmFibGUoZGF0YS5jZWQtPmNkLT5wY2xrKTsNCj4+ICsJaWYgKGRh dGEuY2VkLT5jZC0+Z2NsaykNCj4+ICsJCWNsa19wcmVwYXJlX2VuYWJsZShkYXRhLmNlZC0+Y2Qt PmdjbGspOw0KPj4gKw0KPj4gKwlpZiAoY2xvY2tldmVudF9zdGF0ZV9wZXJpb2RpYyhkYXRhLmNl ZC0+Y2xrZXZ0KSkNCj4+ICsJCW1vZGUgPSBNQ0hQX1BJVDY0Ql9NUl9DT05UOw0KPj4gKw0KPj4g KwltY2hwX3BpdDY0Yl9yZXNldChkYXRhLmNlZC0+Y2QsIG1vZGUsIHRydWUpOw0KPj4gK30NCj4+ ICsNCj4+ICtzdGF0aWMgc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSBtY2hwX3BpdDY0Yl9jbGtl dnQgPSB7DQo+PiArCS5uYW1lID0gTUNIUF9QSVQ2NEJfTkFNRSwNCj4+ICsJLmZlYXR1cmVzID0g Q0xPQ0tfRVZUX0ZFQVRfT05FU0hPVCB8IENMT0NLX0VWVF9GRUFUX1BFUklPRElDLA0KPj4gKwku cmF0aW5nID0gMTUwLA0KPj4gKwkuc2V0X3N0YXRlX3NodXRkb3duID0gbWNocF9waXQ2NGJfY2xr ZXZ0X3NodXRkb3duLA0KPj4gKwkuc2V0X3N0YXRlX3BlcmlvZGljID0gbWNocF9waXQ2NGJfY2xr ZXZ0X3NldF9wZXJpb2RpYywNCj4+ICsJLnNldF9zdGF0ZV9vbmVzaG90ID0gbWNocF9waXQ2NGJf Y2xrZXZ0X3NldF9vbmVzaG90LA0KPj4gKwkuc2V0X25leHRfZXZlbnQgPSBtY2hwX3BpdDY0Yl9j bGtldnRfc2V0X25leHRfZXZlbnQsDQo+PiArCS5zdXNwZW5kID0gbWNocF9waXQ2NGJfY2xrZXZ0 X3N1c3BlbmQsDQo+PiArCS5yZXN1bWUgPSBtY2hwX3BpdDY0Yl9jbGtldnRfcmVzdW1lLA0KPj4g K307DQo+PiArDQo+PiArc3RhdGljIGlycXJldHVybl90IG1jaHBfcGl0NjRiX2ludGVycnVwdChp bnQgaXJxLCB2b2lkICpkZXZfaWQpDQo+PiArew0KPj4gKwlzdHJ1Y3QgbWNocF9waXQ2NGJfY2xr ZXZ0X2RhdGEgKmlycV9kYXRhID0gZGV2X2lkOw0KPj4gKw0KPj4gKwlpZiAoZGF0YS5jZWQgIT0g aXJxX2RhdGEpDQo+PiArCQlyZXR1cm4gSVJRX05PTkU7DQo+PiArDQo+PiArCWlmIChtY2hwX3Bp dDY0Yl9yZWFkKGlycV9kYXRhLT5jZC0+YmFzZSwgTUNIUF9QSVQ2NEJfSVNSKSAmDQo+PiArCSAg ICBNQ0hQX1BJVDY0Ql9JU1JfUEVSSU9EKSB7DQo+PiArCQlpcnFfZGF0YS0+Y2xrZXZ0LT5ldmVu dF9oYW5kbGVyKGlycV9kYXRhLT5jbGtldnQpOw0KPj4gKwkJcmV0dXJuIElSUV9IQU5ETEVEOw0K Pj4gKwl9DQo+PiArDQo+PiArCXJldHVybiBJUlFfTk9ORTsNCj4+ICt9DQo+PiArDQo+PiArc3Rh dGljIGludCBfX2luaXQgbWNocF9waXQ2NGJfcHJlc19jb21wdXRlKHUzMiAqcHJlcywgdTMyIGNs a19yYXRlLA0KPj4gKwkJCQkJICAgdTMyIG1heF9yYXRlKQ0KPj4gK3sNCj4+ICsJdTMyIHRtcDsN Cj4+ICsNCj4+ICsJZm9yICgqcHJlcyA9IDA7ICpwcmVzIDwgTUNIUF9QSVQ2NEJfUFJFU19NQVg7 ICgqcHJlcykrKykgew0KPj4gKwkJdG1wID0gY2xrX3JhdGUgLyAoKnByZXMgKyAxKTsNCj4+ICsJ CWlmICh0bXAgPD0gbWF4X3JhdGUpDQo+PiArCQkJYnJlYWs7DQo+PiArCX0NCj4+ICsNCj4+ICsJ aWYgKCpwcmVzID09IE1DSFBfUElUNjRCX1BSRVNfTUFYKQ0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7 DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IF9faW5p dCBtY2hwX3BpdDY0Yl9wcmVzX3ByZXBhcmUoc3RydWN0IG1jaHBfcGl0NjRiX2NvbW1vbl9kYXRh ICpjZCwNCj4+ICsJCQkJCSAgIHVuc2lnbmVkIGxvbmcgbWF4X3JhdGUpDQo+PiArew0KPj4gKwl1 bnNpZ25lZCBsb25nIHBjbGtfcmF0ZSwgZGlmZiA9IDAsIGJlc3RfZGlmZiA9IFVMT05HX01BWDsN Cj4+ICsJbG9uZyBnY2xrX3JvdW5kID0gMDsNCj4+ICsJdTMyIHByZXMsIGJlc3RfcHJlczsNCj4+ ICsJaW50IHJldCA9IDA7DQo+PiArDQo+PiArCXBjbGtfcmF0ZSA9IGNsa19nZXRfcmF0ZShjZC0+ cGNsayk7DQo+PiArCWlmICghcGNsa19yYXRlKQ0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+PiAr DQo+PiArCWlmIChjZC0+Z2Nsaykgew0KPj4gKwkJZ2Nsa19yb3VuZCA9IGNsa19yb3VuZF9yYXRl KGNkLT5nY2xrLCBtYXhfcmF0ZSk7DQo+PiArCQlpZiAoZ2Nsa19yb3VuZCA8IDApDQo+PiArCQkJ Z290byBwY2xrOw0KPj4gKw0KPj4gKwkJaWYgKHBjbGtfcmF0ZSAvIGdjbGtfcm91bmQgPCAzKQ0K Pj4gKwkJCWdvdG8gcGNsazsNCj4+ICsNCj4+ICsJCXJldCA9IG1jaHBfcGl0NjRiX3ByZXNfY29t cHV0ZSgmcHJlcywgZ2Nsa19yb3VuZCwgbWF4X3JhdGUpOw0KPj4gKwkJaWYgKHJldCkNCj4+ICsJ CQliZXN0X2RpZmYgPSBhYnMoZ2Nsa19yb3VuZCAtIG1heF9yYXRlKTsNCj4+ICsJCWVsc2UNCj4+ ICsJCQliZXN0X2RpZmYgPSBhYnMoZ2Nsa19yb3VuZCAvIChwcmVzICsgMSkgLSBtYXhfcmF0ZSk7 DQo+PiArCQliZXN0X3ByZXMgPSBwcmVzOw0KPj4gKwl9DQo+PiArDQo+PiArcGNsazoNCj4+ICsJ LyogQ2hlY2sgaWYgcmVxdWVzdGVkIHJhdGUgY291bGQgYmUgb2J0YWluZWQgdXNpbmcgUENMSy4g Ki8NCj4+ICsJcmV0ID0gbWNocF9waXQ2NGJfcHJlc19jb21wdXRlKCZwcmVzLCBwY2xrX3JhdGUs IG1heF9yYXRlKTsNCj4+ICsJaWYgKHJldCkNCj4+ICsJCWRpZmYgPSBhYnMocGNsa19yYXRlIC0g bWF4X3JhdGUpOw0KPj4gKwllbHNlDQo+PiArCQlkaWZmID0gYWJzKHBjbGtfcmF0ZSAvIChwcmVz ICsgMSkgLSBtYXhfcmF0ZSk7DQo+PiArDQo+PiArCWlmIChiZXN0X2RpZmYgPiBkaWZmKSB7DQo+ PiArCQkvKiBVc2UgUENMSy4gKi8NCj4+ICsJCWNkLT5nY2xrID0gTlVMTDsNCj4+ICsJCWJlc3Rf cHJlcyA9IHByZXM7DQo+PiArCX0gZWxzZSB7DQo+PiArCQljbGtfc2V0X3JhdGUoY2QtPmdjbGss IGdjbGtfcm91bmQpOw0KPj4gKwl9DQo+PiArDQo+PiArCWNkLT5wcmVzID0gYmVzdF9wcmVzOw0K Pj4gKw0KPj4gKwlwcl9pbmZvKCJQSVQ2NEI6IHVzaW5nIGNsaz0lcyB3aXRoIHByZXNjYWxlciAl dSwgZnJlcT0lbHUgW0h6XVxuIiwNCj4+ICsJCWNkLT5nY2xrID8gImdjbGsiIDogInBjbGsiLCBj ZC0+cHJlcywNCj4+ICsJCWNkLT5nY2xrID8gZ2Nsa19yb3VuZCAvIChjZC0+cHJlcyArIDEpDQo+ PiArCQkJIDogcGNsa19yYXRlIC8gKGNkLT5wcmVzICsgMSkpOw0KPj4gKw0KPj4gKwlyZXR1cm4g MDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBfX2luaXQgbWNocF9waXQ2NGJfZHRfaW5p dF9jbGtzcmMoc3RydWN0IG1jaHBfcGl0NjRiX2NvbW1vbl9kYXRhICpjZCkNCj4+ICt7DQo+PiAr CXN0cnVjdCBtY2hwX3BpdDY0Yl9jbGtzcmNfZGF0YSAqY3NkOw0KPj4gKwl1bnNpZ25lZCBsb25n IGNsa19yYXRlOw0KPj4gKwlpbnQgcmV0Ow0KPj4gKw0KPj4gKwljc2QgPSBremFsbG9jKHNpemVv ZigqY3NkKSwgR0ZQX0tFUk5FTCk7DQo+PiArCWlmICghY3NkKQ0KPj4gKwkJcmV0dXJuIC1FTk9N RU07DQo+PiArDQo+PiArCWNzZC0+Y2QgPSBjZDsNCj4+ICsNCj4+ICsJaWYgKGNzZC0+Y2QtPmdj bGspDQo+PiArCQljbGtfcmF0ZSA9IGNsa19nZXRfcmF0ZShjc2QtPmNkLT5nY2xrKTsNCj4+ICsJ ZWxzZQ0KPj4gKwkJY2xrX3JhdGUgPSBjbGtfZ2V0X3JhdGUoY3NkLT5jZC0+cGNsayk7DQo+PiAr DQo+PiArCWNsa19yYXRlID0gY2xrX3JhdGUgLyAoY2QtPnByZXMgKyAxKTsNCj4+ICsJY3NkLT5j ZC0+Y3ljbGVzID0gVUxMT05HX01BWDsNCj4+ICsJbWNocF9waXQ2NGJfcmVzZXQoY3NkLT5jZCwg TUNIUF9QSVQ2NEJfTVJfQ09OVCwgZmFsc2UpOw0KPj4gKw0KPj4gKwlkYXRhLmNzZCA9IGNzZDsN Cj4+ICsNCj4+ICsJY3NkLT5jbGtzcmMgPSAmbWNocF9waXQ2NGJfY2xrc3JjOw0KPj4gKw0KPj4g KwlyZXQgPSBjbG9ja3NvdXJjZV9yZWdpc3Rlcl9oeihjc2QtPmNsa3NyYywgY2xrX3JhdGUpOw0K Pj4gKwlpZiAocmV0KSB7DQo+PiArCQlwcl9kZWJ1ZygiY2xrc3JjOiBGYWlsZWQgdG8gcmVnaXN0 ZXIgUElUNjRCIGNsb2Nrc291cmNlIVxuIik7DQo+PiArCQlnb3RvIGZyZWU7DQo+PiArCX0NCj4+ ICsNCj4+ICsJc2NoZWRfY2xvY2tfcmVnaXN0ZXIobWNocF9zY2hlZF9yZWFkX2NsaywgNjQsIGNs a19yYXRlKTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArDQo+PiArZnJlZToNCj4+ICsJa2Zy ZWUoY3NkKTsNCj4+ICsJZGF0YS5jc2QgPSBOVUxMOw0KPj4gKw0KPj4gKwlyZXR1cm4gcmV0Ow0K Pj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IF9faW5pdCBtY2hwX3BpdDY0Yl9kdF9pbml0X2Ns a2V2dChzdHJ1Y3QgbWNocF9waXQ2NGJfY29tbW9uX2RhdGEgKmNkLA0KPj4gKwkJCQkJICAgICB1 MzIgaXJxKQ0KPj4gK3sNCj4+ICsJc3RydWN0IG1jaHBfcGl0NjRiX2Nsa2V2dF9kYXRhICpjZWQ7 DQo+PiArCXVuc2lnbmVkIGxvbmcgY2xrX3JhdGU7DQo+PiArCWludCByZXQ7DQo+PiArDQo+PiAr CWNlZCA9IGt6YWxsb2Moc2l6ZW9mKCpjZWQpLCBHRlBfS0VSTkVMKTsNCj4+ICsJaWYgKCFjZWQp DQo+PiArCQlyZXR1cm4gLUVOT01FTTsNCj4+ICsNCj4+ICsJY2VkLT5jZCA9IGNkOw0KPj4gKw0K Pj4gKwlpZiAoY2VkLT5jZC0+Z2NsaykNCj4+ICsJCWNsa19yYXRlID0gY2xrX2dldF9yYXRlKGNl ZC0+Y2QtPmdjbGspOw0KPj4gKwllbHNlDQo+PiArCQljbGtfcmF0ZSA9IGNsa19nZXRfcmF0ZShj ZWQtPmNkLT5wY2xrKTsNCj4+ICsNCj4+ICsJY2xrX3JhdGUgPSBjbGtfcmF0ZSAvIChjZWQtPmNk LT5wcmVzICsgMSk7DQo+PiArCWNlZC0+Y2QtPmN5Y2xlcyA9IERJVl9ST1VORF9DTE9TRVNUKGNs a19yYXRlLCBIWik7DQo+PiArDQo+PiArCXJldCA9IHJlcXVlc3RfaXJxKGlycSwgbWNocF9waXQ2 NGJfaW50ZXJydXB0LCBJUlFGX1RJTUVSLCAicGl0NjRiX3RpY2siLA0KPj4gKwkJCSAgY2VkKTsN Cj4+ICsJaWYgKHJldCkgew0KPj4gKwkJcHJfZGVidWcoImNsa2V2dDogRmFpbGVkIHRvIHNldHVw IFBJVDY0QiBJUlFcbiIpOw0KPj4gKwkJZ290byBmcmVlOw0KPj4gKwl9DQo+PiArDQo+PiArCWRh dGEuY2VkID0gY2VkOw0KPj4gKw0KPj4gKwkvKiBTZXQgdXAgYW5kIHJlZ2lzdGVyIGNsb2NrZXZl bnRzLiAqLw0KPj4gKwljZWQtPmNsa2V2dCA9ICZtY2hwX3BpdDY0Yl9jbGtldnQ7DQo+PiArCWNl ZC0+Y2xrZXZ0LT5jcHVtYXNrID0gY3B1bWFza19vZigwKTsNCj4+ICsJY2VkLT5jbGtldnQtPmly cSA9IGlycTsNCj4+ICsJY2xvY2tldmVudHNfY29uZmlnX2FuZF9yZWdpc3RlcihjZWQtPmNsa2V2 dCwgY2xrX3JhdGUsIDEsIFVMT05HX01BWCk7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gKw0K Pj4gK2ZyZWU6DQo+PiArCWtmcmVlKGNlZCk7DQo+PiArCWRhdGEuY2VkID0gTlVMTDsNCj4+ICsN Cj4+ICsJcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBfX2luaXQgbWNo cF9waXQ2NGJfZHRfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpDQo+PiArew0KPj4gKwlz dHJ1Y3QgbWNocF9waXQ2NGJfY29tbW9uX2RhdGEgKmNkOw0KPj4gKwl1MzIgaXJxLCBmcmVxID0g TUNIUF9QSVQ2NEJfREVGX0ZSRVE7DQo+PiArCWludCByZXQ7DQo+PiArDQo+PiArCWlmIChkYXRh LmNzZCAmJiBkYXRhLmNlZCkNCj4+ICsJCXJldHVybiAtRUJVU1k7DQo+PiArDQo+PiArCWNkID0g a3phbGxvYyhzaXplb2YoKmNkKSwgR0ZQX0tFUk5FTCk7DQo+PiArCWlmICghY2QpDQo+PiArCQly ZXR1cm4gLUVOT01FTTsNCj4+ICsNCj4+ICsJY2QtPnBjbGsgPSBvZl9jbGtfZ2V0X2J5X25hbWUo bm9kZSwgInBjbGsiKTsNCj4+ICsJaWYgKElTX0VSUihjZC0+cGNsaykpIHsNCj4+ICsJCXJldCA9 IFBUUl9FUlIoY2QtPnBjbGspOw0KPj4gKwkJZ290byBmcmVlOw0KPj4gKwl9DQo+PiArDQo+PiAr CWNkLT5nY2xrID0gb2ZfY2xrX2dldF9ieV9uYW1lKG5vZGUsICJnY2xrIik7DQo+PiArCWlmIChJ U19FUlIoY2QtPmdjbGspKQ0KPj4gKwkJY2QtPmdjbGsgPSBOVUxMOw0KPj4gKw0KPj4gKwlyZXQg PSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAiY2xvY2stZnJlcXVlbmN5IiwgJmZyZXEpOw0K Pj4gKwlpZiAocmV0KQ0KPj4gKwkJcHJfZGVidWcoIlBJVDY0QjogZmFpbGVkIHRvIHJlYWQgY2xv Y2sgZnJlcXVlbmN5LiBVc2luZyBkZWZhdWx0IVxuIik7DQo+PiArDQo+PiArCXJldCA9IG1jaHBf cGl0NjRiX3ByZXNfcHJlcGFyZShjZCwgZnJlcSk7DQo+PiArCWlmIChyZXQpDQo+PiArCQlnb3Rv IGZyZWU7DQo+PiArDQo+PiArCWNkLT5iYXNlID0gb2ZfaW9tYXAobm9kZSwgMCk7DQo+PiArCWlm ICghY2QtPmJhc2UpIHsNCj4+ICsJCXByX2RlYnVnKCIlczogQ291bGQgbm90IG1hcCBQSVQ2NEIg YWRkcmVzcyFcbiIsDQo+PiArCQkJIE1DSFBfUElUNjRCX05BTUUpOw0KPj4gKwkJcmV0ID0gLUVO WElPOw0KPj4gKwkJZ290byBmcmVlOw0KPj4gKwl9DQo+PiArDQo+PiArCXJldCA9IGNsa19wcmVw YXJlX2VuYWJsZShjZC0+cGNsayk7DQo+PiArCWlmIChyZXQpDQo+PiArCQlnb3RvIHVubWFwOw0K Pj4gKw0KPj4gKwlpZiAoY2QtPmdjbGspIHsNCj4+ICsJCXJldCA9IGNsa19wcmVwYXJlX2VuYWJs ZShjZC0+Z2Nsayk7DQo+PiArCQlpZiAocmV0KQ0KPj4gKwkJCWdvdG8gcGNsa191bnByZXBhcmU7 DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYgKCFkYXRhLmNlZCkgew0KPj4gKwkJaXJxID0gaXJxX29m X3BhcnNlX2FuZF9tYXAobm9kZSwgMCk7DQo+PiArCQlpZiAoIWlycSkgew0KPj4gKwkJCXByX2Rl YnVnKCIlczogRmFpbGVkIHRvIGdldCBQSVQ2NEIgY2xvY2tldmVudCBJUlEhXG4iLA0KPj4gKwkJ CQkgTUNIUF9QSVQ2NEJfTkFNRSk7DQo+PiArCQkJcmV0ID0gLUVOT0RFVjsNCj4+ICsJCQlnb3Rv IGdjbGtfdW5wcmVwYXJlOw0KPj4gKwkJfQ0KPj4gKwkJcmV0ID0gbWNocF9waXQ2NGJfZHRfaW5p dF9jbGtldnQoY2QsIGlycSk7DQo+PiArCQlpZiAocmV0KQ0KPj4gKwkJCWdvdG8gaXJxX3VubWFw Ow0KPj4gKwl9IGVsc2Ugew0KPj4gKwkJcmV0ID0gbWNocF9waXQ2NGJfZHRfaW5pdF9jbGtzcmMo Y2QpOw0KPj4gKwkJaWYgKHJldCkNCj4+ICsJCQlnb3RvIGdjbGtfdW5wcmVwYXJlOw0KPj4gKwl9 DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gKw0KPj4gK2lycV91bm1hcDoNCj4+ICsJaXJxX2Rp c3Bvc2VfbWFwcGluZyhpcnEpOw0KPj4gK2djbGtfdW5wcmVwYXJlOg0KPj4gKwlpZiAoY2QtPmdj bGspDQo+PiArCQljbGtfZGlzYWJsZV91bnByZXBhcmUoY2QtPmdjbGspOw0KPj4gK3BjbGtfdW5w cmVwYXJlOg0KPj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoY2QtPnBjbGspOw0KPj4gK3VubWFw Og0KPj4gKwlpb3VubWFwKGNkLT5iYXNlKTsNCj4+ICtmcmVlOg0KPj4gKwlrZnJlZShjZCk7DQo+ PiArDQo+PiArCXJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK1RJTUVSX09GX0RFQ0xBUkUo bWNocF9waXQ2NGJfY2xrc3JjLCAibWljcm9jaGlwLHNhbTl4NjAtcGl0NjRiIiwNCj4+ICsJCSBt Y2hwX3BpdDY0Yl9kdF9pbml0KTsNCj4+DQo+IA0KPiANCg==