From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0068.outbound.protection.outlook.com [104.47.42.68]) by dpdk.org (Postfix) with ESMTP id CEB54282 for ; Wed, 10 May 2017 17:00:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=+QvlPTRWqw6LwYMvl4avaYDnhQTH/ythQpO4XVwM1Ok=; b=R0oriUJ8aTUUFB0ZcYA7IRIvMuZMUy9wEQaTbWSXI3EHcTD7r4M3SUcBuuRnGLxAkJPY2kizdDtr1uFN7pRpSYgHLP3jjNiH7LB3hakwXFafU0TcXuUJ1U+AriMVEHBsbekUEm3X3jiC0HqCeHY0gmOsHIUeFI+r9LSAK7tE8VA= Received: from BY2PR07MB2421.namprd07.prod.outlook.com (10.166.115.13) by BLUPR0701MB1716.namprd07.prod.outlook.com (10.163.85.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1075.11; Wed, 10 May 2017 15:00:22 +0000 Received: from BY2PR07MB2421.namprd07.prod.outlook.com ([10.166.115.13]) by BY2PR07MB2421.namprd07.prod.outlook.com ([10.166.115.13]) with mapi id 15.01.1084.017; Wed, 10 May 2017 15:00:19 +0000 From: "Sekhar, Ashwin" To: "tomasz.kantecki@intel.com" , "Jacob, Jerin" , "jianbo.liu@linaro.org" , "dev@dpdk.org" Thread-Topic: [PATCH v2 5/7] examples/l3fwd: add neon support for l3fwd Thread-Index: AQHSyTVuz3rRuXwAsEq5JDs4Y1JJAqHtqdqA Date: Wed, 10 May 2017 15:00:19 +0000 Message-ID: <1494428417.2713.55.camel@caviumnetworks.com> References: <1493709255-8887-1-git-send-email-jianbo.liu@linaro.org> <1494383419-9677-1-git-send-email-jianbo.liu@linaro.org> <1494383419-9677-6-git-send-email-jianbo.liu@linaro.org> In-Reply-To: <1494383419-9677-6-git-send-email-jianbo.liu@linaro.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=cavium.com; x-originating-ip: [111.93.218.67] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; BLUPR0701MB1716; 7:YG+vxCY9xdbpeLq/QFJ12KyK1k1wzj3SmkJkT8Xxxd3LpVzxPrRE2N/z0GdlIaTOkbAZEaRl8mUNwB2ZbgGAnGdvTDDFjba993RU11os6APjFOgptWGaQAoIEWj4uxxT3lmL6pAmUGMkJ6CQCo5ERaI0icqLxwI4UWqWFLA0/qp01nOeGGUtQ3QcJXdzyHrogvUtTMBUcUzjj3OB/N45uN8Et8TCONsyMaZWCyL85+2ohT1gnMmzb99p5kuph7qjXvWGKQrGIi0G40V57uo4eHyaco7B+E0FIQE7DBOj0fvmH2hX+AaOvcZdvWWG4eVjmmJbIB5GwgTunCHLm3HjHg== x-forefront-antispam-report: SFV:SKI; SCL:-1SFV:NSPM; SFS:(10009020)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(39850400002)(24454002)(377424004)(122556002)(6436002)(6246003)(478600001)(38730400002)(2201001)(189998001)(2501003)(72206003)(86362001)(575784001)(25786009)(6512007)(9686003)(36756003)(99286003)(6306002)(305945005)(53936002)(3280700002)(2906002)(8676002)(3846002)(102836003)(6116002)(103116003)(54356999)(76176999)(3660700001)(50986999)(6486002)(77096006)(2900100001)(66066001)(33646002)(8936002)(81166006)(5660300001)(229853002)(6506006)(2950100002)(32563001); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1716; H:BY2PR07MB2421.namprd07.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; x-ms-office365-filtering-correlation-id: 1573783b-df8b-48dd-4cb2-08d497b54679 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(201703131423075)(201703031133081)(201702281549075); SRVR:BLUPR0701MB1716; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(166708455590820)(192278398808882); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(6041248)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148); SRVR:BLUPR0701MB1716; BCL:0; PCL:0; RULEID:; SRVR:BLUPR0701MB1716; x-forefront-prvs: 03030B9493 spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-originalarrivaltime: 10 May 2017 15:00:19.2218 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1716 Subject: Re: [dpdk-dev] [PATCH v2 5/7] examples/l3fwd: add neon support for l3fwd 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: Wed, 10 May 2017 15:00:28 -0000 SGkgSmlhbmJvLA0KDQpUaGFua3MgZm9yIHZlcnNpb24gdjIuIEFkZGl0aW9uIG9mIHRoZSBwcmVm ZXRjaCBpbnN0cnVjdGlvbnMgaXMNCmRlZmluaXRlbHkgaGVscGluZyBwZXJmb3JtYW5jZSBvbiBU aHVuZGVyWC4gQnV0IHN0aWxsIHBlcmZvcm1hbmNlIGlzDQpzbGlnaHRseSBsZXNzIHRoYW4gdGhh dCBvZiBzY2FsYXIuDQoNCkkgdHJpZWQgZmV3IHNtYWxsIHR3ZWFrcyB3aGljaCBoZWxwZWQgaW1w cm92ZSBwZXJmb3JtYW5jZSBvbiBteQ0KVGh1bmRlcnggc2V0dXAuIEZvciBkZXRhaWxzIHNlZSBj b21tZW50cyBpbmxpbmUuDQoNCg0KT24gV2VkLCAyMDE3LTA1LTEwIGF0IDEwOjMwICswODAwLCBK aWFuYm8gTGl1IHdyb3RlOg0KPiBVc2UgQVJNIE5FT04gaW50cmluc2ljcyB0byBhY2NlbGVyYXRl IGwzIGZvd2FyZGluZy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEppYW5ibyBMaXUgPGppYW5iby5s aXVAbGluYXJvLm9yZz4NCj4gLS0tDQo+IMKgZXhhbXBsZXMvbDNmd2QvbDNmd2RfZW0uY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqA0ICstDQo+IMKgZXhhbXBsZXMvbDNmd2QvbDNmd2Rf ZW1faGxtLmjCoMKgwqDCoMKgwqDCoMKgfMKgwqAxOSArKy0NCj4gwqBleGFtcGxlcy9sM2Z3ZC9s M2Z3ZF9lbV9obG1fbmVvbi5owqDCoMKgfMKgwqA3NCArKysrKysrKysrDQo+IMKgZXhhbXBsZXMv bDNmd2QvbDNmd2RfZW1fc2VxdWVudGlhbC5oIHzCoMKgMjAgKystDQo+IMKgZXhhbXBsZXMvbDNm d2QvbDNmd2RfbHBtLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDQgKy0NCj4gwqBleGFt cGxlcy9sM2Z3ZC9sM2Z3ZF9scG1fbmVvbi5owqDCoMKgwqDCoMKgfCAxNjUgKysrKysrKysrKysr KysrKysrKysrKw0KPiDCoGV4YW1wbGVzL2wzZndkL2wzZndkX25lb24uaMKgwqDCoMKgwqDCoMKg wqDCoMKgfCAyNTkNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gwqA3 IGZpbGVzIGNoYW5nZWQsIDUzOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQ0KPiDCoGNy ZWF0ZSBtb2RlIDEwMDY0NCBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbV9obG1fbmVvbi5oDQo+IMKg Y3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL2wzZndkL2wzZndkX2xwbV9uZW9uLmgNCj4gwqBj cmVhdGUgbW9kZSAxMDA2NDQgZXhhbXBsZXMvbDNmd2QvbDNmd2RfbmVvbi5oDQo+IA0KPiBbLi4u XQ0KPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvbDNmd2QvbDNmd2RfZW1faGxtLmgNCj4gYi9leGFt cGxlcy9sM2Z3ZC9sM2Z3ZF9lbV9obG0uaA0KPiBpbmRleCA2MzZkZWE0Li40ZWM2MDBhIDEwMDY0 NA0KPiAtLS0gYS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbV9obG0uaA0KPiArKysgYi9leGFtcGxl cy9sM2Z3ZC9sM2Z3ZF9lbV9obG0uaA0KPiBAQCAtMzUsOCArMzUsMTMgQEANCj4gwqAjaWZuZGVm IF9fTDNGV0RfRU1fSExNX0hfXw0KPiDCoCNkZWZpbmUgX19MM0ZXRF9FTV9ITE1fSF9fDQo+IMKg DQo+ICsjaWYgZGVmaW5lZChfX1NTRTRfMV9fKQ0KPiDCoCNpbmNsdWRlICJsM2Z3ZF9zc2UuaCIN Cj4gwqAjaW5jbHVkZSAibDNmd2RfZW1faGxtX3NzZS5oIg0KPiArI2VsaWYgZGVmaW5lZChSVEVf TUFDSElORV9DUFVGTEFHX05FT04pDQo+ICsjaW5jbHVkZSAibDNmd2RfbmVvbi5oIg0KPiArI2lu Y2x1ZGUgImwzZndkX2VtX2hsbV9uZW9uLmgiDQo+ICsjZW5kaWYNCj4gwqANCj4gwqBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSB2b2lkDQo+IMKgZW1fZ2V0X2Rz dF9wb3J0X2lwdjR4OChzdHJ1Y3QgbGNvcmVfY29uZiAqcWNvbmYsIHN0cnVjdCBydGVfbWJ1Zg0K PiAqbVs4XSwNCj4gQEAgLTIzOCw3ICsyNDMsNyBAQCBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKGFsd2F5c19pbmxpbmUpKQ0KPiB1aW50MTZfdA0KPiDCoGwzZndkX2VtX3NlbmRfcGFja2V0 cyhpbnQgbmJfcngsIHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHNfYnVyc3QsDQo+IMKgCQl1aW50OF90 IHBvcnRpZCwgc3RydWN0IGxjb3JlX2NvbmYgKnFjb25mKQ0KPiDCoHsNCj4gLQlpbnQzMl90IGo7 DQo+ICsJaW50MzJfdCBpLCBqLCBwb3M7DQo+IMKgCXVpbnQxNl90IGRzdF9wb3J0W01BWF9QS1Rf QlVSU1RdOw0KPiDCoA0KPiDCoAkvKg0KPiBAQCAtMjQ3LDYgKzI1MiwxMiBAQCBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQ0KPiB1aW50MTZfdA0KPiDCoAnCoCov DQo+IMKgCWludDMyX3QgbiA9IFJURV9BTElHTl9GTE9PUihuYl9yeCwgOCk7DQo+IMKgDQo+ICsJ Zm9yIChqID0gMDsgaiA8IDggJiYgaiA8IG5iX3J4OyBqKyspIHsNCj4gKwkJcnRlX3ByZWZldGNo MChwa3RzX2J1cnN0W2pdKTsNClRoZSBhYm92ZSBwcmVmZXRjaCBvZiBydGVfbWJ1ZiBzdHJ1Y3Qg aXMgdW5uZWNlc3NhcnkuIFdpdGggdGhpcyB3ZSB3b250DQpzZWUgYW55IHBlcmZvcm1hbmNlIGlt cHJvdmVtZW50IGFzIHRoZSBjb250ZW50cyBvZiBydGVfbWJ1ZiAoYnVmX2FkZHINCmFuZCBkYXRh X29mZikgaXMgdXNlZCBpbiByaWdodCBuZXh0IGluc3RydWN0aW9uLiBSZW1vdmluZyB0aGUgYWJv dmUNCnByZWZldGNoIGFuZCBzaW1pbGFyIHByZWZldGNoZXMgYXQgbXVsdGlwbGUgcGxhY2VzIHdh cyBpbXByb3ZpbmcNCnBlcmZvcm1hbmNlIG9uIG15IFRodW5kZXJYIHNldHVwLg0KDQo+ICsJCXJ0 ZV9wcmVmZXRjaDAocnRlX3BrdG1idWZfbXRvZChwa3RzX2J1cnN0W2pdLA0KPiArCQkJCQnCoMKg wqDCoMKgwqDCoHN0cnVjdCBldGhlcl9oZHIgKikgKyANCj4gMSk7DQpCZXR0ZXIgdG8gcHJlZmV0 Y2ggYXQgZXRoX2hkciBpdHNlbGYgYW5kIG5vdCBhdCBldGhfaGRyICsgMS4gSW4NCnByb2Nlc3Nf cGFja2V0IGluwqBsM2Z3ZF9uZW9uLmgsIGV0aF9oZWFkZXIgaXMgYWNjZXNzZWQuDQoNCj4gKwl9 DQo+ICsNCj4gwqAJZm9yIChqID0gMDsgaiA8IG47IGogKz0gOCkgew0KPiDCoA0KPiDCoAkJdWlu dDMyX3QgcGt0X3R5cGUgPQ0KPiBAQCAtMjYzLDYgKzI3NCwxMiBAQCBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQ0KPiB1aW50MTZfdA0KPiDCoAkJdWludDMyX3Qg dGNwX29yX3VkcCA9IHBrdF90eXBlICYNCj4gwqAJCQkoUlRFX1BUWVBFX0w0X1RDUCB8IFJURV9Q VFlQRV9MNF9VRFApOw0KPiDCoA0KPiArCQlmb3IgKGkgPSAwLCBwb3MgPSBqICsgODsgaSA8IDgg JiYgcG9zIDwgbmJfcng7IGkrKywgDQo+IHBvcysrKSB7DQo+ICsJCQlydGVfcHJlZmV0Y2gwKHBr dHNfYnVyc3RbcG9zXSk7DQpUaGUgYWJvdmUgcHJlZmV0Y2ggb2YgcnRlX21idWYgc3RydWN0IGlz IHVubmVjZXNzYXJ5Lg0KDQo+ICsJCQlydGVfcHJlZmV0Y2gwKHJ0ZV9wa3RtYnVmX210b2QocGt0 c19idXJzdFtwbw0KPiBzXSwNCj4gKwkJCQkJCcKgwqDCoMKgwqDCoMKgc3RydWN0DQo+IGV0aGVy X2hkciAqKSArIDEpOw0KQmV0dGVyIHRvIHByZWZldGNoIGF0IGV0aF9oZHIgaXRzZWxmIGFuZCBu b3QgYXQgZXRoX2hkciArIDENCg0KPiArCQl9DQo+ICsNCj4gwqAJCWlmICh0Y3Bfb3JfdWRwICYm IChsM190eXBlID09IFJURV9QVFlQRV9MM19JUFY0KSkgew0KPiDCoA0KPiDCoAkJCWVtX2dldF9k c3RfcG9ydF9pcHY0eDgocWNvbmYsDQo+ICZwa3RzX2J1cnN0W2pdLCBwb3J0aWQsDQo+IA0KPiBb Li4uXQ0KDQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbV9zZXF1ZW50aWFs LmgNCj4gYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbV9zZXF1ZW50aWFsLmgNCj4gaW5kZXggYzBh OTcyNS4uYzNkZjQ3MyAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvbDNmd2QvbDNmd2RfZW1fc2Vx dWVudGlhbC5oDQo+ICsrKyBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2VtX3NlcXVlbnRpYWwuaA0K PiBAQCAtNDMsNyArNDMsMTEgQEANCj4gwqAgKiBjb21waWxhdGlvbiB0aW1lLg0KPiDCoCAqLw0K PiDCoA0KPiArI2lmIGRlZmluZWQoX19TU0U0XzFfXykNCj4gwqAjaW5jbHVkZSAibDNmd2Rfc3Nl LmgiDQo+ICsjZWxpZiBkZWZpbmVkKFJURV9NQUNISU5FX0NQVUZMQUdfTkVPTikNCj4gKyNpbmNs dWRlICJsM2Z3ZF9uZW9uLmgiDQo+ICsjZW5kaWYNCj4gwqANCj4gwqBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSB1aW50MTZfdA0KPiDCoGVtX2dldF9kc3RfcG9y dChjb25zdCBzdHJ1Y3QgbGNvcmVfY29uZiAqcWNvbmYsIHN0cnVjdCBydGVfbWJ1Zg0KPiAqcGt0 LA0KPiBAQCAtMTAxLDExICsxMDUsMjMgQEAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChh bHdheXNfaW5saW5lKSkNCj4gdWludDE2X3QNCj4gwqBsM2Z3ZF9lbV9zZW5kX3BhY2tldHMoaW50 IG5iX3J4LCBzdHJ1Y3QgcnRlX21idWYgKipwa3RzX2J1cnN0LA0KPiDCoAkJCXVpbnQ4X3QgcG9y dGlkLCBzdHJ1Y3QgbGNvcmVfY29uZiAqcWNvbmYpDQo+IMKgew0KPiAtCWludDMyX3QgajsNCj4g KwlpbnQzMl90IGksIGo7DQo+IMKgCXVpbnQxNl90IGRzdF9wb3J0W01BWF9QS1RfQlVSU1RdOw0K PiDCoA0KPiAtCWZvciAoaiA9IDA7IGogPCBuYl9yeDsgaisrKQ0KPiArCWlmIChuYl9yeCA+IDAp IHsNCj4gKwkJcnRlX3ByZWZldGNoMChwa3RzX2J1cnN0WzBdKTsNClRoZSBhYm92ZSBwcmVmZXRj aCBvZiBydGVfbWJ1ZiBzdHJ1Y3QgaXMgdW5uZWNlc3NhcnkuDQoNCj4gKwkJcnRlX3ByZWZldGNo MChydGVfcGt0bWJ1Zl9tdG9kKHBrdHNfYnVyc3RbMF0sDQo+ICsJCQkJCcKgwqDCoMKgwqDCoMKg c3RydWN0IGV0aGVyX2hkciAqKSArDQo+IDEpOw0KQmV0dGVyIHRvIHByZWZldGNoIGF0IGV0aF9o ZHIgaXRzZWxmIGFuZCBub3QgYXQgZXRoX2hkciArIDENCg0KPiArCX0NCj4gKw0KPiArCWZvciAo aSA9IDEsIGogPSAwOyBqIDwgbmJfcng7IGkrKywgaisrKSB7DQo+ICsJCWlmIChpIDwgbmJfcngp IHsNCj4gKwkJCXJ0ZV9wcmVmZXRjaDAocGt0c19idXJzdFtpXSk7DQpUaGUgYWJvdmUgcHJlZmV0 Y2ggb2YgcnRlX21idWYgc3RydWN0IGlzIHVubmVjZXNzYXJ5Lg0KDQo+ICsJCQlydGVfcHJlZmV0 Y2gwKHJ0ZV9wa3RtYnVmX210b2QocGt0c19idXJzdFtpXQ0KPiAsDQo+ICsJCQkJCQnCoMKgwqDC oMKgwqDCoHN0cnVjdA0KPiBldGhlcl9oZHIgKikgKyAxKTsNCkJldHRlciB0byBwcmVmZXRjaCBh dCBldGhfaGRyIGl0c2VsZiBhbmQgbm90IGF0IGV0aF9oZHIgKyAxDQoNCj4gKwkJfQ0KPiDCoAkJ ZHN0X3BvcnRbal0gPSBlbV9nZXRfZHN0X3BvcnQocWNvbmYsIHBrdHNfYnVyc3Rbal0sDQo+IHBv cnRpZCk7DQo+ICsJfQ0KPiDCoA0KPiDCoAlzZW5kX3BhY2tldHNfbXVsdGkocWNvbmYsIHBrdHNf YnVyc3QsIGRzdF9wb3J0LCBuYl9yeCk7DQo+IMKgfQ0KPiBbLi4uXQ0KDQo+IGRpZmYgLS1naXQg YS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9scG1fbmVvbi5oDQo+IGIvZXhhbXBsZXMvbDNmd2QvbDNm d2RfbHBtX25lb24uaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi4y ZjA0N2IzDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbHBt X25lb24uaA0KPiANCj4gWy4uLl0NCg0KPiArLyoNCj4gKyAqIEJ1ZmZlciBvcHRpbWl6ZWQgaGFu ZGxpbmcgb2YgcGFja2V0cywgaW52b2tlZA0KPiArICogZnJvbSBtYWluX2xvb3AuDQo+ICsgKi8N Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiArbDNmd2RfbHBtX3NlbmRfcGFja2V0cyhpbnQgbmJf cngsIHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHNfYnVyc3QsDQo+ICsJCQl1aW50OF90IHBvcnRpZCwg c3RydWN0IGxjb3JlX2NvbmYgKnFjb25mKQ0KPiArew0KPiArCWludDMyX3QgaSwgaiwgcG9zOw0K PiArCXVpbnQxNl90IGRzdF9wb3J0W01BWF9QS1RfQlVSU1RdOw0KPiArCWludDMyeDRfdCBkaXBb TUFYX1BLVF9CVVJTVCAvIEZXRFNURVBdOw0KSWYgeW91IHNlZSBjYXJlZnVsbHksIHdlIGRvbnQg bmVlZCBhbiBhcnJheSBvZiBkaXAuIFdlIGp1c3QgbmVlZCBhDQpzaW5nbGUgZWxlbWVudC4gZGlw IHZhbHVlIGlzIGNhbGN1bGF0ZWQgaW7CoHByb2Nlc3N4NF9zdGVwMSBhbmQgY29uc3VtZWQNCmlu wqBwcm9jZXNzeDRfc3RlcDIsIGFuZCB0aGF0cyBpdC4gTm8gbmVlZCB0byBzYXZlIGl0IGluIGFu IGFycmF5Lg0KDQo+ICsJdWludDMyX3QgaXB2NF9mbGFnW01BWF9QS1RfQlVSU1QgLyBGV0RTVEVQ XTsNClNhbWUgYXMgZGlwLiBXZSBkb250IG5lZWQgYW4gYXJyYXkgb2YgaXB2NF9mbGFnLg0KDQo+ ICsJY29uc3QgaW50MzJfdCBrID0gUlRFX0FMSUdOX0ZMT09SKG5iX3J4LCBGV0RTVEVQKTsNCj4g Kw0KPiArCWZvciAoaiA9IDA7IGogPCBGV0RTVEVQICYmIGogPCBuYl9yeDsgaisrKSB7DQo+ICsJ CXJ0ZV9wcmVmZXRjaDAocGt0c19idXJzdFtqXSk7DQpUaGUgYWJvdmUgcHJlZmV0Y2ggb2YgcnRl X21idWYgc3RydWN0IGlzIHVubmVjZXNzYXJ5Lg0KDQo+ICsJCXJ0ZV9wcmVmZXRjaDAocnRlX3Br dG1idWZfbXRvZChwa3RzX2J1cnN0W2pdLA0KPiArCQkJCQnCoMKgwqDCoMKgwqDCoHN0cnVjdCBl dGhlcl9oZHIgKikgKw0KPiAxKTsNCkJldHRlciB0byBwcmVmZXRjaCBhdCBldGhfaGRyIGl0c2Vs ZiBhbmQgbm90IGF0IGV0aF9oZHIgKyAxDQoNCj4gKwl9DQo+ICsNCj4gKwlmb3IgKGogPSAwOyBq ICE9IGs7IGogKz0gRldEU1RFUCkgew0KPiArCQlmb3IgKGkgPSAwLCBwb3MgPSBqICsgRldEU1RF UDsgaSA8IEZXRFNURVAgJiYgcG9zIDwNCj4gbmJfcng7DQo+ICsJCcKgwqDCoMKgwqBpKyssIHBv cysrKSB7DQo+ICsJCQlydGVfcHJlZmV0Y2gwKHBrdHNfYnVyc3RbcG9zXSk7DQpUaGUgYWJvdmUg cHJlZmV0Y2ggb2YgcnRlX21idWYgc3RydWN0IGlzIHVubmVjZXNzYXJ5Lg0KDQo+ICsJCQlydGVf cHJlZmV0Y2gwKHJ0ZV9wa3RtYnVmX210b2QocGt0c19idXJzdFtwbw0KPiBzXSwNCj4gKwkJCQkJ CcKgwqDCoMKgwqDCoMKgc3RydWN0DQo+IGV0aGVyX2hkciAqKSArIDEpOw0KQmV0dGVyIHRvIHBy ZWZldGNoIGF0IGV0aF9oZHIgaXRzZWxmIGFuZCBub3QgYXQgZXRoX2hkciArIDENCg0KPiArCQl9 DQo+ICsJCXByb2Nlc3N4NF9zdGVwMSgmcGt0c19idXJzdFtqXSwgJmRpcFtqIC8gRldEU1RFUF0s DQo+ICsJCQkJJmlwdjRfZmxhZ1tqIC8gRldEU1RFUF0pOw0KPiArDQo+ICsJCXByb2Nlc3N4NF9z dGVwMihxY29uZiwgZGlwW2ogLyBGV0RTVEVQXSwNCj4gKwkJCQlpcHY0X2ZsYWdbaiAvIEZXRFNU RVBdLCBwb3J0aWQsDQo+ICZwa3RzX2J1cnN0W2pdLA0KPiArCQkJCSZkc3RfcG9ydFtqXSk7DQo+ ICsJfQ0KPiArDQo+ICsJLyogQ2xhc3NpZnkgbGFzdCB1cCB0byAzIHBhY2tldHMgb25lIGJ5IG9u ZSAqLw0KPiArCXN3aXRjaCAobmJfcnggJSBGV0RTVEVQKSB7DQo+ICsJY2FzZSAzOg0KPiArCQlk c3RfcG9ydFtqXSA9IGxwbV9nZXRfZHN0X3BvcnQocWNvbmYsIHBrdHNfYnVyc3Rbal0sDQo+IHBv cnRpZCk7DQo+ICsJCWorKzsNCj4gKwkJLyogZmFsbHRocm91Z2ggKi8NCj4gKwljYXNlIDI6DQo+ ICsJCWRzdF9wb3J0W2pdID0gbHBtX2dldF9kc3RfcG9ydChxY29uZiwgcGt0c19idXJzdFtqXSwN Cj4gcG9ydGlkKTsNCj4gKwkJaisrOw0KPiArCQkvKiBmYWxsdGhyb3VnaCAqLw0KPiArCWNhc2Ug MToNCj4gKwkJZHN0X3BvcnRbal0gPSBscG1fZ2V0X2RzdF9wb3J0KHFjb25mLCBwa3RzX2J1cnN0 W2pdLA0KPiBwb3J0aWQpOw0KPiArCQlqKys7DQo+ICsJfQ0KPiArDQo+ICsJc2VuZF9wYWNrZXRz X211bHRpKHFjb25mLCBwa3RzX2J1cnN0LCBkc3RfcG9ydCwgbmJfcngpOw0KPiArfQ0KPiArDQo+ ICsjZW5kaWYgLyogX19MM0ZXRF9MUE1fTkVPTl9IX18gKi8NCj4gZGlmZiAtLWdpdCBhL2V4YW1w bGVzL2wzZndkL2wzZndkX25lb24uaA0KPiBiL2V4YW1wbGVzL2wzZndkL2wzZndkX25lb24uaA0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi43NWM4OTc2DQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbmVvbi5oDQo+IFsuLi5dDQoN Cj4gKw0KPiArLyoqDQo+ICsgKiBQcm9jZXNzIG9uZSBwYWNrZXQ6DQo+ICsgKiBVcGRhdGUgc291 cmNlIGFuZCBkZXN0aW5hdGlvbiBNQUMgYWRkcmVzc2VzIGluIHRoZSBldGhlcm5ldA0KPiBoZWFk ZXIuDQo+ICsgKiBQZXJmb3JtIFJGQzE4MTIgY2hlY2tzIGFuZCB1cGRhdGVzIGZvciBJUFY0IHBh Y2tldHMuDQo+ICsgKi8NCj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiArcHJvY2Vzc19wYWNrZXQo c3RydWN0IHJ0ZV9tYnVmICpwa3QsIHVpbnQxNl90ICpkc3RfcG9ydCkNCj4gK3sNCj4gKwlzdHJ1 Y3QgZXRoZXJfaGRyICpldGhfaGRyOw0KPiArCXVpbnQzMng0X3QgdGUsIHZlOw0KPiArDQo+ICsJ ZXRoX2hkciA9IHJ0ZV9wa3RtYnVmX210b2QocGt0LCBzdHJ1Y3QgZXRoZXJfaGRyICopOw0KZXRo X2hkciBhY2Nlc3NlZCBoZXJlLiBIZW5jZSB0aGUgZWFybGllciBjb21tZW50cyBhYm91dCBwcmVm ZXRjaGluZyBhdA0KZXRoIGhlYWRlci4NCg0KPiArDQo+ICsJdGUgPSB2bGQxcV91MzIoKHVpbnQz Ml90ICopZXRoX2hkcik7DQo+ICsJdmUgPSB2cmVpbnRlcnByZXRxX3UzMl9zMzIodmFsX2V0aFtk c3RfcG9ydFswXV0pOw0KPiArDQo+ICsNCj4gKwlyZmMxODEyX3Byb2Nlc3MoKHN0cnVjdCBpcHY0 X2hkciAqKShldGhfaGRyICsgMSksIGRzdF9wb3J0LA0KPiArCQkJcGt0LT5wYWNrZXRfdHlwZSk7 DQo+ICsNCj4gKwl2ZSA9IHZzZXRxX2xhbmVfdTMyKHZnZXRxX2xhbmVfdTMyKHRlLCAzKSwgdmUs IDMpOw0KVXNlwqB2Y29weXFfbGFuZXFfdTMyIGZvciBlYXNpbHkgZG9pbmcgdGhlIGFib3ZlLg0K DQo+ICsJdnN0MXFfdTMyKCh1aW50MzJfdCAqKWV0aF9oZHIsIHZlKTsNCj4gK30NCj4gKw0KPiBb Li4uXQ0KPiArI2VuZGlmIC8qIF9MM0ZXRF9ORU9OX0hfICovDQoNCkNvbWJpbmluZyBhbGwgdGhl IGFib3ZlIGNvbW1lbnRzLCBJIG1hZGUgc29tZSBjaGFuZ2VzIG9uIHRvcCBvZiB5b3VyDQpwYXRj aC4gVGhlc2UgY2hhbmdlcyBhcmUgZ2l2aW5nIDMtNCUgaW1wcm92ZW1lbnQgb3ZlciB5b3VyIHZl cnNpb24uDQoNCllvdSBtYXkgZmluZCB0aGUgY2hhbmdlcyBhdA0KaHR0cHM6Ly9naXN0LmdpdGh1 Yi5jb20vYXNod2lueWVzLzM0Y2JkZDk5OTc4NDQwMmM4NTljNzE2MTM1ODdmYWZjDQoNClBsZWFz ZSBjaGVjayBpdCBvdXQgYW5kIGxldCBtZSBrbm93IHlvdXIgY29tbWVudHMuDQoNClRoYW5rcw0K QXNod2lu