From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 50/92] kvm: introspection: add KVMI_GET_REGISTERS Date: Fri, 9 Aug 2019 19:00:05 +0300 Message-ID: <20190809160047.8319-51-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 RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhpcyBjb21tYW5k IGlzIHVzZWQgdG8gZ2V0IGt2bV9yZWdzIGFuZCBrdm1fc3JlZ3Mgc3RydWN0dXJlcywKcGx1cyB0 aGUgbGlzdCBvZiBzdHJ1Y3Qga3ZtX21zcnMuCgpTaWduZWQtb2ZmLWJ5OiBNaWhhaSBEb27Im3Ug PG1kb250dUBiaXRkZWZlbmRlci5jb20+CkNvLWRldmVsb3BlZC1ieTogQWRhbGJlcnQgTGF6xINy IDxhbGF6YXJAYml0ZGVmZW5kZXIuY29tPgpTaWduZWQtb2ZmLWJ5OiBBZGFsYmVydCBMYXrEg3Ig PGFsYXphckBiaXRkZWZlbmRlci5jb20+Ci0tLQogRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9r dm1pLnJzdCB8IDQzICsrKysrKysrKysrKysrKysKIGFyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20v a3ZtaS5oICAgfCAxNSArKysrKysKIGFyY2gveDg2L2t2bS9rdm1pLmMgICAgICAgICAgICAgICAg fCA3OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHZpcnQva3ZtL2t2bWlfaW50Lmgg ICAgICAgICAgICAgICAgfCAgNSArKwogdmlydC9rdm0va3ZtaV9tc2cuYyAgICAgICAgICAgICAg ICB8IDE3ICsrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMTU4IGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2t2bWkucnN0IGIvRG9jdW1lbnRhdGlv bi92aXJ0dWFsL2t2bS9rdm1pLnJzdAppbmRleCA1NThkM2ViNjAwN2YuLmVkZjgxZTAzY2EzYyAx MDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdAorKysgYi9Eb2N1 bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2t2bWkucnN0CkBAIC04NjIsNiArODYyLDQ5IEBAIFRoZSBp bnRyb3NwZWN0aW9uIHRvb2wgc2hvdWxkIHVzZSAqS1ZNSV9DT05UUk9MX1ZNX0VWRU5UUyogdG8g ZW5hYmxlIHRoZQogKiAtS1ZNX0VCVVNZICAtIHRoZSBzZWxlY3RlZCB2Q1BVIGhhcyB0b28gbWFu eSBxdWV1ZWQgKktWTUlfRVZFTlRfUEFVU0VfVkNQVSogZXZlbnRzCiAqIC1LVk1fRVBFUk0gIC0g dGhlICpLVk1JX0VWRU5UX1BBVVNFX1ZDUFUqIGV2ZW50IGlzIGRpc2FsbG93ZWQgKHNlZSAqS1ZN SV9DT05UUk9MX0VWRU5UUyopCiAJCWFuZCB0aGUgaW50cm9zcGVjdGlvbiB0b29sIGV4cGVjdHMg YSByZXBseS4KKworMTcuIEtWTUlfR0VUX1JFR0lTVEVSUworLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorCis6QXJjaGl0ZWN0dXJlczogeDg2Cis6VmVyc2lvbnM6ID49IDEKKzpQYXJhbWV0ZXJzOgor Cis6OgorCisJc3RydWN0IGt2bWlfdmNwdV9oZHI7CisJc3RydWN0IGt2bWlfZ2V0X3JlZ2lzdGVy cyB7CisJCV9fdTE2IG5tc3JzOworCQlfX3UxNiBwYWRkaW5nMTsKKwkJX191MzIgcGFkZGluZzI7 CisJCV9fdTMyIG1zcnNfaWR4WzBdOworCX07CisKKzpSZXR1cm5zOgorCis6OgorCisJc3RydWN0 IGt2bWlfZXJyb3JfY29kZTsKKwlzdHJ1Y3Qga3ZtaV9nZXRfcmVnaXN0ZXJzX3JlcGx5IHsKKwkJ X191MzIgbW9kZTsKKwkJX191MzIgcGFkZGluZzsKKwkJc3RydWN0IGt2bV9yZWdzIHJlZ3M7CisJ CXN0cnVjdCBrdm1fc3JlZ3Mgc3JlZ3M7CisJCXN0cnVjdCBrdm1fbXNycyBtc3JzOworCX07CisK K0ZvciB0aGUgZ2l2ZW4gdkNQVSBhbmQgdGhlIGBgbm1zcnNgYCBzaXplZCBhcnJheSBvZiBNU1Jz IHJlZ2lzdGVycywKK3JldHVybnMgdGhlIGN1cnJlbnQgdkNQVSBtb2RlIChpbiBieXRlczogMiwg NCBvciA4KSwgdGhlIGdlbmVyYWwgcHVycG9zZQorcmVnaXN0ZXJzLCB0aGUgc3BlY2lhbCByZWdp c3RlcnMgYW5kIHRoZSByZXF1ZXN0ZWQgc2V0IG9mIE1TUnMuCisKKzpFcnJvcnM6CisKKyogLUtW TV9FSU5WQUwgLSB0aGUgc2VsZWN0ZWQgdkNQVSBpcyBpbnZhbGlkCisqIC1LVk1fRUlOVkFMIC0g b25lIG9mIHRoZSBpbmRpY2F0ZWQgTVNSLXMgaXMgaW52YWxpZAorKiAtS1ZNX0VJTlZBTCAtIHBh ZGRpbmcgaXMgbm90IHplcm8KKyogLUtWTV9FQUdBSU4gLSB0aGUgc2VsZWN0ZWQgdkNQVSBjYW4n dCBiZSBpbnRyb3NwZWN0ZWQgeWV0CisqIC1LVk1fRU5PTUVNIC0gbm90IGVub3VnaCBtZW1vcnkg dG8gYWxsb2NhdGUgdGhlIHJlcGx5CisKIEV2ZW50cwogPT09PT09CiAKZGlmZiAtLWdpdCBhL2Fy Y2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oIGIvYXJjaC94ODYvaW5jbHVkZS91YXBpL2Fz bS9rdm1pLmgKaW5kZXggNTUxZjllZDFlZDljLi45OGZiMjdlMTI3M2MgMTAwNjQ0Ci0tLSBhL2Fy Y2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvdWFw aS9hc20va3ZtaS5oCkBAIC0yNiw0ICsyNiwxOSBAQCBzdHJ1Y3Qga3ZtaV9ldmVudF9hcmNoIHsK IAl9IG1zcnM7CiB9OwogCitzdHJ1Y3Qga3ZtaV9nZXRfcmVnaXN0ZXJzIHsKKwlfX3UxNiBubXNy czsKKwlfX3UxNiBwYWRkaW5nMTsKKwlfX3UzMiBwYWRkaW5nMjsKKwlfX3UzMiBtc3JzX2lkeFsw XTsKK307CisKK3N0cnVjdCBrdm1pX2dldF9yZWdpc3RlcnNfcmVwbHkgeworCV9fdTMyIG1vZGU7 CisJX191MzIgcGFkZGluZzsKKwlzdHJ1Y3Qga3ZtX3JlZ3MgcmVnczsKKwlzdHJ1Y3Qga3ZtX3Ny ZWdzIHNyZWdzOworCXN0cnVjdCBrdm1fbXNycyBtc3JzOworfTsKKwogI2VuZGlmIC8qIF9VQVBJ X0FTTV9YODZfS1ZNSV9IICovCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0va3ZtaS5jIGIvYXJj aC94ODYva3ZtL2t2bWkuYwppbmRleCBmYTI5MGZiZjFmNzUuLmE3ODc3MWIyMWQyZiAxMDA2NDQK LS0tIGEvYXJjaC94ODYva3ZtL2t2bWkuYworKysgYi9hcmNoL3g4Ni9rdm0va3ZtaS5jCkBAIC03 LDYgKzcsMjUgQEAKICNpbmNsdWRlICJ4ODYuaCIKICNpbmNsdWRlICIuLi8uLi8uLi92aXJ0L2t2 bS9rdm1pX2ludC5oIgogCitzdGF0aWMgdm9pZCAqYWxsb2NfZ2V0X3JlZ2lzdGVyc19yZXBseShj b25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICptc2csCisJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBr dm1pX2dldF9yZWdpc3RlcnMgKnJlcSwKKwkJCQkgICAgICAgc2l6ZV90ICpycGxfc2l6ZSkKK3sK KwlzdHJ1Y3Qga3ZtaV9nZXRfcmVnaXN0ZXJzX3JlcGx5ICpycGw7CisJdTE2IGssIG4gPSByZXEt Pm5tc3JzOworCisJKnJwbF9zaXplID0gc2l6ZW9mKCpycGwpICsgc2l6ZW9mKHJwbC0+bXNycy5l bnRyaWVzWzBdKSAqIG47CisJcnBsID0ga3ZtaV9tc2dfYWxsb2NfY2hlY2soKnJwbF9zaXplKTsK KwlpZiAocnBsKSB7CisJCXJwbC0+bXNycy5ubXNycyA9IG47CisKKwkJZm9yIChrID0gMDsgayA8 IG47IGsrKykKKwkJCXJwbC0+bXNycy5lbnRyaWVzW2tdLmluZGV4ID0gcmVxLT5tc3JzX2lkeFtr XTsKKwl9CisKKwlyZXR1cm4gcnBsOworfQorCiAvKgogICogVE9ETzogdGhpcyBjYW4gYmUgZG9u ZSBmcm9tIHVzZXJzcGFjZS4KICAqICAgLSBhbGwgdGhlc2UgcmVnaXN0ZXJzIGFyZSBzZW50IHdp dGggc3RydWN0IGt2bWlfZXZlbnRfYXJjaApAQCAtMzgsNiArNTcsNjUgQEAgc3RhdGljIHVuc2ln bmVkIGludCBrdm1pX3ZjcHVfbW9kZShjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJcmV0 dXJuIG1vZGU7CiB9CiAKK3N0YXRpYyBpbnQga3ZtaV9nZXRfcmVnaXN0ZXJzKHN0cnVjdCBrdm1f dmNwdSAqdmNwdSwgdTMyICptb2RlLAorCQkJICAgICAgc3RydWN0IGt2bV9yZWdzICpyZWdzLAor CQkJICAgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MsCisJCQkgICAgICBzdHJ1Y3Qga3ZtX21z cnMgKm1zcnMpCit7CisJc3RydWN0IGt2bV9tc3JfZW50cnkgKm1zciA9IG1zcnMtPmVudHJpZXM7 CisJc3RydWN0IGt2bV9tc3JfZW50cnkgKmVuZCA9IG1zcnMtPmVudHJpZXMgKyBtc3JzLT5ubXNy czsKKworCWt2bV9hcmNoX3ZjcHVfZ2V0X3JlZ3ModmNwdSwgcmVncyk7CisJa3ZtX2FyY2hfdmNw dV9nZXRfc3JlZ3ModmNwdSwgc3JlZ3MpOworCSptb2RlID0ga3ZtaV92Y3B1X21vZGUodmNwdSwg c3JlZ3MpOworCisJZm9yICg7IG1zciA8IGVuZDsgbXNyKyspIHsKKwkJc3RydWN0IG1zcl9kYXRh IG0gPSB7CisJCQkuaW5kZXggPSBtc3ItPmluZGV4LAorCQkJLmhvc3RfaW5pdGlhdGVkID0gdHJ1 ZQorCQl9OworCQlpbnQgZXJyID0ga3ZtX2dldF9tc3IodmNwdSwgJm0pOworCisJCWlmIChlcnIp CisJCQlyZXR1cm4gLUtWTV9FSU5WQUw7CisKKwkJbXNyLT5kYXRhID0gbS5kYXRhOworCX0KKwor CXJldHVybiAwOworfQorCitpbnQga3ZtaV9hcmNoX2NtZF9nZXRfcmVnaXN0ZXJzKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSwKKwkJCQljb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICptc2csCisJCQkJ Y29uc3Qgc3RydWN0IGt2bWlfZ2V0X3JlZ2lzdGVycyAqcmVxLAorCQkJCXN0cnVjdCBrdm1pX2dl dF9yZWdpc3RlcnNfcmVwbHkgKipkZXN0LAorCQkJCXNpemVfdCAqZGVzdF9zaXplKQoreworCXN0 cnVjdCBrdm1pX2dldF9yZWdpc3RlcnNfcmVwbHkgKnJwbDsKKwlzaXplX3QgcnBsX3NpemUgPSAw OworCWludCBlcnI7CisKKwlpZiAocmVxLT5wYWRkaW5nMSB8fCByZXEtPnBhZGRpbmcyKQorCQly ZXR1cm4gLUtWTV9FSU5WQUw7CisKKwlpZiAobXNnLT5zaXplIDwgc2l6ZW9mKHN0cnVjdCBrdm1p X3ZjcHVfaGRyKQorCQkJKyBzaXplb2YoKnJlcSkgKyByZXEtPm5tc3JzICogc2l6ZW9mKHJlcS0+ bXNyc19pZHhbMF0pKQorCQlyZXR1cm4gLUtWTV9FSU5WQUw7CisKKwlycGwgPSBhbGxvY19nZXRf cmVnaXN0ZXJzX3JlcGx5KG1zZywgcmVxLCAmcnBsX3NpemUpOworCWlmICghcnBsKQorCQlyZXR1 cm4gLUtWTV9FTk9NRU07CisKKwllcnIgPSBrdm1pX2dldF9yZWdpc3RlcnModmNwdSwgJnJwbC0+ bW9kZSwgJnJwbC0+cmVncywKKwkJCQkgJnJwbC0+c3JlZ3MsICZycGwtPm1zcnMpOworCisJKmRl c3QgPSBycGw7CisJKmRlc3Rfc2l6ZSA9IHJwbF9zaXplOworCisJcmV0dXJuIGVycjsKKworfQor CiBzdGF0aWMgdm9pZCBrdm1pX2dldF9tc3JzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0 IGt2bWlfZXZlbnRfYXJjaCAqZXZlbnQpCiB7CiAJc3RydWN0IG1zcl9kYXRhIG1zcjsKZGlmZiAt LWdpdCBhL3ZpcnQva3ZtL2t2bWlfaW50LmggYi92aXJ0L2t2bS9rdm1pX2ludC5oCmluZGV4IGNi M2IwY2U4N2JjMS4uYjU0NzgwOWQxM2FlIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1pX2ludC5o CisrKyBiL3ZpcnQva3ZtL2t2bWlfaW50LmgKQEAgLTIwMCw2ICsyMDAsMTEgQEAgdm9pZCBrdm1p X2hhbmRsZV9jb21tb25fZXZlbnRfYWN0aW9ucyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBh Y3Rpb24sCiB2b2lkIGt2bWlfYXJjaF91cGRhdGVfcGFnZV90cmFja2luZyhzdHJ1Y3Qga3ZtICpr dm0sCiAJCQkJICAgIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QsCiAJCQkJICAgIHN0cnVj dCBrdm1pX21lbV9hY2Nlc3MgKm0pOworaW50IGt2bWlfYXJjaF9jbWRfZ2V0X3JlZ2lzdGVycyhz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCisJCQkJY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciAqbXNn LAorCQkJCWNvbnN0IHN0cnVjdCBrdm1pX2dldF9yZWdpc3RlcnMgKnJlcSwKKwkJCQlzdHJ1Y3Qg a3ZtaV9nZXRfcmVnaXN0ZXJzX3JlcGx5ICoqZGVzdCwKKwkJCQlzaXplX3QgKmRlc3Rfc2l6ZSk7 CiBpbnQga3ZtaV9hcmNoX2NtZF9nZXRfcGFnZV9hY2Nlc3Moc3RydWN0IGt2bWkgKmlrdm0sCiAJ CQkJICBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICptc2csCiAJCQkJICBjb25zdCBzdHJ1Y3Qg a3ZtaV9nZXRfcGFnZV9hY2Nlc3MgKnJlcSwKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bWlfbXNn LmMgYi92aXJ0L2t2bS9rdm1pX21zZy5jCmluZGV4IGE0NDQ2ZWVkMzU0ZC4uOWFlMDYyMmZmMDll IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1pX21zZy5jCisrKyBiL3ZpcnQva3ZtL2t2bWlfbXNn LmMKQEAgLTMyLDYgKzMyLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IG1zZ19JRHNbXSA9 IHsKIAlbS1ZNSV9HRVRfR1VFU1RfSU5GT10gICAgICAgID0gIktWTUlfR0VUX0dVRVNUX0lORk8i LAogCVtLVk1JX0dFVF9QQUdFX0FDQ0VTU10gICAgICAgPSAiS1ZNSV9HRVRfUEFHRV9BQ0NFU1Mi LAogCVtLVk1JX0dFVF9QQUdFX1dSSVRFX0JJVE1BUF0gPSAiS1ZNSV9HRVRfUEFHRV9XUklURV9C SVRNQVAiLAorCVtLVk1JX0dFVF9SRUdJU1RFUlNdICAgICAgICAgPSAiS1ZNSV9HRVRfUkVHSVNU RVJTIiwKIAlbS1ZNSV9HRVRfVkNQVV9JTkZPXSAgICAgICAgID0gIktWTUlfR0VUX1ZDUFVfSU5G TyIsCiAJW0tWTUlfR0VUX1ZFUlNJT05dICAgICAgICAgICA9ICJLVk1JX0dFVF9WRVJTSU9OIiwK IAlbS1ZNSV9QQVVTRV9WQ1BVXSAgICAgICAgICAgID0gIktWTUlfUEFVU0VfVkNQVSIsCkBAIC01 ODksNiArNTkwLDIxIEBAIHN0YXRpYyBpbnQgaGFuZGxlX2dldF92Y3B1X2luZm8oc3RydWN0IGt2 bV92Y3B1ICp2Y3B1LAogCXJldHVybiByZXBseV9jYih2Y3B1LCBtc2csIDAsICZycGwsIHNpemVv ZihycGwpKTsKIH0KIAorc3RhdGljIGludCBoYW5kbGVfZ2V0X3JlZ2lzdGVycyhzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsCisJCQkJY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciAqbXNnLAorCQkJCWNv bnN0IHZvaWQgKnJlcSwgdmNwdV9yZXBseV9mY3QgcmVwbHlfY2IpCit7CisJc3RydWN0IGt2bWlf Z2V0X3JlZ2lzdGVyc19yZXBseSAqcnBsID0gTlVMTDsKKwlzaXplX3QgcnBsX3NpemUgPSAwOwor CWludCBlcnIsIGVjOworCisJZWMgPSBrdm1pX2FyY2hfY21kX2dldF9yZWdpc3RlcnModmNwdSwg bXNnLCByZXEsICZycGwsICZycGxfc2l6ZSk7CisKKwllcnIgPSByZXBseV9jYih2Y3B1LCBtc2cs IGVjLCBycGwsIHJwbF9zaXplKTsKKwlrdm1pX21zZ19mcmVlKHJwbCk7CisJcmV0dXJuIGVycjsK K30KKwogc3RhdGljIGludCBoYW5kbGVfY29udHJvbF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1LAogCQkJCSBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICptc2csCiAJCQkJIGNvbnN0IHZv aWQgKl9yZXEsCkBAIC02MjIsNiArNjM4LDcgQEAgc3RhdGljIGludCgqY29uc3QgbXNnX3ZjcHVb XSkoc3RydWN0IGt2bV92Y3B1ICosCiAJCQkgICAgICB2Y3B1X3JlcGx5X2ZjdCkgPSB7CiAJW0tW TUlfQ09OVFJPTF9FVkVOVFNdICAgPSBoYW5kbGVfY29udHJvbF9ldmVudHMsCiAJW0tWTUlfRVZF TlRfUkVQTFldICAgICAgPSBoYW5kbGVfZXZlbnRfcmVwbHksCisJW0tWTUlfR0VUX1JFR0lTVEVS U10gICAgPSBoYW5kbGVfZ2V0X3JlZ2lzdGVycywKIAlbS1ZNSV9HRVRfVkNQVV9JTkZPXSAgICA9 IGhhbmRsZV9nZXRfdmNwdV9pbmZvLAogfTsKIApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6 YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5k YXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=