From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 4E231A0096 for ; Sat, 13 Apr 2019 02:16:23 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0E9B21B3D8; Sat, 13 Apr 2019 02:16:22 +0200 (CEST) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10083.outbound.protection.outlook.com [40.107.1.83]) by dpdk.org (Postfix) with ESMTP id 69F681B3D7 for ; Sat, 13 Apr 2019 02:16:20 +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:X-MS-Exchange-SenderADCheck; bh=W6jKRHJ8f+4xSQrdFcWuQpxWwCl5aSJf95gcfDLhgaM=; b=wqHkbbj5AiQbiEDrlA+CqUnDy5qCyxWx3HIgep7WU8kzAOFo0SCM/052GgqpW78OBbGFZvy30kNj9+IXCEz0E+QMknFenK5A6Zt5OB4nyjO45VcWV+Cdslxq6NhcTOHdMTaTQQY4l6Xx/adWaMss8JQM2ac0WomINIFnBXnRgWY= Received: from DB3PR0502MB3980.eurprd05.prod.outlook.com (52.134.72.27) by DB3PR0502MB4060.eurprd05.prod.outlook.com (52.134.72.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1792.18; Sat, 13 Apr 2019 00:16:18 +0000 Received: from DB3PR0502MB3980.eurprd05.prod.outlook.com ([fe80::6072:43be:7c2d:103a]) by DB3PR0502MB3980.eurprd05.prod.outlook.com ([fe80::6072:43be:7c2d:103a%3]) with mapi id 15.20.1792.009; Sat, 13 Apr 2019 00:16:17 +0000 From: Yongseok Koh To: dwilder CC: Ori Kam , Matan Azrad , Shahaf Shuler , dev , Slava Ovsiienko , "pradeep@us.ibm.com" Thread-Topic: [dpdk-dev] [PATCH v4 1/3] net/mlx5: prepare Direct Verbs for Direct Rule Thread-Index: AQHU6sxYD0r9D199AkGOOyH3Qa79nKY5P9MAgAAGzYA= Date: Sat, 13 Apr 2019 00:16:17 +0000 Message-ID: References: <1553790741-69362-1-git-send-email-orika@mellanox.com> <1554371628-170844-1-git-send-email-orika@mellanox.com> <1554371628-170844-2-git-send-email-orika@mellanox.com> <22ec8961029c97e3144c342f33fd5467@linux.vnet.ibm.com> In-Reply-To: <22ec8961029c97e3144c342f33fd5467@linux.vnet.ibm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; x-originating-ip: [209.116.155.178] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a541f8e3-2987-4fff-46da-08d6bfa53fc6 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:DB3PR0502MB4060; x-ms-traffictypediagnostic: DB3PR0502MB4060: x-ms-exchange-purlcount: 1 x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-forefront-prvs: 00064751B6 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(366004)(376002)(136003)(346002)(39860400002)(51914003)(51234002)(189003)(199004)(97736004)(14454004)(30864003)(82746002)(4326008)(53936002)(478600001)(6246003)(966005)(25786009)(305945005)(106356001)(6436002)(229853002)(105586002)(6512007)(14444005)(66066001)(256004)(6916009)(53946003)(68736007)(7736002)(6486002)(6306002)(71200400001)(316002)(33656002)(86362001)(5660300002)(93886005)(53546011)(3846002)(36756003)(6116002)(76176011)(8936002)(81166006)(81156014)(8676002)(6506007)(2906002)(486006)(11346002)(476003)(99286004)(2616005)(446003)(26005)(102836004)(54906003)(71190400001)(186003)(83716004)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:DB3PR0502MB4060; H:DB3PR0502MB3980.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-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: UZ5VVjW6Dr/FMjQh2+tbsPe0btAk9U9x6N0ZNqOzPxhoprzvhACSCN5ndV/xSsO4Q66erEn/nyv5hZbHYkImVLYxcZVToCk8fykI5i1xuXbT2NlXNmS/wBsxGGKI5Wodnf/6vItOUcu25qowi/LLKU4WAVtNcrhyQklyDRLlJgPN5/+pIQKsz/qiEptPHrYiIZ1MnQV5Ox/ILRsvCL4lgJLpb2bkpIqmyVYPxKEj/nSGkeXDk0Yjq6xhb4D996c4inri97nAwN7Q3F82P5OnnVfy5CnmbrV07VviIKW1HOjDZ+E3tuGoB1Y6oZWaxyucHcJ33jIm1yrJ0ETOrViJsnGsDyO9T+6cjjj24iceo5Hs7mYowe8h+E8XHBTYcCnrwfOYJej17omSKWW7Q+mi/2NqAGd/X6N2cNA7RPb2Yq0= Content-Type: text/plain; charset="UTF-8" Content-ID: <2FE4957E61649349A182F38F54BC2098@eurprd05.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: a541f8e3-2987-4fff-46da-08d6bfa53fc6 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Apr 2019 00:16:17.8440 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR0502MB4060 Subject: Re: [dpdk-dev] [PATCH v4 1/3] net/mlx5: prepare Direct Verbs for Direct Rule 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Message-ID: <20190413001617.8Ysy5xc-kRB6X9qULCJ3BUWp5bUs9tpoK_HRakLPnvE@z> DQo+IE9uIEFwciAxMiwgMjAxOSwgYXQgNDo1MSBQTSwgZHdpbGRlciA8ZHdpbGRlckB1cy5pYm0u Y29tPiB3cm90ZToNCj4gDQo+IEkgYW0gc2VlaW5nIGEgYnVpbGQgYnJlYWsgd2hlbiBidWlsZGlu ZyBvbiB1YnVudHUgMTkuMDQgYmV0YSBhZnRlciB0aGlzIGNvbW1pdCAoY2JiNjZkYWEzKS4NCj4g DQo+IFRoZSBidWlsZCBwcm9kdWNlcyBhIG51bWJlciBvZiB0aGUgZm9sbG93aW5nIGVycm9ycy4N Cj4gDQo+IGRyaXZlcnMvbmV0L21seDUvbWx4NV9nbHVlLmM6MTk0OjI6IGVycm9yOiBpbXBsaWNp dCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiDigJhmcmVl4oCZDQo+IC4uLi4NCj4gZHJpdmVycy9u ZXQvbWx4NS9tbHg1X2dsdWUuYzo1NTI6MTE6IGVycm9yOiBpbmNvbXBhdGlibGUgaW1wbGljaXQg ZGVjbGFyYXRpb24gb2YgYnVpbHQtaW4gZnVuY3Rpb24g4oCYbWFsbG9j4oCZIFstV2Vycm9yXQ0K PiAuLi4uDQo+IA0KPiBBZGRpbmcgIiNpbmNsdWRlIDxzdGRsaWIuaD4iIHRvIGRyaXZlcnMvbmV0 L21seDUvbWx4NV9nbHVlLmMgZml4ZWQgaXQgZm9yIG1lLg0KPiANCj4gSSBkbyBub3Qgc2VlIHRo aXMgcHJvYmxlbSBvbiBVYnVudHUgMTguMDQsIG1heWJlIHNvbWUgaGVhZGVycyBoYXZlIGNoYW5n ZWQuICBJIGhhdmUgb25seSB0ZXN0ZWQgb24gcHBjNjRsZS4NCg0KVGhhbmtzIGZvciB0aGUgbm90 aWNlLg0KVGhhdCBwYXRjaCdzIGJlZW4gbWVyZ2VkIG9uIHRvIHRoZSBQTUQgYnJhbmNoIGFuZCB3 aWxsIGJlIG1lcmdlZCBvbiB0byB0aGUgbWFzdGVyIHNvb24NCg0KaHR0cDovL2dpdC5kcGRrLm9y Zy9uZXh0L2RwZGstbmV4dC1uZXQtbWx4L2NvbW1pdC8/aWQ9NGQ2YjE5MmNjYzE1YTRhZGZlNTc1 OTAwNTE5YmE5MDA1OWUyYWJkMg0KDQpZb25nc2Vvaw0KDQo+IE9uIDIwMTktMDQtMDQgMDI6NTQs IE9yaSBLYW0gd3JvdGU6DQo+PiBUaGlzIGlzIHRoZSBmaXJzdCBwYXRjaCBvZiBhIHNlcmllcyB0 aGF0IGlzIGRlc2lnbmVkIHRvIGVuYWJsZSB0aGUNCj4+IERpcmVjdCBSdWxlcyBBUEkuDQo+PiBU aGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gRGlyZWN0IFZlcmJzIGFuZCBEaXJlY3QgUnVsZXMg ZnJvbSBBUEkNCj4+IHByZXNwZWN0aXZlLCBpcyB0aGF0IGluIERpcmVjdCBSdWxlcyBlYWNoIGFj dGlvbiBoYXMgaXQncyBvd24gY3JlYXRlDQo+PiBmdW5jdGlvbiBhbmQgdGhlIG9iamVjdCBpdHNl bGYgaXMgb2YgdHlwZSB2b2lkLg0KPj4gSW4gdGhpcyBwYXRjaCBJJ20gYWRkaW5nIGZ1bmN0aW9u cyB0byBnZW5lcmF0ZSBhY3Rpb25zIHRoYXQgY3VycmVubHR5DQo+PiBhcmUgZG9uZSB3aXRob3V0 IGNyZWF0ZSBhY3Rpb24sIGFuZCBJJ20gY2hhbmdpbmcgdGhlIGFjdGlvbiB0eXBlIHRvIGJlDQo+ PiB2b2lkICosIHNvIGluIG5leHQgcGF0Y2hlcyBvbmx5IHRoZSBnbHVlIGZ1bmN0aW9ucyB3aWxs IG5lZWQgdG8gY2hhbmdlLg0KPj4gU2lnbmVkLW9mZi1ieTogT3JpIEthbSA8b3Jpa2FAbWVsbGFu b3guY29tPg0KPj4gQWNrZWQtYnk6IFNoYWhhZiBTaHVsZXIgPHNoYWhhZnNAbWVsbGFub3guY29t Pg0KPj4gLS0tDQo+PiBkcml2ZXJzL25ldC9tbHg1L01ha2VmaWxlICAgICAgIHwgICAyICstDQo+ PiBkcml2ZXJzL25ldC9tbHg1L21lc29uLmJ1aWxkICAgIHwgICAyICstDQo+PiBkcml2ZXJzL25l dC9tbHg1L21seDUuaCAgICAgICAgIHwgICAyICsNCj4+IGRyaXZlcnMvbmV0L21seDUvbWx4NV9m bG93LmggICAgfCAgMTcgKysrLQ0KPj4gZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3dfZHYuYyB8 IDE4NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tDQo+PiBkcml2ZXJz L25ldC9tbHg1L21seDVfZ2x1ZS5jICAgIHwgMTQxICsrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLQ0KPj4gZHJpdmVycy9uZXQvbWx4NS9tbHg1X2dsdWUuaCAgICB8ICAyNiArKystLS0NCj4+ IDcgZmlsZXMgY2hhbmdlZCwgMjgwIGluc2VydGlvbnMoKyksIDk0IGRlbGV0aW9ucygtKQ0KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9tbHg1 L01ha2VmaWxlDQo+PiBpbmRleCBjY2QxNzljLi4wZDIwZjBmIDEwMDY0NA0KPj4gLS0tIGEvZHJp dmVycy9uZXQvbWx4NS9NYWtlZmlsZQ0KPj4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9NYWtlZmls ZQ0KPj4gQEAgLTgsNyArOCw3IEBAIGluY2x1ZGUgJChSVEVfU0RLKS9tay9ydGUudmFycy5taw0K Pj4gTElCID0gbGlicnRlX3BtZF9tbHg1LmENCj4+IExJQl9HTFVFID0gJChMSUJfR0xVRV9CQVNF KS4kKExJQl9HTFVFX1ZFUlNJT04pDQo+PiBMSUJfR0xVRV9CQVNFID0gbGlicnRlX3BtZF9tbHg1 X2dsdWUuc28NCj4+IC1MSUJfR0xVRV9WRVJTSU9OID0gMTkuMDIuMA0KPj4gK0xJQl9HTFVFX1ZF UlNJT04gPSAxOS4wNS4wDQo+PiAjIFNvdXJjZXMuDQo+PiBTUkNTLSQoQ09ORklHX1JURV9MSUJS VEVfTUxYNV9QTUQpICs9IG1seDUuYw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUv bWVzb24uYnVpbGQgYi9kcml2ZXJzL25ldC9tbHg1L21lc29uLmJ1aWxkDQo+PiBpbmRleCBhNDI5 NjU1Li5hNGM2ODRlIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tZXNvbi5idWls ZA0KPj4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tZXNvbi5idWlsZA0KPj4gQEAgLTQsNyArNCw3 IEBADQo+PiBwbWRfZGxvcGVuID0gKGdldF9vcHRpb24oJ2lidmVyYnNfbGluaycpID09ICdkbG9w ZW4nKQ0KPj4gTElCX0dMVUVfQkFTRSA9ICdsaWJydGVfcG1kX21seDVfZ2x1ZS5zbycNCj4+IC1M SUJfR0xVRV9WRVJTSU9OID0gJzE5LjAyLjAnDQo+PiArTElCX0dMVUVfVkVSU0lPTiA9ICcxOS4w NS4wJw0KPj4gTElCX0dMVUUgPSBMSUJfR0xVRV9CQVNFICsgJy4nICsgTElCX0dMVUVfVkVSU0lP Tg0KPj4gaWYgcG1kX2Rsb3Blbg0KPj4gCWRwZGtfY29uZi5zZXQoJ1JURV9JQlZFUkJTX0xJTktf RExPUEVOJywgMSkNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21seDUuaCBiL2Ry aXZlcnMvbmV0L21seDUvbWx4NS5oDQo+PiBpbmRleCA0N2E3ZDc1Li43ODRiZjliIDEwMDY0NA0K Pj4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1LmgNCj4+ICsrKyBiL2RyaXZlcnMvbmV0L21s eDUvbWx4NS5oDQo+PiBAQCAtMzA5LDYgKzMwOSw4IEBAIHN0cnVjdCBtbHg1X3ByaXYgew0KPj4g CUxJU1RfSEVBRChtYXRjaGVycywgbWx4NV9mbG93X2R2X21hdGNoZXIpIG1hdGNoZXJzOw0KPj4g CUxJU1RfSEVBRChlbmNhcF9kZWNhcCwgbWx4NV9mbG93X2R2X2VuY2FwX2RlY2FwX3Jlc291cmNl KSBlbmNhcHNfZGVjYXBzOw0KPj4gCUxJU1RfSEVBRChtb2RpZnlfY21kLCBtbHg1X2Zsb3dfZHZf bW9kaWZ5X2hkcl9yZXNvdXJjZSkgbW9kaWZ5X2NtZHM7DQo+PiArCUxJU1RfSEVBRCh0YWcsIG1s eDVfZmxvd19kdl90YWdfcmVzb3VyY2UpIHRhZ3M7DQo+PiArCS8qIFRhZ3MgcmVzb3VyY2VzIGNh Y2hlLiAqLw0KPj4gCXVpbnQzMl90IGxpbmtfc3BlZWRfY2FwYTsgLyogTGluayBzcGVlZCBjYXBh YmlsaXRpZXMuICovDQo+PiAJc3RydWN0IG1seDVfeHN0YXRzX2N0cmwgeHN0YXRzX2N0cmw7IC8q IEV4dGVuZGVkIHN0YXRzIGNvbnRyb2wuICovDQo+PiAJc3RydWN0IG1seDVfc3RhdHNfY3RybCBz dGF0c19jdHJsOyAvKiBTdGF0cyBjb250cm9sLiAqLw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L21seDUvbWx4NV9mbG93LmggYi9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5oDQo+PiBp bmRleCBlMWU3OThiLi40ZjY5YWUyIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9t bHg1X2Zsb3cuaA0KPj4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuaA0KPj4gQEAg LTIxNCw3ICsyMTQsNyBAQCBzdHJ1Y3QgbWx4NV9mbG93X2R2X2VuY2FwX2RlY2FwX3Jlc291cmNl IHsNCj4+IAlMSVNUX0VOVFJZKG1seDVfZmxvd19kdl9lbmNhcF9kZWNhcF9yZXNvdXJjZSkgbmV4 dDsNCj4+IAkvKiBQb2ludGVyIHRvIG5leHQgZWxlbWVudC4gKi8NCj4+IAlydGVfYXRvbWljMzJf dCByZWZjbnQ7IC8qKjwgUmVmZXJlbmNlIGNvdW50ZXIuICovDQo+PiAtCXN0cnVjdCBpYnZfZmxv d19hY3Rpb24gKnZlcmJzX2FjdGlvbjsNCj4+ICsJdm9pZCAqdmVyYnNfYWN0aW9uOw0KPj4gCS8q KjwgVmVyYnMgZW5jYXAvZGVjYXAgYWN0aW9uIG9iamVjdC4gKi8NCj4+IAl1aW50OF90IGJ1ZltN TFg1X0VOQ0FQX01BWF9MRU5dOw0KPj4gCXNpemVfdCBzaXplOw0KPj4gQEAgLTIyMiw2ICsyMjIs MTYgQEAgc3RydWN0IG1seDVfZmxvd19kdl9lbmNhcF9kZWNhcF9yZXNvdXJjZSB7DQo+PiAJdWlu dDhfdCBmdF90eXBlOw0KPj4gfTsNCj4+ICsvKiBUYWcgcmVzb3VyY2Ugc3RydWN0dXJlLiAqLw0K Pj4gK3N0cnVjdCBtbHg1X2Zsb3dfZHZfdGFnX3Jlc291cmNlIHsNCj4+ICsJTElTVF9FTlRSWSht bHg1X2Zsb3dfZHZfdGFnX3Jlc291cmNlKSBuZXh0Ow0KPj4gKwkvKiBQb2ludGVyIHRvIG5leHQg ZWxlbWVudC4gKi8NCj4+ICsJcnRlX2F0b21pYzMyX3QgcmVmY250OyAvKio8IFJlZmVyZW5jZSBj b3VudGVyLiAqLw0KPj4gKwl2b2lkICphY3Rpb247DQo+PiArCS8qKjwgVmVyYnMgdGFnIGFjdGlv biBvYmplY3QuICovDQo+PiArCXVpbnQzMl90IHRhZzsgLyoqPCB0aGUgdGFnIHZhbHVlLiAqLw0K Pj4gK307DQo+PiArDQo+PiAvKiBOdW1iZXIgb2YgbW9kaWZpY2F0aW9uIGNvbW1hbmRzLiAqLw0K Pj4gI2RlZmluZSBNTFg1X01PRElGWV9OVU0gOA0KPj4gQEAgLTI1OSw3ICsyNjksNyBAQCBzdHJ1 Y3QgbWx4NV9mbG93X2R2IHsNCj4+IAkvKio8IFBvaW50ZXIgdG8gbW9kaWZ5IGhlYWRlciByZXNv dXJjZSBpbiBjYWNoZS4gKi8NCj4+IAlzdHJ1Y3QgaWJ2X2Zsb3cgKmZsb3c7IC8qKjwgSW5zdGFs bGVkIGZsb3cuICovDQo+PiAjaWZkZWYgSEFWRV9JQlZfRkxPV19EVl9TVVBQT1JUDQo+PiAtCXN0 cnVjdCBtbHg1ZHZfZmxvd19hY3Rpb25fYXR0ciBhY3Rpb25zW01MWDVfRFZfTUFYX05VTUJFUl9P Rl9BQ1RJT05TXTsNCj4+ICsJdm9pZCAqYWN0aW9uc1tNTFg1X0RWX01BWF9OVU1CRVJfT0ZfQUNU SU9OU107DQo+PiAJLyoqPCBBY3Rpb24gbGlzdC4gKi8NCj4+ICNlbmRpZg0KPj4gCWludCBhY3Rp b25zX247IC8qKjwgbnVtYmVyIG9mIGFjdGlvbnMuICovDQo+PiBAQCAtMzMyLDYgKzM0Miw3IEBA IHN0cnVjdCBtbHg1X2Zsb3dfY291bnRlciB7DQo+PiAJfTsNCj4+IAl1aW50NjRfdCBoaXRzOyAv Kio8IE51bWJlciBvZiBwYWNrZXRzIG1hdGNoZWQgYnkgdGhlIHJ1bGUuICovDQo+PiAJdWludDY0 X3QgYnl0ZXM7IC8qKjwgTnVtYmVyIG9mIGJ5dGVzIG1hdGNoZWQgYnkgdGhlIHJ1bGUuICovDQo+ PiArCXZvaWQgKmFjdGlvbjsgLyoqPCBQb2ludGVyIHRvIHRoZSBkdiBhY3Rpb24uICovDQo+PiB9 Ow0KPj4gLyogRmxvdyBzdHJ1Y3R1cmUuICovDQo+PiBAQCAtMzM5LDYgKzM1MCw4IEBAIHN0cnVj dCBydGVfZmxvdyB7DQo+PiAJVEFJTFFfRU5UUlkocnRlX2Zsb3cpIG5leHQ7IC8qKjwgUG9pbnRl ciB0byB0aGUgbmV4dCBmbG93IHN0cnVjdHVyZS4gKi8NCj4+IAllbnVtIG1seDVfZmxvd19kcnZf dHlwZSBkcnZfdHlwZTsgLyoqPCBEcnZpZXIgdHlwZS4gKi8NCj4+IAlzdHJ1Y3QgbWx4NV9mbG93 X2NvdW50ZXIgKmNvdW50ZXI7IC8qKjwgSG9sZHMgZmxvdyBjb3VudGVyLiAqLw0KPj4gKwlzdHJ1 Y3QgbWx4NV9mbG93X2R2X3RhZ19yZXNvdXJjZSAqdGFnX3Jlc291cmNlOw0KPj4gKwkvKio8IHBv aW50ZXIgdG8gdGhlIHRhZyBhY3Rpb24uICovDQo+PiAJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9y c3MgcnNzOy8qKjwgUlNTIGNvbnRleHQuICovDQo+PiAJdWludDhfdCBrZXlbTUxYNV9SU1NfSEFT SF9LRVlfTEVOXTsgLyoqPCBSU1MgaGFzaCBrZXkuICovDQo+PiAJdWludDE2X3QgKCpxdWV1ZSlb XTsgLyoqPCBEZXN0aW5hdGlvbiBxdWV1ZXMgdG8gcmVkaXJlY3QgdHJhZmZpYyB0by4gKi8NCj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvd19kdi5jIGIvZHJpdmVycy9u ZXQvbWx4NS9tbHg1X2Zsb3dfZHYuYw0KPj4gaW5kZXggYWQ4NGRlYS4uZDllMmFjOSAxMDA2NDQN Cj4+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93X2R2LmMNCj4+ICsrKyBiL2RyaXZl cnMvbmV0L21seDUvbWx4NV9mbG93X2R2LmMNCj4+IEBAIC0zMiw3ICszMiw2IEBADQo+PiAjaW5j bHVkZSAibWx4NV9wcm0uaCINCj4+ICNpbmNsdWRlICJtbHg1X2dsdWUuaCINCj4+ICNpbmNsdWRl ICJtbHg1X2Zsb3cuaCINCj4+IC0NCj4+ICNpZmRlZiBIQVZFX0lCVl9GTE9XX0RWX1NVUFBPUlQN Cj4+ICNpZm5kZWYgSEFWRV9JQlZfRkxPV19ERVZYX0NPVU5URVJTDQo+PiBAQCAtMTUzNyw2ICsx NTM2LDExIEBAIHN0cnVjdCBmaWVsZF9tb2RpZnlfaW5mbyBtb2RpZnlfdGNwW10gPSB7DQo+PiAJ CS5pZCA9IGlkLA0KPj4gCQkuZGNzID0gZGNzLA0KPj4gCX07DQo+PiArCXRtcGwuYWN0aW9uID0g bWx4NV9nbHVlLT5kdl9jcmVhdGVfZmxvd19hY3Rpb25fY291bnRlcihkY3MtPm9iaiwgMCk7DQo+ PiArCWlmICghdG1wbC5hY3Rpb24pIHsNCj4+ICsJCXJldCA9IGVycm5vOw0KPj4gKwkJZ290byBl cnJvcl9leGl0Ow0KPj4gKwl9DQo+PiAJKmNudCA9IHRtcGw7DQo+PiAJTElTVF9JTlNFUlRfSEVB RCgmcHJpdi0+Zmxvd19jb3VudGVycywgY250LCBuZXh0KTsNCj4+IAlyZXR1cm4gY250Ow0KPj4g QEAgLTI4MjgsNiArMjgzMiw5NyBAQCBzdHJ1Y3QgZmllbGRfbW9kaWZ5X2luZm8gbW9kaWZ5X3Rj cFtdID0gew0KPj4gfQ0KPj4gLyoqDQo+PiArICogRmluZCBleGlzdGluZyB0YWcgcmVzb3VyY2Ug b3IgY3JlYXRlIGFuZCByZWdpc3RlciBhIG5ldyBvbmUuDQo+PiArICoNCj4+ICsgKiBAcGFyYW0g ZGV2W2luLCBvdXRdDQo+PiArICogICBQb2ludGVyIHRvIHJ0ZV9ldGhfZGV2IHN0cnVjdHVyZS4N Cj4+ICsgKiBAcGFyYW1baW4sIG91dF0gcmVzb3VyY2UNCj4+ICsgKiAgIFBvaW50ZXIgdG8gdGFn IHJlc291cmNlLg0KPj4gKyAqIEBwYXJtW2luLCBvdXRdIGRldl9mbG93DQo+PiArICogICBQb2lu dGVyIHRvIHRoZSBkZXZfZmxvdy4NCj4+ICsgKiBAcGFyYW1bb3V0XSBlcnJvcg0KPj4gKyAqICAg cG9pbnRlciB0byBlcnJvciBzdHJ1Y3R1cmUuDQo+PiArICoNCj4+ICsgKiBAcmV0dXJuDQo+PiAr ICogICAwIG9uIHN1Y2Nlc3Mgb3RoZXJ3aXNlIC1lcnJubyBhbmQgZXJybm8gaXMgc2V0Lg0KPj4g KyAqLw0KPj4gK3N0YXRpYyBpbnQNCj4+ICtmbG93X2R2X3RhZ19yZXNvdXJjZV9yZWdpc3Rlcg0K Pj4gKwkJCShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4+ICsJCQkgc3RydWN0IG1seDVfZmxv d19kdl90YWdfcmVzb3VyY2UgKnJlc291cmNlLA0KPj4gKwkJCSBzdHJ1Y3QgbWx4NV9mbG93ICpk ZXZfZmxvdywNCj4+ICsJCQkgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcikNCj4+ICt7DQo+ PiArCXN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPj4g KwlzdHJ1Y3QgbWx4NV9mbG93X2R2X3RhZ19yZXNvdXJjZSAqY2FjaGVfcmVzb3VyY2U7DQo+PiAr DQo+PiArCS8qIExvb2t1cCBhIG1hdGNoaW5nIHJlc291cmNlIGZyb20gY2FjaGUuICovDQo+PiAr CUxJU1RfRk9SRUFDSChjYWNoZV9yZXNvdXJjZSwgJnByaXYtPnRhZ3MsIG5leHQpIHsNCj4+ICsJ CWlmIChyZXNvdXJjZS0+dGFnID09IGNhY2hlX3Jlc291cmNlLT50YWcpIHsNCj4+ICsJCQlEUlZf TE9HKERFQlVHLCAidGFnIHJlc291cmNlICVwOiByZWZjbnQgJWQrKyIsDQo+PiArCQkJCSh2b2lk ICopY2FjaGVfcmVzb3VyY2UsDQo+PiArCQkJCXJ0ZV9hdG9taWMzMl9yZWFkKCZjYWNoZV9yZXNv dXJjZS0+cmVmY250KSk7DQo+PiArCQkJcnRlX2F0b21pYzMyX2luYygmY2FjaGVfcmVzb3VyY2Ut PnJlZmNudCk7DQo+PiArCQkJZGV2X2Zsb3ctPmZsb3ctPnRhZ19yZXNvdXJjZSA9IGNhY2hlX3Jl c291cmNlOw0KPj4gKwkJCXJldHVybiAwOw0KPj4gKwkJfQ0KPj4gKwl9DQo+PiArCS8qIFJlZ2lz dGVyIG5ldyAgcmVzb3VyY2UuICovDQo+PiArCWNhY2hlX3Jlc291cmNlID0gcnRlX2NhbGxvYyhf X2Z1bmNfXywgMSwgc2l6ZW9mKCpjYWNoZV9yZXNvdXJjZSksIDApOw0KPj4gKwlpZiAoIWNhY2hl X3Jlc291cmNlKQ0KPj4gKwkJcmV0dXJuIHJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRU5PTUVN LA0KPj4gKwkJCQkJICBSVEVfRkxPV19FUlJPUl9UWVBFX1VOU1BFQ0lGSUVELCBOVUxMLA0KPj4g KwkJCQkJICAiY2Fubm90IGFsbG9jYXRlIHJlc291cmNlIG1lbW9yeSIpOw0KPj4gKwkqY2FjaGVf cmVzb3VyY2UgPSAqcmVzb3VyY2U7DQo+PiArCWNhY2hlX3Jlc291cmNlLT5hY3Rpb24gPSBtbHg1 X2dsdWUtPmR2X2NyZWF0ZV9mbG93X2FjdGlvbl90YWcNCj4+ICsJCShyZXNvdXJjZS0+dGFnKTsN Cj4+ICsJaWYgKCFjYWNoZV9yZXNvdXJjZS0+YWN0aW9uKSB7DQo+PiArCQlydGVfZnJlZShjYWNo ZV9yZXNvdXJjZSk7DQo+PiArCQlyZXR1cm4gcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9N RU0sDQo+PiArCQkJCQkgIFJURV9GTE9XX0VSUk9SX1RZUEVfVU5TUEVDSUZJRUQsDQo+PiArCQkJ CQkgIE5VTEwsICJjYW5ub3QgY3JlYXRlIGFjdGlvbiIpOw0KPj4gKwl9DQo+PiArCXJ0ZV9hdG9t aWMzMl9pbml0KCZjYWNoZV9yZXNvdXJjZS0+cmVmY250KTsNCj4+ICsJcnRlX2F0b21pYzMyX2lu YygmY2FjaGVfcmVzb3VyY2UtPnJlZmNudCk7DQo+PiArCUxJU1RfSU5TRVJUX0hFQUQoJnByaXYt PnRhZ3MsIGNhY2hlX3Jlc291cmNlLCBuZXh0KTsNCj4+ICsJZGV2X2Zsb3ctPmZsb3ctPnRhZ19y ZXNvdXJjZSA9IGNhY2hlX3Jlc291cmNlOw0KPj4gKwlEUlZfTE9HKERFQlVHLCAibmV3IHRhZyBy ZXNvdXJjZSAlcDogcmVmY250ICVkKysiLA0KPj4gKwkJKHZvaWQgKiljYWNoZV9yZXNvdXJjZSwN Cj4+ICsJCXJ0ZV9hdG9taWMzMl9yZWFkKCZjYWNoZV9yZXNvdXJjZS0+cmVmY250KSk7DQo+PiAr CXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBSZWxlYXNlIHRoZSB0YWcu DQo+PiArICoNCj4+ICsgKiBAcGFyYW0gZGV2DQo+PiArICogICBQb2ludGVyIHRvIEV0aGVybmV0 IGRldmljZS4NCj4+ICsgKiBAcGFyYW0gZmxvdw0KPj4gKyAqICAgUG9pbnRlciB0byBtbHg1X2Zs b3cuDQo+PiArICoNCj4+ICsgKiBAcmV0dXJuDQo+PiArICogICAxIHdoaWxlIGEgcmVmZXJlbmNl IG9uIGl0IGV4aXN0cywgMCB3aGVuIGZyZWVkLg0KPj4gKyAqLw0KPj4gK3N0YXRpYyBpbnQNCj4+ ICtmbG93X2R2X3RhZ19yZWxlYXNlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPj4gKwkJICAg IHN0cnVjdCBtbHg1X2Zsb3dfZHZfdGFnX3Jlc291cmNlICp0YWcpDQo+PiArew0KPj4gKwlhc3Nl cnQodGFnKTsNCj4+ICsJRFJWX0xPRyhERUJVRywgInBvcnQgJXUgdGFnICVwOiByZWZjbnQgJWQt LSIsDQo+PiArCQlkZXYtPmRhdGEtPnBvcnRfaWQsICh2b2lkICopdGFnLA0KPj4gKwkJcnRlX2F0 b21pYzMyX3JlYWQoJnRhZy0+cmVmY250KSk7DQo+PiArCWlmIChydGVfYXRvbWljMzJfZGVjX2Fu ZF90ZXN0KCZ0YWctPnJlZmNudCkpIHsNCj4+ICsJCWNsYWltX3plcm8obWx4NV9nbHVlLT5kZXN0 cm95X2Zsb3dfYWN0aW9uKHRhZy0+YWN0aW9uKSk7DQo+PiArCQlMSVNUX1JFTU9WRSh0YWcsIG5l eHQpOw0KPj4gKwkJRFJWX0xPRyhERUJVRywgInBvcnQgJXUgdGFnICVwOiByZW1vdmVkIiwNCj4+ ICsJCQlkZXYtPmRhdGEtPnBvcnRfaWQsICh2b2lkICopdGFnKTsNCj4+ICsJCXJ0ZV9mcmVlKHRh Zyk7DQo+PiArCQlyZXR1cm4gMDsNCj4+ICsJfQ0KPj4gKwlyZXR1cm4gMTsNCj4+ICt9DQo+PiAr DQo+PiArLyoqDQo+PiAgKiBGaWxsIHRoZSBmbG93IHdpdGggRFYgc3BlYy4NCj4+ICAqDQo+PiAg KiBAcGFyYW1baW5dIGRldg0KPj4gQEAgLTI4NzIsNiArMjk2Nyw3IEBAIHN0cnVjdCBmaWVsZF9t b2RpZnlfaW5mbyBtb2RpZnlfdGNwW10gPSB7DQo+PiAJCQkJCSAgTUxYNURWX0ZMT1dfVEFCTEVf VFlQRV9OSUNfUlgNCj4+IAl9Ow0KPj4gCXVuaW9uIGZsb3dfZHZfYXR0ciBmbG93X2F0dHIgPSB7 IC5hdHRyID0gMCB9Ow0KPj4gKwlzdHJ1Y3QgbWx4NV9mbG93X2R2X3RhZ19yZXNvdXJjZSB0YWdf cmVzb3VyY2U7DQo+PiAJaWYgKHByaW9yaXR5ID09IE1MWDVfRkxPV19QUklPX1JTVkQpDQo+PiAJ CXByaW9yaXR5ID0gcHJpdi0+Y29uZmlnLmZsb3dfcHJpbyAtIDE7DQo+PiBAQCAtMjg4NiwyNiAr Mjk4MiwyOSBAQCBzdHJ1Y3QgZmllbGRfbW9kaWZ5X2luZm8gbW9kaWZ5X3RjcFtdID0gew0KPj4g CQljYXNlIFJURV9GTE9XX0FDVElPTl9UWVBFX1ZPSUQ6DQo+PiAJCQlicmVhazsNCj4+IAkJY2Fz ZSBSVEVfRkxPV19BQ1RJT05fVFlQRV9GTEFHOg0KPj4gLQkJCWRldl9mbG93LT5kdi5hY3Rpb25z W2FjdGlvbnNfbl0udHlwZSA9DQo+PiAtCQkJCU1MWDVEVl9GTE9XX0FDVElPTl9UQUc7DQo+PiAt CQkJZGV2X2Zsb3ctPmR2LmFjdGlvbnNbYWN0aW9uc19uXS50YWdfdmFsdWUgPQ0KPj4gKwkJCXRh Z19yZXNvdXJjZS50YWcgPQ0KPj4gCQkJCW1seDVfZmxvd19tYXJrX3NldChNTFg1X0ZMT1dfTUFS S19ERUZBVUxUKTsNCj4+IC0JCQlhY3Rpb25zX24rKzsNCj4+ICsJCQlpZiAoIWZsb3ctPnRhZ19y ZXNvdXJjZSkNCj4+ICsJCQkJaWYgKGZsb3dfZHZfdGFnX3Jlc291cmNlX3JlZ2lzdGVyDQo+PiAr CQkJCSAgICAoZGV2LCAmdGFnX3Jlc291cmNlLCBkZXZfZmxvdywgZXJyb3IpKQ0KPj4gKwkJCQkJ cmV0dXJuIGVycm5vOw0KPj4gKwkJCWRldl9mbG93LT5kdi5hY3Rpb25zW2FjdGlvbnNfbisrXSA9 DQo+PiArCQkJCWZsb3ctPnRhZ19yZXNvdXJjZS0+YWN0aW9uOw0KPj4gCQkJYWN0aW9uX2ZsYWdz IHw9IE1MWDVfRkxPV19BQ1RJT05fRkxBRzsNCj4+IAkJCWJyZWFrOw0KPj4gCQljYXNlIFJURV9G TE9XX0FDVElPTl9UWVBFX01BUks6DQo+PiAtCQkJZGV2X2Zsb3ctPmR2LmFjdGlvbnNbYWN0aW9u c19uXS50eXBlID0NCj4+IC0JCQkJTUxYNURWX0ZMT1dfQUNUSU9OX1RBRzsNCj4+IC0JCQlkZXZf Zmxvdy0+ZHYuYWN0aW9uc1thY3Rpb25zX25dLnRhZ192YWx1ZSA9DQo+PiAtCQkJCW1seDVfZmxv d19tYXJrX3NldA0KPj4gLQkJCQkoKChjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX21hcmsg KikNCj4+IC0JCQkJICAoYWN0aW9ucy0+Y29uZikpLT5pZCk7DQo+PiAtCQkJYWN0aW9uc19uKys7 DQo+PiArCQkJdGFnX3Jlc291cmNlLnRhZyA9IG1seDVfZmxvd19tYXJrX3NldA0KPj4gKwkJCSAg ICAgICgoKGNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb25fbWFyayAqKQ0KPj4gKwkJCSAgICAg ICAoYWN0aW9ucy0+Y29uZikpLT5pZCk7DQo+PiArCQkJaWYgKCFmbG93LT50YWdfcmVzb3VyY2Up DQo+PiArCQkJCWlmIChmbG93X2R2X3RhZ19yZXNvdXJjZV9yZWdpc3Rlcg0KPj4gKwkJCQkgICAg KGRldiwgJnRhZ19yZXNvdXJjZSwgZGV2X2Zsb3csIGVycm9yKSkNCj4+ICsJCQkJCXJldHVybiBl cnJubzsNCj4+ICsJCQlkZXZfZmxvdy0+ZHYuYWN0aW9uc1thY3Rpb25zX24rK10gPQ0KPj4gKwkJ CQlmbG93LT50YWdfcmVzb3VyY2UtPmFjdGlvbjsNCj4+IAkJCWFjdGlvbl9mbGFncyB8PSBNTFg1 X0ZMT1dfQUNUSU9OX01BUks7DQo+PiAJCQlicmVhazsNCj4+IAkJY2FzZSBSVEVfRkxPV19BQ1RJ T05fVFlQRV9EUk9QOg0KPj4gLQkJCWRldl9mbG93LT5kdi5hY3Rpb25zW2FjdGlvbnNfbl0udHlw ZSA9DQo+PiAtCQkJCU1MWDVEVl9GTE9XX0FDVElPTl9EUk9QOw0KPj4gCQkJYWN0aW9uX2ZsYWdz IHw9IE1MWDVfRkxPV19BQ1RJT05fRFJPUDsNCj4+IAkJCWJyZWFrOw0KPj4gCQljYXNlIFJURV9G TE9XX0FDVElPTl9UWVBFX1FVRVVFOg0KPj4gQEAgLTI5MzMsMTcgKzMwMzIsMTMgQEAgc3RydWN0 IGZpZWxkX21vZGlmeV9pbmZvIG1vZGlmeV90Y3BbXSA9IHsNCj4+IAkJCQlydGVfZXJybm8gPSBF Tk9UU1VQOw0KPj4gCQkJCWdvdG8gY250X2VycjsNCj4+IAkJCX0NCj4+IC0JCQlmbG93LT5jb3Vu dGVyID0NCj4+IC0JCQkJZmxvd19kdl9jb3VudGVyX25ldyhkZXYsDQo+PiAtCQkJCQkJICAgIGNv dW50LT5zaGFyZWQsIGNvdW50LT5pZCk7DQo+PiArCQkJZmxvdy0+Y291bnRlciA9IGZsb3dfZHZf Y291bnRlcl9uZXcoZGV2LCBjb3VudC0+c2hhcmVkLA0KPj4gKwkJCQkJCQkgICAgY291bnQtPmlk KTsNCj4+IAkJCWlmIChmbG93LT5jb3VudGVyID09IE5VTEwpDQo+PiAJCQkJZ290byBjbnRfZXJy Ow0KPj4gLQkJCWRldl9mbG93LT5kdi5hY3Rpb25zW2FjdGlvbnNfbl0udHlwZSA9DQo+PiAtCQkJ CQlNTFg1RFZfRkxPV19BQ1RJT05fQ09VTlRFUlNfREVWWDsNCj4+IC0JCQlkZXZfZmxvdy0+ZHYu YWN0aW9uc1thY3Rpb25zX25dLm9iaiA9DQo+PiAtCQkJCQkJZmxvdy0+Y291bnRlci0+ZGNzLT5v Ymo7DQo+PiArCQkJZGV2X2Zsb3ctPmR2LmFjdGlvbnNbYWN0aW9uc19uKytdID0NCj4+ICsJCQkJ Zmxvdy0+Y291bnRlci0+YWN0aW9uOw0KPj4gCQkJYWN0aW9uX2ZsYWdzIHw9IE1MWDVfRkxPV19B Q1RJT05fQ09VTlQ7DQo+PiAtCQkJKythY3Rpb25zX247DQo+PiAJCQlicmVhazsNCj4+IGNudF9l cnI6DQo+PiAJCQlpZiAocnRlX2Vycm5vID09IEVOT1RTVVApDQo+PiBAQCAtMjk2NCwxMSArMzA1 OSw4IEBAIHN0cnVjdCBmaWVsZF9tb2RpZnlfaW5mbyBtb2RpZnlfdGNwW10gPSB7DQo+PiAJCQlp ZiAoZmxvd19kdl9jcmVhdGVfYWN0aW9uX2wyX2VuY2FwKGRldiwgYWN0aW9ucywNCj4+IAkJCQkJ CQkgICBkZXZfZmxvdywgZXJyb3IpKQ0KPj4gCQkJCXJldHVybiAtcnRlX2Vycm5vOw0KPj4gLQkJ CWRldl9mbG93LT5kdi5hY3Rpb25zW2FjdGlvbnNfbl0udHlwZSA9DQo+PiAtCQkJCU1MWDVEVl9G TE9XX0FDVElPTl9JQlZfRkxPV19BQ1RJT047DQo+PiAtCQkJZGV2X2Zsb3ctPmR2LmFjdGlvbnNb YWN0aW9uc19uXS5hY3Rpb24gPQ0KPj4gKwkJCWRldl9mbG93LT5kdi5hY3Rpb25zW2FjdGlvbnNf bisrXSA9DQo+PiAJCQkJZGV2X2Zsb3ctPmR2LmVuY2FwX2RlY2FwLT52ZXJic19hY3Rpb247DQo+ PiAtCQkJYWN0aW9uc19uKys7DQo+PiAJCQlhY3Rpb25fZmxhZ3MgfD0gYWN0aW9ucy0+dHlwZSA9 PQ0KPj4gCQkJCQlSVEVfRkxPV19BQ1RJT05fVFlQRV9WWExBTl9FTkNBUCA/DQo+PiAJCQkJCU1M WDVfRkxPV19BQ1RJT05fVlhMQU5fRU5DQVAgOg0KPj4gQEAgLTI5NzksMTEgKzMwNzEsOCBAQCBz dHJ1Y3QgZmllbGRfbW9kaWZ5X2luZm8gbW9kaWZ5X3RjcFtdID0gew0KPj4gCQkJaWYgKGZsb3df ZHZfY3JlYXRlX2FjdGlvbl9sMl9kZWNhcChkZXYsIGRldl9mbG93LA0KPj4gCQkJCQkJCSAgIGVy cm9yKSkNCj4+IAkJCQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4+IC0JCQlkZXZfZmxvdy0+ZHYuYWN0 aW9uc1thY3Rpb25zX25dLnR5cGUgPQ0KPj4gLQkJCQlNTFg1RFZfRkxPV19BQ1RJT05fSUJWX0ZM T1dfQUNUSU9OOw0KPj4gLQkJCWRldl9mbG93LT5kdi5hY3Rpb25zW2FjdGlvbnNfbl0uYWN0aW9u ID0NCj4+ICsJCQlkZXZfZmxvdy0+ZHYuYWN0aW9uc1thY3Rpb25zX24rK10gPQ0KPj4gCQkJCWRl dl9mbG93LT5kdi5lbmNhcF9kZWNhcC0+dmVyYnNfYWN0aW9uOw0KPj4gLQkJCWFjdGlvbnNfbisr Ow0KPj4gCQkJYWN0aW9uX2ZsYWdzIHw9IGFjdGlvbnMtPnR5cGUgPT0NCj4+IAkJCQkJUlRFX0ZM T1dfQUNUSU9OX1RZUEVfVlhMQU5fREVDQVAgPw0KPj4gCQkJCQlNTFg1X0ZMT1dfQUNUSU9OX1ZY TEFOX0RFQ0FQIDoNCj4+IEBAIC0yOTk1LDkgKzMwODQsNyBAQCBzdHJ1Y3QgZmllbGRfbW9kaWZ5 X2luZm8gbW9kaWZ5X3RjcFtdID0gew0KPj4gCQkJCWlmIChmbG93X2R2X2NyZWF0ZV9hY3Rpb25f cmF3X2VuY2FwDQo+PiAJCQkJCShkZXYsIGFjdGlvbnMsIGRldl9mbG93LCBhdHRyLCBlcnJvcikp DQo+PiAJCQkJCXJldHVybiAtcnRlX2Vycm5vOw0KPj4gLQkJCQlkZXZfZmxvdy0+ZHYuYWN0aW9u c1thY3Rpb25zX25dLnR5cGUgPQ0KPj4gLQkJCQkJTUxYNURWX0ZMT1dfQUNUSU9OX0lCVl9GTE9X X0FDVElPTjsNCj4+IC0JCQkJZGV2X2Zsb3ctPmR2LmFjdGlvbnNbYWN0aW9uc19uXS5hY3Rpb24g PQ0KPj4gKwkJCQlkZXZfZmxvdy0+ZHYuYWN0aW9uc1thY3Rpb25zX24rK10gPQ0KPj4gCQkJCQlk ZXZfZmxvdy0+ZHYuZW5jYXBfZGVjYXAtPnZlcmJzX2FjdGlvbjsNCj4+IAkJCX0gZWxzZSB7DQo+ PiAJCQkJLyogSGFuZGxlIGVuY2FwIHdpdGhvdXQgcHJlY2VkaW5nIGRlY2FwLiAqLw0KPj4gQEAg LTMwMDUsMTIgKzMwOTIsOSBAQCBzdHJ1Y3QgZmllbGRfbW9kaWZ5X2luZm8gbW9kaWZ5X3RjcFtd ID0gew0KPj4gCQkJCQkJCQkgICBkZXZfZmxvdywNCj4+IAkJCQkJCQkJICAgZXJyb3IpKQ0KPj4g CQkJCQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4+IC0JCQkJZGV2X2Zsb3ctPmR2LmFjdGlvbnNbYWN0 aW9uc19uXS50eXBlID0NCj4+IC0JCQkJCU1MWDVEVl9GTE9XX0FDVElPTl9JQlZfRkxPV19BQ1RJ T047DQo+PiAtCQkJCWRldl9mbG93LT5kdi5hY3Rpb25zW2FjdGlvbnNfbl0uYWN0aW9uID0NCj4+ ICsJCQkJZGV2X2Zsb3ctPmR2LmFjdGlvbnNbYWN0aW9uc19uKytdID0NCj4+IAkJCQkJZGV2X2Zs b3ctPmR2LmVuY2FwX2RlY2FwLT52ZXJic19hY3Rpb247DQo+PiAJCQl9DQo+PiAtCQkJYWN0aW9u c19uKys7DQo+PiAJCQlhY3Rpb25fZmxhZ3MgfD0gTUxYNV9GTE9XX0FDVElPTl9SQVdfRU5DQVA7 DQo+PiAJCQlicmVhazsNCj4+IAkJY2FzZSBSVEVfRkxPV19BQ1RJT05fVFlQRV9SQVdfREVDQVA6 DQo+PiBAQCAtMzAyNSwxMSArMzEwOSw4IEBAIHN0cnVjdCBmaWVsZF9tb2RpZnlfaW5mbyBtb2Rp ZnlfdGNwW10gPSB7DQo+PiAJCQkJCQkJCSAgIGRldl9mbG93LA0KPj4gCQkJCQkJCQkgICBlcnJv cikpDQo+PiAJCQkJCXJldHVybiAtcnRlX2Vycm5vOw0KPj4gLQkJCQlkZXZfZmxvdy0+ZHYuYWN0 aW9uc1thY3Rpb25zX25dLnR5cGUgPQ0KPj4gLQkJCQkJTUxYNURWX0ZMT1dfQUNUSU9OX0lCVl9G TE9XX0FDVElPTjsNCj4+IC0JCQkJZGV2X2Zsb3ctPmR2LmFjdGlvbnNbYWN0aW9uc19uXS5hY3Rp b24gPQ0KPj4gKwkJCQlkZXZfZmxvdy0+ZHYuYWN0aW9uc1thY3Rpb25zX24rK10gPQ0KPj4gCQkJ CQlkZXZfZmxvdy0+ZHYuZW5jYXBfZGVjYXAtPnZlcmJzX2FjdGlvbjsNCj4+IC0JCQkJYWN0aW9u c19uKys7DQo+PiAJCQl9DQo+PiAJCQkvKiBJZiBkZWNhcCBpcyBmb2xsb3dlZCBieSBlbmNhcCwg aGFuZGxlIGl0IGF0IGVuY2FwLiAqLw0KPj4gCQkJYWN0aW9uX2ZsYWdzIHw9IE1MWDVfRkxPV19B Q1RJT05fUkFXX0RFQ0FQOw0KPj4gQEAgLTMwOTgsMTEgKzMxNzksOCBAQCBzdHJ1Y3QgZmllbGRf bW9kaWZ5X2luZm8gbW9kaWZ5X3RjcFtdID0gew0KPj4gCQkJCQkJCQkgZGV2X2Zsb3csDQo+PiAJ CQkJCQkJCSBlcnJvcikpDQo+PiAJCQkJCXJldHVybiAtcnRlX2Vycm5vOw0KPj4gLQkJCQlkZXZf Zmxvdy0+ZHYuYWN0aW9uc1thY3Rpb25zX25dLnR5cGUgPQ0KPj4gLQkJCQkJTUxYNURWX0ZMT1df QUNUSU9OX0lCVl9GTE9XX0FDVElPTjsNCj4+IC0JCQkJZGV2X2Zsb3ctPmR2LmFjdGlvbnNbYWN0 aW9uc19uXS5hY3Rpb24gPQ0KPj4gKwkJCQlkZXZfZmxvdy0+ZHYuYWN0aW9uc1thY3Rpb25zX24r K10gPQ0KPj4gCQkJCQlkZXZfZmxvdy0+ZHYubW9kaWZ5X2hkci0+dmVyYnNfYWN0aW9uOw0KPj4g LQkJCQlhY3Rpb25zX24rKzsNCj4+IAkJCX0NCj4+IAkJCWJyZWFrOw0KPj4gCQlkZWZhdWx0Og0K Pj4gQEAgLTMyNzcsOSArMzM1NSw5IEBAIHN0cnVjdCBmaWVsZF9tb2RpZnlfaW5mbyBtb2RpZnlf dGNwW10gPSB7DQo+PiAJCQkJCSAiY2Fubm90IGdldCBkcm9wIGhhc2ggcXVldWUiKTsNCj4+IAkJ CQlnb3RvIGVycm9yOw0KPj4gCQkJfQ0KPj4gLQkJCWR2LT5hY3Rpb25zW25dLnR5cGUgPSBNTFg1 RFZfRkxPV19BQ1RJT05fREVTVF9JQlZfUVA7DQo+PiAtCQkJZHYtPmFjdGlvbnNbbl0ucXAgPSBk di0+aHJ4cS0+cXA7DQo+PiAtCQkJbisrOw0KPj4gKwkJCWR2LT5hY3Rpb25zW24rK10gPQ0KPj4g KwkJCQltbHg1X2dsdWUtPmR2X2NyZWF0ZV9mbG93X2FjdGlvbl9kZXN0X2lidl9xcA0KPj4gKwkJ CQkoZHYtPmhyeHEtPnFwKTsNCj4+IAkJfSBlbHNlIGlmIChmbG93LT5hY3Rpb25zICYNCj4+IAkJ CSAgIChNTFg1X0ZMT1dfQUNUSU9OX1FVRVVFIHwgTUxYNV9GTE9XX0FDVElPTl9SU1MpKSB7DQo+ PiAJCQlzdHJ1Y3QgbWx4NV9ocnhxICpocnhxOw0KPj4gQEAgLTMzMDQsOSArMzM4Miw5IEBAIHN0 cnVjdCBmaWVsZF9tb2RpZnlfaW5mbyBtb2RpZnlfdGNwW10gPSB7DQo+PiAJCQkJZ290byBlcnJv cjsNCj4+IAkJCX0NCj4+IAkJCWR2LT5ocnhxID0gaHJ4cTsNCj4+IC0JCQlkdi0+YWN0aW9uc1tu XS50eXBlID0gTUxYNURWX0ZMT1dfQUNUSU9OX0RFU1RfSUJWX1FQOw0KPj4gLQkJCWR2LT5hY3Rp b25zW25dLnFwID0gaHJ4cS0+cXA7DQo+PiAtCQkJbisrOw0KPj4gKwkJCWR2LT5hY3Rpb25zW24r K10gPQ0KPj4gKwkJCQltbHg1X2dsdWUtPmR2X2NyZWF0ZV9mbG93X2FjdGlvbl9kZXN0X2lidl9x cA0KPj4gKwkJCQkoZHYtPmhyeHEtPnFwKTsNCj4+IAkJfQ0KPj4gCQlkdi0+ZmxvdyA9DQo+PiAJ CQltbHg1X2dsdWUtPmR2X2NyZWF0ZV9mbG93KGR2LT5tYXRjaGVyLT5tYXRjaGVyX29iamVjdCwN Cj4+IEBAIC0zNDg0LDYgKzM1NjIsMTAgQEAgc3RydWN0IGZpZWxkX21vZGlmeV9pbmZvIG1vZGlm eV90Y3BbXSA9IHsNCj4+IAkJZmxvd19kdl9jb3VudGVyX3JlbGVhc2UoZmxvdy0+Y291bnRlcik7 DQo+PiAJCWZsb3ctPmNvdW50ZXIgPSBOVUxMOw0KPj4gCX0NCj4+ICsJaWYgKGZsb3ctPnRhZ19y ZXNvdXJjZSkgew0KPj4gKwkJZmxvd19kdl90YWdfcmVsZWFzZShkZXYsIGZsb3ctPnRhZ19yZXNv dXJjZSk7DQo+PiArCQlmbG93LT50YWdfcmVzb3VyY2UgPSBOVUxMOw0KPj4gKwl9DQo+PiAJd2hp bGUgKCFMSVNUX0VNUFRZKCZmbG93LT5kZXZfZmxvd3MpKSB7DQo+PiAJCWRldl9mbG93ID0gTElT VF9GSVJTVCgmZmxvdy0+ZGV2X2Zsb3dzKTsNCj4+IAkJTElTVF9SRU1PVkUoZGV2X2Zsb3csIG5l eHQpOw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9nbHVlLmMgYi9kcml2 ZXJzL25ldC9tbHg1L21seDVfZ2x1ZS5jDQo+PiBpbmRleCBjODE3ZDg2Li40YjVhYWRlIDEwMDY0 NA0KPj4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2dsdWUuYw0KPj4gKysrIGIvZHJpdmVy cy9uZXQvbWx4NS9tbHg1X2dsdWUuYw0KPj4gQEAgLTE3NSwxMCArMTc1LDIwIEBADQo+PiB9DQo+ PiBzdGF0aWMgaW50DQo+PiAtbWx4NV9nbHVlX2Rlc3Ryb3lfZmxvd19hY3Rpb24oc3RydWN0IGli dl9mbG93X2FjdGlvbiAqYWN0aW9uKQ0KPj4gK21seDVfZ2x1ZV9kZXN0cm95X2Zsb3dfYWN0aW9u KHZvaWQgKmFjdGlvbikNCj4+IHsNCj4+ICNpZmRlZiBIQVZFX0lCVl9GTE9XX0RWX1NVUFBPUlQN Cj4+IC0JcmV0dXJuIGlidl9kZXN0cm95X2Zsb3dfYWN0aW9uKGFjdGlvbik7DQo+PiArCXN0cnVj dCBtbHg1ZHZfZmxvd19hY3Rpb25fYXR0ciAqYXR0ciA9IGFjdGlvbjsNCj4+ICsJaW50IHJlcyA9 IDA7DQo+PiArCXN3aXRjaCAoYXR0ci0+dHlwZSkgew0KPj4gKwljYXNlIE1MWDVEVl9GTE9XX0FD VElPTl9UQUc6DQo+PiArCQlicmVhazsNCj4+ICsJZGVmYXVsdDoNCj4+ICsJCXJlcyA9IGlidl9k ZXN0cm95X2Zsb3dfYWN0aW9uKGF0dHItPmFjdGlvbik7DQo+PiArCQlicmVhazsNCj4+ICsJfQ0K Pj4gKwlmcmVlKGFjdGlvbik7DQo+PiArCXJldHVybiByZXM7DQo+PiAjZWxzZQ0KPj4gCSh2b2lk KWFjdGlvbjsNCj4+IAlyZXR1cm4gRU5PVFNVUDsNCj4+IEBAIC00MzAsMTYgKzQ0MCwyMyBAQA0K Pj4gbWx4NV9nbHVlX2R2X2NyZWF0ZV9mbG93KHN0cnVjdCBtbHg1ZHZfZmxvd19tYXRjaGVyICpt YXRjaGVyLA0KPj4gCQkJIHN0cnVjdCBtbHg1ZHZfZmxvd19tYXRjaF9wYXJhbWV0ZXJzICptYXRj aF92YWx1ZSwNCj4+IAkJCSBzaXplX3QgbnVtX2FjdGlvbnMsDQo+PiAtCQkJIHN0cnVjdCBtbHg1 ZHZfZmxvd19hY3Rpb25fYXR0ciAqYWN0aW9uc19hdHRyKQ0KPj4gKwkJCSB2b2lkICphY3Rpb25z W10pDQo+PiB7DQo+PiAjaWZkZWYgSEFWRV9JQlZfRkxPV19EVl9TVVBQT1JUDQo+PiArCXN0cnVj dCBtbHg1ZHZfZmxvd19hY3Rpb25fYXR0ciBhY3Rpb25zX2F0dHJbOF07DQo+PiArDQo+PiArCWlm IChudW1fYWN0aW9ucyA+IDgpDQo+PiArCQlyZXR1cm4gTlVMTDsNCj4+ICsJZm9yIChzaXplX3Qg aSA9IDA7IGkgPCBudW1fYWN0aW9uczsgaSsrKQ0KPj4gKwkJYWN0aW9uc19hdHRyW2ldID0NCj4+ ICsJCQkqKChzdHJ1Y3QgbWx4NWR2X2Zsb3dfYWN0aW9uX2F0dHIgKikoYWN0aW9uc1tpXSkpOw0K Pj4gCXJldHVybiBtbHg1ZHZfY3JlYXRlX2Zsb3cobWF0Y2hlciwgbWF0Y2hfdmFsdWUsDQo+PiAJ CQkJICBudW1fYWN0aW9ucywgYWN0aW9uc19hdHRyKTsNCj4+ICNlbHNlDQo+PiAJKHZvaWQpbWF0 Y2hlcjsNCj4+IAkodm9pZCltYXRjaF92YWx1ZTsNCj4+IAkodm9pZCludW1fYWN0aW9uczsNCj4+ IC0JKHZvaWQpYWN0aW9uc19hdHRyOw0KPj4gKwkodm9pZClhY3Rpb25zOw0KPj4gCXJldHVybiBO VUxMOw0KPj4gI2VuZGlmDQo+PiB9DQo+PiBAQCAtNDU1LDMxICs0NzIsNDUgQEANCj4+ICNlbmRp Zg0KPj4gfQ0KPj4gLXN0YXRpYyBzdHJ1Y3QgaWJ2X2Zsb3dfYWN0aW9uICoNCj4+IC1tbHg1X2ds dWVfZHZfY3JlYXRlX2Zsb3dfYWN0aW9uX3BhY2tldF9yZWZvcm1hdA0KPj4gLQkJKHN0cnVjdCBp YnZfY29udGV4dCAqY3R4LA0KPj4gLQkJIHNpemVfdCBkYXRhX3N6LA0KPj4gLQkJIHZvaWQgKmRh dGEsDQo+PiAtCQkgZW51bSBtbHg1ZHZfZmxvd19hY3Rpb25fcGFja2V0X3JlZm9ybWF0X3R5cGUg cmVmb3JtYXRfdHlwZSwNCj4+IC0JCSBlbnVtIG1seDVkdl9mbG93X3RhYmxlX3R5cGUgZnRfdHlw ZSkNCj4+ICtzdGF0aWMgdm9pZCAqDQo+PiArbWx4NV9nbHVlX2R2X2NyZWF0ZV9mbG93X2FjdGlv bl9jb3VudGVyKHZvaWQgKmNvdW50ZXJfb2JqLCB1aW50MzJfdCBvZmZzZXQpDQo+PiB7DQo+PiAj aWZkZWYgSEFWRV9JQlZfRkxPV19EVl9TVVBQT1JUDQo+PiAtCXJldHVybiBtbHg1ZHZfY3JlYXRl X2Zsb3dfYWN0aW9uX3BhY2tldF9yZWZvcm1hdChjdHgsDQo+PiAtCQkJCQkJCSBkYXRhX3N6LA0K Pj4gLQkJCQkJCQkgZGF0YSwNCj4+IC0JCQkJCQkJIHJlZm9ybWF0X3R5cGUsDQo+PiAtCQkJCQkJ CSBmdF90eXBlKTsNCj4+ICsJc3RydWN0IG1seDVkdl9mbG93X2FjdGlvbl9hdHRyICphY3Rpb247 DQo+PiArDQo+PiArCSh2b2lkKW9mZnNldDsNCj4+ICsJYWN0aW9uID0gbWFsbG9jKHNpemVvZigq YWN0aW9uKSk7DQo+PiArCWlmICghYWN0aW9uKQ0KPj4gKwkJcmV0dXJuIE5VTEw7DQo+PiArCWFj dGlvbi0+dHlwZSA9IE1MWDVEVl9GTE9XX0FDVElPTl9DT1VOVEVSU19ERVZYOw0KPj4gKwlhY3Rp b24tPm9iaiA9IGNvdW50ZXJfb2JqOw0KPj4gKwlyZXR1cm4gYWN0aW9uOw0KPj4gI2Vsc2UNCj4+ IC0JKHZvaWQpY3R4Ow0KPj4gLQkodm9pZClkYXRhX3N6Ow0KPj4gLQkodm9pZClkYXRhOw0KPj4g LQkodm9pZClyZWZvcm1hdF90eXBlOw0KPj4gLQkodm9pZClmdF90eXBlOw0KPj4gKwkodm9pZClj b3VudGVyX29iajsNCj4+ICsJKHZvaWQpb2Zmc2V0Ow0KPj4gCXJldHVybiBOVUxMOw0KPj4gI2Vu ZGlmDQo+PiB9DQo+PiAtc3RhdGljIHN0cnVjdCBpYnZfZmxvd19hY3Rpb24gKg0KPj4gK3N0YXRp YyB2b2lkICoNCj4+ICttbHg1X2dsdWVfZHZfY3JlYXRlX2Zsb3dfYWN0aW9uX2Rlc3RfaWJ2X3Fw KHZvaWQgKnFwKQ0KPj4gK3sNCj4+ICsjaWZkZWYgSEFWRV9JQlZfRkxPV19EVl9TVVBQT1JUDQo+ PiArCXN0cnVjdCBtbHg1ZHZfZmxvd19hY3Rpb25fYXR0ciAqYWN0aW9uOw0KPj4gKw0KPj4gKwlh Y3Rpb24gPSBtYWxsb2Moc2l6ZW9mKCphY3Rpb24pKTsNCj4+ICsJaWYgKCFhY3Rpb24pDQo+PiAr CQlyZXR1cm4gTlVMTDsNCj4+ICsJYWN0aW9uLT50eXBlID0gTUxYNURWX0ZMT1dfQUNUSU9OX0RF U1RfSUJWX1FQOw0KPj4gKwlhY3Rpb24tPm9iaiA9IHFwOw0KPj4gKwlyZXR1cm4gYWN0aW9uOw0K Pj4gKyNlbHNlDQo+PiArCSh2b2lkKXFwOw0KPj4gKwlyZXR1cm4gTlVMTDsNCj4+ICsjZW5kaWYN Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgKg0KPj4gbWx4NV9nbHVlX2R2X2NyZWF0ZV9m bG93X2FjdGlvbl9tb2RpZnlfaGVhZGVyDQo+PiAJCQkJCShzdHJ1Y3QgaWJ2X2NvbnRleHQgKmN0 eCwNCj4+IAkJCQkJIHNpemVfdCBhY3Rpb25zX3N6LA0KPj4gQEAgLTQ4Nyw4ICs1MTgsMTUgQEAN Cj4+IAkJCQkJIGVudW0gbWx4NWR2X2Zsb3dfdGFibGVfdHlwZSBmdF90eXBlKQ0KPj4gew0KPj4g I2lmZGVmIEhBVkVfSUJWX0ZMT1dfRFZfU1VQUE9SVA0KPj4gLQlyZXR1cm4gbWx4NWR2X2NyZWF0 ZV9mbG93X2FjdGlvbl9tb2RpZnlfaGVhZGVyKGN0eCwgYWN0aW9uc19zeiwNCj4+IC0JCQkJCQkg ICAgICAgYWN0aW9ucywgZnRfdHlwZSk7DQo+PiArCXN0cnVjdCBtbHg1ZHZfZmxvd19hY3Rpb25f YXR0ciAqYWN0aW9uOw0KPj4gKw0KPj4gKwlhY3Rpb24gPSBtYWxsb2Moc2l6ZW9mKCphY3Rpb24p KTsNCj4+ICsJaWYgKCFhY3Rpb24pDQo+PiArCQlyZXR1cm4gTlVMTDsNCj4+ICsJYWN0aW9uLT50 eXBlID0gTUxYNURWX0ZMT1dfQUNUSU9OX0lCVl9GTE9XX0FDVElPTjsNCj4+ICsJYWN0aW9uLT5h Y3Rpb24gPSBtbHg1ZHZfY3JlYXRlX2Zsb3dfYWN0aW9uX21vZGlmeV9oZWFkZXINCj4+ICsJCShj dHgsIGFjdGlvbnNfc3osIGFjdGlvbnMsIGZ0X3R5cGUpOw0KPj4gKwlyZXR1cm4gYWN0aW9uOw0K Pj4gI2Vsc2UNCj4+IAkodm9pZCljdHg7DQo+PiAJKHZvaWQpYWN0aW9uc19zejsNCj4+IEBAIC00 OTgsNiArNTM2LDUwIEBADQo+PiAjZW5kaWYNCj4+IH0NCj4+ICtzdGF0aWMgdm9pZCAqDQo+PiAr bWx4NV9nbHVlX2R2X2NyZWF0ZV9mbG93X2FjdGlvbl9wYWNrZXRfcmVmb3JtYXQNCj4+ICsJCShz dHJ1Y3QgaWJ2X2NvbnRleHQgKmN0eCwNCj4+ICsJCSBzaXplX3QgZGF0YV9zeiwNCj4+ICsJCSB2 b2lkICpkYXRhLA0KPj4gKwkJIGVudW0gbWx4NWR2X2Zsb3dfYWN0aW9uX3BhY2tldF9yZWZvcm1h dF90eXBlIHJlZm9ybWF0X3R5cGUsDQo+PiArCQkgZW51bSBtbHg1ZHZfZmxvd190YWJsZV90eXBl IGZ0X3R5cGUpDQo+PiArew0KPj4gKyNpZmRlZiBIQVZFX0lCVl9GTE9XX0RWX1NVUFBPUlQNCj4+ ICsJc3RydWN0IG1seDVkdl9mbG93X2FjdGlvbl9hdHRyICphY3Rpb247DQo+PiArDQo+PiArCWFj dGlvbiA9IG1hbGxvYyhzaXplb2YoKmFjdGlvbikpOw0KPj4gKwlpZiAoIWFjdGlvbikNCj4+ICsJ CXJldHVybiBOVUxMOw0KPj4gKwlhY3Rpb24tPnR5cGUgPSBNTFg1RFZfRkxPV19BQ1RJT05fSUJW X0ZMT1dfQUNUSU9OOw0KPj4gKwlhY3Rpb24tPmFjdGlvbiA9IG1seDVkdl9jcmVhdGVfZmxvd19h Y3Rpb25fcGFja2V0X3JlZm9ybWF0DQo+PiArCQkoY3R4LCBkYXRhX3N6LCBkYXRhLCByZWZvcm1h dF90eXBlLCBmdF90eXBlKTsNCj4+ICsJcmV0dXJuIGFjdGlvbjsNCj4+ICsjZWxzZQ0KPj4gKwko dm9pZCljdHg7DQo+PiArCSh2b2lkKWRhdGFfc3o7DQo+PiArCSh2b2lkKWRhdGE7DQo+PiArCSh2 b2lkKXJlZm9ybWF0X3R5cGU7DQo+PiArCSh2b2lkKWZ0X3R5cGU7DQo+PiArCXJldHVybiBOVUxM Ow0KPj4gKyNlbmRpZg0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCAqDQo+PiArbWx4NV9n bHVlX2R2X2NyZWF0ZV9mbG93X2FjdGlvbl90YWcodWludDMyX3QgdGFnKQ0KPj4gK3sNCj4+ICsj aWZkZWYgSEFWRV9JQlZfRkxPV19EVl9TVVBQT1JUDQo+PiArCXN0cnVjdCBtbHg1ZHZfZmxvd19h Y3Rpb25fYXR0ciAqYWN0aW9uOw0KPj4gKwlhY3Rpb24gPSBtYWxsb2Moc2l6ZW9mKCphY3Rpb24p KTsNCj4+ICsJaWYgKCFhY3Rpb24pDQo+PiArCQlyZXR1cm4gTlVMTDsNCj4+ICsJYWN0aW9uLT50 eXBlID0gTUxYNURWX0ZMT1dfQUNUSU9OX1RBRzsNCj4+ICsJYWN0aW9uLT50YWdfdmFsdWUgPSB0 YWc7DQo+PiArCXJldHVybiBhY3Rpb247DQo+PiArI2VuZGlmDQo+PiArCSh2b2lkKXRhZzsNCj4+ ICsJcmV0dXJuIE5VTEw7DQo+PiArfQ0KPj4gKw0KPj4gc3RhdGljIHN0cnVjdCBpYnZfY29udGV4 dCAqDQo+PiBtbHg1X2dsdWVfZHZfb3Blbl9kZXZpY2Uoc3RydWN0IGlidl9kZXZpY2UgKmRldmlj ZSkNCj4+IHsNCj4+IEBAIC02NDUsMTAgKzcyNywxNSBAQA0KPj4gCS5kdl9jcmVhdGVfZmxvd19t YXRjaGVyID0gbWx4NV9nbHVlX2R2X2NyZWF0ZV9mbG93X21hdGNoZXIsDQo+PiAJLmR2X2Rlc3Ry b3lfZmxvd19tYXRjaGVyID0gbWx4NV9nbHVlX2R2X2Rlc3Ryb3lfZmxvd19tYXRjaGVyLA0KPj4g CS5kdl9jcmVhdGVfZmxvdyA9IG1seDVfZ2x1ZV9kdl9jcmVhdGVfZmxvdywNCj4+IC0JLmR2X2Ny ZWF0ZV9mbG93X2FjdGlvbl9wYWNrZXRfcmVmb3JtYXQgPQ0KPj4gLQkJCW1seDVfZ2x1ZV9kdl9j cmVhdGVfZmxvd19hY3Rpb25fcGFja2V0X3JlZm9ybWF0LA0KPj4gKwkuZHZfY3JlYXRlX2Zsb3df YWN0aW9uX2NvdW50ZXIgPQ0KPj4gKwkJbWx4NV9nbHVlX2R2X2NyZWF0ZV9mbG93X2FjdGlvbl9j b3VudGVyLA0KPj4gKwkuZHZfY3JlYXRlX2Zsb3dfYWN0aW9uX2Rlc3RfaWJ2X3FwID0NCj4+ICsJ CW1seDVfZ2x1ZV9kdl9jcmVhdGVfZmxvd19hY3Rpb25fZGVzdF9pYnZfcXAsDQo+PiAJLmR2X2Ny ZWF0ZV9mbG93X2FjdGlvbl9tb2RpZnlfaGVhZGVyID0NCj4+IC0JCQltbHg1X2dsdWVfZHZfY3Jl YXRlX2Zsb3dfYWN0aW9uX21vZGlmeV9oZWFkZXIsDQo+PiArCQltbHg1X2dsdWVfZHZfY3JlYXRl X2Zsb3dfYWN0aW9uX21vZGlmeV9oZWFkZXIsDQo+PiArCS5kdl9jcmVhdGVfZmxvd19hY3Rpb25f cGFja2V0X3JlZm9ybWF0ID0NCj4+ICsJCW1seDVfZ2x1ZV9kdl9jcmVhdGVfZmxvd19hY3Rpb25f cGFja2V0X3JlZm9ybWF0LA0KPj4gKwkuZHZfY3JlYXRlX2Zsb3dfYWN0aW9uX3RhZyA9ICBtbHg1 X2dsdWVfZHZfY3JlYXRlX2Zsb3dfYWN0aW9uX3RhZywNCj4+IAkuZHZfb3Blbl9kZXZpY2UgPSBt bHg1X2dsdWVfZHZfb3Blbl9kZXZpY2UsDQo+PiAJLmRldnhfb2JqX2NyZWF0ZSA9IG1seDVfZ2x1 ZV9kZXZ4X29ial9jcmVhdGUsDQo+PiAJLmRldnhfb2JqX2Rlc3Ryb3kgPSBtbHg1X2dsdWVfZGV2 eF9vYmpfZGVzdHJveSwNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21seDVfZ2x1 ZS5oIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2dsdWUuaA0KPj4gaW5kZXggYjExODk2MC4uMzI0 ODdlYSAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9nbHVlLmgNCj4+ICsr KyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9nbHVlLmgNCj4+IEBAIC01NSw2ICs1NSwxMCBAQA0K Pj4gZW51bSBtbHg1ZHZfZmxvd190YWJsZV90eXBlIHsgZmxvd190YWJsZV90eXBlID0gMCwgfTsN Cj4+ICNlbmRpZg0KPj4gKyNpZm5kZWYgSEFWRV9JQlZfRkxPV19ERVZYX0NPVU5URVJTDQo+PiAr I2RlZmluZSBNTFg1RFZfRkxPV19BQ1RJT05fQ09VTlRFUlNfREVWWCAwDQo+PiArI2VuZGlmDQo+ PiArDQo+PiAjaWZuZGVmIEhBVkVfSUJWX0RFVlhfT0JKDQo+PiBzdHJ1Y3QgbWx4NWR2X2Rldnhf b2JqOw0KPj4gI2VuZGlmDQo+PiBAQCAtOTgsNyArMTAyLDcgQEAgc3RydWN0IG1seDVfZ2x1ZSB7 DQo+PiAJc3RydWN0IGlidl9mbG93ICooKmNyZWF0ZV9mbG93KShzdHJ1Y3QgaWJ2X3FwICpxcCwN Cj4+IAkJCQkJc3RydWN0IGlidl9mbG93X2F0dHIgKmZsb3cpOw0KPj4gCWludCAoKmRlc3Ryb3lf Zmxvdykoc3RydWN0IGlidl9mbG93ICpmbG93X2lkKTsNCj4+IC0JaW50ICgqZGVzdHJveV9mbG93 X2FjdGlvbikoc3RydWN0IGlidl9mbG93X2FjdGlvbiAqYWN0aW9uKTsNCj4+ICsJaW50ICgqZGVz dHJveV9mbG93X2FjdGlvbikodm9pZCAqYWN0aW9uKTsNCj4+IAlzdHJ1Y3QgaWJ2X3FwICooKmNy ZWF0ZV9xcCkoc3RydWN0IGlidl9wZCAqcGQsDQo+PiAJCQkJICAgIHN0cnVjdCBpYnZfcXBfaW5p dF9hdHRyICpxcF9pbml0X2F0dHIpOw0KPj4gCXN0cnVjdCBpYnZfcXAgKigqY3JlYXRlX3FwX2V4 KQ0KPj4gQEAgLTE2MCwxOSArMTY0LDE3IEBAIHN0cnVjdCBtbHg1X2dsdWUgew0KPj4gCWludCAo KmR2X2Rlc3Ryb3lfZmxvd19tYXRjaGVyKShzdHJ1Y3QgbWx4NWR2X2Zsb3dfbWF0Y2hlciAqbWF0 Y2hlcik7DQo+PiAJc3RydWN0IGlidl9mbG93ICooKmR2X2NyZWF0ZV9mbG93KShzdHJ1Y3QgbWx4 NWR2X2Zsb3dfbWF0Y2hlciAqbWF0Y2hlciwNCj4+IAkJCSAgc3RydWN0IG1seDVkdl9mbG93X21h dGNoX3BhcmFtZXRlcnMgKm1hdGNoX3ZhbHVlLA0KPj4gLQkJCSAgc2l6ZV90IG51bV9hY3Rpb25z LA0KPj4gLQkJCSAgc3RydWN0IG1seDVkdl9mbG93X2FjdGlvbl9hdHRyICphY3Rpb25zX2F0dHIp Ow0KPj4gLQlzdHJ1Y3QgaWJ2X2Zsb3dfYWN0aW9uICooKmR2X2NyZWF0ZV9mbG93X2FjdGlvbl9w YWNrZXRfcmVmb3JtYXQpDQo+PiAtCQkoc3RydWN0IGlidl9jb250ZXh0ICpjdHgsDQo+PiAtCQkg c2l6ZV90IGRhdGFfc3osDQo+PiAtCQkgdm9pZCAqZGF0YSwNCj4+ICsJCQkgIHNpemVfdCBudW1f YWN0aW9ucywgdm9pZCAqYWN0aW9uc1tdKTsNCj4+ICsJdm9pZCAqKCpkdl9jcmVhdGVfZmxvd19h Y3Rpb25fY291bnRlcikodm9pZCAqb2JqLCB1aW50MzJfdCAgb2Zmc2V0KTsNCj4+ICsJdm9pZCAq KCpkdl9jcmVhdGVfZmxvd19hY3Rpb25fZGVzdF9pYnZfcXApKHZvaWQgKnFwKTsNCj4+ICsJdm9p ZCAqKCpkdl9jcmVhdGVfZmxvd19hY3Rpb25fbW9kaWZ5X2hlYWRlcikNCj4+ICsJCShzdHJ1Y3Qg aWJ2X2NvbnRleHQgKmN0eCwgc2l6ZV90IGFjdGlvbnNfc3osIHVpbnQ2NF90IGFjdGlvbnNbXSwN Cj4+ICsJCSBlbnVtIG1seDVkdl9mbG93X3RhYmxlX3R5cGUgZnRfdHlwZSk7DQo+PiArCXZvaWQg KigqZHZfY3JlYXRlX2Zsb3dfYWN0aW9uX3BhY2tldF9yZWZvcm1hdCkNCj4+ICsJCShzdHJ1Y3Qg aWJ2X2NvbnRleHQgKmN0eCwgc2l6ZV90IGRhdGFfc3osIHZvaWQgKmRhdGEsDQo+PiAJCSBlbnVt IG1seDVkdl9mbG93X2FjdGlvbl9wYWNrZXRfcmVmb3JtYXRfdHlwZSByZWZvcm1hdF90eXBlLA0K Pj4gCQkgZW51bSBtbHg1ZHZfZmxvd190YWJsZV90eXBlIGZ0X3R5cGUpOw0KPj4gLQlzdHJ1Y3Qg aWJ2X2Zsb3dfYWN0aW9uICooKmR2X2NyZWF0ZV9mbG93X2FjdGlvbl9tb2RpZnlfaGVhZGVyKQ0K Pj4gLQkJCQkJKHN0cnVjdCBpYnZfY29udGV4dCAqY3R4LA0KPj4gLQkJCQkJIHNpemVfdCBhY3Rp b25zX3N6LA0KPj4gLQkJCQkJIHVpbnQ2NF90IGFjdGlvbnNbXSwNCj4+IC0JCQkJCSBlbnVtIG1s eDVkdl9mbG93X3RhYmxlX3R5cGUgZnRfdHlwZSk7DQo+PiArCXZvaWQgKigqZHZfY3JlYXRlX2Zs b3dfYWN0aW9uX3RhZykodWludDMyX3QgdGFnKTsNCj4+IAlzdHJ1Y3QgaWJ2X2NvbnRleHQgKigq ZHZfb3Blbl9kZXZpY2UpKHN0cnVjdCBpYnZfZGV2aWNlICpkZXZpY2UpOw0KPj4gCXN0cnVjdCBt bHg1ZHZfZGV2eF9vYmogKigqZGV2eF9vYmpfY3JlYXRlKQ0KPj4gCQkJCQkoc3RydWN0IGlidl9j b250ZXh0ICpjdHgsDQo+IA0KDQo=