From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v2 12/21] xen/arm: refactor construct_dom0 Date: Fri, 6 Jul 2018 16:12:07 -0700 Message-ID: <1530918736-13965-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+CgotLS0KQ2hhbmdlcyBpbiB2MjoKLSBtb3ZlIGRpc2NhcmRfaW5pdGlhbF9tb2R1bGVz KCkgYWZ0ZXIgX19jb25zdHJ1Y3RfZG9tYWluKCkKLSByZW1vdmUgdXNlbGVzcyBibGFuayBsaW5l Ci0gbGVhdmUgc2FmZXR5IEJVR19PTnMgaW4gX19jb25zdHJ1Y3RfZG9tYWluCi0gcmVuYW1lIHBy ZXBhcmVfZHRiIHRvIHByZXBhcmVfZHRiX2h3ZG9tCi0tLQogeGVuL2FyY2gvYXJtL2RvbWFpbl9i dWlsZC5jIHwgMTI0ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jIGIveGVuL2FyY2gvYXJtL2RvbWFp bl9idWlsZC5jCmluZGV4IDNkZGFmZmIuLmFlM2IxNmMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2Fy bS9kb21haW5fYnVpbGQuYworKysgYi94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKQEAgLTEz OTIsNyArMTM5Miw3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX25vZGUoc3RydWN0IGRvbWFpbiAqZCwg c3RydWN0IGtlcm5lbF9pbmZvICpraW5mbywKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMg aW50IHByZXBhcmVfZHRiKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBrZXJuZWxfaW5mbyAqa2lu Zm8pCitzdGF0aWMgaW50IHByZXBhcmVfZHRiX2h3ZG9tKHN0cnVjdCBkb21haW4gKmQsIHN0cnVj dCBrZXJuZWxfaW5mbyAqa2luZm8pCiB7CiAgICAgY29uc3QgcDJtX3R5cGVfdCBkZWZhdWx0X3Ay bXQgPSBwMm1fbW1pb19kaXJlY3RfYzsKICAgICBjb25zdCB2b2lkICpmZHQ7CkBAIC0yMTI0LDc0 ICsyMTI0LDMxIEBAIHN0YXRpYyB2b2lkIF9faW5pdCBmaW5kX2dudHRhYl9yZWdpb24oc3RydWN0 IGRvbWFpbiAqZCwKICAgICAgICAgICAga2luZm8tPmdudHRhYl9zdGFydCwga2luZm8tPmdudHRh Yl9zdGFydCArIGtpbmZvLT5nbnR0YWJfc2l6ZSk7CiB9CiAKLWludCBfX2luaXQgY29uc3RydWN0 X2RvbTAoc3RydWN0IGRvbWFpbiAqZCkKK3N0YXRpYyBpbnQgX19pbml0IF9fY29uc3RydWN0X2Rv bWFpbihzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qga2VybmVsX2luZm8gKmtpbmZvKQogewotICAg IHN0cnVjdCBrZXJuZWxfaW5mbyBraW5mbyA9IHt9OwogICAgIHN0cnVjdCB2Y3B1ICpzYXZlZF9j dXJyZW50OwotICAgIGludCByYywgaSwgY3B1OwotCisgICAgaW50IGksIGNwdTsKKyAgICBzdHJ1 Y3QgY3B1X3VzZXJfcmVncyAqcmVnczsKICAgICBzdHJ1Y3QgdmNwdSAqdiA9IGQtPnZjcHVbMF07 Ci0gICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MgPSAmdi0+YXJjaC5jcHVfaW5mby0+Z3Vl c3RfY3B1X3VzZXJfcmVnczsKIAotICAgIC8qIFNhbml0eSEgKi8KLSAgICBCVUdfT04oZC0+ZG9t YWluX2lkICE9IDApOwogICAgIEJVR19PTihkLT52Y3B1WzBdID09IE5VTEwpOwogICAgIEJVR19P Tih2LT5pc19pbml0aWFsaXNlZCk7CiAKLSAgICBwcmludGsoIioqKiBMT0FESU5HIERPTUFJTiAw ICoqKlxuIik7Ci0gICAgaWYgKCBkb20wX21lbSA8PSAwICkKLSAgICB7Ci0gICAgICAgIHdhcm5p bmdfYWRkKCJQTEVBU0UgU1BFQ0lGWSBkb20wX21lbSBQQVJBTUVURVIgLSBVU0lORyA1MTJNIEZP UiBOT1dcbiIpOwotICAgICAgICBkb20wX21lbSA9IE1CKDUxMik7Ci0gICAgfQotCi0KLSAgICBp b21tdV9od2RvbV9pbml0KGQpOwotCi0gICAgZC0+bWF4X3BhZ2VzID0gfjBVOwotCi0gICAga2lu Zm8udW5hc3NpZ25lZF9tZW0gPSBkb20wX21lbTsKLSAgICBraW5mby5kID0gZDsKLQotICAgIHJj ID0ga2VybmVsX3Byb2JlKCZraW5mbywgTlVMTCk7Ci0gICAgaWYgKCByYyA8IDAgKQotICAgICAg ICByZXR1cm4gcmM7CisgICAgcmVncyA9ICZ2LT5hcmNoLmNwdV9pbmZvLT5ndWVzdF9jcHVfdXNl cl9yZWdzOwogCiAjaWZkZWYgQ09ORklHX0FSTV82NAogICAgIC8qIGlmIGFhcmNoMzIgbW9kZSBp cyBub3Qgc3VwcG9ydGVkIGF0IEVMMSBkbyBub3QgYWxsb3cgMzItYml0IGRvbWFpbiAqLwotICAg IGlmICggIShjcHVfaGFzX2VsMV8zMikgJiYga2luZm8udHlwZSA9PSBET01BSU5fMzJCSVQgKQor ICAgIGlmICggIShjcHVfaGFzX2VsMV8zMikgJiYga2luZm8tPnR5cGUgPT0gRE9NQUlOXzMyQklU ICkKICAgICB7CiAgICAgICAgIHByaW50aygiUGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCAzMi1i aXQgZG9tYWluXG4iKTsKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgfQotICAgIGQtPmFy Y2gudHlwZSA9IGtpbmZvLnR5cGU7CiAKICAgICBpZiAoIGlzXzY0Yml0X2RvbWFpbihkKSApCiAg ICAgICAgIHZjcHVfc3dpdGNoX3RvX2FhcmNoNjRfbW9kZSh2KTsKIAogI2VuZGlmCiAKLSAgICBr aW5mby5jbWRsaW5lID0gJmRvbTBfY21kbGluZVswXTsKLSAgICBhbGxvY2F0ZV9tZW1vcnkoZCwg JmtpbmZvKTsKLSAgICBmaW5kX2dudHRhYl9yZWdpb24oZCwgJmtpbmZvKTsKLQotICAgIC8qIE1h cCBleHRyYSBHSUMgTU1JTywgaXJxcyBhbmQgb3RoZXIgaHcgc3R1ZmZzIHRvIGRvbTAuICovCi0g ICAgcmMgPSBnaWNfbWFwX2h3ZG9tX2V4dHJhX21hcHBpbmdzKGQpOwotICAgIGlmICggcmMgPCAw ICkKLSAgICAgICAgcmV0dXJuIHJjOwotCi0gICAgcmMgPSBwbGF0Zm9ybV9zcGVjaWZpY19tYXBw aW5nKGQpOwotICAgIGlmICggcmMgPCAwICkKLSAgICAgICAgcmV0dXJuIHJjOwotCi0gICAgaWYg KCBhY3BpX2Rpc2FibGVkICkKLSAgICAgICAgcmMgPSBwcmVwYXJlX2R0YihkLCAma2luZm8pOwot ICAgIGVsc2UKLSAgICAgICAgcmMgPSBwcmVwYXJlX2FjcGkoZCwgJmtpbmZvKTsKLQotICAgIGlm ICggcmMgPCAwICkKLSAgICAgICAgcmV0dXJuIHJjOwotCiAgICAgLyoKICAgICAgKiBUaGUgZm9s bG93aW5nIGxvYWRzIHVzZSB0aGUgZG9tYWluJ3MgcDJtIGFuZCByZXF1aXJlIGN1cnJlbnQgdG8K ICAgICAgKiBiZSBhIHZjcHUgb2YgdGhlIGRvbWFpbiwgdGVtcG9yYXJpbHkgc3dpdGNoCkBAIC0y MjA0LDIwICsyMTYxLDE4IEBAIGludCBfX2luaXQgY29uc3RydWN0X2RvbTAoc3RydWN0IGRvbWFp biAqZCkKICAgICAgKiBrZXJuZWxfbG9hZCB3aWxsIGRldGVybWluZSB0aGUgcGxhY2VtZW50IG9m IHRoZSBrZXJuZWwgYXMgd2VsbAogICAgICAqIGFzIHRoZSBpbml0cmQgJiBmZHQgaW4gUkFNLCBz byBjYWxsIGl0IGZpcnN0LgogICAgICAqLwotICAgIGtlcm5lbF9sb2FkKCZraW5mbyk7CisgICAg a2VybmVsX2xvYWQoa2luZm8pOwogICAgIC8qIGluaXRyZF9sb2FkIHdpbGwgZml4IHVwIHRoZSBm ZHQsIHNvIGNhbGwgaXQgYmVmb3JlIGR0Yl9sb2FkICovCi0gICAgaW5pdHJkX2xvYWQoJmtpbmZv KTsKLSAgICBkdGJfbG9hZCgma2luZm8pOworICAgIGluaXRyZF9sb2FkKGtpbmZvKTsKKyAgICBk dGJfbG9hZChraW5mbyk7CiAKICAgICAvKiBOb3cgdGhhdCB3ZSBhcmUgZG9uZSByZXN0b3JlIHRo ZSBvcmlnaW5hbCBwMm0gYW5kIGN1cnJlbnQuICovCiAgICAgc2V0X2N1cnJlbnQoc2F2ZWRfY3Vy cmVudCk7CiAgICAgcDJtX3Jlc3RvcmVfc3RhdGUoc2F2ZWRfY3VycmVudCk7CiAKLSAgICBkaXNj YXJkX2luaXRpYWxfbW9kdWxlcygpOwotCiAgICAgbWVtc2V0KHJlZ3MsIDAsIHNpemVvZigqcmVn cykpOwogCi0gICAgcmVncy0+cGMgPSAocmVnaXN0ZXJfdClraW5mby5lbnRyeTsKKyAgICByZWdz LT5wYyA9IChyZWdpc3Rlcl90KWtpbmZvLT5lbnRyeTsKIAogICAgIGlmICggaXNfMzJiaXRfZG9t YWluKGQpICkKICAgICB7CkBAIC0yMjM1LDE0ICsyMTkwLDE0IEBAIGludCBfX2luaXQgY29uc3Ry dWN0X2RvbTAoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgICovCiAgICAgICAgIHJlZ3MtPnIw ID0gMDsgLyogU0JaICovCiAgICAgICAgIHJlZ3MtPnIxID0gMHhmZmZmZmZmZjsgLyogV2UgdXNl IERUQiB0aGVyZWZvcmUgbm8gbWFjaGluZSBpZCAqLwotICAgICAgICByZWdzLT5yMiA9IGtpbmZv LmR0Yl9wYWRkcjsKKyAgICAgICAgcmVncy0+cjIgPSBraW5mby0+ZHRiX3BhZGRyOwogICAgIH0K ICNpZmRlZiBDT05GSUdfQVJNXzY0CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgcmVncy0+Y3Bz ciA9IFBTUl9HVUVTVDY0X0lOSVQ7CiAgICAgICAgIC8qIEZyb20gbGludXgvRG9jdW1lbnRhdGlv bi9hcm02NC9ib290aW5nLnR4dCAqLwotICAgICAgICByZWdzLT54MCA9IGtpbmZvLmR0Yl9wYWRk cjsKKyAgICAgICAgcmVncy0+eDAgPSBraW5mby0+ZHRiX3BhZGRyOwogICAgICAgICByZWdzLT54 MSA9IDA7IC8qIFJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCiAgICAgICAgIHJlZ3MtPngyID0g MDsgLyogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KICAgICAgICAgcmVncy0+eDMgPSAwOyAv KiBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLwpAQCAtMjI2OCw2ICsyMjIzLDYxIEBAIGludCBf X2luaXQgY29uc3RydWN0X2RvbTAoc3RydWN0IGRvbWFpbiAqZCkKICAgICByZXR1cm4gMDsKIH0K IAoraW50IF9faW5pdCBjb25zdHJ1Y3RfZG9tMChzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIHN0 cnVjdCBrZXJuZWxfaW5mbyBraW5mbyA9IHt9OworICAgIGludCByYzsKKworICAgIC8qIFNhbml0 eSEgKi8KKyAgICBCVUdfT04oZC0+ZG9tYWluX2lkICE9IDApOworCisgICAgcHJpbnRrKCIqKiog TE9BRElORyBET01BSU4gMCAqKipcbiIpOworICAgIGlmICggZG9tMF9tZW0gPD0gMCApCisgICAg eworICAgICAgICB3YXJuaW5nX2FkZCgiUExFQVNFIFNQRUNJRlkgZG9tMF9tZW0gUEFSQU1FVEVS IC0gVVNJTkcgNTEyTSBGT1IgTk9XXG4iKTsKKyAgICAgICAgZG9tMF9tZW0gPSBNQig1MTIpOwor ICAgIH0KKworICAgIGlvbW11X2h3ZG9tX2luaXQoZCk7CisKKyAgICBkLT5tYXhfcGFnZXMgPSB+ MFU7CisKKyAgICBraW5mby51bmFzc2lnbmVkX21lbSA9IGRvbTBfbWVtOworICAgIGtpbmZvLmQg PSBkOworCisgICAgcmMgPSBrZXJuZWxfcHJvYmUoJmtpbmZvLCBOVUxMKTsKKyAgICBpZiAoIHJj IDwgMCApCisgICAgICAgIHJldHVybiByYzsKKworICAgIGtpbmZvLmNtZGxpbmUgPSAmZG9tMF9j bWRsaW5lWzBdOworICAgIGFsbG9jYXRlX21lbW9yeShkLCAma2luZm8pOworICAgIGZpbmRfZ250 dGFiX3JlZ2lvbihkLCAma2luZm8pOworCisgICAgLyogTWFwIGV4dHJhIEdJQyBNTUlPLCBpcnFz IGFuZCBvdGhlciBodyBzdHVmZnMgdG8gZG9tMC4gKi8KKyAgICByYyA9IGdpY19tYXBfaHdkb21f ZXh0cmFfbWFwcGluZ3MoZCk7CisgICAgaWYgKCByYyA8IDAgKQorICAgICAgICByZXR1cm4gcmM7 CisKKyAgICByYyA9IHBsYXRmb3JtX3NwZWNpZmljX21hcHBpbmcoZCk7CisgICAgaWYgKCByYyA8 IDAgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBkLT5hcmNoLnR5cGUgPSBraW5mby50eXBl OworCisgICAgaWYgKCBhY3BpX2Rpc2FibGVkICkKKyAgICAgICAgcmMgPSBwcmVwYXJlX2R0Yl9o d2RvbShkLCAma2luZm8pOworICAgIGVsc2UKKyAgICAgICAgcmMgPSBwcmVwYXJlX2FjcGkoZCwg JmtpbmZvKTsKKworICAgIGlmICggcmMgPCAwICkKKyAgICAgICAgcmV0dXJuIHJjOworCisKKyAg ICByYyA9IF9fY29uc3RydWN0X2RvbWFpbihkLCAma2luZm8pOworICAgIGRpc2NhcmRfaW5pdGlh bF9tb2R1bGVzKCk7CisgICAgcmV0dXJuIHJjOworfQorCiAvKgogICogTG9jYWwgdmFyaWFibGVz OgogICogbW9kZTogQwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu Zm8veGVuLWRldmVs