From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v3 04/16] x86/boot/reloc: create generic alloc and copy functions Date: Fri, 15 Apr 2016 14:33:04 +0200 Message-ID: <1460723596-13261-5-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ar2wf-000551-61 for xen-devel@lists.xenproject.org; Fri, 15 Apr 2016 12:33:57 +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 Q3JlYXRlIGdlbmVyaWMgYWxsb2MgYW5kIGNvcHkgZnVuY3Rpb25zLiBXZSBuZWVkCnNlcGFyYXRl IHRvb2xzIGZvciBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgY29weSB0bwpwcm92aWRlIG11bHRpYm9v dDIgcHJvdG9jb2wgc3VwcG9ydC4KClNpZ25lZC1vZmYtYnk6IERhbmllbCBLaXBlciA8ZGFuaWVs LmtpcGVyQG9yYWNsZS5jb20+CkFja2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5j b20+Ci0tLQp2MyAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIHVzZSAiZyIgY29uc3RyYWludCBp bnN0ZWFkIG9mICJyIiBmb3IgYWxsb2NfbWVtKCkgYnl0ZXMgYXJndW1lbnQKICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKS4KCnYyIC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gZ2VuZXJh bGl6ZSBuZXcgZnVuY3Rpb25zIG5hbWVzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCks CiAgIC0gcmVkdWNlIG51bWJlciBvZiBjYXN0cwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpLgotLS0KIHhlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMgfCAgIDU5ICsrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDM3IGluc2Vy dGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290 L3JlbG9jLmMgYi94ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jCmluZGV4IDAwNmY0MWQuLmQ2MGEw NzggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMKKysrIGIveGVuL2FyY2gv eDg2L2Jvb3QvcmVsb2MuYwpAQCAtNDMsOSArNDMsMTAgQEAgYXNtICgKIHR5cGVkZWYgdW5zaWdu ZWQgaW50IHUzMjsKICNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL3hlbi9tdWx0aWJvb3QuaCIK IAotc3RhdGljIHZvaWQgKnJlbG9jX21iaV9zdHJ1Y3Qodm9pZCAqb2xkLCB1bnNpZ25lZCBpbnQg Ynl0ZXMpCitzdGF0aWMgdTMyIGFsbG9jX21lbSh1MzIgYnl0ZXMpCiB7Ci0gICAgdm9pZCAqbmV3 OworICAgIHUzMiBzOworCiAgICAgYXNtKAogICAgICIgICAgY2FsbCAxZiAgICAgICAgICAgICAg ICAgICAgICBcbiIKICAgICAiMTogIHBvcCAgJSVlZHggICAgICAgICAgICAgICAgICAgXG4iCkBA IC01Myw1MCArNTQsNjQgQEAgc3RhdGljIHZvaWQgKnJlbG9jX21iaV9zdHJ1Y3Qodm9pZCAqb2xk LCB1bnNpZ25lZCBpbnQgYnl0ZXMpCiAgICAgIiAgICBzdWIgICUxLCUwICAgICAgICAgICAgICAg ICAgIFxuIgogICAgICIgICAgYW5kICAkfjE1LCUwICAgICAgICAgICAgICAgICBcbiIKICAgICAi ICAgIG1vdiAgJTAsYWxsb2MtMWIoJSVlZHgpICAgICAgXG4iCi0gICAgIiAgICBtb3YgICUwLCUl ZWRpICAgICAgICAgICAgICAgIFxuIgotICAgICIgICAgcmVwICBtb3ZzYiAgICAgICAgICAgICAg ICAgICBcbiIKLSAgICAgICA6ICI9JnIiIChuZXcpLCAiK2MiIChieXRlcyksICIrUyIgKG9sZCkK LQk6IDogImVkeCIsICJlZGkiLCAibWVtb3J5Iik7Ci0gICAgcmV0dXJuIG5ldzsKKyAgICAgICA6 ICI9JnIiIChzKSA6ICJnIiAoYnl0ZXMpIDogImVkeCIsICJtZW1vcnkiKTsKKworICAgIHJldHVy biBzOwogfQogCi1zdGF0aWMgY2hhciAqcmVsb2NfbWJpX3N0cmluZyhjaGFyICpvbGQpCitzdGF0 aWMgdTMyIGNvcHlfbWVtKHUzMiBzcmMsIHUzMiBieXRlcykKIHsKLSAgICBjaGFyICpwOwotICAg IGZvciAoIHAgPSBvbGQ7ICpwICE9ICdcMCc7IHArKyApCisgICAgdTMyIGRzdCwgZHN0X2FzbTsK KworICAgIGRzdCA9IGFsbG9jX21lbShieXRlcyk7CisgICAgZHN0X2FzbSA9IGRzdDsKKworICAg IGFzbSB2b2xhdGlsZSgicmVwIG1vdnNiIiA6ICIrUyIgKHNyYyksICIrRCIgKGRzdF9hc20pLCAi K2MiIChieXRlcykgOiA6ICJtZW1vcnkiKTsKKworICAgIHJldHVybiBkc3Q7Cit9CisKK3N0YXRp YyB1MzIgY29weV9zdHJpbmcodTMyIHNyYykKK3sKKyAgICB1MzIgcDsKKworICAgIGlmICggc3Jj ID09IDAgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoIHAgPSBzcmM7ICooY2hhciAq KXAgIT0gJ1wwJzsgcCsrICkKICAgICAgICAgY29udGludWU7Ci0gICAgcmV0dXJuIHJlbG9jX21i aV9zdHJ1Y3Qob2xkLCBwIC0gb2xkICsgMSk7CisKKyAgICByZXR1cm4gY29weV9tZW0oc3JjLCBw IC0gc3JjICsgMSk7CiB9CiAKLW11bHRpYm9vdF9pbmZvX3QgKnJlbG9jKG11bHRpYm9vdF9pbmZv X3QgKm1iaV9vbGQpCittdWx0aWJvb3RfaW5mb190ICpyZWxvYyh1MzIgbWJpX29sZCkKIHsKLSAg ICBtdWx0aWJvb3RfaW5mb190ICptYmkgPSByZWxvY19tYmlfc3RydWN0KG1iaV9vbGQsIHNpemVv ZigqbWJpKSk7CisgICAgbXVsdGlib290X2luZm9fdCAqbWJpID0gKG11bHRpYm9vdF9pbmZvX3Qg Kiljb3B5X21lbShtYmlfb2xkLCBzaXplb2YoKm1iaSkpOwogICAgIGludCBpOwogCiAgICAgaWYg KCBtYmktPmZsYWdzICYgTUJJX0NNRExJTkUgKQotICAgICAgICBtYmktPmNtZGxpbmUgPSAodTMy KXJlbG9jX21iaV9zdHJpbmcoKGNoYXIgKiltYmktPmNtZGxpbmUpOworICAgICAgICBtYmktPmNt ZGxpbmUgPSBjb3B5X3N0cmluZyhtYmktPmNtZGxpbmUpOwogCiAgICAgaWYgKCBtYmktPmZsYWdz ICYgTUJJX01PRFVMRVMgKQogICAgIHsKLSAgICAgICAgbW9kdWxlX3QgKm1vZHMgPSByZWxvY19t Ymlfc3RydWN0KAotICAgICAgICAgICAgKG1vZHVsZV90ICopbWJpLT5tb2RzX2FkZHIsIG1iaS0+ bW9kc19jb3VudCAqIHNpemVvZihtb2R1bGVfdCkpOworICAgICAgICBtb2R1bGVfdCAqbW9kczsK IAotICAgICAgICBtYmktPm1vZHNfYWRkciA9ICh1MzIpbW9kczsKKyAgICAgICAgbWJpLT5tb2Rz X2FkZHIgPSBjb3B5X21lbShtYmktPm1vZHNfYWRkciwgbWJpLT5tb2RzX2NvdW50ICogc2l6ZW9m KG1vZHVsZV90KSk7CisKKyAgICAgICAgbW9kcyA9IChtb2R1bGVfdCAqKW1iaS0+bW9kc19hZGRy OwogCiAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgbWJpLT5tb2RzX2NvdW50OyBpKysgKQogICAg ICAgICB7CiAgICAgICAgICAgICBpZiAoIG1vZHNbaV0uc3RyaW5nICkKLSAgICAgICAgICAgICAg ICBtb2RzW2ldLnN0cmluZyA9ICh1MzIpcmVsb2NfbWJpX3N0cmluZygoY2hhciAqKW1vZHNbaV0u c3RyaW5nKTsKKyAgICAgICAgICAgICAgICBtb2RzW2ldLnN0cmluZyA9IGNvcHlfc3RyaW5nKG1v ZHNbaV0uc3RyaW5nKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICggbWJpLT5mbGFncyAm IE1CSV9NRU1NQVAgKQotICAgICAgICBtYmktPm1tYXBfYWRkciA9ICh1MzIpcmVsb2NfbWJpX3N0 cnVjdCgKLSAgICAgICAgICAgIChtZW1vcnlfbWFwX3QgKiltYmktPm1tYXBfYWRkciwgbWJpLT5t bWFwX2xlbmd0aCk7CisgICAgICAgIG1iaS0+bW1hcF9hZGRyID0gY29weV9tZW0obWJpLT5tbWFw X2FkZHIsIG1iaS0+bW1hcF9sZW5ndGgpOwogCiAgICAgaWYgKCBtYmktPmZsYWdzICYgTUJJX0xP QURFUk5BTUUgKQotICAgICAgICBtYmktPmJvb3RfbG9hZGVyX25hbWUgPSAodTMyKXJlbG9jX21i aV9zdHJpbmcoCi0gICAgICAgICAgICAoY2hhciAqKW1iaS0+Ym9vdF9sb2FkZXJfbmFtZSk7Cisg ICAgICAgIG1iaS0+Ym9vdF9sb2FkZXJfbmFtZSA9IGNvcHlfc3RyaW5nKG1iaS0+Ym9vdF9sb2Fk ZXJfbmFtZSk7CiAKICAgICAvKiBNYXNrIGZlYXR1cmVzIHdlIGRvbid0IHVuZGVyc3RhbmQgb3Ig ZG9uJ3QgcmVsb2NhdGUuICovCiAgICAgbWJpLT5mbGFncyAmPSAoTUJJX01FTUxJTUlUUyB8Ci0t IAoxLjcuMTAuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==