Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp1992661ybl; Thu, 15 Aug 2019 04:50:28 -0700 (PDT) X-Google-Smtp-Source: APXvYqxj4LNZkzahCw1NhIiNba/OxA05JYHf3QA6a73wBDp7cXov98zxB0V7wn3IFW/xTB3DEbMf X-Received: by 2002:a17:90a:8d86:: with SMTP id d6mr1874243pjo.94.1565869827920; Thu, 15 Aug 2019 04:50:27 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1565869827; cv=pass; d=google.com; s=arc-20160816; b=hiW5OczvS7zlmHBPueqbChsykMlB9qBAwDh2foME56jb/hknlqOwvWwpZps7sPBfm4 nCTScZAYJ6MR1sn4hIE7TqOAk9USBwLzjb3bHKiqHbStF8JJr7s2R2unnO9tSOjXydCA 3bT+6AMivMrs1c2dtDvyKeT6+omPRPoOUObq6XvpA3otguiDmDS4LwHf7gkly0MrvSm4 bhzgW9CGpNI6SwsV81XAH5FKfWswPq+kP35p3LAXbtwYLHYxxg1tx1zBBUAcQtJ1aIkM DyhrygEyg5JWl3S412TC/B020WeK3/C6OJBJc2jDfUVrS0Q4E12Xjq7ygnTQnS8tbla9 HyNg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=eqrsGBhAr5U/VVocGgDItOQ4FPSnNEs2GmhOv3M8C2s=; b=rWBW3LO0mpOevgjcYZsMdEiF3Wg80aGT8Z6bDeDEYaQfGVr3JYHnWj9WbFf358l3r8 2rR+5CXX8RKqrmbbB3a4GAYta2X1HigSTFIDQlBp1bPEMnIccZ2P4b3SyO5/8tIyIJ8i BJkDmK90g94crm9doEYVnCPg1lheJvKIM054hVStW7gbRZE+xvNj95MiN4Kdqdr/mp6S Rz0bQ7sjOHkg2Ic8wa9pOThD74hcSKeFKB8LpEnilBptaGBpbYO9Z8ypByCIpcHgpI5B 2bIPQsjXIQOqEAUklV9y38QuKm9kXNYrUQzDgl+gToPXO2hQT8E5EBTu+se7KRx401Ep Rqnw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@Mellanox.com header.s=selector2 header.b=jiompZLX; arc=pass (i=1 spf=pass spfdomain=mellanox.com dkim=pass dkdomain=mellanox.com dmarc=pass fromdomain=mellanox.com); spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mellanox.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 97si1854578pld.250.2019.08.15.04.50.12; Thu, 15 Aug 2019 04:50:27 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@Mellanox.com header.s=selector2 header.b=jiompZLX; arc=pass (i=1 spf=pass spfdomain=mellanox.com dkim=pass dkdomain=mellanox.com dmarc=pass fromdomain=mellanox.com); spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mellanox.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731622AbfHOLfL (ORCPT + 99 others); Thu, 15 Aug 2019 07:35:11 -0400 Received: from mail-eopbgr10046.outbound.protection.outlook.com ([40.107.1.46]:20393 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726008AbfHOLfL (ORCPT ); Thu, 15 Aug 2019 07:35:11 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m6bc5vT7i8tbnehYCodYJAZHUIQd8p4v2Nr55Kn7jfUvmyipnUC1n57CAknOoHXlGOmtazroqZiHQv8YM9IguHXMlAFYOhencCjbZNO7oO/9PHvEdSBHJssbWjyN3tZ4LlTAnv2lNBSfs+c6/ndWuXgAw/4ba0jpitNslqFg2BXdmgkg7dRXb3P/LrNJHcsA0yPq8oIGL9dfgCpFzHN2e8TwYuoZVETim+t2HjzD2gEzHERrE1uw+gbOgiNEMbT+EdL30yyXXHuPanX/2UDi2KWwEnFVk43CirbwbMbilAUt9lF4WAUtJedAJgz1j9kcKIpKANddBQWySXCP/PEWJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eqrsGBhAr5U/VVocGgDItOQ4FPSnNEs2GmhOv3M8C2s=; b=NrOYecPwSUcXC0zPdxUhVdtEs8wiMgihwkANy0y82s/LRuKloQaG86u9Vj33BIuzR+Efe69fKT5Dzwd9wk+ia9aL805L/U9F35jbqggcx6oLTJgIXM/dm19p53xlAxcS2Q7gi/gsnfo3BFUFbJkoqRXD40XybGb3LiCs9U3Ru14AX7gR1XIN05gtwB/btj+oBmmgiUfKgkTZxM2hZ2kSQsaYNPXfsEPY9lkIp0Fk/kQhEHiIKSA7/N7wA7MNQCORMFT9lsfP12U97xRe6ZgWfrkGhl6VM7f4mfrV+CsRSjv3jADByjZNp0Tp7HxxI8eIHPsQ4O5GlbedHA9QKnOv3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eqrsGBhAr5U/VVocGgDItOQ4FPSnNEs2GmhOv3M8C2s=; b=jiompZLX224vB1GYZ738jPE9k0E7h4PQQ2rbnHKxQ1BMh53zDG9SPL6hsWN+uPrRJt5y6NkFFB9L1cFGnrmHgJiDawqLWzSmEjc07KRAt7v3igAx/4qULI6Bltcq3wHKTEq2hHvx78DBAm4RBfoDn917rQvMPY98rYwNMNFjRrc= Received: from AM0PR0502MB4068.eurprd05.prod.outlook.com (52.133.38.142) by AM0PR0502MB3633.eurprd05.prod.outlook.com (52.133.43.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2178.16; Thu, 15 Aug 2019 11:35:00 +0000 Received: from AM0PR0502MB4068.eurprd05.prod.outlook.com ([fe80::9d51:ae68:d177:fc94]) by AM0PR0502MB4068.eurprd05.prod.outlook.com ([fe80::9d51:ae68:d177:fc94%3]) with mapi id 15.20.2157.022; Thu, 15 Aug 2019 11:35:00 +0000 From: Eran Ben Elisha To: Mark Bloch , haiyangz , "sashal@kernel.org" , "davem@davemloft.net" , Saeed Mahameed , "leon@kernel.org" , "lorenzo.pieralisi@arm.com" , "bhelgaas@google.com" , "linux-pci@vger.kernel.org" , "linux-hyperv@vger.kernel.org" , "netdev@vger.kernel.org" CC: kys , Stephen Hemminger , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH net-next, 4/6] net/mlx5: Add HV VHCA infrastructure Thread-Topic: [PATCH net-next, 4/6] net/mlx5: Add HV VHCA infrastructure Thread-Index: AQHVUtO8foHRGf/sMUSe53PjyEEDqqb7G66AgAD5X4A= Date: Thu, 15 Aug 2019 11:35:00 +0000 Message-ID: References: <1565809632-39138-1-git-send-email-haiyangz@microsoft.com> <1565809632-39138-5-git-send-email-haiyangz@microsoft.com> <65561e09-6fa5-b223-b547-36736c4a9d83@mellanox.com> In-Reply-To: <65561e09-6fa5-b223-b547-36736c4a9d83@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: PR0P264CA0012.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100::24) To AM0PR0502MB4068.eurprd05.prod.outlook.com (2603:10a6:208:d::14) authentication-results: spf=none (sender IP is ) smtp.mailfrom=eranbe@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1bc15a94-d5c0-4245-9b7f-08d721749b84 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:AM0PR0502MB3633; x-ms-traffictypediagnostic: AM0PR0502MB3633: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-forefront-prvs: 01304918F3 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(346002)(136003)(366004)(376002)(39860400002)(396003)(199004)(189003)(6116002)(6246003)(229853002)(8936002)(81166006)(256004)(6436002)(81156014)(8676002)(3846002)(14444005)(36756003)(6486002)(305945005)(71190400001)(71200400001)(31686004)(7736002)(2906002)(4326008)(110136005)(54906003)(2501003)(66446008)(64756008)(53936002)(66476007)(66946007)(66556008)(53946003)(52116002)(316002)(99286004)(102836004)(25786009)(6506007)(53546011)(386003)(7416002)(86362001)(76176011)(6512007)(446003)(486006)(26005)(478600001)(31696002)(186003)(11346002)(30864003)(1511001)(476003)(2201001)(2616005)(14454004)(66066001)(5660300002)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM0PR0502MB3633;H:AM0PR0502MB4068.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX: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: MsN/LxKQ9yb+jQ4umakWa/QVYgpGAP63EL3gmwxZpdEcL67T/AiCopSfG9KdUSL248U7+XfWnrCk5mYcNUXQ5fHxbTw9a27uYHw+OAexE6MRaHZaCq7KdBXwjONofm6xGiMh+qksDVZls3gdR9jitg/+dw3zgQMzlyxPoWcTuLD/DYPQLb6ol2DbCpT/zyXe1bmXzTfEGmkKYH8ivC2rwe2t0KEnv67xEGGqZ2WkPCL1DfovuxSLQa5ZwjEO+e9AHllU7fOpKr02IPkrFtFaNCXWyAEA0aGmnDurPIdvcnfISEKQqa97t55JWRbQMVS2UNcMYv9mEu4jQH+YY4jc1S8vMiH7lsONkj5kgoFsrtvn/uxlJBpAN95ldiKXQijRzLK/s9xyixLDEem8Z0AxQ3PN3cuQItjVIYGBecyRgrc= Content-Type: text/plain; charset="utf-8" Content-ID: <1AF3CDADCF5EE34C91DECD66CF9F86E8@eurprd05.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1bc15a94-d5c0-4245-9b7f-08d721749b84 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Aug 2019 11:35:00.7365 (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-CrossTenant-userprincipalname: NujmH20CYpwZxqukTPE2uQiSreLq230p1b51euSCn7wQk0u/U0HCUS/fsn26inIV3bbECDCcFag3XKryN8feDA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3633 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCk9uIDgvMTQvMjAxOSAxMTo0MSBQTSwgTWFyayBCbG9jaCB3cm90ZToNCj4gDQo+IA0KPiBP biA4LzE0LzE5IDEyOjA4IFBNLCBIYWl5YW5nIFpoYW5nIHdyb3RlOg0KPj4gRnJvbTogRXJhbiBC ZW4gRWxpc2hhIDxlcmFuYmVAbWVsbGFub3guY29tPg0KPj4NCj4+IEhWIFZIQ0EgaXMgYSBsYXll ciB3aGljaCBwcm92aWRlcyBQRiB0byBWRiBjb21tdW5pY2F0aW9uIGNoYW5uZWwgYmFzZWQgb24N Cj4+IEh5cGVyViBQQ0kgY29uZmlnIGNoYW5uZWwuIEl0IGltcGxlbWVudHMgTWVsbGFub3gncyBJ bnRlciBWSENBIGNvbnRyb2wNCj4+IGNvbW11bmljYXRpb24gcHJvdG9jb2wuIFRoZSBwcm90b2Nv bCBjb250YWlucyBjb250cm9sIGJsb2NrIGluIG9yZGVyIHRvDQo+PiBwYXNzIG1lc3NhZ2VzIGJl dHdlZW4gdGhlIFBGIGFuZCBWRiBkcml2ZXJzLCBhbmQgZGF0YSBibG9ja3MgaW4gb3JkZXIgdG8N Cj4+IHBhc3MgYWN0dWFsIGRhdGEuDQo+Pg0KPj4gVGhlIGluZnJhc3RydWN0dXJlIGlzIGFnZW50 IGJhc2VkLiBFYWNoIGFnZW50IHdpbGwgYmUgcmVzcG9uc2libGUgb2YNCj4+IGNvbnRpZ3VvdXMg YnVmZmVyIGJsb2NrcyBpbiB0aGUgVkhDQSBjb25maWcgc3BhY2UuIFRoaXMgaW5mcmFzdHJ1Y3R1 cmUgd2lsbA0KPj4gYmluZCBhZ2VudHMgdG8gdGhlaXIgYmxvY2tzLCBhbmQgdGhvc2UgYWdlbnRz IGNhbiBvbmx5IGFjY2VzcyByZWFkL3dyaXRlDQo+PiB0aGUgYnVmZmVyIGJsb2NrcyBhc3NpZ25l ZCB0byB0aGVtLiBFYWNoIGFnZW50IHdpbGwgcHJvdmlkZSB0aHJlZQ0KPj4gY2FsbGJhY2tzIChj b250cm9sLCBpbnZhbGlkYXRlLCBjbGVhbnVwKS4gQ29udHJvbCB3aWxsIGJlIGludm9rZWQgd2hl bg0KPj4gYmxvY2stMCBpcyBpbnZhbGlkYXRlZCB3aXRoIGEgY29tbWFuZCB0aGF0IGNvbmNlcm5z IHRoaXMgYWdlbnQuIEludmFsaWRhdGUNCj4+IGNhbGxiYWNrIHdpbGwgYmUgaW52b2tlZCBpZiBv bmUgb2YgdGhlIGJsb2NrcyBhc3NpZ25lZCB0byB0aGlzIGFnZW50IHdhcw0KPj4gaW52YWxpZGF0 ZWQuIENsZWFudXAgd2lsbCBiZSBpbnZva2VkIGJlZm9yZSB0aGUgYWdlbnQgaXMgYmVpbmcgZnJl ZWQgaW4NCj4+IG9yZGVyIHRvIGNsZWFuIGFsbCBvZiBpdHMgb3BlbiByZXNvdXJjZXMgb3IgZGVm ZXJyZWQgd29ya3MuDQo+Pg0KPj4gQmxvY2stMCBzZXJ2ZXMgYXMgdGhlIGNvbnRyb2wgYmxvY2su IEFsbCBleGVjdXRpb24gY29tbWFuZHMgZnJvbSB0aGUgUEYNCj4+IHdpbGwgYmUgd3JpdHRlbiBi eSB0aGUgUEYgb3ZlciB0aGlzIGJsb2NrLiBWRiB3aWxsIGFjayBvbiB0aG9zZSBieQ0KPj4gd3Jp dGluZyBvbiBibG9jay0wIGFzIHdlbGwuIEl0cyBmb3JtYXQgaXMgZGVzY3JpYmVkIGJ5IHN0cnVj dA0KPj4gbWx4NV9odl92aGNhX2NvbnRyb2xfYmxvY2sgbGF5b3V0Lg0KPj4NCj4+IFNpZ25lZC1v ZmYtYnk6IEVyYW4gQmVuIEVsaXNoYSA8ZXJhbmJlQG1lbGxhbm94LmNvbT4NCj4+IFNpZ25lZC1v ZmYtYnk6IFNhZWVkIE1haGFtZWVkIDxzYWVlZG1AbWVsbGFub3guY29tPg0KPj4gLS0tDQo+PiAg IGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZSAgIHwgICAy ICstDQo+PiAgIC4uLi9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNh LmMgIHwgMjQ3ICsrKysrKysrKysrKysrKysrKysrKw0KPj4gICAuLi4vbmV0L2V0aGVybmV0L21l bGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oICB8IDEwMiArKysrKysrKysNCj4+ICAgZHJp dmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYyAgICAgfCAgIDcgKw0K Pj4gICBpbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmggICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMiArDQo+PiAgIDUgZmlsZXMgY2hhbmdlZCwgMzU5IGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkNCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxh bm94L21seDUvY29yZS9saWIvaHZfdmhjYS5jDQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaA0KPj4NCj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFr ZWZpbGUgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUN Cj4+IGluZGV4IGE4OTUwYjEuLmUwYTEwNTYgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL25ldC9l dGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUNCj4+ICsrKyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZQ0KPj4gQEAgLTQ1LDcgKzQ1LDcg QEAgbWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRVNXSVRDSCkgICArPSBlc3dpdGNoLm8gZXN3aXRj aF9vZmZsb2Fkcy5vIGVzd2l0Y2hfb2ZmbG8NCj4+ICAgbWx4NV9jb3JlLSQoQ09ORklHX01MWDVf TVBGUykgICAgICArPSBsaWIvbXBmcy5vDQo+PiAgIG1seDVfY29yZS0kKENPTkZJR19WWExBTikg ICAgICAgICAgKz0gbGliL3Z4bGFuLm8NCj4+ICAgbWx4NV9jb3JlLSQoQ09ORklHX1BUUF8xNTg4 X0NMT0NLKSArPSBsaWIvY2xvY2subw0KPj4gLW1seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJW X01JTkkpICAgICArPSBsaWIvaHYubw0KPj4gK21seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJW X01JTkkpKz0gbGliL2h2Lm8gbGliL2h2X3ZoY2Eubw0KPj4gICANCj4+ICAgIw0KPj4gICAjIElw b2liIG5ldGRldg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDUvY29yZS9saWIvaHZfdmhjYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NS9jb3JlL2xpYi9odl92aGNhLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRl eCAwMDAwMDAwLi5iMmVlYmRmDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuYw0KPj4gQEAgLTAsMCAr MSwyNDcgQEANCj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBMaW51 eC1PcGVuSUINCj4+ICsvLyBDb3B5cmlnaHQgKGMpIDIwMTggTWVsbGFub3ggVGVjaG5vbG9naWVz DQo+PiArDQo+PiArI2luY2x1ZGUgPGxpbnV4L2h5cGVydi5oPg0KPj4gKyNpbmNsdWRlICJtbHg1 X2NvcmUuaCINCj4+ICsjaW5jbHVkZSAibGliL2h2LmgiDQo+PiArI2luY2x1ZGUgImxpYi9odl92 aGNhLmgiDQo+PiArDQo+PiArc3RydWN0IG1seDVfaHZfdmhjYSB7DQo+PiArCXN0cnVjdCBtbHg1 X2NvcmVfZGV2ICAgICAgICpkZXY7DQo+PiArCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICAgICp3 b3JrX3F1ZXVlOw0KPj4gKwlzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICAqYWdlbnRzW01MWDVf SFZfVkhDQV9BR0VOVF9NQVhdOw0KPj4gKwlzdHJ1Y3QgbXV0ZXggICAgICAgICAgICAgICAgYWdl bnRzX2xvY2s7IC8qIFByb3RlY3QgYWdlbnRzIGFycmF5ICovDQo+PiArfTsNCj4+ICsNCj4+ICtz dHJ1Y3QgbWx4NV9odl92aGNhX3dvcmsgew0KPj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgICAgIGlu dmFsaWRhdGVfd29yazsNCj4+ICsJc3RydWN0IG1seDVfaHZfdmhjYSAgICpodl92aGNhOw0KPj4g Kwl1NjQgICAgICAgICAgICAgICAgICAgIGJsb2NrX21hc2s7DQo+PiArfTsNCj4+ICsNCj4+ICtz dHJ1Y3QgbWx4NV9odl92aGNhX2RhdGFfYmxvY2sgew0KPj4gKwl1MTYgICAgIHNlcXVlbmNlOw0K Pj4gKwl1MTYgICAgIG9mZnNldDsNCj4+ICsJdTggICAgICByZXNlcnZlZFs0XTsNCj4+ICsJdTY0 ICAgICBkYXRhWzE1XTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCBtbHg1X2h2X3ZoY2FfYWdl bnQgew0KPj4gKwllbnVtIG1seDVfaHZfdmhjYV9hZ2VudF90eXBlCSB0eXBlOw0KPj4gKwlzdHJ1 Y3QgbWx4NV9odl92aGNhCQkqaHZfdmhjYTsNCj4+ICsJdm9pZAkJCQkqcHJpdjsNCj4+ICsJaW50 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxOw0KPiBXaHkgaXMgdGhpcyBpbnQ/IGFu ZCBpbiBkYXRhIGJsb2NrIGlzIHUxNj8NCg0KTm8gZ29vZCByZWFzb24uIFNob3VsZCBiZSBjaGFu Z2VkIHRvIHUxNi4NCg0KPiANCj4+ICsJdm9pZCAoKmNvbnRyb2wpKHN0cnVjdCBtbHg1X2h2X3Zo Y2FfYWdlbnQgKmFnZW50LA0KPj4gKwkJCXN0cnVjdCBtbHg1X2h2X3ZoY2FfY29udHJvbF9ibG9j ayAqYmxvY2spOw0KPj4gKwl2b2lkICgqaW52YWxpZGF0ZSkoc3RydWN0IG1seDVfaHZfdmhjYV9h Z2VudCAqYWdlbnQsDQo+PiArCQkJICAgdTY0IGJsb2NrX21hc2spOw0KPj4gKwl2b2lkICgqY2xl YW51cCkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpOw0KPj4gK307DQo+PiArDQo+ PiArc3RydWN0IG1seDVfaHZfdmhjYSAqbWx4NV9odl92aGNhX2NyZWF0ZShzdHJ1Y3QgbWx4NV9j b3JlX2RldiAqZGV2KQ0KPj4gK3sNCj4+ICsJc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSA9 IE5VTEw7DQo+PiArDQo+PiArCWh2X3ZoY2EgPSBremFsbG9jKHNpemVvZigqaHZfdmhjYSksIEdG UF9LRVJORUwpOw0KPj4gKwlpZiAoIWh2X3ZoY2EpDQo+PiArCQlyZXR1cm4gRVJSX1BUUigtRU5P TUVNKTsNCj4+ICsNCj4+ICsJaHZfdmhjYS0+d29ya19xdWV1ZSA9IGNyZWF0ZV9zaW5nbGV0aHJl YWRfd29ya3F1ZXVlKCJtbHg1X2h2X3ZoY2EiKTsNCj4+ICsJaWYgKCFodl92aGNhLT53b3JrX3F1 ZXVlKSB7DQo+PiArCQlrZnJlZShodl92aGNhKTsNCj4+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9N RU0pOw0KPj4gKwl9DQo+PiArDQo+PiArCWh2X3ZoY2EtPmRldiA9IGRldjsNCj4+ICsJbXV0ZXhf aW5pdCgmaHZfdmhjYS0+YWdlbnRzX2xvY2spOw0KPj4gKw0KPj4gKwlyZXR1cm4gaHZfdmhjYTsN Cj4+ICt9DQo+PiArDQo+PiArdm9pZCBtbHg1X2h2X3ZoY2FfZGVzdHJveShzdHJ1Y3QgbWx4NV9o dl92aGNhICpodl92aGNhKQ0KPj4gK3sNCj4+ICsJaWYgKElTX0VSUl9PUl9OVUxMKGh2X3ZoY2Ep KQ0KPj4gKwkJcmV0dXJuOw0KPj4gKw0KPj4gKwlmbHVzaF93b3JrcXVldWUoaHZfdmhjYS0+d29y a19xdWV1ZSk7DQo+PiArCWRlc3Ryb3lfd29ya3F1ZXVlKGh2X3ZoY2EtPndvcmtfcXVldWUpOw0K PiANCj4gV2h5IG5vdCBqdXN0IGRlc3Ryb3k/DQoNCldpbGwgZml4Lg0KDQo+IA0KPj4gKwlrZnJl ZShodl92aGNhKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgbWx4NV9odl92aGNhX2lu dmFsaWRhdGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+PiArew0KPj4gKwlzdHJ1 Y3QgbWx4NV9odl92aGNhX3dvcmsgKmh3b3JrOw0KPj4gKwlzdHJ1Y3QgbWx4NV9odl92aGNhICpo dl92aGNhOw0KPj4gKwlpbnQgaTsNCj4+ICsNCj4+ICsJaHdvcmsgPSBjb250YWluZXJfb2Yod29y aywgc3RydWN0IG1seDVfaHZfdmhjYV93b3JrLCBpbnZhbGlkYXRlX3dvcmspOw0KPj4gKwlodl92 aGNhID0gaHdvcmstPmh2X3ZoY2E7DQo+PiArDQo+PiArCW11dGV4X2xvY2soJmh2X3ZoY2EtPmFn ZW50c19sb2NrKTsNCj4+ICsJZm9yIChpID0gMDsgaSA8IE1MWDVfSFZfVkhDQV9BR0VOVF9NQVg7 IGkrKykgew0KPj4gKwkJc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQgPSBodl92aGNh LT5hZ2VudHNbaV07DQo+PiArDQo+PiArCQlpZiAoIWFnZW50IHx8ICFhZ2VudC0+aW52YWxpZGF0 ZSkNCj4+ICsJCQljb250aW51ZTsNCj4+ICsNCj4+ICsJCWlmICghKEJJVChhZ2VudC0+dHlwZSkg JiBod29yay0+YmxvY2tfbWFzaykpDQo+PiArCQkJY29udGludWU7DQo+PiArDQo+PiArCQlhZ2Vu dC0+aW52YWxpZGF0ZShhZ2VudCwgaHdvcmstPmJsb2NrX21hc2spOw0KPj4gKwl9DQo+PiArCW11 dGV4X3VubG9jaygmaHZfdmhjYS0+YWdlbnRzX2xvY2spOw0KPj4gKw0KPj4gKwlrZnJlZShod29y ayk7DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQgbWx4NV9odl92aGNhX2ludmFsaWRhdGUodm9pZCAq Y29udGV4dCwgdTY0IGJsb2NrX21hc2spDQo+PiArew0KPj4gKwlzdHJ1Y3QgbWx4NV9odl92aGNh ICpodl92aGNhID0gKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKiljb250ZXh0Ow0KPj4gKwlzdHJ1Y3Qg bWx4NV9odl92aGNhX3dvcmsgKndvcms7DQo+PiArDQo+PiArCXdvcmsgPSBremFsbG9jKHNpemVv Zigqd29yayksIEdGUF9BVE9NSUMpOw0KPj4gKwlpZiAoIXdvcmspDQo+PiArCQlyZXR1cm47DQo+ PiArDQo+PiArCUlOSVRfV09SSygmd29yay0+aW52YWxpZGF0ZV93b3JrLCBtbHg1X2h2X3ZoY2Ff aW52YWxpZGF0ZV93b3JrKTsNCj4+ICsJd29yay0+aHZfdmhjYSAgICA9IGh2X3ZoY2E7DQo+PiAr CXdvcmstPmJsb2NrX21hc2sgPSBibG9ja19tYXNrOw0KPj4gKw0KPj4gKwlxdWV1ZV93b3JrKGh2 X3ZoY2EtPndvcmtfcXVldWUsICZ3b3JrLT5pbnZhbGlkYXRlX3dvcmspOw0KPj4gK30NCj4+ICsN Cj4+ICtpbnQgbWx4NV9odl92aGNhX2luaXQoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSkN Cj4+ICt7DQo+PiArCWlmIChJU19FUlJfT1JfTlVMTChodl92aGNhKSkNCj4+ICsJCXJldHVybiBJ U19FUlJfT1JfTlVMTChodl92aGNhKTsNCj4+ICsNCj4+ICsJcmV0dXJuIG1seDVfaHZfcmVnaXN0 ZXJfaW52YWxpZGF0ZShodl92aGNhLT5kZXYsIGh2X3ZoY2EsDQo+PiArCQkJCQkgICBtbHg1X2h2 X3ZoY2FfaW52YWxpZGF0ZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQgbWx4NV9odl92aGNhX2Ns ZWFudXAoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSkNCj4+ICt7DQo+PiArCWludCBpOw0K Pj4gKw0KPj4gKwlpZiAoSVNfRVJSX09SX05VTEwoaHZfdmhjYSkpDQo+PiArCQlyZXR1cm47DQo+ PiArDQo+PiArCW11dGV4X2xvY2soJmh2X3ZoY2EtPmFnZW50c19sb2NrKTsNCj4+ICsJZm9yIChp ID0gMDsgaSA8IE1MWDVfSFZfVkhDQV9BR0VOVF9NQVg7IGkrKykNCj4+ICsJCVdBUk5fT04oaHZf dmhjYS0+YWdlbnRzW2ldKTsNCj4+ICsNCj4+ICsJbXV0ZXhfdW5sb2NrKCZodl92aGNhLT5hZ2Vu dHNfbG9jayk7DQo+PiArDQo+PiArCW1seDVfaHZfdW5yZWdpc3Rlcl9pbnZhbGlkYXRlKGh2X3Zo Y2EtPmRldik7DQo+PiArfQ0KPj4gKw0KPj4gK3N0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKg0K Pj4gK21seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhj YSwNCj4+ICsJCQkgIGVudW0gbWx4NV9odl92aGNhX2FnZW50X3R5cGUgdHlwZSwNCj4+ICsJCQkg IHZvaWQgKCpjb250cm9sKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KiwNCj4+ICsJCQkJCSAg c3RydWN0IG1seDVfaHZfdmhjYV9jb250cm9sX2Jsb2NrICpibG9jayksDQo+PiArCQkJICB2b2lk ICgqaW52YWxpZGF0ZSkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCosDQo+PiArCQkJCQkgICAg IHU2NCBibG9ja19tYXNrKSwNCj4+ICsJCQkgIHZvaWQgKCpjbGVhdXApKHN0cnVjdCBtbHg1X2h2 X3ZoY2FfYWdlbnQgKmFnZW50KSwNCj4+ICsJCQkgIHZvaWQgKnByaXYpDQo+PiArew0KPj4gKwlz dHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudDsNCj4+ICsNCj4+ICsJaWYgKElTX0VSUl9P Ul9OVUxMKGh2X3ZoY2EpKQ0KPj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7DQo+PiArDQo+ PiArCWlmIChodl92aGNhLT5hZ2VudHNbdHlwZV0pDQo+PiArCQlyZXR1cm4gRVJSX1BUUigtRUlO VkFMKTs+ICsNCj4+ICsJYWdlbnQgPSBremFsbG9jKHNpemVvZigqYWdlbnQpLCBHRlBfS0VSTkVM KTsNCj4+ICsJaWYgKCFhZ2VudCkNCj4+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOw0KPj4g Kw0KPj4gKwlhZ2VudC0+dHlwZSAgICAgID0gdHlwZTsNCj4+ICsJYWdlbnQtPmh2X3ZoY2EgICA9 IGh2X3ZoY2E7DQo+PiArCWFnZW50LT5wcml2ICAgICAgPSBwcml2Ow0KPj4gKwlhZ2VudC0+Y29u dHJvbCAgID0gY29udHJvbDsNCj4+ICsJYWdlbnQtPmludmFsaWRhdGUgPSBpbnZhbGlkYXRlOw0K Pj4gKwlhZ2VudC0+Y2xlYW51cCAgID0gY2xlYXVwOw0KPj4gKw0KPj4gKwltdXRleF9sb2NrKCZo dl92aGNhLT5hZ2VudHNfbG9jayk7DQo+PiArCWh2X3ZoY2EtPmFnZW50c1t0eXBlXSA9IGFnZW50 Ow0KPj4gKwltdXRleF91bmxvY2soJmh2X3ZoY2EtPmFnZW50c19sb2NrKTsNCj4gDQo+IFlvdSBo YXZlIGEgY2hlY2sgZm9yIHRoaXMgbm90IHVuZGVyIGEgbG9jayBhIGZldyBsaW5lcyB1cCwNCj4g YnV0IGFzc2lnbiB1bmRlciBhIGxvY2s/DQoNCmdvb2QgcG9pbnQsIHdpbGwgYWRkLg0KDQo+IA0K PiBNYXJrDQo+IA0KPj4gKw0KPj4gKwlyZXR1cm4gYWdlbnQ7DQo+PiArfQ0KPj4gKw0KPj4gK3Zv aWQgbWx4NV9odl92aGNhX2FnZW50X2Rlc3Ryb3koc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAq YWdlbnQpDQo+PiArew0KPj4gKwlzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhID0gYWdlbnQt Pmh2X3ZoY2E7DQo+PiArDQo+PiArCW11dGV4X2xvY2soJmh2X3ZoY2EtPmFnZW50c19sb2NrKTsN Cj4+ICsNCj4+ICsJaWYgKFdBUk5fT04oYWdlbnQgIT0gaHZfdmhjYS0+YWdlbnRzW2FnZW50LT50 eXBlXSkpIHsNCj4+ICsJCW11dGV4X3VubG9jaygmaHZfdmhjYS0+YWdlbnRzX2xvY2spOw0KPj4g KwkJcmV0dXJuOw0KPj4gKwl9DQo+PiArDQo+PiArCWh2X3ZoY2EtPmFnZW50c1thZ2VudC0+dHlw ZV0gPSBOVUxMOw0KPj4gKwltdXRleF91bmxvY2soJmh2X3ZoY2EtPmFnZW50c19sb2NrKTsNCj4+ ICsNCj4+ICsJaWYgKGFnZW50LT5jbGVhbnVwKQ0KPj4gKwkJYWdlbnQtPmNsZWFudXAoYWdlbnQp Ow0KPj4gKw0KPj4gKwlrZnJlZShhZ2VudCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQg bWx4NV9odl92aGNhX2RhdGFfYmxvY2tfcHJlcGFyZShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50 ICphZ2VudCwNCj4+ICsJCQkJCSAgIHN0cnVjdCBtbHg1X2h2X3ZoY2FfZGF0YV9ibG9jayAqZGF0 YV9ibG9jaywNCj4+ICsJCQkJCSAgIHZvaWQgKnNyYywgaW50IGxlbiwgaW50ICpvZmZzZXQpDQo+ PiArew0KPj4gKwlpbnQgYnl0ZXMgPSBtaW5fdChpbnQsIChpbnQpc2l6ZW9mKGRhdGFfYmxvY2st PmRhdGEpLCBsZW4pOw0KPj4gKw0KPj4gKwlkYXRhX2Jsb2NrLT5zZXF1ZW5jZSA9IGFnZW50LT5z ZXE7DQo+PiArCWRhdGFfYmxvY2stPm9mZnNldCAgID0gKCpvZmZzZXQpKys7DQo+PiArCW1lbWNw eShkYXRhX2Jsb2NrLT5kYXRhLCBzcmMsIGJ5dGVzKTsNCj4+ICsNCj4+ICsJcmV0dXJuIGJ5dGVz Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBtbHg1X2h2X3ZoY2FfYWdlbnRfc2VxX3Vw ZGF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCkNCj4+ICt7DQo+PiArCWFnZW50 LT5zZXErKzsNCj4+ICt9DQo+PiArDQo+PiAraW50IG1seDVfaHZfdmhjYV9hZ2VudF93cml0ZShz dHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCwNCj4+ICsJCQkgICAgIHZvaWQgKmJ1Ziwg aW50IGxlbikNCj4+ICt7DQo+PiArCWludCBvZmZzZXQgPSBhZ2VudC0+dHlwZSAqIEhWX0NPTkZJ R19CTE9DS19TSVpFX01BWDsNCj4+ICsJaW50IGJsb2NrX29mZnNldCA9IDA7DQo+PiArCWludCB0 b3RhbCA9IDA7DQo+PiArCWludCBlcnI7DQo+PiArDQo+PiArCXdoaWxlIChsZW4pIHsNCj4+ICsJ CXN0cnVjdCBtbHg1X2h2X3ZoY2FfZGF0YV9ibG9jayBkYXRhX2Jsb2NrID0gezB9Ow0KPj4gKwkJ aW50IGJ5dGVzOw0KPj4gKw0KPj4gKwkJYnl0ZXMgPSBtbHg1X2h2X3ZoY2FfZGF0YV9ibG9ja19w cmVwYXJlKGFnZW50LCAmZGF0YV9ibG9jaywNCj4+ICsJCQkJCQkJYnVmICsgdG90YWwsDQo+PiAr CQkJCQkJCWxlbiwgJmJsb2NrX29mZnNldCk7DQo+PiArCQlpZiAoIWJ5dGVzKQ0KPj4gKwkJCXJl dHVybiAtRU5PTUVNOw0KPj4gKw0KPj4gKwkJZXJyID0gbWx4NV9odl93cml0ZV9jb25maWcoYWdl bnQtPmh2X3ZoY2EtPmRldiwgJmRhdGFfYmxvY2ssDQo+PiArCQkJCQkgICBzaXplb2YoZGF0YV9i bG9jayksIG9mZnNldCk7DQo+PiArCQlpZiAoZXJyKQ0KPj4gKwkJCXJldHVybiBlcnI7DQo+PiAr DQo+PiArCQl0b3RhbCArPSBieXRlczsNCj4+ICsJCWxlbiAgIC09IGJ5dGVzOw0KPj4gKwl9DQo+ PiArDQo+PiArCW1seDVfaHZfdmhjYV9hZ2VudF9zZXFfdXBkYXRlKGFnZW50KTsNCj4+ICsNCj4+ ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQgKm1seDVfaHZfdmhjYV9hZ2VudF9w cml2KHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50KQ0KPj4gK3sNCj4+ICsJcmV0dXJu IGFnZW50LT5wcml2Ow0KPj4gK30NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPj4gaW5kZXggMDAwMDAwMC4uZmE3ZWU4NQ0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmgNCj4+ IEBAIC0wLDAgKzEsMTAyIEBADQo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAgT1IgTGludXgtT3BlbklCICovDQo+PiArLyogQ29weXJpZ2h0IChjKSAyMDE5IE1lbGxhbm94 IFRlY2hub2xvZ2llcy4gKi8NCj4+ICsNCj4+ICsjaWZuZGVmIF9fTElCX0hWX1ZIQ0FfSF9fDQo+ PiArI2RlZmluZSBfX0xJQl9IVl9WSENBX0hfXw0KPj4gKw0KPj4gKyNpbmNsdWRlICJlbi5oIg0K Pj4gKyNpbmNsdWRlICJsaWIvaHYuaCINCj4+ICsNCj4+ICtzdHJ1Y3QgbWx4NV9odl92aGNhX2Fn ZW50Ow0KPj4gK3N0cnVjdCBtbHg1X2h2X3ZoY2E7DQo+PiArc3RydWN0IG1seDVfaHZfdmhjYV9j b250cm9sX2Jsb2NrOw0KPj4gKw0KPj4gK2VudW0gbWx4NV9odl92aGNhX2FnZW50X3R5cGUgew0K Pj4gKwlNTFg1X0hWX1ZIQ0FfQUdFTlRfTUFYID0gMzIsDQo+PiArfTsNCj4+ICsNCj4+ICsjaWYg SVNfRU5BQkxFRChDT05GSUdfUENJX0hZUEVSVl9NSU5JKQ0KPj4gKw0KPj4gK3N0cnVjdCBtbHg1 X2h2X3ZoY2FfY29udHJvbF9ibG9jayB7DQo+PiArCXUzMiAgICAgY2FwYWJpbGl0aWVzOw0KPj4g Kwl1MzIgICAgIGNvbnRyb2w7DQo+PiArCXUxNiAgICAgY29tbWFuZDsNCj4+ICsJdTE2ICAgICBj b21tYW5kX2FjazsNCj4+ICsJdTE2ICAgICB2ZXJzaW9uOw0KPj4gKwl1MTYgICAgIHJpbmdzOw0K Pj4gKwl1MzIgICAgIHJlc2VydmVkMVsyOF07DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgbWx4 NV9odl92aGNhICptbHg1X2h2X3ZoY2FfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYp Ow0KPj4gK3ZvaWQgbWx4NV9odl92aGNhX2Rlc3Ryb3koc3RydWN0IG1seDVfaHZfdmhjYSAqaHZf dmhjYSk7DQo+PiAraW50IG1seDVfaHZfdmhjYV9pbml0KHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2 X3ZoY2EpOw0KPj4gK3ZvaWQgbWx4NV9odl92aGNhX2NsZWFudXAoc3RydWN0IG1seDVfaHZfdmhj YSAqaHZfdmhjYSk7DQo+PiArdm9pZCBtbHg1X2h2X3ZoY2FfaW52YWxpZGF0ZSh2b2lkICpjb250 ZXh0LCB1NjQgYmxvY2tfbWFzayk7DQo+PiArDQo+PiArc3RydWN0IG1seDVfaHZfdmhjYV9hZ2Vu dCAqDQo+PiArbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpo dl92aGNhLA0KPj4gKwkJCSAgZW51bSBtbHg1X2h2X3ZoY2FfYWdlbnRfdHlwZSB0eXBlLA0KPj4g KwkJCSAgdm9pZCAoKmNvbnRyb2wpKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQqLA0KPj4gKwkJ CQkJICBzdHJ1Y3QgbWx4NV9odl92aGNhX2NvbnRyb2xfYmxvY2sgKmJsb2NrKSwNCj4+ICsJCQkg IHZvaWQgKCppbnZhbGlkYXRlKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KiwNCj4+ICsJCQkJ CSAgICAgdTY0IGJsb2NrX21hc2spLA0KPj4gKwkJCSAgdm9pZCAoKmNsZWFudXApKHN0cnVjdCBt bHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50KSwNCj4+ICsJCQkgIHZvaWQgKmNvbnRleHQpOw0KPj4g Kw0KPj4gK3ZvaWQgbWx4NV9odl92aGNhX2FnZW50X2Rlc3Ryb3koc3RydWN0IG1seDVfaHZfdmhj YV9hZ2VudCAqYWdlbnQpOw0KPj4gK2ludCBtbHg1X2h2X3ZoY2FfYWdlbnRfd3JpdGUoc3RydWN0 IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQsDQo+PiArCQkJICAgICB2b2lkICpidWYsIGludCBs ZW4pOw0KPj4gK3ZvaWQgKm1seDVfaHZfdmhjYV9hZ2VudF9wcml2KHN0cnVjdCBtbHg1X2h2X3Zo Y2FfYWdlbnQgKmFnZW50KTsNCj4+ICsNCj4+ICsjZWxzZQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxp bmUgc3RydWN0IG1seDVfaHZfdmhjYSAqDQo+PiArbWx4NV9odl92aGNhX2NyZWF0ZShzdHJ1Y3Qg bWx4NV9jb3JlX2RldiAqZGV2KQ0KPj4gK3sNCj4+ICsJcmV0dXJuIE5VTEw7DQo+PiArfQ0KPj4g Kw0KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBtbHg1X2h2X3ZoY2FfZGVzdHJveShzdHJ1Y3QgbWx4 NV9odl92aGNhICpodl92aGNhKQ0KPj4gK3sNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGlu ZSBpbnQgbWx4NV9odl92aGNhX2luaXQoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSkNCj4+ ICt7DQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQg bWx4NV9odl92aGNhX2NsZWFudXAoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSkNCj4+ICt7 DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBtbHg1X2h2X3ZoY2FfaW52YWxp ZGF0ZSh2b2lkICpjb250ZXh0LA0KPj4gKwkJCQkJICAgdTY0IGJsb2NrX21hc2spDQo+PiArew0K Pj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQg Kg0KPj4gK21seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZf dmhjYSwNCj4+ICsJCQkgIGVudW0gbWx4NV9odl92aGNhX2FnZW50X3R5cGUgdHlwZSwNCj4+ICsJ CQkgIHZvaWQgKCpjb250cm9sKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KiwNCj4+ICsJCQkJ CSAgc3RydWN0IG1seDVfaHZfdmhjYV9jb250cm9sX2Jsb2NrICpibG9jayksDQo+PiArCQkJICB2 b2lkICgqaW52YWxpZGF0ZSkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCosDQo+PiArCQkJCQkg ICAgIHU2NCBibG9ja19tYXNrKSwNCj4+ICsJCQkgIHZvaWQgKCpjbGVhbnVwKShzdHJ1Y3QgbWx4 NV9odl92aGNhX2FnZW50ICphZ2VudCksDQo+PiArCQkJICB2b2lkICpjb250ZXh0KQ0KPj4gK3sN Cj4+ICsJcmV0dXJuIE5VTEw7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBt bHg1X2h2X3ZoY2FfYWdlbnRfZGVzdHJveShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2Vu dCkNCj4+ICt7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+PiArbWx4NV9o dl92aGNhX3dyaXRlX2FnZW50KHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50LA0KPj4g KwkJCSB2b2lkICpidWYsIGludCBsZW4pDQo+PiArew0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+ PiArI2VuZGlmDQo+PiArDQo+PiArI2VuZGlmIC8qIF9fTElCX0hWX1ZIQ0FfSF9fICovDQo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4u YyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMNCj4+IGlu ZGV4IDRjYzkwZWIuLjUwZWUzOGIgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jDQo+PiArKysgYi9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jDQo+PiBAQCAtNjksNiArNjksNyBAQA0KPj4gICAj aW5jbHVkZSAibGliL3BjaV92c2MuaCINCj4+ICAgI2luY2x1ZGUgImRpYWcvZndfdHJhY2VyLmgi DQo+PiAgICNpbmNsdWRlICJlY3BmLmgiDQo+PiArI2luY2x1ZGUgImxpYi9odl92aGNhLmgiDQo+ PiAgIA0KPj4gICBNT0RVTEVfQVVUSE9SKCJFbGkgQ29oZW4gPGVsaUBtZWxsYW5veC5jb20+Iik7 DQo+PiAgIE1PRFVMRV9ERVNDUklQVElPTigiTWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29y ayBhZGFwdGVycyAoQ29ubmVjdFggc2VyaWVzKSBjb3JlIGRyaXZlciIpOw0KPj4gQEAgLTg3Miw2 ICs4NzMsNyBAQCBzdGF0aWMgaW50IG1seDVfaW5pdF9vbmNlKHN0cnVjdCBtbHg1X2NvcmVfZGV2 ICpkZXYpDQo+PiAgIAl9DQo+PiAgIA0KPj4gICAJZGV2LT50cmFjZXIgPSBtbHg1X2Z3X3RyYWNl cl9jcmVhdGUoZGV2KTsNCj4+ICsJZGV2LT5odl92aGNhID0gbWx4NV9odl92aGNhX2NyZWF0ZShk ZXYpOw0KPj4gICANCj4+ICAgCXJldHVybiAwOw0KPj4gICANCj4+IEBAIC05MDIsNiArOTA0LDcg QEAgc3RhdGljIGludCBtbHg1X2luaXRfb25jZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KQ0K Pj4gICANCj4+ICAgc3RhdGljIHZvaWQgbWx4NV9jbGVhbnVwX29uY2Uoc3RydWN0IG1seDVfY29y ZV9kZXYgKmRldikNCj4+ICAgew0KPj4gKwltbHg1X2h2X3ZoY2FfZGVzdHJveShkZXYtPmh2X3Zo Y2EpOw0KPj4gICAJbWx4NV9md190cmFjZXJfZGVzdHJveShkZXYtPnRyYWNlcik7DQo+PiAgIAlt bHg1X2ZwZ2FfY2xlYW51cChkZXYpOw0KPj4gICAJbWx4NV9lc3dpdGNoX2NsZWFudXAoZGV2LT5w cml2LmVzd2l0Y2gpOw0KPj4gQEAgLTEwNjgsNiArMTA3MSw4IEBAIHN0YXRpYyBpbnQgbWx4NV9s b2FkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpDQo+PiAgIAkJZ290byBlcnJfZndfdHJhY2Vy Ow0KPj4gICAJfQ0KPj4gICANCj4+ICsJbWx4NV9odl92aGNhX2luaXQoZGV2LT5odl92aGNhKTsN Cj4+ICsNCj4+ICAgCWVyciA9IG1seDVfZnBnYV9kZXZpY2Vfc3RhcnQoZGV2KTsNCj4+ICAgCWlm IChlcnIpIHsNCj4+ICAgCQltbHg1X2NvcmVfZXJyKGRldiwgImZwZ2EgZGV2aWNlIHN0YXJ0IGZh aWxlZCAlZFxuIiwgZXJyKTsNCj4+IEBAIC0xMTIzLDYgKzExMjgsNyBAQCBzdGF0aWMgaW50IG1s eDVfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KQ0KPj4gICBlcnJfaXBzZWNfc3RhcnQ6 DQo+PiAgIAltbHg1X2ZwZ2FfZGV2aWNlX3N0b3AoZGV2KTsNCj4+ICAgZXJyX2ZwZ2Ffc3RhcnQ6 DQo+PiArCW1seDVfaHZfdmhjYV9jbGVhbnVwKGRldi0+aHZfdmhjYSk7DQo+PiAgIAltbHg1X2Z3 X3RyYWNlcl9jbGVhbnVwKGRldi0+dHJhY2VyKTsNCj4+ICAgZXJyX2Z3X3RyYWNlcjoNCj4+ICAg CW1seDVfZXFfdGFibGVfZGVzdHJveShkZXYpOw0KPj4gQEAgLTExNDMsNiArMTE0OSw3IEBAIHN0 YXRpYyB2b2lkIG1seDVfdW5sb2FkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpDQo+PiAgIAlt bHg1X2FjY2VsX2lwc2VjX2NsZWFudXAoZGV2KTsNCj4+ICAgCW1seDVfYWNjZWxfdGxzX2NsZWFu dXAoZGV2KTsNCj4+ICAgCW1seDVfZnBnYV9kZXZpY2Vfc3RvcChkZXYpOw0KPj4gKwltbHg1X2h2 X3ZoY2FfY2xlYW51cChkZXYtPmh2X3ZoY2EpOw0KPj4gICAJbWx4NV9md190cmFjZXJfY2xlYW51 cChkZXYtPnRyYWNlcik7DQo+PiAgIAltbHg1X2VxX3RhYmxlX2Rlc3Ryb3koZGV2KTsNCj4+ICAg CW1seDVfaXJxX3RhYmxlX2Rlc3Ryb3koZGV2KTsNCj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L21seDUvZHJpdmVyLmggYi9pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgNCj4+IGluZGV4 IDJiODRlZTkuLjk3YmI5OGMgMTAwNjQ0DQo+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L21seDUvZHJp dmVyLmgNCj4+ICsrKyBiL2luY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaA0KPj4gQEAgLTY0Niw2 ICs2NDYsNyBAQCBzdHJ1Y3QgbWx4NV9jbG9jayB7DQo+PiAgIHN0cnVjdCBtbHg1X2Z3X3RyYWNl cjsNCj4+ICAgc3RydWN0IG1seDVfdnhsYW47DQo+PiAgIHN0cnVjdCBtbHg1X2dlbmV2ZTsNCj4+ ICtzdHJ1Y3QgbWx4NV9odl92aGNhOw0KPj4gICANCj4+ICAgc3RydWN0IG1seDVfY29yZV9kZXYg ew0KPj4gICAJc3RydWN0IGRldmljZSAqZGV2aWNlOw0KPj4gQEAgLTY5Myw2ICs2OTQsNyBAQCBz dHJ1Y3QgbWx4NV9jb3JlX2RldiB7DQo+PiAgIAlzdHJ1Y3QgbWx4NV9pYl9jbG9ja19pbmZvICAq Y2xvY2tfaW5mbzsNCj4+ICAgCXN0cnVjdCBtbHg1X2Z3X3RyYWNlciAgICp0cmFjZXI7DQo+PiAg IAl1MzIgICAgICAgICAgICAgICAgICAgICAgdnNjX2FkZHI7DQo+PiArCXN0cnVjdCBtbHg1X2h2 X3ZoY2EJKmh2X3ZoY2E7DQo+PiAgIH07DQo+PiAgIA0KPj4gICBzdHJ1Y3QgbWx4NV9kYiB7DQo+ Pg0K