From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pavan Nikhilesh Bhagavatula Subject: Re: [EXT] Re: [PATCH] app/testpmd: use mempool bulk get for txonly mode Date: Fri, 1 Mar 2019 08:45:31 +0000 Message-ID: References: <20190228194128.14236-1-pbhagavatula@marvell.com> <46756fe9-ecc7-91eb-4c91-fea42f67a40c@solarflare.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "dev@dpdk.org" To: Jerin Jacob Kollanukkaran , "bernard.iremonger@intel.com" , "arybchenko@solarflare.com" , "wenzhuo.lu@intel.com" Return-path: Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 94D4A3576 for ; Fri, 1 Mar 2019 09:45:38 +0100 (CET) In-Reply-To: <46756fe9-ecc7-91eb-4c91-fea42f67a40c@solarflare.com> Content-Language: en-US Content-ID: <3E34AC4C17334B40B99AF506F2490A75@namprd18.prod.outlook.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" T24gRnJpLCAyMDE5LTAzLTAxIGF0IDEwOjM4ICswMzAwLCBBbmRyZXcgUnliY2hlbmtvIHdyb3Rl Og0KPiBPbiAyLzI4LzE5IDEwOjQyIFBNLCBQYXZhbiBOaWtoaWxlc2ggQmhhZ2F2YXR1bGEgd3Jv dGU6DQo+ID4gRnJvbTogUGF2YW4gTmlraGlsZXNoIDxwYmhhZ2F2YXR1bGFAbWFydmVsbC5jb20+ DQo+ID4gDQo+ID4gVXNlIG1lbXBvb2wgYnVsayBnZXQgb3BzIHRvIGFsbG9jIGJ1cnN0IG9mIHBh Y2tldHMgYW5kIHByb2Nlc3MgdGhlbQ0KPiA+IGluc3RlYWQgb2YgY2FsbGluZyBwa3RhbGxvYyBm b3IgZXZlcnkgcGFja2V0Lg0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IFBhdmFuIE5pa2hpbGVz aCA8cGJoYWdhdmF0dWxhQG1hcnZlbGwuY29tPg0KPiA+IC0tLQ0KPiA+ICBhcHAvdGVzdC1wbWQv dHhvbmx5LmMgfCAxMzkgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0NCj4g PiAtLS0tDQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlv bnMoLSkNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvYXBwL3Rlc3QtcG1kL3R4b25seS5jIGIvYXBw L3Rlc3QtcG1kL3R4b25seS5jDQo+ID4gaW5kZXggMWYwOGI2ZWQzLi5lZWY4YjNhNDUgMTAwNjQ0 DQo+ID4gLS0tIGEvYXBwL3Rlc3QtcG1kL3R4b25seS5jDQo+ID4gKysrIGIvYXBwL3Rlc3QtcG1k L3R4b25seS5jDQo+ID4gQEAgLTE0Nyw2ICsxNDcsNjEgQEAgc2V0dXBfcGt0X3VkcF9pcF9oZWFk ZXJzKHN0cnVjdCBpcHY0X2hkcg0KPiA+ICppcF9oZHIsDQo+ID4gIAlpcF9oZHItPmhkcl9jaGVj a3N1bSA9ICh1aW50MTZfdCkgaXBfY2tzdW07DQo+ID4gIH0NCj4gPiAgDQo+ID4gK3N0YXRpYyBp bmxpbmUgYm9vbA0KPiA+ICtwa3RfYnVyc3RfcHJlcGFyZShzdHJ1Y3QgcnRlX21idWYgKnBrdCwg c3RydWN0IHJ0ZV9tZW1wb29sICptYnAsDQo+ID4gKwkJc3RydWN0IGV0aGVyX2hkciAqZXRoX2hk ciwgY29uc3QgdWludDE2X3Qgdmxhbl90Y2ksDQo+ID4gKwkJY29uc3QgdWludDE2X3Qgdmxhbl90 Y2lfb3V0ZXIsIGNvbnN0IHVpbnQ2NF90IG9sX2ZsYWdzKQ0KPiA+ICt7DQo+ID4gKwl1aW50MzJf dCBuYl9zZWdzLCBwa3RfbGVuID0gMDsNCj4gPiArCXN0cnVjdCBydGVfbWJ1ZiAqcGt0X3NlZzsN Cj4gPiArCXVpbnQ4X3QgaTsNCj4gPiArDQo+ID4gKwlpZiAodW5saWtlbHkodHhfcGt0X3NwbGl0 ID09IFRYX1BLVF9TUExJVF9STkQpKQ0KPiA+ICsJCW5iX3NlZ3MgPSByYW5kb20oKSAlIHR4X3Br dF9uYl9zZWdzICsgMTsNCj4gPiArCWVsc2UNCj4gPiArCQluYl9zZWdzID0gdHhfcGt0X25iX3Nl Z3M7DQo+ID4gKw0KPiA+ICsJcnRlX3BrdG1idWZfcmVzZXRfaGVhZHJvb20ocGt0KTsNCj4gPiAr CXBrdC0+ZGF0YV9sZW4gPSB0eF9wa3Rfc2VnX2xlbmd0aHNbMF07DQo+ID4gKwlwa3QtPm9sX2Zs YWdzID0gb2xfZmxhZ3M7DQo+ID4gKwlwa3QtPnZsYW5fdGNpID0gdmxhbl90Y2k7DQo+ID4gKwlw a3QtPnZsYW5fdGNpX291dGVyID0gdmxhbl90Y2lfb3V0ZXI7DQo+ID4gKwlwa3QtPmwyX2xlbiA9 IHNpemVvZihzdHJ1Y3QgZXRoZXJfaGRyKTsNCj4gPiArCXBrdC0+bDNfbGVuID0gc2l6ZW9mKHN0 cnVjdCBpcHY0X2hkcik7DQo+ID4gKw0KPiA+ICsJcGt0X3NlZyA9IHBrdDsNCj4gPiArCWZvciAo aSA9IDE7IGkgPCBuYl9zZWdzOyBpKyspIHsNCj4gPiArCQlwa3Rfc2VnLT5uZXh0ID0gcnRlX21i dWZfcmF3X2FsbG9jKG1icCk7DQo+ICANCj4gV2h5IGlzIGJ1bGsgYWxsb2NhdGlvbiBub3QgdXNl ZCBoZXJlPw0KDQpXaWxsIHVwZGF0ZSBpbiB2Mi4NCg0KPiANCj4gPiArCQlpZiAocGt0X3NlZy0+ bmV4dCA9PSBOVUxMKSB7DQo+ID4gKwkJCXBrdC0+bmJfc2VncyA9IGk7DQo+ID4gKwkJCXJ0ZV9w a3RtYnVmX2ZyZWUocGt0KTsNCj4gPiArCQkJcmV0dXJuIGZhbHNlOw0KPiA+ICsJCX0NCj4gPiAr CQlwa3Rfc2VnID0gcGt0X3NlZy0+bmV4dDsNCj4gPiArCQlwa3Rfc2VnLT5kYXRhX2xlbiA9IHR4 X3BrdF9zZWdfbGVuZ3Roc1tpXTsNCj4gPiArCQlwa3RfbGVuICs9IHBrdF9zZWctPmRhdGFfbGVu Ow0KPiA+ICsJfQ0KPiA+ICsJcGt0X3NlZy0+bmV4dCA9IE5VTEw7IC8qIExhc3Qgc2VnbWVudCBv ZiBwYWNrZXQuICovDQo+ID4gKwkvKg0KPiA+ICsJICogQ29weSBoZWFkZXJzIGluIGZpcnN0IHBh Y2tldCBzZWdtZW50KHMpLg0KPiA+ICsJICovDQo+ID4gKwljb3B5X2J1Zl90b19wa3QoZXRoX2hk ciwgc2l6ZW9mKGV0aF9oZHIpLCBwa3QsIDApOw0KPiA+ICsJY29weV9idWZfdG9fcGt0KCZwa3Rf aXBfaGRyLCBzaXplb2YocGt0X2lwX2hkciksIHBrdCwNCj4gPiArCQkJc2l6ZW9mKHN0cnVjdCBl dGhlcl9oZHIpKTsNCj4gPiArCWNvcHlfYnVmX3RvX3BrdCgmcGt0X3VkcF9oZHIsIHNpemVvZihw a3RfdWRwX2hkciksIHBrdCwNCj4gPiArCQkJc2l6ZW9mKHN0cnVjdCBldGhlcl9oZHIpICsNCj4g PiArCQkJc2l6ZW9mKHN0cnVjdCBpcHY0X2hkcikpOw0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkg KiBDb21wbGV0ZSBmaXJzdCBtYnVmIG9mIHBhY2tldCBhbmQgYXBwZW5kIGl0IHRvIHRoZQ0KPiA+ ICsJICogYnVyc3Qgb2YgcGFja2V0cyB0byBiZSB0cmFuc21pdHRlZC4NCj4gPiArCSAqLw0KPiA+ ICsJcGt0LT5uYl9zZWdzID0gbmJfc2VnczsNCj4gPiArCXBrdC0+cGt0X2xlbiArPSBwa3RfbGVu Ow0KPiA+ICsNCj4gPiArCXJldHVybiB0cnVlOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAvKg0KPiA+ ICAgKiBUcmFuc21pdCBhIGJ1cnN0IG9mIG11bHRpLXNlZ21lbnRzIHBhY2tldHMuDQo+ID4gICAq Lw0KPiA+IEBAIC0xNTUsOCArMjEwLDYgQEAgcGt0X2J1cnN0X3RyYW5zbWl0KHN0cnVjdCBmd2Rf c3RyZWFtICpmcykNCj4gPiAgew0KPiA+ICAJc3RydWN0IHJ0ZV9tYnVmICpwa3RzX2J1cnN0W01B WF9QS1RfQlVSU1RdOw0KPiA+ICAJc3RydWN0IHJ0ZV9wb3J0ICp0eHA7DQo+ID4gLQlzdHJ1Y3Qg cnRlX21idWYgKnBrdDsNCj4gPiAtCXN0cnVjdCBydGVfbWJ1ZiAqcGt0X3NlZzsNCj4gPiAgCXN0 cnVjdCBydGVfbWVtcG9vbCAqbWJwOw0KPiA+ICAJc3RydWN0IGV0aGVyX2hkciBldGhfaGRyOw0K PiA+ICAJdWludDE2X3QgbmJfdHg7DQo+ID4gQEAgLTE2NCwxNCArMjE3LDEyIEBAIHBrdF9idXJz dF90cmFuc21pdChzdHJ1Y3QgZndkX3N0cmVhbSAqZnMpDQo+ID4gIAl1aW50MTZfdCB2bGFuX3Rj aSwgdmxhbl90Y2lfb3V0ZXI7DQo+ID4gIAl1aW50MzJfdCByZXRyeTsNCj4gPiAgCXVpbnQ2NF90 IG9sX2ZsYWdzID0gMDsNCj4gPiAtCXVpbnQ4X3QgIGk7DQo+ID4gIAl1aW50NjRfdCB0eF9vZmZs b2FkczsNCj4gPiAgI2lmZGVmIFJURV9URVNUX1BNRF9SRUNPUkRfQ09SRV9DWUNMRVMNCj4gPiAg CXVpbnQ2NF90IHN0YXJ0X3RzYzsNCj4gPiAgCXVpbnQ2NF90IGVuZF90c2M7DQo+ID4gIAl1aW50 NjRfdCBjb3JlX2N5Y2xlczsNCj4gPiAgI2VuZGlmDQo+ID4gLQl1aW50MzJfdCBuYl9zZWdzLCBw a3RfbGVuOw0KPiA+ICANCj4gPiAgI2lmZGVmIFJURV9URVNUX1BNRF9SRUNPUkRfQ09SRV9DWUNM RVMNCj4gPiAgCXN0YXJ0X3RzYyA9IHJ0ZV9yZHRzYygpOw0KPiA+IEBAIC0xODgsNzIgKzIzOSwy NCBAQCBwa3RfYnVyc3RfdHJhbnNtaXQoc3RydWN0IGZ3ZF9zdHJlYW0gKmZzKQ0KPiA+ICAJCW9s X2ZsYWdzIHw9IFBLVF9UWF9RSU5RX1BLVDsNCj4gPiAgCWlmICh0eF9vZmZsb2FkcyAmIERFVl9U WF9PRkZMT0FEX01BQ1NFQ19JTlNFUlQpDQo+ID4gIAkJb2xfZmxhZ3MgfD0gUEtUX1RYX01BQ1NF QzsNCj4gPiAtCWZvciAobmJfcGt0ID0gMDsgbmJfcGt0IDwgbmJfcGt0X3Blcl9idXJzdDsgbmJf cGt0KyspIHsNCj4gPiAtCQlwa3QgPSBydGVfbWJ1Zl9yYXdfYWxsb2MobWJwKTsNCj4gPiAtCQlp ZiAocGt0ID09IE5VTEwpIHsNCj4gPiAtCQlub21vcmVfbWJ1ZjoNCj4gPiAtCQkJaWYgKG5iX3Br dCA9PSAwKQ0KPiA+IC0JCQkJcmV0dXJuOw0KPiA+IC0JCQlicmVhazsNCj4gPiAtCQl9DQo+ID4g IA0KPiA+IC0JCS8qDQo+ID4gLQkJICogVXNpbmcgcmF3IGFsbG9jIGlzIGdvb2QgdG8gaW1wcm92 ZSBwZXJmb3JtYW5jZSwNCj4gPiAtCQkgKiBidXQgc29tZSBjb25zdW1lcnMgbWF5IHVzZSB0aGUg aGVhZHJvb20gYW5kIHNvDQo+ID4gLQkJICogZGVjcmVtZW50IGRhdGFfb2ZmLiBXZSBuZWVkIHRv IG1ha2Ugc3VyZSBpdCBpcw0KPiA+IC0JCSAqIHJlc2V0IHRvIGRlZmF1bHQgdmFsdWUuDQo+ID4g LQkJICovDQo+ID4gLQkJcnRlX3BrdG1idWZfcmVzZXRfaGVhZHJvb20ocGt0KTsNCj4gPiAtCQlw a3QtPmRhdGFfbGVuID0gdHhfcGt0X3NlZ19sZW5ndGhzWzBdOw0KPiA+IC0JCXBrdF9zZWcgPSBw a3Q7DQo+ID4gLQkJaWYgKHR4X3BrdF9zcGxpdCA9PSBUWF9QS1RfU1BMSVRfUk5EKQ0KPiA+IC0J CQluYl9zZWdzID0gcmFuZG9tKCkgJSB0eF9wa3RfbmJfc2VncyArIDE7DQo+ID4gLQkJZWxzZQ0K PiA+IC0JCQluYl9zZWdzID0gdHhfcGt0X25iX3NlZ3M7DQo+ID4gLQkJcGt0X2xlbiA9IHBrdC0+ ZGF0YV9sZW47DQo+ID4gLQkJZm9yIChpID0gMTsgaSA8IG5iX3NlZ3M7IGkrKykgew0KPiA+IC0J CQlwa3Rfc2VnLT5uZXh0ID0gcnRlX21idWZfcmF3X2FsbG9jKG1icCk7DQo+ID4gLQkJCWlmIChw a3Rfc2VnLT5uZXh0ID09IE5VTEwpIHsNCj4gPiAtCQkJCXBrdC0+bmJfc2VncyA9IGk7DQo+ID4g LQkJCQlydGVfcGt0bWJ1Zl9mcmVlKHBrdCk7DQo+ID4gLQkJCQlnb3RvIG5vbW9yZV9tYnVmOw0K PiA+IC0JCQl9DQo+ID4gLQkJCXBrdF9zZWcgPSBwa3Rfc2VnLT5uZXh0Ow0KPiA+IC0JCQlwa3Rf c2VnLT5kYXRhX2xlbiA9IHR4X3BrdF9zZWdfbGVuZ3Roc1tpXTsNCj4gPiAtCQkJcGt0X2xlbiAr PSBwa3Rfc2VnLT5kYXRhX2xlbjsNCj4gPiAtCQl9DQo+ID4gLQkJcGt0X3NlZy0+bmV4dCA9IE5V TEw7IC8qIExhc3Qgc2VnbWVudCBvZiBwYWNrZXQuICovDQo+ID4gLQ0KPiA+IC0JCS8qDQo+ID4g LQkJICogSW5pdGlhbGl6ZSBFdGhlcm5ldCBoZWFkZXIuDQo+ID4gLQkJICovDQo+ID4gLQkJZXRo ZXJfYWRkcl9jb3B5KCZwZWVyX2V0aF9hZGRyc1tmcy0NCj4gPiA+cGVlcl9hZGRyXSwmZXRoX2hk ci5kX2FkZHIpOw0KPiA+IC0JCWV0aGVyX2FkZHJfY29weSgmcG9ydHNbZnMtPnR4X3BvcnRdLmV0 aF9hZGRyLA0KPiA+ICZldGhfaGRyLnNfYWRkcik7DQo+ID4gLQkJZXRoX2hkci5ldGhlcl90eXBl ID0gcnRlX2NwdV90b19iZV8xNihFVEhFUl9UWVBFX0lQdjQpOw0KPiA+IC0NCj4gPiAtCQkvKg0K PiA+IC0JCSAqIENvcHkgaGVhZGVycyBpbiBmaXJzdCBwYWNrZXQgc2VnbWVudChzKS4NCj4gPiAt CQkgKi8NCj4gPiAtCQljb3B5X2J1Zl90b19wa3QoJmV0aF9oZHIsIHNpemVvZihldGhfaGRyKSwg cGt0LCAwKTsNCj4gPiAtCQljb3B5X2J1Zl90b19wa3QoJnBrdF9pcF9oZHIsIHNpemVvZihwa3Rf aXBfaGRyKSwgcGt0LA0KPiA+IC0JCQkJc2l6ZW9mKHN0cnVjdCBldGhlcl9oZHIpKTsNCj4gPiAt CQljb3B5X2J1Zl90b19wa3QoJnBrdF91ZHBfaGRyLCBzaXplb2YocGt0X3VkcF9oZHIpLCBwa3Qs DQo+ID4gLQkJCQlzaXplb2Yoc3RydWN0IGV0aGVyX2hkcikgKw0KPiA+IC0JCQkJc2l6ZW9mKHN0 cnVjdCBpcHY0X2hkcikpOw0KPiA+IC0NCj4gPiAtCQkvKg0KPiA+IC0JCSAqIENvbXBsZXRlIGZp cnN0IG1idWYgb2YgcGFja2V0IGFuZCBhcHBlbmQgaXQgdG8gdGhlDQo+ID4gLQkJICogYnVyc3Qg b2YgcGFja2V0cyB0byBiZSB0cmFuc21pdHRlZC4NCj4gPiAtCQkgKi8NCj4gPiAtCQlwa3QtPm5i X3NlZ3MgPSBuYl9zZWdzOw0KPiA+IC0JCXBrdC0+cGt0X2xlbiA9IHBrdF9sZW47DQo+ID4gLQkJ cGt0LT5vbF9mbGFncyA9IG9sX2ZsYWdzOw0KPiA+IC0JCXBrdC0+dmxhbl90Y2kgPSB2bGFuX3Rj aTsNCj4gPiAtCQlwa3QtPnZsYW5fdGNpX291dGVyID0gdmxhbl90Y2lfb3V0ZXI7DQo+ID4gLQkJ cGt0LT5sMl9sZW4gPSBzaXplb2Yoc3RydWN0IGV0aGVyX2hkcik7DQo+ID4gLQkJcGt0LT5sM19s ZW4gPSBzaXplb2Yoc3RydWN0IGlwdjRfaGRyKTsNCj4gPiAtCQlwa3RzX2J1cnN0W25iX3BrdF0g PSBwa3Q7DQo+ID4gKwkvKg0KPiA+ICsJICogSW5pdGlhbGl6ZSBFdGhlcm5ldCBoZWFkZXIuDQo+ ID4gKwkgKi8NCj4gPiArCWV0aGVyX2FkZHJfY29weSgmcGVlcl9ldGhfYWRkcnNbZnMtPnBlZXJf YWRkcl0sDQo+ID4gJmV0aF9oZHIuZF9hZGRyKTsNCj4gPiArCWV0aGVyX2FkZHJfY29weSgmcG9y dHNbZnMtPnR4X3BvcnRdLmV0aF9hZGRyLCAmZXRoX2hkci5zX2FkZHIpOw0KPiA+ICsJZXRoX2hk ci5ldGhlcl90eXBlID0gcnRlX2NwdV90b19iZV8xNihFVEhFUl9UWVBFX0lQdjQpOw0KPiA+ICsN Cj4gPiArCWlmIChydGVfbWVtcG9vbF9nZXRfYnVsayhtYnAsICh2b2lkICoqKXBrdHNfYnVyc3Qs DQo+ID4gbmJfcGt0X3Blcl9idXJzdCkpDQo+ID4gKwkJcmV0dXJuOw0KPiAgDQo+IEJlZm9yZSB0 aGUgcGF0Y2ggdGhlIGNvZGUgc3Vydml2ZWQgaW5zdWZmaWNpZW50IG9mIG1idWZzIGNvbmRpdGlv bg0KPiBhbmQNCj4gc2VudCBhcyBtdWNoIGFzIGl0IGNhbiBhbGxvY2F0ZS4gTm93IGl0IGlzIG5v dC4gSSBjYW4ndCBzYXkgZm9yIHN1cmUNCj4gaWYgdGhlDQo+IG5ldyBiZWhhdmlvdXIgaXMgYWNj ZXB0YWJsZSBvciBub3QgKEknZCBzYXkgbm8pLCBidXQgZXZlbiBpZiBpdCBpcw0KPiBhY2NlcHRh YmxlDQo+IGl0IHNob3VsZCBiZSBoaWdobGlnaHRlZCBpbiB0aGUgY2hhbmdlc2V0IGRlc2NyaXB0 aW9uLg0KPiANCg0KQWNrLg0KDQo+IFRha2luZyBzZWdtZW50cyBhbGxvY2F0aW9uIGludG8gYWNj b3VudCBtYXkgSSBzdWdnZXN0IHRvIGNvbnNpZGVyDQo+IGEgYml0IHNvcGhpc3RpY2F0ZWQgaW1w bGVtZW50YXRpb24gd2hpY2ggYWxsb2NhdGVzIHBhY2tldHMgaW4gYnVsa3MNCj4gd2l0aCBmYWxs YmFjayB0byBpbmRpdmlkdWFsIG1idWZzIGFsbG9jYXRpb24gYW5kIHVzYWdlIG9mIHRoZQ0KPiBt ZWNoYW5pc20NCj4gZm9yIGFsbCBzZWdtZW50cyAoaS5lLiBhbGxvY2F0ZSBidWxrLCB1c2UgaXQs IGFsbG9jYXRlIG5leHQsIHVzZSBpdCwNCj4gZXRjKS4NCg0KSSB0aGluayBzZWdtZW50IGFsbG9j YXRpb24gY2FuIGFsd2F5cyB1c2UgYnVsayBhcyBmYWlsdXJlIHNob3VsZCBhbHdheXMNCmZyZWUg dGhlIGVudGlyZSBwYWNrZXQgY2hhaW4uIA0KSSB3aWxsIHNlbmQgdjIgd2l0aCBmYWxsYmFjayB0 byBpbmRpdmlkdWFsIG1idWYgYWxsb2NzLiANCg0KPiANCj4gPiArDQo+ID4gKwlmb3IgKG5iX3Br dCA9IDA7IG5iX3BrdCA8IG5iX3BrdF9wZXJfYnVyc3Q7IG5iX3BrdCsrKSB7DQo+ID4gKwkJaWYg KHVubGlrZWx5KCFwa3RfYnVyc3RfcHJlcGFyZShwa3RzX2J1cnN0W25iX3BrdF0sDQo+ID4gbWJw LA0KPiA+ICsJCQkJJmV0aF9oZHIsIHZsYW5fdGNpLCB2bGFuX3RjaV9vdXRlciwNCj4gPiBvbF9m bGFncykpKQ0KPiA+ICsJCQlnb3RvIHR4X3BrdHM7DQo+ICANCj4gSWYgc2VnbWVudCBhbGxvY2F0 aW9uIGZhaWxzLCB3aG8gZnJlZXMgcmVtYWluaW5nIHBhY2tldHMgZnJvbSB0aGUNCj4gYnVsaz8N Cg0KTXkgYmFkLiBUaGFua3MgZm9yIHRoZSBoZWFkcyB1cC4NCg0KPiANCj4gPiAgCX0NCj4gPiAr dHhfcGt0czoNCj4gPiArDQo+ID4gIAluYl90eCA9IHJ0ZV9ldGhfdHhfYnVyc3QoZnMtPnR4X3Bv cnQsIGZzLT50eF9xdWV1ZSwgcGt0c19idXJzdCwNCj4gPiBuYl9wa3QpOw0KPiA+ICAJLyoNCj4g PiAgCSAqIFJldHJ5IGlmIG5lY2Vzc2FyeQ0KPiAgDQo=