From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 89/92] kvm: x86: make lock cmpxchg r, r/m atomic Date: Fri, 9 Aug 2019 19:00:44 +0300 Message-ID: <20190809160047.8319-90-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 RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhlIGN1cnJlbnQg ZW11bGF0aW9uIHRha2VzIHBsYWNlIGluIHR3byBzdGVwczogdGhlIGZpcnN0IGRvZXMgYWxsIHRo ZQphY3Rpb25zIHRoYXQgYW4gY21weGNoZyB3b3VsZCBkbywgc2V0cyBaRiBhbmQgc2F2ZXMgYWxs IHJlc3VsdHMgaW4gYQp0ZW1wb3Jhcnkgc3RvcmFnZSAodGhlIGVtdWxhdGlvbiBjb250ZXh0KS4g SXQncyB0aGUgc2Vjb25kIHN0ZXAgdGhhdApkb2VzIHRoZSBhY3R1YWwgYXRvbWljIG9wZXJhdGlv biAoYWN0dWFsbHkgdXNlcyBjbXB4Y2hnKS4gVGhlIHByb2JsZW0Kd2l0aCB0aGlzIGFwcHJvYWNo IGlzIHRoYXQgc3RlcHMgb25lIGFuZCB0d28gY2FuIG9ic2VydmUgZGlmZmVyZW50CnZhbHVlcyBp biBtZW1vcnkgYW5kIHdoZW4gdGhhdCBoYXBwZW5zIFJBWCBhbmQgUkZMQUdTIHdpbGwgaGF2ZSBp bnZhbGlkCnZhbHVlcyB3aGVuIHJldHVybmluZyB0byB0aGUgZ3Vlc3QgYXMgZW11bGF0b3JfY21w eGNoZ19lbXVsYXRlZCgpIGRvZXMKbm90IHNldCB0aGVzZS4KClRoaXMgcGF0Y2ggbW9kaWZpZXMg dGhlIHByb3RvdHlwZSBvZiBlbXVsYXRvcl9jbXB4Y2hnX2VtdWxhdGVkKCkgc28gdGhhdAp3aGVu IGNtcHhjaGcgZmFpbHMsIGl0IHJldHVybnMgaW4gKm9sZCB0aGUgY3VycmVudCB2YWx1ZS4gV2Ug YWxzbyBtb2RpZnkKZW1fY21weGNoZygpIHNvIHRoYXQgaWYgdGhlIExPQ0sgcHJlZml4IGlzIHBy ZXNlbnQgd2UgaW52b2tlCmVtdWxhdG9yX2NtcHhjaGdfZW11bGF0ZWQoKSBkaXJlY3RseSBhbmQg c2V0IFJBWCBhbmQgUkZMQUdTLiBOb3RlIHRoYXQgd2UKYWxzbyBkaXNhYmxlIHdyaXRlYmFjayBh cyBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgoKU2lnbmVkLW9mZi1ieTogTWloYWkgRG9uyJt1IDxt ZG9udHVAYml0ZGVmZW5kZXIuY29tPgpTaWduZWQtb2ZmLWJ5OiBBZGFsYmVydCBMYXrEg3IgPGFs YXphckBiaXRkZWZlbmRlci5jb20+Ci0tLQogYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2VtdWxh dGUuaCB8ICAyICstCiBhcmNoL3g4Ni9rdm0vZW11bGF0ZS5jICAgICAgICAgICAgIHwgNTcgKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tCiBhcmNoL3g4Ni9rdm0veDg2LmMgICAgICAgICAg ICAgICAgIHwgNDggKysrKysrKysrKysrKysrKysrLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA4 OSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2VtdWxh dGUuaAppbmRleCA5N2NiNTkyNjg3Y2IuLjg2M2MwNDU2MWEzNyAxMDA2NDQKLS0tIGEvYXJjaC94 ODYvaW5jbHVkZS9hc20va3ZtX2VtdWxhdGUuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9r dm1fZW11bGF0ZS5oCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyB7 CiAJICovCiAJaW50ICgqY21weGNoZ19lbXVsYXRlZCkoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQg KmN0eHQsCiAJCQkJdW5zaWduZWQgbG9uZyBhZGRyLAotCQkJCWNvbnN0IHZvaWQgKm9sZCwKKwkJ CQl2b2lkICpvbGQsCiAJCQkJY29uc3Qgdm9pZCAqbmV3LAogCQkJCXVuc2lnbmVkIGludCBieXRl cywKIAkJCQlzdHJ1Y3QgeDg2X2V4Y2VwdGlvbiAqZmF1bHQpOwpkaWZmIC0tZ2l0IGEvYXJjaC94 ODYva3ZtL2VtdWxhdGUuYyBiL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMKaW5kZXggNzI2MWI5NGM2 YzAwLi5kYWM0YzBjYTFlZTMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMKKysr IGIvYXJjaC94ODYva3ZtL2VtdWxhdGUuYwpAQCAtMTU0NywxMSArMTU0NywxNSBAQCBzdGF0aWMg aW50IHNlZ21lbnRlZF9jbXB4Y2hnKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAogewog CWludCByYzsKIAl1bG9uZyBsaW5lYXI7CisJdW5zaWduZWQgY2hhciBidWZbMTZdOwogCiAJcmMg PSBsaW5lYXJpemUoY3R4dCwgYWRkciwgc2l6ZSwgdHJ1ZSwgJmxpbmVhcik7CiAJaWYgKHJjICE9 IFg4NkVNVUxfQ09OVElOVUUpCiAJCXJldHVybiByYzsKLQlyZXR1cm4gY3R4dC0+b3BzLT5jbXB4 Y2hnX2VtdWxhdGVkKGN0eHQsIGxpbmVhciwgb3JpZ19kYXRhLCBkYXRhLAorCWlmIChzaXplID4g c2l6ZW9mKGJ1ZikpCisJCXJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKKwltZW1jcHkoYnVm LCBvcmlnX2RhdGEsIHNpemUpOworCXJldHVybiBjdHh0LT5vcHMtPmNtcHhjaGdfZW11bGF0ZWQo Y3R4dCwgbGluZWFyLCBidWYsIGRhdGEsCiAJCQkJCSAgIHNpemUsICZjdHh0LT5leGNlcHRpb24p OwogfQogCkBAIC0xODAzLDE2ICsxODA3LDIxIEBAIHN0YXRpYyBpbnQgX19sb2FkX3NlZ21lbnRf ZGVzY3JpcHRvcihzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKIAkJLyogQ1MoUlBMKSA8 LSBDUEwgKi8KIAkJc2VsZWN0b3IgPSAoc2VsZWN0b3IgJiAweGZmZmMpIHwgY3BsOwogCQlicmVh azsKLQljYXNlIFZDUFVfU1JFR19UUjoKKwljYXNlIFZDUFVfU1JFR19UUjogeworCQlzdHJ1Y3Qg ZGVzY19zdHJ1Y3QgYnVmOworCiAJCWlmIChzZWdfZGVzYy5zIHx8IChzZWdfZGVzYy50eXBlICE9 IDEgJiYgc2VnX2Rlc2MudHlwZSAhPSA5KSkKIAkJCWdvdG8gZXhjZXB0aW9uOwotCQlvbGRfZGVz YyA9IHNlZ19kZXNjOworCQlidWYgPSBvbGRfZGVzYyA9IHNlZ19kZXNjOwogCQlzZWdfZGVzYy50 eXBlIHw9IDI7IC8qIGJ1c3kgKi8KLQkJcmV0ID0gY3R4dC0+b3BzLT5jbXB4Y2hnX2VtdWxhdGVk KGN0eHQsIGRlc2NfYWRkciwgJm9sZF9kZXNjLCAmc2VnX2Rlc2MsCi0JCQkJCQkgIHNpemVvZihz ZWdfZGVzYyksICZjdHh0LT5leGNlcHRpb24pOworCQlyZXQgPSBjdHh0LT5vcHMtPmNtcHhjaGdf ZW11bGF0ZWQoY3R4dCwgZGVzY19hZGRyLCAmYnVmLAorCQkJCQkJICAmc2VnX2Rlc2MsCisJCQkJ CQkgIHNpemVvZihzZWdfZGVzYyksCisJCQkJCQkgICZjdHh0LT5leGNlcHRpb24pOwogCQlpZiAo cmV0ICE9IFg4NkVNVUxfQ09OVElOVUUpCiAJCQlyZXR1cm4gcmV0OwogCQlicmVhazsKKwl9CiAJ Y2FzZSBWQ1BVX1NSRUdfTERUUjoKIAkJaWYgKHNlZ19kZXNjLnMgfHwgc2VnX2Rlc2MudHlwZSAh PSAyKQogCQkJZ290byBleGNlcHRpb247CkBAIC0yMzg0LDYgKzIzOTMsNDQgQEAgc3RhdGljIGlu dCBlbV9yZXRfZmFyX2ltbShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIAogc3RhdGlj IGludCBlbV9jbXB4Y2hnKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogeworCWlmIChj dHh0LT5sb2NrX3ByZWZpeCkgeworCQlpbnQgcmM7CisJCXVsb25nIGxpbmVhcjsKKwkJdTY0IG9s ZCA9IHJlZ19yZWFkKGN0eHQsIFZDUFVfUkVHU19SQVgpOworCQl1NjQgbmV3ID0gY3R4dC0+c3Jj LnZhbDY0OworCisJCS8qIGRpc2FibGUgd3JpdGViYWNrIGFsdG9nZXRoZXIgKi8KKwkJY3R4dC0+ ZCAmPSB+U3JjV3JpdGU7CisJCWN0eHQtPmQgfD0gTm9Xcml0ZTsKKworCQlyYyA9IGxpbmVhcml6 ZShjdHh0LCBjdHh0LT5kc3QuYWRkci5tZW0sIGN0eHQtPmRzdC5ieXRlcywgdHJ1ZSwKKwkJCSAg ICAgICAmbGluZWFyKTsKKwkJaWYgKHJjICE9IFg4NkVNVUxfQ09OVElOVUUpCisJCQlyZXR1cm4g cmM7CisKKwkJcmMgPSBjdHh0LT5vcHMtPmNtcHhjaGdfZW11bGF0ZWQoY3R4dCwgbGluZWFyLCAm b2xkLCAmbmV3LAorCQkJCQkJIGN0eHQtPmRzdC5ieXRlcywKKwkJCQkJCSAmY3R4dC0+ZXhjZXB0 aW9uKTsKKworCQlzd2l0Y2ggKHJjKSB7CisJCWNhc2UgWDg2RU1VTF9DT05USU5VRToKKwkJCWN0 eHQtPmVmbGFncyB8PSBYODZfRUZMQUdTX1pGOworCQkJYnJlYWs7CisJCWNhc2UgWDg2RU1VTF9D TVBYQ0hHX0ZBSUxFRDogeworCQkJdTY0IG1hc2sgPSBCSVRNQVBfTEFTVF9XT1JEX01BU0soY3R4 dC0+ZHN0LmJ5dGVzICogOCk7CisKKwkJCSpyZWdfd3JpdGUoY3R4dCwgVkNQVV9SRUdTX1JBWCkg PSBvbGQgJiBtYXNrOworCisJCQljdHh0LT5lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfWkY7CisKKwkJ CXJjID0gWDg2RU1VTF9DT05USU5VRTsKKwkJCWJyZWFrOworCQl9CisJCX0KKworCQlyZXR1cm4g cmM7CisJfQorCiAJLyogU2F2ZSByZWFsIHNvdXJjZSB2YWx1ZSwgdGhlbiBjb21wYXJlIEVBWCBh Z2FpbnN0IGRlc3RpbmF0aW9uLiAqLwogCWN0eHQtPmRzdC5vcmlnX3ZhbCA9IGN0eHQtPmRzdC52 YWw7CiAJY3R4dC0+ZHN0LnZhbCA9IHJlZ19yZWFkKGN0eHQsIFZDUFVfUkVHU19SQVgpOwpkaWZm IC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IGUw OWE3NjE3OWM0Yi4uMzQ2Y2U2YzU4ODdiIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMK KysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC01NjQzLDE4ICs1NjQzLDE4IEBAIHN0YXRpYyBp bnQgZW11bGF0b3Jfd3JpdGVfZW11bGF0ZWQoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQs CiB9CiAKICNkZWZpbmUgQ01QWENIR19UWVBFKHQsIHB0ciwgb2xkLCBuZXcpIFwKLQkoY21weGNo ZygodCAqKShwdHIpLCAqKHQgKikob2xkKSwgKih0ICopKG5ldykpID09ICoodCAqKShvbGQpKQor CWNtcHhjaGcoKHQgKikocHRyKSwgKih0ICopKG9sZCksICoodCAqKShuZXcpKQogCiAjaWZkZWYg Q09ORklHX1g4Nl82NAogIyAgZGVmaW5lIENNUFhDSEc2NChwdHIsIG9sZCwgbmV3KSBDTVBYQ0hH X1RZUEUodTY0LCBwdHIsIG9sZCwgbmV3KQogI2Vsc2UKICMgIGRlZmluZSBDTVBYQ0hHNjQocHRy LCBvbGQsIG5ldykgXAotCShjbXB4Y2hnNjQoKHU2NCAqKShwdHIpLCAqKHU2NCAqKShvbGQpLCAq KHU2NCAqKShuZXcpKSA9PSAqKHU2NCAqKShvbGQpKQorCWNtcHhjaGc2NCgodTY0ICopKHB0ciks ICoodTY0ICopKG9sZCksICoodTY0ICopKG5ldykpCiAjZW5kaWYKIAogc3RhdGljIGludCBlbXVs YXRvcl9jbXB4Y2hnX2VtdWxhdGVkKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAogCQkJ CSAgICAgdW5zaWduZWQgbG9uZyBhZGRyLAotCQkJCSAgICAgY29uc3Qgdm9pZCAqb2xkLAorCQkJ CSAgICAgdm9pZCAqb2xkLAogCQkJCSAgICAgY29uc3Qgdm9pZCAqbmV3LAogCQkJCSAgICAgdW5z aWduZWQgaW50IGJ5dGVzLAogCQkJCSAgICAgc3RydWN0IHg4Nl9leGNlcHRpb24gKmV4Y2VwdGlv bikKQEAgLTU2NjMsNyArNTY2Myw3IEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVs YXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKIAlncGFfdCBncGE7CiAJc3RydWN0 IHBhZ2UgKnBhZ2U7CiAJY2hhciAqa2FkZHI7Ci0JYm9vbCBleGNoYW5nZWQ7CisJYm9vbCBleGNo YW5nZWQgPSBmYWxzZTsKIAogCS8qIGd1ZXN0cyBjbXB4Y2hnOGIgaGF2ZSB0byBiZSBlbXVsYXRl ZCBhdG9taWNhbGx5ICovCiAJaWYgKGJ5dGVzID4gOCB8fCAoYnl0ZXMgJiAoYnl0ZXMgLSAxKSkp CkBAIC01Njg4LDE4ICs1Njg4LDQyIEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVs YXRlZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKIAlrYWRkciA9IGttYXBfYXRvbWlj KHBhZ2UpOwogCWthZGRyICs9IG9mZnNldF9pbl9wYWdlKGdwYSk7CiAJc3dpdGNoIChieXRlcykg ewotCWNhc2UgMToKLQkJZXhjaGFuZ2VkID0gQ01QWENIR19UWVBFKHU4LCBrYWRkciwgb2xkLCBu ZXcpOworCWNhc2UgMTogeworCQl1OCB2YWwgPSBDTVBYQ0hHX1RZUEUodTgsIGthZGRyLCBvbGQs IG5ldyk7CisKKwkJaWYgKCooKHU4ICopb2xkKSA9PSB2YWwpCisJCQlleGNoYW5nZWQgPSB0cnVl OworCQllbHNlCisJCQkqKCh1OCAqKW9sZCkgPSB2YWw7CiAJCWJyZWFrOwotCWNhc2UgMjoKLQkJ ZXhjaGFuZ2VkID0gQ01QWENIR19UWVBFKHUxNiwga2FkZHIsIG9sZCwgbmV3KTsKKwl9CisJY2Fz ZSAyOiB7CisJCXUxNiB2YWwgPSBDTVBYQ0hHX1RZUEUodTE2LCBrYWRkciwgb2xkLCBuZXcpOwor CisJCWlmICgqKCh1MTYgKilvbGQpID09IHZhbCkKKwkJCWV4Y2hhbmdlZCA9IHRydWU7CisJCWVs c2UKKwkJCSooKHUxNiAqKW9sZCkgPSB2YWw7CiAJCWJyZWFrOwotCWNhc2UgNDoKLQkJZXhjaGFu Z2VkID0gQ01QWENIR19UWVBFKHUzMiwga2FkZHIsIG9sZCwgbmV3KTsKKwl9CisJY2FzZSA0OiB7 CisJCXUzMiB2YWwgPSBDTVBYQ0hHX1RZUEUodTMyLCBrYWRkciwgb2xkLCBuZXcpOworCisJCWlm ICgqKCh1MzIgKilvbGQpID09IHZhbCkKKwkJCWV4Y2hhbmdlZCA9IHRydWU7CisJCWVsc2UKKwkJ CSooKHUzMiAqKW9sZCkgPSB2YWw7CiAJCWJyZWFrOwotCWNhc2UgODoKLQkJZXhjaGFuZ2VkID0g Q01QWENIRzY0KGthZGRyLCBvbGQsIG5ldyk7CisJfQorCWNhc2UgODogeworCQl1NjQgdmFsID0g Q01QWENIRzY0KGthZGRyLCBvbGQsIG5ldyk7CisKKwkJaWYgKCooKHU2NCAqKW9sZCkgPT0gdmFs KQorCQkJZXhjaGFuZ2VkID0gdHJ1ZTsKKwkJZWxzZQorCQkJKigodTY0ICopb2xkKSA9IHZhbDsK IAkJYnJlYWs7CisJfQogCWRlZmF1bHQ6CiAJCUJVRygpOwogCX0KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0 ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMu bGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u