From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 2/4] x86/pv: Introduce pv_create_exception_frame() Date: Mon, 8 May 2017 16:48:06 +0100 Message-ID: <1494258488-30714-3-git-send-email-andrew.cooper3@citrix.com> References: <1494258488-30714-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1494258488-30714-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhpcyBpcyBhIEMgaW1wbGVtZW50YXRpb24gb2Yge2NvbXBhdF8sfWNyZWF0ZV9ib3VuY2VfZnJh bWUoKSwgYmFzZWQgbG9vc2VseQpvbiB0aGUgZXhpc3RpbmcgZmFpbHNhZmUgaW1wbGVtZW50YXRp b24gaW4gbG9hZF9zZWdtZW50cygpLiAgSXQgcGlja3MgdXAgYWxsCmluamVjdGlvbiBpbmZvcm1h dGlvbiBmcm9tIHRoZSB0cmFwX2JvdW5jZSBzdHJ1Y3R1cmUuCgpPbmUgbWlub3IgaW1wcm92ZW1l bnQgaXMgdGhhdCBhdCBub3QgcG9pbnQgaXMgcmVncy0+Y3MgbGVmdCB3aXRoIGFuIHJwbCBvZiAw Cm9uIHRoZSByb290IHN0YWNrIGZyYW1lLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8 YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1bGljaCA8SkJldWxpY2hA c3VzZS5jb20+Ci0tLQogeGVuL2FyY2gveDg2L3B2L3RyYXBzLmMgfCAxMzMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTMz IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvdHJhcHMuYyBiL3hl bi9hcmNoL3g4Ni9wdi90cmFwcy5jCmluZGV4IDUxMTI1YTguLjg5NzNiMjMgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9wdi90cmFwcy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi90cmFwcy5jCkBA IC0zMiw2ICszMiwxMzkgQEAgdm9pZCBkb19lbnRyeV9pbnQ4MihzdHJ1Y3QgY3B1X3VzZXJfcmVn cyAqcmVncykKIH0KIAogLyoKKyAqIFRoaXMgZnVuY3Rpb24gZW11bGF0ZXMgdGhlIGJlaGF2aW91 ciBvZiBoYXJkd2FyZSB3aGVuIFhlbiBuZWVkcyB0byBpbmplY3QKKyAqIGFuIGV2ZW50IGludG8g aW50byBhIGd1ZXN0LgorICoKKyAqIEl0IG1heSBzd2l0Y2ggZnJvbSB1c2VyIG1vZGUgdG8ga2Vy bmVsIG1vZGUsIHdpbGwgd3JpdGUgYW4gYXBwcm9wcmlhdGUKKyAqIGhhcmR3YXJlIGV4Y2VwdGlv biBmcmFtZSAoaW5jbHVkaW5nIFhlbi1zcGVjaWZpYyBleHRyYXMpLCBhbmQgYWx0ZXIgdGhlCisg KiByb290IHN0YWNrIGZyYW1lIHRvIGludm9rZSB0aGUgZ3Vlc3Qga2VybmVscyBjb3JyZWN0IGVu dHJ5IHBvaW50IG9uIGV4aXQKKyAqIGZyb20gdGhlIGh5cGVydmlzb3IuCisgKi8KK3ZvaWQgcHZf Y3JlYXRlX2V4Y2VwdGlvbl9mcmFtZSh2b2lkKQoreworICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0g Y3VycmVudDsKKyAgICBzdHJ1Y3QgdHJhcF9ib3VuY2UgKnRiID0gJmN1cnItPmFyY2gucHZfdmNw dS50cmFwX2JvdW5jZTsKKyAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyA9IGd1ZXN0X2Nw dV91c2VyX3JlZ3MoKTsKKyAgICBjb25zdCBib29sIHVzZXJfbW9kZV9mcmFtZSA9ICFndWVzdF9r ZXJuZWxfbW9kZShjdXJyLCByZWdzKTsKKyAgICB1aW50OF90ICpldnRfbWFzayA9ICZ2Y3B1X2lu Zm8oY3VyciwgZXZ0Y2huX3VwY2FsbF9tYXNrKTsKKyAgICB1bnNpZ25lZCBsb25nIHJmbGFnczsK KyAgICB1bnNpZ25lZCBpbnQgYnl0ZXMsIG1pc3Npbmc7CisKKyAgICBBU1NFUlRfTk9UX0lOX0FU T01JQygpOworCisgICAgaWYgKCB1bmxpa2VseShudWxsX3RyYXBfYm91bmNlKGN1cnIsIHRiKSkg KQorICAgIHsKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAiRmF0YWw6IEF0dGVtcHRpbmcg dG8gaW5qZWN0IG51bGwgdHJhcCBib3VuY2VcbiIpOworICAgICAgICBfX2RvbWFpbl9jcmFzaF9z eW5jaHJvbm91cygpOworICAgIH0KKworICAgIC8qIEZvbGQgdGhlIHVwY2FsbCBtYXNrIGFuZCBh cmNoaXRlY3R1cmFsIElPUEwgaW50byB0aGUgZ3Vlc3RzIHJmbGFncy4gKi8KKyAgICByZmxhZ3Mg ID0gcmVncy0+cmZsYWdzICYgfihYODZfRUZMQUdTX0lGIHwgWDg2X0VGTEFHU19JT1BMKTsKKyAg ICByZmxhZ3MgfD0gKCgqZXZ0X21hc2sgPyAwIDogWDg2X0VGTEFHU19JRikgfAorICAgICAgICAg ICAgICAgKFZNX0FTU0lTVChjdXJyLT5kb21haW4sIGFyY2hpdGVjdHVyYWxfaW9wbCkKKyAgICAg ICAgICAgICAgICA/IGN1cnItPmFyY2gucHZfdmNwdS5pb3BsIDogMCkpOworCisgICAgaWYgKCBp c19wdl8zMmJpdF92Y3B1KGN1cnIpICkKKyAgICB7CisgICAgICAgIC8qIHsgW0VSUkNPREUsXSBF SVAsIENTL01BU0sgLCBFRkxBR1MsIFtFU1AsIFNTXSB9ICovCisgICAgICAgIHVuc2lnbmVkIGlu dCBmcmFtZVs2XSwgKnB0ciA9IGZyYW1lLCBrc3AgPQorICAgICAgICAgICAgKHVzZXJfbW9kZV9m cmFtZSA/IGN1cnItPmFyY2gucHZfdmNwdS5rZXJuZWxfc3AgOiByZWdzLT5lc3ApOworCisgICAg ICAgIGlmICggdGItPmZsYWdzICYgVEJGX0VYQ0VQVElPTl9FUlJDT0RFICkKKyAgICAgICAgICAg ICpwdHIrKyA9IHRiLT5lcnJvcl9jb2RlOworCisgICAgICAgICpwdHIrKyA9IHJlZ3MtPmVpcDsK KyAgICAgICAgKnB0cisrID0gcmVncy0+Y3MgfCAoKCh1bnNpZ25lZCBpbnQpKmV2dF9tYXNrKSA8 PCAxNik7CisgICAgICAgICpwdHIrKyA9IHJmbGFnczsKKworICAgICAgICBpZiAoIHVzZXJfbW9k ZV9mcmFtZSApCisgICAgICAgIHsKKyAgICAgICAgICAgICpwdHIrKyA9IHJlZ3MtPmVzcDsKKyAg ICAgICAgICAgICpwdHIrKyA9IHJlZ3MtPnNzOworICAgICAgICB9CisKKyAgICAgICAgLyogQ29w eSB0aGUgY29uc3RydWN0ZWQgZnJhbWUgdG8gdGhlIGd1ZXN0IGtlcm5lbCBzdGFjay4gKi8KKyAg ICAgICAgYnl0ZXMgPSBfcChwdHIpIC0gX3AoZnJhbWUpOworICAgICAgICBrc3AgLT0gYnl0ZXM7 CisKKyAgICAgICAgaWYgKCB1bmxpa2VseSgobWlzc2luZyA9IF9fY29weV90b191c2VyKF9wKGtz cCksIGZyYW1lLCBieXRlcykpICE9IDApICkKKyAgICAgICAgeworICAgICAgICAgICAgZ3ByaW50 ayhYRU5MT0dfRVJSLCAiRmF0YWw6IEZhdWx0IHdoaWxlIHdyaXRpbmcgZXhjZXB0aW9uIGZyYW1l XG4iKTsKKyAgICAgICAgICAgIHNob3dfcGFnZV93YWxrKGtzcCArIG1pc3NpbmcpOworICAgICAg ICAgICAgX19kb21haW5fY3Jhc2hfc3luY2hyb25vdXMoKTsKKyAgICAgICAgfQorCisgICAgICAg IC8qIFJld3JpdGUgb3VyIHN0YWNrIGZyYW1lLiAqLworICAgICAgICByZWdzLT5yaXAgICAgICAg ICAgID0gKHVpbnQzMl90KXRiLT5laXA7CisgICAgICAgIHJlZ3MtPmNzICAgICAgICAgICAgPSB0 Yi0+Y3M7CisgICAgICAgIHJlZ3MtPmVmbGFncyAgICAgICAmPSB+KFg4Nl9FRkxBR1NfVk0gfCBY ODZfRUZMQUdTX1JGIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWDg2X0VGTEFH U19OVCB8IFg4Nl9FRkxBR1NfVEYpOworICAgICAgICByZWdzLT5yc3AgICAgICAgICAgID0ga3Nw OworICAgICAgICBpZiAoIHVzZXJfbW9kZV9mcmFtZSApCisgICAgICAgICAgICByZWdzLT5zcyA9 IGN1cnItPmFyY2gucHZfdmNwdS5rZXJuZWxfc3M7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg ICAgICAgIC8qIHsgUkNYLCBSMTEsIFtFUlJDT0RFLF0gUklQLCBDUy9NQVNLLCBSRkxBR1MsIFJT UCwgU1MgfSAqLworICAgICAgICB1bnNpZ25lZCBsb25nIGZyYW1lWzddLCAqcHRyID0gZnJhbWUs IGtzcCA9CisgICAgICAgICAgICAodXNlcl9tb2RlX2ZyYW1lID8gY3Vyci0+YXJjaC5wdl92Y3B1 Lmtlcm5lbF9zcCA6IHJlZ3MtPnJzcCkgJiB+MHhmOworCisgICAgICAgIGlmICggdXNlcl9tb2Rl X2ZyYW1lICkKKyAgICAgICAgICAgIHRvZ2dsZV9ndWVzdF9tb2RlKGN1cnIpOworCisgICAgICAg ICpwdHIrKyA9IHJlZ3MtPnJjeDsKKyAgICAgICAgKnB0cisrID0gcmVncy0+cjExOworCisgICAg ICAgIGlmICggdGItPmZsYWdzICYgVEJGX0VYQ0VQVElPTl9FUlJDT0RFICkKKyAgICAgICAgICAg ICpwdHIrKyA9IHRiLT5lcnJvcl9jb2RlOworCisgICAgICAgICpwdHIrKyA9IHJlZ3MtPnJpcDsK KyAgICAgICAgKnB0cisrID0gKHVzZXJfbW9kZV9mcmFtZSA/IHJlZ3MtPmNzIDogcmVncy0+Y3Mg JiB+MykgfAorICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nKSgqZXZ0X21hc2spIDw8IDMyKTsK KyAgICAgICAgKnB0cisrID0gcmZsYWdzOworICAgICAgICAqcHRyKysgPSByZWdzLT5yc3A7Cisg ICAgICAgICpwdHIrKyA9IHJlZ3MtPnNzOworCisgICAgICAgIC8qIENvcHkgdGhlIGNvbnN0cnVj dGVkIGZyYW1lIHRvIHRoZSBndWVzdCBrZXJuZWwgc3RhY2suICovCisgICAgICAgIGJ5dGVzID0g X3AocHRyKSAtIF9wKGZyYW1lKTsKKyAgICAgICAga3NwIC09IGJ5dGVzOworCisgICAgICAgIGlm ICggdW5saWtlbHkoIV9fYWRkcl9vayhrc3ApKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdw cmludGsoWEVOTE9HX0VSUiwgIkZhdGFsOiBCYWQgZ3Vlc3Qga2VybmVsIHN0YWNrICVwXG4iLCBf cChrc3ApKTsKKyAgICAgICAgICAgIF9fZG9tYWluX2NyYXNoX3N5bmNocm9ub3VzKCk7CisgICAg ICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIHVubGlrZWx5KChtaXNzaW5nID0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfX2NvcHlfdG9fdXNlcihfcChrc3ApLCBmcmFtZSwgYnl0ZXMpKSAh PSAwKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwgIkZhdGFs OiBGYXVsdCB3aGlsZSB3cml0aW5nIGV4Y2VwdGlvbiBmcmFtZVxuIik7CisgICAgICAgICAgICBz aG93X3BhZ2Vfd2Fsayhrc3AgKyBtaXNzaW5nKTsKKyAgICAgICAgICAgIF9fZG9tYWluX2NyYXNo X3N5bmNocm9ub3VzKCk7CisgICAgICAgIH0KKworICAgICAgICAvKiBSZXdyaXRlIG91ciBzdGFj ayBmcmFtZS4gKi8KKyAgICAgICAgcmVncy0+ZW50cnlfdmVjdG9yIHw9IFRSQVBfc3lzY2FsbDsK KyAgICAgICAgcmVncy0+cmlwICAgICAgICAgICA9IHRiLT5laXA7CisgICAgICAgIHJlZ3MtPmNz ICAgICAgICAgICAgPSBGTEFUX0tFUk5FTF9DUzsKKyAgICAgICAgcmVncy0+cmZsYWdzICAgICAg ICY9IH4oWDg2X0VGTEFHU19BQyB8IFg4Nl9FRkxBR1NfVk0gfCBYODZfRUZMQUdTX1JGIHwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWDg2X0VGTEFHU19OVCB8IFg4Nl9FRkxBR1Nf VEYpOworICAgICAgICByZWdzLT5yc3AgICAgICAgICAgID0ga3NwOworICAgICAgICByZWdzLT5z cyAgICAgICAgICAgID0gRkxBVF9LRVJORUxfU1M7CisgICAgfQorCisgICAgLyogTWFzayBldmVu dHMgaWYgcmVxdWVzdGVkLiAqLworICAgIGlmICggdGItPmZsYWdzICYgVEJGX0lOVEVSUlVQVCAp CisgICAgICAgICpldnRfbWFzayA9IDE7CisKKyAgICAvKgorICAgICAqIENsb2JiZXIgdGhlIGlu amVjdGlvbiBpbmZvcm1hdGlvbiBub3cgaXQgaGFzIGJlZW4gY29tcGxldGVkLiAgQnVnZ3kKKyAg ICAgKiBhdHRlbXB0cyB0byBpbmplY3QgdGhlIHNhbWUgZXZlbnQgdHdpY2Ugd2lsbCBoaXQgdGhl IG51bGxfdHJhcF9ib3VuY2UoKQorICAgICAqIGNoZWNrIGFib3ZlLgorICAgICAqLworICAgICp0 YiA9IChzdHJ1Y3QgdHJhcF9ib3VuY2Upe307Cit9CisKKy8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6 CiAgKiBtb2RlOiBDCiAgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCi0tIAoyLjEuNAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=