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=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 16B92C49ED7 for ; Thu, 19 Sep 2019 10:52:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CC5E9217D6 for ; Thu, 19 Sep 2019 10:52:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="O3ybS/a8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389445AbfISKwt (ORCPT ); Thu, 19 Sep 2019 06:52:49 -0400 Received: from mail-eopbgr700070.outbound.protection.outlook.com ([40.107.70.70]:25057 "EHLO NAM04-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2387501AbfISKwp (ORCPT ); Thu, 19 Sep 2019 06:52:45 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J34JZfVvhXzatv5bX8sspTzjrtRiBEUvcUvOjohSBVKyBdbZk5SvTbObqC96Pm78hveIwCZdjj6w0LGKJ1tUzBdYNlOszfqH2HfCFTsRYStnoiTLlGz2Kx5R/u36BOOhH9KFJ99u9nKAUki9MYxBjbeiXIXIPieW+yaFQVotU7iEXRPBKmqJk4A5Qh/cNkIIZSFPtaneCufsdX1OZF5mVlZYTLAC9WvtiNILC6dbcCwAK/ERpD0auumo+PztjYpKgwk6Y1qWzq+1u4xw8Da2vmQqiwy/Qc8+p7Tcz7aPp9I+lvR1izifA1DK/oNXnDCPQx7WVKP/A5YPF6qwv5t26Q== 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=GzkOoL63Vex8BJgy6pIDrlevRSfDGd5ehTa+0O7ZxUg=; b=FGFeQ+9CzDDVTtnT44m26LYNFhXy+a6Pmw2xS8skQWumdND6+WRO4lt1dQeYNpt1OmzApnL4Nr5ZxjUe45OFeX/nn73nP2o73Ubq5/712TnHH5i775g7B/B28+LtPrwRWW4UnzTddPuQqEUbAt60Wew8cqitXE+Mbs6vjrDx+tpbQxW7moQ33jrCn7yxgu3McIVmEfX6uR6mfIhw0Ri0AMN4E+Z3Zx1YB6v3hsGGZzhCk8jjpB+Or0KRl1avM1BpI1jILz+OMjjkBQMpTpa3wEf3lLkhfsuL7Dmlvvt8eKc3z12mwQ47wxPXqYGam4buGwI7tEyiILf9UxZkAJDk3w== 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=GzkOoL63Vex8BJgy6pIDrlevRSfDGd5ehTa+0O7ZxUg=; b=O3ybS/a8o2yNt+e3E0MmWoJF77y7SnYbiZF5BVVRGI7eTKSdBanmx9ZJPDAF4F1hu+1shD8dHlmymPCNyi/qA0rrXIjzzxOFuAtZgOD+WFqo1pVva631bbFfEFN6UE1qs8prSbkcGZdgAutZmy3c5wOOob+4jj6Fd2M96aLJ5lE= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (20.179.149.217) by MN2PR11MB3775.namprd11.prod.outlook.com (20.178.253.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2263.17; Thu, 19 Sep 2019 10:52:35 +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 10:52:35 +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 02/20] staging: wfx: add support for I/O access Thread-Topic: [PATCH 02/20] staging: wfx: add support for I/O access Thread-Index: AQHVbthYAz5BV9jhoUCLDh42xNi6RQ== Date: Thu, 19 Sep 2019 10:52:35 +0000 Message-ID: <20190919105153.15285-3-Jerome.Pouiller@silabs.com> References: <20190919105153.15285-1-Jerome.Pouiller@silabs.com> In-Reply-To: <20190919105153.15285-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: 7f17e5d0-eea6-463e-98a5-08d73cef7b1c x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600167)(711020)(4605104)(1401327)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:MN2PR11MB3775; x-ms-traffictypediagnostic: MN2PR11MB3775: x-ms-exchange-purlcount: 1 x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:873; x-forefront-prvs: 016572D96D x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(376002)(346002)(39850400004)(136003)(396003)(199004)(189003)(86362001)(256004)(14444005)(8936002)(4326008)(66066001)(36756003)(14454004)(305945005)(64756008)(5660300002)(66476007)(66556008)(66446008)(316002)(476003)(446003)(11346002)(966005)(110136005)(2616005)(66946007)(478600001)(91956017)(25786009)(76116006)(7736002)(71190400001)(81166006)(1076003)(30864003)(2501003)(6506007)(186003)(6436002)(486006)(81156014)(3846002)(6116002)(8676002)(102836004)(107886003)(54906003)(6306002)(76176011)(2906002)(26005)(66574012)(99286004)(6486002)(71200400001)(6512007)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:MN2PR11MB3775;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: 18DDf3g1l5OJr/aBDThYY0oe7hJEwpxe4jFbQfxm7TMVjJu6i3PJRIk6jJlTKdBi93Slhklrhl6RV/PL/p3s9NBisJ7Zl1CPwk0MXyh0hdQPgPcarFxnjXefkJm8wOAoyKh4DBOxP2LUDwQ6hh9m9z3iSl+j/Wy5GcMqvu4npVmHOJt0aO9XmSGHxlnme8PZvzc4sVhj3mHGP89oPziv7QOJA4f3WwvTqbOKXI3urBlsmj3jDVAdaimitJb+0YF92/Or6ZAz41zOZ/XkzLuEtByH8/iJHGxQOC0lUw7M7Kj4tFgNP7TZcKl5yJJZm99mBOZd+qk65gXnV8WQUVZPif9ZHMlPcNYu+LZj+8hBcxFjzJZ+Ai0xvg5U7B3Ve9E7OIF4zormoaBWCuJr98CXfWVEhNUgX5GnP8bCeVYxfCg= 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: 7f17e5d0-eea6-463e-98a5-08d73cef7b1c X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Sep 2019 10:52:35.0509 (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: WJ+pEHfdNgh6et5H7TvuFyONq9UMpqT94JaBeDg7i1/nFnGZr3Ger7mSDhD2rXGEsWgIYKU2eDwyGotybkm3gQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3775 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPg0KDQpJ bnRyb2R1Y2UgYnVzIGxldmVsIGNvbW11bmljYXRpb24gbGF5ZXIuIEF0IHRoaXMgbGV2ZWwsIDcg cmVnaXN0ZXJzIGNhbg0KYmUgYWRkcmVzc2VkLg0KDQpOb3RpY2UgdGhhdCBTUEkgZHJpdmVyIGlz IGFibGUgdG8gbWFuYWdlIGNoaXAgcmVzZXQuIFNESU8gbW9kZSByZWxpZXMNCm9uIGFuIGV4dGVy bmFsIGRyaXZlciAoYG1tYy1wd3JzZXFgKSB0byByZXNldCBjaGlwLg0KDQpTaWduZWQtb2ZmLWJ5 OiBKw6lyw7RtZSBQb3VpbGxlciA8amVyb21lLnBvdWlsbGVyQHNpbGFicy5jb20+DQotLS0NCiBk cml2ZXJzL3N0YWdpbmcvd2Z4L2J1cy5oICAgICAgfCAgMTcgKysrDQogZHJpdmVycy9zdGFnaW5n L3dmeC9idXNfc2Rpby5jIHwgMTg5ICsrKysrKysrKysrKysrKysrKysrKystDQogZHJpdmVycy9z dGFnaW5nL3dmeC9idXNfc3BpLmMgIHwgMjcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQ0KIGRyaXZlcnMvc3RhZ2luZy93ZngvaHdpby5oICAgICB8ICA0OCArKysrKysNCiBkcml2 ZXJzL3N0YWdpbmcvd2Z4L21haW4uYyAgICAgfCAgNTMgKysrKysrKw0KIGRyaXZlcnMvc3RhZ2lu Zy93ZngvbWFpbi5oICAgICB8ICAzMiArKysrDQogZHJpdmVycy9zdGFnaW5nL3dmeC93ZnguaCAg ICAgIHwgIDI0ICsrKw0KIDcgZmlsZXMgY2hhbmdlZCwgNjMyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy93ZngvaHdpby5o DQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy93ZngvbWFpbi5oDQogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy93Zngvd2Z4LmgNCg0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvc3RhZ2luZy93ZngvYnVzLmggYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2J1cy5oDQppbmRl eCA4Y2U4NzFhOGE5ZmYuLmViNzdhYmMwOWVjMiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvc3RhZ2lu Zy93ZngvYnVzLmgNCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvYnVzLmgNCkBAIC0xMSw2ICsx MSwyMyBAQA0KICNpbmNsdWRlIDxsaW51eC9tbWMvc2Rpb19mdW5jLmg+DQogI2luY2x1ZGUgPGxp bnV4L3NwaS9zcGkuaD4NCiANCisjZGVmaW5lIFdGWF9SRUdfQ09ORklHICAgICAgICAweDANCisj ZGVmaW5lIFdGWF9SRUdfQ09OVFJPTCAgICAgICAweDENCisjZGVmaW5lIFdGWF9SRUdfSU5fT1VU X1FVRVVFICAweDINCisjZGVmaW5lIFdGWF9SRUdfQUhCX0RQT1JUICAgICAweDMNCisjZGVmaW5l IFdGWF9SRUdfQkFTRV9BRERSICAgICAweDQNCisjZGVmaW5lIFdGWF9SRUdfU1JBTV9EUE9SVCAg ICAweDUNCisjZGVmaW5lIFdGWF9SRUdfU0VUX0dFTl9SX1cgICAweDYNCisjZGVmaW5lIFdGWF9S RUdfRlJBTUVfT1VUICAgICAweDcNCisNCitzdHJ1Y3QgaHdidXNfb3BzIHsNCisJaW50ICgqY29w eV9mcm9tX2lvKSh2b2lkICpidXNfcHJpdiwgdW5zaWduZWQgaW50IGFkZHIsIHZvaWQgKmRzdCwg c2l6ZV90IGNvdW50KTsNCisJaW50ICgqY29weV90b19pbykodm9pZCAqYnVzX3ByaXYsIHVuc2ln bmVkIGludCBhZGRyLCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBjb3VudCk7DQorCXZvaWQgKCps b2NrKSh2b2lkICpidXNfcHJpdik7DQorCXZvaWQgKCp1bmxvY2spKHZvaWQgKmJ1c19wcml2KTsN CisJc2l6ZV90ICgqYWxpZ25fc2l6ZSkodm9pZCAqYnVzX3ByaXYsIHNpemVfdCBzaXplKTsNCit9 Ow0KKw0KIGV4dGVybiBzdHJ1Y3Qgc2Rpb19kcml2ZXIgd2Z4X3NkaW9fZHJpdmVyOw0KIGV4dGVy biBzdHJ1Y3Qgc3BpX2RyaXZlciB3Znhfc3BpX2RyaXZlcjsNCiANCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3N0YWdpbmcvd2Z4L2J1c19zZGlvLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2J1c19zZGlv LmMNCmluZGV4IDRiMjZjOTk0ZjQzYy4uMzViY2NhN2VjNWRjIDEwMDY0NA0KLS0tIGEvZHJpdmVy cy9zdGFnaW5nL3dmeC9idXNfc2Rpby5jDQorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2J1c19z ZGlvLmMNCkBAIC04LDM2ICs4LDIyMyBAQA0KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCiAj aW5jbHVkZSA8bGludXgvbW1jL3NkaW9fZnVuYy5oPg0KICNpbmNsdWRlIDxsaW51eC9tbWMvY2Fy ZC5oPg0KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4NCiAjaW5jbHVkZSA8bGludXgvb2Zf aXJxLmg+DQogDQogI2luY2x1ZGUgImJ1cy5oIg0KKyNpbmNsdWRlICJ3ZnguaCINCisjaW5jbHVk ZSAiaHdpby5oIg0KKyNpbmNsdWRlICJtYWluLmgiDQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCB3 ZnhfcGxhdGZvcm1fZGF0YSB3Znhfc2Rpb19wZGF0YSA9IHsNCit9Ow0KKw0KK3N0cnVjdCB3Znhf c2Rpb19wcml2IHsNCisJc3RydWN0IHNkaW9fZnVuYyAqZnVuYzsNCisJc3RydWN0IHdmeF9kZXYg KmNvcmU7DQorCXU4IGJ1Zl9pZF90eDsNCisJdTggYnVmX2lkX3J4Ow0KKwlpbnQgb2ZfaXJxOw0K K307DQorDQorc3RhdGljIGludCB3Znhfc2Rpb19jb3B5X2Zyb21faW8odm9pZCAqcHJpdiwgdW5z aWduZWQgaW50IHJlZ19pZCwNCisJCQkJIHZvaWQgKmRzdCwgc2l6ZV90IGNvdW50KQ0KK3sNCisJ c3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cyA9IHByaXY7DQorCXVuc2lnbmVkIGludCBzZGlvX2Fk ZHIgPSByZWdfaWQgPDwgMjsNCisJaW50IHJldDsNCisNCisJQlVHX09OKHJlZ19pZCA+IDcpOw0K KwlXQVJOKCgodWludHB0cl90KSBkc3QpICYgMywgInVuYWxpZ25lZCBidWZmZXIgc2l6ZSIpOw0K KwlXQVJOKGNvdW50ICYgMywgInVuYWxpZ25lZCBidWZmZXIgYWRkcmVzcyIpOw0KKw0KKwkvKiBV c2UgcXVldWUgbW9kZSBidWZmZXJzICovDQorCWlmIChyZWdfaWQgPT0gV0ZYX1JFR19JTl9PVVRf UVVFVUUpDQorCQlzZGlvX2FkZHIgfD0gKGJ1cy0+YnVmX2lkX3J4ICsgMSkgPDwgNzsNCisJcmV0 ID0gc2Rpb19tZW1jcHlfZnJvbWlvKGJ1cy0+ZnVuYywgZHN0LCBzZGlvX2FkZHIsIGNvdW50KTsN CisJaWYgKCFyZXQgJiYgcmVnX2lkID09IFdGWF9SRUdfSU5fT1VUX1FVRVVFKQ0KKwkJYnVzLT5i dWZfaWRfcnggPSAoYnVzLT5idWZfaWRfcnggKyAxKSAlIDQ7DQorDQorCXJldHVybiByZXQ7DQor fQ0KKw0KK3N0YXRpYyBpbnQgd2Z4X3NkaW9fY29weV90b19pbyh2b2lkICpwcml2LCB1bnNpZ25l ZCBpbnQgcmVnX2lkLA0KKwkJCSAgICAgICBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBjb3VudCkN Cit7DQorCXN0cnVjdCB3Znhfc2Rpb19wcml2ICpidXMgPSBwcml2Ow0KKwl1bnNpZ25lZCBpbnQg c2Rpb19hZGRyID0gcmVnX2lkIDw8IDI7DQorCWludCByZXQ7DQorDQorCUJVR19PTihyZWdfaWQg PiA3KTsNCisJV0FSTigoKHVpbnRwdHJfdCkgc3JjKSAmIDMsICJ1bmFsaWduZWQgYnVmZmVyIHNp emUiKTsNCisJV0FSTihjb3VudCAmIDMsICJ1bmFsaWduZWQgYnVmZmVyIGFkZHJlc3MiKTsNCisN CisJLyogVXNlIHF1ZXVlIG1vZGUgYnVmZmVycyAqLw0KKwlpZiAocmVnX2lkID09IFdGWF9SRUdf SU5fT1VUX1FVRVVFKQ0KKwkJc2Rpb19hZGRyIHw9IGJ1cy0+YnVmX2lkX3R4IDw8IDc7DQorCS8v IEZJWE1FOiBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmb3Igc3JjDQorCXJldCA9IHNkaW9f bWVtY3B5X3RvaW8oYnVzLT5mdW5jLCBzZGlvX2FkZHIsICh2b2lkICopIHNyYywgY291bnQpOw0K KwlpZiAoIXJldCAmJiByZWdfaWQgPT0gV0ZYX1JFR19JTl9PVVRfUVVFVUUpDQorCQlidXMtPmJ1 Zl9pZF90eCA9IChidXMtPmJ1Zl9pZF90eCArIDEpICUgMzI7DQorDQorCXJldHVybiByZXQ7DQor fQ0KKw0KK3N0YXRpYyB2b2lkIHdmeF9zZGlvX2xvY2sodm9pZCAqcHJpdikNCit7DQorCXN0cnVj dCB3Znhfc2Rpb19wcml2ICpidXMgPSBwcml2Ow0KKw0KKwlzZGlvX2NsYWltX2hvc3QoYnVzLT5m dW5jKTsNCit9DQorDQorc3RhdGljIHZvaWQgd2Z4X3NkaW9fdW5sb2NrKHZvaWQgKnByaXYpDQor ew0KKwlzdHJ1Y3Qgd2Z4X3NkaW9fcHJpdiAqYnVzID0gcHJpdjsNCisNCisJc2Rpb19yZWxlYXNl X2hvc3QoYnVzLT5mdW5jKTsNCit9DQorDQorc3RhdGljIHZvaWQgd2Z4X3NkaW9faXJxX2hhbmRs ZXIoc3RydWN0IHNkaW9fZnVuYyAqZnVuYykNCit7DQorCXN0cnVjdCB3Znhfc2Rpb19wcml2ICpi dXMgPSBzZGlvX2dldF9kcnZkYXRhKGZ1bmMpOw0KKw0KKwlpZiAoYnVzLT5jb3JlKQ0KKwkJLyog ZW1wdHkgKi87DQorCWVsc2UNCisJCVdBUk4oIWJ1cy0+Y29yZSwgInJhY2UgY29uZGl0aW9uIGlu IGRyaXZlciBpbml0L2RlaW5pdCIpOw0KK30NCisNCitzdGF0aWMgaXJxcmV0dXJuX3Qgd2Z4X3Nk aW9faXJxX2hhbmRsZXJfZXh0KGludCBpcnEsIHZvaWQgKnByaXYpDQorew0KKwlzdHJ1Y3Qgd2Z4 X3NkaW9fcHJpdiAqYnVzID0gcHJpdjsNCisNCisJaWYgKCFidXMtPmNvcmUpIHsNCisJCVdBUk4o IWJ1cy0+Y29yZSwgInJhY2UgY29uZGl0aW9uIGluIGRyaXZlciBpbml0L2RlaW5pdCIpOw0KKwkJ cmV0dXJuIElSUV9OT05FOw0KKwl9DQorCXNkaW9fY2xhaW1faG9zdChidXMtPmZ1bmMpOw0KKwlz ZGlvX3JlbGVhc2VfaG9zdChidXMtPmZ1bmMpOw0KKwlyZXR1cm4gSVJRX0hBTkRMRUQ7DQorfQ0K Kw0KK3N0YXRpYyBpbnQgd2Z4X3NkaW9faXJxX3N1YnNjcmliZShzdHJ1Y3Qgd2Z4X3NkaW9fcHJp diAqYnVzKQ0KK3sNCisJaW50IHJldDsNCisNCisJaWYgKGJ1cy0+b2ZfaXJxKSB7DQorCQlyZXQg PSByZXF1ZXN0X2lycShidXMtPm9mX2lycSwgd2Z4X3NkaW9faXJxX2hhbmRsZXJfZXh0LA0KKwkJ CQkgIElSUUZfVFJJR0dFUl9SSVNJTkcsICJ3ZngiLCBidXMpOw0KKwl9IGVsc2Ugew0KKwkJc2Rp b19jbGFpbV9ob3N0KGJ1cy0+ZnVuYyk7DQorCQlyZXQgPSBzZGlvX2NsYWltX2lycShidXMtPmZ1 bmMsIHdmeF9zZGlvX2lycV9oYW5kbGVyKTsNCisJCXNkaW9fcmVsZWFzZV9ob3N0KGJ1cy0+ZnVu Yyk7DQorCX0NCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIGludCB3Znhfc2Rpb19pcnFf dW5zdWJzY3JpYmUoc3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cykNCit7DQorCWludCByZXQ7DQor DQorCWlmIChidXMtPm9mX2lycSkgew0KKwkJZnJlZV9pcnEoYnVzLT5vZl9pcnEsIGJ1cyk7DQor CQlyZXQgPSAwOw0KKwl9IGVsc2Ugew0KKwkJc2Rpb19jbGFpbV9ob3N0KGJ1cy0+ZnVuYyk7DQor CQlyZXQgPSBzZGlvX3JlbGVhc2VfaXJxKGJ1cy0+ZnVuYyk7DQorCQlzZGlvX3JlbGVhc2VfaG9z dChidXMtPmZ1bmMpOw0KKwl9DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK3N0YXRpYyBzaXplX3Qg d2Z4X3NkaW9fYWxpZ25fc2l6ZSh2b2lkICpwcml2LCBzaXplX3Qgc2l6ZSkNCit7DQorCXN0cnVj dCB3Znhfc2Rpb19wcml2ICpidXMgPSBwcml2Ow0KKw0KKwlyZXR1cm4gc2Rpb19hbGlnbl9zaXpl KGJ1cy0+ZnVuYywgc2l6ZSk7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdidXNfb3Bz IHdmeF9zZGlvX2h3YnVzX29wcyA9IHsNCisJLmNvcHlfZnJvbV9pbyA9IHdmeF9zZGlvX2NvcHlf ZnJvbV9pbywNCisJLmNvcHlfdG9faW8gPSB3Znhfc2Rpb19jb3B5X3RvX2lvLA0KKwkubG9jawkJ CT0gd2Z4X3NkaW9fbG9jaywNCisJLnVubG9jawkJCT0gd2Z4X3NkaW9fdW5sb2NrLA0KKwkuYWxp Z25fc2l6ZQkJPSB3Znhfc2Rpb19hbGlnbl9zaXplLA0KK307DQogDQogc3RhdGljIGNvbnN0IHN0 cnVjdCBvZl9kZXZpY2VfaWQgd2Z4X3NkaW9fb2ZfbWF0Y2hbXTsNCiBzdGF0aWMgaW50IHdmeF9z ZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsDQogCQkJICBjb25zdCBzdHJ1Y3Qgc2Rp b19kZXZpY2VfaWQgKmlkKQ0KIHsNCiAJc3RydWN0IGRldmljZV9ub2RlICpucCA9IGZ1bmMtPmRl di5vZl9ub2RlOw0KKwlzdHJ1Y3Qgd2Z4X3NkaW9fcHJpdiAqYnVzOw0KKwlpbnQgcmV0Ow0KIA0K IAlpZiAoZnVuYy0+bnVtICE9IDEpIHsNCiAJCWRldl9lcnIoJmZ1bmMtPmRldiwgIlNESU8gZnVu Y3Rpb24gbnVtYmVyIGlzICVkIHdoaWxlIGl0IHNob3VsZCBhbHdheXMgYmUgMSAodW5zdXBwb3J0 ZWQgY2hpcD8pXG4iLCBmdW5jLT5udW0pOw0KIAkJcmV0dXJuIC1FTk9ERVY7DQogCX0NCiANCisJ YnVzID0gZGV2bV9remFsbG9jKCZmdW5jLT5kZXYsIHNpemVvZigqYnVzKSwgR0ZQX0tFUk5FTCk7 DQorCWlmICghYnVzKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQogCWlmIChucCkgew0KIAkJaWYg KCFvZl9tYXRjaF9ub2RlKHdmeF9zZGlvX29mX21hdGNoLCBucCkpIHsNCiAJCQlkZXZfd2Fybigm ZnVuYy0+ZGV2LCAibm8gY29tcGF0aWJsZSBkZXZpY2UgZm91bmQgaW4gRFRcbiIpOw0KIAkJCXJl dHVybiAtRU5PREVWOw0KIAkJfQ0KKwkJYnVzLT5vZl9pcnEgPSBpcnFfb2ZfcGFyc2VfYW5kX21h cChucCwgMCk7DQogCX0gZWxzZSB7DQogCQlkZXZfd2FybigmZnVuYy0+ZGV2LCAiZGV2aWNlIGlz IG5vdCBkZWNsYXJlZCBpbiBEVCwgZmVhdHVyZXMgd2lsbCBiZSBsaW1pdGVkXG4iKTsNCiAJCS8v IEZJWE1FOiBpZ25vcmUgVklEL1BJRCBhbmQgb25seSByZWx5IG9uIGRldmljZSB0cmVlDQogCQkv LyByZXR1cm4gLUVOT0RFVjsNCiAJfQ0KLQlyZXR1cm4gLUVJTzsgLy8gRklYTUU6IG5vdCB5ZXQg c3VwcG9ydGVkDQorDQorCWJ1cy0+ZnVuYyA9IGZ1bmM7DQorCXNkaW9fc2V0X2RydmRhdGEoZnVu YywgYnVzKTsNCisJZnVuYy0+Y2FyZC0+cXVpcmtzIHw9IE1NQ19RVUlSS19MRU5JRU5UX0ZOMCB8 IE1NQ19RVUlSS19CTEtTWl9GT1JfQllURV9NT0RFIHwgTU1DX1FVSVJLX0JST0tFTl9CWVRFX01P REVfNTEyOw0KKw0KKwlzZGlvX2NsYWltX2hvc3QoZnVuYyk7DQorCXJldCA9IHNkaW9fZW5hYmxl X2Z1bmMoZnVuYyk7DQorCS8vIEJsb2NrIG9mIDY0IGJ5dGVzIGlzIG1vcmUgZWZmaWNpZW50IHRo YW4gNTEyQiBmb3IgZnJhbWUgc2l6ZXMgPCA0aw0KKwlzZGlvX3NldF9ibG9ja19zaXplKGZ1bmMs IDY0KTsNCisJc2Rpb19yZWxlYXNlX2hvc3QoZnVuYyk7DQorCWlmIChyZXQpDQorCQlnb3RvIGVy cjA7DQorDQorCXJldCA9IHdmeF9zZGlvX2lycV9zdWJzY3JpYmUoYnVzKTsNCisJaWYgKHJldCkN CisJCWdvdG8gZXJyMTsNCisNCisJYnVzLT5jb3JlID0gd2Z4X2luaXRfY29tbW9uKCZmdW5jLT5k ZXYsICZ3Znhfc2Rpb19wZGF0YSwNCisJCQkJICAgICZ3Znhfc2Rpb19od2J1c19vcHMsIGJ1cyk7 DQorCWlmICghYnVzLT5jb3JlKSB7DQorCQlyZXQgPSAtRUlPOw0KKwkJZ290byBlcnIyOw0KKwl9 DQorDQorCXJldHVybiAwOw0KKw0KK2VycjI6DQorCXdmeF9zZGlvX2lycV91bnN1YnNjcmliZShi dXMpOw0KK2VycjE6DQorCXNkaW9fY2xhaW1faG9zdChmdW5jKTsNCisJc2Rpb19kaXNhYmxlX2Z1 bmMoZnVuYyk7DQorCXNkaW9fcmVsZWFzZV9ob3N0KGZ1bmMpOw0KK2VycjA6DQorCXJldHVybiBy ZXQ7DQogfQ0KIA0KIHN0YXRpYyB2b2lkIHdmeF9zZGlvX3JlbW92ZShzdHJ1Y3Qgc2Rpb19mdW5j ICpmdW5jKQ0KIHsNCisJc3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cyA9IHNkaW9fZ2V0X2RydmRh dGEoZnVuYyk7DQorDQorCXdmeF9mcmVlX2NvbW1vbihidXMtPmNvcmUpOw0KKwl3Znhfc2Rpb19p cnFfdW5zdWJzY3JpYmUoYnVzKTsNCisJc2Rpb19jbGFpbV9ob3N0KGZ1bmMpOw0KKwlzZGlvX2Rp c2FibGVfZnVuYyhmdW5jKTsNCisJc2Rpb19yZWxlYXNlX2hvc3QoZnVuYyk7DQogfQ0KIA0KICNk ZWZpbmUgU0RJT19WRU5ET1JfSURfU0lMQUJTICAgICAgICAweDAwMDANCmRpZmYgLS1naXQgYS9k cml2ZXJzL3N0YWdpbmcvd2Z4L2J1c19zcGkuYyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvYnVzX3Nw aS5jDQppbmRleCA1NzRiNjBmNTEzZTkuLmIzMTFmZjcyY2Y4MCAxMDA2NDQNCi0tLSBhL2RyaXZl cnMvc3RhZ2luZy93ZngvYnVzX3NwaS5jDQorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2J1c19z cGkuYw0KQEAgLTcsMTkgKzcsMjg4IEBADQogICogQ29weXJpZ2h0IChjKSAyMDEwLCBTVC1Fcmlj c3Nvbg0KICAqLw0KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCisjaW5jbHVkZSA8bGludXgv ZGVsYXkuaD4NCisjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPg0KKyNpbmNsdWRlIDxsaW51eC9n cGlvLmg+DQorI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4NCiAjaW5jbHVkZSA8bGlu dXgvc3BpL3NwaS5oPg0KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4NCiAjaW5jbHVkZSA8 bGludXgvb2YuaD4NCiANCiAjaW5jbHVkZSAiYnVzLmgiDQorI2luY2x1ZGUgIndmeC5oIg0KKyNp bmNsdWRlICJod2lvLmgiDQorI2luY2x1ZGUgIm1haW4uaCINCisNCisjZGVmaW5lIERFVEVDVF9J TlZBTElEX0NUUkxfQUNDRVNTDQorDQorc3RhdGljIGludCBncGlvX3Jlc2V0ID0gLTI7DQorbW9k dWxlX3BhcmFtKGdwaW9fcmVzZXQsIGludCwgMDY0NCk7DQorTU9EVUxFX1BBUk1fREVTQyhncGlv X3Jlc2V0LCAiZ3BpbyBudW1iZXIgZm9yIHJlc2V0LiAtMSBmb3Igbm9uZS4iKTsNCisNCisjZGVm aW5lIFNFVF9XUklURSAweDdGRkYgICAgICAgIC8qIHVzYWdlOiBhbmQgb3BlcmF0aW9uICovDQor I2RlZmluZSBTRVRfUkVBRCAweDgwMDAgICAgICAgICAvKiB1c2FnZTogb3Igb3BlcmF0aW9uICov DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCB3ZnhfcGxhdGZvcm1fZGF0YSB3Znhfc3BpX3BkYXRh ID0gew0KK307DQorDQorc3RydWN0IHdmeF9zcGlfcHJpdiB7DQorCXN0cnVjdCBzcGlfZGV2aWNl ICpmdW5jOw0KKwlzdHJ1Y3Qgd2Z4X2RldiAqY29yZTsNCisJc3RydWN0IGdwaW9fZGVzYyAqZ3Bp b19yZXNldDsNCisJc3RydWN0IHdvcmtfc3RydWN0IHJlcXVlc3Rfcng7DQorCWJvb2wgbmVlZF9z d2FiOw0KK307DQorDQorLyoNCisgKiBSZWFkIG9mIGNvbnRyb2wgcmVnaXN0ZXIgbmVlZCBhIHBh cnRpY3VsYXIgYXR0ZW50aW9uIGJlY2F1c2UgaXQgc2hvdWxkIGJlDQorICogZG9uZSBvbmx5IGFm dGVyIGFuIElSUSByYWlzZS4gV2UgY2FuIGRldGVjdCBpZiB0aGlzIGV2ZW50IGhhcHBlbnMgYnkg cmVhZGluZw0KKyAqIGNvbnRyb2wgcmVnaXN0ZXIgdHdpY2UgKGl0IGlzIHNhZmUgdG8gcmVhZCB0 d2ljZSBzaW5jZSB3ZSBjYW4gZ2FyYW50ZWUgdGhhdA0KKyAqIG5vIGRhdGEgYWNlc3Mgd2FzIGRv bmUgc2luY2UgSVJRIHJhaXNpbmcpLiBJbiBhZGQsIHRoaXMgZnVuY3Rpb24gb3B0aW1pemUgaXQN CisgKiBieSBkb2luZyBvbmx5IG9uZSBTUEkgcmVxdWVzdC4NCisgKi8NCisjaWYgKEtFUk5FTF9W RVJTSU9OKDQsIDE5LCAxNCkgPiBMSU5VWF9WRVJTSU9OX0NPREUpDQorc3RhdGljIGludCB3Znhf c3BpX3JlYWRfY3RybF9yZWcoc3RydWN0IHdmeF9zcGlfcHJpdiAqYnVzLCB1MTYgKmRzdCkNCit7 DQorCWludCBpLCByZXQgPSAwOw0KKwl1MTYgdHhfYnVmWzRdID0geyB9Ow0KKwl1MTYgcnhfYnVm WzRdID0geyB9Ow0KKwl1MTYgdG1wWzJdID0geyB9Ow0KKwlzdHJ1Y3Qgc3BpX21lc3NhZ2UgbTsN CisJc3RydWN0IHNwaV90cmFuc2ZlciB0ID0gew0KKwkJLnJ4X2J1ZiA9IHJ4X2J1ZiwNCisJCS50 eF9idWYgPSB0eF9idWYsDQorCQkubGVuID0gc2l6ZW9mKHR4X2J1ZiksDQorCX07DQorCXUxNiBy ZWdhZGRyID0gKFdGWF9SRUdfQ09OVFJPTCA8PCAxMikgfCAoc2l6ZW9mKHUxNikgLyAyKSB8IFNF VF9SRUFEOw0KKw0KKwljcHVfdG9fbGUxNnMocmVnYWRkcik7DQorCWlmIChidXMtPm5lZWRfc3dh YikNCisJCXN3YWIxNnMoJnJlZ2FkZHIpOw0KKw0KKwl0eF9idWZbMF0gPSB0eF9idWZbMl0gPSBy ZWdhZGRyOw0KKwlzcGlfbWVzc2FnZV9pbml0KCZtKTsNCisJc3BpX21lc3NhZ2VfYWRkX3RhaWwo JnQsICZtKTsNCisJZm9yIChpID0gMCwgdG1wWzBdID0gdG1wWzFdICsgMTsgdG1wWzBdICE9IHRt cFsxXSAmJiBpIDwgMzsgaSsrKSB7DQorCQlyZXQgPSBzcGlfc3luYyhidXMtPmZ1bmMsICZtKTsN CisJCS8vIENoYW5nZXMgb2YgZ3Bpby13YWtldXAgY2FuIG9jY3VyIGR1cmluZyBjb250cm9sIHJl Z2lzdGVyDQorCQkvLyBhY2Nlc3MuIEluIHRoaXMgY2FzZSwgQ1RSTF9XTEFOX1JFQURZIG1heSBk aWZmZXJzLg0KKwkJdG1wWzBdID0gcnhfYnVmWzFdICYgY3B1X3RvX2xlMTYofkNUUkxfV0xBTl9S RUFEWSk7DQorCQl0bXBbMV0gPSByeF9idWZbM10gJiBjcHVfdG9fbGUxNih+Q1RSTF9XTEFOX1JF QURZKTsNCisJfQ0KKwlpZiAodG1wWzBdICE9IHRtcFsxXSkNCisJCXJldCA9IC1FVElNRURPVVQ7 DQorCWVsc2UgaWYgKGkgPiAxKQ0KKwkJZGV2X2luZm8oYnVzLT5jb3JlLT5kZXYsICJzdWNjZXNz IHJlYWQgYWZ0ZXIgJWQgZmFpbHVyZXNcbiIsIGkgLSAxKTsNCisNCisJKmRzdCA9IHJ4X2J1Zlsx XTsNCisJcmV0dXJuIHJldDsNCit9DQorI2VuZGlmDQorDQorLyoNCisgKiBXRnggY2hpcCByZWFk IGRhdGEgMTZiaXRzIGF0IHRpbWUgYW5kIHBsYWNlIHRoZW0gZGlyZWN0bHkgaW50byAobGl0dGxl DQorICogZW5kaWFuKSBDUFUgcmVnaXN0ZXIuIFNvLCBjaGlwIGV4cGVjdCBieXRlIG9yZGVyIGxp a2UgIkIxIEIwIEIzIEIyIiAod2hpbGUNCisgKiBMRSBpcyAiQjAgQjEgQjIgQjMiIGFuZCBCRSBp cyAiQjMgQjIgQjEgQjAiKQ0KKyAqDQorICogQSBsaXR0bGUgZW5kaWFuIGhvc3Qgd2l0aCBiaXRz X3Blcl93b3JkID09IDE2IHNob3VsZCBkbyB0aGUgcmlnaHQgam9iDQorICogbmF0aXZlbHkuIFRo ZSBjb2RlIGJlbG93IHRvIHN1cHBvcnQgYmlnIGVuZGlhbiBob3N0IGFuZCBjb21tb25seSB1c2Vk IFNQSQ0KKyAqIDhiaXRzLg0KKyAqLw0KK3N0YXRpYyBpbnQgd2Z4X3NwaV9jb3B5X2Zyb21faW8o dm9pZCAqcHJpdiwgdW5zaWduZWQgaW50IGFkZHIsDQorCQkJCXZvaWQgKmRzdCwgc2l6ZV90IGNv dW50KQ0KK3sNCisJc3RydWN0IHdmeF9zcGlfcHJpdiAqYnVzID0gcHJpdjsNCisJdTE2IHJlZ2Fk ZHIgPSAoYWRkciA8PCAxMikgfCAoY291bnQgLyAyKSB8IFNFVF9SRUFEOw0KKwlzdHJ1Y3Qgc3Bp X21lc3NhZ2UgICAgICBtOw0KKwlzdHJ1Y3Qgc3BpX3RyYW5zZmVyICAgICB0X2FkZHIgPSB7DQor CQkudHhfYnVmICAgICAgICAgPSAmcmVnYWRkciwNCisJCS5sZW4gICAgICAgICAgICA9IHNpemVv ZihyZWdhZGRyKSwNCisJfTsNCisJc3RydWN0IHNwaV90cmFuc2ZlciAgICAgdF9tc2cgPSB7DQor CQkucnhfYnVmICAgICAgICAgPSBkc3QsDQorCQkubGVuICAgICAgICAgICAgPSBjb3VudCwNCisJ fTsNCisJdTE2ICpkc3QxNiA9IGRzdDsNCisjaWYgKEtFUk5FTF9WRVJTSU9OKDQsIDE5LCAxNCkg PiBMSU5VWF9WRVJTSU9OX0NPREUpDQorCXU4ICpkc3Q4ID0gZHN0Ow0KKyNlbmRpZg0KKwlpbnQg cmV0LCBpOw0KKw0KKwlXQVJOKGNvdW50ICUgMiwgImJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0 aXBsZSBvZiAyIik7DQorDQorI2lmIChLRVJORUxfVkVSU0lPTig0LCAxOSwgMTQpID4gTElOVVhf VkVSU0lPTl9DT0RFKQ0KKwkvKiBTb21lIFNQSSBkcml2ZXIgKGFuZCBlc3BlY2lhbGx5IFJhc3Bi ZXJyeSBvbmUpIGhhdmUgcmFjZSBjb25kaXRpb25zDQorCSAqIGR1cmluZyBTUEkgdHJhbnNmZXJz LiBJdCBpbXBhY3QgbGFzdCBieXRlIG9mIHRyYW5zZmVyLiBXb3JrIGFyb3VuZA0KKwkgKiBiZWxs b3cgdHJ5IHRvIGRldGVjdCBhbmQgc29sdmUgdGhlbS4NCisJICogU2VlIGh0dHBzOi8vZ2l0aHVi LmNvbS9yYXNwYmVycnlwaS9saW51eC9pc3N1ZXMvMjIwMA0KKwkgKi8NCisJaWYgKGFkZHIgPT0g V0ZYX1JFR19JTl9PVVRfUVVFVUUpDQorCQlkc3Q4W2NvdW50IC0gMV0gPSAweEZGOw0KKyNlbmRp Zg0KKw0KKwljcHVfdG9fbGUxNnMoJnJlZ2FkZHIpOw0KKwlpZiAoYnVzLT5uZWVkX3N3YWIpDQor CQlzd2FiMTZzKCZyZWdhZGRyKTsNCisNCisJc3BpX21lc3NhZ2VfaW5pdCgmbSk7DQorCXNwaV9t ZXNzYWdlX2FkZF90YWlsKCZ0X2FkZHIsICZtKTsNCisJc3BpX21lc3NhZ2VfYWRkX3RhaWwoJnRf bXNnLCAmbSk7DQorCXJldCA9IHNwaV9zeW5jKGJ1cy0+ZnVuYywgJm0pOw0KKw0KKyNpZiAoS0VS TkVMX1ZFUlNJT04oNCwgMTksIDE0KSA+IExJTlVYX1ZFUlNJT05fQ09ERSkNCisJLyogSWYgbGFz dCBieXRlIGhhcyBub3QgYmVlbiBvdmVyd3JpdHRlbiwgcmVhZCBjdHJsX3JlZyBtYW51YWxseQ0K KwkgKi8NCisJaWYgKGFkZHIgPT0gV0ZYX1JFR19JTl9PVVRfUVVFVUUgJiYgIXJldCAmJiBkc3Q4 W2NvdW50IC0gMV0gPT0gMHhGRikgew0KKwkJZGV2X3dhcm4oYnVzLT5jb3JlLT5kZXYsICJTUEkg RE1BIGVycm9yIGRldGVjdGVkIChhbmQgcmVzb2x2ZWQpXG4iKTsNCisJCXJldCA9IHdmeF9zcGlf cmVhZF9jdHJsX3JlZyhidXMsICh1MTYgKikgKGRzdDggKyBjb3VudCAtIDIpKTsNCisJfQ0KKyNl bmRpZg0KKw0KKwlpZiAoYnVzLT5uZWVkX3N3YWIgJiYgYWRkciA9PSBXRlhfUkVHX0NPTkZJRykN CisJCWZvciAoaSA9IDA7IGkgPCBjb3VudCAvIDI7IGkrKykNCisJCQlzd2FiMTZzKCZkc3QxNltp XSk7DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQgd2Z4X3NwaV9jb3B5X3RvX2lv KHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCBhZGRyLA0KKwkJCSAgICAgIGNvbnN0IHZvaWQgKnNy Yywgc2l6ZV90IGNvdW50KQ0KK3sNCisJc3RydWN0IHdmeF9zcGlfcHJpdiAqYnVzID0gcHJpdjsN CisJdTE2IHJlZ2FkZHIgPSAoYWRkciA8PCAxMikgfCAoY291bnQgLyAyKTsNCisJLy8gRklYTUU6 IHVzZSBhIGJvdW5jZSBidWZmZXINCisJdTE2ICpzcmMxNiA9ICh2b2lkICopIHNyYzsNCisJaW50 IHJldCwgaTsNCisJc3RydWN0IHNwaV9tZXNzYWdlICAgICAgbTsNCisJc3RydWN0IHNwaV90cmFu c2ZlciAgICAgdF9hZGRyID0gew0KKwkJLnR4X2J1ZiAgICAgICAgID0gJnJlZ2FkZHIsDQorCQku bGVuICAgICAgICAgICAgPSBzaXplb2YocmVnYWRkciksDQorCX07DQorCXN0cnVjdCBzcGlfdHJh bnNmZXIgICAgIHRfbXNnID0gew0KKwkJLnR4X2J1ZiAgICAgICAgID0gc3JjLA0KKwkJLmxlbiAg ICAgICAgICAgID0gY291bnQsDQorCX07DQorDQorCVdBUk4oY291bnQgJSAyLCAiYnVmZmVyIHNp emUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDIiKTsNCisJV0FSTihyZWdhZGRyICYgU0VUX1JFQUQs ICJiYWQgYWRkciBvciBzaXplIG92ZXJmbG93Iik7DQorDQorCWNwdV90b19sZTE2cygmcmVnYWRk cik7DQorDQorCWlmIChidXMtPm5lZWRfc3dhYikNCisJCXN3YWIxNnMoJnJlZ2FkZHIpOw0KKwlp ZiAoYnVzLT5uZWVkX3N3YWIgJiYgYWRkciA9PSBXRlhfUkVHX0NPTkZJRykNCisJCWZvciAoaSA9 IDA7IGkgPCBjb3VudCAvIDI7IGkrKykNCisJCQlzd2FiMTZzKCZzcmMxNltpXSk7DQorDQorCXNw aV9tZXNzYWdlX2luaXQoJm0pOw0KKwlzcGlfbWVzc2FnZV9hZGRfdGFpbCgmdF9hZGRyLCAmbSk7 DQorCXNwaV9tZXNzYWdlX2FkZF90YWlsKCZ0X21zZywgJm0pOw0KKwlyZXQgPSBzcGlfc3luYyhi dXMtPmZ1bmMsICZtKTsNCisNCisJaWYgKGJ1cy0+bmVlZF9zd2FiICYmIGFkZHIgPT0gV0ZYX1JF R19DT05GSUcpDQorCQlmb3IgKGkgPSAwOyBpIDwgY291bnQgLyAyOyBpKyspDQorCQkJc3dhYjE2 cygmc3JjMTZbaV0pOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgdm9pZCB3Znhfc3Bp X2xvY2sodm9pZCAqcHJpdikNCit7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHdmeF9zcGlfdW5sb2Nr KHZvaWQgKnByaXYpDQorew0KK30NCisNCitzdGF0aWMgaXJxcmV0dXJuX3Qgd2Z4X3NwaV9pcnFf aGFuZGxlcihpbnQgaXJxLCB2b2lkICpwcml2KQ0KK3sNCisJc3RydWN0IHdmeF9zcGlfcHJpdiAq YnVzID0gcHJpdjsNCisNCisJaWYgKCFidXMtPmNvcmUpIHsNCisJCVdBUk4oIWJ1cy0+Y29yZSwg InJhY2UgY29uZGl0aW9uIGluIGRyaXZlciBpbml0L2RlaW5pdCIpOw0KKwkJcmV0dXJuIElSUV9O T05FOw0KKwl9DQorCXF1ZXVlX3dvcmsoc3lzdGVtX2hpZ2hwcmlfd3EsICZidXMtPnJlcXVlc3Rf cngpOw0KKwlyZXR1cm4gSVJRX0hBTkRMRUQ7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHdmeF9zcGlf cmVxdWVzdF9yeChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQorew0KK30NCisNCitzdGF0aWMg c2l6ZV90IHdmeF9zcGlfYWxpZ25fc2l6ZSh2b2lkICpwcml2LCBzaXplX3Qgc2l6ZSkNCit7DQor CS8vIE1vc3Qgb2YgU1BJIGNvbnRyb2xsZXJzIGF2b2lkIERNQSBpZiBidWZmZXIgc2l6ZSBpcyBu b3QgMzJiaXQgYWxpZ25lZA0KKwlyZXR1cm4gQUxJR04oc2l6ZSwgNCk7DQorfQ0KKw0KK3N0YXRp YyBjb25zdCBzdHJ1Y3QgaHdidXNfb3BzIHdmeF9zcGlfaHdidXNfb3BzID0gew0KKwkuY29weV9m cm9tX2lvID0gd2Z4X3NwaV9jb3B5X2Zyb21faW8sDQorCS5jb3B5X3RvX2lvID0gd2Z4X3NwaV9j b3B5X3RvX2lvLA0KKwkubG9jawkJCT0gd2Z4X3NwaV9sb2NrLA0KKwkudW5sb2NrCQkJPSB3Znhf c3BpX3VubG9jaywNCisJLmFsaWduX3NpemUJCT0gd2Z4X3NwaV9hbGlnbl9zaXplLA0KK307DQog DQogc3RhdGljIGludCB3Znhfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpmdW5jKQ0KIHsN Ci0JcmV0dXJuIC1FSU87DQorCXN0cnVjdCB3Znhfc3BpX3ByaXYgKmJ1czsNCisJaW50IHJldDsN CisNCisJaWYgKCFmdW5jLT5iaXRzX3Blcl93b3JkKQ0KKwkJZnVuYy0+Yml0c19wZXJfd29yZCA9 IDE2Ow0KKwlyZXQgPSBzcGlfc2V0dXAoZnVuYyk7DQorCWlmIChyZXQpDQorCQlyZXR1cm4gcmV0 Ow0KKwkvLyBUcmFjZSBiZWxvdyBpcyBhbHNvIGRpc3BsYXllZCBieSBzcGlfc2V0dXAoKSBpZiBj b21waWxlZCB3aXRoIERFQlVHDQorCWRldl9kYmcoJmZ1bmMtPmRldiwgIlNQSSBwYXJhbXM6IENT PSVkLCBtb2RlPSVkIGJpdHMvd29yZD0lZCBzcGVlZD0lZFxuIiwNCisJCWZ1bmMtPmNoaXBfc2Vs ZWN0LCBmdW5jLT5tb2RlLCBmdW5jLT5iaXRzX3Blcl93b3JkLCBmdW5jLT5tYXhfc3BlZWRfaHop Ow0KKwlpZiAoZnVuYy0+Yml0c19wZXJfd29yZCAhPSAxNiAmJiBmdW5jLT5iaXRzX3Blcl93b3Jk ICE9IDgpDQorCQlkZXZfd2FybigmZnVuYy0+ZGV2LCAidW51c3VhbCBiaXRzL3dvcmQgdmFsdWU6 ICVkXG4iLCBmdW5jLT5iaXRzX3Blcl93b3JkKTsNCisJaWYgKGZ1bmMtPm1heF9zcGVlZF9oeiA+ IDQ5MDAwMDAwKQ0KKwkJZGV2X3dhcm4oJmZ1bmMtPmRldiwgIiVkSHogaXMgYSB2ZXJ5IGhpZ2gg c3BlZWRcbiIsIGZ1bmMtPm1heF9zcGVlZF9oeik7DQorDQorCWJ1cyA9IGRldm1fa3phbGxvYygm ZnVuYy0+ZGV2LCBzaXplb2YoKmJ1cyksIEdGUF9LRVJORUwpOw0KKwlpZiAoIWJ1cykNCisJCXJl dHVybiAtRU5PTUVNOw0KKwlidXMtPmZ1bmMgPSBmdW5jOw0KKwlpZiAoZnVuYy0+Yml0c19wZXJf d29yZCA9PSA4IHx8IElTX0VOQUJMRUQoQ09ORklHX0NQVV9CSUdfRU5ESUFOKSkNCisJCWJ1cy0+ bmVlZF9zd2FiID0gdHJ1ZTsNCisJc3BpX3NldF9kcnZkYXRhKGZ1bmMsIGJ1cyk7DQorDQorCWJ1 cy0+Z3Bpb19yZXNldCA9IHdmeF9nZXRfZ3BpbygmZnVuYy0+ZGV2LCBncGlvX3Jlc2V0LCAicmVz ZXQiKTsNCisJaWYgKCFidXMtPmdwaW9fcmVzZXQpIHsNCisJCWRldl93YXJuKCZmdW5jLT5kZXYs ICJ0cnkgdG8gbG9hZCBmaXJtd2FyZSBhbnl3YXlcbiIpOw0KKwl9IGVsc2Ugew0KKwkJZ3Bpb2Rf c2V0X3ZhbHVlKGJ1cy0+Z3Bpb19yZXNldCwgMCk7DQorCQl1ZGVsYXkoMTAwKTsNCisJCWdwaW9k X3NldF92YWx1ZShidXMtPmdwaW9fcmVzZXQsIDEpOw0KKwkJdWRlbGF5KDIwMDApOw0KKwl9DQor DQorCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJmZ1bmMtPmRldiwgZnVuYy0+aXJxLCB3Znhfc3Bp X2lycV9oYW5kbGVyLA0KKwkJCSAgICAgICBJUlFGX1RSSUdHRVJfUklTSU5HLCAid2Z4IiwgYnVz KTsNCisJaWYgKHJldCkNCisJCXJldHVybiByZXQ7DQorDQorCUlOSVRfV09SSygmYnVzLT5yZXF1 ZXN0X3J4LCB3Znhfc3BpX3JlcXVlc3RfcngpOw0KKwlidXMtPmNvcmUgPSB3ZnhfaW5pdF9jb21t b24oJmZ1bmMtPmRldiwgJndmeF9zcGlfcGRhdGEsDQorCQkJCSAgICAmd2Z4X3NwaV9od2J1c19v cHMsIGJ1cyk7DQorCWlmICghYnVzLT5jb3JlKQ0KKwkJcmV0dXJuIC1FSU87DQorDQorCXJldHVy biByZXQ7DQogfQ0KIA0KIC8qIERpc2Nvbm5lY3QgRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IFNQ SSBzdGFjayB3aGVuIGRldmljZSBpcyBkaXNjb25uZWN0ZWQgKi8NCiBzdGF0aWMgaW50IHdmeF9z cGlfZGlzY29ubmVjdChzdHJ1Y3Qgc3BpX2RldmljZSAqZnVuYykNCiB7DQorCXN0cnVjdCB3Znhf c3BpX3ByaXYgKmJ1cyA9IHNwaV9nZXRfZHJ2ZGF0YShmdW5jKTsNCisNCisJd2Z4X2ZyZWVfY29t bW9uKGJ1cy0+Y29yZSk7DQorCS8vIEEgZmV3IElSUSB3aWxsIGJlIHNlbnQgZHVyaW5nIGRldmlj ZSByZWxlYXNlLiBIb3BlZnVsbHksIG5vIElSUQ0KKwkvLyBzaG91bGQgaGFwcGVuIGFmdGVyIHdk ZXYvd3ZpZiBhcmUgcmVsZWFzZWQuDQorCWRldm1fZnJlZV9pcnEoJmZ1bmMtPmRldiwgZnVuYy0+ aXJxLCBidXMpOw0KKwlmbHVzaF93b3JrKCZidXMtPnJlcXVlc3RfcngpOw0KIAlyZXR1cm4gMDsN CiB9DQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9od2lvLmggYi9kcml2ZXJz L3N0YWdpbmcvd2Z4L2h3aW8uaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MDAwMC4uYzQ5MDAxNGMxZGY4DQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL3N0YWdpbmcv d2Z4L2h3aW8uaA0KQEAgLTAsMCArMSw0OCBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9ubHkgKi8NCisvKg0KKyAqIExvdy1sZXZlbCBBUEkuDQorICoNCisgKiBDb3B5 cmlnaHQgKGMpIDIwMTctMjAxOCwgU2lsaWNvbiBMYWJvcmF0b3JpZXMsIEluYy4NCisgKiBDb3B5 cmlnaHQgKGMpIDIwMTAsIFNULUVyaWNzc29uDQorICovDQorI2lmbmRlZiBXRlhfSFdJT19IDQor I2RlZmluZSBXRlhfSFdJT19IDQorDQorI2RlZmluZSBDRkdfRVJSX1NQSV9GUkFNRSAgICAgICAg ICAweDAwMDAwMDAxIC8vIG9ubHkgd2l0aCBTUEkNCisjZGVmaW5lIENGR19FUlJfU0RJT19CVUZf TUlTTUFUQ0ggIDB4MDAwMDAwMDEgLy8gb25seSB3aXRoIFNESU8NCisjZGVmaW5lIENGR19FUlJf QlVGX1VOREVSUlVOICAgICAgIDB4MDAwMDAwMDINCisjZGVmaW5lIENGR19FUlJfREFUQV9JTl9U T09fTEFSR0UgIDB4MDAwMDAwMDQNCisjZGVmaW5lIENGR19FUlJfSE9TVF9OT19PVVRfUVVFVUUg IDB4MDAwMDAwMDgNCisjZGVmaW5lIENGR19FUlJfQlVGX09WRVJSVU4gICAgICAgIDB4MDAwMDAw MTANCisjZGVmaW5lIENGR19FUlJfREFUQV9PVVRfVE9PX0xBUkdFIDB4MDAwMDAwMjANCisjZGVm aW5lIENGR19FUlJfSE9TVF9OT19JTl9RVUVVRSAgIDB4MDAwMDAwNDANCisjZGVmaW5lIENGR19F UlJfSE9TVF9DUkNfTUlTUyAgICAgIDB4MDAwMDAwODAgLy8gb25seSB3aXRoIFNESU8NCisjZGVm aW5lIENGR19TUElfSUdOT1JFX0NTICAgICAgICAgIDB4MDAwMDAwODAgLy8gb25seSB3aXRoIFNQ SQ0KKyNkZWZpbmUgQ0ZHX1dPUkRfTU9ERV9NQVNLICAgICAgICAgMHgwMDAwMDMwMCAvLyBCeXRl cyBvcmRlcmluZyAob25seSB3cml0YWJsZSBpbiBTUEkpOg0KKyNkZWZpbmUgICAgIENGR19XT1JE X01PREUwICAgICAgICAgMHgwMDAwMDAwMCAvLyAgIEIxLEIwLEIzLEIyIChJbiBTUEksIHJlZ2lz dGVyIGFkZHJlc3MgYW5kIENPTkZJRyBkYXRhIGFsd2F5cyB1c2UgdGhpcyBtb2RlKQ0KKyNkZWZp bmUgICAgIENGR19XT1JEX01PREUxICAgICAgICAgMHgwMDAwMDEwMCAvLyAgIEIzLEIyLEIxLEIw DQorI2RlZmluZSAgICAgQ0ZHX1dPUkRfTU9ERTIgICAgICAgICAweDAwMDAwMjAwIC8vICAgQjAs QjEsQjIsQjMgKFNESU8pDQorI2RlZmluZSBDRkdfRElSRUNUX0FDQ0VTU19NT0RFICAgICAweDAw MDAwNDAwIC8vIERpcmVjdCBvciBxdWV1ZSBhY2Nlc3MgbW9kZQ0KKyNkZWZpbmUgQ0ZHX1BSRUZF VENIX0FIQiAgICAgICAgICAgMHgwMDAwMDgwMA0KKyNkZWZpbmUgQ0ZHX0RJU0FCTEVfQ1BVX0NM SyAgICAgICAgMHgwMDAwMTAwMA0KKyNkZWZpbmUgQ0ZHX1BSRUZFVENIX1NSQU0gICAgICAgICAg MHgwMDAwMjAwMA0KKyNkZWZpbmUgQ0ZHX0NQVV9SRVNFVCAgICAgICAgICAgICAgMHgwMDAwNDAw MA0KKyNkZWZpbmUgQ0ZHX1NESU9fRElTQUJMRV9JUlEgICAgICAgMHgwMDAwODAwMCAvLyBvbmx5 IHdpdGggU0RJTw0KKyNkZWZpbmUgQ0ZHX0lSUV9FTkFCTEVfREFUQSAgICAgICAgMHgwMDAxMDAw MA0KKyNkZWZpbmUgQ0ZHX0lSUV9FTkFCTEVfV1JEWSAgICAgICAgMHgwMDAyMDAwMA0KKyNkZWZp bmUgQ0ZHX0NMS19SSVNFX0VER0UgICAgICAgICAgMHgwMDA0MDAwMA0KKyNkZWZpbmUgQ0ZHX1NE SU9fRElTQUJMRV9DUkNfQ0hLICAgMHgwMDA4MDAwMCAvLyBvbmx5IHdpdGggU0RJTw0KKyNkZWZp bmUgQ0ZHX1JFU0VSVkVEICAgICAgICAgICAgICAgMHgwMEYwMDAwMA0KKyNkZWZpbmUgQ0ZHX0RF VklDRV9JRF9NQUpPUiAgICAgICAgMHgwNzAwMDAwMA0KKyNkZWZpbmUgQ0ZHX0RFVklDRV9JRF9S RVNFUlZFRCAgICAgMHg3ODAwMDAwMA0KKyNkZWZpbmUgQ0ZHX0RFVklDRV9JRF9UWVBFICAgICAg ICAgMHg4MDAwMDAwMA0KKw0KKyNkZWZpbmUgQ1RSTF9ORVhUX0xFTl9NQVNLICAgMHgwMDAwMEZG Rg0KKyNkZWZpbmUgQ1RSTF9XTEFOX1dBS0VVUCAgICAgMHgwMDAwMTAwMA0KKyNkZWZpbmUgQ1RS TF9XTEFOX1JFQURZICAgICAgMHgwMDAwMjAwMA0KKw0KKyNkZWZpbmUgSUdQUl9SVyAgICAgICAg ICAweDgwMDAwMDAwDQorI2RlZmluZSBJR1BSX0lOREVYICAgICAgIDB4N0YwMDAwMDANCisjZGVm aW5lIElHUFJfVkFMVUUgICAgICAgMHgwMEZGRkZGRg0KKw0KKyNlbmRpZiAvKiBXRlhfSFdJT19I ICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9tYWluLmMgYi9kcml2ZXJzL3N0 YWdpbmcvd2Z4L21haW4uYw0KaW5kZXggY2Q2OWY5NTVmNTMxLi43NDQ0NDVlZjU5N2MgMTAwNjQ0 DQotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L21haW4uYw0KKysrIGIvZHJpdmVycy9zdGFnaW5n L3dmeC9tYWluLmMNCkBAIC0xMSwxMCArMTEsMTUgQEANCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDQt MjAwNiBKZWFuLUJhcHRpc3RlIE5vdGUgPGpibm90ZUBnbWFpbC5jb20+LCBldCBhbC4NCiAgKi8N CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQorI2luY2x1ZGUgPGxpbnV4L29mLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L2dwaW8uaD4NCisjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPg0K ICNpbmNsdWRlIDxsaW51eC9tbWMvc2Rpb19mdW5jLmg+DQogI2luY2x1ZGUgPGxpbnV4L3NwaS9z cGkuaD4NCiAjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4NCiANCisjaW5jbHVkZSAibWFp bi5oIg0KKyNpbmNsdWRlICJ3ZnguaCINCiAjaW5jbHVkZSAiYnVzLmgiDQogI2luY2x1ZGUgIndm eF92ZXJzaW9uLmgiDQogDQpAQCAtMjMsNiArMjgsNTQgQEAgTU9EVUxFX0FVVEhPUigiSsOpcsO0 bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPiIpOw0KIE1PRFVMRV9MSUNF TlNFKCJHUEwiKTsNCiBNT0RVTEVfVkVSU0lPTihXRlhfTEFCRUwpOw0KIA0KK3N0cnVjdCBncGlv X2Rlc2MgKndmeF9nZXRfZ3BpbyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBvdmVycmlkZSwgY29u c3QgY2hhciAqbGFiZWwpDQorew0KKwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXQ7DQorCWNoYXIgbGFi ZWxfYnVmWzI1Nl07DQorDQorCWlmIChvdmVycmlkZSA+PSAwKSB7DQorCQlzbnByaW50ZihsYWJl bF9idWYsIHNpemVvZihsYWJlbF9idWYpLCAid2Z4XyVzIiwgbGFiZWwpOw0KKwkJcmV0ID0gRVJS X1BUUihkZXZtX2dwaW9fcmVxdWVzdF9vbmUoZGV2LCBvdmVycmlkZSwgR1BJT0ZfT1VUX0lOSVRf TE9XLCBsYWJlbF9idWYpKTsNCisJCWlmICghcmV0KQ0KKwkJCXJldCA9IGdwaW9fdG9fZGVzYyhv dmVycmlkZSk7DQorCX0gZWxzZSBpZiAob3ZlcnJpZGUgPT0gLTEpIHsNCisJCXJldCA9IE5VTEw7 DQorCX0gZWxzZSB7DQorCQlyZXQgPSBkZXZtX2dwaW9kX2dldChkZXYsIGxhYmVsLCBHUElPRF9P VVRfTE9XKTsNCisJfQ0KKwlpZiAoSVNfRVJSKHJldCkgfHwgIXJldCkgew0KKwkJaWYgKCFyZXQg fHwgUFRSX0VSUihyZXQpID09IC1FTk9FTlQpDQorCQkJZGV2X3dhcm4oZGV2LCAiZ3BpbyAlcyBp cyBub3QgZGVmaW5lZFxuIiwgbGFiZWwpOw0KKwkJZWxzZQ0KKwkJCWRldl93YXJuKGRldiwgImVy cm9yIHdoaWxlIHJlcXVlc3RpbmcgZ3BpbyAlc1xuIiwgbGFiZWwpOw0KKwkJcmV0ID0gTlVMTDsN CisJfSBlbHNlIHsNCisJCWRldl9kYmcoZGV2LCAidXNpbmcgZ3BpbyAlZCBmb3IgJXNcbiIsIGRl c2NfdG9fZ3BpbyhyZXQpLCBsYWJlbCk7DQorCX0NCisJcmV0dXJuIHJldDsNCit9DQorDQorc3Ry dWN0IHdmeF9kZXYgKndmeF9pbml0X2NvbW1vbihzdHJ1Y3QgZGV2aWNlICpkZXYsDQorCQkJCWNv bnN0IHN0cnVjdCB3ZnhfcGxhdGZvcm1fZGF0YSAqcGRhdGEsDQorCQkJCWNvbnN0IHN0cnVjdCBo d2J1c19vcHMgKmh3YnVzX29wcywNCisJCQkJdm9pZCAqaHdidXNfcHJpdikNCit7DQorCXN0cnVj dCB3ZnhfZGV2ICp3ZGV2Ow0KKw0KKwl3ZGV2ID0gZGV2bV9rbWFsbG9jKGRldiwgc2l6ZW9mKCp3 ZGV2KSwgR0ZQX0tFUk5FTCk7DQorCWlmICghd2RldikNCisJCXJldHVybiBOVUxMOw0KKwl3ZGV2 LT5kZXYgPSBkZXY7DQorCXdkZXYtPmh3YnVzX29wcyA9IGh3YnVzX29wczsNCisJd2Rldi0+aHdi dXNfcHJpdiA9IGh3YnVzX3ByaXY7DQorCW1lbWNweSgmd2Rldi0+cGRhdGEsIHBkYXRhLCBzaXpl b2YoKnBkYXRhKSk7DQorCXJldHVybiB3ZGV2Ow0KK30NCisNCit2b2lkIHdmeF9mcmVlX2NvbW1v bihzdHJ1Y3Qgd2Z4X2RldiAqd2RldikNCit7DQorfQ0KKw0KIHN0YXRpYyBpbnQgX19pbml0IHdm eF9jb3JlX2luaXQodm9pZCkNCiB7DQogCWludCByZXQgPSAwOw0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvc3RhZ2luZy93ZngvbWFpbi5oIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9tYWluLmgNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjgyMjIyZWRmOTk4Yg0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9tYWluLmgNCkBAIC0wLDAgKzEsMzIg QEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQorLyoNCisg KiBEZXZpY2UgcHJvYmUgYW5kIHJlZ2lzdGVyLg0KKyAqDQorICogQ29weXJpZ2h0IChjKSAyMDE3 LTIwMTksIFNpbGljb24gTGFib3JhdG9yaWVzLCBJbmMuDQorICogQ29weXJpZ2h0IChjKSAyMDEw LCBTVC1Fcmljc3Nvbg0KKyAqIENvcHlyaWdodCAoYykgMjAwNiwgTWljaGFlbCBXdSA8ZmxhbWlu Z2ljZUBzb3VybWlsay5uZXQ+DQorICogQ29weXJpZ2h0IDIwMDQtMjAwNiBKZWFuLUJhcHRpc3Rl IE5vdGUgPGpibm90ZUBnbWFpbC5jb20+LCBldCBhbC4NCisgKi8NCisjaWZuZGVmIFdGWF9NQUlO X0gNCisjZGVmaW5lIFdGWF9NQUlOX0gNCisNCisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+DQor I2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4NCisNCisjaW5jbHVkZSAiYnVzLmgiDQor DQorc3RydWN0IHdmeF9kZXY7DQorDQorc3RydWN0IHdmeF9wbGF0Zm9ybV9kYXRhIHsNCit9Ow0K Kw0KK3N0cnVjdCB3ZnhfZGV2ICp3ZnhfaW5pdF9jb21tb24oc3RydWN0IGRldmljZSAqZGV2LA0K KwkJCQljb25zdCBzdHJ1Y3Qgd2Z4X3BsYXRmb3JtX2RhdGEgKnBkYXRhLA0KKwkJCQljb25zdCBz dHJ1Y3QgaHdidXNfb3BzICpod2J1c19vcHMsDQorCQkJCXZvaWQgKmh3YnVzX3ByaXYpOw0KK3Zv aWQgd2Z4X2ZyZWVfY29tbW9uKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KTsNCisNCitzdHJ1Y3QgZ3Bp b19kZXNjICp3ZnhfZ2V0X2dwaW8oc3RydWN0IGRldmljZSAqZGV2LCBpbnQgb3ZlcnJpZGUsDQor CQkJICAgICAgIGNvbnN0IGNoYXIgKmxhYmVsKTsNCisNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9k cml2ZXJzL3N0YWdpbmcvd2Z4L3dmeC5oIGIvZHJpdmVycy9zdGFnaW5nL3dmeC93ZnguaA0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uOTcxNmFjYzk4MWRmDQotLS0g L2Rldi9udWxsDQorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L3dmeC5oDQpAQCAtMCwwICsxLDI0 IEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLw0KKy8qDQor ICogQ29tbW9uIHByaXZhdGUgZGF0YSBmb3IgU2lsaWNvbiBMYWJzIFdGeCBjaGlwcy4NCisgKg0K KyAqIENvcHlyaWdodCAoYykgMjAxNy0yMDE5LCBTaWxpY29uIExhYm9yYXRvcmllcywgSW5jLg0K KyAqIENvcHlyaWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24NCisgKiBDb3B5cmlnaHQgKGMpIDIw MDYsIE1pY2hhZWwgV3UgPGZsYW1pbmdpY2VAc291cm1pbGsubmV0Pg0KKyAqIENvcHlyaWdodCAy MDA0LTIwMDYgSmVhbi1CYXB0aXN0ZSBOb3RlIDxqYm5vdGVAZ21haWwuY29tPiwgZXQgYWwuDQor ICovDQorI2lmbmRlZiBXRlhfSA0KKyNkZWZpbmUgV0ZYX0gNCisNCisjaW5jbHVkZSAibWFpbi5o Ig0KKw0KK3N0cnVjdCBod2J1c19vcHM7DQorDQorc3RydWN0IHdmeF9kZXYgew0KKwlzdHJ1Y3Qg d2Z4X3BsYXRmb3JtX2RhdGEgcGRhdGE7DQorCXN0cnVjdCBkZXZpY2UJCSpkZXY7DQorCWNvbnN0 IHN0cnVjdCBod2J1c19vcHMJKmh3YnVzX29wczsNCisJdm9pZAkJCSpod2J1c19wcml2Ow0KK307 DQorDQorI2VuZGlmIC8qIFdGWF9IICovDQotLSANCjIuMjAuMQ0K