From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ola Liljedahl Subject: Re: [PATCH v4 1/5] ring: add 64-bit headtail structure Date: Tue, 29 Jan 2019 12:56:50 +0000 Message-ID: <1548766621.3135.26.camel@arm.com> References: <20190118152326.22686-1-gage.eads@intel.com> <20190128181407.32739-1-gage.eads@intel.com> <20190128181407.32739-2-gage.eads@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "jerinj@marvell.com" , "mczekaj@marvell.com" , nd , "bruce.richardson@intel.com" , "konstantin.ananyev@intel.com" , "stephen@networkplumber.org" , "olivier.matz@6wind.com" , "arybchenko@solarflare.com" To: "gage.eads@intel.com" , "dev@dpdk.org" Return-path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50079.outbound.protection.outlook.com [40.107.5.79]) by dpdk.org (Postfix) with ESMTP id 789441B129 for ; Tue, 29 Jan 2019 13:56:53 +0100 (CET) In-Reply-To: <20190128181407.32739-2-gage.eads@intel.com> Content-Language: en-US Content-ID: <11E254F58C00A1479A7B447797D86037@eurprd08.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" T24gTW9uLCAyMDE5LTAxLTI4IGF0IDEyOjE0IC0wNjAwLCBHYWdlIEVhZHMgd3JvdGU6DQo+IDY0 LWJpdCBoZWFkIGFuZCB0YWlsIGluZGV4IHdpZHRocyBncmVhdGx5IGluY3JlYXNlcyB0aGUgdGlt ZSBpdCB0YWtlcyBmb3INCj4gdGhlbSB0byB3cmFwLWFyb3VuZCAod2l0aCBjdXJyZW50IENQVSBz cGVlZHMsIGl0IHdvbid0IGhhcHBlbiB3aXRoaW4gdGhlDQo+IGF1dGhvcidzIGxpZmV0aW1lKS4g VGhpcyBpcyBmdW5kYW1lbnRhbCB0byBhdm9pZGluZyB0aGUgQUJBIHByb2JsZW0gLS0gaW4NCj4g d2hpY2ggYSB0aHJlYWQgbWlzdGFrZXMgcmVhZGluZyB0aGUgc2FtZSB0YWlsIGluZGV4IGluIHR3 byBhY2Nlc3NlcyB0byBtZWFuDQo+IHRoYXQgdGhlIHJpbmcgd2FzIG5vdCBtb2RpZmllZCBpbiB0 aGUgaW50ZXJ2ZW5pbmcgdGltZSAtLSBpbiB0aGUgdXBjb21pbmcNCj4gbm9uLWJsb2NraW5nIHJp bmcgaW1wbGVtZW50YXRpb24uIFVzaW5nIGEgNjQtYml0IGluZGV4IG1ha2VzIHRoZQ0KPiBwb3Nz aWJpbGl0eSBvZiB0aGlzIG9jY3VycmluZyBlZmZlY3RpdmVseSB6ZXJvLg0KSnVzdCBhbiBvYnNl cnZhdGlvbi4NClRoZSBmb2xsb3dpbmcgaW52YXJpYW50IGhvbGRzICh1c2luZyByaW5nX3NpemUg aW5zdGVhZCBvZiBtYXNrKToNCuKIgCBpbmRleDogcmluZ1tpbmRleCAlIHJpbmdfc2l6ZV0uaW5k ZXggJSByaW5nX3NpemUgPT0gaW5kZXggJSByaW5nX3NpemUNCmkuZS4gdGhlIE4gKE49bG9nMiBy aW5nIHNpemUpIGxzYiBvZiByaW5nW10uaW5kZXggd2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgKGZv ciBhDQpzcGVjaWZpYyBzbG90KSBzbyBzZXJ2ZSBubyBwdXJwb3NlLg0KDQpUaGlzIG1lYW5zIHdl IGRvbid0IGhhdmUgdG8gc3RvcmUgdGhlIHdob2xlIGluZGV4IGluIGVhY2ggc2xvdCwgaXQgaXMg ZW5vdWdoIHRvDQpzdG9yZSAiaW5kZXggLyByaW5nX3NpemUiICh3aGljaCBJIGNhbGwgdGhlIGxh cCBjb3VudGVyKS4gVGhpcyBjb3VsZCBiZSB1c2VmdWwNCmZvciBhbiBpbXBsZW1lbnRhdGlvbiBm b3IgMzItYml0IHBsYXRmb3JtcyB3aGljaCBzdXBwb3J0IDY0LWJpdCBDQVMgKHRvIHdyaXRlDQp0 aGUgc2xvdCBwdHIgJiBpbmRleCAobGFwIGNvdW50ZXIpIGF0b21pY2FsbHkpIGFuZCB1c2VzIDY0 LWJpdCBoZWFkICYgdGFpbA0KaW5kZXhlcyAodG8gYXZvaWQgdGhlIHF1aWNrIHdyYXAgYXJvdW5k IHlvdSB3b3VsZCBoYXZlIHdpdGggMzItYml0IHJpbmcNCmluZGV4ZXMpLg0KDQpTbw0KcmluZ1tp bmRleCAlIHJpbmdfc2l6ZV0ubGFwID0gaW5kZXggLyByaW5nX3NpemU7DQoNCkFuIGltcGxlbWVu dGF0aW9uIGNvdWxkIG9mIGNvdXJzZSB1c2UgYml0d2lzZS1hbmQgaW5zdGVhZCBvZiBtb2R1bG8g YW5kIGJpdHdpc2UtDQpyaWdodCBzaGlmdCBpbnN0ZWFkIG9mIGRpdmlzaW9uLiBUaGUgMi1sb2dh cml0bSBvZiByaW5nX3NpemUgc2hvdWxkIGFsc28gYmUgcHJlLQ0KY2FsY3VjYXRlZCBhbmQgc3Rv cmVkIGluIHRoZSByaW5nIGJ1ZmZlciBtZXRhZGF0YS4NCg0KLS0gT2xhDQoNCj4gDQo+IFRoaXMg Y29tbWl0IHBsYWNlcyB0aGUgbmV3IHByb2R1Y2VyIGFuZCBjb25zdW1lciBzdHJ1Y3R1cmVzIGlu IHRoZSBzYW1lDQo+IGxvY2F0aW9uIGluIHN0cnVjdCBydGVfcmluZyBhcyB0aGVpciAzMi1iaXQg Y291bnRlcnBhcnRzLiBTaW5jZSB0aGUgMzItYml0DQo+IHZlcnNpb25zIGFyZSBwYWRkZWQgb3V0 IHRvIGEgY2FjaGUgbGluZSwgdGhlcmUgaXMgc3BhY2UgZm9yIHRoZSBuZXcNCj4gc3RydWN0dXJl IHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBsYXlvdXQgb2Ygc3RydWN0IHJ0ZV9yaW5nLiBUaHVzLCB0 aGUgQUJJIGlzDQo+IHByZXNlcnZlZC4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEdhZ2UgRWFkcyA8 Z2FnZS5lYWRzQGludGVsLmNvbT4NCj4gLS0tDQo+IMKgbGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5n LmjCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDIzICsrKysrLQ0KPiDCoGxpYi9saWJydGVfcmluZy9y dGVfcmluZ19jMTFfbWVtLmggfCAxNTMNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKw0KPiDCoGxpYi9saWJydGVfcmluZy9ydGVfcmluZ19nZW5lcmljLmggfCAxMzkgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+IMKgMyBmaWxlcyBjaGFuZ2VkLCAzMTIg aW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9saWIvbGli cnRlX3JpbmcvcnRlX3JpbmcuaCBiL2xpYi9saWJydGVfcmluZy9ydGVfcmluZy5oDQo+IGluZGV4 IGFmNTQ0NGE5Zi4uMDBkZmI1Yjg1IDEwMDY0NA0KPiAtLS0gYS9saWIvbGlicnRlX3JpbmcvcnRl X3JpbmcuaA0KPiArKysgYi9saWIvbGlicnRlX3JpbmcvcnRlX3JpbmcuaA0KPiBAQCAtMSw2ICsx LDYgQEANCj4gwqAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+IMKg ICoNCj4gLSAqIENvcHlyaWdodCAoYykgMjAxMC0yMDE3IEludGVsIENvcnBvcmF0aW9uDQo+ICsg KiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbg0KPiDCoCAqIENvcHly aWdodCAoYykgMjAwNy0yMDA5IEtpcCBNYWN5IGttYWN5QGZyZWVic2Qub3JnDQo+IMKgICogQWxs IHJpZ2h0cyByZXNlcnZlZC4NCj4gwqAgKiBEZXJpdmVkIGZyb20gRnJlZUJTRCdzIGJ1ZnJpbmcu aA0KPiBAQCAtNzAsNiArNzAsMTUgQEAgc3RydWN0IHJ0ZV9yaW5nX2hlYWR0YWlsIHsNCj4gwqAJ dWludDMyX3Qgc2luZ2xlO8KgwqDCoMKgwqDCoMKgwqDCoC8qKjwgVHJ1ZSBpZiBzaW5nbGUgcHJv ZC9jb25zICovDQo+IMKgfTsNCj4gwqANCj4gKy8qIDY0LWJpdCB2ZXJzaW9uIG9mIHJ0ZV9yaW5n X2hlYWR0YWlsLCBmb3IgdXNlIGJ5IHJpbmdzIHRoYXQgbmVlZCB0byBhdm9pZA0KPiArICogaGVh ZC90YWlsIHdyYXAtYXJvdW5kLg0KPiArICovDQo+ICtzdHJ1Y3QgcnRlX3JpbmdfaGVhZHRhaWxf NjQgew0KPiArCXZvbGF0aWxlIHVpbnQ2NF90IGhlYWQ7wqDCoC8qKjwgUHJvZC9jb25zdW1lciBo ZWFkLiAqLw0KPiArCXZvbGF0aWxlIHVpbnQ2NF90IHRhaWw7wqDCoC8qKjwgUHJvZC9jb25zdW1l ciB0YWlsLiAqLw0KPiArCXVpbnQzMl90IHNpbmdsZTvCoMKgwqDCoMKgwqDCoC8qKjwgVHJ1ZSBp ZiBzaW5nbGUgcHJvZC9jb25zICovDQo+ICt9Ow0KPiArDQo+IMKgLyoqDQo+IMKgICogQW4gUlRF IHJpbmcgc3RydWN0dXJlLg0KPiDCoCAqDQo+IEBAIC05NywxMSArMTA2LDE5IEBAIHN0cnVjdCBy dGVfcmluZyB7DQo+IMKgCWNoYXIgcGFkMCBfX3J0ZV9jYWNoZV9hbGlnbmVkOyAvKio8IGVtcHR5 IGNhY2hlIGxpbmUgKi8NCj4gwqANCj4gwqAJLyoqIFJpbmcgcHJvZHVjZXIgc3RhdHVzLiAqLw0K PiAtCXN0cnVjdCBydGVfcmluZ19oZWFkdGFpbCBwcm9kIF9fcnRlX2NhY2hlX2FsaWduZWQ7DQo+ ICsJUlRFX1NURF9DMTENCj4gKwl1bmlvbiB7DQo+ICsJCXN0cnVjdCBydGVfcmluZ19oZWFkdGFp bCBwcm9kIF9fcnRlX2NhY2hlX2FsaWduZWQ7DQo+ICsJCXN0cnVjdCBydGVfcmluZ19oZWFkdGFp bF82NCBwcm9kXzY0IF9fcnRlX2NhY2hlX2FsaWduZWQ7DQo+ICsJfTsNCj4gwqAJY2hhciBwYWQx IF9fcnRlX2NhY2hlX2FsaWduZWQ7IC8qKjwgZW1wdHkgY2FjaGUgbGluZSAqLw0KPiDCoA0KPiDC oAkvKiogUmluZyBjb25zdW1lciBzdGF0dXMuICovDQo+IC0Jc3RydWN0IHJ0ZV9yaW5nX2hlYWR0 YWlsIGNvbnMgX19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gKwlSVEVfU1REX0MxMQ0KPiArCXVuaW9u IHsNCj4gKwkJc3RydWN0IHJ0ZV9yaW5nX2hlYWR0YWlsIGNvbnMgX19ydGVfY2FjaGVfYWxpZ25l ZDsNCj4gKwkJc3RydWN0IHJ0ZV9yaW5nX2hlYWR0YWlsXzY0IGNvbnNfNjQgX19ydGVfY2FjaGVf YWxpZ25lZDsNCj4gKwl9Ow0KPiDCoAljaGFyIHBhZDIgX19ydGVfY2FjaGVfYWxpZ25lZDsgLyoq PCBlbXB0eSBjYWNoZSBsaW5lICovDQo+IMKgfTsNCj4gwqANCj4gZGlmZiAtLWdpdCBhL2xpYi9s aWJydGVfcmluZy9ydGVfcmluZ19jMTFfbWVtLmgNCj4gYi9saWIvbGlicnRlX3JpbmcvcnRlX3Jp bmdfYzExX21lbS5oDQo+IGluZGV4IDBmYjczYTMzNy4uNDdhY2Q0YzdjIDEwMDY0NA0KPiAtLS0g YS9saWIvbGlicnRlX3JpbmcvcnRlX3JpbmdfYzExX21lbS5oDQo+ICsrKyBiL2xpYi9saWJydGVf cmluZy9ydGVfcmluZ19jMTFfbWVtLmgNCj4gQEAgLTE3OCw0ICsxNzgsMTU3IEBAIF9fcnRlX3Jp bmdfbW92ZV9jb25zX2hlYWQoc3RydWN0IHJ0ZV9yaW5nICpyLCBpbnQgaXNfc2MsDQo+IMKgCXJl dHVybiBuOw0KPiDCoH0NCj4gwqANCj4gKy8qKg0KPiArICogQGludGVybmFsIFRoaXMgZnVuY3Rp b24gdXBkYXRlcyB0aGUgcHJvZHVjZXIgaGVhZCBmb3IgZW5xdWV1ZSB1c2luZw0KPiArICoJwqDC oMKgwqDCoDY0LWJpdCBoZWFkL3RhaWwgdmFsdWVzLg0KPiArICoNCj4gKyAqIEBwYXJhbSByDQo+ ICsgKsKgwqDCoEEgcG9pbnRlciB0byB0aGUgcmluZyBzdHJ1Y3R1cmUNCj4gKyAqIEBwYXJhbSBp c19zcA0KPiArICrCoMKgwqBJbmRpY2F0ZXMgd2hldGhlciBtdWx0aS1wcm9kdWNlciBwYXRoIGlz IG5lZWRlZCBvciBub3QNCj4gKyAqIEBwYXJhbSBuDQo+ICsgKsKgwqDCoFRoZSBudW1iZXIgb2Yg ZWxlbWVudHMgd2Ugd2lsbCB3YW50IHRvIGVucXVldWUsIGkuZS4gaG93IGZhciBzaG91bGQgdGhl DQo+ICsgKsKgwqDCoGhlYWQgYmUgbW92ZWQNCj4gKyAqIEBwYXJhbSBiZWhhdmlvcg0KPiArICrC oMKgwqBSVEVfUklOR19RVUVVRV9GSVhFRDrCoMKgwqDCoEVucXVldWUgYSBmaXhlZCBudW1iZXIg b2YgaXRlbXMgZnJvbSBhIHJpbmcNCj4gKyAqwqDCoMKgUlRFX1JJTkdfUVVFVUVfVkFSSUFCTEU6 IEVucXVldWUgYXMgbWFueSBpdGVtcyBhcyBwb3NzaWJsZSBmcm9tIHJpbmcNCj4gKyAqIEBwYXJh bSBvbGRfaGVhZA0KPiArICrCoMKgwqBSZXR1cm5zIGhlYWQgdmFsdWUgYXMgaXQgd2FzIGJlZm9y ZSB0aGUgbW92ZSwgaS5lLiB3aGVyZSBlbnF1ZXVlIHN0YXJ0cw0KPiArICogQHBhcmFtIG5ld19o ZWFkDQo+ICsgKsKgwqDCoFJldHVybnMgdGhlIGN1cnJlbnQvbmV3IGhlYWQgdmFsdWUgaS5lLiB3 aGVyZSBlbnF1ZXVlIGZpbmlzaGVzDQo+ICsgKiBAcGFyYW0gZnJlZV9lbnRyaWVzDQo+ICsgKsKg wqDCoFJldHVybnMgdGhlIGFtb3VudCBvZiBmcmVlIHNwYWNlIGluIHRoZSByaW5nIEJFRk9SRSBo ZWFkIHdhcyBtb3ZlZA0KPiArICogQHJldHVybg0KPiArICrCoMKgwqBBY3R1YWwgbnVtYmVyIG9m IG9iamVjdHMgZW5xdWV1ZWQuDQo+ICsgKsKgwqDCoElmIGJlaGF2aW9yID09IFJURV9SSU5HX1FV RVVFX0ZJWEVELCB0aGlzIHdpbGwgYmUgMCBvciBuIG9ubHkuDQo+ICsgKi8NCj4gK3N0YXRpYyBf X3J0ZV9hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludA0KPiArX19ydGVfcmluZ19tb3ZlX3Byb2Rf aGVhZF82NChzdHJ1Y3QgcnRlX3JpbmcgKnIsIHVuc2lnbmVkIGludCBpc19zcCwNCj4gKwkJdW5z aWduZWQgaW50IG4sIGVudW0gcnRlX3JpbmdfcXVldWVfYmVoYXZpb3IgYmVoYXZpb3IsDQo+ICsJ CXVpbnQ2NF90ICpvbGRfaGVhZCwgdWludDY0X3QgKm5ld19oZWFkLA0KPiArCQl1aW50MzJfdCAq ZnJlZV9lbnRyaWVzKQ0KPiArew0KPiArCWNvbnN0IHVpbnQzMl90IGNhcGFjaXR5ID0gci0+Y2Fw YWNpdHk7DQo+ICsJdWludDY0X3QgY29uc190YWlsOw0KPiArCXVuc2lnbmVkIGludCBtYXggPSBu Ow0KPiArCWludCBzdWNjZXNzOw0KPiArDQo+ICsJKm9sZF9oZWFkID0gX19hdG9taWNfbG9hZF9u KCZyLT5wcm9kXzY0LmhlYWQsIF9fQVRPTUlDX1JFTEFYRUQpOw0KPiArCWRvIHsNCj4gKwkJLyog UmVzZXQgbiB0byB0aGUgaW5pdGlhbCBidXJzdCBjb3VudCAqLw0KPiArCQluID0gbWF4Ow0KPiAr DQo+ICsJCS8qIEVuc3VyZSB0aGUgaGVhZCBpcyByZWFkIGJlZm9yZSB0YWlsICovDQo+ICsJCV9f YXRvbWljX3RocmVhZF9mZW5jZShfX0FUT01JQ19BQ1FVSVJFKTsNCj4gKw0KPiArCQkvKiBsb2Fk LWFjcXVpcmUgc3luY2hyb25pemUgd2l0aCBzdG9yZS1yZWxlYXNlIG9mIGh0LT50YWlsDQo+ICsJ CcKgKiBpbiB1cGRhdGVfdGFpbC4NCj4gKwkJwqAqLw0KPiArCQljb25zX3RhaWwgPSBfX2F0b21p Y19sb2FkX24oJnItPmNvbnNfNjQudGFpbCwNCj4gKwkJCQkJX19BVE9NSUNfQUNRVUlSRSk7DQo+ ICsNCj4gKwkJLyogVGhlIHN1YnRyYWN0aW9uIGlzIGRvbmUgYmV0d2VlbiB0d28gdW5zaWduZWQg MzJiaXRzIHZhbHVlDQo+ICsJCcKgKiAodGhlIHJlc3VsdCBpcyBhbHdheXMgbW9kdWxvIDMyIGJp dHMgZXZlbiBpZiB3ZSBoYXZlDQo+ICsJCcKgKiAqb2xkX2hlYWQgPiBjb25zX3RhaWwpLiBTbyAn ZnJlZV9lbnRyaWVzJyBpcyBhbHdheXMNCj4gYmV0d2VlbiAwDQo+ICsJCcKgKiBhbmQgY2FwYWNp dHkgKHdoaWNoIGlzIDwgc2l6ZSkuDQo+ICsJCcKgKi8NCj4gKwkJKmZyZWVfZW50cmllcyA9IChj YXBhY2l0eSArIGNvbnNfdGFpbCAtICpvbGRfaGVhZCk7DQo+ICsNCj4gKwkJLyogY2hlY2sgdGhh dCB3ZSBoYXZlIGVub3VnaCByb29tIGluIHJpbmcgKi8NCj4gKwkJaWYgKHVubGlrZWx5KG4gPiAq ZnJlZV9lbnRyaWVzKSkNCj4gKwkJCW4gPSAoYmVoYXZpb3IgPT0gUlRFX1JJTkdfUVVFVUVfRklY RUQpID8NCj4gKwkJCQkJMCA6ICpmcmVlX2VudHJpZXM7DQo+ICsNCj4gKwkJaWYgKG4gPT0gMCkN Cj4gKwkJCXJldHVybiAwOw0KPiArDQo+ICsJCSpuZXdfaGVhZCA9ICpvbGRfaGVhZCArIG47DQo+ ICsJCWlmIChpc19zcCkNCj4gKwkJCXItPnByb2RfNjQuaGVhZCA9ICpuZXdfaGVhZCwgc3VjY2Vz cyA9IDE7DQo+ICsJCWVsc2UNCj4gKwkJCS8qIG9uIGZhaWx1cmUsICpvbGRfaGVhZCBpcyB1cGRh dGVkICovDQo+ICsJCQlzdWNjZXNzID0gX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKCZyLQ0K PiA+cHJvZF82NC5oZWFkLA0KPiArCQkJCQlvbGRfaGVhZCwgKm5ld19oZWFkLA0KPiArCQkJCQkw LCBfX0FUT01JQ19SRUxBWEVELA0KPiArCQkJCQlfX0FUT01JQ19SRUxBWEVEKTsNCj4gKwl9IHdo aWxlICh1bmxpa2VseShzdWNjZXNzID09IDApKTsNCj4gKwlyZXR1cm4gbjsNCj4gK30NCj4gKw0K PiArLyoqDQo+ICsgKiBAaW50ZXJuYWwgVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBjb25zdW1l ciBoZWFkIGZvciBkZXF1ZXVlIHVzaW5nDQo+ICsgKgnCoMKgwqDCoMKgNjQtYml0IGhlYWQvdGFp bCB2YWx1ZXMuDQo+ICsgKg0KPiArICogQHBhcmFtIHINCj4gKyAqwqDCoMKgQSBwb2ludGVyIHRv IHRoZSByaW5nIHN0cnVjdHVyZQ0KPiArICogQHBhcmFtIGlzX3NjDQo+ICsgKsKgwqDCoEluZGlj YXRlcyB3aGV0aGVyIG11bHRpLWNvbnN1bWVyIHBhdGggaXMgbmVlZGVkIG9yIG5vdA0KPiArICog QHBhcmFtIG4NCj4gKyAqwqDCoMKgVGhlIG51bWJlciBvZiBlbGVtZW50cyB3ZSB3aWxsIHdhbnQg dG8gZW5xdWV1ZSwgaS5lLiBob3cgZmFyIHNob3VsZCB0aGUNCj4gKyAqwqDCoMKgaGVhZCBiZSBt b3ZlZA0KPiArICogQHBhcmFtIGJlaGF2aW9yDQo+ICsgKsKgwqDCoFJURV9SSU5HX1FVRVVFX0ZJ WEVEOsKgwqDCoMKgRGVxdWV1ZSBhIGZpeGVkIG51bWJlciBvZiBpdGVtcyBmcm9tIGEgcmluZw0K PiArICrCoMKgwqBSVEVfUklOR19RVUVVRV9WQVJJQUJMRTogRGVxdWV1ZSBhcyBtYW55IGl0ZW1z IGFzIHBvc3NpYmxlIGZyb20gcmluZw0KPiArICogQHBhcmFtIG9sZF9oZWFkDQo+ICsgKsKgwqDC oFJldHVybnMgaGVhZCB2YWx1ZSBhcyBpdCB3YXMgYmVmb3JlIHRoZSBtb3ZlLCBpLmUuIHdoZXJl IGRlcXVldWUgc3RhcnRzDQo+ICsgKiBAcGFyYW0gbmV3X2hlYWQNCj4gKyAqwqDCoMKgUmV0dXJu cyB0aGUgY3VycmVudC9uZXcgaGVhZCB2YWx1ZSBpLmUuIHdoZXJlIGRlcXVldWUgZmluaXNoZXMN Cj4gKyAqIEBwYXJhbSBlbnRyaWVzDQo+ICsgKsKgwqDCoFJldHVybnMgdGhlIG51bWJlciBvZiBl bnRyaWVzIGluIHRoZSByaW5nIEJFRk9SRSBoZWFkIHdhcyBtb3ZlZA0KPiArICogQHJldHVybg0K PiArICrCoMKgwqAtIEFjdHVhbCBudW1iZXIgb2Ygb2JqZWN0cyBkZXF1ZXVlZC4NCj4gKyAqwqDC oMKgwqDCoElmIGJlaGF2aW9yID09IFJURV9SSU5HX1FVRVVFX0ZJWEVELCB0aGlzIHdpbGwgYmUg MCBvciBuIG9ubHkuDQo+ICsgKi8NCj4gK3N0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHVuc2ln bmVkIGludA0KPiArX19ydGVfcmluZ19tb3ZlX2NvbnNfaGVhZF82NChzdHJ1Y3QgcnRlX3Jpbmcg KnIsIHVuc2lnbmVkIGludCBpc19zYywNCj4gKwkJdW5zaWduZWQgaW50IG4sIGVudW0gcnRlX3Jp bmdfcXVldWVfYmVoYXZpb3IgYmVoYXZpb3IsDQo+ICsJCXVpbnQ2NF90ICpvbGRfaGVhZCwgdWlu dDY0X3QgKm5ld19oZWFkLA0KPiArCQl1aW50MzJfdCAqZW50cmllcykNCj4gK3sNCj4gKwl1bnNp Z25lZCBpbnQgbWF4ID0gbjsNCj4gKwl1aW50NjRfdCBwcm9kX3RhaWw7DQo+ICsJaW50IHN1Y2Nl c3M7DQo+ICsNCj4gKwkvKiBtb3ZlIGNvbnMuaGVhZCBhdG9taWNhbGx5ICovDQo+ICsJKm9sZF9o ZWFkID0gX19hdG9taWNfbG9hZF9uKCZyLT5jb25zXzY0LmhlYWQsIF9fQVRPTUlDX1JFTEFYRUQp Ow0KPiArCWRvIHsNCj4gKwkJLyogUmVzdG9yZSBuIGFzIGl0IG1heSBjaGFuZ2UgZXZlcnkgbG9v cCAqLw0KPiArCQluID0gbWF4Ow0KPiArDQo+ICsJCS8qIEVuc3VyZSB0aGUgaGVhZCBpcyByZWFk IGJlZm9yZSB0YWlsICovDQo+ICsJCV9fYXRvbWljX3RocmVhZF9mZW5jZShfX0FUT01JQ19BQ1FV SVJFKTsNCj4gKw0KPiArCQkvKiB0aGlzIGxvYWQtYWNxdWlyZSBzeW5jaHJvbml6ZSB3aXRoIHN0 b3JlLXJlbGVhc2Ugb2YgaHQtDQo+ID50YWlsDQo+ICsJCcKgKiBpbiB1cGRhdGVfdGFpbC4NCj4g KwkJwqAqLw0KPiArCQlwcm9kX3RhaWwgPSBfX2F0b21pY19sb2FkX24oJnItPnByb2RfNjQudGFp bCwNCj4gKwkJCQkJX19BVE9NSUNfQUNRVUlSRSk7DQo+ICsNCj4gKwkJLyogVGhlIHN1YnRyYWN0 aW9uIGlzIGRvbmUgYmV0d2VlbiB0d28gdW5zaWduZWQgMzJiaXRzIHZhbHVlDQo+ICsJCcKgKiAo dGhlIHJlc3VsdCBpcyBhbHdheXMgbW9kdWxvIDMyIGJpdHMgZXZlbiBpZiB3ZSBoYXZlDQo+ICsJ CcKgKiBjb25zX2hlYWQgPiBwcm9kX3RhaWwpLiBTbyAnZW50cmllcycgaXMgYWx3YXlzIGJldHdl ZW4gMA0KPiArCQnCoCogYW5kIHNpemUocmluZyktMS4NCj4gKwkJwqAqLw0KPiArCQkqZW50cmll cyA9IChwcm9kX3RhaWwgLSAqb2xkX2hlYWQpOw0KPiArDQo+ICsJCS8qIFNldCB0aGUgYWN0dWFs IGVudHJpZXMgZm9yIGRlcXVldWUgKi8NCj4gKwkJaWYgKG4gPiAqZW50cmllcykNCj4gKwkJCW4g PSAoYmVoYXZpb3IgPT0gUlRFX1JJTkdfUVVFVUVfRklYRUQpID8gMCA6DQo+ICplbnRyaWVzOw0K PiArDQo+ICsJCWlmICh1bmxpa2VseShuID09IDApKQ0KPiArCQkJcmV0dXJuIDA7DQo+ICsNCj4g KwkJKm5ld19oZWFkID0gKm9sZF9oZWFkICsgbjsNCj4gKwkJaWYgKGlzX3NjKQ0KPiArCQkJci0+ Y29uc182NC5oZWFkID0gKm5ld19oZWFkLCBzdWNjZXNzID0gMTsNCj4gKwkJZWxzZQ0KPiArCQkJ Lyogb24gZmFpbHVyZSwgKm9sZF9oZWFkIHdpbGwgYmUgdXBkYXRlZCAqLw0KPiArCQkJc3VjY2Vz cyA9IF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfbigmci0NCj4gPmNvbnNfNjQuaGVhZCwNCj4g KwkJCQkJCQlvbGRfaGVhZCwgKm5ld19oZWFkLA0KPiArCQkJCQkJCTAsIF9fQVRPTUlDX1JFTEFY RUQsDQo+ICsJCQkJCQkJX19BVE9NSUNfUkVMQVhFRCk7DQo+ICsJfSB3aGlsZSAodW5saWtlbHko c3VjY2VzcyA9PSAwKSk7DQo+ICsJcmV0dXJuIG47DQo+ICt9DQo+ICsNCj4gwqAjZW5kaWYgLyog X1JURV9SSU5HX0MxMV9NRU1fSF8gKi8NCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfcmluZy9y dGVfcmluZ19nZW5lcmljLmgNCj4gYi9saWIvbGlicnRlX3JpbmcvcnRlX3JpbmdfZ2VuZXJpYy5o DQo+IGluZGV4IGVhN2RiZTViOS4uMjE1OGUwOTJhIDEwMDY0NA0KPiAtLS0gYS9saWIvbGlicnRl X3JpbmcvcnRlX3JpbmdfZ2VuZXJpYy5oDQo+ICsrKyBiL2xpYi9saWJydGVfcmluZy9ydGVfcmlu Z19nZW5lcmljLmgNCj4gQEAgLTE2Nyw0ICsxNjcsMTQzIEBAIF9fcnRlX3JpbmdfbW92ZV9jb25z X2hlYWQoc3RydWN0IHJ0ZV9yaW5nICpyLCB1bnNpZ25lZA0KPiBpbnQgaXNfc2MsDQo+IMKgCXJl dHVybiBuOw0KPiDCoH0NCj4gwqANCj4gKy8qKg0KPiArICogQGludGVybmFsIFRoaXMgZnVuY3Rp b24gdXBkYXRlcyB0aGUgcHJvZHVjZXIgaGVhZCBmb3IgZW5xdWV1ZSB1c2luZw0KPiArICoJwqDC oMKgwqDCoDY0LWJpdCBoZWFkL3RhaWwgdmFsdWVzLg0KPiArICoNCj4gKyAqIEBwYXJhbSByDQo+ ICsgKsKgwqDCoEEgcG9pbnRlciB0byB0aGUgcmluZyBzdHJ1Y3R1cmUNCj4gKyAqIEBwYXJhbSBp c19zcA0KPiArICrCoMKgwqBJbmRpY2F0ZXMgd2hldGhlciBtdWx0aS1wcm9kdWNlciBwYXRoIGlz IG5lZWRlZCBvciBub3QNCj4gKyAqIEBwYXJhbSBuDQo+ICsgKsKgwqDCoFRoZSBudW1iZXIgb2Yg ZWxlbWVudHMgd2Ugd2lsbCB3YW50IHRvIGVucXVldWUsIGkuZS4gaG93IGZhciBzaG91bGQgdGhl DQo+ICsgKsKgwqDCoGhlYWQgYmUgbW92ZWQNCj4gKyAqIEBwYXJhbSBiZWhhdmlvcg0KPiArICrC oMKgwqBSVEVfUklOR19RVUVVRV9GSVhFRDrCoMKgwqDCoEVucXVldWUgYSBmaXhlZCBudW1iZXIg b2YgaXRlbXMgZnJvbSBhIHJpbmcNCj4gKyAqwqDCoMKgUlRFX1JJTkdfUVVFVUVfVkFSSUFCTEU6 IEVucXVldWUgYXMgbWFueSBpdGVtcyBhcyBwb3NzaWJsZSBmcm9tIHJpbmcNCj4gKyAqIEBwYXJh bSBvbGRfaGVhZA0KPiArICrCoMKgwqBSZXR1cm5zIGhlYWQgdmFsdWUgYXMgaXQgd2FzIGJlZm9y ZSB0aGUgbW92ZSwgaS5lLiB3aGVyZSBlbnF1ZXVlIHN0YXJ0cw0KPiArICogQHBhcmFtIG5ld19o ZWFkDQo+ICsgKsKgwqDCoFJldHVybnMgdGhlIGN1cnJlbnQvbmV3IGhlYWQgdmFsdWUgaS5lLiB3 aGVyZSBlbnF1ZXVlIGZpbmlzaGVzDQo+ICsgKiBAcGFyYW0gZnJlZV9lbnRyaWVzDQo+ICsgKsKg wqDCoFJldHVybnMgdGhlIGFtb3VudCBvZiBmcmVlIHNwYWNlIGluIHRoZSByaW5nIEJFRk9SRSBo ZWFkIHdhcyBtb3ZlZA0KPiArICogQHJldHVybg0KPiArICrCoMKgwqBBY3R1YWwgbnVtYmVyIG9m IG9iamVjdHMgZW5xdWV1ZWQuDQo+ICsgKsKgwqDCoElmIGJlaGF2aW9yID09IFJURV9SSU5HX1FV RVVFX0ZJWEVELCB0aGlzIHdpbGwgYmUgMCBvciBuIG9ubHkuDQo+ICsgKi8NCj4gK3N0YXRpYyBf X3J0ZV9hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludA0KPiArX19ydGVfcmluZ19tb3ZlX3Byb2Rf aGVhZF82NChzdHJ1Y3QgcnRlX3JpbmcgKnIsIHVuc2lnbmVkIGludCBpc19zcCwNCj4gKwkJdW5z aWduZWQgaW50IG4sIGVudW0gcnRlX3JpbmdfcXVldWVfYmVoYXZpb3IgYmVoYXZpb3IsDQo+ICsJ CXVpbnQ2NF90ICpvbGRfaGVhZCwgdWludDY0X3QgKm5ld19oZWFkLA0KPiArCQl1aW50MzJfdCAq ZnJlZV9lbnRyaWVzKQ0KPiArew0KPiArCWNvbnN0IHVpbnQzMl90IGNhcGFjaXR5ID0gci0+Y2Fw YWNpdHk7DQo+ICsJdW5zaWduZWQgaW50IG1heCA9IG47DQo+ICsJaW50IHN1Y2Nlc3M7DQo+ICsN Cj4gKwlkbyB7DQo+ICsJCS8qIFJlc2V0IG4gdG8gdGhlIGluaXRpYWwgYnVyc3QgY291bnQgKi8N Cj4gKwkJbiA9IG1heDsNCj4gKw0KPiArCQkqb2xkX2hlYWQgPSByLT5wcm9kXzY0LmhlYWQ7DQo+ ICsNCj4gKwkJLyogYWRkIHJtYiBiYXJyaWVyIHRvIGF2b2lkIGxvYWQvbG9hZCByZW9yZGVyIGlu IHdlYWsNCj4gKwkJwqAqIG1lbW9yeSBtb2RlbC4gSXQgaXMgbm9vcCBvbiB4ODYNCj4gKwkJwqAq Lw0KPiArCQlydGVfc21wX3JtYigpOw0KPiArDQo+ICsJCS8qDQo+ICsJCcKgKsKgwqBUaGUgc3Vi dHJhY3Rpb24gaXMgZG9uZSBiZXR3ZWVuIHR3byB1bnNpZ25lZCA2NGJpdHMgdmFsdWUNCj4gKwkJ wqAqICh0aGUgcmVzdWx0IGlzIGFsd2F5cyBtb2R1bG8gNjQgYml0cyBldmVuIGlmIHdlIGhhdmUN Cj4gKwkJwqAqICpvbGRfaGVhZCA+IGNvbnNfdGFpbCkuIFNvICdmcmVlX2VudHJpZXMnIGlzIGFs d2F5cw0KPiBiZXR3ZWVuIDANCj4gKwkJwqAqIGFuZCBjYXBhY2l0eSAod2hpY2ggaXMgPCBzaXpl KS4NCj4gKwkJwqAqLw0KPiArCQkqZnJlZV9lbnRyaWVzID0gKGNhcGFjaXR5ICsgci0+Y29uc182 NC50YWlsIC0gKm9sZF9oZWFkKTsNCj4gKw0KPiArCQkvKiBjaGVjayB0aGF0IHdlIGhhdmUgZW5v dWdoIHJvb20gaW4gcmluZyAqLw0KPiArCQlpZiAodW5saWtlbHkobiA+ICpmcmVlX2VudHJpZXMp KQ0KPiArCQkJbiA9IChiZWhhdmlvciA9PSBSVEVfUklOR19RVUVVRV9GSVhFRCkgPw0KPiArCQkJ CQkwIDogKmZyZWVfZW50cmllczsNCj4gKw0KPiArCQlpZiAobiA9PSAwKQ0KPiArCQkJcmV0dXJu IDA7DQo+ICsNCj4gKwkJKm5ld19oZWFkID0gKm9sZF9oZWFkICsgbjsNCj4gKwkJaWYgKGlzX3Nw KQ0KPiArCQkJci0+cHJvZF82NC5oZWFkID0gKm5ld19oZWFkLCBzdWNjZXNzID0gMTsNCj4gKwkJ ZWxzZQ0KPiArCQkJc3VjY2VzcyA9IHJ0ZV9hdG9taWM2NF9jbXBzZXQoJnItPnByb2RfNjQuaGVh ZCwNCj4gKwkJCQkJKm9sZF9oZWFkLCAqbmV3X2hlYWQpOw0KPiArCX0gd2hpbGUgKHVubGlrZWx5 KHN1Y2Nlc3MgPT0gMCkpOw0KPiArCXJldHVybiBuOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAq IEBpbnRlcm5hbCBUaGlzIGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIGNvbnN1bWVyIGhlYWQgZm9yIGRl cXVldWUgdXNpbmcNCj4gKyAqCcKgwqDCoMKgwqA2NC1iaXQgaGVhZC90YWlsIHZhbHVlcy4NCj4g KyAqDQo+ICsgKiBAcGFyYW0gcg0KPiArICrCoMKgwqBBIHBvaW50ZXIgdG8gdGhlIHJpbmcgc3Ry dWN0dXJlDQo+ICsgKiBAcGFyYW0gaXNfc2MNCj4gKyAqwqDCoMKgSW5kaWNhdGVzIHdoZXRoZXIg bXVsdGktY29uc3VtZXIgcGF0aCBpcyBuZWVkZWQgb3Igbm90DQo+ICsgKiBAcGFyYW0gbg0KPiAr ICrCoMKgwqBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHdlIHdpbGwgd2FudCB0byBlbnF1ZXVlLCBp LmUuIGhvdyBmYXIgc2hvdWxkIHRoZQ0KPiArICrCoMKgwqBoZWFkIGJlIG1vdmVkDQo+ICsgKiBA cGFyYW0gYmVoYXZpb3INCj4gKyAqwqDCoMKgUlRFX1JJTkdfUVVFVUVfRklYRUQ6wqDCoMKgwqBE ZXF1ZXVlIGEgZml4ZWQgbnVtYmVyIG9mIGl0ZW1zIGZyb20gYSByaW5nDQo+ICsgKsKgwqDCoFJU RV9SSU5HX1FVRVVFX1ZBUklBQkxFOiBEZXF1ZXVlIGFzIG1hbnkgaXRlbXMgYXMgcG9zc2libGUg ZnJvbSByaW5nDQo+ICsgKiBAcGFyYW0gb2xkX2hlYWQNCj4gKyAqwqDCoMKgUmV0dXJucyBoZWFk IHZhbHVlIGFzIGl0IHdhcyBiZWZvcmUgdGhlIG1vdmUsIGkuZS4gd2hlcmUgZGVxdWV1ZSBzdGFy dHMNCj4gKyAqIEBwYXJhbSBuZXdfaGVhZA0KPiArICrCoMKgwqBSZXR1cm5zIHRoZSBjdXJyZW50 L25ldyBoZWFkIHZhbHVlIGkuZS4gd2hlcmUgZGVxdWV1ZSBmaW5pc2hlcw0KPiArICogQHBhcmFt IGVudHJpZXMNCj4gKyAqwqDCoMKgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhl IHJpbmcgQkVGT1JFIGhlYWQgd2FzIG1vdmVkDQo+ICsgKiBAcmV0dXJuDQo+ICsgKsKgwqDCoC0g QWN0dWFsIG51bWJlciBvZiBvYmplY3RzIGRlcXVldWVkLg0KPiArICrCoMKgwqDCoMKgSWYgYmVo YXZpb3IgPT0gUlRFX1JJTkdfUVVFVUVfRklYRUQsIHRoaXMgd2lsbCBiZSAwIG9yIG4gb25seS4N Cj4gKyAqLw0KPiArc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50DQo+ICtf X3J0ZV9yaW5nX21vdmVfY29uc19oZWFkXzY0KHN0cnVjdCBydGVfcmluZyAqciwgdW5zaWduZWQg aW50IGlzX3NjLA0KPiArCQl1bnNpZ25lZCBpbnQgbiwgZW51bSBydGVfcmluZ19xdWV1ZV9iZWhh dmlvciBiZWhhdmlvciwNCj4gKwkJdWludDY0X3QgKm9sZF9oZWFkLCB1aW50NjRfdCAqbmV3X2hl YWQsDQo+ICsJCXVpbnQzMl90ICplbnRyaWVzKQ0KPiArew0KPiArCXVuc2lnbmVkIGludCBtYXgg PSBuOw0KPiArCWludCBzdWNjZXNzOw0KPiArDQo+ICsJZG8gew0KPiArCQkvKiBSZXN0b3JlIG4g YXMgaXQgbWF5IGNoYW5nZSBldmVyeSBsb29wICovDQo+ICsJCW4gPSBtYXg7DQo+ICsNCj4gKwkJ Km9sZF9oZWFkID0gci0+Y29uc182NC5oZWFkOw0KPiArDQo+ICsJCS8qIGFkZCBybWIgYmFycmll ciB0byBhdm9pZCBsb2FkL2xvYWQgcmVvcmRlciBpbiB3ZWFrDQo+ICsJCcKgKiBtZW1vcnkgbW9k ZWwuIEl0IGlzIG5vb3Agb24geDg2DQo+ICsJCcKgKi8NCj4gKwkJcnRlX3NtcF9ybWIoKTsNCj4g Kw0KPiArCQkvKiBUaGUgc3VidHJhY3Rpb24gaXMgZG9uZSBiZXR3ZWVuIHR3byB1bnNpZ25lZCA2 NGJpdHMgdmFsdWUNCj4gKwkJwqAqICh0aGUgcmVzdWx0IGlzIGFsd2F5cyBtb2R1bG8gNjQgYml0 cyBldmVuIGlmIHdlIGhhdmUNCj4gKwkJwqAqIGNvbnNfaGVhZCA+IHByb2RfdGFpbCkuIFNvICdl bnRyaWVzJyBpcyBhbHdheXMgYmV0d2VlbiAwDQo+ICsJCcKgKiBhbmQgc2l6ZShyaW5nKS0xLg0K PiArCQnCoCovDQo+ICsJCSplbnRyaWVzID0gKHItPnByb2RfNjQudGFpbCAtICpvbGRfaGVhZCk7 DQo+ICsNCj4gKwkJLyogU2V0IHRoZSBhY3R1YWwgZW50cmllcyBmb3IgZGVxdWV1ZSAqLw0KPiAr CQlpZiAobiA+ICplbnRyaWVzKQ0KPiArCQkJbiA9IChiZWhhdmlvciA9PSBSVEVfUklOR19RVUVV RV9GSVhFRCkgPyAwIDoNCj4gKmVudHJpZXM7DQo+ICsNCj4gKwkJaWYgKHVubGlrZWx5KG4gPT0g MCkpDQo+ICsJCQlyZXR1cm4gMDsNCj4gKw0KPiArCQkqbmV3X2hlYWQgPSAqb2xkX2hlYWQgKyBu Ow0KPiArCQlpZiAoaXNfc2MpDQo+ICsJCQlyLT5jb25zXzY0LmhlYWQgPSAqbmV3X2hlYWQsIHN1 Y2Nlc3MgPSAxOw0KPiArCQllbHNlDQo+ICsJCQlzdWNjZXNzID0gcnRlX2F0b21pYzY0X2NtcHNl dCgmci0+Y29uc182NC5oZWFkLA0KPiArCQkJCQkqb2xkX2hlYWQsICpuZXdfaGVhZCk7DQo+ICsJ fSB3aGlsZSAodW5saWtlbHkoc3VjY2VzcyA9PSAwKSk7DQo+ICsJcmV0dXJuIG47DQo+ICt9DQo+ ICsNCj4gwqAjZW5kaWYgLyogX1JURV9SSU5HX0dFTkVSSUNfSF8gKi8NCi0tIA0KT2xhIExpbGpl ZGFobCwgTmV0d29ya2luZyBTeXN0ZW0gQXJjaGl0ZWN0LCBBcm0NClBob25lICs0NjcwNjg2NjM3 MywgU2t5cGUgb2xhLmxpbGplZGFobA0KDQo=