From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id 1803F2952 for ; Wed, 3 Oct 2018 01:28:59 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Oct 2018 16:28:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,333,1534834800"; d="scan'208";a="79366326" Received: from irsmsx109.ger.corp.intel.com ([163.33.3.23]) by orsmga006.jf.intel.com with ESMTP; 02 Oct 2018 16:24:26 -0700 Received: from irsmsx106.ger.corp.intel.com ([169.254.8.45]) by IRSMSX109.ger.corp.intel.com ([169.254.13.3]) with mapi id 14.03.0319.002; Wed, 3 Oct 2018 00:24:25 +0100 From: "Ananyev, Konstantin" To: Akhil Goyal , Jerin Jacob , "Joseph, Anoob" CC: "dev@dpdk.org" , "Awal, Mohammad Abdul" , "Doherty, Declan" , Narayana Prasad , Hemant Agrawal , "shreyansh.jain@nxp.com" Thread-Topic: [dpdk-dev] [RFC] ipsec: new library for IPsec data-path processing Thread-Index: AQHUO8sQ1vNhPIIy2kCq+ieD7nPPdqTefpOAgABfO7CAAuY7AIALGZsggAAAuDCABMYgAIABKxCAgAHAZSCAAYwIoIADN3IAgAX719CAAXCYgIAIxCuAgAD9/wCAAk8OQA== Date: Tue, 2 Oct 2018 23:24:24 +0000 Message-ID: <2601191342CEEE43887BDE71AB9772580102FE111B@IRSMSX106.ger.corp.intel.com> References: <1535129598-27301-1-git-send-email-konstantin.ananyev@intel.com> <358d1b6c-26f2-b125-07a4-cfb1c0e2a57b@caviumnetworks.com> <2601191342CEEE43887BDE71AB977258EA95089D@irsmsx105.ger.corp.intel.com> <475cf471-b46a-671a-5485-0042c652430c@caviumnetworks.com> <2601191342CEEE43887BDE71AB977258EA954BAD@irsmsx105.ger.corp.intel.com> <2601191342CEEE43887BDE71AB977258EA954E9D@irsmsx105.ger.corp.intel.com> <20180916105640.GA4803@jerin> <2601191342CEEE43887BDE71AB977258EA95724C@irsmsx105.ger.corp.intel.com> <2601191342CEEE43887BDE71AB977258EA957E3A@irsmsx105.ger.corp.intel.com> <2601191342CEEE43887BDE71AB977258EA95A705@irsmsx105.ger.corp.intel.com> <36e1d53b-4c31-1a92-c91f-7066f4358f79@nxp.com> <2601191342CEEE43887BDE71AB9772580102FDFF11@IRSMSX106.ger.corp.intel.com> <85566521-21e9-4e9e-e05d-3967c1662704@nxp.com> In-Reply-To: <85566521-21e9-4e9e-e05d-3967c1662704@nxp.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZTJkZGFlZTQtNGFlNy00ODRiLWE5MzAtMjA4YTM5ZTZkNjUxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiV0lTSERLNWNISDdGbTcrZkVnbjlpbitVVlwvcDgrNFdJbVVcL1VpT2lWN3E3a2VFeEdEbEtOYTRod2ZSckxPQUNOIn0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [RFC] ipsec: new library for IPsec data-path processing X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Oct 2018 23:29:00 -0000 SGkgQWtoaWwsDQoNCj4gDQo+IEhpIEtvbnN0YW50aW4sDQo+IA0KPiBPbiAxMC8xLzIwMTggMjoz MCBBTSwgQW5hbnlldiwgS29uc3RhbnRpbiB3cm90ZToNCj4gPg0KPiA+IEhpIEFraGlsLA0KPiA+ DQo+ID4+IEhpIEtvbnN0YW50aW4sDQo+ID4+DQo+ID4+IE9uIDkvMjQvMjAxOCA0OjIxIFBNLCBB bmFueWV2LCBLb25zdGFudGluIHdyb3RlOg0KPiA+Pj4gSGkgQWtoaWwsDQo+ID4+Pg0KPiA+Pj4+ IEhpIEtvbnN0YW50aW4sDQo+ID4+Pj4NCj4gPj4+PiBPbiA5LzE4LzIwMTggNjoxMiBQTSwgQW5h bnlldiwgS29uc3RhbnRpbiB3cm90ZToNCj4gPj4+Pj4+PiBJIGFtIG5vdCBzYXlpbmcgdGhpcyBz aG91bGQgYmUgdGhlIE9OTFkgd2F5IHRvIGRvIGFzIGl0IGRvZXMgbm90IHdvcmsNCj4gPj4+Pj4+ PiB2ZXJ5IHdlbGwgd2l0aCBub24gTlBVL0ZQR0EgY2xhc3Mgb2YgU29DLg0KPiA+Pj4+Pj4+DQo+ ID4+Pj4+Pj4gU28gaG93IGFib3V0IG1ha2luZyB0aGUgcHJvcG9zZWQgSVBTZWMgbGlicmFyeSBh cyBwbHVnaW4vZHJpdmVyIHRvDQo+ID4+Pj4+Pj4gcnRlX3NlY3VyaXR5Lg0KPiA+Pj4+Pj4gQXMg SSBtZW50aW9uZWQgYWJvdmUsIEkgZG9uJ3QgdGhpbmsgdGhhdCBwdXNoaW5nIHdob2xlIElQU2Vj IGRhdGEtcGF0aCBpbnRvIHJ0ZV9zZWN1cml0eQ0KPiA+Pj4+Pj4gaXMgdGhlIGJlc3QgcG9zc2li bGUgYXBwcm9hY2guDQo+ID4+Pj4+PiBUaG91Z2ggSSBwcm9iYWJseSB1bmRlcnN0YW5kIHlvdXIg Y29uY2VybjoNCj4gPj4+Pj4+IEluIFJGQyBjb2RlIHdlIGFsd2F5cyBkbyB3aG9sZSBwcmVwYXJl L3Byb2Nlc3MgaW4gU1cgKGF0dGFjaC9yZW1vdmUgRVNQIGhlYWRlcnMvdHJhaWxlcnMsIHNvIHBh ZGRpbmdzIGV0Yy4pLA0KPiA+Pj4+Pj4gaS5lLiByaWdodCBub3cgb25seSBkZXZpY2UgdHlwZXM6 IFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9OT05FIGFuZCBSVEVfU0VDVVJJVFlfQUNUSU9OX1RZ UEVfSU5MSU5FX0NSWVBUTyBhcmUNCj4gPj4gY292ZXJlZC4NCj4gPj4+Pj4+IFRob3VnaCB0aGVy ZSBhcmUgZGV2aWNlcyB3aGVyZSBtb3N0IG9mIHByZXBhcmUvcHJvY2VzcyBjYW4gYmUgZG9uZSBp biBIVw0KPiA+Pj4+Pj4gKFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9JTkxJTkVfUFJPVE9DT0wv UlRFX1NFQ1VSSVRZX0FDVElPTl9UWVBFX0xPT0tBU0lERV9QUk9UT0NPTCksDQo+ID4+Pj4+PiBw bHVzIGluIGZ1dHVyZSBjb3VsZCBiZSBkZXZpY2VzIHdoZXJlIHByZXBhcmUvcHJvY2VzcyB3b3Vs ZCBiZSBzcGxpdCBiZXR3ZWVuIEhXL1NXIGluIGEgY3VzdG9tIHdheS4NCj4gPj4+Pj4+IElzIHRo YXQgc28/DQo+ID4+Pj4+PiBUbyBhZGRyZXNzIHRoYXQgaXNzdWUgSSBzdXBwb3NlIHdlIGNhbiBk bzoNCj4gPj4+Pj4+IDEuIEFkZCBzdXBwb3J0IGZvciBSVEVfU0VDVVJJVFlfQUNUSU9OX1RZUEVf SU5MSU5FX1BST1RPQ09MIGFuZCBSVEVfU0VDVVJJVFlfQUNUSU9OX1RZUEVfTE9PS0FTSURFX1BS T1RPQ09MDQo+ID4+Pj4+PiAgICAgICAgc2VjdXJpdHkgZGV2aWNlcyBpbnRvIGlwc2VjLg0KPiA+ Pj4+Pj4gICAgICAgIFdlIHBsYW5uZWQgdG8gZG8gaXQgYW55d2F5LCBqdXN0IGRvbid0IGhhdmUg aXQgZG9uZSB5ZXQuDQo+ID4+Pj4+PiAyLiBGb3IgY3VzdG9tIGNhc2UgLSBpbnRyb2R1Y2UgUlRF X1NFQ1VSSVRZX0FDVElPTl9UWVBFX0lOTElORV9DVVNUT00gYW5kDQo+ID4+Pj4gUlRFX1NFQ1VS SVRZX0FDVElPTl9UWVBFX0xPT0tBU0lERV9DVVNUT00NCj4gPj4+Pj4+ICAgICAgICBhbmQgYWRk IGludG8gcnRlX3NlY3VyaXR5X29wcyAgIG5ldyBmdW5jdGlvbnM6DQo+ID4+Pj4+PiAgICAgICAg dWludDE2X3QgbG9va2FzaWRlX3ByZXBhcmUoc3RydWN0IHJ0ZV9zZWN1cml0eV9zZXNzaW9uICpz ZXNzLCBzdHJ1Y3QgcnRlX21idWYgKm1iW10sIHN0cnVjdCBzdHJ1Y3QgcnRlX2NyeXB0b19vcCAq Y29wW10sDQo+IHVpbnQxNl90DQo+ID4+Pj4gbnVtKTsNCj4gPj4+Pj4+ICAgICAgICB1aW50MTZf dCBsb29rYXNpZGVfcHJvY2VzcyhzdHJ1Y3QgcnRlX3NlY3VyaXR5X3Nlc3Npb24gKnNlc3MsIHN0 cnVjdCBydGVfbWJ1ZiAqbWJbXSwgc3RydWN0IHN0cnVjdCBydGVfY3J5cHRvX29wICpjb3BbXSwN Cj4gdWludDE2X3QNCj4gPj4+PiBudW0pOw0KPiA+Pj4+Pj4gICAgICAgIHVpbnQxNl90IGlubGlu ZV9wcm9jZXNzKHN0cnVjdCBydGVfc2VjdXJpdHlfc2Vzc2lvbiAqc2Vzcywgc3RydWN0IHJ0ZV9t YnVmICptYltdLCBzdHJ1Y3Qgc3RydWN0IHJ0ZV9jcnlwdG9fb3AgKmNvcFtdLCB1aW50MTZfdA0K PiA+PiBudW0pOw0KPiA+Pj4+Pj4gICAgICAgIFNvIGZvciBjdXN0b20gSFcsIFBNRCBjYW4gb3Zl cndyaXRlIG5vcm1hbCBwcmVwYXJlL3Byb2Nlc3MgYmVoYXZpb3IuDQo+ID4+Pj4+Pg0KPiA+Pj4+ PiBBY3R1YWxseSAgYWZ0ZXIgYW5vdGhlciB0aG91Z2h0Og0KPiA+Pj4+PiBNeSBwcmV2aW91cyBh c3N1bXB0aW9uIChwcm9iYWJseSB3cm9uZyBvbmUpIHdhcyB0aGF0IGZvciBib3RoDQo+ID4+Pj4+ IFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9JTkxJTkVfUFJPVE9DT0wgYW5kIFJURV9TRUNVUklU WV9BQ1RJT05fVFlQRV9MT09LQVNJREVfUFJPVE9DT0wNCj4gPj4+Pj4gZGV2aWNlcyBjYW4gZG8g d2hvbGUgZGF0YS1wYXRoIGlwc2VjIHByb2Nlc3NpbmcgdG90YWxseSBpbiBIVyAtIG5vIG5lZWQg Zm9yIGFueSBTVyBzdXBwb3J0IChleGNlcHQgaW5pdC9jb25maWcpLg0KPiA+Pj4+PiBOb3cgbG9v a2luZyBhdCBkcGFhIGFuZCBkcGFhMiBkZXZpY2VzICh0aGUgb25seSBvbmVzIHRoYXQgc3VwcG9y dHMgUlRFX1NFQ1VSSVRZX0FDVElPTl9UWVBFX0xPT0tBU0lERV9QUk9UT0NPTCByaWdodA0KPiBu b3cpDQo+ID4+Pj4+IEkgYW0gbm90IHNvIHN1cmUgYWJvdXQgdGhhdCAtIGxvb2tzIGxpa2Ugc29t ZSBTVyBoZWxwIG1pZ2h0IGJlIG5lZWRlZCBmb3IgcmVwbGF5IHdpbmRvdyB1cGRhdGVzLCBldGMu DQo+ID4+Pj4+IEhlbWFudCwgU2hyZXlhbnNoIC0gY2FuIHlvdSBndXlzIGNvbmZpcm0gd2hhdCBp cyBleHBlY3RlZCBmcm9tIFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9MT09LQVNJREVfUFJPVE9D T0wgZGV2aWNlcw0KPiA+Pj4+PiAoSFcvU1cgcm9zZXMvcmVzcG9uc2liaWxpdGllcyk/DQo+ID4+ Pj4+IEFib3V0IFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9JTkxJTkVfUFJPVE9DT0wgIC0gSSBk aWRuJ3QgZmluZCBhbnkgZHJpdmVyIGluc2lkZSBEUERLIHNvdXJjZSB0cmVlIHRoYXQgZG9lcyBz dXBwb3J0IHRoYXQNCj4gPj4+PiBjYXBhYmlsaXR5Lg0KPiA+Pj4+PiBTbyBteSBxdWVzdGlvbiBp cyB0aGVyZSBhbnkgZGV2aWNlcy9kcml2ZXJzIHRoYXQgZG8gc3VwcG9ydCBpdD8NCj4gPj4+Pj4g SWYgc28sIHdoZXJlIGNvdWxkIHNvdXJjZSBjb2RlIGNvdWxkIGJlIGZvdW5kLCBhbmQgd2hhdCBh cmUgSFcvU1cgcm9sZXMvcmVzcG9uc2liaWxpdGllcyBmb3IgdGhhdCB0eXBlIG9mIGRldmljZXM/ DQo+ID4+Pj4+IEtvbnN0YW50aW4NCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+PiBJbiBjYXNlIG9m IExPT0tBU0lERSwgdGhlIHByb3RvY29sIGVycm9ycyBsaWtlIGFudGlyZXBsYXkgYW5kIHNlcXVl bmNlDQo+ID4+Pj4gbnVtYmVyIG92ZXJmbG93IHNoYWxsIGJlIHRoZSByZXNwb25zaWJpbGl0eSBv ZiBlaXRoZXIgUE1EIG9yIHRoZSBIVy4NCj4gPj4+PiBJdCBzaG91bGQgbm90aWZ5IHRoZSBhcHBs aWNhdGlvbiB0aGF0IHRoZSBlcnJvciBoYXMgb2NjdXJyZWQgYW5kDQo+ID4+Pj4gYXBwbGljYXRp b24gbmVlZCB0byBkZWNpZGUgd2hhdCBpdCBuZWVkcyB0byBkZWNpZGUgbmV4dC4NCj4gPj4+IE9r LCB0aGFua3MgZm9yIGNsYXJpZmljYXRpb24uDQo+ID4+PiBKdXN0IHRvIGNvbmZpcm0gLSAgZG8g d2UgaGF2ZSBhIGRlZmluZWQgd2F5IGZvciBpdCByaWdodCBub3cgaW4gcnRlX3NlY3VyaXR5Pw0K PiA+PiBBcyBvZiBub3csIHRoZXJlIGFyZSBubyBtYWNyb3MgZGVmaW5lZCBmb3IgYW50aXJlcGxh eS9zZXEuIG5vLiBvdmVyZmxvdw0KPiA+PiBlcnJvcnMgaW4gY3J5cHRvIGVycm9ycyhydGVfY3J5 cHRvX29wX3N0YXR1cyksIGJ1dCBpdCB3aWxsIGJlIGFkZGVkIHNvb24uDQo+ID4+IEZvciBpbmxp bmUgY2FzZXMsIGlwc2VjLXNlY2d3IGFwcGxpY2F0aW9uIGdldHMgZXJyb3Igbm90aWZpY2F0aW9u IHZpYQ0KPiA+PiBydGVfZXRoX2V2ZW50Lg0KPiA+IE9rLg0KDQpBY3R1YWxseSBsb29raW5nIGF0 IGl0IGEgYml0IGNsb3NlciAteW91IGFyZSB0YWxraW5nIGFib3V0IFJURV9FVEhfRVZFTlRfSVBT RUMsIHJpZ2h0Pw0KSSBkbyBzZWUgc3RydWN0L3R5cGVzIGRlZmluaXRpb25zLCBhbmQgdG8gc2Vl IGNvZGUgaW4gaXBzZWMtc2VjZ3cgdG8gaGFuZGxlIGl0LA0KYnV0IEkgZG9uJ3Qgc2VlIGFueSBk cml2ZXIgdGhhdCBzdXBwb3J0cyBpdC4NCklzIHRoYXQgd2hhdCBpbnRlbmRlZD8NCg0KPiA+DQo+ ID4NCj4gPj4+PiBBcyBKZXJpbiBzYWlkIGluIG90aGVyIGVtYWlsLCB0aGUgcm9sZXMvcmVzcG9u c2liaWxpdHkgb2YgdGhlIFBNRCBpbg0KPiA+Pj4+IGNhc2Ugb2YgaW5saW5lIHByb3RvIGFuZCBs b29rYXNpZGUgY2FzZSwgbm90aGluZyBtdWNoIGlzIHJlcXVpcmVkIGZyb20NCj4gPj4+PiB0aGUg YXBwbGljYXRpb24gdG8gZG8gYW55IHByb2Nlc3NpbmcgZm9yIGlwc2VjLg0KPiA+Pj4+DQo+ID4+ Pj4gQXMgcGVyIG15IHVuZGVyc3RhbmRpbmcsIHRoZSBwcm9wb3NlZCBSRkMgaXMgdG8gbWFrZSB0 aGUgYXBwbGljYXRpb24NCj4gPj4+PiBjb2RlIGNsZWFuZXIgZm9ywqAgdGhlIHByb3RvY29sIHBy b2Nlc3NpbmcuDQo+ID4+PiBZZXMsIHVuaWZpZWQgZGF0YS1wYXRoIEFQSSBpcyBkZWZpbml0ZWx5 IG9uZSBvZiB0aGUgbWFpbiBnb2Fscy4NCj4gPj4+DQo+ID4+Pj4gMS4gRm9yIGlubGluZSBwcm90 byBhbmQgbG9va2FzaWRlIHRoZXJlIHdvbid0IGJlIGFueSBjaGFuZ2UgaW4gdGhlIGRhdGENCj4g Pj4+PiBwYXRoLiBUaGUgbWFpbiBjaGFuZ2VzIHdvdWxkIGJlIGluIHRoZSBjb250cm9sIHBhdGgu DQo+ID4+PiBZZXMsIGZyb20geW91ciBhbmQgSmVyaW4gZGVzY3JpcHRpb24gZGF0YS1wYXRoIHBy b2Nlc3NpbmcgbG9va3MNCj4gPj4+IHJlYWxseSBsaWdodHdlaWdodCBmb3IgdGhlc2UgY2FzZXMu DQo+ID4+PiBGb3IgY29udHJvbCBwYXRoIC0gdGhlcmUgaXMgbm8gbXVjaCBjaGFuZ2UsIHVzZXIg d291bGQgaGF2ZSB0byBjYWxsDQo+ID4+PiBydGVfaXBzZWNfc2FfaW5pdCgpIHRvIHN0YXJ0IHVz aW5nIGdpdmVuIFNBLg0KPiA+Pj4NCj4gPj4+PiAyLiBCdXQgaW4gY2FzZSBvZiBpbmxpbmUgY3J5 cHRvIGFuZCBSVEVfU0VDVVJJVFlfQUNUSU9OX1RZUEVfTk9ORSwgdGhlDQo+ID4+Pj4gcHJvdG9j b2wgcHJvY2Vzc2luZyB3aWxsIGJlIGRvbmUgaW4gdGhlIGxpYnJhcnkgYW5kIHRoZXJlIHdvdWxk IGJlDQo+ID4+Pj4gY2hhbmdlcyBpbiBib3RoIGNvbnRyb2wgYW5kIGRhdGEgcGF0aC4NCj4gPj4+ IFllcy4NCj4gPj4+DQo+ID4+Pj4gQXMgdGhlIHJ0ZV9zZWN1cml0eSBjdXJyZW50bHkgcHJvdmlk ZSBnZW5lcmljIEFQSXMgZm9yIGNvbnRyb2wgcGF0aCBvbmx5DQo+ID4+Pj4gYW5kIHdlIG1heSBo YXZlIGl0IGV4cGFuZGVkIGZvciBwcm90b2NvbCBzcGVjaWZpYyBkYXRhcGF0aCBwcm9jZXNzaW5n Lg0KPiA+Pj4+IFNvIGZvciB0aGUgYXBwbGljYXRpb24sIHdvcmtpbmcgd2l0aCBpbmxpbmUgY3J5 cHRvLyBpbmxpbmUgcHJvdG8gd291bGQNCj4gPj4+PiBiZSBxdWl0ZSBzaW1pbGFyIGFuZCBpdCB3 b24ndCBuZWVkIHRvIGRvIHNvbWUgZXh0cmEgcHJvY2Vzc2luZyBmb3INCj4gPj4+PiBpbmxpbmUg Y3J5cHRvLg0KPiA+Pj4+IFNhbWUgd2lsbCBiZSB0aGUgY2FzZSBmb3IgUlRFX1NFQ1VSSVRZX0FD VElPTl9UWVBFX05PTkUgYW5kIGxvb2thc2lkZS4NCj4gPj4+Pg0KPiA+Pj4+IFdlIG1heSBoYXZl IHRoZSBwcm90b2NvbCBzcGVjaWZpYyBBUElzIHJlc2lkZSBpbnNpZGUgdGhlIHJ0ZV9zZWN1cml0 eQ0KPiA+Pj4+IGFuZCB3ZSBjYW4gdXNlIGVpdGhlciB0aGUgY3J5cHRvL25ldCBQTUQgdW5kZXJu ZWF0aCBpdC4NCj4gPj4+IEFzIEkgdW5kZXJzdGFuZCwgeW91IHN1Z2dlc3QgaW5zdGVhZCBvZiBp bnRyb2R1Y2luZyBuZXcgbGlicmFyeSwNCj4gPj4+IGludHJvZHVjZSBzaW1pbGFyIGRhdGEtcGF0 aCBmdW5jdGlvbnMgaW5zaWRlIHJ0ZV9zZWN1cml0eS4NCj4gPj4+IFByb2JhYmx5IHNvbWV0aGlu ZyBsaWtlOg0KPiA+Pj4NCj4gPj4+IHVpbnQxNl90IHJ0ZV9zZWN1cml0eV9wcm9jZXNzKHN0cnVj dCBydGVfc2VjdXJpdHlfc2Vzc2lvbiAqcywgc3RydWN0IHJ0ZV9tYnVmICptYltdLCB1aW50MTZf dCBudW0pOw0KPiA+Pj4gdWludDE2X3QgcnRlX3NlY3VyaXR5X2NyeXB0b19wcmVwYXJlKHN0cnVj dCBydGVfaXBzZWNfc2EgKnNhLCBzdHJ1Y3QgcnRlX21idWYgKm1iW10sDQo+ID4+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgcnRlX2NyeXB0b19vcCAqY29wW10sIHVpbnQxNl90IG51bSk7DQo+ID4+ PiAuLi4NCj4gPj4+IElzIHRoYXQgY29ycmVjdD8NCj4gPj4gInJ0ZV9zZWN1cml0eV9wcm9jZXNz X2lwc2VjIiBhbmQgInJ0ZV9zZWN1cml0eV9jcnlwdG9fcHJlcGFyZV9pcHNlYyIgd2lsbCBiZSBi ZXR0ZXIuDQo+ID4+IFdlIGNhbiBoYXZlIHN1Y2ggQVBJcyBmb3Igb3RoZXIgcHJvdG9jb2xzIGFz IHdlbGwuDQo+ID4+IEFsc28sIHdlIHNob3VsZCBsZWF2ZSB0aGUgZXhpc3RpbmcgZnVuY3Rpb25h bGl0eSBhcyBpcyBhbmQgd2Ugc2hvdWxkIGxldCB0aGUgdXNlciBkZWNpZGUgd2hldGhlcg0KPiA+ PiBpdCBuZWVkcyB0byBtYW5hZ2UgdGhlIGlwc2VjIG9uIGl0J3Mgb3duIG9yIHdpdGggdGhlIG5l dyBBUElzLg0KPiA+IFRoZXJlIGFyZSBubyBwbGFucyB0byB2b2lkIGFueSBleGlzdGluZyBBUEku DQo+ID4gSWYgdGhlIHVzZXIgaGFzIHdvcmtpbmcgY29kZSB0aGF0IHVzZXMgcnRlX2NyeXRwb2Rl di9ydGVfc2VjdXJpdHkgZGlyZWN0bHkgYW5kIHdhbnRzIHRvIGtlZXAgaXQsDQo+ID4gdGhhdCdz IGZpbmUuDQo+ID4NCj4gPj4+IEkgdGhvdWdodCBhYm91dCB0aGF0IGFwcHJvYWNoIHRvbywgYW5k IGluZGVlZCBmcm9tIG9uZSBzaWRlIGl0IGxvb2tzIGNsZWFuZXIgYW5kIGVhc2llcg0KPiA+Pj4g dG8gY3VzdG9taXplIC0gZWFjaCBvZiB0aGVzZSBmdW5jdGlvbnMgd291bGQganVzdCBjYWxsIHJl bGF0ZWQgZnVuY3Rpb24gaW5zaWRlIHJ0ZV9zZWN1cml0eV9vcHMuDQo+ID4+PiBUaGUgcHJvYmxl bSB3aXRoIHRoYXQgYXBwcm9hY2ggLSBpdCB3b3VsZCBtZWFuIHRoYXQgZWFjaCBTQSB3b3VsZCBi ZSBhYmxlIHRvIHdvcmsgd2l0aCBvbmUNCj4gPj4+IGRldmljZSBvbmx5Lg0KPiA+Pj4gU28gaWYg c29tZW9uZSBuZWVkcyBhbiBTQSB0aGF0IGNvdWxkIGJlIHByb2Nlc3NlZCBieSBtdWx0aXBsZSBj b3JlcyBhbmQgbXVsdGlwbGUgY3J5cHRvLWRldmljZXMNCj4gPj4+IGluIHBhcmFsbGVsIHN1Y2gg YXBwcm9hY2ggd291bGRu4oCZdCBmaXQuDQo+ID4+IE9uZSBTQSBzaG91bGQgYmUgcHJvY2Vzc2Vk IGJ5IGEgc2luZ2xlIGNvcmUgb3IgZWxzZSB3ZSBuZWVkIHRvIGhhdmUgYW4NCj4gPj4gZXZlbnQg YmFzZWQgYXBwbGljYXRpb24gd2hpY2ggc3VwcG9ydCBvcmRlcmVkIHF1ZXVlcywNCj4gPj4gYmVj YXVzZSBpZiB3ZSBwcm9jZXNzIHBhY2tldHMgb2Ygc2luZ2xlIFNBIG9uIG11bHRpcGxlIGNvcmVz LCB0aGVuDQo+ID4+IHBhY2tldHMgd2lsbCBnZXQgcmUtb3JkZXJlZCBhbmQgd2Ugd2lsbCBnZXQg dGhlIGFudGktcmVwbGF5IGxhdGUgZXJyb3JzDQo+ID4+IG9uIGRlY2FwIHNpZGUuDQo+ID4gSSBz dXBwb3NlIGluIHNvbWUgY2FzZXMgb25lIGNvcmUgd291bGQgYmUgZW5vdWdoIHRvIGhhbmRsZSBT QSB0cmFmZmljLA0KPiA+IGZvciBzb21lIG5vdCwgYXMgSSBzYWlkIGJlZm9yZSwgSSB0aGluayBp dCBzaG91bGQgYmUgY29uZmlndXJhYmxlLg0KPiA+IE9mIGNvdXJzZSBmb3IgTVQgY2FzZSBzb21l IGVudGl0eSB0aGF0IHdvdWxkICBndWFyYW50ZWUgcHJvcGVyIG9yZGVyaW5nDQo+ID4gZm9yIGZp bmFsIHBhY2tldCBwcm9jZXNzaW5nIHdvdWxkIGJlIG5lZWRlZC4NCj4gPiBJdCBjb3VsZCBiZSBz b21lIGV2ZW50ZGV2LCBvciBTVyBGSUZPIHF1ZXVlLCBvciBzb21ldGhpbmcgZWxzZS4NCj4gPg0K PiA+PiBBbmQgaWYgd2UgaGF2ZSBldmVudCBiYXNlZCBzb2x1dGlvbiwgdGhlbiB0aGUgc2NoZWR1 bGVyIHdpbGwgYmUgYWJsZSB0bw0KPiA+PiBoYW5kbGUgdGhlIGxvYWQgYmFsYW5jaW5nIGFjY29y ZGluZ2x5Lg0KPiA+IERpZG4ndCB1bmRlcnN0YW5kIHRoYXQgc2VudGVuY2UuDQo+IEkgbWVhbiB0 aGUgZXZlbnQgZGV2aWNlIHdpbGwgYmUgYWJsZSB0byBoYW5kbGUgdGhhdCB3aGljaCBoYXMgYW4g aW5idWlsdA0KPiBzY2hlZHVsZXIgaW4gaXQgZm9yIGJhbGFuY2luZyB0aGUgbG9hZCBvZiBzaW5n bGUgU0EsDQo+IGFuZCBpZiB0aGUgcXVldWVzIGFyZSBvcmRlcmVkIGFuZCBpdCBzdXBwb3J0IG9y ZGVyIHJlc3RvcmF0aW9uLCB0aGVuIGl0DQo+IHdpbGwgYmUgYWJsZSB0byBtYWludGFpbiB0aGUg b3JkZXJpbmcuIEFuZCBmb3IgdGhhdA0KPiB5b3Ugd291bGQgbm90IGhhdmUgdG8gYm90aGVyIGFi b3V0IGdpdmluZyB0aGUgc2FtZSBTQSB0byBkaWZmZXJlbnQNCj4gY3J5cHRvZGV2cyBvbiBtdWx0 aSBjb3Jlcy4NCg0KSWYgc3VjaCBldmVudCBkZXZpY2Ugd2lsbCBiZSBhdmFpbGFibGUgZm9yIHRo ZSB1c2VyLCBhbmQgaXQgd291bGQgYmUgYSB1c2VyIHByZWZlcmVuY2UgdG8gdXNlIGl0IC0NCnRo YXQncyBmaW5lLg0KSW4gc3VjaCBjYXNlIHRoZXJlIGlzIG5vIG5lZWQgZm9yIE1UIHN1cHBvcnQg IGp1c3QgU1QgdmVyc2lvbiBvZiBTQSBjb2RlIGNvdWxkIGJlIHVzZWQuDQpCdXQgSSBzdXBwb3Nl IHN1Y2ggc2NoZWR1bGVyIHNob3VsZG4ndCBiZSB0aGUgb25seSBvcHRpb24uDQoNCj4gPj4+IFRo YXQgd2FzIHRoZSBtYWluIHJlYXNvbiB0byBrZWVwIHJ0ZV9zZWN1cml0eSBhcyBpdCBpcyByaWdo dCBub3cgYW5kIGdvIGFoZWFkIHdpdGggbmV3IGxpYnJhcnkuDQo+ID4+PiBPbmUgdGhpbmcgdGhh dCB3b3JyaWVzIG1lIC0gIGRvIHdlIG5lZWQgYSB3YXkgdG8gc2hhcmUgU1FOIGFuZCByZXBsYXkg d2luZG93IGluZm9ybWF0aW9uDQo+ID4+PiBiZXR3ZWVuIHJ0ZV9zZWN1cml0eSBhbmQgdXBwZXIg bGF5ZXIgKHJ0ZV9pcHNlYyk/DQo+ID4+PiBJZiAnbm8nLCB0aGVuIG9rLCBpZiAneWVzJyB0aGVu IHByb2JhYmx5IHdlIG5lZWQgdG8gZGlzY3VzcyBob3cgdG8gZG8gaXQgbm93Pw0KPiA+PiBhbnRp LXJlcGxheSB3aW5kb3cgc2l6ZSBzaGFsbCBiZSBhIHBhcmFtZXRlciBpbiBpcHNlY194Zm9ybSwg d2hpY2ggc2hhbGwNCj4gPj4gYmUgYWRkZWQuDQo+ID4+IEFuZCB0aGUgZXJyb3Igbm90aWZpY2F0 aW9uDQo+ID4+ICAgwqAtIGluIGNhc2Ugb2YgdXNpbmcgY3J5cHRvLCB0aGVuIHVzZSBydGVfY3J5 cHRvX29wX3N0YXR1cw0KPiA+PiAtIGluIGNhc2Ugb2YgaW5saW5lIGNhc2VzLCB0aGVuIHVzZSBy dGVfZXRoX2V2ZW50IGNhbGxiYWNrcy4NCj4gPj4gSSBkb24ndCBzZWUgcnRlX2lwc2VjIG5lZWRz IHRvIHRha2UgY2FyZSBvZiB0aGF0IGluIHlvdXIgaW5pdGlhbCBhcHByb2FjaC4NCj4gPj4gSG93 ZXZlciwgaWYgeW91IHBsYW4gdG8gaW5jbHVkZSBzZXNzaW9uIHJlc2V0IGluc2lkZSBydGVfaXBz ZWMsIHRoZW4geW91DQo+ID4+IG1heSBuZWVkIHRoYXQgaW5zaWRlIHRoZSBydGVfaXBzZWMuDQo+ ID4gSSBhbSBub3QgdGFsa2luZyBydGVfaXBzZWMsIG15IGNvbmNlcm4gaGVyZSBpcyBydGVfc2Vj dXJpdHkuDQo+ID4gU3VwcG9zZSB5b3UgbmVlZCB0byBzd2l0Y2ggZnJvbSBkZXZpY2UgdGhhdCBj YW4gZG8gaW5saW5lX3Byb3RvIHRvIHRoZSBkZXZpY2UgdGhhdCBkb2Vzbid0Lg0KPiBJbiB3aGF0 IHVzZSBjYXNlIHlvdSB3b3VsZCBuZWVkIHN1Y2ggc3dpdGNoaW5nPw0KDQpBcyBhbiBleGFtcGxl IC0gZGV2aWNlIGRldGFjaCwgIFZNIGxpdmUgbWlncmF0aW9uLCBpbiBzb21lIGNhc2VzIGV2ZW4g Y2hhbmdlcyBpbiByb3V0aW5nIHRhYmxlLg0KQXMgYW5vdGhlciBleGFtcGxlIC0gbGltaXRhdGlv bnMgaW4gSFcgb2ZmbG9hZCBzdXBwb3J0ZWQuDQpMZXQgc2F5IGl4Z2JlIGRvZXNuJ3Qgc3VwcG9y dCBpcCByZWFzc2VtYmxlLg0KDQo+ID4gUmlnaHQgbm93IHRoZSBvbmx5IHdheSAtIHJlbmVnb3Rp YXRlIGFsbCBTQXMgdGhhdCB3ZXJlIGhhbmRsZWQgYnkgaW5saW5lX3Byb3RvIGRldmljZQ0KPiA+ IChiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byByZXRyaWV2ZSBmcm9tIHJ0ZV9zZWN1cml0eSBk ZXZpY2UgU1FOIGluZm9ybWF0aW9uKS4NCj4gPiBSZW5lZ290aWF0aW9uIHNob3VsZCB3b3JrLCBi dXQgaXQgbG9va3MgbGlrZSBxdWl0ZSBleHBlbnNpdmUgYXBwcm9hY2guDQo+IFRoaXMgd2lsbCBi ZSBvbmx5IGZvciB0aGUgZmlyc3QgcGFja2V0Lg0KDQpTdXJlLCBhbmQgbm93IGltYWdpbmUgeW91 IGhhdmUgMU0gU0FzIG9uIGlubGluZS1wcm90byBkZXZpY2UgYW5kIHN5c2FkbWluIHdhbnRzDQp0 byBkZXRhY2ggdGhhdCBkZXZpY2UuDQpIb3cgbG9uZyBpdCB3b3VsZCB0YWtlIHRvIHJlLW5lZ290 aWF0ZSBhbGwgb2YgdGhlbT8NCg0KPiA+IElmIHJ0ZV9zZWN1cml0eSB3b3VsZCBoYXZlIGEgd2F5 IHRvIHNoYXJlIGl0cyBTUU4gc3RhdHVzIHdpdGggU1csIHRoZW4gSSB0aGluayBpdCB3b3VsZA0K PiA+IGJlIHBvc3NpYmxlIHRvIGRvIHN1Y2ggc3dpdGNoIHdpdGhvdXQgU0EgdGVybWluYXRpb24u DQo+IHdoYXQga2luZCBvZiBTUU4gc3RhdHVzIHlvdSBhcmUgbG9va2luZyBmb3I/IG92ZXJmbG93 Pw0KDQpOb3BlLCBJIGFtIHRhbGtpbmcgYWJvdXQgbGFzdC1zZXEgYW5kIHJlcGxheS13aW5kb3cg c3RhdGU6DQpodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDMwMyNzZWN0aW9uLTMuNC4z DQoNCktvbnN0YW50aW4NCg0KPiBJZiB5ZXMsDQo+IGFwcGxpY2F0aW9uIG5lZWQgdG8gcmUtbmVn b3RpYXRlIHRoZSBzZXNzaW9uLA0KPiB3aGljaCB3aWxsIGJlIGRvbmUgcGVyaW9kaWNhbGx5IGFu eXdheXMuDQo+ID4gQWdhaW4gd2l0aCBzdWNoIGluZm8gYXZhaWxhYmxlIC0gbG9hZC1iYWxhbmNp bmcgZm9yIHRoZSBzYW1lIFNBIG9uIG11bHRpcGxlIGRldmljZXMNCj4gPiBtaWdodCBiZSBwb3Nz aWJsZS4NCj4gPiBLb25zdGFudGluDQo+ID4NCg0K