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 76E8EEEB580 for ; Thu, 12 Sep 2024 09:42:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E05E16B007B; Thu, 12 Sep 2024 05:42:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DB4196B0082; Thu, 12 Sep 2024 05:42:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C07196B0083; Thu, 12 Sep 2024 05:42:19 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 962696B007B for ; Thu, 12 Sep 2024 05:42:19 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 3A86D1A1D8F for ; Thu, 12 Sep 2024 09:42:19 +0000 (UTC) X-FDA: 82555595598.08.ECCBC28 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by imf06.hostedemail.com (Postfix) with ESMTP id DEC27180014 for ; Thu, 12 Sep 2024 09:42:15 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf06.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=1726134033; 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=vWFkwc8kZ0SD0mGoys4B5txFKsz8yn5l3DK7ycwY7J8=; b=C/HR2e2KG1JMU0vU1Mg+C8gdsEt00On7fLI81s9VyAjo8KuSA0RaDCUNMvhCU6qRluD1zr EN3KQhvZ2JWHsqvIEfnkvvWRINUWL5ADXW59b/oePlk0V9t24B3tBWqrXIzZ/LfBvvO8OF ocD+d9epm6ac6Bqi+0Gf0IiP2EX8pCA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1726134033; a=rsa-sha256; cv=none; b=1hjbdcOqNTBmActmUvMeejY8CAC7CxFuRtY/QQ+gp757vCiQZTeKhkfaBccLUTmR+qpYp9 xxV3BjL6XWhogTdW6GoHnv/9slF/eJyAd/WriBKOGmoHwxEeTqieqrB7LB7bo8FKHzP+7q 2wMELhZTfUuhueUkQPd+hP3frIdFKjc= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf06.hostedemail.com: domain of shiju.jose@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=shiju.jose@huawei.com Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4X4C6x30zGz6L5Jn; Thu, 12 Sep 2024 17:38:33 +0800 (CST) Received: from frapeml100007.china.huawei.com (unknown [7.182.85.133]) by mail.maildlp.com (Postfix) with ESMTPS id C44141400C9; Thu, 12 Sep 2024 17:42:11 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml100007.china.huawei.com (7.182.85.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Thu, 12 Sep 2024 11:42:11 +0200 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; Thu, 12 Sep 2024 11:42:11 +0200 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 , "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" , "mike.malvestuto@intel.com" , "gthelen@google.com" , "wschwartz@amperecomputing.com" , "dferguson@amperecomputing.com" , "wbs@os.amperecomputing.com" , "nifan.cxl@gmail.com" , "jgroves@micron.com" , "vsalve@micron.com" , tanxiaofei , "Zengtao (B)" , "Roberto Sassu" , "kangkang.shen@futurewei.com" , wanghuiqiang , Linuxarm Subject: RE: [PATCH v12 04/17] cxl: Move mailbox related bits to the same context Thread-Topic: [PATCH v12 04/17] cxl: Move mailbox related bits to the same context Thread-Index: AQHbBCn8nr4Uc9X8O0KoT0apaCK9EbJSs/iAgAEzYyA= Date: Thu, 12 Sep 2024 09:42:11 +0000 Message-ID: <97896b03a6cf44c28b6cb7f8948fde23@huawei.com> References: <20240911090447.751-1-shiju.jose@huawei.com> <20240911090447.751-5-shiju.jose@huawei.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.126.174.161] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Rspamd-Queue-Id: DEC27180014 X-Stat-Signature: gr3cub515e4jwb4be5zxb8j76j97p3fo X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1726134135-489861 X-HE-Meta: U2FsdGVkX1/vhepYy//6NXlzPLO/ifZlaKKgK6kLnApmlrIWcvOVS+9btWX7kRJJ2V6Sxz1rsWu80Z+kBpxzfX2lVTJhIoVZzjkXGumL9wj+XbRwkLJZssiE17/tkc4EzedJnV4lCVYLtAagvcrNYDSkjZpZFXyBm7QOij+HjlGQT60zaNdKdeDAeYlrQc/0siE0E7OZBAug7Z16U6pC2aEiJdUO5u9ZWPNTIvaZ0nVa/zpUEdIQZSzqymv+zljPvWGVC3D8lKtrpW8e7Ja7VgWWRV3LyJ55zD7u9aRoTdKLNbBniX1Vf5mLtYmigu5uWQOmZ2qBiMhNzlp1qHjqlwjQ1n28DE03kH6N4rjky8uC4OL7kU3qcBG/cs4lHGkAh8FfqcihzQiEOEdDAt6uYAWbFE9Dk2tCR2y0nGNZJjSJwm5rcfa+ggk1ELqr8vqdh+xlVpWlLuOM7lrjBUcYUUh3O04zTXpE5OPcEkhSV/UWykIYbDhRXwhA0fov4b3mOFmtLjT/hrhM2UzyivoiKY5tc/MkpShtGHVg1WhpRBX3BFLO4dDKMrx8kCs8fRxT9NbDZt8/UqjbX/Y73GJZoNJpwmbWgeRYTYAgj5Y/Ird9U2+/+Ov7nauZhmfNRuykAgZADGMs1TD7jjW7fOV1O1LR77qk6dBXiJaOggC6VKoXv+MvH2AKicHPINa5l3e8jnEGfpgCIcy8T9NsS3cvY7k/0pnpaVAlnGA7yE0KAQ8hZ3JFkcfyI0ByHJhsk9hmTROxAubLBsvJu2CqY1UAU6XdX29rtl7NkUIqvJ/5ecFyFgKbAlRlkOMfZCEo1jedV/1f0Ei0P4pd/Y2UP+m9YFoz+D3HRSeOaLVKv2nyUKdbi3e3+G2Dei+UYIHFdrlq8PvhG0wINUhVOijZIAgF9wNM67tVshnRr0G06Qvl4w5c6VHoa/FRAYV06cXDDAHiEPeiHNNlRFun74a9NOU FvLiY27/ kgTY/PKE4T2t1nE0ch8O3qC9USOOMIRl13dh/9HeDuB37gV31/g9i7pg5GUcv02Y0dV7E0zmWIwqaWMQU3BhUSigMxQH7Lu0gsRB0nVXsiPPTX1+kgFygzTz6p2BZbEzk2tB7AgdieqQqiyodxpoWGvWeuQCRzpb1KC/TaENvh89CBMI9D39xsgVs9RFpJYLHAlqxEUKaZ2aCDZS5mLB1LQKIv38xEDgof0ELOQMU/HYMfDVOOOzpsFN15jheWNedRjcuCXrXyd7mjvYReFuSX3JS/BSgzlWLOMgXCla1G+7UGyt6Hrs/CUJBnlxV6gJp5YCP/xmAovYVNf1E0IqEBXa4IGPPcMC3+IPRwftc0X6/b4+nXvuSKIZTOdV3J2R57AN1Silr3a0N/1Iyui3hWVccm/E5NX3yKk5F5knGcFoKl5JnShTHp2eYdxvqNsvVn/IoYbc6iFW2AvvEPlD8wgudwY1eH1VOaPLen7wwSHsXlSv91verD9XcKdY6nvqSOocq2FSFpQxJ3m8Zxo05Sbg73IhDMi4oLV/JMTDua64r8Om2faR9KHXLkIW/bPGldAwrhtSFcpDUhRXvI4mO79Z4zfJe3aZBEm2hKeCJ1vNSVFiGCkxJiFriSAxpIUAMCsUBx/TEYtzo950QWRAdC5bULNCd4hfHDbc9idvxhjJMVO3dej6qINTtMXgEpTnJnLj33MklRrJENTKde9cjrpPhIOKRieCBhbYaMxUU5BFkXmpSrV+dzAJ3sp+wBYsKhTqUqIXlNTU1TtHq7B9+qH6vJEylDqDY9S6gY9uPNrPupeKALW1xUmpRh+qBUBv5K5fnjrNGmRpq5O2dAgYFejaICqNN5jhznEWH/lvqOzhuSCyx4re9sm6Fa8ctxQ+12nLd32uBhLgQlSNiegPFDnLiQ+OVicyR890MFIsPgwJbIgveUILPdzZId46eMNa40zTe397NQj7vILkDEEl7AkHUeFta Di4DgVCD 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: DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IERhdmUgSmlhbmcgPGRhdmUu amlhbmdAaW50ZWwuY29tPg0KPlNlbnQ6IDExIFNlcHRlbWJlciAyMDI0IDE4OjIxDQo+VG86IFNo aWp1IEpvc2UgPHNoaWp1Lmpvc2VAaHVhd2VpLmNvbT47IGxpbnV4LWVkYWNAdmdlci5rZXJuZWwu b3JnOyBsaW51eC0NCj5jeGxAdmdlci5rZXJuZWwub3JnOyBsaW51eC1hY3BpQHZnZXIua2VybmVs Lm9yZzsgbGludXgtbW1Aa3ZhY2sub3JnOyBsaW51eC0NCj5rZXJuZWxAdmdlci5rZXJuZWwub3Jn DQo+Q2M6IGJwQGFsaWVuOC5kZTsgdG9ueS5sdWNrQGludGVsLmNvbTsgcmFmYWVsQGtlcm5lbC5v cmc7IGxlbmJAa2VybmVsLm9yZzsNCj5tY2hlaGFiQGtlcm5lbC5vcmc7IGRhbi5qLndpbGxpYW1z QGludGVsLmNvbTsgZGF2ZUBzdGdvbGFicy5uZXQ7IEpvbmF0aGFuDQo+Q2FtZXJvbiA8am9uYXRo YW4uY2FtZXJvbkBodWF3ZWkuY29tPjsgYWxpc29uLnNjaG9maWVsZEBpbnRlbC5jb207DQo+dmlz aGFsLmwudmVybWFAaW50ZWwuY29tOyBpcmEud2VpbnlAaW50ZWwuY29tOyBkYXZpZEByZWRoYXQu Y29tOw0KPlZpbGFzLlNyaWRoYXJhbkBhbWQuY29tOyBsZW8uZHVyYW5AYW1kLmNvbTsgWWF6ZW4u R2hhbm5hbUBhbWQuY29tOw0KPnJpZW50amVzQGdvb2dsZS5jb207IGppYXFpeWFuQGdvb2dsZS5j b207IEpvbi5HcmltbUBhbWQuY29tOw0KPmRhdmUuaGFuc2VuQGxpbnV4LmludGVsLmNvbTsgbmFv eWEuaG9yaWd1Y2hpQG5lYy5jb207DQo+amFtZXMubW9yc2VAYXJtLmNvbTsganRob3VnaHRvbkBn b29nbGUuY29tOyBzb21hc3VuZGFyYW0uYUBocGUuY29tOw0KPmVyZGVtYWt0YXNAZ29vZ2xlLmNv bTsgcGdvbmRhQGdvb2dsZS5jb207IGR1ZW53ZW5AZ29vZ2xlLmNvbTsNCj5taWtlLm1hbHZlc3R1 dG9AaW50ZWwuY29tOyBndGhlbGVuQGdvb2dsZS5jb207DQo+d3NjaHdhcnR6QGFtcGVyZWNvbXB1 dGluZy5jb207IGRmZXJndXNvbkBhbXBlcmVjb21wdXRpbmcuY29tOw0KPndic0Bvcy5hbXBlcmVj b21wdXRpbmcuY29tOyBuaWZhbi5jeGxAZ21haWwuY29tOyBqZ3JvdmVzQG1pY3Jvbi5jb207DQo+ dnNhbHZlQG1pY3Jvbi5jb207IHRhbnhpYW9mZWkgPHRhbnhpYW9mZWlAaHVhd2VpLmNvbT47IFpl bmd0YW8gKEIpDQo+PHByaW1lLnplbmdAaGlzaWxpY29uLmNvbT47IFJvYmVydG8gU2Fzc3UgPHJv YmVydG8uc2Fzc3VAaHVhd2VpLmNvbT47DQo+a2FuZ2thbmcuc2hlbkBmdXR1cmV3ZWkuY29tOyB3 YW5naHVpcWlhbmcgPHdhbmdodWlxaWFuZ0BodWF3ZWkuY29tPjsNCj5MaW51eGFybSA8bGludXhh cm1AaHVhd2VpLmNvbT4NCj5TdWJqZWN0OiBSZTogW1BBVENIIHYxMiAwNC8xN10gY3hsOiBNb3Zl IG1haWxib3ggcmVsYXRlZCBiaXRzIHRvIHRoZSBzYW1lDQo+Y29udGV4dA0KPg0KPg0KPg0KPk9u IDkvMTEvMjQgMjowNCBBTSwgc2hpanUuam9zZUBodWF3ZWkuY29tIHdyb3RlOg0KPj4gRnJvbTog RGF2ZSBKaWFuZyA8ZGF2ZS5qaWFuZ0BpbnRlbC5jb20+DQo+Pg0KPj4gQ3JlYXRlIGEgbmV3ICdz dHJ1Y3QgY3hsX21haWxib3gnIGFuZCBtb3ZlIGFsbCBtYWlsYm94IHJlbGF0ZWQgYml0cyB0bw0K Pj4gaXQuIFRoaXMgYWxsb3dzIGlzb2xhdGlvbiBvZiBhbGwgQ1hMIG1haWxib3ggZGF0YSBpbiBv cmRlciB0byBleHBvcnQNCj4+IHNvbWUgb2YgdGhlIGNhbGxzIHRvIGV4dGVybmFsIGNhbGxlciAo ZndjdGwpIGFuZCBhdm9pZCBleHBvcnRpbmcgb2YNCj4+IENYTCBkcml2ZXIgc3BlY2lmaWMgYml0 cyBzdWNoIGhhcyBkZXZpY2Ugc3RhdGVzLg0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IERhdmUgSmlh bmcgPGRhdmUuamlhbmdAaW50ZWwuY29tPg0KPg0KPkhpIFNoaWp1LA0KPkp1c3QgRllJIHRoZXJl J3MgdGhpcyBzZXJpZXMgWzFdIHRoYXQgbWF5IHJlcXVpcmUgc29tZSByZWJhc2luZyBmb3IgdGhl IGN4bCBtYWlsYm94DQo+Yml0cy4gSSBkbyBwbGFuIHRvIHB1bGwgdGhvc2UgY2hhbmdlcyBpbiBm b3IgNi4xMiBtZXJnZSB3aW5kb3cuDQo+DQo+QW5kIEkgc2hvdWxkIGJlIGFibGUgdG8gcmViYXNl IHRoZSBmd2N0bCBjb2RlIGFuZCBwb3N0IHYyIGFmdGVyIHBsdW1iZXJzDQo+cGVuZGluZyB0aGUg ZGlzY3Vzc2lvbnMgdGhlcmUuIGFuZCBpdCBzaG91bGQgcmVmbGVjdCB0aGUgc2FtZSBjb2RlIFdS VCB0bw0KPmZlYXR1cmVzIGFzIHdoYXQgeW91IGFyZSB1c2luZyBoZXJlIGluIHRoZSBSQVMgc2Vy aWVzLg0KPg0KPlsxXTogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtY3hsLzIwMjQwOTA1 MjIzNzExLjE5OTAxODYtMS0NCj5kYXZlLmppYW5nQGludGVsLmNvbS8NCg0KSGkgRGF2ZSwNCg0K VGhhbmtzIGZvciBsZXR0aW5nIG1lIGtub3cuDQogDQo+DQo+REoNCj4NClJlZ2FyZHMsDQpTaGlq dQ0KDQo+PiAtLS0NCj4+ICBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgIHwgIDEgKw0KPj4g IGRyaXZlcnMvY3hsL2NvcmUvbWJveC5jICAgICAgfCA0OCArKysrKysrKysrKysrKysrKystLS0t LS0tLS0NCj4+ICBkcml2ZXJzL2N4bC9jb3JlL21lbWRldi5jICAgIHwgMTggKysrKysrKy0tLS0N Cj4+ICBkcml2ZXJzL2N4bC9jeGxtZW0uaCAgICAgICAgIHwgNDkgKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KPj4gIGRyaXZlcnMvY3hsL3BjaS5jICAgICAgICAgICAgfCA1OCArKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0NCj4+ICBkcml2ZXJzL2N4bC9wbWVtLmMgICAgICAg ICAgIHwgIDQgKystDQo+PiAgaW5jbHVkZS9saW51eC9jeGwvbWFpbGJveC5oICB8IDYzDQo+PiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+ICB0b29scy90ZXN0aW5nL2N4 bC90ZXN0L21lbS5jIHwgMjcgKysrKysrKysrKy0tLS0tLQ0KPj4gIDggZmlsZXMgY2hhbmdlZCwg MTYzIGluc2VydGlvbnMoKyksIDEwNSBkZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2RlDQo+PiAxMDA2 NDQgaW5jbHVkZS9saW51eC9jeGwvbWFpbGJveC5oDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL01BSU5U QUlORVJTIGIvTUFJTlRBSU5FUlMgaW5kZXgNCj4+IDg3OGRjZDIzYjMzMS4uMjI3YzJiMjE0ZjAw IDEwMDY0NA0KPj4gLS0tIGEvTUFJTlRBSU5FUlMNCj4+ICsrKyBiL01BSU5UQUlORVJTDQo+PiBA QCAtNTYxOSw2ICs1NjE5LDcgQEAgRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2N4bA0KPj4g IEY6CWRyaXZlcnMvY3hsLw0KPj4gIEY6CWluY2x1ZGUvbGludXgvZWluai1jeGwuaA0KPj4gIEY6 CWluY2x1ZGUvbGludXgvY3hsLWV2ZW50LmgNCj4+ICtGOglpbmNsdWRlL2xpbnV4L2N4bC8NCj4+ ICBGOglpbmNsdWRlL3VhcGkvbGludXgvY3hsX21lbS5oDQo+PiAgRjoJdG9vbHMvdGVzdGluZy9j eGwvDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3hsL2NvcmUvbWJveC5jIGIvZHJpdmVy cy9jeGwvY29yZS9tYm94LmMgaW5kZXgNCj4+IGU1Y2RlYWZkZjc2ZS4uMjE2OTM3ZWY5ZTA3IDEw MDY0NA0KPj4gLS0tIGEvZHJpdmVycy9jeGwvY29yZS9tYm94LmMNCj4+ICsrKyBiL2RyaXZlcnMv Y3hsL2NvcmUvbWJveC5jDQo+PiBAQCAtMjQ0LDE2ICsyNDQsMTcgQEAgc3RhdGljIGNvbnN0IGNo YXIgKmN4bF9tZW1fb3Bjb2RlX3RvX25hbWUodTE2DQo+PiBvcGNvZGUpICBpbnQgY3hsX2ludGVy bmFsX3NlbmRfY21kKHN0cnVjdCBjeGxfbWVtZGV2X3N0YXRlICptZHMsDQo+PiAgCQkJICBzdHJ1 Y3QgY3hsX21ib3hfY21kICptYm94X2NtZCkNCj4+ICB7DQo+PiArCXN0cnVjdCBjeGxfbWFpbGJv eCAqY3hsX21ib3ggPSAmbWRzLT5jeGxkcy5jeGxfbWJveDsNCj4+ICAJc2l6ZV90IG91dF9zaXpl LCBtaW5fb3V0Ow0KPj4gIAlpbnQgcmM7DQo+Pg0KPj4gLQlpZiAobWJveF9jbWQtPnNpemVfaW4g PiBtZHMtPnBheWxvYWRfc2l6ZSB8fA0KPj4gLQkgICAgbWJveF9jbWQtPnNpemVfb3V0ID4gbWRz LT5wYXlsb2FkX3NpemUpDQo+PiArCWlmIChtYm94X2NtZC0+c2l6ZV9pbiA+IGN4bF9tYm94LT5w YXlsb2FkX3NpemUgfHwNCj4+ICsJICAgIG1ib3hfY21kLT5zaXplX291dCA+IGN4bF9tYm94LT5w YXlsb2FkX3NpemUpDQo+PiAgCQlyZXR1cm4gLUUyQklHOw0KPj4NCj4+ICAJb3V0X3NpemUgPSBt Ym94X2NtZC0+c2l6ZV9vdXQ7DQo+PiAgCW1pbl9vdXQgPSBtYm94X2NtZC0+bWluX291dDsNCj4+ IC0JcmMgPSBtZHMtPm1ib3hfc2VuZChtZHMsIG1ib3hfY21kKTsNCj4+ICsJcmMgPSBjeGxfbWJv eC0+bWJveF9zZW5kKGN4bF9tYm94LCBtYm94X2NtZCk7DQo+PiAgCS8qDQo+PiAgCSAqIEVJTyBp cyByZXNlcnZlZCBmb3IgYSBwYXlsb2FkIHNpemUgbWlzbWF0Y2ggYW5kIG1ib3hfc2VuZCgpDQo+ PiAgCSAqIG1heSBub3QgcmV0dXJuIHRoaXMgZXJyb3IuDQo+PiBAQCAtMzUzLDYgKzM1NCw3IEBA IHN0YXRpYyBpbnQgY3hsX21ib3hfY21kX2N0b3Ioc3RydWN0IGN4bF9tYm94X2NtZA0KPiptYm94 LA0KPj4gIAkJCSAgICAgc3RydWN0IGN4bF9tZW1kZXZfc3RhdGUgKm1kcywgdTE2IG9wY29kZSwN Cj4+ICAJCQkgICAgIHNpemVfdCBpbl9zaXplLCBzaXplX3Qgb3V0X3NpemUsIHU2NCBpbl9wYXls b2FkKSAgew0KPj4gKwlzdHJ1Y3QgY3hsX21haWxib3ggKmN4bF9tYm94ID0gJm1kcy0+Y3hsZHMu Y3hsX21ib3g7DQo+PiAgCSptYm94ID0gKHN0cnVjdCBjeGxfbWJveF9jbWQpIHsNCj4+ICAJCS5v cGNvZGUgPSBvcGNvZGUsDQo+PiAgCQkuc2l6ZV9pbiA9IGluX3NpemUsDQo+PiBAQCAtMzc0LDcg KzM3Niw3IEBAIHN0YXRpYyBpbnQgY3hsX21ib3hfY21kX2N0b3Ioc3RydWN0IGN4bF9tYm94X2Nt ZA0KPj4gKm1ib3gsDQo+Pg0KPj4gIAkvKiBQcmVwYXJlIHRvIGhhbmRsZSBhIGZ1bGwgcGF5bG9h ZCBmb3IgdmFyaWFibGUgc2l6ZWQgb3V0cHV0ICovDQo+PiAgCWlmIChvdXRfc2l6ZSA9PSBDWExf VkFSSUFCTEVfUEFZTE9BRCkNCj4+IC0JCW1ib3gtPnNpemVfb3V0ID0gbWRzLT5wYXlsb2FkX3Np emU7DQo+PiArCQltYm94LT5zaXplX291dCA9IGN4bF9tYm94LT5wYXlsb2FkX3NpemU7DQo+PiAg CWVsc2UNCj4+ICAJCW1ib3gtPnNpemVfb3V0ID0gb3V0X3NpemU7DQo+Pg0KPj4gQEAgLTM5OCw2 ICs0MDAsOCBAQCBzdGF0aWMgaW50IGN4bF90b19tZW1fY21kX3JhdyhzdHJ1Y3QNCj5jeGxfbWVt X2NvbW1hbmQgKm1lbV9jbWQsDQo+PiAgCQkJICAgICAgY29uc3Qgc3RydWN0IGN4bF9zZW5kX2Nv bW1hbmQgKnNlbmRfY21kLA0KPj4gIAkJCSAgICAgIHN0cnVjdCBjeGxfbWVtZGV2X3N0YXRlICpt ZHMpICB7DQo+PiArCXN0cnVjdCBjeGxfbWFpbGJveCAqY3hsX21ib3ggPSAmbWRzLT5jeGxkcy5j eGxfbWJveDsNCj4+ICsNCj4+ICAJaWYgKHNlbmRfY21kLT5yYXcucnN2ZCkNCj4+ICAJCXJldHVy biAtRUlOVkFMOw0KPj4NCj4+IEBAIC00MDYsNyArNDEwLDcgQEAgc3RhdGljIGludCBjeGxfdG9f bWVtX2NtZF9yYXcoc3RydWN0DQo+Y3hsX21lbV9jb21tYW5kICptZW1fY21kLA0KPj4gIAkgKiBn ZXRzIHBhc3NlZCBhbG9uZyB3aXRob3V0IGZ1cnRoZXIgY2hlY2tpbmcsIHNvIGl0IG11c3QgYmUN Cj4+ICAJICogdmFsaWRhdGVkIGhlcmUuDQo+PiAgCSAqLw0KPj4gLQlpZiAoc2VuZF9jbWQtPm91 dC5zaXplID4gbWRzLT5wYXlsb2FkX3NpemUpDQo+PiArCWlmIChzZW5kX2NtZC0+b3V0LnNpemUg PiBjeGxfbWJveC0+cGF5bG9hZF9zaXplKQ0KPj4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+Pg0KPj4g IAlpZiAoIWN4bF9tZW1fcmF3X2NvbW1hbmRfYWxsb3dlZChzZW5kX2NtZC0+cmF3Lm9wY29kZSkp DQo+PiBAQCAtNDk0LDYgKzQ5OCw3IEBAIHN0YXRpYyBpbnQgY3hsX3ZhbGlkYXRlX2NtZF9mcm9t X3VzZXIoc3RydWN0DQo+Y3hsX21ib3hfY21kICptYm94X2NtZCwNCj4+ICAJCQkJICAgICAgc3Ry dWN0IGN4bF9tZW1kZXZfc3RhdGUgKm1kcywNCj4+ICAJCQkJICAgICAgY29uc3Qgc3RydWN0IGN4 bF9zZW5kX2NvbW1hbmQNCj4qc2VuZF9jbWQpICB7DQo+PiArCXN0cnVjdCBjeGxfbWFpbGJveCAq Y3hsX21ib3ggPSAmbWRzLT5jeGxkcy5jeGxfbWJveDsNCj4+ICAJc3RydWN0IGN4bF9tZW1fY29t bWFuZCBtZW1fY21kOw0KPj4gIAlpbnQgcmM7DQo+Pg0KPj4gQEAgLTUwNSw3ICs1MTAsNyBAQCBz dGF0aWMgaW50IGN4bF92YWxpZGF0ZV9jbWRfZnJvbV91c2VyKHN0cnVjdA0KPmN4bF9tYm94X2Nt ZCAqbWJveF9jbWQsDQo+PiAgCSAqIHN1cHBvcnRzLCBidXQgb3V0cHV0IGNhbiBiZSBhcmJpdHJh cmlseSBsYXJnZSAoc2ltcGx5IHdyaXRlIG91dCBhcw0KPj4gIAkgKiBtdWNoIGRhdGEgYXMgdGhl IGhhcmR3YXJlIHByb3ZpZGVzKS4NCj4+ICAJICovDQo+PiAtCWlmIChzZW5kX2NtZC0+aW4uc2l6 ZSA+IG1kcy0+cGF5bG9hZF9zaXplKQ0KPj4gKwlpZiAoc2VuZF9jbWQtPmluLnNpemUgPiBjeGxf bWJveC0+cGF5bG9hZF9zaXplKQ0KPj4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+Pg0KPj4gIAkvKiBT YW5pdGl6ZSBhbmQgY29uc3RydWN0IGEgY3hsX21lbV9jb21tYW5kICovIEBAIC01OTEsNiArNTk2 LDcNCj5AQA0KPj4gc3RhdGljIGludCBoYW5kbGVfbWFpbGJveF9jbWRfZnJvbV91c2VyKHN0cnVj dCBjeGxfbWVtZGV2X3N0YXRlICptZHMsDQo+PiAgCQkJCQl1NjQgb3V0X3BheWxvYWQsIHMzMiAq c2l6ZV9vdXQsDQo+PiAgCQkJCQl1MzIgKnJldHZhbCkNCj4+ICB7DQo+PiArCXN0cnVjdCBjeGxf bWFpbGJveCAqY3hsX21ib3ggPSAmbWRzLT5jeGxkcy5jeGxfbWJveDsNCj4+ICAJc3RydWN0IGRl dmljZSAqZGV2ID0gbWRzLT5jeGxkcy5kZXY7DQo+PiAgCWludCByYzsNCj4+DQo+PiBAQCAtNjAx LDcgKzYwNyw3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX21haWxib3hfY21kX2Zyb21fdXNlcihzdHJ1 Y3QNCj5jeGxfbWVtZGV2X3N0YXRlICptZHMsDQo+PiAgCQljeGxfbWVtX29wY29kZV90b19uYW1l KG1ib3hfY21kLT5vcGNvZGUpLA0KPj4gIAkJbWJveF9jbWQtPm9wY29kZSwgbWJveF9jbWQtPnNp emVfaW4pOw0KPj4NCj4+IC0JcmMgPSBtZHMtPm1ib3hfc2VuZChtZHMsIG1ib3hfY21kKTsNCj4+ ICsJcmMgPSBjeGxfbWJveC0+bWJveF9zZW5kKGN4bF9tYm94LCBtYm94X2NtZCk7DQo+PiAgCWlm IChyYykNCj4+ICAJCWdvdG8gb3V0Ow0KPj4NCj4+IEBAIC02NTksMTEgKzY2NSwxMiBAQCBpbnQg Y3hsX3NlbmRfY21kKHN0cnVjdCBjeGxfbWVtZGV2ICpjeGxtZCwNCj4+IHN0cnVjdCBjeGxfc2Vu ZF9jb21tYW5kIF9fdXNlciAqcykgIHN0YXRpYyBpbnQgY3hsX3hmZXJfbG9nKHN0cnVjdA0KPmN4 bF9tZW1kZXZfc3RhdGUgKm1kcywgdXVpZF90ICp1dWlkLA0KPj4gIAkJCXUzMiAqc2l6ZSwgdTgg Km91dCkNCj4+ICB7DQo+PiArCXN0cnVjdCBjeGxfbWFpbGJveCAqY3hsX21ib3ggPSAmbWRzLT5j eGxkcy5jeGxfbWJveDsNCj4+ICAJdTMyIHJlbWFpbmluZyA9ICpzaXplOw0KPj4gIAl1MzIgb2Zm c2V0ID0gMDsNCj4+DQo+PiAgCXdoaWxlIChyZW1haW5pbmcpIHsNCj4+IC0JCXUzMiB4ZmVyX3Np emUgPSBtaW5fdCh1MzIsIHJlbWFpbmluZywgbWRzLT5wYXlsb2FkX3NpemUpOw0KPj4gKwkJdTMy IHhmZXJfc2l6ZSA9IG1pbl90KHUzMiwgcmVtYWluaW5nLCBjeGxfbWJveC0+cGF5bG9hZF9zaXpl KTsNCj4+ICAJCXN0cnVjdCBjeGxfbWJveF9jbWQgbWJveF9jbWQ7DQo+PiAgCQlzdHJ1Y3QgY3hs X21ib3hfZ2V0X2xvZyBsb2c7DQo+PiAgCQlpbnQgcmM7DQo+PiBAQCAtNzUyLDE3ICs3NTksMTgg QEAgc3RhdGljIHZvaWQgY3hsX3dhbGtfY2VsKHN0cnVjdCBjeGxfbWVtZGV2X3N0YXRlDQo+PiAq bWRzLCBzaXplX3Qgc2l6ZSwgdTggKmNlbCkNCj4+DQo+PiAgc3RhdGljIHN0cnVjdCBjeGxfbWJv eF9nZXRfc3VwcG9ydGVkX2xvZ3MgKmN4bF9nZXRfZ3NsKHN0cnVjdA0KPj4gY3hsX21lbWRldl9z dGF0ZSAqbWRzKSAgew0KPj4gKwlzdHJ1Y3QgY3hsX21haWxib3ggKmN4bF9tYm94ID0gJm1kcy0+ Y3hsZHMuY3hsX21ib3g7DQo+PiAgCXN0cnVjdCBjeGxfbWJveF9nZXRfc3VwcG9ydGVkX2xvZ3Mg KnJldDsNCj4+ICAJc3RydWN0IGN4bF9tYm94X2NtZCBtYm94X2NtZDsNCj4+ICAJaW50IHJjOw0K Pj4NCj4+IC0JcmV0ID0ga3ZtYWxsb2MobWRzLT5wYXlsb2FkX3NpemUsIEdGUF9LRVJORUwpOw0K Pj4gKwlyZXQgPSBrdm1hbGxvYyhjeGxfbWJveC0+cGF5bG9hZF9zaXplLCBHRlBfS0VSTkVMKTsN Cj4+ICAJaWYgKCFyZXQpDQo+PiAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsNCj4+DQo+PiAg CW1ib3hfY21kID0gKHN0cnVjdCBjeGxfbWJveF9jbWQpIHsNCj4+ICAJCS5vcGNvZGUgPSBDWExf TUJPWF9PUF9HRVRfU1VQUE9SVEVEX0xPR1MsDQo+PiAtCQkuc2l6ZV9vdXQgPSBtZHMtPnBheWxv YWRfc2l6ZSwNCj4+ICsJCS5zaXplX291dCA9IGN4bF9tYm94LT5wYXlsb2FkX3NpemUsDQo+PiAg CQkucGF5bG9hZF9vdXQgPSByZXQsDQo+PiAgCQkvKiBBdCBsZWFzdCB0aGUgcmVjb3JkIG51bWJl ciBmaWVsZCBtdXN0IGJlIHZhbGlkICovDQo+PiAgCQkubWluX291dCA9IDIsDQo+PiBAQCAtOTEw LDYgKzkxOCw3IEBAIHN0YXRpYyBpbnQgY3hsX2NsZWFyX2V2ZW50X3JlY29yZChzdHJ1Y3QNCj5j eGxfbWVtZGV2X3N0YXRlICptZHMsDQo+PiAgCQkJCSAgZW51bSBjeGxfZXZlbnRfbG9nX3R5cGUg bG9nLA0KPj4gIAkJCQkgIHN0cnVjdCBjeGxfZ2V0X2V2ZW50X3BheWxvYWQgKmdldF9wbCkgIHsN Cj4+ICsJc3RydWN0IGN4bF9tYWlsYm94ICpjeGxfbWJveCA9ICZtZHMtPmN4bGRzLmN4bF9tYm94 Ow0KPj4gIAlzdHJ1Y3QgY3hsX21ib3hfY2xlYXJfZXZlbnRfcGF5bG9hZCAqcGF5bG9hZDsNCj4+ ICAJdTE2IHRvdGFsID0gbGUxNl90b19jcHUoZ2V0X3BsLT5yZWNvcmRfY291bnQpOw0KPj4gIAl1 OCBtYXhfaGFuZGxlcyA9IENYTF9DTEVBUl9FVkVOVF9NQVhfSEFORExFUzsgQEAgLTkyMCw4DQo+ KzkyOSw4IEBADQo+PiBzdGF0aWMgaW50IGN4bF9jbGVhcl9ldmVudF9yZWNvcmQoc3RydWN0IGN4 bF9tZW1kZXZfc3RhdGUgKm1kcywNCj4+ICAJaW50IGk7DQo+Pg0KPj4gIAkvKiBQYXlsb2FkIHNp emUgbWF5IGxpbWl0IHRoZSBtYXggaGFuZGxlcyAqLw0KPj4gLQlpZiAocGxfc2l6ZSA+IG1kcy0+ cGF5bG9hZF9zaXplKSB7DQo+PiAtCQltYXhfaGFuZGxlcyA9IChtZHMtPnBheWxvYWRfc2l6ZSAt IHNpemVvZigqcGF5bG9hZCkpIC8NCj4+ICsJaWYgKHBsX3NpemUgPiBjeGxfbWJveC0+cGF5bG9h ZF9zaXplKSB7DQo+PiArCQltYXhfaGFuZGxlcyA9IChjeGxfbWJveC0+cGF5bG9hZF9zaXplIC0g c2l6ZW9mKCpwYXlsb2FkKSkgLw0KPj4gIAkJCSAgICAgIHNpemVvZihfX2xlMTYpOw0KPj4gIAkJ cGxfc2l6ZSA9IHN0cnVjdF9zaXplKHBheWxvYWQsIGhhbmRsZXMsIG1heF9oYW5kbGVzKTsNCj4+ ICAJfQ0KPj4gQEAgLTk3OSw2ICs5ODgsNyBAQCBzdGF0aWMgaW50IGN4bF9jbGVhcl9ldmVudF9y ZWNvcmQoc3RydWN0DQo+PiBjeGxfbWVtZGV2X3N0YXRlICptZHMsICBzdGF0aWMgdm9pZCBjeGxf bWVtX2dldF9yZWNvcmRzX2xvZyhzdHJ1Y3QNCj5jeGxfbWVtZGV2X3N0YXRlICptZHMsDQo+PiAg CQkJCSAgICBlbnVtIGN4bF9ldmVudF9sb2dfdHlwZSB0eXBlKSAgew0KPj4gKwlzdHJ1Y3QgY3hs X21haWxib3ggKmN4bF9tYm94ID0gJm1kcy0+Y3hsZHMuY3hsX21ib3g7DQo+PiAgCXN0cnVjdCBj eGxfbWVtZGV2ICpjeGxtZCA9IG1kcy0+Y3hsZHMuY3hsbWQ7DQo+PiAgCXN0cnVjdCBkZXZpY2Ug KmRldiA9IG1kcy0+Y3hsZHMuZGV2Ow0KPj4gIAlzdHJ1Y3QgY3hsX2dldF9ldmVudF9wYXlsb2Fk ICpwYXlsb2FkOyBAQCAtOTk1LDcgKzEwMDUsNyBAQCBzdGF0aWMNCj4+IHZvaWQgY3hsX21lbV9n ZXRfcmVjb3Jkc19sb2coc3RydWN0IGN4bF9tZW1kZXZfc3RhdGUgKm1kcywNCj4+ICAJCQkucGF5 bG9hZF9pbiA9ICZsb2dfdHlwZSwNCj4+ICAJCQkuc2l6ZV9pbiA9IHNpemVvZihsb2dfdHlwZSks DQo+PiAgCQkJLnBheWxvYWRfb3V0ID0gcGF5bG9hZCwNCj4+IC0JCQkuc2l6ZV9vdXQgPSBtZHMt PnBheWxvYWRfc2l6ZSwNCj4+ICsJCQkuc2l6ZV9vdXQgPSBjeGxfbWJveC0+cGF5bG9hZF9zaXpl LA0KPj4gIAkJCS5taW5fb3V0ID0gc3RydWN0X3NpemUocGF5bG9hZCwgcmVjb3JkcywgMCksDQo+ PiAgCQl9Ow0KPj4NCj4+IEBAIC0xMzI4LDYgKzEzMzgsNyBAQCBpbnQgY3hsX21lbV9nZXRfcG9p c29uKHN0cnVjdCBjeGxfbWVtZGV2DQo+KmN4bG1kLCB1NjQgb2Zmc2V0LCB1NjQgbGVuLA0KPj4g IAkJICAgICAgIHN0cnVjdCBjeGxfcmVnaW9uICpjeGxyKQ0KPj4gIHsNCj4+ICAJc3RydWN0IGN4 bF9tZW1kZXZfc3RhdGUgKm1kcyA9IHRvX2N4bF9tZW1kZXZfc3RhdGUoY3hsbWQtPmN4bGRzKTsN Cj4+ICsJc3RydWN0IGN4bF9tYWlsYm94ICpjeGxfbWJveCA9ICZtZHMtPmN4bGRzLmN4bF9tYm94 Ow0KPj4gIAlzdHJ1Y3QgY3hsX21ib3hfcG9pc29uX291dCAqcG87DQo+PiAgCXN0cnVjdCBjeGxf bWJveF9wb2lzb25faW4gcGk7DQo+PiAgCWludCBucl9yZWNvcmRzID0gMDsNCj4+IEBAIC0xMzQ2 LDcgKzEzNTcsNyBAQCBpbnQgY3hsX21lbV9nZXRfcG9pc29uKHN0cnVjdCBjeGxfbWVtZGV2DQo+ KmN4bG1kLCB1NjQgb2Zmc2V0LCB1NjQgbGVuLA0KPj4gIAkJCS5vcGNvZGUgPSBDWExfTUJPWF9P UF9HRVRfUE9JU09OLA0KPj4gIAkJCS5zaXplX2luID0gc2l6ZW9mKHBpKSwNCj4+ICAJCQkucGF5 bG9hZF9pbiA9ICZwaSwNCj4+IC0JCQkuc2l6ZV9vdXQgPSBtZHMtPnBheWxvYWRfc2l6ZSwNCj4+ ICsJCQkuc2l6ZV9vdXQgPSBjeGxfbWJveC0+cGF5bG9hZF9zaXplLA0KPj4gIAkJCS5wYXlsb2Fk X291dCA9IHBvLA0KPj4gIAkJCS5taW5fb3V0ID0gc3RydWN0X3NpemUocG8sIHJlY29yZCwgMCks DQo+PiAgCQl9Ow0KPj4gQEAgLTEzODIsNyArMTM5Myw5IEBAIHN0YXRpYyB2b2lkIGZyZWVfcG9p c29uX2J1Zih2b2lkICpidWYpDQo+PiAgLyogR2V0IFBvaXNvbiBMaXN0IG91dHB1dCBidWZmZXIg aXMgcHJvdGVjdGVkIGJ5IG1kcy0+cG9pc29uLmxvY2sgKi8NCj4+IHN0YXRpYyBpbnQgY3hsX3Bv aXNvbl9hbGxvY19idWYoc3RydWN0IGN4bF9tZW1kZXZfc3RhdGUgKm1kcykgIHsNCj4+IC0JbWRz LT5wb2lzb24ubGlzdF9vdXQgPSBrdm1hbGxvYyhtZHMtPnBheWxvYWRfc2l6ZSwgR0ZQX0tFUk5F TCk7DQo+PiArCXN0cnVjdCBjeGxfbWFpbGJveCAqY3hsX21ib3ggPSAmbWRzLT5jeGxkcy5jeGxf bWJveDsNCj4+ICsNCj4+ICsJbWRzLT5wb2lzb24ubGlzdF9vdXQgPSBrdm1hbGxvYyhjeGxfbWJv eC0+cGF5bG9hZF9zaXplLCBHRlBfS0VSTkVMKTsNCj4+ICAJaWYgKCFtZHMtPnBvaXNvbi5saXN0 X291dCkNCj4+ICAJCXJldHVybiAtRU5PTUVNOw0KPj4NCj4+IEBAIC0xNDExLDYgKzE0MjQsNyBA QCBFWFBPUlRfU1lNQk9MX05TX0dQTChjeGxfcG9pc29uX3N0YXRlX2luaXQsDQo+PiBDWEwpOyAg c3RydWN0IGN4bF9tZW1kZXZfc3RhdGUgKmN4bF9tZW1kZXZfc3RhdGVfY3JlYXRlKHN0cnVjdCBk ZXZpY2UNCj4+ICpkZXYpICB7DQo+PiAgCXN0cnVjdCBjeGxfbWVtZGV2X3N0YXRlICptZHM7DQo+ PiArCXN0cnVjdCBjeGxfbWFpbGJveCAqY3hsX21ib3g7DQo+Pg0KPj4gIAltZHMgPSBkZXZtX2t6 YWxsb2MoZGV2LCBzaXplb2YoKm1kcyksIEdGUF9LRVJORUwpOw0KPj4gIAlpZiAoIW1kcykgew0K Pj4gQEAgLTE0MTgsNyArMTQzMiw5IEBAIHN0cnVjdCBjeGxfbWVtZGV2X3N0YXRlDQo+KmN4bF9t ZW1kZXZfc3RhdGVfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldikNCj4+ICAJCXJldHVybiBFUlJf UFRSKC1FTk9NRU0pOw0KPj4gIAl9DQo+Pg0KPj4gLQltdXRleF9pbml0KCZtZHMtPm1ib3hfbXV0 ZXgpOw0KPj4gKwljeGxfbWJveCA9ICZtZHMtPmN4bGRzLmN4bF9tYm94Ow0KPj4gKwltdXRleF9p bml0KCZjeGxfbWJveC0+bWJveF9tdXRleCk7DQo+PiArDQo+PiAgCW11dGV4X2luaXQoJm1kcy0+ ZXZlbnQubG9nX2xvY2spOw0KPj4gIAltZHMtPmN4bGRzLmRldiA9IGRldjsNCj4+ICAJbWRzLT5j eGxkcy5yZWdfbWFwLmhvc3QgPSBkZXY7DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jeGwvY29y ZS9tZW1kZXYuYyBiL2RyaXZlcnMvY3hsL2NvcmUvbWVtZGV2LmMNCj4+IGluZGV4IDAyNzc3MjZh ZmQwNC4uMDViYjg0Y2IxMjc0IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9jeGwvY29yZS9tZW1k ZXYuYw0KPj4gKysrIGIvZHJpdmVycy9jeGwvY29yZS9tZW1kZXYuYw0KPj4gQEAgLTU4LDcgKzU4 LDcgQEAgc3RhdGljIHNzaXplX3QgcGF5bG9hZF9tYXhfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYs DQo+Pg0KPj4gIAlpZiAoIW1kcykNCj4+ICAJCXJldHVybiBzeXNmc19lbWl0KGJ1ZiwgIlxuIik7 DQo+PiAtCXJldHVybiBzeXNmc19lbWl0KGJ1ZiwgIiV6dVxuIiwgbWRzLT5wYXlsb2FkX3NpemUp Ow0KPj4gKwlyZXR1cm4gc3lzZnNfZW1pdChidWYsICIlenVcbiIsIGN4bGRzLT5jeGxfbWJveC5w YXlsb2FkX3NpemUpOw0KPj4gIH0NCj4+ICBzdGF0aWMgREVWSUNFX0FUVFJfUk8ocGF5bG9hZF9t YXgpOw0KPj4NCj4+IEBAIC0xMjQsMTUgKzEyNCwxNiBAQCBzdGF0aWMgc3NpemVfdCBzZWN1cml0 eV9zdGF0ZV9zaG93KHN0cnVjdCBkZXZpY2UNCj4+ICpkZXYsICB7DQo+PiAgCXN0cnVjdCBjeGxf bWVtZGV2ICpjeGxtZCA9IHRvX2N4bF9tZW1kZXYoZGV2KTsNCj4+ICAJc3RydWN0IGN4bF9kZXZf c3RhdGUgKmN4bGRzID0gY3hsbWQtPmN4bGRzOw0KPj4gKwlzdHJ1Y3QgY3hsX21haWxib3ggKmN4 bF9tYm94ID0gJmN4bGRzLT5jeGxfbWJveDsNCj4+ICAJc3RydWN0IGN4bF9tZW1kZXZfc3RhdGUg Km1kcyA9IHRvX2N4bF9tZW1kZXZfc3RhdGUoY3hsZHMpOw0KPj4gIAl1bnNpZ25lZCBsb25nIHN0 YXRlID0gbWRzLT5zZWN1cml0eS5zdGF0ZTsNCj4+ICAJaW50IHJjID0gMDsNCj4+DQo+PiAgCS8q IHN5bmMgd2l0aCBsYXRlc3Qgc3VibWlzc2lvbiBzdGF0ZSAqLw0KPj4gLQltdXRleF9sb2NrKCZt ZHMtPm1ib3hfbXV0ZXgpOw0KPj4gKwltdXRleF9sb2NrKCZjeGxfbWJveC0+bWJveF9tdXRleCk7 DQo+PiAgCWlmIChtZHMtPnNlY3VyaXR5LnNhbml0aXplX2FjdGl2ZSkNCj4+ICAJCXJjID0gc3lz ZnNfZW1pdChidWYsICJzYW5pdGl6ZVxuIik7DQo+PiAtCW11dGV4X3VubG9jaygmbWRzLT5tYm94 X211dGV4KTsNCj4+ICsJbXV0ZXhfdW5sb2NrKCZjeGxfbWJveC0+bWJveF9tdXRleCk7DQo+PiAg CWlmIChyYykNCj4+ICAJCXJldHVybiByYzsNCj4+DQo+PiBAQCAtODI5LDEyICs4MzAsMTMgQEAg c3RhdGljIGVudW0gZndfdXBsb2FkX2VyciBjeGxfZndfcHJlcGFyZShzdHJ1Y3QNCj4+IGZ3X3Vw bG9hZCAqZndsLCBjb25zdCB1OCAqZGF0YSwgIHsNCj4+ICAJc3RydWN0IGN4bF9tZW1kZXZfc3Rh dGUgKm1kcyA9IGZ3bC0+ZGRfaGFuZGxlOw0KPj4gIAlzdHJ1Y3QgY3hsX21ib3hfdHJhbnNmZXJf ZncgKnRyYW5zZmVyOw0KPj4gKwlzdHJ1Y3QgY3hsX21haWxib3ggKmN4bF9tYm94ID0gJm1kcy0+ Y3hsZHMuY3hsX21ib3g7DQo+Pg0KPj4gIAlpZiAoIXNpemUpDQo+PiAgCQlyZXR1cm4gRldfVVBM T0FEX0VSUl9JTlZBTElEX1NJWkU7DQo+Pg0KPj4gIAltZHMtPmZ3Lm9uZXNob3QgPSBzdHJ1Y3Rf c2l6ZSh0cmFuc2ZlciwgZGF0YSwgc2l6ZSkgPA0KPj4gLQkJCSAgICBtZHMtPnBheWxvYWRfc2l6 ZTsNCj4+ICsJCQkgICAgY3hsX21ib3gtPnBheWxvYWRfc2l6ZTsNCj4+DQo+PiAgCWlmIChjeGxf bWVtX2dldF9md19pbmZvKG1kcykpDQo+PiAgCQlyZXR1cm4gRldfVVBMT0FEX0VSUl9IV19FUlJP UjsNCj4+IEBAIC04NTQsNiArODU2LDcgQEAgc3RhdGljIGVudW0gZndfdXBsb2FkX2VyciBjeGxf Zndfd3JpdGUoc3RydWN0DQo+PiBmd191cGxvYWQgKmZ3bCwgY29uc3QgdTggKmRhdGEsICB7DQo+ PiAgCXN0cnVjdCBjeGxfbWVtZGV2X3N0YXRlICptZHMgPSBmd2wtPmRkX2hhbmRsZTsNCj4+ICAJ c3RydWN0IGN4bF9kZXZfc3RhdGUgKmN4bGRzID0gJm1kcy0+Y3hsZHM7DQo+PiArCXN0cnVjdCBj eGxfbWFpbGJveCAqY3hsX21ib3ggPSAmY3hsZHMtPmN4bF9tYm94Ow0KPj4gIAlzdHJ1Y3QgY3hs X21lbWRldiAqY3hsbWQgPSBjeGxkcy0+Y3hsbWQ7DQo+PiAgCXN0cnVjdCBjeGxfbWJveF90cmFu c2Zlcl9mdyAqdHJhbnNmZXI7DQo+PiAgCXN0cnVjdCBjeGxfbWJveF9jbWQgbWJveF9jbWQ7DQo+ PiBAQCAtODc3LDcgKzg4MCw3IEBAIHN0YXRpYyBlbnVtIGZ3X3VwbG9hZF9lcnIgY3hsX2Z3X3dy aXRlKHN0cnVjdA0KPmZ3X3VwbG9hZCAqZndsLCBjb25zdCB1OCAqZGF0YSwNCj4+ICAJICogc2l6 ZW9mKCp0cmFuc2ZlcikgaXMgMTI4LiAgVGhlc2UgY29uc3RyYWludHMgaW1wbHkgdGhhdCBAY3Vy X3NpemUNCj4+ICAJICogd2lsbCBhbHdheXMgYmUgMTI4YiBhbGlnbmVkLg0KPj4gIAkgKi8NCj4+ IC0JY3VyX3NpemUgPSBtaW5fdChzaXplX3QsIHNpemUsIG1kcy0+cGF5bG9hZF9zaXplIC0gc2l6 ZW9mKCp0cmFuc2ZlcikpOw0KPj4gKwljdXJfc2l6ZSA9IG1pbl90KHNpemVfdCwgc2l6ZSwgY3hs X21ib3gtPnBheWxvYWRfc2l6ZSAtDQo+PiArc2l6ZW9mKCp0cmFuc2ZlcikpOw0KPj4NCj4+ICAJ cmVtYWluaW5nID0gc2l6ZSAtIGN1cl9zaXplOw0KPj4gIAlzaXplX2luID0gc3RydWN0X3NpemUo dHJhbnNmZXIsIGRhdGEsIGN1cl9zaXplKTsgQEAgLTEwNTksMTYNCj4+ICsxMDYyLDE3IEBAIEVY UE9SVF9TWU1CT0xfTlNfR1BMKGRldm1fY3hsX2FkZF9tZW1kZXYsIENYTCk7DQo+c3RhdGljDQo+ PiB2b2lkIHNhbml0aXplX3RlYXJkb3duX25vdGlmaWVyKHZvaWQgKmRhdGEpICB7DQo+PiAgCXN0 cnVjdCBjeGxfbWVtZGV2X3N0YXRlICptZHMgPSBkYXRhOw0KPj4gKwlzdHJ1Y3QgY3hsX21haWxi b3ggKmN4bF9tYm94ID0gJm1kcy0+Y3hsZHMuY3hsX21ib3g7DQo+PiAgCXN0cnVjdCBrZXJuZnNf bm9kZSAqc3RhdGU7DQo+Pg0KPj4gIAkvKg0KPj4gIAkgKiBQcmV2ZW50IG5ldyBpcnEgdHJpZ2dl cmVkIGludm9jYXRpb25zIG9mIHRoZSB3b3JrcXVldWUgYW5kDQo+PiAgCSAqIGZsdXNoIGluZmxp Z2h0IGludm9jYXRpb25zLg0KPj4gIAkgKi8NCj4+IC0JbXV0ZXhfbG9jaygmbWRzLT5tYm94X211 dGV4KTsNCj4+ICsJbXV0ZXhfbG9jaygmY3hsX21ib3gtPm1ib3hfbXV0ZXgpOw0KPj4gIAlzdGF0 ZSA9IG1kcy0+c2VjdXJpdHkuc2FuaXRpemVfbm9kZTsNCj4+ICAJbWRzLT5zZWN1cml0eS5zYW5p dGl6ZV9ub2RlID0gTlVMTDsNCj4+IC0JbXV0ZXhfdW5sb2NrKCZtZHMtPm1ib3hfbXV0ZXgpOw0K Pj4gKwltdXRleF91bmxvY2soJmN4bF9tYm94LT5tYm94X211dGV4KTsNCj4+DQo+PiAgCWNhbmNl bF9kZWxheWVkX3dvcmtfc3luYygmbWRzLT5zZWN1cml0eS5wb2xsX2R3b3JrKTsNCj4+ICAJc3lz ZnNfcHV0KHN0YXRlKTsNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2N4bC9jeGxtZW0uaCBiL2Ry aXZlcnMvY3hsL2N4bG1lbS5oIGluZGV4DQo+PiBhZmI1M2QwNThkNjIuLjE5NjA5YjcwOGIwOSAx MDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvY3hsL2N4bG1lbS5oDQo+PiArKysgYi9kcml2ZXJzL2N4 bC9jeGxtZW0uaA0KPj4gQEAgLTgsNiArOCw3IEBADQo+PiAgI2luY2x1ZGUgPGxpbnV4L3JjdXdh aXQuaD4NCj4+ICAjaW5jbHVkZSA8bGludXgvY3hsLWV2ZW50Lmg+DQo+PiAgI2luY2x1ZGUgPGxp bnV4L25vZGUuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvY3hsL21haWxib3guaD4NCj4+ICAjaW5j bHVkZSAiY3hsLmgiDQo+Pg0KPj4gIC8qIENYTCAyLjAgOC4yLjguNS4xLjEgTWVtb3J5IERldmlj ZSBTdGF0dXMgUmVnaXN0ZXIgKi8gQEAgLTEwNSw0Mg0KPj4gKzEwNiw2IEBAIHN0YXRpYyBpbmxp bmUgc3RydWN0IGN4bF9lcCAqY3hsX2VwX2xvYWQoc3RydWN0IGN4bF9wb3J0ICpwb3J0LA0KPj4g IAlyZXR1cm4geGFfbG9hZCgmcG9ydC0+ZW5kcG9pbnRzLCAodW5zaWduZWQgbG9uZykmY3hsbWQt PmRldik7ICB9DQo+Pg0KPj4gLS8qKg0KPj4gLSAqIHN0cnVjdCBjeGxfbWJveF9jbWQgLSBBIGNv bW1hbmQgdG8gYmUgc3VibWl0dGVkIHRvIGhhcmR3YXJlLg0KPj4gLSAqIEBvcGNvZGU6IChpbnB1 dCkgVGhlIGNvbW1hbmQgc2V0IGFuZCBjb21tYW5kIHN1Ym1pdHRlZCB0byBoYXJkd2FyZS4NCj4+ IC0gKiBAcGF5bG9hZF9pbjogKGlucHV0KSBQb2ludGVyIHRvIHRoZSBpbnB1dCBwYXlsb2FkLg0K Pj4gLSAqIEBwYXlsb2FkX291dDogKG91dHB1dCkgUG9pbnRlciB0byB0aGUgb3V0cHV0IHBheWxv YWQuIE11c3QgYmUgYWxsb2NhdGVkIGJ5DQo+PiAtICoJCSB0aGUgY2FsbGVyLg0KPj4gLSAqIEBz aXplX2luOiAoaW5wdXQpIE51bWJlciBvZiBieXRlcyB0byBsb2FkIGZyb20gQHBheWxvYWRfaW4u DQo+PiAtICogQHNpemVfb3V0OiAoaW5wdXQpIE1heCBudW1iZXIgb2YgYnl0ZXMgbG9hZGVkIGlu dG8gQHBheWxvYWRfb3V0Lg0KPj4gLSAqICAgICAgICAgICAgKG91dHB1dCkgTnVtYmVyIG9mIGJ5 dGVzIGdlbmVyYXRlZCBieSB0aGUgZGV2aWNlLiBGb3IgZml4ZWQgc2l6ZQ0KPj4gLSAqICAgICAg ICAgICAgb3V0cHV0cyBjb21tYW5kcyB0aGlzIGlzIGFsd2F5cyBleHBlY3RlZCB0byBiZSBkZXRl cm1pbmlzdGljLiBGb3INCj4+IC0gKiAgICAgICAgICAgIHZhcmlhYmxlIHNpemVkIG91dHB1dCBj b21tYW5kcywgaXQgdGVsbHMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcw0KPj4gLSAqICAgICAg ICAgICAgd3JpdHRlbi4NCj4+IC0gKiBAbWluX291dDogKGlucHV0KSBpbnRlcm5hbCBjb21tYW5k IG91dHB1dCBwYXlsb2FkIHNpemUgdmFsaWRhdGlvbg0KPj4gLSAqIEBwb2xsX2NvdW50OiAoaW5w dXQpIE51bWJlciBvZiB0aW1lb3V0cyB0byBhdHRlbXB0Lg0KPj4gLSAqIEBwb2xsX2ludGVydmFs X21zOiAoaW5wdXQpIFRpbWUgYmV0d2VlbiBtYWlsYm94IGJhY2tncm91bmQgY29tbWFuZA0KPnBv bGxpbmcNCj4+IC0gKiAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwgdGltZW91dHMuDQo+PiAt ICogQHJldHVybl9jb2RlOiAob3V0cHV0KSBFcnJvciBjb2RlIHJldHVybmVkIGZyb20gaGFyZHdh cmUuDQo+PiAtICoNCj4+IC0gKiBUaGlzIGlzIHRoZSBwcmltYXJ5IG1lY2hhbmlzbSB1c2VkIHRv IHNlbmQgY29tbWFuZHMgdG8gdGhlIGhhcmR3YXJlLg0KPj4gLSAqIEFsbCB0aGUgZmllbGRzIGV4 Y2VwdCBAcGF5bG9hZF8qIGNvcnJlc3BvbmQgZXhhY3RseSB0byB0aGUgZmllbGRzDQo+PiBkZXNj cmliZWQgaW4NCj4+IC0gKiBDb21tYW5kIFJlZ2lzdGVyIHNlY3Rpb24gb2YgdGhlIENYTCAyLjAg OC4yLjguNC41LiBAcGF5bG9hZF9pbiBhbmQNCj4+IC0gKiBAcGF5bG9hZF9vdXQgYXJlIHdyaXR0 ZW4gdG8sIGFuZCByZWFkIGZyb20gdGhlIENvbW1hbmQgUGF5bG9hZA0KPj4gUmVnaXN0ZXJzDQo+ PiAtICogZGVmaW5lZCBpbiBDWEwgMi4wIDguMi44LjQuOC4NCj4+IC0gKi8NCj4+IC1zdHJ1Y3Qg Y3hsX21ib3hfY21kIHsNCj4+IC0JdTE2IG9wY29kZTsNCj4+IC0Jdm9pZCAqcGF5bG9hZF9pbjsN Cj4+IC0Jdm9pZCAqcGF5bG9hZF9vdXQ7DQo+PiAtCXNpemVfdCBzaXplX2luOw0KPj4gLQlzaXpl X3Qgc2l6ZV9vdXQ7DQo+PiAtCXNpemVfdCBtaW5fb3V0Ow0KPj4gLQlpbnQgcG9sbF9jb3VudDsN Cj4+IC0JaW50IHBvbGxfaW50ZXJ2YWxfbXM7DQo+PiAtCXUxNiByZXR1cm5fY29kZTsNCj4+IC19 Ow0KPj4gLQ0KPj4gIC8qDQo+PiAgICogUGVyIENYTCAzLjAgU2VjdGlvbiA4LjIuOC40LjUuMQ0K Pj4gICAqLw0KPj4gQEAgLTQzOCw2ICs0MDMsNyBAQCBzdHJ1Y3QgY3hsX2Rldl9zdGF0ZSB7DQo+ PiAgCXN0cnVjdCByZXNvdXJjZSByYW1fcmVzOw0KPj4gIAl1NjQgc2VyaWFsOw0KPj4gIAllbnVt IGN4bF9kZXZ0eXBlIHR5cGU7DQo+PiArCXN0cnVjdCBjeGxfbWFpbGJveCBjeGxfbWJveDsNCj4+ ICB9Ow0KPj4NCj4+ICAvKioNCj4+IEBAIC00NDgsMTEgKzQxNCw4IEBAIHN0cnVjdCBjeGxfZGV2 X3N0YXRlIHsNCj4+ICAgKiB0aGUgZnVuY3Rpb25hbGl0eSByZWxhdGVkIHRvIHRoYXQgbGlrZSBJ ZGVudGlmeSBNZW1vcnkgRGV2aWNlIGFuZCBHZXQNCj4+ICAgKiBQYXJ0aXRpb24gSW5mbw0KPj4g ICAqIEBjeGxkczogQ29yZSBkcml2ZXIgc3RhdGUgY29tbW9uIGFjcm9zcyBUeXBlLTIgYW5kIFR5 cGUtMyBkZXZpY2VzDQo+PiAtICogQHBheWxvYWRfc2l6ZTogU2l6ZSBvZiBzcGFjZSBmb3IgcGF5 bG9hZA0KPj4gLSAqICAgICAgICAgICAgICAgIChDWEwgMi4wIDguMi44LjQuMyBNYWlsYm94IENh cGFiaWxpdGllcyBSZWdpc3RlcikNCj4+ICAgKiBAbHNhX3NpemU6IFNpemUgb2YgTGFiZWwgU3Rv cmFnZSBBcmVhDQo+PiAgICogICAgICAgICAgICAgICAgKENYTCAyLjAgOC4yLjkuNS4xLjEgSWRl bnRpZnkgTWVtb3J5IERldmljZSkNCj4+IC0gKiBAbWJveF9tdXRleDogTXV0ZXggdG8gc3luY2hy b25pemUgbWFpbGJveCBhY2Nlc3MuDQo+PiAgICogQGZpcm13YXJlX3ZlcnNpb246IEZpcm13YXJl IHZlcnNpb24gZm9yIHRoZSBtZW1vcnkgZGV2aWNlLg0KPj4gICAqIEBlbmFibGVkX2NtZHM6IEhh cmR3YXJlIGNvbW1hbmRzIGZvdW5kIGVuYWJsZWQgaW4gQ0VMLg0KPj4gICAqIEBleGNsdXNpdmVf Y21kczogQ29tbWFuZHMgdGhhdCBhcmUga2VybmVsLWludGVybmFsIG9ubHkgQEAgLTQ3MCwxNw0K Pj4gKzQzMywxMyBAQCBzdHJ1Y3QgY3hsX2Rldl9zdGF0ZSB7DQo+PiAgICogQHBvaXNvbjogcG9p c29uIGRyaXZlciBzdGF0ZSBpbmZvDQo+PiAgICogQHNlY3VyaXR5OiBzZWN1cml0eSBkcml2ZXIg c3RhdGUgaW5mbw0KPj4gICAqIEBmdzogZmlybXdhcmUgdXBsb2FkIC8gYWN0aXZhdGlvbiBzdGF0 ZQ0KPj4gLSAqIEBtYm94X3dhaXQ6IFJDVSB3YWl0IGZvciBtYm94IHNlbmQgY29tcGxldGVseQ0K Pj4gLSAqIEBtYm94X3NlbmQ6IEBkZXYgc3BlY2lmaWMgdHJhbnNwb3J0IGZvciB0cmFuc21pdHRp bmcgbWFpbGJveCBjb21tYW5kcw0KPj4gICAqDQo+PiAgICogU2VlIENYTCAzLjAgOC4yLjkuOC4y IENhcGFjaXR5IENvbmZpZ3VyYXRpb24gYW5kIExhYmVsIFN0b3JhZ2UgZm9yDQo+PiAgICogZGV0 YWlscyBvbiBjYXBhY2l0eSBwYXJhbWV0ZXJzLg0KPj4gICAqLw0KPj4gIHN0cnVjdCBjeGxfbWVt ZGV2X3N0YXRlIHsNCj4+ICAJc3RydWN0IGN4bF9kZXZfc3RhdGUgY3hsZHM7DQo+PiAtCXNpemVf dCBwYXlsb2FkX3NpemU7DQo+PiAgCXNpemVfdCBsc2Ffc2l6ZTsNCj4+IC0Jc3RydWN0IG11dGV4 IG1ib3hfbXV0ZXg7IC8qIFByb3RlY3RzIGRldmljZSBtYWlsYm94IGFuZCBmaXJtd2FyZSAqLw0K Pj4gIAljaGFyIGZpcm13YXJlX3ZlcnNpb25bMHgxMF07DQo+PiAgCURFQ0xBUkVfQklUTUFQKGVu YWJsZWRfY21kcywgQ1hMX01FTV9DT01NQU5EX0lEX01BWCk7DQo+PiAgCURFQ0xBUkVfQklUTUFQ KGV4Y2x1c2l2ZV9jbWRzLCBDWExfTUVNX0NPTU1BTkRfSURfTUFYKTsNCj5AQCAtNTAwLDEwDQo+ PiArNDU5LDYgQEAgc3RydWN0IGN4bF9tZW1kZXZfc3RhdGUgew0KPj4gIAlzdHJ1Y3QgY3hsX3Bv aXNvbl9zdGF0ZSBwb2lzb247DQo+PiAgCXN0cnVjdCBjeGxfc2VjdXJpdHlfc3RhdGUgc2VjdXJp dHk7DQo+PiAgCXN0cnVjdCBjeGxfZndfc3RhdGUgZnc7DQo+PiAtDQo+PiAtCXN0cnVjdCByY3V3 YWl0IG1ib3hfd2FpdDsNCj4+IC0JaW50ICgqbWJveF9zZW5kKShzdHJ1Y3QgY3hsX21lbWRldl9z dGF0ZSAqbWRzLA0KPj4gLQkJCSBzdHJ1Y3QgY3hsX21ib3hfY21kICpjbWQpOw0KPj4gIH07DQo+ Pg0KPj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IGN4bF9tZW1kZXZfc3RhdGUgKiBkaWZmIC0tZ2l0 DQo+PiBhL2RyaXZlcnMvY3hsL3BjaS5jIGIvZHJpdmVycy9jeGwvcGNpLmMgaW5kZXgNCj4+IDRi ZTM1ZGMyMjIwMi4uZmFmNmY1YTQ5MzY4IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9jeGwvcGNp LmMNCj4+ICsrKyBiL2RyaXZlcnMvY3hsL3BjaS5jDQo+PiBAQCAtMTI0LDYgKzEyNCw3IEBAIHN0 YXRpYyBpcnFyZXR1cm5fdCBjeGxfcGNpX21ib3hfaXJxKGludCBpcnEsIHZvaWQgKmlkKQ0KPj4g IAl1MTYgb3Bjb2RlOw0KPj4gIAlzdHJ1Y3QgY3hsX2Rldl9pZCAqZGV2X2lkID0gaWQ7DQo+PiAg CXN0cnVjdCBjeGxfZGV2X3N0YXRlICpjeGxkcyA9IGRldl9pZC0+Y3hsZHM7DQo+PiArCXN0cnVj dCBjeGxfbWFpbGJveCAqY3hsX21ib3ggPSAmY3hsZHMtPmN4bF9tYm94Ow0KPj4gIAlzdHJ1Y3Qg Y3hsX21lbWRldl9zdGF0ZSAqbWRzID0gdG9fY3hsX21lbWRldl9zdGF0ZShjeGxkcyk7DQo+Pg0K Pj4gIAlpZiAoIWN4bF9tYm94X2JhY2tncm91bmRfY29tcGxldGUoY3hsZHMpKQ0KPj4gQEAgLTEz MiwxMyArMTMzLDEzIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBjeGxfcGNpX21ib3hfaXJxKGludCBp cnEsIHZvaWQgKmlkKQ0KPj4gIAlyZWcgPSByZWFkcShjeGxkcy0+cmVncy5tYm94ICsNCj5DWExE RVZfTUJPWF9CR19DTURfU1RBVFVTX09GRlNFVCk7DQo+PiAgCW9wY29kZSA9DQo+RklFTERfR0VU KENYTERFVl9NQk9YX0JHX0NNRF9DT01NQU5EX09QQ09ERV9NQVNLLCByZWcpOw0KPj4gIAlpZiAo b3Bjb2RlID09IENYTF9NQk9YX09QX1NBTklUSVpFKSB7DQo+PiAtCQltdXRleF9sb2NrKCZtZHMt Pm1ib3hfbXV0ZXgpOw0KPj4gKwkJbXV0ZXhfbG9jaygmY3hsX21ib3gtPm1ib3hfbXV0ZXgpOw0K Pj4gIAkJaWYgKG1kcy0+c2VjdXJpdHkuc2FuaXRpemVfbm9kZSkNCj4+ICAJCQltb2RfZGVsYXll ZF93b3JrKHN5c3RlbV93cSwgJm1kcy0NCj4+c2VjdXJpdHkucG9sbF9kd29yaywgMCk7DQo+PiAt CQltdXRleF91bmxvY2soJm1kcy0+bWJveF9tdXRleCk7DQo+PiArCQltdXRleF91bmxvY2soJmN4 bF9tYm94LT5tYm94X211dGV4KTsNCj4+ICAJfSBlbHNlIHsNCj4+ICAJCS8qIHNob3J0LWNpcmN1 aXQgdGhlIHdhaXQgaW4gX19jeGxfcGNpX21ib3hfc2VuZF9jbWQoKSAqLw0KPj4gLQkJcmN1d2Fp dF93YWtlX3VwKCZtZHMtPm1ib3hfd2FpdCk7DQo+PiArCQlyY3V3YWl0X3dha2VfdXAoJmN4bF9t Ym94LT5tYm94X3dhaXQpOw0KPj4gIAl9DQo+Pg0KPj4gIAlyZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ PiBAQCAtMTUyLDggKzE1Myw5IEBAIHN0YXRpYyB2b2lkIGN4bF9tYm94X3Nhbml0aXplX3dvcmso c3RydWN0IHdvcmtfc3RydWN0DQo+KndvcmspDQo+PiAgCXN0cnVjdCBjeGxfbWVtZGV2X3N0YXRl ICptZHMgPQ0KPj4gIAkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqbWRzKSwgc2VjdXJpdHku cG9sbF9kd29yay53b3JrKTsNCj4+ICAJc3RydWN0IGN4bF9kZXZfc3RhdGUgKmN4bGRzID0gJm1k cy0+Y3hsZHM7DQo+PiArCXN0cnVjdCBjeGxfbWFpbGJveCAqY3hsX21ib3ggPSAmY3hsZHMtPmN4 bF9tYm94Ow0KPj4NCj4+IC0JbXV0ZXhfbG9jaygmbWRzLT5tYm94X211dGV4KTsNCj4+ICsJbXV0 ZXhfbG9jaygmY3hsX21ib3gtPm1ib3hfbXV0ZXgpOw0KPj4gIAlpZiAoY3hsX21ib3hfYmFja2dy b3VuZF9jb21wbGV0ZShjeGxkcykpIHsNCj4+ICAJCW1kcy0+c2VjdXJpdHkucG9sbF90bW9fc2Vj cyA9IDA7DQo+PiAgCQlpZiAobWRzLT5zZWN1cml0eS5zYW5pdGl6ZV9ub2RlKQ0KPj4gQEAgLTE2 Nyw3ICsxNjksNyBAQCBzdGF0aWMgdm9pZCBjeGxfbWJveF9zYW5pdGl6ZV93b3JrKHN0cnVjdCB3 b3JrX3N0cnVjdA0KPip3b3JrKQ0KPj4gIAkJbWRzLT5zZWN1cml0eS5wb2xsX3Rtb19zZWNzID0g bWluKDE1ICogNjAsIHRpbWVvdXQpOw0KPj4gIAkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZtZHMt PnNlY3VyaXR5LnBvbGxfZHdvcmssIHRpbWVvdXQgKg0KPkhaKTsNCj4+ICAJfQ0KPj4gLQltdXRl eF91bmxvY2soJm1kcy0+bWJveF9tdXRleCk7DQo+PiArCW11dGV4X3VubG9jaygmY3hsX21ib3gt Pm1ib3hfbXV0ZXgpOw0KPj4gIH0NCj4+DQo+PiAgLyoqDQo+PiBAQCAtMTkyLDE3ICsxOTQsMjAg QEAgc3RhdGljIHZvaWQgY3hsX21ib3hfc2FuaXRpemVfd29yayhzdHJ1Y3QNCj53b3JrX3N0cnVj dCAqd29yaykNCj4+ICAgKiBub3QgbmVlZCB0byBjb29yZGluYXRlIHdpdGggZWFjaCBvdGhlci4g VGhlIGRyaXZlciBvbmx5IHVzZXMgdGhlIHByaW1hcnkNCj4+ICAgKiBtYWlsYm94Lg0KPj4gICAq Lw0KPj4gLXN0YXRpYyBpbnQgX19jeGxfcGNpX21ib3hfc2VuZF9jbWQoc3RydWN0IGN4bF9tZW1k ZXZfc3RhdGUgKm1kcywNCj4+ICtzdGF0aWMgaW50IF9fY3hsX3BjaV9tYm94X3NlbmRfY21kKHN0 cnVjdCBjeGxfbWFpbGJveCAqY3hsX21ib3gsDQo+PiAgCQkJCSAgIHN0cnVjdCBjeGxfbWJveF9j bWQgKm1ib3hfY21kKSAgew0KPj4gLQlzdHJ1Y3QgY3hsX2Rldl9zdGF0ZSAqY3hsZHMgPSAmbWRz LT5jeGxkczsNCj4+ICsJc3RydWN0IGN4bF9kZXZfc3RhdGUgKmN4bGRzID0gY29udGFpbmVyX29m KGN4bF9tYm94LA0KPj4gKwkJCQkJCSAgIHN0cnVjdCBjeGxfZGV2X3N0YXRlLA0KPj4gKwkJCQkJ CSAgIGN4bF9tYm94KTsNCj4+ICsJc3RydWN0IGN4bF9tZW1kZXZfc3RhdGUgKm1kcyA9IHRvX2N4 bF9tZW1kZXZfc3RhdGUoY3hsZHMpOw0KPj4gIAl2b2lkIF9faW9tZW0gKnBheWxvYWQgPSBjeGxk cy0+cmVncy5tYm94ICsNCj5DWExERVZfTUJPWF9QQVlMT0FEX09GRlNFVDsNCj4+ICAJc3RydWN0 IGRldmljZSAqZGV2ID0gY3hsZHMtPmRldjsNCj4+ICAJdTY0IGNtZF9yZWcsIHN0YXR1c19yZWc7 DQo+PiAgCXNpemVfdCBvdXRfbGVuOw0KPj4gIAlpbnQgcmM7DQo+Pg0KPj4gLQlsb2NrZGVwX2Fz c2VydF9oZWxkKCZtZHMtPm1ib3hfbXV0ZXgpOw0KPj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZj eGxfbWJveC0+bWJveF9tdXRleCk7DQo+Pg0KPj4gIAkvKg0KPj4gIAkgKiBIZXJlIGFyZSB0aGUg c3RlcHMgZnJvbSA4LjIuOC40IG9mIHRoZSBDWEwgMi4wIHNwZWMuDQo+PiBAQCAtMzE1LDEwICsz MjAsMTAgQEAgc3RhdGljIGludCBfX2N4bF9wY2lfbWJveF9zZW5kX2NtZChzdHJ1Y3QNCj4+IGN4 bF9tZW1kZXZfc3RhdGUgKm1kcywNCj4+DQo+PiAgCQl0aW1lb3V0ID0gbWJveF9jbWQtPnBvbGxf aW50ZXJ2YWxfbXM7DQo+PiAgCQlmb3IgKGkgPSAwOyBpIDwgbWJveF9jbWQtPnBvbGxfY291bnQ7 IGkrKykgew0KPj4gLQkJCWlmIChyY3V3YWl0X3dhaXRfZXZlbnRfdGltZW91dCgmbWRzLT5tYm94 X3dhaXQsDQo+PiAtCQkJCSAgICAgICBjeGxfbWJveF9iYWNrZ3JvdW5kX2NvbXBsZXRlKGN4bGRz KSwNCj4+IC0JCQkJICAgICAgIFRBU0tfVU5JTlRFUlJVUFRJQkxFLA0KPj4gLQkJCQkgICAgICAg bXNlY3NfdG9famlmZmllcyh0aW1lb3V0KSkgPiAwKQ0KPj4gKwkJCWlmIChyY3V3YWl0X3dhaXRf ZXZlbnRfdGltZW91dCgmY3hsX21ib3gtDQo+Pm1ib3hfd2FpdCwNCj4+ICsNCj5jeGxfbWJveF9i YWNrZ3JvdW5kX2NvbXBsZXRlKGN4bGRzKSwNCj4+ICsJCQkJCQkgICAgICAgVEFTS19VTklOVEVS UlVQVElCTEUsDQo+PiArCQkJCQkJICAgICAgIG1zZWNzX3RvX2ppZmZpZXModGltZW91dCkpDQo+ PiAwKQ0KPj4gIAkJCQlicmVhazsNCj4+ICAJCX0NCj4+DQo+PiBAQCAtMzYwLDcgKzM2NSw3IEBA IHN0YXRpYyBpbnQgX19jeGxfcGNpX21ib3hfc2VuZF9jbWQoc3RydWN0DQo+Y3hsX21lbWRldl9z dGF0ZSAqbWRzLA0KPj4gIAkJICovDQo+PiAgCQlzaXplX3QgbjsNCj4+DQo+PiAtCQluID0gbWlu MyhtYm94X2NtZC0+c2l6ZV9vdXQsIG1kcy0+cGF5bG9hZF9zaXplLCBvdXRfbGVuKTsNCj4+ICsJ CW4gPSBtaW4zKG1ib3hfY21kLT5zaXplX291dCwgY3hsX21ib3gtPnBheWxvYWRfc2l6ZSwNCj5v dXRfbGVuKTsNCj4+ICAJCW1lbWNweV9mcm9taW8obWJveF9jbWQtPnBheWxvYWRfb3V0LCBwYXls b2FkLCBuKTsNCj4+ICAJCW1ib3hfY21kLT5zaXplX291dCA9IG47DQo+PiAgCX0gZWxzZSB7DQo+ PiBAQCAtMzcwLDE0ICszNzUsMTQgQEAgc3RhdGljIGludCBfX2N4bF9wY2lfbWJveF9zZW5kX2Nt ZChzdHJ1Y3QNCj5jeGxfbWVtZGV2X3N0YXRlICptZHMsDQo+PiAgCXJldHVybiAwOw0KPj4gIH0N Cj4+DQo+PiAtc3RhdGljIGludCBjeGxfcGNpX21ib3hfc2VuZChzdHJ1Y3QgY3hsX21lbWRldl9z dGF0ZSAqbWRzLA0KPj4gK3N0YXRpYyBpbnQgY3hsX3BjaV9tYm94X3NlbmQoc3RydWN0IGN4bF9t YWlsYm94ICpjeGxfbWJveCwNCj4+ICAJCQkgICAgIHN0cnVjdCBjeGxfbWJveF9jbWQgKmNtZCkN Cj4+ICB7DQo+PiAgCWludCByYzsNCj4+DQo+PiAtCW11dGV4X2xvY2tfaW8oJm1kcy0+bWJveF9t dXRleCk7DQo+PiAtCXJjID0gX19jeGxfcGNpX21ib3hfc2VuZF9jbWQobWRzLCBjbWQpOw0KPj4g LQltdXRleF91bmxvY2soJm1kcy0+bWJveF9tdXRleCk7DQo+PiArCW11dGV4X2xvY2tfaW8oJmN4 bF9tYm94LT5tYm94X211dGV4KTsNCj4+ICsJcmMgPSBfX2N4bF9wY2lfbWJveF9zZW5kX2NtZChj eGxfbWJveCwgY21kKTsNCj4+ICsJbXV0ZXhfdW5sb2NrKCZjeGxfbWJveC0+bWJveF9tdXRleCk7 DQo+Pg0KPj4gIAlyZXR1cm4gcmM7DQo+PiAgfQ0KPj4gQEAgLTM4NSw2ICszOTAsNyBAQCBzdGF0 aWMgaW50IGN4bF9wY2lfbWJveF9zZW5kKHN0cnVjdA0KPj4gY3hsX21lbWRldl9zdGF0ZSAqbWRz LCAgc3RhdGljIGludCBjeGxfcGNpX3NldHVwX21haWxib3goc3RydWN0DQo+PiBjeGxfbWVtZGV2 X3N0YXRlICptZHMsIGJvb2wgaXJxX2F2YWlsKSAgew0KPj4gIAlzdHJ1Y3QgY3hsX2Rldl9zdGF0 ZSAqY3hsZHMgPSAmbWRzLT5jeGxkczsNCj4+ICsJc3RydWN0IGN4bF9tYWlsYm94ICpjeGxfbWJv eCA9ICZjeGxkcy0+Y3hsX21ib3g7DQo+PiAgCWNvbnN0IGludCBjYXAgPSByZWFkbChjeGxkcy0+ cmVncy5tYm94ICsgQ1hMREVWX01CT1hfQ0FQU19PRkZTRVQpOw0KPj4gIAlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSBjeGxkcy0+ZGV2Ow0KPj4gIAl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7DQo+PiBAQCAt MzkyLDYgKzM5OCw3IEBAIHN0YXRpYyBpbnQgY3hsX3BjaV9zZXR1cF9tYWlsYm94KHN0cnVjdA0K PmN4bF9tZW1kZXZfc3RhdGUgKm1kcywgYm9vbCBpcnFfYXZhaWwpDQo+PiAgCXU2NCBtZF9zdGF0 dXM7DQo+PiAgCXUzMiBjdHJsOw0KPj4NCj4+ICsJY3hsX21ib3gtPmhvc3QgPSBkZXY7DQo+PiAg CXRpbWVvdXQgPSBqaWZmaWVzICsgbWJveF9yZWFkeV90aW1lb3V0ICogSFo7DQo+PiAgCWRvIHsN Cj4+ICAJCW1kX3N0YXR1cyA9IHJlYWRxKGN4bGRzLT5yZWdzLm1lbWRldiArDQo+Q1hMTURFVl9T VEFUVVNfT0ZGU0VUKTsgQEANCj4+IC00MTcsOCArNDI0LDggQEAgc3RhdGljIGludCBjeGxfcGNp X3NldHVwX21haWxib3goc3RydWN0IGN4bF9tZW1kZXZfc3RhdGUNCj4qbWRzLCBib29sIGlycV9h dmFpbCkNCj4+ICAJCXJldHVybiAtRVRJTUVET1VUOw0KPj4gIAl9DQo+Pg0KPj4gLQltZHMtPm1i b3hfc2VuZCA9IGN4bF9wY2lfbWJveF9zZW5kOw0KPj4gLQltZHMtPnBheWxvYWRfc2l6ZSA9DQo+ PiArCWN4bF9tYm94LT5tYm94X3NlbmQgPSBjeGxfcGNpX21ib3hfc2VuZDsNCj4+ICsJY3hsX21i b3gtPnBheWxvYWRfc2l6ZSA9DQo+PiAgCQkxIDw8IEZJRUxEX0dFVChDWExERVZfTUJPWF9DQVBf UEFZTE9BRF9TSVpFX01BU0ssDQo+Y2FwKTsNCj4+DQo+PiAgCS8qDQo+PiBAQCAtNDI4LDE2ICs0 MzUsMTYgQEAgc3RhdGljIGludCBjeGxfcGNpX3NldHVwX21haWxib3goc3RydWN0DQo+Y3hsX21l bWRldl9zdGF0ZSAqbWRzLCBib29sIGlycV9hdmFpbCkNCj4+ICAJICogdGhlcmUncyBubyBwb2lu dCBpbiBnb2luZyBmb3J3YXJkLiBJZiB0aGUgc2l6ZSBpcyB0b28gbGFyZ2UsIHRoZXJlJ3MNCj4+ ICAJICogbm8gaGFybSBpcyBzb2Z0IGxpbWl0aW5nIGl0Lg0KPj4gIAkgKi8NCj4+IC0JbWRzLT5w YXlsb2FkX3NpemUgPSBtaW5fdChzaXplX3QsIG1kcy0+cGF5bG9hZF9zaXplLCBTWl8xTSk7DQo+ PiAtCWlmIChtZHMtPnBheWxvYWRfc2l6ZSA8IDI1Nikgew0KPj4gKwljeGxfbWJveC0+cGF5bG9h ZF9zaXplID0gbWluX3Qoc2l6ZV90LCBjeGxfbWJveC0+cGF5bG9hZF9zaXplLA0KPlNaXzFNKTsN Cj4+ICsJaWYgKGN4bF9tYm94LT5wYXlsb2FkX3NpemUgPCAyNTYpIHsNCj4+ICAJCWRldl9lcnIo ZGV2LCAiTWFpbGJveCBpcyB0b28gc21hbGwgKCV6dWIpIiwNCj4+IC0JCQltZHMtPnBheWxvYWRf c2l6ZSk7DQo+PiArCQkJY3hsX21ib3gtPnBheWxvYWRfc2l6ZSk7DQo+PiAgCQlyZXR1cm4gLUVO WElPOw0KPj4gIAl9DQo+Pg0KPj4gLQlkZXZfZGJnKGRldiwgIk1haWxib3ggcGF5bG9hZCBzaXpl ZCAlenUiLCBtZHMtPnBheWxvYWRfc2l6ZSk7DQo+PiArCWRldl9kYmcoZGV2LCAiTWFpbGJveCBw YXlsb2FkIHNpemVkICV6dSIsIGN4bF9tYm94LT5wYXlsb2FkX3NpemUpOw0KPj4NCj4+IC0JcmN1 d2FpdF9pbml0KCZtZHMtPm1ib3hfd2FpdCk7DQo+PiArCXJjdXdhaXRfaW5pdCgmY3hsX21ib3gt Pm1ib3hfd2FpdCk7DQo+PiAgCUlOSVRfREVMQVlFRF9XT1JLKCZtZHMtPnNlY3VyaXR5LnBvbGxf ZHdvcmssDQo+PiBjeGxfbWJveF9zYW5pdGl6ZV93b3JrKTsNCj4+DQo+PiAgCS8qIGJhY2tncm91 bmQgY29tbWFuZCBpbnRlcnJ1cHRzIGFyZSBvcHRpb25hbCAqLyBAQCAtNTc4LDkgKzU4NSwxMA0K Pj4gQEAgc3RhdGljIHZvaWQgZnJlZV9ldmVudF9idWYodm9pZCAqYnVmKQ0KPj4gICAqLw0KPj4g IHN0YXRpYyBpbnQgY3hsX21lbV9hbGxvY19ldmVudF9idWYoc3RydWN0IGN4bF9tZW1kZXZfc3Rh dGUgKm1kcykgIHsNCj4+ICsJc3RydWN0IGN4bF9tYWlsYm94ICpjeGxfbWJveCA9ICZtZHMtPmN4 bGRzLmN4bF9tYm94Ow0KPj4gIAlzdHJ1Y3QgY3hsX2dldF9ldmVudF9wYXlsb2FkICpidWY7DQo+ Pg0KPj4gLQlidWYgPSBrdm1hbGxvYyhtZHMtPnBheWxvYWRfc2l6ZSwgR0ZQX0tFUk5FTCk7DQo+ PiArCWJ1ZiA9IGt2bWFsbG9jKGN4bF9tYm94LT5wYXlsb2FkX3NpemUsIEdGUF9LRVJORUwpOw0K Pj4gIAlpZiAoIWJ1ZikNCj4+ICAJCXJldHVybiAtRU5PTUVNOw0KPj4gIAltZHMtPmV2ZW50LmJ1 ZiA9IGJ1ZjsNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2N4bC9wbWVtLmMgYi9kcml2ZXJzL2N4 bC9wbWVtLmMgaW5kZXgNCj4+IDRlZjkzZGEyMjMzNS4uMzk4NWZmOWNlNzBlIDEwMDY0NA0KPj4g LS0tIGEvZHJpdmVycy9jeGwvcG1lbS5jDQo+PiArKysgYi9kcml2ZXJzL2N4bC9wbWVtLmMNCj4+ IEBAIC0xMDIsMTMgKzEwMiwxNSBAQCBzdGF0aWMgaW50IGN4bF9wbWVtX2dldF9jb25maWdfc2l6 ZShzdHJ1Y3QNCj5jeGxfbWVtZGV2X3N0YXRlICptZHMsDQo+PiAgCQkJCSAgICBzdHJ1Y3QgbmRf Y21kX2dldF9jb25maWdfc2l6ZSAqY21kLA0KPj4gIAkJCQkgICAgdW5zaWduZWQgaW50IGJ1Zl9s ZW4pDQo+PiAgew0KPj4gKwlzdHJ1Y3QgY3hsX21haWxib3ggKmN4bF9tYm94ID0gJm1kcy0+Y3hs ZHMuY3hsX21ib3g7DQo+PiArDQo+PiAgCWlmIChzaXplb2YoKmNtZCkgPiBidWZfbGVuKQ0KPj4g IAkJcmV0dXJuIC1FSU5WQUw7DQo+Pg0KPj4gIAkqY21kID0gKHN0cnVjdCBuZF9jbWRfZ2V0X2Nv bmZpZ19zaXplKXsNCj4+ICAJCS5jb25maWdfc2l6ZSA9IG1kcy0+bHNhX3NpemUsDQo+PiAgCQku bWF4X3hmZXIgPQ0KPj4gLQkJCW1kcy0+cGF5bG9hZF9zaXplIC0gc2l6ZW9mKHN0cnVjdCBjeGxf bWJveF9zZXRfbHNhKSwNCj4+ICsJCQljeGxfbWJveC0+cGF5bG9hZF9zaXplIC0gc2l6ZW9mKHN0 cnVjdA0KPmN4bF9tYm94X3NldF9sc2EpLA0KPj4gIAl9Ow0KPj4NCj4+ICAJcmV0dXJuIDA7DQo+ PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jeGwvbWFpbGJveC5oIGIvaW5jbHVkZS9saW51 eC9jeGwvbWFpbGJveC5oDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleCAwMDAwMDAwMDAw MDAuLjY1NGRmNjE3NTgyOA0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvaW5jbHVkZS9saW51 eC9jeGwvbWFpbGJveC5oDQo+PiBAQCAtMCwwICsxLDYzIEBADQo+PiArLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLw0KPj4gKy8qIENvcHlyaWdodChjKSAyMDI0IElu dGVsIENvcnBvcmF0aW9uLiAqLyAjaWZuZGVmIF9fQ1hMX01CT1hfSF9fDQo+PiArI2RlZmluZSBf X0NYTF9NQk9YX0hfXw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxsaW51eC9hdXhpbGlhcnlfYnVzLmg+ DQo+PiArDQo+PiArLyoqDQo+PiArICogc3RydWN0IGN4bF9tYm94X2NtZCAtIEEgY29tbWFuZCB0 byBiZSBzdWJtaXR0ZWQgdG8gaGFyZHdhcmUuDQo+PiArICogQG9wY29kZTogKGlucHV0KSBUaGUg Y29tbWFuZCBzZXQgYW5kIGNvbW1hbmQgc3VibWl0dGVkIHRvIGhhcmR3YXJlLg0KPj4gKyAqIEBw YXlsb2FkX2luOiAoaW5wdXQpIFBvaW50ZXIgdG8gdGhlIGlucHV0IHBheWxvYWQuDQo+PiArICog QHBheWxvYWRfb3V0OiAob3V0cHV0KSBQb2ludGVyIHRvIHRoZSBvdXRwdXQgcGF5bG9hZC4gTXVz dCBiZSBhbGxvY2F0ZWQNCj5ieQ0KPj4gKyAqCQkgdGhlIGNhbGxlci4NCj4+ICsgKiBAc2l6ZV9p bjogKGlucHV0KSBOdW1iZXIgb2YgYnl0ZXMgdG8gbG9hZCBmcm9tIEBwYXlsb2FkX2luLg0KPj4g KyAqIEBzaXplX291dDogKGlucHV0KSBNYXggbnVtYmVyIG9mIGJ5dGVzIGxvYWRlZCBpbnRvIEBw YXlsb2FkX291dC4NCj4+ICsgKiAgICAgICAgICAgIChvdXRwdXQpIE51bWJlciBvZiBieXRlcyBn ZW5lcmF0ZWQgYnkgdGhlIGRldmljZS4gRm9yIGZpeGVkIHNpemUNCj4+ICsgKiAgICAgICAgICAg IG91dHB1dHMgY29tbWFuZHMgdGhpcyBpcyBhbHdheXMgZXhwZWN0ZWQgdG8gYmUgZGV0ZXJtaW5p c3RpYy4gRm9yDQo+PiArICogICAgICAgICAgICB2YXJpYWJsZSBzaXplZCBvdXRwdXQgY29tbWFu ZHMsIGl0IHRlbGxzIHRoZSBleGFjdCBudW1iZXIgb2YgYnl0ZXMNCj4+ICsgKiAgICAgICAgICAg IHdyaXR0ZW4uDQo+PiArICogQG1pbl9vdXQ6IChpbnB1dCkgaW50ZXJuYWwgY29tbWFuZCBvdXRw dXQgcGF5bG9hZCBzaXplIHZhbGlkYXRpb24NCj4+ICsgKiBAcG9sbF9jb3VudDogKGlucHV0KSBO dW1iZXIgb2YgdGltZW91dHMgdG8gYXR0ZW1wdC4NCj4+ICsgKiBAcG9sbF9pbnRlcnZhbF9tczog KGlucHV0KSBUaW1lIGJldHdlZW4gbWFpbGJveCBiYWNrZ3JvdW5kIGNvbW1hbmQNCj5wb2xsaW5n DQo+PiArICogICAgICAgICAgICAgICAgICAgIGludGVydmFsIHRpbWVvdXRzLg0KPj4gKyAqIEBy ZXR1cm5fY29kZTogKG91dHB1dCkgRXJyb3IgY29kZSByZXR1cm5lZCBmcm9tIGhhcmR3YXJlLg0K Pj4gKyAqDQo+PiArICogVGhpcyBpcyB0aGUgcHJpbWFyeSBtZWNoYW5pc20gdXNlZCB0byBzZW5k IGNvbW1hbmRzIHRvIHRoZSBoYXJkd2FyZS4NCj4+ICsgKiBBbGwgdGhlIGZpZWxkcyBleGNlcHQg QHBheWxvYWRfKiBjb3JyZXNwb25kIGV4YWN0bHkgdG8gdGhlIGZpZWxkcw0KPj4gK2Rlc2NyaWJl ZCBpbg0KPj4gKyAqIENvbW1hbmQgUmVnaXN0ZXIgc2VjdGlvbiBvZiB0aGUgQ1hMIDIuMCA4LjIu OC40LjUuIEBwYXlsb2FkX2luIGFuZA0KPj4gKyAqIEBwYXlsb2FkX291dCBhcmUgd3JpdHRlbiB0 bywgYW5kIHJlYWQgZnJvbSB0aGUgQ29tbWFuZCBQYXlsb2FkDQo+PiArUmVnaXN0ZXJzDQo+PiAr ICogZGVmaW5lZCBpbiBDWEwgMi4wIDguMi44LjQuOC4NCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgY3hs X21ib3hfY21kIHsNCj4+ICsJdTE2IG9wY29kZTsNCj4+ICsJdm9pZCAqcGF5bG9hZF9pbjsNCj4+ ICsJdm9pZCAqcGF5bG9hZF9vdXQ7DQo+PiArCXNpemVfdCBzaXplX2luOw0KPj4gKwlzaXplX3Qg c2l6ZV9vdXQ7DQo+PiArCXNpemVfdCBtaW5fb3V0Ow0KPj4gKwlpbnQgcG9sbF9jb3VudDsNCj4+ ICsJaW50IHBvbGxfaW50ZXJ2YWxfbXM7DQo+PiArCXUxNiByZXR1cm5fY29kZTsNCj4+ICt9Ow0K Pj4gKw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCBjeGxfbWFpbGJveCAtIGNvbnRleHQgZm9yIENY TCBtYWlsYm94IG9wZXJhdGlvbnMNCj4+ICsgKiBAaG9zdDogZGV2aWNlIHRoYXQgaG9zdHMgdGhl IG1haWxib3gNCj4+ICsgKiBAYWRldjogYXV4aWxpYXJ5IGRldmljZSBmb3IgZnctY3RsDQo+PiAr ICogQHBheWxvYWRfc2l6ZTogU2l6ZSBvZiBzcGFjZSBmb3IgcGF5bG9hZA0KPj4gKyAqICAgICAg ICAgICAgICAgIChDWEwgMy4xIDguMi44LjQuMyBNYWlsYm94IENhcGFiaWxpdGllcyBSZWdpc3Rl cikNCj4+ICsgKiBAbWJveF9tdXRleDogbXV0ZXggcHJvdGVjdHMgZGV2aWNlIG1haWxib3ggYW5k IGZpcm13YXJlDQo+PiArICogQG1ib3hfd2FpdDogcmN1d2FpdCBmb3IgbWFpbGJveA0KPj4gKyAq IEBtYm94X3NlbmQ6IEBkZXYgc3BlY2lmaWMgdHJhbnNwb3J0IGZvciB0cmFuc21pdHRpbmcgbWFp bGJveA0KPj4gK2NvbW1hbmRzICAqLyBzdHJ1Y3QgY3hsX21haWxib3ggew0KPj4gKwlzdHJ1Y3Qg ZGV2aWNlICpob3N0Ow0KPj4gKwlzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSBhZGV2OyAvKiBGb3Ig ZnctY3RsICovDQo+PiArCXNpemVfdCBwYXlsb2FkX3NpemU7DQo+PiArCXN0cnVjdCBtdXRleCBt Ym94X211dGV4OyAvKiBsb2NrIHRvIHByb3RlY3QgbWFpbGJveCBjb250ZXh0ICovDQo+PiArCXN0 cnVjdCByY3V3YWl0IG1ib3hfd2FpdDsNCj4+ICsJaW50ICgqbWJveF9zZW5kKShzdHJ1Y3QgY3hs X21haWxib3ggKmN4bF9tYm94LCBzdHJ1Y3QgY3hsX21ib3hfY21kDQo+PiArKmNtZCk7IH07DQo+ PiArDQo+PiArI2VuZGlmDQo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9jeGwvdGVzdC9t ZW0uYw0KPj4gYi90b29scy90ZXN0aW5nL2N4bC90ZXN0L21lbS5jIGluZGV4IDEyOWYxNzliMGFj NS4uMTgyOWI2MjZiYjQwIDEwMDY0NA0KPj4gLS0tIGEvdG9vbHMvdGVzdGluZy9jeGwvdGVzdC9t ZW0uYw0KPj4gKysrIGIvdG9vbHMvdGVzdGluZy9jeGwvdGVzdC9tZW0uYw0KPj4gQEAgLTgsNiAr OCw3IEBADQo+PiAgI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQo+PiAgI2luY2x1ZGUgPGxpbnV4 L3NpemVzLmg+DQo+PiAgI2luY2x1ZGUgPGxpbnV4L2JpdHMuaD4NCj4+ICsjaW5jbHVkZSA8bGlu dXgvY3hsL21haWxib3guaD4NCj4+ICAjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPg0KPj4gICNp bmNsdWRlIDxjcnlwdG8vc2hhMi5oPg0KPj4gICNpbmNsdWRlIDxjeGxtZW0uaD4NCj4+IEBAIC01 MzQsNiArNTM1LDcgQEAgc3RhdGljIGludCBtb2NrX2dzbChzdHJ1Y3QgY3hsX21ib3hfY21kICpj bWQpDQo+Pg0KPj4gIHN0YXRpYyBpbnQgbW9ja19nZXRfbG9nKHN0cnVjdCBjeGxfbWVtZGV2X3N0 YXRlICptZHMsIHN0cnVjdA0KPj4gY3hsX21ib3hfY21kICpjbWQpICB7DQo+PiArCXN0cnVjdCBj eGxfbWFpbGJveCAqY3hsX21ib3ggPSAmbWRzLT5jeGxkcy5jeGxfbWJveDsNCj4+ICAJc3RydWN0 IGN4bF9tYm94X2dldF9sb2cgKmdsID0gY21kLT5wYXlsb2FkX2luOw0KPj4gIAl1MzIgb2Zmc2V0 ID0gbGUzMl90b19jcHUoZ2wtPm9mZnNldCk7DQo+PiAgCXUzMiBsZW5ndGggPSBsZTMyX3RvX2Nw dShnbC0+bGVuZ3RoKTsgQEAgLTU0Miw3ICs1NDQsNyBAQCBzdGF0aWMgaW50DQo+PiBtb2NrX2dl dF9sb2coc3RydWN0IGN4bF9tZW1kZXZfc3RhdGUgKm1kcywgc3RydWN0IGN4bF9tYm94X2NtZCAq Y21kKQ0KPj4NCj4+ICAJaWYgKGNtZC0+c2l6ZV9pbiA8IHNpemVvZigqZ2wpKQ0KPj4gIAkJcmV0 dXJuIC1FSU5WQUw7DQo+PiAtCWlmIChsZW5ndGggPiBtZHMtPnBheWxvYWRfc2l6ZSkNCj4+ICsJ aWYgKGxlbmd0aCA+IGN4bF9tYm94LT5wYXlsb2FkX3NpemUpDQo+PiAgCQlyZXR1cm4gLUVJTlZB TDsNCj4+ICAJaWYgKG9mZnNldCArIGxlbmd0aCA+IHNpemVvZihtb2NrX2NlbCkpDQo+PiAgCQly ZXR1cm4gLUVJTlZBTDsNCj4+IEBAIC02MTcsMTIgKzYxOSwxMyBAQCB2b2lkIGN4bF9tb2NrbWVt X3Nhbml0aXplX3dvcmsoc3RydWN0DQo+PiB3b3JrX3N0cnVjdCAqd29yaykgIHsNCj4+ICAJc3Ry dWN0IGN4bF9tZW1kZXZfc3RhdGUgKm1kcyA9DQo+PiAgCQljb250YWluZXJfb2Yod29yaywgdHlw ZW9mKCptZHMpLCBzZWN1cml0eS5wb2xsX2R3b3JrLndvcmspOw0KPj4gKwlzdHJ1Y3QgY3hsX21h aWxib3ggKmN4bF9tYm94ID0gJm1kcy0+Y3hsZHMuY3hsX21ib3g7DQo+Pg0KPj4gLQltdXRleF9s b2NrKCZtZHMtPm1ib3hfbXV0ZXgpOw0KPj4gKwltdXRleF9sb2NrKCZjeGxfbWJveC0+bWJveF9t dXRleCk7DQo+PiAgCWlmIChtZHMtPnNlY3VyaXR5LnNhbml0aXplX25vZGUpDQo+PiAgCQlzeXNm c19ub3RpZnlfZGlyZW50KG1kcy0+c2VjdXJpdHkuc2FuaXRpemVfbm9kZSk7DQo+PiAgCW1kcy0+ c2VjdXJpdHkuc2FuaXRpemVfYWN0aXZlID0gZmFsc2U7DQo+PiAtCW11dGV4X3VubG9jaygmbWRz LT5tYm94X211dGV4KTsNCj4+ICsJbXV0ZXhfdW5sb2NrKCZjeGxfbWJveC0+bWJveF9tdXRleCk7 DQo+Pg0KPj4gIAlkZXZfZGJnKG1kcy0+Y3hsZHMuZGV2LCAic2FuaXRpemUgY29tcGxldGVcbiIp OyAgfSBAQCAtNjMxLDYgKzYzNCw3DQo+PiBAQCBzdGF0aWMgaW50IG1vY2tfc2FuaXRpemUoc3Ry dWN0IGN4bF9tb2NrbWVtX2RhdGEgKm1kYXRhLA0KPj4gIAkJCSBzdHJ1Y3QgY3hsX21ib3hfY21k ICpjbWQpDQo+PiAgew0KPj4gIAlzdHJ1Y3QgY3hsX21lbWRldl9zdGF0ZSAqbWRzID0gbWRhdGEt Pm1kczsNCj4+ICsJc3RydWN0IGN4bF9tYWlsYm94ICpjeGxfbWJveCA9ICZtZHMtPmN4bGRzLmN4 bF9tYm94Ow0KPj4gIAlpbnQgcmMgPSAwOw0KPj4NCj4+ICAJaWYgKGNtZC0+c2l6ZV9pbiAhPSAw KQ0KPj4gQEAgLTY0OCwxNCArNjUyLDE0IEBAIHN0YXRpYyBpbnQgbW9ja19zYW5pdGl6ZShzdHJ1 Y3QgY3hsX21vY2ttZW1fZGF0YQ0KPiptZGF0YSwNCj4+ICAJCXJldHVybiAtRU5YSU87DQo+PiAg CX0NCj4+DQo+PiAtCW11dGV4X2xvY2soJm1kcy0+bWJveF9tdXRleCk7DQo+PiArCW11dGV4X2xv Y2soJmN4bF9tYm94LT5tYm94X211dGV4KTsNCj4+ICAJaWYgKHNjaGVkdWxlX2RlbGF5ZWRfd29y aygmbWRzLT5zZWN1cml0eS5wb2xsX2R3b3JrLA0KPj4gIAkJCQkgIG1zZWNzX3RvX2ppZmZpZXMo bWRhdGEtPnNhbml0aXplX3RpbWVvdXQpKSkgew0KPj4gIAkJbWRzLT5zZWN1cml0eS5zYW5pdGl6 ZV9hY3RpdmUgPSB0cnVlOw0KPj4gIAkJZGV2X2RiZyhtZHMtPmN4bGRzLmRldiwgInNhbml0aXpl IGlzc3VlZFxuIik7DQo+PiAgCX0gZWxzZQ0KPj4gIAkJcmMgPSAtRUJVU1k7DQo+PiAtCW11dGV4 X3VubG9jaygmbWRzLT5tYm94X211dGV4KTsNCj4+ICsJbXV0ZXhfdW5sb2NrKCZjeGxfbWJveC0+ bWJveF9tdXRleCk7DQo+Pg0KPj4gIAlyZXR1cm4gcmM7DQo+PiAgfQ0KPj4gQEAgLTEzMzMsMTAg KzEzMzcsMTMgQEAgc3RhdGljIGludCBtb2NrX2FjdGl2YXRlX2Z3KHN0cnVjdA0KPmN4bF9tb2Nr bWVtX2RhdGEgKm1kYXRhLA0KPj4gIAlyZXR1cm4gLUVJTlZBTDsNCj4+ICB9DQo+Pg0KPj4gLXN0 YXRpYyBpbnQgY3hsX21vY2tfbWJveF9zZW5kKHN0cnVjdCBjeGxfbWVtZGV2X3N0YXRlICptZHMs DQo+PiArc3RhdGljIGludCBjeGxfbW9ja19tYm94X3NlbmQoc3RydWN0IGN4bF9tYWlsYm94ICpj eGxfbWJveCwNCj4+ICAJCQkgICAgICBzdHJ1Y3QgY3hsX21ib3hfY21kICpjbWQpDQo+PiAgew0K Pj4gLQlzdHJ1Y3QgY3hsX2Rldl9zdGF0ZSAqY3hsZHMgPSAmbWRzLT5jeGxkczsNCj4+ICsJc3Ry dWN0IGN4bF9kZXZfc3RhdGUgKmN4bGRzID0gY29udGFpbmVyX29mKGN4bF9tYm94LA0KPj4gKwkJ CQkJCSAgIHN0cnVjdCBjeGxfZGV2X3N0YXRlLA0KPj4gKwkJCQkJCSAgIGN4bF9tYm94KTsNCj4+ ICsJc3RydWN0IGN4bF9tZW1kZXZfc3RhdGUgKm1kcyA9IHRvX2N4bF9tZW1kZXZfc3RhdGUoY3hs ZHMpOw0KPj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBjeGxkcy0+ZGV2Ow0KPj4gIAlzdHJ1Y3Qg Y3hsX21vY2ttZW1fZGF0YSAqbWRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4+ICAJaW50 IHJjID0gLUVJTzsNCj4+IEBAIC0xNDYwLDYgKzE0NjcsNyBAQCBzdGF0aWMgaW50IGN4bF9tb2Nr X21lbV9wcm9iZShzdHJ1Y3QNCj5wbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+PiAgCXN0cnVjdCBj eGxfbWVtZGV2X3N0YXRlICptZHM7DQo+PiAgCXN0cnVjdCBjeGxfZGV2X3N0YXRlICpjeGxkczsN Cj4+ICAJc3RydWN0IGN4bF9tb2NrbWVtX2RhdGEgKm1kYXRhOw0KPj4gKwlzdHJ1Y3QgY3hsX21h aWxib3ggKmN4bF9tYm94Ow0KPj4gIAlpbnQgcmM7DQo+Pg0KPj4gIAltZGF0YSA9IGRldm1fa3ph bGxvYyhkZXYsIHNpemVvZigqbWRhdGEpLCBHRlBfS0VSTkVMKTsgQEAgLTE0ODcsOQ0KPj4gKzE0 OTUsMTAgQEAgc3RhdGljIGludCBjeGxfbW9ja19tZW1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikNCj4+ICAJaWYgKElTX0VSUihtZHMpKQ0KPj4gIAkJcmV0dXJuIFBUUl9FUlIo bWRzKTsNCj4+DQo+PiArCWN4bF9tYm94ID0gJm1kcy0+Y3hsZHMuY3hsX21ib3g7DQo+PiAgCW1k YXRhLT5tZHMgPSBtZHM7DQo+PiAtCW1kcy0+bWJveF9zZW5kID0gY3hsX21vY2tfbWJveF9zZW5k Ow0KPj4gLQltZHMtPnBheWxvYWRfc2l6ZSA9IFNaXzRLOw0KPj4gKwljeGxfbWJveC0+bWJveF9z ZW5kID0gY3hsX21vY2tfbWJveF9zZW5kOw0KPj4gKwljeGxfbWJveC0+cGF5bG9hZF9zaXplID0g U1pfNEs7DQo+PiAgCW1kcy0+ZXZlbnQuYnVmID0gKHN0cnVjdCBjeGxfZ2V0X2V2ZW50X3BheWxv YWQgKikgbWRhdGEtPmV2ZW50X2J1ZjsNCj4+ICAJSU5JVF9ERUxBWUVEX1dPUksoJm1kcy0+c2Vj dXJpdHkucG9sbF9kd29yaywNCj4+IGN4bF9tb2NrbWVtX3Nhbml0aXplX3dvcmspOw0KPj4NCg0K