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=-11.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,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 A8C52C4CED0 for ; Thu, 19 Sep 2019 14:25:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 74EBC2196F for ; Thu, 19 Sep 2019 14:25:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="FIqXqKWo" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390690AbfISOZz (ORCPT ); Thu, 19 Sep 2019 10:25:55 -0400 Received: from mail-eopbgr780041.outbound.protection.outlook.com ([40.107.78.41]:35720 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727642AbfISOZt (ORCPT ); Thu, 19 Sep 2019 10:25:49 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ai8sQ1TOmkcIZjHeTaZXChe0ASI7UDk8S539ahKaIBY24cLSS8ERTL0wxyRGvMMBmXCx4vlSCPC53jQl5rqoYidnCBa+VSHCl5pt6Unk6fGkXFJADFWAmFWL2V8CyMP4OYZxUnkFThsHCC55+npCV+NVwm0eN/p2ZqdoG1sjO3tsta4uJ50zjlK0dmoUFw1CDL9FN91kIF+qGSU2JiXZagkWePVaSW970oAc47LWddCRV1QwEpOFovdKNpldL4+n7dTBjXzSEF5YbbUDdSHKG4937rmxhcRXTrQonV5i31m/NYgx1lPZLvnq04C2PnHuUlyix8lrPaWoxuhqOTTpuA== 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=NPdHiHHN1DNC1dhSTPHo/ZVEM3ZXiHz5y7yVILrnrBY=; b=PE3fgDugyri4GjhOoyGCQm8ngfDqJhnMa/ipfA/TiF2Ysx6oEEPvpsx0D+AKCMsrW1MV+G3FdPzMXrcfORZe2UgLxLZ9lT0VIkRHZdTjTCQU5sExRl6H0iw0NqcGNKtgC/0CaUtL19s68KuE36T3g215BN78vKAAtlIrAnOngmSZFFG5iEPEi3YnokrJtvIU0uygpBykd6AnsZ4KW9/5IJ0+ePJo/saZ549D9s8mGB4uzIJGlqqYep1+Ck75tChDqNz5BJrOV9skffKR2FaJJPjG44uOKcHRxIUJU7uolC+HofaT87QpTBQ2mYFxC6nua26jaBO+WrKUyevO7ICPcw== 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=NPdHiHHN1DNC1dhSTPHo/ZVEM3ZXiHz5y7yVILrnrBY=; b=FIqXqKWoxAdDxzybocOftq0mQprEu7svClCchgFwqozQmQTd0oIryOnaZwIeMzFU2gJ7Cnq/G/q+KE5IxnIx3DhJXyIWAenvhfzlyhWVcANLFitUdYNv1Z8M1uTlR9z6jIRoFJNUXz/J7cGh502E5aUV3IMPVivRu0W0qGjFwf4= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (20.179.149.217) by MN2PR11MB4207.namprd11.prod.outlook.com (52.135.37.97) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2263.24; Thu, 19 Sep 2019 14:25:39 +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:39 +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 05/20] staging: wfx: load firmware Thread-Topic: [PATCH v3 05/20] staging: wfx: load firmware Thread-Index: AQHVbvYcznLYqehJEEmLmVzlX9vbDg== Date: Thu, 19 Sep 2019 14:25:38 +0000 Message-ID: <20190919142527.31797-6-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: 5eed31ec-7985-4909-0bf2-08d73d0d3ef9 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600167)(711020)(4605104)(1401327)(2017052603328)(7193020);SRVR:MN2PR11MB4207; x-ms-traffictypediagnostic: MN2PR11MB4207: x-ms-exchange-purlcount: 1 x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3513; x-forefront-prvs: 016572D96D x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(376002)(39850400004)(366004)(396003)(136003)(199004)(189003)(2501003)(71200400001)(71190400001)(99286004)(4326008)(478600001)(25786009)(6512007)(6306002)(107886003)(3846002)(6116002)(14444005)(14454004)(256004)(30864003)(6486002)(2906002)(1076003)(966005)(86362001)(6436002)(66574012)(2616005)(476003)(26005)(316002)(446003)(36756003)(8676002)(81166006)(81156014)(11346002)(54906003)(110136005)(8936002)(102836004)(186003)(5660300002)(7736002)(305945005)(91956017)(76176011)(66066001)(66946007)(6506007)(486006)(76116006)(66476007)(66446008)(64756008)(66556008);DIR:OUT;SFP:1101;SCL:1;SRVR:MN2PR11MB4207;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: MpxJq6DqKKHPOg89r7fuKEQx6mdjKWipnUpR2N6BRW3eyjh8I3B4QhytAmU7SEGYqHkAIIcT7m+3yROUxgGQ6O4Ju+hHuKDuPc+QXLYaZN05h3eNnlwYKDhslp1a8DyqFzTZfhWBMypnF/TCMLGxxnOeNTwBa9n9rCh/hF8wK8+P4Crx5mslLOyK17jG2v1hgqnLbFJkTXcadOiRIdBntifUqBeFWXwkwx62eKq5KlivonK/MvBGmUFXEYi1mPKcDIHDuRKi6BGn929UFMEp0oqJET8eUFFROwfY5feX5/s4Kc+HMw1BrY5KacPjW5OWltYTb91kQ9CEYSNBf1r5AXZJd/X5QiXSlB7i0d5iOvRu6bkebAZjV2BExpolSIhOUeohz5W46QvAinJX69oc/DgT0bPz4m8+fQlvsuKTSVM= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5eed31ec-7985-4909-0bf2-08d73d0d3ef9 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Sep 2019 14:25:38.8547 (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: VinoatM5fck16Ndg83Hqj0ZaGTIBDPq40m5wMo7IzTotFfv6HQy205gAjTbhirK7gG75fVXHhdkJKOTEDBw/cg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4207 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPg0KDQpB IGZpcm13YXJlIGlzIG5lY2Vzc2FyeSB0byBydW4gdGhlIGNoaXAuIHdmeF9pbml0X2RldmljZSgp IGlzIGluIGNoYXJnZQ0Kb2YgbG9hZGluZyBmaXJtd2FyZSBvbiBjaGlwIGFuZCBkb2luZyBsb3cg bGV2ZWwgaW5pdGlhbGl6YXRpb24uDQoNCkZpcm13YXJlcyBmb3IgV0YyMDAgYXJlIGF2YWlsYWJs ZSBoZXJlOg0KDQogIGh0dHBzOi8vZ2l0aHViLmNvbS9TaWxpY29uTGFicy93ZngtZmlybXdhcmUv DQoNCk5vdGUgdGhhdCBmaXJtd2FyZSBhcmUgZW5jcnlwdGVkLiBEcml2ZXIgY2hlY2tzIHRoYXQg a2V5IHVzZWQgdG8gZW5jcnlwdA0KZmlybXdhcmUgbWF0Y2ggd2l0aCBrZXkgYnVybmVkIGludG8g Y2hpcC4NCg0KQ3VycmVudGx5LCAiQzAiIGtleSBpcyB1c2VkIGZvciBwcm9kdWN0aW9uIGNoaXBz Lg0KDQpTaWduZWQtb2ZmLWJ5OiBKw6lyw7RtZSBQb3VpbGxlciA8amVyb21lLnBvdWlsbGVyQHNp bGFicy5jb20+DQotLS0NCiBkcml2ZXJzL3N0YWdpbmcvd2Z4L01ha2VmaWxlICAgfCAgIDEgKw0K IGRyaXZlcnMvc3RhZ2luZy93ZngvYnVzX3NkaW8uYyB8ICAgOCArDQogZHJpdmVycy9zdGFnaW5n L3dmeC9idXNfc3BpLmMgIHwgICA3ICsNCiBkcml2ZXJzL3N0YWdpbmcvd2Z4L2Z3aW8uYyAgICAg fCAzODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogZHJpdmVycy9zdGFnaW5n L3dmeC9md2lvLmggICAgIHwgIDE1ICsrDQogZHJpdmVycy9zdGFnaW5nL3dmeC9tYWluLmMgICAg IHwgIDIwICsrDQogZHJpdmVycy9zdGFnaW5nL3dmeC9tYWluLmggICAgIHwgIDEwICsNCiBkcml2 ZXJzL3N0YWdpbmcvd2Z4L3dmeC5oICAgICAgfCAgIDIgKw0KIDggZmlsZXMgY2hhbmdlZCwgNDUw IGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL3dmeC9m d2lvLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL3dmeC9md2lvLmgNCg0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZngvTWFrZWZpbGUgYi9kcml2ZXJzL3N0YWdp bmcvd2Z4L01ha2VmaWxlDQppbmRleCAzMzBiNzI4OGViYjUuLmU1NjhkN2E2ZmIwNiAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZngvTWFrZWZpbGUNCisrKyBiL2RyaXZlcnMvc3RhZ2lu Zy93ZngvTWFrZWZpbGUNCkBAIC01LDYgKzUsNyBAQCBDRkxBR1NfZGVidWcubyA9IC1JJChzcmMp DQogDQogd2Z4LXkgOj0gXA0KIAlod2lvLm8gXA0KKwlmd2lvLm8gXA0KIAltYWluLm8gXA0KIAlk ZWJ1Zy5vDQogd2Z4LSQoQ09ORklHX1NQSSkgKz0gYnVzX3NwaS5vDQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9zdGFnaW5nL3dmeC9idXNfc2Rpby5jIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9idXNfc2Rp by5jDQppbmRleCAzNWJjY2E3ZWM1ZGMuLjI1YzU4N2ZlMjE0MSAxMDA2NDQNCi0tLSBhL2RyaXZl cnMvc3RhZ2luZy93ZngvYnVzX3NkaW8uYw0KKysrIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9idXNf c2Rpby5jDQpAQCAtMTcsNiArMTcsNyBAQA0KICNpbmNsdWRlICJtYWluLmgiDQogDQogc3RhdGlj IGNvbnN0IHN0cnVjdCB3ZnhfcGxhdGZvcm1fZGF0YSB3Znhfc2Rpb19wZGF0YSA9IHsNCisJLmZp bGVfZncgPSAid2ZtX3dmMjAwIiwNCiB9Ow0KIA0KIHN0cnVjdCB3Znhfc2Rpb19wcml2IHsNCkBA IC0yMDQsOCArMjA1LDE0IEBAIHN0YXRpYyBpbnQgd2Z4X3NkaW9fcHJvYmUoc3RydWN0IHNkaW9f ZnVuYyAqZnVuYywNCiAJCWdvdG8gZXJyMjsNCiAJfQ0KIA0KKwlyZXQgPSB3ZnhfcHJvYmUoYnVz LT5jb3JlKTsNCisJaWYgKHJldCkNCisJCWdvdG8gZXJyMzsNCisNCiAJcmV0dXJuIDA7DQogDQor ZXJyMzoNCisJd2Z4X2ZyZWVfY29tbW9uKGJ1cy0+Y29yZSk7DQogZXJyMjoNCiAJd2Z4X3NkaW9f aXJxX3Vuc3Vic2NyaWJlKGJ1cyk7DQogZXJyMToNCkBAIC0yMjAsNiArMjI3LDcgQEAgc3RhdGlj IHZvaWQgd2Z4X3NkaW9fcmVtb3ZlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpDQogew0KIAlzdHJ1 Y3Qgd2Z4X3NkaW9fcHJpdiAqYnVzID0gc2Rpb19nZXRfZHJ2ZGF0YShmdW5jKTsNCiANCisJd2Z4 X3JlbGVhc2UoYnVzLT5jb3JlKTsNCiAJd2Z4X2ZyZWVfY29tbW9uKGJ1cy0+Y29yZSk7DQogCXdm eF9zZGlvX2lycV91bnN1YnNjcmliZShidXMpOw0KIAlzZGlvX2NsYWltX2hvc3QoZnVuYyk7DQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9idXNfc3BpLmMgYi9kcml2ZXJzL3N0YWdp bmcvd2Z4L2J1c19zcGkuYw0KaW5kZXggNWU4Zjg0YmFmMmNhLi5iNzNiOTQxNjI3M2YgMTAwNjQ0 DQotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L2J1c19zcGkuYw0KKysrIGIvZHJpdmVycy9zdGFn aW5nL3dmeC9idXNfc3BpLmMNCkBAIC0yNyw2ICsyNyw4IEBAIE1PRFVMRV9QQVJNX0RFU0MoZ3Bp b19yZXNldCwgImdwaW8gbnVtYmVyIGZvciByZXNldC4gLTEgZm9yIG5vbmUuIik7DQogI2RlZmlu ZSBTRVRfUkVBRCAweDgwMDAgICAgICAgICAvKiB1c2FnZTogb3Igb3BlcmF0aW9uICovDQogDQog c3RhdGljIGNvbnN0IHN0cnVjdCB3ZnhfcGxhdGZvcm1fZGF0YSB3Znhfc3BpX3BkYXRhID0gew0K KwkuZmlsZV9mdyA9ICJ3Zm1fd2YyMDAiLA0KKwkudXNlX3Jpc2luZ19jbGsgPSB0cnVlLA0KIH07 DQogDQogc3RydWN0IHdmeF9zcGlfcHJpdiB7DQpAQCAtMjA1LDYgKzIwNywxMCBAQCBzdGF0aWMg aW50IHdmeF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKmZ1bmMpDQogCWlmICghYnVzLT5j b3JlKQ0KIAkJcmV0dXJuIC1FSU87DQogDQorCXJldCA9IHdmeF9wcm9iZShidXMtPmNvcmUpOw0K KwlpZiAocmV0KQ0KKwkJd2Z4X2ZyZWVfY29tbW9uKGJ1cy0+Y29yZSk7DQorDQogCXJldHVybiBy ZXQ7DQogfQ0KIA0KQEAgLTIxMyw2ICsyMTksNyBAQCBzdGF0aWMgaW50IHdmeF9zcGlfZGlzY29u bmVjdChzdHJ1Y3Qgc3BpX2RldmljZSAqZnVuYykNCiB7DQogCXN0cnVjdCB3Znhfc3BpX3ByaXYg KmJ1cyA9IHNwaV9nZXRfZHJ2ZGF0YShmdW5jKTsNCiANCisJd2Z4X3JlbGVhc2UoYnVzLT5jb3Jl KTsNCiAJd2Z4X2ZyZWVfY29tbW9uKGJ1cy0+Y29yZSk7DQogCS8vIEEgZmV3IElSUSB3aWxsIGJl IHNlbnQgZHVyaW5nIGRldmljZSByZWxlYXNlLiBIb3BlZnVsbHksIG5vIElSUQ0KIAkvLyBzaG91 bGQgaGFwcGVuIGFmdGVyIHdkZXYvd3ZpZiBhcmUgcmVsZWFzZWQuDQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9zdGFnaW5nL3dmeC9md2lvLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2Z3aW8uYw0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uOGZiNGE5ZjZkMWE2DQotLS0g L2Rldi9udWxsDQorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2Z3aW8uYw0KQEAgLTAsMCArMSwz ODcgQEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQorLyoNCisg KiBGaXJtd2FyZSBsb2FkaW5nLg0KKyAqDQorICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMTksIFNp bGljb24gTGFib3JhdG9yaWVzLCBJbmMuDQorICogQ29weXJpZ2h0IChjKSAyMDEwLCBTVC1Fcmlj c3Nvbg0KKyAqLw0KKyNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPg0KKyNpbmNsdWRlIDxsaW51 eC9zbGFiLmg+DQorI2luY2x1ZGUgPGxpbnV4L21tLmg+DQorI2luY2x1ZGUgPGxpbnV4L2JpdGZp ZWxkLmg+DQorDQorI2luY2x1ZGUgImZ3aW8uaCINCisjaW5jbHVkZSAid2Z4LmgiDQorI2luY2x1 ZGUgImh3aW8uaCINCisNCisvLyBBZGRyZXNzZXMgYmVsb3cgYXJlIGluIFNSQU0gYXJlYQ0KKyNk ZWZpbmUgV0ZYX0ROTERfRklGTyAgICAgICAgICAgICAweDA5MDA0MDAwDQorI2RlZmluZSAgICAg RE5MRF9CTE9DS19TSVpFICAgICAgICAgICAweDA0MDANCisjZGVmaW5lICAgICBETkxEX0ZJRk9f U0laRSAgICAgICAgICAgIDB4ODAwMCAvLyAoMzIgKiBETkxEX0JMT0NLX1NJWkUpDQorLy8gRG93 bmxvYWQgQ29udHJvbCBBcmVhIChEQ0EpDQorI2RlZmluZSBXRlhfRENBX0lNQUdFX1NJWkUgICAg ICAgIDB4MDkwMEMwMDANCisjZGVmaW5lIFdGWF9EQ0FfUFVUICAgICAgICAgICAgICAgMHgwOTAw QzAwNA0KKyNkZWZpbmUgV0ZYX0RDQV9HRVQgICAgICAgICAgICAgICAweDA5MDBDMDA4DQorI2Rl ZmluZSBXRlhfRENBX0hPU1RfU1RBVFVTICAgICAgIDB4MDkwMEMwMEMNCisjZGVmaW5lICAgICBI T1NUX1JFQURZICAgICAgICAgICAgICAgIDB4ODc2NTQzMjENCisjZGVmaW5lICAgICBIT1NUX0lO Rk9fUkVBRCAgICAgICAgICAgIDB4QTc1M0JEOTkNCisjZGVmaW5lICAgICBIT1NUX1VQTE9BRF9Q RU5ESU5HICAgICAgIDB4QUJDRERDQkENCisjZGVmaW5lICAgICBIT1NUX1VQTE9BRF9DT01QTEVU RSAgICAgIDB4RDRDNjRBOTkNCisjZGVmaW5lICAgICBIT1NUX09LX1RPX0pVTVAgICAgICAgICAg IDB4MTc0RkM4ODINCisjZGVmaW5lIFdGWF9EQ0FfTkNQX1NUQVRVUyAgICAgICAgMHgwOTAwQzAx MA0KKyNkZWZpbmUgICAgIE5DUF9OT1RfUkVBRFkgICAgICAgICAgICAgMHgxMjM0NTY3OA0KKyNk ZWZpbmUgICAgIE5DUF9SRUFEWSAgICAgICAgICAgICAgICAgMHg4NzY1NDMyMQ0KKyNkZWZpbmUg ICAgIE5DUF9JTkZPX1JFQURZICAgICAgICAgICAgMHhCRDUzRUY5OQ0KKyNkZWZpbmUgICAgIE5D UF9ET1dOTE9BRF9QRU5ESU5HICAgICAgMHhBQkNERENCQQ0KKyNkZWZpbmUgICAgIE5DUF9ET1dO TE9BRF9DT01QTEVURSAgICAgMHhDQUZFRkVDQQ0KKyNkZWZpbmUgICAgIE5DUF9BVVRIX09LICAg ICAgICAgICAgICAgMHhENEM2NEE5OQ0KKyNkZWZpbmUgICAgIE5DUF9BVVRIX0ZBSUwgICAgICAg ICAgICAgMHgxNzRGQzg4Mg0KKyNkZWZpbmUgICAgIE5DUF9QVUJfS0VZX1JEWSAgICAgICAgICAg MHg3QUI0MUQxOQ0KKyNkZWZpbmUgV0ZYX0RDQV9GV19TSUdOQVRVUkUgICAgICAweDA5MDBDMDE0 DQorI2RlZmluZSAgICAgRldfU0lHTkFUVVJFX1NJWkUgICAgICAgICAweDQwDQorI2RlZmluZSBX RlhfRENBX0ZXX0hBU0ggICAgICAgICAgIDB4MDkwMEMwNTQNCisjZGVmaW5lICAgICBGV19IQVNI X1NJWkUgICAgICAgICAgICAgIDB4MDgNCisjZGVmaW5lIFdGWF9EQ0FfRldfVkVSU0lPTiAgICAg ICAgMHgwOTAwQzA1Qw0KKyNkZWZpbmUgICAgIEZXX1ZFUlNJT05fU0laRSAgICAgICAgICAgMHgw NA0KKyNkZWZpbmUgV0ZYX0RDQV9SRVNFUlZFRCAgICAgICAgICAweDA5MDBDMDYwDQorI2RlZmlu ZSAgICAgRENBX1JFU0VSVkVEX1NJWkUgICAgICAgICAweDIwDQorI2RlZmluZSBXRlhfU1RBVFVT X0lORk8gICAgICAgICAgIDB4MDkwMEMwODANCisjZGVmaW5lIFdGWF9CT09UTE9BREVSX0xBQkVM ICAgICAgMHgwOTAwQzA4NA0KKyNkZWZpbmUgICAgIEJPT1RMT0FERVJfTEFCRUxfU0laRSAgICAg MHgzQw0KKyNkZWZpbmUgV0ZYX1BURV9JTkZPICAgICAgICAgICAgICAweDA5MDBDMEMwDQorI2Rl ZmluZSAgICAgUFRFX0lORk9fS0VZU0VUX0lEWCAgICAgICAweDBEDQorI2RlZmluZSAgICAgUFRF X0lORk9fU0laRSAgICAgICAgICAgICAweDEwDQorI2RlZmluZSBXRlhfRVJSX0lORk8gICAgICAg ICAgICAgIDB4MDkwMEMwRDANCisjZGVmaW5lICAgICBFUlJfSU5WQUxJRF9TRUNfVFlQRSAgICAg IDB4MDUNCisjZGVmaW5lICAgICBFUlJfU0lHX1ZFUklGX0ZBSUxFRCAgICAgIDB4MEYNCisjZGVm aW5lICAgICBFUlJfQUVTX0NUUkxfS0VZICAgICAgICAgIDB4MTANCisjZGVmaW5lICAgICBFUlJf RUNDX1BVQl9LRVkgICAgICAgICAgIDB4MTENCisjZGVmaW5lICAgICBFUlJfTUFDX0tFWSAgICAg ICAgICAgICAgIDB4MTgNCisNCisjZGVmaW5lIERDQV9USU1FT1VUICA1MCAvLyBtaWxsaXNlY29u ZHMNCisjZGVmaW5lIFdBS0VVUF9USU1FT1VUIDIwMCAvLyBtaWxsaXNlY29uZHMNCisNCitzdGF0 aWMgY29uc3QgY2hhciAqIGNvbnN0IGZ3aW9fZXJyb3Jfc3RyaW5nc1tdID0gew0KKwlbRVJSX0lO VkFMSURfU0VDX1RZUEVdID0gIkludmFsaWQgc2VjdGlvbiB0eXBlIG9yIHdyb25nIGVuY3J5cHRp b24iLA0KKwlbRVJSX1NJR19WRVJJRl9GQUlMRURdID0gIlNpZ25hdHVyZSB2ZXJpZmljYXRpb24g ZmFpbGVkIiwNCisJW0VSUl9BRVNfQ1RSTF9LRVldID0gIkFFUyBjb250cm9sIGtleSBub3QgaW5p dGlhbGl6ZWQiLA0KKwlbRVJSX0VDQ19QVUJfS0VZXSA9ICJFQ0MgcHVibGljIGtleSBub3QgaW5p dGlhbGl6ZWQiLA0KKwlbRVJSX01BQ19LRVldID0gIk1BQyBrZXkgbm90IGluaXRpYWxpemVkIiwN Cit9Ow0KKw0KKy8qDQorICogcmVxdWVzdF9maXJtd2FyZSgpIGFsbG9jYXRlIGRhdGEgdXNpbmcg dm1hbGxvYygpLiBJdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoDQorICogdW5kZXJseWluZyBoYXJk d2FyZSB0aGF0IHVzZSBETUEuIEZ1bmN0aW9uIGJlbG93IGRldGVjdCB0aGlzIGNhc2UgYW5kDQor ICogYWxsb2NhdGUgYSBib3VuY2UgYnVmZmVyIGlmIG5lY2Vzc2FyeS4NCisgKg0KKyAqIE5vdGlj ZSB0aGF0LCBpbiBkb3VidCwgeW91IGNhbiBlbmFibGUgQ09ORklHX0RFQlVHX1NHIHRvIGFzayBr ZXJuZWwgdG8NCisgKiBkZXRlY3QgdGhpcyBwcm9ibGVtIGF0IHJ1bnRpbWUgIChlbHNlLCBrZXJu ZWwgc2lsZW50bHkgZmFpbCkuDQorICoNCisgKiBOT1RFOiBpdCBtYXkgYWxzbyBiZSBwb3NzaWJs ZSB0byB1c2UgJ3BhZ2VzJyBmcm9tIHN0cnVjdCBmaXJtd2FyZSBhbmQgYXZvaWQNCisgKiBib3Vu Y2UgYnVmZmVyDQorICovDQoraW50IHNyYW1fd3JpdGVfZG1hX3NhZmUoc3RydWN0IHdmeF9kZXYg KndkZXYsIHUzMiBhZGRyLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKQ0KK3sNCisJaW50IHJl dDsNCisJY29uc3QgdTggKnRtcDsNCisNCisJaWYgKCF2aXJ0X2FkZHJfdmFsaWQoYnVmKSkgew0K KwkJdG1wID0ga21lbWR1cChidWYsIGxlbiwgR0ZQX0tFUk5FTCk7DQorCQlpZiAoIXRtcCkNCisJ CQlyZXR1cm4gLUVOT01FTTsNCisJfSBlbHNlIHsNCisJCXRtcCA9IGJ1ZjsNCisJfQ0KKwlyZXQg PSBzcmFtX2J1Zl93cml0ZSh3ZGV2LCBhZGRyLCB0bXAsIGxlbik7DQorCWlmICghdmlydF9hZGRy X3ZhbGlkKGJ1ZikpDQorCQlrZnJlZSh0bXApOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitpbnQg Z2V0X2Zpcm13YXJlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIga2V5c2V0X2NoaXAsDQorCQkg Y29uc3Qgc3RydWN0IGZpcm13YXJlICoqZncsIGludCAqZmlsZV9vZmZzZXQpDQorew0KKwlpbnQg a2V5c2V0X2ZpbGU7DQorCWNoYXIgZmlsZW5hbWVbMjU2XTsNCisJY29uc3QgY2hhciAqZGF0YTsN CisJaW50IHJldDsNCisNCisJc25wcmludGYoZmlsZW5hbWUsIHNpemVvZihmaWxlbmFtZSksICIl c18lMDJYLnNlYyIsIHdkZXYtPnBkYXRhLmZpbGVfZncsIGtleXNldF9jaGlwKTsNCisJcmV0ID0g ZmlybXdhcmVfcmVxdWVzdF9ub3dhcm4oZncsIGZpbGVuYW1lLCB3ZGV2LT5kZXYpOw0KKwlpZiAo cmV0KSB7DQorCQlkZXZfaW5mbyh3ZGV2LT5kZXYsICJjYW4ndCBsb2FkICVzLCBmYWxsaW5nIGJh Y2sgdG8gJXMuc2VjXG4iLCBmaWxlbmFtZSwgd2Rldi0+cGRhdGEuZmlsZV9mdyk7DQorCQlzbnBy aW50ZihmaWxlbmFtZSwgc2l6ZW9mKGZpbGVuYW1lKSwgIiVzLnNlYyIsIHdkZXYtPnBkYXRhLmZp bGVfZncpOw0KKwkJcmV0ID0gcmVxdWVzdF9maXJtd2FyZShmdywgZmlsZW5hbWUsIHdkZXYtPmRl dik7DQorCQlpZiAocmV0KSB7DQorCQkJZGV2X2Vycih3ZGV2LT5kZXYsICJjYW4ndCBsb2FkICVz XG4iLCBmaWxlbmFtZSk7DQorCQkJKmZ3ID0gTlVMTDsNCisJCQlyZXR1cm4gcmV0Ow0KKwkJfQ0K Kwl9DQorDQorCWRhdGEgPSAoKmZ3KS0+ZGF0YTsNCisJaWYgKG1lbWNtcChkYXRhLCAiS0VZU0VU IiwgNikgIT0gMCkgew0KKwkJLy8gTGVnYWN5IGZpcm13YXJlIGZvcm1hdA0KKwkJKmZpbGVfb2Zm c2V0ID0gMDsNCisJCWtleXNldF9maWxlID0gMHg5MDsNCisJfSBlbHNlIHsNCisJCSpmaWxlX29m ZnNldCA9IDg7DQorCQlrZXlzZXRfZmlsZSA9IChoZXhfdG9fYmluKGRhdGFbNl0pICogMTYpIHwg aGV4X3RvX2JpbihkYXRhWzddKTsNCisJCWlmIChrZXlzZXRfZmlsZSA8IDApIHsNCisJCQlkZXZf ZXJyKHdkZXYtPmRldiwgIiVzIGNvcnJ1cHRlZFxuIiwgZmlsZW5hbWUpOw0KKwkJCXJlbGVhc2Vf ZmlybXdhcmUoKmZ3KTsNCisJCQkqZncgPSBOVUxMOw0KKwkJCXJldHVybiAtRUlOVkFMOw0KKwkJ fQ0KKwl9DQorCWlmIChrZXlzZXRfZmlsZSAhPSBrZXlzZXRfY2hpcCkgew0KKwkJZGV2X2Vycih3 ZGV2LT5kZXYsICJmaXJtd2FyZSBrZXlzZXQgaXMgaW5jb21wYXRpYmxlIHdpdGggY2hpcCAoZmls ZTogMHglMDJYLCBjaGlwOiAweCUwMlgpXG4iLA0KKwkJCWtleXNldF9maWxlLCBrZXlzZXRfY2hp cCk7DQorCQlyZWxlYXNlX2Zpcm13YXJlKCpmdyk7DQorCQkqZncgPSBOVUxMOw0KKwkJcmV0dXJu IC1FTk9ERVY7DQorCX0NCisJd2Rldi0+a2V5c2V0ID0ga2V5c2V0X2ZpbGU7DQorCXJldHVybiAw Ow0KK30NCisNCitzdGF0aWMgaW50IHdhaXRfbmNwX3N0YXR1cyhzdHJ1Y3Qgd2Z4X2RldiAqd2Rl diwgdTMyIHN0YXR1cykNCit7DQorCWt0aW1lX3Qgbm93LCBzdGFydDsNCisJdTMyIHJlZzsNCisJ aW50IHJldDsNCisNCisJc3RhcnQgPSBrdGltZV9nZXQoKTsNCisJZm9yICg7Oykgew0KKwkJcmV0 ID0gc3JhbV9yZWdfcmVhZCh3ZGV2LCBXRlhfRENBX05DUF9TVEFUVVMsICZyZWcpOw0KKwkJaWYg KHJldCA8IDApDQorCQkJcmV0dXJuIC1FSU87DQorCQlub3cgPSBrdGltZV9nZXQoKTsNCisJCWlm IChyZWcgPT0gc3RhdHVzKQ0KKwkJCWJyZWFrOw0KKwkJaWYgKGt0aW1lX2FmdGVyKG5vdywga3Rp bWVfYWRkX21zKHN0YXJ0LCBEQ0FfVElNRU9VVCkpKQ0KKwkJCXJldHVybiAtRVRJTUVET1VUOw0K Kwl9DQorCWlmIChrdGltZV9jb21wYXJlKG5vdywgc3RhcnQpKQ0KKwkJZGV2X2RiZyh3ZGV2LT5k ZXYsICJjaGlwIGFuc3dlciBhZnRlciAlbGxkdXNcbiIsIGt0aW1lX3VzX2RlbHRhKG5vdywgc3Rh cnQpKTsNCisJZWxzZQ0KKwkJZGV2X2RiZyh3ZGV2LT5kZXYsICJjaGlwIGFuc3dlciBpbW1lZGlh dGVseVxuIik7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IHVwbG9hZF9maXJtd2Fy ZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgY29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4pDQorew0K KwlpbnQgcmV0Ow0KKwl1MzIgb2ZmcywgYnl0ZXNfZG9uZTsNCisJa3RpbWVfdCBub3csIHN0YXJ0 Ow0KKw0KKwlpZiAobGVuICUgRE5MRF9CTE9DS19TSVpFKSB7DQorCQlkZXZfZXJyKHdkZXYtPmRl diwgImZpcm13YXJlIHNpemUgaXMgbm90IGFsaWduZWQuIEJ1ZmZlciBvdmVycnVuIHdpbGwgb2Nj dXJcbiIpOw0KKwkJcmV0dXJuIC1FSU87DQorCX0NCisJb2ZmcyA9IDA7DQorCXdoaWxlIChvZmZz IDwgbGVuKSB7DQorCQlzdGFydCA9IGt0aW1lX2dldCgpOw0KKwkJZm9yICg7Oykgew0KKwkJCXJl dCA9IHNyYW1fcmVnX3JlYWQod2RldiwgV0ZYX0RDQV9HRVQsICZieXRlc19kb25lKTsNCisJCQlp ZiAocmV0IDwgMCkNCisJCQkJcmV0dXJuIHJldDsNCisJCQlub3cgPSBrdGltZV9nZXQoKTsNCisJ CQlpZiAob2ZmcyArIEROTERfQkxPQ0tfU0laRSAtIGJ5dGVzX2RvbmUgPCBETkxEX0ZJRk9fU0la RSkNCisJCQkJYnJlYWs7DQorCQkJaWYgKGt0aW1lX2FmdGVyKG5vdywga3RpbWVfYWRkX21zKHN0 YXJ0LCBEQ0FfVElNRU9VVCkpKQ0KKwkJCQlyZXR1cm4gLUVUSU1FRE9VVDsNCisJCX0NCisJCWlm IChrdGltZV9jb21wYXJlKG5vdywgc3RhcnQpKQ0KKwkJCWRldl9kYmcod2Rldi0+ZGV2LCAiYW5z d2VyIGFmdGVyICVsbGR1c1xuIiwga3RpbWVfdXNfZGVsdGEobm93LCBzdGFydCkpOw0KKw0KKwkJ cmV0ID0gc3JhbV93cml0ZV9kbWFfc2FmZSh3ZGV2LCBXRlhfRE5MRF9GSUZPICsgKG9mZnMgJSBE TkxEX0ZJRk9fU0laRSksDQorCQkJCQkgIGRhdGEgKyBvZmZzLCBETkxEX0JMT0NLX1NJWkUpOw0K KwkJaWYgKHJldCA8IDApDQorCQkJcmV0dXJuIHJldDsNCisNCisJCS8vIFdGeCBzZWVtcyB0byBu b3Qgc3VwcG9ydCB3cml0aW5nIDAgaW4gdGhpcyByZWdpc3RlciBkdXJpbmcNCisJCS8vIGZpcnN0 IGxvb3ANCisJCW9mZnMgKz0gRE5MRF9CTE9DS19TSVpFOw0KKwkJcmV0ID0gc3JhbV9yZWdfd3Jp dGUod2RldiwgV0ZYX0RDQV9QVVQsIG9mZnMpOw0KKwkJaWYgKHJldCA8IDApDQorCQkJcmV0dXJu IHJldDsNCisJfQ0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIHZvaWQgcHJpbnRfYm9vdF9z dGF0dXMoc3RydWN0IHdmeF9kZXYgKndkZXYpDQorew0KKwl1MzIgdmFsMzI7DQorDQorCXNyYW1f cmVnX3JlYWQod2RldiwgV0ZYX1NUQVRVU19JTkZPLCAmdmFsMzIpOw0KKwlpZiAodmFsMzIgPT0g MHgxMjM0NTY3OCkgew0KKwkJZGV2X2luZm8od2Rldi0+ZGV2LCAibm8gZXJyb3IgcmVwb3J0ZWQg Ynkgc2VjdXJlIGJvb3RcbiIpOw0KKwl9IGVsc2Ugew0KKwkJc3JhbV9yZWdfcmVhZCh3ZGV2LCBX RlhfRVJSX0lORk8sICZ2YWwzMik7DQorCQlpZiAodmFsMzIgPCBBUlJBWV9TSVpFKGZ3aW9fZXJy b3Jfc3RyaW5ncykgJiYgZndpb19lcnJvcl9zdHJpbmdzW3ZhbDMyXSkNCisJCQlkZXZfaW5mbyh3 ZGV2LT5kZXYsICJzZWN1cmUgYm9vdCBlcnJvcjogJXNcbiIsIGZ3aW9fZXJyb3Jfc3RyaW5nc1t2 YWwzMl0pOw0KKwkJZWxzZQ0KKwkJCWRldl9pbmZvKHdkZXYtPmRldiwgInNlY3VyZSBib290IGVy cm9yOiBVbmtub3duICgweCUwMngpXG4iLCB2YWwzMik7DQorCX0NCit9DQorDQoraW50IGxvYWRf ZmlybXdhcmVfc2VjdXJlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KQ0KK3sNCisJY29uc3Qgc3RydWN0 IGZpcm13YXJlICpmdyA9IE5VTEw7DQorCWludCBoZWFkZXJfc2l6ZTsNCisJaW50IGZ3X29mZnNl dDsNCisJa3RpbWVfdCBzdGFydDsNCisJdTggKmJ1ZjsNCisJaW50IHJldDsNCisNCisJQlVJTERf QlVHX09OKFBURV9JTkZPX1NJWkUgPiBCT09UTE9BREVSX0xBQkVMX1NJWkUpOw0KKwlidWYgPSBr bWFsbG9jKEJPT1RMT0FERVJfTEFCRUxfU0laRSArIDEsIEdGUF9LRVJORUwpOw0KKwlpZiAoIWJ1 ZikNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwlzcmFtX3JlZ193cml0ZSh3ZGV2LCBXRlhfRENB X0hPU1RfU1RBVFVTLCBIT1NUX1JFQURZKTsNCisJcmV0ID0gd2FpdF9uY3Bfc3RhdHVzKHdkZXYs IE5DUF9JTkZPX1JFQURZKTsNCisJaWYgKHJldCkNCisJCWdvdG8gZXJyb3I7DQorDQorCXNyYW1f YnVmX3JlYWQod2RldiwgV0ZYX0JPT1RMT0FERVJfTEFCRUwsIGJ1ZiwgQk9PVExPQURFUl9MQUJF TF9TSVpFKTsNCisJYnVmW0JPT1RMT0FERVJfTEFCRUxfU0laRV0gPSAwOw0KKwlkZXZfZGJnKHdk ZXYtPmRldiwgImJvb3Rsb2FkZXI6IFwiJXNcIlxuIiwgYnVmKTsNCisNCisJc3JhbV9idWZfcmVh ZCh3ZGV2LCBXRlhfUFRFX0lORk8sIGJ1ZiwgUFRFX0lORk9fU0laRSk7DQorCXJldCA9IGdldF9m aXJtd2FyZSh3ZGV2LCBidWZbUFRFX0lORk9fS0VZU0VUX0lEWF0sICZmdywgJmZ3X29mZnNldCk7 DQorCWlmIChyZXQpDQorCQlnb3RvIGVycm9yOw0KKwloZWFkZXJfc2l6ZSA9IGZ3X29mZnNldCAr IEZXX1NJR05BVFVSRV9TSVpFICsgRldfSEFTSF9TSVpFOw0KKw0KKwlzcmFtX3JlZ193cml0ZSh3 ZGV2LCBXRlhfRENBX0hPU1RfU1RBVFVTLCBIT1NUX0lORk9fUkVBRCk7DQorCXJldCA9IHdhaXRf bmNwX3N0YXR1cyh3ZGV2LCBOQ1BfUkVBRFkpOw0KKwlpZiAocmV0KQ0KKwkJZ290byBlcnJvcjsN CisNCisJc3JhbV9yZWdfd3JpdGUod2RldiwgV0ZYX0ROTERfRklGTywgMHhGRkZGRkZGRik7IC8v IEZpZm8gaW5pdA0KKwlzcmFtX3dyaXRlX2RtYV9zYWZlKHdkZXYsIFdGWF9EQ0FfRldfVkVSU0lP TiwgIlx4MDFceDAwXHgwMFx4MDAiLCBGV19WRVJTSU9OX1NJWkUpOw0KKwlzcmFtX3dyaXRlX2Rt YV9zYWZlKHdkZXYsIFdGWF9EQ0FfRldfU0lHTkFUVVJFLCBmdy0+ZGF0YSArIGZ3X29mZnNldCwg RldfU0lHTkFUVVJFX1NJWkUpOw0KKwlzcmFtX3dyaXRlX2RtYV9zYWZlKHdkZXYsIFdGWF9EQ0Ff RldfSEFTSCwgZnctPmRhdGEgKyBmd19vZmZzZXQgKyBGV19TSUdOQVRVUkVfU0laRSwgRldfSEFT SF9TSVpFKTsNCisJc3JhbV9yZWdfd3JpdGUod2RldiwgV0ZYX0RDQV9JTUFHRV9TSVpFLCBmdy0+ c2l6ZSAtIGhlYWRlcl9zaXplKTsNCisJc3JhbV9yZWdfd3JpdGUod2RldiwgV0ZYX0RDQV9IT1NU X1NUQVRVUywgSE9TVF9VUExPQURfUEVORElORyk7DQorCXJldCA9IHdhaXRfbmNwX3N0YXR1cyh3 ZGV2LCBOQ1BfRE9XTkxPQURfUEVORElORyk7DQorCWlmIChyZXQpDQorCQlnb3RvIGVycm9yOw0K Kw0KKwlzdGFydCA9IGt0aW1lX2dldCgpOw0KKwlyZXQgPSB1cGxvYWRfZmlybXdhcmUod2Rldiwg ZnctPmRhdGEgKyBoZWFkZXJfc2l6ZSwgZnctPnNpemUgLSBoZWFkZXJfc2l6ZSk7DQorCWlmIChy ZXQpDQorCQlnb3RvIGVycm9yOw0KKwlkZXZfZGJnKHdkZXYtPmRldiwgImZpcm13YXJlIGxvYWQg YWZ0ZXIgJWxsZHVzXG4iLCBrdGltZV91c19kZWx0YShrdGltZV9nZXQoKSwgc3RhcnQpKTsNCisN CisJc3JhbV9yZWdfd3JpdGUod2RldiwgV0ZYX0RDQV9IT1NUX1NUQVRVUywgSE9TVF9VUExPQURf Q09NUExFVEUpOw0KKwlyZXQgPSB3YWl0X25jcF9zdGF0dXMod2RldiwgTkNQX0FVVEhfT0spOw0K KwkvLyBMZWdhY3kgUk9NIHN1cHBvcnQNCisJaWYgKHJldCA8IDApDQorCQlyZXQgPSB3YWl0X25j cF9zdGF0dXMod2RldiwgTkNQX1BVQl9LRVlfUkRZKTsNCisJaWYgKHJldCA8IDApDQorCQlnb3Rv IGVycm9yOw0KKwlzcmFtX3JlZ193cml0ZSh3ZGV2LCBXRlhfRENBX0hPU1RfU1RBVFVTLCBIT1NU X09LX1RPX0pVTVApOw0KKw0KK2Vycm9yOg0KKwlrZnJlZShidWYpOw0KKwlpZiAoZncpDQorCQly ZWxlYXNlX2Zpcm13YXJlKGZ3KTsNCisJaWYgKHJldCkNCisJCXByaW50X2Jvb3Rfc3RhdHVzKHdk ZXYpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50IGluaXRfZ3ByKHN0cnVjdCB3 ZnhfZGV2ICp3ZGV2KQ0KK3sNCisJaW50IHJldCwgaTsNCisJc3RhdGljIGNvbnN0IHN0cnVjdCB7 DQorCQlpbnQgaW5kZXg7DQorCQl1MzIgdmFsdWU7DQorCX0gZ3ByX2luaXRbXSA9IHsNCisJCXsg MHgwNywgMHgyMDg3NzUgfSwNCisJCXsgMHgwOCwgMHgyRUMwMjAgfSwNCisJCXsgMHgwOSwgMHgz QzNDM0MgfSwNCisJCXsgMHgwQiwgMHgzMjJDNDQgfSwNCisJCXsgMHgwQywgMHhBMDY0OTcgfSwN CisJfTsNCisNCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZ3ByX2luaXQpOyBpKyspIHsN CisJCXJldCA9IGlncHJfcmVnX3dyaXRlKHdkZXYsIGdwcl9pbml0W2ldLmluZGV4LCBncHJfaW5p dFtpXS52YWx1ZSk7DQorCQlpZiAocmV0IDwgMCkNCisJCQlyZXR1cm4gcmV0Ow0KKwkJZGV2X2Ri Zyh3ZGV2LT5kZXYsICIgIGluZGV4ICUwMng6ICUwOHhcbiIsIGdwcl9pbml0W2ldLmluZGV4LCBn cHJfaW5pdFtpXS52YWx1ZSk7DQorCX0NCisJcmV0dXJuIDA7DQorfQ0KKw0KK2ludCB3ZnhfaW5p dF9kZXZpY2Uoc3RydWN0IHdmeF9kZXYgKndkZXYpDQorew0KKwlpbnQgcmV0Ow0KKwlpbnQgaHdf cmV2aXNpb24sIGh3X3R5cGU7DQorCWludCB3YWtldXBfdGltZW91dCA9IDUwOyAvLyBtcw0KKwlr dGltZV90IG5vdywgc3RhcnQ7DQorCXUzMiByZWc7DQorDQorCXJlZyA9IENGR19ESVJFQ1RfQUND RVNTX01PREUgfCBDRkdfQ1BVX1JFU0VUIHwgQ0ZHX1dPUkRfTU9ERTI7DQorCWlmICh3ZGV2LT5w ZGF0YS51c2VfcmlzaW5nX2NsaykNCisJCXJlZyB8PSBDRkdfQ0xLX1JJU0VfRURHRTsNCisJcmV0 ID0gY29uZmlnX3JlZ193cml0ZSh3ZGV2LCByZWcpOw0KKwlpZiAocmV0IDwgMCkgew0KKwkJZGV2 X2Vycih3ZGV2LT5kZXYsICJidXMgcmV0dXJuZWQgYW4gZXJyb3IgZHVyaW5nIGZpcnN0IHdyaXRl IGFjY2Vzcy4gSG9zdCBjb25maWd1cmF0aW9uIGVycm9yP1xuIik7DQorCQlyZXR1cm4gLUVJTzsN CisJfQ0KKw0KKwlyZXQgPSBjb25maWdfcmVnX3JlYWQod2RldiwgJnJlZyk7DQorCWlmIChyZXQg PCAwKSB7DQorCQlkZXZfZXJyKHdkZXYtPmRldiwgImJ1cyByZXR1cm5lZCBhbiBlcnJvciBkdXJp bmcgZmlyc3QgcmVhZCBhY2Nlc3MuIEJ1cyBjb25maWd1cmF0aW9uIGVycm9yP1xuIik7DQorCQly ZXR1cm4gLUVJTzsNCisJfQ0KKwlpZiAocmVnID09IDAgfHwgcmVnID09IH4wKSB7DQorCQlkZXZf ZXJyKHdkZXYtPmRldiwgImNoaXAgbXV0ZS4gQnVzIGNvbmZpZ3VyYXRpb24gZXJyb3Igb3IgY2hp cCB3YXNuJ3QgcmVzZXQ/XG4iKTsNCisJCXJldHVybiAtRUlPOw0KKwl9DQorCWRldl9kYmcod2Rl di0+ZGV2LCAiaW5pdGlhbCBjb25maWcgcmVnaXN0ZXIgdmFsdWU6ICUwOHhcbiIsIHJlZyk7DQor DQorCWh3X3JldmlzaW9uID0gRklFTERfR0VUKENGR19ERVZJQ0VfSURfTUFKT1IsIHJlZyk7DQor CWlmIChod19yZXZpc2lvbiA9PSAwIHx8IGh3X3JldmlzaW9uID4gMikgew0KKwkJZGV2X2Vycih3 ZGV2LT5kZXYsICJiYWQgaGFyZHdhcmUgcmV2aXNpb24gbnVtYmVyOiAlZFxuIiwgaHdfcmV2aXNp b24pOw0KKwkJcmV0dXJuIC1FTk9ERVY7DQorCX0NCisJaHdfdHlwZSA9IEZJRUxEX0dFVChDRkdf REVWSUNFX0lEX1RZUEUsIHJlZyk7DQorCWlmIChod190eXBlID09IDEpIHsNCisJCWRldl9ub3Rp Y2Uod2Rldi0+ZGV2LCAiZGV2ZWxvcG1lbnQgaGFyZHdhcmUgZGV0ZWN0ZWRcbiIpOw0KKwkJd2Fr ZXVwX3RpbWVvdXQgPSAyMDAwOw0KKwl9DQorDQorCXJldCA9IGluaXRfZ3ByKHdkZXYpOw0KKwlp ZiAocmV0IDwgMCkNCisJCXJldHVybiByZXQ7DQorDQorCXJldCA9IGNvbnRyb2xfcmVnX3dyaXRl KHdkZXYsIENUUkxfV0xBTl9XQUtFVVApOw0KKwlpZiAocmV0IDwgMCkNCisJCXJldHVybiAtRUlP Ow0KKwlzdGFydCA9IGt0aW1lX2dldCgpOw0KKwlmb3IgKDs7KSB7DQorCQlyZXQgPSBjb250cm9s X3JlZ19yZWFkKHdkZXYsICZyZWcpOw0KKwkJbm93ID0ga3RpbWVfZ2V0KCk7DQorCQlpZiAocmVn ICYgQ1RSTF9XTEFOX1JFQURZKQ0KKwkJCWJyZWFrOw0KKwkJaWYgKGt0aW1lX2FmdGVyKG5vdywg a3RpbWVfYWRkX21zKHN0YXJ0LCB3YWtldXBfdGltZW91dCkpKSB7DQorCQkJZGV2X2Vycih3ZGV2 LT5kZXYsICJjaGlwIGRpZG4ndCB3YWtlIHVwLiBDaGlwIHdhc24ndCByZXNldD9cbiIpOw0KKwkJ CXJldHVybiAtRVRJTUVET1VUOw0KKwkJfQ0KKwl9DQorCWRldl9kYmcod2Rldi0+ZGV2LCAiY2hp cCB3YWtlIHVwIGFmdGVyICVsbGR1c1xuIiwga3RpbWVfdXNfZGVsdGEobm93LCBzdGFydCkpOw0K Kw0KKwlyZXQgPSBjb25maWdfcmVnX3dyaXRlX2JpdHMod2RldiwgQ0ZHX0NQVV9SRVNFVCwgMCk7 DQorCWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsNCisJcmV0ID0gbG9hZF9maXJtd2FyZV9z ZWN1cmUod2Rldik7DQorCWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsNCisJcmV0ID0gY29u ZmlnX3JlZ193cml0ZV9iaXRzKHdkZXYsIENGR19ESVJFQ1RfQUNDRVNTX01PREUgfCBDRkdfSVJR X0VOQUJMRV9EQVRBIHwgQ0ZHX0lSUV9FTkFCTEVfV1JEWSwgQ0ZHX0lSUV9FTkFCTEVfREFUQSk7 DQorCXJldHVybiByZXQ7DQorfQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZngvZndp by5oIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9md2lvLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQpp bmRleCAwMDAwMDAwMDAwMDAuLjYwMjhmOTI1MDNmZQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJp dmVycy9zdGFnaW5nL3dmeC9md2lvLmgNCkBAIC0wLDAgKzEsMTUgQEANCisvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQorLyoNCisgKiBGaXJtd2FyZSBsb2FkaW5n Lg0KKyAqDQorICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMTksIFNpbGljb24gTGFib3JhdG9yaWVz LCBJbmMuDQorICogQ29weXJpZ2h0IChjKSAyMDEwLCBTVC1Fcmljc3Nvbg0KKyAqLw0KKyNpZm5k ZWYgV0ZYX0ZXSU9fSA0KKyNkZWZpbmUgV0ZYX0ZXSU9fSA0KKw0KK3N0cnVjdCB3ZnhfZGV2Ow0K Kw0KK2ludCB3ZnhfaW5pdF9kZXZpY2Uoc3RydWN0IHdmeF9kZXYgKndkZXYpOw0KKw0KKyNlbmRp ZiAvKiBXRlhfRldJT19IICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9tYWlu LmMgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L21haW4uYw0KaW5kZXggNzQ0NDQ1ZWY1OTdjLi5hOGVm MjkxNzQyMzIgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L21haW4uYw0KKysrIGIv ZHJpdmVycy9zdGFnaW5nL3dmeC9tYWluLmMNCkBAIC0yMCw2ICsyMCw4IEBADQogDQogI2luY2x1 ZGUgIm1haW4uaCINCiAjaW5jbHVkZSAid2Z4LmgiDQorI2luY2x1ZGUgImZ3aW8uaCINCisjaW5j bHVkZSAiaHdpby5oIg0KICNpbmNsdWRlICJidXMuaCINCiAjaW5jbHVkZSAid2Z4X3ZlcnNpb24u aCINCiANCkBAIC03Niw2ICs3OCwyNCBAQCB2b2lkIHdmeF9mcmVlX2NvbW1vbihzdHJ1Y3Qgd2Z4 X2RldiAqd2RldikNCiB7DQogfQ0KIA0KK2ludCB3ZnhfcHJvYmUoc3RydWN0IHdmeF9kZXYgKndk ZXYpDQorew0KKwlpbnQgZXJyOw0KKw0KKwllcnIgPSB3ZnhfaW5pdF9kZXZpY2Uod2Rldik7DQor CWlmIChlcnIpDQorCQlnb3RvIGVycjE7DQorDQorCXJldHVybiAwOw0KKw0KK2VycjE6DQorCXJl dHVybiBlcnI7DQorfQ0KKw0KK3ZvaWQgd2Z4X3JlbGVhc2Uoc3RydWN0IHdmeF9kZXYgKndkZXYp DQorew0KK30NCisNCiBzdGF0aWMgaW50IF9faW5pdCB3ZnhfY29yZV9pbml0KHZvaWQpDQogew0K IAlpbnQgcmV0ID0gMDsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L21haW4uaCBi L2RyaXZlcnMvc3RhZ2luZy93ZngvbWFpbi5oDQppbmRleCA4MjIyMmVkZjk5OGIuLjhiMjUyNmQ4 MTk4NCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZngvbWFpbi5oDQorKysgYi9kcml2 ZXJzL3N0YWdpbmcvd2Z4L21haW4uaA0KQEAgLTE4LDYgKzE4LDEzIEBADQogc3RydWN0IHdmeF9k ZXY7DQogDQogc3RydWN0IHdmeF9wbGF0Zm9ybV9kYXRhIHsNCisJLyogS2V5c2V0IGFuZCAiLnNl YyIgZXh0ZW50aW9uIHdpbGwgYXBwZW5kZWQgdG8gdGhpcyBzdHJpbmcgKi8NCisJY29uc3QgY2hh ciAqZmlsZV9mdzsNCisJLyoNCisJICogaWYgdHJ1ZSBISUYgRF9vdXQgaXMgc2FtcGxlZCBvbiB0 aGUgcmlzaW5nIGVkZ2Ugb2YgdGhlIGNsb2NrDQorCSAqIChpbnRlbmRlZCB0byBiZSB1c2VkIGlu IDUwTWh6IFNESU8pDQorCSAqLw0KKwlib29sIHVzZV9yaXNpbmdfY2xrOw0KIH07DQogDQogc3Ry dWN0IHdmeF9kZXYgKndmeF9pbml0X2NvbW1vbihzdHJ1Y3QgZGV2aWNlICpkZXYsDQpAQCAtMjYs NiArMzMsOSBAQCBzdHJ1Y3Qgd2Z4X2RldiAqd2Z4X2luaXRfY29tbW9uKHN0cnVjdCBkZXZpY2Ug KmRldiwNCiAJCQkJdm9pZCAqaHdidXNfcHJpdik7DQogdm9pZCB3ZnhfZnJlZV9jb21tb24oc3Ry dWN0IHdmeF9kZXYgKndkZXYpOw0KIA0KK2ludCB3ZnhfcHJvYmUoc3RydWN0IHdmeF9kZXYgKndk ZXYpOw0KK3ZvaWQgd2Z4X3JlbGVhc2Uoc3RydWN0IHdmeF9kZXYgKndkZXYpOw0KKw0KIHN0cnVj dCBncGlvX2Rlc2MgKndmeF9nZXRfZ3BpbyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBvdmVycmlk ZSwNCiAJCQkgICAgICAgY29uc3QgY2hhciAqbGFiZWwpOw0KIA0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvc3RhZ2luZy93Zngvd2Z4LmggYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L3dmeC5oDQppbmRleCA5 NzE2YWNjOTgxZGYuLjU2YWVkMzMyOTFhZSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvc3RhZ2luZy93 Zngvd2Z4LmgNCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93Zngvd2Z4LmgNCkBAIC0xOSw2ICsxOSw4 IEBAIHN0cnVjdCB3ZnhfZGV2IHsNCiAJc3RydWN0IGRldmljZQkJKmRldjsNCiAJY29uc3Qgc3Ry dWN0IGh3YnVzX29wcwkqaHdidXNfb3BzOw0KIAl2b2lkCQkJKmh3YnVzX3ByaXY7DQorDQorCXU4 CQkJa2V5c2V0Ow0KIH07DQogDQogI2VuZGlmIC8qIFdGWF9IICovDQotLSANCjIuMjAuMQ0K