From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 002F8A0A0F; Mon, 5 Jul 2021 07:47:58 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8DDAA40686; Mon, 5 Jul 2021 07:47:58 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2051.outbound.protection.outlook.com [40.107.237.51]) by mails.dpdk.org (Postfix) with ESMTP id 81AE040141 for ; Mon, 5 Jul 2021 07:47:56 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jObQY6xPoQ/8JL7Zhks/aF6bznvzX2DwPc5sl+5g3Xp80jlqHg9L54Ya7XiA17FTQkWuwC6yiBzUHukkGu1d2R4+/giPgkxlgMSTXSN3VdSpCpRoE6NjllL78at0ttCp0yaottKgiErv350IRYDj363oin+keQhZ6YdJkAZ7zCbsBHQ6W1cWGKL8LJmLofgwwXEvfmAaFhDJ0sHImEfua7u7jv80i1toObRoLuE/s09vc2jRU8LlEVTXA5YPw88yPTRmmmRf2lzp7cm6b9Aptejfpy7F4XOZ2f6hhMP4DC/vcb/6plJbv6PX+Nwet7ookqpoka5oHvt1jorcAHoCcw== 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=KgQbHcpqJukOGydYdAi3fMjpZwgfplWBpL1yPYbTOEA=; b=TJEo3Ovx7F9exVfvaixnablszZGjxB1c+RBflp+EV2zhq5rUuiB1QEuc5ziDmUp/FkNIMTR4cGgT8MLpqhfWorpWmcceoYax1fwewK4GyMsh9gorJuXMWV7pod0a7HEvZ4WmeQz6AJ5AW5fW5mM1RrSdGA9ygp+mzbpMbedGWYoG8bqL0PZky5wNNzGsoBBJKPD6wZKquEeH1J7SdYZ5XXeZaRF7ptEBtLR4nAA5F7xcteDEYIVi05vOHaPbCYxjWsvG1hx5p46a1/QWNNhW6D2XBcu8sQDwr6Cf4mqiF3O3BV/fJgyTVy5JU6GeF2RUTXQvOs6HQWfc5uQd+AHnIw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KgQbHcpqJukOGydYdAi3fMjpZwgfplWBpL1yPYbTOEA=; b=tqvClRPssGq8ejzNdB2ArEn453e255IbdJa0d6P8myhquYVasRRWd72KL5Uhd7AYvDEGm6KbE4+BaoKFEQJdQExIasSQhRQ+cndTQpoJEE2R56kmlaA5FdVimpaEjQ2iN59bZscZSyIHceDOiBvA8yd8XC65dk6ETfpn4kHefNB/pkYDx2OQW5muMzKHCkKh2543XBv78WdO9g91G1EjGBY8mlBQRknRXgxYr2YEE5yvkPs1Vw0C4iZdfLoz74KNa7LMfvqFq1wPnJ0JCWugiVWvyH4i6Lvi63HDE5hE2yfmvXaasS35894UKdKr2HtdrnWA+fWwWLeihlRnkoH+iw== Received: from DM4PR12MB5373.namprd12.prod.outlook.com (2603:10b6:5:39a::17) by DM4PR12MB5088.namprd12.prod.outlook.com (2603:10b6:5:38b::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.22; Mon, 5 Jul 2021 05:47:54 +0000 Received: from DM4PR12MB5373.namprd12.prod.outlook.com ([fe80::ac75:9b9a:a03f:1676]) by DM4PR12MB5373.namprd12.prod.outlook.com ([fe80::ac75:9b9a:a03f:1676%3]) with mapi id 15.20.4287.033; Mon, 5 Jul 2021 05:47:54 +0000 From: "Xueming(Steven) Li" To: Andrew Rybchenko CC: "dev@dpdk.org" , Wang Haiyue , NBU-Contact-Thomas Monjalon , Kinsella Ray , Neil Horman Thread-Topic: [dpdk-dev] [PATCH v6 2/2] bus/auxiliary: introduce auxiliary bus Thread-Index: AQHXabf45jL5I+Ogo0CzZBuShZe6EKszC40AgADhaIA= Date: Mon, 5 Jul 2021 05:47:54 +0000 Message-ID: References: <20210623000349.631468-2-xuemingl@nvidia.com> <20210625114726.776425-2-xuemingl@nvidia.com> <68c206e6-f090-b303-ff12-fa09ac80f5fd@oktetlabs.ru> In-Reply-To: <68c206e6-f090-b303-ff12-fa09ac80f5fd@oktetlabs.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: oktetlabs.ru; dkim=none (message not signed) header.d=none;oktetlabs.ru; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [2409:891f:c020:78b2:6904:8926:afd9:665f] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2c1387ac-be44-40fa-3762-08d93f786f31 x-ms-traffictypediagnostic: DM4PR12MB5088: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1060; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: CdXVhlhooc+Z/WIMbzmsRpYciVrkfzuZv6g6JCol80gr3n9MSAGoQyoS0BIV7McsXw+V1tbhLpti0dpyeNmbY4W1LkD77ZQehYE382KZhZensrvYPL66XP72DbMeYZr6yNJ+P+BgYQ+CuyDgYEF5BRjimLqTBJXs523L3RwU5etemb/CDL2KNpjOj5vi5yO0EXwY3/kP2alr7y/OiZxQKsz0i3ByHIejcrC8fOvXkUXWPJefjwoGNr0CFiMDQ9UNGvozwmSqHxCoaMf3pmwL03M4XW7I//s2fCeJktFeSelDrvLsGy6WH5PloacW1Hd6zb2xynrwdy/FbiKZZJiLPePuy034iQXE7QXIMmoKDQNPTFXmUMiO2t1Aim2f8Ch+qlyR8aI7rYphsSiP8+1/PtY2NuxQWMxgkSDbZasTPIvd7vmtDbZcDj0u5MG4N5/W98/HEj7NYILCs32uOE1+msnLtcAhyZqzq98fs8SUoo7ArcPo3mGmDhCvYQWXDrzt4M2O5FH0UGyUUmegpvZgb4vMAq0awipEZRJ947hGtg2zEGdMkpA+z/Z+5wXEQKjKBzNnWzcsZU6zXGwAcZkhbOfDp1BJVG9tCYti+fLC0KAThskN4tftYh7UywvJ/nn0x1aq1eGdYFH5D5wBvQ72BNlLpug6ELJaG3Mn+og7toT2+QWI/8syoQTKgw2YQ9py9D6SIlNNPLI41sTF4ReldBgDhFpix/sRV3O+TYwTHkE= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR12MB5373.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(366004)(396003)(136003)(346002)(39860400002)(6506007)(55016002)(33656002)(53546011)(2906002)(8936002)(71200400001)(83380400001)(478600001)(30864003)(4326008)(6916009)(54906003)(316002)(86362001)(66556008)(64756008)(76116006)(8676002)(38100700002)(7696005)(966005)(52536014)(66946007)(122000001)(66476007)(5660300002)(186003)(9686003)(66446008)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?LzA5L0NieGQ4ZUN0WVBQV3FGSVE0YkNZd0xpYUhSUFd4cW93QjMxZm96aFN1?= =?utf-8?B?aWdRUmVPM3lJK2tpWGpqU25jaGFBLzFpRlBqYzV5MXlFMXNIZFg4YkxremRu?= =?utf-8?B?SHlydnozd3Z1VHlXbHo4VGU5TzM1YTlueWVjS3ZVMzhzbDV5cUtSUEYxWlJI?= =?utf-8?B?TlorUE55RDQ1MWpQaXpOcWEvNkNBWVFncndUdFlaNmhPTDJFMG9RYmZSZ3ZZ?= =?utf-8?B?K0ZUWVFCWkpTRmF6bmo1K3RndjBrNGt3NkR1ZU4wdzlSMWFvMWwvMmhHNUpI?= =?utf-8?B?ZEFQdkoyc2hqSjFMUHU1Z0VFMUx6WkJpOGNONnhhemp0bXI5UEplMlM4YWxG?= =?utf-8?B?NGFCTEpxVWJNcUFZM0pOVXZIZlVvNTRzVzdoY0c1RWwyMjRZTkh0NlFGU20r?= =?utf-8?B?akdFaENFNHdlMHFnRDhCOUFjMDk3eVhzcnVwM0ZMYy9XWkpMWlExODRJT3kx?= =?utf-8?B?ZlZ3UDdiUmJkYTJXd2wvNlkxU2JaU0xyUkxHRmVNaXp4QVdjSEFXakFVelhh?= =?utf-8?B?dTdVRGwyYWtTNzMrM253c3pzN3dEeGloYy9pVkJPRk1wLytrZVo1Sk1HQWJl?= =?utf-8?B?ZFhrY29SYXBFU09la0JoRWhCc2VPS3Q2SU9CVnE4NkROSXNmL0ovLzdRbEcw?= =?utf-8?B?cXdQenhOQmpNRzNBWUQvNkZ0NkdVMjM3MUdZSHVwSmwyVWFXOTdOOElVdFJi?= =?utf-8?B?TVlqVVcrdFN6K3RpU0hUbi9NOW9FWnNqTXZYUXU3cElucWMzQnNYZ2tGSWE3?= =?utf-8?B?ZUpmS1p5eENUM2hKZmFteXY4MEVUUUx1Q1VkL1pmSVl3NUt6UnM2ei9ubFJ6?= =?utf-8?B?RENVeUFlQllVcDY3K1FvZjVUTHdRb1d6WHlzL3RTY1JRMnp1bEJNRktSSFBV?= =?utf-8?B?emxYemtnM3g2U0RKRGJSamgwdUpTSVE5NHFUWjFsWHI0Z1hQRG5FNWRudkVJ?= =?utf-8?B?S08vUzRTTzFFOGlhRm9lTDhSR0g2bkxqUkZYN3BqQ1RWOXN5VExjRms2akh4?= =?utf-8?B?dDNqUlFuVnBDTjdERjBCTko5SE5UbzlDb1ZYWjd3QkhxYTdXQkZUNi9Kc3U1?= =?utf-8?B?OU9YSm4yVmowNlQ4K3hIS0l4aWtOOXVMUDJNZ2xyVVlqUm0rdnRVYkhNNXkw?= =?utf-8?B?VXRoV0dDSWdGRTRUKzJsVkF3d1ZjTytpYlZyd1VPdXRQeDJzdzNML01IN2V6?= =?utf-8?B?ZVB1UHlQdWc3MXk0TmJDVUxORzQxTDd3dnZKcjI5SGtOMm84WUJhc3YyT1Nj?= =?utf-8?B?Z21ic0dmbDZyWUtQdlZxVklDZmt1d2NpQ1R1RmwzT2MyUEkxeW9tTDJjaHNa?= =?utf-8?B?UzZ4eEpXMElWTHJoUGIyT3gyVDZZa1NWMGJlOTRZVm1VT3hjR2dtRU93bE53?= =?utf-8?B?RWh0Z3YwU1VPQlFScjB5UVpaT0t3M0hLWWtVdkVvT1V0d2dSZEthZVdrdmdN?= =?utf-8?B?eFhvSmNGczZ5QXIzd1VMVnRnWi96WHlPZzRxOWErclpFcGdhdlBoRTBlMXVH?= =?utf-8?B?eEo5WVNPN3RId0FPQUhNMlJBcjdYOUptWXRYRm0yQXVpNUhmUWFoRThzNHhS?= =?utf-8?B?NnpMcG1nWldRQXVBbkErTmp6SW5rckJrdUtrcWRsS2puM3M2anM2MEVxMWlx?= =?utf-8?B?VUtkL05QM3g5eEdTbXRuSGJCblp4RmIxdVZtNnRVTlhCb2p2aTh5WHNwN3Zz?= =?utf-8?B?eUVYa09CclRCT3gwTUhrS0ovLzRucHdHTFNFQUZyZkpMcTdNcElTSU1TaS8w?= =?utf-8?B?MkJocU0xKzU5Z2E4U2JyOWJjc29zSUJVSW9ZUnRqR2dzazNRNW4rNjhIR2Vw?= =?utf-8?B?eno4dDFxRytmVk14TURLMVU0Umhnci9YQmVBNy8yK1RmYUtWbXJWdUtiaUs1?= =?utf-8?Q?UEO18rRTrrhrB?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5373.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2c1387ac-be44-40fa-3762-08d93f786f31 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jul 2021 05:47:54.2692 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: VXvmjDUVx8mJ5xJcniMP/Z2hQBCQVQYm6QnjVqa9Nk7jn5fxm7Xiw5WbQPV69oC6NNNHrSfgIRAz58o/g1fwsg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5088 Subject: Re: [dpdk-dev] [PATCH v6 2/2] bus/auxiliary: introduce auxiliary bus X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgQW5kcmV3LA0KDQpUaGFua3MgdmVyeSBtdWNoIGFsbCB0aGUgZ29vZCBzdWdnZXN0aW9ucywg djcgcG9zdGVkLg0KDQpCZXN0IFJlZ2FyZHMsDQpYdWVtaW5nDQoNCj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5kcmV3IFJ5YmNoZW5rbyA8YW5kcmV3LnJ5YmNoZW5rb0Bv a3RldGxhYnMucnU+DQo+IFNlbnQ6IE1vbmRheSwgSnVseSA1LCAyMDIxIDEyOjEzIEFNDQo+IFRv OiBYdWVtaW5nKFN0ZXZlbikgTGkgPHh1ZW1pbmdsQG52aWRpYS5jb20+DQo+IENjOiBkZXZAZHBk ay5vcmc7IFdhbmcgSGFpeXVlIDxoYWl5dWUud2FuZ0BpbnRlbC5jb20+OyBOQlUtQ29udGFjdC1U aG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+OyBLaW5zZWxsYSBSYXkNCj4gPG1k ckBhc2hyb2UuZXU+OyBOZWlsIEhvcm1hbiA8bmhvcm1hbkB0dXhkcml2ZXIuY29tPg0KPiBTdWJq ZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjYgMi8yXSBidXMvYXV4aWxpYXJ5OiBpbnRyb2R1 Y2UgYXV4aWxpYXJ5IGJ1cw0KPiANCj4gT24gNi8yNS8yMSAyOjQ3IFBNLCBYdWVtaW5nIExpIHdy b3RlOg0KPiA+IEF1eGlsaWFyeSBidXMgWzFdIHByb3ZpZGVzIGEgd2F5IHRvIHNwbGl0IGZ1bmN0 aW9uIGludG8gY2hpbGQtZGV2aWNlcw0KPiA+IHJlcHJlc2VudGluZyBzdWItZG9tYWlucyBvZiBm dW5jdGlvbmFsaXR5LiBFYWNoIGF1eGlsaWFyeSBkZXZpY2UNCj4gPiByZXByZXNlbnRzIGEgcGFy dCBvZiBpdHMgcGFyZW50IGZ1bmN0aW9uYWxpdHkuDQo+ID4NCj4gPiBBdXhpbGlhcnkgZGV2aWNl IGlzIGlkZW50aWZpZWQgYnkgdW5pcXVlIGRldmljZSBuYW1lLCBzeXNmcyBwYXRoOg0KPiA+ICAg L3N5cy9idXMvYXV4aWxpYXJ5L2RldmljZXMvPG5hbWU+DQo+ID4NCj4gPiBEZXZhcmdzIGxlZ2Fj eSBzeW50YXggb2ZhdXhpbGlhcnkgZGV2aWNlOg0KPiANCj4gTWlzc2luZyBzcGFjZSBhZnRlciAn b2YnDQo+IA0KPiA+ICAgLWEgYXV4aWxpYXJ5OjxuYW1lPlssYXJncy4uLl0NCj4gPiBEZXZhcmdz IGdlbmVyaWMgc3ludGF4IG9mIGF1eGlsaWFyeSBkZXZpY2U6DQo+ID4gICAtYSBidXM9YXV4aWxp YXJ5LG5hbWU9PG5hbWU+LCwvY2xhc3M9PGNsYXNzcz4sLC9kcml2ZXI9PGRyaXZlcj4sLA0KPiAN Cj4gQXJlIHR3byBjb21tYXMgYWJvdmUgaW50ZW50aW9uYWxsPyBXaGF0IGZvcj8NCj4gDQo+ID4N Cj4gPiBbMV0ga2VybmVsIGF1eGlsaWFyeSBidXMgZG9jdW1lbnQ6DQo+ID4gaHR0cHM6Ly93d3cu a2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvZHJpdmVyLWFwaS9hdXhpbGlhcnlfYnVzLmh0bWwN Cj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFh1ZW1pbmcgTGkgPHh1ZW1pbmdsQG52aWRpYS5jb20+ DQo+IA0KPiBXaXRoIG15IGJlbG93IG5vdGVzIGZpeGVkOg0KPiANCj4gQWNrZWQtYnk6IEFuZHJl dyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiANCj4gPiBDYzog V2FuZyBIYWl5dWUgPGhhaXl1ZS53YW5nQGludGVsLmNvbT4NCj4gPiBDYzogVGhvbWFzIE1vbmph bG9uIDx0aG9tYXNAbW9uamFsb24ubmV0Pg0KPiA+IENjOiBLaW5zZWxsYSBSYXkgPG1kckBhc2hy b2UuZXU+DQo+ID4gLS0tDQo+ID4gIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA1ICsNCj4gPiAgZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMV8wOC5y c3QgICAgfCAgIDYgKw0KPiA+ICBkcml2ZXJzL2J1cy9hdXhpbGlhcnkvYXV4aWxpYXJ5X2NvbW1v bi5jICB8IDQxMQ0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysgIGRyaXZlcnMvYnVzL2F1eGls aWFyeS9hdXhpbGlhcnlfcGFyYW1zLmMgIHwgIDU5ICsrKysNCj4gPiAgZHJpdmVycy9idXMvYXV4 aWxpYXJ5L2xpbnV4L2F1eGlsaWFyeS5jICAgfCAxNDEgKysrKysrKysNCj4gPiAgZHJpdmVycy9i dXMvYXV4aWxpYXJ5L21lc29uLmJ1aWxkICAgICAgICAgfCAgMTYgKw0KPiA+ICBkcml2ZXJzL2J1 cy9hdXhpbGlhcnkvcHJpdmF0ZS5oICAgICAgICAgICB8ICA3NCArKysrDQo+ID4gIGRyaXZlcnMv YnVzL2F1eGlsaWFyeS9ydGVfYnVzX2F1eGlsaWFyeS5oIHwgMjAxICsrKysrKysrKysrDQo+ID4g IGRyaXZlcnMvYnVzL2F1eGlsaWFyeS92ZXJzaW9uLm1hcCAgICAgICAgIHwgICA3ICsNCj4gPiAg ZHJpdmVycy9idXMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICAx MCBmaWxlcyBjaGFuZ2VkLCA5MjEgaW5zZXJ0aW9ucygrKQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9idXMvYXV4aWxpYXJ5L2F1eGlsaWFyeV9jb21tb24uYw0KPiA+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9idXMvYXV4aWxpYXJ5L2F1eGlsaWFyeV9wYXJhbXMuYw0KPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9idXMvYXV4aWxpYXJ5L2xpbnV4L2F1eGlsaWFy eS5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2J1cy9hdXhpbGlhcnkvbWVzb24u YnVpbGQgIGNyZWF0ZSBtb2RlDQo+ID4gMTAwNjQ0IGRyaXZlcnMvYnVzL2F1eGlsaWFyeS9wcml2 YXRlLmggIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IGRyaXZlcnMvYnVzL2F1eGlsaWFyeS9ydGVf YnVzX2F1eGlsaWFyeS5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2J1cy9hdXhp bGlhcnkvdmVyc2lvbi5tYXANCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01B SU5UQUlORVJTIGluZGV4IDU4NzdhMTY5NzEuLmVhZjY5MWNhNmENCj4gPiAxMDA2NDQNCj4gPiAt LS0gYS9NQUlOVEFJTkVSUw0KPiA+ICsrKyBiL01BSU5UQUlORVJTDQo+ID4gQEAgLTUyNSw2ICs1 MjUsMTEgQEAgRjogZG9jL2d1aWRlcy9tZW1wb29sL29jdGVvbnR4Mi5yc3QgIEJ1cyBEcml2ZXJz DQo+ID4gIC0tLS0tLS0tLS0tDQo+ID4NCj4gPiArQXV4aWxpYXJ5IGJ1cyBkcml2ZXINCj4gDQo+ IFNob3VsZG4ndCBpdCBiZSBFWFBFUklNRU5UQUw/DQo+IA0KPiA+ICtNOiBQYXJhdiBQYW5kaXQg PHBhcmF2QG52aWRpYS5jb20+DQo+ID4gK006IFh1ZW1pbmcgTGkgPHh1ZW1pbmdsQG52aWRpYS5j b20+DQo+ID4gK0Y6IGRyaXZlcnMvYnVzL2F1eGlsaWFyeS8NCj4gPiArDQo+ID4gIEludGVsIEZQ R0EgYnVzDQo+ID4gIE06IFJvc2VuIFh1IDxyb3Nlbi54dUBpbnRlbC5jb20+DQo+ID4gIEY6IGRy aXZlcnMvYnVzL2lmcGdhLw0KPiA+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9y ZWxlYXNlXzIxXzA4LnJzdA0KPiA+IGIvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMV8w OC5yc3QNCj4gPiBpbmRleCBhNmVjZmRmM2NlLi5lN2VmNGM4YTA1IDEwMDY0NA0KPiA+IC0tLSBh L2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjFfMDgucnN0DQo+ID4gKysrIGIvZG9jL2d1 aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMV8wOC5yc3QNCj4gPiBAQCAtNTUsNiArNTUsMTIgQEAg TmV3IEZlYXR1cmVzDQo+ID4gICAgICAgQWxzbywgbWFrZSBzdXJlIHRvIHN0YXJ0IHRoZSBhY3R1 YWwgdGV4dCBhdCB0aGUgbWFyZ2luLg0KPiA+ICAgICAgID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPg0KPiA+ICsqICoqQWRkZWQgYXV4 aWxpYXJ5IGJ1cyBzdXBwb3J0LioqDQo+ID4gKw0KPiA+ICsgIEF1eGlsaWFyeSBidXMgcHJvdmlk ZXMgYSB3YXkgdG8gc3BsaXQgZnVuY3Rpb24gaW50byBjaGlsZC1kZXZpY2VzDQo+ID4gKyByZXBy ZXNlbnRpbmcgc3ViLWRvbWFpbnMgb2YgZnVuY3Rpb25hbGl0eS4gRWFjaCBhdXhpbGlhcnkgZGV2 aWNlDQo+ID4gKyByZXByZXNlbnRzIGEgcGFydCBvZiBpdHMgcGFyZW50IGZ1bmN0aW9uYWxpdHku DQo+ID4gKw0KPiA+DQo+ID4gIFJlbW92ZWQgSXRlbXMNCj4gPiAgLS0tLS0tLS0tLS0tLQ0KPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2J1cy9hdXhpbGlhcnkvYXV4aWxpYXJ5X2NvbW1vbi5jDQo+ ID4gYi9kcml2ZXJzL2J1cy9hdXhpbGlhcnkvYXV4aWxpYXJ5X2NvbW1vbi5jDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi44YTc1MzA2ZGE1DQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvYnVzL2F1eGlsaWFyeS9hdXhpbGlhcnlfY29t bW9uLmMNCj4gPiBAQCAtMCwwICsxLDQxMSBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAyMSBOVklESUEgQ29y cG9yYXRpb24gJiBBZmZpbGlhdGVzICAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPHN0cmluZy5o Pg0KPiA+ICsjaW5jbHVkZSA8aW50dHlwZXMuaD4NCj4gPiArI2luY2x1ZGUgPHN0ZGludC5oPg0K PiA+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPg0KPiA+ICsjaW5jbHVkZSA8c3RkbGliLmg+DQo+ID4g KyNpbmNsdWRlIDxzdGRpby5oPg0KPiA+ICsjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+DQo+ID4gKyNp bmNsdWRlIDxydGVfZXJybm8uaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9pbnRlcnJ1cHRzLmg+DQo+ ID4gKyNpbmNsdWRlIDxydGVfbG9nLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfYnVzLmg+DQo+ID4g KyNpbmNsdWRlIDxydGVfcGVyX2xjb3JlLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfbWVtb3J5Lmg+ DQo+ID4gKyNpbmNsdWRlIDxydGVfZWFsLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfZWFsX3BhZ2lu Zy5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX3N0cmluZ19mbnMuaD4NCj4gPiArI2luY2x1ZGUgPHJ0 ZV9jb21tb24uaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9kZXZhcmdzLmg+DQo+ID4gKw0KPiA+ICsj aW5jbHVkZSAicHJpdmF0ZS5oIg0KPiA+ICsjaW5jbHVkZSAicnRlX2J1c19hdXhpbGlhcnkuaCIN Cj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgcnRlX2RldmFyZ3MgKg0KPiA+ICthdXhpbGlhcnlf ZGV2YXJnc19sb29rdXAoY29uc3QgY2hhciAqbmFtZSkgew0KPiA+ICsJc3RydWN0IHJ0ZV9kZXZh cmdzICpkZXZhcmdzOw0KPiA+ICsNCj4gPiArCVJURV9FQUxfREVWQVJHU19GT1JFQUNIKFJURV9C VVNfQVVYSUxJQVJZX05BTUUsIGRldmFyZ3MpIHsNCj4gPiArCQlpZiAoc3RyY21wKGRldmFyZ3Mt Pm5hbWUsIG5hbWUpID09IDApDQo+ID4gKwkJCXJldHVybiBkZXZhcmdzOw0KPiA+ICsJfQ0KPiA+ ICsJcmV0dXJuIE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIFRlc3Qgd2hl dGhlciB0aGUgYXV4aWxpYXJ5IGRldmljZSBleGlzdA0KPiANCj4gTWlzc2luZyBmdWxsIHN0b3Ag YWJvdmUuDQo+IA0KPiA+ICsgKg0KPiA+ICsgKiBTdHViIGZvciBPUyBub3Qgc3VwcG9ydGluZyBh dXhpbGlhcnkgYnVzLg0KPiA+ICsgKi8NCj4gPiArX19ydGVfd2VhayBib29sDQo+ID4gK2F1eGls aWFyeV9kZXZfZXhpc3RzKGNvbnN0IGNoYXIgKm5hbWUpIHsNCj4gPiArCVJURV9TRVRfVVNFRChu YW1lKTsNCj4gPiArCXJldHVybiBmYWxzZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoNCj4gPiAr ICogU2NhbiB0aGUgZGV2aWNlcyBpbiB0aGUgYXV4aWxpYXJ5IGJ1cy4NCj4gPiArICoNCj4gPiAr ICogU3R1YiBmb3IgT1Mgbm90IHN1cHBvcnRpbmcgYXV4aWxpYXJ5IGJ1cy4NCj4gPiArICovDQo+ ID4gK19fcnRlX3dlYWsgaW50DQo+ID4gK2F1eGlsaWFyeV9zY2FuKHZvaWQpDQo+ID4gK3sNCj4g PiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBVcGRhdGUgYSBk ZXZpY2UncyBkZXZhcmdzIGJlaW5nIHNjYW5uZWQuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBh dXhfZGV2DQo+ID4gKyAqCUFVWElMSUFSWSBkZXZpY2UuDQo+ID4gKyAqLw0KPiA+ICt2b2lkDQo+ ID4gK2F1eGlsaWFyeV9vbl9zY2FuKHN0cnVjdCBydGVfYXV4aWxpYXJ5X2RldmljZSAqYXV4X2Rl dikgew0KPiA+ICsJYXV4X2Rldi0+ZGV2aWNlLmRldmFyZ3MgPSBhdXhpbGlhcnlfZGV2YXJnc19s b29rdXAoYXV4X2Rldi0+bmFtZSk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIE1h dGNoIHRoZSBhdXhpbGlhcnkgZHJpdmVyIGFuZCBkZXZpY2UgdXNpbmcgZHJpdmVyIGZ1bmN0aW9u Lg0KPiA+ICsgKi8NCj4gPiArYm9vbA0KPiA+ICthdXhpbGlhcnlfbWF0Y2goY29uc3Qgc3RydWN0 IHJ0ZV9hdXhpbGlhcnlfZHJpdmVyICphdXhfZHJ2LA0KPiA+ICsJCWNvbnN0IHN0cnVjdCBydGVf YXV4aWxpYXJ5X2RldmljZSAqYXV4X2Rldikgew0KPiA+ICsJaWYgKGF1eF9kcnYtPm1hdGNoID09 IE5VTEwpDQo+ID4gKwkJcmV0dXJuIGZhbHNlOw0KPiA+ICsJcmV0dXJuIGF1eF9kcnYtPm1hdGNo KGF1eF9kZXYtPm5hbWUpOyB9DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBDYWxsIHRoZSBwcm9i ZSgpIGZ1bmN0aW9uIG9mIHRoZSBkcml2ZXIuDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50DQo+ ID4gK3J0ZV9hdXhpbGlhcnlfcHJvYmVfb25lX2RyaXZlcihzdHJ1Y3QgcnRlX2F1eGlsaWFyeV9k cml2ZXIgKmRydiwNCj4gPiArCQkJICAgICAgIHN0cnVjdCBydGVfYXV4aWxpYXJ5X2RldmljZSAq ZGV2KQ0KPiA+ICt7DQo+ID4gKwllbnVtIHJ0ZV9pb3ZhX21vZGUgaW92YV9tb2RlOw0KPiA+ICsJ aW50IHJldDsNCj4gPiArDQo+ID4gKwlpZiAoKGRydiA9PSBOVUxMKSB8fCAoZGV2ID09IE5VTEwp KQ0KPiANCj4gVW5uZWNlc3NhcnkgaW50ZXJuYWwgcGFyZW50aGVzaXMuDQo+IA0KPiA+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCS8qIENoZWNrIGlmIGRyaXZlciBzdXBwb3J0cyBp dC4gKi8NCj4gPiArCWlmICghYXV4aWxpYXJ5X21hdGNoKGRydiwgZGV2KSkNCj4gPiArCQkvKiBN YXRjaCBvZiBkZXZpY2UgYW5kIGRyaXZlciBmYWlsZWQgKi8NCj4gPiArCQlyZXR1cm4gMTsNCj4g PiArDQo+ID4gKwkvKiBObyBpbml0aWFsaXphdGlvbiB3aGVuIG1hcmtlZCBhcyBibG9ja2VkLCBy ZXR1cm4gd2l0aG91dCBlcnJvci4gKi8NCj4gPiArCWlmIChkZXYtPmRldmljZS5kZXZhcmdzICE9 IE5VTEwgJiYNCj4gPiArCSAgICBkZXYtPmRldmljZS5kZXZhcmdzLT5wb2xpY3kgPT0gUlRFX0RF Vl9CTE9DS0VEKSB7DQo+ID4gKwkJQVVYSUxJQVJZX0xPRyhJTkZPLCAiRGV2aWNlIGlzIGJsb2Nr ZWQsIG5vdCBpbml0aWFsaXppbmciKTsNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJaWYgKGRldi0+ZGV2aWNlLm51bWFfbm9kZSA8IDApIHsNCj4gPiArCQlBVVhJTElB UllfTE9HKElORk8sICJEZXZpY2UgaXMgbm90IE5VTUEtYXdhcmUsIGRlZmF1bHRpbmcgc29ja2V0 IHRvIDAiKTsNCj4gDQo+IHNvY2tldCAtPiBOVU1BIG5vZGUNCj4gDQo+ID4gKwkJZGV2LT5kZXZp Y2UubnVtYV9ub2RlID0gMDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpb3ZhX21vZGUgPSBydGVf ZWFsX2lvdmFfbW9kZSgpOw0KPiA+ICsJaWYgKChkcnYtPmRydl9mbGFncyAmIFJURV9BVVhJTElB UllfRFJWX05FRURfSU9WQV9BU19WQSkgPiAwICYmDQo+ID4gKwkgICAgaW92YV9tb2RlICE9IFJU RV9JT1ZBX1ZBKSB7DQo+ID4gKwkJQVVYSUxJQVJZX0xPRyhFUlIsICJEcml2ZXIgJXMgZXhwZWN0 aW5nIFZBIElPVkEgbW9kZSBidXQgY3VycmVudCBtb2RlIGlzIFBBLCBub3QgaW5pdGlhbGl6aW5n IiwNCj4gPiArCQkJICAgICAgZHJ2LT5kcml2ZXIubmFtZSk7DQo+ID4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZGV2LT5kcml2ZXIgPSBkcnY7DQo+ID4gKw0KPiA+ ICsJQVVYSUxJQVJZX0xPRyhJTkZPLCAiUHJvYmUgYXV4aWxpYXJ5IGRyaXZlcjogJXMgZGV2aWNl OiAlcyAoc29ja2V0ICVpKSIsDQo+IA0KPiBzb2NrZXQgLT4gTlVNQSBub2RlDQo+IA0KPiA+ICsJ CSAgICAgIGRydi0+ZHJpdmVyLm5hbWUsIGRldi0+bmFtZSwgZGV2LT5kZXZpY2UubnVtYV9ub2Rl KTsNCj4gPiArCXJldCA9IGRydi0+cHJvYmUoZHJ2LCBkZXYpOw0KPiA+ICsJaWYgKHJldCAhPSAw KQ0KPiA+ICsJCWRldi0+ZHJpdmVyID0gTlVMTDsNCj4gPiArCWVsc2UNCj4gPiArCQlkZXYtPmRl dmljZS5kcml2ZXIgPSAmZHJ2LT5kcml2ZXI7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogQ2FsbCB0aGUgcmVtb3ZlKCkgZnVuY3Rpb24g b2YgdGhlIGRyaXZlci4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArcnRlX2F1eGls aWFyeV9kcml2ZXJfcmVtb3ZlX2RldihzdHJ1Y3QgcnRlX2F1eGlsaWFyeV9kZXZpY2UgKmRldikN Cj4gPiArew0KPiA+ICsJc3RydWN0IHJ0ZV9hdXhpbGlhcnlfZHJpdmVyICpkcnY7DQo+ID4gKwlp bnQgcmV0ID0gMDsNCj4gPiArDQo+ID4gKwlpZiAoZGV2ID09IE5VTEwpDQo+ID4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJZHJ2ID0gZGV2LT5kcml2ZXI7DQo+ID4gKw0KPiA+ICsJ QVVYSUxJQVJZX0xPRyhERUJVRywgIkRyaXZlciAlcyByZW1vdmUgYXV4aWxpYXJ5IGRldmljZSAl cyBvbiBOVU1BIHNvY2tldCAlaSIsDQo+IA0KPiBzb2NrZXQgLT4gbm9kZQ0KPiANCj4gPiArCQkg ICAgICBkcnYtPmRyaXZlci5uYW1lLCBkZXYtPm5hbWUsIGRldi0+ZGV2aWNlLm51bWFfbm9kZSk7 DQo+ID4gKw0KPiA+ICsJaWYgKGRydi0+cmVtb3ZlICE9IE5VTEwpIHsNCj4gPiArCQlyZXQgPSBk cnYtPnJlbW92ZShkZXYpOw0KPiA+ICsJCWlmIChyZXQgPCAwKQ0KPiA+ICsJCQlyZXR1cm4gcmV0 Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIGNsZWFyIGRyaXZlciBzdHJ1Y3R1cmUgKi8NCj4g PiArCWRldi0+ZHJpdmVyID0gTlVMTDsNCj4gPiArCWRldi0+ZGV2aWNlLmRyaXZlciA9IE5VTEw7 DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAq IENhbGwgdGhlIHByb2JlKCkgZnVuY3Rpb24gb2YgYWxsIHJlZ2lzdGVyZWQgZHJpdmVyIGZvciB0 aGUgZ2l2ZW4gZGV2aWNlLg0KPiA+ICsgKiBSZXR1cm4gPCAwIGlmIGluaXRpYWxpemF0aW9uIGZh aWxlZC4NCj4gPiArICogUmV0dXJuIDEgaWYgbm8gZHJpdmVyIGlzIGZvdW5kIGZvciB0aGlzIGRl dmljZS4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArYXV4aWxpYXJ5X3Byb2JlX2Fs bF9kcml2ZXJzKHN0cnVjdCBydGVfYXV4aWxpYXJ5X2RldmljZSAqZGV2KQ0KPiA+ICt7DQo+ID4g KwlzdHJ1Y3QgcnRlX2F1eGlsaWFyeV9kcml2ZXIgKmRydjsNCj4gPiArCWludCByYzsNCj4gPiAr DQo+ID4gKwlpZiAoZGV2ID09IE5VTEwpDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0K PiA+ICsJRk9SRUFDSF9EUklWRVJfT05fQVVYSUxJQVJZX0JVUyhkcnYpIHsNCj4gPiArCQlpZiAo IWRydi0+bWF0Y2goZGV2LT5uYW1lKSkNCj4gPiArCQkJY29udGludWU7DQo+ID4gKw0KPiA+ICsJ CXJjID0gcnRlX2F1eGlsaWFyeV9wcm9iZV9vbmVfZHJpdmVyKGRydiwgZGV2KTsNCj4gPiArCQlp ZiAocmMgPCAwKQ0KPiA+ICsJCQkvKiBuZWdhdGl2ZSB2YWx1ZSBpcyBhbiBlcnJvciAqLw0KPiA+ ICsJCQlyZXR1cm4gcmM7DQo+ID4gKwkJaWYgKHJjID4gMCkNCj4gPiArCQkJLyogcG9zaXRpdmUg dmFsdWUgbWVhbnMgZHJpdmVyIGRvZXNuJ3Qgc3VwcG9ydCBpdCAqLw0KPiA+ICsJCQljb250aW51 ZTsNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiArCXJldHVybiAxOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBTY2FuIHRoZSBjb250ZW50IG9mIHRoZSBhdXhpbGlhcnkg YnVzLCBhbmQgY2FsbCB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yDQo+ID4gKyAqIGFsbCByZWdpc3Rl cmVkIGRyaXZlcnMgdG8gdHJ5IHRvIHByb2JlIGRpc2NvdmVyZWQgZGV2aWNlcy4NCj4gPiArICov DQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArYXV4aWxpYXJ5X3Byb2JlKHZvaWQpDQo+ID4gK3sNCj4g PiArCXN0cnVjdCBydGVfYXV4aWxpYXJ5X2RldmljZSAqZGV2ID0gTlVMTDsNCj4gPiArCXNpemVf dCBwcm9iZWQgPSAwLCBmYWlsZWQgPSAwOw0KPiA+ICsJaW50IHJldCA9IDA7DQo+ID4gKw0KPiA+ ICsJRk9SRUFDSF9ERVZJQ0VfT05fQVVYSUxJQVJZX0JVUyhkZXYpIHsNCj4gPiArCQlwcm9iZWQr KzsNCj4gPiArDQo+ID4gKwkJcmV0ID0gYXV4aWxpYXJ5X3Byb2JlX2FsbF9kcml2ZXJzKGRldik7 DQo+ID4gKwkJaWYgKHJldCA8IDApIHsNCj4gPiArCQkJaWYgKHJldCAhPSAtRUVYSVNUKSB7DQo+ ID4gKwkJCQlBVVhJTElBUllfTE9HKEVSUiwgIlJlcXVlc3RlZCBkZXZpY2UgJXMgY2Fubm90IGJl IHVzZWQiLA0KPiA+ICsJCQkJCSAgICAgIGRldi0+bmFtZSk7DQo+ID4gKwkJCQlydGVfZXJybm8g PSBlcnJubzsNCj4gPiArCQkJCWZhaWxlZCsrOw0KPiA+ICsJCQl9DQo+ID4gKwkJCXJldCA9IDA7 DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAocHJvYmVkICYmIHByb2Jl ZCA9PSBmYWlsZWQpID8gLTEgOiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ ID4gK2F1eGlsaWFyeV9wYXJzZShjb25zdCBjaGFyICpuYW1lLCB2b2lkICphZGRyKQ0KPiA+ICt7 DQo+ID4gKwlzdHJ1Y3QgcnRlX2F1eGlsaWFyeV9kcml2ZXIgKmRydiA9IE5VTEw7DQo+ID4gKwlj b25zdCBjaGFyICoqb3V0ID0gYWRkcjsNCj4gPiArDQo+ID4gKwkvKiBBbGxvdyBlbXB0eSBkZXZp Y2UgbmFtZSAiYXV4aWxpYXJ5OiIgdG8gYnlwYXNzIGVudGlyZSBidXMgc2Nhbi4gKi8NCj4gPiAr CWlmIChzdHJsZW4obmFtZSkgPT0gMCkNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArDQo+ID4gKwlG T1JFQUNIX0RSSVZFUl9PTl9BVVhJTElBUllfQlVTKGRydikgew0KPiA+ICsJCWlmIChkcnYtPm1h dGNoKG5hbWUpKQ0KPiA+ICsJCQlicmVhazsNCj4gPiArCX0NCj4gPiArCWlmIChkcnYgIT0gTlVM TCAmJiBhZGRyICE9IE5VTEwpDQo+ID4gKwkJKm91dCA9IG5hbWU7DQo+ID4gKwlyZXR1cm4gZHJ2 ICE9IE5VTEwgPyAwIDogLTE7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIFJlZ2lzdGVyIGEgZHJp dmVyICovDQo+ID4gK3ZvaWQNCj4gPiArcnRlX2F1eGlsaWFyeV9yZWdpc3RlcihzdHJ1Y3QgcnRl X2F1eGlsaWFyeV9kcml2ZXIgKmRyaXZlcikNCj4gPiArew0KPiA+ICsJVEFJTFFfSU5TRVJUX1RB SUwoJmF1eGlsaWFyeV9idXMuZHJpdmVyX2xpc3QsIGRyaXZlciwgbmV4dCk7DQo+ID4gKwlkcml2 ZXItPmJ1cyA9ICZhdXhpbGlhcnlfYnVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiBVbnJlZ2lz dGVyIGEgZHJpdmVyICovDQo+ID4gK3ZvaWQNCj4gPiArcnRlX2F1eGlsaWFyeV91bnJlZ2lzdGVy KHN0cnVjdCBydGVfYXV4aWxpYXJ5X2RyaXZlciAqZHJpdmVyKQ0KPiA+ICt7DQo+ID4gKwlUQUlM UV9SRU1PVkUoJmF1eGlsaWFyeV9idXMuZHJpdmVyX2xpc3QsIGRyaXZlciwgbmV4dCk7DQo+ID4g Kwlkcml2ZXItPmJ1cyA9IE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIEFkZCBhIGRldmlj ZSB0byBhdXhpbGlhcnkgYnVzICovDQo+ID4gK3ZvaWQNCj4gPiArYXV4aWxpYXJ5X2FkZF9kZXZp Y2Uoc3RydWN0IHJ0ZV9hdXhpbGlhcnlfZGV2aWNlICphdXhfZGV2KQ0KPiA+ICt7DQo+ID4gKwlU QUlMUV9JTlNFUlRfVEFJTCgmYXV4aWxpYXJ5X2J1cy5kZXZpY2VfbGlzdCwgYXV4X2RldiwgbmV4 dCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIEluc2VydCBhIGRldmljZSBpbnRvIGEgcHJlZGVm aW5lZCBwb3NpdGlvbiBpbiBhdXhpbGlhcnkgYnVzICovDQo+ID4gK3ZvaWQNCj4gPiArYXV4aWxp YXJ5X2luc2VydF9kZXZpY2Uoc3RydWN0IHJ0ZV9hdXhpbGlhcnlfZGV2aWNlICpleGlzdF9hdXhf ZGV2LA0KPiA+ICsJCQlzdHJ1Y3QgcnRlX2F1eGlsaWFyeV9kZXZpY2UgKm5ld19hdXhfZGV2KQ0K PiA+ICt7DQo+ID4gKwlUQUlMUV9JTlNFUlRfQkVGT1JFKGV4aXN0X2F1eF9kZXYsIG5ld19hdXhf ZGV2LCBuZXh0KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyogUmVtb3ZlIGEgZGV2aWNlIGZyb20g YXV4aWxpYXJ5IGJ1cyAqLw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ICtydGVfYXV4aWxpYXJ5X3Jl bW92ZV9kZXZpY2Uoc3RydWN0IHJ0ZV9hdXhpbGlhcnlfZGV2aWNlICphdXhpbGlhcnlfZGV2KQ0K PiA+ICt7DQo+ID4gKwlUQUlMUV9SRU1PVkUoJmF1eGlsaWFyeV9idXMuZGV2aWNlX2xpc3QsIGF1 eGlsaWFyeV9kZXYsIG5leHQpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IHJ0 ZV9kZXZpY2UgKg0KPiA+ICthdXhpbGlhcnlfZmluZF9kZXZpY2UoY29uc3Qgc3RydWN0IHJ0ZV9k ZXZpY2UgKnN0YXJ0LCBydGVfZGV2X2NtcF90IGNtcCwNCj4gPiArCQkgICAgICBjb25zdCB2b2lk ICpkYXRhKQ0KPiA+ICt7DQo+ID4gKwljb25zdCBzdHJ1Y3QgcnRlX2F1eGlsaWFyeV9kZXZpY2Ug KnBzdGFydDsNCj4gPiArCXN0cnVjdCBydGVfYXV4aWxpYXJ5X2RldmljZSAqYWRldjsNCj4gPiAr DQo+ID4gKwlpZiAoc3RhcnQgIT0gTlVMTCkgew0KPiA+ICsJCXBzdGFydCA9IFJURV9ERVZfVE9f QVVYSUxJQVJZX0NPTlNUKHN0YXJ0KTsNCj4gPiArCQlhZGV2ID0gVEFJTFFfTkVYVChwc3RhcnQs IG5leHQpOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlhZGV2ID0gVEFJTFFfRklSU1QoJmF1eGls aWFyeV9idXMuZGV2aWNlX2xpc3QpOw0KPiA+ICsJfQ0KPiA+ICsJd2hpbGUgKGFkZXYgIT0gTlVM TCkgew0KPiA+ICsJCWlmIChjbXAoJmFkZXYtPmRldmljZSwgZGF0YSkgPT0gMCkNCj4gPiArCQkJ cmV0dXJuICZhZGV2LT5kZXZpY2U7DQo+ID4gKwkJYWRldiA9IFRBSUxRX05FWFQoYWRldiwgbmV4 dCk7DQo+ID4gKwl9DQo+ID4gKwlyZXR1cm4gTlVMTDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIGludA0KPiA+ICthdXhpbGlhcnlfcGx1ZyhzdHJ1Y3QgcnRlX2RldmljZSAqZGV2KQ0KPiA+ ICt7DQo+ID4gKwlpZiAoIWF1eGlsaWFyeV9kZXZfZXhpc3RzKGRldi0+bmFtZSkpDQo+ID4gKwkJ cmV0dXJuIC1FTk9FTlQ7DQo+ID4gKwlyZXR1cm4gYXV4aWxpYXJ5X3Byb2JlX2FsbF9kcml2ZXJz KFJURV9ERVZfVE9fQVVYSUxJQVJZKGRldikpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg aW50DQo+ID4gK2F1eGlsaWFyeV91bnBsdWcoc3RydWN0IHJ0ZV9kZXZpY2UgKmRldikNCj4gPiAr ew0KPiA+ICsJc3RydWN0IHJ0ZV9hdXhpbGlhcnlfZGV2aWNlICphZGV2Ow0KPiA+ICsJaW50IHJl dDsNCj4gPiArDQo+ID4gKwlhZGV2ID0gUlRFX0RFVl9UT19BVVhJTElBUlkoZGV2KTsNCj4gPiAr CXJldCA9IHJ0ZV9hdXhpbGlhcnlfZHJpdmVyX3JlbW92ZV9kZXYoYWRldik7DQo+ID4gKwlpZiAo cmV0ID09IDApIHsNCj4gPiArCQlydGVfYXV4aWxpYXJ5X3JlbW92ZV9kZXZpY2UoYWRldik7DQo+ ID4gKwkJcnRlX2RldmFyZ3NfcmVtb3ZlKGRldi0+ZGV2YXJncyk7DQo+ID4gKwkJZnJlZShhZGV2 KTsNCj4gPiArCX0NCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRp YyBpbnQNCj4gPiArYXV4aWxpYXJ5X2RtYV9tYXAoc3RydWN0IHJ0ZV9kZXZpY2UgKmRldiwgdm9p ZCAqYWRkciwgdWludDY0X3QgaW92YSwgc2l6ZV90IGxlbikNCj4gPiArew0KPiA+ICsJc3RydWN0 IHJ0ZV9hdXhpbGlhcnlfZGV2aWNlICphdXhfZGV2ID0gUlRFX0RFVl9UT19BVVhJTElBUlkoZGV2 KTsNCj4gPiArDQo+ID4gKwlpZiAoZGV2ID09IE5VTEwgfHwgYXV4X2Rldi0+ZHJpdmVyID09IE5V TEwpIHsNCj4gPiArCQlydGVfZXJybm8gPSBFSU5WQUw7DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ ICsJfQ0KPiA+ICsJaWYgKGF1eF9kZXYtPmRyaXZlci0+ZG1hX21hcCA9PSBOVUxMKSB7DQo+ID4g KwkJcnRlX2Vycm5vID0gRU5PVFNVUDsNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKwl9DQo+ID4g KwlyZXR1cm4gYXV4X2Rldi0+ZHJpdmVyLT5kbWFfbWFwKGF1eF9kZXYsIGFkZHIsIGlvdmEsIGxl bik7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArYXV4aWxpYXJ5X2RtYV91 bm1hcChzdHJ1Y3QgcnRlX2RldmljZSAqZGV2LCB2b2lkICphZGRyLCB1aW50NjRfdCBpb3ZhLA0K PiA+ICsJCSAgICBzaXplX3QgbGVuKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgcnRlX2F1eGlsaWFy eV9kZXZpY2UgKmF1eF9kZXYgPSBSVEVfREVWX1RPX0FVWElMSUFSWShkZXYpOw0KPiA+ICsNCj4g PiArCWlmIChkZXYgPT0gTlVMTCB8fCBhdXhfZGV2LT5kcml2ZXIgPT0gTlVMTCkgew0KPiA+ICsJ CXJ0ZV9lcnJubyA9IEVJTlZBTDsNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKwl9DQo+ID4gKwlp ZiAoYXV4X2Rldi0+ZHJpdmVyLT5kbWFfdW5tYXAgPT0gTlVMTCkgew0KPiA+ICsJCXJ0ZV9lcnJu byA9IEVOT1RTVVA7DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJfQ0KPiA+ICsJcmV0dXJuIGF1 eF9kZXYtPmRyaXZlci0+ZG1hX3VubWFwKGF1eF9kZXYsIGFkZHIsIGlvdmEsIGxlbik7DQo+ID4g K30NCj4gPiArDQo+ID4gK2Jvb2wNCj4gPiArYXV4aWxpYXJ5X2lzX2lnbm9yZWRfZGV2aWNlKGNv bnN0IGNoYXIgKm5hbWUpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBydGVfZGV2YXJncyAqZGV2YXJn cyA9IGF1eGlsaWFyeV9kZXZhcmdzX2xvb2t1cChuYW1lKTsNCj4gPiArDQo+ID4gKwlzd2l0Y2gg KGF1eGlsaWFyeV9idXMuYnVzLmNvbmYuc2Nhbl9tb2RlKSB7DQo+ID4gKwljYXNlIFJURV9CVVNf U0NBTl9BTExPV0xJU1Q6DQo+ID4gKwkJaWYgKGRldmFyZ3MgJiYgZGV2YXJncy0+cG9saWN5ID09 IFJURV9ERVZfQUxMT1dFRCkNCj4gPiArCQkJcmV0dXJuIGZhbHNlOw0KPiA+ICsJCWJyZWFrOw0K PiA+ICsJY2FzZSBSVEVfQlVTX1NDQU5fVU5ERUZJTkVEOg0KPiA+ICsJY2FzZSBSVEVfQlVTX1ND QU5fQkxPQ0tMSVNUOg0KPiA+ICsJCWlmIChkZXZhcmdzID09IE5VTEwgfHwgZGV2YXJncy0+cG9s aWN5ICE9IFJURV9ERVZfQkxPQ0tFRCkNCj4gPiArCQkJcmV0dXJuIGZhbHNlOw0KPiA+ICsJCWJy ZWFrOw0KPiA+ICsJfQ0KPiA+ICsJcmV0dXJuIHRydWU7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0 YXRpYyBlbnVtIHJ0ZV9pb3ZhX21vZGUNCj4gPiArYXV4aWxpYXJ5X2dldF9pb21tdV9jbGFzcyh2 b2lkKQ0KPiA+ICt7DQo+ID4gKwljb25zdCBzdHJ1Y3QgcnRlX2F1eGlsaWFyeV9kcml2ZXIgKmRy djsNCj4gPiArDQo+ID4gKwlGT1JFQUNIX0RSSVZFUl9PTl9BVVhJTElBUllfQlVTKGRydikgew0K PiA+ICsJCWlmICgoZHJ2LT5kcnZfZmxhZ3MgJiBSVEVfQVVYSUxJQVJZX0RSVl9ORUVEX0lPVkFf QVNfVkEpID4gMCkNCj4gPiArCQkJcmV0dXJuIFJURV9JT1ZBX1ZBOw0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArCXJldHVybiBSVEVfSU9WQV9EQzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RydWN0IHJ0 ZV9hdXhpbGlhcnlfYnVzIGF1eGlsaWFyeV9idXMgPSB7DQo+ID4gKwkuYnVzID0gew0KPiA+ICsJ CS5zY2FuID0gYXV4aWxpYXJ5X3NjYW4sDQo+ID4gKwkJLnByb2JlID0gYXV4aWxpYXJ5X3Byb2Jl LA0KPiA+ICsJCS5maW5kX2RldmljZSA9IGF1eGlsaWFyeV9maW5kX2RldmljZSwNCj4gPiArCQku cGx1ZyA9IGF1eGlsaWFyeV9wbHVnLA0KPiA+ICsJCS51bnBsdWcgPSBhdXhpbGlhcnlfdW5wbHVn LA0KPiA+ICsJCS5wYXJzZSA9IGF1eGlsaWFyeV9wYXJzZSwNCj4gPiArCQkuZG1hX21hcCA9IGF1 eGlsaWFyeV9kbWFfbWFwLA0KPiA+ICsJCS5kbWFfdW5tYXAgPSBhdXhpbGlhcnlfZG1hX3VubWFw LA0KPiA+ICsJCS5nZXRfaW9tbXVfY2xhc3MgPSBhdXhpbGlhcnlfZ2V0X2lvbW11X2NsYXNzLA0K PiA+ICsJCS5kZXZfaXRlcmF0ZSA9IGF1eGlsaWFyeV9kZXZfaXRlcmF0ZSwNCj4gPiArCX0sDQo+ ID4gKwkuZGV2aWNlX2xpc3QgPSBUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGF1eGlsaWFyeV9idXMu ZGV2aWNlX2xpc3QpLA0KPiA+ICsJLmRyaXZlcl9saXN0ID0gVEFJTFFfSEVBRF9JTklUSUFMSVpF UihhdXhpbGlhcnlfYnVzLmRyaXZlcl9saXN0KSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK1JURV9S RUdJU1RFUl9CVVMoYXV4aWxpYXJ5LCBhdXhpbGlhcnlfYnVzLmJ1cyk7DQo+ID4gK1JURV9MT0df UkVHSVNURVJfREVGQVVMVChhdXhpbGlhcnlfYnVzX2xvZ3R5cGUsIE5PVElDRSk7DQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvYnVzL2F1eGlsaWFyeS9hdXhpbGlhcnlfcGFyYW1zLmMgYi9kcml2 ZXJzL2J1cy9hdXhpbGlhcnkvYXV4aWxpYXJ5X3BhcmFtcy5jDQo+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi5jZDNmYTU2Y2I0DQo+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ICsrKyBiL2RyaXZlcnMvYnVzL2F1eGlsaWFyeS9hdXhpbGlhcnlfcGFyYW1zLmMNCj4g PiBAQCAtMCwwICsxLDU5IEBADQo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt My1DbGF1c2UNCj4gPiArICogQ29weXJpZ2h0IChjKSAyMDIxIE5WSURJQSBDb3Jwb3JhdGlvbiAm IEFmZmlsaWF0ZXMNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ ID4gKw0KPiA+ICsjaW5jbHVkZSA8cnRlX2J1cy5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2Rldi5o Pg0KPiA+ICsjaW5jbHVkZSA8cnRlX2Vycm5vLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfa3Zhcmdz Lmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAicHJpdmF0ZS5oIg0KPiA+ICsjaW5jbHVkZSAicnRl X2J1c19hdXhpbGlhcnkuaCINCj4gPiArDQo+ID4gK2VudW0gYXV4aWxpYXJ5X3BhcmFtcyB7DQo+ ID4gKwlSVEVfQVVYSUxJQVJZX1BBUkFNX05BTUUsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0 aWMgY29uc3QgY2hhciAqIGNvbnN0IGF1eGlsaWFyeV9wYXJhbXNfa2V5c1tdID0gew0KPiA+ICsJ W1JURV9BVVhJTElBUllfUEFSQU1fTkFNRV0gPSAibmFtZSIsDQo+ID4gK307DQo+ID4gKw0KPiA+ ICtzdGF0aWMgaW50DQo+ID4gK2F1eGlsaWFyeV9kZXZfbWF0Y2goY29uc3Qgc3RydWN0IHJ0ZV9k ZXZpY2UgKmRldiwNCj4gPiArCSAgICAgIGNvbnN0IHZvaWQgKl9rdmxpc3QpDQo+ID4gK3sNCj4g PiArCWNvbnN0IHN0cnVjdCBydGVfa3ZhcmdzICprdmxpc3QgPSBfa3ZsaXN0Ow0KPiA+ICsJaW50 IHJldDsNCj4gPiArDQo+ID4gKwlyZXQgPSBydGVfa3ZhcmdzX3Byb2Nlc3Moa3ZsaXN0LA0KPiA+ ICsJCQlhdXhpbGlhcnlfcGFyYW1zX2tleXNbUlRFX0FVWElMSUFSWV9QQVJBTV9OQU1FXSwNCj4g PiArCQkJcnRlX2t2YXJnc19zdHJjbXAsICh2b2lkICopKHVpbnRwdHJfdClkZXYtPm5hbWUpOw0K PiA+ICsNCj4gPiArCXJldHVybiByZXQgIT0gMCA/IC0xIDogMDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArdm9pZCAqDQo+ID4gK2F1eGlsaWFyeV9kZXZfaXRlcmF0ZShjb25zdCB2b2lkICpzdGFydCwN Cj4gPiArCQkgICAgY29uc3QgY2hhciAqc3RyLA0KPiA+ICsJCSAgICBjb25zdCBzdHJ1Y3QgcnRl X2Rldl9pdGVyYXRvciAqaXQgX19ydGVfdW51c2VkKQ0KPiA+ICt7DQo+ID4gKwlydGVfYnVzX2Zp bmRfZGV2aWNlX3QgZmluZF9kZXZpY2U7DQo+ID4gKwlzdHJ1Y3QgcnRlX2t2YXJncyAqa3Zhcmdz ID0gTlVMTDsNCj4gPiArCXN0cnVjdCBydGVfZGV2aWNlICpkZXY7DQo+ID4gKw0KPiA+ICsJaWYg KHN0ciAhPSBOVUxMKSB7DQo+ID4gKwkJa3ZhcmdzID0gcnRlX2t2YXJnc19wYXJzZShzdHIsIGF1 eGlsaWFyeV9wYXJhbXNfa2V5cyk7DQo+ID4gKwkJaWYgKGt2YXJncyA9PSBOVUxMKSB7DQo+ID4g KwkJCUFVWElMSUFSWV9MT0coRVJSLCAiY2Fubm90IHBhcnNlIGFyZ3VtZW50IGxpc3QgJXMiLA0K PiA+ICsJCQkJICAgICAgc3RyKTsNCj4gPiArCQkJcnRlX2Vycm5vID0gRUlOVkFMOw0KPiA+ICsJ CQlyZXR1cm4gTlVMTDsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKwlmaW5kX2RldmljZSA9IGF1 eGlsaWFyeV9idXMuYnVzLmZpbmRfZGV2aWNlOw0KPiA+ICsJZGV2ID0gZmluZF9kZXZpY2Uoc3Rh cnQsIGF1eGlsaWFyeV9kZXZfbWF0Y2gsIGt2YXJncyk7DQo+ID4gKwlydGVfa3ZhcmdzX2ZyZWUo a3ZhcmdzKTsNCj4gPiArCXJldHVybiBkZXY7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9idXMvYXV4aWxpYXJ5L2xpbnV4L2F1eGlsaWFyeS5jIGIvZHJpdmVycy9idXMvYXV4aWxp YXJ5L2xpbnV4L2F1eGlsaWFyeS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eCAwMDAwMDAwMDAwLi44NDY0NDg3OTcxDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2Ry aXZlcnMvYnVzL2F1eGlsaWFyeS9saW51eC9hdXhpbGlhcnkuYw0KPiA+IEBAIC0wLDAgKzEsMTQx IEBADQo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiAr ICogQ29weXJpZ2h0IChjKSAyMDIxIE5WSURJQSBDb3Jwb3JhdGlvbiAmIEFmZmlsaWF0ZXMNCj4g PiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ID4gKyNpbmNsdWRlIDxk aXJlbnQuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxydGVfbG9nLmg+DQo+ID4gKyNpbmNsdWRl IDxydGVfYnVzLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfbWFsbG9jLmg+DQo+ID4gKyNpbmNsdWRl IDxydGVfZGV2YXJncy5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX21lbWNweS5oPg0KPiA+ICsjaW5j bHVkZSA8ZWFsX2ZpbGVzeXN0ZW0uaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICIuLi9ydGVfYnVz X2F1eGlsaWFyeS5oIg0KPiA+ICsjaW5jbHVkZSAiLi4vcHJpdmF0ZS5oIg0KPiA+ICsNCj4gPiAr I2RlZmluZSBBVVhJTElBUllfU1lTRlNfUEFUSCAiL3N5cy9idXMvYXV4aWxpYXJ5L2RldmljZXMi DQo+ID4gKw0KPiA+ICsvKiBTY2FuIG9uZSBhdXhpbGlhcnkgc3lzZnMgZW50cnksIGFuZCBmaWxs IHRoZSBkZXZpY2VzIGxpc3QgZnJvbSBpdC4gKi8NCj4gPiArc3RhdGljIGludA0KPiA+ICthdXhp bGlhcnlfc2Nhbl9vbmUoY29uc3QgY2hhciAqZGlybmFtZSwgY29uc3QgY2hhciAqbmFtZSkNCj4g PiArew0KPiA+ICsJc3RydWN0IHJ0ZV9hdXhpbGlhcnlfZGV2aWNlICpkZXY7DQo+ID4gKwlzdHJ1 Y3QgcnRlX2F1eGlsaWFyeV9kZXZpY2UgKmRldjI7DQo+ID4gKwljaGFyIGZpbGVuYW1lW1BBVEhf TUFYXTsNCj4gPiArCXVuc2lnbmVkIGxvbmcgdG1wOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ ID4gKwlkZXYgPSBtYWxsb2Moc2l6ZW9mKCpkZXYpKTsNCj4gPiArCWlmIChkZXYgPT0gTlVMTCkN Cj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsJbWVtc2V0KGRldiwgMCwgc2l6ZW9mKCpk ZXYpKTsNCj4gPiArCWlmIChydGVfc3Ryc2NweShkZXYtPm5hbWUsIG5hbWUsIHNpemVvZihkZXYt Pm5hbWUpKSA8IDApIHsNCj4gPiArCQlmcmVlKGRldik7DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ ICsJfQ0KPiA+ICsJZGV2LT5kZXZpY2UubmFtZSA9IGRldi0+bmFtZTsNCj4gPiArCWRldi0+ZGV2 aWNlLmJ1cyA9ICZhdXhpbGlhcnlfYnVzLmJ1czsNCj4gPiArDQo+ID4gKwkvKiBHZXQgTlVNQSBu b2RlLCBkZWZhdWx0IHRvIDAgaWYgbm90IHByZXNlbnQgKi8NCj4gPiArCXNucHJpbnRmKGZpbGVu YW1lLCBzaXplb2YoZmlsZW5hbWUpLCAiJXMvJXMvbnVtYV9ub2RlIiwNCj4gPiArCQkgZGlybmFt ZSwgbmFtZSk7DQo+ID4gKwlpZiAoYWNjZXNzKGZpbGVuYW1lLCBGX09LKSAhPSAtMSkgew0KPiA+ ICsJCWlmIChlYWxfcGFyc2Vfc3lzZnNfdmFsdWUoZmlsZW5hbWUsICZ0bXApID09IDApDQo+ID4g KwkJCWRldi0+ZGV2aWNlLm51bWFfbm9kZSA9IHRtcDsNCj4gPiArCQllbHNlDQo+ID4gKwkJCWRl di0+ZGV2aWNlLm51bWFfbm9kZSA9IC0xOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlkZXYtPmRl dmljZS5udW1hX25vZGUgPSAwOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWF1eGlsaWFyeV9vbl9z Y2FuKGRldik7DQo+ID4gKw0KPiA+ICsJLyogRGV2aWNlIGlzIHZhbGlkLCBhZGQgaW4gbGlzdCAo c29ydGVkKSAqLw0KPiA+ICsJVEFJTFFfRk9SRUFDSChkZXYyLCAmYXV4aWxpYXJ5X2J1cy5kZXZp Y2VfbGlzdCwgbmV4dCkgew0KPiA+ICsJCXJldCA9IHN0cmNtcChkZXYtPm5hbWUsIGRldjItPm5h bWUpOw0KPiA+ICsJCWlmIChyZXQgPiAwKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArCQlpZiAo cmV0IDwgMCkgew0KPiA+ICsJCQlhdXhpbGlhcnlfaW5zZXJ0X2RldmljZShkZXYyLCBkZXYpOw0K PiA+ICsJCX0gZWxzZSB7IC8qIGFscmVhZHkgcmVnaXN0ZXJlZCAqLw0KPiA+ICsJCQlpZiAocnRl X2Rldl9pc19wcm9iZWQoJmRldjItPmRldmljZSkgJiYNCj4gPiArCQkJICAgIGRldjItPmRldmlj ZS5kZXZhcmdzICE9IGRldi0+ZGV2aWNlLmRldmFyZ3MpIHsNCj4gPiArCQkJCS8qIFRvIHByb2Jl IGRldmljZSB3aXRoIG5ldyBkZXZhcmdzLiAqLw0KPiA+ICsJCQkJcnRlX2RldmFyZ3NfcmVtb3Zl KGRldjItPmRldmljZS5kZXZhcmdzKTsNCj4gPiArCQkJCWF1eGlsaWFyeV9vbl9zY2FuKGRldjIp Ow0KPiA+ICsJCQl9DQo+ID4gKwkJCWZyZWUoZGV2KTsNCj4gPiArCQl9DQo+ID4gKwkJcmV0dXJu IDA7DQo+ID4gKwl9DQo+ID4gKwlhdXhpbGlhcnlfYWRkX2RldmljZShkZXYpOw0KPiA+ICsJcmV0 dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIFRlc3Qgd2hldGhlciB0aGUg YXV4aWxpYXJ5IGRldmljZSBleGlzdA0KPiANCj4gTWlzc2luZyBmdWxsIHN0b3AgYWJvdmUuDQo+ IA0KPiA+ICsgKi8NCj4gPiArYm9vbA0KPiA+ICthdXhpbGlhcnlfZGV2X2V4aXN0cyhjb25zdCBj aGFyICpuYW1lKQ0KPiA+ICt7DQo+ID4gKwlESVIgKmRpcjsNCj4gPiArCWNoYXIgZGlybmFtZVtQ QVRIX01BWF07DQo+ID4gKw0KPiA+ICsJc25wcmludGYoZGlybmFtZSwgc2l6ZW9mKGRpcm5hbWUp LCAiJXMvJXMiLA0KPiA+ICsJCSBBVVhJTElBUllfU1lTRlNfUEFUSCwgbmFtZSk7DQo+ID4gKwlk aXIgPSBvcGVuZGlyKGRpcm5hbWUpOw0KPiA+ICsJaWYgKGRpciA9PSBOVUxMKQ0KPiA+ICsJCXJl dHVybiBmYWxzZTsNCj4gPiArCWNsb3NlZGlyKGRpcik7DQo+ID4gKwlyZXR1cm4gdHJ1ZTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogU2NhbiB0aGUgZGV2aWNlcyBpbiB0aGUgYXV4 aWxpYXJ5IGJ1cw0KPiANCj4gTWlzc2luZyBmdWxsIHN0b3AgYWJvdmUuDQo+IA0KPiA+ICsgKi8N Cj4gPiAraW50DQo+ID4gK2F1eGlsaWFyeV9zY2FuKHZvaWQpDQo+ID4gK3sNCj4gPiArCXN0cnVj dCBkaXJlbnQgKmU7DQo+ID4gKwlESVIgKmRpcjsNCj4gPiArCWNoYXIgZGlybmFtZVtQQVRIX01B WF07DQo+ID4gKwlzdHJ1Y3QgcnRlX2F1eGlsaWFyeV9kcml2ZXIgKmRydjsNCj4gPiArDQo+ID4g KwlkaXIgPSBvcGVuZGlyKEFVWElMSUFSWV9TWVNGU19QQVRIKTsNCj4gPiArCWlmIChkaXIgPT0g TlVMTCkgew0KPiA+ICsJCUFVWElMSUFSWV9MT0coSU5GTywgIiVzIG5vdCBmb3VuZCwgaXMgYXV4 aWxpYXJ5IG1vZHVsZSBsb2FkZWQ/IiwNCj4gPiArCQkJICAgICAgQVVYSUxJQVJZX1NZU0ZTX1BB VEgpOw0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXdoaWxlICgoZSA9 IHJlYWRkaXIoZGlyKSkgIT0gTlVMTCkgew0KPiA+ICsJCWlmIChlLT5kX25hbWVbMF0gPT0gJy4n KQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArDQo+ID4gKwkJaWYgKGF1eGlsaWFyeV9pc19pZ25v cmVkX2RldmljZShlLT5kX25hbWUpKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArDQo+ID4gKwkJ c25wcmludGYoZGlybmFtZSwgc2l6ZW9mKGRpcm5hbWUpLCAiJXMvJXMiLA0KPiA+ICsJCQkgQVVY SUxJQVJZX1NZU0ZTX1BBVEgsIGUtPmRfbmFtZSk7DQo+ID4gKw0KPiA+ICsJCS8qIElnbm9yZSBp ZiBubyBkcml2ZXIgY2FuIGhhbmRsZS4gKi8NCj4gPiArCQlGT1JFQUNIX0RSSVZFUl9PTl9BVVhJ TElBUllfQlVTKGRydikgew0KPiA+ICsJCQlpZiAoZHJ2LT5tYXRjaChlLT5kX25hbWUpKQ0KPiA+ ICsJCQkJYnJlYWs7DQo+ID4gKwkJfQ0KPiA+ICsJCWlmIChkcnYgPT0gTlVMTCkNCj4gPiArCQkJ Y29udGludWU7DQo+ID4gKw0KPiA+ICsJCWlmIChhdXhpbGlhcnlfc2Nhbl9vbmUoZGlybmFtZSwg ZS0+ZF9uYW1lKSA8IDApDQo+ID4gKwkJCWdvdG8gZXJyb3I7DQo+ID4gKwl9DQo+ID4gKwljbG9z ZWRpcihkaXIpOw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICtlcnJvcjoNCj4gPiArCWNs b3NlZGlyKGRpcik7DQo+ID4gKwlyZXR1cm4gLTE7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9idXMvYXV4aWxpYXJ5L21lc29uLmJ1aWxkIGIvZHJpdmVycy9idXMvYXV4aWxpYXJ5 L21lc29uLmJ1aWxkDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAw MDAwLi4zNTc1NTBlZmY3DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvYnVz L2F1eGlsaWFyeS9tZXNvbi5idWlsZA0KPiA+IEBAIC0wLDAgKzEsMTYgQEANCj4gPiArIyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyMgQ29weXJpZ2h0IChjKSAy MDIxIE5WSURJQSBDb3Jwb3JhdGlvbiAmIEFmZmlsaWF0ZXMNCj4gPiArDQo+ID4gK2hlYWRlcnMg PSBmaWxlcygNCj4gPiArICAgICAgICAncnRlX2J1c19hdXhpbGlhcnkuaCcsDQo+ID4gKykNCj4g PiArc291cmNlcyA9IGZpbGVzKA0KPiA+ICsgICAgICAgICdhdXhpbGlhcnlfY29tbW9uLmMnLA0K PiA+ICsgICAgICAgICdhdXhpbGlhcnlfcGFyYW1zLmMnLA0KPiA+ICspDQo+ID4gK2lmIGlzX2xp bnV4DQo+ID4gKyAgICBzb3VyY2VzICs9IGZpbGVzKA0KPiA+ICsgICAgICAgICdsaW51eC9hdXhp bGlhcnkuYycsDQo+ID4gKyAgICApDQo+ID4gK2VuZGlmDQo+ID4gK2RlcHMgKz0gWydrdmFyZ3Mn XQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2J1cy9hdXhpbGlhcnkvcHJpdmF0ZS5oIGIvZHJp dmVycy9idXMvYXV4aWxpYXJ5L3ByaXZhdGUuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4gaW5kZXggMDAwMDAwMDAwMC4uY2IzZTg0OTk5Mw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiAr KysgYi9kcml2ZXJzL2J1cy9hdXhpbGlhcnkvcHJpdmF0ZS5oDQo+ID4gQEAgLTAsMCArMSw3NCBA QA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAq IENvcHlyaWdodCAoYykgMjAyMSBOVklESUEgQ29ycG9yYXRpb24gJiBBZmZpbGlhdGVzDQo+ID4g KyAqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBBVVhJTElBUllfUFJJVkFURV9IDQo+IA0KPiBNYXkg YmUgYWRkIEJVU18gcHJlZml4IGF0IGxlYWF0Pw0KPiANCj4gPiArI2RlZmluZSBBVVhJTElBUllf UFJJVkFURV9IDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPg0KPiA+ICsjaW5jbHVk ZSA8c3RkaW8uaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJydGVfYnVzX2F1eGlsaWFyeS5oIg0K PiA+ICsNCj4gPiArZXh0ZXJuIHN0cnVjdCBydGVfYXV4aWxpYXJ5X2J1cyBhdXhpbGlhcnlfYnVz Ow0KPiA+ICtleHRlcm4gaW50IGF1eGlsaWFyeV9idXNfbG9ndHlwZTsNCj4gPiArDQo+ID4gKyNk ZWZpbmUgQVVYSUxJQVJZX0xPRyhsZXZlbCwgLi4uKSBcDQo+ID4gKwlydGVfbG9nKFJURV9MT0df ICMjIGxldmVsLCBhdXhpbGlhcnlfYnVzX2xvZ3R5cGUsIFwNCj4gPiArCQlSVEVfRk1UKCJhdXhp bGlhcnkgYnVzOiAiIFJURV9GTVRfSEVBRChfX1ZBX0FSR1NfXywpICJcbiIsIFwNCj4gPiArCQkJ UlRFX0ZNVF9UQUlMKF9fVkFfQVJHU19fLCkpKQ0KPiA+ICsNCj4gPiArLyogQXV4aWxpYXJ5IGJ1 cyBpdGVyYXRvcnMgKi8NCj4gPiArI2RlZmluZSBGT1JFQUNIX0RFVklDRV9PTl9BVVhJTElBUllf QlVTKHApIFwNCj4gPiArCQlUQUlMUV9GT1JFQUNIKHAsICYoYXV4aWxpYXJ5X2J1cy5kZXZpY2Vf bGlzdCksIG5leHQpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEZPUkVBQ0hfRFJJVkVSX09OX0FVWElM SUFSWV9CVVMocCkgXA0KPiA+ICsJCVRBSUxRX0ZPUkVBQ0gocCwgJihhdXhpbGlhcnlfYnVzLmRy aXZlcl9saXN0KSwgbmV4dCkNCj4gPiArDQo+ID4gK2Jvb2wgYXV4aWxpYXJ5X2Rldl9leGlzdHMo Y29uc3QgY2hhciAqbmFtZSk7DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBTY2FuIHRoZSBjb250 ZW50IG9mIHRoZSBhdXhpbGlhcnkgYnVzLCBhbmQgdGhlIGRldmljZXMgaW4gdGhlIGRldmljZXMN Cj4gPiArICogbGlzdC4NCj4gPiArICovDQo+ID4gK2ludCBhdXhpbGlhcnlfc2Nhbih2b2lkKTsN Cj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIFVwZGF0ZSBhIGRldmljZSBiZWluZyBzY2FubmVkLg0K PiA+ICsgKi8NCj4gPiArdm9pZCBhdXhpbGlhcnlfb25fc2NhbihzdHJ1Y3QgcnRlX2F1eGlsaWFy eV9kZXZpY2UgKmF1eF9kZXYpOw0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogVmFsaWRhdGUgd2hl dGhlciBhIGRldmljZSB3aXRoIGdpdmVuIGF1eGlsaWFyeSBkZXZpY2Ugc2hvdWxkIGJlIGlnbm9y ZWQNCj4gPiArICogb3Igbm90Lg0KPiA+ICsgKi8NCj4gPiArYm9vbCBhdXhpbGlhcnlfaXNfaWdu b3JlZF9kZXZpY2UoY29uc3QgY2hhciAqbmFtZSk7DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBB ZGQgYW4gYXV4aWxpYXJ5IGRldmljZSB0byB0aGUgYXV4aWxpYXJ5IGJ1cyAoYXBwZW5kIHRvIGF1 eGlsaWFyeSBkZXZpY2UNCj4gPiArICogbGlzdCkuIFRoaXMgZnVuY3Rpb24gYWxzbyB1cGRhdGVz IHRoZSBidXMgcmVmZXJlbmNlcyBvZiB0aGUgYXV4aWxpYXJ5DQo+ID4gKyAqIGRldmljZSBhbmQg dGhlIGdlbmVyaWMgZGV2aWNlIG9iamVjdCBlbWJlZGRlZCB3aXRoaW4uDQo+ID4gKyAqLw0KPiA+ ICt2b2lkIGF1eGlsaWFyeV9hZGRfZGV2aWNlKHN0cnVjdCBydGVfYXV4aWxpYXJ5X2RldmljZSAq YXV4X2Rldik7DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBJbnNlcnQgYW4gYXV4aWxpYXJ5IGRl dmljZSBpbiB0aGUgYXV4aWxpYXJ5IGJ1cyBhdCBhIHBhcnRpY3VsYXIgbG9jYXRpb24NCj4gPiAr ICogaW4gdGhlIGRldmljZSBsaXN0LiBJdCBhbHNvIHVwZGF0ZXMgdGhlIGF1eGlsaWFyeSBidXMg cmVmZXJlbmNlIG9mIHRoZQ0KPiA+ICsgKiBuZXcgZGV2aWNlcyB0byBiZSBpbnNlcnRlZC4NCj4g PiArICovDQo+ID4gK3ZvaWQgYXV4aWxpYXJ5X2luc2VydF9kZXZpY2Uoc3RydWN0IHJ0ZV9hdXhp bGlhcnlfZGV2aWNlICpleGlzdF9hdXhfZGV2LA0KPiA+ICsJCQkgICAgIHN0cnVjdCBydGVfYXV4 aWxpYXJ5X2RldmljZSAqbmV3X2F1eF9kZXYpOw0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogTWF0 Y2ggdGhlIGF1eGlsaWFyeSBkcml2ZXIgYW5kIGRldmljZSBieSBkcml2ZXIgZnVuY3Rpb24NCj4g DQo+IE1pc3NpbmcgZnVsbCBzdG9wLg0KPiANCj4gPiArICovDQo+ID4gK2Jvb2wgYXV4aWxpYXJ5 X21hdGNoKGNvbnN0IHN0cnVjdCBydGVfYXV4aWxpYXJ5X2RyaXZlciAqYXV4X2RydiwNCj4gPiAr CQkgICAgIGNvbnN0IHN0cnVjdCBydGVfYXV4aWxpYXJ5X2RldmljZSAqYXV4X2Rldik7DQo+ID4g Kw0KPiA+ICsvKg0KPiA+ICsgKiBJdGVyYXRlIG92ZXIgZGV2aWNlcywgbWF0Y2hpbmcgYW55IGRl dmljZSBhZ2FpbnN0IHRoZSBwcm92aWRlZCBzdHJpbmcNCj4gDQo+IE1pc3NpbmcgZnVsbCBzdG9w Lg0KPiANCj4gPiArICovDQo+ID4gK3ZvaWQgKmF1eGlsaWFyeV9kZXZfaXRlcmF0ZShjb25zdCB2 b2lkICpzdGFydCwgY29uc3QgY2hhciAqc3RyLA0KPiA+ICsJCQkgICAgY29uc3Qgc3RydWN0IHJ0 ZV9kZXZfaXRlcmF0b3IgKml0KTsNCj4gPiArDQo+ID4gKyNlbmRpZiAvKiBBVVhJTElBUllfUFJJ VkFURV9IICovDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYnVzL2F1eGlsaWFyeS9ydGVfYnVz X2F1eGlsaWFyeS5oIGIvZHJpdmVycy9idXMvYXV4aWxpYXJ5L3J0ZV9idXNfYXV4aWxpYXJ5LmgN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjE2YjE0N2Uz ODcNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9idXMvYXV4aWxpYXJ5L3J0 ZV9idXNfYXV4aWxpYXJ5LmgNCj4gPiBAQCAtMCwwICsxLDIwMSBAQA0KPiA+ICsvKiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAy MSBOVklESUEgQ29ycG9yYXRpb24gJiBBZmZpbGlhdGVzDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiAr I2lmbmRlZiBSVEVfQlVTX0FVWElMSUFSWV9IDQo+ID4gKyNkZWZpbmUgUlRFX0JVU19BVVhJTElB UllfSA0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEBmaWxlDQo+ID4gKyAqDQo+ID4gKyAqIEF1 eGlsaWFyeSBCdXMgSW50ZXJmYWNlLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZmRlZiBfX2Nw bHVzcGx1cw0KPiA+ICtleHRlcm4gIkMiIHsNCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICsjaW5j bHVkZSA8c3RkaW8uaD4NCj4gPiArI2luY2x1ZGUgPHN0ZGxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8 bGltaXRzLmg+DQo+ID4gKyNpbmNsdWRlIDxlcnJuby5oPg0KPiA+ICsjaW5jbHVkZSA8c3lzL3F1 ZXVlLmg+DQo+ID4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gPiArI2luY2x1ZGUgPGludHR5cGVz Lmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8cnRlX2RlYnVnLmg+DQo+ID4gKyNpbmNsdWRlIDxy dGVfaW50ZXJydXB0cy5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2Rldi5oPg0KPiA+ICsjaW5jbHVk ZSA8cnRlX2J1cy5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2t2YXJncy5oPg0KPiA+ICsNCj4gPiAr I2RlZmluZSBSVEVfQlVTX0FVWElMSUFSWV9OQU1FICJhdXhpbGlhcnkiDQo+ID4gKw0KPiA+ICsv KiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAqLw0KPiA+ICtzdHJ1Y3QgcnRlX2F1eGlsaWFyeV9kcml2 ZXI7DQo+ID4gK3N0cnVjdCBydGVfYXV4aWxpYXJ5X2J1czsNCj4gPiArc3RydWN0IHJ0ZV9hdXhp bGlhcnlfZGV2aWNlOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIE1hdGNoIGZ1bmN0aW9uIGZv ciB0aGUgZHJpdmVyIHRvIGRlY2lkZSBpZiBkZXZpY2UgY2FuIGJlIGhhbmRsZWQuDQo+ID4gKyAq DQo+ID4gKyAqIEBwYXJhbSBuYW1lDQo+ID4gKyAqICAgUG9pbnRlciB0byB0aGUgYXV4aWxpYXJ5 IGRldmljZSBuYW1lLg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgV2hldGhlciB0aGUgZHJp dmVyIGNhbiBoYW5kbGUgdGhlIGF1eGlsaWFyeSBkZXZpY2UuDQo+ID4gKyAqLw0KPiA+ICt0eXBl ZGVmIGJvb2wocnRlX2F1eGlsaWFyeV9tYXRjaF90KShjb25zdCBjaGFyICpuYW1lKTsNCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgKiBJbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGRyaXZl ciBjYWxsZWQgZHVyaW5nIGF1eGlsaWFyeSBwcm9iaW5nLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFy YW0gZHJ2DQo+ID4gKyAqICAgUG9pbnRlciB0byB0aGUgYXV4aWxpYXJ5IGRyaXZlci4NCj4gPiAr ICogQHBhcmFtIGRldg0KPiA+ICsgKiAgIFBvaW50ZXIgdG8gdGhlIGF1eGlsaWFyeSBkZXZpY2Uu DQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAtIDAgT24gc3VjY2Vzcy4NCj4gPiArICogICAt IE5lZ2F0aXZlIHZhbHVlIGFuZCBydGVfZXJybm8gaXMgc2V0IG90aGVyd2lzZS4NCj4gPiArICov DQo+ID4gK3R5cGVkZWYgaW50KHJ0ZV9hdXhpbGlhcnlfcHJvYmVfdCkoc3RydWN0IHJ0ZV9hdXhp bGlhcnlfZHJpdmVyICpkcnYsDQo+ID4gKwkJCQkgICAgc3RydWN0IHJ0ZV9hdXhpbGlhcnlfZGV2 aWNlICpkZXYpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIFVuaW5pdGlhbGl6YXRpb24gZnVu Y3Rpb24gZm9yIHRoZSBkcml2ZXIgY2FsbGVkIGR1cmluZyBob3RwbHVnZ2luZy4NCj4gPiArICoN Cj4gPiArICogQHBhcmFtIGRldg0KPiA+ICsgKiAgIFBvaW50ZXIgdG8gdGhlIGF1eGlsaWFyeSBk ZXZpY2UuDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAtIDAgT24gc3VjY2Vzcy4NCj4gPiAr ICogICAtIE5lZ2F0aXZlIHZhbHVlIGFuZCBydGVfZXJybm8gaXMgc2V0IG90aGVyd2lzZS4NCj4g PiArICovDQo+ID4gK3R5cGVkZWYgaW50IChydGVfYXV4aWxpYXJ5X3JlbW92ZV90KShzdHJ1Y3Qg cnRlX2F1eGlsaWFyeV9kZXZpY2UgKmRldik7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogRHJp dmVyLXNwZWNpZmljIERNQSBtYXBwaW5nLiBBZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCB0aGUgZGV2 aWNlDQo+ID4gKyAqIHdpbGwgYmUgYWJsZSB0byByZWFkL3dyaXRlIGZyb20vdG8gdGhpcyBzZWdt ZW50Lg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gZGV2DQo+ID4gKyAqICAgUG9pbnRlciB0byB0 aGUgYXV4aWxpYXJ5IGRldmljZS4NCj4gPiArICogQHBhcmFtIGFkZHINCj4gPiArICogICBTdGFy dGluZyB2aXJ0dWFsIGFkZHJlc3Mgb2YgbWVtb3J5IHRvIGJlIG1hcHBlZC4NCj4gPiArICogQHBh cmFtIGlvdmENCj4gPiArICogICBTdGFydGluZyBJT1ZBIGFkZHJlc3Mgb2YgbWVtb3J5IHRvIGJl IG1hcHBlZC4NCj4gPiArICogQHBhcmFtIGxlbg0KPiA+ICsgKiAgIExlbmd0aCBvZiBtZW1vcnkg c2VnbWVudCBiZWluZyBtYXBwZWQuDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAtIDAgT24g c3VjY2Vzcy4NCj4gPiArICogICAtIE5lZ2F0aXZlIHZhbHVlIGFuZCBydGVfZXJybm8gaXMgc2V0 IG90aGVyd2lzZS4NCj4gPiArICovDQo+ID4gK3R5cGVkZWYgaW50IChydGVfYXV4aWxpYXJ5X2Rt YV9tYXBfdCkoc3RydWN0IHJ0ZV9hdXhpbGlhcnlfZGV2aWNlICpkZXYsDQo+ID4gKwkJCQkgICAg ICAgdm9pZCAqYWRkciwgdWludDY0X3QgaW92YSwgc2l6ZV90IGxlbik7DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICogRHJpdmVyLXNwZWNpZmljIERNQSB1bi1tYXBwaW5nLiBBZnRlciBhIHN1Y2Nl c3NmdWwgY2FsbCB0aGUgZGV2aWNlDQo+ID4gKyAqIHdpbGwgbm90IGJlIGFibGUgdG8gcmVhZC93 cml0ZSBmcm9tL3RvIHRoaXMgc2VnbWVudC4NCj4gPiArICoNCj4gPiArICogQHBhcmFtIGRldg0K PiA+ICsgKiAgIFBvaW50ZXIgdG8gdGhlIGF1eGlsaWFyeSBkZXZpY2UuDQo+ID4gKyAqIEBwYXJh bSBhZGRyDQo+ID4gKyAqICAgU3RhcnRpbmcgdmlydHVhbCBhZGRyZXNzIG9mIG1lbW9yeSB0byBi ZSB1bm1hcHBlZC4NCj4gPiArICogQHBhcmFtIGlvdmENCj4gPiArICogICBTdGFydGluZyBJT1ZB IGFkZHJlc3Mgb2YgbWVtb3J5IHRvIGJlIHVubWFwcGVkLg0KPiA+ICsgKiBAcGFyYW0gbGVuDQo+ ID4gKyAqICAgTGVuZ3RoIG9mIG1lbW9yeSBzZWdtZW50IGJlaW5nIHVubWFwcGVkLg0KPiA+ICsg KiBAcmV0dXJuDQo+ID4gKyAqICAgLSAwIE9uIHN1Y2Nlc3MuDQo+ID4gKyAqICAgLSBOZWdhdGl2 ZSB2YWx1ZSBhbmQgcnRlX2Vycm5vIGlzIHNldCBvdGhlcndpc2UuDQo+ID4gKyAqLw0KPiA+ICt0 eXBlZGVmIGludCAocnRlX2F1eGlsaWFyeV9kbWFfdW5tYXBfdCkoc3RydWN0IHJ0ZV9hdXhpbGlh cnlfZGV2aWNlICpkZXYsDQo+ID4gKwkJCQkJIHZvaWQgKmFkZHIsIHVpbnQ2NF90IGlvdmEsIHNp emVfdCBsZW4pOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEEgc3RydWN0dXJlIGRlc2NyaWJp bmcgYW4gYXV4aWxpYXJ5IGRldmljZS4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBydGVfYXV4aWxp YXJ5X2RldmljZSB7DQo+ID4gKwlUQUlMUV9FTlRSWShydGVfYXV4aWxpYXJ5X2RldmljZSkgbmV4 dDsgICAvKio8IE5leHQgcHJvYmVkIGRldmljZS4gKi8NCj4gPiArCXN0cnVjdCBydGVfZGV2aWNl IGRldmljZTsgICAgICAgICAgICAgICAgIC8qKjwgSW5oZXJpdCBjb3JlIGRldmljZSAqLw0KPiA+ ICsJY2hhciBuYW1lW1JURV9ERVZfTkFNRV9NQVhfTEVOICsgMV07ICAgICAgLyoqPCBBU0NJSSBk ZXZpY2UgbmFtZSAqLw0KPiA+ICsJc3RydWN0IHJ0ZV9pbnRyX2hhbmRsZSBpbnRyX2hhbmRsZTsg ICAgICAgLyoqPCBJbnRlcnJ1cHQgaGFuZGxlICovDQo+ID4gKwlzdHJ1Y3QgcnRlX2F1eGlsaWFy eV9kcml2ZXIgKmRyaXZlcjsgICAgICAvKio8IERldmljZSBkcml2ZXIgKi8NCj4gPiArfTsNCj4g PiArDQo+ID4gKy8qKiBMaXN0IG9mIGF1eGlsaWFyeSBkZXZpY2VzICovDQo+ID4gK1RBSUxRX0hF QUQocnRlX2F1eGlsaWFyeV9kZXZpY2VfbGlzdCwgcnRlX2F1eGlsaWFyeV9kZXZpY2UpOw0KPiA+ ICsvKiogTGlzdCBvZiBhdXhpbGlhcnkgZHJpdmVycyAqLw0KPiA+ICtUQUlMUV9IRUFEKHJ0ZV9h dXhpbGlhcnlfZHJpdmVyX2xpc3QsIHJ0ZV9hdXhpbGlhcnlfZHJpdmVyKTsNCj4gDQo+IFNob3Vs ZG4ndCB3ZSBoaWRlIHJ0ZV9hdXhpbGlhcnlfZGV2aWNlIGluc2lkZSB0aGUgbGlicmFyeSB0YWtl DQo+IEFQSS9BQkkgc3RhYmlsaXR5IGludG8gYWNjb3VudD8gT3Igd2lsbCBiZSBpdCBEUERLIGlu dGVybmFsIGFueXdheT8gSWYNCj4gc28sIGl0IHNob3VsZCBiZSBkb25lIElOVEVSTkFMIGZyb20g dGhlIHZlcnkNCj4gYmVnaW5uaW5nLg0KPiANCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBTdHJ1 Y3R1cmUgZGVzY3JpYmluZyB0aGUgYXV4aWxpYXJ5IGJ1cw0KPiA+ICsgKi8NCj4gPiArc3RydWN0 IHJ0ZV9hdXhpbGlhcnlfYnVzIHsNCj4gPiArCXN0cnVjdCBydGVfYnVzIGJ1czsgICAgICAgICAg ICAgICAgICAvKio8IEluaGVyaXQgdGhlIGdlbmVyaWMgY2xhc3MgKi8NCj4gPiArCXN0cnVjdCBy dGVfYXV4aWxpYXJ5X2RldmljZV9saXN0IGRldmljZV9saXN0OyAgLyoqPCBMaXN0IG9mIGRldmlj ZXMgKi8NCj4gPiArCXN0cnVjdCBydGVfYXV4aWxpYXJ5X2RyaXZlcl9saXN0IGRyaXZlcl9saXN0 OyAgLyoqPCBMaXN0IG9mIGRyaXZlcnMgKi8NCj4gPiArfTsNCj4gDQo+IEl0IGxvb2tzIGludGVy bmFsLiBUaGUgZm9sbG93aW5nIGZvcndhcmQgZGVjbGFyYXRpb24gc2hvdWxkIGJlDQo+IHN1ZmZp Y2llbnQgdG8gYnVpbGQuDQo+IA0KPiBzdHJ1Y3QgcnRlX2F1eGlsaWFyeV9idXM7DQo+IA0KPiAN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBBIHN0cnVjdHVyZSBkZXNjcmliaW5nIGFuIGF1eGls aWFyeSBkcml2ZXIuDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgcnRlX2F1eGlsaWFyeV9kcml2ZXIg ew0KPiA+ICsJVEFJTFFfRU5UUlkocnRlX2F1eGlsaWFyeV9kcml2ZXIpIG5leHQ7IC8qKjwgTmV4 dCBpbiBsaXN0LiAqLw0KPiA+ICsJc3RydWN0IHJ0ZV9kcml2ZXIgZHJpdmVyOyAgICAgICAgICAg ICAvKio8IEluaGVyaXQgY29yZSBkcml2ZXIuICovDQo+ID4gKwlzdHJ1Y3QgcnRlX2F1eGlsaWFy eV9idXMgKmJ1czsgICAgICAgIC8qKjwgQXV4aWxpYXJ5IGJ1cyByZWZlcmVuY2UuICovDQo+ID4g KwlydGVfYXV4aWxpYXJ5X21hdGNoX3QgKm1hdGNoOyAgICAgICAgIC8qKjwgRGV2aWNlIG1hdGNo IGZ1bmN0aW9uLiAqLw0KPiA+ICsJcnRlX2F1eGlsaWFyeV9wcm9iZV90ICpwcm9iZTsgICAgICAg ICAvKio8IERldmljZSBwcm9iZSBmdW5jdGlvbi4gKi8NCj4gPiArCXJ0ZV9hdXhpbGlhcnlfcmVt b3ZlX3QgKnJlbW92ZTsgICAgICAgLyoqPCBEZXZpY2UgcmVtb3ZlIGZ1bmN0aW9uLiAqLw0KPiA+ ICsJcnRlX2F1eGlsaWFyeV9kbWFfbWFwX3QgKmRtYV9tYXA7ICAgICAvKio8IERldmljZSBETUEg bWFwIGZ1bmN0aW9uLiAqLw0KPiA+ICsJcnRlX2F1eGlsaWFyeV9kbWFfdW5tYXBfdCAqZG1hX3Vu bWFwOyAvKio8IERldmljZSBETUEgdW5tYXAgZnVuY3Rpb24uICovDQo+ID4gKwl1aW50MzJfdCBk cnZfZmxhZ3M7ICAgICAgICAgICAgICAgICAgIC8qKjwgRmxhZ3MgUlRFX0FVWElMSUFSWV9EUlZf Ki4gKi8NCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBAaW50ZXJuYWwNCj4gPiAr ICogSGVscGVyIG1hY3JvIGZvciBkcml2ZXJzIHRoYXQgbmVlZCB0byBjb252ZXJ0IHRvIHN0cnVj dCBydGVfYXV4aWxpYXJ5X2RldmljZS4NCj4gPiArICovDQo+ID4gKyNkZWZpbmUgUlRFX0RFVl9U T19BVVhJTElBUlkocHRyKSBcDQo+ID4gKwljb250YWluZXJfb2YocHRyLCBzdHJ1Y3QgcnRlX2F1 eGlsaWFyeV9kZXZpY2UsIGRldmljZSkNCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRFX0RFVl9UT19B VVhJTElBUllfQ09OU1QocHRyKSBcDQo+ID4gKwljb250YWluZXJfb2YocHRyLCBjb25zdCBzdHJ1 Y3QgcnRlX2F1eGlsaWFyeV9kZXZpY2UsIGRldmljZSkNCj4gPiArDQo+ID4gKyNkZWZpbmUgUlRF X0VUSF9ERVZfVE9fQVVYSUxJQVJZKGV0aF9kZXYpIFwNCj4gPiArCVJURV9ERVZfVE9fQVVYSUxJ QVJZKChldGhfZGV2KS0+ZGV2aWNlKQ0KPiA+ICsNCj4gPiArLyoqIERldmljZSBkcml2ZXIgbmVl ZHMgSU9WQSBhcyBWQSBhbmQgY2Fubm90IHdvcmsgd2l0aCBJT1ZBIGFzIFBBICovDQo+ID4gKyNk ZWZpbmUgUlRFX0FVWElMSUFSWV9EUlZfTkVFRF9JT1ZBX0FTX1ZBIDB4MDAyDQo+ID4gKw0KPiA+ ICsvKioNCj4gDQo+IERvbid0IHdlIG5lZWQgRVhQRVJJTUVOVEFMIG5vdGljZSBoZXJlPw0KPiAN Cj4gPiArICogUmVnaXN0ZXIgYW4gYXV4aWxpYXJ5IGRyaXZlci4NCj4gPiArICoNCj4gPiArICog QHBhcmFtIGRyaXZlcg0KPiA+ICsgKiAgIEEgcG9pbnRlciB0byBhIHJ0ZV9hdXhpbGlhcnlfZHJp dmVyIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBkcml2ZXINCj4gPiArICogICB0byBiZSByZWdp c3RlcmVkLg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK3ZvaWQgcnRl X2F1eGlsaWFyeV9yZWdpc3RlcihzdHJ1Y3QgcnRlX2F1eGlsaWFyeV9kcml2ZXIgKmRyaXZlcik7 DQo+ID4gKw0KPiA+ICsvKiogSGVscGVyIGZvciBhdXhpbGlhcnkgZGV2aWNlIHJlZ2lzdHJhdGlv biBmcm9tIGRyaXZlciBpbnN0YW5jZSAqLw0KPiA+ICsjZGVmaW5lIFJURV9QTURfUkVHSVNURVJf QVVYSUxJQVJZKG5tLCBhdXhpbGlhcnlfZHJ2KSBcDQo+ID4gKwlSVEVfSU5JVChhdXhpbGlhcnlp bml0Zm5fICMjbm0pIFwNCj4gPiArCXsgXA0KPiA+ICsJCShhdXhpbGlhcnlfZHJ2KS5kcml2ZXIu bmFtZSA9IFJURV9TVFIobm0pOyBcDQo+ID4gKwkJcnRlX2F1eGlsaWFyeV9yZWdpc3RlcigmKGF1 eGlsaWFyeV9kcnYpKTsgXA0KPiA+ICsJfSBcDQo+ID4gKwlSVEVfUE1EX0VYUE9SVF9OQU1FKG5t LCBfX0NPVU5URVJfXykNCj4gPiArDQo+ID4gKy8qKg0KPiANCj4gRG9uJ3Qgd2UgbmVlZCBFWFBF UklNRU5UQUwgbm90aWNlIGhlcmU/DQo+IA0KPiA+ICsgKiBVbnJlZ2lzdGVyIGFuIGF1eGlsaWFy eSBkcml2ZXIuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBkcml2ZXINCj4gPiArICogICBBIHBv aW50ZXIgdG8gYSBydGVfYXV4aWxpYXJ5X2RyaXZlciBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUg ZHJpdmVyDQo+ID4gKyAqICAgdG8gYmUgdW5yZWdpc3RlcmVkLg0KPiA+ICsgKi8NCj4gPiArX19y dGVfZXhwZXJpbWVudGFsDQo+ID4gK3ZvaWQgcnRlX2F1eGlsaWFyeV91bnJlZ2lzdGVyKHN0cnVj dCBydGVfYXV4aWxpYXJ5X2RyaXZlciAqZHJpdmVyKTsNCj4gPiArDQo+ID4gKyNpZmRlZiBfX2Nw bHVzcGx1cw0KPiA+ICt9DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIFJURV9C VVNfQVVYSUxJQVJZX0ggKi8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9idXMvYXV4aWxpYXJ5 L3ZlcnNpb24ubWFwIGIvZHJpdmVycy9idXMvYXV4aWxpYXJ5L3ZlcnNpb24ubWFwDQo+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi5hNTIyNjA2NTdjDQo+ID4g LS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvYnVzL2F1eGlsaWFyeS92ZXJzaW9uLm1h cA0KPiA+IEBAIC0wLDAgKzEsNyBAQA0KPiA+ICtFWFBFUklNRU5UQUwgew0KPiA+ICsJZ2xvYmFs Og0KPiA+ICsNCj4gPiArCSMgYWRkZWQgaW4gMjEuMDgNCj4gPiArCXJ0ZV9hdXhpbGlhcnlfcmVn aXN0ZXI7DQo+ID4gKwlydGVfYXV4aWxpYXJ5X3VucmVnaXN0ZXI7DQo+ID4gK307DQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvYnVzL21lc29uLmJ1aWxkIGIvZHJpdmVycy9idXMvbWVzb24uYnVp bGQNCj4gPiBpbmRleCA0MTAwNThkZTNhLi40NWVhYjUyMzNkIDEwMDY0NA0KPiA+IC0tLSBhL2Ry aXZlcnMvYnVzL21lc29uLmJ1aWxkDQo+ID4gKysrIGIvZHJpdmVycy9idXMvbWVzb24uYnVpbGQN Cj4gPiBAQCAtMiw2ICsyLDcgQEANCj4gPiAgIyBDb3B5cmlnaHQoYykgMjAxNyBJbnRlbCBDb3Jw b3JhdGlvbg0KPiA+DQo+ID4gIGRyaXZlcnMgPSBbDQo+ID4gKyAgICAgICAgJ2F1eGlsaWFyeScs DQo+ID4gICAgICAgICAgJ2RwYWEnLA0KPiA+ICAgICAgICAgICdmc2xtYycsDQo+ID4gICAgICAg ICAgJ2lmcGdhJywNCj4gPg0KDQo=