From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932181Ab2JJBxg (ORCPT ); Tue, 9 Oct 2012 21:53:36 -0400 Received: from mail-bk0-f46.google.com ([209.85.214.46]:49405 "EHLO mail-bk0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755250Ab2JJBxe (ORCPT ); Tue, 9 Oct 2012 21:53:34 -0400 MIME-Version: 1.0 In-Reply-To: <1349827115-16600-7-git-send-email-yinghai@kernel.org> References: <1349827115-16600-1-git-send-email-yinghai@kernel.org> <1349827115-16600-7-git-send-email-yinghai@kernel.org> Date: Tue, 9 Oct 2012 18:53:31 -0700 X-Google-Sender-Auth: 5oRuxSeefMv6tV5rsdGhl8Nk9q0 Message-ID: Subject: Re: [PATCH 6/7] x86, mm: setup page table from top-down From: Yinghai Lu To: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Jacob Shin , Tejun Heo Cc: Stefano Stabellini , linux-kernel@vger.kernel.org, Yinghai Lu Content-Type: multipart/mixed; boundary=0015175cd7eacd889c04cbaab8f1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --0015175cd7eacd889c04cbaab8f1 Content-Type: text/plain; charset=ISO-8859-1 On Tue, Oct 9, 2012 at 4:58 PM, Yinghai Lu wrote: > Get pgt_buf early from BRK, and use it to map PMD_SIZE to top at first. > then use page from PMD_SIZE to map next blow range. > > alloc_low_page will use page from BRK at first, then will switch to use > to memblock to find and reserve page for page table usage. > > At last we could get rid of calculation and find early pgt related code. > > Suggested-by: "H. Peter Anvin" > Signed-off-by: Yinghai Lu sorry , there one typo in this patch, please use attached one instead. --0015175cd7eacd889c04cbaab8f1 Content-Type: application/octet-stream; name="fix_max_pfn_xx_13.patch" Content-Disposition: attachment; filename="fix_max_pfn_xx_13.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h83sbjt90 U3ViamVjdDogW1BBVENIXSB4ODYsIG1tOiBzZXR1cCBwYWdlIHRhYmxlIGZyb20gdG9wLWRvd24K CkdldCBwZ3RfYnVmIGVhcmx5IGZyb20gQlJLLCBhbmQgdXNlIGl0IHRvIG1hcCBQTURfU0laRSB0 byB0b3AgYXQgZmlyc3QuCnRoZW4gdXNlIHBhZ2UgZnJvbSBQTURfU0laRSB0byBtYXAgbmV4dCBi bG93IHJhbmdlLgoKYWxsb2NfbG93X3BhZ2Ugd2lsbCB1c2UgcGFnZSBmcm9tIEJSSyBhdCBmaXJz dCwgdGhlbiB3aWxsIHN3aXRjaCB0byB1c2UKdG8gbWVtYmxvY2sgdG8gZmluZCBhbmQgcmVzZXJ2 ZSBwYWdlIGZvciBwYWdlIHRhYmxlIHVzYWdlLgoKQXQgbGFzdCB3ZSBjb3VsZCBnZXQgcmlkIG9m IGNhbGN1bGF0aW9uIGFuZCBmaW5kIGVhcmx5IHBndCByZWxhdGVkIGNvZGUuCgpTdWdnZXN0ZWQt Ynk6ICJILiBQZXRlciBBbnZpbiIgPGhwYUB6eXRvci5jb20+ClNpZ25lZC1vZmYtYnk6IFlpbmdo YWkgTHUgPHlpbmdoYWlAa2VybmVsLm9yZz4KCi0tLQogYXJjaC94ODYvaW5jbHVkZS9hc20vcGFn ZV90eXBlcy5oIHwgICAgMSAKIGFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaCAgICB8ICAg IDEgCiBhcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYyAgICAgICAgICAgfCAgICAzIAogYXJjaC94ODYv bW0vaW5pdC5jICAgICAgICAgICAgICAgIHwgIDE4OCArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogYXJjaC94ODYvbW0vaW5pdF8zMi5jICAgICAgICAgICAgIHwgICAxNyAr Ky0KIGFyY2gveDg2L21tL2luaXRfNjQuYyAgICAgICAgICAgICB8ICAgMTcgKystCiA2IGZpbGVz IGNoYW5nZWQsIDcxIGluc2VydGlvbnMoKyksIDE1NiBkZWxldGlvbnMoLSkKCkluZGV4OiBsaW51 eC0yLjYvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4 LTIuNi5vcmlnL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaAorKysgbGludXgtMi42L2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaApAQCAtNjAzLDYgKzYwMyw3IEBAIHN0YXRpYyBp bmxpbmUgaW50IHBnZF9ub25lKHBnZF90IHBnZCkKIAogZXh0ZXJuIGludCBkaXJlY3RfZ2JwYWdl czsKIHZvaWQgaW5pdF9tZW1fbWFwcGluZyh2b2lkKTsKK3ZvaWQgZWFybHlfYWxsb2NfcGd0X2J1 Zih2b2lkKTsKIAogLyogbG9jYWwgcHRlIHVwZGF0ZXMgbmVlZCBub3QgdXNlIHhjaGcgZm9yIGxv Y2tpbmcgKi8KIHN0YXRpYyBpbmxpbmUgcHRlX3QgbmF0aXZlX2xvY2FsX3B0ZXBfZ2V0X2FuZF9j bGVhcihwdGVfdCAqcHRlcCkKSW5kZXg6IGxpbnV4LTIuNi9hcmNoL3g4Ni9rZXJuZWwvc2V0dXAu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9hcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYwor KysgbGludXgtMi42L2FyY2gveDg2L2tlcm5lbC9zZXR1cC5jCkBAIC0xMjMsNiArMTIzLDcgQEAK ICAqLwogdW5zaWduZWQgbG9uZyBtYXhfbG93X3Bmbl9tYXBwZWQ7CiB1bnNpZ25lZCBsb25nIG1h eF9wZm5fbWFwcGVkOwordW5zaWduZWQgbG9uZyBtaW5fcGZuX21hcHBlZDsKIAogI2lmZGVmIENP TkZJR19ETUkKIFJFU0VSVkVfQlJLKGRtaV9hbGxvYywgNjU1MzYpOwpAQCAtODk2LDYgKzg5Nyw4 IEBAIHZvaWQgX19pbml0IHNldHVwX2FyY2goY2hhciAqKmNtZGxpbmVfcCkKIAogCXJlc2VydmVf aWJmdF9yZWdpb24oKTsKIAorCWVhcmx5X2FsbG9jX3BndF9idWYoKTsKKwogCS8qCiAJICogTmVl ZCB0byBjb25jbHVkZSBicmssIGJlZm9yZSBtZW1ibG9ja194ODZfZmlsbCgpCiAJICogIGl0IGNv dWxkIHVzZSBtZW1ibG9ja19maW5kX2luX3JhbmdlLCBjb3VsZCBvdmVybGFwIHdpdGgKSW5kZXg6 IGxpbnV4LTIuNi9hcmNoL3g4Ni9tbS9pbml0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42Lm9y aWcvYXJjaC94ODYvbW0vaW5pdC5jCisrKyBsaW51eC0yLjYvYXJjaC94ODYvbW0vaW5pdC5jCkBA IC0yMjMsMTA1ICsyMjMsNiBAQCBzdGF0aWMgaW50IF9fbWVtaW5pdCBzcGxpdF9tZW1fcmFuZ2Uo c3RyCiAJcmV0dXJuIG5yX3JhbmdlOwogfQogCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQg Y2FsY3VsYXRlX3RhYmxlX3NwYWNlX3NpemUodW5zaWduZWQgbG9uZyBzdGFydCwKLQkJCQkJICB1 bnNpZ25lZCBsb25nIGVuZCkKLXsKLQl1bnNpZ25lZCBsb25nIHB1ZHMgPSAwLCBwbWRzID0gMCwg cHRlcyA9IDAsIHRhYmxlczsKLQlzdHJ1Y3QgbWFwX3JhbmdlIG1yW05SX1JBTkdFX01SXTsKLQlp bnQgbnJfcmFuZ2UsIGk7Ci0KLQlwcl9pbmZvKCJjYWxjdWxhdGVfdGFibGVfc3BhY2Vfc2l6ZTog W21lbSAlIzAxMGx4LSUjMDEwbHhdXG4iLAotCSAgICAgICBzdGFydCwgZW5kIC0gMSk7Ci0KLQlt ZW1zZXQobXIsIDAsIHNpemVvZihtcikpOwotCW5yX3JhbmdlID0gMDsKLQlucl9yYW5nZSA9IHNw bGl0X21lbV9yYW5nZShtciwgbnJfcmFuZ2UsIHN0YXJ0LCBlbmQpOwotCi0JZm9yIChpID0gMDsg aSA8IG5yX3JhbmdlOyBpKyspIHsKLQkJdW5zaWduZWQgbG9uZyByYW5nZSwgZXh0cmE7Ci0KLQkJ cmFuZ2UgPSBtcltpXS5lbmQgLSBtcltpXS5zdGFydDsKLQkJcHVkcyArPSAocmFuZ2UgKyBQVURf U0laRSAtIDEpID4+IFBVRF9TSElGVDsKLQotCQlpZiAobXJbaV0ucGFnZV9zaXplX21hc2sgJiAo MSA8PCBQR19MRVZFTF8xRykpIHsKLQkJCWV4dHJhID0gcmFuZ2UgLSAoKHJhbmdlID4+IFBVRF9T SElGVCkgPDwgUFVEX1NISUZUKTsKLQkJCXBtZHMgKz0gKGV4dHJhICsgUE1EX1NJWkUgLSAxKSA+ PiBQTURfU0hJRlQ7Ci0JCX0gZWxzZQotCQkJcG1kcyArPSAocmFuZ2UgKyBQTURfU0laRSAtIDEp ID4+IFBNRF9TSElGVDsKLQotCQlpZiAobXJbaV0ucGFnZV9zaXplX21hc2sgJiAoMSA8PCBQR19M RVZFTF8yTSkpIHsKLQkJCWV4dHJhID0gcmFuZ2UgLSAoKHJhbmdlID4+IFBNRF9TSElGVCkgPDwg UE1EX1NISUZUKTsKLSNpZmRlZiBDT05GSUdfWDg2XzMyCi0JCQlleHRyYSArPSBQTURfU0laRTsK LSNlbmRpZgotCQkJLyogVGhlIGZpcnN0IDIvNE0gZG9lc24ndCB1c2UgbGFyZ2UgcGFnZXMuICov Ci0JCQlpZiAobXJbaV0uc3RhcnQgPCBQTURfU0laRSkKLQkJCQlleHRyYSArPSBQTURfU0laRSAt IG1yW2ldLnN0YXJ0OwotCi0JCQlwdGVzICs9IChleHRyYSArIFBBR0VfU0laRSAtIDEpID4+IFBB R0VfU0hJRlQ7Ci0JCX0gZWxzZQotCQkJcHRlcyArPSAocmFuZ2UgKyBQQUdFX1NJWkUgLSAxKSA+ PiBQQUdFX1NISUZUOwotCX0KLQotCXRhYmxlcyA9IHJvdW5kdXAocHVkcyAqIHNpemVvZihwdWRf dCksIFBBR0VfU0laRSk7Ci0JdGFibGVzICs9IHJvdW5kdXAocG1kcyAqIHNpemVvZihwbWRfdCks IFBBR0VfU0laRSk7Ci0JdGFibGVzICs9IHJvdW5kdXAocHRlcyAqIHNpemVvZihwdGVfdCksIFBB R0VfU0laRSk7Ci0KLSNpZmRlZiBDT05GSUdfWDg2XzMyCi0JLyogZm9yIGZpeG1hcCAqLwotCXRh YmxlcyArPSByb3VuZHVwKF9fZW5kX29mX2ZpeGVkX2FkZHJlc3NlcyAqIHNpemVvZihwdGVfdCks IFBBR0VfU0laRSk7Ci0jZW5kaWYKLQotCXJldHVybiB0YWJsZXM7Ci19Ci0KLXN0YXRpYyB1bnNp Z25lZCBsb25nIF9faW5pdCBjYWxjdWxhdGVfYWxsX3RhYmxlX3NwYWNlX3NpemUodm9pZCkKLXsK LQl1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgZW5kX3BmbjsKLQl1bnNpZ25lZCBsb25nIHRhYmxl czsKLQlpbnQgaTsKLQotCS8qIHRoZSBJU0EgcmFuZ2UgaXMgYWx3YXlzIG1hcHBlZCByZWdhcmRs ZXNzIG9mIG1lbW9yeSBob2xlcyAqLwotCXRhYmxlcyA9IGNhbGN1bGF0ZV90YWJsZV9zcGFjZV9z aXplKDAsIElTQV9FTkRfQUREUkVTUyk7Ci0KLQlmb3JfZWFjaF9tZW1fcGZuX3JhbmdlKGksIE1B WF9OVU1OT0RFUywgJnN0YXJ0X3BmbiwgJmVuZF9wZm4sIE5VTEwpIHsKLQkJdTY0IHN0YXJ0ID0g c3RhcnRfcGZuIDw8IFBBR0VfU0hJRlQ7Ci0JCXU2NCBlbmQgPSBlbmRfcGZuIDw8IFBBR0VfU0hJ RlQ7Ci0KLQkJaWYgKGVuZCA8PSBJU0FfRU5EX0FERFJFU1MpCi0JCQljb250aW51ZTsKLQotCQlp ZiAoc3RhcnQgPCBJU0FfRU5EX0FERFJFU1MpCi0JCQlzdGFydCA9IElTQV9FTkRfQUREUkVTUzsK LSNpZmRlZiBDT05GSUdfWDg2XzMyCi0JCS8qIG9uIDMyIGJpdCwgd2Ugb25seSBtYXAgdXAgdG8g bWF4X2xvd19wZm4gKi8KLQkJaWYgKChzdGFydCA+PiBQQUdFX1NISUZUKSA+PSBtYXhfbG93X3Bm bikKLQkJCWNvbnRpbnVlOwotCi0JCWlmICgoZW5kID4+IFBBR0VfU0hJRlQpID4gbWF4X2xvd19w Zm4pCi0JCQllbmQgPSBtYXhfbG93X3BmbiA8PCBQQUdFX1NISUZUOwotI2VuZGlmCi0JCXRhYmxl cyArPSBjYWxjdWxhdGVfdGFibGVfc3BhY2Vfc2l6ZShzdGFydCwgZW5kKTsKLQl9Ci0KLQlyZXR1 cm4gdGFibGVzOwotfQotCi1zdGF0aWMgdm9pZCBfX2luaXQgZmluZF9lYXJseV90YWJsZV9zcGFj ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LAotCQkJCQkgIHVuc2lnbmVkIGxvbmcgZ29vZF9lbmQsCi0J CQkJCSAgdW5zaWduZWQgbG9uZyB0YWJsZXMpCi17Ci0JcGh5c19hZGRyX3QgYmFzZTsKLQotCWJh c2UgPSBtZW1ibG9ja19maW5kX2luX3JhbmdlKHN0YXJ0LCBnb29kX2VuZCwgdGFibGVzLCBQQUdF X1NJWkUpOwotCWlmICghYmFzZSkKLQkJcGFuaWMoIkNhbm5vdCBmaW5kIHNwYWNlIGZvciB0aGUg a2VybmVsIHBhZ2UgdGFibGVzIik7Ci0KLQlwZ3RfYnVmX3N0YXJ0ID0gYmFzZSA+PiBQQUdFX1NI SUZUOwotCXBndF9idWZfZW5kID0gcGd0X2J1Zl9zdGFydDsKLQlwZ3RfYnVmX3RvcCA9IHBndF9i dWZfc3RhcnQgKyAodGFibGVzID4+IFBBR0VfU0hJRlQpOwotfQotCiBzdGF0aWMgc3RydWN0IHJh bmdlIHBmbl9tYXBwZWRbRTgyMF9YX01BWF07CiBzdGF0aWMgaW50IG5yX3Bmbl9tYXBwZWQ7CiAK QEAgLTM4NiwyMiArMjg3LDE3IEBAIHVuc2lnbmVkIGxvbmcgX19pbml0X3JlZm9rIGluaXRfbWVt b3J5X20KIH0KIAogLyoKLSAqIEl0ZXJhdGUgdGhyb3VnaCBFODIwIG1lbW9yeSBtYXAgYW5kIGNy ZWF0ZSBkaXJlY3QgbWFwcGluZ3MgZm9yIG9ubHkgRTgyMF9SQU0KLSAqIHJlZ2lvbnMuIFdlIGNh bm5vdCBzaW1wbHkgY3JlYXRlIGRpcmVjdCBtYXBwaW5ncyBmb3IgYWxsIHBmbnMgZnJvbQotICog WzAgdG8gbWF4X2xvd19wZm4pIGFuZCBbNEdCIHRvIG1heF9wZm4pIGJlY2F1c2Ugb2YgcG9zc2li bGUgbWVtb3J5IGhvbGVzIGluCi0gKiBoaWdoIGFkZHJlc3NlcyB0aGF0IGNhbm5vdCBiZSBtYXJr ZWQgYXMgVUMgYnkgZml4ZWQvdmFyaWFibGUgcmFuZ2UgTVRSUnMuCi0gKiBEZXBlbmRpbmcgb24g dGhlIGFsaWdubWVudCBvZiBFODIwIHJhbmdlcywgdGhpcyBtYXkgcG9zc2libHkgcmVzdWx0IGlu IHVzaW5nCi0gKiBzbWFsbGVyIHNpemUgKGkuZS4gNEsgaW5zdGVhZCBvZiAyTSBvciAxRykgcGFn ZSB0YWJsZXMuCisgKiB0aGlzIG9uZSBjb3VsZCB0YWtlIHJhbmdlIHdpdGggaG9sZSBpbiBpdAog ICovCi1zdGF0aWMgdm9pZCBfX2luaXQgaW5pdF9hbGxfbWVtb3J5X21hcHBpbmcodW5zaWduZWQg bG9uZyBhbGxfc3RhcnQsCitzdGF0aWMgdm9pZCBfX2luaXQgaW5pdF9yYW5nZV9tZW1vcnlfbWFw cGluZyh1bnNpZ25lZCBsb25nIGFsbF9zdGFydCwKIAkJCQkJICAgdW5zaWduZWQgbG9uZyBhbGxf ZW5kKQogewogCXVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCBlbmRfcGZuOwogCWludCBpOwogCiAJ Zm9yX2VhY2hfbWVtX3Bmbl9yYW5nZShpLCBNQVhfTlVNTk9ERVMsICZzdGFydF9wZm4sICZlbmRf cGZuLCBOVUxMKSB7Ci0JCXU2NCBzdGFydCA9IHN0YXJ0X3BmbiA8PCBQQUdFX1NISUZUOwotCQl1 NjQgZW5kID0gZW5kX3BmbiA8PCBQQUdFX1NISUZUOworCQl1NjQgc3RhcnQgPSAodTY0KXN0YXJ0 X3BmbiA8PCBQQUdFX1NISUZUOworCQl1NjQgZW5kID0gKHU2NCllbmRfcGZuIDw8IFBBR0VfU0hJ RlQ7CiAKIAkJaWYgKGVuZCA8PSBhbGxfc3RhcnQpCiAJCQljb250aW51ZTsKQEAgLTQyMSw2NyAr MzE3LDU5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBpbml0X2FsbF9tZW1vcnlfbWFwcGkKIAogdm9p ZCBfX2luaXQgaW5pdF9tZW1fbWFwcGluZyh2b2lkKQogewotCXVuc2lnbmVkIGxvbmcgdGFibGVz LCBnb29kX2VuZCwgZW5kOworCXVuc2lnbmVkIGxvbmcgZW5kLCBzdGFydCwgbGFzdF9zdGFydDsK Kwl1bnNpZ25lZCBsb25nIHN0ZXBfc2l6ZTsKIAogCXByb2JlX3BhZ2Vfc2l6ZV9tYXNrKCk7CiAK LQkvKgotCSAqIEZpbmQgc3BhY2UgZm9yIHRoZSBrZXJuZWwgZGlyZWN0IG1hcHBpbmcgdGFibGVz LgotCSAqCi0JICogTGF0ZXIgd2Ugc2hvdWxkIGFsbG9jYXRlIHRoZXNlIHRhYmxlcyBpbiB0aGUg bG9jYWwgbm9kZSBvZiB0aGUKLQkgKiBtZW1vcnkgbWFwcGVkLiBVbmZvcnR1bmF0ZWx5IHRoaXMg aXMgZG9uZSBjdXJyZW50bHkgYmVmb3JlIHRoZQotCSAqIG5vZGVzIGFyZSBkaXNjb3ZlcmVkLgot CSAqLwogI2lmZGVmIENPTkZJR19YODZfNjQKIAllbmQgPSBtYXhfcGZuIDw8IFBBR0VfU0hJRlQ7 Ci0JZ29vZF9lbmQgPSBlbmQ7CiAjZWxzZQogCWVuZCA9IG1heF9sb3dfcGZuIDw8IFBBR0VfU0hJ RlQ7Ci0JZ29vZF9lbmQgPSBtYXhfcGZuX21hcHBlZCA8PCBQQUdFX1NISUZUOwogI2VuZGlmCi0J dGFibGVzID0gY2FsY3VsYXRlX2FsbF90YWJsZV9zcGFjZV9zaXplKCk7Ci0JZmluZF9lYXJseV90 YWJsZV9zcGFjZSgwLCBnb29kX2VuZCwgdGFibGVzKTsKLQlwcmludGsoS0VSTl9ERUJVRyAia2Vy bmVsIGRpcmVjdCBtYXBwaW5nIHRhYmxlcyB1cCB0byAlI2x4IEAgW21lbSAlIzAxMGx4LSUjMDEw bHhdIHByZWFsbG9jXG4iLAotCQllbmQgLSAxLCBwZ3RfYnVmX3N0YXJ0IDw8IFBBR0VfU0hJRlQs Ci0JCShwZ3RfYnVmX3RvcCA8PCBQQUdFX1NISUZUKSAtIDEpOwogCi0JbWF4X3Bmbl9tYXBwZWQg PSAwOyAvKiB3aWxsIGdldCBleGFjdCB2YWx1ZSBuZXh0ICovCiAJLyogdGhlIElTQSByYW5nZSBp cyBhbHdheXMgbWFwcGVkIHJlZ2FyZGxlc3Mgb2YgbWVtb3J5IGhvbGVzICovCiAJaW5pdF9tZW1v cnlfbWFwcGluZygwLCBJU0FfRU5EX0FERFJFU1MpOwotCWluaXRfYWxsX21lbW9yeV9tYXBwaW5n KElTQV9FTkRfQUREUkVTUywgZW5kKTsKKworCS8qIHN0ZXBfc2l6ZSBuZWVkIHRvIGJlIHNtYWxs IHNvIHBndF9idWYgZnJvbSBCUksgY291bGQgY292ZXIgaXQgKi8KKwlzdGVwX3NpemUgPSBQTURf U0laRTsKKwltYXhfcGZuX21hcHBlZCA9IDA7IC8qIHdpbGwgZ2V0IGV4YWN0IHZhbHVlIG5leHQg Ki8KKwltaW5fcGZuX21hcHBlZCA9IGVuZCA+PiBQQUdFX1NISUZUOworCWxhc3Rfc3RhcnQgPSBz dGFydCA9IGVuZDsKKwl3aGlsZSAobGFzdF9zdGFydCA+IElTQV9FTkRfQUREUkVTUykgeworCQlp ZiAobGFzdF9zdGFydCA+IHN0ZXBfc2l6ZSkgeworCQkJc3RhcnQgPSByb3VuZF9kb3duKGxhc3Rf c3RhcnQgLSAxLCBzdGVwX3NpemUpOworCQkJaWYgKHN0YXJ0IDwgSVNBX0VORF9BRERSRVNTKQor CQkJCXN0YXJ0ID0gSVNBX0VORF9BRERSRVNTOworCQl9IGVsc2UKKwkJCXN0YXJ0ID0gSVNBX0VO RF9BRERSRVNTOworCQlpbml0X3JhbmdlX21lbW9yeV9tYXBwaW5nKHN0YXJ0LCBsYXN0X3N0YXJ0 KTsKKwkJbGFzdF9zdGFydCA9IHN0YXJ0OworCQltaW5fcGZuX21hcHBlZCA9IGxhc3Rfc3RhcnQg Pj4gUEFHRV9TSElGVDsKKwkJc3RlcF9zaXplIDw8PSA1OworCX0KKwogI2lmZGVmIENPTkZJR19Y ODZfNjQKIAlpZiAobWF4X3BmbiA+IG1heF9sb3dfcGZuKSB7CiAJCS8qIGNhbiB3ZSBwcmVzZXZl IG1heF9sb3dfcGZuID8qLwogCQltYXhfbG93X3BmbiA9IG1heF9wZm47CiAJfQogI2VuZGlmCi0J LyoKLQkgKiBSZXNlcnZlIHRoZSBrZXJuZWwgcGFnZXRhYmxlIHBhZ2VzIHdlIHVzZWQgKHBndF9i dWZfc3RhcnQgLQotCSAqIHBndF9idWZfZW5kKSBhbmQgZnJlZSB0aGUgb3RoZXIgb25lcyAocGd0 X2J1Zl9lbmQgLSBwZ3RfYnVmX3RvcCkKLQkgKiBzbyB0aGF0IHRoZXkgY2FuIGJlIHJldXNlZCBm b3Igb3RoZXIgcHVycG9zZXMuCi0JICoKLQkgKiBPbiBuYXRpdmUgaXQganVzdCBtZWFucyBjYWxs aW5nIG1lbWJsb2NrX3Jlc2VydmUsIG9uIFhlbiBpdCBhbHNvCi0JICogbWVhbnMgbWFya2luZyBS VyB0aGUgcGFnZXRhYmxlIHBhZ2VzIHRoYXQgd2UgYWxsb2NhdGVkIGJlZm9yZQotCSAqIGJ1dCB0 aGF0IGhhdmVuJ3QgYmVlbiB1c2VkLgotCSAqCi0JICogSW4gZmFjdCBvbiB4ZW4gd2UgbWFyayBS TyB0aGUgd2hvbGUgcmFuZ2UgcGd0X2J1Zl9zdGFydCAtCi0JICogcGd0X2J1Zl90b3AsIGJlY2F1 c2Ugd2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCB3aGVuCi0JICogaW5pdF9tZW1vcnlfbWFwcGlu ZyByZWFjaGVzIHRoZSBwYWdldGFibGUgcGFnZXMgYXJlYSwgaXQgbWFwcwotCSAqIFJPIGFsbCB0 aGUgcGFnZXRhYmxlIHBhZ2VzLCBpbmNsdWRpbmcgdGhlIG9uZXMgdGhhdCBhcmUgYmV5b25kCi0J ICogcGd0X2J1Zl9lbmQgYXQgdGhhdCB0aW1lLgotCSAqLwotCWlmIChwZ3RfYnVmX2VuZCA+IHBn dF9idWZfc3RhcnQpIHsKLQkJcHJpbnRrKEtFUk5fREVCVUcgImtlcm5lbCBkaXJlY3QgbWFwcGlu ZyB0YWJsZXMgdXAgdG8gJSNseCBAIFttZW0gJSMwMTBseC0lIzAxMGx4XSBmaW5hbFxuIiwKLQkJ CWVuZCAtIDEsIHBndF9idWZfc3RhcnQgPDwgUEFHRV9TSElGVCwKLQkJCShwZ3RfYnVmX2VuZCA8 PCBQQUdFX1NISUZUKSAtIDEpOwotCQl4ODZfaW5pdC5tYXBwaW5nLnBhZ2V0YWJsZV9yZXNlcnZl KFBGTl9QSFlTKHBndF9idWZfc3RhcnQpLAotCQkJCVBGTl9QSFlTKHBndF9idWZfZW5kKSk7Ci0J fQorCWVhcmx5X21lbXRlc3QoMCwgbWF4X3Bmbl9tYXBwZWQgPDwgUEFHRV9TSElGVCk7Cit9CiAK LQkvKiBzdG9wIHRoZSB3cm9uZyB1c2luZyAqLwotCXBndF9idWZfdG9wID0gMDsKKy8qIG5lZWQg MyA0ayBmb3IgaW5pdGlhbCBQTURfU0laRSwgNGsgZm9yIDAtSVNBX0VORF9BRERSRVNTICovCitS RVNFUlZFX0JSSyhlYXJseV9wZ3RfYWxsb2MsIDE2Mzg0KTsKK3ZvaWQgIF9faW5pdCBlYXJseV9h bGxvY19wZ3RfYnVmKHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyB0YWJsZXMgPSAxNjM4NDsKKwlw aHlzX2FkZHJfdCBiYXNlOwogCi0JZWFybHlfbWVtdGVzdCgwLCBtYXhfcGZuX21hcHBlZCA8PCBQ QUdFX1NISUZUKTsKKwliYXNlID0gX19wYShleHRlbmRfYnJrKHRhYmxlcywgUEFHRV9TSVpFKSk7 CisKKwlwZ3RfYnVmX3N0YXJ0ID0gYmFzZSA+PiBQQUdFX1NISUZUOworCXBndF9idWZfZW5kID0g cGd0X2J1Zl9zdGFydDsKKwlwZ3RfYnVmX3RvcCA9IHBndF9idWZfc3RhcnQgKyAodGFibGVzID4+ IFBBR0VfU0hJRlQpOwogfQogCiAvKgpJbmRleDogbGludXgtMi42L2FyY2gveDg2L2luY2x1ZGUv YXNtL3BhZ2VfdHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9wYWdlX3R5cGVzLmgKKysrIGxpbnV4LTIuNi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9wYWdlX3R5cGVzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgZXh0ZXJuIGludCBkZXZtZW1faXNfYWxs b3dlZCh1bnNpZ25lZCBsbwogCiBleHRlcm4gdW5zaWduZWQgbG9uZyBtYXhfbG93X3Bmbl9tYXBw ZWQ7CiBleHRlcm4gdW5zaWduZWQgbG9uZyBtYXhfcGZuX21hcHBlZDsKK2V4dGVybiB1bnNpZ25l ZCBsb25nIG1pbl9wZm5fbWFwcGVkOwogCiBzdGF0aWMgaW5saW5lIHBoeXNfYWRkcl90IGdldF9t YXhfbWFwcGVkKHZvaWQpCiB7CkluZGV4OiBsaW51eC0yLjYvYXJjaC94ODYvbW0vaW5pdF8zMi5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi5vcmlnL2FyY2gveDg2L21tL2luaXRfMzIuYworKysg bGludXgtMi42L2FyY2gveDg2L21tL2luaXRfMzIuYwpAQCAtNjEsMTEgKzYxLDIyIEBAIGJvb2wg X19yZWFkX21vc3RseSBfX3ZtYWxsb2Nfc3RhcnRfc2V0ID0KIAogc3RhdGljIF9faW5pdCB2b2lk ICphbGxvY19sb3dfcGFnZSh2b2lkKQogewotCXVuc2lnbmVkIGxvbmcgcGZuID0gcGd0X2J1Zl9l bmQrKzsKKwl1bnNpZ25lZCBsb25nIHBmbjsKIAl2b2lkICphZHI7CiAKLQlpZiAocGZuID49IHBn dF9idWZfdG9wKQotCQlwYW5pYygiYWxsb2NfbG93X3BhZ2U6IHJhbiBvdXQgb2YgbWVtb3J5Iik7 CisJaWYgKChwZ3RfYnVmX2VuZCArIDEpID49IHBndF9idWZfdG9wKSB7CisJCXVuc2lnbmVkIGxv bmcgcmV0OworCQlpZiAobWluX3Bmbl9tYXBwZWQgPj0gbWF4X3Bmbl9tYXBwZWQpCisJCQlwYW5p YygiYWxsb2NfbG93X3BhZ2U6IHJhbiBvdXQgb2YgbWVtb3J5Iik7CisJCXJldCA9IG1lbWJsb2Nr X2ZpbmRfaW5fcmFuZ2UobWluX3Bmbl9tYXBwZWQgPDwgUEFHRV9TSElGVCwKKwkJCQkJbWF4X3Bm bl9tYXBwZWQgPDwgUEFHRV9TSElGVCwKKwkJCQkJUEFHRV9TSVpFLCBQQUdFX1NJWkUpOworCQlp ZiAoIXJldCkKKwkJCXBhbmljKCJhbGxvY19sb3dfcGFnZTogY2FuIG5vdCBhbGxvYyBtZW1vcnki KTsKKwkJbWVtYmxvY2tfcmVzZXJ2ZShyZXQsIFBBR0VfU0laRSk7CisJCXBmbiA9IHJldCA+PiBQ QUdFX1NISUZUOworCX0gZWxzZQorCQlwZm4gPSBwZ3RfYnVmX2VuZCsrOwogCiAJYWRyID0gX192 YShwZm4gKiBQQUdFX1NJWkUpOwogCWNsZWFyX3BhZ2UoYWRyKTsKSW5kZXg6IGxpbnV4LTIuNi9h cmNoL3g4Ni9tbS9pbml0XzY0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42Lm9yaWcvYXJjaC94 ODYvbW0vaW5pdF82NC5jCisrKyBsaW51eC0yLjYvYXJjaC94ODYvbW0vaW5pdF82NC5jCkBAIC0z MTYsNyArMzE2LDcgQEAgdm9pZCBfX2luaXQgY2xlYW51cF9oaWdobWFwKHZvaWQpCiAKIHN0YXRp YyBfX3JlZiB2b2lkICphbGxvY19sb3dfcGFnZSh1bnNpZ25lZCBsb25nICpwaHlzKQogewotCXVu c2lnbmVkIGxvbmcgcGZuID0gcGd0X2J1Zl9lbmQrKzsKKwl1bnNpZ25lZCBsb25nIHBmbjsKIAl2 b2lkICphZHI7CiAKIAlpZiAoYWZ0ZXJfYm9vdG1lbSkgewpAQCAtMzI2LDggKzMyNiwxOSBAQCBz dGF0aWMgX19yZWYgdm9pZCAqYWxsb2NfbG93X3BhZ2UodW5zaWduCiAJCXJldHVybiBhZHI7CiAJ fQogCi0JaWYgKHBmbiA+PSBwZ3RfYnVmX3RvcCkKLQkJcGFuaWMoImFsbG9jX2xvd19wYWdlOiBy YW4gb3V0IG9mIG1lbW9yeSIpOworCWlmICgocGd0X2J1Zl9lbmQgKyAxKSA+PSBwZ3RfYnVmX3Rv cCkgeworCQl1bnNpZ25lZCBsb25nIHJldDsKKwkJaWYgKG1pbl9wZm5fbWFwcGVkID49IG1heF9w Zm5fbWFwcGVkKQorCQkJcGFuaWMoImFsbG9jX2xvd19wYWdlOiByYW4gb3V0IG9mIG1lbW9yeSIp OworCQlyZXQgPSBtZW1ibG9ja19maW5kX2luX3JhbmdlKG1pbl9wZm5fbWFwcGVkIDw8IFBBR0Vf U0hJRlQsCisJCQkJCW1heF9wZm5fbWFwcGVkIDw8IFBBR0VfU0hJRlQsCisJCQkJCVBBR0VfU0la RSwgUEFHRV9TSVpFKTsKKwkJaWYgKCFyZXQpCisJCQlwYW5pYygiYWxsb2NfbG93X3BhZ2U6IGNh biBub3QgYWxsb2MgbWVtb3J5Iik7CisJCW1lbWJsb2NrX3Jlc2VydmUocmV0LCBQQUdFX1NJWkUp OworCQlwZm4gPSByZXQgPj4gUEFHRV9TSElGVDsKKwl9IGVsc2UKKwkJcGZuID0gcGd0X2J1Zl9l bmQrKzsKIAogCWFkciA9IGVhcmx5X21lbXJlbWFwKHBmbiAqIFBBR0VfU0laRSwgUEFHRV9TSVpF KTsKIAljbGVhcl9wYWdlKGFkcik7Cg== --0015175cd7eacd889c04cbaab8f1--