From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v6 02/15] x86/boot/reloc: create generic alloc and copy functions Date: Mon, 12 Sep 2016 22:18:17 +0200 Message-ID: <1473711511-11931-3-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bjXjE-00062t-DI for xen-devel@lists.xenproject.org; Mon, 12 Sep 2016 20:21:20 +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 Q3JlYXRlIGdlbmVyaWMgYWxsb2MgYW5kIGNvcHkgZnVuY3Rpb25zLiBXZSBuZWVkCnNlcGFyYXRl IHRvb2xzIGZvciBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgY29weSB0bwpwcm92aWRlIG11bHRpYm9v dDIgcHJvdG9jb2wgc3VwcG9ydC4KClNpZ25lZC1vZmYtYnk6IERhbmllbCBLaXBlciA8ZGFuaWVs LmtpcGVyQG9yYWNsZS5jb20+Ci0tLQp2NiAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIHJlZHVj ZSBudW1iZXIgb2YgY2FzdHMKICAgICAoc3VnZ2VzdGVkIGJ5IEFuZHJldyBDb29wZXIgYW5kIEph biBCZXVsaWNoKS4KCnY0IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gYXZvaWQgYXNzZW1ibHkg dXNhZ2UuCgp2MyAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIHVzZSAiZyIgY29uc3RyYWludCBp bnN0ZWFkIG9mICJyIiBmb3IgYWxsb2NfbWVtKCkgYnl0ZXMgYXJndW1lbnQKICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKS4KCnYyIC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gZ2VuZXJh bGl6ZSBuZXcgZnVuY3Rpb25zIG5hbWVzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCks CiAgIC0gcmVkdWNlIG51bWJlciBvZiBjYXN0cwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpLgotLS0KIHhlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMgfCAgIDUzICsrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMyIGluc2Vy dGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290 L3JlbG9jLmMgYi94ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jCmluZGV4IDI4YzZjZWEuLjkwNTNl MmMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMKKysrIGIveGVuL2FyY2gv eDg2L2Jvb3QvcmVsb2MuYwpAQCAtMzAsNjIgKzMwLDczIEBAIHR5cGVkZWYgdW5zaWduZWQgaW50 IHUzMjsKICNkZWZpbmUgQUxJR05fVVAoYXJnLCBhbGlnbikgXAogICAgICAgICAgICAgICAgICgo KGFyZykgKyAoYWxpZ24pIC0gMSkgJiB+KCh0eXBlb2YoYXJnKSkoYWxpZ24pIC0gMSkpCiAKKyNk ZWZpbmUgX3AodmFsKQkJKCh2b2lkICopKHVuc2lnbmVkIGxvbmcpKHZhbCkpCisKIHN0YXRpYyB1 MzIgYWxsb2M7CiAKLXN0YXRpYyB2b2lkICpyZWxvY19tYmlfc3RydWN0KHZvaWQgKm9sZCwgdW5z aWduZWQgaW50IGJ5dGVzKQorc3RhdGljIHUzMiBhbGxvY19tZW0odTMyIGJ5dGVzKQogewotICAg IHZvaWQgKm5ldzsKKyAgICByZXR1cm4gYWxsb2MgLT0gQUxJR05fVVAoYnl0ZXMsIDE2KTsKK30K IAotICAgIGFsbG9jIC09IEFMSUdOX1VQKGJ5dGVzLCAxNik7Ci0gICAgbmV3ID0gKHZvaWQgKilh bGxvYzsKK3N0YXRpYyB1MzIgY29weV9tZW0odTMyIHNyYywgdTMyIGJ5dGVzKQoreworICAgIHUz MiBkc3QsIGRzdF9yZXQ7CisKKyAgICBkc3QgPSBhbGxvY19tZW0oYnl0ZXMpOworICAgIGRzdF9y ZXQgPSBkc3Q7CiAKICAgICB3aGlsZSAoIGJ5dGVzLS0gKQotICAgICAgICAqKGNoYXIgKiluZXcr KyA9ICooY2hhciAqKW9sZCsrOworICAgICAgICAqKGNoYXIgKilkc3QrKyA9ICooY2hhciAqKXNy YysrOwogCi0gICAgcmV0dXJuICh2b2lkICopYWxsb2M7CisgICAgcmV0dXJuIGRzdF9yZXQ7CiB9 CiAKLXN0YXRpYyBjaGFyICpyZWxvY19tYmlfc3RyaW5nKGNoYXIgKm9sZCkKK3N0YXRpYyB1MzIg Y29weV9zdHJpbmcodTMyIHNyYykKIHsKLSAgICBjaGFyICpwOwotICAgIGZvciAoIHAgPSBvbGQ7 ICpwICE9ICdcMCc7IHArKyApCisgICAgdTMyIHA7CisKKyAgICBpZiAoICFzcmMgKQorICAgICAg ICByZXR1cm4gMDsKKworICAgIGZvciAoIHAgPSBzcmM7ICooY2hhciAqKXAgIT0gJ1wwJzsgcCsr ICkKICAgICAgICAgY29udGludWU7Ci0gICAgcmV0dXJuIHJlbG9jX21iaV9zdHJ1Y3Qob2xkLCBw IC0gb2xkICsgMSk7CisKKyAgICByZXR1cm4gY29weV9tZW0oc3JjLCBwIC0gc3JjICsgMSk7CiB9 CiAKLW11bHRpYm9vdF9pbmZvX3QgX19zdGRjYWxsICpyZWxvYyhtdWx0aWJvb3RfaW5mb190ICpt Ymlfb2xkLCB1MzIgdHJhbXBvbGluZSkKK211bHRpYm9vdF9pbmZvX3QgX19zdGRjYWxsICpyZWxv Yyh1MzIgbWJpX29sZCwgdTMyIHRyYW1wb2xpbmUpCiB7CiAgICAgbXVsdGlib290X2luZm9fdCAq bWJpOwogICAgIGludCBpOwogCiAgICAgYWxsb2MgPSB0cmFtcG9saW5lOwogCi0gICAgbWJpID0g cmVsb2NfbWJpX3N0cnVjdChtYmlfb2xkLCBzaXplb2YoKm1iaSkpOworICAgIG1iaSA9IF9wKGNv cHlfbWVtKG1iaV9vbGQsIHNpemVvZigqbWJpKSkpOwogCiAgICAgaWYgKCBtYmktPmZsYWdzICYg TUJJX0NNRExJTkUgKQotICAgICAgICBtYmktPmNtZGxpbmUgPSAodTMyKXJlbG9jX21iaV9zdHJp bmcoKGNoYXIgKiltYmktPmNtZGxpbmUpOworICAgICAgICBtYmktPmNtZGxpbmUgPSBjb3B5X3N0 cmluZyhtYmktPmNtZGxpbmUpOwogCiAgICAgaWYgKCBtYmktPmZsYWdzICYgTUJJX01PRFVMRVMg KQogICAgIHsKLSAgICAgICAgbW9kdWxlX3QgKm1vZHMgPSByZWxvY19tYmlfc3RydWN0KAotICAg ICAgICAgICAgKG1vZHVsZV90ICopbWJpLT5tb2RzX2FkZHIsIG1iaS0+bW9kc19jb3VudCAqIHNp emVvZihtb2R1bGVfdCkpOworICAgICAgICBtb2R1bGVfdCAqbW9kczsKIAotICAgICAgICBtYmkt Pm1vZHNfYWRkciA9ICh1MzIpbW9kczsKKyAgICAgICAgbWJpLT5tb2RzX2FkZHIgPSBjb3B5X21l bShtYmktPm1vZHNfYWRkciwgbWJpLT5tb2RzX2NvdW50ICogc2l6ZW9mKG1vZHVsZV90KSk7CisK KyAgICAgICAgbW9kcyA9IF9wKG1iaS0+bW9kc19hZGRyKTsKIAogICAgICAgICBmb3IgKCBpID0g MDsgaSA8IG1iaS0+bW9kc19jb3VudDsgaSsrICkKICAgICAgICAgewogICAgICAgICAgICAgaWYg KCBtb2RzW2ldLnN0cmluZyApCi0gICAgICAgICAgICAgICAgbW9kc1tpXS5zdHJpbmcgPSAodTMy KXJlbG9jX21iaV9zdHJpbmcoKGNoYXIgKiltb2RzW2ldLnN0cmluZyk7CisgICAgICAgICAgICAg ICAgbW9kc1tpXS5zdHJpbmcgPSBjb3B5X3N0cmluZyhtb2RzW2ldLnN0cmluZyk7CiAgICAgICAg IH0KICAgICB9CiAKICAgICBpZiAoIG1iaS0+ZmxhZ3MgJiBNQklfTUVNTUFQICkKLSAgICAgICAg bWJpLT5tbWFwX2FkZHIgPSAodTMyKXJlbG9jX21iaV9zdHJ1Y3QoCi0gICAgICAgICAgICAobWVt b3J5X21hcF90ICopbWJpLT5tbWFwX2FkZHIsIG1iaS0+bW1hcF9sZW5ndGgpOworICAgICAgICBt YmktPm1tYXBfYWRkciA9IGNvcHlfbWVtKG1iaS0+bW1hcF9hZGRyLCBtYmktPm1tYXBfbGVuZ3Ro KTsKIAogICAgIGlmICggbWJpLT5mbGFncyAmIE1CSV9MT0FERVJOQU1FICkKLSAgICAgICAgbWJp LT5ib290X2xvYWRlcl9uYW1lID0gKHUzMilyZWxvY19tYmlfc3RyaW5nKAotICAgICAgICAgICAg KGNoYXIgKiltYmktPmJvb3RfbG9hZGVyX25hbWUpOworICAgICAgICBtYmktPmJvb3RfbG9hZGVy X25hbWUgPSBjb3B5X3N0cmluZyhtYmktPmJvb3RfbG9hZGVyX25hbWUpOwogCiAgICAgLyogTWFz ayBmZWF0dXJlcyB3ZSBkb24ndCB1bmRlcnN0YW5kIG9yIGRvbid0IHJlbG9jYXRlLiAqLwogICAg IG1iaS0+ZmxhZ3MgJj0gKE1CSV9NRU1MSU1JVFMgfAotLSAKMS43LjEwLjQKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK