From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v3.1 13/15] xen/x86: parse Dom0 kernel for PVHv2 Date: Sat, 29 Oct 2016 10:59:59 +0200 Message-ID: <1477731601-10926-14-git-send-email-roger.pau@citrix.com> References: <1477731601-10926-1-git-send-email-roger.pau@citrix.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 1c0PVS-0002DK-Vn for xen-devel@lists.xenproject.org; Sat, 29 Oct 2016 09:00:51 +0000 In-Reply-To: <1477731601-10926-1-git-send-email-roger.pau@citrix.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, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: Andrew Cooper , Jan Beulich , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org SW50cm9kdWNlIGEgaGVscGVyIHRvIHBhcnNlIHRoZSBEb20wIGtlcm5lbC4KClNpZ25lZC1vZmYt Ynk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgotLS0KQ2M6IEphbiBC ZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29w ZXIzQGNpdHJpeC5jb20+Ci0tLQpDaGFuZ2VzIHNpbmNlIHYyOgogLSBSZW1vdmUgZGVidWcgbWVz c2FnZXMuCiAtIERvbid0IGhhcmRjb2RlIHRoZSBudW1iZXIgb2YgbW9kdWxlcyB0byAxLgotLS0K IHhlbi9hcmNoL3g4Ni9kb21haW5fYnVpbGQuYyB8IDEzOCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5jIGIveGVuL2FyY2gveDg2 L2RvbWFpbl9idWlsZC5jCmluZGV4IGVjMWFjODkuLjE2OGJlNjIgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9kb21haW5fYnVpbGQuYworKysgYi94ZW4vYXJjaC94ODYvZG9tYWluX2J1aWxkLmMK QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxhc20vaHBldC5oPgogCiAjaW5jbHVkZSA8cHVi bGljL3ZlcnNpb24uaD4KKyNpbmNsdWRlIDxwdWJsaWMvYXJjaC14ODYvaHZtL3N0YXJ0X2luZm8u aD4KIAogc3RhdGljIGxvbmcgX19pbml0ZGF0YSBkb20wX25ycGFnZXM7CiBzdGF0aWMgbG9uZyBf X2luaXRkYXRhIGRvbTBfbWluX25ycGFnZXM7CkBAIC0xODk1LDEyICsxODk2LDE0MSBAQCBzdGF0 aWMgaW50IF9faW5pdCBodm1fc2V0dXBfcDJtKHN0cnVjdCBkb21haW4gKmQpCiAgICAgcmV0dXJu IDA7CiB9CiAKK3N0YXRpYyBpbnQgX19pbml0IGh2bV9sb2FkX2tlcm5lbChzdHJ1Y3QgZG9tYWlu ICpkLCBjb25zdCBtb2R1bGVfdCAqaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBpbWFnZV9oZWFkcm9vbSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtb2R1bGVfdCAqaW5pdHJkLCBjaGFyICppbWFnZV9iYXNlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNtZGxpbmUsIHBhZGRyX3QgKmVudHJ5 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgKnN0YXJ0X2luZm9f YWRkcikKK3sKKyAgICBjaGFyICppbWFnZV9zdGFydCA9IGltYWdlX2Jhc2UgKyBpbWFnZV9oZWFk cm9vbTsKKyAgICB1bnNpZ25lZCBsb25nIGltYWdlX2xlbiA9IGltYWdlLT5tb2RfZW5kOworICAg IHN0cnVjdCBlbGZfYmluYXJ5IGVsZjsKKyAgICBzdHJ1Y3QgZWxmX2RvbV9wYXJtcyBwYXJtczsK KyAgICBwYWRkcl90IGxhc3RfYWRkcjsKKyAgICBzdHJ1Y3QgaHZtX3N0YXJ0X2luZm8gc3RhcnRf aW5mbzsKKyAgICBzdHJ1Y3QgaHZtX21vZGxpc3RfZW50cnkgbW9kOworICAgIHN0cnVjdCB2Y3B1 ICpzYXZlZF9jdXJyZW50LCAqdiA9IGQtPnZjcHVbMF07CisgICAgaW50IHJjOworCisgICAgaWYg KCAocmMgPSBiemltYWdlX3BhcnNlKGltYWdlX2Jhc2UsICZpbWFnZV9zdGFydCwgJmltYWdlX2xl bikpICE9IDAgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKCJFcnJvciB0cnlpbmcgdG8gZGV0ZWN0 IGJ6IGNvbXByZXNzZWQga2VybmVsXG4iKTsKKyAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKwor ICAgIGlmICggKHJjID0gZWxmX2luaXQoJmVsZiwgaW1hZ2Vfc3RhcnQsIGltYWdlX2xlbikpICE9 IDAgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKCJVbmFibGUgdG8gaW5pdCBFTEZcbiIpOworICAg ICAgICByZXR1cm4gcmM7CisgICAgfQorI2lmZGVmIFZFUkJPU0UKKyAgICBlbGZfc2V0X3ZlcmJv c2UoJmVsZik7CisjZW5kaWYKKyAgICBlbGZfcGFyc2VfYmluYXJ5KCZlbGYpOworICAgIGlmICgg KHJjID0gZWxmX3hlbl9wYXJzZSgmZWxmLCAmcGFybXMpKSAhPSAwICkKKyAgICB7CisgICAgICAg IHByaW50aygiVW5hYmxlIHRvIHBhcnNlIGtlcm5lbCBmb3IgRUxGTk9URVNcbiIpOworICAgICAg ICByZXR1cm4gcmM7CisgICAgfQorCisgICAgaWYgKCBwYXJtcy5waHlzX2VudHJ5ID09IFVOU0VU X0FERFIzMiApIHsKKyAgICAgICAgcHJpbnRrKCJVbmFibGUgdG8gZmluZCBrZXJuZWwgZW50cnkg cG9pbnQsIGFib3J0aW5nXG4iKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisg ICAgcHJpbnRrKCJPUzogJXMgdmVyc2lvbjogJXMgbG9hZGVyOiAlcyBiaXRuZXNzOiAlc1xuIiwg cGFybXMuZ3Vlc3Rfb3MsCisgICAgICAgICAgIHBhcm1zLmd1ZXN0X3ZlciwgcGFybXMubG9hZGVy LAorICAgICAgICAgICBlbGZfNjRiaXQoJmVsZikgPyAiNjQtYml0IiA6ICIzMi1iaXQiKTsKKwor ICAgIC8qIENvcHkgdGhlIE9TIGltYWdlIGFuZCBmcmVlIHRlbXBvcmFyeSBidWZmZXIuICovCisg ICAgZWxmLmRlc3RfYmFzZSA9ICh2b2lkICopKHBhcm1zLnZpcnRfa3N0YXJ0IC0gcGFybXMudmly dF9iYXNlKTsKKyAgICBlbGYuZGVzdF9zaXplID0gcGFybXMudmlydF9rZW5kIC0gcGFybXMudmly dF9rc3RhcnQ7CisKKyAgICBzYXZlZF9jdXJyZW50ID0gY3VycmVudDsKKyAgICBzZXRfY3VycmVu dCh2KTsKKworICAgIHJjID0gZWxmX2xvYWRfYmluYXJ5KCZlbGYpOworICAgIGlmICggcmMgPCAw ICkKKyAgICB7CisgICAgICAgIHByaW50aygiRmFpbGVkIHRvIGxvYWQga2VybmVsOiAlZFxuIiwg cmMpOworICAgICAgICBwcmludGsoIlhlbiBkb20wIGtlcm5lbCBicm9rZW4gRUxGOiAlc1xuIiwg ZWxmX2NoZWNrX2Jyb2tlbigmZWxmKSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAg IGxhc3RfYWRkciA9IFJPVU5EVVAocGFybXMudmlydF9rZW5kIC0gcGFybXMudmlydF9iYXNlLCBQ QUdFX1NJWkUpOworCisgICAgaWYgKCBpbml0cmQgIT0gTlVMTCApCisgICAgeworICAgICAgICBy YyA9IGh2bV9jb3B5X3RvX2d1ZXN0X3BoeXMobGFzdF9hZGRyLCBtZm5fdG9fdmlydChpbml0cmQt Pm1vZF9zdGFydCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0cmQt Pm1vZF9lbmQpOworICAgICAgICBpZiAoIHJjICE9IEhWTUNPUFlfb2theSApCisgICAgICAgIHsK KyAgICAgICAgICAgIHByaW50aygiVW5hYmxlIHRvIGNvcHkgaW5pdHJkIHRvIGd1ZXN0XG4iKTsK KyAgICAgICAgICAgIHJjID0gLUVGQVVMVDsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAg ICB9CisKKyAgICAgICAgbW9kLnBhZGRyID0gbGFzdF9hZGRyOworICAgICAgICBtb2Quc2l6ZSA9 IGluaXRyZC0+bW9kX2VuZDsKKyAgICAgICAgbGFzdF9hZGRyICs9IFJPVU5EVVAoaW5pdHJkLT5t b2RfZW5kLCBQQUdFX1NJWkUpOworICAgIH0KKworICAgIC8qIEZyZWUgdGVtcG9yYXJ5IGJ1ZmZl cnMuICovCisgICAgZGlzY2FyZF9pbml0aWFsX2ltYWdlcygpOworCisgICAgbWVtc2V0KCZzdGFy dF9pbmZvLCAwLCBzaXplb2Yoc3RhcnRfaW5mbykpOworICAgIGlmICggY21kbGluZSAhPSBOVUxM ICkKKyAgICB7CisgICAgICAgIHJjID0gaHZtX2NvcHlfdG9fZ3Vlc3RfcGh5cyhsYXN0X2FkZHIs IGNtZGxpbmUsIHN0cmxlbihjbWRsaW5lKSArIDEpOworICAgICAgICBpZiAoIHJjICE9IEhWTUNP UFlfb2theSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50aygiVW5hYmxlIHRvIGNvcHkg Z3Vlc3QgY29tbWFuZCBsaW5lXG4iKTsKKyAgICAgICAgICAgIHJjID0gLUVGQVVMVDsKKyAgICAg ICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgIHN0YXJ0X2luZm8uY21kbGluZV9w YWRkciA9IGxhc3RfYWRkcjsKKyAgICAgICAgbGFzdF9hZGRyICs9IFJPVU5EVVAoc3RybGVuKGNt ZGxpbmUpICsgMSwgOCk7CisgICAgfQorICAgIGlmICggaW5pdHJkICE9IE5VTEwgKQorICAgIHsK KyAgICAgICAgcmMgPSBodm1fY29weV90b19ndWVzdF9waHlzKGxhc3RfYWRkciwgJm1vZCwgc2l6 ZW9mKG1vZCkpOworICAgICAgICBpZiAoIHJjICE9IEhWTUNPUFlfb2theSApCisgICAgICAgIHsK KyAgICAgICAgICAgIHByaW50aygiVW5hYmxlIHRvIGNvcHkgZ3Vlc3QgbW9kdWxlc1xuIik7Cisg ICAgICAgICAgICByYyA9IC1FRkFVTFQ7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAg fQorICAgICAgICBzdGFydF9pbmZvLm1vZGxpc3RfcGFkZHIgPSBsYXN0X2FkZHI7CisgICAgICAg IHN0YXJ0X2luZm8ubnJfbW9kdWxlcyA9IDE7CisgICAgICAgIGxhc3RfYWRkciArPSBzaXplb2Yo bW9kKTsKKyAgICB9CisKKyAgICBzdGFydF9pbmZvLm1hZ2ljID0gWEVOX0hWTV9TVEFSVF9NQUdJ Q19WQUxVRTsKKyAgICBzdGFydF9pbmZvLmZsYWdzID0gU0lGX1BSSVZJTEVHRUQgfCBTSUZfSU5J VERPTUFJTjsKKyAgICByYyA9IGh2bV9jb3B5X3RvX2d1ZXN0X3BoeXMobGFzdF9hZGRyLCAmc3Rh cnRfaW5mbywgc2l6ZW9mKHN0YXJ0X2luZm8pKTsKKyAgICBpZiAoIHJjICE9IEhWTUNPUFlfb2th eSApCisgICAgeworICAgICAgICBwcmludGsoIlVuYWJsZSB0byBjb3B5IHN0YXJ0IGluZm8gdG8g Z3Vlc3RcbiIpOworICAgICAgICByYyA9IC1FRkFVTFQ7CisgICAgICAgIGdvdG8gb3V0OworICAg IH0KKworICAgICplbnRyeSA9IHBhcm1zLnBoeXNfZW50cnk7CisgICAgKnN0YXJ0X2luZm9fYWRk ciA9IGxhc3RfYWRkcjsKKyAgICByYyA9IDA7CisKK291dDoKKyAgICBzZXRfY3VycmVudChzYXZl ZF9jdXJyZW50KTsKKyAgICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQgX19pbml0IGNvbnN0 cnVjdF9kb20wX2h2bShzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBtb2R1bGVfdCAqaW1hZ2UsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbWFnZV9o ZWFkcm9vbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfdCAq aW5pdHJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKigqYm9v dHN0cmFwX21hcCkoY29uc3QgbW9kdWxlX3QgKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2hhciAqY21kbGluZSkKIHsKKyAgICBwYWRkcl90IGVudHJ5LCBzdGFydF9p bmZvOwogICAgIGludCByYzsKIAogICAgIHByaW50aygiKiogQnVpbGRpbmcgYSBQVkggRG9tMCAq KlxuIik7CkBAIC0xOTE4LDYgKzIwNDgsMTQgQEAgc3RhdGljIGludCBfX2luaXQgY29uc3RydWN0 X2RvbTBfaHZtKHN0cnVjdCBkb21haW4gKmQsIGNvbnN0IG1vZHVsZV90ICppbWFnZSwKICAgICAg ICAgcmV0dXJuIHJjOwogICAgIH0KIAorICAgIHJjID0gaHZtX2xvYWRfa2VybmVsKGQsIGltYWdl LCBpbWFnZV9oZWFkcm9vbSwgaW5pdHJkLCBib290c3RyYXBfbWFwKGltYWdlKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICBjbWRsaW5lLCAmZW50cnksICZzdGFydF9pbmZvKTsKKyAgICBpZiAo IHJjICkKKyAgICB7CisgICAgICAgIHByaW50aygiRmFpbGVkIHRvIGxvYWQgRG9tMCBrZXJuZWxc biIpOworICAgICAgICByZXR1cm4gcmM7CisgICAgfQorCiAgICAgcmV0dXJuIDA7CiB9CiAKLS0g CjIuNy40IChBcHBsZSBHaXQtNjYpCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==