From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v6 08/15] x86/efi: create new early memory allocator Date: Mon, 12 Sep 2016 22:18:23 +0200 Message-ID: <1473711511-11931-9-git-send-email-daniel.kiper@oracle.com> References: <1473711511-11931-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 1bjXjU-00065p-95 for xen-devel@lists.xenproject.org; Mon, 12 Sep 2016 20:21:36 +0000 In-Reply-To: <1473711511-11931-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, 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 c3BlY2lhbGx5IGluIF9fc3RhcnRfeGVuKCkuCgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgS2lwZXIg PGRhbmllbC5raXBlckBvcmFjbGUuY29tPgotLS0KdjYgLSBzdWdnZXN0aW9ucy9maXhlczoKICAg LSBvcHRpbWl6ZSBlYm1hbGxvYyBhbGxvY2F0b3IsCiAgIC0gbW92ZSBlYm1hbGxvYyBtYWNoaW5l cnkgdG8geGVuL2NvbW1vbi9lZmkvYm9vdC5jCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCksCiAgIC0gZW5mb3JjZSBQQUdFX1NJWkUgZWJtYWxsb2NfbWVtIGFsaWdubWVudAogICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGVibWFsbG9jKCkgbXVzdCBhbGxvY2F0ZSBw cm9wZXJseQogICAgIGFsaWduZWQgbWVtb3J5IHJlZ2lvbnMKICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKSwKICAgLSBwcmludGsoKSBzaG91bGQgdXNlIFhFTkxPR19JTkZPCiAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkuCgp2NCAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIG1v dmUgZnJvbSAjMiBzb2x1dGlvbiB0byAjMmEgc29sdXRpb24sCiAgIC0gaW1wcm92ZSBjb21taXQg bWVzc2FnZS4KLS0tCiB4ZW4vYXJjaC94ODYvZWZpL2VmaS1ib290LmggfCAgIDExICsrKy0tLS0t LS0tCiB4ZW4vYXJjaC94ODYvZWZpL3N0dWIuYyAgICAgfCAgICAyICsrCiB4ZW4vYXJjaC94ODYv c2V0dXAuYyAgICAgICAgfCAgICA1ICsrKy0tCiB4ZW4vY29tbW9uL2VmaS9ib290LmMgICAgICAg fCAgIDM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4vaW5jbHVkZS94 ZW4vZWZpLmggICAgICAgfCAgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygr KSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2VmaS9lZmktYm9v dC5oIGIveGVuL2FyY2gveDg2L2VmaS9lZmktYm9vdC5oCmluZGV4IDEwOTg1NzIxLi40MmNjNWY4 IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZWZpL2VmaS1ib290LmgKKysrIGIveGVuL2FyY2gv eDg2L2VmaS9lZmktYm9vdC5oCkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIHZvaWQgX19pbml0 IHJlbG9jYXRlX3RyYW1wb2xpbmUodW5zaWduZWQgbG9uZyBwaHlzKQogCiBzdGF0aWMgdm9pZCBf X2luaXQgcGxhY2Vfc3RyaW5nKHUzMiAqYWRkciwgY29uc3QgY2hhciAqcykKIHsKLSAgICBzdGF0 aWMgY2hhciAqX19pbml0ZGF0YSBhbGxvYyA9IHN0YXJ0OworICAgIGNoYXIgKmFsbG9jID0gTlVM TDsKIAogICAgIGlmICggcyAmJiAqcyApCiAgICAgewpAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRp YyB2b2lkIF9faW5pdCBwbGFjZV9zdHJpbmcodTMyICphZGRyLCBjb25zdCBjaGFyICpzKQogICAg ICAgICBjb25zdCBjaGFyICpvbGQgPSAoY2hhciAqKShsb25nKSphZGRyOwogICAgICAgICBzaXpl X3QgbGVuMiA9ICphZGRyID8gc3RybGVuKG9sZCkgKyAxIDogMDsKIAotICAgICAgICBhbGxvYyAt PSBsZW4xICsgbGVuMjsKKyAgICAgICAgYWxsb2MgPSBlYm1hbGxvYyhsZW4xICsgbGVuMik7CiAg ICAgICAgIC8qCiAgICAgICAgICAqIEluc2VydCBuZXcgc3RyaW5nIGJlZm9yZSBhbHJlYWR5IGV4 aXN0aW5nIG9uZS4gVGhpcyBpcyBuZWVkZWQKICAgICAgICAgICogZm9yIG9wdGlvbnMgcGFzc2Vk IG9uIHRoZSBjb21tYW5kIGxpbmUgdG8gb3ZlcnJpZGUgb3B0aW9ucyBmcm9tCkBAIC0yMDgsMTIg KzIwOCw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBlZmlfYXJjaF9wcm9jZXNzX21lbW9yeV9tYXAo RUZJX1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFibGUsCiAKIHN0YXRpYyB2b2lkICpfX2luaXQgZWZp X2FyY2hfYWxsb2NhdGVfbW1hcF9idWZmZXIoVUlOVE4gbWFwX3NpemUpCiB7Ci0gICAgcGxhY2Vf c3RyaW5nKCZtYmkubWVtX3VwcGVyLCBOVUxMKTsKLSAgICBtYmkubWVtX3VwcGVyIC09IG1hcF9z aXplOwotICAgIG1iaS5tZW1fdXBwZXIgJj0gLV9fYWxpZ25vZl9fKEVGSV9NRU1PUllfREVTQ1JJ UFRPUik7Ci0gICAgaWYgKCBtYmkubWVtX3VwcGVyIDwgeGVuX3BoeXNfc3RhcnQgKQotICAgICAg ICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gKHZvaWQgKikobG9uZyltYmkubWVtX3VwcGVyOwor ICAgIHJldHVybiBlYm1hbGxvYyhtYXBfc2l6ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIF9faW5pdCBl ZmlfYXJjaF9wcmVfZXhpdF9ib290KHZvaWQpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZWZp L3N0dWIuYyBiL3hlbi9hcmNoL3g4Ni9lZmkvc3R1Yi5jCmluZGV4IDBiZmFhNzQuLjAxNDczOWEg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9lZmkvc3R1Yi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9l Zmkvc3R1Yi5jCkBAIC05LDYgKzksOCBAQCBib29sIGVmaV9lbmFibGVkKHVuc2lnbmVkIGludCBm ZWF0dXJlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBfX2luaXQgZnJlZV9lYm1hbGxv Y191bnVzZWRfbWVtKHZvaWQpIHsgfQorCiB2b2lkIF9faW5pdCBlZmlfaW5pdF9tZW1vcnkodm9p ZCkgeyB9CiAKIHZvaWQgZWZpX3VwZGF0ZV9sNF9wZ3RhYmxlKHVuc2lnbmVkIGludCBsNGlkeCwg bDRfcGdlbnRyeV90IGw0ZSkgeyB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvc2V0dXAuYyBi L3hlbi9hcmNoL3g4Ni9zZXR1cC5jCmluZGV4IDA2ZjM5NzAuLjViMTc3ODMgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9zZXR1cC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCkBAIC01MjAs NiArNTIwLDggQEAgc3RhdGljIHZvaWQgbm9pbmxpbmUgaW5pdF9kb25lKHZvaWQpCiAKICAgICBz eXN0ZW1fc3RhdGUgPSBTWVNfU1RBVEVfYWN0aXZlOwogCisgICAgZnJlZV9lYm1hbGxvY191bnVz ZWRfbWVtKCk7CisKICAgICAvKiBNVVNUIGJlIGRvbmUgcHJpb3IgdG8gcmVtb3ZpbmcgLmluaXQg ZGF0YS4gKi8KICAgICB1bnJlZ2lzdGVyX2luaXRfdmlydHVhbF9yZWdpb24oKTsKIApAQCAtMTA4 MCw4ICsxMDgyLDcgQEAgdm9pZCBfX2luaXQgbm9yZXR1cm4gX19zdGFydF94ZW4odW5zaWduZWQg bG9uZyBtYmlfcCkKIAogICAgIGlmICggIXhlbl9waHlzX3N0YXJ0ICkKICAgICAgICAgcGFuaWMo Ik5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlbG9jYXRlIFhlbi4iKTsKLSAgICByZXNlcnZlX2U4MjBf cmFtKCZib290X2U4MjAsIGVmaV9lbmFibGVkKEVGSV9MT0FERVIpID8gbWJpLT5tZW1fdXBwZXIg OiBfX3BhKCZfc3RhcnQpLAotICAgICAgICAgICAgICAgICAgICAgX19wYSgmX2VuZCkpOworICAg IHJlc2VydmVfZTgyMF9yYW0oJmJvb3RfZTgyMCwgX19wYSgmX3N0YXJ0KSwgX19wYSgmX2VuZCkp OwogCiAgICAgLyogTGF0ZSBrZXhlYyByZXNlcnZhdGlvbiAoZHluYW1pYyBzdGFydCBhZGRyZXNz KS4gKi8KICAgICBrZXhlY19yZXNlcnZlX2FyZWEoJmJvb3RfZTgyMCk7CmRpZmYgLS1naXQgYS94 ZW4vY29tbW9uL2VmaS9ib290LmMgYi94ZW4vY29tbW9uL2VmaS9ib290LmMKaW5kZXggMWVmNWQw Yi4uMTkyYzBiOCAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9lZmkvYm9vdC5jCisrKyBiL3hlbi9j b21tb24vZWZpL2Jvb3QuYwpAQCAtNzksNiArNzksOCBAQCBzdGF0aWMgc2l6ZV90IHdzdHJsZW4o Y29uc3QgQ0hBUjE2ICogcyk7CiBzdGF0aWMgaW50IHNldF9jb2xvcih1MzIgbWFzaywgaW50IGJw cCwgdTggKnBvcywgdTggKnN6KTsKIHN0YXRpYyBib29sX3QgbWF0Y2hfZ3VpZChjb25zdCBFRklf R1VJRCAqZ3VpZDEsIGNvbnN0IEVGSV9HVUlEICpndWlkMik7CiAKK3N0YXRpYyB2b2lkICplYm1h bGxvYyhzaXplX3Qgc2l6ZSk7CisKIHN0YXRpYyBjb25zdCBFRklfQk9PVF9TRVJWSUNFUyAqX19p bml0ZGF0YSBlZmlfYnM7CiBzdGF0aWMgVUlOVDMyIF9faW5pdGRhdGEgZWZpX2JzX3JldmlzaW9u Owogc3RhdGljIEVGSV9IQU5ETEUgX19pbml0ZGF0YSBlZmlfaWg7CkBAIC0xMTU4LDcgKzExNjAs MzggQEAgZWZpX3N0YXJ0KEVGSV9IQU5ETEUgSW1hZ2VIYW5kbGUsIEVGSV9TWVNURU1fVEFCTEUg KlN5c3RlbVRhYmxlKQogICAgIGZvciggOyA7ICk7IC8qIG5vdCByZWFjaGVkICovCiB9CiAKLSNp Zm5kZWYgQ09ORklHX0FSTSAvKiBUT0RPIC0gcnVudGltZSBzZXJ2aWNlIHN1cHBvcnQgKi8KKyNp Zm5kZWYgQ09ORklHX0FSTQorCisjZGVmaW5lIEVCTUFMTE9DX1NJWkUJTUIoMSkKKworc3RhdGlj IGNoYXIgX19zZWN0aW9uKCIuYnNzLnBhZ2VfYWxpZ25lZCIpIF9fYWxpZ25lZChQQUdFX1NJWkUp IGVibWFsbG9jX21lbVtFQk1BTExPQ19TSVpFXTsKK3N0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5p dGRhdGEgZWJtYWxsb2NfYWxsb2NhdGVkOworCisvKiBFRkkgYm9vdCBhbGxvY2F0b3IuICovCitz dGF0aWMgdm9pZCBfX2luaXQgKmVibWFsbG9jKHNpemVfdCBzaXplKQoreworICAgIHZvaWQgKnB0 ciA9IGVibWFsbG9jX21lbSArIGVibWFsbG9jX2FsbG9jYXRlZDsKKworICAgIGVibWFsbG9jX2Fs bG9jYXRlZCArPSAoc2l6ZSArIHNpemVvZih2b2lkICopIC0gMSkgJiB+KCh0eXBlb2Yoc2l6ZSkp c2l6ZW9mKHZvaWQgKikgLSAxKTsKKworICAgIGlmICggZWJtYWxsb2NfYWxsb2NhdGVkID4gc2l6 ZW9mKGVibWFsbG9jX21lbSkgKQorICAgICAgICBibGV4aXQoTCJPdXQgb2Ygc3RhdGljIG1lbW9y eVxyXG4iKTsKKworICAgIHJldHVybiBwdHI7Cit9CisKK3ZvaWQgX19pbml0IGZyZWVfZWJtYWxs b2NfdW51c2VkX21lbSh2b2lkKQoreworICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsKKwor ICAgIHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpZWJtYWxsb2NfbWVtICsgUEFHRV9BTElHTihlYm1h bGxvY19hbGxvY2F0ZWQpOworICAgIGVuZCA9ICh1bnNpZ25lZCBsb25nKWVibWFsbG9jX21lbSAr IHNpemVvZihlYm1hbGxvY19tZW0pOworCisgICAgZGVzdHJveV94ZW5fbWFwcGluZ3Moc3RhcnQs IGVuZCk7CisgICAgaW5pdF94ZW5oZWFwX3BhZ2VzKF9fcGEoc3RhcnQpLCBfX3BhKGVuZCkpOwor CisgICAgcHJpbnRrKFhFTkxPR19JTkZPICJGcmVlZCAlbHVrQiB1bnVzZWQgQlNTIG1lbW9yeVxu IiwgKGVuZCAtIHN0YXJ0KSA+PiAxMCk7Cit9CiAKIHN0YXRpYyBib29sX3QgX19pbml0ZGF0YSBl ZmlfbWFwX3VjOwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vZWZpLmggYi94ZW4vaW5j bHVkZS94ZW4vZWZpLmgKaW5kZXggNjhjNjhhOC4uNmM3ZjYwMSAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUveGVuL2VmaS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9lZmkuaApAQCAtMzIsNiArMzIs NyBAQCBzdHJ1Y3QgeGVucGZfZWZpX3J1bnRpbWVfY2FsbDsKIHN0cnVjdCBjb21wYXRfcGZfZWZp X3J1bnRpbWVfY2FsbDsKIAogYm9vbCBlZmlfZW5hYmxlZCh1bnNpZ25lZCBpbnQgZmVhdHVyZSk7 Cit2b2lkIGZyZWVfZWJtYWxsb2NfdW51c2VkX21lbSh2b2lkKTsKIHZvaWQgZWZpX2luaXRfbWVt b3J5KHZvaWQpOwogYm9vbF90IGVmaV9yc191c2luZ19wZ3RhYmxlcyh2b2lkKTsKIHVuc2lnbmVk IGxvbmcgZWZpX2dldF90aW1lKHZvaWQpOwotLSAKMS43LjEwLjQKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK