From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v4 11/23] xen/arm: refactor construct_dom0 Date: Fri, 5 Oct 2018 11:47:19 -0700 Message-ID: <1538765251-25256-11-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+CgotLS0KQ2hhbmdlcyBpbiB2NDoKLSBuZXdsaW5lIGFuZCBzdHlsZSBjaGFuZ2VzCgpD aGFuZ2VzIGluIHYzOgotIG1vdmUgc2V0dGluZyB0eXBlIGJlZm9yZSBhbGxvY2F0ZV9tZW1vcnkK LSBhZGQgaWZkZWYgYXJvdW5kIGl0IGFuZCBhIGNvbW1lbnQKCkNoYW5nZXMgaW4gdjI6Ci0gbW92 ZSBkaXNjYXJkX2luaXRpYWxfbW9kdWxlcygpIGFmdGVyIF9fY29uc3RydWN0X2RvbWFpbigpCi0g cmVtb3ZlIHVzZWxlc3MgYmxhbmsgbGluZQotIGxlYXZlIHNhZmV0eSBCVUdfT05zIGluIF9fY29u c3RydWN0X2RvbWFpbgotIHJlbmFtZSBwcmVwYXJlX2R0YiB0byBwcmVwYXJlX2R0Yl9od2RvbQot LS0KIHhlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYyB8IDEyNiArKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY4IGluc2VydGlvbnMo KyksIDU4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21haW5fYnVp bGQuYyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwppbmRleCBmZGRmZDgyLi5iYTNkYWQx IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKKysrIGIveGVuL2FyY2gv YXJtL2RvbWFpbl9idWlsZC5jCkBAIC0xNDU2LDcgKzE0NTYsNyBAQCBzdGF0aWMgaW50IF9faW5p dCBoYW5kbGVfbm9kZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qga2VybmVsX2luZm8gKmtpbmZv LAogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHByZXBhcmVfZHRiKHN0 cnVjdCBkb21haW4gKmQsIHN0cnVjdCBrZXJuZWxfaW5mbyAqa2luZm8pCitzdGF0aWMgaW50IF9f aW5pdCBwcmVwYXJlX2R0Yl9od2RvbShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qga2VybmVsX2lu Zm8gKmtpbmZvKQogewogICAgIGNvbnN0IHAybV90eXBlX3QgZGVmYXVsdF9wMm10ID0gcDJtX21t aW9fZGlyZWN0X2M7CiAgICAgY29uc3Qgdm9pZCAqZmR0OwpAQCAtMjE5MSw3NSArMjE5MSwyOSBA QCBzdGF0aWMgdm9pZCBfX2luaXQgZmluZF9nbnR0YWJfcmVnaW9uKHN0cnVjdCBkb21haW4gKmQs CiAgICAgICAgICAgIGtpbmZvLT5nbnR0YWJfc3RhcnQsIGtpbmZvLT5nbnR0YWJfc3RhcnQgKyBr aW5mby0+Z250dGFiX3NpemUpOwogfQogCi1pbnQgX19pbml0IGNvbnN0cnVjdF9kb20wKHN0cnVj dCBkb21haW4gKmQpCitzdGF0aWMgaW50IF9faW5pdCBfX2NvbnN0cnVjdF9kb21haW4oc3RydWN0 IGRvbWFpbiAqZCwgc3RydWN0IGtlcm5lbF9pbmZvICpraW5mbykKIHsKLSAgICBjb25zdCBzdHJ1 Y3QgYm9vdGNtZGxpbmUgKmtlcm5lbCA9IGJvb3RfY21kbGluZV9maW5kX2J5X2tpbmQoQk9PVE1P RF9LRVJORUwpOwotICAgIHN0cnVjdCBrZXJuZWxfaW5mbyBraW5mbyA9IHt9OwogICAgIHN0cnVj dCB2Y3B1ICpzYXZlZF9jdXJyZW50OwotICAgIGludCByYywgaSwgY3B1OwotCisgICAgaW50IGks IGNwdTsKICAgICBzdHJ1Y3QgdmNwdSAqdiA9IGQtPnZjcHVbMF07CiAgICAgc3RydWN0IGNwdV91 c2VyX3JlZ3MgKnJlZ3MgPSAmdi0+YXJjaC5jcHVfaW5mby0+Z3Vlc3RfY3B1X3VzZXJfcmVnczsK IAotICAgIC8qIFNhbml0eSEgKi8KLSAgICBCVUdfT04oZC0+ZG9tYWluX2lkICE9IDApOwogICAg IEJVR19PTihkLT52Y3B1WzBdID09IE5VTEwpOwogICAgIEJVR19PTih2LT5pc19pbml0aWFsaXNl ZCk7CiAKLSAgICBwcmludGsoIioqKiBMT0FESU5HIERPTUFJTiAwICoqKlxuIik7Ci0gICAgaWYg KCBkb20wX21lbSA8PSAwICkKLSAgICB7Ci0gICAgICAgIHdhcm5pbmdfYWRkKCJQTEVBU0UgU1BF Q0lGWSBkb20wX21lbSBQQVJBTUVURVIgLSBVU0lORyA1MTJNIEZPUiBOT1dcbiIpOwotICAgICAg ICBkb20wX21lbSA9IE1CKDUxMik7Ci0gICAgfQotCi0KLSAgICBpb21tdV9od2RvbV9pbml0KGQp OwotCi0gICAgZC0+bWF4X3BhZ2VzID0gfjBVOwotCi0gICAga2luZm8udW5hc3NpZ25lZF9tZW0g PSBkb20wX21lbTsKLSAgICBraW5mby5kID0gZDsKLQotICAgIHJjID0ga2VybmVsX3Byb2JlKCZr aW5mbywgTlVMTCk7Ci0gICAgaWYgKCByYyA8IDAgKQotICAgICAgICByZXR1cm4gcmM7Ci0KICNp ZmRlZiBDT05GSUdfQVJNXzY0CiAgICAgLyogaWYgYWFyY2gzMiBtb2RlIGlzIG5vdCBzdXBwb3J0 ZWQgYXQgRUwxIGRvIG5vdCBhbGxvdyAzMi1iaXQgZG9tYWluICovCi0gICAgaWYgKCAhKGNwdV9o YXNfZWwxXzMyKSAmJiBraW5mby50eXBlID09IERPTUFJTl8zMkJJVCApCisgICAgaWYgKCAhKGNw dV9oYXNfZWwxXzMyKSAmJiBraW5mby0+dHlwZSA9PSBET01BSU5fMzJCSVQgKQogICAgIHsKICAg ICAgICAgcHJpbnRrKCJQbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IDMyLWJpdCBkb21haW5cbiIp OwogICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAgICB9Ci0gICAgZC0+YXJjaC50eXBlID0ga2lu Zm8udHlwZTsKIAogICAgIGlmICggaXNfNjRiaXRfZG9tYWluKGQpICkKICAgICAgICAgdmNwdV9z d2l0Y2hfdG9fYWFyY2g2NF9tb2RlKHYpOwogCiAjZW5kaWYKIAotICAgIGtpbmZvLmNtZGxpbmUg PSBrZXJuZWwgIT0gTlVMTCA/ICZrZXJuZWwtPmNtZGxpbmVbMF0gOiBOVUxMOwotICAgIGFsbG9j YXRlX21lbW9yeV8xMShkLCAma2luZm8pOwotICAgIGZpbmRfZ250dGFiX3JlZ2lvbihkLCAma2lu Zm8pOwotCi0gICAgLyogTWFwIGV4dHJhIEdJQyBNTUlPLCBpcnFzIGFuZCBvdGhlciBodyBzdHVm ZnMgdG8gZG9tMC4gKi8KLSAgICByYyA9IGdpY19tYXBfaHdkb21fZXh0cmFfbWFwcGluZ3MoZCk7 Ci0gICAgaWYgKCByYyA8IDAgKQotICAgICAgICByZXR1cm4gcmM7Ci0KLSAgICByYyA9IHBsYXRm b3JtX3NwZWNpZmljX21hcHBpbmcoZCk7Ci0gICAgaWYgKCByYyA8IDAgKQotICAgICAgICByZXR1 cm4gcmM7Ci0KLSAgICBpZiAoIGFjcGlfZGlzYWJsZWQgKQotICAgICAgICByYyA9IHByZXBhcmVf ZHRiKGQsICZraW5mbyk7Ci0gICAgZWxzZQotICAgICAgICByYyA9IHByZXBhcmVfYWNwaShkLCAm a2luZm8pOwotCi0gICAgaWYgKCByYyA8IDAgKQotICAgICAgICByZXR1cm4gcmM7Ci0KICAgICAv KgogICAgICAqIFRoZSBmb2xsb3dpbmcgbG9hZHMgdXNlIHRoZSBkb21haW4ncyBwMm0gYW5kIHJl cXVpcmUgY3VycmVudCB0bwogICAgICAqIGJlIGEgdmNwdSBvZiB0aGUgZG9tYWluLCB0ZW1wb3Jh cmlseSBzd2l0Y2gKQEAgLTIyNzIsMjAgKzIyMjYsMTggQEAgaW50IF9faW5pdCBjb25zdHJ1Y3Rf ZG9tMChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAqIGtlcm5lbF9sb2FkIHdpbGwgZGV0ZXJtaW5l IHRoZSBwbGFjZW1lbnQgb2YgdGhlIGtlcm5lbCBhcyB3ZWxsCiAgICAgICogYXMgdGhlIGluaXRy ZCAmIGZkdCBpbiBSQU0sIHNvIGNhbGwgaXQgZmlyc3QuCiAgICAgICovCi0gICAga2VybmVsX2xv YWQoJmtpbmZvKTsKKyAgICBrZXJuZWxfbG9hZChraW5mbyk7CiAgICAgLyogaW5pdHJkX2xvYWQg d2lsbCBmaXggdXAgdGhlIGZkdCwgc28gY2FsbCBpdCBiZWZvcmUgZHRiX2xvYWQgKi8KLSAgICBp bml0cmRfbG9hZCgma2luZm8pOwotICAgIGR0Yl9sb2FkKCZraW5mbyk7CisgICAgaW5pdHJkX2xv YWQoa2luZm8pOworICAgIGR0Yl9sb2FkKGtpbmZvKTsKIAogICAgIC8qIE5vdyB0aGF0IHdlIGFy ZSBkb25lIHJlc3RvcmUgdGhlIG9yaWdpbmFsIHAybSBhbmQgY3VycmVudC4gKi8KICAgICBzZXRf Y3VycmVudChzYXZlZF9jdXJyZW50KTsKICAgICBwMm1fcmVzdG9yZV9zdGF0ZShzYXZlZF9jdXJy ZW50KTsKIAotICAgIGRpc2NhcmRfaW5pdGlhbF9tb2R1bGVzKCk7Ci0KICAgICBtZW1zZXQocmVn cywgMCwgc2l6ZW9mKCpyZWdzKSk7CiAKLSAgICByZWdzLT5wYyA9IChyZWdpc3Rlcl90KWtpbmZv LmVudHJ5OworICAgIHJlZ3MtPnBjID0gKHJlZ2lzdGVyX3Qpa2luZm8tPmVudHJ5OwogCiAgICAg aWYgKCBpc18zMmJpdF9kb21haW4oZCkgKQogICAgIHsKQEAgLTIzMDMsMTQgKzIyNTUsMTQgQEAg aW50IF9faW5pdCBjb25zdHJ1Y3RfZG9tMChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgKi8K ICAgICAgICAgcmVncy0+cjAgPSAwOyAvKiBTQlogKi8KICAgICAgICAgcmVncy0+cjEgPSAweGZm ZmZmZmZmOyAvKiBXZSB1c2UgRFRCIHRoZXJlZm9yZSBubyBtYWNoaW5lIGlkICovCi0gICAgICAg IHJlZ3MtPnIyID0ga2luZm8uZHRiX3BhZGRyOworICAgICAgICByZWdzLT5yMiA9IGtpbmZvLT5k dGJfcGFkZHI7CiAgICAgfQogI2lmZGVmIENPTkZJR19BUk1fNjQKICAgICBlbHNlCiAgICAgewog ICAgICAgICByZWdzLT5jcHNyID0gUFNSX0dVRVNUNjRfSU5JVDsKICAgICAgICAgLyogRnJvbSBs aW51eC9Eb2N1bWVudGF0aW9uL2FybTY0L2Jvb3RpbmcudHh0ICovCi0gICAgICAgIHJlZ3MtPngw ID0ga2luZm8uZHRiX3BhZGRyOworICAgICAgICByZWdzLT54MCA9IGtpbmZvLT5kdGJfcGFkZHI7 CiAgICAgICAgIHJlZ3MtPngxID0gMDsgLyogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KICAg ICAgICAgcmVncy0+eDIgPSAwOyAvKiBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLwogICAgICAg ICByZWdzLT54MyA9IDA7IC8qIFJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCkBAIC0yMzM4LDYg KzIyOTAsNjQgQEAgaW50IF9faW5pdCBjb25zdHJ1Y3RfZG9tMChzdHJ1Y3QgZG9tYWluICpkKQog ICAgIHJldHVybiAwOwogfQogCitpbnQgX19pbml0IGNvbnN0cnVjdF9kb20wKHN0cnVjdCBkb21h aW4gKmQpCit7CisgICAgY29uc3Qgc3RydWN0IGJvb3RjbWRsaW5lICprZXJuZWwgPSBib290X2Nt ZGxpbmVfZmluZF9ieV9raW5kKEJPT1RNT0RfS0VSTkVMKTsKKyAgICBzdHJ1Y3Qga2VybmVsX2lu Zm8ga2luZm8gPSB7fTsKKyAgICBpbnQgcmM7CisKKyAgICAvKiBTYW5pdHkhICovCisgICAgQlVH X09OKGQtPmRvbWFpbl9pZCAhPSAwKTsKKworICAgIHByaW50aygiKioqIExPQURJTkcgRE9NQUlO IDAgKioqXG4iKTsKKyAgICBpZiAoIGRvbTBfbWVtIDw9IDAgKQorICAgIHsKKyAgICAgICAgd2Fy bmluZ19hZGQoIlBMRUFTRSBTUEVDSUZZIGRvbTBfbWVtIFBBUkFNRVRFUiAtIFVTSU5HIDUxMk0g Rk9SIE5PV1xuIik7CisgICAgICAgIGRvbTBfbWVtID0gTUIoNTEyKTsKKyAgICB9CisKKyAgICBp b21tdV9od2RvbV9pbml0KGQpOworCisgICAgZC0+bWF4X3BhZ2VzID0gfjBVOworCisgICAga2lu Zm8udW5hc3NpZ25lZF9tZW0gPSBkb20wX21lbTsKKyAgICBraW5mby5kID0gZDsKKworICAgIHJj ID0ga2VybmVsX3Byb2JlKCZraW5mbywgTlVMTCk7CisgICAgaWYgKCByYyA8IDAgKQorICAgICAg ICByZXR1cm4gcmM7CisKKyAgICBraW5mby5jbWRsaW5lID0ga2VybmVsICE9IE5VTEwgPyAma2Vy bmVsLT5jbWRsaW5lWzBdIDogTlVMTDsKKyNpZmRlZiBDT05GSUdfQVJNXzY0CisgICAgLyogdHlw ZSBtdXN0IGJlIHNldCBiZWZvcmUgYWxsb2NhdGVfbWVtb3J5ICovCisgICAgZC0+YXJjaC50eXBl ID0ga2luZm8udHlwZTsKKyNlbmRpZgorICAgIGFsbG9jYXRlX21lbW9yeV8xMShkLCAma2luZm8p OworICAgIGZpbmRfZ250dGFiX3JlZ2lvbihkLCAma2luZm8pOworCisgICAgLyogTWFwIGV4dHJh IEdJQyBNTUlPLCBpcnFzIGFuZCBvdGhlciBodyBzdHVmZnMgdG8gZG9tMC4gKi8KKyAgICByYyA9 IGdpY19tYXBfaHdkb21fZXh0cmFfbWFwcGluZ3MoZCk7CisgICAgaWYgKCByYyA8IDAgKQorICAg ICAgICByZXR1cm4gcmM7CisKKyAgICByYyA9IHBsYXRmb3JtX3NwZWNpZmljX21hcHBpbmcoZCk7 CisgICAgaWYgKCByYyA8IDAgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBpZiAoIGFjcGlf ZGlzYWJsZWQgKQorICAgICAgICByYyA9IHByZXBhcmVfZHRiX2h3ZG9tKGQsICZraW5mbyk7Cisg ICAgZWxzZQorICAgICAgICByYyA9IHByZXBhcmVfYWNwaShkLCAma2luZm8pOworCisgICAgaWYg KCByYyA8IDAgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICByYyA9IF9fY29uc3RydWN0X2Rv bWFpbihkLCAma2luZm8pOworICAgIGRpc2NhcmRfaW5pdGlhbF9tb2R1bGVzKCk7CisKKyAgICBy ZXR1cm4gcmM7Cit9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCi0tIAox LjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=