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 AB23142C3C; Tue, 6 Jun 2023 09:10:44 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 34D1440A84; Tue, 6 Jun 2023 09:10:44 +0200 (CEST) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id B6BB040697 for ; Tue, 6 Jun 2023 09:10:42 +0200 (CEST) Received: from frapeml100008.china.huawei.com (unknown [172.18.147.207]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4Qb1p84Q5Fz6J7DW; Tue, 6 Jun 2023 15:10:24 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml100008.china.huawei.com (7.182.85.131) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Tue, 6 Jun 2023 09:10:40 +0200 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.023; Tue, 6 Jun 2023 09:10:40 +0200 From: Konstantin Ananyev To: Feifei Wang , =?utf-8?B?0JrQvtC90YHRgtCw0L3RgtC40L0g0JDQvdCw0L3RjNC10LI=?= , "thomas@monjalon.net" , Ferruh Yigit , Andrew Rybchenko CC: "dev@dpdk.org" , nd , Honnappa Nagarahalli , Ruifeng Wang , nd Subject: RE: [PATCH v6 1/4] ethdev: add API for mbufs recycle mode Thread-Topic: [PATCH v6 1/4] ethdev: add API for mbufs recycle mode Thread-Index: AQHZju3Ef0UoE2EPTUCvSDiUqZI8Fq98GhsAgADrUoCAAGhgsA== Date: Tue, 6 Jun 2023 07:10:40 +0000 Message-ID: References: <20211224164613.32569-1-feifei.wang2@arm.com> <20230525094541.331338-1-feifei.wang2@arm.com> <20230525094541.331338-2-feifei.wang2@arm.com> <658741685969010@mail.yandex.ru> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.81.189.224] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected 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 PiANCj4gVGhhbmtzIGZvciB0aGUgY29tbWVudHMuDQo+IA0KPiBGcm9tOiDQmtC+0L3RgdGC0LDQ vdGC0LjQvSDQkNC90LDQvdGM0LXQsiA8bWFpbHRvOmtvbnN0YW50aW4udi5hbmFueWV2QHlhbmRl eC5ydT4NCj4gU2VudDogTW9uZGF5LCBKdW5lIDUsIDIwMjMgODo1NCBQTQ0KPiBUbzogRmVpZmVp IFdhbmcgPG1haWx0bzpGZWlmZWkuV2FuZzJAYXJtLmNvbT47IG1haWx0bzp0aG9tYXNAbW9uamFs b24ubmV0OyBGZXJydWggWWlnaXQgPG1haWx0bzpmZXJydWgueWlnaXRAYW1kLmNvbT47DQo+IEFu ZHJldyBSeWJjaGVua28gPG1haWx0bzphbmRyZXcucnliY2hlbmtvQG9rdGV0bGFicy5ydT4NCj4g Q2M6IG1haWx0bzpkZXZAZHBkay5vcmc7IG5kIDxtYWlsdG86bmRAYXJtLmNvbT47IEhvbm5hcHBh IE5hZ2FyYWhhbGxpIDxtYWlsdG86SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47IFJ1aWZl bmcgV2FuZw0KPiA8bWFpbHRvOlJ1aWZlbmcuV2FuZ0Bhcm0uY29tPg0KPiBTdWJqZWN0OiBSZTog W1BBVENIIHY2IDEvNF0gZXRoZGV2OiBhZGQgQVBJIGZvciBtYnVmcyByZWN5Y2xlIG1vZGUNCj4g DQo+IA0KPiANCj4gSGkgRmVpZmVpLA0KPiANCj4gZmV3IG1vcmUgY29tbWVudHMgZnJvbSBtZSwg c2VlIGJlbG93Lg0KPiBBZGQgJ3J0ZV9ldGhfcmVjeWNsZV9yeF9xdWV1ZV9pbmZvX2dldCcgYW5k ICdydGVfZXRoX3JlY3ljbGVfbWJ1ZnMnDQo+IEFQSXMgdG8gcmVjeWNsZSB1c2VkIG1idWZzIGZy b20gYSB0cmFuc21pdCBxdWV1ZSBvZiBhbiBFdGhlcm5ldCBkZXZpY2UsDQo+IGFuZCBtb3ZlIHRo ZXNlIG1idWZzIGludG8gYSBtYnVmIHJpbmcgZm9yIGEgcmVjZWl2ZSBxdWV1ZSBvZiBhbiBFdGhl cm5ldA0KPiBkZXZpY2UuIFRoaXMgY2FuIGJ5cGFzcyBtZW1wb29sICdwdXQvZ2V0JyBvcGVyYXRp b25zIGhlbmNlIHNhdmluZyBDUFUNCj4gY3ljbGVzLg0KPiANCj4gRm9yIGVhY2ggcmVjeWNsaW5n IG1idWZzLCB0aGUgcnRlX2V0aF9yZWN5Y2xlX21idWZzKCkgZnVuY3Rpb24gcGVyZm9ybXMNCj4g dGhlIGZvbGxvd2luZyBvcGVyYXRpb25zOg0KPiAtIENvcHkgdXNlZCAqcnRlX21idWYqIGJ1ZmZl ciBwb2ludGVycyBmcm9tIFR4IG1idWYgcmluZyBpbnRvIFJ4IG1idWYNCj4gcmluZy4NCj4gLSBS ZXBsZW5pc2ggdGhlIFJ4IGRlc2NyaXB0b3JzIHdpdGggdGhlIHJlY3ljbGluZyAqcnRlX21idWYq IG1idWZzIGZyZWVkDQo+IGZyb20gdGhlIFR4IG1idWYgcmluZy4NCj4gDQo+IFN1Z2dlc3RlZC1i eTogSG9ubmFwcGEgTmFnYXJhaGFsbGkgPG1haWx0bzpob25uYXBwYS5uYWdhcmFoYWxsaUBhcm0u Y29tPg0KPiBTdWdnZXN0ZWQtYnk6IFJ1aWZlbmcgV2FuZyA8bWFpbHRvOnJ1aWZlbmcud2FuZ0Bh cm0uY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBGZWlmZWkgV2FuZyA8bWFpbHRvOmZlaWZlaS53YW5n MkBhcm0uY29tPg0KPiBSZXZpZXdlZC1ieTogUnVpZmVuZyBXYW5nIDxtYWlsdG86cnVpZmVuZy53 YW5nQGFybS5jb20+DQo+IFJldmlld2VkLWJ5OiBIb25uYXBwYSBOYWdhcmFoYWxsaSA8bWFpbHRv Omhvbm5hcHBhLm5hZ2FyYWhhbGxpQGFybS5jb20+DQo+IC0tLQ0KPiAgZG9jL2d1aWRlcy9yZWxf bm90ZXMvcmVsZWFzZV8yM18wNy5yc3QgfCA3ICsNCj4gIGxpYi9ldGhkZXYvZXRoZGV2X2RyaXZl ci5oIHwgMTAgKysNCj4gIGxpYi9ldGhkZXYvZXRoZGV2X3ByaXZhdGUuYyB8IDIgKw0KPiAgbGli L2V0aGRldi9ydGVfZXRoZGV2LmMgfCAzMSArKysrKw0KPiAgbGliL2V0aGRldi9ydGVfZXRoZGV2 LmggfCAxODIgKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgbGliL2V0aGRldi9ydGVfZXRo ZGV2X2NvcmUuaCB8IDE1ICstDQo+ICBsaWIvZXRoZGV2L3ZlcnNpb24ubWFwIHwgNCArDQo+ICA3 IGZpbGVzIGNoYW5nZWQsIDI0OSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KPiANCj4g ZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjNfMDcucnN0IGIvZG9j L2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yM18wNy5yc3QNCj4gaW5kZXggYTliMTI5MzY4OS4u ZjI3OTAzNmNiOSAxMDA2NDQNCj4gLS0tIGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8y M18wNy5yc3QNCj4gKysrIGIvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yM18wNy5yc3QN Cj4gQEAgLTU1LDYgKzU1LDEzIEBAIE5ldyBGZWF0dXJlcw0KPiAgICAgICBBbHNvLCBtYWtlIHN1 cmUgdG8gc3RhcnQgdGhlIGFjdHVhbCB0ZXh0IGF0IHRoZSBtYXJnaW4uDQo+ICAgICAgID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gDQo+ ICsqICoqQWRkIG1idWZzIHJlY3ljbGluZyBzdXBwb3J0LiAqKg0KPiArIEFkZGVkIGBgcnRlX2V0 aF9yZWN5Y2xlX3J4X3F1ZXVlX2luZm9fZ2V0YGAgYW5kIGBgcnRlX2V0aF9yZWN5Y2xlX21idWZz YGANCj4gKyBBUElzIHdoaWNoIGFsbG93IHRoZSB1c2VyIHRvIGNvcHkgdXNlZCBtYnVmcyBmcm9t IHRoZSBUeCBtYnVmIHJpbmcNCj4gKyBpbnRvIHRoZSBSeCBtYnVmIHJpbmcuIFRoaXMgZmVhdHVy ZSBzdXBwb3J0cyB0aGUgY2FzZSB0aGF0IHRoZSBSeCBFdGhlcm5ldA0KPiArIGRldmljZSBpcyBk aWZmZXJlbnQgZnJvbSB0aGUgVHggRXRoZXJuZXQgZGV2aWNlIHdpdGggcmVzcGVjdGl2ZSBkcml2 ZXINCj4gKyBjYWxsYmFjayBmdW5jdGlvbnMgaW4gYGBydGVfZXRoX3JlY3ljbGVfbWJ1ZnNgYC4N Cj4gKw0KPiANCj4gIFJlbW92ZWQgSXRlbXMNCj4gIC0tLS0tLS0tLS0tLS0NCj4gZGlmZiAtLWdp dCBhL2xpYi9ldGhkZXYvZXRoZGV2X2RyaXZlci5oIGIvbGliL2V0aGRldi9ldGhkZXZfZHJpdmVy LmgNCj4gaW5kZXggMmM5ZDYxNWZiNS4uYzY3MjNkNTI3NyAxMDA2NDQNCj4gLS0tIGEvbGliL2V0 aGRldi9ldGhkZXZfZHJpdmVyLmgNCj4gKysrIGIvbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmgN Cj4gQEAgLTU5LDYgKzU5LDEwIEBAIHN0cnVjdCBydGVfZXRoX2RldiB7DQo+ICAgICAgICAgIGV0 aF9yeF9kZXNjcmlwdG9yX3N0YXR1c190IHJ4X2Rlc2NyaXB0b3Jfc3RhdHVzOw0KPiAgICAgICAg ICAvKiogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhIFR4IGRlc2NyaXB0b3IgKi8NCj4gICAgICAgICAg ZXRoX3R4X2Rlc2NyaXB0b3Jfc3RhdHVzX3QgdHhfZGVzY3JpcHRvcl9zdGF0dXM7DQo+ICsgLyoq IFBvaW50ZXIgdG8gUE1EIHRyYW5zbWl0IG1idWZzIHJldXNlIGZ1bmN0aW9uICovDQo+ICsgZXRo X3JlY3ljbGVfdHhfbWJ1ZnNfcmV1c2VfdCByZWN5Y2xlX3R4X21idWZzX3JldXNlOw0KPiArIC8q KiBQb2ludGVyIHRvIFBNRCByZWNlaXZlIGRlc2NyaXB0b3JzIHJlZmlsbCBmdW5jdGlvbiAqLw0K PiArIGV0aF9yZWN5Y2xlX3J4X2Rlc2NyaXB0b3JzX3JlZmlsbF90IHJlY3ljbGVfcnhfZGVzY3Jp cHRvcnNfcmVmaWxsOw0KPiANCj4gICAgICAgICAgLyoqDQo+ICAgICAgICAgICAqIERldmljZSBk YXRhIHRoYXQgaXMgc2hhcmVkIGJldHdlZW4gcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IHByb2Nlc3Nl cw0KPiBAQCAtNTA0LDYgKzUwOCwxMCBAQCB0eXBlZGVmIHZvaWQgKCpldGhfcnhxX2luZm9fZ2V0 X3QpKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiAgdHlwZWRlZiB2b2lkICgqZXRoX3R4cV9p bmZvX2dldF90KShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gICAgICAgICAgdWludDE2X3Qg dHhfcXVldWVfaWQsIHN0cnVjdCBydGVfZXRoX3R4cV9pbmZvICpxaW5mbyk7DQo+IA0KPiArdHlw ZWRlZiB2b2lkICgqZXRoX3JlY3ljbGVfcnhxX2luZm9fZ2V0X3QpKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LA0KPiArIHVpbnQxNl90IHJ4X3F1ZXVlX2lkLA0KPiArIHN0cnVjdCBydGVfZXRoX3Jl Y3ljbGVfcnhxX2luZm8gKnJlY3ljbGVfcnhxX2luZm8pOw0KPiArDQo+ICB0eXBlZGVmIGludCAo KmV0aF9idXJzdF9tb2RlX2dldF90KShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gICAgICAg ICAgdWludDE2X3QgcXVldWVfaWQsIHN0cnVjdCBydGVfZXRoX2J1cnN0X21vZGUgKm1vZGUpOw0K PiANCj4gQEAgLTEyNDcsNiArMTI1NSw4IEBAIHN0cnVjdCBldGhfZGV2X29wcyB7DQo+ICAgICAg ICAgIGV0aF9yeHFfaW5mb19nZXRfdCByeHFfaW5mb19nZXQ7DQo+ICAgICAgICAgIC8qKiBSZXRy aWV2ZSBUeCBxdWV1ZSBpbmZvcm1hdGlvbiAqLw0KPiAgICAgICAgICBldGhfdHhxX2luZm9fZ2V0 X3QgdHhxX2luZm9fZ2V0Ow0KPiArIC8qKiBSZXRyaWV2ZSBtYnVmcyByZWN5Y2xlIFJ4IHF1ZXVl IGluZm9ybWF0aW9uICovDQo+ICsgZXRoX3JlY3ljbGVfcnhxX2luZm9fZ2V0X3QgcmVjeWNsZV9y eHFfaW5mb19nZXQ7DQo+ICAgICAgICAgIGV0aF9idXJzdF9tb2RlX2dldF90IHJ4X2J1cnN0X21v ZGVfZ2V0OyAvKio8IEdldCBSeCBidXJzdCBtb2RlICovDQo+ICAgICAgICAgIGV0aF9idXJzdF9t b2RlX2dldF90IHR4X2J1cnN0X21vZGVfZ2V0OyAvKio8IEdldCBUeCBidXJzdCBtb2RlICovDQo+ ICAgICAgICAgIGV0aF9md192ZXJzaW9uX2dldF90IGZ3X3ZlcnNpb25fZ2V0OyAvKio8IEdldCBm aXJtd2FyZSB2ZXJzaW9uICovDQo+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L2V0aGRldl9wcml2 YXRlLmMgYi9saWIvZXRoZGV2L2V0aGRldl9wcml2YXRlLmMNCj4gaW5kZXggMTRlYzhjNmNjZi4u ZjhhYjY0ZjE5NSAxMDA2NDQNCj4gLS0tIGEvbGliL2V0aGRldi9ldGhkZXZfcHJpdmF0ZS5jDQo+ ICsrKyBiL2xpYi9ldGhkZXYvZXRoZGV2X3ByaXZhdGUuYw0KPiBAQCAtMjc3LDYgKzI3Nyw4IEBA IGV0aF9kZXZfZnBfb3BzX3NldHVwKHN0cnVjdCBydGVfZXRoX2ZwX29wcyAqZnBvLA0KPiAgICAg ICAgICBmcG8tPnJ4X3F1ZXVlX2NvdW50ID0gZGV2LT5yeF9xdWV1ZV9jb3VudDsNCj4gICAgICAg ICAgZnBvLT5yeF9kZXNjcmlwdG9yX3N0YXR1cyA9IGRldi0+cnhfZGVzY3JpcHRvcl9zdGF0dXM7 DQo+ICAgICAgICAgIGZwby0+dHhfZGVzY3JpcHRvcl9zdGF0dXMgPSBkZXYtPnR4X2Rlc2NyaXB0 b3Jfc3RhdHVzOw0KPiArIGZwby0+cmVjeWNsZV90eF9tYnVmc19yZXVzZSA9IGRldi0+cmVjeWNs ZV90eF9tYnVmc19yZXVzZTsNCj4gKyBmcG8tPnJlY3ljbGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxs ID0gZGV2LT5yZWN5Y2xlX3J4X2Rlc2NyaXB0b3JzX3JlZmlsbDsNCj4gDQo+ICAgICAgICAgIGZw by0+cnhxLmRhdGEgPSBkZXYtPmRhdGEtPnJ4X3F1ZXVlczsNCj4gICAgICAgICAgZnBvLT5yeHEu Y2xiayA9ICh2b2lkICoqKSh1aW50cHRyX3QpZGV2LT5wb3N0X3J4X2J1cnN0X2NiczsNCj4gZGlm ZiAtLWdpdCBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5jIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2 LmMNCj4gaW5kZXggNGQwMzI1NTY4My4uN2MyN2RjZmVhNCAxMDA2NDQNCj4gLS0tIGEvbGliL2V0 aGRldi9ydGVfZXRoZGV2LmMNCj4gKysrIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gQEAg LTU3ODQsNiArNTc4NCwzNyBAQCBydGVfZXRoX3R4X3F1ZXVlX2luZm9fZ2V0KHVpbnQxNl90IHBv cnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkLA0KPiAgICAgICAgICByZXR1cm4gMDsNCj4gIH0NCj4g DQo+ICtpbnQNCj4gK3J0ZV9ldGhfcmVjeWNsZV9yeF9xdWV1ZV9pbmZvX2dldCh1aW50MTZfdCBw b3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCwNCj4gKyBzdHJ1Y3QgcnRlX2V0aF9yZWN5Y2xlX3J4 cV9pbmZvICpyZWN5Y2xlX3J4cV9pbmZvKQ0KPiArew0KPiArIHN0cnVjdCBydGVfZXRoX2RldiAq ZGV2Ow0KPiArDQo+ICsgUlRFX0VUSF9WQUxJRF9QT1JUSURfT1JfRVJSX1JFVChwb3J0X2lkLCAt RU5PREVWKTsNCj4gKyBkZXYgPSAmcnRlX2V0aF9kZXZpY2VzW3BvcnRfaWRdOw0KPiArDQo+ICsg aWYgKHF1ZXVlX2lkID49IGRldi0+ZGF0YS0+bmJfcnhfcXVldWVzKSB7DQo+ICsgUlRFX0VUSERF Vl9MT0coRVJSLCAiSW52YWxpZCBSeCBxdWV1ZV9pZD0ldVxuIiwgcXVldWVfaWQpOw0KPiArIHJl dHVybiAtRUlOVkFMOw0KPiArIH0NCj4gKw0KPiArIGlmIChkZXYtPmRhdGEtPnJ4X3F1ZXVlcyA9 PSBOVUxMIHx8DQo+ICsgZGV2LT5kYXRhLT5yeF9xdWV1ZXNbcXVldWVfaWRdID09IE5VTEwpIHsN Cj4gKyBSVEVfRVRIREVWX0xPRyhFUlIsDQo+ICsgIlJ4IHF1ZXVlICUiUFJJdTE2IiBvZiBkZXZp Y2Ugd2l0aCBwb3J0X2lkPSUiDQo+ICsgUFJJdTE2IiBoYXMgbm90IGJlZW4gc2V0dXBcbiIsDQo+ ICsgcXVldWVfaWQsIHBvcnRfaWQpOw0KPiArIHJldHVybiAtRUlOVkFMOw0KPiArIH0NCj4gKw0K PiArIGlmICgqZGV2LT5kZXZfb3BzLT5yZWN5Y2xlX3J4cV9pbmZvX2dldCA9PSBOVUxMKQ0KPiAr IHJldHVybiAtRU5PVFNVUDsNCj4gKw0KPiArIGRldi0+ZGV2X29wcy0+cmVjeWNsZV9yeHFfaW5m b19nZXQoZGV2LCBxdWV1ZV9pZCwgcmVjeWNsZV9yeHFfaW5mbyk7DQo+ICsNCj4gKyByZXR1cm4g MDsNCj4gK30NCj4gKw0KPiAgaW50DQo+ICBydGVfZXRoX3J4X2J1cnN0X21vZGVfZ2V0KHVpbnQx Nl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkLA0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgcnRlX2V0aF9idXJzdF9tb2RlICptb2RlKQ0KPiBkaWZmIC0tZ2l0IGEvbGli L2V0aGRldi9ydGVfZXRoZGV2LmggYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiBpbmRleCA5 OWZlOWUyMzhiLi43NDM0YWEyNDgzIDEwMDY0NA0KPiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9ldGhk ZXYuaA0KPiArKysgYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiBAQCAtMTgyMCw2ICsxODIw LDMwIEBAIHN0cnVjdCBydGVfZXRoX3R4cV9pbmZvIHsNCj4gICAgICAgICAgdWludDhfdCBxdWV1 ZV9zdGF0ZTsgLyoqPCBvbmUgb2YgUlRFX0VUSF9RVUVVRV9TVEFURV8qLiAqLw0KPiAgfSBfX3J0 ZV9jYWNoZV9taW5fYWxpZ25lZDsNCj4gDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBA YiBFWFBFUklNRU5UQUw6IHRoaXMgc3RydWN0dXJlIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBu b3RpY2UuDQo+ICsgKg0KPiArICogRXRoZXJuZXQgZGV2aWNlIFJ4IHF1ZXVlIGluZm9ybWF0aW9u IHN0cnVjdHVyZSBmb3IgcmVjeWNsaW5nIG1idWZzLg0KPiArICogVXNlZCB0byByZXRyaWV2ZSBS eCBxdWV1ZSBpbmZvcm1hdGlvbiB3aGVuIFR4IHF1ZXVlIHJldXNpbmcgbWJ1ZnMgYW5kIG1vdmlu Zw0KPiArICogdGhlbSBpbnRvIFJ4IG1idWYgcmluZy4NCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9l dGhfcmVjeWNsZV9yeHFfaW5mbyB7DQo+ICsgc3RydWN0IHJ0ZV9tYnVmICoqbWJ1Zl9yaW5nOyAv Kio8IG1idWYgcmluZyBvZiBSeCBxdWV1ZS4gKi8NCj4gKyBzdHJ1Y3QgcnRlX21lbXBvb2wgKm1w OyAvKio8IG1lbXBvb2wgb2YgUnggcXVldWUuICovDQo+ICsgdWludDE2X3QgKnJlZmlsbF9oZWFk OyAvKio8IGhlYWQgb2YgUnggcXVldWUgcmVmaWxsaW5nIG1idWZzLiAqLw0KPiArIHVpbnQxNl90 ICpyZWNlaXZlX3RhaWw7IC8qKjwgdGFpbCBvZiBSeCBxdWV1ZSByZWNlaXZpbmcgcGt0cy4gKi8N Cj4gKyB1aW50MTZfdCBtYnVmX3Jpbmdfc2l6ZTsgLyoqPCBjb25maWd1cmVkIG51bWJlciBvZiBt YnVmIHJpbmcgc2l6ZS4gKi8NCj4gKyAvKioNCj4gKyAqIFJlcXVpcmVtZW50IG9uIG1idWYgcmVm aWxsaW5nIGJhdGNoIHNpemUgb2YgUnggbWJ1ZiByaW5nLg0KPiArICogRm9yIHNvbWUgUE1EIGRy aXZlcnMsIHRoZSBudW1iZXIgb2YgUnggbWJ1ZiByaW5nIHJlZmlsbGluZyBtYnVmcw0KPiArICog c2hvdWxkIGJlIGFsaWduZWQgd2l0aCBtYnVmIHJpbmcgc2l6ZSwgaW4gb3JkZXIgdG8gc2ltcGxp ZnkNCj4gKyAqIHJpbmcgd3JhcHBpbmcgYXJvdW5kLg0KPiArICogVmFsdWUgMCBtZWFucyB0aGF0 IFBNRCBkcml2ZXJzIGhhdmUgbm8gcmVxdWlyZW1lbnQgZm9yIHRoaXMuDQo+ICsgKi8NCj4gKyB1 aW50MTZfdCByZWZpbGxfcmVxdWlyZW1lbnQ7DQo+ICt9IF9fcnRlX2NhY2hlX21pbl9hbGlnbmVk Ow0KPiArDQo+ICAvKiBHZW5lcmljIEJ1cnN0IG1vZGUgZmxhZyBkZWZpbml0aW9uLCB2YWx1ZXMg Y2FuIGJlIE9SZWQuICovDQo+IA0KPiAgLyoqDQo+IEBAIC00ODA5LDYgKzQ4MzMsMzEgQEAgaW50 IHJ0ZV9ldGhfcnhfcXVldWVfaW5mb19nZXQodWludDE2X3QgcG9ydF9pZCwgdWludDE2X3QgcXVl dWVfaWQsDQo+ICBpbnQgcnRlX2V0aF90eF9xdWV1ZV9pbmZvX2dldCh1aW50MTZfdCBwb3J0X2lk LCB1aW50MTZfdCBxdWV1ZV9pZCwNCj4gICAgICAgICAgc3RydWN0IHJ0ZV9ldGhfdHhxX2luZm8g KnFpbmZvKTsNCj4gDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5U QUw6IHRoaXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQgcHJpb3Igbm90 aWNlDQo+ICsgKg0KPiArICogUmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgZ2l2ZW4gcG9ydHMn cyBSeCBxdWV1ZSBmb3IgcmVjeWNsaW5nIG1idWZzLg0KPiArICoNCj4gKyAqIEBwYXJhbSBwb3J0 X2lkDQo+ICsgKiBUaGUgcG9ydCBpZGVudGlmaWVyIG9mIHRoZSBFdGhlcm5ldCBkZXZpY2UuDQo+ ICsgKiBAcGFyYW0gcXVldWVfaWQNCj4gKyAqIFRoZSBSeCBxdWV1ZSBvbiB0aGUgRXRoZXJuZXQg ZGV2aWNlZm9yIHdoaWNoIGluZm9ybWF0aW9uDQo+ICsgKiB3aWxsIGJlIHJldHJpZXZlZC4NCj4g KyAqIEBwYXJhbSByZWN5Y2xlX3J4cV9pbmZvDQo+ICsgKiBBIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1 cmUgb2YgdHlwZSAqcnRlX2V0aF9yZWN5Y2xlX3J4cV9pbmZvKiB0byBiZSBmaWxsZWQuDQo+ICsg Kg0KPiArICogQHJldHVybg0KPiArICogLSAwOiBTdWNjZXNzDQo+ICsgKiAtIC1FTk9ERVY6IElm ICpwb3J0X2lkKiBpcyBpbnZhbGlkLg0KPiArICogLSAtRU5PVFNVUDogcm91dGluZSBpcyBub3Qg c3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2UgUE1ELg0KPiArICogLSAtRUlOVkFMOiBUaGUgcXVldWVf aWQgaXMgb3V0IG9mIHJhbmdlLg0KPiArICovDQo+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gK2lu dCBydGVfZXRoX3JlY3ljbGVfcnhfcXVldWVfaW5mb19nZXQodWludDE2X3QgcG9ydF9pZCwNCj4g KyB1aW50MTZfdCBxdWV1ZV9pZCwNCj4gKyBzdHJ1Y3QgcnRlX2V0aF9yZWN5Y2xlX3J4cV9pbmZv ICpyZWN5Y2xlX3J4cV9pbmZvKTsNCj4gKw0KPiAgLyoqDQo+ICAgKiBSZXRyaWV2ZSBpbmZvcm1h dGlvbiBhYm91dCB0aGUgUnggcGFja2V0IGJ1cnN0IG1vZGUuDQo+ICAgKg0KPiBAQCAtNjQ4Myw2 ICs2NTMyLDEzOSBAQCBydGVfZXRoX3R4X2J1ZmZlcih1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZf dCBxdWV1ZV9pZCwNCj4gICAgICAgICAgcmV0dXJuIHJ0ZV9ldGhfdHhfYnVmZmVyX2ZsdXNoKHBv cnRfaWQsIHF1ZXVlX2lkLCBidWZmZXIpOw0KPiAgfQ0KPiANCj4gKy8qKg0KPiArICogQHdhcm5p bmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVt b3ZlZCwgd2l0aG91dCBwcmlvciBub3RpY2UNCj4gKyAqDQo+ICsgKiBSZWN5Y2xlIHVzZWQgbWJ1 ZnMgZnJvbSBhIHRyYW5zbWl0IHF1ZXVlIG9mIGFuIEV0aGVybmV0IGRldmljZSwgYW5kIG1vdmUN Cj4gKyAqIHRoZXNlIG1idWZzIGludG8gYSBtYnVmIHJpbmcgZm9yIGEgcmVjZWl2ZSBxdWV1ZSBv ZiBhbiBFdGhlcm5ldCBkZXZpY2UuDQo+ICsgKiBUaGlzIGNhbiBieXBhc3MgbWVtcG9vbCBwYXRo IHRvIHNhdmUgQ1BVIGN5Y2xlcy4NCj4gKyAqDQo+ICsgKiBUaGUgcnRlX2V0aF9yZWN5Y2xlX21i dWZzKCkgZnVuY3Rpb24gbG9vcHMsIHdpdGggcnRlX2V0aF9yeF9idXJzdCgpIGFuZA0KPiArICog cnRlX2V0aF90eF9idXJzdCgpIGZ1bmN0aW9ucywgZnJlZWluZyBUeCB1c2VkIG1idWZzIGFuZCBy ZXBsZW5pc2hpbmcgUngNCj4gKyAqIGRlc2NyaXB0b3JzLiBUaGUgbnVtYmVyIG9mIHJlY3ljbGlu ZyBtYnVmcyBkZXBlbmRzIG9uIHRoZSByZXF1ZXN0IG9mIFJ4IG1idWYNCj4gKyAqIHJpbmcsIHdp dGggdGhlIGNvbnN0cmFpbnQgb2YgZW5vdWdoIHVzZWQgbWJ1ZnMgZnJvbSBUeCBtYnVmIHJpbmcu DQo+ICsgKg0KPiArICogRm9yIGVhY2ggcmVjeWNsaW5nIG1idWZzLCB0aGUgcnRlX2V0aF9yZWN5 Y2xlX21idWZzKCkgZnVuY3Rpb24gcGVyZm9ybXMgdGhlDQo+ICsgKiBmb2xsb3dpbmcgb3BlcmF0 aW9uczoNCj4gKyAqDQo+ICsgKiAtIENvcHkgdXNlZCAqcnRlX21idWYqIGJ1ZmZlciBwb2ludGVy cyBmcm9tIFR4IG1idWYgcmluZyBpbnRvIFJ4IG1idWYgcmluZy4NCj4gKyAqDQo+ICsgKiAtIFJl cGxlbmlzaCB0aGUgUnggZGVzY3JpcHRvcnMgd2l0aCB0aGUgcmVjeWNsaW5nICpydGVfbWJ1Ziog bWJ1ZnMgZnJlZWQNCj4gKyAqIGZyb20gdGhlIFR4IG1idWYgcmluZy4NCj4gKyAqDQo+ICsgKiBU aGlzIGZ1bmN0aW9uIHNwaWx0cyBSeCBhbmQgVHggcGF0aCB3aXRoIGRpZmZlcmVudCBjYWxsYmFj ayBmdW5jdGlvbnMuIFRoZQ0KPiArICogY2FsbGJhY2sgZnVuY3Rpb24gcmVjeWNsZV90eF9tYnVm c19yZXVzZSBpcyBmb3IgVHggZHJpdmVyLiBUaGUgY2FsbGJhY2sNCj4gKyAqIGZ1bmN0aW9uIHJl Y3ljbGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxsIGlzIGZvciBSeCBkcml2ZXIuIHJ0ZV9ldGhfcmVj eWNsZV9tYnVmcygpDQo+ICsgKiBjYW4gc3VwcG9ydCB0aGUgY2FzZSB0aGF0IFJ4IEV0aGVybmV0 IGRldmljZSBpcyBkaWZmZXJlbnQgZnJvbSBUeCBFdGhlcm5ldCBkZXZpY2UuDQo+ICsgKg0KPiAr ICogSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHVzZXJzIHRvIHNlbGVjdCB0aGUgUngvVHgg cXVldWUgcGFpciB0byByZWN5Y2xlDQo+ICsgKiBtYnVmcy4gQmVmb3JlIGNhbGwgdGhpcyBmdW5j dGlvbiwgdXNlcnMgbXVzdCBjYWxsIHJ0ZV9ldGhfcmVjeWNsZV9yeHFfaW5mb19nZXQNCj4gKyAq IGZ1bmN0aW9uIHRvIHJldHJpZXZlIHNlbGVjdGVkIFJ4IHF1ZXVlIGluZm9ybWF0aW9uLg0KPiAr ICogQHNlZSBydGVfZXRoX3JlY3ljbGVfcnhxX2luZm9fZ2V0LCBzdHJ1Y3QgcnRlX2V0aF9yZWN5 Y2xlX3J4cV9pbmZvDQo+ICsgKg0KPiArICogQ3VycmVudGx5LCB0aGUgcnRlX2V0aF9yZWN5Y2xl X21idWZzKCkgZnVuY3Rpb24gY2FuIG9ubHkgc3VwcG9ydCBvbmUtdGltZSBwYWlyaW5nDQo+ICsg KiBiZXR3ZWVuIHRoZSByZWNlaXZlIHF1ZXVlIGFuZCB0cmFuc21pdCBxdWV1ZS4gRG8gbm90IHBh aXIgb25lIHJlY2VpdmUgcXVldWUgd2l0aA0KPiArICogbXVsdGlwbGUgdHJhbnNtaXQgcXVldWVz IG9yIHBhaXIgb25lIHRyYW5zbWl0IHF1ZXVlIHdpdGggbXVsdGlwbGUgcmVjZWl2ZSBxdWV1ZXMs DQo+ICsgKiBpbiBvcmRlciB0byBhdm9pZCBtZW1vcnkgZXJyb3IgcmV3cml0aW5nLg0KPiBQcm9i YWJseSBJIGFtIG1pc3Npbmcgc29tZXRoaW5nLCBidXQgd2h5IGl0IGlzIG5vdCBwb3NzaWJsZSB0 byBkbyBzb21ldGhpbmcgbGlrZSB0aGF0Og0KPiANCj4gcnRlX2V0aF9yZWN5Y2xlX21idWZzKHJ4 X3BvcnRfaWQ9WCwgcnhfcXVldWVfaWQ9WSwgdHhfcG9ydF9pZD1OLCB0eF9xdWV1ZV9pZD1NLCAu Li4pOw0KPiAuLi4uDQo+IHJ0ZV9ldGhfcmVjeWNsZV9tYnVmcyhyeF9wb3J0X2lkPVgsIHJ4X3F1 ZXVlX2lkPVksIHR4X3BvcnRfaWQ9TiwgdHhfcXVldWVfaWQ9SywgLi4uKTsNCj4gDQo+IEkuRS4g ZmVlZCByeCBxdWV1ZSBmcm9tIDIgdHggcXVldWVzPw0KPiANCj4gVHdvIHByb2JsZW1zIGZvciB0 aGlzOg0KPiAxLiBJZiB3ZSBoYXZlIDIgdHggcXVldWVzIGZvciByeCwgdGhlIHRocmVhZCBzaG91 bGQgbWFrZSB0aGUgZXh0cmEganVkZ2VtZW50IHRvDQo+IGRlY2lkZSB3aGljaCBvbmUgdG8gY2hv b3NlIGluIHRoZSBkcml2ZXIgbGF5ZXIuDQoNCk5vdCBzdXJlLCB3aHkgb24gdGhlIGRyaXZlciBs YXllcj8NClRoZSBleGFtcGxlIEkgZ2F2ZSBhYm92ZSAtIGRlY2lzaW9uIGlzIG1hZGUgb24gYXBw bGljYXRpb24gbGF5ZXIuDQpMZXRzIHNheSBmaXJzdCBjYWxsIGRpZG4ndCBmcmVlIGVub3VnaCBt YnVmcywgc28gYXBwIGRlY2lkZWQgdG8gdXNlIHNlY29uZCB0eHEgZm9yIHJlYXJtLg0KDQo+IE9u IHRoZSBvdGhlciBoYW5kLCBjdXJyZW50IG1lY2hhbmlzbSBjYW4gc3VwcG9ydCB1c2VycyB0byBz d2l0Y2ggMSB0eHEgdG8gYW5vdGhlciB0aW1lbHkNCj4gaW4gdGhlIGFwcGxpY2F0aW9uIGxheWVy LiBJZiB1c2VyIHdhbnQgdG8gY2hvb3NlIGFub3RoZXIgdHhxLCBoZSBqdXN0IG5lZWQgdG8gY2hh bmdlIHRoZSB0eHFfcXVldWVfaWQgcGFyYW1ldGVyDQo+IGluIHRoZSBBUEkuDQo+IDIuIElmIHlv dSB3YW50IG9uZSByeHEgdG8gc3VwcG9ydCB0d28gdHhxIGF0IHRoZSBzYW1lIHRpbWUsIHRoaXMg bmVlZHMgdG8gYWRkIHNwaW5sb2NrIG9uIGd1YXJkIHZhcmlhYmxlIHRvDQo+IGF2b2lkIG11bHRp LXRocmVhZCBjb25mbGljdC4gU3BpbmxvY2sgd2lsbCBkZWNyZWFzZSB0aGUgZGF0YS1wYXRoIHBl cmZvcm1hbmNlIGdyZWF0bHkuICBUaHVzLCB3ZSBkbyBub3QgY29uc2lkZXINCj4gMSByeHEgbWFw cGluZyBtdWx0aXBsZSB0eHFzIGhlcmUuDQogDQpJIGFtIHRhbGtpbmcgYWJvdXQgc2l0dWF0aW9u IHdoZW4gb25lIHRocmVhZCBjb250cm9scyAyIHR4IHF1ZXVlcy4NCg0KPiArICoNCj4gKyAqIEBw YXJhbSByeF9wb3J0X2lkDQo+ICsgKiBQb3J0IGlkZW50aWZ5aW5nIHRoZSByZWNlaXZlIHNpZGUu DQo+ICsgKiBAcGFyYW0gcnhfcXVldWVfaWQNCj4gKyAqIFRoZSBpbmRleCBvZiB0aGUgcmVjZWl2 ZSBxdWV1ZSBpZGVudGlmeWluZyB0aGUgcmVjZWl2ZSBzaWRlLg0KPiArICogVGhlIHZhbHVlIG11 c3QgYmUgaW4gdGhlIHJhbmdlIFswLCBuYl9yeF9xdWV1ZSAtIDFdIHByZXZpb3VzbHkgc3VwcGxp ZWQNCj4gKyAqIHRvIHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZSgpLg0KPiArICogQHBhcmFtIHR4X3Bv cnRfaWQNCj4gKyAqIFBvcnQgaWRlbnRpZnlpbmcgdGhlIHRyYW5zbWl0IHNpZGUuDQo+ICsgKiBA cGFyYW0gdHhfcXVldWVfaWQNCj4gKyAqIFRoZSBpbmRleCBvZiB0aGUgdHJhbnNtaXQgcXVldWUg aWRlbnRpZnlpbmcgdGhlIHRyYW5zbWl0IHNpZGUuDQo+ICsgKiBUaGUgdmFsdWUgbXVzdCBiZSBp biB0aGUgcmFuZ2UgWzAsIG5iX3R4X3F1ZXVlIC0gMV0gcHJldmlvdXNseSBzdXBwbGllZA0KPiAr ICogdG8gcnRlX2V0aF9kZXZfY29uZmlndXJlKCkuDQo+ICsgKiBAcGFyYW0gcmVjeWNsZV9yeHFf aW5mbw0KPiArICogQSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIG9mIHR5cGUgKnJ0ZV9ldGhfcmVj eWNsZV9yeHFfaW5mbyogd2hpY2ggY29udGFpbnMNCj4gKyAqIHRoZSBpbmZvcm1hdGlvbiBvZiB0 aGUgUnggcXVldWUgbWJ1ZiByaW5nLg0KPiArICogQHJldHVybg0KPiArICogVGhlIG51bWJlciBv ZiByZWN5Y2xpbmcgbWJ1ZnMuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiArc3Rh dGljIGlubGluZSB1aW50MTZfdA0KPiArcnRlX2V0aF9yZWN5Y2xlX21idWZzKHVpbnQxNl90IHJ4 X3BvcnRfaWQsIHVpbnQxNl90IHJ4X3F1ZXVlX2lkLA0KPiArIHVpbnQxNl90IHR4X3BvcnRfaWQs IHVpbnQxNl90IHR4X3F1ZXVlX2lkLA0KPiArIHN0cnVjdCBydGVfZXRoX3JlY3ljbGVfcnhxX2lu Zm8gKnJlY3ljbGVfcnhxX2luZm8pDQo+ICt7DQo+ICsgc3RydWN0IHJ0ZV9ldGhfZnBfb3BzICpw Ow0KPiArIHZvaWQgKnFkOw0KPiArIHVpbnQxNl90IG5iX21idWZzOw0KPiArDQo+ICsjaWZkZWYg UlRFX0VUSERFVl9ERUJVR19UWA0KPiArIGlmICh0eF9wb3J0X2lkID49IFJURV9NQVhfRVRIUE9S VFMgfHwNCj4gKyB0eF9xdWV1ZV9pZCA+PSBSVEVfTUFYX1FVRVVFU19QRVJfUE9SVCkgew0KPiAr IFJURV9FVEhERVZfTE9HKEVSUiwNCj4gKyAiSW52YWxpZCB0eF9wb3J0X2lkPSV1IG9yIHR4X3F1 ZXVlX2lkPSV1XG4iLA0KPiArIHR4X3BvcnRfaWQsIHR4X3F1ZXVlX2lkKTsNCj4gKyByZXR1cm4g MDsNCj4gKyB9DQo+ICsjZW5kaWYNCj4gKw0KPiArIC8qIGZldGNoIHBvaW50ZXIgdG8gcXVldWUg ZGF0YSAqLw0KPiArIHAgPSAmcnRlX2V0aF9mcF9vcHNbdHhfcG9ydF9pZF07DQo+ICsgcWQgPSBw LT50eHEuZGF0YVt0eF9xdWV1ZV9pZF07DQo+ICsNCj4gKyNpZmRlZiBSVEVfRVRIREVWX0RFQlVH X1RYDQo+ICsgUlRFX0VUSF9WQUxJRF9QT1JUSURfT1JfRVJSX1JFVCh0eF9wb3J0X2lkLCAwKTsN Cj4gKw0KPiArIGlmIChxZCA9PSBOVUxMKSB7DQo+ICsgUlRFX0VUSERFVl9MT0coRVJSLCAiSW52 YWxpZCBUeCBxdWV1ZV9pZD0ldSBmb3IgcG9ydF9pZD0ldVxuIiwNCj4gKyB0eF9xdWV1ZV9pZCwg dHhfcG9ydF9pZCk7DQo+ICsgcmV0dXJuIDA7DQo+ICsgfQ0KPiArI2VuZGlmDQo+ICsgaWYgKHAt PnJlY3ljbGVfdHhfbWJ1ZnNfcmV1c2UgPT0gTlVMTCkNCj4gKyByZXR1cm4gMDsNCj4gKw0KPiAr IC8qIENvcHkgdXNlZCAqcnRlX21idWYqIGJ1ZmZlciBwb2ludGVycyBmcm9tIFR4IG1idWYgcmlu Zw0KPiArICogaW50byBSeCBtYnVmIHJpbmcuDQo+ICsgKi8NCj4gKyBuYl9tYnVmcyA9IHAtPnJl Y3ljbGVfdHhfbWJ1ZnNfcmV1c2UocWQsIHJlY3ljbGVfcnhxX2luZm8pOw0KPiArDQo+ICsgLyog SWYgbm8gcmVjeWNsaW5nIG1idWZzLCByZXR1cm4gMC4gKi8NCj4gKyBpZiAobmJfbWJ1ZnMgPT0g MCkNCj4gKyByZXR1cm4gMDsNCj4gKw0KPiArI2lmZGVmIFJURV9FVEhERVZfREVCVUdfUlgNCj4g KyBpZiAocnhfcG9ydF9pZCA+PSBSVEVfTUFYX0VUSFBPUlRTIHx8DQo+ICsgcnhfcXVldWVfaWQg Pj0gUlRFX01BWF9RVUVVRVNfUEVSX1BPUlQpIHsNCj4gKyBSVEVfRVRIREVWX0xPRyhFUlIsICJJ bnZhbGlkIHJ4X3BvcnRfaWQ9JXUgb3IgcnhfcXVldWVfaWQ9JXVcbiIsDQo+ICsgcnhfcG9ydF9p ZCwgcnhfcXVldWVfaWQpOw0KPiArIHJldHVybiAwOw0KPiArIH0NCj4gKyNlbmRpZg0KPiArDQo+ ICsgLyogZmV0Y2ggcG9pbnRlciB0byBxdWV1ZSBkYXRhICovDQo+ICsgcCA9ICZydGVfZXRoX2Zw X29wc1tyeF9wb3J0X2lkXTsNCj4gKyBxZCA9IHAtPnJ4cS5kYXRhW3J4X3F1ZXVlX2lkXTsNCj4g Kw0KPiArI2lmZGVmIFJURV9FVEhERVZfREVCVUdfUlgNCj4gKyBSVEVfRVRIX1ZBTElEX1BPUlRJ RF9PUl9FUlJfUkVUKHJ4X3BvcnRfaWQsIDApOw0KPiArDQo+ICsgaWYgKHFkID09IE5VTEwpIHsN Cj4gKyBSVEVfRVRIREVWX0xPRyhFUlIsICJJbnZhbGlkIFJ4IHF1ZXVlX2lkPSV1IGZvciBwb3J0 X2lkPSV1XG4iLA0KPiArIHJ4X3F1ZXVlX2lkLCByeF9wb3J0X2lkKTsNCj4gKyByZXR1cm4gMDsN Cj4gKyB9DQo+ICsjZW5kaWYNCj4gKw0KPiArIGlmIChwLT5yZWN5Y2xlX3J4X2Rlc2NyaXB0b3Jz X3JlZmlsbCA9PSBOVUxMKQ0KPiArIHJldHVybiAwOw0KPiArDQo+ICsgLyogUmVwbGVuaXNoIHRo ZSBSeCBkZXNjcmlwdG9ycyB3aXRoIHRoZSByZWN5Y2xpbmcNCj4gKyAqIGludG8gUnggbWJ1ZiBy aW5nLg0KPiArICovDQo+ICsgcC0+cmVjeWNsZV9yeF9kZXNjcmlwdG9yc19yZWZpbGwocWQsIG5i X21idWZzKTsNCj4gKw0KPiArIHJldHVybiBuYl9tYnVmczsNCj4gK30NCj4gKw0KPiAgLyoqDQo+ ICAgKiBAd2FybmluZw0KPiAgICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdl IHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhk ZXZfY29yZS5oIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2X2NvcmUuaA0KPiBpbmRleCBkY2Y4YWRh YjkyLi5hMmU2ZWE2YjZjIDEwMDY0NA0KPiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXZfY29y ZS5oDQo+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldl9jb3JlLmgNCj4gQEAgLTU2LDYgKzU2 LDEzIEBAIHR5cGVkZWYgaW50ICgqZXRoX3J4X2Rlc2NyaXB0b3Jfc3RhdHVzX3QpKHZvaWQgKnJ4 cSwgdWludDE2X3Qgb2Zmc2V0KTsNCj4gIC8qKiBAaW50ZXJuYWwgQ2hlY2sgdGhlIHN0YXR1cyBv ZiBhIFR4IGRlc2NyaXB0b3IgKi8NCj4gIHR5cGVkZWYgaW50ICgqZXRoX3R4X2Rlc2NyaXB0b3Jf c3RhdHVzX3QpKHZvaWQgKnR4cSwgdWludDE2X3Qgb2Zmc2V0KTsNCj4gDQo+ICsvKiogQGludGVy bmFsIENvcHkgdXNlZCBtYnVmcyBmcm9tIFR4IG1idWYgcmluZyBpbnRvIFJ4IG1idWYgcmluZyAq Lw0KPiArdHlwZWRlZiB1aW50MTZfdCAoKmV0aF9yZWN5Y2xlX3R4X21idWZzX3JldXNlX3QpKHZv aWQgKnR4cSwNCj4gKyBzdHJ1Y3QgcnRlX2V0aF9yZWN5Y2xlX3J4cV9pbmZvICpyZWN5Y2xlX3J4 cV9pbmZvKTsNCj4gKw0KPiArLyoqIEBpbnRlcm5hbCBSZWZpbGwgUnggZGVzY3JpcHRvcnMgd2l0 aCB0aGUgcmVjeWNsaW5nIG1idWZzICovDQo+ICt0eXBlZGVmIHZvaWQgKCpldGhfcmVjeWNsZV9y eF9kZXNjcmlwdG9yc19yZWZpbGxfdCkodm9pZCAqcnhxLCB1aW50MTZfdCBuYik7DQo+ICsNCj4g IC8qKg0KPiAgICogQGludGVybmFsDQo+ICAgKiBTdHJ1Y3R1cmUgdXNlZCB0byBob2xkIG9wYXF1 ZSBwb2ludGVycyB0byBpbnRlcm5hbCBldGhkZXYgUngvVHgNCj4gQEAgLTkwLDkgKzk3LDExIEBA IHN0cnVjdCBydGVfZXRoX2ZwX29wcyB7DQo+ICAgICAgICAgIGV0aF9yeF9xdWV1ZV9jb3VudF90 IHJ4X3F1ZXVlX2NvdW50Ow0KPiAgICAgICAgICAvKiogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhIFJ4 IGRlc2NyaXB0b3IuICovDQo+ICAgICAgICAgIGV0aF9yeF9kZXNjcmlwdG9yX3N0YXR1c190IHJ4 X2Rlc2NyaXB0b3Jfc3RhdHVzOw0KPiArIC8qKiBSZWZpbGwgUnggZGVzY3JpcHRvcnMgd2l0aCB0 aGUgcmVjeWNsaW5nIG1idWZzLiAqLw0KPiArIGV0aF9yZWN5Y2xlX3J4X2Rlc2NyaXB0b3JzX3Jl ZmlsbF90IHJlY3ljbGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxsOw0KPiBJIGFtIGFmcmFpZCB3ZSBj YW4ndCBwdXQgbmV3IGZpZWxkcyBoZXJlIHdpdGhvdXQgQUJJIGJyZWFrYWdlLg0KPiANCj4gQWdy ZWUNCj4gDQo+IEl0IGhhcyB0byBiZSBiZWxvdyByeHEuDQo+IE5vdyB0aGlua2luZyBhYm91dCBj dXJyZW50IGxheW91dCBwcm9iYWJseSBub3QgdGhlIGJlc3Qgb25lLA0KPiBhbmQgd2hlbiBpbnRy b2R1Y2luZyB0aGlzIHN0cnVjdCwgSSBzaG91bGQgcHJvYmFibHkgcHV0IHJ4cSBlaXRoZXINCj4g b24gdGhlIHRvcCBvZiB0aGUgc3RydWN0LCBvciBvbiB0aGUgbmV4dCBjYWNoZSBsaW5lLg0KPiBC dXQgc3VjaCBjaGFuZ2UgaXMgbm90IHBvc3NpYmxlIHJpZ2h0IG5vdyBhbnl3YXkuDQo+IFNhbWUg c3RvcnkgZm9yIHR4cS4NCj4gDQo+IFRodXMgd2Ugc2hvdWxkIHJlYXJyYW5nZSB0aGUgc3RydWN0 dXJlIGxpa2UgYmVsb3fvvJoNCj4gc3RydWN0IHJ0ZV9ldGhfZnBfb3BzIHsNCj4gICAgIHN0cnVj dCBydGVfZXRoZGV2X3FkYXRhIHJ4cTsNCj4gICAgICAgICAgZXRoX3J4X2J1cnN0X3QgcnhfcGt0 X2J1cnN0Ow0KPiAgICAgICAgICBldGhfcnhfcXVldWVfY291bnRfdCByeF9xdWV1ZV9jb3VudDsN Cj4gICAgICAgICAgZXRoX3J4X2Rlc2NyaXB0b3Jfc3RhdHVzX3QgcnhfZGVzY3JpcHRvcl9zdGF0 dXM7DQo+ICAgICAgICBldGhfcmVjeWNsZV9yeF9kZXNjcmlwdG9yc19yZWZpbGxfdCByZWN5Y2xl X3J4X2Rlc2NyaXB0b3JzX3JlZmlsbDsNCj4gICAgICAgICAgICAgICB1aW50cHRyX3QgcmVzZXJ2 ZWQxWzJdOw0KPiB9DQoNClllcywgSSB0aGluayBzdWNoIGxheW91dCB3aWxsIGJlIGJldHRlci4N ClRoZSBvbmx5IHByb2JsZW0gaGVyZSAtIHdlIGhhdmUgdG8gd2FpdCBmb3IgMjMuMTEgZm9yIHRo YXQuIA0KDQo+IA0KPiANCj4gICAgICAgICAgLyoqIFJ4IHF1ZXVlcyBkYXRhLiAqLw0KPiAgICAg ICAgICBzdHJ1Y3QgcnRlX2V0aGRldl9xZGF0YSByeHE7DQo+IC0gdWludHB0cl90IHJlc2VydmVk MVszXTsNCj4gKyB1aW50cHRyX3QgcmVzZXJ2ZWQxWzJdOw0KPiAgICAgICAgICAvKipAfSovDQo+ IA0KPiAgICAgICAgICAvKipAeyovDQo+IEBAIC0xMDYsOSArMTE1LDExIEBAIHN0cnVjdCBydGVf ZXRoX2ZwX29wcyB7DQo+ICAgICAgICAgIGV0aF90eF9wcmVwX3QgdHhfcGt0X3ByZXBhcmU7DQo+ ICAgICAgICAgIC8qKiBDaGVjayB0aGUgc3RhdHVzIG9mIGEgVHggZGVzY3JpcHRvci4gKi8NCj4g ICAgICAgICAgZXRoX3R4X2Rlc2NyaXB0b3Jfc3RhdHVzX3QgdHhfZGVzY3JpcHRvcl9zdGF0dXM7 DQo+ICsgLyoqIENvcHkgdXNlZCBtYnVmcyBmcm9tIFR4IG1idWYgcmluZyBpbnRvIFJ4LiAqLw0K PiArIGV0aF9yZWN5Y2xlX3R4X21idWZzX3JldXNlX3QgcmVjeWNsZV90eF9tYnVmc19yZXVzZTsN Cj4gICAgICAgICAgLyoqIFR4IHF1ZXVlcyBkYXRhLiAqLw0KPiAgICAgICAgICBzdHJ1Y3QgcnRl X2V0aGRldl9xZGF0YSB0eHE7DQo+IC0gdWludHB0cl90IHJlc2VydmVkMlszXTsNCj4gKyB1aW50 cHRyX3QgcmVzZXJ2ZWQyWzJdOw0KPiAgICAgICAgICAvKipAfSovDQo+IA0KPiAgfSBfX3J0ZV9j YWNoZV9hbGlnbmVkOw0KPiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi92ZXJzaW9uLm1hcCBiL2xp Yi9ldGhkZXYvdmVyc2lvbi5tYXANCj4gaW5kZXggMzU3ZDFhODhjMC4uNDVjNDE3ZjZiZCAxMDA2 NDQNCj4gLS0tIGEvbGliL2V0aGRldi92ZXJzaW9uLm1hcA0KPiArKysgYi9saWIvZXRoZGV2L3Zl cnNpb24ubWFwDQo+IEBAIC0yOTksNiArMjk5LDEwIEBAIEVYUEVSSU1FTlRBTCB7DQo+ICAgICAg ICAgIHJ0ZV9mbG93X2FjdGlvbl9oYW5kbGVfcXVlcnlfdXBkYXRlOw0KPiAgICAgICAgICBydGVf Zmxvd19hc3luY19hY3Rpb25faGFuZGxlX3F1ZXJ5X3VwZGF0ZTsNCj4gICAgICAgICAgcnRlX2Zs b3dfYXN5bmNfY3JlYXRlX2J5X2luZGV4Ow0KPiArDQo+ICsgIyBhZGRlZCBpbiAyMy4wNw0KPiAr IHJ0ZV9ldGhfcmVjeWNsZV9tYnVmczsNCj4gKyBydGVfZXRoX3JlY3ljbGVfcnhfcXVldWVfaW5m b19nZXQ7DQo+ICB9Ow0KPiANCj4gIElOVEVSTkFMIHsNCj4gLS0NCj4gMi4yNS4xDQo+DQo=