From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B1FA0CA9EAE for ; Tue, 29 Oct 2019 19:22:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 63A2120659 for ; Tue, 29 Oct 2019 19:22:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="AdIbIWRV" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725999AbfJ2TWo (ORCPT ); Tue, 29 Oct 2019 15:22:44 -0400 Received: from mail-eopbgr820070.outbound.protection.outlook.com ([40.107.82.70]:18491 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725880AbfJ2TWo (ORCPT ); Tue, 29 Oct 2019 15:22:44 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LVqkP+ivHFTTkOWd5v9bwYtHr/wfj4l16y0qOE11p6sFeR3jqnmYUbA5V9q5BzTV55aiCK/TanOWdJrzVhmboq3jh8Zohg2xfycLIBsz4s4LeRQp0HFprgeVGUpfm6Bnw65AsQL0VsStJ0KXUIvb68NrqqrFis35yJnWnottRSSG9xjzc8iipJNbgLJRw0EVb0357k42ls9Jqxq9yibnYLsH0qD50wWp0bCk2+p8uOioGvdrMeLgBy0IMO3Z4YcEK5nqkVJYGZcVj9mTNcaty7rZ+Y0sxA8x+nI4nPcv3iXxeAiDE0GdPXn0DswF0Ypa1N1xZTEkktf6kX+ZAS+uWg== 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=cHJdbN8U+dastwAcreJ1Y0gx9V9rtdfeXduiKynNQt0=; b=Q4Aalc8TjR2Z4FpPivLaQFD3DibQHdwwT1gNafNo5aJEozNg3sKADihTazP/Q29Yvq7Gctib5w28+N/xktpOGrsfqQ7aw3/4IgjYRxE8AeJxBsz08u95uceA9LsCbzxOSU5AoWbLTWl2ekHa9HAffTikrqUliEsoxDwXFp93Z+M9VOlaMY5n5B9WFSzfEgnLyZcgrsaXtM0OilzulrmkYvWfCO4B1ZZ4MB1YcpV4qBLehvf09eOjC9ep0PWJ3K7he4vInEsKkEcFvHsZR+gnrbBr1rT7oKWZAFARjnUPv3VzZHZZBieOQLmOnqs7eYjaAVCHF9F/Rwm7u1lWflWMcA== 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=cHJdbN8U+dastwAcreJ1Y0gx9V9rtdfeXduiKynNQt0=; b=AdIbIWRVV1xCMgxBi4ep9oVTxvbIPPevIenYQmCiCNwZkPZVAkECi/h3d/jagcOJBLzNSjLqn+9vhcojZuOJqec4KITb5jfD5efx4Sj5mJ9M1otvVK8fIz5FvdkjYb/gqXZSZTfWfYtuV5s5hDwMerNGz76F/pFGBy6nL1BKcdQ= Received: from MN2PR12MB4030.namprd12.prod.outlook.com (10.255.86.25) by MN2PR12MB3071.namprd12.prod.outlook.com (20.178.243.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.17; Tue, 29 Oct 2019 19:22:37 +0000 Received: from MN2PR12MB4030.namprd12.prod.outlook.com ([fe80::1ee:c734:15e5:d8b9]) by MN2PR12MB4030.namprd12.prod.outlook.com ([fe80::1ee:c734:15e5:d8b9%5]) with mapi id 15.20.2387.027; Tue, 29 Oct 2019 19:22:37 +0000 From: "Yang, Philip" To: Jason Gunthorpe , "linux-mm@kvack.org" , Jerome Glisse , Ralph Campbell , John Hubbard , "Kuehling, Felix" 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 , "Koenig, Christian" , Ben Skeggs Subject: Re: [PATCH v2 14/15] drm/amdgpu: Use mmu_range_notifier instead of hmm_mirror Thread-Topic: [PATCH v2 14/15] drm/amdgpu: Use mmu_range_notifier instead of hmm_mirror Thread-Index: AQHVjcy5krMagvVO3k2ER8a03a+2l6dyANaA Date: Tue, 29 Oct 2019 19:22:37 +0000 Message-ID: References: <20191028201032.6352-1-jgg@ziepe.ca> <20191028201032.6352-15-jgg@ziepe.ca> In-Reply-To: <20191028201032.6352-15-jgg@ziepe.ca> Accept-Language: en-ZA, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: YTOPR0101CA0051.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00:14::28) To MN2PR12MB4030.namprd12.prod.outlook.com (2603:10b6:208:159::25) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Philip.Yang@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [165.204.55.251] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 32a5bbb7-3400-4b74-e567-08d75ca55b8b x-ms-traffictypediagnostic: MN2PR12MB3071: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6430; x-forefront-prvs: 0205EDCD76 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(366004)(189003)(199004)(386003)(102836004)(53546011)(6506007)(26005)(14454004)(25786009)(2906002)(476003)(229853002)(6486002)(498600001)(8676002)(81156014)(54906003)(186003)(66574012)(6512007)(486006)(36756003)(256004)(7736002)(14444005)(3846002)(6116002)(76176011)(66446008)(64756008)(66556008)(66476007)(305945005)(6436002)(52116002)(86362001)(4326008)(6246003)(31686004)(81166006)(30864003)(66946007)(31696002)(5660300002)(110136005)(6636002)(8936002)(7416002)(2501003)(99286004)(4001150100001)(71200400001)(11346002)(66066001)(446003)(71190400001)(2616005);DIR:OUT;SFP:1101;SCL:1;SRVR:MN2PR12MB3071;H:MN2PR12MB4030.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A: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: allKgyJZAlLfSdWFRi3+aLWnBgoMTZ9apLLCGmunKYg2kxYgJOPF9kiDWUqZwHOITntxPUDaEsLR1ky/JAuAJRf03whpNep28mLQ1obyj0SHAcpH+h0nGIu8QnY4d3afeiNWS28IeyVhke4PYy3Pl7wr96iVP7XOFBsLYQCrB2qCZ6IukS5gBbq/aKIGhfxxGYlK8bAlY857d9WnKhVaLGMddXajoxAZ6T2vHdjPlqfqXyIFl4mPuMlILtluytu3Jd2cCM7aH5qLDmNb6bYyVpAqlu1nWYgNqdFCX29OdmwmqCzb+q6B0YH6SCMTwAI2zjkN7toVSRqGu/ocVR/SDj1lCxZdTWdJJREemREKrLV7/Iyz/kxyilSZgk1A/WoGC54O+MT5DILyOp5d3W/sDxCyyHv45fOsGrKteHZjboeBTfgckZ1Y9rFbiIfZdv1T Content-Type: text/plain; charset="utf-8" Content-ID: <1875FACC45CB3A4FA05033E6E4C4E071@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 32a5bbb7-3400-4b74-e567-08d75ca55b8b X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2019 19:22:37.3827 (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: 3fp0sn6yyiOFS6jAzOLVle5kbTeTLuSH+QYsDomXgV+SRDwuspfIh8JMt+yQQOgU X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB3071 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org SGkgSmFzb24sDQoNCkkgZGlkIHF1aWNrIHRlc3QgYWZ0ZXIgbWVyZ2luZyBhbWQtc3RhZ2luZy1k cm0tbmV4dCB3aXRoIHRoZSANCm1tdV9ub3RpZmllciBicmFuY2gsIHdoaWNoIGluY2x1ZGVzIHRo aXMgc2V0IGNoYW5nZXMuIFRoZSB0ZXN0IHJlc3VsdCANCmhhcyBkaWZmZXJlbnQgZmFpbHVyZXMs IGFwcCBzdHVjayBpbnRlcm1pdHRlbnRseSwgR1VJIG5vIGRpc3BsYXkgZXRjLiBJIA0KYW0gdW5k ZXJzdGFuZGluZyB0aGUgY2hhbmdlcyBhbmQgd2lsbCB0cnkgdG8gZmlndXJlIG91dCB0aGUgY2F1 c2UuDQoNClJlZ2FyZHMsDQpQaGlsaXANCg0KT24gMjAxOS0xMC0yOCA0OjEwIHAubS4sIEphc29u IEd1bnRob3JwZSB3cm90ZToNCj4gRnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3gu Y29tPg0KPiANCj4gQ29udmVydCB0aGUgY29sbGlzaW9uLXJldHJ5IGxvY2sgYXJvdW5kIGhtbV9y YW5nZV9mYXVsdCB0byB1c2UgdGhlIG9uZSBub3cNCj4gcHJvdmlkZWQgYnkgdGhlIG1tdV9yYW5n ZSBub3RpZmllci4NCj4gDQo+IEFsdGhvdWdoIHRoaXMgZHJpdmVyIGRvZXMgbm90IHNlZW0gdG8g dXNlIHRoZSBjb2xsaXNpb24gcmV0cnkgbG9jayB0aGF0DQo+IGhtbSBwcm92aWRlcyBjb3JyZWN0 bHksIGl0IGNhbiBzdGlsbCBiZSBjb252ZXJ0ZWQgb3ZlciB0byB1c2UgdGhlDQo+IG1tdV9yYW5n ZV9ub3RpZmllciBhcGkgaW5zdGVhZCBvZiBobW1fbWlycm9yIHdpdGhvdXQgdG9vIG11Y2ggdHJv dWJsZS4NCj4gDQo+IFRoaXMgYWxzbyBkZWxldGVzIGFub3RoZXIgcGxhY2Ugd2hlcmUgYSBkcml2 ZXIgaXMgYXNzb2NpYXRpbmcgYWRkaXRpb25hbA0KPiBkYXRhIChzdHJ1Y3QgYW1kZ3B1X21uKSB3 aXRoIGEgbW11X3N0cnVjdC4NCj4gDQo+IENjOiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVj aGVyQGFtZC5jb20+DQo+IENjOiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFt ZC5jb20+DQo+IENjOiBEYXZpZCAoQ2h1bk1pbmcpIFpob3UgPERhdmlkMS5aaG91QGFtZC5jb20+ DQo+IENjOiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiBTaWduZWQtb2ZmLWJ5OiBK YXNvbiBHdW50aG9ycGUgPGpnZ0BtZWxsYW5veC5jb20+DQo+IC0tLQ0KPiAgIC4uLi9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jICB8ICAgNCArDQo+ICAgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMgICAgICAgIHwgIDE0ICstDQo+ICAgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgICAgICAgIHwgMTQ4ICsrLS0tLS0tLS0t LS0tLS0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oICAgICAg ICB8ICA0OSAtLS0tLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRt LmMgICAgICAgfCAgNzYgKysrKy0tLS0tDQo+ICAgNSBmaWxlcyBjaGFuZ2VkLCA2NiBpbnNlcnRp b25zKCspLCAyMjUgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jDQo+IGluZGV4IDQ3NzAwMzAyYTA4YjdmLi4x YmNlZGI5YjQ3N2RjZSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2FtZGtmZF9ncHV2bS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYw0KPiBAQCAtMTczOCw2ICsxNzM4LDEwIEBAIHN0YXRpYyBp bnQgdXBkYXRlX2ludmFsaWRfdXNlcl9wYWdlcyhzdHJ1Y3QgYW1ka2ZkX3Byb2Nlc3NfaW5mbyAq cHJvY2Vzc19pbmZvLA0KPiAgIAkJCXJldHVybiByZXQ7DQo+ICAgCQl9DQo+ICAgDQo+ICsJCS8q DQo+ICsJCSAqIEZJWE1FOiBDYW5ub3QgaWdub3JlIHRoZSByZXR1cm4gY29kZSwgbXVzdCBob2xk DQo+ICsJCSAqIG5vdGlmaWVyX2xvY2sNCj4gKwkJICovDQo+ICAgCQlhbWRncHVfdHRtX3R0X2dl dF91c2VyX3BhZ2VzX2RvbmUoYm8tPnRiby50dG0pOw0KPiAgIA0KPiAgIAkJLyogTWFyayB0aGUg Qk8gYXMgdmFsaWQgdW5sZXNzIGl0IHdhcyBpbnZhbGlkYXRlZA0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfY3MuYw0KPiBpbmRleCAyZTUzZmVlZDQwZTIzMC4uNzY3NzFmNWYwYjYw YWIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5j DQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jDQo+IEBAIC02 MDcsOCArNjA3LDYgQEAgc3RhdGljIGludCBhbWRncHVfY3NfcGFyc2VyX2JvcyhzdHJ1Y3QgYW1k Z3B1X2NzX3BhcnNlciAqcCwNCj4gICAJCWUtPnR2Lm51bV9zaGFyZWQgPSAyOw0KPiAgIA0KPiAg IAlhbWRncHVfYm9fbGlzdF9nZXRfbGlzdChwLT5ib19saXN0LCAmcC0+dmFsaWRhdGVkKTsNCj4g LQlpZiAocC0+Ym9fbGlzdC0+Zmlyc3RfdXNlcnB0ciAhPSBwLT5ib19saXN0LT5udW1fZW50cmll cykNCj4gLQkJcC0+bW4gPSBhbWRncHVfbW5fZ2V0KHAtPmFkZXYsIEFNREdQVV9NTl9UWVBFX0dG WCk7DQo+ICAgDQo+ICAgCUlOSVRfTElTVF9IRUFEKCZkdXBsaWNhdGVzKTsNCj4gICAJYW1kZ3B1 X3ZtX2dldF9wZF9ibygmZnByaXYtPnZtLCAmcC0+dmFsaWRhdGVkLCAmcC0+dm1fcGQpOw0KPiBA QCAtMTI5MSwxMSArMTI4OSwxMSBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19zdWJtaXQoc3RydWN0 IGFtZGdwdV9jc19wYXJzZXIgKnAsDQo+ICAgCWlmIChyKQ0KPiAgIAkJZ290byBlcnJvcl91bmxv Y2s7DQo+ICAgDQo+IC0JLyogTm8gbWVtb3J5IGFsbG9jYXRpb24gaXMgYWxsb3dlZCB3aGlsZSBo b2xkaW5nIHRoZSBtbiBsb2NrLg0KPiAtCSAqIHAtPm1uIGlzIGhvbGQgdW50aWwgYW1kZ3B1X2Nz X3N1Ym1pdCBpcyBmaW5pc2hlZCBhbmQgZmVuY2UgaXMgYWRkZWQNCj4gLQkgKiB0byBCT3MuDQo+ ICsJLyogTm8gbWVtb3J5IGFsbG9jYXRpb24gaXMgYWxsb3dlZCB3aGlsZSBob2xkaW5nIHRoZSBu b3RpZmllciBsb2NrLg0KPiArCSAqIFRoZSBsb2NrIGlzIGhlbGQgdW50aWwgYW1kZ3B1X2NzX3N1 Ym1pdCBpcyBmaW5pc2hlZCBhbmQgZmVuY2UgaXMNCj4gKwkgKiBhZGRlZCB0byBCT3MuDQo+ICAg CSAqLw0KPiAtCWFtZGdwdV9tbl9sb2NrKHAtPm1uKTsNCj4gKwltdXRleF9sb2NrKCZwLT5hZGV2 LT5ub3RpZmllcl9sb2NrKTsNCj4gICANCj4gICAJLyogSWYgdXNlcnB0ciBhcmUgaW52YWxpZGF0 ZWQgYWZ0ZXIgYW1kZ3B1X2NzX3BhcnNlcl9ib3MoKSwgcmV0dXJuDQo+ICAgCSAqIC1FQUdBSU4s IGRybUlvY3RsIGluIGxpYmRybSB3aWxsIHJlc3RhcnQgdGhlIGFtZGdwdV9jc19pb2N0bC4NCj4g QEAgLTEzMzgsMTMgKzEzMzYsMTMgQEAgc3RhdGljIGludCBhbWRncHVfY3Nfc3VibWl0KHN0cnVj dCBhbWRncHVfY3NfcGFyc2VyICpwLA0KPiAgIAlhbWRncHVfdm1fbW92ZV90b19scnVfdGFpbChw LT5hZGV2LCAmZnByaXYtPnZtKTsNCj4gICANCj4gICAJdHRtX2V1X2ZlbmNlX2J1ZmZlcl9vYmpl Y3RzKCZwLT50aWNrZXQsICZwLT52YWxpZGF0ZWQsIHAtPmZlbmNlKTsNCj4gLQlhbWRncHVfbW5f dW5sb2NrKHAtPm1uKTsNCj4gKwltdXRleF91bmxvY2soJnAtPmFkZXYtPm5vdGlmaWVyX2xvY2sp Ow0KPiAgIA0KPiAgIAlyZXR1cm4gMDsNCj4gICANCj4gICBlcnJvcl9hYm9ydDoNCj4gICAJZHJt X3NjaGVkX2pvYl9jbGVhbnVwKCZqb2ItPmJhc2UpOw0KPiAtCWFtZGdwdV9tbl91bmxvY2socC0+ bW4pOw0KPiArCW11dGV4X3VubG9jaygmcC0+YWRldi0+bm90aWZpZXJfbG9jayk7DQo+ICAgDQo+ ICAgZXJyb3JfdW5sb2NrOg0KPiAgIAlhbWRncHVfam9iX2ZyZWUoam9iKTsNCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMNCj4gaW5kZXggNGZmZDdiOTBmNGQ5MDcuLmNiNzE4 YTA2NGViNDkxIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfbW4uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYw0K PiBAQCAtNTAsMjggKzUwLDYgQEANCj4gICAjaW5jbHVkZSAiYW1kZ3B1LmgiDQo+ICAgI2luY2x1 ZGUgImFtZGdwdV9hbWRrZmQuaCINCj4gICANCj4gLS8qKg0KPiAtICogYW1kZ3B1X21uX2xvY2sg LSB0YWtlIHRoZSB3cml0ZSBzaWRlIGxvY2sgZm9yIHRoaXMgbm90aWZpZXINCj4gLSAqDQo+IC0g KiBAbW46IG91ciBub3RpZmllcg0KPiAtICovDQo+IC12b2lkIGFtZGdwdV9tbl9sb2NrKHN0cnVj dCBhbWRncHVfbW4gKm1uKQ0KPiAtew0KPiAtCWlmIChtbikNCj4gLQkJZG93bl93cml0ZSgmbW4t PmxvY2spOw0KPiAtfQ0KPiAtDQo+IC0vKioNCj4gLSAqIGFtZGdwdV9tbl91bmxvY2sgLSBkcm9w IHRoZSB3cml0ZSBzaWRlIGxvY2sgZm9yIHRoaXMgbm90aWZpZXINCj4gLSAqDQo+IC0gKiBAbW46 IG91ciBub3RpZmllcg0KPiAtICovDQo+IC12b2lkIGFtZGdwdV9tbl91bmxvY2soc3RydWN0IGFt ZGdwdV9tbiAqbW4pDQo+IC17DQo+IC0JaWYgKG1uKQ0KPiAtCQl1cF93cml0ZSgmbW4tPmxvY2sp Ow0KPiAtfQ0KPiAtDQo+ICAgLyoqDQo+ICAgICogYW1kZ3B1X21uX2ludmFsaWRhdGVfZ2Z4IC0g Y2FsbGJhY2sgdG8gbm90aWZ5IGFib3V0IG1tIGNoYW5nZQ0KPiAgICAqDQo+IEBAIC04MiwxMiAr NjAsMTkgQEAgdm9pZCBhbWRncHVfbW5fdW5sb2NrKHN0cnVjdCBhbWRncHVfbW4gKm1uKQ0KPiAg ICAqIHBvdGVudGlhbGx5IGRpcnR5Lg0KPiAgICAqLw0KPiAgIHN0YXRpYyBib29sIGFtZGdwdV9t bl9pbnZhbGlkYXRlX2dmeChzdHJ1Y3QgbW11X3JhbmdlX25vdGlmaWVyICptcm4sDQo+IC0JCQkJ ICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkNCj4gKwkJCQkgICAg IGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlLA0KPiArCQkJCSAgICAgdW5z aWduZWQgbG9uZyBjdXJfc2VxKQ0KPiAgIHsNCj4gICAJc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBj b250YWluZXJfb2YobXJuLCBzdHJ1Y3QgYW1kZ3B1X2JvLCBub3RpZmllcik7DQo+ICAgCXN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2ID0gYW1kZ3B1X3R0bV9hZGV2KGJvLT50Ym8uYmRldik7DQo+ ICAgCWxvbmcgcjsNCj4gICANCj4gKwkvKg0KPiArCSAqIEZJWE1FOiBNdXN0IGhvbGQgc29tZSBs b2NrIHNoYXJlZCB3aXRoDQo+ICsJICogYW1kZ3B1X3R0bV90dF9nZXRfdXNlcl9wYWdlc19kb25l KCkNCj4gKwkgKi8NCj4gKwltbXVfcmFuZ2Vfc2V0X3NlcShtcm4sIGN1cl9zZXEpOw0KPiArDQo+ ICAgCS8qIEZJWE1FOiBJcyB0aGlzIG5lY2Vzc2FyeT8gKi8NCj4gICAJaWYgKCFhbWRncHVfdHRt X3R0X2FmZmVjdF91c2VycHRyKGJvLT50Ym8udHRtLCByYW5nZS0+c3RhcnQsDQo+ICAgCQkJCQkg IHJhbmdlLT5lbmQpKQ0KPiBAQCAtMTE5LDExICsxMDQsMTggQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBtbXVfcmFuZ2Vfbm90aWZpZXJfb3BzIGFtZGdwdV9tbl9nZnhfb3BzID0gew0KPiAgICAqIGV2 aWN0aW5nIGFsbCB1c2VyLW1vZGUgcXVldWVzIG9mIHRoZSBwcm9jZXNzLg0KPiAgICAqLw0KPiAg IHN0YXRpYyBib29sIGFtZGdwdV9tbl9pbnZhbGlkYXRlX2hzYShzdHJ1Y3QgbW11X3JhbmdlX25v dGlmaWVyICptcm4sDQo+IC0JCQkJICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3Jhbmdl ICpyYW5nZSkNCj4gKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJh bmdlLA0KPiArCQkJCSAgICAgdW5zaWduZWQgbG9uZyBjdXJfc2VxKQ0KPiAgIHsNCj4gICAJc3Ry dWN0IGFtZGdwdV9ibyAqYm8gPSBjb250YWluZXJfb2YobXJuLCBzdHJ1Y3QgYW1kZ3B1X2JvLCBu b3RpZmllcik7DQo+ICAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gYW1kZ3B1X3R0bV9h ZGV2KGJvLT50Ym8uYmRldik7DQo+ICAgDQo+ICsJLyoNCj4gKwkgKiBGSVhNRTogTXVzdCBob2xk IHNvbWUgbG9jayBzaGFyZWQgd2l0aA0KPiArCSAqIGFtZGdwdV90dG1fdHRfZ2V0X3VzZXJfcGFn ZXNfZG9uZSgpDQo+ICsJICovDQo+ICsJbW11X3JhbmdlX3NldF9zZXEobXJuLCBjdXJfc2VxKTsN Cj4gKw0KPiAgIAkvKiBGSVhNRTogSXMgdGhpcyBuZWNlc3Nhcnk/ICovDQo+ICAgCWlmICghYW1k Z3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwgcmFuZ2UtPnN0YXJ0LA0KPiAg IAkJCQkJICByYW5nZS0+ZW5kKSkNCj4gQEAgLTE0Myw5MiArMTM1LDYgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXJfb3BzIGFtZGdwdV9tbl9oc2Ffb3BzID0gew0KPiAg IAkuaW52YWxpZGF0ZSA9IGFtZGdwdV9tbl9pbnZhbGlkYXRlX2hzYSwNCj4gICB9Ow0KPiAgIA0K PiAtc3RhdGljIGludCBhbWRncHVfbW5fc3luY19wYWdldGFibGVzKHN0cnVjdCBobW1fbWlycm9y ICptaXJyb3IsDQo+IC0JCQkJICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICp1 cGRhdGUpDQo+IC17DQo+IC0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKG1p cnJvciwgc3RydWN0IGFtZGdwdV9tbiwgbWlycm9yKTsNCj4gLQ0KPiAtCWlmICghbW11X25vdGlm aWVyX3JhbmdlX2Jsb2NrYWJsZSh1cGRhdGUpKQ0KPiAtCQlyZXR1cm4gZmFsc2U7DQo+IC0NCj4g LQlkb3duX3JlYWQoJmFtbi0+bG9jayk7DQo+IC0JdXBfcmVhZCgmYW1uLT5sb2NrKTsNCj4gLQly ZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtLyogTG93IGJpdHMgb2YgYW55IHJlYXNvbmFibGUgbW0g cG9pbnRlciB3aWxsIGJlIHVudXNlZCBkdWUgdG8gc3RydWN0DQo+IC0gKiBhbGlnbm1lbnQuIFVz ZSB0aGVzZSBiaXRzIHRvIG1ha2UgYSB1bmlxdWUga2V5IGZyb20gdGhlIG1tIHBvaW50ZXINCj4g LSAqIGFuZCBub3RpZmllciB0eXBlLg0KPiAtICovDQo+IC0jZGVmaW5lIEFNREdQVV9NTl9LRVko bW0sIHR5cGUpICgodW5zaWduZWQgbG9uZykobW0pICsgKHR5cGUpKQ0KPiAtDQo+IC1zdGF0aWMg c3RydWN0IGhtbV9taXJyb3Jfb3BzIGFtZGdwdV9obW1fbWlycm9yX29wc1tdID0gew0KPiAtCVtB TURHUFVfTU5fVFlQRV9HRlhdID0gew0KPiAtCQkuc3luY19jcHVfZGV2aWNlX3BhZ2V0YWJsZXMg PSBhbWRncHVfbW5fc3luY19wYWdldGFibGVzLA0KPiAtCX0sDQo+IC0JW0FNREdQVV9NTl9UWVBF X0hTQV0gPSB7DQo+IC0JCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9IGFtZGdwdV9tbl9z eW5jX3BhZ2V0YWJsZXMsDQo+IC0JfSwNCj4gLX07DQo+IC0NCj4gLS8qKg0KPiAtICogYW1kZ3B1 X21uX2dldCAtIGNyZWF0ZSBITU0gbWlycm9yIGNvbnRleHQNCj4gLSAqDQo+IC0gKiBAYWRldjog YW1kZ3B1IGRldmljZSBwb2ludGVyDQo+IC0gKiBAdHlwZTogdHlwZSBvZiBNTVUgbm90aWZpZXIg Y29udGV4dA0KPiAtICoNCj4gLSAqIENyZWF0ZXMgYSBITU0gbWlycm9yIGNvbnRleHQgZm9yIGN1 cnJlbnQtPm1tLg0KPiAtICovDQo+IC1zdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAtCQkJCWVudW0gYW1kZ3B1X21uX3R5cGUgdHlw ZSkNCj4gLXsNCj4gLQlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IGN1cnJlbnQtPm1tOw0KPiAtCXN0 cnVjdCBhbWRncHVfbW4gKmFtbjsNCj4gLQl1bnNpZ25lZCBsb25nIGtleSA9IEFNREdQVV9NTl9L RVkobW0sIHR5cGUpOw0KPiAtCWludCByOw0KPiAtDQo+IC0JbXV0ZXhfbG9jaygmYWRldi0+bW5f bG9jayk7DQo+IC0JaWYgKGRvd25fd3JpdGVfa2lsbGFibGUoJm1tLT5tbWFwX3NlbSkpIHsNCj4g LQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5tbl9sb2NrKTsNCj4gLQkJcmV0dXJuIEVSUl9QVFIoLUVJ TlRSKTsNCj4gLQl9DQo+IC0NCj4gLQloYXNoX2Zvcl9lYWNoX3Bvc3NpYmxlKGFkZXYtPm1uX2hh c2gsIGFtbiwgbm9kZSwga2V5KQ0KPiAtCQlpZiAoQU1ER1BVX01OX0tFWShhbW4tPm1pcnJvci5o bW0tPm1tdV9ub3RpZmllci5tbSwNCj4gLQkJCQkgIGFtbi0+dHlwZSkgPT0ga2V5KQ0KPiAtCQkJ Z290byByZWxlYXNlX2xvY2tzOw0KPiAtDQo+IC0JYW1uID0ga3phbGxvYyhzaXplb2YoKmFtbiks IEdGUF9LRVJORUwpOw0KPiAtCWlmICghYW1uKSB7DQo+IC0JCWFtbiA9IEVSUl9QVFIoLUVOT01F TSk7DQo+IC0JCWdvdG8gcmVsZWFzZV9sb2NrczsNCj4gLQl9DQo+IC0NCj4gLQlhbW4tPmFkZXYg PSBhZGV2Ow0KPiAtCWluaXRfcndzZW0oJmFtbi0+bG9jayk7DQo+IC0JYW1uLT50eXBlID0gdHlw ZTsNCj4gLQ0KPiAtCWFtbi0+bWlycm9yLm9wcyA9ICZhbWRncHVfaG1tX21pcnJvcl9vcHNbdHlw ZV07DQo+IC0JciA9IGhtbV9taXJyb3JfcmVnaXN0ZXIoJmFtbi0+bWlycm9yLCBtbSk7DQo+IC0J aWYgKHIpDQo+IC0JCWdvdG8gZnJlZV9hbW47DQo+IC0NCj4gLQloYXNoX2FkZChhZGV2LT5tbl9o YXNoLCAmYW1uLT5ub2RlLCBBTURHUFVfTU5fS0VZKG1tLCB0eXBlKSk7DQo+IC0NCj4gLXJlbGVh c2VfbG9ja3M6DQo+IC0JdXBfd3JpdGUoJm1tLT5tbWFwX3NlbSk7DQo+IC0JbXV0ZXhfdW5sb2Nr KCZhZGV2LT5tbl9sb2NrKTsNCj4gLQ0KPiAtCXJldHVybiBhbW47DQo+IC0NCj4gLWZyZWVfYW1u Og0KPiAtCXVwX3dyaXRlKCZtbS0+bW1hcF9zZW0pOw0KPiAtCW11dGV4X3VubG9jaygmYWRldi0+ bW5fbG9jayk7DQo+IC0Ja2ZyZWUoYW1uKTsNCj4gLQ0KPiAtCXJldHVybiBFUlJfUFRSKHIpOw0K PiAtfQ0KPiAtDQo+ICAgLyoqDQo+ICAgICogYW1kZ3B1X21uX3JlZ2lzdGVyIC0gcmVnaXN0ZXIg YSBCTyBmb3Igbm90aWZpZXIgdXBkYXRlcw0KPiAgICAqDQo+IEBAIC0yNjMsMjUgKzE2OSwzIEBA IHZvaWQgYW1kZ3B1X21uX3VucmVnaXN0ZXIoc3RydWN0IGFtZGdwdV9ibyAqYm8pDQo+ICAgCW1t dV9yYW5nZV9ub3RpZmllcl9yZW1vdmUoJmJvLT5ub3RpZmllcik7DQo+ICAgCWJvLT5ub3RpZmll ci5tbSA9IE5VTEw7DQo+ICAgfQ0KPiAtDQo+IC0vKiBmbGFncyB1c2VkIGJ5IEhNTSBpbnRlcm5h bCwgbm90IHJlbGF0ZWQgdG8gQ1BVL0dQVSBQVEUgZmxhZ3MgKi8NCj4gLXN0YXRpYyBjb25zdCB1 aW50NjRfdCBobW1fcmFuZ2VfZmxhZ3NbSE1NX1BGTl9GTEFHX01BWF0gPSB7DQo+IC0JCSgxIDw8 IDApLCAvKiBITU1fUEZOX1ZBTElEICovDQo+IC0JCSgxIDw8IDEpLCAvKiBITU1fUEZOX1dSSVRF ICovDQo+IC0JCTAgLyogSE1NX1BGTl9ERVZJQ0VfUFJJVkFURSAqLw0KPiAtfTsNCj4gLQ0KPiAt c3RhdGljIGNvbnN0IHVpbnQ2NF90IGhtbV9yYW5nZV92YWx1ZXNbSE1NX1BGTl9WQUxVRV9NQVhd ID0gew0KPiAtCQkweGZmZmZmZmZmZmZmZmZmZmVVTCwgLyogSE1NX1BGTl9FUlJPUiAqLw0KPiAt CQkwLCAvKiBITU1fUEZOX05PTkUgKi8NCj4gLQkJMHhmZmZmZmZmZmZmZmZmZmZjVUwgLyogSE1N X1BGTl9TUEVDSUFMICovDQo+IC19Ow0KPiAtDQo+IC12b2lkIGFtZGdwdV9obW1faW5pdF9yYW5n ZShzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSkNCj4gLXsNCj4gLQlpZiAocmFuZ2UpIHsNCj4gLQkJ cmFuZ2UtPmZsYWdzID0gaG1tX3JhbmdlX2ZsYWdzOw0KPiAtCQlyYW5nZS0+dmFsdWVzID0gaG1t X3JhbmdlX3ZhbHVlczsNCj4gLQkJcmFuZ2UtPnBmbl9zaGlmdCA9IFBBR0VfU0hJRlQ7DQo+IC0J fQ0KPiAtfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X21uLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uaA0KPiBpbmRleCBk NzNhYjI5NDdiMjJiMi4uYTI5MjIzOGY3NWViYWUgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9tbi5oDQo+IEBAIC0zMCw1OSArMzAsMTAgQEANCj4gICAjaW5jbHVkZSA8 bGludXgvd29ya3F1ZXVlLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L2ludGVydmFsX3RyZWUuaD4N Cj4gICANCj4gLWVudW0gYW1kZ3B1X21uX3R5cGUgew0KPiAtCUFNREdQVV9NTl9UWVBFX0dGWCwN Cj4gLQlBTURHUFVfTU5fVFlQRV9IU0EsDQo+IC19Ow0KPiAtDQo+IC0vKioNCj4gLSAqIHN0cnVj dCBhbWRncHVfbW4NCj4gLSAqDQo+IC0gKiBAYWRldjogYW1kZ3B1IGRldmljZSBwb2ludGVyDQo+ IC0gKiBAdHlwZTogdHlwZSBvZiBNTVUgbm90aWZpZXINCj4gLSAqIEB3b3JrOiBkZXN0cnVjdGlv biB3b3JrIGl0ZW0NCj4gLSAqIEBub2RlOiBoYXNoIHRhYmxlIG5vZGUgdG8gZmluZCBzdHJ1Y3R1 cmUgYnkgYWRldiBhbmQgbW4NCj4gLSAqIEBsb2NrOiBydyBzZW1hcGhvcmUgcHJvdGVjdGluZyB0 aGUgbm90aWZpZXIgbm9kZXMNCj4gLSAqIEBtaXJyb3I6IEhNTSBtaXJyb3IgZnVuY3Rpb24gc3Vw cG9ydA0KPiAtICoNCj4gLSAqIERhdGEgZm9yIGVhY2ggYW1kZ3B1IGRldmljZSBhbmQgcHJvY2Vz cyBhZGRyZXNzIHNwYWNlLg0KPiAtICovDQo+IC1zdHJ1Y3QgYW1kZ3B1X21uIHsNCj4gLQkvKiBj b25zdGFudCBhZnRlciBpbml0aWFsaXNhdGlvbiAqLw0KPiAtCXN0cnVjdCBhbWRncHVfZGV2aWNl CSphZGV2Ow0KPiAtCWVudW0gYW1kZ3B1X21uX3R5cGUJdHlwZTsNCj4gLQ0KPiAtCS8qIG9ubHkg dXNlZCBvbiBkZXN0cnVjdGlvbiAqLw0KPiAtCXN0cnVjdCB3b3JrX3N0cnVjdAl3b3JrOw0KPiAt DQo+IC0JLyogcHJvdGVjdGVkIGJ5IGFkZXYtPm1uX2xvY2sgKi8NCj4gLQlzdHJ1Y3QgaGxpc3Rf bm9kZQlub2RlOw0KPiAtDQo+IC0JLyogb2JqZWN0cyBwcm90ZWN0ZWQgYnkgbG9jayAqLw0KPiAt CXN0cnVjdCByd19zZW1hcGhvcmUJbG9jazsNCj4gLQ0KPiAtI2lmZGVmIENPTkZJR19ITU1fTUlS Uk9SDQo+IC0JLyogSE1NIG1pcnJvciAqLw0KPiAtCXN0cnVjdCBobW1fbWlycm9yCW1pcnJvcjsN Cj4gLSNlbmRpZg0KPiAtfTsNCj4gLQ0KPiAgICNpZiBkZWZpbmVkKENPTkZJR19ITU1fTUlSUk9S KQ0KPiAtdm9pZCBhbWRncHVfbW5fbG9jayhzdHJ1Y3QgYW1kZ3B1X21uICptbik7DQo+IC12b2lk IGFtZGdwdV9tbl91bmxvY2soc3RydWN0IGFtZGdwdV9tbiAqbW4pOw0KPiAtc3RydWN0IGFtZGdw dV9tbiAqYW1kZ3B1X21uX2dldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4gLQkJCQll bnVtIGFtZGdwdV9tbl90eXBlIHR5cGUpOw0KPiAgIGludCBhbWRncHVfbW5fcmVnaXN0ZXIoc3Ry dWN0IGFtZGdwdV9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgYWRkcik7DQo+ICAgdm9pZCBhbWRncHVf bW5fdW5yZWdpc3RlcihzdHJ1Y3QgYW1kZ3B1X2JvICpibyk7DQo+IC12b2lkIGFtZGdwdV9obW1f aW5pdF9yYW5nZShzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSk7DQo+ICAgI2Vsc2UNCj4gLXN0YXRp YyBpbmxpbmUgdm9pZCBhbWRncHVfbW5fbG9jayhzdHJ1Y3QgYW1kZ3B1X21uICptbikge30NCj4g LXN0YXRpYyBpbmxpbmUgdm9pZCBhbWRncHVfbW5fdW5sb2NrKHN0cnVjdCBhbWRncHVfbW4gKm1u KSB7fQ0KPiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAtCQkJCQkgICAgICBlbnVtIGFtZGdwdV9tbl90 eXBlIHR5cGUpDQo+IC17DQo+IC0JcmV0dXJuIE5VTEw7DQo+IC19DQo+ICAgc3RhdGljIGlubGlu ZSBpbnQgYW1kZ3B1X21uX3JlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvLCB1bnNpZ25lZCBs b25nIGFkZHIpDQo+ICAgew0KPiAgIAlEUk1fV0FSTl9PTkNFKCJITU1fTUlSUk9SIGtlcm5lbCBj b25maWcgb3B0aW9uIGlzIG5vdCBlbmFibGVkLCAiDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfdHRtLmMNCj4gaW5kZXggYzBlNDFmMWYwYzIzNjUuLjY1ZDk4MjRiNTRmMmE5IDEw MDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMNCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jDQo+IEBAIC03NzMs NiArNzczLDIwIEBAIHN0cnVjdCBhbWRncHVfdHRtX3R0IHsNCj4gICAjZW5kaWYNCj4gICB9Ow0K PiAgIA0KPiArI2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1VTRVJQVFINCj4gKy8qIGZsYWdzIHVz ZWQgYnkgSE1NIGludGVybmFsLCBub3QgcmVsYXRlZCB0byBDUFUvR1BVIFBURSBmbGFncyAqLw0K PiArc3RhdGljIGNvbnN0IHVpbnQ2NF90IGhtbV9yYW5nZV9mbGFnc1tITU1fUEZOX0ZMQUdfTUFY XSA9IHsNCj4gKwkoMSA8PCAwKSwgLyogSE1NX1BGTl9WQUxJRCAqLw0KPiArCSgxIDw8IDEpLCAv KiBITU1fUEZOX1dSSVRFICovDQo+ICsJMCAvKiBITU1fUEZOX0RFVklDRV9QUklWQVRFICovDQo+ ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3QgdWludDY0X3QgaG1tX3JhbmdlX3ZhbHVlc1tITU1f UEZOX1ZBTFVFX01BWF0gPSB7DQo+ICsJMHhmZmZmZmZmZmZmZmZmZmZlVUwsIC8qIEhNTV9QRk5f RVJST1IgKi8NCj4gKwkwLCAvKiBITU1fUEZOX05PTkUgKi8NCj4gKwkweGZmZmZmZmZmZmZmZmZm ZmNVTCAvKiBITU1fUEZOX1NQRUNJQUwgKi8NCj4gK307DQo+ICsNCj4gICAvKioNCj4gICAgKiBh bWRncHVfdHRtX3R0X2dldF91c2VyX3BhZ2VzIC0gZ2V0IGRldmljZSBhY2Nlc3NpYmxlIHBhZ2Vz IHRoYXQgYmFjayB1c2VyDQo+ICAgICogbWVtb3J5IGFuZCBzdGFydCBITU0gdHJhY2tpbmcgQ1BV IHBhZ2UgdGFibGUgdXBkYXRlDQo+IEBAIC03ODAsMjkgKzc5NCwyNyBAQCBzdHJ1Y3QgYW1kZ3B1 X3R0bV90dCB7DQo+ICAgICogQ2FsbGluZyBmdW5jdGlvbiBtdXN0IGNhbGwgYW1kZ3B1X3R0bV90 dF91c2VycHRyX3JhbmdlX2RvbmUoKSBvbmNlIGFuZCBvbmx5DQo+ICAgICogb25jZSBhZnRlcndh cmRzIHRvIHN0b3AgSE1NIHRyYWNraW5nDQo+ICAgICovDQo+IC0jaWYgSVNfRU5BQkxFRChDT05G SUdfRFJNX0FNREdQVV9VU0VSUFRSKQ0KPiAtDQo+IC0jZGVmaW5lIE1BWF9SRVRSWV9ITU1fUkFO R0VfRkFVTFQJMTYNCj4gLQ0KPiAgIGludCBhbWRncHVfdHRtX3R0X2dldF91c2VyX3BhZ2VzKHN0 cnVjdCBhbWRncHVfYm8gKmJvLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKQ0KPiAgIHsNCj4gLQlzdHJ1 Y3QgaG1tX21pcnJvciAqbWlycm9yID0gYm8tPm1uID8gJmJvLT5tbi0+bWlycm9yIDogTlVMTDsN Cj4gICAJc3RydWN0IHR0bV90dCAqdHRtID0gYm8tPnRiby50dG07DQo+ICAgCXN0cnVjdCBhbWRn cHVfdHRtX3R0ICpndHQgPSAodm9pZCAqKXR0bTsNCj4gICAJc3RydWN0IG1tX3N0cnVjdCAqbW07 DQo+ICsJc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2U7DQo+ICAgCXVuc2lnbmVkIGxvbmcgc3RhcnQg PSBndHQtPnVzZXJwdHI7DQo+ICAgCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOw0KPiAtCXN0 cnVjdCBobW1fcmFuZ2UgKnJhbmdlOw0KPiAgIAl1bnNpZ25lZCBsb25nIGk7DQo+IC0JdWludDY0 X3QgKnBmbnM7DQo+ICAgCWludCByID0gMDsNCj4gICANCj4gLQlpZiAodW5saWtlbHkoIW1pcnJv cikpIHsNCj4gLQkJRFJNX0RFQlVHX0RSSVZFUigiRmFpbGVkIHRvIGdldCBobW1fbWlycm9yXG4i KTsNCj4gKwltbSA9IGJvLT5ub3RpZmllci5tbTsNCj4gKwlpZiAodW5saWtlbHkoIW1tKSkgew0K PiArCQlEUk1fREVCVUdfRFJJVkVSKCJCTyBpcyBub3QgcmVnaXN0ZXJlZD9cbiIpOw0KPiAgIAkJ cmV0dXJuIC1FRkFVTFQ7DQo+ICAgCX0NCj4gICANCj4gLQltbSA9IG1pcnJvci0+aG1tLT5tbXVf bm90aWZpZXIubW07DQo+ICsJLyogQW5vdGhlciBnZXRfdXNlcl9wYWdlcyBpcyBydW5uaW5nIGF0 IHRoZSBzYW1lIHRpbWU/PyAqLw0KPiArCWlmIChXQVJOX09OKGd0dC0+cmFuZ2UpKQ0KPiArCQly ZXR1cm4gLUVGQVVMVDsNCj4gKw0KPiAgIAlpZiAoIW1tZ2V0X25vdF96ZXJvKG1tKSkgLyogSGFw cGVucyBkdXJpbmcgcHJvY2VzcyBzaHV0ZG93biAqLw0KPiAgIAkJcmV0dXJuIC1FU1JDSDsNCj4g ICANCj4gQEAgLTgxMSwzMCArODIzLDI0IEBAIGludCBhbWRncHVfdHRtX3R0X2dldF91c2VyX3Bh Z2VzKHN0cnVjdCBhbWRncHVfYm8gKmJvLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKQ0KPiAgIAkJciA9 IC1FTk9NRU07DQo+ICAgCQlnb3RvIG91dDsNCj4gICAJfQ0KPiArCXJhbmdlLT5ub3RpZmllciA9 ICZiby0+bm90aWZpZXI7DQo+ICsJcmFuZ2UtPmZsYWdzID0gaG1tX3JhbmdlX2ZsYWdzOw0KPiAr CXJhbmdlLT52YWx1ZXMgPSBobW1fcmFuZ2VfdmFsdWVzOw0KPiArCXJhbmdlLT5wZm5fc2hpZnQg PSBQQUdFX1NISUZUOw0KPiArCXJhbmdlLT5zdGFydCA9IGJvLT5ub3RpZmllci5pbnRlcnZhbF90 cmVlLnN0YXJ0Ow0KPiArCXJhbmdlLT5lbmQgPSBiby0+bm90aWZpZXIuaW50ZXJ2YWxfdHJlZS5s YXN0ICsgMTsNCj4gKwlyYW5nZS0+ZGVmYXVsdF9mbGFncyA9IGhtbV9yYW5nZV9mbGFnc1tITU1f UEZOX1ZBTElEXTsNCj4gKwlpZiAoIWFtZGdwdV90dG1fdHRfaXNfcmVhZG9ubHkodHRtKSkNCj4g KwkJcmFuZ2UtPmRlZmF1bHRfZmxhZ3MgfD0gcmFuZ2UtPmZsYWdzW0hNTV9QRk5fV1JJVEVdOw0K PiAgIA0KPiAtCXBmbnMgPSBrdm1hbGxvY19hcnJheSh0dG0tPm51bV9wYWdlcywgc2l6ZW9mKCpw Zm5zKSwgR0ZQX0tFUk5FTCk7DQo+IC0JaWYgKHVubGlrZWx5KCFwZm5zKSkgew0KPiArCXJhbmdl LT5wZm5zID0ga3ZtYWxsb2NfYXJyYXkodHRtLT5udW1fcGFnZXMsIHNpemVvZigqcmFuZ2UtPnBm bnMpLA0KPiArCQkJCSAgICAgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKHVubGlrZWx5KCFyYW5nZS0+ cGZucykpIHsNCj4gICAJCXIgPSAtRU5PTUVNOw0KPiAgIAkJZ290byBvdXRfZnJlZV9yYW5nZXM7 DQo+ICAgCX0NCj4gICANCj4gLQlhbWRncHVfaG1tX2luaXRfcmFuZ2UocmFuZ2UpOw0KPiAtCXJh bmdlLT5kZWZhdWx0X2ZsYWdzID0gcmFuZ2UtPmZsYWdzW0hNTV9QRk5fVkFMSURdOw0KPiAtCXJh bmdlLT5kZWZhdWx0X2ZsYWdzIHw9IGFtZGdwdV90dG1fdHRfaXNfcmVhZG9ubHkodHRtKSA/DQo+ IC0JCQkJMCA6IHJhbmdlLT5mbGFnc1tITU1fUEZOX1dSSVRFXTsNCj4gLQlyYW5nZS0+cGZuX2Zs YWdzX21hc2sgPSAwOw0KPiAtCXJhbmdlLT5wZm5zID0gcGZuczsNCj4gLQlyYW5nZS0+c3RhcnQg PSBzdGFydDsNCj4gLQlyYW5nZS0+ZW5kID0gc3RhcnQgKyB0dG0tPm51bV9wYWdlcyAqIFBBR0Vf U0laRTsNCj4gLQ0KPiAtCWhtbV9yYW5nZV9yZWdpc3RlcihyYW5nZSwgbWlycm9yKTsNCj4gLQ0K PiAtCS8qDQo+IC0JICogSnVzdCB3YWl0IGZvciByYW5nZSB0byBiZSB2YWxpZCwgc2FmZSB0byBp Z25vcmUgcmV0dXJuIHZhbHVlIGFzIHdlDQo+IC0JICogd2lsbCB1c2UgdGhlIHJldHVybiB2YWx1 ZSBvZiBobW1fcmFuZ2VfZmF1bHQoKSBiZWxvdyB1bmRlciB0aGUNCj4gLQkgKiBtbWFwX3NlbSB0 byBhc2NlcnRhaW4gdGhlIHZhbGlkaXR5IG9mIHRoZSByYW5nZS4NCj4gLQkgKi8NCj4gLQlobW1f cmFuZ2Vfd2FpdF91bnRpbF92YWxpZChyYW5nZSwgSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7 DQo+ICsJcmFuZ2UtPm5vdGlmaWVyX3NlcSA9IG1tdV9yYW5nZV9yZWFkX2JlZ2luKCZiby0+bm90 aWZpZXIpOw0KPiAgIA0KPiAgIAlkb3duX3JlYWQoJm1tLT5tbWFwX3NlbSk7DQo+ICAgCXZtYSA9 IGZpbmRfdm1hKG1tLCBzdGFydCk7DQo+IEBAIC04NTUsMTAgKzg2MSwxMCBAQCBpbnQgYW1kZ3B1 X3R0bV90dF9nZXRfdXNlcl9wYWdlcyhzdHJ1Y3QgYW1kZ3B1X2JvICpibywgc3RydWN0IHBhZ2Ug KipwYWdlcykNCj4gICAJCWdvdG8gb3V0X2ZyZWVfcGZuczsNCj4gICANCj4gICAJZm9yIChpID0g MDsgaSA8IHR0bS0+bnVtX3BhZ2VzOyBpKyspIHsNCj4gLQkJcGFnZXNbaV0gPSBobW1fZGV2aWNl X2VudHJ5X3RvX3BhZ2UocmFuZ2UsIHBmbnNbaV0pOw0KPiArCQlwYWdlc1tpXSA9IGhtbV9kZXZp Y2VfZW50cnlfdG9fcGFnZShyYW5nZSwgcmFuZ2UtPnBmbnNbaV0pOw0KPiAgIAkJaWYgKHVubGlr ZWx5KCFwYWdlc1tpXSkpIHsNCj4gICAJCQlwcl9lcnIoIlBhZ2UgZmF1bHQgZmFpbGVkIGZvciBw Zm5bJWx1XSA9IDB4JWxseFxuIiwNCj4gLQkJCSAgICAgICBpLCBwZm5zW2ldKTsNCj4gKwkJCSAg ICAgICBpLCByYW5nZS0+cGZuc1tpXSk7DQo+ICAgCQkJciA9IC1FTk9NRU07DQo+ICAgDQo+ICAg CQkJZ290byBvdXRfZnJlZV9wZm5zOw0KPiBAQCAtODczLDggKzg3OSw3IEBAIGludCBhbWRncHVf dHRtX3R0X2dldF91c2VyX3BhZ2VzKHN0cnVjdCBhbWRncHVfYm8gKmJvLCBzdHJ1Y3QgcGFnZSAq KnBhZ2VzKQ0KPiAgIG91dF91bmxvY2s6DQo+ICAgCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7DQo+ ICAgb3V0X2ZyZWVfcGZuczoNCj4gLQlobW1fcmFuZ2VfdW5yZWdpc3RlcihyYW5nZSk7DQo+IC0J a3ZmcmVlKHBmbnMpOw0KPiArCWt2ZnJlZShyYW5nZS0+cGZucyk7DQo+ICAgb3V0X2ZyZWVfcmFu Z2VzOg0KPiAgIAlrZnJlZShyYW5nZSk7DQo+ICAgb3V0Og0KPiBAQCAtOTAzLDkgKzkwOCw4IEBA IGJvb2wgYW1kZ3B1X3R0bV90dF9nZXRfdXNlcl9wYWdlc19kb25lKHN0cnVjdCB0dG1fdHQgKnR0 bSkNCj4gICAJCSJObyB1c2VyIHBhZ2VzIHRvIGNoZWNrXG4iKTsNCj4gICANCj4gICAJaWYgKGd0 dC0+cmFuZ2UpIHsNCj4gLQkJciA9IGhtbV9yYW5nZV92YWxpZChndHQtPnJhbmdlKTsNCj4gLQkJ aG1tX3JhbmdlX3VucmVnaXN0ZXIoZ3R0LT5yYW5nZSk7DQo+IC0NCj4gKwkJciA9IG1tdV9yYW5n ZV9yZWFkX3JldHJ5KGd0dC0+cmFuZ2UtPm5vdGlmaWVyLA0KPiArCQkJCQkgZ3R0LT5yYW5nZS0+ bm90aWZpZXJfc2VxKTsNCj4gICAJCWt2ZnJlZShndHQtPnJhbmdlLT5wZm5zKTsNCj4gICAJCWtm cmVlKGd0dC0+cmFuZ2UpOw0KPiAgIAkJZ3R0LT5yYW5nZSA9IE5VTEw7DQo+IA0K