From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 03/19] x86/emul: Simplfy emulation state setup Date: Mon, 28 Nov 2016 11:13:20 +0000 Message-ID: <1480331616-6165-4-git-send-email-andrew.cooper3@citrix.com> References: <1480331616-6165-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: <1480331616-6165-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 , Paul Durrant List-Id: xen-devel@lists.xenproject.org VGhlIGN1cnJlbnQgY29kZSB0byBzZXQgdXAgZW11bGF0aW9uIHN0YXRlIGlzIGFkLWhvYyBhbmQg ZXJyb3IgcHJvbmUuCgogKiBDb25zaXN0ZW50bHkgemVybyBhbGwgZW11bGF0aW9uIHN0YXRlIHN0 cnVjdHVyZXMuCiAqIEF2b2lkIGV4cGxpY2l0bHkgaW5pdGlhbGlzaW5nIHNvbWUgc3RhdGUgdG8g MC4KICogRXhwbGljaXRseSBpZGVudGlmeSBhbGwgaW5wdXQgYW5kIG91dHB1dCBzdGF0ZSBpbiB4 ODZfZW11bGF0ZV9jdHh0LiAgVGhpcwogICBpbnZvbHZlcyByZWFyYW5naW5nIHNvbWUgZmllbGRz LgogKiBIYXZlIHg4Nl9kZWNvZGUoKSBleHBsaWNpdGx5IGluaXRhbGlzZSBhbGwgb3V0cHV0IHN0 YXRlIGF0IGl0cyBzdGFydC4KCldoaWxlIG1ha2luZyB0aGUgYWJvdmUgY2hhbmdlcywgdHdvIG1p bm9yIHR3ZWFrczoKCiAqIE1vdmUgdGhlIGNhbGN1bGF0aW9uIG9mIGh2bWVtdWxfY3R4dC0+Y3R4 dC5zd2ludF9lbXVsYXRlIGZyb20KICAgX2h2bV9lbXVsYXRlX29uZSgpIHRvIGh2bV9lbXVsYXRl X2luaXRfb25jZSgpLiAgSXQgZG9lc24ndCBuZWVkCiAgIHJlY2FsY3VsYXRpbmcgZm9yIGVhY2gg aW5zdHJ1Y3Rpb24uCiAqIENoYW5nZSBmb3JjZV93cml0ZWJhY2sgdG8gYmVpbmcgYSBib29sZWFu LCB0byBtYXRjaCBpdHMgdXNlLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3 LmNvb3BlcjNAY2l0cml4LmNvbT4KQWNrZWQtYnk6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpS ZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KQ0M6IEdlb3Jn ZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KQ0M6IFBhdWwgRHVycmFudCA8 cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Cgp2MjoKICogU3BsaXQgeDg2X2VtdWxhdGVfY3R4dCBp bnRvIHRocmVlIHNlY3Rpb25zCi0tLQogeGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgICAgICAg ICAgICAgfCAyOCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvbW0u YyAgICAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKysrLS0tLS0tCiB4ZW4vYXJjaC94ODYv bW0vc2hhZG93L2NvbW1vbi5jICAgICAgICB8ICA0ICsrLS0KIHhlbi9hcmNoL3g4Ni94ODZfZW11 bGF0ZS94ODZfZW11bGF0ZS5jIHwgIDEgKwogeGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9l bXVsYXRlLmggfCAzMiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogNSBmaWxlcyBj aGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCmlu ZGV4IGYxZjZlMmYuLjNlZmVlYWQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0 ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCkBAIC0xNzcwLDEzICsxNzcwLDYg QEAgc3RhdGljIGludCBfaHZtX2VtdWxhdGVfb25lKHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0ICpo dm1lbXVsX2N0eHQsCiAKICAgICB2aW8tPm1taW9fcmV0cnkgPSAwOwogCi0gICAgaWYgKCBjcHVf aGFzX3ZteCApCi0gICAgICAgIGh2bWVtdWxfY3R4dC0+Y3R4dC5zd2ludF9lbXVsYXRlID0geDg2 X3N3aW50X2VtdWxhdGVfbm9uZTsKLSAgICBlbHNlIGlmICggY3B1X2hhc19zdm1fbnJpcHMgKQot ICAgICAgICBodm1lbXVsX2N0eHQtPmN0eHQuc3dpbnRfZW11bGF0ZSA9IHg4Nl9zd2ludF9lbXVs YXRlX2ljZWJwOwotICAgIGVsc2UKLSAgICAgICAgaHZtZW11bF9jdHh0LT5jdHh0LnN3aW50X2Vt dWxhdGUgPSB4ODZfc3dpbnRfZW11bGF0ZV9hbGw7Ci0KICAgICByYyA9IHg4Nl9lbXVsYXRlKCZo dm1lbXVsX2N0eHQtPmN0eHQsIG9wcyk7CiAKICAgICBpZiAoIHJjID09IFg4NkVNVUxfT0tBWSAm JiB2aW8tPm1taW9fcmV0cnkgKQpAQCAtMTk0NywxNCArMTk0MCwyMyBAQCB2b2lkIGh2bV9lbXVs YXRlX2luaXRfb25jZSgKICAgICBzdHJ1Y3QgaHZtX2VtdWxhdGVfY3R4dCAqaHZtZW11bF9jdHh0 LAogICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewotICAgIGh2bWVtdWxfY3R4dC0+ aW50cl9zaGFkb3cgPSBodm1fZnVuY3MuZ2V0X2ludGVycnVwdF9zaGFkb3coY3VycmVudCk7Ci0g ICAgaHZtZW11bF9jdHh0LT5jdHh0LnJlZ3MgPSByZWdzOwotICAgIGh2bWVtdWxfY3R4dC0+Y3R4 dC5mb3JjZV93cml0ZWJhY2sgPSAxOwotICAgIGh2bWVtdWxfY3R4dC0+c2VnX3JlZ19hY2Nlc3Nl ZCA9IDA7Ci0gICAgaHZtZW11bF9jdHh0LT5zZWdfcmVnX2RpcnR5ID0gMDsKLSAgICBodm1lbXVs X2N0eHQtPnNldF9jb250ZXh0ID0gMDsKKyAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7 CisKKyAgICBtZW1zZXQoaHZtZW11bF9jdHh0LCAwLCBzaXplb2YoKmh2bWVtdWxfY3R4dCkpOwor CisgICAgaHZtZW11bF9jdHh0LT5pbnRyX3NoYWRvdyA9IGh2bV9mdW5jcy5nZXRfaW50ZXJydXB0 X3NoYWRvdyhjdXJyKTsKICAgICBodm1lbXVsX2dldF9zZWdfcmVnKHg4Nl9zZWdfY3MsIGh2bWVt dWxfY3R4dCk7CiAgICAgaHZtZW11bF9nZXRfc2VnX3JlZyh4ODZfc2VnX3NzLCBodm1lbXVsX2N0 eHQpOworCisgICAgaHZtZW11bF9jdHh0LT5jdHh0LnJlZ3MgPSByZWdzOworICAgIGh2bWVtdWxf Y3R4dC0+Y3R4dC5mb3JjZV93cml0ZWJhY2sgPSB0cnVlOworCisgICAgaWYgKCBjcHVfaGFzX3Zt eCApCisgICAgICAgIGh2bWVtdWxfY3R4dC0+Y3R4dC5zd2ludF9lbXVsYXRlID0geDg2X3N3aW50 X2VtdWxhdGVfbm9uZTsKKyAgICBlbHNlIGlmICggY3B1X2hhc19zdm1fbnJpcHMgKQorICAgICAg ICBodm1lbXVsX2N0eHQtPmN0eHQuc3dpbnRfZW11bGF0ZSA9IHg4Nl9zd2ludF9lbXVsYXRlX2lj ZWJwOworICAgIGVsc2UKKyAgICAgICAgaHZtZW11bF9jdHh0LT5jdHh0LnN3aW50X2VtdWxhdGUg PSB4ODZfc3dpbnRfZW11bGF0ZV9hbGw7CiB9CiAKIHZvaWQgaHZtX2VtdWxhdGVfaW5pdF9wZXJf aW5zbigKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMK aW5kZXggNWIwZTlmMy4uZDM2NWY1OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysr IGIveGVuL2FyY2gveDg2L21tLmMKQEAgLTUzMzcsNyArNTMzNywxNCBAQCBpbnQgcHR3cl9kb19w YWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIsCiAgICAgc3RydWN0 IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwogICAg IGwxX3BnZW50cnlfdCAgICAgIHB0ZTsKLSAgICBzdHJ1Y3QgcHR3cl9lbXVsYXRlX2N0eHQgcHR3 cl9jdHh0OworICAgIHN0cnVjdCBwdHdyX2VtdWxhdGVfY3R4dCBwdHdyX2N0eHQgPSB7CisgICAg ICAgIC5jdHh0ID0geworICAgICAgICAgICAgLnJlZ3MgPSByZWdzLAorICAgICAgICAgICAgLmFk ZHJfc2l6ZSA9IGlzX3B2XzMyYml0X2RvbWFpbihkKSA/IDMyIDogQklUU19QRVJfTE9ORywKKyAg ICAgICAgICAgIC5zcF9zaXplICAgPSBpc19wdl8zMmJpdF9kb21haW4oZCkgPyAzMiA6IEJJVFNf UEVSX0xPTkcsCisgICAgICAgICAgICAuc3dpbnRfZW11bGF0ZSA9IHg4Nl9zd2ludF9lbXVsYXRl X25vbmUsCisgICAgICAgIH0sCisgICAgfTsKICAgICBpbnQgcmM7CiAKICAgICAvKiBBdHRlbXB0 IHRvIHJlYWQgdGhlIFBURSB0aGF0IG1hcHMgdGhlIFZBIGJlaW5nIGFjY2Vzc2VkLiAqLwpAQCAt NTM2MywxMSArNTM3MCw2IEBAIGludCBwdHdyX2RvX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYs IHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICAgICAgZ290byBiYWlsOwogICAgIH0KIAotICAgIHB0 d3JfY3R4dC5jdHh0LnJlZ3MgPSByZWdzOwotICAgIHB0d3JfY3R4dC5jdHh0LmZvcmNlX3dyaXRl YmFjayA9IDA7Ci0gICAgcHR3cl9jdHh0LmN0eHQuYWRkcl9zaXplID0gcHR3cl9jdHh0LmN0eHQu c3Bfc2l6ZSA9Ci0gICAgICAgIGlzX3B2XzMyYml0X2RvbWFpbihkKSA/IDMyIDogQklUU19QRVJf TE9ORzsKLSAgICBwdHdyX2N0eHQuY3R4dC5zd2ludF9lbXVsYXRlID0geDg2X3N3aW50X2VtdWxh dGVfbm9uZTsKICAgICBwdHdyX2N0eHQuY3IyID0gYWRkcjsKICAgICBwdHdyX2N0eHQucHRlID0g cHRlOwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jIGIveGVu L2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYwppbmRleCA3ZTViOGIwLi5hNGEzYzRiIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9tbS9zaGFkb3cvY29tbW9uLmMKQEAgLTM4NSw4ICszODUsOSBAQCBjb25zdCBzdHJ1Y3QgeDg2 X2VtdWxhdGVfb3BzICpzaGFkb3dfaW5pdF9lbXVsYXRpb24oCiAgICAgc3RydWN0IHZjcHUgKnYg PSBjdXJyZW50OwogICAgIHVuc2lnbmVkIGxvbmcgYWRkcjsKIAorICAgIG1lbXNldChzaF9jdHh0 LCAwLCBzaXplb2YoKnNoX2N0eHQpKTsKKwogICAgIHNoX2N0eHQtPmN0eHQucmVncyA9IHJlZ3M7 Ci0gICAgc2hfY3R4dC0+Y3R4dC5mb3JjZV93cml0ZWJhY2sgPSAwOwogICAgIHNoX2N0eHQtPmN0 eHQuc3dpbnRfZW11bGF0ZSA9IHg4Nl9zd2ludF9lbXVsYXRlX25vbmU7CiAKICAgICBpZiAoIGlz X3B2X3ZjcHUodikgKQpAQCAtMzk2LDcgKzM5Nyw2IEBAIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0 ZV9vcHMgKnNoYWRvd19pbml0X2VtdWxhdGlvbigKICAgICB9CiAKICAgICAvKiBTZWdtZW50IGNh Y2hlIGluaXRpYWxpc2F0aW9uLiBQcmltZWQgd2l0aCBDUy4gKi8KLSAgICBzaF9jdHh0LT52YWxp ZF9zZWdfcmVncyA9IDA7CiAgICAgY3JlZyA9IGh2bV9nZXRfc2VnX3JlZyh4ODZfc2VnX2NzLCBz aF9jdHh0KTsKIAogICAgIC8qIFdvcmsgb3V0IHRoZSBlbXVsYXRpb24gbW9kZS4gKi8KZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jIGIveGVuL2FyY2gv eDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKaW5kZXggZDgyZTg1ZC4uNTMyYmQzMiAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKKysrIGIveGVu L2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKQEAgLTE5MDQsNiArMTkwNCw3IEBA IHg4Nl9kZWNvZGUoCiAgICAgc3RhdGUtPnJlZ3MgPSBjdHh0LT5yZWdzOwogICAgIHN0YXRlLT5l aXAgPSBjdHh0LT5yZWdzLT5laXA7CiAKKyAgICAvKiBJbml0aWFsaXNlIG91dHB1dCBzdGF0ZSBp biB4ODZfZW11bGF0ZV9jdHh0ICovCiAgICAgY3R4dC0+cmV0aXJlLmJ5dGUgPSAwOwogCiAgICAg b3BfYnl0ZXMgPSBkZWZfb3BfYnl0ZXMgPSBhZF9ieXRlcyA9IGRlZl9hZF9ieXRlcyA9IGN0eHQt PmFkZHJfc2l6ZS84OwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9l bXVsYXRlLmggYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAppbmRleCBl YzgyNGNlLi5hYjU2NmMwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2 X2VtdWxhdGUuaAorKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaApA QCAtNDEwLDYgKzQxMCwyMyBAQCBzdHJ1Y3QgY3B1X3VzZXJfcmVnczsKIAogc3RydWN0IHg4Nl9l bXVsYXRlX2N0eHQKIHsKKyAgICAvKgorICAgICAqIElucHV0LW9ubHkgc3RhdGU6CisgICAgICov CisKKyAgICAvKiBTb2Z0d2FyZSBldmVudCBpbmplY3Rpb24gc3VwcG9ydC4gKi8KKyAgICBlbnVt IHg4Nl9zd2ludF9lbXVsYXRpb24gc3dpbnRfZW11bGF0ZTsKKworICAgIC8qIFNldCB0aGlzIGlm IHdyaXRlcyBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMuICovCisgICAgYm9vbCBmb3JjZV93cml0ZWJh Y2s7CisKKyAgICAvKiBDYWxsZXIgZGF0YSB0aGF0IGNhbiBiZSB1c2VkIGJ5IHg4Nl9lbXVsYXRl X29wcycgcm91dGluZXMuICovCisgICAgdm9pZCAqZGF0YTsKKworICAgIC8qCisgICAgICogSW5w dXQvb3V0cHV0IHN0YXRlOgorICAgICAqLworCiAgICAgLyogUmVnaXN0ZXIgc3RhdGUgYmVmb3Jl L2FmdGVyIGVtdWxhdGlvbi4gKi8KICAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVnczsKIApA QCAtNDE5LDE0ICs0MzYsMTIgQEAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQKICAgICAvKiBTdGFj ayBwb2ludGVyIHdpZHRoIGluIGJpdHMgKDE2LCAzMiBvciA2NCkuICovCiAgICAgdW5zaWduZWQg aW50IHNwX3NpemU7CiAKLSAgICAvKiBDYW5vbmljYWwgb3Bjb2RlIChzZWUgYmVsb3cpLiAqLwot ICAgIHVuc2lnbmVkIGludCBvcGNvZGU7Ci0KLSAgICAvKiBTb2Z0d2FyZSBldmVudCBpbmplY3Rp b24gc3VwcG9ydC4gKi8KLSAgICBlbnVtIHg4Nl9zd2ludF9lbXVsYXRpb24gc3dpbnRfZW11bGF0 ZTsKKyAgICAvKgorICAgICAqIE91dHB1dC1vbmx5IHN0YXRlOgorICAgICAqLwogCi0gICAgLyog U2V0IHRoaXMgaWYgd3JpdGVzIG1heSBoYXZlIHNpZGUgZWZmZWN0cy4gKi8KLSAgICB1aW50OF90 IGZvcmNlX3dyaXRlYmFjazsKKyAgICAvKiBDYW5vbmljYWwgb3Bjb2RlIChzZWUgYmVsb3cpICh2 YWxpZCBvbmx5IG9uIFg4NkVNVUxfT0tBWSkuICovCisgICAgdW5zaWduZWQgaW50IG9wY29kZTsK IAogICAgIC8qIFJldGlyZW1lbnQgc3RhdGUsIHNldCBieSB0aGUgZW11bGF0b3IgKHZhbGlkIG9u bHkgb24gWDg2RU1VTF9PS0FZKS4gKi8KICAgICB1bmlvbiB7CkBAIC00MzcsOSArNDUyLDYgQEAg c3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQKICAgICAgICAgfSBmbGFnczsKICAgICAgICAgdWludDhf dCBieXRlOwogICAgIH0gcmV0aXJlOwotCi0gICAgLyogQ2FsbGVyIGRhdGEgdGhhdCBjYW4gYmUg dXNlZCBieSB4ODZfZW11bGF0ZV9vcHMnIHJvdXRpbmVzLiAqLwotICAgIHZvaWQgKmRhdGE7CiB9 OwogCiAvKgotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK