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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2543BC004D4 for ; Thu, 19 Jan 2023 14:52:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230376AbjASOwE (ORCPT ); Thu, 19 Jan 2023 09:52:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40534 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230103AbjASOwA (ORCPT ); Thu, 19 Jan 2023 09:52:00 -0500 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2055.outbound.protection.outlook.com [40.107.220.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3451A22DFD for ; Thu, 19 Jan 2023 06:51:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QJm76SNjVT4+w1Rb8WqLu9R4LL/lAoyCEq4fNgUn74GmP/dHZSzC+rA2xGyWcYtZiDYZyMrQ4F/7Nv7mifNATUK4lNZyO7KbN9BlaIGhaDUmGOE51fu0gOy8NTa4kjP3LskxeB/LlFwSnVg7kR6AsRVEZZ0zJbwb6Z2UM6i/EpZyk8KztHrdqcwwkkLBdaHfC5b577LOgwPNuStfyy/heJHhseuwTbbeLGS5fu4otQqY1u0WcjCWdb68xRlgUz8j2SWaZL+SdGEBddpYHWb/TEFfNVCAXO6ofrC+dUkDqJkRxrtyY0LS9d9vYkiKCyt8GWZ6D7MADHmbz+1Oxlvy2w== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lGCJXa4VE6Mu/n+Cu32To+FyZQvnimmqNTqijnUvAlc=; b=MOb4LcVMjvuArEC+YPA6enyORT+RWwWw8VD19z9hBrBxbn3ICBTCyKyCuKkSd5NZZRQ1TsSk4+9eIbbctF1mjjbXrI2dYkqE5hnPSFczsrZQh17qaGuSfDkRtFVynX0mlGBgOaVweWooyFWUSMbN3nch0klgOsuGw1y/anW90VVfci9At41Itd4frAdFWPzKFRbH2UR9U9ckwoTZCGeeLyIiLMveWcIrxq4o1hN9cQvGqyFAT2fLh4dUPmoLnw7ep8NyzzfHi1/ddIcJsNf4jQrab64odwrYqLbrdgKlEs2lM8tI7dHMnB5pqY1cnUNvnHXla4y/Ml/54dbhR5HGtA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lGCJXa4VE6Mu/n+Cu32To+FyZQvnimmqNTqijnUvAlc=; b=dmQQdg/ecOuo8rNaWBbIw923aCKq0pitTq/YVV4W2JCkLfS0VodShpLNCgtdIE5boHfXxXU6K3RS3taV33g6YkK5i7nr3fQe7YOnkqdtOzIRq0OSMBEPX6m/U85tDWCyyVcFrvyGke/w94hFE9NBy+Zsfzs9ydOM4XRbVhq6Ozw= Received: from DM6PR12MB4202.namprd12.prod.outlook.com (2603:10b6:5:219::22) by CH0PR12MB5137.namprd12.prod.outlook.com (2603:10b6:610:bc::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.25; Thu, 19 Jan 2023 14:51:53 +0000 Received: from DM6PR12MB4202.namprd12.prod.outlook.com ([fe80::33a7:54d4:2de0:3939]) by DM6PR12MB4202.namprd12.prod.outlook.com ([fe80::33a7:54d4:2de0:3939%7]) with mapi id 15.20.6002.026; Thu, 19 Jan 2023 14:51:53 +0000 From: "Lucero Palau, Alejandro" To: Jiri Pirko , "Lucero Palau, Alejandro" CC: "netdev@vger.kernel.org" , "linux-net-drivers (AMD-Xilinx)" , "davem@davemloft.net" , "kuba@kernel.org" , "pabeni@redhat.com" , "edumazet@google.com" , "habetsm@gmail.com" , "ecree.xilinx@gmail.com" Subject: Re: [PATCH net-next 1/7] sfc: add devlink support for ef100 Thread-Topic: [PATCH net-next 1/7] sfc: add devlink support for ef100 Thread-Index: AQHZK/m3dRrScZP960COfMprLSU9Pa6lpyMAgAArdQA= Date: Thu, 19 Jan 2023 14:51:53 +0000 Message-ID: <11c59e1f-0465-09c1-638b-d79447752735@amd.com> References: <20230119113140.20208-1-alejandro.lucero-palau@amd.com> <20230119113140.20208-2-alejandro.lucero-palau@amd.com> Accept-Language: en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/16.53.21091200 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM6PR12MB4202:EE_|CH0PR12MB5137:EE_ x-ms-office365-filtering-correlation-id: aa9b86dc-cd78-48f6-c296-08dafa2cb415 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: t5Ym/M+dFcoKqHhaOmSNlHDtKJZVQ6JDVllCav49iZrX+lvd3IGGrYdMJQGEQNDhxxx1OPqwDq78USTj1uS+pQtmC22TgceVHtfp+js9NUaMvHTOLeykbKjWUFo5B4Gle/EM1QGwtPtwvPXg5HkFd4o94CJPc93aPOcSbWwzlsN940doWJqPGA1fFoWe9VgRdkxD5YwDrLuNM6NAY9m/PI7JWk9jk4wUvRZlEuCiBe6kmsgMGMoyAs9X8OGqvW3Qt/UCClXtIsjL7LAuXLcIcGz3nPZNfB6pFXGTiaFXFDtXzMx0RqxV6k2bIq4sJzESD8UJrfX6te461MfLdqGHDDVl9HPToc3bLsI3/FU/DbBtZUMKDU2bhfCtENbZtgRpRA0uu0B9XT/5NtgbSvWh8gjqkA1j8e1QUx5pMC77V5ncn4sDGBKOEo2USG6+1cYkb4oO2vwnP2XHuxhMw51xmw/+9tVgAdtp2ni3Mz1M38ZekEY8ggbJy8jd7J5jYTdUk1DnauQ8zTAELn5LPUz7q/uDctbOcV0cdcWMSm2jDKiqTWVkdcixjFZnbooZz6VK7Lx/JW+unU7b1k2Eslbm/OgLbwMu6aplBuO/fZOY7Qs/hNo5c7h5lcD2AX0LzJb48CYmY13F+Z6P//BbL+3osmc1ESlEogFjxkbkjkjj1XrqVU5XgSn6qCUipW7PnVF2GAx0xYo4mUtu3n1T/ZuwsDkcD7YpiJBL84edickAN2WFlrEka5A7PjuLSLywr1zz x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR12MB4202.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(346002)(39860400002)(366004)(136003)(376002)(396003)(451199015)(86362001)(53546011)(6506007)(31696002)(6486002)(478600001)(36756003)(71200400001)(122000001)(8936002)(316002)(5660300002)(38100700002)(6512007)(30864003)(66946007)(66556008)(91956017)(66476007)(64756008)(76116006)(4326008)(66446008)(8676002)(41300700001)(186003)(26005)(38070700005)(2906002)(83380400001)(54906003)(2616005)(110136005)(31686004)(2004002)(45980500001)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?L3R2UXdBWGR3QzYyV0s3Z3JSRlc0QU5zWDA3d1VuM0Y4UWt1aGVZZDRnNVFt?= =?utf-8?B?RTE1ZFJuK0NUVFFQZGNMYWtXd0thcDVyUDhKVldZcXR2VVFtZ1JEcmdjK0NQ?= =?utf-8?B?OHl5dzVLSVlqLzdJQ3BJcm5rK3hRVU9NY2JWcmFQMzY2QUczOHoxbmU0ODE2?= =?utf-8?B?eGFwTm1VeGtENnRzdkwxMm9kcTN6cVppRXNOSVlhRVlJS2o2S2c4VFdEcUZT?= =?utf-8?B?UGg1NTh0RDVXRHBGc3U3eUg3UXBUMCtvNTVvTHRqWjNvK1VzMzFSVVNJTjFO?= =?utf-8?B?R2dYZHEyejZnWnhlK3l0VUsxbjhJS2xPQzFWTWk1TUQxbXpPODIzdjRzZTg3?= =?utf-8?B?Yy9OamEralRKVTk4MHJPN1Uvamk1RGJ6WjEvbWU1SncvazMwT0U5VzI1QWRp?= =?utf-8?B?SkVRSldIN2krS2NtTlo5RUFRNkpjOThGdmNsSDZLVHU0Sk5HK0VkMWIrTzZE?= =?utf-8?B?VDQ0aWN4Z2lWMTBJN2pJOENWOU83R0djT0cvMDdjMFpJeG5PTDFOMW9VSHpO?= =?utf-8?B?NkpaZzZYMlpwTDF0clowWlIwdzJnNVpybzR0Zmx2cWc2UnczZEhLMXpPU0hS?= =?utf-8?B?c3BxNGV5VmFuTW4vTGlRd3RRNVFiMGZQWlVYd294U1JuQTliOFhndnlON3Nv?= =?utf-8?B?U2dJWm1zQkswL2tGQ3JTWDYxaHZaelhyYU54RS9PS3lpNCt6dDBuSjVFZnVm?= =?utf-8?B?Q2o5YmtEMEVYemFWYW9GT1Zqd2JNVTlHa2RLWGVzSWZ2a0QxM3hPWTRrVWQ5?= =?utf-8?B?YkhONWRhN2w0QWQrSkJiWHFyM28wV0JISjB5RGxVL3U2Z09BVHcvUCtoRHZN?= =?utf-8?B?QlFxd3ZtdVJ1M0MwZVRtK1laK3pCUWtoRWU3Tm12cklZbUtWckc1L016WExU?= =?utf-8?B?L0hZZDNXSi9oVE0xOTB1b0hOcUFOb2ZnZXhEOHdjU0lXbXRPajZRUjdJbGs2?= =?utf-8?B?aGFJVWdEQUtzV1poQmlvcFR0Z0U1eitpNnljQ2F2TE02Sjk3a1huMHpkZ2Fa?= =?utf-8?B?NGp2ODl5c2pEVWRUUGc3Zkh1UDYwdFZqWllIWlduNXRJSUYrZ2dNVklWQzdD?= =?utf-8?B?QVJmRTJvRXZha0h3WUx3dkMwdGJvWkJHeTd2M0pKV0FrNFNUekpWejBtY3lw?= =?utf-8?B?NkFDRVFGcUtEaHJPMFFOc0FZY3ZCSW1ITEI2aVFOdjVYMzVhNk5OYVhnV1ls?= =?utf-8?B?OGlGL21qQTMyN3VmVi9KOFdVREgrekJsSVhtZU1STzNRMEFRVGR1c1N4Vk15?= =?utf-8?B?NnpQdWliSnBiSk5yQjllTXRxYTNuRWpqMEk1WGtyVlQ3RW51S2ZadlZ2dXN4?= =?utf-8?B?L0t1aDlwTUg5cWxCSEtJb2NoL00rYS9OcGdrOVBDRHVJc2QvSkJEOWNuaE9R?= =?utf-8?B?QmhMR2V1RVZKNmRZaXA3cFQ0dVo5c2tuOEJUa3NUYUgvWEVPdEJNcGRtbzlm?= =?utf-8?B?NUs5NzRvd0JvT0ZRNnQyVyt2M1hrV0xnUzFkWFdYQU1BeS8zRHp6aHBiUkdx?= =?utf-8?B?QmR3NVpOWjRYZ2VBaE5adWV3MWVvMVRnV0dDdlhNSm92RTNkZGxoVlk5YTVH?= =?utf-8?B?Y0JqYzA2L0xyK0l0SHhwQ2JjcVUxQUl5WU1HN3Uxdzc1aWlNOENpdU9zSEhU?= =?utf-8?B?Zi80UGhFcjdud3VPOEdPZ0NWUzZyZzZ4WnV2bnRXdm1ZdmhvM1NYZzlkcTlL?= =?utf-8?B?a25QTVNsT1VkWUxoYnM3eWtrZEVNM3R0bHRDRjVleTdtcHRZa05nWWJUeGZL?= =?utf-8?B?aXByc3JiaTQ5Zld2SjNuMFJHUktsQzRFSWNKZ1lHSEtKaURlSXhWV3pCOFlY?= =?utf-8?B?U0dXMEFuU1pWeis2MG44UzdudjIwTXdORjV5T0VOTjRrY2VsUGNOZVNYaFpr?= =?utf-8?B?N3U1OXJEdjdZdmxsQ0t2dG1nODhWS3ErT0FjWjVhaXVEalpNeTZQdHdVM0Mv?= =?utf-8?B?U1dIckpFa1BObkZtZjNaZ0doVXpoZlBkRnh3K2YvRkQwdE9MeTkvTWw1cHdq?= =?utf-8?B?TUtnWTJ6TG1wVEF1Zm5GdXpUTVgxRVhFTUF0Q0k5ZHd6alhGYWszTk1CNHlt?= =?utf-8?B?L2lwckJjTW1jUW9QTys3dzNRQVllSXZpczg1bXVRaTJoZXpVYVdLdndPODFj?= =?utf-8?Q?B88Df+r6X72aQZOnDcn1lDTkg?= Content-Type: text/plain; charset="utf-8" Content-ID: <85CBF4D46D81B34AA2838B6FE4C2072E@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4202.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa9b86dc-cd78-48f6-c296-08dafa2cb415 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Jan 2023 14:51:53.2864 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: JKAM7/4XMZZnKx0lpQ86KETvm0l9bQpteSPjWz6u9WEAEyZnehU5yVA5pEkXTWsuC243RPIlC83hCSSLYC40wQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB5137 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQpPbiAxLzE5LzIzIDEyOjE0LCBKaXJpIFBpcmtvIHdyb3RlOg0KPiBUaHUsIEphbiAxOSwgMjAy MyBhdCAxMjozMTozNFBNIENFVCwgYWxlamFuZHJvLmx1Y2Vyby1wYWxhdUBhbWQuY29tIHdyb3Rl Og0KPj4gRnJvbTogQWxlamFuZHJvIEx1Y2VybyA8YWxlamFuZHJvLmx1Y2Vyby1wYWxhdUBhbWQu Y29tPg0KPj4NCj4+IEJhc2ljIHN1cHBvcnQgZm9yIGRldmxpbmsgaW5mbyBjb21tYW5kLg0KPj4N Cj4+IFNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBMdWNlcm8gPGFsZWphbmRyby5sdWNlcm8tcGFs YXVAYW1kLmNvbT4NCj4+IC0tLQ0KPj4gZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL0tjb25maWcg ICAgICAgfCAgIDEgKw0KPj4gZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL01ha2VmaWxlICAgICAg fCAgIDMgKy0NCj4+IGRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwMF9uaWMuYyAgIHwgICA2 ICsNCj4+IGRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZnhfZGV2bGluay5jIHwgNDI3ICsrKysr KysrKysrKysrKysrKysrKysrKysNCj4+IGRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZnhfZGV2 bGluay5oIHwgIDIwICsrDQo+PiBkcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvbWNkaS5jICAgICAg ICB8ICA3MiArKysrKw0KPj4gZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL21jZGkuaCAgICAgICAg fCAgIDMgKw0KPj4gZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL25ldF9kcml2ZXIuaCAgfCAgIDIg Kw0KPj4gOCBmaWxlcyBjaGFuZ2VkLCA1MzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0K Pj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZnhfZGV2bGlu ay5jDQo+PiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmeF9k ZXZsaW5rLmgNCj4gQ291bGQgeW91IHBsZWFzZSBzcGxpdD8NCj4NCj4gQXQgbGVhc3QgdGhlIGRl dmxpbmsgaW50cm9kdWN0aW9uIHBhcnQgYW5kIGluZm8gaW1wbGVtZW50YXRpb24uDQo+IA0KDQpT dXJlLg0KDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL0tjb25maWcg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZw0KPj4gaW5kZXggMDk1MGU2YjA1MDhm Li40YWYzNmJhODkwNmIgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMv S2NvbmZpZw0KPj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL0tjb25maWcNCj4+IEBA IC0yMiw2ICsyMiw3IEBAIGNvbmZpZyBTRkMNCj4+IAlkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NL X09QVElPTkFMDQo+PiAJc2VsZWN0IE1ESU8NCj4+IAlzZWxlY3QgQ1JDMzINCj4+ICsJc2VsZWN0 IE5FVF9ERVZMSU5LDQo+PiAJaGVscA0KPj4gCSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgMTAvNDAt Z2lnYWJpdCBFdGhlcm5ldCBjYXJkcyBiYXNlZCBvbg0KPj4gCSAgdGhlIFNvbGFyZmxhcmUgU0ZD OTEwMC1mYW1pbHkgY29udHJvbGxlcnMuDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRo ZXJuZXQvc2ZjL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL01ha2VmaWxlDQo+ PiBpbmRleCA3MTJhNDhkMDAwNjkuLjU1YjljNzNjZDhlZiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZl cnMvbmV0L2V0aGVybmV0L3NmYy9NYWtlZmlsZQ0KPj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJu ZXQvc2ZjL01ha2VmaWxlDQo+PiBAQCAtNiw3ICs2LDggQEAgc2ZjLXkJCQkrPSBlZngubyBlZnhf Y29tbW9uLm8gZWZ4X2NoYW5uZWxzLm8gbmljLm8gXA0KPj4gCQkJICAgbWNkaS5vIG1jZGlfcG9y dC5vIG1jZGlfcG9ydF9jb21tb24ubyBcDQo+PiAJCQkgICBtY2RpX2Z1bmN0aW9ucy5vIG1jZGlf ZmlsdGVycy5vIG1jZGlfbW9uLm8gXA0KPj4gCQkJICAgZWYxMDAubyBlZjEwMF9uaWMubyBlZjEw MF9uZXRkZXYubyBcDQo+PiAtCQkJICAgZWYxMDBfZXRodG9vbC5vIGVmMTAwX3J4Lm8gZWYxMDBf dHgubw0KPj4gKwkJCSAgIGVmMTAwX2V0aHRvb2wubyBlZjEwMF9yeC5vIGVmMTAwX3R4Lm8gXA0K Pj4gKwkJCSAgIGVmeF9kZXZsaW5rLm8NCj4+IHNmYy0kKENPTkZJR19TRkNfTVREKQkrPSBtdGQu bw0KPj4gc2ZjLSQoQ09ORklHX1NGQ19TUklPVikJKz0gc3Jpb3YubyBlZjEwX3NyaW92Lm8gZWYx MDBfc3Jpb3YubyBlZjEwMF9yZXAubyBcDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bWFlLm8gdGMubyB0Y19iaW5kaW5ncy5vIHRjX2NvdW50ZXJzLm8NCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMDBfbmljLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5l dC9zZmMvZWYxMDBfbmljLmMNCj4+IGluZGV4IGFkNjg2YzY3MWFiOC4uMTRhZjhmMzE0YjgzIDEw MDY0NA0KPj4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAwX25pYy5jDQo+PiAr KysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMDBfbmljLmMNCj4+IEBAIC0yNyw2ICsy Nyw3IEBADQo+PiAjaW5jbHVkZSAidGMuaCINCj4+ICNpbmNsdWRlICJtYWUuaCINCj4+ICNpbmNs dWRlICJyeF9jb21tb24uaCINCj4+ICsjaW5jbHVkZSAiZWZ4X2RldmxpbmsuaCINCj4+DQo+PiAj ZGVmaW5lIEVGMTAwX01BWF9WSVMgNDA5Ng0KPj4gI2RlZmluZSBFRjEwMF9OVU1fTUNESV9CVUZG RVJTCTENCj4+IEBAIC0xMTI0LDYgKzExMjUsMTAgQEAgaW50IGVmMTAwX3Byb2JlX25ldGRldl9w ZihzdHJ1Y3QgZWZ4X25pYyAqZWZ4KQ0KPj4gCQluZXRpZl93YXJuKGVmeCwgcHJvYmUsIG5ldF9k ZXYsDQo+PiAJCQkgICAiRmFpbGVkIHRvIHByb2JlIGJhc2UgbXBvcnQgcmMgJWQ7IHJlcHJlc2Vu dG9ycyB3aWxsIG5vdCBmdW5jdGlvblxuIiwNCj4+IAkJCSAgIHJjKTsNCj4+ICsJfSBlbHNlIHsN Cj4+ICsJCWlmIChlZnhfcHJvYmVfZGV2bGluayhlZngpKQ0KPiBJIGRvbid0IHVuZGVyc3RhbmQg d2h5IHRoZSBkZXZsaW5rIHJlZ2lzdGVyIGNhbGwgaXMgaGVyZS4NCj4gMSkgWW91IGNhbiByZWdp c3RlcnMgaXQgZm9yIFBGIGFuZCBWRi4gSSBkb24ndCBmb2xsb3cgd2h5IHlvdSBkbyBpdCBvbmx5 DQo+ICAgICBmb3IgUEYuDQoNCldlIGRpc2N1c3MgdGhlIHBvc3NpYmlsaXR5IG9mIGNyZWF0aW5n IHRoZSBkZXZsaW5rIGludGVyZmFjZSBmb3IgVkZzLCANCmJ1dCB3ZSBkZWNpZGVkIG5vdCB0by4g QXJndWFibHksIHRoaXMgc2hvdWxkIG5vdCBiZSBhdmFpbGFibGUgZm9yIFZGcyANCm93bmVkIGJ5 IFZNcy9jb250YWluZXJzLCBvciBhdCBsZWFzdCBpbiBvdXIgY2FzZSwgc2luY2UgdGhlIGludGVy ZmFjZSBpcyANCmJlaW5nIHVzZWQgZm9yIGdldHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdo b2xlIGRldmljZSBvciBmb3IgDQpnZXR0aW5nL3NldHRpbmcgdGhlIE1BQyBhZGRyZXNzLiBXZSBw bGFuIHRvIHN1cHBvcnQgbW9yZSBkZXZsaW5rIA0KZnVuY3Rpb25hbGl0aWVzIGluIHRoZSBuZWFy IGZ1dHVyZSwgc28gbWF5YmUgd2UgYWRkIHN1Y2ggc3VwcG9ydCB0aGVuIGlmIA0Kd2UgY29uc2lk ZXIgaXQgaXMgbmVlZGVkLg0KDQo+IDIpIEl0IHNob3VsZCBiZSBkb25lIGFzIHRoZSBmaXJzdCB0 aGluZyBpbiB0aGUgcHJvYmUgZmxvdy4gVGhlbiBkZXZsaW5rDQo+ICAgICBwb3J0IHJlZ2lzdGVy LCBvbmx5IGFmdGVyIHRoYXQgbmV0ZGV2LiBJdCBtYWtlcyBzZW5zZSBmcm9tIHRoZQ0KPiAgICAg cGVyc3BlY3RpdmUgb2Ygb2JqZWN0IGhpZXJhcmNoeS4NCg0KSSBjYW4gbm90IHNlZSBhIHByb2Js ZW0gaGVyZS4gSXQgaXMgbm90IHRoZSBmaXJzdCB0aGluZyBkb25lIGluIHRoZSANCnByb2JlIGZ1 bmN0aW9uLCBidXQgSSBjYW4gbm90IHNlZSBhbnkgZGVwZW5kZW5jeSBmb3IgYmVpbmcgc28uIEFu ZCBpdCBpcyANCmRvbmUgYmVmb3JlIHRoZSBkZXZsaW5rIHBvcnQgcmVnaXN0cmF0aW9uIGFuZCBi ZWZvcmUgdGhlIG5ldGRldiANCnJlZ2lzdHJhdGlvbiB3aGF0IHNlZW1zIHRvIGJlIHdoYXQgb3Ro ZXIgZHJpdmVycyBkby4gV2hhdCBhbSBJIG1pc3NpbmcgDQpoZXJlPw0KDQo+DQo+ICAgICBJdCBp cyBhbHNvIHVzdWFsIHRvIGhhdmUgdGhlIGRldmxpbmsgcHJpdiBhcyB0aGUgIm1haW4iIGRyaXZl cg0KPiAgICAgc3RydWN0dXJlIHN0b3JhZ2UsIHNlZSBob3cgdGhhdCBpcyBkb25lIGluIG1seDUg b2YgbWx4c3cgZm9yIGV4YW1wbGUuDQoNCkkgd2lsbCBjaGVjayB0aGUgd2F5IG90aGVycyBkcml2 ZXJzIHVzZSB0aGUgZGV2bGluayBwcml2Lg0KDQo+DQo+DQo+PiArCQkJbmV0aWZfd2FybihlZngs IHByb2JlLCBuZXRfZGV2LA0KPj4gKwkJCQkgICAiRmFpbGVkIHRvIHJlZ2lzdGVyIGRldmxpbmtc biIpOw0KPj4gCX0NCj4+DQo+PiAJcmMgPSBlZnhfaW5pdF90YyhlZngpOw0KPj4gQEAgLTExNTcs NiArMTE2Miw3IEBAIHZvaWQgZWYxMDBfcmVtb3ZlKHN0cnVjdCBlZnhfbmljICplZngpDQo+PiB7 DQo+PiAJc3RydWN0IGVmMTAwX25pY19kYXRhICpuaWNfZGF0YSA9IGVmeC0+bmljX2RhdGE7DQo+ Pg0KPj4gKwllZnhfZmluaV9kZXZsaW5rKGVmeCk7DQo+PiAJZWZ4X21jZGlfZGV0YWNoKGVmeCk7 DQo+PiAJZWZ4X21jZGlfZmluaShlZngpOw0KPj4gCWlmIChuaWNfZGF0YSkNCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4X2RldmxpbmsuYyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L3NmYy9lZnhfZGV2bGluay5jDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4g aW5kZXggMDAwMDAwMDAwMDAwLi5jNTA2ZjhmMzVkMjUNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsr KyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZnhfZGV2bGluay5jDQo+PiBAQCAtMCwwICsx LDQyNyBAQA0KPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4+ ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKg0KPj4gKyAqIERyaXZlciBmb3IgQU1EIG5ldHdvcmsgY29u dHJvbGxlcnMgYW5kIGJvYXJkcw0KPj4gKyAqIENvcHlyaWdodCAoQykgMjAyMywgQWR2YW5jZWQg TWljcm8gRGV2aWNlcywgSW5jLg0KPj4gKyAqDQo+PiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQNCj4+ICsg KiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp b24gMiBhcyBwdWJsaXNoZWQNCj4+ICsgKiBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBpbmNvcnBvcmF0ZWQgaGVyZWluIGJ5IHJlZmVyZW5jZS4NCj4+ICsgKi8NCj4+ICsNCj4+ICsj aW5jbHVkZSA8bGludXgvcnRjLmg+DQo+PiArI2luY2x1ZGUgIm5ldF9kcml2ZXIuaCINCj4+ICsj aW5jbHVkZSAiZWYxMDBfbmljLmgiDQo+PiArI2luY2x1ZGUgImVmeF9kZXZsaW5rLmgiDQo+PiAr I2luY2x1ZGUgIm5pYy5oIg0KPj4gKyNpbmNsdWRlICJtY2RpLmgiDQo+PiArI2luY2x1ZGUgIm1j ZGlfZnVuY3Rpb25zLmgiDQo+PiArI2luY2x1ZGUgIm1jZGlfcGNvbC5oIg0KPj4gKw0KPj4gKy8q IEN1c3RvbSBkZXZsaW5rLWluZm8gdmVyc2lvbiBvYmplY3QgbmFtZXMgZm9yIGRldGFpbHMgdGhh dCBkbyBub3QgbWFwIHRvIHRoZQ0KPj4gKyAqIGdlbmVyaWMgc3RhbmRhcmRpemVkIG5hbWVzLg0K Pj4gKyAqLw0KPj4gKyNkZWZpbmUgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX0ZXX01HTVRfU1VD CSJmdy5tZ210LnN1YyINCj4+ICsjZGVmaW5lIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lPTl9GV19N R01UX0NNQwkiZncubWdtdC5jbWMiDQo+PiArI2RlZmluZSBFRlhfREVWTElOS19JTkZPX1ZFUlNJ T05fRlBHQV9SRVYJImZwZ2EucmV2Ig0KPj4gKyNkZWZpbmUgRUZYX0RFVkxJTktfSU5GT19WRVJT SU9OX0RBVEFQQVRIX0hXCSJmcGdhLmFwcCINCj4+ICsjZGVmaW5lIEVGWF9ERVZMSU5LX0lORk9f VkVSU0lPTl9EQVRBUEFUSF9GVwlERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0ZXX0FQUA0K Pj4gKyNkZWZpbmUgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX1NPQ19CT09UCSJjb3Byb2MuYm9v dCINCj4+ICsjZGVmaW5lIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lPTl9TT0NfVUJPT1QJImNvcHJv Yy51Ym9vdCINCj4+ICsjZGVmaW5lIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lPTl9TT0NfTUFJTgki Y29wcm9jLm1haW4iDQo+PiArI2RlZmluZSBFRlhfREVWTElOS19JTkZPX1ZFUlNJT05fU09DX1JF Q09WRVJZCSJjb3Byb2MucmVjb3ZlcnkiDQo+PiArI2RlZmluZSBFRlhfREVWTElOS19JTkZPX1ZF UlNJT05fRldfRVhQUk9NCSJmdy5leHByb20iDQo+PiArI2RlZmluZSBFRlhfREVWTElOS19JTkZP X1ZFUlNJT05fRldfVUVGSQkiZncudWVmaSINCj4+ICsNCj4+ICsjZGVmaW5lIEVGWF9NQVhfVkVS U0lPTl9JTkZPX0xFTgk2NA0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgZWZ4X2RldmxpbmtfaW5mb19u dnJhbV9wYXJ0aXRpb24oc3RydWN0IGVmeF9uaWMgKmVmeCwNCj4+ICsJCQkJCSAgICBzdHJ1Y3Qg ZGV2bGlua19pbmZvX3JlcSAqcmVxLA0KPj4gKwkJCQkJICAgIHVuc2lnbmVkIGludCBwYXJ0aXRp b25fdHlwZSwNCj4+ICsJCQkJCSAgICBjb25zdCBjaGFyICp2ZXJzaW9uX25hbWUpDQo+PiArew0K Pj4gKwljaGFyIGJ1ZltFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU5dOw0KPj4gKwl1MTYgdmVyc2lv bls0XTsNCj4+ICsJaW50IHJjOw0KPj4gKw0KPj4gKwlyYyA9IGVmeF9tY2RpX252cmFtX21ldGFk YXRhKGVmeCwgcGFydGl0aW9uX3R5cGUsIE5VTEwsIHZlcnNpb24sIE5VTEwsDQo+PiArCQkJCSAg ICAgMCk7DQo+PiArCWlmIChyYykNCj4+ICsJCXJldHVybiByYzsNCj4+ICsNCj4+ICsJc25wcmlu dGYoYnVmLCBFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU4sICIldS4ldS4ldS4ldSIsIHZlcnNpb25b MF0sDQo+PiArCQkgdmVyc2lvblsxXSwgdmVyc2lvblsyXSwgdmVyc2lvblszXSk7DQo+PiArCWRl dmxpbmtfaW5mb192ZXJzaW9uX3N0b3JlZF9wdXQocmVxLCB2ZXJzaW9uX25hbWUsIGJ1Zik7DQo+ PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBlZnhfZGV2 bGlua19pbmZvX3N0b3JlZF92ZXJzaW9ucyhzdHJ1Y3QgZWZ4X25pYyAqZWZ4LA0KPj4gKwkJCQkJ ICAgICBzdHJ1Y3QgZGV2bGlua19pbmZvX3JlcSAqcmVxKQ0KPj4gK3sNCj4+ICsJZWZ4X2Rldmxp bmtfaW5mb19udnJhbV9wYXJ0aXRpb24oZWZ4LCByZXEsIE5WUkFNX1BBUlRJVElPTl9UWVBFX0JV TkRMRSwNCj4+ICsJCQkJCSBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0ZXX0JVTkRMRV9J RCk7DQo+PiArCWVmeF9kZXZsaW5rX2luZm9fbnZyYW1fcGFydGl0aW9uKGVmeCwgcmVxLA0KPj4g KwkJCQkJIE5WUkFNX1BBUlRJVElPTl9UWVBFX01DX0ZJUk1XQVJFLA0KPj4gKwkJCQkJIERFVkxJ TktfSU5GT19WRVJTSU9OX0dFTkVSSUNfRldfTUdNVCk7DQo+PiArCWVmeF9kZXZsaW5rX2luZm9f bnZyYW1fcGFydGl0aW9uKGVmeCwgcmVxLA0KPj4gKwkJCQkJIE5WUkFNX1BBUlRJVElPTl9UWVBF X1NVQ19GSVJNV0FSRSwNCj4+ICsJCQkJCSBFRlhfREVWTElOS19JTkZPX1ZFUlNJT05fRldfTUdN VF9TVUMpOw0KPj4gKwllZnhfZGV2bGlua19pbmZvX252cmFtX3BhcnRpdGlvbihlZngsIHJlcSwN Cj4+ICsJCQkJCSBOVlJBTV9QQVJUSVRJT05fVFlQRV9FWFBBTlNJT05fUk9NLA0KPj4gKwkJCQkJ IEVGWF9ERVZMSU5LX0lORk9fVkVSU0lPTl9GV19FWFBST00pOw0KPj4gKwllZnhfZGV2bGlua19p bmZvX252cmFtX3BhcnRpdGlvbihlZngsIHJlcSwNCj4+ICsJCQkJCSBOVlJBTV9QQVJUSVRJT05f VFlQRV9FWFBBTlNJT05fVUVGSSwNCj4+ICsJCQkJCSBFRlhfREVWTElOS19JTkZPX1ZFUlNJT05f RldfVUVGSSk7DQo+PiArfQ0KPj4gKw0KPj4gKyNkZWZpbmUgRUZYX01BWF9TRVJJQUxOVU1fTEVO CShFVEhfQUxFTiAqIDIgKyAxKQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGVmeF9kZXZsaW5rX2lu Zm9fYm9hcmRfY2ZnKHN0cnVjdCBlZnhfbmljICplZngsDQo+PiArCQkJCSAgICAgICBzdHJ1Y3Qg ZGV2bGlua19pbmZvX3JlcSAqcmVxKQ0KPj4gK3sNCj4+ICsJY2hhciBzbltFRlhfTUFYX1NFUklB TE5VTV9MRU5dOw0KPj4gKwl1OCBtYWNfYWRkcmVzc1tFVEhfQUxFTl07DQo+PiArCWludCByYzsN Cj4+ICsNCj4+ICsJcmMgPSBlZnhfbWNkaV9nZXRfYm9hcmRfY2ZnKGVmeCwgKHU4ICopbWFjX2Fk ZHJlc3MsIE5VTEwsIE5VTEwpOw0KPj4gKwlpZiAoIXJjKSB7DQo+PiArCQlzbnByaW50Zihzbiwg RUZYX01BWF9TRVJJQUxOVU1fTEVOLCAiJXBtIiwgbWFjX2FkZHJlc3MpOw0KPj4gKwkJZGV2bGlu a19pbmZvX3NlcmlhbF9udW1iZXJfcHV0KHJlcSwgc24pOw0KPj4gKwl9DQo+PiArfQ0KPj4gKw0K Pj4gKyNkZWZpbmUgRUZYX1ZFUl9GTEFHKF9mKQlcDQo+PiArCShNQ19DTURfR0VUX1ZFUlNJT05f VjVfT1VUXyAjIyBfZiAjIyBfUFJFU0VOVF9MQk4pDQo+PiArDQo+PiArc3RhdGljIHZvaWQgZWZ4 X2RldmxpbmtfaW5mb19ydW5uaW5nX3ZlcnNpb25zKHN0cnVjdCBlZnhfbmljICplZngsDQo+PiAr CQkJCQkgICAgICBzdHJ1Y3QgZGV2bGlua19pbmZvX3JlcSAqcmVxKQ0KPj4gK3sNCj4+ICsJTUNE SV9ERUNMQVJFX0JVRihvdXRidWYsIE1DX0NNRF9HRVRfVkVSU0lPTl9WNV9PVVRfTEVOKTsNCj4+ ICsJTUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0dFVF9WRVJTSU9OX0VYVF9JTl9MRU4p Ow0KPj4gKwljaGFyIGJ1ZltFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU5dOw0KPj4gKwl1bnNpZ25l ZCBpbnQgZmxhZ3MsIGJ1aWxkX2lkOw0KPj4gKwl1bmlvbiB7DQo+PiArCQljb25zdCBfX2xlMzIg KmR3b3JkczsNCj4+ICsJCWNvbnN0IF9fbGUxNiAqd29yZHM7DQo+PiArCQljb25zdCBjaGFyICpz dHI7DQo+PiArCX0gdmVyOw0KPj4gKwlzdHJ1Y3QgcnRjX3RpbWUgYnVpbGRfZGF0ZTsNCj4+ICsJ c2l6ZV90IG91dGxlbmd0aCwgb2Zmc2V0Ow0KPj4gKwl1NjQgdHN0YW1wOw0KPj4gKwlpbnQgcmM7 DQo+PiArDQo+PiArCXJjID0gZWZ4X21jZGlfcnBjKGVmeCwgTUNfQ01EX0dFVF9WRVJTSU9OLCBp bmJ1Ziwgc2l6ZW9mKGluYnVmKSwNCj4+ICsJCQkgIG91dGJ1Ziwgc2l6ZW9mKG91dGJ1ZiksICZv dXRsZW5ndGgpOw0KPj4gKwlpZiAocmMgfHwgb3V0bGVuZ3RoIDwgTUNfQ01EX0dFVF9WRVJTSU9O X09VVF9MRU4pDQo+PiArCQlyZXR1cm47DQo+PiArDQo+PiArCS8qIEhhbmRsZSBwcmV2aW91cyBv dXRwdXQgKi8NCj4+ICsJaWYgKG91dGxlbmd0aCA8IE1DX0NNRF9HRVRfVkVSU0lPTl9WMl9PVVRf TEVOKSB7DQo+PiArCQl2ZXIud29yZHMgPSAoX19sZTE2ICopTUNESV9QVFIob3V0YnVmLA0KPj4g KwkJCQkJICAgICAgIEdFVF9WRVJTSU9OX0VYVF9PVVRfVkVSU0lPTik7DQo+PiArCQlvZmZzZXQg PSBzbnByaW50ZihidWYsIEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xFTiwgIiV1LiV1LiV1LiV1IiwN Cj4+ICsJCQkJICBsZTE2X3RvX2NwdSh2ZXIud29yZHNbMF0pLA0KPj4gKwkJCQkgIGxlMTZfdG9f Y3B1KHZlci53b3Jkc1sxXSksDQo+PiArCQkJCSAgbGUxNl90b19jcHUodmVyLndvcmRzWzJdKSwN Cj4+ICsJCQkJICBsZTE2X3RvX2NwdSh2ZXIud29yZHNbM10pKTsNCj4+ICsNCj4+ICsJCWRldmxp bmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwNCj4+ICsJCQkJCQkgREVWTElOS19JTkZP X1ZFUlNJT05fR0VORVJJQ19GV19NR01ULA0KPj4gKwkJCQkJCSBidWYpOw0KPj4gKwkJcmV0dXJu Ow0KPj4gKwl9DQo+PiArDQo+PiArCS8qIEhhbmRsZSBWMiBhZGRpdGlvbnMgKi8NCj4+ICsJZmxh Z3MgPSBNQ0RJX0RXT1JEKG91dGJ1ZiwgR0VUX1ZFUlNJT05fVjJfT1VUX0ZMQUdTKTsNCj4+ICsJ aWYgKGZsYWdzICYgQklUKEVGWF9WRVJfRkxBRyhCT0FSRF9FWFRfSU5GTykpKSB7DQo+PiArCQlz bnByaW50ZihidWYsIEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xFTiwgIiVzIiwNCj4+ICsJCQkgTUNE SV9QVFIob3V0YnVmLCBHRVRfVkVSU0lPTl9WMl9PVVRfQk9BUkRfTkFNRSkpOw0KPj4gKwkJZGV2 bGlua19pbmZvX3ZlcnNpb25fZml4ZWRfcHV0KHJlcSwNCj4+ICsJCQkJCSAgICAgICBERVZMSU5L X0lORk9fVkVSU0lPTl9HRU5FUklDX0JPQVJEX0lELA0KPj4gKwkJCQkJICAgICAgIGJ1Zik7DQo+ PiArDQo+PiArCQkvKiBGYXZvdXIgZnVsbCBib2FyZCB2ZXJzaW9uIGlmIHByZXNlbnQgKGluIFY1 IG9yIGxhdGVyKSAqLw0KPj4gKwkJaWYgKH5mbGFncyAmIEJJVChFRlhfVkVSX0ZMQUcoQk9BUkRf VkVSU0lPTikpKSB7DQo+PiArCQkJc25wcmludGYoYnVmLCBFRlhfTUFYX1ZFUlNJT05fSU5GT19M RU4sICIldSIsDQo+PiArCQkJCSBNQ0RJX0RXT1JEKG91dGJ1ZiwNCj4+ICsJCQkJCSAgICBHRVRf VkVSU0lPTl9WMl9PVVRfQk9BUkRfUkVWSVNJT04pKTsNCj4+ICsJCQlkZXZsaW5rX2luZm9fdmVy c2lvbl9maXhlZF9wdXQocmVxLA0KPj4gKwkJCQkJCSAgICAgICBERVZMSU5LX0lORk9fVkVSU0lP Tl9HRU5FUklDX0JPQVJEX1JFViwNCj4+ICsJCQkJCQkgICAgICAgYnVmKTsNCj4+ICsJCX0NCj4+ ICsNCj4+ICsJCXZlci5zdHIgPSBNQ0RJX1BUUihvdXRidWYsIEdFVF9WRVJTSU9OX1YyX09VVF9C T0FSRF9TRVJJQUwpOw0KPj4gKwkJaWYgKHZlci5zdHJbMF0pDQo+PiArCQkJZGV2bGlua19pbmZv X2JvYXJkX3NlcmlhbF9udW1iZXJfcHV0KHJlcSwgdmVyLnN0cik7DQo+PiArCX0NCj4+ICsNCj4+ ICsJaWYgKGZsYWdzICYgQklUKEVGWF9WRVJfRkxBRyhGUEdBX0VYVF9JTkZPKSkpIHsNCj4+ICsJ CXZlci5kd29yZHMgPSAoX19sZTMyICopTUNESV9QVFIob3V0YnVmLA0KPj4gKwkJCQkJCUdFVF9W RVJTSU9OX1YyX09VVF9GUEdBX1ZFUlNJT04pOw0KPj4gKwkJb2Zmc2V0ID0gc25wcmludGYoYnVm LCBFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU4sICIldV8lYyV1IiwNCj4+ICsJCQkJICBsZTMyX3Rv X2NwdSh2ZXIuZHdvcmRzWzBdKSwNCj4+ICsJCQkJICAnQScgKyBsZTMyX3RvX2NwdSh2ZXIuZHdv cmRzWzFdKSwNCj4+ICsJCQkJICBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzJdKSk7DQo+PiArDQo+ PiArCQl2ZXIuc3RyID0gTUNESV9QVFIob3V0YnVmLCBHRVRfVkVSU0lPTl9WMl9PVVRfRlBHQV9F WFRSQSk7DQo+PiArCQlpZiAodmVyLnN0clswXSkNCj4+ICsJCQlzbnByaW50ZigmYnVmW29mZnNl dF0sIEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xFTiAtIG9mZnNldCwNCj4+ICsJCQkJICIgKCVzKSIs IHZlci5zdHIpOw0KPj4gKw0KPj4gKwkJZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19wdXQo cmVxLA0KPj4gKwkJCQkJCSBFRlhfREVWTElOS19JTkZPX1ZFUlNJT05fRlBHQV9SRVYsDQo+PiAr CQkJCQkJIGJ1Zik7DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYgKGZsYWdzICYgQklUKEVGWF9WRVJf RkxBRyhDTUNfRVhUX0lORk8pKSkgew0KPj4gKwkJdmVyLmR3b3JkcyA9IChfX2xlMzIgKilNQ0RJ X1BUUihvdXRidWYsDQo+PiArCQkJCQkJR0VUX1ZFUlNJT05fVjJfT1VUX0NNQ0ZXX1ZFUlNJT04p Ow0KPj4gKwkJb2Zmc2V0ID0gc25wcmludGYoYnVmLCBFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU4s ICIldS4ldS4ldS4ldSIsDQo+PiArCQkJCSAgbGUzMl90b19jcHUodmVyLmR3b3Jkc1swXSksDQo+ PiArCQkJCSAgbGUzMl90b19jcHUodmVyLmR3b3Jkc1sxXSksDQo+PiArCQkJCSAgbGUzMl90b19j cHUodmVyLmR3b3Jkc1syXSksDQo+PiArCQkJCSAgbGUzMl90b19jcHUodmVyLmR3b3Jkc1szXSkp Ow0KPj4gKw0KPj4gKwkJdHN0YW1wID0gTUNESV9RV09SRChvdXRidWYsDQo+PiArCQkJCSAgICBH RVRfVkVSU0lPTl9WMl9PVVRfQ01DRldfQlVJTERfREFURSk7DQo+PiArCQlpZiAodHN0YW1wKSB7 DQo+PiArCQkJcnRjX3RpbWU2NF90b190bSh0c3RhbXAsICZidWlsZF9kYXRlKTsNCj4+ICsJCQlz bnByaW50ZigmYnVmW29mZnNldF0sIEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xFTiAtIG9mZnNldCwN Cj4+ICsJCQkJICIgKCVwdFJkKSIsICZidWlsZF9kYXRlKTsNCj4+ICsJCX0NCj4+ICsNCj4+ICsJ CWRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwNCj4+ICsJCQkJCQkgRUZYX0RF VkxJTktfSU5GT19WRVJTSU9OX0ZXX01HTVRfQ01DLA0KPj4gKwkJCQkJCSBidWYpOw0KPj4gKwl9 DQo+PiArDQo+PiArCXZlci53b3JkcyA9IChfX2xlMTYgKilNQ0RJX1BUUihvdXRidWYsIEdFVF9W RVJTSU9OX1YyX09VVF9WRVJTSU9OKTsNCj4+ICsJb2Zmc2V0ID0gc25wcmludGYoYnVmLCBFRlhf TUFYX1ZFUlNJT05fSU5GT19MRU4sICIldS4ldS4ldS4ldSIsDQo+PiArCQkJICBsZTE2X3RvX2Nw dSh2ZXIud29yZHNbMF0pLCBsZTE2X3RvX2NwdSh2ZXIud29yZHNbMV0pLA0KPj4gKwkJCSAgbGUx Nl90b19jcHUodmVyLndvcmRzWzJdKSwgbGUxNl90b19jcHUodmVyLndvcmRzWzNdKSk7DQo+PiAr CWlmIChmbGFncyAmIEJJVChFRlhfVkVSX0ZMQUcoTUNGV19FWFRfSU5GTykpKSB7DQo+PiArCQli dWlsZF9pZCA9IE1DRElfRFdPUkQob3V0YnVmLCBHRVRfVkVSU0lPTl9WMl9PVVRfTUNGV19CVUlM RF9JRCk7DQo+PiArCQlzbnByaW50ZigmYnVmW29mZnNldF0sIEVGWF9NQVhfVkVSU0lPTl9JTkZP X0xFTiAtIG9mZnNldCwNCj4+ICsJCQkgIiAoJXgpICVzIiwgYnVpbGRfaWQsDQo+PiArCQkJIE1D RElfUFRSKG91dGJ1ZiwgR0VUX1ZFUlNJT05fVjJfT1VUX01DRldfQlVJTERfTkFNRSkpOw0KPj4g Kwl9DQo+PiArCWRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwNCj4+ICsJCQkJ CSBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0ZXX01HTVQsDQo+PiArCQkJCQkgYnVmKTsN Cj4+ICsNCj4+ICsJaWYgKGZsYWdzICYgQklUKEVGWF9WRVJfRkxBRyhTVUNGV19FWFRfSU5GTykp KSB7DQo+PiArCQl2ZXIuZHdvcmRzID0gKF9fbGUzMiAqKU1DRElfUFRSKG91dGJ1ZiwNCj4+ICsJ CQkJCQlHRVRfVkVSU0lPTl9WMl9PVVRfU1VDRldfVkVSU0lPTik7DQo+PiArCQl0c3RhbXAgPSBN Q0RJX1FXT1JEKG91dGJ1ZiwNCj4+ICsJCQkJICAgIEdFVF9WRVJTSU9OX1YyX09VVF9TVUNGV19C VUlMRF9EQVRFKTsNCj4+ICsJCXJ0Y190aW1lNjRfdG9fdG0odHN0YW1wLCAmYnVpbGRfZGF0ZSk7 DQo+PiArCQlidWlsZF9pZCA9IE1DRElfRFdPUkQob3V0YnVmLCBHRVRfVkVSU0lPTl9WMl9PVVRf U1VDRldfQ0hJUF9JRCk7DQo+PiArDQo+PiArCQlzbnByaW50ZihidWYsIEVGWF9NQVhfVkVSU0lP Tl9JTkZPX0xFTiwNCj4+ICsJCQkgIiV1LiV1LiV1LiV1IHR5cGUgJXggKCVwdFJkKSIsDQo+PiAr CQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMF0pLCBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzFd KSwNCj4+ICsJCQkgbGUzMl90b19jcHUodmVyLmR3b3Jkc1syXSksIGxlMzJfdG9fY3B1KHZlci5k d29yZHNbM10pLA0KPj4gKwkJCSBidWlsZF9pZCwgJmJ1aWxkX2RhdGUpOw0KPj4gKw0KPj4gKwkJ ZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19wdXQocmVxLA0KPj4gKwkJCQkJCSBFRlhfREVW TElOS19JTkZPX1ZFUlNJT05fRldfTUdNVF9TVUMsDQo+PiArCQkJCQkJIGJ1Zik7DQo+PiArCX0N Cj4+ICsNCj4+ICsJaWYgKG91dGxlbmd0aCA8IE1DX0NNRF9HRVRfVkVSU0lPTl9WM19PVVRfTEVO KQ0KPj4gKwkJcmV0dXJuOw0KPj4gKw0KPj4gKwkvKiBIYW5kbGUgVjMgYWRkaXRpb25zICovDQo+ PiArCWlmIChmbGFncyAmIEJJVChFRlhfVkVSX0ZMQUcoREFUQVBBVEhfSFdfVkVSU0lPTikpKSB7 DQo+PiArCQl2ZXIuZHdvcmRzID0gKF9fbGUzMiAqKU1DRElfUFRSKG91dGJ1ZiwNCj4+ICsJCQkJ CQlHRVRfVkVSU0lPTl9WM19PVVRfREFUQVBBVEhfSFdfVkVSU0lPTik7DQo+PiArDQo+PiArCQlz bnByaW50ZihidWYsIEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xFTiwgIiV1LiV1LiV1IiwNCj4+ICsJ CQkgbGUzMl90b19jcHUodmVyLmR3b3Jkc1swXSksIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMV0p LA0KPj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzJdKSk7DQo+PiArDQo+PiArCQlkZXZs aW5rX2luZm9fdmVyc2lvbl9ydW5uaW5nX3B1dChyZXEsDQo+PiArCQkJCQkJIEVGWF9ERVZMSU5L X0lORk9fVkVSU0lPTl9EQVRBUEFUSF9IVywNCj4+ICsJCQkJCQkgYnVmKTsNCj4+ICsJfQ0KPj4g Kw0KPj4gKwlpZiAoZmxhZ3MgJiBCSVQoRUZYX1ZFUl9GTEFHKERBVEFQQVRIX0ZXX1ZFUlNJT04p KSkgew0KPj4gKwkJdmVyLmR3b3JkcyA9IChfX2xlMzIgKilNQ0RJX1BUUihvdXRidWYsDQo+PiAr CQkJCQkJR0VUX1ZFUlNJT05fVjNfT1VUX0RBVEFQQVRIX0ZXX1ZFUlNJT04pOw0KPj4gKw0KPj4g KwkJc25wcmludGYoYnVmLCBFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU4sICIldS4ldS4ldSIsDQo+ PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMF0pLCBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRz WzFdKSwNCj4+ICsJCQkgbGUzMl90b19jcHUodmVyLmR3b3Jkc1syXSkpOw0KPj4gKw0KPj4gKwkJ ZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19wdXQocmVxLA0KPj4gKwkJCQkJCSBFRlhfREVW TElOS19JTkZPX1ZFUlNJT05fREFUQVBBVEhfRlcsDQo+PiArCQkJCQkJIGJ1Zik7DQo+PiArCX0N Cj4+ICsNCj4+ICsJaWYgKG91dGxlbmd0aCA8IE1DX0NNRF9HRVRfVkVSU0lPTl9WNF9PVVRfTEVO KQ0KPj4gKwkJcmV0dXJuOw0KPj4gKw0KPj4gKwkvKiBIYW5kbGUgVjQgYWRkaXRpb25zICovDQo+ PiArCWlmIChmbGFncyAmIEJJVChFRlhfVkVSX0ZMQUcoU09DX0JPT1RfVkVSU0lPTikpKSB7DQo+ PiArCQl2ZXIuZHdvcmRzID0gKF9fbGUzMiAqKU1DRElfUFRSKG91dGJ1ZiwNCj4+ICsJCQkJCQlH RVRfVkVSU0lPTl9WNF9PVVRfU09DX0JPT1RfVkVSU0lPTik7DQo+PiArDQo+PiArCQlzbnByaW50 ZihidWYsIEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xFTiwgIiV1LiV1LiV1LiV1IiwNCj4+ICsJCQkg bGUzMl90b19jcHUodmVyLmR3b3Jkc1swXSksIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMV0pLA0K Pj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzJdKSwNCj4+ICsJCQkgbGUzMl90b19jcHUo dmVyLmR3b3Jkc1szXSkpOw0KPj4gKw0KPj4gKwkJZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmlu Z19wdXQocmVxLA0KPj4gKwkJCQkJCSBFRlhfREVWTElOS19JTkZPX1ZFUlNJT05fU09DX0JPT1Qs DQo+PiArCQkJCQkJIGJ1Zik7DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYgKGZsYWdzICYgQklUKEVG WF9WRVJfRkxBRyhTT0NfVUJPT1RfVkVSU0lPTikpKSB7DQo+PiArCQl2ZXIuZHdvcmRzID0gKF9f bGUzMiAqKU1DRElfUFRSKG91dGJ1ZiwNCj4+ICsJCQkJCQlHRVRfVkVSU0lPTl9WNF9PVVRfU09D X1VCT09UX1ZFUlNJT04pOw0KPj4gKw0KPj4gKwkJc25wcmludGYoYnVmLCBFRlhfTUFYX1ZFUlNJ T05fSU5GT19MRU4sICIldS4ldS4ldS4ldSIsDQo+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29y ZHNbMF0pLCBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzFdKSwNCj4+ICsJCQkgbGUzMl90b19jcHUo dmVyLmR3b3Jkc1syXSksDQo+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbM10pKTsNCj4+ ICsNCj4+ICsJCWRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwNCj4+ICsJCQkJ CQkgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX1NPQ19VQk9PVCwNCj4+ICsJCQkJCQkgYnVmKTsN Cj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAoZmxhZ3MgJiBCSVQoRUZYX1ZFUl9GTEFHKFNPQ19NQUlO X1JPT1RGU19WRVJTSU9OKSkpIHsNCj4+ICsJCXZlci5kd29yZHMgPSAoX19sZTMyICopTUNESV9Q VFIob3V0YnVmLA0KPj4gKwkJCQkJCUdFVF9WRVJTSU9OX1Y0X09VVF9TT0NfTUFJTl9ST09URlNf VkVSU0lPTik7DQo+PiArDQo+PiArCQlzbnByaW50ZihidWYsIEVGWF9NQVhfVkVSU0lPTl9JTkZP X0xFTiwgIiV1LiV1LiV1LiV1IiwNCj4+ICsJCQkgbGUzMl90b19jcHUodmVyLmR3b3Jkc1swXSks IGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMV0pLA0KPj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdv cmRzWzJdKSwNCj4+ICsJCQkgbGUzMl90b19jcHUodmVyLmR3b3Jkc1szXSkpOw0KPj4gKw0KPj4g KwkJZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19wdXQocmVxLA0KPj4gKwkJCQkJCSBFRlhf REVWTElOS19JTkZPX1ZFUlNJT05fU09DX01BSU4sDQo+PiArCQkJCQkJIGJ1Zik7DQo+PiArCX0N Cj4+ICsNCj4+ICsJaWYgKGZsYWdzICYgQklUKEVGWF9WRVJfRkxBRyhTT0NfUkVDT1ZFUllfQlVJ TERST09UX1ZFUlNJT04pKSkgew0KPj4gKwkJdmVyLmR3b3JkcyA9IChfX2xlMzIgKilNQ0RJX1BU UihvdXRidWYsDQo+PiArCQkJCQkJR0VUX1ZFUlNJT05fVjRfT1VUX1NPQ19SRUNPVkVSWV9CVUlM RFJPT1RfVkVSU0lPTik7DQo+PiArDQo+PiArCQlzbnByaW50ZihidWYsIEVGWF9NQVhfVkVSU0lP Tl9JTkZPX0xFTiwgIiV1LiV1LiV1LiV1IiwNCj4+ICsJCQkgbGUzMl90b19jcHUodmVyLmR3b3Jk c1swXSksIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMV0pLA0KPj4gKwkJCSBsZTMyX3RvX2NwdSh2 ZXIuZHdvcmRzWzJdKSwNCj4+ICsJCQkgbGUzMl90b19jcHUodmVyLmR3b3Jkc1szXSkpOw0KPj4g Kw0KPj4gKwkJZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19wdXQocmVxLA0KPj4gKwkJCQkJ CSBFRlhfREVWTElOS19JTkZPX1ZFUlNJT05fU09DX1JFQ09WRVJZLA0KPj4gKwkJCQkJCSBidWYp Ow0KPj4gKwl9DQo+PiArDQo+PiArCWlmIChmbGFncyAmIEJJVChFRlhfVkVSX0ZMQUcoU1VDRldf VkVSU0lPTikpICYmDQo+PiArCSAgICB+ZmxhZ3MgJiBCSVQoRUZYX1ZFUl9GTEFHKFNVQ0ZXX0VY VF9JTkZPKSkpIHsNCj4+ICsJCXZlci5kd29yZHMgPSAoX19sZTMyICopTUNESV9QVFIob3V0YnVm LA0KPj4gKwkJCQkJCUdFVF9WRVJTSU9OX1Y0X09VVF9TVUNGV19WRVJTSU9OKTsNCj4+ICsNCj4+ ICsJCXNucHJpbnRmKGJ1ZiwgRUZYX01BWF9WRVJTSU9OX0lORk9fTEVOLCAiJXUuJXUuJXUuJXUi LA0KPj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzBdKSwgbGUzMl90b19jcHUodmVyLmR3 b3Jkc1sxXSksDQo+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMl0pLA0KPj4gKwkJCSBs ZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzNdKSk7DQo+PiArDQo+PiArCQlkZXZsaW5rX2luZm9fdmVy c2lvbl9ydW5uaW5nX3B1dChyZXEsDQo+PiArCQkJCQkJIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lP Tl9GV19NR01UX1NVQywNCj4+ICsJCQkJCQkgYnVmKTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAo b3V0bGVuZ3RoIDwgTUNfQ01EX0dFVF9WRVJTSU9OX1Y1X09VVF9MRU4pDQo+PiArCQlyZXR1cm47 DQo+PiArDQo+PiArCS8qIEhhbmRsZSBWNSBhZGRpdGlvbnMgKi8NCj4+ICsNCj4+ICsJaWYgKGZs YWdzICYgQklUKEVGWF9WRVJfRkxBRyhCT0FSRF9WRVJTSU9OKSkpIHsNCj4+ICsJCXZlci5kd29y ZHMgPSAoX19sZTMyICopTUNESV9QVFIob3V0YnVmLA0KPj4gKwkJCQkJCUdFVF9WRVJTSU9OX1Y1 X09VVF9CT0FSRF9WRVJTSU9OKTsNCj4+ICsNCj4+ICsJCXNucHJpbnRmKGJ1ZiwgRUZYX01BWF9W RVJTSU9OX0lORk9fTEVOLCAiJXUuJXUuJXUuJXUiLA0KPj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIu ZHdvcmRzWzBdKSwgbGUzMl90b19jcHUodmVyLmR3b3Jkc1sxXSksDQo+PiArCQkJIGxlMzJfdG9f Y3B1KHZlci5kd29yZHNbMl0pLA0KPj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzNdKSk7 DQo+PiArDQo+PiArCQlkZXZsaW5rX2luZm9fdmVyc2lvbl9ydW5uaW5nX3B1dChyZXEsDQo+PiAr CQkJCQkJIERFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfQk9BUkRfUkVWLA0KPj4gKwkJCQkJ CSBidWYpOw0KPj4gKwl9DQo+PiArDQo+PiArCWlmIChmbGFncyAmIEJJVChFRlhfVkVSX0ZMQUco QlVORExFX1ZFUlNJT04pKSkgew0KPj4gKwkJdmVyLmR3b3JkcyA9IChfX2xlMzIgKilNQ0RJX1BU UihvdXRidWYsDQo+PiArCQkJCQkJR0VUX1ZFUlNJT05fVjVfT1VUX0JVTkRMRV9WRVJTSU9OKTsN Cj4+ICsNCj4+ICsJCXNucHJpbnRmKGJ1ZiwgRUZYX01BWF9WRVJTSU9OX0lORk9fTEVOLCAiJXUu JXUuJXUuJXUiLA0KPj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzBdKSwgbGUzMl90b19j cHUodmVyLmR3b3Jkc1sxXSksDQo+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMl0pLA0K Pj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzNdKSk7DQo+PiArDQo+PiArCQlkZXZsaW5r X2luZm9fdmVyc2lvbl9ydW5uaW5nX3B1dChyZXEsDQo+PiArCQkJCQkJIERFVkxJTktfSU5GT19W RVJTSU9OX0dFTkVSSUNfRldfQlVORExFX0lELA0KPj4gKwkJCQkJCSBidWYpOw0KPj4gKwl9DQo+ PiArfQ0KPj4gKw0KPj4gKyN1bmRlZiBFRlhfVkVSX0ZMQUcNCj4+ICsNCj4+ICtzdGF0aWMgdm9p ZCBlZnhfZGV2bGlua19pbmZvX3F1ZXJ5X2FsbChzdHJ1Y3QgZWZ4X25pYyAqZWZ4LA0KPj4gKwkJ CQkgICAgICAgc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSkNCj4+ICt7DQo+PiArCWVmeF9k ZXZsaW5rX2luZm9fYm9hcmRfY2ZnKGVmeCwgcmVxKTsNCj4+ICsJZWZ4X2RldmxpbmtfaW5mb19z dG9yZWRfdmVyc2lvbnMoZWZ4LCByZXEpOw0KPj4gKwllZnhfZGV2bGlua19pbmZvX3J1bm5pbmdf dmVyc2lvbnMoZWZ4LCByZXEpOw0KPj4gK30NCj4+ICsNCj4+ICtzdHJ1Y3QgZWZ4X2Rldmxpbmsg ew0KPj4gKwlzdHJ1Y3QgZWZ4X25pYyAqZWZ4Ow0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGlu dCBlZnhfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywNCj4+ICsJCQkJ c3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSwNCj4+ICsJCQkJc3RydWN0IG5ldGxpbmtfZXh0 X2FjayAqZXh0YWNrKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGVmeF9kZXZsaW5rICpkZXZsaW5rX3By aXZhdGUgPSBkZXZsaW5rX3ByaXYoZGV2bGluayk7DQo+PiArCXN0cnVjdCBlZnhfbmljICplZngg PSBkZXZsaW5rX3ByaXZhdGUtPmVmeDsNCj4+ICsNCj4+ICsJZWZ4X2RldmxpbmtfaW5mb19xdWVy eV9hbGwoZWZ4LCByZXEpOw0KPiBJIGRvbid0IHVuZGVyc3RhbmQgdGhlIHJlYXNvbiBmb3IgaGF2 aW5nIGVmeF9kZXZsaW5rX2luZm9fcXVlcnlfYWxsKCkgYXMNCj4gYSBzZXBhcmF0ZSBmdW5jdGlv biBpbiBjb21wYXJlIHRvIGlubGluZSBpdHMgY29kZSBoZXJlLg0KPg0KDQpZZXMsIGl0IGNvdWxk IGJlIGRvIGFzIHlvdSBzYXkuIEknbGwgZG8uDQoNClRoYW5rcw0KDQo+PiArCXJldHVybiAwOw0K Pj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfb3BzIHNmY19kZXZs aW5rX29wcyA9IHsNCj4+ICsJLmluZm9fZ2V0CQkJPSBlZnhfZGV2bGlua19pbmZvX2dldCwNCj4+ ICt9Ow0KPj4gKw0KPj4gK3ZvaWQgZWZ4X2ZpbmlfZGV2bGluayhzdHJ1Y3QgZWZ4X25pYyAqZWZ4 KQ0KPj4gK3sNCj4+ICsJaWYgKGVmeC0+ZGV2bGluaykgew0KPj4gKwkJc3RydWN0IGVmeF9kZXZs aW5rICpkZXZsaW5rX3ByaXZhdGU7DQo+PiArDQo+PiArCQlkZXZsaW5rX3ByaXZhdGUgPSBkZXZs aW5rX3ByaXYoZWZ4LT5kZXZsaW5rKTsNCj4+ICsNCj4+ICsJCWRldmxpbmtfdW5yZWdpc3Rlcihl ZngtPmRldmxpbmspOw0KPj4gKwkJZGV2bGlua19mcmVlKGVmeC0+ZGV2bGluayk7DQo+PiArCQll ZngtPmRldmxpbmsgPSBOVUxMOw0KPj4gKwl9DQo+PiArfQ0KPj4gKw0KPj4gK2ludCBlZnhfcHJv YmVfZGV2bGluayhzdHJ1Y3QgZWZ4X25pYyAqZWZ4KQ0KPj4gK3sNCj4+ICsJc3RydWN0IGVmeF9k ZXZsaW5rICpkZXZsaW5rX3ByaXZhdGU7DQo+PiArDQo+PiArCWVmeC0+ZGV2bGluayA9IGRldmxp bmtfYWxsb2MoJnNmY19kZXZsaW5rX29wcywNCj4+ICsJCQkJICAgICBzaXplb2Yoc3RydWN0IGVm eF9kZXZsaW5rKSwNCj4+ICsJCQkJICAgICAmZWZ4LT5wY2lfZGV2LT5kZXYpOw0KPj4gKwlpZiAo IWVmeC0+ZGV2bGluaykNCj4+ICsJCXJldHVybiAtRU5PTUVNOw0KPj4gKwlkZXZsaW5rX3ByaXZh dGUgPSBkZXZsaW5rX3ByaXYoZWZ4LT5kZXZsaW5rKTsNCj4+ICsJZGV2bGlua19wcml2YXRlLT5l ZnggPSBlZng7DQo+PiArDQo+PiArCWRldmxpbmtfcmVnaXN0ZXIoZWZ4LT5kZXZsaW5rKTsNCj4+ ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0 aGVybmV0L3NmYy9lZnhfZGV2bGluay5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmeF9k ZXZsaW5rLmgNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAu Ljk5N2Y4NzhhZWE5Mw0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVycy9uZXQvZXRo ZXJuZXQvc2ZjL2VmeF9kZXZsaW5rLmgNCj4+IEBAIC0wLDAgKzEsMjAgQEANCj4+ICsvKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQo+PiArLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioNCj4+ICsgKiBEcml2ZXIgZm9yIEFNRCBuZXR3b3JrIGNvbnRyb2xsZXJzIGFuZCBib2Fy ZHMNCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjMsIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIElu Yy4NCj4+ICsgKg0KPj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0DQo+PiArICogdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVk DQo+PiArICogYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgaW5jb3Jwb3JhdGVkIGhl cmVpbiBieSByZWZlcmVuY2UuDQo+PiArICovDQo+PiArDQo+PiArI2lmbmRlZiBfRUZYX0RFVkxJ TktfSA0KPj4gKyNkZWZpbmUgX0VGWF9ERVZMSU5LX0gNCj4+ICsNCj4+ICsjaW5jbHVkZSAibmV0 X2RyaXZlci5oIg0KPj4gKyNpbmNsdWRlIDxuZXQvZGV2bGluay5oPg0KPj4gKw0KPj4gK2ludCBl ZnhfcHJvYmVfZGV2bGluayhzdHJ1Y3QgZWZ4X25pYyAqZWZ4KTsNCj4+ICt2b2lkIGVmeF9maW5p X2Rldmxpbmsoc3RydWN0IGVmeF9uaWMgKmVmeCk7DQo+PiArDQo+PiArI2VuZGlmCS8qIF9FRlhf REVWTElOS19IICovDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL21j ZGkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9tY2RpLmMNCj4+IGluZGV4IGFmMzM4MjA4 ZWFlOS4uMzI4Y2FlODJhN2Q4IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQv c2ZjL21jZGkuYw0KPj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL21jZGkuYw0KPj4g QEAgLTIzMDgsNiArMjMwOCw3OCBAQCBzdGF0aWMgaW50IGVmeF9tY2RpX252cmFtX3VwZGF0ZV9m aW5pc2goc3RydWN0IGVmeF9uaWMgKmVmeCwgdW5zaWduZWQgaW50IHR5cGUpDQo+PiAJcmV0dXJu IHJjOw0KPj4gfQ0KPj4NCj4+ICtpbnQgZWZ4X21jZGlfbnZyYW1fbWV0YWRhdGEoc3RydWN0IGVm eF9uaWMgKmVmeCwgdW5zaWduZWQgaW50IHR5cGUsDQo+PiArCQkJICAgIHUzMiAqc3VidHlwZSwg dTE2IHZlcnNpb25bNF0sIGNoYXIgKmRlc2MsDQo+PiArCQkJICAgIHNpemVfdCBkZXNjc2l6ZSkN Cj4+ICt7DQo+PiArCU1DRElfREVDTEFSRV9CVUYoaW5idWYsIE1DX0NNRF9OVlJBTV9NRVRBREFU QV9JTl9MRU4pOw0KPj4gKwllZnhfZHdvcmRfdCAqb3V0YnVmOw0KPj4gKwlzaXplX3Qgb3V0bGVu Ow0KPj4gKwl1MzIgZmxhZ3M7DQo+PiArCWludCByYzsNCj4+ICsNCj4+ICsJb3V0YnVmID0ga3ph bGxvYyhNQ19DTURfTlZSQU1fTUVUQURBVEFfT1VUX0xFTk1BWF9NQ0RJMiwgR0ZQX0tFUk5FTCk7 DQo+PiArCWlmICghb3V0YnVmKQ0KPj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+PiArDQo+PiArCU1D RElfU0VUX0RXT1JEKGluYnVmLCBOVlJBTV9NRVRBREFUQV9JTl9UWVBFLCB0eXBlKTsNCj4+ICsN Cj4+ICsJcmMgPSBlZnhfbWNkaV9ycGNfcXVpZXQoZWZ4LCBNQ19DTURfTlZSQU1fTUVUQURBVEEs IGluYnVmLA0KPj4gKwkJCQlzaXplb2YoaW5idWYpLCBvdXRidWYsDQo+PiArCQkJCU1DX0NNRF9O VlJBTV9NRVRBREFUQV9PVVRfTEVOTUFYX01DREkyLA0KPj4gKwkJCQkmb3V0bGVuKTsNCj4+ICsJ aWYgKHJjKQ0KPj4gKwkJZ290byBvdXRfZnJlZTsNCj4+ICsJaWYgKG91dGxlbiA8IE1DX0NNRF9O VlJBTV9NRVRBREFUQV9PVVRfTEVOTUlOKSB7DQo+PiArCQlyYyA9IC1FSU87DQo+PiArCQlnb3Rv IG91dF9mcmVlOw0KPj4gKwl9DQo+PiArDQo+PiArCWZsYWdzID0gTUNESV9EV09SRChvdXRidWYs IE5WUkFNX01FVEFEQVRBX09VVF9GTEFHUyk7DQo+PiArDQo+PiArCWlmIChkZXNjICYmIGRlc2Nz aXplID4gMCkgew0KPj4gKwkJaWYgKGZsYWdzICYgQklUKE1DX0NNRF9OVlJBTV9NRVRBREFUQV9P VVRfREVTQ1JJUFRJT05fVkFMSURfTEJOKSkgew0KPj4gKwkJCWlmIChkZXNjc2l6ZSA8PQ0KPj4g KwkJCSAgICBNQ19DTURfTlZSQU1fTUVUQURBVEFfT1VUX0RFU0NSSVBUSU9OX05VTShvdXRsZW4p KSB7DQo+PiArCQkJCXJjID0gLUUyQklHOw0KPj4gKwkJCQlnb3RvIG91dF9mcmVlOw0KPj4gKwkJ CX0NCj4+ICsNCj4+ICsJCQlzdHJuY3B5KGRlc2MsDQo+PiArCQkJCU1DRElfUFRSKG91dGJ1Ziwg TlZSQU1fTUVUQURBVEFfT1VUX0RFU0NSSVBUSU9OKSwNCj4+ICsJCQkJTUNfQ01EX05WUkFNX01F VEFEQVRBX09VVF9ERVNDUklQVElPTl9OVU0ob3V0bGVuKSk7DQo+PiArCQkJZGVzY1tNQ19DTURf TlZSQU1fTUVUQURBVEFfT1VUX0RFU0NSSVBUSU9OX05VTShvdXRsZW4pXSA9ICdcMCc7DQo+PiAr CQl9IGVsc2Ugew0KPj4gKwkJCWRlc2NbMF0gPSAnXDAnOw0KPj4gKwkJfQ0KPj4gKwl9DQo+PiAr DQo+PiArCWlmIChzdWJ0eXBlKSB7DQo+PiArCQlpZiAoZmxhZ3MgJiBCSVQoTUNfQ01EX05WUkFN X01FVEFEQVRBX09VVF9TVUJUWVBFX1ZBTElEX0xCTikpDQo+PiArCQkJKnN1YnR5cGUgPSBNQ0RJ X0RXT1JEKG91dGJ1ZiwgTlZSQU1fTUVUQURBVEFfT1VUX1NVQlRZUEUpOw0KPj4gKwkJZWxzZQ0K Pj4gKwkJCSpzdWJ0eXBlID0gMDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAodmVyc2lvbikgew0K Pj4gKwkJaWYgKGZsYWdzICYgQklUKE1DX0NNRF9OVlJBTV9NRVRBREFUQV9PVVRfVkVSU0lPTl9W QUxJRF9MQk4pKSB7DQo+PiArCQkJdmVyc2lvblswXSA9IE1DRElfV09SRChvdXRidWYsIE5WUkFN X01FVEFEQVRBX09VVF9WRVJTSU9OX1cpOw0KPj4gKwkJCXZlcnNpb25bMV0gPSBNQ0RJX1dPUkQo b3V0YnVmLCBOVlJBTV9NRVRBREFUQV9PVVRfVkVSU0lPTl9YKTsNCj4+ICsJCQl2ZXJzaW9uWzJd ID0gTUNESV9XT1JEKG91dGJ1ZiwgTlZSQU1fTUVUQURBVEFfT1VUX1ZFUlNJT05fWSk7DQo+PiAr CQkJdmVyc2lvblszXSA9IE1DRElfV09SRChvdXRidWYsIE5WUkFNX01FVEFEQVRBX09VVF9WRVJT SU9OX1opOw0KPj4gKwkJfSBlbHNlIHsNCj4+ICsJCQl2ZXJzaW9uWzBdID0gMDsNCj4+ICsJCQl2 ZXJzaW9uWzFdID0gMDsNCj4+ICsJCQl2ZXJzaW9uWzJdID0gMDsNCj4+ICsJCQl2ZXJzaW9uWzNd ID0gMDsNCj4+ICsJCX0NCj4+ICsJfQ0KPj4gKw0KPj4gK291dF9mcmVlOg0KPj4gKwlrZnJlZShv dXRidWYpOw0KPj4gKwlyZXR1cm4gcmM7DQo+PiArfQ0KPj4gKw0KPj4gaW50IGVmeF9tY2RpX210 ZF9yZWFkKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3Qgc3RhcnQsDQo+PiAJCSAgICAgIHNp emVfdCBsZW4sIHNpemVfdCAqcmV0bGVuLCB1OCAqYnVmZmVyKQ0KPj4gew0KPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9tY2RpLmggYi9kcml2ZXJzL25ldC9ldGhlcm5l dC9zZmMvbWNkaS5oDQo+PiBpbmRleCA3ZTM1ZmVjOWRhMzUuLjYzYjA5MDU4N2Y3YSAxMDA2NDQN Cj4+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9tY2RpLmgNCj4+ICsrKyBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L3NmYy9tY2RpLmgNCj4+IEBAIC0zNzksNiArMzc5LDkgQEAgaW50IGVm eF9tY2RpX252cmFtX2luZm8oc3RydWN0IGVmeF9uaWMgKmVmeCwgdW5zaWduZWQgaW50IHR5cGUs DQo+PiAJCQlib29sICpwcm90ZWN0ZWRfb3V0KTsNCj4+IGludCBlZnhfbmV3X21jZGlfbnZyYW1f dGVzdF9hbGwoc3RydWN0IGVmeF9uaWMgKmVmeCk7DQo+PiBpbnQgZWZ4X21jZGlfbnZyYW1fdGVz dF9hbGwoc3RydWN0IGVmeF9uaWMgKmVmeCk7DQo+PiAraW50IGVmeF9tY2RpX252cmFtX21ldGFk YXRhKHN0cnVjdCBlZnhfbmljICplZngsIHVuc2lnbmVkIGludCB0eXBlLA0KPj4gKwkJCSAgICB1 MzIgKnN1YnR5cGUsIHUxNiB2ZXJzaW9uWzRdLCBjaGFyICpkZXNjLA0KPj4gKwkJCSAgICBzaXpl X3QgZGVzY3NpemUpOw0KPj4gaW50IGVmeF9tY2RpX2hhbmRsZV9hc3NlcnRpb24oc3RydWN0IGVm eF9uaWMgKmVmeCk7DQo+PiBpbnQgZWZ4X21jZGlfc2V0X2lkX2xlZChzdHJ1Y3QgZWZ4X25pYyAq ZWZ4LCBlbnVtIGVmeF9sZWRfbW9kZSBtb2RlKTsNCj4+IGludCBlZnhfbWNkaV93b2xfZmlsdGVy X3NldF9tYWdpYyhzdHJ1Y3QgZWZ4X25pYyAqZWZ4LCBjb25zdCB1OCAqbWFjLA0KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9uZXRfZHJpdmVyLmggYi9kcml2ZXJzL25l dC9ldGhlcm5ldC9zZmMvbmV0X2RyaXZlci5oDQo+PiBpbmRleCAzYjQ5ZTIxNjc2OGIuLmQwMzY2 NDFkYzA0MyAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9uZXRfZHJp dmVyLmgNCj4+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9uZXRfZHJpdmVyLmgNCj4+ IEBAIC05OTQsNiArOTk0LDcgQEAgZW51bSBlZnhfeGRwX3R4X3F1ZXVlc19tb2RlIHsNCj4+ICAg KiAgICAgIHhkcF9yeHFfaW5mbyBzdHJ1Y3R1cmVzPw0KPj4gICAqIEBuZXRkZXZfbm90aWZpZXI6 IE5ldGRldmljZSBub3RpZmllci4NCj4+ICAgKiBAdGM6IHN0YXRlIGZvciBUQyBvZmZsb2FkIChF RjEwMCkuDQo+PiArICogQGRldmxpbms6IHJlZmVyZW5jZSB0byBkZXZsaW5rIHN0cnVjdHVyZSBv d25lZCBieSB0aGlzIGRldmljZQ0KPj4gICAqIEBtZW1fYmFyOiBUaGUgQkFSIHRoYXQgaXMgbWFw cGVkIGludG8gbWVtYmFzZS4NCj4+ICAgKiBAcmVnX2Jhc2U6IE9mZnNldCBmcm9tIHRoZSBzdGFy dCBvZiB0aGUgYmFyIHRvIHRoZSBmdW5jdGlvbiBjb250cm9sIHdpbmRvdy4NCj4+ICAgKiBAbW9u aXRvcl93b3JrOiBIYXJkd2FyZSBtb25pdG9yIHdvcmtpdGVtDQo+PiBAQCAtMTE3OSw2ICsxMTgw LDcgQEAgc3RydWN0IGVmeF9uaWMgew0KPj4gCXN0cnVjdCBub3RpZmllcl9ibG9jayBuZXRkZXZf bm90aWZpZXI7DQo+PiAJc3RydWN0IGVmeF90Y19zdGF0ZSAqdGM7DQo+Pg0KPj4gKwlzdHJ1Y3Qg ZGV2bGluayAqZGV2bGluazsNCj4+IAl1bnNpZ25lZCBpbnQgbWVtX2JhcjsNCj4+IAl1MzIgcmVn X2Jhc2U7DQo+Pg0KPj4gLS0gDQo+PiAyLjE3LjENCj4+DQoNCg==