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 6FEB9C3A5A6 for ; Thu, 19 Sep 2019 13:54:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2A9F621D7A for ; Thu, 19 Sep 2019 13:54:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="qdeyaUp8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403794AbfISNwn (ORCPT ); Thu, 19 Sep 2019 09:52:43 -0400 Received: from mail-eopbgr700060.outbound.protection.outlook.com ([40.107.70.60]:34912 "EHLO NAM04-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2387924AbfISNwl (ORCPT ); Thu, 19 Sep 2019 09:52:41 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cr3knVlfdLEd4oVq9VaV3b3dlvtO110Q8OxKRzdGTuNCg72OlgoLZEX2+J/xn0R/f72+6FnR/nDKdN3pv+T9jIzSUZznNdB2LN9gGQ1fMBC7tyyHMjH5c+Y0bVjpZpi7fvjERPTQiuZWqtAicAeGjpjbO29qMaBVX5zxOTKHLo/dKSexqCC87kzo/oU9xXf8HqXfZxoam1uDAo5w/RgImw+t6YFtSvQPpciRqWVu55jYv2V+lH0VTtXRqb1ivQBsCCQlTq0DnO0+1fnyquySFWmJVvpRr7djvRNOAL/HHsVSThRQnBpvTxOrbLOwlKbKsvriR4Lz5FDVaeq3tMlS1A== 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=uAlOZLlwivXTdC1BS0GmtLZFhoGma3ZuLCQ+0oU0lz4=; b=JJmLYKGBNP1yEW+U7Bq9VBXjKPNOhoQ6Z0Z3d3DgoVXtLowEmL7H+Q3IGpsZOUXirIvbAYH4QAb+eTDGUNoEFOJJXOvXN7+soo6FSaT9cXFQiwp0ZZDiJqRxIOTCVHtz9Z+rbQ3OdFCglBWQAOmZlE8t2XZZi81gg+nx3Oaq/nZi+C4ybU8b3v+jq3GwrSh9w5JEtYtot2VcdUEDdBR/7uHC2jW5JeVu/Ig7fe8E4mKP2aBNltrqMQa14/uKJkBHpHyU3wgDo1+YmLjvW/e+DiAwqtdrqlS1sD3I6aW2Mz7tWkZR60YlEBv5IIQH0C26ljPm6YV0UHF+CYOv9JHouw== 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=uAlOZLlwivXTdC1BS0GmtLZFhoGma3ZuLCQ+0oU0lz4=; b=qdeyaUp8GD8qCumdyhsGHyWrUwyQBtPxju8jTzeuTgz5Uao5Ejs2hIFizNz7Vq3oixuN1YKnh5+vz1QU/RJTzAcjJa/4ISg9usgbAP9P4Ay9rNPZg7BoaWXSJtyc6kt1aI8dV+VPNvaTuSBoTZFtpSvYoI5/qKswfrIjmi8OBf8= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (20.179.149.217) by MN2PR11MB4400.namprd11.prod.outlook.com (52.135.37.204) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2263.20; Thu, 19 Sep 2019 13:52:31 +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 13:52:31 +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 v2 02/20] staging: wfx: add support for I/O access Thread-Topic: [PATCH v2 02/20] staging: wfx: add support for I/O access Thread-Index: AQHVbvF6faUoM0BeiUKFyqEHsn0RWg== Date: Thu, 19 Sep 2019 13:52:30 +0000 Message-ID: <20190919135220.30663-3-Jerome.Pouiller@silabs.com> References: <20190919135220.30663-1-Jerome.Pouiller@silabs.com> In-Reply-To: <20190919135220.30663-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: b81b54c7-bf11-4ecf-4720-08d73d089db4 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600167)(711020)(4605104)(1401327)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:MN2PR11MB4400; x-ms-traffictypediagnostic: MN2PR11MB4400: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:580; x-forefront-prvs: 016572D96D x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(376002)(39850400004)(136003)(366004)(396003)(346002)(189003)(199004)(3846002)(76176011)(8676002)(76116006)(476003)(25786009)(2616005)(6116002)(54906003)(71190400001)(6436002)(102836004)(6486002)(36756003)(186003)(71200400001)(26005)(305945005)(6512007)(99286004)(6506007)(91956017)(7736002)(446003)(8936002)(256004)(81156014)(14444005)(2906002)(66066001)(30864003)(107886003)(4326008)(86362001)(14454004)(478600001)(64756008)(81166006)(2501003)(486006)(66574012)(316002)(66946007)(66446008)(66556008)(5660300002)(11346002)(66476007)(1076003)(110136005);DIR:OUT;SFP:1101;SCL:1;SRVR:MN2PR11MB4400;H:MN2PR11MB4063.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A: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: UfsD2wX74x49lSnqUZoOzzrHVXIPdLEZ+BNd+lrpBukQe+shFckr0fGibQ9o7Zid4GIgWBLB8YL+fCK3BV+bO0FeEq2WgpIXIgvYqVii2nqFgMNMOzBWRCM+76CqRU9u022QxchlYLLTVzrvo1Y0T/w9GX5wLwKIhZuld+tqeulwpyeKBW/EumjFkNC9SvRK9uUxWvWDVKuZrMXnKWxaw3b3R7t1dZiraTWU3Hoc2CviYf9qsrYWsg5HLTkjDKu5yfFarQZk/ylq8C7MAMtfP7J+r0Uvjqi4i5hvkI1MTQw6QdwECDepwisF5TFjScAgwiB9zWPA9/9B4ebbyutaS69mNQzSk7t2pfIvhFLVT8kAAZ74KFSCTPMkilyWiZBrMA7eHGkpmgeD26QtG4ZjlvJ37fWqD5tbj5b6hoUkDGw= Content-Type: text/plain; charset="utf-8" Content-ID: <9A31C8C1B88F0140BD001FE6A239E4A8@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: b81b54c7-bf11-4ecf-4720-08d73d089db4 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Sep 2019 13:52:30.4228 (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: b7aSphENCu497JKVZixohdkFLIVFUkLi9Z4JUifTInTsM4moaxsgfEBjSKvu/rDCZy1l1BGxR+Nu2uhljNVVUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4400 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPg0KDQpJ bnRyb2R1Y2UgYnVzIGxldmVsIGNvbW11bmljYXRpb24gbGF5ZXIuIEF0IHRoaXMgbGV2ZWwsIDcg cmVnaXN0ZXJzIGNhbg0KYmUgYWRkcmVzc2VkLg0KDQpOb3RpY2UgdGhhdCBTUEkgZHJpdmVyIGlz IGFibGUgdG8gbWFuYWdlIGNoaXAgcmVzZXQuIFNESU8gbW9kZSByZWxpZXMNCm9uIGFuIGV4dGVy bmFsIGRyaXZlciAoYG1tYy1wd3JzZXFgKSB0byByZXNldCBjaGlwLg0KDQpTaWduZWQtb2ZmLWJ5 OiBKw6lyw7RtZSBQb3VpbGxlciA8amVyb21lLnBvdWlsbGVyQHNpbGFicy5jb20+DQotLS0NCiBk cml2ZXJzL3N0YWdpbmcvd2Z4L2J1cy5oICAgICAgfCAgMTcgKysrDQogZHJpdmVycy9zdGFnaW5n L3dmeC9idXNfc2Rpby5jIHwgMTg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCiBk cml2ZXJzL3N0YWdpbmcvd2Z4L2J1c19zcGkuYyAgfCAyMDAgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystDQogZHJpdmVycy9zdGFnaW5nL3dmeC9od2lvLmggICAgIHwgIDQ4ICsrKysr KysrDQogZHJpdmVycy9zdGFnaW5nL3dmeC9tYWluLmMgICAgIHwgIDUzICsrKysrKysrKw0KIGRy aXZlcnMvc3RhZ2luZy93ZngvbWFpbi5oICAgICB8ICAzMiArKysrKysNCiBkcml2ZXJzL3N0YWdp bmcvd2Z4L3dmeC5oICAgICAgfCAgMjQgKysrKw0KIDcgZmlsZXMgY2hhbmdlZCwgNTYxIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3Rh Z2luZy93ZngvaHdpby5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy93Zngv bWFpbi5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy93Zngvd2Z4LmgNCg0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZngvYnVzLmggYi9kcml2ZXJzL3N0YWdpbmcv d2Z4L2J1cy5oDQppbmRleCA4Y2U4NzFhOGE5ZmYuLmViNzdhYmMwOWVjMiAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvc3RhZ2luZy93ZngvYnVzLmgNCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvYnVz LmgNCkBAIC0xMSw2ICsxMSwyMyBAQA0KICNpbmNsdWRlIDxsaW51eC9tbWMvc2Rpb19mdW5jLmg+ DQogI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4NCiANCisjZGVmaW5lIFdGWF9SRUdfQ09ORklH ICAgICAgICAweDANCisjZGVmaW5lIFdGWF9SRUdfQ09OVFJPTCAgICAgICAweDENCisjZGVmaW5l IFdGWF9SRUdfSU5fT1VUX1FVRVVFICAweDINCisjZGVmaW5lIFdGWF9SRUdfQUhCX0RQT1JUICAg ICAweDMNCisjZGVmaW5lIFdGWF9SRUdfQkFTRV9BRERSICAgICAweDQNCisjZGVmaW5lIFdGWF9S RUdfU1JBTV9EUE9SVCAgICAweDUNCisjZGVmaW5lIFdGWF9SRUdfU0VUX0dFTl9SX1cgICAweDYN CisjZGVmaW5lIFdGWF9SRUdfRlJBTUVfT1VUICAgICAweDcNCisNCitzdHJ1Y3QgaHdidXNfb3Bz IHsNCisJaW50ICgqY29weV9mcm9tX2lvKSh2b2lkICpidXNfcHJpdiwgdW5zaWduZWQgaW50IGFk ZHIsIHZvaWQgKmRzdCwgc2l6ZV90IGNvdW50KTsNCisJaW50ICgqY29weV90b19pbykodm9pZCAq YnVzX3ByaXYsIHVuc2lnbmVkIGludCBhZGRyLCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBjb3Vu dCk7DQorCXZvaWQgKCpsb2NrKSh2b2lkICpidXNfcHJpdik7DQorCXZvaWQgKCp1bmxvY2spKHZv aWQgKmJ1c19wcml2KTsNCisJc2l6ZV90ICgqYWxpZ25fc2l6ZSkodm9pZCAqYnVzX3ByaXYsIHNp emVfdCBzaXplKTsNCit9Ow0KKw0KIGV4dGVybiBzdHJ1Y3Qgc2Rpb19kcml2ZXIgd2Z4X3NkaW9f ZHJpdmVyOw0KIGV4dGVybiBzdHJ1Y3Qgc3BpX2RyaXZlciB3Znhfc3BpX2RyaXZlcjsNCiANCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L2J1c19zZGlvLmMgYi9kcml2ZXJzL3N0YWdp bmcvd2Z4L2J1c19zZGlvLmMNCmluZGV4IDRiMjZjOTk0ZjQzYy4uMzViY2NhN2VjNWRjIDEwMDY0 NA0KLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dmeC9idXNfc2Rpby5jDQorKysgYi9kcml2ZXJzL3N0 YWdpbmcvd2Z4L2J1c19zZGlvLmMNCkBAIC04LDM2ICs4LDIyMyBAQA0KICNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4NCiAjaW5jbHVkZSA8bGludXgvbW1jL3NkaW9fZnVuYy5oPg0KICNpbmNsdWRl IDxsaW51eC9tbWMvY2FyZC5oPg0KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4NCiAjaW5j bHVkZSA8bGludXgvb2ZfaXJxLmg+DQogDQogI2luY2x1ZGUgImJ1cy5oIg0KKyNpbmNsdWRlICJ3 ZnguaCINCisjaW5jbHVkZSAiaHdpby5oIg0KKyNpbmNsdWRlICJtYWluLmgiDQorDQorc3RhdGlj IGNvbnN0IHN0cnVjdCB3ZnhfcGxhdGZvcm1fZGF0YSB3Znhfc2Rpb19wZGF0YSA9IHsNCit9Ow0K Kw0KK3N0cnVjdCB3Znhfc2Rpb19wcml2IHsNCisJc3RydWN0IHNkaW9fZnVuYyAqZnVuYzsNCisJ c3RydWN0IHdmeF9kZXYgKmNvcmU7DQorCXU4IGJ1Zl9pZF90eDsNCisJdTggYnVmX2lkX3J4Ow0K KwlpbnQgb2ZfaXJxOw0KK307DQorDQorc3RhdGljIGludCB3Znhfc2Rpb19jb3B5X2Zyb21faW8o dm9pZCAqcHJpdiwgdW5zaWduZWQgaW50IHJlZ19pZCwNCisJCQkJIHZvaWQgKmRzdCwgc2l6ZV90 IGNvdW50KQ0KK3sNCisJc3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cyA9IHByaXY7DQorCXVuc2ln bmVkIGludCBzZGlvX2FkZHIgPSByZWdfaWQgPDwgMjsNCisJaW50IHJldDsNCisNCisJQlVHX09O KHJlZ19pZCA+IDcpOw0KKwlXQVJOKCgodWludHB0cl90KSBkc3QpICYgMywgInVuYWxpZ25lZCBi dWZmZXIgc2l6ZSIpOw0KKwlXQVJOKGNvdW50ICYgMywgInVuYWxpZ25lZCBidWZmZXIgYWRkcmVz cyIpOw0KKw0KKwkvKiBVc2UgcXVldWUgbW9kZSBidWZmZXJzICovDQorCWlmIChyZWdfaWQgPT0g V0ZYX1JFR19JTl9PVVRfUVVFVUUpDQorCQlzZGlvX2FkZHIgfD0gKGJ1cy0+YnVmX2lkX3J4ICsg MSkgPDwgNzsNCisJcmV0ID0gc2Rpb19tZW1jcHlfZnJvbWlvKGJ1cy0+ZnVuYywgZHN0LCBzZGlv X2FkZHIsIGNvdW50KTsNCisJaWYgKCFyZXQgJiYgcmVnX2lkID09IFdGWF9SRUdfSU5fT1VUX1FV RVVFKQ0KKwkJYnVzLT5idWZfaWRfcnggPSAoYnVzLT5idWZfaWRfcnggKyAxKSAlIDQ7DQorDQor CXJldHVybiByZXQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQgd2Z4X3NkaW9fY29weV90b19pbyh2b2lk ICpwcml2LCB1bnNpZ25lZCBpbnQgcmVnX2lkLA0KKwkJCSAgICAgICBjb25zdCB2b2lkICpzcmMs IHNpemVfdCBjb3VudCkNCit7DQorCXN0cnVjdCB3Znhfc2Rpb19wcml2ICpidXMgPSBwcml2Ow0K Kwl1bnNpZ25lZCBpbnQgc2Rpb19hZGRyID0gcmVnX2lkIDw8IDI7DQorCWludCByZXQ7DQorDQor CUJVR19PTihyZWdfaWQgPiA3KTsNCisJV0FSTigoKHVpbnRwdHJfdCkgc3JjKSAmIDMsICJ1bmFs aWduZWQgYnVmZmVyIHNpemUiKTsNCisJV0FSTihjb3VudCAmIDMsICJ1bmFsaWduZWQgYnVmZmVy IGFkZHJlc3MiKTsNCisNCisJLyogVXNlIHF1ZXVlIG1vZGUgYnVmZmVycyAqLw0KKwlpZiAocmVn X2lkID09IFdGWF9SRUdfSU5fT1VUX1FVRVVFKQ0KKwkJc2Rpb19hZGRyIHw9IGJ1cy0+YnVmX2lk X3R4IDw8IDc7DQorCS8vIEZJWE1FOiBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmb3Igc3Jj DQorCXJldCA9IHNkaW9fbWVtY3B5X3RvaW8oYnVzLT5mdW5jLCBzZGlvX2FkZHIsICh2b2lkICop IHNyYywgY291bnQpOw0KKwlpZiAoIXJldCAmJiByZWdfaWQgPT0gV0ZYX1JFR19JTl9PVVRfUVVF VUUpDQorCQlidXMtPmJ1Zl9pZF90eCA9IChidXMtPmJ1Zl9pZF90eCArIDEpICUgMzI7DQorDQor CXJldHVybiByZXQ7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHdmeF9zZGlvX2xvY2sodm9pZCAqcHJp dikNCit7DQorCXN0cnVjdCB3Znhfc2Rpb19wcml2ICpidXMgPSBwcml2Ow0KKw0KKwlzZGlvX2Ns YWltX2hvc3QoYnVzLT5mdW5jKTsNCit9DQorDQorc3RhdGljIHZvaWQgd2Z4X3NkaW9fdW5sb2Nr KHZvaWQgKnByaXYpDQorew0KKwlzdHJ1Y3Qgd2Z4X3NkaW9fcHJpdiAqYnVzID0gcHJpdjsNCisN CisJc2Rpb19yZWxlYXNlX2hvc3QoYnVzLT5mdW5jKTsNCit9DQorDQorc3RhdGljIHZvaWQgd2Z4 X3NkaW9faXJxX2hhbmRsZXIoc3RydWN0IHNkaW9fZnVuYyAqZnVuYykNCit7DQorCXN0cnVjdCB3 Znhfc2Rpb19wcml2ICpidXMgPSBzZGlvX2dldF9kcnZkYXRhKGZ1bmMpOw0KKw0KKwlpZiAoYnVz LT5jb3JlKQ0KKwkJLyogZW1wdHkgKi87DQorCWVsc2UNCisJCVdBUk4oIWJ1cy0+Y29yZSwgInJh Y2UgY29uZGl0aW9uIGluIGRyaXZlciBpbml0L2RlaW5pdCIpOw0KK30NCisNCitzdGF0aWMgaXJx cmV0dXJuX3Qgd2Z4X3NkaW9faXJxX2hhbmRsZXJfZXh0KGludCBpcnEsIHZvaWQgKnByaXYpDQor ew0KKwlzdHJ1Y3Qgd2Z4X3NkaW9fcHJpdiAqYnVzID0gcHJpdjsNCisNCisJaWYgKCFidXMtPmNv cmUpIHsNCisJCVdBUk4oIWJ1cy0+Y29yZSwgInJhY2UgY29uZGl0aW9uIGluIGRyaXZlciBpbml0 L2RlaW5pdCIpOw0KKwkJcmV0dXJuIElSUV9OT05FOw0KKwl9DQorCXNkaW9fY2xhaW1faG9zdChi dXMtPmZ1bmMpOw0KKwlzZGlvX3JlbGVhc2VfaG9zdChidXMtPmZ1bmMpOw0KKwlyZXR1cm4gSVJR X0hBTkRMRUQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQgd2Z4X3NkaW9faXJxX3N1YnNjcmliZShzdHJ1 Y3Qgd2Z4X3NkaW9fcHJpdiAqYnVzKQ0KK3sNCisJaW50IHJldDsNCisNCisJaWYgKGJ1cy0+b2Zf aXJxKSB7DQorCQlyZXQgPSByZXF1ZXN0X2lycShidXMtPm9mX2lycSwgd2Z4X3NkaW9faXJxX2hh bmRsZXJfZXh0LA0KKwkJCQkgIElSUUZfVFJJR0dFUl9SSVNJTkcsICJ3ZngiLCBidXMpOw0KKwl9 IGVsc2Ugew0KKwkJc2Rpb19jbGFpbV9ob3N0KGJ1cy0+ZnVuYyk7DQorCQlyZXQgPSBzZGlvX2Ns YWltX2lycShidXMtPmZ1bmMsIHdmeF9zZGlvX2lycV9oYW5kbGVyKTsNCisJCXNkaW9fcmVsZWFz ZV9ob3N0KGJ1cy0+ZnVuYyk7DQorCX0NCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIGlu dCB3Znhfc2Rpb19pcnFfdW5zdWJzY3JpYmUoc3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cykNCit7 DQorCWludCByZXQ7DQorDQorCWlmIChidXMtPm9mX2lycSkgew0KKwkJZnJlZV9pcnEoYnVzLT5v Zl9pcnEsIGJ1cyk7DQorCQlyZXQgPSAwOw0KKwl9IGVsc2Ugew0KKwkJc2Rpb19jbGFpbV9ob3N0 KGJ1cy0+ZnVuYyk7DQorCQlyZXQgPSBzZGlvX3JlbGVhc2VfaXJxKGJ1cy0+ZnVuYyk7DQorCQlz ZGlvX3JlbGVhc2VfaG9zdChidXMtPmZ1bmMpOw0KKwl9DQorCXJldHVybiByZXQ7DQorfQ0KKw0K K3N0YXRpYyBzaXplX3Qgd2Z4X3NkaW9fYWxpZ25fc2l6ZSh2b2lkICpwcml2LCBzaXplX3Qgc2l6 ZSkNCit7DQorCXN0cnVjdCB3Znhfc2Rpb19wcml2ICpidXMgPSBwcml2Ow0KKw0KKwlyZXR1cm4g c2Rpb19hbGlnbl9zaXplKGJ1cy0+ZnVuYywgc2l6ZSk7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaHdidXNfb3BzIHdmeF9zZGlvX2h3YnVzX29wcyA9IHsNCisJLmNvcHlfZnJvbV9pbyA9 IHdmeF9zZGlvX2NvcHlfZnJvbV9pbywNCisJLmNvcHlfdG9faW8gPSB3Znhfc2Rpb19jb3B5X3Rv X2lvLA0KKwkubG9jawkJCT0gd2Z4X3NkaW9fbG9jaywNCisJLnVubG9jawkJCT0gd2Z4X3NkaW9f dW5sb2NrLA0KKwkuYWxpZ25fc2l6ZQkJPSB3Znhfc2Rpb19hbGlnbl9zaXplLA0KK307DQogDQog c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgd2Z4X3NkaW9fb2ZfbWF0Y2hbXTsNCiBz dGF0aWMgaW50IHdmeF9zZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsDQogCQkJICBj b25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKQ0KIHsNCiAJc3RydWN0IGRldmljZV9ub2Rl ICpucCA9IGZ1bmMtPmRldi5vZl9ub2RlOw0KKwlzdHJ1Y3Qgd2Z4X3NkaW9fcHJpdiAqYnVzOw0K KwlpbnQgcmV0Ow0KIA0KIAlpZiAoZnVuYy0+bnVtICE9IDEpIHsNCiAJCWRldl9lcnIoJmZ1bmMt PmRldiwgIlNESU8gZnVuY3Rpb24gbnVtYmVyIGlzICVkIHdoaWxlIGl0IHNob3VsZCBhbHdheXMg YmUgMSAodW5zdXBwb3J0ZWQgY2hpcD8pXG4iLCBmdW5jLT5udW0pOw0KIAkJcmV0dXJuIC1FTk9E RVY7DQogCX0NCiANCisJYnVzID0gZGV2bV9remFsbG9jKCZmdW5jLT5kZXYsIHNpemVvZigqYnVz KSwgR0ZQX0tFUk5FTCk7DQorCWlmICghYnVzKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQogCWlm IChucCkgew0KIAkJaWYgKCFvZl9tYXRjaF9ub2RlKHdmeF9zZGlvX29mX21hdGNoLCBucCkpIHsN CiAJCQlkZXZfd2FybigmZnVuYy0+ZGV2LCAibm8gY29tcGF0aWJsZSBkZXZpY2UgZm91bmQgaW4g RFRcbiIpOw0KIAkJCXJldHVybiAtRU5PREVWOw0KIAkJfQ0KKwkJYnVzLT5vZl9pcnEgPSBpcnFf b2ZfcGFyc2VfYW5kX21hcChucCwgMCk7DQogCX0gZWxzZSB7DQogCQlkZXZfd2FybigmZnVuYy0+ ZGV2LCAiZGV2aWNlIGlzIG5vdCBkZWNsYXJlZCBpbiBEVCwgZmVhdHVyZXMgd2lsbCBiZSBsaW1p dGVkXG4iKTsNCiAJCS8vIEZJWE1FOiBpZ25vcmUgVklEL1BJRCBhbmQgb25seSByZWx5IG9uIGRl dmljZSB0cmVlDQogCQkvLyByZXR1cm4gLUVOT0RFVjsNCiAJfQ0KLQlyZXR1cm4gLUVJTzsgLy8g RklYTUU6IG5vdCB5ZXQgc3VwcG9ydGVkDQorDQorCWJ1cy0+ZnVuYyA9IGZ1bmM7DQorCXNkaW9f c2V0X2RydmRhdGEoZnVuYywgYnVzKTsNCisJZnVuYy0+Y2FyZC0+cXVpcmtzIHw9IE1NQ19RVUlS S19MRU5JRU5UX0ZOMCB8IE1NQ19RVUlSS19CTEtTWl9GT1JfQllURV9NT0RFIHwgTU1DX1FVSVJL X0JST0tFTl9CWVRFX01PREVfNTEyOw0KKw0KKwlzZGlvX2NsYWltX2hvc3QoZnVuYyk7DQorCXJl dCA9IHNkaW9fZW5hYmxlX2Z1bmMoZnVuYyk7DQorCS8vIEJsb2NrIG9mIDY0IGJ5dGVzIGlzIG1v cmUgZWZmaWNpZW50IHRoYW4gNTEyQiBmb3IgZnJhbWUgc2l6ZXMgPCA0aw0KKwlzZGlvX3NldF9i bG9ja19zaXplKGZ1bmMsIDY0KTsNCisJc2Rpb19yZWxlYXNlX2hvc3QoZnVuYyk7DQorCWlmIChy ZXQpDQorCQlnb3RvIGVycjA7DQorDQorCXJldCA9IHdmeF9zZGlvX2lycV9zdWJzY3JpYmUoYnVz KTsNCisJaWYgKHJldCkNCisJCWdvdG8gZXJyMTsNCisNCisJYnVzLT5jb3JlID0gd2Z4X2luaXRf Y29tbW9uKCZmdW5jLT5kZXYsICZ3Znhfc2Rpb19wZGF0YSwNCisJCQkJICAgICZ3Znhfc2Rpb19o d2J1c19vcHMsIGJ1cyk7DQorCWlmICghYnVzLT5jb3JlKSB7DQorCQlyZXQgPSAtRUlPOw0KKwkJ Z290byBlcnIyOw0KKwl9DQorDQorCXJldHVybiAwOw0KKw0KK2VycjI6DQorCXdmeF9zZGlvX2ly cV91bnN1YnNjcmliZShidXMpOw0KK2VycjE6DQorCXNkaW9fY2xhaW1faG9zdChmdW5jKTsNCisJ c2Rpb19kaXNhYmxlX2Z1bmMoZnVuYyk7DQorCXNkaW9fcmVsZWFzZV9ob3N0KGZ1bmMpOw0KK2Vy cjA6DQorCXJldHVybiByZXQ7DQogfQ0KIA0KIHN0YXRpYyB2b2lkIHdmeF9zZGlvX3JlbW92ZShz dHJ1Y3Qgc2Rpb19mdW5jICpmdW5jKQ0KIHsNCisJc3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cyA9 IHNkaW9fZ2V0X2RydmRhdGEoZnVuYyk7DQorDQorCXdmeF9mcmVlX2NvbW1vbihidXMtPmNvcmUp Ow0KKwl3Znhfc2Rpb19pcnFfdW5zdWJzY3JpYmUoYnVzKTsNCisJc2Rpb19jbGFpbV9ob3N0KGZ1 bmMpOw0KKwlzZGlvX2Rpc2FibGVfZnVuYyhmdW5jKTsNCisJc2Rpb19yZWxlYXNlX2hvc3QoZnVu Yyk7DQogfQ0KIA0KICNkZWZpbmUgU0RJT19WRU5ET1JfSURfU0lMQUJTICAgICAgICAweDAwMDAN CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L2J1c19zcGkuYyBiL2RyaXZlcnMvc3Rh Z2luZy93ZngvYnVzX3NwaS5jDQppbmRleCA1NzRiNjBmNTEzZTkuLjVlOGY4NGJhZjJjYSAxMDA2 NDQNCi0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZngvYnVzX3NwaS5jDQorKysgYi9kcml2ZXJzL3N0 YWdpbmcvd2Z4L2J1c19zcGkuYw0KQEAgLTcsMTkgKzcsMjE3IEBADQogICogQ29weXJpZ2h0IChj KSAyMDEwLCBTVC1Fcmljc3Nvbg0KICAqLw0KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCisj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCisjaW5jbHVkZSA8bGludXgvZ3Bpby5oPg0KKyNpbmNs dWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+DQogI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4N CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQogI2luY2x1ZGUgPGxpbnV4L29mLmg+DQog DQogI2luY2x1ZGUgImJ1cy5oIg0KKyNpbmNsdWRlICJ3ZnguaCINCisjaW5jbHVkZSAiaHdpby5o Ig0KKyNpbmNsdWRlICJtYWluLmgiDQorDQorc3RhdGljIGludCBncGlvX3Jlc2V0ID0gLTI7DQor bW9kdWxlX3BhcmFtKGdwaW9fcmVzZXQsIGludCwgMDY0NCk7DQorTU9EVUxFX1BBUk1fREVTQyhn cGlvX3Jlc2V0LCAiZ3BpbyBudW1iZXIgZm9yIHJlc2V0LiAtMSBmb3Igbm9uZS4iKTsNCisNCisj ZGVmaW5lIFNFVF9XUklURSAweDdGRkYgICAgICAgIC8qIHVzYWdlOiBhbmQgb3BlcmF0aW9uICov DQorI2RlZmluZSBTRVRfUkVBRCAweDgwMDAgICAgICAgICAvKiB1c2FnZTogb3Igb3BlcmF0aW9u ICovDQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCB3ZnhfcGxhdGZvcm1fZGF0YSB3Znhfc3BpX3Bk YXRhID0gew0KK307DQorDQorc3RydWN0IHdmeF9zcGlfcHJpdiB7DQorCXN0cnVjdCBzcGlfZGV2 aWNlICpmdW5jOw0KKwlzdHJ1Y3Qgd2Z4X2RldiAqY29yZTsNCisJc3RydWN0IGdwaW9fZGVzYyAq Z3Bpb19yZXNldDsNCisJc3RydWN0IHdvcmtfc3RydWN0IHJlcXVlc3Rfcng7DQorCWJvb2wgbmVl ZF9zd2FiOw0KK307DQorDQorLyoNCisgKiBXRnggY2hpcCByZWFkIGRhdGEgMTZiaXRzIGF0IHRp bWUgYW5kIHBsYWNlIHRoZW0gZGlyZWN0bHkgaW50byAobGl0dGxlDQorICogZW5kaWFuKSBDUFUg cmVnaXN0ZXIuIFNvLCBjaGlwIGV4cGVjdCBieXRlIG9yZGVyIGxpa2UgIkIxIEIwIEIzIEIyIiAo d2hpbGUNCisgKiBMRSBpcyAiQjAgQjEgQjIgQjMiIGFuZCBCRSBpcyAiQjMgQjIgQjEgQjAiKQ0K KyAqDQorICogQSBsaXR0bGUgZW5kaWFuIGhvc3Qgd2l0aCBiaXRzX3Blcl93b3JkID09IDE2IHNo b3VsZCBkbyB0aGUgcmlnaHQgam9iDQorICogbmF0aXZlbHkuIFRoZSBjb2RlIGJlbG93IHRvIHN1 cHBvcnQgYmlnIGVuZGlhbiBob3N0IGFuZCBjb21tb25seSB1c2VkIFNQSQ0KKyAqIDhiaXRzLg0K KyAqLw0KK3N0YXRpYyBpbnQgd2Z4X3NwaV9jb3B5X2Zyb21faW8odm9pZCAqcHJpdiwgdW5zaWdu ZWQgaW50IGFkZHIsDQorCQkJCXZvaWQgKmRzdCwgc2l6ZV90IGNvdW50KQ0KK3sNCisJc3RydWN0 IHdmeF9zcGlfcHJpdiAqYnVzID0gcHJpdjsNCisJdTE2IHJlZ2FkZHIgPSAoYWRkciA8PCAxMikg fCAoY291bnQgLyAyKSB8IFNFVF9SRUFEOw0KKwlzdHJ1Y3Qgc3BpX21lc3NhZ2UgICAgICBtOw0K KwlzdHJ1Y3Qgc3BpX3RyYW5zZmVyICAgICB0X2FkZHIgPSB7DQorCQkudHhfYnVmICAgICAgICAg PSAmcmVnYWRkciwNCisJCS5sZW4gICAgICAgICAgICA9IHNpemVvZihyZWdhZGRyKSwNCisJfTsN CisJc3RydWN0IHNwaV90cmFuc2ZlciAgICAgdF9tc2cgPSB7DQorCQkucnhfYnVmICAgICAgICAg PSBkc3QsDQorCQkubGVuICAgICAgICAgICAgPSBjb3VudCwNCisJfTsNCisJdTE2ICpkc3QxNiA9 IGRzdDsNCisJaW50IHJldCwgaTsNCisNCisJV0FSTihjb3VudCAlIDIsICJidWZmZXIgc2l6ZSBt dXN0IGJlIGEgbXVsdGlwbGUgb2YgMiIpOw0KKw0KKwljcHVfdG9fbGUxNnMoJnJlZ2FkZHIpOw0K KwlpZiAoYnVzLT5uZWVkX3N3YWIpDQorCQlzd2FiMTZzKCZyZWdhZGRyKTsNCisNCisJc3BpX21l c3NhZ2VfaW5pdCgmbSk7DQorCXNwaV9tZXNzYWdlX2FkZF90YWlsKCZ0X2FkZHIsICZtKTsNCisJ c3BpX21lc3NhZ2VfYWRkX3RhaWwoJnRfbXNnLCAmbSk7DQorCXJldCA9IHNwaV9zeW5jKGJ1cy0+ ZnVuYywgJm0pOw0KKw0KKwlpZiAoYnVzLT5uZWVkX3N3YWIgJiYgYWRkciA9PSBXRlhfUkVHX0NP TkZJRykNCisJCWZvciAoaSA9IDA7IGkgPCBjb3VudCAvIDI7IGkrKykNCisJCQlzd2FiMTZzKCZk c3QxNltpXSk7DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQgd2Z4X3NwaV9jb3B5 X3RvX2lvKHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCBhZGRyLA0KKwkJCSAgICAgIGNvbnN0IHZv aWQgKnNyYywgc2l6ZV90IGNvdW50KQ0KK3sNCisJc3RydWN0IHdmeF9zcGlfcHJpdiAqYnVzID0g cHJpdjsNCisJdTE2IHJlZ2FkZHIgPSAoYWRkciA8PCAxMikgfCAoY291bnQgLyAyKTsNCisJLy8g RklYTUU6IHVzZSBhIGJvdW5jZSBidWZmZXINCisJdTE2ICpzcmMxNiA9ICh2b2lkICopIHNyYzsN CisJaW50IHJldCwgaTsNCisJc3RydWN0IHNwaV9tZXNzYWdlICAgICAgbTsNCisJc3RydWN0IHNw aV90cmFuc2ZlciAgICAgdF9hZGRyID0gew0KKwkJLnR4X2J1ZiAgICAgICAgID0gJnJlZ2FkZHIs DQorCQkubGVuICAgICAgICAgICAgPSBzaXplb2YocmVnYWRkciksDQorCX07DQorCXN0cnVjdCBz cGlfdHJhbnNmZXIgICAgIHRfbXNnID0gew0KKwkJLnR4X2J1ZiAgICAgICAgID0gc3JjLA0KKwkJ LmxlbiAgICAgICAgICAgID0gY291bnQsDQorCX07DQorDQorCVdBUk4oY291bnQgJSAyLCAiYnVm ZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDIiKTsNCisJV0FSTihyZWdhZGRyICYgU0VU X1JFQUQsICJiYWQgYWRkciBvciBzaXplIG92ZXJmbG93Iik7DQorDQorCWNwdV90b19sZTE2cygm cmVnYWRkcik7DQorDQorCWlmIChidXMtPm5lZWRfc3dhYikNCisJCXN3YWIxNnMoJnJlZ2FkZHIp Ow0KKwlpZiAoYnVzLT5uZWVkX3N3YWIgJiYgYWRkciA9PSBXRlhfUkVHX0NPTkZJRykNCisJCWZv ciAoaSA9IDA7IGkgPCBjb3VudCAvIDI7IGkrKykNCisJCQlzd2FiMTZzKCZzcmMxNltpXSk7DQor DQorCXNwaV9tZXNzYWdlX2luaXQoJm0pOw0KKwlzcGlfbWVzc2FnZV9hZGRfdGFpbCgmdF9hZGRy LCAmbSk7DQorCXNwaV9tZXNzYWdlX2FkZF90YWlsKCZ0X21zZywgJm0pOw0KKwlyZXQgPSBzcGlf c3luYyhidXMtPmZ1bmMsICZtKTsNCisNCisJaWYgKGJ1cy0+bmVlZF9zd2FiICYmIGFkZHIgPT0g V0ZYX1JFR19DT05GSUcpDQorCQlmb3IgKGkgPSAwOyBpIDwgY291bnQgLyAyOyBpKyspDQorCQkJ c3dhYjE2cygmc3JjMTZbaV0pOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgdm9pZCB3 Znhfc3BpX2xvY2sodm9pZCAqcHJpdikNCit7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHdmeF9zcGlf dW5sb2NrKHZvaWQgKnByaXYpDQorew0KK30NCisNCitzdGF0aWMgaXJxcmV0dXJuX3Qgd2Z4X3Nw aV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpwcml2KQ0KK3sNCisJc3RydWN0IHdmeF9zcGlf cHJpdiAqYnVzID0gcHJpdjsNCisNCisJaWYgKCFidXMtPmNvcmUpIHsNCisJCVdBUk4oIWJ1cy0+ Y29yZSwgInJhY2UgY29uZGl0aW9uIGluIGRyaXZlciBpbml0L2RlaW5pdCIpOw0KKwkJcmV0dXJu IElSUV9OT05FOw0KKwl9DQorCXF1ZXVlX3dvcmsoc3lzdGVtX2hpZ2hwcmlfd3EsICZidXMtPnJl cXVlc3RfcngpOw0KKwlyZXR1cm4gSVJRX0hBTkRMRUQ7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHdm eF9zcGlfcmVxdWVzdF9yeChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQorew0KK30NCisNCitz dGF0aWMgc2l6ZV90IHdmeF9zcGlfYWxpZ25fc2l6ZSh2b2lkICpwcml2LCBzaXplX3Qgc2l6ZSkN Cit7DQorCS8vIE1vc3Qgb2YgU1BJIGNvbnRyb2xsZXJzIGF2b2lkIERNQSBpZiBidWZmZXIgc2l6 ZSBpcyBub3QgMzJiaXQgYWxpZ25lZA0KKwlyZXR1cm4gQUxJR04oc2l6ZSwgNCk7DQorfQ0KKw0K K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdidXNfb3BzIHdmeF9zcGlfaHdidXNfb3BzID0gew0KKwku Y29weV9mcm9tX2lvID0gd2Z4X3NwaV9jb3B5X2Zyb21faW8sDQorCS5jb3B5X3RvX2lvID0gd2Z4 X3NwaV9jb3B5X3RvX2lvLA0KKwkubG9jawkJCT0gd2Z4X3NwaV9sb2NrLA0KKwkudW5sb2NrCQkJ PSB3Znhfc3BpX3VubG9jaywNCisJLmFsaWduX3NpemUJCT0gd2Z4X3NwaV9hbGlnbl9zaXplLA0K K307DQogDQogc3RhdGljIGludCB3Znhfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpmdW5j KQ0KIHsNCi0JcmV0dXJuIC1FSU87DQorCXN0cnVjdCB3Znhfc3BpX3ByaXYgKmJ1czsNCisJaW50 IHJldDsNCisNCisJaWYgKCFmdW5jLT5iaXRzX3Blcl93b3JkKQ0KKwkJZnVuYy0+Yml0c19wZXJf d29yZCA9IDE2Ow0KKwlyZXQgPSBzcGlfc2V0dXAoZnVuYyk7DQorCWlmIChyZXQpDQorCQlyZXR1 cm4gcmV0Ow0KKwkvLyBUcmFjZSBiZWxvdyBpcyBhbHNvIGRpc3BsYXllZCBieSBzcGlfc2V0dXAo KSBpZiBjb21waWxlZCB3aXRoIERFQlVHDQorCWRldl9kYmcoJmZ1bmMtPmRldiwgIlNQSSBwYXJh bXM6IENTPSVkLCBtb2RlPSVkIGJpdHMvd29yZD0lZCBzcGVlZD0lZFxuIiwNCisJCWZ1bmMtPmNo aXBfc2VsZWN0LCBmdW5jLT5tb2RlLCBmdW5jLT5iaXRzX3Blcl93b3JkLCBmdW5jLT5tYXhfc3Bl ZWRfaHopOw0KKwlpZiAoZnVuYy0+Yml0c19wZXJfd29yZCAhPSAxNiAmJiBmdW5jLT5iaXRzX3Bl cl93b3JkICE9IDgpDQorCQlkZXZfd2FybigmZnVuYy0+ZGV2LCAidW51c3VhbCBiaXRzL3dvcmQg dmFsdWU6ICVkXG4iLCBmdW5jLT5iaXRzX3Blcl93b3JkKTsNCisJaWYgKGZ1bmMtPm1heF9zcGVl ZF9oeiA+IDQ5MDAwMDAwKQ0KKwkJZGV2X3dhcm4oJmZ1bmMtPmRldiwgIiVkSHogaXMgYSB2ZXJ5 IGhpZ2ggc3BlZWRcbiIsIGZ1bmMtPm1heF9zcGVlZF9oeik7DQorDQorCWJ1cyA9IGRldm1fa3ph bGxvYygmZnVuYy0+ZGV2LCBzaXplb2YoKmJ1cyksIEdGUF9LRVJORUwpOw0KKwlpZiAoIWJ1cykN CisJCXJldHVybiAtRU5PTUVNOw0KKwlidXMtPmZ1bmMgPSBmdW5jOw0KKwlpZiAoZnVuYy0+Yml0 c19wZXJfd29yZCA9PSA4IHx8IElTX0VOQUJMRUQoQ09ORklHX0NQVV9CSUdfRU5ESUFOKSkNCisJ CWJ1cy0+bmVlZF9zd2FiID0gdHJ1ZTsNCisJc3BpX3NldF9kcnZkYXRhKGZ1bmMsIGJ1cyk7DQor DQorCWJ1cy0+Z3Bpb19yZXNldCA9IHdmeF9nZXRfZ3BpbygmZnVuYy0+ZGV2LCBncGlvX3Jlc2V0 LCAicmVzZXQiKTsNCisJaWYgKCFidXMtPmdwaW9fcmVzZXQpIHsNCisJCWRldl93YXJuKCZmdW5j LT5kZXYsICJ0cnkgdG8gbG9hZCBmaXJtd2FyZSBhbnl3YXlcbiIpOw0KKwl9IGVsc2Ugew0KKwkJ Z3Bpb2Rfc2V0X3ZhbHVlKGJ1cy0+Z3Bpb19yZXNldCwgMCk7DQorCQl1ZGVsYXkoMTAwKTsNCisJ CWdwaW9kX3NldF92YWx1ZShidXMtPmdwaW9fcmVzZXQsIDEpOw0KKwkJdWRlbGF5KDIwMDApOw0K Kwl9DQorDQorCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJmZ1bmMtPmRldiwgZnVuYy0+aXJxLCB3 Znhfc3BpX2lycV9oYW5kbGVyLA0KKwkJCSAgICAgICBJUlFGX1RSSUdHRVJfUklTSU5HLCAid2Z4 IiwgYnVzKTsNCisJaWYgKHJldCkNCisJCXJldHVybiByZXQ7DQorDQorCUlOSVRfV09SSygmYnVz LT5yZXF1ZXN0X3J4LCB3Znhfc3BpX3JlcXVlc3RfcngpOw0KKwlidXMtPmNvcmUgPSB3ZnhfaW5p dF9jb21tb24oJmZ1bmMtPmRldiwgJndmeF9zcGlfcGRhdGEsDQorCQkJCSAgICAmd2Z4X3NwaV9o d2J1c19vcHMsIGJ1cyk7DQorCWlmICghYnVzLT5jb3JlKQ0KKwkJcmV0dXJuIC1FSU87DQorDQor CXJldHVybiByZXQ7DQogfQ0KIA0KIC8qIERpc2Nvbm5lY3QgRnVuY3Rpb24gdG8gYmUgY2FsbGVk IGJ5IFNQSSBzdGFjayB3aGVuIGRldmljZSBpcyBkaXNjb25uZWN0ZWQgKi8NCiBzdGF0aWMgaW50 IHdmeF9zcGlfZGlzY29ubmVjdChzdHJ1Y3Qgc3BpX2RldmljZSAqZnVuYykNCiB7DQorCXN0cnVj dCB3Znhfc3BpX3ByaXYgKmJ1cyA9IHNwaV9nZXRfZHJ2ZGF0YShmdW5jKTsNCisNCisJd2Z4X2Zy ZWVfY29tbW9uKGJ1cy0+Y29yZSk7DQorCS8vIEEgZmV3IElSUSB3aWxsIGJlIHNlbnQgZHVyaW5n IGRldmljZSByZWxlYXNlLiBIb3BlZnVsbHksIG5vIElSUQ0KKwkvLyBzaG91bGQgaGFwcGVuIGFm dGVyIHdkZXYvd3ZpZiBhcmUgcmVsZWFzZWQuDQorCWRldm1fZnJlZV9pcnEoJmZ1bmMtPmRldiwg ZnVuYy0+aXJxLCBidXMpOw0KKwlmbHVzaF93b3JrKCZidXMtPnJlcXVlc3RfcngpOw0KIAlyZXR1 cm4gMDsNCiB9DQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9od2lvLmggYi9k cml2ZXJzL3N0YWdpbmcvd2Z4L2h3aW8uaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAwMDAwMC4uYzQ5MDAxNGMxZGY4DQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL3N0 YWdpbmcvd2Z4L2h3aW8uaA0KQEAgLTAsMCArMSw0OCBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8NCisvKg0KKyAqIExvdy1sZXZlbCBBUEkuDQorICoNCisg KiBDb3B5cmlnaHQgKGMpIDIwMTctMjAxOCwgU2lsaWNvbiBMYWJvcmF0b3JpZXMsIEluYy4NCisg KiBDb3B5cmlnaHQgKGMpIDIwMTAsIFNULUVyaWNzc29uDQorICovDQorI2lmbmRlZiBXRlhfSFdJ T19IDQorI2RlZmluZSBXRlhfSFdJT19IDQorDQorI2RlZmluZSBDRkdfRVJSX1NQSV9GUkFNRSAg ICAgICAgICAweDAwMDAwMDAxIC8vIG9ubHkgd2l0aCBTUEkNCisjZGVmaW5lIENGR19FUlJfU0RJ T19CVUZfTUlTTUFUQ0ggIDB4MDAwMDAwMDEgLy8gb25seSB3aXRoIFNESU8NCisjZGVmaW5lIENG R19FUlJfQlVGX1VOREVSUlVOICAgICAgIDB4MDAwMDAwMDINCisjZGVmaW5lIENGR19FUlJfREFU QV9JTl9UT09fTEFSR0UgIDB4MDAwMDAwMDQNCisjZGVmaW5lIENGR19FUlJfSE9TVF9OT19PVVRf UVVFVUUgIDB4MDAwMDAwMDgNCisjZGVmaW5lIENGR19FUlJfQlVGX09WRVJSVU4gICAgICAgIDB4 MDAwMDAwMTANCisjZGVmaW5lIENGR19FUlJfREFUQV9PVVRfVE9PX0xBUkdFIDB4MDAwMDAwMjAN CisjZGVmaW5lIENGR19FUlJfSE9TVF9OT19JTl9RVUVVRSAgIDB4MDAwMDAwNDANCisjZGVmaW5l IENGR19FUlJfSE9TVF9DUkNfTUlTUyAgICAgIDB4MDAwMDAwODAgLy8gb25seSB3aXRoIFNESU8N CisjZGVmaW5lIENGR19TUElfSUdOT1JFX0NTICAgICAgICAgIDB4MDAwMDAwODAgLy8gb25seSB3 aXRoIFNQSQ0KKyNkZWZpbmUgQ0ZHX1dPUkRfTU9ERV9NQVNLICAgICAgICAgMHgwMDAwMDMwMCAv LyBCeXRlcyBvcmRlcmluZyAob25seSB3cml0YWJsZSBpbiBTUEkpOg0KKyNkZWZpbmUgICAgIENG R19XT1JEX01PREUwICAgICAgICAgMHgwMDAwMDAwMCAvLyAgIEIxLEIwLEIzLEIyIChJbiBTUEks IHJlZ2lzdGVyIGFkZHJlc3MgYW5kIENPTkZJRyBkYXRhIGFsd2F5cyB1c2UgdGhpcyBtb2RlKQ0K KyNkZWZpbmUgICAgIENGR19XT1JEX01PREUxICAgICAgICAgMHgwMDAwMDEwMCAvLyAgIEIzLEIy LEIxLEIwDQorI2RlZmluZSAgICAgQ0ZHX1dPUkRfTU9ERTIgICAgICAgICAweDAwMDAwMjAwIC8v ICAgQjAsQjEsQjIsQjMgKFNESU8pDQorI2RlZmluZSBDRkdfRElSRUNUX0FDQ0VTU19NT0RFICAg ICAweDAwMDAwNDAwIC8vIERpcmVjdCBvciBxdWV1ZSBhY2Nlc3MgbW9kZQ0KKyNkZWZpbmUgQ0ZH X1BSRUZFVENIX0FIQiAgICAgICAgICAgMHgwMDAwMDgwMA0KKyNkZWZpbmUgQ0ZHX0RJU0FCTEVf Q1BVX0NMSyAgICAgICAgMHgwMDAwMTAwMA0KKyNkZWZpbmUgQ0ZHX1BSRUZFVENIX1NSQU0gICAg ICAgICAgMHgwMDAwMjAwMA0KKyNkZWZpbmUgQ0ZHX0NQVV9SRVNFVCAgICAgICAgICAgICAgMHgw MDAwNDAwMA0KKyNkZWZpbmUgQ0ZHX1NESU9fRElTQUJMRV9JUlEgICAgICAgMHgwMDAwODAwMCAv LyBvbmx5IHdpdGggU0RJTw0KKyNkZWZpbmUgQ0ZHX0lSUV9FTkFCTEVfREFUQSAgICAgICAgMHgw MDAxMDAwMA0KKyNkZWZpbmUgQ0ZHX0lSUV9FTkFCTEVfV1JEWSAgICAgICAgMHgwMDAyMDAwMA0K KyNkZWZpbmUgQ0ZHX0NMS19SSVNFX0VER0UgICAgICAgICAgMHgwMDA0MDAwMA0KKyNkZWZpbmUg Q0ZHX1NESU9fRElTQUJMRV9DUkNfQ0hLICAgMHgwMDA4MDAwMCAvLyBvbmx5IHdpdGggU0RJTw0K KyNkZWZpbmUgQ0ZHX1JFU0VSVkVEICAgICAgICAgICAgICAgMHgwMEYwMDAwMA0KKyNkZWZpbmUg Q0ZHX0RFVklDRV9JRF9NQUpPUiAgICAgICAgMHgwNzAwMDAwMA0KKyNkZWZpbmUgQ0ZHX0RFVklD RV9JRF9SRVNFUlZFRCAgICAgMHg3ODAwMDAwMA0KKyNkZWZpbmUgQ0ZHX0RFVklDRV9JRF9UWVBF ICAgICAgICAgMHg4MDAwMDAwMA0KKw0KKyNkZWZpbmUgQ1RSTF9ORVhUX0xFTl9NQVNLICAgMHgw MDAwMEZGRg0KKyNkZWZpbmUgQ1RSTF9XTEFOX1dBS0VVUCAgICAgMHgwMDAwMTAwMA0KKyNkZWZp bmUgQ1RSTF9XTEFOX1JFQURZICAgICAgMHgwMDAwMjAwMA0KKw0KKyNkZWZpbmUgSUdQUl9SVyAg ICAgICAgICAweDgwMDAwMDAwDQorI2RlZmluZSBJR1BSX0lOREVYICAgICAgIDB4N0YwMDAwMDAN CisjZGVmaW5lIElHUFJfVkFMVUUgICAgICAgMHgwMEZGRkZGRg0KKw0KKyNlbmRpZiAvKiBXRlhf SFdJT19IICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9tYWluLmMgYi9kcml2 ZXJzL3N0YWdpbmcvd2Z4L21haW4uYw0KaW5kZXggY2Q2OWY5NTVmNTMxLi43NDQ0NDVlZjU5N2Mg MTAwNjQ0DQotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L21haW4uYw0KKysrIGIvZHJpdmVycy9z dGFnaW5nL3dmeC9tYWluLmMNCkBAIC0xMSwxMCArMTEsMTUgQEANCiAgKiBDb3B5cmlnaHQgKGMp IDIwMDQtMjAwNiBKZWFuLUJhcHRpc3RlIE5vdGUgPGpibm90ZUBnbWFpbC5jb20+LCBldCBhbC4N CiAgKi8NCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQorI2luY2x1ZGUgPGxpbnV4L29mLmg+ DQorI2luY2x1ZGUgPGxpbnV4L2dwaW8uaD4NCisjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1l ci5oPg0KICNpbmNsdWRlIDxsaW51eC9tbWMvc2Rpb19mdW5jLmg+DQogI2luY2x1ZGUgPGxpbnV4 L3NwaS9zcGkuaD4NCiAjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4NCiANCisjaW5jbHVk ZSAibWFpbi5oIg0KKyNpbmNsdWRlICJ3ZnguaCINCiAjaW5jbHVkZSAiYnVzLmgiDQogI2luY2x1 ZGUgIndmeF92ZXJzaW9uLmgiDQogDQpAQCAtMjMsNiArMjgsNTQgQEAgTU9EVUxFX0FVVEhPUigi SsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPiIpOw0KIE1PRFVM RV9MSUNFTlNFKCJHUEwiKTsNCiBNT0RVTEVfVkVSU0lPTihXRlhfTEFCRUwpOw0KIA0KK3N0cnVj dCBncGlvX2Rlc2MgKndmeF9nZXRfZ3BpbyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBvdmVycmlk ZSwgY29uc3QgY2hhciAqbGFiZWwpDQorew0KKwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXQ7DQorCWNo YXIgbGFiZWxfYnVmWzI1Nl07DQorDQorCWlmIChvdmVycmlkZSA+PSAwKSB7DQorCQlzbnByaW50 ZihsYWJlbF9idWYsIHNpemVvZihsYWJlbF9idWYpLCAid2Z4XyVzIiwgbGFiZWwpOw0KKwkJcmV0 ID0gRVJSX1BUUihkZXZtX2dwaW9fcmVxdWVzdF9vbmUoZGV2LCBvdmVycmlkZSwgR1BJT0ZfT1VU X0lOSVRfTE9XLCBsYWJlbF9idWYpKTsNCisJCWlmICghcmV0KQ0KKwkJCXJldCA9IGdwaW9fdG9f ZGVzYyhvdmVycmlkZSk7DQorCX0gZWxzZSBpZiAob3ZlcnJpZGUgPT0gLTEpIHsNCisJCXJldCA9 IE5VTEw7DQorCX0gZWxzZSB7DQorCQlyZXQgPSBkZXZtX2dwaW9kX2dldChkZXYsIGxhYmVsLCBH UElPRF9PVVRfTE9XKTsNCisJfQ0KKwlpZiAoSVNfRVJSKHJldCkgfHwgIXJldCkgew0KKwkJaWYg KCFyZXQgfHwgUFRSX0VSUihyZXQpID09IC1FTk9FTlQpDQorCQkJZGV2X3dhcm4oZGV2LCAiZ3Bp byAlcyBpcyBub3QgZGVmaW5lZFxuIiwgbGFiZWwpOw0KKwkJZWxzZQ0KKwkJCWRldl93YXJuKGRl diwgImVycm9yIHdoaWxlIHJlcXVlc3RpbmcgZ3BpbyAlc1xuIiwgbGFiZWwpOw0KKwkJcmV0ID0g TlVMTDsNCisJfSBlbHNlIHsNCisJCWRldl9kYmcoZGV2LCAidXNpbmcgZ3BpbyAlZCBmb3IgJXNc biIsIGRlc2NfdG9fZ3BpbyhyZXQpLCBsYWJlbCk7DQorCX0NCisJcmV0dXJuIHJldDsNCit9DQor DQorc3RydWN0IHdmeF9kZXYgKndmeF9pbml0X2NvbW1vbihzdHJ1Y3QgZGV2aWNlICpkZXYsDQor CQkJCWNvbnN0IHN0cnVjdCB3ZnhfcGxhdGZvcm1fZGF0YSAqcGRhdGEsDQorCQkJCWNvbnN0IHN0 cnVjdCBod2J1c19vcHMgKmh3YnVzX29wcywNCisJCQkJdm9pZCAqaHdidXNfcHJpdikNCit7DQor CXN0cnVjdCB3ZnhfZGV2ICp3ZGV2Ow0KKw0KKwl3ZGV2ID0gZGV2bV9rbWFsbG9jKGRldiwgc2l6 ZW9mKCp3ZGV2KSwgR0ZQX0tFUk5FTCk7DQorCWlmICghd2RldikNCisJCXJldHVybiBOVUxMOw0K Kwl3ZGV2LT5kZXYgPSBkZXY7DQorCXdkZXYtPmh3YnVzX29wcyA9IGh3YnVzX29wczsNCisJd2Rl di0+aHdidXNfcHJpdiA9IGh3YnVzX3ByaXY7DQorCW1lbWNweSgmd2Rldi0+cGRhdGEsIHBkYXRh LCBzaXplb2YoKnBkYXRhKSk7DQorCXJldHVybiB3ZGV2Ow0KK30NCisNCit2b2lkIHdmeF9mcmVl X2NvbW1vbihzdHJ1Y3Qgd2Z4X2RldiAqd2RldikNCit7DQorfQ0KKw0KIHN0YXRpYyBpbnQgX19p bml0IHdmeF9jb3JlX2luaXQodm9pZCkNCiB7DQogCWludCByZXQgPSAwOw0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvc3RhZ2luZy93ZngvbWFpbi5oIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9tYWluLmgN Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjgyMjIyZWRmOTk4Yg0K LS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9tYWluLmgNCkBAIC0wLDAg KzEsMzIgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQor LyoNCisgKiBEZXZpY2UgcHJvYmUgYW5kIHJlZ2lzdGVyLg0KKyAqDQorICogQ29weXJpZ2h0IChj KSAyMDE3LTIwMTksIFNpbGljb24gTGFib3JhdG9yaWVzLCBJbmMuDQorICogQ29weXJpZ2h0IChj KSAyMDEwLCBTVC1Fcmljc3Nvbg0KKyAqIENvcHlyaWdodCAoYykgMjAwNiwgTWljaGFlbCBXdSA8 ZmxhbWluZ2ljZUBzb3VybWlsay5uZXQ+DQorICogQ29weXJpZ2h0IDIwMDQtMjAwNiBKZWFuLUJh cHRpc3RlIE5vdGUgPGpibm90ZUBnbWFpbC5jb20+LCBldCBhbC4NCisgKi8NCisjaWZuZGVmIFdG WF9NQUlOX0gNCisjZGVmaW5lIFdGWF9NQUlOX0gNCisNCisjaW5jbHVkZSA8bGludXgvZGV2aWNl Lmg+DQorI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4NCisNCisjaW5jbHVkZSAiYnVz LmgiDQorDQorc3RydWN0IHdmeF9kZXY7DQorDQorc3RydWN0IHdmeF9wbGF0Zm9ybV9kYXRhIHsN Cit9Ow0KKw0KK3N0cnVjdCB3ZnhfZGV2ICp3ZnhfaW5pdF9jb21tb24oc3RydWN0IGRldmljZSAq ZGV2LA0KKwkJCQljb25zdCBzdHJ1Y3Qgd2Z4X3BsYXRmb3JtX2RhdGEgKnBkYXRhLA0KKwkJCQlj b25zdCBzdHJ1Y3QgaHdidXNfb3BzICpod2J1c19vcHMsDQorCQkJCXZvaWQgKmh3YnVzX3ByaXYp Ow0KK3ZvaWQgd2Z4X2ZyZWVfY29tbW9uKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KTsNCisNCitzdHJ1 Y3QgZ3Bpb19kZXNjICp3ZnhfZ2V0X2dwaW8oc3RydWN0IGRldmljZSAqZGV2LCBpbnQgb3ZlcnJp ZGUsDQorCQkJICAgICAgIGNvbnN0IGNoYXIgKmxhYmVsKTsNCisNCisjZW5kaWYNCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L3dmeC5oIGIvZHJpdmVycy9zdGFnaW5nL3dmeC93Zngu aA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uOTcxNmFjYzk4MWRm DQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L3dmeC5oDQpAQCAtMCww ICsxLDI0IEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLw0K Ky8qDQorICogQ29tbW9uIHByaXZhdGUgZGF0YSBmb3IgU2lsaWNvbiBMYWJzIFdGeCBjaGlwcy4N CisgKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNy0yMDE5LCBTaWxpY29uIExhYm9yYXRvcmllcywg SW5jLg0KKyAqIENvcHlyaWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24NCisgKiBDb3B5cmlnaHQg KGMpIDIwMDYsIE1pY2hhZWwgV3UgPGZsYW1pbmdpY2VAc291cm1pbGsubmV0Pg0KKyAqIENvcHly aWdodCAyMDA0LTIwMDYgSmVhbi1CYXB0aXN0ZSBOb3RlIDxqYm5vdGVAZ21haWwuY29tPiwgZXQg YWwuDQorICovDQorI2lmbmRlZiBXRlhfSA0KKyNkZWZpbmUgV0ZYX0gNCisNCisjaW5jbHVkZSAi bWFpbi5oIg0KKw0KK3N0cnVjdCBod2J1c19vcHM7DQorDQorc3RydWN0IHdmeF9kZXYgew0KKwlz dHJ1Y3Qgd2Z4X3BsYXRmb3JtX2RhdGEgcGRhdGE7DQorCXN0cnVjdCBkZXZpY2UJCSpkZXY7DQor CWNvbnN0IHN0cnVjdCBod2J1c19vcHMJKmh3YnVzX29wczsNCisJdm9pZAkJCSpod2J1c19wcml2 Ow0KK307DQorDQorI2VuZGlmIC8qIFdGWF9IICovDQotLSANCjIuMjAuMQ0K