From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v3 03/24] x86/emul: Simplfy emulation state setup Date: Wed, 30 Nov 2016 13:50:20 +0000 Message-ID: <1480513841-7565-4-git-send-email-andrew.cooper3@citrix.com> References: <1480513841-7565-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: <1480513841-7565-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: George Dunlap , Andrew Cooper List-Id: xen-devel@lists.xenproject.org VGhlIGN1cnJlbnQgY29kZSB0byBzZXQgdXAgZW11bGF0aW9uIHN0YXRlIGlzIGFkLWhvYyBhbmQg ZXJyb3IgcHJvbmUuCgogKiBDb25zaXN0ZW50bHkgemVybyBhbGwgZW11bGF0aW9uIHN0YXRlIHN0 cnVjdHVyZXMuCiAqIEF2b2lkIGV4cGxpY2l0bHkgaW5pdGlhbGlzaW5nIHNvbWUgc3RhdGUgdG8g MC4KICogRXhwbGljaXRseSBpZGVudGlmeSBhbGwgaW5wdXQgYW5kIG91dHB1dCBzdGF0ZSBpbiB4 ODZfZW11bGF0ZV9jdHh0LiAgVGhpcwogICBpbnZvbHZlcyByZWFyYW5naW5nIHNvbWUgZmllbGRz LgogKiBIYXZlIHg4Nl9kZWNvZGUoKSBleHBsaWNpdGx5IGluaXRhbGlzZSBhbGwgb3V0cHV0IHN0 YXRlIGF0IGl0cyBzdGFydC4KCldoaWxlIG1ha2luZyB0aGUgYWJvdmUgY2hhbmdlcywgdHdvIG1p bm9yIHR3ZWFrczoKCiAqIE1vdmUgdGhlIGNhbGN1bGF0aW9uIG9mIGh2bWVtdWxfY3R4dC0+Y3R4 dC5zd2ludF9lbXVsYXRlIGZyb20KICAgX2h2bV9lbXVsYXRlX29uZSgpIHRvIGh2bV9lbXVsYXRl X2luaXRfb25jZSgpLiAgSXQgZG9lc24ndCBuZWVkCiAgIHJlY2FsY3VsYXRpbmcgZm9yIGVhY2gg aW5zdHJ1Y3Rpb24uCiAqIENoYW5nZSBmb3JjZV93cml0ZWJhY2sgdG8gYmVpbmcgYSBib29sZWFu LCB0byBtYXRjaCBpdHMgdXNlLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3 LmNvb3BlcjNAY2l0cml4LmNvbT4KQWNrZWQtYnk6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpS ZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpSZXZpZXdlZC1ieTog UGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KLS0tCkNDOiBHZW9yZ2UgRHVu bGFwIDxnZW9yZ2UuZHVubGFwQGV1LmNpdHJpeC5jb20+Cgp2MjoKICogU3BsaXQgeDg2X2VtdWxh dGVfY3R4dCBpbnRvIHRocmVlIHNlY3Rpb25zCi0tLQogeGVuL2FyY2gveDg2L2h2bS9lbXVsYXRl LmMgICAgICAgICAgICAgfCAyOCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiB4ZW4vYXJj aC94ODYvbW0uYyAgICAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKysrLS0tLS0tCiB4ZW4v YXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jICAgICAgICB8ICA0ICsrLS0KIHhlbi9hcmNoL3g4 Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jIHwgIDEgKwogeGVuL2FyY2gveDg2L3g4Nl9lbXVs YXRlL3g4Nl9lbXVsYXRlLmggfCAzMiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQog NSBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11 bGF0ZS5jCmluZGV4IGYxZjZlMmYuLjNlZmVlYWQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCkBAIC0xNzcwLDEz ICsxNzcwLDYgQEAgc3RhdGljIGludCBfaHZtX2VtdWxhdGVfb25lKHN0cnVjdCBodm1fZW11bGF0 ZV9jdHh0ICpodm1lbXVsX2N0eHQsCiAKICAgICB2aW8tPm1taW9fcmV0cnkgPSAwOwogCi0gICAg aWYgKCBjcHVfaGFzX3ZteCApCi0gICAgICAgIGh2bWVtdWxfY3R4dC0+Y3R4dC5zd2ludF9lbXVs YXRlID0geDg2X3N3aW50X2VtdWxhdGVfbm9uZTsKLSAgICBlbHNlIGlmICggY3B1X2hhc19zdm1f bnJpcHMgKQotICAgICAgICBodm1lbXVsX2N0eHQtPmN0eHQuc3dpbnRfZW11bGF0ZSA9IHg4Nl9z d2ludF9lbXVsYXRlX2ljZWJwOwotICAgIGVsc2UKLSAgICAgICAgaHZtZW11bF9jdHh0LT5jdHh0 LnN3aW50X2VtdWxhdGUgPSB4ODZfc3dpbnRfZW11bGF0ZV9hbGw7Ci0KICAgICByYyA9IHg4Nl9l bXVsYXRlKCZodm1lbXVsX2N0eHQtPmN0eHQsIG9wcyk7CiAKICAgICBpZiAoIHJjID09IFg4NkVN VUxfT0tBWSAmJiB2aW8tPm1taW9fcmV0cnkgKQpAQCAtMTk0NywxNCArMTk0MCwyMyBAQCB2b2lk IGh2bV9lbXVsYXRlX2luaXRfb25jZSgKICAgICBzdHJ1Y3QgaHZtX2VtdWxhdGVfY3R4dCAqaHZt ZW11bF9jdHh0LAogICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewotICAgIGh2bWVt dWxfY3R4dC0+aW50cl9zaGFkb3cgPSBodm1fZnVuY3MuZ2V0X2ludGVycnVwdF9zaGFkb3coY3Vy cmVudCk7Ci0gICAgaHZtZW11bF9jdHh0LT5jdHh0LnJlZ3MgPSByZWdzOwotICAgIGh2bWVtdWxf Y3R4dC0+Y3R4dC5mb3JjZV93cml0ZWJhY2sgPSAxOwotICAgIGh2bWVtdWxfY3R4dC0+c2VnX3Jl Z19hY2Nlc3NlZCA9IDA7Ci0gICAgaHZtZW11bF9jdHh0LT5zZWdfcmVnX2RpcnR5ID0gMDsKLSAg ICBodm1lbXVsX2N0eHQtPnNldF9jb250ZXh0ID0gMDsKKyAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9 IGN1cnJlbnQ7CisKKyAgICBtZW1zZXQoaHZtZW11bF9jdHh0LCAwLCBzaXplb2YoKmh2bWVtdWxf Y3R4dCkpOworCisgICAgaHZtZW11bF9jdHh0LT5pbnRyX3NoYWRvdyA9IGh2bV9mdW5jcy5nZXRf aW50ZXJydXB0X3NoYWRvdyhjdXJyKTsKICAgICBodm1lbXVsX2dldF9zZWdfcmVnKHg4Nl9zZWdf Y3MsIGh2bWVtdWxfY3R4dCk7CiAgICAgaHZtZW11bF9nZXRfc2VnX3JlZyh4ODZfc2VnX3NzLCBo dm1lbXVsX2N0eHQpOworCisgICAgaHZtZW11bF9jdHh0LT5jdHh0LnJlZ3MgPSByZWdzOworICAg IGh2bWVtdWxfY3R4dC0+Y3R4dC5mb3JjZV93cml0ZWJhY2sgPSB0cnVlOworCisgICAgaWYgKCBj cHVfaGFzX3ZteCApCisgICAgICAgIGh2bWVtdWxfY3R4dC0+Y3R4dC5zd2ludF9lbXVsYXRlID0g eDg2X3N3aW50X2VtdWxhdGVfbm9uZTsKKyAgICBlbHNlIGlmICggY3B1X2hhc19zdm1fbnJpcHMg KQorICAgICAgICBodm1lbXVsX2N0eHQtPmN0eHQuc3dpbnRfZW11bGF0ZSA9IHg4Nl9zd2ludF9l bXVsYXRlX2ljZWJwOworICAgIGVsc2UKKyAgICAgICAgaHZtZW11bF9jdHh0LT5jdHh0LnN3aW50 X2VtdWxhdGUgPSB4ODZfc3dpbnRfZW11bGF0ZV9hbGw7CiB9CiAKIHZvaWQgaHZtX2VtdWxhdGVf aW5pdF9wZXJfaW5zbigKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gv eDg2L21tLmMKaW5kZXggNWIwZTlmMy4uZDM2NWY1OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L21tLmMKKysrIGIveGVuL2FyY2gveDg2L21tLmMKQEAgLTUzMzcsNyArNTMzNywxNCBAQCBpbnQg cHR3cl9kb19wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIsCiAg ICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpw YWdlOwogICAgIGwxX3BnZW50cnlfdCAgICAgIHB0ZTsKLSAgICBzdHJ1Y3QgcHR3cl9lbXVsYXRl X2N0eHQgcHR3cl9jdHh0OworICAgIHN0cnVjdCBwdHdyX2VtdWxhdGVfY3R4dCBwdHdyX2N0eHQg PSB7CisgICAgICAgIC5jdHh0ID0geworICAgICAgICAgICAgLnJlZ3MgPSByZWdzLAorICAgICAg ICAgICAgLmFkZHJfc2l6ZSA9IGlzX3B2XzMyYml0X2RvbWFpbihkKSA/IDMyIDogQklUU19QRVJf TE9ORywKKyAgICAgICAgICAgIC5zcF9zaXplICAgPSBpc19wdl8zMmJpdF9kb21haW4oZCkgPyAz MiA6IEJJVFNfUEVSX0xPTkcsCisgICAgICAgICAgICAuc3dpbnRfZW11bGF0ZSA9IHg4Nl9zd2lu dF9lbXVsYXRlX25vbmUsCisgICAgICAgIH0sCisgICAgfTsKICAgICBpbnQgcmM7CiAKICAgICAv KiBBdHRlbXB0IHRvIHJlYWQgdGhlIFBURSB0aGF0IG1hcHMgdGhlIFZBIGJlaW5nIGFjY2Vzc2Vk LiAqLwpAQCAtNTM2MywxMSArNTM3MCw2IEBAIGludCBwdHdyX2RvX3BhZ2VfZmF1bHQoc3RydWN0 IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICAgICAgZ290byBiYWlsOwogICAgIH0K IAotICAgIHB0d3JfY3R4dC5jdHh0LnJlZ3MgPSByZWdzOwotICAgIHB0d3JfY3R4dC5jdHh0LmZv cmNlX3dyaXRlYmFjayA9IDA7Ci0gICAgcHR3cl9jdHh0LmN0eHQuYWRkcl9zaXplID0gcHR3cl9j dHh0LmN0eHQuc3Bfc2l6ZSA9Ci0gICAgICAgIGlzX3B2XzMyYml0X2RvbWFpbihkKSA/IDMyIDog QklUU19QRVJfTE9ORzsKLSAgICBwdHdyX2N0eHQuY3R4dC5zd2ludF9lbXVsYXRlID0geDg2X3N3 aW50X2VtdWxhdGVfbm9uZTsKICAgICBwdHdyX2N0eHQuY3IyID0gYWRkcjsKICAgICBwdHdyX2N0 eHQucHRlID0gcHRlOwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1v bi5jIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYwppbmRleCA3ZTViOGIwLi5hNGEz YzRiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCisrKyBiL3hl bi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKQEAgLTM4NSw4ICszODUsOSBAQCBjb25zdCBz dHJ1Y3QgeDg2X2VtdWxhdGVfb3BzICpzaGFkb3dfaW5pdF9lbXVsYXRpb24oCiAgICAgc3RydWN0 IHZjcHUgKnYgPSBjdXJyZW50OwogICAgIHVuc2lnbmVkIGxvbmcgYWRkcjsKIAorICAgIG1lbXNl dChzaF9jdHh0LCAwLCBzaXplb2YoKnNoX2N0eHQpKTsKKwogICAgIHNoX2N0eHQtPmN0eHQucmVn cyA9IHJlZ3M7Ci0gICAgc2hfY3R4dC0+Y3R4dC5mb3JjZV93cml0ZWJhY2sgPSAwOwogICAgIHNo X2N0eHQtPmN0eHQuc3dpbnRfZW11bGF0ZSA9IHg4Nl9zd2ludF9lbXVsYXRlX25vbmU7CiAKICAg ICBpZiAoIGlzX3B2X3ZjcHUodikgKQpAQCAtMzk2LDcgKzM5Nyw2IEBAIGNvbnN0IHN0cnVjdCB4 ODZfZW11bGF0ZV9vcHMgKnNoYWRvd19pbml0X2VtdWxhdGlvbigKICAgICB9CiAKICAgICAvKiBT ZWdtZW50IGNhY2hlIGluaXRpYWxpc2F0aW9uLiBQcmltZWQgd2l0aCBDUy4gKi8KLSAgICBzaF9j dHh0LT52YWxpZF9zZWdfcmVncyA9IDA7CiAgICAgY3JlZyA9IGh2bV9nZXRfc2VnX3JlZyh4ODZf c2VnX2NzLCBzaF9jdHh0KTsKIAogICAgIC8qIFdvcmsgb3V0IHRoZSBlbXVsYXRpb24gbW9kZS4g Ki8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jIGIv eGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKaW5kZXggZDgyZTg1ZC4uNTMy YmQzMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMK KysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKQEAgLTE5MDQsNiAr MTkwNCw3IEBAIHg4Nl9kZWNvZGUoCiAgICAgc3RhdGUtPnJlZ3MgPSBjdHh0LT5yZWdzOwogICAg IHN0YXRlLT5laXAgPSBjdHh0LT5yZWdzLT5laXA7CiAKKyAgICAvKiBJbml0aWFsaXNlIG91dHB1 dCBzdGF0ZSBpbiB4ODZfZW11bGF0ZV9jdHh0ICovCiAgICAgY3R4dC0+cmV0aXJlLmJ5dGUgPSAw OwogCiAgICAgb3BfYnl0ZXMgPSBkZWZfb3BfYnl0ZXMgPSBhZF9ieXRlcyA9IGRlZl9hZF9ieXRl cyA9IGN0eHQtPmFkZHJfc2l6ZS84OwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVs YXRlL3g4Nl9lbXVsYXRlLmggYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUu aAppbmRleCBlYzgyNGNlLi5hYjU2NmMwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2Vt dWxhdGUveDg2X2VtdWxhdGUuaAorKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2Vt dWxhdGUuaApAQCAtNDEwLDYgKzQxMCwyMyBAQCBzdHJ1Y3QgY3B1X3VzZXJfcmVnczsKIAogc3Ry dWN0IHg4Nl9lbXVsYXRlX2N0eHQKIHsKKyAgICAvKgorICAgICAqIElucHV0LW9ubHkgc3RhdGU6 CisgICAgICovCisKKyAgICAvKiBTb2Z0d2FyZSBldmVudCBpbmplY3Rpb24gc3VwcG9ydC4gKi8K KyAgICBlbnVtIHg4Nl9zd2ludF9lbXVsYXRpb24gc3dpbnRfZW11bGF0ZTsKKworICAgIC8qIFNl dCB0aGlzIGlmIHdyaXRlcyBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMuICovCisgICAgYm9vbCBmb3Jj ZV93cml0ZWJhY2s7CisKKyAgICAvKiBDYWxsZXIgZGF0YSB0aGF0IGNhbiBiZSB1c2VkIGJ5IHg4 Nl9lbXVsYXRlX29wcycgcm91dGluZXMuICovCisgICAgdm9pZCAqZGF0YTsKKworICAgIC8qCisg ICAgICogSW5wdXQvb3V0cHV0IHN0YXRlOgorICAgICAqLworCiAgICAgLyogUmVnaXN0ZXIgc3Rh dGUgYmVmb3JlL2FmdGVyIGVtdWxhdGlvbi4gKi8KICAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAq cmVnczsKIApAQCAtNDE5LDE0ICs0MzYsMTIgQEAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQKICAg ICAvKiBTdGFjayBwb2ludGVyIHdpZHRoIGluIGJpdHMgKDE2LCAzMiBvciA2NCkuICovCiAgICAg dW5zaWduZWQgaW50IHNwX3NpemU7CiAKLSAgICAvKiBDYW5vbmljYWwgb3Bjb2RlIChzZWUgYmVs b3cpLiAqLwotICAgIHVuc2lnbmVkIGludCBvcGNvZGU7Ci0KLSAgICAvKiBTb2Z0d2FyZSBldmVu dCBpbmplY3Rpb24gc3VwcG9ydC4gKi8KLSAgICBlbnVtIHg4Nl9zd2ludF9lbXVsYXRpb24gc3dp bnRfZW11bGF0ZTsKKyAgICAvKgorICAgICAqIE91dHB1dC1vbmx5IHN0YXRlOgorICAgICAqLwog Ci0gICAgLyogU2V0IHRoaXMgaWYgd3JpdGVzIG1heSBoYXZlIHNpZGUgZWZmZWN0cy4gKi8KLSAg ICB1aW50OF90IGZvcmNlX3dyaXRlYmFjazsKKyAgICAvKiBDYW5vbmljYWwgb3Bjb2RlIChzZWUg YmVsb3cpICh2YWxpZCBvbmx5IG9uIFg4NkVNVUxfT0tBWSkuICovCisgICAgdW5zaWduZWQgaW50 IG9wY29kZTsKIAogICAgIC8qIFJldGlyZW1lbnQgc3RhdGUsIHNldCBieSB0aGUgZW11bGF0b3Ig KHZhbGlkIG9ubHkgb24gWDg2RU1VTF9PS0FZKS4gKi8KICAgICB1bmlvbiB7CkBAIC00MzcsOSAr NDUyLDYgQEAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQKICAgICAgICAgfSBmbGFnczsKICAgICAg ICAgdWludDhfdCBieXRlOwogICAgIH0gcmV0aXJlOwotCi0gICAgLyogQ2FsbGVyIGRhdGEgdGhh dCBjYW4gYmUgdXNlZCBieSB4ODZfZW11bGF0ZV9vcHMnIHJvdXRpbmVzLiAqLwotICAgIHZvaWQg KmRhdGE7CiB9OwogCiAvKgotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK