From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 3/5] x86/pv: Introduce pv_create_exception_frame() Date: Tue, 27 Feb 2018 14:50:34 +0000 Message-ID: <1519743036-11600-4-git-send-email-andrew.cooper3@citrix.com> References: <1519743036-11600-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: <1519743036-11600-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Wei Liu , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBpcyBhIEMgaW1wbGVtZW50YXRpb24gb2Yge2NvbXBhdF8sfWNyZWF0ZV9ib3VuY2VfZnJh bWUoKSwgYmFzZWQgbG9vc2VseQpvbiB0aGUgZXhpc3RpbmcgZmFpbHNhZmUgaW1wbGVtZW50YXRp b24gaW4gbG9hZF9zZWdtZW50cygpLiAgSXQgcGlja3MgdXAgYWxsCmluamVjdGlvbiBpbmZvcm1h dGlvbiBmcm9tIHRoZSB0cmFwX2JvdW5jZSBzdHJ1Y3R1cmUuCgpPbmUgbWlub3IgaW1wcm92ZW1l bnQgaXMgdGhhdCBhdCBubyBwb2ludCBpcyByZWdzLT5jcyBsZWZ0IHdpdGggYW4gcnBsIG9mIDAg b24KdGhlIHJvb3Qgc3RhY2sgZnJhbWUuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxh bmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBz dXNlLmNvbT4KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNDOiBSb2dlciBQYXUg TW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KCnYyOgogKiBVc2UgZG9tYWluX2NyYXNoKCkg cmF0aGVyIHRoYW4gZG9tYWluX2NyYXNoX3N5bmMoKS4gIEFsbCBjYWxsZXJzCiAgIGltbWVkaWF0 ZWx5IGNvbnRpbnVlIHRvIHtjb21wYXRffXRlc3RfYWxsX2V2ZW50cwogKiBDb3VudCB0aGUgbnVt YmVyIG9mIGZyYW1lW10gZW50cmllcyBjb3JyZWN0bHkKICogQ29uc2lzdGVudGx5IHVzZSA2NGJp dCBvcGVyYXRpb25zIHdoZW4gYWRqdXN0aW5nIHRoZSByb290IGZyYW1lCiAqIEludHJvZHVjZSBh IGNvbXBhdF9hZGRyX29rKCkgY2hlY2sgZm9yIHRoZSAzMmJpdCBzaWRlLiAgVGhlIEFTTSB2ZXJz aW9uCiAgIGRpZG4ndCBoYXZlIHByb3RlY3Rpb24gYXR0ZW1wdGluZyB0byB3cml0ZSBpbnRvIHRo ZSBjb21wYXQgcDJtLCBvdGhlciB0aGFuCiAgIGhpdHRpbmcgYSAjUEYgd2hpbGUgdHJ5aW5nLgot LS0KIHhlbi9hcmNoL3g4Ni9wdi90cmFwcy5jIHwgMTQzICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDE0MyBpbnNlcnRpb25z KCspCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L3RyYXBzLmMgYi94ZW4vYXJjaC94ODYv cHYvdHJhcHMuYwppbmRleCA5ODU0OWJjLi5iN2Q3ZDJiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvcHYvdHJhcHMuYworKysgYi94ZW4vYXJjaC94ODYvcHYvdHJhcHMuYwpAQCAtMjQ1LDYgKzI0 NSwxNDkgQEAgaW50IHB2X3JhaXNlX2ludGVycnVwdChzdHJ1Y3QgdmNwdSAqdiwgdWludDhfdCB2 ZWN0b3IpCiB9CiAKIC8qCisgKiBUaGlzIGZ1bmN0aW9uIGVtdWxhdGVzIHRoZSBiZWhhdmlvdXIg b2YgaGFyZHdhcmUgd2hlbiBYZW4gbmVlZHMgdG8gaW5qZWN0CisgKiBhbiBldmVudCBpbnRvIGlu dG8gYSBndWVzdC4KKyAqCisgKiBJdCBtYXkgc3dpdGNoIGZyb20gdXNlciBtb2RlIHRvIGtlcm5l bCBtb2RlLCB3aWxsIHdyaXRlIGFuIGFwcHJvcHJpYXRlCisgKiBoYXJkd2FyZSBleGNlcHRpb24g ZnJhbWUgKGluY2x1ZGluZyBYZW4tc3BlY2lmaWMgZXh0cmFzKSwgYW5kIGFsdGVyIHRoZQorICog cm9vdCBzdGFjayBmcmFtZSB0byBpbnZva2UgdGhlIGd1ZXN0IGtlcm5lbHMgY29ycmVjdCBlbnRy eSBwb2ludCBvbiBleGl0CisgKiBmcm9tIHRoZSBoeXBlcnZpc29yLgorICovCit2b2lkIHB2X2Ny ZWF0ZV9leGNlcHRpb25fZnJhbWUodm9pZCkKK3sKKyAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1 cnJlbnQ7CisgICAgc3RydWN0IHRyYXBfYm91bmNlICp0YiA9ICZjdXJyLT5hcmNoLnB2X3ZjcHUu dHJhcF9ib3VuY2U7CisgICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MgPSBndWVzdF9jcHVf dXNlcl9yZWdzKCk7CisgICAgY29uc3QgYm9vbCB1c2VyX21vZGVfZnJhbWUgPSAhZ3Vlc3Rfa2Vy bmVsX21vZGUoY3VyciwgcmVncyk7CisgICAgdWludDhfdCAqZXZ0X21hc2sgPSAmdmNwdV9pbmZv KGN1cnIsIGV2dGNobl91cGNhbGxfbWFzayk7CisgICAgdW5zaWduZWQgaW50IGZsYWdzLCBieXRl cywgbWlzc2luZzsKKworICAgIEFTU0VSVF9OT1RfSU5fQVRPTUlDKCk7CisKKyAgICBpZiAoIHVu bGlrZWx5KG51bGxfdHJhcF9ib3VuY2UoY3VyciwgdGIpKSApCisgICAgeworICAgICAgICBncHJp bnRrKFhFTkxPR19FUlIsICJGYXRhbDogQXR0ZW1wdGluZyB0byBpbmplY3QgbnVsbCB0cmFwIGJv dW5jZVxuIik7CisgICAgICAgIGRvbWFpbl9jcmFzaChjdXJyLT5kb21haW4pOworICAgICAgICBy ZXR1cm47CisgICAgfQorCisgICAgLyogRm9sZCB0aGUgdXBjYWxsIG1hc2sgYW5kIGFyY2hpdGVj dHVyYWwgSU9QTCBpbnRvIHRoZSBndWVzdHMgcmZsYWdzLiAqLworICAgIGZsYWdzICA9IHJlZ3Mt PnJmbGFncyAmIH4oWDg2X0VGTEFHU19JRiB8IFg4Nl9FRkxBR1NfSU9QTCk7CisgICAgZmxhZ3Mg fD0gKCgqZXZ0X21hc2sgPyAwIDogWDg2X0VGTEFHU19JRikgfAorICAgICAgICAgICAgICAoVk1f QVNTSVNUKGN1cnItPmRvbWFpbiwgYXJjaGl0ZWN0dXJhbF9pb3BsKQorICAgICAgICAgICAgICAg PyBjdXJyLT5hcmNoLnB2X3ZjcHUuaW9wbCA6IDApKTsKKworICAgIGlmICggaXNfcHZfMzJiaXRf dmNwdShjdXJyKSApCisgICAgeworICAgICAgICAvKiB7IFtFUlJDT0RFLF0gRUlQLCBDUy9NQVNL ICwgRUZMQUdTLCBbRVNQLCBTU10gfSAqLworICAgICAgICB1bnNpZ25lZCBpbnQgZnJhbWVbNl0s ICpwdHIgPSBmcmFtZSwga3NwID0KKyAgICAgICAgICAgICh1c2VyX21vZGVfZnJhbWUgPyBjdXJy LT5hcmNoLnB2X3ZjcHUua2VybmVsX3NwIDogcmVncy0+ZXNwKTsKKworICAgICAgICBpZiAoIHRi LT5mbGFncyAmIFRCRl9FWENFUFRJT05fRVJSQ09ERSApCisgICAgICAgICAgICAqcHRyKysgPSB0 Yi0+ZXJyb3JfY29kZTsKKworICAgICAgICAqcHRyKysgPSByZWdzLT5laXA7CisgICAgICAgICpw dHIrKyA9IHJlZ3MtPmNzIHwgKCh1bnNpZ25lZCBpbnQpKmV2dF9tYXNrIDw8IDE2KTsKKyAgICAg ICAgKnB0cisrID0gZmxhZ3M7CisKKyAgICAgICAgaWYgKCB1c2VyX21vZGVfZnJhbWUgKQorICAg ICAgICB7CisgICAgICAgICAgICAqcHRyKysgPSByZWdzLT5lc3A7CisgICAgICAgICAgICAqcHRy KysgPSByZWdzLT5zczsKKyAgICAgICAgfQorCisgICAgICAgIC8qIENvcHkgdGhlIGNvbnN0cnVj dGVkIGZyYW1lIHRvIHRoZSBndWVzdCBrZXJuZWwgc3RhY2suICovCisgICAgICAgIGJ5dGVzID0g X3AocHRyKSAtIF9wKGZyYW1lKTsKKyAgICAgICAga3NwIC09IGJ5dGVzOworCisgICAgICAgIGlm ICggdW5saWtlbHkoIV9fY29tcGF0X2FjY2Vzc19vayhjdXJyLT5kb21haW4sIGtzcCwgYnl0ZXMp KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwgIkZhdGFsOiBC YWQgZ3Vlc3Qga2VybmVsIHN0YWNrICVwXG4iLCBfcChrc3ApKTsKKyAgICAgICAgICAgIGRvbWFp bl9jcmFzaChjdXJyLT5kb21haW4pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK KyAgICAgICAgaWYgKCB1bmxpa2VseSgobWlzc2luZyA9IF9fY29weV90b191c2VyKF9wKGtzcCks IGZyYW1lLCBieXRlcykpICE9IDApICkKKyAgICAgICAgeworICAgICAgICAgICAgZ3ByaW50ayhY RU5MT0dfRVJSLCAiRmF0YWw6IEZhdWx0IHdoaWxlIHdyaXRpbmcgZXhjZXB0aW9uIGZyYW1lXG4i KTsKKyAgICAgICAgICAgIHNob3dfcGFnZV93YWxrKGtzcCArIG1pc3NpbmcpOworICAgICAgICAg ICAgZG9tYWluX2NyYXNoKGN1cnItPmRvbWFpbik7CisgICAgICAgICAgICByZXR1cm47CisgICAg ICAgIH0KKworICAgICAgICAvKiBSZXdyaXRlIG91ciBzdGFjayBmcmFtZS4gKi8KKyAgICAgICAg cmVncy0+cmlwICAgICAgICAgICA9ICh1aW50MzJfdCl0Yi0+ZWlwOworICAgICAgICByZWdzLT5j cyAgICAgICAgICAgID0gdGItPmNzOworICAgICAgICByZWdzLT5yZmxhZ3MgICAgICAgJj0gfihY ODZfRUZMQUdTX1ZNIHwgWDg2X0VGTEFHU19SRiB8CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFg4Nl9FRkxBR1NfTlQgfCBYODZfRUZMQUdTX1RGKTsKKyAgICAgICAgcmVncy0+cnNw ICAgICAgICAgICA9IGtzcDsKKyAgICAgICAgaWYgKCB1c2VyX21vZGVfZnJhbWUgKQorICAgICAg ICAgICAgcmVncy0+c3MgPSBjdXJyLT5hcmNoLnB2X3ZjcHUua2VybmVsX3NzOworICAgIH0KKyAg ICBlbHNlCisgICAgeworICAgICAgICAvKiB7IFJDWCwgUjExLCBbRVJSQ09ERSxdIFJJUCwgQ1Mv TUFTSywgUkZMQUdTLCBSU1AsIFNTIH0gKi8KKyAgICAgICAgdW5zaWduZWQgbG9uZyBmcmFtZVs4 XSwgKnB0ciA9IGZyYW1lLCBrc3AgPQorICAgICAgICAgICAgKHVzZXJfbW9kZV9mcmFtZSA/IGN1 cnItPmFyY2gucHZfdmNwdS5rZXJuZWxfc3AgOiByZWdzLT5yc3ApICYgfjB4ZjsKKworICAgICAg ICBpZiAoIHVzZXJfbW9kZV9mcmFtZSApCisgICAgICAgICAgICB0b2dnbGVfZ3Vlc3RfbW9kZShj dXJyKTsKKworICAgICAgICAqcHRyKysgPSByZWdzLT5yY3g7CisgICAgICAgICpwdHIrKyA9IHJl Z3MtPnIxMTsKKworICAgICAgICBpZiAoIHRiLT5mbGFncyAmIFRCRl9FWENFUFRJT05fRVJSQ09E RSApCisgICAgICAgICAgICAqcHRyKysgPSB0Yi0+ZXJyb3JfY29kZTsKKworICAgICAgICAqcHRy KysgPSByZWdzLT5yaXA7CisgICAgICAgICpwdHIrKyA9ICgodXNlcl9tb2RlX2ZyYW1lID8gcmVn cy0+Y3MgOiByZWdzLT5jcyAmIH4zKSB8CisgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGxv bmcpKmV2dF9tYXNrIDw8IDMyKSk7CisgICAgICAgICpwdHIrKyA9IGZsYWdzOworICAgICAgICAq cHRyKysgPSByZWdzLT5yc3A7CisgICAgICAgICpwdHIrKyA9IHJlZ3MtPnNzOworCisgICAgICAg IC8qIENvcHkgdGhlIGNvbnN0cnVjdGVkIGZyYW1lIHRvIHRoZSBndWVzdCBrZXJuZWwgc3RhY2su ICovCisgICAgICAgIGJ5dGVzID0gX3AocHRyKSAtIF9wKGZyYW1lKTsKKyAgICAgICAga3NwIC09 IGJ5dGVzOworCisgICAgICAgIGlmICggdW5saWtlbHkoIV9fYWRkcl9vayhrc3ApKSApCisgICAg ICAgIHsKKyAgICAgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwgIkZhdGFsOiBCYWQgZ3Vlc3Qg a2VybmVsIHN0YWNrICVwXG4iLCBfcChrc3ApKTsKKyAgICAgICAgICAgIGRvbWFpbl9jcmFzaChj dXJyLT5kb21haW4pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg aWYgKCB1bmxpa2VseSgobWlzc2luZyA9IF9fY29weV90b191c2VyKF9wKGtzcCksIGZyYW1lLCBi eXRlcykpICE9IDApICkKKyAgICAgICAgeworICAgICAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJS LCAiRmF0YWw6IEZhdWx0IHdoaWxlIHdyaXRpbmcgZXhjZXB0aW9uIGZyYW1lXG4iKTsKKyAgICAg ICAgICAgIHNob3dfcGFnZV93YWxrKGtzcCArIG1pc3NpbmcpOworICAgICAgICAgICAgZG9tYWlu X2NyYXNoKGN1cnItPmRvbWFpbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor ICAgICAgICAvKiBSZXdyaXRlIG91ciBzdGFjayBmcmFtZS4gKi8KKyAgICAgICAgcmVncy0+ZW50 cnlfdmVjdG9yIHw9IFRSQVBfc3lzY2FsbDsKKyAgICAgICAgcmVncy0+cmlwICAgICAgICAgICA9 IHRiLT5laXA7CisgICAgICAgIHJlZ3MtPmNzICAgICAgICAgICAgPSBGTEFUX0tFUk5FTF9DUzsK KyAgICAgICAgcmVncy0+cmZsYWdzICAgICAgICY9IH4oWDg2X0VGTEFHU19BQyB8IFg4Nl9FRkxB R1NfVk0gfCBYODZfRUZMQUdTX1JGIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg WDg2X0VGTEFHU19OVCB8IFg4Nl9FRkxBR1NfVEYpOworICAgICAgICByZWdzLT5yc3AgICAgICAg ICAgID0ga3NwOworICAgICAgICByZWdzLT5zcyAgICAgICAgICAgID0gRkxBVF9LRVJORUxfU1M7 CisgICAgfQorCisgICAgLyogTWFzayBldmVudHMgaWYgcmVxdWVzdGVkLiAqLworICAgIGlmICgg dGItPmZsYWdzICYgVEJGX0lOVEVSUlVQVCApCisgICAgICAgICpldnRfbWFzayA9IDE7CisKKyAg ICAvKgorICAgICAqIENsb2JiZXIgdGhlIGluamVjdGlvbiBpbmZvcm1hdGlvbiBub3cgaXQgaGFz IGJlZW4gY29tcGxldGVkLiAgQnVnZ3kKKyAgICAgKiBhdHRlbXB0cyB0byBpbmplY3QgdGhlIHNh bWUgZXZlbnQgdHdpY2Ugd2lsbCBoaXQgdGhlIG51bGxfdHJhcF9ib3VuY2UoKQorICAgICAqIGNo ZWNrIGFib3ZlLgorICAgICAqLworICAgICp0YiA9IChzdHJ1Y3QgdHJhcF9ib3VuY2Upe307Cit9 CisKKy8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCiAgKiBjLWZpbGUtc3R5bGU6 ICJCU0QiCi0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2pl Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4t ZGV2ZWw=