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=-8.2 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 19303CA9EC2 for ; Tue, 29 Oct 2019 07:51:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B08EA20862 for ; Tue, 29 Oct 2019 07:51:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="yhjUgk+9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725776AbfJ2Hvw (ORCPT ); Tue, 29 Oct 2019 03:51:52 -0400 Received: from mail-eopbgr740050.outbound.protection.outlook.com ([40.107.74.50]:34546 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726481AbfJ2Hvv (ORCPT ); Tue, 29 Oct 2019 03:51:51 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LpHD8kXDawLzYYlbtNIGYrb3STBcIGjvG9LWQfBvX+iudi3VZBE4kJxU8b5tbgqdqG2rTjqo39WBvGpB/KG6FaVOyk10VtIGyfsmw4TWad2Xq8Uizo/UtiyrVG9ydb7tuTzZcqSLonIx6+j8Z5b4yG4M48zd8pP2MBZmToxLXSHs8RlNK1ov0G7fWEjqj8m9En69dAXY3bH4Qpts0eM+lLZGb0uyb8GpGUpZdRcNybP0MLllxKEU9AKep+HLHJuVh5rkEoAGx7MhpkZOUwWp1xHSQVJh9YeRLPSQSV8qpRfp9/3RfU8RzhJDOZA/jtSZDYZsEnPAlwZAnjLJ+CbrMg== 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=6ysSG8t97ZyDK9Ea8UVc2JBJ/dZ1dmCFNOEvFizqCic=; b=Bk1pqF1001iUl/CtDvY0LV56bI8VbewwIG/b6kL66bkRSz+k9nVNais4XkDxaIT7d2BrmgrmTUMZkaPwhRFUogEWXs/BQC3V+2LeGEctFGOxxGhYkJjNMUsjRP0ne/b6+ecX8UiYVxe0wkWiwM3XrFNKwgpygVcx9crOZX2hkg2EHNPsdzgMom3fOdDHIhGp+Y6VjwJfkZh1W8MKVNHt878i3GAUrauq4O4i8Rb6GvJbzcE/uUqKN3xLDi5qxD6OkeONk3AO489NvVTdT/evKFwzPdbI6uiWBCUeuZbYr+vF8xWr1zdYB4/6hJWgbSFwmaNd9L9ADhqHj9AG7SkkdA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6ysSG8t97ZyDK9Ea8UVc2JBJ/dZ1dmCFNOEvFizqCic=; b=yhjUgk+9eg492W1asLz0pO/QJUTNRo4+gtdZmfPANSG56ir17tjElpbV9AuPCrxu9QleGUQew75h9HWVwY0qZbz6Sea0+u9Gdu10S2eoRrgxClyHjortSCJHMch6pJDbRQKFOAKuwVFi5VxUZAlfzG1b6/QYDXRhwTer5gOjuPo= Received: from BN6PR12MB1699.namprd12.prod.outlook.com (10.175.97.148) by BN6PR12MB1281.namprd12.prod.outlook.com (10.168.226.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.25; Tue, 29 Oct 2019 07:51:30 +0000 Received: from BN6PR12MB1699.namprd12.prod.outlook.com ([fe80::68e1:ddf5:df4c:b554]) by BN6PR12MB1699.namprd12.prod.outlook.com ([fe80::68e1:ddf5:df4c:b554%9]) with mapi id 15.20.2387.025; Tue, 29 Oct 2019 07:51:30 +0000 From: "Koenig, Christian" To: Jason Gunthorpe , "linux-mm@kvack.org" , Jerome Glisse , Ralph Campbell , John Hubbard , "Kuehling, Felix" CC: "linux-rdma@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "amd-gfx@lists.freedesktop.org" , "Deucher, Alexander" , Ben Skeggs , Boris Ostrovsky , "Zhou, David(ChunMing)" , Dennis Dalessandro , Juergen Gross , Mike Marciniszyn , Oleksandr Andrushchenko , Petr Cvek , Stefano Stabellini , "nouveau@lists.freedesktop.org" , "xen-devel@lists.xenproject.org" , Christoph Hellwig , Jason Gunthorpe Subject: Re: [PATCH v2 13/15] drm/amdgpu: Use mmu_range_insert instead of hmm_mirror Thread-Topic: [PATCH v2 13/15] drm/amdgpu: Use mmu_range_insert instead of hmm_mirror Thread-Index: AQHVjc1AranX4zytZkWJZeF308H7IKdxP7aA Date: Tue, 29 Oct 2019 07:51:30 +0000 Message-ID: References: <20191028201032.6352-1-jgg@ziepe.ca> <20191028201032.6352-14-jgg@ziepe.ca> In-Reply-To: <20191028201032.6352-14-jgg@ziepe.ca> Accept-Language: de-DE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 x-originating-ip: [2a02:908:1252:fb60:be8a:bd56:1f94:86e7] x-clientproxiedby: AM0PR10CA0036.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:150::16) To BN6PR12MB1699.namprd12.prod.outlook.com (2603:10b6:404:ff::20) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Christian.Koenig@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 86ac308d-4333-41a0-06d5-08d75c44cf72 x-ms-traffictypediagnostic: BN6PR12MB1281: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4941; x-forefront-prvs: 0205EDCD76 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(136003)(366004)(376002)(346002)(396003)(199004)(189003)(186003)(2501003)(305945005)(66556008)(66446008)(316002)(64756008)(14444005)(66476007)(5024004)(6436002)(66946007)(110136005)(8936002)(256004)(4326008)(478600001)(6246003)(65956001)(31696002)(65806001)(14454004)(71200400001)(54906003)(58126008)(71190400001)(2906002)(486006)(476003)(31686004)(6512007)(36756003)(81166006)(6116002)(66574012)(11346002)(8676002)(7416002)(46003)(86362001)(7736002)(76176011)(386003)(52116002)(102836004)(229853002)(446003)(99286004)(6486002)(5660300002)(2616005)(30864003)(6636002)(81156014)(25786009)(6506007);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR12MB1281;H:BN6PR12MB1699.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DaQCjlvFxN7F5UH5XfeWiXpPvUImLcW0Sm71ujV/9hgKP3VFXWXAKS8FyZ3VIRCfRy7kOHP1wfBIElx1iqIYntZrRQdhETcO+wGBjaZR66bXkoOW6pshtaMMv8qW7KRsfvKbWdhGyNLDdvYSD52MzR/y0BGTotBn2u/CNtxIPZPL3FCLPbxtGra6rj9GLN/huFcx1aF0m5kzwJmfB9PqFjN6TdOPt+6cDXrWFjlGCX/TwiMNUZr3XELkdqlsrs0KqFBuMMXpYW7QJsqWDDJUdmwtR7NZbT2UlWvbhFEjcJQmhSQSdO5gZvGlKf158OJYLdAn7NZsSbq/CcqOzGBlvV6LAuHkqz9hoAY4QMrooj1gcQZfwcEr40olPZ4GzneV2MgiTT0uKwahJuYXJ/K/3nMOP62c2r3S3UnhPMrwSSCCjA05CYtD3AJ33DymV7iV Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86ac308d-4333-41a0-06d5-08d75c44cf72 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2019 07:51:30.6921 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ai4m8Ncn3A4KFW1TwGTokn2nYSqsLCz2G2whEg6R4IGlO4nBoOBagkn4wUe7U2kq X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1281 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org QW0gMjguMTAuMTkgdW0gMjE6MTAgc2NocmllYiBKYXNvbiBHdW50aG9ycGU6DQo+IEZyb206IEph c29uIEd1bnRob3JwZSA8amdnQG1lbGxhbm94LmNvbT4NCj4NCj4gUmVtb3ZlIHRoZSBpbnRlcnZh bCB0cmVlIGluIHRoZSBkcml2ZXIgYW5kIHJlbHkgb24gdGhlIHRyZWUgbWFpbnRhaW5lZCBieQ0K PiB0aGUgbW11X25vdGlmaWVyIGZvciBkZWxpdmVyaW5nIG1tdV9ub3RpZmllciBpbnZhbGlkYXRp b24gY2FsbGJhY2tzLg0KPg0KPiBGb3Igc29tZSByZWFzb24gYW1kZ3B1IGhhcyBhIHZlcnkgY29t cGxpY2F0ZWQgYXJyYW5nZW1lbnQgd2hlcmUgaXQgdHJpZXMNCj4gdG8gcHJldmVudCBkdXBsaWNh dGUgZW50cmllcyBpbiB0aGUgaW50ZXJ2YWxfdHJlZSwgdGhpcyBpcyBub3QgbmVjZXNzYXJ5LA0K PiBlYWNoIGFtZGdwdV9ibyBjYW4gYmUgaXRzIG93biBzdGFuZCBhbG9uZSBlbnRyeS4gaW50ZXJ2 YWxfdHJlZSBhbHJlYWR5DQo+IGFsbG93cyBkdXBsaWNhdGVzIGFuZCBvdmVybGFwcyBpbiB0aGUg dHJlZS4NCj4NCj4gQWxzbywgdGhlcmUgaXMgbm8gbmVlZCB0byByZW1vdmUgZW50cmllcyB1cG9u IGEgcmVsZWFzZSBjYWxsYmFjaywgdGhlDQo+IG1tdV9yYW5nZSBBUEkgc2FmZWx5IGFsbG93cyBv YmplY3RzIHRvIHJlbWFpbiByZWdpc3RlcmVkIGJleW9uZCB0aGUNCj4gbGlmZXRpbWUgb2YgdGhl IG1tLiBUaGUgZHJpdmVyIG9ubHkgaGFzIHRvIHN0b3AgdG91Y2hpbmcgdGhlIHBhZ2VzIGR1cmlu Zw0KPiByZWxlYXNlLg0KPg0KPiBDYzogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBh bWQuY29tPg0KPiBDYzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t Pg0KPiBDYzogRGF2aWQgKENodW5NaW5nKSBaaG91IDxEYXZpZDEuWmhvdUBhbWQuY29tPg0KPiBD YzogYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gU2lnbmVkLW9mZi1ieTogSmFzb24g R3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPg0KPiAtLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHUuaCAgICAgICAgICAgfCAgIDIgKw0KPiAgIC4uLi9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jICB8ICAgNSArLQ0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyAgICB8ICAgMSArDQo+ICAgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgICAgICAgIHwgMzQxICsrKystLS0tLS0tLS0t LS0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oICAgICAgICB8 ICAgNCAtDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oICAg IHwgIDEzICstDQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAyODIgZGVs ZXRpb25zKC0pDQo+DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oDQo+IGluZGV4IGJk MzdkZjVkZDZkMDQ4Li42MDU5MWE1ZDQyMDAyMSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1LmgNCj4gQEAgLTEwMDYsNiArMTAwNiw4IEBAIHN0cnVjdCBhbWRncHVfZGV2aWNl IHsNCj4gICAJc3RydWN0IG11dGV4ICBsb2NrX3Jlc2V0Ow0KPiAgIAlzdHJ1Y3QgYW1kZ3B1X2Rv b3JiZWxsX2luZGV4IGRvb3JiZWxsX2luZGV4Ow0KPiAgIA0KPiArCXN0cnVjdCBtdXRleAkJCW5v dGlmaWVyX2xvY2s7DQo+ICsNCj4gICAJaW50IGFzaWNfcmVzZXRfcmVzOw0KPiAgIAlzdHJ1Y3Qg d29ya19zdHJ1Y3QJCXhnbWlfcmVzZXRfd29yazsNCj4gICANCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYw0KPiBpbmRleCA2ZDAyMWVjYzhk NTk4Zi4uNDc3MDAzMDJhMDhiN2YgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMNCj4gQEAgLTQ4MSw4ICs0ODEsNyBAQCBzdGF0 aWMgdm9pZCByZW1vdmVfa2dkX21lbV9mcm9tX2tmZF9ib19saXN0KHN0cnVjdCBrZ2RfbWVtICpt ZW0sDQo+ICAgICoNCj4gICAgKiBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5v IGZvciBlcnJvcnMuDQo+ICAgICovDQo+IC1zdGF0aWMgaW50IGluaXRfdXNlcl9wYWdlcyhzdHJ1 Y3Qga2dkX21lbSAqbWVtLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwNCj4gLQkJCSAgIHVpbnQ2NF90 IHVzZXJfYWRkcikNCj4gK3N0YXRpYyBpbnQgaW5pdF91c2VyX3BhZ2VzKHN0cnVjdCBrZ2RfbWVt ICptZW0sIHVpbnQ2NF90IHVzZXJfYWRkcikNCj4gICB7DQo+ICAgCXN0cnVjdCBhbWRrZmRfcHJv Y2Vzc19pbmZvICpwcm9jZXNzX2luZm8gPSBtZW0tPnByb2Nlc3NfaW5mbzsNCj4gICAJc3RydWN0 IGFtZGdwdV9ibyAqYm8gPSBtZW0tPmJvOw0KPiBAQCAtMTE5NSw3ICsxMTk0LDcgQEAgaW50IGFt ZGdwdV9hbWRrZmRfZ3B1dm1fYWxsb2NfbWVtb3J5X29mX2dwdSgNCj4gICAJYWRkX2tnZF9tZW1f dG9fa2ZkX2JvX2xpc3QoKm1lbSwgYXZtLT5wcm9jZXNzX2luZm8sIHVzZXJfYWRkcik7DQo+ICAg DQo+ICAgCWlmICh1c2VyX2FkZHIpIHsNCj4gLQkJcmV0ID0gaW5pdF91c2VyX3BhZ2VzKCptZW0s IGN1cnJlbnQtPm1tLCB1c2VyX2FkZHIpOw0KPiArCQlyZXQgPSBpbml0X3VzZXJfcGFnZXMoKm1l bSwgdXNlcl9hZGRyKTsNCj4gICAJCWlmIChyZXQpDQo+ICAgCQkJZ290byBhbGxvY2F0ZV9pbml0 X3VzZXJfcGFnZXNfZmFpbGVkOw0KPiAgIAl9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZGV2aWNlLmMNCj4gaW5kZXggNWExOTM5ZGJkNGUzZTYuLjM4Zjk3OTk4YWFkZGIy IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNl LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jDQo+ IEBAIC0yNjMzLDYgKzI2MzMsNyBAQCBpbnQgYW1kZ3B1X2RldmljZV9pbml0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LA0KPiAgIAltdXRleF9pbml0KCZhZGV2LT52aXJ0LnZmX2Vycm9ycy5s b2NrKTsNCj4gICAJaGFzaF9pbml0KGFkZXYtPm1uX2hhc2gpOw0KPiAgIAltdXRleF9pbml0KCZh ZGV2LT5sb2NrX3Jlc2V0KTsNCj4gKwltdXRleF9pbml0KCZhZGV2LT5ub3RpZmllcl9sb2NrKTsN Cj4gICAJbXV0ZXhfaW5pdCgmYWRldi0+dmlydC5kcG1fbXV0ZXgpOw0KPiAgIAltdXRleF9pbml0 KCZhZGV2LT5wc3AubXV0ZXgpOw0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfbW4uYw0KPiBpbmRleCAzMWQ0ZGViNWQyOTQ4NC4uNGZmZDdiOTBmNGQ5MDcgMTAwNjQ0DQo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQo+IEBAIC01MCw2NiArNTAsNiBA QA0KPiAgICNpbmNsdWRlICJhbWRncHUuaCINCj4gICAjaW5jbHVkZSAiYW1kZ3B1X2FtZGtmZC5o Ig0KPiAgIA0KPiAtLyoqDQo+IC0gKiBzdHJ1Y3QgYW1kZ3B1X21uX25vZGUNCj4gLSAqDQo+IC0g KiBAaXQ6IGludGVydmFsIG5vZGUgZGVmaW5pbmcgc3RhcnQtbGFzdCBvZiB0aGUgYWZmZWN0ZWQg YWRkcmVzcyByYW5nZQ0KPiAtICogQGJvczogbGlzdCBvZiBhbGwgQk9zIGluIHRoZSBhZmZlY3Rl ZCBhZGRyZXNzIHJhbmdlDQo+IC0gKg0KPiAtICogTWFuYWdlcyBhbGwgQk9zIHdoaWNoIGFyZSBh ZmZlY3RlZCBvZiBhIGNlcnRhaW4gcmFuZ2Ugb2YgYWRkcmVzcyBzcGFjZS4NCj4gLSAqLw0KPiAt c3RydWN0IGFtZGdwdV9tbl9ub2RlIHsNCj4gLQlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlCWl0 Ow0KPiAtCXN0cnVjdCBsaXN0X2hlYWQJCWJvczsNCj4gLX07DQo+IC0NCj4gLS8qKg0KPiAtICog YW1kZ3B1X21uX2Rlc3Ryb3kgLSBkZXN0cm95IHRoZSBITU0gbWlycm9yDQo+IC0gKg0KPiAtICog QHdvcms6IHByZXZpb3VzbHkgc2hlZHVsZWQgd29yayBpdGVtDQo+IC0gKg0KPiAtICogTGF6eSBk ZXN0cm95cyB0aGUgbm90aWZpZXIgZnJvbSBhIHdvcmsgaXRlbQ0KPiAtICovDQo+IC1zdGF0aWMg dm9pZCBhbWRncHVfbW5fZGVzdHJveShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+IC17DQo+ IC0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhbWRn cHVfbW4sIHdvcmspOw0KPiAtCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gYW1uLT5hZGV2 Ow0KPiAtCXN0cnVjdCBhbWRncHVfbW5fbm9kZSAqbm9kZSwgKm5leHRfbm9kZTsNCj4gLQlzdHJ1 Y3QgYW1kZ3B1X2JvICpibywgKm5leHRfYm87DQo+IC0NCj4gLQltdXRleF9sb2NrKCZhZGV2LT5t bl9sb2NrKTsNCj4gLQlkb3duX3dyaXRlKCZhbW4tPmxvY2spOw0KPiAtCWhhc2hfZGVsKCZhbW4t Pm5vZGUpOw0KPiAtCXJidHJlZV9wb3N0b3JkZXJfZm9yX2VhY2hfZW50cnlfc2FmZShub2RlLCBu ZXh0X25vZGUsDQo+IC0JCQkJCSAgICAgJmFtbi0+b2JqZWN0cy5yYl9yb290LCBpdC5yYikgew0K PiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYm8sIG5leHRfYm8sICZub2RlLT5ib3MsIG1u X2xpc3QpIHsNCj4gLQkJCWJvLT5tbiA9IE5VTEw7DQo+IC0JCQlsaXN0X2RlbF9pbml0KCZiby0+ bW5fbGlzdCk7DQo+IC0JCX0NCj4gLQkJa2ZyZWUobm9kZSk7DQo+IC0JfQ0KPiAtCXVwX3dyaXRl KCZhbW4tPmxvY2spOw0KPiAtCW11dGV4X3VubG9jaygmYWRldi0+bW5fbG9jayk7DQo+IC0NCj4g LQlobW1fbWlycm9yX3VucmVnaXN0ZXIoJmFtbi0+bWlycm9yKTsNCj4gLQlrZnJlZShhbW4pOw0K PiAtfQ0KPiAtDQo+IC0vKioNCj4gLSAqIGFtZGdwdV9obW1fbWlycm9yX3JlbGVhc2UgLSBjYWxs YmFjayB0byBub3RpZnkgYWJvdXQgbW0gZGVzdHJ1Y3Rpb24NCj4gLSAqDQo+IC0gKiBAbWlycm9y OiB0aGUgSE1NIG1pcnJvciAobW0pIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQNCj4gLSAqDQo+IC0g KiBTaGVkdWxlIGEgd29yayBpdGVtIHRvIGxhenkgZGVzdHJveSBITU0gbWlycm9yLg0KPiAtICov DQo+IC1zdGF0aWMgdm9pZCBhbWRncHVfaG1tX21pcnJvcl9yZWxlYXNlKHN0cnVjdCBobW1fbWly cm9yICptaXJyb3IpDQo+IC17DQo+IC0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVy X29mKG1pcnJvciwgc3RydWN0IGFtZGdwdV9tbiwgbWlycm9yKTsNCj4gLQ0KPiAtCUlOSVRfV09S SygmYW1uLT53b3JrLCBhbWRncHVfbW5fZGVzdHJveSk7DQo+IC0Jc2NoZWR1bGVfd29yaygmYW1u LT53b3JrKTsNCj4gLX0NCj4gLQ0KPiAgIC8qKg0KPiAgICAqIGFtZGdwdV9tbl9sb2NrIC0gdGFr ZSB0aGUgd3JpdGUgc2lkZSBsb2NrIGZvciB0aGlzIG5vdGlmaWVyDQo+ICAgICoNCj4gQEAgLTEz MywxNTcgKzczLDg2IEBAIHZvaWQgYW1kZ3B1X21uX3VubG9jayhzdHJ1Y3QgYW1kZ3B1X21uICpt bikNCj4gICB9DQo+ICAgDQo+ICAgLyoqDQo+IC0gKiBhbWRncHVfbW5fcmVhZF9sb2NrIC0gdGFr ZSB0aGUgcmVhZCBzaWRlIGxvY2sgZm9yIHRoaXMgbm90aWZpZXINCj4gLSAqDQo+IC0gKiBAYW1u OiBvdXIgbm90aWZpZXINCj4gLSAqLw0KPiAtc3RhdGljIGludCBhbWRncHVfbW5fcmVhZF9sb2Nr KHN0cnVjdCBhbWRncHVfbW4gKmFtbiwgYm9vbCBibG9ja2FibGUpDQo+IC17DQo+IC0JaWYgKGJs b2NrYWJsZSkNCj4gLQkJZG93bl9yZWFkKCZhbW4tPmxvY2spOw0KPiAtCWVsc2UgaWYgKCFkb3du X3JlYWRfdHJ5bG9jaygmYW1uLT5sb2NrKSkNCj4gLQkJcmV0dXJuIC1FQUdBSU47DQo+IC0NCj4g LQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtLyoqDQo+IC0gKiBhbWRncHVfbW5fcmVhZF91bmxv Y2sgLSBkcm9wIHRoZSByZWFkIHNpZGUgbG9jayBmb3IgdGhpcyBub3RpZmllcg0KPiAtICoNCj4g LSAqIEBhbW46IG91ciBub3RpZmllcg0KPiAtICovDQo+IC1zdGF0aWMgdm9pZCBhbWRncHVfbW5f cmVhZF91bmxvY2soc3RydWN0IGFtZGdwdV9tbiAqYW1uKQ0KPiAtew0KPiAtCXVwX3JlYWQoJmFt bi0+bG9jayk7DQo+IC19DQo+IC0NCj4gLS8qKg0KPiAtICogYW1kZ3B1X21uX2ludmFsaWRhdGVf bm9kZSAtIHVubWFwIGFsbCBCT3Mgb2YgYSBub2RlDQo+ICsgKiBhbWRncHVfbW5faW52YWxpZGF0 ZV9nZnggLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlDQo+ICAgICoNCj4gLSAq IEBub2RlOiB0aGUgbm9kZSB3aXRoIHRoZSBCT3MgdG8gdW5tYXANCj4gLSAqIEBzdGFydDogc3Rh cnQgb2YgYWRkcmVzcyByYW5nZSBhZmZlY3RlZA0KPiAtICogQGVuZDogZW5kIG9mIGFkZHJlc3Mg cmFuZ2UgYWZmZWN0ZWQNCj4gKyAqIEBtcm46IHRoZSByYW5nZSAobW0pIGlzIGFib3V0IHRvIHVw ZGF0ZQ0KPiArICogQHJhbmdlOiBkZXRhaWxzIG9uIHRoZSBpbnZhbGlkYXRpb24NCj4gICAgKg0K PiAgICAqIEJsb2NrIGZvciBvcGVyYXRpb25zIG9uIEJPcyB0byBmaW5pc2ggYW5kIG1hcmsgcGFn ZXMgYXMgYWNjZXNzZWQgYW5kDQo+ICAgICogcG90ZW50aWFsbHkgZGlydHkuDQo+ICAgICovDQo+ IC1zdGF0aWMgdm9pZCBhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlKHN0cnVjdCBhbWRncHVfbW5f bm9kZSAqbm9kZSwNCj4gLQkJCQkgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LA0KPiAtCQkJCSAg ICAgIHVuc2lnbmVkIGxvbmcgZW5kKQ0KPiArc3RhdGljIGJvb2wgYW1kZ3B1X21uX2ludmFsaWRh dGVfZ2Z4KHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwNCj4gKwkJCQkgICAgIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgYW1k Z3B1X2JvICpibzsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2JvICpibyA9IGNvbnRhaW5lcl9vZihtcm4s IHN0cnVjdCBhbWRncHVfYm8sIG5vdGlmaWVyKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJkZXYpOw0KPiAgIAlsb25nIHI7DQo+ICAg DQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShibywgJm5vZGUtPmJvcywgbW5fbGlzdCkgew0KPiAt DQo+IC0JCWlmICghYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwgc3Rh cnQsIGVuZCkpDQo+IC0JCQljb250aW51ZTsNCj4gLQ0KPiAtCQlyID0gZG1hX3Jlc3Zfd2FpdF90 aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwNCj4gLQkJCXRydWUsIGZhbHNlLCBNQVhfU0NI RURVTEVfVElNRU9VVCk7DQo+IC0JCWlmIChyIDw9IDApDQo+IC0JCQlEUk1fRVJST1IoIiglbGQp IGZhaWxlZCB0byB3YWl0IGZvciB1c2VyIGJvXG4iLCByKTsNCj4gLQl9DQo+ICsJLyogRklYTUU6 IElzIHRoaXMgbmVjZXNzYXJ5PyAqLw0KDQpNb3N0IGxpa2VseSBub3QuDQoNCkNocmlzdGlhbi4N Cg0KPiArCWlmICghYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwgcmFu Z2UtPnN0YXJ0LA0KPiArCQkJCQkgIHJhbmdlLT5lbmQpKQ0KPiArCQlyZXR1cm4gdHJ1ZTsNCj4g Kw0KPiArCWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpDQo+ICsJCXJl dHVybiBmYWxzZTsNCj4gKw0KPiArCW11dGV4X2xvY2soJmFkZXYtPm5vdGlmaWVyX2xvY2spOw0K PiArCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KGJvLT50Ym8uYmFzZS5yZXN2LCB0cnVl LCBmYWxzZSwNCj4gKwkJCQkgICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7DQo+ICsJbXV0ZXhf dW5sb2NrKCZhZGV2LT5ub3RpZmllcl9sb2NrKTsNCj4gKwlpZiAociA8PSAwKQ0KPiArCQlEUk1f RVJST1IoIiglbGQpIGZhaWxlZCB0byB3YWl0IGZvciB1c2VyIGJvXG4iLCByKTsNCj4gKwlyZXR1 cm4gdHJ1ZTsNCj4gICB9DQo+ICAgDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9yYW5nZV9u b3RpZmllcl9vcHMgYW1kZ3B1X21uX2dmeF9vcHMgPSB7DQo+ICsJLmludmFsaWRhdGUgPSBhbWRn cHVfbW5faW52YWxpZGF0ZV9nZngsDQo+ICt9Ow0KPiArDQo+ICAgLyoqDQo+IC0gKiBhbWRncHVf bW5fc3luY19wYWdldGFibGVzX2dmeCAtIGNhbGxiYWNrIHRvIG5vdGlmeSBhYm91dCBtbSBjaGFu Z2UNCj4gKyAqIGFtZGdwdV9tbl9pbnZhbGlkYXRlX2hzYSAtIGNhbGxiYWNrIHRvIG5vdGlmeSBh Ym91dCBtbSBjaGFuZ2UNCj4gICAgKg0KPiAtICogQG1pcnJvcjogdGhlIGhtbV9taXJyb3IgKG1t KSBpcyBhYm91dCB0byB1cGRhdGUNCj4gLSAqIEB1cGRhdGU6IHRoZSB1cGRhdGUgc3RhcnQsIGVu ZCBhZGRyZXNzDQo+ICsgKiBAbXJuOiB0aGUgcmFuZ2UgKG1tKSBpcyBhYm91dCB0byB1cGRhdGUN Cj4gKyAqIEByYW5nZTogZGV0YWlscyBvbiB0aGUgaW52YWxpZGF0aW9uDQo+ICAgICoNCj4gLSAq IEJsb2NrIGZvciBvcGVyYXRpb25zIG9uIEJPcyB0byBmaW5pc2ggYW5kIG1hcmsgcGFnZXMgYXMg YWNjZXNzZWQgYW5kDQo+IC0gKiBwb3RlbnRpYWxseSBkaXJ0eS4NCj4gKyAqIFdlIHRlbXBvcmFy aWx5IGV2aWN0IHRoZSBCTyBhdHRhY2hlZCB0byB0aGlzIHJhbmdlLiBUaGlzIG5lY2Vzc2l0YXRl cw0KPiArICogZXZpY3RpbmcgYWxsIHVzZXItbW9kZSBxdWV1ZXMgb2YgdGhlIHByb2Nlc3MuDQo+ ICAgICovDQo+IC1zdGF0aWMgaW50DQo+IC1hbWRncHVfbW5fc3luY19wYWdldGFibGVzX2dmeChz dHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAtCQkJICAgICAgY29uc3Qgc3RydWN0IG1tdV9u b3RpZmllcl9yYW5nZSAqdXBkYXRlKQ0KPiArc3RhdGljIGJvb2wgYW1kZ3B1X21uX2ludmFsaWRh dGVfaHNhKHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwNCj4gKwkJCQkgICAgIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgYW1k Z3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3QgYW1kZ3B1X21uLCBtaXJy b3IpOw0KPiAtCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSB1cGRhdGUtPnN0YXJ0Ow0KPiAtCXVuc2ln bmVkIGxvbmcgZW5kID0gdXBkYXRlLT5lbmQ7DQo+IC0JYm9vbCBibG9ja2FibGUgPSBtbXVfbm90 aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHVwZGF0ZSk7DQo+IC0Jc3RydWN0IGludGVydmFsX3RyZWVf bm9kZSAqaXQ7DQo+IC0NCj4gLQkvKiBub3RpZmljYXRpb24gaXMgZXhjbHVzaXZlLCBidXQgaW50 ZXJ2YWwgaXMgaW5jbHVzaXZlICovDQo+IC0JZW5kIC09IDE7DQo+IC0NCj4gLQkvKiBUT0RPIHdl IHNob3VsZCBiZSBhYmxlIHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kDQo+ IC0JICogYW1kZ3B1X21uX2ludmFsaWRhdGVfbm9kZQ0KPiAtCSAqLw0KPiAtCWlmIChhbWRncHVf bW5fcmVhZF9sb2NrKGFtbiwgYmxvY2thYmxlKSkNCj4gLQkJcmV0dXJuIC1FQUdBSU47DQo+IC0N Cj4gLQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmYW1uLT5vYmplY3RzLCBzdGFydCwg ZW5kKTsNCj4gLQl3aGlsZSAoaXQpIHsNCj4gLQkJc3RydWN0IGFtZGdwdV9tbl9ub2RlICpub2Rl Ow0KPiAtDQo+IC0JCWlmICghYmxvY2thYmxlKSB7DQo+IC0JCQlhbWRncHVfbW5fcmVhZF91bmxv Y2soYW1uKTsNCj4gLQkJCXJldHVybiAtRUFHQUlOOw0KPiAtCQl9DQo+ICsJc3RydWN0IGFtZGdw dV9ibyAqYm8gPSBjb250YWluZXJfb2YobXJuLCBzdHJ1Y3QgYW1kZ3B1X2JvLCBub3RpZmllcik7 DQo+ICsJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBhbWRncHVfdHRtX2FkZXYoYm8tPnRi by5iZGV2KTsNCj4gICANCj4gLQkJbm9kZSA9IGNvbnRhaW5lcl9vZihpdCwgc3RydWN0IGFtZGdw dV9tbl9ub2RlLCBpdCk7DQo+IC0JCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25leHQoaXQsIHN0 YXJ0LCBlbmQpOw0KPiArCS8qIEZJWE1FOiBJcyB0aGlzIG5lY2Vzc2FyeT8gKi8NCj4gKwlpZiAo IWFtZGdwdV90dG1fdHRfYWZmZWN0X3VzZXJwdHIoYm8tPnRiby50dG0sIHJhbmdlLT5zdGFydCwN Cj4gKwkJCQkJICByYW5nZS0+ZW5kKSkNCj4gKwkJcmV0dXJuIHRydWU7DQo+ICAgDQo+IC0JCWFt ZGdwdV9tbl9pbnZhbGlkYXRlX25vZGUobm9kZSwgc3RhcnQsIGVuZCk7DQo+IC0JfQ0KPiArCWlm ICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpDQo+ICsJCXJldHVybiBmYWxz ZTsNCj4gICANCj4gLQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4gKwltdXRleF9sb2Nr KCZhZGV2LT5ub3RpZmllcl9sb2NrKTsNCj4gKwlhbWRncHVfYW1ka2ZkX2V2aWN0X3VzZXJwdHIo Ym8tPmtmZF9ibywgYm8tPm5vdGlmaWVyLm1tKTsNCj4gKwltdXRleF91bmxvY2soJmFkZXYtPm5v dGlmaWVyX2xvY2spOw0KPiAgIA0KPiAtCXJldHVybiAwOw0KPiArCXJldHVybiB0cnVlOw0KPiAg IH0NCj4gICANCj4gLS8qKg0KPiAtICogYW1kZ3B1X21uX3N5bmNfcGFnZXRhYmxlc19oc2EgLSBj YWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlDQo+IC0gKg0KPiAtICogQG1pcnJvcjog dGhlIGhtbV9taXJyb3IgKG1tKSBpcyBhYm91dCB0byB1cGRhdGUNCj4gLSAqIEB1cGRhdGU6IHRo ZSB1cGRhdGUgc3RhcnQsIGVuZCBhZGRyZXNzDQo+IC0gKg0KPiAtICogV2UgdGVtcG9yYXJpbHkg ZXZpY3QgYWxsIEJPcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQuIFRoaXMNCj4gLSAqIG5lY2Vzc2l0 YXRlcyBldmljdGluZyBhbGwgdXNlci1tb2RlIHF1ZXVlcyBvZiB0aGUgcHJvY2Vzcy4gVGhlIEJP cw0KPiAtICogYXJlIHJlc3RvcnRlZCBpbiBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9lbmRf aHNhLg0KPiAtICovDQo+IC1zdGF0aWMgaW50DQo+IC1hbWRncHVfbW5fc3luY19wYWdldGFibGVz X2hzYShzdHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAtCQkJICAgICAgY29uc3Qgc3RydWN0 IG1tdV9ub3RpZmllcl9yYW5nZSAqdXBkYXRlKQ0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVf cmFuZ2Vfbm90aWZpZXJfb3BzIGFtZGdwdV9tbl9oc2Ffb3BzID0gew0KPiArCS5pbnZhbGlkYXRl ID0gYW1kZ3B1X21uX2ludmFsaWRhdGVfaHNhLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGludCBh bWRncHVfbW5fc3luY19wYWdldGFibGVzKHN0cnVjdCBobW1fbWlycm9yICptaXJyb3IsDQo+ICsJ CQkJICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICp1cGRhdGUpDQo+ICAgew0K PiAgIAlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3Qg YW1kZ3B1X21uLCBtaXJyb3IpOw0KPiAtCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSB1cGRhdGUtPnN0 YXJ0Ow0KPiAtCXVuc2lnbmVkIGxvbmcgZW5kID0gdXBkYXRlLT5lbmQ7DQo+IC0JYm9vbCBibG9j a2FibGUgPSBtbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHVwZGF0ZSk7DQo+IC0Jc3RydWN0 IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7DQo+ICAgDQo+IC0JLyogbm90aWZpY2F0aW9uIGlzIGV4 Y2x1c2l2ZSwgYnV0IGludGVydmFsIGlzIGluY2x1c2l2ZSAqLw0KPiAtCWVuZCAtPSAxOw0KPiAt DQo+IC0JaWYgKGFtZGdwdV9tbl9yZWFkX2xvY2soYW1uLCBibG9ja2FibGUpKQ0KPiAtCQlyZXR1 cm4gLUVBR0FJTjsNCj4gLQ0KPiAtCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZhbW4t Pm9iamVjdHMsIHN0YXJ0LCBlbmQpOw0KPiAtCXdoaWxlIChpdCkgew0KPiAtCQlzdHJ1Y3QgYW1k Z3B1X21uX25vZGUgKm5vZGU7DQo+IC0JCXN0cnVjdCBhbWRncHVfYm8gKmJvOw0KPiAtDQo+IC0J CWlmICghYmxvY2thYmxlKSB7DQo+IC0JCQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4g LQkJCXJldHVybiAtRUFHQUlOOw0KPiAtCQl9DQo+IC0NCj4gLQkJbm9kZSA9IGNvbnRhaW5lcl9v ZihpdCwgc3RydWN0IGFtZGdwdV9tbl9ub2RlLCBpdCk7DQo+IC0JCWl0ID0gaW50ZXJ2YWxfdHJl ZV9pdGVyX25leHQoaXQsIHN0YXJ0LCBlbmQpOw0KPiAtDQo+IC0JCWxpc3RfZm9yX2VhY2hfZW50 cnkoYm8sICZub2RlLT5ib3MsIG1uX2xpc3QpIHsNCj4gLQkJCXN0cnVjdCBrZ2RfbWVtICptZW0g PSBiby0+a2ZkX2JvOw0KPiAtDQo+IC0JCQlpZiAoYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0 cihiby0+dGJvLnR0bSwNCj4gLQkJCQkJCQkgc3RhcnQsIGVuZCkpDQo+IC0JCQkJYW1kZ3B1X2Ft ZGtmZF9ldmljdF91c2VycHRyKG1lbSwgYW1uLT5tbSk7DQo+IC0JCX0NCj4gLQl9DQo+IC0NCj4g LQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4gKwlpZiAoIW1tdV9ub3RpZmllcl9yYW5n ZV9ibG9ja2FibGUodXBkYXRlKSkNCj4gKwkJcmV0dXJuIGZhbHNlOw0KPiAgIA0KPiArCWRvd25f cmVhZCgmYW1uLT5sb2NrKTsNCj4gKwl1cF9yZWFkKCZhbW4tPmxvY2spOw0KPiAgIAlyZXR1cm4g MDsNCj4gICB9DQo+ICAgDQo+IEBAIC0yOTUsMTIgKzE2NCwxMCBAQCBhbWRncHVfbW5fc3luY19w YWdldGFibGVzX2hzYShzdHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAgIA0KPiAgIHN0YXRp YyBzdHJ1Y3QgaG1tX21pcnJvcl9vcHMgYW1kZ3B1X2htbV9taXJyb3Jfb3BzW10gPSB7DQo+ICAg CVtBTURHUFVfTU5fVFlQRV9HRlhdID0gew0KPiAtCQkuc3luY19jcHVfZGV2aWNlX3BhZ2V0YWJs ZXMgPSBhbWRncHVfbW5fc3luY19wYWdldGFibGVzX2dmeCwNCj4gLQkJLnJlbGVhc2UgPSBhbWRn cHVfaG1tX21pcnJvcl9yZWxlYXNlDQo+ICsJCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9 IGFtZGdwdV9tbl9zeW5jX3BhZ2V0YWJsZXMsDQo+ICAgCX0sDQo+ICAgCVtBTURHUFVfTU5fVFlQ RV9IU0FdID0gew0KPiAtCQkuc3luY19jcHVfZGV2aWNlX3BhZ2V0YWJsZXMgPSBhbWRncHVfbW5f c3luY19wYWdldGFibGVzX2hzYSwNCj4gLQkJLnJlbGVhc2UgPSBhbWRncHVfaG1tX21pcnJvcl9y ZWxlYXNlDQo+ICsJCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9IGFtZGdwdV9tbl9zeW5j X3BhZ2V0YWJsZXMsDQo+ICAgCX0sDQo+ICAgfTsNCj4gICANCj4gQEAgLTMyNyw3ICsxOTQsOCBA QCBzdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LA0KPiAgIAl9DQo+ICAgDQo+ICAgCWhhc2hfZm9yX2VhY2hfcG9zc2libGUoYWRldi0+bW5f aGFzaCwgYW1uLCBub2RlLCBrZXkpDQo+IC0JCWlmIChBTURHUFVfTU5fS0VZKGFtbi0+bW0sIGFt bi0+dHlwZSkgPT0ga2V5KQ0KPiArCQlpZiAoQU1ER1BVX01OX0tFWShhbW4tPm1pcnJvci5obW0t Pm1tdV9ub3RpZmllci5tbSwNCj4gKwkJCQkgIGFtbi0+dHlwZSkgPT0ga2V5KQ0KPiAgIAkJCWdv dG8gcmVsZWFzZV9sb2NrczsNCj4gICANCj4gICAJYW1uID0ga3phbGxvYyhzaXplb2YoKmFtbiks IEdGUF9LRVJORUwpOw0KPiBAQCAtMzM3LDEwICsyMDUsOCBAQCBzdHJ1Y3QgYW1kZ3B1X21uICph bWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgIAl9DQo+ICAgDQo+ ICAgCWFtbi0+YWRldiA9IGFkZXY7DQo+IC0JYW1uLT5tbSA9IG1tOw0KPiAgIAlpbml0X3J3c2Vt KCZhbW4tPmxvY2spOw0KPiAgIAlhbW4tPnR5cGUgPSB0eXBlOw0KPiAtCWFtbi0+b2JqZWN0cyA9 IFJCX1JPT1RfQ0FDSEVEOw0KPiAgIA0KPiAgIAlhbW4tPm1pcnJvci5vcHMgPSAmYW1kZ3B1X2ht bV9taXJyb3Jfb3BzW3R5cGVdOw0KPiAgIAlyID0gaG1tX21pcnJvcl9yZWdpc3RlcigmYW1uLT5t aXJyb3IsIG1tKTsNCj4gQEAgLTM2OSwxMDAgKzIzNSwzMyBAQCBzdHJ1Y3QgYW1kZ3B1X21uICph bWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgICAqIEBibzogYW1k Z3B1IGJ1ZmZlciBvYmplY3QNCj4gICAgKiBAYWRkcjogdXNlcnB0ciBhZGRyIHdlIHNob3VsZCBt b25pdG9yDQo+ICAgICoNCj4gLSAqIFJlZ2lzdGVycyBhbiBITU0gbWlycm9yIGZvciB0aGUgZ2l2 ZW4gQk8gYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLg0KPiArICogUmVnaXN0ZXJzIGEgbW11X25v dGlmaWVyIGZvciB0aGUgZ2l2ZW4gQk8gYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLg0KPiAgICAq IFJldHVybnMgMCBvbiBzdWNjZXNzLCAtRVJSTk8gaWYgYW55dGhpbmcgZ29lcyB3cm9uZy4NCj4g ICAgKi8NCj4gICBpbnQgYW1kZ3B1X21uX3JlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvLCB1 bnNpZ25lZCBsb25nIGFkZHIpDQo+ICAgew0KPiAtCXVuc2lnbmVkIGxvbmcgZW5kID0gYWRkciAr IGFtZGdwdV9ib19zaXplKGJvKSAtIDE7DQo+IC0Jc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSBhbWRncHVfdHRtX2FkZXYoYm8tPnRiby5iZGV2KTsNCj4gLQllbnVtIGFtZGdwdV9tbl90eXBl IHR5cGUgPQ0KPiAtCQliby0+a2ZkX2JvID8gQU1ER1BVX01OX1RZUEVfSFNBIDogQU1ER1BVX01O X1RZUEVfR0ZYOw0KPiAtCXN0cnVjdCBhbWRncHVfbW4gKmFtbjsNCj4gLQlzdHJ1Y3QgYW1kZ3B1 X21uX25vZGUgKm5vZGUgPSBOVUxMLCAqbmV3X25vZGU7DQo+IC0Jc3RydWN0IGxpc3RfaGVhZCBi b3M7DQo+IC0Jc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7DQo+IC0NCj4gLQlhbW4gPSBh bWRncHVfbW5fZ2V0KGFkZXYsIHR5cGUpOw0KPiAtCWlmIChJU19FUlIoYW1uKSkNCj4gLQkJcmV0 dXJuIFBUUl9FUlIoYW1uKTsNCj4gLQ0KPiAtCW5ld19ub2RlID0ga21hbGxvYyhzaXplb2YoKm5l d19ub2RlKSwgR0ZQX0tFUk5FTCk7DQo+IC0JaWYgKCFuZXdfbm9kZSkNCj4gLQkJcmV0dXJuIC1F Tk9NRU07DQo+IC0NCj4gLQlJTklUX0xJU1RfSEVBRCgmYm9zKTsNCj4gLQ0KPiAtCWRvd25fd3Jp dGUoJmFtbi0+bG9jayk7DQo+IC0NCj4gLQl3aGlsZSAoKGl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVy X2ZpcnN0KCZhbW4tPm9iamVjdHMsIGFkZHIsIGVuZCkpKSB7DQo+IC0JCWtmcmVlKG5vZGUpOw0K PiAtCQlub2RlID0gY29udGFpbmVyX29mKGl0LCBzdHJ1Y3QgYW1kZ3B1X21uX25vZGUsIGl0KTsN Cj4gLQkJaW50ZXJ2YWxfdHJlZV9yZW1vdmUoJm5vZGUtPml0LCAmYW1uLT5vYmplY3RzKTsNCj4g LQkJYWRkciA9IG1pbihpdC0+c3RhcnQsIGFkZHIpOw0KPiAtCQllbmQgPSBtYXgoaXQtPmxhc3Qs IGVuZCk7DQo+IC0JCWxpc3Rfc3BsaWNlKCZub2RlLT5ib3MsICZib3MpOw0KPiAtCX0NCj4gLQ0K PiAtCWlmICghbm9kZSkNCj4gLQkJbm9kZSA9IG5ld19ub2RlOw0KPiArCWlmIChiby0+a2ZkX2Jv KQ0KPiArCQliby0+bm90aWZpZXIub3BzID0gJmFtZGdwdV9tbl9oc2Ffb3BzOw0KPiAgIAllbHNl DQo+IC0JCWtmcmVlKG5ld19ub2RlKTsNCj4gLQ0KPiAtCWJvLT5tbiA9IGFtbjsNCj4gLQ0KPiAt CW5vZGUtPml0LnN0YXJ0ID0gYWRkcjsNCj4gLQlub2RlLT5pdC5sYXN0ID0gZW5kOw0KPiAtCUlO SVRfTElTVF9IRUFEKCZub2RlLT5ib3MpOw0KPiAtCWxpc3Rfc3BsaWNlKCZib3MsICZub2RlLT5i b3MpOw0KPiAtCWxpc3RfYWRkKCZiby0+bW5fbGlzdCwgJm5vZGUtPmJvcyk7DQo+ICsJCWJvLT5u b3RpZmllci5vcHMgPSAmYW1kZ3B1X21uX2dmeF9vcHM7DQo+ICAgDQo+IC0JaW50ZXJ2YWxfdHJl ZV9pbnNlcnQoJm5vZGUtPml0LCAmYW1uLT5vYmplY3RzKTsNCj4gLQ0KPiAtCXVwX3dyaXRlKCZh bW4tPmxvY2spOw0KPiAtDQo+IC0JcmV0dXJuIDA7DQo+ICsJcmV0dXJuIG1tdV9yYW5nZV9ub3Rp Zmllcl9pbnNlcnQoJmJvLT5ub3RpZmllciwgYWRkciwNCj4gKwkJCQkJIGFtZGdwdV9ib19zaXpl KGJvKSwgY3VycmVudC0+bW0pOw0KPiAgIH0NCj4gICANCj4gICAvKioNCj4gLSAqIGFtZGdwdV9t bl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBhIEJPIGZvciBITU0gbWlycm9yIHVwZGF0ZXMNCj4g KyAqIGFtZGdwdV9tbl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBhIEJPIGZvciBub3RpZmllciB1 cGRhdGVzDQo+ICAgICoNCj4gICAgKiBAYm86IGFtZGdwdSBidWZmZXIgb2JqZWN0DQo+ICAgICoN Cj4gLSAqIFJlbW92ZSBhbnkgcmVnaXN0cmF0aW9uIG9mIEhNTSBtaXJyb3IgdXBkYXRlcyBmcm9t IHRoZSBidWZmZXIgb2JqZWN0Lg0KPiArICogUmVtb3ZlIGFueSByZWdpc3RyYXRpb24gb2YgbW11 IG5vdGlmaWVyIHVwZGF0ZXMgZnJvbSB0aGUgYnVmZmVyIG9iamVjdC4NCj4gICAgKi8NCj4gICB2 b2lkIGFtZGdwdV9tbl91bnJlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvKQ0KPiAgIHsNCj4g LQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJk ZXYpOw0KPiAtCXN0cnVjdCBhbWRncHVfbW4gKmFtbjsNCj4gLQlzdHJ1Y3QgbGlzdF9oZWFkICpo ZWFkOw0KPiAtDQo+IC0JbXV0ZXhfbG9jaygmYWRldi0+bW5fbG9jayk7DQo+IC0NCj4gLQlhbW4g PSBiby0+bW47DQo+IC0JaWYgKGFtbiA9PSBOVUxMKSB7DQo+IC0JCW11dGV4X3VubG9jaygmYWRl di0+bW5fbG9jayk7DQo+ICsJaWYgKCFiby0+bm90aWZpZXIubW0pDQo+ICAgCQlyZXR1cm47DQo+ IC0JfQ0KPiAtDQo+IC0JZG93bl93cml0ZSgmYW1uLT5sb2NrKTsNCj4gLQ0KPiAtCS8qIHNhdmUg dGhlIG5leHQgbGlzdCBlbnRyeSBmb3IgbGF0ZXIgKi8NCj4gLQloZWFkID0gYm8tPm1uX2xpc3Qu bmV4dDsNCj4gLQ0KPiAtCWJvLT5tbiA9IE5VTEw7DQo+IC0JbGlzdF9kZWxfaW5pdCgmYm8tPm1u X2xpc3QpOw0KPiAtDQo+IC0JaWYgKGxpc3RfZW1wdHkoaGVhZCkpIHsNCj4gLQkJc3RydWN0IGFt ZGdwdV9tbl9ub2RlICpub2RlOw0KPiAtDQo+IC0JCW5vZGUgPSBjb250YWluZXJfb2YoaGVhZCwg c3RydWN0IGFtZGdwdV9tbl9ub2RlLCBib3MpOw0KPiAtCQlpbnRlcnZhbF90cmVlX3JlbW92ZSgm bm9kZS0+aXQsICZhbW4tPm9iamVjdHMpOw0KPiAtCQlrZnJlZShub2RlKTsNCj4gLQl9DQo+IC0N Cj4gLQl1cF93cml0ZSgmYW1uLT5sb2NrKTsNCj4gLQltdXRleF91bmxvY2soJmFkZXYtPm1uX2xv Y2spOw0KPiArCW1tdV9yYW5nZV9ub3RpZmllcl9yZW1vdmUoJmJvLT5ub3RpZmllcik7DQo+ICsJ Ym8tPm5vdGlmaWVyLm1tID0gTlVMTDsNCj4gICB9DQo+ICAgDQo+ICAgLyogZmxhZ3MgdXNlZCBi eSBITU0gaW50ZXJuYWwsIG5vdCByZWxhdGVkIHRvIENQVS9HUFUgUFRFIGZsYWdzICovDQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uaCBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oDQo+IGluZGV4IGI4ZWQ2ODk0MzYyNWMy Li5kNzNhYjI5NDdiMjJiMiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X21uLmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X21uLmgNCj4gQEAgLTM5LDEyICszOSwxMCBAQCBlbnVtIGFtZGdwdV9tbl90eXBlIHsNCj4gICAg KiBzdHJ1Y3QgYW1kZ3B1X21uDQo+ICAgICoNCj4gICAgKiBAYWRldjogYW1kZ3B1IGRldmljZSBw b2ludGVyDQo+IC0gKiBAbW06IHByb2Nlc3MgYWRkcmVzcyBzcGFjZQ0KPiAgICAqIEB0eXBlOiB0 eXBlIG9mIE1NVSBub3RpZmllcg0KPiAgICAqIEB3b3JrOiBkZXN0cnVjdGlvbiB3b3JrIGl0ZW0N Cj4gICAgKiBAbm9kZTogaGFzaCB0YWJsZSBub2RlIHRvIGZpbmQgc3RydWN0dXJlIGJ5IGFkZXYg YW5kIG1uDQo+ICAgICogQGxvY2s6IHJ3IHNlbWFwaG9yZSBwcm90ZWN0aW5nIHRoZSBub3RpZmll ciBub2Rlcw0KPiAtICogQG9iamVjdHM6IGludGVydmFsIHRyZWUgY29udGFpbmluZyBhbWRncHVf bW5fbm9kZXMNCj4gICAgKiBAbWlycm9yOiBITU0gbWlycm9yIGZ1bmN0aW9uIHN1cHBvcnQNCj4g ICAgKg0KPiAgICAqIERhdGEgZm9yIGVhY2ggYW1kZ3B1IGRldmljZSBhbmQgcHJvY2VzcyBhZGRy ZXNzIHNwYWNlLg0KPiBAQCAtNTIsNyArNTAsNiBAQCBlbnVtIGFtZGdwdV9tbl90eXBlIHsNCj4g ICBzdHJ1Y3QgYW1kZ3B1X21uIHsNCj4gICAJLyogY29uc3RhbnQgYWZ0ZXIgaW5pdGlhbGlzYXRp b24gKi8NCj4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2UJKmFkZXY7DQo+IC0Jc3RydWN0IG1tX3N0 cnVjdAkqbW07DQo+ICAgCWVudW0gYW1kZ3B1X21uX3R5cGUJdHlwZTsNCj4gICANCj4gICAJLyog b25seSB1c2VkIG9uIGRlc3RydWN0aW9uICovDQo+IEBAIC02Myw3ICs2MCw2IEBAIHN0cnVjdCBh bWRncHVfbW4gew0KPiAgIA0KPiAgIAkvKiBvYmplY3RzIHByb3RlY3RlZCBieSBsb2NrICovDQo+ ICAgCXN0cnVjdCByd19zZW1hcGhvcmUJbG9jazsNCj4gLQlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQJ b2JqZWN0czsNCj4gICANCj4gICAjaWZkZWYgQ09ORklHX0hNTV9NSVJST1INCj4gICAJLyogSE1N IG1pcnJvciAqLw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5o DQo+IGluZGV4IDY1OGY0Yzk3NzliNzA0Li40YjQ0YWI4NTBmOTRjMiAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oDQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaA0KPiBAQCAtMzAsNiArMzAsOSBA QA0KPiAgIA0KPiAgICNpbmNsdWRlIDxkcm0vYW1kZ3B1X2RybS5oPg0KPiAgICNpbmNsdWRlICJh bWRncHUuaCINCj4gKyNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSDQo+ICsjaW5jbHVkZSA8bGlu dXgvbW11X25vdGlmaWVyLmg+DQo+ICsjZW5kaWYNCj4gICANCj4gICAjZGVmaW5lIEFNREdQVV9C T19JTlZBTElEX09GRlNFVAlMT05HX01BWA0KPiAgICNkZWZpbmUgQU1ER1BVX0JPX01BWF9QTEFD RU1FTlRTCTMNCj4gQEAgLTEwMCwxMCArMTAzLDEyIEBAIHN0cnVjdCBhbWRncHVfYm8gew0KPiAg IAlzdHJ1Y3QgdHRtX2JvX2ttYXBfb2JqCQlkbWFfYnVmX3ZtYXA7DQo+ICAgCXN0cnVjdCBhbWRn cHVfbW4JCSptbjsNCj4gICANCj4gLQl1bmlvbiB7DQo+IC0JCXN0cnVjdCBsaXN0X2hlYWQJbW5f bGlzdDsNCj4gLQkJc3RydWN0IGxpc3RfaGVhZAlzaGFkb3dfbGlzdDsNCj4gLQl9Ow0KPiArDQo+ ICsjaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUg0KPiArCXN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZp ZXIJbm90aWZpZXI7DQo+ICsjZW5kaWYNCj4gKw0KPiArCXN0cnVjdCBsaXN0X2hlYWQJCXNoYWRv d19saXN0Ow0KPiAgIA0KPiAgIAlzdHJ1Y3Qga2dkX21lbSAgICAgICAgICAgICAgICAgICprZmRf Ym87DQo+ICAgfTsNCg0K From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Koenig, Christian" Subject: Re: [PATCH v2 13/15] drm/amdgpu: Use mmu_range_insert instead of hmm_mirror Date: Tue, 29 Oct 2019 07:51:30 +0000 Message-ID: References: <20191028201032.6352-1-jgg@ziepe.ca> <20191028201032.6352-14-jgg@ziepe.ca> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191028201032.6352-14-jgg@ziepe.ca> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jason Gunthorpe , "linux-mm@kvack.org" , Jerome Glisse , Ralph Campbell , John Hubbard , "Kuehling, Felix" Cc: Juergen Gross , Mike Marciniszyn , Stefano Stabellini , Oleksandr Andrushchenko , "linux-rdma@vger.kernel.org" , "nouveau@lists.freedesktop.org" , Dennis Dalessandro , "amd-gfx@lists.freedesktop.org" , Christoph Hellwig , Jason Gunthorpe , "dri-devel@lists.freedesktop.org" , "Deucher, Alexander" , "xen-devel@lists.xenproject.org" , Boris Ostrovsky , Petr Cvek , Ben Skeggs List-Id: nouveau.vger.kernel.org QW0gMjguMTAuMTkgdW0gMjE6MTAgc2NocmllYiBKYXNvbiBHdW50aG9ycGU6DQo+IEZyb206IEph c29uIEd1bnRob3JwZSA8amdnQG1lbGxhbm94LmNvbT4NCj4NCj4gUmVtb3ZlIHRoZSBpbnRlcnZh bCB0cmVlIGluIHRoZSBkcml2ZXIgYW5kIHJlbHkgb24gdGhlIHRyZWUgbWFpbnRhaW5lZCBieQ0K PiB0aGUgbW11X25vdGlmaWVyIGZvciBkZWxpdmVyaW5nIG1tdV9ub3RpZmllciBpbnZhbGlkYXRp b24gY2FsbGJhY2tzLg0KPg0KPiBGb3Igc29tZSByZWFzb24gYW1kZ3B1IGhhcyBhIHZlcnkgY29t cGxpY2F0ZWQgYXJyYW5nZW1lbnQgd2hlcmUgaXQgdHJpZXMNCj4gdG8gcHJldmVudCBkdXBsaWNh dGUgZW50cmllcyBpbiB0aGUgaW50ZXJ2YWxfdHJlZSwgdGhpcyBpcyBub3QgbmVjZXNzYXJ5LA0K PiBlYWNoIGFtZGdwdV9ibyBjYW4gYmUgaXRzIG93biBzdGFuZCBhbG9uZSBlbnRyeS4gaW50ZXJ2 YWxfdHJlZSBhbHJlYWR5DQo+IGFsbG93cyBkdXBsaWNhdGVzIGFuZCBvdmVybGFwcyBpbiB0aGUg dHJlZS4NCj4NCj4gQWxzbywgdGhlcmUgaXMgbm8gbmVlZCB0byByZW1vdmUgZW50cmllcyB1cG9u IGEgcmVsZWFzZSBjYWxsYmFjaywgdGhlDQo+IG1tdV9yYW5nZSBBUEkgc2FmZWx5IGFsbG93cyBv YmplY3RzIHRvIHJlbWFpbiByZWdpc3RlcmVkIGJleW9uZCB0aGUNCj4gbGlmZXRpbWUgb2YgdGhl IG1tLiBUaGUgZHJpdmVyIG9ubHkgaGFzIHRvIHN0b3AgdG91Y2hpbmcgdGhlIHBhZ2VzIGR1cmlu Zw0KPiByZWxlYXNlLg0KPg0KPiBDYzogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBh bWQuY29tPg0KPiBDYzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t Pg0KPiBDYzogRGF2aWQgKENodW5NaW5nKSBaaG91IDxEYXZpZDEuWmhvdUBhbWQuY29tPg0KPiBD YzogYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gU2lnbmVkLW9mZi1ieTogSmFzb24g R3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPg0KPiAtLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHUuaCAgICAgICAgICAgfCAgIDIgKw0KPiAgIC4uLi9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jICB8ICAgNSArLQ0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyAgICB8ICAgMSArDQo+ICAgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgICAgICAgIHwgMzQxICsrKystLS0tLS0tLS0t LS0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oICAgICAgICB8 ICAgNCAtDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oICAg IHwgIDEzICstDQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAyODIgZGVs ZXRpb25zKC0pDQo+DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oDQo+IGluZGV4IGJk MzdkZjVkZDZkMDQ4Li42MDU5MWE1ZDQyMDAyMSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1LmgNCj4gQEAgLTEwMDYsNiArMTAwNiw4IEBAIHN0cnVjdCBhbWRncHVfZGV2aWNl IHsNCj4gICAJc3RydWN0IG11dGV4ICBsb2NrX3Jlc2V0Ow0KPiAgIAlzdHJ1Y3QgYW1kZ3B1X2Rv b3JiZWxsX2luZGV4IGRvb3JiZWxsX2luZGV4Ow0KPiAgIA0KPiArCXN0cnVjdCBtdXRleAkJCW5v dGlmaWVyX2xvY2s7DQo+ICsNCj4gICAJaW50IGFzaWNfcmVzZXRfcmVzOw0KPiAgIAlzdHJ1Y3Qg d29ya19zdHJ1Y3QJCXhnbWlfcmVzZXRfd29yazsNCj4gICANCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYw0KPiBpbmRleCA2ZDAyMWVjYzhk NTk4Zi4uNDc3MDAzMDJhMDhiN2YgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMNCj4gQEAgLTQ4MSw4ICs0ODEsNyBAQCBzdGF0 aWMgdm9pZCByZW1vdmVfa2dkX21lbV9mcm9tX2tmZF9ib19saXN0KHN0cnVjdCBrZ2RfbWVtICpt ZW0sDQo+ICAgICoNCj4gICAgKiBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5v IGZvciBlcnJvcnMuDQo+ICAgICovDQo+IC1zdGF0aWMgaW50IGluaXRfdXNlcl9wYWdlcyhzdHJ1 Y3Qga2dkX21lbSAqbWVtLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwNCj4gLQkJCSAgIHVpbnQ2NF90 IHVzZXJfYWRkcikNCj4gK3N0YXRpYyBpbnQgaW5pdF91c2VyX3BhZ2VzKHN0cnVjdCBrZ2RfbWVt ICptZW0sIHVpbnQ2NF90IHVzZXJfYWRkcikNCj4gICB7DQo+ICAgCXN0cnVjdCBhbWRrZmRfcHJv Y2Vzc19pbmZvICpwcm9jZXNzX2luZm8gPSBtZW0tPnByb2Nlc3NfaW5mbzsNCj4gICAJc3RydWN0 IGFtZGdwdV9ibyAqYm8gPSBtZW0tPmJvOw0KPiBAQCAtMTE5NSw3ICsxMTk0LDcgQEAgaW50IGFt ZGdwdV9hbWRrZmRfZ3B1dm1fYWxsb2NfbWVtb3J5X29mX2dwdSgNCj4gICAJYWRkX2tnZF9tZW1f dG9fa2ZkX2JvX2xpc3QoKm1lbSwgYXZtLT5wcm9jZXNzX2luZm8sIHVzZXJfYWRkcik7DQo+ICAg DQo+ICAgCWlmICh1c2VyX2FkZHIpIHsNCj4gLQkJcmV0ID0gaW5pdF91c2VyX3BhZ2VzKCptZW0s IGN1cnJlbnQtPm1tLCB1c2VyX2FkZHIpOw0KPiArCQlyZXQgPSBpbml0X3VzZXJfcGFnZXMoKm1l bSwgdXNlcl9hZGRyKTsNCj4gICAJCWlmIChyZXQpDQo+ICAgCQkJZ290byBhbGxvY2F0ZV9pbml0 X3VzZXJfcGFnZXNfZmFpbGVkOw0KPiAgIAl9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZGV2aWNlLmMNCj4gaW5kZXggNWExOTM5ZGJkNGUzZTYuLjM4Zjk3OTk4YWFkZGIy IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNl LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jDQo+ IEBAIC0yNjMzLDYgKzI2MzMsNyBAQCBpbnQgYW1kZ3B1X2RldmljZV9pbml0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LA0KPiAgIAltdXRleF9pbml0KCZhZGV2LT52aXJ0LnZmX2Vycm9ycy5s b2NrKTsNCj4gICAJaGFzaF9pbml0KGFkZXYtPm1uX2hhc2gpOw0KPiAgIAltdXRleF9pbml0KCZh ZGV2LT5sb2NrX3Jlc2V0KTsNCj4gKwltdXRleF9pbml0KCZhZGV2LT5ub3RpZmllcl9sb2NrKTsN Cj4gICAJbXV0ZXhfaW5pdCgmYWRldi0+dmlydC5kcG1fbXV0ZXgpOw0KPiAgIAltdXRleF9pbml0 KCZhZGV2LT5wc3AubXV0ZXgpOw0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfbW4uYw0KPiBpbmRleCAzMWQ0ZGViNWQyOTQ4NC4uNGZmZDdiOTBmNGQ5MDcgMTAwNjQ0DQo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQo+IEBAIC01MCw2NiArNTAsNiBA QA0KPiAgICNpbmNsdWRlICJhbWRncHUuaCINCj4gICAjaW5jbHVkZSAiYW1kZ3B1X2FtZGtmZC5o Ig0KPiAgIA0KPiAtLyoqDQo+IC0gKiBzdHJ1Y3QgYW1kZ3B1X21uX25vZGUNCj4gLSAqDQo+IC0g KiBAaXQ6IGludGVydmFsIG5vZGUgZGVmaW5pbmcgc3RhcnQtbGFzdCBvZiB0aGUgYWZmZWN0ZWQg YWRkcmVzcyByYW5nZQ0KPiAtICogQGJvczogbGlzdCBvZiBhbGwgQk9zIGluIHRoZSBhZmZlY3Rl ZCBhZGRyZXNzIHJhbmdlDQo+IC0gKg0KPiAtICogTWFuYWdlcyBhbGwgQk9zIHdoaWNoIGFyZSBh ZmZlY3RlZCBvZiBhIGNlcnRhaW4gcmFuZ2Ugb2YgYWRkcmVzcyBzcGFjZS4NCj4gLSAqLw0KPiAt c3RydWN0IGFtZGdwdV9tbl9ub2RlIHsNCj4gLQlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlCWl0 Ow0KPiAtCXN0cnVjdCBsaXN0X2hlYWQJCWJvczsNCj4gLX07DQo+IC0NCj4gLS8qKg0KPiAtICog YW1kZ3B1X21uX2Rlc3Ryb3kgLSBkZXN0cm95IHRoZSBITU0gbWlycm9yDQo+IC0gKg0KPiAtICog QHdvcms6IHByZXZpb3VzbHkgc2hlZHVsZWQgd29yayBpdGVtDQo+IC0gKg0KPiAtICogTGF6eSBk ZXN0cm95cyB0aGUgbm90aWZpZXIgZnJvbSBhIHdvcmsgaXRlbQ0KPiAtICovDQo+IC1zdGF0aWMg dm9pZCBhbWRncHVfbW5fZGVzdHJveShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+IC17DQo+ IC0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhbWRn cHVfbW4sIHdvcmspOw0KPiAtCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gYW1uLT5hZGV2 Ow0KPiAtCXN0cnVjdCBhbWRncHVfbW5fbm9kZSAqbm9kZSwgKm5leHRfbm9kZTsNCj4gLQlzdHJ1 Y3QgYW1kZ3B1X2JvICpibywgKm5leHRfYm87DQo+IC0NCj4gLQltdXRleF9sb2NrKCZhZGV2LT5t bl9sb2NrKTsNCj4gLQlkb3duX3dyaXRlKCZhbW4tPmxvY2spOw0KPiAtCWhhc2hfZGVsKCZhbW4t Pm5vZGUpOw0KPiAtCXJidHJlZV9wb3N0b3JkZXJfZm9yX2VhY2hfZW50cnlfc2FmZShub2RlLCBu ZXh0X25vZGUsDQo+IC0JCQkJCSAgICAgJmFtbi0+b2JqZWN0cy5yYl9yb290LCBpdC5yYikgew0K PiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYm8sIG5leHRfYm8sICZub2RlLT5ib3MsIG1u X2xpc3QpIHsNCj4gLQkJCWJvLT5tbiA9IE5VTEw7DQo+IC0JCQlsaXN0X2RlbF9pbml0KCZiby0+ bW5fbGlzdCk7DQo+IC0JCX0NCj4gLQkJa2ZyZWUobm9kZSk7DQo+IC0JfQ0KPiAtCXVwX3dyaXRl KCZhbW4tPmxvY2spOw0KPiAtCW11dGV4X3VubG9jaygmYWRldi0+bW5fbG9jayk7DQo+IC0NCj4g LQlobW1fbWlycm9yX3VucmVnaXN0ZXIoJmFtbi0+bWlycm9yKTsNCj4gLQlrZnJlZShhbW4pOw0K PiAtfQ0KPiAtDQo+IC0vKioNCj4gLSAqIGFtZGdwdV9obW1fbWlycm9yX3JlbGVhc2UgLSBjYWxs YmFjayB0byBub3RpZnkgYWJvdXQgbW0gZGVzdHJ1Y3Rpb24NCj4gLSAqDQo+IC0gKiBAbWlycm9y OiB0aGUgSE1NIG1pcnJvciAobW0pIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQNCj4gLSAqDQo+IC0g KiBTaGVkdWxlIGEgd29yayBpdGVtIHRvIGxhenkgZGVzdHJveSBITU0gbWlycm9yLg0KPiAtICov DQo+IC1zdGF0aWMgdm9pZCBhbWRncHVfaG1tX21pcnJvcl9yZWxlYXNlKHN0cnVjdCBobW1fbWly cm9yICptaXJyb3IpDQo+IC17DQo+IC0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVy X29mKG1pcnJvciwgc3RydWN0IGFtZGdwdV9tbiwgbWlycm9yKTsNCj4gLQ0KPiAtCUlOSVRfV09S SygmYW1uLT53b3JrLCBhbWRncHVfbW5fZGVzdHJveSk7DQo+IC0Jc2NoZWR1bGVfd29yaygmYW1u LT53b3JrKTsNCj4gLX0NCj4gLQ0KPiAgIC8qKg0KPiAgICAqIGFtZGdwdV9tbl9sb2NrIC0gdGFr ZSB0aGUgd3JpdGUgc2lkZSBsb2NrIGZvciB0aGlzIG5vdGlmaWVyDQo+ICAgICoNCj4gQEAgLTEz MywxNTcgKzczLDg2IEBAIHZvaWQgYW1kZ3B1X21uX3VubG9jayhzdHJ1Y3QgYW1kZ3B1X21uICpt bikNCj4gICB9DQo+ICAgDQo+ICAgLyoqDQo+IC0gKiBhbWRncHVfbW5fcmVhZF9sb2NrIC0gdGFr ZSB0aGUgcmVhZCBzaWRlIGxvY2sgZm9yIHRoaXMgbm90aWZpZXINCj4gLSAqDQo+IC0gKiBAYW1u OiBvdXIgbm90aWZpZXINCj4gLSAqLw0KPiAtc3RhdGljIGludCBhbWRncHVfbW5fcmVhZF9sb2Nr KHN0cnVjdCBhbWRncHVfbW4gKmFtbiwgYm9vbCBibG9ja2FibGUpDQo+IC17DQo+IC0JaWYgKGJs b2NrYWJsZSkNCj4gLQkJZG93bl9yZWFkKCZhbW4tPmxvY2spOw0KPiAtCWVsc2UgaWYgKCFkb3du X3JlYWRfdHJ5bG9jaygmYW1uLT5sb2NrKSkNCj4gLQkJcmV0dXJuIC1FQUdBSU47DQo+IC0NCj4g LQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtLyoqDQo+IC0gKiBhbWRncHVfbW5fcmVhZF91bmxv Y2sgLSBkcm9wIHRoZSByZWFkIHNpZGUgbG9jayBmb3IgdGhpcyBub3RpZmllcg0KPiAtICoNCj4g LSAqIEBhbW46IG91ciBub3RpZmllcg0KPiAtICovDQo+IC1zdGF0aWMgdm9pZCBhbWRncHVfbW5f cmVhZF91bmxvY2soc3RydWN0IGFtZGdwdV9tbiAqYW1uKQ0KPiAtew0KPiAtCXVwX3JlYWQoJmFt bi0+bG9jayk7DQo+IC19DQo+IC0NCj4gLS8qKg0KPiAtICogYW1kZ3B1X21uX2ludmFsaWRhdGVf bm9kZSAtIHVubWFwIGFsbCBCT3Mgb2YgYSBub2RlDQo+ICsgKiBhbWRncHVfbW5faW52YWxpZGF0 ZV9nZnggLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlDQo+ICAgICoNCj4gLSAq IEBub2RlOiB0aGUgbm9kZSB3aXRoIHRoZSBCT3MgdG8gdW5tYXANCj4gLSAqIEBzdGFydDogc3Rh cnQgb2YgYWRkcmVzcyByYW5nZSBhZmZlY3RlZA0KPiAtICogQGVuZDogZW5kIG9mIGFkZHJlc3Mg cmFuZ2UgYWZmZWN0ZWQNCj4gKyAqIEBtcm46IHRoZSByYW5nZSAobW0pIGlzIGFib3V0IHRvIHVw ZGF0ZQ0KPiArICogQHJhbmdlOiBkZXRhaWxzIG9uIHRoZSBpbnZhbGlkYXRpb24NCj4gICAgKg0K PiAgICAqIEJsb2NrIGZvciBvcGVyYXRpb25zIG9uIEJPcyB0byBmaW5pc2ggYW5kIG1hcmsgcGFn ZXMgYXMgYWNjZXNzZWQgYW5kDQo+ICAgICogcG90ZW50aWFsbHkgZGlydHkuDQo+ICAgICovDQo+ IC1zdGF0aWMgdm9pZCBhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlKHN0cnVjdCBhbWRncHVfbW5f bm9kZSAqbm9kZSwNCj4gLQkJCQkgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LA0KPiAtCQkJCSAg ICAgIHVuc2lnbmVkIGxvbmcgZW5kKQ0KPiArc3RhdGljIGJvb2wgYW1kZ3B1X21uX2ludmFsaWRh dGVfZ2Z4KHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwNCj4gKwkJCQkgICAgIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgYW1k Z3B1X2JvICpibzsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2JvICpibyA9IGNvbnRhaW5lcl9vZihtcm4s IHN0cnVjdCBhbWRncHVfYm8sIG5vdGlmaWVyKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJkZXYpOw0KPiAgIAlsb25nIHI7DQo+ICAg DQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShibywgJm5vZGUtPmJvcywgbW5fbGlzdCkgew0KPiAt DQo+IC0JCWlmICghYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwgc3Rh cnQsIGVuZCkpDQo+IC0JCQljb250aW51ZTsNCj4gLQ0KPiAtCQlyID0gZG1hX3Jlc3Zfd2FpdF90 aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwNCj4gLQkJCXRydWUsIGZhbHNlLCBNQVhfU0NI RURVTEVfVElNRU9VVCk7DQo+IC0JCWlmIChyIDw9IDApDQo+IC0JCQlEUk1fRVJST1IoIiglbGQp IGZhaWxlZCB0byB3YWl0IGZvciB1c2VyIGJvXG4iLCByKTsNCj4gLQl9DQo+ICsJLyogRklYTUU6 IElzIHRoaXMgbmVjZXNzYXJ5PyAqLw0KDQpNb3N0IGxpa2VseSBub3QuDQoNCkNocmlzdGlhbi4N Cg0KPiArCWlmICghYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwgcmFu Z2UtPnN0YXJ0LA0KPiArCQkJCQkgIHJhbmdlLT5lbmQpKQ0KPiArCQlyZXR1cm4gdHJ1ZTsNCj4g Kw0KPiArCWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpDQo+ICsJCXJl dHVybiBmYWxzZTsNCj4gKw0KPiArCW11dGV4X2xvY2soJmFkZXYtPm5vdGlmaWVyX2xvY2spOw0K PiArCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KGJvLT50Ym8uYmFzZS5yZXN2LCB0cnVl LCBmYWxzZSwNCj4gKwkJCQkgICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7DQo+ICsJbXV0ZXhf dW5sb2NrKCZhZGV2LT5ub3RpZmllcl9sb2NrKTsNCj4gKwlpZiAociA8PSAwKQ0KPiArCQlEUk1f RVJST1IoIiglbGQpIGZhaWxlZCB0byB3YWl0IGZvciB1c2VyIGJvXG4iLCByKTsNCj4gKwlyZXR1 cm4gdHJ1ZTsNCj4gICB9DQo+ICAgDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9yYW5nZV9u b3RpZmllcl9vcHMgYW1kZ3B1X21uX2dmeF9vcHMgPSB7DQo+ICsJLmludmFsaWRhdGUgPSBhbWRn cHVfbW5faW52YWxpZGF0ZV9nZngsDQo+ICt9Ow0KPiArDQo+ICAgLyoqDQo+IC0gKiBhbWRncHVf bW5fc3luY19wYWdldGFibGVzX2dmeCAtIGNhbGxiYWNrIHRvIG5vdGlmeSBhYm91dCBtbSBjaGFu Z2UNCj4gKyAqIGFtZGdwdV9tbl9pbnZhbGlkYXRlX2hzYSAtIGNhbGxiYWNrIHRvIG5vdGlmeSBh Ym91dCBtbSBjaGFuZ2UNCj4gICAgKg0KPiAtICogQG1pcnJvcjogdGhlIGhtbV9taXJyb3IgKG1t KSBpcyBhYm91dCB0byB1cGRhdGUNCj4gLSAqIEB1cGRhdGU6IHRoZSB1cGRhdGUgc3RhcnQsIGVu ZCBhZGRyZXNzDQo+ICsgKiBAbXJuOiB0aGUgcmFuZ2UgKG1tKSBpcyBhYm91dCB0byB1cGRhdGUN Cj4gKyAqIEByYW5nZTogZGV0YWlscyBvbiB0aGUgaW52YWxpZGF0aW9uDQo+ICAgICoNCj4gLSAq IEJsb2NrIGZvciBvcGVyYXRpb25zIG9uIEJPcyB0byBmaW5pc2ggYW5kIG1hcmsgcGFnZXMgYXMg YWNjZXNzZWQgYW5kDQo+IC0gKiBwb3RlbnRpYWxseSBkaXJ0eS4NCj4gKyAqIFdlIHRlbXBvcmFy aWx5IGV2aWN0IHRoZSBCTyBhdHRhY2hlZCB0byB0aGlzIHJhbmdlLiBUaGlzIG5lY2Vzc2l0YXRl cw0KPiArICogZXZpY3RpbmcgYWxsIHVzZXItbW9kZSBxdWV1ZXMgb2YgdGhlIHByb2Nlc3MuDQo+ ICAgICovDQo+IC1zdGF0aWMgaW50DQo+IC1hbWRncHVfbW5fc3luY19wYWdldGFibGVzX2dmeChz dHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAtCQkJICAgICAgY29uc3Qgc3RydWN0IG1tdV9u b3RpZmllcl9yYW5nZSAqdXBkYXRlKQ0KPiArc3RhdGljIGJvb2wgYW1kZ3B1X21uX2ludmFsaWRh dGVfaHNhKHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwNCj4gKwkJCQkgICAgIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgYW1k Z3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3QgYW1kZ3B1X21uLCBtaXJy b3IpOw0KPiAtCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSB1cGRhdGUtPnN0YXJ0Ow0KPiAtCXVuc2ln bmVkIGxvbmcgZW5kID0gdXBkYXRlLT5lbmQ7DQo+IC0JYm9vbCBibG9ja2FibGUgPSBtbXVfbm90 aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHVwZGF0ZSk7DQo+IC0Jc3RydWN0IGludGVydmFsX3RyZWVf bm9kZSAqaXQ7DQo+IC0NCj4gLQkvKiBub3RpZmljYXRpb24gaXMgZXhjbHVzaXZlLCBidXQgaW50 ZXJ2YWwgaXMgaW5jbHVzaXZlICovDQo+IC0JZW5kIC09IDE7DQo+IC0NCj4gLQkvKiBUT0RPIHdl IHNob3VsZCBiZSBhYmxlIHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kDQo+ IC0JICogYW1kZ3B1X21uX2ludmFsaWRhdGVfbm9kZQ0KPiAtCSAqLw0KPiAtCWlmIChhbWRncHVf bW5fcmVhZF9sb2NrKGFtbiwgYmxvY2thYmxlKSkNCj4gLQkJcmV0dXJuIC1FQUdBSU47DQo+IC0N Cj4gLQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmYW1uLT5vYmplY3RzLCBzdGFydCwg ZW5kKTsNCj4gLQl3aGlsZSAoaXQpIHsNCj4gLQkJc3RydWN0IGFtZGdwdV9tbl9ub2RlICpub2Rl Ow0KPiAtDQo+IC0JCWlmICghYmxvY2thYmxlKSB7DQo+IC0JCQlhbWRncHVfbW5fcmVhZF91bmxv Y2soYW1uKTsNCj4gLQkJCXJldHVybiAtRUFHQUlOOw0KPiAtCQl9DQo+ICsJc3RydWN0IGFtZGdw dV9ibyAqYm8gPSBjb250YWluZXJfb2YobXJuLCBzdHJ1Y3QgYW1kZ3B1X2JvLCBub3RpZmllcik7 DQo+ICsJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBhbWRncHVfdHRtX2FkZXYoYm8tPnRi by5iZGV2KTsNCj4gICANCj4gLQkJbm9kZSA9IGNvbnRhaW5lcl9vZihpdCwgc3RydWN0IGFtZGdw dV9tbl9ub2RlLCBpdCk7DQo+IC0JCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25leHQoaXQsIHN0 YXJ0LCBlbmQpOw0KPiArCS8qIEZJWE1FOiBJcyB0aGlzIG5lY2Vzc2FyeT8gKi8NCj4gKwlpZiAo IWFtZGdwdV90dG1fdHRfYWZmZWN0X3VzZXJwdHIoYm8tPnRiby50dG0sIHJhbmdlLT5zdGFydCwN Cj4gKwkJCQkJICByYW5nZS0+ZW5kKSkNCj4gKwkJcmV0dXJuIHRydWU7DQo+ICAgDQo+IC0JCWFt ZGdwdV9tbl9pbnZhbGlkYXRlX25vZGUobm9kZSwgc3RhcnQsIGVuZCk7DQo+IC0JfQ0KPiArCWlm ICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpDQo+ICsJCXJldHVybiBmYWxz ZTsNCj4gICANCj4gLQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4gKwltdXRleF9sb2Nr KCZhZGV2LT5ub3RpZmllcl9sb2NrKTsNCj4gKwlhbWRncHVfYW1ka2ZkX2V2aWN0X3VzZXJwdHIo Ym8tPmtmZF9ibywgYm8tPm5vdGlmaWVyLm1tKTsNCj4gKwltdXRleF91bmxvY2soJmFkZXYtPm5v dGlmaWVyX2xvY2spOw0KPiAgIA0KPiAtCXJldHVybiAwOw0KPiArCXJldHVybiB0cnVlOw0KPiAg IH0NCj4gICANCj4gLS8qKg0KPiAtICogYW1kZ3B1X21uX3N5bmNfcGFnZXRhYmxlc19oc2EgLSBj YWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlDQo+IC0gKg0KPiAtICogQG1pcnJvcjog dGhlIGhtbV9taXJyb3IgKG1tKSBpcyBhYm91dCB0byB1cGRhdGUNCj4gLSAqIEB1cGRhdGU6IHRo ZSB1cGRhdGUgc3RhcnQsIGVuZCBhZGRyZXNzDQo+IC0gKg0KPiAtICogV2UgdGVtcG9yYXJpbHkg ZXZpY3QgYWxsIEJPcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQuIFRoaXMNCj4gLSAqIG5lY2Vzc2l0 YXRlcyBldmljdGluZyBhbGwgdXNlci1tb2RlIHF1ZXVlcyBvZiB0aGUgcHJvY2Vzcy4gVGhlIEJP cw0KPiAtICogYXJlIHJlc3RvcnRlZCBpbiBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9lbmRf aHNhLg0KPiAtICovDQo+IC1zdGF0aWMgaW50DQo+IC1hbWRncHVfbW5fc3luY19wYWdldGFibGVz X2hzYShzdHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAtCQkJICAgICAgY29uc3Qgc3RydWN0 IG1tdV9ub3RpZmllcl9yYW5nZSAqdXBkYXRlKQ0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVf cmFuZ2Vfbm90aWZpZXJfb3BzIGFtZGdwdV9tbl9oc2Ffb3BzID0gew0KPiArCS5pbnZhbGlkYXRl ID0gYW1kZ3B1X21uX2ludmFsaWRhdGVfaHNhLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGludCBh bWRncHVfbW5fc3luY19wYWdldGFibGVzKHN0cnVjdCBobW1fbWlycm9yICptaXJyb3IsDQo+ICsJ CQkJICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICp1cGRhdGUpDQo+ICAgew0K PiAgIAlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3Qg YW1kZ3B1X21uLCBtaXJyb3IpOw0KPiAtCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSB1cGRhdGUtPnN0 YXJ0Ow0KPiAtCXVuc2lnbmVkIGxvbmcgZW5kID0gdXBkYXRlLT5lbmQ7DQo+IC0JYm9vbCBibG9j a2FibGUgPSBtbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHVwZGF0ZSk7DQo+IC0Jc3RydWN0 IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7DQo+ICAgDQo+IC0JLyogbm90aWZpY2F0aW9uIGlzIGV4 Y2x1c2l2ZSwgYnV0IGludGVydmFsIGlzIGluY2x1c2l2ZSAqLw0KPiAtCWVuZCAtPSAxOw0KPiAt DQo+IC0JaWYgKGFtZGdwdV9tbl9yZWFkX2xvY2soYW1uLCBibG9ja2FibGUpKQ0KPiAtCQlyZXR1 cm4gLUVBR0FJTjsNCj4gLQ0KPiAtCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZhbW4t Pm9iamVjdHMsIHN0YXJ0LCBlbmQpOw0KPiAtCXdoaWxlIChpdCkgew0KPiAtCQlzdHJ1Y3QgYW1k Z3B1X21uX25vZGUgKm5vZGU7DQo+IC0JCXN0cnVjdCBhbWRncHVfYm8gKmJvOw0KPiAtDQo+IC0J CWlmICghYmxvY2thYmxlKSB7DQo+IC0JCQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4g LQkJCXJldHVybiAtRUFHQUlOOw0KPiAtCQl9DQo+IC0NCj4gLQkJbm9kZSA9IGNvbnRhaW5lcl9v ZihpdCwgc3RydWN0IGFtZGdwdV9tbl9ub2RlLCBpdCk7DQo+IC0JCWl0ID0gaW50ZXJ2YWxfdHJl ZV9pdGVyX25leHQoaXQsIHN0YXJ0LCBlbmQpOw0KPiAtDQo+IC0JCWxpc3RfZm9yX2VhY2hfZW50 cnkoYm8sICZub2RlLT5ib3MsIG1uX2xpc3QpIHsNCj4gLQkJCXN0cnVjdCBrZ2RfbWVtICptZW0g PSBiby0+a2ZkX2JvOw0KPiAtDQo+IC0JCQlpZiAoYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0 cihiby0+dGJvLnR0bSwNCj4gLQkJCQkJCQkgc3RhcnQsIGVuZCkpDQo+IC0JCQkJYW1kZ3B1X2Ft ZGtmZF9ldmljdF91c2VycHRyKG1lbSwgYW1uLT5tbSk7DQo+IC0JCX0NCj4gLQl9DQo+IC0NCj4g LQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4gKwlpZiAoIW1tdV9ub3RpZmllcl9yYW5n ZV9ibG9ja2FibGUodXBkYXRlKSkNCj4gKwkJcmV0dXJuIGZhbHNlOw0KPiAgIA0KPiArCWRvd25f cmVhZCgmYW1uLT5sb2NrKTsNCj4gKwl1cF9yZWFkKCZhbW4tPmxvY2spOw0KPiAgIAlyZXR1cm4g MDsNCj4gICB9DQo+ICAgDQo+IEBAIC0yOTUsMTIgKzE2NCwxMCBAQCBhbWRncHVfbW5fc3luY19w YWdldGFibGVzX2hzYShzdHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAgIA0KPiAgIHN0YXRp YyBzdHJ1Y3QgaG1tX21pcnJvcl9vcHMgYW1kZ3B1X2htbV9taXJyb3Jfb3BzW10gPSB7DQo+ICAg CVtBTURHUFVfTU5fVFlQRV9HRlhdID0gew0KPiAtCQkuc3luY19jcHVfZGV2aWNlX3BhZ2V0YWJs ZXMgPSBhbWRncHVfbW5fc3luY19wYWdldGFibGVzX2dmeCwNCj4gLQkJLnJlbGVhc2UgPSBhbWRn cHVfaG1tX21pcnJvcl9yZWxlYXNlDQo+ICsJCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9 IGFtZGdwdV9tbl9zeW5jX3BhZ2V0YWJsZXMsDQo+ICAgCX0sDQo+ICAgCVtBTURHUFVfTU5fVFlQ RV9IU0FdID0gew0KPiAtCQkuc3luY19jcHVfZGV2aWNlX3BhZ2V0YWJsZXMgPSBhbWRncHVfbW5f c3luY19wYWdldGFibGVzX2hzYSwNCj4gLQkJLnJlbGVhc2UgPSBhbWRncHVfaG1tX21pcnJvcl9y ZWxlYXNlDQo+ICsJCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9IGFtZGdwdV9tbl9zeW5j X3BhZ2V0YWJsZXMsDQo+ICAgCX0sDQo+ICAgfTsNCj4gICANCj4gQEAgLTMyNyw3ICsxOTQsOCBA QCBzdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LA0KPiAgIAl9DQo+ICAgDQo+ICAgCWhhc2hfZm9yX2VhY2hfcG9zc2libGUoYWRldi0+bW5f aGFzaCwgYW1uLCBub2RlLCBrZXkpDQo+IC0JCWlmIChBTURHUFVfTU5fS0VZKGFtbi0+bW0sIGFt bi0+dHlwZSkgPT0ga2V5KQ0KPiArCQlpZiAoQU1ER1BVX01OX0tFWShhbW4tPm1pcnJvci5obW0t Pm1tdV9ub3RpZmllci5tbSwNCj4gKwkJCQkgIGFtbi0+dHlwZSkgPT0ga2V5KQ0KPiAgIAkJCWdv dG8gcmVsZWFzZV9sb2NrczsNCj4gICANCj4gICAJYW1uID0ga3phbGxvYyhzaXplb2YoKmFtbiks IEdGUF9LRVJORUwpOw0KPiBAQCAtMzM3LDEwICsyMDUsOCBAQCBzdHJ1Y3QgYW1kZ3B1X21uICph bWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgIAl9DQo+ICAgDQo+ ICAgCWFtbi0+YWRldiA9IGFkZXY7DQo+IC0JYW1uLT5tbSA9IG1tOw0KPiAgIAlpbml0X3J3c2Vt KCZhbW4tPmxvY2spOw0KPiAgIAlhbW4tPnR5cGUgPSB0eXBlOw0KPiAtCWFtbi0+b2JqZWN0cyA9 IFJCX1JPT1RfQ0FDSEVEOw0KPiAgIA0KPiAgIAlhbW4tPm1pcnJvci5vcHMgPSAmYW1kZ3B1X2ht bV9taXJyb3Jfb3BzW3R5cGVdOw0KPiAgIAlyID0gaG1tX21pcnJvcl9yZWdpc3RlcigmYW1uLT5t aXJyb3IsIG1tKTsNCj4gQEAgLTM2OSwxMDAgKzIzNSwzMyBAQCBzdHJ1Y3QgYW1kZ3B1X21uICph bWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgICAqIEBibzogYW1k Z3B1IGJ1ZmZlciBvYmplY3QNCj4gICAgKiBAYWRkcjogdXNlcnB0ciBhZGRyIHdlIHNob3VsZCBt b25pdG9yDQo+ICAgICoNCj4gLSAqIFJlZ2lzdGVycyBhbiBITU0gbWlycm9yIGZvciB0aGUgZ2l2 ZW4gQk8gYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLg0KPiArICogUmVnaXN0ZXJzIGEgbW11X25v dGlmaWVyIGZvciB0aGUgZ2l2ZW4gQk8gYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLg0KPiAgICAq IFJldHVybnMgMCBvbiBzdWNjZXNzLCAtRVJSTk8gaWYgYW55dGhpbmcgZ29lcyB3cm9uZy4NCj4g ICAgKi8NCj4gICBpbnQgYW1kZ3B1X21uX3JlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvLCB1 bnNpZ25lZCBsb25nIGFkZHIpDQo+ICAgew0KPiAtCXVuc2lnbmVkIGxvbmcgZW5kID0gYWRkciAr IGFtZGdwdV9ib19zaXplKGJvKSAtIDE7DQo+IC0Jc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSBhbWRncHVfdHRtX2FkZXYoYm8tPnRiby5iZGV2KTsNCj4gLQllbnVtIGFtZGdwdV9tbl90eXBl IHR5cGUgPQ0KPiAtCQliby0+a2ZkX2JvID8gQU1ER1BVX01OX1RZUEVfSFNBIDogQU1ER1BVX01O X1RZUEVfR0ZYOw0KPiAtCXN0cnVjdCBhbWRncHVfbW4gKmFtbjsNCj4gLQlzdHJ1Y3QgYW1kZ3B1 X21uX25vZGUgKm5vZGUgPSBOVUxMLCAqbmV3X25vZGU7DQo+IC0Jc3RydWN0IGxpc3RfaGVhZCBi b3M7DQo+IC0Jc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7DQo+IC0NCj4gLQlhbW4gPSBh bWRncHVfbW5fZ2V0KGFkZXYsIHR5cGUpOw0KPiAtCWlmIChJU19FUlIoYW1uKSkNCj4gLQkJcmV0 dXJuIFBUUl9FUlIoYW1uKTsNCj4gLQ0KPiAtCW5ld19ub2RlID0ga21hbGxvYyhzaXplb2YoKm5l d19ub2RlKSwgR0ZQX0tFUk5FTCk7DQo+IC0JaWYgKCFuZXdfbm9kZSkNCj4gLQkJcmV0dXJuIC1F Tk9NRU07DQo+IC0NCj4gLQlJTklUX0xJU1RfSEVBRCgmYm9zKTsNCj4gLQ0KPiAtCWRvd25fd3Jp dGUoJmFtbi0+bG9jayk7DQo+IC0NCj4gLQl3aGlsZSAoKGl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVy X2ZpcnN0KCZhbW4tPm9iamVjdHMsIGFkZHIsIGVuZCkpKSB7DQo+IC0JCWtmcmVlKG5vZGUpOw0K PiAtCQlub2RlID0gY29udGFpbmVyX29mKGl0LCBzdHJ1Y3QgYW1kZ3B1X21uX25vZGUsIGl0KTsN Cj4gLQkJaW50ZXJ2YWxfdHJlZV9yZW1vdmUoJm5vZGUtPml0LCAmYW1uLT5vYmplY3RzKTsNCj4g LQkJYWRkciA9IG1pbihpdC0+c3RhcnQsIGFkZHIpOw0KPiAtCQllbmQgPSBtYXgoaXQtPmxhc3Qs IGVuZCk7DQo+IC0JCWxpc3Rfc3BsaWNlKCZub2RlLT5ib3MsICZib3MpOw0KPiAtCX0NCj4gLQ0K PiAtCWlmICghbm9kZSkNCj4gLQkJbm9kZSA9IG5ld19ub2RlOw0KPiArCWlmIChiby0+a2ZkX2Jv KQ0KPiArCQliby0+bm90aWZpZXIub3BzID0gJmFtZGdwdV9tbl9oc2Ffb3BzOw0KPiAgIAllbHNl DQo+IC0JCWtmcmVlKG5ld19ub2RlKTsNCj4gLQ0KPiAtCWJvLT5tbiA9IGFtbjsNCj4gLQ0KPiAt CW5vZGUtPml0LnN0YXJ0ID0gYWRkcjsNCj4gLQlub2RlLT5pdC5sYXN0ID0gZW5kOw0KPiAtCUlO SVRfTElTVF9IRUFEKCZub2RlLT5ib3MpOw0KPiAtCWxpc3Rfc3BsaWNlKCZib3MsICZub2RlLT5i b3MpOw0KPiAtCWxpc3RfYWRkKCZiby0+bW5fbGlzdCwgJm5vZGUtPmJvcyk7DQo+ICsJCWJvLT5u b3RpZmllci5vcHMgPSAmYW1kZ3B1X21uX2dmeF9vcHM7DQo+ICAgDQo+IC0JaW50ZXJ2YWxfdHJl ZV9pbnNlcnQoJm5vZGUtPml0LCAmYW1uLT5vYmplY3RzKTsNCj4gLQ0KPiAtCXVwX3dyaXRlKCZh bW4tPmxvY2spOw0KPiAtDQo+IC0JcmV0dXJuIDA7DQo+ICsJcmV0dXJuIG1tdV9yYW5nZV9ub3Rp Zmllcl9pbnNlcnQoJmJvLT5ub3RpZmllciwgYWRkciwNCj4gKwkJCQkJIGFtZGdwdV9ib19zaXpl KGJvKSwgY3VycmVudC0+bW0pOw0KPiAgIH0NCj4gICANCj4gICAvKioNCj4gLSAqIGFtZGdwdV9t bl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBhIEJPIGZvciBITU0gbWlycm9yIHVwZGF0ZXMNCj4g KyAqIGFtZGdwdV9tbl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBhIEJPIGZvciBub3RpZmllciB1 cGRhdGVzDQo+ICAgICoNCj4gICAgKiBAYm86IGFtZGdwdSBidWZmZXIgb2JqZWN0DQo+ICAgICoN Cj4gLSAqIFJlbW92ZSBhbnkgcmVnaXN0cmF0aW9uIG9mIEhNTSBtaXJyb3IgdXBkYXRlcyBmcm9t IHRoZSBidWZmZXIgb2JqZWN0Lg0KPiArICogUmVtb3ZlIGFueSByZWdpc3RyYXRpb24gb2YgbW11 IG5vdGlmaWVyIHVwZGF0ZXMgZnJvbSB0aGUgYnVmZmVyIG9iamVjdC4NCj4gICAgKi8NCj4gICB2 b2lkIGFtZGdwdV9tbl91bnJlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvKQ0KPiAgIHsNCj4g LQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJk ZXYpOw0KPiAtCXN0cnVjdCBhbWRncHVfbW4gKmFtbjsNCj4gLQlzdHJ1Y3QgbGlzdF9oZWFkICpo ZWFkOw0KPiAtDQo+IC0JbXV0ZXhfbG9jaygmYWRldi0+bW5fbG9jayk7DQo+IC0NCj4gLQlhbW4g PSBiby0+bW47DQo+IC0JaWYgKGFtbiA9PSBOVUxMKSB7DQo+IC0JCW11dGV4X3VubG9jaygmYWRl di0+bW5fbG9jayk7DQo+ICsJaWYgKCFiby0+bm90aWZpZXIubW0pDQo+ICAgCQlyZXR1cm47DQo+ IC0JfQ0KPiAtDQo+IC0JZG93bl93cml0ZSgmYW1uLT5sb2NrKTsNCj4gLQ0KPiAtCS8qIHNhdmUg dGhlIG5leHQgbGlzdCBlbnRyeSBmb3IgbGF0ZXIgKi8NCj4gLQloZWFkID0gYm8tPm1uX2xpc3Qu bmV4dDsNCj4gLQ0KPiAtCWJvLT5tbiA9IE5VTEw7DQo+IC0JbGlzdF9kZWxfaW5pdCgmYm8tPm1u X2xpc3QpOw0KPiAtDQo+IC0JaWYgKGxpc3RfZW1wdHkoaGVhZCkpIHsNCj4gLQkJc3RydWN0IGFt ZGdwdV9tbl9ub2RlICpub2RlOw0KPiAtDQo+IC0JCW5vZGUgPSBjb250YWluZXJfb2YoaGVhZCwg c3RydWN0IGFtZGdwdV9tbl9ub2RlLCBib3MpOw0KPiAtCQlpbnRlcnZhbF90cmVlX3JlbW92ZSgm bm9kZS0+aXQsICZhbW4tPm9iamVjdHMpOw0KPiAtCQlrZnJlZShub2RlKTsNCj4gLQl9DQo+IC0N Cj4gLQl1cF93cml0ZSgmYW1uLT5sb2NrKTsNCj4gLQltdXRleF91bmxvY2soJmFkZXYtPm1uX2xv Y2spOw0KPiArCW1tdV9yYW5nZV9ub3RpZmllcl9yZW1vdmUoJmJvLT5ub3RpZmllcik7DQo+ICsJ Ym8tPm5vdGlmaWVyLm1tID0gTlVMTDsNCj4gICB9DQo+ICAgDQo+ICAgLyogZmxhZ3MgdXNlZCBi eSBITU0gaW50ZXJuYWwsIG5vdCByZWxhdGVkIHRvIENQVS9HUFUgUFRFIGZsYWdzICovDQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uaCBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oDQo+IGluZGV4IGI4ZWQ2ODk0MzYyNWMy Li5kNzNhYjI5NDdiMjJiMiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X21uLmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X21uLmgNCj4gQEAgLTM5LDEyICszOSwxMCBAQCBlbnVtIGFtZGdwdV9tbl90eXBlIHsNCj4gICAg KiBzdHJ1Y3QgYW1kZ3B1X21uDQo+ICAgICoNCj4gICAgKiBAYWRldjogYW1kZ3B1IGRldmljZSBw b2ludGVyDQo+IC0gKiBAbW06IHByb2Nlc3MgYWRkcmVzcyBzcGFjZQ0KPiAgICAqIEB0eXBlOiB0 eXBlIG9mIE1NVSBub3RpZmllcg0KPiAgICAqIEB3b3JrOiBkZXN0cnVjdGlvbiB3b3JrIGl0ZW0N Cj4gICAgKiBAbm9kZTogaGFzaCB0YWJsZSBub2RlIHRvIGZpbmQgc3RydWN0dXJlIGJ5IGFkZXYg YW5kIG1uDQo+ICAgICogQGxvY2s6IHJ3IHNlbWFwaG9yZSBwcm90ZWN0aW5nIHRoZSBub3RpZmll ciBub2Rlcw0KPiAtICogQG9iamVjdHM6IGludGVydmFsIHRyZWUgY29udGFpbmluZyBhbWRncHVf bW5fbm9kZXMNCj4gICAgKiBAbWlycm9yOiBITU0gbWlycm9yIGZ1bmN0aW9uIHN1cHBvcnQNCj4g ICAgKg0KPiAgICAqIERhdGEgZm9yIGVhY2ggYW1kZ3B1IGRldmljZSBhbmQgcHJvY2VzcyBhZGRy ZXNzIHNwYWNlLg0KPiBAQCAtNTIsNyArNTAsNiBAQCBlbnVtIGFtZGdwdV9tbl90eXBlIHsNCj4g ICBzdHJ1Y3QgYW1kZ3B1X21uIHsNCj4gICAJLyogY29uc3RhbnQgYWZ0ZXIgaW5pdGlhbGlzYXRp b24gKi8NCj4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2UJKmFkZXY7DQo+IC0Jc3RydWN0IG1tX3N0 cnVjdAkqbW07DQo+ICAgCWVudW0gYW1kZ3B1X21uX3R5cGUJdHlwZTsNCj4gICANCj4gICAJLyog b25seSB1c2VkIG9uIGRlc3RydWN0aW9uICovDQo+IEBAIC02Myw3ICs2MCw2IEBAIHN0cnVjdCBh bWRncHVfbW4gew0KPiAgIA0KPiAgIAkvKiBvYmplY3RzIHByb3RlY3RlZCBieSBsb2NrICovDQo+ ICAgCXN0cnVjdCByd19zZW1hcGhvcmUJbG9jazsNCj4gLQlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQJ b2JqZWN0czsNCj4gICANCj4gICAjaWZkZWYgQ09ORklHX0hNTV9NSVJST1INCj4gICAJLyogSE1N IG1pcnJvciAqLw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5o DQo+IGluZGV4IDY1OGY0Yzk3NzliNzA0Li40YjQ0YWI4NTBmOTRjMiAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oDQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaA0KPiBAQCAtMzAsNiArMzAsOSBA QA0KPiAgIA0KPiAgICNpbmNsdWRlIDxkcm0vYW1kZ3B1X2RybS5oPg0KPiAgICNpbmNsdWRlICJh bWRncHUuaCINCj4gKyNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSDQo+ICsjaW5jbHVkZSA8bGlu dXgvbW11X25vdGlmaWVyLmg+DQo+ICsjZW5kaWYNCj4gICANCj4gICAjZGVmaW5lIEFNREdQVV9C T19JTlZBTElEX09GRlNFVAlMT05HX01BWA0KPiAgICNkZWZpbmUgQU1ER1BVX0JPX01BWF9QTEFD RU1FTlRTCTMNCj4gQEAgLTEwMCwxMCArMTAzLDEyIEBAIHN0cnVjdCBhbWRncHVfYm8gew0KPiAg IAlzdHJ1Y3QgdHRtX2JvX2ttYXBfb2JqCQlkbWFfYnVmX3ZtYXA7DQo+ICAgCXN0cnVjdCBhbWRn cHVfbW4JCSptbjsNCj4gICANCj4gLQl1bmlvbiB7DQo+IC0JCXN0cnVjdCBsaXN0X2hlYWQJbW5f bGlzdDsNCj4gLQkJc3RydWN0IGxpc3RfaGVhZAlzaGFkb3dfbGlzdDsNCj4gLQl9Ow0KPiArDQo+ ICsjaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUg0KPiArCXN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZp ZXIJbm90aWZpZXI7DQo+ICsjZW5kaWYNCj4gKw0KPiArCXN0cnVjdCBsaXN0X2hlYWQJCXNoYWRv d19saXN0Ow0KPiAgIA0KPiAgIAlzdHJ1Y3Qga2dkX21lbSAgICAgICAgICAgICAgICAgICprZmRf Ym87DQo+ICAgfTsNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVs 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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DB527CA9EC2 for ; Tue, 29 Oct 2019 07:51:34 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B7A6020862 for ; Tue, 29 Oct 2019 07:51:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B7A6020862 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 336E16E103; Tue, 29 Oct 2019 07:51:34 +0000 (UTC) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-eopbgr800045.outbound.protection.outlook.com [40.107.80.45]) by gabe.freedesktop.org (Postfix) with ESMTPS id CE1C46E103; Tue, 29 Oct 2019 07:51:32 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LpHD8kXDawLzYYlbtNIGYrb3STBcIGjvG9LWQfBvX+iudi3VZBE4kJxU8b5tbgqdqG2rTjqo39WBvGpB/KG6FaVOyk10VtIGyfsmw4TWad2Xq8Uizo/UtiyrVG9ydb7tuTzZcqSLonIx6+j8Z5b4yG4M48zd8pP2MBZmToxLXSHs8RlNK1ov0G7fWEjqj8m9En69dAXY3bH4Qpts0eM+lLZGb0uyb8GpGUpZdRcNybP0MLllxKEU9AKep+HLHJuVh5rkEoAGx7MhpkZOUwWp1xHSQVJh9YeRLPSQSV8qpRfp9/3RfU8RzhJDOZA/jtSZDYZsEnPAlwZAnjLJ+CbrMg== 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=6ysSG8t97ZyDK9Ea8UVc2JBJ/dZ1dmCFNOEvFizqCic=; b=Bk1pqF1001iUl/CtDvY0LV56bI8VbewwIG/b6kL66bkRSz+k9nVNais4XkDxaIT7d2BrmgrmTUMZkaPwhRFUogEWXs/BQC3V+2LeGEctFGOxxGhYkJjNMUsjRP0ne/b6+ecX8UiYVxe0wkWiwM3XrFNKwgpygVcx9crOZX2hkg2EHNPsdzgMom3fOdDHIhGp+Y6VjwJfkZh1W8MKVNHt878i3GAUrauq4O4i8Rb6GvJbzcE/uUqKN3xLDi5qxD6OkeONk3AO489NvVTdT/evKFwzPdbI6uiWBCUeuZbYr+vF8xWr1zdYB4/6hJWgbSFwmaNd9L9ADhqHj9AG7SkkdA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none Received: from BN6PR12MB1699.namprd12.prod.outlook.com (10.175.97.148) by BN6PR12MB1281.namprd12.prod.outlook.com (10.168.226.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.25; Tue, 29 Oct 2019 07:51:30 +0000 Received: from BN6PR12MB1699.namprd12.prod.outlook.com ([fe80::68e1:ddf5:df4c:b554]) by BN6PR12MB1699.namprd12.prod.outlook.com ([fe80::68e1:ddf5:df4c:b554%9]) with mapi id 15.20.2387.025; Tue, 29 Oct 2019 07:51:30 +0000 From: "Koenig, Christian" To: Jason Gunthorpe , "linux-mm@kvack.org" , Jerome Glisse , Ralph Campbell , John Hubbard , "Kuehling, Felix" Subject: Re: [PATCH v2 13/15] drm/amdgpu: Use mmu_range_insert instead of hmm_mirror Thread-Topic: [PATCH v2 13/15] drm/amdgpu: Use mmu_range_insert instead of hmm_mirror Thread-Index: AQHVjc1AranX4zytZkWJZeF308H7IKdxP7aA Date: Tue, 29 Oct 2019 07:51:30 +0000 Message-ID: References: <20191028201032.6352-1-jgg@ziepe.ca> <20191028201032.6352-14-jgg@ziepe.ca> In-Reply-To: <20191028201032.6352-14-jgg@ziepe.ca> Accept-Language: de-DE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 x-originating-ip: [2a02:908:1252:fb60:be8a:bd56:1f94:86e7] x-clientproxiedby: AM0PR10CA0036.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:150::16) To BN6PR12MB1699.namprd12.prod.outlook.com (2603:10b6:404:ff::20) x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 86ac308d-4333-41a0-06d5-08d75c44cf72 x-ms-traffictypediagnostic: BN6PR12MB1281: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4941; x-forefront-prvs: 0205EDCD76 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(136003)(366004)(376002)(346002)(396003)(199004)(189003)(186003)(2501003)(305945005)(66556008)(66446008)(316002)(64756008)(14444005)(66476007)(5024004)(6436002)(66946007)(110136005)(8936002)(256004)(4326008)(478600001)(6246003)(65956001)(31696002)(65806001)(14454004)(71200400001)(54906003)(58126008)(71190400001)(2906002)(486006)(476003)(31686004)(6512007)(36756003)(81166006)(6116002)(66574012)(11346002)(8676002)(7416002)(46003)(86362001)(7736002)(76176011)(386003)(52116002)(102836004)(229853002)(446003)(99286004)(6486002)(5660300002)(2616005)(30864003)(6636002)(81156014)(25786009)(6506007); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR12MB1281; H:BN6PR12MB1699.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DaQCjlvFxN7F5UH5XfeWiXpPvUImLcW0Sm71ujV/9hgKP3VFXWXAKS8FyZ3VIRCfRy7kOHP1wfBIElx1iqIYntZrRQdhETcO+wGBjaZR66bXkoOW6pshtaMMv8qW7KRsfvKbWdhGyNLDdvYSD52MzR/y0BGTotBn2u/CNtxIPZPL3FCLPbxtGra6rj9GLN/huFcx1aF0m5kzwJmfB9PqFjN6TdOPt+6cDXrWFjlGCX/TwiMNUZr3XELkdqlsrs0KqFBuMMXpYW7QJsqWDDJUdmwtR7NZbT2UlWvbhFEjcJQmhSQSdO5gZvGlKf158OJYLdAn7NZsSbq/CcqOzGBlvV6LAuHkqz9hoAY4QMrooj1gcQZfwcEr40olPZ4GzneV2MgiTT0uKwahJuYXJ/K/3nMOP62c2r3S3UnhPMrwSSCCjA05CYtD3AJ33DymV7iV Content-ID: MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86ac308d-4333-41a0-06d5-08d75c44cf72 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2019 07:51:30.6921 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ai4m8Ncn3A4KFW1TwGTokn2nYSqsLCz2G2whEg6R4IGlO4nBoOBagkn4wUe7U2kq X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1281 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6ysSG8t97ZyDK9Ea8UVc2JBJ/dZ1dmCFNOEvFizqCic=; b=yhjUgk+9eg492W1asLz0pO/QJUTNRo4+gtdZmfPANSG56ir17tjElpbV9AuPCrxu9QleGUQew75h9HWVwY0qZbz6Sea0+u9Gdu10S2eoRrgxClyHjortSCJHMch6pJDbRQKFOAKuwVFi5VxUZAlfzG1b6/QYDXRhwTer5gOjuPo= X-Mailman-Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Christian.Koenig@amd.com; X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , Mike Marciniszyn , Stefano Stabellini , Oleksandr Andrushchenko , "linux-rdma@vger.kernel.org" , "nouveau@lists.freedesktop.org" , Dennis Dalessandro , "amd-gfx@lists.freedesktop.org" , Christoph Hellwig , Jason Gunthorpe , "dri-devel@lists.freedesktop.org" , "Deucher, Alexander" , "xen-devel@lists.xenproject.org" , Boris Ostrovsky , Petr Cvek , Ben Skeggs Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191029075130.Oh6sCjO74j6GN9kOqL80mW1Pq-tkbOhZ7pnic9v-FyE@z> QW0gMjguMTAuMTkgdW0gMjE6MTAgc2NocmllYiBKYXNvbiBHdW50aG9ycGU6DQo+IEZyb206IEph c29uIEd1bnRob3JwZSA8amdnQG1lbGxhbm94LmNvbT4NCj4NCj4gUmVtb3ZlIHRoZSBpbnRlcnZh bCB0cmVlIGluIHRoZSBkcml2ZXIgYW5kIHJlbHkgb24gdGhlIHRyZWUgbWFpbnRhaW5lZCBieQ0K PiB0aGUgbW11X25vdGlmaWVyIGZvciBkZWxpdmVyaW5nIG1tdV9ub3RpZmllciBpbnZhbGlkYXRp b24gY2FsbGJhY2tzLg0KPg0KPiBGb3Igc29tZSByZWFzb24gYW1kZ3B1IGhhcyBhIHZlcnkgY29t cGxpY2F0ZWQgYXJyYW5nZW1lbnQgd2hlcmUgaXQgdHJpZXMNCj4gdG8gcHJldmVudCBkdXBsaWNh dGUgZW50cmllcyBpbiB0aGUgaW50ZXJ2YWxfdHJlZSwgdGhpcyBpcyBub3QgbmVjZXNzYXJ5LA0K PiBlYWNoIGFtZGdwdV9ibyBjYW4gYmUgaXRzIG93biBzdGFuZCBhbG9uZSBlbnRyeS4gaW50ZXJ2 YWxfdHJlZSBhbHJlYWR5DQo+IGFsbG93cyBkdXBsaWNhdGVzIGFuZCBvdmVybGFwcyBpbiB0aGUg dHJlZS4NCj4NCj4gQWxzbywgdGhlcmUgaXMgbm8gbmVlZCB0byByZW1vdmUgZW50cmllcyB1cG9u IGEgcmVsZWFzZSBjYWxsYmFjaywgdGhlDQo+IG1tdV9yYW5nZSBBUEkgc2FmZWx5IGFsbG93cyBv YmplY3RzIHRvIHJlbWFpbiByZWdpc3RlcmVkIGJleW9uZCB0aGUNCj4gbGlmZXRpbWUgb2YgdGhl IG1tLiBUaGUgZHJpdmVyIG9ubHkgaGFzIHRvIHN0b3AgdG91Y2hpbmcgdGhlIHBhZ2VzIGR1cmlu Zw0KPiByZWxlYXNlLg0KPg0KPiBDYzogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBh bWQuY29tPg0KPiBDYzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t Pg0KPiBDYzogRGF2aWQgKENodW5NaW5nKSBaaG91IDxEYXZpZDEuWmhvdUBhbWQuY29tPg0KPiBD YzogYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gU2lnbmVkLW9mZi1ieTogSmFzb24g R3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPg0KPiAtLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHUuaCAgICAgICAgICAgfCAgIDIgKw0KPiAgIC4uLi9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jICB8ICAgNSArLQ0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyAgICB8ICAgMSArDQo+ICAgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgICAgICAgIHwgMzQxICsrKystLS0tLS0tLS0t LS0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oICAgICAgICB8 ICAgNCAtDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oICAg IHwgIDEzICstDQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAyODIgZGVs ZXRpb25zKC0pDQo+DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oDQo+IGluZGV4IGJk MzdkZjVkZDZkMDQ4Li42MDU5MWE1ZDQyMDAyMSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1LmgNCj4gQEAgLTEwMDYsNiArMTAwNiw4IEBAIHN0cnVjdCBhbWRncHVfZGV2aWNl IHsNCj4gICAJc3RydWN0IG11dGV4ICBsb2NrX3Jlc2V0Ow0KPiAgIAlzdHJ1Y3QgYW1kZ3B1X2Rv b3JiZWxsX2luZGV4IGRvb3JiZWxsX2luZGV4Ow0KPiAgIA0KPiArCXN0cnVjdCBtdXRleAkJCW5v dGlmaWVyX2xvY2s7DQo+ICsNCj4gICAJaW50IGFzaWNfcmVzZXRfcmVzOw0KPiAgIAlzdHJ1Y3Qg d29ya19zdHJ1Y3QJCXhnbWlfcmVzZXRfd29yazsNCj4gICANCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYw0KPiBpbmRleCA2ZDAyMWVjYzhk NTk4Zi4uNDc3MDAzMDJhMDhiN2YgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMNCj4gQEAgLTQ4MSw4ICs0ODEsNyBAQCBzdGF0 aWMgdm9pZCByZW1vdmVfa2dkX21lbV9mcm9tX2tmZF9ib19saXN0KHN0cnVjdCBrZ2RfbWVtICpt ZW0sDQo+ICAgICoNCj4gICAgKiBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5v IGZvciBlcnJvcnMuDQo+ICAgICovDQo+IC1zdGF0aWMgaW50IGluaXRfdXNlcl9wYWdlcyhzdHJ1 Y3Qga2dkX21lbSAqbWVtLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwNCj4gLQkJCSAgIHVpbnQ2NF90 IHVzZXJfYWRkcikNCj4gK3N0YXRpYyBpbnQgaW5pdF91c2VyX3BhZ2VzKHN0cnVjdCBrZ2RfbWVt ICptZW0sIHVpbnQ2NF90IHVzZXJfYWRkcikNCj4gICB7DQo+ICAgCXN0cnVjdCBhbWRrZmRfcHJv Y2Vzc19pbmZvICpwcm9jZXNzX2luZm8gPSBtZW0tPnByb2Nlc3NfaW5mbzsNCj4gICAJc3RydWN0 IGFtZGdwdV9ibyAqYm8gPSBtZW0tPmJvOw0KPiBAQCAtMTE5NSw3ICsxMTk0LDcgQEAgaW50IGFt ZGdwdV9hbWRrZmRfZ3B1dm1fYWxsb2NfbWVtb3J5X29mX2dwdSgNCj4gICAJYWRkX2tnZF9tZW1f dG9fa2ZkX2JvX2xpc3QoKm1lbSwgYXZtLT5wcm9jZXNzX2luZm8sIHVzZXJfYWRkcik7DQo+ICAg DQo+ICAgCWlmICh1c2VyX2FkZHIpIHsNCj4gLQkJcmV0ID0gaW5pdF91c2VyX3BhZ2VzKCptZW0s IGN1cnJlbnQtPm1tLCB1c2VyX2FkZHIpOw0KPiArCQlyZXQgPSBpbml0X3VzZXJfcGFnZXMoKm1l bSwgdXNlcl9hZGRyKTsNCj4gICAJCWlmIChyZXQpDQo+ICAgCQkJZ290byBhbGxvY2F0ZV9pbml0 X3VzZXJfcGFnZXNfZmFpbGVkOw0KPiAgIAl9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZGV2aWNlLmMNCj4gaW5kZXggNWExOTM5ZGJkNGUzZTYuLjM4Zjk3OTk4YWFkZGIy IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNl LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jDQo+ IEBAIC0yNjMzLDYgKzI2MzMsNyBAQCBpbnQgYW1kZ3B1X2RldmljZV9pbml0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LA0KPiAgIAltdXRleF9pbml0KCZhZGV2LT52aXJ0LnZmX2Vycm9ycy5s b2NrKTsNCj4gICAJaGFzaF9pbml0KGFkZXYtPm1uX2hhc2gpOw0KPiAgIAltdXRleF9pbml0KCZh ZGV2LT5sb2NrX3Jlc2V0KTsNCj4gKwltdXRleF9pbml0KCZhZGV2LT5ub3RpZmllcl9sb2NrKTsN Cj4gICAJbXV0ZXhfaW5pdCgmYWRldi0+dmlydC5kcG1fbXV0ZXgpOw0KPiAgIAltdXRleF9pbml0 KCZhZGV2LT5wc3AubXV0ZXgpOw0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfbW4uYw0KPiBpbmRleCAzMWQ0ZGViNWQyOTQ4NC4uNGZmZDdiOTBmNGQ5MDcgMTAwNjQ0DQo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQo+IEBAIC01MCw2NiArNTAsNiBA QA0KPiAgICNpbmNsdWRlICJhbWRncHUuaCINCj4gICAjaW5jbHVkZSAiYW1kZ3B1X2FtZGtmZC5o Ig0KPiAgIA0KPiAtLyoqDQo+IC0gKiBzdHJ1Y3QgYW1kZ3B1X21uX25vZGUNCj4gLSAqDQo+IC0g KiBAaXQ6IGludGVydmFsIG5vZGUgZGVmaW5pbmcgc3RhcnQtbGFzdCBvZiB0aGUgYWZmZWN0ZWQg YWRkcmVzcyByYW5nZQ0KPiAtICogQGJvczogbGlzdCBvZiBhbGwgQk9zIGluIHRoZSBhZmZlY3Rl ZCBhZGRyZXNzIHJhbmdlDQo+IC0gKg0KPiAtICogTWFuYWdlcyBhbGwgQk9zIHdoaWNoIGFyZSBh ZmZlY3RlZCBvZiBhIGNlcnRhaW4gcmFuZ2Ugb2YgYWRkcmVzcyBzcGFjZS4NCj4gLSAqLw0KPiAt c3RydWN0IGFtZGdwdV9tbl9ub2RlIHsNCj4gLQlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlCWl0 Ow0KPiAtCXN0cnVjdCBsaXN0X2hlYWQJCWJvczsNCj4gLX07DQo+IC0NCj4gLS8qKg0KPiAtICog YW1kZ3B1X21uX2Rlc3Ryb3kgLSBkZXN0cm95IHRoZSBITU0gbWlycm9yDQo+IC0gKg0KPiAtICog QHdvcms6IHByZXZpb3VzbHkgc2hlZHVsZWQgd29yayBpdGVtDQo+IC0gKg0KPiAtICogTGF6eSBk ZXN0cm95cyB0aGUgbm90aWZpZXIgZnJvbSBhIHdvcmsgaXRlbQ0KPiAtICovDQo+IC1zdGF0aWMg dm9pZCBhbWRncHVfbW5fZGVzdHJveShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+IC17DQo+ IC0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhbWRn cHVfbW4sIHdvcmspOw0KPiAtCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gYW1uLT5hZGV2 Ow0KPiAtCXN0cnVjdCBhbWRncHVfbW5fbm9kZSAqbm9kZSwgKm5leHRfbm9kZTsNCj4gLQlzdHJ1 Y3QgYW1kZ3B1X2JvICpibywgKm5leHRfYm87DQo+IC0NCj4gLQltdXRleF9sb2NrKCZhZGV2LT5t bl9sb2NrKTsNCj4gLQlkb3duX3dyaXRlKCZhbW4tPmxvY2spOw0KPiAtCWhhc2hfZGVsKCZhbW4t Pm5vZGUpOw0KPiAtCXJidHJlZV9wb3N0b3JkZXJfZm9yX2VhY2hfZW50cnlfc2FmZShub2RlLCBu ZXh0X25vZGUsDQo+IC0JCQkJCSAgICAgJmFtbi0+b2JqZWN0cy5yYl9yb290LCBpdC5yYikgew0K PiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYm8sIG5leHRfYm8sICZub2RlLT5ib3MsIG1u X2xpc3QpIHsNCj4gLQkJCWJvLT5tbiA9IE5VTEw7DQo+IC0JCQlsaXN0X2RlbF9pbml0KCZiby0+ bW5fbGlzdCk7DQo+IC0JCX0NCj4gLQkJa2ZyZWUobm9kZSk7DQo+IC0JfQ0KPiAtCXVwX3dyaXRl KCZhbW4tPmxvY2spOw0KPiAtCW11dGV4X3VubG9jaygmYWRldi0+bW5fbG9jayk7DQo+IC0NCj4g LQlobW1fbWlycm9yX3VucmVnaXN0ZXIoJmFtbi0+bWlycm9yKTsNCj4gLQlrZnJlZShhbW4pOw0K PiAtfQ0KPiAtDQo+IC0vKioNCj4gLSAqIGFtZGdwdV9obW1fbWlycm9yX3JlbGVhc2UgLSBjYWxs YmFjayB0byBub3RpZnkgYWJvdXQgbW0gZGVzdHJ1Y3Rpb24NCj4gLSAqDQo+IC0gKiBAbWlycm9y OiB0aGUgSE1NIG1pcnJvciAobW0pIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQNCj4gLSAqDQo+IC0g KiBTaGVkdWxlIGEgd29yayBpdGVtIHRvIGxhenkgZGVzdHJveSBITU0gbWlycm9yLg0KPiAtICov DQo+IC1zdGF0aWMgdm9pZCBhbWRncHVfaG1tX21pcnJvcl9yZWxlYXNlKHN0cnVjdCBobW1fbWly cm9yICptaXJyb3IpDQo+IC17DQo+IC0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVy X29mKG1pcnJvciwgc3RydWN0IGFtZGdwdV9tbiwgbWlycm9yKTsNCj4gLQ0KPiAtCUlOSVRfV09S SygmYW1uLT53b3JrLCBhbWRncHVfbW5fZGVzdHJveSk7DQo+IC0Jc2NoZWR1bGVfd29yaygmYW1u LT53b3JrKTsNCj4gLX0NCj4gLQ0KPiAgIC8qKg0KPiAgICAqIGFtZGdwdV9tbl9sb2NrIC0gdGFr ZSB0aGUgd3JpdGUgc2lkZSBsb2NrIGZvciB0aGlzIG5vdGlmaWVyDQo+ICAgICoNCj4gQEAgLTEz MywxNTcgKzczLDg2IEBAIHZvaWQgYW1kZ3B1X21uX3VubG9jayhzdHJ1Y3QgYW1kZ3B1X21uICpt bikNCj4gICB9DQo+ICAgDQo+ICAgLyoqDQo+IC0gKiBhbWRncHVfbW5fcmVhZF9sb2NrIC0gdGFr ZSB0aGUgcmVhZCBzaWRlIGxvY2sgZm9yIHRoaXMgbm90aWZpZXINCj4gLSAqDQo+IC0gKiBAYW1u OiBvdXIgbm90aWZpZXINCj4gLSAqLw0KPiAtc3RhdGljIGludCBhbWRncHVfbW5fcmVhZF9sb2Nr KHN0cnVjdCBhbWRncHVfbW4gKmFtbiwgYm9vbCBibG9ja2FibGUpDQo+IC17DQo+IC0JaWYgKGJs b2NrYWJsZSkNCj4gLQkJZG93bl9yZWFkKCZhbW4tPmxvY2spOw0KPiAtCWVsc2UgaWYgKCFkb3du X3JlYWRfdHJ5bG9jaygmYW1uLT5sb2NrKSkNCj4gLQkJcmV0dXJuIC1FQUdBSU47DQo+IC0NCj4g LQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtLyoqDQo+IC0gKiBhbWRncHVfbW5fcmVhZF91bmxv Y2sgLSBkcm9wIHRoZSByZWFkIHNpZGUgbG9jayBmb3IgdGhpcyBub3RpZmllcg0KPiAtICoNCj4g LSAqIEBhbW46IG91ciBub3RpZmllcg0KPiAtICovDQo+IC1zdGF0aWMgdm9pZCBhbWRncHVfbW5f cmVhZF91bmxvY2soc3RydWN0IGFtZGdwdV9tbiAqYW1uKQ0KPiAtew0KPiAtCXVwX3JlYWQoJmFt bi0+bG9jayk7DQo+IC19DQo+IC0NCj4gLS8qKg0KPiAtICogYW1kZ3B1X21uX2ludmFsaWRhdGVf bm9kZSAtIHVubWFwIGFsbCBCT3Mgb2YgYSBub2RlDQo+ICsgKiBhbWRncHVfbW5faW52YWxpZGF0 ZV9nZnggLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlDQo+ICAgICoNCj4gLSAq IEBub2RlOiB0aGUgbm9kZSB3aXRoIHRoZSBCT3MgdG8gdW5tYXANCj4gLSAqIEBzdGFydDogc3Rh cnQgb2YgYWRkcmVzcyByYW5nZSBhZmZlY3RlZA0KPiAtICogQGVuZDogZW5kIG9mIGFkZHJlc3Mg cmFuZ2UgYWZmZWN0ZWQNCj4gKyAqIEBtcm46IHRoZSByYW5nZSAobW0pIGlzIGFib3V0IHRvIHVw ZGF0ZQ0KPiArICogQHJhbmdlOiBkZXRhaWxzIG9uIHRoZSBpbnZhbGlkYXRpb24NCj4gICAgKg0K PiAgICAqIEJsb2NrIGZvciBvcGVyYXRpb25zIG9uIEJPcyB0byBmaW5pc2ggYW5kIG1hcmsgcGFn ZXMgYXMgYWNjZXNzZWQgYW5kDQo+ICAgICogcG90ZW50aWFsbHkgZGlydHkuDQo+ICAgICovDQo+ IC1zdGF0aWMgdm9pZCBhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlKHN0cnVjdCBhbWRncHVfbW5f bm9kZSAqbm9kZSwNCj4gLQkJCQkgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LA0KPiAtCQkJCSAg ICAgIHVuc2lnbmVkIGxvbmcgZW5kKQ0KPiArc3RhdGljIGJvb2wgYW1kZ3B1X21uX2ludmFsaWRh dGVfZ2Z4KHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwNCj4gKwkJCQkgICAgIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgYW1k Z3B1X2JvICpibzsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2JvICpibyA9IGNvbnRhaW5lcl9vZihtcm4s IHN0cnVjdCBhbWRncHVfYm8sIG5vdGlmaWVyKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJkZXYpOw0KPiAgIAlsb25nIHI7DQo+ICAg DQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShibywgJm5vZGUtPmJvcywgbW5fbGlzdCkgew0KPiAt DQo+IC0JCWlmICghYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwgc3Rh cnQsIGVuZCkpDQo+IC0JCQljb250aW51ZTsNCj4gLQ0KPiAtCQlyID0gZG1hX3Jlc3Zfd2FpdF90 aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwNCj4gLQkJCXRydWUsIGZhbHNlLCBNQVhfU0NI RURVTEVfVElNRU9VVCk7DQo+IC0JCWlmIChyIDw9IDApDQo+IC0JCQlEUk1fRVJST1IoIiglbGQp IGZhaWxlZCB0byB3YWl0IGZvciB1c2VyIGJvXG4iLCByKTsNCj4gLQl9DQo+ICsJLyogRklYTUU6 IElzIHRoaXMgbmVjZXNzYXJ5PyAqLw0KDQpNb3N0IGxpa2VseSBub3QuDQoNCkNocmlzdGlhbi4N Cg0KPiArCWlmICghYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwgcmFu Z2UtPnN0YXJ0LA0KPiArCQkJCQkgIHJhbmdlLT5lbmQpKQ0KPiArCQlyZXR1cm4gdHJ1ZTsNCj4g Kw0KPiArCWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpDQo+ICsJCXJl dHVybiBmYWxzZTsNCj4gKw0KPiArCW11dGV4X2xvY2soJmFkZXYtPm5vdGlmaWVyX2xvY2spOw0K PiArCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KGJvLT50Ym8uYmFzZS5yZXN2LCB0cnVl LCBmYWxzZSwNCj4gKwkJCQkgICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7DQo+ICsJbXV0ZXhf dW5sb2NrKCZhZGV2LT5ub3RpZmllcl9sb2NrKTsNCj4gKwlpZiAociA8PSAwKQ0KPiArCQlEUk1f RVJST1IoIiglbGQpIGZhaWxlZCB0byB3YWl0IGZvciB1c2VyIGJvXG4iLCByKTsNCj4gKwlyZXR1 cm4gdHJ1ZTsNCj4gICB9DQo+ICAgDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9yYW5nZV9u b3RpZmllcl9vcHMgYW1kZ3B1X21uX2dmeF9vcHMgPSB7DQo+ICsJLmludmFsaWRhdGUgPSBhbWRn cHVfbW5faW52YWxpZGF0ZV9nZngsDQo+ICt9Ow0KPiArDQo+ICAgLyoqDQo+IC0gKiBhbWRncHVf bW5fc3luY19wYWdldGFibGVzX2dmeCAtIGNhbGxiYWNrIHRvIG5vdGlmeSBhYm91dCBtbSBjaGFu Z2UNCj4gKyAqIGFtZGdwdV9tbl9pbnZhbGlkYXRlX2hzYSAtIGNhbGxiYWNrIHRvIG5vdGlmeSBh Ym91dCBtbSBjaGFuZ2UNCj4gICAgKg0KPiAtICogQG1pcnJvcjogdGhlIGhtbV9taXJyb3IgKG1t KSBpcyBhYm91dCB0byB1cGRhdGUNCj4gLSAqIEB1cGRhdGU6IHRoZSB1cGRhdGUgc3RhcnQsIGVu ZCBhZGRyZXNzDQo+ICsgKiBAbXJuOiB0aGUgcmFuZ2UgKG1tKSBpcyBhYm91dCB0byB1cGRhdGUN Cj4gKyAqIEByYW5nZTogZGV0YWlscyBvbiB0aGUgaW52YWxpZGF0aW9uDQo+ICAgICoNCj4gLSAq IEJsb2NrIGZvciBvcGVyYXRpb25zIG9uIEJPcyB0byBmaW5pc2ggYW5kIG1hcmsgcGFnZXMgYXMg YWNjZXNzZWQgYW5kDQo+IC0gKiBwb3RlbnRpYWxseSBkaXJ0eS4NCj4gKyAqIFdlIHRlbXBvcmFy aWx5IGV2aWN0IHRoZSBCTyBhdHRhY2hlZCB0byB0aGlzIHJhbmdlLiBUaGlzIG5lY2Vzc2l0YXRl cw0KPiArICogZXZpY3RpbmcgYWxsIHVzZXItbW9kZSBxdWV1ZXMgb2YgdGhlIHByb2Nlc3MuDQo+ ICAgICovDQo+IC1zdGF0aWMgaW50DQo+IC1hbWRncHVfbW5fc3luY19wYWdldGFibGVzX2dmeChz dHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAtCQkJICAgICAgY29uc3Qgc3RydWN0IG1tdV9u b3RpZmllcl9yYW5nZSAqdXBkYXRlKQ0KPiArc3RhdGljIGJvb2wgYW1kZ3B1X21uX2ludmFsaWRh dGVfaHNhKHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwNCj4gKwkJCQkgICAgIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgYW1k Z3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3QgYW1kZ3B1X21uLCBtaXJy b3IpOw0KPiAtCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSB1cGRhdGUtPnN0YXJ0Ow0KPiAtCXVuc2ln bmVkIGxvbmcgZW5kID0gdXBkYXRlLT5lbmQ7DQo+IC0JYm9vbCBibG9ja2FibGUgPSBtbXVfbm90 aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHVwZGF0ZSk7DQo+IC0Jc3RydWN0IGludGVydmFsX3RyZWVf bm9kZSAqaXQ7DQo+IC0NCj4gLQkvKiBub3RpZmljYXRpb24gaXMgZXhjbHVzaXZlLCBidXQgaW50 ZXJ2YWwgaXMgaW5jbHVzaXZlICovDQo+IC0JZW5kIC09IDE7DQo+IC0NCj4gLQkvKiBUT0RPIHdl IHNob3VsZCBiZSBhYmxlIHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kDQo+ IC0JICogYW1kZ3B1X21uX2ludmFsaWRhdGVfbm9kZQ0KPiAtCSAqLw0KPiAtCWlmIChhbWRncHVf bW5fcmVhZF9sb2NrKGFtbiwgYmxvY2thYmxlKSkNCj4gLQkJcmV0dXJuIC1FQUdBSU47DQo+IC0N Cj4gLQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmYW1uLT5vYmplY3RzLCBzdGFydCwg ZW5kKTsNCj4gLQl3aGlsZSAoaXQpIHsNCj4gLQkJc3RydWN0IGFtZGdwdV9tbl9ub2RlICpub2Rl Ow0KPiAtDQo+IC0JCWlmICghYmxvY2thYmxlKSB7DQo+IC0JCQlhbWRncHVfbW5fcmVhZF91bmxv Y2soYW1uKTsNCj4gLQkJCXJldHVybiAtRUFHQUlOOw0KPiAtCQl9DQo+ICsJc3RydWN0IGFtZGdw dV9ibyAqYm8gPSBjb250YWluZXJfb2YobXJuLCBzdHJ1Y3QgYW1kZ3B1X2JvLCBub3RpZmllcik7 DQo+ICsJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBhbWRncHVfdHRtX2FkZXYoYm8tPnRi by5iZGV2KTsNCj4gICANCj4gLQkJbm9kZSA9IGNvbnRhaW5lcl9vZihpdCwgc3RydWN0IGFtZGdw dV9tbl9ub2RlLCBpdCk7DQo+IC0JCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25leHQoaXQsIHN0 YXJ0LCBlbmQpOw0KPiArCS8qIEZJWE1FOiBJcyB0aGlzIG5lY2Vzc2FyeT8gKi8NCj4gKwlpZiAo IWFtZGdwdV90dG1fdHRfYWZmZWN0X3VzZXJwdHIoYm8tPnRiby50dG0sIHJhbmdlLT5zdGFydCwN Cj4gKwkJCQkJICByYW5nZS0+ZW5kKSkNCj4gKwkJcmV0dXJuIHRydWU7DQo+ICAgDQo+IC0JCWFt ZGdwdV9tbl9pbnZhbGlkYXRlX25vZGUobm9kZSwgc3RhcnQsIGVuZCk7DQo+IC0JfQ0KPiArCWlm ICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpDQo+ICsJCXJldHVybiBmYWxz ZTsNCj4gICANCj4gLQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4gKwltdXRleF9sb2Nr KCZhZGV2LT5ub3RpZmllcl9sb2NrKTsNCj4gKwlhbWRncHVfYW1ka2ZkX2V2aWN0X3VzZXJwdHIo Ym8tPmtmZF9ibywgYm8tPm5vdGlmaWVyLm1tKTsNCj4gKwltdXRleF91bmxvY2soJmFkZXYtPm5v dGlmaWVyX2xvY2spOw0KPiAgIA0KPiAtCXJldHVybiAwOw0KPiArCXJldHVybiB0cnVlOw0KPiAg IH0NCj4gICANCj4gLS8qKg0KPiAtICogYW1kZ3B1X21uX3N5bmNfcGFnZXRhYmxlc19oc2EgLSBj YWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlDQo+IC0gKg0KPiAtICogQG1pcnJvcjog dGhlIGhtbV9taXJyb3IgKG1tKSBpcyBhYm91dCB0byB1cGRhdGUNCj4gLSAqIEB1cGRhdGU6IHRo ZSB1cGRhdGUgc3RhcnQsIGVuZCBhZGRyZXNzDQo+IC0gKg0KPiAtICogV2UgdGVtcG9yYXJpbHkg ZXZpY3QgYWxsIEJPcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQuIFRoaXMNCj4gLSAqIG5lY2Vzc2l0 YXRlcyBldmljdGluZyBhbGwgdXNlci1tb2RlIHF1ZXVlcyBvZiB0aGUgcHJvY2Vzcy4gVGhlIEJP cw0KPiAtICogYXJlIHJlc3RvcnRlZCBpbiBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9lbmRf aHNhLg0KPiAtICovDQo+IC1zdGF0aWMgaW50DQo+IC1hbWRncHVfbW5fc3luY19wYWdldGFibGVz X2hzYShzdHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAtCQkJICAgICAgY29uc3Qgc3RydWN0 IG1tdV9ub3RpZmllcl9yYW5nZSAqdXBkYXRlKQ0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVf cmFuZ2Vfbm90aWZpZXJfb3BzIGFtZGdwdV9tbl9oc2Ffb3BzID0gew0KPiArCS5pbnZhbGlkYXRl ID0gYW1kZ3B1X21uX2ludmFsaWRhdGVfaHNhLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGludCBh bWRncHVfbW5fc3luY19wYWdldGFibGVzKHN0cnVjdCBobW1fbWlycm9yICptaXJyb3IsDQo+ICsJ CQkJICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICp1cGRhdGUpDQo+ICAgew0K PiAgIAlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3Qg YW1kZ3B1X21uLCBtaXJyb3IpOw0KPiAtCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSB1cGRhdGUtPnN0 YXJ0Ow0KPiAtCXVuc2lnbmVkIGxvbmcgZW5kID0gdXBkYXRlLT5lbmQ7DQo+IC0JYm9vbCBibG9j a2FibGUgPSBtbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHVwZGF0ZSk7DQo+IC0Jc3RydWN0 IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7DQo+ICAgDQo+IC0JLyogbm90aWZpY2F0aW9uIGlzIGV4 Y2x1c2l2ZSwgYnV0IGludGVydmFsIGlzIGluY2x1c2l2ZSAqLw0KPiAtCWVuZCAtPSAxOw0KPiAt DQo+IC0JaWYgKGFtZGdwdV9tbl9yZWFkX2xvY2soYW1uLCBibG9ja2FibGUpKQ0KPiAtCQlyZXR1 cm4gLUVBR0FJTjsNCj4gLQ0KPiAtCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZhbW4t Pm9iamVjdHMsIHN0YXJ0LCBlbmQpOw0KPiAtCXdoaWxlIChpdCkgew0KPiAtCQlzdHJ1Y3QgYW1k Z3B1X21uX25vZGUgKm5vZGU7DQo+IC0JCXN0cnVjdCBhbWRncHVfYm8gKmJvOw0KPiAtDQo+IC0J CWlmICghYmxvY2thYmxlKSB7DQo+IC0JCQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4g LQkJCXJldHVybiAtRUFHQUlOOw0KPiAtCQl9DQo+IC0NCj4gLQkJbm9kZSA9IGNvbnRhaW5lcl9v ZihpdCwgc3RydWN0IGFtZGdwdV9tbl9ub2RlLCBpdCk7DQo+IC0JCWl0ID0gaW50ZXJ2YWxfdHJl ZV9pdGVyX25leHQoaXQsIHN0YXJ0LCBlbmQpOw0KPiAtDQo+IC0JCWxpc3RfZm9yX2VhY2hfZW50 cnkoYm8sICZub2RlLT5ib3MsIG1uX2xpc3QpIHsNCj4gLQkJCXN0cnVjdCBrZ2RfbWVtICptZW0g PSBiby0+a2ZkX2JvOw0KPiAtDQo+IC0JCQlpZiAoYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0 cihiby0+dGJvLnR0bSwNCj4gLQkJCQkJCQkgc3RhcnQsIGVuZCkpDQo+IC0JCQkJYW1kZ3B1X2Ft ZGtmZF9ldmljdF91c2VycHRyKG1lbSwgYW1uLT5tbSk7DQo+IC0JCX0NCj4gLQl9DQo+IC0NCj4g LQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4gKwlpZiAoIW1tdV9ub3RpZmllcl9yYW5n ZV9ibG9ja2FibGUodXBkYXRlKSkNCj4gKwkJcmV0dXJuIGZhbHNlOw0KPiAgIA0KPiArCWRvd25f cmVhZCgmYW1uLT5sb2NrKTsNCj4gKwl1cF9yZWFkKCZhbW4tPmxvY2spOw0KPiAgIAlyZXR1cm4g MDsNCj4gICB9DQo+ICAgDQo+IEBAIC0yOTUsMTIgKzE2NCwxMCBAQCBhbWRncHVfbW5fc3luY19w YWdldGFibGVzX2hzYShzdHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAgIA0KPiAgIHN0YXRp YyBzdHJ1Y3QgaG1tX21pcnJvcl9vcHMgYW1kZ3B1X2htbV9taXJyb3Jfb3BzW10gPSB7DQo+ICAg CVtBTURHUFVfTU5fVFlQRV9HRlhdID0gew0KPiAtCQkuc3luY19jcHVfZGV2aWNlX3BhZ2V0YWJs ZXMgPSBhbWRncHVfbW5fc3luY19wYWdldGFibGVzX2dmeCwNCj4gLQkJLnJlbGVhc2UgPSBhbWRn cHVfaG1tX21pcnJvcl9yZWxlYXNlDQo+ICsJCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9 IGFtZGdwdV9tbl9zeW5jX3BhZ2V0YWJsZXMsDQo+ICAgCX0sDQo+ICAgCVtBTURHUFVfTU5fVFlQ RV9IU0FdID0gew0KPiAtCQkuc3luY19jcHVfZGV2aWNlX3BhZ2V0YWJsZXMgPSBhbWRncHVfbW5f c3luY19wYWdldGFibGVzX2hzYSwNCj4gLQkJLnJlbGVhc2UgPSBhbWRncHVfaG1tX21pcnJvcl9y ZWxlYXNlDQo+ICsJCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9IGFtZGdwdV9tbl9zeW5j X3BhZ2V0YWJsZXMsDQo+ICAgCX0sDQo+ICAgfTsNCj4gICANCj4gQEAgLTMyNyw3ICsxOTQsOCBA QCBzdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LA0KPiAgIAl9DQo+ICAgDQo+ICAgCWhhc2hfZm9yX2VhY2hfcG9zc2libGUoYWRldi0+bW5f aGFzaCwgYW1uLCBub2RlLCBrZXkpDQo+IC0JCWlmIChBTURHUFVfTU5fS0VZKGFtbi0+bW0sIGFt bi0+dHlwZSkgPT0ga2V5KQ0KPiArCQlpZiAoQU1ER1BVX01OX0tFWShhbW4tPm1pcnJvci5obW0t Pm1tdV9ub3RpZmllci5tbSwNCj4gKwkJCQkgIGFtbi0+dHlwZSkgPT0ga2V5KQ0KPiAgIAkJCWdv dG8gcmVsZWFzZV9sb2NrczsNCj4gICANCj4gICAJYW1uID0ga3phbGxvYyhzaXplb2YoKmFtbiks IEdGUF9LRVJORUwpOw0KPiBAQCAtMzM3LDEwICsyMDUsOCBAQCBzdHJ1Y3QgYW1kZ3B1X21uICph bWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgIAl9DQo+ICAgDQo+ ICAgCWFtbi0+YWRldiA9IGFkZXY7DQo+IC0JYW1uLT5tbSA9IG1tOw0KPiAgIAlpbml0X3J3c2Vt KCZhbW4tPmxvY2spOw0KPiAgIAlhbW4tPnR5cGUgPSB0eXBlOw0KPiAtCWFtbi0+b2JqZWN0cyA9 IFJCX1JPT1RfQ0FDSEVEOw0KPiAgIA0KPiAgIAlhbW4tPm1pcnJvci5vcHMgPSAmYW1kZ3B1X2ht bV9taXJyb3Jfb3BzW3R5cGVdOw0KPiAgIAlyID0gaG1tX21pcnJvcl9yZWdpc3RlcigmYW1uLT5t aXJyb3IsIG1tKTsNCj4gQEAgLTM2OSwxMDAgKzIzNSwzMyBAQCBzdHJ1Y3QgYW1kZ3B1X21uICph bWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgICAqIEBibzogYW1k Z3B1IGJ1ZmZlciBvYmplY3QNCj4gICAgKiBAYWRkcjogdXNlcnB0ciBhZGRyIHdlIHNob3VsZCBt b25pdG9yDQo+ICAgICoNCj4gLSAqIFJlZ2lzdGVycyBhbiBITU0gbWlycm9yIGZvciB0aGUgZ2l2 ZW4gQk8gYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLg0KPiArICogUmVnaXN0ZXJzIGEgbW11X25v dGlmaWVyIGZvciB0aGUgZ2l2ZW4gQk8gYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLg0KPiAgICAq IFJldHVybnMgMCBvbiBzdWNjZXNzLCAtRVJSTk8gaWYgYW55dGhpbmcgZ29lcyB3cm9uZy4NCj4g ICAgKi8NCj4gICBpbnQgYW1kZ3B1X21uX3JlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvLCB1 bnNpZ25lZCBsb25nIGFkZHIpDQo+ICAgew0KPiAtCXVuc2lnbmVkIGxvbmcgZW5kID0gYWRkciAr IGFtZGdwdV9ib19zaXplKGJvKSAtIDE7DQo+IC0Jc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSBhbWRncHVfdHRtX2FkZXYoYm8tPnRiby5iZGV2KTsNCj4gLQllbnVtIGFtZGdwdV9tbl90eXBl IHR5cGUgPQ0KPiAtCQliby0+a2ZkX2JvID8gQU1ER1BVX01OX1RZUEVfSFNBIDogQU1ER1BVX01O X1RZUEVfR0ZYOw0KPiAtCXN0cnVjdCBhbWRncHVfbW4gKmFtbjsNCj4gLQlzdHJ1Y3QgYW1kZ3B1 X21uX25vZGUgKm5vZGUgPSBOVUxMLCAqbmV3X25vZGU7DQo+IC0Jc3RydWN0IGxpc3RfaGVhZCBi b3M7DQo+IC0Jc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7DQo+IC0NCj4gLQlhbW4gPSBh bWRncHVfbW5fZ2V0KGFkZXYsIHR5cGUpOw0KPiAtCWlmIChJU19FUlIoYW1uKSkNCj4gLQkJcmV0 dXJuIFBUUl9FUlIoYW1uKTsNCj4gLQ0KPiAtCW5ld19ub2RlID0ga21hbGxvYyhzaXplb2YoKm5l d19ub2RlKSwgR0ZQX0tFUk5FTCk7DQo+IC0JaWYgKCFuZXdfbm9kZSkNCj4gLQkJcmV0dXJuIC1F Tk9NRU07DQo+IC0NCj4gLQlJTklUX0xJU1RfSEVBRCgmYm9zKTsNCj4gLQ0KPiAtCWRvd25fd3Jp dGUoJmFtbi0+bG9jayk7DQo+IC0NCj4gLQl3aGlsZSAoKGl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVy X2ZpcnN0KCZhbW4tPm9iamVjdHMsIGFkZHIsIGVuZCkpKSB7DQo+IC0JCWtmcmVlKG5vZGUpOw0K PiAtCQlub2RlID0gY29udGFpbmVyX29mKGl0LCBzdHJ1Y3QgYW1kZ3B1X21uX25vZGUsIGl0KTsN Cj4gLQkJaW50ZXJ2YWxfdHJlZV9yZW1vdmUoJm5vZGUtPml0LCAmYW1uLT5vYmplY3RzKTsNCj4g LQkJYWRkciA9IG1pbihpdC0+c3RhcnQsIGFkZHIpOw0KPiAtCQllbmQgPSBtYXgoaXQtPmxhc3Qs IGVuZCk7DQo+IC0JCWxpc3Rfc3BsaWNlKCZub2RlLT5ib3MsICZib3MpOw0KPiAtCX0NCj4gLQ0K PiAtCWlmICghbm9kZSkNCj4gLQkJbm9kZSA9IG5ld19ub2RlOw0KPiArCWlmIChiby0+a2ZkX2Jv KQ0KPiArCQliby0+bm90aWZpZXIub3BzID0gJmFtZGdwdV9tbl9oc2Ffb3BzOw0KPiAgIAllbHNl DQo+IC0JCWtmcmVlKG5ld19ub2RlKTsNCj4gLQ0KPiAtCWJvLT5tbiA9IGFtbjsNCj4gLQ0KPiAt CW5vZGUtPml0LnN0YXJ0ID0gYWRkcjsNCj4gLQlub2RlLT5pdC5sYXN0ID0gZW5kOw0KPiAtCUlO SVRfTElTVF9IRUFEKCZub2RlLT5ib3MpOw0KPiAtCWxpc3Rfc3BsaWNlKCZib3MsICZub2RlLT5i b3MpOw0KPiAtCWxpc3RfYWRkKCZiby0+bW5fbGlzdCwgJm5vZGUtPmJvcyk7DQo+ICsJCWJvLT5u b3RpZmllci5vcHMgPSAmYW1kZ3B1X21uX2dmeF9vcHM7DQo+ICAgDQo+IC0JaW50ZXJ2YWxfdHJl ZV9pbnNlcnQoJm5vZGUtPml0LCAmYW1uLT5vYmplY3RzKTsNCj4gLQ0KPiAtCXVwX3dyaXRlKCZh bW4tPmxvY2spOw0KPiAtDQo+IC0JcmV0dXJuIDA7DQo+ICsJcmV0dXJuIG1tdV9yYW5nZV9ub3Rp Zmllcl9pbnNlcnQoJmJvLT5ub3RpZmllciwgYWRkciwNCj4gKwkJCQkJIGFtZGdwdV9ib19zaXpl KGJvKSwgY3VycmVudC0+bW0pOw0KPiAgIH0NCj4gICANCj4gICAvKioNCj4gLSAqIGFtZGdwdV9t bl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBhIEJPIGZvciBITU0gbWlycm9yIHVwZGF0ZXMNCj4g KyAqIGFtZGdwdV9tbl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBhIEJPIGZvciBub3RpZmllciB1 cGRhdGVzDQo+ICAgICoNCj4gICAgKiBAYm86IGFtZGdwdSBidWZmZXIgb2JqZWN0DQo+ICAgICoN Cj4gLSAqIFJlbW92ZSBhbnkgcmVnaXN0cmF0aW9uIG9mIEhNTSBtaXJyb3IgdXBkYXRlcyBmcm9t IHRoZSBidWZmZXIgb2JqZWN0Lg0KPiArICogUmVtb3ZlIGFueSByZWdpc3RyYXRpb24gb2YgbW11 IG5vdGlmaWVyIHVwZGF0ZXMgZnJvbSB0aGUgYnVmZmVyIG9iamVjdC4NCj4gICAgKi8NCj4gICB2 b2lkIGFtZGdwdV9tbl91bnJlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvKQ0KPiAgIHsNCj4g LQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJk ZXYpOw0KPiAtCXN0cnVjdCBhbWRncHVfbW4gKmFtbjsNCj4gLQlzdHJ1Y3QgbGlzdF9oZWFkICpo ZWFkOw0KPiAtDQo+IC0JbXV0ZXhfbG9jaygmYWRldi0+bW5fbG9jayk7DQo+IC0NCj4gLQlhbW4g PSBiby0+bW47DQo+IC0JaWYgKGFtbiA9PSBOVUxMKSB7DQo+IC0JCW11dGV4X3VubG9jaygmYWRl di0+bW5fbG9jayk7DQo+ICsJaWYgKCFiby0+bm90aWZpZXIubW0pDQo+ICAgCQlyZXR1cm47DQo+ IC0JfQ0KPiAtDQo+IC0JZG93bl93cml0ZSgmYW1uLT5sb2NrKTsNCj4gLQ0KPiAtCS8qIHNhdmUg dGhlIG5leHQgbGlzdCBlbnRyeSBmb3IgbGF0ZXIgKi8NCj4gLQloZWFkID0gYm8tPm1uX2xpc3Qu bmV4dDsNCj4gLQ0KPiAtCWJvLT5tbiA9IE5VTEw7DQo+IC0JbGlzdF9kZWxfaW5pdCgmYm8tPm1u X2xpc3QpOw0KPiAtDQo+IC0JaWYgKGxpc3RfZW1wdHkoaGVhZCkpIHsNCj4gLQkJc3RydWN0IGFt ZGdwdV9tbl9ub2RlICpub2RlOw0KPiAtDQo+IC0JCW5vZGUgPSBjb250YWluZXJfb2YoaGVhZCwg c3RydWN0IGFtZGdwdV9tbl9ub2RlLCBib3MpOw0KPiAtCQlpbnRlcnZhbF90cmVlX3JlbW92ZSgm bm9kZS0+aXQsICZhbW4tPm9iamVjdHMpOw0KPiAtCQlrZnJlZShub2RlKTsNCj4gLQl9DQo+IC0N Cj4gLQl1cF93cml0ZSgmYW1uLT5sb2NrKTsNCj4gLQltdXRleF91bmxvY2soJmFkZXYtPm1uX2xv Y2spOw0KPiArCW1tdV9yYW5nZV9ub3RpZmllcl9yZW1vdmUoJmJvLT5ub3RpZmllcik7DQo+ICsJ Ym8tPm5vdGlmaWVyLm1tID0gTlVMTDsNCj4gICB9DQo+ICAgDQo+ICAgLyogZmxhZ3MgdXNlZCBi eSBITU0gaW50ZXJuYWwsIG5vdCByZWxhdGVkIHRvIENQVS9HUFUgUFRFIGZsYWdzICovDQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uaCBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oDQo+IGluZGV4IGI4ZWQ2ODk0MzYyNWMy Li5kNzNhYjI5NDdiMjJiMiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X21uLmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X21uLmgNCj4gQEAgLTM5LDEyICszOSwxMCBAQCBlbnVtIGFtZGdwdV9tbl90eXBlIHsNCj4gICAg KiBzdHJ1Y3QgYW1kZ3B1X21uDQo+ICAgICoNCj4gICAgKiBAYWRldjogYW1kZ3B1IGRldmljZSBw b2ludGVyDQo+IC0gKiBAbW06IHByb2Nlc3MgYWRkcmVzcyBzcGFjZQ0KPiAgICAqIEB0eXBlOiB0 eXBlIG9mIE1NVSBub3RpZmllcg0KPiAgICAqIEB3b3JrOiBkZXN0cnVjdGlvbiB3b3JrIGl0ZW0N Cj4gICAgKiBAbm9kZTogaGFzaCB0YWJsZSBub2RlIHRvIGZpbmQgc3RydWN0dXJlIGJ5IGFkZXYg YW5kIG1uDQo+ICAgICogQGxvY2s6IHJ3IHNlbWFwaG9yZSBwcm90ZWN0aW5nIHRoZSBub3RpZmll ciBub2Rlcw0KPiAtICogQG9iamVjdHM6IGludGVydmFsIHRyZWUgY29udGFpbmluZyBhbWRncHVf bW5fbm9kZXMNCj4gICAgKiBAbWlycm9yOiBITU0gbWlycm9yIGZ1bmN0aW9uIHN1cHBvcnQNCj4g ICAgKg0KPiAgICAqIERhdGEgZm9yIGVhY2ggYW1kZ3B1IGRldmljZSBhbmQgcHJvY2VzcyBhZGRy ZXNzIHNwYWNlLg0KPiBAQCAtNTIsNyArNTAsNiBAQCBlbnVtIGFtZGdwdV9tbl90eXBlIHsNCj4g ICBzdHJ1Y3QgYW1kZ3B1X21uIHsNCj4gICAJLyogY29uc3RhbnQgYWZ0ZXIgaW5pdGlhbGlzYXRp b24gKi8NCj4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2UJKmFkZXY7DQo+IC0Jc3RydWN0IG1tX3N0 cnVjdAkqbW07DQo+ICAgCWVudW0gYW1kZ3B1X21uX3R5cGUJdHlwZTsNCj4gICANCj4gICAJLyog b25seSB1c2VkIG9uIGRlc3RydWN0aW9uICovDQo+IEBAIC02Myw3ICs2MCw2IEBAIHN0cnVjdCBh bWRncHVfbW4gew0KPiAgIA0KPiAgIAkvKiBvYmplY3RzIHByb3RlY3RlZCBieSBsb2NrICovDQo+ ICAgCXN0cnVjdCByd19zZW1hcGhvcmUJbG9jazsNCj4gLQlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQJ b2JqZWN0czsNCj4gICANCj4gICAjaWZkZWYgQ09ORklHX0hNTV9NSVJST1INCj4gICAJLyogSE1N IG1pcnJvciAqLw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5o DQo+IGluZGV4IDY1OGY0Yzk3NzliNzA0Li40YjQ0YWI4NTBmOTRjMiAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oDQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaA0KPiBAQCAtMzAsNiArMzAsOSBA QA0KPiAgIA0KPiAgICNpbmNsdWRlIDxkcm0vYW1kZ3B1X2RybS5oPg0KPiAgICNpbmNsdWRlICJh bWRncHUuaCINCj4gKyNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSDQo+ICsjaW5jbHVkZSA8bGlu dXgvbW11X25vdGlmaWVyLmg+DQo+ICsjZW5kaWYNCj4gICANCj4gICAjZGVmaW5lIEFNREdQVV9C T19JTlZBTElEX09GRlNFVAlMT05HX01BWA0KPiAgICNkZWZpbmUgQU1ER1BVX0JPX01BWF9QTEFD RU1FTlRTCTMNCj4gQEAgLTEwMCwxMCArMTAzLDEyIEBAIHN0cnVjdCBhbWRncHVfYm8gew0KPiAg IAlzdHJ1Y3QgdHRtX2JvX2ttYXBfb2JqCQlkbWFfYnVmX3ZtYXA7DQo+ICAgCXN0cnVjdCBhbWRn cHVfbW4JCSptbjsNCj4gICANCj4gLQl1bmlvbiB7DQo+IC0JCXN0cnVjdCBsaXN0X2hlYWQJbW5f bGlzdDsNCj4gLQkJc3RydWN0IGxpc3RfaGVhZAlzaGFkb3dfbGlzdDsNCj4gLQl9Ow0KPiArDQo+ ICsjaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUg0KPiArCXN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZp ZXIJbm90aWZpZXI7DQo+ICsjZW5kaWYNCj4gKw0KPiArCXN0cnVjdCBsaXN0X2hlYWQJCXNoYWRv d19saXN0Ow0KPiAgIA0KPiAgIAlzdHJ1Y3Qga2dkX21lbSAgICAgICAgICAgICAgICAgICprZmRf Ym87DQo+ICAgfTsNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVs 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=-8.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9783BCA9EC4 for ; Tue, 29 Oct 2019 07:51:53 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5F8EC20862 for ; Tue, 29 Oct 2019 07:51:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="yhjUgk+9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5F8EC20862 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iPMHv-00082Z-MP; Tue, 29 Oct 2019 07:51:35 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iPMHu-000820-FY for xen-devel@lists.xenproject.org; Tue, 29 Oct 2019 07:51:34 +0000 X-Inumbo-ID: ec428090-fa20-11e9-beca-bc764e2007e4 Received: from NAM03-DM3-obe.outbound.protection.outlook.com (unknown [2a01:111:f400:fe49::624]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id ec428090-fa20-11e9-beca-bc764e2007e4; Tue, 29 Oct 2019 07:51:32 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LpHD8kXDawLzYYlbtNIGYrb3STBcIGjvG9LWQfBvX+iudi3VZBE4kJxU8b5tbgqdqG2rTjqo39WBvGpB/KG6FaVOyk10VtIGyfsmw4TWad2Xq8Uizo/UtiyrVG9ydb7tuTzZcqSLonIx6+j8Z5b4yG4M48zd8pP2MBZmToxLXSHs8RlNK1ov0G7fWEjqj8m9En69dAXY3bH4Qpts0eM+lLZGb0uyb8GpGUpZdRcNybP0MLllxKEU9AKep+HLHJuVh5rkEoAGx7MhpkZOUwWp1xHSQVJh9YeRLPSQSV8qpRfp9/3RfU8RzhJDOZA/jtSZDYZsEnPAlwZAnjLJ+CbrMg== 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=6ysSG8t97ZyDK9Ea8UVc2JBJ/dZ1dmCFNOEvFizqCic=; b=Bk1pqF1001iUl/CtDvY0LV56bI8VbewwIG/b6kL66bkRSz+k9nVNais4XkDxaIT7d2BrmgrmTUMZkaPwhRFUogEWXs/BQC3V+2LeGEctFGOxxGhYkJjNMUsjRP0ne/b6+ecX8UiYVxe0wkWiwM3XrFNKwgpygVcx9crOZX2hkg2EHNPsdzgMom3fOdDHIhGp+Y6VjwJfkZh1W8MKVNHt878i3GAUrauq4O4i8Rb6GvJbzcE/uUqKN3xLDi5qxD6OkeONk3AO489NvVTdT/evKFwzPdbI6uiWBCUeuZbYr+vF8xWr1zdYB4/6hJWgbSFwmaNd9L9ADhqHj9AG7SkkdA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6ysSG8t97ZyDK9Ea8UVc2JBJ/dZ1dmCFNOEvFizqCic=; b=yhjUgk+9eg492W1asLz0pO/QJUTNRo4+gtdZmfPANSG56ir17tjElpbV9AuPCrxu9QleGUQew75h9HWVwY0qZbz6Sea0+u9Gdu10S2eoRrgxClyHjortSCJHMch6pJDbRQKFOAKuwVFi5VxUZAlfzG1b6/QYDXRhwTer5gOjuPo= Received: from BN6PR12MB1699.namprd12.prod.outlook.com (10.175.97.148) by BN6PR12MB1281.namprd12.prod.outlook.com (10.168.226.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.25; Tue, 29 Oct 2019 07:51:30 +0000 Received: from BN6PR12MB1699.namprd12.prod.outlook.com ([fe80::68e1:ddf5:df4c:b554]) by BN6PR12MB1699.namprd12.prod.outlook.com ([fe80::68e1:ddf5:df4c:b554%9]) with mapi id 15.20.2387.025; Tue, 29 Oct 2019 07:51:30 +0000 From: "Koenig, Christian" To: Jason Gunthorpe , "linux-mm@kvack.org" , Jerome Glisse , Ralph Campbell , John Hubbard , "Kuehling, Felix" Thread-Topic: [PATCH v2 13/15] drm/amdgpu: Use mmu_range_insert instead of hmm_mirror Thread-Index: AQHVjc1AranX4zytZkWJZeF308H7IKdxP7aA Date: Tue, 29 Oct 2019 07:51:30 +0000 Message-ID: References: <20191028201032.6352-1-jgg@ziepe.ca> <20191028201032.6352-14-jgg@ziepe.ca> In-Reply-To: <20191028201032.6352-14-jgg@ziepe.ca> Accept-Language: de-DE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 x-originating-ip: [2a02:908:1252:fb60:be8a:bd56:1f94:86e7] x-clientproxiedby: AM0PR10CA0036.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:150::16) To BN6PR12MB1699.namprd12.prod.outlook.com (2603:10b6:404:ff::20) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Christian.Koenig@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 86ac308d-4333-41a0-06d5-08d75c44cf72 x-ms-traffictypediagnostic: BN6PR12MB1281: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4941; x-forefront-prvs: 0205EDCD76 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(136003)(366004)(376002)(346002)(396003)(199004)(189003)(186003)(2501003)(305945005)(66556008)(66446008)(316002)(64756008)(14444005)(66476007)(5024004)(6436002)(66946007)(110136005)(8936002)(256004)(4326008)(478600001)(6246003)(65956001)(31696002)(65806001)(14454004)(71200400001)(54906003)(58126008)(71190400001)(2906002)(486006)(476003)(31686004)(6512007)(36756003)(81166006)(6116002)(66574012)(11346002)(8676002)(7416002)(46003)(86362001)(7736002)(76176011)(386003)(52116002)(102836004)(229853002)(446003)(99286004)(6486002)(5660300002)(2616005)(30864003)(6636002)(81156014)(25786009)(6506007); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR12MB1281; H:BN6PR12MB1699.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DaQCjlvFxN7F5UH5XfeWiXpPvUImLcW0Sm71ujV/9hgKP3VFXWXAKS8FyZ3VIRCfRy7kOHP1wfBIElx1iqIYntZrRQdhETcO+wGBjaZR66bXkoOW6pshtaMMv8qW7KRsfvKbWdhGyNLDdvYSD52MzR/y0BGTotBn2u/CNtxIPZPL3FCLPbxtGra6rj9GLN/huFcx1aF0m5kzwJmfB9PqFjN6TdOPt+6cDXrWFjlGCX/TwiMNUZr3XELkdqlsrs0KqFBuMMXpYW7QJsqWDDJUdmwtR7NZbT2UlWvbhFEjcJQmhSQSdO5gZvGlKf158OJYLdAn7NZsSbq/CcqOzGBlvV6LAuHkqz9hoAY4QMrooj1gcQZfwcEr40olPZ4GzneV2MgiTT0uKwahJuYXJ/K/3nMOP62c2r3S3UnhPMrwSSCCjA05CYtD3AJ33DymV7iV Content-ID: MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86ac308d-4333-41a0-06d5-08d75c44cf72 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2019 07:51:30.6921 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ai4m8Ncn3A4KFW1TwGTokn2nYSqsLCz2G2whEg6R4IGlO4nBoOBagkn4wUe7U2kq X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1281 Subject: Re: [Xen-devel] [PATCH v2 13/15] drm/amdgpu: Use mmu_range_insert instead of hmm_mirror X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , "Zhou, David\(ChunMing\)" , Mike Marciniszyn , Stefano Stabellini , Oleksandr Andrushchenko , "linux-rdma@vger.kernel.org" , "nouveau@lists.freedesktop.org" , Dennis Dalessandro , "amd-gfx@lists.freedesktop.org" , Christoph Hellwig , Jason Gunthorpe , "dri-devel@lists.freedesktop.org" , "Deucher, Alexander" , "xen-devel@lists.xenproject.org" , Boris Ostrovsky , Petr Cvek , Ben Skeggs Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" QW0gMjguMTAuMTkgdW0gMjE6MTAgc2NocmllYiBKYXNvbiBHdW50aG9ycGU6DQo+IEZyb206IEph c29uIEd1bnRob3JwZSA8amdnQG1lbGxhbm94LmNvbT4NCj4NCj4gUmVtb3ZlIHRoZSBpbnRlcnZh bCB0cmVlIGluIHRoZSBkcml2ZXIgYW5kIHJlbHkgb24gdGhlIHRyZWUgbWFpbnRhaW5lZCBieQ0K PiB0aGUgbW11X25vdGlmaWVyIGZvciBkZWxpdmVyaW5nIG1tdV9ub3RpZmllciBpbnZhbGlkYXRp b24gY2FsbGJhY2tzLg0KPg0KPiBGb3Igc29tZSByZWFzb24gYW1kZ3B1IGhhcyBhIHZlcnkgY29t cGxpY2F0ZWQgYXJyYW5nZW1lbnQgd2hlcmUgaXQgdHJpZXMNCj4gdG8gcHJldmVudCBkdXBsaWNh dGUgZW50cmllcyBpbiB0aGUgaW50ZXJ2YWxfdHJlZSwgdGhpcyBpcyBub3QgbmVjZXNzYXJ5LA0K PiBlYWNoIGFtZGdwdV9ibyBjYW4gYmUgaXRzIG93biBzdGFuZCBhbG9uZSBlbnRyeS4gaW50ZXJ2 YWxfdHJlZSBhbHJlYWR5DQo+IGFsbG93cyBkdXBsaWNhdGVzIGFuZCBvdmVybGFwcyBpbiB0aGUg dHJlZS4NCj4NCj4gQWxzbywgdGhlcmUgaXMgbm8gbmVlZCB0byByZW1vdmUgZW50cmllcyB1cG9u IGEgcmVsZWFzZSBjYWxsYmFjaywgdGhlDQo+IG1tdV9yYW5nZSBBUEkgc2FmZWx5IGFsbG93cyBv YmplY3RzIHRvIHJlbWFpbiByZWdpc3RlcmVkIGJleW9uZCB0aGUNCj4gbGlmZXRpbWUgb2YgdGhl IG1tLiBUaGUgZHJpdmVyIG9ubHkgaGFzIHRvIHN0b3AgdG91Y2hpbmcgdGhlIHBhZ2VzIGR1cmlu Zw0KPiByZWxlYXNlLg0KPg0KPiBDYzogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBh bWQuY29tPg0KPiBDYzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t Pg0KPiBDYzogRGF2aWQgKENodW5NaW5nKSBaaG91IDxEYXZpZDEuWmhvdUBhbWQuY29tPg0KPiBD YzogYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gU2lnbmVkLW9mZi1ieTogSmFzb24g R3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPg0KPiAtLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHUuaCAgICAgICAgICAgfCAgIDIgKw0KPiAgIC4uLi9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jICB8ICAgNSArLQ0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyAgICB8ICAgMSArDQo+ICAgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgICAgICAgIHwgMzQxICsrKystLS0tLS0tLS0t LS0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oICAgICAgICB8 ICAgNCAtDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oICAg IHwgIDEzICstDQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAyODIgZGVs ZXRpb25zKC0pDQo+DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oDQo+IGluZGV4IGJk MzdkZjVkZDZkMDQ4Li42MDU5MWE1ZDQyMDAyMSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1LmgNCj4gQEAgLTEwMDYsNiArMTAwNiw4IEBAIHN0cnVjdCBhbWRncHVfZGV2aWNl IHsNCj4gICAJc3RydWN0IG11dGV4ICBsb2NrX3Jlc2V0Ow0KPiAgIAlzdHJ1Y3QgYW1kZ3B1X2Rv b3JiZWxsX2luZGV4IGRvb3JiZWxsX2luZGV4Ow0KPiAgIA0KPiArCXN0cnVjdCBtdXRleAkJCW5v dGlmaWVyX2xvY2s7DQo+ICsNCj4gICAJaW50IGFzaWNfcmVzZXRfcmVzOw0KPiAgIAlzdHJ1Y3Qg d29ya19zdHJ1Y3QJCXhnbWlfcmVzZXRfd29yazsNCj4gICANCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYw0KPiBpbmRleCA2ZDAyMWVjYzhk NTk4Zi4uNDc3MDAzMDJhMDhiN2YgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMNCj4gQEAgLTQ4MSw4ICs0ODEsNyBAQCBzdGF0 aWMgdm9pZCByZW1vdmVfa2dkX21lbV9mcm9tX2tmZF9ib19saXN0KHN0cnVjdCBrZ2RfbWVtICpt ZW0sDQo+ICAgICoNCj4gICAgKiBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5v IGZvciBlcnJvcnMuDQo+ICAgICovDQo+IC1zdGF0aWMgaW50IGluaXRfdXNlcl9wYWdlcyhzdHJ1 Y3Qga2dkX21lbSAqbWVtLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwNCj4gLQkJCSAgIHVpbnQ2NF90 IHVzZXJfYWRkcikNCj4gK3N0YXRpYyBpbnQgaW5pdF91c2VyX3BhZ2VzKHN0cnVjdCBrZ2RfbWVt ICptZW0sIHVpbnQ2NF90IHVzZXJfYWRkcikNCj4gICB7DQo+ICAgCXN0cnVjdCBhbWRrZmRfcHJv Y2Vzc19pbmZvICpwcm9jZXNzX2luZm8gPSBtZW0tPnByb2Nlc3NfaW5mbzsNCj4gICAJc3RydWN0 IGFtZGdwdV9ibyAqYm8gPSBtZW0tPmJvOw0KPiBAQCAtMTE5NSw3ICsxMTk0LDcgQEAgaW50IGFt ZGdwdV9hbWRrZmRfZ3B1dm1fYWxsb2NfbWVtb3J5X29mX2dwdSgNCj4gICAJYWRkX2tnZF9tZW1f dG9fa2ZkX2JvX2xpc3QoKm1lbSwgYXZtLT5wcm9jZXNzX2luZm8sIHVzZXJfYWRkcik7DQo+ICAg DQo+ICAgCWlmICh1c2VyX2FkZHIpIHsNCj4gLQkJcmV0ID0gaW5pdF91c2VyX3BhZ2VzKCptZW0s IGN1cnJlbnQtPm1tLCB1c2VyX2FkZHIpOw0KPiArCQlyZXQgPSBpbml0X3VzZXJfcGFnZXMoKm1l bSwgdXNlcl9hZGRyKTsNCj4gICAJCWlmIChyZXQpDQo+ICAgCQkJZ290byBhbGxvY2F0ZV9pbml0 X3VzZXJfcGFnZXNfZmFpbGVkOw0KPiAgIAl9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZGV2aWNlLmMNCj4gaW5kZXggNWExOTM5ZGJkNGUzZTYuLjM4Zjk3OTk4YWFkZGIy IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNl LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jDQo+ IEBAIC0yNjMzLDYgKzI2MzMsNyBAQCBpbnQgYW1kZ3B1X2RldmljZV9pbml0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LA0KPiAgIAltdXRleF9pbml0KCZhZGV2LT52aXJ0LnZmX2Vycm9ycy5s b2NrKTsNCj4gICAJaGFzaF9pbml0KGFkZXYtPm1uX2hhc2gpOw0KPiAgIAltdXRleF9pbml0KCZh ZGV2LT5sb2NrX3Jlc2V0KTsNCj4gKwltdXRleF9pbml0KCZhZGV2LT5ub3RpZmllcl9sb2NrKTsN Cj4gICAJbXV0ZXhfaW5pdCgmYWRldi0+dmlydC5kcG1fbXV0ZXgpOw0KPiAgIAltdXRleF9pbml0 KCZhZGV2LT5wc3AubXV0ZXgpOw0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfbW4uYw0KPiBpbmRleCAzMWQ0ZGViNWQyOTQ4NC4uNGZmZDdiOTBmNGQ5MDcgMTAwNjQ0DQo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQo+IEBAIC01MCw2NiArNTAsNiBA QA0KPiAgICNpbmNsdWRlICJhbWRncHUuaCINCj4gICAjaW5jbHVkZSAiYW1kZ3B1X2FtZGtmZC5o Ig0KPiAgIA0KPiAtLyoqDQo+IC0gKiBzdHJ1Y3QgYW1kZ3B1X21uX25vZGUNCj4gLSAqDQo+IC0g KiBAaXQ6IGludGVydmFsIG5vZGUgZGVmaW5pbmcgc3RhcnQtbGFzdCBvZiB0aGUgYWZmZWN0ZWQg YWRkcmVzcyByYW5nZQ0KPiAtICogQGJvczogbGlzdCBvZiBhbGwgQk9zIGluIHRoZSBhZmZlY3Rl ZCBhZGRyZXNzIHJhbmdlDQo+IC0gKg0KPiAtICogTWFuYWdlcyBhbGwgQk9zIHdoaWNoIGFyZSBh ZmZlY3RlZCBvZiBhIGNlcnRhaW4gcmFuZ2Ugb2YgYWRkcmVzcyBzcGFjZS4NCj4gLSAqLw0KPiAt c3RydWN0IGFtZGdwdV9tbl9ub2RlIHsNCj4gLQlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlCWl0 Ow0KPiAtCXN0cnVjdCBsaXN0X2hlYWQJCWJvczsNCj4gLX07DQo+IC0NCj4gLS8qKg0KPiAtICog YW1kZ3B1X21uX2Rlc3Ryb3kgLSBkZXN0cm95IHRoZSBITU0gbWlycm9yDQo+IC0gKg0KPiAtICog QHdvcms6IHByZXZpb3VzbHkgc2hlZHVsZWQgd29yayBpdGVtDQo+IC0gKg0KPiAtICogTGF6eSBk ZXN0cm95cyB0aGUgbm90aWZpZXIgZnJvbSBhIHdvcmsgaXRlbQ0KPiAtICovDQo+IC1zdGF0aWMg dm9pZCBhbWRncHVfbW5fZGVzdHJveShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+IC17DQo+ IC0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhbWRn cHVfbW4sIHdvcmspOw0KPiAtCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gYW1uLT5hZGV2 Ow0KPiAtCXN0cnVjdCBhbWRncHVfbW5fbm9kZSAqbm9kZSwgKm5leHRfbm9kZTsNCj4gLQlzdHJ1 Y3QgYW1kZ3B1X2JvICpibywgKm5leHRfYm87DQo+IC0NCj4gLQltdXRleF9sb2NrKCZhZGV2LT5t bl9sb2NrKTsNCj4gLQlkb3duX3dyaXRlKCZhbW4tPmxvY2spOw0KPiAtCWhhc2hfZGVsKCZhbW4t Pm5vZGUpOw0KPiAtCXJidHJlZV9wb3N0b3JkZXJfZm9yX2VhY2hfZW50cnlfc2FmZShub2RlLCBu ZXh0X25vZGUsDQo+IC0JCQkJCSAgICAgJmFtbi0+b2JqZWN0cy5yYl9yb290LCBpdC5yYikgew0K PiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYm8sIG5leHRfYm8sICZub2RlLT5ib3MsIG1u X2xpc3QpIHsNCj4gLQkJCWJvLT5tbiA9IE5VTEw7DQo+IC0JCQlsaXN0X2RlbF9pbml0KCZiby0+ bW5fbGlzdCk7DQo+IC0JCX0NCj4gLQkJa2ZyZWUobm9kZSk7DQo+IC0JfQ0KPiAtCXVwX3dyaXRl KCZhbW4tPmxvY2spOw0KPiAtCW11dGV4X3VubG9jaygmYWRldi0+bW5fbG9jayk7DQo+IC0NCj4g LQlobW1fbWlycm9yX3VucmVnaXN0ZXIoJmFtbi0+bWlycm9yKTsNCj4gLQlrZnJlZShhbW4pOw0K PiAtfQ0KPiAtDQo+IC0vKioNCj4gLSAqIGFtZGdwdV9obW1fbWlycm9yX3JlbGVhc2UgLSBjYWxs YmFjayB0byBub3RpZnkgYWJvdXQgbW0gZGVzdHJ1Y3Rpb24NCj4gLSAqDQo+IC0gKiBAbWlycm9y OiB0aGUgSE1NIG1pcnJvciAobW0pIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQNCj4gLSAqDQo+IC0g KiBTaGVkdWxlIGEgd29yayBpdGVtIHRvIGxhenkgZGVzdHJveSBITU0gbWlycm9yLg0KPiAtICov DQo+IC1zdGF0aWMgdm9pZCBhbWRncHVfaG1tX21pcnJvcl9yZWxlYXNlKHN0cnVjdCBobW1fbWly cm9yICptaXJyb3IpDQo+IC17DQo+IC0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVy X29mKG1pcnJvciwgc3RydWN0IGFtZGdwdV9tbiwgbWlycm9yKTsNCj4gLQ0KPiAtCUlOSVRfV09S SygmYW1uLT53b3JrLCBhbWRncHVfbW5fZGVzdHJveSk7DQo+IC0Jc2NoZWR1bGVfd29yaygmYW1u LT53b3JrKTsNCj4gLX0NCj4gLQ0KPiAgIC8qKg0KPiAgICAqIGFtZGdwdV9tbl9sb2NrIC0gdGFr ZSB0aGUgd3JpdGUgc2lkZSBsb2NrIGZvciB0aGlzIG5vdGlmaWVyDQo+ICAgICoNCj4gQEAgLTEz MywxNTcgKzczLDg2IEBAIHZvaWQgYW1kZ3B1X21uX3VubG9jayhzdHJ1Y3QgYW1kZ3B1X21uICpt bikNCj4gICB9DQo+ICAgDQo+ICAgLyoqDQo+IC0gKiBhbWRncHVfbW5fcmVhZF9sb2NrIC0gdGFr ZSB0aGUgcmVhZCBzaWRlIGxvY2sgZm9yIHRoaXMgbm90aWZpZXINCj4gLSAqDQo+IC0gKiBAYW1u OiBvdXIgbm90aWZpZXINCj4gLSAqLw0KPiAtc3RhdGljIGludCBhbWRncHVfbW5fcmVhZF9sb2Nr KHN0cnVjdCBhbWRncHVfbW4gKmFtbiwgYm9vbCBibG9ja2FibGUpDQo+IC17DQo+IC0JaWYgKGJs b2NrYWJsZSkNCj4gLQkJZG93bl9yZWFkKCZhbW4tPmxvY2spOw0KPiAtCWVsc2UgaWYgKCFkb3du X3JlYWRfdHJ5bG9jaygmYW1uLT5sb2NrKSkNCj4gLQkJcmV0dXJuIC1FQUdBSU47DQo+IC0NCj4g LQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtLyoqDQo+IC0gKiBhbWRncHVfbW5fcmVhZF91bmxv Y2sgLSBkcm9wIHRoZSByZWFkIHNpZGUgbG9jayBmb3IgdGhpcyBub3RpZmllcg0KPiAtICoNCj4g LSAqIEBhbW46IG91ciBub3RpZmllcg0KPiAtICovDQo+IC1zdGF0aWMgdm9pZCBhbWRncHVfbW5f cmVhZF91bmxvY2soc3RydWN0IGFtZGdwdV9tbiAqYW1uKQ0KPiAtew0KPiAtCXVwX3JlYWQoJmFt bi0+bG9jayk7DQo+IC19DQo+IC0NCj4gLS8qKg0KPiAtICogYW1kZ3B1X21uX2ludmFsaWRhdGVf bm9kZSAtIHVubWFwIGFsbCBCT3Mgb2YgYSBub2RlDQo+ICsgKiBhbWRncHVfbW5faW52YWxpZGF0 ZV9nZnggLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlDQo+ICAgICoNCj4gLSAq IEBub2RlOiB0aGUgbm9kZSB3aXRoIHRoZSBCT3MgdG8gdW5tYXANCj4gLSAqIEBzdGFydDogc3Rh cnQgb2YgYWRkcmVzcyByYW5nZSBhZmZlY3RlZA0KPiAtICogQGVuZDogZW5kIG9mIGFkZHJlc3Mg cmFuZ2UgYWZmZWN0ZWQNCj4gKyAqIEBtcm46IHRoZSByYW5nZSAobW0pIGlzIGFib3V0IHRvIHVw ZGF0ZQ0KPiArICogQHJhbmdlOiBkZXRhaWxzIG9uIHRoZSBpbnZhbGlkYXRpb24NCj4gICAgKg0K PiAgICAqIEJsb2NrIGZvciBvcGVyYXRpb25zIG9uIEJPcyB0byBmaW5pc2ggYW5kIG1hcmsgcGFn ZXMgYXMgYWNjZXNzZWQgYW5kDQo+ICAgICogcG90ZW50aWFsbHkgZGlydHkuDQo+ICAgICovDQo+ IC1zdGF0aWMgdm9pZCBhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlKHN0cnVjdCBhbWRncHVfbW5f bm9kZSAqbm9kZSwNCj4gLQkJCQkgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LA0KPiAtCQkJCSAg ICAgIHVuc2lnbmVkIGxvbmcgZW5kKQ0KPiArc3RhdGljIGJvb2wgYW1kZ3B1X21uX2ludmFsaWRh dGVfZ2Z4KHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwNCj4gKwkJCQkgICAgIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgYW1k Z3B1X2JvICpibzsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2JvICpibyA9IGNvbnRhaW5lcl9vZihtcm4s IHN0cnVjdCBhbWRncHVfYm8sIG5vdGlmaWVyKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJkZXYpOw0KPiAgIAlsb25nIHI7DQo+ICAg DQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShibywgJm5vZGUtPmJvcywgbW5fbGlzdCkgew0KPiAt DQo+IC0JCWlmICghYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwgc3Rh cnQsIGVuZCkpDQo+IC0JCQljb250aW51ZTsNCj4gLQ0KPiAtCQlyID0gZG1hX3Jlc3Zfd2FpdF90 aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwNCj4gLQkJCXRydWUsIGZhbHNlLCBNQVhfU0NI RURVTEVfVElNRU9VVCk7DQo+IC0JCWlmIChyIDw9IDApDQo+IC0JCQlEUk1fRVJST1IoIiglbGQp IGZhaWxlZCB0byB3YWl0IGZvciB1c2VyIGJvXG4iLCByKTsNCj4gLQl9DQo+ICsJLyogRklYTUU6 IElzIHRoaXMgbmVjZXNzYXJ5PyAqLw0KDQpNb3N0IGxpa2VseSBub3QuDQoNCkNocmlzdGlhbi4N Cg0KPiArCWlmICghYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwgcmFu Z2UtPnN0YXJ0LA0KPiArCQkJCQkgIHJhbmdlLT5lbmQpKQ0KPiArCQlyZXR1cm4gdHJ1ZTsNCj4g Kw0KPiArCWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpDQo+ICsJCXJl dHVybiBmYWxzZTsNCj4gKw0KPiArCW11dGV4X2xvY2soJmFkZXYtPm5vdGlmaWVyX2xvY2spOw0K PiArCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KGJvLT50Ym8uYmFzZS5yZXN2LCB0cnVl LCBmYWxzZSwNCj4gKwkJCQkgICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7DQo+ICsJbXV0ZXhf dW5sb2NrKCZhZGV2LT5ub3RpZmllcl9sb2NrKTsNCj4gKwlpZiAociA8PSAwKQ0KPiArCQlEUk1f RVJST1IoIiglbGQpIGZhaWxlZCB0byB3YWl0IGZvciB1c2VyIGJvXG4iLCByKTsNCj4gKwlyZXR1 cm4gdHJ1ZTsNCj4gICB9DQo+ICAgDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9yYW5nZV9u b3RpZmllcl9vcHMgYW1kZ3B1X21uX2dmeF9vcHMgPSB7DQo+ICsJLmludmFsaWRhdGUgPSBhbWRn cHVfbW5faW52YWxpZGF0ZV9nZngsDQo+ICt9Ow0KPiArDQo+ICAgLyoqDQo+IC0gKiBhbWRncHVf bW5fc3luY19wYWdldGFibGVzX2dmeCAtIGNhbGxiYWNrIHRvIG5vdGlmeSBhYm91dCBtbSBjaGFu Z2UNCj4gKyAqIGFtZGdwdV9tbl9pbnZhbGlkYXRlX2hzYSAtIGNhbGxiYWNrIHRvIG5vdGlmeSBh Ym91dCBtbSBjaGFuZ2UNCj4gICAgKg0KPiAtICogQG1pcnJvcjogdGhlIGhtbV9taXJyb3IgKG1t KSBpcyBhYm91dCB0byB1cGRhdGUNCj4gLSAqIEB1cGRhdGU6IHRoZSB1cGRhdGUgc3RhcnQsIGVu ZCBhZGRyZXNzDQo+ICsgKiBAbXJuOiB0aGUgcmFuZ2UgKG1tKSBpcyBhYm91dCB0byB1cGRhdGUN Cj4gKyAqIEByYW5nZTogZGV0YWlscyBvbiB0aGUgaW52YWxpZGF0aW9uDQo+ICAgICoNCj4gLSAq IEJsb2NrIGZvciBvcGVyYXRpb25zIG9uIEJPcyB0byBmaW5pc2ggYW5kIG1hcmsgcGFnZXMgYXMg YWNjZXNzZWQgYW5kDQo+IC0gKiBwb3RlbnRpYWxseSBkaXJ0eS4NCj4gKyAqIFdlIHRlbXBvcmFy aWx5IGV2aWN0IHRoZSBCTyBhdHRhY2hlZCB0byB0aGlzIHJhbmdlLiBUaGlzIG5lY2Vzc2l0YXRl cw0KPiArICogZXZpY3RpbmcgYWxsIHVzZXItbW9kZSBxdWV1ZXMgb2YgdGhlIHByb2Nlc3MuDQo+ ICAgICovDQo+IC1zdGF0aWMgaW50DQo+IC1hbWRncHVfbW5fc3luY19wYWdldGFibGVzX2dmeChz dHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAtCQkJICAgICAgY29uc3Qgc3RydWN0IG1tdV9u b3RpZmllcl9yYW5nZSAqdXBkYXRlKQ0KPiArc3RhdGljIGJvb2wgYW1kZ3B1X21uX2ludmFsaWRh dGVfaHNhKHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwNCj4gKwkJCQkgICAgIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgYW1k Z3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3QgYW1kZ3B1X21uLCBtaXJy b3IpOw0KPiAtCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSB1cGRhdGUtPnN0YXJ0Ow0KPiAtCXVuc2ln bmVkIGxvbmcgZW5kID0gdXBkYXRlLT5lbmQ7DQo+IC0JYm9vbCBibG9ja2FibGUgPSBtbXVfbm90 aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHVwZGF0ZSk7DQo+IC0Jc3RydWN0IGludGVydmFsX3RyZWVf bm9kZSAqaXQ7DQo+IC0NCj4gLQkvKiBub3RpZmljYXRpb24gaXMgZXhjbHVzaXZlLCBidXQgaW50 ZXJ2YWwgaXMgaW5jbHVzaXZlICovDQo+IC0JZW5kIC09IDE7DQo+IC0NCj4gLQkvKiBUT0RPIHdl IHNob3VsZCBiZSBhYmxlIHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kDQo+ IC0JICogYW1kZ3B1X21uX2ludmFsaWRhdGVfbm9kZQ0KPiAtCSAqLw0KPiAtCWlmIChhbWRncHVf bW5fcmVhZF9sb2NrKGFtbiwgYmxvY2thYmxlKSkNCj4gLQkJcmV0dXJuIC1FQUdBSU47DQo+IC0N Cj4gLQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmYW1uLT5vYmplY3RzLCBzdGFydCwg ZW5kKTsNCj4gLQl3aGlsZSAoaXQpIHsNCj4gLQkJc3RydWN0IGFtZGdwdV9tbl9ub2RlICpub2Rl Ow0KPiAtDQo+IC0JCWlmICghYmxvY2thYmxlKSB7DQo+IC0JCQlhbWRncHVfbW5fcmVhZF91bmxv Y2soYW1uKTsNCj4gLQkJCXJldHVybiAtRUFHQUlOOw0KPiAtCQl9DQo+ICsJc3RydWN0IGFtZGdw dV9ibyAqYm8gPSBjb250YWluZXJfb2YobXJuLCBzdHJ1Y3QgYW1kZ3B1X2JvLCBub3RpZmllcik7 DQo+ICsJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBhbWRncHVfdHRtX2FkZXYoYm8tPnRi by5iZGV2KTsNCj4gICANCj4gLQkJbm9kZSA9IGNvbnRhaW5lcl9vZihpdCwgc3RydWN0IGFtZGdw dV9tbl9ub2RlLCBpdCk7DQo+IC0JCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25leHQoaXQsIHN0 YXJ0LCBlbmQpOw0KPiArCS8qIEZJWE1FOiBJcyB0aGlzIG5lY2Vzc2FyeT8gKi8NCj4gKwlpZiAo IWFtZGdwdV90dG1fdHRfYWZmZWN0X3VzZXJwdHIoYm8tPnRiby50dG0sIHJhbmdlLT5zdGFydCwN Cj4gKwkJCQkJICByYW5nZS0+ZW5kKSkNCj4gKwkJcmV0dXJuIHRydWU7DQo+ICAgDQo+IC0JCWFt ZGdwdV9tbl9pbnZhbGlkYXRlX25vZGUobm9kZSwgc3RhcnQsIGVuZCk7DQo+IC0JfQ0KPiArCWlm ICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpDQo+ICsJCXJldHVybiBmYWxz ZTsNCj4gICANCj4gLQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4gKwltdXRleF9sb2Nr KCZhZGV2LT5ub3RpZmllcl9sb2NrKTsNCj4gKwlhbWRncHVfYW1ka2ZkX2V2aWN0X3VzZXJwdHIo Ym8tPmtmZF9ibywgYm8tPm5vdGlmaWVyLm1tKTsNCj4gKwltdXRleF91bmxvY2soJmFkZXYtPm5v dGlmaWVyX2xvY2spOw0KPiAgIA0KPiAtCXJldHVybiAwOw0KPiArCXJldHVybiB0cnVlOw0KPiAg IH0NCj4gICANCj4gLS8qKg0KPiAtICogYW1kZ3B1X21uX3N5bmNfcGFnZXRhYmxlc19oc2EgLSBj YWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlDQo+IC0gKg0KPiAtICogQG1pcnJvcjog dGhlIGhtbV9taXJyb3IgKG1tKSBpcyBhYm91dCB0byB1cGRhdGUNCj4gLSAqIEB1cGRhdGU6IHRo ZSB1cGRhdGUgc3RhcnQsIGVuZCBhZGRyZXNzDQo+IC0gKg0KPiAtICogV2UgdGVtcG9yYXJpbHkg ZXZpY3QgYWxsIEJPcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQuIFRoaXMNCj4gLSAqIG5lY2Vzc2l0 YXRlcyBldmljdGluZyBhbGwgdXNlci1tb2RlIHF1ZXVlcyBvZiB0aGUgcHJvY2Vzcy4gVGhlIEJP cw0KPiAtICogYXJlIHJlc3RvcnRlZCBpbiBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9lbmRf aHNhLg0KPiAtICovDQo+IC1zdGF0aWMgaW50DQo+IC1hbWRncHVfbW5fc3luY19wYWdldGFibGVz X2hzYShzdHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAtCQkJICAgICAgY29uc3Qgc3RydWN0 IG1tdV9ub3RpZmllcl9yYW5nZSAqdXBkYXRlKQ0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVf cmFuZ2Vfbm90aWZpZXJfb3BzIGFtZGdwdV9tbl9oc2Ffb3BzID0gew0KPiArCS5pbnZhbGlkYXRl ID0gYW1kZ3B1X21uX2ludmFsaWRhdGVfaHNhLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGludCBh bWRncHVfbW5fc3luY19wYWdldGFibGVzKHN0cnVjdCBobW1fbWlycm9yICptaXJyb3IsDQo+ICsJ CQkJICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICp1cGRhdGUpDQo+ICAgew0K PiAgIAlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3Qg YW1kZ3B1X21uLCBtaXJyb3IpOw0KPiAtCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSB1cGRhdGUtPnN0 YXJ0Ow0KPiAtCXVuc2lnbmVkIGxvbmcgZW5kID0gdXBkYXRlLT5lbmQ7DQo+IC0JYm9vbCBibG9j a2FibGUgPSBtbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHVwZGF0ZSk7DQo+IC0Jc3RydWN0 IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7DQo+ICAgDQo+IC0JLyogbm90aWZpY2F0aW9uIGlzIGV4 Y2x1c2l2ZSwgYnV0IGludGVydmFsIGlzIGluY2x1c2l2ZSAqLw0KPiAtCWVuZCAtPSAxOw0KPiAt DQo+IC0JaWYgKGFtZGdwdV9tbl9yZWFkX2xvY2soYW1uLCBibG9ja2FibGUpKQ0KPiAtCQlyZXR1 cm4gLUVBR0FJTjsNCj4gLQ0KPiAtCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZhbW4t Pm9iamVjdHMsIHN0YXJ0LCBlbmQpOw0KPiAtCXdoaWxlIChpdCkgew0KPiAtCQlzdHJ1Y3QgYW1k Z3B1X21uX25vZGUgKm5vZGU7DQo+IC0JCXN0cnVjdCBhbWRncHVfYm8gKmJvOw0KPiAtDQo+IC0J CWlmICghYmxvY2thYmxlKSB7DQo+IC0JCQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4g LQkJCXJldHVybiAtRUFHQUlOOw0KPiAtCQl9DQo+IC0NCj4gLQkJbm9kZSA9IGNvbnRhaW5lcl9v ZihpdCwgc3RydWN0IGFtZGdwdV9tbl9ub2RlLCBpdCk7DQo+IC0JCWl0ID0gaW50ZXJ2YWxfdHJl ZV9pdGVyX25leHQoaXQsIHN0YXJ0LCBlbmQpOw0KPiAtDQo+IC0JCWxpc3RfZm9yX2VhY2hfZW50 cnkoYm8sICZub2RlLT5ib3MsIG1uX2xpc3QpIHsNCj4gLQkJCXN0cnVjdCBrZ2RfbWVtICptZW0g PSBiby0+a2ZkX2JvOw0KPiAtDQo+IC0JCQlpZiAoYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0 cihiby0+dGJvLnR0bSwNCj4gLQkJCQkJCQkgc3RhcnQsIGVuZCkpDQo+IC0JCQkJYW1kZ3B1X2Ft ZGtmZF9ldmljdF91c2VycHRyKG1lbSwgYW1uLT5tbSk7DQo+IC0JCX0NCj4gLQl9DQo+IC0NCj4g LQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4gKwlpZiAoIW1tdV9ub3RpZmllcl9yYW5n ZV9ibG9ja2FibGUodXBkYXRlKSkNCj4gKwkJcmV0dXJuIGZhbHNlOw0KPiAgIA0KPiArCWRvd25f cmVhZCgmYW1uLT5sb2NrKTsNCj4gKwl1cF9yZWFkKCZhbW4tPmxvY2spOw0KPiAgIAlyZXR1cm4g MDsNCj4gICB9DQo+ICAgDQo+IEBAIC0yOTUsMTIgKzE2NCwxMCBAQCBhbWRncHVfbW5fc3luY19w YWdldGFibGVzX2hzYShzdHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAgIA0KPiAgIHN0YXRp YyBzdHJ1Y3QgaG1tX21pcnJvcl9vcHMgYW1kZ3B1X2htbV9taXJyb3Jfb3BzW10gPSB7DQo+ICAg CVtBTURHUFVfTU5fVFlQRV9HRlhdID0gew0KPiAtCQkuc3luY19jcHVfZGV2aWNlX3BhZ2V0YWJs ZXMgPSBhbWRncHVfbW5fc3luY19wYWdldGFibGVzX2dmeCwNCj4gLQkJLnJlbGVhc2UgPSBhbWRn cHVfaG1tX21pcnJvcl9yZWxlYXNlDQo+ICsJCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9 IGFtZGdwdV9tbl9zeW5jX3BhZ2V0YWJsZXMsDQo+ICAgCX0sDQo+ICAgCVtBTURHUFVfTU5fVFlQ RV9IU0FdID0gew0KPiAtCQkuc3luY19jcHVfZGV2aWNlX3BhZ2V0YWJsZXMgPSBhbWRncHVfbW5f c3luY19wYWdldGFibGVzX2hzYSwNCj4gLQkJLnJlbGVhc2UgPSBhbWRncHVfaG1tX21pcnJvcl9y ZWxlYXNlDQo+ICsJCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9IGFtZGdwdV9tbl9zeW5j X3BhZ2V0YWJsZXMsDQo+ICAgCX0sDQo+ICAgfTsNCj4gICANCj4gQEAgLTMyNyw3ICsxOTQsOCBA QCBzdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LA0KPiAgIAl9DQo+ICAgDQo+ICAgCWhhc2hfZm9yX2VhY2hfcG9zc2libGUoYWRldi0+bW5f aGFzaCwgYW1uLCBub2RlLCBrZXkpDQo+IC0JCWlmIChBTURHUFVfTU5fS0VZKGFtbi0+bW0sIGFt bi0+dHlwZSkgPT0ga2V5KQ0KPiArCQlpZiAoQU1ER1BVX01OX0tFWShhbW4tPm1pcnJvci5obW0t Pm1tdV9ub3RpZmllci5tbSwNCj4gKwkJCQkgIGFtbi0+dHlwZSkgPT0ga2V5KQ0KPiAgIAkJCWdv dG8gcmVsZWFzZV9sb2NrczsNCj4gICANCj4gICAJYW1uID0ga3phbGxvYyhzaXplb2YoKmFtbiks IEdGUF9LRVJORUwpOw0KPiBAQCAtMzM3LDEwICsyMDUsOCBAQCBzdHJ1Y3QgYW1kZ3B1X21uICph bWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgIAl9DQo+ICAgDQo+ ICAgCWFtbi0+YWRldiA9IGFkZXY7DQo+IC0JYW1uLT5tbSA9IG1tOw0KPiAgIAlpbml0X3J3c2Vt KCZhbW4tPmxvY2spOw0KPiAgIAlhbW4tPnR5cGUgPSB0eXBlOw0KPiAtCWFtbi0+b2JqZWN0cyA9 IFJCX1JPT1RfQ0FDSEVEOw0KPiAgIA0KPiAgIAlhbW4tPm1pcnJvci5vcHMgPSAmYW1kZ3B1X2ht bV9taXJyb3Jfb3BzW3R5cGVdOw0KPiAgIAlyID0gaG1tX21pcnJvcl9yZWdpc3RlcigmYW1uLT5t aXJyb3IsIG1tKTsNCj4gQEAgLTM2OSwxMDAgKzIzNSwzMyBAQCBzdHJ1Y3QgYW1kZ3B1X21uICph bWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgICAqIEBibzogYW1k Z3B1IGJ1ZmZlciBvYmplY3QNCj4gICAgKiBAYWRkcjogdXNlcnB0ciBhZGRyIHdlIHNob3VsZCBt b25pdG9yDQo+ICAgICoNCj4gLSAqIFJlZ2lzdGVycyBhbiBITU0gbWlycm9yIGZvciB0aGUgZ2l2 ZW4gQk8gYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLg0KPiArICogUmVnaXN0ZXJzIGEgbW11X25v dGlmaWVyIGZvciB0aGUgZ2l2ZW4gQk8gYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLg0KPiAgICAq IFJldHVybnMgMCBvbiBzdWNjZXNzLCAtRVJSTk8gaWYgYW55dGhpbmcgZ29lcyB3cm9uZy4NCj4g ICAgKi8NCj4gICBpbnQgYW1kZ3B1X21uX3JlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvLCB1 bnNpZ25lZCBsb25nIGFkZHIpDQo+ICAgew0KPiAtCXVuc2lnbmVkIGxvbmcgZW5kID0gYWRkciAr IGFtZGdwdV9ib19zaXplKGJvKSAtIDE7DQo+IC0Jc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSBhbWRncHVfdHRtX2FkZXYoYm8tPnRiby5iZGV2KTsNCj4gLQllbnVtIGFtZGdwdV9tbl90eXBl IHR5cGUgPQ0KPiAtCQliby0+a2ZkX2JvID8gQU1ER1BVX01OX1RZUEVfSFNBIDogQU1ER1BVX01O X1RZUEVfR0ZYOw0KPiAtCXN0cnVjdCBhbWRncHVfbW4gKmFtbjsNCj4gLQlzdHJ1Y3QgYW1kZ3B1 X21uX25vZGUgKm5vZGUgPSBOVUxMLCAqbmV3X25vZGU7DQo+IC0Jc3RydWN0IGxpc3RfaGVhZCBi b3M7DQo+IC0Jc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7DQo+IC0NCj4gLQlhbW4gPSBh bWRncHVfbW5fZ2V0KGFkZXYsIHR5cGUpOw0KPiAtCWlmIChJU19FUlIoYW1uKSkNCj4gLQkJcmV0 dXJuIFBUUl9FUlIoYW1uKTsNCj4gLQ0KPiAtCW5ld19ub2RlID0ga21hbGxvYyhzaXplb2YoKm5l d19ub2RlKSwgR0ZQX0tFUk5FTCk7DQo+IC0JaWYgKCFuZXdfbm9kZSkNCj4gLQkJcmV0dXJuIC1F Tk9NRU07DQo+IC0NCj4gLQlJTklUX0xJU1RfSEVBRCgmYm9zKTsNCj4gLQ0KPiAtCWRvd25fd3Jp dGUoJmFtbi0+bG9jayk7DQo+IC0NCj4gLQl3aGlsZSAoKGl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVy X2ZpcnN0KCZhbW4tPm9iamVjdHMsIGFkZHIsIGVuZCkpKSB7DQo+IC0JCWtmcmVlKG5vZGUpOw0K PiAtCQlub2RlID0gY29udGFpbmVyX29mKGl0LCBzdHJ1Y3QgYW1kZ3B1X21uX25vZGUsIGl0KTsN Cj4gLQkJaW50ZXJ2YWxfdHJlZV9yZW1vdmUoJm5vZGUtPml0LCAmYW1uLT5vYmplY3RzKTsNCj4g LQkJYWRkciA9IG1pbihpdC0+c3RhcnQsIGFkZHIpOw0KPiAtCQllbmQgPSBtYXgoaXQtPmxhc3Qs IGVuZCk7DQo+IC0JCWxpc3Rfc3BsaWNlKCZub2RlLT5ib3MsICZib3MpOw0KPiAtCX0NCj4gLQ0K PiAtCWlmICghbm9kZSkNCj4gLQkJbm9kZSA9IG5ld19ub2RlOw0KPiArCWlmIChiby0+a2ZkX2Jv KQ0KPiArCQliby0+bm90aWZpZXIub3BzID0gJmFtZGdwdV9tbl9oc2Ffb3BzOw0KPiAgIAllbHNl DQo+IC0JCWtmcmVlKG5ld19ub2RlKTsNCj4gLQ0KPiAtCWJvLT5tbiA9IGFtbjsNCj4gLQ0KPiAt CW5vZGUtPml0LnN0YXJ0ID0gYWRkcjsNCj4gLQlub2RlLT5pdC5sYXN0ID0gZW5kOw0KPiAtCUlO SVRfTElTVF9IRUFEKCZub2RlLT5ib3MpOw0KPiAtCWxpc3Rfc3BsaWNlKCZib3MsICZub2RlLT5i b3MpOw0KPiAtCWxpc3RfYWRkKCZiby0+bW5fbGlzdCwgJm5vZGUtPmJvcyk7DQo+ICsJCWJvLT5u b3RpZmllci5vcHMgPSAmYW1kZ3B1X21uX2dmeF9vcHM7DQo+ICAgDQo+IC0JaW50ZXJ2YWxfdHJl ZV9pbnNlcnQoJm5vZGUtPml0LCAmYW1uLT5vYmplY3RzKTsNCj4gLQ0KPiAtCXVwX3dyaXRlKCZh bW4tPmxvY2spOw0KPiAtDQo+IC0JcmV0dXJuIDA7DQo+ICsJcmV0dXJuIG1tdV9yYW5nZV9ub3Rp Zmllcl9pbnNlcnQoJmJvLT5ub3RpZmllciwgYWRkciwNCj4gKwkJCQkJIGFtZGdwdV9ib19zaXpl KGJvKSwgY3VycmVudC0+bW0pOw0KPiAgIH0NCj4gICANCj4gICAvKioNCj4gLSAqIGFtZGdwdV9t bl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBhIEJPIGZvciBITU0gbWlycm9yIHVwZGF0ZXMNCj4g KyAqIGFtZGdwdV9tbl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBhIEJPIGZvciBub3RpZmllciB1 cGRhdGVzDQo+ICAgICoNCj4gICAgKiBAYm86IGFtZGdwdSBidWZmZXIgb2JqZWN0DQo+ICAgICoN Cj4gLSAqIFJlbW92ZSBhbnkgcmVnaXN0cmF0aW9uIG9mIEhNTSBtaXJyb3IgdXBkYXRlcyBmcm9t IHRoZSBidWZmZXIgb2JqZWN0Lg0KPiArICogUmVtb3ZlIGFueSByZWdpc3RyYXRpb24gb2YgbW11 IG5vdGlmaWVyIHVwZGF0ZXMgZnJvbSB0aGUgYnVmZmVyIG9iamVjdC4NCj4gICAgKi8NCj4gICB2 b2lkIGFtZGdwdV9tbl91bnJlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvKQ0KPiAgIHsNCj4g LQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJk ZXYpOw0KPiAtCXN0cnVjdCBhbWRncHVfbW4gKmFtbjsNCj4gLQlzdHJ1Y3QgbGlzdF9oZWFkICpo ZWFkOw0KPiAtDQo+IC0JbXV0ZXhfbG9jaygmYWRldi0+bW5fbG9jayk7DQo+IC0NCj4gLQlhbW4g PSBiby0+bW47DQo+IC0JaWYgKGFtbiA9PSBOVUxMKSB7DQo+IC0JCW11dGV4X3VubG9jaygmYWRl di0+bW5fbG9jayk7DQo+ICsJaWYgKCFiby0+bm90aWZpZXIubW0pDQo+ICAgCQlyZXR1cm47DQo+ IC0JfQ0KPiAtDQo+IC0JZG93bl93cml0ZSgmYW1uLT5sb2NrKTsNCj4gLQ0KPiAtCS8qIHNhdmUg dGhlIG5leHQgbGlzdCBlbnRyeSBmb3IgbGF0ZXIgKi8NCj4gLQloZWFkID0gYm8tPm1uX2xpc3Qu bmV4dDsNCj4gLQ0KPiAtCWJvLT5tbiA9IE5VTEw7DQo+IC0JbGlzdF9kZWxfaW5pdCgmYm8tPm1u X2xpc3QpOw0KPiAtDQo+IC0JaWYgKGxpc3RfZW1wdHkoaGVhZCkpIHsNCj4gLQkJc3RydWN0IGFt ZGdwdV9tbl9ub2RlICpub2RlOw0KPiAtDQo+IC0JCW5vZGUgPSBjb250YWluZXJfb2YoaGVhZCwg c3RydWN0IGFtZGdwdV9tbl9ub2RlLCBib3MpOw0KPiAtCQlpbnRlcnZhbF90cmVlX3JlbW92ZSgm bm9kZS0+aXQsICZhbW4tPm9iamVjdHMpOw0KPiAtCQlrZnJlZShub2RlKTsNCj4gLQl9DQo+IC0N Cj4gLQl1cF93cml0ZSgmYW1uLT5sb2NrKTsNCj4gLQltdXRleF91bmxvY2soJmFkZXYtPm1uX2xv Y2spOw0KPiArCW1tdV9yYW5nZV9ub3RpZmllcl9yZW1vdmUoJmJvLT5ub3RpZmllcik7DQo+ICsJ Ym8tPm5vdGlmaWVyLm1tID0gTlVMTDsNCj4gICB9DQo+ICAgDQo+ICAgLyogZmxhZ3MgdXNlZCBi eSBITU0gaW50ZXJuYWwsIG5vdCByZWxhdGVkIHRvIENQVS9HUFUgUFRFIGZsYWdzICovDQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uaCBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oDQo+IGluZGV4IGI4ZWQ2ODk0MzYyNWMy Li5kNzNhYjI5NDdiMjJiMiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X21uLmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X21uLmgNCj4gQEAgLTM5LDEyICszOSwxMCBAQCBlbnVtIGFtZGdwdV9tbl90eXBlIHsNCj4gICAg KiBzdHJ1Y3QgYW1kZ3B1X21uDQo+ICAgICoNCj4gICAgKiBAYWRldjogYW1kZ3B1IGRldmljZSBw b2ludGVyDQo+IC0gKiBAbW06IHByb2Nlc3MgYWRkcmVzcyBzcGFjZQ0KPiAgICAqIEB0eXBlOiB0 eXBlIG9mIE1NVSBub3RpZmllcg0KPiAgICAqIEB3b3JrOiBkZXN0cnVjdGlvbiB3b3JrIGl0ZW0N Cj4gICAgKiBAbm9kZTogaGFzaCB0YWJsZSBub2RlIHRvIGZpbmQgc3RydWN0dXJlIGJ5IGFkZXYg YW5kIG1uDQo+ICAgICogQGxvY2s6IHJ3IHNlbWFwaG9yZSBwcm90ZWN0aW5nIHRoZSBub3RpZmll ciBub2Rlcw0KPiAtICogQG9iamVjdHM6IGludGVydmFsIHRyZWUgY29udGFpbmluZyBhbWRncHVf bW5fbm9kZXMNCj4gICAgKiBAbWlycm9yOiBITU0gbWlycm9yIGZ1bmN0aW9uIHN1cHBvcnQNCj4g ICAgKg0KPiAgICAqIERhdGEgZm9yIGVhY2ggYW1kZ3B1IGRldmljZSBhbmQgcHJvY2VzcyBhZGRy ZXNzIHNwYWNlLg0KPiBAQCAtNTIsNyArNTAsNiBAQCBlbnVtIGFtZGdwdV9tbl90eXBlIHsNCj4g ICBzdHJ1Y3QgYW1kZ3B1X21uIHsNCj4gICAJLyogY29uc3RhbnQgYWZ0ZXIgaW5pdGlhbGlzYXRp b24gKi8NCj4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2UJKmFkZXY7DQo+IC0Jc3RydWN0IG1tX3N0 cnVjdAkqbW07DQo+ICAgCWVudW0gYW1kZ3B1X21uX3R5cGUJdHlwZTsNCj4gICANCj4gICAJLyog b25seSB1c2VkIG9uIGRlc3RydWN0aW9uICovDQo+IEBAIC02Myw3ICs2MCw2IEBAIHN0cnVjdCBh bWRncHVfbW4gew0KPiAgIA0KPiAgIAkvKiBvYmplY3RzIHByb3RlY3RlZCBieSBsb2NrICovDQo+ ICAgCXN0cnVjdCByd19zZW1hcGhvcmUJbG9jazsNCj4gLQlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQJ b2JqZWN0czsNCj4gICANCj4gICAjaWZkZWYgQ09ORklHX0hNTV9NSVJST1INCj4gICAJLyogSE1N IG1pcnJvciAqLw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5o DQo+IGluZGV4IDY1OGY0Yzk3NzliNzA0Li40YjQ0YWI4NTBmOTRjMiAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oDQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaA0KPiBAQCAtMzAsNiArMzAsOSBA QA0KPiAgIA0KPiAgICNpbmNsdWRlIDxkcm0vYW1kZ3B1X2RybS5oPg0KPiAgICNpbmNsdWRlICJh bWRncHUuaCINCj4gKyNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSDQo+ICsjaW5jbHVkZSA8bGlu dXgvbW11X25vdGlmaWVyLmg+DQo+ICsjZW5kaWYNCj4gICANCj4gICAjZGVmaW5lIEFNREdQVV9C T19JTlZBTElEX09GRlNFVAlMT05HX01BWA0KPiAgICNkZWZpbmUgQU1ER1BVX0JPX01BWF9QTEFD RU1FTlRTCTMNCj4gQEAgLTEwMCwxMCArMTAzLDEyIEBAIHN0cnVjdCBhbWRncHVfYm8gew0KPiAg IAlzdHJ1Y3QgdHRtX2JvX2ttYXBfb2JqCQlkbWFfYnVmX3ZtYXA7DQo+ICAgCXN0cnVjdCBhbWRn cHVfbW4JCSptbjsNCj4gICANCj4gLQl1bmlvbiB7DQo+IC0JCXN0cnVjdCBsaXN0X2hlYWQJbW5f bGlzdDsNCj4gLQkJc3RydWN0IGxpc3RfaGVhZAlzaGFkb3dfbGlzdDsNCj4gLQl9Ow0KPiArDQo+ ICsjaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUg0KPiArCXN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZp ZXIJbm90aWZpZXI7DQo+ICsjZW5kaWYNCj4gKw0KPiArCXN0cnVjdCBsaXN0X2hlYWQJCXNoYWRv d19saXN0Ow0KPiAgIA0KPiAgIAlzdHJ1Y3Qga2dkX21lbSAgICAgICAgICAgICAgICAgICprZmRf Ym87DQo+ICAgfTsNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA== 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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B45AECA9EC4 for ; Tue, 29 Oct 2019 07:51:36 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 93B5020862 for ; Tue, 29 Oct 2019 07:51:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 93B5020862 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 810CF6E105; Tue, 29 Oct 2019 07:51:34 +0000 (UTC) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-eopbgr800045.outbound.protection.outlook.com [40.107.80.45]) by gabe.freedesktop.org (Postfix) with ESMTPS id CE1C46E103; Tue, 29 Oct 2019 07:51:32 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LpHD8kXDawLzYYlbtNIGYrb3STBcIGjvG9LWQfBvX+iudi3VZBE4kJxU8b5tbgqdqG2rTjqo39WBvGpB/KG6FaVOyk10VtIGyfsmw4TWad2Xq8Uizo/UtiyrVG9ydb7tuTzZcqSLonIx6+j8Z5b4yG4M48zd8pP2MBZmToxLXSHs8RlNK1ov0G7fWEjqj8m9En69dAXY3bH4Qpts0eM+lLZGb0uyb8GpGUpZdRcNybP0MLllxKEU9AKep+HLHJuVh5rkEoAGx7MhpkZOUwWp1xHSQVJh9YeRLPSQSV8qpRfp9/3RfU8RzhJDOZA/jtSZDYZsEnPAlwZAnjLJ+CbrMg== 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=6ysSG8t97ZyDK9Ea8UVc2JBJ/dZ1dmCFNOEvFizqCic=; b=Bk1pqF1001iUl/CtDvY0LV56bI8VbewwIG/b6kL66bkRSz+k9nVNais4XkDxaIT7d2BrmgrmTUMZkaPwhRFUogEWXs/BQC3V+2LeGEctFGOxxGhYkJjNMUsjRP0ne/b6+ecX8UiYVxe0wkWiwM3XrFNKwgpygVcx9crOZX2hkg2EHNPsdzgMom3fOdDHIhGp+Y6VjwJfkZh1W8MKVNHt878i3GAUrauq4O4i8Rb6GvJbzcE/uUqKN3xLDi5qxD6OkeONk3AO489NvVTdT/evKFwzPdbI6uiWBCUeuZbYr+vF8xWr1zdYB4/6hJWgbSFwmaNd9L9ADhqHj9AG7SkkdA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none Received: from BN6PR12MB1699.namprd12.prod.outlook.com (10.175.97.148) by BN6PR12MB1281.namprd12.prod.outlook.com (10.168.226.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.25; Tue, 29 Oct 2019 07:51:30 +0000 Received: from BN6PR12MB1699.namprd12.prod.outlook.com ([fe80::68e1:ddf5:df4c:b554]) by BN6PR12MB1699.namprd12.prod.outlook.com ([fe80::68e1:ddf5:df4c:b554%9]) with mapi id 15.20.2387.025; Tue, 29 Oct 2019 07:51:30 +0000 From: "Koenig, Christian" To: Jason Gunthorpe , "linux-mm@kvack.org" , Jerome Glisse , Ralph Campbell , John Hubbard , "Kuehling, Felix" Subject: Re: [PATCH v2 13/15] drm/amdgpu: Use mmu_range_insert instead of hmm_mirror Thread-Topic: [PATCH v2 13/15] drm/amdgpu: Use mmu_range_insert instead of hmm_mirror Thread-Index: AQHVjc1AranX4zytZkWJZeF308H7IKdxP7aA Date: Tue, 29 Oct 2019 07:51:30 +0000 Message-ID: References: <20191028201032.6352-1-jgg@ziepe.ca> <20191028201032.6352-14-jgg@ziepe.ca> In-Reply-To: <20191028201032.6352-14-jgg@ziepe.ca> Accept-Language: de-DE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 x-originating-ip: [2a02:908:1252:fb60:be8a:bd56:1f94:86e7] x-clientproxiedby: AM0PR10CA0036.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:150::16) To BN6PR12MB1699.namprd12.prod.outlook.com (2603:10b6:404:ff::20) x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 86ac308d-4333-41a0-06d5-08d75c44cf72 x-ms-traffictypediagnostic: BN6PR12MB1281: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4941; x-forefront-prvs: 0205EDCD76 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(136003)(366004)(376002)(346002)(396003)(199004)(189003)(186003)(2501003)(305945005)(66556008)(66446008)(316002)(64756008)(14444005)(66476007)(5024004)(6436002)(66946007)(110136005)(8936002)(256004)(4326008)(478600001)(6246003)(65956001)(31696002)(65806001)(14454004)(71200400001)(54906003)(58126008)(71190400001)(2906002)(486006)(476003)(31686004)(6512007)(36756003)(81166006)(6116002)(66574012)(11346002)(8676002)(7416002)(46003)(86362001)(7736002)(76176011)(386003)(52116002)(102836004)(229853002)(446003)(99286004)(6486002)(5660300002)(2616005)(30864003)(6636002)(81156014)(25786009)(6506007); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR12MB1281; H:BN6PR12MB1699.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DaQCjlvFxN7F5UH5XfeWiXpPvUImLcW0Sm71ujV/9hgKP3VFXWXAKS8FyZ3VIRCfRy7kOHP1wfBIElx1iqIYntZrRQdhETcO+wGBjaZR66bXkoOW6pshtaMMv8qW7KRsfvKbWdhGyNLDdvYSD52MzR/y0BGTotBn2u/CNtxIPZPL3FCLPbxtGra6rj9GLN/huFcx1aF0m5kzwJmfB9PqFjN6TdOPt+6cDXrWFjlGCX/TwiMNUZr3XELkdqlsrs0KqFBuMMXpYW7QJsqWDDJUdmwtR7NZbT2UlWvbhFEjcJQmhSQSdO5gZvGlKf158OJYLdAn7NZsSbq/CcqOzGBlvV6LAuHkqz9hoAY4QMrooj1gcQZfwcEr40olPZ4GzneV2MgiTT0uKwahJuYXJ/K/3nMOP62c2r3S3UnhPMrwSSCCjA05CYtD3AJ33DymV7iV Content-ID: MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86ac308d-4333-41a0-06d5-08d75c44cf72 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2019 07:51:30.6921 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ai4m8Ncn3A4KFW1TwGTokn2nYSqsLCz2G2whEg6R4IGlO4nBoOBagkn4wUe7U2kq X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1281 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6ysSG8t97ZyDK9Ea8UVc2JBJ/dZ1dmCFNOEvFizqCic=; b=yhjUgk+9eg492W1asLz0pO/QJUTNRo4+gtdZmfPANSG56ir17tjElpbV9AuPCrxu9QleGUQew75h9HWVwY0qZbz6Sea0+u9Gdu10S2eoRrgxClyHjortSCJHMch6pJDbRQKFOAKuwVFi5VxUZAlfzG1b6/QYDXRhwTer5gOjuPo= X-Mailman-Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Christian.Koenig@amd.com; X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , "Zhou, David\(ChunMing\)" , Mike Marciniszyn , Stefano Stabellini , Oleksandr Andrushchenko , "linux-rdma@vger.kernel.org" , "nouveau@lists.freedesktop.org" , Dennis Dalessandro , "amd-gfx@lists.freedesktop.org" , Christoph Hellwig , Jason Gunthorpe , "dri-devel@lists.freedesktop.org" , "Deucher, Alexander" , "xen-devel@lists.xenproject.org" , Boris Ostrovsky , Petr Cvek , Ben Skeggs Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" Message-ID: <20191029075130.eiZCHaVV-l6Lp2HKoPH9P2hyqaSpGr1wNaCTUkaQMYo@z> QW0gMjguMTAuMTkgdW0gMjE6MTAgc2NocmllYiBKYXNvbiBHdW50aG9ycGU6DQo+IEZyb206IEph c29uIEd1bnRob3JwZSA8amdnQG1lbGxhbm94LmNvbT4NCj4NCj4gUmVtb3ZlIHRoZSBpbnRlcnZh bCB0cmVlIGluIHRoZSBkcml2ZXIgYW5kIHJlbHkgb24gdGhlIHRyZWUgbWFpbnRhaW5lZCBieQ0K PiB0aGUgbW11X25vdGlmaWVyIGZvciBkZWxpdmVyaW5nIG1tdV9ub3RpZmllciBpbnZhbGlkYXRp b24gY2FsbGJhY2tzLg0KPg0KPiBGb3Igc29tZSByZWFzb24gYW1kZ3B1IGhhcyBhIHZlcnkgY29t cGxpY2F0ZWQgYXJyYW5nZW1lbnQgd2hlcmUgaXQgdHJpZXMNCj4gdG8gcHJldmVudCBkdXBsaWNh dGUgZW50cmllcyBpbiB0aGUgaW50ZXJ2YWxfdHJlZSwgdGhpcyBpcyBub3QgbmVjZXNzYXJ5LA0K PiBlYWNoIGFtZGdwdV9ibyBjYW4gYmUgaXRzIG93biBzdGFuZCBhbG9uZSBlbnRyeS4gaW50ZXJ2 YWxfdHJlZSBhbHJlYWR5DQo+IGFsbG93cyBkdXBsaWNhdGVzIGFuZCBvdmVybGFwcyBpbiB0aGUg dHJlZS4NCj4NCj4gQWxzbywgdGhlcmUgaXMgbm8gbmVlZCB0byByZW1vdmUgZW50cmllcyB1cG9u IGEgcmVsZWFzZSBjYWxsYmFjaywgdGhlDQo+IG1tdV9yYW5nZSBBUEkgc2FmZWx5IGFsbG93cyBv YmplY3RzIHRvIHJlbWFpbiByZWdpc3RlcmVkIGJleW9uZCB0aGUNCj4gbGlmZXRpbWUgb2YgdGhl IG1tLiBUaGUgZHJpdmVyIG9ubHkgaGFzIHRvIHN0b3AgdG91Y2hpbmcgdGhlIHBhZ2VzIGR1cmlu Zw0KPiByZWxlYXNlLg0KPg0KPiBDYzogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBh bWQuY29tPg0KPiBDYzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t Pg0KPiBDYzogRGF2aWQgKENodW5NaW5nKSBaaG91IDxEYXZpZDEuWmhvdUBhbWQuY29tPg0KPiBD YzogYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gU2lnbmVkLW9mZi1ieTogSmFzb24g R3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPg0KPiAtLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHUuaCAgICAgICAgICAgfCAgIDIgKw0KPiAgIC4uLi9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jICB8ICAgNSArLQ0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyAgICB8ICAgMSArDQo+ICAgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgICAgICAgIHwgMzQxICsrKystLS0tLS0tLS0t LS0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oICAgICAgICB8 ICAgNCAtDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oICAg IHwgIDEzICstDQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAyODIgZGVs ZXRpb25zKC0pDQo+DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oDQo+IGluZGV4IGJk MzdkZjVkZDZkMDQ4Li42MDU5MWE1ZDQyMDAyMSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1LmgNCj4gQEAgLTEwMDYsNiArMTAwNiw4IEBAIHN0cnVjdCBhbWRncHVfZGV2aWNl IHsNCj4gICAJc3RydWN0IG11dGV4ICBsb2NrX3Jlc2V0Ow0KPiAgIAlzdHJ1Y3QgYW1kZ3B1X2Rv b3JiZWxsX2luZGV4IGRvb3JiZWxsX2luZGV4Ow0KPiAgIA0KPiArCXN0cnVjdCBtdXRleAkJCW5v dGlmaWVyX2xvY2s7DQo+ICsNCj4gICAJaW50IGFzaWNfcmVzZXRfcmVzOw0KPiAgIAlzdHJ1Y3Qg d29ya19zdHJ1Y3QJCXhnbWlfcmVzZXRfd29yazsNCj4gICANCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYw0KPiBpbmRleCA2ZDAyMWVjYzhk NTk4Zi4uNDc3MDAzMDJhMDhiN2YgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMNCj4gQEAgLTQ4MSw4ICs0ODEsNyBAQCBzdGF0 aWMgdm9pZCByZW1vdmVfa2dkX21lbV9mcm9tX2tmZF9ib19saXN0KHN0cnVjdCBrZ2RfbWVtICpt ZW0sDQo+ICAgICoNCj4gICAgKiBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5v IGZvciBlcnJvcnMuDQo+ICAgICovDQo+IC1zdGF0aWMgaW50IGluaXRfdXNlcl9wYWdlcyhzdHJ1 Y3Qga2dkX21lbSAqbWVtLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwNCj4gLQkJCSAgIHVpbnQ2NF90 IHVzZXJfYWRkcikNCj4gK3N0YXRpYyBpbnQgaW5pdF91c2VyX3BhZ2VzKHN0cnVjdCBrZ2RfbWVt ICptZW0sIHVpbnQ2NF90IHVzZXJfYWRkcikNCj4gICB7DQo+ICAgCXN0cnVjdCBhbWRrZmRfcHJv Y2Vzc19pbmZvICpwcm9jZXNzX2luZm8gPSBtZW0tPnByb2Nlc3NfaW5mbzsNCj4gICAJc3RydWN0 IGFtZGdwdV9ibyAqYm8gPSBtZW0tPmJvOw0KPiBAQCAtMTE5NSw3ICsxMTk0LDcgQEAgaW50IGFt ZGdwdV9hbWRrZmRfZ3B1dm1fYWxsb2NfbWVtb3J5X29mX2dwdSgNCj4gICAJYWRkX2tnZF9tZW1f dG9fa2ZkX2JvX2xpc3QoKm1lbSwgYXZtLT5wcm9jZXNzX2luZm8sIHVzZXJfYWRkcik7DQo+ICAg DQo+ICAgCWlmICh1c2VyX2FkZHIpIHsNCj4gLQkJcmV0ID0gaW5pdF91c2VyX3BhZ2VzKCptZW0s IGN1cnJlbnQtPm1tLCB1c2VyX2FkZHIpOw0KPiArCQlyZXQgPSBpbml0X3VzZXJfcGFnZXMoKm1l bSwgdXNlcl9hZGRyKTsNCj4gICAJCWlmIChyZXQpDQo+ICAgCQkJZ290byBhbGxvY2F0ZV9pbml0 X3VzZXJfcGFnZXNfZmFpbGVkOw0KPiAgIAl9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZGV2aWNlLmMNCj4gaW5kZXggNWExOTM5ZGJkNGUzZTYuLjM4Zjk3OTk4YWFkZGIy IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNl LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jDQo+ IEBAIC0yNjMzLDYgKzI2MzMsNyBAQCBpbnQgYW1kZ3B1X2RldmljZV9pbml0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LA0KPiAgIAltdXRleF9pbml0KCZhZGV2LT52aXJ0LnZmX2Vycm9ycy5s b2NrKTsNCj4gICAJaGFzaF9pbml0KGFkZXYtPm1uX2hhc2gpOw0KPiAgIAltdXRleF9pbml0KCZh ZGV2LT5sb2NrX3Jlc2V0KTsNCj4gKwltdXRleF9pbml0KCZhZGV2LT5ub3RpZmllcl9sb2NrKTsN Cj4gICAJbXV0ZXhfaW5pdCgmYWRldi0+dmlydC5kcG1fbXV0ZXgpOw0KPiAgIAltdXRleF9pbml0 KCZhZGV2LT5wc3AubXV0ZXgpOw0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfbW4uYw0KPiBpbmRleCAzMWQ0ZGViNWQyOTQ4NC4uNGZmZDdiOTBmNGQ5MDcgMTAwNjQ0DQo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQo+IEBAIC01MCw2NiArNTAsNiBA QA0KPiAgICNpbmNsdWRlICJhbWRncHUuaCINCj4gICAjaW5jbHVkZSAiYW1kZ3B1X2FtZGtmZC5o Ig0KPiAgIA0KPiAtLyoqDQo+IC0gKiBzdHJ1Y3QgYW1kZ3B1X21uX25vZGUNCj4gLSAqDQo+IC0g KiBAaXQ6IGludGVydmFsIG5vZGUgZGVmaW5pbmcgc3RhcnQtbGFzdCBvZiB0aGUgYWZmZWN0ZWQg YWRkcmVzcyByYW5nZQ0KPiAtICogQGJvczogbGlzdCBvZiBhbGwgQk9zIGluIHRoZSBhZmZlY3Rl ZCBhZGRyZXNzIHJhbmdlDQo+IC0gKg0KPiAtICogTWFuYWdlcyBhbGwgQk9zIHdoaWNoIGFyZSBh ZmZlY3RlZCBvZiBhIGNlcnRhaW4gcmFuZ2Ugb2YgYWRkcmVzcyBzcGFjZS4NCj4gLSAqLw0KPiAt c3RydWN0IGFtZGdwdV9tbl9ub2RlIHsNCj4gLQlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlCWl0 Ow0KPiAtCXN0cnVjdCBsaXN0X2hlYWQJCWJvczsNCj4gLX07DQo+IC0NCj4gLS8qKg0KPiAtICog YW1kZ3B1X21uX2Rlc3Ryb3kgLSBkZXN0cm95IHRoZSBITU0gbWlycm9yDQo+IC0gKg0KPiAtICog QHdvcms6IHByZXZpb3VzbHkgc2hlZHVsZWQgd29yayBpdGVtDQo+IC0gKg0KPiAtICogTGF6eSBk ZXN0cm95cyB0aGUgbm90aWZpZXIgZnJvbSBhIHdvcmsgaXRlbQ0KPiAtICovDQo+IC1zdGF0aWMg dm9pZCBhbWRncHVfbW5fZGVzdHJveShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+IC17DQo+ IC0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhbWRn cHVfbW4sIHdvcmspOw0KPiAtCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gYW1uLT5hZGV2 Ow0KPiAtCXN0cnVjdCBhbWRncHVfbW5fbm9kZSAqbm9kZSwgKm5leHRfbm9kZTsNCj4gLQlzdHJ1 Y3QgYW1kZ3B1X2JvICpibywgKm5leHRfYm87DQo+IC0NCj4gLQltdXRleF9sb2NrKCZhZGV2LT5t bl9sb2NrKTsNCj4gLQlkb3duX3dyaXRlKCZhbW4tPmxvY2spOw0KPiAtCWhhc2hfZGVsKCZhbW4t Pm5vZGUpOw0KPiAtCXJidHJlZV9wb3N0b3JkZXJfZm9yX2VhY2hfZW50cnlfc2FmZShub2RlLCBu ZXh0X25vZGUsDQo+IC0JCQkJCSAgICAgJmFtbi0+b2JqZWN0cy5yYl9yb290LCBpdC5yYikgew0K PiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYm8sIG5leHRfYm8sICZub2RlLT5ib3MsIG1u X2xpc3QpIHsNCj4gLQkJCWJvLT5tbiA9IE5VTEw7DQo+IC0JCQlsaXN0X2RlbF9pbml0KCZiby0+ bW5fbGlzdCk7DQo+IC0JCX0NCj4gLQkJa2ZyZWUobm9kZSk7DQo+IC0JfQ0KPiAtCXVwX3dyaXRl KCZhbW4tPmxvY2spOw0KPiAtCW11dGV4X3VubG9jaygmYWRldi0+bW5fbG9jayk7DQo+IC0NCj4g LQlobW1fbWlycm9yX3VucmVnaXN0ZXIoJmFtbi0+bWlycm9yKTsNCj4gLQlrZnJlZShhbW4pOw0K PiAtfQ0KPiAtDQo+IC0vKioNCj4gLSAqIGFtZGdwdV9obW1fbWlycm9yX3JlbGVhc2UgLSBjYWxs YmFjayB0byBub3RpZnkgYWJvdXQgbW0gZGVzdHJ1Y3Rpb24NCj4gLSAqDQo+IC0gKiBAbWlycm9y OiB0aGUgSE1NIG1pcnJvciAobW0pIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQNCj4gLSAqDQo+IC0g KiBTaGVkdWxlIGEgd29yayBpdGVtIHRvIGxhenkgZGVzdHJveSBITU0gbWlycm9yLg0KPiAtICov DQo+IC1zdGF0aWMgdm9pZCBhbWRncHVfaG1tX21pcnJvcl9yZWxlYXNlKHN0cnVjdCBobW1fbWly cm9yICptaXJyb3IpDQo+IC17DQo+IC0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVy X29mKG1pcnJvciwgc3RydWN0IGFtZGdwdV9tbiwgbWlycm9yKTsNCj4gLQ0KPiAtCUlOSVRfV09S SygmYW1uLT53b3JrLCBhbWRncHVfbW5fZGVzdHJveSk7DQo+IC0Jc2NoZWR1bGVfd29yaygmYW1u LT53b3JrKTsNCj4gLX0NCj4gLQ0KPiAgIC8qKg0KPiAgICAqIGFtZGdwdV9tbl9sb2NrIC0gdGFr ZSB0aGUgd3JpdGUgc2lkZSBsb2NrIGZvciB0aGlzIG5vdGlmaWVyDQo+ICAgICoNCj4gQEAgLTEz MywxNTcgKzczLDg2IEBAIHZvaWQgYW1kZ3B1X21uX3VubG9jayhzdHJ1Y3QgYW1kZ3B1X21uICpt bikNCj4gICB9DQo+ICAgDQo+ICAgLyoqDQo+IC0gKiBhbWRncHVfbW5fcmVhZF9sb2NrIC0gdGFr ZSB0aGUgcmVhZCBzaWRlIGxvY2sgZm9yIHRoaXMgbm90aWZpZXINCj4gLSAqDQo+IC0gKiBAYW1u OiBvdXIgbm90aWZpZXINCj4gLSAqLw0KPiAtc3RhdGljIGludCBhbWRncHVfbW5fcmVhZF9sb2Nr KHN0cnVjdCBhbWRncHVfbW4gKmFtbiwgYm9vbCBibG9ja2FibGUpDQo+IC17DQo+IC0JaWYgKGJs b2NrYWJsZSkNCj4gLQkJZG93bl9yZWFkKCZhbW4tPmxvY2spOw0KPiAtCWVsc2UgaWYgKCFkb3du X3JlYWRfdHJ5bG9jaygmYW1uLT5sb2NrKSkNCj4gLQkJcmV0dXJuIC1FQUdBSU47DQo+IC0NCj4g LQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtLyoqDQo+IC0gKiBhbWRncHVfbW5fcmVhZF91bmxv Y2sgLSBkcm9wIHRoZSByZWFkIHNpZGUgbG9jayBmb3IgdGhpcyBub3RpZmllcg0KPiAtICoNCj4g LSAqIEBhbW46IG91ciBub3RpZmllcg0KPiAtICovDQo+IC1zdGF0aWMgdm9pZCBhbWRncHVfbW5f cmVhZF91bmxvY2soc3RydWN0IGFtZGdwdV9tbiAqYW1uKQ0KPiAtew0KPiAtCXVwX3JlYWQoJmFt bi0+bG9jayk7DQo+IC19DQo+IC0NCj4gLS8qKg0KPiAtICogYW1kZ3B1X21uX2ludmFsaWRhdGVf bm9kZSAtIHVubWFwIGFsbCBCT3Mgb2YgYSBub2RlDQo+ICsgKiBhbWRncHVfbW5faW52YWxpZGF0 ZV9nZnggLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlDQo+ICAgICoNCj4gLSAq IEBub2RlOiB0aGUgbm9kZSB3aXRoIHRoZSBCT3MgdG8gdW5tYXANCj4gLSAqIEBzdGFydDogc3Rh cnQgb2YgYWRkcmVzcyByYW5nZSBhZmZlY3RlZA0KPiAtICogQGVuZDogZW5kIG9mIGFkZHJlc3Mg cmFuZ2UgYWZmZWN0ZWQNCj4gKyAqIEBtcm46IHRoZSByYW5nZSAobW0pIGlzIGFib3V0IHRvIHVw ZGF0ZQ0KPiArICogQHJhbmdlOiBkZXRhaWxzIG9uIHRoZSBpbnZhbGlkYXRpb24NCj4gICAgKg0K PiAgICAqIEJsb2NrIGZvciBvcGVyYXRpb25zIG9uIEJPcyB0byBmaW5pc2ggYW5kIG1hcmsgcGFn ZXMgYXMgYWNjZXNzZWQgYW5kDQo+ICAgICogcG90ZW50aWFsbHkgZGlydHkuDQo+ICAgICovDQo+ IC1zdGF0aWMgdm9pZCBhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlKHN0cnVjdCBhbWRncHVfbW5f bm9kZSAqbm9kZSwNCj4gLQkJCQkgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LA0KPiAtCQkJCSAg ICAgIHVuc2lnbmVkIGxvbmcgZW5kKQ0KPiArc3RhdGljIGJvb2wgYW1kZ3B1X21uX2ludmFsaWRh dGVfZ2Z4KHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwNCj4gKwkJCQkgICAgIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgYW1k Z3B1X2JvICpibzsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2JvICpibyA9IGNvbnRhaW5lcl9vZihtcm4s IHN0cnVjdCBhbWRncHVfYm8sIG5vdGlmaWVyKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJkZXYpOw0KPiAgIAlsb25nIHI7DQo+ICAg DQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShibywgJm5vZGUtPmJvcywgbW5fbGlzdCkgew0KPiAt DQo+IC0JCWlmICghYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwgc3Rh cnQsIGVuZCkpDQo+IC0JCQljb250aW51ZTsNCj4gLQ0KPiAtCQlyID0gZG1hX3Jlc3Zfd2FpdF90 aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwNCj4gLQkJCXRydWUsIGZhbHNlLCBNQVhfU0NI RURVTEVfVElNRU9VVCk7DQo+IC0JCWlmIChyIDw9IDApDQo+IC0JCQlEUk1fRVJST1IoIiglbGQp IGZhaWxlZCB0byB3YWl0IGZvciB1c2VyIGJvXG4iLCByKTsNCj4gLQl9DQo+ICsJLyogRklYTUU6 IElzIHRoaXMgbmVjZXNzYXJ5PyAqLw0KDQpNb3N0IGxpa2VseSBub3QuDQoNCkNocmlzdGlhbi4N Cg0KPiArCWlmICghYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwgcmFu Z2UtPnN0YXJ0LA0KPiArCQkJCQkgIHJhbmdlLT5lbmQpKQ0KPiArCQlyZXR1cm4gdHJ1ZTsNCj4g Kw0KPiArCWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpDQo+ICsJCXJl dHVybiBmYWxzZTsNCj4gKw0KPiArCW11dGV4X2xvY2soJmFkZXYtPm5vdGlmaWVyX2xvY2spOw0K PiArCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KGJvLT50Ym8uYmFzZS5yZXN2LCB0cnVl LCBmYWxzZSwNCj4gKwkJCQkgICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7DQo+ICsJbXV0ZXhf dW5sb2NrKCZhZGV2LT5ub3RpZmllcl9sb2NrKTsNCj4gKwlpZiAociA8PSAwKQ0KPiArCQlEUk1f RVJST1IoIiglbGQpIGZhaWxlZCB0byB3YWl0IGZvciB1c2VyIGJvXG4iLCByKTsNCj4gKwlyZXR1 cm4gdHJ1ZTsNCj4gICB9DQo+ICAgDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9yYW5nZV9u b3RpZmllcl9vcHMgYW1kZ3B1X21uX2dmeF9vcHMgPSB7DQo+ICsJLmludmFsaWRhdGUgPSBhbWRn cHVfbW5faW52YWxpZGF0ZV9nZngsDQo+ICt9Ow0KPiArDQo+ICAgLyoqDQo+IC0gKiBhbWRncHVf bW5fc3luY19wYWdldGFibGVzX2dmeCAtIGNhbGxiYWNrIHRvIG5vdGlmeSBhYm91dCBtbSBjaGFu Z2UNCj4gKyAqIGFtZGdwdV9tbl9pbnZhbGlkYXRlX2hzYSAtIGNhbGxiYWNrIHRvIG5vdGlmeSBh Ym91dCBtbSBjaGFuZ2UNCj4gICAgKg0KPiAtICogQG1pcnJvcjogdGhlIGhtbV9taXJyb3IgKG1t KSBpcyBhYm91dCB0byB1cGRhdGUNCj4gLSAqIEB1cGRhdGU6IHRoZSB1cGRhdGUgc3RhcnQsIGVu ZCBhZGRyZXNzDQo+ICsgKiBAbXJuOiB0aGUgcmFuZ2UgKG1tKSBpcyBhYm91dCB0byB1cGRhdGUN Cj4gKyAqIEByYW5nZTogZGV0YWlscyBvbiB0aGUgaW52YWxpZGF0aW9uDQo+ICAgICoNCj4gLSAq IEJsb2NrIGZvciBvcGVyYXRpb25zIG9uIEJPcyB0byBmaW5pc2ggYW5kIG1hcmsgcGFnZXMgYXMg YWNjZXNzZWQgYW5kDQo+IC0gKiBwb3RlbnRpYWxseSBkaXJ0eS4NCj4gKyAqIFdlIHRlbXBvcmFy aWx5IGV2aWN0IHRoZSBCTyBhdHRhY2hlZCB0byB0aGlzIHJhbmdlLiBUaGlzIG5lY2Vzc2l0YXRl cw0KPiArICogZXZpY3RpbmcgYWxsIHVzZXItbW9kZSBxdWV1ZXMgb2YgdGhlIHByb2Nlc3MuDQo+ ICAgICovDQo+IC1zdGF0aWMgaW50DQo+IC1hbWRncHVfbW5fc3luY19wYWdldGFibGVzX2dmeChz dHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAtCQkJICAgICAgY29uc3Qgc3RydWN0IG1tdV9u b3RpZmllcl9yYW5nZSAqdXBkYXRlKQ0KPiArc3RhdGljIGJvb2wgYW1kZ3B1X21uX2ludmFsaWRh dGVfaHNhKHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwNCj4gKwkJCQkgICAgIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgYW1k Z3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3QgYW1kZ3B1X21uLCBtaXJy b3IpOw0KPiAtCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSB1cGRhdGUtPnN0YXJ0Ow0KPiAtCXVuc2ln bmVkIGxvbmcgZW5kID0gdXBkYXRlLT5lbmQ7DQo+IC0JYm9vbCBibG9ja2FibGUgPSBtbXVfbm90 aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHVwZGF0ZSk7DQo+IC0Jc3RydWN0IGludGVydmFsX3RyZWVf bm9kZSAqaXQ7DQo+IC0NCj4gLQkvKiBub3RpZmljYXRpb24gaXMgZXhjbHVzaXZlLCBidXQgaW50 ZXJ2YWwgaXMgaW5jbHVzaXZlICovDQo+IC0JZW5kIC09IDE7DQo+IC0NCj4gLQkvKiBUT0RPIHdl IHNob3VsZCBiZSBhYmxlIHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kDQo+ IC0JICogYW1kZ3B1X21uX2ludmFsaWRhdGVfbm9kZQ0KPiAtCSAqLw0KPiAtCWlmIChhbWRncHVf bW5fcmVhZF9sb2NrKGFtbiwgYmxvY2thYmxlKSkNCj4gLQkJcmV0dXJuIC1FQUdBSU47DQo+IC0N Cj4gLQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmYW1uLT5vYmplY3RzLCBzdGFydCwg ZW5kKTsNCj4gLQl3aGlsZSAoaXQpIHsNCj4gLQkJc3RydWN0IGFtZGdwdV9tbl9ub2RlICpub2Rl Ow0KPiAtDQo+IC0JCWlmICghYmxvY2thYmxlKSB7DQo+IC0JCQlhbWRncHVfbW5fcmVhZF91bmxv Y2soYW1uKTsNCj4gLQkJCXJldHVybiAtRUFHQUlOOw0KPiAtCQl9DQo+ICsJc3RydWN0IGFtZGdw dV9ibyAqYm8gPSBjb250YWluZXJfb2YobXJuLCBzdHJ1Y3QgYW1kZ3B1X2JvLCBub3RpZmllcik7 DQo+ICsJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBhbWRncHVfdHRtX2FkZXYoYm8tPnRi by5iZGV2KTsNCj4gICANCj4gLQkJbm9kZSA9IGNvbnRhaW5lcl9vZihpdCwgc3RydWN0IGFtZGdw dV9tbl9ub2RlLCBpdCk7DQo+IC0JCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25leHQoaXQsIHN0 YXJ0LCBlbmQpOw0KPiArCS8qIEZJWE1FOiBJcyB0aGlzIG5lY2Vzc2FyeT8gKi8NCj4gKwlpZiAo IWFtZGdwdV90dG1fdHRfYWZmZWN0X3VzZXJwdHIoYm8tPnRiby50dG0sIHJhbmdlLT5zdGFydCwN Cj4gKwkJCQkJICByYW5nZS0+ZW5kKSkNCj4gKwkJcmV0dXJuIHRydWU7DQo+ICAgDQo+IC0JCWFt ZGdwdV9tbl9pbnZhbGlkYXRlX25vZGUobm9kZSwgc3RhcnQsIGVuZCk7DQo+IC0JfQ0KPiArCWlm ICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpDQo+ICsJCXJldHVybiBmYWxz ZTsNCj4gICANCj4gLQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4gKwltdXRleF9sb2Nr KCZhZGV2LT5ub3RpZmllcl9sb2NrKTsNCj4gKwlhbWRncHVfYW1ka2ZkX2V2aWN0X3VzZXJwdHIo Ym8tPmtmZF9ibywgYm8tPm5vdGlmaWVyLm1tKTsNCj4gKwltdXRleF91bmxvY2soJmFkZXYtPm5v dGlmaWVyX2xvY2spOw0KPiAgIA0KPiAtCXJldHVybiAwOw0KPiArCXJldHVybiB0cnVlOw0KPiAg IH0NCj4gICANCj4gLS8qKg0KPiAtICogYW1kZ3B1X21uX3N5bmNfcGFnZXRhYmxlc19oc2EgLSBj YWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlDQo+IC0gKg0KPiAtICogQG1pcnJvcjog dGhlIGhtbV9taXJyb3IgKG1tKSBpcyBhYm91dCB0byB1cGRhdGUNCj4gLSAqIEB1cGRhdGU6IHRo ZSB1cGRhdGUgc3RhcnQsIGVuZCBhZGRyZXNzDQo+IC0gKg0KPiAtICogV2UgdGVtcG9yYXJpbHkg ZXZpY3QgYWxsIEJPcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQuIFRoaXMNCj4gLSAqIG5lY2Vzc2l0 YXRlcyBldmljdGluZyBhbGwgdXNlci1tb2RlIHF1ZXVlcyBvZiB0aGUgcHJvY2Vzcy4gVGhlIEJP cw0KPiAtICogYXJlIHJlc3RvcnRlZCBpbiBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9lbmRf aHNhLg0KPiAtICovDQo+IC1zdGF0aWMgaW50DQo+IC1hbWRncHVfbW5fc3luY19wYWdldGFibGVz X2hzYShzdHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAtCQkJICAgICAgY29uc3Qgc3RydWN0 IG1tdV9ub3RpZmllcl9yYW5nZSAqdXBkYXRlKQ0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVf cmFuZ2Vfbm90aWZpZXJfb3BzIGFtZGdwdV9tbl9oc2Ffb3BzID0gew0KPiArCS5pbnZhbGlkYXRl ID0gYW1kZ3B1X21uX2ludmFsaWRhdGVfaHNhLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGludCBh bWRncHVfbW5fc3luY19wYWdldGFibGVzKHN0cnVjdCBobW1fbWlycm9yICptaXJyb3IsDQo+ICsJ CQkJICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICp1cGRhdGUpDQo+ICAgew0K PiAgIAlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3Qg YW1kZ3B1X21uLCBtaXJyb3IpOw0KPiAtCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSB1cGRhdGUtPnN0 YXJ0Ow0KPiAtCXVuc2lnbmVkIGxvbmcgZW5kID0gdXBkYXRlLT5lbmQ7DQo+IC0JYm9vbCBibG9j a2FibGUgPSBtbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHVwZGF0ZSk7DQo+IC0Jc3RydWN0 IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7DQo+ICAgDQo+IC0JLyogbm90aWZpY2F0aW9uIGlzIGV4 Y2x1c2l2ZSwgYnV0IGludGVydmFsIGlzIGluY2x1c2l2ZSAqLw0KPiAtCWVuZCAtPSAxOw0KPiAt DQo+IC0JaWYgKGFtZGdwdV9tbl9yZWFkX2xvY2soYW1uLCBibG9ja2FibGUpKQ0KPiAtCQlyZXR1 cm4gLUVBR0FJTjsNCj4gLQ0KPiAtCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZhbW4t Pm9iamVjdHMsIHN0YXJ0LCBlbmQpOw0KPiAtCXdoaWxlIChpdCkgew0KPiAtCQlzdHJ1Y3QgYW1k Z3B1X21uX25vZGUgKm5vZGU7DQo+IC0JCXN0cnVjdCBhbWRncHVfYm8gKmJvOw0KPiAtDQo+IC0J CWlmICghYmxvY2thYmxlKSB7DQo+IC0JCQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4g LQkJCXJldHVybiAtRUFHQUlOOw0KPiAtCQl9DQo+IC0NCj4gLQkJbm9kZSA9IGNvbnRhaW5lcl9v ZihpdCwgc3RydWN0IGFtZGdwdV9tbl9ub2RlLCBpdCk7DQo+IC0JCWl0ID0gaW50ZXJ2YWxfdHJl ZV9pdGVyX25leHQoaXQsIHN0YXJ0LCBlbmQpOw0KPiAtDQo+IC0JCWxpc3RfZm9yX2VhY2hfZW50 cnkoYm8sICZub2RlLT5ib3MsIG1uX2xpc3QpIHsNCj4gLQkJCXN0cnVjdCBrZ2RfbWVtICptZW0g PSBiby0+a2ZkX2JvOw0KPiAtDQo+IC0JCQlpZiAoYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0 cihiby0+dGJvLnR0bSwNCj4gLQkJCQkJCQkgc3RhcnQsIGVuZCkpDQo+IC0JCQkJYW1kZ3B1X2Ft ZGtmZF9ldmljdF91c2VycHRyKG1lbSwgYW1uLT5tbSk7DQo+IC0JCX0NCj4gLQl9DQo+IC0NCj4g LQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCj4gKwlpZiAoIW1tdV9ub3RpZmllcl9yYW5n ZV9ibG9ja2FibGUodXBkYXRlKSkNCj4gKwkJcmV0dXJuIGZhbHNlOw0KPiAgIA0KPiArCWRvd25f cmVhZCgmYW1uLT5sb2NrKTsNCj4gKwl1cF9yZWFkKCZhbW4tPmxvY2spOw0KPiAgIAlyZXR1cm4g MDsNCj4gICB9DQo+ICAgDQo+IEBAIC0yOTUsMTIgKzE2NCwxMCBAQCBhbWRncHVfbW5fc3luY19w YWdldGFibGVzX2hzYShzdHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KPiAgIA0KPiAgIHN0YXRp YyBzdHJ1Y3QgaG1tX21pcnJvcl9vcHMgYW1kZ3B1X2htbV9taXJyb3Jfb3BzW10gPSB7DQo+ICAg CVtBTURHUFVfTU5fVFlQRV9HRlhdID0gew0KPiAtCQkuc3luY19jcHVfZGV2aWNlX3BhZ2V0YWJs ZXMgPSBhbWRncHVfbW5fc3luY19wYWdldGFibGVzX2dmeCwNCj4gLQkJLnJlbGVhc2UgPSBhbWRn cHVfaG1tX21pcnJvcl9yZWxlYXNlDQo+ICsJCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9 IGFtZGdwdV9tbl9zeW5jX3BhZ2V0YWJsZXMsDQo+ICAgCX0sDQo+ICAgCVtBTURHUFVfTU5fVFlQ RV9IU0FdID0gew0KPiAtCQkuc3luY19jcHVfZGV2aWNlX3BhZ2V0YWJsZXMgPSBhbWRncHVfbW5f c3luY19wYWdldGFibGVzX2hzYSwNCj4gLQkJLnJlbGVhc2UgPSBhbWRncHVfaG1tX21pcnJvcl9y ZWxlYXNlDQo+ICsJCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9IGFtZGdwdV9tbl9zeW5j X3BhZ2V0YWJsZXMsDQo+ICAgCX0sDQo+ICAgfTsNCj4gICANCj4gQEAgLTMyNyw3ICsxOTQsOCBA QCBzdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LA0KPiAgIAl9DQo+ICAgDQo+ICAgCWhhc2hfZm9yX2VhY2hfcG9zc2libGUoYWRldi0+bW5f aGFzaCwgYW1uLCBub2RlLCBrZXkpDQo+IC0JCWlmIChBTURHUFVfTU5fS0VZKGFtbi0+bW0sIGFt bi0+dHlwZSkgPT0ga2V5KQ0KPiArCQlpZiAoQU1ER1BVX01OX0tFWShhbW4tPm1pcnJvci5obW0t Pm1tdV9ub3RpZmllci5tbSwNCj4gKwkJCQkgIGFtbi0+dHlwZSkgPT0ga2V5KQ0KPiAgIAkJCWdv dG8gcmVsZWFzZV9sb2NrczsNCj4gICANCj4gICAJYW1uID0ga3phbGxvYyhzaXplb2YoKmFtbiks IEdGUF9LRVJORUwpOw0KPiBAQCAtMzM3LDEwICsyMDUsOCBAQCBzdHJ1Y3QgYW1kZ3B1X21uICph bWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgIAl9DQo+ICAgDQo+ ICAgCWFtbi0+YWRldiA9IGFkZXY7DQo+IC0JYW1uLT5tbSA9IG1tOw0KPiAgIAlpbml0X3J3c2Vt KCZhbW4tPmxvY2spOw0KPiAgIAlhbW4tPnR5cGUgPSB0eXBlOw0KPiAtCWFtbi0+b2JqZWN0cyA9 IFJCX1JPT1RfQ0FDSEVEOw0KPiAgIA0KPiAgIAlhbW4tPm1pcnJvci5vcHMgPSAmYW1kZ3B1X2ht bV9taXJyb3Jfb3BzW3R5cGVdOw0KPiAgIAlyID0gaG1tX21pcnJvcl9yZWdpc3RlcigmYW1uLT5t aXJyb3IsIG1tKTsNCj4gQEAgLTM2OSwxMDAgKzIzNSwzMyBAQCBzdHJ1Y3QgYW1kZ3B1X21uICph bWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgICAqIEBibzogYW1k Z3B1IGJ1ZmZlciBvYmplY3QNCj4gICAgKiBAYWRkcjogdXNlcnB0ciBhZGRyIHdlIHNob3VsZCBt b25pdG9yDQo+ICAgICoNCj4gLSAqIFJlZ2lzdGVycyBhbiBITU0gbWlycm9yIGZvciB0aGUgZ2l2 ZW4gQk8gYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLg0KPiArICogUmVnaXN0ZXJzIGEgbW11X25v dGlmaWVyIGZvciB0aGUgZ2l2ZW4gQk8gYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLg0KPiAgICAq IFJldHVybnMgMCBvbiBzdWNjZXNzLCAtRVJSTk8gaWYgYW55dGhpbmcgZ29lcyB3cm9uZy4NCj4g ICAgKi8NCj4gICBpbnQgYW1kZ3B1X21uX3JlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvLCB1 bnNpZ25lZCBsb25nIGFkZHIpDQo+ICAgew0KPiAtCXVuc2lnbmVkIGxvbmcgZW5kID0gYWRkciAr IGFtZGdwdV9ib19zaXplKGJvKSAtIDE7DQo+IC0Jc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSBhbWRncHVfdHRtX2FkZXYoYm8tPnRiby5iZGV2KTsNCj4gLQllbnVtIGFtZGdwdV9tbl90eXBl IHR5cGUgPQ0KPiAtCQliby0+a2ZkX2JvID8gQU1ER1BVX01OX1RZUEVfSFNBIDogQU1ER1BVX01O X1RZUEVfR0ZYOw0KPiAtCXN0cnVjdCBhbWRncHVfbW4gKmFtbjsNCj4gLQlzdHJ1Y3QgYW1kZ3B1 X21uX25vZGUgKm5vZGUgPSBOVUxMLCAqbmV3X25vZGU7DQo+IC0Jc3RydWN0IGxpc3RfaGVhZCBi b3M7DQo+IC0Jc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7DQo+IC0NCj4gLQlhbW4gPSBh bWRncHVfbW5fZ2V0KGFkZXYsIHR5cGUpOw0KPiAtCWlmIChJU19FUlIoYW1uKSkNCj4gLQkJcmV0 dXJuIFBUUl9FUlIoYW1uKTsNCj4gLQ0KPiAtCW5ld19ub2RlID0ga21hbGxvYyhzaXplb2YoKm5l d19ub2RlKSwgR0ZQX0tFUk5FTCk7DQo+IC0JaWYgKCFuZXdfbm9kZSkNCj4gLQkJcmV0dXJuIC1F Tk9NRU07DQo+IC0NCj4gLQlJTklUX0xJU1RfSEVBRCgmYm9zKTsNCj4gLQ0KPiAtCWRvd25fd3Jp dGUoJmFtbi0+bG9jayk7DQo+IC0NCj4gLQl3aGlsZSAoKGl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVy X2ZpcnN0KCZhbW4tPm9iamVjdHMsIGFkZHIsIGVuZCkpKSB7DQo+IC0JCWtmcmVlKG5vZGUpOw0K PiAtCQlub2RlID0gY29udGFpbmVyX29mKGl0LCBzdHJ1Y3QgYW1kZ3B1X21uX25vZGUsIGl0KTsN Cj4gLQkJaW50ZXJ2YWxfdHJlZV9yZW1vdmUoJm5vZGUtPml0LCAmYW1uLT5vYmplY3RzKTsNCj4g LQkJYWRkciA9IG1pbihpdC0+c3RhcnQsIGFkZHIpOw0KPiAtCQllbmQgPSBtYXgoaXQtPmxhc3Qs IGVuZCk7DQo+IC0JCWxpc3Rfc3BsaWNlKCZub2RlLT5ib3MsICZib3MpOw0KPiAtCX0NCj4gLQ0K PiAtCWlmICghbm9kZSkNCj4gLQkJbm9kZSA9IG5ld19ub2RlOw0KPiArCWlmIChiby0+a2ZkX2Jv KQ0KPiArCQliby0+bm90aWZpZXIub3BzID0gJmFtZGdwdV9tbl9oc2Ffb3BzOw0KPiAgIAllbHNl DQo+IC0JCWtmcmVlKG5ld19ub2RlKTsNCj4gLQ0KPiAtCWJvLT5tbiA9IGFtbjsNCj4gLQ0KPiAt CW5vZGUtPml0LnN0YXJ0ID0gYWRkcjsNCj4gLQlub2RlLT5pdC5sYXN0ID0gZW5kOw0KPiAtCUlO SVRfTElTVF9IRUFEKCZub2RlLT5ib3MpOw0KPiAtCWxpc3Rfc3BsaWNlKCZib3MsICZub2RlLT5i b3MpOw0KPiAtCWxpc3RfYWRkKCZiby0+bW5fbGlzdCwgJm5vZGUtPmJvcyk7DQo+ICsJCWJvLT5u b3RpZmllci5vcHMgPSAmYW1kZ3B1X21uX2dmeF9vcHM7DQo+ICAgDQo+IC0JaW50ZXJ2YWxfdHJl ZV9pbnNlcnQoJm5vZGUtPml0LCAmYW1uLT5vYmplY3RzKTsNCj4gLQ0KPiAtCXVwX3dyaXRlKCZh bW4tPmxvY2spOw0KPiAtDQo+IC0JcmV0dXJuIDA7DQo+ICsJcmV0dXJuIG1tdV9yYW5nZV9ub3Rp Zmllcl9pbnNlcnQoJmJvLT5ub3RpZmllciwgYWRkciwNCj4gKwkJCQkJIGFtZGdwdV9ib19zaXpl KGJvKSwgY3VycmVudC0+bW0pOw0KPiAgIH0NCj4gICANCj4gICAvKioNCj4gLSAqIGFtZGdwdV9t bl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBhIEJPIGZvciBITU0gbWlycm9yIHVwZGF0ZXMNCj4g KyAqIGFtZGdwdV9tbl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBhIEJPIGZvciBub3RpZmllciB1 cGRhdGVzDQo+ICAgICoNCj4gICAgKiBAYm86IGFtZGdwdSBidWZmZXIgb2JqZWN0DQo+ICAgICoN Cj4gLSAqIFJlbW92ZSBhbnkgcmVnaXN0cmF0aW9uIG9mIEhNTSBtaXJyb3IgdXBkYXRlcyBmcm9t IHRoZSBidWZmZXIgb2JqZWN0Lg0KPiArICogUmVtb3ZlIGFueSByZWdpc3RyYXRpb24gb2YgbW11 IG5vdGlmaWVyIHVwZGF0ZXMgZnJvbSB0aGUgYnVmZmVyIG9iamVjdC4NCj4gICAgKi8NCj4gICB2 b2lkIGFtZGdwdV9tbl91bnJlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvKQ0KPiAgIHsNCj4g LQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJk ZXYpOw0KPiAtCXN0cnVjdCBhbWRncHVfbW4gKmFtbjsNCj4gLQlzdHJ1Y3QgbGlzdF9oZWFkICpo ZWFkOw0KPiAtDQo+IC0JbXV0ZXhfbG9jaygmYWRldi0+bW5fbG9jayk7DQo+IC0NCj4gLQlhbW4g PSBiby0+bW47DQo+IC0JaWYgKGFtbiA9PSBOVUxMKSB7DQo+IC0JCW11dGV4X3VubG9jaygmYWRl di0+bW5fbG9jayk7DQo+ICsJaWYgKCFiby0+bm90aWZpZXIubW0pDQo+ICAgCQlyZXR1cm47DQo+ IC0JfQ0KPiAtDQo+IC0JZG93bl93cml0ZSgmYW1uLT5sb2NrKTsNCj4gLQ0KPiAtCS8qIHNhdmUg dGhlIG5leHQgbGlzdCBlbnRyeSBmb3IgbGF0ZXIgKi8NCj4gLQloZWFkID0gYm8tPm1uX2xpc3Qu bmV4dDsNCj4gLQ0KPiAtCWJvLT5tbiA9IE5VTEw7DQo+IC0JbGlzdF9kZWxfaW5pdCgmYm8tPm1u X2xpc3QpOw0KPiAtDQo+IC0JaWYgKGxpc3RfZW1wdHkoaGVhZCkpIHsNCj4gLQkJc3RydWN0IGFt ZGdwdV9tbl9ub2RlICpub2RlOw0KPiAtDQo+IC0JCW5vZGUgPSBjb250YWluZXJfb2YoaGVhZCwg c3RydWN0IGFtZGdwdV9tbl9ub2RlLCBib3MpOw0KPiAtCQlpbnRlcnZhbF90cmVlX3JlbW92ZSgm bm9kZS0+aXQsICZhbW4tPm9iamVjdHMpOw0KPiAtCQlrZnJlZShub2RlKTsNCj4gLQl9DQo+IC0N Cj4gLQl1cF93cml0ZSgmYW1uLT5sb2NrKTsNCj4gLQltdXRleF91bmxvY2soJmFkZXYtPm1uX2xv Y2spOw0KPiArCW1tdV9yYW5nZV9ub3RpZmllcl9yZW1vdmUoJmJvLT5ub3RpZmllcik7DQo+ICsJ Ym8tPm5vdGlmaWVyLm1tID0gTlVMTDsNCj4gICB9DQo+ICAgDQo+ICAgLyogZmxhZ3MgdXNlZCBi eSBITU0gaW50ZXJuYWwsIG5vdCByZWxhdGVkIHRvIENQVS9HUFUgUFRFIGZsYWdzICovDQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uaCBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oDQo+IGluZGV4IGI4ZWQ2ODk0MzYyNWMy Li5kNzNhYjI5NDdiMjJiMiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X21uLmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X21uLmgNCj4gQEAgLTM5LDEyICszOSwxMCBAQCBlbnVtIGFtZGdwdV9tbl90eXBlIHsNCj4gICAg KiBzdHJ1Y3QgYW1kZ3B1X21uDQo+ICAgICoNCj4gICAgKiBAYWRldjogYW1kZ3B1IGRldmljZSBw b2ludGVyDQo+IC0gKiBAbW06IHByb2Nlc3MgYWRkcmVzcyBzcGFjZQ0KPiAgICAqIEB0eXBlOiB0 eXBlIG9mIE1NVSBub3RpZmllcg0KPiAgICAqIEB3b3JrOiBkZXN0cnVjdGlvbiB3b3JrIGl0ZW0N Cj4gICAgKiBAbm9kZTogaGFzaCB0YWJsZSBub2RlIHRvIGZpbmQgc3RydWN0dXJlIGJ5IGFkZXYg YW5kIG1uDQo+ICAgICogQGxvY2s6IHJ3IHNlbWFwaG9yZSBwcm90ZWN0aW5nIHRoZSBub3RpZmll ciBub2Rlcw0KPiAtICogQG9iamVjdHM6IGludGVydmFsIHRyZWUgY29udGFpbmluZyBhbWRncHVf bW5fbm9kZXMNCj4gICAgKiBAbWlycm9yOiBITU0gbWlycm9yIGZ1bmN0aW9uIHN1cHBvcnQNCj4g ICAgKg0KPiAgICAqIERhdGEgZm9yIGVhY2ggYW1kZ3B1IGRldmljZSBhbmQgcHJvY2VzcyBhZGRy ZXNzIHNwYWNlLg0KPiBAQCAtNTIsNyArNTAsNiBAQCBlbnVtIGFtZGdwdV9tbl90eXBlIHsNCj4g ICBzdHJ1Y3QgYW1kZ3B1X21uIHsNCj4gICAJLyogY29uc3RhbnQgYWZ0ZXIgaW5pdGlhbGlzYXRp b24gKi8NCj4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2UJKmFkZXY7DQo+IC0Jc3RydWN0IG1tX3N0 cnVjdAkqbW07DQo+ICAgCWVudW0gYW1kZ3B1X21uX3R5cGUJdHlwZTsNCj4gICANCj4gICAJLyog b25seSB1c2VkIG9uIGRlc3RydWN0aW9uICovDQo+IEBAIC02Myw3ICs2MCw2IEBAIHN0cnVjdCBh bWRncHVfbW4gew0KPiAgIA0KPiAgIAkvKiBvYmplY3RzIHByb3RlY3RlZCBieSBsb2NrICovDQo+ ICAgCXN0cnVjdCByd19zZW1hcGhvcmUJbG9jazsNCj4gLQlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQJ b2JqZWN0czsNCj4gICANCj4gICAjaWZkZWYgQ09ORklHX0hNTV9NSVJST1INCj4gICAJLyogSE1N IG1pcnJvciAqLw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5o DQo+IGluZGV4IDY1OGY0Yzk3NzliNzA0Li40YjQ0YWI4NTBmOTRjMiAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oDQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaA0KPiBAQCAtMzAsNiArMzAsOSBA QA0KPiAgIA0KPiAgICNpbmNsdWRlIDxkcm0vYW1kZ3B1X2RybS5oPg0KPiAgICNpbmNsdWRlICJh bWRncHUuaCINCj4gKyNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSDQo+ICsjaW5jbHVkZSA8bGlu dXgvbW11X25vdGlmaWVyLmg+DQo+ICsjZW5kaWYNCj4gICANCj4gICAjZGVmaW5lIEFNREdQVV9C T19JTlZBTElEX09GRlNFVAlMT05HX01BWA0KPiAgICNkZWZpbmUgQU1ER1BVX0JPX01BWF9QTEFD RU1FTlRTCTMNCj4gQEAgLTEwMCwxMCArMTAzLDEyIEBAIHN0cnVjdCBhbWRncHVfYm8gew0KPiAg IAlzdHJ1Y3QgdHRtX2JvX2ttYXBfb2JqCQlkbWFfYnVmX3ZtYXA7DQo+ICAgCXN0cnVjdCBhbWRn cHVfbW4JCSptbjsNCj4gICANCj4gLQl1bmlvbiB7DQo+IC0JCXN0cnVjdCBsaXN0X2hlYWQJbW5f bGlzdDsNCj4gLQkJc3RydWN0IGxpc3RfaGVhZAlzaGFkb3dfbGlzdDsNCj4gLQl9Ow0KPiArDQo+ ICsjaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUg0KPiArCXN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZp ZXIJbm90aWZpZXI7DQo+ICsjZW5kaWYNCj4gKw0KPiArCXN0cnVjdCBsaXN0X2hlYWQJCXNoYWRv d19saXN0Ow0KPiAgIA0KPiAgIAlzdHJ1Y3Qga2dkX21lbSAgICAgICAgICAgICAgICAgICprZmRf Ym87DQo+ICAgfTsNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4