From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 40/92] KVM: VMX: Handle SPP induced vmexit and page fault Date: Fri, 9 Aug 2019 18:59:55 +0300 Message-ID: <20190809160047.8319-41-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 , Zhang Yi , Yu C , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , He Chen , 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 RnJvbTogWWFuZyBXZWlqaWFuZyA8d2VpamlhbmcueWFuZ0BpbnRlbC5jb20+CgpJZiB3cml0ZSB0 byBzdWJwYWdlIGlzIG5vdCBhbGxvd2VkLCBFUFQgdmlvbGF0aW9uIGlzIGdlbmVyYXRlZCwKaXQn cyBwcm9wYWdhdGVkIHRvIFFFTVUgb3IgVk1JIHRvIGhhbmRsZS4KCklmIHRoZSB0YXJnZXQgcGFn ZSBpcyBTUFAgcHJvdGVjdGVkLCBob3dldmVyIFNQUFQgbWlzc2luZyBpcwplbmNvdXRlcmVkIHdo aWxlIHRyYXZlcnNpbmcgd2l0aCBnZm4sIHZtZXhpdCBpcyBnZW5lcmF0ZWQgc28KdGhhdCBLVk0g Y2FuIGhhbmRsZSB0aGUgaXNzdWUuIEFueSBTUFBUIG1pc2NvbmZpZyB3aWxsIGJlCnByb3BhZ2F0 ZWQgdG8gUUVNVSBvciBWTUkuCgpBIFNQUCBzcGVjaWZpYyBiaXQoMTEpIGlzIGFkZGVkIHRvIGV4 aXRfcXVhbGlmaWNhdGlvbiBhbmQgYSBuZXcKZXhpdCByZWFzb24oNjYpIGlzIGludHJvZHVjZWQg Zm9yIFNQUC4KCkNvLWRldmVsb3BlZC1ieTogSGUgQ2hlbiA8aGUuY2hlbkBsaW51eC5pbnRlbC5j b20+ClNpZ25lZC1vZmYtYnk6IEhlIENoZW4gPGhlLmNoZW5AbGludXguaW50ZWwuY29tPgpDby1k ZXZlbG9wZWQtYnk6IFpoYW5nIFlpIDx5aS56LnpoYW5nQGxpbnV4LmludGVsLmNvbT4KU2lnbmVk LW9mZi1ieTogWmhhbmcgWWkgPHlpLnouemhhbmdAbGludXguaW50ZWwuY29tPgpDby1kZXZlbG9w ZWQtYnk6IFlhbmcgV2VpamlhbmcgPHdlaWppYW5nLnlhbmdAaW50ZWwuY29tPgpTaWduZWQtb2Zm LWJ5OiBZYW5nIFdlaWppYW5nIDx3ZWlqaWFuZy55YW5nQGludGVsLmNvbT4KTWVzc2FnZS1JZDog PDIwMTkwNzE3MTMzNzUxLjEyOTEwLTgtd2VpamlhbmcueWFuZ0BpbnRlbC5jb20+ClNpZ25lZC1v ZmYtYnk6IEFkYWxiZXJ0IExhesSDciA8YWxhemFyQGJpdGRlZmVuZGVyLmNvbT4KLS0tCiBhcmNo L3g4Ni9pbmNsdWRlL2FzbS92bXguaCAgICAgIHwgIDcgKysrKwogYXJjaC94ODYvaW5jbHVkZS91 YXBpL2FzbS92bXguaCB8ICAyICsKIGFyY2gveDg2L2t2bS9tbXUuYyAgICAgICAgICAgICAgfCAx NyArKysrKysrKwogYXJjaC94ODYva3ZtL3ZteC92bXguYyAgICAgICAgICB8IDcxICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oICAgICAg ICB8ICA1ICsrKwogNSBmaWxlcyBjaGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp dCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3ZteC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vdm14 LmgKaW5kZXggNmNiMDVhYzA3NDUzLi4xMWNhNjRjZWQ1NzggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3ZteC5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3ZteC5oCkBAIC01 NDcsNiArNTQ3LDEzIEBAIHN0cnVjdCB2bXhfbXNyX2VudHJ5IHsKICNkZWZpbmUgRVBUX1ZJT0xB VElPTl9FWEVDVVRBQkxFCSgxIDw8IEVQVF9WSU9MQVRJT05fRVhFQ1VUQUJMRV9CSVQpCiAjZGVm aW5lIEVQVF9WSU9MQVRJT05fR1ZBX1RSQU5TTEFURUQJKDEgPDwgRVBUX1ZJT0xBVElPTl9HVkFf VFJBTlNMQVRFRF9CSVQpCiAKKy8qCisgKiBFeGl0IFF1YWxpZmljYXRpb25zIGZvciBTUFBULUlu ZHVjZWQgdm1leGl0cworICovCisjZGVmaW5lIFNQUFRfSU5EVUNFRF9FWElUX1RZUEVfQklUICAg ICAxMQorI2RlZmluZSBTUFBUX0lORFVDRURfRVhJVF9UWVBFICAgICAgICAgKDEgPDwgU1BQVF9J TkRVQ0VEX0VYSVRfVFlQRV9CSVQpCisjZGVmaW5lIFNQUFRfSU5UUl9JTkZPX1VOQkxPQ0tfTk1J ICAgICBJTlRSX0lORk9fVU5CTE9DS19OTUkKKwogLyoKICAqIFZNLWluc3RydWN0aW9uIGVycm9y IG51bWJlcnMKICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS92bXgu aCBiL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vdm14LmgKaW5kZXggZjBiMGM5MGRkMzk4Li5h YzY3NjIyYmFjNWEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vdm14LmgK KysrIGIvYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS92bXguaApAQCAtODUsNiArODUsNyBAQAog I2RlZmluZSBFWElUX1JFQVNPTl9QTUxfRlVMTCAgICAgICAgICAgIDYyCiAjZGVmaW5lIEVYSVRf UkVBU09OX1hTQVZFUyAgICAgICAgICAgICAgNjMKICNkZWZpbmUgRVhJVF9SRUFTT05fWFJTVE9S UyAgICAgICAgICAgICA2NAorI2RlZmluZSBFWElUX1JFQVNPTl9TUFAgICAgICAgICAgICAgICAg IDY2CiAKICNkZWZpbmUgVk1YX0VYSVRfUkVBU09OUyBcCiAJeyBFWElUX1JFQVNPTl9FWENFUFRJ T05fTk1JLCAgICAgICAgICJFWENFUFRJT05fTk1JIiB9LCBcCkBAIC0xNDEsNiArMTQyLDcgQEAK IAl7IEVYSVRfUkVBU09OX0VOQ0xTLCAgICAgICAgICAgICAgICAgIkVOQ0xTIiB9LCBcCiAJeyBF WElUX1JFQVNPTl9SRFNFRUQsICAgICAgICAgICAgICAgICJSRFNFRUQiIH0sIFwKIAl7IEVYSVRf UkVBU09OX1BNTF9GVUxMLCAgICAgICAgICAgICAgIlBNTF9GVUxMIiB9LCBcCisJeyBFWElUX1JF QVNPTl9TUFAsICAgICAgICAgICAgICAgICAgICJTUFAiIH0sIFwKIAl7IEVYSVRfUkVBU09OX1hT QVZFUywgICAgICAgICAgICAgICAgIlhTQVZFUyIgfSwgXAogCXsgRVhJVF9SRUFTT05fWFJTVE9S UywgICAgICAgICAgICAgICAiWFJTVE9SUyIgfQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0v bW11LmMgYi9hcmNoL3g4Ni9rdm0vbW11LmMKaW5kZXggMzhlNzkyMTBkMDEwLi5kNTkxMDhhM2Vi YmYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9tbXUuYworKysgYi9hcmNoL3g4Ni9rdm0vbW11 LmMKQEAgLTM2OTIsNiArMzY5MiwxOSBAQCBzdGF0aWMgYm9vbCBmYXN0X3BhZ2VfZmF1bHQoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LCBndmFfdCBndmEsIGludCBsZXZlbCwKIAkJaWYgKChlcnJvcl9j b2RlICYgUEZFUlJfV1JJVEVfTUFTSykgJiYKIAkJICAgIHNwdGVfY2FuX2xvY2tsZXNzbHlfYmVf bWFkZV93cml0YWJsZShzcHRlKSkKIAkJeworCQkJLyoKKwkJCSAqIFJlY29yZCB3cml0ZSBwcm90 ZWN0IGZhdWx0IGNhdXNlZCBieQorCQkJICogU3ViLXBhZ2UgUHJvdGVjdGlvbiwgbGV0IFZNSSBk ZWNpZGUKKwkJCSAqIHRoZSBuZXh0IHN0ZXAuCisJCQkgKi8KKwkJCWlmIChzcHRlICYgUFRfU1BQ X01BU0spIHsKKwkJCQlmYXVsdF9oYW5kbGVkID0gdHJ1ZTsKKwkJCQl2Y3B1LT5ydW4tPmV4aXRf cmVhc29uID0gS1ZNX0VYSVRfU1BQOworCQkJCXZjcHUtPnJ1bi0+c3BwLmFkZHIgPSBndmE7CisJ CQkJa3ZtX3NraXBfZW11bGF0ZWRfaW5zdHJ1Y3Rpb24odmNwdSk7CisJCQkJYnJlYWs7CisJCQl9 CisKIAkJCW5ld19zcHRlIHw9IFBUX1dSSVRBQkxFX01BU0s7CiAKIAkJCS8qCkBAIC01ODgwLDYg KzU4OTMsMTAgQEAgaW50IGt2bV9tbXVfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IGd2YV90IGNyMiwgdTY0IGVycm9yX2NvZGUsCiAJCXIgPSB2Y3B1LT5hcmNoLm1tdS0+cGFnZV9m YXVsdCh2Y3B1LCBjcjIsCiAJCQkJCSAgICAgICBsb3dlcl8zMl9iaXRzKGVycm9yX2NvZGUpLAog CQkJCQkgICAgICAgZmFsc2UpOworCisJCWlmICh2Y3B1LT5ydW4tPmV4aXRfcmVhc29uID09IEtW TV9FWElUX1NQUCkKKwkJCXJldHVybiAwOworCiAJCVdBUk5fT04ociA9PSBSRVRfUEZfSU5WQUxJ RCk7CiAJfQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jIGIvYXJjaC94ODYv a3ZtL3ZteC92bXguYwppbmRleCBhNTBkZDJiOWQ0MzguLjVkNGI2MWFhZmY5YSAxMDA2NDQKLS0t IGEvYXJjaC94ODYva3ZtL3ZteC92bXguYworKysgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jCkBA IC01MzM1LDYgKzUzMzUsNzYgQEAgc3RhdGljIGludCBoYW5kbGVfbW9uaXRvcihzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUpCiAJcmV0dXJuIGhhbmRsZV9ub3AodmNwdSk7CiB9CiAKK3N0YXRpYyBpbnQg aGFuZGxlX3NwcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCit7CisJdW5zaWduZWQgbG9uZyBleGl0 X3F1YWxpZmljYXRpb247CisJc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdDsKKwlncGFfdCBn cGE7CisJZ2ZuX3QgZ2ZuOworCisJZXhpdF9xdWFsaWZpY2F0aW9uID0gdm1jc19yZWFkbChFWElU X1FVQUxJRklDQVRJT04pOworCisJLyoKKwkgKiBTUFAgVk0gZXhpdCBoYXBwZW5lZCB3aGlsZSBl eGVjdXRpbmcgaXJldCBmcm9tIE5NSSwKKwkgKiAiYmxvY2tlZCBieSBOTUkiIGJpdCBoYXMgdG8g YmUgc2V0IGJlZm9yZSBuZXh0IFZNIGVudHJ5LgorCSAqIFRoZXJlIGFyZSBlcnJhdGEgdGhhdCBt YXkgY2F1c2UgdGhpcyBiaXQgdG8gbm90IGJlIHNldDoKKwkgKiBBQUsxMzQsIEJZMjUuCisJICov CisJaWYgKCEodG9fdm14KHZjcHUpLT5pZHRfdmVjdG9yaW5nX2luZm8gJiBWRUNUT1JJTkdfSU5G T19WQUxJRF9NQVNLKSAmJgorCSAgICAoZXhpdF9xdWFsaWZpY2F0aW9uICYgU1BQVF9JTlRSX0lO Rk9fVU5CTE9DS19OTUkpKQorCQl2bWNzX3NldF9iaXRzKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlf SU5GTywKKwkJCSAgICAgIEdVRVNUX0lOVFJfU1RBVEVfTk1JKTsKKworCXZjcHUtPmFyY2guZXhp dF9xdWFsaWZpY2F0aW9uID0gZXhpdF9xdWFsaWZpY2F0aW9uOworCWlmIChleGl0X3F1YWxpZmlj YXRpb24gJiBTUFBUX0lORFVDRURfRVhJVF9UWVBFKSB7CisJCXN0cnVjdCBrdm1fc3VicGFnZSBz cHBfaW5mbyA9IHswfTsKKwkJaW50IHJldDsKKworCQkvKgorCQkgKiBTUFBUIG1pc3NpbmcKKwkJ ICogV2UgZG9uJ3Qgc2V0IFNQUCB3cml0ZSBhY2Nlc3MgZm9yIHRoZSBjb3JyZXNwb25kaW5nCisJ CSAqIEdQQSwgaWYgd2UgaGF2ZW4ndCBzZXR1cCwgd2UgbmVlZCB0byBjb25zdHJ1Y3QKKwkJICog U1BQIHRhYmxlIGhlcmUuCisJCSAqLworCQlwcl9pbmZvKCJTUFAgLSBTUFBUIGVudHJ5IG1pc3Np bmchXG4iKTsKKwkJZ3BhID0gdm1jc19yZWFkNjQoR1VFU1RfUEhZU0lDQUxfQUREUkVTUyk7CisJ CWdmbiA9IGdwYSA+PiBQQUdFX1NISUZUOworCQlzbG90ID0gZ2ZuX3RvX21lbXNsb3QodmNwdS0+ a3ZtLCBnZm4pOworCQlpZiAoIXNsb3QpCisJCSAgICAgIHJldHVybiAtRUZBVUxUOworCisJCS8q CisJCSAqIGlmIHRoZSB0YXJnZXQgZ2ZuIGlzIG5vdCBwcm90ZWN0ZWQsIGJ1dCBTUFBUIGlzCisJ CSAqIHRyYXZlcnNlZCBub3csIHJlZ2FyZCB0aGlzIGFzIHNvbWUga2luZCBvZiBmYXVsdC4KKwkJ ICovCisJCXNwcF9pbmZvLmJhc2VfZ2ZuID0gZ2ZuOworCQlzcHBfaW5mby5ucGFnZXMgPSAxOwor CisJCXNwaW5fbG9jaygmKHZjcHUtPmt2bS0+bW11X2xvY2spKTsKKwkJcmV0ID0ga3ZtX21tdV9n ZXRfc3VicGFnZXModmNwdS0+a3ZtLCAmc3BwX2luZm8sIHRydWUpOworCQlpZiAocmV0ID09IDEp IHsKKwkJCWt2bV9tbXVfc2V0dXBfc3BwX3N0cnVjdHVyZSh2Y3B1LAorCQkJCXNwcF9pbmZvLmFj Y2Vzc19tYXBbMF0sIGdmbik7CisJCX0KKwkJc3Bpbl91bmxvY2soJih2Y3B1LT5rdm0tPm1tdV9s b2NrKSk7CisKKwkJcmV0dXJuIDE7CisKKwl9CisKKwkvKgorCSAqIFNQUFQgTWlzY29uZmlnCisJ ICogVGhpcyBpcyBwcm9iYWJseSBjYXVzZWQgYnkgc29tZSBtaXMtY29uZmlndXJhdGlvbiBpbiBT UFBUCisJICogZW50cmllcywgY2Fubm90IGhhbmRsZSBpdCBoZXJlLCBlc2NhbGF0ZSB0aGUgZmF1 bHQgdG8KKwkgKiBlbXVsYXRvci4KKwkgKi8KKwlXQVJOX09OKDEpOworCXZjcHUtPnJ1bi0+ZXhp dF9yZWFzb24gPSBLVk1fRVhJVF9VTktOT1dOOworCXZjcHUtPnJ1bi0+aHcuaGFyZHdhcmVfZXhp dF9yZWFzb24gPSBFWElUX1JFQVNPTl9TUFA7CisJcHJfYWxlcnQoIlNQUCAtIFNQUFQgTWlzY29u ZmlndXJhdGlvbiFcbiIpOworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGhhbmRsZV9pbnZw Y2lkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAl1MzIgdm14X2luc3RydWN0aW9uX2luZm87 CkBAIC01NTM4LDYgKzU2MDgsNyBAQCBzdGF0aWMgaW50ICgqa3ZtX3ZteF9leGl0X2hhbmRsZXJz W10pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkgPSB7CiAJW0VYSVRfUkVBU09OX0lOVlZQSURdICAg ICAgICAgICAgICAgICA9IGhhbmRsZV92bXhfaW5zdHJ1Y3Rpb24sCiAJW0VYSVRfUkVBU09OX1JE UkFORF0gICAgICAgICAgICAgICAgICA9IGhhbmRsZV9pbnZhbGlkX29wLAogCVtFWElUX1JFQVNP Tl9SRFNFRURdICAgICAgICAgICAgICAgICAgPSBoYW5kbGVfaW52YWxpZF9vcCwKKwlbRVhJVF9S RUFTT05fU1BQXSAgICAgICAgICAgICAgICAgICAgID0gaGFuZGxlX3NwcCwKIAlbRVhJVF9SRUFT T05fWFNBVkVTXSAgICAgICAgICAgICAgICAgID0gaGFuZGxlX3hzYXZlcywKIAlbRVhJVF9SRUFT T05fWFJTVE9SU10gICAgICAgICAgICAgICAgID0gaGFuZGxlX3hyc3RvcnMsCiAJW0VYSVRfUkVB U09OX1BNTF9GVUxMXQkJICAgICAgPSBoYW5kbGVfcG1sX2Z1bGwsCmRpZmYgLS1naXQgYS9pbmNs dWRlL3VhcGkvbGludXgva3ZtLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgKaW5kZXggODZk ZDU3ZTY3NTM5Li44MWYwOGVlYzkwNjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9r dm0uaAorKysgYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgKQEAgLTI0NCw2ICsyNDQsNyBAQCBz dHJ1Y3Qga3ZtX2h5cGVydl9leGl0IHsKICNkZWZpbmUgS1ZNX0VYSVRfUzM5MF9TVFNJICAgICAg ICAyNQogI2RlZmluZSBLVk1fRVhJVF9JT0FQSUNfRU9JICAgICAgIDI2CiAjZGVmaW5lIEtWTV9F WElUX0hZUEVSViAgICAgICAgICAgMjcKKyNkZWZpbmUgS1ZNX0VYSVRfU1BQICAgICAgICAgICAg ICAyOAogCiAvKiBGb3IgS1ZNX0VYSVRfSU5URVJOQUxfRVJST1IgKi8KIC8qIEVtdWxhdGUgaW5z dHJ1Y3Rpb24gZmFpbGVkLiAqLwpAQCAtMzk5LDYgKzQwMCwxMCBAQCBzdHJ1Y3Qga3ZtX3J1biB7 CiAJCXN0cnVjdCB7CiAJCQlfX3U4IHZlY3RvcjsKIAkJfSBlb2k7CisJCS8qIEtWTV9FWElUX1NQ UCAqLworCQlzdHJ1Y3QgeworCQkJX191NjQgYWRkcjsKKwkJfSBzcHA7CiAJCS8qIEtWTV9FWElU X0hZUEVSViAqLwogCQlzdHJ1Y3Qga3ZtX2h5cGVydl9leGl0IGh5cGVydjsKIAkJLyogRml4IHRo ZSBzaXplIG9mIHRoZSB1bmlvbi4gKi8KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9u QGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9u Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u