Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp496478yba; Wed, 24 Apr 2019 05:04:26 -0700 (PDT) X-Google-Smtp-Source: APXvYqzebsD/tgulzmiaCdUM6XtZFhjOSLIJx8imVhtYeY+vECH7CcEp7uHuHrlcsy4cpBCQ6f4I X-Received: by 2002:a65:420b:: with SMTP id c11mr13409632pgq.24.1556107466169; Wed, 24 Apr 2019 05:04:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556107466; cv=none; d=google.com; s=arc-20160816; b=y/Hy+9SMOXKL6QMEzwZpDCZCfDAGdoZZaRcwOQPfyDUdUWnXwagXZRtTiiFq4fpR6m Bpgdde69zXGtpI1AB4oHqfVjsDBg5NF2GNVAWPUoEyWKmPgiwnYT5CO9xdTO3cXAyuZs GML/o8+WZe52hzT56qGTvqIstDh+7E3uxjXkXN/irb/2xmQTV24Q9qDs65EuE5JF8fBm m7sgxACM0gnuHz/dpDI1ujHcUiTgHoxhSLN/bQYDo5IpnO+N7R4b9GFN7to1EL1rp5Gz TlAXmAlE6YN34ZVIF0S6FnXa9XlH3lMUk/eJ6JdbuUixYkhskEKLF4Azim0v7/8+u8Ze 9lMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=qXpsbIbE8N1o4WgklMOHcmiV8iBvE/MLlaBKTG5dwmY=; b=vRvKGySz5l8FpDp88IArDFbn11ongGErrVevAem4axJcHZkPEE2CqtmYDh1vB3zJpP rzc+bJZ0u8Lh/IF0vdUL+eCNH33OBsoElLeNewIGSU33WNyiRzb3kAuIOLpcn9fmSnHM PPbcEE9OT5clharNxzOBXBLlMGpYT/YdKxMbN+AkoSX5IclvXSXPOOFXNn1kMsfpIxu2 UXP2s+3ekXrozolVyrnTztRFabdgotFWrPf4558KE578uxJnjWM38oMw9EQlIx9arZI5 JE5n4skt/eTT5GQdPaV1dCVfxoBsT8RNGN03J/nu4rW4E7cEL0++rydVvr6CK/51raOm Ajzg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vmware.com header.s=selector1 header.b=opQLF1WG; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 1si19771051plw.390.2019.04.24.05.04.09; Wed, 24 Apr 2019 05:04:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@vmware.com header.s=selector1 header.b=opQLF1WG; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729571AbfDXMAt (ORCPT + 99 others); Wed, 24 Apr 2019 08:00:49 -0400 Received: from mail-eopbgr710074.outbound.protection.outlook.com ([40.107.71.74]:43387 "EHLO NAM05-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729494AbfDXMAs (ORCPT ); Wed, 24 Apr 2019 08:00:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qXpsbIbE8N1o4WgklMOHcmiV8iBvE/MLlaBKTG5dwmY=; b=opQLF1WGmPtYMvG5xYSp6RjqN9EzX+459IuOZVk2QuoBTypLD4dNWgoORb+IjfCOkSaX2rJvLpFPP1fCNTXz8rLsbGdoK3/sDueYvr36qtCjWdYBnBLYuH5JAOrqZ2AxSC7Hf4gTQZeVXr1Ty0Jz6ULgHMsSJ5l2tCAfsx5cdQI= Received: from MN2PR05MB6141.namprd05.prod.outlook.com (20.178.241.217) by MN2PR05MB6687.namprd05.prod.outlook.com (20.178.249.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1835.7; Wed, 24 Apr 2019 12:00:35 +0000 Received: from MN2PR05MB6141.namprd05.prod.outlook.com ([fe80::441b:ef64:e316:b294]) by MN2PR05MB6141.namprd05.prod.outlook.com ([fe80::441b:ef64:e316:b294%5]) with mapi id 15.20.1835.010; Wed, 24 Apr 2019 12:00:35 +0000 From: Thomas Hellstrom To: Linux-graphics-maintainer , "dri-devel@lists.freedesktop.org" CC: Pv-drivers , "linux-kernel@vger.kernel.org" , Thomas Hellstrom , Deepak Singh Rawat Subject: [PATCH 9/9] drm/vmwgfx: Add surface dirty-tracking callbacks v2 Thread-Topic: [PATCH 9/9] drm/vmwgfx: Add surface dirty-tracking callbacks v2 Thread-Index: AQHU+pVSz7CvbSjgHEG6UTxLQ7Hxgg== Date: Wed, 24 Apr 2019 12:00:35 +0000 Message-ID: <20190424115918.3380-10-thellstrom@vmware.com> References: <20190424115918.3380-1-thellstrom@vmware.com> In-Reply-To: <20190424115918.3380-1-thellstrom@vmware.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR07CA0208.eurprd07.prod.outlook.com (2603:10a6:802:3f::32) To MN2PR05MB6141.namprd05.prod.outlook.com (2603:10b6:208:c7::25) authentication-results: spf=none (sender IP is ) smtp.mailfrom=thellstrom@vmware.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [155.4.205.35] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2d05e5f5-462f-42d0-26d5-08d6c8ac7518 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(2017052603328)(7193020);SRVR:MN2PR05MB6687; x-ms-traffictypediagnostic: MN2PR05MB6687: x-ld-processed: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0,ExtAddr x-microsoft-antispam-prvs: x-forefront-prvs: 00179089FD x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(376002)(136003)(346002)(396003)(366004)(189003)(199004)(8676002)(81156014)(64756008)(66946007)(66556008)(52116002)(6506007)(53936002)(66476007)(68736007)(102836004)(8936002)(6116002)(66446008)(30864003)(6512007)(36756003)(19627235002)(53946003)(186003)(81166006)(26005)(107886003)(73956011)(7736002)(305945005)(316002)(66066001)(2501003)(50226002)(97736004)(3846002)(86362001)(1076003)(110136005)(5660300002)(2616005)(14454004)(11346002)(25786009)(486006)(2906002)(76176011)(71200400001)(71190400001)(99286004)(476003)(386003)(256004)(4326008)(446003)(14444005)(6486002)(6436002)(54906003)(478600001)(14143004)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:MN2PR05MB6687;H:MN2PR05MB6141.namprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: vmware.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: YWQRDfKWd+tpCy886K/nKM986rs4KgkqoUnqFCrXzlI6QlpvhLB/zj1bIa2e/ck13sdC91fy4iUr/+0SuYEVygUUHiTZjEdRHHLhjiWjl6cdWwWlehXBb3gYF/QPQKZezXCyZi7NIdJf7oEvmr3B4zGMXzVnx7WKW1RkT4ZDADPsGAbMbydR5g7poO3DiMbzvVs/8wnYaLTbHl2bYTp+PWHaEI3pGjCpYEW04r7FnvFx0iZK9+gseY1A5lg0rRlMLU+yOBEXUp6znUP66mWpuzrzGxujlQnw4XMLOz1u+40g3SKAIk4aCXdC4x0757LxWD2Cmgw5NzSEmDZ9fmY47Zp5ajleF822z6IPODvIEVe8P89svU5pkb/QOuL6/tWx0YiASd841ezQIseKGYuzvQlY/VFgwlYcQgCUvOzUu38= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2d05e5f5-462f-42d0-26d5-08d6c8ac7518 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Apr 2019 12:00:35.0469 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR05MB6687 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org QWRkIHRoZSBjYWxsYmFja3MgbmVjZXNzYXJ5IHRvIGltcGxlbWVudCBlbXVsYXRlZCBjb2hlcmVu dCBtZW1vcnkgZm9yDQpzdXJmYWNlcy4gQWRkIGEgZmxhZyB0byB0aGUgZ2Jfc3VyZmFjZV9jcmVh dGUgaW9jdGwgdG8gaW5kaWNhdGUgdGhhdA0Kc3VyZmFjZSBtZW1vcnkgc2hvdWxkIGJlIGNvaGVy ZW50Lg0KQWxzbyBidW1wIHRoZSBkcm0gbWlub3IgdmVyc2lvbiB0byBzaWduYWwgdGhlIGF2YWls YWJpbGl0eSBvZiBjb2hlcmVudA0Kc3VyZmFjZXMuDQoNClNpZ25lZC1vZmYtYnk6IFRob21hcyBI ZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4NClJldmlld2VkLWJ5OiBEZWVwYWsgUmF3 YXQgPGRyYXdhdEB2bXdhcmUuY29tPg0KLS0tDQp2MjogRml4IGEgY291cGxlIG9mIHR5cG9zLg0K LS0tDQogLi4uL2RldmljZV9pbmNsdWRlL3N2Z2EzZF9zdXJmYWNlZGVmcy5oICAgICAgIHwgMjA5 ICsrKysrKysrKy0NCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaCAgICAgICAg ICAgfCAgIDQgKy0NCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zdXJmYWNlLmMgICAg ICAgfCAzOTAgKysrKysrKysrKysrKysrKystDQogaW5jbHVkZS91YXBpL2RybS92bXdnZnhfZHJt LmggICAgICAgICAgICAgICAgIHwgICA0ICstDQogNCBmaWxlcyBjaGFuZ2VkLCA2MDAgaW5zZXJ0 aW9ucygrKSwgNyBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92 bXdnZngvZGV2aWNlX2luY2x1ZGUvc3ZnYTNkX3N1cmZhY2VkZWZzLmggYi9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L2RldmljZV9pbmNsdWRlL3N2Z2EzZF9zdXJmYWNlZGVmcy5oDQppbmRleCBmMmJm ZDNkODA1OTguLmM0MjQzZTc2YTI0OSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdn ZngvZGV2aWNlX2luY2x1ZGUvc3ZnYTNkX3N1cmZhY2VkZWZzLmgNCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS92bXdnZngvZGV2aWNlX2luY2x1ZGUvc3ZnYTNkX3N1cmZhY2VkZWZzLmgNCkBAIC0xMjgw LDcgKzEyODAsNiBAQCBzdmdhM2RzdXJmYWNlX2dldF9waXhlbF9vZmZzZXQoU1ZHQTNkU3VyZmFj ZUZvcm1hdCBmb3JtYXQsDQogCXJldHVybiBvZmZzZXQ7DQogfQ0KIA0KLQ0KIHN0YXRpYyBpbmxp bmUgdTMyDQogc3ZnYTNkc3VyZmFjZV9nZXRfaW1hZ2Vfb2Zmc2V0KFNWR0EzZFN1cmZhY2VGb3Jt YXQgZm9ybWF0LA0KIAkJCSAgICAgICBzdXJmX3NpemVfc3RydWN0IGJhc2VMZXZlbFNpemUsDQpA QCAtMTM3NSw0ICsxMzc0LDIxMiBAQCBzdmdhM2RzdXJmYWNlX2lzX3NjcmVlbl90YXJnZXRfZm9y bWF0KFNWR0EzZFN1cmZhY2VGb3JtYXQgZm9ybWF0KQ0KIAlyZXR1cm4gc3ZnYTNkc3VyZmFjZV9p c19keF9zY3JlZW5fdGFyZ2V0X2Zvcm1hdChmb3JtYXQpOw0KIH0NCiANCisvKioNCisgKiBzdHJ1 Y3Qgc3ZnYTNkc3VyZmFjZV9taXAgLSBNaW1wbWFwIGxldmVsIGluZm9ybWF0aW9uDQorICogQGJ5 dGVzOiBCeXRlcyByZXF1aXJlZCBpbiB0aGUgYmFja2luZyBzdG9yZSBvZiB0aGlzIG1pcG1hcCBs ZXZlbC4NCisgKiBAaW1nX3N0cmlkZTogQnl0ZSBzdHJpZGUgcGVyIGltYWdlLg0KKyAqIEByb3df c3RyaWRlOiBCeXRlIHN0cmlkZSBwZXIgYmxvY2sgcm93Lg0KKyAqIEBzaXplOiBUaGUgc2l6ZSBv ZiB0aGUgbWlwbWFwLg0KKyAqLw0KK3N0cnVjdCBzdmdhM2RzdXJmYWNlX21pcCB7DQorCXNpemVf dCBieXRlczsNCisJc2l6ZV90IGltZ19zdHJpZGU7DQorCXNpemVfdCByb3dfc3RyaWRlOw0KKwlz dHJ1Y3QgZHJtX3Ztd19zaXplIHNpemU7DQorDQorfTsNCisNCisvKioNCisgKiBzdHJ1Y3Qgc3Zn YTNkc3VyZmFjZV9jYWNoZSAtIENhY2hlZCBzdXJmYWNlIGluZm9ybWF0aW9uDQorICogQGRlc2M6 IFBvaW50ZXIgdG8gdGhlIHN1cmZhY2UgZGVzY3JpcHRvcg0KKyAqIEBtaXA6IEFycmF5IG9mIG1p cG1hcCBsZXZlbCBpbmZvcm1hdGlvbi4gVmFsaWQgc2l6ZSBpcyBAbnVtX21pcF9sZXZlbHMuDQor ICogQG1pcF9jaGFpbl9ieXRlczogQnl0ZXMgcmVxdWlyZWQgaW4gdGhlIGJhY2tpbmcgc3RvcmUg Zm9yIHRoZSB3aG9sZSBjaGFpbg0KKyAqIG9mIG1pcCBsZXZlbHMuDQorICogQG51bV9taXBfbGV2 ZWxzOiBWYWxpZCBzaXplIG9mIHRoZSBAbWlwIGFycmF5LiBOdW1iZXIgb2YgbWlwbWFwIGxldmVs cyBpbg0KKyAqIGEgY2hhaW4uDQorICogQG51bV9sYXllcnM6IE51bWJlciBvZiBzbGljZXMgaW4g YW4gYXJyYXkgdGV4dHVyZSBvciBudW1iZXIgb2YgZmFjZXMgaW4NCisgKiBhIGN1YmVtYXAgdGV4 dHVyZS4NCisgKi8NCitzdHJ1Y3Qgc3ZnYTNkc3VyZmFjZV9jYWNoZSB7DQorCWNvbnN0IHN0cnVj dCBzdmdhM2Rfc3VyZmFjZV9kZXNjICpkZXNjOw0KKwlzdHJ1Y3Qgc3ZnYTNkc3VyZmFjZV9taXAg bWlwW0RSTV9WTVdfTUFYX01JUF9MRVZFTFNdOw0KKwlzaXplX3QgbWlwX2NoYWluX2J5dGVzOw0K Kwl1MzIgbnVtX21pcF9sZXZlbHM7DQorCXUzMiBudW1fbGF5ZXJzOw0KK307DQorDQorLyoqDQor ICogc3RydWN0IHN2Z2EzZHN1cmZhY2VfbG9jIC0gU3VyZmFjZSBsb2NhdGlvbg0KKyAqIEBzdWJf cmVzb3VyY2U6IFN1cmZhY2Ugc3VicmVzb3VyY2UuIERlZmluZWQgYXMgbGF5ZXIgKiBudW1fbWlw X2xldmVscyArDQorICogbWlwX2xldmVsLg0KKyAqIEB4OiBYIGNvb3JkaW5hdGUuDQorICogQHk6 IFkgY29vcmRpbmF0ZS4NCisgKiBAejogWiBjb29yZGluYXRlLg0KKyAqLw0KK3N0cnVjdCBzdmdh M2RzdXJmYWNlX2xvYyB7DQorCXUzMiBzdWJfcmVzb3VyY2U7DQorCXUzMiB4LCB5LCB6Ow0KK307 DQorDQorLyoqDQorICogc3ZnYTNkc3VyZmFjZV9zdWJyZXMgLSBDb21wdXRlIHRoZSBzdWJyZXNv dXJjZSBmcm9tIGxheWVyIGFuZCBtaXBtYXAuDQorICogQGNhY2hlOiBTdXJmYWNlIGxheW91dCBk YXRhLg0KKyAqIEBtaXBfbGV2ZWw6IFRoZSBtaXBtYXAgbGV2ZWwuDQorICogQGxheWVyOiBUaGUg c3VyZmFjZSBsYXllciAoZmFjZSBvciBhcnJheSBzbGljZSkuDQorICoNCisgKiBSZXR1cm46IFRo ZSBzdWJyZXNvdXJjZS4NCisgKi8NCitzdGF0aWMgaW5saW5lIHUzMiBzdmdhM2RzdXJmYWNlX3N1 YnJlcyhjb25zdCBzdHJ1Y3Qgc3ZnYTNkc3VyZmFjZV9jYWNoZSAqY2FjaGUsDQorCQkJCSAgICAg ICB1MzIgbWlwX2xldmVsLCB1MzIgbGF5ZXIpDQorew0KKwlyZXR1cm4gY2FjaGUtPm51bV9taXBf bGV2ZWxzICogbGF5ZXIgKyBtaXBfbGV2ZWw7DQorfQ0KKw0KKy8qKg0KKyAqIHN2Z2EzZHN1cmZh Y2Vfc2V0dXBfY2FjaGUgLSBCdWlsZCBhIHN1cmZhY2UgY2FjaGUgZW50cnkNCisgKiBAc2l6ZTog VGhlIHN1cmZhY2UgYmFzZSBsZXZlbCBkaW1lbnNpb25zLg0KKyAqIEBmb3JtYXQ6IFRoZSBzdXJm YWNlIGZvcm1hdC4NCisgKiBAbnVtX21pcF9sZXZlbHM6IE51bWJlciBvZiBtaXBtYXAgbGV2ZWxz Lg0KKyAqIEBudW1fbGF5ZXJzOiBOdW1iZXIgb2YgbGF5ZXJzLg0KKyAqIEBjYWNoZTogUG9pbnRl ciB0byBhIHN0cnVjdCBzdmdhM2RzdXJmYWNlX2NhY2ggb2JqZWN0IHRvIGJlIGZpbGxlZCBpbi4N CisgKi8NCitzdGF0aWMgaW5saW5lIHZvaWQgc3ZnYTNkc3VyZmFjZV9zZXR1cF9jYWNoZShjb25z dCBzdHJ1Y3QgZHJtX3Ztd19zaXplICpzaXplLA0KKwkJCQkJICAgICBTVkdBM2RTdXJmYWNlRm9y bWF0IGZvcm1hdCwNCisJCQkJCSAgICAgdTMyIG51bV9taXBfbGV2ZWxzLA0KKwkJCQkJICAgICB1 MzIgbnVtX2xheWVycywNCisJCQkJCSAgICAgdTMyIG51bV9zYW1wbGVzLA0KKwkJCQkJICAgICBz dHJ1Y3Qgc3ZnYTNkc3VyZmFjZV9jYWNoZSAqY2FjaGUpDQorew0KKwljb25zdCBzdHJ1Y3Qgc3Zn YTNkX3N1cmZhY2VfZGVzYyAqZGVzYzsNCisJdTMyIGk7DQorDQorCW1lbXNldChjYWNoZSwgMCwg c2l6ZW9mKCpjYWNoZSkpOw0KKwljYWNoZS0+ZGVzYyA9IGRlc2MgPSBzdmdhM2RzdXJmYWNlX2dl dF9kZXNjKGZvcm1hdCk7DQorCWNhY2hlLT5udW1fbWlwX2xldmVscyA9IG51bV9taXBfbGV2ZWxz Ow0KKwljYWNoZS0+bnVtX2xheWVycyA9IG51bV9sYXllcnM7DQorCWZvciAoaSA9IDA7IGkgPCBj YWNoZS0+bnVtX21pcF9sZXZlbHM7IGkrKykgew0KKwkJc3RydWN0IHN2Z2EzZHN1cmZhY2VfbWlw ICptaXAgPSAmY2FjaGUtPm1pcFtpXTsNCisNCisJCW1pcC0+c2l6ZSA9IHN2Z2EzZHN1cmZhY2Vf Z2V0X21pcF9zaXplKCpzaXplLCBpKTsNCisJCW1pcC0+Ynl0ZXMgPSBzdmdhM2RzdXJmYWNlX2dl dF9pbWFnZV9idWZmZXJfc2l6ZQ0KKwkJCShkZXNjLCAmbWlwLT5zaXplLCAwKSAqIG51bV9zYW1w bGVzOw0KKwkJbWlwLT5yb3dfc3RyaWRlID0NCisJCQlfX0tFUk5FTF9ESVZfUk9VTkRfVVAobWlw LT5zaXplLndpZHRoLA0KKwkJCQkJICAgICAgZGVzYy0+YmxvY2tfc2l6ZS53aWR0aCkgKg0KKwkJ CWRlc2MtPmJ5dGVzX3Blcl9ibG9jayAqIG51bV9zYW1wbGVzOw0KKwkJbWlwLT5pbWdfc3RyaWRl ID0NCisJCQlfX0tFUk5FTF9ESVZfUk9VTkRfVVAobWlwLT5zaXplLmhlaWdodCwNCisJCQkJCSAg ICAgIGRlc2MtPmJsb2NrX3NpemUuaGVpZ2h0KSAqDQorCQkJbWlwLT5yb3dfc3RyaWRlOw0KKwkJ Y2FjaGUtPm1pcF9jaGFpbl9ieXRlcyArPSBtaXAtPmJ5dGVzOw0KKwl9DQorfQ0KKw0KKy8qKg0K KyAqIHN2Z2EzZHN1cmZhY2VfZ2V0X2xvYyAtIEdldCBhIHN1cmZhY2UgbG9jYXRpb24gZnJvbSBh biBvZmZzZXQgaW50byB0aGUNCisgKiBiYWNraW5nIHN0b3JlDQorICogQGNhY2hlOiBTdXJmYWNl IGxheW91dCBkYXRhLg0KKyAqIEBsb2M6IFBvaW50ZXIgdG8gYSBzdHJ1Y3Qgc3ZnYTNkc3VyZmFj ZV9sb2MgdG8gYmUgZmlsbGVkIGluLg0KKyAqIEBvZmZzZXQ6IE9mZnNldCBpbnRvIHRoZSBzdXJm YWNlIGJhY2tpbmcgc3RvcmUuDQorICovDQorc3RhdGljIGlubGluZSB2b2lkDQorc3ZnYTNkc3Vy ZmFjZV9nZXRfbG9jKGNvbnN0IHN0cnVjdCBzdmdhM2RzdXJmYWNlX2NhY2hlICpjYWNoZSwNCisJ CSAgICAgIHN0cnVjdCBzdmdhM2RzdXJmYWNlX2xvYyAqbG9jLA0KKwkJICAgICAgc2l6ZV90IG9m ZnNldCkNCit7DQorCXUzMiBsYXllciA9IG9mZnNldCAvIGNhY2hlLT5taXBfY2hhaW5fYnl0ZXM7 DQorCWNvbnN0IHN0cnVjdCBzdmdhM2RzdXJmYWNlX21pcCAqbWlwID0gJmNhY2hlLT5taXBbMF07 DQorCWNvbnN0IHN0cnVjdCBzdmdhM2Rfc3VyZmFjZV9kZXNjICpkZXNjID0gY2FjaGUtPmRlc2M7 DQorCWludCBpOw0KKw0KKwlvZmZzZXQgLT0gbGF5ZXIgKiBjYWNoZS0+bWlwX2NoYWluX2J5dGVz Ow0KKwlmb3IgKGkgPSAwOyBpIDwgY2FjaGUtPm51bV9taXBfbGV2ZWxzOyArK2ksICsrbWlwKSB7 DQorCQlpZiAobWlwLT5ieXRlcyA+IG9mZnNldCkNCisJCQlicmVhazsNCisJCW9mZnNldCAtPSBt aXAtPmJ5dGVzOw0KKwl9DQorDQorCWxvYy0+c3ViX3Jlc291cmNlID0gc3ZnYTNkc3VyZmFjZV9z dWJyZXMoY2FjaGUsIGksIGxheWVyKTsNCisJbG9jLT56ID0gb2Zmc2V0IC8gbWlwLT5pbWdfc3Ry aWRlOw0KKwlvZmZzZXQgLT0gbG9jLT56ICogbWlwLT5pbWdfc3RyaWRlOw0KKwlsb2MtPnogKj0g ZGVzYy0+YmxvY2tfc2l6ZS5kZXB0aDsNCisJbG9jLT55ID0gb2Zmc2V0IC8gbWlwLT5yb3dfc3Ry aWRlOw0KKwlvZmZzZXQgLT0gbG9jLT55ICogbWlwLT5yb3dfc3RyaWRlOw0KKwlsb2MtPnkgKj0g ZGVzYy0+YmxvY2tfc2l6ZS5oZWlnaHQ7DQorCWxvYy0+eCA9IG9mZnNldCAvIGRlc2MtPmJ5dGVz X3Blcl9ibG9jazsNCisJbG9jLT54ICo9IGRlc2MtPmJsb2NrX3NpemUud2lkdGg7DQorfQ0KKw0K Ky8qKg0KKyAqIHN2Z2EzZHN1cmZhY2VfaW5jX2xvYyAtIENsYW1wIGluY3JlbWVudCBhIHN1cmZh Y2UgbG9jYXRpb24gd2l0aCBvbmUgYmxvY2sNCisgKiBzaXplDQorICogaW4gZWFjaCBkaW1lbnNp b24uDQorICogQGxvYzogUG9pbnRlciB0byBhIHN0cnVjdCBzdmdhM2RzdXJmYWNlX2xvYyB0byBi ZSBpbmNyZW1lbnRlZC4NCisgKg0KKyAqIFdoZW4gY29tcHV0aW5nIHRoZSBzaXplIG9mIGEgcmFu Z2UgYXMgc2l6ZSA9IGVuZCAtIHN0YXJ0LCB0aGUgcmFuZ2UgZG9lcyBub3QNCisgKiBpbmNsdWRl IHRoZSBlbmQgZWxlbWVudC4gSG93ZXZlciBhIGxvY2F0aW9uIHJlcHJlc2VudGluZyB0aGUgbGFz dCBieXRlDQorICogb2YgYSB0b3VjaGVkIHJlZ2lvbiBpbiB0aGUgYmFja2luZyBzdG9yZSAqaXMq IGluY2x1ZGVkIGluIHRoZSByYW5nZS4NCisgKiBUaGlzIGZ1bmN0aW9uIG1vZGlmaWVzIHN1Y2gg YSBsb2NhdGlvbiB0byBtYXRjaCB0aGUgZW5kIGRlZmluaXRpb24NCisgKiBnaXZlbiBhcyBzdGFy dCArIHNpemUgd2hpY2ggaXMgdGhlIG9uZSB1c2VkIGluIGEgU1ZHQTNkQm94Lg0KKyAqLw0KK3N0 YXRpYyBpbmxpbmUgdm9pZA0KK3N2Z2EzZHN1cmZhY2VfaW5jX2xvYyhjb25zdCBzdHJ1Y3Qgc3Zn YTNkc3VyZmFjZV9jYWNoZSAqY2FjaGUsDQorCQkgICAgICBzdHJ1Y3Qgc3ZnYTNkc3VyZmFjZV9s b2MgKmxvYykNCit7DQorCWNvbnN0IHN0cnVjdCBzdmdhM2Rfc3VyZmFjZV9kZXNjICpkZXNjID0g Y2FjaGUtPmRlc2M7DQorCXUzMiBtaXAgPSBsb2MtPnN1Yl9yZXNvdXJjZSAlIGNhY2hlLT5udW1f bWlwX2xldmVsczsNCisJY29uc3Qgc3RydWN0IGRybV92bXdfc2l6ZSAqc2l6ZSA9ICZjYWNoZS0+ bWlwW21pcF0uc2l6ZTsNCisNCisJbG9jLT5zdWJfcmVzb3VyY2UrKzsNCisJbG9jLT54ICs9IGRl c2MtPmJsb2NrX3NpemUud2lkdGg7DQorCWlmIChsb2MtPnggPiBzaXplLT53aWR0aCkNCisJCWxv Yy0+eCA9IHNpemUtPndpZHRoOw0KKwlsb2MtPnkgKz0gZGVzYy0+YmxvY2tfc2l6ZS5oZWlnaHQ7 DQorCWlmIChsb2MtPnkgPiBzaXplLT5oZWlnaHQpDQorCQlsb2MtPnkgPSBzaXplLT5oZWlnaHQ7 DQorCWxvYy0+eiArPSBkZXNjLT5ibG9ja19zaXplLmRlcHRoOw0KKwlpZiAobG9jLT56ID4gc2l6 ZS0+ZGVwdGgpDQorCQlsb2MtPnogPSBzaXplLT5kZXB0aDsNCit9DQorDQorLyoqDQorICogc3Zn YTNkc3VyZmFjZV9taW5fbG9jIC0gVGhlIHN0YXJ0IGxvY2F0aW9uIGluIGEgc3VicmVzb3VyY2UN CisgKiBAY2FjaGU6IFN1cmZhY2UgbGF5b3V0IGRhdGEuDQorICogQHN1Yl9yZXNvdXJjZTogVGhl IHN1YnJlc291cmNlLg0KKyAqIEBsb2M6IFBvaW50ZXIgdG8gYSBzdHJ1Y3Qgc3ZnYTNkc3VyZmFj ZV9sb2MgdG8gYmUgZmlsbGVkIGluLg0KKyAqLw0KK3N0YXRpYyBpbmxpbmUgdm9pZA0KK3N2Z2Ez ZHN1cmZhY2VfbWluX2xvYyhjb25zdCBzdHJ1Y3Qgc3ZnYTNkc3VyZmFjZV9jYWNoZSAqY2FjaGUs DQorCQkgICAgICB1MzIgc3ViX3Jlc291cmNlLA0KKwkJICAgICAgc3RydWN0IHN2Z2EzZHN1cmZh Y2VfbG9jICpsb2MpDQorew0KKwlsb2MtPnN1Yl9yZXNvdXJjZSA9IHN1Yl9yZXNvdXJjZTsNCisJ bG9jLT54ID0gbG9jLT55ID0gbG9jLT56ID0gMDsNCit9DQorDQorLyoqDQorICogc3ZnYTNkc3Vy ZmFjZV9taW5fbG9jIC0gVGhlIGVuZCBsb2NhdGlvbiBpbiBhIHN1YnJlc291cmNlDQorICogQGNh Y2hlOiBTdXJmYWNlIGxheW91dCBkYXRhLg0KKyAqIEBzdWJfcmVzb3VyY2U6IFRoZSBzdWJyZXNv dXJjZS4NCisgKiBAbG9jOiBQb2ludGVyIHRvIGEgc3RydWN0IHN2Z2EzZHN1cmZhY2VfbG9jIHRv IGJlIGZpbGxlZCBpbi4NCisgKg0KKyAqIEZvbGxvd2luZyB0aGUgZW5kIGRlZmluaXRpb24gZ2l2 ZW4gaW4gc3ZnYTNkc3VyZmFjZV9pbmNfbG9jKCksDQorICogQ29tcHV0ZSB0aGUgZW5kIGxvY2F0 aW9uIG9mIGEgc3VyZmFjZSBzdWJyZXNvdXJjZS4NCisgKi8NCitzdGF0aWMgaW5saW5lIHZvaWQN CitzdmdhM2RzdXJmYWNlX21heF9sb2MoY29uc3Qgc3RydWN0IHN2Z2EzZHN1cmZhY2VfY2FjaGUg KmNhY2hlLA0KKwkJICAgICAgdTMyIHN1Yl9yZXNvdXJjZSwNCisJCSAgICAgIHN0cnVjdCBzdmdh M2RzdXJmYWNlX2xvYyAqbG9jKQ0KK3sNCisJY29uc3Qgc3RydWN0IGRybV92bXdfc2l6ZSAqc2l6 ZTsNCisJdTMyIG1pcDsNCisNCisJbG9jLT5zdWJfcmVzb3VyY2UgPSBzdWJfcmVzb3VyY2UgKyAx Ow0KKwltaXAgPSBzdWJfcmVzb3VyY2UgJSBjYWNoZS0+bnVtX21pcF9sZXZlbHM7DQorCXNpemUg PSAmY2FjaGUtPm1pcFttaXBdLnNpemU7DQorCWxvYy0+eCA9IHNpemUtPndpZHRoOw0KKwlsb2Mt PnkgPSBzaXplLT5oZWlnaHQ7DQorCWxvYy0+eiA9IHNpemUtPmRlcHRoOw0KK30NCisNCiAjZW5k aWYgLyogX1NWR0EzRF9TVVJGQUNFREVGU19IXyAqLw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf ZHJ2LmgNCmluZGV4IGFiMzY3MGEwNjEwOC4uM2FkN2IwZjQxYTMwIDEwMDY0NA0KLS0tIGEvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92 bXdnZngvdm13Z2Z4X2Rydi5oDQpAQCAtNDQsOSArNDQsOSBAQA0KICNpbmNsdWRlIDxsaW51eC9z eW5jX2ZpbGUuaD4NCiANCiAjZGVmaW5lIFZNV0dGWF9EUklWRVJfTkFNRSAidm13Z2Z4Ig0KLSNk ZWZpbmUgVk1XR0ZYX0RSSVZFUl9EQVRFICIyMDE4MDcwNCINCisjZGVmaW5lIFZNV0dGWF9EUklW RVJfREFURSAiMjAxOTAzMjgiDQogI2RlZmluZSBWTVdHRlhfRFJJVkVSX01BSk9SIDINCi0jZGVm aW5lIFZNV0dGWF9EUklWRVJfTUlOT1IgMTUNCisjZGVmaW5lIFZNV0dGWF9EUklWRVJfTUlOT1Ig MTYNCiAjZGVmaW5lIFZNV0dGWF9EUklWRVJfUEFUQ0hMRVZFTCAwDQogI2RlZmluZSBWTVdHRlhf RklMRV9QQUdFX09GRlNFVCAweDAwMTAwMDAwDQogI2RlZmluZSBWTVdHRlhfRklGT19TVEFUSUNf U0laRSAoMTAyNCoxMDI0KQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X3N1cmZhY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N1cmZhY2UuYw0K aW5kZXggYzQwZDQ0ZjRkOWFmLi5mNTYxNDE1MjlkYTUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9zdXJmYWNlLmMNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdn Zngvdm13Z2Z4X3N1cmZhY2UuYw0KQEAgLTY4LDYgKzY4LDIwIEBAIHN0cnVjdCB2bXdfc3VyZmFj ZV9vZmZzZXQgew0KIAl1aW50MzJfdCBib19vZmZzZXQ7DQogfTsNCiANCisvKioNCisgKiB2bXdf c3VyZmFjZV9kaXJ0eSAtIFN1cmZhY2UgZGlydHktdHJhY2tlcg0KKyAqIEBjYWNoZTogQ2FjaGVk IGxheW91dCBpbmZvcm1hdGlvbiBvZiB0aGUgc3VyZmFjZS4NCisgKiBAc2l6ZTogQWNjb3VudGlu ZyBzaXplIGZvciB0aGUgc3RydWN0IHZtd19zdXJmYWNlX2RpcnR5Lg0KKyAqIEBudW1fc3VicmVz OiBOdW1iZXIgb2Ygc3VicmVzb3VyY2VzLg0KKyAqIEBib3hlczogQXJyYXkgb2YgU1ZHQTNkQm94 ZXMgaW5kaWNhdGluZyBkaXJ0eSByZWdpb25zLiBPbmUgcGVyIHN1YnJlc291cmNlLg0KKyAqLw0K K3N0cnVjdCB2bXdfc3VyZmFjZV9kaXJ0eSB7DQorCXN0cnVjdCBzdmdhM2RzdXJmYWNlX2NhY2hl IGNhY2hlOw0KKwlzaXplX3Qgc2l6ZTsNCisJdTMyIG51bV9zdWJyZXM7DQorCVNWR0EzZEJveCBi b3hlc1swXTsNCit9Ow0KKw0KIHN0YXRpYyB2b2lkIHZtd191c2VyX3N1cmZhY2VfZnJlZShzdHJ1 Y3Qgdm13X3Jlc291cmNlICpyZXMpOw0KIHN0YXRpYyBzdHJ1Y3Qgdm13X3Jlc291cmNlICoNCiB2 bXdfdXNlcl9zdXJmYWNlX2Jhc2VfdG9fcmVzKHN0cnVjdCB0dG1fYmFzZV9vYmplY3QgKmJhc2Up Ow0KQEAgLTk2LDYgKzExMCwxMyBAQCB2bXdfZ2Jfc3VyZmFjZV9yZWZlcmVuY2VfaW50ZXJuYWwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwNCiAJCQkJICBzdHJ1Y3QgZHJtX3Ztd19nYl9zdXJmYWNl X3JlZl9leHRfcmVwICpyZXAsDQogCQkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOw0K IA0KK3N0YXRpYyB2b2lkIHZtd19zdXJmYWNlX2RpcnR5X2ZyZWUoc3RydWN0IHZtd19yZXNvdXJj ZSAqcmVzKTsNCitzdGF0aWMgaW50IHZtd19zdXJmYWNlX2RpcnR5X2FsbG9jKHN0cnVjdCB2bXdf cmVzb3VyY2UgKnJlcyk7DQorc3RhdGljIGludCB2bXdfc3VyZmFjZV9kaXJ0eV9zeW5jKHN0cnVj dCB2bXdfcmVzb3VyY2UgKnJlcyk7DQorc3RhdGljIHZvaWQgdm13X3N1cmZhY2VfZGlydHlfcmFu Z2VfYWRkKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcywgc2l6ZV90IHN0YXJ0LA0KKwkJCQkJc2l6 ZV90IGVuZCk7DQorc3RhdGljIGludCB2bXdfc3VyZmFjZV9jbGVhbihzdHJ1Y3Qgdm13X3Jlc291 cmNlICpyZXMpOw0KKw0KIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm13X3VzZXJfcmVzb3VyY2VfY29u diB1c2VyX3N1cmZhY2VfY29udiA9IHsNCiAJLm9iamVjdF90eXBlID0gVk1XX1JFU19TVVJGQUNF LA0KIAkuYmFzZV9vYmpfdG9fcmVzID0gdm13X3VzZXJfc3VyZmFjZV9iYXNlX3RvX3JlcywNCkBA IC0xMzMsNyArMTU0LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm13X3Jlc19mdW5jIHZtd19n Yl9zdXJmYWNlX2Z1bmMgPSB7DQogCS5jcmVhdGUgPSB2bXdfZ2Jfc3VyZmFjZV9jcmVhdGUsDQog CS5kZXN0cm95ID0gdm13X2diX3N1cmZhY2VfZGVzdHJveSwNCiAJLmJpbmQgPSB2bXdfZ2Jfc3Vy ZmFjZV9iaW5kLA0KLQkudW5iaW5kID0gdm13X2diX3N1cmZhY2VfdW5iaW5kDQorCS51bmJpbmQg PSB2bXdfZ2Jfc3VyZmFjZV91bmJpbmQsDQorCS5kaXJ0eV9hbGxvYyA9IHZtd19zdXJmYWNlX2Rp cnR5X2FsbG9jLA0KKwkuZGlydHlfZnJlZSA9IHZtd19zdXJmYWNlX2RpcnR5X2ZyZWUsDQorCS5k aXJ0eV9zeW5jID0gdm13X3N1cmZhY2VfZGlydHlfc3luYywNCisJLmRpcnR5X3JhbmdlX2FkZCA9 IHZtd19zdXJmYWNlX2RpcnR5X3JhbmdlX2FkZCwNCisJLmNsZWFuID0gdm13X3N1cmZhY2VfY2xl YW4sDQogfTsNCiANCiAvKioNCkBAIC02NDEsNiArNjY3LDcgQEAgc3RhdGljIHZvaWQgdm13X3Vz ZXJfc3VyZmFjZV9mcmVlKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcykNCiAJc3RydWN0IHZtd19w cml2YXRlICpkZXZfcHJpdiA9IHNyZi0+cmVzLmRldl9wcml2Ow0KIAl1aW50MzJfdCBzaXplID0g dXNlcl9zcmYtPnNpemU7DQogDQorCVdBUk5fT05fT05DRShyZXMtPmRpcnR5KTsNCiAJaWYgKHVz ZXJfc3JmLT5tYXN0ZXIpDQogCQlkcm1fbWFzdGVyX3B1dCgmdXNlcl9zcmYtPm1hc3Rlcik7DQog CWtmcmVlKHNyZi0+b2Zmc2V0cyk7DQpAQCAtMTE3NCwxMCArMTIwMSwxNiBAQCBzdGF0aWMgaW50 IHZtd19nYl9zdXJmYWNlX2JpbmQoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzLA0KIAkJY21kMi0+ aGVhZGVyLmlkID0gU1ZHQV8zRF9DTURfVVBEQVRFX0dCX1NVUkZBQ0U7DQogCQljbWQyLT5oZWFk ZXIuc2l6ZSA9IHNpemVvZihjbWQyLT5ib2R5KTsNCiAJCWNtZDItPmJvZHkuc2lkID0gcmVzLT5p ZDsNCi0JCXJlcy0+YmFja3VwX2RpcnR5ID0gZmFsc2U7DQogCX0NCiAJdm13X2ZpZm9fY29tbWl0 KGRldl9wcml2LCBzdWJtaXRfc2l6ZSk7DQogDQorCWlmIChyZXMtPmJhY2t1cC0+ZGlydHkgJiYg cmVzLT5iYWNrdXBfZGlydHkpIHsNCisJCS8qIFdlJ3ZlIGp1c3QgbWFkZSBhIGZ1bGwgdXBsb2Fk LiBDZWFyIGRpcnR5IHJlZ2lvbnMuICovDQorCQl2bXdfYm9fZGlydHlfY2xlYXJfcmVzKHJlcyk7 DQorCX0NCisNCisJcmVzLT5iYWNrdXBfZGlydHkgPSBmYWxzZTsNCisNCiAJcmV0dXJuIDA7DQog fQ0KIA0KQEAgLTE2NDIsNyArMTY3NSw4IEBAIHZtd19nYl9zdXJmYWNlX2RlZmluZV9pbnRlcm5h bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0KIAkJCX0NCiAJCX0NCiAJfSBlbHNlIGlmIChyZXEt PmJhc2UuZHJtX3N1cmZhY2VfZmxhZ3MgJg0KLQkJICAgZHJtX3Ztd19zdXJmYWNlX2ZsYWdfY3Jl YXRlX2J1ZmZlcikNCisJCSAgIChkcm1fdm13X3N1cmZhY2VfZmxhZ19jcmVhdGVfYnVmZmVyIHwN CisJCSAgICBkcm1fdm13X3N1cmZhY2VfZmxhZ19jb2hlcmVudCkpDQogCQlyZXQgPSB2bXdfdXNl cl9ib19hbGxvYyhkZXZfcHJpdiwgdGZpbGUsDQogCQkJCQlyZXMtPmJhY2t1cF9zaXplLA0KIAkJ CQkJcmVxLT5iYXNlLmRybV9zdXJmYWNlX2ZsYWdzICYNCkBAIC0xNjU2LDYgKzE2OTAsMjYgQEAg dm13X2diX3N1cmZhY2VfZGVmaW5lX2ludGVybmFsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsDQog CQlnb3RvIG91dF91bmxvY2s7DQogCX0NCiANCisJaWYgKHJlcS0+YmFzZS5kcm1fc3VyZmFjZV9m bGFncyAmIGRybV92bXdfc3VyZmFjZV9mbGFnX2NvaGVyZW50KSB7DQorCQlzdHJ1Y3Qgdm13X2J1 ZmZlcl9vYmplY3QgKmJhY2t1cCA9IHJlcy0+YmFja3VwOw0KKw0KKwkJdHRtX2JvX3Jlc2VydmUo JmJhY2t1cC0+YmFzZSwgZmFsc2UsIGZhbHNlLCBOVUxMKTsNCisJCWlmICghcmVzLT5mdW5jLT5k aXJ0eV9hbGxvYykNCisJCQlyZXQgPSAtRUlOVkFMOw0KKwkJaWYgKCFyZXQpDQorCQkJcmV0ID0g dm13X2JvX2RpcnR5X2FkZChiYWNrdXApOw0KKwkJaWYgKCFyZXQpIHsNCisJCQlyZXMtPmNvaGVy ZW50ID0gdHJ1ZTsNCisJCQlyZXQgPSByZXMtPmZ1bmMtPmRpcnR5X2FsbG9jKHJlcyk7DQorCQl9 DQorCQl0dG1fYm9fdW5yZXNlcnZlKCZiYWNrdXAtPmJhc2UpOw0KKwkJaWYgKHJldCkgew0KKwkJ CXZtd19yZXNvdXJjZV91bnJlZmVyZW5jZSgmcmVzKTsNCisJCQlnb3RvIG91dF91bmxvY2s7DQor CQl9DQorDQorCX0NCisNCiAJdG1wID0gdm13X3Jlc291cmNlX3JlZmVyZW5jZShyZXMpOw0KIAly ZXQgPSB0dG1fcHJpbWVfb2JqZWN0X2luaXQodGZpbGUsIHJlcy0+YmFja3VwX3NpemUsICZ1c2Vy X3NyZi0+cHJpbWUsDQogCQkJCSAgICByZXEtPmJhc2UuZHJtX3N1cmZhY2VfZmxhZ3MgJg0KQEAg LTE3NjQsMyArMTgxOCwzMzMgQEAgdm13X2diX3N1cmZhY2VfcmVmZXJlbmNlX2ludGVybmFsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsDQogDQogCXJldHVybiByZXQ7DQogfQ0KKw0KKy8qKg0KKyAq IHZtd19zdWJyZXNfZGlydHlfYWRkIC0gQWRkIGEgZGlydHkgcmVnaW9uIHRvIGEgc3VicmVzb3Vy Y2UNCisgKiBAZGlydHk6IFRoZSBzdXJmYWNlcydzIGRpcnR5IHRyYWNrZXIuDQorICogQGxvY19z dGFydDogVGhlIGxvY2F0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHN0YXJ0IG9mIHRoZSByZWdp b24uDQorICogQGxvY19lbmQ6IFRoZSBsb2NhdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbmQg b2YgdGhlIHJlZ2lvbi4NCisgKg0KKyAqIEFzIHdlIGFyZSBhc3N1bWluZyB0aGF0IEBsb2Nfc3Rh cnQgYW5kIEBsb2NfZW5kIHJlcHJlc2VudCBhIHNlcXVlbnRpYWwNCisgKiByYW5nZSBvZiBiYWNr aW5nIHN0b3JlIG1lbW9yeSwgaWYgdGhlIHJlZ2lvbiBzcGFucyBtdWx0aXBsZSBsaW5lcyB0aGVu DQorICogcmVnYXJkbGVzcyBvZiB0aGUgeCBjb29yZGluYXRlLCB0aGUgZnVsbCBsaW5lcyBhcmUg ZGlydGllZC4NCisgKiBDb3JyZXNwb25kaW5nbHkgaWYgdGhlIHJlZ2lvbiBzcGFucyBtdWx0aXBs ZSB6IHNsaWNlcywgdGhlbiBmdWxsIHJhdGhlcg0KKyAqIHRoYW4gcGFydGlhbCB6IHNsaWNlcyBh cmUgZGlydGllZC4NCisgKi8NCitzdGF0aWMgdm9pZCB2bXdfc3VicmVzX2RpcnR5X2FkZChzdHJ1 Y3Qgdm13X3N1cmZhY2VfZGlydHkgKmRpcnR5LA0KKwkJCQkgY29uc3Qgc3RydWN0IHN2Z2EzZHN1 cmZhY2VfbG9jICpsb2Nfc3RhcnQsDQorCQkJCSBjb25zdCBzdHJ1Y3Qgc3ZnYTNkc3VyZmFjZV9s b2MgKmxvY19lbmQpDQorew0KKwljb25zdCBzdHJ1Y3Qgc3ZnYTNkc3VyZmFjZV9jYWNoZSAqY2Fj aGUgPSAmZGlydHktPmNhY2hlOw0KKwlTVkdBM2RCb3ggKmJveCA9ICZkaXJ0eS0+Ym94ZXNbbG9j X3N0YXJ0LT5zdWJfcmVzb3VyY2VdOw0KKwl1MzIgbWlwID0gbG9jX3N0YXJ0LT5zdWJfcmVzb3Vy Y2UgJSBjYWNoZS0+bnVtX21pcF9sZXZlbHM7DQorCWNvbnN0IHN0cnVjdCBkcm1fdm13X3NpemUg KnNpemUgPSAmY2FjaGUtPm1pcFttaXBdLnNpemU7DQorCXUzMiBib3hfYzIgPSBib3gtPnogKyBi b3gtPmQ7DQorDQorCWlmIChXQVJOX09OKGxvY19zdGFydC0+c3ViX3Jlc291cmNlID49IGRpcnR5 LT5udW1fc3VicmVzKSkNCisJCXJldHVybjsNCisNCisJaWYgKGJveC0+ZCA9PSAwIHx8IGJveC0+ eiA+IGxvY19zdGFydC0+eikNCisJCWJveC0+eiA9IGxvY19zdGFydC0+ejsNCisJaWYgKGJveF9j MiA8IGxvY19lbmQtPnopDQorCQlib3gtPmQgPSBsb2NfZW5kLT56IC0gYm94LT56Ow0KKw0KKwlp ZiAobG9jX3N0YXJ0LT56ICsgMSA9PSBsb2NfZW5kLT56KSB7DQorCQlib3hfYzIgPSBib3gtPnkg KyBib3gtPmg7DQorCQlpZiAoYm94LT5oID09IDAgfHwgYm94LT55ID4gbG9jX3N0YXJ0LT55KQ0K KwkJCWJveC0+eSA9IGxvY19zdGFydC0+eTsNCisJCWlmIChib3hfYzIgPCBsb2NfZW5kLT55KQ0K KwkJCWJveC0+aCA9IGxvY19lbmQtPnkgLSBib3gtPnk7DQorDQorCQlpZiAobG9jX3N0YXJ0LT55 ICsgMSA9PSBsb2NfZW5kLT55KSB7DQorCQkJYm94X2MyID0gYm94LT54ICsgYm94LT53Ow0KKwkJ CWlmIChib3gtPncgPT0gMCB8fCBib3gtPnggPiBsb2Nfc3RhcnQtPngpDQorCQkJCWJveC0+eCA9 IGxvY19zdGFydC0+eDsNCisJCQlpZiAoYm94X2MyIDwgbG9jX2VuZC0+eCkNCisJCQkJYm94LT53 ID0gbG9jX2VuZC0+eCAtIGJveC0+eDsNCisJCX0gZWxzZSB7DQorCQkJYm94LT54ID0gMDsNCisJ CQlib3gtPncgPSBzaXplLT53aWR0aDsNCisJCX0NCisJfSBlbHNlIHsNCisJCWJveC0+eSA9IDA7 DQorCQlib3gtPmggPSBzaXplLT5oZWlnaHQ7DQorCQlib3gtPnggPSAwOw0KKwkJYm94LT53ID0g c2l6ZS0+d2lkdGg7DQorCX0NCit9DQorDQorLyoqDQorICogdm13X3N1YnJlc19kaXJ0eV9mdWxs IC0gTWFyayBhIGZ1bGwgc3VicmVzb3VyY2UgYXMgZGlydHkNCisgKiBAZGlydHk6IFRoZSBzdXJm YWNlJ3MgZGlydHkgdHJhY2tlci4NCisgKiBAc3VicmVzOiBUaGUgc3VicmVzb3VyY2UNCisgKi8N CitzdGF0aWMgdm9pZCB2bXdfc3VicmVzX2RpcnR5X2Z1bGwoc3RydWN0IHZtd19zdXJmYWNlX2Rp cnR5ICpkaXJ0eSwgdTMyIHN1YnJlcykNCit7DQorCWNvbnN0IHN0cnVjdCBzdmdhM2RzdXJmYWNl X2NhY2hlICpjYWNoZSA9ICZkaXJ0eS0+Y2FjaGU7DQorCXUzMiBtaXAgPSBzdWJyZXMgJSBjYWNo ZS0+bnVtX21pcF9sZXZlbHM7DQorCWNvbnN0IHN0cnVjdCBkcm1fdm13X3NpemUgKnNpemUgPSAm Y2FjaGUtPm1pcFttaXBdLnNpemU7DQorCVNWR0EzZEJveCAqYm94ID0gJmRpcnR5LT5ib3hlc1tz dWJyZXNdOw0KKw0KKwlib3gtPnggPSAwOw0KKwlib3gtPnkgPSAwOw0KKwlib3gtPnogPSAwOw0K Kwlib3gtPncgPSBzaXplLT53aWR0aDsNCisJYm94LT5oID0gc2l6ZS0+aGVpZ2h0Ow0KKwlib3gt PmQgPSBzaXplLT5kZXB0aDsNCit9DQorDQorLyoNCisgKiB2bXdfc3VyZmFjZV90ZXhfZGlydHlf YWRkX3JhbmdlIC0gVGhlIGRpcnR5X2FkZF9yYW5nZSBjYWxsYmFjayBmb3IgdGV4dHVyZQ0KKyAq IHN1cmZhY2VzLg0KKyAqLw0KK3N0YXRpYyB2b2lkIHZtd19zdXJmYWNlX3RleF9kaXJ0eV9yYW5n ZV9hZGQoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzLA0KKwkJCQkJICAgIHNpemVfdCBzdGFydCwg c2l6ZV90IGVuZCkNCit7DQorCXN0cnVjdCB2bXdfc3VyZmFjZV9kaXJ0eSAqZGlydHkgPQ0KKwkJ KHN0cnVjdCB2bXdfc3VyZmFjZV9kaXJ0eSAqKSByZXMtPmRpcnR5Ow0KKwlzaXplX3QgYmFja3Vw X2VuZCA9IHJlcy0+YmFja3VwX29mZnNldCArIHJlcy0+YmFja3VwX3NpemU7DQorCXN0cnVjdCBz dmdhM2RzdXJmYWNlX2xvYyBsb2MxLCBsb2MyOw0KKwljb25zdCBzdHJ1Y3Qgc3ZnYTNkc3VyZmFj ZV9jYWNoZSAqY2FjaGU7DQorDQorCXN0YXJ0ID0gbWF4KHN0YXJ0LCByZXMtPmJhY2t1cF9vZmZz ZXQpIC0gcmVzLT5iYWNrdXBfb2Zmc2V0Ow0KKwllbmQgPSBtaW4oZW5kLCBiYWNrdXBfZW5kKSAt IHJlcy0+YmFja3VwX29mZnNldDsNCisJY2FjaGUgPSAmZGlydHktPmNhY2hlOw0KKwlzdmdhM2Rz dXJmYWNlX2dldF9sb2MoY2FjaGUsICZsb2MxLCBzdGFydCk7DQorCXN2Z2EzZHN1cmZhY2VfZ2V0 X2xvYyhjYWNoZSwgJmxvYzIsIGVuZCAtIDEpOw0KKwlzdmdhM2RzdXJmYWNlX2luY19sb2MoY2Fj aGUsICZsb2MyKTsNCisNCisJaWYgKGxvYzEuc3ViX3Jlc291cmNlICsgMSA9PSBsb2MyLnN1Yl9y ZXNvdXJjZSkgew0KKwkJLyogRGlydHkgcmFuZ2UgY292ZXJzIGEgc2luZ2xlIHN1Yi1yZXNvdXJj ZSAqLw0KKwkJdm13X3N1YnJlc19kaXJ0eV9hZGQoZGlydHksICZsb2MxLCAmbG9jMik7DQorCX0g ZWxzZSB7DQorCQkvKiBEaXJ0eSByYW5nZSBjb3ZlcnMgbXVsdGlwbGUgc3ViLXJlc291cmNlcyAq Lw0KKwkJc3RydWN0IHN2Z2EzZHN1cmZhY2VfbG9jIGxvY19taW4sIGxvY19tYXg7DQorCQl1MzIg c3ViX3JlcyA9IGxvYzEuc3ViX3Jlc291cmNlOw0KKw0KKwkJc3ZnYTNkc3VyZmFjZV9tYXhfbG9j KGNhY2hlLCBsb2MxLnN1Yl9yZXNvdXJjZSwgJmxvY19tYXgpOw0KKwkJdm13X3N1YnJlc19kaXJ0 eV9hZGQoZGlydHksICZsb2MxLCAmbG9jX21heCk7DQorCQlzdmdhM2RzdXJmYWNlX21pbl9sb2Mo Y2FjaGUsIGxvYzIuc3ViX3Jlc291cmNlIC0gMSwgJmxvY19taW4pOw0KKwkJdm13X3N1YnJlc19k aXJ0eV9hZGQoZGlydHksICZsb2NfbWluLCAmbG9jMik7DQorCQlmb3IgKHN1Yl9yZXMgPSBsb2Mx LnN1Yl9yZXNvdXJjZSArIDE7DQorCQkgICAgIHN1Yl9yZXMgPCBsb2MyLnN1Yl9yZXNvdXJjZSAt IDE7ICsrc3ViX3JlcykNCisJCQl2bXdfc3VicmVzX2RpcnR5X2Z1bGwoZGlydHksIHN1Yl9yZXMp Ow0KKwl9DQorfQ0KKw0KKy8qDQorICogdm13X3N1cmZhY2VfdGV4X2RpcnR5X2FkZF9yYW5nZSAt IFRoZSBkaXJ0eV9hZGRfcmFuZ2UgY2FsbGJhY2sgZm9yIGJ1ZmZlcg0KKyAqIHN1cmZhY2VzLg0K KyAqLw0KK3N0YXRpYyB2b2lkIHZtd19zdXJmYWNlX2J1Zl9kaXJ0eV9yYW5nZV9hZGQoc3RydWN0 IHZtd19yZXNvdXJjZSAqcmVzLA0KKwkJCQkJICAgIHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCkN Cit7DQorCXN0cnVjdCB2bXdfc3VyZmFjZV9kaXJ0eSAqZGlydHkgPQ0KKwkJKHN0cnVjdCB2bXdf c3VyZmFjZV9kaXJ0eSAqKSByZXMtPmRpcnR5Ow0KKwljb25zdCBzdHJ1Y3Qgc3ZnYTNkc3VyZmFj ZV9jYWNoZSAqY2FjaGUgPSAmZGlydHktPmNhY2hlOw0KKwlzaXplX3QgYmFja3VwX2VuZCA9IHJl cy0+YmFja3VwX29mZnNldCArIGNhY2hlLT5taXBfY2hhaW5fYnl0ZXM7DQorCVNWR0EzZEJveCAq Ym94ID0gJmRpcnR5LT5ib3hlc1swXTsNCisJdTMyIGJveF9jMjsNCisNCisJYm94LT5oID0gYm94 LT5kID0gMTsNCisJc3RhcnQgPSBtYXgoc3RhcnQsIHJlcy0+YmFja3VwX29mZnNldCkgLSByZXMt PmJhY2t1cF9vZmZzZXQ7DQorCWVuZCA9IG1pbihlbmQsIGJhY2t1cF9lbmQpIC0gcmVzLT5iYWNr dXBfb2Zmc2V0Ow0KKwlib3hfYzIgPSBib3gtPnggKyBib3gtPnc7DQorCWlmIChib3gtPncgPT0g MCB8fCBib3gtPnggPiBzdGFydCkNCisJCWJveC0+eCA9IHN0YXJ0Ow0KKwlpZiAoYm94X2MyIDwg ZW5kKQ0KKwkJYm94LT53ID0gZW5kIC0gYm94LT54Ow0KK30NCisNCisvKg0KKyAqIHZtd19zdXJm YWNlX3RleF9kaXJ0eV9hZGRfcmFuZ2UgLSBUaGUgZGlydHlfYWRkX3JhbmdlIGNhbGxiYWNrIGZv ciBzdXJmYWNlcw0KKyAqLw0KK3N0YXRpYyB2b2lkIHZtd19zdXJmYWNlX2RpcnR5X3JhbmdlX2Fk ZChzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMsIHNpemVfdCBzdGFydCwNCisJCQkJCXNpemVfdCBl bmQpDQorew0KKwlzdHJ1Y3Qgdm13X3N1cmZhY2UgKnNyZiA9IHZtd19yZXNfdG9fc3JmKHJlcyk7 DQorDQorCWlmIChXQVJOX09OKGVuZCA8PSByZXMtPmJhY2t1cF9vZmZzZXQgfHwNCisJCSAgICBz dGFydCA+PSByZXMtPmJhY2t1cF9vZmZzZXQgKyByZXMtPmJhY2t1cF9zaXplKSkNCisJCXJldHVy bjsNCisNCisJaWYgKHNyZi0+Zm9ybWF0ID09IFNWR0EzRF9CVUZGRVIpDQorCQl2bXdfc3VyZmFj ZV9idWZfZGlydHlfcmFuZ2VfYWRkKHJlcywgc3RhcnQsIGVuZCk7DQorCWVsc2UNCisJCXZtd19z dXJmYWNlX3RleF9kaXJ0eV9yYW5nZV9hZGQocmVzLCBzdGFydCwgZW5kKTsNCit9DQorDQorLyoN CisgKiB2bXdfc3VyZmFjZV9kaXJ0eV9zeW5jIC0gVGhlIHN1cmZhY2UncyBkaXJ0eV9zeW5jIGNh bGxiYWNrLg0KKyAqLw0KK3N0YXRpYyBpbnQgdm13X3N1cmZhY2VfZGlydHlfc3luYyhzdHJ1Y3Qg dm13X3Jlc291cmNlICpyZXMpDQorew0KKwlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2ID0g cmVzLT5kZXZfcHJpdjsNCisJYm9vbCBoYXNfZHggPSAwOw0KKwl1MzIgaSwgbnVtX2RpcnR5Ow0K KwlzdHJ1Y3Qgdm13X3N1cmZhY2VfZGlydHkgKmRpcnR5ID0NCisJCShzdHJ1Y3Qgdm13X3N1cmZh Y2VfZGlydHkgKikgcmVzLT5kaXJ0eTsNCisJc2l6ZV90IGFsbG9jX3NpemU7DQorCWNvbnN0IHN0 cnVjdCBzdmdhM2RzdXJmYWNlX2NhY2hlICpjYWNoZSA9ICZkaXJ0eS0+Y2FjaGU7DQorCXN0cnVj dCB7DQorCQlTVkdBM2RDbWRIZWFkZXIgaGVhZGVyOw0KKwkJU1ZHQTNkQ21kRFhVcGRhdGVTdWJS ZXNvdXJjZSBib2R5Ow0KKwl9ICpjbWQxOw0KKwlzdHJ1Y3Qgew0KKwkJU1ZHQTNkQ21kSGVhZGVy IGhlYWRlcjsNCisJCVNWR0EzZENtZFVwZGF0ZUdCSW1hZ2UgYm9keTsNCisJfSAqY21kMjsNCisJ dm9pZCAqY21kOw0KKw0KKwludW1fZGlydHkgPSAwOw0KKwlmb3IgKGkgPSAwOyBpIDwgZGlydHkt Pm51bV9zdWJyZXM7ICsraSkgew0KKwkJY29uc3QgU1ZHQTNkQm94ICpib3ggPSAmZGlydHktPmJv eGVzW2ldOw0KKw0KKwkJaWYgKGJveC0+ZCkNCisJCQludW1fZGlydHkrKzsNCisJfQ0KKw0KKwlp ZiAoIW51bV9kaXJ0eSkNCisJCWdvdG8gb3V0Ow0KKw0KKwlhbGxvY19zaXplID0gbnVtX2RpcnR5 ICogKChoYXNfZHgpID8gc2l6ZW9mKCpjbWQxKSA6IHNpemVvZigqY21kMikpOw0KKwljbWQgPSBW TVdfRklGT19SRVNFUlZFKGRldl9wcml2LCBhbGxvY19zaXplKTsNCisJaWYgKCFjbWQpDQorCQly ZXR1cm4gLUVOT01FTTsNCisNCisJY21kMSA9IGNtZDsNCisJY21kMiA9IGNtZDsNCisNCisJZm9y IChpID0gMDsgaSA8IGRpcnR5LT5udW1fc3VicmVzOyArK2kpIHsNCisJCWNvbnN0IFNWR0EzZEJv eCAqYm94ID0gJmRpcnR5LT5ib3hlc1tpXTsNCisNCisJCWlmICghYm94LT5kKQ0KKwkJCWNvbnRp bnVlOw0KKw0KKwkJLyoNCisJCSAqIERYX1VQREFURV9TVUJSRVNPVVJDRSBpcyBhd2FyZSBvZiBh cnJheSBzdXJmYWNlcy4NCisJCSAqIFVQREFURV9HQl9JTUFHRSBpcyBub3QuDQorCQkgKi8NCisJ CWlmIChoYXNfZHgpIHsNCisJCQljbWQxLT5oZWFkZXIuaWQgPSBTVkdBXzNEX0NNRF9EWF9VUERB VEVfU1VCUkVTT1VSQ0U7DQorCQkJY21kMS0+aGVhZGVyLnNpemUgPSBzaXplb2YoY21kMS0+Ym9k eSk7DQorCQkJY21kMS0+Ym9keS5zaWQgPSByZXMtPmlkOw0KKwkJCWNtZDEtPmJvZHkuc3ViUmVz b3VyY2UgPSBpOw0KKwkJCWNtZDEtPmJvZHkuYm94ID0gKmJveDsNCisJCQljbWQxKys7DQorCQl9 IGVsc2Ugew0KKwkJCWNtZDItPmhlYWRlci5pZCA9IFNWR0FfM0RfQ01EX1VQREFURV9HQl9JTUFH RTsNCisJCQljbWQyLT5oZWFkZXIuc2l6ZSA9IHNpemVvZihjbWQyLT5ib2R5KTsNCisJCQljbWQy LT5ib2R5LmltYWdlLnNpZCA9IHJlcy0+aWQ7DQorCQkJY21kMi0+Ym9keS5pbWFnZS5mYWNlID0g aSAvIGNhY2hlLT5udW1fbWlwX2xldmVsczsNCisJCQljbWQyLT5ib2R5LmltYWdlLm1pcG1hcCA9 IGkgLQ0KKwkJCQkoY2FjaGUtPm51bV9taXBfbGV2ZWxzICogY21kMi0+Ym9keS5pbWFnZS5mYWNl KTsNCisJCQljbWQyLT5ib2R5LmJveCA9ICpib3g7DQorCQkJY21kMisrOw0KKwkJfQ0KKw0KKwl9 DQorCXZtd19maWZvX2NvbW1pdChkZXZfcHJpdiwgYWxsb2Nfc2l6ZSk7DQorIG91dDoNCisJbWVt c2V0KCZkaXJ0eS0+Ym94ZXNbMF0sIDAsIHNpemVvZihkaXJ0eS0+Ym94ZXNbMF0pICoNCisJICAg ICAgIGRpcnR5LT5udW1fc3VicmVzKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KKy8qDQorICog dm13X3N1cmZhY2VfZGlydHlfYWxsb2MgLSBUaGUgc3VyZmFjZSdzIGRpcnR5X2FsbG9jIGNhbGxi YWNrLg0KKyAqLw0KK3N0YXRpYyBpbnQgdm13X3N1cmZhY2VfZGlydHlfYWxsb2Moc3RydWN0IHZt d19yZXNvdXJjZSAqcmVzKQ0KK3sNCisJc3RydWN0IHZtd19zdXJmYWNlICpzcmYgPSB2bXdfcmVz X3RvX3NyZihyZXMpOw0KKwlzdHJ1Y3Qgdm13X3N1cmZhY2VfZGlydHkgKmRpcnR5Ow0KKwl1MzIg bnVtX2xheWVycyA9IDE7DQorCXUzMiBudW1fbWlwOw0KKwl1MzIgbnVtX3N1YnJlczsNCisJdTMy IG51bV9zYW1wbGVzOw0KKwlzaXplX3QgZGlydHlfc2l6ZSwgYWNjX3NpemU7DQorCXN0YXRpYyBz dHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0gew0KKwkJLmludGVycnVwdGlibGUgPSBmYWxz ZSwNCisJCS5ub193YWl0X2dwdSA9IGZhbHNlDQorCX07DQorCWludCByZXQ7DQorDQorCWlmIChz cmYtPmFycmF5X3NpemUpDQorCQludW1fbGF5ZXJzID0gc3JmLT5hcnJheV9zaXplOw0KKwllbHNl IGlmIChzcmYtPmZsYWdzICYgU1ZHQTNEX1NVUkZBQ0VfQ1VCRU1BUCkNCisJCW51bV9sYXllcnMg Kj0gU1ZHQTNEX01BWF9TVVJGQUNFX0ZBQ0VTOw0KKw0KKwludW1fbWlwID0gc3JmLT5taXBfbGV2 ZWxzWzBdOw0KKwlpZiAoIW51bV9taXApDQorCQludW1fbWlwID0gMTsNCisNCisJbnVtX3N1YnJl cyA9IG51bV9sYXllcnMgKiBudW1fbWlwOw0KKwlkaXJ0eV9zaXplID0gc2l6ZW9mKCpkaXJ0eSkg KyBudW1fc3VicmVzICogc2l6ZW9mKGRpcnR5LT5ib3hlc1swXSk7DQorCWFjY19zaXplID0gdHRt X3JvdW5kX3BvdChkaXJ0eV9zaXplKTsNCisJcmV0ID0gdHRtX21lbV9nbG9iYWxfYWxsb2Modm13 X21lbV9nbG9iKHJlcy0+ZGV2X3ByaXYpLA0KKwkJCQkgICBhY2Nfc2l6ZSwgJmN0eCk7DQorCWlm IChyZXQpIHsNCisJCVZNV19ERUJVR19VU0VSKCJPdXQgb2YgZ3JhcGhpY3MgbWVtb3J5IGZvciBz dXJmYWNlICINCisJCQkgICAgICAgImRpcnR5IHRyYWNrZXIuXG4iKTsNCisJCXJldHVybiByZXQ7 DQorCX0NCisNCisJZGlydHkgPSBrdnphbGxvYyhkaXJ0eV9zaXplLCBHRlBfS0VSTkVMKTsNCisJ aWYgKCFkaXJ0eSkgew0KKwkJcmV0ID0gLUVOT01FTTsNCisJCWdvdG8gb3V0X25vX2RpcnR5Ow0K Kwl9DQorDQorCW51bV9zYW1wbGVzID0gbWF4X3QodTMyLCAxLCBzcmYtPm11bHRpc2FtcGxlX2Nv dW50KTsNCisJc3ZnYTNkc3VyZmFjZV9zZXR1cF9jYWNoZSgmc3JmLT5iYXNlX3NpemUsIHNyZi0+ Zm9ybWF0LCBudW1fbWlwLA0KKwkJCQkgIG51bV9sYXllcnMsIG51bV9zYW1wbGVzLCAmZGlydHkt PmNhY2hlKTsNCisJZGlydHktPm51bV9zdWJyZXMgPSBudW1fc3VicmVzOw0KKwlkaXJ0eS0+c2l6 ZSA9IGFjY19zaXplOw0KKwlyZXMtPmRpcnR5ID0gKHN0cnVjdCB2bXdfcmVzb3VyY2VfZGlydHkg KikgZGlydHk7DQorDQorCXJldHVybiAwOw0KKw0KK291dF9ub19kaXJ0eToNCisJdHRtX21lbV9n bG9iYWxfZnJlZSh2bXdfbWVtX2dsb2IocmVzLT5kZXZfcHJpdiksIGFjY19zaXplKTsNCisJcmV0 dXJuIHJldDsNCit9DQorDQorLyoNCisgKiB2bXdfc3VyZmFjZV9kaXJ0eV9mcmVlIC0gVGhlIHN1 cmZhY2UncyBkaXJ0eV9mcmVlIGNhbGxiYWNrDQorICovDQorc3RhdGljIHZvaWQgdm13X3N1cmZh Y2VfZGlydHlfZnJlZShzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMpDQorew0KKwlzdHJ1Y3Qgdm13 X3N1cmZhY2VfZGlydHkgKmRpcnR5ID0NCisJCShzdHJ1Y3Qgdm13X3N1cmZhY2VfZGlydHkgKikg cmVzLT5kaXJ0eTsNCisJc2l6ZV90IGFjY19zaXplID0gZGlydHktPnNpemU7DQorDQorCWt2ZnJl ZShkaXJ0eSk7DQorCXR0bV9tZW1fZ2xvYmFsX2ZyZWUodm13X21lbV9nbG9iKHJlcy0+ZGV2X3By aXYpLCBhY2Nfc2l6ZSk7DQorCXJlcy0+ZGlydHkgPSBOVUxMOw0KK30NCisNCisvKg0KKyAqIHZt d19zdXJmYWNlX2NsZWFuIC0gVGhlIHN1cmZhY2UncyBjbGVhbiBjYWxsYmFjaw0KKyAqLw0KK3N0 YXRpYyBpbnQgdm13X3N1cmZhY2VfY2xlYW4oc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzKQ0KK3sN CisJc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiA9IHJlcy0+ZGV2X3ByaXY7DQorCXNpemVf dCBhbGxvY19zaXplOw0KKwlzdHJ1Y3Qgew0KKwkJU1ZHQTNkQ21kSGVhZGVyIGhlYWRlcjsNCisJ CVNWR0EzZENtZFJlYWRiYWNrR0JTdXJmYWNlIGJvZHk7DQorCX0gKmNtZDsNCisNCisJYWxsb2Nf c2l6ZSA9IHNpemVvZigqY21kKTsNCisJY21kID0gVk1XX0ZJRk9fUkVTRVJWRShkZXZfcHJpdiwg YWxsb2Nfc2l6ZSk7DQorCWlmICghY21kKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCWNtZC0+ aGVhZGVyLmlkID0gU1ZHQV8zRF9DTURfUkVBREJBQ0tfR0JfU1VSRkFDRTsNCisJY21kLT5oZWFk ZXIuc2l6ZSA9IHNpemVvZihjbWQtPmJvZHkpOw0KKwljbWQtPmJvZHkuc2lkID0gcmVzLT5pZDsN CisJdm13X2ZpZm9fY29tbWl0KGRldl9wcml2LCBhbGxvY19zaXplKTsNCisNCisJcmV0dXJuIDA7 DQorfQ0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vdm13Z2Z4X2RybS5oIGIvaW5jbHVk ZS91YXBpL2RybS92bXdnZnhfZHJtLmgNCmluZGV4IDM5OWY1ODMxN2NmZi4uMDJjYWIzM2YyZjI1 IDEwMDY0NA0KLS0tIGEvaW5jbHVkZS91YXBpL2RybS92bXdnZnhfZHJtLmgNCisrKyBiL2luY2x1 ZGUvdWFwaS9kcm0vdm13Z2Z4X2RybS5oDQpAQCAtODkxLDExICs4OTEsMTMgQEAgc3RydWN0IGRy bV92bXdfc2hhZGVyX2FyZyB7DQogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN1cmZhY2UuDQogICogQGRybV92bXdfc3VyZmFjZV9mbGFnX2NyZWF0ZV9idWZmZXI6IENy ZWF0ZSBhIGJhY2t1cCBidWZmZXIgaWYgbm9uZSBpcw0KICAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnaXZlbi4NCisgKiBAZHJtX3Ztd19zdXJmYWNlX2ZsYWdfY29oZXJl bnQ6ICAgICAgQmFjayBzdXJmYWNlIHdpdGggY29oZXJlbnQgbWVtb3J5Lg0KICAqLw0KIGVudW0g ZHJtX3Ztd19zdXJmYWNlX2ZsYWdzIHsNCiAJZHJtX3Ztd19zdXJmYWNlX2ZsYWdfc2hhcmVhYmxl ID0gKDEgPDwgMCksDQogCWRybV92bXdfc3VyZmFjZV9mbGFnX3NjYW5vdXQgPSAoMSA8PCAxKSwN Ci0JZHJtX3Ztd19zdXJmYWNlX2ZsYWdfY3JlYXRlX2J1ZmZlciA9ICgxIDw8IDIpDQorCWRybV92 bXdfc3VyZmFjZV9mbGFnX2NyZWF0ZV9idWZmZXIgPSAoMSA8PCAyKSwNCisJZHJtX3Ztd19zdXJm YWNlX2ZsYWdfY29oZXJlbnQgPSAoMSA8PCAzKSwNCiB9Ow0KIA0KIC8qKg0KLS0gDQoyLjIwLjEN Cg0K