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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id EF47EC10DC1 for ; Wed, 29 Nov 2023 08:49:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7EA9B6B035B; Wed, 29 Nov 2023 03:49:29 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 79A596B0361; Wed, 29 Nov 2023 03:49:29 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 689EE6B0365; Wed, 29 Nov 2023 03:49:29 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 5632C6B035B for ; Wed, 29 Nov 2023 03:49:29 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 2CA6D1A0491 for ; Wed, 29 Nov 2023 08:49:29 +0000 (UTC) X-FDA: 81510368058.28.A3A12E5 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by imf26.hostedemail.com (Postfix) with ESMTP id 1953C140020 for ; Wed, 29 Nov 2023 08:49:25 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=none; spf=pass (imf26.hostedemail.com: domain of weixi.zhu@huawei.com designates 45.249.212.188 as permitted sender) smtp.mailfrom=weixi.zhu@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701247767; a=rsa-sha256; cv=none; b=BturcofmhxT/TFGTsyCUwbx+4hz4g2Pdtm5T5Kzppwyx4b68gWMicIosRRlE1IgdeRDU1t 4GT+umcMO6aufV+hNAWJAdNxbtZ6B89M0EYRDul5T2IlTA9Krt5W30PHbUvlgefX1wny4w GBG4hDMn4Ww5dwR66IpWW6EVSIzcu7A= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=none; spf=pass (imf26.hostedemail.com: domain of weixi.zhu@huawei.com designates 45.249.212.188 as permitted sender) smtp.mailfrom=weixi.zhu@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701247767; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=C5/aLKcoyuWCSYxcjE36rVF4FKWMu13xGXXSN5fL8TU=; b=RpWXwWBBw1s/MnRKzsIx2m7igrwsMrRw1boEEC5enPqf8s4WDBlWWe6fZdt1hgg4f6wFPB +OYoZ0whbFfXpOCf+8rQckpKdirxMFb3L16ZxL+o+LpoUGFRLPBRnYVrk4CbH2Z4hy5EW9 s9zOWbHJw/aa9fbftCj2554dkRiQZZc= Received: from kwepemm000017.china.huawei.com (unknown [172.30.72.57]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4SgCfD17h2zWhrH; Wed, 29 Nov 2023 16:48:36 +0800 (CST) Received: from kwepemm000018.china.huawei.com (7.193.23.4) by kwepemm000017.china.huawei.com (7.193.23.46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 29 Nov 2023 16:49:19 +0800 Received: from kwepemm000018.china.huawei.com ([7.193.23.4]) by kwepemm000018.china.huawei.com ([7.193.23.4]) with mapi id 15.01.2507.035; Wed, 29 Nov 2023 16:49:19 +0800 From: zhuweixi To: emily , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , "akpm@linux-foundation.org" CC: "leonro@nvidia.com" , "apopple@nvidia.com" , "amd-gfx@lists.freedesktop.org" , "mgorman@suse.de" , "ziy@nvidia.com" , "zhi.a.wang@intel.com" , "rcampbell@nvidia.com" , "jgg@nvidia.com" , "weixi.zhu@openeuler.sh" , "jhubbard@nvidia.com" , "intel-gfx@lists.freedesktop.org" , "mhairgrove@nvidia.com" , "jglisse@redhat.com" , "rodrigo.vivi@intel.com" , "intel-gvt-dev@lists.freedesktop.org" , "tvrtko.ursulin@linux.intel.com" , "Felix.Kuehling@amd.com" , "Xinhui.Pan@amd.com" , "christian.koenig@amd.com" , "alexander.deucher@amd.com" , "ogabbay@kernel.org" Subject: RE: [RFC PATCH 2/6] mm/gmem: add arch-independent abstraction to track address mapping status Thread-Topic: [RFC PATCH 2/6] mm/gmem: add arch-independent abstraction to track address mapping status Thread-Index: AQHaIfl/FUXDXZPHekimunod1B9FPLCQc10AgACKQtA= Date: Wed, 29 Nov 2023 08:49:19 +0000 Message-ID: References: <20231128125025.4449-1-weixi.zhu@huawei.com> <20231128125025.4449-3-weixi.zhu@huawei.com> <04355714-3519-48f6-a5c6-15608b131e71@ingalls.rocks> In-Reply-To: <04355714-3519-48f6-a5c6-15608b131e71@ingalls.rocks> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.174.179.172] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 1953C140020 X-Stat-Signature: o83xbce8ro7mqb4sgth5dyhyahmfic3o X-HE-Tag: 1701247765-221887 X-HE-Meta: U2FsdGVkX1/DOk9i6XOCDkyUd392Cn7fkl1O9kYX4EZyzLJ9TZN/yzp4f14N0f3D4w1D8u/AZUrccFQ3zncmZti6I7/blBklRH4PDHTTYcK6PI1d49AnpCykK/2zsl6XlZpWFUkXcQ6hD3exftEzNF8Q2QyFuWeb/HZq1a/cv/B8OybuPR1ZuDOKhxEEt2KRPIMrpvzeoZX/K6Q/z0iBkS/iTZ3311T/FU1c1Dl2LkRzp1uBQ7aNi6RJ4UrWb8NFmRFm1ifLt5S4ccj2vGvhlA+TKS3DqNlV637Oy6xfC5XslBAqQ7n6Oraanmwg3CVt2ZF9Vihb6KrKkXG9yfFl6vyMwK6cRVazU5lRsjnPKpK4qgJWXFCX05qOt1brIkWhlUVZ7ED9WQEZoqP2VdqwOsR47iSouz9U7T8M9+zcW84chVmLIb8ylXT5/C8slvJ3YMpQuceqd9NbT2LH8+lbkM3F0esE82hhUZBgKxGrS8/VI9r/MuQqgLq1cCjtnMZVOJn0BKLUoscipOEtAug7vX1IoDtnjwG5ol3ze3Ot9qvGvTIOF4hKQJWN37IcvBnrU810Vs6ETAAysyEaVHzIMksHmIMccD0dsKDe0HgQxTUO0ije6OzuXCs1WLTHTNMdf64ToY41bz1GkQtzzvXYSpYzNTdEEV1Nt1UeEReQzK4RdQA8efrqjTpxS0mYcHjXZi5uJq3IZbGHpEIrmV7GsKh6eyujNLfHYSAIDuCfUv22zIi6nEtetobFHGW1FYGie8yCPKsQK1D1SOffjbFvwlwZRFZStofN9iv1mg4EUPPmDycscjdvKZzfAPP1Ix52SbkFEIdNKwtSQ7Odedf34ZM4ROCVTvNKmm+q+qyb1fuFmlZPtMgIyInja7IDFjaO6exP+N8G3YxlBAKF2WLYEE5FK/pVMgh0M3+SnVWdLR0BbwE1XjtBJRs8O6Py+uzj/lhDx7XWekpzSwk7LPe UJfnBcuh IkZ7Q0LwQKD9t8JYUi6OV6TT19aru5XwkwWLZwDN4Hyl3BJIZKGkDvp7+/dWY3xlDwASQvSxOEKykujYl84zRlalzc8bfCFaKnyQD+D0LGx8/ZMhkJPN/Xj/SMVFfBJhI25cURisEdf8PFjmqCy9OZeDgB1c6MPHNz7I7kW/hRdw7jlN2dwW/HPMwU9YkeGc3eGfydXAdDokKoBtTinumEJeJtv8Sisd5ACvaf7WXucFL4Iti6N1LI0xGx6eRAeczW5cfOWG+XLh20aC1jfu0YYK6uTCh92Y2azIdVC58xuCdFAZav5ON/0kieQ69jvaIXJ/N5pksOhTwwdZZSGsaVGOJLRuvhsG+7Ap+i0YJRMLPsBpARWFMjl8XypjNb7g+Ksp6fkNPVpxiuwcVWnxbIcRleaN55PwPX+yL8m+YXJcZO75rGUy5xrkq55H9b5nT7t24Jbq2xkEptOBLNiVQMoi/baLNVXudzp8a3Bd7kNpW/ng+3aB9WYHn3TVnEEf20Jb07xiWFF7B67EbZBEvLOneU2bTLr1vmUYYQxP9sNyf9Rmdga9gNf58MpqQqFgahVl2avHZzGQXwVQ4mWgvfZy5NV85kt/5jv6dVMXzq1H+3XLNzhtigbClvb7tbi+zQK5DQRTAxWQOWwTMcN+wFl/SAQc07JDNx8YdtA+txduMs6Y= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: T29wcywgdGhhdCBzaG91bGQgYmUgY2hhbmdlZCB0byB0aGUgZm9sbG93aW5nOg0KDQovKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQovKg0KICogR2VuZXJhbGl6ZWQg TWVtb3J5IE1hbmFnZW1lbnQuDQogKg0KICogQ29weXJpZ2h0IChDKSAyMDIzLSBIdWF3ZWksIElu Yy4NCiAqIEF1dGhvcjogV2VpeGkgWmh1DQogKg0KICovDQoNClRoYW5rcyBmb3IgcG9pbnRpbmcg aXQgb3V0Lg0KLVdlaXhpDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBlbWls eSA8ZW1pbHlAaW5nYWxscy5yb2Nrcz4gDQpTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVyIDI5LCAy MDIzIDQ6MzMgUE0NClRvOiB6aHV3ZWl4aSA8d2VpeGkuemh1QGh1YXdlaS5jb20+OyBsaW51eC1t bUBrdmFjay5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGFrcG1AbGludXgtZm91 bmRhdGlvbi5vcmcNCkNjOiBsZW9ucm9AbnZpZGlhLmNvbTsgYXBvcHBsZUBudmlkaWEuY29tOyBh bWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgbWdvcm1hbkBzdXNlLmRlOyB6aXlAbnZpZGlh LmNvbTsgemhpLmEud2FuZ0BpbnRlbC5jb207IHJjYW1wYmVsbEBudmlkaWEuY29tOyBqZ2dAbnZp ZGlhLmNvbTsgd2VpeGkuemh1QG9wZW5ldWxlci5zaDsgamh1YmJhcmRAbnZpZGlhLmNvbTsgaW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgbWhhaXJncm92ZUBudmlkaWEuY29tOyBqZ2xp c3NlQHJlZGhhdC5jb207IHJvZHJpZ28udml2aUBpbnRlbC5jb207IGludGVsLWd2dC1kZXZAbGlz dHMuZnJlZWRlc2t0b3Aub3JnOyB0dnJ0a28udXJzdWxpbkBsaW51eC5pbnRlbC5jb207IEZlbGl4 Lkt1ZWhsaW5nQGFtZC5jb207IFhpbmh1aS5QYW5AYW1kLmNvbTsgY2hyaXN0aWFuLmtvZW5pZ0Bh bWQuY29tOyBhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tOyBvZ2FiYmF5QGtlcm5lbC5vcmcNClN1 YmplY3Q6IFJlOiBbUkZDIFBBVENIIDIvNl0gbW0vZ21lbTogYWRkIGFyY2gtaW5kZXBlbmRlbnQg YWJzdHJhY3Rpb24gdG8gdHJhY2sgYWRkcmVzcyBtYXBwaW5nIHN0YXR1cw0KDQoNCk9uIDExLzI4 LzIzIDA3OjUwLCBXZWl4aSBaaHUgd3JvdGU6DQo+IFRoaXMgcGF0Y2ggYWRkcyBhbiBhYnN0cmFj dGlvbiBsYXllciwgc3RydWN0IHZtX29iamVjdCwgdGhhdCBtYWludGFpbnMgDQo+IHBlci1wcm9j ZXNzIHZpcnR1YWwtdG8tcGh5c2ljYWwgbWFwcGluZyBzdGF0dXMgc3RvcmVkIGluIHN0cnVjdCBn bV9tYXBwaW5nLg0KPiBGb3IgZXhhbXBsZSwgYSB2aXJ0dWFsIHBhZ2UgbWF5IGJlIG1hcHBlZCB0 byBhIENQVSBwaHlzaWNhbCBwYWdlIG9yIHRvIA0KPiBhIGRldmljZSBwaHlzaWNhbCBwYWdlLiBT dHJ1Y3Qgdm1fb2JqZWN0IGVmZmVjdGl2ZWx5IG1haW50YWlucyBhbiANCj4gYXJjaC1pbmRlcGVu ZGVudCBwYWdlIHRhYmxlLCB3aGljaCBpcyBkZWZpbmVkIGFzIGEgImxvZ2ljYWwgcGFnZSB0YWJs ZSIuDQo+IFdoaWxlIGFyY2gtZGVwZW5kZW50IHBhZ2UgdGFibGUgdXNlZCBieSBhIHJlYWwgTU1V IGlzIG5hbWVkIGEgDQo+ICJwaHlzaWNhbCBwYWdlIHRhYmxlIi4gVGhlIGxvZ2ljYWwgcGFnZSB0 YWJsZSBpcyB1c2VmdWwgaWYgTGludXggY29yZSANCj4gTU0gaXMgZXh0ZW5kZWQgdG8gaGFuZGxl IGEgdW5pZmllZCB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2Ugd2l0aCBleHRlcm5hbCANCj4gYWNjZWxl cmF0b3JzIHVzaW5nIGN1c3RvbWl6ZWQgTU1Vcy4NCj4NCj4gSW4gdGhpcyBwYXRjaCwgc3RydWN0 IHZtX29iamVjdCB1dGlsaXplcyBhIHJhZGl4IHRyZWUgKHhhcnJheSkgdG8gDQo+IHRyYWNrIHdo ZXJlIGEgdmlydHVhbCBwYWdlIGlzIG1hcHBlZCB0by4gVGhpcyBhZGRzIGV4dHJhIG1lbW9yeSAN Cj4gY29uc3VtcHRpb24gZnJvbSB4YXJyYXksIGJ1dCBwcm92aWRlcyBhIG5pY2UgYWJzdHJhY3Rp b24gdG8gaXNvbGF0ZSANCj4gbWFwcGluZyBzdGF0dXMgZnJvbSB0aGUgbWFjaGluZS1kZXBlbmRl bnQgbGF5ZXIgKFBURXMpLiBCZXNpZGVzIA0KPiBzdXBwb3J0aW5nIGFjY2VsZXJhdG9ycyB3aXRo IGV4dGVybmFsIE1NVXMsIHN0cnVjdCB2bV9vYmplY3QgaXMgDQo+IHBsYW5uZWQgdG8gZnVydGhl ciB1bmlvbiB3aXRoIGlfcGFnZXMgaW4gc3RydWN0IGFkZHJlc3NfbWFwcGluZyBmb3IgZmlsZS1i YWNrZWQgbWVtb3J5Lg0KPg0KPiBUaGUgaWRlYSBvZiBzdHJ1Y3Qgdm1fb2JqZWN0IGlzIG9yaWdp bmF0ZWQgZnJvbSBGcmVlQlNEIFZNIGRlc2lnbiwgDQo+IHdoaWNoIHByb3ZpZGVzIGEgdW5pZmll ZCBhYnN0cmFjdGlvbiBmb3IgYW5vbnltb3VzIG1lbW9yeSwgZmlsZS1iYWNrZWQgDQo+IG1lbW9y eSwgcGFnZSBjYWNoZSBhbmQgZXRjWzFdLg0KPg0KPiBDdXJyZW50bHksIExpbnV4IHV0aWxpemVz IGEgc2V0IG9mIGhpZXJhcmNoaWNhbCBwYWdlIHdhbGsgZnVuY3Rpb25zIHRvIA0KPiBhYnN0cmFj dCBwYWdlIHRhYmxlIG1hbmlwdWxhdGlvbnMgb2YgZGlmZmVyZW50IENQVSBhcmNoaXRlY3R1cmUu IFRoZSANCj4gcHJvYmxlbSBoYXBwZW5zIHdoZW4gYSBkZXZpY2Ugd2FudHMgdG8gcmV1c2UgTGlu dXggTU0gY29kZSB0byBtYW5hZ2UgDQo+IGl0cyBwYWdlIHRhYmxlIC0tIHRoZSBkZXZpY2UgcGFn ZSB0YWJsZSBtYXkgbm90IGJlIGFjY2Vzc2libGUgdG8gdGhlIENQVS4NCj4gRXhpc3Rpbmcgc29s dXRpb24gbGlrZSBMaW51eCBITU0gdXRpbGl6ZXMgdGhlIE1NVSBub3RpZmllciBtZWNoYW5pc21z IA0KPiB0byBpbnZva2UgZGV2aWNlLXNwZWNpZmljIE1NVSBmdW5jdGlvbnMsIGJ1dCByZWxpZXMg b24gZW5jb2RpbmcgdGhlIA0KPiBtYXBwaW5nIHN0YXR1cyBvbiB0aGUgQ1BVIHBhZ2UgdGFibGUg ZW50cmllcy4gVGhpcyBlbnRhbmdsZXMgDQo+IG1hY2hpbmUtaW5kZXBlbmRlbnQgY29kZSB3aXRo IG1hY2hpbmUtZGVwZW5kZW50IGNvZGUsIGFuZCBhbHNvIGJyaW5ncyB1bm5lY2Vzc2FyeSByZXN0 cmljdGlvbnMuDQo+IFRoZSBQVEUgc2l6ZSBhbmQgZm9ybWF0IHZhcnkgYXJjaCBieSBhcmNoLCB3 aGljaCBoYXJtcyB0aGUgZXh0ZW5zaWJpbGl0eS4NCj4NCj4gWzFdIGh0dHBzOi8vZG9jcy5mcmVl YnNkLm9yZy9lbi9hcnRpY2xlcy92bS1kZXNpZ24vDQo+DQo+IFNpZ25lZC1vZmYtYnk6IFdlaXhp IFpodSA8d2VpeGkuemh1QGh1YXdlaS5jb20+DQo+IC0tLQ0KPiAgIGluY2x1ZGUvbGludXgvZ21l bS5oICAgICB8IDEyMCArKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICAgaW5jbHVkZS9saW51 eC9tbV90eXBlcy5oIHwgICA0ICsNCj4gICBtbS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDIg Ky0NCj4gICBtbS92bV9vYmplY3QuYyAgICAgICAgICAgfCAxODQgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrDQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAzMDkgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQ0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBtbS92bV9vYmplY3Qu Yw0KPg0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9nbWVtLmggYi9pbmNsdWRlL2xpbnV4 L2dtZW0uaCBpbmRleCANCj4gZmZmODc3ODczNTU3Li41MjlmZjY3NTVhOTkgMTAwNjQ0DQo+IC0t LSBhL2luY2x1ZGUvbGludXgvZ21lbS5oDQo+ICsrKyBiL2luY2x1ZGUvbGludXgvZ21lbS5oDQo+ IEBAIC05LDExICs5LDEzMSBAQA0KPiAgICNpZm5kZWYgX0dNRU1fSA0KPiAgICNkZWZpbmUgX0dN RU1fSA0KPiAgIA0KPiArI2luY2x1ZGUgPGxpbnV4L21tX3R5cGVzLmg+DQo+ICsNCj4gICAjaWZk ZWYgQ09ORklHX0dNRU0NCj4gKw0KPiArI2RlZmluZSBHTV9QQUdFX0NQVQkweDEwIC8qIERldGVy bWluZXMgd2hldGhlciBwYWdlIGlzIGEgcG9pbnRlciBvciBhIHBmbiBudW1iZXIuICovDQo+ICsj ZGVmaW5lIEdNX1BBR0VfREVWSUNFCTB4MjANCj4gKyNkZWZpbmUgR01fUEFHRV9OT01BUAkweDQw DQo+ICsjZGVmaW5lIEdNX1BBR0VfV0lMTE5FRUQJMHg4MA0KPiArDQo+ICsjZGVmaW5lIEdNX1BB R0VfVFlQRV9NQVNLCShHTV9QQUdFX0NQVSB8IEdNX1BBR0VfREVWSUNFIHwgR01fUEFHRV9OT01B UCkNCj4gKw0KPiArc3RydWN0IGdtX21hcHBpbmcgew0KPiArCXVuc2lnbmVkIGludCBmbGFnOw0K PiArDQo+ICsJdW5pb24gew0KPiArCQlzdHJ1Y3QgcGFnZSAqcGFnZTsJLyogQ1BVIG5vZGUgKi8N Cj4gKwkJc3RydWN0IGdtX2RldiAqZGV2OwkvKiBoZXRlcm8tbm9kZS4gVE9ETzogc3VwcG9ydCBt dWx0aXBsZSBkZXZpY2VzICovDQo+ICsJCXVuc2lnbmVkIGxvbmcgcGZuOw0KPiArCX07DQo+ICsN Cj4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9p ZCBnbV9tYXBwaW5nX2ZsYWdzX3NldChzdHJ1Y3QgZ21fbWFwcGluZyANCj4gKypnbV9tYXBwaW5n LCBpbnQgZmxhZ3MpIHsNCj4gKwlpZiAoZmxhZ3MgJiBHTV9QQUdFX1RZUEVfTUFTSykNCj4gKwkJ Z21fbWFwcGluZy0+ZmxhZyAmPSB+R01fUEFHRV9UWVBFX01BU0s7DQo+ICsNCj4gKwlnbV9tYXBw aW5nLT5mbGFnIHw9IGZsYWdzOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgZ21f bWFwcGluZ19mbGFnc19jbGVhcihzdHJ1Y3QgZ21fbWFwcGluZyANCj4gKypnbV9tYXBwaW5nLCBp bnQgZmxhZ3MpIHsNCj4gKwlnbV9tYXBwaW5nLT5mbGFnICY9IH5mbGFnczsNCj4gK30NCj4gKw0K PiArc3RhdGljIGlubGluZSBib29sIGdtX21hcHBpbmdfY3B1KHN0cnVjdCBnbV9tYXBwaW5nICpn bV9tYXBwaW5nKSB7DQo+ICsJcmV0dXJuICEhKGdtX21hcHBpbmctPmZsYWcgJiBHTV9QQUdFX0NQ VSk7IH0NCj4gKw0KPiArc3RhdGljIGlubGluZSBib29sIGdtX21hcHBpbmdfZGV2aWNlKHN0cnVj dCBnbV9tYXBwaW5nICpnbV9tYXBwaW5nKSB7DQo+ICsJcmV0dXJuICEhKGdtX21hcHBpbmctPmZs YWcgJiBHTV9QQUdFX0RFVklDRSk7IH0NCj4gKw0KPiArc3RhdGljIGlubGluZSBib29sIGdtX21h cHBpbmdfbm9tYXAoc3RydWN0IGdtX21hcHBpbmcgKmdtX21hcHBpbmcpIHsNCj4gKwlyZXR1cm4g ISEoZ21fbWFwcGluZy0+ZmxhZyAmIEdNX1BBR0VfTk9NQVApOyB9DQo+ICsNCj4gK3N0YXRpYyBp bmxpbmUgYm9vbCBnbV9tYXBwaW5nX3dpbGxuZWVkKHN0cnVjdCBnbV9tYXBwaW5nICpnbV9tYXBw aW5nKSANCj4gK3sNCj4gKwlyZXR1cm4gISEoZ21fbWFwcGluZy0+ZmxhZyAmIEdNX1BBR0VfV0lM TE5FRUQpOyB9DQo+ICsNCj4gICAvKiBoLU5VTUEgdG9wb2xvZ3kgKi8NCj4gICB2b2lkIF9faW5p dCBobnVtYV9pbml0KHZvaWQpOw0KPiArDQo+ICsvKiB2bSBvYmplY3QgKi8NCj4gKy8qDQo+ICsg KiBFYWNoIHBlci1wcm9jZXNzIHZtX29iamVjdCB0cmFja3MgdGhlIG1hcHBpbmcgc3RhdHVzIG9m IHZpcnR1YWwgDQo+ICtwYWdlcyBmcm9tDQo+ICsgKiBhbGwgVk1BcyBtbWFwKCktZWQgd2l0aCBN QVBfUFJJVkFURSB8IE1BUF9QRUVSX1NIQVJFRC4NCj4gKyAqLw0KPiArc3RydWN0IHZtX29iamVj dCB7DQo+ICsJc3BpbmxvY2tfdCBsb2NrOw0KPiArDQo+ICsJLyoNCj4gKwkgKiBUaGUgbG9naWNh bF9wYWdlX3RhYmxlIGlzIGEgY29udGFpbmVyIHRoYXQgaG9sZHMgdGhlIG1hcHBpbmcNCj4gKwkg KiBpbmZvcm1hdGlvbiBiZXR3ZWVuIGEgVkEgYW5kIGEgc3RydWN0IHBhZ2UuDQo+ICsJICovDQo+ ICsJc3RydWN0IHhhcnJheSAqbG9naWNhbF9wYWdlX3RhYmxlOw0KPiArCWF0b21pY190IG5yX3Bh Z2VzOw0KPiArfTsNCj4gKw0KPiAraW50IF9faW5pdCB2bV9vYmplY3RfaW5pdCh2b2lkKTsNCj4g K3N0cnVjdCB2bV9vYmplY3QgKnZtX29iamVjdF9jcmVhdGUoc3RydWN0IG1tX3N0cnVjdCAqbW0p OyB2b2lkIA0KPiArdm1fb2JqZWN0X2Ryb3BfbG9ja2VkKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTsN Cj4gKw0KPiArc3RydWN0IGdtX21hcHBpbmcgKmFsbG9jX2dtX21hcHBpbmcodm9pZCk7IHZvaWQg DQo+ICtmcmVlX2dtX21hcHBpbmdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsgc3RydWN0 IGdtX21hcHBpbmcgDQo+ICsqdm1fb2JqZWN0X2xvb2t1cChzdHJ1Y3Qgdm1fb2JqZWN0ICpvYmos IHVuc2lnbmVkIGxvbmcgdmEpOyB2b2lkIA0KPiArdm1fb2JqZWN0X21hcHBpbmdfY3JlYXRlKHN0 cnVjdCB2bV9vYmplY3QgKm9iaiwgdW5zaWduZWQgbG9uZyBzdGFydCk7IA0KPiArdm9pZCB1bm1h cF9nbV9tYXBwaW5nc19yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQg bG9uZyBzdGFydCwNCj4gKwkJCSAgICAgdW5zaWduZWQgbG9uZyBlbmQpOw0KPiArdm9pZCBtdW5t YXBfaW5fcGVlcl9kZXZpY2VzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0 YXJ0LA0KPiArCQkJICAgIHVuc2lnbmVkIGxvbmcgZW5kKTsNCj4gICAjZWxzZQ0KPiAgIHN0YXRp YyBpbmxpbmUgdm9pZCBobnVtYV9pbml0KHZvaWQpIHt9DQo+ICtzdGF0aWMgaW5saW5lIHZvaWQg X19pbml0IHZtX29iamVjdF9pbml0KHZvaWQpIHsgfSBzdGF0aWMgaW5saW5lIA0KPiArc3RydWN0 IHZtX29iamVjdCAqdm1fb2JqZWN0X2NyZWF0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkg ew0KPiArCXJldHVybiBOVUxMOw0KPiArfQ0KPiArc3RhdGljIGlubGluZSB2b2lkIHZtX29iamVj dF9kcm9wX2xvY2tlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkgDQo+ICt7IH0gc3RhdGlj IGlubGluZSBzdHJ1Y3QgZ21fbWFwcGluZyAqYWxsb2NfZ21fbWFwcGluZyh2b2lkKSB7DQo+ICsJ cmV0dXJuIE5VTEw7DQo+ICt9DQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV9nbV9tYXBwaW5n cyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkgeyB9IA0KPiArc3RhdGljIGlubGluZSBzdHJ1 Y3QgZ21fbWFwcGluZyAqdm1fb2JqZWN0X2xvb2t1cChzdHJ1Y3Qgdm1fb2JqZWN0ICpvYmosDQo+ ICsJCQkJCQkgIHVuc2lnbmVkIGxvbmcgdmEpDQo+ICt7DQo+ICsJcmV0dXJuIE5VTEw7DQo+ICt9 DQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgdm1fb2JqZWN0X21hcHBpbmdfY3JlYXRlKHN0cnVjdCB2 bV9vYmplY3QgKm9iaiwNCj4gKwkJCQkJICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQpDQo+ICt7DQo+ ICt9DQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgdW5tYXBfZ21fbWFwcGluZ3NfcmFuZ2Uoc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEsDQo+ICsJCQkJCSAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsDQo+ ICsJCQkJCSAgIHVuc2lnbmVkIGxvbmcgZW5kKQ0KPiArew0KPiArfQ0KPiArc3RhdGljIGlubGlu ZSB2b2lkIG11bm1hcF9pbl9wZWVyX2RldmljZXMoc3RydWN0IG1tX3N0cnVjdCAqbW0sDQo+ICsJ CQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwNCj4gKwkJCQkJICB1bnNpZ25lZCBsb25nIGVuZCkN Cj4gK3sNCj4gK30NCj4gICAjZW5kaWYNCj4gICANCj4gICAjZW5kaWYgLyogX0dNRU1fSCAqLw0K PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9t bV90eXBlcy5oIGluZGV4IA0KPiA5NTdjZTM4NzY4YjIuLjRlNTBkYzAxOWQ3NSAxMDA2NDQNCj4g LS0tIGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oDQo+ICsrKyBiL2luY2x1ZGUvbGludXgvbW1f dHlwZXMuaA0KPiBAQCAtMzEsNiArMzEsNyBAQA0KPiAgIA0KPiAgIHN0cnVjdCBhZGRyZXNzX3Nw YWNlOw0KPiAgIHN0cnVjdCBtZW1fY2dyb3VwOw0KPiArc3RydWN0IHZtX29iamVjdDsNCj4gICAN Cj4gICAvKg0KPiAgICAqIEVhY2ggcGh5c2ljYWwgcGFnZSBpbiB0aGUgc3lzdGVtIGhhcyBhIHN0 cnVjdCBwYWdlIGFzc29jaWF0ZWQgDQo+IHdpdGggQEAgLTk3NCw2ICs5NzUsOSBAQCBzdHJ1Y3Qg bW1fc3RydWN0IHsNCj4gICAjZW5kaWYNCj4gICAJCX0gbHJ1X2dlbjsNCj4gICAjZW5kaWYgLyog Q09ORklHX0xSVV9HRU4gKi8NCj4gKyNpZmRlZiBDT05GSUdfR01FTQ0KPiArCQlzdHJ1Y3Qgdm1f b2JqZWN0ICp2bV9vYmo7DQo+ICsjZW5kaWYNCj4gICAJfSBfX3JhbmRvbWl6ZV9sYXlvdXQ7DQo+ ICAgDQo+ICAgCS8qDQo+IGRpZmYgLS1naXQgYS9tbS9NYWtlZmlsZSBiL21tL01ha2VmaWxlIGlu ZGV4IA0KPiBmNDhlYTJlYjRhNDQuLmQyZGZhYjAxMmM5NiAxMDA2NDQNCj4gLS0tIGEvbW0vTWFr ZWZpbGUNCj4gKysrIGIvbW0vTWFrZWZpbGUNCj4gQEAgLTEzOCw0ICsxMzgsNCBAQCBvYmotJChD T05GSUdfSU9fTUFQUElORykgKz0gaW8tbWFwcGluZy5vDQo+ICAgb2JqLSQoQ09ORklHX0hBVkVf Qk9PVE1FTV9JTkZPX05PREUpICs9IGJvb3RtZW1faW5mby5vDQo+ICAgb2JqLSQoQ09ORklHX0dF TkVSSUNfSU9SRU1BUCkgKz0gaW9yZW1hcC5vDQo+ICAgb2JqLSQoQ09ORklHX1NIUklOS0VSX0RF QlVHKSArPSBzaHJpbmtlcl9kZWJ1Zy5vDQo+IC1vYmotJChDT05GSUdfR01FTSkgKz0gZ21lbS5v DQo+ICtvYmotJChDT05GSUdfR01FTSkgKz0gZ21lbS5vIHZtX29iamVjdC5vDQo+IGRpZmYgLS1n aXQgYS9tbS92bV9vYmplY3QuYyBiL21tL3ZtX29iamVjdC5jIG5ldyBmaWxlIG1vZGUgMTAwNjQ0 IA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjRlNzY3MzdlMGNhMQ0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiL21tL3ZtX29iamVjdC5jDQo+IEBAIC0wLDAgKzEsMTg0IEBADQo+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiArLyoNCj4gKyAqIGFyY2gvYWxwaGEvYm9vdC9i b290cC5jDQo+ICsgKg0KPiArICogQ29weXJpZ2h0IChDKSAxOTk3IEpheSBFc3RhYnJvb2sNCj4g KyAqDQo+ICsgKiBUaGlzIGZpbGUgaXMgdXNlZCBmb3IgY3JlYXRpbmcgYSBib290cCBmaWxlIGZv ciB0aGUgTGludXgvQVhQIA0KPiAra2VybmVsDQo+ICsgKg0KPiArICogYmFzZWQgc2lnbmlmaWNh bnRseSBvbiB0aGUgYXJjaC9hbHBoYS9ib290L21haW4uYyBvZiBMaW51cyANCj4gK1RvcnZhbGRz ICAqLw0KDQoNCmkgYmVsaWV2ZSB5b3UgaGF2ZSBtYWRlIGEgbWlzdGFrZSBoZXJlLiB5b3Ugd2ls bCBsaWtlbHkgd2FudCB0byBjb3JyZWN0IHRoZSBpbmZvcm1hdGlvbiBpbiB0aGlzIGNvbW1lbnQu DQoNCj4gKyNpbmNsdWRlIDxsaW51eC9tbS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2dtZW0uaD4N Cj4gKw0KPiArLyoNCj4gKyAqIFNpbmUgVk1fT0JKRUNUIG1haW50YWlucyB0aGUgbG9naWNhbCBw YWdlIHRhYmxlIHVuZGVyIGVhY2ggVk1BLCANCj4gK2FuZCBlYWNoIFZNQQ0KPiArICogcG9pbnRz IHRvIGEgVk1fT0JKRUNULiBVbHRpbWF0ZWx5IFZNX09CSkVDVHMgbXVzdCBiZSBtYWludGFpbmVk IGFzIA0KPiArbG9uZyBhcyBWTUENCj4gKyAqIGdldHMgY2hhbmdlZDogbWVyZ2UsIHNwbGl0LCBh ZGp1c3QgICovIHN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSANCj4gKyp2bV9vYmplY3RfY2FjaGVw OyBzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmdtX21hcHBpbmdfY2FjaGVwOw0KPiArDQo+ICtz dGF0aWMgaW5saW5lIHZvaWQgcmVsZWFzZV9nbV9tYXBwaW5nKHN0cnVjdCBnbV9tYXBwaW5nICpt YXBwaW5nKSB7DQo+ICsJa21lbV9jYWNoZV9mcmVlKGdtX21hcHBpbmdfY2FjaGVwLCBtYXBwaW5n KTsgfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBnbV9tYXBwaW5nICpsb29rdXBfZ21f bWFwcGluZyhzdHJ1Y3Qgdm1fb2JqZWN0ICpvYmosDQo+ICsJCQkJCQkgICB1bnNpZ25lZCBsb25n IHBpbmRleCkNCj4gK3sNCj4gKwlyZXR1cm4geGFfbG9hZChvYmotPmxvZ2ljYWxfcGFnZV90YWJs ZSwgcGluZGV4KTsgfQ0KPiArDQo+ICtpbnQgX19pbml0IHZtX29iamVjdF9pbml0KHZvaWQpDQo+ ICt7DQo+ICsJdm1fb2JqZWN0X2NhY2hlcCA9IEtNRU1fQ0FDSEUodm1fb2JqZWN0LCAwKTsNCj4g KwlpZiAoIXZtX29iamVjdF9jYWNoZXApDQo+ICsJCWdvdG8gb3V0Ow0KPiArDQo+ICsJZ21fbWFw cGluZ19jYWNoZXAgPSBLTUVNX0NBQ0hFKGdtX21hcHBpbmcsIDApOw0KPiArCWlmICghZ21fbWFw cGluZ19jYWNoZXApDQo+ICsJCWdvdG8gZnJlZV92bV9vYmplY3Q7DQo+ICsNCj4gKwlyZXR1cm4g MDsNCj4gK2ZyZWVfdm1fb2JqZWN0Og0KPiArCWttZW1fY2FjaGVfZGVzdHJveSh2bV9vYmplY3Rf Y2FjaGVwKTsNCj4gK291dDoNCj4gKwlyZXR1cm4gLUVOT01FTTsNCj4gK30NCj4gKw0KPiArLyoN Cj4gKyAqIENyZWF0ZSBhIFZNX09CSkVDVCBhbmQgYXR0YWNoIGl0IHRvIGEgbW1fc3RydWN0DQo+ ICsgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgd2hlbiBhIHRhc2tfc3RydWN0IGlzIGNyZWF0ZWQu DQo+ICsgKi8NCj4gK3N0cnVjdCB2bV9vYmplY3QgKnZtX29iamVjdF9jcmVhdGUoc3RydWN0IG1t X3N0cnVjdCAqbW0pIHsNCj4gKwlzdHJ1Y3Qgdm1fb2JqZWN0ICpvYmogPSBrbWVtX2NhY2hlX2Fs bG9jKHZtX29iamVjdF9jYWNoZXAsIA0KPiArR0ZQX0tFUk5FTCk7DQo+ICsNCj4gKwlpZiAoIW9i aikNCj4gKwkJcmV0dXJuIE5VTEw7DQo+ICsNCj4gKwlzcGluX2xvY2tfaW5pdCgmb2JqLT5sb2Nr KTsNCj4gKw0KPiArCS8qDQo+ICsJICogVGhlIGxvZ2ljYWwgcGFnZSB0YWJsZSBtYXBzIHZhID4+ IFBBR0VfU0hJRlQNCj4gKwkgKiB0byBwb2ludGVycyBvZiBzdHJ1Y3QgZ21fbWFwcGluZy4NCj4g KwkgKi8NCj4gKwlvYmotPmxvZ2ljYWxfcGFnZV90YWJsZSA9IGttYWxsb2Moc2l6ZW9mKHN0cnVj dCB4YXJyYXkpLCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAoIW9iai0+bG9naWNhbF9wYWdlX3RhYmxl KSB7DQo+ICsJCWttZW1fY2FjaGVfZnJlZSh2bV9vYmplY3RfY2FjaGVwLCBvYmopOw0KPiArCQly ZXR1cm4gTlVMTDsNCj4gKwl9DQo+ICsNCj4gKwl4YV9pbml0KG9iai0+bG9naWNhbF9wYWdlX3Rh YmxlKTsNCj4gKwlhdG9taWNfc2V0KCZvYmotPm5yX3BhZ2VzLCAwKTsNCj4gKw0KPiArCXJldHVy biBvYmo7DQo+ICt9DQo+ICsNCj4gKy8qIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIGEgbW0g bm8gbG9uZ2VyIHJlZmVycyB0byBhIFZNX09CSkVDVCAqLyANCj4gK3ZvaWQgdm1fb2JqZWN0X2Ry b3BfbG9ja2VkKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKSB7DQo+ICsJc3RydWN0IHZtX29iamVjdCAq b2JqID0gbW0tPnZtX29iajsNCj4gKw0KPiArCWlmICghb2JqKQ0KPiArCQlyZXR1cm47DQo+ICsN Cj4gKwkvKg0KPiArCSAqIFdlIG11c3QgZW50ZXIgdGhpcyB3aXRoIFZNQSB3cml0ZS1sb2NrZWQs IHdoaWNoIGlzIHVuZm9ydHVuYXRlbHkgYQ0KPiArCSAqIGdpYW50IGxvY2suDQo+ICsJICovDQo+ ICsJbW1hcF9hc3NlcnRfd3JpdGVfbG9ja2VkKG1tKTsNCj4gKwltbS0+dm1fb2JqID0gTlVMTDsN Cj4gKw0KPiArCXhhX2Rlc3Ryb3kob2JqLT5sb2dpY2FsX3BhZ2VfdGFibGUpOw0KPiArCWtmcmVl KG9iai0+bG9naWNhbF9wYWdlX3RhYmxlKTsNCj4gKwlrbWVtX2NhY2hlX2ZyZWUodm1fb2JqZWN0 X2NhY2hlcCwgb2JqKTsgfQ0KPiArDQo+ICsvKg0KPiArICogR2l2ZW4gYSBWQSwgdGhlIHBhZ2Vf aW5kZXggaXMgY29tcHV0ZWQgYnkNCj4gKyAqIHBhZ2VfaW5kZXggPSBhZGRyZXNzID4+IFBBR0Vf U0hJRlQgICovIHN0cnVjdCBnbV9tYXBwaW5nIA0KPiArKnZtX29iamVjdF9sb29rdXAoc3RydWN0 IHZtX29iamVjdCAqb2JqLCB1bnNpZ25lZCBsb25nIHZhKSB7DQo+ICsJcmV0dXJuIGxvb2t1cF9n bV9tYXBwaW5nKG9iaiwgdmEgPj4gUEFHRV9TSElGVCk7IH0gDQo+ICtFWFBPUlRfU1lNQk9MX0dQ TCh2bV9vYmplY3RfbG9va3VwKTsNCj4gKw0KPiArdm9pZCB2bV9vYmplY3RfbWFwcGluZ19jcmVh dGUoc3RydWN0IHZtX29iamVjdCAqb2JqLCB1bnNpZ25lZCBsb25nIA0KPiArc3RhcnQpIHsNCj4g Kw0KPiArCXVuc2lnbmVkIGxvbmcgaW5kZXggPSBzdGFydCA+PiBQQUdFX1NISUZUOw0KPiArCXN0 cnVjdCBnbV9tYXBwaW5nICpnbV9tYXBwaW5nOw0KPiArDQo+ICsJaWYgKCFvYmopDQo+ICsJCXJl dHVybjsNCj4gKw0KPiArCWdtX21hcHBpbmcgPSBhbGxvY19nbV9tYXBwaW5nKCk7DQo+ICsJaWYg KCFnbV9tYXBwaW5nKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlfX3hhX3N0b3JlKG9iai0+bG9n aWNhbF9wYWdlX3RhYmxlLCBpbmRleCwgZ21fbWFwcGluZywgR0ZQX0tFUk5FTCk7IA0KPiArfQ0K PiArDQo+ICsvKiBnbV9tYXBwaW5nIHdpbGwgbm90IGJlIHJlbGVhc2UgZHluYW1pY2FsbHkgKi8g c3RydWN0IGdtX21hcHBpbmcgDQo+ICsqYWxsb2NfZ21fbWFwcGluZyh2b2lkKSB7DQo+ICsJc3Ry dWN0IGdtX21hcHBpbmcgKmdtX21hcHBpbmcgPSBrbWVtX2NhY2hlX3phbGxvYyhnbV9tYXBwaW5n X2NhY2hlcCwgDQo+ICtHRlBfS0VSTkVMKTsNCj4gKw0KPiArCWlmICghZ21fbWFwcGluZykNCj4g KwkJcmV0dXJuIE5VTEw7DQo+ICsNCj4gKwlnbV9tYXBwaW5nX2ZsYWdzX3NldChnbV9tYXBwaW5n LCBHTV9QQUdFX05PTUFQKTsNCj4gKwltdXRleF9pbml0KCZnbV9tYXBwaW5nLT5sb2NrKTsNCj4g Kw0KPiArCXJldHVybiBnbV9tYXBwaW5nOw0KPiArfQ0KPiArDQo+ICsvKiBUaGlzIHNob3VsZCBi ZSBjYWxsZWQgd2hlbiBhIFBFRVJfU0hBRVJEIHZtYSBpcyBmcmVlZCAqLyB2b2lkIA0KPiArZnJl ZV9nbV9tYXBwaW5ncyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkgew0KPiArCXN0cnVjdCBn bV9tYXBwaW5nICpnbV9tYXBwaW5nOw0KPiArCXN0cnVjdCB2bV9vYmplY3QgKm9iajsNCj4gKw0K PiArCW9iaiA9IHZtYS0+dm1fbW0tPnZtX29iajsNCj4gKwlpZiAoIW9iaikNCj4gKwkJcmV0dXJu Ow0KPiArDQo+ICsJWEFfU1RBVEUoeGFzLCBvYmotPmxvZ2ljYWxfcGFnZV90YWJsZSwgdm1hLT52 bV9zdGFydCA+PiBQQUdFX1NISUZUKTsNCj4gKw0KPiArCXhhX2xvY2sob2JqLT5sb2dpY2FsX3Bh Z2VfdGFibGUpOw0KPiArCQl4YXNfZm9yX2VhY2goJnhhcywgZ21fbWFwcGluZywgdm1hLT52bV9l bmQgPj4gUEFHRV9TSElGVCkgew0KPiArCQlyZWxlYXNlX2dtX21hcHBpbmcoZ21fbWFwcGluZyk7 DQo+ICsJCXhhc19zdG9yZSgmeGFzLCBOVUxMKTsNCj4gKwl9DQo+ICsJeGFfdW5sb2NrKG9iai0+ bG9naWNhbF9wYWdlX3RhYmxlKTsNCj4gK30NCj4gKw0KPiArdm9pZCB1bm1hcF9nbV9tYXBwaW5n c19yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCwN Cj4gKwkJCSAgICB1bnNpZ25lZCBsb25nIGVuZCkNCj4gK3sNCj4gKwlzdHJ1Y3QgeGFycmF5ICps b2dpY2FsX3BhZ2VfdGFibGU7DQo+ICsJc3RydWN0IGdtX21hcHBpbmcgKmdtX21hcHBpbmc7DQo+ ICsJc3RydWN0IHBhZ2UgKnBhZ2UgPSBOVUxMOw0KPiArDQo+ICsJaWYgKCF2bWEtPnZtX21tLT52 bV9vYmopDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCWxvZ2ljYWxfcGFnZV90YWJsZSA9IHZtYS0+ dm1fbW0tPnZtX29iai0+bG9naWNhbF9wYWdlX3RhYmxlOw0KPiArCWlmICghbG9naWNhbF9wYWdl X3RhYmxlKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlYQV9TVEFURSh4YXMsIGxvZ2ljYWxfcGFn ZV90YWJsZSwgc3RhcnQgPj4gUEFHRV9TSElGVCk7DQo+ICsNCj4gKwl4YV9sb2NrKGxvZ2ljYWxf cGFnZV90YWJsZSk7DQo+ICsJeGFzX2Zvcl9lYWNoKCZ4YXMsIGdtX21hcHBpbmcsIGVuZCA+PiBQ QUdFX1NISUZUKSB7DQo+ICsJCXBhZ2UgPSBnbV9tYXBwaW5nLT5wYWdlOw0KPiArCQlpZiAocGFn ZSAmJiAocGFnZV9yZWZfY291bnQocGFnZSkgIT0gMCkpIHsNCj4gKwkJCXB1dF9wYWdlKHBhZ2Up Ow0KPiArCQkJZ21fbWFwcGluZy0+cGFnZSA9IE5VTEw7DQo+ICsJCX0NCj4gKwl9DQo+ICsJeGFf dW5sb2NrKGxvZ2ljYWxfcGFnZV90YWJsZSk7DQo+ICt9DQo=