From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v8 06/13] efi: create new early memory allocator Date: Thu, 29 Sep 2016 00:51:25 +0200 Message-ID: <1475103092-27893-7-git-send-email-daniel.kiper@oracle.com> References: <1475103092-27893-1-git-send-email-daniel.kiper@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bpNiD-0004Nx-BB for xen-devel@lists.xenproject.org; Wed, 28 Sep 2016 22:52:25 +0000 In-Reply-To: <1475103092-27893-1-git-send-email-daniel.kiper@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: jgross@suse.com, sstabellini@kernel.org, andrew.cooper3@citrix.com, cardoe@cardoe.com, pgnet.dev@gmail.com, ning.sun@intel.com, julien.grall@arm.com, david.vrabel@citrix.com, jbeulich@suse.com, qiaowei.ren@intel.com, gang.wei@intel.com, fu.wei@linaro.org List-Id: xen-devel@lists.xenproject.org VGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggcGxhY2Vfc3RyaW5nKCkgd2hpY2ggaXMgdXNlZCBhcyBl YXJseSBtZW1vcnkKYWxsb2NhdG9yLiBJdCBnZXRzIG1lbW9yeSBjaHVua3Mgc3RhcnRpbmcgZnJv bSBzdGFydCBzeW1ib2wgYW5kIGdvZXMKZG93bi4gU2FkbHkgdGhpcyBkb2VzIG5vdCB3b3JrIHdo ZW4gWGVuIGlzIGxvYWRlZCB1c2luZyBtdWx0aWJvb3QyCnByb3RvY29sIGJlY2F1c2UgdGhlbiB0 aGUgc3RhcnQgbGl2ZXMgb24gMSBNaUIgYWRkcmVzcyBhbmQgd2Ugc2hvdWxkCm5vdCBhbGxvY2F0 ZSBhIG1lbW9yeSBmcm9tIGJlbG93IG9mIGl0LiBTbywgSSB0cmllZCB0byB1c2UgbWVtX2xvd2Vy CmFkZHJlc3MgY2FsY3VsYXRlZCBieSBHUlVCMi4gSG93ZXZlciwgdGhpcyBzb2x1dGlvbiB3b3Jr cyBvbmx5IG9uIHNvbWUKbWFjaGluZXMuIFRoZXJlIGFyZSBtYWNoaW5lcyBpbiB0aGUgd2lsZCAo ZS5nLiBEZWxsIFBvd2VyRWRnZSBSODIwKQp3aGljaCB1c2VzIGZpcnN0IH42NDAgS2lCIGZvciBi b290IHNlcnZpY2VzIGNvZGUgb3IgZGF0YS4uLiA6LSgoKApIZW5jZSwgd2UgbmVlZCBuZXcgbWVt b3J5IGFsbG9jYXRvciBmb3IgWGVuIEVGSSBib290IGNvZGUgd2hpY2ggaXMKcXVpdGUgc2ltcGxl IGFuZCBnZW5lcmljIGFuZCBjb3VsZCBiZSB1c2VkIGJ5IHBsYWNlX3N0cmluZygpIGFuZAplZmlf YXJjaF9hbGxvY2F0ZV9tbWFwX2J1ZmZlcigpLiBJIHRoaW5rIGFib3V0IGZvbGxvd2luZyBzb2x1 dGlvbnM6CgoxKSBXZSBjb3VsZCB1c2UgbmF0aXZlIEVGSSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyAo ZS5nLiBBbGxvY2F0ZVBvb2woKQogICBvciBBbGxvY2F0ZVBhZ2VzKCkpIHRvIGdldCBtZW1vcnkg Y2h1bmsuIEhvd2V2ZXIsIGxhdGVyIChzb21ld2hlcmUKICAgaW4gX19zdGFydF94ZW4oKSkgd2Ug bXVzdCBjb3B5IGl0cyBjb250ZW50cyB0byBzYWZlIHBsYWNlIG9yIHJlc2VydmUKICAgaXQgaW4g ZTgyMCBtZW1vcnkgbWFwIGFuZCBtYXAgaXQgaW4gWGVuIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4g VGhpcwogICBtZWFucyB0aGF0IHRoZSBjb2RlIHJlZmVycmluZyB0byBYZW4gY29tbWFuZCBsaW5l LCBsb2FkZWQgbW9kdWxlcyBhbmQKICAgRUZJIG1lbW9yeSBtYXAsIG1vc3RseSBpbiBfX3N0YXJ0 X3hlbigpLCB3aWxsIGJlIGZ1cnRoZXIgY29tcGxpY2F0ZWQKICAgYW5kIGRpdmVyZ2UgZnJvbSBs ZWdhY3kgQklPUyBjYXNlcy4gQWRkaXRpb25hbGx5LCBib3RoIGZvcm1lciB0aGluZ3MKICAgaGF2 ZSB0byBiZSBwbGFjZWQgYmVsb3cgNCBHaUIgYmVjYXVzZSB0aGVpciBhZGRyZXNzZXMgYXJlIHN0 b3JlZCBpbgogICBtdWx0aWJvb3RfaW5mb190IHN0cnVjdHVyZSB3aGljaCBoYXMgMzItYml0IHJl bGV2YW50IG1lbWJlcnMuCgoyKSBXZSBtYXkgYWxsb2NhdGUgbWVtb3J5IGFyZWEgc3RhdGljYWxs eSBzb21ld2hlcmUgaW4gWGVuIGNvZGUgd2hpY2gKICAgY291bGQgYmUgdXNlZCBhcyBtZW1vcnkg cG9vbCBmb3IgZWFybHkgZHluYW1pYyBhbGxvY2F0aW9ucy4gTG9va3MKICAgcXVpdGUgc2ltcGxl LiBBZGRpdGlvbmFsbHksIGl0IHdvdWxkIG5vdCBkZXBlbmQgb24gRUZJIGF0IGFsbCBhbmQKICAg Y291bGQgYmUgdXNlZCBvbiBsZWdhY3kgQklPUyBwbGF0Zm9ybXMgaWYgd2UgbmVlZCBpdC4gSG93 ZXZlciwgd2UKICAgbXVzdCBjYXJlZnVsbHkgY2hvb3NlIHNpemUgb2YgdGhpcyBwb29sLiBXZSBk byBub3Qgd2FudCBpbmNyZWFzZSBYZW4KICAgYmluYXJ5IHNpemUgdG9vIG11Y2ggYW5kIHdhc3Rl IHRvbyBtdWNoIG1lbW9yeSBidXQgYWxzbyB3ZSBtdXN0IGZpdAogICBhdCBsZWFzdCBtZW1vcnkg bWFwIG9uIHg4NiBFRkkgcGxhdGZvcm1zLiBBcyBJIHNhdyBvbiBzbWFsbCBtYWNoaW5lLAogICBl LmcuIElCTSBTeXN0ZW0geDM1NTAgTTIgd2l0aCA4IEdpQiBSQU0sIG1lbW9yeSBtYXAgbWF5IGNv bnRhaW4gbW9yZQogICB0aGFuIDIwMCBlbnRyaWVzLiBFdmVyeSBlbnRyeSBvbiB4ODYtNjQgcGxh dGZvcm0gaXMgNDAgYnl0ZXMgaW4gc2l6ZS4KICAgU28sIGl0IG1lYW5zIHRoYXQgd2UgbmVlZCBt b3JlIHRoYW4gOCBLaUIgZm9yIEVGSSBtZW1vcnkgbWFwIG9ubHkuCiAgIEFkZGl0aW9uYWxseSwg aWYgd2UgdXNlIHRoaXMgbWVtb3J5IHBvb2wgZm9yIFhlbiBhbmQgbW9kdWxlcyBjb21tYW5kCiAg IGxpbmUgc3RvcmFnZSAoaXQgd291bGQgYmUgdXNlZCB3aGVuIHhlbi5lZmkgaXMgZXhlY3V0ZWQg YXMgRUZJIGFwcGxpY2F0aW9uKQogICB0aGVuIHdlIHNob3VsZCBhZGQsIEkgdGhpbmssIGFib3V0 IDEgS2lCLiBJbiB0aGlzIGNhc2UsIHRvIGJlIG9uIHNhZmUKICAgc2lkZSwgd2Ugc2hvdWxkIGFz c3VtZSBhdCBsZWFzdCA2NCBLaUIgcG9vbCBmb3IgZWFybHkgbWVtb3J5IGFsbG9jYXRpb25zLgog ICBXaGljaCBpcyBhYm91dCA0IHRpbWVzIG9mIG91ciBlYXJsaWVyIGNhbGN1bGF0aW9ucy4gSG93 ZXZlciwgZHVyaW5nCiAgIGRpc2N1c3Npb24gb24gWGVuLWRldmVsIEphbiBCZXVsaWNoIHN1Z2dl c3RlZCB0aGF0IGp1c3QgaW4gY2FzZSB3ZSBzaG91bGQKICAgdXNlIDEgTWlCIG1lbW9yeSBwb29s IGxpa2UgaXQgaXMgaW4gb3JpZ2luYWwgcGxhY2Vfc3RyaW5nKCkgaW1wbGVtZW50YXRpb24uCiAg IFNvLCBsZXQncyB1c2UgMSBNaUIgYXMgaXQgd2FzIHByb3Bvc2VkLiBJZiB3ZSB0aGluayB0aGF0 IHdlIHNob3VsZCBub3QKICAgd2FzdGUgdW5hbGxvY2F0ZWQgbWVtb3J5IGluIHRoZSBwb29sIG9u IHJ1bm5pbmcgc3lzdGVtIHRoZW4gd2UgY2FuIG1hcmsKICAgdGhpcyByZWdpb24gYXMgX19pbml0 ZGF0YSBhbmQgbW92ZSBhbGwgcmVxdWlyZWQgZGF0YSB0byBkeW5hbWljYWxseQogICBhbGxvY2F0 ZWQgcGxhY2VzIHNvbWV3aGVyZSBpbiBfX3N0YXJ0X3hlbigpLgoKMmEpIFdlIGNvdWxkIHB1dCBt ZW1vcnkgcG9vbCBpbnRvIC5ic3MucGFnZV9hbGlnbmVkIHNlY3Rpb24uIFRoZW4gYWxsb2NhdGUK ICAgIG1lbW9yeSBjaHVua3Mgc3RhcnRpbmcgZnJvbSB0aGUgbG93ZXN0IGFkZHJlc3MuIEFmdGVy IGluaXQgcGhhc2Ugd2UgY2FuCiAgICBmcmVlIHVudXNlZCBwb3J0aW9uIG9mIHRoZSBtZW1vcnkg cG9vbCBhcyBpbiBjYXNlIG9mIC5pbml0LnRleHQgb3IgLmluaXQuZGF0YQogICAgc2VjdGlvbnMu IFRoaXMgd2F5IHdlIGRvIG5vdCBuZWVkIHRvIGFsbG9jYXRlIGFueSBzcGFjZSBpbiBpbWFnZSBm aWxlIGFuZAogICAgZnJlZWluZyBvZiB1bnVzZWQgYXJlYSBpbiB0aGUgbWVtb3J5IHBvb2wgaXMg dmVyeSBzaW1wbGUuCgpOb3cgIzJhIHNvbHV0aW9uIGlzIGltcGxlbWVudGVkIGJlY2F1c2UgaXQg aXMgcXVpdGUgc2ltcGxlIGFuZCByZXF1aXJlcwpsaW1pdGVkIG51bWJlciBvZiBjaGFuZ2VzLCBl c3BlY2lhbGx5IGluIF9fc3RhcnRfeGVuKCkuCgpOZXcgYWxsb2NhdG9yIGlzIHF1aXRlIGdlbmVy aWMgYW5kIGNhbiBiZSB1c2VkIG9uIEFSTSBwbGF0Zm9ybXMgdG9vLgpUaG91Z2ggaXQgaXMgbm90 IGVuYWJsZWQgb24gQVJNIHlldCBkdWUgdG8gbGFjayBvZiBzb21lIHByZXJlcS4KTGlzdCBvZiB0 aGVtIGlzIHBsYWNlZCBiZWZvcmUgZWJtYWxsb2MgY29kZS4KClNpZ25lZC1vZmYtYnk6IERhbmll bCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+Ci0tLQp2OCAtIHN1Z2dlc3Rpb25zL2Zp eGVzOgogICAtIGRpc2FibGUgd2hvbGUgZWJtYWxsb2MgbWFjaGluZXJ5IG9uIEFSTSBwbGF0Zm9y bXMsCiAgIC0gYWRkIGNvbW1lbnQgc2F5aW5nIHdoYXQgc2hvdWxkIGJlIGRvbmUgYmVmb3JlCiAg ICAgZW5hYmxpbmcgZWJtYWxsb2Mgb24gQVJNLAogICAgIChzdWdnZXN0ZWQgYnkgSnVsaWVuIEdy YWxsKSwKICAgLSBtb3ZlIGVibWFsbG9jIGNvZGUgYmVmb3JlIGVmaS1ib290LmggaW5jbHVzaW9u IGFuZAogICAgIHJlbW92ZSB1bm5lZWRlZCBmb3J3YXJkIGRlY2xhcmF0aW9uCiAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcmVtb3ZlIGZyZWVfZWJtYWxsb2NfdW51c2VkX21l bSgpIGNhbGwgZnJvbQogICAgIHhlbi9hcmNoL2FybS9zZXR1cC5jOmluaXRfZG9uZSgpCiAgICAg KHN1Z2dlc3RlZCBieSBKdWxpZW4gR3JhbGwpLAogICAtIGltcHJvdmUgY29tbWl0IG1lc3NhZ2Uu Cgp2NyAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIGVuYWJsZSBtb3N0IG9mIGVibWFsbG9jIG1h Y2hpbmVyeSBvbiBBUk0gcGxhdGZvcm1zCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCks CiAgIC0gcmVtb3ZlIHVubmVlZGVkIGNhc3QKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KSwKICAgLSB3cmFwIGxvbmcgbGluZQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAog ICAtIGltcHJvdmUgY29tbWl0IG1lc3NhZ2UuCgp2NiAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAt IG9wdGltaXplIGVibWFsbG9jIGFsbG9jYXRvciwKICAgLSBtb3ZlIGVibWFsbG9jIG1hY2hpbmVy eSB0byB4ZW4vY29tbW9uL2VmaS9ib290LmMKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KSwKICAgLSBlbmZvcmNlIFBBR0VfU0laRSBlYm1hbGxvY19tZW0gYWxpZ25tZW50CiAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZWJtYWxsb2MoKSBtdXN0IGFsbG9jYXRlIHBy b3Blcmx5CiAgICAgYWxpZ25lZCBtZW1vcnkgcmVnaW9ucwogICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpLAogICAtIHByaW50aygpIHNob3VsZCB1c2UgWEVOTE9HX0lORk8KICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKS4KCnY0IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gbW92 ZSBmcm9tICMyIHNvbHV0aW9uIHRvICMyYSBzb2x1dGlvbiwKICAgLSBpbXByb3ZlIGNvbW1pdCBt ZXNzYWdlLgotLS0KIHhlbi9hcmNoL3g4Ni9lZmkvZWZpLWJvb3QuaCB8ICAgMTEgKysrLS0tLS0t LQogeGVuL2FyY2gveDg2L2VmaS9zdHViLmMgICAgIHwgICAgMiArKwogeGVuL2FyY2gveDg2L3Nl dHVwLmMgICAgICAgIHwgICAgNSArKystLQogeGVuL2NvbW1vbi9lZmkvYm9vdC5jICAgICAgIHwg ICA1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5j bHVkZS94ZW4vZWZpLmggICAgICAgfCAgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0 aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2VmaS9l ZmktYm9vdC5oIGIveGVuL2FyY2gveDg2L2VmaS9lZmktYm9vdC5oCmluZGV4IDM4OGM0ZWEuLjYy YzAxMGUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9lZmkvZWZpLWJvb3QuaAorKysgYi94ZW4v YXJjaC94ODYvZWZpL2VmaS1ib290LmgKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgdm9pZCBf X2luaXQgcmVsb2NhdGVfdHJhbXBvbGluZSh1bnNpZ25lZCBsb25nIHBoeXMpCiAKIHN0YXRpYyB2 b2lkIF9faW5pdCBwbGFjZV9zdHJpbmcodTMyICphZGRyLCBjb25zdCBjaGFyICpzKQogewotICAg IHN0YXRpYyBjaGFyICpfX2luaXRkYXRhIGFsbG9jID0gc3RhcnQ7CisgICAgY2hhciAqYWxsb2Mg PSBOVUxMOwogCiAgICAgaWYgKCBzICYmICpzICkKICAgICB7CkBAIC0xMjIsNyArMTIyLDcgQEAg c3RhdGljIHZvaWQgX19pbml0IHBsYWNlX3N0cmluZyh1MzIgKmFkZHIsIGNvbnN0IGNoYXIgKnMp CiAgICAgICAgIGNvbnN0IGNoYXIgKm9sZCA9IChjaGFyICopKGxvbmcpKmFkZHI7CiAgICAgICAg IHNpemVfdCBsZW4yID0gKmFkZHIgPyBzdHJsZW4ob2xkKSArIDEgOiAwOwogCi0gICAgICAgIGFs bG9jIC09IGxlbjEgKyBsZW4yOworICAgICAgICBhbGxvYyA9IGVibWFsbG9jKGxlbjEgKyBsZW4y KTsKICAgICAgICAgLyoKICAgICAgICAgICogSW5zZXJ0IG5ldyBzdHJpbmcgYmVmb3JlIGFscmVh ZHkgZXhpc3Rpbmcgb25lLiBUaGlzIGlzIG5lZWRlZAogICAgICAgICAgKiBmb3Igb3B0aW9ucyBw YXNzZWQgb24gdGhlIGNvbW1hbmQgbGluZSB0byBvdmVycmlkZSBvcHRpb25zIGZyb20KQEAgLTIw NSwxMiArMjA1LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IGVmaV9hcmNoX3Byb2Nlc3NfbWVtb3J5 X21hcChFRklfU1lTVEVNX1RBQkxFICpTeXN0ZW1UYWJsZSwKIAogc3RhdGljIHZvaWQgKl9faW5p dCBlZmlfYXJjaF9hbGxvY2F0ZV9tbWFwX2J1ZmZlcihVSU5UTiBtYXBfc2l6ZSkKIHsKLSAgICBw bGFjZV9zdHJpbmcoJm1iaS5tZW1fdXBwZXIsIE5VTEwpOwotICAgIG1iaS5tZW1fdXBwZXIgLT0g bWFwX3NpemU7Ci0gICAgbWJpLm1lbV91cHBlciAmPSAtX19hbGlnbm9mX18oRUZJX01FTU9SWV9E RVNDUklQVE9SKTsKLSAgICBpZiAoIG1iaS5tZW1fdXBwZXIgPCB4ZW5fcGh5c19zdGFydCApCi0g ICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiAodm9pZCAqKShsb25nKW1iaS5tZW1fdXBw ZXI7CisgICAgcmV0dXJuIGVibWFsbG9jKG1hcF9zaXplKTsKIH0KIAogc3RhdGljIHZvaWQgX19p bml0IGVmaV9hcmNoX3ByZV9leGl0X2Jvb3Qodm9pZCkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9lZmkvc3R1Yi5jIGIveGVuL2FyY2gveDg2L2VmaS9zdHViLmMKaW5kZXggNDE1ODEyNC4uYmM5 OTE5YyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2VmaS9zdHViLmMKKysrIGIveGVuL2FyY2gv eDg2L2VmaS9zdHViLmMKQEAgLTksNiArOSw4IEBAIGJvb2wgZWZpX2VuYWJsZWQodW5zaWduZWQg aW50IGZlYXR1cmUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIF9faW5pdCBmcmVlX2Vi bWFsbG9jX3VudXNlZF9tZW0odm9pZCkgeyB9CisKIHZvaWQgX19pbml0IGVmaV9pbml0X21lbW9y eSh2b2lkKSB7IH0KIAogdm9pZCBlZmlfdXBkYXRlX2w0X3BndGFibGUodW5zaWduZWQgaW50IGw0 aWR4LCBsNF9wZ2VudHJ5X3QgbDRlKSB7IH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zZXR1 cC5jIGIveGVuL2FyY2gveDg2L3NldHVwLmMKaW5kZXggMDZmMzk3MC4uNWIxNzc4MyAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L3NldHVwLmMKKysrIGIveGVuL2FyY2gveDg2L3NldHVwLmMKQEAg LTUyMCw2ICs1MjAsOCBAQCBzdGF0aWMgdm9pZCBub2lubGluZSBpbml0X2RvbmUodm9pZCkKIAog ICAgIHN5c3RlbV9zdGF0ZSA9IFNZU19TVEFURV9hY3RpdmU7CiAKKyAgICBmcmVlX2VibWFsbG9j X3VudXNlZF9tZW0oKTsKKwogICAgIC8qIE1VU1QgYmUgZG9uZSBwcmlvciB0byByZW1vdmluZyAu aW5pdCBkYXRhLiAqLwogICAgIHVucmVnaXN0ZXJfaW5pdF92aXJ0dWFsX3JlZ2lvbigpOwogCkBA IC0xMDgwLDggKzEwODIsNyBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1bnNp Z25lZCBsb25nIG1iaV9wKQogCiAgICAgaWYgKCAheGVuX3BoeXNfc3RhcnQgKQogICAgICAgICBw YW5pYygiTm90IGVub3VnaCBtZW1vcnkgdG8gcmVsb2NhdGUgWGVuLiIpOwotICAgIHJlc2VydmVf ZTgyMF9yYW0oJmJvb3RfZTgyMCwgZWZpX2VuYWJsZWQoRUZJX0xPQURFUikgPyBtYmktPm1lbV91 cHBlciA6IF9fcGEoJl9zdGFydCksCi0gICAgICAgICAgICAgICAgICAgICBfX3BhKCZfZW5kKSk7 CisgICAgcmVzZXJ2ZV9lODIwX3JhbSgmYm9vdF9lODIwLCBfX3BhKCZfc3RhcnQpLCBfX3BhKCZf ZW5kKSk7CiAKICAgICAvKiBMYXRlIGtleGVjIHJlc2VydmF0aW9uIChkeW5hbWljIHN0YXJ0IGFk ZHJlc3MpLiAqLwogICAgIGtleGVjX3Jlc2VydmVfYXJlYSgmYm9vdF9lODIwKTsKZGlmZiAtLWdp dCBhL3hlbi9jb21tb24vZWZpL2Jvb3QuYyBiL3hlbi9jb21tb24vZWZpL2Jvb3QuYwppbmRleCAx ZWY1ZDBiLi5mYzc2Njk1IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2VmaS9ib290LmMKKysrIGIv eGVuL2NvbW1vbi9lZmkvYm9vdC5jCkBAIC05OCw2ICs5OCw1NiBAQCBzdGF0aWMgQ0hBUjE2IF9f aW5pdGRhdGEgbmV3bGluZVtdID0gTCJcclxuIjsKICNkZWZpbmUgUHJpbnRTdHIocykgU3RkT3V0 LT5PdXRwdXRTdHJpbmcoU3RkT3V0LCBzKQogI2RlZmluZSBQcmludEVycihzKSBTdGRFcnItPk91 dHB1dFN0cmluZyhTdGRFcnIsIHMpCiAKKyNpZm5kZWYgQ09ORklHX0FSTQorCisvKgorICogVE9E TzogRW5hYmxlIEVGSSBib290IGFsbG9jYXRvciBvbiBBUk0uCisgKiBUaGlzIGNvZGUgY2FuIGJl IGNvbW1vbiBmb3IgeDg2IGFuZCBBUk0uCisgKiBUaGluZ3MgVE9ETyBvbiBBUk0gYmVmb3JlIGVu YWJsaW5nIGVibWFsbG9jOgorICogICAtIGVzdGltYXRlIHJlcXVpcmVkIEVCTUFMTE9DX1NJWkUg dmFsdWUsCisgKiAgIC0gd2hlcmUgKGluIHdoaWNoIHNlY3Rpb24pIGVibWFsbG9jX21lbVtdCisg KiAgICAgc2hvdWxkIGxpdmU7IGlmIGluIC5ic3MucGFnZV9hbGlnbmVkCisgKiAgICAgdGhlbiB3 aG9sZSBCU1MgemVyb2luZyBoYXZlIHRvIGJlCisgKiAgICAgZGlzYWJsZWQgaW4geGVuL2FyY2gv YXJtL2FybTY0L2hlYWQuUzsKKyAqICAgICB0aG91Z2ggQlNTIHNob3VsZCBiZSBpbml0aWFsaXpl ZCBzb21laG93CisgKiAgICAgYmVmb3JlIHVzZSBvZiB2YXJpYWJsZXMgbGl2aW5nIHRoZXJlLAor ICogICAtIGFkZCBmcmVlX2VibWFsbG9jX3VudXNlZF9tZW0oKSBjYWxsIHRvCisgKiAgICAgZS5n LiB4ZW4vYXJjaC9hcm0vc2V0dXAuYzppbml0X2RvbmUoKS4KKyAqLworCisjZGVmaW5lIEVCTUFM TE9DX1NJWkUJTUIoMSkKKworc3RhdGljIGNoYXIgX19zZWN0aW9uKCIuYnNzLnBhZ2VfYWxpZ25l ZCIpIF9fYWxpZ25lZChQQUdFX1NJWkUpCisgICAgZWJtYWxsb2NfbWVtW0VCTUFMTE9DX1NJWkVd Oworc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0ZGF0YSBlYm1hbGxvY19hbGxvY2F0ZWQ7CisK Ky8qIEVGSSBib290IGFsbG9jYXRvci4gKi8KK3N0YXRpYyB2b2lkIF9faW5pdCAqZWJtYWxsb2Mo c2l6ZV90IHNpemUpCit7CisgICAgdm9pZCAqcHRyID0gZWJtYWxsb2NfbWVtICsgZWJtYWxsb2Nf YWxsb2NhdGVkOworCisgICAgZWJtYWxsb2NfYWxsb2NhdGVkICs9IChzaXplICsgc2l6ZW9mKHZv aWQgKikgLSAxKSAmIH4oc2l6ZW9mKHZvaWQgKikgLSAxKTsKKworICAgIGlmICggZWJtYWxsb2Nf YWxsb2NhdGVkID4gc2l6ZW9mKGVibWFsbG9jX21lbSkgKQorICAgICAgICBibGV4aXQoTCJPdXQg b2Ygc3RhdGljIG1lbW9yeVxyXG4iKTsKKworICAgIHJldHVybiBwdHI7Cit9CisKK3ZvaWQgX19p bml0IGZyZWVfZWJtYWxsb2NfdW51c2VkX21lbSh2b2lkKQoreworICAgIHVuc2lnbmVkIGxvbmcg c3RhcnQsIGVuZDsKKworICAgIHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpZWJtYWxsb2NfbWVtICsg UEFHRV9BTElHTihlYm1hbGxvY19hbGxvY2F0ZWQpOworICAgIGVuZCA9ICh1bnNpZ25lZCBsb25n KWVibWFsbG9jX21lbSArIHNpemVvZihlYm1hbGxvY19tZW0pOworCisgICAgZGVzdHJveV94ZW5f bWFwcGluZ3Moc3RhcnQsIGVuZCk7CisgICAgaW5pdF94ZW5oZWFwX3BhZ2VzKF9fcGEoc3RhcnQp LCBfX3BhKGVuZCkpOworCisgICAgcHJpbnRrKFhFTkxPR19JTkZPICJGcmVlZCAlbHVrQiB1bnVz ZWQgQlNTIG1lbW9yeVxuIiwgKGVuZCAtIHN0YXJ0KSA+PiAxMCk7Cit9CisjZW5kaWYKKwogLyoK ICAqIEluY2x1ZGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGhlcmUsIHdo aWNoIHJlZmVyZW5jZXMgdGhlCiAgKiBzdGF0aWMgZ2xvYmFscyBkZWZpbmVkIGFib3ZlLgpkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2VmaS5oIGIveGVuL2luY2x1ZGUveGVuL2VmaS5oCmlu ZGV4IDY4YzY4YTguLjZjN2Y2MDEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9lZmkuaAor KysgYi94ZW4vaW5jbHVkZS94ZW4vZWZpLmgKQEAgLTMyLDYgKzMyLDcgQEAgc3RydWN0IHhlbnBm X2VmaV9ydW50aW1lX2NhbGw7CiBzdHJ1Y3QgY29tcGF0X3BmX2VmaV9ydW50aW1lX2NhbGw7CiAK IGJvb2wgZWZpX2VuYWJsZWQodW5zaWduZWQgaW50IGZlYXR1cmUpOwordm9pZCBmcmVlX2VibWFs bG9jX3VudXNlZF9tZW0odm9pZCk7CiB2b2lkIGVmaV9pbml0X21lbW9yeSh2b2lkKTsKIGJvb2xf dCBlZmlfcnNfdXNpbmdfcGd0YWJsZXModm9pZCk7CiB1bnNpZ25lZCBsb25nIGVmaV9nZXRfdGlt ZSh2b2lkKTsKLS0gCjEuNy4xMC40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==