From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (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 071D0209884B3 for ; Mon, 16 Jul 2018 10:10:51 -0700 (PDT) Subject: [PATCH v2 06/14] mm: Allow an external agent to coordinate memmap initialization From: Dan Williams Date: Mon, 16 Jul 2018 10:00:53 -0700 Message-ID: <153176045309.12695.12132071237805092489.stgit@dwillia2-desk3.amr.corp.intel.com> In-Reply-To: <153176041838.12695.3365448145295112857.stgit@dwillia2-desk3.amr.corp.intel.com> References: <153176041838.12695.3365448145295112857.stgit@dwillia2-desk3.amr.corp.intel.com> MIME-Version: 1.0 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: akpm@linux-foundation.org Cc: Michal Hocko , jack@suse.cz, linux-nvdimm@lists.01.org, Pavel Tatashin , Daniel Jordan , linux-mm@kvack.org, =?utf-8?b?SsOpcsO0bWU=?= Glisse , Christoph Hellwig , linux-kernel@vger.kernel.org List-ID: Tm93IHRoYXQgbWVtbWFwX2luaXRfem9uZSgpIGtub3dzIGhvdyB0byBzcGxpdCB0aGUgaW5pdCB3 b3JrIGludG8KbXVsdGlwbGUgdGhyZWFkcywgYWxsb3cgdGhlIHRyYWNraW5nIGZvciB0aG9zZSB0 aHJlYWRzIHRvIGJlIGhhbmRsZWQKdmlhIGEgcGFzc2VkIGluICdzdHJ1Y3QgbWVtbWFwX2FzeW5j X3N0YXRlJyBpbnN0YW5jZS4KClRoaXMgaW5mcmFzdHJ1Y3R1cmUgYWxsb3dzIGRldm1fbWVtcmVt YXBfcGFnZXMoKSB1c2VycywgbGlrZSB0aGUgcG1lbQpkcml2ZXIsIHRvIHRyYWNrIG1lbW1hcCBp bml0aWFsaXphdGlvbiBpbiB0aGUgYmFja2dyb3VkLCBhbmQgdXNlCm1lbW1hcF9zeW5jKCkgd2hl biBpdCBwZXJmb3JtcyBhbiBvcGVyYXRpb24gdGhhdCBtYXkgcmVzdWx0IGluIGEKcGZuX3RvX3Bh Z2UoKSwgbGlrZSBkYXggbWFwcGluZyBhIHBmbiBpbnRvIHVzZXJzcGFjZS4KClRoZSBhcHByb2Fj aCBtaXJyb3JzIHdoYXQgaXMgZG9uZSBmb3IgYmFja2dyb3VuZCBtZW1tYXAgaW5pdGlhbGl6YXRp b24KYW5kIGRlZmVycyB3YWl0aW5nIGZvciBpbml0aWFsaXphdGlvbiB0byBjb21wbGV0ZSB1bnRp bCB0aGUgZmlyc3QKdXNlcnNwYWNlIGNvbnN1bWVyIGFycml2ZXMuCgpXaGVuIHRoYXQgY29uc3Vt ZXIgZG9lcyBhcnJpdmUgaXQgY2FuIHRha2Ugb3ZlciBhIHBvcnRpb24gb2YgdGhlIHBhZ2UKaW5p dGlhbGl6YXRpb24gaW4gdGhlIGZvcmVncm91bmQgdG8gbWluaW1pemUgZGVsYXlzIGV2ZW4gZnVy dGhlci4KCkNjOiBNaWNoYWwgSG9ja28gPG1ob2Nrb0BzdXNlLmNvbT4KQ2M6ICJKw6lyw7RtZSBH bGlzc2UiIDxqZ2xpc3NlQHJlZGhhdC5jb20+CkNjOiBMb2dhbiBHdW50aG9ycGUgPGxvZ2FuZ0Bk ZWx0YXRlZS5jb20+CkNjOiBDaHJpc3RvcGggSGVsbHdpZyA8aGNoQGxzdC5kZT4KQ2M6IEFuZHJl dyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CkNjOiBEYW5pZWwgSm9yZGFuIDxk YW5pZWwubS5qb3JkYW5Ab3JhY2xlLmNvbT4KQ2M6IFBhdmVsIFRhdGFzaGluIDxwYXNoYS50YXRh c2hpbkBvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxp YW1zQGludGVsLmNvbT4KLS0tCiBpbmNsdWRlL2xpbnV4L21lbW1hcF9hc3luYy5oIHwgICAzMiAr KysrKysrKwogaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oICAgICB8ICAgIDQgKwoga2VybmVsL21l bXJlbWFwLmMgICAgICAgICAgICB8ICAgNDAgKysrKysrKysrKwogbW0vcGFnZV9hbGxvYy5jICAg ICAgICAgICAgICB8ICAxNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tCiA0IGZpbGVzIGNoYW5nZWQsIDIyMyBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21lbW1hcF9hc3luYy5oIGIvaW5jbHVkZS9saW51 eC9tZW1tYXBfYXN5bmMuaAppbmRleCAyYjFhMDYzNmQ1YmIuLjVhM2JmZGNlOTRlNCAxMDA2NDQK LS0tIGEvaW5jbHVkZS9saW51eC9tZW1tYXBfYXN5bmMuaAorKysgYi9pbmNsdWRlL2xpbnV4L21l bW1hcF9hc3luYy5oCkBAIC0zLDYgKzMsOSBAQAogI2RlZmluZSBfX0xJTlVYX01FTU1BUF9BU1lO Q19ICiAjaW5jbHVkZSA8bGludXgvYXN5bmMuaD4KICNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4K KyNpbmNsdWRlIDxsaW51eC9hc3luYy5oPgorI2luY2x1ZGUgPGxpbnV4L3Bmbl90Lmg+CisjaW5j bHVkZSA8bGludXgvcmFkaXgtdHJlZS5oPgogCiBzdHJ1Y3QgZGV2X3BhZ2VtYXA7CiBzdHJ1Y3Qg dm1lbV9hbHRtYXA7CkBAIC0xNCw2ICsxNywxNSBAQCBzdHJ1Y3Qgdm1lbV9hbHRtYXA7CiAgKi8K ICNkZWZpbmUgTlJfTUVNTUFQX1RIUkVBRFMgOAogCisvKgorICogTnVtYmVyIG9mIHN1Yi1yYW5n ZXMgdGhhdCBjYW4gYmUgc2NydWJiZWQgb24gZGVtYW5kLiBGb3IgZXhhbXBsZSwgYQorICogY2Fs bGVyIG9mIG1lbW1hcF9zeW5jKCkgd2lsbCBhdHRlbXB0IHRvIGxvY2sgb3V0IGFuIGluaXQgdGhy ZWFkIGFuZAorICogc2NydWIgMS8xMjh0aCBvZiB0aGUgdGhyZWFkJ3MgcmFuZ2UgaXRzZWxmIHRv IHNhdGlzZnkgdGhlIGltbWVkaWF0ZQorICogcmVxdWVzdCwgYW5kIHRoZW4gbGV0IHRoZSBiYWNr Z3JvdW5kIGNvbnRpbnVlIGluaXRpYWxpemluZyB0aGUKKyAqIHJlbWFpbmRlci4KKyAqLworI2Rl ZmluZSBOUl9NRU1NQVBfUkFOR0UgMTI4CisKIC8qKgogICogc3RydWN0IG1lbW1hcF9pbml0X2Vu diAtIGNvbW1vbiBnbG9iYWwgZGF0YSBmb3IgYWxsIGFzeW5jIG1lbW1hcCBvcGVyYXRpb25zCiAg KiBAYWx0bWFwOiBzZXQtYXNpZGUgLyBhbHRlcm5hdGl2ZSBtZW1vcnkgZm9yIGFsbG9jYXRpbmcg dGhlIG1lbW1hcApAQCAtNTAsMjkgKzYyLDQ5IEBAIHN0cnVjdCBtZW1tYXBfaW5pdF9tZW1tYXAg ewogCiAvKioKICAqIHN0cnVjdCBtZW1tYXBfaW5pdF9wYWdlcyAtIGFyZ3VtZW50cyBmb3IgYXN5 bmMgJ3N0cnVjdCBwYWdlJyBpbml0CisgKiBAaWQ6IHRocmVhZCBpZCAwLi5OUl9NRU1NQVBfVEhS RUFEUyAocGVyIHN0cnVjdCBtZW1tYXBfYXN5bmNfc3RhdGUgaW5zdGFuY2UpCisgKiBAbG9jazog Y29vcmRpbmF0ZSBvbi1kZW1hbmQgdnMgYmFja2dyb3VuZCBpbml0aWFsaXphdGlvbgogICogQHJl czogcmFuZ2UgZm9yIG9uZSBpbnN0YW5jZSBvZiBtZW1tYXBfaW5pdF9hc3luYygpIHRvIG9wZXJh dGUKKyAqIEBjb29raWU6IGFzeW5jIGNvb2tpZSBmb3IgYXdhaXRpbmcgY29tcGxldGlvbiBvZiBh bGwgdGhyZWFkIHdvcmsKICAqIEBlbnY6IGxpbmsgdG8gdGhyZWFkIHJhbmdlIGludmFyaWFudCBw YXJhbWV0ZXJzCisgKiBAcmFuZ2VfcGVuZGluZzogdHJhY2sgaW5pdCB3b3JrIGluIE5SX01FTU1B UF9SQU5HRSBzdWItcmFuZ2VzCiAgKi8KIHN0cnVjdCBtZW1tYXBfaW5pdF9wYWdlcyB7CisJaW50 IGlkOworCXN0cnVjdCBtdXRleCBsb2NrOwogCXN0cnVjdCByZXNvdXJjZSByZXM7CisJYXN5bmNf Y29va2llX3QgY29va2llOwogCXN0cnVjdCBtZW1tYXBfaW5pdF9lbnYgKmVudjsKKwl1bnNpZ25l ZCBsb25nIHJhbmdlX3BlbmRpbmdbQklUU19UT19MT05HUyhOUl9NRU1NQVBfUkFOR0UpXTsKIH07 CiAKIC8qKgogICogc3RydWN0IG1lbW1hcF9hc3luY19zdGF0ZSAtIHN1cHBvcnQgYW5kIHRyYWNr IGFzeW5jIG1lbW1hcCBvcGVyYXRpb25zCiAgKiBAZW52OiBzdG9yYWdlIGZvciBjb21tb24gbWVt bWFwIGluaXQgcGFyYW1ldGVycwogICogQG1lbW1hcDogc3RvcmFnZSBmb3IgYmFja2dyb3VuZCBw YWdlLXRhYmxlIHNldHVwIG9wZXJhdGlvbnMKKyAqIEBwYWdlX2luaXQ6IHN0b3JhZ2UgZm9yIGJh Y2tncm91bmQgJ3N0cnVjdCBwYWdlJyBpbml0IG9wZXJhdGlvbnMKKyAqIEBhY3RpdmU6IHN1bW1h cnkgc3RhdHVzIG9mIGFsbCB0aHJlYWRzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFzeW5jIGluc3Rh bmNlCisgKiBAcGZuX3RvX3RocmVhZDogbG9va3VwIHRoZSB0aHJlYWQgcmVzcG9uc2libGUgZm9y IGluaXRpYWxpemluZyBAcGZuCiAgKgogICogQW4gaW5zdGFuY2Ugb2YgdGhpcyBvYmplY3QgaXMg cGFzc2VkIHRvIHRoZSBtZW1vcnkgaG90cGx1ZwogICogaW5mcmFzdHJ1Y3R1cmUgdG8gaW5kaWNh dGUgdGhhdCBtZW1vcnkgaG90cGx1ZyB3b3JrIHNob3VsZCBiZQogICogZGVsZWdhdGVkIHRvIGJh Y2tncm91bmQgdGhyZWFkcy4gVGhlIGNhbGxlciB0YWtlcyByZXNwb25zaWJpbGl0eSBmb3IKICAq IHdhaXRpbmcgZm9yIHRob3NlIHRocmVhZHMgdG8gY29tcGxldGUgYmVmb3JlIGNhbGxpbmcgcGZu X3RvX3BhZ2UoKSBvbgogICogYW55IG5ldyBwYWdlLgorICoKKyAqIFRoZSBtZW1tYXBfc3luYygp IHJvdXRpbmUgYWxsb3dzIGZvciBvbi1kZW1hbmQgaW5pdGlhbGl6YXRpb24gb2YgYQorICogZ2l2 ZW4gcGZuIHJhbmdlIHdoZW4gYSBjYWxsZXIgaGFzIGFuIGltbWVkaWF0ZSBuZWVkIGZvciBhIHBh Z2UuCiAgKi8KIHN0cnVjdCBtZW1tYXBfYXN5bmNfc3RhdGUgewogCXN0cnVjdCBtZW1tYXBfaW5p dF9lbnYgZW52OwogCXN0cnVjdCBtZW1tYXBfaW5pdF9tZW1tYXAgbWVtbWFwOworCXN0cnVjdCBt ZW1tYXBfaW5pdF9wYWdlcyBwYWdlX2luaXRbTlJfTUVNTUFQX1RIUkVBRFNdOworCXVuc2lnbmVk IGxvbmcgYWN0aXZlW0JJVFNfVE9fTE9OR1MoTlJfTUVNTUFQX1RIUkVBRFMpXTsKKwlzdHJ1Y3Qg cmFkaXhfdHJlZV9yb290IHBmbl90b190aHJlYWQ7CiB9OwogCiBleHRlcm4gc3RydWN0IGFzeW5j X2RvbWFpbiBtZW1tYXBfaW5pdF9kb21haW47CitleHRlcm4gc3RydWN0IGFzeW5jX2RvbWFpbiBt ZW1tYXBfcGFnZXNfZG9tYWluOworZXh0ZXJuIHZvaWQgbWVtbWFwX3N5bmMocGZuX3QgcGZuLCB1 bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAorCQlzdHJ1Y3QgbWVtbWFwX2FzeW5jX3N0YXRlICphc3lu Yyk7CiAjZW5kaWYgLyogX19MSU5VWF9NRU1NQVBfQVNZTkNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9tZW1yZW1hcC5oIGIvaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oCmluZGV4IGJm ZjMxNGRlM2Y1NS4uYTIzMTNmYWRkNjg2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21lbXJl bWFwLmgKKysrIGIvaW5jbHVkZS9saW51eC9tZW1yZW1hcC5oCkBAIC0xLDYgKzEsNyBAQAogLyog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KICNpZm5kZWYgX0xJTlVYX01FTVJF TUFQX0hfCiAjZGVmaW5lIF9MSU5VWF9NRU1SRU1BUF9IXworI2luY2x1ZGUgPGxpbnV4L3Bmbi5o PgogI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPgogI2luY2x1ZGUgPGxpbnV4L3BlcmNwdS1yZWZj b3VudC5oPgogCkBAIC0xMDEsNiArMTAyLDcgQEAgdHlwZWRlZiBpbnQgKCpkZXZfcGFnZV9mYXVs dF90KShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkJCQlwbWRfdCAqcG1kcCk7CiB0eXBl ZGVmIHZvaWQgKCpkZXZfcGFnZV9mcmVlX3QpKHN0cnVjdCBwYWdlICpwYWdlLCB2b2lkICpkYXRh KTsKIAorc3RydWN0IG1lbW1hcF9hc3luY19zdGF0ZTsKIC8qKgogICogc3RydWN0IGRldl9wYWdl bWFwIC0gbWV0YWRhdGEgZm9yIFpPTkVfREVWSUNFIG1hcHBpbmdzCiAgKiBAcGFnZV9mYXVsdDog Y2FsbGJhY2sgd2hlbiBDUFUgZmF1bHQgb24gYW4gdW5hZGRyZXNzYWJsZSBkZXZpY2UgcGFnZQpA QCAtMTEyLDYgKzExNCw3IEBAIHR5cGVkZWYgdm9pZCAoKmRldl9wYWdlX2ZyZWVfdCkoc3RydWN0 IHBhZ2UgKnBhZ2UsIHZvaWQgKmRhdGEpOwogICogQGRldjogaG9zdCBkZXZpY2Ugb2YgdGhlIG1h cHBpbmcgZm9yIGRlYnVnCiAgKiBAZGF0YTogcHJpdmF0ZSBkYXRhIHBvaW50ZXIgZm9yIHBhZ2Vf ZnJlZSgpCiAgKiBAdHlwZTogbWVtb3J5IHR5cGU6IHNlZSBNRU1PUllfKiBpbiBtZW1vcnlfaG90 cGx1Zy5oCisgKiBAYXN5bmM6IGFzeW5jIG1lbW1hcCBpbml0IGNvbnRleHQKICAqLwogc3RydWN0 IGRldl9wYWdlbWFwIHsKIAlkZXZfcGFnZV9mYXVsdF90IHBhZ2VfZmF1bHQ7CkBAIC0xMjQsNiAr MTI3LDcgQEAgc3RydWN0IGRldl9wYWdlbWFwIHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXY7CiAJdm9p ZCAqZGF0YTsKIAllbnVtIG1lbW9yeV90eXBlIHR5cGU7CisJc3RydWN0IG1lbW1hcF9hc3luY19z dGF0ZSAqYXN5bmM7CiB9OwogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgb3JkZXJfYXQo c3RydWN0IHJlc291cmNlICpyZXMsIHVuc2lnbmVkIGxvbmcgcGdvZmYpCmRpZmYgLS1naXQgYS9r ZXJuZWwvbWVtcmVtYXAuYyBiL2tlcm5lbC9tZW1yZW1hcC5jCmluZGV4IGZjMmYyODAzMzQ2MC4u OTQ4ODI2YmUxNmIwIDEwMDY0NAotLS0gYS9rZXJuZWwvbWVtcmVtYXAuYworKysgYi9rZXJuZWwv bWVtcmVtYXAuYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlIDxsaW51eC9pby5oPgogI2luY2x1 ZGUgPGxpbnV4L21tLmg+CiAjaW5jbHVkZSA8bGludXgvbWVtb3J5X2hvdHBsdWcuaD4KKyNpbmNs dWRlIDxsaW51eC9tZW1tYXBfYXN5bmMuaD4KICNpbmNsdWRlIDxsaW51eC9zd2FwLmg+CiAjaW5j bHVkZSA8bGludXgvc3dhcG9wcy5oPgogI2luY2x1ZGUgPGxpbnV4L3dhaXRfYml0Lmg+CkBAIC04 OCwxNSArODksNDYgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgcGZuX25leHQodW5zaWduZWQgbG9u ZyBwZm4pCiAjZGVmaW5lIGZvcl9lYWNoX2RldmljZV9wZm4ocGZuLCBtYXApIFwKIAlmb3IgKHBm biA9IHBmbl9maXJzdChtYXApOyBwZm4gPCBwZm5fZW5kKG1hcCk7IHBmbiA9IHBmbl9uZXh0KHBm bikpCiAKK3N0YXRpYyB2b2lkIGtpbGxfbWVtbWFwX2FzeW5jKHN0cnVjdCBtZW1tYXBfYXN5bmNf c3RhdGUgKmFzeW5jKQoreworCXN0cnVjdCByYWRpeF90cmVlX2l0ZXIgaXRlcjsKKwl2b2lkICpz bG90OworCWludCBpOworCisJaWYgKCFhc3luYykKKwkJcmV0dXJuOworCisJZm9yIChpID0gMDsg aSA8IE5SX01FTU1BUF9USFJFQURTOyBpKyspIHsKKwkJYXN5bmNfY29va2llX3QgY29va2llOwor CisJCWlmICghdGVzdF9iaXQoaSwgYXN5bmMtPmFjdGl2ZSkpCisJCQljb250aW51ZTsKKworCQlj b29raWUgPSBhc3luYy0+cGFnZV9pbml0W2ldLmNvb2tpZTsKKwkJYXN5bmNfc3luY2hyb25pemVf Y29va2llX2RvbWFpbihjb29raWUrMSwgJm1lbW1hcF9wYWdlc19kb21haW4pOworCX0KKwlyYWRp eF90cmVlX2Zvcl9lYWNoX3Nsb3Qoc2xvdCwgJmFzeW5jLT5wZm5fdG9fdGhyZWFkLCAmaXRlciwg MCkKKwkJcmFkaXhfdHJlZV9kZWxldGUoJmFzeW5jLT5wZm5fdG9fdGhyZWFkLCBpdGVyLmluZGV4 KTsKK30KKwogc3RhdGljIHZvaWQgZGV2bV9tZW1yZW1hcF9wYWdlc19yZWxlYXNlKHZvaWQgKmRh dGEpCiB7CiAJc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcCA9IGRhdGE7CiAJc3RydWN0IGRldmlj ZSAqZGV2ID0gcGdtYXAtPmRldjsKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9ICZwZ21hcC0+cmVz OwogCXJlc291cmNlX3NpemVfdCBhbGlnbl9zdGFydCwgYWxpZ25fc2l6ZTsKKwlzdHJ1Y3QgbWVt bWFwX2FzeW5jX3N0YXRlICphc3luYyA9IHBnbWFwLT5hc3luYzsKIAl1bnNpZ25lZCBsb25nIHBm bjsKIAorCS8qCisJICogT25jZSB0aGUgcGdtYXAgaXMga2lsbGVkIHBnbWFwIG93bmVycyBtdXN0 IGRpc2FsbG93IG5ldworCSAqIGRpcmVjdF9hY2Nlc3MgLyBwYWdlIG1hcHBpbmcgcmVxdWVzdHMu IEkuZS4gbWVtbWFwX3N5bmMoKQorCSAqIHVzZXJzIG11c3Qgbm90IHJhY2UgdGhlIHRlYXJkb3du IG9mIHRoZSBhc3luYy0+cGZuX3RvX3RocmVhZAorCSAqIHJhZGl4LgorCSAqLwogCXBnbWFwLT5r aWxsKHBnbWFwLT5yZWYpOworCWtpbGxfbWVtbWFwX2FzeW5jKGFzeW5jKTsKKwogCWZvcl9lYWNo X2RldmljZV9wZm4ocGZuLCBwZ21hcCkKIAkJcHV0X3BhZ2UocGZuX3RvX3BhZ2UocGZuKSk7CiAK QEAgLTIxNSw3ICsyNDcsMTMgQEAgdm9pZCAqZGV2bV9tZW1yZW1hcF9wYWdlcyhzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXAsCiAJCXN0cnVjdCB6b25lICp6b25l OwogCiAJCWVycm9yID0gYXJjaF9hZGRfbWVtb3J5KG5pZCwgYWxpZ25fc3RhcnQsIGFsaWduX3Np emUsIGFsdG1hcCwKLQkJCQlmYWxzZSwgTlVMTCk7CisJCQkJZmFsc2UsIHBnbWFwLT5hc3luYyk7 CisJCWlmIChlcnJvciA9PSAtRVdPVUxEQkxPQ0spIHsKKwkJCS8qIGZhbGwgYmFjayB0byBzeW5j aHJvbm91cyAqLworCQkJcGdtYXAtPmFzeW5jID0gTlVMTDsKKwkJCWVycm9yID0gYXJjaF9hZGRf bWVtb3J5KG5pZCwgYWxpZ25fc3RhcnQsIGFsaWduX3NpemUsCisJCQkJCWFsdG1hcCwgZmFsc2Us IE5VTEwpOworCQl9CiAJCXpvbmUgPSAmTk9ERV9EQVRBKG5pZCktPm5vZGVfem9uZXNbWk9ORV9E RVZJQ0VdOwogCQlpZiAoIWVycm9yKQogCQkJbW92ZV9wZm5fcmFuZ2VfdG9fem9uZSh6b25lLCBh bGlnbl9zdGFydCA+PiBQQUdFX1NISUZULApkaWZmIC0tZ2l0IGEvbW0vcGFnZV9hbGxvYy5jIGIv bW0vcGFnZV9hbGxvYy5jCmluZGV4IDcxZTNmMDFhMTU0OC4uYjk2MTVhNTlkMjlkIDEwMDY0NAot LS0gYS9tbS9wYWdlX2FsbG9jLmMKKysrIGIvbW0vcGFnZV9hbGxvYy5jCkBAIC02OCw2ICs2OCw3 IEBACiAjaW5jbHVkZSA8bGludXgvZnRyYWNlLmg+CiAjaW5jbHVkZSA8bGludXgvbG9ja2RlcC5o PgogI2luY2x1ZGUgPGxpbnV4L2FzeW5jLmg+CisjaW5jbHVkZSA8bGludXgvcGZuX3QuaD4KICNp bmNsdWRlIDxsaW51eC9ubWkuaD4KIAogI2luY2x1ZGUgPGFzbS9zZWN0aW9ucy5oPgpAQCAtNTQ1 NSw2ICs1NDU2LDcgQEAgdm9pZCBfX3JlZiBidWlsZF9hbGxfem9uZWxpc3RzKHBnX2RhdGFfdCAq cGdkYXQpCiB9CiAKIEFTWU5DX0RPTUFJTl9FWENMVVNJVkUobWVtbWFwX2luaXRfZG9tYWluKTsK K0FTWU5DX0RPTUFJTl9FWENMVVNJVkUobWVtbWFwX3BhZ2VzX2RvbWFpbik7CiAKIHN0YXRpYyB2 b2lkIF9fbWVtaW5pdCBtZW1tYXBfaW5pdF9vbmUodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVk IGxvbmcgem9uZSwKIAkJaW50IG5pZCwgZW51bSBtZW1tYXBfY29udGV4dCBjb250ZXh0LCBzdHJ1 Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKQpAQCAtNTUwNiwxOCArNTUwOCwxMzcgQEAgc3RhdGljIHZv aWQgX19tZW1pbml0IG1lbW1hcF9pbml0X29uZSh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQg bG9uZyB6b25lLAogCX0KIH0KIAotc3RhdGljIHZvaWQgX19yZWYgbWVtbWFwX2luaXRfYXN5bmMo dm9pZCAqZGF0YSwgYXN5bmNfY29va2llX3QgY29va2llKQorc3RhdGljIHVuc2lnbmVkIGxvbmcg bWVtbWFwX3JhbmdlX3NpemUoc3RydWN0IG1lbW1hcF9pbml0X3BhZ2VzICphcmdzKQoreworCXJl dHVybiBESVZfUk9VTkRfVVAoUEhZU19QRk4oYXJncy0+cmVzLmVuZCArIDEpCisJCQktIFBIWVNf UEZOKGFyZ3MtPnJlcy5zdGFydCksIE5SX01FTU1BUF9SQU5HRSk7Cit9CisKK3N0YXRpYyB2b2lk IF9fcmVmIG1lbW1hcF9pbml0X3JhbmdlKHN0cnVjdCBtZW1tYXBfaW5pdF9wYWdlcyAqYXJncywg aW50IHJhbmdlX2lkKQogewotCXN0cnVjdCBtZW1tYXBfaW5pdF9wYWdlcyAqYXJncyA9IGRhdGE7 CiAJc3RydWN0IG1lbW1hcF9pbml0X2VudiAqZW52ID0gYXJncy0+ZW52OworCXVuc2lnbmVkIGxv bmcgcmFuZ2Vfc3RhcnQsIHJhbmdlX2VuZDsKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9ICZhcmdz LT5yZXM7Ci0JdW5zaWduZWQgbG9uZyBwZm4sIHN0YXJ0LCBlbmQ7CisJdW5zaWduZWQgbG9uZyBw Zm4sIHN0YXJ0LCBlbmQsIHJhbmdlX3NpemU7CiAKIAlzdGFydCA9IFBIWVNfUEZOKHJlcy0+c3Rh cnQpOwogCWVuZCA9IFBIWVNfUEZOKHJlcy0+ZW5kKzEpOwotCWZvciAocGZuID0gc3RhcnQ7IHBm biA8IGVuZDsgcGZuKyspCisJcmFuZ2Vfc2l6ZSA9IG1lbW1hcF9yYW5nZV9zaXplKGFyZ3MpOwor CisJbXV0ZXhfbG9jaygmYXJncy0+bG9jayk7CisJaWYgKCF0ZXN0X2FuZF9jbGVhcl9iaXQocmFu Z2VfaWQsIGFyZ3MtPnJhbmdlX3BlbmRpbmcpKSB7CisJCW11dGV4X3VubG9jaygmYXJncy0+bG9j ayk7CisJCXJldHVybjsKKwl9CisJcmFuZ2Vfc3RhcnQgPSBzdGFydCArIHJhbmdlX2lkICogcmFu Z2Vfc2l6ZTsKKwlyYW5nZV9lbmQgPSBtaW4ocmFuZ2Vfc3RhcnQgKyByYW5nZV9zaXplLCBlbmQp OworCWZvciAocGZuID0gcmFuZ2Vfc3RhcnQ7IHBmbiA8IHJhbmdlX2VuZDsgcGZuKyspCiAJCW1l bW1hcF9pbml0X29uZShwZm4sIGVudi0+em9uZSwgZW52LT5uaWQsIGVudi0+Y29udGV4dCwKIAkJ CQllbnYtPnBnbWFwKTsKKwltdXRleF91bmxvY2soJmFyZ3MtPmxvY2spOworfQorCitzdGF0aWMg dm9pZCBfX3JlZiBtZW1tYXBfaW5pdF9hc3luYyh2b2lkICpkYXRhLCBhc3luY19jb29raWVfdCBj b29raWUpCit7CisJaW50IGk7CisJc3RydWN0IG1lbW1hcF9pbml0X3BhZ2VzICphcmdzID0gZGF0 YTsKKwlzdHJ1Y3QgbWVtbWFwX2luaXRfZW52ICplbnYgPSBhcmdzLT5lbnY7CisJc3RydWN0IGRl dl9wYWdlbWFwICpwZ21hcCA9IGVudi0+cGdtYXA7CisJc3RydWN0IG1lbW1hcF9hc3luY19zdGF0 ZSAqYXN5bmMgPSBwZ21hcCA/IHBnbWFwLT5hc3luYyA6IE5VTEw7CisKKwlpZiAoYXN5bmMpCisJ CWFzeW5jX3N5bmNocm9uaXplX2Nvb2tpZV9kb21haW4oYXN5bmMtPm1lbW1hcC5jb29raWUrMSwK KwkJCQkmbWVtbWFwX2luaXRfZG9tYWluKTsKKworCWZvciAoaSA9IDA7IGkgPCBOUl9NRU1NQVBf UkFOR0U7IGkrKykKKwkJbWVtbWFwX2luaXRfcmFuZ2UoYXJncywgaSk7CisKKwlpZiAoYXN5bmMp CisJCWNsZWFyX2JpdChhcmdzLT5pZCwgYXN5bmMtPmFjdGl2ZSk7Cit9CisKK3N0YXRpYyB2b2lk IG1lbW1hcF9zeW5jX3JhbmdlKHN0cnVjdCBtZW1tYXBfaW5pdF9wYWdlcyAqYXJncywKKwkJdW5z aWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCisJCXVuc2lnbmVkIGxvbmcgcmFu Z2Vfc2l6ZSkKK3sKKwlpbnQgaSwgbnJfcmFuZ2UsIHJhbmdlX2lkOworCisJcmFuZ2VfaWQgPSAo c3RhcnQgLSBQSFlTX1BGTihhcmdzLT5yZXMuc3RhcnQpKSAvIHJhbmdlX3NpemU7CisJbnJfcmFu Z2UgPSAoZW5kIC0gc3RhcnQpIC8gcmFuZ2Vfc2l6ZTsKKwlpZiAoKGVuZCAtIHN0YXJ0KSAlIHJh bmdlX3NpemUpCisJCW5yX3JhbmdlKys7CisKKwlmb3IgKGkgPSByYW5nZV9pZDsgaSA8IHJhbmdl X2lkICsgbnJfcmFuZ2U7IGkrKykgeworCQltZW1tYXBfaW5pdF9yYW5nZShhcmdzLCBpKTsKKwkJ cHJfZGVidWcoIiVzOiB0aHJlYWQ6ICVkIHN0YXJ0OiAlI2x4IGVuZDogJSNseCByYW5nZTogJWRc biIsCisJCQkJX19mdW5jX18sIGFyZ3MtPmlkLCBzdGFydCwgZW5kLCBpKTsKKwl9Cit9CisKK3Zv aWQgbWVtbWFwX3N5bmMocGZuX3QgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAorCQlzdHJ1 Y3QgbWVtbWFwX2FzeW5jX3N0YXRlICphc3luYykKK3sKKwlzdHJ1Y3QgbWVtbWFwX2luaXRfcGFn ZXMgKmFyZ3MsICpzdGFydCwgKmVuZDsKKwl1bnNpZ25lZCBsb25nIHJhd19wZm4gPSBwZm5fdF90 b19wZm4ocGZuKTsKKworCWlmICghYXN5bmMgfHwgIXBmbl90X2hhc19wYWdlKHBmbikKKwkJCXx8 ICFiaXRtYXBfd2VpZ2h0KGFzeW5jLT5hY3RpdmUsIE5SX01FTU1BUF9USFJFQURTKSkKKwkJcmV0 dXJuOworCisJc3RhcnQgPSByYWRpeF90cmVlX2xvb2t1cCgmYXN5bmMtPnBmbl90b190aHJlYWQs IHJhd19wZm4pOworCWVuZCA9IHJhZGl4X3RyZWVfbG9va3VwKCZhc3luYy0+cGZuX3RvX3RocmVh ZCwgcmF3X3BmbiArIG5yX3BhZ2VzIC0gMSk7CisJaWYgKCFzdGFydCB8fCAhZW5kKSB7CisJCVdB Uk5fT05fT05DRSgxKTsKKwkJcmV0dXJuOworCX0KKworCWFzeW5jX3N5bmNocm9uaXplX2Nvb2tp ZV9kb21haW4oYXN5bmMtPm1lbW1hcC5jb29raWUrMSwKKwkJCSZtZW1tYXBfaW5pdF9kb21haW4p OworCisJZm9yIChhcmdzID0gc3RhcnQ7IGFyZ3MgPD0gZW5kOyBhcmdzKyspIHsKKwkJdW5zaWdu ZWQgbG9uZyByYW5nZV9zaXplID0gbWVtbWFwX3JhbmdlX3NpemUoYXJncyk7CisJCXVuc2lnbmVk IGxvbmcgZW5kID0gbWluKHJhd19wZm4gKyBucl9wYWdlcywKKwkJCQlQSFlTX1BGTihhcmdzLT5y ZXMuZW5kICsgMSkpOworCQl1bnNpZ25lZCBsb25nIHN5bmNlZDsKKworCQltZW1tYXBfc3luY19y YW5nZShhcmdzLCByYXdfcGZuLCBlbmQsIHJhbmdlX3NpemUpOworCQlzeW5jZWQgPSBlbmQgLSBy YXdfcGZuOworCQlucl9wYWdlcyAtPSBzeW5jZWQ7CisJCXJhd19wZm4gKz0gc3luY2VkOworCX0K K30KK0VYUE9SVF9TWU1CT0xfR1BMKG1lbW1hcF9zeW5jKTsKKworc3RhdGljIGJvb2wgcnVuX21l bW1hcF9pbml0KHN0cnVjdCBtZW1tYXBfaW5pdF9wYWdlcyAqdGhyZWFkLAorCQlzdHJ1Y3QgbWVt bWFwX2FzeW5jX3N0YXRlICphc3luYywgc3RydWN0IGFzeW5jX2RvbWFpbiAqZG9tYWluKQorewor CXN0cnVjdCByZXNvdXJjZSAqcmVzID0gJnRocmVhZC0+cmVzOworCXVuc2lnbmVkIGxvbmcgcGdv ZmY7CisJaW50IG9yZGVyOworCisJaWYgKCFhc3luYykgeworCQlhc3luY19zY2hlZHVsZV9kb21h aW4obWVtbWFwX2luaXRfYXN5bmMsIHRocmVhZCwgZG9tYWluKTsKKwkJcmV0dXJuIGZhbHNlOwor CX0KKworCXRocmVhZC0+Y29va2llID0gYXN5bmNfc2NoZWR1bGVfZG9tYWluKG1lbW1hcF9pbml0 X2FzeW5jLAorCQkJdGhyZWFkLCBkb21haW4pOworCXNldF9iaXQodGhyZWFkLT5pZCwgYXN5bmMt PmFjdGl2ZSk7CisJZm9yZWFjaF9vcmRlcl9wZ29mZihyZXMsIG9yZGVyLCBwZ29mZikgeworCQlp bnQgcmMgPSBfX3JhZGl4X3RyZWVfaW5zZXJ0KCZhc3luYy0+cGZuX3RvX3RocmVhZCwKKwkJCQlQ SFlTX1BGTihyZXMtPnN0YXJ0KSArIHBnb2ZmLCBvcmRlciwgdGhyZWFkKTsKKwkJaWYgKHJjKSB7 CisJCQkvKgorCQkJICogTWFyayBhbGwgdGhyZWFkcyBpbmFjdGl2ZSwgYW5kIGJ5IHJldHVybmlu ZworCQkJICogZmFsc2Ugd2UnbGwgc3luYyBhbGwgdGhyZWFkcyBiZWZvcmUgcmV0dXJuaW5nCisJ CQkgKiBmcm9tIG1lbW1hcF9pbml0X3pvbmUoKS4KKwkJCSAqLworCQkJbWVtc2V0KGFzeW5jLT5h Y3RpdmUsIDAsIHNpemVvZih1bnNpZ25lZCBsb25nKQorCQkJCQkqIEJJVFNfVE9fTE9OR1MoTlJf TUVNTUFQX1RIUkVBRFMpKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKwlyZXR1cm4gdHJ1 ZTsKIH0KIAogLyoKQEAgLTU1NTYsMzMgKzU2NzcsNDYgQEAgdm9pZCBfX21lbWluaXQgbWVtbWFw X2luaXRfem9uZSh1bnNpZ25lZCBsb25nIHNpemUsIGludCBuaWQsIHVuc2lnbmVkIGxvbmcgem9u ZSwKIAkJICogZnVuY3Rpb24uICBUaGV5IGRvIG5vdCBleGlzdCBvbiBob3RwbHVnZ2VkIG1lbW9y eS4KIAkJICovCiAJCUFTWU5DX0RPTUFJTl9FWENMVVNJVkUobG9jYWwpOwotCQlzdHJ1Y3QgbWVt bWFwX2luaXRfcGFnZXMgYXJnc1tOUl9NRU1NQVBfVEhSRUFEU107Ci0JCXN0cnVjdCBtZW1tYXBf aW5pdF9lbnYgZW52ID0gewotCQkJLm5pZCA9IG5pZCwKLQkJCS56b25lID0gem9uZSwKLQkJCS5w Z21hcCA9IHBnbWFwLAotCQkJLmNvbnRleHQgPSBjb250ZXh0LAotCQl9OworCQlzdHJ1Y3QgbWVt bWFwX2FzeW5jX3N0YXRlICphc3luYyA9IHBnbWFwID8gcGdtYXAtPmFzeW5jIDogTlVMTDsKKwkJ c3RydWN0IG1lbW1hcF9pbml0X3BhZ2VzIF9hcmdzW05SX01FTU1BUF9USFJFQURTXTsKKwkJc3Ry dWN0IG1lbW1hcF9pbml0X3BhZ2VzICphcmdzID0gYXN5bmMgPyBhc3luYy0+cGFnZV9pbml0IDog X2FyZ3M7CisJCXN0cnVjdCBhc3luY19kb21haW4gKmRvbWFpbjsKKwkJc3RydWN0IG1lbW1hcF9p bml0X2VudiBfZW52OworCQlzdHJ1Y3QgbWVtbWFwX2luaXRfZW52ICplbnYgPSBhc3luYyA/ICZh c3luYy0+ZW52IDogJl9lbnY7CiAJCXVuc2lnbmVkIGxvbmcgc3RlcCwgcmVtOworCQlib29sIHN5 bmMgPSAhYXN5bmM7CiAJCWludCBpOwogCisJCWRvbWFpbiA9IGFzeW5jID8gJm1lbW1hcF9wYWdl c19kb21haW4gOiAmbG9jYWw7CisJCWVudi0+cGdtYXAgPSBwZ21hcDsKKwkJZW52LT5uaWQgPSBu aWQ7CisJCWVudi0+em9uZSA9IHpvbmU7CisJCWVudi0+Y29udGV4dCA9IGNvbnRleHQ7CisKIAkJ c2l6ZSA9IGVuZF9wZm4gLSBzdGFydF9wZm47CiAJCXN0ZXAgPSBzaXplIC8gTlJfTUVNTUFQX1RI UkVBRFM7CiAJCXJlbSA9IHNpemUgJSBOUl9NRU1NQVBfVEhSRUFEUzsKKwkJaWYgKGFzeW5jKQor CQkJSU5JVF9SQURJWF9UUkVFKCZhc3luYy0+cGZuX3RvX3RocmVhZCwgR0ZQX0tFUk5FTCk7CiAJ CWZvciAoaSA9IDA7IGkgPCBOUl9NRU1NQVBfVEhSRUFEUzsgaSsrKSB7CiAJCQlzdHJ1Y3QgbWVt bWFwX2luaXRfcGFnZXMgKnQgPSAmYXJnc1tpXTsKIAotCQkJdC0+ZW52ID0gJmVudjsKKwkJCXQt PmlkID0gaTsKKwkJCXQtPmVudiA9IGVudjsKIAkJCXQtPnJlcy5zdGFydCA9IFBGTl9QSFlTKHN0 YXJ0X3Bmbik7CiAJCQl0LT5yZXMuZW5kID0gUEZOX1BIWVMoc3RhcnRfcGZuICsgc3RlcCkgLSAx OworCQkJbXV0ZXhfaW5pdCgmdC0+bG9jayk7CisJCQliaXRtYXBfZmlsbCh0LT5yYW5nZV9wZW5k aW5nLCBOUl9NRU1NQVBfUkFOR0UpOwogCQkJaWYgKGkgPT0gTlJfTUVNTUFQX1RIUkVBRFMtMSkK IAkJCQl0LT5yZXMuZW5kICs9IFBGTl9QSFlTKHJlbSk7CiAKLQkJCWFzeW5jX3NjaGVkdWxlX2Rv bWFpbihtZW1tYXBfaW5pdF9hc3luYywgdCwgJmxvY2FsKTsKKwkJCWlmICghcnVuX21lbW1hcF9p bml0KHQsIGFzeW5jLCBkb21haW4pKQorCQkJCXN5bmMgPSB0cnVlOwogCiAJCQlzdGFydF9wZm4g Kz0gc3RlcDsKIAkJfQotCQlhc3luY19zeW5jaHJvbml6ZV9mdWxsX2RvbWFpbigmbG9jYWwpOwor CQlpZiAoc3luYykKKwkJCWFzeW5jX3N5bmNocm9uaXplX2Z1bGxfZG9tYWluKGRvbWFpbik7CiAJ CXJldHVybjsKIAl9CiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkxpbnV4LW52ZGltbSBtYWlsaW5nIGxpc3QKTGludXgtbnZkaW1tQGxpc3RzLjAxLm9y ZwpodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW52ZGltbQo=