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 CDFB7D5C0C5 for ; Fri, 8 Nov 2024 13:44:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4D12F6B008C; Fri, 8 Nov 2024 08:44:13 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 480F06B0092; Fri, 8 Nov 2024 08:44:13 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 322116B0096; Fri, 8 Nov 2024 08:44:13 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 0E3776B008C for ; Fri, 8 Nov 2024 08:44:13 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id BA4AAAC267 for ; Fri, 8 Nov 2024 13:44:12 +0000 (UTC) X-FDA: 82763044224.20.CDAB21A Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by imf04.hostedemail.com (Postfix) with ESMTP id CE15B40005 for ; Fri, 8 Nov 2024 13:43:22 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf04.hostedemail.com: domain of shiju.jose@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=shiju.jose@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731073365; 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=qMXGmBpSl3KKcKLwpnJ4EUsp56WObM77BtT5p7fnUpg=; b=g+c+0fdg+2WO64QgfC6oMq40a7OBiSkv1ZQN/tZdBd+vy1P6cZ9pPBXAeNomB+FYuRYqRi aQUlxFcnrcFwO5nd4N2FJ1Xg2JQc09SKonV0vqbWFWnFgDaECzrhnlmON/GBatTG2jrIKB BF8Qan3vcDljZeA2A874ZijRvRADT2g= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf04.hostedemail.com: domain of shiju.jose@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=shiju.jose@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731073365; a=rsa-sha256; cv=none; b=duhQveQTM2pRHTywAS8BLrZGJVVojSO3sn6HfJLXnSI+TBuzPDkTUuaU67Dvxn1P+BWzWv 4/CHLJpRp7fGsJpRmPusKS9eBgox9puc4nFg4wdQSU4WUShmmL69zATSC+28+BUYjynAmS j+dFNDwzbBYe6/Spb8ch+itpjNuhUA8= Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4XlKpc2VgXz6J7G4; Fri, 8 Nov 2024 21:41:12 +0800 (CST) Received: from frapeml500008.china.huawei.com (unknown [7.182.85.71]) by mail.maildlp.com (Postfix) with ESMTPS id 1B28C140133; Fri, 8 Nov 2024 21:44:06 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml500008.china.huawei.com (7.182.85.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Fri, 8 Nov 2024 14:44:05 +0100 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.039; Fri, 8 Nov 2024 14:44:05 +0100 From: Shiju Jose To: Dave Jiang , "linux-edac@vger.kernel.org" , "linux-cxl@vger.kernel.org" , "linux-acpi@vger.kernel.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" CC: "bp@alien8.de" , "tony.luck@intel.com" , "rafael@kernel.org" , "lenb@kernel.org" , "mchehab@kernel.org" , "dan.j.williams@intel.com" , "dave@stgolabs.net" , Jonathan Cameron , "gregkh@linuxfoundation.org" , "sudeep.holla@arm.com" , "jassisinghbrar@gmail.com" , "alison.schofield@intel.com" , "vishal.l.verma@intel.com" , "ira.weiny@intel.com" , "david@redhat.com" , "Vilas.Sridharan@amd.com" , "leo.duran@amd.com" , "Yazen.Ghannam@amd.com" , "rientjes@google.com" , "jiaqiyan@google.com" , "Jon.Grimm@amd.com" , "dave.hansen@linux.intel.com" , "naoya.horiguchi@nec.com" , "james.morse@arm.com" , "jthoughton@google.com" , "somasundaram.a@hpe.com" , "erdemaktas@google.com" , "pgonda@google.com" , "duenwen@google.com" , "gthelen@google.com" , "wschwartz@amperecomputing.com" , "dferguson@amperecomputing.com" , "wbs@os.amperecomputing.com" , "nifan.cxl@gmail.com" , tanxiaofei , "Zengtao (B)" , Roberto Sassu , "kangkang.shen@futurewei.com" , wanghuiqiang , Linuxarm Subject: RE: [PATCH v15 14/15] cxl/memfeature: Add CXL memory device memory sparing control feature Thread-Topic: [PATCH v15 14/15] cxl/memfeature: Add CXL memory device memory sparing control feature Thread-Index: AQHbLD8GVQ8/Ti8PZkW1mLWCqqnlRLKr+bMAgAFzcmA= Date: Fri, 8 Nov 2024 13:44:05 +0000 Message-ID: <6184763d868b41a7813273192f75bb1c@huawei.com> References: <20241101091735.1465-1-shiju.jose@huawei.com> <20241101091735.1465-15-shiju.jose@huawei.com> <02ae81fe-2396-4631-a648-31b0980efcca@intel.com> In-Reply-To: <02ae81fe-2396-4631-a648-31b0980efcca@intel.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.48.151.69] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: CE15B40005 X-Stat-Signature: pqrhqw9yn8zennb5w4qtoj5u1zxprm8u X-HE-Tag: 1731073402-349967 X-HE-Meta: U2FsdGVkX1+Q/6729bX9KaXqXPuzLoBxsfws3rUgarKjMSGEOey4GwuuZr6LcwobE/xa9DP6lXOa8x2X4ZbrB2qE2AJvWZACUK76QboShOXaWj4yeMH7P6MYGONQ1OSi3L1Uehtn2lLPf6ZHbfXjKvwo3P3aC6KuD1TYzOPtxXOPL1srfkLAq7p0pe6r5Bf3IxnCBE1QF459EvBpKwyuDiV1vLoe8HM/GagXm2QSvaaV57e9qriliEPqv1Ckfzngug7LHEC06RSdJ07a9yaVcES5FTF/83bftXNTCwRBVhEFGmBwl4R3uerJ8Vqxy+MGhrQK0KNE0rpnUe/jCUPsFFuZ5L+XeXxpVeXmDx8G3y9ityMLsl0q3Ot2FhAaFg00ff/lK5Xifl6h8dcT/6awTpid2anZ8INPEpcIqmuZocN2ev3Rf/AWyshHPx2hP58FTRwMAc1hTTbIEVUYwlJilNC+TtHjewze/80lzu8F/jVbTgfWzeSt6iZ33I4G4hgF+wTAYK3mCZjGkmzpAc+f2eoTPf8CP6XdqocLQIkhA3419aqEAPMG81RKIYwGnXCU+BWDHYpTg6fDTskff4lfwAars5K36z4sHRULm5V+ITNtHmiwj2ZCmNpmdIAz2jP51kDmTEhRhH/UrKwHj+wdpxPtCdPjoHtiTRQjyy7xmKErPO3txW9R975qqawv7j4XSTAit7n38msFgZW28EJXt0qmThXwcMzrkHhV9QFb5OR7WaBpp74aNRYNPr7ttPu1MdZWPGZe42OP7ukD/cHYxlOTo5mCiNzjQf9HMAL+KGN3OjAbnaJ7KZOAYS17jn0JKqcHhF62h6EdnQuJzDAeVeAoZMxh+NOrt93DrLxHThfyblXwa3GLY8b+N6Ztr60UgaR2r4OJGWwbgYV1lk2tUSXjX+KDLSjvCVuKTmt3iShj1H31AiJLguiYsdpWX0aOxKJjmku3w7UhRg/0h/L RjLGX2Z8 e4f0aLdyJ3A1BpRoj9/MofwU+SAQBBUR5d7HVKP16xoouunAelHci37GDAos55on9KiOAfL85/WOuBDIYOzgx6nbbJ1j0Jp221lrvj0o7WuV7/6Y7+AY8gixAWsCpbLDS9Nu01gtZVbZXOob+Yqbi/EqYERuISURbcT9mcP8bPYwiwmP2JRTXWVBd3CEvV/r9/NPDNjrWRJWg5hU35rU5hWzmR3L8Nvz0OgoLmwVlvxl5ccp+wkf0V9ArNbFwex6ux9ypPON63VGeXfIgVWarTtZIF6F63eIvUuvixuyWY0dw1Sxs9Pr85yO/P06btwOi7f+G8MZhTDjeP6b9au6fp6nBL2N1QvX0S1At5Z2SAqTZMD3lJk7oee1Sx2F/dOkD3cidsli7CJyug7nS6ZPf+gJFDj6l0NX81aRFVyYlgkwrJUpocPxt53dYSZT+9XqTVaINeTP+TUxzA3dJorBZW9UHIM4XLy05UWVX0QT8rF6ASZK/bLcl9nW4mGzK0YRUzlVcGHELBGuoIXVM89yQfgKsPvPe4sOD7t3/8z7aT0v1qGn+Ir65/7hLevGybtrsNUyLdunQF7WQbu9krYNxgGslrpL++v/yV+ahHLg3wOZpyXpdSLfJEHWb4rcM9OAj/L03XS8L3llQmthU70OAXGzptME21nD9sSvR5nOeHDQqcOYZQtiJWTzvIGNBssrZ37Z5Cccf+yhVZQ2Yrr4tI/RjFrYWnAixXT0J2AliJ0316Ip7BMd2K29TZR/BH+Ns1kJMu3HebDjN8zqPKaRXNCYQm9o0TACRa456QvRqFCTigl893WxVK0YmcCyMLdQ82tHPgBxpCEK//r2OM/E1cdA4apiDLJiNo5TUkOZ4QsurQGqQEmN6uW8O8n7w8F8FoZUTd5wBnXrMfklWWTMBtHt+a/ydpJ4VBl+91OZIW1LI4sFF8j20I4pe4o3TCzweZkI1xuakrmdwe/6JIowVH+jgvwlT aKXdVbNY gpBL4/nGBLt3MkxTuPauJkxfopHnFZ8F 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: DQo+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj5Gcm9tOiBEYXZlIEppYW5nIDxkYXZlLmpp YW5nQGludGVsLmNvbT4NCj5TZW50OiAwNyBOb3ZlbWJlciAyMDI0IDE2OjI0DQo+VG86IFNoaWp1 IEpvc2UgPHNoaWp1Lmpvc2VAaHVhd2VpLmNvbT47IGxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3Jn OyBsaW51eC0NCj5jeGxAdmdlci5rZXJuZWwub3JnOyBsaW51eC1hY3BpQHZnZXIua2VybmVsLm9y ZzsgbGludXgtbW1Aa3ZhY2sub3JnOyBsaW51eC0NCj5rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+ Q2M6IGJwQGFsaWVuOC5kZTsgdG9ueS5sdWNrQGludGVsLmNvbTsgcmFmYWVsQGtlcm5lbC5vcmc7 IGxlbmJAa2VybmVsLm9yZzsNCj5tY2hlaGFiQGtlcm5lbC5vcmc7IGRhbi5qLndpbGxpYW1zQGlu dGVsLmNvbTsgZGF2ZUBzdGdvbGFicy5uZXQ7IEpvbmF0aGFuDQo+Q2FtZXJvbiA8am9uYXRoYW4u Y2FtZXJvbkBodWF3ZWkuY29tPjsgZ3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc7DQo+c3VkZWVw LmhvbGxhQGFybS5jb207IGphc3Npc2luZ2hicmFyQGdtYWlsLmNvbTsgYWxpc29uLnNjaG9maWVs ZEBpbnRlbC5jb207DQo+dmlzaGFsLmwudmVybWFAaW50ZWwuY29tOyBpcmEud2VpbnlAaW50ZWwu Y29tOyBkYXZpZEByZWRoYXQuY29tOw0KPlZpbGFzLlNyaWRoYXJhbkBhbWQuY29tOyBsZW8uZHVy YW5AYW1kLmNvbTsgWWF6ZW4uR2hhbm5hbUBhbWQuY29tOw0KPnJpZW50amVzQGdvb2dsZS5jb207 IGppYXFpeWFuQGdvb2dsZS5jb207IEpvbi5HcmltbUBhbWQuY29tOw0KPmRhdmUuaGFuc2VuQGxp bnV4LmludGVsLmNvbTsgbmFveWEuaG9yaWd1Y2hpQG5lYy5jb207DQo+amFtZXMubW9yc2VAYXJt LmNvbTsganRob3VnaHRvbkBnb29nbGUuY29tOyBzb21hc3VuZGFyYW0uYUBocGUuY29tOw0KPmVy ZGVtYWt0YXNAZ29vZ2xlLmNvbTsgcGdvbmRhQGdvb2dsZS5jb207IGR1ZW53ZW5AZ29vZ2xlLmNv bTsNCj5ndGhlbGVuQGdvb2dsZS5jb207IHdzY2h3YXJ0ekBhbXBlcmVjb21wdXRpbmcuY29tOw0K PmRmZXJndXNvbkBhbXBlcmVjb21wdXRpbmcuY29tOyB3YnNAb3MuYW1wZXJlY29tcHV0aW5nLmNv bTsNCj5uaWZhbi5jeGxAZ21haWwuY29tOyB0YW54aWFvZmVpIDx0YW54aWFvZmVpQGh1YXdlaS5j b20+OyBaZW5ndGFvIChCKQ0KPjxwcmltZS56ZW5nQGhpc2lsaWNvbi5jb20+OyBSb2JlcnRvIFNh c3N1IDxyb2JlcnRvLnNhc3N1QGh1YXdlaS5jb20+Ow0KPmthbmdrYW5nLnNoZW5AZnV0dXJld2Vp LmNvbTsgd2FuZ2h1aXFpYW5nIDx3YW5naHVpcWlhbmdAaHVhd2VpLmNvbT47DQo+TGludXhhcm0g PGxpbnV4YXJtQGh1YXdlaS5jb20+DQo+U3ViamVjdDogUmU6IFtQQVRDSCB2MTUgMTQvMTVdIGN4 bC9tZW1mZWF0dXJlOiBBZGQgQ1hMIG1lbW9yeSBkZXZpY2UNCj5tZW1vcnkgc3BhcmluZyBjb250 cm9sIGZlYXR1cmUNCj4NCj4NCj4NCj5PbiAxMS8xLzI0IDI6MTcgQU0sIHNoaWp1Lmpvc2VAaHVh d2VpLmNvbSB3cm90ZToNCj4+IEZyb206IFNoaWp1IEpvc2UgPHNoaWp1Lmpvc2VAaHVhd2VpLmNv bT4NCj4+DQo+PiBNZW1vcnkgc3BhcmluZyBpcyBkZWZpbmVkIGFzIGEgcmVwYWlyIGZ1bmN0aW9u IHRoYXQgcmVwbGFjZXMgYSBwb3J0aW9uDQo+PiBvZiBtZW1vcnkgd2l0aCBhIHBvcnRpb24gb2Yg ZnVuY3Rpb25hbCBtZW1vcnkgYXQgdGhhdCBzYW1lIERQQS4gVGhlDQo+PiBzdWJjbGFzc2VzIGZv ciB0aGlzIG9wZXJhdGlvbiB2YXJ5IGluIHRlcm1zIG9mIHRoZSBzY29wZSBvZiB0aGUNCj4+IHNw YXJpbmcgYmVpbmcgcGVyZm9ybWVkLiBUaGUgY2FjaGVsaW5lIHNwYXJpbmcgc3ViY2xhc3MgcmVm ZXJzIHRvIGENCj4+IHNwYXJpbmcgYWN0aW9uIHRoYXQgY2FuIHJlcGxhY2UgYSBmdWxsIGNhY2hl bGluZS4gUm93IHNwYXJpbmcgaXMNCj4+IHByb3ZpZGVkIGFzIGFuIGFsdGVybmF0aXZlIHRvIFBQ UiBzcGFyaW5nIGZ1bmN0aW9ucyBhbmQgaXRzIHNjb3BlIGlzDQo+PiB0aGF0IG9mIGEgc2luZ2xl IEREUiByb3cuIEJhbmsgc3BhcmluZyBhbGxvd3MgYW4gZW50aXJlIGJhbmsgdG8gYmUNCj4+IHJl cGxhY2VkLiBSYW5rIHNwYXJpbmcgaXMgZGVmaW5lZCBhcyBhbiBvcGVyYXRpb24gaW4gd2hpY2gg YW4gZW50aXJlIEREUiByYW5rDQo+aXMgcmVwbGFjZWQuDQo+Pg0KPj4gTWVtb3J5IHNwYXJpbmcg bWFpbnRlbmFuY2Ugb3BlcmF0aW9ucyBtYXkgYmUgc3VwcG9ydGVkIGJ5IENYTCBkZXZpY2VzDQo+ PiB0aGF0IGltcGxlbWVudCBDWEwubWVtIHByb3RvY29sLiBBIHNwYXJpbmcgbWFpbnRlbmFuY2Ug b3BlcmF0aW9uDQo+PiByZXF1ZXN0cyB0aGUgQ1hMIGRldmljZSB0byBwZXJmb3JtIGEgcmVwYWly IG9wZXJhdGlvbiBvbiBpdHMgbWVkaWEuDQo+PiBGb3IgZXhhbXBsZSwgYSBDWEwgZGV2aWNlIHdp dGggRFJBTSBjb21wb25lbnRzIHRoYXQgc3VwcG9ydCBtZW1vcnkNCj4+IHNwYXJpbmcgZmVhdHVy ZXMgbWF5IGltcGxlbWVudCBzcGFyaW5nIG1haW50ZW5hbmNlIG9wZXJhdGlvbnMuDQo+Pg0KPj4g VGhlIGhvc3QgbWF5IGlzc3VlIGEgcXVlcnkgY29tbWFuZCBieSBzZXR0aW5nIHF1ZXJ5IHJlc291 cmNlcyBmbGFnIGluDQo+PiB0aGUgaW5wdXQgcGF5bG9hZCAoQ1hMIHNwZWMgMy4xIFRhYmxlIDgt MTA1KSB0byBkZXRlcm1pbmUgYXZhaWxhYmlsaXR5DQo+PiBvZiBzcGFyaW5nIHJlc291cmNlcyBm b3IgYSBnaXZlbiBhZGRyZXNzLiBJbiByZXNwb25zZSB0byBhIHF1ZXJ5DQo+PiByZXF1ZXN0LCB0 aGUgZGV2aWNlIHNoYWxsIHJlcG9ydCB0aGUgcmVzb3VyY2UgYXZhaWxhYmlsaXR5IGJ5DQo+PiBw cm9kdWNpbmcgdGhlIG1lbW9yeSBzcGFyaW5nIGV2ZW50IHJlY29yZCAoQ1hMIHNwZWMgMy4xIFRh YmxlIDgtNDgpIGluDQo+PiB3aGljaCB0aGUgQ2hhbm5lbCwgUmFuaywgTmliYmxlIE1hc2ssIEJh bmsgR3JvdXAsIEJhbmssIFJvdywgQ29sdW1uLA0KPj4gU3ViLUNoYW5uZWwgZmllbGRzIGFyZSBh IGNvcHkgb2YgdGhlIHZhbHVlcyBzcGVjaWZpZWQgaW4gdGhlIHJlcXVlc3QuDQo+Pg0KPj4gRHVy aW5nIHRoZSBleGVjdXRpb24gb2YgYSBzcGFyaW5nIG1haW50ZW5hbmNlIG9wZXJhdGlvbiwgYSBD WEwgbWVtb3J5DQo+PiBkZXZpY2U6DQo+PiAtIE1heSBvciBtYXkgbm90IHJldGFpbiBkYXRhDQo+ PiAtIE1heSBvciBtYXkgbm90IGJlIGFibGUgdG8gcHJvY2VzcyBDWEwubWVtIHJlcXVlc3RzIGNv cnJlY3RseS4NCj4+IFRoZXNlIENYTCBtZW1vcnkgZGV2aWNlIGNhcGFiaWxpdGllcyBhcmUgc3Bl Y2lmaWVkIGJ5IHJlc3RyaWN0aW9uDQo+PiBmbGFncyBpbiB0aGUgbWVtb3J5IHNwYXJpbmcgZmVh dHVyZSByZWFkYWJsZSBhdHRyaWJ1dGVzLg0KPj4NCj4+IFdoZW4gYSBDWEwgZGV2aWNlIGlkZW50 aWZpZXMgYSBmYWlsdXJlIG9uIGEgbWVtb3J5IGNvbXBvbmVudCwgdGhlDQo+PiBkZXZpY2UgbWF5 IGluZm9ybSB0aGUgaG9zdCBhYm91dCB0aGUgbmVlZCBmb3IgYSBtZW1vcnkgc3BhcmluZw0KPj4g bWFpbnRlbmFuY2Ugb3BlcmF0aW9uIGJ5IHVzaW5nIGFuIEV2ZW50IFJlY29yZCwgd2hlcmUgdGhl IG1haW50ZW5hbmNlDQo+PiBuZWVkZWQgZmxhZyBtYXkgc2V0LiBUaGUgZXZlbnQgcmVjb3JkIHNw ZWNpZmllcyBzb21lIG9mIHRoZSBEUEEsDQo+PiBDaGFubmVsLCBSYW5rLCBOaWJibGUgTWFzaywg QmFuayBHcm91cCwgQmFuaywgUm93LCBDb2x1bW4sIFN1Yi1DaGFubmVsDQo+PiBmaWVsZHMgdGhh dCBzaG91bGQgYmUgcmVwYWlyZWQuIFRoZSB1c2Vyc3BhY2UgdG9vbCByZXF1ZXN0cyBmb3INCj4+ IG1haW50ZW5hbmNlIG9wZXJhdGlvbiBpZiB0aGUgbnVtYmVyIG9mIGNvcnJlY3RlZCBlcnJvciBy ZXBvcnRlZCBvbiBhDQo+PiBDWEwubWVtIG1lZGlhIGV4Y2VlZHMgZXJyb3IgdGhyZXNob2xkLg0K Pj4NCj4+IENYTCBzcGVjIDMuMSBzZWN0aW9uIDguMi45LjcuMS40IGRlc2NyaWJlcyB0aGUgZGV2 aWNlJ3MgbWVtb3J5IHNwYXJpbmcNCj4+IG1haW50ZW5hbmNlIG9wZXJhdGlvbiBmZWF0dXJlLg0K Pj4NCj4+IENYTCBzcGVjIDMuMSBzZWN0aW9uIDguMi45LjcuMi4zIGRlc2NyaWJlcyB0aGUgbWVt b3J5IHNwYXJpbmcgZmVhdHVyZQ0KPj4gZGlzY292ZXJ5IGFuZCBjb25maWd1cmF0aW9uLg0KPj4N Cj4+IEFkZCBzdXBwb3J0IGZvciBjb250cm9sbGluZyBDWEwgbWVtb3J5IGRldmljZSBtZW1vcnkg c3BhcmluZyBmZWF0dXJlLg0KPj4gUmVnaXN0ZXIgd2l0aCBFREFDIGRyaXZlciwgd2hpY2ggZ2V0 cyB0aGUgbWVtb3J5IHJlcGFpciBhdHRyDQo+PiBkZXNjcmlwdG9ycyBmcm9tIHRoZSBFREFDIG1l bW9yeSByZXBhaXIgZHJpdmVyIGFuZCBleHBvc2VzIHN5c2ZzDQo+PiByZXBhaXIgY29udHJvbCBh dHRyaWJ1dGVzIGZvciBtZW1vcnkgc3BhcmluZyB0byB0aGUgdXNlcnNwYWNlLiBGb3INCj4+IGV4 YW1wbGUgQ1hMIG1lbW9yeSBzcGFyaW5nIGNvbnRyb2wgZm9yIHRoZSBDWEwgbWVtMCBkZXZpY2Ug aXMgZXhwb3NlZA0KPj4gaW4gL3N5cy9idXMvZWRhYy9kZXZpY2VzL2N4bF9tZW0wL21lbV9yZXBh aXJYLw0KPj4NCj4+IFVzZSBjYXNlDQo+PiA9PT09PT09PQ0KPj4gMS4gQ1hMIGRldmljZSBpZGVu dGlmaWVzIGEgZmFpbHVyZSBpbiBhIG1lbW9yeSBjb21wb25lbnQsIHJlcG9ydCB0bw0KPj4gICAg dXNlcnNwYWNlIGluIGEgQ1hMIGdlbmVyaWMvRFJBTSB0cmFjZSBldmVudC4NCj4+IDIuIFJhc2Rh ZW1vbiBwcm9jZXNzIHRoZSB0cmFjZSBldmVudCBhbmQgaXNzdWUgcXVlcnkgcmVxdWVzdCBpbiBz eXNmcw0KPj4gdG8gY2hlY2sgcmVzb3VyY2VzIGF2YWlsYWJsZSBmb3IgbWVtb3J5IHNwYXJpbmcg aWYgZWl0aGVyIG9mIHRoZQ0KPj4gZm9sbG93aW5nIGNvbmRpdGlvbnMgbWV0Lg0KPj4gIC0gbnVt YmVyIG9mIGNvcnJlY3RlZCBlcnJvciByZXBvcnRlZCBvbiBhIENYTC5tZW0gbWVkaWEgZXhjZWVk cyBlcnJvcg0KPj4gdGhyZXNob2xkDQo+PiAgLSBtYWludGVuYW5jZSBuZWVkZWQgZmxhZyBzZXQg aW4gdGhlIGV2ZW50IHJlY29yZC4NCj4+IDMuIENYTCBkZXZpY2Ugc2hhbGwgcmVwb3J0IHRoZSBy ZXNvdXJjZSBhdmFpbGFiaWxpdHkgYnkgcHJvZHVjaW5nIHRoZQ0KPj4gbWVtb3J5IHNwYXJpbmcg ZXZlbnQgcmVjb3JkIGluIHdoaWNoIHRoZSBjaGFubmVsLCByYW5rLCBuaWJibGUgbWFzaywNCj4+ IGJhbmsgR3JvdXAsIGJhbmssIHJvdywgY29sdW1uLCBzdWItY2hhbm5lbCBmaWVsZHMgYXJlIGEg Y29weSBvZiB0aGUNCj4+IHZhbHVlcyBzcGVjaWZpZWQgaW4gdGhlIHJlcXVlc3QuIFRoZSBxdWVy eSByZXNvdXJjZSBjb21tYW5kIHNoYWxsDQo+PiByZXR1cm4gZXJyb3IgKGludmFsaWQgaW5wdXQp IGlmIHRoZSBjb250cm9sbGVyIGRvZXMgbm90IHN1cHBvcnQNCj4+IHJlcG9ydGluZyByZXNvdXJj ZSBpcyBhdmFpbGFibGUuDQo+PiA0LiBSYXNkYWVtb24gcHJvY2VzcyB0aGUgbWVtb3J5IHNwYXJp bmcgdHJhY2UgZXZlbnQgYW5kIGlzc3VlIHJlcGFpcg0KPj4gcmVxdWVzdCBmb3IgbWVtb3J5IHNw YXJpbmcuDQo+Pg0KPj4gS2VybmVsIENYTCBkcml2ZXIgc2hhbGwgcmVwb3J0IG1lbW9yeSBzcGFy aW5nIGV2ZW50IHJlY29yZCB0byB0aGUNCj4+IHVzZXJzcGFjZSB3aXRoIHRoZSByZXNvdXJjZSBh dmFpbGFiaWxpdHkgaW4gb3JkZXIgcmFzZGFlbW9uIHRvIHByb2Nlc3MNCj4+IHRoZSBldmVudCBy ZWNvcmQgYW5kIGlzc3VlIGEgcmVwYWlyIHJlcXVlc3QgaW4gc3lzZnMgZm9yIHRoZSBtZW1vcnkN Cj4+IHNwYXJpbmcgb3BlcmF0aW9uIGluIHRoZSBDWEwgZGV2aWNlLg0KPj4NCj4+IFRlc3RlZCBm b3IgbWVtb3J5IHNwYXJpbmcgY29udHJvbCBmZWF0dXJlIHdpdGgNCj4+ICAgICJody9jeGw6IEFk ZCBtZW1vcnkgc3BhcmluZyBjb250cm9sIGZlYXR1cmUiDQo+PiAgICBSZXBvc2l0b3J5OiAiaHR0 cHM6Ly9naXRsYWIuY29tL3NoaWp1Lmpvc2UvcWVtdS5naXQiDQo+PiAgICBCcmFuY2g6IGN4bC1y YXMtZmVhdHVyZXMtMjAyNC0xMC0yNA0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IFNoaWp1IEpvc2Ug PHNoaWp1Lmpvc2VAaHVhd2VpLmNvbT4NCj4+IC0tLQ0KPj4gIGRyaXZlcnMvY3hsL2NvcmUvbWVt ZmVhdHVyZS5jIHwgNDg1DQo+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystDQo+ PiAgMSBmaWxlIGNoYW5nZWQsIDQ4NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+Pg0K Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3hsL2NvcmUvbWVtZmVhdHVyZS5jDQo+PiBiL2RyaXZl cnMvY3hsL2NvcmUvbWVtZmVhdHVyZS5jIGluZGV4IDkyMzhhZDEwNzY2ZS4uMDcxYzllMWMxN2Rm DQo+PiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvY3hsL2NvcmUvbWVtZmVhdHVyZS5jDQo+PiAr KysgYi9kcml2ZXJzL2N4bC9jb3JlL21lbWZlYXR1cmUuYw0KPj4gQEAgLTE4LDcgKzE4LDcgQEAN Cj4+ICAjaW5jbHVkZSA8Y3hsbWVtLmg+DQo+PiAgI2luY2x1ZGUgImNvcmUuaCINCj4+DQo+PiAt I2RlZmluZSBDWExfREVWX05VTV9SQVNfRkVBVFVSRVMJMw0KPj4gKyNkZWZpbmUgQ1hMX0RFVl9O VU1fUkFTX0ZFQVRVUkVTCTcNCj4+ICAjZGVmaW5lIENYTF9ERVZfSE9VUl9JTl9TRUNTCTM2MDAN Cj4+DQo+PiAgI2RlZmluZSBDWExfU0NSVUJfTkFNRV9MRU4JMTI4DQo+PiBAQCAtOTM4LDkgKzkz OCw0NTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBlZGFjX21lbV9yZXBhaXJfb3BzDQo+Y3hsX3Nw cHJfb3BzID0gew0KPj4gIAkuZG9fcmVwYWlyID0gY3hsX2RvX3BwciwNCj4+ICB9Ow0KPj4NCj4+ ICsvKiBDWEwgbWVtb3J5IHNwYXJpbmcgY29udHJvbCBkZWZpbml0aW9ucyAqLw0KPj4gKy8qIFNl ZSBDWEwgcmV2IDMuMSBAOC4yLjkuNy4yIFRhYmxlIDgtMTEwIE1haW50ZW5hbmNlIE9wZXJhdGlv biAqLw0KPj4gKyNkZWZpbmUgQ1hMX0NBQ0hFTElORV9TUEFSSU5HX1VVSUQgVVVJRF9JTklUKDB4 OTZDMzMzODYsIDB4OTFkZCwNCj4weDQ0YzcsIDB4OWUsIDB4Y2IsICAgIFwNCj4+ICsJCSAgMHhm ZCwgMHhhZiwgMHg2NSwgMHgwMywgMHhiYSwgMHhjNCkNCj4+ICsjZGVmaW5lIENYTF9ST1dfU1BB UklOR19VVUlEIFVVSURfSU5JVCgweDQ1MGViZjY3LCAweGIxMzUsIDB4NGY5NywNCj4weGE0LCAw eDk4LCAgICBcDQo+PiArCQkgIDB4YzIsIDB4ZDUsIDB4N2YsIDB4MjcsIDB4OWIsIDB4ZWQpDQo+ PiArI2RlZmluZSBDWExfQkFOS19TUEFSSU5HX1VVSUQgVVVJRF9JTklUKDB4NzhiNzk2MzYsIDB4 OTBhYywgMHg0YjY0LA0KPjB4YTQsIDB4ZWYsICAgIFwNCj4+ICsJCSAgMHhmYSwgMHhhYywgMHg1 ZCwgMHgxOCwgMHhhOCwgMHg2MykNCj4+ICsjZGVmaW5lIENYTF9SQU5LX1NQQVJJTkdfVVVJRCAg VVVJRF9JTklUKDB4MzRkYmFmZjUsIDB4MDU1MiwgMHg0MjgxLA0KPjB4OGYsIDB4NzYsICAgIFwN Cj4+ICsJCSAgMHhkYSwgMHgwYiwgMHg1ZSwgMHg3YSwgMHg3NiwgMHhhNykNCj4+ICsNCj4+ICtl bnVtIGN4bF9tZW1fc3BhcmluZ19ncmFudWxhcml0eSB7DQo+PiArCUNYTF9NRU1fU1BBUklOR19D QUNIRUxJTkUsDQo+PiArCUNYTF9NRU1fU1BBUklOR19ST1csDQo+PiArCUNYTF9NRU1fU1BBUklO R19CQU5LLA0KPj4gKwlDWExfTUVNX1NQQVJJTkdfUkFOSywNCj4+ICsJQ1hMX01FTV9TUEFSSU5H X01BWA0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IGN4bF9tZW1fc3BhcmluZ19jb250ZXh0IHsN Cj4+ICsJdXVpZF90IHJlcGFpcl91dWlkOw0KPj4gKwl1OCBpbnN0YW5jZTsNCj4+ICsJdTE2IGdl dF9mZWF0X3NpemU7DQo+PiArCXUxNiBzZXRfZmVhdF9zaXplOw0KPj4gKwl1OCBnZXRfdmVyc2lv bjsNCj4+ICsJdTggc2V0X3ZlcnNpb247DQo+PiArCXUxNiBzZXRfZWZmZWN0czsNCj4+ICsJc3Ry dWN0IGN4bF9tZW1kZXYgKmN4bG1kOw0KPj4gKwllbnVtIGVkYWNfbWVtX3JlcGFpcl90eXBlIHJl cGFpcl90eXBlOw0KPj4gKwllbnVtIGVkYWNfbWVtX3JlcGFpcl9wZXJzaXN0X21vZGUgcGVyc2lz dF9tb2RlOw0KPj4gKwllbnVtIGN4bF9tZW1fc3BhcmluZ19ncmFudWxhcml0eSBncmFudWxhcml0 eTsNCj4+ICsJYm9vbCBkcGFfc3VwcG9ydDsNCj4+ICsJdTY0IGRwYTsNCj4+ICsJdTggY2hhbm5l bDsNCj4+ICsJdTggcmFuazsNCj4+ICsJdTMyIG5pYmJsZV9tYXNrOw0KPj4gKwl1OCBiYW5rX2dy b3VwOw0KPj4gKwl1OCBiYW5rOw0KPj4gKwl1MzIgcm93Ow0KPj4gKwl1MTYgY29sdW1uOw0KPj4g Kwl1OCBzdWJfY2hhbm5lbDsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCBjeGxfbWVtZGV2X3Nw YXJpbmdfcGFyYW1zIHsNCj4+ICsJdTggb3BfY2xhc3M7DQo+PiArCXU4IG9wX3N1YmNsYXNzOw0K Pj4gKwlib29sIGNhcF9zYWZlX3doZW5faW5fdXNlOw0KPj4gKwlib29sIGNhcF9oYXJkX3NwYXJp bmc7DQo+PiArCWJvb2wgY2FwX3NvZnRfc3BhcmluZzsNCj4+ICt9Ow0KPj4gKw0KPj4gK2VudW0g Y3hsX21lbV9zcGFyaW5nX3BhcmFtX3R5cGUgew0KPj4gKwlDWExfTUVNX1NQQVJJTkdfUEFSQU1f RE9fUVVFUlksDQo+PiArCUNYTF9NRU1fU1BBUklOR19QQVJBTV9ET19SRVBBSVIsDQo+PiArfTsN Cj4+ICsNCj4+ICsjZGVmaW5lIENYTF9NRU1ERVZfU1BBUklOR19SRF9DQVBfU0FGRV9JTl9VU0Vf TUFTSyBCSVQoMCkNCj4jZGVmaW5lDQo+PiArQ1hMX01FTURFVl9TUEFSSU5HX1JEX0NBUF9IQVJE X1NQQVJJTkdfTUFTSyBCSVQoMSkgI2RlZmluZQ0KPj4gK0NYTF9NRU1ERVZfU1BBUklOR19SRF9D QVBfU09GVF9TUEFSSU5HX01BU0sgQklUKDIpDQo+PiArDQo+PiArI2RlZmluZSBDWExfTUVNREVW X1NQQVJJTkdfV1JfREVWSUNFX0lOSVRJQVRFRF9NQVNLIEJJVCgwKQ0KPj4gKw0KPj4gKyNkZWZp bmUgQ1hMX01FTURFVl9TUEFSSU5HX1FVRVJZX1JFU09VUkNFX0ZMQUcgQklUKDApICNkZWZpbmUN Cj4+ICtDWExfTUVNREVWX1NFVF9IQVJEX1NQQVJJTkdfRkxBRyBCSVQoMSkgI2RlZmluZQ0KPj4g K0NYTF9NRU1ERVZfU1BBUklOR19TVUJfQ0hBTk5FTF9WQUxJRF9GTEFHIEJJVCgyKSAjZGVmaW5l DQo+PiArQ1hMX01FTURFVl9TUEFSSU5HX05JQl9NQVNLX1ZBTElEX0ZMQUcgQklUKDMpDQo+PiAr DQo+PiArLyogU2VlIENYTCByZXYgMy4xIEA4LjIuOS43LjIuMyBUYWJsZSA4LTExOSBNZW1vcnkg U3BhcmluZyBGZWF0dXJlDQo+PiArUmVhZGFibGUgQXR0cmlidXRlcyAqLyBzdHJ1Y3QgY3hsX21l bWRldl9zcGFyaW5nX3JkX2F0dHJzIHsNCj4+ICsJc3RydWN0IGN4bF9tZW1kZXZfcmVwYWlyX3Jk X2F0dHJzX2hkciBoZHI7DQo+PiArCXU4IHJzdmQ7DQo+PiArCV9fbGUxNiByZXN0cmljdGlvbl9m bGFnczsNCj4+ICt9ICBfX3BhY2tlZDsNCj4+ICsNCj4+ICsvKiBTZWUgQ1hMIHJldiAzLjEgQDgu Mi45LjcuMi4zIFRhYmxlIDgtMTIwIE1lbW9yeSBTcGFyaW5nIEZlYXR1cmUNCj4+ICtXcml0YWJs ZSBBdHRyaWJ1dGVzICovIHN0cnVjdCBjeGxfbWVtZGV2X3NwYXJpbmdfd3JfYXR0cnMgew0KPj4g KwlfX2xlMTYgb3BfbW9kZTsNCj4+ICt9ICBfX3BhY2tlZDsNCj4NCj5UaGlzIHN0cnVjdCBub3Qg dXNlZCBhbnl3aGVyZT8NCg0KTm90IHVzZWQuIERlbGV0ZWQuDQoNCj4NCj4+ICsNCj4+ICsvKiBT ZWUgQ1hMIHJldiAzLjEgQDguMi45LjcuMS40IFRhYmxlIDgtMTA1IE1lbW9yeSBTcGFyaW5nIElu cHV0DQo+PiArUGF5bG9hZCAqLyBzdHJ1Y3QgY3hsX21lbWRldl9zcGFyaW5nX2luX3BheWxvYWQg ew0KPj4gKwl1OCBmbGFnczsNCj4+ICsJdTggY2hhbm5lbDsNCj4+ICsJdTggcmFuazsNCj4+ICsJ dTggbmliYmxlX21hc2tbM107DQo+PiArCXU4IGJhbmtfZ3JvdXA7DQo+PiArCXU4IGJhbms7DQo+ PiArCXU4IHJvd1szXTsNCj4+ICsJdTE2IGNvbHVtbjsNCj4+ICsJdTggc3ViX2NoYW5uZWw7DQo+ PiArfSAgX19wYWNrZWQ7DQo+PiArDQo+PiArc3RhdGljIGludCBjeGxfbWVtX3NwYXJpbmdfZ2V0 X2F0dHJzKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4+ICsJCQkJICAgICBzdHJ1Y3QgY3hsX21lbV9z cGFyaW5nX2NvbnRleHQNCj4qY3hsX3NwYXJpbmdfY3R4LA0KPj4gKwkJCQkgICAgIHN0cnVjdCBj eGxfbWVtZGV2X3NwYXJpbmdfcGFyYW1zDQo+KnBhcmFtcykgew0KPj4gKwlzdHJ1Y3QgY3hsX21l bWRldiAqY3hsbWQgPSBjeGxfc3BhcmluZ19jdHgtPmN4bG1kOw0KPj4gKwlzdHJ1Y3QgY3hsX2Rl dl9zdGF0ZSAqY3hsZHMgPSBjeGxtZC0+Y3hsZHM7DQo+PiArCXN0cnVjdCBjeGxfbWVtZGV2X3N0 YXRlICptZHMgPSB0b19jeGxfbWVtZGV2X3N0YXRlKGN4bGRzKTsNCj4+ICsJc2l6ZV90IHJkX2Rh dGFfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgY3hsX21lbWRldl9zcGFyaW5nX3JkX2F0dHJzKTsNCj4+ ICsJc2l6ZV90IGRhdGFfc2l6ZTsNCj4+ICsJc3RydWN0IGN4bF9tZW1kZXZfc3BhcmluZ19yZF9h dHRycyAqcmRfYXR0cnMgX19mcmVlKGtmcmVlKSA9DQo+PiArCQkJCWttYWxsb2MocmRfZGF0YV9z aXplLCBHRlBfS0VSTkVMKTsNCj4+ICsJaWYgKCFyZF9hdHRycykNCj4+ICsJCXJldHVybiAtRU5P TUVNOw0KPj4gKw0KPj4gKwlkYXRhX3NpemUgPSBjeGxfZ2V0X2ZlYXR1cmUobWRzLCBjeGxfc3Bh cmluZ19jdHgtPnJlcGFpcl91dWlkLA0KPj4gKwkJCQkgICAgQ1hMX0dFVF9GRUFUX1NFTF9DVVJS RU5UX1ZBTFVFLA0KPj4gKwkJCQkgICAgcmRfYXR0cnMsIHJkX2RhdGFfc2l6ZSk7DQo+PiArCWlm ICghZGF0YV9zaXplKQ0KPj4gKwkJcmV0dXJuIC1FSU87DQo+PiArDQo+PiArCXBhcmFtcy0+b3Bf Y2xhc3MgPSByZF9hdHRycy0+aGRyLm9wX2NsYXNzOw0KPj4gKwlwYXJhbXMtPm9wX3N1YmNsYXNz ID0gcmRfYXR0cnMtPmhkci5vcF9zdWJjbGFzczsNCj4+ICsJcGFyYW1zLT5jYXBfc2FmZV93aGVu X2luX3VzZSA9DQo+RklFTERfR0VUKENYTF9NRU1ERVZfU1BBUklOR19SRF9DQVBfU0FGRV9JTl9V U0VfTUFTSywNCj4+ICsJCQkJCQkgcmRfYXR0cnMtPnJlc3RyaWN0aW9uX2ZsYWdzKSBeIDE7DQo+ DQo+bGUxNl90b19jcHUoKSBmb3IgcmVzdHJpY3Rpb25fZmxhZ3M/IExvb2tzIGxpa2UgaXQncyBw YXJzZWQgbXVsdGlwbGUgdGltZXMsIHNvDQo+bWF5YmUgYSBsb2NhbCB2YXIgdG8gc3RvcmUgdGhh dCB2YWx1ZSBmaXJzdC4NCj4NCj4+ICsJcGFyYW1zLT5jYXBfaGFyZF9zcGFyaW5nID0NCj5GSUVM RF9HRVQoQ1hMX01FTURFVl9TUEFSSU5HX1JEX0NBUF9IQVJEX1NQQVJJTkdfTUFTSywNCj4+ICsJ CQkJCSAgICAgcmRfYXR0cnMtPnJlc3RyaWN0aW9uX2ZsYWdzKTsNCj4+ICsJcGFyYW1zLT5jYXBf c29mdF9zcGFyaW5nID0NCj5GSUVMRF9HRVQoQ1hMX01FTURFVl9TUEFSSU5HX1JEX0NBUF9TT0ZU X1NQQVJJTkdfTUFTSywNCj4+ICsJCQkJCSAgICAgcmRfYXR0cnMtPnJlc3RyaWN0aW9uX2ZsYWdz KTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgY3hs X21lbV9kb19zcGFyaW5nX29wKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4+ICsJCQkJIHN0cnVjdCBj eGxfbWVtX3NwYXJpbmdfY29udGV4dA0KPipjeGxfc3BhcmluZ19jdHgsDQo+PiArCQkJCSBzdHJ1 Y3QgY3hsX21lbWRldl9zcGFyaW5nX3BhcmFtcw0KPipyZF9wYXJhbXMsDQo+PiArCQkJCSBlbnVt IGN4bF9tZW1fc3BhcmluZ19wYXJhbV90eXBlDQo+cGFyYW1fdHlwZSkgew0KPj4gKwlzdHJ1Y3Qg Y3hsX21lbWRldl9zcGFyaW5nX2luX3BheWxvYWQgc3BhcmluZ19waTsNCj4+ICsJc3RydWN0IGN4 bF9tZW1kZXYgKmN4bG1kID0gY3hsX3NwYXJpbmdfY3R4LT5jeGxtZDsNCj4+ICsJc3RydWN0IGN4 bF9kZXZfc3RhdGUgKmN4bGRzID0gY3hsbWQtPmN4bGRzOw0KPj4gKwlzdHJ1Y3QgY3hsX21lbWRl dl9zdGF0ZSAqbWRzID0gdG9fY3hsX21lbWRldl9zdGF0ZShjeGxkcyk7DQo+PiArCWludCByZXQ7 DQo+PiArDQo+PiArCWlmICghcmRfcGFyYW1zLT5jYXBfc2FmZV93aGVuX2luX3VzZSAmJiBjeGxf c3BhcmluZ19jdHgtPmRwYSkgew0KPj4gKwkJLyogQ2hlY2sgaWYgRFBBIGlzIG1hcHBlZCAqLw0K Pj4gKwkJaWYgKGN4bF9kcGFfdG9fcmVnaW9uKGN4bG1kLCBjeGxfc3BhcmluZ19jdHgtPmRwYSkp IHsNCj4+ICsJCQlkZXZfZXJyKGRldiwgIkNYTCBjYW4ndCBkbyBzcGFyaW5nIGFzIERQQSBpcw0K Pm1hcHBlZFxuIik7DQo+PiArCQkJcmV0dXJuIC1FQlVTWTsNCj4+ICsJCX0NCj4+ICsJfQ0KPj4g KwltZW1zZXQoJnNwYXJpbmdfcGksIDAsIHNpemVvZihzcGFyaW5nX3BpKSk7DQo+PiArCWlmIChw YXJhbV90eXBlID09IENYTF9NRU1fU1BBUklOR19QQVJBTV9ET19RVUVSWSkgew0KPj4gKwkJc3Bh cmluZ19waS5mbGFncyA9DQo+Q1hMX01FTURFVl9TUEFSSU5HX1FVRVJZX1JFU09VUkNFX0ZMQUc7 DQo+PiArCX0gZWxzZSB7DQo+PiArCQlzcGFyaW5nX3BpLmZsYWdzID0NCj4+ICsNCj4JRklFTERf UFJFUChDWExfTUVNREVWX1NQQVJJTkdfUVVFUllfUkVTT1VSQ0VfRkxBRywgMCk7DQo+PiArCQkv KiBEbyBuZWVkIHNldCBoYXJkIHNwYXJpbmcsIHN1Yi1jaGFubmVsICYgbmIgbWFzayBmbGFncyBm b3INCj5xdWVyeT8gKi8NCj4+ICsJCWlmIChjeGxfc3BhcmluZ19jdHgtPnBlcnNpc3RfbW9kZSA9 PQ0KPkVEQUNfTUVNX1JFUEFJUl9IQVJEKQ0KPj4gKwkJCXNwYXJpbmdfcGkuZmxhZ3MgfD0NCj4+ ICsNCj4JRklFTERfUFJFUChDWExfTUVNREVWX1NFVF9IQVJEX1NQQVJJTkdfRkxBRywgMSk7DQo+ PiArCQlpZiAoY3hsX3NwYXJpbmdfY3R4LT5zdWJfY2hhbm5lbCkNCj4+ICsJCQlzcGFyaW5nX3Bp LmZsYWdzIHw9DQo+PiArDQo+CUZJRUxEX1BSRVAoQ1hMX01FTURFVl9TUEFSSU5HX1NVQl9DSEFO TkVMX1ZBTElEX0ZMQUcsIDEpOw0KPj4gKwkJaWYgKGN4bF9zcGFyaW5nX2N0eC0+bmliYmxlX21h c2spDQo+PiArCQkJc3BhcmluZ19waS5mbGFncyB8PQ0KPj4gKw0KPglGSUVMRF9QUkVQKENYTF9N RU1ERVZfU1BBUklOR19OSUJfTUFTS19WQUxJRF9GTEFHLCAxKTsNCj4+ICsJfQ0KPj4gKwkvKiBD b21tb24gYXR0cyBmb3IgYWxsIG1lbW9yeSBzcGFyaW5nIHR5cGVzICovDQo+PiArCXNwYXJpbmdf cGkuY2hhbm5lbCA9IGN4bF9zcGFyaW5nX2N0eC0+Y2hhbm5lbDsNCj4+ICsJc3BhcmluZ19waS5y YW5rID0gY3hsX3NwYXJpbmdfY3R4LT5yYW5rOw0KPj4gKwkqKCh1MzIgKikmc3BhcmluZ19waS5u aWJibGVfbWFza1swXSkgPSBjeGxfc3BhcmluZ19jdHgtPm5pYmJsZV9tYXNrOw0KDQpVc2VkIHB1 dF91bmFsaWduZWRfbGUyNChjeGxfc3BhcmluZ19jdHgtPm5pYmJsZV9tYXNrLCBzcGFyaW5nX3Bp Lm5pYmJsZV9tYXNrKTsgZm9yICIgbmliYmxlX21hc2siIGhlcmU/DQoNCj4+ICsNCj4+ICsJaWYg KGN4bF9zcGFyaW5nX2N0eC0+cmVwYWlyX3R5cGUgPT0NCj5FREFDX1RZUEVfQ0FDSEVMSU5FX01F TV9TUEFSSU5HIHx8DQo+PiArCSAgICBjeGxfc3BhcmluZ19jdHgtPnJlcGFpcl90eXBlID09IEVE QUNfVFlQRV9ST1dfTUVNX1NQQVJJTkcNCj58fA0KPj4gKwkgICAgY3hsX3NwYXJpbmdfY3R4LT5y ZXBhaXJfdHlwZSA9PSBFREFDX1RZUEVfQkFOS19NRU1fU1BBUklORykgew0KPj4gKwkJc3Bhcmlu Z19waS5iYW5rX2dyb3VwID0gY3hsX3NwYXJpbmdfY3R4LT5iYW5rX2dyb3VwOw0KPj4gKwkJc3Bh cmluZ19waS5iYW5rID0gY3hsX3NwYXJpbmdfY3R4LT5iYW5rOw0KPj4gKwl9DQo+PiArCWlmIChj eGxfc3BhcmluZ19jdHgtPnJlcGFpcl90eXBlID09DQo+RURBQ19UWVBFX0NBQ0hFTElORV9NRU1f U1BBUklORyB8fA0KPj4gKwkgICAgY3hsX3NwYXJpbmdfY3R4LT5yZXBhaXJfdHlwZSA9PSBFREFD X1RZUEVfUk9XX01FTV9TUEFSSU5HKQ0KPj4gKwkJKigodTMyICopJnNwYXJpbmdfcGkucm93WzBd KSA9IGN4bF9zcGFyaW5nX2N0eC0+cm93Ow0KDQpVc2VkIHB1dF91bmFsaWduZWRfbGUyNChjeGxf c3BhcmluZ19jdHgtPnJvdywgc3BhcmluZ19waS5yb3cpOyBmb3IgInJvdyIgaGVyZS4NCg0KPj4g KwlpZiAoY3hsX3NwYXJpbmdfY3R4LT5yZXBhaXJfdHlwZSA9PQ0KPkVEQUNfVFlQRV9DQUNIRUxJ TkVfTUVNX1NQQVJJTkcpIHsNCj4+ICsJCXNwYXJpbmdfcGkuY29sdW1uID0gY3hsX3NwYXJpbmdf Y3R4LT5jb2x1bW47DQo+DQo+RG8geW91IG5lZWQgdG8gZG8gY3B1X3RvX2xlMTYoKSBoZXJlPw0K SGkgRGF2ZSwNCg0KVGhhbmtzIGZvciBwb2ludGluZyB0aGlzLiBGaXhlZCBub3cuDQpBbHNvIGZp eGVkIGZldyBzaW1pbGFyIGNhc2VzIGhlcmUgKHNlZSBhYm92ZSkgYW5kIGZvciBvdGhlciBmZWF0 dXJlcy4NCj4NCj5ESg0KPg0KWy4uLl0NClRoYW5rcywNClNoaWp1DQo=