From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4F51C4741F for ; Tue, 6 Oct 2020 07:14:10 +0000 (UTC) Received: from ml01.01.org (ml01.01.org [198.145.21.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 44A0B20760 for ; Tue, 6 Oct 2020 07:14:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 44A0B20760 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvdimm-bounces@lists.01.org Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 1FA7A157F076C; Tue, 6 Oct 2020 00:14:10 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=134.134.136.126; helo=mga18.intel.com; envelope-from=dan.j.williams@intel.com; receiver= Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 6C35415779C5E for ; Tue, 6 Oct 2020 00:14:07 -0700 (PDT) IronPort-SDR: 2KBWHe18TYciz/gl5QwHG0B3tsbhbXQCPHAqG+v6SxcrcqAnjJfU8BdTwfEf/CzHN8R8nDSCfU 2TNa2kWUx5GA== X-IronPort-AV: E=McAfee;i="6000,8403,9765"; a="152159993" X-IronPort-AV: E=Sophos;i="5.77,342,1596524400"; d="scan'208";a="152159993" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2020 00:14:07 -0700 IronPort-SDR: UYbgY8oCorpF56WK+5x0acSqLwKCCAr5lM2Q/R7z4aoNNTbXBBDKh/VOhtBXDj57UpYk6QBc/n lkhU1g6VnaLg== X-IronPort-AV: E=Sophos;i="5.77,342,1596524400"; d="scan'208";a="296852034" Received: from dwillia2-desk3.jf.intel.com (HELO dwillia2-desk3.amr.corp.intel.com) ([10.54.39.25]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2020 00:14:05 -0700 Subject: [PATCH v6 09/11] mm/memremap_pages: convert to 'struct range' From: Dan Williams To: akpm@linux-foundation.org Date: Mon, 05 Oct 2020 23:55:36 -0700 Message-ID: <160196733645.2166475.12840692906594512941.stgit@dwillia2-desk3.amr.corp.intel.com> In-Reply-To: <160196728453.2166475.12832711415715687418.stgit@dwillia2-desk3.amr.corp.intel.com> References: <160196728453.2166475.12832711415715687418.stgit@dwillia2-desk3.amr.corp.intel.com> User-Agent: StGit/0.18-3-g996c MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Message-ID-Hash: 63H3DFAPIE7NCVMKD3CR3JNEJRMDOODP X-Message-ID-Hash: 63H3DFAPIE7NCVMKD3CR3JNEJRMDOODP X-MailFrom: dan.j.williams@intel.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Paul Mackerras , Michael Ellerman , Benjamin Herrenschmidt , Ben Skeggs , David Airlie , Daniel Vetter , Bjorn Helgaas , Boris Ostrovsky , Juergen Gross , Stefano Stabellini , =?utf-8?b?SsOpcsO0bWU=?= Glisse , Dan Carpenter , dave.hansen@linux.intel.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-nvdimm@lists.01.org, david@redhat.com, joao.m.martins@oracle.com X-Mailman-Version: 3.1.1 Precedence: list List-Id: "Linux-nvdimm developer list." Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: base64 VGhlICdzdHJ1Y3QgcmVzb3VyY2UnIGluICdzdHJ1Y3QgZGV2X3BhZ2VtYXAnIGlzIG9ubHkgdXNl ZCBmb3IgaG9sZGluZw0KcmVzb3VyY2Ugc3BhbiBpbmZvcm1hdGlvbi4gIFRoZSBvdGhlciBmaWVs ZHMsICduYW1lJywgJ2ZsYWdzJywgJ2Rlc2MnLA0KJ3BhcmVudCcsICdzaWJsaW5nJywgYW5kICdj aGlsZCcgYXJlIGFsbCB1bnVzZWQgd2FzdGVkIHNwYWNlLg0KDQpUaGlzIGlzIGluIHByZXBhcmF0 aW9uIGZvciBpbnRyb2R1Y2luZyBhIG11bHRpLXJhbmdlIGV4dGVuc2lvbiBvZg0KZGV2bV9tZW1y ZW1hcF9wYWdlcygpLg0KDQpUaGUgYnVsayBvZiB0aGlzIGNoYW5nZSBpcyB1bndpbmRpbmcgYWxs IHRoZSBwbGFjZXMgaW50ZXJuYWwgdG8gbGlibnZkaW1tDQp0aGF0IHVzZWQgJ3N0cnVjdCByZXNv dXJjZScgdW5uZWNlc3NhcmlseSwgYW5kIHJlcGxhY2luZyBpbnN0YW5jZXMgb2YNCidzdHJ1Y3Qg ZGV2X3BhZ2VtYXAnLnJlcyB3aXRoICdzdHJ1Y3QgZGV2X3BhZ2VtYXAnLnJhbmdlLg0KDQpQMlBE TUEgaGFkIGEgbWlub3IgdXNhZ2Ugb2YgdGhlIHJlc291cmNlIGZsYWdzIGZpZWxkLCBidXQgb25s eSB0byByZXBvcnQNCmZhaWx1cmVzIHdpdGggIiVwUiIuICBUaGF0IGlzIHJlcGxhY2VkIHdpdGgg YW4gb3BlbiBjb2RlZCBwcmludCBvZiB0aGUNCnJhbmdlLg0KDQpMaW5rOiBodHRwczovL2xrbWwu a2VybmVsLm9yZy9yLzE1OTY0MzEwMzE3My40MDYyMzAyLjc2ODk5ODg4NTY5MTcxMTUzMi5zdGdp dEBkd2lsbGlhMi1kZXNrMy5hbXIuY29ycC5pbnRlbC5jb20NCkxpbms6IGh0dHBzOi8vbGttbC5r ZXJuZWwub3JnL3IvMjAyMDA5MjYxMjE0MDIuR0E3NDY3QGthZGFtDQpDYzogUGF1bCBNYWNrZXJy YXMgPHBhdWx1c0BvemxhYnMub3JnPg0KQ2M6IE1pY2hhZWwgRWxsZXJtYW4gPG1wZUBlbGxlcm1h bi5pZC5hdT4NCkNjOiBCZW5qYW1pbiBIZXJyZW5zY2htaWR0IDxiZW5oQGtlcm5lbC5jcmFzaGlu Zy5vcmc+DQpDYzogVmlzaGFsIFZlcm1hIDx2aXNoYWwubC52ZXJtYUBpbnRlbC5jb20+DQpDYzog Vml2ZWsgR295YWwgPHZnb3lhbEByZWRoYXQuY29tPg0KQ2M6IERhdmUgSmlhbmcgPGRhdmUuamlh bmdAaW50ZWwuY29tPg0KQ2M6IEJlbiBTa2VnZ3MgPGJza2VnZ3NAcmVkaGF0LmNvbT4NCkNjOiBE YXZpZCBBaXJsaWUgPGFpcmxpZWRAbGludXguaWU+DQpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVs QGZmd2xsLmNoPg0KQ2M6IElyYSBXZWlueSA8aXJhLndlaW55QGludGVsLmNvbT4NCkNjOiBCam9y biBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPg0KQ2M6IEJvcmlzIE9zdHJvdnNreSA8Ym9y aXMub3N0cm92c2t5QG9yYWNsZS5jb20+DQpDYzogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2Uu Y29tPg0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4NCkNj OiAiSsOpcsO0bWUgR2xpc3NlIiA8amdsaXNzZUByZWRoYXQuY29tPg0KQ2M6IEFuZHJldyBNb3J0 b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+DQpSZXBvcnRlZC1ieTogRGFuIENhcnBlbnRl ciA8ZGFuLmNhcnBlbnRlckBvcmFjbGUuY29tPg0KU2lnbmVkLW9mZi1ieTogRGFuIFdpbGxpYW1z IDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+DQotLS0NCiBhcmNoL3Bvd2VycGMva3ZtL2Jvb2sz c19odl91dm1lbS5jICAgICB8ICAgMTMgKysrLS0NCiBkcml2ZXJzL2RheC9idXMuYyAgICAgICAg ICAgICAgICAgICAgICB8ICAgMTAgKystLQ0KIGRyaXZlcnMvZGF4L2J1cy5oICAgICAgICAgICAg ICAgICAgICAgIHwgICAgMiAtDQogZHJpdmVycy9kYXgvZGV2aWNlLmMgICAgICAgICAgICAgICAg ICAgfCAgICAzIC0NCiBkcml2ZXJzL2RheC9obWVtL2htZW0uYyAgICAgICAgICAgICAgICB8ICAg IDUgKysNCiBkcml2ZXJzL2RheC9wbWVtL2NvcmUuYyAgICAgICAgICAgICAgICB8ICAgMTIgKyst LS0NCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYyB8ICAgMTQgKysrLS0t DQogZHJpdmVycy9udmRpbW0vYmFkcmFuZ2UuYyAgICAgICAgICAgICAgfCAgIDI2ICsrKysrLS0t LS0tDQogZHJpdmVycy9udmRpbW0vY2xhaW0uYyAgICAgICAgICAgICAgICAgfCAgIDEzICsrKy0t DQogZHJpdmVycy9udmRpbW0vbmQuaCAgICAgICAgICAgICAgICAgICAgfCAgICAzICsNCiBkcml2 ZXJzL252ZGltbS9wZm5fZGV2cy5jICAgICAgICAgICAgICB8ICAgMTIgKystLS0NCiBkcml2ZXJz L252ZGltbS9wbWVtLmMgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKysrLS0tLS0NCiBkcml2 ZXJzL252ZGltbS9yZWdpb24uYyAgICAgICAgICAgICAgICB8ICAgMjEgKysrKystLS0tDQogZHJp dmVycy9wY2kvcDJwZG1hLmMgICAgICAgICAgICAgICAgICAgfCAgIDExICsrLS0tDQogZHJpdmVy cy94ZW4vdW5wb3B1bGF0ZWQtYWxsb2MuYyAgICAgICAgfCAgIDQ4ICsrKysrKysrKysrKystLS0t LS0tDQogaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oICAgICAgICAgICAgICAgfCAgICA1ICstDQog aW5jbHVkZS9saW51eC9yYW5nZS5oICAgICAgICAgICAgICAgICAgfCAgICAxIA0KIGxpYi90ZXN0 X2htbS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1MCArKysrKysrKysrLS0tLS0tLS0t LS0NCiBtbS9tZW1yZW1hcC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzcgKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0NCiB0b29scy90ZXN0aW5nL252ZGltbS90ZXN0L2lv bWFwLmMgICAgICB8ICAgIDIgLQ0KIDIwIGZpbGVzIGNoYW5nZWQsIDE5MiBpbnNlcnRpb25zKCsp LCAxNjIgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2sz c19odl91dm1lbS5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYw0KaW5kZXgg NzcwNWQ1NTU3MjM5Li4yOWVjNTU1MDU1YzIgMTAwNjQ0DQotLS0gYS9hcmNoL3Bvd2VycGMva3Zt L2Jvb2szc19odl91dm1lbS5jDQorKysgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1l bS5jDQpAQCAtNjg3LDkgKzY4Nyw5IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqa3ZtcHBjX3V2bWVt X2dldF9wYWdlKHVuc2lnbmVkIGxvbmcgZ3BhLCBzdHJ1Y3Qga3ZtICprdm0pDQogCXN0cnVjdCBr dm1wcGNfdXZtZW1fcGFnZV9wdnQgKnB2dDsNCiAJdW5zaWduZWQgbG9uZyBwZm5fbGFzdCwgcGZu X2ZpcnN0Ow0KIA0KLQlwZm5fZmlyc3QgPSBrdm1wcGNfdXZtZW1fcGdtYXAucmVzLnN0YXJ0ID4+ IFBBR0VfU0hJRlQ7DQorCXBmbl9maXJzdCA9IGt2bXBwY191dm1lbV9wZ21hcC5yYW5nZS5zdGFy dCA+PiBQQUdFX1NISUZUOw0KIAlwZm5fbGFzdCA9IHBmbl9maXJzdCArDQotCQkgICAocmVzb3Vy Y2Vfc2l6ZSgma3ZtcHBjX3V2bWVtX3BnbWFwLnJlcykgPj4gUEFHRV9TSElGVCk7DQorCQkgICAo cmFuZ2VfbGVuKCZrdm1wcGNfdXZtZW1fcGdtYXAucmFuZ2UpID4+IFBBR0VfU0hJRlQpOw0KIA0K IAlzcGluX2xvY2soJmt2bXBwY191dm1lbV9iaXRtYXBfbG9jayk7DQogCWJpdCA9IGZpbmRfZmly c3RfemVyb19iaXQoa3ZtcHBjX3V2bWVtX2JpdG1hcCwNCkBAIC0xMDA3LDcgKzEwMDcsNyBAQCBz dGF0aWMgdm1fZmF1bHRfdCBrdm1wcGNfdXZtZW1fbWlncmF0ZV90b19yYW0oc3RydWN0IHZtX2Zh dWx0ICp2bWYpDQogc3RhdGljIHZvaWQga3ZtcHBjX3V2bWVtX3BhZ2VfZnJlZShzdHJ1Y3QgcGFn ZSAqcGFnZSkNCiB7DQogCXVuc2lnbmVkIGxvbmcgcGZuID0gcGFnZV90b19wZm4ocGFnZSkgLQ0K LQkJCShrdm1wcGNfdXZtZW1fcGdtYXAucmVzLnN0YXJ0ID4+IFBBR0VfU0hJRlQpOw0KKwkJCShr dm1wcGNfdXZtZW1fcGdtYXAucmFuZ2Uuc3RhcnQgPj4gUEFHRV9TSElGVCk7DQogCXN0cnVjdCBr dm1wcGNfdXZtZW1fcGFnZV9wdnQgKnB2dDsNCiANCiAJc3Bpbl9sb2NrKCZrdm1wcGNfdXZtZW1f Yml0bWFwX2xvY2spOw0KQEAgLTExNzAsNyArMTE3MCw4IEBAIGludCBrdm1wcGNfdXZtZW1faW5p dCh2b2lkKQ0KIAl9DQogDQogCWt2bXBwY191dm1lbV9wZ21hcC50eXBlID0gTUVNT1JZX0RFVklD RV9QUklWQVRFOw0KLQlrdm1wcGNfdXZtZW1fcGdtYXAucmVzID0gKnJlczsNCisJa3ZtcHBjX3V2 bWVtX3BnbWFwLnJhbmdlLnN0YXJ0ID0gcmVzLT5zdGFydDsNCisJa3ZtcHBjX3V2bWVtX3BnbWFw LnJhbmdlLmVuZCA9IHJlcy0+ZW5kOw0KIAlrdm1wcGNfdXZtZW1fcGdtYXAub3BzID0gJmt2bXBw Y191dm1lbV9vcHM7DQogCS8qIGp1c3Qgb25lIGdsb2JhbCBpbnN0YW5jZTogKi8NCiAJa3ZtcHBj X3V2bWVtX3BnbWFwLm93bmVyID0gJmt2bXBwY191dm1lbV9wZ21hcDsNCkBAIC0xMjA1LDcgKzEy MDYsNyBAQCB2b2lkIGt2bXBwY191dm1lbV9mcmVlKHZvaWQpDQogCQlyZXR1cm47DQogDQogCW1l bXVubWFwX3BhZ2VzKCZrdm1wcGNfdXZtZW1fcGdtYXApOw0KLQlyZWxlYXNlX21lbV9yZWdpb24o a3ZtcHBjX3V2bWVtX3BnbWFwLnJlcy5zdGFydCwNCi0JCQkgICByZXNvdXJjZV9zaXplKCZrdm1w cGNfdXZtZW1fcGdtYXAucmVzKSk7DQorCXJlbGVhc2VfbWVtX3JlZ2lvbihrdm1wcGNfdXZtZW1f cGdtYXAucmFuZ2Uuc3RhcnQsDQorCQkJICAgcmFuZ2VfbGVuKCZrdm1wcGNfdXZtZW1fcGdtYXAu cmFuZ2UpKTsNCiAJa2ZyZWUoa3ZtcHBjX3V2bWVtX2JpdG1hcCk7DQogfQ0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZGF4L2J1cy5jIGIvZHJpdmVycy9kYXgvYnVzLmMNCmluZGV4IDUzZDA3ZjJmMTI4 NS4uMDBmYTczYThkZmI0IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9kYXgvYnVzLmMNCisrKyBiL2Ry aXZlcnMvZGF4L2J1cy5jDQpAQCAtNTE1LDcgKzUxNSw3IEBAIHN0YXRpYyB2b2lkIGRheF9yZWdp b25fdW5yZWdpc3Rlcih2b2lkICpyZWdpb24pDQogfQ0KIA0KIHN0cnVjdCBkYXhfcmVnaW9uICph bGxvY19kYXhfcmVnaW9uKHN0cnVjdCBkZXZpY2UgKnBhcmVudCwgaW50IHJlZ2lvbl9pZCwNCi0J CXN0cnVjdCByZXNvdXJjZSAqcmVzLCBpbnQgdGFyZ2V0X25vZGUsIHVuc2lnbmVkIGludCBhbGln biwNCisJCXN0cnVjdCByYW5nZSAqcmFuZ2UsIGludCB0YXJnZXRfbm9kZSwgdW5zaWduZWQgaW50 IGFsaWduLA0KIAkJdW5zaWduZWQgbG9uZyBmbGFncykNCiB7DQogCXN0cnVjdCBkYXhfcmVnaW9u ICpkYXhfcmVnaW9uOw0KQEAgLTUzMCw4ICs1MzAsOCBAQCBzdHJ1Y3QgZGF4X3JlZ2lvbiAqYWxs b2NfZGF4X3JlZ2lvbihzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsIGludCByZWdpb25faWQsDQogCQly ZXR1cm4gTlVMTDsNCiAJfQ0KIA0KLQlpZiAoIUlTX0FMSUdORUQocmVzLT5zdGFydCwgYWxpZ24p DQotCQkJfHwgIUlTX0FMSUdORUQocmVzb3VyY2Vfc2l6ZShyZXMpLCBhbGlnbikpDQorCWlmICgh SVNfQUxJR05FRChyYW5nZS0+c3RhcnQsIGFsaWduKQ0KKwkJCXx8ICFJU19BTElHTkVEKHJhbmdl X2xlbihyYW5nZSksIGFsaWduKSkNCiAJCXJldHVybiBOVUxMOw0KIA0KIAlkYXhfcmVnaW9uID0g a3phbGxvYyhzaXplb2YoKmRheF9yZWdpb24pLCBHRlBfS0VSTkVMKTsNCkBAIC01NDYsOCArNTQ2 LDggQEAgc3RydWN0IGRheF9yZWdpb24gKmFsbG9jX2RheF9yZWdpb24oc3RydWN0IGRldmljZSAq cGFyZW50LCBpbnQgcmVnaW9uX2lkLA0KIAlkYXhfcmVnaW9uLT50YXJnZXRfbm9kZSA9IHRhcmdl dF9ub2RlOw0KIAlpZGFfaW5pdCgmZGF4X3JlZ2lvbi0+aWRhKTsNCiAJZGF4X3JlZ2lvbi0+cmVz ID0gKHN0cnVjdCByZXNvdXJjZSkgew0KLQkJLnN0YXJ0ID0gcmVzLT5zdGFydCwNCi0JCS5lbmQg PSByZXMtPmVuZCwNCisJCS5zdGFydCA9IHJhbmdlLT5zdGFydCwNCisJCS5lbmQgPSByYW5nZS0+ ZW5kLA0KIAkJLmZsYWdzID0gSU9SRVNPVVJDRV9NRU0gfCBmbGFncywNCiAJfTsNCiANCmRpZmYg LS1naXQgYS9kcml2ZXJzL2RheC9idXMuaCBiL2RyaXZlcnMvZGF4L2J1cy5oDQppbmRleCBkYTI3 ZWE3MGExOWEuLjcyYjkyZjk1NTA5ZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZGF4L2J1cy5oDQor KysgYi9kcml2ZXJzL2RheC9idXMuaA0KQEAgLTEzLDcgKzEzLDcgQEAgdm9pZCBkYXhfcmVnaW9u X3B1dChzdHJ1Y3QgZGF4X3JlZ2lvbiAqZGF4X3JlZ2lvbik7DQogDQogI2RlZmluZSBJT1JFU09V UkNFX0RBWF9TVEFUSUMgKDFVTCA8PCAwKQ0KIHN0cnVjdCBkYXhfcmVnaW9uICphbGxvY19kYXhf cmVnaW9uKHN0cnVjdCBkZXZpY2UgKnBhcmVudCwgaW50IHJlZ2lvbl9pZCwNCi0JCXN0cnVjdCBy ZXNvdXJjZSAqcmVzLCBpbnQgdGFyZ2V0X25vZGUsIHVuc2lnbmVkIGludCBhbGlnbiwNCisJCXN0 cnVjdCByYW5nZSAqcmFuZ2UsIGludCB0YXJnZXRfbm9kZSwgdW5zaWduZWQgaW50IGFsaWduLA0K IAkJdW5zaWduZWQgbG9uZyBmbGFncyk7DQogDQogZW51bSBkZXZfZGF4X3N1YnN5cyB7DQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9kYXgvZGV2aWNlLmMgYi9kcml2ZXJzL2RheC9kZXZpY2UuYw0KaW5k ZXggOTgzM2ZhODNiNTM3Li5hMTQ0NDhiY2E4M2QgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2RheC9k ZXZpY2UuYw0KKysrIGIvZHJpdmVycy9kYXgvZGV2aWNlLmMNCkBAIC00MTYsOCArNDE2LDcgQEAg aW50IGRldl9kYXhfcHJvYmUoc3RydWN0IGRldl9kYXggKmRldl9kYXgpDQogCQlwZ21hcCA9IGRl dm1fa3phbGxvYyhkZXYsIHNpemVvZigqcGdtYXApLCBHRlBfS0VSTkVMKTsNCiAJCWlmICghcGdt YXApDQogCQkJcmV0dXJuIC1FTk9NRU07DQotCQlwZ21hcC0+cmVzLnN0YXJ0ID0gcmFuZ2UtPnN0 YXJ0Ow0KLQkJcGdtYXAtPnJlcy5lbmQgPSByYW5nZS0+ZW5kOw0KKwkJcGdtYXAtPnJhbmdlID0g KnJhbmdlOw0KIAl9DQogCXBnbWFwLT50eXBlID0gTUVNT1JZX0RFVklDRV9HRU5FUklDOw0KIAlh ZGRyID0gZGV2bV9tZW1yZW1hcF9wYWdlcyhkZXYsIHBnbWFwKTsNCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2RheC9obWVtL2htZW0uYyBiL2RyaXZlcnMvZGF4L2htZW0vaG1lbS5jDQppbmRleCBhYTI2 MDAwOWRmYzcuLjFhMzM0N2JiNjE0MyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZGF4L2htZW0vaG1l bS5jDQorKysgYi9kcml2ZXJzL2RheC9obWVtL2htZW0uYw0KQEAgLTEzLDEzICsxMywxNiBAQCBz dGF0aWMgaW50IGRheF9obWVtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQog CXN0cnVjdCBkZXZfZGF4X2RhdGEgZGF0YTsNCiAJc3RydWN0IGRldl9kYXggKmRldl9kYXg7DQog CXN0cnVjdCByZXNvdXJjZSAqcmVzOw0KKwlzdHJ1Y3QgcmFuZ2UgcmFuZ2U7DQogDQogCXJlcyA9 IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQogCWlmICgh cmVzKQ0KIAkJcmV0dXJuIC1FTk9NRU07DQogDQogCW1yaSA9IGRldi0+cGxhdGZvcm1fZGF0YTsN Ci0JZGF4X3JlZ2lvbiA9IGFsbG9jX2RheF9yZWdpb24oZGV2LCBwZGV2LT5pZCwgcmVzLCBtcmkt PnRhcmdldF9ub2RlLA0KKwlyYW5nZS5zdGFydCA9IHJlcy0+c3RhcnQ7DQorCXJhbmdlLmVuZCA9 IHJlcy0+ZW5kOw0KKwlkYXhfcmVnaW9uID0gYWxsb2NfZGF4X3JlZ2lvbihkZXYsIHBkZXYtPmlk LCAmcmFuZ2UsIG1yaS0+dGFyZ2V0X25vZGUsDQogCQkJUE1EX1NJWkUsIDApOw0KIAlpZiAoIWRh eF9yZWdpb24pDQogCQlyZXR1cm4gLUVOT01FTTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RheC9w bWVtL2NvcmUuYyBiL2RyaXZlcnMvZGF4L3BtZW0vY29yZS5jDQppbmRleCA0ZmU3MDA4ODQzMzgu LjYyYjI2YmZjZWFiMSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZGF4L3BtZW0vY29yZS5jDQorKysg Yi9kcml2ZXJzL2RheC9wbWVtL2NvcmUuYw0KQEAgLTksNyArOSw3IEBADQogDQogc3RydWN0IGRl dl9kYXggKl9fZGF4X3BtZW1fcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBlbnVtIGRldl9kYXhf c3Vic3lzIHN1YnN5cykNCiB7DQotCXN0cnVjdCByZXNvdXJjZSByZXM7DQorCXN0cnVjdCByYW5n ZSByYW5nZTsNCiAJaW50IHJjLCBpZCwgcmVnaW9uX2lkOw0KIAlyZXNvdXJjZV9zaXplX3Qgb2Zm c2V0Ow0KIAlzdHJ1Y3QgbmRfcGZuX3NiICpwZm5fc2I7DQpAQCAtNTAsMTAgKzUwLDEwIEBAIHN0 cnVjdCBkZXZfZGF4ICpfX2RheF9wbWVtX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgZW51bSBk ZXZfZGF4X3N1YnN5cyBzdWJzeXMpDQogCWlmIChyYyAhPSAyKQ0KIAkJcmV0dXJuIEVSUl9QVFIo LUVJTlZBTCk7DQogDQotCS8qIGFkanVzdCB0aGUgZGF4X3JlZ2lvbiByZXNvdXJjZSB0byB0aGUg c3RhcnQgb2YgZGF0YSAqLw0KLQltZW1jcHkoJnJlcywgJnBnbWFwLnJlcywgc2l6ZW9mKHJlcykp Ow0KLQlyZXMuc3RhcnQgKz0gb2Zmc2V0Ow0KLQlkYXhfcmVnaW9uID0gYWxsb2NfZGF4X3JlZ2lv bihkZXYsIHJlZ2lvbl9pZCwgJnJlcywNCisJLyogYWRqdXN0IHRoZSBkYXhfcmVnaW9uIHJhbmdl IHRvIHRoZSBzdGFydCBvZiBkYXRhICovDQorCXJhbmdlID0gcGdtYXAucmFuZ2U7DQorCXJhbmdl LnN0YXJ0ICs9IG9mZnNldCwNCisJZGF4X3JlZ2lvbiA9IGFsbG9jX2RheF9yZWdpb24oZGV2LCBy ZWdpb25faWQsICZyYW5nZSwNCiAJCQluZF9yZWdpb24tPnRhcmdldF9ub2RlLCBsZTMyX3RvX2Nw dShwZm5fc2ItPmFsaWduKSwNCiAJCQlJT1JFU09VUkNFX0RBWF9TVEFUSUMpOw0KIAlpZiAoIWRh eF9yZWdpb24pDQpAQCAtNjQsNyArNjQsNyBAQCBzdHJ1Y3QgZGV2X2RheCAqX19kYXhfcG1lbV9w cm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGVudW0gZGV2X2RheF9zdWJzeXMgc3Vic3lzKQ0KIAkJ LmlkID0gaWQsDQogCQkucGdtYXAgPSAmcGdtYXAsDQogCQkuc3Vic3lzID0gc3Vic3lzLA0KLQkJ LnNpemUgPSByZXNvdXJjZV9zaXplKCZyZXMpLA0KKwkJLnNpemUgPSByYW5nZV9sZW4oJnJhbmdl KSwNCiAJfTsNCiAJZGV2X2RheCA9IGRldm1fY3JlYXRlX2Rldl9kYXgoJmRhdGEpOw0KIA0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jIGIvZHJpdmVy cy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMNCmluZGV4IDRlODExMmZkZTNlNi4uMjU4 MTFlZDdlMjc0IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9k bWVtLmMNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jDQpAQCAt MTAxLDcgKzEwMSw3IEBAIHVuc2lnbmVkIGxvbmcgbm91dmVhdV9kbWVtX3BhZ2VfYWRkcihzdHJ1 Y3QgcGFnZSAqcGFnZSkNCiB7DQogCXN0cnVjdCBub3V2ZWF1X2RtZW1fY2h1bmsgKmNodW5rID0g bm91dmVhdV9wYWdlX3RvX2NodW5rKHBhZ2UpOw0KIAl1bnNpZ25lZCBsb25nIG9mZiA9IChwYWdl X3RvX3BmbihwYWdlKSA8PCBQQUdFX1NISUZUKSAtDQotCQkJCWNodW5rLT5wYWdlbWFwLnJlcy5z dGFydDsNCisJCQkJY2h1bmstPnBhZ2VtYXAucmFuZ2Uuc3RhcnQ7DQogDQogCXJldHVybiBjaHVu ay0+Ym8tPm9mZnNldCArIG9mZjsNCiB9DQpAQCAtMjQ5LDcgKzI0OSw4IEBAIG5vdXZlYXVfZG1l bV9jaHVua19hbGxvYyhzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSwgc3RydWN0IHBhZ2UgKipwcGFn ZSkNCiANCiAJY2h1bmstPmRybSA9IGRybTsNCiAJY2h1bmstPnBhZ2VtYXAudHlwZSA9IE1FTU9S WV9ERVZJQ0VfUFJJVkFURTsNCi0JY2h1bmstPnBhZ2VtYXAucmVzID0gKnJlczsNCisJY2h1bmst PnBhZ2VtYXAucmFuZ2Uuc3RhcnQgPSByZXMtPnN0YXJ0Ow0KKwljaHVuay0+cGFnZW1hcC5yYW5n ZS5lbmQgPSByZXMtPmVuZDsNCiAJY2h1bmstPnBhZ2VtYXAub3BzID0gJm5vdXZlYXVfZG1lbV9w YWdlbWFwX29wczsNCiAJY2h1bmstPnBhZ2VtYXAub3duZXIgPSBkcm0tPmRldjsNCiANCkBAIC0y NzMsNyArMjc0LDcgQEAgbm91dmVhdV9kbWVtX2NodW5rX2FsbG9jKHN0cnVjdCBub3V2ZWF1X2Ry bSAqZHJtLCBzdHJ1Y3QgcGFnZSAqKnBwYWdlKQ0KIAlsaXN0X2FkZCgmY2h1bmstPmxpc3QsICZk cm0tPmRtZW0tPmNodW5rcyk7DQogCW11dGV4X3VubG9jaygmZHJtLT5kbWVtLT5tdXRleCk7DQog DQotCXBmbl9maXJzdCA9IGNodW5rLT5wYWdlbWFwLnJlcy5zdGFydCA+PiBQQUdFX1NISUZUOw0K KwlwZm5fZmlyc3QgPSBjaHVuay0+cGFnZW1hcC5yYW5nZS5zdGFydCA+PiBQQUdFX1NISUZUOw0K IAlwYWdlID0gcGZuX3RvX3BhZ2UocGZuX2ZpcnN0KTsNCiAJc3Bpbl9sb2NrKCZkcm0tPmRtZW0t PmxvY2spOw0KIAlmb3IgKGkgPSAwOyBpIDwgRE1FTV9DSFVOS19OUEFHRVMgLSAxOyArK2ksICsr cGFnZSkgew0KQEAgLTI5NCw4ICsyOTUsNyBAQCBub3V2ZWF1X2RtZW1fY2h1bmtfYWxsb2Moc3Ry dWN0IG5vdXZlYXVfZHJtICpkcm0sIHN0cnVjdCBwYWdlICoqcHBhZ2UpDQogb3V0X2JvX2ZyZWU6 DQogCW5vdXZlYXVfYm9fcmVmKE5VTEwsICZjaHVuay0+Ym8pOw0KIG91dF9yZWxlYXNlOg0KLQly ZWxlYXNlX21lbV9yZWdpb24oY2h1bmstPnBhZ2VtYXAucmVzLnN0YXJ0LA0KLQkJCSAgIHJlc291 cmNlX3NpemUoJmNodW5rLT5wYWdlbWFwLnJlcykpOw0KKwlyZWxlYXNlX21lbV9yZWdpb24oY2h1 bmstPnBhZ2VtYXAucmFuZ2Uuc3RhcnQsIHJhbmdlX2xlbigmY2h1bmstPnBhZ2VtYXAucmFuZ2Up KTsNCiBvdXRfZnJlZToNCiAJa2ZyZWUoY2h1bmspOw0KIG91dDoNCkBAIC0zODIsOCArMzgyLDgg QEAgbm91dmVhdV9kbWVtX2Zpbmkoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pDQogCQlub3V2ZWF1 X2JvX3JlZihOVUxMLCAmY2h1bmstPmJvKTsNCiAJCWxpc3RfZGVsKCZjaHVuay0+bGlzdCk7DQog CQltZW11bm1hcF9wYWdlcygmY2h1bmstPnBhZ2VtYXApOw0KLQkJcmVsZWFzZV9tZW1fcmVnaW9u KGNodW5rLT5wYWdlbWFwLnJlcy5zdGFydCwNCi0JCQkJICAgcmVzb3VyY2Vfc2l6ZSgmY2h1bmst PnBhZ2VtYXAucmVzKSk7DQorCQlyZWxlYXNlX21lbV9yZWdpb24oY2h1bmstPnBhZ2VtYXAucmFu Z2Uuc3RhcnQsDQorCQkJCSAgIHJhbmdlX2xlbigmY2h1bmstPnBhZ2VtYXAucmFuZ2UpKTsNCiAJ CWtmcmVlKGNodW5rKTsNCiAJfQ0KIA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZkaW1tL2JhZHJh bmdlLmMgYi9kcml2ZXJzL252ZGltbS9iYWRyYW5nZS5jDQppbmRleCBiOWVlZWZhMjdlM2EuLmFh ZjZlMjE1YThjNiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbnZkaW1tL2JhZHJhbmdlLmMNCisrKyBi L2RyaXZlcnMvbnZkaW1tL2JhZHJhbmdlLmMNCkBAIC0yMTEsNyArMjExLDcgQEAgc3RhdGljIHZv aWQgX19hZGRfYmFkYmxvY2tfcmFuZ2Uoc3RydWN0IGJhZGJsb2NrcyAqYmIsIHU2NCBuc19vZmZz ZXQsIHU2NCBsZW4pDQogfQ0KIA0KIHN0YXRpYyB2b2lkIGJhZGJsb2Nrc19wb3B1bGF0ZShzdHJ1 Y3QgYmFkcmFuZ2UgKmJhZHJhbmdlLA0KLQkJc3RydWN0IGJhZGJsb2NrcyAqYmIsIGNvbnN0IHN0 cnVjdCByZXNvdXJjZSAqcmVzKQ0KKwkJc3RydWN0IGJhZGJsb2NrcyAqYmIsIGNvbnN0IHN0cnVj dCByYW5nZSAqcmFuZ2UpDQogew0KIAlzdHJ1Y3QgYmFkcmFuZ2VfZW50cnkgKmJyZTsNCiANCkBA IC0yMjIsMzQgKzIyMiwzNCBAQCBzdGF0aWMgdm9pZCBiYWRibG9ja3NfcG9wdWxhdGUoc3RydWN0 IGJhZHJhbmdlICpiYWRyYW5nZSwNCiAJCXU2NCBicmVfZW5kID0gYnJlLT5zdGFydCArIGJyZS0+ bGVuZ3RoIC0gMTsNCiANCiAJCS8qIERpc2NhcmQgaW50ZXJ2YWxzIHdpdGggbm8gaW50ZXJzZWN0 aW9uICovDQotCQlpZiAoYnJlX2VuZCA8IHJlcy0+c3RhcnQpDQorCQlpZiAoYnJlX2VuZCA8IHJh bmdlLT5zdGFydCkNCiAJCQljb250aW51ZTsNCi0JCWlmIChicmUtPnN0YXJ0ID4gIHJlcy0+ZW5k KQ0KKwkJaWYgKGJyZS0+c3RhcnQgPiByYW5nZS0+ZW5kKQ0KIAkJCWNvbnRpbnVlOw0KIAkJLyog RGVhbCB3aXRoIGFueSBvdmVybGFwIGFmdGVyIHN0YXJ0IG9mIHRoZSBuYW1lc3BhY2UgKi8NCi0J CWlmIChicmUtPnN0YXJ0ID49IHJlcy0+c3RhcnQpIHsNCisJCWlmIChicmUtPnN0YXJ0ID49IHJh bmdlLT5zdGFydCkgew0KIAkJCXU2NCBzdGFydCA9IGJyZS0+c3RhcnQ7DQogCQkJdTY0IGxlbjsN CiANCi0JCQlpZiAoYnJlX2VuZCA8PSByZXMtPmVuZCkNCisJCQlpZiAoYnJlX2VuZCA8PSByYW5n ZS0+ZW5kKQ0KIAkJCQlsZW4gPSBicmUtPmxlbmd0aDsNCiAJCQllbHNlDQotCQkJCWxlbiA9IHJl cy0+c3RhcnQgKyByZXNvdXJjZV9zaXplKHJlcykNCisJCQkJbGVuID0gcmFuZ2UtPnN0YXJ0ICsg cmFuZ2VfbGVuKHJhbmdlKQ0KIAkJCQkJLSBicmUtPnN0YXJ0Ow0KLQkJCV9fYWRkX2JhZGJsb2Nr X3JhbmdlKGJiLCBzdGFydCAtIHJlcy0+c3RhcnQsIGxlbik7DQorCQkJX19hZGRfYmFkYmxvY2tf cmFuZ2UoYmIsIHN0YXJ0IC0gcmFuZ2UtPnN0YXJ0LCBsZW4pOw0KIAkJCWNvbnRpbnVlOw0KIAkJ fQ0KIAkJLyoNCiAJCSAqIERlYWwgd2l0aCBvdmVybGFwIGZvciBiYWRyYW5nZSBzdGFydGluZyBi ZWZvcmUNCiAJCSAqIHRoZSBuYW1lc3BhY2UuDQogCQkgKi8NCi0JCWlmIChicmUtPnN0YXJ0IDwg cmVzLT5zdGFydCkgew0KKwkJaWYgKGJyZS0+c3RhcnQgPCByYW5nZS0+c3RhcnQpIHsNCiAJCQl1 NjQgbGVuOw0KIA0KLQkJCWlmIChicmVfZW5kIDwgcmVzLT5lbmQpDQotCQkJCWxlbiA9IGJyZS0+ c3RhcnQgKyBicmUtPmxlbmd0aCAtIHJlcy0+c3RhcnQ7DQorCQkJaWYgKGJyZV9lbmQgPCByYW5n ZS0+ZW5kKQ0KKwkJCQlsZW4gPSBicmUtPnN0YXJ0ICsgYnJlLT5sZW5ndGggLSByYW5nZS0+c3Rh cnQ7DQogCQkJZWxzZQ0KLQkJCQlsZW4gPSByZXNvdXJjZV9zaXplKHJlcyk7DQorCQkJCWxlbiA9 IHJhbmdlX2xlbihyYW5nZSk7DQogCQkJX19hZGRfYmFkYmxvY2tfcmFuZ2UoYmIsIDAsIGxlbik7 DQogCQl9DQogCX0NCkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIHZvaWQgYmFkYmxvY2tzX3Bv cHVsYXRlKHN0cnVjdCBiYWRyYW5nZSAqYmFkcmFuZ2UsDQogICogYW5kIGFkZCBiYWRibG9ja3Mg ZW50cmllcyBmb3IgYWxsIG1hdGNoaW5nIHN1Yi1yYW5nZXMNCiAgKi8NCiB2b2lkIG52ZGltbV9i YWRibG9ja3NfcG9wdWxhdGUoc3RydWN0IG5kX3JlZ2lvbiAqbmRfcmVnaW9uLA0KLQkJc3RydWN0 IGJhZGJsb2NrcyAqYmIsIGNvbnN0IHN0cnVjdCByZXNvdXJjZSAqcmVzKQ0KKwkJc3RydWN0IGJh ZGJsb2NrcyAqYmIsIGNvbnN0IHN0cnVjdCByYW5nZSAqcmFuZ2UpDQogew0KIAlzdHJ1Y3QgbnZk aW1tX2J1cyAqbnZkaW1tX2J1czsNCiANCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBudmRpbW1f YmFkYmxvY2tzX3BvcHVsYXRlKHN0cnVjdCBuZF9yZWdpb24gKm5kX3JlZ2lvbiwNCiAJbnZkaW1t X2J1cyA9IHdhbGtfdG9fbnZkaW1tX2J1cygmbmRfcmVnaW9uLT5kZXYpOw0KIA0KIAludmRpbW1f YnVzX2xvY2soJm52ZGltbV9idXMtPmRldik7DQotCWJhZGJsb2Nrc19wb3B1bGF0ZSgmbnZkaW1t X2J1cy0+YmFkcmFuZ2UsIGJiLCByZXMpOw0KKwliYWRibG9ja3NfcG9wdWxhdGUoJm52ZGltbV9i dXMtPmJhZHJhbmdlLCBiYiwgcmFuZ2UpOw0KIAludmRpbW1fYnVzX3VubG9jaygmbnZkaW1tX2J1 cy0+ZGV2KTsNCiB9DQogRVhQT1JUX1NZTUJPTF9HUEwobnZkaW1tX2JhZGJsb2Nrc19wb3B1bGF0 ZSk7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udmRpbW0vY2xhaW0uYyBiL2RyaXZlcnMvbnZkaW1t L2NsYWltLmMNCmluZGV4IDQ1OTY0YWNiYTk0NC4uMjkwMjY3ZTFmZjlmIDEwMDY0NA0KLS0tIGEv ZHJpdmVycy9udmRpbW0vY2xhaW0uYw0KKysrIGIvZHJpdmVycy9udmRpbW0vY2xhaW0uYw0KQEAg LTMwMywxMyArMzAzLDE2IEBAIHN0YXRpYyBpbnQgbnNpb19yd19ieXRlcyhzdHJ1Y3QgbmRfbmFt ZXNwYWNlX2NvbW1vbiAqbmRucywNCiBpbnQgZGV2bV9uc2lvX2VuYWJsZShzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCBuZF9uYW1lc3BhY2VfaW8gKm5zaW8sDQogCQlyZXNvdXJjZV9zaXplX3Qg c2l6ZSkNCiB7DQotCXN0cnVjdCByZXNvdXJjZSAqcmVzID0gJm5zaW8tPnJlczsNCiAJc3RydWN0 IG5kX25hbWVzcGFjZV9jb21tb24gKm5kbnMgPSAmbnNpby0+Y29tbW9uOw0KKwlzdHJ1Y3QgcmFu Z2UgcmFuZ2UgPSB7DQorCQkuc3RhcnQgPSBuc2lvLT5yZXMuc3RhcnQsDQorCQkuZW5kID0gbnNp by0+cmVzLmVuZCwNCisJfTsNCiANCiAJbnNpby0+c2l6ZSA9IHNpemU7DQotCWlmICghZGV2bV9y ZXF1ZXN0X21lbV9yZWdpb24oZGV2LCByZXMtPnN0YXJ0LCBzaXplLA0KKwlpZiAoIWRldm1fcmVx dWVzdF9tZW1fcmVnaW9uKGRldiwgcmFuZ2Uuc3RhcnQsIHNpemUsDQogCQkJCWRldl9uYW1lKCZu ZG5zLT5kZXYpKSkgew0KLQkJZGV2X3dhcm4oZGV2LCAiY291bGQgbm90IHJlc2VydmUgcmVnaW9u ICVwUlxuIiwgcmVzKTsNCisJCWRldl93YXJuKGRldiwgImNvdWxkIG5vdCByZXNlcnZlIHJlZ2lv biAlcFJcbiIsICZuc2lvLT5yZXMpOw0KIAkJcmV0dXJuIC1FQlVTWTsNCiAJfQ0KIA0KQEAgLTMx Nyw5ICszMjAsOSBAQCBpbnQgZGV2bV9uc2lvX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBuZF9uYW1lc3BhY2VfaW8gKm5zaW8sDQogCWlmIChkZXZtX2luaXRfYmFkYmxvY2tzKGRl diwgJm5zaW8tPmJiKSkNCiAJCXJldHVybiAtRU5PTUVNOw0KIAludmRpbW1fYmFkYmxvY2tzX3Bv cHVsYXRlKHRvX25kX3JlZ2lvbihuZG5zLT5kZXYucGFyZW50KSwgJm5zaW8tPmJiLA0KLQkJCSZu c2lvLT5yZXMpOw0KKwkJCSZyYW5nZSk7DQogDQotCW5zaW8tPmFkZHIgPSBkZXZtX21lbXJlbWFw KGRldiwgcmVzLT5zdGFydCwgc2l6ZSwgQVJDSF9NRU1SRU1BUF9QTUVNKTsNCisJbnNpby0+YWRk ciA9IGRldm1fbWVtcmVtYXAoZGV2LCByYW5nZS5zdGFydCwgc2l6ZSwgQVJDSF9NRU1SRU1BUF9Q TUVNKTsNCiANCiAJcmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhuc2lvLT5hZGRyKTsNCiB9DQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9udmRpbW0vbmQuaCBiL2RyaXZlcnMvbnZkaW1tL25kLmgNCmluZGV4 IDg1YzFhZTgxM2VhMy4uYmFjOTBhZmE0NjA0IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9udmRpbW0v bmQuaA0KKysrIGIvZHJpdmVycy9udmRpbW0vbmQuaA0KQEAgLTM3Nyw4ICszNzcsOSBAQCBpbnQg bnZkaW1tX25hbWVzcGFjZV9kZXRhY2hfYnR0KHN0cnVjdCBuZF9idHQgKm5kX2J0dCk7DQogY29u c3QgY2hhciAqbnZkaW1tX25hbWVzcGFjZV9kaXNrX25hbWUoc3RydWN0IG5kX25hbWVzcGFjZV9j b21tb24gKm5kbnMsDQogCQljaGFyICpuYW1lKTsNCiB1bnNpZ25lZCBpbnQgcG1lbV9zZWN0b3Jf c2l6ZShzdHJ1Y3QgbmRfbmFtZXNwYWNlX2NvbW1vbiAqbmRucyk7DQorc3RydWN0IHJhbmdlOw0K IHZvaWQgbnZkaW1tX2JhZGJsb2Nrc19wb3B1bGF0ZShzdHJ1Y3QgbmRfcmVnaW9uICpuZF9yZWdp b24sDQotCQlzdHJ1Y3QgYmFkYmxvY2tzICpiYiwgY29uc3Qgc3RydWN0IHJlc291cmNlICpyZXMp Ow0KKwkJc3RydWN0IGJhZGJsb2NrcyAqYmIsIGNvbnN0IHN0cnVjdCByYW5nZSAqcmFuZ2UpOw0K IGludCBkZXZtX25hbWVzcGFjZV9lbmFibGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbmRf bmFtZXNwYWNlX2NvbW1vbiAqbmRucywNCiAJCXJlc291cmNlX3NpemVfdCBzaXplKTsNCiB2b2lk IGRldm1fbmFtZXNwYWNlX2Rpc2FibGUoc3RydWN0IGRldmljZSAqZGV2LA0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvbnZkaW1tL3Bmbl9kZXZzLmMgYi9kcml2ZXJzL252ZGltbS9wZm5fZGV2cy5jDQpp bmRleCAzZTExZWY4ZDNmNWIuLjNjNDc4N2I5MmE2YSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbnZk aW1tL3Bmbl9kZXZzLmMNCisrKyBiL2RyaXZlcnMvbnZkaW1tL3Bmbl9kZXZzLmMNCkBAIC02NzIs NyArNjcyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaW5pdF9hbHRtYXBfcmVzZXJ2ZShyZXNv dXJjZV9zaXplX3QgYmFzZSkNCiANCiBzdGF0aWMgaW50IF9fbnZkaW1tX3NldHVwX3BmbihzdHJ1 Y3QgbmRfcGZuICpuZF9wZm4sIHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXApDQogew0KLQlzdHJ1 Y3QgcmVzb3VyY2UgKnJlcyA9ICZwZ21hcC0+cmVzOw0KKwlzdHJ1Y3QgcmFuZ2UgKnJhbmdlID0g JnBnbWFwLT5yYW5nZTsNCiAJc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAgPSAmcGdtYXAtPmFs dG1hcDsNCiAJc3RydWN0IG5kX3Bmbl9zYiAqcGZuX3NiID0gbmRfcGZuLT5wZm5fc2I7DQogCXU2 NCBvZmZzZXQgPSBsZTY0X3RvX2NwdShwZm5fc2ItPmRhdGFvZmYpOw0KQEAgLTY4OSwxNiArNjg5 LDE2IEBAIHN0YXRpYyBpbnQgX19udmRpbW1fc2V0dXBfcGZuKHN0cnVjdCBuZF9wZm4gKm5kX3Bm biwgc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcCkNCiAJCS5lbmRfcGZuID0gUEhZU19QRk4oZW5k KSwNCiAJfTsNCiANCi0JbWVtY3B5KHJlcywgJm5zaW8tPnJlcywgc2l6ZW9mKCpyZXMpKTsNCi0J cmVzLT5zdGFydCArPSBzdGFydF9wYWQ7DQotCXJlcy0+ZW5kIC09IGVuZF90cnVuYzsNCi0NCisJ KnJhbmdlID0gKHN0cnVjdCByYW5nZSkgew0KKwkJLnN0YXJ0ID0gbnNpby0+cmVzLnN0YXJ0ICsg c3RhcnRfcGFkLA0KKwkJLmVuZCA9IG5zaW8tPnJlcy5lbmQgLSBlbmRfdHJ1bmMsDQorCX07DQog CWlmIChuZF9wZm4tPm1vZGUgPT0gUEZOX01PREVfUkFNKSB7DQogCQlpZiAob2Zmc2V0IDwgcmVz ZXJ2ZSkNCiAJCQlyZXR1cm4gLUVJTlZBTDsNCiAJCW5kX3Bmbi0+bnBmbnMgPSBsZTY0X3RvX2Nw dShwZm5fc2ItPm5wZm5zKTsNCiAJfSBlbHNlIGlmIChuZF9wZm4tPm1vZGUgPT0gUEZOX01PREVf UE1FTSkgew0KLQkJbmRfcGZuLT5ucGZucyA9IFBIWVNfUEZOKChyZXNvdXJjZV9zaXplKHJlcykg LSBvZmZzZXQpKTsNCisJCW5kX3Bmbi0+bnBmbnMgPSBQSFlTX1BGTigocmFuZ2VfbGVuKHJhbmdl KSAtIG9mZnNldCkpOw0KIAkJaWYgKGxlNjRfdG9fY3B1KG5kX3Bmbi0+cGZuX3NiLT5ucGZucykg PiBuZF9wZm4tPm5wZm5zKQ0KIAkJCWRldl9pbmZvKCZuZF9wZm4tPmRldiwNCiAJCQkJCSJudW1i ZXIgb2YgcGZucyB0cnVuY2F0ZWQgZnJvbSAlbGxkIHRvICVsZFxuIiwNCmRpZmYgLS1naXQgYS9k cml2ZXJzL252ZGltbS9wbWVtLmMgYi9kcml2ZXJzL252ZGltbS9wbWVtLmMNCmluZGV4IGZhYjI5 YjUxNDM3Mi4uNjljYzBlNzgzNzA5IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9udmRpbW0vcG1lbS5j DQorKysgYi9kcml2ZXJzL252ZGltbS9wbWVtLmMNCkBAIC0zNzYsNyArMzc2LDcgQEAgc3RhdGlj IGludCBwbWVtX2F0dGFjaF9kaXNrKHN0cnVjdCBkZXZpY2UgKmRldiwNCiAJc3RydWN0IG5kX3Jl Z2lvbiAqbmRfcmVnaW9uID0gdG9fbmRfcmVnaW9uKGRldi0+cGFyZW50KTsNCiAJaW50IG5pZCA9 IGRldl90b19ub2RlKGRldiksIGZ1YTsNCiAJc3RydWN0IHJlc291cmNlICpyZXMgPSAmbnNpby0+ cmVzOw0KLQlzdHJ1Y3QgcmVzb3VyY2UgYmJfcmVzOw0KKwlzdHJ1Y3QgcmFuZ2UgYmJfcmFuZ2U7 DQogCXN0cnVjdCBuZF9wZm4gKm5kX3BmbiA9IE5VTEw7DQogCXN0cnVjdCBkYXhfZGV2aWNlICpk YXhfZGV2Ow0KIAlzdHJ1Y3QgbmRfcGZuX3NiICpwZm5fc2I7DQpAQCAtNDM1LDI0ICs0MzUsMjYg QEAgc3RhdGljIGludCBwbWVtX2F0dGFjaF9kaXNrKHN0cnVjdCBkZXZpY2UgKmRldiwNCiAJCXBm bl9zYiA9IG5kX3Bmbi0+cGZuX3NiOw0KIAkJcG1lbS0+ZGF0YV9vZmZzZXQgPSBsZTY0X3RvX2Nw dShwZm5fc2ItPmRhdGFvZmYpOw0KIAkJcG1lbS0+cGZuX3BhZCA9IHJlc291cmNlX3NpemUocmVz KSAtDQotCQkJcmVzb3VyY2Vfc2l6ZSgmcG1lbS0+cGdtYXAucmVzKTsNCisJCQlyYW5nZV9sZW4o JnBtZW0tPnBnbWFwLnJhbmdlKTsNCiAJCXBtZW0tPnBmbl9mbGFncyB8PSBQRk5fTUFQOw0KLQkJ bWVtY3B5KCZiYl9yZXMsICZwbWVtLT5wZ21hcC5yZXMsIHNpemVvZihiYl9yZXMpKTsNCi0JCWJi X3Jlcy5zdGFydCArPSBwbWVtLT5kYXRhX29mZnNldDsNCisJCWJiX3JhbmdlID0gcG1lbS0+cGdt YXAucmFuZ2U7DQorCQliYl9yYW5nZS5zdGFydCArPSBwbWVtLT5kYXRhX29mZnNldDsNCiAJfSBl bHNlIGlmIChwbWVtX3Nob3VsZF9tYXBfcGFnZXMoZGV2KSkgew0KLQkJbWVtY3B5KCZwbWVtLT5w Z21hcC5yZXMsICZuc2lvLT5yZXMsIHNpemVvZihwbWVtLT5wZ21hcC5yZXMpKTsNCisJCXBtZW0t PnBnbWFwLnJhbmdlLnN0YXJ0ID0gcmVzLT5zdGFydDsNCisJCXBtZW0tPnBnbWFwLnJhbmdlLmVu ZCA9IHJlcy0+ZW5kOw0KIAkJcG1lbS0+cGdtYXAudHlwZSA9IE1FTU9SWV9ERVZJQ0VfRlNfREFY Ow0KIAkJcG1lbS0+cGdtYXAub3BzID0gJmZzZGF4X3BhZ2VtYXBfb3BzOw0KIAkJYWRkciA9IGRl dm1fbWVtcmVtYXBfcGFnZXMoZGV2LCAmcG1lbS0+cGdtYXApOw0KIAkJcG1lbS0+cGZuX2ZsYWdz IHw9IFBGTl9NQVA7DQotCQltZW1jcHkoJmJiX3JlcywgJnBtZW0tPnBnbWFwLnJlcywgc2l6ZW9m KGJiX3JlcykpOw0KKwkJYmJfcmFuZ2UgPSBwbWVtLT5wZ21hcC5yYW5nZTsNCiAJfSBlbHNlIHsN CiAJCWlmIChkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBwbWVtX3JlbGVhc2VfcXVldWUs DQogCQkJCQkmcG1lbS0+cGdtYXApKQ0KIAkJCXJldHVybiAtRU5PTUVNOw0KIAkJYWRkciA9IGRl dm1fbWVtcmVtYXAoZGV2LCBwbWVtLT5waHlzX2FkZHIsDQogCQkJCXBtZW0tPnNpemUsIEFSQ0hf TUVNUkVNQVBfUE1FTSk7DQotCQltZW1jcHkoJmJiX3JlcywgJm5zaW8tPnJlcywgc2l6ZW9mKGJi X3JlcykpOw0KKwkJYmJfcmFuZ2Uuc3RhcnQgPSAgcmVzLT5zdGFydDsNCisJCWJiX3JhbmdlLmVu ZCA9IHJlcy0+ZW5kOw0KIAl9DQogDQogCWlmIChJU19FUlIoYWRkcikpDQpAQCAtNDgyLDcgKzQ4 NCw3IEBAIHN0YXRpYyBpbnQgcG1lbV9hdHRhY2hfZGlzayhzdHJ1Y3QgZGV2aWNlICpkZXYsDQog CQkJLyA1MTIpOw0KIAlpZiAoZGV2bV9pbml0X2JhZGJsb2NrcyhkZXYsICZwbWVtLT5iYikpDQog CQlyZXR1cm4gLUVOT01FTTsNCi0JbnZkaW1tX2JhZGJsb2Nrc19wb3B1bGF0ZShuZF9yZWdpb24s ICZwbWVtLT5iYiwgJmJiX3Jlcyk7DQorCW52ZGltbV9iYWRibG9ja3NfcG9wdWxhdGUobmRfcmVn aW9uLCAmcG1lbS0+YmIsICZiYl9yYW5nZSk7DQogCWRpc2stPmJiID0gJnBtZW0tPmJiOw0KIA0K IAlpZiAoaXNfbnZkaW1tX3N5bmMobmRfcmVnaW9uKSkNCkBAIC01OTMsOCArNTk1LDggQEAgc3Rh dGljIHZvaWQgbmRfcG1lbV9ub3RpZnkoc3RydWN0IGRldmljZSAqZGV2LCBlbnVtIG52ZGltbV9l dmVudCBldmVudCkNCiAJcmVzb3VyY2Vfc2l6ZV90IG9mZnNldCA9IDAsIGVuZF90cnVuYyA9IDA7 DQogCXN0cnVjdCBuZF9uYW1lc3BhY2VfY29tbW9uICpuZG5zOw0KIAlzdHJ1Y3QgbmRfbmFtZXNw YWNlX2lvICpuc2lvOw0KLQlzdHJ1Y3QgcmVzb3VyY2UgcmVzOw0KIAlzdHJ1Y3QgYmFkYmxvY2tz ICpiYjsNCisJc3RydWN0IHJhbmdlIHJhbmdlOw0KIAlzdHJ1Y3Qga2VybmZzX25vZGUgKmJiX3N0 YXRlOw0KIA0KIAlpZiAoZXZlbnQgIT0gTlZESU1NX1JFVkFMSURBVEVfUE9JU09OKQ0KQEAgLTYz MCw5ICs2MzIsOSBAQCBzdGF0aWMgdm9pZCBuZF9wbWVtX25vdGlmeShzdHJ1Y3QgZGV2aWNlICpk ZXYsIGVudW0gbnZkaW1tX2V2ZW50IGV2ZW50KQ0KIAkJbnNpbyA9IHRvX25kX25hbWVzcGFjZV9p bygmbmRucy0+ZGV2KTsNCiAJfQ0KIA0KLQlyZXMuc3RhcnQgPSBuc2lvLT5yZXMuc3RhcnQgKyBv ZmZzZXQ7DQotCXJlcy5lbmQgPSBuc2lvLT5yZXMuZW5kIC0gZW5kX3RydW5jOw0KLQludmRpbW1f YmFkYmxvY2tzX3BvcHVsYXRlKG5kX3JlZ2lvbiwgYmIsICZyZXMpOw0KKwlyYW5nZS5zdGFydCA9 IG5zaW8tPnJlcy5zdGFydCArIG9mZnNldDsNCisJcmFuZ2UuZW5kID0gbnNpby0+cmVzLmVuZCAt IGVuZF90cnVuYzsNCisJbnZkaW1tX2JhZGJsb2Nrc19wb3B1bGF0ZShuZF9yZWdpb24sIGJiLCAm cmFuZ2UpOw0KIAlpZiAoYmJfc3RhdGUpDQogCQlzeXNmc19ub3RpZnlfZGlyZW50KGJiX3N0YXRl KTsNCiB9DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udmRpbW0vcmVnaW9uLmMgYi9kcml2ZXJzL252 ZGltbS9yZWdpb24uYw0KaW5kZXggMGY2OTc4ZTcyZTdjLi5iZmNlODdlZDcyYWIgMTAwNjQ0DQot LS0gYS9kcml2ZXJzL252ZGltbS9yZWdpb24uYw0KKysrIGIvZHJpdmVycy9udmRpbW0vcmVnaW9u LmMNCkBAIC0zNSw3ICszNSwxMCBAQCBzdGF0aWMgaW50IG5kX3JlZ2lvbl9wcm9iZShzdHJ1Y3Qg ZGV2aWNlICpkZXYpDQogCQlyZXR1cm4gcmM7DQogDQogCWlmIChpc19tZW1vcnkoJm5kX3JlZ2lv bi0+ZGV2KSkgew0KLQkJc3RydWN0IHJlc291cmNlIG5kcl9yZXM7DQorCQlzdHJ1Y3QgcmFuZ2Ug cmFuZ2UgPSB7DQorCQkJLnN0YXJ0ID0gbmRfcmVnaW9uLT5uZHJfc3RhcnQsDQorCQkJLmVuZCA9 IG5kX3JlZ2lvbi0+bmRyX3N0YXJ0ICsgbmRfcmVnaW9uLT5uZHJfc2l6ZSAtIDEsDQorCQl9Ow0K IA0KIAkJaWYgKGRldm1faW5pdF9iYWRibG9ja3MoZGV2LCAmbmRfcmVnaW9uLT5iYikpDQogCQkJ cmV0dXJuIC1FTk9ERVY7DQpAQCAtNDQsOSArNDcsNyBAQCBzdGF0aWMgaW50IG5kX3JlZ2lvbl9w cm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQogCQlpZiAoIW5kX3JlZ2lvbi0+YmJfc3RhdGUpDQog CQkJZGV2X3dhcm4oJm5kX3JlZ2lvbi0+ZGV2LA0KIAkJCQkJIidiYWRibG9ja3MnIG5vdGlmaWNh dGlvbiBkaXNhYmxlZFxuIik7DQotCQluZHJfcmVzLnN0YXJ0ID0gbmRfcmVnaW9uLT5uZHJfc3Rh cnQ7DQotCQluZHJfcmVzLmVuZCA9IG5kX3JlZ2lvbi0+bmRyX3N0YXJ0ICsgbmRfcmVnaW9uLT5u ZHJfc2l6ZSAtIDE7DQotCQludmRpbW1fYmFkYmxvY2tzX3BvcHVsYXRlKG5kX3JlZ2lvbiwgJm5k X3JlZ2lvbi0+YmIsICZuZHJfcmVzKTsNCisJCW52ZGltbV9iYWRibG9ja3NfcG9wdWxhdGUobmRf cmVnaW9uLCAmbmRfcmVnaW9uLT5iYiwgJnJhbmdlKTsNCiAJfQ0KIA0KIAlyYyA9IG5kX3JlZ2lv bl9yZWdpc3Rlcl9uYW1lc3BhY2VzKG5kX3JlZ2lvbiwgJmVycik7DQpAQCAtMTIxLDE0ICsxMjIs MTYgQEAgc3RhdGljIHZvaWQgbmRfcmVnaW9uX25vdGlmeShzdHJ1Y3QgZGV2aWNlICpkZXYsIGVu dW0gbnZkaW1tX2V2ZW50IGV2ZW50KQ0KIHsNCiAJaWYgKGV2ZW50ID09IE5WRElNTV9SRVZBTElE QVRFX1BPSVNPTikgew0KIAkJc3RydWN0IG5kX3JlZ2lvbiAqbmRfcmVnaW9uID0gdG9fbmRfcmVn aW9uKGRldik7DQotCQlzdHJ1Y3QgcmVzb3VyY2UgcmVzOw0KIA0KIAkJaWYgKGlzX21lbW9yeSgm bmRfcmVnaW9uLT5kZXYpKSB7DQotCQkJcmVzLnN0YXJ0ID0gbmRfcmVnaW9uLT5uZHJfc3RhcnQ7 DQotCQkJcmVzLmVuZCA9IG5kX3JlZ2lvbi0+bmRyX3N0YXJ0ICsNCi0JCQkJbmRfcmVnaW9uLT5u ZHJfc2l6ZSAtIDE7DQorCQkJc3RydWN0IHJhbmdlIHJhbmdlID0gew0KKwkJCQkuc3RhcnQgPSBu ZF9yZWdpb24tPm5kcl9zdGFydCwNCisJCQkJLmVuZCA9IG5kX3JlZ2lvbi0+bmRyX3N0YXJ0ICsN CisJCQkJCW5kX3JlZ2lvbi0+bmRyX3NpemUgLSAxLA0KKwkJCX07DQorDQogCQkJbnZkaW1tX2Jh ZGJsb2Nrc19wb3B1bGF0ZShuZF9yZWdpb24sDQotCQkJCQkmbmRfcmVnaW9uLT5iYiwgJnJlcyk7 DQorCQkJCQkmbmRfcmVnaW9uLT5iYiwgJnJhbmdlKTsNCiAJCQlpZiAobmRfcmVnaW9uLT5iYl9z dGF0ZSkNCiAJCQkJc3lzZnNfbm90aWZ5X2RpcmVudChuZF9yZWdpb24tPmJiX3N0YXRlKTsNCiAJ CX0NCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wMnBkbWEuYyBiL2RyaXZlcnMvcGNpL3AycGRt YS5jDQppbmRleCBmMzU3ZjlhMzJiM2EuLjI1Njg1MDUxMzgxMyAxMDA2NDQNCi0tLSBhL2RyaXZl cnMvcGNpL3AycGRtYS5jDQorKysgYi9kcml2ZXJzL3BjaS9wMnBkbWEuYw0KQEAgLTE4NSw5ICsx ODUsOCBAQCBpbnQgcGNpX3AycGRtYV9hZGRfcmVzb3VyY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYs IGludCBiYXIsIHNpemVfdCBzaXplLA0KIAkJcmV0dXJuIC1FTk9NRU07DQogDQogCXBnbWFwID0g JnAycF9wZ21hcC0+cGdtYXA7DQotCXBnbWFwLT5yZXMuc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3Rh cnQocGRldiwgYmFyKSArIG9mZnNldDsNCi0JcGdtYXAtPnJlcy5lbmQgPSBwZ21hcC0+cmVzLnN0 YXJ0ICsgc2l6ZSAtIDE7DQotCXBnbWFwLT5yZXMuZmxhZ3MgPSBwY2lfcmVzb3VyY2VfZmxhZ3Mo cGRldiwgYmFyKTsNCisJcGdtYXAtPnJhbmdlLnN0YXJ0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBk ZXYsIGJhcikgKyBvZmZzZXQ7DQorCXBnbWFwLT5yYW5nZS5lbmQgPSBwZ21hcC0+cmFuZ2Uuc3Rh cnQgKyBzaXplIC0gMTsNCiAJcGdtYXAtPnR5cGUgPSBNRU1PUllfREVWSUNFX1BDSV9QMlBETUE7 DQogDQogCXAycF9wZ21hcC0+cHJvdmlkZXIgPSBwZGV2Ow0KQEAgLTIwMiwxMyArMjAxLDEzIEBA IGludCBwY2lfcDJwZG1hX2FkZF9yZXNvdXJjZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJh ciwgc2l6ZV90IHNpemUsDQogDQogCWVycm9yID0gZ2VuX3Bvb2xfYWRkX293bmVyKHBkZXYtPnAy cGRtYS0+cG9vbCwgKHVuc2lnbmVkIGxvbmcpYWRkciwNCiAJCQlwY2lfYnVzX2FkZHJlc3MocGRl diwgYmFyKSArIG9mZnNldCwNCi0JCQlyZXNvdXJjZV9zaXplKCZwZ21hcC0+cmVzKSwgZGV2X3Rv X25vZGUoJnBkZXYtPmRldiksDQorCQkJcmFuZ2VfbGVuKCZwZ21hcC0+cmFuZ2UpLCBkZXZfdG9f bm9kZSgmcGRldi0+ZGV2KSwNCiAJCQlwZ21hcC0+cmVmKTsNCiAJaWYgKGVycm9yKQ0KIAkJZ290 byBwYWdlc19mcmVlOw0KIA0KLQlwY2lfaW5mbyhwZGV2LCAiYWRkZWQgcGVlci10by1wZWVyIERN QSBtZW1vcnkgJXBSXG4iLA0KLQkJICZwZ21hcC0+cmVzKTsNCisJcGNpX2luZm8ocGRldiwgImFk ZGVkIHBlZXItdG8tcGVlciBETUEgbWVtb3J5ICUjbGx4LSUjbGx4XG4iLA0KKwkJIHBnbWFwLT5y YW5nZS5zdGFydCwgcGdtYXAtPnJhbmdlLmVuZCk7DQogDQogCXJldHVybiAwOw0KIA0KZGlmZiAt LWdpdCBhL2RyaXZlcnMveGVuL3VucG9wdWxhdGVkLWFsbG9jLmMgYi9kcml2ZXJzL3hlbi91bnBv cHVsYXRlZC1hbGxvYy5jDQppbmRleCAzYjk4ZGM5MjE0MjYuLjkwYTAwNzY0ODA4MiAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMveGVuL3VucG9wdWxhdGVkLWFsbG9jLmMNCisrKyBiL2RyaXZlcnMveGVu L3VucG9wdWxhdGVkLWFsbG9jLmMNCkBAIC0xOCwyNyArMTgsMzcgQEAgc3RhdGljIHVuc2lnbmVk IGludCBsaXN0X2NvdW50Ow0KIHN0YXRpYyBpbnQgZmlsbF9saXN0KHVuc2lnbmVkIGludCBucl9w YWdlcykNCiB7DQogCXN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXA7DQorCXN0cnVjdCByZXNvdXJj ZSAqcmVzOw0KIAl2b2lkICp2YWRkcjsNCiAJdW5zaWduZWQgaW50IGksIGFsbG9jX3BhZ2VzID0g cm91bmRfdXAobnJfcGFnZXMsIFBBR0VTX1BFUl9TRUNUSU9OKTsNCi0JaW50IHJldDsNCisJaW50 IHJldCA9IC1FTk9NRU07DQogDQotCXBnbWFwID0ga3phbGxvYyhzaXplb2YoKnBnbWFwKSwgR0ZQ X0tFUk5FTCk7DQotCWlmICghcGdtYXApDQorCXJlcyA9IGt6YWxsb2Moc2l6ZW9mKCpyZXMpLCBH RlBfS0VSTkVMKTsNCisJaWYgKCFyZXMpDQogCQlyZXR1cm4gLUVOT01FTTsNCiANCi0JcGdtYXAt PnR5cGUgPSBNRU1PUllfREVWSUNFX0dFTkVSSUM7DQotCXBnbWFwLT5yZXMubmFtZSA9ICJYZW4g c2NyYXRjaCI7DQotCXBnbWFwLT5yZXMuZmxhZ3MgPSBJT1JFU09VUkNFX01FTSB8IElPUkVTT1VS Q0VfQlVTWTsNCisJcmVzLT5uYW1lID0gIlhlbiBzY3JhdGNoIjsNCisJcmVzLT5mbGFncyA9IElP UkVTT1VSQ0VfTUVNIHwgSU9SRVNPVVJDRV9CVVNZOw0KIA0KLQlyZXQgPSBhbGxvY2F0ZV9yZXNv dXJjZSgmaW9tZW1fcmVzb3VyY2UsICZwZ21hcC0+cmVzLA0KKwlyZXQgPSBhbGxvY2F0ZV9yZXNv dXJjZSgmaW9tZW1fcmVzb3VyY2UsIHJlcywNCiAJCQkJYWxsb2NfcGFnZXMgKiBQQUdFX1NJWkUs IDAsIC0xLA0KIAkJCQlQQUdFU19QRVJfU0VDVElPTiAqIFBBR0VfU0laRSwgTlVMTCwgTlVMTCk7 DQogCWlmIChyZXQgPCAwKSB7DQogCQlwcl9lcnIoIkNhbm5vdCBhbGxvY2F0ZSBuZXcgSU9NRU0g cmVzb3VyY2VcbiIpOw0KLQkJa2ZyZWUocGdtYXApOw0KLQkJcmV0dXJuIHJldDsNCisJCWdvdG8g ZXJyX3Jlc291cmNlOw0KIAl9DQogDQorCXBnbWFwID0ga3phbGxvYyhzaXplb2YoKnBnbWFwKSwg R0ZQX0tFUk5FTCk7DQorCWlmICghcGdtYXApDQorCQlnb3RvIGVycl9wZ21hcDsNCisNCisJcGdt YXAtPnR5cGUgPSBNRU1PUllfREVWSUNFX0dFTkVSSUM7DQorCXBnbWFwLT5yYW5nZSA9IChzdHJ1 Y3QgcmFuZ2UpIHsNCisJCS5zdGFydCA9IHJlcy0+c3RhcnQsDQorCQkuZW5kID0gcmVzLT5lbmQs DQorCX07DQorCXBnbWFwLT5vd25lciA9IHJlczsNCisNCiAjaWZkZWYgQ09ORklHX1hFTl9IQVZF X1BWTU1VDQogICAgICAgICAvKg0KICAgICAgICAgICogbWVtcmVtYXAgd2lsbCBidWlsZCBwYWdl IHRhYmxlcyBmb3IgdGhlIG5ldyBtZW1vcnkgc28NCkBAIC01MCwxNCArNjAsMTMgQEAgc3RhdGlj IGludCBmaWxsX2xpc3QodW5zaWduZWQgaW50IG5yX3BhZ2VzKQ0KICAgICAgICAgICogY29uZmxp Y3Qgd2l0aCBhbnkgZGV2aWNlcy4NCiAgICAgICAgICAqLw0KIAlpZiAoIXhlbl9mZWF0dXJlKFhF TkZFQVRfYXV0b190cmFuc2xhdGVkX3BoeXNtYXApKSB7DQotCQl4ZW5fcGZuX3QgcGZuID0gUEZO X0RPV04ocGdtYXAtPnJlcy5zdGFydCk7DQorCQl4ZW5fcGZuX3QgcGZuID0gUEZOX0RPV04ocmVz LT5zdGFydCk7DQogDQogCQlmb3IgKGkgPSAwOyBpIDwgYWxsb2NfcGFnZXM7IGkrKykgew0KIAkJ CWlmICghc2V0X3BoeXNfdG9fbWFjaGluZShwZm4gKyBpLCBJTlZBTElEX1AyTV9FTlRSWSkpIHsN CiAJCQkJcHJfd2Fybigic2V0X3BoeXNfdG9fbWFjaGluZSgpIGZhaWxlZCwgbm8gbWVtb3J5IGFk ZGVkXG4iKTsNCi0JCQkJcmVsZWFzZV9yZXNvdXJjZSgmcGdtYXAtPnJlcyk7DQotCQkJCWtmcmVl KHBnbWFwKTsNCi0JCQkJcmV0dXJuIC1FTk9NRU07DQorCQkJCXJldCA9IC1FTk9NRU07DQorCQkJ CWdvdG8gZXJyX21lbXJlbWFwOw0KIAkJCX0NCiAgICAgICAgICAgICAgICAgfQ0KIAl9DQpAQCAt NjYsOSArNzUsOCBAQCBzdGF0aWMgaW50IGZpbGxfbGlzdCh1bnNpZ25lZCBpbnQgbnJfcGFnZXMp DQogCXZhZGRyID0gbWVtcmVtYXBfcGFnZXMocGdtYXAsIE5VTUFfTk9fTk9ERSk7DQogCWlmIChJ U19FUlIodmFkZHIpKSB7DQogCQlwcl9lcnIoIkNhbm5vdCByZW1hcCBtZW1vcnkgcmFuZ2VcbiIp Ow0KLQkJcmVsZWFzZV9yZXNvdXJjZSgmcGdtYXAtPnJlcyk7DQotCQlrZnJlZShwZ21hcCk7DQot CQlyZXR1cm4gUFRSX0VSUih2YWRkcik7DQorCQlyZXQgPSBQVFJfRVJSKHZhZGRyKTsNCisJCWdv dG8gZXJyX21lbXJlbWFwOw0KIAl9DQogDQogCWZvciAoaSA9IDA7IGkgPCBhbGxvY19wYWdlczsg aSsrKSB7DQpAQCAtODAsNiArODgsMTQgQEAgc3RhdGljIGludCBmaWxsX2xpc3QodW5zaWduZWQg aW50IG5yX3BhZ2VzKQ0KIAl9DQogDQogCXJldHVybiAwOw0KKw0KK2Vycl9tZW1yZW1hcDoNCisJ a2ZyZWUocGdtYXApOw0KK2Vycl9wZ21hcDoNCisJcmVsZWFzZV9yZXNvdXJjZShyZXMpOw0KK2Vy cl9yZXNvdXJjZToNCisJa2ZyZWUocmVzKTsNCisJcmV0dXJuIHJldDsNCiB9DQogDQogLyoqDQpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oIGIvaW5jbHVkZS9saW51eC9tZW1y ZW1hcC5oDQppbmRleCBiMzc2ODY4MDNhNmQuLjM3NWI5ZTg3YTVjZiAxMDA2NDQNCi0tLSBhL2lu Y2x1ZGUvbGludXgvbWVtcmVtYXAuaA0KKysrIGIvaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oDQpA QCAtMSw2ICsxLDcgQEANCiAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0K ICNpZm5kZWYgX0xJTlVYX01FTVJFTUFQX0hfDQogI2RlZmluZSBfTElOVVhfTUVNUkVNQVBfSF8N CisjaW5jbHVkZSA8bGludXgvcmFuZ2UuaD4NCiAjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+DQog I2luY2x1ZGUgPGxpbnV4L3BlcmNwdS1yZWZjb3VudC5oPg0KIA0KQEAgLTkzLDcgKzk0LDcgQEAg c3RydWN0IGRldl9wYWdlbWFwX29wcyB7DQogLyoqDQogICogc3RydWN0IGRldl9wYWdlbWFwIC0g bWV0YWRhdGEgZm9yIFpPTkVfREVWSUNFIG1hcHBpbmdzDQogICogQGFsdG1hcDogcHJlLWFsbG9j YXRlZC9yZXNlcnZlZCBtZW1vcnkgZm9yIHZtZW1tYXAgYWxsb2NhdGlvbnMNCi0gKiBAcmVzOiBw aHlzaWNhbCBhZGRyZXNzIHJhbmdlIGNvdmVyZWQgYnkgQHJlZg0KKyAqIEByYW5nZTogcGh5c2lj YWwgYWRkcmVzcyByYW5nZSBjb3ZlcmVkIGJ5IEByZWYNCiAgKiBAcmVmOiByZWZlcmVuY2UgY291 bnQgdGhhdCBwaW5zIHRoZSBkZXZtX21lbXJlbWFwX3BhZ2VzKCkgbWFwcGluZw0KICAqIEBpbnRl cm5hbF9yZWY6IGludGVybmFsIHJlZmVyZW5jZSBpZiBAcmVmIGlzIG5vdCBwcm92aWRlZCBieSB0 aGUgY2FsbGVyDQogICogQGRvbmU6IGNvbXBsZXRpb24gZm9yIEBpbnRlcm5hbF9yZWYNCkBAIC0x MDYsNyArMTA3LDcgQEAgc3RydWN0IGRldl9wYWdlbWFwX29wcyB7DQogICovDQogc3RydWN0IGRl dl9wYWdlbWFwIHsNCiAJc3RydWN0IHZtZW1fYWx0bWFwIGFsdG1hcDsNCi0Jc3RydWN0IHJlc291 cmNlIHJlczsNCisJc3RydWN0IHJhbmdlIHJhbmdlOw0KIAlzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVm Ow0KIAlzdHJ1Y3QgcGVyY3B1X3JlZiBpbnRlcm5hbF9yZWY7DQogCXN0cnVjdCBjb21wbGV0aW9u IGRvbmU7DQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yYW5nZS5oIGIvaW5jbHVkZS9saW51 eC9yYW5nZS5oDQppbmRleCA5YzI4MzUzYTEyMTkuLjI3NDY4MWNjMzE1NCAxMDA2NDQNCi0tLSBh L2luY2x1ZGUvbGludXgvcmFuZ2UuaA0KKysrIGIvaW5jbHVkZS9saW51eC9yYW5nZS5oDQpAQCAt MSw2ICsxLDcgQEANCiAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KICNp Zm5kZWYgX0xJTlVYX1JBTkdFX0gNCiAjZGVmaW5lIF9MSU5VWF9SQU5HRV9IDQorI2luY2x1ZGUg PGxpbnV4L3R5cGVzLmg+DQogDQogc3RydWN0IHJhbmdlIHsNCiAJdTY0ICAgc3RhcnQ7DQpkaWZm IC0tZ2l0IGEvbGliL3Rlc3RfaG1tLmMgYi9saWIvdGVzdF9obW0uYw0KaW5kZXggZTdkYzNkZTM1 NWI3Li5lOTdjYThlYzBiY2UgMTAwNjQ0DQotLS0gYS9saWIvdGVzdF9obW0uYw0KKysrIGIvbGli L3Rlc3RfaG1tLmMNCkBAIC00NjAsNiArNDYwLDIxIEBAIHN0YXRpYyBib29sIGRtaXJyb3JfYWxs b2NhdGVfY2h1bmsoc3RydWN0IGRtaXJyb3JfZGV2aWNlICptZGV2aWNlLA0KIAl1bnNpZ25lZCBs b25nIHBmbl9sYXN0Ow0KIAl2b2lkICpwdHI7DQogDQorCWRldm1lbSA9IGt6YWxsb2Moc2l6ZW9m KCpkZXZtZW0pLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFkZXZtZW0pDQorCQlyZXR1cm4gLUVOT01F TTsNCisNCisJcmVzID0gcmVxdWVzdF9mcmVlX21lbV9yZWdpb24oJmlvbWVtX3Jlc291cmNlLCBE RVZNRU1fQ0hVTktfU0laRSwNCisJCQkJICAgICAgImhtbV9kbWlycm9yIik7DQorCWlmIChJU19F UlIocmVzKSkNCisJCWdvdG8gZXJyX2Rldm1lbTsNCisNCisJZGV2bWVtLT5wYWdlbWFwLnR5cGUg PSBNRU1PUllfREVWSUNFX1BSSVZBVEU7DQorCWRldm1lbS0+cGFnZW1hcC5yYW5nZS5zdGFydCA9 IHJlcy0+c3RhcnQ7DQorCWRldm1lbS0+cGFnZW1hcC5yYW5nZS5lbmQgPSByZXMtPmVuZDsNCisJ ZGV2bWVtLT5wYWdlbWFwLm9wcyA9ICZkbWlycm9yX2Rldm1lbV9vcHM7DQorCWRldm1lbS0+cGFn ZW1hcC5vd25lciA9IG1kZXZpY2U7DQorDQogCW11dGV4X2xvY2soJm1kZXZpY2UtPmRldm1lbV9s b2NrKTsNCiANCiAJaWYgKG1kZXZpY2UtPmRldm1lbV9jb3VudCA9PSBtZGV2aWNlLT5kZXZtZW1f Y2FwYWNpdHkpIHsNCkBAIC00NzIsMzMgKzQ4NywxOCBAQCBzdGF0aWMgYm9vbCBkbWlycm9yX2Fs bG9jYXRlX2NodW5rKHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSwNCiAJCQkJc2l6ZW9m KG5ld19jaHVua3NbMF0pICogbmV3X2NhcGFjaXR5LA0KIAkJCQlHRlBfS0VSTkVMKTsNCiAJCWlm ICghbmV3X2NodW5rcykNCi0JCQlnb3RvIGVycjsNCisJCQlnb3RvIGVycl9yZWxlYXNlOw0KIAkJ bWRldmljZS0+ZGV2bWVtX2NhcGFjaXR5ID0gbmV3X2NhcGFjaXR5Ow0KIAkJbWRldmljZS0+ZGV2 bWVtX2NodW5rcyA9IG5ld19jaHVua3M7DQogCX0NCiANCi0JcmVzID0gcmVxdWVzdF9mcmVlX21l bV9yZWdpb24oJmlvbWVtX3Jlc291cmNlLCBERVZNRU1fQ0hVTktfU0laRSwNCi0JCQkJCSJobW1f ZG1pcnJvciIpOw0KLQlpZiAoSVNfRVJSKHJlcykpDQotCQlnb3RvIGVycjsNCi0NCi0JZGV2bWVt ID0ga3phbGxvYyhzaXplb2YoKmRldm1lbSksIEdGUF9LRVJORUwpOw0KLQlpZiAoIWRldm1lbSkN Ci0JCWdvdG8gZXJyX3JlbGVhc2U7DQotDQotCWRldm1lbS0+cGFnZW1hcC50eXBlID0gTUVNT1JZ X0RFVklDRV9QUklWQVRFOw0KLQlkZXZtZW0tPnBhZ2VtYXAucmVzID0gKnJlczsNCi0JZGV2bWVt LT5wYWdlbWFwLm9wcyA9ICZkbWlycm9yX2Rldm1lbV9vcHM7DQotCWRldm1lbS0+cGFnZW1hcC5v d25lciA9IG1kZXZpY2U7DQotDQogCXB0ciA9IG1lbXJlbWFwX3BhZ2VzKCZkZXZtZW0tPnBhZ2Vt YXAsIG51bWFfbm9kZV9pZCgpKTsNCiAJaWYgKElTX0VSUihwdHIpKQ0KLQkJZ290byBlcnJfZnJl ZTsNCisJCWdvdG8gZXJyX3JlbGVhc2U7DQogDQogCWRldm1lbS0+bWRldmljZSA9IG1kZXZpY2U7 DQotCXBmbl9maXJzdCA9IGRldm1lbS0+cGFnZW1hcC5yZXMuc3RhcnQgPj4gUEFHRV9TSElGVDsN Ci0JcGZuX2xhc3QgPSBwZm5fZmlyc3QgKw0KLQkJKHJlc291cmNlX3NpemUoJmRldm1lbS0+cGFn ZW1hcC5yZXMpID4+IFBBR0VfU0hJRlQpOw0KKwlwZm5fZmlyc3QgPSBkZXZtZW0tPnBhZ2VtYXAu cmFuZ2Uuc3RhcnQgPj4gUEFHRV9TSElGVDsNCisJcGZuX2xhc3QgPSBwZm5fZmlyc3QgKyAocmFu Z2VfbGVuKCZkZXZtZW0tPnBhZ2VtYXAucmFuZ2UpID4+IFBBR0VfU0hJRlQpOw0KIAltZGV2aWNl LT5kZXZtZW1fY2h1bmtzW21kZXZpY2UtPmRldm1lbV9jb3VudCsrXSA9IGRldm1lbTsNCiANCiAJ bXV0ZXhfdW5sb2NrKCZtZGV2aWNlLT5kZXZtZW1fbG9jayk7DQpAQCAtNTI1LDEyICs1MjUsMTIg QEAgc3RhdGljIGJvb2wgZG1pcnJvcl9hbGxvY2F0ZV9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9kZXZp Y2UgKm1kZXZpY2UsDQogDQogCXJldHVybiB0cnVlOw0KIA0KLWVycl9mcmVlOg0KLQlrZnJlZShk ZXZtZW0pOw0KIGVycl9yZWxlYXNlOg0KLQlyZWxlYXNlX21lbV9yZWdpb24ocmVzLT5zdGFydCwg cmVzb3VyY2Vfc2l6ZShyZXMpKTsNCi1lcnI6DQogCW11dGV4X3VubG9jaygmbWRldmljZS0+ZGV2 bWVtX2xvY2spOw0KKwlyZWxlYXNlX21lbV9yZWdpb24oZGV2bWVtLT5wYWdlbWFwLnJhbmdlLnN0 YXJ0LCByYW5nZV9sZW4oJmRldm1lbS0+cGFnZW1hcC5yYW5nZSkpOw0KK2Vycl9kZXZtZW06DQor CWtmcmVlKGRldm1lbSk7DQorDQogCXJldHVybiBmYWxzZTsNCiB9DQogDQpAQCAtMTEwMCw4ICsx MTAwLDggQEAgc3RhdGljIHZvaWQgZG1pcnJvcl9kZXZpY2VfcmVtb3ZlKHN0cnVjdCBkbWlycm9y X2RldmljZSAqbWRldmljZSkNCiAJCQkJbWRldmljZS0+ZGV2bWVtX2NodW5rc1tpXTsNCiANCiAJ CQltZW11bm1hcF9wYWdlcygmZGV2bWVtLT5wYWdlbWFwKTsNCi0JCQlyZWxlYXNlX21lbV9yZWdp b24oZGV2bWVtLT5wYWdlbWFwLnJlcy5zdGFydCwNCi0JCQkJCSAgIHJlc291cmNlX3NpemUoJmRl dm1lbS0+cGFnZW1hcC5yZXMpKTsNCisJCQlyZWxlYXNlX21lbV9yZWdpb24oZGV2bWVtLT5wYWdl bWFwLnJhbmdlLnN0YXJ0LA0KKwkJCQkJICAgcmFuZ2VfbGVuKCZkZXZtZW0tPnBhZ2VtYXAucmFu Z2UpKTsNCiAJCQlrZnJlZShkZXZtZW0pOw0KIAkJfQ0KIAkJa2ZyZWUobWRldmljZS0+ZGV2bWVt X2NodW5rcyk7DQpkaWZmIC0tZ2l0IGEvbW0vbWVtcmVtYXAuYyBiL21tL21lbXJlbWFwLmMNCmlu ZGV4IGYwMDg3MDZiNjg1ZS4uN2M4OTVlMTQ3N2IwIDEwMDY0NA0KLS0tIGEvbW0vbWVtcmVtYXAu Yw0KKysrIGIvbW0vbWVtcmVtYXAuYw0KQEAgLTcwLDI0ICs3MCwyNCBAQCBzdGF0aWMgdm9pZCBk ZXZtYXBfbWFuYWdlZF9lbmFibGVfcHV0KHZvaWQpDQogfQ0KICNlbmRpZiAvKiBDT05GSUdfREVW X1BBR0VNQVBfT1BTICovDQogDQotc3RhdGljIHZvaWQgcGdtYXBfYXJyYXlfZGVsZXRlKHN0cnVj dCByZXNvdXJjZSAqcmVzKQ0KK3N0YXRpYyB2b2lkIHBnbWFwX2FycmF5X2RlbGV0ZShzdHJ1Y3Qg cmFuZ2UgKnJhbmdlKQ0KIHsNCi0JeGFfc3RvcmVfcmFuZ2UoJnBnbWFwX2FycmF5LCBQSFlTX1BG TihyZXMtPnN0YXJ0KSwgUEhZU19QRk4ocmVzLT5lbmQpLA0KKwl4YV9zdG9yZV9yYW5nZSgmcGdt YXBfYXJyYXksIFBIWVNfUEZOKHJhbmdlLT5zdGFydCksIFBIWVNfUEZOKHJhbmdlLT5lbmQpLA0K IAkJCU5VTEwsIEdGUF9LRVJORUwpOw0KIAlzeW5jaHJvbml6ZV9yY3UoKTsNCiB9DQogDQogc3Rh dGljIHVuc2lnbmVkIGxvbmcgcGZuX2ZpcnN0KHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXApDQog ew0KLQlyZXR1cm4gUEhZU19QRk4ocGdtYXAtPnJlcy5zdGFydCkgKw0KKwlyZXR1cm4gUEhZU19Q Rk4ocGdtYXAtPnJhbmdlLnN0YXJ0KSArDQogCQl2bWVtX2FsdG1hcF9vZmZzZXQocGdtYXBfYWx0 bWFwKHBnbWFwKSk7DQogfQ0KIA0KIHN0YXRpYyB1bnNpZ25lZCBsb25nIHBmbl9lbmQoc3RydWN0 IGRldl9wYWdlbWFwICpwZ21hcCkNCiB7DQotCWNvbnN0IHN0cnVjdCByZXNvdXJjZSAqcmVzID0g JnBnbWFwLT5yZXM7DQorCWNvbnN0IHN0cnVjdCByYW5nZSAqcmFuZ2UgPSAmcGdtYXAtPnJhbmdl Ow0KIA0KLQlyZXR1cm4gKHJlcy0+c3RhcnQgKyByZXNvdXJjZV9zaXplKHJlcykpID4+IFBBR0Vf U0hJRlQ7DQorCXJldHVybiAocmFuZ2UtPnN0YXJ0ICsgcmFuZ2VfbGVuKHJhbmdlKSkgPj4gUEFH RV9TSElGVDsNCiB9DQogDQogc3RhdGljIHVuc2lnbmVkIGxvbmcgcGZuX25leHQodW5zaWduZWQg bG9uZyBwZm4pDQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyB2b2lkIGRldl9wYWdlbWFwX2Ns ZWFudXAoc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcCkNCiANCiB2b2lkIG1lbXVubWFwX3BhZ2Vz KHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXApDQogew0KLQlzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9 ICZwZ21hcC0+cmVzOw0KKwlzdHJ1Y3QgcmFuZ2UgKnJhbmdlID0gJnBnbWFwLT5yYW5nZTsNCiAJ c3RydWN0IHBhZ2UgKmZpcnN0X3BhZ2U7DQogCXVuc2lnbmVkIGxvbmcgcGZuOw0KIAlpbnQgbmlk Ow0KQEAgLTE2MywyMCArMTYzLDIwIEBAIHZvaWQgbWVtdW5tYXBfcGFnZXMoc3RydWN0IGRldl9w YWdlbWFwICpwZ21hcCkNCiAJbmlkID0gcGFnZV90b19uaWQoZmlyc3RfcGFnZSk7DQogDQogCW1l bV9ob3RwbHVnX2JlZ2luKCk7DQotCXJlbW92ZV9wZm5fcmFuZ2VfZnJvbV96b25lKHBhZ2Vfem9u ZShmaXJzdF9wYWdlKSwgUEhZU19QRk4ocmVzLT5zdGFydCksDQotCQkJCSAgIFBIWVNfUEZOKHJl c291cmNlX3NpemUocmVzKSkpOw0KKwlyZW1vdmVfcGZuX3JhbmdlX2Zyb21fem9uZShwYWdlX3pv bmUoZmlyc3RfcGFnZSksIFBIWVNfUEZOKHJhbmdlLT5zdGFydCksDQorCQkJCSAgIFBIWVNfUEZO KHJhbmdlX2xlbihyYW5nZSkpKTsNCiAJaWYgKHBnbWFwLT50eXBlID09IE1FTU9SWV9ERVZJQ0Vf UFJJVkFURSkgew0KLQkJX19yZW1vdmVfcGFnZXMoUEhZU19QRk4ocmVzLT5zdGFydCksDQotCQkJ ICAgICAgIFBIWVNfUEZOKHJlc291cmNlX3NpemUocmVzKSksIE5VTEwpOw0KKwkJX19yZW1vdmVf cGFnZXMoUEhZU19QRk4ocmFuZ2UtPnN0YXJ0KSwNCisJCQkgICAgICAgUEhZU19QRk4ocmFuZ2Vf bGVuKHJhbmdlKSksIE5VTEwpOw0KIAl9IGVsc2Ugew0KLQkJYXJjaF9yZW1vdmVfbWVtb3J5KG5p ZCwgcmVzLT5zdGFydCwgcmVzb3VyY2Vfc2l6ZShyZXMpLA0KKwkJYXJjaF9yZW1vdmVfbWVtb3J5 KG5pZCwgcmFuZ2UtPnN0YXJ0LCByYW5nZV9sZW4ocmFuZ2UpLA0KIAkJCQlwZ21hcF9hbHRtYXAo cGdtYXApKTsNCi0JCWthc2FuX3JlbW92ZV96ZXJvX3NoYWRvdyhfX3ZhKHJlcy0+c3RhcnQpLCBy ZXNvdXJjZV9zaXplKHJlcykpOw0KKwkJa2FzYW5fcmVtb3ZlX3plcm9fc2hhZG93KF9fdmEocmFu Z2UtPnN0YXJ0KSwgcmFuZ2VfbGVuKHJhbmdlKSk7DQogCX0NCiAJbWVtX2hvdHBsdWdfZG9uZSgp Ow0KIA0KLQl1bnRyYWNrX3BmbihOVUxMLCBQSFlTX1BGTihyZXMtPnN0YXJ0KSwgcmVzb3VyY2Vf c2l6ZShyZXMpKTsNCi0JcGdtYXBfYXJyYXlfZGVsZXRlKHJlcyk7DQorCXVudHJhY2tfcGZuKE5V TEwsIFBIWVNfUEZOKHJhbmdlLT5zdGFydCksIHJhbmdlX2xlbihyYW5nZSkpOw0KKwlwZ21hcF9h cnJheV9kZWxldGUocmFuZ2UpOw0KIAlXQVJOX09OQ0UocGdtYXAtPmFsdG1hcC5hbGxvYywgImZh aWxlZCB0byBmcmVlIGFsbCByZXNlcnZlZCBwYWdlc1xuIik7DQogCWRldm1hcF9tYW5hZ2VkX2Vu YWJsZV9wdXQoKTsNCiB9DQpAQCAtMjAyLDcgKzIwMiw3IEBAIHN0YXRpYyB2b2lkIGRldl9wYWdl bWFwX3BlcmNwdV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpDQogICovDQogdm9pZCAq bWVtcmVtYXBfcGFnZXMoc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcCwgaW50IG5pZCkNCiB7DQot CXN0cnVjdCByZXNvdXJjZSAqcmVzID0gJnBnbWFwLT5yZXM7DQorCXN0cnVjdCByYW5nZSAqcmFu Z2UgPSAmcGdtYXAtPnJhbmdlOw0KIAlzdHJ1Y3QgZGV2X3BhZ2VtYXAgKmNvbmZsaWN0X3BnbWFw Ow0KIAlzdHJ1Y3QgbWhwX3BhcmFtcyBwYXJhbXMgPSB7DQogCQkvKg0KQEAgLTI3MSw3ICsyNzEs NyBAQCB2b2lkICptZW1yZW1hcF9wYWdlcyhzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwLCBpbnQg bmlkKQ0KIAkJCXJldHVybiBFUlJfUFRSKGVycm9yKTsNCiAJfQ0KIA0KLQljb25mbGljdF9wZ21h cCA9IGdldF9kZXZfcGFnZW1hcChQSFlTX1BGTihyZXMtPnN0YXJ0KSwgTlVMTCk7DQorCWNvbmZs aWN0X3BnbWFwID0gZ2V0X2Rldl9wYWdlbWFwKFBIWVNfUEZOKHJhbmdlLT5zdGFydCksIE5VTEwp Ow0KIAlpZiAoY29uZmxpY3RfcGdtYXApIHsNCiAJCVdBUk4oMSwgIkNvbmZsaWN0aW5nIG1hcHBp bmcgaW4gc2FtZSBzZWN0aW9uXG4iKTsNCiAJCXB1dF9kZXZfcGFnZW1hcChjb25mbGljdF9wZ21h cCk7DQpAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgKm1lbXJlbWFwX3BhZ2VzKHN0cnVjdCBkZXZf cGFnZW1hcCAqcGdtYXAsIGludCBuaWQpDQogCQlnb3RvIGVycl9hcnJheTsNCiAJfQ0KIA0KLQlj b25mbGljdF9wZ21hcCA9IGdldF9kZXZfcGFnZW1hcChQSFlTX1BGTihyZXMtPmVuZCksIE5VTEwp Ow0KKwljb25mbGljdF9wZ21hcCA9IGdldF9kZXZfcGFnZW1hcChQSFlTX1BGTihyYW5nZS0+ZW5k KSwgTlVMTCk7DQogCWlmIChjb25mbGljdF9wZ21hcCkgew0KIAkJV0FSTigxLCAiQ29uZmxpY3Rp bmcgbWFwcGluZyBpbiBzYW1lIHNlY3Rpb25cbiIpOw0KIAkJcHV0X2Rldl9wYWdlbWFwKGNvbmZs aWN0X3BnbWFwKTsNCkBAIC0yODcsMjYgKzI4NywyNyBAQCB2b2lkICptZW1yZW1hcF9wYWdlcyhz dHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwLCBpbnQgbmlkKQ0KIAkJZ290byBlcnJfYXJyYXk7DQog CX0NCiANCi0JaXNfcmFtID0gcmVnaW9uX2ludGVyc2VjdHMocmVzLT5zdGFydCwgcmVzb3VyY2Vf c2l6ZShyZXMpLA0KKwlpc19yYW0gPSByZWdpb25faW50ZXJzZWN0cyhyYW5nZS0+c3RhcnQsIHJh bmdlX2xlbihyYW5nZSksDQogCQlJT1JFU09VUkNFX1NZU1RFTV9SQU0sIElPUkVTX0RFU0NfTk9O RSk7DQogDQogCWlmIChpc19yYW0gIT0gUkVHSU9OX0RJU0pPSU5UKSB7DQotCQlXQVJOX09OQ0Uo MSwgIiVzIGF0dGVtcHRlZCBvbiAlcyByZWdpb24gJXByXG4iLCBfX2Z1bmNfXywNCi0JCQkJaXNf cmFtID09IFJFR0lPTl9NSVhFRCA/ICJtaXhlZCIgOiAicmFtIiwgcmVzKTsNCisJCVdBUk5fT05D RSgxLCAiYXR0ZW1wdGVkIG9uICVzIHJlZ2lvbiAlI2xseC0lI2xseFxuIiwNCisJCQkJaXNfcmFt ID09IFJFR0lPTl9NSVhFRCA/ICJtaXhlZCIgOiAicmFtIiwNCisJCQkJcmFuZ2UtPnN0YXJ0LCBy YW5nZS0+ZW5kKTsNCiAJCWVycm9yID0gLUVOWElPOw0KIAkJZ290byBlcnJfYXJyYXk7DQogCX0N CiANCi0JZXJyb3IgPSB4YV9lcnIoeGFfc3RvcmVfcmFuZ2UoJnBnbWFwX2FycmF5LCBQSFlTX1BG TihyZXMtPnN0YXJ0KSwNCi0JCQkJUEhZU19QRk4ocmVzLT5lbmQpLCBwZ21hcCwgR0ZQX0tFUk5F TCkpOw0KKwllcnJvciA9IHhhX2Vycih4YV9zdG9yZV9yYW5nZSgmcGdtYXBfYXJyYXksIFBIWVNf UEZOKHJhbmdlLT5zdGFydCksDQorCQkJCVBIWVNfUEZOKHJhbmdlLT5lbmQpLCBwZ21hcCwgR0ZQ X0tFUk5FTCkpOw0KIAlpZiAoZXJyb3IpDQogCQlnb3RvIGVycl9hcnJheTsNCiANCiAJaWYgKG5p ZCA8IDApDQogCQluaWQgPSBudW1hX21lbV9pZCgpOw0KIA0KLQllcnJvciA9IHRyYWNrX3Bmbl9y ZW1hcChOVUxMLCAmcGFyYW1zLnBncHJvdCwgUEhZU19QRk4ocmVzLT5zdGFydCksDQotCQkJCTAs IHJlc291cmNlX3NpemUocmVzKSk7DQorCWVycm9yID0gdHJhY2tfcGZuX3JlbWFwKE5VTEwsICZw YXJhbXMucGdwcm90LCBQSFlTX1BGTihyYW5nZS0+c3RhcnQpLCAwLA0KKwkJCXJhbmdlX2xlbihy YW5nZSkpOw0KIAlpZiAoZXJyb3IpDQogCQlnb3RvIGVycl9wZm5fcmVtYXA7DQogDQpAQCAtMzI0 LDE2ICszMjUsMTYgQEAgdm9pZCAqbWVtcmVtYXBfcGFnZXMoc3RydWN0IGRldl9wYWdlbWFwICpw Z21hcCwgaW50IG5pZCkNCiAJICogYXJjaF9hZGRfbWVtb3J5KCkuDQogCSAqLw0KIAlpZiAocGdt YXAtPnR5cGUgPT0gTUVNT1JZX0RFVklDRV9QUklWQVRFKSB7DQotCQllcnJvciA9IGFkZF9wYWdl cyhuaWQsIFBIWVNfUEZOKHJlcy0+c3RhcnQpLA0KLQkJCQlQSFlTX1BGTihyZXNvdXJjZV9zaXpl KHJlcykpLCAmcGFyYW1zKTsNCisJCWVycm9yID0gYWRkX3BhZ2VzKG5pZCwgUEhZU19QRk4ocmFu Z2UtPnN0YXJ0KSwNCisJCQkJUEhZU19QRk4ocmFuZ2VfbGVuKHJhbmdlKSksICZwYXJhbXMpOw0K IAl9IGVsc2Ugew0KLQkJZXJyb3IgPSBrYXNhbl9hZGRfemVyb19zaGFkb3coX192YShyZXMtPnN0 YXJ0KSwgcmVzb3VyY2Vfc2l6ZShyZXMpKTsNCisJCWVycm9yID0ga2FzYW5fYWRkX3plcm9fc2hh ZG93KF9fdmEocmFuZ2UtPnN0YXJ0KSwgcmFuZ2VfbGVuKHJhbmdlKSk7DQogCQlpZiAoZXJyb3Ip IHsNCiAJCQltZW1faG90cGx1Z19kb25lKCk7DQogCQkJZ290byBlcnJfa2FzYW47DQogCQl9DQog DQotCQllcnJvciA9IGFyY2hfYWRkX21lbW9yeShuaWQsIHJlcy0+c3RhcnQsIHJlc291cmNlX3Np emUocmVzKSwNCisJCWVycm9yID0gYXJjaF9hZGRfbWVtb3J5KG5pZCwgcmFuZ2UtPnN0YXJ0LCBy YW5nZV9sZW4ocmFuZ2UpLA0KIAkJCQkJJnBhcmFtcyk7DQogCX0NCiANCkBAIC0zNDEsOCArMzQy LDggQEAgdm9pZCAqbWVtcmVtYXBfcGFnZXMoc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcCwgaW50 IG5pZCkNCiAJCXN0cnVjdCB6b25lICp6b25lOw0KIA0KIAkJem9uZSA9ICZOT0RFX0RBVEEobmlk KS0+bm9kZV96b25lc1taT05FX0RFVklDRV07DQotCQltb3ZlX3Bmbl9yYW5nZV90b196b25lKHpv bmUsIFBIWVNfUEZOKHJlcy0+c3RhcnQpLA0KLQkJCQlQSFlTX1BGTihyZXNvdXJjZV9zaXplKHJl cykpLCBwYXJhbXMuYWx0bWFwKTsNCisJCW1vdmVfcGZuX3JhbmdlX3RvX3pvbmUoem9uZSwgUEhZ U19QRk4ocmFuZ2UtPnN0YXJ0KSwNCisJCQkJUEhZU19QRk4ocmFuZ2VfbGVuKHJhbmdlKSksIHBh cmFtcy5hbHRtYXApOw0KIAl9DQogDQogCW1lbV9ob3RwbHVnX2RvbmUoKTsNCkBAIC0zNTQsMTcg KzM1NSwxNyBAQCB2b2lkICptZW1yZW1hcF9wYWdlcyhzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFw LCBpbnQgbmlkKQ0KIAkgKiB0byBhbGxvdyB1cyB0byBkbyB0aGUgd29yayB3aGlsZSBub3QgaG9s ZGluZyB0aGUgaG90cGx1ZyBsb2NrLg0KIAkgKi8NCiAJbWVtbWFwX2luaXRfem9uZV9kZXZpY2Uo Jk5PREVfREFUQShuaWQpLT5ub2RlX3pvbmVzW1pPTkVfREVWSUNFXSwNCi0JCQkJUEhZU19QRk4o cmVzLT5zdGFydCksDQotCQkJCVBIWVNfUEZOKHJlc291cmNlX3NpemUocmVzKSksIHBnbWFwKTsN CisJCQkJUEhZU19QRk4ocmFuZ2UtPnN0YXJ0KSwNCisJCQkJUEhZU19QRk4ocmFuZ2VfbGVuKHJh bmdlKSksIHBnbWFwKTsNCiAJcGVyY3B1X3JlZl9nZXRfbWFueShwZ21hcC0+cmVmLCBwZm5fZW5k KHBnbWFwKSAtIHBmbl9maXJzdChwZ21hcCkpOw0KLQlyZXR1cm4gX192YShyZXMtPnN0YXJ0KTsN CisJcmV0dXJuIF9fdmEocmFuZ2UtPnN0YXJ0KTsNCiANCiAgZXJyX2FkZF9tZW1vcnk6DQotCWth c2FuX3JlbW92ZV96ZXJvX3NoYWRvdyhfX3ZhKHJlcy0+c3RhcnQpLCByZXNvdXJjZV9zaXplKHJl cykpOw0KKwlrYXNhbl9yZW1vdmVfemVyb19zaGFkb3coX192YShyYW5nZS0+c3RhcnQpLCByYW5n ZV9sZW4ocmFuZ2UpKTsNCiAgZXJyX2thc2FuOg0KLQl1bnRyYWNrX3BmbihOVUxMLCBQSFlTX1BG TihyZXMtPnN0YXJ0KSwgcmVzb3VyY2Vfc2l6ZShyZXMpKTsNCisJdW50cmFja19wZm4oTlVMTCwg UEhZU19QRk4ocmFuZ2UtPnN0YXJ0KSwgcmFuZ2VfbGVuKHJhbmdlKSk7DQogIGVycl9wZm5fcmVt YXA6DQotCXBnbWFwX2FycmF5X2RlbGV0ZShyZXMpOw0KKwlwZ21hcF9hcnJheV9kZWxldGUocmFu Z2UpOw0KICBlcnJfYXJyYXk6DQogCWRldl9wYWdlbWFwX2tpbGwocGdtYXApOw0KIAlkZXZfcGFn ZW1hcF9jbGVhbnVwKHBnbWFwKTsNCkBAIC0zODksNyArMzkwLDcgQEAgRVhQT1JUX1NZTUJPTF9H UEwobWVtcmVtYXBfcGFnZXMpOw0KICAqICAgICdsaXZlJyBvbiBlbnRyeSBhbmQgd2lsbCBiZSBr aWxsZWQgYW5kIHJlYXBlZCBhdA0KICAqICAgIGRldm1fbWVtcmVtYXBfcGFnZXNfcmVsZWFzZSgp IHRpbWUsIG9yIGlmIHRoaXMgcm91dGluZSBmYWlscy4NCiAgKg0KLSAqIDQvIHJlcyBpcyBleHBl Y3RlZCB0byBiZSBhIGhvc3QgbWVtb3J5IHJhbmdlIHRoYXQgY291bGQgZmVhc2libHkgYmUNCisg KiA0LyByYW5nZSBpcyBleHBlY3RlZCB0byBiZSBhIGhvc3QgbWVtb3J5IHJhbmdlIHRoYXQgY291 bGQgZmVhc2libHkgYmUNCiAgKiAgICB0cmVhdGVkIGFzIGEgIlN5c3RlbSBSQU0iIHJhbmdlLCBp LmUuIG5vdCBhIGRldmljZSBtbWlvIHJhbmdlLCBidXQNCiAgKiAgICB0aGlzIGlzIG5vdCBlbmZv cmNlZC4NCiAgKi8NCkBAIC00NDYsNyArNDQ3LDcgQEAgc3RydWN0IGRldl9wYWdlbWFwICpnZXRf ZGV2X3BhZ2VtYXAodW5zaWduZWQgbG9uZyBwZm4sDQogCSAqIEluIHRoZSBjYWNoZWQgY2FzZSB3 ZSdyZSBhbHJlYWR5IGhvbGRpbmcgYSBsaXZlIHJlZmVyZW5jZS4NCiAJICovDQogCWlmIChwZ21h cCkgew0KLQkJaWYgKHBoeXMgPj0gcGdtYXAtPnJlcy5zdGFydCAmJiBwaHlzIDw9IHBnbWFwLT5y ZXMuZW5kKQ0KKwkJaWYgKHBoeXMgPj0gcGdtYXAtPnJhbmdlLnN0YXJ0ICYmIHBoeXMgPD0gcGdt YXAtPnJhbmdlLmVuZCkNCiAJCQlyZXR1cm4gcGdtYXA7DQogCQlwdXRfZGV2X3BhZ2VtYXAocGdt YXApOw0KIAl9DQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9udmRpbW0vdGVzdC9pb21hcC5j IGIvdG9vbHMvdGVzdGluZy9udmRpbW0vdGVzdC9pb21hcC5jDQppbmRleCAwM2U0MGIzYjAxMDYu LmM2MmQzNzJkNDI2ZiAxMDA2NDQNCi0tLSBhL3Rvb2xzL3Rlc3RpbmcvbnZkaW1tL3Rlc3QvaW9t YXAuYw0KKysrIGIvdG9vbHMvdGVzdGluZy9udmRpbW0vdGVzdC9pb21hcC5jDQpAQCAtMTI2LDcg KzEyNiw3IEBAIHN0YXRpYyB2b2lkIGRldl9wYWdlbWFwX3BlcmNwdV9yZWxlYXNlKHN0cnVjdCBw ZXJjcHVfcmVmICpyZWYpDQogdm9pZCAqX193cmFwX2Rldm1fbWVtcmVtYXBfcGFnZXMoc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKQ0KIHsNCiAJaW50IGVycm9y Ow0KLQlyZXNvdXJjZV9zaXplX3Qgb2Zmc2V0ID0gcGdtYXAtPnJlcy5zdGFydDsNCisJcmVzb3Vy Y2Vfc2l6ZV90IG9mZnNldCA9IHBnbWFwLT5yYW5nZS5zdGFydDsNCiAJc3RydWN0IG5maXRfdGVz dF9yZXNvdXJjZSAqbmZpdF9yZXMgPSBnZXRfbmZpdF9yZXMob2Zmc2V0KTsNCiANCiAJaWYgKCFu Zml0X3JlcykNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkxpbnV4LW52ZGltbSBtYWlsaW5nIGxpc3QgLS0gbGludXgtbnZkaW1tQGxpc3RzLjAxLm9yZwpU byB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIGxpbnV4LW52ZGltbS1sZWF2ZUBsaXN0cy4w MS5vcmcK