From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 66/92] kvm: introspection: add custom input when single-stepping a vCPU Date: Fri, 9 Aug 2019 19:00:21 +0300 Message-ID: <20190809160047.8319-67-alazar@bitdefender.com> References: <20190809160047.8319-1-alazar@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809160047.8319-1-alazar@bitdefender.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: kvm@vger.kernel.org Cc: Tamas K Lengyel , Weijiang Yang , Yu C , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Jan Kiszka , =?UTF-8?q?Samuel=20Laur=C3=A9n?= , Konrad Rzeszutek Wilk , virtualization@lists.linux-foundation.org, =?UTF-8?q?Adalbert=20Laz=C4=83r?= , linux-mm@kvack.org, Patrick Colp , Mathieu Tarral , Stefan Hajnoczi , Paolo Bonzini , Zhang@mail.linuxfoundation.org, =?UTF-8?q?Mihai=20Don=C8=9Bu?= List-Id: virtualization@lists.linuxfoundation.org VGhlIGludHJvc3BlY3Rpb24gdG9vbCBjYW4gcmVzcG9uZCB0byBhIEtWTUlfRVZFTlRfUEYgZXZl bnQgd2l0aCBjdXN0b20KaW5wdXQgZm9yIHRoZSBjdXJyZW50IGluc3RydWN0aW9uLiBUaGlzIGlu cHV0IGlzIHVzZWQgdG8gdHJpY2sgdGhlIGd1ZXN0CnNvZnR3YXJlIGludG8gYmVsaWV2aW5nIGl0 IGhhcyByZWFkIGNlcnRhaW4gZGF0YSwgaW4gb3JkZXIgdG8gaGlkZSB0aGUKY29udGVudCBvZiBj ZXJ0YWluIG1lbW9yeSBhcmVhcyAoZWcuIGhpZGUgaW5qZWN0ZWQgY29kZSBmcm9tIGludGVncml0 eQpjaGVja2VycykuIFRoZXJlIGFyZSBjYXNlcyB3aGVuIHRoaXMgY2FuIGhhcHBlbiB3aGlsZSB0 aGUgdkNQVSBoYXMgdG8KYmUgc2luZ2xlIHN0ZXBwZWQsIEVpdGhlciB0aGUgY3VycmVudCBpbnN0 cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5CnRoZSBLVk0gZW11bGF0b3Igb3IgdGhlIGludHJv c3BlY3Rpb24gdG9vbCByZXF1ZXN0ZWQgc2luZ2xlLXN0ZXBwaW5nLgoKVGhpcyBwYXRjaCBzYXZl cyB0aGUgb2xkIGRhdGEsIHdyaXRlIHRoZSBjdXN0b20gaW5wdXQsIHN0YXJ0IHRoZSBzaW5nbGUK c3RlcHBpbmcgYW5kIHJlc3RvcmUgdGhlIG9sZCBkYXRhLgoKU2lnbmVkLW9mZi1ieTogQWRhbGJl cnQgTGF6xINyIDxhbGF6YXJAYml0ZGVmZW5kZXIuY29tPgotLS0KIHZpcnQva3ZtL2t2bWkuYyAg ICAgfCAxMTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHZp cnQva3ZtL2t2bWlfaW50LmggfCAgIDMgKysKIDIgZmlsZXMgY2hhbmdlZCwgMTIyIGluc2VydGlv bnMoKykKCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1pLmMgYi92aXJ0L2t2bS9rdm1pLmMKaW5k ZXggM2RmZWRmM2FlNzM5Li4wNmRjMjNmNDBkZWQgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWku YworKysgYi92aXJ0L2t2bS9rdm1pLmMKQEAgLTE2MTgsNiArMTYxOCwxMTYgQEAgaW50IGt2bWlf Y21kX3BhdXNlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHdhaXQpCiAJcmV0dXJu IDA7CiB9CiAKK3N0YXRpYyBpbnQgd3JpdGVfY3VzdG9tX2RhdGFfdG9fcGFnZShzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIGd2YV90IGd2YSwKKwkJCQkJdTggKmJhY2t1cCwgc2l6ZV90IGJ5dGVzKQor eworCXU4ICpwdHJfcGFnZSwgKnB0cjsKKwlzdHJ1Y3QgcGFnZSAqcGFnZTsKKwlncGFfdCBncGE7 CisKKwlncGEgPSBrdm1fbW11X2d2YV90b19ncGFfc3lzdGVtKHZjcHUsIGd2YSwgTlVMTCk7CisJ aWYgKGdwYSA9PSBVTk1BUFBFRF9HVkEpCisJCXJldHVybiAtS1ZNX0VJTlZBTDsKKworCXB0cl9w YWdlID0gZ2V0X3BhZ2VfcHRyKHZjcHUtPmt2bSwgZ3BhLCAmcGFnZSwgdHJ1ZSk7CisJaWYgKCFw dHJfcGFnZSkKKwkJcmV0dXJuIC1LVk1fRUlOVkFMOworCisJcHRyID0gcHRyX3BhZ2UgKyAoZ3Bh ICYgflBBR0VfTUFTSyk7CisKKwltZW1jcHkoYmFja3VwLCBwdHIsIGJ5dGVzKTsKKwl1c2VfY3Vz dG9tX2lucHV0KHZjcHUsIGd2YSwgcHRyLCBieXRlcyk7CisKKwlwdXRfcGFnZV9wdHIocHRyX3Bh Z2UsIHBhZ2UpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgd3JpdGVfY3VzdG9tX2Rh dGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXN0cnVjdCBrdm1pICppa3ZtID0gSUtWTSh2 Y3B1LT5rdm0pOworCXN0cnVjdCBrdm1pX3ZjcHUgKml2Y3B1ID0gSVZDUFUodmNwdSk7CisJc2l6 ZV90IGJ5dGVzID0gaXZjcHUtPmN0eF9zaXplOworCWd2YV90IGd2YSA9IGl2Y3B1LT5jdHhfYWRk cjsKKwl1OCAqYmFja3VwOworCisJaWYgKGlrdm0tPnNzX2N1c3RvbV9zaXplKQorCQlyZXR1cm4g MDsKKworCWlmICghYnl0ZXMpCisJCXJldHVybiAwOworCisJYmFja3VwID0gaWt2bS0+c3NfY3Vz dG9tX2RhdGE7CisKKwl3aGlsZSAoYnl0ZXMpIHsKKwkJc2l6ZV90IG9mZnNldCA9IGd2YSAmIH5Q QUdFX01BU0s7CisJCXNpemVfdCBjaHVuayA9IG1pbihieXRlcywgUEFHRV9TSVpFIC0gb2Zmc2V0 KTsKKworCQlpZiAod3JpdGVfY3VzdG9tX2RhdGFfdG9fcGFnZSh2Y3B1LCBndmEsIGJhY2t1cCwg Y2h1bmspKQorCQkJcmV0dXJuIC1LVk1fRUlOVkFMOworCisJCWJ5dGVzIC09IGNodW5rOworCQli YWNrdXAgKz0gY2h1bms7CisJCWd2YSArPSBjaHVuazsKKwkJaWt2bS0+c3NfY3VzdG9tX3NpemUg Kz0gY2h1bms7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmVzdG9yZV9iYWNr dXBfZGF0YV90b19wYWdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3ZhX3QgZ3ZhLAorCQkJCQl1 OCAqc3JjLCBzaXplX3QgYnl0ZXMpCit7CisJdTggKnB0cl9wYWdlLCAqcHRyOworCXN0cnVjdCBw YWdlICpwYWdlOworCWdwYV90IGdwYTsKKworCWdwYSA9IGt2bV9tbXVfZ3ZhX3RvX2dwYV9zeXN0 ZW0odmNwdSwgZ3ZhLCBOVUxMKTsKKwlpZiAoZ3BhID09IFVOTUFQUEVEX0dWQSkKKwkJcmV0dXJu IC1LVk1fRUlOVkFMOworCisJcHRyX3BhZ2UgPSBnZXRfcGFnZV9wdHIodmNwdS0+a3ZtLCBncGEs ICZwYWdlLCB0cnVlKTsKKwlpZiAoIXB0cl9wYWdlKQorCQlyZXR1cm4gLUtWTV9FSU5WQUw7CisK KwlwdHIgPSBwdHJfcGFnZSArIChncGEgJiB+UEFHRV9NQVNLKTsKKworCW1lbWNweShwdHIsIHNy YywgYnl0ZXMpOworCisJcHV0X3BhZ2VfcHRyKHB0cl9wYWdlLCBwYWdlKTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgdm9pZCByZXN0b3JlX2JhY2t1cF9kYXRhKHN0cnVjdCBrdm1fdmNwdSAq dmNwdSkKK3sKKwlzdHJ1Y3Qga3ZtaSAqaWt2bSA9IElLVk0odmNwdS0+a3ZtKTsKKwlzdHJ1Y3Qg a3ZtaV92Y3B1ICppdmNwdSA9IElWQ1BVKHZjcHUpOworCXNpemVfdCBieXRlcyA9IGlrdm0tPnNz X2N1c3RvbV9zaXplOworCWd2YV90IGd2YSA9IGl2Y3B1LT5jdHhfYWRkcjsKKwl1OCAqYmFja3Vw OworCisJaWYgKCFieXRlcykKKwkJcmV0dXJuOworCisJYmFja3VwID0gaWt2bS0+c3NfY3VzdG9t X2RhdGE7CisKKwl3aGlsZSAoYnl0ZXMpIHsKKwkJc2l6ZV90IG9mZnNldCA9IGd2YSAmIH5QQUdF X01BU0s7CisJCXNpemVfdCBjaHVuayA9IG1pbihieXRlcywgUEFHRV9TSVpFIC0gb2Zmc2V0KTsK KworCQlpZiAocmVzdG9yZV9iYWNrdXBfZGF0YV90b19wYWdlKHZjcHUsIGd2YSwgYmFja3VwLCBj aHVuaykpCisJCQlnb3RvIG91dDsKKworCQlieXRlcyAtPSBjaHVuazsKKwkJYmFja3VwICs9IGNo dW5rOworCQlndmEgKz0gY2h1bms7CisJfQorCitvdXQ6CisJaWt2bS0+c3NfY3VzdG9tX3NpemUg PSAwOworfQorCiB2b2lkIGt2bWlfc3RvcF9zcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiAJ c3RydWN0IGt2bWlfdmNwdSAqaXZjcHUgPSBJVkNQVSh2Y3B1KTsKQEAgLTE2NDIsNiArMTc1Miw4 IEBAIHZvaWQga3ZtaV9zdG9wX3NzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAogCWlrdm0tPnNz X2xldmVsID0gMDsKIAorCXJlc3RvcmVfYmFja3VwX2RhdGEodmNwdSk7CisKIAlrdm1pX2FyY2hf c3RvcF9zaW5nbGVfc3RlcCh2Y3B1KTsKIAogCWF0b21pY19zZXQoJmlrdm0tPnNzX2FjdGl2ZSwg ZmFsc2UpOwpAQCAtMTY3Niw2ICsxNzg4LDcgQEAgc3RhdGljIGJvb2wga3ZtaV9hY3F1aXJlX3Nz KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJCQkJCUtWTV9SRVFVRVNUX1dBSVQpOwogCiAJaXZj cHUtPnNzX293bmVyID0gdHJ1ZTsKKwlpa3ZtLT5zc19jdXN0b21fc2l6ZSA9IDA7CiAKIAlyZXR1 cm4gdHJ1ZTsKIH0KQEAgLTE2OTAsNiArMTgwMywxMiBAQCBzdGF0aWMgYm9vbCBrdm1pX3J1bl9z cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgdTggYWNjZXNzKQogCiAJa3ZtaV9h cmNoX3N0YXJ0X3NpbmdsZV9zdGVwKHZjcHUpOwogCisJZXJyID0gd3JpdGVfY3VzdG9tX2RhdGEo dmNwdSk7CisJaWYgKGVycikgeworCQlrdm1pX2Vycihpa3ZtLCAid3JpdGluZyBjdXN0b20gZGF0 YSBmYWlsZWQsIGVyciAlZFxuIiwgZXJyKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCWVyciA9 IGt2bWlfZ2V0X2dmbl9hY2Nlc3MoaWt2bSwgZ2ZuLCAmb2xkX2FjY2VzcywgJm9sZF93cml0ZV9i aXRtYXApOwogCS8qIGxpa2VseSB3YXMgcmVtb3ZlZCBmcm9tIHJhZGl4IHRyZWUgZHVlIHRvIHJ3 eCAqLwogCWlmIChlcnIpIHsKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bWlfaW50LmggYi92aXJ0 L2t2bS9rdm1pX2ludC5oCmluZGV4IDE1NTBmZTMzZWQ0OC4uNTQ4NTUyOWRiMDZiIDEwMDY0NAot LS0gYS92aXJ0L2t2bS9rdm1pX2ludC5oCisrKyBiL3ZpcnQva3ZtL2t2bWlfaW50LmgKQEAgLTE2 MCw2ICsxNjAsOSBAQCBzdHJ1Y3Qga3ZtaSB7CiAJCXU4IG9sZF9hY2Nlc3M7CiAJCXUzMiBvbGRf d3JpdGVfYml0bWFwOwogCX0gc3NfY29udGV4dFtTSU5HTEVfU1RFUF9NQVhfREVQVEhdOworCXU4 IHNzX2N1c3RvbV9kYXRhW0tWTUlfQ1RYX0RBVEFfU0laRV07CisJc2l6ZV90IHNzX2N1c3RvbV9z aXplOworCWdwYV90IHNzX2N1c3RvbV9hZGRyOwogCXU4IHNzX2xldmVsOwogCWF0b21pY190IHNz X2FjdGl2ZTsKIApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgt Zm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4v bGlzdGluZm8vdmlydHVhbGl6YXRpb24=