From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v3 12/16 - RFC] x86/efi: create new early memory allocator Date: Fri, 15 Apr 2016 14:33:12 +0200 Message-ID: <1460723596-13261-13-git-send-email-daniel.kiper@oracle.com> References: <1460723596-13261-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 ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ar2xM-0005dT-Hd for xen-devel@lists.xenproject.org; Fri, 15 Apr 2016 12:34:40 +0000 In-Reply-To: <1460723596-13261-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, andrew.cooper3@citrix.com, stefano.stabellini@eu.citrix.com, cardoe@cardoe.com, pgnet.dev@gmail.com, ning.sun@intel.com, david.vrabel@citrix.com, jbeulich@suse.com, qiaowei.ren@intel.com, richard.l.maliszewski@intel.com, gang.wei@intel.com, fu.wei@linaro.org List-Id: xen-devel@lists.xenproject.org VGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggcGxhY2Vfc3RyaW5nKCkgd2hpY2ggaXMgdXNlZCBhcyBl YXJseSBtZW1vcnkKYWxsb2NhdG9yLiBJdCBnZXRzIG1lbW9yeSBjaHVua3Mgc3RhcnRpbmcgZnJv bSBzdGFydCBzeW1ib2wgYW5kCmdvaW5nIGRvd24uIFNhZGx5IHRoaXMgZG9lcyBub3Qgd29yayB3 aGVuIFhlbiBpcyBsb2FkZWQgdXNpbmcgbXVsdGlib290Mgpwcm90b2NvbCBiZWNhdXNlIHN0YXJ0 IGxpdmVzIG9uIDEgTWlCIGFkZHJlc3MuIFNvLCBJIHRyaWVkIHRvIHVzZQptZW1fbG93ZXIgYWRk cmVzcyBjYWxjdWxhdGVkIGJ5IEdSVUIyLiBIb3dldmVyLCBpdCB3b3JrcyBvbmx5IG9uIHNvbWUK bWFjaGluZXMuIFRoZXJlIGFyZSBtYWNoaW5lcyBpbiB0aGUgd2lsZCAoZS5nLiBEZWxsIFBvd2Vy RWRnZSBSODIwKQp3aGljaCB1c2VzIGZpcnN0IH42NDAgS2lCIGZvciBib290IHNlcnZpY2VzIGNv ZGUgb3IgZGF0YS4uLiA6LSgoKAoKSW4gY2FzZSBvZiBtdWx0aWJvb3QyIHByb3RvY29sIHdlIG5l ZWQgdGhhdCBwbGFjZV9zdHJpbmcoKSBvbmx5IGFsbG9jYXRlCm1lbW9yeSBjaHVuayBmb3IgRUZJ IG1lbW9yeSBtYXAuIEhvd2V2ZXIsIEkgdGhpbmsgdGhhdCBpdCBzaG91bGQgYmUgZml4ZWQKaW5z dGVhZCBvZiBtYWtpbmcgYW5vdGhlciBmdW5jdGlvbiB1c2VkIGp1c3QgaW4gb25lIGNhc2UuIEkg dGhvdWdodCBhYm91dAp0d28gc29sdXRpb25zLgoKMSkgV2UgY291bGQgdXNlIG5hdGl2ZSBFRkkg YWxsb2NhdGlvbiBmdW5jdGlvbnMgKGUuZy4gQWxsb2NhdGVQb29sKCkKICAgb3IgQWxsb2NhdGVQ YWdlcygpKSB0byBnZXQgbWVtb3J5IGNodW5rLiBIb3dldmVyLCBsYXRlciAoc29tZXdoZXJlCiAg IGluIF9fc3RhcnRfeGVuKCkpIHdlIG11c3QgY29weSBpdHMgY29udGVudHMgdG8gc2FmZSBwbGFj ZSBvciByZXNlcnZlCiAgIHRoaXMgaW4gZTgyMCBtZW1vcnkgbWFwIGFuZCBtYXAgaXQgaW4gWGVu IHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4KICAgSW4gbGF0ZXIgY2FzZSB3ZSBtdXN0IGFsc28gY2Fy ZSBhYm91dCBjb25mbGljdHMgd2l0aCBlLmcuIGNyYXNoCiAgIGtlcm5lbCByZWdpb25zIHdoaWNo IGNvdWxkIGJlIHF1aXRlIGRpZmZpY3VsdC4KCjIpIFdlIG1heSBhbGxvY2F0ZSBtZW1vcnkgYXJl YSBzdGF0aWNhbGx5IHNvbWV3aGVyZSBpbiBYZW4gY29kZSB3aGljaAogICBjb3VsZCBiZSB1c2Vk IGFzIG1lbW9yeSBwb29sIGZvciBlYXJseSBkeW5hbWljIGFsbG9jYXRpb25zLiBMb29rcwogICBx dWl0ZSBzaW1wbGUuIEFkZGl0aW9uYWxseSwgaXQgd291bGQgbm90IGRlcGVuZCBvbiBFRkkgYXQg YWxsIGFuZAogICBjb3VsZCBiZSB1c2VkIG9uIGxlZ2FjeSBCSU9TIHBsYXRmb3JtcyBpZiB3ZSBu ZWVkIGl0LiBIb3dldmVyLCB3ZQogICBtdXN0IGNhcmVmdWxseSBjaG9vc2Ugc2l6ZSBvZiB0aGlz IHBvb2wuIFdlIGRvIG5vdCB3YW50IGluY3JlYXNlCiAgIFhlbiBiaW5hcnkgc2l6ZSB0b28gbXVj aCBhbmQgd2FzdGUgdG9vIG11Y2ggbWVtb3J5IGJ1dCBhbHNvIHdlIG11c3QgZml0CiAgIGF0IGxl YXN0IG1lbW9yeSBtYXAgb24geDg2IEVGSSBwbGF0Zm9ybXMuIEFzIEkgc2F3IG9uIHNtYWxsIG1h Y2hpbmUsCiAgIGUuZy4gSUJNIFN5c3RlbSB4MzU1MCBNMiB3aXRoIDggR2lCIFJBTSwgbWVtb3J5 IG1hcCBtYXkgY29udGFpbiBtb3JlCiAgIHRoYW4gMjAwIGVudHJpZXMuIEV2ZXJ5IGVudHJ5IG9u IHg4Ni02NCBwbGF0Zm9ybSBpcyA0MCBieXRlcyBpbiBzaXplLgogICBTbywgaXQgbWVhbnMgdGhh dCB3ZSBuZWVkIG1vcmUgdGhhbiA4IEtpQiBmb3IgRUZJIG1lbW9yeSBtYXAgb25seS4KICAgQWRk aXRpb25hbGx5LCBpZiB3ZSB3YW50IHRvIHVzZSB0aGlzIG1lbW9yeSBwb29sIGZvciBYZW4gYW5k IG1vZHVsZXMKICAgY29tbWFuZCBsaW5lIHN0b3JhZ2UgKGl0IHdvdWxkIGJlIHVzZWQgd2hlbiB4 ZW4uZWZpIGlzIGV4ZWN1dGVkIGFzIEVGSQogICBhcHBsaWNhdGlvbikgdGhlbiB3ZSBzaG91bGQg YWRkLCBJIHRoaW5rLCBhYm91dCAxIEtpQi4gSW4gdGhpcyBjYXNlLAogICB0byBiZSBvbiBzYWZl IHNpZGUsIHdlIHNob3VsZCBhc3N1bWUgYXQgbGVhc3QgNjQgS2lCIHBvb2wgZm9yIGVhcmx5CiAg IG1lbW9yeSBhbGxvY2F0aW9ucywgd2hpY2ggaXMgYWJvdXQgNCB0aW1lcyBvZiBvdXIgZWFybGll ciBjYWxjdWxhdGlvbnMuCiAgIEhvd2V2ZXIsIGR1cmluZyBkaXNjdXNzaW9uIG9uIFhlbi1kZXZl bCBKYW4gQmV1bGljaCBzdWdnZXN0ZWQgdGhhdAogICBqdXN0IGluIGNhc2Ugd2Ugc2hvdWxkIHVz ZSAxIE1pQiBtZW1vcnkgcG9vbCBsaWtlIGl0IHdhcyBpbiBvcmlnaW5hbAogICBwbGFjZV9zdHJp bmcoKSBpbXBsZW1lbnRhdGlvbi4gU28sIGxldCdzIHVzZSAxIE1pQiBhcyBpdCB3YXMgcHJvcG9z ZWQuCiAgIElmIHdlIHRoaW5rIHRoYXQgd2Ugc2hvdWxkIG5vdCB3YXN0ZSB1bmFsbG9jYXRlZCBt ZW1vcnkgaW4gdGhlIHBvb2wKICAgb24gcnVubmluZyBzeXN0ZW0gdGhlbiB3ZSBjYW4gbWFyayB0 aGlzIHJlZ2lvbiBhcyBfX2luaXRkYXRhIGFuZCBtb3ZlCiAgIGFsbCByZXF1aXJlZCBkYXRhIHRv IGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBwbGFjZXMgc29tZXdoZXJlIGluIF9fc3RhcnRfeGVuKCku CgpOb3cgc29sdXRpb24gIzIgaXMgaW1wbGVtZW50ZWQgYnV0IG1heWJlIHdlIHNob3VsZCBjb25z aWRlciAjMSBvbmUgZGF5LgoKSmFuIEJldWxpY2ggYWRkZWQgMWIpIERvIGF3YXkgd2l0aCBlZmlf YXJjaF9hbGxvY2F0ZV9tbWFwX2J1ZmZlcigpIGFuZCB1c2UKICAgQWxsb2NhdGVQYWdlcygpIHVu aWZvcm1seSwgcGVyaGFwcyB3aXRoIGEgcGVyLWFyY2ggc3BlY2lmaWVkIG1lbW9yeSB0eXBlCiAg IChieSBtZWFucyBvZiB3aGljaCB5b3UgY2FuIGNvbnRyb2wgd2hldGhlciB0aGUgbWVtb3J5IGNv bnRlbnRzIHdpbGwgcmVtYWluCiAgIHByZXNlcnZlZCB1bnRpbCB0aGUgdGltZSB5b3Ugd2FudCB0 byBsb29rIGF0IGl0KS4gVGhhdCB3aWxsIGVsaW1pbmF0ZSB0aGUKICAgb25seSBwbGFjZV9zdHJp bmcoKSB5b3UncmUgY29uY2VybmVkIGFib3V0LCB3aXRoIGEgcGF0Y2ggd2l0aCBiZXR0ZXIKICAg ZGlmZnN0YXQgKGxhcmdlbHkgZHVlIHRvIHRoZSBxdWVzdGlvbmFibGUgYXJjaCBob29rIGdvbmUp LgoKSG93ZXZlciwgdGhpcyBzb2x1dGlvbiBkb2VzIG5vdCBzb2x2ZSBjb25mbGljdHMgcHJvYmxl bSBkZXNjcmliZWQgaW4gIzEKYmVjYXVzZSBFRkkgbWVtb3J5IG1hcCBpcyBuZWVkZWQgZHVyaW5n IFhlbiBydW50aW1lIGFmdGVyIGluaXQgcGhhc2UuClNvLCBmaW5hbGx5IHdlIHdvdWxkIGdldCBi YWNrIHRvICMxLiBIbW1tLi4uIFNob3VsZCBJIGNoZWNrIGhvdyBMaW51eAphbmQgb3RoZXJzIGNv cGUgd2l0aCB0aGF0IHByb2JsZW0/CgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgS2lwZXIgPGRhbmll bC5raXBlckBvcmFjbGUuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9lZmkvZWZpLWJvb3QuaCB8ICAg MzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9z ZXR1cC5jICAgICAgICB8ICAgIDMgKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMo KyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9lZmkvZWZpLWJv b3QuaCBiL3hlbi9hcmNoL3g4Ni9lZmkvZWZpLWJvb3QuaAppbmRleCA2ZGJiMTRkLi44NGFmZmZh IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZWZpL2VmaS1ib290LmgKKysrIGIveGVuL2FyY2gv eDg2L2VmaS9lZmktYm9vdC5oCkBAIC0xMDMsOSArMTAzLDM2IEBAIHN0YXRpYyB2b2lkIF9faW5p dCByZWxvY2F0ZV90cmFtcG9saW5lKHVuc2lnbmVkIGxvbmcgcGh5cykKICAgICAgICAgKih1MTYg KikoKnRyYW1wb2xpbmVfcHRyICsgKGxvbmcpdHJhbXBvbGluZV9wdHIpID0gcGh5cyA+PiA0Owog fQogCisjZGVmaW5lIEVCTUFMTE9DX1NJWkUJTUIoMSkKKworc3RhdGljIGNoYXIgX19pbml0ZGF0 YSBlYm1hbGxvY19tZW1bRUJNQUxMT0NfU0laRV07CitzdGF0aWMgY2hhciBfX2luaXRkYXRhICpl Ym1hbGxvY19mcmVlID0gTlVMTDsKKworLyogRUZJIGJvb3QgYWxsb2NhdG9yLiAqLworc3RhdGlj IHZvaWQgX19pbml0ICplYm1hbGxvYyhzaXplX3Qgc2l6ZSkKK3sKKyAgICB2b2lkICpwdHI7CisK KyAgICAvKgorICAgICAqIEluaXQgZWJtYWxsb2NfZnJlZSBvbiBydW50aW1lLiBTdGF0aWMgaW5p dGlhbGl6YXRpb24KKyAgICAgKiB3aWxsIG5vdCB3b3JrIGJlY2F1c2UgaXQgcHV0cyB2aXJ0dWFs IGFkZHJlc3MgdGhlcmUuCisgICAgICovCisgICAgaWYgKCBlYm1hbGxvY19mcmVlID09IE5VTEwg KQorICAgICAgICBlYm1hbGxvY19mcmVlID0gZWJtYWxsb2NfbWVtOworCisgICAgcHRyID0gZWJt YWxsb2NfZnJlZTsKKworICAgIGVibWFsbG9jX2ZyZWUgKz0gc2l6ZTsKKworICAgIGlmICggZWJt YWxsb2NfZnJlZSAtIGVibWFsbG9jX21lbSA+IHNpemVvZihlYm1hbGxvY19tZW0pICkKKyAgICAg ICAgYmxleGl0KEwiT3V0IG9mIHN0YXRpYyBtZW1vcnlcclxuIik7CisKKyAgICByZXR1cm4gcHRy OworfQorCiBzdGF0aWMgdm9pZCBfX2luaXQgcGxhY2Vfc3RyaW5nKHUzMiAqYWRkciwgY29uc3Qg Y2hhciAqcykKIHsKLSAgICBzdGF0aWMgY2hhciAqX19pbml0ZGF0YSBhbGxvYyA9IHN0YXJ0Owor ICAgIGNoYXIgKmFsbG9jID0gTlVMTDsKIAogICAgIGlmICggcyAmJiAqcyApCiAgICAgewpAQCAt MTEzLDcgKzE0MCw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBwbGFjZV9zdHJpbmcodTMyICphZGRy LCBjb25zdCBjaGFyICpzKQogICAgICAgICBjb25zdCBjaGFyICpvbGQgPSAoY2hhciAqKShsb25n KSphZGRyOwogICAgICAgICBzaXplX3QgbGVuMiA9ICphZGRyID8gc3RybGVuKG9sZCkgKyAxIDog MDsKIAotICAgICAgICBhbGxvYyAtPSBsZW4xICsgbGVuMjsKKyAgICAgICAgYWxsb2MgPSBlYm1h bGxvYyhsZW4xICsgbGVuMik7CiAgICAgICAgIC8qCiAgICAgICAgICAqIEluc2VydCBuZXcgc3Ry aW5nIGJlZm9yZSBhbHJlYWR5IGV4aXN0aW5nIG9uZS4gVGhpcyBpcyBuZWVkZWQKICAgICAgICAg ICogZm9yIG9wdGlvbnMgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUgdG8gb3ZlcnJpZGUgb3B0 aW9ucyBmcm9tCkBAIC0xOTYsMTIgKzIyMyw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBlZmlfYXJj aF9wcm9jZXNzX21lbW9yeV9tYXAoRUZJX1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFibGUsCiAKIHN0 YXRpYyB2b2lkICpfX2luaXQgZWZpX2FyY2hfYWxsb2NhdGVfbW1hcF9idWZmZXIoVUlOVE4gbWFw X3NpemUpCiB7Ci0gICAgcGxhY2Vfc3RyaW5nKCZtYmkubWVtX3VwcGVyLCBOVUxMKTsKLSAgICBt YmkubWVtX3VwcGVyIC09IG1hcF9zaXplOwotICAgIG1iaS5tZW1fdXBwZXIgJj0gLV9fYWxpZ25v Zl9fKEVGSV9NRU1PUllfREVTQ1JJUFRPUik7Ci0gICAgaWYgKCBtYmkubWVtX3VwcGVyIDwgeGVu X3BoeXNfc3RhcnQgKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gKHZvaWQgKiko bG9uZyltYmkubWVtX3VwcGVyOworICAgIHJldHVybiBlYm1hbGxvYyhtYXBfc2l6ZSk7CiB9CiAK IHN0YXRpYyB2b2lkIF9faW5pdCBlZmlfYXJjaF9wcmVfZXhpdF9ib290KHZvaWQpCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvc2V0dXAuYyBiL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCmluZGV4IDVk ODA4NjguLjRlYjg1NzIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCisrKyBiL3hl bi9hcmNoL3g4Ni9zZXR1cC5jCkBAIC0xMDU3LDggKzEwNTcsNyBAQCB2b2lkIF9faW5pdCBub3Jl dHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQogCiAgICAgaWYgKCAheGVuX3Bo eXNfc3RhcnQgKQogICAgICAgICBwYW5pYygiTm90IGVub3VnaCBtZW1vcnkgdG8gcmVsb2NhdGUg WGVuLiIpOwotICAgIHJlc2VydmVfZTgyMF9yYW0oJmJvb3RfZTgyMCwgZWZpX2VuYWJsZWQoRUZJ X1BMQVRGT1JNKSA/IG1iaS0+bWVtX3VwcGVyIDogX19wYSgmX3N0YXJ0KSwKLSAgICAgICAgICAg ICAgICAgICAgIF9fcGEoJl9lbmQpKTsKKyAgICByZXNlcnZlX2U4MjBfcmFtKCZib290X2U4MjAs IF9fcGEoJl9zdGFydCksIF9fcGEoJl9lbmQpKTsKIAogICAgIC8qIExhdGUga2V4ZWMgcmVzZXJ2 YXRpb24gKGR5bmFtaWMgc3RhcnQgYWRkcmVzcykuICovCiAgICAga2V4ZWNfcmVzZXJ2ZV9hcmVh KCZib290X2U4MjApOwotLSAKMS43LjEwLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=