From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v5 6/9] xen/x86: parse Dom0 kernel for PVHv2 Date: Thu, 19 Jan 2017 17:29:38 +0000 Message-ID: <20170119172941.65642-7-roger.pau@citrix.com> References: <20170119172941.65642-1-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cUGXC-0005ns-B2 for xen-devel@lists.xenproject.org; Thu, 19 Jan 2017 17:30:02 +0000 In-Reply-To: <20170119172941.65642-1-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 Cc: Andrew Cooper , boris.ostrovsky@oracle.com, Roger Pau Monne , Jan Beulich , konrad.wilk@oracle.com List-Id: xen-devel@lists.xenproject.org SW50cm9kdWNlIGEgaGVscGVyIHRvIHBhcnNlIHRoZSBEb20wIGtlcm5lbC4KClNpZ25lZC1vZmYt Ynk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgotLS0KQ2M6IEphbiBC ZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29w ZXIzQGNpdHJpeC5jb20+Ci0tLQpDaGFuZ2VzIHNpbmNlIHY0OgogLSBzL2h2bS9wdmguCiAtIFVz ZSBodm1fY29weV90b19ndWVzdF9waHlzX3ZjcHUuCgpDaGFuZ2VzIHNpbmNlIHYzOgogLSBDaGFu Z2Ugb25lIGVycm9yIG1lc3NhZ2UuCiAtIEluZGVudCAib3V0IiBsYWJlbCBieSBvbmUgc3BhY2Uu CiAtIEludHJvZHVjZSBodm1fY29weV90b19waHlzIGFuZCBzbGlnaHRseSBzaW1wbGlmeSB0aGUg Y29kZSBpbiBodm1fbG9hZF9rZXJuZWwuCgpDaGFuZ2VzIHNpbmNlIHYyOgogLSBSZW1vdmUgZGVi dWcgbWVzc2FnZXMuCiAtIERvbid0IGhhcmRjb2RlIHRoZSBudW1iZXIgb2YgbW9kdWxlcyB0byAx LgotLS0KIHhlbi9hcmNoL3g4Ni9kb21haW5fYnVpbGQuYyB8IDE0MyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDE0MyBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5jIGIveGVuL2Fy Y2gveDg2L2RvbWFpbl9idWlsZC5jCmluZGV4IGZiY2UxYzIuLjRmNWY3MTIgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9kb21haW5fYnVpbGQuYworKysgYi94ZW4vYXJjaC94ODYvZG9tYWluX2J1 aWxkLmMKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxhc20vaHBldC5oPgogCiAjaW5jbHVk ZSA8cHVibGljL3ZlcnNpb24uaD4KKyNpbmNsdWRlIDxwdWJsaWMvYXJjaC14ODYvaHZtL3N0YXJ0 X2luZm8uaD4KIAogc3RhdGljIGxvbmcgX19pbml0ZGF0YSBkb20wX25ycGFnZXM7CiBzdGF0aWMg bG9uZyBfX2luaXRkYXRhIGRvbTBfbWluX25ycGFnZXM7CkBAIC0xOTU5LDEyICsxOTYwLDE0NiBA QCBzdGF0aWMgaW50IF9faW5pdCBwdmhfc2V0dXBfcDJtKHN0cnVjdCBkb21haW4gKmQpCiAjdW5k ZWYgTUIxX1BBR0VTCiB9CiAKK3N0YXRpYyBpbnQgX19pbml0IHB2aF9sb2FkX2tlcm5lbChzdHJ1 Y3QgZG9tYWluICpkLCBjb25zdCBtb2R1bGVfdCAqaW1hZ2UsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbWFnZV9oZWFkcm9vbSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfdCAqaW5pdHJkLCBjaGFyICppbWFnZV9iYXNl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNtZGxpbmUsIHBhZGRy X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgKnN0 YXJ0X2luZm9fYWRkcikKK3sKKyAgICBjaGFyICppbWFnZV9zdGFydCA9IGltYWdlX2Jhc2UgKyBp bWFnZV9oZWFkcm9vbTsKKyAgICB1bnNpZ25lZCBsb25nIGltYWdlX2xlbiA9IGltYWdlLT5tb2Rf ZW5kOworICAgIHN0cnVjdCBlbGZfYmluYXJ5IGVsZjsKKyAgICBzdHJ1Y3QgZWxmX2RvbV9wYXJt cyBwYXJtczsKKyAgICBwYWRkcl90IGxhc3RfYWRkcjsKKyAgICBzdHJ1Y3QgaHZtX3N0YXJ0X2lu Zm8gc3RhcnRfaW5mbzsKKyAgICBzdHJ1Y3QgaHZtX21vZGxpc3RfZW50cnkgbW9kID0geyAwIH07 CisgICAgc3RydWN0IHZjcHUgKnNhdmVkX2N1cnJlbnQsICp2ID0gZC0+dmNwdVswXTsKKyAgICBp bnQgcmM7CisKKyAgICBpZiAoIChyYyA9IGJ6aW1hZ2VfcGFyc2UoaW1hZ2VfYmFzZSwgJmltYWdl X3N0YXJ0LCAmaW1hZ2VfbGVuKSkgIT0gMCApCisgICAgeworICAgICAgICBwcmludGsoIkVycm9y IHRyeWluZyB0byBkZXRlY3QgYnogY29tcHJlc3NlZCBrZXJuZWxcbiIpOworICAgICAgICByZXR1 cm4gcmM7CisgICAgfQorCisgICAgaWYgKCAocmMgPSBlbGZfaW5pdCgmZWxmLCBpbWFnZV9zdGFy dCwgaW1hZ2VfbGVuKSkgIT0gMCApCisgICAgeworICAgICAgICBwcmludGsoIlVuYWJsZSB0byBp bml0IEVMRlxuIik7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisjaWZkZWYgVkVSQk9TRQor ICAgIGVsZl9zZXRfdmVyYm9zZSgmZWxmKTsKKyNlbmRpZgorICAgIGVsZl9wYXJzZV9iaW5hcnko JmVsZik7CisgICAgaWYgKCAocmMgPSBlbGZfeGVuX3BhcnNlKCZlbGYsICZwYXJtcykpICE9IDAg KQorICAgIHsKKyAgICAgICAgcHJpbnRrKCJVbmFibGUgdG8gcGFyc2Uga2VybmVsIGZvciBFTEZO T1RFU1xuIik7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICBpZiAoIHBhcm1zLnBo eXNfZW50cnkgPT0gVU5TRVRfQUREUjMyICkgeworICAgICAgICBwcmludGsoIlVuYWJsZSB0byBm aW5kIFhFTl9FTEZOT1RFX1BIWVMzMl9FTlRSWSBhZGRyZXNzXG4iKTsKKyAgICAgICAgcmV0dXJu IC1FSU5WQUw7CisgICAgfQorCisgICAgcHJpbnRrKCJPUzogJXMgdmVyc2lvbjogJXMgbG9hZGVy OiAlcyBiaXRuZXNzOiAlc1xuIiwgcGFybXMuZ3Vlc3Rfb3MsCisgICAgICAgICAgIHBhcm1zLmd1 ZXN0X3ZlciwgcGFybXMubG9hZGVyLAorICAgICAgICAgICBlbGZfNjRiaXQoJmVsZikgPyAiNjQt Yml0IiA6ICIzMi1iaXQiKTsKKworICAgIC8qIENvcHkgdGhlIE9TIGltYWdlIGFuZCBmcmVlIHRl bXBvcmFyeSBidWZmZXIuICovCisgICAgZWxmLmRlc3RfYmFzZSA9ICh2b2lkICopKHBhcm1zLnZp cnRfa3N0YXJ0IC0gcGFybXMudmlydF9iYXNlKTsKKyAgICBlbGYuZGVzdF9zaXplID0gcGFybXMu dmlydF9rZW5kIC0gcGFybXMudmlydF9rc3RhcnQ7CisKKyAgICAvKgorICAgICAqIE5COiB3ZSBu ZWVkIHRvIHNldCB2Q1BVIDAgb2YgRG9tMCBhcyB0aGUgY3VycmVudCB2Q1BVIChpbnN0ZWFkIG9m IHRoZQorICAgICAqIGlkbGUgb25lKSBiZWNhdXNlIGVsZl9sb2FkX2JpbmFyeSBjYWxscyByYXdf e2NvcHlfdG8vY2xlYXJ9X2d1ZXN0LCBhbmQKKyAgICAgKiB0aGUgdGFyZ2V0IGRvbWFpbiBpcyBu b3QgcGFzc2VkIGFueXdoZXJlLiBUaGlzIGlzIHZlcnkgc2ltaWxhciB0byB3aGF0CisgICAgICog aXMgZG9uZSBkdXJpbmcgY2xhc3NpYyBQViBEb20wIGNyZWF0aW9uLCB3aGVyZSBYZW4gc3dpdGNo ZXMgdG8gdGhlIERvbTAKKyAgICAgKiBwYWdlIHRhYmxlcy4gV2UgYWxzbyBjYW5ub3QgcGFzcyBh IHN0cnVjdCBkb21haW4gb3IgdmNwdSB0bworICAgICAqIGVsZl9sb2FkX2JpbmFyeSwgc2luY2Ug dGhlIGludGVyZmFjZSBpcyBzaGFyZWQgd2l0aCB0aGUgdG9vbHN0YWNrLCBhbmQKKyAgICAgKiBp dCBkb2Vzbid0IGhhdmUgYW55IG5vdGlvbiBvZiBhIGRvbWFpbiBvciB2Y3B1IHN0cnVjdC4KKyAg ICAgKi8KKyAgICBzYXZlZF9jdXJyZW50ID0gY3VycmVudDsKKyAgICBzZXRfY3VycmVudCh2KTsK KyAgICByYyA9IGVsZl9sb2FkX2JpbmFyeSgmZWxmKTsKKyAgICBzZXRfY3VycmVudChzYXZlZF9j dXJyZW50KTsKKyAgICBpZiAoIHJjIDwgMCApCisgICAgeworICAgICAgICBwcmludGsoIkZhaWxl ZCB0byBsb2FkIGtlcm5lbDogJWRcbiIsIHJjKTsKKyAgICAgICAgcHJpbnRrKCJYZW4gZG9tMCBr ZXJuZWwgYnJva2VuIEVMRjogJXNcbiIsIGVsZl9jaGVja19icm9rZW4oJmVsZikpOworICAgICAg ICByZXR1cm4gcmM7CisgICAgfQorCisgICAgbGFzdF9hZGRyID0gUk9VTkRVUChwYXJtcy52aXJ0 X2tlbmQgLSBwYXJtcy52aXJ0X2Jhc2UsIFBBR0VfU0laRSk7CisKKyAgICBpZiAoIGluaXRyZCAh PSBOVUxMICkKKyAgICB7CisgICAgICAgIHJjID0gaHZtX2NvcHlfdG9fZ3Vlc3RfcGh5c192Y3B1 KGxhc3RfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZu X3RvX3ZpcnQoaW5pdHJkLT5tb2Rfc3RhcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbml0cmQtPm1vZF9lbmQsIHYpOworICAgICAgICBpZiAoIHJjICkKKyAg ICAgICAgeworICAgICAgICAgICAgcHJpbnRrKCJVbmFibGUgdG8gY29weSBpbml0cmQgdG8gZ3Vl c3RcbiIpOworICAgICAgICAgICAgcmV0dXJuIHJjOworICAgICAgICB9CisKKyAgICAgICAgbW9k LnBhZGRyID0gbGFzdF9hZGRyOworICAgICAgICBtb2Quc2l6ZSA9IGluaXRyZC0+bW9kX2VuZDsK KyAgICAgICAgbGFzdF9hZGRyICs9IFJPVU5EVVAoaW5pdHJkLT5tb2RfZW5kLCBQQUdFX1NJWkUp OworICAgIH0KKworICAgIC8qIEZyZWUgdGVtcG9yYXJ5IGJ1ZmZlcnMuICovCisgICAgZGlzY2Fy ZF9pbml0aWFsX2ltYWdlcygpOworCisgICAgbWVtc2V0KCZzdGFydF9pbmZvLCAwLCBzaXplb2Yo c3RhcnRfaW5mbykpOworICAgIGlmICggY21kbGluZSAhPSBOVUxMICkKKyAgICB7CisgICAgICAg IHJjID0gaHZtX2NvcHlfdG9fZ3Vlc3RfcGh5c192Y3B1KGxhc3RfYWRkciwgY21kbGluZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGNtZGxpbmUpICsg MSwgdik7CisgICAgICAgIGlmICggcmMgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGso IlVuYWJsZSB0byBjb3B5IGd1ZXN0IGNvbW1hbmQgbGluZVxuIik7CisgICAgICAgICAgICByZXR1 cm4gcmM7CisgICAgICAgIH0KKyAgICAgICAgc3RhcnRfaW5mby5jbWRsaW5lX3BhZGRyID0gbGFz dF9hZGRyOworICAgICAgICBsYXN0X2FkZHIgKz0gUk9VTkRVUChzdHJsZW4oY21kbGluZSkgKyAx LCA4KTsKKyAgICB9CisgICAgaWYgKCBpbml0cmQgIT0gTlVMTCApCisgICAgeworICAgICAgICBy YyA9IGh2bV9jb3B5X3RvX2d1ZXN0X3BoeXNfdmNwdShsYXN0X2FkZHIsICZtb2QsIHNpemVvZiht b2QpLCB2KTsKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50 aygiVW5hYmxlIHRvIGNvcHkgZ3Vlc3QgbW9kdWxlc1xuIik7CisgICAgICAgICAgICByZXR1cm4g cmM7CisgICAgICAgIH0KKyAgICAgICAgc3RhcnRfaW5mby5tb2RsaXN0X3BhZGRyID0gbGFzdF9h ZGRyOworICAgICAgICBzdGFydF9pbmZvLm5yX21vZHVsZXMgPSAxOworICAgICAgICBsYXN0X2Fk ZHIgKz0gc2l6ZW9mKG1vZCk7CisgICAgfQorCisgICAgc3RhcnRfaW5mby5tYWdpYyA9IFhFTl9I Vk1fU1RBUlRfTUFHSUNfVkFMVUU7CisgICAgc3RhcnRfaW5mby5mbGFncyA9IFNJRl9QUklWSUxF R0VEIHwgU0lGX0lOSVRET01BSU47CisgICAgcmMgPSBodm1fY29weV90b19ndWVzdF9waHlzX3Zj cHUobGFzdF9hZGRyLCAmc3RhcnRfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2Yoc3RhcnRfaW5mbyksIHYpOworICAgIGlmICggcmMgKQorICAgIHsKKyAg ICAgICAgcHJpbnRrKCJVbmFibGUgdG8gY29weSBzdGFydCBpbmZvIHRvIGd1ZXN0XG4iKTsKKyAg ICAgICAgcmV0dXJuIHJjOworICAgIH0KKworICAgICplbnRyeSA9IHBhcm1zLnBoeXNfZW50cnk7 CisgICAgKnN0YXJ0X2luZm9fYWRkciA9IGxhc3RfYWRkcjsKKworICAgIHJldHVybiAwOworfQor CiBzdGF0aWMgaW50IF9faW5pdCBjb25zdHJ1Y3RfZG9tMF9wdmgoc3RydWN0IGRvbWFpbiAqZCwg Y29uc3QgbW9kdWxlX3QgKmltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgaW1hZ2VfaGVhZHJvb20sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbW9kdWxlX3QgKmluaXRyZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2b2lkICooKmJvb3RzdHJhcF9tYXApKGNvbnN0IG1vZHVsZV90ICopLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNtZGxpbmUpCiB7Cisg ICAgcGFkZHJfdCBlbnRyeSwgc3RhcnRfaW5mbzsKICAgICBpbnQgcmM7CiAKICAgICBwcmludGso IioqIEJ1aWxkaW5nIGEgUFZIIERvbTAgKipcbiIpOwpAQCAtMTk3OCw2ICsyMTEzLDE0IEBAIHN0 YXRpYyBpbnQgX19pbml0IGNvbnN0cnVjdF9kb20wX3B2aChzdHJ1Y3QgZG9tYWluICpkLCBjb25z dCBtb2R1bGVfdCAqaW1hZ2UsCiAgICAgICAgIHJldHVybiByYzsKICAgICB9CiAKKyAgICByYyA9 IHB2aF9sb2FkX2tlcm5lbChkLCBpbWFnZSwgaW1hZ2VfaGVhZHJvb20sIGluaXRyZCwgYm9vdHN0 cmFwX21hcChpbWFnZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgY21kbGluZSwgJmVudHJ5 LCAmc3RhcnRfaW5mbyk7CisgICAgaWYgKCByYyApCisgICAgeworICAgICAgICBwcmludGsoIkZh aWxlZCB0byBsb2FkIERvbTAga2VybmVsXG4iKTsKKyAgICAgICAgcmV0dXJuIHJjOworICAgIH0K KwogICAgIHJldHVybiAwOwogfQogCi0tIAoyLjEwLjEgKEFwcGxlIEdpdC03OCkKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK