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 3EC98A034F; Mon, 11 Oct 2021 17:56:42 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 243F64111C; Mon, 11 Oct 2021 17:56:42 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id 9F77641102 for ; Mon, 11 Oct 2021 17:56:39 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10134"; a="225676854" X-IronPort-AV: E=Sophos;i="5.85,364,1624345200"; d="scan'208";a="225676854" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Oct 2021 08:47:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,364,1624345200"; d="scan'208";a="570005206" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by fmsmga002.fm.intel.com with ESMTP; 11 Oct 2021 08:47:41 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 11 Oct 2021 08:47:41 -0700 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 11 Oct 2021 08:47:40 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Mon, 11 Oct 2021 08:47:40 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.175) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Mon, 11 Oct 2021 08:47:39 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TGTSRAiFG5GCm3iDLA9/6slXUDd0w2DyI+TFVSt7HO+A2CuM2oP8oebrVOSamceBsUF0or4GCQmzTKgZ1vQ+WKba7lMwHNRuGwPKYtk2ZLXBpwEAjJxl1FL4NuQYaO6FXKcP7fmbmo1SVg+0rkePHPHvnejh6mla4CizmeDj0YrBDgsKmjjsXBuh8RCw3pE+aNgOsLLpzz24CWywWSwcLi7nuM9guNFb4PVkGROA6wo989iFPD47rjE7vYiA9VEmoXNGKKqsRiaGllaUVyWtJl0iMUDNVpjVIdIAXGnsXsFCua/XQkK9Ud9ADNKzK+WJW8nrL36+OuzFEzSmnlYvqA== 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=lZ54kEFLKc5fDcBjB74ebrTomm10CPMbXc2JDa5N8Hs=; b=FcFTtf+geFdYOQ3TZ+ZJmvwjkMEOEidrwIESMpo91o2neSdmwcfkB7RRpYi4FIP7eBLzOieiVY7kOf/GksbVLQndW6r0/wBH8l2P2uL4TdGsDyfblOEu7o6A3AAeybCs3b5K8P14/UsYoayzQ0p8N8MdoOM5mrOa2jpHvDfPaeK4Pe5MeQJeydLKz4qO1a7zfPgYk90YCEpxyhU9E7UeHCdfuJTtrVyHAbtkjBjQ7sxfiSj5+NcYnIIoFF2/GWk8e3hu1Iu6We7S076v49so37CzTcqf0BOCsmExDdfR2nIXPt/Ir24tmptxjO9SuDLZNiiL3hGtgjvCXw2Too2Dqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lZ54kEFLKc5fDcBjB74ebrTomm10CPMbXc2JDa5N8Hs=; b=c0q1LgtCZpm97MzqCEuD4ZHD63jmfJNDQId5UVUstOihbnk2bakhC+dGFEyCEcSdysM+ohEP9+FBGWZGbaditViCRT0l9eXc0qUZh+VQg9AToQAGR/qPognisfqavpwIyJdViK+k26U5GiJcF7e0DOv73pvBdbD/bSwdHs28+kE= Received: from DM6PR11MB4491.namprd11.prod.outlook.com (2603:10b6:5:204::19) by DM4PR11MB5357.namprd11.prod.outlook.com (2603:10b6:5:394::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.20; Mon, 11 Oct 2021 15:47:34 +0000 Received: from DM6PR11MB4491.namprd11.prod.outlook.com ([fe80::740e:126e:c785:c8fd]) by DM6PR11MB4491.namprd11.prod.outlook.com ([fe80::740e:126e:c785:c8fd%4]) with mapi id 15.20.4587.026; Mon, 11 Oct 2021 15:47:34 +0000 From: "Ananyev, Konstantin" To: Andrew Rybchenko , "dev@dpdk.org" CC: "Li, Xiaoyun" , "anoobj@marvell.com" , "jerinj@marvell.com" , "ndabilpuram@marvell.com" , "adwivedi@marvell.com" , "shepard.siegel@atomicrules.com" , "ed.czeck@atomicrules.com" , "john.miller@atomicrules.com" , "irusskikh@marvell.com" , "ajit.khaparde@broadcom.com" , "somnath.kotur@broadcom.com" , "rahul.lakkireddy@chelsio.com" , "hemant.agrawal@nxp.com" , "sachin.saxena@oss.nxp.com" , "Wang, Haiyue" , "Daley, John" , "hyonkim@cisco.com" , "Zhang, Qi Z" , "Wang, Xiao W" , "humin29@huawei.com" , "yisen.zhuang@huawei.com" , "oulijun@huawei.com" , "Xing, Beilei" , "Wu, Jingjing" , "Yang, Qiming" , "matan@nvidia.com" , "viacheslavo@nvidia.com" , "sthemmin@microsoft.com" , "longli@microsoft.com" , "heinrich.kuhn@corigine.com" , "kirankumark@marvell.com" , "mczekaj@marvell.com" , "jiawenwu@trustnetic.com" , "jianwang@trustnetic.com" , "maxime.coquelin@redhat.com" , "Xia, Chenbo" , "thomas@monjalon.net" , "Yigit, Ferruh" , "mdr@ashroe.eu" , "Jayatheerthan, Jay" Thread-Topic: [PATCH v5 5/7] ethdev: make fast-path functions to use new flat array Thread-Index: AQHXu26wEHtor9fWrkij/lLimlbmwKvNho2AgABrHfA= Date: Mon, 11 Oct 2021 15:47:33 +0000 Message-ID: References: <20211004135603.20593-1-konstantin.ananyev@intel.com> <20211007112750.25526-1-konstantin.ananyev@intel.com> <20211007112750.25526-6-konstantin.ananyev@intel.com> <87f01338-226d-476b-d02b-4b5ba873145d@oktetlabs.ru> In-Reply-To: <87f01338-226d-476b-d02b-4b5ba873145d@oktetlabs.ru> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 authentication-results: oktetlabs.ru; dkim=none (message not signed) header.d=none;oktetlabs.ru; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 007f8ab0-e0e1-4dd9-30fd-08d98cce7135 x-ms-traffictypediagnostic: DM4PR11MB5357: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BdjjQWWdsh+xlFJ8qS+nZWCYymzaUoPpupsY990cWRnd+zMdoJE3LJ4I/QADiEC3TFR/14KsneDA1uBRNTrlrcpG3TVHdwq8+ZaSMRYoIQggmzLcFC/l3aVjnfKVLCRnReYS928M3fx8s7cpq+FREWQrnbmfJtftx4K8eaVoITpt8+OW/BOwGSb0zHWhqUM7RgsZErecVu03hWIsNv4m0lOXS4uAHG6H74RToDfyagI065AQyihx2DjVSsvWtlIISCc33cMQZ1fEtGf0dbitc+ihbWxUmCUhWWq/E4LHRI+/n2NNAWEjdMzNoCDknDjyzXNUqgwpgiAUYFh3o5HXGOWaebARFlqdicWgAlxjqWQDcAF2GiddnBfsydBxDhfweLPfQ//sQIoWwdnR+sefhifkb+wHv8PXWM0jMzZXYptYeKLmCWUnd7nyZ9HWZ3WsZgR1iisIR7ktHQfd0J14kI5/BJ/sq4sZ5keaT0j43tjJu2aycnsJBAcNlxJ+Uk01guYQzMfls51D11yVI14oRh50vgmD8qlCNTpwjAOCZBRduQhtENuUt5x6yZ860ud58wpJS2yW6f1MU4MtFe6R0tuZryNEjhLpBw2b9jO7Wrx59Qw866lQTG1F+rNN11IO3kRvKeH/Yi/6aVd5HLZ7oYaNwUnpgBztM9XuCvDR9OfmGICKc67jxNFt2Yhd22FM4HErLAeolI1wGdvm4Sbckw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR11MB4491.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(66946007)(76116006)(26005)(55016002)(2906002)(55236004)(64756008)(66556008)(66476007)(52536014)(66446008)(38070700005)(54906003)(8936002)(4326008)(7696005)(53546011)(30864003)(83380400001)(122000001)(8676002)(9686003)(107886003)(508600001)(7406005)(71200400001)(86362001)(110136005)(316002)(38100700002)(5660300002)(186003)(6506007)(33656002)(7416002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NTNpdUVpeUZiamtCNTJRL2o2MTFkZkVQZGpTcTRuUVJqbjVmYnB1eU8vUUlY?= =?utf-8?B?cGV2aDV2c2dsRXArNWY1WEpjSnRqbUlQcXk0dGl5UmhvR1cyNWtsWXkySWYr?= =?utf-8?B?WW5PbG1DNnBDR0lFRmVTMTdsa2g5SWljdFFiMmtlVThyZk1VR3Vranh3bjA2?= =?utf-8?B?dTczNy9CRkJXaUF5QXR5M3FScUdwS29SUTdLWnZyL01PaG04UWxicUI5T2J0?= =?utf-8?B?d0FXTEdXL2lUUGk0cUp6YUFhYVBVajJmQ1YvNHVHYWZKUEg1emJYNVNtMmYv?= =?utf-8?B?UEpYTnYyRHBiQjJzNHArUnBtdXMrYm1kUlMzWEMwZDJtNGM3SHRuQTMyWFJ5?= =?utf-8?B?dHJHWGVEbzhLWXVNRWhjTzY3TUZDYmF2cnRyOGxMY3QwZDBQQmt2cjVnSWht?= =?utf-8?B?OGpLTGgzaXNsUzBIRmg5KzFsU09xWGtuSjNSMUZxL1EySmtKTTR3aFpZMmMz?= =?utf-8?B?UDM5bjUyWnFEVFM4VUZjNGZLMGdsVG1KaWFhOUFIdVR4ejRpSm9qYzlscHJ1?= =?utf-8?B?akQ4ZmZQNnZlTko3WUJrdTA3M2Eya2lzNDJMQmdSYUozL1lNbmIvamZkTzFn?= =?utf-8?B?M0paSmdwM1JBUTYyQklCaFlzRXJUL3FhdkVpc3FtMGhBakZ5czRHK3ZMRDFm?= =?utf-8?B?dmRPTEZhUDZITHFVeUU1dzJoVlVSSWg3bTBVTWt0bkNsYUt5cXpKc1QvZlkx?= =?utf-8?B?b0RCUkZZZGtYMXhJVGNrUmtqNWtYUUpiZEJVaENyODBYRXR2RjJ4ZHF0UDNN?= =?utf-8?B?eUJBTUI4UFdIS21xd0FEa2NBdlhyd1NDWVpmbXAxaGkwS01GanNxdmI1TmVF?= =?utf-8?B?czA5STZUL256YnExS0JRODJTSDdkZTBuMnd5eUoyNmkvVW50anBXK3VIR0dP?= =?utf-8?B?VlZpWUh1Qk5qUlB2VFdjbml3bUZVMVVsM2lPS2g5N2V4b2N3QU95dkRGaU9q?= =?utf-8?B?K0IzRDJ3RXhoZTJ0WEpNQ0RNVjg0VXlVaUo1VGVpRnVvalpSenUrNlhmeHhl?= =?utf-8?B?d3A1L3pJMStzbGZSY3dsNlJYNVRkQlcvZFdpWnAveGlWZDlLdTcvdnNaMHFI?= =?utf-8?B?RUs4amNTV2VsVitiS2FIcmJpZ2pOMHdCTDBVVWZvMDZPQ2hXa2lPUHZiaHdo?= =?utf-8?B?emdQRGppd0ZGOW9DcnFUOElyTktKMDBPdDVZNGI0a3l6cU5kU3MrRG1qQjBh?= =?utf-8?B?OWU5WGlvYzdjK3JiT0wvYmcyYW5iNFBBQUx6SWc5ZjVCV0phMXN5SEVIVHdU?= =?utf-8?B?dW5abEJwWURlWEFBOXFzNlRrMSt4Nk1qQi9qVGV2U2pIYUlmWG5nanFXTFIx?= =?utf-8?B?Ni9jNGJNZm5VK0VyOHV5YXJENWtwOThrSjVoT01QZUkwT0RyRnhKYVZhSDc4?= =?utf-8?B?NWZnZmpWRi9UaVRkaWplYWczUFZxSWRRNzRtT3F0LytOL2JGM00rbXQvcGd5?= =?utf-8?B?dHRmUG5sTWNVZ0c4Z1JPb3JKSHpHSllOSHp4MDVNRVJadDdBWEpORnhTMGVw?= =?utf-8?B?eFVlcVBNMFdWRkwycXQwMm9QSU9MWk1yemxIQnhidXNtMXhORnk3STd1QXU4?= =?utf-8?B?ZFZiaTRjYmpyMXRZZU1VRVB1U214RFRzUlZlM3pUM1dhTzUwTzdDai9KaVZU?= =?utf-8?B?NHJZMktuWFJEQ09vNjFibmlSVUlQWkZaaURQZldQZHBUWXFjajRPYjgwK2li?= =?utf-8?B?UGF4UU1uSXlBR2RUUEphWUwwWGFBNHdBelpvYzlvSGkvOWRZSStHVndvOElv?= =?utf-8?Q?aaTydgCVa3z7xgHpivbqwbFHkejQ34JB6dJrGP9?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4491.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 007f8ab0-e0e1-4dd9-30fd-08d98cce7135 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Oct 2021 15:47:33.7180 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: B0PvvqWU7k3GDKPEOOUI3ELIivE7Tbr68MA1zBoBKA7d07aatVRN+zuDvoPu6YZLsH+WAppPqUk8qMFu8ZcTGCf6KIHPpn2+knd7ZVsxzuo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB5357 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v5 5/7] ethdev: make fast-path functions to use new flat array 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" DQo+IA0KPiBPbiAxMC83LzIxIDI6MjcgUE0sIEtvbnN0YW50aW4gQW5hbnlldiB3cm90ZToNCj4g PiBSZXdvcmsgZmFzdC1wYXRoIGV0aGRldiBmdW5jdGlvbnMgdG8gdXNlIHJ0ZV9ldGhfZnBfb3Bz W10uDQo+ID4gV2hpbGUgaXQgaXMgYW4gQVBJL0FCSSBicmVha2FnZSwgdGhpcyBjaGFuZ2UgaXMg aW50ZW5kZWQgdG8gYmUNCj4gPiB0cmFuc3BhcmVudCBmb3IgYm90aCB1c2VycyAobm8gY2hhbmdl cyBpbiB1c2VyIGFwcCBpcyByZXF1aXJlZCkgYW5kDQo+ID4gUE1EIGRldmVsb3BlcnMgKG5vIGNo YW5nZXMgaW4gUE1EIGlzIHJlcXVpcmVkKS4NCj4gPiBPbmUgZXh0cmEgdGhpbmcgdG8gbm90ZSAt IFJYL1RYIGNhbGxiYWNrIGludm9jYXRpb24gd2lsbCBjYXVzZSBleHRyYQ0KPiA+IGZ1bmN0aW9u IGNhbGwgd2l0aCB0aGVzZSBjaGFuZ2VzLiBUaGF0IG1pZ2h0IGNhdXNlIHNvbWUgaW5zaWduaWZp Y2FudA0KPiA+IHNsb3dkb3duIGZvciBjb2RlLXBhdGggd2hlcmUgUlgvVFggY2FsbGJhY2tzIGFy ZSBoZWF2aWx5IGludm9sdmVkLg0KPiANCj4gSSdtIHNvcnJ5IGZvciBuaXQgcGlja2luZyBoZXJl IGFuZCBiZWxvdzoNCj4gDQo+IFJYIC0+IFJ4LCBUWCAtPiBUeCBldmVyeXdoZXJlIGFib3ZlLg0K PiANCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEtvbnN0YW50aW4gQW5hbnlldiA8a29uc3RhbnRp bi5hbmFueWV2QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgbGliL2V0aGRldi9ldGhkZXZfcHJp dmF0ZS5jIHwgIDMxICsrKysrDQo+ID4gIGxpYi9ldGhkZXYvcnRlX2V0aGRldi5oICAgICB8IDI0 MiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0NCj4gPiAgbGliL2V0aGRldi92 ZXJzaW9uLm1hcCAgICAgIHwgICAzICsNCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0 aW9ucygrKSwgNjggZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRl di9ldGhkZXZfcHJpdmF0ZS5jIGIvbGliL2V0aGRldi9ldGhkZXZfcHJpdmF0ZS5jDQo+ID4gaW5k ZXggM2VlZGE2ZTlmOS4uMTIyMmM2Zjg0ZSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZXRoZGV2L2V0 aGRldl9wcml2YXRlLmMNCj4gPiArKysgYi9saWIvZXRoZGV2L2V0aGRldl9wcml2YXRlLmMNCj4g PiBAQCAtMjI2LDMgKzIyNiwzNCBAQCBldGhfZGV2X2ZwX29wc19zZXR1cChzdHJ1Y3QgcnRlX2V0 aF9mcF9vcHMgKmZwbywNCj4gPiAgCWZwby0+dHhxLmRhdGEgPSBkZXYtPmRhdGEtPnR4X3F1ZXVl czsNCj4gPiAgCWZwby0+dHhxLmNsYmsgPSAodm9pZCAqKikodWludHB0cl90KWRldi0+cHJlX3R4 X2J1cnN0X2NiczsNCj4gPiAgfQ0KPiA+ICsNCj4gPiArdWludDE2X3QNCj4gPiArcnRlX2V0aF9j YWxsX3J4X2NhbGxiYWNrcyh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCwNCj4g PiArCXN0cnVjdCBydGVfbWJ1ZiAqKnJ4X3BrdHMsIHVpbnQxNl90IG5iX3J4LCB1aW50MTZfdCBu Yl9wa3RzLA0KPiA+ICsJdm9pZCAqb3BhcXVlKQ0KPiA+ICt7DQo+ID4gKwljb25zdCBzdHJ1Y3Qg cnRlX2V0aF9yeHR4X2NhbGxiYWNrICpjYiA9IG9wYXF1ZTsNCj4gPiArDQo+ID4gKwl3aGlsZSAo Y2IgIT0gTlVMTCkgew0KPiA+ICsJCW5iX3J4ID0gY2ItPmZuLnJ4KHBvcnRfaWQsIHF1ZXVlX2lk LCByeF9wa3RzLCBuYl9yeCwNCj4gPiArCQkJCW5iX3BrdHMsIGNiLT5wYXJhbSk7DQo+ID4gKwkJ Y2IgPSBjYi0+bmV4dDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gbmJfcng7DQo+ID4g K30NCj4gPiArDQo+ID4gK3VpbnQxNl90DQo+ID4gK3J0ZV9ldGhfY2FsbF90eF9jYWxsYmFja3Mo dWludDE2X3QgcG9ydF9pZCwgdWludDE2X3QgcXVldWVfaWQsDQo+ID4gKwlzdHJ1Y3QgcnRlX21i dWYgKip0eF9wa3RzLCB1aW50MTZfdCBuYl9wa3RzLCB2b2lkICpvcGFxdWUpDQo+ID4gK3sNCj4g PiArCWNvbnN0IHN0cnVjdCBydGVfZXRoX3J4dHhfY2FsbGJhY2sgKmNiID0gb3BhcXVlOw0KPiA+ ICsNCj4gPiArCXdoaWxlIChjYiAhPSBOVUxMKSB7DQo+ID4gKwkJbmJfcGt0cyA9IGNiLT5mbi50 eChwb3J0X2lkLCBxdWV1ZV9pZCwgdHhfcGt0cywgbmJfcGt0cywNCj4gPiArCQkJCWNiLT5wYXJh bSk7DQo+ID4gKwkJY2IgPSBjYi0+bmV4dDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4g bmJfcGt0czsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYu aCBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oDQo+ID4gaW5kZXggY2RkMTZkNmU1Ny4uYzBlMWE0 MDY4MSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiA+ICsrKyBi L2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oDQo+ID4gQEAgLTQ5MDQsNiArNDkwNCwzMyBAQCBpbnQg cnRlX2V0aF9yZXByZXNlbnRvcl9pbmZvX2dldCh1aW50MTZfdCBwb3J0X2lkLA0KPiA+DQo+ID4g ICNpbmNsdWRlIDxydGVfZXRoZGV2X2NvcmUuaD4NCj4gPg0KPiA+ICsvKioNCj4gPiArICogQGlu dGVybmFsDQo+ID4gKyAqIEhlbHBlciByb3V0aW5lIGZvciBldGggZHJpdmVyIHJ4X2J1cnN0IEFQ SS4NCj4gDQo+IHJ4IC0+IFJ4DQo+IA0KPiA+ICsgKiBTaG91bGQgYmUgY2FsbGVkIGF0IGV4aXQg ZnJvbSBQTUQncyBydGVfZXRoX3J4X2J1bGsgaW1wbGVtZW50YXRpb24uDQo+ID4gKyAqIERvZXMg bmVjZXNzYXJ5IHBvc3QtcHJvY2Vzc2luZyAtIGludm9rZXMgUlggY2FsbGJhY2tzIGlmIGFueSwg ZXRjLg0KPiANCj4gUlggLT4gUngNCj4gDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBwb3J0X2lk DQo+ID4gKyAqICBUaGUgcG9ydCBpZGVudGlmaWVyIG9mIHRoZSBFdGhlcm5ldCBkZXZpY2UuDQo+ ID4gKyAqIEBwYXJhbSBxdWV1ZV9pZA0KPiA+ICsgKiAgVGhlIGluZGV4IG9mIHRoZSByZWNlaXZl IHF1ZXVlIGZyb20gd2hpY2ggdG8gcmV0cmlldmUgaW5wdXQgcGFja2V0cy4NCj4gDQo+IElzbid0 Og0KPiBUaGUgaW5kZXggb2YgdGhlIHF1ZXVlIGZyb20gd2hpY2ggcGFja2V0cyBhcmUgcmVjZWl2 ZWQgZnJvbT8NCg0KSSBjb3BpZWQgaXQgZnJvbSBjb21tZW50cyBmcm9tIHJ0ZV9ldGhfcnhfYnVy c3QoKS4NCkkgc3VwcG9zZSBpdCBpcyBqdXN0IHR3byB3YXlzIHRvIHNheSB0aGUgc2FtZSB0aGlu Zy4NCg0KPiANCj4gPiArICogQHBhcmFtIHJ4X3BrdHMNCj4gPiArICogICBUaGUgYWRkcmVzcyBv ZiBhbiBhcnJheSBvZiBwb2ludGVycyB0byAqcnRlX21idWYqIHN0cnVjdHVyZXMgdGhhdA0KPiA+ ICsgKiAgIGhhdmUgYmVlbiByZXRyaWV2ZWQgZnJvbSB0aGUgZGV2aWNlLg0KPiA+ICsgKiBAcGFy YW0gbmJfcGt0cw0KPiANCj4gU2hvdWxkIGJlIEBwYXJhbSBuYl9yeA0KDQpBY2ssIHdpbGwgZml4 LiANCg0KPiANCj4gPiArICogICBUaGUgbnVtYmVyIG9mIHBhY2tldHMgdGhhdCB3ZXJlIHJldHJp ZXZlZCBmcm9tIHRoZSBkZXZpY2UuDQo+ID4gKyAqIEBwYXJhbSBuYl9wa3RzDQo+ID4gKyAqICAg VGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiAqcnhfcGt0cyogYXJyYXkuDQo+IA0KPiBAcCBzaG91 bGQgYmUgdXNlZCB0byByZWZlciB0byBhIHBhcmFtdGVyLg0KDQpUbyBiZSBtb3JlIHByZWNpc2Ug eW91IGFyZSB0YWxraW5nIGFib3V0Og0Kcy8qcnhfcGt0cyovQCByeF9wa3RzLw0KPw0KDQo+IA0K PiBUaGUgZGVzY3JpcHRpb24gZG9lcyBub3QgaGVscCB0byB1bmRlcnN0YW5kIHdoeSBib3RoIG5i X3J4IGFuZA0KPiBuYl9wa3RzIGFyZSBuZWNlc3NhcnkuIElzbid0IG5iX3BrdHMgPj0gbmJfcngg YW5kIG5iX3J4DQo+IHN1ZmZpY2llbnQ/DQoNCk5vcGUsICB0aGF0J3MgZm9yIGNhbGxiYWNrcyBj YWxsLg0KV2lsbCB1cGRhdGUgdGhlIGNvbW1lbnQuDQogDQo+ID4gKyAqIEBwYXJhbSBvcGFxdWUN Cj4gPiArICogICBPcGFxdWUgcG9pbnRlciBvZiBSWCBxdWV1ZSBjYWxsYmFjayByZWxhdGVkIGRh dGEuDQo+IA0KPiBSWCAtPiBSeA0KPiANCj4gPiArICoNCj4gPiArICogQHJldHVybg0KPiA+ICsg KiAgVGhlIG51bWJlciBvZiBwYWNrZXRzIGVmZmVjdGl2ZWx5IHN1cHBsaWVkIHRvIHRoZSAqcnhf cGt0cyogYXJyYXkuDQo+IA0KPiBAcCBzaG91bGQgYmUgdXNlZCB0byByZWZlciB0byBhIHBhcmFt ZXRlci4NCj4gDQo+ID4gKyAqLw0KPiA+ICt1aW50MTZfdCBydGVfZXRoX2NhbGxfcnhfY2FsbGJh Y2tzKHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkLA0KPiA+ICsJCXN0cnVjdCBy dGVfbWJ1ZiAqKnJ4X3BrdHMsIHVpbnQxNl90IG5iX3J4LCB1aW50MTZfdCBuYl9wa3RzLA0KPiA+ ICsJCXZvaWQgKm9wYXF1ZSk7DQo+ID4gKw0KPiA+ICAvKioNCj4gPiAgICoNCj4gPiAgICogUmV0 cmlldmUgYSBidXJzdCBvZiBpbnB1dCBwYWNrZXRzIGZyb20gYSByZWNlaXZlIHF1ZXVlIG9mIGFu IEV0aGVybmV0DQo+ID4gQEAgLTQ5OTUsMjMgKzUwMjIsMzcgQEAgc3RhdGljIGlubGluZSB1aW50 MTZfdA0KPiA+ICBydGVfZXRoX3J4X2J1cnN0KHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1 ZXVlX2lkLA0KPiA+ICAJCSBzdHJ1Y3QgcnRlX21idWYgKipyeF9wa3RzLCBjb25zdCB1aW50MTZf dCBuYl9wa3RzKQ0KPiA+ICB7DQo+ID4gLQlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiA9ICZydGVf ZXRoX2RldmljZXNbcG9ydF9pZF07DQo+ID4gIAl1aW50MTZfdCBuYl9yeDsNCj4gPiArCXN0cnVj dCBydGVfZXRoX2ZwX29wcyAqcDsNCj4gDQo+IHAgaXMgdHlwaWNhbGx5IGEgdmVyeSBiYWQgbmFt ZSBpbiBhIGZ1bmNpb24gd2l0aA0KPiBtYW55IHBvaW50ZXIgdmFyaWFibGVzIGV0Yy4gTWF5IGJl ICJmcG8iIGFzIGluIHByZXZpb3VzDQo+IHBhdGNoPw0KPiANCj4gPiArCXZvaWQgKmNiLCAqcWQ7 DQo+IA0KPiBQbGVhc2UsIGF2b2lkIHZhcmlhYmxlLCBleHBlY2lhbGx5IHBvaW50ZXJzLCBkZWNs YXJhdGlvbiBpbg0KPiBvbmUgbGluZS4NCg0KSGVyZSBhbmQgaW4gb3RoZXIgcGxhY2VzLCBJIHRo aW5rIGxvY2FsIHZhcmlhYmxlIG5hbWVzIGFuZCBwbGFjZW1lbnQsDQppcyBqdXN0IGEgbWF0dGVy IG9mIHBlcnNvbmFsIHByZWZlcmVuY2UuDQoNCj4gDQo+IEknZCBzdWdnZXN0IHRvIHVzZSAncnhx JyBpbnN0ZWFkIG9mICdxZCcuIFRoZSBmaXJzdCBwYXJhbXRlcg0KPiBvZiB0aGUgcnhfcGt0X2J1 cnN0IGlzICdyeHEnLg0KPiANCj4gQWxzbyAnY2InIHNlZW1zIHRvIGJlIHVzZWQgdW5kZXIgUlRF X0VUSERFVl9SWFRYX0NBTExCQUNLUw0KPiBvbmx5LiBJZiBzbywgaXQgY291bGQgYmUgdW51c2Vk IHZhcmlhYmxlIHdhcm5pbmcgaWYNCj4gUlRFX0VUSERFVl9SWFRYX0NBTExCQUNLUyBpcyBub3Qg ZGVmaW5lZC4NCg0KR29vZCBwb2ludCwgd2lsbCBtb3ZlIGl0IGJhY2sgdW5kZXIgI2lmZGVmIFJU RV9FVEhERVZfUlhUWF9DQUxMQkFDS1MuDQogDQo+ID4gKw0KPiA+ICsjaWZkZWYgUlRFX0VUSERF Vl9ERUJVR19SWA0KPiA+ICsJaWYgKHBvcnRfaWQgPj0gUlRFX01BWF9FVEhQT1JUUyB8fA0KPiA+ ICsJCQlxdWV1ZV9pZCA+PSBSVEVfTUFYX1FVRVVFU19QRVJfUE9SVCkgew0KPiA+ICsJCVJURV9F VEhERVZfTE9HKEVSUiwNCj4gPiArCQkJIkludmFsaWQgcG9ydF9pZD0ldSBvciBxdWV1ZV9pZD0l dVxuIiwNCj4gPiArCQkJcG9ydF9pZCwgcXVldWVfaWQpOw0KPiA+ICsJCXJldHVybiAwOw0KPiA+ ICsJfQ0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKwkvKiBmZXRjaCBwb2ludGVyIHRvIHF1ZXVl IGRhdGEgKi8NCj4gPiArCXAgPSAmcnRlX2V0aF9mcF9vcHNbcG9ydF9pZF07DQo+ID4gKwlxZCA9 IHAtPnJ4cS5kYXRhW3F1ZXVlX2lkXTsNCj4gPg0KPiA+ICAjaWZkZWYgUlRFX0VUSERFVl9ERUJV R19SWA0KPiA+ICAJUlRFX0VUSF9WQUxJRF9QT1JUSURfT1JfRVJSX1JFVChwb3J0X2lkLCAwKTsN Cj4gPiAtCVJURV9GVU5DX1BUUl9PUl9FUlJfUkVUKCpkZXYtPnJ4X3BrdF9idXJzdCwgMCk7DQo+ ID4NCj4gPiAtCWlmIChxdWV1ZV9pZCA+PSBkZXYtPmRhdGEtPm5iX3J4X3F1ZXVlcykgew0KPiA+ IC0JCVJURV9FVEhERVZfTE9HKEVSUiwgIkludmFsaWQgUlggcXVldWVfaWQ9JXVcbiIsIHF1ZXVl X2lkKTsNCj4gPiArCWlmIChxZCA9PSBOVUxMKSB7DQo+ID4gKwkJUlRFX0VUSERFVl9MT0coRVJS LCAiSW52YWxpZCBSWCBxdWV1ZV9pZD0ldSBmb3IgcG9ydF9pZD0ldVxuIiwNCj4gDQo+IFJYIC0+ IFJ4DQo+IA0KPiA+ICsJCQlxdWV1ZV9pZCwgcG9ydF9pZCk7DQo+ID4gIAkJcmV0dXJuIDA7DQo+ ID4gIAl9DQo+ID4gICNlbmRpZg0KPiA+IC0JbmJfcnggPSAoKmRldi0+cnhfcGt0X2J1cnN0KShk ZXYtPmRhdGEtPnJ4X3F1ZXVlc1txdWV1ZV9pZF0sDQo+ID4gLQkJCQkgICAgIHJ4X3BrdHMsIG5i X3BrdHMpOw0KPiA+ICsNCj4gPiArCW5iX3J4ID0gcC0+cnhfcGt0X2J1cnN0KHFkLCByeF9wa3Rz LCBuYl9wa3RzKTsNCj4gPg0KPiA+ICAjaWZkZWYgUlRFX0VUSERFVl9SWFRYX0NBTExCQUNLUw0K PiA+IC0Jc3RydWN0IHJ0ZV9ldGhfcnh0eF9jYWxsYmFjayAqY2I7DQo+ID4NCj4gPiAgCS8qIF9f QVRPTUlDX1JFTEVBU0UgbWVtb3J5IG9yZGVyIHdhcyB1c2VkIHdoZW4gdGhlDQo+ID4gIAkgKiBj YWxsIGJhY2sgd2FzIGluc2VydGVkIGludG8gdGhlIGxpc3QuDQo+ID4gQEAgLTUwMTksMTYgKzUw NjAsMTAgQEAgcnRlX2V0aF9yeF9idXJzdCh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1 ZV9pZCwNCj4gPiAgCSAqIGNiIGFuZCBjYi0+Zm4vY2ItPm5leHQsIF9fQVRPTUlDX0FDUVVJUkUg bWVtb3J5IG9yZGVyIGlzDQo+ID4gIAkgKiBub3QgcmVxdWlyZWQuDQo+ID4gIAkgKi8NCj4gPiAt CWNiID0gX19hdG9taWNfbG9hZF9uKCZkZXYtPnBvc3RfcnhfYnVyc3RfY2JzW3F1ZXVlX2lkXSwN Cj4gPiAtCQkJCV9fQVRPTUlDX1JFTEFYRUQpOw0KPiA+IC0NCj4gPiAtCWlmICh1bmxpa2VseShj YiAhPSBOVUxMKSkgew0KPiA+IC0JCWRvIHsNCj4gPiAtCQkJbmJfcnggPSBjYi0+Zm4ucngocG9y dF9pZCwgcXVldWVfaWQsIHJ4X3BrdHMsIG5iX3J4LA0KPiA+IC0JCQkJCQluYl9wa3RzLCBjYi0+ cGFyYW0pOw0KPiA+IC0JCQljYiA9IGNiLT5uZXh0Ow0KPiA+IC0JCX0gd2hpbGUgKGNiICE9IE5V TEwpOw0KPiA+IC0JfQ0KPiA+ICsJY2IgPSBfX2F0b21pY19sb2FkX24oKHZvaWQgKiopJnAtPnJ4 cS5jbGJrW3F1ZXVlX2lkXSwgX19BVE9NSUNfUkVMQVhFRCk7DQo+ID4gKwlpZiAodW5saWtlbHko Y2IgIT0gTlVMTCkpDQo+ID4gKwkJbmJfcnggPSBydGVfZXRoX2NhbGxfcnhfY2FsbGJhY2tzKHBv cnRfaWQsIHF1ZXVlX2lkLCByeF9wa3RzLA0KPiA+ICsJCQkJbmJfcngsIG5iX3BrdHMsIGNiKTsN Cj4gPiAgI2VuZGlmDQo+ID4NCj4gPiAgCXJ0ZV9ldGhkZXZfdHJhY2VfcnhfYnVyc3QocG9ydF9p ZCwgcXVldWVfaWQsICh2b2lkICoqKXJ4X3BrdHMsIG5iX3J4KTsNCj4gPiBAQCAtNTA1MSwxNiAr NTA4NiwyNyBAQCBydGVfZXRoX3J4X2J1cnN0KHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1 ZXVlX2lkLA0KPiA+ICBzdGF0aWMgaW5saW5lIGludA0KPiA+ICBydGVfZXRoX3J4X3F1ZXVlX2Nv dW50KHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkKQ0KPiA+ICB7DQo+ID4gLQlz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldjsNCj4gPiArCXN0cnVjdCBydGVfZXRoX2ZwX29wcyAqcDsN Cj4gPiArCXZvaWQgKnFkOw0KPiANCj4gcCAtPiBmcG8sIHFkIC0+IHJ4cQ0KPiANCj4gPiArDQo+ ID4gKwlpZiAocG9ydF9pZCA+PSBSVEVfTUFYX0VUSFBPUlRTIHx8DQo+ID4gKwkJCXF1ZXVlX2lk ID49IFJURV9NQVhfUVVFVUVTX1BFUl9QT1JUKSB7DQo+ID4gKwkJUlRFX0VUSERFVl9MT0coRVJS LA0KPiA+ICsJCQkiSW52YWxpZCBwb3J0X2lkPSV1IG9yIHF1ZXVlX2lkPSV1XG4iLA0KPiA+ICsJ CQlwb3J0X2lkLCBxdWV1ZV9pZCk7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJLyogZmV0Y2ggcG9pbnRlciB0byBxdWV1ZSBkYXRhICovDQo+ID4gKwlwID0g JnJ0ZV9ldGhfZnBfb3BzW3BvcnRfaWRdOw0KPiA+ICsJcWQgPSBwLT5yeHEuZGF0YVtxdWV1ZV9p ZF07DQo+ID4NCj4gPiAgCVJURV9FVEhfVkFMSURfUE9SVElEX09SX0VSUl9SRVQocG9ydF9pZCwg LUVOT0RFVik7DQo+ID4gLQlkZXYgPSAmcnRlX2V0aF9kZXZpY2VzW3BvcnRfaWRdOw0KPiA+IC0J UlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmRldi0+cnhfcXVldWVfY291bnQsIC1FTk9UU1VQKTsN Cj4gPiAtCWlmIChxdWV1ZV9pZCA+PSBkZXYtPmRhdGEtPm5iX3J4X3F1ZXVlcyB8fA0KPiA+IC0J ICAgIGRldi0+ZGF0YS0+cnhfcXVldWVzW3F1ZXVlX2lkXSA9PSBOVUxMKQ0KPiA+ICsJUlRFX0ZV TkNfUFRSX09SX0VSUl9SRVQoKnAtPnJ4X3F1ZXVlX2NvdW50LCAtRU5PVFNVUCk7DQo+ID4gKwlp ZiAocWQgPT0gTlVMTCkNCj4gPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gPg0KPiA+IC0JcmV0dXJu IChpbnQpKCpkZXYtPnJ4X3F1ZXVlX2NvdW50KShkZXYtPmRhdGEtPnJ4X3F1ZXVlc1txdWV1ZV9p ZF0pOw0KPiA+ICsJcmV0dXJuIChpbnQpKCpwLT5yeF9xdWV1ZV9jb3VudCkocWQpOw0KPiA+ICB9 DQo+ID4NCj4gPiAgLyoqQHtAbmFtZSBSeCBoYXJkd2FyZSBkZXNjcmlwdG9yIHN0YXRlcw0KPiA+ IEBAIC01MTA4LDIxICs1MTU0LDMwIEBAIHN0YXRpYyBpbmxpbmUgaW50DQo+ID4gIHJ0ZV9ldGhf cnhfZGVzY3JpcHRvcl9zdGF0dXModWludDE2X3QgcG9ydF9pZCwgdWludDE2X3QgcXVldWVfaWQs DQo+ID4gIAl1aW50MTZfdCBvZmZzZXQpDQo+ID4gIHsNCj4gPiAtCXN0cnVjdCBydGVfZXRoX2Rl diAqZGV2Ow0KPiA+IC0Jdm9pZCAqcnhxOw0KPiA+ICsJc3RydWN0IHJ0ZV9ldGhfZnBfb3BzICpw Ow0KPiA+ICsJdm9pZCAqcWQ7DQo+IA0KPiBwIC0+IGZwbywgcWQgLT4gcnhxDQo+IA0KPiA+DQo+ ID4gICNpZmRlZiBSVEVfRVRIREVWX0RFQlVHX1JYDQo+ID4gLQlSVEVfRVRIX1ZBTElEX1BPUlRJ RF9PUl9FUlJfUkVUKHBvcnRfaWQsIC1FTk9ERVYpOw0KPiA+ICsJaWYgKHBvcnRfaWQgPj0gUlRF X01BWF9FVEhQT1JUUyB8fA0KPiA+ICsJCQlxdWV1ZV9pZCA+PSBSVEVfTUFYX1FVRVVFU19QRVJf UE9SVCkgew0KPiA+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gPiArCQkJIkludmFsaWQgcG9y dF9pZD0ldSBvciBxdWV1ZV9pZD0ldVxuIiwNCj4gPiArCQkJcG9ydF9pZCwgcXVldWVfaWQpOw0K PiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICAjZW5kaWYNCj4gPiAtCWRldiA9 ICZydGVfZXRoX2RldmljZXNbcG9ydF9pZF07DQo+ID4gKw0KPiA+ICsJLyogZmV0Y2ggcG9pbnRl ciB0byBxdWV1ZSBkYXRhICovDQo+ID4gKwlwID0gJnJ0ZV9ldGhfZnBfb3BzW3BvcnRfaWRdOw0K PiA+ICsJcWQgPSBwLT5yeHEuZGF0YVtxdWV1ZV9pZF07DQo+ID4gKw0KPiA+ICAjaWZkZWYgUlRF X0VUSERFVl9ERUJVR19SWA0KPiA+IC0JaWYgKHF1ZXVlX2lkID49IGRldi0+ZGF0YS0+bmJfcnhf cXVldWVzKQ0KPiA+ICsJUlRFX0VUSF9WQUxJRF9QT1JUSURfT1JfRVJSX1JFVChwb3J0X2lkLCAt RU5PREVWKTsNCj4gPiArCWlmIChxZCA9PSBOVUxMKQ0KPiA+ICAJCXJldHVybiAtRU5PREVWOw0K PiA+ICAjZW5kaWYNCj4gPiAtCVJURV9GVU5DX1BUUl9PUl9FUlJfUkVUKCpkZXYtPnJ4X2Rlc2Ny aXB0b3Jfc3RhdHVzLCAtRU5PVFNVUCk7DQo+ID4gLQlyeHEgPSBkZXYtPmRhdGEtPnJ4X3F1ZXVl c1txdWV1ZV9pZF07DQo+ID4gLQ0KPiA+IC0JcmV0dXJuICgqZGV2LT5yeF9kZXNjcmlwdG9yX3N0 YXR1cykocnhxLCBvZmZzZXQpOw0KPiA+ICsJUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKnAtPnJ4 X2Rlc2NyaXB0b3Jfc3RhdHVzLCAtRU5PVFNVUCk7DQo+ID4gKwlyZXR1cm4gKCpwLT5yeF9kZXNj cmlwdG9yX3N0YXR1cykocWQsIG9mZnNldCk7DQo+ID4gIH0NCj4gPg0KPiA+ICAvKipAe0BuYW1l IFR4IGhhcmR3YXJlIGRlc2NyaXB0b3Igc3RhdGVzDQo+ID4gQEAgLTUxNjksMjMgKzUyMjQsNTQg QEAgcnRlX2V0aF9yeF9kZXNjcmlwdG9yX3N0YXR1cyh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZf dCBxdWV1ZV9pZCwNCj4gPiAgc3RhdGljIGlubGluZSBpbnQgcnRlX2V0aF90eF9kZXNjcmlwdG9y X3N0YXR1cyh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICAJdWludDE2X3QgcXVldWVfaWQsIHVpbnQx Nl90IG9mZnNldCkNCj4gPiAgew0KPiA+IC0Jc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXY7DQo+ID4g LQl2b2lkICp0eHE7DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aF9mcF9vcHMgKnA7DQo+ID4gKwl2b2lk ICpxZDsNCj4gDQo+IHAgLT4gZnBvLCBxZCAtPiB0eHENCj4gDQo+ID4NCj4gPiAgI2lmZGVmIFJU RV9FVEhERVZfREVCVUdfVFgNCj4gPiAtCVJURV9FVEhfVkFMSURfUE9SVElEX09SX0VSUl9SRVQo cG9ydF9pZCwgLUVOT0RFVik7DQo+ID4gKwlpZiAocG9ydF9pZCA+PSBSVEVfTUFYX0VUSFBPUlRT IHx8DQo+ID4gKwkJCXF1ZXVlX2lkID49IFJURV9NQVhfUVVFVUVTX1BFUl9QT1JUKSB7DQo+ID4g KwkJUlRFX0VUSERFVl9MT0coRVJSLA0KPiA+ICsJCQkiSW52YWxpZCBwb3J0X2lkPSV1IG9yIHF1 ZXVlX2lkPSV1XG4iLA0KPiA+ICsJCQlwb3J0X2lkLCBxdWV1ZV9pZCk7DQo+ID4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gICNlbmRpZg0KPiA+IC0JZGV2ID0gJnJ0ZV9ldGhfZGV2 aWNlc1twb3J0X2lkXTsNCj4gPiArDQo+ID4gKwkvKiBmZXRjaCBwb2ludGVyIHRvIHF1ZXVlIGRh dGEgKi8NCj4gPiArCXAgPSAmcnRlX2V0aF9mcF9vcHNbcG9ydF9pZF07DQo+ID4gKwlxZCA9IHAt PnR4cS5kYXRhW3F1ZXVlX2lkXTsNCj4gPiArDQo+ID4gICNpZmRlZiBSVEVfRVRIREVWX0RFQlVH X1RYDQo+ID4gLQlpZiAocXVldWVfaWQgPj0gZGV2LT5kYXRhLT5uYl90eF9xdWV1ZXMpDQo+ID4g KwlSVEVfRVRIX1ZBTElEX1BPUlRJRF9PUl9FUlJfUkVUKHBvcnRfaWQsIC1FTk9ERVYpOw0KPiA+ ICsJaWYgKHFkID09IE5VTEwpDQo+ID4gIAkJcmV0dXJuIC1FTk9ERVY7DQo+ID4gICNlbmRpZg0K PiA+IC0JUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmRldi0+dHhfZGVzY3JpcHRvcl9zdGF0dXMs IC1FTk9UU1VQKTsNCj4gPiAtCXR4cSA9IGRldi0+ZGF0YS0+dHhfcXVldWVzW3F1ZXVlX2lkXTsN Cj4gPiAtDQo+ID4gLQlyZXR1cm4gKCpkZXYtPnR4X2Rlc2NyaXB0b3Jfc3RhdHVzKSh0eHEsIG9m ZnNldCk7DQo+ID4gKwlSVEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgqcC0+dHhfZGVzY3JpcHRvcl9z dGF0dXMsIC1FTk9UU1VQKTsNCj4gPiArCXJldHVybiAoKnAtPnR4X2Rlc2NyaXB0b3Jfc3RhdHVz KShxZCwgb2Zmc2V0KTsNCj4gPiAgfQ0KPiA+DQo+ID4gKy8qKg0KPiA+ICsgKiBAaW50ZXJuYWwN Cj4gPiArICogSGVscGVyIHJvdXRpbmUgZm9yIGV0aCBkcml2ZXIgdHhfYnVyc3QgQVBJLg0KPiA+ ICsgKiBTaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBlbnRyeSBQTUQncyBydGVfZXRoX3R4X2J1bGsg aW1wbGVtZW50YXRpb24uDQo+ID4gKyAqIERvZXMgbmVjZXNzYXJ5IHByZS1wcm9jZXNzaW5nIC0g aW52b2tlcyBUWCBjYWxsYmFja3MgaWYgYW55LCBldGMuDQo+IA0KPiBUWCAtPiBUeA0KPiANCj4g PiArICoNCj4gPiArICogQHBhcmFtIHBvcnRfaWQNCj4gPiArICogICBUaGUgcG9ydCBpZGVudGlm aWVyIG9mIHRoZSBFdGhlcm5ldCBkZXZpY2UuDQo+ID4gKyAqIEBwYXJhbSBxdWV1ZV9pZA0KPiA+ ICsgKiAgIFRoZSBpbmRleCBvZiB0aGUgdHJhbnNtaXQgcXVldWUgdGhyb3VnaCB3aGljaCBvdXRw dXQgcGFja2V0cyBtdXN0IGJlDQo+ID4gKyAqICAgc2VudC4NCj4gPiArICogQHBhcmFtIHR4X3Br dHMNCj4gPiArICogICBUaGUgYWRkcmVzcyBvZiBhbiBhcnJheSBvZiAqbmJfcGt0cyogcG9pbnRl cnMgdG8gKnJ0ZV9tYnVmKiBzdHJ1Y3R1cmVzDQo+ID4gKyAqICAgd2hpY2ggY29udGFpbiB0aGUg b3V0cHV0IHBhY2tldHMuDQo+IA0KPiAqbmJfcGt0cyogLT4gQHAgbmJfcGt0cw0KPiANCj4gPiAr ICogQHBhcmFtIG5iX3BrdHMNCj4gPiArICogICBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGFja2V0 cyB0byB0cmFuc21pdC4NCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgIFRoZSBudW1iZXIgb2Yg b3V0cHV0IHBhY2tldHMgdG8gdHJhbnNtaXQuDQo+ID4gKyAqLw0KPiA+ICt1aW50MTZfdCBydGVf ZXRoX2NhbGxfdHhfY2FsbGJhY2tzKHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lk LA0KPiA+ICsJc3RydWN0IHJ0ZV9tYnVmICoqdHhfcGt0cywgdWludDE2X3QgbmJfcGt0cywgdm9p ZCAqb3BhcXVlKTsNCj4gPiArDQo+ID4gIC8qKg0KPiA+ICAgKiBTZW5kIGEgYnVyc3Qgb2Ygb3V0 cHV0IHBhY2tldHMgb24gYSB0cmFuc21pdCBxdWV1ZSBvZiBhbiBFdGhlcm5ldCBkZXZpY2UuDQo+ ID4gICAqDQo+ID4gQEAgLTUyNTYsMjAgKzUzNDIsMzQgQEAgc3RhdGljIGlubGluZSB1aW50MTZf dA0KPiA+ICBydGVfZXRoX3R4X2J1cnN0KHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVl X2lkLA0KPiA+ICAJCSBzdHJ1Y3QgcnRlX21idWYgKip0eF9wa3RzLCB1aW50MTZfdCBuYl9wa3Rz KQ0KPiA+ICB7DQo+ID4gLQlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiA9ICZydGVfZXRoX2Rldmlj ZXNbcG9ydF9pZF07DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aF9mcF9vcHMgKnA7DQo+ID4gKwl2b2lk ICpjYiwgKnFkOw0KPiANCj4gU2FtZSBhcyBhYm92ZQ0KPiANCj4gPiArDQo+ID4gKyNpZmRlZiBS VEVfRVRIREVWX0RFQlVHX1RYDQo+ID4gKwlpZiAocG9ydF9pZCA+PSBSVEVfTUFYX0VUSFBPUlRT IHx8DQo+ID4gKwkJCXF1ZXVlX2lkID49IFJURV9NQVhfUVVFVUVTX1BFUl9QT1JUKSB7DQo+ID4g KwkJUlRFX0VUSERFVl9MT0coRVJSLA0KPiA+ICsJCQkiSW52YWxpZCBwb3J0X2lkPSV1IG9yIHF1 ZXVlX2lkPSV1XG4iLA0KPiA+ICsJCQlwb3J0X2lkLCBxdWV1ZV9pZCk7DQo+ID4gKwkJcmV0dXJu IDA7DQo+ID4gKwl9DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArCS8qIGZldGNoIHBvaW50ZXIg dG8gcXVldWUgZGF0YSAqLw0KPiA+ICsJcCA9ICZydGVfZXRoX2ZwX29wc1twb3J0X2lkXTsNCj4g PiArCXFkID0gcC0+dHhxLmRhdGFbcXVldWVfaWRdOw0KPiA+DQo+ID4gICNpZmRlZiBSVEVfRVRI REVWX0RFQlVHX1RYDQo+ID4gIAlSVEVfRVRIX1ZBTElEX1BPUlRJRF9PUl9FUlJfUkVUKHBvcnRf aWQsIDApOw0KPiA+IC0JUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmRldi0+dHhfcGt0X2J1cnN0 LCAwKTsNCj4gPg0KPiA+IC0JaWYgKHF1ZXVlX2lkID49IGRldi0+ZGF0YS0+bmJfdHhfcXVldWVz KSB7DQo+ID4gLQkJUlRFX0VUSERFVl9MT0coRVJSLCAiSW52YWxpZCBUWCBxdWV1ZV9pZD0ldVxu IiwgcXVldWVfaWQpOw0KPiA+ICsJaWYgKHFkID09IE5VTEwpIHsNCj4gPiArCQlSVEVfRVRIREVW X0xPRyhFUlIsICJJbnZhbGlkIFRYIHF1ZXVlX2lkPSV1IGZvciBwb3J0X2lkPSV1XG4iLA0KPiAN Cj4gVFggLT4gVHgNCj4gDQo+ID4gKwkJCXF1ZXVlX2lkLCBwb3J0X2lkKTsNCj4gPiAgCQlyZXR1 cm4gMDsNCj4gPiAgCX0NCj4gPiAgI2VuZGlmDQo+ID4NCj4gPiAgI2lmZGVmIFJURV9FVEhERVZf UlhUWF9DQUxMQkFDS1MNCj4gPiAtCXN0cnVjdCBydGVfZXRoX3J4dHhfY2FsbGJhY2sgKmNiOw0K PiA+DQo+ID4gIAkvKiBfX0FUT01JQ19SRUxFQVNFIG1lbW9yeSBvcmRlciB3YXMgdXNlZCB3aGVu IHRoZQ0KPiA+ICAJICogY2FsbCBiYWNrIHdhcyBpbnNlcnRlZCBpbnRvIHRoZSBsaXN0Lg0KPiA+ IEBAIC01Mjc3LDIxICs1Mzc3LDE2IEBAIHJ0ZV9ldGhfdHhfYnVyc3QodWludDE2X3QgcG9ydF9p ZCwgdWludDE2X3QgcXVldWVfaWQsDQo+ID4gIAkgKiBjYiBhbmQgY2ItPmZuL2NiLT5uZXh0LCBf X0FUT01JQ19BQ1FVSVJFIG1lbW9yeSBvcmRlciBpcw0KPiA+ICAJICogbm90IHJlcXVpcmVkLg0K PiA+ICAJICovDQo+ID4gLQljYiA9IF9fYXRvbWljX2xvYWRfbigmZGV2LT5wcmVfdHhfYnVyc3Rf Y2JzW3F1ZXVlX2lkXSwNCj4gPiAtCQkJCV9fQVRPTUlDX1JFTEFYRUQpOw0KPiA+IC0NCj4gPiAt CWlmICh1bmxpa2VseShjYiAhPSBOVUxMKSkgew0KPiA+IC0JCWRvIHsNCj4gPiAtCQkJbmJfcGt0 cyA9IGNiLT5mbi50eChwb3J0X2lkLCBxdWV1ZV9pZCwgdHhfcGt0cywgbmJfcGt0cywNCj4gPiAt CQkJCQljYi0+cGFyYW0pOw0KPiA+IC0JCQljYiA9IGNiLT5uZXh0Ow0KPiA+IC0JCX0gd2hpbGUg KGNiICE9IE5VTEwpOw0KPiA+IC0JfQ0KPiA+ICsJY2IgPSBfX2F0b21pY19sb2FkX24oKHZvaWQg KiopJnAtPnR4cS5jbGJrW3F1ZXVlX2lkXSwgX19BVE9NSUNfUkVMQVhFRCk7DQo+ID4gKwlpZiAo dW5saWtlbHkoY2IgIT0gTlVMTCkpDQo+ID4gKwkJbmJfcGt0cyA9IHJ0ZV9ldGhfY2FsbF90eF9j YWxsYmFja3MocG9ydF9pZCwgcXVldWVfaWQsIHR4X3BrdHMsDQo+ID4gKwkJCQluYl9wa3RzLCBj Yik7DQo+ID4gICNlbmRpZg0KPiA+DQo+ID4gLQlydGVfZXRoZGV2X3RyYWNlX3R4X2J1cnN0KHBv cnRfaWQsIHF1ZXVlX2lkLCAodm9pZCAqKil0eF9wa3RzLA0KPiA+IC0JCW5iX3BrdHMpOw0KPiA+ IC0JcmV0dXJuICgqZGV2LT50eF9wa3RfYnVyc3QpKGRldi0+ZGF0YS0+dHhfcXVldWVzW3F1ZXVl X2lkXSwgdHhfcGt0cywgbmJfcGt0cyk7DQo+ID4gKwluYl9wa3RzID0gcC0+dHhfcGt0X2J1cnN0 KHFkLCB0eF9wa3RzLCBuYl9wa3RzKTsNCj4gPiArDQo+ID4gKwlydGVfZXRoZGV2X3RyYWNlX3R4 X2J1cnN0KHBvcnRfaWQsIHF1ZXVlX2lkLCAodm9pZCAqKil0eF9wa3RzLCBuYl9wa3RzKTsNCj4g PiArCXJldHVybiBuYl9wa3RzOw0KPiA+ICB9DQo+ID4NCj4gPiAgLyoqDQo+ID4gQEAgLTUzNTQs MzEgKzU0NDksNDIgQEAgc3RhdGljIGlubGluZSB1aW50MTZfdA0KPiA+ICBydGVfZXRoX3R4X3By ZXBhcmUodWludDE2X3QgcG9ydF9pZCwgdWludDE2X3QgcXVldWVfaWQsDQo+ID4gIAkJc3RydWN0 IHJ0ZV9tYnVmICoqdHhfcGt0cywgdWludDE2X3QgbmJfcGt0cykNCj4gPiAgew0KPiA+IC0Jc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXY7DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aF9mcF9vcHMgKnA7DQo+ ID4gKwl2b2lkICpxZDsNCj4gDQo+IHAtPmZwbywgcWQtPnR4cQ0KPiANCj4gPg0KPiA+ICAjaWZk ZWYgUlRFX0VUSERFVl9ERUJVR19UWA0KPiA+IC0JaWYgKCFydGVfZXRoX2Rldl9pc192YWxpZF9w b3J0KHBvcnRfaWQpKSB7DQo+ID4gLQkJUlRFX0VUSERFVl9MT0coRVJSLCAiSW52YWxpZCBUWCBw b3J0X2lkPSV1XG4iLCBwb3J0X2lkKTsNCj4gPiArCWlmIChwb3J0X2lkID49IFJURV9NQVhfRVRI UE9SVFMgfHwNCj4gPiArCQkJcXVldWVfaWQgPj0gUlRFX01BWF9RVUVVRVNfUEVSX1BPUlQpIHsN Cj4gPiArCQlSVEVfRVRIREVWX0xPRyhFUlIsDQo+ID4gKwkJCSJJbnZhbGlkIHBvcnRfaWQ9JXUg b3IgcXVldWVfaWQ9JXVcbiIsDQo+ID4gKwkJCXBvcnRfaWQsIHF1ZXVlX2lkKTsNCj4gPiAgCQly dGVfZXJybm8gPSBFTk9ERVY7DQo+ID4gIAkJcmV0dXJuIDA7DQo+ID4gIAl9DQo+ID4gICNlbmRp Zg0KPiA+DQo+ID4gLQlkZXYgPSAmcnRlX2V0aF9kZXZpY2VzW3BvcnRfaWRdOw0KPiA+ICsJLyog ZmV0Y2ggcG9pbnRlciB0byBxdWV1ZSBkYXRhICovDQo+ID4gKwlwID0gJnJ0ZV9ldGhfZnBfb3Bz W3BvcnRfaWRdOw0KPiA+ICsJcWQgPSBwLT50eHEuZGF0YVtxdWV1ZV9pZF07DQo+ID4NCj4gPiAg I2lmZGVmIFJURV9FVEhERVZfREVCVUdfVFgNCj4gPiAtCWlmIChxdWV1ZV9pZCA+PSBkZXYtPmRh dGEtPm5iX3R4X3F1ZXVlcykgew0KPiA+IC0JCVJURV9FVEhERVZfTE9HKEVSUiwgIkludmFsaWQg VFggcXVldWVfaWQ9JXVcbiIsIHF1ZXVlX2lkKTsNCj4gPiArCWlmICghcnRlX2V0aF9kZXZfaXNf dmFsaWRfcG9ydChwb3J0X2lkKSkgew0KPiA+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwgIkludmFs aWQgVFggcG9ydF9pZD0ldVxuIiwgcG9ydF9pZCk7DQo+IA0KPiBUWCAtPiBUeA0KPiANCj4gPiAr CQlydGVfZXJybm8gPSBFTk9ERVY7DQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwl9DQo+ID4gKwlp ZiAocWQgPT0gTlVMTCkgew0KPiA+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwgIkludmFsaWQgVFgg cXVldWVfaWQ9JXUgZm9yIHBvcnRfaWQ9JXVcbiIsDQo+IA0KPiBUWCAtPiBUeA0KPiANCj4gPiAr CQkJcXVldWVfaWQsIHBvcnRfaWQpOw0KPiA+ICAJCXJ0ZV9lcnJubyA9IEVJTlZBTDsNCj4gPiAg CQlyZXR1cm4gMDsNCj4gPiAgCX0NCj4gPiAgI2VuZGlmDQo+ID4NCj4gPiAtCWlmICghZGV2LT50 eF9wa3RfcHJlcGFyZSkNCj4gPiArCWlmICghcC0+dHhfcGt0X3ByZXBhcmUpDQo+IA0KPiBQbGVh c2UsIGNoYW5nZSBpdCB0byBjb21wYXJlIHZzIE5VTEwgc2luY2UgeW91IHRvdWNoIHRoZSBsaW5l Lg0KPiBKdXN0IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBEUERLIGNvZGluZyBzdHlsZSBhbmQgbGlu ZXMgYWJvdmUuDQoNCk9rLCBJIGFtIGFsc28gZm9uZCBvZiBleHBsaWNpdCBjb21wYXJpc29ucyA6 KSANCg0KIA0KPiA+ICAJCXJldHVybiBuYl9wa3RzOw0KPiA+DQo+ID4gLQlyZXR1cm4gKCpkZXYt PnR4X3BrdF9wcmVwYXJlKShkZXYtPmRhdGEtPnR4X3F1ZXVlc1txdWV1ZV9pZF0sDQo+ID4gLQkJ CXR4X3BrdHMsIG5iX3BrdHMpOw0KPiA+ICsJcmV0dXJuIHAtPnR4X3BrdF9wcmVwYXJlKHFkLCB0 eF9wa3RzLCBuYl9wa3RzKTsNCj4gPiAgfQ0KPiA+DQo+ID4gICNlbHNlDQo+ID4gZGlmZiAtLWdp dCBhL2xpYi9ldGhkZXYvdmVyc2lvbi5tYXAgYi9saWIvZXRoZGV2L3ZlcnNpb24ubWFwDQo+ID4g aW5kZXggOTA0YmNlNmVhMS4uNzllNjJkY2Y2MSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZXRoZGV2 L3ZlcnNpb24ubWFwDQo+ID4gKysrIGIvbGliL2V0aGRldi92ZXJzaW9uLm1hcA0KPiA+IEBAIC03 LDYgKzcsOCBAQCBEUERLXzIyIHsNCj4gPiAgCXJ0ZV9ldGhfYWxsbXVsdGljYXN0X2Rpc2FibGU7 DQo+ID4gIAlydGVfZXRoX2FsbG11bHRpY2FzdF9lbmFibGU7DQo+ID4gIAlydGVfZXRoX2FsbG11 bHRpY2FzdF9nZXQ7DQo+ID4gKwlydGVfZXRoX2NhbGxfcnhfY2FsbGJhY2tzOw0KPiA+ICsJcnRl X2V0aF9jYWxsX3R4X2NhbGxiYWNrczsNCj4gPiAgCXJ0ZV9ldGhfZGV2X2FkanVzdF9uYl9yeF90 eF9kZXNjOw0KPiA+ICAJcnRlX2V0aF9kZXZfY2FsbGJhY2tfcmVnaXN0ZXI7DQo+ID4gIAlydGVf ZXRoX2Rldl9jYWxsYmFja191bnJlZ2lzdGVyOw0KPiA+IEBAIC03Niw2ICs3OCw3IEBAIERQREtf MjIgew0KPiA+ICAJcnRlX2V0aF9maW5kX25leHRfb2Y7DQo+ID4gIAlydGVfZXRoX2ZpbmRfbmV4 dF9vd25lZF9ieTsNCj4gPiAgCXJ0ZV9ldGhfZmluZF9uZXh0X3NpYmxpbmc7DQo+ID4gKwlydGVf ZXRoX2ZwX29wczsNCj4gPiAgCXJ0ZV9ldGhfaXRlcmF0b3JfY2xlYW51cDsNCj4gPiAgCXJ0ZV9l dGhfaXRlcmF0b3JfaW5pdDsNCj4gPiAgCXJ0ZV9ldGhfaXRlcmF0b3JfbmV4dDsNCj4gPg0KDQo=