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=-9.1 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,T_DKIMWL_WL_HIGH,USER_AGENT_GIT autolearn=ham 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 E4206C28CC0 for ; Thu, 30 May 2019 00:14:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9AAE924388 for ; Thu, 30 May 2019 00:14:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=microsoft.com header.i=@microsoft.com header.b="Qiv7gsHs" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726601AbfE3AOF (ORCPT ); Wed, 29 May 2019 20:14:05 -0400 Received: from mail-eopbgr790093.outbound.protection.outlook.com ([40.107.79.93]:51456 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726408AbfE3AOF (ORCPT ); Wed, 29 May 2019 20:14:05 -0400 ARC-Seal: i=1; a=rsa-sha256; s=testarcselector01; d=microsoft.com; cv=none; b=s1VXQ5lQVv/Dm37w8hVqZPhgZzYl/VGoWQChGXT+CwnzaClWCKcQQwXsf1SiFv84aPc+YpzHaHfUHvx/SfEfHYfAvaNFyUdwg4NnZJZjhA+g35msQj9AKrDlxXt6IZTMr3yK3lq5x/cXIg05hoUJFJ36bKnHmRESwPfYgGwdANA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=testarcselector01; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3LPYl+nBgPbJQ1lxANbd7fwukkG6tSUgEBvMfCXMdlk=; b=AIJ/llhsOaIyvZuIiiqy8XFeF97sDKEYJ6n4LoSitR1Akc7NFmNtu7qeygrgFsH1CKbzGdllMFvhcmPvvpl9ogMHH/IrDqU9NKeIGbGm0e8ELQZQZcR7iHKNmsDR/pEhltYJuZEul0yVuTeAeamtFkp5wklKlVnhF4E7PEUreng= ARC-Authentication-Results: i=1; test.office365.com 1;spf=none;dmarc=none;dkim=none;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3LPYl+nBgPbJQ1lxANbd7fwukkG6tSUgEBvMfCXMdlk=; b=Qiv7gsHshK75fYEorhpE34sALyP2nq4SEdUAuRPReGf+97Bg/cxHXi0AGZXwJdpKwzOw/2gCp1bfXLTy/YTIAsmlv1fcUlnuVPmmhBPpgJUb1oo8KPzajFv0T9/+UQKRaTc2ljJLqNt+7RsyqMrDCT/OXrQ8SHT9uAqH0MSAh3w= Received: from DM6PR21MB1340.namprd21.prod.outlook.com (2603:10b6:5:175::19) by DM6PR21MB1276.namprd21.prod.outlook.com (2603:10b6:5:16c::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.2; Thu, 30 May 2019 00:14:00 +0000 Received: from DM6PR21MB1340.namprd21.prod.outlook.com ([fe80::5057:9e3c:bcc5:9470]) by DM6PR21MB1340.namprd21.prod.outlook.com ([fe80::5057:9e3c:bcc5:9470%3]) with mapi id 15.20.1965.003; Thu, 30 May 2019 00:14:00 +0000 From: Michael Kelley To: "linux-kernel@vger.kernel.org" , "linux-hyperv@vger.kernel.org" , "olaf@aepfle.de" , "apw@canonical.com" , vkuznets , "jasowang@redhat.com" , "marcelo.cerri@canonical.com" , Sunil Muthuswamy , KY Srinivasan CC: Michael Kelley Subject: [PATCH v2 1/1] Drivers: hv: vmbus: Break out ISA independent parts of mshyperv.h Thread-Topic: [PATCH v2 1/1] Drivers: hv: vmbus: Break out ISA independent parts of mshyperv.h Thread-Index: AQHVFnyUh+n4wZPddke2XdnJLrea+Q== Date: Thu, 30 May 2019 00:14:00 +0000 Message-ID: <1559175219-17823-1-git-send-email-mikelley@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: CY4PR04CA0041.namprd04.prod.outlook.com (2603:10b6:903:c6::27) To DM6PR21MB1340.namprd21.prod.outlook.com (2603:10b6:5:175::19) authentication-results: spf=none (sender IP is ) smtp.mailfrom=mikelley@microsoft.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 1.8.3.1 x-originating-ip: [131.107.147.136] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9c935b84-6dc7-4672-0c58-08d6e493b709 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600148)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM6PR21MB1276; x-ms-traffictypediagnostic: DM6PR21MB1276: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 00531FAC2C x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(39860400002)(346002)(136003)(366004)(396003)(376002)(199004)(189003)(81156014)(53936002)(14454004)(2906002)(14444005)(256004)(10290500003)(6436002)(2501003)(4326008)(8936002)(478600001)(8676002)(30864003)(52396003)(7736002)(316002)(6486002)(2616005)(486006)(305945005)(71190400001)(36756003)(25786009)(107886003)(52116002)(71200400001)(6506007)(66446008)(66066001)(99286004)(50226002)(64756008)(66556008)(66476007)(6512007)(26005)(73956011)(102836004)(1511001)(81166006)(22452003)(476003)(6636002)(5660300002)(3846002)(10090500001)(68736007)(86362001)(6116002)(2201001)(66946007)(4720700003)(110136005)(186003)(386003);DIR:OUT;SFP:1102;SCL:1;SRVR:DM6PR21MB1276;H:DM6PR21MB1340.namprd21.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: yOcQDRAVRduCtr2nLdJrGbeFbavJUflB8/h5hkcIlA+rZcSuQGyhlNms95t7NhDUCGxeJ468D/otsiDjyzAbRS7EpMjlrw0kZiRyIqwdTK7eZRTRtTuCD//cGPMLoxUn6y2Geh6acXXSCRDA9hgf2CKOpD5MgcM3rFfG0V9kaeDqCa3IGSQP1mJAiBbZWjYJBaoqB5UFlNHrz3PK7TMORctdqwt28awoTQ/xvCIMZQE1TLduBnmuCWmaAarMlXsLO1W5J38aX1nTs5yblbBgpwcMTgNBERKV4lwns4gOdcbdvJ7yXZWOsikvhbMfp0xbs64Wat6zBrf63r1pqZFpuSU2KBZa0knUxFv5QdUK33k1biQaaovQsNLqtIdDRKimjWZQcurpv3v2uZb2XwjVP8Amag7sR9j0UaWaqlhrnWA= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c935b84-6dc7-4672-0c58-08d6e493b709 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 May 2019 00:14:00.7226 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: lkmlmhk@microsoft.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR21MB1276 Sender: linux-hyperv-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-hyperv@vger.kernel.org QnJlYWsgb3V0IHBhcnRzIG9mIG1zaHlwZXJ2LmggdGhhdCBhcmUgSVNBIGluZGVwZW5kZW50IGlu dG8gYQ0Kc2VwYXJhdGUgZmlsZSBpbiBpbmNsdWRlL2FzbS1nZW5lcmljLiBUaGlzIG1vdmUgZmFj aWxpdGF0ZXMNCkFSTTY0IGNvZGUgcmV1c2luZyB0aGVzZSBkZWZpbml0aW9ucyBhbmQgYXZvaWRz IGNvZGUNCmR1cGxpY2F0aW9uLiBObyBmdW5jdGlvbmFsaXR5IG9yIGJlaGF2aW9yIGlzIGNoYW5n ZWQuDQoNClNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgS2VsbGV5IDxtaWtlbGxleUBtaWNyb3NvZnQu Y29tPg0KUmV2aWV3ZWQtYnk6IFZpdGFseSBLdXpuZXRzb3YgPHZrdXpuZXRzQHJlZGhhdC5jb20+ DQotLS0NCkNoYW5nZXMgaW4gdjI6DQoqIFJlbW92ZWQgdW5uZWVkZWQgI2luY2x1ZGVzIGluIGFz bS1nZW5lcmljL21zaHlwZXJ2Lmg7DQphZGRlZCB0d28gI2luY2x1ZGVzIHRoYXQgYXJlIG5lZWRl ZC4gW1ZpdGFseSBLdXpuZXRzb3ZdDQoNCi0tLQ0KDQogTUFJTlRBSU5FUlMgICAgICAgICAgICAg ICAgICAgICB8ICAgMSArDQogYXJjaC94ODYvaW5jbHVkZS9hc20vbXNoeXBlcnYuaCB8IDE0NyAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIGluY2x1ZGUvYXNtLWdlbmVyaWMvbXNo eXBlcnYuaCAgfCAxODAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0K IDMgZmlsZXMgY2hhbmdlZCwgMTg1IGluc2VydGlvbnMoKyksIDE0MyBkZWxldGlvbnMoLSkNCiBj cmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9hc20tZ2VuZXJpYy9tc2h5cGVydi5oDQoNCmRpZmYg LS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTDQppbmRleCBjZjJhNWI3Li41MjExOTJk IDEwMDY0NA0KLS0tIGEvTUFJTlRBSU5FUlMNCisrKyBiL01BSU5UQUlORVJTDQpAQCAtNzMwOCw2 ICs3MzA4LDcgQEAgRjoJbmV0L3Ztd192c29jay9oeXBlcnZfdHJhbnNwb3J0LmMNCiBGOglpbmNs dWRlL2Nsb2Nrc291cmNlL2h5cGVydl90aW1lci5oDQogRjoJaW5jbHVkZS9saW51eC9oeXBlcnYu aA0KIEY6CWluY2x1ZGUvdWFwaS9saW51eC9oeXBlcnYuaA0KK0Y6CWluY2x1ZGUvYXNtLWdlbmVy aWMvbXNoeXBlcnYuaA0KIEY6CXRvb2xzL2h2Lw0KIEY6CURvY3VtZW50YXRpb24vQUJJL3N0YWJs ZS9zeXNmcy1idXMtdm1idXMNCiANCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9t c2h5cGVydi5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbXNoeXBlcnYuaA0KaW5kZXggZjRmYThh OS4uMmE3OTNiZiAxMDA2NDQNCi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zaHlwZXJ2LmgN CisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zaHlwZXJ2LmgNCkBAIC0zLDg0ICszLDE1IEBA DQogI2RlZmluZSBfQVNNX1g4Nl9NU0hZUEVSX0gNCiANCiAjaW5jbHVkZSA8bGludXgvdHlwZXMu aD4NCi0jaW5jbHVkZSA8bGludXgvYXRvbWljLmg+DQogI2luY2x1ZGUgPGxpbnV4L25taS5oPg0K ICNpbmNsdWRlIDxhc20vaW8uaD4NCiAjaW5jbHVkZSA8YXNtL2h5cGVydi10bGZzLmg+DQogI2lu Y2x1ZGUgPGFzbS9ub3NwZWMtYnJhbmNoLmg+DQogDQotI2RlZmluZSBWUF9JTlZBTAlVMzJfTUFY DQotDQotc3RydWN0IG1zX2h5cGVydl9pbmZvIHsNCi0JdTMyIGZlYXR1cmVzOw0KLQl1MzIgbWlz Y19mZWF0dXJlczsNCi0JdTMyIGhpbnRzOw0KLQl1MzIgbmVzdGVkX2ZlYXR1cmVzOw0KLQl1MzIg bWF4X3ZwX2luZGV4Ow0KLQl1MzIgbWF4X2xwX2luZGV4Ow0KLX07DQotDQotZXh0ZXJuIHN0cnVj dCBtc19oeXBlcnZfaW5mbyBtc19oeXBlcnY7DQotDQotDQogdHlwZWRlZiBpbnQgKCpoeXBlcnZf ZmlsbF9mbHVzaF9saXN0X2Z1bmMpKA0KIAkJc3RydWN0IGh2X2d1ZXN0X21hcHBpbmdfZmx1c2hf bGlzdCAqZmx1c2gsDQogCQl2b2lkICpkYXRhKTsNCiANCi0vKg0KLSAqIEdlbmVyYXRlIHRoZSBn dWVzdCBJRC4NCi0gKi8NCi0NCi1zdGF0aWMgaW5saW5lICBfX3U2NCBnZW5lcmF0ZV9ndWVzdF9p ZChfX3U2NCBkX2luZm8xLCBfX3U2NCBrZXJuZWxfdmVyc2lvbiwNCi0JCQkJICAgICAgIF9fdTY0 IGRfaW5mbzIpDQotew0KLQlfX3U2NCBndWVzdF9pZCA9IDA7DQotDQotCWd1ZXN0X2lkID0gKCgo X191NjQpSFZfTElOVVhfVkVORE9SX0lEKSA8PCA0OCk7DQotCWd1ZXN0X2lkIHw9IChkX2luZm8x IDw8IDQ4KTsNCi0JZ3Vlc3RfaWQgfD0gKGtlcm5lbF92ZXJzaW9uIDw8IDE2KTsNCi0JZ3Vlc3Rf aWQgfD0gZF9pbmZvMjsNCi0NCi0JcmV0dXJuIGd1ZXN0X2lkOw0KLX0NCi0NCi0NCi0vKiBGcmVl IHRoZSBtZXNzYWdlIHNsb3QgYW5kIHNpZ25hbCBlbmQtb2YtbWVzc2FnZSBpZiByZXF1aXJlZCAq Lw0KLXN0YXRpYyBpbmxpbmUgdm9pZCB2bWJ1c19zaWduYWxfZW9tKHN0cnVjdCBodl9tZXNzYWdl ICptc2csIHUzMiBvbGRfbXNnX3R5cGUpDQotew0KLQkvKg0KLQkgKiBPbiBjcmFzaCB3ZSdyZSBy ZWFkaW5nIHNvbWUgb3RoZXIgQ1BVJ3MgbWVzc2FnZSBwYWdlIGFuZCB3ZSBuZWVkDQotCSAqIHRv IGJlIGNhcmVmdWw6IHRoaXMgb3RoZXIgQ1BVIG1heSBhbHJlYWR5IGhhZCBjbGVhcmVkIHRoZSBo ZWFkZXINCi0JICogYW5kIHRoZSBob3N0IG1heSBhbHJlYWR5IGhhZCBkZWxpdmVyZWQgc29tZSBv dGhlciBtZXNzYWdlIHRoZXJlLg0KLQkgKiBJbiBjYXNlIHdlIGJsaW5kbHkgd3JpdGUgbXNnLT5o ZWFkZXIubWVzc2FnZV90eXBlIHdlJ3JlIGdvaW5nDQotCSAqIHRvIGxvc2UgaXQuIFdlIGNhbiBz dGlsbCBsb3NlIGEgbWVzc2FnZSBvZiB0aGUgc2FtZSB0eXBlIGJ1dA0KLQkgKiB3ZSBjb3VudCBv biB0aGUgZmFjdCB0aGF0IHRoZXJlIGNhbiBvbmx5IGJlIG9uZQ0KLQkgKiBDSEFOTkVMTVNHX1VO TE9BRF9SRVNQT05TRSBhbmQgd2UgZG9uJ3QgY2FyZSBhYm91dCBvdGhlciBtZXNzYWdlcw0KLQkg KiBvbiBjcmFzaC4NCi0JICovDQotCWlmIChjbXB4Y2hnKCZtc2ctPmhlYWRlci5tZXNzYWdlX3R5 cGUsIG9sZF9tc2dfdHlwZSwNCi0JCSAgICBIVk1TR19OT05FKSAhPSBvbGRfbXNnX3R5cGUpDQot CQlyZXR1cm47DQotDQotCS8qDQotCSAqIE1ha2Ugc3VyZSB0aGUgd3JpdGUgdG8gTWVzc2FnZVR5 cGUgKGllIHNldCB0bw0KLQkgKiBIVk1TR19OT05FKSBoYXBwZW5zIGJlZm9yZSB3ZSByZWFkIHRo ZQ0KLQkgKiBNZXNzYWdlUGVuZGluZyBhbmQgRU9NaW5nLiBPdGhlcndpc2UsIHRoZSBFT01pbmcN Ci0JICogd2lsbCBub3QgZGVsaXZlciBhbnkgbW9yZSBtZXNzYWdlcyBzaW5jZSB0aGVyZSBpcw0K LQkgKiBubyBlbXB0eSBzbG90DQotCSAqLw0KLQltYigpOw0KLQ0KLQlpZiAobXNnLT5oZWFkZXIu bWVzc2FnZV9mbGFncy5tc2dfcGVuZGluZykgew0KLQkJLyoNCi0JCSAqIFRoaXMgd2lsbCBjYXVz ZSBtZXNzYWdlIHF1ZXVlIHJlc2NhbiB0bw0KLQkJICogcG9zc2libHkgZGVsaXZlciBhbm90aGVy IG1zZyBmcm9tIHRoZQ0KLQkJICogaHlwZXJ2aXNvcg0KLQkJICovDQotCQl3cm1zcmwoSFZfWDY0 X01TUl9FT00sIDApOw0KLQl9DQotfQ0KLQ0KICNkZWZpbmUgaHZfaW5pdF90aW1lcih0aW1lciwg dGljaykgXA0KIAl3cm1zcmwoSFZfWDY0X01TUl9TVElNRVIwX0NPVU5UICsgKDIqdGltZXIpLCB0 aWNrKQ0KICNkZWZpbmUgaHZfaW5pdF90aW1lcl9jb25maWcodGltZXIsIHZhbCkgXA0KQEAgLTk3 LDYgKzI4LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHZtYnVzX3NpZ25hbF9lb20oc3RydWN0IGh2 X21lc3NhZ2UgKm1zZywgdTMyIG9sZF9tc2dfdHlwZSkNCiANCiAjZGVmaW5lIGh2X2dldF92cF9p bmRleChpbmRleCkgcmRtc3JsKEhWX1g2NF9NU1JfVlBfSU5ERVgsIGluZGV4KQ0KIA0KKyNkZWZp bmUgaHZfc2lnbmFsX2VvbSgpIHdybXNybChIVl9YNjRfTVNSX0VPTSwgMCkNCisNCiAjZGVmaW5l IGh2X2dldF9zeW5pbnRfc3RhdGUoaW50X251bSwgdmFsKSBcDQogCXJkbXNybChIVl9YNjRfTVNS X1NJTlQwICsgaW50X251bSwgdmFsKQ0KICNkZWZpbmUgaHZfc2V0X3N5bmludF9zdGF0ZShpbnRf bnVtLCB2YWwpIFwNCkBAIC0xMjIsMTMgKzU1LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIHZtYnVz X3NpZ25hbF9lb20oc3RydWN0IGh2X21lc3NhZ2UgKm1zZywgdTMyIG9sZF9tc2dfdHlwZSkNCiAj ZGVmaW5lIHRyYWNlX2h5cGVydl9jYWxsYmFja192ZWN0b3IgaHlwZXJ2X2NhbGxiYWNrX3ZlY3Rv cg0KICNlbmRpZg0KIHZvaWQgaHlwZXJ2X3ZlY3Rvcl9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpy ZWdzKTsNCi12b2lkIGh2X3NldHVwX3ZtYnVzX2lycSh2b2lkICgqaGFuZGxlcikodm9pZCkpOw0K LXZvaWQgaHZfcmVtb3ZlX3ZtYnVzX2lycSh2b2lkKTsNCi0NCi12b2lkIGh2X3NldHVwX2tleGVj X2hhbmRsZXIodm9pZCAoKmhhbmRsZXIpKHZvaWQpKTsNCi12b2lkIGh2X3JlbW92ZV9rZXhlY19o YW5kbGVyKHZvaWQpOw0KLXZvaWQgaHZfc2V0dXBfY3Jhc2hfaGFuZGxlcih2b2lkICgqaGFuZGxl cikoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpKTsNCi12b2lkIGh2X3JlbW92ZV9jcmFzaF9oYW5kbGVy KHZvaWQpOw0KIA0KIC8qDQogICogUm91dGluZXMgZm9yIHN0aW1lcjAgRGlyZWN0IE1vZGUgaGFu ZGxpbmcuDQpAQCAtMTM2LDggKzYyLDYgQEAgc3RhdGljIGlubGluZSB2b2lkIHZtYnVzX3NpZ25h bF9lb20oc3RydWN0IGh2X21lc3NhZ2UgKm1zZywgdTMyIG9sZF9tc2dfdHlwZSkNCiAgKi8NCiB2 b2lkIGh2X3N0aW1lcjBfdmVjdG9yX2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOw0KIHZv aWQgaHZfc3RpbWVyMF9jYWxsYmFja192ZWN0b3Iodm9pZCk7DQotaW50IGh2X3NldHVwX3N0aW1l cjBfaXJxKGludCAqaXJxLCBpbnQgKnZlY3Rvciwgdm9pZCAoKmhhbmRsZXIpKHZvaWQpKTsNCi12 b2lkIGh2X3JlbW92ZV9zdGltZXIwX2lycShpbnQgaXJxKTsNCiANCiBzdGF0aWMgaW5saW5lIHZv aWQgaHZfZW5hYmxlX3N0aW1lcjBfcGVyY3B1X2lycShpbnQgaXJxKSB7fQ0KIHN0YXRpYyBpbmxp bmUgdm9pZCBodl9kaXNhYmxlX3N0aW1lcjBfcGVyY3B1X2lycShpbnQgaXJxKSB7fQ0KQEAgLTI4 MiwxNCArMjA2LDYgQEAgc3RhdGljIGlubGluZSB1NjQgaHZfZG9fcmVwX2h5cGVyY2FsbCh1MTYg Y29kZSwgdTE2IHJlcF9jb3VudCwgdTE2IHZhcmhlYWRfc2l6ZSwNCiAJcmV0dXJuIHN0YXR1czsN CiB9DQogDQotLyoNCi0gKiBIeXBlcnZpc29yJ3Mgbm90aW9uIG9mIHZpcnR1YWwgcHJvY2Vzc29y IElEIGlzIGRpZmZlcmVudCBmcm9tDQotICogTGludXgnIG5vdGlvbiBvZiBDUFUgSUQuIFRoaXMg aW5mb3JtYXRpb24gY2FuIG9ubHkgYmUgcmV0cmlldmVkDQotICogaW4gdGhlIGNvbnRleHQgb2Yg dGhlIGNhbGxpbmcgQ1BVLiBTZXR1cCBhIG1hcCBmb3IgZWFzeSBhY2Nlc3MNCi0gKiB0byB0aGlz IGluZm9ybWF0aW9uLg0KLSAqLw0KLWV4dGVybiB1MzIgKmh2X3ZwX2luZGV4Ow0KLWV4dGVybiB1 MzIgaHZfbWF4X3ZwX2luZGV4Ow0KIGV4dGVybiBzdHJ1Y3QgaHZfdnBfYXNzaXN0X3BhZ2UgKipo dl92cF9hc3Npc3RfcGFnZTsNCiANCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBodl92cF9hc3Npc3Rf cGFnZSAqaHZfZ2V0X3ZwX2Fzc2lzdF9wYWdlKHVuc2lnbmVkIGludCBjcHUpDQpAQCAtMzAwLDYz ICsyMTYsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBodl92cF9hc3Npc3RfcGFnZSAqaHZfZ2V0 X3ZwX2Fzc2lzdF9wYWdlKHVuc2lnbmVkIGludCBjcHUpDQogCXJldHVybiBodl92cF9hc3Npc3Rf cGFnZVtjcHVdOw0KIH0NCiANCi0vKioNCi0gKiBodl9jcHVfbnVtYmVyX3RvX3ZwX251bWJlcigp IC0gTWFwIENQVSB0byBWUC4NCi0gKiBAY3B1X251bWJlcjogQ1BVIG51bWJlciBpbiBMaW51eCB0 ZXJtcw0KLSAqDQotICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBtYXBwaW5nIGJldHdlZW4g dGhlIExpbnV4IHByb2Nlc3Nvcg0KLSAqIG51bWJlciBhbmQgdGhlIGh5cGVydmlzb3IncyB2aXJ0 dWFsIHByb2Nlc3NvciBudW1iZXIsIHVzZWZ1bA0KLSAqIGluIG1ha2luZyBoeXBlcmNhbGxzIGFu ZCBzdWNoIHRoYXQgdGFsayBhYm91dCBzcGVjaWZpYw0KLSAqIHByb2Nlc3NvcnMuDQotICoNCi0g KiBSZXR1cm46IFZpcnR1YWwgcHJvY2Vzc29yIG51bWJlciBpbiBIeXBlci1WIHRlcm1zDQotICov DQotc3RhdGljIGlubGluZSBpbnQgaHZfY3B1X251bWJlcl90b192cF9udW1iZXIoaW50IGNwdV9u dW1iZXIpDQotew0KLQlyZXR1cm4gaHZfdnBfaW5kZXhbY3B1X251bWJlcl07DQotfQ0KLQ0KLXN0 YXRpYyBpbmxpbmUgaW50IGNwdW1hc2tfdG9fdnBzZXQoc3RydWN0IGh2X3Zwc2V0ICp2cHNldCwN Ci0JCQkJICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVzKQ0KLXsNCi0JaW50IGNwdSwgdmNw dSwgdmNwdV9iYW5rLCB2Y3B1X29mZnNldCwgbnJfYmFuayA9IDE7DQotDQotCS8qIHZhbGlkX2Jh bmtfbWFzayBjYW4gcmVwcmVzZW50IHVwIHRvIDY0IGJhbmtzICovDQotCWlmIChodl9tYXhfdnBf aW5kZXggLyA2NCA+PSA2NCkNCi0JCXJldHVybiAwOw0KLQ0KLQkvKg0KLQkgKiBDbGVhciBhbGwg YmFua3MgdXAgdG8gdGhlIG1heGltdW0gcG9zc2libGUgYmFuayBhcyBodl90bGJfZmx1c2hfZXgN Ci0JICogc3RydWN0cyBhcmUgbm90IGNsZWFyZWQgYmV0d2VlbiBjYWxscywgd2UgcmlzayBmbHVz aGluZyB1bm5lZWRlZA0KLQkgKiB2Q1BVcyBvdGhlcndpc2UuDQotCSAqLw0KLQlmb3IgKHZjcHVf YmFuayA9IDA7IHZjcHVfYmFuayA8PSBodl9tYXhfdnBfaW5kZXggLyA2NDsgdmNwdV9iYW5rKysp DQotCQl2cHNldC0+YmFua19jb250ZW50c1t2Y3B1X2JhbmtdID0gMDsNCi0NCi0JLyoNCi0JICog U29tZSBiYW5rcyBtYXkgZW5kIHVwIGJlaW5nIGVtcHR5IGJ1dCB0aGlzIGlzIGFjY2VwdGFibGUu DQotCSAqLw0KLQlmb3JfZWFjaF9jcHUoY3B1LCBjcHVzKSB7DQotCQl2Y3B1ID0gaHZfY3B1X251 bWJlcl90b192cF9udW1iZXIoY3B1KTsNCi0JCWlmICh2Y3B1ID09IFZQX0lOVkFMKQ0KLQkJCXJl dHVybiAtMTsNCi0JCXZjcHVfYmFuayA9IHZjcHUgLyA2NDsNCi0JCXZjcHVfb2Zmc2V0ID0gdmNw dSAlIDY0Ow0KLQkJX19zZXRfYml0KHZjcHVfb2Zmc2V0LCAodW5zaWduZWQgbG9uZyAqKQ0KLQkJ CSAgJnZwc2V0LT5iYW5rX2NvbnRlbnRzW3ZjcHVfYmFua10pOw0KLQkJaWYgKHZjcHVfYmFuayA+ PSBucl9iYW5rKQ0KLQkJCW5yX2JhbmsgPSB2Y3B1X2JhbmsgKyAxOw0KLQl9DQotCXZwc2V0LT52 YWxpZF9iYW5rX21hc2sgPSBHRU5NQVNLX1VMTChucl9iYW5rIC0gMSwgMCk7DQotCXJldHVybiBu cl9iYW5rOw0KLX0NCi0NCiB2b2lkIF9faW5pdCBoeXBlcnZfaW5pdCh2b2lkKTsNCiB2b2lkIGh5 cGVydl9zZXR1cF9tbXVfb3BzKHZvaWQpOw0KLXZvaWQgaHlwZXJ2X3JlcG9ydF9wYW5pYyhzdHJ1 Y3QgcHRfcmVncyAqcmVncywgbG9uZyBlcnIpOw0KLXZvaWQgaHlwZXJ2X3JlcG9ydF9wYW5pY19t c2cocGh5c19hZGRyX3QgcGEsIHNpemVfdCBzaXplKTsNCi1ib29sIGh2X2lzX2h5cGVydl9pbml0 aWFsaXplZCh2b2lkKTsNCi12b2lkIGh5cGVydl9jbGVhbnVwKHZvaWQpOw0KIA0KIHZvaWQgaHlw ZXJ2X3JlZW5saWdodGVubWVudF9pbnRyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsNCiB2b2lkIHNl dF9odl90c2NjaGFuZ2VfY2Iodm9pZCAoKmNiKSh2b2lkKSk7DQpAQCAtMzc5LDggKzI0MCw2IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBodl9hcGljX2luaXQodm9pZCkge30NCiANCiAjZWxzZSAvKiBD T05GSUdfSFlQRVJWICovDQogc3RhdGljIGlubGluZSB2b2lkIGh5cGVydl9pbml0KHZvaWQpIHt9 DQotc3RhdGljIGlubGluZSBib29sIGh2X2lzX2h5cGVydl9pbml0aWFsaXplZCh2b2lkKSB7IHJl dHVybiBmYWxzZTsgfQ0KLXN0YXRpYyBpbmxpbmUgdm9pZCBoeXBlcnZfY2xlYW51cCh2b2lkKSB7 fQ0KIHN0YXRpYyBpbmxpbmUgdm9pZCBoeXBlcnZfc2V0dXBfbW11X29wcyh2b2lkKSB7fQ0KIHN0 YXRpYyBpbmxpbmUgdm9pZCBzZXRfaHZfdHNjY2hhbmdlX2NiKHZvaWQgKCpjYikodm9pZCkpIHt9 DQogc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2h2X3RzY2NoYW5nZV9jYih2b2lkKSB7fQ0KQEAg LTM5Nyw0ICsyNTYsNiBAQCBzdGF0aWMgaW5saW5lIGludCBoeXBlcnZfZmx1c2hfZ3Vlc3RfbWFw cGluZ19yYW5nZSh1NjQgYXMsDQogfQ0KICNlbmRpZiAvKiBDT05GSUdfSFlQRVJWICovDQogDQor I2luY2x1ZGUgPGFzbS1nZW5lcmljL21zaHlwZXJ2Lmg+DQorDQogI2VuZGlmDQpkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9tc2h5cGVydi5oIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9t c2h5cGVydi5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uMGJlY2I3ZA0K LS0tIC9kZXYvbnVsbA0KKysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9tc2h5cGVydi5oDQpAQCAt MCwwICsxLDE4MCBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQor DQorLyoNCisgKiBMaW51eC1zcGVjaWZpYyBkZWZpbml0aW9ucyBmb3IgbWFuYWdpbmcgaW50ZXJh Y3Rpb25zIHdpdGggTWljcm9zb2Z0J3MNCisgKiBIeXBlci1WIGh5cGVydmlzb3IuIFRoZSBkZWZp bml0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGFyY2hpdGVjdHVyZQ0KKyAqIGluZGVwZW5kZW50LiBT ZWUgYXJjaC88YXJjaD4vaW5jbHVkZS9hc20vbXNoeXBlcnYuaCBmb3IgZGVmaW5pdGlvbnMNCisg KiB0aGF0IGFyZSBzcGVjaWZpYyB0byBhcmNoaXRlY3R1cmUgPGFyY2g+Lg0KKyAqDQorICogRGVm aW5pdGlvbnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBIeXBlci1WIFRvcCBMZXZlbCBGdW5j dGlvbmFsDQorICogU3BlYyAoVExGUykgc2hvdWxkIG5vdCBnbyBpbiB0aGlzIGZpbGUsIGJ1dCBz aG91bGQgaW5zdGVhZCBnbyBpbg0KKyAqIGh5cGVydi10bGZzLmguDQorICoNCisgKiBDb3B5cmln aHQgKEMpIDIwMTksIE1pY3Jvc29mdCwgSW5jLg0KKyAqDQorICogQXV0aG9yIDogTWljaGFlbCBL ZWxsZXkgPG1pa2VsbGV5QG1pY3Jvc29mdC5jb20+DQorICovDQorDQorI2lmbmRlZiBfQVNNX0dF TkVSSUNfTVNIWVBFUlZfSA0KKyNkZWZpbmUgX0FTTV9HRU5FUklDX01TSFlQRVJWX0gNCisNCisj aW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCisjaW5jbHVkZSA8bGludXgvYXRvbWljLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L2JpdG9wcy5oPg0KKyNpbmNsdWRlIDxsaW51eC9jcHVtYXNrLmg+DQorI2lu Y2x1ZGUgPGFzbS9wdHJhY2UuaD4NCisjaW5jbHVkZSA8YXNtL2h5cGVydi10bGZzLmg+DQorDQor c3RydWN0IG1zX2h5cGVydl9pbmZvIHsNCisJdTMyIGZlYXR1cmVzOw0KKwl1MzIgbWlzY19mZWF0 dXJlczsNCisJdTMyIGhpbnRzOw0KKwl1MzIgbmVzdGVkX2ZlYXR1cmVzOw0KKwl1MzIgbWF4X3Zw X2luZGV4Ow0KKwl1MzIgbWF4X2xwX2luZGV4Ow0KK307DQorZXh0ZXJuIHN0cnVjdCBtc19oeXBl cnZfaW5mbyBtc19oeXBlcnY7DQorDQorZXh0ZXJuIHU2NCBodl9kb19oeXBlcmNhbGwodTY0IGNv bnRyb2wsIHZvaWQgKmlucHV0YWRkciwgdm9pZCAqb3V0cHV0YWRkcik7DQorZXh0ZXJuIHU2NCBo dl9kb19mYXN0X2h5cGVyY2FsbDgodTE2IGNvbnRyb2wsIHU2NCBpbnB1dDgpOw0KKw0KKw0KKy8q IEdlbmVyYXRlIHRoZSBndWVzdCBPUyBpZGVudGlmaWVyIGFzIGRlc2NyaWJlZCBpbiB0aGUgSHlw ZXItViBUTEZTICovDQorc3RhdGljIGlubGluZSAgX191NjQgZ2VuZXJhdGVfZ3Vlc3RfaWQoX191 NjQgZF9pbmZvMSwgX191NjQga2VybmVsX3ZlcnNpb24sDQorCQkJCSAgICAgICBfX3U2NCBkX2lu Zm8yKQ0KK3sNCisJX191NjQgZ3Vlc3RfaWQgPSAwOw0KKw0KKwlndWVzdF9pZCA9ICgoKF9fdTY0 KUhWX0xJTlVYX1ZFTkRPUl9JRCkgPDwgNDgpOw0KKwlndWVzdF9pZCB8PSAoZF9pbmZvMSA8PCA0 OCk7DQorCWd1ZXN0X2lkIHw9IChrZXJuZWxfdmVyc2lvbiA8PCAxNik7DQorCWd1ZXN0X2lkIHw9 IGRfaW5mbzI7DQorDQorCXJldHVybiBndWVzdF9pZDsNCit9DQorDQorDQorLyogRnJlZSB0aGUg bWVzc2FnZSBzbG90IGFuZCBzaWduYWwgZW5kLW9mLW1lc3NhZ2UgaWYgcmVxdWlyZWQgKi8NCitz dGF0aWMgaW5saW5lIHZvaWQgdm1idXNfc2lnbmFsX2VvbShzdHJ1Y3QgaHZfbWVzc2FnZSAqbXNn LCB1MzIgb2xkX21zZ190eXBlKQ0KK3sNCisJLyoNCisJICogT24gY3Jhc2ggd2UncmUgcmVhZGlu ZyBzb21lIG90aGVyIENQVSdzIG1lc3NhZ2UgcGFnZSBhbmQgd2UgbmVlZA0KKwkgKiB0byBiZSBj YXJlZnVsOiB0aGlzIG90aGVyIENQVSBtYXkgYWxyZWFkeSBoYWQgY2xlYXJlZCB0aGUgaGVhZGVy DQorCSAqIGFuZCB0aGUgaG9zdCBtYXkgYWxyZWFkeSBoYWQgZGVsaXZlcmVkIHNvbWUgb3RoZXIg bWVzc2FnZSB0aGVyZS4NCisJICogSW4gY2FzZSB3ZSBibGluZGx5IHdyaXRlIG1zZy0+aGVhZGVy Lm1lc3NhZ2VfdHlwZSB3ZSdyZSBnb2luZw0KKwkgKiB0byBsb3NlIGl0LiBXZSBjYW4gc3RpbGwg bG9zZSBhIG1lc3NhZ2Ugb2YgdGhlIHNhbWUgdHlwZSBidXQNCisJICogd2UgY291bnQgb24gdGhl IGZhY3QgdGhhdCB0aGVyZSBjYW4gb25seSBiZSBvbmUNCisJICogQ0hBTk5FTE1TR19VTkxPQURf UkVTUE9OU0UgYW5kIHdlIGRvbid0IGNhcmUgYWJvdXQgb3RoZXIgbWVzc2FnZXMNCisJICogb24g Y3Jhc2guDQorCSAqLw0KKwlpZiAoY21weGNoZygmbXNnLT5oZWFkZXIubWVzc2FnZV90eXBlLCBv bGRfbXNnX3R5cGUsDQorCQkgICAgSFZNU0dfTk9ORSkgIT0gb2xkX21zZ190eXBlKQ0KKwkJcmV0 dXJuOw0KKw0KKwkvKg0KKwkgKiBUaGUgY214Y2hnKCkgYWJvdmUgZG9lcyBhbiBpbXBsaWNpdCBt ZW1vcnkgYmFycmllciB0bw0KKwkgKiBlbnN1cmUgdGhlIHdyaXRlIHRvIE1lc3NhZ2VUeXBlIChp ZSBzZXQgdG8NCisJICogSFZNU0dfTk9ORSkgaGFwcGVucyBiZWZvcmUgd2UgcmVhZCB0aGUNCisJ ICogTWVzc2FnZVBlbmRpbmcgYW5kIEVPTWluZy4gT3RoZXJ3aXNlLCB0aGUgRU9NaW5nDQorCSAq IHdpbGwgbm90IGRlbGl2ZXIgYW55IG1vcmUgbWVzc2FnZXMgc2luY2UgdGhlcmUgaXMNCisJICog bm8gZW1wdHkgc2xvdA0KKwkgKi8NCisJaWYgKG1zZy0+aGVhZGVyLm1lc3NhZ2VfZmxhZ3MubXNn X3BlbmRpbmcpIHsNCisJCS8qDQorCQkgKiBUaGlzIHdpbGwgY2F1c2UgbWVzc2FnZSBxdWV1ZSBy ZXNjYW4gdG8NCisJCSAqIHBvc3NpYmx5IGRlbGl2ZXIgYW5vdGhlciBtc2cgZnJvbSB0aGUNCisJ CSAqIGh5cGVydmlzb3INCisJCSAqLw0KKwkJaHZfc2lnbmFsX2VvbSgpOw0KKwl9DQorfQ0KKw0K K3ZvaWQgaHZfc2V0dXBfdm1idXNfaXJxKHZvaWQgKCpoYW5kbGVyKSh2b2lkKSk7DQordm9pZCBo dl9yZW1vdmVfdm1idXNfaXJxKHZvaWQpOw0KK3ZvaWQgaHZfZW5hYmxlX3ZtYnVzX2lycSh2b2lk KTsNCit2b2lkIGh2X2Rpc2FibGVfdm1idXNfaXJxKHZvaWQpOw0KKw0KK3ZvaWQgaHZfc2V0dXBf a2V4ZWNfaGFuZGxlcih2b2lkICgqaGFuZGxlcikodm9pZCkpOw0KK3ZvaWQgaHZfcmVtb3ZlX2tl eGVjX2hhbmRsZXIodm9pZCk7DQordm9pZCBodl9zZXR1cF9jcmFzaF9oYW5kbGVyKHZvaWQgKCpo YW5kbGVyKShzdHJ1Y3QgcHRfcmVncyAqcmVncykpOw0KK3ZvaWQgaHZfcmVtb3ZlX2NyYXNoX2hh bmRsZXIodm9pZCk7DQorDQorI2lmIElTX0VOQUJMRUQoQ09ORklHX0hZUEVSVikNCisvKg0KKyAq IEh5cGVydmlzb3IncyBub3Rpb24gb2YgdmlydHVhbCBwcm9jZXNzb3IgSUQgaXMgZGlmZmVyZW50 IGZyb20NCisgKiBMaW51eCcgbm90aW9uIG9mIENQVSBJRC4gVGhpcyBpbmZvcm1hdGlvbiBjYW4g b25seSBiZSByZXRyaWV2ZWQNCisgKiBpbiB0aGUgY29udGV4dCBvZiB0aGUgY2FsbGluZyBDUFUu IFNldHVwIGEgbWFwIGZvciBlYXN5IGFjY2Vzcw0KKyAqIHRvIHRoaXMgaW5mb3JtYXRpb24uDQor ICovDQorZXh0ZXJuIHUzMiAqaHZfdnBfaW5kZXg7DQorZXh0ZXJuIHUzMiBodl9tYXhfdnBfaW5k ZXg7DQorDQorLyogU2VudGluZWwgdmFsdWUgZm9yIGFuIHVuaW5pdGlhbGl6ZWQgZW50cnkgaW4g aHZfdnBfaW5kZXggYXJyYXkgKi8NCisjZGVmaW5lIFZQX0lOVkFMCVUzMl9NQVgNCisNCisvKioN CisgKiBodl9jcHVfbnVtYmVyX3RvX3ZwX251bWJlcigpIC0gTWFwIENQVSB0byBWUC4NCisgKiBA Y3B1X251bWJlcjogQ1BVIG51bWJlciBpbiBMaW51eCB0ZXJtcw0KKyAqDQorICogVGhpcyBmdW5j dGlvbiByZXR1cm5zIHRoZSBtYXBwaW5nIGJldHdlZW4gdGhlIExpbnV4IHByb2Nlc3Nvcg0KKyAq IG51bWJlciBhbmQgdGhlIGh5cGVydmlzb3IncyB2aXJ0dWFsIHByb2Nlc3NvciBudW1iZXIsIHVz ZWZ1bA0KKyAqIGluIG1ha2luZyBoeXBlcmNhbGxzIGFuZCBzdWNoIHRoYXQgdGFsayBhYm91dCBz cGVjaWZpYw0KKyAqIHByb2Nlc3NvcnMuDQorICoNCisgKiBSZXR1cm46IFZpcnR1YWwgcHJvY2Vz c29yIG51bWJlciBpbiBIeXBlci1WIHRlcm1zDQorICovDQorc3RhdGljIGlubGluZSBpbnQgaHZf Y3B1X251bWJlcl90b192cF9udW1iZXIoaW50IGNwdV9udW1iZXIpDQorew0KKwlyZXR1cm4gaHZf dnBfaW5kZXhbY3B1X251bWJlcl07DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgaW50IGNwdW1hc2tf dG9fdnBzZXQoc3RydWN0IGh2X3Zwc2V0ICp2cHNldCwNCisJCQkJICAgIGNvbnN0IHN0cnVjdCBj cHVtYXNrICpjcHVzKQ0KK3sNCisJaW50IGNwdSwgdmNwdSwgdmNwdV9iYW5rLCB2Y3B1X29mZnNl dCwgbnJfYmFuayA9IDE7DQorDQorCS8qIHZhbGlkX2JhbmtfbWFzayBjYW4gcmVwcmVzZW50IHVw IHRvIDY0IGJhbmtzICovDQorCWlmIChodl9tYXhfdnBfaW5kZXggLyA2NCA+PSA2NCkNCisJCXJl dHVybiAwOw0KKw0KKwkvKg0KKwkgKiBDbGVhciBhbGwgYmFua3MgdXAgdG8gdGhlIG1heGltdW0g cG9zc2libGUgYmFuayBhcyBodl90bGJfZmx1c2hfZXgNCisJICogc3RydWN0cyBhcmUgbm90IGNs ZWFyZWQgYmV0d2VlbiBjYWxscywgd2UgcmlzayBmbHVzaGluZyB1bm5lZWRlZA0KKwkgKiB2Q1BV cyBvdGhlcndpc2UuDQorCSAqLw0KKwlmb3IgKHZjcHVfYmFuayA9IDA7IHZjcHVfYmFuayA8PSBo dl9tYXhfdnBfaW5kZXggLyA2NDsgdmNwdV9iYW5rKyspDQorCQl2cHNldC0+YmFua19jb250ZW50 c1t2Y3B1X2JhbmtdID0gMDsNCisNCisJLyoNCisJICogU29tZSBiYW5rcyBtYXkgZW5kIHVwIGJl aW5nIGVtcHR5IGJ1dCB0aGlzIGlzIGFjY2VwdGFibGUuDQorCSAqLw0KKwlmb3JfZWFjaF9jcHUo Y3B1LCBjcHVzKSB7DQorCQl2Y3B1ID0gaHZfY3B1X251bWJlcl90b192cF9udW1iZXIoY3B1KTsN CisJCWlmICh2Y3B1ID09IFZQX0lOVkFMKQ0KKwkJCXJldHVybiAtMTsNCisJCXZjcHVfYmFuayA9 IHZjcHUgLyA2NDsNCisJCXZjcHVfb2Zmc2V0ID0gdmNwdSAlIDY0Ow0KKwkJX19zZXRfYml0KHZj cHVfb2Zmc2V0LCAodW5zaWduZWQgbG9uZyAqKQ0KKwkJCSAgJnZwc2V0LT5iYW5rX2NvbnRlbnRz W3ZjcHVfYmFua10pOw0KKwkJaWYgKHZjcHVfYmFuayA+PSBucl9iYW5rKQ0KKwkJCW5yX2Jhbmsg PSB2Y3B1X2JhbmsgKyAxOw0KKwl9DQorCXZwc2V0LT52YWxpZF9iYW5rX21hc2sgPSBHRU5NQVNL X1VMTChucl9iYW5rIC0gMSwgMCk7DQorCXJldHVybiBucl9iYW5rOw0KK30NCisNCit2b2lkIGh5 cGVydl9yZXBvcnRfcGFuaWMoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgZXJyKTsNCit2b2lk IGh5cGVydl9yZXBvcnRfcGFuaWNfbXNnKHBoeXNfYWRkcl90IHBhLCBzaXplX3Qgc2l6ZSk7DQor Ym9vbCBodl9pc19oeXBlcnZfaW5pdGlhbGl6ZWQodm9pZCk7DQordm9pZCBoeXBlcnZfY2xlYW51 cCh2b2lkKTsNCisjZWxzZSAvKiBDT05GSUdfSFlQRVJWICovDQorc3RhdGljIGlubGluZSBib29s IGh2X2lzX2h5cGVydl9pbml0aWFsaXplZCh2b2lkKSB7IHJldHVybiBmYWxzZTsgfQ0KK3N0YXRp YyBpbmxpbmUgdm9pZCBoeXBlcnZfY2xlYW51cCh2b2lkKSB7fQ0KKyNlbmRpZiAvKiBDT05GSUdf SFlQRVJWICovDQorDQorI2lmIElTX0VOQUJMRUQoQ09ORklHX0hZUEVSVikNCitleHRlcm4gaW50 IGh2X3NldHVwX3N0aW1lcjBfaXJxKGludCAqaXJxLCBpbnQgKnZlY3Rvciwgdm9pZCAoKmhhbmRs ZXIpKHZvaWQpKTsNCitleHRlcm4gdm9pZCBodl9yZW1vdmVfc3RpbWVyMF9pcnEoaW50IGlycSk7 DQorI2VuZGlmDQorDQorI2VuZGlmDQotLSANCjEuOC4zLjENCg0K