From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v4 11/24] x86/emul: Implement singlestep as a retire flag Date: Thu, 1 Dec 2016 16:55:59 +0000 Message-ID: <1480611361-15294-4-git-send-email-andrew.cooper3@citrix.com> References: <1480611361-15294-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: <1480611361-15294-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 , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhlIGJlaGF2aW91ciBvZiBzaW5nbGVzdGVwIGlzIHRvIHJhaXNlICNEQiBhZnRlciB0aGUgaW5z dHJ1Y3Rpb24gaGFzIGJlZW4KY29tcGxldGVkLCBidXQgaW1wbGVtZW50aW5nIGl0IHdpdGggaW5q ZWN0X2h3X2V4Y2VwdGlvbigpIGNhdXNlcyB4ODZfZW11bGF0ZSgpCnRvIHJldHVybiBYODZFTVVM X0VYQ0VQVElPTiwgZGVzcGl0ZSBzdWNjZXNmdWxseSBjb21wbGV0aW5nIGV4ZWN1dGlvbiBvZiB0 aGUKaW5zdHJ1Y3Rpb24sIGluY2x1ZGluZyByZWdpc3RlciB3cml0ZWJhY2suCgpJbnN0ZWFkLCB1 c2UgYSByZXRpcmUgZmxhZyB0byBpbmRpY2F0ZSBzaW5nbGVzdGVwLCB3aGljaCBjYXVzZXMgeDg2 X2VtdWxhdGUoKQp0byByZXR1cm4gWDg2RU1VTF9PS0FZLgoKVXBkYXRlIGFsbCBjYWxsZXJzIG9m IHg4Nl9lbXVsYXRlKCkgdG8gdXNlIHRoZSBuZXcgcmV0aXJlIGZsYWcuICBUaGlzIGZpeGVzCnRo ZSBiZWhhdmlvdXIgb2Ygc2luZ2xlc3RlcCBmb3Igc2hhZG93IHBhZ2V0YWJsZSB1cGRhdGVzIGFu ZCBtbWNmZy9tbWlvX3JvCmludGVyY2VwdHMsIHdoaWNoIHByZXZpb3VzbHkgZGlzY2FyZGVkIHRo ZSBleGNlcHRpb24uCgpXaXRoIHRoaXMgY2hhbmdlLCBhbGwgdXNlcyBvZiBYODZFTVVMX0VYQ0VQ VElPTiBmcm9tIHg4Nl9lbXVsYXRlKCkgYXJlCmJlbGlldmVkIHRvIGhhdmUgc3RyaWN0bHkgZmF1 bHQgc2VtYW50aWNzLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNp dHJpeC5jb20+CkFja2VkLWJ5OiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KLS0tCkNDOiBKYW4g QmV1bGljaCA8SkJldWxpY2hAc3VzZS5jb20+Cgp2NDoKICogcy9pc19odm1fdmNwdS9oYXNfaHZt X2NvbnRhaW5lcl9kb21haW4vCiAqIEFkanVzdCBjb21tZW50cyBhbmQgZW50cnkgY29uZGl0aW9u IGludG8gdGhlIFBBRSBzZWNvbmQtaGFsZiBjYXNlLgp2MzoKICogTmV3Ci0tLQogeGVuL2FyY2gv eDg2L2h2bS9lbXVsYXRlLmMgICAgICAgICAgICAgfCAgMyArKysKIHhlbi9hcmNoL3g4Ni9tbS5j ICAgICAgICAgICAgICAgICAgICAgIHwgMTEgKysrKysrKysrKy0KIHhlbi9hcmNoL3g4Ni9tbS9z aGFkb3cvbXVsdGkuYyAgICAgICAgIHwgMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLQogeGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgfCAgOSArKysrLS0t LS0KIHhlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oIHwgIDYgKysrKysrCiA1 IGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jIGIveGVuL2FyY2gveDg2L2h2bS9lbXVs YXRlLmMKaW5kZXggZmU2MjUwMC4uOTFjNzlmYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2 bS9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKQEAgLTE3ODgsNiAr MTc4OCw5IEBAIHN0YXRpYyBpbnQgX2h2bV9lbXVsYXRlX29uZShzdHJ1Y3QgaHZtX2VtdWxhdGVf Y3R4dCAqaHZtZW11bF9jdHh0LAogICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKICAgICAg ICAgcmV0dXJuIHJjOwogCisgICAgaWYgKCBodm1lbXVsX2N0eHQtPmN0eHQucmV0aXJlLnNpbmds ZXN0ZXAgKQorICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2RlYnVnLCBYODZf RVZFTlRfTk9fRUMpOworCiAgICAgbmV3X2ludHJfc2hhZG93ID0gaHZtZW11bF9jdHh0LT5pbnRy X3NoYWRvdzsKIAogICAgIC8qIE1PVi1TUyBpbnN0cnVjdGlvbiB0b2dnbGVzIE1PVi1TUyBzaGFk b3csIGVsc2Ugd2UganVzdCBjbGVhciBpdC4gKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9t bS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggYjdjNzEyMi4uMjMxYzdiZiAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gveDg2L21tLmMKQEAgLTUzODIsNiAr NTM4Miw5IEBAIGludCBwdHdyX2RvX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVk IGxvbmcgYWRkciwKICAgICBpZiAoIHJjID09IFg4NkVNVUxfVU5IQU5ETEVBQkxFICkKICAgICAg ICAgZ290byBiYWlsOwogCisgICAgaWYgKCBwdHdyX2N0eHQuY3R4dC5yZXRpcmUuc2luZ2xlc3Rl cCApCisgICAgICAgIHB2X2luamVjdF9od19leGNlcHRpb24oVFJBUF9kZWJ1ZywgWDg2X0VWRU5U X05PX0VDKTsKKwogICAgIHBlcmZjX2luY3IocHR3cl9lbXVsYXRpb25zKTsKICAgICByZXR1cm4g RVhDUkVUX2ZhdWx0X2ZpeGVkOwogCkBAIC01NTAzLDcgKzU1MDYsMTMgQEAgaW50IG1taW9fcm9f ZG9fcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBhZGRyLAogICAgIGVs c2UKICAgICAgICAgcmMgPSB4ODZfZW11bGF0ZSgmY3R4dCwgJm1taW9fcm9fZW11bGF0ZV9vcHMp OwogCi0gICAgcmV0dXJuIHJjICE9IFg4NkVNVUxfVU5IQU5ETEVBQkxFID8gRVhDUkVUX2ZhdWx0 X2ZpeGVkIDogMDsKKyAgICBpZiAoIHJjID09IFg4NkVNVUxfVU5IQU5ETEVBQkxFICkKKyAgICAg ICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIGN0eHQucmV0aXJlLnNpbmdsZXN0ZXAgKQorICAgICAg ICBwdl9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZGVidWcsIFg4Nl9FVkVOVF9OT19FQyk7CisK KyAgICByZXR1cm4gRVhDUkVUX2ZhdWx0X2ZpeGVkOwogfQogCiB2b2lkICphbGxvY194ZW5fcGFn ZXRhYmxlKHZvaWQpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMg Yi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKaW5kZXggOWVlNDhhOC4uZWFjMjMzMCAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCisrKyBiL3hlbi9hcmNo L3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwpAQCAtMzQyMiwxOCArMzQyMiwzNiBAQCBzdGF0aWMgaW50 IHNoX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYsCiAgICAgICAgIHYtPmFyY2gucGFnaW5nLmxh c3Rfd3JpdGVfZW11bF9vayA9IDA7CiAjZW5kaWYKIAorICAgIGlmICggZW11bF9jdHh0LmN0eHQu cmV0aXJlLnNpbmdsZXN0ZXAgKQorICAgIHsKKyAgICAgICAgaWYgKCBoYXNfaHZtX2NvbnRhaW5l cl9kb21haW4oZCkgKQorICAgICAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9k ZWJ1ZywgWDg2X0VWRU5UX05PX0VDKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHZfaW5q ZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2RlYnVnLCBYODZfRVZFTlRfTk9fRUMpOworICAgIH0KKwog I2lmIEdVRVNUX1BBR0lOR19MRVZFTFMgPT0gMyAvKiBQQUUgZ3Vlc3QgKi8KLSAgICBpZiAoIHIg PT0gWDg2RU1VTF9PS0FZICkgeworICAgIC8qCisgICAgICogSWYgdGhlcmUgYXJlIG5vIHBlbmRp bmcgYWN0aW9ucywgZW11bGF0ZSB1cCB0byBmb3VyIGV4dHJhIGluc3RydWN0aW9ucworICAgICAq IGluIHRoZSBob3BlIG9mIGNhdGNoaW5nIHRoZSAic2Vjb25kIGhhbGYiIG9mIGEgNjQtYml0IHBh Z2V0YWJsZSB3cml0ZS4KKyAgICAgKi8KKyAgICBpZiAoIHIgPT0gWDg2RU1VTF9PS0FZICYmICFl bXVsX2N0eHQuY3R4dC5yZXRpcmUucmF3ICkKKyAgICB7CiAgICAgICAgIGludCBpLCBlbXVsYXRp b25fY291bnQ9MDsKICAgICAgICAgdGhpc19jcHUodHJhY2VfZW11bGF0ZV9pbml0aWFsX3ZhKSA9 IHZhOwotICAgICAgICAvKiBFbXVsYXRlIHVwIHRvIGZvdXIgZXh0cmEgaW5zdHJ1Y3Rpb25zIGlu IHRoZSBob3BlIG9mIGNhdGNoaW5nCi0gICAgICAgICAqIHRoZSAic2Vjb25kIGhhbGYiIG9mIGEg NjQtYml0IHBhZ2V0YWJsZSB3cml0ZS4gKi8KKwogICAgICAgICBmb3IgKCBpID0gMCA7IGkgPCA0 IDsgaSsrICkKICAgICAgICAgewogICAgICAgICAgICAgc2hhZG93X2NvbnRpbnVlX2VtdWxhdGlv bigmZW11bF9jdHh0LCByZWdzKTsKICAgICAgICAgICAgIHYtPmFyY2gucGFnaW5nLmxhc3Rfd3Jp dGVfd2FzX3B0ID0gMDsKICAgICAgICAgICAgIHIgPSB4ODZfZW11bGF0ZSgmZW11bF9jdHh0LmN0 eHQsIGVtdWxfb3BzKTsKLSAgICAgICAgICAgIGlmICggciA9PSBYODZFTVVMX09LQVkgKQorCisg ICAgICAgICAgICAvKgorICAgICAgICAgICAgICogT25seSBjb250aW51ZSB0aGUgc2VhcmNoIGZv ciB0aGUgc2Vjb25kIGhhbGYgaWYgdGhlcmUgYXJlIG5vCisgICAgICAgICAgICAgKiBleGNlcHRp b25zIG9yIHBlbmRpbmcgYWN0aW9ucy4gIE90aGVyd2lzZSwgZ2l2ZSB1cCBhbmQgcmUtZW50ZXIK KyAgICAgICAgICAgICAqIHRoZSBndWVzdC4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAg aWYgKCByID09IFg4NkVNVUxfT0tBWSAmJiAhZW11bF9jdHh0LmN0eHQucmV0aXJlLnJhdyApCiAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZW11bGF0aW9uX2NvdW50Kys7CiAgICAgICAg ICAgICAgICAgaWYgKCB2LT5hcmNoLnBhZ2luZy5sYXN0X3dyaXRlX3dhc19wdCApCkBAIC0zNDQ5 LDYgKzM0NjcsMTUgQEAgc3RhdGljIGludCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAog ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHBlcmZjX2luY3Ioc2hhZG93X2VtX2V4X2Zh aWwpOwogICAgICAgICAgICAgICAgIFRSQUNFX1NIQURPV19QQVRIX0ZMQUcoVFJDRV9TRkxBR19F TVVMQVRJT05fTEFTVF9GQUlMRUQpOworCisgICAgICAgICAgICAgICAgaWYgKCBlbXVsX2N0eHQu Y3R4dC5yZXRpcmUuc2luZ2xlc3RlcCApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgICBpZiAoIGhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSApCisgICAgICAgICAgICAg ICAgICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2RlYnVnLCBYODZfRVZFTlRf Tk9fRUMpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg ICBwdl9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZGVidWcsIFg4Nl9FVkVOVF9OT19FQyk7Cisg ICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIERvbid0IGVtdWxh dGUgYWdhaW4gaWYgd2UgZmFpbGVkISAqLwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYyBiL3hlbi9hcmNo L3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCmluZGV4IGZhOGQ5OGYuLjdiYzFjZDkgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCisrKyBiL3hl bi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCkBAIC0yNDE1LDcgKzI0MTUsNiBA QCB4ODZfZW11bGF0ZSgKICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfc3RhdGUgc3RhdGU7CiAgICAg aW50IHJjOwogICAgIHVpbnQ4X3QgYiwgZDsKLSAgICBib29sIHRmID0gY3R4dC0+cmVncy0+ZWZs YWdzICYgRUZMR19URjsKICAgICBzdHJ1Y3Qgb3BlcmFuZCBzcmMgPSB7IC5yZWcgPSBQVFJfUE9J U09OIH07CiAgICAgc3RydWN0IG9wZXJhbmQgZHN0ID0geyAucmVnID0gUFRSX1BPSVNPTiB9Owog ICAgIGVudW0geDg2X3N3aW50X3R5cGUgc3dpbnRfdHlwZTsKQEAgLTU0MTMsMTEgKzU0MTIsMTEg QEAgeDg2X2VtdWxhdGUoCiAgICAgaWYgKCAhbW9kZV82NGJpdCgpICkKICAgICAgICAgX3JlZ3Mu ZWlwID0gKHVpbnQzMl90KV9yZWdzLmVpcDsKIAotICAgICpjdHh0LT5yZWdzID0gX3JlZ3M7Cisg ICAgLyogV2FzIHNpbmdlc3RlcHBpbmcgYWN0aXZlIGF0IHRoZSBzdGFydCBvZiB0aGlzIGluc3Ry dWN0aW9uPyAqLworICAgIGlmICggKHJjID09IFg4NkVNVUxfT0tBWSkgJiYgKGN0eHQtPnJlZ3Mt PmVmbGFncyAmIEVGTEdfVEYpICkKKyAgICAgICAgY3R4dC0+cmV0aXJlLnNpbmdsZXN0ZXAgPSB0 cnVlOwogCi0gICAgLyogSW5qZWN0ICNEQiBpZiBzaW5nbGUtc3RlcCB0cmFjaW5nIHdhcyBlbmFi bGVkIGF0IGluc3RydWN0aW9uIHN0YXJ0LiAqLwotICAgIGlmICggdGYgJiYgKHJjID09IFg4NkVN VUxfT0tBWSkgJiYgb3BzLT5pbmplY3RfaHdfZXhjZXB0aW9uICkKLSAgICAgICAgcmMgPSBvcHMt PmluamVjdF9od19leGNlcHRpb24oRVhDX0RCLCAtMSwgY3R4dCkgPyA6IFg4NkVNVUxfRVhDRVBU SU9OOworICAgICpjdHh0LT5yZWdzID0gX3JlZ3M7CiAKICBkb25lOgogICAgIF9wdXRfZnB1KCk7 CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaCBiL3hl bi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCmluZGV4IGY0YmNmMzYuLjVhNGY5 YjcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCisr KyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCkBAIC00ODMsNiArNDgz LDcgQEAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQKICAgICAgICAgICAgIGJvb2wgaGx0OjE7ICAg ICAgICAgIC8qIEluc3RydWN0aW9uIEhMVGVkLiAqLwogICAgICAgICAgICAgYm9vbCBtb3Zfc3M6 MTsgICAgICAgLyogSW5zdHJ1Y3Rpb24gc2V0cyBNT1YtU1MgaXJxIHNoYWRvdy4gKi8KICAgICAg ICAgICAgIGJvb2wgc3RpOjE7ICAgICAgICAgIC8qIEluc3RydWN0aW9uIHNldHMgU1RJIGlycSBz aGFkb3cuICovCisgICAgICAgICAgICBib29sIHNpbmdsZXN0ZXA6MTsgICAvKiBTaW5nbGVzdGVw cGluZyB3YXMgYWN0aXZlLiAqLwogICAgICAgICB9OwogICAgIH0gcmV0aXJlOwogfTsKQEAgLTU3 MiwxMiArNTczLDE3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHg4Nl9lbXVsYXRlX3dyYXBwZXIoCiAg ICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsCiAgICAgY29uc3Qgc3RydWN0IHg4Nl9l bXVsYXRlX29wcyAqb3BzKQogeworICAgIHVuc2lnbmVkIGxvbmcgb3JpZ19laXAgPSBjdHh0LT5y ZWdzLT5laXA7CiAgICAgaW50IHJjID0geDg2X2VtdWxhdGUoY3R4dCwgb3BzKTsKIAogICAgIC8q IFJldGlyZSBmbGFncyBzaG91bGQgb25seSBiZSBzZXQgZm9yIHN1Y2Nlc3NmdWwgaW5zdHJ1Y3Rp b24gZW11bGF0aW9uLiAqLwogICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAg QVNTRVJUKGN0eHQtPnJldGlyZS5yYXcgPT0gMCk7CiAKKyAgICAvKiBBbGwgY2FzZXMgcmV0dXJu aW5nIFg4NkVNVUxfRVhDRVBUSU9OIHNob3VsZCBoYXZlIGZhdWx0IHNlbWFudGljcy4gKi8KKyAg ICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICkKKyAgICAgICAgQVNTRVJUKGN0eHQtPnJl Z3MtPmVpcCA9PSBvcmlnX2VpcCk7CisKICAgICByZXR1cm4gcmM7CiB9CiAKLS0gCjIuMS40CgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==