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, 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 9CA0AC3A5A6 for ; Thu, 19 Sep 2019 14:27:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 54332218AF for ; Thu, 19 Sep 2019 14:27:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="Z5laYT6p" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389707AbfISO1m (ORCPT ); Thu, 19 Sep 2019 10:27:42 -0400 Received: from mail-eopbgr780053.outbound.protection.outlook.com ([40.107.78.53]:38626 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1732411AbfISOZs (ORCPT ); Thu, 19 Sep 2019 10:25:48 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QtZJxbBWOo2zdTo9y6t2qjUifGyNBoCxy5eQB4Jph5JL/vN4VPOyBwWRGlT9Ps5zGewZEWKkaWDstG8g2VPtpbkqxO+4YvX3TwNRBSzRq5wvNaWtKTPcpnY9xbcj/MNMmC8C4hoq3aM9h4PWsDoxteo2cJwv8JfVkHnRtqm5HXl9gVlKQ8a6G5FvuBYS9ntnWBO4M0qYtq6zy38uVpxOb2KudpORAh6PsF6bI5HD5/3U679TAD2wW8Va8PKddaDxvOAfIAC+2lld/Pzd4qW8SG/Xw2w4jZMroUDWtAhoqa+OvGQZDgSYNw1rWYj0uFgaoFkIJMHn0u24wDYG5y8H4Q== 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=vepLWwuZKmOYIAkfD59Q9g/iLxjzCxYdE3KzbH2HEvQ=; b=nE6RQXrpXCboCynp0qnem0TqTfdYeKFWQT1VSoIlu9a7jcrhtTVRTZwSktqgssQVrIP+/FEUbTYGVxNSLidy4yoc7Zv6J40tMCv4QeEHf+Xhx4mZX8VWrxURKRWGfi10WU5EPYMhnjw5CZ1SIHTI3C8+6fUwUxXlNsv/j4c1HexeB5JK34WBoOtdujPJQP8lxAQ2Bv0qC6v2co2A+XsCh65c5NpPsR91hDRAjOa2p9G0AxnI3J/0KH1eWCJRtcyIZysoHx/YQZoiao1Gcm4MB0xkzP0WhqTUJTYXGYWGuHZYu+dQg6bL82F9ismrFmhPAh8eZpUx2i+j4y60Cbb+Lg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vepLWwuZKmOYIAkfD59Q9g/iLxjzCxYdE3KzbH2HEvQ=; b=Z5laYT6pmM5F3Aj8NXknqAcSXTan0fLQ8YB0Fm4+Pugx/TC6eWXVoDiftaly+rms4SSEdxsyfPTk9BtsCze+l429g3iJpNLMnX9UNvaOIRDpQ/m1R+uDsKlOOo40180bb1wGz6WMAYLXDeGSTirwQmhPEiqgq0Wayrj4shuXGOI= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (20.179.149.217) by MN2PR11MB4144.namprd11.prod.outlook.com (20.179.150.210) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2284.20; Thu, 19 Sep 2019 14:25:44 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::45dc:e073:4446:4bf8]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::45dc:e073:4446:4bf8%3]) with mapi id 15.20.2263.023; Thu, 19 Sep 2019 14:25:44 +0000 From: Jerome Pouiller To: "devel@driverdev.osuosl.org" , "linux-wireless@vger.kernel.org" CC: "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Greg Kroah-Hartman , Kalle Valo , "David S . Miller" , David Le Goff , Jerome Pouiller Subject: [PATCH v3 12/20] staging: wfx: add HIF commands helpers Thread-Topic: [PATCH v3 12/20] staging: wfx: add HIF commands helpers Thread-Index: AQHVbvYeO1WTwA1dHUa+Z8LbLgpipw== Date: Thu, 19 Sep 2019 14:25:43 +0000 Message-ID: <20190919142527.31797-13-Jerome.Pouiller@silabs.com> References: <20190919142527.31797-1-Jerome.Pouiller@silabs.com> In-Reply-To: <20190919142527.31797-1-Jerome.Pouiller@silabs.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=Jerome.Pouiller@silabs.com; x-originating-ip: [37.71.187.125] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 09eadac1-2bac-42ad-cdde-08d73d0d41c5 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600167)(711020)(4605104)(1401327)(2017052603328)(7193020);SRVR:MN2PR11MB4144; x-ms-traffictypediagnostic: MN2PR11MB4144: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:17; x-forefront-prvs: 016572D96D x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(396003)(376002)(366004)(39850400004)(346002)(199004)(189003)(86362001)(66066001)(66574012)(2616005)(14454004)(478600001)(54906003)(8676002)(71190400001)(36756003)(71200400001)(7736002)(316002)(305945005)(110136005)(6436002)(256004)(81156014)(14444005)(6486002)(6512007)(186003)(11346002)(91956017)(486006)(446003)(26005)(2501003)(99286004)(66446008)(66946007)(76176011)(476003)(66556008)(64756008)(66476007)(4326008)(102836004)(6506007)(107886003)(5660300002)(30864003)(76116006)(25786009)(81166006)(1076003)(8936002)(2906002)(3846002)(6116002)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:MN2PR11MB4144;H:MN2PR11MB4063.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: silabs.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: oInIF1BDOnmU5r/00DGBXQ2+wgfSiwrbgiVVF1pJ5y2g/sa9Xb1ywQRKb9l1mtDw0A0ljiNeFabEmPKcp+OnI5edP247jAFDOVfgBN6MB7gqGVa+m859M6AxX57GFSr0u5Nz8f+eMkWXi0T0HF8oJCc40FE8YUUiVPeA+EGCkGpUlRw9iGs7VciZvLIn92vgnCmjxkRyJc7U9gYA8Gtvyt9izLbK2zHpZP5S81wQLtMg4A2RksOeGLt7tOmzLSBClgJHZJHyOrlIkiu7vk1pIBFmnGyyjm35Mfz4UypevC+3sc0c7Nf8istDnZ/lciAPB95s3CT2aheHaU0i3LnrJuoLqwH3+NghpbUBg1F8LmcEQ6rD7+LMYO61Mj6e/bvOXSpC3gicU1c1wkeXpCp///NbCa9A2VTE82Rai5myjWg= Content-Type: text/plain; charset="utf-8" Content-ID: <64A51D2FAC6E5B49982934C51FEDB6E9@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 09eadac1-2bac-42ad-cdde-08d73d0d41c5 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Sep 2019 14:25:43.4071 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: cmxW1P9AB0PMD0ouudbjbx935e7e2Go2IcTtGoMMFJBzinYU6hS4HXpDUHsub6RUDbBGKQrIAyHupaGnBHmycg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4144 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPg0KDQpQ cm92aWRlIGFuIGFic3RyYWN0aW9uIGZvciBISUYgY29tbWFuZHMuDQoNClNpZ25lZC1vZmYtYnk6 IErDqXLDtG1lIFBvdWlsbGVyIDxqZXJvbWUucG91aWxsZXJAc2lsYWJzLmNvbT4NCi0tLQ0KIGRy aXZlcnMvc3RhZ2luZy93ZngvaGlmX3R4LmMgICAgIHwgMzc1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysNCiBkcml2ZXJzL3N0YWdpbmcvd2Z4L2hpZl90eC5oICAgICB8ICAzMyArKysN CiBkcml2ZXJzL3N0YWdpbmcvd2Z4L2hpZl90eF9taWIuaCB8IDI4MSArKysrKysrKysrKysrKysr KysrKysrKw0KIDMgZmlsZXMgY2hhbmdlZCwgNjg5IGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL3dmeC9oaWZfdHhfbWliLmgNCg0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3R4LmMgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2hpZl90 eC5jDQppbmRleCBmODFhMTkwODlkYjQuLjc4MWE2ZTI4ZGJhZCAxMDA2NDQNCi0tLSBhL2RyaXZl cnMvc3RhZ2luZy93ZngvaGlmX3R4LmMNCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3R4 LmMNCkBAIC0xMiw2ICsxMiw3IEBADQogI2luY2x1ZGUgImhpZl90eC5oIg0KICNpbmNsdWRlICJ3 ZnguaCINCiAjaW5jbHVkZSAiYmguaCINCisjaW5jbHVkZSAiaHdpby5oIg0KICNpbmNsdWRlICJk ZWJ1Zy5oIg0KIA0KIHZvaWQgd2Z4X2luaXRfaGlmX2NtZChzdHJ1Y3Qgd2Z4X2hpZl9jbWQgKmhp Zl9jbWQpDQpAQCAtMjEsNiArMjIsMjkgQEAgdm9pZCB3ZnhfaW5pdF9oaWZfY21kKHN0cnVjdCB3 ZnhfaGlmX2NtZCAqaGlmX2NtZCkNCiAJbXV0ZXhfaW5pdCgmaGlmX2NtZC0+bG9jayk7DQogfQ0K IA0KK3N0YXRpYyB2b2lkIHdmeF9maWxsX2hlYWRlcihzdHJ1Y3QgaGlmX21zZyAqaGlmLCBpbnQg aWZfaWQsIHVuc2lnbmVkIGludCBjbWQsIHNpemVfdCBzaXplKQ0KK3sNCisJaWYgKGlmX2lkID09 IC0xKQ0KKwkJaWZfaWQgPSAyOw0KKw0KKwlXQVJOKGNtZCA+IDB4M2YsICJpbnZhbGlkIFdTTSBj b21tYW5kICUjLjJ4IiwgY21kKTsNCisJV0FSTihzaXplID4gMHhGRkYsICJyZXF1ZXN0ZWQgYnVm ZmVyIGlzIHRvbyBsYXJnZTogJXp1IGJ5dGVzIiwgc2l6ZSk7DQorCVdBUk4oaWZfaWQgPiAweDMs ICJpbnZhbGlkIGludGVyZmFjZSBJRCAlZCIsIGlmX2lkKTsNCisNCisJaGlmLT5sZW4gPSBjcHVf dG9fbGUxNihzaXplICsgNCk7DQorCWhpZi0+aWQgPSBjbWQ7DQorCWhpZi0+aW50ZXJmYWNlID0g aWZfaWQ7DQorfQ0KKw0KK3N0YXRpYyB2b2lkICp3ZnhfYWxsb2NfaGlmKHNpemVfdCBib2R5X2xl biwgc3RydWN0IGhpZl9tc2cgKipoaWYpDQorew0KKwkqaGlmID0ga3phbGxvYyhzaXplb2Yoc3Ry dWN0IGhpZl9tc2cpICsgYm9keV9sZW4sIEdGUF9LRVJORUwpOw0KKwlpZiAoKmhpZikNCisJCXJl dHVybiAoKmhpZiktPmJvZHk7DQorCWVsc2UNCisJCXJldHVybiBOVUxMOw0KK30NCisNCiBpbnQg d2Z4X2NtZF9zZW5kKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3QgaGlmX21zZyAqcmVxdWVz dCwgdm9pZCAqcmVwbHksIHNpemVfdCByZXBseV9sZW4sIGJvb2wgYXN5bmMpDQogew0KIAljb25z dCBjaGFyICptaWJfbmFtZSA9ICIiOw0KQEAgLTg1LDMgKzEwOSwzNTQgQEAgaW50IHdmeF9jbWRf c2VuZChzdHJ1Y3Qgd2Z4X2RldiAqd2Rldiwgc3RydWN0IGhpZl9tc2cgKnJlcXVlc3QsIHZvaWQg KnJlcGx5LCBzaXoNCiANCiAJcmV0dXJuIHJldDsNCiB9DQorDQorLy8gVGhpcyBmdW5jdGlvbiBp cyBzcGVjaWFsLiBBZnRlciBISUZfUkVRX0lEX1NIVVRfRE9XTiwgY2hpcCB3b24ndCByZXBseSB0 byBhbnkNCisvLyByZXF1ZXN0IGFueW1vcmUuIFdlIG5lZWQgdG8gc2xpZ2h0bHkgaGFjayBzdHJ1 Y3Qgd2Z4X2hpZl9jbWQgZm9yIHRoYXQgam9iLiBCZQ0KKy8vIGNhcmVmdWxsIHRvIG9ubHkgY2Fs bCB0aGlzIGZ1bmNpb24gZHVyaW5nIGRldmljZSB1bnJlZ2lzdGVyLg0KK2ludCBoaWZfc2h1dGRv d24oc3RydWN0IHdmeF9kZXYgKndkZXYpDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgaGlmX21z ZyAqaGlmOw0KKw0KKwl3ZnhfYWxsb2NfaGlmKDAsICZoaWYpOw0KKwl3ZnhfZmlsbF9oZWFkZXIo aGlmLCAtMSwgSElGX1JFUV9JRF9TSFVUX0RPV04sIDApOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQo d2RldiwgaGlmLCBOVUxMLCAwLCB0cnVlKTsNCisJLy8gQWZ0ZXIgdGhpcyBjb21tYW5kLCBjaGlw IHdvbid0IHJlcGx5LiBCZSBzdXJlIHRvIGdpdmUgZW5vdWdoIHRpbWUgdG8NCisJLy8gYmggdG8g c2VuZCBidWZmZXI6DQorCW1zbGVlcCgxMDApOw0KKwl3ZGV2LT5oaWZfY21kLmJ1Zl9zZW5kID0g TlVMTDsNCisJaWYgKHdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwKQ0KKwkJZ3Bpb2Rfc2V0X3ZhbHVl KHdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwLCAwKTsNCisJZWxzZQ0KKwkJY29udHJvbF9yZWdfd3Jp dGUod2RldiwgMCk7DQorCW11dGV4X3VubG9jaygmd2Rldi0+aGlmX2NtZC5sb2NrKTsNCisJa2Zy ZWUoaGlmKTsNCisJcmV0dXJuIHJldDsNCit9DQorDQoraW50IGhpZl9jb25maWd1cmF0aW9uKHN0 cnVjdCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCB1OCAqY29uZiwgc2l6ZV90IGxlbikNCit7DQorCWlu dCByZXQ7DQorCXNpemVfdCBidWZfbGVuID0gc2l6ZW9mKHN0cnVjdCBoaWZfcmVxX2NvbmZpZ3Vy YXRpb24pICsgbGVuOw0KKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOw0KKwlzdHJ1Y3QgaGlmX3JlcV9j b25maWd1cmF0aW9uICpib2R5ID0gd2Z4X2FsbG9jX2hpZihidWZfbGVuLCAmaGlmKTsNCisNCisJ Ym9keS0+bGVuZ3RoID0gY3B1X3RvX2xlMTYobGVuKTsNCisJbWVtY3B5KGJvZHktPnBkc19kYXRh LCBjb25mLCBsZW4pOw0KKwl3ZnhfZmlsbF9oZWFkZXIoaGlmLCAtMSwgSElGX1JFUV9JRF9DT05G SUdVUkFUSU9OLCBidWZfbGVuKTsNCisJcmV0ID0gd2Z4X2NtZF9zZW5kKHdkZXYsIGhpZiwgTlVM TCwgMCwgZmFsc2UpOw0KKwlrZnJlZShoaWYpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitpbnQg aGlmX3Jlc2V0KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBib29sIHJlc2V0X3N0YXQpDQorew0KKwlp bnQgcmV0Ow0KKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOw0KKwlzdHJ1Y3QgaGlmX3JlcV9yZXNldCAq Ym9keSA9IHdmeF9hbGxvY19oaWYoc2l6ZW9mKCpib2R5KSwgJmhpZik7DQorDQorCWJvZHktPnJl c2V0X2ZsYWdzLnJlc2V0X3N0YXQgPSByZXNldF9zdGF0Ow0KKwl3ZnhfZmlsbF9oZWFkZXIoaGlm LCB3dmlmLT5pZCwgSElGX1JFUV9JRF9SRVNFVCwgc2l6ZW9mKCpib2R5KSk7DQorCXJldCA9IHdm eF9jbWRfc2VuZCh3dmlmLT53ZGV2LCBoaWYsIE5VTEwsIDAsIGZhbHNlKTsNCisJa2ZyZWUoaGlm KTsNCisJcmV0dXJuIHJldDsNCit9DQorDQoraW50IGhpZl9yZWFkX21pYihzdHJ1Y3Qgd2Z4X2Rl diAqd2RldiwgaW50IHZpZl9pZCwgdTE2IG1pYl9pZCwgdm9pZCAqdmFsLCBzaXplX3QgdmFsX2xl bikNCit7DQorCWludCByZXQ7DQorCXN0cnVjdCBoaWZfbXNnICpoaWY7DQorCWludCBidWZfbGVu ID0gc2l6ZW9mKHN0cnVjdCBoaWZfY25mX3JlYWRfbWliKSArIHZhbF9sZW47DQorCXN0cnVjdCBo aWZfcmVxX3JlYWRfbWliICpib2R5ID0gd2Z4X2FsbG9jX2hpZihzaXplb2YoKmJvZHkpLCAmaGlm KTsNCisJc3RydWN0IGhpZl9jbmZfcmVhZF9taWIgKnJlcGx5ID0ga21hbGxvYyhidWZfbGVuLCBH RlBfS0VSTkVMKTsNCisNCisJYm9keS0+bWliX2lkID0gY3B1X3RvX2xlMTYobWliX2lkKTsNCisJ d2Z4X2ZpbGxfaGVhZGVyKGhpZiwgdmlmX2lkLCBISUZfUkVRX0lEX1JFQURfTUlCLCBzaXplb2Yo KmJvZHkpKTsNCisJcmV0ID0gd2Z4X2NtZF9zZW5kKHdkZXYsIGhpZiwgcmVwbHksIGJ1Zl9sZW4s IGZhbHNlKTsNCisNCisJaWYgKCFyZXQgJiYgbWliX2lkICE9IHJlcGx5LT5taWJfaWQpIHsNCisJ CWRldl93YXJuKHdkZXYtPmRldiwgIiVzOiBjb25maXJtYXRpb24gbWlzbWF0Y2ggcmVxdWVzdFxu IiwgX19mdW5jX18pOw0KKwkJcmV0ID0gLUVJTzsNCisJfQ0KKwlpZiAocmV0ID09IC1FTk9NRU0p DQorCQlkZXZfZXJyKHdkZXYtPmRldiwgImJ1ZmZlciBpcyB0b28gc21hbGwgdG8gcmVjZWl2ZSAl cyAoJXp1IDwgJWQpXG4iLA0KKwkJCWdldF9taWJfbmFtZShtaWJfaWQpLCB2YWxfbGVuLCByZXBs eS0+bGVuZ3RoKTsNCisJaWYgKCFyZXQpDQorCQltZW1jcHkodmFsLCAmcmVwbHktPm1pYl9kYXRh LCByZXBseS0+bGVuZ3RoKTsNCisJZWxzZQ0KKwkJbWVtc2V0KHZhbCwgMHhGRiwgdmFsX2xlbik7 DQorCWtmcmVlKGhpZik7DQorCWtmcmVlKHJlcGx5KTsNCisJcmV0dXJuIHJldDsNCit9DQorDQor aW50IGhpZl93cml0ZV9taWIoc3RydWN0IHdmeF9kZXYgKndkZXYsIGludCB2aWZfaWQsIHUxNiBt aWJfaWQsIHZvaWQgKnZhbCwgc2l6ZV90IHZhbF9sZW4pDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1 Y3QgaGlmX21zZyAqaGlmOw0KKwlpbnQgYnVmX2xlbiA9IHNpemVvZihzdHJ1Y3QgaGlmX3JlcV93 cml0ZV9taWIpICsgdmFsX2xlbjsNCisJc3RydWN0IGhpZl9yZXFfd3JpdGVfbWliICpib2R5ID0g d2Z4X2FsbG9jX2hpZihidWZfbGVuLCAmaGlmKTsNCisNCisJYm9keS0+bWliX2lkID0gY3B1X3Rv X2xlMTYobWliX2lkKTsNCisJYm9keS0+bGVuZ3RoID0gY3B1X3RvX2xlMTYodmFsX2xlbik7DQor CW1lbWNweSgmYm9keS0+bWliX2RhdGEsIHZhbCwgdmFsX2xlbik7DQorCXdmeF9maWxsX2hlYWRl cihoaWYsIHZpZl9pZCwgSElGX1JFUV9JRF9XUklURV9NSUIsIGJ1Zl9sZW4pOw0KKwlyZXQgPSB3 ZnhfY21kX3NlbmQod2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQor CXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBoaWZfc2NhbihzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwg Y29uc3Qgc3RydWN0IHdmeF9zY2FuX3BhcmFtcyAqYXJnKQ0KK3sNCisJaW50IHJldCwgaTsNCisJ c3RydWN0IGhpZl9tc2cgKmhpZjsNCisJc3RydWN0IGhpZl9zc2lkX2RlZiAqc3NpZHM7DQorCXNp emVfdCBidWZfbGVuID0gc2l6ZW9mKHN0cnVjdCBoaWZfcmVxX3N0YXJ0X3NjYW4pICsNCisJCWFy Zy0+c2Nhbl9yZXEubnVtX29mX2NoYW5uZWxzICogc2l6ZW9mKHU4KSArDQorCQlhcmctPnNjYW5f cmVxLm51bV9vZl9zc2lfZHMgKiBzaXplb2Yoc3RydWN0IGhpZl9zc2lkX2RlZik7DQorCXN0cnVj dCBoaWZfcmVxX3N0YXJ0X3NjYW4gKmJvZHkgPSB3ZnhfYWxsb2NfaGlmKGJ1Zl9sZW4sICZoaWYp Ow0KKwl1OCAqcHRyID0gKHU4ICopIGJvZHkgKyBzaXplb2YoKmJvZHkpOw0KKw0KKwlXQVJOKGFy Zy0+c2Nhbl9yZXEubnVtX29mX2NoYW5uZWxzID4gSElGX0FQSV9NQVhfTkJfQ0hBTk5FTFMsICJp bnZhbGlkIHBhcmFtcyIpOw0KKwlXQVJOKGFyZy0+c2Nhbl9yZXEubnVtX29mX3NzaV9kcyA+IDIs ICJpbnZhbGlkIHBhcmFtcyIpOw0KKwlXQVJOKGFyZy0+c2Nhbl9yZXEuYmFuZCA+IDEsICJpbnZh bGlkIHBhcmFtcyIpOw0KKw0KKwkvLyBGSVhNRTogVGhpcyBBUEkgaXMgdW5uZWNlc3NhcnkgY29t cGxleCwgZml4aW5nIE51bU9mQ2hhbm5lbHMgYW5kDQorCS8vIGFkZGluZyBhIG1lbWJlciBTc2lk RGVmIGF0IGVuZCBvZiBzdHJ1Y3QgaGlmX3JlcV9zdGFydF9zY2FuIHdvdWxkDQorCS8vIHNpbXBs aWZ5IHRoYXQgYSBsb3QuDQorCW1lbWNweShib2R5LCAmYXJnLT5zY2FuX3JlcSwgc2l6ZW9mKCpi b2R5KSk7DQorCWNwdV90b19sZTMycygmYm9keS0+bWluX2NoYW5uZWxfdGltZSk7DQorCWNwdV90 b19sZTMycygmYm9keS0+bWF4X2NoYW5uZWxfdGltZSk7DQorCWNwdV90b19sZTMycygmYm9keS0+ dHhfcG93ZXJfbGV2ZWwpOw0KKwltZW1jcHkocHRyLCBhcmctPnNzaWRzLCBhcmctPnNjYW5fcmVx Lm51bV9vZl9zc2lfZHMgKiBzaXplb2Yoc3RydWN0IGhpZl9zc2lkX2RlZikpOw0KKwlzc2lkcyA9 IChzdHJ1Y3QgaGlmX3NzaWRfZGVmICopIHB0cjsNCisJZm9yIChpID0gMDsgaSA8IGJvZHktPm51 bV9vZl9zc2lfZHM7ICsraSkNCisJCWNwdV90b19sZTMycygmc3NpZHNbaV0uc3NpZF9sZW5ndGgp Ow0KKwlwdHIgKz0gYXJnLT5zY2FuX3JlcS5udW1fb2Zfc3NpX2RzICogc2l6ZW9mKHN0cnVjdCBo aWZfc3NpZF9kZWYpOw0KKwltZW1jcHkocHRyLCBhcmctPmNoLCBhcmctPnNjYW5fcmVxLm51bV9v Zl9jaGFubmVscyAqIHNpemVvZih1OCkpOw0KKwlwdHIgKz0gYXJnLT5zY2FuX3JlcS5udW1fb2Zf Y2hhbm5lbHMgKiBzaXplb2YodTgpOw0KKwlXQVJOKGJ1Zl9sZW4gIT0gcHRyIC0gKHU4ICopIGJv ZHksICJhbGxvY2F0aW9uIHNpemUgbWlzbWF0Y2giKTsNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwg d3ZpZi0+aWQsIEhJRl9SRVFfSURfU1RBUlRfU0NBTiwgYnVmX2xlbik7DQorCXJldCA9IHdmeF9j bWRfc2VuZCh3dmlmLT53ZGV2LCBoaWYsIE5VTEwsIDAsIGZhbHNlKTsNCisJa2ZyZWUoaGlmKTsN CisJcmV0dXJuIHJldDsNCit9DQorDQoraW50IGhpZl9zdG9wX3NjYW4oc3RydWN0IHdmeF92aWYg Knd2aWYpDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOw0KKwkvLyBib2R5 IGFzc29jaWF0ZWQgdG8gSElGX1JFUV9JRF9TVE9QX1NDQU4gaXMgZW1wdHkNCisJd2Z4X2FsbG9j X2hpZigwLCAmaGlmKTsNCisNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgd3ZpZi0+aWQsIEhJRl9S RVFfSURfU1RPUF9TQ0FOLCAwKTsNCisJcmV0ID0gd2Z4X2NtZF9zZW5kKHd2aWYtPndkZXYsIGhp ZiwgTlVMTCwgMCwgZmFsc2UpOw0KKwlrZnJlZShoaWYpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisN CitpbnQgaGlmX2pvaW4oc3RydWN0IHdmeF92aWYgKnd2aWYsIGNvbnN0IHN0cnVjdCBoaWZfcmVx X2pvaW4gKmFyZykNCit7DQorCWludCByZXQ7DQorCXN0cnVjdCBoaWZfbXNnICpoaWY7DQorCXN0 cnVjdCBoaWZfcmVxX2pvaW4gKmJvZHkgPSB3ZnhfYWxsb2NfaGlmKHNpemVvZigqYm9keSksICZo aWYpOw0KKw0KKwltZW1jcHkoYm9keSwgYXJnLCBzaXplb2Yoc3RydWN0IGhpZl9yZXFfam9pbikp Ow0KKwljcHVfdG9fbGUxNnMoJmJvZHktPmNoYW5uZWxfbnVtYmVyKTsNCisJY3B1X3RvX2xlMTZz KCZib2R5LT5hdGltX3dpbmRvdyk7DQorCWNwdV90b19sZTMycygmYm9keS0+c3NpZF9sZW5ndGgp Ow0KKwljcHVfdG9fbGUzMnMoJmJvZHktPmJlYWNvbl9pbnRlcnZhbCk7DQorCWNwdV90b19sZTMy cygmYm9keS0+YmFzaWNfcmF0ZV9zZXQpOw0KKwl3ZnhfZmlsbF9oZWFkZXIoaGlmLCB3dmlmLT5p ZCwgSElGX1JFUV9JRF9KT0lOLCBzaXplb2YoKmJvZHkpKTsNCisJcmV0ID0gd2Z4X2NtZF9zZW5k KHd2aWYtPndkZXYsIGhpZiwgTlVMTCwgMCwgZmFsc2UpOw0KKwlrZnJlZShoaWYpOw0KKwlyZXR1 cm4gcmV0Ow0KK30NCisNCitpbnQgaGlmX3NldF9ic3NfcGFyYW1zKHN0cnVjdCB3ZnhfdmlmICp3 dmlmLCBjb25zdCBzdHJ1Y3QgaGlmX3JlcV9zZXRfYnNzX3BhcmFtcyAqYXJnKQ0KK3sNCisJaW50 IHJldDsNCisJc3RydWN0IGhpZl9tc2cgKmhpZjsNCisJc3RydWN0IGhpZl9yZXFfc2V0X2Jzc19w YXJhbXMgKmJvZHkgPSB3ZnhfYWxsb2NfaGlmKHNpemVvZigqYm9keSksICZoaWYpOw0KKw0KKwlt ZW1jcHkoYm9keSwgYXJnLCBzaXplb2YoKmJvZHkpKTsNCisJY3B1X3RvX2xlMTZzKCZib2R5LT5h aWQpOw0KKwljcHVfdG9fbGUzMnMoJmJvZHktPm9wZXJhdGlvbmFsX3JhdGVfc2V0KTsNCisJd2Z4 X2ZpbGxfaGVhZGVyKGhpZiwgd3ZpZi0+aWQsIEhJRl9SRVFfSURfU0VUX0JTU19QQVJBTVMsIHNp emVvZigqYm9keSkpOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQod3ZpZi0+d2RldiwgaGlmLCBOVUxM LCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBo aWZfYWRkX2tleShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgY29uc3Qgc3RydWN0IGhpZl9yZXFfYWRk X2tleSAqYXJnKQ0KK3sNCisJaW50IHJldDsNCisJc3RydWN0IGhpZl9tc2cgKmhpZjsNCisJLy8g RklYTUU6IG9ubHkgc2VuZCBuZWNlc3NhcnkgYml0cw0KKwlzdHJ1Y3QgaGlmX3JlcV9hZGRfa2V5 ICpib2R5ID0gd2Z4X2FsbG9jX2hpZihzaXplb2YoKmJvZHkpLCAmaGlmKTsNCisNCisJLy8gRklY TUU6IHN3YXAgYnl0ZXMgYXMgbmVjZXNzYXJ5IGluIGJvZHkNCisJbWVtY3B5KGJvZHksIGFyZywg c2l6ZW9mKCpib2R5KSk7DQorCWlmICh3ZnhfYXBpX29sZGVyX3RoYW4od2RldiwgMSwgNSkpDQor CQkvLyBMZWdhY3kgZmlybXdhcmVzIGV4cGVjdCB0aGF0IGFkZF9rZXkgdG8gYmUgc2VudCBvbiBy aWdodA0KKwkJLy8gaW50ZXJmYWNlLg0KKwkJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgYXJnLT5pbnRf aWQsIEhJRl9SRVFfSURfQUREX0tFWSwgc2l6ZW9mKCpib2R5KSk7DQorCWVsc2UNCisJCXdmeF9m aWxsX2hlYWRlcihoaWYsIC0xLCBISUZfUkVRX0lEX0FERF9LRVksIHNpemVvZigqYm9keSkpOw0K KwlyZXQgPSB3ZnhfY21kX3NlbmQod2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVl KGhpZik7DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBoaWZfcmVtb3ZlX2tleShzdHJ1Y3Qg d2Z4X2RldiAqd2RldiwgaW50IGlkeCkNCit7DQorCWludCByZXQ7DQorCXN0cnVjdCBoaWZfbXNn ICpoaWY7DQorCXN0cnVjdCBoaWZfcmVxX3JlbW92ZV9rZXkgKmJvZHkgPSB3ZnhfYWxsb2NfaGlm KHNpemVvZigqYm9keSksICZoaWYpOw0KKw0KKwlib2R5LT5lbnRyeV9pbmRleCA9IGlkeDsNCisJ d2Z4X2ZpbGxfaGVhZGVyKGhpZiwgLTEsIEhJRl9SRVFfSURfUkVNT1ZFX0tFWSwgc2l6ZW9mKCpi b2R5KSk7DQorCXJldCA9IHdmeF9jbWRfc2VuZCh3ZGV2LCBoaWYsIE5VTEwsIDAsIGZhbHNlKTsN CisJa2ZyZWUoaGlmKTsNCisJcmV0dXJuIHJldDsNCit9DQorDQoraW50IGhpZl9zZXRfZWRjYV9x dWV1ZV9wYXJhbXMoc3RydWN0IHdmeF92aWYgKnd2aWYsIGNvbnN0IHN0cnVjdCBoaWZfcmVxX2Vk Y2FfcXVldWVfcGFyYW1zICphcmcpDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgaGlmX21zZyAq aGlmOw0KKwlzdHJ1Y3QgaGlmX3JlcV9lZGNhX3F1ZXVlX3BhcmFtcyAqYm9keSA9IHdmeF9hbGxv Y19oaWYoc2l6ZW9mKCpib2R5KSwgJmhpZik7DQorDQorCS8vIE5PVEU6IHF1ZXVlcyBudW1lcm90 YXRpb24gYXJlIG5vdCB0aGUgc2FtZSBiZXR3ZWVuIFdGeCBhbmQgTGludXgNCisJbWVtY3B5KGJv ZHksIGFyZywgc2l6ZW9mKCpib2R5KSk7DQorCWNwdV90b19sZTE2cygmYm9keS0+Y3dfbWluKTsN CisJY3B1X3RvX2xlMTZzKCZib2R5LT5jd19tYXgpOw0KKwljcHVfdG9fbGUxNnMoJmJvZHktPnR4 X29wX2xpbWl0KTsNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgd3ZpZi0+aWQsIEhJRl9SRVFfSURf RURDQV9RVUVVRV9QQVJBTVMsIHNpemVvZigqYm9keSkpOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQo d3ZpZi0+d2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQorCXJldHVy biByZXQ7DQorfQ0KKw0KK2ludCBoaWZfc2V0X3BtKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBjb25z dCBzdHJ1Y3QgaGlmX3JlcV9zZXRfcG1fbW9kZSAqYXJnKQ0KK3sNCisJaW50IHJldDsNCisJc3Ry dWN0IGhpZl9tc2cgKmhpZjsNCisJc3RydWN0IGhpZl9yZXFfc2V0X3BtX21vZGUgKmJvZHkgPSB3 ZnhfYWxsb2NfaGlmKHNpemVvZigqYm9keSksICZoaWYpOw0KKw0KKwltZW1jcHkoYm9keSwgYXJn LCBzaXplb2YoKmJvZHkpKTsNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgd3ZpZi0+aWQsIEhJRl9S RVFfSURfU0VUX1BNX01PREUsIHNpemVvZigqYm9keSkpOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQo d3ZpZi0+d2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQorCXJldHVy biByZXQ7DQorfQ0KKw0KK2ludCBoaWZfc3RhcnQoc3RydWN0IHdmeF92aWYgKnd2aWYsIGNvbnN0 IHN0cnVjdCBoaWZfcmVxX3N0YXJ0ICphcmcpDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgaGlm X21zZyAqaGlmOw0KKwlzdHJ1Y3QgaGlmX3JlcV9zdGFydCAqYm9keSA9IHdmeF9hbGxvY19oaWYo c2l6ZW9mKCpib2R5KSwgJmhpZik7DQorDQorCW1lbWNweShib2R5LCBhcmcsIHNpemVvZigqYm9k eSkpOw0KKwljcHVfdG9fbGUxNnMoJmJvZHktPmNoYW5uZWxfbnVtYmVyKTsNCisJY3B1X3RvX2xl MzJzKCZib2R5LT5iZWFjb25faW50ZXJ2YWwpOw0KKwljcHVfdG9fbGUzMnMoJmJvZHktPmJhc2lj X3JhdGVfc2V0KTsNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgd3ZpZi0+aWQsIEhJRl9SRVFfSURf U1RBUlQsIHNpemVvZigqYm9keSkpOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQod3ZpZi0+d2Rldiwg aGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQorCXJldHVybiByZXQ7DQorfQ0K Kw0KK2ludCBoaWZfYmVhY29uX3RyYW5zbWl0KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBib29sIGVu YWJsZV9iZWFjb25pbmcpDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOw0K KwlzdHJ1Y3QgaGlmX3JlcV9iZWFjb25fdHJhbnNtaXQgKmJvZHkgPSB3ZnhfYWxsb2NfaGlmKHNp emVvZigqYm9keSksICZoaWYpOw0KKw0KKwlib2R5LT5lbmFibGVfYmVhY29uaW5nID0gZW5hYmxl X2JlYWNvbmluZyA/IDEgOiAwOw0KKwl3ZnhfZmlsbF9oZWFkZXIoaGlmLCB3dmlmLT5pZCwgSElG X1JFUV9JRF9CRUFDT05fVFJBTlNNSVQsIHNpemVvZigqYm9keSkpOw0KKwlyZXQgPSB3ZnhfY21k X3NlbmQod3ZpZi0+d2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQor CXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBoaWZfbWFwX2xpbmsoc3RydWN0IHdmeF92aWYgKnd2 aWYsIHU4ICptYWNfYWRkciwgaW50IGZsYWdzLCBpbnQgc3RhX2lkKQ0KK3sNCisJaW50IHJldDsN CisJc3RydWN0IGhpZl9tc2cgKmhpZjsNCisJc3RydWN0IGhpZl9yZXFfbWFwX2xpbmsgKmJvZHkg PSB3ZnhfYWxsb2NfaGlmKHNpemVvZigqYm9keSksICZoaWYpOw0KKw0KKwlpZiAobWFjX2FkZHIp DQorCQlldGhlcl9hZGRyX2NvcHkoYm9keS0+bWFjX2FkZHIsIG1hY19hZGRyKTsNCisJYm9keS0+ bWFwX2xpbmtfZmxhZ3MgPSAqKHN0cnVjdCBoaWZfbWFwX2xpbmtfZmxhZ3MgKikgJmZsYWdzOw0K Kwlib2R5LT5wZWVyX3N0YV9pZCA9IHN0YV9pZDsNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgd3Zp Zi0+aWQsIEhJRl9SRVFfSURfTUFQX0xJTkssIHNpemVvZigqYm9keSkpOw0KKwlyZXQgPSB3Znhf Y21kX3NlbmQod3ZpZi0+d2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7 DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBoaWZfdXBkYXRlX2llKHN0cnVjdCB3Znhfdmlm ICp3dmlmLCBjb25zdCBzdHJ1Y3QgaGlmX2llX2ZsYWdzICp0YXJnZXRfZnJhbWUsDQorCQkgIGNv bnN0IHU4ICppZXMsIHNpemVfdCBpZXNfbGVuKQ0KK3sNCisJaW50IHJldDsNCisJc3RydWN0IGhp Zl9tc2cgKmhpZjsNCisJaW50IGJ1Zl9sZW4gPSBzaXplb2Yoc3RydWN0IGhpZl9yZXFfdXBkYXRl X2llKSArIGllc19sZW47DQorCXN0cnVjdCBoaWZfcmVxX3VwZGF0ZV9pZSAqYm9keSA9IHdmeF9h bGxvY19oaWYoYnVmX2xlbiwgJmhpZik7DQorDQorCW1lbWNweSgmYm9keS0+aWVfZmxhZ3MsIHRh cmdldF9mcmFtZSwgc2l6ZW9mKHN0cnVjdCBoaWZfaWVfZmxhZ3MpKTsNCisJYm9keS0+bnVtX2lf ZXMgPSBjcHVfdG9fbGUxNigxKTsNCisJbWVtY3B5KGJvZHktPmllLCBpZXMsIGllc19sZW4pOw0K Kwl3ZnhfZmlsbF9oZWFkZXIoaGlmLCB3dmlmLT5pZCwgSElGX1JFUV9JRF9VUERBVEVfSUUsIGJ1 Zl9sZW4pOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQod3ZpZi0+d2RldiwgaGlmLCBOVUxMLCAwLCBm YWxzZSk7DQorCWtmcmVlKGhpZik7DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBoaWZfc2xf c2VuZF9wdWJfa2V5cyhzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgY29uc3QgdWludDhfdCAqcHVia2V5 LCBjb25zdCB1aW50OF90ICpwdWJrZXlfaG1hYykNCit7DQorCWludCByZXQ7DQorCXN0cnVjdCBo aWZfbXNnICpoaWY7DQorCXN0cnVjdCBoaWZfcmVxX3NsX2V4Y2hhbmdlX3B1Yl9rZXlzICpib2R5 ID0gd2Z4X2FsbG9jX2hpZihzaXplb2YoKmJvZHkpLCAmaGlmKTsNCisNCisJYm9keS0+YWxnb3Jp dGhtID0gSElGX1NMX0NVUlZFMjU1MTk7DQorCW1lbWNweShib2R5LT5ob3N0X3B1Yl9rZXksIHB1 YmtleSwgc2l6ZW9mKGJvZHktPmhvc3RfcHViX2tleSkpOw0KKwltZW1jcHkoYm9keS0+aG9zdF9w dWJfa2V5X21hYywgcHVia2V5X2htYWMsIHNpemVvZihib2R5LT5ob3N0X3B1Yl9rZXlfbWFjKSk7 DQorCXdmeF9maWxsX2hlYWRlcihoaWYsIC0xLCBISUZfUkVRX0lEX1NMX0VYQ0hBTkdFX1BVQl9L RVlTLCBzaXplb2YoKmJvZHkpKTsNCisJcmV0ID0gd2Z4X2NtZF9zZW5kKHdkZXYsIGhpZiwgTlVM TCwgMCwgZmFsc2UpOw0KKwlrZnJlZShoaWYpOw0KKwkvLyBDb21wYXRpYmlsaXR5IHdpdGggbGVn YWN5IHNlY3VyZSBsaW5rDQorCWlmIChyZXQgPT0gU0xfUFVCX0tFWV9FWENIQU5HRV9TVEFUVVNf U1VDQ0VTUykNCisJCXJldCA9IDA7DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBoaWZfc2xf Y29uZmlnKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAp DQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOw0KKwlzdHJ1Y3QgaGlmX3Jl cV9zbF9jb25maWd1cmUgKmJvZHkgPSB3ZnhfYWxsb2NfaGlmKHNpemVvZigqYm9keSksICZoaWYp Ow0KKw0KKwltZW1jcHkoYm9keS0+ZW5jcl9ibXAsIGJpdG1hcCwgc2l6ZW9mKGJvZHktPmVuY3Jf Ym1wKSk7DQorCXdmeF9maWxsX2hlYWRlcihoaWYsIC0xLCBISUZfUkVRX0lEX1NMX0NPTkZJR1VS RSwgc2l6ZW9mKCpib2R5KSk7DQorCXJldCA9IHdmeF9jbWRfc2VuZCh3ZGV2LCBoaWYsIE5VTEws IDAsIGZhbHNlKTsNCisJa2ZyZWUoaGlmKTsNCisJcmV0dXJuIHJldDsNCit9DQorDQoraW50IGhp Zl9zbF9zZXRfbWFjX2tleShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgY29uc3QgdWludDhfdCAqc2xr X2tleSwgaW50IGRlc3RpbmF0aW9uKQ0KK3sNCisJaW50IHJldDsNCisJc3RydWN0IGhpZl9tc2cg KmhpZjsNCisJc3RydWN0IGhpZl9yZXFfc2V0X3NsX21hY19rZXkgKmJvZHkgPSB3ZnhfYWxsb2Nf aGlmKHNpemVvZigqYm9keSksICZoaWYpOw0KKw0KKwltZW1jcHkoYm9keS0+a2V5X3ZhbHVlLCBz bGtfa2V5LCBzaXplb2YoYm9keS0+a2V5X3ZhbHVlKSk7DQorCWJvZHktPm90cF9vcl9yYW0gPSBk ZXN0aW5hdGlvbjsNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgLTEsIEhJRl9SRVFfSURfU0VUX1NM X01BQ19LRVksIHNpemVvZigqYm9keSkpOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQod2RldiwgaGlm LCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQorCS8vIENvbXBhdGliaWxpdHkgd2l0 aCBsZWdhY3kgc2VjdXJlIGxpbmsNCisJaWYgKHJldCA9PSBTTF9NQUNfS0VZX1NUQVRVU19TVUND RVNTKQ0KKwkJcmV0ID0gMDsNCisJcmV0dXJuIHJldDsNCit9DQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zdGFnaW5nL3dmeC9oaWZfdHguaCBiL2RyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3R4LmgNCmlu ZGV4IGNjZjJiN2U1ZTg1MS4uMzFmMmEwMmM4NDY2IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9zdGFn aW5nL3dmeC9oaWZfdHguaA0KKysrIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9oaWZfdHguaA0KQEAg LTE1LDYgKzE1LDEyIEBADQogc3RydWN0IHdmeF9kZXY7DQogc3RydWN0IHdmeF92aWY7DQogDQor c3RydWN0IHdmeF9zY2FuX3BhcmFtcyB7DQorCXN0cnVjdCBoaWZfcmVxX3N0YXJ0X3NjYW4gc2Nh bl9yZXE7DQorCXN0cnVjdCBoaWZfc3NpZF9kZWYgKnNzaWRzOw0KKwl1aW50OF90ICpjaDsNCit9 Ow0KKw0KIHN0cnVjdCB3ZnhfaGlmX2NtZCB7DQogCXN0cnVjdCBtdXRleCAgICAgIGxvY2s7DQog CXN0cnVjdCBjb21wbGV0aW9uIHJlYWR5Ow0KQEAgLTMwLDQgKzM2LDMxIEBAIHZvaWQgd2Z4X2lu aXRfaGlmX2NtZChzdHJ1Y3Qgd2Z4X2hpZl9jbWQgKndmeF9oaWZfY21kKTsNCiBpbnQgd2Z4X2Nt ZF9zZW5kKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3QgaGlmX21zZyAqcmVxdWVzdCwNCiAJ CSB2b2lkICpyZXBseSwgc2l6ZV90IHJlcGx5X2xlbiwgYm9vbCBhc3luYyk7DQogDQoraW50IGhp Zl9zaHV0ZG93bihzdHJ1Y3Qgd2Z4X2RldiAqd2Rldik7DQoraW50IGhpZl9jb25maWd1cmF0aW9u KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCB1OCAqY29uZiwgc2l6ZV90IGxlbik7DQoraW50 IGhpZl9yZXNldChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgYm9vbCByZXNldF9zdGF0KTsNCitpbnQg aGlmX3JlYWRfbWliKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBpbnQgdmlmX2lkLCB1MTYgbWliX2lk LA0KKwkJIHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1Zl9zaXplKTsNCitpbnQgaGlmX3dyaXRlX21pYihz dHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IHZpZl9pZCwgdTE2IG1pYl9pZCwNCisJCSAgdm9pZCAq YnVmLCBzaXplX3QgYnVmX3NpemUpOw0KK2ludCBoaWZfc2NhbihzdHJ1Y3Qgd2Z4X3ZpZiAqd3Zp ZiwgY29uc3Qgc3RydWN0IHdmeF9zY2FuX3BhcmFtcyAqYXJnKTsNCitpbnQgaGlmX3N0b3Bfc2Nh bihzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZik7DQoraW50IGhpZl9qb2luKHN0cnVjdCB3ZnhfdmlmICp3 dmlmLCBjb25zdCBzdHJ1Y3QgaGlmX3JlcV9qb2luICphcmcpOw0KK2ludCBoaWZfc2V0X3BtKHN0 cnVjdCB3ZnhfdmlmICp3dmlmLCBjb25zdCBzdHJ1Y3QgaGlmX3JlcV9zZXRfcG1fbW9kZSAqYXJn KTsNCitpbnQgaGlmX3NldF9ic3NfcGFyYW1zKHN0cnVjdCB3ZnhfdmlmICp3dmlmLA0KKwkJICAg ICAgIGNvbnN0IHN0cnVjdCBoaWZfcmVxX3NldF9ic3NfcGFyYW1zICphcmcpOw0KK2ludCBoaWZf YWRkX2tleShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgY29uc3Qgc3RydWN0IGhpZl9yZXFfYWRkX2tl eSAqYXJnKTsNCitpbnQgaGlmX3JlbW92ZV9rZXkoc3RydWN0IHdmeF9kZXYgKndkZXYsIGludCBp ZHgpOw0KK2ludCBoaWZfc2V0X2VkY2FfcXVldWVfcGFyYW1zKHN0cnVjdCB3ZnhfdmlmICp3dmlm LA0KKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBoaWZfcmVxX2VkY2FfcXVldWVfcGFyYW1zICphcmcp Ow0KK2ludCBoaWZfc3RhcnQoc3RydWN0IHdmeF92aWYgKnd2aWYsIGNvbnN0IHN0cnVjdCBoaWZf cmVxX3N0YXJ0ICphcmcpOw0KK2ludCBoaWZfYmVhY29uX3RyYW5zbWl0KHN0cnVjdCB3Znhfdmlm ICp3dmlmLCBib29sIGVuYWJsZSk7DQoraW50IGhpZl9tYXBfbGluayhzdHJ1Y3Qgd2Z4X3ZpZiAq d3ZpZiwgdTggKm1hY19hZGRyLCBpbnQgZmxhZ3MsIGludCBzdGFfaWQpOw0KK2ludCBoaWZfdXBk YXRlX2llKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBjb25zdCBzdHJ1Y3QgaGlmX2llX2ZsYWdzICp0 YXJnZXRfZnJhbWUsDQorCQkgIGNvbnN0IHU4ICppZXMsIHNpemVfdCBpZXNfbGVuKTsNCitpbnQg aGlmX3NsX3NldF9tYWNfa2V5KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCB1aW50OF90ICpz bGtfa2V5LCBpbnQgZGVzdGluYXRpb24pOw0KK2ludCBoaWZfc2xfY29uZmlnKHN0cnVjdCB3Znhf ZGV2ICp3ZGV2LCBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXApOw0KK2ludCBoaWZfc2xfc2Vu ZF9wdWJfa2V5cyhzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwNCisJCQkgY29uc3QgdWludDhfdCAqcHVi a2V5LCBjb25zdCB1aW50OF90ICpwdWJrZXlfaG1hYyk7DQorDQogI2VuZGlmDQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9oaWZfdHhfbWliLmggYi9kcml2ZXJzL3N0YWdpbmcvd2Z4 L2hpZl90eF9taWIuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4u ZjY2MjRhNDAzMDE2DQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2hp Zl90eF9taWIuaA0KQEAgLTAsMCArMSwyODEgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMC1vbmx5ICovDQorLyoNCisgKiBJbXBsZW1lbnRhdGlvbiBvZiBob3N0LXRvLWNo aXAgTUlCcyBvZiBXRnh4eCBTcGxpdCBNYWMgKFdTTSkgQVBJLg0KKyAqDQorICogQ29weXJpZ2h0 IChjKSAyMDE3LTIwMTksIFNpbGljb24gTGFib3JhdG9yaWVzLCBJbmMuDQorICogQ29weXJpZ2h0 IChjKSAyMDEwLCBTVC1Fcmljc3Nvbg0KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgU1QtRXJpY3Nz b24gU0ENCisgKi8NCisjaWZuZGVmIFdGWF9ISUZfVFhfTUlCX0gNCisjZGVmaW5lIFdGWF9ISUZf VFhfTUlCX0gNCisNCisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4NCisNCisjaW5jbHVk ZSAid2Z4LmgiDQorI2luY2x1ZGUgImhpZl90eC5oIg0KKyNpbmNsdWRlICJoaWZfYXBpX21pYi5o Ig0KKw0KK3N0YXRpYyBpbmxpbmUgaW50IGhpZl9zZXRfb3V0cHV0X3Bvd2VyKHN0cnVjdCB3Znhf dmlmICp3dmlmLCBpbnQgcG93ZXJfbGV2ZWwpDQorew0KKwlfX2xlMzIgdmFsID0gY3B1X3RvX2xl MzIocG93ZXJfbGV2ZWwpOw0KKw0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3 dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfQ1VSUkVOVF9UWF9QT1dFUl9MRVZFTCwNCisJ CQkgICAgICZ2YWwsIHNpemVvZih2YWwpKTsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlm X3NldF9iZWFjb25fd2FrZXVwX3BlcmlvZChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwNCisJCQkJCSAg ICAgICB1bnNpZ25lZCBpbnQgZHRpbV9pbnRlcnZhbCwNCisJCQkJCSAgICAgICB1bnNpZ25lZCBp bnQgbGlzdGVuX2ludGVydmFsKQ0KK3sNCisJc3RydWN0IGhpZl9taWJfYmVhY29uX3dha2VfdXBf cGVyaW9kIHZhbCA9IHsNCisJCS53YWtldXBfcGVyaW9kX21pbiA9IGR0aW1faW50ZXJ2YWwsDQor CQkucmVjZWl2ZV9kdGltID0gMCwNCisJCS53YWtldXBfcGVyaW9kX21heCA9IGNwdV90b19sZTE2 KGxpc3Rlbl9pbnRlcnZhbCksDQorCX07DQorDQorCWlmIChkdGltX2ludGVydmFsID4gMHhGRiB8 fCBsaXN0ZW5faW50ZXJ2YWwgPiAweEZGRkYpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisJcmV0dXJu IGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsDQorCQkJICAgICBISUZfTUlCX0lE X0JFQUNPTl9XQUtFVVBfUEVSSU9ELA0KKwkJCSAgICAgJnZhbCwgc2l6ZW9mKHZhbCkpOw0KK30N CisNCitzdGF0aWMgaW5saW5lIGludCBoaWZfc2V0X3JjcGlfcnNzaV90aHJlc2hvbGQoc3RydWN0 IHdmeF92aWYgKnd2aWYsDQorCQkJCQkgICAgICBzdHJ1Y3QgaGlmX21pYl9yY3BpX3Jzc2lfdGhy ZXNob2xkICphcmcpDQorew0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlm LT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfUkNQSV9SU1NJX1RIUkVTSE9MRCwgYXJnLCBzaXpl b2YoKmFyZykpOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGludCBoaWZfZ2V0X2NvdW50ZXJzX3Rh YmxlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LA0KKwkJCQkJIHN0cnVjdCBoaWZfbWliX2V4dGVuZGVk X2NvdW50X3RhYmxlICphcmcpDQorew0KKwlpZiAod2Z4X2FwaV9vbGRlcl90aGFuKHdkZXYsIDEs IDMpKSB7DQorCQkvLyBleHRlbmRlZF9jb3VudF90YWJsZSBpcyB3aWRlciB0aGFuIGNvdW50X3Rh YmxlDQorCQltZW1zZXQoYXJnLCAweEZGLCBzaXplb2YoKmFyZykpOw0KKwkJcmV0dXJuIGhpZl9y ZWFkX21pYih3ZGV2LCAwLCBISUZfTUlCX0lEX0NPVU5URVJTX1RBQkxFLA0KKwkJCQkgICAgYXJn LCBzaXplb2Yoc3RydWN0IGhpZl9taWJfY291bnRfdGFibGUpKTsNCisJfSBlbHNlIHsNCisJCXJl dHVybiBoaWZfcmVhZF9taWIod2RldiwgMCwgSElGX01JQl9JRF9FWFRFTkRFRF9DT1VOVEVSU19U QUJMRSwNCisJCQkJICAgIGFyZywgc2l6ZW9mKHN0cnVjdCBoaWZfbWliX2V4dGVuZGVkX2NvdW50 X3RhYmxlKSk7DQorCX0NCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlmX3NldF9tYWNhZGRy KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCB1OCAqbWFjKQ0KK3sNCisJc3RydWN0IGhpZl9taWJfbWFj X2FkZHJlc3MgbXNnID0geyB9Ow0KKw0KKwlpZiAobWFjKQ0KKwkJZXRoZXJfYWRkcl9jb3B5KG1z Zy5tYWNfYWRkciwgbWFjKTsNCisJcmV0dXJuIGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3Zp Zi0+aWQsIEhJRl9NSUJfSURfRE9UMTFfTUFDX0FERFJFU1MsDQorCQkJICAgICAmbXNnLCBzaXpl b2YobXNnKSk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgaW50IGhpZl9zZXRfcnhfZmlsdGVyKHN0 cnVjdCB3ZnhfdmlmICp3dmlmLCBib29sIGZpbHRlcl9ic3NpZCwNCisJCQkJICAgIGJvb2wgZndk X3Byb2JlX3JlcSkNCit7DQorCXN0cnVjdCBoaWZfbWliX3J4X2ZpbHRlciB2YWwgPSB7IH07DQor DQorCWlmIChmaWx0ZXJfYnNzaWQpDQorCQl2YWwuYnNzaWRfZmlsdGVyID0gMTsNCisJaWYgKGZ3 ZF9wcm9iZV9yZXEpDQorCQl2YWwuZndkX3Byb2JlX3JlcSA9IDE7DQorCXJldHVybiBoaWZfd3Jp dGVfbWliKHd2aWYtPndkZXYsIHd2aWYtPmlkLCBISUZfTUlCX0lEX1JYX0ZJTFRFUiwNCisJCQkg ICAgICZ2YWwsIHNpemVvZih2YWwpKTsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlmX3Nl dF9iZWFjb25fZmlsdGVyX3RhYmxlKHN0cnVjdCB3ZnhfdmlmICp3dmlmLA0KKwkJCQkJICAgICAg c3RydWN0IGhpZl9taWJfYmNuX2ZpbHRlcl90YWJsZSAqZnQpDQorew0KKwlzaXplX3QgYnVmX2xl biA9IHN0cnVjdF9zaXplKGZ0LCBpZV90YWJsZSwgZnQtPm51bV9vZl9pbmZvX2VsbXRzKTsNCisN CisJY3B1X3RvX2xlMzJzKCZmdC0+bnVtX29mX2luZm9fZWxtdHMpOw0KKwlyZXR1cm4gaGlmX3dy aXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfQkVBQ09O X0ZJTFRFUl9UQUJMRSwgZnQsIGJ1Zl9sZW4pOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGludCBo aWZfYmVhY29uX2ZpbHRlcl9jb250cm9sKHN0cnVjdCB3ZnhfdmlmICp3dmlmLA0KKwkJCQkJICAg IGludCBlbmFibGUsIGludCBiZWFjb25fY291bnQpDQorew0KKwlzdHJ1Y3QgaGlmX21pYl9iY25f ZmlsdGVyX2VuYWJsZSBhcmcgPSB7DQorCQkuZW5hYmxlID0gY3B1X3RvX2xlMzIoZW5hYmxlKSwN CisJCS5iY25fY291bnQgPSBjcHVfdG9fbGUzMihiZWFjb25fY291bnQpLA0KKwl9Ow0KKwlyZXR1 cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJf SURfQkVBQ09OX0ZJTFRFUl9FTkFCTEUsICZhcmcsIHNpemVvZihhcmcpKTsNCit9DQorDQorc3Rh dGljIGlubGluZSBpbnQgaGlmX3NldF9vcGVyYXRpb25hbF9tb2RlKHN0cnVjdCB3ZnhfZGV2ICp3 ZGV2LA0KKwkJCQkJICAgZW51bSBoaWZfb3BfcG93ZXJfbW9kZSBtb2RlKQ0KK3sNCisJc3RydWN0 IGhpZl9taWJfZ2xfb3BlcmF0aW9uYWxfcG93ZXJfbW9kZSB2YWwgPSB7DQorCQkucG93ZXJfbW9k ZSA9IG1vZGUsDQorCQkud3VwX2luZF9hY3RpdmF0aW9uID0gMSwNCisJfTsNCisNCisJcmV0dXJu IGhpZl93cml0ZV9taWIod2RldiwgLTEsIEhJRl9NSUJfSURfR0xfT1BFUkFUSU9OQUxfUE9XRVJf TU9ERSwNCisJCQkgICAgICZ2YWwsIHNpemVvZih2YWwpKTsNCit9DQorDQorc3RhdGljIGlubGlu ZSBpbnQgaGlmX3NldF90ZW1wbGF0ZV9mcmFtZShzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwNCisJCQkJ CSBzdHJ1Y3QgaGlmX21pYl90ZW1wbGF0ZV9mcmFtZSAqYXJnKQ0KK3sNCisJcmV0dXJuIGhpZl93 cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsIEhJRl9NSUJfSURfVEVNUExBVEVfRlJBTUUs DQorCQkJICAgICBhcmcsIHNpemVvZigqYXJnKSk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgaW50 IGhpZl9zZXRfbWZwKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBib29sIGNhcGFibGUsIGJvb2wgcmVx dWlyZWQpDQorew0KKwlzdHJ1Y3QgaGlmX21pYl9wcm90ZWN0ZWRfbWdtdF9wb2xpY3kgdmFsID0g eyB9Ow0KKw0KKwlXQVJOX09OKHJlcXVpcmVkICYmICFjYXBhYmxlKTsNCisJaWYgKGNhcGFibGUp IHsNCisJCXZhbC5wbWZfZW5hYmxlID0gMTsNCisJCXZhbC5ob3N0X2VuY19hdXRoX2ZyYW1lcyA9 IDE7DQorCX0NCisJaWYgKCFyZXF1aXJlZCkNCisJCXZhbC51bnBtZl9hbGxvd2VkID0gMTsNCisJ Y3B1X3RvX2xlMzJzKCZ2YWwpOw0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3 dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfUFJPVEVDVEVEX01HTVRfUE9MSUNZLA0KKwkJ CSAgICAgJnZhbCwgc2l6ZW9mKHZhbCkpOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGludCBoaWZf c2V0X2Jsb2NrX2Fja19wb2xpY3koc3RydWN0IHdmeF92aWYgKnd2aWYsDQorCQkJCQkgICB1OCB0 eF90aWRfcG9saWN5LCB1OCByeF90aWRfcG9saWN5KQ0KK3sNCisJc3RydWN0IGhpZl9taWJfYmxv Y2tfYWNrX3BvbGljeSB2YWwgPSB7DQorCQkuYmxvY2tfYWNrX3R4X3RpZF9wb2xpY3kgPSB0eF90 aWRfcG9saWN5LA0KKwkJLmJsb2NrX2Fja19yeF90aWRfcG9saWN5ID0gcnhfdGlkX3BvbGljeSwN CisJfTsNCisNCisJcmV0dXJuIGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsIEhJ Rl9NSUJfSURfQkxPQ0tfQUNLX1BPTElDWSwNCisJCQkgICAgICZ2YWwsIHNpemVvZih2YWwpKTsN Cit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlmX3NldF9hc3NvY2lhdGlvbl9tb2RlKHN0cnVj dCB3ZnhfdmlmICp3dmlmLA0KKwkJCQkJICAgc3RydWN0IGhpZl9taWJfc2V0X2Fzc29jaWF0aW9u X21vZGUgKmFyZykNCit7DQorCXJldHVybiBoaWZfd3JpdGVfbWliKHd2aWYtPndkZXYsIHd2aWYt PmlkLA0KKwkJCSAgICAgSElGX01JQl9JRF9TRVRfQVNTT0NJQVRJT05fTU9ERSwgYXJnLCBzaXpl b2YoKmFyZykpOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGludCBoaWZfc2V0X3R4X3JhdGVfcmV0 cnlfcG9saWN5KHN0cnVjdCB3ZnhfdmlmICp3dmlmLA0KKwkJCQkJICAgICAgIHN0cnVjdCBoaWZf bWliX3NldF90eF9yYXRlX3JldHJ5X3BvbGljeSAqYXJnKQ0KK3sNCisJc2l6ZV90IHNpemUgPSBz dHJ1Y3Rfc2l6ZShhcmcsIHR4X3JhdGVfcmV0cnlfcG9saWN5LCBhcmctPm51bV90eF9yYXRlX3Bv bGljaWVzKTsNCisNCisJcmV0dXJuIGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQs DQorCQkJICAgICBISUZfTUlCX0lEX1NFVF9UWF9SQVRFX1JFVFJZX1BPTElDWSwgYXJnLCBzaXpl KTsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlmX3NldF9tYWNfYWRkcl9jb25kaXRpb24o c3RydWN0IHdmeF92aWYgKnd2aWYsDQorCQkJCQkgICAgIHN0cnVjdCBoaWZfbWliX21hY19hZGRy X2RhdGFfZnJhbWVfY29uZGl0aW9uICphcmcpDQorew0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3 dmlmLT53ZGV2LCB3dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfTUFDX0FERFJfREFUQUZS QU1FX0NPTkRJVElPTiwNCisJCQkgICAgIGFyZywgc2l6ZW9mKCphcmcpKTsNCit9DQorDQorc3Rh dGljIGlubGluZSBpbnQgaGlmX3NldF91Y19tY19iY19jb25kaXRpb24oc3RydWN0IHdmeF92aWYg Knd2aWYsDQorCQkJCQkgICAgIHN0cnVjdCBoaWZfbWliX3VjX21jX2JjX2RhdGFfZnJhbWVfY29u ZGl0aW9uICphcmcpDQorew0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlm LT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfVUNfTUNfQkNfREFUQUZSQU1FX0NPTkRJVElPTiwN CisJCQkgICAgIGFyZywgc2l6ZW9mKCphcmcpKTsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQg aGlmX3NldF9jb25maWdfZGF0YV9maWx0ZXIoc3RydWN0IHdmeF92aWYgKnd2aWYsDQorCQkJCQkg ICAgIHN0cnVjdCBoaWZfbWliX2NvbmZpZ19kYXRhX2ZpbHRlciAqYXJnKQ0KK3sNCisJcmV0dXJu IGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsDQorCQkJICAgICBISUZfTUlCX0lE X0NPTkZJR19EQVRBX0ZJTFRFUiwgYXJnLCBzaXplb2YoKmFyZykpOw0KK30NCisNCitzdGF0aWMg aW5saW5lIGludCBoaWZfc2V0X2RhdGFfZmlsdGVyaW5nKHN0cnVjdCB3ZnhfdmlmICp3dmlmLA0K KwkJCQkJIHN0cnVjdCBoaWZfbWliX3NldF9kYXRhX2ZpbHRlcmluZyAqYXJnKQ0KK3sNCisJcmV0 dXJuIGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsDQorCQkJICAgICBISUZfTUlC X0lEX1NFVF9EQVRBX0ZJTFRFUklORywgYXJnLCBzaXplb2YoKmFyZykpOw0KK30NCisNCitzdGF0 aWMgaW5saW5lIGludCBoaWZfa2VlcF9hbGl2ZV9wZXJpb2Qoc3RydWN0IHdmeF92aWYgKnd2aWYs IGludCBwZXJpb2QpDQorew0KKwlzdHJ1Y3QgaGlmX21pYl9rZWVwX2FsaXZlX3BlcmlvZCBhcmcg PSB7DQorCQkua2VlcF9hbGl2ZV9wZXJpb2QgPSBjcHVfdG9fbGUxNihwZXJpb2QpLA0KKwl9Ow0K Kw0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwgSElGX01JQl9J RF9LRUVQX0FMSVZFX1BFUklPRCwNCisJCQkgICAgICZhcmcsIHNpemVvZihhcmcpKTsNCit9Ow0K Kw0KK3N0YXRpYyBpbmxpbmUgaW50IGhpZl9zZXRfYXJwX2lwdjRfZmlsdGVyKHN0cnVjdCB3Znhf dmlmICp3dmlmLA0KKwkJCQkJICBzdHJ1Y3QgaGlmX21pYl9hcnBfaXBfYWRkcl90YWJsZSAqZnAp DQorew0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwNCisJCQkg ICAgIEhJRl9NSUJfSURfQVJQX0lQX0FERFJFU1NFU19UQUJMRSwNCisJCQkgICAgIGZwLCBzaXpl b2YoKmZwKSk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgaW50IGhpZl91c2VfbXVsdGlfdHhfY29u ZihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwNCisJCQkJCWJvb2wgZW5hYmxlZCkNCit7DQorCV9fbGUz MiBhcmcgPSBlbmFibGVkID8gY3B1X3RvX2xlMzIoMSkgOiAwOw0KKw0KKwlyZXR1cm4gaGlmX3dy aXRlX21pYih3ZGV2LCAtMSwgSElGX01JQl9JRF9HTF9TRVRfTVVMVElfTVNHLA0KKwkJCSAgICAg JmFyZywgc2l6ZW9mKGFyZykpOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGludCBoaWZfc2V0X3Vh cHNkX2luZm8oc3RydWN0IHdmeF92aWYgKnd2aWYsDQorCQkJCSAgICAgc3RydWN0IGhpZl9taWJf c2V0X3VhcHNkX2luZm9ybWF0aW9uICphcmcpDQorew0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3 dmlmLT53ZGV2LCB3dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfU0VUX1VBUFNEX0lORk9S TUFUSU9OLA0KKwkJCSAgICAgYXJnLCBzaXplb2YoKmFyZykpOw0KK30NCisNCitzdGF0aWMgaW5s aW5lIGludCBoaWZfZXJwX3VzZV9wcm90ZWN0aW9uKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBib29s IGVuYWJsZSkNCit7DQorCV9fbGUzMiBhcmcgPSBlbmFibGUgPyBjcHVfdG9fbGUzMigxKSA6IDA7 DQorDQorCXJldHVybiBoaWZfd3JpdGVfbWliKHd2aWYtPndkZXYsIHd2aWYtPmlkLA0KKwkJCSAg ICAgSElGX01JQl9JRF9OT05fRVJQX1BST1RFQ1RJT04sICZhcmcsIHNpemVvZihhcmcpKTsNCit9 DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlmX3Nsb3RfdGltZShzdHJ1Y3Qgd2Z4X3ZpZiAqd3Zp ZiwgaW50IHZhbCkNCit7DQorCV9fbGUzMiBhcmcgPSBjcHVfdG9fbGUzMih2YWwpOw0KKw0KKwly ZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwgSElGX01JQl9JRF9TTE9U X1RJTUUsDQorCQkJICAgICAmYXJnLCBzaXplb2YoYXJnKSk7DQorfQ0KKw0KK3N0YXRpYyBpbmxp bmUgaW50IGhpZl9kdWFsX2N0c19wcm90ZWN0aW9uKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBib29s IHZhbCkNCit7DQorCXN0cnVjdCBoaWZfbWliX3NldF9odF9wcm90ZWN0aW9uIGFyZyA9IHsNCisJ CS5kdWFsX2N0c19wcm90ID0gdmFsLA0KKwl9Ow0KKw0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3 dmlmLT53ZGV2LCB3dmlmLT5pZCwgSElGX01JQl9JRF9TRVRfSFRfUFJPVEVDVElPTiwNCisJCQkg ICAgICZhcmcsIHNpemVvZihhcmcpKTsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlmX3dl cF9kZWZhdWx0X2tleV9pZChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgaW50IHZhbCkNCit7DQorCV9f bGUzMiBhcmcgPSBjcHVfdG9fbGUzMih2YWwpOw0KKw0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3 dmlmLT53ZGV2LCB3dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfRE9UMTFfV0VQX0RFRkFV TFRfS0VZX0lELA0KKwkJCSAgICAgJmFyZywgc2l6ZW9mKGFyZykpOw0KK30NCisNCitzdGF0aWMg aW5saW5lIGludCBoaWZfcnRzX3RocmVzaG9sZChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgaW50IHZh bCkNCit7DQorCV9fbGUzMiBhcmcgPSBjcHVfdG9fbGUzMih2YWwgPiAwID8gdmFsIDogMHhGRkZG KTsNCisNCisJcmV0dXJuIGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsDQorCQkJ ICAgICBISUZfTUlCX0lEX0RPVDExX1JUU19USFJFU0hPTEQsICZhcmcsIHNpemVvZihhcmcpKTsN Cit9DQorDQorI2VuZGlmDQotLSANCjIuMjAuMQ0K 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.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 07B01C49ED7 for ; Thu, 19 Sep 2019 14:26:27 +0000 (UTC) Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D1FEF20882 for ; Thu, 19 Sep 2019 14:26:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="Z5laYT6p" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D1FEF20882 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=silabs.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id A97B98665D; Thu, 19 Sep 2019 14:26:26 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id m+sNAxPPiHFk; Thu, 19 Sep 2019 14:26:13 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id 4A31986B50; Thu, 19 Sep 2019 14:25:56 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 2B7DC1BF23C for ; Thu, 19 Sep 2019 14:25:51 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 1A52C85FA5 for ; Thu, 19 Sep 2019 14:25:51 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kXa5BO6qNtGQ for ; Thu, 19 Sep 2019 14:25:47 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from NAM04-CO1-obe.outbound.protection.outlook.com (mail-eopbgr690045.outbound.protection.outlook.com [40.107.69.45]) by fraxinus.osuosl.org (Postfix) with ESMTPS id EAAED85F60 for ; Thu, 19 Sep 2019 14:25:45 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QtZJxbBWOo2zdTo9y6t2qjUifGyNBoCxy5eQB4Jph5JL/vN4VPOyBwWRGlT9Ps5zGewZEWKkaWDstG8g2VPtpbkqxO+4YvX3TwNRBSzRq5wvNaWtKTPcpnY9xbcj/MNMmC8C4hoq3aM9h4PWsDoxteo2cJwv8JfVkHnRtqm5HXl9gVlKQ8a6G5FvuBYS9ntnWBO4M0qYtq6zy38uVpxOb2KudpORAh6PsF6bI5HD5/3U679TAD2wW8Va8PKddaDxvOAfIAC+2lld/Pzd4qW8SG/Xw2w4jZMroUDWtAhoqa+OvGQZDgSYNw1rWYj0uFgaoFkIJMHn0u24wDYG5y8H4Q== 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=vepLWwuZKmOYIAkfD59Q9g/iLxjzCxYdE3KzbH2HEvQ=; b=nE6RQXrpXCboCynp0qnem0TqTfdYeKFWQT1VSoIlu9a7jcrhtTVRTZwSktqgssQVrIP+/FEUbTYGVxNSLidy4yoc7Zv6J40tMCv4QeEHf+Xhx4mZX8VWrxURKRWGfi10WU5EPYMhnjw5CZ1SIHTI3C8+6fUwUxXlNsv/j4c1HexeB5JK34WBoOtdujPJQP8lxAQ2Bv0qC6v2co2A+XsCh65c5NpPsR91hDRAjOa2p9G0AxnI3J/0KH1eWCJRtcyIZysoHx/YQZoiao1Gcm4MB0xkzP0WhqTUJTYXGYWGuHZYu+dQg6bL82F9ismrFmhPAh8eZpUx2i+j4y60Cbb+Lg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vepLWwuZKmOYIAkfD59Q9g/iLxjzCxYdE3KzbH2HEvQ=; b=Z5laYT6pmM5F3Aj8NXknqAcSXTan0fLQ8YB0Fm4+Pugx/TC6eWXVoDiftaly+rms4SSEdxsyfPTk9BtsCze+l429g3iJpNLMnX9UNvaOIRDpQ/m1R+uDsKlOOo40180bb1wGz6WMAYLXDeGSTirwQmhPEiqgq0Wayrj4shuXGOI= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (20.179.149.217) by MN2PR11MB4144.namprd11.prod.outlook.com (20.179.150.210) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2284.20; Thu, 19 Sep 2019 14:25:44 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::45dc:e073:4446:4bf8]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::45dc:e073:4446:4bf8%3]) with mapi id 15.20.2263.023; Thu, 19 Sep 2019 14:25:44 +0000 From: Jerome Pouiller To: "devel@driverdev.osuosl.org" , "linux-wireless@vger.kernel.org" Subject: [PATCH v3 12/20] staging: wfx: add HIF commands helpers Thread-Topic: [PATCH v3 12/20] staging: wfx: add HIF commands helpers Thread-Index: AQHVbvYeO1WTwA1dHUa+Z8LbLgpipw== Date: Thu, 19 Sep 2019 14:25:43 +0000 Message-ID: <20190919142527.31797-13-Jerome.Pouiller@silabs.com> References: <20190919142527.31797-1-Jerome.Pouiller@silabs.com> In-Reply-To: <20190919142527.31797-1-Jerome.Pouiller@silabs.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=Jerome.Pouiller@silabs.com; x-originating-ip: [37.71.187.125] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 09eadac1-2bac-42ad-cdde-08d73d0d41c5 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600167)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:MN2PR11MB4144; x-ms-traffictypediagnostic: MN2PR11MB4144: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:17; x-forefront-prvs: 016572D96D x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(396003)(376002)(366004)(39850400004)(346002)(199004)(189003)(86362001)(66066001)(66574012)(2616005)(14454004)(478600001)(54906003)(8676002)(71190400001)(36756003)(71200400001)(7736002)(316002)(305945005)(110136005)(6436002)(256004)(81156014)(14444005)(6486002)(6512007)(186003)(11346002)(91956017)(486006)(446003)(26005)(2501003)(99286004)(66446008)(66946007)(76176011)(476003)(66556008)(64756008)(66476007)(4326008)(102836004)(6506007)(107886003)(5660300002)(30864003)(76116006)(25786009)(81166006)(1076003)(8936002)(2906002)(3846002)(6116002)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR11MB4144; H:MN2PR11MB4063.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: silabs.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: oInIF1BDOnmU5r/00DGBXQ2+wgfSiwrbgiVVF1pJ5y2g/sa9Xb1ywQRKb9l1mtDw0A0ljiNeFabEmPKcp+OnI5edP247jAFDOVfgBN6MB7gqGVa+m859M6AxX57GFSr0u5Nz8f+eMkWXi0T0HF8oJCc40FE8YUUiVPeA+EGCkGpUlRw9iGs7VciZvLIn92vgnCmjxkRyJc7U9gYA8Gtvyt9izLbK2zHpZP5S81wQLtMg4A2RksOeGLt7tOmzLSBClgJHZJHyOrlIkiu7vk1pIBFmnGyyjm35Mfz4UypevC+3sc0c7Nf8istDnZ/lciAPB95s3CT2aheHaU0i3LnrJuoLqwH3+NghpbUBg1F8LmcEQ6rD7+LMYO61Mj6e/bvOXSpC3gicU1c1wkeXpCp///NbCa9A2VTE82Rai5myjWg= Content-ID: <64A51D2FAC6E5B49982934C51FEDB6E9@namprd11.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 09eadac1-2bac-42ad-cdde-08d73d0d41c5 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Sep 2019 14:25:43.4071 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: cmxW1P9AB0PMD0ouudbjbx935e7e2Go2IcTtGoMMFJBzinYU6hS4HXpDUHsub6RUDbBGKQrIAyHupaGnBHmycg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4144 X-BeenThere: driverdev-devel@linuxdriverproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Driver Project Developer List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Greg Kroah-Hartman , David Le Goff , "David S . Miller" , Kalle Valo Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPg0KDQpQ cm92aWRlIGFuIGFic3RyYWN0aW9uIGZvciBISUYgY29tbWFuZHMuDQoNClNpZ25lZC1vZmYtYnk6 IErDqXLDtG1lIFBvdWlsbGVyIDxqZXJvbWUucG91aWxsZXJAc2lsYWJzLmNvbT4NCi0tLQ0KIGRy aXZlcnMvc3RhZ2luZy93ZngvaGlmX3R4LmMgICAgIHwgMzc1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysNCiBkcml2ZXJzL3N0YWdpbmcvd2Z4L2hpZl90eC5oICAgICB8ICAzMyArKysN CiBkcml2ZXJzL3N0YWdpbmcvd2Z4L2hpZl90eF9taWIuaCB8IDI4MSArKysrKysrKysrKysrKysr KysrKysrKw0KIDMgZmlsZXMgY2hhbmdlZCwgNjg5IGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL3dmeC9oaWZfdHhfbWliLmgNCg0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3R4LmMgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2hpZl90 eC5jDQppbmRleCBmODFhMTkwODlkYjQuLjc4MWE2ZTI4ZGJhZCAxMDA2NDQNCi0tLSBhL2RyaXZl cnMvc3RhZ2luZy93ZngvaGlmX3R4LmMNCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3R4 LmMNCkBAIC0xMiw2ICsxMiw3IEBADQogI2luY2x1ZGUgImhpZl90eC5oIg0KICNpbmNsdWRlICJ3 ZnguaCINCiAjaW5jbHVkZSAiYmguaCINCisjaW5jbHVkZSAiaHdpby5oIg0KICNpbmNsdWRlICJk ZWJ1Zy5oIg0KIA0KIHZvaWQgd2Z4X2luaXRfaGlmX2NtZChzdHJ1Y3Qgd2Z4X2hpZl9jbWQgKmhp Zl9jbWQpDQpAQCAtMjEsNiArMjIsMjkgQEAgdm9pZCB3ZnhfaW5pdF9oaWZfY21kKHN0cnVjdCB3 ZnhfaGlmX2NtZCAqaGlmX2NtZCkNCiAJbXV0ZXhfaW5pdCgmaGlmX2NtZC0+bG9jayk7DQogfQ0K IA0KK3N0YXRpYyB2b2lkIHdmeF9maWxsX2hlYWRlcihzdHJ1Y3QgaGlmX21zZyAqaGlmLCBpbnQg aWZfaWQsIHVuc2lnbmVkIGludCBjbWQsIHNpemVfdCBzaXplKQ0KK3sNCisJaWYgKGlmX2lkID09 IC0xKQ0KKwkJaWZfaWQgPSAyOw0KKw0KKwlXQVJOKGNtZCA+IDB4M2YsICJpbnZhbGlkIFdTTSBj b21tYW5kICUjLjJ4IiwgY21kKTsNCisJV0FSTihzaXplID4gMHhGRkYsICJyZXF1ZXN0ZWQgYnVm ZmVyIGlzIHRvbyBsYXJnZTogJXp1IGJ5dGVzIiwgc2l6ZSk7DQorCVdBUk4oaWZfaWQgPiAweDMs ICJpbnZhbGlkIGludGVyZmFjZSBJRCAlZCIsIGlmX2lkKTsNCisNCisJaGlmLT5sZW4gPSBjcHVf dG9fbGUxNihzaXplICsgNCk7DQorCWhpZi0+aWQgPSBjbWQ7DQorCWhpZi0+aW50ZXJmYWNlID0g aWZfaWQ7DQorfQ0KKw0KK3N0YXRpYyB2b2lkICp3ZnhfYWxsb2NfaGlmKHNpemVfdCBib2R5X2xl biwgc3RydWN0IGhpZl9tc2cgKipoaWYpDQorew0KKwkqaGlmID0ga3phbGxvYyhzaXplb2Yoc3Ry dWN0IGhpZl9tc2cpICsgYm9keV9sZW4sIEdGUF9LRVJORUwpOw0KKwlpZiAoKmhpZikNCisJCXJl dHVybiAoKmhpZiktPmJvZHk7DQorCWVsc2UNCisJCXJldHVybiBOVUxMOw0KK30NCisNCiBpbnQg d2Z4X2NtZF9zZW5kKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3QgaGlmX21zZyAqcmVxdWVz dCwgdm9pZCAqcmVwbHksIHNpemVfdCByZXBseV9sZW4sIGJvb2wgYXN5bmMpDQogew0KIAljb25z dCBjaGFyICptaWJfbmFtZSA9ICIiOw0KQEAgLTg1LDMgKzEwOSwzNTQgQEAgaW50IHdmeF9jbWRf c2VuZChzdHJ1Y3Qgd2Z4X2RldiAqd2Rldiwgc3RydWN0IGhpZl9tc2cgKnJlcXVlc3QsIHZvaWQg KnJlcGx5LCBzaXoNCiANCiAJcmV0dXJuIHJldDsNCiB9DQorDQorLy8gVGhpcyBmdW5jdGlvbiBp cyBzcGVjaWFsLiBBZnRlciBISUZfUkVRX0lEX1NIVVRfRE9XTiwgY2hpcCB3b24ndCByZXBseSB0 byBhbnkNCisvLyByZXF1ZXN0IGFueW1vcmUuIFdlIG5lZWQgdG8gc2xpZ2h0bHkgaGFjayBzdHJ1 Y3Qgd2Z4X2hpZl9jbWQgZm9yIHRoYXQgam9iLiBCZQ0KKy8vIGNhcmVmdWxsIHRvIG9ubHkgY2Fs bCB0aGlzIGZ1bmNpb24gZHVyaW5nIGRldmljZSB1bnJlZ2lzdGVyLg0KK2ludCBoaWZfc2h1dGRv d24oc3RydWN0IHdmeF9kZXYgKndkZXYpDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgaGlmX21z ZyAqaGlmOw0KKw0KKwl3ZnhfYWxsb2NfaGlmKDAsICZoaWYpOw0KKwl3ZnhfZmlsbF9oZWFkZXIo aGlmLCAtMSwgSElGX1JFUV9JRF9TSFVUX0RPV04sIDApOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQo d2RldiwgaGlmLCBOVUxMLCAwLCB0cnVlKTsNCisJLy8gQWZ0ZXIgdGhpcyBjb21tYW5kLCBjaGlw IHdvbid0IHJlcGx5LiBCZSBzdXJlIHRvIGdpdmUgZW5vdWdoIHRpbWUgdG8NCisJLy8gYmggdG8g c2VuZCBidWZmZXI6DQorCW1zbGVlcCgxMDApOw0KKwl3ZGV2LT5oaWZfY21kLmJ1Zl9zZW5kID0g TlVMTDsNCisJaWYgKHdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwKQ0KKwkJZ3Bpb2Rfc2V0X3ZhbHVl KHdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwLCAwKTsNCisJZWxzZQ0KKwkJY29udHJvbF9yZWdfd3Jp dGUod2RldiwgMCk7DQorCW11dGV4X3VubG9jaygmd2Rldi0+aGlmX2NtZC5sb2NrKTsNCisJa2Zy ZWUoaGlmKTsNCisJcmV0dXJuIHJldDsNCit9DQorDQoraW50IGhpZl9jb25maWd1cmF0aW9uKHN0 cnVjdCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCB1OCAqY29uZiwgc2l6ZV90IGxlbikNCit7DQorCWlu dCByZXQ7DQorCXNpemVfdCBidWZfbGVuID0gc2l6ZW9mKHN0cnVjdCBoaWZfcmVxX2NvbmZpZ3Vy YXRpb24pICsgbGVuOw0KKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOw0KKwlzdHJ1Y3QgaGlmX3JlcV9j b25maWd1cmF0aW9uICpib2R5ID0gd2Z4X2FsbG9jX2hpZihidWZfbGVuLCAmaGlmKTsNCisNCisJ Ym9keS0+bGVuZ3RoID0gY3B1X3RvX2xlMTYobGVuKTsNCisJbWVtY3B5KGJvZHktPnBkc19kYXRh LCBjb25mLCBsZW4pOw0KKwl3ZnhfZmlsbF9oZWFkZXIoaGlmLCAtMSwgSElGX1JFUV9JRF9DT05G SUdVUkFUSU9OLCBidWZfbGVuKTsNCisJcmV0ID0gd2Z4X2NtZF9zZW5kKHdkZXYsIGhpZiwgTlVM TCwgMCwgZmFsc2UpOw0KKwlrZnJlZShoaWYpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitpbnQg aGlmX3Jlc2V0KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBib29sIHJlc2V0X3N0YXQpDQorew0KKwlp bnQgcmV0Ow0KKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOw0KKwlzdHJ1Y3QgaGlmX3JlcV9yZXNldCAq Ym9keSA9IHdmeF9hbGxvY19oaWYoc2l6ZW9mKCpib2R5KSwgJmhpZik7DQorDQorCWJvZHktPnJl c2V0X2ZsYWdzLnJlc2V0X3N0YXQgPSByZXNldF9zdGF0Ow0KKwl3ZnhfZmlsbF9oZWFkZXIoaGlm LCB3dmlmLT5pZCwgSElGX1JFUV9JRF9SRVNFVCwgc2l6ZW9mKCpib2R5KSk7DQorCXJldCA9IHdm eF9jbWRfc2VuZCh3dmlmLT53ZGV2LCBoaWYsIE5VTEwsIDAsIGZhbHNlKTsNCisJa2ZyZWUoaGlm KTsNCisJcmV0dXJuIHJldDsNCit9DQorDQoraW50IGhpZl9yZWFkX21pYihzdHJ1Y3Qgd2Z4X2Rl diAqd2RldiwgaW50IHZpZl9pZCwgdTE2IG1pYl9pZCwgdm9pZCAqdmFsLCBzaXplX3QgdmFsX2xl bikNCit7DQorCWludCByZXQ7DQorCXN0cnVjdCBoaWZfbXNnICpoaWY7DQorCWludCBidWZfbGVu ID0gc2l6ZW9mKHN0cnVjdCBoaWZfY25mX3JlYWRfbWliKSArIHZhbF9sZW47DQorCXN0cnVjdCBo aWZfcmVxX3JlYWRfbWliICpib2R5ID0gd2Z4X2FsbG9jX2hpZihzaXplb2YoKmJvZHkpLCAmaGlm KTsNCisJc3RydWN0IGhpZl9jbmZfcmVhZF9taWIgKnJlcGx5ID0ga21hbGxvYyhidWZfbGVuLCBH RlBfS0VSTkVMKTsNCisNCisJYm9keS0+bWliX2lkID0gY3B1X3RvX2xlMTYobWliX2lkKTsNCisJ d2Z4X2ZpbGxfaGVhZGVyKGhpZiwgdmlmX2lkLCBISUZfUkVRX0lEX1JFQURfTUlCLCBzaXplb2Yo KmJvZHkpKTsNCisJcmV0ID0gd2Z4X2NtZF9zZW5kKHdkZXYsIGhpZiwgcmVwbHksIGJ1Zl9sZW4s IGZhbHNlKTsNCisNCisJaWYgKCFyZXQgJiYgbWliX2lkICE9IHJlcGx5LT5taWJfaWQpIHsNCisJ CWRldl93YXJuKHdkZXYtPmRldiwgIiVzOiBjb25maXJtYXRpb24gbWlzbWF0Y2ggcmVxdWVzdFxu IiwgX19mdW5jX18pOw0KKwkJcmV0ID0gLUVJTzsNCisJfQ0KKwlpZiAocmV0ID09IC1FTk9NRU0p DQorCQlkZXZfZXJyKHdkZXYtPmRldiwgImJ1ZmZlciBpcyB0b28gc21hbGwgdG8gcmVjZWl2ZSAl cyAoJXp1IDwgJWQpXG4iLA0KKwkJCWdldF9taWJfbmFtZShtaWJfaWQpLCB2YWxfbGVuLCByZXBs eS0+bGVuZ3RoKTsNCisJaWYgKCFyZXQpDQorCQltZW1jcHkodmFsLCAmcmVwbHktPm1pYl9kYXRh LCByZXBseS0+bGVuZ3RoKTsNCisJZWxzZQ0KKwkJbWVtc2V0KHZhbCwgMHhGRiwgdmFsX2xlbik7 DQorCWtmcmVlKGhpZik7DQorCWtmcmVlKHJlcGx5KTsNCisJcmV0dXJuIHJldDsNCit9DQorDQor aW50IGhpZl93cml0ZV9taWIoc3RydWN0IHdmeF9kZXYgKndkZXYsIGludCB2aWZfaWQsIHUxNiBt aWJfaWQsIHZvaWQgKnZhbCwgc2l6ZV90IHZhbF9sZW4pDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1 Y3QgaGlmX21zZyAqaGlmOw0KKwlpbnQgYnVmX2xlbiA9IHNpemVvZihzdHJ1Y3QgaGlmX3JlcV93 cml0ZV9taWIpICsgdmFsX2xlbjsNCisJc3RydWN0IGhpZl9yZXFfd3JpdGVfbWliICpib2R5ID0g d2Z4X2FsbG9jX2hpZihidWZfbGVuLCAmaGlmKTsNCisNCisJYm9keS0+bWliX2lkID0gY3B1X3Rv X2xlMTYobWliX2lkKTsNCisJYm9keS0+bGVuZ3RoID0gY3B1X3RvX2xlMTYodmFsX2xlbik7DQor CW1lbWNweSgmYm9keS0+bWliX2RhdGEsIHZhbCwgdmFsX2xlbik7DQorCXdmeF9maWxsX2hlYWRl cihoaWYsIHZpZl9pZCwgSElGX1JFUV9JRF9XUklURV9NSUIsIGJ1Zl9sZW4pOw0KKwlyZXQgPSB3 ZnhfY21kX3NlbmQod2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQor CXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBoaWZfc2NhbihzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwg Y29uc3Qgc3RydWN0IHdmeF9zY2FuX3BhcmFtcyAqYXJnKQ0KK3sNCisJaW50IHJldCwgaTsNCisJ c3RydWN0IGhpZl9tc2cgKmhpZjsNCisJc3RydWN0IGhpZl9zc2lkX2RlZiAqc3NpZHM7DQorCXNp emVfdCBidWZfbGVuID0gc2l6ZW9mKHN0cnVjdCBoaWZfcmVxX3N0YXJ0X3NjYW4pICsNCisJCWFy Zy0+c2Nhbl9yZXEubnVtX29mX2NoYW5uZWxzICogc2l6ZW9mKHU4KSArDQorCQlhcmctPnNjYW5f cmVxLm51bV9vZl9zc2lfZHMgKiBzaXplb2Yoc3RydWN0IGhpZl9zc2lkX2RlZik7DQorCXN0cnVj dCBoaWZfcmVxX3N0YXJ0X3NjYW4gKmJvZHkgPSB3ZnhfYWxsb2NfaGlmKGJ1Zl9sZW4sICZoaWYp Ow0KKwl1OCAqcHRyID0gKHU4ICopIGJvZHkgKyBzaXplb2YoKmJvZHkpOw0KKw0KKwlXQVJOKGFy Zy0+c2Nhbl9yZXEubnVtX29mX2NoYW5uZWxzID4gSElGX0FQSV9NQVhfTkJfQ0hBTk5FTFMsICJp bnZhbGlkIHBhcmFtcyIpOw0KKwlXQVJOKGFyZy0+c2Nhbl9yZXEubnVtX29mX3NzaV9kcyA+IDIs ICJpbnZhbGlkIHBhcmFtcyIpOw0KKwlXQVJOKGFyZy0+c2Nhbl9yZXEuYmFuZCA+IDEsICJpbnZh bGlkIHBhcmFtcyIpOw0KKw0KKwkvLyBGSVhNRTogVGhpcyBBUEkgaXMgdW5uZWNlc3NhcnkgY29t cGxleCwgZml4aW5nIE51bU9mQ2hhbm5lbHMgYW5kDQorCS8vIGFkZGluZyBhIG1lbWJlciBTc2lk RGVmIGF0IGVuZCBvZiBzdHJ1Y3QgaGlmX3JlcV9zdGFydF9zY2FuIHdvdWxkDQorCS8vIHNpbXBs aWZ5IHRoYXQgYSBsb3QuDQorCW1lbWNweShib2R5LCAmYXJnLT5zY2FuX3JlcSwgc2l6ZW9mKCpi b2R5KSk7DQorCWNwdV90b19sZTMycygmYm9keS0+bWluX2NoYW5uZWxfdGltZSk7DQorCWNwdV90 b19sZTMycygmYm9keS0+bWF4X2NoYW5uZWxfdGltZSk7DQorCWNwdV90b19sZTMycygmYm9keS0+ dHhfcG93ZXJfbGV2ZWwpOw0KKwltZW1jcHkocHRyLCBhcmctPnNzaWRzLCBhcmctPnNjYW5fcmVx Lm51bV9vZl9zc2lfZHMgKiBzaXplb2Yoc3RydWN0IGhpZl9zc2lkX2RlZikpOw0KKwlzc2lkcyA9 IChzdHJ1Y3QgaGlmX3NzaWRfZGVmICopIHB0cjsNCisJZm9yIChpID0gMDsgaSA8IGJvZHktPm51 bV9vZl9zc2lfZHM7ICsraSkNCisJCWNwdV90b19sZTMycygmc3NpZHNbaV0uc3NpZF9sZW5ndGgp Ow0KKwlwdHIgKz0gYXJnLT5zY2FuX3JlcS5udW1fb2Zfc3NpX2RzICogc2l6ZW9mKHN0cnVjdCBo aWZfc3NpZF9kZWYpOw0KKwltZW1jcHkocHRyLCBhcmctPmNoLCBhcmctPnNjYW5fcmVxLm51bV9v Zl9jaGFubmVscyAqIHNpemVvZih1OCkpOw0KKwlwdHIgKz0gYXJnLT5zY2FuX3JlcS5udW1fb2Zf Y2hhbm5lbHMgKiBzaXplb2YodTgpOw0KKwlXQVJOKGJ1Zl9sZW4gIT0gcHRyIC0gKHU4ICopIGJv ZHksICJhbGxvY2F0aW9uIHNpemUgbWlzbWF0Y2giKTsNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwg d3ZpZi0+aWQsIEhJRl9SRVFfSURfU1RBUlRfU0NBTiwgYnVmX2xlbik7DQorCXJldCA9IHdmeF9j bWRfc2VuZCh3dmlmLT53ZGV2LCBoaWYsIE5VTEwsIDAsIGZhbHNlKTsNCisJa2ZyZWUoaGlmKTsN CisJcmV0dXJuIHJldDsNCit9DQorDQoraW50IGhpZl9zdG9wX3NjYW4oc3RydWN0IHdmeF92aWYg Knd2aWYpDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOw0KKwkvLyBib2R5 IGFzc29jaWF0ZWQgdG8gSElGX1JFUV9JRF9TVE9QX1NDQU4gaXMgZW1wdHkNCisJd2Z4X2FsbG9j X2hpZigwLCAmaGlmKTsNCisNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgd3ZpZi0+aWQsIEhJRl9S RVFfSURfU1RPUF9TQ0FOLCAwKTsNCisJcmV0ID0gd2Z4X2NtZF9zZW5kKHd2aWYtPndkZXYsIGhp ZiwgTlVMTCwgMCwgZmFsc2UpOw0KKwlrZnJlZShoaWYpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisN CitpbnQgaGlmX2pvaW4oc3RydWN0IHdmeF92aWYgKnd2aWYsIGNvbnN0IHN0cnVjdCBoaWZfcmVx X2pvaW4gKmFyZykNCit7DQorCWludCByZXQ7DQorCXN0cnVjdCBoaWZfbXNnICpoaWY7DQorCXN0 cnVjdCBoaWZfcmVxX2pvaW4gKmJvZHkgPSB3ZnhfYWxsb2NfaGlmKHNpemVvZigqYm9keSksICZo aWYpOw0KKw0KKwltZW1jcHkoYm9keSwgYXJnLCBzaXplb2Yoc3RydWN0IGhpZl9yZXFfam9pbikp Ow0KKwljcHVfdG9fbGUxNnMoJmJvZHktPmNoYW5uZWxfbnVtYmVyKTsNCisJY3B1X3RvX2xlMTZz KCZib2R5LT5hdGltX3dpbmRvdyk7DQorCWNwdV90b19sZTMycygmYm9keS0+c3NpZF9sZW5ndGgp Ow0KKwljcHVfdG9fbGUzMnMoJmJvZHktPmJlYWNvbl9pbnRlcnZhbCk7DQorCWNwdV90b19sZTMy cygmYm9keS0+YmFzaWNfcmF0ZV9zZXQpOw0KKwl3ZnhfZmlsbF9oZWFkZXIoaGlmLCB3dmlmLT5p ZCwgSElGX1JFUV9JRF9KT0lOLCBzaXplb2YoKmJvZHkpKTsNCisJcmV0ID0gd2Z4X2NtZF9zZW5k KHd2aWYtPndkZXYsIGhpZiwgTlVMTCwgMCwgZmFsc2UpOw0KKwlrZnJlZShoaWYpOw0KKwlyZXR1 cm4gcmV0Ow0KK30NCisNCitpbnQgaGlmX3NldF9ic3NfcGFyYW1zKHN0cnVjdCB3ZnhfdmlmICp3 dmlmLCBjb25zdCBzdHJ1Y3QgaGlmX3JlcV9zZXRfYnNzX3BhcmFtcyAqYXJnKQ0KK3sNCisJaW50 IHJldDsNCisJc3RydWN0IGhpZl9tc2cgKmhpZjsNCisJc3RydWN0IGhpZl9yZXFfc2V0X2Jzc19w YXJhbXMgKmJvZHkgPSB3ZnhfYWxsb2NfaGlmKHNpemVvZigqYm9keSksICZoaWYpOw0KKw0KKwlt ZW1jcHkoYm9keSwgYXJnLCBzaXplb2YoKmJvZHkpKTsNCisJY3B1X3RvX2xlMTZzKCZib2R5LT5h aWQpOw0KKwljcHVfdG9fbGUzMnMoJmJvZHktPm9wZXJhdGlvbmFsX3JhdGVfc2V0KTsNCisJd2Z4 X2ZpbGxfaGVhZGVyKGhpZiwgd3ZpZi0+aWQsIEhJRl9SRVFfSURfU0VUX0JTU19QQVJBTVMsIHNp emVvZigqYm9keSkpOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQod3ZpZi0+d2RldiwgaGlmLCBOVUxM LCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBo aWZfYWRkX2tleShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgY29uc3Qgc3RydWN0IGhpZl9yZXFfYWRk X2tleSAqYXJnKQ0KK3sNCisJaW50IHJldDsNCisJc3RydWN0IGhpZl9tc2cgKmhpZjsNCisJLy8g RklYTUU6IG9ubHkgc2VuZCBuZWNlc3NhcnkgYml0cw0KKwlzdHJ1Y3QgaGlmX3JlcV9hZGRfa2V5 ICpib2R5ID0gd2Z4X2FsbG9jX2hpZihzaXplb2YoKmJvZHkpLCAmaGlmKTsNCisNCisJLy8gRklY TUU6IHN3YXAgYnl0ZXMgYXMgbmVjZXNzYXJ5IGluIGJvZHkNCisJbWVtY3B5KGJvZHksIGFyZywg c2l6ZW9mKCpib2R5KSk7DQorCWlmICh3ZnhfYXBpX29sZGVyX3RoYW4od2RldiwgMSwgNSkpDQor CQkvLyBMZWdhY3kgZmlybXdhcmVzIGV4cGVjdCB0aGF0IGFkZF9rZXkgdG8gYmUgc2VudCBvbiBy aWdodA0KKwkJLy8gaW50ZXJmYWNlLg0KKwkJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgYXJnLT5pbnRf aWQsIEhJRl9SRVFfSURfQUREX0tFWSwgc2l6ZW9mKCpib2R5KSk7DQorCWVsc2UNCisJCXdmeF9m aWxsX2hlYWRlcihoaWYsIC0xLCBISUZfUkVRX0lEX0FERF9LRVksIHNpemVvZigqYm9keSkpOw0K KwlyZXQgPSB3ZnhfY21kX3NlbmQod2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVl KGhpZik7DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBoaWZfcmVtb3ZlX2tleShzdHJ1Y3Qg d2Z4X2RldiAqd2RldiwgaW50IGlkeCkNCit7DQorCWludCByZXQ7DQorCXN0cnVjdCBoaWZfbXNn ICpoaWY7DQorCXN0cnVjdCBoaWZfcmVxX3JlbW92ZV9rZXkgKmJvZHkgPSB3ZnhfYWxsb2NfaGlm KHNpemVvZigqYm9keSksICZoaWYpOw0KKw0KKwlib2R5LT5lbnRyeV9pbmRleCA9IGlkeDsNCisJ d2Z4X2ZpbGxfaGVhZGVyKGhpZiwgLTEsIEhJRl9SRVFfSURfUkVNT1ZFX0tFWSwgc2l6ZW9mKCpi b2R5KSk7DQorCXJldCA9IHdmeF9jbWRfc2VuZCh3ZGV2LCBoaWYsIE5VTEwsIDAsIGZhbHNlKTsN CisJa2ZyZWUoaGlmKTsNCisJcmV0dXJuIHJldDsNCit9DQorDQoraW50IGhpZl9zZXRfZWRjYV9x dWV1ZV9wYXJhbXMoc3RydWN0IHdmeF92aWYgKnd2aWYsIGNvbnN0IHN0cnVjdCBoaWZfcmVxX2Vk Y2FfcXVldWVfcGFyYW1zICphcmcpDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgaGlmX21zZyAq aGlmOw0KKwlzdHJ1Y3QgaGlmX3JlcV9lZGNhX3F1ZXVlX3BhcmFtcyAqYm9keSA9IHdmeF9hbGxv Y19oaWYoc2l6ZW9mKCpib2R5KSwgJmhpZik7DQorDQorCS8vIE5PVEU6IHF1ZXVlcyBudW1lcm90 YXRpb24gYXJlIG5vdCB0aGUgc2FtZSBiZXR3ZWVuIFdGeCBhbmQgTGludXgNCisJbWVtY3B5KGJv ZHksIGFyZywgc2l6ZW9mKCpib2R5KSk7DQorCWNwdV90b19sZTE2cygmYm9keS0+Y3dfbWluKTsN CisJY3B1X3RvX2xlMTZzKCZib2R5LT5jd19tYXgpOw0KKwljcHVfdG9fbGUxNnMoJmJvZHktPnR4 X29wX2xpbWl0KTsNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgd3ZpZi0+aWQsIEhJRl9SRVFfSURf RURDQV9RVUVVRV9QQVJBTVMsIHNpemVvZigqYm9keSkpOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQo d3ZpZi0+d2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQorCXJldHVy biByZXQ7DQorfQ0KKw0KK2ludCBoaWZfc2V0X3BtKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBjb25z dCBzdHJ1Y3QgaGlmX3JlcV9zZXRfcG1fbW9kZSAqYXJnKQ0KK3sNCisJaW50IHJldDsNCisJc3Ry dWN0IGhpZl9tc2cgKmhpZjsNCisJc3RydWN0IGhpZl9yZXFfc2V0X3BtX21vZGUgKmJvZHkgPSB3 ZnhfYWxsb2NfaGlmKHNpemVvZigqYm9keSksICZoaWYpOw0KKw0KKwltZW1jcHkoYm9keSwgYXJn LCBzaXplb2YoKmJvZHkpKTsNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgd3ZpZi0+aWQsIEhJRl9S RVFfSURfU0VUX1BNX01PREUsIHNpemVvZigqYm9keSkpOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQo d3ZpZi0+d2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQorCXJldHVy biByZXQ7DQorfQ0KKw0KK2ludCBoaWZfc3RhcnQoc3RydWN0IHdmeF92aWYgKnd2aWYsIGNvbnN0 IHN0cnVjdCBoaWZfcmVxX3N0YXJ0ICphcmcpDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgaGlm X21zZyAqaGlmOw0KKwlzdHJ1Y3QgaGlmX3JlcV9zdGFydCAqYm9keSA9IHdmeF9hbGxvY19oaWYo c2l6ZW9mKCpib2R5KSwgJmhpZik7DQorDQorCW1lbWNweShib2R5LCBhcmcsIHNpemVvZigqYm9k eSkpOw0KKwljcHVfdG9fbGUxNnMoJmJvZHktPmNoYW5uZWxfbnVtYmVyKTsNCisJY3B1X3RvX2xl MzJzKCZib2R5LT5iZWFjb25faW50ZXJ2YWwpOw0KKwljcHVfdG9fbGUzMnMoJmJvZHktPmJhc2lj X3JhdGVfc2V0KTsNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgd3ZpZi0+aWQsIEhJRl9SRVFfSURf U1RBUlQsIHNpemVvZigqYm9keSkpOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQod3ZpZi0+d2Rldiwg aGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQorCXJldHVybiByZXQ7DQorfQ0K Kw0KK2ludCBoaWZfYmVhY29uX3RyYW5zbWl0KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBib29sIGVu YWJsZV9iZWFjb25pbmcpDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOw0K KwlzdHJ1Y3QgaGlmX3JlcV9iZWFjb25fdHJhbnNtaXQgKmJvZHkgPSB3ZnhfYWxsb2NfaGlmKHNp emVvZigqYm9keSksICZoaWYpOw0KKw0KKwlib2R5LT5lbmFibGVfYmVhY29uaW5nID0gZW5hYmxl X2JlYWNvbmluZyA/IDEgOiAwOw0KKwl3ZnhfZmlsbF9oZWFkZXIoaGlmLCB3dmlmLT5pZCwgSElG X1JFUV9JRF9CRUFDT05fVFJBTlNNSVQsIHNpemVvZigqYm9keSkpOw0KKwlyZXQgPSB3ZnhfY21k X3NlbmQod3ZpZi0+d2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQor CXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBoaWZfbWFwX2xpbmsoc3RydWN0IHdmeF92aWYgKnd2 aWYsIHU4ICptYWNfYWRkciwgaW50IGZsYWdzLCBpbnQgc3RhX2lkKQ0KK3sNCisJaW50IHJldDsN CisJc3RydWN0IGhpZl9tc2cgKmhpZjsNCisJc3RydWN0IGhpZl9yZXFfbWFwX2xpbmsgKmJvZHkg PSB3ZnhfYWxsb2NfaGlmKHNpemVvZigqYm9keSksICZoaWYpOw0KKw0KKwlpZiAobWFjX2FkZHIp DQorCQlldGhlcl9hZGRyX2NvcHkoYm9keS0+bWFjX2FkZHIsIG1hY19hZGRyKTsNCisJYm9keS0+ bWFwX2xpbmtfZmxhZ3MgPSAqKHN0cnVjdCBoaWZfbWFwX2xpbmtfZmxhZ3MgKikgJmZsYWdzOw0K Kwlib2R5LT5wZWVyX3N0YV9pZCA9IHN0YV9pZDsNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgd3Zp Zi0+aWQsIEhJRl9SRVFfSURfTUFQX0xJTkssIHNpemVvZigqYm9keSkpOw0KKwlyZXQgPSB3Znhf Y21kX3NlbmQod3ZpZi0+d2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7 DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBoaWZfdXBkYXRlX2llKHN0cnVjdCB3Znhfdmlm ICp3dmlmLCBjb25zdCBzdHJ1Y3QgaGlmX2llX2ZsYWdzICp0YXJnZXRfZnJhbWUsDQorCQkgIGNv bnN0IHU4ICppZXMsIHNpemVfdCBpZXNfbGVuKQ0KK3sNCisJaW50IHJldDsNCisJc3RydWN0IGhp Zl9tc2cgKmhpZjsNCisJaW50IGJ1Zl9sZW4gPSBzaXplb2Yoc3RydWN0IGhpZl9yZXFfdXBkYXRl X2llKSArIGllc19sZW47DQorCXN0cnVjdCBoaWZfcmVxX3VwZGF0ZV9pZSAqYm9keSA9IHdmeF9h bGxvY19oaWYoYnVmX2xlbiwgJmhpZik7DQorDQorCW1lbWNweSgmYm9keS0+aWVfZmxhZ3MsIHRh cmdldF9mcmFtZSwgc2l6ZW9mKHN0cnVjdCBoaWZfaWVfZmxhZ3MpKTsNCisJYm9keS0+bnVtX2lf ZXMgPSBjcHVfdG9fbGUxNigxKTsNCisJbWVtY3B5KGJvZHktPmllLCBpZXMsIGllc19sZW4pOw0K Kwl3ZnhfZmlsbF9oZWFkZXIoaGlmLCB3dmlmLT5pZCwgSElGX1JFUV9JRF9VUERBVEVfSUUsIGJ1 Zl9sZW4pOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQod3ZpZi0+d2RldiwgaGlmLCBOVUxMLCAwLCBm YWxzZSk7DQorCWtmcmVlKGhpZik7DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBoaWZfc2xf c2VuZF9wdWJfa2V5cyhzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgY29uc3QgdWludDhfdCAqcHVia2V5 LCBjb25zdCB1aW50OF90ICpwdWJrZXlfaG1hYykNCit7DQorCWludCByZXQ7DQorCXN0cnVjdCBo aWZfbXNnICpoaWY7DQorCXN0cnVjdCBoaWZfcmVxX3NsX2V4Y2hhbmdlX3B1Yl9rZXlzICpib2R5 ID0gd2Z4X2FsbG9jX2hpZihzaXplb2YoKmJvZHkpLCAmaGlmKTsNCisNCisJYm9keS0+YWxnb3Jp dGhtID0gSElGX1NMX0NVUlZFMjU1MTk7DQorCW1lbWNweShib2R5LT5ob3N0X3B1Yl9rZXksIHB1 YmtleSwgc2l6ZW9mKGJvZHktPmhvc3RfcHViX2tleSkpOw0KKwltZW1jcHkoYm9keS0+aG9zdF9w dWJfa2V5X21hYywgcHVia2V5X2htYWMsIHNpemVvZihib2R5LT5ob3N0X3B1Yl9rZXlfbWFjKSk7 DQorCXdmeF9maWxsX2hlYWRlcihoaWYsIC0xLCBISUZfUkVRX0lEX1NMX0VYQ0hBTkdFX1BVQl9L RVlTLCBzaXplb2YoKmJvZHkpKTsNCisJcmV0ID0gd2Z4X2NtZF9zZW5kKHdkZXYsIGhpZiwgTlVM TCwgMCwgZmFsc2UpOw0KKwlrZnJlZShoaWYpOw0KKwkvLyBDb21wYXRpYmlsaXR5IHdpdGggbGVn YWN5IHNlY3VyZSBsaW5rDQorCWlmIChyZXQgPT0gU0xfUFVCX0tFWV9FWENIQU5HRV9TVEFUVVNf U1VDQ0VTUykNCisJCXJldCA9IDA7DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBoaWZfc2xf Y29uZmlnKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAp DQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOw0KKwlzdHJ1Y3QgaGlmX3Jl cV9zbF9jb25maWd1cmUgKmJvZHkgPSB3ZnhfYWxsb2NfaGlmKHNpemVvZigqYm9keSksICZoaWYp Ow0KKw0KKwltZW1jcHkoYm9keS0+ZW5jcl9ibXAsIGJpdG1hcCwgc2l6ZW9mKGJvZHktPmVuY3Jf Ym1wKSk7DQorCXdmeF9maWxsX2hlYWRlcihoaWYsIC0xLCBISUZfUkVRX0lEX1NMX0NPTkZJR1VS RSwgc2l6ZW9mKCpib2R5KSk7DQorCXJldCA9IHdmeF9jbWRfc2VuZCh3ZGV2LCBoaWYsIE5VTEws IDAsIGZhbHNlKTsNCisJa2ZyZWUoaGlmKTsNCisJcmV0dXJuIHJldDsNCit9DQorDQoraW50IGhp Zl9zbF9zZXRfbWFjX2tleShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgY29uc3QgdWludDhfdCAqc2xr X2tleSwgaW50IGRlc3RpbmF0aW9uKQ0KK3sNCisJaW50IHJldDsNCisJc3RydWN0IGhpZl9tc2cg KmhpZjsNCisJc3RydWN0IGhpZl9yZXFfc2V0X3NsX21hY19rZXkgKmJvZHkgPSB3ZnhfYWxsb2Nf aGlmKHNpemVvZigqYm9keSksICZoaWYpOw0KKw0KKwltZW1jcHkoYm9keS0+a2V5X3ZhbHVlLCBz bGtfa2V5LCBzaXplb2YoYm9keS0+a2V5X3ZhbHVlKSk7DQorCWJvZHktPm90cF9vcl9yYW0gPSBk ZXN0aW5hdGlvbjsNCisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgLTEsIEhJRl9SRVFfSURfU0VUX1NM X01BQ19LRVksIHNpemVvZigqYm9keSkpOw0KKwlyZXQgPSB3ZnhfY21kX3NlbmQod2RldiwgaGlm LCBOVUxMLCAwLCBmYWxzZSk7DQorCWtmcmVlKGhpZik7DQorCS8vIENvbXBhdGliaWxpdHkgd2l0 aCBsZWdhY3kgc2VjdXJlIGxpbmsNCisJaWYgKHJldCA9PSBTTF9NQUNfS0VZX1NUQVRVU19TVUND RVNTKQ0KKwkJcmV0ID0gMDsNCisJcmV0dXJuIHJldDsNCit9DQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zdGFnaW5nL3dmeC9oaWZfdHguaCBiL2RyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3R4LmgNCmlu ZGV4IGNjZjJiN2U1ZTg1MS4uMzFmMmEwMmM4NDY2IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9zdGFn aW5nL3dmeC9oaWZfdHguaA0KKysrIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9oaWZfdHguaA0KQEAg LTE1LDYgKzE1LDEyIEBADQogc3RydWN0IHdmeF9kZXY7DQogc3RydWN0IHdmeF92aWY7DQogDQor c3RydWN0IHdmeF9zY2FuX3BhcmFtcyB7DQorCXN0cnVjdCBoaWZfcmVxX3N0YXJ0X3NjYW4gc2Nh bl9yZXE7DQorCXN0cnVjdCBoaWZfc3NpZF9kZWYgKnNzaWRzOw0KKwl1aW50OF90ICpjaDsNCit9 Ow0KKw0KIHN0cnVjdCB3ZnhfaGlmX2NtZCB7DQogCXN0cnVjdCBtdXRleCAgICAgIGxvY2s7DQog CXN0cnVjdCBjb21wbGV0aW9uIHJlYWR5Ow0KQEAgLTMwLDQgKzM2LDMxIEBAIHZvaWQgd2Z4X2lu aXRfaGlmX2NtZChzdHJ1Y3Qgd2Z4X2hpZl9jbWQgKndmeF9oaWZfY21kKTsNCiBpbnQgd2Z4X2Nt ZF9zZW5kKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3QgaGlmX21zZyAqcmVxdWVzdCwNCiAJ CSB2b2lkICpyZXBseSwgc2l6ZV90IHJlcGx5X2xlbiwgYm9vbCBhc3luYyk7DQogDQoraW50IGhp Zl9zaHV0ZG93bihzdHJ1Y3Qgd2Z4X2RldiAqd2Rldik7DQoraW50IGhpZl9jb25maWd1cmF0aW9u KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCB1OCAqY29uZiwgc2l6ZV90IGxlbik7DQoraW50 IGhpZl9yZXNldChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgYm9vbCByZXNldF9zdGF0KTsNCitpbnQg aGlmX3JlYWRfbWliKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBpbnQgdmlmX2lkLCB1MTYgbWliX2lk LA0KKwkJIHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1Zl9zaXplKTsNCitpbnQgaGlmX3dyaXRlX21pYihz dHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IHZpZl9pZCwgdTE2IG1pYl9pZCwNCisJCSAgdm9pZCAq YnVmLCBzaXplX3QgYnVmX3NpemUpOw0KK2ludCBoaWZfc2NhbihzdHJ1Y3Qgd2Z4X3ZpZiAqd3Zp ZiwgY29uc3Qgc3RydWN0IHdmeF9zY2FuX3BhcmFtcyAqYXJnKTsNCitpbnQgaGlmX3N0b3Bfc2Nh bihzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZik7DQoraW50IGhpZl9qb2luKHN0cnVjdCB3ZnhfdmlmICp3 dmlmLCBjb25zdCBzdHJ1Y3QgaGlmX3JlcV9qb2luICphcmcpOw0KK2ludCBoaWZfc2V0X3BtKHN0 cnVjdCB3ZnhfdmlmICp3dmlmLCBjb25zdCBzdHJ1Y3QgaGlmX3JlcV9zZXRfcG1fbW9kZSAqYXJn KTsNCitpbnQgaGlmX3NldF9ic3NfcGFyYW1zKHN0cnVjdCB3ZnhfdmlmICp3dmlmLA0KKwkJICAg ICAgIGNvbnN0IHN0cnVjdCBoaWZfcmVxX3NldF9ic3NfcGFyYW1zICphcmcpOw0KK2ludCBoaWZf YWRkX2tleShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgY29uc3Qgc3RydWN0IGhpZl9yZXFfYWRkX2tl eSAqYXJnKTsNCitpbnQgaGlmX3JlbW92ZV9rZXkoc3RydWN0IHdmeF9kZXYgKndkZXYsIGludCBp ZHgpOw0KK2ludCBoaWZfc2V0X2VkY2FfcXVldWVfcGFyYW1zKHN0cnVjdCB3ZnhfdmlmICp3dmlm LA0KKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBoaWZfcmVxX2VkY2FfcXVldWVfcGFyYW1zICphcmcp Ow0KK2ludCBoaWZfc3RhcnQoc3RydWN0IHdmeF92aWYgKnd2aWYsIGNvbnN0IHN0cnVjdCBoaWZf cmVxX3N0YXJ0ICphcmcpOw0KK2ludCBoaWZfYmVhY29uX3RyYW5zbWl0KHN0cnVjdCB3Znhfdmlm ICp3dmlmLCBib29sIGVuYWJsZSk7DQoraW50IGhpZl9tYXBfbGluayhzdHJ1Y3Qgd2Z4X3ZpZiAq d3ZpZiwgdTggKm1hY19hZGRyLCBpbnQgZmxhZ3MsIGludCBzdGFfaWQpOw0KK2ludCBoaWZfdXBk YXRlX2llKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBjb25zdCBzdHJ1Y3QgaGlmX2llX2ZsYWdzICp0 YXJnZXRfZnJhbWUsDQorCQkgIGNvbnN0IHU4ICppZXMsIHNpemVfdCBpZXNfbGVuKTsNCitpbnQg aGlmX3NsX3NldF9tYWNfa2V5KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCB1aW50OF90ICpz bGtfa2V5LCBpbnQgZGVzdGluYXRpb24pOw0KK2ludCBoaWZfc2xfY29uZmlnKHN0cnVjdCB3Znhf ZGV2ICp3ZGV2LCBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXApOw0KK2ludCBoaWZfc2xfc2Vu ZF9wdWJfa2V5cyhzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwNCisJCQkgY29uc3QgdWludDhfdCAqcHVi a2V5LCBjb25zdCB1aW50OF90ICpwdWJrZXlfaG1hYyk7DQorDQogI2VuZGlmDQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9oaWZfdHhfbWliLmggYi9kcml2ZXJzL3N0YWdpbmcvd2Z4 L2hpZl90eF9taWIuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4u ZjY2MjRhNDAzMDE2DQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2hp Zl90eF9taWIuaA0KQEAgLTAsMCArMSwyODEgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMC1vbmx5ICovDQorLyoNCisgKiBJbXBsZW1lbnRhdGlvbiBvZiBob3N0LXRvLWNo aXAgTUlCcyBvZiBXRnh4eCBTcGxpdCBNYWMgKFdTTSkgQVBJLg0KKyAqDQorICogQ29weXJpZ2h0 IChjKSAyMDE3LTIwMTksIFNpbGljb24gTGFib3JhdG9yaWVzLCBJbmMuDQorICogQ29weXJpZ2h0 IChjKSAyMDEwLCBTVC1Fcmljc3Nvbg0KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgU1QtRXJpY3Nz b24gU0ENCisgKi8NCisjaWZuZGVmIFdGWF9ISUZfVFhfTUlCX0gNCisjZGVmaW5lIFdGWF9ISUZf VFhfTUlCX0gNCisNCisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4NCisNCisjaW5jbHVk ZSAid2Z4LmgiDQorI2luY2x1ZGUgImhpZl90eC5oIg0KKyNpbmNsdWRlICJoaWZfYXBpX21pYi5o Ig0KKw0KK3N0YXRpYyBpbmxpbmUgaW50IGhpZl9zZXRfb3V0cHV0X3Bvd2VyKHN0cnVjdCB3Znhf dmlmICp3dmlmLCBpbnQgcG93ZXJfbGV2ZWwpDQorew0KKwlfX2xlMzIgdmFsID0gY3B1X3RvX2xl MzIocG93ZXJfbGV2ZWwpOw0KKw0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3 dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfQ1VSUkVOVF9UWF9QT1dFUl9MRVZFTCwNCisJ CQkgICAgICZ2YWwsIHNpemVvZih2YWwpKTsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlm X3NldF9iZWFjb25fd2FrZXVwX3BlcmlvZChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwNCisJCQkJCSAg ICAgICB1bnNpZ25lZCBpbnQgZHRpbV9pbnRlcnZhbCwNCisJCQkJCSAgICAgICB1bnNpZ25lZCBp bnQgbGlzdGVuX2ludGVydmFsKQ0KK3sNCisJc3RydWN0IGhpZl9taWJfYmVhY29uX3dha2VfdXBf cGVyaW9kIHZhbCA9IHsNCisJCS53YWtldXBfcGVyaW9kX21pbiA9IGR0aW1faW50ZXJ2YWwsDQor CQkucmVjZWl2ZV9kdGltID0gMCwNCisJCS53YWtldXBfcGVyaW9kX21heCA9IGNwdV90b19sZTE2 KGxpc3Rlbl9pbnRlcnZhbCksDQorCX07DQorDQorCWlmIChkdGltX2ludGVydmFsID4gMHhGRiB8 fCBsaXN0ZW5faW50ZXJ2YWwgPiAweEZGRkYpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisJcmV0dXJu IGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsDQorCQkJICAgICBISUZfTUlCX0lE X0JFQUNPTl9XQUtFVVBfUEVSSU9ELA0KKwkJCSAgICAgJnZhbCwgc2l6ZW9mKHZhbCkpOw0KK30N CisNCitzdGF0aWMgaW5saW5lIGludCBoaWZfc2V0X3JjcGlfcnNzaV90aHJlc2hvbGQoc3RydWN0 IHdmeF92aWYgKnd2aWYsDQorCQkJCQkgICAgICBzdHJ1Y3QgaGlmX21pYl9yY3BpX3Jzc2lfdGhy ZXNob2xkICphcmcpDQorew0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlm LT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfUkNQSV9SU1NJX1RIUkVTSE9MRCwgYXJnLCBzaXpl b2YoKmFyZykpOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGludCBoaWZfZ2V0X2NvdW50ZXJzX3Rh YmxlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LA0KKwkJCQkJIHN0cnVjdCBoaWZfbWliX2V4dGVuZGVk X2NvdW50X3RhYmxlICphcmcpDQorew0KKwlpZiAod2Z4X2FwaV9vbGRlcl90aGFuKHdkZXYsIDEs IDMpKSB7DQorCQkvLyBleHRlbmRlZF9jb3VudF90YWJsZSBpcyB3aWRlciB0aGFuIGNvdW50X3Rh YmxlDQorCQltZW1zZXQoYXJnLCAweEZGLCBzaXplb2YoKmFyZykpOw0KKwkJcmV0dXJuIGhpZl9y ZWFkX21pYih3ZGV2LCAwLCBISUZfTUlCX0lEX0NPVU5URVJTX1RBQkxFLA0KKwkJCQkgICAgYXJn LCBzaXplb2Yoc3RydWN0IGhpZl9taWJfY291bnRfdGFibGUpKTsNCisJfSBlbHNlIHsNCisJCXJl dHVybiBoaWZfcmVhZF9taWIod2RldiwgMCwgSElGX01JQl9JRF9FWFRFTkRFRF9DT1VOVEVSU19U QUJMRSwNCisJCQkJICAgIGFyZywgc2l6ZW9mKHN0cnVjdCBoaWZfbWliX2V4dGVuZGVkX2NvdW50 X3RhYmxlKSk7DQorCX0NCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlmX3NldF9tYWNhZGRy KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCB1OCAqbWFjKQ0KK3sNCisJc3RydWN0IGhpZl9taWJfbWFj X2FkZHJlc3MgbXNnID0geyB9Ow0KKw0KKwlpZiAobWFjKQ0KKwkJZXRoZXJfYWRkcl9jb3B5KG1z Zy5tYWNfYWRkciwgbWFjKTsNCisJcmV0dXJuIGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3Zp Zi0+aWQsIEhJRl9NSUJfSURfRE9UMTFfTUFDX0FERFJFU1MsDQorCQkJICAgICAmbXNnLCBzaXpl b2YobXNnKSk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgaW50IGhpZl9zZXRfcnhfZmlsdGVyKHN0 cnVjdCB3ZnhfdmlmICp3dmlmLCBib29sIGZpbHRlcl9ic3NpZCwNCisJCQkJICAgIGJvb2wgZndk X3Byb2JlX3JlcSkNCit7DQorCXN0cnVjdCBoaWZfbWliX3J4X2ZpbHRlciB2YWwgPSB7IH07DQor DQorCWlmIChmaWx0ZXJfYnNzaWQpDQorCQl2YWwuYnNzaWRfZmlsdGVyID0gMTsNCisJaWYgKGZ3 ZF9wcm9iZV9yZXEpDQorCQl2YWwuZndkX3Byb2JlX3JlcSA9IDE7DQorCXJldHVybiBoaWZfd3Jp dGVfbWliKHd2aWYtPndkZXYsIHd2aWYtPmlkLCBISUZfTUlCX0lEX1JYX0ZJTFRFUiwNCisJCQkg ICAgICZ2YWwsIHNpemVvZih2YWwpKTsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlmX3Nl dF9iZWFjb25fZmlsdGVyX3RhYmxlKHN0cnVjdCB3ZnhfdmlmICp3dmlmLA0KKwkJCQkJICAgICAg c3RydWN0IGhpZl9taWJfYmNuX2ZpbHRlcl90YWJsZSAqZnQpDQorew0KKwlzaXplX3QgYnVmX2xl biA9IHN0cnVjdF9zaXplKGZ0LCBpZV90YWJsZSwgZnQtPm51bV9vZl9pbmZvX2VsbXRzKTsNCisN CisJY3B1X3RvX2xlMzJzKCZmdC0+bnVtX29mX2luZm9fZWxtdHMpOw0KKwlyZXR1cm4gaGlmX3dy aXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfQkVBQ09O X0ZJTFRFUl9UQUJMRSwgZnQsIGJ1Zl9sZW4pOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGludCBo aWZfYmVhY29uX2ZpbHRlcl9jb250cm9sKHN0cnVjdCB3ZnhfdmlmICp3dmlmLA0KKwkJCQkJICAg IGludCBlbmFibGUsIGludCBiZWFjb25fY291bnQpDQorew0KKwlzdHJ1Y3QgaGlmX21pYl9iY25f ZmlsdGVyX2VuYWJsZSBhcmcgPSB7DQorCQkuZW5hYmxlID0gY3B1X3RvX2xlMzIoZW5hYmxlKSwN CisJCS5iY25fY291bnQgPSBjcHVfdG9fbGUzMihiZWFjb25fY291bnQpLA0KKwl9Ow0KKwlyZXR1 cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJf SURfQkVBQ09OX0ZJTFRFUl9FTkFCTEUsICZhcmcsIHNpemVvZihhcmcpKTsNCit9DQorDQorc3Rh dGljIGlubGluZSBpbnQgaGlmX3NldF9vcGVyYXRpb25hbF9tb2RlKHN0cnVjdCB3ZnhfZGV2ICp3 ZGV2LA0KKwkJCQkJICAgZW51bSBoaWZfb3BfcG93ZXJfbW9kZSBtb2RlKQ0KK3sNCisJc3RydWN0 IGhpZl9taWJfZ2xfb3BlcmF0aW9uYWxfcG93ZXJfbW9kZSB2YWwgPSB7DQorCQkucG93ZXJfbW9k ZSA9IG1vZGUsDQorCQkud3VwX2luZF9hY3RpdmF0aW9uID0gMSwNCisJfTsNCisNCisJcmV0dXJu IGhpZl93cml0ZV9taWIod2RldiwgLTEsIEhJRl9NSUJfSURfR0xfT1BFUkFUSU9OQUxfUE9XRVJf TU9ERSwNCisJCQkgICAgICZ2YWwsIHNpemVvZih2YWwpKTsNCit9DQorDQorc3RhdGljIGlubGlu ZSBpbnQgaGlmX3NldF90ZW1wbGF0ZV9mcmFtZShzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwNCisJCQkJ CSBzdHJ1Y3QgaGlmX21pYl90ZW1wbGF0ZV9mcmFtZSAqYXJnKQ0KK3sNCisJcmV0dXJuIGhpZl93 cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsIEhJRl9NSUJfSURfVEVNUExBVEVfRlJBTUUs DQorCQkJICAgICBhcmcsIHNpemVvZigqYXJnKSk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgaW50 IGhpZl9zZXRfbWZwKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBib29sIGNhcGFibGUsIGJvb2wgcmVx dWlyZWQpDQorew0KKwlzdHJ1Y3QgaGlmX21pYl9wcm90ZWN0ZWRfbWdtdF9wb2xpY3kgdmFsID0g eyB9Ow0KKw0KKwlXQVJOX09OKHJlcXVpcmVkICYmICFjYXBhYmxlKTsNCisJaWYgKGNhcGFibGUp IHsNCisJCXZhbC5wbWZfZW5hYmxlID0gMTsNCisJCXZhbC5ob3N0X2VuY19hdXRoX2ZyYW1lcyA9 IDE7DQorCX0NCisJaWYgKCFyZXF1aXJlZCkNCisJCXZhbC51bnBtZl9hbGxvd2VkID0gMTsNCisJ Y3B1X3RvX2xlMzJzKCZ2YWwpOw0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3 dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfUFJPVEVDVEVEX01HTVRfUE9MSUNZLA0KKwkJ CSAgICAgJnZhbCwgc2l6ZW9mKHZhbCkpOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGludCBoaWZf c2V0X2Jsb2NrX2Fja19wb2xpY3koc3RydWN0IHdmeF92aWYgKnd2aWYsDQorCQkJCQkgICB1OCB0 eF90aWRfcG9saWN5LCB1OCByeF90aWRfcG9saWN5KQ0KK3sNCisJc3RydWN0IGhpZl9taWJfYmxv Y2tfYWNrX3BvbGljeSB2YWwgPSB7DQorCQkuYmxvY2tfYWNrX3R4X3RpZF9wb2xpY3kgPSB0eF90 aWRfcG9saWN5LA0KKwkJLmJsb2NrX2Fja19yeF90aWRfcG9saWN5ID0gcnhfdGlkX3BvbGljeSwN CisJfTsNCisNCisJcmV0dXJuIGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsIEhJ Rl9NSUJfSURfQkxPQ0tfQUNLX1BPTElDWSwNCisJCQkgICAgICZ2YWwsIHNpemVvZih2YWwpKTsN Cit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlmX3NldF9hc3NvY2lhdGlvbl9tb2RlKHN0cnVj dCB3ZnhfdmlmICp3dmlmLA0KKwkJCQkJICAgc3RydWN0IGhpZl9taWJfc2V0X2Fzc29jaWF0aW9u X21vZGUgKmFyZykNCit7DQorCXJldHVybiBoaWZfd3JpdGVfbWliKHd2aWYtPndkZXYsIHd2aWYt PmlkLA0KKwkJCSAgICAgSElGX01JQl9JRF9TRVRfQVNTT0NJQVRJT05fTU9ERSwgYXJnLCBzaXpl b2YoKmFyZykpOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGludCBoaWZfc2V0X3R4X3JhdGVfcmV0 cnlfcG9saWN5KHN0cnVjdCB3ZnhfdmlmICp3dmlmLA0KKwkJCQkJICAgICAgIHN0cnVjdCBoaWZf bWliX3NldF90eF9yYXRlX3JldHJ5X3BvbGljeSAqYXJnKQ0KK3sNCisJc2l6ZV90IHNpemUgPSBz dHJ1Y3Rfc2l6ZShhcmcsIHR4X3JhdGVfcmV0cnlfcG9saWN5LCBhcmctPm51bV90eF9yYXRlX3Bv bGljaWVzKTsNCisNCisJcmV0dXJuIGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQs DQorCQkJICAgICBISUZfTUlCX0lEX1NFVF9UWF9SQVRFX1JFVFJZX1BPTElDWSwgYXJnLCBzaXpl KTsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlmX3NldF9tYWNfYWRkcl9jb25kaXRpb24o c3RydWN0IHdmeF92aWYgKnd2aWYsDQorCQkJCQkgICAgIHN0cnVjdCBoaWZfbWliX21hY19hZGRy X2RhdGFfZnJhbWVfY29uZGl0aW9uICphcmcpDQorew0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3 dmlmLT53ZGV2LCB3dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfTUFDX0FERFJfREFUQUZS QU1FX0NPTkRJVElPTiwNCisJCQkgICAgIGFyZywgc2l6ZW9mKCphcmcpKTsNCit9DQorDQorc3Rh dGljIGlubGluZSBpbnQgaGlmX3NldF91Y19tY19iY19jb25kaXRpb24oc3RydWN0IHdmeF92aWYg Knd2aWYsDQorCQkJCQkgICAgIHN0cnVjdCBoaWZfbWliX3VjX21jX2JjX2RhdGFfZnJhbWVfY29u ZGl0aW9uICphcmcpDQorew0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlm LT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfVUNfTUNfQkNfREFUQUZSQU1FX0NPTkRJVElPTiwN CisJCQkgICAgIGFyZywgc2l6ZW9mKCphcmcpKTsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQg aGlmX3NldF9jb25maWdfZGF0YV9maWx0ZXIoc3RydWN0IHdmeF92aWYgKnd2aWYsDQorCQkJCQkg ICAgIHN0cnVjdCBoaWZfbWliX2NvbmZpZ19kYXRhX2ZpbHRlciAqYXJnKQ0KK3sNCisJcmV0dXJu IGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsDQorCQkJICAgICBISUZfTUlCX0lE X0NPTkZJR19EQVRBX0ZJTFRFUiwgYXJnLCBzaXplb2YoKmFyZykpOw0KK30NCisNCitzdGF0aWMg aW5saW5lIGludCBoaWZfc2V0X2RhdGFfZmlsdGVyaW5nKHN0cnVjdCB3ZnhfdmlmICp3dmlmLA0K KwkJCQkJIHN0cnVjdCBoaWZfbWliX3NldF9kYXRhX2ZpbHRlcmluZyAqYXJnKQ0KK3sNCisJcmV0 dXJuIGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsDQorCQkJICAgICBISUZfTUlC X0lEX1NFVF9EQVRBX0ZJTFRFUklORywgYXJnLCBzaXplb2YoKmFyZykpOw0KK30NCisNCitzdGF0 aWMgaW5saW5lIGludCBoaWZfa2VlcF9hbGl2ZV9wZXJpb2Qoc3RydWN0IHdmeF92aWYgKnd2aWYs IGludCBwZXJpb2QpDQorew0KKwlzdHJ1Y3QgaGlmX21pYl9rZWVwX2FsaXZlX3BlcmlvZCBhcmcg PSB7DQorCQkua2VlcF9hbGl2ZV9wZXJpb2QgPSBjcHVfdG9fbGUxNihwZXJpb2QpLA0KKwl9Ow0K Kw0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwgSElGX01JQl9J RF9LRUVQX0FMSVZFX1BFUklPRCwNCisJCQkgICAgICZhcmcsIHNpemVvZihhcmcpKTsNCit9Ow0K Kw0KK3N0YXRpYyBpbmxpbmUgaW50IGhpZl9zZXRfYXJwX2lwdjRfZmlsdGVyKHN0cnVjdCB3Znhf dmlmICp3dmlmLA0KKwkJCQkJICBzdHJ1Y3QgaGlmX21pYl9hcnBfaXBfYWRkcl90YWJsZSAqZnAp DQorew0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwNCisJCQkg ICAgIEhJRl9NSUJfSURfQVJQX0lQX0FERFJFU1NFU19UQUJMRSwNCisJCQkgICAgIGZwLCBzaXpl b2YoKmZwKSk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgaW50IGhpZl91c2VfbXVsdGlfdHhfY29u ZihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwNCisJCQkJCWJvb2wgZW5hYmxlZCkNCit7DQorCV9fbGUz MiBhcmcgPSBlbmFibGVkID8gY3B1X3RvX2xlMzIoMSkgOiAwOw0KKw0KKwlyZXR1cm4gaGlmX3dy aXRlX21pYih3ZGV2LCAtMSwgSElGX01JQl9JRF9HTF9TRVRfTVVMVElfTVNHLA0KKwkJCSAgICAg JmFyZywgc2l6ZW9mKGFyZykpOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGludCBoaWZfc2V0X3Vh cHNkX2luZm8oc3RydWN0IHdmeF92aWYgKnd2aWYsDQorCQkJCSAgICAgc3RydWN0IGhpZl9taWJf c2V0X3VhcHNkX2luZm9ybWF0aW9uICphcmcpDQorew0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3 dmlmLT53ZGV2LCB3dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfU0VUX1VBUFNEX0lORk9S TUFUSU9OLA0KKwkJCSAgICAgYXJnLCBzaXplb2YoKmFyZykpOw0KK30NCisNCitzdGF0aWMgaW5s aW5lIGludCBoaWZfZXJwX3VzZV9wcm90ZWN0aW9uKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBib29s IGVuYWJsZSkNCit7DQorCV9fbGUzMiBhcmcgPSBlbmFibGUgPyBjcHVfdG9fbGUzMigxKSA6IDA7 DQorDQorCXJldHVybiBoaWZfd3JpdGVfbWliKHd2aWYtPndkZXYsIHd2aWYtPmlkLA0KKwkJCSAg ICAgSElGX01JQl9JRF9OT05fRVJQX1BST1RFQ1RJT04sICZhcmcsIHNpemVvZihhcmcpKTsNCit9 DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlmX3Nsb3RfdGltZShzdHJ1Y3Qgd2Z4X3ZpZiAqd3Zp ZiwgaW50IHZhbCkNCit7DQorCV9fbGUzMiBhcmcgPSBjcHVfdG9fbGUzMih2YWwpOw0KKw0KKwly ZXR1cm4gaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwgSElGX01JQl9JRF9TTE9U X1RJTUUsDQorCQkJICAgICAmYXJnLCBzaXplb2YoYXJnKSk7DQorfQ0KKw0KK3N0YXRpYyBpbmxp bmUgaW50IGhpZl9kdWFsX2N0c19wcm90ZWN0aW9uKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBib29s IHZhbCkNCit7DQorCXN0cnVjdCBoaWZfbWliX3NldF9odF9wcm90ZWN0aW9uIGFyZyA9IHsNCisJ CS5kdWFsX2N0c19wcm90ID0gdmFsLA0KKwl9Ow0KKw0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3 dmlmLT53ZGV2LCB3dmlmLT5pZCwgSElGX01JQl9JRF9TRVRfSFRfUFJPVEVDVElPTiwNCisJCQkg ICAgICZhcmcsIHNpemVvZihhcmcpKTsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlmX3dl cF9kZWZhdWx0X2tleV9pZChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgaW50IHZhbCkNCit7DQorCV9f bGUzMiBhcmcgPSBjcHVfdG9fbGUzMih2YWwpOw0KKw0KKwlyZXR1cm4gaGlmX3dyaXRlX21pYih3 dmlmLT53ZGV2LCB3dmlmLT5pZCwNCisJCQkgICAgIEhJRl9NSUJfSURfRE9UMTFfV0VQX0RFRkFV TFRfS0VZX0lELA0KKwkJCSAgICAgJmFyZywgc2l6ZW9mKGFyZykpOw0KK30NCisNCitzdGF0aWMg aW5saW5lIGludCBoaWZfcnRzX3RocmVzaG9sZChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgaW50IHZh bCkNCit7DQorCV9fbGUzMiBhcmcgPSBjcHVfdG9fbGUzMih2YWwgPiAwID8gdmFsIDogMHhGRkZG KTsNCisNCisJcmV0dXJuIGhpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsDQorCQkJ ICAgICBISUZfTUlCX0lEX0RPVDExX1JUU19USFJFU0hPTEQsICZhcmcsIHNpemVvZihhcmcpKTsN Cit9DQorDQorI2VuZGlmDQotLSANCjIuMjAuMQ0KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZGV2ZWwgbWFpbGluZyBsaXN0CmRldmVsQGxpbnV4ZHJpdmVy cHJvamVjdC5vcmcKaHR0cDovL2RyaXZlcmRldi5saW51eGRyaXZlcnByb2plY3Qub3JnL21haWxt YW4vbGlzdGluZm8vZHJpdmVyZGV2LWRldmVsCg==