From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v12 04/10] efi: create new early memory allocator Date: Fri, 20 Jan 2017 02:34:14 +0100 Message-ID: <1484876060-2236-5-git-send-email-daniel.kiper@oracle.com> References: <1484876060-2236-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cUO6c-0000gM-Bj for xen-devel@lists.xenproject.org; Fri, 20 Jan 2017 01:35:06 +0000 In-Reply-To: <1484876060-2236-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, konrad.wilk@oracle.com, 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 cm0uY29tPgpSZXZpZXdlZC1ieTogRG91ZyBHb2xkc3RlaW4gPGNhcmRvZUBjYXJkb2UuY29tPgot LS0KdjExIC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgICAtICNpZmRlZiBvbmx5IEVCTUFMTE9DX1NJ WkUgZnJvbSBlYm1hbGxvYyBtYWNoaW5lcnkKICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkuCgp2MTAgLSBzdWdnZXN0aW9ucy9maXhlczoKICAgIC0gcmVtb3ZlIHVubmVlZGVkIEFSTSBm cmVlX2VibWFsbG9jX3VudXNlZF9tZW0oKSBzdHViLgoKdjkgLSBzdWdnZXN0aW9ucy9maXhlczoK ICAgLSBjYWxsIGZyZWVfZWJtYWxsb2NfdW51c2VkX21lbSgpIGZyb20gZWZpX2luaXRfbWVtb3J5 KCkKICAgICBpbnN0ZWFkIG9mIHhlbi9hcmNoL2FybS9zZXR1cC5jOmluaXRfZG9uZSgpCiAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gaW1wcm92ZSBjb21tZW50cy4KCnY4IC0g c3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gZGlzYWJsZSB3aG9sZSBlYm1hbGxvYyBtYWNoaW5lcnkg b24gQVJNIHBsYXRmb3JtcywKICAgLSBhZGQgY29tbWVudCBzYXlpbmcgd2hhdCBzaG91bGQgYmUg ZG9uZSBiZWZvcmUKICAgICBlbmFibGluZyBlYm1hbGxvYyBvbiBBUk0sCiAgICAgKHN1Z2dlc3Rl ZCBieSBKdWxpZW4gR3JhbGwpLAogICAtIG1vdmUgZWJtYWxsb2MgY29kZSBiZWZvcmUgZWZpLWJv b3QuaCBpbmNsdXNpb24gYW5kCiAgICAgcmVtb3ZlIHVubmVlZGVkIGZvcndhcmQgZGVjbGFyYXRp b24KICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSByZW1vdmUgZnJlZV9lYm1h bGxvY191bnVzZWRfbWVtKCkgY2FsbCBmcm9tCiAgICAgeGVuL2FyY2gvYXJtL3NldHVwLmM6aW5p dF9kb25lKCkKICAgICAoc3VnZ2VzdGVkIGJ5IEp1bGllbiBHcmFsbCksCiAgIC0gaW1wcm92ZSBj b21taXQgbWVzc2FnZS4KCnY3IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gZW5hYmxlIG1vc3Qg b2YgZWJtYWxsb2MgbWFjaGluZXJ5IG9uIEFSTSBwbGF0Zm9ybXMKICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKSwKICAgLSByZW1vdmUgdW5uZWVkZWQgY2FzdAogICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpLAogICAtIHdyYXAgbG9uZyBsaW5lCiAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCksCiAgIC0gaW1wcm92ZSBjb21taXQgbWVzc2FnZS4KCnY2IC0gc3VnZ2VzdGlv bnMvZml4ZXM6CiAgIC0gb3B0aW1pemUgZWJtYWxsb2MgYWxsb2NhdG9yLAogICAtIG1vdmUgZWJt YWxsb2MgbWFjaGluZXJ5IHRvIHhlbi9jb21tb24vZWZpL2Jvb3QuYwogICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpLAogICAtIGVuZm9yY2UgUEFHRV9TSVpFIGVibWFsbG9jX21lbSBhbGln bm1lbnQKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBlYm1hbGxvYygpIG11 c3QgYWxsb2NhdGUgcHJvcGVybHkKICAgICBhbGlnbmVkIG1lbW9yeSByZWdpb25zCiAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcHJpbnRrKCkgc2hvdWxkIHVzZSBYRU5MT0df SU5GTwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLgoKdjQgLSBzdWdnZXN0aW9ucy9m aXhlczoKICAgLSBtb3ZlIGZyb20gIzIgc29sdXRpb24gdG8gIzJhIHNvbHV0aW9uLAogICAtIGlt cHJvdmUgY29tbWl0IG1lc3NhZ2UuCi0tLQogeGVuL2FyY2gveDg2L2VmaS9lZmktYm9vdC5oIHwg ICAxMSArKystLS0tLS0tCiB4ZW4vYXJjaC94ODYvc2V0dXAuYyAgICAgICAgfCAgICAzICstLQog eGVuL2NvbW1vbi9lZmkvYm9vdC5jICAgICAgIHwgICA1MCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyks IDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9lZmkvZWZpLWJvb3Qu aCBiL3hlbi9hcmNoL3g4Ni9lZmkvZWZpLWJvb3QuaAppbmRleCAzODhjNGVhLi42MmMwMTBlIDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZWZpL2VmaS1ib290LmgKKysrIGIveGVuL2FyY2gveDg2 L2VmaS9lZmktYm9vdC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IHJl bG9jYXRlX3RyYW1wb2xpbmUodW5zaWduZWQgbG9uZyBwaHlzKQogCiBzdGF0aWMgdm9pZCBfX2lu aXQgcGxhY2Vfc3RyaW5nKHUzMiAqYWRkciwgY29uc3QgY2hhciAqcykKIHsKLSAgICBzdGF0aWMg Y2hhciAqX19pbml0ZGF0YSBhbGxvYyA9IHN0YXJ0OworICAgIGNoYXIgKmFsbG9jID0gTlVMTDsK IAogICAgIGlmICggcyAmJiAqcyApCiAgICAgewpAQCAtMTIyLDcgKzEyMiw3IEBAIHN0YXRpYyB2 b2lkIF9faW5pdCBwbGFjZV9zdHJpbmcodTMyICphZGRyLCBjb25zdCBjaGFyICpzKQogICAgICAg ICBjb25zdCBjaGFyICpvbGQgPSAoY2hhciAqKShsb25nKSphZGRyOwogICAgICAgICBzaXplX3Qg bGVuMiA9ICphZGRyID8gc3RybGVuKG9sZCkgKyAxIDogMDsKIAotICAgICAgICBhbGxvYyAtPSBs ZW4xICsgbGVuMjsKKyAgICAgICAgYWxsb2MgPSBlYm1hbGxvYyhsZW4xICsgbGVuMik7CiAgICAg ICAgIC8qCiAgICAgICAgICAqIEluc2VydCBuZXcgc3RyaW5nIGJlZm9yZSBhbHJlYWR5IGV4aXN0 aW5nIG9uZS4gVGhpcyBpcyBuZWVkZWQKICAgICAgICAgICogZm9yIG9wdGlvbnMgcGFzc2VkIG9u IHRoZSBjb21tYW5kIGxpbmUgdG8gb3ZlcnJpZGUgb3B0aW9ucyBmcm9tCkBAIC0yMDUsMTIgKzIw NSw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBlZmlfYXJjaF9wcm9jZXNzX21lbW9yeV9tYXAoRUZJ X1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFibGUsCiAKIHN0YXRpYyB2b2lkICpfX2luaXQgZWZpX2Fy Y2hfYWxsb2NhdGVfbW1hcF9idWZmZXIoVUlOVE4gbWFwX3NpemUpCiB7Ci0gICAgcGxhY2Vfc3Ry aW5nKCZtYmkubWVtX3VwcGVyLCBOVUxMKTsKLSAgICBtYmkubWVtX3VwcGVyIC09IG1hcF9zaXpl OwotICAgIG1iaS5tZW1fdXBwZXIgJj0gLV9fYWxpZ25vZl9fKEVGSV9NRU1PUllfREVTQ1JJUFRP Uik7Ci0gICAgaWYgKCBtYmkubWVtX3VwcGVyIDwgeGVuX3BoeXNfc3RhcnQgKQotICAgICAgICBy ZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gKHZvaWQgKikobG9uZyltYmkubWVtX3VwcGVyOworICAg IHJldHVybiBlYm1hbGxvYyhtYXBfc2l6ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIF9faW5pdCBlZmlf YXJjaF9wcmVfZXhpdF9ib290KHZvaWQpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvc2V0dXAu YyBiL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCmluZGV4IDBjY2VmMWQuLmQ0YjdkMjUgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCkBAIC0x MTI0LDggKzExMjQsNyBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1bnNpZ25l ZCBsb25nIG1iaV9wKQogCiAgICAgaWYgKCAheGVuX3BoeXNfc3RhcnQgKQogICAgICAgICBwYW5p YygiTm90IGVub3VnaCBtZW1vcnkgdG8gcmVsb2NhdGUgWGVuLiIpOwotICAgIHJlc2VydmVfZTgy MF9yYW0oJmJvb3RfZTgyMCwgZWZpX2VuYWJsZWQoRUZJX0xPQURFUikgPyBtYmktPm1lbV91cHBl ciA6IF9fcGEoJl9zdGFydCksCi0gICAgICAgICAgICAgICAgICAgICBfX3BhKCZfZW5kKSk7Cisg ICAgcmVzZXJ2ZV9lODIwX3JhbSgmYm9vdF9lODIwLCBfX3BhKCZfc3RhcnQpLCBfX3BhKCZfZW5k KSk7CiAKICAgICAvKiBMYXRlIGtleGVjIHJlc2VydmF0aW9uIChkeW5hbWljIHN0YXJ0IGFkZHJl c3MpLiAqLwogICAgIGtleGVjX3Jlc2VydmVfYXJlYSgmYm9vdF9lODIwKTsKZGlmZiAtLWdpdCBh L3hlbi9jb21tb24vZWZpL2Jvb3QuYyBiL3hlbi9jb21tb24vZWZpL2Jvb3QuYwppbmRleCBkZjhj NzAyLi4zNmRiYjcxIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2VmaS9ib290LmMKKysrIGIveGVu L2NvbW1vbi9lZmkvYm9vdC5jCkBAIC05OCw2ICs5OCw1NCBAQCBzdGF0aWMgQ0hBUjE2IF9faW5p dGRhdGEgbmV3bGluZVtdID0gTCJcclxuIjsKICNkZWZpbmUgUHJpbnRTdHIocykgU3RkT3V0LT5P dXRwdXRTdHJpbmcoU3RkT3V0LCBzKQogI2RlZmluZSBQcmludEVycihzKSBTdGRFcnItPk91dHB1 dFN0cmluZyhTdGRFcnIsIHMpCiAKKyNpZmRlZiBDT05GSUdfQVJNCisvKgorICogVE9ETzogRW5h YmxlIEVGSSBib290IGFsbG9jYXRvciBvbiBBUk0uCisgKiBUaGlzIGNvZGUgY2FuIGJlIGNvbW1v biBmb3IgeDg2IGFuZCBBUk0uCisgKiBUaGluZ3MgVE9ETyBvbiBBUk0gYmVmb3JlIGVuYWJsaW5n IGVibWFsbG9jOgorICogICAtIGVzdGltYXRlIHJlcXVpcmVkIEVCTUFMTE9DX1NJWkUgdmFsdWUs CisgKiAgIC0gd2hlcmUgKGluIHdoaWNoIHNlY3Rpb24pIGVibWFsbG9jX21lbVtdIHNob3VsZCBs aXZlOyBpZiBpbgorICogICAgIC5ic3MucGFnZV9hbGlnbmVkLCBhcyBpdCBpcyByaWdodCBub3cs IHRoZW4gd2hvbGUgQlNTIHplcm9pbmcKKyAqICAgICBoYXZlIHRvIGJlIGRpc2FibGVkIGluIHhl bi9hcmNoL2FybS9hcm02NC9oZWFkLlM7IHRob3VnaCBCU1MKKyAqICAgICBzaG91bGQgYmUgaW5p dGlhbGl6ZWQgc29tZWhvdyBiZWZvcmUgdXNlIG9mIHZhcmlhYmxlcyBsaXZpbmcgdGhlcmUsCisg KiAgIC0gdXNlIGVibWFsbG9jKCkgaW4gQVJNL2NvbW1vbiBFRkkgYm9vdCBjb2RlLAorICogICAt IGNhbGwgZnJlZV9lYm1hbGxvY191bnVzZWRfbWVtKCkgc29tZXdoZXJlIGluIGluaXQgY29kZS4K KyAqLworI2RlZmluZSBFQk1BTExPQ19TSVpFCU1CKDApCisjZWxzZQorI2RlZmluZSBFQk1BTExP Q19TSVpFCU1CKDEpCisjZW5kaWYKKworc3RhdGljIGNoYXIgX19zZWN0aW9uKCIuYnNzLnBhZ2Vf YWxpZ25lZCIpIF9fYWxpZ25lZChQQUdFX1NJWkUpCisgICAgZWJtYWxsb2NfbWVtW0VCTUFMTE9D X1NJWkVdOworc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0ZGF0YSBlYm1hbGxvY19hbGxvY2F0 ZWQ7CisKKy8qIEVGSSBib290IGFsbG9jYXRvci4gKi8KK3N0YXRpYyB2b2lkIF9faW5pdCBfX21h eWJlX3VudXNlZCAqZWJtYWxsb2Moc2l6ZV90IHNpemUpCit7CisgICAgdm9pZCAqcHRyID0gZWJt YWxsb2NfbWVtICsgZWJtYWxsb2NfYWxsb2NhdGVkOworCisgICAgZWJtYWxsb2NfYWxsb2NhdGVk ICs9IChzaXplICsgc2l6ZW9mKHZvaWQgKikgLSAxKSAmIH4oc2l6ZW9mKHZvaWQgKikgLSAxKTsK KworICAgIGlmICggZWJtYWxsb2NfYWxsb2NhdGVkID4gc2l6ZW9mKGVibWFsbG9jX21lbSkgKQor ICAgICAgICBibGV4aXQoTCJPdXQgb2Ygc3RhdGljIG1lbW9yeVxyXG4iKTsKKworICAgIHJldHVy biBwdHI7Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBfX21heWJlX3VudXNlZCBmcmVlX2VibWFs bG9jX3VudXNlZF9tZW0odm9pZCkKK3sKKyAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7CisK KyAgICBzdGFydCA9ICh1bnNpZ25lZCBsb25nKWVibWFsbG9jX21lbSArIFBBR0VfQUxJR04oZWJt YWxsb2NfYWxsb2NhdGVkKTsKKyAgICBlbmQgPSAodW5zaWduZWQgbG9uZyllYm1hbGxvY19tZW0g KyBzaXplb2YoZWJtYWxsb2NfbWVtKTsKKworICAgIGRlc3Ryb3lfeGVuX21hcHBpbmdzKHN0YXJ0 LCBlbmQpOworICAgIGluaXRfeGVuaGVhcF9wYWdlcyhfX3BhKHN0YXJ0KSwgX19wYShlbmQpKTsK KworICAgIHByaW50ayhYRU5MT0dfSU5GTyAiRnJlZWQgJWx1a0IgdW51c2VkIEJTUyBtZW1vcnlc biIsIChlbmQgLSBzdGFydCkgPj4gMTApOworfQorCiAvKgogICogSW5jbHVkZSBhcmNoaXRlY3R1 cmUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gaGVyZSwgd2hpY2ggcmVmZXJlbmNlcyB0aGUKICAq IHN0YXRpYyBnbG9iYWxzIGRlZmluZWQgYWJvdmUuCkBAIC0xMjUxLDYgKzEyOTksOCBAQCB2b2lk IF9faW5pdCBlZmlfaW5pdF9tZW1vcnkodm9pZCkKICAgICB9ICpleHRyYSwgKmV4dHJhX2hlYWQg PSBOVUxMOwogI2VuZGlmCiAKKyAgICBmcmVlX2VibWFsbG9jX3VudXNlZF9tZW0oKTsKKwogICAg IGlmICggIWVmaV9lbmFibGVkKEVGSV9CT09UKSApCiAgICAgICAgIHJldHVybjsKIAotLSAKMS43 LjEwLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK