From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9B217C432BE for ; Thu, 19 Aug 2021 11:52:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7FF7E610A6 for ; Thu, 19 Aug 2021 11:52:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238865AbhHSLxY (ORCPT ); Thu, 19 Aug 2021 07:53:24 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:29848 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S238449AbhHSLxW (ORCPT ); Thu, 19 Aug 2021 07:53:22 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.0.43) with SMTP id 17J1G1vK026741; Thu, 19 Aug 2021 04:52:39 -0700 Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam08lp2168.outbound.protection.outlook.com [104.47.73.168]) by mx0a-0016f401.pphosted.com with ESMTP id 3ahdg2t208-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 19 Aug 2021 04:52:38 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jg0GDDi8AZLjcwJfFmtxM86NuGzgBbs7BKJ6/JwwwDBe3gpdm2+8TvVIabYw5iGE1Lc8uDaXzoO5r47UqBKlS6zKmZxfVQ8rL84MkHT38U6vnaLmUzOLmcKehNIYqhT04wX+MBXyyasXFy4eXoIFT3w1SsMzSibV97IT6WWPjV7PIUDRikkyG8Isgh2T+/a6u32htFubn6wYquh5+vE6URFMZ1q5403vo9DMJQXcAggoEZBUhYVL/Bqvsu/EINZOgLAwe25lo61QtA5nzSpF+uJXSlxOTe/VMR4d3rzEaiJpRI4a+Y6RvxSiJZE7pZpd0MswQZqYy8J3AZ8LvBj5JQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=x8Amdy/yzFfrgwFIG7GM6H9eGAY8EnCmZ/RXDvt5w0E=; b=LUNn23XyLeDJlk84jGnkmu6br9EPjp0KaNvn8g8itpCSl9qP23s8rla5dLb2K6ZA/DxC55z9dwDf4cK7K2sVed6WVcpPN5wKgHYJYrySSG17VmPhnSUFGndAzD6WFMY5W7x3dPkiHYRTQDGHJ0ihH4TJSTeoCMzY3F5WTJNK8phNAmSHUtNErkAoLaaow+SsmsWg0xjJoXu390cc7Vk+kMVoRUNQbPrzomYPupx9AK3ns/Kj4cxi+L4h1RJceb35d9V0hZ0J9AiPVhN2SzNWyu4oNhM3EsOnlL8YPp5TX6UshpVHSrrxjUhmSFmCBUOsBaIdZU2UL3sTTHiV/ar5lA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=x8Amdy/yzFfrgwFIG7GM6H9eGAY8EnCmZ/RXDvt5w0E=; b=KcyQR+Sj+CNeHgTwCy72tRypmeAoLSu1P8nH3Lx+pWo+f765kPdjTL75yoLILcY7aKxp8gFmbKyHX8pCriZHBhafczyC5PU9bYJJbC7uOYxPIQPAYorI9L5/WEZEtncaEXaiyo2y04+3W6gSYDVOsEh6eSKXSJ8o/w20WC0M6wQ= Received: from CO6PR18MB4465.namprd18.prod.outlook.com (2603:10b6:303:13b::10) by CO1PR18MB4715.namprd18.prod.outlook.com (2603:10b6:303:ea::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.19; Thu, 19 Aug 2021 11:52:36 +0000 Received: from CO6PR18MB4465.namprd18.prod.outlook.com ([fe80::5f0:c8ed:ffa3:223c]) by CO6PR18MB4465.namprd18.prod.outlook.com ([fe80::5f0:c8ed:ffa3:223c%3]) with mapi id 15.20.4415.024; Thu, 19 Aug 2021 11:52:36 +0000 From: Bharat Bhushan To: kajoljain , "will@kernel.org" , "mark.rutland@arm.com" , "robh+dt@kernel.org" , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [EXT] Re: [PATCH v2 2/4] perf/marvell: CN10k DDR performance monitor support Thread-Topic: [EXT] Re: [PATCH v2 2/4] perf/marvell: CN10k DDR performance monitor support Thread-Index: AQHXjcwsjrNmfkiCJEWBK71HCx0M/6t5PUKAgAFYqEA= Date: Thu, 19 Aug 2021 11:52:36 +0000 Message-ID: References: <20210810094307.29595-1-bbhushan2@marvell.com> <20210810094307.29595-3-bbhushan2@marvell.com> <329a1d8c-1b93-443c-a1d8-484083a8978f@linux.ibm.com> In-Reply-To: <329a1d8c-1b93-443c-a1d8-484083a8978f@linux.ibm.com> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: linux.ibm.com; dkim=none (message not signed) header.d=none;linux.ibm.com; dmarc=none action=none header.from=marvell.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 86d167ee-5c28-4c04-4b8e-08d96307d6aa x-ms-traffictypediagnostic: CO1PR18MB4715: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /Gyy2umm8YizEvyud9rO3KZRs6EF083S0GHtPQc05iNTY4ntBse0oxS7aWqcsuLop6ZhMv7JuqUXjFFGXYHY8NkJJwCOtZ+PxIAf9taJtGqGOKB6yi8UtC5yAKOcPzji3pWqCm4iozF352/ME8EKjbAR+qNhP/QnPJhGQa83aeP77nIMNy33y937vju/DhDNBYRjgJXDm45TVgsETTR0EZSYma/7i61tpF9zV/wyapEKjZMRiISvv4Db6FZ1C4kozTRFkMg84OASghxIFOB/VdG3YLzcd6zPYlW58LZ+C+qCpJ43H8grBJZlyYekZm/ZuUjcu/HJYO/QAzGD/D6WrVhbQEZ8qjveosaU1a37+izZUAzvhH6UNJrn4MhO5vBMAxErpIJ6kkVz8vw34VlwWy7C7nCxd1UJ0YpV1a/C1mbn+dulilE4xVdT5Pmup6gpd1KVq3KyfwpfMWWnBiL4St1xzp79QKU/qJC4OHCXjnShTLzvNhJY8c5H/evrPsni247d4jspFjyLluHMaAVXyiwumJzdWjYnMxe4rjTaATGPmG/c1VxXvm4U1psDJNEd6avUSEpq3OeZd0xqLABS3Btn25A6K18u3etUe4MsyyykJumfxIS6HaRawno+h/FZ+gvcJx6NLRnRXQmcllXxSPeG9iHj+GWgnCVJFubeN/9Oj6Ul/CdBzDgUwKaMUmFaNILFIeGA+arU1pbGdu5lpg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO6PR18MB4465.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(346002)(136003)(39860400002)(396003)(376002)(366004)(76116006)(55016002)(64756008)(66556008)(66946007)(6506007)(53546011)(186003)(5660300002)(66476007)(26005)(2906002)(8936002)(7696005)(86362001)(478600001)(66446008)(33656002)(110136005)(8676002)(316002)(9686003)(30864003)(38100700002)(122000001)(38070700005)(83380400001)(71200400001)(52536014)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bzJ0R0xpN0YvVVhnRGxYcXpSRytNY3R1NFYzZzZ2clkrQ2xWeTQyaG4vQ1ZK?= =?utf-8?B?eXVxRHRhdEZLeU04UFJyVWlBSHNmYUF0TGpSMkNrLzBWazhoVER2cGlYNlhv?= =?utf-8?B?cStyUGNaVk5nYjFvUFZPb2x5dlN3dFkyclgvazlvOFpFZDI4dW5yRU40czJq?= =?utf-8?B?U1ZveUdFUVNNNTFZZ0JITXViSVdZYVhiREJQVEdyekFtQi9PS3laVVlETnVj?= =?utf-8?B?b2EwUVNGRlRVeGJ1bWErRjVYcWtZcU50YnB3RlJSaHBXdXBvSW5OSXFaamU5?= =?utf-8?B?c2lRT0plcWlud0hvK2VWZEFPQ0lDNDVCTDF0dnhZMmtSWE1hRThKQldNd0lE?= =?utf-8?B?bUVpeFpDQTJ5MjFNdHBidlcyUGJCN29TQlNIM1dMbnVkeUt1RHdKQkQzUTZi?= =?utf-8?B?U05ZaHYwcmNHLzJzUUxkRHhFQTBOL1hYUTQ4cWhFVlF2SVJHNSs5MllSNUIz?= =?utf-8?B?YnZmanNnVzNwT2lJV0pKKzZpWnQxOE5QK2V4ZkpjN1o2ZHkxbjNXTEgwYnUy?= =?utf-8?B?S2d1bTZ6VG1MMFgrU2lmWkNrVTdTRDI3ZnBFWlFnbkVjWXN1ZzJvNW1yVitj?= =?utf-8?B?azlOYjhXUFJOS083QzhmL1VxamhkSWVCbzVCSHpubzlUK2hPQjFDZ2cxNS84?= =?utf-8?B?dFM0N3RXWHNRbUVtaXJsRDUreVdZOE52bFFyeHNMWmkydUxCaVJPMEhaRWFj?= =?utf-8?B?d0JYTGZZSVo1b3hLSVpyTFpvcVpwZFRuL2lzK3pRSzF5UFBxQXpCZUErSTEv?= =?utf-8?B?ZGFPYWZjQXlQc0ZXYk9lWnE2c2JaUWh1bUtVVlJIVFI3SWFJdXdDVDJXcE9C?= =?utf-8?B?L0RESm5RY1Iya3JlYmhJNWhxZDA0Yzk5eHk3eEpVV0Z0UE1oR0lpdGcrK1JK?= =?utf-8?B?TE13SDRuUUgzSk9Bbm9nZ01uM0FDRCtCd1J5WERxN0NQMnJHZDNDM3dUSGxk?= =?utf-8?B?cG9jT2lnd05Ga3JnZUdaekpXbVErTnhzR05EajNaUVZCdlIxbGlZRFE3T0dE?= =?utf-8?B?TTI1MTgrcnZGNGF0Z2xDdEI1NTZlMW5ITkFuRjZBT2VRUkljdm1UeSs0MmEr?= =?utf-8?B?ZjNRSXk4ajdXaG9vYmhUV1kzSFF1Q1ZRQit6MHcxWi9aT2xlMHVCNnVlZmJ1?= =?utf-8?B?Rzc4dlNoK2hEQ2NQS1MyZ1k0UGNxd2tJZE5nVjdDSkh0MEhtZU9oMTYxUkdw?= =?utf-8?B?VTE0bkxlTmVZYldIdEV5b0NkNWdrRGt3Vzhnbkh4Mk50K0tqbk1wRmNhbkR0?= =?utf-8?B?V3RqUGlZa0J0YkVjZUxCVTdYVzBkbGxwVzAzcGppMnFXTDNQK1dKNmg3cXh5?= =?utf-8?B?OUxPRkxoVUpmS0NNZnZ5eFdrUnAzb2dqMEdXZm1BaEpyaFd0MkdDR1hRYzJv?= =?utf-8?B?SFFwb3E4SFRYSWFaeDk0dFlnMHk5RlpwVHBVSlZKOThxY1VxenJnKzJhdnBq?= =?utf-8?B?TnZ0Qkl3eUNYazliN1JaV3Z2aHpiRkhrT2RoMTJucnc1Qkx1cFoxL0VTOU5p?= =?utf-8?B?QXpUU1ZWVnhuMWhFTGg4UzV4TUQyY0RwclhycGE1V2I0MzJHS2RCZnF2eWtK?= =?utf-8?B?YmVQYjM0UWlyVVA5MUpXcTZQSlZ0N2VGWFJXSGQrZUVyaTBSM3pXbjZwOURF?= =?utf-8?B?WWsweE0zK1UzODNIbTNrekE3OXBwKzVVSW0xUTlEcGlzVW5nMVF5L0dMdmpw?= =?utf-8?B?WlFET3hrNlN0UitZOS94RlRUUUpOZUJWbTE3Q1BqdnBoL1MxQ00rN2xWVWhW?= =?utf-8?Q?cXCaopq38UrYJWCtllLaPOfG/5Ysnh2X0+sELty?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO6PR18MB4465.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86d167ee-5c28-4c04-4b8e-08d96307d6aa X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Aug 2021 11:52:36.4532 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 6vVH1X6+bgLzIIbI22RMVKIhDd32NhMx7/cbtl42oLaSgpNgMHwi9bLRHmoKoLQLX6ZB+pL2nV7ZgGADh7O+xg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR18MB4715 X-Proofpoint-GUID: kSPiR6zpFYrxtBslsWxcN1bC-CTxkC8J X-Proofpoint-ORIG-GUID: kSPiR6zpFYrxtBslsWxcN1bC-CTxkC8J X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475 definitions=2021-08-19_06,2021-08-17_02,2020-04-07_01 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org UGxlYXNlIHNlZSBpbmxpbmUgDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJv bToga2Fqb2xqYWluIDxramFpbkBsaW51eC5pYm0uY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIEF1 Z3VzdCAxOCwgMjAyMSA1OjU4IFBNDQo+IFRvOiBCaGFyYXQgQmh1c2hhbiA8YmJodXNoYW4yQG1h cnZlbGwuY29tPjsgd2lsbEBrZXJuZWwub3JnOw0KPiBtYXJrLnJ1dGxhbmRAYXJtLmNvbTsgcm9i aCtkdEBrZXJuZWwub3JnOyBsaW51eC1hcm0tDQo+IGtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn OyBkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZzsgbGludXgtDQo+IGtlcm5lbEB2Z2VyLmtlcm5l bC5vcmcNCj4gU3ViamVjdDogW0VYVF0gUmU6IFtQQVRDSCB2MiAyLzRdIHBlcmYvbWFydmVsbDog Q04xMGsgRERSIHBlcmZvcm1hbmNlIG1vbml0b3INCj4gc3VwcG9ydA0KPiANCj4gRXh0ZXJuYWwg RW1haWwNCj4gDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IA0KPiBPbiA4LzEwLzIxIDM6MTMgUE0s IEJoYXJhdCBCaHVzaGFuIHdyb3RlOg0KPiA+IE1hcnZlbGwgQ04xMGsgRFJBTSBTdWJzeXN0ZW0g KERTUykgc3VwcG9ydHMgZWlnaHQgZXZlbnQgY291bnRlcnMgZm9yDQo+ID4gbW9uaXRvcmluZyBw ZXJmb3JtYW5jZSBhbmQgc29mdHdhcmUgY2FuIHByb2dyYW0gZWFjaCBjb3VudGVyIHRvDQo+ID4g bW9uaXRvciBhbnkgb2YgdGhlIGRlZmluZWQgcGVyZm9ybWFuY2UgZXZlbnQuIFBlcmZvcm1hbmNl IGV2ZW50cyBhcmUNCj4gPiBmb3IgaW50ZXJmYWNlIGJldHdlZW4gdGhlIEREUiBjb250cm9sbGVy IGFuZCB0aGUgUEhZLCBpbnRlcmZhY2UNCj4gPiBiZXR3ZWVuIHRoZSBERFIgQ29udHJvbGxlciBh bmQgdGhlIENISSBpbnRlcmNvbm5lY3QsIG9yIHdpdGhpbiB0aGUgRERSDQo+ID4gQ29udHJvbGxl ci4gQWRkaXRpb25hbGx5IERTUyBhbHNvIHN1cHBvcnRzIHR3byBmaXhlZCBwZXJmb3JtYW5jZSBl dmVudA0KPiA+IGNvdW50ZXJzLCBvbmUgZm9yIG51bWJlciBvZiBkZHIgcmVhZHMgYW5kIG90aGVy IGZvciBkZHIgd3JpdGVzLg0KPiA+DQo+ID4gVGhpcyBwYXRjaCBhZGQgYmFzaWMgc3VwcG9ydCBm b3IgdGhlc2UgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBldmVudHMNCj4gPiBvbiBDTjEway4NCj4g Pg0KPiA+IFNpZ25lZC1vZmYtYnk6IEJoYXJhdCBCaHVzaGFuIDxiYmh1c2hhbjJAbWFydmVsbC5j b20+DQo+ID4gLS0tDQo+ID4gdjEtPnYyOg0KPiA+ICAtIHdyaXRlcS9yZWFkcSBjaGFuZ2VkIHRv IHJlc3BlY3RpdmUgcmVsYXhlZCB2ZXJzaW9uDQo+ID4gIC0gVXNpbmcgUE1VX0VWRU5UX0FUVFJf SUQNCj4gPg0KPiA+ICBkcml2ZXJzL3BlcmYvS2NvbmZpZyAgICAgICAgICAgICAgICAgfCAgIDcg Kw0KPiA+ICBkcml2ZXJzL3BlcmYvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiA+ ICBkcml2ZXJzL3BlcmYvbWFydmVsbF9jbjEwa19kZHJfcG11LmMgfCA2MDYNCj4gPiArKysrKysr KysrKysrKysrKysrKysrKysrKysNCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCA2MTQgaW5zZXJ0aW9u cygrKQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wZXJmL21hcnZlbGxfY24xMGtf ZGRyX3BtdS5jDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wZXJmL0tjb25maWcgYi9k cml2ZXJzL3BlcmYvS2NvbmZpZyBpbmRleA0KPiA+IDc3NTIyZTVlZmUxMS4uNDFhODBhNGI4ZDI5 IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvcGVyZi9LY29uZmlnDQo+ID4gKysrIGIvZHJpdmVy cy9wZXJmL0tjb25maWcNCj4gPiBAQCAtMTM5LDQgKzEzOSwxMSBAQCBjb25maWcgQVJNX0RNQzYy MF9QTVUNCj4gPg0KPiA+ICBzb3VyY2UgImRyaXZlcnMvcGVyZi9oaXNpbGljb24vS2NvbmZpZyIN Cj4gPg0KPiA+ICtjb25maWcgTUFSVkVMTF9DTjEwS19ERFJfUE1VDQo+ID4gKwl0cmlzdGF0ZSAi RW5hYmxlIE1BUlZFTEwgQ04xMEsgRFJBTSBTdWJzeXN0ZW0oRFNTKSBQTVUgU3VwcG9ydCINCj4g PiArCWRlcGVuZHMgb24gQVJNNjQNCj4gPiArCWhlbHANCj4gPiArCSAgRW5hYmxlIHBlcmYgc3Vw cG9ydCBmb3IgTWFydmVsbCBERFIgUGVyZm9ybWFuY2UgbW9uaXRvcmluZw0KPiA+ICsJICBldmVu dCBvbiBDTjEwSyBwbGF0Zm9ybS4NCj4gPiArDQo+ID4gIGVuZG1lbnUNCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9wZXJmL01ha2VmaWxlIGIvZHJpdmVycy9wZXJmL01ha2VmaWxlIGluZGV4DQo+ ID4gNTI2MGIxMTZjN2RhLi5lZTExMjYyMTlkOGQgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9w ZXJmL01ha2VmaWxlDQo+ID4gKysrIGIvZHJpdmVycy9wZXJmL01ha2VmaWxlDQo+ID4gQEAgLTE0 LDMgKzE0LDQgQEAgb2JqLSQoQ09ORklHX1RIVU5ERVJYMl9QTVUpICs9IHRodW5kZXJ4Ml9wbXUu bw0KPiA+ICBvYmotJChDT05GSUdfWEdFTkVfUE1VKSArPSB4Z2VuZV9wbXUubw0KPiA+ICBvYmot JChDT05GSUdfQVJNX1NQRV9QTVUpICs9IGFybV9zcGVfcG11Lm8NCj4gPiAgb2JqLSQoQ09ORklH X0FSTV9ETUM2MjBfUE1VKSArPSBhcm1fZG1jNjIwX3BtdS5vDQo+ID4gK29iai0kKENPTkZJR19N QVJWRUxMX0NOMTBLX0REUl9QTVUpICs9IG1hcnZlbGxfY24xMGtfZGRyX3BtdS5vDQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcGVyZi9tYXJ2ZWxsX2NuMTBrX2Rkcl9wbXUuYw0KPiA+IGIvZHJp dmVycy9wZXJmL21hcnZlbGxfY24xMGtfZGRyX3BtdS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjhmOWUzZDFmY2Q4ZA0KPiA+IC0tLSAvZGV2L251 bGwNCj4gPiArKysgYi9kcml2ZXJzL3BlcmYvbWFydmVsbF9jbjEwa19kZHJfcG11LmMNCj4gPiBA QCAtMCwwICsxLDYwNiBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MA0KPiA+ICsvKiBNYXJ2ZWxsIENOMTBLIERSQU0gU3Vic3lzdGVtIChEU1MpIFBlcmZvcm1hbmNl IE1vbml0b3IgRHJpdmVyDQo+ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAyMSBNYXJ2 ZWxsLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+DQo+ID4g KyNpbmNsdWRlIDxsaW51eC9pby5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ ID4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVz cy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxs aW51eC9wZXJmX2V2ZW50Lmg+DQo+ID4gKw0KPiA+ICsvKiBQZXJmb3JtYW5jZSBDb3VudGVycyBP cGVyYXRpbmcgTW9kZSBDb250cm9sIFJlZ2lzdGVycyAqLw0KPiA+ICsjZGVmaW5lIEREUkNfUEVS Rl9DTlRfT1BfTU9ERV9DVFJMCTB4ODAyMA0KPiA+ICsjZGVmaW5lIE9QX01PREVfQ1RSTF9WQUxf TUFOTlVBTAkweDENCj4gPiArDQo+ID4gKy8qIFBlcmZvcm1hbmNlIENvdW50ZXJzIFN0YXJ0IE9w ZXJhdGlvbiBDb250cm9sIFJlZ2lzdGVycyAqLw0KPiA+ICsjZGVmaW5lIEREUkNfUEVSRl9DTlRf U1RBUlRfT1BfQ1RSTAkweDgwMjgNCj4gPiArI2RlZmluZSBTVEFSVF9PUF9DVFJMX1ZBTF9TVEFS VAkJMHgxVUxMDQo+ID4gKyNkZWZpbmUgU1RBUlRfT1BfQ1RSTF9WQUxfQUNUSVZFCTB4Mg0KPiA+ ICsNCj4gPiArLyogUGVyZm9ybWFuY2UgQ291bnRlcnMgRW5kIE9wZXJhdGlvbiBDb250cm9sIFJl Z2lzdGVycyAqLw0KPiA+ICsjZGVmaW5lIEREUkNfUEVSRl9DTlRfRU5EX09QX0NUUkwJMHg4MDMw DQo+ID4gKyNkZWZpbmUgRU5EX09QX0NUUkxfVkFMX0VORAkJMHgxVUxMDQo+ID4gKw0KPiA+ICsv KiBQZXJmb3JtYW5jZSBDb3VudGVycyBFbmQgU3RhdHVzIFJlZ2lzdGVycyAqLw0KPiA+ICsjZGVm aW5lIEREUkNfUEVSRl9DTlRfRU5EX1NUQVRVUwkJMHg4MDM4DQo+ID4gKyNkZWZpbmUgRU5EX1NU QVRVU19WQUxfRU5EX1RJTUVSX01PREVfRU5ECTB4MQ0KPiA+ICsNCj4gPiArLyogUGVyZm9ybWFu Y2UgQ291bnRlcnMgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMgKi8NCj4gPiArI2RlZmluZSBERFJD X1BFUkZfQ0ZHX0JBU0UJCTB4ODA0MA0KPiA+ICsNCj4gPiArLyogOCBHZW5lcmljIGV2ZW50IGNv dW50ZXIgKyAyIGZpeGVkIGV2ZW50IGNvdW50ZXJzICovDQo+ID4gKyNkZWZpbmUgRERSQ19QRVJG X05VTV9HRU5fQ09VTlRFUlMJOA0KPiA+ICsjZGVmaW5lIEREUkNfUEVSRl9OVU1fRklYX0NPVU5U RVJTCTINCj4gPiArI2RlZmluZSBERFJDX1BFUkZfUkVBRF9DT1VOVEVSX0lEWA0KPiAJRERSQ19Q RVJGX05VTV9HRU5fQ09VTlRFUlMNCj4gPiArI2RlZmluZSBERFJDX1BFUkZfV1JJVEVfQ09VTlRF Ul9JRFgNCj4gCShERFJDX1BFUkZfTlVNX0dFTl9DT1VOVEVSUyArIDEpDQo+ID4gKyNkZWZpbmUg RERSQ19QRVJGX05VTV9DT1VOVEVSUw0KPiAJKEREUkNfUEVSRl9OVU1fR0VOX0NPVU5URVJTICsg XA0KPiA+ICsJCQkJCSBERFJDX1BFUkZfTlVNX0ZJWF9DT1VOVEVSUykNCj4gPiArDQo+ID4gKy8q IEdlbmVyaWMgZXZlbnQgY291bnRlciByZWdpc3RlcnMgKi8NCj4gPiArI2RlZmluZSBERFJDX1BF UkZfQ0ZHKG4pCQkoRERSQ19QRVJGX0NGR19CQVNFICsgOCAqIChuKSkNCj4gPiArI2RlZmluZSBF VkVOVF9FTkFCTEUJCQlCSVRfVUxMKDYzKQ0KPiA+ICsNCj4gPiArLyogVHdvIGRlZGljYXRlZCBl dmVudCBjb3VudGVycyBmb3IgRERSIHJlYWRzIGFuZCB3cml0ZXMgKi8NCj4gPiArI2RlZmluZSBF VkVOVF9ERFJfUkVBRFMJCQkxMDENCj4gPiArI2RlZmluZSBFVkVOVF9ERFJfV1JJVEVTCQkxMDAN Cj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIHByb2dyYW1tYWJsZSBldmVudHMgSURzIGluIHByb2dy YW1tYWJsZSBldmVudCBjb3VudGVycy4NCj4gPiArICogRE8gTk9UIGNoYW5nZSB0aGVzZSBldmVu dC1pZCBudW1iZXJzLCB0aGV5IGFyZSB1c2VkIHRvDQo+ID4gKyAqIHByb2dyYW0gZXZlbnQgYml0 bWFwIGluIGgvdy4NCj4gPiArICovDQo+ID4gKyNkZWZpbmUgRVZFTlRfT1BfSVNfWlFMQVRDSAkJ CTU1DQo+ID4gKyNkZWZpbmUgRVZFTlRfT1BfSVNfWlFTVEFSVAkJCTU0DQo+ID4gKyNkZWZpbmUg RVZFTlRfT1BfSVNfVENSX01SUgkJCTUzDQo+ID4gKyNkZWZpbmUgRVZFTlRfT1BfSVNfRFFTT1ND X01SUgkJCTUyDQo+ID4gKyNkZWZpbmUgRVZFTlRfT1BfSVNfRFFTT1NDX01QQwkJCTUxDQo+ID4g KyNkZWZpbmUgRVZFTlRfVklTSUJMRV9XSU5fTElNSVRfUkVBQ0hFRF9XUgk1MA0KPiA+ICsjZGVm aW5lIEVWRU5UX1ZJU0lCTEVfV0lOX0xJTUlUX1JFQUNIRURfUkQJNDkNCj4gPiArI2RlZmluZSBF VkVOVF9CU01fU1RBUlZBVElPTgkJCTQ4DQo+ID4gKyNkZWZpbmUgRVZFTlRfQlNNX0FMTE9DCQkJ CTQ3DQo+ID4gKyNkZWZpbmUgRVZFTlRfTFBSX1JFUV9XSVRIX05PQ1JFRElUCQk0Ng0KPiA+ICsj ZGVmaW5lIEVWRU5UX0hQUl9SRVFfV0lUSF9OT0NSRURJVAkJNDUNCj4gPiArI2RlZmluZSBFVkVO VF9PUF9JU19aUUNTCQkJNDQNCj4gPiArI2RlZmluZSBFVkVOVF9PUF9JU19aUUNMCQkJNDMNCj4g PiArI2RlZmluZSBFVkVOVF9PUF9JU19MT0FEX01PREUJCQk0Mg0KPiA+ICsjZGVmaW5lIEVWRU5U X09QX0lTX1NQRUNfUkVGCQkJNDENCj4gPiArI2RlZmluZSBFVkVOVF9PUF9JU19DUklUX1JFRgkJ CTQwDQo+ID4gKyNkZWZpbmUgRVZFTlRfT1BfSVNfUkVGUkVTSAkJCTM5DQo+ID4gKyNkZWZpbmUg RVZFTlRfT1BfSVNfRU5URVJfTVBTTQkJCTM1DQo+ID4gKyNkZWZpbmUgRVZFTlRfT1BfSVNfRU5U RVJfUE9XRVJET1dOCQkzMQ0KPiA+ICsjZGVmaW5lIEVWRU5UX09QX0lTX0VOVEVSX1NFTEZSRUYJ CTI3DQo+ID4gKyNkZWZpbmUgRVZFTlRfV0FXX0hBWkFSRAkJCTI2DQo+ID4gKyNkZWZpbmUgRVZF TlRfUkFXX0hBWkFSRAkJCTI1DQo+ID4gKyNkZWZpbmUgRVZFTlRfV0FSX0hBWkFSRAkJCTI0DQo+ ID4gKyNkZWZpbmUgRVZFTlRfV1JJVEVfQ09NQklORQkJCTIzDQo+ID4gKyNkZWZpbmUgRVZFTlRf UkRXUl9UUkFOU0lUSU9OUwkJCTIyDQo+ID4gKyNkZWZpbmUgRVZFTlRfUFJFQ0hBUkdFX0ZPUl9P VEhFUgkJMjENCj4gPiArI2RlZmluZSBFVkVOVF9QUkVDSEFSR0VfRk9SX1JEV1IJCTIwDQo+ID4g KyNkZWZpbmUgRVZFTlRfT1BfSVNfUFJFQ0hBUkdFCQkJMTkNCj4gPiArI2RlZmluZSBFVkVOVF9P UF9JU19NV1IJCQkJMTgNCj4gPiArI2RlZmluZSBFVkVOVF9PUF9JU19XUgkJCQkxNw0KPiA+ICsj ZGVmaW5lIEVWRU5UX09QX0lTX1JECQkJCTE2DQo+ID4gKyNkZWZpbmUgRVZFTlRfT1BfSVNfUkRf QUNUSVZBVEUJCQkxNQ0KPiA+ICsjZGVmaW5lIEVWRU5UX09QX0lTX1JEX09SX1dSCQkJMTQNCj4g PiArI2RlZmluZSBFVkVOVF9PUF9JU19BQ1RJVkFURQkJCTEzDQo+ID4gKyNkZWZpbmUgRVZFTlRf V1JfWEFDVF9XSEVOX0NSSVRJQ0FMCQkxMg0KPiA+ICsjZGVmaW5lIEVWRU5UX0xQUl9YQUNUX1dI RU5fQ1JJVElDQUwJCTExDQo+ID4gKyNkZWZpbmUgRVZFTlRfSFBSX1hBQ1RfV0hFTl9DUklUSUNB TAkJMTANCj4gPiArI2RlZmluZSBFVkVOVF9ERklfUkRfREFUQV9DWUNMRVMJCTkNCj4gPiArI2Rl ZmluZSBFVkVOVF9ERklfV1JfREFUQV9DWUNMRVMJCTgNCj4gPiArI2RlZmluZSBFVkVOVF9BQ1Rf QllQQVNTCQkJNw0KPiA+ICsjZGVmaW5lIEVWRU5UX1JFQURfQllQQVNTCQkJNg0KPiA+ICsjZGVm aW5lIEVWRU5UX0hJRl9ISV9QUklfUkQJCQk1DQo+ID4gKyNkZWZpbmUgRVZFTlRfSElGX1JNVwkJ CQk0DQo+ID4gKyNkZWZpbmUgRVZFTlRfSElGX1JECQkJCTMNCj4gPiArI2RlZmluZSBFVkVOVF9I SUZfV1IJCQkJMg0KPiA+ICsjZGVmaW5lIEVWRU5UX0hJRl9SRF9PUl9XUgkJCTENCj4gPiArDQo+ ID4gKy8qIEV2ZW50IGNvdW50ZXIgdmFsdWUgcmVnaXN0ZXJzICovDQo+ID4gKyNkZWZpbmUgRERS Q19QRVJGX0NOVF9WQUxVRV9CQVNFCQkweDgwODANCj4gPiArI2RlZmluZSBERFJDX1BFUkZfQ05U X1ZBTFVFKG4pCShERFJDX1BFUkZfQ05UX1ZBTFVFX0JBU0UgKyA4ICogKG4pKQ0KPiA+ICsNCj4g PiArLyogRml4ZWQgZXZlbnQgY291bnRlciBlbmFibGUvZGlzYWJsZSByZWdpc3RlciAqLw0KPiA+ ICsjZGVmaW5lIEREUkNfUEVSRl9DTlRfRlJFRVJVTl9FTgkweDgwQzANCj4gPiArI2RlZmluZSBE RFJDX1BFUkZfRlJFRVJVTl9XUklURV9FTgkweDENCj4gPiArI2RlZmluZSBERFJDX1BFUkZfRlJF RVJVTl9SRUFEX0VOCTB4Mg0KPiA+ICsNCj4gPiArLyogRml4ZWQgZXZlbnQgY291bnRlciBjb250 cm9sIHJlZ2lzdGVyICovDQo+ID4gKyNkZWZpbmUgRERSQ19QRVJGX0NOVF9GUkVFUlVOX0NUUkwJ MHg4MEM4DQo+ID4gKyNkZWZpbmUgRERSQ19GUkVFUlVOX1dSSVRFX0NOVF9DTFIJMHgxDQo+ID4g KyNkZWZpbmUgRERSQ19GUkVFUlVOX1JFQURfQ05UX0NMUgkweDINCj4gPiArDQo+ID4gKy8qIEZp eGVkIGV2ZW50IGNvdW50ZXIgdmFsdWUgcmVnaXN0ZXIgKi8NCj4gPiArI2RlZmluZSBERFJDX1BF UkZfQ05UX1ZBTFVFX1dSX09QCTB4ODBEMA0KPiA+ICsjZGVmaW5lIEREUkNfUEVSRl9DTlRfVkFM VUVfUkRfT1AJMHg4MEQ4DQo+ID4gKyNkZWZpbmUgRERSQ19QRVJGX0NOVF9WQUxVRV9PVkVSRkxP VwlCSVRfVUxMKDQ4KQ0KPiA+ICsjZGVmaW5lIEREUkNfUEVSRl9DTlRfTUFYX1ZBTFVFCQlHRU5N QVNLX1VMTCg0OCwgMCkNCj4gPiArDQo+ID4gK3N0cnVjdCBjbjEwa19kZHJfcG11IHsNCj4gPiAr CXN0cnVjdCBwbXUgcG11Ow0KPiA+ICsJaW50IGlkOw0KPiA+ICsJdm9pZCBfX2lvbWVtICpiYXNl Ow0KPiA+ICsJdW5zaWduZWQgaW50IGNwdTsNCj4gPiArCXN0cnVjdAlkZXZpY2UgKmRldjsNCj4g PiArCWludCBhY3RpdmVfZXZlbnRzOw0KPiA+ICsJc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50c1tE RFJDX1BFUkZfTlVNX0NPVU5URVJTXTsgfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgdG9fY24xMGtf ZGRyX3BtdShwKQljb250YWluZXJfb2YocCwgc3RydWN0IGNuMTBrX2Rkcl9wbXUsDQo+IHBtdSkN Cj4gPiArDQo+ID4gK3N0YXRpYyBzc2l6ZV90IGNuMTBrX2Rkcl9wbXVfZXZlbnRfc2hvdyhzdHJ1 Y3QgZGV2aWNlICpkZXYsDQo+ID4gKwkJCQkJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs DQo+ID4gKwkJCQkJY2hhciAqcGFnZSkNCj4gPiArew0KPiA+ICsJc3RydWN0IHBlcmZfcG11X2V2 ZW50c19hdHRyICpwbXVfYXR0cjsNCj4gPiArDQo+ID4gKwlwbXVfYXR0ciA9IGNvbnRhaW5lcl9v ZihhdHRyLCBzdHJ1Y3QgcGVyZl9wbXVfZXZlbnRzX2F0dHIsIGF0dHIpOw0KPiA+ICsJcmV0dXJu IHNwcmludGYocGFnZSwgImV2ZW50PTB4JTAybGx4XG4iLCBwbXVfYXR0ci0+aWQpOyB9DQo+ID4g Kw0KPiA+ICsjZGVmaW5lIENOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihfbmFtZSwgX2lkKQ0KPiAJ ICAgICBcDQo+ID4gKwlQTVVfRVZFTlRfQVRUUl9JRChfbmFtZSwgY24xMGtfZGRyX3BtdV9ldmVu dF9zaG93LCBfaWQpDQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY24xMGtf ZGRyX3BlcmZfZXZlbnRzX2F0dHJzW10gPSB7DQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FU VFIoZGRyX2hpZl9yZF9vcl93cl9hY2Nlc3MsDQo+IEVWRU5UX0hJRl9SRF9PUl9XUiksDQo+ID4g KwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2hpZl93cl9hY2Nlc3MsIEVWRU5UX0hJRl9X UiksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2hpZl9yZF9hY2Nlc3MsIEVW RU5UX0hJRl9SRCksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2hpZl9ybXdf YWNjZXNzLA0KPiBFVkVOVF9ISUZfUk1XKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRU UihkZHJfaGlmX3ByaV9yZGFjY2VzcywNCj4gRVZFTlRfSElGX0hJX1BSSV9SRCksDQo+ID4gKwlD TjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX3JkX2J5cGFzc19hY2Nlc3MsDQo+IEVWRU5UX1JF QURfQllQQVNTKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfYWN0X2J5cGFz c19hY2Nlc3MsDQo+IEVWRU5UX0FDVF9CWVBBU1MpLA0KPiA+ICsJQ04xMEtfRERSX1BNVV9FVkVO VF9BVFRSKGRkcl9kaWZfd3JfZGF0YV9hY2Nlc3MsDQo+IEVWRU5UX0RGSV9XUl9EQVRBX0NZQ0xF UyksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2RpZl9yZF9kYXRhX2FjY2Vz cywNCj4gRVZFTlRfREZJX1JEX0RBVEFfQ1lDTEVTKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZF TlRfQVRUUihkZHJfaHByaV9zY2hlZF9yZF9jcml0X2FjY2VzcywNCj4gPiArCQkJCQlFVkVOVF9I UFJfWEFDVF9XSEVOX0NSSVRJQ0FMKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihk ZHJfbHByaV9zY2hlZF9yZF9jcml0X2FjY2VzcywNCj4gPiArCQkJCQlFVkVOVF9MUFJfWEFDVF9X SEVOX0NSSVRJQ0FMKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfd3JfdHJ4 bl9jcml0X2FjY2VzcywNCj4gPiArCQkJCQlFVkVOVF9XUl9YQUNUX1dIRU5fQ1JJVElDQUwpLA0K PiA+ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRkcl9jYW1fYWN0aXZlX2FjY2VzcywNCj4g RVZFTlRfT1BfSVNfQUNUSVZBVEUpLA0KPiA+ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRk cl9jYW1fcmRfb3Jfd3JfYWNjZXNzLA0KPiBFVkVOVF9PUF9JU19SRF9PUl9XUiksDQo+ID4gKwlD TjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2NhbV9yZF9hY3RpdmVfYWNjZXNzLA0KPiBFVkVO VF9PUF9JU19SRF9BQ1RJVkFURSksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRy X2NhbV9yZWFkLCBFVkVOVF9PUF9JU19SRCksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FU VFIoZGRyX2NhbV93cml0ZSwgRVZFTlRfT1BfSVNfV1IpLA0KPiA+ICsJQ04xMEtfRERSX1BNVV9F VkVOVF9BVFRSKGRkcl9jYW1fbXdyLCBFVkVOVF9PUF9JU19NV1IpLA0KPiA+ICsJQ04xMEtfRERS X1BNVV9FVkVOVF9BVFRSKGRkcl9wcmVjaGFyZ2UsDQo+IEVWRU5UX09QX0lTX1BSRUNIQVJHRSks DQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX3ByZWNoYXJnZV9mb3JfcmR3ciwN Cj4gRVZFTlRfUFJFQ0hBUkdFX0ZPUl9SRFdSKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRf QVRUUihkZHJfcHJlY2hhcmdlX2Zvcl9vdGhlciwNCj4gPiArCQkJCQlFVkVOVF9QUkVDSEFSR0Vf Rk9SX09USEVSKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfcmR3cl90cmFu c2l0aW9ucywNCj4gRVZFTlRfUkRXUl9UUkFOU0lUSU9OUyksDQo+ID4gKwlDTjEwS19ERFJfUE1V X0VWRU5UX0FUVFIoZGRyX3dyaXRlX2NvbWJpbmUsDQo+IEVWRU5UX1dSSVRFX0NPTUJJTkUpLA0K PiA+ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRkcl93YXJfaGF6YXJkLA0KPiBFVkVOVF9X QVJfSEFaQVJEKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfcmF3X2hhemFy ZCwNCj4gRVZFTlRfUkFXX0hBWkFSRCksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIo ZGRyX3dhd19oYXphcmQsDQo+IEVWRU5UX1dBV19IQVpBUkQpLA0KPiA+ICsJQ04xMEtfRERSX1BN VV9FVkVOVF9BVFRSKGRkcl9lbnRlcl9zZWxmcmVmLA0KPiBFVkVOVF9PUF9JU19FTlRFUl9TRUxG UkVGKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfZW50ZXJfcG93ZXJkb3du LA0KPiBFVkVOVF9PUF9JU19FTlRFUl9QT1dFUkRPV04pLA0KPiA+ICsJQ04xMEtfRERSX1BNVV9F VkVOVF9BVFRSKGRkcl9lbnRlcl9tcHNtLA0KPiBFVkVOVF9PUF9JU19FTlRFUl9NUFNNKSwNCj4g PiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfcmVmcmVzaCwgRVZFTlRfT1BfSVNfUkVG UkVTSCksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2NyaXRfcmVmLCBFVkVO VF9PUF9JU19DUklUX1JFRiksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX3Nw ZWNfcmVmLCBFVkVOVF9PUF9JU19TUEVDX1JFRiksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5U X0FUVFIoZGRyX2xvYWRfbW9kZSwNCj4gRVZFTlRfT1BfSVNfTE9BRF9NT0RFKSwNCj4gPiArCUNO MTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfenFjbCwgRVZFTlRfT1BfSVNfWlFDTCksDQo+ID4g KwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2NhbV93cl9hY2Nlc3MsDQo+IEVWRU5UX09Q X0lTX1pRQ1MpLA0KPiA+ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRkcl9ocHJfcmVxX3dp dGhfbm9jcmVkaXQsDQo+ID4gKwkJCQkJRVZFTlRfSFBSX1JFUV9XSVRIX05PQ1JFRElUKSwNCj4g PiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfbHByX3JlcV93aXRoX25vY3JlZGl0LA0K PiA+ICsJCQkJCUVWRU5UX0xQUl9SRVFfV0lUSF9OT0NSRURJVCksDQo+ID4gKwlDTjEwS19ERFJf UE1VX0VWRU5UX0FUVFIoZGRyX2JzbV9hbGxvYywgRVZFTlRfQlNNX0FMTE9DKSwNCj4gPiArCUNO MTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfYnNtX3N0YXJ2YXRpb24sDQo+IEVWRU5UX0JTTV9T VEFSVkFUSU9OKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfd2luX2xpbWl0 X3JlYWNoZWRfcmQsDQo+ID4gKw0KPiAJRVZFTlRfVklTSUJMRV9XSU5fTElNSVRfUkVBQ0hFRF9S RCksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX3dpbl9saW1pdF9yZWFjaGVk X3dyLA0KPiA+ICsNCj4gCUVWRU5UX1ZJU0lCTEVfV0lOX0xJTUlUX1JFQUNIRURfV1IpLA0KPiA+ ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRkcl9kcXNvc2NfbXBjLA0KPiBFVkVOVF9PUF9J U19EUVNPU0NfTVBDKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfZHFzb3Nj X21yciwNCj4gRVZFTlRfT1BfSVNfRFFTT1NDX01SUiksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VW RU5UX0FUVFIoZGRyX3Rjcl9tcnIsIEVWRU5UX09QX0lTX1RDUl9NUlIpLA0KPiA+ICsJQ04xMEtf RERSX1BNVV9FVkVOVF9BVFRSKGRkcl96cXN0YXJ0LCBFVkVOVF9PUF9JU19aUVNUQVJUKSwNCj4g PiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfenFsYXRjaCwgRVZFTlRfT1BfSVNfWlFM QVRDSCksDQo+ID4gKwkvKiBGcmVlIHJ1biBldmVudCBjb3VudGVycyAqLw0KPiA+ICsJQ04xMEtf RERSX1BNVV9FVkVOVF9BVFRSKGRkcl9kZHJfcmVhZHMsIEVWRU5UX0REUl9SRUFEUyksDQo+ID4g KwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2Rkcl93cml0ZXMsIEVWRU5UX0REUl9XUklU RVMpLA0KPiA+ICsJTlVMTCwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgYXR0 cmlidXRlX2dyb3VwIGNuMTBrX2Rkcl9wZXJmX2V2ZW50c19hdHRyX2dyb3VwID0gew0KPiA+ICsJ Lm5hbWUgPSAiZXZlbnRzIiwNCj4gPiArCS5hdHRycyA9IGNuMTBrX2Rkcl9wZXJmX2V2ZW50c19h dHRycywgfTsNCj4gPiArDQo+ID4gK1BNVV9GT1JNQVRfQVRUUihldmVudCwgImNvbmZpZzowLTgi KTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjbjEwa19kZHJfcGVyZl9m b3JtYXRfYXR0cnNbXSA9IHsNCj4gPiArCSZmb3JtYXRfYXR0cl9ldmVudC5hdHRyLA0KPiA+ICsJ TlVMTCwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3Vw IGNuMTBrX2Rkcl9wZXJmX2Zvcm1hdF9hdHRyX2dyb3VwID0gew0KPiA+ICsJLm5hbWUgPSAiZm9y bWF0IiwNCj4gPiArCS5hdHRycyA9IGNuMTBrX2Rkcl9wZXJmX2Zvcm1hdF9hdHRycywgfTsNCj4g PiArDQo+ID4gK3N0YXRpYyBzc2l6ZV90IGNuMTBrX2Rkcl9wZXJmX2NwdW1hc2tfc2hvdyhzdHJ1 Y3QgZGV2aWNlICpkZXYsDQo+ID4gKwkJCQkJICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0 dHIsDQo+ID4gKwkJCQkJICAgY2hhciAqYnVmKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgY24xMGtf ZGRyX3BtdSAqcG11ID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ID4gKw0KPiA+ICsJcmV0dXJu IGNwdW1hcF9wcmludF90b19wYWdlYnVmKHRydWUsIGJ1ZiwgY3B1bWFza19vZihwbXUtPmNwdSkp OyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgY24xMGtfZGRy X3BlcmZfY3B1bWFza19hdHRyID0NCj4gPiArCV9fQVRUUihjcHVtYXNrLCAwNDQ0LCBjbjEwa19k ZHJfcGVyZl9jcHVtYXNrX3Nob3csIE5VTEwpOw0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBh dHRyaWJ1dGUgKmNuMTBrX2Rkcl9wZXJmX2NwdW1hc2tfYXR0cnNbXSA9IHsNCj4gPiArCSZjbjEw a19kZHJfcGVyZl9jcHVtYXNrX2F0dHIuYXR0ciwNCj4gPiArCU5VTEwsDQo+ID4gK307DQo+ID4g Kw0KPiA+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBjbjEwa19kZHJfcGVyZl9jcHVt YXNrX2F0dHJfZ3JvdXAgPSB7DQo+ID4gKwkuYXR0cnMgPSBjbjEwa19kZHJfcGVyZl9jcHVtYXNr X2F0dHJzLCB9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3Jv dXAgKmNuMTBrX2F0dHJfZ3JvdXBzW10gPSB7DQo+ID4gKwkmY24xMGtfZGRyX3BlcmZfZXZlbnRz X2F0dHJfZ3JvdXAsDQo+ID4gKwkmY24xMGtfZGRyX3BlcmZfZm9ybWF0X2F0dHJfZ3JvdXAsDQo+ ID4gKwkmY24xMGtfZGRyX3BlcmZfY3B1bWFza19hdHRyX2dyb3VwLA0KPiA+ICsJTlVMTCwNCj4g PiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyB1aW50NjRfdCBkZHJfcGVyZl9nZXRfZXZlbnRfYml0 bWFwKGludCBldmVudGlkKSB7DQo+ID4gKwl1aW50NjRfdCBldmVudF9iaXRtYXAgPSAwOw0KPiA+ ICsNCj4gPiArCXN3aXRjaCAoZXZlbnRpZCkgew0KPiA+ICsJY2FzZSBFVkVOVF9ISUZfUkRfT1Jf V1IgLi4uIEVWRU5UX1dBV19IQVpBUkQ6DQo+ID4gKwljYXNlIEVWRU5UX09QX0lTX1JFRlJFU0gg Li4uIEVWRU5UX09QX0lTX1pRTEFUQ0g6DQo+ID4gKwkJZXZlbnRfYml0bWFwID0gKDFVTEwgPDwg KGV2ZW50aWQgLSAxKSk7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKw0KPiA+ICsJY2FzZSBFVkVOVF9P UF9JU19FTlRFUl9TRUxGUkVGOg0KPiA+ICsJY2FzZSBFVkVOVF9PUF9JU19FTlRFUl9QT1dFUkRP V046DQo+ID4gKwljYXNlIEVWRU5UX09QX0lTX0VOVEVSX01QU006DQo+ID4gKwkJZXZlbnRfYml0 bWFwID0gKDB4RlVMTCA8PCAoZXZlbnRpZCAtIDEpKTsNCj4gPiArCQlicmVhazsNCj4gPiArCWRl ZmF1bHQ6DQo+ID4gKwkJcHJfZXJyKCIlcyBJbnZhbGlkIGV2ZW50aWQgJWRcbiIsIF9fZnVuY19f LCBldmVudGlkKTsNCj4gPiArCQlicmVhazsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4g ZXZlbnRfYml0bWFwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNuMTBrX2Rkcl9w ZXJmX2FsbG9jX2NvdW50ZXIoc3RydWN0IGNuMTBrX2Rkcl9wbXUgKnBtdSwNCj4gPiArCQkJCQlz dHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpDQo+ID4gK3sNCj4gPiArCXVpbnQ4X3QgY29uZmlnID0g ZXZlbnQtPmF0dHIuY29uZmlnOw0KPiA+ICsJaW50IGk7DQo+ID4gKw0KPiA+ICsJLyogRERSIHJl YWQgZnJlZS1ydW4gY291bnRlciBpbmRleCAqLw0KPiA+ICsJaWYgKGNvbmZpZyA9PSBFVkVOVF9E RFJfUkVBRFMpIHsNCj4gPiArCQlwbXUtPmV2ZW50c1tERFJDX1BFUkZfUkVBRF9DT1VOVEVSX0lE WF0gPSBldmVudDsNCj4gPiArCQlyZXR1cm4gRERSQ19QRVJGX1JFQURfQ09VTlRFUl9JRFg7DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogRERSIHdyaXRlIGZyZWUtcnVuIGNvdW50ZXIgaW5kZXgg Ki8NCj4gPiArCWlmIChjb25maWcgPT0gRVZFTlRfRERSX1dSSVRFUykgew0KPiA+ICsJCXBtdS0+ ZXZlbnRzW0REUkNfUEVSRl9XUklURV9DT1VOVEVSX0lEWF0gPSBldmVudDsNCj4gPiArCQlyZXR1 cm4gRERSQ19QRVJGX1dSSVRFX0NPVU5URVJfSURYOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8q IEFsbG9jYXRlIEREUiBnZW5lcmljIGNvdW50ZXJzICovDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwg RERSQ19QRVJGX05VTV9HRU5fQ09VTlRFUlM7IGkrKykgew0KPiA+ICsJCWlmIChwbXUtPmV2ZW50 c1tpXSA9PSBOVUxMKSB7DQo+ID4gKwkJCXBtdS0+ZXZlbnRzW2ldID0gZXZlbnQ7DQo+ID4gKwkJ CXJldHVybiBpOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gLUVOT0VO VDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgY24xMGtfZGRyX3BlcmZfZnJlZV9j b3VudGVyKHN0cnVjdCBjbjEwa19kZHJfcG11ICpwbXUsDQo+ID4gK2ludCBjb3VudGVyKSB7DQo+ ID4gKwlwbXUtPmV2ZW50c1tjb3VudGVyXSA9IE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0 YXRpYyBpbnQgY24xMGtfZGRyX3BlcmZfZXZlbnRfaW5pdChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZl bnQpIHsNCj4gPiArCXN0cnVjdCBjbjEwa19kZHJfcG11ICpwbXUgPSB0b19jbjEwa19kZHJfcG11 KGV2ZW50LT5wbXUpOw0KPiA+ICsJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+ aHc7DQo+ID4gKw0KPiA+ICsJaWYgKGV2ZW50LT5hdHRyLnR5cGUgIT0gZXZlbnQtPnBtdS0+dHlw ZSkNCj4gPiArCQlyZXR1cm4gLUVOT0VOVDsNCj4gPiArDQo+ID4gKwlpZiAoaXNfc2FtcGxpbmdf ZXZlbnQoZXZlbnQpKSB7DQo+ID4gKwkJZGV2X2luZm8ocG11LT5kZXYsICJTYW1wbGluZyBub3Qg c3VwcG9ydGVkIVxuIik7DQo+ID4gKwkJcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCWlmIChldmVudC0+Y3B1IDwgMCkgew0KPiA+ICsJCWRldl93YXJuKHBtdS0+ZGV2 LCAiQ2FuJ3QgcHJvdmlkZSBwZXItdGFzayBkYXRhIVxuIik7DQo+ID4gKwkJcmV0dXJuIC1FT1BO T1RTVVBQOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qICBXZSBtdXN0IE5PVCBjcmVhdGUgZ3Jv dXBzIGNvbnRhaW5pbmcgbWl4ZWQgUE1VcyAqLw0KPiA+ICsJaWYgKGV2ZW50LT5ncm91cF9sZWFk ZXItPnBtdSAhPSBldmVudC0+cG11ICYmDQo+ID4gKwkJCSFpc19zb2Z0d2FyZV9ldmVudChldmVu dC0+Z3JvdXBfbGVhZGVyKSkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwkv KiBTZXQgb3duZXJzaGlwIG9mIGV2ZW50IHRvIG9uZSBDUFUsIHNhbWUgZXZlbnQgY2FuIG5vdCBi ZSBvYnNlcnZlZA0KPiA+ICsJICogb24gbXVsdGlwbGUgY3B1cyBhdCBzYW1lIHRpbWUuDQo+ID4g KwkgKi8NCj4gPiArCWV2ZW50LT5jcHUgPSBwbXUtPmNwdTsNCj4gPiArCWh3Yy0+aWR4ID0gLTE7 DQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgY24xMGtf ZGRyX3BlcmZfY291bnRlcl9lbmFibGUoc3RydWN0IGNuMTBrX2Rkcl9wbXUgKnBtdSwNCj4gPiAr CQkJCQkgIGludCBjb3VudGVyLCBib29sIGVuYWJsZSkNCj4gPiArew0KPiA+ICsJdWludDMyX3Qg cmVnOw0KPiA+ICsJdWludDY0X3QgdmFsOw0KPiA+ICsNCj4gPiArCWlmIChjb3VudGVyID4gRERS Q19QRVJGX05VTV9DT1VOVEVSUykgew0KPiA+ICsJCXByX2VycigiRXJyb3I6IHVuc3VwcG9ydGVk IGNvdW50ZXIgJWRcbiIsIGNvdW50ZXIpOw0KPiA+ICsJCXJldHVybjsNCj4gPiArCX0NCj4gPiAr DQo+ID4gKwlpZiAoY291bnRlciA8IEREUkNfUEVSRl9OVU1fR0VOX0NPVU5URVJTKSB7DQo+ID4g KwkJcmVnID0gRERSQ19QRVJGX0NGRyhjb3VudGVyKTsNCj4gPiArCQl2YWwgPSByZWFkcV9yZWxh eGVkKHBtdS0+YmFzZSArIHJlZyk7DQo+ID4gKw0KPiA+ICsJCWlmIChlbmFibGUpDQo+ID4gKwkJ CXZhbCB8PSBFVkVOVF9FTkFCTEU7DQo+ID4gKwkJZWxzZQ0KPiA+ICsJCQl2YWwgJj0gfkVWRU5U X0VOQUJMRTsNCj4gPiArDQo+ID4gKwkJd3JpdGVxX3JlbGF4ZWQodmFsLCBwbXUtPmJhc2UgKyBy ZWcpOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQl2YWwgPSByZWFkcV9yZWxheGVkKHBtdS0+YmFz ZSArDQo+IEREUkNfUEVSRl9DTlRfRlJFRVJVTl9FTik7DQo+ID4gKwkJaWYgKGVuYWJsZSkgew0K PiA+ICsJCQlpZiAoY291bnRlciA9PSBERFJDX1BFUkZfUkVBRF9DT1VOVEVSX0lEWCkNCj4gPiAr CQkJCXZhbCB8PSBERFJDX1BFUkZfRlJFRVJVTl9SRUFEX0VOOw0KPiA+ICsJCQllbHNlDQo+ID4g KwkJCQl2YWwgfD0gRERSQ19QRVJGX0ZSRUVSVU5fV1JJVEVfRU47DQo+ID4gKwkJfSBlbHNlIHsN Cj4gPiArCQkJaWYgKGNvdW50ZXIgPT0gRERSQ19QRVJGX1JFQURfQ09VTlRFUl9JRFgpDQo+ID4g KwkJCQl2YWwgJj0gfkREUkNfUEVSRl9GUkVFUlVOX1JFQURfRU47DQo+ID4gKwkJCWVsc2UNCj4g PiArCQkJCXZhbCAmPSB+RERSQ19QRVJGX0ZSRUVSVU5fV1JJVEVfRU47DQo+ID4gKwkJfQ0KPiA+ ICsJCXdyaXRlcV9yZWxheGVkKHZhbCwgcG11LT5iYXNlICsNCj4gRERSQ19QRVJGX0NOVF9GUkVF UlVOX0VOKTsNCj4gPiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHVpbnQ2NF90IGNu MTBrX2Rkcl9wZXJmX3JlYWRfY291bnRlcihzdHJ1Y3QgY24xMGtfZGRyX3BtdSAqcG11LA0KPiA+ ICsJCQkJCSAgICBpbnQgY291bnRlcikNCj4gPiArew0KPiA+ICsJdWludDY0X3QgdmFsOw0KPiA+ ICsNCj4gPiArCWlmIChjb3VudGVyID09IEREUkNfUEVSRl9SRUFEX0NPVU5URVJfSURYKQ0KPiA+ ICsJCXJldHVybiByZWFkcV9yZWxheGVkKHBtdS0+YmFzZSArDQo+IEREUkNfUEVSRl9DTlRfVkFM VUVfUkRfT1ApOw0KPiA+ICsNCj4gPiArCWlmIChjb3VudGVyID09IEREUkNfUEVSRl9XUklURV9D T1VOVEVSX0lEWCkNCj4gPiArCQlyZXR1cm4gcmVhZHFfcmVsYXhlZChwbXUtPmJhc2UgKw0KPiBE RFJDX1BFUkZfQ05UX1ZBTFVFX1dSX09QKTsNCj4gPiArDQo+ID4gKwl2YWwgPSByZWFkcV9yZWxh eGVkKHBtdS0+YmFzZSArIEREUkNfUEVSRl9DTlRfVkFMVUUoY291bnRlcikpOw0KPiA+ICsJcmV0 dXJuIHZhbDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgY24xMGtfZGRyX3BlcmZf ZXZlbnRfdXBkYXRlKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkgew0KPiA+ICsJc3RydWN0IGNu MTBrX2Rkcl9wbXUgKnBtdSA9IHRvX2NuMTBrX2Rkcl9wbXUoZXZlbnQtPnBtdSk7DQo+ID4gKwlz dHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsNCj4gPiArCXVpbnQ2NF90IHBy ZXZfY291bnQsIG5ld19jb3VudCwgbWFzazsNCj4gPiArDQo+ID4gKwlkbyB7DQo+ID4gKwkJcHJl dl9jb3VudCA9IGxvY2FsNjRfcmVhZCgmaHdjLT5wcmV2X2NvdW50KTsNCj4gPiArCQluZXdfY291 bnQgPSBjbjEwa19kZHJfcGVyZl9yZWFkX2NvdW50ZXIocG11LCBod2MtPmlkeCk7DQo+ID4gKwl9 IHdoaWxlIChsb2NhbDY0X3hjaGcoJmh3Yy0+cHJldl9jb3VudCwgbmV3X2NvdW50KSAhPSBwcmV2 X2NvdW50KTsNCj4gPiArDQo+ID4gKwltYXNrID0gRERSQ19QRVJGX0NOVF9NQVhfVkFMVUU7DQo+ ID4gKw0KPiA+ICsJbG9jYWw2NF9hZGQoKG5ld19jb3VudCAtIHByZXZfY291bnQpICYgbWFzaywg JmV2ZW50LT5jb3VudCk7IH0NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGNuMTBrX2Rkcl9wZXJm X2V2ZW50X3N0YXJ0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50DQo+ID4gK2ZsYWdzKSB7 DQo+ID4gKwlzdHJ1Y3QgY24xMGtfZGRyX3BtdSAqcG11ID0gdG9fY24xMGtfZGRyX3BtdShldmVu dC0+cG11KTsNCj4gPiArCXN0cnVjdCBod19wZXJmX2V2ZW50ICpod2MgPSAmZXZlbnQtPmh3Ow0K PiA+ICsJaW50IGNvdW50ZXIgPSBod2MtPmlkeDsNCj4gPiArDQo+ID4gKwlsb2NhbDY0X3NldCgm aHdjLT5wcmV2X2NvdW50LCAwKTsNCj4gPiArDQo+ID4gKwljbjEwa19kZHJfcGVyZl9jb3VudGVy X2VuYWJsZShwbXUsIGNvdW50ZXIsIHRydWUpOw0KPiA+ICsNCj4gPiArCWh3Yy0+c3RhdGUgPSAw Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNuMTBrX2Rkcl9wZXJmX2V2ZW50X2Fk ZChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludA0KPiA+ICtmbGFncykgew0KPiA+ICsJc3Ry dWN0IGNuMTBrX2Rkcl9wbXUgKnBtdSA9IHRvX2NuMTBrX2Rkcl9wbXUoZXZlbnQtPnBtdSk7DQo+ ID4gKwlzdHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsNCj4gPiArCXVpbnQ4 X3QgY29uZmlnID0gZXZlbnQtPmF0dHIuY29uZmlnOw0KPiA+ICsJdWludDMyX3QgcmVnX29mZnNl dDsNCj4gPiArCXVpbnQ2NF90IHZhbDsNCj4gPiArCWludCBjb3VudGVyOw0KPiA+ICsNCj4gPiAr CWNvdW50ZXIgPSBjbjEwa19kZHJfcGVyZl9hbGxvY19jb3VudGVyKHBtdSwgZXZlbnQpOw0KPiA+ ICsJaWYgKGNvdW50ZXIgPCAwKSB7DQo+ID4gKwkJZGV2X2RiZyhwbXUtPmRldiwgIlRoZXJlIGFy ZSBub3QgZW5vdWdoIGNvdW50ZXJzXG4iKTsNCj4gPiArCQlyZXR1cm4gLUVPUE5PVFNVUFA7DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJcG11LT5hY3RpdmVfZXZlbnRzKys7DQo+ID4gKwlod2MtPmlk eCA9IGNvdW50ZXI7DQo+ID4gKw0KPiA+ICsJaWYgKGNvdW50ZXIgPCBERFJDX1BFUkZfTlVNX0dF Tl9DT1VOVEVSUykgew0KPiA+ICsJCS8qIEdlbmVyaWMgY291bnRlcnMsIGNvbmZpZ3VyZSBldmVu dCBpZCAqLw0KPiA+ICsJCXJlZ19vZmZzZXQgPSBERFJDX1BFUkZfQ0ZHKGNvdW50ZXIpOw0KPiA+ ICsJCXZhbCA9IGRkcl9wZXJmX2dldF9ldmVudF9iaXRtYXAoY29uZmlnKTsNCj4gPiArCQl3cml0 ZXFfcmVsYXhlZCh2YWwsIHBtdS0+YmFzZSArIHJlZ19vZmZzZXQpOw0KPiA+ICsJfSBlbHNlIHsN Cj4gPiArCQkvKiBmaXhlZCBldmVudCBjb3VudGVyLCBjbGVhciBjb3VudGVyIHZhbHVlICovDQo+ ID4gKwkJaWYgKGNvdW50ZXIgPT0gRERSQ19QRVJGX1JFQURfQ09VTlRFUl9JRFgpDQo+ID4gKwkJ CXZhbCA9IEREUkNfRlJFRVJVTl9SRUFEX0NOVF9DTFI7DQo+ID4gKwkJZWxzZQ0KPiA+ICsJCQl2 YWwgPSBERFJDX0ZSRUVSVU5fV1JJVEVfQ05UX0NMUjsNCj4gPiArDQo+ID4gKwkJd3JpdGVxX3Jl bGF4ZWQodmFsLCBwbXUtPmJhc2UgKw0KPiBERFJDX1BFUkZfQ05UX0ZSRUVSVU5fQ1RSTCk7DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJaHdjLT5zdGF0ZSB8PSBQRVJGX0hFU19TVE9QUEVEOw0KPiA+ ICsNCj4gPiArCWlmIChmbGFncyAmIFBFUkZfRUZfU1RBUlQpDQo+ID4gKwkJY24xMGtfZGRyX3Bl cmZfZXZlbnRfc3RhcnQoZXZlbnQsIGZsYWdzKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgY24xMGtfZGRyX3BlcmZfZXZlbnRfc3RvcChz dHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludA0KPiA+ICtmbGFncykgew0KPiA+ICsJc3RydWN0 IGNuMTBrX2Rkcl9wbXUgKnBtdSA9IHRvX2NuMTBrX2Rkcl9wbXUoZXZlbnQtPnBtdSk7DQo+ID4g KwlzdHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsNCj4gPiArCWludCBjb3Vu dGVyID0gaHdjLT5pZHg7DQo+ID4gKw0KPiA+ICsJY24xMGtfZGRyX3BlcmZfY291bnRlcl9lbmFi bGUocG11LCBjb3VudGVyLCBmYWxzZSk7DQo+ID4gKw0KPiA+ICsJaWYgKGZsYWdzICYgUEVSRl9F Rl9VUERBVEUpDQo+ID4gKwkJY24xMGtfZGRyX3BlcmZfZXZlbnRfdXBkYXRlKGV2ZW50KTsNCj4g PiArDQo+ID4gKwlod2MtPnN0YXRlIHw9IFBFUkZfSEVTX1NUT1BQRUQ7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyB2b2lkIGNuMTBrX2Rkcl9wZXJmX2V2ZW50X2RlbChzdHJ1Y3QgcGVyZl9l dmVudCAqZXZlbnQsIGludA0KPiA+ICtmbGFncykgew0KPiA+ICsJc3RydWN0IGNuMTBrX2Rkcl9w bXUgKnBtdSA9IHRvX2NuMTBrX2Rkcl9wbXUoZXZlbnQtPnBtdSk7DQo+ID4gKwlzdHJ1Y3QgaHdf cGVyZl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsNCj4gPiArCWludCBjb3VudGVyID0gaHdjLT5p ZHg7DQo+ID4gKw0KPiA+ICsJY24xMGtfZGRyX3BlcmZfZXZlbnRfc3RvcChldmVudCwgUEVSRl9F Rl9VUERBVEUpOw0KPiA+ICsNCj4gPiArCWNuMTBrX2Rkcl9wZXJmX2ZyZWVfY291bnRlcihwbXUs IGNvdW50ZXIpOw0KPiA+ICsJcG11LT5hY3RpdmVfZXZlbnRzLS07DQo+ID4gKwlod2MtPmlkeCA9 IC0xOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBjbjEwa19kZHJfcGVyZl9wbXVf ZW5hYmxlKHN0cnVjdCBwbXUgKnBtdSkgew0KPiA+ICsJc3RydWN0IGNuMTBrX2Rkcl9wbXUgKmRk cl9wbXUgPSB0b19jbjEwa19kZHJfcG11KHBtdSk7DQo+ID4gKw0KPiA+ICsJd3JpdGVxX3JlbGF4 ZWQoU1RBUlRfT1BfQ1RSTF9WQUxfU1RBUlQsIGRkcl9wbXUtPmJhc2UgKw0KPiA+ICsJCSAgICAg ICBERFJDX1BFUkZfQ05UX1NUQVJUX09QX0NUUkwpOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9p ZCBjbjEwa19kZHJfcGVyZl9wbXVfZGlzYWJsZShzdHJ1Y3QgcG11ICpwbXUpIHsNCj4gPiArCXN0 cnVjdCBjbjEwa19kZHJfcG11ICpkZHJfcG11ID0gdG9fY24xMGtfZGRyX3BtdShwbXUpOw0KPiA+ ICsNCj4gPiArCXdyaXRlcV9yZWxheGVkKEVORF9PUF9DVFJMX1ZBTF9FTkQsIGRkcl9wbXUtPmJh c2UgKw0KPiA+ICsJCSAgICAgICBERFJDX1BFUkZfQ05UX0VORF9PUF9DVFJMKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIGludCBjbjEwa19kZHJfcGVyZl9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KSB7DQo+ID4gKwlzdHJ1Y3QgY24xMGtfZGRyX3BtdSAqZGRyX3BtdTsN Cj4gPiArCXN0cnVjdCByZXNvdXJjZSAqcmVzOw0KPiA+ICsJdm9pZCBfX2lvbWVtICpiYXNlOw0K PiA+ICsJc3RhdGljIGludCBpbmRleDsNCj4gPiArCWNoYXIgKm5hbWU7DQo+ID4gKwlpbnQgcmV0 Ow0KPiA+ICsNCj4gPiArCWRkcl9wbXUgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9m KCpkZHJfcG11KSwgR0ZQX0tFUk5FTCk7DQo+ID4gKwlpZiAoIWRkcl9wbXUpDQo+ID4gKwkJcmV0 dXJuIC1FTk9NRU07DQo+ID4gKw0KPiA+ICsJZGRyX3BtdS0+ZGV2ID0gJnBkZXYtPmRldjsNCj4g PiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGRkcl9wbXUpOw0KPiA+ICsNCj4gPiArCXJl cyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQo+ID4g KwliYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7DQo+ID4gKwlp ZiAoSVNfRVJSKGJhc2UpKQ0KPiA+ICsJCXJldHVybiBQVFJfRVJSKGJhc2UpOw0KPiA+ICsNCj4g PiArCWRkcl9wbXUtPmJhc2UgPSBiYXNlOw0KPiA+ICsNCj4gPiArCS8qIFNldHVwIHRoZSBQTVUg Y291bnRlciB0byB3b3JrIGluIG1hbm51YWwgbW9kZSAqLw0KPiA+ICsJd3JpdGVxX3JlbGF4ZWQo T1BfTU9ERV9DVFJMX1ZBTF9NQU5OVUFMLCBkZHJfcG11LT5iYXNlICsNCj4gPiArCQkgICAgICAg RERSQ19QRVJGX0NOVF9PUF9NT0RFX0NUUkwpOw0KPiA+ICsNCj4gPiArCWRkcl9wbXUtPnBtdSA9 IChzdHJ1Y3QgcG11KSB7DQo+ID4gKwkJLm1vZHVsZQkgICAgICA9IFRISVNfTU9EVUxFLA0KPiA+ ICsJCS5jYXBhYmlsaXRpZXMgPSBQRVJGX1BNVV9DQVBfTk9fRVhDTFVERSwNCj4gPiArCQkudGFz a19jdHhfbnIgPSBwZXJmX2ludmFsaWRfY29udGV4dCwNCj4gPiArCQkuYXR0cl9ncm91cHMgPSBj bjEwa19hdHRyX2dyb3VwcywNCj4gPiArCQkuZXZlbnRfaW5pdCAgPSBjbjEwa19kZHJfcGVyZl9l dmVudF9pbml0LA0KPiA+ICsJCS5hZGQJICAgICA9IGNuMTBrX2Rkcl9wZXJmX2V2ZW50X2FkZCwN Cj4gPiArCQkuZGVsCSAgICAgPSBjbjEwa19kZHJfcGVyZl9ldmVudF9kZWwsDQo+ID4gKwkJLnN0 YXJ0CSAgICAgPSBjbjEwa19kZHJfcGVyZl9ldmVudF9zdGFydCwNCj4gPiArCQkuc3RvcAkgICAg ID0gY24xMGtfZGRyX3BlcmZfZXZlbnRfc3RvcCwNCj4gPiArCQkucmVhZAkgICAgID0gY24xMGtf ZGRyX3BlcmZfZXZlbnRfdXBkYXRlLA0KPiA+ICsJCS5wbXVfZW5hYmxlICA9IGNuMTBrX2Rkcl9w ZXJmX3BtdV9lbmFibGUsDQo+ID4gKwkJLnBtdV9kaXNhYmxlID0gY24xMGtfZGRyX3BlcmZfcG11 X2Rpc2FibGUsDQo+ID4gKwl9Ow0KPiA+ICsNCj4gPiArCS8qIENob29zZSB0aGlzIGNwdSB0byBj b2xsZWN0IHBlcmYgZGF0YSAqLw0KPiA+ICsJZGRyX3BtdS0+Y3B1ID0gcmF3X3NtcF9wcm9jZXNz b3JfaWQoKTsNCj4gPiArDQo+ID4gKwluYW1lID0gZGV2bV9rYXNwcmludGYoZGRyX3BtdS0+ZGV2 LCBHRlBfS0VSTkVMLA0KPiAibXJ2bF9kZHJfcG11QCVsbHgiLA0KPiA+ICsJCQkgICAgICByZXMt PnN0YXJ0KTsNCj4gPiArCWlmICghbmFtZSkNCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiAr DQo+ID4gKwlyZXQgPSBwZXJmX3BtdV9yZWdpc3RlcigmZGRyX3BtdS0+cG11LCBuYW1lLCAtMSk7 DQo+ID4gKwlpZiAocmV0KQ0KPiA+ICsJCXJldHVybiByZXQ7DQo+IA0KPiBIaSBCaGFyYXQsDQo+ ICAgIERvIHdlIG5lZWQgdG8gZnJlZSBtZW1vcnkgYWxsb2NhdGVkIHRvIGRkcl9wbXUgaW5jYXNl IHBlcmZfcG11X3JlZ2lzdGVyDQo+IGZhaWxzPyBJIHRoaW5rIHJpZ2h0IG5vdyB3ZSBtaWdodCBo YXZlIG1lbW9yeSBsZWFrcyBoZXJlLg0KDQpBcyB3ZSB1c2VkIGRldm1fa3phbGxvYygpIGZvciBh bGxvY2F0aW9uLCBpdCB3aWxsIGJlIGZyZWVkIGlmIHByb2JlIGZhaWxzIGZvciBhbnkgcmVhc29u Lg0KDQo+IEFsc28geW91IGFkZGVkIGNwdSBob3RwbHVnIHN1cHBvcnQgaW4gcGF0Y2ggNCwgYnV0 IGNwdSB2YXJpYWJsZSBpcyBhZGRlZCBpbiB0aGlzDQo+IHBhdGNoLiBXaWxsIGl0IGJlIGJldHRl ciB0byBtb3ZlIGFkZGl0aW9uIG9mIGNwdSBwYXJ0IGFsc28gaW4gcGF0Y2ggND8NCg0KVGhpcyBw YXRjaCBzZXQgZGVmYXVsdCBDUFUsIHdoaWxlIHBhdGNoIDQvNCBhZCBzdXBwb3J0IGZvciBjcHUg aG90cGx1Zy4NCg0KVGhhbmtzDQotQmhhcmF0DQoNCj4gDQo+IFRoYW5rcywNCj4gS2Fqb2wgSmFp bg0KPiANCj4gPiArDQo+ID4gKwlkZHJfcG11LT5pZCA9IGluZGV4Kys7DQo+ID4gKwlwcl9pbmZv KCJDTjEwSyBERFIgUE1VIERyaXZlciBmb3IgZGRyY0AlbGx4IC0gaWQtJWRcbiIsDQo+ID4gKwkJ cmVzLT5zdGFydCwgZGRyX3BtdS0+aWQpOw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyBpbnQgY24xMGtfZGRyX3BlcmZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpIHsNCj4gPiArCXN0cnVjdCBjbjEwa19kZHJfcG11ICpkZHJfcG11ID0gcGxh dGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+ID4gKw0KPiA+ICsJcGVyZl9wbXVfdW5yZWdpc3Rl cigmZGRyX3BtdS0+cG11KTsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtz dGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBjbjEwa19kZHJfcG11X29mX21hdGNoW10g PSB7DQo+ID4gKwl7IC5jb21wYXRpYmxlID0gIm1hcnZlbGwsY24xMGstZGRyLXBtdSIsIH0sDQo+ ID4gKwl7IH0sDQo+ID4gK307DQo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGNuMTBrX2Rk cl9wbXVfb2ZfbWF0Y2gpOw0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2 ZXIgY24xMGtfZGRyX3BtdV9kcml2ZXIgPSB7DQo+ID4gKwkuZHJpdmVyCT0gew0KPiA+ICsJCS5u YW1lICAgPSAiY24xMGstZGRyLXBtdSIsDQo+ID4gKwkJLm9mX21hdGNoX3RhYmxlID0gY24xMGtf ZGRyX3BtdV9vZl9tYXRjaCwNCj4gPiArCQkuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsDQo+ ID4gKwl9LA0KPiA+ICsJLnByb2JlCQk9IGNuMTBrX2Rkcl9wZXJmX3Byb2JlLA0KPiA+ICsJLnJl bW92ZQkJPSBjbjEwa19kZHJfcGVyZl9yZW1vdmUsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0 aWMgaW50IF9faW5pdCBjbjEwa19kZHJfcG11X2luaXQodm9pZCkgew0KPiA+ICsJcmV0dXJuIHBs YXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmY24xMGtfZGRyX3BtdV9kcml2ZXIpOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBfX2V4aXQgY24xMGtfZGRyX3BtdV9leGl0KHZvaWQpIHsN Cj4gPiArCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZjbjEwa19kZHJfcG11X2RyaXZlcik7 DQo+ID4gK30NCj4gPiArDQo+ID4gK21vZHVsZV9pbml0KGNuMTBrX2Rkcl9wbXVfaW5pdCk7DQo+ ID4gK21vZHVsZV9leGl0KGNuMTBrX2Rkcl9wbXVfZXhpdCk7DQo+ID4gKw0KPiA+ICtNT0RVTEVf QVVUSE9SKCJCaGFyYXQgQmh1c2hhbiA8YmJodXNoYW4yQG1hcnZlbGwuY29tPiIpOw0KPiA+ICtN T0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQo+ID4NCg==