From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1198EC433FF for ; Wed, 14 Aug 2019 20:42:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id BB3A62083B for ; Wed, 14 Aug 2019 20:42:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="NXH6oFJp" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729677AbfHNUmX (ORCPT ); Wed, 14 Aug 2019 16:42:23 -0400 Received: from mail-eopbgr70050.outbound.protection.outlook.com ([40.107.7.50]:49744 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728579AbfHNUmW (ORCPT ); Wed, 14 Aug 2019 16:42:22 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b4CgV8mCY1DlMbGeUcYK6N/c5OX2KWvzjT94nDD53qxxvsmhHbVcbIydKdIXFWPqjWgif7lSSJlp0FnRK8KwP+XLgcGw4wmM5uxBiqnmNdNVtVF0cqw6LbOH1cLfimbCpBosP5qzUWSYPIx5oR4wSIk5bD14AHlLfT07iRQjFE3yGAhv+LlTc5jOoh7r72+4YfeSg8T5rlf+h/4rvYtuOSAWQHrHvJslHhOVxv7fhpJcv8p/QUW3OBXhRljOd+v3+ieatsBBxZAV8HQj+JJm+tkvZ7QF5C9hLgVfPwUXPt7rajbzBY37WAMr1oyQxsqKUeyYElEdKyey92kBu0YQWQ== 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=hCDTb/tqGsWG1/bO+oWl3bGzFBlDEzuUBvwEgmHgcBk=; b=NbdstBVZQvuAeTheWHKZNF/MPCdcSaOgC8l7X7UH+7xQJvGZ5Z1gSKeSoVrKcCont1A3bahJI/YS1ZvMU6VqPtmDkW2LRQN9T1YGtxiqUwzyClPlttGZK+2SvDkQehRnvns2MEuengBrqaIZyRa1JHuJecoLWajWV7Q13+sOgOrVsEX2XBnOGuSgMFOGeikVidIGqlsr7y9GSnRCptuQ/hvbbM+vROHRQizosv4k3J71wODJR5hCqmpzLSkWCr3NdOog8e+dl/8oCt5/KW9CvA0jHDd4k+m7XcAT1b5XR50HTiAaXnjUVJ6NseQrjA8Hlqztc2eAMa7UDEba/PvzhA== 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=hCDTb/tqGsWG1/bO+oWl3bGzFBlDEzuUBvwEgmHgcBk=; b=NXH6oFJpLK+6XwxsRUBvZHdNcUVfku19hs0dmo2Biwgq3W6srT85b+CxCnRfO51dFOSh9+sqWxqLgzVz2v1cLKRbrl6XOh7b4f17gJiwUrfkhWzmewMZhOe4lEmBDAZ3dl4F2d5mpWs+j6SDD5FpG7B3t+kBBZGvxM97l1UbyAk= Received: from VI1PR05MB3342.eurprd05.prod.outlook.com (10.170.238.143) by VI1PR05MB5616.eurprd05.prod.outlook.com (20.177.203.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2157.20; Wed, 14 Aug 2019 20:41:37 +0000 Received: from VI1PR05MB3342.eurprd05.prod.outlook.com ([fe80::3195:8043:2057:2780]) by VI1PR05MB3342.eurprd05.prod.outlook.com ([fe80::3195:8043:2057:2780%6]) with mapi id 15.20.2157.022; Wed, 14 Aug 2019 20:41:37 +0000 From: Mark Bloch To: haiyangz , "sashal@kernel.org" , "davem@davemloft.net" , Saeed Mahameed , "leon@kernel.org" , Eran Ben Elisha , "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: AQHVUtPOerf8GKui70KzimjwYve61qb7G5wA Date: Wed, 14 Aug 2019 20:41:37 +0000 Message-ID: <65561e09-6fa5-b223-b547-36736c4a9d83@mellanox.com> References: <1565809632-39138-1-git-send-email-haiyangz@microsoft.com> <1565809632-39138-5-git-send-email-haiyangz@microsoft.com> In-Reply-To: <1565809632-39138-5-git-send-email-haiyangz@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: MWHPR04CA0052.namprd04.prod.outlook.com (2603:10b6:300:6c::14) To VI1PR05MB3342.eurprd05.prod.outlook.com (2603:10a6:802:1d::15) authentication-results: spf=none (sender IP is ) smtp.mailfrom=markb@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [208.186.24.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 50fd7d45-5ebb-45c8-4a8d-08d720f7cd8a x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:VI1PR05MB5616; x-ms-traffictypediagnostic: VI1PR05MB5616: 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: 01294F875B x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(376002)(136003)(366004)(396003)(346002)(39860400002)(199004)(189003)(6506007)(7416002)(110136005)(256004)(76176011)(14454004)(55236004)(25786009)(386003)(6116002)(54906003)(53546011)(2201001)(14444005)(4326008)(86362001)(52116002)(36756003)(6486002)(31686004)(186003)(229853002)(53936002)(6436002)(3846002)(81156014)(6246003)(66066001)(316002)(102836004)(31696002)(53946003)(26005)(478600001)(81166006)(305945005)(8936002)(7736002)(30864003)(11346002)(8676002)(486006)(2616005)(71190400001)(71200400001)(1511001)(64756008)(2906002)(2501003)(446003)(5660300002)(99286004)(66556008)(476003)(66476007)(66446008)(66946007)(6512007)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR05MB5616;H:VI1PR05MB3342.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: Q4Z43hv2LaJCYEWIvm2wDDkrcOf30yl6DvurpCZWSXOuWii+t1CxftwCmjJV6nmumT2qGRKo9Bsr1PzIinrKoFs0y3a34gejtKTfUpGIhGzrxEm7Gby+yqjKE6lFdLmIwrfGx/Ys3d9wU6+fy41AR95wI70QrMheWvbrI6OiQrL0m5pYbItLDsTX4DBquzgJTXtEErdMYhROO+QTao574cqwHSPKR4JcYBDsViPcl9efqaKZ7YFz37R2IUvAOk+FGsklmrptd/g9Zm5e0aUsv6yd3SdsjU606bYa1YCqEg+mCGWi4fxOkauvXwD3ojKexyAsplEfisIzWg1cb+RI6aCSjG5UlctkTNP9jIy2pC/4mZgYbZwN7rr8sRayqBQpmCRa+g3nbDUoN6gqmBzgTNkn1IZEzZMvV29Z0kGWfao= Content-Type: text/plain; charset="utf-8" Content-ID: <477BC2DF8793F7468943B50099245B2A@eurprd05.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 50fd7d45-5ebb-45c8-4a8d-08d720f7cd8a X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Aug 2019 20:41:37.5456 (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: zrdlOsG5qybiba5/1cp80WfViR06pTZA2GfgO6orXCoJvKOHmgh4HBGWqgbE2hdlMyZN55dkPkCumQGh7K+fAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5616 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCk9uIDgvMTQvMTkgMTI6MDggUE0sIEhhaXlhbmcgWmhhbmcgd3JvdGU6DQo+IEZyb206IEVy YW4gQmVuIEVsaXNoYSA8ZXJhbmJlQG1lbGxhbm94LmNvbT4NCj4gDQo+IEhWIFZIQ0EgaXMgYSBs YXllciB3aGljaCBwcm92aWRlcyBQRiB0byBWRiBjb21tdW5pY2F0aW9uIGNoYW5uZWwgYmFzZWQg b24NCj4gSHlwZXJWIFBDSSBjb25maWcgY2hhbm5lbC4gSXQgaW1wbGVtZW50cyBNZWxsYW5veCdz IEludGVyIFZIQ0EgY29udHJvbA0KPiBjb21tdW5pY2F0aW9uIHByb3RvY29sLiBUaGUgcHJvdG9j b2wgY29udGFpbnMgY29udHJvbCBibG9jayBpbiBvcmRlciB0bw0KPiBwYXNzIG1lc3NhZ2VzIGJl dHdlZW4gdGhlIFBGIGFuZCBWRiBkcml2ZXJzLCBhbmQgZGF0YSBibG9ja3MgaW4gb3JkZXIgdG8N Cj4gcGFzcyBhY3R1YWwgZGF0YS4NCj4gDQo+IFRoZSBpbmZyYXN0cnVjdHVyZSBpcyBhZ2VudCBi YXNlZC4gRWFjaCBhZ2VudCB3aWxsIGJlIHJlc3BvbnNpYmxlIG9mDQo+IGNvbnRpZ3VvdXMgYnVm ZmVyIGJsb2NrcyBpbiB0aGUgVkhDQSBjb25maWcgc3BhY2UuIFRoaXMgaW5mcmFzdHJ1Y3R1cmUg d2lsbA0KPiBiaW5kIGFnZW50cyB0byB0aGVpciBibG9ja3MsIGFuZCB0aG9zZSBhZ2VudHMgY2Fu IG9ubHkgYWNjZXNzIHJlYWQvd3JpdGUNCj4gdGhlIGJ1ZmZlciBibG9ja3MgYXNzaWduZWQgdG8g dGhlbS4gRWFjaCBhZ2VudCB3aWxsIHByb3ZpZGUgdGhyZWUNCj4gY2FsbGJhY2tzIChjb250cm9s LCBpbnZhbGlkYXRlLCBjbGVhbnVwKS4gQ29udHJvbCB3aWxsIGJlIGludm9rZWQgd2hlbg0KPiBi bG9jay0wIGlzIGludmFsaWRhdGVkIHdpdGggYSBjb21tYW5kIHRoYXQgY29uY2VybnMgdGhpcyBh Z2VudC4gSW52YWxpZGF0ZQ0KPiBjYWxsYmFjayB3aWxsIGJlIGludm9rZWQgaWYgb25lIG9mIHRo ZSBibG9ja3MgYXNzaWduZWQgdG8gdGhpcyBhZ2VudCB3YXMNCj4gaW52YWxpZGF0ZWQuIENsZWFu dXAgd2lsbCBiZSBpbnZva2VkIGJlZm9yZSB0aGUgYWdlbnQgaXMgYmVpbmcgZnJlZWQgaW4NCj4g b3JkZXIgdG8gY2xlYW4gYWxsIG9mIGl0cyBvcGVuIHJlc291cmNlcyBvciBkZWZlcnJlZCB3b3Jr cy4NCj4gDQo+IEJsb2NrLTAgc2VydmVzIGFzIHRoZSBjb250cm9sIGJsb2NrLiBBbGwgZXhlY3V0 aW9uIGNvbW1hbmRzIGZyb20gdGhlIFBGDQo+IHdpbGwgYmUgd3JpdHRlbiBieSB0aGUgUEYgb3Zl ciB0aGlzIGJsb2NrLiBWRiB3aWxsIGFjayBvbiB0aG9zZSBieQ0KPiB3cml0aW5nIG9uIGJsb2Nr LTAgYXMgd2VsbC4gSXRzIGZvcm1hdCBpcyBkZXNjcmliZWQgYnkgc3RydWN0DQo+IG1seDVfaHZf dmhjYV9jb250cm9sX2Jsb2NrIGxheW91dC4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEVyYW4gQmVu IEVsaXNoYSA8ZXJhbmJlQG1lbGxhbm94LmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogU2FlZWQgTWFo YW1lZWQgPHNhZWVkbUBtZWxsYW5veC5jb20+DQo+IC0tLQ0KPiAgZHJpdmVycy9uZXQvZXRoZXJu ZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlICAgfCAgIDIgKy0NCj4gIC4uLi9uZXQvZXRo ZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmMgIHwgMjQ3ICsrKysrKysrKysr KysrKysrKysrKw0KPiAgLi4uL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2 X3ZoY2EuaCAgfCAxMDIgKysrKysrKysrDQo+ICBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5v eC9tbHg1L2NvcmUvbWFpbi5jICAgICB8ICAgNyArDQo+ICBpbmNsdWRlL2xpbnV4L21seDUvZHJp dmVyLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArDQo+ICA1IGZpbGVzIGNoYW5nZWQs IDM1OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmMNCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2Nv cmUvbGliL2h2X3ZoY2EuaA0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0 L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxh bm94L21seDUvY29yZS9NYWtlZmlsZQ0KPiBpbmRleCBhODk1MGIxLi5lMGExMDU2IDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUN Cj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxl DQo+IEBAIC00NSw3ICs0NSw3IEBAIG1seDVfY29yZS0kKENPTkZJR19NTFg1X0VTV0lUQ0gpICAg Kz0gZXN3aXRjaC5vIGVzd2l0Y2hfb2ZmbG9hZHMubyBlc3dpdGNoX29mZmxvDQo+ICBtbHg1X2Nv cmUtJChDT05GSUdfTUxYNV9NUEZTKSAgICAgICs9IGxpYi9tcGZzLm8NCj4gIG1seDVfY29yZS0k KENPTkZJR19WWExBTikgICAgICAgICAgKz0gbGliL3Z4bGFuLm8NCj4gIG1seDVfY29yZS0kKENP TkZJR19QVFBfMTU4OF9DTE9DSykgKz0gbGliL2Nsb2NrLm8NCj4gLW1seDVfY29yZS0kKENPTkZJ R19QQ0lfSFlQRVJWX01JTkkpICAgICArPSBsaWIvaHYubw0KPiArbWx4NV9jb3JlLSQoQ09ORklH X1BDSV9IWVBFUlZfTUlOSSkrPSBsaWIvaHYubyBsaWIvaHZfdmhjYS5vDQo+ICANCj4gICMNCj4g ICMgSXBvaWIgbmV0ZGV2DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxh bm94L21seDUvY29yZS9saWIvaHZfdmhjYS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAuLmIyZWViZGYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuYw0KPiBAQCAtMCwwICsx LDI0NyBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTGludXgt T3BlbklCDQo+ICsvLyBDb3B5cmlnaHQgKGMpIDIwMTggTWVsbGFub3ggVGVjaG5vbG9naWVzDQo+ ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9oeXBlcnYuaD4NCj4gKyNpbmNsdWRlICJtbHg1X2NvcmUu aCINCj4gKyNpbmNsdWRlICJsaWIvaHYuaCINCj4gKyNpbmNsdWRlICJsaWIvaHZfdmhjYS5oIg0K PiArDQo+ICtzdHJ1Y3QgbWx4NV9odl92aGNhIHsNCj4gKwlzdHJ1Y3QgbWx4NV9jb3JlX2RldiAg ICAgICAqZGV2Ow0KPiArCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICAgICp3b3JrX3F1ZXVlOw0K PiArCXN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgICphZ2VudHNbTUxYNV9IVl9WSENBX0FHRU5U X01BWF07DQo+ICsJc3RydWN0IG11dGV4ICAgICAgICAgICAgICAgIGFnZW50c19sb2NrOyAvKiBQ cm90ZWN0IGFnZW50cyBhcnJheSAqLw0KPiArfTsNCj4gKw0KPiArc3RydWN0IG1seDVfaHZfdmhj YV93b3JrIHsNCj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgICAgIGludmFsaWRhdGVfd29yazsNCj4g KwlzdHJ1Y3QgbWx4NV9odl92aGNhICAgKmh2X3ZoY2E7DQo+ICsJdTY0ICAgICAgICAgICAgICAg ICAgICBibG9ja19tYXNrOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IG1seDVfaHZfdmhjYV9kYXRh X2Jsb2NrIHsNCj4gKwl1MTYgICAgIHNlcXVlbmNlOw0KPiArCXUxNiAgICAgb2Zmc2V0Ow0KPiAr CXU4ICAgICAgcmVzZXJ2ZWRbNF07DQo+ICsJdTY0ICAgICBkYXRhWzE1XTsNCj4gK307DQo+ICsN Cj4gK3N0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgew0KPiArCWVudW0gbWx4NV9odl92aGNhX2Fn ZW50X3R5cGUJIHR5cGU7DQo+ICsJc3RydWN0IG1seDVfaHZfdmhjYQkJKmh2X3ZoY2E7DQo+ICsJ dm9pZAkJCQkqcHJpdjsNCj4gKwlpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXE7 DQpXaHkgaXMgdGhpcyBpbnQ/IGFuZCBpbiBkYXRhIGJsb2NrIGlzIHUxNj8NCg0KPiArCXZvaWQg KCpjb250cm9sKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCwNCj4gKwkJCXN0cnVj dCBtbHg1X2h2X3ZoY2FfY29udHJvbF9ibG9jayAqYmxvY2spOw0KPiArCXZvaWQgKCppbnZhbGlk YXRlKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCwNCj4gKwkJCSAgIHU2NCBibG9j a19tYXNrKTsNCj4gKwl2b2lkICgqY2xlYW51cCkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAq YWdlbnQpOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IG1seDVfaHZfdmhjYSAqbWx4NV9odl92aGNh X2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KQ0KPiArew0KPiArCXN0cnVjdCBtbHg1 X2h2X3ZoY2EgKmh2X3ZoY2EgPSBOVUxMOw0KPiArDQo+ICsJaHZfdmhjYSA9IGt6YWxsb2Moc2l6 ZW9mKCpodl92aGNhKSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFodl92aGNhKQ0KPiArCQlyZXR1 cm4gRVJSX1BUUigtRU5PTUVNKTsNCj4gKw0KPiArCWh2X3ZoY2EtPndvcmtfcXVldWUgPSBjcmVh dGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSgibWx4NV9odl92aGNhIik7DQo+ICsJaWYgKCFodl92 aGNhLT53b3JrX3F1ZXVlKSB7DQo+ICsJCWtmcmVlKGh2X3ZoY2EpOw0KPiArCQlyZXR1cm4gRVJS X1BUUigtRU5PTUVNKTsNCj4gKwl9DQo+ICsNCj4gKwlodl92aGNhLT5kZXYgPSBkZXY7DQo+ICsJ bXV0ZXhfaW5pdCgmaHZfdmhjYS0+YWdlbnRzX2xvY2spOw0KPiArDQo+ICsJcmV0dXJuIGh2X3Zo Y2E7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgbWx4NV9odl92aGNhX2Rlc3Ryb3koc3RydWN0IG1seDVf aHZfdmhjYSAqaHZfdmhjYSkNCj4gK3sNCj4gKwlpZiAoSVNfRVJSX09SX05VTEwoaHZfdmhjYSkp DQo+ICsJCXJldHVybjsNCj4gKw0KPiArCWZsdXNoX3dvcmtxdWV1ZShodl92aGNhLT53b3JrX3F1 ZXVlKTsNCj4gKwlkZXN0cm95X3dvcmtxdWV1ZShodl92aGNhLT53b3JrX3F1ZXVlKTsNCg0KV2h5 IG5vdCBqdXN0IGRlc3Ryb3k/DQoNCj4gKwlrZnJlZShodl92aGNhKTsNCj4gK30NCj4gKw0KPiAr c3RhdGljIHZvaWQgbWx4NV9odl92aGNhX2ludmFsaWRhdGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspDQo+ICt7DQo+ICsJc3RydWN0IG1seDVfaHZfdmhjYV93b3JrICpod29yazsNCj4g KwlzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhOw0KPiArCWludCBpOw0KPiArDQo+ICsJaHdv cmsgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG1seDVfaHZfdmhjYV93b3JrLCBpbnZhbGlk YXRlX3dvcmspOw0KPiArCWh2X3ZoY2EgPSBod29yay0+aHZfdmhjYTsNCj4gKw0KPiArCW11dGV4 X2xvY2soJmh2X3ZoY2EtPmFnZW50c19sb2NrKTsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgTUxYNV9I Vl9WSENBX0FHRU5UX01BWDsgaSsrKSB7DQo+ICsJCXN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQg KmFnZW50ID0gaHZfdmhjYS0+YWdlbnRzW2ldOw0KPiArDQo+ICsJCWlmICghYWdlbnQgfHwgIWFn ZW50LT5pbnZhbGlkYXRlKQ0KPiArCQkJY29udGludWU7DQo+ICsNCj4gKwkJaWYgKCEoQklUKGFn ZW50LT50eXBlKSAmIGh3b3JrLT5ibG9ja19tYXNrKSkNCj4gKwkJCWNvbnRpbnVlOw0KPiArDQo+ ICsJCWFnZW50LT5pbnZhbGlkYXRlKGFnZW50LCBod29yay0+YmxvY2tfbWFzayk7DQo+ICsJfQ0K PiArCW11dGV4X3VubG9jaygmaHZfdmhjYS0+YWdlbnRzX2xvY2spOw0KPiArDQo+ICsJa2ZyZWUo aHdvcmspOw0KPiArfQ0KPiArDQo+ICt2b2lkIG1seDVfaHZfdmhjYV9pbnZhbGlkYXRlKHZvaWQg KmNvbnRleHQsIHU2NCBibG9ja19tYXNrKQ0KPiArew0KPiArCXN0cnVjdCBtbHg1X2h2X3ZoY2Eg Kmh2X3ZoY2EgPSAoc3RydWN0IG1seDVfaHZfdmhjYSAqKWNvbnRleHQ7DQo+ICsJc3RydWN0IG1s eDVfaHZfdmhjYV93b3JrICp3b3JrOw0KPiArDQo+ICsJd29yayA9IGt6YWxsb2Moc2l6ZW9mKCp3 b3JrKSwgR0ZQX0FUT01JQyk7DQo+ICsJaWYgKCF3b3JrKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4g KwlJTklUX1dPUksoJndvcmstPmludmFsaWRhdGVfd29yaywgbWx4NV9odl92aGNhX2ludmFsaWRh dGVfd29yayk7DQo+ICsJd29yay0+aHZfdmhjYSAgICA9IGh2X3ZoY2E7DQo+ICsJd29yay0+Ymxv Y2tfbWFzayA9IGJsb2NrX21hc2s7DQo+ICsNCj4gKwlxdWV1ZV93b3JrKGh2X3ZoY2EtPndvcmtf cXVldWUsICZ3b3JrLT5pbnZhbGlkYXRlX3dvcmspOw0KPiArfQ0KPiArDQo+ICtpbnQgbWx4NV9o dl92aGNhX2luaXQoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSkNCj4gK3sNCj4gKwlpZiAo SVNfRVJSX09SX05VTEwoaHZfdmhjYSkpDQo+ICsJCXJldHVybiBJU19FUlJfT1JfTlVMTChodl92 aGNhKTsNCj4gKw0KPiArCXJldHVybiBtbHg1X2h2X3JlZ2lzdGVyX2ludmFsaWRhdGUoaHZfdmhj YS0+ZGV2LCBodl92aGNhLA0KPiArCQkJCQkgICBtbHg1X2h2X3ZoY2FfaW52YWxpZGF0ZSk7DQo+ ICt9DQo+ICsNCj4gK3ZvaWQgbWx4NV9odl92aGNhX2NsZWFudXAoc3RydWN0IG1seDVfaHZfdmhj YSAqaHZfdmhjYSkNCj4gK3sNCj4gKwlpbnQgaTsNCj4gKw0KPiArCWlmIChJU19FUlJfT1JfTlVM TChodl92aGNhKSkNCj4gKwkJcmV0dXJuOw0KPiArDQo+ICsJbXV0ZXhfbG9jaygmaHZfdmhjYS0+ YWdlbnRzX2xvY2spOw0KPiArCWZvciAoaSA9IDA7IGkgPCBNTFg1X0hWX1ZIQ0FfQUdFTlRfTUFY OyBpKyspDQo+ICsJCVdBUk5fT04oaHZfdmhjYS0+YWdlbnRzW2ldKTsNCj4gKw0KPiArCW11dGV4 X3VubG9jaygmaHZfdmhjYS0+YWdlbnRzX2xvY2spOw0KPiArDQo+ICsJbWx4NV9odl91bnJlZ2lz dGVyX2ludmFsaWRhdGUoaHZfdmhjYS0+ZGV2KTsNCj4gK30NCj4gKw0KPiArc3RydWN0IG1seDVf aHZfdmhjYV9hZ2VudCAqDQo+ICttbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1 X2h2X3ZoY2EgKmh2X3ZoY2EsDQo+ICsJCQkgIGVudW0gbWx4NV9odl92aGNhX2FnZW50X3R5cGUg dHlwZSwNCj4gKwkJCSAgdm9pZCAoKmNvbnRyb2wpKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQq LA0KPiArCQkJCQkgIHN0cnVjdCBtbHg1X2h2X3ZoY2FfY29udHJvbF9ibG9jayAqYmxvY2spLA0K PiArCQkJICB2b2lkICgqaW52YWxpZGF0ZSkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCosDQo+ ICsJCQkJCSAgICAgdTY0IGJsb2NrX21hc2spLA0KPiArCQkJICB2b2lkICgqY2xlYXVwKShzdHJ1 Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCksDQo+ICsJCQkgIHZvaWQgKnByaXYpDQo+ICt7 DQo+ICsJc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQ7DQo+ICsNCj4gKwlpZiAoSVNf RVJSX09SX05VTEwoaHZfdmhjYSkpDQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOw0KPiAr DQo+ICsJaWYgKGh2X3ZoY2EtPmFnZW50c1t0eXBlXSkNCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVJ TlZBTCk7PiArDQo+ICsJYWdlbnQgPSBremFsbG9jKHNpemVvZigqYWdlbnQpLCBHRlBfS0VSTkVM KTsNCj4gKwlpZiAoIWFnZW50KQ0KPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsNCj4gKw0K PiArCWFnZW50LT50eXBlICAgICAgPSB0eXBlOw0KPiArCWFnZW50LT5odl92aGNhICAgPSBodl92 aGNhOw0KPiArCWFnZW50LT5wcml2ICAgICAgPSBwcml2Ow0KPiArCWFnZW50LT5jb250cm9sICAg PSBjb250cm9sOw0KPiArCWFnZW50LT5pbnZhbGlkYXRlID0gaW52YWxpZGF0ZTsNCj4gKwlhZ2Vu dC0+Y2xlYW51cCAgID0gY2xlYXVwOw0KPiArDQo+ICsJbXV0ZXhfbG9jaygmaHZfdmhjYS0+YWdl bnRzX2xvY2spOw0KPiArCWh2X3ZoY2EtPmFnZW50c1t0eXBlXSA9IGFnZW50Ow0KPiArCW11dGV4 X3VubG9jaygmaHZfdmhjYS0+YWdlbnRzX2xvY2spOw0KDQpZb3UgaGF2ZSBhIGNoZWNrIGZvciB0 aGlzIG5vdCB1bmRlciBhIGxvY2sgYSBmZXcgbGluZXMgdXAsDQpidXQgYXNzaWduIHVuZGVyIGEg bG9jaz8NCg0KTWFyaw0KDQo+ICsNCj4gKwlyZXR1cm4gYWdlbnQ7DQo+ICt9DQo+ICsNCj4gK3Zv aWQgbWx4NV9odl92aGNhX2FnZW50X2Rlc3Ryb3koc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAq YWdlbnQpDQo+ICt7DQo+ICsJc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSA9IGFnZW50LT5o dl92aGNhOw0KPiArDQo+ICsJbXV0ZXhfbG9jaygmaHZfdmhjYS0+YWdlbnRzX2xvY2spOw0KPiAr DQo+ICsJaWYgKFdBUk5fT04oYWdlbnQgIT0gaHZfdmhjYS0+YWdlbnRzW2FnZW50LT50eXBlXSkp IHsNCj4gKwkJbXV0ZXhfdW5sb2NrKCZodl92aGNhLT5hZ2VudHNfbG9jayk7DQo+ICsJCXJldHVy bjsNCj4gKwl9DQo+ICsNCj4gKwlodl92aGNhLT5hZ2VudHNbYWdlbnQtPnR5cGVdID0gTlVMTDsN Cj4gKwltdXRleF91bmxvY2soJmh2X3ZoY2EtPmFnZW50c19sb2NrKTsNCj4gKw0KPiArCWlmIChh Z2VudC0+Y2xlYW51cCkNCj4gKwkJYWdlbnQtPmNsZWFudXAoYWdlbnQpOw0KPiArDQo+ICsJa2Zy ZWUoYWdlbnQpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IG1seDVfaHZfdmhjYV9kYXRhX2Js b2NrX3ByZXBhcmUoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQsDQo+ICsJCQkJCSAg IHN0cnVjdCBtbHg1X2h2X3ZoY2FfZGF0YV9ibG9jayAqZGF0YV9ibG9jaywNCj4gKwkJCQkJICAg dm9pZCAqc3JjLCBpbnQgbGVuLCBpbnQgKm9mZnNldCkNCj4gK3sNCj4gKwlpbnQgYnl0ZXMgPSBt aW5fdChpbnQsIChpbnQpc2l6ZW9mKGRhdGFfYmxvY2stPmRhdGEpLCBsZW4pOw0KPiArDQo+ICsJ ZGF0YV9ibG9jay0+c2VxdWVuY2UgPSBhZ2VudC0+c2VxOw0KPiArCWRhdGFfYmxvY2stPm9mZnNl dCAgID0gKCpvZmZzZXQpKys7DQo+ICsJbWVtY3B5KGRhdGFfYmxvY2stPmRhdGEsIHNyYywgYnl0 ZXMpOw0KPiArDQo+ICsJcmV0dXJuIGJ5dGVzOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBt bHg1X2h2X3ZoY2FfYWdlbnRfc2VxX3VwZGF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICph Z2VudCkNCj4gK3sNCj4gKwlhZ2VudC0+c2VxKys7DQo+ICt9DQo+ICsNCj4gK2ludCBtbHg1X2h2 X3ZoY2FfYWdlbnRfd3JpdGUoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQsDQo+ICsJ CQkgICAgIHZvaWQgKmJ1ZiwgaW50IGxlbikNCj4gK3sNCj4gKwlpbnQgb2Zmc2V0ID0gYWdlbnQt PnR5cGUgKiBIVl9DT05GSUdfQkxPQ0tfU0laRV9NQVg7DQo+ICsJaW50IGJsb2NrX29mZnNldCA9 IDA7DQo+ICsJaW50IHRvdGFsID0gMDsNCj4gKwlpbnQgZXJyOw0KPiArDQo+ICsJd2hpbGUgKGxl bikgew0KPiArCQlzdHJ1Y3QgbWx4NV9odl92aGNhX2RhdGFfYmxvY2sgZGF0YV9ibG9jayA9IHsw fTsNCj4gKwkJaW50IGJ5dGVzOw0KPiArDQo+ICsJCWJ5dGVzID0gbWx4NV9odl92aGNhX2RhdGFf YmxvY2tfcHJlcGFyZShhZ2VudCwgJmRhdGFfYmxvY2ssDQo+ICsJCQkJCQkJYnVmICsgdG90YWws DQo+ICsJCQkJCQkJbGVuLCAmYmxvY2tfb2Zmc2V0KTsNCj4gKwkJaWYgKCFieXRlcykNCj4gKwkJ CXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJCWVyciA9IG1seDVfaHZfd3JpdGVfY29uZmlnKGFn ZW50LT5odl92aGNhLT5kZXYsICZkYXRhX2Jsb2NrLA0KPiArCQkJCQkgICBzaXplb2YoZGF0YV9i bG9jayksIG9mZnNldCk7DQo+ICsJCWlmIChlcnIpDQo+ICsJCQlyZXR1cm4gZXJyOw0KPiArDQo+ ICsJCXRvdGFsICs9IGJ5dGVzOw0KPiArCQlsZW4gICAtPSBieXRlczsNCj4gKwl9DQo+ICsNCj4g KwltbHg1X2h2X3ZoY2FfYWdlbnRfc2VxX3VwZGF0ZShhZ2VudCk7DQo+ICsNCj4gKwlyZXR1cm4g MDsNCj4gK30NCj4gKw0KPiArdm9pZCAqbWx4NV9odl92aGNhX2FnZW50X3ByaXYoc3RydWN0IG1s eDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpDQo+ICt7DQo+ICsJcmV0dXJuIGFnZW50LT5wcml2Ow0K PiArfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9j b3JlL2xpYi9odl92aGNhLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2Nv cmUvbGliL2h2X3ZoY2EuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAw Li5mYTdlZTg1DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQv bWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmgNCj4gQEAgLTAsMCArMSwxMDIgQEANCj4g Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIExpbnV4LU9wZW5JQiAqLw0K PiArLyogQ29weXJpZ2h0IChjKSAyMDE5IE1lbGxhbm94IFRlY2hub2xvZ2llcy4gKi8NCj4gKw0K PiArI2lmbmRlZiBfX0xJQl9IVl9WSENBX0hfXw0KPiArI2RlZmluZSBfX0xJQl9IVl9WSENBX0hf Xw0KPiArDQo+ICsjaW5jbHVkZSAiZW4uaCINCj4gKyNpbmNsdWRlICJsaWIvaHYuaCINCj4gKw0K PiArc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudDsNCj4gK3N0cnVjdCBtbHg1X2h2X3ZoY2E7DQo+ ICtzdHJ1Y3QgbWx4NV9odl92aGNhX2NvbnRyb2xfYmxvY2s7DQo+ICsNCj4gK2VudW0gbWx4NV9o dl92aGNhX2FnZW50X3R5cGUgew0KPiArCU1MWDVfSFZfVkhDQV9BR0VOVF9NQVggPSAzMiwNCj4g K307DQo+ICsNCj4gKyNpZiBJU19FTkFCTEVEKENPTkZJR19QQ0lfSFlQRVJWX01JTkkpDQo+ICsN Cj4gK3N0cnVjdCBtbHg1X2h2X3ZoY2FfY29udHJvbF9ibG9jayB7DQo+ICsJdTMyICAgICBjYXBh YmlsaXRpZXM7DQo+ICsJdTMyICAgICBjb250cm9sOw0KPiArCXUxNiAgICAgY29tbWFuZDsNCj4g Kwl1MTYgICAgIGNvbW1hbmRfYWNrOw0KPiArCXUxNiAgICAgdmVyc2lvbjsNCj4gKwl1MTYgICAg IHJpbmdzOw0KPiArCXUzMiAgICAgcmVzZXJ2ZWQxWzI4XTsNCj4gK307DQo+ICsNCj4gK3N0cnVj dCBtbHg1X2h2X3ZoY2EgKm1seDVfaHZfdmhjYV9jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYg KmRldik7DQo+ICt2b2lkIG1seDVfaHZfdmhjYV9kZXN0cm95KHN0cnVjdCBtbHg1X2h2X3ZoY2Eg Kmh2X3ZoY2EpOw0KPiAraW50IG1seDVfaHZfdmhjYV9pbml0KHN0cnVjdCBtbHg1X2h2X3ZoY2Eg Kmh2X3ZoY2EpOw0KPiArdm9pZCBtbHg1X2h2X3ZoY2FfY2xlYW51cChzdHJ1Y3QgbWx4NV9odl92 aGNhICpodl92aGNhKTsNCj4gK3ZvaWQgbWx4NV9odl92aGNhX2ludmFsaWRhdGUodm9pZCAqY29u dGV4dCwgdTY0IGJsb2NrX21hc2spOw0KPiArDQo+ICtzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50 ICoNCj4gK21seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZf dmhjYSwNCj4gKwkJCSAgZW51bSBtbHg1X2h2X3ZoY2FfYWdlbnRfdHlwZSB0eXBlLA0KPiArCQkJ ICB2b2lkICgqY29udHJvbCkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCosDQo+ICsJCQkJCSAg c3RydWN0IG1seDVfaHZfdmhjYV9jb250cm9sX2Jsb2NrICpibG9jayksDQo+ICsJCQkgIHZvaWQg KCppbnZhbGlkYXRlKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KiwNCj4gKwkJCQkJICAgICB1 NjQgYmxvY2tfbWFzayksDQo+ICsJCQkgIHZvaWQgKCpjbGVhbnVwKShzdHJ1Y3QgbWx4NV9odl92 aGNhX2FnZW50ICphZ2VudCksDQo+ICsJCQkgIHZvaWQgKmNvbnRleHQpOw0KPiArDQo+ICt2b2lk IG1seDVfaHZfdmhjYV9hZ2VudF9kZXN0cm95KHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFn ZW50KTsNCj4gK2ludCBtbHg1X2h2X3ZoY2FfYWdlbnRfd3JpdGUoc3RydWN0IG1seDVfaHZfdmhj YV9hZ2VudCAqYWdlbnQsDQo+ICsJCQkgICAgIHZvaWQgKmJ1ZiwgaW50IGxlbik7DQo+ICt2b2lk ICptbHg1X2h2X3ZoY2FfYWdlbnRfcHJpdihzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2Vu dCk7DQo+ICsNCj4gKyNlbHNlDQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IG1seDVfaHZf dmhjYSAqDQo+ICttbHg1X2h2X3ZoY2FfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYp DQo+ICt7DQo+ICsJcmV0dXJuIE5VTEw7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9p ZCBtbHg1X2h2X3ZoY2FfZGVzdHJveShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhKQ0KPiAr ew0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIGludCBtbHg1X2h2X3ZoY2FfaW5pdChzdHJ1 Y3QgbWx4NV9odl92aGNhICpodl92aGNhKQ0KPiArew0KPiArCXJldHVybiAwOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgbWx4NV9odl92aGNhX2NsZWFudXAoc3RydWN0IG1seDVf aHZfdmhjYSAqaHZfdmhjYSkNCj4gK3sNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSB2b2lk IG1seDVfaHZfdmhjYV9pbnZhbGlkYXRlKHZvaWQgKmNvbnRleHQsDQo+ICsJCQkJCSAgIHU2NCBi bG9ja19tYXNrKQ0KPiArew0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBtbHg1 X2h2X3ZoY2FfYWdlbnQgKg0KPiArbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4 NV9odl92aGNhICpodl92aGNhLA0KPiArCQkJICBlbnVtIG1seDVfaHZfdmhjYV9hZ2VudF90eXBl IHR5cGUsDQo+ICsJCQkgIHZvaWQgKCpjb250cm9sKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50 KiwNCj4gKwkJCQkJICBzdHJ1Y3QgbWx4NV9odl92aGNhX2NvbnRyb2xfYmxvY2sgKmJsb2NrKSwN Cj4gKwkJCSAgdm9pZCAoKmludmFsaWRhdGUpKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQqLA0K PiArCQkJCQkgICAgIHU2NCBibG9ja19tYXNrKSwNCj4gKwkJCSAgdm9pZCAoKmNsZWFudXApKHN0 cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50KSwNCj4gKwkJCSAgdm9pZCAqY29udGV4dCkN Cj4gK3sNCj4gKwlyZXR1cm4gTlVMTDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSB2b2lk IG1seDVfaHZfdmhjYV9hZ2VudF9kZXN0cm95KHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFn ZW50KQ0KPiArew0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIGludA0KPiArbWx4NV9odl92 aGNhX3dyaXRlX2FnZW50KHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50LA0KPiArCQkJ IHZvaWQgKmJ1ZiwgaW50IGxlbikNCj4gK3sNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKyNlbmRp Zg0KPiArDQo+ICsjZW5kaWYgLyogX19MSUJfSFZfVkhDQV9IX18gKi8NCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jDQo+IGluZGV4IDRjYzkwZWIu LjUwZWUzOGIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDUvY29yZS9tYWluLmMNCj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NS9jb3JlL21haW4uYw0KPiBAQCAtNjksNiArNjksNyBAQA0KPiAgI2luY2x1ZGUgImxpYi9wY2lf dnNjLmgiDQo+ICAjaW5jbHVkZSAiZGlhZy9md190cmFjZXIuaCINCj4gICNpbmNsdWRlICJlY3Bm LmgiDQo+ICsjaW5jbHVkZSAibGliL2h2X3ZoY2EuaCINCj4gIA0KPiAgTU9EVUxFX0FVVEhPUigi RWxpIENvaGVuIDxlbGlAbWVsbGFub3guY29tPiIpOw0KPiAgTU9EVUxFX0RFU0NSSVBUSU9OKCJN ZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMp IGNvcmUgZHJpdmVyIik7DQo+IEBAIC04NzIsNiArODczLDcgQEAgc3RhdGljIGludCBtbHg1X2lu aXRfb25jZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KQ0KPiAgCX0NCj4gIA0KPiAgCWRldi0+ dHJhY2VyID0gbWx4NV9md190cmFjZXJfY3JlYXRlKGRldik7DQo+ICsJZGV2LT5odl92aGNhID0g bWx4NV9odl92aGNhX2NyZWF0ZShkZXYpOw0KPiAgDQo+ICAJcmV0dXJuIDA7DQo+ICANCj4gQEAg LTkwMiw2ICs5MDQsNyBAQCBzdGF0aWMgaW50IG1seDVfaW5pdF9vbmNlKHN0cnVjdCBtbHg1X2Nv cmVfZGV2ICpkZXYpDQo+ICANCj4gIHN0YXRpYyB2b2lkIG1seDVfY2xlYW51cF9vbmNlKHN0cnVj dCBtbHg1X2NvcmVfZGV2ICpkZXYpDQo+ICB7DQo+ICsJbWx4NV9odl92aGNhX2Rlc3Ryb3koZGV2 LT5odl92aGNhKTsNCj4gIAltbHg1X2Z3X3RyYWNlcl9kZXN0cm95KGRldi0+dHJhY2VyKTsNCj4g IAltbHg1X2ZwZ2FfY2xlYW51cChkZXYpOw0KPiAgCW1seDVfZXN3aXRjaF9jbGVhbnVwKGRldi0+ cHJpdi5lc3dpdGNoKTsNCj4gQEAgLTEwNjgsNiArMTA3MSw4IEBAIHN0YXRpYyBpbnQgbWx4NV9s b2FkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpDQo+ICAJCWdvdG8gZXJyX2Z3X3RyYWNlcjsN Cj4gIAl9DQo+ICANCj4gKwltbHg1X2h2X3ZoY2FfaW5pdChkZXYtPmh2X3ZoY2EpOw0KPiArDQo+ ICAJZXJyID0gbWx4NV9mcGdhX2RldmljZV9zdGFydChkZXYpOw0KPiAgCWlmIChlcnIpIHsNCj4g IAkJbWx4NV9jb3JlX2VycihkZXYsICJmcGdhIGRldmljZSBzdGFydCBmYWlsZWQgJWRcbiIsIGVy cik7DQo+IEBAIC0xMTIzLDYgKzExMjgsNyBAQCBzdGF0aWMgaW50IG1seDVfbG9hZChzdHJ1Y3Qg bWx4NV9jb3JlX2RldiAqZGV2KQ0KPiAgZXJyX2lwc2VjX3N0YXJ0Og0KPiAgCW1seDVfZnBnYV9k ZXZpY2Vfc3RvcChkZXYpOw0KPiAgZXJyX2ZwZ2Ffc3RhcnQ6DQo+ICsJbWx4NV9odl92aGNhX2Ns ZWFudXAoZGV2LT5odl92aGNhKTsNCj4gIAltbHg1X2Z3X3RyYWNlcl9jbGVhbnVwKGRldi0+dHJh Y2VyKTsNCj4gIGVycl9md190cmFjZXI6DQo+ICAJbWx4NV9lcV90YWJsZV9kZXN0cm95KGRldik7 DQo+IEBAIC0xMTQzLDYgKzExNDksNyBAQCBzdGF0aWMgdm9pZCBtbHg1X3VubG9hZChzdHJ1Y3Qg bWx4NV9jb3JlX2RldiAqZGV2KQ0KPiAgCW1seDVfYWNjZWxfaXBzZWNfY2xlYW51cChkZXYpOw0K PiAgCW1seDVfYWNjZWxfdGxzX2NsZWFudXAoZGV2KTsNCj4gIAltbHg1X2ZwZ2FfZGV2aWNlX3N0 b3AoZGV2KTsNCj4gKwltbHg1X2h2X3ZoY2FfY2xlYW51cChkZXYtPmh2X3ZoY2EpOw0KPiAgCW1s eDVfZndfdHJhY2VyX2NsZWFudXAoZGV2LT50cmFjZXIpOw0KPiAgCW1seDVfZXFfdGFibGVfZGVz dHJveShkZXYpOw0KPiAgCW1seDVfaXJxX3RhYmxlX2Rlc3Ryb3koZGV2KTsNCj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaCBiL2luY2x1ZGUvbGludXgvbWx4NS9kcml2 ZXIuaA0KPiBpbmRleCAyYjg0ZWU5Li45N2JiOThjIDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL2xp bnV4L21seDUvZHJpdmVyLmgNCj4gKysrIGIvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oDQo+ IEBAIC02NDYsNiArNjQ2LDcgQEAgc3RydWN0IG1seDVfY2xvY2sgew0KPiAgc3RydWN0IG1seDVf ZndfdHJhY2VyOw0KPiAgc3RydWN0IG1seDVfdnhsYW47DQo+ICBzdHJ1Y3QgbWx4NV9nZW5ldmU7 DQo+ICtzdHJ1Y3QgbWx4NV9odl92aGNhOw0KPiAgDQo+ICBzdHJ1Y3QgbWx4NV9jb3JlX2RldiB7 DQo+ICAJc3RydWN0IGRldmljZSAqZGV2aWNlOw0KPiBAQCAtNjkzLDYgKzY5NCw3IEBAIHN0cnVj dCBtbHg1X2NvcmVfZGV2IHsNCj4gIAlzdHJ1Y3QgbWx4NV9pYl9jbG9ja19pbmZvICAqY2xvY2tf aW5mbzsNCj4gIAlzdHJ1Y3QgbWx4NV9md190cmFjZXIgICAqdHJhY2VyOw0KPiAgCXUzMiAgICAg ICAgICAgICAgICAgICAgICB2c2NfYWRkcjsNCj4gKwlzdHJ1Y3QgbWx4NV9odl92aGNhCSpodl92 aGNhOw0KPiAgfTsNCj4gIA0KPiAgc3RydWN0IG1seDVfZGIgew0KPiANCg==