From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0085.outbound.protection.outlook.com [104.47.1.85]) by dpdk.org (Postfix) with ESMTP id 969D51B82B for ; Tue, 10 Apr 2018 17:22:49 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=UQ180KuWk4xe9B8S3Gn6ZwSFLgUX1k1b2dt2YLZzNIo=; b=iivc0p2Q22z9u4f+49E8dGLu5u6pVENUMmrJ4gBNWcamBJz1eMqSFWCi3N8u08dmNuq3jVBKZscGTMwqZijrXz1ngfbQWT0GQ3iGNy0v9gdgPlOz1XNQ+XqAs/WF54ilTtev6wArh4wMQMOax6pDM02SYPWGgvgWO7HJmDo07PM= Received: from VI1PR05MB1678.eurprd05.prod.outlook.com (10.165.235.152) by VI1PR05MB4253.eurprd05.prod.outlook.com (52.133.12.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.653.12; Tue, 10 Apr 2018 15:22:46 +0000 Received: from VI1PR05MB1678.eurprd05.prod.outlook.com ([fe80::b8e2:e81f:98a:b6d0]) by VI1PR05MB1678.eurprd05.prod.outlook.com ([fe80::b8e2:e81f:98a:b6d0%14]) with mapi id 15.20.0653.018; Tue, 10 Apr 2018 15:22:46 +0000 From: "Xueming(Steven) Li" To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= CC: Shahaf Shuler , "dev@dpdk.org" Thread-Topic: [PATCH v2 01/15] net/mlx5: support 16 hardware priorities Thread-Index: AQHT0NCykGo5ACUCdEy/Ke6j8trDSaP6EmUAgAAD/OA= Date: Tue, 10 Apr 2018 15:22:46 +0000 Message-ID: References: <20180410133415.189905-1-xuemingl@mellanox.com> <20180410133415.189905-2-xuemingl@mellanox.com> <20180410144130.6byrrolegsimzyu3@laranjeiro-vm.dev.6wind.com> In-Reply-To: <20180410144130.6byrrolegsimzyu3@laranjeiro-vm.dev.6wind.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=xuemingl@mellanox.com; x-originating-ip: [114.83.166.179] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB4253; 7:hP/vZPbP6sh7k8crtT2tWfXNhCw0U5wgqb09+zxyR5swH5i6sEgiMfxYy71qDKmQoVEpwqZfi8WNWb+OKR2RARqv0+KS1L7DXl273ji5HhXsC/3GvzCbDvw7DpsgwCxySkucD0/TKaNXXOJ64IYYEc5JwsYAnGXrsmgELGSFoJkOuQYteqTwSYW4r6ncK8PW6pXOC8EcIpVCUPk4tS7wpxIlCzflLmZ4R1ktkbaVetUWqYMQwICn89rzpkNL/tC8 x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant X-MS-Office365-Filtering-Correlation-Id: ef04cceb-02f5-418f-84a4-08d59ef6e9f7 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(3008032)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB4253; x-ms-traffictypediagnostic: VI1PR05MB4253: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3002001)(3231221)(944501327)(52105095)(93006095)(93001095)(6055026)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123562045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR05MB4253; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB4253; x-forefront-prvs: 0638FD5066 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39380400002)(39860400002)(346002)(366004)(376002)(189003)(199004)(13464003)(81166006)(6916009)(25786009)(105586002)(33656002)(229853002)(4326008)(305945005)(5250100002)(3280700002)(186003)(26005)(68736007)(7736002)(5660300001)(14454004)(74316002)(476003)(6116002)(478600001)(3660700001)(76176011)(2900100001)(2906002)(6436002)(6506007)(81156014)(54906003)(59450400001)(6246003)(53936002)(55016002)(53546011)(316002)(9686003)(97736004)(86362001)(66066001)(3846002)(102836004)(7696005)(99286004)(446003)(106356001)(486006)(11346002)(8936002)(8676002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB4253; H:VI1PR05MB1678.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: wx8X74wQPZRhjXjSfrg4d/Qo/TVbYi/kGHXx+6aII8rogIARkdeeOaTx8+veijGVsda7zLC9U3jWZ/dZh3ydnEm7rEdK2RL2Ajf76au3SS0YkWQG5N9G1rBjUlGV8iZJM6A09ZpU0r4UIC7U1Kna7fLX2ANvq0k7XjAChf79++we7dzZEA1UtMDQSNxYuBbloz08+sKZdLiqqi0vHI4ZI0xvoMxcHTmw79fcpe7Uf8GyKprp1+GZrDUW/fUAn9UDYUM9fnw4OQabkdOD8vUXAsDTwPGbL7WC2GF/1dg0QwONNyfr7eMM4afJn42r+2uLpjnxG/UQDb7GTo5UTjR32UL9A2tHVl5zQB9pfXlzAiizE9DV/iN/4llem9trZdmaUitUFa+mmILErWCrxAwUHJj/dthd+JrhdPILqwccYzI= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef04cceb-02f5-418f-84a4-08d59ef6e9f7 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Apr 2018 15:22:46.5374 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4253 Subject: Re: [dpdk-dev] [PATCH v2 01/15] net/mlx5: support 16 hardware priorities 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, 10 Apr 2018 15:22:49 -0000 SGkgTmVsaW8sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTsOpbGlv IExhcmFuamVpcm8gPG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tPg0KPiBTZW50OiBUdWVzZGF5 LCBBcHJpbCAxMCwgMjAxOCAxMDo0MiBQTQ0KPiBUbzogWHVlbWluZyhTdGV2ZW4pIExpIDx4dWVt aW5nbEBtZWxsYW5veC5jb20+DQo+IENjOiBTaGFoYWYgU2h1bGVyIDxzaGFoYWZzQG1lbGxhbm94 LmNvbT47IGRldkBkcGRrLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDAxLzE1XSBuZXQv bWx4NTogc3VwcG9ydCAxNiBoYXJkd2FyZSBwcmlvcml0aWVzDQo+IA0KPiBPbiBUdWUsIEFwciAx MCwgMjAxOCBhdCAwOTozNDowMVBNICswODAwLCBYdWVtaW5nIExpIHdyb3RlOg0KPiA+IEFkanVz dCBmbG93IHByaW9yaXR5IG1hcHBpbmcgdG8gYWRhcHQgbmV3IGhhcmR3YXJlIDE2IHZlcmIgZmxv dw0KPiA+IHByaW9yaXRlcyBzdXBwb3J0Og0KPiA+IDAtMzogUlRFIEZMT1cgdHVubmVsIHJ1bGUN Cj4gPiA0LTc6IFJURSBGTE9XIG5vbi10dW5uZWwgcnVsZQ0KPiA+IDgtMTU6IFBNRCBjb250cm9s IGZsb3cNCj4gDQo+IFRoaXMgY29tbWl0IGxvZyBpcyBpbmR1Y2luZyBwZW9wbGUgaW4gZXJyb3Is IHRoaXMgYW1vdW50IG9mIHByaW9yaXR5DQo+IGRlcGVuZHMgb24gdGhlIE1lbGxhbm94IE9GRUQg aW5zdGFsbGVkLCBpdCBpcyBub3QgYXZhaWxhYmxlIG9uIHVwc3RyZWFtDQo+IExpbnV4IGtlcm5l bCB5ZXQgbm9yIGluIHRoZSBjdXJyZW50IE1lbGxhbm94IE9GRUQgR0EuDQo+IA0KPiBXaGF0IGhh cHBlbnMgd2hlbiB0aG9zZSBhbW91bnQgb2YgcHJpb3JpdHkgYXJlIG5vdCBhdmFpbGFibGUsIGlz IGl0DQo+IHJlbW92aW5nIGEgZnVuY3Rpb25hbGl0eT8gIFdpbGwgaXQgY29sbGlkZSB3aXRoIG90 aGVyIGZsb3dzPw0KDQpJZiAxNiAgcHJpb3JpdGllcyBub3QgYXZhaWxhYmxlLCBzaW1wbHkgYmVo YXZpb3IgYXMgOCBwcmlvcml0aWVzLg0KDQo+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IFh1ZW1pbmcg TGkgPHh1ZW1pbmdsQG1lbGxhbm94LmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9uZXQvbWx4 NS9tbHg1LmMgICAgICAgICB8ICAxMCArKysrDQo+ID4gIGRyaXZlcnMvbmV0L21seDUvbWx4NS5o ICAgICAgICAgfCAgIDggKysrDQo+ID4gIGRyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmMgICAg fCAxMDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tDQo+IC0tLS0tLS0NCj4gPiAg ZHJpdmVycy9uZXQvbWx4NS9tbHg1X3RyaWdnZXIuYyB8ICAgOCAtLS0NCj4gPiAgNCBmaWxlcyBj aGFuZ2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1LmMgYi9kcml2ZXJzL25ldC9tbHg1L21seDUu YyBpbmRleA0KPiA+IGNmYWI1NTg5Ny4uYTFmMjc5OWU1IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZl cnMvbmV0L21seDUvbWx4NS5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1LmMNCj4g PiBAQCAtMTk3LDYgKzE5Nyw3IEBAIG1seDVfZGV2X2Nsb3NlKHN0cnVjdCBydGVfZXRoX2RldiAq ZGV2KQ0KPiA+ICAJCXByaXYtPnR4cXNfbiA9IDA7DQo+ID4gIAkJcHJpdi0+dHhxcyA9IE5VTEw7 DQo+ID4gIAl9DQo+ID4gKwltbHg1X2Zsb3dfZGVsZXRlX2Ryb3BfcXVldWUoZGV2KTsNCj4gPg0K PiA+ICAJaWYgKHByaXYtPnBkICE9IE5VTEwpIHsNCj4gPiAgCQlhc3NlcnQocHJpdi0+Y3R4ICE9 IE5VTEwpOw0KPiA+ICAJCWNsYWltX3plcm8obWx4NV9nbHVlLT5kZWFsbG9jX3BkKHByaXYtPnBk KSk7DQo+ID4gQEAgLTk5Myw2ICs5OTQsMTUgQEAgbWx4NV9wY2lfcHJvYmUoc3RydWN0IHJ0ZV9w Y2lfZHJpdmVyICpwY2lfZHJ2DQo+IF9fcnRlX3VudXNlZCwNCj4gPiAgCQltbHg1X3NldF9saW5r X3VwKGV0aF9kZXYpOw0KPiA+ICAJCS8qIFN0b3JlIGRldmljZSBjb25maWd1cmF0aW9uIG9uIHBy aXZhdGUgc3RydWN0dXJlLiAqLw0KPiA+ICAJCXByaXYtPmNvbmZpZyA9IGNvbmZpZzsNCj4gPiAr CQkvKiBDcmVhdGUgZHJvcCBxdWV1ZS4gKi8NCj4gPiArCQllcnIgPSBtbHg1X2Zsb3dfY3JlYXRl X2Ryb3BfcXVldWUoZXRoX2Rldik7DQo+ID4gKwkJaWYgKGVycikgew0KPiA+ICsJCQlEUlZfTE9H KEVSUiwgInBvcnQgJXUgZHJvcCBxdWV1ZSBhbGxvY2F0aW9uIGZhaWxlZDogJXMiLA0KPiA+ICsJ CQkJZXRoX2Rldi0+ZGF0YS0+cG9ydF9pZCwgc3RyZXJyb3IocnRlX2Vycm5vKSk7DQo+ID4gKwkJ CWdvdG8gcG9ydF9lcnJvcjsNCj4gPiArCQl9DQo+ID4gKwkJLyogU3VwcG9ydGVkIGZsb3cgcHJp b3JpdHkgbnVtYmVyIGRldGVjdGlvbi4gKi8NCj4gPiArCQltbHg1X2Zsb3dfcHJpb3JpdGllc19k ZXRlY3QoZXRoX2Rldik7DQo+ID4gIAkJY29udGludWU7DQo+ID4gIHBvcnRfZXJyb3I6DQo+ID4g IAkJaWYgKHByaXYpDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NS5oIGIv ZHJpdmVycy9uZXQvbWx4NS9tbHg1LmggaW5kZXgNCj4gPiA2M2IyNGU2YmIuLjcwODI3MmY2ZCAx MDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC9tbHg1L21seDUuaA0KPiA+ICsrKyBiL2RyaXZl cnMvbmV0L21seDUvbWx4NS5oDQo+ID4gQEAgLTg5LDYgKzg5LDggQEAgc3RydWN0IG1seDVfZGV2 X2NvbmZpZyB7DQo+ID4gIAl1bnNpZ25lZCBpbnQgcnhfdmVjX2VuOjE7IC8qIFJ4IHZlY3RvciBp cyBlbmFibGVkLiAqLw0KPiA+ICAJdW5zaWduZWQgaW50IG1wd19oZHJfZHNlZzoxOyAvKiBFbmFi bGUgRFNFR3MgaW4gdGhlIHRpdGxlIFdRRUJCLiAqLw0KPiA+ICAJdW5zaWduZWQgaW50IHZmX25s X2VuOjE7IC8qIEVuYWJsZSBOZXRsaW5rIHJlcXVlc3RzIGluIFZGIG1vZGUuICovDQo+ID4gKwl1 bnNpZ25lZCBpbnQgZmxvd19wcmlvcml0eV9zaGlmdDsgLyogTm9uLXR1bm5lbCBmbG93IHByaW9y aXR5IHNoaWZ0Lg0KPiAqLw0KPiA+ICsJdW5zaWduZWQgaW50IGNvbnRyb2xfZmxvd19wcmlvcml0 eTsgLyogQ29udHJvbCBmbG93IHByaW9yaXR5LiAqLw0KPiA+ICAJdW5zaWduZWQgaW50IHRzb19t YXhfcGF5bG9hZF9zejsgLyogTWF4aW11bSBUQ1AgcGF5bG9hZCBmb3IgVFNPLiAqLw0KPiA+ICAJ dW5zaWduZWQgaW50IGluZF90YWJsZV9tYXhfc2l6ZTsgLyogTWF4aW11bSBpbmRpcmVjdGlvbiB0 YWJsZSBzaXplLg0KPiAqLw0KPiA+ICAJaW50IHR4cV9pbmxpbmU7IC8qIE1heGltdW0gcGFja2V0 IHNpemUgZm9yIGlubGluaW5nLiAqLyBAQCAtMTA1LDYNCj4gPiArMTA3LDExIEBAIGVudW0gbWx4 NV92ZXJic19hbGxvY190eXBlIHsNCj4gPiAgCU1MWDVfVkVSQlNfQUxMT0NfVFlQRV9SWF9RVUVV RSwNCj4gPiAgfTsNCj4gPg0KPiA+ICsvKiA4IFZlcmJzIHByaW9yaXRpZXMgcGVyIGZsb3cuICov DQo+ID4gKyNkZWZpbmUgTUxYNV9WRVJCU19GTE9XX1BSSU9fOCA4DQo+ID4gKy8qIDQgVmVyYnMg cHJpb3JpdGllcyBwZXIgZmxvdy4gKi8NCj4gPiArI2RlZmluZSBNTFg1X1ZFUkJTX0ZMT1dfUFJJ T180IDQNCj4gPiArDQo+ID4gIC8qKg0KPiA+ICAgKiBWZXJicyBhbGxvY2F0b3IgbmVlZHMgYSBj b250ZXh0IHRvIGtub3cgaW4gdGhlIGNhbGxiYWNrIHdoaWNoIGtpbmQNCj4gb2YNCj4gPiAgICog cmVzb3VyY2VzIGl0IGlzIGFsbG9jYXRpbmcuDQo+ID4gQEAgLTI1Myw2ICsyNjAsNyBAQCBpbnQg bWx4NV90cmFmZmljX3Jlc3RhcnQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOw0KPiA+DQo+ID4g IC8qIG1seDVfZmxvdy5jICovDQo+ID4NCj4gPiArdm9pZCBtbHg1X2Zsb3dfcHJpb3JpdGllc19k ZXRlY3Qoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOw0KPiA+ICBpbnQgbWx4NV9mbG93X3ZhbGlk YXRlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAJCSAgICAgICBjb25zdCBzdHJ1Y3Qg cnRlX2Zsb3dfYXR0ciAqYXR0ciwNCj4gPiAgCQkgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93 X2l0ZW0gaXRlbXNbXSwgZGlmZiAtLWdpdA0KPiA+IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zs b3cuYyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmMgaW5kZXgNCj4gPiAyODg2MTA2MjAu LjM5NDc2MDQxOCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5j DQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYw0KPiA+IEBAIC0zMiw5ICsz Miw2IEBADQo+ID4gICNpbmNsdWRlICJtbHg1X3BybS5oIg0KPiA+ICAjaW5jbHVkZSAibWx4NV9n bHVlLmgiDQo+ID4NCj4gPiAtLyogRGVmaW5lIG1pbmltYWwgcHJpb3JpdHkgZm9yIGNvbnRyb2wg cGxhbmUgZmxvd3MuICovIC0jZGVmaW5lDQo+ID4gTUxYNV9DVFJMX0ZMT1dfUFJJT1JJVFkgNA0K PiA+IC0NCj4gPiAgLyogSW50ZXJuZXQgUHJvdG9jb2wgdmVyc2lvbnMuICovDQo+ID4gICNkZWZp bmUgTUxYNV9JUFY0IDQNCj4gPiAgI2RlZmluZSBNTFg1X0lQVjYgNg0KPiA+IEBAIC0xMjksNyAr MTI2LDcgQEAgY29uc3Qgc3RydWN0IGhhc2hfcnhxX2luaXQgaGFzaF9yeHFfaW5pdFtdID0gew0K PiA+ICAJCQkJSUJWX1JYX0hBU0hfU1JDX1BPUlRfVENQIHwNCj4gPiAgCQkJCUlCVl9SWF9IQVNI X0RTVF9QT1JUX1RDUCksDQo+ID4gIAkJLmRwZGtfcnNzX2hmID0gRVRIX1JTU19OT05GUkFHX0lQ VjRfVENQLA0KPiA+IC0JCS5mbG93X3ByaW9yaXR5ID0gMSwNCj4gPiArCQkuZmxvd19wcmlvcml0 eSA9IDAsDQo+ID4gIAkJLmlwX3ZlcnNpb24gPSBNTFg1X0lQVjQsDQo+ID4gIAl9LA0KPiA+ICAJ W0hBU0hfUlhRX1VEUFY0XSA9IHsNCj4gPiBAQCAtMTM4LDcgKzEzNSw3IEBAIGNvbnN0IHN0cnVj dCBoYXNoX3J4cV9pbml0IGhhc2hfcnhxX2luaXRbXSA9IHsNCj4gPiAgCQkJCUlCVl9SWF9IQVNI X1NSQ19QT1JUX1VEUCB8DQo+ID4gIAkJCQlJQlZfUlhfSEFTSF9EU1RfUE9SVF9VRFApLA0KPiA+ ICAJCS5kcGRrX3Jzc19oZiA9IEVUSF9SU1NfTk9ORlJBR19JUFY0X1VEUCwNCj4gPiAtCQkuZmxv d19wcmlvcml0eSA9IDEsDQo+ID4gKwkJLmZsb3dfcHJpb3JpdHkgPSAwLA0KPiA+ICAJCS5pcF92 ZXJzaW9uID0gTUxYNV9JUFY0LA0KPiA+ICAJfSwNCj4gPiAgCVtIQVNIX1JYUV9JUFY0XSA9IHsN Cj4gPiBAQCAtMTQ2LDcgKzE0Myw3IEBAIGNvbnN0IHN0cnVjdCBoYXNoX3J4cV9pbml0IGhhc2hf cnhxX2luaXRbXSA9IHsNCj4gPiAgCQkJCUlCVl9SWF9IQVNIX0RTVF9JUFY0KSwNCj4gPiAgCQku ZHBka19yc3NfaGYgPSAoRVRIX1JTU19JUFY0IHwNCj4gPiAgCQkJCUVUSF9SU1NfRlJBR19JUFY0 KSwNCj4gPiAtCQkuZmxvd19wcmlvcml0eSA9IDIsDQo+ID4gKwkJLmZsb3dfcHJpb3JpdHkgPSAx LA0KPiA+ICAJCS5pcF92ZXJzaW9uID0gTUxYNV9JUFY0LA0KPiA+ICAJfSwNCj4gPiAgCVtIQVNI X1JYUV9UQ1BWNl0gPSB7DQo+ID4gQEAgLTE1NSw3ICsxNTIsNyBAQCBjb25zdCBzdHJ1Y3QgaGFz aF9yeHFfaW5pdCBoYXNoX3J4cV9pbml0W10gPSB7DQo+ID4gIAkJCQlJQlZfUlhfSEFTSF9TUkNf UE9SVF9UQ1AgfA0KPiA+ICAJCQkJSUJWX1JYX0hBU0hfRFNUX1BPUlRfVENQKSwNCj4gPiAgCQku ZHBka19yc3NfaGYgPSBFVEhfUlNTX05PTkZSQUdfSVBWNl9UQ1AsDQo+ID4gLQkJLmZsb3dfcHJp b3JpdHkgPSAxLA0KPiA+ICsJCS5mbG93X3ByaW9yaXR5ID0gMCwNCj4gPiAgCQkuaXBfdmVyc2lv biA9IE1MWDVfSVBWNiwNCj4gPiAgCX0sDQo+ID4gIAlbSEFTSF9SWFFfVURQVjZdID0gew0KPiA+ IEBAIC0xNjQsNyArMTYxLDcgQEAgY29uc3Qgc3RydWN0IGhhc2hfcnhxX2luaXQgaGFzaF9yeHFf aW5pdFtdID0gew0KPiA+ICAJCQkJSUJWX1JYX0hBU0hfU1JDX1BPUlRfVURQIHwNCj4gPiAgCQkJ CUlCVl9SWF9IQVNIX0RTVF9QT1JUX1VEUCksDQo+ID4gIAkJLmRwZGtfcnNzX2hmID0gRVRIX1JT U19OT05GUkFHX0lQVjZfVURQLA0KPiA+IC0JCS5mbG93X3ByaW9yaXR5ID0gMSwNCj4gPiArCQku Zmxvd19wcmlvcml0eSA9IDAsDQo+ID4gIAkJLmlwX3ZlcnNpb24gPSBNTFg1X0lQVjYsDQo+ID4g IAl9LA0KPiA+ICAJW0hBU0hfUlhRX0lQVjZdID0gew0KPiA+IEBAIC0xNzIsMTMgKzE2OSwxMyBA QCBjb25zdCBzdHJ1Y3QgaGFzaF9yeHFfaW5pdCBoYXNoX3J4cV9pbml0W10gPSB7DQo+ID4gIAkJ CQlJQlZfUlhfSEFTSF9EU1RfSVBWNiksDQo+ID4gIAkJLmRwZGtfcnNzX2hmID0gKEVUSF9SU1Nf SVBWNiB8DQo+ID4gIAkJCQlFVEhfUlNTX0ZSQUdfSVBWNiksDQo+ID4gLQkJLmZsb3dfcHJpb3Jp dHkgPSAyLA0KPiA+ICsJCS5mbG93X3ByaW9yaXR5ID0gMSwNCj4gPiAgCQkuaXBfdmVyc2lvbiA9 IE1MWDVfSVBWNiwNCj4gPiAgCX0sDQo+ID4gIAlbSEFTSF9SWFFfRVRIXSA9IHsNCj4gPiAgCQku aGFzaF9maWVsZHMgPSAwLA0KPiA+ICAJCS5kcGRrX3Jzc19oZiA9IDAsDQo+ID4gLQkJLmZsb3df cHJpb3JpdHkgPSAzLA0KPiA+ICsJCS5mbG93X3ByaW9yaXR5ID0gMiwNCj4gPiAgCX0sDQo+ID4g IH07DQo+IA0KPiBJZiB0aGUgYW1vdW50IG9mIHByaW9yaXRpZXMgcmVtYWlucyA4LCB5b3UgYXJl IHJlbW92aW5nIHRoZSBwcmlvcml0eSBmb3INCj4gdGhlIHR1bm5lbCBmbG93cyBpbnRyb2R1Y2Vk IGJ5IGNvbW1pdCA3NDkzNjU3MTdmNWMgKCJuZXQvbWx4NTogY2hhbmdlDQo+IHR1bm5lbCBmbG93 IHByaW9yaXR5IikNCj4gDQo+IFBsZWFzZSBrZWVwIHRoaXMgZnVuY3Rpb25hbGl0eSB3aGVuIHRo aXMgcGF0Y2ggZmFpbHMgdG8gZ2V0IHRoZSBleHBlY3RlZA0KPiAxNiBWZXJicyBwcmlvcml0aWVz Lg0KDQpUaGVzZSBwcmlvcml0eSBzaGlmdCBhcmUgZGlmZmVyZW50IGluIDE2IHByaW9yaXRpZXMg c2NlbmFyaW8sIEkgY2hhbmdlZCBpdA0KdG8gY2FsY3VsYXRpb24uIEluIGZ1bmN0aW9uIG1seDVf Zmxvd19wcmlvcml0aWVzX2RldGVjdCgpLCBwcmlvcml0eSBzaGlmdCANCndpbGwgYmUgMSBpZiA4 IHByaW9yaXRpZXMsIDQgaW4gY2FzZSBvZiAxNiBwcmlvcml0aWVzLiBQbGVhc2UgcmVmZXIgdG8g Y2hhbmdlcw0KaW4gZnVuY3Rpb24gbWx4NV9mbG93X3VwZGF0ZV9wcmlvcml0eSgpIGFzIHdlbGwu DQoNCj4gDQo+ID4gQEAgLTUzNiw2ICs1MzMsOCBAQCBtbHg1X2Zsb3dfaXRlbV92YWxpZGF0ZShj b25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbQ0KPiA+ICppdGVtLA0KPiA+ICAvKioNCj4gPiAgICog RXh0cmFjdCBhdHRyaWJ1dGUgdG8gdGhlIHBhcnNlci4NCj4gPiAgICoNCj4gPiArICogQHBhcmFt IGRldg0KPiA+ICsgKiAgIFBvaW50ZXIgdG8gRXRoZXJuZXQgZGV2aWNlLg0KPiA+ICAgKiBAcGFy YW1baW5dIGF0dHINCj4gPiAgICogICBGbG93IHJ1bGUgYXR0cmlidXRlcy4NCj4gPiAgICogQHBh cmFtW291dF0gZXJyb3INCj4gPiBAQCAtNTQ1LDkgKzU0NCwxMiBAQCBtbHg1X2Zsb3dfaXRlbV92 YWxpZGF0ZShjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbQ0KPiAqaXRlbSwNCj4gPiAgICogICAw IG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJybm8gdmFsdWUgb3RoZXJ3aXNlIGFuZCBydGVfZXJy bm8gaXMNCj4gc2V0Lg0KPiA+ICAgKi8NCj4gPiAgc3RhdGljIGludA0KPiA+IC1tbHg1X2Zsb3df Y29udmVydF9hdHRyaWJ1dGVzKGNvbnN0IHN0cnVjdCBydGVfZmxvd19hdHRyICphdHRyLA0KPiA+ ICttbHg1X2Zsb3dfY29udmVydF9hdHRyaWJ1dGVzKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0K PiA+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCBydGVfZmxvd19hdHRyICphdHRyLA0KPiA+ICAJCQkg ICAgIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpICB7DQo+ID4gKwlzdHJ1Y3QgcHJpdiAq cHJpdiA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gKw0KPiA+ICAJaWYgKGF0dHItPmdy b3VwKSB7DQo+ID4gIAkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0KPiA+ICAJ CQkJICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9BVFRSX0dST1VQLCBAQCAtNTU1LDcNCj4gKzU1Nyw3 IEBADQo+ID4gbWx4NV9mbG93X2NvbnZlcnRfYXR0cmlidXRlcyhjb25zdCBzdHJ1Y3QgcnRlX2Zs b3dfYXR0ciAqYXR0ciwNCj4gPiAgCQkJCSAgICJncm91cHMgYXJlIG5vdCBzdXBwb3J0ZWQiKTsN Cj4gPiAgCQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiAgCX0NCj4gPiAtCWlmIChhdHRyLT5wcmlv cml0eSAmJiBhdHRyLT5wcmlvcml0eSAhPSBNTFg1X0NUUkxfRkxPV19QUklPUklUWSkgew0KPiA+ ICsJaWYgKGF0dHItPnByaW9yaXR5ID4gcHJpdi0+Y29uZmlnLmNvbnRyb2xfZmxvd19wcmlvcml0 eSkgew0KPiA+ICAJCXJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRU5PVFNVUCwNCj4gPiAgCQkJ CSAgIFJURV9GTE9XX0VSUk9SX1RZUEVfQVRUUl9QUklPUklUWSwNCj4gPiAgCQkJCSAgIE5VTEws DQo+ID4gQEAgLTkwMCwzMCArOTAyLDM4IEBAIG1seDVfZmxvd19jb252ZXJ0X2FsbG9jYXRlKHVu c2lnbmVkIGludCBzaXplLA0KPiBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKQ0KPiA+ICAg KiBNYWtlIGlubmVyIHBhY2tldCBtYXRjaGluZyB3aXRoIGFuIGhpZ2hlciBwcmlvcml0eSBmcm9t IHRoZSBub24NCj4gSW5uZXINCj4gPiAgICogbWF0Y2hpbmcuDQo+ID4gICAqDQo+ID4gKyAqIEBw YXJhbSBkZXYNCj4gPiArICogICBQb2ludGVyIHRvIEV0aGVybmV0IGRldmljZS4NCj4gPiAgICog QHBhcmFtW2luLCBvdXRdIHBhcnNlcg0KPiA+ICAgKiAgIEludGVybmFsIHBhcnNlciBzdHJ1Y3R1 cmUuDQo+ID4gICAqIEBwYXJhbSBhdHRyDQo+ID4gICAqICAgVXNlciBmbG93IGF0dHJpYnV0ZS4N Cj4gPiAgICovDQo+ID4gIHN0YXRpYyB2b2lkDQo+ID4gLW1seDVfZmxvd191cGRhdGVfcHJpb3Jp dHkoc3RydWN0IG1seDVfZmxvd19wYXJzZSAqcGFyc2VyLA0KPiA+ICttbHg1X2Zsb3dfdXBkYXRl X3ByaW9yaXR5KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICsJCQkgIHN0cnVjdCBtbHg1 X2Zsb3dfcGFyc2UgKnBhcnNlciwNCj4gPiAgCQkJICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYXR0 ciAqYXR0cikgIHsNCj4gPiArCXN0cnVjdCBwcml2ICpwcml2ID0gZGV2LT5kYXRhLT5kZXZfcHJp dmF0ZTsNCj4gPiAgCXVuc2lnbmVkIGludCBpOw0KPiA+ICsJdWludDE2X3QgcHJpb3JpdHk7DQo+ ID4NCj4gPiArCWlmIChwcml2LT5jb25maWcuZmxvd19wcmlvcml0eV9zaGlmdCA9PSAxKQ0KPiA+ ICsJCXByaW9yaXR5ID0gYXR0ci0+cHJpb3JpdHkgKiBNTFg1X1ZFUkJTX0ZMT1dfUFJJT180Ow0K PiA+ICsJZWxzZQ0KPiA+ICsJCXByaW9yaXR5ID0gYXR0ci0+cHJpb3JpdHkgKiBNTFg1X1ZFUkJT X0ZMT1dfUFJJT184Ow0KPiA+ICsJaWYgKCFwYXJzZXItPmlubmVyKQ0KPiA+ICsJCXByaW9yaXR5 ICs9IHByaXYtPmNvbmZpZy5mbG93X3ByaW9yaXR5X3NoaWZ0Ow0KPiA+ICAJaWYgKHBhcnNlci0+ ZHJvcCkgew0KPiA+IC0JCXBhcnNlci0+cXVldWVbSEFTSF9SWFFfRVRIXS5pYnZfYXR0ci0+cHJp b3JpdHkgPQ0KPiA+IC0JCQlhdHRyLT5wcmlvcml0eSArDQo+ID4gLQkJCWhhc2hfcnhxX2luaXRb SEFTSF9SWFFfRVRIXS5mbG93X3ByaW9yaXR5Ow0KPiA+ICsJCXBhcnNlci0+cXVldWVbSEFTSF9S WFFfRVRIXS5pYnZfYXR0ci0+cHJpb3JpdHkgPSBwcmlvcml0eSArDQo+ID4gKwkJCQloYXNoX3J4 cV9pbml0W0hBU0hfUlhRX0VUSF0uZmxvd19wcmlvcml0eTsNCj4gPiAgCQlyZXR1cm47DQo+ID4g IAl9DQo+ID4gIAlmb3IgKGkgPSAwOyBpICE9IGhhc2hfcnhxX2luaXRfbjsgKytpKSB7DQo+ID4g LQkJaWYgKHBhcnNlci0+cXVldWVbaV0uaWJ2X2F0dHIpIHsNCj4gPiAtCQkJcGFyc2VyLT5xdWV1 ZVtpXS5pYnZfYXR0ci0+cHJpb3JpdHkgPQ0KPiA+IC0JCQkJYXR0ci0+cHJpb3JpdHkgKw0KPiA+ IC0JCQkJaGFzaF9yeHFfaW5pdFtpXS5mbG93X3ByaW9yaXR5IC0NCj4gPiAtCQkJCShwYXJzZXIt PmlubmVyID8gMSA6IDApOw0KPiA+IC0JCX0NCj4gPiArCQlpZiAoIXBhcnNlci0+cXVldWVbaV0u aWJ2X2F0dHIpDQo+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ICsJCXBhcnNlci0+cXVldWVbaV0uaWJ2 X2F0dHItPnByaW9yaXR5ID0gcHJpb3JpdHkgKw0KPiA+ICsJCQkJaGFzaF9yeHFfaW5pdFtpXS5m bG93X3ByaW9yaXR5Ow0KPiA+ICAJfQ0KPiA+ICB9DQo+ID4NCj4gPiBAQCAtMTA4Nyw3ICsxMDk3 LDcgQEAgbWx4NV9mbG93X2NvbnZlcnQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gIAkJ LmxheWVyID0gSEFTSF9SWFFfRVRILA0KPiA+ICAJCS5tYXJrX2lkID0gTUxYNV9GTE9XX01BUktf REVGQVVMVCwNCj4gPiAgCX07DQo+ID4gLQlyZXQgPSBtbHg1X2Zsb3dfY29udmVydF9hdHRyaWJ1 dGVzKGF0dHIsIGVycm9yKTsNCj4gPiArCXJldCA9IG1seDVfZmxvd19jb252ZXJ0X2F0dHJpYnV0 ZXMoZGV2LCBhdHRyLCBlcnJvcik7DQo+ID4gIAlpZiAocmV0KQ0KPiA+ICAJCXJldHVybiByZXQ7 DQo+ID4gIAlyZXQgPSBtbHg1X2Zsb3dfY29udmVydF9hY3Rpb25zKGRldiwgYWN0aW9ucywgZXJy b3IsIHBhcnNlcik7IEBADQo+ID4gLTExNTgsNyArMTE2OCw3IEBAIG1seDVfZmxvd19jb252ZXJ0 KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAJICovDQo+ID4gIAlpZiAoIXBhcnNlci0+ ZHJvcCkNCj4gPiAgCQltbHg1X2Zsb3dfY29udmVydF9maW5hbGlzZShwYXJzZXIpOw0KPiA+IC0J bWx4NV9mbG93X3VwZGF0ZV9wcmlvcml0eShwYXJzZXIsIGF0dHIpOw0KPiA+ICsJbWx4NV9mbG93 X3VwZGF0ZV9wcmlvcml0eShkZXYsIHBhcnNlciwgYXR0cik7DQo+ID4gIGV4aXRfZnJlZToNCj4g PiAgCS8qIE9ubHkgdmVyaWZpY2F0aW9uIGlzIGV4cGVjdGVkLCBhbGwgcmVzb3VyY2VzIHNob3Vs ZCBiZSByZWxlYXNlZC4NCj4gKi8NCj4gPiAgCWlmICghcGFyc2VyLT5jcmVhdGUpIHsNCj4gPiBA QCAtMjQ1MCw3ICsyNDYwLDcgQEAgbWx4NV9jdHJsX2Zsb3dfdmxhbihzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldiwNCj4gPiAgCXN0cnVjdCBwcml2ICpwcml2ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0 ZTsNCj4gPiAgCWNvbnN0IHN0cnVjdCBydGVfZmxvd19hdHRyIGF0dHIgPSB7DQo+ID4gIAkJLmlu Z3Jlc3MgPSAxLA0KPiA+IC0JCS5wcmlvcml0eSA9IE1MWDVfQ1RSTF9GTE9XX1BSSU9SSVRZLA0K PiA+ICsJCS5wcmlvcml0eSA9IHByaXYtPmNvbmZpZy5jb250cm9sX2Zsb3dfcHJpb3JpdHksDQo+ ID4gIAl9Ow0KPiA+ICAJc3RydWN0IHJ0ZV9mbG93X2l0ZW0gaXRlbXNbXSA9IHsNCj4gPiAgCQl7 DQo+ID4gQEAgLTMxNjEsMyArMzE3MSw1MCBAQCBtbHg1X2Rldl9maWx0ZXJfY3RybChzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCX0NCj4gPiAgCXJldHVybiAwOw0KPiA+ICB9DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICogRGV0ZWN0IG51bWJlciBvZiBWZXJicyBmbG93IHByaW9yaXRp ZXMgc3VwcG9ydGVkLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gZGV2DQo+ID4gKyAqICAgUG9p bnRlciB0byBFdGhlcm5ldCBkZXZpY2UuDQo+ID4gKyAqLw0KPiA+ICt2b2lkDQo+ID4gK21seDVf Zmxvd19wcmlvcml0aWVzX2RldGVjdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikgew0KPiA+ICsJ c3RydWN0IHByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICsJdWludDMy X3QgdmVyYl9wcmlvcml0aWVzID0gTUxYNV9WRVJCU19GTE9XX1BSSU9fOCAqIDI7DQo+ID4gKwlz dHJ1Y3Qgew0KPiA+ICsJCXN0cnVjdCBpYnZfZmxvd19hdHRyIGF0dHI7DQo+ID4gKwkJc3RydWN0 IGlidl9mbG93X3NwZWNfZXRoIGV0aDsNCj4gPiArCQlzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY19hY3Rp b25fZHJvcCBkcm9wOw0KPiA+ICsJfSBmbG93X2F0dHIgPSB7DQo+ID4gKwkJLmF0dHIgPSB7DQo+ ID4gKwkJCS5udW1fb2Zfc3BlY3MgPSAyLA0KPiA+ICsJCQkucHJpb3JpdHkgPSB2ZXJiX3ByaW9y aXRpZXMgLSAxLA0KPiA+ICsJCX0sDQo+ID4gKwkJLmV0aCA9IHsNCj4gPiArCQkJLnR5cGUgPSBJ QlZfRkxPV19TUEVDX0VUSCwNCj4gPiArCQkJLnNpemUgPSBzaXplb2Yoc3RydWN0IGlidl9mbG93 X3NwZWNfZXRoKSwNCj4gPiArCQl9LA0KPiA+ICsJCS5kcm9wID0gew0KPiA+ICsJCQkuc2l6ZSA9 IHNpemVvZihzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY19hY3Rpb25fZHJvcCksDQo+ID4gKwkJCS50eXBl ID0gSUJWX0ZMT1dfU1BFQ19BQ1RJT05fRFJPUCwNCj4gPiArCQl9LA0KPiA+ICsJfTsNCj4gPiAr CXN0cnVjdCBpYnZfZmxvdyAqZmxvdzsNCj4gPiArDQo+ID4gKwlpZiAocHJpdi0+Y29uZmlnLmNv bnRyb2xfZmxvd19wcmlvcml0eSkNCj4gPiArCQlyZXR1cm47DQo+ID4gKwlmbG93ID0gbWx4NV9n bHVlLT5jcmVhdGVfZmxvdyhwcml2LT5mbG93X2Ryb3BfcXVldWUtPnFwLA0KPiA+ICsJCQkJICAg ICAgJmZsb3dfYXR0ci5hdHRyKTsNCj4gPiArCWlmIChmbG93KSB7DQo+ID4gKwkJcHJpdi0+Y29u ZmlnLmZsb3dfcHJpb3JpdHlfc2hpZnQgPSBNTFg1X1ZFUkJTX0ZMT1dfUFJJT184IC8gMjsNCj4g PiArCQljbGFpbV96ZXJvKG1seDVfZ2x1ZS0+ZGVzdHJveV9mbG93KGZsb3cpKTsNCj4gPiArCX0g ZWxzZSB7DQo+ID4gKwkJcHJpdi0+Y29uZmlnLmZsb3dfcHJpb3JpdHlfc2hpZnQgPSAxOw0KPiA+ ICsJCXZlcmJfcHJpb3JpdGllcyA9IHZlcmJfcHJpb3JpdGllcyAvIDI7DQo+ID4gKwl9DQo+ID4g Kwlwcml2LT5jb25maWcuY29udHJvbF9mbG93X3ByaW9yaXR5ID0gMTsNCj4gPiArCURSVl9MT0co SU5GTywgInBvcnQgJXUgVmVyYnMgZmxvdyBwcmlvcml0aWVzOiAlZCIsDQo+ID4gKwkJZGV2LT5k YXRhLT5wb3J0X2lkLCB2ZXJiX3ByaW9yaXRpZXMpOyB9DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L21seDUvbWx4NV90cmlnZ2VyLmMNCj4gPiBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV90 cmlnZ2VyLmMgaW5kZXggNmJiNGZmYjE0Li5kODBhMmU2ODggMTAwNjQ0DQo+ID4gLS0tIGEvZHJp dmVycy9uZXQvbWx4NS9tbHg1X3RyaWdnZXIuYw0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L21seDUv bWx4NV90cmlnZ2VyLmMNCj4gPiBAQCAtMTQ4LDEyICsxNDgsNiBAQCBtbHg1X2Rldl9zdGFydChz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gPiAgCWludCByZXQ7DQo+ID4NCj4gPiAgCWRldi0+ ZGF0YS0+ZGV2X3N0YXJ0ZWQgPSAxOw0KPiA+IC0JcmV0ID0gbWx4NV9mbG93X2NyZWF0ZV9kcm9w X3F1ZXVlKGRldik7DQo+ID4gLQlpZiAocmV0KSB7DQo+ID4gLQkJRFJWX0xPRyhFUlIsICJwb3J0 ICV1IGRyb3AgcXVldWUgYWxsb2NhdGlvbiBmYWlsZWQ6ICVzIiwNCj4gPiAtCQkJZGV2LT5kYXRh LT5wb3J0X2lkLCBzdHJlcnJvcihydGVfZXJybm8pKTsNCj4gPiAtCQlnb3RvIGVycm9yOw0KPiA+ IC0JfQ0KPiA+ICAJRFJWX0xPRyhERUJVRywgInBvcnQgJXUgYWxsb2NhdGluZyBhbmQgY29uZmln dXJpbmcgaGFzaCBSeCBxdWV1ZXMiLA0KPiA+ICAJCWRldi0+ZGF0YS0+cG9ydF9pZCk7DQo+ID4g IAlydGVfbWVtcG9vbF93YWxrKG1seDVfbXAybXJfaXRlciwgcHJpdik7IEBAIC0yMDIsNyArMTk2 LDYgQEANCj4gPiBtbHg1X2Rldl9zdGFydChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gPiAg CW1seDVfdHJhZmZpY19kaXNhYmxlKGRldik7DQo+ID4gIAltbHg1X3R4cV9zdG9wKGRldik7DQo+ ID4gIAltbHg1X3J4cV9zdG9wKGRldik7DQo+ID4gLQltbHg1X2Zsb3dfZGVsZXRlX2Ryb3BfcXVl dWUoZGV2KTsNCj4gPiAgCXJ0ZV9lcnJubyA9IHJldDsgLyogUmVzdG9yZSBydGVfZXJybm8uICov DQo+ID4gIAlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiAgfQ0KPiA+IEBAIC0yMzcsNyArMjMwLDYg QEAgbWx4NV9kZXZfc3RvcChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gPiAgCW1seDVfcnhx X3N0b3AoZGV2KTsNCj4gPiAgCWZvciAobXIgPSBMSVNUX0ZJUlNUKCZwcml2LT5tcik7IG1yOyBt ciA9IExJU1RfRklSU1QoJnByaXYtPm1yKSkNCj4gPiAgCQltbHg1X21yX3JlbGVhc2UobXIpOw0K PiA+IC0JbWx4NV9mbG93X2RlbGV0ZV9kcm9wX3F1ZXVlKGRldik7DQo+ID4gIH0NCj4gPg0KPiA+ ICAvKioNCj4gPiAtLQ0KPiA+IDIuMTMuMw0KPiANCj4gSSBoYXZlIGZldyBjb25jZXJucyBvbiB0 aGlzLCBtbHg1X3BjaV9wcm9iZSgpIHdpbGwgYWxzbyBwcm9iZSBhbnkgdW5kZXINCj4gbGF5ZXIg dmVyYnMgZGV2aWNlLCBhbmQgaW4gYSBuZWFyIGZ1dHVyZSB0aGUgcmVwcmVzZW50b3JzIGFzc29j aWF0ZWQgdG8gYQ0KPiBWRi4NCj4gTWFraW5nIHN1Y2ggZGV0ZWN0aW9uIHNob3VsZCBvbmx5IGJl IGRvbmUgb25jZSBieSB0aGUgUEYsIEkgYWxzbyB3YW5kZXIgaWYNCj4gaXQgaXMgcG9zc2libGUg dG8gbWFrZSBzdWNoIGRyb3AgYWN0aW9uIGluIGEgcmVwcmVzZW50b3IgZGlyZWN0bHkgdXNpbmcN Cj4gVmVyYnMuDQoNClRoZW4gdGhlcmUgc2hvdWxkIGJlIHNvbWUgd29yayB0byBkaXNhYmxlIGZs b3dzIGluIHJlcHJlc2VudG9ycz8gdGhhdCANCnN1cHBvc2VkIHRvIGNvdmVyIHRoaXMuDQoNCj4g DQo+IEFub3RoZXIgY29uY2VybiBpcywgdGhpcyBwYXRjaCB3aWxsIGJlIHJldmVydGVkIGluIHNv bWUgdGltZSB3aGVuIHRob3NlDQo+IDE2IHByaW9yaXR5IHdpbGwgYmUgYWx3YXlzIGF2YWlsYWJs ZS4gIEl0IHdpbGwgYmUgZWFzaWVyIHRvIHJlbW92ZSB0aGlzDQo+IGRldGVjdGlvbiBmdW5jdGlv biB0aGFuIHNlYXJjaGluZyBmb3IgYWxsIHRob3NlIG1vZGlmaWNhdGlvbnMuDQo+IA0KPiBJIHdv dWxkIHN1Z2dlc3QgdG8gaGF2ZSBhIHN0YW5kYWxvbmUgbWx4NV9mbG93X3ByaW9yaXRpZXNfZGV0 ZWN0KCkgd2hpY2gNCj4gY3JlYXRlcyBhbmQgZGVsZXRlcyBhbGwgcmVzb3VyY2VzIG5lZWRlZCBm b3IgdGhpcyBkZXRlY3Rpb24uDQoNClRoZXJlIGlzIGFuIHVwY29taW5nIG5ldyBmZWF0dXJlIHRv IHN1cHBvcnQgcHJpb3JpdGllcyBtb3JlIHRoYW4gMTYsIGF1dG8gDQpkZXRlY3Rpb24gd2lsbCBi ZSBrZXB0IElNSE8uIEJlc2lkZXMsIHRoZXJlIHdpbGwgYmUgYSBidW5kbGUgb2YgcmVzb3VyY2Ug DQpjcmVhdGlvbiBhbmQgcmVtb3ZhbCBpbiB0aGlzIHN0YW5kYWxvbmUgZnVuY3Rpb24sIEknbSBu b3Qgc3VyZSBpdCB2YWx1YWJsZSANCnRvIGR1cGxpY2F0ZSB0aGVtLCBwbGVhc2UgcmVmZXIgdG8g ZnVuY3Rpb24gbWx4NV9mbG93X2NyZWF0ZV9kcm9wX3F1ZXVlKCkuDQoNCg0KPiANCj4gVGhhbmtz LA0KPiANCj4gLS0NCj4gTsOpbGlvIExhcmFuamVpcm8NCj4gNldJTkQNCg==