From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v4 11/14] xen/x86: parse Dom0 kernel for PVHv2 Date: Wed, 30 Nov 2016 16:49:47 +0000 Message-ID: <20161130164950.43543-12-roger.pau@citrix.com> References: <20161130164950.43543-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cC88W-0003J9-RN for xen-devel@lists.xenproject.org; Wed, 30 Nov 2016 16:53:36 +0000 In-Reply-To: <20161130164950.43543-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, 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+Ci0tLQpDaGFuZ2VzIHNpbmNlIHYzOgogLSBDaGFuZ2Ugb25lIGVycm9y IG1lc3NhZ2UuCiAtIEluZGVudCAib3V0IiBsYWJlbCBieSBvbmUgc3BhY2UuCiAtIEludHJvZHVj ZSBodm1fY29weV90b19waHlzIGFuZCBzbGlnaHRseSBzaW1wbGlmeSB0aGUgY29kZSBpbiBodm1f bG9hZF9rZXJuZWwuCgpDaGFuZ2VzIHNpbmNlIHYyOgogLSBSZW1vdmUgZGVidWcgbWVzc2FnZXMu CiAtIERvbid0IGhhcmRjb2RlIHRoZSBudW1iZXIgb2YgbW9kdWxlcyB0byAxLgotLS0KIHhlbi9h cmNoL3g4Ni9kb21haW5fYnVpbGQuYyB8IDE0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDE0NSBpbnNlcnRpb25zKCspCgpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5jIGIveGVuL2FyY2gveDg2L2RvbWFp bl9idWlsZC5jCmluZGV4IDg2MDI1NjYuLmU0MGZiOTQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9kb21haW5fYnVpbGQuYworKysgYi94ZW4vYXJjaC94ODYvZG9tYWluX2J1aWxkLmMKQEAgLTM5 LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxhc20vaHBldC5oPgogCiAjaW5jbHVkZSA8cHVibGljL3Zl cnNpb24uaD4KKyNpbmNsdWRlIDxwdWJsaWMvYXJjaC14ODYvaHZtL3N0YXJ0X2luZm8uaD4KIAog c3RhdGljIGxvbmcgX19pbml0ZGF0YSBkb20wX25ycGFnZXM7CiBzdGF0aWMgbG9uZyBfX2luaXRk YXRhIGRvbTBfbWluX25ycGFnZXM7CkBAIC0xOTMwLDEyICsxOTMxLDE0OCBAQCBzdGF0aWMgaW50 IF9faW5pdCBodm1fc2V0dXBfcDJtKHN0cnVjdCBkb21haW4gKmQpCiAjdW5kZWYgTUIxX1BBR0VT CiB9CiAKK3N0YXRpYyBpbnQgX19pbml0IGh2bV9jb3B5X3RvX3BoeXMoc3RydWN0IGRvbWFpbiAq ZCwgcGFkZHJfdCBwYWRkciwgdm9pZCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgc2l6ZSkKK3sKKyAgICBzdHJ1Y3QgdmNwdSAqc2F2ZWRfY3VycmVudDsKKyAg ICBpbnQgcmM7CisKKyAgICBzYXZlZF9jdXJyZW50ID0gY3VycmVudDsKKyAgICBzZXRfY3VycmVu dChkLT52Y3B1WzBdKTsKKyAgICByYyA9IGh2bV9jb3B5X3RvX2d1ZXN0X3BoeXMocGFkZHIsIGJ1 Ziwgc2l6ZSk7CisgICAgc2V0X2N1cnJlbnQoc2F2ZWRfY3VycmVudCk7CisKKyAgICByZXR1cm4g cmMgIT0gSFZNQ09QWV9va2F5ID8gLUVGQVVMVCA6IDA7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0 IGh2bV9sb2FkX2tlcm5lbChzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBtb2R1bGVfdCAqaW1hZ2Us CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbWFnZV9o ZWFkcm9vbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfdCAqaW5p dHJkLCBjaGFyICppbWFnZV9iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNoYXIgKmNtZGxpbmUsIHBhZGRyX3QgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBhZGRyX3QgKnN0YXJ0X2luZm9fYWRkcikKK3sKKyAgICBjaGFyICppbWFnZV9z dGFydCA9IGltYWdlX2Jhc2UgKyBpbWFnZV9oZWFkcm9vbTsKKyAgICB1bnNpZ25lZCBsb25nIGlt YWdlX2xlbiA9IGltYWdlLT5tb2RfZW5kOworICAgIHN0cnVjdCBlbGZfYmluYXJ5IGVsZjsKKyAg ICBzdHJ1Y3QgZWxmX2RvbV9wYXJtcyBwYXJtczsKKyAgICBwYWRkcl90IGxhc3RfYWRkcjsKKyAg ICBzdHJ1Y3QgaHZtX3N0YXJ0X2luZm8gc3RhcnRfaW5mbzsKKyAgICBzdHJ1Y3QgaHZtX21vZGxp c3RfZW50cnkgbW9kOworICAgIHN0cnVjdCB2Y3B1ICpzYXZlZF9jdXJyZW50LCAqdiA9IGQtPnZj cHVbMF07CisgICAgaW50IHJjOworCisgICAgaWYgKCAocmMgPSBiemltYWdlX3BhcnNlKGltYWdl X2Jhc2UsICZpbWFnZV9zdGFydCwgJmltYWdlX2xlbikpICE9IDAgKQorICAgIHsKKyAgICAgICAg cHJpbnRrKCJFcnJvciB0cnlpbmcgdG8gZGV0ZWN0IGJ6IGNvbXByZXNzZWQga2VybmVsXG4iKTsK KyAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKworICAgIGlmICggKHJjID0gZWxmX2luaXQoJmVs ZiwgaW1hZ2Vfc3RhcnQsIGltYWdlX2xlbikpICE9IDAgKQorICAgIHsKKyAgICAgICAgcHJpbnRr KCJVbmFibGUgdG8gaW5pdCBFTEZcbiIpOworICAgICAgICByZXR1cm4gcmM7CisgICAgfQorI2lm ZGVmIFZFUkJPU0UKKyAgICBlbGZfc2V0X3ZlcmJvc2UoJmVsZik7CisjZW5kaWYKKyAgICBlbGZf cGFyc2VfYmluYXJ5KCZlbGYpOworICAgIGlmICggKHJjID0gZWxmX3hlbl9wYXJzZSgmZWxmLCAm cGFybXMpKSAhPSAwICkKKyAgICB7CisgICAgICAgIHByaW50aygiVW5hYmxlIHRvIHBhcnNlIGtl cm5lbCBmb3IgRUxGTk9URVNcbiIpOworICAgICAgICByZXR1cm4gcmM7CisgICAgfQorCisgICAg aWYgKCBwYXJtcy5waHlzX2VudHJ5ID09IFVOU0VUX0FERFIzMiApIHsKKyAgICAgICAgcHJpbnRr KCJVbmFibGUgdG8gZmluZCBYRU5fRUxGTk9URV9QSFlTMzJfRU5UUlkgYWRkcmVzc1xuIik7Cisg ICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIHByaW50aygiT1M6ICVzIHZlcnNp b246ICVzIGxvYWRlcjogJXMgYml0bmVzczogJXNcbiIsIHBhcm1zLmd1ZXN0X29zLAorICAgICAg ICAgICBwYXJtcy5ndWVzdF92ZXIsIHBhcm1zLmxvYWRlciwKKyAgICAgICAgICAgZWxmXzY0Yml0 KCZlbGYpID8gIjY0LWJpdCIgOiAiMzItYml0Iik7CisKKyAgICAvKiBDb3B5IHRoZSBPUyBpbWFn ZSBhbmQgZnJlZSB0ZW1wb3JhcnkgYnVmZmVyLiAqLworICAgIGVsZi5kZXN0X2Jhc2UgPSAodm9p ZCAqKShwYXJtcy52aXJ0X2tzdGFydCAtIHBhcm1zLnZpcnRfYmFzZSk7CisgICAgZWxmLmRlc3Rf c2l6ZSA9IHBhcm1zLnZpcnRfa2VuZCAtIHBhcm1zLnZpcnRfa3N0YXJ0OworCisgICAgc2F2ZWRf Y3VycmVudCA9IGN1cnJlbnQ7CisgICAgc2V0X2N1cnJlbnQodik7CisgICAgcmMgPSBlbGZfbG9h ZF9iaW5hcnkoJmVsZik7CisgICAgc2V0X2N1cnJlbnQoc2F2ZWRfY3VycmVudCk7CisgICAgaWYg KCByYyA8IDAgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKCJGYWlsZWQgdG8gbG9hZCBrZXJuZWw6 ICVkXG4iLCByYyk7CisgICAgICAgIHByaW50aygiWGVuIGRvbTAga2VybmVsIGJyb2tlbiBFTEY6 ICVzXG4iLCBlbGZfY2hlY2tfYnJva2VuKCZlbGYpKTsKKyAgICAgICAgcmV0dXJuIHJjOworICAg IH0KKworICAgIGxhc3RfYWRkciA9IFJPVU5EVVAocGFybXMudmlydF9rZW5kIC0gcGFybXMudmly dF9iYXNlLCBQQUdFX1NJWkUpOworCisgICAgaWYgKCBpbml0cmQgIT0gTlVMTCApCisgICAgewor ICAgICAgICByYyA9IGh2bV9jb3B5X3RvX3BoeXMoZCwgbGFzdF9hZGRyLCBtZm5fdG9fdmlydChp bml0cmQtPm1vZF9zdGFydCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0cmQt Pm1vZF9lbmQpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgeworICAgICAgICAgICAgcHJp bnRrKCJVbmFibGUgdG8gY29weSBpbml0cmQgdG8gZ3Vlc3RcbiIpOworICAgICAgICAgICAgcmV0 dXJuIHJjOworICAgICAgICB9CisKKyAgICAgICAgbW9kLnBhZGRyID0gbGFzdF9hZGRyOworICAg ICAgICBtb2Quc2l6ZSA9IGluaXRyZC0+bW9kX2VuZDsKKyAgICAgICAgbGFzdF9hZGRyICs9IFJP VU5EVVAoaW5pdHJkLT5tb2RfZW5kLCBQQUdFX1NJWkUpOworICAgIH0KKworICAgIC8qIEZyZWUg dGVtcG9yYXJ5IGJ1ZmZlcnMuICovCisgICAgZGlzY2FyZF9pbml0aWFsX2ltYWdlcygpOworCisg ICAgbWVtc2V0KCZzdGFydF9pbmZvLCAwLCBzaXplb2Yoc3RhcnRfaW5mbykpOworICAgIGlmICgg Y21kbGluZSAhPSBOVUxMICkKKyAgICB7CisgICAgICAgIHJjID0gaHZtX2NvcHlfdG9fcGh5cyhk LCBsYXN0X2FkZHIsIGNtZGxpbmUsIHN0cmxlbihjbWRsaW5lKSArIDEpOworICAgICAgICBpZiAo IHJjICkKKyAgICAgICAgeworICAgICAgICAgICAgcHJpbnRrKCJVbmFibGUgdG8gY29weSBndWVz dCBjb21tYW5kIGxpbmVcbiIpOworICAgICAgICAgICAgcmV0dXJuIHJjOworICAgICAgICB9Cisg ICAgICAgIHN0YXJ0X2luZm8uY21kbGluZV9wYWRkciA9IGxhc3RfYWRkcjsKKyAgICAgICAgbGFz dF9hZGRyICs9IFJPVU5EVVAoc3RybGVuKGNtZGxpbmUpICsgMSwgOCk7CisgICAgfQorICAgIGlm ICggaW5pdHJkICE9IE5VTEwgKQorICAgIHsKKyAgICAgICAgcmMgPSBodm1fY29weV90b19waHlz KGQsIGxhc3RfYWRkciwgJm1vZCwgc2l6ZW9mKG1vZCkpOworICAgICAgICBpZiAoIHJjICkKKyAg ICAgICAgeworICAgICAgICAgICAgcHJpbnRrKCJVbmFibGUgdG8gY29weSBndWVzdCBtb2R1bGVz XG4iKTsKKyAgICAgICAgICAgIHJldHVybiByYzsKKyAgICAgICAgfQorICAgICAgICBzdGFydF9p bmZvLm1vZGxpc3RfcGFkZHIgPSBsYXN0X2FkZHI7CisgICAgICAgIHN0YXJ0X2luZm8ubnJfbW9k dWxlcyA9IDE7CisgICAgICAgIGxhc3RfYWRkciArPSBzaXplb2YobW9kKTsKKyAgICB9CisKKyAg ICBzdGFydF9pbmZvLm1hZ2ljID0gWEVOX0hWTV9TVEFSVF9NQUdJQ19WQUxVRTsKKyAgICBzdGFy dF9pbmZvLmZsYWdzID0gU0lGX1BSSVZJTEVHRUQgfCBTSUZfSU5JVERPTUFJTjsKKyAgICByYyA9 IGh2bV9jb3B5X3RvX3BoeXMoZCwgbGFzdF9hZGRyLCAmc3RhcnRfaW5mbywgc2l6ZW9mKHN0YXJ0 X2luZm8pKTsKKyAgICBpZiAoIHJjICkKKyAgICB7CisgICAgICAgIHByaW50aygiVW5hYmxlIHRv IGNvcHkgc3RhcnQgaW5mbyB0byBndWVzdFxuIik7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9 CisKKyAgICAqZW50cnkgPSBwYXJtcy5waHlzX2VudHJ5OworICAgICpzdGFydF9pbmZvX2FkZHIg PSBsYXN0X2FkZHI7CisKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBfX2luaXQgY29u c3RydWN0X2RvbTBfaHZtKHN0cnVjdCBkb21haW4gKmQsIGNvbnN0IG1vZHVsZV90ICppbWFnZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGltYWdl X2hlYWRyb29tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV90 ICppbml0cmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKCpi b290c3RyYXBfbWFwKShjb25zdCBtb2R1bGVfdCAqKSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjaGFyICpjbWRsaW5lKQogeworICAgIHBhZGRyX3QgZW50cnksIHN0YXJ0 X2luZm87CiAgICAgaW50IHJjOwogCiAgICAgcHJpbnRrKCIqKiBCdWlsZGluZyBhIFBWSCBEb20w ICoqXG4iKTsKQEAgLTE5NTMsNiArMjA5MCwxNCBAQCBzdGF0aWMgaW50IF9faW5pdCBjb25zdHJ1 Y3RfZG9tMF9odm0oc3RydWN0IGRvbWFpbiAqZCwgY29uc3QgbW9kdWxlX3QgKmltYWdlLAogICAg ICAgICByZXR1cm4gcmM7CiAgICAgfQogCisgICAgcmMgPSBodm1fbG9hZF9rZXJuZWwoZCwgaW1h Z2UsIGltYWdlX2hlYWRyb29tLCBpbml0cmQsIGJvb3RzdHJhcF9tYXAoaW1hZ2UpLAorICAgICAg ICAgICAgICAgICAgICAgICAgIGNtZGxpbmUsICZlbnRyeSwgJnN0YXJ0X2luZm8pOworICAgIGlm ICggcmMgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKCJGYWlsZWQgdG8gbG9hZCBEb20wIGtlcm5l bFxuIik7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKICAgICByZXR1cm4gMDsKIH0KIAot LSAKMi45LjMgKEFwcGxlIEdpdC03NSkKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK