From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH RFC v7 07/14] efi: create new early memory allocator Date: Fri, 23 Sep 2016 23:47:32 +0200 Message-ID: <1474667259-27290-8-git-send-email-daniel.kiper@oracle.com> References: <1474667259-27290-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 1bnYKu-0003xB-Jb for xen-devel@lists.xenproject.org; Fri, 23 Sep 2016 21:48:48 +0000 In-Reply-To: <1474667259-27290-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 aWMgYW5kIGNhbiBiZSB1c2VkIG9uIEFSTSBwbGF0Zm9ybXMgdG9vLgpTbywgbGV0J3MgZW5hYmxl IG1vc3Qgb2YgaXRzIG1hY2hpbmVyeSBvbiB0aGVtLgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsIEtp cGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4KLS0tCnY3IC0gc3VnZ2VzdGlvbnMvZml4ZXM6 CiAgIC0gZW5hYmxlIG1vc3Qgb2YgZWJtYWxsb2MgbWFjaGluZXJ5IG9uIEFSTSBwbGF0Zm9ybXMK ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSByZW1vdmUgdW5uZWVkZWQgY2Fz dAogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHdyYXAgbG9uZyBsaW5lCiAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gaW1wcm92ZSBjb21taXQgbWVzc2Fn ZS4KCnY2IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gb3B0aW1pemUgZWJtYWxsb2MgYWxsb2Nh dG9yLAogICAtIG1vdmUgZWJtYWxsb2MgbWFjaGluZXJ5IHRvIHhlbi9jb21tb24vZWZpL2Jvb3Qu YwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGVuZm9yY2UgUEFHRV9TSVpF IGVibWFsbG9jX21lbSBhbGlnbm1lbnQKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwK ICAgLSBlYm1hbGxvYygpIG11c3QgYWxsb2NhdGUgcHJvcGVybHkKICAgICBhbGlnbmVkIG1lbW9y eSByZWdpb25zCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcHJpbnRrKCkg c2hvdWxkIHVzZSBYRU5MT0dfSU5GTwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLgoK djQgLSBzdWdnZXN0aW9ucy9maXhlczoKICAgLSBtb3ZlIGZyb20gIzIgc29sdXRpb24gdG8gIzJh IHNvbHV0aW9uLAogICAtIGltcHJvdmUgY29tbWl0IG1lc3NhZ2UuCi0tLQogeGVuL2FyY2gvYXJt L3NldHVwLmMgICAgICAgIHwgICAgMiArKwogeGVuL2FyY2gveDg2L2VmaS9lZmktYm9vdC5oIHwg ICAxMSArKystLS0tLS0tLQogeGVuL2FyY2gveDg2L2VmaS9zdHViLmMgICAgIHwgICAgMiArKwog eGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgIHwgICAgNSArKystLQogeGVuL2NvbW1vbi9lZmkv Ym9vdC5jICAgICAgIHwgICAzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogeGVuL2luY2x1ZGUveGVuL2VmaS5oICAgICAgIHwgICAgMSArCiA2IGZpbGVzIGNoYW5nZWQs IDQ5IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L2FybS9zZXR1cC5jIGIveGVuL2FyY2gvYXJtL3NldHVwLmMKaW5kZXggMzhlYjg4OC4uMjA4NWYz NSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3NldHVwLmMKKysrIGIveGVuL2FyY2gvYXJtL3Nl dHVwLmMKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDx4ZW4vdm1hcC5oPgogI2luY2x1ZGUg PHhlbi9saWJmZHQvbGliZmR0Lmg+CiAjaW5jbHVkZSA8eGVuL2FjcGkuaD4KKyNpbmNsdWRlIDx4 ZW4vZWZpLmg+CiAjaW5jbHVkZSA8YXNtL2FsdGVybmF0aXZlLmg+CiAjaW5jbHVkZSA8YXNtL3Bh Z2UuaD4KICNpbmNsdWRlIDxhc20vY3VycmVudC5oPgpAQCAtNjYsNiArNjcsNyBAQCBpbnRlZ2Vy X3BhcmFtKCJ4ZW5oZWFwX21lZ2FieXRlcyIsIG9wdF94ZW5oZWFwX21lZ2FieXRlcyk7CiAKIHN0 YXRpYyBfX3VzZWQgdm9pZCBpbml0X2RvbmUodm9pZCkKIHsKKyAgICBmcmVlX2VibWFsbG9jX3Vu dXNlZF9tZW0oKTsKICAgICBmcmVlX2luaXRfbWVtb3J5KCk7CiAgICAgc3RhcnR1cF9jcHVfaWRs ZV9sb29wKCk7CiB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZWZpL2VmaS1ib290LmggYi94 ZW4vYXJjaC94ODYvZWZpL2VmaS1ib290LmgKaW5kZXggMzg4YzRlYS4uNjJjMDEwZSAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L2VmaS9lZmktYm9vdC5oCisrKyBiL3hlbi9hcmNoL3g4Ni9lZmkv ZWZpLWJvb3QuaApAQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCByZWxvY2F0 ZV90cmFtcG9saW5lKHVuc2lnbmVkIGxvbmcgcGh5cykKIAogc3RhdGljIHZvaWQgX19pbml0IHBs YWNlX3N0cmluZyh1MzIgKmFkZHIsIGNvbnN0IGNoYXIgKnMpCiB7Ci0gICAgc3RhdGljIGNoYXIg Kl9faW5pdGRhdGEgYWxsb2MgPSBzdGFydDsKKyAgICBjaGFyICphbGxvYyA9IE5VTEw7CiAKICAg ICBpZiAoIHMgJiYgKnMgKQogICAgIHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGF0aWMgdm9pZCBf X2luaXQgcGxhY2Vfc3RyaW5nKHUzMiAqYWRkciwgY29uc3QgY2hhciAqcykKICAgICAgICAgY29u c3QgY2hhciAqb2xkID0gKGNoYXIgKikobG9uZykqYWRkcjsKICAgICAgICAgc2l6ZV90IGxlbjIg PSAqYWRkciA/IHN0cmxlbihvbGQpICsgMSA6IDA7CiAKLSAgICAgICAgYWxsb2MgLT0gbGVuMSAr IGxlbjI7CisgICAgICAgIGFsbG9jID0gZWJtYWxsb2MobGVuMSArIGxlbjIpOwogICAgICAgICAv KgogICAgICAgICAgKiBJbnNlcnQgbmV3IHN0cmluZyBiZWZvcmUgYWxyZWFkeSBleGlzdGluZyBv bmUuIFRoaXMgaXMgbmVlZGVkCiAgICAgICAgICAqIGZvciBvcHRpb25zIHBhc3NlZCBvbiB0aGUg Y29tbWFuZCBsaW5lIHRvIG92ZXJyaWRlIG9wdGlvbnMgZnJvbQpAQCAtMjA1LDEyICsyMDUsNyBA QCBzdGF0aWMgdm9pZCBfX2luaXQgZWZpX2FyY2hfcHJvY2Vzc19tZW1vcnlfbWFwKEVGSV9TWVNU RU1fVEFCTEUgKlN5c3RlbVRhYmxlLAogCiBzdGF0aWMgdm9pZCAqX19pbml0IGVmaV9hcmNoX2Fs bG9jYXRlX21tYXBfYnVmZmVyKFVJTlROIG1hcF9zaXplKQogewotICAgIHBsYWNlX3N0cmluZygm bWJpLm1lbV91cHBlciwgTlVMTCk7Ci0gICAgbWJpLm1lbV91cHBlciAtPSBtYXBfc2l6ZTsKLSAg ICBtYmkubWVtX3VwcGVyICY9IC1fX2FsaWdub2ZfXyhFRklfTUVNT1JZX0RFU0NSSVBUT1IpOwot ICAgIGlmICggbWJpLm1lbV91cHBlciA8IHhlbl9waHlzX3N0YXJ0ICkKLSAgICAgICAgcmV0dXJu IE5VTEw7Ci0gICAgcmV0dXJuICh2b2lkICopKGxvbmcpbWJpLm1lbV91cHBlcjsKKyAgICByZXR1 cm4gZWJtYWxsb2MobWFwX3NpemUpOwogfQogCiBzdGF0aWMgdm9pZCBfX2luaXQgZWZpX2FyY2hf cHJlX2V4aXRfYm9vdCh2b2lkKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2VmaS9zdHViLmMg Yi94ZW4vYXJjaC94ODYvZWZpL3N0dWIuYwppbmRleCA0MTU4MTI0Li5iYzk5MTljIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvZWZpL3N0dWIuYworKysgYi94ZW4vYXJjaC94ODYvZWZpL3N0dWIu YwpAQCAtOSw2ICs5LDggQEAgYm9vbCBlZmlfZW5hYmxlZCh1bnNpZ25lZCBpbnQgZmVhdHVyZSkK ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgX19pbml0IGZyZWVfZWJtYWxsb2NfdW51c2Vk X21lbSh2b2lkKSB7IH0KKwogdm9pZCBfX2luaXQgZWZpX2luaXRfbWVtb3J5KHZvaWQpIHsgfQog CiB2b2lkIGVmaV91cGRhdGVfbDRfcGd0YWJsZSh1bnNpZ25lZCBpbnQgbDRpZHgsIGw0X3BnZW50 cnlfdCBsNGUpIHsgfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJj aC94ODYvc2V0dXAuYwppbmRleCAwNmYzOTcwLi41YjE3NzgzIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvc2V0dXAuYworKysgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwpAQCAtNTIwLDYgKzUyMCw4 IEBAIHN0YXRpYyB2b2lkIG5vaW5saW5lIGluaXRfZG9uZSh2b2lkKQogCiAgICAgc3lzdGVtX3N0 YXRlID0gU1lTX1NUQVRFX2FjdGl2ZTsKIAorICAgIGZyZWVfZWJtYWxsb2NfdW51c2VkX21lbSgp OworCiAgICAgLyogTVVTVCBiZSBkb25lIHByaW9yIHRvIHJlbW92aW5nIC5pbml0IGRhdGEuICov CiAgICAgdW5yZWdpc3Rlcl9pbml0X3ZpcnR1YWxfcmVnaW9uKCk7CiAKQEAgLTEwODAsOCArMTA4 Miw3IEBAIHZvaWQgX19pbml0IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgbWJp X3ApCiAKICAgICBpZiAoICF4ZW5fcGh5c19zdGFydCApCiAgICAgICAgIHBhbmljKCJOb3QgZW5v dWdoIG1lbW9yeSB0byByZWxvY2F0ZSBYZW4uIik7Ci0gICAgcmVzZXJ2ZV9lODIwX3JhbSgmYm9v dF9lODIwLCBlZmlfZW5hYmxlZChFRklfTE9BREVSKSA/IG1iaS0+bWVtX3VwcGVyIDogX19wYSgm X3N0YXJ0KSwKLSAgICAgICAgICAgICAgICAgICAgIF9fcGEoJl9lbmQpKTsKKyAgICByZXNlcnZl X2U4MjBfcmFtKCZib290X2U4MjAsIF9fcGEoJl9zdGFydCksIF9fcGEoJl9lbmQpKTsKIAogICAg IC8qIExhdGUga2V4ZWMgcmVzZXJ2YXRpb24gKGR5bmFtaWMgc3RhcnQgYWRkcmVzcykuICovCiAg ICAga2V4ZWNfcmVzZXJ2ZV9hcmVhKCZib290X2U4MjApOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1v bi9lZmkvYm9vdC5jIGIveGVuL2NvbW1vbi9lZmkvYm9vdC5jCmluZGV4IDFlZjVkMGIuLjkxZGY5 YjUgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vZWZpL2Jvb3QuYworKysgYi94ZW4vY29tbW9uL2Vm aS9ib290LmMKQEAgLTc5LDYgKzc5LDEwIEBAIHN0YXRpYyBzaXplX3Qgd3N0cmxlbihjb25zdCBD SEFSMTYgKiBzKTsKIHN0YXRpYyBpbnQgc2V0X2NvbG9yKHUzMiBtYXNrLCBpbnQgYnBwLCB1OCAq cG9zLCB1OCAqc3opOwogc3RhdGljIGJvb2xfdCBtYXRjaF9ndWlkKGNvbnN0IEVGSV9HVUlEICpn dWlkMSwgY29uc3QgRUZJX0dVSUQgKmd1aWQyKTsKIAorI2lmbmRlZiBDT05GSUdfQVJNCitzdGF0 aWMgdm9pZCAqZWJtYWxsb2Moc2l6ZV90IHNpemUpOworI2VuZGlmCisKIHN0YXRpYyBjb25zdCBF RklfQk9PVF9TRVJWSUNFUyAqX19pbml0ZGF0YSBlZmlfYnM7CiBzdGF0aWMgVUlOVDMyIF9faW5p dGRhdGEgZWZpX2JzX3JldmlzaW9uOwogc3RhdGljIEVGSV9IQU5ETEUgX19pbml0ZGF0YSBlZmlf aWg7CkBAIC01NzcsNiArNTgxLDQwIEBAIHN0YXRpYyBjaGFyICpfX2luaXQgZ2V0X3ZhbHVlKGNv bnN0IHN0cnVjdCBmaWxlICpjZmcsIGNvbnN0IGNoYXIgKnNlY3Rpb24sCiAgICAgcmV0dXJuIE5V TEw7CiB9CiAKKyNkZWZpbmUgRUJNQUxMT0NfU0laRQlNQigxKQorCitzdGF0aWMgY2hhciBfX3Nl Y3Rpb24oIi5ic3MucGFnZV9hbGlnbmVkIikgX19hbGlnbmVkKFBBR0VfU0laRSkKKyAgICBlYm1h bGxvY19tZW1bRUJNQUxMT0NfU0laRV07CitzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXRkYXRh IGVibWFsbG9jX2FsbG9jYXRlZDsKKworI2lmbmRlZiBDT05GSUdfQVJNCisvKiBFRkkgYm9vdCBh bGxvY2F0b3IuICovCitzdGF0aWMgdm9pZCBfX2luaXQgKmVibWFsbG9jKHNpemVfdCBzaXplKQor eworICAgIHZvaWQgKnB0ciA9IGVibWFsbG9jX21lbSArIGVibWFsbG9jX2FsbG9jYXRlZDsKKwor ICAgIGVibWFsbG9jX2FsbG9jYXRlZCArPSAoc2l6ZSArIHNpemVvZih2b2lkICopIC0gMSkgJiB+ KHNpemVvZih2b2lkICopIC0gMSk7CisKKyAgICBpZiAoIGVibWFsbG9jX2FsbG9jYXRlZCA+IHNp emVvZihlYm1hbGxvY19tZW0pICkKKyAgICAgICAgYmxleGl0KEwiT3V0IG9mIHN0YXRpYyBtZW1v cnlcclxuIik7CisKKyAgICByZXR1cm4gcHRyOworfQorI2VuZGlmCisKK3ZvaWQgX19pbml0IGZy ZWVfZWJtYWxsb2NfdW51c2VkX21lbSh2b2lkKQoreworICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQs IGVuZDsKKworICAgIHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpZWJtYWxsb2NfbWVtICsgUEFHRV9B TElHTihlYm1hbGxvY19hbGxvY2F0ZWQpOworICAgIGVuZCA9ICh1bnNpZ25lZCBsb25nKWVibWFs bG9jX21lbSArIHNpemVvZihlYm1hbGxvY19tZW0pOworCisgICAgZGVzdHJveV94ZW5fbWFwcGlu Z3Moc3RhcnQsIGVuZCk7CisgICAgaW5pdF94ZW5oZWFwX3BhZ2VzKF9fcGEoc3RhcnQpLCBfX3Bh KGVuZCkpOworCisgICAgcHJpbnRrKFhFTkxPR19JTkZPICJGcmVlZCAlbHVrQiB1bnVzZWQgQlNT IG1lbW9yeVxuIiwgKGVuZCAtIHN0YXJ0KSA+PiAxMCk7Cit9CisKIHN0YXRpYyB2b2lkIF9faW5p dCBlZmlfaW5pdChFRklfSEFORExFIEltYWdlSGFuZGxlLCBFRklfU1lTVEVNX1RBQkxFICpTeXN0 ZW1UYWJsZSkKIHsKICAgICBlZmlfaWggPSBJbWFnZUhhbmRsZTsKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3hlbi9lZmkuaCBiL3hlbi9pbmNsdWRlL3hlbi9lZmkuaAppbmRleCA2OGM2OGE4Li42 YzdmNjAxIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vZWZpLmgKKysrIGIveGVuL2luY2x1 ZGUveGVuL2VmaS5oCkBAIC0zMiw2ICszMiw3IEBAIHN0cnVjdCB4ZW5wZl9lZmlfcnVudGltZV9j YWxsOwogc3RydWN0IGNvbXBhdF9wZl9lZmlfcnVudGltZV9jYWxsOwogCiBib29sIGVmaV9lbmFi bGVkKHVuc2lnbmVkIGludCBmZWF0dXJlKTsKK3ZvaWQgZnJlZV9lYm1hbGxvY191bnVzZWRfbWVt KHZvaWQpOwogdm9pZCBlZmlfaW5pdF9tZW1vcnkodm9pZCk7CiBib29sX3QgZWZpX3JzX3VzaW5n X3BndGFibGVzKHZvaWQpOwogdW5zaWduZWQgbG9uZyBlZmlfZ2V0X3RpbWUodm9pZCk7Ci0tIAox LjcuMTAuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=