From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1B525C28CC5 for ; Wed, 5 Jun 2019 23:25:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C170E2083E for ; Wed, 5 Jun 2019 23:25:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="mFjdRjgX" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726757AbfFEXY7 (ORCPT ); Wed, 5 Jun 2019 19:24:59 -0400 Received: from mail-eopbgr30054.outbound.protection.outlook.com ([40.107.3.54]:39078 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726502AbfFEXY7 (ORCPT ); Wed, 5 Jun 2019 19:24:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0GJ4+NPNZkhp+tsV/TisU3efCLXZdL1CA77P3AFXQ6E=; b=mFjdRjgXrtRzYjuO9uYX/sOeDRitsjlNpgZatCzxK/8hRAnHlRdxUk1CKNARep4u/s6csZZTKt637BfkBwYUwX3eyjNAevOMTNQoUv2E93eWB7laeof2nNnyZmvfwb/JYIVbI0egAv6wM+oO+8MrhUfWNr+wK+Gyyunp+70Ovxg= Received: from DB8PR05MB5898.eurprd05.prod.outlook.com (20.179.9.32) by DB8PR05MB6105.eurprd05.prod.outlook.com (20.179.10.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1943.22; Wed, 5 Jun 2019 23:24:46 +0000 Received: from DB8PR05MB5898.eurprd05.prod.outlook.com ([fe80::4008:6417:32d4:6031]) by DB8PR05MB5898.eurprd05.prod.outlook.com ([fe80::4008:6417:32d4:6031%5]) with mapi id 15.20.1965.011; Wed, 5 Jun 2019 23:24:46 +0000 From: Saeed Mahameed To: "David S. Miller" , Jason Gunthorpe , Doug Ledford CC: Michael Chan , Andy Gospodarek , Tal Gilboa , "linux-rdma@vger.kernel.org" , "netdev@vger.kernel.org" , Saeed Mahameed Subject: [for-next 6/9] linux/dim: Move implementation to .c files Thread-Topic: [for-next 6/9] linux/dim: Move implementation to .c files Thread-Index: AQHVG/XcnLxdIdYKNUGCQ0Gh9Gx6Gg== Date: Wed, 5 Jun 2019 23:24:46 +0000 Message-ID: <20190605232348.6452-7-saeedm@mellanox.com> References: <20190605232348.6452-1-saeedm@mellanox.com> In-Reply-To: <20190605232348.6452-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR02CA0045.namprd02.prod.outlook.com (2603:10b6:a03:54::22) To DB8PR05MB5898.eurprd05.prod.outlook.com (2603:10a6:10:a4::32) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ceba67cb-ff26-4736-e7c0-08d6ea0cfeee x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DB8PR05MB6105; x-ms-traffictypediagnostic: DB8PR05MB6105: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:758; x-forefront-prvs: 00594E8DBA x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(396003)(346002)(39850400004)(136003)(366004)(376002)(199004)(189003)(4326008)(316002)(5660300002)(2906002)(66946007)(53936002)(186003)(8936002)(66476007)(8676002)(81166006)(66446008)(1076003)(478600001)(86362001)(50226002)(81156014)(66556008)(14454004)(107886003)(6116002)(73956011)(7736002)(30864003)(305945005)(446003)(11346002)(64756008)(3846002)(53946003)(14444005)(71190400001)(99286004)(26005)(25786009)(110136005)(71200400001)(486006)(2616005)(68736007)(6512007)(66066001)(6436002)(76176011)(6486002)(54906003)(36756003)(6506007)(386003)(102836004)(256004)(476003)(52116002)(142923001)(559001)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:DB8PR05MB6105;H:DB8PR05MB5898.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 8X63+aAXi8KoKU7J1hiwkJYro0OTMBYjucJgFTzIxO6O7gC6Gc96dfRkJ/P6EfoQDWVeKTro3EZw3YdWIRa8/If59CV6wJWWqCi+rrAoR+ua1YdlcqQqL6nszxkLcArSoUwDU5j8cqAfE0n4bzi0BnDsT+KCweUoF1Km2xIUwZgvpUPyWmmE+M7DMttUxCc1btN8G5XWxVC2zGYl/Sx0Y30qGZ2Jyh8Ze0c90yVP2W6mbrMKwq0rBhQ9+ZuZWUg+s0R1DmoPw5+wAhtwAGKcjBekmbi+kSrQwwHG3QO79GJ0XMVZDaUtmVTUq8Zl/xwRtiNPiIYrwxhYCWkr+NcODYc/JuD3ZaDe0uWS1oZEl4xWRQuxISZgpZEJBtI49OEwLyu11LsEyUDy32z4+9ToxlMkONnLGw6XEfm7gkTsd9A= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: ceba67cb-ff26-4736-e7c0-08d6ea0cfeee X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jun 2019 23:24:46.1198 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: saeedm@mellanox.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR05MB6105 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org RnJvbTogVGFsIEdpbGJvYSA8dGFsZ2lAbWVsbGFub3guY29tPg0KDQpNb3ZlZCBhbGwgbG9naWMg ZnJvbSBkaW0uaCBhbmQgbmV0X2RpbS5oIHRvIGRpbS5jIGFuZCBuZXRfZGltLmMuDQpUaGlzIGlz IGJvdGggbW9yZSBzdHJ1Y3R1cmFsbHkgYXBwZWFsaW5nIGFuZCB3b3VsZCBhbGxvdyB0byBvbmx5 DQpleHBvc2UgZXh0ZXJuYWxseSB1c2VkIGZ1bmN0aW9ucy4NCg0KU2lnbmVkLW9mZi1ieTogVGFs IEdpbGJvYSA8dGFsZ2lAbWVsbGFub3guY29tPg0KU2lnbmVkLW9mZi1ieTogU2FlZWQgTWFoYW1l ZWQgPHNhZWVkbUBtZWxsYW5veC5jb20+DQotLS0NCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2Fk Y29tL0tjb25maWcgICAgICAgICB8ICAgMSArDQogLi4uL25ldC9ldGhlcm5ldC9tZWxsYW5veC9t bHg1L2NvcmUvS2NvbmZpZyAgIHwgICAxICsNCiBpbmNsdWRlL2xpbnV4L2RpbS5oICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAyMzggKysrKysrKysrKysrLS0tLS0tDQogaW5jbHVkZS9saW51 eC9uZXRfZGltLmggICAgICAgICAgICAgICAgICAgICAgIHwgMjE2ICsrKy0tLS0tLS0tLS0tLS0N CiBsaWIvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKw0K IGxpYi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQog bGliL2RpbS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICsNCiBs aWIvZGltL2RpbS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNzQgKysrKysr DQogbGliL2RpbS9uZXRfZGltLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTkxICsr KysrKysrKysrKysrDQogMTAgZmlsZXMgY2hhbmdlZCwgNDkxIGluc2VydGlvbnMoKyksIDI0OSBk ZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2RpbS9NYWtlZmlsZQ0KIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWIvZGltL2RpbS5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9kaW0v bmV0X2RpbS5jDQoNCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTDQppbmRl eCA1ZDRiODUyZDlkMzkuLmNiNjIxZDVjZjIyMyAxMDA2NDQNCi0tLSBhL01BSU5UQUlORVJTDQor KysgYi9NQUlOVEFJTkVSUw0KQEAgLTU1OTAsNiArNTU5MCw3IEBAIE06CVRhbCBHaWxib2EgPHRh bGdpQG1lbGxhbm94LmNvbT4NCiBTOglNYWludGFpbmVkDQogRjoJaW5jbHVkZS9saW51eC9uZXRf ZGltLmgNCiBGOglpbmNsdWRlL2xpbnV4L2RpbS5oDQorRjoJbGliL2RpbS8NCiANCiBEWiBERUNT VEFUSU9OIERaMTEgU0VSSUFMIERSSVZFUg0KIE06CSJNYWNpZWogVy4gUm96eWNraSIgPG1hY3Jv QGxpbnV4LW1pcHMub3JnPg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2Fk Y29tL0tjb25maWcgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnDQppbmRl eCBiMTIzNTA5ZDM4NWYuLjJlNGE4YzcyMzdlZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0 aGVybmV0L2Jyb2FkY29tL0tjb25maWcNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2Fk Y29tL0tjb25maWcNCkBAIC04LDYgKzgsNyBAQCBjb25maWcgTkVUX1ZFTkRPUl9CUk9BRENPTQ0K IAlkZWZhdWx0IHkNCiAJZGVwZW5kcyBvbiAoU1NCX1BPU1NJQkxFICYmIEhBU19ETUEpIHx8IFBD SSB8fCBCQ002M1hYIHx8IFwNCiAJCSAgIFNJQllURV9TQjF4eHhfU09DDQorCXNlbGVjdCBESU1M SUINCiAJLS0taGVscC0tLQ0KIAkgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNo aXBzZXQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsDQogCSAgc2F5IFkuDQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWcgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZw0KaW5kZXggMjM5MWUzY2Zi NTZiLi43ODQ1YWE1YmY2YmUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvS2NvbmZpZw0KKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFu b3gvbWx4NS9jb3JlL0tjb25maWcNCkBAIC0zNCw2ICszNCw3IEBAIGNvbmZpZyBNTFg1X0NPUkVf RU4NCiAJZGVwZW5kcyBvbiBORVRERVZJQ0VTICYmIEVUSEVSTkVUICYmIElORVQgJiYgUENJICYm IE1MWDVfQ09SRQ0KIAlkZXBlbmRzIG9uIElQVjY9eSB8fCBJUFY2PW4gfHwgTUxYNV9DT1JFPW0N CiAJc2VsZWN0IFBBR0VfUE9PTA0KKwlzZWxlY3QgRElNTElCDQogCWRlZmF1bHQgbg0KIAktLS1o ZWxwLS0tDQogCSAgRXRoZXJuZXQgc3VwcG9ydCBpbiBNZWxsYW5veCBUZWNobm9sb2dpZXMgQ29u bmVjdFgtNCBOSUMuDQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kaW0uaCBiL2luY2x1ZGUv bGludXgvZGltLmgNCmluZGV4IDYwZTUwNzRhN2NjMC4uYTZiZjg0ZjYxZGZiIDEwMDY0NA0KLS0t IGEvaW5jbHVkZS9saW51eC9kaW0uaA0KKysrIGIvaW5jbHVkZS9saW51eC9kaW0uaA0KQEAgLTYs MjAgKzYsNDkgQEANCiANCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQogDQorLyoqDQorICog TnVtYmVyIG9mIGV2ZW50cyBiZXR3ZWVuIERJTSBpdGVyYXRpb25zLg0KKyAqIENhdXNlcyBhIG1v ZGVyYXRpb24gb2YgdGhlIGFsZ29yaXRobSBydW4uDQorICovDQogI2RlZmluZSBESU1fTkVWRU5U UyA2NA0KIA0KLS8qIG1vcmUgdGhhbiAxMCUgZGlmZmVyZW5jZSAqLw0KKy8qKg0KKyAqIElzIGEg ZGlmZmVyZW5jZSBiZXR3ZWVuIHZhbHVlcyBqdXN0aWZpZXMgdGFraW5nIGFuIGFjdGlvbi4NCisg KiBXZSBjb25zaWRlciAxMCUgZGlmZmVyZW5jZSBhcyBzaWduaWZpY2FudC4NCisgKi8NCiAjZGVm aW5lIElTX1NJR05JRklDQU5UX0RJRkYodmFsLCByZWYpIFwNCiAJKCgoMTAwVUwgKiBhYnMoKHZh bCkgLSAocmVmKSkpIC8gKHJlZikpID4gMTApDQotI2RlZmluZSBCSVRfR0FQKGJpdHMsIGVuZCwg c3RhcnQpICgoKChlbmQpIC0gKHN0YXJ0KSkgKyBCSVRfVUxMKGJpdHMpKSBcDQotJiAoQklUX1VM TChiaXRzKSAtIDEpKQ0KIA0KKy8qKg0KKyAqIENhbGN1bGF0ZSB0aGUgZ2FwIGJldHdlZW4gdHdv IHZhbHVlcy4NCisgKiBUYWtlIHdyYXAtYXJvdW5kIGFuZCB2YXJpYWJsZSBzaXplIGludG8gY29u c2lkZXJhdGlvbi4NCisgKi8NCisjZGVmaW5lIEJJVF9HQVAoYml0cywgZW5kLCBzdGFydCkgKCgo KGVuZCkgLSAoc3RhcnQpKSArIEJJVF9VTEwoYml0cykpIFwNCisJCSYgKEJJVF9VTEwoYml0cykg LSAxKSkNCisNCisvKioNCisgKiBTdHJ1Y3R1cmUgZm9yIENRIG1vZGVyYXRpb24gdmFsdWVzLg0K KyAqIFVzZWQgZm9yIGNvbW11bmljYXRpb25zIGJldHdlZW4gRElNIGFuZCBpdHMgY29uc3VtZXIu DQorICoNCisgKiBAdXNlYzogQ1EgdGltZXIgc3VnZ2VzdGlvbiAoYnkgRElNKQ0KKyAqIEBwa3Rz OiBDUSBwYWNrZXQgY291bnRlciBzdWdnZXN0aW9uIChieSBESU0pDQorICogQGNxX3BlcmlvZF9t b2RlOiBDUSBwcmlvZCBjb3VudCBtb2RlIChmcm9tIENRRS9FUUUpDQorICovDQogc3RydWN0IGRp bV9jcV9tb2RlciB7DQogCXUxNiB1c2VjOw0KIAl1MTYgcGt0czsNCiAJdTggY3FfcGVyaW9kX21v ZGU7DQogfTsNCiANCisvKioNCisgKiBTdHJ1Y3R1cmUgZm9yIERJTSBzYW1wbGUgZGF0YS4NCisg KiBVc2VkIGZvciBjb21tdW5pY2F0aW9ucyBiZXR3ZWVuIERJTSBhbmQgaXRzIGNvbnN1bWVyLg0K KyAqDQorICogQHRpbWU6IFNhbXBsZSB0aW1lc3RhbXANCisgKiBAcGt0X2N0cjogTnVtYmVyIG9m IHBhY2tldHMNCisgKiBAYnl0ZV9jdHI6IE51bWJlciBvZiBieXRlcw0KKyAqIEBldmVudF9jdHI6 IE51bWJlciBvZiBldmVudHMNCisgKi8NCiBzdHJ1Y3QgZGltX3NhbXBsZSB7DQogCWt0aW1lX3Qg dGltZTsNCiAJdTMyIHBrdF9jdHI7DQpAQCAtMjcsMTMgKzU2LDM2IEBAIHN0cnVjdCBkaW1fc2Ft cGxlIHsNCiAJdTE2IGV2ZW50X2N0cjsNCiB9Ow0KIA0KKy8qKg0KKyAqIFN0cnVjdHVyZSBmb3Ig RElNIHN0YXRzLg0KKyAqIFVzZWQgZm9yIGhvbGRpbmcgY3VycmVudCBtZWFzdXJlZCByYXRlcy4N CisgKg0KKyAqIEBwcG1zOiBQYWNrZXRzIHBlciBtc2VjDQorICogQGJwbXM6IEJ5dGVzIHBlciBt c2VjDQorICogQGVwbXM6IEV2ZW50cyBwZXIgbXNlYw0KKyAqLw0KIHN0cnVjdCBkaW1fc3RhdHMg ew0KLQlpbnQgcHBtczsgLyogcGFja2V0cyBwZXIgbXNlYyAqLw0KLQlpbnQgYnBtczsgLyogYnl0 ZXMgcGVyIG1zZWMgKi8NCi0JaW50IGVwbXM7IC8qIGV2ZW50cyBwZXIgbXNlYyAqLw0KKwlpbnQg cHBtczsNCisJaW50IGJwbXM7DQorCWludCBlcG1zOw0KIH07DQogDQotc3RydWN0IGRpbSB7IC8q IER5bmFtaWMgSW50ZXJydXB0IE1vZGVyYXRpb24gKi8NCisvKioNCisgKiBNYWluIHN0cnVjdHVy ZSBmb3IgZHluYW1pYyBpbnRlcnJ1cHQgbW9kZXJhdGlvbiAoRElNKS4NCisgKiBVc2VkIGZvciBo b2xkaW5nIGFsbCBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIERJTSBpbnN0YW5jZS4NCisg Kg0KKyAqIEBzdGF0ZTogQWxnb3JpdGhtIHN0YXRlIChzZWUgYmVsb3cpDQorICogQHByZXZfc3Rh dHM6IE1lYXN1cmVkIHJhdGVzIGZyb20gcHJldmlvdXMgaXRlcmF0aW9uIChmb3IgY29tcGFyaXNv bikNCisgKiBAc3RhcnRfc2FtcGxlOiBTYW1wbGVkIGRhdGEgYXQgc3RhcnQgb2YgY3VycmVudCBp dGVyYXRpb24NCisgKiBAd29yazogV29yayB0byBwZXJmb3JtIG9uIGFjdGlvbiByZXF1aXJlZA0K KyAqIEBwcm9maWxlX2l4OiBDdXJyZW50IG1vZGVyYXRpb24gcHJvZmlsZQ0KKyAqIEBtb2RlOiBD USBwZXJpb2QgY291bnQgbW9kZQ0KKyAqIEB0dW5lX3N0YXRlOiBBbGdvcml0aG0gdHVuaW5nIHN0 YXRlIChzZWUgYmVsb3cpDQorICogQHN0ZXBzX3JpZ2h0OiBOdW1iZXIgb2Ygc3RlcHMgdGFrZW4g dG93YXJkcyBoaWdoZXIgbW9kZXJhdGlvbg0KKyAqIEBzdGVwc19sZWZ0OiBOdW1iZXIgb2Ygc3Rl cHMgdGFrZW4gdG93YXJkcyBsb3dlciBtb2RlcmF0aW9uDQorICogQHRpcmVkOiBQYXJraW5nIGRl cHRoIGNvdW50ZXINCisgKi8NCitzdHJ1Y3QgZGltIHsNCiAJdTggc3RhdGU7DQogCXN0cnVjdCBk aW1fc3RhdHMgcHJldl9zdGF0czsNCiAJc3RydWN0IGRpbV9zYW1wbGUgc3RhcnRfc2FtcGxlOw0K QEAgLTQ2LDE4ICs5OCw0OSBAQCBzdHJ1Y3QgZGltIHsgLyogRHluYW1pYyBJbnRlcnJ1cHQgTW9k ZXJhdGlvbiAqLw0KIAl1OCB0aXJlZDsNCiB9Ow0KIA0KKy8qKg0KKyAqIGVudW0gZGltX2NxX3Bl cmlvZF9tb2RlDQorICoNCisgKiBUaGVzZSBhcmUgdGhlIG1vZGVzIGZvciBDUSBwZXJpb2QgY291 bnQuDQorICoNCisgKiBARElNX0NRX1BFUklPRF9NT0RFX1NUQVJUX0ZST01fRVFFOiBTdGFydCBj b3VudGluZyBmcm9tIEVRRQ0KKyAqIEBESU1fQ1FfUEVSSU9EX01PREVfU1RBUlRfRlJPTV9DUUU6 IFN0YXJ0IGNvdW50aW5nIGZyb20gQ1FFIChpbXBsaWVzIHRpbWVyIHJlc2V0KQ0KKyAqIEBESU1f Q1FfUEVSSU9EX05VTV9NT0RFUzogTnVtYmVyIG9mIG1vZGVzDQorICovDQogZW51bSB7DQogCURJ TV9DUV9QRVJJT0RfTU9ERV9TVEFSVF9GUk9NX0VRRSA9IDB4MCwNCiAJRElNX0NRX1BFUklPRF9N T0RFX1NUQVJUX0ZST01fQ1FFID0gMHgxLA0KIAlESU1fQ1FfUEVSSU9EX05VTV9NT0RFUw0KIH07 DQogDQorLyoqDQorICogZW51bSBkaW1fc3RhdGUNCisgKg0KKyAqIFRoZXNlIGFyZSB0aGUgRElN IGFsZ29yaXRobSBzdGF0ZXMuDQorICogVGhlc2Ugd2lsbCBkZXRlcm1pbmUgaWYgdGhlIGFsZ29y aXRobSBpcyBpbiBhIHZhbGlkIHN0YXRlIHRvIHN0YXJ0IGFuIGl0ZXJhdGlvbi4NCisgKg0KKyAq IEBESU1fU1RBUlRfTUVBU1VSRTogVGhpcyBpcyB0aGUgZmlyc3QgaXRlcmF0aW9uIChhbHNvIGFm dGVyIGFwcGx5aW5nIGEgbmV3IHByb2ZpbGUpDQorICogQERJTV9NRUFTVVJFX0lOX1BST0dSRVNT OiBBbGdvcml0aG0gaXMgYWxyZWFkeSBpbiBwcm9ncmVzcyAtIGNoZWNrIGlmDQorICogbmVlZCB0 byBwZXJmb3JtIGFuIGFjdGlvbg0KKyAqIEBESU1fQVBQTFlfTkVXX1BST0ZJTEU6IERJTSBjb25z dW1lciBpcyBjdXJyZW50bHkgYXBwbHlpbmcgYSBwcm9maWxlIC0gbm8gbmVlZCB0byBtZWFzdXJl DQorICovDQogZW51bSB7DQogCURJTV9TVEFSVF9NRUFTVVJFLA0KIAlESU1fTUVBU1VSRV9JTl9Q Uk9HUkVTUywNCiAJRElNX0FQUExZX05FV19QUk9GSUxFLA0KIH07DQogDQorLyoqDQorICogZW51 bSBkaW1fdHVuZV9zdGF0ZQ0KKyAqDQorICogVGhlc2UgYXJlIHRoZSBESU0gYWxnb3JpdGhtIHR1 bmUgc3RhdGVzLg0KKyAqIFRoZXNlIHdpbGwgZGV0ZXJtaW5lIHdoaWNoIGFjdGlvbiB0aGUgYWxn b3JpdGhtIHNob3VsZCBwZXJmb3JtLg0KKyAqDQorICogQERJTV9QQVJLSU5HX09OX1RPUDogQWxn b3JpdGhtIGZvdW5kIGEgbG9jYWwgdG9wIHBvaW50IC0gZXhpdCBvbiBzaWduaWZpY2FudCBkaWZm ZXJlbmNlDQorICogQERJTV9QQVJLSU5HX1RJUkVEOiBBbGdvcml0aG0gZm91bmQgYSBkZWVwIHRv cCBwb2ludCAtIGRvbid0IGV4aXQgaWYgdGlyZWQgPiAwDQorICogQERJTV9HT0lOR19SSUdIVDog QWxnb3JpdGhtIGlzIGN1cnJlbnRseSB0cnlpbmcgaGlnaGVyIG1vZGVyYXRpb24gbGV2ZWxzDQor ICogQERJTV9HT0lOR19MRUZUOiBBbGdvcml0aG0gaXMgY3VycmVudGx5IHRyeWluZyBsb3dlciBt b2RlcmF0aW9uIGxldmVscw0KKyAqLw0KIGVudW0gew0KIAlESU1fUEFSS0lOR19PTl9UT1AsDQog CURJTV9QQVJLSU5HX1RJUkVELA0KQEAgLTY1LDYzICsxNDgsOTUgQEAgZW51bSB7DQogCURJTV9H T0lOR19MRUZULA0KIH07DQogDQorLyoqDQorICogZW51bSBkaW1fc3RhdHNfc3RhdGUNCisgKg0K KyAqIFRoZXNlIGFyZSB0aGUgRElNIGFsZ29yaXRobSBzdGF0aXN0aWNzIHN0YXRlcy4NCisgKiBU aGVzZSB3aWxsIGRldGVybWluZSB0aGUgdmVyZGljdCBvZiBjdXJyZW50IGl0ZXJhdGlvbi4NCisg Kg0KKyAqIEBESU1fU1RBVFNfV09SU0U6IEN1cnJlbnQgaXRlcmF0aW9uIHNob3dzIHdvcnNlIHBl cmZvcm1hbmNlIHRoYW4gYmVmb3JlDQorICogQERJTV9TVEFUU19XT1JTRTogQ3VycmVudCBpdGVy YXRpb24gc2hvd3Mgc2FtZSBwZXJmb3JtYW5jZSB0aGFuIGJlZm9yZQ0KKyAqIEBESU1fU1RBVFNf V09SU0U6IEN1cnJlbnQgaXRlcmF0aW9uIHNob3dzIGJldHRlciBwZXJmb3JtYW5jZSB0aGFuIGJl Zm9yZQ0KKyAqLw0KIGVudW0gew0KIAlESU1fU1RBVFNfV09SU0UsDQogCURJTV9TVEFUU19TQU1F LA0KIAlESU1fU1RBVFNfQkVUVEVSLA0KIH07DQogDQorLyoqDQorICogZW51bSBkaW1fc3RlcF9y ZXN1bHQNCisgKg0KKyAqIFRoZXNlIGFyZSB0aGUgRElNIGFsZ29yaXRobSBzdGVwIHJlc3VsdHMu DQorICogVGhlc2UgZGVzY3JpYmUgdGhlIHJlc3VsdCBvZiBhIHN0ZXAuDQorICoNCisgKiBARElN X1NURVBQRUQ6IFBlcmZvcm1lZCBhIHJlZ3VsYXIgc3RlcA0KKyAqIEBESU1fVE9PX1RJUkVEOiBT YW1lIGtpbmQgb2Ygc3RlcCB3YXMgZG9uZSBtdWx0aXBsZSB0aW1lcyAtIHNob3VsZCBnbyB0bw0K KyAqIHRpcmVkIHBhcmtpbmcNCisgKiBARElNX09OX0VER0U6IFN0ZXBwZWQgdG8gdGhlIG1vc3Qg bGVmdC9yaWdodCBwcm9maWxlDQorICovDQogZW51bSB7DQogCURJTV9TVEVQUEVELA0KIAlESU1f VE9PX1RJUkVELA0KIAlESU1fT05fRURHRSwNCiB9Ow0KIA0KLXN0YXRpYyBpbmxpbmUgYm9vbCBk aW1fb25fdG9wKHN0cnVjdCBkaW0gKmRpbSkNCi17DQotCXN3aXRjaCAoZGltLT50dW5lX3N0YXRl KSB7DQotCWNhc2UgRElNX1BBUktJTkdfT05fVE9QOg0KLQljYXNlIERJTV9QQVJLSU5HX1RJUkVE Og0KLQkJcmV0dXJuIHRydWU7DQotCWNhc2UgRElNX0dPSU5HX1JJR0hUOg0KLQkJcmV0dXJuIChk aW0tPnN0ZXBzX2xlZnQgPiAxKSAmJiAoZGltLT5zdGVwc19yaWdodCA9PSAxKTsNCi0JZGVmYXVs dDogLyogRElNX0dPSU5HX0xFRlQgKi8NCi0JCXJldHVybiAoZGltLT5zdGVwc19yaWdodCA+IDEp ICYmIChkaW0tPnN0ZXBzX2xlZnQgPT0gMSk7DQotCX0NCi19DQotDQotc3RhdGljIGlubGluZSB2 b2lkIGRpbV90dXJuKHN0cnVjdCBkaW0gKmRpbSkNCi17DQotCXN3aXRjaCAoZGltLT50dW5lX3N0 YXRlKSB7DQotCWNhc2UgRElNX1BBUktJTkdfT05fVE9QOg0KLQljYXNlIERJTV9QQVJLSU5HX1RJ UkVEOg0KLQkJYnJlYWs7DQotCWNhc2UgRElNX0dPSU5HX1JJR0hUOg0KLQkJZGltLT50dW5lX3N0 YXRlID0gRElNX0dPSU5HX0xFRlQ7DQotCQlkaW0tPnN0ZXBzX2xlZnQgPSAwOw0KLQkJYnJlYWs7 DQotCWNhc2UgRElNX0dPSU5HX0xFRlQ6DQotCQlkaW0tPnR1bmVfc3RhdGUgPSBESU1fR09JTkdf UklHSFQ7DQotCQlkaW0tPnN0ZXBzX3JpZ2h0ID0gMDsNCi0JCWJyZWFrOw0KLQl9DQotfQ0KLQ0K LXN0YXRpYyBpbmxpbmUgdm9pZCBkaW1fcGFya19vbl90b3Aoc3RydWN0IGRpbSAqZGltKQ0KLXsN Ci0JZGltLT5zdGVwc19yaWdodCAgPSAwOw0KLQlkaW0tPnN0ZXBzX2xlZnQgICA9IDA7DQotCWRp bS0+dGlyZWQgICAgICAgID0gMDsNCi0JZGltLT50dW5lX3N0YXRlICAgPSBESU1fUEFSS0lOR19P Tl9UT1A7DQotfQ0KLQ0KLXN0YXRpYyBpbmxpbmUgdm9pZCBkaW1fcGFya190aXJlZChzdHJ1Y3Qg ZGltICpkaW0pDQotew0KLQlkaW0tPnN0ZXBzX3JpZ2h0ICA9IDA7DQotCWRpbS0+c3RlcHNfbGVm dCAgID0gMDsNCi0JZGltLT50dW5lX3N0YXRlICAgPSBESU1fUEFSS0lOR19USVJFRDsNCi19DQot DQorLyoqDQorICoJZGltX29uX3RvcCAtIGNoZWNrIGlmIGN1cnJlbnQgc3RhdGUgaXMgYSBnb29k IHBsYWNlIHRvIHN0b3AgKHRvcCBsb2NhdGlvbikNCisgKglAZGltOiBESU0gY29udGV4dA0KKyAq DQorICogQ2hlY2sgaWYgY3VycmVudCBwcm9maWxlIGlzIGEgZ29vZCBwbGFjZSB0byBwYXJrIGF0 Lg0KKyAqIFRoaXMgd2lsbCByZXN1bHQgaW4gcmVkdWNpbmcgdGhlIERJTSBjaGVja3MgZnJlcXVl bmN5IGFzIHdlIGFzc3VtZSB3ZQ0KKyAqIHNob3VsZG4ndCBwcm9iYWJseSBjaGFuZ2UgcHJvZmls ZXMsIHVubGVzcyB0cmFmZmljIHBhdHRlcm4gd2Fzbid0IGNoYW5nZWQuDQorICovDQorYm9vbCBk aW1fb25fdG9wKHN0cnVjdCBkaW0gKmRpbSk7DQorDQorLyoqDQorICoJZGltX3R1cm4gLSBjaGFu Z2UgcHJvZmlsZSBhbHRlcm5pbmcgZGlyZWN0aW9uDQorICoJQGRpbTogRElNIGNvbnRleHQNCisg Kg0KKyAqIEdvIGxlZnQgaWYgd2Ugd2VyZSBnb2luZyByaWdodCBhbmQgdmljZS12ZXJzYS4NCisg KiBEbyBub3RoaW5nIGlmIGN1cnJlbnRseSBwYXJraW5nLg0KKyAqLw0KK3ZvaWQgZGltX3R1cm4o c3RydWN0IGRpbSAqZGltKTsNCisNCisvKioNCisgKglkaW1fcGFya19vbl90b3AgLSBlbnRlciBh IHBhcmtpbmcgc3RhdGUgb24gYSB0b3AgbG9jYXRpb24NCisgKglAZGltOiBESU0gY29udGV4dA0K KyAqDQorICogRW50ZXIgcGFya2luZyBzdGF0ZS4NCisgKiBDbGVhciBhbGwgbW92ZW1lbnQgaGlz dG9yeS4NCisgKi8NCit2b2lkIGRpbV9wYXJrX29uX3RvcChzdHJ1Y3QgZGltICpkaW0pOw0KKw0K Ky8qKg0KKyAqCWRpbV9wYXJrX3RpcmVkIC0gZW50ZXIgYSB0aXJlZCBwYXJraW5nIHN0YXRlDQor ICoJQGRpbTogRElNIGNvbnRleHQNCisgKg0KKyAqIEVudGVyIHBhcmtpbmcgc3RhdGUuDQorICog Q2xlYXIgYWxsIG1vdmVtZW50IGhpc3RvcnkgYW5kIGNhdXNlIERJTSBjaGVja3MgZnJlcXVlbmN5 IHRvIHJlZHVjZS4NCisgKi8NCit2b2lkIGRpbV9wYXJrX3RpcmVkKHN0cnVjdCBkaW0gKmRpbSk7 DQorDQorLyoqDQorICoJZGltX2NhbGNfc3RhdHMgLSBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2Ug YmV0d2VlbiB0d28gc2FtcGxlcw0KKyAqCUBzdGFydDogc3RhcnQgc2FtcGxlDQorICoJQGVuZDog ZW5kIHNhbXBsZQ0KKyAqCUBjdXJyX3N0YXRzOiBkZWx0YSBiZXR3ZWVuIHNhbXBsZXMNCisgKg0K KyAqIENhbGN1bGF0ZSB0aGUgZGVsdGEgYmV0d2VlbiB0d28gc2FtcGxlcyAoaW4gZGF0YSByYXRl cykuDQorICogVGFrZXMgaW50byBjb25zaWRlcmF0aW9uIGNvdW50ZXIgd3JhcC1hcm91bmQuDQor ICovDQordm9pZCBkaW1fY2FsY19zdGF0cyhzdHJ1Y3QgZGltX3NhbXBsZSAqc3RhcnQsIHN0cnVj dCBkaW1fc2FtcGxlICplbmQsDQorCQkgICAgc3RydWN0IGRpbV9zdGF0cyAqY3Vycl9zdGF0cyk7 DQorDQorLyoqDQorICoJZGltX3VwZGF0ZV9zYW1wbGUgLSBzZXQgYSBzYW1wbGUncyBmaWVsZHMg d2l0aCBnaXZlIHZhbHVlcw0KKyAqCUBldmVudF9jdHI6IG51bWJlciBvZiBldmVudHMgdG8gc2V0 DQorICoJQHBhY2tldHM6IG51bWJlciBvZiBwYWNrZXRzIHRvIHNldA0KKyAqCUBieXRlczogbnVt YmVyIG9mIGJ5dGVzIHRvIHNldA0KKyAqCUBzOiBESU0gc2FtcGxlDQorICovDQogc3RhdGljIGlu bGluZSB2b2lkDQogZGltX3VwZGF0ZV9zYW1wbGUodTE2IGV2ZW50X2N0ciwgdTY0IHBhY2tldHMs IHU2NCBieXRlcywgc3RydWN0IGRpbV9zYW1wbGUgKnMpDQogew0KQEAgLTEzMSwyMyArMjQ2LDQg QEAgZGltX3VwZGF0ZV9zYW1wbGUodTE2IGV2ZW50X2N0ciwgdTY0IHBhY2tldHMsIHU2NCBieXRl cywgc3RydWN0IGRpbV9zYW1wbGUgKnMpDQogCXMtPmV2ZW50X2N0ciA9IGV2ZW50X2N0cjsNCiB9 DQogDQotc3RhdGljIGlubGluZSB2b2lkDQotZGltX2NhbGNfc3RhdHMoc3RydWN0IGRpbV9zYW1w bGUgKnN0YXJ0LCBzdHJ1Y3QgZGltX3NhbXBsZSAqZW5kLA0KLQkgICAgICAgc3RydWN0IGRpbV9z dGF0cyAqY3Vycl9zdGF0cykNCi17DQotCS8qIHUzMiBob2xkcyB1cCB0byA3MSBtaW51dGVzLCBz aG91bGQgYmUgZW5vdWdoICovDQotCXUzMiBkZWx0YV91cyA9IGt0aW1lX3VzX2RlbHRhKGVuZC0+ dGltZSwgc3RhcnQtPnRpbWUpOw0KLQl1MzIgbnBrdHMgPSBCSVRfR0FQKEJJVFNfUEVSX1RZUEUo dTMyKSwgZW5kLT5wa3RfY3RyLCBzdGFydC0+cGt0X2N0cik7DQotCXUzMiBuYnl0ZXMgPSBCSVRf R0FQKEJJVFNfUEVSX1RZUEUodTMyKSwgZW5kLT5ieXRlX2N0ciwNCi0JCQkgICAgIHN0YXJ0LT5i eXRlX2N0cik7DQotDQotCWlmICghZGVsdGFfdXMpDQotCQlyZXR1cm47DQotDQotCWN1cnJfc3Rh dHMtPnBwbXMgPSBESVZfUk9VTkRfVVAobnBrdHMgKiBVU0VDX1BFUl9NU0VDLCBkZWx0YV91cyk7 DQotCWN1cnJfc3RhdHMtPmJwbXMgPSBESVZfUk9VTkRfVVAobmJ5dGVzICogVVNFQ19QRVJfTVNF QywgZGVsdGFfdXMpOw0KLQljdXJyX3N0YXRzLT5lcG1zID0gRElWX1JPVU5EX1VQKERJTV9ORVZF TlRTICogVVNFQ19QRVJfTVNFQywNCi0JCQkJCWRlbHRhX3VzKTsNCi19DQotDQogI2VuZGlmIC8q IERJTV9IICovDQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRfZGltLmggYi9pbmNsdWRl L2xpbnV4L25ldF9kaW0uaA0KaW5kZXggNGUwMDllYzE5M2VmLi5lMzI3OGNiOGMzOTIgMTAwNjQ0 DQotLS0gYS9pbmNsdWRlL2xpbnV4L25ldF9kaW0uaA0KKysrIGIvaW5jbHVkZS9saW51eC9uZXRf ZGltLmgNCkBAIC0zNywxNCArMzcsMTggQEANCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQog I2luY2x1ZGUgPGxpbnV4L2RpbS5oPg0KIA0KKy8qDQorICogTmV0IERJTSBwcm9maWxlczoNCisg KiAgICAgICAgVGhlcmUgYXJlIGRpZmZlcmVudCBzZXQgb2YgcHJvZmlsZXMgZm9yIGVhY2ggQ1Eg cGVyaW9kIG1vZGUuDQorICogICAgICAgIFRoZXJlIGFyZSBkaWZmZXJlbnQgc2V0IG9mIHByb2Zp bGVzIGZvciBSWC9UWCBDUXMuDQorICogICAgICAgIEVhY2ggcHJvZmlsZSBzaXplIG11c3QgYmUg b2YgTkVUX0RJTV9QQVJBTVNfTlVNX1BST0ZJTEVTDQorICovDQogI2RlZmluZSBORVRfRElNX1BB UkFNU19OVU1fUFJPRklMRVMgNQ0KLS8qIE5ldGRldiBkeW5hbWljIGludGVycnVwdCBtb2RlcmF0 aW9uIHByb2ZpbGVzICovDQogI2RlZmluZSBORVRfRElNX0RFRkFVTFRfUlhfQ1FfTU9ERVJBVElP Tl9QS1RTX0ZST01fRVFFIDI1Ng0KICNkZWZpbmUgTkVUX0RJTV9ERUZBVUxUX1RYX0NRX01PREVS QVRJT05fUEtUU19GUk9NX0VRRSAxMjgNCiAjZGVmaW5lIE5FVF9ESU1fREVGX1BST0ZJTEVfQ1FF IDENCiAjZGVmaW5lIE5FVF9ESU1fREVGX1BST0ZJTEVfRVFFIDENCiANCi0vKiBBbGwgcHJvZmls ZXMgc2l6ZXMgbXVzdCBiZSBORVRfUEFSQU1TX0RJTV9OVU1fUFJPRklMRVMgKi8NCiAjZGVmaW5l IE5FVF9ESU1fUlhfRVFFX1BST0ZJTEVTIHsgXA0KIAl7MSwgICBORVRfRElNX0RFRkFVTFRfUlhf Q1FfTU9ERVJBVElPTl9QS1RTX0ZST01fRVFFfSwgXA0KIAl7OCwgICBORVRfRElNX0RFRkFVTFRf UlhfQ1FfTU9ERVJBVElPTl9QS1RTX0ZST01fRVFFfSwgXA0KQEAgLTg5LDE4NSArOTMsNDEgQEAg dHhfcHJvZmlsZVtESU1fQ1FfUEVSSU9EX05VTV9NT0RFU11bTkVUX0RJTV9QQVJBTVNfTlVNX1BS T0ZJTEVTXSA9IHsNCiAJTkVUX0RJTV9UWF9DUUVfUFJPRklMRVMsDQogfTsNCiANCi1zdGF0aWMg aW5saW5lIHN0cnVjdCBkaW1fY3FfbW9kZXINCi1uZXRfZGltX2dldF9yeF9tb2RlcmF0aW9uKHU4 IGNxX3BlcmlvZF9tb2RlLCBpbnQgaXgpDQotew0KLQlzdHJ1Y3QgZGltX2NxX21vZGVyIGNxX21v ZGVyID0gcnhfcHJvZmlsZVtjcV9wZXJpb2RfbW9kZV1baXhdOw0KLQ0KLQljcV9tb2Rlci5jcV9w ZXJpb2RfbW9kZSA9IGNxX3BlcmlvZF9tb2RlOw0KLQlyZXR1cm4gY3FfbW9kZXI7DQotfQ0KLQ0K LXN0YXRpYyBpbmxpbmUgc3RydWN0IGRpbV9jcV9tb2Rlcg0KLW5ldF9kaW1fZ2V0X2RlZl9yeF9t b2RlcmF0aW9uKHU4IGNxX3BlcmlvZF9tb2RlKQ0KLXsNCi0JdTggcHJvZmlsZV9peCA9IGNxX3Bl cmlvZF9tb2RlID09IERJTV9DUV9QRVJJT0RfTU9ERV9TVEFSVF9GUk9NX0NRRSA/DQotCQkJTkVU X0RJTV9ERUZfUFJPRklMRV9DUUUgOiBORVRfRElNX0RFRl9QUk9GSUxFX0VRRTsNCi0NCi0JcmV0 dXJuIG5ldF9kaW1fZ2V0X3J4X21vZGVyYXRpb24oY3FfcGVyaW9kX21vZGUsIHByb2ZpbGVfaXgp Ow0KLX0NCi0NCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBkaW1fY3FfbW9kZXINCi1uZXRfZGltX2dl dF90eF9tb2RlcmF0aW9uKHU4IGNxX3BlcmlvZF9tb2RlLCBpbnQgaXgpDQotew0KLQlzdHJ1Y3Qg ZGltX2NxX21vZGVyIGNxX21vZGVyID0gdHhfcHJvZmlsZVtjcV9wZXJpb2RfbW9kZV1baXhdOw0K LQ0KLQljcV9tb2Rlci5jcV9wZXJpb2RfbW9kZSA9IGNxX3BlcmlvZF9tb2RlOw0KLQlyZXR1cm4g Y3FfbW9kZXI7DQotfQ0KLQ0KLXN0YXRpYyBpbmxpbmUgc3RydWN0IGRpbV9jcV9tb2Rlcg0KLW5l dF9kaW1fZ2V0X2RlZl90eF9tb2RlcmF0aW9uKHU4IGNxX3BlcmlvZF9tb2RlKQ0KLXsNCi0JdTgg cHJvZmlsZV9peCA9IGNxX3BlcmlvZF9tb2RlID09IERJTV9DUV9QRVJJT0RfTU9ERV9TVEFSVF9G Uk9NX0NRRSA/DQotCQkJTkVUX0RJTV9ERUZfUFJPRklMRV9DUUUgOiBORVRfRElNX0RFRl9QUk9G SUxFX0VRRTsNCi0NCi0JcmV0dXJuIG5ldF9kaW1fZ2V0X3R4X21vZGVyYXRpb24oY3FfcGVyaW9k X21vZGUsIHByb2ZpbGVfaXgpOw0KLX0NCi0NCi1zdGF0aWMgaW5saW5lIGludCBuZXRfZGltX3N0 ZXAoc3RydWN0IGRpbSAqZGltKQ0KLXsNCi0JaWYgKGRpbS0+dGlyZWQgPT0gKE5FVF9ESU1fUEFS QU1TX05VTV9QUk9GSUxFUyAqIDIpKQ0KLQkJcmV0dXJuIERJTV9UT09fVElSRUQ7DQotDQotCXN3 aXRjaCAoZGltLT50dW5lX3N0YXRlKSB7DQotCWNhc2UgRElNX1BBUktJTkdfT05fVE9QOg0KLQlj YXNlIERJTV9QQVJLSU5HX1RJUkVEOg0KLQkJYnJlYWs7DQotCWNhc2UgRElNX0dPSU5HX1JJR0hU Og0KLQkJaWYgKGRpbS0+cHJvZmlsZV9peCA9PSAoTkVUX0RJTV9QQVJBTVNfTlVNX1BST0ZJTEVT IC0gMSkpDQotCQkJcmV0dXJuIERJTV9PTl9FREdFOw0KLQkJZGltLT5wcm9maWxlX2l4Kys7DQot CQlkaW0tPnN0ZXBzX3JpZ2h0Kys7DQotCQlicmVhazsNCi0JY2FzZSBESU1fR09JTkdfTEVGVDoN Ci0JCWlmIChkaW0tPnByb2ZpbGVfaXggPT0gMCkNCi0JCQlyZXR1cm4gRElNX09OX0VER0U7DQot CQlkaW0tPnByb2ZpbGVfaXgtLTsNCi0JCWRpbS0+c3RlcHNfbGVmdCsrOw0KLQkJYnJlYWs7DQot CX0NCi0NCi0JZGltLT50aXJlZCsrOw0KLQlyZXR1cm4gRElNX1NURVBQRUQ7DQotfQ0KLQ0KLXN0 YXRpYyBpbmxpbmUgdm9pZCBuZXRfZGltX2V4aXRfcGFya2luZyhzdHJ1Y3QgZGltICpkaW0pDQot ew0KLQlkaW0tPnR1bmVfc3RhdGUgPSBkaW0tPnByb2ZpbGVfaXggPyBESU1fR09JTkdfTEVGVCA6 DQotCQkJCQkgIERJTV9HT0lOR19SSUdIVDsNCi0JbmV0X2RpbV9zdGVwKGRpbSk7DQotfQ0KLQ0K LXN0YXRpYyBpbmxpbmUgaW50IG5ldF9kaW1fc3RhdHNfY29tcGFyZShzdHJ1Y3QgZGltX3N0YXRz ICpjdXJyLA0KLQkJCQkJc3RydWN0IGRpbV9zdGF0cyAqcHJldikNCi17DQotCWlmICghcHJldi0+ YnBtcykNCi0JCXJldHVybiBjdXJyLT5icG1zID8gRElNX1NUQVRTX0JFVFRFUiA6DQotCQkJCSAg ICBESU1fU1RBVFNfU0FNRTsNCi0NCi0JaWYgKElTX1NJR05JRklDQU5UX0RJRkYoY3Vyci0+YnBt cywgcHJldi0+YnBtcykpDQotCQlyZXR1cm4gKGN1cnItPmJwbXMgPiBwcmV2LT5icG1zKSA/IERJ TV9TVEFUU19CRVRURVIgOg0KLQkJCQkJCSAgIERJTV9TVEFUU19XT1JTRTsNCi0NCi0JaWYgKCFw cmV2LT5wcG1zKQ0KLQkJcmV0dXJuIGN1cnItPnBwbXMgPyBESU1fU1RBVFNfQkVUVEVSIDoNCi0J CQkJICAgIERJTV9TVEFUU19TQU1FOw0KLQ0KLQlpZiAoSVNfU0lHTklGSUNBTlRfRElGRihjdXJy LT5wcG1zLCBwcmV2LT5wcG1zKSkNCi0JCXJldHVybiAoY3Vyci0+cHBtcyA+IHByZXYtPnBwbXMp ID8gRElNX1NUQVRTX0JFVFRFUiA6DQotCQkJCQkJICAgRElNX1NUQVRTX1dPUlNFOw0KLQ0KLQlp ZiAoIXByZXYtPmVwbXMpDQotCQlyZXR1cm4gRElNX1NUQVRTX1NBTUU7DQotDQotCWlmIChJU19T SUdOSUZJQ0FOVF9ESUZGKGN1cnItPmVwbXMsIHByZXYtPmVwbXMpKQ0KLQkJcmV0dXJuIChjdXJy LT5lcG1zIDwgcHJldi0+ZXBtcykgPyBESU1fU1RBVFNfQkVUVEVSIDoNCi0JCQkJCQkgICBESU1f U1RBVFNfV09SU0U7DQotDQotCXJldHVybiBESU1fU1RBVFNfU0FNRTsNCi19DQotDQotc3RhdGlj IGlubGluZSBib29sIG5ldF9kaW1fZGVjaXNpb24oc3RydWN0IGRpbV9zdGF0cyAqY3Vycl9zdGF0 cywNCi0JCQkJICAgIHN0cnVjdCBkaW0gKmRpbSkNCi17DQotCWludCBwcmV2X3N0YXRlID0gZGlt LT50dW5lX3N0YXRlOw0KLQlpbnQgcHJldl9peCA9IGRpbS0+cHJvZmlsZV9peDsNCi0JaW50IHN0 YXRzX3JlczsNCi0JaW50IHN0ZXBfcmVzOw0KLQ0KLQlzd2l0Y2ggKGRpbS0+dHVuZV9zdGF0ZSkg ew0KLQljYXNlIERJTV9QQVJLSU5HX09OX1RPUDoNCi0JCXN0YXRzX3JlcyA9IG5ldF9kaW1fc3Rh dHNfY29tcGFyZShjdXJyX3N0YXRzLCAmZGltLT5wcmV2X3N0YXRzKTsNCi0JCWlmIChzdGF0c19y ZXMgIT0gRElNX1NUQVRTX1NBTUUpDQotCQkJbmV0X2RpbV9leGl0X3BhcmtpbmcoZGltKTsNCi0J CWJyZWFrOw0KLQ0KLQljYXNlIERJTV9QQVJLSU5HX1RJUkVEOg0KLQkJZGltLT50aXJlZC0tOw0K LQkJaWYgKCFkaW0tPnRpcmVkKQ0KLQkJCW5ldF9kaW1fZXhpdF9wYXJraW5nKGRpbSk7DQotCQli cmVhazsNCi0NCi0JY2FzZSBESU1fR09JTkdfUklHSFQ6DQotCWNhc2UgRElNX0dPSU5HX0xFRlQ6 DQotCQlzdGF0c19yZXMgPSBuZXRfZGltX3N0YXRzX2NvbXBhcmUoY3Vycl9zdGF0cywgJmRpbS0+ cHJldl9zdGF0cyk7DQotCQlpZiAoc3RhdHNfcmVzICE9IERJTV9TVEFUU19CRVRURVIpDQotCQkJ ZGltX3R1cm4oZGltKTsNCi0NCi0JCWlmIChkaW1fb25fdG9wKGRpbSkpIHsNCi0JCQlkaW1fcGFy a19vbl90b3AoZGltKTsNCi0JCQlicmVhazsNCi0JCX0NCi0NCi0JCXN0ZXBfcmVzID0gbmV0X2Rp bV9zdGVwKGRpbSk7DQotCQlzd2l0Y2ggKHN0ZXBfcmVzKSB7DQotCQljYXNlIERJTV9PTl9FREdF Og0KLQkJCWRpbV9wYXJrX29uX3RvcChkaW0pOw0KLQkJCWJyZWFrOw0KLQkJY2FzZSBESU1fVE9P X1RJUkVEOg0KLQkJCWRpbV9wYXJrX3RpcmVkKGRpbSk7DQotCQkJYnJlYWs7DQotCQl9DQotDQot CQlicmVhazsNCi0JfQ0KKy8qKg0KKyAqCW5ldF9kaW1fZ2V0X3J4X21vZGVyYXRpb24gLSBwcm92 aWRlIGEgQ1EgbW9kZXJhdGlvbiBvYmplY3QgZm9yIHRoZSBnaXZlbiBSWCBwcm9maWxlDQorICoJ QGNxX3BlcmlvZF9tb2RlOiBDUSBwZXJpb2QgbW9kZQ0KKyAqCUBpeDogUHJvZmlsZSBpbmRleA0K KyAqLw0KK3N0cnVjdCBkaW1fY3FfbW9kZXIgbmV0X2RpbV9nZXRfcnhfbW9kZXJhdGlvbih1OCBj cV9wZXJpb2RfbW9kZSwgaW50IGl4KTsNCiANCi0JaWYgKHByZXZfc3RhdGUgIT0gRElNX1BBUktJ TkdfT05fVE9QIHx8DQotCSAgICBkaW0tPnR1bmVfc3RhdGUgIT0gRElNX1BBUktJTkdfT05fVE9Q KQ0KLQkJZGltLT5wcmV2X3N0YXRzID0gKmN1cnJfc3RhdHM7DQorLyoqDQorICoJbmV0X2RpbV9n ZXRfZGVmX3J4X21vZGVyYXRpb24gLSBwcm92aWRlIHRoZSBkZWZhdWx0IFJYIG1vZGVyYXRpb24N CisgKglAY3FfcGVyaW9kX21vZGU6IENRIHBlcmlvZCBtb2RlDQorICovDQorc3RydWN0IGRpbV9j cV9tb2RlciBuZXRfZGltX2dldF9kZWZfcnhfbW9kZXJhdGlvbih1OCBjcV9wZXJpb2RfbW9kZSk7 DQogDQotCXJldHVybiBkaW0tPnByb2ZpbGVfaXggIT0gcHJldl9peDsNCi19DQorLyoqDQorICoJ bmV0X2RpbV9nZXRfdHhfbW9kZXJhdGlvbiAtIHByb3ZpZGUgYSBDUSBtb2RlcmF0aW9uIG9iamVj dCBmb3IgdGhlIGdpdmVuIFRYIHByb2ZpbGUNCisgKglAY3FfcGVyaW9kX21vZGU6IENRIHBlcmlv ZCBtb2RlDQorICoJQGl4OiBQcm9maWxlIGluZGV4DQorICovDQorc3RydWN0IGRpbV9jcV9tb2Rl ciBuZXRfZGltX2dldF90eF9tb2RlcmF0aW9uKHU4IGNxX3BlcmlvZF9tb2RlLCBpbnQgaXgpOw0K IA0KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRfZGltKHN0cnVjdCBkaW0gKmRpbSwNCi0JCQkgICBz dHJ1Y3QgZGltX3NhbXBsZSBlbmRfc2FtcGxlKQ0KLXsNCi0Jc3RydWN0IGRpbV9zdGF0cyBjdXJy X3N0YXRzOw0KLQl1MTYgbmV2ZW50czsNCisvKioNCisgKgluZXRfZGltX2dldF9kZWZfdHhfbW9k ZXJhdGlvbiAtIHByb3ZpZGUgdGhlIGRlZmF1bHQgVFggbW9kZXJhdGlvbg0KKyAqCUBjcV9wZXJp b2RfbW9kZTogQ1EgcGVyaW9kIG1vZGUNCisgKi8NCitzdHJ1Y3QgZGltX2NxX21vZGVyIG5ldF9k aW1fZ2V0X2RlZl90eF9tb2RlcmF0aW9uKHU4IGNxX3BlcmlvZF9tb2RlKTsNCiANCi0Jc3dpdGNo IChkaW0tPnN0YXRlKSB7DQotCWNhc2UgRElNX01FQVNVUkVfSU5fUFJPR1JFU1M6DQotCQluZXZl bnRzID0gQklUX0dBUChCSVRTX1BFUl9UWVBFKHUxNiksDQotCQkJCSAgZW5kX3NhbXBsZS5ldmVu dF9jdHIsDQotCQkJCSAgZGltLT5zdGFydF9zYW1wbGUuZXZlbnRfY3RyKTsNCi0JCWlmIChuZXZl bnRzIDwgRElNX05FVkVOVFMpDQotCQkJYnJlYWs7DQotCQlkaW1fY2FsY19zdGF0cygmZGltLT5z dGFydF9zYW1wbGUsICZlbmRfc2FtcGxlLCAmY3Vycl9zdGF0cyk7DQotCQlpZiAobmV0X2RpbV9k ZWNpc2lvbigmY3Vycl9zdGF0cywgZGltKSkgew0KLQkJCWRpbS0+c3RhdGUgPSBESU1fQVBQTFlf TkVXX1BST0ZJTEU7DQotCQkJc2NoZWR1bGVfd29yaygmZGltLT53b3JrKTsNCi0JCQlicmVhazsN Ci0JCX0NCi0JCS8qIGZhbGwgdGhyb3VnaCAqLw0KLQljYXNlIERJTV9TVEFSVF9NRUFTVVJFOg0K LQkJZGltX3VwZGF0ZV9zYW1wbGUoZW5kX3NhbXBsZS5ldmVudF9jdHIsIGVuZF9zYW1wbGUucGt0 X2N0ciwNCi0JCQkJICBlbmRfc2FtcGxlLmJ5dGVfY3RyLCAmZGltLT5zdGFydF9zYW1wbGUpOw0K LQkJZGltLT5zdGF0ZSA9IERJTV9NRUFTVVJFX0lOX1BST0dSRVNTOw0KLQkJYnJlYWs7DQotCWNh c2UgRElNX0FQUExZX05FV19QUk9GSUxFOg0KLQkJYnJlYWs7DQotCX0NCi19DQorLyoqDQorICoJ bmV0X2RpbSAtIG1haW4gRElNIGFsZ29yaXRobSBlbnRyeSBwb2ludA0KKyAqCUBkaW06IERJTSBp bnN0YW5jZSBpbmZvcm1hdGlvbg0KKyAqCUBlbmRfc2FtcGxlOiBDdXJyZW50IGRhdGEgbWVhc3Vy ZW1lbnQNCisgKg0KKyAqIENhbGxlZCBieSB0aGUgY29uc3VtZXIuDQorICogVGhpcyBpcyB0aGUg bWFpbiBsb2dpYyBvZiB0aGUgYWxnb3JpdGhtLCB3aGVyZSBkYXRhIGlzIHByb2Nlc3NlZCBpbiBv cmRlciB0byBkZWNpZGUgb24gbmV4dA0KKyAqIHJlcXVpcmVkIGFjdGlvbi4NCisgKi8NCit2b2lk IG5ldF9kaW0oc3RydWN0IGRpbSAqZGltLCBzdHJ1Y3QgZGltX3NhbXBsZSBlbmRfc2FtcGxlKTsN CiANCiAjZW5kaWYgLyogTkVUX0RJTV9IICovDQpkaWZmIC0tZ2l0IGEvbGliL0tjb25maWcgYi9s aWIvS2NvbmZpZw0KaW5kZXggOTA2MjNhMGUxOTQyLi43OGRkYjk1MjZiNjIgMTAwNjQ0DQotLS0g YS9saWIvS2NvbmZpZw0KKysrIGIvbGliL0tjb25maWcNCkBAIC01NjIsNiArNTYyLDE0IEBAIGNv bmZpZyBTSUdOQVRVUkUNCiAJICBEaWdpdGFsIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24uIEN1cnJl bnRseSBvbmx5IFJTQSBpcyBzdXBwb3J0ZWQuDQogCSAgSW1wbGVtZW50YXRpb24gaXMgZG9uZSB1 c2luZyBHbnVQRyBNUEkgbGlicmFyeQ0KIA0KK2NvbmZpZyBESU1MSUINCisJYm9vbCAiRElNIGxp YnJhcnkiDQorCWRlZmF1bHQgeQ0KKwloZWxwDQorCSAgRHluYW1pYyBJbnRlcnJ1cHQgTW9kZXJh dGlvbiBsaWJyYXJ5Lg0KKwkgIEltcGxlbWVudHMgYW4gYWxnb3JpdGhtIGZvciBkeW5hbWljYWxs eSBjaGFuZ2UgQ1EgbW9kZXJ0aW9uIHZhbHVlcw0KKwkgIGFjY29yZGluZyB0byBydW4gdGltZSBw ZXJmb3JtYW5jZS4NCisNCiAjDQogIyBsaWJmZHQgZmlsZXMsIG9ubHkgc2VsZWN0ZWQgaWYgbmVl ZGVkLg0KICMNCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUNCmluZGV4 IGZiNzY5NzAzMWE3OS4uZGNiNTU4Yzc1NTRkIDEwMDY0NA0KLS0tIGEvbGliL01ha2VmaWxlDQor KysgYi9saWIvTWFrZWZpbGUNCkBAIC0yMDIsNiArMjAyLDcgQEAgb2JqLSQoQ09ORklHX0dMT0Ip ICs9IGdsb2Iubw0KIG9iai0kKENPTkZJR19HTE9CX1NFTEZURVNUKSArPSBnbG9idGVzdC5vDQog DQogb2JqLSQoQ09ORklHX01QSUxJQikgKz0gbXBpLw0KK29iai0kKENPTkZJR19ESU1MSUIpICs9 IGRpbS8NCiBvYmotJChDT05GSUdfU0lHTkFUVVJFKSArPSBkaWdzaWcubw0KIA0KIGxpYi0kKENP TkZJR19DTFpfVEFCKSArPSBjbHpfdGFiLm8NCmRpZmYgLS1naXQgYS9saWIvZGltL01ha2VmaWxl IGIvbGliL2RpbS9NYWtlZmlsZQ0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MDAwMC4uMTYwYWZlMjg4ZGYwDQotLS0gL2Rldi9udWxsDQorKysgYi9saWIvZGltL01ha2VmaWxl DQpAQCAtMCwwICsxLDkgQEANCisjDQorIyBESU0gRHluYW1pYyBJbnRlcnJ1cHQgTW9kZXJhdGlv biBsaWJyYXJ5DQorIw0KKw0KK29iai0kKENPTkZJR19ESU1MSUIpID0gbmV0X2RpbS5vDQorDQor bmV0X2RpbS15ID0gXA0KKwlkaW0ubwkJXA0KKwluZXRfZGltLm8NCmRpZmYgLS1naXQgYS9saWIv ZGltL2RpbS5jIGIvbGliL2RpbS9kaW0uYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAwMDAwMC4uMTdkNTIzNjc1OWJkDQotLS0gL2Rldi9udWxsDQorKysgYi9saWIvZGltL2Rp bS5jDQpAQCAtMCwwICsxLDc0IEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAgT1IgTGludXgtT3BlbklCDQorLyoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE1lbGxhbm94 IFRlY2hub2xvZ2llcyBpbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqLw0KKw0KKyNpbmNs dWRlIDxsaW51eC9kaW0uaD4NCisNCitib29sIGRpbV9vbl90b3Aoc3RydWN0IGRpbSAqZGltKQ0K K3sNCisJc3dpdGNoIChkaW0tPnR1bmVfc3RhdGUpIHsNCisJY2FzZSBESU1fUEFSS0lOR19PTl9U T1A6DQorCWNhc2UgRElNX1BBUktJTkdfVElSRUQ6DQorCQlyZXR1cm4gdHJ1ZTsNCisJY2FzZSBE SU1fR09JTkdfUklHSFQ6DQorCQlyZXR1cm4gKGRpbS0+c3RlcHNfbGVmdCA+IDEpICYmIChkaW0t PnN0ZXBzX3JpZ2h0ID09IDEpOw0KKwlkZWZhdWx0OiAvKiBESU1fR09JTkdfTEVGVCAqLw0KKwkJ cmV0dXJuIChkaW0tPnN0ZXBzX3JpZ2h0ID4gMSkgJiYgKGRpbS0+c3RlcHNfbGVmdCA9PSAxKTsN CisJfQ0KK30NCitFWFBPUlRfU1lNQk9MKGRpbV9vbl90b3ApOw0KKw0KK3ZvaWQgZGltX3R1cm4o c3RydWN0IGRpbSAqZGltKQ0KK3sNCisJc3dpdGNoIChkaW0tPnR1bmVfc3RhdGUpIHsNCisJY2Fz ZSBESU1fUEFSS0lOR19PTl9UT1A6DQorCWNhc2UgRElNX1BBUktJTkdfVElSRUQ6DQorCQlicmVh azsNCisJY2FzZSBESU1fR09JTkdfUklHSFQ6DQorCQlkaW0tPnR1bmVfc3RhdGUgPSBESU1fR09J TkdfTEVGVDsNCisJCWRpbS0+c3RlcHNfbGVmdCA9IDA7DQorCQlicmVhazsNCisJY2FzZSBESU1f R09JTkdfTEVGVDoNCisJCWRpbS0+dHVuZV9zdGF0ZSA9IERJTV9HT0lOR19SSUdIVDsNCisJCWRp bS0+c3RlcHNfcmlnaHQgPSAwOw0KKwkJYnJlYWs7DQorCX0NCit9DQorRVhQT1JUX1NZTUJPTChk aW1fdHVybik7DQorDQordm9pZCBkaW1fcGFya19vbl90b3Aoc3RydWN0IGRpbSAqZGltKQ0KK3sN CisJZGltLT5zdGVwc19yaWdodCAgPSAwOw0KKwlkaW0tPnN0ZXBzX2xlZnQgICA9IDA7DQorCWRp bS0+dGlyZWQgICAgICAgID0gMDsNCisJZGltLT50dW5lX3N0YXRlICAgPSBESU1fUEFSS0lOR19P Tl9UT1A7DQorfQ0KK0VYUE9SVF9TWU1CT0woZGltX3Bhcmtfb25fdG9wKTsNCisNCit2b2lkIGRp bV9wYXJrX3RpcmVkKHN0cnVjdCBkaW0gKmRpbSkNCit7DQorCWRpbS0+c3RlcHNfcmlnaHQgID0g MDsNCisJZGltLT5zdGVwc19sZWZ0ICAgPSAwOw0KKwlkaW0tPnR1bmVfc3RhdGUgICA9IERJTV9Q QVJLSU5HX1RJUkVEOw0KK30NCitFWFBPUlRfU1lNQk9MKGRpbV9wYXJrX3RpcmVkKTsNCisNCit2 b2lkIGRpbV9jYWxjX3N0YXRzKHN0cnVjdCBkaW1fc2FtcGxlICpzdGFydCwgc3RydWN0IGRpbV9z YW1wbGUgKmVuZCwNCisJCSAgICBzdHJ1Y3QgZGltX3N0YXRzICpjdXJyX3N0YXRzKQ0KK3sNCisJ LyogdTMyIGhvbGRzIHVwIHRvIDcxIG1pbnV0ZXMsIHNob3VsZCBiZSBlbm91Z2ggKi8NCisJdTMy IGRlbHRhX3VzID0ga3RpbWVfdXNfZGVsdGEoZW5kLT50aW1lLCBzdGFydC0+dGltZSk7DQorCXUz MiBucGt0cyA9IEJJVF9HQVAoQklUU19QRVJfVFlQRSh1MzIpLCBlbmQtPnBrdF9jdHIsIHN0YXJ0 LT5wa3RfY3RyKTsNCisJdTMyIG5ieXRlcyA9IEJJVF9HQVAoQklUU19QRVJfVFlQRSh1MzIpLCBl bmQtPmJ5dGVfY3RyLA0KKwkJCSAgICAgc3RhcnQtPmJ5dGVfY3RyKTsNCisNCisJaWYgKCFkZWx0 YV91cykNCisJCXJldHVybjsNCisNCisJY3Vycl9zdGF0cy0+cHBtcyA9IERJVl9ST1VORF9VUChu cGt0cyAqIFVTRUNfUEVSX01TRUMsIGRlbHRhX3VzKTsNCisJY3Vycl9zdGF0cy0+YnBtcyA9IERJ Vl9ST1VORF9VUChuYnl0ZXMgKiBVU0VDX1BFUl9NU0VDLCBkZWx0YV91cyk7DQorCWN1cnJfc3Rh dHMtPmVwbXMgPSBESVZfUk9VTkRfVVAoRElNX05FVkVOVFMgKiBVU0VDX1BFUl9NU0VDLA0KKwkJ CQkJZGVsdGFfdXMpOw0KK30NCitFWFBPUlRfU1lNQk9MKGRpbV9jYWxjX3N0YXRzKTsNCmRpZmYg LS1naXQgYS9saWIvZGltL25ldF9kaW0uYyBiL2xpYi9kaW0vbmV0X2RpbS5jDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5hOTg4ZGUzMTc3NzMNCi0tLSAvZGV2L251 bGwNCisrKyBiL2xpYi9kaW0vbmV0X2RpbS5jDQpAQCAtMCwwICsxLDE5MSBAQA0KKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIExpbnV4LU9wZW5JQg0KKy8qDQorICogQ29w eXJpZ2h0IChjKSAyMDE4LCBNZWxsYW5veCBUZWNobm9sb2dpZXMgaW5jLiAgQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCisgKi8NCisNCisjaW5jbHVkZSA8bGludXgvbmV0X2RpbS5oPg0KKyNpbmNsdWRl IDxsaW51eC9kaW0uaD4NCisNCitzdHJ1Y3QgZGltX2NxX21vZGVyDQorbmV0X2RpbV9nZXRfcnhf bW9kZXJhdGlvbih1OCBjcV9wZXJpb2RfbW9kZSwgaW50IGl4KQ0KK3sNCisJc3RydWN0IGRpbV9j cV9tb2RlciBjcV9tb2RlciA9IHJ4X3Byb2ZpbGVbY3FfcGVyaW9kX21vZGVdW2l4XTsNCisNCisJ Y3FfbW9kZXIuY3FfcGVyaW9kX21vZGUgPSBjcV9wZXJpb2RfbW9kZTsNCisJcmV0dXJuIGNxX21v ZGVyOw0KK30NCitFWFBPUlRfU1lNQk9MKG5ldF9kaW1fZ2V0X3J4X21vZGVyYXRpb24pOw0KKw0K K3N0cnVjdCBkaW1fY3FfbW9kZXINCituZXRfZGltX2dldF9kZWZfcnhfbW9kZXJhdGlvbih1OCBj cV9wZXJpb2RfbW9kZSkNCit7DQorCXU4IHByb2ZpbGVfaXggPSBjcV9wZXJpb2RfbW9kZSA9PSBE SU1fQ1FfUEVSSU9EX01PREVfU1RBUlRfRlJPTV9DUUUgPw0KKwkJCU5FVF9ESU1fREVGX1BST0ZJ TEVfQ1FFIDogTkVUX0RJTV9ERUZfUFJPRklMRV9FUUU7DQorDQorCXJldHVybiBuZXRfZGltX2dl dF9yeF9tb2RlcmF0aW9uKGNxX3BlcmlvZF9tb2RlLCBwcm9maWxlX2l4KTsNCit9DQorRVhQT1JU X1NZTUJPTChuZXRfZGltX2dldF9kZWZfcnhfbW9kZXJhdGlvbik7DQorDQorc3RydWN0IGRpbV9j cV9tb2Rlcg0KK25ldF9kaW1fZ2V0X3R4X21vZGVyYXRpb24odTggY3FfcGVyaW9kX21vZGUsIGlu dCBpeCkNCit7DQorCXN0cnVjdCBkaW1fY3FfbW9kZXIgY3FfbW9kZXIgPSB0eF9wcm9maWxlW2Nx X3BlcmlvZF9tb2RlXVtpeF07DQorDQorCWNxX21vZGVyLmNxX3BlcmlvZF9tb2RlID0gY3FfcGVy aW9kX21vZGU7DQorCXJldHVybiBjcV9tb2RlcjsNCit9DQorRVhQT1JUX1NZTUJPTChuZXRfZGlt X2dldF90eF9tb2RlcmF0aW9uKTsNCisNCitzdHJ1Y3QgZGltX2NxX21vZGVyDQorbmV0X2RpbV9n ZXRfZGVmX3R4X21vZGVyYXRpb24odTggY3FfcGVyaW9kX21vZGUpDQorew0KKwl1OCBwcm9maWxl X2l4ID0gY3FfcGVyaW9kX21vZGUgPT0gRElNX0NRX1BFUklPRF9NT0RFX1NUQVJUX0ZST01fQ1FF ID8NCisJCQlORVRfRElNX0RFRl9QUk9GSUxFX0NRRSA6IE5FVF9ESU1fREVGX1BST0ZJTEVfRVFF Ow0KKw0KKwlyZXR1cm4gbmV0X2RpbV9nZXRfdHhfbW9kZXJhdGlvbihjcV9wZXJpb2RfbW9kZSwg cHJvZmlsZV9peCk7DQorfQ0KK0VYUE9SVF9TWU1CT0wobmV0X2RpbV9nZXRfZGVmX3R4X21vZGVy YXRpb24pOw0KKw0KK3N0YXRpYyBpbnQgbmV0X2RpbV9zdGVwKHN0cnVjdCBkaW0gKmRpbSkNCit7 DQorCWlmIChkaW0tPnRpcmVkID09IChORVRfRElNX1BBUkFNU19OVU1fUFJPRklMRVMgKiAyKSkN CisJCXJldHVybiBESU1fVE9PX1RJUkVEOw0KKw0KKwlzd2l0Y2ggKGRpbS0+dHVuZV9zdGF0ZSkg ew0KKwljYXNlIERJTV9QQVJLSU5HX09OX1RPUDoNCisJY2FzZSBESU1fUEFSS0lOR19USVJFRDoN CisJCWJyZWFrOw0KKwljYXNlIERJTV9HT0lOR19SSUdIVDoNCisJCWlmIChkaW0tPnByb2ZpbGVf aXggPT0gKE5FVF9ESU1fUEFSQU1TX05VTV9QUk9GSUxFUyAtIDEpKQ0KKwkJCXJldHVybiBESU1f T05fRURHRTsNCisJCWRpbS0+cHJvZmlsZV9peCsrOw0KKwkJZGltLT5zdGVwc19yaWdodCsrOw0K KwkJYnJlYWs7DQorCWNhc2UgRElNX0dPSU5HX0xFRlQ6DQorCQlpZiAoZGltLT5wcm9maWxlX2l4 ID09IDApDQorCQkJcmV0dXJuIERJTV9PTl9FREdFOw0KKwkJZGltLT5wcm9maWxlX2l4LS07DQor CQlkaW0tPnN0ZXBzX2xlZnQrKzsNCisJCWJyZWFrOw0KKwl9DQorDQorCWRpbS0+dGlyZWQrKzsN CisJcmV0dXJuIERJTV9TVEVQUEVEOw0KK30NCisNCitzdGF0aWMgdm9pZCBuZXRfZGltX2V4aXRf cGFya2luZyhzdHJ1Y3QgZGltICpkaW0pDQorew0KKwlkaW0tPnR1bmVfc3RhdGUgPSBkaW0tPnBy b2ZpbGVfaXggPyBESU1fR09JTkdfTEVGVCA6IERJTV9HT0lOR19SSUdIVDsNCisJbmV0X2RpbV9z dGVwKGRpbSk7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbmV0X2RpbV9zdGF0c19jb21wYXJlKHN0cnVj dCBkaW1fc3RhdHMgKmN1cnIsDQorCQkJCSBzdHJ1Y3QgZGltX3N0YXRzICpwcmV2KQ0KK3sNCisJ aWYgKCFwcmV2LT5icG1zKQ0KKwkJcmV0dXJuIGN1cnItPmJwbXMgPyBESU1fU1RBVFNfQkVUVEVS IDogRElNX1NUQVRTX1NBTUU7DQorDQorCWlmIChJU19TSUdOSUZJQ0FOVF9ESUZGKGN1cnItPmJw bXMsIHByZXYtPmJwbXMpKQ0KKwkJcmV0dXJuIChjdXJyLT5icG1zID4gcHJldi0+YnBtcykgPyBE SU1fU1RBVFNfQkVUVEVSIDoNCisJCQkJCQkgICBESU1fU1RBVFNfV09SU0U7DQorDQorCWlmICgh cHJldi0+cHBtcykNCisJCXJldHVybiBjdXJyLT5wcG1zID8gRElNX1NUQVRTX0JFVFRFUiA6DQor CQkJCSAgICBESU1fU1RBVFNfU0FNRTsNCisNCisJaWYgKElTX1NJR05JRklDQU5UX0RJRkYoY3Vy ci0+cHBtcywgcHJldi0+cHBtcykpDQorCQlyZXR1cm4gKGN1cnItPnBwbXMgPiBwcmV2LT5wcG1z KSA/IERJTV9TVEFUU19CRVRURVIgOg0KKwkJCQkJCSAgIERJTV9TVEFUU19XT1JTRTsNCisNCisJ aWYgKCFwcmV2LT5lcG1zKQ0KKwkJcmV0dXJuIERJTV9TVEFUU19TQU1FOw0KKw0KKwlpZiAoSVNf U0lHTklGSUNBTlRfRElGRihjdXJyLT5lcG1zLCBwcmV2LT5lcG1zKSkNCisJCXJldHVybiAoY3Vy ci0+ZXBtcyA8IHByZXYtPmVwbXMpID8gRElNX1NUQVRTX0JFVFRFUiA6DQorCQkJCQkJICAgRElN X1NUQVRTX1dPUlNFOw0KKw0KKwlyZXR1cm4gRElNX1NUQVRTX1NBTUU7DQorfQ0KKw0KK3N0YXRp YyBib29sIG5ldF9kaW1fZGVjaXNpb24oc3RydWN0IGRpbV9zdGF0cyAqY3Vycl9zdGF0cywgc3Ry dWN0IGRpbSAqZGltKQ0KK3sNCisJaW50IHByZXZfc3RhdGUgPSBkaW0tPnR1bmVfc3RhdGU7DQor CWludCBwcmV2X2l4ID0gZGltLT5wcm9maWxlX2l4Ow0KKwlpbnQgc3RhdHNfcmVzOw0KKwlpbnQg c3RlcF9yZXM7DQorDQorCXN3aXRjaCAoZGltLT50dW5lX3N0YXRlKSB7DQorCWNhc2UgRElNX1BB UktJTkdfT05fVE9QOg0KKwkJc3RhdHNfcmVzID0gbmV0X2RpbV9zdGF0c19jb21wYXJlKGN1cnJf c3RhdHMsDQorCQkJCQkJICAmZGltLT5wcmV2X3N0YXRzKTsNCisJCWlmIChzdGF0c19yZXMgIT0g RElNX1NUQVRTX1NBTUUpDQorCQkJbmV0X2RpbV9leGl0X3BhcmtpbmcoZGltKTsNCisJCWJyZWFr Ow0KKw0KKwljYXNlIERJTV9QQVJLSU5HX1RJUkVEOg0KKwkJZGltLT50aXJlZC0tOw0KKwkJaWYg KCFkaW0tPnRpcmVkKQ0KKwkJCW5ldF9kaW1fZXhpdF9wYXJraW5nKGRpbSk7DQorCQlicmVhazsN CisNCisJY2FzZSBESU1fR09JTkdfUklHSFQ6DQorCWNhc2UgRElNX0dPSU5HX0xFRlQ6DQorCQlz dGF0c19yZXMgPSBuZXRfZGltX3N0YXRzX2NvbXBhcmUoY3Vycl9zdGF0cywNCisJCQkJCQkgICZk aW0tPnByZXZfc3RhdHMpOw0KKwkJaWYgKHN0YXRzX3JlcyAhPSBESU1fU1RBVFNfQkVUVEVSKQ0K KwkJCWRpbV90dXJuKGRpbSk7DQorDQorCQlpZiAoZGltX29uX3RvcChkaW0pKSB7DQorCQkJZGlt X3Bhcmtfb25fdG9wKGRpbSk7DQorCQkJYnJlYWs7DQorCQl9DQorDQorCQlzdGVwX3JlcyA9IG5l dF9kaW1fc3RlcChkaW0pOw0KKwkJc3dpdGNoIChzdGVwX3Jlcykgew0KKwkJY2FzZSBESU1fT05f RURHRToNCisJCQlkaW1fcGFya19vbl90b3AoZGltKTsNCisJCQlicmVhazsNCisJCWNhc2UgRElN X1RPT19USVJFRDoNCisJCQlkaW1fcGFya190aXJlZChkaW0pOw0KKwkJCWJyZWFrOw0KKwkJfQ0K Kw0KKwkJYnJlYWs7DQorCX0NCisNCisJaWYgKHByZXZfc3RhdGUgIT0gRElNX1BBUktJTkdfT05f VE9QIHx8DQorCSAgICBkaW0tPnR1bmVfc3RhdGUgIT0gRElNX1BBUktJTkdfT05fVE9QKQ0KKwkJ ZGltLT5wcmV2X3N0YXRzID0gKmN1cnJfc3RhdHM7DQorDQorCXJldHVybiBkaW0tPnByb2ZpbGVf aXggIT0gcHJldl9peDsNCit9DQorDQordm9pZCBuZXRfZGltKHN0cnVjdCBkaW0gKmRpbSwgc3Ry dWN0IGRpbV9zYW1wbGUgZW5kX3NhbXBsZSkNCit7DQorCXN0cnVjdCBkaW1fc3RhdHMgY3Vycl9z dGF0czsNCisJdTE2IG5ldmVudHM7DQorDQorCXN3aXRjaCAoZGltLT5zdGF0ZSkgew0KKwljYXNl IERJTV9NRUFTVVJFX0lOX1BST0dSRVNTOg0KKwkJbmV2ZW50cyA9IEJJVF9HQVAoQklUU19QRVJf VFlQRSh1MTYpLA0KKwkJCQkgIGVuZF9zYW1wbGUuZXZlbnRfY3RyLA0KKwkJCQkgIGRpbS0+c3Rh cnRfc2FtcGxlLmV2ZW50X2N0cik7DQorCQlpZiAobmV2ZW50cyA8IERJTV9ORVZFTlRTKQ0KKwkJ CWJyZWFrOw0KKwkJZGltX2NhbGNfc3RhdHMoJmRpbS0+c3RhcnRfc2FtcGxlLCAmZW5kX3NhbXBs ZSwgJmN1cnJfc3RhdHMpOw0KKwkJaWYgKG5ldF9kaW1fZGVjaXNpb24oJmN1cnJfc3RhdHMsIGRp bSkpIHsNCisJCQlkaW0tPnN0YXRlID0gRElNX0FQUExZX05FV19QUk9GSUxFOw0KKwkJCXNjaGVk dWxlX3dvcmsoJmRpbS0+d29yayk7DQorCQkJYnJlYWs7DQorCQl9DQorCQkvKiBmYWxsIHRocm91 Z2ggKi8NCisJY2FzZSBESU1fU1RBUlRfTUVBU1VSRToNCisJCWRpbV91cGRhdGVfc2FtcGxlKGVu ZF9zYW1wbGUuZXZlbnRfY3RyLCBlbmRfc2FtcGxlLnBrdF9jdHIsDQorCQkJCSAgZW5kX3NhbXBs ZS5ieXRlX2N0ciwgJmRpbS0+c3RhcnRfc2FtcGxlKTsNCisJCWRpbS0+c3RhdGUgPSBESU1fTUVB U1VSRV9JTl9QUk9HUkVTUzsNCisJCWJyZWFrOw0KKwljYXNlIERJTV9BUFBMWV9ORVdfUFJPRklM RToNCisJCWJyZWFrOw0KKwl9DQorfQ0KK0VYUE9SVF9TWU1CT0wobmV0X2RpbSk7DQotLSANCjIu MjEuMA0KDQo=