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 6A842C4727E for ; Fri, 25 Sep 2020 19:31:01 +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 0D09F235FD for ; Fri, 25 Sep 2020 19:31:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0D09F235FD 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 BEE9E15508B08; Fri, 25 Sep 2020 12:31:00 -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 C83D1154F001A for ; Fri, 25 Sep 2020 12:30:58 -0700 (PDT) IronPort-SDR: XESrr0haLZfTClMtm3bv5XzvXZQmWFuFYZRUAyKYT+6nzGOsXF7DsQaf93KMSIzebwLubepY/b mHvndmH2zxjQ== X-IronPort-AV: E=McAfee;i="6000,8403,9755"; a="149390012" X-IronPort-AV: E=Sophos;i="5.77,303,1596524400"; d="scan'208";a="149390012" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2020 12:30:58 -0700 IronPort-SDR: qVUxDNlbsTk7vNmfcGrrbXO7TPzyjmW4zwrZs1dZaa40PQwDedc851ZRJHDBTd/DAPXaDzhAxw Er/nrjxtftRg== X-IronPort-AV: E=Sophos;i="5.77,303,1596524400"; d="scan'208";a="383610970" Received: from dwillia2-desk3.jf.intel.com (HELO dwillia2-desk3.amr.corp.intel.com) ([10.54.39.16]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2020 12:30:58 -0700 Subject: [PATCH v5 10/17] mm/memremap_pages: convert to 'struct range' From: Dan Williams To: akpm@linux-foundation.org Date: Fri, 25 Sep 2020 12:12:37 -0700 Message-ID: <160106115761.30709.13539840236873663620.stgit@dwillia2-desk3.amr.corp.intel.com> In-Reply-To: <160106109960.30709.7379926726669669398.stgit@dwillia2-desk3.amr.corp.intel.com> References: <160106109960.30709.7379926726669669398.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: DZQE4C5S2HOS2BJ5INICSAUSPKGBGZL2 X-Message-ID-Hash: DZQE4C5S2HOS2BJ5INICSAUSPKGBGZL2 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 , dave.hansen@linux.intel.com, linux-mm@kvack.org, linux-nvdimm@lists.01.org, linux-kernel@vger.kernel.org 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 dEBkd2lsbGlhMi1kZXNrMy5hbXIuY29ycC5pbnRlbC5jb20NCkNjOiBQYXVsIE1hY2tlcnJhcyA8 cGF1bHVzQG96bGFicy5vcmc+DQpDYzogTWljaGFlbCBFbGxlcm1hbiA8bXBlQGVsbGVybWFuLmlk LmF1Pg0KQ2M6IEJlbmphbWluIEhlcnJlbnNjaG1pZHQgPGJlbmhAa2VybmVsLmNyYXNoaW5nLm9y Zz4NCkNjOiBWaXNoYWwgVmVybWEgPHZpc2hhbC5sLnZlcm1hQGludGVsLmNvbT4NCkNjOiBWaXZl ayBHb3lhbCA8dmdveWFsQHJlZGhhdC5jb20+DQpDYzogRGF2ZSBKaWFuZyA8ZGF2ZS5qaWFuZ0Bp bnRlbC5jb20+DQpDYzogQmVuIFNrZWdncyA8YnNrZWdnc0ByZWRoYXQuY29tPg0KQ2M6IERhdmlk IEFpcmxpZSA8YWlybGllZEBsaW51eC5pZT4NCkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3 bGwuY2g+DQpDYzogSXJhIFdlaW55IDxpcmEud2VpbnlAaW50ZWwuY29tPg0KQ2M6IEJqb3JuIEhl bGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+DQpDYzogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5v c3Ryb3Zza3lAb3JhY2xlLmNvbT4NCkNjOiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+ DQpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPg0KQ2M6ICJK w6lyw7RtZSBHbGlzc2UiIDxqZ2xpc3NlQHJlZGhhdC5jb20+DQpDYzogQW5kcmV3IE1vcnRvbiA8 YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4NClNpZ25lZC1vZmYtYnk6IERhbiBXaWxsaWFtcyA8 ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPg0KLS0tDQogYXJjaC9wb3dlcnBjL2t2bS9ib29rM3Nf aHZfdXZtZW0uYyAgICAgfCAgIDEzICsrKy0tDQogZHJpdmVycy9kYXgvYnVzLmMgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEwICsrLS0NCiBkcml2ZXJzL2RheC9idXMuaCAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDIgLQ0KIGRyaXZlcnMvZGF4L2RheC1wcml2YXRlLmggICAgICAgICAgICAg IHwgICAgNSAtLQ0KIGRyaXZlcnMvZGF4L2RldmljZS5jICAgICAgICAgICAgICAgICAgIHwgICAg MyAtDQogZHJpdmVycy9kYXgvaG1lbS9obWVtLmMgICAgICAgICAgICAgICAgfCAgICA1ICsrDQog ZHJpdmVycy9kYXgvcG1lbS9jb3JlLmMgICAgICAgICAgICAgICAgfCAgIDEyICsrLS0tDQogZHJp dmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMgfCAgIDE0ICsrKy0tLQ0KIGRyaXZl cnMvbnZkaW1tL2JhZHJhbmdlLmMgICAgICAgICAgICAgIHwgICAyNiArKysrKy0tLS0tLQ0KIGRy aXZlcnMvbnZkaW1tL2NsYWltLmMgICAgICAgICAgICAgICAgIHwgICAxMyArKystLQ0KIGRyaXZl cnMvbnZkaW1tL25kLmggICAgICAgICAgICAgICAgICAgIHwgICAgMyArDQogZHJpdmVycy9udmRp bW0vcGZuX2RldnMuYyAgICAgICAgICAgICAgfCAgIDEyICsrLS0tDQogZHJpdmVycy9udmRpbW0v cG1lbS5jICAgICAgICAgICAgICAgICAgfCAgIDI2ICsrKysrKy0tLS0tDQogZHJpdmVycy9udmRp bW0vcmVnaW9uLmMgICAgICAgICAgICAgICAgfCAgIDIxICsrKysrLS0tLQ0KIGRyaXZlcnMvcGNp L3AycGRtYS5jICAgICAgICAgICAgICAgICAgIHwgICAxMSArKy0tLQ0KIGRyaXZlcnMveGVuL3Vu cG9wdWxhdGVkLWFsbG9jLmMgICAgICAgIHwgICA0NCArKysrKysrKysrKystLS0tLS0NCiBpbmNs dWRlL2xpbnV4L21lbXJlbWFwLmggICAgICAgICAgICAgICB8ICAgIDUgKy0NCiBpbmNsdWRlL2xp bnV4L3JhbmdlLmggICAgICAgICAgICAgICAgICB8ICAgIDYgKysNCiBsaWIvdGVzdF9obW0uYyAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTQgKysrLS0tDQogbW0vbWVtcmVtYXAuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDc3ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tDQogdG9vbHMvdGVzdGluZy9udmRpbW0vdGVzdC9pb21hcC5jICAgICAgfCAgICAyIC0NCiAy MSBmaWxlcyBjaGFuZ2VkLCAxNzcgaW5zZXJ0aW9ucygrKSwgMTQ3IGRlbGV0aW9ucygtKQ0KDQpk aWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYyBiL2FyY2gvcG93 ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMNCmluZGV4IDc3MDVkNTU1NzIzOS4uMjllYzU1NTA1 NWMyIDEwMDY0NA0KLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYw0KKysr IGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYw0KQEAgLTY4Nyw5ICs2ODcsOSBA QCBzdGF0aWMgc3RydWN0IHBhZ2UgKmt2bXBwY191dm1lbV9nZXRfcGFnZSh1bnNpZ25lZCBsb25n IGdwYSwgc3RydWN0IGt2bSAqa3ZtKQ0KIAlzdHJ1Y3Qga3ZtcHBjX3V2bWVtX3BhZ2VfcHZ0ICpw dnQ7DQogCXVuc2lnbmVkIGxvbmcgcGZuX2xhc3QsIHBmbl9maXJzdDsNCiANCi0JcGZuX2ZpcnN0 ID0ga3ZtcHBjX3V2bWVtX3BnbWFwLnJlcy5zdGFydCA+PiBQQUdFX1NISUZUOw0KKwlwZm5fZmly c3QgPSBrdm1wcGNfdXZtZW1fcGdtYXAucmFuZ2Uuc3RhcnQgPj4gUEFHRV9TSElGVDsNCiAJcGZu X2xhc3QgPSBwZm5fZmlyc3QgKw0KLQkJICAgKHJlc291cmNlX3NpemUoJmt2bXBwY191dm1lbV9w Z21hcC5yZXMpID4+IFBBR0VfU0hJRlQpOw0KKwkJICAgKHJhbmdlX2xlbigma3ZtcHBjX3V2bWVt X3BnbWFwLnJhbmdlKSA+PiBQQUdFX1NISUZUKTsNCiANCiAJc3Bpbl9sb2NrKCZrdm1wcGNfdXZt ZW1fYml0bWFwX2xvY2spOw0KIAliaXQgPSBmaW5kX2ZpcnN0X3plcm9fYml0KGt2bXBwY191dm1l bV9iaXRtYXAsDQpAQCAtMTAwNyw3ICsxMDA3LDcgQEAgc3RhdGljIHZtX2ZhdWx0X3Qga3ZtcHBj X3V2bWVtX21pZ3JhdGVfdG9fcmFtKHN0cnVjdCB2bV9mYXVsdCAqdm1mKQ0KIHN0YXRpYyB2b2lk IGt2bXBwY191dm1lbV9wYWdlX2ZyZWUoc3RydWN0IHBhZ2UgKnBhZ2UpDQogew0KIAl1bnNpZ25l ZCBsb25nIHBmbiA9IHBhZ2VfdG9fcGZuKHBhZ2UpIC0NCi0JCQkoa3ZtcHBjX3V2bWVtX3BnbWFw LnJlcy5zdGFydCA+PiBQQUdFX1NISUZUKTsNCisJCQkoa3ZtcHBjX3V2bWVtX3BnbWFwLnJhbmdl LnN0YXJ0ID4+IFBBR0VfU0hJRlQpOw0KIAlzdHJ1Y3Qga3ZtcHBjX3V2bWVtX3BhZ2VfcHZ0ICpw dnQ7DQogDQogCXNwaW5fbG9jaygma3ZtcHBjX3V2bWVtX2JpdG1hcF9sb2NrKTsNCkBAIC0xMTcw LDcgKzExNzAsOCBAQCBpbnQga3ZtcHBjX3V2bWVtX2luaXQodm9pZCkNCiAJfQ0KIA0KIAlrdm1w cGNfdXZtZW1fcGdtYXAudHlwZSA9IE1FTU9SWV9ERVZJQ0VfUFJJVkFURTsNCi0Ja3ZtcHBjX3V2 bWVtX3BnbWFwLnJlcyA9ICpyZXM7DQorCWt2bXBwY191dm1lbV9wZ21hcC5yYW5nZS5zdGFydCA9 IHJlcy0+c3RhcnQ7DQorCWt2bXBwY191dm1lbV9wZ21hcC5yYW5nZS5lbmQgPSByZXMtPmVuZDsN CiAJa3ZtcHBjX3V2bWVtX3BnbWFwLm9wcyA9ICZrdm1wcGNfdXZtZW1fb3BzOw0KIAkvKiBqdXN0 IG9uZSBnbG9iYWwgaW5zdGFuY2U6ICovDQogCWt2bXBwY191dm1lbV9wZ21hcC5vd25lciA9ICZr dm1wcGNfdXZtZW1fcGdtYXA7DQpAQCAtMTIwNSw3ICsxMjA2LDcgQEAgdm9pZCBrdm1wcGNfdXZt ZW1fZnJlZSh2b2lkKQ0KIAkJcmV0dXJuOw0KIA0KIAltZW11bm1hcF9wYWdlcygma3ZtcHBjX3V2 bWVtX3BnbWFwKTsNCi0JcmVsZWFzZV9tZW1fcmVnaW9uKGt2bXBwY191dm1lbV9wZ21hcC5yZXMu c3RhcnQsDQotCQkJICAgcmVzb3VyY2Vfc2l6ZSgma3ZtcHBjX3V2bWVtX3BnbWFwLnJlcykpOw0K KwlyZWxlYXNlX21lbV9yZWdpb24oa3ZtcHBjX3V2bWVtX3BnbWFwLnJhbmdlLnN0YXJ0LA0KKwkJ CSAgIHJhbmdlX2xlbigma3ZtcHBjX3V2bWVtX3BnbWFwLnJhbmdlKSk7DQogCWtmcmVlKGt2bXBw Y191dm1lbV9iaXRtYXApOw0KIH0NCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RheC9idXMuYyBiL2Ry aXZlcnMvZGF4L2J1cy5jDQppbmRleCA1M2QwN2YyZjEyODUuLjAwZmE3M2E4ZGZiNCAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvZGF4L2J1cy5jDQorKysgYi9kcml2ZXJzL2RheC9idXMuYw0KQEAgLTUx NSw3ICs1MTUsNyBAQCBzdGF0aWMgdm9pZCBkYXhfcmVnaW9uX3VucmVnaXN0ZXIodm9pZCAqcmVn aW9uKQ0KIH0NCiANCiBzdHJ1Y3QgZGF4X3JlZ2lvbiAqYWxsb2NfZGF4X3JlZ2lvbihzdHJ1Y3Qg ZGV2aWNlICpwYXJlbnQsIGludCByZWdpb25faWQsDQotCQlzdHJ1Y3QgcmVzb3VyY2UgKnJlcywg aW50IHRhcmdldF9ub2RlLCB1bnNpZ25lZCBpbnQgYWxpZ24sDQorCQlzdHJ1Y3QgcmFuZ2UgKnJh bmdlLCBpbnQgdGFyZ2V0X25vZGUsIHVuc2lnbmVkIGludCBhbGlnbiwNCiAJCXVuc2lnbmVkIGxv bmcgZmxhZ3MpDQogew0KIAlzdHJ1Y3QgZGF4X3JlZ2lvbiAqZGF4X3JlZ2lvbjsNCkBAIC01MzAs OCArNTMwLDggQEAgc3RydWN0IGRheF9yZWdpb24gKmFsbG9jX2RheF9yZWdpb24oc3RydWN0IGRl dmljZSAqcGFyZW50LCBpbnQgcmVnaW9uX2lkLA0KIAkJcmV0dXJuIE5VTEw7DQogCX0NCiANCi0J aWYgKCFJU19BTElHTkVEKHJlcy0+c3RhcnQsIGFsaWduKQ0KLQkJCXx8ICFJU19BTElHTkVEKHJl c291cmNlX3NpemUocmVzKSwgYWxpZ24pKQ0KKwlpZiAoIUlTX0FMSUdORUQocmFuZ2UtPnN0YXJ0 LCBhbGlnbikNCisJCQl8fCAhSVNfQUxJR05FRChyYW5nZV9sZW4ocmFuZ2UpLCBhbGlnbikpDQog CQlyZXR1cm4gTlVMTDsNCiANCiAJZGF4X3JlZ2lvbiA9IGt6YWxsb2Moc2l6ZW9mKCpkYXhfcmVn aW9uKSwgR0ZQX0tFUk5FTCk7DQpAQCAtNTQ2LDggKzU0Niw4IEBAIHN0cnVjdCBkYXhfcmVnaW9u ICphbGxvY19kYXhfcmVnaW9uKHN0cnVjdCBkZXZpY2UgKnBhcmVudCwgaW50IHJlZ2lvbl9pZCwN CiAJZGF4X3JlZ2lvbi0+dGFyZ2V0X25vZGUgPSB0YXJnZXRfbm9kZTsNCiAJaWRhX2luaXQoJmRh eF9yZWdpb24tPmlkYSk7DQogCWRheF9yZWdpb24tPnJlcyA9IChzdHJ1Y3QgcmVzb3VyY2UpIHsN Ci0JCS5zdGFydCA9IHJlcy0+c3RhcnQsDQotCQkuZW5kID0gcmVzLT5lbmQsDQorCQkuc3RhcnQg PSByYW5nZS0+c3RhcnQsDQorCQkuZW5kID0gcmFuZ2UtPmVuZCwNCiAJCS5mbGFncyA9IElPUkVT T1VSQ0VfTUVNIHwgZmxhZ3MsDQogCX07DQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kYXgvYnVz LmggYi9kcml2ZXJzL2RheC9idXMuaA0KaW5kZXggZGEyN2VhNzBhMTlhLi43MmI5MmY5NTUwOWYg MTAwNjQ0DQotLS0gYS9kcml2ZXJzL2RheC9idXMuaA0KKysrIGIvZHJpdmVycy9kYXgvYnVzLmgN CkBAIC0xMyw3ICsxMyw3IEBAIHZvaWQgZGF4X3JlZ2lvbl9wdXQoc3RydWN0IGRheF9yZWdpb24g KmRheF9yZWdpb24pOw0KIA0KICNkZWZpbmUgSU9SRVNPVVJDRV9EQVhfU1RBVElDICgxVUwgPDwg MCkNCiBzdHJ1Y3QgZGF4X3JlZ2lvbiAqYWxsb2NfZGF4X3JlZ2lvbihzdHJ1Y3QgZGV2aWNlICpw YXJlbnQsIGludCByZWdpb25faWQsDQotCQlzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgaW50IHRhcmdl dF9ub2RlLCB1bnNpZ25lZCBpbnQgYWxpZ24sDQorCQlzdHJ1Y3QgcmFuZ2UgKnJhbmdlLCBpbnQg dGFyZ2V0X25vZGUsIHVuc2lnbmVkIGludCBhbGlnbiwNCiAJCXVuc2lnbmVkIGxvbmcgZmxhZ3Mp Ow0KIA0KIGVudW0gZGV2X2RheF9zdWJzeXMgew0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZGF4L2Rh eC1wcml2YXRlLmggYi9kcml2ZXJzL2RheC9kYXgtcHJpdmF0ZS5oDQppbmRleCBiODFhMTQ5NGQ4 MmIuLjBjYmIyZWM4MWNhNyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZGF4L2RheC1wcml2YXRlLmgN CisrKyBiL2RyaXZlcnMvZGF4L2RheC1wcml2YXRlLmgNCkBAIC02MSwxMSArNjEsNiBAQCBzdHJ1 Y3QgZGV2X2RheCB7DQogCXN0cnVjdCByYW5nZSByYW5nZTsNCiB9Ow0KIA0KLXN0YXRpYyBpbmxp bmUgdTY0IHJhbmdlX2xlbihzdHJ1Y3QgcmFuZ2UgKnJhbmdlKQ0KLXsNCi0JcmV0dXJuIHJhbmdl LT5lbmQgLSByYW5nZS0+c3RhcnQgKyAxOw0KLX0NCi0NCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBk ZXZfZGF4ICp0b19kZXZfZGF4KHN0cnVjdCBkZXZpY2UgKmRldikNCiB7DQogCXJldHVybiBjb250 YWluZXJfb2YoZGV2LCBzdHJ1Y3QgZGV2X2RheCwgZGV2KTsNCmRpZmYgLS1naXQgYS9kcml2ZXJz L2RheC9kZXZpY2UuYyBiL2RyaXZlcnMvZGF4L2RldmljZS5jDQppbmRleCA5ODMzZmE4M2I1Mzcu LmExNDQ0OGJjYTgzZCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZGF4L2RldmljZS5jDQorKysgYi9k cml2ZXJzL2RheC9kZXZpY2UuYw0KQEAgLTQxNiw4ICs0MTYsNyBAQCBpbnQgZGV2X2RheF9wcm9i ZShzdHJ1Y3QgZGV2X2RheCAqZGV2X2RheCkNCiAJCXBnbWFwID0gZGV2bV9remFsbG9jKGRldiwg c2l6ZW9mKCpwZ21hcCksIEdGUF9LRVJORUwpOw0KIAkJaWYgKCFwZ21hcCkNCiAJCQlyZXR1cm4g LUVOT01FTTsNCi0JCXBnbWFwLT5yZXMuc3RhcnQgPSByYW5nZS0+c3RhcnQ7DQotCQlwZ21hcC0+ cmVzLmVuZCA9IHJhbmdlLT5lbmQ7DQorCQlwZ21hcC0+cmFuZ2UgPSAqcmFuZ2U7DQogCX0NCiAJ cGdtYXAtPnR5cGUgPSBNRU1PUllfREVWSUNFX0dFTkVSSUM7DQogCWFkZHIgPSBkZXZtX21lbXJl bWFwX3BhZ2VzKGRldiwgcGdtYXApOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZGF4L2htZW0vaG1l bS5jIGIvZHJpdmVycy9kYXgvaG1lbS9obWVtLmMNCmluZGV4IGFhMjYwMDA5ZGZjNy4uMWEzMzQ3 YmI2MTQzIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9kYXgvaG1lbS9obWVtLmMNCisrKyBiL2RyaXZl cnMvZGF4L2htZW0vaG1lbS5jDQpAQCAtMTMsMTMgKzEzLDE2IEBAIHN0YXRpYyBpbnQgZGF4X2ht ZW1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCiAJc3RydWN0IGRldl9kYXhf ZGF0YSBkYXRhOw0KIAlzdHJ1Y3QgZGV2X2RheCAqZGV2X2RheDsNCiAJc3RydWN0IHJlc291cmNl ICpyZXM7DQorCXN0cnVjdCByYW5nZSByYW5nZTsNCiANCiAJcmVzID0gcGxhdGZvcm1fZ2V0X3Jl c291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsNCiAJaWYgKCFyZXMpDQogCQlyZXR1cm4g LUVOT01FTTsNCiANCiAJbXJpID0gZGV2LT5wbGF0Zm9ybV9kYXRhOw0KLQlkYXhfcmVnaW9uID0g YWxsb2NfZGF4X3JlZ2lvbihkZXYsIHBkZXYtPmlkLCByZXMsIG1yaS0+dGFyZ2V0X25vZGUsDQor CXJhbmdlLnN0YXJ0ID0gcmVzLT5zdGFydDsNCisJcmFuZ2UuZW5kID0gcmVzLT5lbmQ7DQorCWRh eF9yZWdpb24gPSBhbGxvY19kYXhfcmVnaW9uKGRldiwgcGRldi0+aWQsICZyYW5nZSwgbXJpLT50 YXJnZXRfbm9kZSwNCiAJCQlQTURfU0laRSwgMCk7DQogCWlmICghZGF4X3JlZ2lvbikNCiAJCXJl dHVybiAtRU5PTUVNOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZGF4L3BtZW0vY29yZS5jIGIvZHJp dmVycy9kYXgvcG1lbS9jb3JlLmMNCmluZGV4IDRmZTcwMDg4NDMzOC4uNjJiMjZiZmNlYWIxIDEw MDY0NA0KLS0tIGEvZHJpdmVycy9kYXgvcG1lbS9jb3JlLmMNCisrKyBiL2RyaXZlcnMvZGF4L3Bt ZW0vY29yZS5jDQpAQCAtOSw3ICs5LDcgQEANCiANCiBzdHJ1Y3QgZGV2X2RheCAqX19kYXhfcG1l bV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGVudW0gZGV2X2RheF9zdWJzeXMgc3Vic3lzKQ0K IHsNCi0Jc3RydWN0IHJlc291cmNlIHJlczsNCisJc3RydWN0IHJhbmdlIHJhbmdlOw0KIAlpbnQg cmMsIGlkLCByZWdpb25faWQ7DQogCXJlc291cmNlX3NpemVfdCBvZmZzZXQ7DQogCXN0cnVjdCBu ZF9wZm5fc2IgKnBmbl9zYjsNCkBAIC01MCwxMCArNTAsMTAgQEAgc3RydWN0IGRldl9kYXggKl9f ZGF4X3BtZW1fcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBlbnVtIGRldl9kYXhfc3Vic3lzIHN1 YnN5cykNCiAJaWYgKHJjICE9IDIpDQogCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsNCiANCi0J LyogYWRqdXN0IHRoZSBkYXhfcmVnaW9uIHJlc291cmNlIHRvIHRoZSBzdGFydCBvZiBkYXRhICov DQotCW1lbWNweSgmcmVzLCAmcGdtYXAucmVzLCBzaXplb2YocmVzKSk7DQotCXJlcy5zdGFydCAr PSBvZmZzZXQ7DQotCWRheF9yZWdpb24gPSBhbGxvY19kYXhfcmVnaW9uKGRldiwgcmVnaW9uX2lk LCAmcmVzLA0KKwkvKiBhZGp1c3QgdGhlIGRheF9yZWdpb24gcmFuZ2UgdG8gdGhlIHN0YXJ0IG9m IGRhdGEgKi8NCisJcmFuZ2UgPSBwZ21hcC5yYW5nZTsNCisJcmFuZ2Uuc3RhcnQgKz0gb2Zmc2V0 LA0KKwlkYXhfcmVnaW9uID0gYWxsb2NfZGF4X3JlZ2lvbihkZXYsIHJlZ2lvbl9pZCwgJnJhbmdl LA0KIAkJCW5kX3JlZ2lvbi0+dGFyZ2V0X25vZGUsIGxlMzJfdG9fY3B1KHBmbl9zYi0+YWxpZ24p LA0KIAkJCUlPUkVTT1VSQ0VfREFYX1NUQVRJQyk7DQogCWlmICghZGF4X3JlZ2lvbikNCkBAIC02 NCw3ICs2NCw3IEBAIHN0cnVjdCBkZXZfZGF4ICpfX2RheF9wbWVtX3Byb2JlKHN0cnVjdCBkZXZp Y2UgKmRldiwgZW51bSBkZXZfZGF4X3N1YnN5cyBzdWJzeXMpDQogCQkuaWQgPSBpZCwNCiAJCS5w Z21hcCA9ICZwZ21hcCwNCiAJCS5zdWJzeXMgPSBzdWJzeXMsDQotCQkuc2l6ZSA9IHJlc291cmNl X3NpemUoJnJlcyksDQorCQkuc2l6ZSA9IHJhbmdlX2xlbigmcmFuZ2UpLA0KIAl9Ow0KIAlkZXZf ZGF4ID0gZGV2bV9jcmVhdGVfZGV2X2RheCgmZGF0YSk7DQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVh dS9ub3V2ZWF1X2RtZW0uYw0KaW5kZXggNGU4MTEyZmRlM2U2Li4yNTgxMWVkN2UyNzQgMTAwNjQ0 DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYw0KKysrIGIvZHJp dmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMNCkBAIC0xMDEsNyArMTAxLDcgQEAg dW5zaWduZWQgbG9uZyBub3V2ZWF1X2RtZW1fcGFnZV9hZGRyKHN0cnVjdCBwYWdlICpwYWdlKQ0K IHsNCiAJc3RydWN0IG5vdXZlYXVfZG1lbV9jaHVuayAqY2h1bmsgPSBub3V2ZWF1X3BhZ2VfdG9f Y2h1bmsocGFnZSk7DQogCXVuc2lnbmVkIGxvbmcgb2ZmID0gKHBhZ2VfdG9fcGZuKHBhZ2UpIDw8 IFBBR0VfU0hJRlQpIC0NCi0JCQkJY2h1bmstPnBhZ2VtYXAucmVzLnN0YXJ0Ow0KKwkJCQljaHVu ay0+cGFnZW1hcC5yYW5nZS5zdGFydDsNCiANCiAJcmV0dXJuIGNodW5rLT5iby0+b2Zmc2V0ICsg b2ZmOw0KIH0NCkBAIC0yNDksNyArMjQ5LDggQEAgbm91dmVhdV9kbWVtX2NodW5rX2FsbG9jKHN0 cnVjdCBub3V2ZWF1X2RybSAqZHJtLCBzdHJ1Y3QgcGFnZSAqKnBwYWdlKQ0KIA0KIAljaHVuay0+ ZHJtID0gZHJtOw0KIAljaHVuay0+cGFnZW1hcC50eXBlID0gTUVNT1JZX0RFVklDRV9QUklWQVRF Ow0KLQljaHVuay0+cGFnZW1hcC5yZXMgPSAqcmVzOw0KKwljaHVuay0+cGFnZW1hcC5yYW5nZS5z dGFydCA9IHJlcy0+c3RhcnQ7DQorCWNodW5rLT5wYWdlbWFwLnJhbmdlLmVuZCA9IHJlcy0+ZW5k Ow0KIAljaHVuay0+cGFnZW1hcC5vcHMgPSAmbm91dmVhdV9kbWVtX3BhZ2VtYXBfb3BzOw0KIAlj aHVuay0+cGFnZW1hcC5vd25lciA9IGRybS0+ZGV2Ow0KIA0KQEAgLTI3Myw3ICsyNzQsNyBAQCBu b3V2ZWF1X2RtZW1fY2h1bmtfYWxsb2Moc3RydWN0IG5vdXZlYXVfZHJtICpkcm0sIHN0cnVjdCBw YWdlICoqcHBhZ2UpDQogCWxpc3RfYWRkKCZjaHVuay0+bGlzdCwgJmRybS0+ZG1lbS0+Y2h1bmtz KTsNCiAJbXV0ZXhfdW5sb2NrKCZkcm0tPmRtZW0tPm11dGV4KTsNCiANCi0JcGZuX2ZpcnN0ID0g Y2h1bmstPnBhZ2VtYXAucmVzLnN0YXJ0ID4+IFBBR0VfU0hJRlQ7DQorCXBmbl9maXJzdCA9IGNo dW5rLT5wYWdlbWFwLnJhbmdlLnN0YXJ0ID4+IFBBR0VfU0hJRlQ7DQogCXBhZ2UgPSBwZm5fdG9f cGFnZShwZm5fZmlyc3QpOw0KIAlzcGluX2xvY2soJmRybS0+ZG1lbS0+bG9jayk7DQogCWZvciAo aSA9IDA7IGkgPCBETUVNX0NIVU5LX05QQUdFUyAtIDE7ICsraSwgKytwYWdlKSB7DQpAQCAtMjk0 LDggKzI5NSw3IEBAIG5vdXZlYXVfZG1lbV9jaHVua19hbGxvYyhzdHJ1Y3Qgbm91dmVhdV9kcm0g KmRybSwgc3RydWN0IHBhZ2UgKipwcGFnZSkNCiBvdXRfYm9fZnJlZToNCiAJbm91dmVhdV9ib19y ZWYoTlVMTCwgJmNodW5rLT5ibyk7DQogb3V0X3JlbGVhc2U6DQotCXJlbGVhc2VfbWVtX3JlZ2lv bihjaHVuay0+cGFnZW1hcC5yZXMuc3RhcnQsDQotCQkJICAgcmVzb3VyY2Vfc2l6ZSgmY2h1bmst PnBhZ2VtYXAucmVzKSk7DQorCXJlbGVhc2VfbWVtX3JlZ2lvbihjaHVuay0+cGFnZW1hcC5yYW5n ZS5zdGFydCwgcmFuZ2VfbGVuKCZjaHVuay0+cGFnZW1hcC5yYW5nZSkpOw0KIG91dF9mcmVlOg0K IAlrZnJlZShjaHVuayk7DQogb3V0Og0KQEAgLTM4Miw4ICszODIsOCBAQCBub3V2ZWF1X2RtZW1f ZmluaShzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSkNCiAJCW5vdXZlYXVfYm9fcmVmKE5VTEwsICZj aHVuay0+Ym8pOw0KIAkJbGlzdF9kZWwoJmNodW5rLT5saXN0KTsNCiAJCW1lbXVubWFwX3BhZ2Vz KCZjaHVuay0+cGFnZW1hcCk7DQotCQlyZWxlYXNlX21lbV9yZWdpb24oY2h1bmstPnBhZ2VtYXAu cmVzLnN0YXJ0LA0KLQkJCQkgICByZXNvdXJjZV9zaXplKCZjaHVuay0+cGFnZW1hcC5yZXMpKTsN CisJCXJlbGVhc2VfbWVtX3JlZ2lvbihjaHVuay0+cGFnZW1hcC5yYW5nZS5zdGFydCwNCisJCQkJ ICAgcmFuZ2VfbGVuKCZjaHVuay0+cGFnZW1hcC5yYW5nZSkpOw0KIAkJa2ZyZWUoY2h1bmspOw0K IAl9DQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udmRpbW0vYmFkcmFuZ2UuYyBiL2RyaXZlcnMv bnZkaW1tL2JhZHJhbmdlLmMNCmluZGV4IGI5ZWVlZmEyN2UzYS4uYWFmNmUyMTVhOGM2IDEwMDY0 NA0KLS0tIGEvZHJpdmVycy9udmRpbW0vYmFkcmFuZ2UuYw0KKysrIGIvZHJpdmVycy9udmRpbW0v YmFkcmFuZ2UuYw0KQEAgLTIxMSw3ICsyMTEsNyBAQCBzdGF0aWMgdm9pZCBfX2FkZF9iYWRibG9j a19yYW5nZShzdHJ1Y3QgYmFkYmxvY2tzICpiYiwgdTY0IG5zX29mZnNldCwgdTY0IGxlbikNCiB9 DQogDQogc3RhdGljIHZvaWQgYmFkYmxvY2tzX3BvcHVsYXRlKHN0cnVjdCBiYWRyYW5nZSAqYmFk cmFuZ2UsDQotCQlzdHJ1Y3QgYmFkYmxvY2tzICpiYiwgY29uc3Qgc3RydWN0IHJlc291cmNlICpy ZXMpDQorCQlzdHJ1Y3QgYmFkYmxvY2tzICpiYiwgY29uc3Qgc3RydWN0IHJhbmdlICpyYW5nZSkN CiB7DQogCXN0cnVjdCBiYWRyYW5nZV9lbnRyeSAqYnJlOw0KIA0KQEAgLTIyMiwzNCArMjIyLDM0 IEBAIHN0YXRpYyB2b2lkIGJhZGJsb2Nrc19wb3B1bGF0ZShzdHJ1Y3QgYmFkcmFuZ2UgKmJhZHJh bmdlLA0KIAkJdTY0IGJyZV9lbmQgPSBicmUtPnN0YXJ0ICsgYnJlLT5sZW5ndGggLSAxOw0KIA0K IAkJLyogRGlzY2FyZCBpbnRlcnZhbHMgd2l0aCBubyBpbnRlcnNlY3Rpb24gKi8NCi0JCWlmIChi cmVfZW5kIDwgcmVzLT5zdGFydCkNCisJCWlmIChicmVfZW5kIDwgcmFuZ2UtPnN0YXJ0KQ0KIAkJ CWNvbnRpbnVlOw0KLQkJaWYgKGJyZS0+c3RhcnQgPiAgcmVzLT5lbmQpDQorCQlpZiAoYnJlLT5z dGFydCA+IHJhbmdlLT5lbmQpDQogCQkJY29udGludWU7DQogCQkvKiBEZWFsIHdpdGggYW55IG92 ZXJsYXAgYWZ0ZXIgc3RhcnQgb2YgdGhlIG5hbWVzcGFjZSAqLw0KLQkJaWYgKGJyZS0+c3RhcnQg Pj0gcmVzLT5zdGFydCkgew0KKwkJaWYgKGJyZS0+c3RhcnQgPj0gcmFuZ2UtPnN0YXJ0KSB7DQog CQkJdTY0IHN0YXJ0ID0gYnJlLT5zdGFydDsNCiAJCQl1NjQgbGVuOw0KIA0KLQkJCWlmIChicmVf ZW5kIDw9IHJlcy0+ZW5kKQ0KKwkJCWlmIChicmVfZW5kIDw9IHJhbmdlLT5lbmQpDQogCQkJCWxl biA9IGJyZS0+bGVuZ3RoOw0KIAkJCWVsc2UNCi0JCQkJbGVuID0gcmVzLT5zdGFydCArIHJlc291 cmNlX3NpemUocmVzKQ0KKwkJCQlsZW4gPSByYW5nZS0+c3RhcnQgKyByYW5nZV9sZW4ocmFuZ2Up DQogCQkJCQktIGJyZS0+c3RhcnQ7DQotCQkJX19hZGRfYmFkYmxvY2tfcmFuZ2UoYmIsIHN0YXJ0 IC0gcmVzLT5zdGFydCwgbGVuKTsNCisJCQlfX2FkZF9iYWRibG9ja19yYW5nZShiYiwgc3RhcnQg LSByYW5nZS0+c3RhcnQsIGxlbik7DQogCQkJY29udGludWU7DQogCQl9DQogCQkvKg0KIAkJICog RGVhbCB3aXRoIG92ZXJsYXAgZm9yIGJhZHJhbmdlIHN0YXJ0aW5nIGJlZm9yZQ0KIAkJICogdGhl IG5hbWVzcGFjZS4NCiAJCSAqLw0KLQkJaWYgKGJyZS0+c3RhcnQgPCByZXMtPnN0YXJ0KSB7DQor CQlpZiAoYnJlLT5zdGFydCA8IHJhbmdlLT5zdGFydCkgew0KIAkJCXU2NCBsZW47DQogDQotCQkJ aWYgKGJyZV9lbmQgPCByZXMtPmVuZCkNCi0JCQkJbGVuID0gYnJlLT5zdGFydCArIGJyZS0+bGVu Z3RoIC0gcmVzLT5zdGFydDsNCisJCQlpZiAoYnJlX2VuZCA8IHJhbmdlLT5lbmQpDQorCQkJCWxl biA9IGJyZS0+c3RhcnQgKyBicmUtPmxlbmd0aCAtIHJhbmdlLT5zdGFydDsNCiAJCQllbHNlDQot CQkJCWxlbiA9IHJlc291cmNlX3NpemUocmVzKTsNCisJCQkJbGVuID0gcmFuZ2VfbGVuKHJhbmdl KTsNCiAJCQlfX2FkZF9iYWRibG9ja19yYW5nZShiYiwgMCwgbGVuKTsNCiAJCX0NCiAJfQ0KQEAg LTI2Nyw3ICsyNjcsNyBAQCBzdGF0aWMgdm9pZCBiYWRibG9ja3NfcG9wdWxhdGUoc3RydWN0IGJh ZHJhbmdlICpiYWRyYW5nZSwNCiAgKiBhbmQgYWRkIGJhZGJsb2NrcyBlbnRyaWVzIGZvciBhbGwg bWF0Y2hpbmcgc3ViLXJhbmdlcw0KICAqLw0KIHZvaWQgbnZkaW1tX2JhZGJsb2Nrc19wb3B1bGF0 ZShzdHJ1Y3QgbmRfcmVnaW9uICpuZF9yZWdpb24sDQotCQlzdHJ1Y3QgYmFkYmxvY2tzICpiYiwg Y29uc3Qgc3RydWN0IHJlc291cmNlICpyZXMpDQorCQlzdHJ1Y3QgYmFkYmxvY2tzICpiYiwgY29u c3Qgc3RydWN0IHJhbmdlICpyYW5nZSkNCiB7DQogCXN0cnVjdCBudmRpbW1fYnVzICpudmRpbW1f YnVzOw0KIA0KQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIG52ZGltbV9iYWRibG9ja3NfcG9wdWxh dGUoc3RydWN0IG5kX3JlZ2lvbiAqbmRfcmVnaW9uLA0KIAludmRpbW1fYnVzID0gd2Fsa190b19u dmRpbW1fYnVzKCZuZF9yZWdpb24tPmRldik7DQogDQogCW52ZGltbV9idXNfbG9jaygmbnZkaW1t X2J1cy0+ZGV2KTsNCi0JYmFkYmxvY2tzX3BvcHVsYXRlKCZudmRpbW1fYnVzLT5iYWRyYW5nZSwg YmIsIHJlcyk7DQorCWJhZGJsb2Nrc19wb3B1bGF0ZSgmbnZkaW1tX2J1cy0+YmFkcmFuZ2UsIGJi LCByYW5nZSk7DQogCW52ZGltbV9idXNfdW5sb2NrKCZudmRpbW1fYnVzLT5kZXYpOw0KIH0NCiBF WFBPUlRfU1lNQk9MX0dQTChudmRpbW1fYmFkYmxvY2tzX3BvcHVsYXRlKTsNCmRpZmYgLS1naXQg YS9kcml2ZXJzL252ZGltbS9jbGFpbS5jIGIvZHJpdmVycy9udmRpbW0vY2xhaW0uYw0KaW5kZXgg NDU5NjRhY2JhOTQ0Li4yOTAyNjdlMWZmOWYgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL252ZGltbS9j bGFpbS5jDQorKysgYi9kcml2ZXJzL252ZGltbS9jbGFpbS5jDQpAQCAtMzAzLDEzICszMDMsMTYg QEAgc3RhdGljIGludCBuc2lvX3J3X2J5dGVzKHN0cnVjdCBuZF9uYW1lc3BhY2VfY29tbW9uICpu ZG5zLA0KIGludCBkZXZtX25zaW9fZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG5k X25hbWVzcGFjZV9pbyAqbnNpbywNCiAJCXJlc291cmNlX3NpemVfdCBzaXplKQ0KIHsNCi0Jc3Ry dWN0IHJlc291cmNlICpyZXMgPSAmbnNpby0+cmVzOw0KIAlzdHJ1Y3QgbmRfbmFtZXNwYWNlX2Nv bW1vbiAqbmRucyA9ICZuc2lvLT5jb21tb247DQorCXN0cnVjdCByYW5nZSByYW5nZSA9IHsNCisJ CS5zdGFydCA9IG5zaW8tPnJlcy5zdGFydCwNCisJCS5lbmQgPSBuc2lvLT5yZXMuZW5kLA0KKwl9 Ow0KIA0KIAluc2lvLT5zaXplID0gc2l6ZTsNCi0JaWYgKCFkZXZtX3JlcXVlc3RfbWVtX3JlZ2lv bihkZXYsIHJlcy0+c3RhcnQsIHNpemUsDQorCWlmICghZGV2bV9yZXF1ZXN0X21lbV9yZWdpb24o ZGV2LCByYW5nZS5zdGFydCwgc2l6ZSwNCiAJCQkJZGV2X25hbWUoJm5kbnMtPmRldikpKSB7DQot CQlkZXZfd2FybihkZXYsICJjb3VsZCBub3QgcmVzZXJ2ZSByZWdpb24gJXBSXG4iLCByZXMpOw0K KwkJZGV2X3dhcm4oZGV2LCAiY291bGQgbm90IHJlc2VydmUgcmVnaW9uICVwUlxuIiwgJm5zaW8t PnJlcyk7DQogCQlyZXR1cm4gLUVCVVNZOw0KIAl9DQogDQpAQCAtMzE3LDkgKzMyMCw5IEBAIGlu dCBkZXZtX25zaW9fZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG5kX25hbWVzcGFj ZV9pbyAqbnNpbywNCiAJaWYgKGRldm1faW5pdF9iYWRibG9ja3MoZGV2LCAmbnNpby0+YmIpKQ0K IAkJcmV0dXJuIC1FTk9NRU07DQogCW52ZGltbV9iYWRibG9ja3NfcG9wdWxhdGUodG9fbmRfcmVn aW9uKG5kbnMtPmRldi5wYXJlbnQpLCAmbnNpby0+YmIsDQotCQkJJm5zaW8tPnJlcyk7DQorCQkJ JnJhbmdlKTsNCiANCi0JbnNpby0+YWRkciA9IGRldm1fbWVtcmVtYXAoZGV2LCByZXMtPnN0YXJ0 LCBzaXplLCBBUkNIX01FTVJFTUFQX1BNRU0pOw0KKwluc2lvLT5hZGRyID0gZGV2bV9tZW1yZW1h cChkZXYsIHJhbmdlLnN0YXJ0LCBzaXplLCBBUkNIX01FTVJFTUFQX1BNRU0pOw0KIA0KIAlyZXR1 cm4gUFRSX0VSUl9PUl9aRVJPKG5zaW8tPmFkZHIpOw0KIH0NCmRpZmYgLS1naXQgYS9kcml2ZXJz L252ZGltbS9uZC5oIGIvZHJpdmVycy9udmRpbW0vbmQuaA0KaW5kZXggODVjMWFlODEzZWEzLi5i YWM5MGFmYTQ2MDQgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL252ZGltbS9uZC5oDQorKysgYi9kcml2 ZXJzL252ZGltbS9uZC5oDQpAQCAtMzc3LDggKzM3Nyw5IEBAIGludCBudmRpbW1fbmFtZXNwYWNl X2RldGFjaF9idHQoc3RydWN0IG5kX2J0dCAqbmRfYnR0KTsNCiBjb25zdCBjaGFyICpudmRpbW1f bmFtZXNwYWNlX2Rpc2tfbmFtZShzdHJ1Y3QgbmRfbmFtZXNwYWNlX2NvbW1vbiAqbmRucywNCiAJ CWNoYXIgKm5hbWUpOw0KIHVuc2lnbmVkIGludCBwbWVtX3NlY3Rvcl9zaXplKHN0cnVjdCBuZF9u YW1lc3BhY2VfY29tbW9uICpuZG5zKTsNCitzdHJ1Y3QgcmFuZ2U7DQogdm9pZCBudmRpbW1fYmFk YmxvY2tzX3BvcHVsYXRlKHN0cnVjdCBuZF9yZWdpb24gKm5kX3JlZ2lvbiwNCi0JCXN0cnVjdCBi YWRibG9ja3MgKmJiLCBjb25zdCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcyk7DQorCQlzdHJ1Y3QgYmFk YmxvY2tzICpiYiwgY29uc3Qgc3RydWN0IHJhbmdlICpyYW5nZSk7DQogaW50IGRldm1fbmFtZXNw YWNlX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBuZF9uYW1lc3BhY2VfY29tbW9u ICpuZG5zLA0KIAkJcmVzb3VyY2Vfc2l6ZV90IHNpemUpOw0KIHZvaWQgZGV2bV9uYW1lc3BhY2Vf ZGlzYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udmRpbW0v cGZuX2RldnMuYyBiL2RyaXZlcnMvbnZkaW1tL3Bmbl9kZXZzLmMNCmluZGV4IDNlMTFlZjhkM2Y1 Yi4uM2M0Nzg3YjkyYTZhIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9udmRpbW0vcGZuX2RldnMuYw0K KysrIGIvZHJpdmVycy9udmRpbW0vcGZuX2RldnMuYw0KQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0 aWMgdW5zaWduZWQgbG9uZyBpbml0X2FsdG1hcF9yZXNlcnZlKHJlc291cmNlX3NpemVfdCBiYXNl KQ0KIA0KIHN0YXRpYyBpbnQgX19udmRpbW1fc2V0dXBfcGZuKHN0cnVjdCBuZF9wZm4gKm5kX3Bm biwgc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcCkNCiB7DQotCXN0cnVjdCByZXNvdXJjZSAqcmVz ID0gJnBnbWFwLT5yZXM7DQorCXN0cnVjdCByYW5nZSAqcmFuZ2UgPSAmcGdtYXAtPnJhbmdlOw0K IAlzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCA9ICZwZ21hcC0+YWx0bWFwOw0KIAlzdHJ1Y3Qg bmRfcGZuX3NiICpwZm5fc2IgPSBuZF9wZm4tPnBmbl9zYjsNCiAJdTY0IG9mZnNldCA9IGxlNjRf dG9fY3B1KHBmbl9zYi0+ZGF0YW9mZik7DQpAQCAtNjg5LDE2ICs2ODksMTYgQEAgc3RhdGljIGlu dCBfX252ZGltbV9zZXR1cF9wZm4oc3RydWN0IG5kX3BmbiAqbmRfcGZuLCBzdHJ1Y3QgZGV2X3Bh Z2VtYXAgKnBnbWFwKQ0KIAkJLmVuZF9wZm4gPSBQSFlTX1BGTihlbmQpLA0KIAl9Ow0KIA0KLQlt ZW1jcHkocmVzLCAmbnNpby0+cmVzLCBzaXplb2YoKnJlcykpOw0KLQlyZXMtPnN0YXJ0ICs9IHN0 YXJ0X3BhZDsNCi0JcmVzLT5lbmQgLT0gZW5kX3RydW5jOw0KLQ0KKwkqcmFuZ2UgPSAoc3RydWN0 IHJhbmdlKSB7DQorCQkuc3RhcnQgPSBuc2lvLT5yZXMuc3RhcnQgKyBzdGFydF9wYWQsDQorCQku ZW5kID0gbnNpby0+cmVzLmVuZCAtIGVuZF90cnVuYywNCisJfTsNCiAJaWYgKG5kX3Bmbi0+bW9k ZSA9PSBQRk5fTU9ERV9SQU0pIHsNCiAJCWlmIChvZmZzZXQgPCByZXNlcnZlKQ0KIAkJCXJldHVy biAtRUlOVkFMOw0KIAkJbmRfcGZuLT5ucGZucyA9IGxlNjRfdG9fY3B1KHBmbl9zYi0+bnBmbnMp Ow0KIAl9IGVsc2UgaWYgKG5kX3Bmbi0+bW9kZSA9PSBQRk5fTU9ERV9QTUVNKSB7DQotCQluZF9w Zm4tPm5wZm5zID0gUEhZU19QRk4oKHJlc291cmNlX3NpemUocmVzKSAtIG9mZnNldCkpOw0KKwkJ bmRfcGZuLT5ucGZucyA9IFBIWVNfUEZOKChyYW5nZV9sZW4ocmFuZ2UpIC0gb2Zmc2V0KSk7DQog CQlpZiAobGU2NF90b19jcHUobmRfcGZuLT5wZm5fc2ItPm5wZm5zKSA+IG5kX3Bmbi0+bnBmbnMp DQogCQkJZGV2X2luZm8oJm5kX3Bmbi0+ZGV2LA0KIAkJCQkJIm51bWJlciBvZiBwZm5zIHRydW5j YXRlZCBmcm9tICVsbGQgdG8gJWxkXG4iLA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZkaW1tL3Bt ZW0uYyBiL2RyaXZlcnMvbnZkaW1tL3BtZW0uYw0KaW5kZXggZmFiMjliNTE0MzcyLi42OWNjMGU3 ODM3MDkgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL252ZGltbS9wbWVtLmMNCisrKyBiL2RyaXZlcnMv bnZkaW1tL3BtZW0uYw0KQEAgLTM3Niw3ICszNzYsNyBAQCBzdGF0aWMgaW50IHBtZW1fYXR0YWNo X2Rpc2soc3RydWN0IGRldmljZSAqZGV2LA0KIAlzdHJ1Y3QgbmRfcmVnaW9uICpuZF9yZWdpb24g PSB0b19uZF9yZWdpb24oZGV2LT5wYXJlbnQpOw0KIAlpbnQgbmlkID0gZGV2X3RvX25vZGUoZGV2 KSwgZnVhOw0KIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9ICZuc2lvLT5yZXM7DQotCXN0cnVjdCBy ZXNvdXJjZSBiYl9yZXM7DQorCXN0cnVjdCByYW5nZSBiYl9yYW5nZTsNCiAJc3RydWN0IG5kX3Bm biAqbmRfcGZuID0gTlVMTDsNCiAJc3RydWN0IGRheF9kZXZpY2UgKmRheF9kZXY7DQogCXN0cnVj dCBuZF9wZm5fc2IgKnBmbl9zYjsNCkBAIC00MzUsMjQgKzQzNSwyNiBAQCBzdGF0aWMgaW50IHBt ZW1fYXR0YWNoX2Rpc2soc3RydWN0IGRldmljZSAqZGV2LA0KIAkJcGZuX3NiID0gbmRfcGZuLT5w Zm5fc2I7DQogCQlwbWVtLT5kYXRhX29mZnNldCA9IGxlNjRfdG9fY3B1KHBmbl9zYi0+ZGF0YW9m Zik7DQogCQlwbWVtLT5wZm5fcGFkID0gcmVzb3VyY2Vfc2l6ZShyZXMpIC0NCi0JCQlyZXNvdXJj ZV9zaXplKCZwbWVtLT5wZ21hcC5yZXMpOw0KKwkJCXJhbmdlX2xlbigmcG1lbS0+cGdtYXAucmFu Z2UpOw0KIAkJcG1lbS0+cGZuX2ZsYWdzIHw9IFBGTl9NQVA7DQotCQltZW1jcHkoJmJiX3Jlcywg JnBtZW0tPnBnbWFwLnJlcywgc2l6ZW9mKGJiX3JlcykpOw0KLQkJYmJfcmVzLnN0YXJ0ICs9IHBt ZW0tPmRhdGFfb2Zmc2V0Ow0KKwkJYmJfcmFuZ2UgPSBwbWVtLT5wZ21hcC5yYW5nZTsNCisJCWJi X3JhbmdlLnN0YXJ0ICs9IHBtZW0tPmRhdGFfb2Zmc2V0Ow0KIAl9IGVsc2UgaWYgKHBtZW1fc2hv dWxkX21hcF9wYWdlcyhkZXYpKSB7DQotCQltZW1jcHkoJnBtZW0tPnBnbWFwLnJlcywgJm5zaW8t PnJlcywgc2l6ZW9mKHBtZW0tPnBnbWFwLnJlcykpOw0KKwkJcG1lbS0+cGdtYXAucmFuZ2Uuc3Rh cnQgPSByZXMtPnN0YXJ0Ow0KKwkJcG1lbS0+cGdtYXAucmFuZ2UuZW5kID0gcmVzLT5lbmQ7DQog CQlwbWVtLT5wZ21hcC50eXBlID0gTUVNT1JZX0RFVklDRV9GU19EQVg7DQogCQlwbWVtLT5wZ21h cC5vcHMgPSAmZnNkYXhfcGFnZW1hcF9vcHM7DQogCQlhZGRyID0gZGV2bV9tZW1yZW1hcF9wYWdl cyhkZXYsICZwbWVtLT5wZ21hcCk7DQogCQlwbWVtLT5wZm5fZmxhZ3MgfD0gUEZOX01BUDsNCi0J CW1lbWNweSgmYmJfcmVzLCAmcG1lbS0+cGdtYXAucmVzLCBzaXplb2YoYmJfcmVzKSk7DQorCQli Yl9yYW5nZSA9IHBtZW0tPnBnbWFwLnJhbmdlOw0KIAl9IGVsc2Ugew0KIAkJaWYgKGRldm1fYWRk X2FjdGlvbl9vcl9yZXNldChkZXYsIHBtZW1fcmVsZWFzZV9xdWV1ZSwNCiAJCQkJCSZwbWVtLT5w Z21hcCkpDQogCQkJcmV0dXJuIC1FTk9NRU07DQogCQlhZGRyID0gZGV2bV9tZW1yZW1hcChkZXYs IHBtZW0tPnBoeXNfYWRkciwNCiAJCQkJcG1lbS0+c2l6ZSwgQVJDSF9NRU1SRU1BUF9QTUVNKTsN Ci0JCW1lbWNweSgmYmJfcmVzLCAmbnNpby0+cmVzLCBzaXplb2YoYmJfcmVzKSk7DQorCQliYl9y YW5nZS5zdGFydCA9ICByZXMtPnN0YXJ0Ow0KKwkJYmJfcmFuZ2UuZW5kID0gcmVzLT5lbmQ7DQog CX0NCiANCiAJaWYgKElTX0VSUihhZGRyKSkNCkBAIC00ODIsNyArNDg0LDcgQEAgc3RhdGljIGlu dCBwbWVtX2F0dGFjaF9kaXNrKHN0cnVjdCBkZXZpY2UgKmRldiwNCiAJCQkvIDUxMik7DQogCWlm IChkZXZtX2luaXRfYmFkYmxvY2tzKGRldiwgJnBtZW0tPmJiKSkNCiAJCXJldHVybiAtRU5PTUVN Ow0KLQludmRpbW1fYmFkYmxvY2tzX3BvcHVsYXRlKG5kX3JlZ2lvbiwgJnBtZW0tPmJiLCAmYmJf cmVzKTsNCisJbnZkaW1tX2JhZGJsb2Nrc19wb3B1bGF0ZShuZF9yZWdpb24sICZwbWVtLT5iYiwg JmJiX3JhbmdlKTsNCiAJZGlzay0+YmIgPSAmcG1lbS0+YmI7DQogDQogCWlmIChpc19udmRpbW1f c3luYyhuZF9yZWdpb24pKQ0KQEAgLTU5Myw4ICs1OTUsOCBAQCBzdGF0aWMgdm9pZCBuZF9wbWVt X25vdGlmeShzdHJ1Y3QgZGV2aWNlICpkZXYsIGVudW0gbnZkaW1tX2V2ZW50IGV2ZW50KQ0KIAly ZXNvdXJjZV9zaXplX3Qgb2Zmc2V0ID0gMCwgZW5kX3RydW5jID0gMDsNCiAJc3RydWN0IG5kX25h bWVzcGFjZV9jb21tb24gKm5kbnM7DQogCXN0cnVjdCBuZF9uYW1lc3BhY2VfaW8gKm5zaW87DQot CXN0cnVjdCByZXNvdXJjZSByZXM7DQogCXN0cnVjdCBiYWRibG9ja3MgKmJiOw0KKwlzdHJ1Y3Qg cmFuZ2UgcmFuZ2U7DQogCXN0cnVjdCBrZXJuZnNfbm9kZSAqYmJfc3RhdGU7DQogDQogCWlmIChl dmVudCAhPSBOVkRJTU1fUkVWQUxJREFURV9QT0lTT04pDQpAQCAtNjMwLDkgKzYzMiw5IEBAIHN0 YXRpYyB2b2lkIG5kX3BtZW1fbm90aWZ5KHN0cnVjdCBkZXZpY2UgKmRldiwgZW51bSBudmRpbW1f ZXZlbnQgZXZlbnQpDQogCQluc2lvID0gdG9fbmRfbmFtZXNwYWNlX2lvKCZuZG5zLT5kZXYpOw0K IAl9DQogDQotCXJlcy5zdGFydCA9IG5zaW8tPnJlcy5zdGFydCArIG9mZnNldDsNCi0JcmVzLmVu ZCA9IG5zaW8tPnJlcy5lbmQgLSBlbmRfdHJ1bmM7DQotCW52ZGltbV9iYWRibG9ja3NfcG9wdWxh dGUobmRfcmVnaW9uLCBiYiwgJnJlcyk7DQorCXJhbmdlLnN0YXJ0ID0gbnNpby0+cmVzLnN0YXJ0 ICsgb2Zmc2V0Ow0KKwlyYW5nZS5lbmQgPSBuc2lvLT5yZXMuZW5kIC0gZW5kX3RydW5jOw0KKwlu dmRpbW1fYmFkYmxvY2tzX3BvcHVsYXRlKG5kX3JlZ2lvbiwgYmIsICZyYW5nZSk7DQogCWlmIChi Yl9zdGF0ZSkNCiAJCXN5c2ZzX25vdGlmeV9kaXJlbnQoYmJfc3RhdGUpOw0KIH0NCmRpZmYgLS1n aXQgYS9kcml2ZXJzL252ZGltbS9yZWdpb24uYyBiL2RyaXZlcnMvbnZkaW1tL3JlZ2lvbi5jDQpp bmRleCAwZjY5NzhlNzJlN2MuLmJmY2U4N2VkNzJhYiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbnZk aW1tL3JlZ2lvbi5jDQorKysgYi9kcml2ZXJzL252ZGltbS9yZWdpb24uYw0KQEAgLTM1LDcgKzM1 LDEwIEBAIHN0YXRpYyBpbnQgbmRfcmVnaW9uX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikNCiAJ CXJldHVybiByYzsNCiANCiAJaWYgKGlzX21lbW9yeSgmbmRfcmVnaW9uLT5kZXYpKSB7DQotCQlz dHJ1Y3QgcmVzb3VyY2UgbmRyX3JlczsNCisJCXN0cnVjdCByYW5nZSByYW5nZSA9IHsNCisJCQku c3RhcnQgPSBuZF9yZWdpb24tPm5kcl9zdGFydCwNCisJCQkuZW5kID0gbmRfcmVnaW9uLT5uZHJf c3RhcnQgKyBuZF9yZWdpb24tPm5kcl9zaXplIC0gMSwNCisJCX07DQogDQogCQlpZiAoZGV2bV9p bml0X2JhZGJsb2NrcyhkZXYsICZuZF9yZWdpb24tPmJiKSkNCiAJCQlyZXR1cm4gLUVOT0RFVjsN CkBAIC00NCw5ICs0Nyw3IEBAIHN0YXRpYyBpbnQgbmRfcmVnaW9uX3Byb2JlKHN0cnVjdCBkZXZp Y2UgKmRldikNCiAJCWlmICghbmRfcmVnaW9uLT5iYl9zdGF0ZSkNCiAJCQlkZXZfd2FybigmbmRf cmVnaW9uLT5kZXYsDQogCQkJCQkiJ2JhZGJsb2Nrcycgbm90aWZpY2F0aW9uIGRpc2FibGVkXG4i KTsNCi0JCW5kcl9yZXMuc3RhcnQgPSBuZF9yZWdpb24tPm5kcl9zdGFydDsNCi0JCW5kcl9yZXMu ZW5kID0gbmRfcmVnaW9uLT5uZHJfc3RhcnQgKyBuZF9yZWdpb24tPm5kcl9zaXplIC0gMTsNCi0J CW52ZGltbV9iYWRibG9ja3NfcG9wdWxhdGUobmRfcmVnaW9uLCAmbmRfcmVnaW9uLT5iYiwgJm5k cl9yZXMpOw0KKwkJbnZkaW1tX2JhZGJsb2Nrc19wb3B1bGF0ZShuZF9yZWdpb24sICZuZF9yZWdp b24tPmJiLCAmcmFuZ2UpOw0KIAl9DQogDQogCXJjID0gbmRfcmVnaW9uX3JlZ2lzdGVyX25hbWVz cGFjZXMobmRfcmVnaW9uLCAmZXJyKTsNCkBAIC0xMjEsMTQgKzEyMiwxNiBAQCBzdGF0aWMgdm9p ZCBuZF9yZWdpb25fbm90aWZ5KHN0cnVjdCBkZXZpY2UgKmRldiwgZW51bSBudmRpbW1fZXZlbnQg ZXZlbnQpDQogew0KIAlpZiAoZXZlbnQgPT0gTlZESU1NX1JFVkFMSURBVEVfUE9JU09OKSB7DQog CQlzdHJ1Y3QgbmRfcmVnaW9uICpuZF9yZWdpb24gPSB0b19uZF9yZWdpb24oZGV2KTsNCi0JCXN0 cnVjdCByZXNvdXJjZSByZXM7DQogDQogCQlpZiAoaXNfbWVtb3J5KCZuZF9yZWdpb24tPmRldikp IHsNCi0JCQlyZXMuc3RhcnQgPSBuZF9yZWdpb24tPm5kcl9zdGFydDsNCi0JCQlyZXMuZW5kID0g bmRfcmVnaW9uLT5uZHJfc3RhcnQgKw0KLQkJCQluZF9yZWdpb24tPm5kcl9zaXplIC0gMTsNCisJ CQlzdHJ1Y3QgcmFuZ2UgcmFuZ2UgPSB7DQorCQkJCS5zdGFydCA9IG5kX3JlZ2lvbi0+bmRyX3N0 YXJ0LA0KKwkJCQkuZW5kID0gbmRfcmVnaW9uLT5uZHJfc3RhcnQgKw0KKwkJCQkJbmRfcmVnaW9u LT5uZHJfc2l6ZSAtIDEsDQorCQkJfTsNCisNCiAJCQludmRpbW1fYmFkYmxvY2tzX3BvcHVsYXRl KG5kX3JlZ2lvbiwNCi0JCQkJCSZuZF9yZWdpb24tPmJiLCAmcmVzKTsNCisJCQkJCSZuZF9yZWdp b24tPmJiLCAmcmFuZ2UpOw0KIAkJCWlmIChuZF9yZWdpb24tPmJiX3N0YXRlKQ0KIAkJCQlzeXNm c19ub3RpZnlfZGlyZW50KG5kX3JlZ2lvbi0+YmJfc3RhdGUpOw0KIAkJfQ0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvcGNpL3AycGRtYS5jIGIvZHJpdmVycy9wY2kvcDJwZG1hLmMNCmluZGV4IGYzNTdm OWEzMmIzYS4uMjU2ODUwNTEzODEzIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9wY2kvcDJwZG1hLmMN CisrKyBiL2RyaXZlcnMvcGNpL3AycGRtYS5jDQpAQCAtMTg1LDkgKzE4NSw4IEBAIGludCBwY2lf cDJwZG1hX2FkZF9yZXNvdXJjZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwgc2l6ZV90 IHNpemUsDQogCQlyZXR1cm4gLUVOT01FTTsNCiANCiAJcGdtYXAgPSAmcDJwX3BnbWFwLT5wZ21h cDsNCi0JcGdtYXAtPnJlcy5zdGFydCA9IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCBiYXIpICsg b2Zmc2V0Ow0KLQlwZ21hcC0+cmVzLmVuZCA9IHBnbWFwLT5yZXMuc3RhcnQgKyBzaXplIC0gMTsN Ci0JcGdtYXAtPnJlcy5mbGFncyA9IHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCBiYXIpOw0KKwlw Z21hcC0+cmFuZ2Uuc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgYmFyKSArIG9mZnNl dDsNCisJcGdtYXAtPnJhbmdlLmVuZCA9IHBnbWFwLT5yYW5nZS5zdGFydCArIHNpemUgLSAxOw0K IAlwZ21hcC0+dHlwZSA9IE1FTU9SWV9ERVZJQ0VfUENJX1AyUERNQTsNCiANCiAJcDJwX3BnbWFw LT5wcm92aWRlciA9IHBkZXY7DQpAQCAtMjAyLDEzICsyMDEsMTMgQEAgaW50IHBjaV9wMnBkbWFf YWRkX3Jlc291cmNlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLCBzaXplX3Qgc2l6ZSwN CiANCiAJZXJyb3IgPSBnZW5fcG9vbF9hZGRfb3duZXIocGRldi0+cDJwZG1hLT5wb29sLCAodW5z aWduZWQgbG9uZylhZGRyLA0KIAkJCXBjaV9idXNfYWRkcmVzcyhwZGV2LCBiYXIpICsgb2Zmc2V0 LA0KLQkJCXJlc291cmNlX3NpemUoJnBnbWFwLT5yZXMpLCBkZXZfdG9fbm9kZSgmcGRldi0+ZGV2 KSwNCisJCQlyYW5nZV9sZW4oJnBnbWFwLT5yYW5nZSksIGRldl90b19ub2RlKCZwZGV2LT5kZXYp LA0KIAkJCXBnbWFwLT5yZWYpOw0KIAlpZiAoZXJyb3IpDQogCQlnb3RvIHBhZ2VzX2ZyZWU7DQog DQotCXBjaV9pbmZvKHBkZXYsICJhZGRlZCBwZWVyLXRvLXBlZXIgRE1BIG1lbW9yeSAlcFJcbiIs DQotCQkgJnBnbWFwLT5yZXMpOw0KKwlwY2lfaW5mbyhwZGV2LCAiYWRkZWQgcGVlci10by1wZWVy IERNQSBtZW1vcnkgJSNsbHgtJSNsbHhcbiIsDQorCQkgcGdtYXAtPnJhbmdlLnN0YXJ0LCBwZ21h cC0+cmFuZ2UuZW5kKTsNCiANCiAJcmV0dXJuIDA7DQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy94 ZW4vdW5wb3B1bGF0ZWQtYWxsb2MuYyBiL2RyaXZlcnMveGVuL3VucG9wdWxhdGVkLWFsbG9jLmMN CmluZGV4IDNiOThkYzkyMTQyNi4uMDkxYjg2NjllY2EzIDEwMDY0NA0KLS0tIGEvZHJpdmVycy94 ZW4vdW5wb3B1bGF0ZWQtYWxsb2MuYw0KKysrIGIvZHJpdmVycy94ZW4vdW5wb3B1bGF0ZWQtYWxs b2MuYw0KQEAgLTE4LDI3ICsxOCwzNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGxpc3RfY291bnQ7 DQogc3RhdGljIGludCBmaWxsX2xpc3QodW5zaWduZWQgaW50IG5yX3BhZ2VzKQ0KIHsNCiAJc3Ry dWN0IGRldl9wYWdlbWFwICpwZ21hcDsNCisJc3RydWN0IHJlc291cmNlICpyZXM7DQogCXZvaWQg KnZhZGRyOw0KIAl1bnNpZ25lZCBpbnQgaSwgYWxsb2NfcGFnZXMgPSByb3VuZF91cChucl9wYWdl cywgUEFHRVNfUEVSX1NFQ1RJT04pOw0KLQlpbnQgcmV0Ow0KKwlpbnQgcmV0ID0gLUVOT01FTTsN CisNCisJcmVzID0ga3phbGxvYyhzaXplb2YoKnJlcyksIEdGUF9LRVJORUwpOw0KKwlpZiAoIXJl cykNCisJCXJldHVybiAtRU5PTUVNOw0KIA0KIAlwZ21hcCA9IGt6YWxsb2Moc2l6ZW9mKCpwZ21h cCksIEdGUF9LRVJORUwpOw0KIAlpZiAoIXBnbWFwKQ0KLQkJcmV0dXJuIC1FTk9NRU07DQorCQln b3RvIGVycl9wZ21hcDsNCiANCiAJcGdtYXAtPnR5cGUgPSBNRU1PUllfREVWSUNFX0dFTkVSSUM7 DQotCXBnbWFwLT5yZXMubmFtZSA9ICJYZW4gc2NyYXRjaCI7DQotCXBnbWFwLT5yZXMuZmxhZ3Mg PSBJT1JFU09VUkNFX01FTSB8IElPUkVTT1VSQ0VfQlVTWTsNCisJcmVzLT5uYW1lID0gIlhlbiBz Y3JhdGNoIjsNCisJcmVzLT5mbGFncyA9IElPUkVTT1VSQ0VfTUVNIHwgSU9SRVNPVVJDRV9CVVNZ Ow0KIA0KLQlyZXQgPSBhbGxvY2F0ZV9yZXNvdXJjZSgmaW9tZW1fcmVzb3VyY2UsICZwZ21hcC0+ cmVzLA0KKwlyZXQgPSBhbGxvY2F0ZV9yZXNvdXJjZSgmaW9tZW1fcmVzb3VyY2UsIHJlcywNCiAJ CQkJYWxsb2NfcGFnZXMgKiBQQUdFX1NJWkUsIDAsIC0xLA0KIAkJCQlQQUdFU19QRVJfU0VDVElP TiAqIFBBR0VfU0laRSwgTlVMTCwgTlVMTCk7DQogCWlmIChyZXQgPCAwKSB7DQogCQlwcl9lcnIo IkNhbm5vdCBhbGxvY2F0ZSBuZXcgSU9NRU0gcmVzb3VyY2VcbiIpOw0KLQkJa2ZyZWUocGdtYXAp Ow0KLQkJcmV0dXJuIHJldDsNCisJCWdvdG8gZXJyX3Jlc291cmNlOw0KIAl9DQogDQorCXBnbWFw LT5yYW5nZSA9IChzdHJ1Y3QgcmFuZ2UpIHsNCisJCS5zdGFydCA9IHJlcy0+c3RhcnQsDQorCQku ZW5kID0gcmVzLT5lbmQsDQorCX07DQorCXBnbWFwLT5vd25lciA9IHJlczsNCisNCiAjaWZkZWYg Q09ORklHX1hFTl9IQVZFX1BWTU1VDQogICAgICAgICAvKg0KICAgICAgICAgICogbWVtcmVtYXAg d2lsbCBidWlsZCBwYWdlIHRhYmxlcyBmb3IgdGhlIG5ldyBtZW1vcnkgc28NCkBAIC01MCwxNCAr NjAsMTMgQEAgc3RhdGljIGludCBmaWxsX2xpc3QodW5zaWduZWQgaW50IG5yX3BhZ2VzKQ0KICAg ICAgICAgICogY29uZmxpY3Qgd2l0aCBhbnkgZGV2aWNlcy4NCiAgICAgICAgICAqLw0KIAlpZiAo IXhlbl9mZWF0dXJlKFhFTkZFQVRfYXV0b190cmFuc2xhdGVkX3BoeXNtYXApKSB7DQotCQl4ZW5f cGZuX3QgcGZuID0gUEZOX0RPV04ocGdtYXAtPnJlcy5zdGFydCk7DQorCQl4ZW5fcGZuX3QgcGZu ID0gUEZOX0RPV04ocmVzLT5zdGFydCk7DQogDQogCQlmb3IgKGkgPSAwOyBpIDwgYWxsb2NfcGFn ZXM7IGkrKykgew0KIAkJCWlmICghc2V0X3BoeXNfdG9fbWFjaGluZShwZm4gKyBpLCBJTlZBTElE X1AyTV9FTlRSWSkpIHsNCiAJCQkJcHJfd2Fybigic2V0X3BoeXNfdG9fbWFjaGluZSgpIGZhaWxl ZCwgbm8gbWVtb3J5IGFkZGVkXG4iKTsNCi0JCQkJcmVsZWFzZV9yZXNvdXJjZSgmcGdtYXAtPnJl cyk7DQotCQkJCWtmcmVlKHBnbWFwKTsNCi0JCQkJcmV0dXJuIC1FTk9NRU07DQorCQkJCXJldCA9 IC1FTk9NRU07DQorCQkJCWdvdG8gZXJyX21lbXJlbWFwOw0KIAkJCX0NCiAgICAgICAgICAgICAg ICAgfQ0KIAl9DQpAQCAtNjYsOSArNzUsOCBAQCBzdGF0aWMgaW50IGZpbGxfbGlzdCh1bnNpZ25l ZCBpbnQgbnJfcGFnZXMpDQogCXZhZGRyID0gbWVtcmVtYXBfcGFnZXMocGdtYXAsIE5VTUFfTk9f Tk9ERSk7DQogCWlmIChJU19FUlIodmFkZHIpKSB7DQogCQlwcl9lcnIoIkNhbm5vdCByZW1hcCBt ZW1vcnkgcmFuZ2VcbiIpOw0KLQkJcmVsZWFzZV9yZXNvdXJjZSgmcGdtYXAtPnJlcyk7DQotCQlr ZnJlZShwZ21hcCk7DQotCQlyZXR1cm4gUFRSX0VSUih2YWRkcik7DQorCQlyZXQgPSBQVFJfRVJS KHZhZGRyKTsNCisJCWdvdG8gZXJyX21lbXJlbWFwOw0KIAl9DQogDQogCWZvciAoaSA9IDA7IGkg PCBhbGxvY19wYWdlczsgaSsrKSB7DQpAQCAtODAsNiArODgsMTQgQEAgc3RhdGljIGludCBmaWxs X2xpc3QodW5zaWduZWQgaW50IG5yX3BhZ2VzKQ0KIAl9DQogDQogCXJldHVybiAwOw0KKw0KK2Vy cl9tZW1yZW1hcDoNCisJcmVsZWFzZV9yZXNvdXJjZShyZXMpOw0KK2Vycl9yZXNvdXJjZToNCisJ a2ZyZWUocGdtYXApOw0KK2Vycl9wZ21hcDoNCisJa2ZyZWUocmVzKTsNCisJcmV0dXJuIHJldDsN CiB9DQogDQogLyoqDQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oIGIvaW5j bHVkZS9saW51eC9tZW1yZW1hcC5oDQppbmRleCBiMzc2ODY4MDNhNmQuLjM3NWI5ZTg3YTVjZiAx MDA2NDQNCi0tLSBhL2luY2x1ZGUvbGludXgvbWVtcmVtYXAuaA0KKysrIGIvaW5jbHVkZS9saW51 eC9tZW1yZW1hcC5oDQpAQCAtMSw2ICsxLDcgQEANCiAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMCAqLw0KICNpZm5kZWYgX0xJTlVYX01FTVJFTUFQX0hfDQogI2RlZmluZSBfTElO VVhfTUVNUkVNQVBfSF8NCisjaW5jbHVkZSA8bGludXgvcmFuZ2UuaD4NCiAjaW5jbHVkZSA8bGlu dXgvaW9wb3J0Lmg+DQogI2luY2x1ZGUgPGxpbnV4L3BlcmNwdS1yZWZjb3VudC5oPg0KIA0KQEAg LTkzLDcgKzk0LDcgQEAgc3RydWN0IGRldl9wYWdlbWFwX29wcyB7DQogLyoqDQogICogc3RydWN0 IGRldl9wYWdlbWFwIC0gbWV0YWRhdGEgZm9yIFpPTkVfREVWSUNFIG1hcHBpbmdzDQogICogQGFs dG1hcDogcHJlLWFsbG9jYXRlZC9yZXNlcnZlZCBtZW1vcnkgZm9yIHZtZW1tYXAgYWxsb2NhdGlv bnMNCi0gKiBAcmVzOiBwaHlzaWNhbCBhZGRyZXNzIHJhbmdlIGNvdmVyZWQgYnkgQHJlZg0KKyAq IEByYW5nZTogcGh5c2ljYWwgYWRkcmVzcyByYW5nZSBjb3ZlcmVkIGJ5IEByZWYNCiAgKiBAcmVm OiByZWZlcmVuY2UgY291bnQgdGhhdCBwaW5zIHRoZSBkZXZtX21lbXJlbWFwX3BhZ2VzKCkgbWFw cGluZw0KICAqIEBpbnRlcm5hbF9yZWY6IGludGVybmFsIHJlZmVyZW5jZSBpZiBAcmVmIGlzIG5v dCBwcm92aWRlZCBieSB0aGUgY2FsbGVyDQogICogQGRvbmU6IGNvbXBsZXRpb24gZm9yIEBpbnRl cm5hbF9yZWYNCkBAIC0xMDYsNyArMTA3LDcgQEAgc3RydWN0IGRldl9wYWdlbWFwX29wcyB7DQog ICovDQogc3RydWN0IGRldl9wYWdlbWFwIHsNCiAJc3RydWN0IHZtZW1fYWx0bWFwIGFsdG1hcDsN Ci0Jc3RydWN0IHJlc291cmNlIHJlczsNCisJc3RydWN0IHJhbmdlIHJhbmdlOw0KIAlzdHJ1Y3Qg cGVyY3B1X3JlZiAqcmVmOw0KIAlzdHJ1Y3QgcGVyY3B1X3JlZiBpbnRlcm5hbF9yZWY7DQogCXN0 cnVjdCBjb21wbGV0aW9uIGRvbmU7DQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yYW5nZS5o IGIvaW5jbHVkZS9saW51eC9yYW5nZS5oDQppbmRleCBkMWZiZWI2NjQwMTIuLjI3NDY4MWNjMzE1 NCAxMDA2NDQNCi0tLSBhL2luY2x1ZGUvbGludXgvcmFuZ2UuaA0KKysrIGIvaW5jbHVkZS9saW51 eC9yYW5nZS5oDQpAQCAtMSwxMiArMSwxOCBAQA0KIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wICovDQogI2lmbmRlZiBfTElOVVhfUkFOR0VfSA0KICNkZWZpbmUgX0xJTlVYX1JB TkdFX0gNCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCiANCiBzdHJ1Y3QgcmFuZ2Ugew0KIAl1 NjQgICBzdGFydDsNCiAJdTY0ICAgZW5kOw0KIH07DQogDQorc3RhdGljIGlubGluZSB1NjQgcmFu Z2VfbGVuKGNvbnN0IHN0cnVjdCByYW5nZSAqcmFuZ2UpDQorew0KKwlyZXR1cm4gcmFuZ2UtPmVu ZCAtIHJhbmdlLT5zdGFydCArIDE7DQorfQ0KKw0KIGludCBhZGRfcmFuZ2Uoc3RydWN0IHJhbmdl ICpyYW5nZSwgaW50IGF6LCBpbnQgbnJfcmFuZ2UsDQogCQl1NjQgc3RhcnQsIHU2NCBlbmQpOw0K IA0KZGlmZiAtLWdpdCBhL2xpYi90ZXN0X2htbS5jIGIvbGliL3Rlc3RfaG1tLmMNCmluZGV4IGU3 ZGMzZGUzNTViNy4uNWI0NTIxOTkxNjIxIDEwMDY0NA0KLS0tIGEvbGliL3Rlc3RfaG1tLmMNCisr KyBiL2xpYi90ZXN0X2htbS5jDQpAQCAtNDg3LDcgKzQ4Nyw4IEBAIHN0YXRpYyBib29sIGRtaXJy b3JfYWxsb2NhdGVfY2h1bmsoc3RydWN0IGRtaXJyb3JfZGV2aWNlICptZGV2aWNlLA0KIAkJZ290 byBlcnJfcmVsZWFzZTsNCiANCiAJZGV2bWVtLT5wYWdlbWFwLnR5cGUgPSBNRU1PUllfREVWSUNF X1BSSVZBVEU7DQotCWRldm1lbS0+cGFnZW1hcC5yZXMgPSAqcmVzOw0KKwlkZXZtZW0tPnBhZ2Vt YXAucmFuZ2Uuc3RhcnQgPSByZXMtPnN0YXJ0Ow0KKwlkZXZtZW0tPnBhZ2VtYXAucmFuZ2UuZW5k ID0gcmVzLT5lbmQ7DQogCWRldm1lbS0+cGFnZW1hcC5vcHMgPSAmZG1pcnJvcl9kZXZtZW1fb3Bz Ow0KIAlkZXZtZW0tPnBhZ2VtYXAub3duZXIgPSBtZGV2aWNlOw0KIA0KQEAgLTQ5Niw5ICs0OTcs OCBAQCBzdGF0aWMgYm9vbCBkbWlycm9yX2FsbG9jYXRlX2NodW5rKHN0cnVjdCBkbWlycm9yX2Rl dmljZSAqbWRldmljZSwNCiAJCWdvdG8gZXJyX2ZyZWU7DQogDQogCWRldm1lbS0+bWRldmljZSA9 IG1kZXZpY2U7DQotCXBmbl9maXJzdCA9IGRldm1lbS0+cGFnZW1hcC5yZXMuc3RhcnQgPj4gUEFH RV9TSElGVDsNCi0JcGZuX2xhc3QgPSBwZm5fZmlyc3QgKw0KLQkJKHJlc291cmNlX3NpemUoJmRl dm1lbS0+cGFnZW1hcC5yZXMpID4+IFBBR0VfU0hJRlQpOw0KKwlwZm5fZmlyc3QgPSBkZXZtZW0t PnBhZ2VtYXAucmFuZ2Uuc3RhcnQgPj4gUEFHRV9TSElGVDsNCisJcGZuX2xhc3QgPSBwZm5fZmly c3QgKyAocmFuZ2VfbGVuKCZkZXZtZW0tPnBhZ2VtYXAucmFuZ2UpID4+IFBBR0VfU0hJRlQpOw0K IAltZGV2aWNlLT5kZXZtZW1fY2h1bmtzW21kZXZpY2UtPmRldm1lbV9jb3VudCsrXSA9IGRldm1l bTsNCiANCiAJbXV0ZXhfdW5sb2NrKCZtZGV2aWNlLT5kZXZtZW1fbG9jayk7DQpAQCAtNTI4LDcg KzUyOCw3IEBAIHN0YXRpYyBib29sIGRtaXJyb3JfYWxsb2NhdGVfY2h1bmsoc3RydWN0IGRtaXJy b3JfZGV2aWNlICptZGV2aWNlLA0KIGVycl9mcmVlOg0KIAlrZnJlZShkZXZtZW0pOw0KIGVycl9y ZWxlYXNlOg0KLQlyZWxlYXNlX21lbV9yZWdpb24ocmVzLT5zdGFydCwgcmVzb3VyY2Vfc2l6ZShy ZXMpKTsNCisJcmVsZWFzZV9tZW1fcmVnaW9uKGRldm1lbS0+cGFnZW1hcC5yYW5nZS5zdGFydCwg cmFuZ2VfbGVuKCZkZXZtZW0tPnBhZ2VtYXAucmFuZ2UpKTsNCiBlcnI6DQogCW11dGV4X3VubG9j aygmbWRldmljZS0+ZGV2bWVtX2xvY2spOw0KIAlyZXR1cm4gZmFsc2U7DQpAQCAtMTEwMCw4ICsx 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