From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v3 12/25] xen/arm: refactor construct_dom0 Date: Tue, 31 Jul 2018 16:27:55 -0700 Message-ID: <1533079688-9541-12-git-send-email-sstabellini@kernel.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: julien.grall@arm.com Cc: Stefano Stabellini , sstabellini@kernel.org, andrii_anisov@epam.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org TW92ZSBnZW5lcmljIGluaXRpYWxpemF0aW9ucyBvdXQgb2YgY29uc3RydWN0X2RvbTAgc28gdGhh dCB0aGV5IGNhbiBiZQpyZXVzZWQuCgpSZW5hbWUgcHJlcGFyZV9kdGIgdG8gcHJlcGFyZV9kdGJf aHdkb20gdG8gYXZvaWQgY29uZnVzaW9uLgoKTm8gZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoaXMg cGF0Y2guCgpTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0ZWZhbm9zQHhpbGlu eC5jb20+CgotLS0KQ2hhbmdlcyBpbiB2MzoKLSBtb3ZlIHNldHRpbmcgdHlwZSBiZWZvcmUgYWxs b2NhdGVfbWVtb3J5Ci0gYWRkIGlmZGVmIGFyb3VuZCBpdCBhbmQgYSBjb21tZW50CkNoYW5nZXMg aW4gdjI6Ci0gbW92ZSBkaXNjYXJkX2luaXRpYWxfbW9kdWxlcygpIGFmdGVyIF9fY29uc3RydWN0 X2RvbWFpbigpCi0gcmVtb3ZlIHVzZWxlc3MgYmxhbmsgbGluZQotIGxlYXZlIHNhZmV0eSBCVUdf T05zIGluIF9fY29uc3RydWN0X2RvbWFpbgotIHJlbmFtZSBwcmVwYXJlX2R0YiB0byBwcmVwYXJl X2R0Yl9od2RvbQotLS0KIHhlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYyB8IDEyOCArKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDcw IGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2Fy bS9kb21haW5fYnVpbGQuYyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwppbmRleCA4ZDgy ODQ5Li4wODM1MzQwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKKysr IGIveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCkBAIC0xMzcxLDcgKzEzNzEsNyBAQCBzdGF0 aWMgaW50IF9faW5pdCBoYW5kbGVfbm9kZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qga2VybmVs X2luZm8gKmtpbmZvLAogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHBy ZXBhcmVfZHRiKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBrZXJuZWxfaW5mbyAqa2luZm8pCitz dGF0aWMgaW50IF9faW5pdCBwcmVwYXJlX2R0Yl9od2RvbShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1 Y3Qga2VybmVsX2luZm8gKmtpbmZvKQogewogICAgIGNvbnN0IHAybV90eXBlX3QgZGVmYXVsdF9w Mm10ID0gcDJtX21taW9fZGlyZWN0X2M7CiAgICAgY29uc3Qgdm9pZCAqZmR0OwpAQCAtMjEwNiw3 NSArMjEwNiwzMSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgZmluZF9nbnR0YWJfcmVnaW9uKHN0cnVj dCBkb21haW4gKmQsCiAgICAgICAgICAgIGtpbmZvLT5nbnR0YWJfc3RhcnQsIGtpbmZvLT5nbnR0 YWJfc3RhcnQgKyBraW5mby0+Z250dGFiX3NpemUpOwogfQogCi1pbnQgX19pbml0IGNvbnN0cnVj dF9kb20wKHN0cnVjdCBkb21haW4gKmQpCitzdGF0aWMgaW50IF9faW5pdCBfX2NvbnN0cnVjdF9k b21haW4oc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGtlcm5lbF9pbmZvICpraW5mbykKIHsKLSAg ICBjb25zdCBzdHJ1Y3QgYm9vdGNtZGxpbmUgKmtlcm5lbCA9IGJvb3RfY21kbGluZV9maW5kX2J5 X2tpbmQoQk9PVE1PRF9LRVJORUwpOwotICAgIHN0cnVjdCBrZXJuZWxfaW5mbyBraW5mbyA9IHt9 OwogICAgIHN0cnVjdCB2Y3B1ICpzYXZlZF9jdXJyZW50OwotICAgIGludCByYywgaSwgY3B1Owot CisgICAgaW50IGksIGNwdTsKKyAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVnczsKICAgICBz dHJ1Y3QgdmNwdSAqdiA9IGQtPnZjcHVbMF07Ci0gICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MgPSAmdi0+YXJjaC5jcHVfaW5mby0+Z3Vlc3RfY3B1X3VzZXJfcmVnczsKIAotICAgIC8qIFNh bml0eSEgKi8KLSAgICBCVUdfT04oZC0+ZG9tYWluX2lkICE9IDApOwogICAgIEJVR19PTihkLT52 Y3B1WzBdID09IE5VTEwpOwogICAgIEJVR19PTih2LT5pc19pbml0aWFsaXNlZCk7CiAKLSAgICBw cmludGsoIioqKiBMT0FESU5HIERPTUFJTiAwICoqKlxuIik7Ci0gICAgaWYgKCBkb20wX21lbSA8 PSAwICkKLSAgICB7Ci0gICAgICAgIHdhcm5pbmdfYWRkKCJQTEVBU0UgU1BFQ0lGWSBkb20wX21l bSBQQVJBTUVURVIgLSBVU0lORyA1MTJNIEZPUiBOT1dcbiIpOwotICAgICAgICBkb20wX21lbSA9 IE1CKDUxMik7Ci0gICAgfQotCi0KLSAgICBpb21tdV9od2RvbV9pbml0KGQpOwotCi0gICAgZC0+ bWF4X3BhZ2VzID0gfjBVOwotCi0gICAga2luZm8udW5hc3NpZ25lZF9tZW0gPSBkb20wX21lbTsK LSAgICBraW5mby5kID0gZDsKLQotICAgIHJjID0ga2VybmVsX3Byb2JlKCZraW5mbywgTlVMTCk7 Ci0gICAgaWYgKCByYyA8IDAgKQotICAgICAgICByZXR1cm4gcmM7CisgICAgcmVncyA9ICZ2LT5h cmNoLmNwdV9pbmZvLT5ndWVzdF9jcHVfdXNlcl9yZWdzOwogCiAjaWZkZWYgQ09ORklHX0FSTV82 NAogICAgIC8qIGlmIGFhcmNoMzIgbW9kZSBpcyBub3Qgc3VwcG9ydGVkIGF0IEVMMSBkbyBub3Qg YWxsb3cgMzItYml0IGRvbWFpbiAqLwotICAgIGlmICggIShjcHVfaGFzX2VsMV8zMikgJiYga2lu Zm8udHlwZSA9PSBET01BSU5fMzJCSVQgKQorICAgIGlmICggIShjcHVfaGFzX2VsMV8zMikgJiYg a2luZm8tPnR5cGUgPT0gRE9NQUlOXzMyQklUICkKICAgICB7CiAgICAgICAgIHByaW50aygiUGxh dGZvcm0gZG9lcyBub3Qgc3VwcG9ydCAzMi1iaXQgZG9tYWluXG4iKTsKICAgICAgICAgcmV0dXJu IC1FSU5WQUw7CiAgICAgfQotICAgIGQtPmFyY2gudHlwZSA9IGtpbmZvLnR5cGU7CiAKICAgICBp ZiAoIGlzXzY0Yml0X2RvbWFpbihkKSApCiAgICAgICAgIHZjcHVfc3dpdGNoX3RvX2FhcmNoNjRf bW9kZSh2KTsKIAogI2VuZGlmCiAKLSAgICBraW5mby5jbWRsaW5lID0ga2VybmVsICE9IE5VTEwg PyAma2VybmVsLT5jbWRsaW5lWzBdIDogTlVMTDsKLSAgICBhbGxvY2F0ZV9tZW1vcnkoZCwgJmtp bmZvKTsKLSAgICBmaW5kX2dudHRhYl9yZWdpb24oZCwgJmtpbmZvKTsKLQotICAgIC8qIE1hcCBl eHRyYSBHSUMgTU1JTywgaXJxcyBhbmQgb3RoZXIgaHcgc3R1ZmZzIHRvIGRvbTAuICovCi0gICAg cmMgPSBnaWNfbWFwX2h3ZG9tX2V4dHJhX21hcHBpbmdzKGQpOwotICAgIGlmICggcmMgPCAwICkK LSAgICAgICAgcmV0dXJuIHJjOwotCi0gICAgcmMgPSBwbGF0Zm9ybV9zcGVjaWZpY19tYXBwaW5n KGQpOwotICAgIGlmICggcmMgPCAwICkKLSAgICAgICAgcmV0dXJuIHJjOwotCi0gICAgaWYgKCBh Y3BpX2Rpc2FibGVkICkKLSAgICAgICAgcmMgPSBwcmVwYXJlX2R0YihkLCAma2luZm8pOwotICAg IGVsc2UKLSAgICAgICAgcmMgPSBwcmVwYXJlX2FjcGkoZCwgJmtpbmZvKTsKLQotICAgIGlmICgg cmMgPCAwICkKLSAgICAgICAgcmV0dXJuIHJjOwotCiAgICAgLyoKICAgICAgKiBUaGUgZm9sbG93 aW5nIGxvYWRzIHVzZSB0aGUgZG9tYWluJ3MgcDJtIGFuZCByZXF1aXJlIGN1cnJlbnQgdG8KICAg ICAgKiBiZSBhIHZjcHUgb2YgdGhlIGRvbWFpbiwgdGVtcG9yYXJpbHkgc3dpdGNoCkBAIC0yMTg3 LDIwICsyMTQzLDE4IEBAIGludCBfX2luaXQgY29uc3RydWN0X2RvbTAoc3RydWN0IGRvbWFpbiAq ZCkKICAgICAgKiBrZXJuZWxfbG9hZCB3aWxsIGRldGVybWluZSB0aGUgcGxhY2VtZW50IG9mIHRo ZSBrZXJuZWwgYXMgd2VsbAogICAgICAqIGFzIHRoZSBpbml0cmQgJiBmZHQgaW4gUkFNLCBzbyBj YWxsIGl0IGZpcnN0LgogICAgICAqLwotICAgIGtlcm5lbF9sb2FkKCZraW5mbyk7CisgICAga2Vy bmVsX2xvYWQoa2luZm8pOwogICAgIC8qIGluaXRyZF9sb2FkIHdpbGwgZml4IHVwIHRoZSBmZHQs IHNvIGNhbGwgaXQgYmVmb3JlIGR0Yl9sb2FkICovCi0gICAgaW5pdHJkX2xvYWQoJmtpbmZvKTsK LSAgICBkdGJfbG9hZCgma2luZm8pOworICAgIGluaXRyZF9sb2FkKGtpbmZvKTsKKyAgICBkdGJf bG9hZChraW5mbyk7CiAKICAgICAvKiBOb3cgdGhhdCB3ZSBhcmUgZG9uZSByZXN0b3JlIHRoZSBv cmlnaW5hbCBwMm0gYW5kIGN1cnJlbnQuICovCiAgICAgc2V0X2N1cnJlbnQoc2F2ZWRfY3VycmVu dCk7CiAgICAgcDJtX3Jlc3RvcmVfc3RhdGUoc2F2ZWRfY3VycmVudCk7CiAKLSAgICBkaXNjYXJk X2luaXRpYWxfbW9kdWxlcygpOwotCiAgICAgbWVtc2V0KHJlZ3MsIDAsIHNpemVvZigqcmVncykp OwogCi0gICAgcmVncy0+cGMgPSAocmVnaXN0ZXJfdClraW5mby5lbnRyeTsKKyAgICByZWdzLT5w YyA9IChyZWdpc3Rlcl90KWtpbmZvLT5lbnRyeTsKIAogICAgIGlmICggaXNfMzJiaXRfZG9tYWlu KGQpICkKICAgICB7CkBAIC0yMjE4LDE0ICsyMTcyLDE0IEBAIGludCBfX2luaXQgY29uc3RydWN0 X2RvbTAoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgICovCiAgICAgICAgIHJlZ3MtPnIwID0g MDsgLyogU0JaICovCiAgICAgICAgIHJlZ3MtPnIxID0gMHhmZmZmZmZmZjsgLyogV2UgdXNlIERU QiB0aGVyZWZvcmUgbm8gbWFjaGluZSBpZCAqLwotICAgICAgICByZWdzLT5yMiA9IGtpbmZvLmR0 Yl9wYWRkcjsKKyAgICAgICAgcmVncy0+cjIgPSBraW5mby0+ZHRiX3BhZGRyOwogICAgIH0KICNp ZmRlZiBDT05GSUdfQVJNXzY0CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgcmVncy0+Y3BzciA9 IFBTUl9HVUVTVDY0X0lOSVQ7CiAgICAgICAgIC8qIEZyb20gbGludXgvRG9jdW1lbnRhdGlvbi9h cm02NC9ib290aW5nLnR4dCAqLwotICAgICAgICByZWdzLT54MCA9IGtpbmZvLmR0Yl9wYWRkcjsK KyAgICAgICAgcmVncy0+eDAgPSBraW5mby0+ZHRiX3BhZGRyOwogICAgICAgICByZWdzLT54MSA9 IDA7IC8qIFJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCiAgICAgICAgIHJlZ3MtPngyID0gMDsg LyogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KICAgICAgICAgcmVncy0+eDMgPSAwOyAvKiBS ZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLwpAQCAtMjI1MSw2ICsyMjA1LDY0IEBAIGludCBfX2lu aXQgY29uc3RydWN0X2RvbTAoc3RydWN0IGRvbWFpbiAqZCkKICAgICByZXR1cm4gMDsKIH0KIAor aW50IF9faW5pdCBjb25zdHJ1Y3RfZG9tMChzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIGNvbnN0 IHN0cnVjdCBib290Y21kbGluZSAqa2VybmVsID0gYm9vdF9jbWRsaW5lX2ZpbmRfYnlfa2luZChC T09UTU9EX0tFUk5FTCk7CisgICAgc3RydWN0IGtlcm5lbF9pbmZvIGtpbmZvID0ge307CisgICAg aW50IHJjOworCisgICAgLyogU2FuaXR5ISAqLworICAgIEJVR19PTihkLT5kb21haW5faWQgIT0g MCk7CisKKyAgICBwcmludGsoIioqKiBMT0FESU5HIERPTUFJTiAwICoqKlxuIik7CisgICAgaWYg KCBkb20wX21lbSA8PSAwICkKKyAgICB7CisgICAgICAgIHdhcm5pbmdfYWRkKCJQTEVBU0UgU1BF Q0lGWSBkb20wX21lbSBQQVJBTUVURVIgLSBVU0lORyA1MTJNIEZPUiBOT1dcbiIpOworICAgICAg ICBkb20wX21lbSA9IE1CKDUxMik7CisgICAgfQorCisgICAgaW9tbXVfaHdkb21faW5pdChkKTsK KworICAgIGQtPm1heF9wYWdlcyA9IH4wVTsKKworICAgIGtpbmZvLnVuYXNzaWduZWRfbWVtID0g ZG9tMF9tZW07CisgICAga2luZm8uZCA9IGQ7CisKKyAgICByYyA9IGtlcm5lbF9wcm9iZSgma2lu Zm8sIE5VTEwpOworICAgIGlmICggcmMgPCAwICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAg a2luZm8uY21kbGluZSA9IGtlcm5lbCAhPSBOVUxMID8gJmtlcm5lbC0+Y21kbGluZVswXSA6IE5V TEw7CisjaWZkZWYgQ09ORklHX0FSTV82NAorICAgIC8qIHR5cGUgbXVzdCBiZSBzZXQgYmVmb3Jl IGFsbG9jYXRlX21lbW9yeSAqLworICAgIGQtPmFyY2gudHlwZSA9IGtpbmZvLnR5cGU7CisjZW5k aWYKKyAgICBhbGxvY2F0ZV9tZW1vcnkoZCwgJmtpbmZvKTsKKyAgICBmaW5kX2dudHRhYl9yZWdp b24oZCwgJmtpbmZvKTsKKworICAgIC8qIE1hcCBleHRyYSBHSUMgTU1JTywgaXJxcyBhbmQgb3Ro ZXIgaHcgc3R1ZmZzIHRvIGRvbTAuICovCisgICAgcmMgPSBnaWNfbWFwX2h3ZG9tX2V4dHJhX21h cHBpbmdzKGQpOworICAgIGlmICggcmMgPCAwICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAg cmMgPSBwbGF0Zm9ybV9zcGVjaWZpY19tYXBwaW5nKGQpOworICAgIGlmICggcmMgPCAwICkKKyAg ICAgICAgcmV0dXJuIHJjOworCisgICAgaWYgKCBhY3BpX2Rpc2FibGVkICkKKyAgICAgICAgcmMg PSBwcmVwYXJlX2R0Yl9od2RvbShkLCAma2luZm8pOworICAgIGVsc2UKKyAgICAgICAgcmMgPSBw cmVwYXJlX2FjcGkoZCwgJmtpbmZvKTsKKworICAgIGlmICggcmMgPCAwICkKKyAgICAgICAgcmV0 dXJuIHJjOworCisKKyAgICByYyA9IF9fY29uc3RydWN0X2RvbWFpbihkLCAma2luZm8pOworICAg IGRpc2NhcmRfaW5pdGlhbF9tb2R1bGVzKCk7CisgICAgcmV0dXJuIHJjOworfQorCiAvKgogICog TG9jYWwgdmFyaWFibGVzOgogICogbW9kZTogQwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn L21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs