From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0065.outbound.protection.outlook.com [104.47.0.65]) by dpdk.org (Postfix) with ESMTP id 403671B66E for ; Sat, 14 Apr 2018 14:58:02 +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=RcfFyOQKH6WwLqXYY8DspUUACMuxdgyM+56j+/hQi08=; b=b55pJE3Duq9n+biW7oybgyMBghMLsKhJlewYUL/9K6DLi4QXMqn5O36gj7E4wo39oFhiulW/qVI+aTyIwAIo9aSnsCq+h6ShTMOP7GC5uVXzpYoGydy+3M7itecMU5P0VUxLZwqPawKfacYqfcgftIXwAjEXyGMfTEPmPXKbGbM= Received: from VI1PR05MB1678.eurprd05.prod.outlook.com (10.165.235.152) by VI1PR05MB4173.eurprd05.prod.outlook.com (10.171.183.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.675.11; Sat, 14 Apr 2018 12:57:59 +0000 Received: from VI1PR05MB1678.eurprd05.prod.outlook.com ([fe80::6da4:14c3:f5d8:3f4a]) by VI1PR05MB1678.eurprd05.prod.outlook.com ([fe80::6da4:14c3:f5d8:3f4a%14]) with mapi id 15.20.0675.014; Sat, 14 Apr 2018 12:57:59 +0000 From: "Xueming(Steven) Li" To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= CC: Shahaf Shuler , "dev@dpdk.org" , Olivier Matz , Adrien Mazarguil Thread-Topic: [PATCH v3 04/14] net/mlx5: support Rx tunnel type identification Thread-Index: AQHT0xl1U3f1oL+VtkOBCFxPn+4eYqP+qTGAgAGN8oA= Date: Sat, 14 Apr 2018 12:57:58 +0000 Message-ID: References: <20180410133415.189905-1-xuemingl%40mellanox.com> <20180413112023.106420-5-xuemingl@mellanox.com> <20180413130237.kb4dkx7o6lamrjoq@laranjeiro-vm.dev.6wind.com> In-Reply-To: <20180413130237.kb4dkx7o6lamrjoq@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: [183.232.227.24] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB4173; 7:BETsEi30hVH73rJ6enkN2TdBL3Gp4U2h8EGOjQVMkpbAG7VyDNoMZXFOgYJeJIVge4+IAI4i7L5iCrsM3Gw0oYNeBsLRTD7e4NDlZ6FRs1dXmmdEICmuETF/nNcrRU9iZz+Zls/ku2aeVNiDU+nJGcCCuHXbvKGnILRPKoecREVUpvmh8DtrBZpbzD464Dflt6aszu7RT7jO8WBvcacD9EEbkmew6C73qYfOlTH7cZ2M3Dx+CG9sqwZSR6vtDSuT x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB4173; x-ms-traffictypediagnostic: VI1PR05MB4173: 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)(8121501046)(5005006)(3231232)(944501327)(52105095)(93006095)(93001095)(10201501046)(3002001)(6055026)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:VI1PR05MB4173; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB4173; x-forefront-prvs: 0642A5E7BA x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(396003)(366004)(39860400002)(376002)(39380400002)(189003)(199004)(13464003)(6246003)(105586002)(6436002)(446003)(68736007)(5660300001)(106356001)(11346002)(14454004)(74316002)(3280700002)(486006)(3660700001)(54906003)(9686003)(33656002)(55016002)(53946003)(53936002)(8936002)(316002)(6506007)(25786009)(6916009)(81156014)(186003)(81166006)(305945005)(59450400001)(97736004)(2900100001)(26005)(99286004)(478600001)(86362001)(575784001)(53546011)(8676002)(102836004)(76176011)(4326008)(6116002)(476003)(66066001)(5250100002)(7736002)(2906002)(7696005)(3846002)(229853002)(21314002)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB4173; 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: fRkShjNkz3H2/uh/YSLXM32PoJcYHRjI1dlgyusx7XlCMOduvVFi72gf9WMZYwxv6lhETr/uvLWW7zckp7sRH/nnQF4wYbpmNRvqYw1kxeFivm6LqquJo9wmhXKmjeZINYK4SdUe6dS+Vskmnk9p+fAtQo02v5q9C3Efh73YIWBRSFaXPYSRX7f8cXeX4tyV spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: f326b5ed-33a2-42ac-05ed-08d5a207596d X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: f326b5ed-33a2-42ac-05ed-08d5a207596d X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Apr 2018 12:57:59.0017 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4173 Subject: Re: [dpdk-dev] [PATCH v3 04/14] net/mlx5: support Rx tunnel type identification 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: Sat, 14 Apr 2018 12:58:02 -0000 K0Fkcmllbg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE7DqWxpbyBM YXJhbmplaXJvIDxuZWxpby5sYXJhbmplaXJvQDZ3aW5kLmNvbT4NCj4gU2VudDogRnJpZGF5LCBB cHJpbCAxMywgMjAxOCA5OjAzIFBNDQo+IFRvOiBYdWVtaW5nKFN0ZXZlbikgTGkgPHh1ZW1pbmds QG1lbGxhbm94LmNvbT4NCj4gQ2M6IFNoYWhhZiBTaHVsZXIgPHNoYWhhZnNAbWVsbGFub3guY29t PjsgZGV2QGRwZGsub3JnOyBPbGl2aWVyIE1hdHoNCj4gPG9saXZpZXIubWF0ekA2d2luZC5jb20+ DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMDQvMTRdIG5ldC9tbHg1OiBzdXBwb3J0IFJ4IHR1 bm5lbCB0eXBlDQo+IGlkZW50aWZpY2F0aW9uDQo+IA0KPiArT2xpdmllciwNCj4gDQo+IE9uIEZy aSwgQXByIDEzLCAyMDE4IGF0IDA3OjIwOjEzUE0gKzA4MDAsIFh1ZW1pbmcgTGkgd3JvdGU6DQo+ ID4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VkIHR1bm5lbCB0eXBlIGlkZW50aWZpY2F0aW9uIGJhc2Vk IG9uIGZsb3cgcnVsZXMuDQo+ID4gSWYgZmxvd3Mgb2YgbXVsdGlwbGUgdHVubmVsIHR5cGVzIGJ1 aWx0IG9uIHNhbWUgcXVldWUsDQo+ID4gUlRFX1BUWVBFX1RVTk5FTF9NQVNLIHdpbGwgYmUgcmV0 dXJuZWQsIHVzZXIgYXBwbGljYXRpb24gY291bGQgdXNlDQo+ID4gYml0cyBpbiBmbG93IG1hcmsg YXMgdHVubmVsIHR5cGUgaWRlbnRpZmllci4NCj4gDQo+IEZvciBhbiBhcHBsaWNhdGlvbiBpdCB3 aWxsIG1lYW4gdGhlIHBhY2tldCBlbWJlZCBhbGwgdHVubmVsIHR5cGVzIGRlZmluZWQNCj4gaW4g RFBESywgdG8gbWFrZSBzdWNoIHRoaW5nIHlvdSBuZWVkIGEgUlRFX1BUWVBFX1RVTk5FTF9VTktO T1dOIHdoaWNoIGRvZXMNCj4gbm90IGV4aXN0cyBjdXJyZW50bHkuDQoNClRoZXJlIHdhcyBhIFJU RV9QVFlQRV9UVU5ORUxfVU5LTk9XTiBkZWZpbml0aW9uLCBidXQgcmVtb3ZlZCBkdWUgdG8gZGlz Y3Vzc2lvbi4NClNvIEkgdGhpbmsgaXQgZ29vZCB0byBhZGQgaXQgaW4gdGhlIHBhdGNoc2V0IG9m IHJldmlld2VkIGJ5IEFkcmllbi4NCg0KPiBFdmVuIHdpdGggaXQsIHRoZSBhcHBsaWNhdGlvbiBz dGlsbCBuZWVkcyB0byBwYXJzZSB0aGUgcGFja2V0IHRvIGRpc2NvdmVyDQo+IHdoaWNoIHR1bm5l bCB0aGUgcGFja2V0IGVtYmVkLCBpcyB0aGVyZSBhbnkgYmVuZWZpdCBoYXZpbmcgc3VjaCBiaXQ/ ICBOb3QNCj4gc28gc3VyZS4NCg0KV2l0aCBhIHR1bm5lbCBmbGFnLCBjaGVja3N1bSBzdGF0dXMg cmVwcmVzZW50IGlubmVyIGNoZWNrc3VtLg0KU2V0dGluZyBmbG93IG1hcmsgZm9yIGRpZmZlcmVu dCBmbG93IHR5cGUgY291bGQgc2F2ZSB0aW1lIG9mIHBhcnNpbmcgdHVubmVsLg0KDQo+IA0KPiBU aGFua3MsDQo+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IFh1ZW1pbmcgTGkgPHh1ZW1pbmdsQG1lbGxh bm94LmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYyAgICAg ICAgICB8IDEyNw0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tDQo+ID4gIGRy aXZlcnMvbmV0L21seDUvbWx4NV9yeHEuYyAgICAgICAgICAgfCAgMTEgKystDQo+ID4gIGRyaXZl cnMvbmV0L21seDUvbWx4NV9yeHR4LmMgICAgICAgICAgfCAgMTIgKystLQ0KPiA+ICBkcml2ZXJz L25ldC9tbHg1L21seDVfcnh0eC5oICAgICAgICAgIHwgICA5ICsrLQ0KPiA+ICBkcml2ZXJzL25l dC9tbHg1L21seDVfcnh0eF92ZWNfbmVvbi5oIHwgIDIxICsrKy0tLQ0KPiA+IGRyaXZlcnMvbmV0 L21seDUvbWx4NV9yeHR4X3ZlY19zc2UuaCAgfCAgMTcgKysrLS0NCj4gPiAgNiBmaWxlcyBjaGFu Z2VkLCAxNTkgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYw0KPiA+IGIvZHJpdmVycy9uZXQvbWx4 NS9tbHg1X2Zsb3cuYyBpbmRleCA2NDRmMjZhOTUuLjdkMDRiNGQ2NSAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4 NS9tbHg1X2Zsb3cuYw0KPiA+IEBAIC0yMjUsNiArMjI1LDcgQEAgc3RydWN0IHJ0ZV9mbG93IHsN Cj4gPiAgCXN0cnVjdCBydGVfZmxvd19hY3Rpb25fcnNzIHJzc19jb25mOyAvKio8IFJTUyBjb25m aWd1cmF0aW9uICovDQo+ID4gIAl1aW50MTZfdCAoKnF1ZXVlcylbXTsgLyoqPCBRdWV1ZXMgaW5k ZXhlcyB0byB1c2UuICovDQo+ID4gIAl1aW50OF90IHJzc19rZXlbNDBdOyAvKio8IGNvcHkgb2Yg dGhlIFJTUyBrZXkuICovDQo+ID4gKwl1aW50MzJfdCB0dW5uZWw7IC8qKjwgVHVubmVsIHR5cGUg b2YgUlRFX1BUWVBFX1RVTk5FTF9YWFguICovDQo+ID4gIAlzdHJ1Y3QgaWJ2X2NvdW50ZXJfc2V0 ICpjczsgLyoqPCBIb2xkcyB0aGUgY291bnRlcnMgZm9yIHRoZSBydWxlLiAqLw0KPiA+ICAJc3Ry dWN0IG1seDVfZmxvd19jb3VudGVyX3N0YXRzIGNvdW50ZXJfc3RhdHM7LyoqPFRoZSBjb3VudGVy IHN0YXRzLg0KPiAqLw0KPiA+ICAJc3RydWN0IG1seDVfZmxvdyBmcnhxW1JURV9ESU0oaGFzaF9y eHFfaW5pdCldOyBAQCAtMjQxLDYgKzI0MiwxOSBAQA0KPiA+IHN0cnVjdCBydGVfZmxvdyB7DQo+ ID4gIAkodHlwZSkgPT0gUlRFX0ZMT1dfSVRFTV9UWVBFX1ZYTEFOIHx8IFwNCj4gPiAgCSh0eXBl KSA9PSBSVEVfRkxPV19JVEVNX1RZUEVfR1JFKQ0KPiA+DQo+ID4gK2NvbnN0IHVpbnQzMl90IGZs b3dfcHR5cGVbXSA9IHsNCj4gPiArCVtSVEVfRkxPV19JVEVNX1RZUEVfVlhMQU5dID0gUlRFX1BU WVBFX1RVTk5FTF9WWExBTiwNCj4gPiArCVtSVEVfRkxPV19JVEVNX1RZUEVfR1JFXSA9IFJURV9Q VFlQRV9UVU5ORUxfR1JFLCB9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBQVFlQRV9JRFgodCkgKChS VEVfUFRZUEVfVFVOTkVMX01BU0sgJiAodCkpID4+IDEyKQ0KPiA+ICsNCj4gPiArY29uc3QgdWlu dDMyX3QgcHR5cGVfZXh0W10gPSB7DQo+ID4gKwlbUFRZUEVfSURYKFJURV9QVFlQRV9UVU5ORUxf VlhMQU4pXSA9IFJURV9QVFlQRV9UVU5ORUxfVlhMQU4gfA0KPiA+ICsJCQkJCSAgICAgIFJURV9Q VFlQRV9MNF9VRFAsDQo+ID4gKwlbUFRZUEVfSURYKFJURV9QVFlQRV9UVU5ORUxfR1JFKV0gPSBS VEVfUFRZUEVfVFVOTkVMX0dSRSwgfTsNCj4gPiArDQo+ID4gIC8qKiBTdHJ1Y3R1cmUgdG8gZ2Vu ZXJhdGUgYSBzaW1wbGUgZ3JhcGggb2YgbGF5ZXJzIHN1cHBvcnRlZCBieSB0aGUNCj4gPiBOSUMu ICovICBzdHJ1Y3QgbWx4NV9mbG93X2l0ZW1zIHsNCj4gPiAgCS8qKiBMaXN0IG9mIHBvc3NpYmxl IGFjdGlvbnMgZm9yIHRoZXNlIGl0ZW1zLiAqLyBAQCAtNDQwLDYgKzQ1NCw3IEBADQo+ID4gc3Ry dWN0IG1seDVfZmxvd19wYXJzZSB7DQo+ID4gIAl1aW50MTZfdCBxdWV1ZXNbUlRFX01BWF9RVUVV RVNfUEVSX1BPUlRdOyAvKio8IFF1ZXVlcyBpbmRleGVzIHRvIHVzZS4NCj4gKi8NCj4gPiAgCXVp bnQ4X3QgcnNzX2tleVs0MF07IC8qKjwgY29weSBvZiB0aGUgUlNTIGtleS4gKi8NCj4gPiAgCWVu dW0gaGFzaF9yeHFfdHlwZSBsYXllcjsgLyoqPCBMYXN0IHBhdHRlcm4gbGF5ZXIgZGV0ZWN0ZWQu ICovDQo+ID4gKwl1aW50MzJfdCB0dW5uZWw7IC8qKjwgVHVubmVsIHR5cGUgb2YgUlRFX1BUWVBF X1RVTk5FTF9YWFguICovDQo+ID4gIAlzdHJ1Y3QgaWJ2X2NvdW50ZXJfc2V0ICpjczsgLyoqPCBI b2xkcyB0aGUgY291bnRlciBzZXQgZm9yIHRoZSBydWxlDQo+ICovDQo+ID4gIAlzdHJ1Y3Qgew0K PiA+ICAJCXN0cnVjdCBpYnZfZmxvd19hdHRyICppYnZfYXR0cjsNCj4gPiBAQCAtODU4LDcgKzg3 Myw3IEBAIG1seDVfZmxvd19jb252ZXJ0X2l0ZW1zX3ZhbGlkYXRlKGNvbnN0IHN0cnVjdA0KPiBy dGVfZmxvd19pdGVtIGl0ZW1zW10sDQo+ID4gIAkJaWYgKHJldCkNCj4gPiAgCQkJZ290byBleGl0 X2l0ZW1fbm90X3N1cHBvcnRlZDsNCj4gPiAgCQlpZiAoSVNfVFVOTkVMKGl0ZW1zLT50eXBlKSkg ew0KPiA+IC0JCQlpZiAocGFyc2VyLT5pbm5lcikgew0KPiA+ICsJCQlpZiAocGFyc2VyLT50dW5u ZWwpIHsNCj4gPiAgCQkJCXJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRU5PVFNVUCwNCj4gPiAg CQkJCQkJICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9JVEVNLA0KPiA+ICAJCQkJCQkgICBpdGVtcywN Cj4gPiBAQCAtODY3LDYgKzg4Miw3IEBAIG1seDVfZmxvd19jb252ZXJ0X2l0ZW1zX3ZhbGlkYXRl KGNvbnN0IHN0cnVjdA0KPiBydGVfZmxvd19pdGVtIGl0ZW1zW10sDQo+ID4gIAkJCQlyZXR1cm4g LXJ0ZV9lcnJubzsNCj4gPiAgCQkJfQ0KPiA+ICAJCQlwYXJzZXItPmlubmVyID0gSUJWX0ZMT1df U1BFQ19JTk5FUjsNCj4gPiArCQkJcGFyc2VyLT50dW5uZWwgPSBmbG93X3B0eXBlW2l0ZW1zLT50 eXBlXTsNCj4gPiAgCQl9DQo+ID4gIAkJaWYgKHBhcnNlci0+ZHJvcCkgew0KPiA+ICAJCQlwYXJz ZXItPnF1ZXVlW0hBU0hfUlhRX0VUSF0ub2Zmc2V0ICs9IGN1cl9pdGVtLT5kc3Rfc3o7DQo+IEBA IC0xMTc1LDYNCj4gPiArMTE5MSw3IEBAIG1seDVfZmxvd19jb252ZXJ0KHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LA0KPiA+ICAJfQ0KPiA+ICAJLyogVGhpcmQgc3RlcC4gQ29udmVyc2lvbiBwYXJz ZSwgZmlsbCB0aGUgc3BlY2lmaWNhdGlvbnMuICovDQo+ID4gIAlwYXJzZXItPmlubmVyID0gMDsN Cj4gPiArCXBhcnNlci0+dHVubmVsID0gMDsNCj4gPiAgCWZvciAoOyBpdGVtcy0+dHlwZSAhPSBS VEVfRkxPV19JVEVNX1RZUEVfRU5EOyArK2l0ZW1zKSB7DQo+ID4gIAkJc3RydWN0IG1seDVfZmxv d19kYXRhIGRhdGEgPSB7DQo+ID4gIAkJCS5wYXJzZXIgPSBwYXJzZXIsDQo+ID4gQEAgLTE2NDMs NiArMTY2MCw3IEBAIG1seDVfZmxvd19jcmVhdGVfdnhsYW4oY29uc3Qgc3RydWN0DQo+ID4gcnRl X2Zsb3dfaXRlbSAqaXRlbSwNCj4gPg0KPiA+ICAJaWQudm5pWzBdID0gMDsNCj4gPiAgCXBhcnNl ci0+aW5uZXIgPSBJQlZfRkxPV19TUEVDX0lOTkVSOw0KPiA+ICsJcGFyc2VyLT50dW5uZWwgPSBw dHlwZV9leHRbUFRZUEVfSURYKFJURV9QVFlQRV9UVU5ORUxfVlhMQU4pXTsNCj4gPiAgCWlmIChz cGVjKSB7DQo+ID4gIAkJaWYgKCFtYXNrKQ0KPiA+ICAJCQltYXNrID0gZGVmYXVsdF9tYXNrOw0K PiA+IEBAIC0xNjk2LDYgKzE3MTQsNyBAQCBtbHg1X2Zsb3dfY3JlYXRlX2dyZShjb25zdCBzdHJ1 Y3QgcnRlX2Zsb3dfaXRlbQ0KPiAqaXRlbSBfX3J0ZV91bnVzZWQsDQo+ID4gIAl9Ow0KPiA+DQo+ ID4gIAlwYXJzZXItPmlubmVyID0gSUJWX0ZMT1dfU1BFQ19JTk5FUjsNCj4gPiArCXBhcnNlci0+ dHVubmVsID0gcHR5cGVfZXh0W1BUWVBFX0lEWChSVEVfUFRZUEVfVFVOTkVMX0dSRSldOw0KPiA+ ICAJbWx4NV9mbG93X2NyZWF0ZV9jb3B5KHBhcnNlciwgJnR1bm5lbCwgc2l6ZSk7DQo+ID4gIAly ZXR1cm4gMDsNCj4gPiAgfQ0KPiA+IEBAIC0xODc0LDcgKzE4OTMsOCBAQCBtbHg1X2Zsb3dfY3Jl YXRlX2FjdGlvbl9xdWV1ZV9yc3Moc3RydWN0DQo+IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gIAkJ CQkgICAgICBwYXJzZXItPnJzc19jb25mLmtleV9sZW4sDQo+ID4gIAkJCQkgICAgICBoYXNoX2Zp ZWxkcywNCj4gPiAgCQkJCSAgICAgIHBhcnNlci0+cnNzX2NvbmYucXVldWUsDQo+ID4gLQkJCQkg ICAgICBwYXJzZXItPnJzc19jb25mLnF1ZXVlX251bSk7DQo+ID4gKwkJCQkgICAgICBwYXJzZXIt PnJzc19jb25mLnF1ZXVlX251bSwNCj4gPiArCQkJCSAgICAgIHBhcnNlci0+dHVubmVsKTsNCj4g PiAgCQlpZiAoZmxvdy0+ZnJ4cVtpXS5ocnhxKQ0KPiA+ICAJCQljb250aW51ZTsNCj4gPiAgCQlm bG93LT5mcnhxW2ldLmhyeHEgPQ0KPiA+IEBAIC0xODgzLDcgKzE5MDMsOCBAQCBtbHg1X2Zsb3df Y3JlYXRlX2FjdGlvbl9xdWV1ZV9yc3Moc3RydWN0DQo+IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4g IAkJCQkgICAgICBwYXJzZXItPnJzc19jb25mLmtleV9sZW4sDQo+ID4gIAkJCQkgICAgICBoYXNo X2ZpZWxkcywNCj4gPiAgCQkJCSAgICAgIHBhcnNlci0+cnNzX2NvbmYucXVldWUsDQo+ID4gLQkJ CQkgICAgICBwYXJzZXItPnJzc19jb25mLnF1ZXVlX251bSk7DQo+ID4gKwkJCQkgICAgICBwYXJz ZXItPnJzc19jb25mLnF1ZXVlX251bSwNCj4gPiArCQkJCSAgICAgIHBhcnNlci0+dHVubmVsKTsN Cj4gPiAgCQlpZiAoIWZsb3ctPmZyeHFbaV0uaHJ4cSkgew0KPiA+ICAJCQlyZXR1cm4gcnRlX2Zs b3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9NRU0sDQo+ID4gIAkJCQkJCSAgUlRFX0ZMT1dfRVJST1Jf VFlQRV9IQU5ETEUsDQo+ID4gQEAgLTE4OTUsNiArMTkxNiw0MCBAQCBtbHg1X2Zsb3dfY3JlYXRl X2FjdGlvbl9xdWV1ZV9yc3Moc3RydWN0DQo+ID4gcnRlX2V0aF9kZXYgKmRldiwgIH0NCj4gPg0K PiA+ICAvKioNCj4gPiArICogUlhRIHVwZGF0ZSBhZnRlciBmbG93IHJ1bGUgY3JlYXRpb24uDQo+ ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBkZXYNCj4gPiArICogICBQb2ludGVyIHRvIEV0aGVybmV0 IGRldmljZS4NCj4gPiArICogQHBhcmFtIGZsb3cNCj4gPiArICogICBQb2ludGVyIHRvIHRoZSBm bG93IHJ1bGUuDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ICttbHg1X2Zsb3dfY3Jl YXRlX3VwZGF0ZV9yeHFzKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgcnRlX2Zsb3cN Cj4gPiArKmZsb3cpIHsNCj4gPiArCXN0cnVjdCBwcml2ICpwcml2ID0gZGV2LT5kYXRhLT5kZXZf cHJpdmF0ZTsNCj4gPiArCXVuc2lnbmVkIGludCBpOw0KPiA+ICsNCj4gPiArCWlmICghZGV2LT5k YXRhLT5kZXZfc3RhcnRlZCkNCj4gPiArCQlyZXR1cm47DQo+ID4gKwlmb3IgKGkgPSAwOyBpICE9 IGZsb3ctPnJzc19jb25mLnF1ZXVlX251bTsgKytpKSB7DQo+ID4gKwkJc3RydWN0IG1seDVfcnhx X2RhdGEgKnJ4cV9kYXRhID0gKCpwcml2LT5yeHFzKQ0KPiA+ICsJCQkJCQkgWygqZmxvdy0+cXVl dWVzKVtpXV07DQo+ID4gKwkJc3RydWN0IG1seDVfcnhxX2N0cmwgKnJ4cV9jdHJsID0NCj4gPiAr CQkJY29udGFpbmVyX29mKHJ4cV9kYXRhLCBzdHJ1Y3QgbWx4NV9yeHFfY3RybCwgcnhxKTsNCj4g PiArCQl1aW50OF90IHR1bm5lbCA9IFBUWVBFX0lEWChmbG93LT50dW5uZWwpOw0KPiA+ICsNCj4g PiArCQlyeHFfZGF0YS0+bWFyayB8PSBmbG93LT5tYXJrOw0KPiA+ICsJCWlmICghdHVubmVsKQ0K PiA+ICsJCQljb250aW51ZTsNCj4gPiArCQlyeHFfY3RybC0+dHVubmVsX3R5cGVzW3R1bm5lbF0g Kz0gMTsNCj4gPiArCQlpZiAocnhxX2RhdGEtPnR1bm5lbCAhPSBmbG93LT50dW5uZWwpDQo+ID4g KwkJCXJ4cV9kYXRhLT50dW5uZWwgPSByeHFfZGF0YS0+dHVubmVsID8NCj4gPiArCQkJCQkgICBS VEVfUFRZUEVfVFVOTkVMX01BU0sgOg0KPiA+ICsJCQkJCSAgIGZsb3ctPnR1bm5lbDsNCj4gPiAr CX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gICAqIENvbXBsZXRlIGZsb3cgcnVsZSBj cmVhdGlvbi4NCj4gPiAgICoNCj4gPiAgICogQHBhcmFtIGRldg0KPiA+IEBAIC0xOTU0LDEyICsy MDA5LDcgQEAgbWx4NV9mbG93X2NyZWF0ZV9hY3Rpb25fcXVldWUoc3RydWN0IHJ0ZV9ldGhfZGV2 DQo+ICpkZXYsDQo+ID4gIAkJCQkgICBOVUxMLCAiaW50ZXJuYWwgZXJyb3IgaW4gZmxvdyBjcmVh dGlvbiIpOw0KPiA+ICAJCWdvdG8gZXJyb3I7DQo+ID4gIAl9DQo+ID4gLQlmb3IgKGkgPSAwOyBp ICE9IHBhcnNlci0+cnNzX2NvbmYucXVldWVfbnVtOyArK2kpIHsNCj4gPiAtCQlzdHJ1Y3QgbWx4 NV9yeHFfZGF0YSAqcSA9DQo+ID4gLQkJCSgqcHJpdi0+cnhxcylbcGFyc2VyLT5yc3NfY29uZi5x dWV1ZVtpXV07DQo+ID4gLQ0KPiA+IC0JCXEtPm1hcmsgfD0gcGFyc2VyLT5tYXJrOw0KPiA+IC0J fQ0KPiA+ICsJbWx4NV9mbG93X2NyZWF0ZV91cGRhdGVfcnhxcyhkZXYsIGZsb3cpOw0KPiA+ICAJ cmV0dXJuIDA7DQo+ID4gIGVycm9yOg0KPiA+ICAJcmV0ID0gcnRlX2Vycm5vOyAvKiBTYXZlIHJ0 ZV9lcnJubyBiZWZvcmUgY2xlYW51cC4gKi8gQEAgLTIwMzIsNg0KPiA+ICsyMDgyLDcgQEAgbWx4 NV9mbG93X2xpc3RfY3JlYXRlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAJfQ0KPiA+ ICAJLyogQ29weSBjb25maWd1cmF0aW9uLiAqLw0KPiA+ICAJZmxvdy0+cXVldWVzID0gKHVpbnQx Nl90ICgqKVtdKShmbG93ICsgMSk7DQo+ID4gKwlmbG93LT50dW5uZWwgPSBwYXJzZXIudHVubmVs Ow0KPiA+ICAJZmxvdy0+cnNzX2NvbmYgPSAoc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9yc3Mpew0K PiA+ICAJCS5mdW5jID0gUlRFX0VUSF9IQVNIX0ZVTkNUSU9OX0RFRkFVTFQsDQo+ID4gIAkJLmxl dmVsID0gMCwNCj4gPiBAQCAtMjEyMyw5ICsyMTc0LDM4IEBAIG1seDVfZmxvd19saXN0X2Rlc3Ry b3koc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+IHN0cnVjdCBtbHg1X2Zsb3dzICpsaXN0LA0K PiA+ICAJc3RydWN0IHByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICAJ dW5zaWduZWQgaW50IGk7DQo+ID4NCj4gPiAtCWlmIChmbG93LT5kcm9wIHx8ICFmbG93LT5tYXJr KQ0KPiA+ICsJaWYgKGZsb3ctPmRyb3AgfHwgIWRldi0+ZGF0YS0+ZGV2X3N0YXJ0ZWQpDQo+ID4g IAkJZ290byBmcmVlOw0KPiA+IC0JZm9yIChpID0gMDsgaSAhPSBmbG93LT5yc3NfY29uZi5xdWV1 ZV9udW07ICsraSkgew0KPiA+ICsJZm9yIChpID0gMDsgZmxvdy0+dHVubmVsICYmIGkgIT0gZmxv dy0+cnNzX2NvbmYucXVldWVfbnVtOyArK2kpIHsNCj4gPiArCQkvKiBVcGRhdGUgcXVldWUgdHVu bmVsIHR5cGUuICovDQo+ID4gKwkJc3RydWN0IG1seDVfcnhxX2RhdGEgKnJ4cV9kYXRhID0gKCpw cml2LT5yeHFzKQ0KPiA+ICsJCQkJCQkgWygqZmxvdy0+cXVldWVzKVtpXV07DQo+ID4gKwkJc3Ry dWN0IG1seDVfcnhxX2N0cmwgKnJ4cV9jdHJsID0NCj4gPiArCQkJY29udGFpbmVyX29mKHJ4cV9k YXRhLCBzdHJ1Y3QgbWx4NV9yeHFfY3RybCwgcnhxKTsNCj4gPiArCQl1aW50OF90IHR1bm5lbCA9 IFBUWVBFX0lEWChmbG93LT50dW5uZWwpOw0KPiA+ICsNCj4gPiArCQlhc3NlcnQocnhxX2N0cmwt PnR1bm5lbF90eXBlc1t0dW5uZWxdID4gMCk7DQo+ID4gKwkJcnhxX2N0cmwtPnR1bm5lbF90eXBl c1t0dW5uZWxdIC09IDE7DQo+ID4gKwkJaWYgKCFyeHFfY3RybC0+dHVubmVsX3R5cGVzW3R1bm5l bF0pIHsNCj4gPiArCQkJLyogVXBkYXRlIHR1bm5lbCB0eXBlLiAqLw0KPiA+ICsJCQl1aW50OF90 IGo7DQo+ID4gKwkJCXVpbnQ4X3QgdHlwZXMgPSAwOw0KPiA+ICsJCQl1aW50OF90IGxhc3Q7DQo+ ID4gKw0KPiA+ICsJCQlmb3IgKGogPSAwOyBqIDwgUlRFX0RJTShyeHFfY3RybC0+dHVubmVsX3R5 cGVzKTsgaisrKQ0KPiA+ICsJCQkJaWYgKHJ4cV9jdHJsLT50dW5uZWxfdHlwZXNbal0pIHsNCj4g PiArCQkJCQl0eXBlcyArPSAxOw0KPiA+ICsJCQkJCWxhc3QgPSBqOw0KPiA+ICsJCQkJfQ0KPiA+ ICsJCQkvKiBLZWVwIHNhbWUgaWYgbW9yZSB0aGFuIG9uZSB0dW5uZWwgdHlwZXMgbGVmdC4gKi8N Cj4gPiArCQkJaWYgKHR5cGVzID09IDEpDQo+ID4gKwkJCQlyeHFfZGF0YS0+dHVubmVsID0gcHR5 cGVfZXh0W2xhc3RdOw0KPiA+ICsJCQllbHNlIGlmICh0eXBlcyA9PSAwKQ0KPiA+ICsJCQkJLyog Tm8gdHVubmVsIHR5cGUgbGVmdC4gKi8NCj4gPiArCQkJCXJ4cV9kYXRhLT50dW5uZWwgPSAwOw0K PiA+ICsJCX0NCj4gPiArCX0NCj4gPiArCWZvciAoaSA9IDA7IGZsb3ctPm1hcmsgJiYgaSAhPSBm bG93LT5yc3NfY29uZi5xdWV1ZV9udW07ICsraSkgew0KPiA+ICAJCXN0cnVjdCBydGVfZmxvdyAq dG1wOw0KPiA+ICAJCWludCBtYXJrID0gMDsNCj4gPg0KPiA+IEBAIC0yMzQ0LDkgKzI0MjQsOSBA QCBtbHg1X2Zsb3dfc3RvcChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0DQo+ID4gbWx4 NV9mbG93cyAqbGlzdCkgIHsNCj4gPiAgCXN0cnVjdCBwcml2ICpwcml2ID0gZGV2LT5kYXRhLT5k ZXZfcHJpdmF0ZTsNCj4gPiAgCXN0cnVjdCBydGVfZmxvdyAqZmxvdzsNCj4gPiArCXVuc2lnbmVk IGludCBpOw0KPiA+DQo+ID4gIAlUQUlMUV9GT1JFQUNIX1JFVkVSU0UoZmxvdywgbGlzdCwgbWx4 NV9mbG93cywgbmV4dCkgew0KPiA+IC0JCXVuc2lnbmVkIGludCBpOw0KPiA+ICAJCXN0cnVjdCBt bHg1X2luZF90YWJsZV9pYnYgKmluZF90YmwgPSBOVUxMOw0KPiA+DQo+ID4gIAkJaWYgKGZsb3ct PmRyb3ApIHsNCj4gPiBAQCAtMjM5Miw2ICsyNDcyLDE4IEBAIG1seDVfZmxvd19zdG9wKHN0cnVj dCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QNCj4gbWx4NV9mbG93cyAqbGlzdCkNCj4gPiAgCQlE UlZfTE9HKERFQlVHLCAicG9ydCAldSBmbG93ICVwIHJlbW92ZWQiLCBkZXYtPmRhdGEtPnBvcnRf aWQsDQo+ID4gIAkJCSh2b2lkICopZmxvdyk7DQo+ID4gIAl9DQo+ID4gKwkvKiBDbGVhbnVwIFJ4 IHF1ZXVlIHR1bm5lbCBpbmZvLiAqLw0KPiA+ICsJZm9yIChpID0gMDsgaSAhPSBwcml2LT5yeHFz X247ICsraSkgew0KPiA+ICsJCXN0cnVjdCBtbHg1X3J4cV9kYXRhICpxID0gKCpwcml2LT5yeHFz KVtpXTsNCj4gPiArCQlzdHJ1Y3QgbWx4NV9yeHFfY3RybCAqcnhxX2N0cmwgPQ0KPiA+ICsJCQlj b250YWluZXJfb2YocSwgc3RydWN0IG1seDVfcnhxX2N0cmwsIHJ4cSk7DQo+ID4gKw0KPiA+ICsJ CWlmICghcSkNCj4gPiArCQkJY29udGludWU7DQo+ID4gKwkJbWVtc2V0KCh2b2lkICopcnhxX2N0 cmwtPnR1bm5lbF90eXBlcywgMCwNCj4gPiArCQkgICAgICAgc2l6ZW9mKHJ4cV9jdHJsLT50dW5u ZWxfdHlwZXMpKTsNCj4gPiArCQlxLT50dW5uZWwgPSAwOw0KPiA+ICsJfQ0KPiA+ICB9DQo+ID4N Cj4gPiAgLyoqDQo+ID4gQEAgLTI0MzksNyArMjUzMSw4IEBAIG1seDVfZmxvd19zdGFydChzdHJ1 Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0DQo+IG1seDVfZmxvd3MgKmxpc3QpDQo+ID4gIAkJ CQkJICAgICAgZmxvdy0+cnNzX2NvbmYua2V5X2xlbiwNCj4gPiAgCQkJCQkgICAgICBoYXNoX3J4 cV9pbml0W2ldLmhhc2hfZmllbGRzLA0KPiA+ICAJCQkJCSAgICAgIGZsb3ctPnJzc19jb25mLnF1 ZXVlLA0KPiA+IC0JCQkJCSAgICAgIGZsb3ctPnJzc19jb25mLnF1ZXVlX251bSk7DQo+ID4gKwkJ CQkJICAgICAgZmxvdy0+cnNzX2NvbmYucXVldWVfbnVtLA0KPiA+ICsJCQkJCSAgICAgIGZsb3ct PnR1bm5lbCk7DQo+ID4gIAkJCWlmIChmbG93LT5mcnhxW2ldLmhyeHEpDQo+ID4gIAkJCQlnb3Rv IGZsb3dfY3JlYXRlOw0KPiA+ICAJCQlmbG93LT5mcnhxW2ldLmhyeHEgPQ0KPiA+IEBAIC0yNDQ3 LDcgKzI1NDAsOCBAQCBtbHg1X2Zsb3dfc3RhcnQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0 cnVjdA0KPiBtbHg1X2Zsb3dzICpsaXN0KQ0KPiA+ICAJCQkJCSAgICAgIGZsb3ctPnJzc19jb25m LmtleV9sZW4sDQo+ID4gIAkJCQkJICAgICAgaGFzaF9yeHFfaW5pdFtpXS5oYXNoX2ZpZWxkcywN Cj4gPiAgCQkJCQkgICAgICBmbG93LT5yc3NfY29uZi5xdWV1ZSwNCj4gPiAtCQkJCQkgICAgICBm bG93LT5yc3NfY29uZi5xdWV1ZV9udW0pOw0KPiA+ICsJCQkJCSAgICAgIGZsb3ctPnJzc19jb25m LnF1ZXVlX251bSwNCj4gPiArCQkJCQkgICAgICBmbG93LT50dW5uZWwpOw0KPiA+ICAJCQlpZiAo IWZsb3ctPmZyeHFbaV0uaHJ4cSkgew0KPiA+ICAJCQkJRFJWX0xPRyhERUJVRywNCj4gPiAgCQkJ CQkicG9ydCAldSBmbG93ICVwIGNhbm5vdCBiZSBhcHBsaWVkIiwgQEAgLQ0KPiAyNDY5LDEwICsy NTYzLDcgQEANCj4gPiBtbHg1X2Zsb3dfc3RhcnQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0 cnVjdCBtbHg1X2Zsb3dzICpsaXN0KQ0KPiA+ICAJCQlEUlZfTE9HKERFQlVHLCAicG9ydCAldSBm bG93ICVwIGFwcGxpZWQiLA0KPiA+ICAJCQkJZGV2LT5kYXRhLT5wb3J0X2lkLCAodm9pZCAqKWZs b3cpOw0KPiA+ICAJCX0NCj4gPiAtCQlpZiAoIWZsb3ctPm1hcmspDQo+ID4gLQkJCWNvbnRpbnVl Ow0KPiA+IC0JCWZvciAoaSA9IDA7IGkgIT0gZmxvdy0+cnNzX2NvbmYucXVldWVfbnVtOyArK2kp DQo+ID4gLQkJCSgqcHJpdi0+cnhxcylbZmxvdy0+cnNzX2NvbmYucXVldWVbaV1dLT5tYXJrID0g MTsNCj4gPiArCQltbHg1X2Zsb3dfY3JlYXRlX3VwZGF0ZV9yeHFzKGRldiwgZmxvdyk7DQo+ID4g IAl9DQo+ID4gIAlyZXR1cm4gMDsNCj4gPiAgfQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9tbHg1L21seDVfcnhxLmMgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfcnhxLmMNCj4gPiBpbmRl eCAxZTQzNTRhYjMuLjM1MWFjZmMwZiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC9tbHg1 L21seDVfcnhxLmMNCj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfcnhxLmMNCj4gPiBA QCAtMTM4Niw2ICsxMzg2LDggQEAgbWx4NV9pbmRfdGFibGVfaWJ2X3ZlcmlmeShzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldikNCj4gPiAgICogICBmaXJzdCBxdWV1ZSBpbmRleCB3aWxsIGJlIHRha2Vu IGZvciB0aGUgaW5kaXJlY3Rpb24gdGFibGUuDQo+ID4gICAqIEBwYXJhbSBxdWV1ZXNfbg0KPiA+ ICAgKiAgIE51bWJlciBvZiBxdWV1ZXMuDQo+ID4gKyAqIEBwYXJhbSB0dW5uZWwNCj4gPiArICog ICBUdW5uZWwgdHlwZS4NCj4gPiAgICoNCj4gPiAgICogQHJldHVybg0KPiA+ICAgKiAgIFRoZSBW ZXJicyBvYmplY3QgaW5pdGlhbGlzZWQsIE5VTEwgb3RoZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMg c2V0Lg0KPiA+IEBAIC0xMzk0LDcgKzEzOTYsNyBAQCBzdHJ1Y3QgbWx4NV9ocnhxICogIG1seDVf aHJ4cV9uZXcoc3RydWN0DQo+ID4gcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCSAgICAgIGNvbnN0 IHVpbnQ4X3QgKnJzc19rZXksIHVpbnQzMl90IHJzc19rZXlfbGVuLA0KPiA+ICAJICAgICAgdWlu dDY0X3QgaGFzaF9maWVsZHMsDQo+ID4gLQkgICAgICBjb25zdCB1aW50MTZfdCAqcXVldWVzLCB1 aW50MzJfdCBxdWV1ZXNfbikNCj4gPiArCSAgICAgIGNvbnN0IHVpbnQxNl90ICpxdWV1ZXMsIHVp bnQzMl90IHF1ZXVlc19uLCB1aW50MzJfdCB0dW5uZWwpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBw cml2ICpwcml2ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gPiAgCXN0cnVjdCBtbHg1X2hy eHEgKmhyeHE7DQo+ID4gQEAgLTE0MzgsNiArMTQ0MCw3IEBAIG1seDVfaHJ4cV9uZXcoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gIAlocnhxLT5xcCA9IHFwOw0KPiA+ICAJaHJ4cS0+cnNz X2tleV9sZW4gPSByc3Nfa2V5X2xlbjsNCj4gPiAgCWhyeHEtPmhhc2hfZmllbGRzID0gaGFzaF9m aWVsZHM7DQo+ID4gKwlocnhxLT50dW5uZWwgPSB0dW5uZWw7DQo+ID4gIAltZW1jcHkoaHJ4cS0+ cnNzX2tleSwgcnNzX2tleSwgcnNzX2tleV9sZW4pOw0KPiA+ICAJcnRlX2F0b21pYzMyX2luYygm aHJ4cS0+cmVmY250KTsNCj4gPiAgCUxJU1RfSU5TRVJUX0hFQUQoJnByaXYtPmhyeHFzLCBocnhx LCBuZXh0KTsgQEAgLTE0NjYsNiArMTQ2OSw4IEBADQo+ID4gbWx4NV9ocnhxX25ldyhzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgICogICBmaXJzdCBxdWV1ZSBpbmRleCB3aWxsIGJlIHRh a2VuIGZvciB0aGUgaW5kaXJlY3Rpb24gdGFibGUuDQo+ID4gICAqIEBwYXJhbSBxdWV1ZXNfbg0K PiA+ICAgKiAgIE51bWJlciBvZiBxdWV1ZXMuDQo+ID4gKyAqIEBwYXJhbSB0dW5uZWwNCj4gPiAr ICogICBUdW5uZWwgdHlwZS4NCj4gPiAgICoNCj4gPiAgICogQHJldHVybg0KPiA+ICAgKiAgIEFu IGhhc2ggUnggcXVldWUgb24gc3VjY2Vzcy4NCj4gPiBAQCAtMTQ3NCw3ICsxNDc5LDcgQEAgc3Ry dWN0IG1seDVfaHJ4cSAqICBtbHg1X2hyeHFfZ2V0KHN0cnVjdA0KPiA+IHJ0ZV9ldGhfZGV2ICpk ZXYsDQo+ID4gIAkgICAgICBjb25zdCB1aW50OF90ICpyc3Nfa2V5LCB1aW50MzJfdCByc3Nfa2V5 X2xlbiwNCj4gPiAgCSAgICAgIHVpbnQ2NF90IGhhc2hfZmllbGRzLA0KPiA+IC0JICAgICAgY29u c3QgdWludDE2X3QgKnF1ZXVlcywgdWludDMyX3QgcXVldWVzX24pDQo+ID4gKwkgICAgICBjb25z dCB1aW50MTZfdCAqcXVldWVzLCB1aW50MzJfdCBxdWV1ZXNfbiwgdWludDMyX3QgdHVubmVsKQ0K PiA+ICB7DQo+ID4gIAlzdHJ1Y3QgcHJpdiAqcHJpdiA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7 DQo+ID4gIAlzdHJ1Y3QgbWx4NV9ocnhxICpocnhxOw0KPiA+IEBAIC0xNDg5LDYgKzE0OTQsOCBA QCBtbHg1X2hyeHFfZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAJCQljb250aW51 ZTsNCj4gPiAgCQlpZiAoaHJ4cS0+aGFzaF9maWVsZHMgIT0gaGFzaF9maWVsZHMpDQo+ID4gIAkJ CWNvbnRpbnVlOw0KPiA+ICsJCWlmIChocnhxLT50dW5uZWwgIT0gdHVubmVsKQ0KPiA+ICsJCQlj b250aW51ZTsNCj4gPiAgCQlpbmRfdGJsID0gbWx4NV9pbmRfdGFibGVfaWJ2X2dldChkZXYsIHF1 ZXVlcywgcXVldWVzX24pOw0KPiA+ICAJCWlmICghaW5kX3RibCkNCj4gPiAgCQkJY29udGludWU7 DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmMNCj4gPiBiL2Ry aXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmMgaW5kZXggMWY0MjJjNzBiLi5kMDYxZGZjOGEgMTAw NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4dHguYw0KPiA+ICsrKyBiL2Ry aXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmMNCj4gPiBAQCAtMzQsNyArMzQsNyBAQA0KPiA+ICAj aW5jbHVkZSAibWx4NV9wcm0uaCINCj4gPg0KPiA+ICBzdGF0aWMgX19ydGVfYWx3YXlzX2lubGlu ZSB1aW50MzJfdA0KPiA+IC1yeHFfY3FfdG9fcGt0X3R5cGUodm9sYXRpbGUgc3RydWN0IG1seDVf Y3FlICpjcWUpOw0KPiA+ICtyeHFfY3FfdG9fcGt0X3R5cGUoc3RydWN0IG1seDVfcnhxX2RhdGEg KnJ4cSwgdm9sYXRpbGUgc3RydWN0DQo+ID4gK21seDVfY3FlICpjcWUpOw0KPiA+DQo+ID4gIHN0 YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIGludA0KPiA+ICBtbHg1X3J4X3BvbGxfbGVuKHN0cnVj dCBtbHg1X3J4cV9kYXRhICpyeHEsIHZvbGF0aWxlIHN0cnVjdCBtbHg1X2NxZQ0KPiA+ICpjcWUs IEBAIC0xMjUsMTIgKzEyNSwxNCBAQCBtbHg1X3NldF9wdHlwZV90YWJsZSh2b2lkKQ0KPiA+ICAJ KCpwKVsweDhhXSA9IFJURV9QVFlQRV9MMl9FVEhFUiB8IFJURV9QVFlQRV9MM19JUFY0X0VYVF9V TktOT1dOIHwNCj4gPiAgCQkgICAgIFJURV9QVFlQRV9MNF9VRFA7DQo+ID4gIAkvKiBUdW5uZWxl ZCAtIEwzICovDQo+ID4gKwkoKnApWzB4NDBdID0gUlRFX1BUWVBFX0wyX0VUSEVSIHwgUlRFX1BU WVBFX0wzX0lQVjRfRVhUX1VOS05PV047DQo+ID4gIAkoKnApWzB4NDFdID0gUlRFX1BUWVBFX0wy X0VUSEVSIHwgUlRFX1BUWVBFX0wzX0lQVjRfRVhUX1VOS05PV04gfA0KPiA+ICAJCSAgICAgUlRF X1BUWVBFX0lOTkVSX0wzX0lQVjZfRVhUX1VOS05PV04gfA0KPiA+ICAJCSAgICAgUlRFX1BUWVBF X0lOTkVSX0w0X05PTkZSQUc7DQo+ID4gIAkoKnApWzB4NDJdID0gUlRFX1BUWVBFX0wyX0VUSEVS IHwgUlRFX1BUWVBFX0wzX0lQVjRfRVhUX1VOS05PV04gfA0KPiA+ICAJCSAgICAgUlRFX1BUWVBF X0lOTkVSX0wzX0lQVjRfRVhUX1VOS05PV04gfA0KPiA+ICAJCSAgICAgUlRFX1BUWVBFX0lOTkVS X0w0X05PTkZSQUc7DQo+ID4gKwkoKnApWzB4YzBdID0gUlRFX1BUWVBFX0wyX0VUSEVSIHwgUlRF X1BUWVBFX0wzX0lQVjZfRVhUX1VOS05PV047DQo+ID4gIAkoKnApWzB4YzFdID0gUlRFX1BUWVBF X0wyX0VUSEVSIHwgUlRFX1BUWVBFX0wzX0lQVjZfRVhUX1VOS05PV04gfA0KPiA+ICAJCSAgICAg UlRFX1BUWVBFX0lOTkVSX0wzX0lQVjZfRVhUX1VOS05PV04gfA0KPiA+ICAJCSAgICAgUlRFX1BU WVBFX0lOTkVSX0w0X05PTkZSQUc7DQo+ID4gQEAgLTE1NzcsNiArMTU3OSw4IEBAIG1seDVfdHhf YnVyc3RfZW1wdyh2b2lkICpkcGRrX3R4cSwgc3RydWN0DQo+ID4gcnRlX21idWYgKipwa3RzLCB1 aW50MTZfdCBwa3RzX24pDQo+ID4gIC8qKg0KPiA+ICAgKiBUcmFuc2xhdGUgUlggY29tcGxldGlv biBmbGFncyB0byBwYWNrZXQgdHlwZS4NCj4gPiAgICoNCj4gPiArICogQHBhcmFtW2luXSByeHEN Cj4gPiArICogICBQb2ludGVyIHRvIFJYIHF1ZXVlIHN0cnVjdHVyZS4NCj4gPiAgICogQHBhcmFt W2luXSBjcWUNCj4gPiAgICogICBQb2ludGVyIHRvIENRRS4NCj4gPiAgICoNCj4gPiBAQCAtMTU4 Niw3ICsxNTkwLDcgQEAgbWx4NV90eF9idXJzdF9lbXB3KHZvaWQgKmRwZGtfdHhxLCBzdHJ1Y3Qg cnRlX21idWYNCj4gKipwa3RzLCB1aW50MTZfdCBwa3RzX24pDQo+ID4gICAqICAgUGFja2V0IHR5 cGUgZm9yIHN0cnVjdCBydGVfbWJ1Zi4NCj4gPiAgICovDQo+ID4gIHN0YXRpYyBpbmxpbmUgdWlu dDMyX3QNCj4gPiAtcnhxX2NxX3RvX3BrdF90eXBlKHZvbGF0aWxlIHN0cnVjdCBtbHg1X2NxZSAq Y3FlKQ0KPiA+ICtyeHFfY3FfdG9fcGt0X3R5cGUoc3RydWN0IG1seDVfcnhxX2RhdGEgKnJ4cSwg dm9sYXRpbGUgc3RydWN0DQo+ID4gK21seDVfY3FlICpjcWUpDQo+ID4gIHsNCj4gPiAgCXVpbnQ4 X3QgaWR4Ow0KPiA+ICAJdWludDhfdCBwaW5mbyA9IGNxZS0+cGt0X2luZm87DQo+ID4gQEAgLTE2 MDEsNyArMTYwNSw3IEBAIHJ4cV9jcV90b19wa3RfdHlwZSh2b2xhdGlsZSBzdHJ1Y3QgbWx4NV9j cWUgKmNxZSkNCj4gPiAgCSAqIGJpdFs3XSA9IG91dGVyX2wzX3R5cGUNCj4gPiAgCSAqLw0KPiA+ ICAJaWR4ID0gKChwaW5mbyAmIDB4MykgPDwgNikgfCAoKHB0eXBlICYgMHhmYzAwKSA+PiAxMCk7 DQo+ID4gLQlyZXR1cm4gbWx4NV9wdHlwZV90YWJsZVtpZHhdOw0KPiA+ICsJcmV0dXJuIG1seDVf cHR5cGVfdGFibGVbaWR4XSB8IHJ4cS0+dHVubmVsICogISEoaWR4ICYgKDEgPDwgNikpOw0KPiA+ ICB9DQo+ID4NCj4gPiAgLyoqDQo+ID4gQEAgLTE4MzMsNyArMTgzNyw3IEBAIG1seDVfcnhfYnVy c3Qodm9pZCAqZHBka19yeHEsIHN0cnVjdCBydGVfbWJ1Zg0KPiAqKnBrdHMsIHVpbnQxNl90IHBr dHNfbikNCj4gPiAgCQkJcGt0ID0gc2VnOw0KPiA+ICAJCQlhc3NlcnQobGVuID49IChyeHEtPmNy Y19wcmVzZW50IDw8IDIpKTsNCj4gPiAgCQkJLyogVXBkYXRlIHBhY2tldCBpbmZvcm1hdGlvbi4g Ki8NCj4gPiAtCQkJcGt0LT5wYWNrZXRfdHlwZSA9IHJ4cV9jcV90b19wa3RfdHlwZShjcWUpOw0K PiA+ICsJCQlwa3QtPnBhY2tldF90eXBlID0gcnhxX2NxX3RvX3BrdF90eXBlKHJ4cSwgY3FlKTsN Cj4gPiAgCQkJcGt0LT5vbF9mbGFncyA9IDA7DQo+ID4gIAkJCWlmIChyc3NfaGFzaF9yZXMgJiYg cnhxLT5yc3NfaGFzaCkgew0KPiA+ICAJCQkJcGt0LT5oYXNoLnJzcyA9IHJzc19oYXNoX3JlczsN Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4dHguaA0KPiA+IGIvZHJp dmVycy9uZXQvbWx4NS9tbHg1X3J4dHguaCBpbmRleCBhNzAyY2I2MDMuLjY4NjZmNjgxOCAxMDA2 NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5oDQo+ID4gKysrIGIvZHJp dmVycy9uZXQvbWx4NS9tbHg1X3J4dHguaA0KPiA+IEBAIC0xMDQsNiArMTA0LDcgQEAgc3RydWN0 IG1seDVfcnhxX2RhdGEgew0KPiA+ICAJdm9pZCAqY3FfdWFyOyAvKiBDUSB1c2VyIGFjY2VzcyBy ZWdpb24uICovDQo+ID4gIAl1aW50MzJfdCBjcW47IC8qIENRIG51bWJlci4gKi8NCj4gPiAgCXVp bnQ4X3QgY3FfYXJtX3NuOyAvKiBDUSBhcm0gc2VxIG51bWJlci4gKi8NCj4gPiArCXVpbnQzMl90 IHR1bm5lbDsgLyogVHVubmVsIGluZm9ybWF0aW9uLiAqLw0KPiA+ICB9IF9fcnRlX2NhY2hlX2Fs aWduZWQ7DQo+ID4NCj4gPiAgLyogVmVyYnMgUnggcXVldWUgZWxlbWVudHMuICovDQo+ID4gQEAg LTEyNSw2ICsxMjYsNyBAQCBzdHJ1Y3QgbWx4NV9yeHFfY3RybCB7DQo+ID4gIAlzdHJ1Y3QgbWx4 NV9yeHFfaWJ2ICppYnY7IC8qIFZlcmJzIGVsZW1lbnRzLiAqLw0KPiA+ICAJc3RydWN0IG1seDVf cnhxX2RhdGEgcnhxOyAvKiBEYXRhIHBhdGggc3RydWN0dXJlLiAqLw0KPiA+ICAJdW5zaWduZWQg aW50IHNvY2tldDsgLyogQ1BVIHNvY2tldCBJRCBmb3IgYWxsb2NhdGlvbnMuICovDQo+ID4gKwl1 aW50MzJfdCB0dW5uZWxfdHlwZXNbMTZdOyAvKiBUdW5uZWwgdHlwZSBjb3VudGVyLiAqLw0KPiA+ ICAJdW5zaWduZWQgaW50IGlycToxOyAvKiBXaGV0aGVyIElSUSBpcyBlbmFibGVkLiAqLw0KPiA+ ICAJdWludDE2X3QgaWR4OyAvKiBRdWV1ZSBpbmRleC4gKi8NCj4gPiAgfTsNCj4gPiBAQCAtMTQ1 LDYgKzE0Nyw3IEBAIHN0cnVjdCBtbHg1X2hyeHEgew0KPiA+ICAJc3RydWN0IG1seDVfaW5kX3Rh YmxlX2lidiAqaW5kX3RhYmxlOyAvKiBJbmRpcmVjdGlvbiB0YWJsZS4gKi8NCj4gPiAgCXN0cnVj dCBpYnZfcXAgKnFwOyAvKiBWZXJicyBxdWV1ZSBwYWlyLiAqLw0KPiA+ICAJdWludDY0X3QgaGFz aF9maWVsZHM7IC8qIFZlcmJzIEhhc2ggZmllbGRzLiAqLw0KPiA+ICsJdWludDMyX3QgdHVubmVs OyAvKiBUdW5uZWwgdHlwZS4gKi8NCj4gPiAgCXVpbnQzMl90IHJzc19rZXlfbGVuOyAvKiBIYXNo IGtleSBsZW5ndGggaW4gYnl0ZXMuICovDQo+ID4gIAl1aW50OF90IHJzc19rZXlbXTsgLyogSGFz aCBrZXkuICovDQo+ID4gIH07DQo+ID4gQEAgLTI0OCwxMSArMjUxLDEzIEBAIGludCBtbHg1X2lu ZF90YWJsZV9pYnZfdmVyaWZ5KHN0cnVjdCBydGVfZXRoX2Rldg0KPiA+ICpkZXYpOyAgc3RydWN0 IG1seDVfaHJ4cSAqbWx4NV9ocnhxX25ldyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAg CQkJCWNvbnN0IHVpbnQ4X3QgKnJzc19rZXksIHVpbnQzMl90IHJzc19rZXlfbGVuLA0KPiA+ICAJ CQkJdWludDY0X3QgaGFzaF9maWVsZHMsDQo+ID4gLQkJCQljb25zdCB1aW50MTZfdCAqcXVldWVz LCB1aW50MzJfdCBxdWV1ZXNfbik7DQo+ID4gKwkJCQljb25zdCB1aW50MTZfdCAqcXVldWVzLCB1 aW50MzJfdCBxdWV1ZXNfbiwNCj4gPiArCQkJCXVpbnQzMl90IHR1bm5lbCk7DQo+ID4gIHN0cnVj dCBtbHg1X2hyeHEgKm1seDVfaHJ4cV9nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4g IAkJCQljb25zdCB1aW50OF90ICpyc3Nfa2V5LCB1aW50MzJfdCByc3Nfa2V5X2xlbiwNCj4gPiAg CQkJCXVpbnQ2NF90IGhhc2hfZmllbGRzLA0KPiA+IC0JCQkJY29uc3QgdWludDE2X3QgKnF1ZXVl cywgdWludDMyX3QgcXVldWVzX24pOw0KPiA+ICsJCQkJY29uc3QgdWludDE2X3QgKnF1ZXVlcywg dWludDMyX3QgcXVldWVzX24sDQo+ID4gKwkJCQl1aW50MzJfdCB0dW5uZWwpOw0KPiA+ICBpbnQg bWx4NV9ocnhxX3JlbGVhc2Uoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2hy eHENCj4gPiAqaHhycSk7ICBpbnQgbWx4NV9ocnhxX2lidl92ZXJpZnkoc3RydWN0IHJ0ZV9ldGhf ZGV2ICpkZXYpOyAgdWludDY0X3QNCj4gPiBtbHg1X2dldF9yeF9wb3J0X29mZmxvYWRzKHZvaWQp OyBkaWZmIC0tZ2l0DQo+ID4gYS9kcml2ZXJzL25ldC9tbHg1L21seDVfcnh0eF92ZWNfbmVvbi5o DQo+ID4gYi9kcml2ZXJzL25ldC9tbHg1L21seDVfcnh0eF92ZWNfbmVvbi5oDQo+ID4gaW5kZXgg YmJlMTgxOGVmLi45ZjkxMzYxMDggMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9t bHg1X3J4dHhfdmVjX25lb24uaA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4 X3ZlY19uZW9uLmgNCj4gPiBAQCAtNTUxLDYgKzU1MSw3IEBAIHJ4cV9jcV90b19wdHlwZV9vZmxh Z3NfdihzdHJ1Y3QgbWx4NV9yeHFfZGF0YSAqcnhxLA0KPiA+ICAJY29uc3QgdWludDY0eDFfdCBt YnVmX2luaXQgPSB2bGQxX3U2NCgmcnhxLT5tYnVmX2luaXRpYWxpemVyKTsNCj4gPiAgCWNvbnN0 IHVpbnQ2NHgxX3QgcjMyX21hc2sgPSB2Y3JlYXRlX3U2NCgweGZmZmZmZmZmKTsNCj4gPiAgCXVp bnQ2NHgyX3QgcmVhcm0wLCByZWFybTEsIHJlYXJtMiwgcmVhcm0zOw0KPiA+ICsJdWludDhfdCBw dF9pZHgwLCBwdF9pZHgxLCBwdF9pZHgyLCBwdF9pZHgzOw0KPiA+DQo+ID4gIAlpZiAocnhxLT5t YXJrKSB7DQo+ID4gIAkJY29uc3QgdWludDMyeDRfdCBmdF9kZWYgPSB2ZHVwcV9uX3UzMihNTFg1 X0ZMT1dfTUFSS19ERUZBVUxUKTsNCj4gPiBAQCAtNTgzLDE0ICs1ODQsMTggQEAgcnhxX2NxX3Rv X3B0eXBlX29mbGFnc192KHN0cnVjdCBtbHg1X3J4cV9kYXRhICpyeHEsDQo+ID4gIAlwdHlwZSA9 IHZzaHJuX25fdTMyKHB0eXBlX2luZm8sIDEwKTsNCj4gPiAgCS8qIEVycm9yZWQgcGFja2V0cyB3 aWxsIGhhdmUgUlRFX1BUWVBFX0FMTF9NQVNLLiAqLw0KPiA+ICAJcHR5cGUgPSB2b3JyX3UxNihw dHlwZSwgb3BfZXJyKTsNCj4gPiAtCXBrdHNbMF0tPnBhY2tldF90eXBlID0NCj4gPiAtCQltbHg1 X3B0eXBlX3RhYmxlW3ZnZXRfbGFuZV91OCh2cmVpbnRlcnByZXRfdThfdTE2KHB0eXBlKSwgNild Ow0KPiA+IC0JcGt0c1sxXS0+cGFja2V0X3R5cGUgPQ0KPiA+IC0JCW1seDVfcHR5cGVfdGFibGVb dmdldF9sYW5lX3U4KHZyZWludGVycHJldF91OF91MTYocHR5cGUpLCA0KV07DQo+ID4gLQlwa3Rz WzJdLT5wYWNrZXRfdHlwZSA9DQo+ID4gLQkJbWx4NV9wdHlwZV90YWJsZVt2Z2V0X2xhbmVfdTgo dnJlaW50ZXJwcmV0X3U4X3UxNihwdHlwZSksIDIpXTsNCj4gPiAtCXBrdHNbM10tPnBhY2tldF90 eXBlID0NCj4gPiAtCQltbHg1X3B0eXBlX3RhYmxlW3ZnZXRfbGFuZV91OCh2cmVpbnRlcnByZXRf dThfdTE2KHB0eXBlKSwgMCldOw0KPiA+ICsJcHRfaWR4MCA9IHZnZXRfbGFuZV91OCh2cmVpbnRl cnByZXRfdThfdTE2KHB0eXBlKSwgNik7DQo+ID4gKwlwdF9pZHgxID0gdmdldF9sYW5lX3U4KHZy ZWludGVycHJldF91OF91MTYocHR5cGUpLCA0KTsNCj4gPiArCXB0X2lkeDIgPSB2Z2V0X2xhbmVf dTgodnJlaW50ZXJwcmV0X3U4X3UxNihwdHlwZSksIDIpOw0KPiA+ICsJcHRfaWR4MyA9IHZnZXRf bGFuZV91OCh2cmVpbnRlcnByZXRfdThfdTE2KHB0eXBlKSwgMCk7DQo+ID4gKwlwa3RzWzBdLT5w YWNrZXRfdHlwZSA9IG1seDVfcHR5cGVfdGFibGVbcHRfaWR4MF0gfA0KPiA+ICsJCQkgICAgICAg ISEocHRfaWR4MCAmICgxIDw8IDYpKSAqIHJ4cS0+dHVubmVsOw0KPiA+ICsJcGt0c1sxXS0+cGFj a2V0X3R5cGUgPSBtbHg1X3B0eXBlX3RhYmxlW3B0X2lkeDFdIHwNCj4gPiArCQkJICAgICAgICEh KHB0X2lkeDEgJiAoMSA8PCA2KSkgKiByeHEtPnR1bm5lbDsNCj4gPiArCXBrdHNbMl0tPnBhY2tl dF90eXBlID0gbWx4NV9wdHlwZV90YWJsZVtwdF9pZHgyXSB8DQo+ID4gKwkJCSAgICAgICAhIShw dF9pZHgyICYgKDEgPDwgNikpICogcnhxLT50dW5uZWw7DQo+ID4gKwlwa3RzWzNdLT5wYWNrZXRf dHlwZSA9IG1seDVfcHR5cGVfdGFibGVbcHRfaWR4M10gfA0KPiA+ICsJCQkgICAgICAgISEocHRf aWR4MyAmICgxIDw8IDYpKSAqIHJ4cS0+dHVubmVsOw0KPiA+ICAJLyogRmlsbCBmbGFncyBmb3Ig Y2hlY2tzdW0gYW5kIFZMQU4uICovDQo+ID4gIAlwaW5mbyA9IHZhbmRxX3UzMihwdHlwZV9pbmZv LCBwdHlwZV9vbF9tYXNrKTsNCj4gPiAgCXBpbmZvID0gdnJlaW50ZXJwcmV0cV91MzJfdTgoDQo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4X3ZlY19zc2UuaA0KPiA+ IGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4dHhfdmVjX3NzZS5oDQo+ID4gaW5kZXggYzA4OGJj YjUxLi5kMjQ5MjQ4MWQgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4 dHhfdmVjX3NzZS5oDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4dHhfdmVjX3Nz ZS5oDQo+ID4gQEAgLTU0Miw2ICs1NDIsNyBAQCByeHFfY3FfdG9fcHR5cGVfb2ZsYWdzX3Yoc3Ry dWN0IG1seDVfcnhxX2RhdGEgKnJ4cSwNCj4gX19tMTI4aSBjcWVzWzRdLA0KPiA+ICAJY29uc3Qg X19tMTI4aSBtYnVmX2luaXQgPQ0KPiA+ICAJCV9tbV9sb2FkbF9lcGk2NCgoX19tMTI4aSAqKSZy eHEtPm1idWZfaW5pdGlhbGl6ZXIpOw0KPiA+ICAJX19tMTI4aSByZWFybTAsIHJlYXJtMSwgcmVh cm0yLCByZWFybTM7DQo+ID4gKwl1aW50OF90IHB0X2lkeDAsIHB0X2lkeDEsIHB0X2lkeDIsIHB0 X2lkeDM7DQo+ID4NCj4gPiAgCS8qIEV4dHJhY3QgcGt0X2luZm8gZmllbGQuICovDQo+ID4gIAlw aW5mbzAgPSBfbW1fdW5wYWNrbG9fZXBpMzIoY3Flc1swXSwgY3Flc1sxXSk7IEBAIC01OTUsMTAg KzU5NiwxOCBAQA0KPiA+IHJ4cV9jcV90b19wdHlwZV9vZmxhZ3NfdihzdHJ1Y3QgbWx4NV9yeHFf ZGF0YSAqcnhxLCBfX20xMjhpIGNxZXNbNF0sDQo+ID4gIAkvKiBFcnJvcmVkIHBhY2tldHMgd2ls bCBoYXZlIFJURV9QVFlQRV9BTExfTUFTSy4gKi8NCj4gPiAgCW9wX2VyciA9IF9tbV9zcmxpX2Vw aTE2KG9wX2VyciwgOCk7DQo+ID4gIAlwdHlwZSA9IF9tbV9vcl9zaTEyOChwdHlwZSwgb3BfZXJy KTsNCj4gPiAtCXBrdHNbMF0tPnBhY2tldF90eXBlID0gbWx4NV9wdHlwZV90YWJsZVtfbW1fZXh0 cmFjdF9lcGk4KHB0eXBlLCAwKV07DQo+ID4gLQlwa3RzWzFdLT5wYWNrZXRfdHlwZSA9IG1seDVf cHR5cGVfdGFibGVbX21tX2V4dHJhY3RfZXBpOChwdHlwZSwgMildOw0KPiA+IC0JcGt0c1syXS0+ cGFja2V0X3R5cGUgPSBtbHg1X3B0eXBlX3RhYmxlW19tbV9leHRyYWN0X2VwaTgocHR5cGUsIDQp XTsNCj4gPiAtCXBrdHNbM10tPnBhY2tldF90eXBlID0gbWx4NV9wdHlwZV90YWJsZVtfbW1fZXh0 cmFjdF9lcGk4KHB0eXBlLCA2KV07DQo+ID4gKwlwdF9pZHgwID0gX21tX2V4dHJhY3RfZXBpOChw dHlwZSwgMCk7DQo+ID4gKwlwdF9pZHgxID0gX21tX2V4dHJhY3RfZXBpOChwdHlwZSwgMik7DQo+ ID4gKwlwdF9pZHgyID0gX21tX2V4dHJhY3RfZXBpOChwdHlwZSwgNCk7DQo+ID4gKwlwdF9pZHgz ID0gX21tX2V4dHJhY3RfZXBpOChwdHlwZSwgNik7DQo+ID4gKwlwa3RzWzBdLT5wYWNrZXRfdHlw ZSA9IG1seDVfcHR5cGVfdGFibGVbcHRfaWR4MF0gfA0KPiA+ICsJCQkgICAgICAgISEocHRfaWR4 MCAmICgxIDw8IDYpKSAqIHJ4cS0+dHVubmVsOw0KPiA+ICsJcGt0c1sxXS0+cGFja2V0X3R5cGUg PSBtbHg1X3B0eXBlX3RhYmxlW3B0X2lkeDFdIHwNCj4gPiArCQkJICAgICAgICEhKHB0X2lkeDEg JiAoMSA8PCA2KSkgKiByeHEtPnR1bm5lbDsNCj4gPiArCXBrdHNbMl0tPnBhY2tldF90eXBlID0g bWx4NV9wdHlwZV90YWJsZVtwdF9pZHgyXSB8DQo+ID4gKwkJCSAgICAgICAhIShwdF9pZHgyICYg KDEgPDwgNikpICogcnhxLT50dW5uZWw7DQo+ID4gKwlwa3RzWzNdLT5wYWNrZXRfdHlwZSA9IG1s eDVfcHR5cGVfdGFibGVbcHRfaWR4M10gfA0KPiA+ICsJCQkgICAgICAgISEocHRfaWR4MyAmICgx IDw8IDYpKSAqIHJ4cS0+dHVubmVsOw0KPiA+ICAJLyogRmlsbCBmbGFncyBmb3IgY2hlY2tzdW0g YW5kIFZMQU4uICovDQo+ID4gIAlwaW5mbyA9IF9tbV9hbmRfc2kxMjgocGluZm8sIHB0eXBlX29s X21hc2spOw0KPiA+ICAJcGluZm8gPSBfbW1fc2h1ZmZsZV9lcGk4KGN2X2ZsYWdfc2VsLCBwaW5m byk7DQo+ID4gLS0NCj4gPiAyLjEzLjMNCj4gDQo+IA0KPiAtLQ0KPiBOw6lsaW8gTGFyYW5qZWly bw0KPiA2V0lORA0K