From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 22/92] kvm: x86: provide all page tracking hooks with the guest virtual address Date: Fri, 9 Aug 2019 18:59:37 +0300 Message-ID: <20190809160047.8319-23-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 RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhpcyBpcyBuZWVk ZWQgYmVjYXVzZSB0aGUgZW11bGF0b3IgY2FsbHMgdGhlIHBhZ2UgdHJhY2tpbmcgY29kZQppcnJl c3BlY3RpdmUgb2YgdGhlIGN1cnJlbnQgVk1FWElUIHJlYXNvbiBvciBhdmFpbGFibGUgaW5mb3Jt YXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBNaWhhaSBEb27Im3UgPG1kb250dUBiaXRkZWZlbmRlci5j b20+ClNpZ25lZC1vZmYtYnk6IEFkYWxiZXJ0IExhesSDciA8YWxhemFyQGJpdGRlZmVuZGVyLmNv bT4KLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oICAgICAgIHwgIDIgKy0KIGFy Y2gveDg2L2luY2x1ZGUvYXNtL2t2bV9wYWdlX3RyYWNrLmggfCAgOSArKysrKy0tLS0KIGFyY2gv eDg2L2t2bS9tbXUuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC94ODYva3ZtL3Bh Z2VfdHJhY2suYyAgICAgICAgICAgICB8ICA2ICsrKy0tLQogYXJjaC94ODYva3ZtL3g4Ni5jICAg ICAgICAgICAgICAgICAgICB8IDE2ICsrKysrKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9rdm1ndC5jICAgICAgfCAgMiArLQogNiBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRp b25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAppbmRleCA2N2Vk OTM0Y2ExMjQuLjJkNmJkZTZmYTU5ZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20v a3ZtX2hvc3QuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC0xMjYz LDcgKzEyNjMsNyBAQCB2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICpr dm0sIHVuc2lnbmVkIGludCBrdm1fbnJfbW11X3BhZ2VzKTsKIGludCBsb2FkX3BkcHRycyhzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbW11ICptbXUsIHVuc2lnbmVkIGxvbmcgY3Iz KTsKIGJvb2wgcGRwdHJzX2NoYW5nZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIAotaW50IGVt dWxhdG9yX3dyaXRlX3BoeXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsCitpbnQg ZW11bGF0b3Jfd3JpdGVfcGh5cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgZ3Zh X3QgZ3ZhLAogCQkJICBjb25zdCB2b2lkICp2YWwsIGludCBieXRlcyk7CiAKIHN0cnVjdCBrdm1f aXJxX21hc2tfbm90aWZpZXIgewpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3Zt X3BhZ2VfdHJhY2suaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9wYWdlX3RyYWNrLmgKaW5k ZXggMThhOTRkMTgwNDg1Li4wNDkyYTg1ZjNhNDQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2t2bV9wYWdlX3RyYWNrLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX3Bh Z2VfdHJhY2suaApAQCAtMzIsOCArMzIsOSBAQCBzdHJ1Y3Qga3ZtX3BhZ2VfdHJhY2tfbm90aWZp ZXJfbm9kZSB7CiAJICogQGJ5dGVzOiB0aGUgd3JpdHRlbiBsZW5ndGguCiAJICogQG5vZGU6IHRo aXMgbm9kZQogCSAqLwotCXZvaWQgKCp0cmFja193cml0ZSkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCBncGFfdCBncGEsIGNvbnN0IHU4ICpuZXcsCi0JCQkgICAgaW50IGJ5dGVzLCBzdHJ1Y3Qga3Zt X3BhZ2VfdHJhY2tfbm90aWZpZXJfbm9kZSAqbm9kZSk7CisJdm9pZCAoKnRyYWNrX3dyaXRlKShz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgZ3ZhX3QgZ3ZhLAorCQkJICAgIGNvbnN0 IHU4ICpuZXcsIGludCBieXRlcywKKwkJCSAgICBzdHJ1Y3Qga3ZtX3BhZ2VfdHJhY2tfbm90aWZp ZXJfbm9kZSAqbm9kZSk7CiAJdm9pZCAoKnRyYWNrX2NyZWF0ZV9zbG90KShzdHJ1Y3Qga3ZtICpr dm0sIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QsCiAJCQkJICB1bnNpZ25lZCBsb25nIG5w YWdlcywKIAkJCQkgIHN0cnVjdCBrdm1fcGFnZV90cmFja19ub3RpZmllcl9ub2RlICpub2RlKTsK QEAgLTcyLDcgKzczLDcgQEAga3ZtX3BhZ2VfdHJhY2tfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0 IGt2bSAqa3ZtLAogdm9pZAoga3ZtX3BhZ2VfdHJhY2tfdW5yZWdpc3Rlcl9ub3RpZmllcihzdHJ1 Y3Qga3ZtICprdm0sCiAJCQkJICAgc3RydWN0IGt2bV9wYWdlX3RyYWNrX25vdGlmaWVyX25vZGUg Km4pOwotdm9pZCBrdm1fcGFnZV90cmFja193cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdw YV90IGdwYSwgY29uc3QgdTggKm5ldywKLQkJCSAgaW50IGJ5dGVzKTsKK3ZvaWQga3ZtX3BhZ2Vf dHJhY2tfd3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90IGd2YSwK KwkJCSAgY29uc3QgdTggKm5ldywgaW50IGJ5dGVzKTsKIHZvaWQga3ZtX3BhZ2VfdHJhY2tfZmx1 c2hfc2xvdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QpOwog I2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11LmMgYi9hcmNoL3g4Ni9rdm0vbW11 LmMKaW5kZXggZjJkMWQyMzBkNWI4Li45ODk4ZDg2M2I2YjYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2 L2t2bS9tbXUuYworKysgYi9hcmNoL3g4Ni9rdm0vbW11LmMKQEAgLTUyMjIsNyArNTIyMiw3IEBA IHN0YXRpYyB1NjQgKmdldF93cml0dGVuX3NwdGVzKHN0cnVjdCBrdm1fbW11X3BhZ2UgKnNwLCBn cGFfdCBncGEsIGludCAqbnNwdGUpCiAJcmV0dXJuIHNwdGU7CiB9CiAKLXN0YXRpYyB2b2lkIGt2 bV9tbXVfcHRlX3dyaXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLAorc3RhdGlj IHZvaWQga3ZtX21tdV9wdGVfd3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEs IGd2YV90IGd2YSwKIAkJCSAgICAgIGNvbnN0IHU4ICpuZXcsIGludCBieXRlcywKIAkJCSAgICAg IHN0cnVjdCBrdm1fcGFnZV90cmFja19ub3RpZmllcl9ub2RlICpub2RlKQogewpkaWZmIC0tZ2l0 IGEvYXJjaC94ODYva3ZtL3BhZ2VfdHJhY2suYyBiL2FyY2gveDg2L2t2bS9wYWdlX3RyYWNrLmMK aW5kZXggZGI1YjkwNjg3NmJiLi5mZjdkZWZiNGExZDIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2 bS9wYWdlX3RyYWNrLmMKKysrIGIvYXJjaC94ODYva3ZtL3BhZ2VfdHJhY2suYwpAQCAtMjM2LDgg KzIzNiw4IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGt2bV9wYWdlX3RyYWNrX3VucmVnaXN0ZXJfbm90 aWZpZXIpOwogICogVGhlIG5vZGUgc2hvdWxkIGZpZ3VyZSBvdXQgaWYgdGhlIHdyaXR0ZW4gcGFn ZSBpcyB0aGUgb25lIHRoYXQgbm9kZSBpcwogICogaW50ZXJlc3RlZCBpbiBieSBpdHNlbGYuCiAg Ki8KLXZvaWQga3ZtX3BhZ2VfdHJhY2tfd3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFf dCBncGEsIGNvbnN0IHU4ICpuZXcsCi0JCQkgIGludCBieXRlcykKK3ZvaWQga3ZtX3BhZ2VfdHJh Y2tfd3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90IGd2YSwKKwkJ CSAgY29uc3QgdTggKm5ldywgaW50IGJ5dGVzKQogewogCXN0cnVjdCBrdm1fcGFnZV90cmFja19u b3RpZmllcl9oZWFkICpoZWFkOwogCXN0cnVjdCBrdm1fcGFnZV90cmFja19ub3RpZmllcl9ub2Rl ICpuOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQga3ZtX3BhZ2VfdHJhY2tfd3JpdGUoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGNvbnN0IHU4ICpuZXcsCiAJaWR4ID0gc3JjdV9y ZWFkX2xvY2soJmhlYWQtPnRyYWNrX3NyY3UpOwogCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShu LCAmaGVhZC0+dHJhY2tfbm90aWZpZXJfbGlzdCwgbm9kZSkKIAkJaWYgKG4tPnRyYWNrX3dyaXRl KQotCQkJbi0+dHJhY2tfd3JpdGUodmNwdSwgZ3BhLCBuZXcsIGJ5dGVzLCBuKTsKKwkJCW4tPnRy YWNrX3dyaXRlKHZjcHUsIGdwYSwgZ3ZhLCBuZXcsIGJ5dGVzLCBuKTsKIAlzcmN1X3JlYWRfdW5s b2NrKCZoZWFkLT50cmFja19zcmN1LCBpZHgpOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9r dm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggZjY2ZGI5NDczZWEzLi5kM2QxNTk5 ODYyNDMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYworKysgYi9hcmNoL3g4Ni9rdm0v eDg2LmMKQEAgLTUyODEsNyArNTI4MSw3IEBAIHN0YXRpYyBpbnQgdmNwdV9tbWlvX2d2YV90b19n cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGd2YSwKIAlyZXR1cm4gdmNw dV9pc19tbWlvX2dwYSh2Y3B1LCBndmEsICpncGEsIHdyaXRlKTsKIH0KIAotaW50IGVtdWxhdG9y X3dyaXRlX3BoeXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsCitpbnQgZW11bGF0 b3Jfd3JpdGVfcGh5cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgZ3ZhX3QgZ3Zh LAogCQkJY29uc3Qgdm9pZCAqdmFsLCBpbnQgYnl0ZXMpCiB7CiAJaW50IHJldDsKQEAgLTUyODks MTQgKzUyODksMTQgQEAgaW50IGVtdWxhdG9yX3dyaXRlX3BoeXMoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1LCBncGFfdCBncGEsCiAJcmV0ID0ga3ZtX3ZjcHVfd3JpdGVfZ3Vlc3QodmNwdSwgZ3BhLCB2 YWwsIGJ5dGVzKTsKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIDA7Ci0Ja3ZtX3BhZ2VfdHJhY2tf d3JpdGUodmNwdSwgZ3BhLCB2YWwsIGJ5dGVzKTsKKwlrdm1fcGFnZV90cmFja193cml0ZSh2Y3B1 LCBncGEsIGd2YSwgdmFsLCBieXRlcyk7CiAJcmV0dXJuIDE7CiB9CiAKIHN0cnVjdCByZWFkX3dy aXRlX2VtdWxhdG9yX29wcyB7CiAJaW50ICgqcmVhZF93cml0ZV9wcmVwYXJlKShzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIHZvaWQgKnZhbCwKIAkJCQkgIGludCBieXRlcyk7Ci0JaW50ICgqcmVhZF93 cml0ZV9lbXVsYXRlKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwKKwlpbnQgKCpy ZWFkX3dyaXRlX2VtdWxhdGUpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLCBndmFf dCBndmEsCiAJCQkJICB2b2lkICp2YWwsIGludCBieXRlcyk7CiAJaW50ICgqcmVhZF93cml0ZV9t bWlvKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwKIAkJCSAgICAgICBpbnQgYnl0 ZXMsIHZvaWQgKnZhbCk7CkBAIC01MzE3LDE2ICs1MzE3LDE2IEBAIHN0YXRpYyBpbnQgcmVhZF9w cmVwYXJlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdm9pZCAqdmFsLCBpbnQgYnl0ZXMpCiAJcmV0 dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgcmVhZF9lbXVsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSwgZ3BhX3QgZ3BhLAorc3RhdGljIGludCByZWFkX2VtdWxhdGUoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1LCBncGFfdCBncGEsIGd2YV90IGd2YSwKIAkJCXZvaWQgKnZhbCwgaW50IGJ5dGVzKQogewog CXJldHVybiAha3ZtX3ZjcHVfcmVhZF9ndWVzdCh2Y3B1LCBncGEsIHZhbCwgYnl0ZXMpOwogfQog Ci1zdGF0aWMgaW50IHdyaXRlX2VtdWxhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBn cGEsCitzdGF0aWMgaW50IHdyaXRlX2VtdWxhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFf dCBncGEsIGd2YV90IGd2YSwKIAkJCSB2b2lkICp2YWwsIGludCBieXRlcykKIHsKLQlyZXR1cm4g ZW11bGF0b3Jfd3JpdGVfcGh5cyh2Y3B1LCBncGEsIHZhbCwgYnl0ZXMpOworCXJldHVybiBlbXVs YXRvcl93cml0ZV9waHlzKHZjcHUsIGdwYSwgZ3ZhLCB2YWwsIGJ5dGVzKTsKIH0KIAogc3RhdGlj IGludCB3cml0ZV9tbWlvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLCBpbnQgYnl0 ZXMsIHZvaWQgKnZhbCkKQEAgLTUzOTUsNyArNTM5NSw3IEBAIHN0YXRpYyBpbnQgZW11bGF0b3Jf cmVhZF93cml0ZV9vbmVwYWdlKHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAqdmFsLAogCQkJcmV0 dXJuIFg4NkVNVUxfUFJPUEFHQVRFX0ZBVUxUOwogCX0KIAotCWlmICghcmV0ICYmIG9wcy0+cmVh ZF93cml0ZV9lbXVsYXRlKHZjcHUsIGdwYSwgdmFsLCBieXRlcykpCisJaWYgKCFyZXQgJiYgb3Bz LT5yZWFkX3dyaXRlX2VtdWxhdGUodmNwdSwgZ3BhLCBhZGRyLCB2YWwsIGJ5dGVzKSkKIAkJcmV0 dXJuIFg4NkVNVUxfQ09OVElOVUU7CiAKIAkvKgpAQCAtNTU1Niw3ICs1NTU2LDcgQEAgc3RhdGlj IGludCBlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpj dHh0LAogCQlyZXR1cm4gWDg2RU1VTF9DTVBYQ0hHX0ZBSUxFRDsKIAogCWt2bV92Y3B1X21hcmtf cGFnZV9kaXJ0eSh2Y3B1LCBncGEgPj4gUEFHRV9TSElGVCk7Ci0Ja3ZtX3BhZ2VfdHJhY2tfd3Jp dGUodmNwdSwgZ3BhLCBuZXcsIGJ5dGVzKTsKKwlrdm1fcGFnZV90cmFja193cml0ZSh2Y3B1LCBn cGEsIGFkZHIsIG5ldywgYnl0ZXMpOwogCiAJcmV0dXJuIFg4NkVNVUxfQ09OVElOVUU7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2t2bWd0LmMKaW5kZXggZGQzZGZkMDBmNGU2Li40YmQyY2RmNzlmODYgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jCkBAIC0xNTUwLDcgKzE1NTAsNyBAQCBzdGF0aWMgaW50 IGt2bWd0X3BhZ2VfdHJhY2tfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgaGFuZGxlLCB1NjQgZ2ZuKQog CXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBrdm1ndF9wYWdlX3RyYWNrX3dyaXRlKHN0cnVj dCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLAorc3RhdGljIHZvaWQga3ZtZ3RfcGFnZV90cmFj a193cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgZ3ZhX3QgZ3ZhLAogCQlj b25zdCB1OCAqdmFsLCBpbnQgbGVuLAogCQlzdHJ1Y3Qga3ZtX3BhZ2VfdHJhY2tfbm90aWZpZXJf bm9kZSAqbm9kZSkKIHsKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxp bnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWls bWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u