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 6E113A034F; Mon, 7 Feb 2022 15:36:34 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0BBF7410F3; Mon, 7 Feb 2022 15:36:34 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 9C014410EA for ; Mon, 7 Feb 2022 15:36:32 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 217DnKOM005199; Mon, 7 Feb 2022 06:36:28 -0800 Received: from nam02-bn1-obe.outbound.protection.outlook.com (mail-bn1nam07lp2041.outbound.protection.outlook.com [104.47.51.41]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3e30b098aj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 07 Feb 2022 06:36:27 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GEFxwBpK/we1uiOHp5+VejUT1GKwrRJBSg+yzzRruRWE4bbvjs2pavDvOEC42+yKwMP5jjAnTWO340tLVYKqswSo3HwGarrdFnB50FCL77NAo5ggABA5aIWF36WOAgC0GaOfakmCQq5U2B3BuaF0bK3S12CqGpZuS02BEKu+Ij+2hBzijmpMM8SmGRh13qdirhqQ4So9n1+MPvjRAWcvDLLCN8dBDSYdY2Lt0EyLR0wFlaxVGxfUy95Tpxc9xtNEYUT4ddeiH6MUaIhLzDS6lDqq8/UfVcQabKChnL3U7sgNqWKKmYPPF2bTIz4CCqJNi0LdnnXKRnMTC9OcTel+hw== 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=KZ7Z5QnDA3VqfPekNXZEIu+L+kxAF+vHQGLkTY8daoc=; b=GW14SlLPt0zPs8GA3+0pcRtmhVdKmVIsqjBVLCOD/n+pL3E/X6kyRS/H8uAPjQx6mdYMg/cBeUvRJgnN34UMizJdXTydcv+BHzN2AaNpZ104sydn4z/EPim9ExkfFfHyGYEFNgs3Ec0LtC/dzPeleeIqzc81aK2dIiBtXGX3XyDbhRx8mEDwvsjJxa3VfbFTu4Ib+sTxX56UgKL1uex/lGl3KSjd2nlf0TMCrmfB5OjP7Nquh2C95MQXXJwlxn3NjX28uagAHaCAlsJDNBBkV4+Drq4cHHLUkbDK19YF1uEoAM+Rlm0emZUisa8lZvKq8z9Ez4SbctawhTAtfE/FzQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KZ7Z5QnDA3VqfPekNXZEIu+L+kxAF+vHQGLkTY8daoc=; b=MyAzMAKpU+wSlrz/+Akve0TJRbXU0/RE55pE+doYL0MuybeLzrj3zP7dPIcPsnNmUPfGqJCNJJliUF6KMYC/3nHkp4eyaFTqMPsHcq+fUdeD7VIfk8tnWcpcTf8yHGoBdCf/rPPp3wtZRkzkl0iNG+LBcnn57iU74ix5jx69Dbk= Received: from CO6PR18MB4484.namprd18.prod.outlook.com (2603:10b6:5:359::9) by MWHPR18MB1359.namprd18.prod.outlook.com (2603:10b6:300:ca::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.18; Mon, 7 Feb 2022 14:36:24 +0000 Received: from CO6PR18MB4484.namprd18.prod.outlook.com ([fe80::9985:c3ca:2f91:7fc]) by CO6PR18MB4484.namprd18.prod.outlook.com ([fe80::9985:c3ca:2f91:7fc%5]) with mapi id 15.20.4951.019; Mon, 7 Feb 2022 14:36:23 +0000 From: Akhil Goyal To: Ferruh Yigit , "dev@dpdk.org" CC: Anoob Joseph , "matan@nvidia.com" , "konstantin.ananyev@intel.com" , "thomas@monjalon.net" , "andrew.rybchenko@oktetlabs.ru" , "rosen.xu@intel.com" , "olivier.matz@6wind.com" , "david.marchand@redhat.com" , "radu.nicolau@intel.com" , Jerin Jacob Kollanukkaran , "stephen@networkplumber.org" , "mdr@ashroe.eu" Subject: RE: [EXT] Re: [PATCH v4 1/3] ethdev: introduce IP reassembly offload Thread-Topic: [EXT] Re: [PATCH v4 1/3] ethdev: introduce IP reassembly offload Thread-Index: AQHYGhR/zwYhhY418U2BGlAB5Ep++6yIIA0AgAAHuMA= Date: Mon, 7 Feb 2022 14:36:23 +0000 Message-ID: References: <20220130175935.1947730-1-gakhil@marvell.com> <20220204221334.3551574-1-gakhil@marvell.com> <20220204221334.3551574-2-gakhil@marvell.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7ce862ad-fdf9-407d-e0af-08d9ea47373b x-ms-traffictypediagnostic: MWHPR18MB1359:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: uaiff9Sd804Otw9rchEfu9cmcj2myzMp+WNs6S8PIsrf36DXyc5AteYgurDCyzwLDyaSS0Z1xz6v40x/jd9rwN0DJlevogaW0ijheLCs6AjlhSHG6y4Nh67QlMW5Wgd9zHn/04kk+hevRvIjK45FkUZiwxgzWHQd/8XEnbZBjVYyHZhPucb8XjitM1H6kYb5zVuPG9p2IQeD1qK24YPI2Vh4OnK6drd0wzZhPVVtAs4RUkvXetMxzTU9LW76rCPdpOAKe07wd4kPsStONhOInrKGz3zdYPvcv5DrnoV0xVkPzEzJ3xbPjMd5IHy4LFF+zRCzE9yK5iyCo1wS8ykwo033slhJ2DJTIqqiHlnBj0he/vYlalQF60xD2NZOHhwlA2AjDyFaEfny+yv4VdtgkJGfVa64PtrB7aEl+PugresSAW+rf6TUWLfCvVlb5pCTovlQX6t/AEqtTI88hhzZp3k8OkPHTZYC+qnOkveCgfBBiIA5fsyJoOlF73/QrvW+7hv5TNS6kfRWQEe8WylKlGa46dDrbP2UI7uZvF5eYBViyw1ECiMatW+bVTJjo4B2M+Q/kFo1USZenUWN3ZGTif1qCLyCAta5watpWsivXveOiluE8RrncdAiXykM0Z+3yWKTuzPSyoHB2JlrsikgmtknSv7t6DK+NhFEMwLoJkNBu0SGxgs8M9xnTGUVzVn+pzBAcYD9HszE8LxjxDdU6eXNGbnRNc7thot10gyVsi4= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO6PR18MB4484.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(26005)(186003)(6506007)(316002)(54906003)(38070700005)(55016003)(71200400001)(9686003)(38100700002)(122000001)(55236004)(7696005)(53546011)(110136005)(2906002)(7416002)(86362001)(33656002)(52536014)(30864003)(66946007)(5660300002)(83380400001)(508600001)(8936002)(4326008)(8676002)(76116006)(64756008)(66476007)(66446008)(66556008)(21314003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eXZXcFdnWW9iSXVHZEZ1ZUhpZ09zb3J3YlJrWEpsQnhRWXdvaUNFcWxIZGtl?= =?utf-8?B?YmtmcnVJbFpBMTJQUGhQRkcrZ2lpMmxKTy8yc2lubXoxeC9mUmRDcUx1SXFC?= =?utf-8?B?ak5VdTUzK0N4LzYrWUJldW4zVGlodkpBeVlXSUcydGloYnlaRWpjUTJMa1R1?= =?utf-8?B?ZUtpK0hKWlUwVmF0dy9GZXBrY1pmWkZiZXhCZ0JFRW85YU9oRUNiNDMzU0Fp?= =?utf-8?B?Y0xyTWRFTTFJZ0ZpbnQ1WmZCTmdiRENralY3MzJjcjZwci84aWJvT2tMY3d3?= =?utf-8?B?R2sxZ2YxeDZUaEp5Vk1jK1g0cVhVNkt2SG5LVGFjWWh6aWpkakdtSlhzUUN5?= =?utf-8?B?THJ0aEpjcTlnSjNQQlczOHNTUk5hTnN0ekNrYVV6WjRSYmpEcS81dE9yNDdz?= =?utf-8?B?R0Jva3BrbFJiY3ZjMVlTL3JDT3pqQ0xxMkVlcngxeVZrL3J2b25LdzI0eWhv?= =?utf-8?B?RC93WHN0OXNzU2dSQVE3YmhQQXc3Vzc0YjBVRXRFelRHYmE3WDJVaE5URzAz?= =?utf-8?B?TUdCdzJXdFYwSTd0QnBHeXo3UEF1RnJSOXMxL3JVdUdhQm9TNHp1K05YRnh1?= =?utf-8?B?MXZCVGJIaW51VS9rWUM5bWFFYU0vcFpzbXAvM2FzWi9GOC81cnplY0V3NjMx?= =?utf-8?B?M25ZMCt4MVhqZXVGOFFYbUZabFBnUVRMZnNwcnR1NkRvM093Rk8wWHRPS2Fs?= =?utf-8?B?THhPSWhoWlpJOEYvbkpyR0ltbGtuK0ZUN3Z4eXk4enZIOXdrbElPdXRmQzYx?= =?utf-8?B?T01FZ01JUDRPSnhPTjhvVEVpeGV1NEFqK3J6K2dCempkVXRKclFVNXRPQzZE?= =?utf-8?B?V3p4MlM5SUxOU3ZmNGFoY3N3aG0vOG9XRVRmWHM0NHY2TGRkZklhcGRkMCtH?= =?utf-8?B?eVlYU1J3ZEF1c2wxcFF5TTkxeS83NUZBTHpiMnBIQmxsNGNqbGlXWm92T3By?= =?utf-8?B?d2ZCWDJiMHVGbWw2dXpDQVJjTEx6cVN5NWRUZzRScE56UHVtSXMxUXFDbGtx?= =?utf-8?B?NkN0aW80UkJSbExLMzdNMVBPaktBSDdVNVBWL3g4ajRua25tZkM0S0NUczdp?= =?utf-8?B?U0R3SmdqUFZKd0Y0YUZmQnBNb0RsSTE1M1JwSEFPcTIxYnNFNVY2QkN0QzNn?= =?utf-8?B?eEJxNkUrRmhkVXlGWU5tT2hKc3BlTFNSbkVuUnc3SStSendINjBPNkt1Z0E2?= =?utf-8?B?UUhCMUdXNzhSUmlseVptUFRBTjlNQWFxSXg4WjdQR25jK2JVS1BEN3liSHNl?= =?utf-8?B?UXlUMFpmRS90c2VpMWplQzNlcHdpQ29FYmh1VitNT04vS0hMRVUrYk95ekw5?= =?utf-8?B?SjRFb1psUWxPd2RCZzFyVnc2bVAyK3J2OTFiL2tUNFFPdWI4MjFaR2pCOFJ0?= =?utf-8?B?TFBEbEdKOTYvckx0YUtubjBEeXdzMHV6RWkrM1krOWJRMkpwUjJyS2Niam1S?= =?utf-8?B?NU5jSmpmRmxPN01FNk1LdjkwcklyRWFXclBEY0ozdTM3RjBzS3RoQ0E5WVRB?= =?utf-8?B?ZnpOMzhXeWdpOEovQWpxZ2VuMnh3a3Bwd1BRT05VNVlMUklNcTFqeCt1d0ZW?= =?utf-8?B?bVN1TnhneTMvUUdDYTFManNxU3pQVHZtTmxKQmtDeHh0RmJLbzcwZGhoejBq?= =?utf-8?B?a1luS0hHQ2orQ0lRRlpaaUMvS1JYQUdrMWFEQzVCaTl4Tk8yOVpDNTMzZklu?= =?utf-8?B?aWdiRkRJTHZiUGFuVkx0UjB3NTVQbmpuRjhmYWVua2dMdVA0L3FabU8zWUV0?= =?utf-8?B?b3lwbkhzVUR1SExUZ1RjZTVWc2FMSWRvT1diRmlUREZZMDFCQXpZOWppTUI5?= =?utf-8?B?YTREbk14bC9kVGFLRzFWVjBvcWtUbnIrSVhiWUVyaXFTU2kwK1p5UnNZL2N3?= =?utf-8?B?RmFJaXFLWXZNbFNsQXhtMzEyRzJEMEdnajFHMzBXSlgxN1MvbG5LaGFYaTE0?= =?utf-8?B?T284MHJqd0wrZWwvRmppVjluYVkwSDJpbEZEQW91WjhuU21MMXU5TDhPRGZ5?= =?utf-8?B?aW81Tm96SSs5NGp1b3ozZFBuRVlGaFNyU1UxN0Q5MXlaSVpwQlRVYTZaNTJy?= =?utf-8?B?OGFHOEFPNUVLTVhKeFhYMzlvSEZuRjB5UDh5WmF2ZFlxdHFZN0l1VHZwcHJp?= =?utf-8?B?ckpucHVrUDlrTEpZNVpkT3lVUUZGajBod0VJRHJxWlRidjJxbDFUNnJxaGhO?= =?utf-8?Q?zHodLJLxIwHsWvV/4Ynu75A=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO6PR18MB4484.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7ce862ad-fdf9-407d-e0af-08d9ea47373b X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Feb 2022 14:36:23.8166 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8xbRBDdTYzMLvSgv5fA2BjpMVYNUA72SJZgU6afG7V8BwKuqnz4yKRh6t7+dKYyvkCUfbtTA2Y+ZdVQbEoK20A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR18MB1359 X-Proofpoint-GUID: c_9AiyDkH_ITYwzV9qQR2GsE8-3h_1J3 X-Proofpoint-ORIG-GUID: c_9AiyDkH_ITYwzV9qQR2GsE8-3h_1J3 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-02-07_05,2022-02-07_02,2021-12-02_01 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 SGkgRmVycnVoLA0KDQpUaGFua3MgZm9yIHJldmlldywNCldpbGwgc2VuZCB0aGUgbmV4dCB2ZXJz aW9uIHNvb24uDQpQbGVhc2Ugc2VlIHRoZSBjb21tZW50cyBpbmxpbmUuDQo+IE9uIDIvNC8yMDIy IDEwOjEzIFBNLCBBa2hpbCBHb3lhbCB3cm90ZToNCj4gPiBJUCBSZWFzc2VtYmx5IGlzIGEgY29z dGx5IG9wZXJhdGlvbiBpZiBpdCBpcyBkb25lIGluIHNvZnR3YXJlLg0KPiA+IFRoZSBvcGVyYXRp b24gYmVjb21lcyBldmVuIG1vcmUgY29zdGxpZXIgaWYgSVAgZnJhZ21lbnRzIGFyZSBlbmNyeXB0 ZWQuDQo+ID4gSG93ZXZlciwgaWYgaXQgaXMgb2ZmbG9hZGVkIHRvIEhXLCBpdCBjYW4gY29uc2lk ZXJhYmx5IHNhdmUgYXBwbGljYXRpb24NCj4gPiBjeWNsZXMuDQo+ID4NCj4gPiBIZW5jZSwgYSBu ZXcgb2ZmbG9hZCBmZWF0dXJlIGlzIGV4cG9zZWQgaW4gZXRoX2RldiBvcHMgZm9yIGRldmljZXMg d2hpY2gNCj4gY2FuDQo+ID4gYXR0ZW1wdCBJUCByZWFzc2VtYmx5IG9mIHBhY2tldHMgaW4gaGFy ZHdhcmUuDQo+ID4gLSBydGVfZXRoX2lwX3JlYXNzZW1ibHlfY2FwYWJpbGl0eV9nZXQoKSAtIHRv IGdldCB0aGUgbWF4aW11bSB2YWx1ZXMNCj4gPiAgICBvZiByZWFzc2VtYmx5IGNvbmZpZ3VyYXRp b24gd2hpY2ggY2FuIGJlIHNldC4NCj4gPiAtIHJ0ZV9ldGhfaXBfcmVhc3NlbWJseV9jb25mX3Nl dCgpIC0gdG8gc2V0IElQIHJlYXNzZW1ibHkgY29uZmlndXJhdGlvbg0KPiA+ICAgIGFuZCB0byBl bmFibGUgdGhlIGZlYXR1cmUgaW4gdGhlIFBNRCAodG8gYmUgY2FsbGVkIGJlZm9yZQ0KPiBydGVf ZXRoX2Rldl9zdGFydCgpKS4NCj4gPiAtIHJ0ZV9ldGhfaXBfcmVhc3NlbWJseV9jb25mX2dldCgp IC0gdG8gZ2V0IHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24NCj4gPiAgICBzZXQgaW4gUE1ELg0K PiA+DQo+ID4gTm93IHdoZW4gdGhlIG9mZmxvYWQgaXMgZW5hYmxlZCB1c2luZw0KPiBydGVfZXRo X2lwX3JlYXNzZW1ibHlfY29uZl9zZXQoKSwNCj4gPiB0aGUgcmVzdWx0aW5nIHJlYXNzZW1ibGVk IElQIHBhY2tldCB3b3VsZCBiZSBhIHR5cGljYWwgc2VnbWVudGVkIG1idWYgaW4NCj4gPiBjYXNl IG9mIHN1Y2Nlc3MuDQo+ID4NCj4gPiBBbmQgaWYgcmVhc3NlbWJseSBvZiBJUCBmcmFnbWVudHMg aXMgZmFpbGVkIG9yIGlzIGluY29tcGxldGUgKGlmIGZyYWdtZW50cyBkbw0KPiA+IG5vdCBjb21l IGJlZm9yZSB0aGUgcmVhc3NfdGltZW91dCwgb3ZlcmxhcCwgZXRjKSwgdGhlIG1idWYgZHluYW1p YyBmbGFncw0KPiBjYW4gYmUNCj4gPiB1cGRhdGVkIGJ5IHRoZSBQTUQuIFRoaXMgaXMgdXBkYXRl ZCBpbiBhIHN1YnNlcXVlbnQgcGF0Y2guDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBBa2hpbCBH b3lhbCA8Z2FraGlsQG1hcnZlbGwuY29tPg0KPiA+IENoYW5nZS1JZDogSWMyMGJiM2FmMWVkNTk5 ZThmMmYzNjY1ZDJkNmM0N2IyZTQyMGU1MDkNCj4gPiAtLS0NCj4gPiAgIGRvYy9ndWlkZXMvbmlj cy9mZWF0dXJlcy5yc3QgfCAxMyArKysrKw0KPiA+ICAgbGliL2V0aGRldi9ldGhkZXZfZHJpdmVy LmggICB8IDU1ICsrKysrKysrKysrKysrKysrKysrKw0KPiA+ICAgbGliL2V0aGRldi9ydGVfZXRo ZGV2LmMgICAgICB8IDkzDQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0K PiA+ICAgbGliL2V0aGRldi9ydGVfZXRoZGV2LmggICAgICB8IDkxDQo+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrDQo+ID4gICBsaWIvZXRoZGV2L3ZlcnNpb24ubWFwICAgICAg IHwgIDUgKysNCj4gPiAgIDUgZmlsZXMgY2hhbmdlZCwgMjU3IGluc2VydGlvbnMoKykNCj4gPg0K PiA+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL25pY3MvZmVhdHVyZXMucnN0IGIvZG9jL2d1aWRl cy9uaWNzL2ZlYXR1cmVzLnJzdA0KPiA+IGluZGV4IDI3YmUyZDI1NzYuLmU2ZTBiYmU5ZDggMTAw NjQ0DQo+ID4gLS0tIGEvZG9jL2d1aWRlcy9uaWNzL2ZlYXR1cmVzLnJzdA0KPiA+ICsrKyBiL2Rv Yy9ndWlkZXMvbmljcy9mZWF0dXJlcy5yc3QNCj4gPiBAQCAtNjAyLDYgKzYwMiwxOSBAQCBTdXBw b3J0cyBpbm5lciBwYWNrZXQgTDQgY2hlY2tzdW0uDQo+ID4NCj4gYGB0eF9vZmZsb2FkX2NhcGEs dHhfcXVldWVfb2ZmbG9hZF9jYXBhOlJURV9FVEhfVFhfT0ZGTE9BRF9PVVRFUl8NCj4gVURQX0NL U1VNYGAuDQo+ID4NCj4gPg0KPiA+ICsuLiBfbmljX2ZlYXR1cmVzX2lwX3JlYXNzZW1ibHk6DQo+ ID4gKw0KPiA+ICtJUCByZWFzc2VtYmx5DQo+ID4gKy0tLS0tLS0tLS0tLS0NCj4gPiArDQo+ID4g K1N1cHBvcnRzIElQIHJlYXNzZW1ibHkgaW4gaGFyZHdhcmUuDQo+ID4gKw0KPiA+ICsqICoqW3By b3ZpZGVzXSBldGhfZGV2X29wcyoqOiBgYGlwX3JlYXNzZW1seV9jYXBhYmlsaXR5X2dldGBgLA0K PiA+ICsgIGBgaXBfcmVhc3NlbWJseV9jb25mX2dldGBgLCBgYGlwX3JlYXNzZW1ibHlfY29uZl9z ZXRgYC4NCj4gPiArKiAqKltyZWxhdGVkXSAgICBBUEkqKjogYGBydGVfZXRoX2lwX3JlYXNzZW1i bHlfY2FwYWJpbGl0eV9nZXQoKWBgLA0KPiA+ICsgIGBgcnRlX2V0aF9pcF9yZWFzc2VtYmx5X2Nv bmZfZ2V0KClgYCwNCj4gYGBydGVfZXRoX2lwX3JlYXNzZW1ibHlfY29uZl9zZXQoKWBgLg0KPiA+ ICsNCj4gPiArDQo+IA0KPiBOZWVkIHRvIHVwZGF0ZSAnZGVmYXVsdC5pbmknIHRvIGhhdmUgdGhp cyBuZXcgZmVhdHVyZS4NClllcywgSXQgZ290IG1pc3NlZC4NCg0KPiANCj4gPiAgIC4uIF9uaWNf ZmVhdHVyZXNfc2hhcmVkX3J4X3F1ZXVlOg0KPiA+DQo+ID4gICBTaGFyZWQgUnggcXVldWUNCj4g PiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmggYi9saWIvZXRoZGV2L2V0 aGRldl9kcml2ZXIuaA0KPiA+IGluZGV4IGQ5NTYwNWEzNTUuLjhmZTc3ZjI4M2YgMTAwNjQ0DQo+ ID4gLS0tIGEvbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmgNCj4gPiArKysgYi9saWIvZXRoZGV2 L2V0aGRldl9kcml2ZXIuaA0KPiA+IEBAIC05OTAsNiArOTkwLDU0IEBAIHR5cGVkZWYgaW50ICgq ZXRoX3JlcHJlc2VudG9yX2luZm9fZ2V0X3QpKHN0cnVjdA0KPiBydGVfZXRoX2RldiAqZGV2LA0K PiA+ICAgdHlwZWRlZiBpbnQgKCpldGhfcnhfbWV0YWRhdGFfbmVnb3RpYXRlX3QpKHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2LA0KPiA+ICAgCQkJCSAgICAgICB1aW50NjRfdCAqZmVhdHVyZXMpOw0K PiA+DQo+ID4gKy8qKg0KPiA+ICsgKiBAaW50ZXJuYWwNCj4gPiArICogR2V0IElQIHJlYXNzZW1i bHkgb2ZmbG9hZCBjYXBhYmlsaXR5IG9mIGEgUE1ELg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0g ZGV2DQo+ID4gKyAqICAgUG9ydCAoZXRoZGV2KSBoYW5kbGUNCj4gPiArICoNCj4gPiArICogQHBh cmFtW291dF0gY29uZg0KPiA+ICsgKiAgIElQIHJlYXNzZW1ibHkgY2FwYWJpbGl0eSBzdXBwb3J0 ZWQgYnkgdGhlIFBNRA0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgTmVnYXRp dmUgZXJybm8gdmFsdWUgb24gZXJyb3IsIHplcm8gb3RoZXJ3aXNlDQo+ID4gKyAqLw0KPiA+ICt0 eXBlZGVmIGludCAoKmV0aF9pcF9yZWFzc2VtYmx5X2NhcGFiaWxpdHlfZ2V0X3QpKHN0cnVjdCBy dGVfZXRoX2Rldg0KPiAqZGV2LA0KPiA+ICsJCQkJc3RydWN0IHJ0ZV9ldGhfaXBfcmVhc3NfcGFy YW1zICpjYXBhKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBAaW50ZXJuYWwNCj4gPiArICog R2V0IElQIHJlYXNzZW1ibHkgb2ZmbG9hZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgc2V0IGlu IFBNRC4NCj4gPiArICoNCj4gPiArICogQHBhcmFtIGRldg0KPiA+ICsgKiAgIFBvcnQgKGV0aGRl dikgaGFuZGxlDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbVtvdXRdIGNvbmYNCj4gPiArICogICBD b25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIElQIHJlYXNzZW1ibHkuDQo+ID4gKyAqDQo+ID4g KyAqIEByZXR1cm4NCj4gPiArICogICBOZWdhdGl2ZSBlcnJubyB2YWx1ZSBvbiBlcnJvciwgemVy byBvdGhlcndpc2UNCj4gPiArICovDQo+ID4gK3R5cGVkZWYgaW50ICgqZXRoX2lwX3JlYXNzZW1i bHlfY29uZl9nZXRfdCkoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gKwkJCQlzdHJ1Y3Qg cnRlX2V0aF9pcF9yZWFzc19wYXJhbXMgKmNvbmYpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IEBpbnRlcm5hbA0KPiA+ICsgKiBTZXQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciBlbmFi bGluZyBJUCByZWFzc2VtYmx5IG9mZmxvYWQgaW4NCj4gaGFyZHdhcmUuDQo+ID4gKyAqDQo+ID4g KyAqIEBwYXJhbSBkZXYNCj4gPiArICogICBQb3J0IChldGhkZXYpIGhhbmRsZQ0KPiA+ICsgKg0K PiA+ICsgKiBAcGFyYW1baW5dIGNvbmYNCj4gPiArICogICBDb25maWd1cmF0aW9uIHBhcmFtZXRl cnMgZm9yIElQIHJlYXNzZW1ibHkuDQo+ID4gKyAqDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICog ICBOZWdhdGl2ZSBlcnJubyB2YWx1ZSBvbiBlcnJvciwgemVybyBvdGhlcndpc2UNCj4gPiArICov DQo+ID4gK3R5cGVkZWYgaW50ICgqZXRoX2lwX3JlYXNzZW1ibHlfY29uZl9zZXRfdCkoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gKwkJCQljb25zdCBzdHJ1Y3QgcnRlX2V0aF9pcF9yZWFz c19wYXJhbXMNCj4gKmNvbmYpOw0KPiA+ICsNCj4gPiAgIC8qKg0KPiA+ICAgICogQGludGVybmFs IEEgc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9ucyBleHBvcnRlZCBieSBhbiBFdGhl cm5ldA0KPiBkcml2ZXIuDQo+ID4gICAgKi8NCj4gPiBAQCAtMTE4Niw2ICsxMjM0LDEzIEBAIHN0 cnVjdCBldGhfZGV2X29wcyB7DQo+ID4gICAJICoga2luZHMgb2YgbWV0YWRhdGEgdG8gdGhlIFBN RA0KPiA+ICAgCSAqLw0KPiA+ICAgCWV0aF9yeF9tZXRhZGF0YV9uZWdvdGlhdGVfdCByeF9tZXRh ZGF0YV9uZWdvdGlhdGU7DQo+ID4gKw0KPiA+ICsJLyoqIEdldCBJUCByZWFzc2VtYmx5IGNhcGFi aWxpdHkgKi8NCj4gPiArCWV0aF9pcF9yZWFzc2VtYmx5X2NhcGFiaWxpdHlfZ2V0X3QgaXBfcmVh c3NlbWJseV9jYXBhYmlsaXR5X2dldDsNCj4gPiArCS8qKiBHZXQgSVAgcmVhc3NlbWJseSBjb25m aWd1cmF0aW9uICovDQo+ID4gKwlldGhfaXBfcmVhc3NlbWJseV9jb25mX2dldF90IGlwX3JlYXNz ZW1ibHlfY29uZl9nZXQ7DQo+ID4gKwkvKiogU2V0IElQIHJlYXNzZW1ibHkgY29uZmlndXJhdGlv biAqLw0KPiA+ICsJZXRoX2lwX3JlYXNzZW1ibHlfY29uZl9zZXRfdCBpcF9yZWFzc2VtYmx5X2Nv bmZfc2V0Ow0KPiA+ICAgfTsNCj4gPg0KPiA+ICAgLyoqDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9l dGhkZXYvcnRlX2V0aGRldi5jIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPiBpbmRleCAy OWUyMWFkNTgwLi44OGNhNGNlODY3IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9ldGhkZXYvcnRlX2V0 aGRldi5jDQo+ID4gKysrIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPiBAQCAtNjQ3NCw2 ICs2NDc0LDk5IEBAIHJ0ZV9ldGhfcnhfbWV0YWRhdGFfbmVnb3RpYXRlKHVpbnQxNl90DQo+IHBv cnRfaWQsIHVpbnQ2NF90ICpmZWF0dXJlcykNCj4gPiAgIAkJICAgICAgICgqZGV2LT5kZXZfb3Bz LT5yeF9tZXRhZGF0YV9uZWdvdGlhdGUpKGRldiwNCj4gZmVhdHVyZXMpKTsNCj4gPiAgIH0NCj4g Pg0KPiA+ICtpbnQNCj4gPiArcnRlX2V0aF9pcF9yZWFzc2VtYmx5X2NhcGFiaWxpdHlfZ2V0KHVp bnQxNl90IHBvcnRfaWQsDQo+ID4gKwkJCQkgICAgIHN0cnVjdCBydGVfZXRoX2lwX3JlYXNzX3Bh cmFtcw0KPiAqcmVhc3NfY2FwYSkNCj4gDQo+IHN5bnRheCwgZHBkayBjb2RpbmcgY29udmVybnRp b24gZG9lc24ndCBhbGlnbiB0aGUgbmV4dCBsaW5lLCBtb3N0bHkgaXQgaGFzDQo+IHR3byB0YWJz IGluIG5leHQgbGluZS4NCj4gDQo+IFNhbWUgY29tbWVudCB2YWxpZCBmb3IgbWFueSBpbnN0YW5j ZXMgYmVsb3cuDQo+IA0KDQpPaw0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl djsNCj4gPiArDQo+ID4gKwlSVEVfRVRIX1ZBTElEX1BPUlRJRF9PUl9FUlJfUkVUKHBvcnRfaWQs IC1FTk9ERVYpOw0KPiA+ICsJZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiAr DQo+ID4gKwlpZiAoZGV2LT5kYXRhLT5kZXZfY29uZmlndXJlZCA9PSAwKSB7DQo+ID4gKwkJUlRF X0VUSERFVl9MT0coRVJSLA0KPiA+ICsJCQkiRGV2aWNlIHdpdGggcG9ydF9pZD0lIlBSSXUxNiIg aXMgbm90DQo+IGNvbmZpZ3VyZWQuXG4iLA0KPiANCj4gLSB3aGlsZSBwcmludGluZyBwb3J0X2lk LCBjYW4gdXNlICV1LCAnUFJJdTE2JyBoYXMgbm8gYmVuZWZpdCBhcyBmYXIgYXMgSSBjYW4NCj4g c2VlLA0KPiBhbmQgSSBzZWUgYm90aCBhcmUgdXNlZCBpbiBleGlzdGluZyBjb2RlLCBJIHByZWZl ciAldSBidXQgbm8gc3Ryb25nIG9wdGlvbg0KPiB0aGVyZQ0KPiANCj4gLSBUaGUgbG9nIGRvZXNu J3QgbWVudGlvbiBmcm9tIGlwIHJlYXNzZW1ibHkgY2FwYWJpbGl0eSBhdCBhbGwsIGFzc3VtZSB5 b3UNCj4gc2VlIHRoaXMNCj4gbG9nLCB3aWxsIGl0IGdpdmUgZW5vdWdoIGNvbnRleHQgdG8gdW5k ZXJzdGFuZCBwcm9ibGVtIGlzIHJlbGF0ZWQgdG8gaXANCj4gcmVhc3NlbWJseT8NCj4gDQo+IC0g QW5kcmV3IGhhcyBhIGNvbW1lbnQgYmVmb3JlIHRoYXQgZWFjaCBsb2cgbWVzc2FnZSBzaG91bGQg YmUgdW5pcXVlLCB0bw0KPiBiZSBhYmxlDQo+IHRvIGRldGVjdCBsb2NhdGlvbiBlYXNpbHksIGV4 YWN0IHNhbWUgbG9nIG1lc3NhZ2UgaXMgdXNlZCBhIGZldyBvdGhlcg0KPiBsb2NhdGlvbnMuDQoN Ck9rIHdpbGwgdXBkYXRlIHRoZSBsb2dzLg0KPiANCj4gPiArCQkJcG9ydF9pZCk7DQo+ID4gKwkJ cmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKHJlYXNzX2NhcGEgPT0g TlVMTCkgew0KPiANCj4gSSBzdGlsbCB0aGluayBhbGwgJ3JlYXNzJyB1c2FnZSBzaG91bGQgYmUg J3JlYXNzZW1ibHknLCBidXQgYWdhaW4gdGhhdCBpcyBtZS4NCg0KT2sgd2lsbCBjaGFuZ2UgaXQu DQoNCj4gDQo+ID4gKwkJUlRFX0VUSERFVl9MT0coRVJSLCAiQ2Fubm90IGdldCByZWFzc2VtYmx5 IGNhcGFiaWxpdHkgdG8NCj4gTlVMTCIpOw0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJ fQ0KPiA+ICsNCj4gPiArCVJURV9GVU5DX1BUUl9PUl9FUlJfUkVUKCpkZXYtPmRldl9vcHMtDQo+ ID5pcF9yZWFzc2VtYmx5X2NhcGFiaWxpdHlfZ2V0LA0KPiA+ICsJCQkJLUVOT1RTVVApOw0KPiA+ ICsJbWVtc2V0KHJlYXNzX2NhcGEsIDAsIHNpemVvZihzdHJ1Y3QgcnRlX2V0aF9pcF9yZWFzc19w YXJhbXMpKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gZXRoX2Vycihwb3J0X2lkLCAoKmRldi0+ZGV2 X29wcy0NCj4gPmlwX3JlYXNzZW1ibHlfY2FwYWJpbGl0eV9nZXQpDQo+ID4gKwkJCQkJKGRldiwg cmVhc3NfY2FwYSkpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQNCj4gPiArcnRlX2V0aF9pcF9y ZWFzc2VtYmx5X2NvbmZfZ2V0KHVpbnQxNl90IHBvcnRfaWQsDQo+ID4gKwkJCSAgICAgICBzdHJ1 Y3QgcnRlX2V0aF9pcF9yZWFzc19wYXJhbXMgKmNvbmYpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBy dGVfZXRoX2RldiAqZGV2Ow0KPiA+ICsNCj4gPiArCVJURV9FVEhfVkFMSURfUE9SVElEX09SX0VS Ul9SRVQocG9ydF9pZCwgLUVOT0RFVik7DQo+ID4gKwlkZXYgPSAmcnRlX2V0aF9kZXZpY2VzW3Bv cnRfaWRdOw0KPiA+ICsNCj4gPiArCWlmIChkZXYtPmRhdGEtPmRldl9jb25maWd1cmVkID09IDAp IHsNCj4gPiArCQlSVEVfRVRIREVWX0xPRyhFUlIsDQo+ID4gKwkJCSJEZXZpY2Ugd2l0aCBwb3J0 X2lkPSUiUFJJdTE2IiBpcyBub3QNCj4gY29uZmlndXJlZC5cbiIsDQo+ID4gKwkJCXBvcnRfaWQp Ow0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChjb25m ID09IE5VTEwpIHsNCj4gPiArCQlSVEVfRVRIREVWX0xPRyhFUlIsICJDYW5ub3QgZ2V0IHJlYXNz ZW1ibHkgaW5mbyB0bw0KPiBOVUxMIik7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9 DQo+ID4gKw0KPiA+ICsJUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmRldi0+ZGV2X29wcy0NCj4g PmlwX3JlYXNzZW1ibHlfY29uZl9nZXQsDQo+ID4gKwkJCQktRU5PVFNVUCk7DQo+ID4gKwltZW1z ZXQoY29uZiwgMCwgc2l6ZW9mKHN0cnVjdCBydGVfZXRoX2lwX3JlYXNzX3BhcmFtcykpOw0KPiAN Cj4gSWYgdXNlciBkaWRuJ3QgY2FsbCAncnRlX2V0aF9pcF9yZWFzc2VtYmx5X2NvbmZfc2V0KCkn IHByaW9yIHRvIHRoaXMgY2FsbCwgd2hhdA0KPiB1c2VyIHdpbGwgZ2V0IGhlcmU/IEFsbCB6ZXJv cywgb3IgY2FuIFBNRCBmaWxsIHdpdGggc29tZSBkZWZhdWx0cz8NCj4gT3Igc2hvdWxkIHRoaXMg QVBJIHNldCBzb21lIGtpbmQgb2YgZXJyb3IgaW4gdGhhdCBjYXNlIHRvIGhpZ2hsaWdodCB0aGVy ZSBpcyBubw0KPiBjb25maWd1cmF0aW9uPw0KDQpPayBJIHdpbGwgdXBkYXRlIHRoZSBkb3h5Z2Vu IGNvbW1lbnRzIGZvciB0aGlzLiBJIGJlbGlldmUgaXQgc2hvdWxkIGdpdmUgZXJyb3IuDQoNCj4g DQo+ID4gKwlyZXR1cm4gZXRoX2Vycihwb3J0X2lkLA0KPiA+ICsJCSAgICAgICAoKmRldi0+ZGV2 X29wcy0+aXBfcmVhc3NlbWJseV9jb25mX2dldCkoZGV2LCBjb25mKSk7DQo+ID4gK30NCj4gPiAr DQo+ID4gK2ludA0KPiA+ICtydGVfZXRoX2lwX3JlYXNzZW1ibHlfY29uZl9zZXQodWludDE2X3Qg cG9ydF9pZCwNCj4gPiArCQkJICAgICAgIGNvbnN0IHN0cnVjdCBydGVfZXRoX2lwX3JlYXNzX3Bh cmFtcyAqY29uZikNCj4gPiArew0KPiA+ICsJc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXY7DQo+ID4g Kw0KPiA+ICsJUlRFX0VUSF9WQUxJRF9QT1JUSURfT1JfRVJSX1JFVChwb3J0X2lkLCAtRU5PREVW KTsNCj4gPiArCWRldiA9ICZydGVfZXRoX2RldmljZXNbcG9ydF9pZF07DQo+ID4gKw0KPiA+ICsJ aWYgKGRldi0+ZGF0YS0+ZGV2X2NvbmZpZ3VyZWQgPT0gMCkgew0KPiA+ICsJCVJURV9FVEhERVZf TE9HKEVSUiwNCj4gPiArCQkJIkRldmljZSB3aXRoIHBvcnRfaWQ9JSJQUkl1MTYiIGlzIG5vdA0K PiBjb25maWd1cmVkLlxuIiwNCj4gPiArCQkJcG9ydF9pZCk7DQo+ID4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKGRldi0+ZGF0YS0+ZGV2X3N0YXJ0ZWQgIT0g MCkgew0KPiA+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gPiArCQkJIkRldmljZSB3aXRoIHBv cnRfaWQ9JSJQUkl1MTYiIHN0YXJ0ZWQsXG4iDQo+ID4gKwkJCSJjYW5ub3QgY29uZmlndXJlIElQ IHJlYXNzZW1ibHkgcGFyYW1zLlxuIiwNCj4gPiArCQkJcG9ydF9pZCk7DQo+ID4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKGNvbmYgPT0gTlVMTCkgew0KPiA+ ICsJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gPiArCQkJCSJJbnZhbGlkIElQIHJlYXNzZW1ibHkg Y29uZmlndXJhdGlvbg0KPiAoTlVMTClcbiIpOw0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ ICsJfQ0KPiA+ICsNCj4gPiArCVJURV9GVU5DX1BUUl9PUl9FUlJfUkVUKCpkZXYtPmRldl9vcHMt DQo+ID5pcF9yZWFzc2VtYmx5X2NvbmZfc2V0LA0KPiA+ICsJCQkJLUVOT1RTVVApOw0KPiA+ICsJ cmV0dXJuIGV0aF9lcnIocG9ydF9pZCwNCj4gPiArCQkgICAgICAgKCpkZXYtPmRldl9vcHMtPmlw X3JlYXNzZW1ibHlfY29uZl9zZXQpKGRldiwgY29uZikpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAg UlRFX0xPR19SRUdJU1RFUl9ERUZBVUxUKHJ0ZV9ldGhfZGV2X2xvZ3R5cGUsIElORk8pOw0KPiA+ DQo+ID4gICBSVEVfSU5JVChldGhkZXZfaW5pdF90ZWxlbWV0cnkpDQo+ID4gZGlmZiAtLWdpdCBh L2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmgNCj4gPiBp bmRleCAxNDdjYzFjZWQzLi5lY2M1Y2Q1MGI5IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9ldGhkZXYv cnRlX2V0aGRldi5oDQo+ID4gKysrIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmgNCj4gPiBAQCAt MTc5NCw2ICsxNzk0LDI5IEBAIGVudW0gcnRlX2V0aF9yZXByZXNlbnRvcl90eXBlIHsNCj4gPiAg IAlSVEVfRVRIX1JFUFJFU0VOVE9SX1BGLCAgIC8qKjwgcmVwcmVzZW50b3Igb2YgUGh5c2ljYWwg RnVuY3Rpb24uDQo+ICovDQo+ID4gICB9Ow0KPiA+DQo+ID4gKy8qIEZsYWcgdG8gb2ZmbG9hZCBJ UCByZWFzc2VtYmx5IGZvciBJUHY0IHBhY2tldHMuICovDQo+ID4gKyNkZWZpbmUgUlRFX0VUSF9E RVZfUkVBU1NFTUJMWV9GX0lQVjQgKFJURV9CSVQzMigwKSkNCj4gPiArLyogRmxhZyB0byBvZmZs b2FkIElQIHJlYXNzZW1ibHkgZm9yIElQdjYgcGFja2V0cy4gKi8NCj4gPiArI2RlZmluZSBSVEVf RVRIX0RFVl9SRUFTU0VNQkxZX0ZfSVBWNiAoUlRFX0JJVDMyKDEpKQ0KPiA+ICsvKioNCj4gPiAr ICogQSBzdHJ1Y3R1cmUgdXNlZCB0byBnZXQvc2V0IElQIHJlYXNzZW1ibHkgY29uZmlndXJhdGlv bi9jYXBhYmlsaXR5Lg0KPiA+ICsgKg0KPiA+ICsgKiBJZiBydGVfZXRoX2lwX3JlYXNzZW1ibHlf Y2FwYWJpbGl0eV9nZXQoKSByZXR1cm5zIDAsIElQIHJlYXNzZW1ibHkgY2FuDQo+IGJlDQo+ID4g KyAqIGVuYWJsZWQgdXNpbmcgcnRlX2V0aF9pcF9yZWFzc2VtYmx5X2NvbmZfc2V0KCkgYW5kIHBh cmFtcyB2YWx1ZXMNCj4gbG93ZXIgdGhhbg0KPiA+ICsgKiBjYXBhYmlsaXR5IGNhbiBiZSBzZXQg aW4gdGhlIFBNRC4NCj4gDQo+IENhbiB5b3UgcGxlYXNlIGNsYXJpZnkgInBhcmFtcyB2YWx1ZXMg bG93ZXIgdGhhbiBjYXBhYmlsaXR5Ij8gSXMgaXQgcmVmZXJpbmcgdG8NCj4gJ21heF9mcmFncyc/ DQoNCkl0IGNhbiBiZSBmb3IgYWxsIHRocmVlIHBhcmFtcy4NClRpbWVvdXQgc2hvdWxkIGJlIGxl c3MgdGhhbiB0aGUgY2FwYWJpbGl0eSBvZiB0aGUgZHJpdmVyLg0KSXQgbWF5IGJlIHRoZSBjYXNl LCBhcHAgd2FudCB0byBlbmFibGUgb25seSBJUHY0IGFuZCBub3QgSVB2NiBidXQgUE1EIGNhbiBz dXBwb3J0IGJvdGguDQpTbyBjb25mX3NldCgpIHBhcmFtcyBzaG91bGQgYmUgbGVzc2VyIGNvbXBh cmVkIHRvIGNhcGFiaWxpdHkuDQoNCj4gDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgcnRlX2V0aF9p cF9yZWFzc19wYXJhbXMgew0KPiA+ICsJLyoqIE1heGltdW0gdGltZSBpbiBtcyB3aGljaCBQTUQg Y2FuIHdhaXQgZm9yIG90aGVyIGZyYWdtZW50cy4NCj4gKi8NCj4gPiArCXVpbnQzMl90IHJlYXNz X3RpbWVvdXRfbXM7DQo+IA0KPiBPdGhlciB2YXJpYWJsZXMgaW4gdGhlIHN0cnVjdCBpcyBtaXNz aW5nICdyZWFzc18nIHByZWZpeCwgbGlrZSBpdCBpcyAnbWF4X2ZyYWdzJw0KPiBpbnN0ZWFkIG9m ICdyZWFzc19tYXhfZnJhZ3MnLCBzaG91bGQgd2UgZG8gdGhlIHNhbWUgZm9yIHRoaXMgdmFyaWFi bGU/DQo+IA0KDQpPayBJIHdpbGwgZHJvcCByZWFzcyBmcm9tIHJlYXNzX3RpbWVvdXRfbXMuIEFz IGl0IGlzIHBhcnQgb2YgcnRlX2V0aF9pcF9yZWFzc19wYXJhbXMuDQpPciBJIHNob3VsZCBzYXkg cnRlX2V0aF9pcF9yZWFzc2VtYmx5X3BhcmFtcyAtIGFzIHBlciB5b3VyIGNvbW1lbnQuDQoNCj4g PiArCS8qKiBNYXhpbXVtIG51bWJlciBvZiBmcmFnbWVudHMgdGhhdCBjYW4gYmUgcmVhc3NlbWJs ZWQuICovDQo+ID4gKwl1aW50MTZfdCBtYXhfZnJhZ3M7DQo+ID4gKwkvKioNCj4gPiArCSAqIEZs YWdzIHRvIGVuYWJsZSByZWFzc2VtYmx5IG9mIHBhY2tldCB0eXBlcyAtDQo+ID4gKwkgKiBSVEVf RVRIX0RFVl9SRUFTU0VNQkxZX0ZfeHh4Lg0KPiA+ICsJICovDQo+ID4gKwl1aW50MTZfdCBmbGFn czsNCj4gPiArfTsNCj4gPiArDQo+ID4gICAvKioNCj4gPiAgICAqIEEgc3RydWN0dXJlIHVzZWQg dG8gcmV0cmlldmUgdGhlIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gb2YNCj4gPiAgICAqIGFuIEV0 aGVybmV0IGRldmljZSwgc3VjaCBhcyB0aGUgY29udHJvbGxpbmcgZHJpdmVyIG9mIHRoZQ0KPiA+ IEBAIC01MjAyLDYgKzUyMjUsNzQgQEAgaW50IHJ0ZV9ldGhfcmVwcmVzZW50b3JfaW5mb19nZXQo dWludDE2X3QNCj4gcG9ydF9pZCwNCj4gPiAgIF9fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICAgaW50 IHJ0ZV9ldGhfcnhfbWV0YWRhdGFfbmVnb3RpYXRlKHVpbnQxNl90IHBvcnRfaWQsIHVpbnQ2NF90 DQo+ICpmZWF0dXJlcyk7DQo+ID4NCj4gPiArLyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAq IEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGlj ZQ0KPiA+ICsgKg0KPiA+ICsgKiBHZXQgSVAgcmVhc3NlbWJseSBjYXBhYmlsaXRpZXMgc3VwcG9y dGVkIGJ5IHRoZSBQTUQsDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBwb3J0X2lkDQo+ID4gKyAq ICAgVGhlIHBvcnQgaWRlbnRpZmllciBvZiB0aGUgZGV2aWNlLg0KPiA+ICsgKiBAcGFyYW0gY29u Zg0KPiA+ICsgKiAgIEEgcG9pbnRlciB0byBydGVfZXRoX2lwX3JlYXNzX3BhcmFtcyBzdHJ1Y3R1 cmUuDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAtICgtRU5PVFNVUCkgaWYgb2ZmbG9hZCBj b25maWd1cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgZGV2aWNlLg0KPiA+ICsgKiAgIC0gKC1F Tk9ERVYpIGlmICpwb3J0X2lkKiBpbnZhbGlkLg0KPiA+ICsgKiAgIC0gKC1FSU8pIGlmIGRldmlj ZSBpcyByZW1vdmVkLg0KPiA+ICsgKiAgIC0gKDApIG9uIHN1Y2Nlc3MuDQo+ID4gKyAqLw0KPiA+ ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiAraW50IHJ0ZV9ldGhfaXBfcmVhc3NlbWJseV9jYXBh YmlsaXR5X2dldCh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICsJCQkJCSBzdHJ1Y3QgcnRlX2V0aF9p cF9yZWFzc19wYXJhbXMNCj4gKmNvbmYpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEB3YXJu aW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0 IHByaW9yIG5vdGljZQ0KPiA+ICsgKg0KPiA+ICsgKiBHZXQgSVAgcmVhc3NlbWJseSBjb25maWd1 cmF0aW9uIHBhcmFtZXRlcnMgY3VycmVudGx5IHNldCBpbiBQTUQsDQo+ID4gKyAqIGlmIGRldmlj ZSBSeCBvZmZsb2FkIGZsYWcgKFJURV9FVEhfUlhfT0ZGTE9BRF9JUF9SRUFTU0VNQkxZKSBpcw0K PiANCj4gVGhpcyBmbGFnIGlzIG5vIG1vcmUuIE5lZWRzIHRvIHVwZGF0ZWQgdGhlIHNlbnRlbmNl cy4NCg0KQWhoIG15IGJhZC4gV2lsbCBjb3JyZWN0IGl0Lg0KDQo+IA0KPiA+ICsgKiBlbmFibGVk IGFuZCB0aGUgUE1EIHN1cHBvcnRzIElQIHJlYXNzZW1ibHkgb2ZmbG9hZC4NCj4gPiArICoNCj4g DQo+IERldmljZSBuZWVkcyB0byBiZSBjb25maWd1cmVkIHRvIGNhbGwgdGhpcyBBUEksIHNob3Vs ZCBpdCBiZSBkb2N1bWVudGVkDQo+IGhlcmU/DQoNCk9rIHdpbGwgYWRkIG9uZS4NCg0KPiANCj4g PiArICogQHBhcmFtIHBvcnRfaWQNCj4gPiArICogICBUaGUgcG9ydCBpZGVudGlmaWVyIG9mIHRo ZSBkZXZpY2UuDQo+ID4gKyAqIEBwYXJhbSBjb25mDQo+ID4gKyAqICAgQSBwb2ludGVyIHRvIHJ0 ZV9ldGhfaXBfcmVhc3NfcGFyYW1zIHN0cnVjdHVyZS4NCj4gPiArICogQHJldHVybg0KPiA+ICsg KiAgIC0gKC1FTk9UU1VQKSBpZiBvZmZsb2FkIGNvbmZpZ3VyYXRpb24gaXMgbm90IHN1cHBvcnRl ZCBieSBkZXZpY2UuDQo+ID4gKyAqICAgLSAoLUVJTlZBTCkgaWYgb2ZmbG9hZCBpcyBub3QgZW5h YmxlZCBpbiBydGVfZXRoX2NvbmYuDQo+ID4gKyAqICAgLSAoLUVOT0RFVikgaWYgKnBvcnRfaWQq IGludmFsaWQuDQo+ID4gKyAqICAgLSAoLUVJTykgaWYgZGV2aWNlIGlzIHJlbW92ZWQuDQo+ID4g KyAqICAgLSAoMCkgb24gc3VjY2Vzcy4NCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRh bA0KPiA+ICtpbnQgcnRlX2V0aF9pcF9yZWFzc2VtYmx5X2NvbmZfZ2V0KHVpbnQxNl90IHBvcnRf aWQsDQo+ID4gKwkJCQkgICBzdHJ1Y3QgcnRlX2V0aF9pcF9yZWFzc19wYXJhbXMgKmNvbmYpOw0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRB TDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZQ0KPiA+ICsgKg0KPiA+ ICsgKiBTZXQgSVAgcmVhc3NlbWJseSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaWYgdGhlIFBN RCBzdXBwb3J0cyBJUA0KPiByZWFzc2VtYmx5DQo+ID4gKyAqIG9mZmxvYWQuIFVzZXIgc2hvdWxk IGZpcnN0IGNhbGwgcnRlX2V0aF9pcF9yZWFzc2VtYmx5X2NhcGFiaWxpdHlfZ2V0KCkNCj4gdG8N Cj4gPiArICogY2hlY2sgdGhlIG1heGltdW0gdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgUE1EIGJl Zm9yZSBzZXR0aW5nIHRoZQ0KPiA+ICsgKiBjb25maWd1cmF0aW9uLiBUaGUgdXNlIG9mIHRoaXMg QVBJIGlzIG1hbmRhdG9yeSB0byBlbmFibGUgdGhpcyBmZWF0dXJlDQo+IGFuZA0KPiA+ICsgKiBz aG91bGQgYmUgY2FsbGVkIGJlZm9yZSBydGVfZXRoX2Rldl9zdGFydCgpLg0KPiA+ICsgKg0KPiAN Cj4gTm90IHN1cmUgaWYgYWJvdmUgY2F1c2UgY29uZnVzaW9uLCB3aGF0IGFib3ZlIG1lYW4gaXMg dGhpcyBBUEkgc2hvdWxkIGJlDQo+IGNhbGxlZA0KPiB3aGVuIGRldmljZSBpcyBzdG9wcGVkLiBX aGVuIHlvdSBjYWxsIGl0IHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlDQo+ICd0ZV9ldGhfZGV2X3N0 YXJ0KCknDQo+IGNhbiBpdCBiZSB0YWtlbiBhcyBpdCBzaG91bGQgYmUgY2FsbGVkIGZyb20gZmly c3QgZXZlciBzdGFydCgpIEFQST8NCj4gSWYgeW91IHRoaW5rIGFib3ZlIGlzIGNsZWFyIGVub3Vn aCB3ZSBjYW4gY29udGludWUgYXMgaXQgaXMuDQoNCkkgYmVsaWV2ZSBkZXZfc3RhcnQoKSBzaG91 bGQgYmUgY2FsbGVkIGFmdGVyIGNvbmZfc2V0KCkuIFNvIHdlIGNhbiBjb250aW51ZSBhcyBpcy4N Ck5vIHJlcXVpcmVtZW50IGZvciBmaXJzdCBldmVyIHN0YXJ0IGNhbGwuDQoNCj4gDQo+ID4gKyAq IEBwYXJhbSBwb3J0X2lkDQo+ID4gKyAqICAgVGhlIHBvcnQgaWRlbnRpZmllciBvZiB0aGUgZGV2 aWNlLg0KPiA+ICsgKiBAcGFyYW0gY29uZg0KPiA+ICsgKiAgIEEgcG9pbnRlciB0byBydGVfZXRo X2lwX3JlYXNzX3BhcmFtcyBzdHJ1Y3R1cmUuDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAt ICgtRU5PVFNVUCkgaWYgb2ZmbG9hZCBjb25maWd1cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkg ZGV2aWNlLg0KPiA+ICsgKiAgIC0gKC1FTk9ERVYpIGlmICpwb3J0X2lkKiBpbnZhbGlkLg0KPiA+ ICsgKiAgIC0gKC1FSU8pIGlmIGRldmljZSBpcyByZW1vdmVkLg0KPiA+ICsgKiAgIC0gKDApIG9u IHN1Y2Nlc3MuDQo+ID4gKyAqLw0KPiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiAraW50IHJ0 ZV9ldGhfaXBfcmVhc3NlbWJseV9jb25mX3NldCh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICsJCQkJ ICAgY29uc3Qgc3RydWN0IHJ0ZV9ldGhfaXBfcmVhc3NfcGFyYW1zDQo+ICpjb25mKTsNCj4gPiAr DQo+ID4gKw0KPiA+ICAgI2luY2x1ZGUgPHJ0ZV9ldGhkZXZfY29yZS5oPg0KPiA+DQo+ID4gICAv KioNCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi92ZXJzaW9uLm1hcCBiL2xpYi9ldGhkZXYv dmVyc2lvbi5tYXANCj4gPiBpbmRleCBjMmZiMDY2OWE0Li5lMjJjMTAyODE4IDEwMDY0NA0KPiA+ IC0tLSBhL2xpYi9ldGhkZXYvdmVyc2lvbi5tYXANCj4gPiArKysgYi9saWIvZXRoZGV2L3ZlcnNp b24ubWFwDQo+ID4gQEAgLTI1Niw2ICsyNTYsMTEgQEAgRVhQRVJJTUVOVEFMIHsNCj4gPiAgIAly dGVfZmxvd19mbGV4X2l0ZW1fY3JlYXRlOw0KPiA+ICAgCXJ0ZV9mbG93X2ZsZXhfaXRlbV9yZWxl YXNlOw0KPiA+ICAgCXJ0ZV9mbG93X3BpY2tfdHJhbnNmZXJfcHJveHk7DQo+ID4gKw0KPiA+ICsJ IyBhZGRlZCBpbiAyMi4wMw0KPiA+ICsJcnRlX2V0aF9pcF9yZWFzc2VtYmx5X2NhcGFiaWxpdHlf Z2V0Ow0KPiA+ICsJcnRlX2V0aF9pcF9yZWFzc2VtYmx5X2NvbmZfZ2V0Ow0KPiA+ICsJcnRlX2V0 aF9pcF9yZWFzc2VtYmx5X2NvbmZfc2V0Ow0KPiA+ICAgfTsNCj4gPg0KPiA+ICAgSU5URVJOQUwg ew0KDQo=