From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0071.outbound.protection.outlook.com [104.47.0.71]) by dpdk.org (Postfix) with ESMTP id 5362F1C656 for ; Fri, 13 Apr 2018 17:22:58 +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=M1Z4oir9cwiyZ0s+FKSx632VmhgfD+XWmzYieBxVzSY=; b=JPF8vwmnXie2Mphcwt5KW1FBXZuIsvzN4JYLZT3uUXW+lt8bjatIcJnKlx77emMuQ/SSWYPdLPc22qfzFIl+CEkZLUG/6sMOLsOv+d5y5jhT6mT9x4xZOKasZ7PwWZhsuBJOhgjVEFXbTXliJZEBcW+/prePkMVJksJelvP6DGs= Received: from VI1PR05MB1678.eurprd05.prod.outlook.com (10.165.235.152) by VI1PR05MB4240.eurprd05.prod.outlook.com (52.133.12.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.675.11; Fri, 13 Apr 2018 15:22:56 +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; Fri, 13 Apr 2018 15:22:50 +0000 From: "Xueming(Steven) Li" To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= CC: Shahaf Shuler , "dev@dpdk.org" Thread-Topic: [PATCH v3 11/14] net/mlx5: support MPLS-in-GRE and MPLS-in-UDP Thread-Index: AQHT0xmHuPHB/gJvUUWwkBY/8wvVIKP+suCAgAASw1CAAAMjgIAABeew Date: Fri, 13 Apr 2018 15:22:50 +0000 Message-ID: References: <20180410133415.189905-1-xuemingl%40mellanox.com> <20180413112023.106420-12-xuemingl@mellanox.com> <20180413133717.afxaqj6i6pr53vdh@laranjeiro-vm.dev.6wind.com> <20180413145539.22roooz6ikcvkvg2@laranjeiro-vm.dev.6wind.com> In-Reply-To: <20180413145539.22roooz6ikcvkvg2@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; VI1PR05MB4240; 7:Xzjh3OuqMcISfpskbNKRE6aXZL40PJD+2mONnMzn+zdKwkXtRcg4KDJoGDh7HTvfK4e7JhDzne1oXGYUuDEEgPtcYaiTYuP7e4ZOyGyKUiTKfUfMbEn1ADs3mB7hJ2wwg9U69xRCsE7nsgKyrIJNZx3uJ6pTDz7VF4IKhjxIUaMJNsUIVtuCCEt7uA5J0ufARunx44WHd/yZCnBO2C0GLgRH2zjg7PpdG1gDLaMNtWCoa3rMLChBmGVJkRrIJjXQ 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:VI1PR05MB4240; x-ms-traffictypediagnostic: VI1PR05MB4240: 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)(93006095)(93001095)(3231232)(944501327)(52105095)(10201501046)(3002001)(6055026)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR05MB4240; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB4240; x-forefront-prvs: 0641678E68 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(346002)(39860400002)(376002)(39380400002)(366004)(189003)(199004)(13464003)(74316002)(446003)(68736007)(11346002)(5660300001)(6436002)(105586002)(106356001)(14454004)(6246003)(53946003)(53936002)(486006)(9686003)(55016002)(33656002)(54906003)(3280700002)(305945005)(3846002)(25786009)(8936002)(6506007)(6916009)(81156014)(8676002)(3660700001)(59450400001)(97736004)(186003)(102836004)(93886005)(316002)(7696005)(99286004)(86362001)(2900100001)(53546011)(81166006)(4326008)(476003)(2906002)(66066001)(5250100002)(7736002)(6116002)(229853002)(478600001)(76176011)(26005); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB4240; 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: FH/7jyBLk/OtZe1TrcbV/POeMHXU6Gk1e95r4oYY5S+hi6vAf3fT5DAqd6lEoi/hWxOn+pg/Ncvhg2ySbBdyd7HFTChord05g2oA3PqU50IPmWsmYqlebvqmIpADJ2u9YGH5gtd2i2rbApTjnzAgLiKDiRk+DZTHfCo21Jkll88QXsC5gFtb1nIeawlZ8Cj2 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: 8914d975-f878-48e5-e4cc-08d5a1526b70 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8914d975-f878-48e5-e4cc-08d5a1526b70 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Apr 2018 15:22:50.3806 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4240 Subject: Re: [dpdk-dev] [PATCH v3 11/14] net/mlx5: support MPLS-in-GRE and MPLS-in-UDP 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: Fri, 13 Apr 2018 15:22:58 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTsOpbGlvIExhcmFuamVp cm8gPG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tPg0KPiBTZW50OiBGcmlkYXksIEFwcmlsIDEz LCAyMDE4IDEwOjU2IFBNDQo+IFRvOiBYdWVtaW5nKFN0ZXZlbikgTGkgPHh1ZW1pbmdsQG1lbGxh bm94LmNvbT4NCj4gQ2M6IFNoYWhhZiBTaHVsZXIgPHNoYWhhZnNAbWVsbGFub3guY29tPjsgZGV2 QGRwZGsub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMTEvMTRdIG5ldC9tbHg1OiBzdXBw b3J0IE1QTFMtaW4tR1JFIGFuZCBNUExTLWluLQ0KPiBVRFANCj4gDQo+IE9uIEZyaSwgQXByIDEz LCAyMDE4IGF0IDAyOjQ4OjE3UE0gKzAwMDAsIFh1ZW1pbmcoU3RldmVuKSBMaSB3cm90ZToNCj4g Pg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogTsOp bGlvIExhcmFuamVpcm8gPG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tPg0KPiA+ID4gU2VudDog RnJpZGF5LCBBcHJpbCAxMywgMjAxOCA5OjM3IFBNDQo+ID4gPiBUbzogWHVlbWluZyhTdGV2ZW4p IExpIDx4dWVtaW5nbEBtZWxsYW5veC5jb20+DQo+ID4gPiBDYzogU2hhaGFmIFNodWxlciA8c2hh aGFmc0BtZWxsYW5veC5jb20+OyBkZXZAZHBkay5vcmcNCj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFU Q0ggdjMgMTEvMTRdIG5ldC9tbHg1OiBzdXBwb3J0IE1QTFMtaW4tR1JFIGFuZA0KPiA+ID4gTVBM Uy1pbi0gVURQDQo+ID4gPg0KPiA+ID4gU29tZSBuaXRzLA0KPiA+ID4NCj4gPiA+IE9uIEZyaSwg QXByIDEzLCAyMDE4IGF0IDA3OjIwOjIwUE0gKzA4MDAsIFh1ZW1pbmcgTGkgd3JvdGU6DQo+ID4g PiA+IFRoaXMgcGF0Y2ggc3VwcG9ydHMgbmV3IHR1bm5lbCB0eXBlIE1QTFMtaW4tR1JFIGFuZCBN UExTLWluLVVEUC4NCj4gPiA+ID4gRmxvdyBwYXR0ZXJuIGV4YW1wbGU6DQo+ID4gPiA+ICAgaXB2 NCBwcm90byBpcyA0NyAvIGdyZSBwcm90byBpcyAweDg4NDcgLyBtcGxzDQo+ID4gPiA+ICAgaXB2 NCAvIHVkcCBkc3QgaXMgNjYzNSAvIG1wbHMgLyBlbmQNCj4gPiA+ID4NCj4gPiA+ID4gU2lnbmVk LW9mZi1ieTogWHVlbWluZyBMaSA8eHVlbWluZ2xAbWVsbGFub3guY29tPg0KPiA+ID4gPiAtLS0N Cj4gPiA+ID4gIGRyaXZlcnMvbmV0L21seDUvTWFrZWZpbGUgICAgfCAgIDUgKysNCj4gPiA+ID4g IGRyaXZlcnMvbmV0L21seDUvbWx4NS5jICAgICAgfCAgMTUgKysrKysNCj4gPiA+ID4gIGRyaXZl cnMvbmV0L21seDUvbWx4NS5oICAgICAgfCAgIDEgKw0KPiA+ID4gPiAgZHJpdmVycy9uZXQvbWx4 NS9tbHg1X2Zsb3cuYyB8IDE0OA0KPiA+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystDQo+ID4gPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDE2NiBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQ0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvbWx4NS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L21seDUvTWFrZWZpbGUNCj4gPiA+ID4g aW5kZXggZjlhNmM0NjBiLi4zMzU1MzQ4M2UgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMv bmV0L21seDUvTWFrZWZpbGUNCj4gPiA+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9NYWtlZmls ZQ0KPiA+ID4gPiBAQCAtMTMxLDYgKzEzMSwxMSBAQCBtbHg1X2F1dG9jb25mLmgubmV3Og0KPiA+ ID4gPiAkKFJURV9TREspL2J1aWxkdG9vbHMvYXV0by0NCj4gPiA+IGNvbmZpZy1oLnNoDQo+ID4g PiA+ICAJCWVudW0gTUxYNURWX0NPTlRFWFRfTUFTS19UVU5ORUxfT0ZGTE9BRFMgXA0KPiA+ID4g PiAgCQkkKEFVVE9DT05GX09VVFBVVCkNCj4gPiA+ID4gIAkkUSBzaCAtLSAnJDwnICckQCcgXA0K PiA+ID4gPiArCQlIQVZFX0lCVl9ERVZJQ0VfTVBMU19TVVBQT1JUIFwNCj4gPiA+ID4gKwkJaW5m aW5pYmFuZC92ZXJicy5oIFwNCj4gPiA+ID4gKwkJZW51bSBJQlZfRkxPV19TUEVDX01QTFMgXA0K PiA+ID4gPiArCQkkKEFVVE9DT05GX09VVFBVVCkNCj4gPiA+ID4gKwkkUSBzaCAtLSAnJDwnICck QCcgXA0KPiA+ID4gPiAgCQlIQVZFX0lCVl9XUV9GTEFHX1JYX0VORF9QQURESU5HIFwNCj4gPiA+ ID4gIAkJaW5maW5pYmFuZC92ZXJicy5oIFwNCj4gPiA+ID4gIAkJZW51bSBJQlZfV1FfRkxBR19S WF9FTkRfUEFERElORyBcIGRpZmYgLS1naXQNCj4gPiA+ID4gYS9kcml2ZXJzL25ldC9tbHg1L21s eDUuYyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NS5jIGluZGV4DQo+ID4gPiA+IDM4MTE4ZTUyNC4u ODliNjgzZDZlIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL25ldC9tbHg1L21seDUuYw0K PiA+ID4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21seDUuYw0KPiA+ID4gPiBAQCAtNjE0LDYg KzYxNCw3IEBAIG1seDVfcGNpX3Byb2JlKHN0cnVjdCBydGVfcGNpX2RyaXZlciAqcGNpX2Rydg0K PiA+ID4gX19ydGVfdW51c2VkLA0KPiA+ID4gPiAgCXVuc2lnbmVkIGludCBjcWVfY29tcDsNCj4g PiA+ID4gIAl1bnNpZ25lZCBpbnQgdHVubmVsX2VuID0gMDsNCj4gPiA+ID4gIAl1bnNpZ25lZCBp bnQgdmVyYl9wcmlvcml0aWVzID0gMDsNCj4gPiA+ID4gKwl1bnNpZ25lZCBpbnQgbXBsc19lbiA9 IDA7DQo+ID4gPiA+ICAJaW50IGlkeDsNCj4gPiA+ID4gIAlpbnQgaTsNCj4gPiA+ID4gIAlzdHJ1 Y3QgbWx4NWR2X2NvbnRleHQgYXR0cnNfb3V0ID0gezB9OyBAQCAtNzIwLDEyICs3MjEsMjUgQEAN Cj4gPiA+ID4gbWx4NV9wY2lfcHJvYmUoc3RydWN0IHJ0ZV9wY2lfZHJpdmVyICpwY2lfZHJ2IF9f cnRlX3VudXNlZCwNCj4gPiA+ID4gIAkJCSAgICAgIE1MWDVEVl9SQVdfUEFDS0VUX0NBUF9UVU5O RUxFRF9PRkZMT0FEX1ZYTEFOKQ0KPiAmJg0KPiA+ID4gPiAgCQkJICAgICAoYXR0cnNfb3V0LnR1 bm5lbF9vZmZsb2Fkc19jYXBzICYNCj4gPiA+ID4gIAkJCSAgICAgIE1MWDVEVl9SQVdfUEFDS0VU X0NBUF9UVU5ORUxFRF9PRkZMT0FEX0dSRSkpOw0KPiA+ID4gPiArI2lmZGVmIEhBVkVfSUJWX0RF VklDRV9NUExTX1NVUFBPUlQNCj4gPiA+ID4gKwkJbXBsc19lbiA9ICgoYXR0cnNfb3V0LnR1bm5l bF9vZmZsb2Fkc19jYXBzICYNCj4gPiA+ID4gKw0KPiBNTFg1RFZfUkFXX1BBQ0tFVF9DQVBfVFVO TkVMRURfT0ZGTE9BRF9NUExTX0dSRSkgJiYNCj4gPiA+ID4gKwkJCSAgIChhdHRyc19vdXQudHVu bmVsX29mZmxvYWRzX2NhcHMgJg0KPiA+ID4gPiArDQo+IE1MWDVEVl9SQVdfUEFDS0VUX0NBUF9U VU5ORUxFRF9PRkZMT0FEX01QTFNfVURQKSAmJg0KPiA+ID4gPiArCQkJICAgKGF0dHJzX291dC50 dW5uZWxfb2ZmbG9hZHNfY2FwcyAmDQo+ID4gPiA+ICsNCj4gTUxYNURWX1JBV19QQUNLRVRfQ0FQ X1RVTk5FTEVEX09GRkxPQURfQ1RSTF9EV19NUExTKSk7DQo+ID4gPiA+ICsjZW5kaWYNCj4gPiA+ ID4gIAl9DQo+ID4gPiA+ICAJRFJWX0xPRyhERUJVRywgInR1bm5lbCBvZmZsb2FkaW5nIGlzICVz c3VwcG9ydGVkIiwNCj4gPiA+ID4gIAkJdHVubmVsX2VuID8gIiIgOiAibm90ICIpOw0KPiA+ID4g PiArCURSVl9MT0coREVCVUcsICJNUExTIG92ZXIgR1JFL1VEUCBvZmZsb2FkaW5nIGlzICVzc3Vw cG9ydGVkIiwNCj4gPiA+ID4gKwkJbXBsc19lbiA/ICIiIDogIm5vdCAiKTsNCj4gPiA+ID4gICNl bHNlDQo+ID4gPiA+ICAJRFJWX0xPRyhXQVJOSU5HLA0KPiA+ID4gPiAgCQkidHVubmVsIG9mZmxv YWRpbmcgZGlzYWJsZWQgZHVlIHRvIG9sZCBPRkVEL3JkbWEtY29yZQ0KPiA+ID4gdmVyc2lvbiIp Ow0KPiA+ID4gPiArCURSVl9MT0coV0FSTklORywNCj4gPiA+ID4gKwkJIk1QTFMgb3ZlciBHUkUv VURQIG9mZmxvYWRpbmcgZGlzYWJsZWQgZHVlIHRvIG9sZCINCj4gPiA+ID4gKwkJIiBPRkVEL3Jk bWEtY29yZSB2ZXJzaW9uIG9yIGZpcm13YXJlIGNvbmZpZ3VyYXRpb24iKTsNCj4gPiA+ID4gICNl bmRpZg0KPiA+ID4gPiAgCWlmIChtbHg1X2dsdWUtPnF1ZXJ5X2RldmljZV9leChhdHRyX2N0eCwg TlVMTCwgJmRldmljZV9hdHRyKSkNCj4gew0KPiA+ID4gPiAgCQllcnIgPSBlcnJubzsNCj4gPiA+ ID4gQEAgLTc0OSw2ICs3NjMsNyBAQCBtbHg1X3BjaV9wcm9iZShzdHJ1Y3QgcnRlX3BjaV9kcml2 ZXIgKnBjaV9kcnYNCj4gPiA+IF9fcnRlX3VudXNlZCwNCj4gPiA+ID4gIAkJCS5jcWVfY29tcCA9 IGNxZV9jb21wLA0KPiA+ID4gPiAgCQkJLm1wcyA9IG1wcywNCj4gPiA+ID4gIAkJCS50dW5uZWxf ZW4gPSB0dW5uZWxfZW4sDQo+ID4gPiA+ICsJCQkubXBsc19lbiA9IG1wbHNfZW4sDQo+ID4gPiA+ ICAJCQkudHhfdmVjX2VuID0gMSwNCj4gPiA+ID4gIAkJCS5yeF92ZWNfZW4gPSAxLA0KPiA+ID4g PiAgCQkJLm1wd19oZHJfZHNlZyA9IDAsDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9tbHg1L21seDUuaCBiL2RyaXZlcnMvbmV0L21seDUvbWx4NS5oDQo+ID4gPiA+IGluZGV4DQo+ ID4gPiA+IDZlNDYxM2ZlMC4uZWZiY2IyMTU2IDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJz L25ldC9tbHg1L21seDUuaA0KPiA+ID4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21seDUuaA0K PiA+ID4gPiBAQCAtODEsNiArODEsNyBAQCBzdHJ1Y3QgbWx4NV9kZXZfY29uZmlnIHsNCj4gPiA+ ID4gIAl1bnNpZ25lZCBpbnQgdmY6MTsgLyogVGhpcyBpcyBhIFZGLiAqLw0KPiA+ID4gPiAgCXVu c2lnbmVkIGludCBtcHM6MjsgLyogTXVsdGktcGFja2V0IHNlbmQgc3VwcG9ydGVkIG1vZGUuICov DQo+ID4gPiA+ICAJdW5zaWduZWQgaW50IHR1bm5lbF9lbjoxOw0KPiA+ID4gPiArCXVuc2lnbmVk IGludCBtcGxzX2VuOjE7IC8qIE1QTFMgb3ZlciBHUkUvVURQIGlzIGVuYWJsZWQuICovDQo+ID4g PiA+ICAJLyogV2hldGhlciB0dW5uZWwgc3RhdGVsZXNzIG9mZmxvYWRzIGFyZSBzdXBwb3J0ZWQu ICovDQo+ID4gPiA+ICAJdW5zaWduZWQgaW50IGZsb3dfY291bnRlcl9lbjoxOyAvKiBXaGV0aGVy IGZsb3cgY291bnRlciBpcw0KPiBzdXBwb3J0ZWQuDQo+ID4gPiAqLw0KPiA+ID4gPiAgCXVuc2ln bmVkIGludCBjcWVfY29tcDoxOyAvKiBDUUUgY29tcHJlc3Npb24gaXMgZW5hYmxlZC4gKi8NCj4g ZGlmZg0KPiA+ID4gPiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmMNCj4gPiA+ ID4gYi9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jIGluZGV4IDBmY2NkMzliMy4uOThlZGYx ODgyIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jDQo+ ID4gPiA+ICsrKyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmMNCj4gPiA+ID4gQEAgLTEw MCw2ICsxMDAsMTEgQEAgbWx4NV9mbG93X2NyZWF0ZV9ncmUoY29uc3Qgc3RydWN0DQo+ID4gPiA+ IHJ0ZV9mbG93X2l0ZW0NCj4gPiA+ICppdGVtLA0KPiA+ID4gPiAgCQkgICAgICAgY29uc3Qgdm9p ZCAqZGVmYXVsdF9tYXNrLA0KPiA+ID4gPiAgCQkgICAgICAgc3RydWN0IG1seDVfZmxvd19kYXRh ICpkYXRhKTsNCj4gPiA+ID4NCj4gPiA+ID4gK3N0YXRpYyBpbnQNCj4gPiA+ID4gK21seDVfZmxv d19jcmVhdGVfbXBscyhjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbSAqaXRlbSwNCj4gPiA+ID4g KwkJICAgICAgY29uc3Qgdm9pZCAqZGVmYXVsdF9tYXNrLA0KPiA+ID4gPiArCQkgICAgICBzdHJ1 Y3QgbWx4NV9mbG93X2RhdGEgKmRhdGEpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICBzdHJ1Y3QgbWx4 NV9mbG93X3BhcnNlOw0KPiA+ID4gPg0KPiA+ID4gPiAgc3RhdGljIHZvaWQNCj4gPiA+ID4gQEAg LTI0NywxMiArMjUyLDE0IEBAIHN0cnVjdCBydGVfZmxvdyB7ICAjZGVmaW5lIElTX1RVTk5FTCh0 eXBlKSAoIFwNCj4gPiA+ID4gIAkodHlwZSkgPT0gUlRFX0ZMT1dfSVRFTV9UWVBFX1ZYTEFOIHx8 IFwNCj4gPiA+ID4gIAkodHlwZSkgPT0gUlRFX0ZMT1dfSVRFTV9UWVBFX1ZYTEFOX0dQRSB8fCBc DQo+ID4gPiA+ICsJKHR5cGUpID09IFJURV9GTE9XX0lURU1fVFlQRV9NUExTIHx8IFwNCj4gPiA+ ID4gIAkodHlwZSkgPT0gUlRFX0ZMT1dfSVRFTV9UWVBFX0dSRSkNCj4gPiA+ID4NCj4gPiA+ID4g IGNvbnN0IHVpbnQzMl90IGZsb3dfcHR5cGVbXSA9IHsNCj4gPiA+ID4gIAlbUlRFX0ZMT1dfSVRF TV9UWVBFX1ZYTEFOXSA9IFJURV9QVFlQRV9UVU5ORUxfVlhMQU4sDQo+ID4gPiA+ICAJW1JURV9G TE9XX0lURU1fVFlQRV9WWExBTl9HUEVdID0gUlRFX1BUWVBFX1RVTk5FTF9WWExBTl9HUEUsDQo+ ID4gPiA+ICAJW1JURV9GTE9XX0lURU1fVFlQRV9HUkVdID0gUlRFX1BUWVBFX1RVTk5FTF9HUkUs DQo+ID4gPiA+ICsJW1JURV9GTE9XX0lURU1fVFlQRV9NUExTXSA9IFJURV9QVFlQRV9UVU5ORUxf TVBMU19JTl9HUkUsDQo+ID4gPiA+ICB9Ow0KPiA+ID4gPg0KPiA+ID4gPiAgI2RlZmluZSBQVFlQ RV9JRFgodCkgKChSVEVfUFRZUEVfVFVOTkVMX01BU0sgJiAodCkpID4+IDEyKSBAQA0KPiA+ID4g PiAtMjYzLDYNCj4gPiA+ID4gKzI3MCwxMCBAQCBjb25zdCB1aW50MzJfdCBwdHlwZV9leHRbXSA9 IHsNCj4gPiA+ID4gIAlbUFRZUEVfSURYKFJURV9QVFlQRV9UVU5ORUxfVlhMQU5fR1BFKV0JPQ0K PiA+ID4gUlRFX1BUWVBFX1RVTk5FTF9WWExBTl9HUEUgfA0KPiA+ID4gPiAgCQkJCQkJICBSVEVf UFRZUEVfTDRfVURQLA0KPiA+ID4gPiAgCVtQVFlQRV9JRFgoUlRFX1BUWVBFX1RVTk5FTF9HUkUp XSA9IFJURV9QVFlQRV9UVU5ORUxfR1JFLA0KPiA+ID4gPiArCVtQVFlQRV9JRFgoUlRFX1BUWVBF X1RVTk5FTF9NUExTX0lOX0dSRSldID0NCj4gPiA+ID4gKwkJUlRFX1BUWVBFX1RVTk5FTF9NUExT X0lOX0dSRSwNCj4gPiA+ID4gKwlbUFRZUEVfSURYKFJURV9QVFlQRV9UVU5ORUxfTVBMU19JTl9V RFApXSA9DQo+ID4gPiA+ICsJCVJURV9QVFlQRV9UVU5ORUxfTVBMU19JTl9HUkUgfCBSVEVfUFRZ UEVfTDRfVURQLA0KPiA+ID4gPiAgfTsNCj4gPiA+ID4NCj4gPiA+ID4gIC8qKiBTdHJ1Y3R1cmUg dG8gZ2VuZXJhdGUgYSBzaW1wbGUgZ3JhcGggb2YgbGF5ZXJzIHN1cHBvcnRlZCBieQ0KPiA+ID4g PiB0aGUgTklDLiAqLyBAQCAtMzk5LDcgKzQxMCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QNCj4g PiA+ID4gbWx4NV9mbG93X2l0ZW1zDQo+ID4gPiBtbHg1X2Zsb3dfaXRlbXNbXSA9IHsNCj4gPiA+ ID4gIAl9LA0KPiA+ID4gPiAgCVtSVEVfRkxPV19JVEVNX1RZUEVfVURQXSA9IHsNCj4gPiA+ID4g IAkJLml0ZW1zID0gSVRFTVMoUlRFX0ZMT1dfSVRFTV9UWVBFX1ZYTEFOLA0KPiA+ID4gPiAtCQkJ ICAgICAgIFJURV9GTE9XX0lURU1fVFlQRV9WWExBTl9HUEUpLA0KPiA+ID4gPiArCQkJICAgICAg IFJURV9GTE9XX0lURU1fVFlQRV9WWExBTl9HUEUsDQo+ID4gPiA+ICsJCQkgICAgICAgUlRFX0ZM T1dfSVRFTV9UWVBFX01QTFMpLA0KPiA+ID4gPiAgCQkuYWN0aW9ucyA9IHZhbGlkX2FjdGlvbnMs DQo+ID4gPiA+ICAJCS5tYXNrID0gJihjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbV91ZHApew0K PiA+ID4gPiAgCQkJLmhkciA9IHsNCj4gPiA+ID4gQEAgLTQyOCw3ICs0NDAsOCBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IG1seDVfZmxvd19pdGVtcw0KPiA+ID4gPiBtbHg1X2Zsb3dfaXRlbXNbXQ0K PiA+ID4gPSB7DQo+ID4gPiA+ICAJW1JURV9GTE9XX0lURU1fVFlQRV9HUkVdID0gew0KPiA+ID4g PiAgCQkuaXRlbXMgPSBJVEVNUyhSVEVfRkxPV19JVEVNX1RZUEVfRVRILA0KPiA+ID4gPiAgCQkJ ICAgICAgIFJURV9GTE9XX0lURU1fVFlQRV9JUFY0LA0KPiA+ID4gPiAtCQkJICAgICAgIFJURV9G TE9XX0lURU1fVFlQRV9JUFY2KSwNCj4gPiA+ID4gKwkJCSAgICAgICBSVEVfRkxPV19JVEVNX1RZ UEVfSVBWNiwNCj4gPiA+ID4gKwkJCSAgICAgICBSVEVfRkxPV19JVEVNX1RZUEVfTVBMUyksDQo+ ID4gPiA+ICAJCS5hY3Rpb25zID0gdmFsaWRfYWN0aW9ucywNCj4gPiA+ID4gIAkJLm1hc2sgPSAm KGNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtX2dyZSl7DQo+ID4gPiA+ICAJCQkucHJvdG9jb2wg PSAtMSwNCj4gPiA+ID4gQEAgLTQzNiw3ICs0NDksMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBt bHg1X2Zsb3dfaXRlbXMNCj4gPiA+IG1seDVfZmxvd19pdGVtc1tdID0gew0KPiA+ID4gPiAgCQku ZGVmYXVsdF9tYXNrID0gJnJ0ZV9mbG93X2l0ZW1fZ3JlX21hc2ssDQo+ID4gPiA+ICAJCS5tYXNr X3N6ID0gc2l6ZW9mKHN0cnVjdCBydGVfZmxvd19pdGVtX2dyZSksDQo+ID4gPiA+ICAJCS5jb252 ZXJ0ID0gbWx4NV9mbG93X2NyZWF0ZV9ncmUsDQo+ID4gPiA+ICsjaWZkZWYgSEFWRV9JQlZfREVW SUNFX01QTFNfU1VQUE9SVA0KPiA+ID4gPiArCQkuZHN0X3N6ID0gc2l6ZW9mKHN0cnVjdCBpYnZf Zmxvd19zcGVjX2dyZSksICNlbHNlDQo+ID4gPiA+ICAJCS5kc3Rfc3ogPSBzaXplb2Yoc3RydWN0 IGlidl9mbG93X3NwZWNfdHVubmVsKSwNCj4gPiA+ID4gKyNlbmRpZg0KPiA+ID4gPiAgCX0sDQo+ ID4gPiA+ICAJW1JURV9GTE9XX0lURU1fVFlQRV9WWExBTl0gPSB7DQo+ID4gPiA+ICAJCS5pdGVt cyA9IElURU1TKFJURV9GTE9XX0lURU1fVFlQRV9FVEgsIEBAIC00NjQsNiArNDgxLDIxDQo+IEBA DQo+ID4gPiBzdGF0aWMNCj4gPiA+ID4gY29uc3Qgc3RydWN0IG1seDVfZmxvd19pdGVtcyBtbHg1 X2Zsb3dfaXRlbXNbXSA9IHsNCj4gPiA+ID4gIAkJLmNvbnZlcnQgPSBtbHg1X2Zsb3dfY3JlYXRl X3Z4bGFuX2dwZSwNCj4gPiA+ID4gIAkJLmRzdF9zeiA9IHNpemVvZihzdHJ1Y3QgaWJ2X2Zsb3df c3BlY190dW5uZWwpLA0KPiA+ID4gPiAgCX0sDQo+ID4gPiA+ICsJW1JURV9GTE9XX0lURU1fVFlQ RV9NUExTXSA9IHsNCj4gPiA+ID4gKwkJLml0ZW1zID0gSVRFTVMoUlRFX0ZMT1dfSVRFTV9UWVBF X0VUSCwNCj4gPiA+ID4gKwkJCSAgICAgICBSVEVfRkxPV19JVEVNX1RZUEVfSVBWNCwNCj4gPiA+ ID4gKwkJCSAgICAgICBSVEVfRkxPV19JVEVNX1RZUEVfSVBWNiksDQo+ID4gPiA+ICsJCS5hY3Rp b25zID0gdmFsaWRfYWN0aW9ucywNCj4gPiA+ID4gKwkJLm1hc2sgPSAmKGNvbnN0IHN0cnVjdCBy dGVfZmxvd19pdGVtX21wbHMpew0KPiA+ID4gPiArCQkJLmxhYmVsX3RjX3MgPSAiXHhmZlx4ZmZc eGYwIiwNCj4gPiA+ID4gKwkJfSwNCj4gPiA+ID4gKwkJLmRlZmF1bHRfbWFzayA9ICZydGVfZmxv d19pdGVtX21wbHNfbWFzaywNCj4gPiA+ID4gKwkJLm1hc2tfc3ogPSBzaXplb2Yoc3RydWN0IHJ0 ZV9mbG93X2l0ZW1fbXBscyksDQo+ID4gPiA+ICsJCS5jb252ZXJ0ID0gbWx4NV9mbG93X2NyZWF0 ZV9tcGxzLCAjaWZkZWYNCj4gPiA+ID4gK0hBVkVfSUJWX0RFVklDRV9NUExTX1NVUFBPUlQNCj4g PiA+ID4gKwkJLmRzdF9zeiA9IHNpemVvZihzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY19tcGxzKSwgI2Vu ZGlmDQo+ID4gPiA+ICsJfSwNCj4gPiA+DQo+ID4gPiBXaHkgdGhlIHdob2xlIGl0ZW0gaXMgbm90 IHVuZGVyIGlmZGVmPw0KPiA+DQo+ID4gSWYgYXBwbHkgbWFjcm8gdG8gd2hvbGUgaXRlbSwgdGhl cmUgd2lsbCBiZSBhIG51bGwgcG9pbnRlciBpZiBjcmVhdGUNCj4gbXBscyBmbG93Lg0KPiA+IFRo ZXJlIGlzIGEgbWFjcm8gaW4gZnVuY3Rpb24gbWx4NV9mbG93X2NyZWF0ZV9tcGxzKCkgdG8gYXZv aWQgdXNpbmcgdGhpcw0KPiBpbnZhbGlkIGRhdGEuDQo+IA0KPiBJIHRoaW5rIHRoZXJlIGlzIHNv bWUga2luZCBvZiBjb25mdXNpb24gaGVyZSwgd2hhdCBJIG1lYW4gaXMgbW92aW5nIHRoZQ0KPiAj aWZkZWYgdG8gZW1icmFjZSB0aGUgd2hvbGUgc3R1ZmYgaS5lLjoNCj4gDQo+ICAjaWZkZWYgSEFW RV9JQlZfREVWSUNFX01QTFNfU1VQUE9SVA0KPiAgW1JURV9GTE9XX0lURU1fVFlQRV9NUExTXSA9 IHsNCj4gICAuaXRlbXMgPSBJVEVNUyhSVEVfRkxPV19JVEVNX1RZUEVfRVRILA0KPiAgIAkgICAg ICAgUlRFX0ZMT1dfSVRFTV9UWVBFX0lQVjQsDQo+ICAgCSAgICAgICBSVEVfRkxPV19JVEVNX1RZ UEVfSVBWNiksDQo+ICAgLmFjdGlvbnMgPSB2YWxpZF9hY3Rpb25zLA0KPiAgIC5tYXNrID0gJihj b25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbV9tcGxzKXsNCj4gICAJLmxhYmVsX3RjX3MgPSAiXHhm Zlx4ZmZceGYwIiwNCj4gICB9LA0KPiAgIC5kZWZhdWx0X21hc2sgPSAmcnRlX2Zsb3dfaXRlbV9t cGxzX21hc2ssDQo+ICAgLm1hc2tfc3ogPSBzaXplb2Yoc3RydWN0IHJ0ZV9mbG93X2l0ZW1fbXBs cyksDQo+ICAgLmNvbnZlcnQgPSBtbHg1X2Zsb3dfY3JlYXRlX21wbHMsDQo+ICAgLmRzdF9zeiA9 IHNpemVvZihzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY19tcGxzKSAgI2VuZGlmDQo+IA0KPiBOb3QgaGF2 aW5nIHRoaXMgaXRlbSBpbiB0aGlzIHN0YXRpYyBhcnJheSBlbmRzIGJ5IG5vdCBzdXBwb3J0aW5n IGl0LCB0aGlzDQo+IGlzIHdoYXQgSSBtZWFuLg0KDQpZZXMsIEkga25vdy4gVGhlcmUgaXMgYSBj b2RlIHVzaW5nIHRoaXMgYXJyYXkgdy9vIE5VTEwgY2hlY2s6DQoJCWN1cl9pdGVtID0gJm1seDVf Zmxvd19pdGVtc1tpdGVtcy0+dHlwZV07DQoJCXJldCA9IGN1cl9pdGVtLT5jb252ZXJ0KGl0ZW1z LA0KCQkJCQkoY3VyX2l0ZW0tPmRlZmF1bHRfbWFzayA/DQoJCQkJCSBjdXJfaXRlbS0+ZGVmYXVs dF9tYXNrIDoNCgkJCQkJIGN1cl9pdGVtLT5tYXNrKSwNCgkJCQkJICZkYXRhKTsNCg0KDQo+IA0K PiA+ID4gPiAgfTsNCj4gPiA+ID4NCj4gPiA+ID4gIC8qKiBTdHJ1Y3R1cmUgdG8gcGFzcyB0byB0 aGUgY29udmVyc2lvbiBmdW5jdGlvbi4gKi8gQEAgLTkxMiw3DQo+ID4gPiA+ICs5NDQsOSBAQCBt bHg1X2Zsb3dfY29udmVydF9pdGVtc192YWxpZGF0ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwN Cj4gPiA+ID4gIAkJaWYgKHJldCkNCj4gPiA+ID4gIAkJCWdvdG8gZXhpdF9pdGVtX25vdF9zdXBw b3J0ZWQ7DQo+ID4gPiA+ICAJCWlmIChJU19UVU5ORUwoaXRlbXMtPnR5cGUpKSB7DQo+ID4gPiA+ IC0JCQlpZiAocGFyc2VyLT50dW5uZWwpIHsNCj4gPiA+ID4gKwkJCWlmIChwYXJzZXItPnR1bm5l bCAmJg0KPiA+ID4gPiArCQkJICAgIShwYXJzZXItPnR1bm5lbCA9PSBSVEVfUFRZUEVfVFVOTkVM X0dSRSAmJg0KPiA+ID4gPiArCQkJICAgICBpdGVtcy0+dHlwZSA9PSBSVEVfRkxPV19JVEVNX1RZ UEVfTVBMUykpIHsNCj4gPiA+ID4gIAkJCQlydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVOT1RT VVAsDQo+ID4gPiA+ICAJCQkJCQkgICBSVEVfRkxPV19FUlJPUl9UWVBFX0lURU0sDQo+ID4gPiA+ ICAJCQkJCQkgICBpdGVtcywNCj4gPiA+ID4gQEAgLTkyMCw2ICs5NTQsMTYgQEAgbWx4NV9mbG93 X2NvbnZlcnRfaXRlbXNfdmFsaWRhdGUoc3RydWN0DQo+ID4gPiA+IHJ0ZV9ldGhfZGV2DQo+ID4g PiAqZGV2LA0KPiA+ID4gPiAgCQkJCQkJICAgIiB0dW5uZWwgZW5jYXBzdWxhdGlvbnMuIik7DQo+ ID4gPiA+ICAJCQkJcmV0dXJuIC1ydGVfZXJybm87DQo+ID4gPiA+ICAJCQl9DQo+ID4gPiA+ICsJ CQlpZiAoaXRlbXMtPnR5cGUgPT0gUlRFX0ZMT1dfSVRFTV9UWVBFX01QTFMgJiYNCj4gPiA+ID4g KwkJCSAgICAhcHJpdi0+Y29uZmlnLm1wbHNfZW4pIHsNCj4gPiA+ID4gKwkJCQlydGVfZmxvd19l cnJvcl9zZXQoZXJyb3IsIEVOT1RTVVAsDQo+ID4gPiA+ICsJCQkJCQkgICBSVEVfRkxPV19FUlJP Ul9UWVBFX0lURU0sDQo+ID4gPiA+ICsJCQkJCQkgICBpdGVtcywNCj4gPiA+ID4gKwkJCQkJCSAg ICJNUExTIG5vdCBzdXBwb3J0ZWQgb3IiDQo+ID4gPiA+ICsJCQkJCQkgICAiIGRpc2FibGVkIGlu IGZpcm13YXJlIg0KPiA+ID4gPiArCQkJCQkJICAgIiBjb25maWd1cmF0aW9uLiIpOw0KPiA+ID4g PiArCQkJCXJldHVybiAtcnRlX2Vycm5vOw0KPiA+ID4gPiArCQkJfQ0KPiA+ID4gPiAgCQkJaWYg KCFwcml2LT5jb25maWcudHVubmVsX2VuICYmDQo+ID4gPiA+ICAJCQkgICAgcGFyc2VyLT5yc3Nf Y29uZi5sZXZlbCkgew0KPiA+ID4gPiAgCQkJCXJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRU5P VFNVUCwgQEAgLQ0KPiAxODgwLDYNCj4gPiA+ICsxOTI0LDgwIEBADQo+ID4gPiA+IG1seDVfZmxv d19jcmVhdGVfdnhsYW5fZ3BlKGNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtICppdGVtLCAgfQ0K PiA+ID4gPg0KPiA+ID4gPiAgLyoqDQo+ID4gPiA+ICsgKiBDb252ZXJ0IE1QTFMgaXRlbSB0byBW ZXJicyBzcGVjaWZpY2F0aW9uLg0KPiA+ID4gPiArICogVHVubmVsIHR5cGVzIGN1cnJlbnRseSBz dXBwb3J0ZWQgYXJlIE1QTFMtaW4tR1JFIGFuZCBNUExTLWluLVVEUC4NCj4gPiA+ID4gKyAqDQo+ ID4gPiA+ICsgKiBAcGFyYW0gaXRlbVtpbl0NCj4gPiA+ID4gKyAqICAgSXRlbSBzcGVjaWZpY2F0 aW9uLg0KPiA+ID4gPiArICogQHBhcmFtIGRlZmF1bHRfbWFza1tpbl0NCj4gPiA+ID4gKyAqICAg RGVmYXVsdCBiaXQtbWFza3MgdG8gdXNlIHdoZW4gaXRlbS0+bWFzayBpcyBub3QgcHJvdmlkZWQu DQo+ID4gPiA+ICsgKiBAcGFyYW0gZGF0YVtpbiwgb3V0XQ0KPiA+ID4gPiArICogICBVc2VyIHN0 cnVjdHVyZS4NCj4gPiA+ID4gKyAqDQo+ID4gPiA+ICsgKiBAcmV0dXJuDQo+ID4gPiA+ICsgKiAg IDAgb24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5kIHJ0ZV9l cnJubw0KPiBpcw0KPiA+ID4gc2V0Lg0KPiA+ID4gPiArICovDQo+ID4gPiA+ICtzdGF0aWMgaW50 DQo+ID4gPiA+ICttbHg1X2Zsb3dfY3JlYXRlX21wbHMoY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0 ZW0gKml0ZW0gX19ydGVfdW51c2VkLA0KPiA+ID4gPiArCQkgICAgICBjb25zdCB2b2lkICpkZWZh dWx0X21hc2sgX19ydGVfdW51c2VkLA0KPiA+ID4gPiArCQkgICAgICBzdHJ1Y3QgbWx4NV9mbG93 X2RhdGEgKmRhdGEgX19ydGVfdW51c2VkKQ0KPiB7ICNpZm5kZWYNCj4gPiA+ID4gK0hBVkVfSUJW X0RFVklDRV9NUExTX1NVUFBPUlQNCj4gPiA+ID4gKwlyZXR1cm4gcnRlX2Zsb3dfZXJyb3Jfc2V0 KGRhdGEtPmVycm9yLCBFSU5WQUwsDQo+ID4gPg0KPiA+ID4gRU5PVFNVUCBpcyBtb3JlIGFjY3Vy YXRlIHRvIGtlZXAgYSBjb25zaXN0ZW5jeSBhbW9uZyB0aGUgZXJyb3JzLg0KPiA+ID4NCj4gPiA+ ID4gKwkJCQkgIFJURV9GTE9XX0VSUk9SX1RZUEVfSVRFTSwNCj4gPiA+ID4gKwkJCQkgIGl0ZW0s DQo+ID4gPiA+ICsJCQkJICAiTVBMUyBub3Qgc3VwcG9ydGVkIGJ5IGRyaXZlciIpOyAjZWxzZQ0K PiA+ID4gPiArCXVuc2lnbmVkIGludCBpOw0KPiA+ID4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxv d19pdGVtX21wbHMgKnNwZWMgPSBpdGVtLT5zcGVjOw0KPiA+ID4gPiArCWNvbnN0IHN0cnVjdCBy dGVfZmxvd19pdGVtX21wbHMgKm1hc2sgPSBpdGVtLT5tYXNrOw0KPiA+ID4gPiArCXN0cnVjdCBt bHg1X2Zsb3dfcGFyc2UgKnBhcnNlciA9IGRhdGEtPnBhcnNlcjsNCj4gPiA+ID4gKwl1bnNpZ25l ZCBpbnQgc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY19tcGxzKTsNCj4gPiA+ID4g KwlzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY19tcGxzIG1wbHMgPSB7DQo+ID4gPiA+ICsJCS50eXBlID0g SUJWX0ZMT1dfU1BFQ19NUExTLA0KPiA+ID4gPiArCQkuc2l6ZSA9IHNpemUsDQo+ID4gPiA+ICsJ fTsNCj4gPiA+ID4gKwl1bmlvbiB0YWcgew0KPiA+ID4gPiArCQl1aW50MzJfdCB0YWc7DQo+ID4g PiA+ICsJCXVpbnQ4X3QgbGFiZWxbNF07DQo+ID4gPiA+ICsJfSBpZDsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArCWlkLnRhZyA9IDA7DQo+ID4gPiA+ICsJcGFyc2VyLT5pbm5lciA9IElCVl9GTE9XX1NQ RUNfSU5ORVI7DQo+ID4gPiA+ICsJaWYgKHBhcnNlci0+bGF5ZXIgPT0gSEFTSF9SWFFfVURQVjQg fHwNCj4gPiA+ID4gKwkgICAgcGFyc2VyLT5sYXllciA9PSBIQVNIX1JYUV9VRFBWNikgew0KPiA+ ID4gPiArCQlwYXJzZXItPnR1bm5lbCA9DQo+ID4gPiA+ICsJCQlwdHlwZV9leHRbUFRZUEVfSURY KFJURV9QVFlQRV9UVU5ORUxfTVBMU19JTl9VRFApXTsNCj4gPiA+ID4gKwkJcGFyc2VyLT5vdXRf bGF5ZXIgPSBwYXJzZXItPmxheWVyOw0KPiA+ID4gPiArCX0gZWxzZSB7DQo+ID4gPiA+ICsJCXBh cnNlci0+dHVubmVsID0NCj4gPiA+ID4gKwkJCXB0eXBlX2V4dFtQVFlQRV9JRFgoUlRFX1BUWVBF X1RVTk5FTF9NUExTX0lOX0dSRSldOw0KPiA+ID4gPiArCX0NCj4gPiA+ID4gKwlwYXJzZXItPmxh eWVyID0gSEFTSF9SWFFfVFVOTkVMOw0KPiA+ID4gPiArCWlmIChzcGVjKSB7DQo+ID4gPiA+ICsJ CWlmICghbWFzaykNCj4gPiA+ID4gKwkJCW1hc2sgPSBkZWZhdWx0X21hc2s7DQo+ID4gPiA+ICsJ CW1lbWNweSgmaWQubGFiZWxbMV0sIHNwZWMtPmxhYmVsX3RjX3MsIDMpOw0KPiA+ID4gPiArCQlp ZC5sYWJlbFswXSA9IHNwZWMtPnR0bDsNCj4gPiA+ID4gKwkJbXBscy52YWwudGFnID0gaWQudGFn Ow0KPiA+ID4gPiArCQltZW1jcHkoJmlkLmxhYmVsWzFdLCBtYXNrLT5sYWJlbF90Y19zLCAzKTsN Cj4gPiA+ID4gKwkJaWQubGFiZWxbMF0gPSBtYXNrLT50dGw7DQo+ID4gPiA+ICsJCW1wbHMubWFz ay50YWcgPSBpZC50YWc7DQo+ID4gPiA+ICsJCS8qIFJlbW92ZSB1bndhbnRlZCBiaXRzIGZyb20g dmFsdWVzLiAqLw0KPiA+ID4gPiArCQltcGxzLnZhbC50YWcgJj0gbXBscy5tYXNrLnRhZzsNCj4g PiA+ID4gKwl9DQo+ID4gPiA+ICsJbWx4NV9mbG93X2NyZWF0ZV9jb3B5KHBhcnNlciwgJm1wbHMs IHNpemUpOw0KPiA+ID4gPiArCWZvciAoaSA9IDA7IGkgIT0gaGFzaF9yeHFfaW5pdF9uOyArK2kp IHsNCj4gPiA+ID4gKwkJaWYgKCFwYXJzZXItPnF1ZXVlW2ldLmlidl9hdHRyKQ0KPiA+ID4gPiAr CQkJY29udGludWU7DQo+ID4gPiA+ICsJCXBhcnNlci0+cXVldWVbaV0uaWJ2X2F0dHItPmZsYWdz IHw9DQo+ID4gPiA+ICsJCQlJQlZfRkxPV19BVFRSX0ZMQUdTX09SREVSRURfU1BFQ19MSVNUOw0K PiA+ID4gPiArCX0NCj4gPiA+ID4gKwlyZXR1cm4gMDsNCj4gPiA+ID4gKyNlbmRpZg0KPiA+ID4g PiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gICAqIENvbnZlcnQgR1JFIGl0 ZW0gdG8gVmVyYnMgc3BlY2lmaWNhdGlvbi4NCj4gPiA+ID4gICAqDQo+ID4gPiA+ICAgKiBAcGFy YW0gaXRlbVtpbl0NCj4gPiA+ID4gQEAgLTE4OTgsMTYgKzIwMTYsNDAgQEAgbWx4NV9mbG93X2Ny ZWF0ZV9ncmUoY29uc3Qgc3RydWN0DQo+ID4gPiA+IHJ0ZV9mbG93X2l0ZW0NCj4gPiA+ICppdGVt IF9fcnRlX3VudXNlZCwNCj4gPiA+ID4gIAkJICAgICBzdHJ1Y3QgbWx4NV9mbG93X2RhdGEgKmRh dGEpICB7DQo+ID4gPiA+ICAJc3RydWN0IG1seDVfZmxvd19wYXJzZSAqcGFyc2VyID0gZGF0YS0+ cGFyc2VyOw0KPiA+ID4gPiArI2lmbmRlZiBIQVZFX0lCVl9ERVZJQ0VfTVBMU19TVVBQT1JUDQo+ ID4gPiA+ICAJdW5zaWduZWQgaW50IHNpemUgPSBzaXplb2Yoc3RydWN0IGlidl9mbG93X3NwZWNf dHVubmVsKTsNCj4gPiA+ID4gIAlzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY190dW5uZWwgdHVubmVsID0g ew0KPiA+ID4gPiAgCQkudHlwZSA9IHBhcnNlci0+aW5uZXIgfCBJQlZfRkxPV19TUEVDX1ZYTEFO X1RVTk5FTCwNCj4gPiA+ID4gIAkJLnNpemUgPSBzaXplLA0KPiA+ID4gPiAgCX07DQo+ID4gPiA+ ICsjZWxzZQ0KPiA+ID4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtX2dyZSAqc3BlYyA9 IGl0ZW0tPnNwZWM7DQo+ID4gPiA+ICsJY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW1fZ3JlICpt YXNrID0gaXRlbS0+bWFzazsNCj4gPiA+ID4gKwl1bnNpZ25lZCBpbnQgc2l6ZSA9IHNpemVvZihz dHJ1Y3QgaWJ2X2Zsb3dfc3BlY19ncmUpOw0KPiA+ID4gPiArCXN0cnVjdCBpYnZfZmxvd19zcGVj X2dyZSB0dW5uZWwgPSB7DQo+ID4gPiA+ICsJCS50eXBlID0gcGFyc2VyLT5pbm5lciB8IElCVl9G TE9XX1NQRUNfR1JFLA0KPiA+ID4gPiArCQkuc2l6ZSA9IHNpemUsDQo+ID4gPiA+ICsJfTsNCj4g PiA+ID4gKyNlbmRpZg0KPiA+ID4gPg0KPiA+ID4gPiAgCXBhcnNlci0+aW5uZXIgPSBJQlZfRkxP V19TUEVDX0lOTkVSOw0KPiA+ID4gPiAgCXBhcnNlci0+dHVubmVsID0gcHR5cGVfZXh0W1BUWVBF X0lEWChSVEVfUFRZUEVfVFVOTkVMX0dSRSldOw0KPiA+ID4gPiAgCXBhcnNlci0+b3V0X2xheWVy ID0gcGFyc2VyLT5sYXllcjsNCj4gPiA+ID4gIAlwYXJzZXItPmxheWVyID0gSEFTSF9SWFFfVFVO TkVMOw0KPiA+ID4gPiArI2lmZGVmIEhBVkVfSUJWX0RFVklDRV9NUExTX1NVUFBPUlQNCj4gPiA+ ID4gKwlpZiAoc3BlYykgew0KPiA+ID4gPiArCQlpZiAoIW1hc2spDQo+ID4gPiA+ICsJCQltYXNr ID0gZGVmYXVsdF9tYXNrOw0KPiA+ID4gPiArCQl0dW5uZWwudmFsLmNfa3NfcmVzMF92ZXIgPSBz cGVjLT5jX3JzdmQwX3ZlcjsNCj4gPiA+ID4gKwkJdHVubmVsLnZhbC5wcm90b2NvbCA9IHNwZWMt PnByb3RvY29sOw0KPiA+ID4gPiArCQl0dW5uZWwudmFsLmNfa3NfcmVzMF92ZXIgPSBtYXNrLT5j X3JzdmQwX3ZlcjsNCj4gPiA+ID4gKwkJdHVubmVsLnZhbC5wcm90b2NvbCA9IG1hc2stPnByb3Rv Y29sOw0KPiA+ID4gPiArCQkvKiBSZW1vdmUgdW53YW50ZWQgYml0cyBmcm9tIHZhbHVlcy4gKi8N Cj4gPiA+ID4gKwkJdHVubmVsLnZhbC5jX2tzX3JlczBfdmVyICY9IHR1bm5lbC5tYXNrLmNfa3Nf cmVzMF92ZXI7DQo+ID4gPiA+ICsJCXR1bm5lbC52YWwucHJvdG9jb2wgJj0gdHVubmVsLm1hc2su cHJvdG9jb2w7DQo+ID4gPiA+ICsJCXR1bm5lbC52YWwua2V5ICY9IHR1bm5lbC5tYXNrLmtleTsN Cj4gPiA+ID4gKwl9DQo+ID4gPiA+ICsjZW5kaWYNCj4gPiA+ID4gIAltbHg1X2Zsb3dfY3JlYXRl X2NvcHkocGFyc2VyLCAmdHVubmVsLCBzaXplKTsNCj4gPiA+ID4gIAlyZXR1cm4gMDsNCj4gPiA+ ID4gIH0NCj4gPiA+ID4gLS0NCj4gPiA+ID4gMi4xMy4zDQo+ID4gPiA+DQo+ID4gPg0KPiA+ID4g VGhhbmtzLA0KPiA+ID4NCj4gPiA+IC0tDQo+ID4gPiBOw6lsaW8gTGFyYW5qZWlybw0KPiA+ID4g NldJTkQNCj4gDQo+IC0tDQo+IE7DqWxpbyBMYXJhbmplaXJvDQo+IDZXSU5EDQo=