From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v13 3/9] efi: create new early memory allocator Date: Wed, 25 Jan 2017 23:11:27 +0100 Message-ID: <1485382293-13800-4-git-send-email-daniel.kiper@oracle.com> References: <1485382293-13800-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cWVnh-0002iw-Oq for xen-devel@lists.xenproject.org; Wed, 25 Jan 2017 22:12:21 +0000 In-Reply-To: <1485382293-13800-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, 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+CkFja2VkLWJ5OiBKYW4gQmV1bGljaCA8 amJldWxpY2hAc3VzZS5jb20+CkFja2VkLWJ5OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBh cm0uY29tPgpSZXZpZXdlZC1ieTogRG91ZyBHb2xkc3RlaW4gPGNhcmRvZUBjYXJkb2UuY29tPgpU ZXN0ZWQtYnk6IERvdWcgR29sZHN0ZWluIDxjYXJkb2VAY2FyZG9lLmNvbT4KLS0tCnYxMSAtIHN1 Z2dlc3Rpb25zL2ZpeGVzOgogICAgLSAjaWZkZWYgb25seSBFQk1BTExPQ19TSVpFIGZyb20gZWJt YWxsb2MgbWFjaGluZXJ5CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLgoKdjEwIC0g c3VnZ2VzdGlvbnMvZml4ZXM6CiAgICAtIHJlbW92ZSB1bm5lZWRlZCBBUk0gZnJlZV9lYm1hbGxv Y191bnVzZWRfbWVtKCkgc3R1Yi4KCnY5IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gY2FsbCBm cmVlX2VibWFsbG9jX3VudXNlZF9tZW0oKSBmcm9tIGVmaV9pbml0X21lbW9yeSgpCiAgICAgaW5z dGVhZCBvZiB4ZW4vYXJjaC9hcm0vc2V0dXAuYzppbml0X2RvbmUoKQogICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpLAogICAtIGltcHJvdmUgY29tbWVudHMuCgp2OCAtIHN1Z2dlc3Rpb25z L2ZpeGVzOgogICAtIGRpc2FibGUgd2hvbGUgZWJtYWxsb2MgbWFjaGluZXJ5IG9uIEFSTSBwbGF0 Zm9ybXMsCiAgIC0gYWRkIGNvbW1lbnQgc2F5aW5nIHdoYXQgc2hvdWxkIGJlIGRvbmUgYmVmb3Jl CiAgICAgZW5hYmxpbmcgZWJtYWxsb2Mgb24gQVJNLAogICAgIChzdWdnZXN0ZWQgYnkgSnVsaWVu IEdyYWxsKSwKICAgLSBtb3ZlIGVibWFsbG9jIGNvZGUgYmVmb3JlIGVmaS1ib290LmggaW5jbHVz aW9uIGFuZAogICAgIHJlbW92ZSB1bm5lZWRlZCBmb3J3YXJkIGRlY2xhcmF0aW9uCiAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcmVtb3ZlIGZyZWVfZWJtYWxsb2NfdW51c2Vk X21lbSgpIGNhbGwgZnJvbQogICAgIHhlbi9hcmNoL2FybS9zZXR1cC5jOmluaXRfZG9uZSgpCiAg ICAgKHN1Z2dlc3RlZCBieSBKdWxpZW4gR3JhbGwpLAogICAtIGltcHJvdmUgY29tbWl0IG1lc3Nh Z2UuCgp2NyAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIGVuYWJsZSBtb3N0IG9mIGVibWFsbG9j IG1hY2hpbmVyeSBvbiBBUk0gcGxhdGZvcm1zCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCksCiAgIC0gcmVtb3ZlIHVubmVlZGVkIGNhc3QKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKSwKICAgLSB3cmFwIGxvbmcgbGluZQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp LAogICAtIGltcHJvdmUgY29tbWl0IG1lc3NhZ2UuCgp2NiAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgog ICAtIG9wdGltaXplIGVibWFsbG9jIGFsbG9jYXRvciwKICAgLSBtb3ZlIGVibWFsbG9jIG1hY2hp bmVyeSB0byB4ZW4vY29tbW9uL2VmaS9ib290LmMKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKSwKICAgLSBlbmZvcmNlIFBBR0VfU0laRSBlYm1hbGxvY19tZW0gYWxpZ25tZW50CiAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZWJtYWxsb2MoKSBtdXN0IGFsbG9jYXRl IHByb3Blcmx5CiAgICAgYWxpZ25lZCBtZW1vcnkgcmVnaW9ucwogICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpLAogICAtIHByaW50aygpIHNob3VsZCB1c2UgWEVOTE9HX0lORk8KICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKS4KCnY0IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0g bW92ZSBmcm9tICMyIHNvbHV0aW9uIHRvICMyYSBzb2x1dGlvbiwKICAgLSBpbXByb3ZlIGNvbW1p dCBtZXNzYWdlLgotLS0KIHhlbi9hcmNoL3g4Ni9lZmkvZWZpLWJvb3QuaCB8ICAgMTEgKysrLS0t LS0tLQogeGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgIHwgICAgMyArLS0KIHhlbi9jb21tb24v ZWZpL2Jvb3QuYyAgICAgICB8ICAgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZWZpL2VmaS1ib290LmggYi94ZW4vYXJj aC94ODYvZWZpL2VmaS1ib290LmgKaW5kZXggMzg4YzRlYS4uNjJjMDEwZSAxMDA2NDQKLS0tIGEv eGVuL2FyY2gveDg2L2VmaS9lZmktYm9vdC5oCisrKyBiL3hlbi9hcmNoL3g4Ni9lZmkvZWZpLWJv b3QuaApAQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCByZWxvY2F0ZV90cmFt cG9saW5lKHVuc2lnbmVkIGxvbmcgcGh5cykKIAogc3RhdGljIHZvaWQgX19pbml0IHBsYWNlX3N0 cmluZyh1MzIgKmFkZHIsIGNvbnN0IGNoYXIgKnMpCiB7Ci0gICAgc3RhdGljIGNoYXIgKl9faW5p dGRhdGEgYWxsb2MgPSBzdGFydDsKKyAgICBjaGFyICphbGxvYyA9IE5VTEw7CiAKICAgICBpZiAo IHMgJiYgKnMgKQogICAgIHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGF0aWMgdm9pZCBfX2luaXQg cGxhY2Vfc3RyaW5nKHUzMiAqYWRkciwgY29uc3QgY2hhciAqcykKICAgICAgICAgY29uc3QgY2hh ciAqb2xkID0gKGNoYXIgKikobG9uZykqYWRkcjsKICAgICAgICAgc2l6ZV90IGxlbjIgPSAqYWRk ciA/IHN0cmxlbihvbGQpICsgMSA6IDA7CiAKLSAgICAgICAgYWxsb2MgLT0gbGVuMSArIGxlbjI7 CisgICAgICAgIGFsbG9jID0gZWJtYWxsb2MobGVuMSArIGxlbjIpOwogICAgICAgICAvKgogICAg ICAgICAgKiBJbnNlcnQgbmV3IHN0cmluZyBiZWZvcmUgYWxyZWFkeSBleGlzdGluZyBvbmUuIFRo aXMgaXMgbmVlZGVkCiAgICAgICAgICAqIGZvciBvcHRpb25zIHBhc3NlZCBvbiB0aGUgY29tbWFu ZCBsaW5lIHRvIG92ZXJyaWRlIG9wdGlvbnMgZnJvbQpAQCAtMjA1LDEyICsyMDUsNyBAQCBzdGF0 aWMgdm9pZCBfX2luaXQgZWZpX2FyY2hfcHJvY2Vzc19tZW1vcnlfbWFwKEVGSV9TWVNURU1fVEFC TEUgKlN5c3RlbVRhYmxlLAogCiBzdGF0aWMgdm9pZCAqX19pbml0IGVmaV9hcmNoX2FsbG9jYXRl X21tYXBfYnVmZmVyKFVJTlROIG1hcF9zaXplKQogewotICAgIHBsYWNlX3N0cmluZygmbWJpLm1l bV91cHBlciwgTlVMTCk7Ci0gICAgbWJpLm1lbV91cHBlciAtPSBtYXBfc2l6ZTsKLSAgICBtYmku bWVtX3VwcGVyICY9IC1fX2FsaWdub2ZfXyhFRklfTUVNT1JZX0RFU0NSSVBUT1IpOwotICAgIGlm ICggbWJpLm1lbV91cHBlciA8IHhlbl9waHlzX3N0YXJ0ICkKLSAgICAgICAgcmV0dXJuIE5VTEw7 Ci0gICAgcmV0dXJuICh2b2lkICopKGxvbmcpbWJpLm1lbV91cHBlcjsKKyAgICByZXR1cm4gZWJt YWxsb2MobWFwX3NpemUpOwogfQogCiBzdGF0aWMgdm9pZCBfX2luaXQgZWZpX2FyY2hfcHJlX2V4 aXRfYm9vdCh2b2lkKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJj aC94ODYvc2V0dXAuYwppbmRleCAwY2NlZjFkLi5kNGI3ZDI1IDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvc2V0dXAuYworKysgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwpAQCAtMTEyNCw4ICsxMTI0 LDcgQEAgdm9pZCBfX2luaXQgbm9yZXR1cm4gX19zdGFydF94ZW4odW5zaWduZWQgbG9uZyBtYmlf cCkKIAogICAgIGlmICggIXhlbl9waHlzX3N0YXJ0ICkKICAgICAgICAgcGFuaWMoIk5vdCBlbm91 Z2ggbWVtb3J5IHRvIHJlbG9jYXRlIFhlbi4iKTsKLSAgICByZXNlcnZlX2U4MjBfcmFtKCZib290 X2U4MjAsIGVmaV9lbmFibGVkKEVGSV9MT0FERVIpID8gbWJpLT5tZW1fdXBwZXIgOiBfX3BhKCZf c3RhcnQpLAotICAgICAgICAgICAgICAgICAgICAgX19wYSgmX2VuZCkpOworICAgIHJlc2VydmVf ZTgyMF9yYW0oJmJvb3RfZTgyMCwgX19wYSgmX3N0YXJ0KSwgX19wYSgmX2VuZCkpOwogCiAgICAg LyogTGF0ZSBrZXhlYyByZXNlcnZhdGlvbiAoZHluYW1pYyBzdGFydCBhZGRyZXNzKS4gKi8KICAg ICBrZXhlY19yZXNlcnZlX2FyZWEoJmJvb3RfZTgyMCk7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9u L2VmaS9ib290LmMgYi94ZW4vY29tbW9uL2VmaS9ib290LmMKaW5kZXggZGY4YzcwMi4uMzZkYmI3 MSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9lZmkvYm9vdC5jCisrKyBiL3hlbi9jb21tb24vZWZp L2Jvb3QuYwpAQCAtOTgsNiArOTgsNTQgQEAgc3RhdGljIENIQVIxNiBfX2luaXRkYXRhIG5ld2xp bmVbXSA9IEwiXHJcbiI7CiAjZGVmaW5lIFByaW50U3RyKHMpIFN0ZE91dC0+T3V0cHV0U3RyaW5n KFN0ZE91dCwgcykKICNkZWZpbmUgUHJpbnRFcnIocykgU3RkRXJyLT5PdXRwdXRTdHJpbmcoU3Rk RXJyLCBzKQogCisjaWZkZWYgQ09ORklHX0FSTQorLyoKKyAqIFRPRE86IEVuYWJsZSBFRkkgYm9v dCBhbGxvY2F0b3Igb24gQVJNLgorICogVGhpcyBjb2RlIGNhbiBiZSBjb21tb24gZm9yIHg4NiBh bmQgQVJNLgorICogVGhpbmdzIFRPRE8gb24gQVJNIGJlZm9yZSBlbmFibGluZyBlYm1hbGxvYzoK KyAqICAgLSBlc3RpbWF0ZSByZXF1aXJlZCBFQk1BTExPQ19TSVpFIHZhbHVlLAorICogICAtIHdo ZXJlIChpbiB3aGljaCBzZWN0aW9uKSBlYm1hbGxvY19tZW1bXSBzaG91bGQgbGl2ZTsgaWYgaW4K KyAqICAgICAuYnNzLnBhZ2VfYWxpZ25lZCwgYXMgaXQgaXMgcmlnaHQgbm93LCB0aGVuIHdob2xl IEJTUyB6ZXJvaW5nCisgKiAgICAgaGF2ZSB0byBiZSBkaXNhYmxlZCBpbiB4ZW4vYXJjaC9hcm0v YXJtNjQvaGVhZC5TOyB0aG91Z2ggQlNTCisgKiAgICAgc2hvdWxkIGJlIGluaXRpYWxpemVkIHNv bWVob3cgYmVmb3JlIHVzZSBvZiB2YXJpYWJsZXMgbGl2aW5nIHRoZXJlLAorICogICAtIHVzZSBl Ym1hbGxvYygpIGluIEFSTS9jb21tb24gRUZJIGJvb3QgY29kZSwKKyAqICAgLSBjYWxsIGZyZWVf ZWJtYWxsb2NfdW51c2VkX21lbSgpIHNvbWV3aGVyZSBpbiBpbml0IGNvZGUuCisgKi8KKyNkZWZp bmUgRUJNQUxMT0NfU0laRQlNQigwKQorI2Vsc2UKKyNkZWZpbmUgRUJNQUxMT0NfU0laRQlNQigx KQorI2VuZGlmCisKK3N0YXRpYyBjaGFyIF9fc2VjdGlvbigiLmJzcy5wYWdlX2FsaWduZWQiKSBf X2FsaWduZWQoUEFHRV9TSVpFKQorICAgIGVibWFsbG9jX21lbVtFQk1BTExPQ19TSVpFXTsKK3N0 YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdGRhdGEgZWJtYWxsb2NfYWxsb2NhdGVkOworCisvKiBF RkkgYm9vdCBhbGxvY2F0b3IuICovCitzdGF0aWMgdm9pZCBfX2luaXQgX19tYXliZV91bnVzZWQg KmVibWFsbG9jKHNpemVfdCBzaXplKQoreworICAgIHZvaWQgKnB0ciA9IGVibWFsbG9jX21lbSAr IGVibWFsbG9jX2FsbG9jYXRlZDsKKworICAgIGVibWFsbG9jX2FsbG9jYXRlZCArPSAoc2l6ZSAr IHNpemVvZih2b2lkICopIC0gMSkgJiB+KHNpemVvZih2b2lkICopIC0gMSk7CisKKyAgICBpZiAo IGVibWFsbG9jX2FsbG9jYXRlZCA+IHNpemVvZihlYm1hbGxvY19tZW0pICkKKyAgICAgICAgYmxl eGl0KEwiT3V0IG9mIHN0YXRpYyBtZW1vcnlcclxuIik7CisKKyAgICByZXR1cm4gcHRyOworfQor CitzdGF0aWMgdm9pZCBfX2luaXQgX19tYXliZV91bnVzZWQgZnJlZV9lYm1hbGxvY191bnVzZWRf bWVtKHZvaWQpCit7CisgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOworCisgICAgc3RhcnQg PSAodW5zaWduZWQgbG9uZyllYm1hbGxvY19tZW0gKyBQQUdFX0FMSUdOKGVibWFsbG9jX2FsbG9j YXRlZCk7CisgICAgZW5kID0gKHVuc2lnbmVkIGxvbmcpZWJtYWxsb2NfbWVtICsgc2l6ZW9mKGVi bWFsbG9jX21lbSk7CisKKyAgICBkZXN0cm95X3hlbl9tYXBwaW5ncyhzdGFydCwgZW5kKTsKKyAg ICBpbml0X3hlbmhlYXBfcGFnZXMoX19wYShzdGFydCksIF9fcGEoZW5kKSk7CisKKyAgICBwcmlu dGsoWEVOTE9HX0lORk8gIkZyZWVkICVsdWtCIHVudXNlZCBCU1MgbWVtb3J5XG4iLCAoZW5kIC0g c3RhcnQpID4+IDEwKTsKK30KKwogLyoKICAqIEluY2x1ZGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmlj IGltcGxlbWVudGF0aW9uIGhlcmUsIHdoaWNoIHJlZmVyZW5jZXMgdGhlCiAgKiBzdGF0aWMgZ2xv YmFscyBkZWZpbmVkIGFib3ZlLgpAQCAtMTI1MSw2ICsxMjk5LDggQEAgdm9pZCBfX2luaXQgZWZp X2luaXRfbWVtb3J5KHZvaWQpCiAgICAgfSAqZXh0cmEsICpleHRyYV9oZWFkID0gTlVMTDsKICNl bmRpZgogCisgICAgZnJlZV9lYm1hbGxvY191bnVzZWRfbWVtKCk7CisKICAgICBpZiAoICFlZmlf ZW5hYmxlZChFRklfQk9PVCkgKQogICAgICAgICByZXR1cm47CiAKLS0gCjEuNy4xMC40CgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==