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_HELO_NONE,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 7C544C28CC0 for ; Thu, 30 May 2019 07:46:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1056A243FC for ; Thu, 30 May 2019 07:46:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="1s91HbMQ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727608AbfE3Hqk (ORCPT ); Thu, 30 May 2019 03:46:40 -0400 Received: from esa2.microchip.iphmx.com ([68.232.149.84]:58820 "EHLO esa2.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726408AbfE3Hqk (ORCPT ); Thu, 30 May 2019 03:46:40 -0400 Received-SPF: Pass (esa2.microchip.iphmx.com: domain of Claudiu.Beznea@microchip.com designates 198.175.253.82 as permitted sender) identity=mailfrom; client-ip=198.175.253.82; receiver=esa2.microchip.iphmx.com; envelope-from="Claudiu.Beznea@microchip.com"; x-sender="Claudiu.Beznea@microchip.com"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 mx a:ushub1.microchip.com a:smtpout.microchip.com a:mx1.microchip.iphmx.com a:mx2.microchip.iphmx.com include:servers.mcsv.net include:mktomail.com include:spf.protection.outlook.com ~all" Received-SPF: None (esa2.microchip.iphmx.com: no sender authenticity information available from domain of postmaster@email.microchip.com) identity=helo; client-ip=198.175.253.82; receiver=esa2.microchip.iphmx.com; envelope-from="Claudiu.Beznea@microchip.com"; x-sender="postmaster@email.microchip.com"; x-conformance=spf_only Authentication-Results: esa2.microchip.iphmx.com; spf=Pass smtp.mailfrom=Claudiu.Beznea@microchip.com; spf=None smtp.helo=postmaster@email.microchip.com; dkim=pass (signature verified) header.i=@microchiptechnology.onmicrosoft.com; dmarc=pass (p=none dis=none) d=microchip.com X-IronPort-AV: E=Sophos;i="5.60,530,1549954800"; d="scan'208";a="35165918" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 30 May 2019 00:46:35 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.87.72) by chn-vm-ex01.mchp-main.com (10.10.87.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 30 May 2019 00:46:34 -0700 Received: from NAM01-BN3-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Thu, 30 May 2019 00:46:34 -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=Cgnh2RtZII1KZE275qaCsYULt8mhJPNyCUGKYuLrw4k=; b=1s91HbMQg24LJpsvjMYlUTrbVo5Huxsf6tgRDsJeqdtHVHSo+oProEC8LvZ6vLhVYNnycdvXkmsYBUv8km/dsuShfVD6qA8EeQ9f9h0usFr3oayUnhk5l2NpYYH8ghpjgkbwVHgLQazPXpvnbTWtWHc1uL/oRJgBAraNQow+IxU= Received: from MWHPR11MB1549.namprd11.prod.outlook.com (10.172.54.17) by MWHPR11MB0061.namprd11.prod.outlook.com (10.164.204.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.16; Thu, 30 May 2019 07:46:33 +0000 Received: from MWHPR11MB1549.namprd11.prod.outlook.com ([fe80::316b:7774:8db6:30ec]) by MWHPR11MB1549.namprd11.prod.outlook.com ([fe80::316b:7774:8db6:30ec%7]) with mapi id 15.20.1922.021; Thu, 30 May 2019 07:46:33 +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: AQHU2oKzNY9L7o7MvUGRVNlgkbjplaYyGT4AgAA6L4CAUW8cAA== Date: Thu, 30 May 2019 07:46:33 +0000 Message-ID: <88ab46de-c3b6-6dd2-3fa2-f2d0075e969f@microchip.com> References: <1552580772-8499-1-git-send-email-claudiu.beznea@microchip.com> <1552580772-8499-3-git-send-email-claudiu.beznea@microchip.com> <20190408121141.GK7480@piout.net> In-Reply-To: <20190408121141.GK7480@piout.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0456.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:e::36) To MWHPR11MB1549.namprd11.prod.outlook.com (2603:10b6:301:c::17) x-ms-exchange-messagesentrepresentingtype: 1 x-tagtoolbar-keys: D20190530104624372 x-originating-ip: [94.177.32.154] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2f9e49a0-75e7-4cf4-7819-08d6e4d2ef12 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);SRVR:MWHPR11MB0061; x-ms-traffictypediagnostic: MWHPR11MB0061: x-ms-exchange-purlcount: 6 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1247; x-forefront-prvs: 00531FAC2C x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(396003)(346002)(376002)(39860400002)(136003)(199004)(189003)(229853002)(72206003)(36756003)(99286004)(6306002)(6512007)(8936002)(14444005)(81156014)(66476007)(6486002)(7736002)(64756008)(73956011)(2906002)(66946007)(68736007)(4326008)(6436002)(478600001)(966005)(25786009)(81166006)(8676002)(256004)(66446008)(31686004)(6246003)(52116002)(316002)(54906003)(2616005)(102836004)(76176011)(53546011)(66556008)(66066001)(486006)(110136005)(3846002)(86362001)(30864003)(71190400001)(26005)(6116002)(71200400001)(11346002)(53946003)(6506007)(31696002)(53936002)(53376002)(5660300002)(476003)(386003)(446003)(14454004)(186003)(305945005);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR11MB0061;H:MWHPR11MB1549.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX: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: G3UPAYjDzUCS/sKyOEF71ZV8VE8Xhh6Glk18BB9WKdff39LddKAaQK5D/ba5aSn5/lQ/mYfgeCjpBLuml/nYY+Wh5aBJ1e7Zer5Ic2zGRtV+g2tiurzKYDjWNIDd+9iZlgmhwn3FMqsiRaoDknYTRLypPOqEfjuXr8HDooNlIpkQGR8rEFkt7p9zx/y8UMXRv7KNsLjE7khY34K/KxCSBX7NFOIZ2qUT3q5TFrNmcwQvLb4j5XlUlLdbE1xcq8qyMxRuPTNRTDnIOQ9UoZ14duebjGceVacrILl/dIaLViLqS7c2byIwbfqLcgdH7Fy7hmmczRksZLT7jPzn9BEvusws3bxoo4DXoIjhTOtkf3Gki83nsM5BKeA+dWJxjT4UoP7WjvBtbFbne2rFwd7Xvi3iJ0HibXnAqnoMVVGzpDA= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 2f9e49a0-75e7-4cf4-7819-08d6e4d2ef12 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 May 2019 07:46:33.0588 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: claudiu.beznea@microchip.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB0061 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgRGFuaWVsLA0KDQpUYWtpbmcgaW50byBhY2NvdW50IHRoZSBkaXNjdXNzaW9uIG9uIHRoaXMg dHJlYWQgYW5kIHRoZSBmYWN0IHRoYXQgd2UgaGF2ZQ0Kbm8gYW5zd2VyIGZyb20gUm9iIG9uIHRo aXMgdG9waWMgKEknbSB0YWxraW5nIGFib3V0IFsxXSksIHdoYXQgZG8geW91IHRoaW5rDQppdCB3 b3VsZCBiZSBiZXN0IGZvciB0aGlzIGRyaXZlciB0byBiZSBhY2NlcHRlZCB0aGUgc29vbmVzdD8g V291bGQgaXQgYmUgT0sNCmZvciB5b3UgdG8gbWltaWMgdGhlIGFwcHJvYWNoIGRvbmUgYnk6DQoN CmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW50ZWdyYXRvci1hcC5jDQoNCndpdGggdGhlIGZv bGxvd2luZyBiaW5kaW5ncyBpbiBEVDoNCg0KYWxpYXNlcyB7DQoJYXJtLHRpbWVyLXByaW1hcnkg PSAmdGltZXIyOw0KCWFybSx0aW1lci1zZWNvbmRhcnkgPSAmdGltZXIxOw0KfTsNCg0KYWxzbyBp biBQSVQ2NEIgZHJpdmVyPw0KDQpPciBkbyB5b3UgdGhpbmsgcmUtc3Bpbm5pbmcgdGhlIEFsZXhh bmRyZSdzIHBhdGNoZXMgYXQgWzJdICh3aGljaCBzZWVtcyB0bw0KbWUgbGlrZSB0aGUgZ2VuZXJp YyB3YXkgdG8gZG8gaXQpIHdvdWxkIGJlIGJldHRlcj8NCg0KVGhhbmsgeW91LA0KQ2xhdWRpdSBC ZXpuZWENCg0KWzFdDQpodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzIwMTkwNDA4MTUxMTU1 LjIwMjc5LTEtYWxleGFuZHJlLmJlbGxvbmlAYm9vdGxpbi5jb20vI3QNClsyXQ0KaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvbGttbC8yMDE3MTIxMzE4NTMxMy4yMDAxNy0xLWFsZXhhbmRyZS5iZWxs b25pQGZyZWUtZWxlY3Ryb25zLmNvbS8NCg0KT24gMDguMDQuMjAxOSAxNToxMSwgQWxleGFuZHJl IEJlbGxvbmkgd3JvdGU6DQo+IEV4dGVybmFsIEUtTWFpbA0KPiANCj4gDQo+IEhpIERhbmllbCwN Cj4gDQo+IE9uIDA4LzA0LzIwMTkgMTA6NDM6MjYrMDIwMCwgRGFuaWVsIExlemNhbm8gd3JvdGU6 DQo+PiBIaSBDbGF1ZGl1LA0KPj4NCj4+IE9uIDE0LzAzLzIwMTkgMTc6MjYsIENsYXVkaXUuQmV6 bmVhQG1pY3JvY2hpcC5jb20gd3JvdGU6DQo+Pj4gRnJvbTogQ2xhdWRpdSBCZXpuZWEgPGNsYXVk aXUuYmV6bmVhQG1pY3JvY2hpcC5jb20+DQo+Pj4NCj4+PiBBZGQgZHJpdmVyIGZvciBNaWNyb2No aXAgUElUNjRCIHRpbWVyLiBUaW1lciBjb3VsZCBiZSB1c2VkIGluIGNvbnRpbnVvdXMNCj4+PiBt b2RlIG9yIG9uZXNob3QgbW9kZS4gVGhlIGhhcmR3YXJlIGhhcyAyeDMyIGJpdCByZWdpc3RlcnMg Zm9yIHBlcmlvZA0KPj4+IGVtdWxhdGluZyBhIDY0IGJpdCB0aW1lci4gVGhlIExTQl9QUiBhbmQg TVNCX1BSIHJlZ2lzdGVycyBhcmUgdXNlZCB0byBzZXQNCj4+PiB0aGUgcGVyaW9kIHZhbHVlIChj b21wYXJlIHZhbHVlKS4gVExTQiBhbmQgVE1TQiBrZWVwcyB0aGUgY3VycmVudCB2YWx1ZQ0KPj4+ IG9mIHRoZSBjb3VudGVyLiBBZnRlciBhIGNvbXBhcmUgdGhlIFRMU0IgYW5kIFRNU0IgcmVnaXN0 ZXIgcmVzZXRzLiBBcGFydA0KPj4+IGZyb20gdGhpcyB0aGUgaGFyZHdhcmUgaGFzIFNNT0QgYml0 IGluIG1vZGUgcmVnaXN0ZXIgdGhhdCBhbGxvdyB0bw0KPj4+IHJlY29uZmlndXJlIHRoZSB0aW1l ciB3aXRob3V0IHJlc2V0IGFuZCBzdGFydCBjb21tYW5kcyAoc3RhcnQgY29tbWFuZA0KPj4+IHdo aWxlIHRpbWVyIGlzIGFjdGl2ZSBpcyBpZ25vcmVkKS4NCj4+PiBUaGUgZHJpdmVyIHVzZXMgUElU NjRCIHRpbWVyIGFzIGNsb2Nrc291cmNlIG9yIGNsb2NrZXZlbnQuIEZpcnN0IHJlcXVlc3RlZA0K Pj4+IHRpbWVyIHdvdWxkIGJlIHJlZ2lzdGVyZWQgYXMgY2xvY2tldmVudCwgc2Vjb25kIG9uZSB3 b3VsZCBiZSByZWdpc3RlcmVkIGFzDQo+Pj4gY2xvY2tzb3VyY2UuDQo+Pg0KPj4gRXZlbiBpZiB0 aGF0IHdhcyBkb25lIHRoaXMgd2F5IGJlZm9yZSwgYXNzdW1pbmcgdGhlIERUIGRlc2NyaWJlcyB0 aGUNCj4+IGNsb2NrZXZlbnQgYXQgdGhlIGZpcnN0IHBsYWNlIGFuZCB0aGVuIHRoZSBjbG9ja3Nv dXJjZSwgaXQgaXMgYSBmcmFnaWxlDQo+PiBhcHByb2FjaC4NCj4+DQo+PiBXaGF0IGFib3V0IHVz aW5nIG9uZSBvZiB0aGVzZSBhcHByb2FjaD8NCj4+DQo+PiBlZy4NCj4+DQo+PiBhcmNoL2FybS9i b290L2R0cy9hdDkxc2FtOTI2MWVrLmR0cw0KPj4NCj4+IGNob3NlbiB7DQo+PiAJYm9vdGFyZ3Mg PSAicm9vdGZzdHlwZT11YmlmcyB1YmkubXRkPTUgcm9vdD11YmkwOnJvb3RmcyBydyI7DQo+PiAg ICAgICAgICAgICAgICAgc3Rkb3V0LXBhdGggPSAic2VyaWFsMDoxMTUyMDBuOCI7DQo+Pg0KPj4g CWNsb2Nrc291cmNlIHsNCj4+IAkJdGltZXIgPSA8JnRpbWVyMD47DQo+PiAJfTsNCj4+DQo+PiAg ICAgICAgIGNsb2NrZXZlbnQgew0KPj4gCQl0aW1lciA9IDwmdGltZXIxPjsNCj4+ICAgICAgICAg fTsNCj4+IH07DQo+Pg0KPiANCj4gSSBzdWdnZXN0ZWQgYW5kIGltcGxlbWVudGVkIGV4YWN0bHkg dGhhdCBiYWNrIGluIDIwMTcgYW5kIGl0IHdhcyBzaG90DQo+IGRvd24gYnkgYm90aCBSb2IgYW5k IE1hcms6DQo+IA0KPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzIwMTcxMjEzMTg1MzEz LjIwMDE3LTEtYWxleGFuZHJlLmJlbGxvbmlAZnJlZS1lbGVjdHJvbnMuY29tLw0KPiANCj4gQXQg dGhlIHRpbWUsIHlvdSBkaWRuJ3QgZG8gKmFueXRoaW5nKiB0byBnZXQgaXQgYWNjZXB0ZWQsIHlv dSBzdGF5ZWQNCj4gc2lsZW50LiBJIGNhbiByZXNwaW4gdGhlIHNlcmllcyBidXQgdGhlbiBJIHNl ZSB0d28gb3B0aW9uczoNCj4gIC0gZWl0aGVyIHlvdSBiYWNrIHVwIHRoZSBzZXJpZXMgYW5kIHJl YWxseSBwdXNoIGZvciBpdA0KPiAgLSBvciB5b3Ugc2ltcGx5IHRha2UgdGhpcyBkcml2ZXIgYXMg aXQgaXMuIFRoZXJlIGlzIG5vdGhpbmcgaW4gaXQgdGhhdA0KPiAgICBjb3VsZG4ndCBiZSByZXdv cmtlZCBsYXRlciBvbmNlIHlvdSByZWFjaGVkIGEgY29uY2x1c2lvbiB3aXRoIHRoZSBEVA0KPiBt YWludGFpbmVycy4NCj4gDQo+PiBvcg0KPj4NCj4+IGFyY2gvYXJtL2Jvb3QvZHRzL2ludGVncmF0 b3JhcC5kdHMNCj4+DQo+PiBhbGlhc2VzIHsNCj4+IAlhcm0sdGltZXItcHJpbWFyeSA9ICZ0aW1l cjI7DQo+PiAJYXJtLHRpbWVyLXNlY29uZGFyeSA9ICZ0aW1lcjE7DQo+PiB9Ow0KPj4NCj4+IFNv IHdlIGNhbiBoYXZlIGNvbnRyb2wgb2Ygd2hhdCBpcyB0aGUgY2xvY2tzb3VyY2Ugb3IgdGhlIGNs b2NrZXZlbnQuDQo+PiBUaGF0IGlzIHBhcnRpY3VsYXJ5IGhhbmR5IGluIGNhc2Ugb2YgbXVsdGlw bGUgY2hhbm5lbHMuDQo+Pg0KPj4gTm90IHN1cmUgaWYgd2UgY2FuIHJlcGxhY2UgdGhlICdhcm0s dGltZXJfcHJpbWFyeScgdG8gJ2Nsb2Nrc291cmNlJy4NCj4+DQo+PiBSb2I/IFdoYXQgaXMgeW91 ciBvcGluaW9uPw0KPj4NCj4+PiBJbmRpdmlkdWFsIFBJVDY0QiBoYXJkd2FyZSByZXNvdXJjZXMg d2VyZSB1c2VkIGZvciBjbG9ja3NvdXJjZQ0KPj4+IGFuZCBjbG9ja2V2ZW50IHRvIGJlIGFibGUg dG8gc3VwcG9ydCBoaWdoIHJlc29sdXRpb24gdGltZXJzIHdpdGggdGhpcw0KPj4+IGhhcmR3YXJl IGltcGxlbWVudGF0aW9uLg0KPj4+DQo+Pj4gU2lnbmVkLW9mZi1ieTogQ2xhdWRpdSBCZXpuZWEg PGNsYXVkaXUuYmV6bmVhQG1pY3JvY2hpcC5jb20+DQo+Pj4gLS0tDQo+Pj4gIGRyaXZlcnMvY2xv Y2tzb3VyY2UvS2NvbmZpZyAgICAgICAgICAgICAgICAgIHwgICA2ICsNCj4+PiAgZHJpdmVycy9j bG9ja3NvdXJjZS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPj4+ICBkcml2ZXJz L2Nsb2Nrc291cmNlL3RpbWVyLW1pY3JvY2hpcC1waXQ2NGIuYyB8IDQ2NCArKysrKysrKysrKysr KysrKysrKysrKysrKysNCj4+PiAgMyBmaWxlcyBjaGFuZ2VkLCA0NzEgaW5zZXJ0aW9ucygrKQ0K Pj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1taWNyb2No aXAtcGl0NjRiLmMNCj4+Pg0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsb2Nrc291cmNlL0tj b25maWcgYi9kcml2ZXJzL2Nsb2Nrc291cmNlL0tjb25maWcNCj4+PiBpbmRleCA1ZDkzZTU4MGU1 ZGMuLjJhZDZmODgxYTBiYiAxMDA2NDQNCj4+PiAtLS0gYS9kcml2ZXJzL2Nsb2Nrc291cmNlL0tj b25maWcNCj4+PiArKysgYi9kcml2ZXJzL2Nsb2Nrc291cmNlL0tjb25maWcNCj4+PiBAQCAtNDQ4 LDYgKzQ0OCwxMiBAQCBjb25maWcgT1hOQVNfUlBTX1RJTUVSDQo+Pj4gIGNvbmZpZyBTWVNfU1VQ UE9SVFNfU0hfQ01UDQo+Pj4gICAgICAgICAgYm9vbA0KPj4+ICANCj4+PiArY29uZmlnIE1JQ1JP Q0hJUF9QSVQ2NEINCj4+PiArCWJvb2wgIk1pY3JvY2hpcCBQSVQ2NEIgc3VwcG9ydCINCj4+PiAr CWRlcGVuZHMgb24gT0YgfHwgQ09NUElMRV9URVNUDQo+Pj4gKwloZWxwDQo+Pj4gKwkgIFRoaXMg b3B0aW9uIGVuYWJsZXMgTWljcm9jaGlwIFBJVDY0QiB0aW1lci4NCj4+PiArDQo+Pj4gIGNvbmZp ZyBNVEtfVElNRVINCj4+PiAgCWJvb2wgIk1lZGlhdGVrIHRpbWVyIGRyaXZlciIgaWYgQ09NUElM RV9URVNUDQo+Pj4gIAlkZXBlbmRzIG9uIEhBU19JT01FTQ0KPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2Nsb2Nrc291cmNlL01ha2VmaWxlIGIvZHJpdmVycy9jbG9ja3NvdXJjZS9NYWtlZmlsZQ0K Pj4+IGluZGV4IGM0YThlOWVmOTMyYS4uYzUzZmExMmI5Yjk0IDEwMDY0NA0KPj4+IC0tLSBhL2Ry aXZlcnMvY2xvY2tzb3VyY2UvTWFrZWZpbGUNCj4+PiArKysgYi9kcml2ZXJzL2Nsb2Nrc291cmNl L01ha2VmaWxlDQo+Pj4gQEAgLTM1LDYgKzM1LDcgQEAgb2JqLSQoQ09ORklHX1UzMDBfVElNRVIp CSs9IHRpbWVyLXUzMDAubw0KPj4+ICBvYmotJChDT05GSUdfU1VONElfVElNRVIpCSs9IHRpbWVy LXN1bjRpLm8NCj4+PiAgb2JqLSQoQ09ORklHX1NVTjVJX0hTVElNRVIpCSs9IHRpbWVyLXN1bjVp Lm8NCj4+PiAgb2JqLSQoQ09ORklHX01FU09ONl9USU1FUikJKz0gdGltZXItbWVzb242Lm8NCj4+ PiArb2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9QSVQ2NEIpCSs9IHRpbWVyLW1pY3JvY2hpcC1waXQ2 NGIubw0KPj4+ICBvYmotJChDT05GSUdfVEVHUkFfVElNRVIpCSs9IHRpbWVyLXRlZ3JhMjAubw0K Pj4+ICBvYmotJChDT05GSUdfVlQ4NTAwX1RJTUVSKQkrPSB0aW1lci12dDg1MDAubw0KPj4+ICBv YmotJChDT05GSUdfTlNQSVJFX1RJTUVSKQkrPSB0aW1lci16ZXZpby5vDQo+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItbWljcm9jaGlwLXBpdDY0Yi5jIGIvZHJpdmVy cy9jbG9ja3NvdXJjZS90aW1lci1taWNyb2NoaXAtcGl0NjRiLmMNCj4+PiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uNjc4N2FhOThlZjAxDQo+Pj4gLS0tIC9k ZXYvbnVsbA0KPj4+ICsrKyBiL2RyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItbWljcm9jaGlwLXBp dDY0Yi5jDQo+Pj4gQEAgLTAsMCArMSw0NjQgQEANCj4+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjANCj4+PiArLy8NCj4+PiArLy8gQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jv Y2hpcCBUZWNobm9sb2d5IEluYy4NCj4+PiArLy8gQ29weXJpZ2h0IChDKSAyMDE5IENsYXVkaXUg QmV6bmVhIChjbGF1ZGl1LmJlem5lYUBtaWNyb2NoaXAuY29tKQ0KPj4+ICsNCj4+PiArI2luY2x1 ZGUgPGxpbnV4L2Nsay5oPg0KPj4+ICsjaW5jbHVkZSA8bGludXgvY2xvY2tjaGlwcy5oPg0KPj4+ ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQo+Pj4gKyNpbmNsdWRlIDxsaW51eC9vZl9h ZGRyZXNzLmg+DQo+Pj4gKyNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4NCj4+PiArI2luY2x1ZGUg PGxpbnV4L3NjaGVkX2Nsb2NrLmg+DQo+Pj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQo+Pj4g Kw0KPj4+ICsjZGVmaW5lIE1DSFBfUElUNjRCX0NSCQkweDAwCS8qIENvbnRyb2wgUmVnaXN0ZXIg Ki8NCj4+PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9DUl9TVEFSVAlCSVQoMCkNCj4+PiArI2RlZmlu ZSBNQ0hQX1BJVDY0Ql9DUl9TV1JTVAlCSVQoOCkNCj4+PiArDQo+Pj4gKyNkZWZpbmUgTUNIUF9Q SVQ2NEJfTVIJCTB4MDQJLyogTW9kZSBSZWdpc3RlciAqLw0KPj4+ICsjZGVmaW5lIE1DSFBfUElU NjRCX01SX0NPTlQJQklUKDApDQo+Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2NEJfTVJfU0dDTEsJQklU KDMpDQo+Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2NEJfTVJfU01PRAlCSVQoNCkNCj4+PiArI2RlZmlu ZSBNQ0hQX1BJVDY0Ql9NUl9QUkVTCUdFTk1BU0soMTEsIDgpDQo+Pj4gKw0KPj4+ICsjZGVmaW5l IE1DSFBfUElUNjRCX0xTQl9QUgkweDA4CS8qIExTQiBQZXJpb2QgUmVnaXN0ZXIgKi8NCj4+PiAr DQo+Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2NEJfTVNCX1BSCTB4MEMJLyogTVNCIFBlcmlvZCBSZWdp c3RlciAqLw0KPj4+ICsNCj4+PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9JRVIJCTB4MTAJLyogSW50 ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAqLw0KPj4+ICsjZGVmaW5lIE1DSFBfUElUNjRCX0lFUl9Q RVJJT0QJQklUKDApDQo+Pj4gKw0KPj4+ICsjZGVmaW5lIE1DSFBfUElUNjRCX0lTUgkJMHgxQwkv KiBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyICovDQo+Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2NEJf SVNSX1BFUklPRAlCSVQoMCkNCj4+PiArDQo+Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2NEJfVExTQlIJ MHgyMAkvKiBUaW1lciBMU0IgUmVnaXN0ZXIgKi8NCj4+PiArDQo+Pj4gKyNkZWZpbmUgTUNIUF9Q SVQ2NEJfVE1TQlIJMHgyNAkvKiBUaW1lciBNU0IgUmVnaXN0ZXIgKi8NCj4+PiArDQo+Pj4gKyNk ZWZpbmUgTUNIUF9QSVQ2NEJfUFJFU19NQVgJMHgxMA0KPj4+ICsjZGVmaW5lIE1DSFBfUElUNjRC X0RFRl9GUkVRCTI1MDAwMDBVTAkvKiAyLjUgTUh6ICovDQo+Pj4gKyNkZWZpbmUgTUNIUF9QSVQ2 NEJfTFNCTUFTSwlHRU5NQVNLX1VMTCgzMSwgMCkNCj4+PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9Q UkVTQ0FMRVIocCkJKE1DSFBfUElUNjRCX01SX1BSRVMgJiAoKHApIDw8IDgpKQ0KPj4+ICsNCj4+ PiArI2RlZmluZSBNQ0hQX1BJVDY0Ql9OQU1FCSJwaXQ2NGIiDQo+Pj4gKw0KPj4+ICtzdHJ1Y3Qg bWNocF9waXQ2NGJfY29tbW9uX2RhdGEgew0KPj4+ICsJdm9pZCBfX2lvbWVtICpiYXNlOw0KPj4+ ICsJc3RydWN0IGNsayAqcGNsazsNCj4+PiArCXN0cnVjdCBjbGsgKmdjbGs7DQo+Pj4gKwl1NjQg Y3ljbGVzOw0KPj4+ICsJdTggcHJlczsNCj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0cnVjdCBtY2hw X3BpdDY0Yl9jbGtzcmNfZGF0YSB7DQo+Pj4gKwlzdHJ1Y3QgY2xvY2tzb3VyY2UgKmNsa3NyYzsN Cj4+PiArCXN0cnVjdCBtY2hwX3BpdDY0Yl9jb21tb25fZGF0YSAqY2Q7DQo+Pj4gK307DQo+Pj4g Kw0KPj4+ICtzdHJ1Y3QgbWNocF9waXQ2NGJfY2xrZXZ0X2RhdGEgew0KPj4+ICsJc3RydWN0IGNs b2NrX2V2ZW50X2RldmljZSAqY2xrZXZ0Ow0KPj4+ICsJc3RydWN0IG1jaHBfcGl0NjRiX2NvbW1v bl9kYXRhICpjZDsNCj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0YXRpYyBzdHJ1Y3QgbWNocF9waXQ2 NGJfZGF0YSB7DQo+Pj4gKwlzdHJ1Y3QgbWNocF9waXQ2NGJfY2xrc3JjX2RhdGEgKmNzZDsNCj4+ PiArCXN0cnVjdCBtY2hwX3BpdDY0Yl9jbGtldnRfZGF0YSAqY2VkOw0KPj4+ICt9IGRhdGE7DQo+ Pj4gKw0KPj4+ICtzdGF0aWMgaW5saW5lIHUzMiBtY2hwX3BpdDY0Yl9yZWFkKHZvaWQgX19pb21l bSAqYmFzZSwgdTMyIG9mZnNldCkNCj4+PiArew0KPj4+ICsJcmV0dXJuIHJlYWRsX3JlbGF4ZWQo YmFzZSArIG9mZnNldCk7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBt Y2hwX3BpdDY0Yl93cml0ZSh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwp DQo+Pj4gK3sNCj4+PiArCXdyaXRlbF9yZWxheGVkKHZhbCwgYmFzZSArIG9mZnNldCk7DQo+Pj4g K30NCj4+PiArDQo+Pj4gK3N0YXRpYyBpbmxpbmUgdTY0IG1jaHBfcGl0NjRiX2dldF9wZXJpb2Qo dm9pZCBfX2lvbWVtICpiYXNlKQ0KPj4+ICt7DQo+Pj4gKwl1MzIgbHNiLCBtc2I7DQo+Pj4gKw0K Pj4+ICsJLyogTFNCIG11c3QgYmUgcmVhZCBmaXJzdCB0byBndWFyYW50ZWUgYW4gYXRvbWljIHJl YWQgb2YgdGhlIDY0IGJpdA0KPj4+ICsJICogdGltZXIuDQo+Pj4gKwkgKi8NCj4+PiArCWxzYiA9 IG1jaHBfcGl0NjRiX3JlYWQoYmFzZSwgTUNIUF9QSVQ2NEJfVExTQlIpOw0KPj4+ICsJbXNiID0g bWNocF9waXQ2NGJfcmVhZChiYXNlLCBNQ0hQX1BJVDY0Ql9UTVNCUik7DQo+Pj4gKw0KPj4+ICsJ cmV0dXJuICgoKHU2NCltc2IgPDwgMzIpIHwgbHNiKTsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3Rh dGljIGlubGluZSB2b2lkIG1jaHBfcGl0NjRiX3NldF9wZXJpb2Qodm9pZCBfX2lvbWVtICpiYXNl LCB1NjQgY3ljbGVzKQ0KPj4+ICt7DQo+Pj4gKwl1MzIgbHNiLCBtc2I7DQo+Pj4gKw0KPj4+ICsJ bHNiID0gY3ljbGVzICYgTUNIUF9QSVQ2NEJfTFNCTUFTSzsNCj4+PiArCW1zYiA9IGN5Y2xlcyA+ PiAzMjsNCj4+PiArDQo+Pj4gKwkvKiBMU0IgbXVzdCBiZSB3cml0ZSBsYXN0IHRvIGd1YXJhbnRl ZSBhbiBhdG9taWMgdXBkYXRlIG9mIHRoZSB0aW1lcg0KPj4+ICsJICogZXZlbiB3aGVuIFNNT0Q9 MS4NCj4+PiArCSAqLw0KPj4+ICsJbWNocF9waXQ2NGJfd3JpdGUoYmFzZSwgTUNIUF9QSVQ2NEJf TVNCX1BSLCBtc2IpOw0KPj4+ICsJbWNocF9waXQ2NGJfd3JpdGUoYmFzZSwgTUNIUF9QSVQ2NEJf TFNCX1BSLCBsc2IpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgbWNo cF9waXQ2NGJfcmVzZXQoc3RydWN0IG1jaHBfcGl0NjRiX2NvbW1vbl9kYXRhICpkYXRhLA0KPj4+ ICsJCQkJICAgICB1MzIgbW9kZSwgYm9vbCBpcnFfZW5hKQ0KPj4+ICt7DQo+Pj4gKwltb2RlIHw9 IE1DSFBfUElUNjRCX1BSRVNDQUxFUihkYXRhLT5wcmVzKTsNCj4+PiArCWlmIChkYXRhLT5nY2xr KQ0KPj4+ICsJCW1vZGUgfD0gTUNIUF9QSVQ2NEJfTVJfU0dDTEs7DQo+Pj4gKw0KPj4+ICsJbWNo cF9waXQ2NGJfd3JpdGUoZGF0YS0+YmFzZSwgTUNIUF9QSVQ2NEJfQ1IsIE1DSFBfUElUNjRCX0NS X1NXUlNUKTsNCj4+PiArCW1jaHBfcGl0NjRiX3dyaXRlKGRhdGEtPmJhc2UsIE1DSFBfUElUNjRC X01SLCBtb2RlKTsNCj4+PiArCW1jaHBfcGl0NjRiX3NldF9wZXJpb2QoZGF0YS0+YmFzZSwgZGF0 YS0+Y3ljbGVzKTsNCj4+PiArCWlmIChpcnFfZW5hKQ0KPj4+ICsJCW1jaHBfcGl0NjRiX3dyaXRl KGRhdGEtPmJhc2UsIE1DSFBfUElUNjRCX0lFUiwNCj4+PiArCQkJCSAgTUNIUF9QSVQ2NEJfSUVS X1BFUklPRCk7DQo+Pj4gKwltY2hwX3BpdDY0Yl93cml0ZShkYXRhLT5iYXNlLCBNQ0hQX1BJVDY0 Ql9DUiwgTUNIUF9QSVQ2NEJfQ1JfU1RBUlQpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMg dTY0IG1jaHBfcGl0NjRiX3JlYWRfY2xrKHN0cnVjdCBjbG9ja3NvdXJjZSAqY3MpDQo+Pj4gK3sN Cj4+PiArCXJldHVybiBtY2hwX3BpdDY0Yl9nZXRfcGVyaW9kKGRhdGEuY3NkLT5jZC0+YmFzZSk7 DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyB1NjQgbWNocF9zY2hlZF9yZWFkX2Nsayh2b2lk KQ0KPj4+ICt7DQo+Pj4gKwlyZXR1cm4gbWNocF9waXQ2NGJfZ2V0X3BlcmlvZChkYXRhLmNzZC0+ Y2QtPmJhc2UpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgc3RydWN0IGNsb2Nrc291cmNl IG1jaHBfcGl0NjRiX2Nsa3NyYyA9IHsNCj4+PiArCS5uYW1lID0gTUNIUF9QSVQ2NEJfTkFNRSwN Cj4+PiArCS5tYXNrID0gQ0xPQ0tTT1VSQ0VfTUFTSyg2NCksDQo+Pj4gKwkuZmxhZ3MgPSBDTE9D S19TT1VSQ0VfSVNfQ09OVElOVU9VUywNCj4+PiArCS5yYXRpbmcgPSAyMTAsDQo+Pj4gKwkucmVh ZCA9IG1jaHBfcGl0NjRiX3JlYWRfY2xrLA0KPj4+ICt9Ow0KPj4+ICsNCj4+PiArc3RhdGljIGlu dCBtY2hwX3BpdDY0Yl9jbGtldnRfc2h1dGRvd24oc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAq Y2VkZXYpDQo+Pj4gK3sNCj4+PiArCW1jaHBfcGl0NjRiX3dyaXRlKGRhdGEuY2VkLT5jZC0+YmFz ZSwgTUNIUF9QSVQ2NEJfQ1IsDQo+Pj4gKwkJCSAgTUNIUF9QSVQ2NEJfQ1JfU1dSU1QpOw0KPj4+ ICsNCj4+PiArCXJldHVybiAwOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50IG1jaHBf cGl0NjRiX2Nsa2V2dF9zZXRfcGVyaW9kaWMoc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqY2Vk ZXYpDQo+Pj4gK3sNCj4+PiArCW1jaHBfcGl0NjRiX3Jlc2V0KGRhdGEuY2VkLT5jZCwgTUNIUF9Q SVQ2NEJfTVJfQ09OVCwgdHJ1ZSk7DQo+Pj4gKw0KPj4+ICsJcmV0dXJuIDA7DQo+Pj4gK30NCj4+ PiArDQo+Pj4gK3N0YXRpYyBpbnQgbWNocF9waXQ2NGJfY2xrZXZ0X3NldF9vbmVzaG90KHN0cnVj dCBjbG9ja19ldmVudF9kZXZpY2UgKmNlZGV2KQ0KPj4+ICt7DQo+Pj4gKwltY2hwX3BpdDY0Yl9y ZXNldChkYXRhLmNlZC0+Y2QsIE1DSFBfUElUNjRCX01SX1NNT0QsIHRydWUpOw0KPj4+ICsNCj4+ PiArCXJldHVybiAwOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50IG1jaHBfcGl0NjRi X2Nsa2V2dF9zZXRfbmV4dF9ldmVudCh1bnNpZ25lZCBsb25nIGV2dCwNCj4+PiArCQkJCQkgICAg IHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmNlZGV2KQ0KPj4+ICt7DQo+Pj4gKwltY2hwX3Bp dDY0Yl9zZXRfcGVyaW9kKGRhdGEuY2VkLT5jZC0+YmFzZSwgZXZ0KTsNCj4+PiArCW1jaHBfcGl0 NjRiX3dyaXRlKGRhdGEuY2VkLT5jZC0+YmFzZSwgTUNIUF9QSVQ2NEJfQ1IsDQo+Pj4gKwkJCSAg TUNIUF9QSVQ2NEJfQ1JfU1RBUlQpOw0KPj4+ICsNCj4+PiArCXJldHVybiAwOw0KPj4+ICt9DQo+ Pj4gKw0KPj4+ICtzdGF0aWMgdm9pZCBtY2hwX3BpdDY0Yl9jbGtldnRfc3VzcGVuZChzdHJ1Y3Qg Y2xvY2tfZXZlbnRfZGV2aWNlICpjZWRldikNCj4+PiArew0KPj4+ICsJbWNocF9waXQ2NGJfd3Jp dGUoZGF0YS5jZWQtPmNkLT5iYXNlLCBNQ0hQX1BJVDY0Ql9DUiwNCj4+PiArCQkJICBNQ0hQX1BJ VDY0Ql9DUl9TV1JTVCk7DQo+Pj4gKwlpZiAoZGF0YS5jZWQtPmNkLT5nY2xrKQ0KPj4+ICsJCWNs a19kaXNhYmxlX3VucHJlcGFyZShkYXRhLmNlZC0+Y2QtPmdjbGspOw0KPj4+ICsJY2xrX2Rpc2Fi bGVfdW5wcmVwYXJlKGRhdGEuY2VkLT5jZC0+cGNsayk7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0 YXRpYyB2b2lkIG1jaHBfcGl0NjRiX2Nsa2V2dF9yZXN1bWUoc3RydWN0IGNsb2NrX2V2ZW50X2Rl dmljZSAqY2VkZXYpDQo+Pj4gK3sNCj4+PiArCXUzMiBtb2RlID0gTUNIUF9QSVQ2NEJfTVJfU01P RDsNCj4+PiArDQo+Pj4gKwljbGtfcHJlcGFyZV9lbmFibGUoZGF0YS5jZWQtPmNkLT5wY2xrKTsN Cj4+PiArCWlmIChkYXRhLmNlZC0+Y2QtPmdjbGspDQo+Pj4gKwkJY2xrX3ByZXBhcmVfZW5hYmxl KGRhdGEuY2VkLT5jZC0+Z2Nsayk7DQo+Pj4gKw0KPj4+ICsJaWYgKGNsb2NrZXZlbnRfc3RhdGVf cGVyaW9kaWMoZGF0YS5jZWQtPmNsa2V2dCkpDQo+Pj4gKwkJbW9kZSA9IE1DSFBfUElUNjRCX01S X0NPTlQ7DQo+Pj4gKw0KPj4+ICsJbWNocF9waXQ2NGJfcmVzZXQoZGF0YS5jZWQtPmNkLCBtb2Rl LCB0cnVlKTsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIHN0cnVjdCBjbG9ja19ldmVudF9k ZXZpY2UgbWNocF9waXQ2NGJfY2xrZXZ0ID0gew0KPj4+ICsJLm5hbWUgPSBNQ0hQX1BJVDY0Ql9O QU1FLA0KPj4+ICsJLmZlYXR1cmVzID0gQ0xPQ0tfRVZUX0ZFQVRfT05FU0hPVCB8IENMT0NLX0VW VF9GRUFUX1BFUklPRElDLA0KPj4+ICsJLnJhdGluZyA9IDE1MCwNCj4+PiArCS5zZXRfc3RhdGVf c2h1dGRvd24gPSBtY2hwX3BpdDY0Yl9jbGtldnRfc2h1dGRvd24sDQo+Pj4gKwkuc2V0X3N0YXRl X3BlcmlvZGljID0gbWNocF9waXQ2NGJfY2xrZXZ0X3NldF9wZXJpb2RpYywNCj4+PiArCS5zZXRf c3RhdGVfb25lc2hvdCA9IG1jaHBfcGl0NjRiX2Nsa2V2dF9zZXRfb25lc2hvdCwNCj4+PiArCS5z ZXRfbmV4dF9ldmVudCA9IG1jaHBfcGl0NjRiX2Nsa2V2dF9zZXRfbmV4dF9ldmVudCwNCj4+PiAr CS5zdXNwZW5kID0gbWNocF9waXQ2NGJfY2xrZXZ0X3N1c3BlbmQsDQo+Pj4gKwkucmVzdW1lID0g bWNocF9waXQ2NGJfY2xrZXZ0X3Jlc3VtZSwNCj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0YXRpYyBp cnFyZXR1cm5fdCBtY2hwX3BpdDY0Yl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0K Pj4+ICt7DQo+Pj4gKwlzdHJ1Y3QgbWNocF9waXQ2NGJfY2xrZXZ0X2RhdGEgKmlycV9kYXRhID0g ZGV2X2lkOw0KPj4+ICsNCj4+PiArCWlmIChkYXRhLmNlZCAhPSBpcnFfZGF0YSkNCj4+PiArCQly ZXR1cm4gSVJRX05PTkU7DQo+Pj4gKw0KPj4+ICsJaWYgKG1jaHBfcGl0NjRiX3JlYWQoaXJxX2Rh dGEtPmNkLT5iYXNlLCBNQ0hQX1BJVDY0Ql9JU1IpICYNCj4+PiArCSAgICBNQ0hQX1BJVDY0Ql9J U1JfUEVSSU9EKSB7DQo+Pj4gKwkJaXJxX2RhdGEtPmNsa2V2dC0+ZXZlbnRfaGFuZGxlcihpcnFf ZGF0YS0+Y2xrZXZ0KTsNCj4+PiArCQlyZXR1cm4gSVJRX0hBTkRMRUQ7DQo+Pj4gKwl9DQo+Pj4g Kw0KPj4+ICsJcmV0dXJuIElSUV9OT05FOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50 IF9faW5pdCBtY2hwX3BpdDY0Yl9wcmVzX2NvbXB1dGUodTMyICpwcmVzLCB1MzIgY2xrX3JhdGUs DQo+Pj4gKwkJCQkJICAgdTMyIG1heF9yYXRlKQ0KPj4+ICt7DQo+Pj4gKwl1MzIgdG1wOw0KPj4+ ICsNCj4+PiArCWZvciAoKnByZXMgPSAwOyAqcHJlcyA8IE1DSFBfUElUNjRCX1BSRVNfTUFYOyAo KnByZXMpKyspIHsNCj4+PiArCQl0bXAgPSBjbGtfcmF0ZSAvICgqcHJlcyArIDEpOw0KPj4+ICsJ CWlmICh0bXAgPD0gbWF4X3JhdGUpDQo+Pj4gKwkJCWJyZWFrOw0KPj4+ICsJfQ0KPj4+ICsNCj4+ PiArCWlmICgqcHJlcyA9PSBNQ0hQX1BJVDY0Ql9QUkVTX01BWCkNCj4+PiArCQlyZXR1cm4gLUVJ TlZBTDsNCj4+PiArDQo+Pj4gKwlyZXR1cm4gMDsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGlj IGludCBfX2luaXQgbWNocF9waXQ2NGJfcHJlc19wcmVwYXJlKHN0cnVjdCBtY2hwX3BpdDY0Yl9j b21tb25fZGF0YSAqY2QsDQo+Pj4gKwkJCQkJICAgdW5zaWduZWQgbG9uZyBtYXhfcmF0ZSkNCj4+ PiArew0KPj4+ICsJdW5zaWduZWQgbG9uZyBwY2xrX3JhdGUsIGRpZmYgPSAwLCBiZXN0X2RpZmYg PSBVTE9OR19NQVg7DQo+Pj4gKwlsb25nIGdjbGtfcm91bmQgPSAwOw0KPj4+ICsJdTMyIHByZXMs IGJlc3RfcHJlczsNCj4+PiArCWludCByZXQgPSAwOw0KPj4+ICsNCj4+PiArCXBjbGtfcmF0ZSA9 IGNsa19nZXRfcmF0ZShjZC0+cGNsayk7DQo+Pj4gKwlpZiAoIXBjbGtfcmF0ZSkNCj4+PiArCQly ZXR1cm4gLUVJTlZBTDsNCj4+PiArDQo+Pj4gKwlpZiAoY2QtPmdjbGspIHsNCj4+PiArCQlnY2xr X3JvdW5kID0gY2xrX3JvdW5kX3JhdGUoY2QtPmdjbGssIG1heF9yYXRlKTsNCj4+PiArCQlpZiAo Z2Nsa19yb3VuZCA8IDApDQo+Pj4gKwkJCWdvdG8gcGNsazsNCj4+PiArDQo+Pj4gKwkJaWYgKHBj bGtfcmF0ZSAvIGdjbGtfcm91bmQgPCAzKQ0KPj4+ICsJCQlnb3RvIHBjbGs7DQo+Pj4gKw0KPj4+ ICsJCXJldCA9IG1jaHBfcGl0NjRiX3ByZXNfY29tcHV0ZSgmcHJlcywgZ2Nsa19yb3VuZCwgbWF4 X3JhdGUpOw0KPj4+ICsJCWlmIChyZXQpDQo+Pj4gKwkJCWJlc3RfZGlmZiA9IGFicyhnY2xrX3Jv dW5kIC0gbWF4X3JhdGUpOw0KPj4+ICsJCWVsc2UNCj4+PiArCQkJYmVzdF9kaWZmID0gYWJzKGdj bGtfcm91bmQgLyAocHJlcyArIDEpIC0gbWF4X3JhdGUpOw0KPj4+ICsJCWJlc3RfcHJlcyA9IHBy ZXM7DQo+Pj4gKwl9DQo+Pj4gKw0KPj4+ICtwY2xrOg0KPj4+ICsJLyogQ2hlY2sgaWYgcmVxdWVz dGVkIHJhdGUgY291bGQgYmUgb2J0YWluZWQgdXNpbmcgUENMSy4gKi8NCj4+PiArCXJldCA9IG1j aHBfcGl0NjRiX3ByZXNfY29tcHV0ZSgmcHJlcywgcGNsa19yYXRlLCBtYXhfcmF0ZSk7DQo+Pj4g KwlpZiAocmV0KQ0KPj4+ICsJCWRpZmYgPSBhYnMocGNsa19yYXRlIC0gbWF4X3JhdGUpOw0KPj4+ ICsJZWxzZQ0KPj4+ICsJCWRpZmYgPSBhYnMocGNsa19yYXRlIC8gKHByZXMgKyAxKSAtIG1heF9y YXRlKTsNCj4+PiArDQo+Pj4gKwlpZiAoYmVzdF9kaWZmID4gZGlmZikgew0KPj4+ICsJCS8qIFVz ZSBQQ0xLLiAqLw0KPj4+ICsJCWNkLT5nY2xrID0gTlVMTDsNCj4+PiArCQliZXN0X3ByZXMgPSBw cmVzOw0KPj4+ICsJfSBlbHNlIHsNCj4+PiArCQljbGtfc2V0X3JhdGUoY2QtPmdjbGssIGdjbGtf cm91bmQpOw0KPj4+ICsJfQ0KPj4+ICsNCj4+PiArCWNkLT5wcmVzID0gYmVzdF9wcmVzOw0KPj4+ ICsNCj4+PiArCXByX2luZm8oIlBJVDY0QjogdXNpbmcgY2xrPSVzIHdpdGggcHJlc2NhbGVyICV1 LCBmcmVxPSVsdSBbSHpdXG4iLA0KPj4+ICsJCWNkLT5nY2xrID8gImdjbGsiIDogInBjbGsiLCBj ZC0+cHJlcywNCj4+PiArCQljZC0+Z2NsayA/IGdjbGtfcm91bmQgLyAoY2QtPnByZXMgKyAxKQ0K Pj4+ICsJCQkgOiBwY2xrX3JhdGUgLyAoY2QtPnByZXMgKyAxKSk7DQo+Pj4gKw0KPj4+ICsJcmV0 dXJuIDA7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyBpbnQgX19pbml0IG1jaHBfcGl0NjRi X2R0X2luaXRfY2xrc3JjKHN0cnVjdCBtY2hwX3BpdDY0Yl9jb21tb25fZGF0YSAqY2QpDQo+Pj4g K3sNCj4+PiArCXN0cnVjdCBtY2hwX3BpdDY0Yl9jbGtzcmNfZGF0YSAqY3NkOw0KPj4+ICsJdW5z aWduZWQgbG9uZyBjbGtfcmF0ZTsNCj4+PiArCWludCByZXQ7DQo+Pj4gKw0KPj4+ICsJY3NkID0g a3phbGxvYyhzaXplb2YoKmNzZCksIEdGUF9LRVJORUwpOw0KPj4+ICsJaWYgKCFjc2QpDQo+Pj4g KwkJcmV0dXJuIC1FTk9NRU07DQo+Pj4gKw0KPj4+ICsJY3NkLT5jZCA9IGNkOw0KPj4+ICsNCj4+ PiArCWlmIChjc2QtPmNkLT5nY2xrKQ0KPj4+ICsJCWNsa19yYXRlID0gY2xrX2dldF9yYXRlKGNz ZC0+Y2QtPmdjbGspOw0KPj4+ICsJZWxzZQ0KPj4+ICsJCWNsa19yYXRlID0gY2xrX2dldF9yYXRl KGNzZC0+Y2QtPnBjbGspOw0KPj4+ICsNCj4+PiArCWNsa19yYXRlID0gY2xrX3JhdGUgLyAoY2Qt PnByZXMgKyAxKTsNCj4+PiArCWNzZC0+Y2QtPmN5Y2xlcyA9IFVMTE9OR19NQVg7DQo+Pj4gKwlt Y2hwX3BpdDY0Yl9yZXNldChjc2QtPmNkLCBNQ0hQX1BJVDY0Ql9NUl9DT05ULCBmYWxzZSk7DQo+ Pj4gKw0KPj4+ICsJZGF0YS5jc2QgPSBjc2Q7DQo+Pj4gKw0KPj4+ICsJY3NkLT5jbGtzcmMgPSAm bWNocF9waXQ2NGJfY2xrc3JjOw0KPj4+ICsNCj4+PiArCXJldCA9IGNsb2Nrc291cmNlX3JlZ2lz dGVyX2h6KGNzZC0+Y2xrc3JjLCBjbGtfcmF0ZSk7DQo+Pj4gKwlpZiAocmV0KSB7DQo+Pj4gKwkJ cHJfZGVidWcoImNsa3NyYzogRmFpbGVkIHRvIHJlZ2lzdGVyIFBJVDY0QiBjbG9ja3NvdXJjZSFc biIpOw0KPj4+ICsJCWdvdG8gZnJlZTsNCj4+PiArCX0NCj4+PiArDQo+Pj4gKwlzY2hlZF9jbG9j a19yZWdpc3RlcihtY2hwX3NjaGVkX3JlYWRfY2xrLCA2NCwgY2xrX3JhdGUpOw0KPj4+ICsNCj4+ PiArCXJldHVybiAwOw0KPj4+ICsNCj4+PiArZnJlZToNCj4+PiArCWtmcmVlKGNzZCk7DQo+Pj4g KwlkYXRhLmNzZCA9IE5VTEw7DQo+Pj4gKw0KPj4+ICsJcmV0dXJuIHJldDsNCj4+PiArfQ0KPj4+ ICsNCj4+PiArc3RhdGljIGludCBfX2luaXQgbWNocF9waXQ2NGJfZHRfaW5pdF9jbGtldnQoc3Ry dWN0IG1jaHBfcGl0NjRiX2NvbW1vbl9kYXRhICpjZCwNCj4+PiArCQkJCQkgICAgIHUzMiBpcnEp DQo+Pj4gK3sNCj4+PiArCXN0cnVjdCBtY2hwX3BpdDY0Yl9jbGtldnRfZGF0YSAqY2VkOw0KPj4+ ICsJdW5zaWduZWQgbG9uZyBjbGtfcmF0ZTsNCj4+PiArCWludCByZXQ7DQo+Pj4gKw0KPj4+ICsJ Y2VkID0ga3phbGxvYyhzaXplb2YoKmNlZCksIEdGUF9LRVJORUwpOw0KPj4+ICsJaWYgKCFjZWQp DQo+Pj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+Pj4gKw0KPj4+ICsJY2VkLT5jZCA9IGNkOw0KPj4+ ICsNCj4+PiArCWlmIChjZWQtPmNkLT5nY2xrKQ0KPj4+ICsJCWNsa19yYXRlID0gY2xrX2dldF9y YXRlKGNlZC0+Y2QtPmdjbGspOw0KPj4+ICsJZWxzZQ0KPj4+ICsJCWNsa19yYXRlID0gY2xrX2dl dF9yYXRlKGNlZC0+Y2QtPnBjbGspOw0KPj4+ICsNCj4+PiArCWNsa19yYXRlID0gY2xrX3JhdGUg LyAoY2VkLT5jZC0+cHJlcyArIDEpOw0KPj4+ICsJY2VkLT5jZC0+Y3ljbGVzID0gRElWX1JPVU5E X0NMT1NFU1QoY2xrX3JhdGUsIEhaKTsNCj4+PiArDQo+Pj4gKwlyZXQgPSByZXF1ZXN0X2lycShp cnEsIG1jaHBfcGl0NjRiX2ludGVycnVwdCwgSVJRRl9USU1FUiwgInBpdDY0Yl90aWNrIiwNCj4+ PiArCQkJICBjZWQpOw0KPj4+ICsJaWYgKHJldCkgew0KPj4+ICsJCXByX2RlYnVnKCJjbGtldnQ6 IEZhaWxlZCB0byBzZXR1cCBQSVQ2NEIgSVJRXG4iKTsNCj4+PiArCQlnb3RvIGZyZWU7DQo+Pj4g Kwl9DQo+Pj4gKw0KPj4+ICsJZGF0YS5jZWQgPSBjZWQ7DQo+Pj4gKw0KPj4+ICsJLyogU2V0IHVw IGFuZCByZWdpc3RlciBjbG9ja2V2ZW50cy4gKi8NCj4+PiArCWNlZC0+Y2xrZXZ0ID0gJm1jaHBf cGl0NjRiX2Nsa2V2dDsNCj4+PiArCWNlZC0+Y2xrZXZ0LT5jcHVtYXNrID0gY3B1bWFza19vZigw KTsNCj4+PiArCWNlZC0+Y2xrZXZ0LT5pcnEgPSBpcnE7DQo+Pj4gKwljbG9ja2V2ZW50c19jb25m aWdfYW5kX3JlZ2lzdGVyKGNlZC0+Y2xrZXZ0LCBjbGtfcmF0ZSwgMSwgVUxPTkdfTUFYKTsNCj4+ PiArDQo+Pj4gKwlyZXR1cm4gMDsNCj4+PiArDQo+Pj4gK2ZyZWU6DQo+Pj4gKwlrZnJlZShjZWQp Ow0KPj4+ICsJZGF0YS5jZWQgPSBOVUxMOw0KPj4+ICsNCj4+PiArCXJldHVybiByZXQ7DQo+Pj4g K30NCj4+PiArDQo+Pj4gK3N0YXRpYyBpbnQgX19pbml0IG1jaHBfcGl0NjRiX2R0X2luaXQoc3Ry dWN0IGRldmljZV9ub2RlICpub2RlKQ0KPj4+ICt7DQo+Pj4gKwlzdHJ1Y3QgbWNocF9waXQ2NGJf Y29tbW9uX2RhdGEgKmNkOw0KPj4+ICsJdTMyIGlycSwgZnJlcSA9IE1DSFBfUElUNjRCX0RFRl9G UkVROw0KPj4+ICsJaW50IHJldDsNCj4+PiArDQo+Pj4gKwlpZiAoZGF0YS5jc2QgJiYgZGF0YS5j ZWQpDQo+Pj4gKwkJcmV0dXJuIC1FQlVTWTsNCj4+PiArDQo+Pj4gKwljZCA9IGt6YWxsb2Moc2l6 ZW9mKCpjZCksIEdGUF9LRVJORUwpOw0KPj4+ICsJaWYgKCFjZCkNCj4+PiArCQlyZXR1cm4gLUVO T01FTTsNCj4+PiArDQo+Pj4gKwljZC0+cGNsayA9IG9mX2Nsa19nZXRfYnlfbmFtZShub2RlLCAi cGNsayIpOw0KPj4+ICsJaWYgKElTX0VSUihjZC0+cGNsaykpIHsNCj4+PiArCQlyZXQgPSBQVFJf RVJSKGNkLT5wY2xrKTsNCj4+PiArCQlnb3RvIGZyZWU7DQo+Pj4gKwl9DQo+Pj4gKw0KPj4+ICsJ Y2QtPmdjbGsgPSBvZl9jbGtfZ2V0X2J5X25hbWUobm9kZSwgImdjbGsiKTsNCj4+PiArCWlmIChJ U19FUlIoY2QtPmdjbGspKQ0KPj4+ICsJCWNkLT5nY2xrID0gTlVMTDsNCj4+PiArDQo+Pj4gKwly ZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAiY2xvY2stZnJlcXVlbmN5IiwgJmZyZXEp Ow0KPj4+ICsJaWYgKHJldCkNCj4+PiArCQlwcl9kZWJ1ZygiUElUNjRCOiBmYWlsZWQgdG8gcmVh ZCBjbG9jayBmcmVxdWVuY3kuIFVzaW5nIGRlZmF1bHQhXG4iKTsNCj4+PiArDQo+Pj4gKwlyZXQg PSBtY2hwX3BpdDY0Yl9wcmVzX3ByZXBhcmUoY2QsIGZyZXEpOw0KPj4+ICsJaWYgKHJldCkNCj4+ PiArCQlnb3RvIGZyZWU7DQo+Pj4gKw0KPj4+ICsJY2QtPmJhc2UgPSBvZl9pb21hcChub2RlLCAw KTsNCj4+PiArCWlmICghY2QtPmJhc2UpIHsNCj4+PiArCQlwcl9kZWJ1ZygiJXM6IENvdWxkIG5v dCBtYXAgUElUNjRCIGFkZHJlc3MhXG4iLA0KPj4+ICsJCQkgTUNIUF9QSVQ2NEJfTkFNRSk7DQo+ Pj4gKwkJcmV0ID0gLUVOWElPOw0KPj4+ICsJCWdvdG8gZnJlZTsNCj4+PiArCX0NCj4+PiArDQo+ Pj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoY2QtPnBjbGspOw0KPj4+ICsJaWYgKHJldCkN Cj4+PiArCQlnb3RvIHVubWFwOw0KPj4+ICsNCj4+PiArCWlmIChjZC0+Z2Nsaykgew0KPj4+ICsJ CXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShjZC0+Z2Nsayk7DQo+Pj4gKwkJaWYgKHJldCkNCj4+ PiArCQkJZ290byBwY2xrX3VucHJlcGFyZTsNCj4+PiArCX0NCj4+PiArDQo+Pj4gKwlpZiAoIWRh dGEuY2VkKSB7DQo+Pj4gKwkJaXJxID0gaXJxX29mX3BhcnNlX2FuZF9tYXAobm9kZSwgMCk7DQo+ Pj4gKwkJaWYgKCFpcnEpIHsNCj4+PiArCQkJcHJfZGVidWcoIiVzOiBGYWlsZWQgdG8gZ2V0IFBJ VDY0QiBjbG9ja2V2ZW50IElSUSFcbiIsDQo+Pj4gKwkJCQkgTUNIUF9QSVQ2NEJfTkFNRSk7DQo+ Pj4gKwkJCXJldCA9IC1FTk9ERVY7DQo+Pj4gKwkJCWdvdG8gZ2Nsa191bnByZXBhcmU7DQo+Pj4g KwkJfQ0KPj4+ICsJCXJldCA9IG1jaHBfcGl0NjRiX2R0X2luaXRfY2xrZXZ0KGNkLCBpcnEpOw0K Pj4+ICsJCWlmIChyZXQpDQo+Pj4gKwkJCWdvdG8gaXJxX3VubWFwOw0KPj4+ICsJfSBlbHNlIHsN Cj4+PiArCQlyZXQgPSBtY2hwX3BpdDY0Yl9kdF9pbml0X2Nsa3NyYyhjZCk7DQo+Pj4gKwkJaWYg KHJldCkNCj4+PiArCQkJZ290byBnY2xrX3VucHJlcGFyZTsNCj4+PiArCX0NCj4+PiArDQo+Pj4g KwlyZXR1cm4gMDsNCj4+PiArDQo+Pj4gK2lycV91bm1hcDoNCj4+PiArCWlycV9kaXNwb3NlX21h cHBpbmcoaXJxKTsNCj4+PiArZ2Nsa191bnByZXBhcmU6DQo+Pj4gKwlpZiAoY2QtPmdjbGspDQo+ Pj4gKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNkLT5nY2xrKTsNCj4+PiArcGNsa191bnByZXBh cmU6DQo+Pj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoY2QtPnBjbGspOw0KPj4+ICt1bm1hcDoN Cj4+PiArCWlvdW5tYXAoY2QtPmJhc2UpOw0KPj4+ICtmcmVlOg0KPj4+ICsJa2ZyZWUoY2QpOw0K Pj4+ICsNCj4+PiArCXJldHVybiByZXQ7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK1RJTUVSX09GX0RF Q0xBUkUobWNocF9waXQ2NGJfY2xrc3JjLCAibWljcm9jaGlwLHNhbTl4NjAtcGl0NjRiIiwNCj4+ PiArCQkgbWNocF9waXQ2NGJfZHRfaW5pdCk7DQo+Pj4NCj4+DQo+Pg0KPj4gLS0gDQo+PiAgPGh0 dHA6Ly93d3cubGluYXJvLm9yZy8+IExpbmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJl IGZvciBBUk0gU29Dcw0KPj4NCj4+IEZvbGxvdyBMaW5hcm86ICA8aHR0cDovL3d3dy5mYWNlYm9v ay5jb20vcGFnZXMvTGluYXJvPiBGYWNlYm9vayB8DQo+PiA8aHR0cDovL3R3aXR0ZXIuY29tLyMh L2xpbmFyb29yZz4gVHdpdHRlciB8DQo+PiA8aHR0cDovL3d3dy5saW5hcm8ub3JnL2xpbmFyby1i bG9nLz4gQmxvZw0KPj4NCj4gDQo=