From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 24/92] kvm: x86: wire in the preread/prewrite/preexec page trackers Date: Fri, 9 Aug 2019 18:59:39 +0300 Message-ID: <20190809160047.8319-25-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 , Sean Christopherson , 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?= , Joerg Roedel List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhlc2UgYXJlIG5l ZWRlZCBieSB0aGUgaW50cm9zcGVjdGlvbiBzdWJzeXN0ZW0uCgpDQzogU2VhbiBDaHJpc3RvcGhl cnNvbiA8c2Vhbi5qLmNocmlzdG9waGVyc29uQGludGVsLmNvbT4KQ0M6IEpvZXJnIFJvZWRlbCA8 am9yb0A4Ynl0ZXMub3JnPgpTaWduZWQtb2ZmLWJ5OiBNaWhhaSBEb27Im3UgPG1kb250dUBiaXRk ZWZlbmRlci5jb20+ClNpZ25lZC1vZmYtYnk6IEFkYWxiZXJ0IExhesSDciA8YWxhemFyQGJpdGRl ZmVuZGVyLmNvbT4KLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5oIHwgIDEg KwogYXJjaC94ODYva3ZtL2VtdWxhdGUuYyAgICAgICAgICAgICB8IDEwICsrKysrLQogYXJjaC94 ODYva3ZtL21tdS5jICAgICAgICAgICAgICAgICB8IDM3ICsrKysrKysrKysrKysrLS0tLS0tLQog YXJjaC94ODYva3ZtL3g4Ni5jICAgICAgICAgICAgICAgICB8IDUyICsrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCAyMSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5o IGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2VtdWxhdGUuaAppbmRleCA5M2M0YmY1OThmYjAu Ljk3Y2I1OTI2ODdjYiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2VtdWxh dGUuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5oCkBAIC00NDQsNiAr NDQ0LDcgQEAgYm9vbCB4ODZfcGFnZV90YWJsZV93cml0aW5nX2luc24oc3RydWN0IHg4Nl9lbXVs YXRlX2N0eHQgKmN0eHQpOwogI2RlZmluZSBFTVVMQVRJT05fT0sgMAogI2RlZmluZSBFTVVMQVRJ T05fUkVTVEFSVCAxCiAjZGVmaW5lIEVNVUxBVElPTl9JTlRFUkNFUFRFRCAyCisjZGVmaW5lIEVN VUxBVElPTl9SRVRSWV9JTlNUUiAzCiB2b2lkIGluaXRfZGVjb2RlX2NhY2hlKHN0cnVjdCB4ODZf ZW11bGF0ZV9jdHh0ICpjdHh0KTsKIGludCB4ODZfZW11bGF0ZV9pbnNuKHN0cnVjdCB4ODZfZW11 bGF0ZV9jdHh0ICpjdHh0KTsKIGludCBlbXVsYXRvcl90YXNrX3N3aXRjaChzdHJ1Y3QgeDg2X2Vt dWxhdGVfY3R4dCAqY3R4dCwKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMgYi9h cmNoL3g4Ni9rdm0vZW11bGF0ZS5jCmluZGV4IGMzMzg5ODRjODUwZC4uMzQ0MzFjZjMxZjc0IDEw MDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vZW11bGF0ZS5jCisrKyBiL2FyY2gveDg2L2t2bS9lbXVs YXRlLmMKQEAgLTUzNjYsNyArNTM2NiwxMiBAQCBpbnQgeDg2X2RlY29kZV9pbnNuKHN0cnVjdCB4 ODZfZW11bGF0ZV9jdHh0ICpjdHh0LCB2b2lkICppbnNuLCBpbnQgaW5zbl9sZW4pCiAJCQkJCWN0 eHQtPm1lbW9wcC0+YWRkci5tZW0uZWEgKyBjdHh0LT5fZWlwKTsKIAogZG9uZToKLQlyZXR1cm4g KHJjICE9IFg4NkVNVUxfQ09OVElOVUUpID8gRU1VTEFUSU9OX0ZBSUxFRCA6IEVNVUxBVElPTl9P SzsKKwlpZiAocmMgPT0gWDg2RU1VTF9SRVRSWV9JTlNUUikKKwkJcmV0dXJuIEVNVUxBVElPTl9S RVRSWV9JTlNUUjsKKwllbHNlIGlmIChyYyA9PSBYODZFTVVMX0NPTlRJTlVFKQorCQlyZXR1cm4g RU1VTEFUSU9OX09LOworCWVsc2UKKwkJcmV0dXJuIEVNVUxBVElPTl9GQUlMRUQ7CiB9CiAKIGJv b2wgeDg2X3BhZ2VfdGFibGVfd3JpdGluZ19pbnNuKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpj dHh0KQpAQCAtNTczNiw2ICs1NzQxLDkgQEAgaW50IHg4Nl9lbXVsYXRlX2luc24oc3RydWN0IHg4 Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiAJaWYgKHJjID09IFg4NkVNVUxfSU5URVJDRVBURUQpCiAJ CXJldHVybiBFTVVMQVRJT05fSU5URVJDRVBURUQ7CiAKKwlpZiAocmMgPT0gWDg2RU1VTF9SRVRS WV9JTlNUUikKKwkJcmV0dXJuIEVNVUxBVElPTl9SRVRSWV9JTlNUUjsKKwogCWlmIChyYyA9PSBY ODZFTVVMX0NPTlRJTlVFKQogCQl3cml0ZWJhY2tfcmVnaXN0ZXJzKGN0eHQpOwogCmRpZmYgLS1n aXQgYS9hcmNoL3g4Ni9rdm0vbW11LmMgYi9hcmNoL3g4Ni9rdm0vbW11LmMKaW5kZXggYTg2YjE2 NWNmNmRkLi5mZjA1M2YxN2I4YzIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9tbXUuYworKysg Yi9hcmNoL3g4Ni9rdm0vbW11LmMKQEAgLTExMTEsOSArMTExMSwxMyBAQCBzdGF0aWMgdm9pZCBh Y2NvdW50X3NoYWRvd2VkKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tbXVfcGFnZSAqc3Ap CiAJc2xvdCA9IF9fZ2ZuX3RvX21lbXNsb3Qoc2xvdHMsIGdmbik7CiAKIAkvKiB0aGUgbm9uLWxl YWYgc2hhZG93IHBhZ2VzIGFyZSBrZWVwaW5nIHJlYWRvbmx5LiAqLwotCWlmIChzcC0+cm9sZS5s ZXZlbCA+IFBUX1BBR0VfVEFCTEVfTEVWRUwpCi0JCXJldHVybiBrdm1fc2xvdF9wYWdlX3RyYWNr X2FkZF9wYWdlKGt2bSwgc2xvdCwgZ2ZuLAotCQkJCQkJICAgIEtWTV9QQUdFX1RSQUNLX1dSSVRF KTsKKwlpZiAoc3AtPnJvbGUubGV2ZWwgPiBQVF9QQUdFX1RBQkxFX0xFVkVMKSB7CisJCWt2bV9z bG90X3BhZ2VfdHJhY2tfYWRkX3BhZ2Uoa3ZtLCBzbG90LCBnZm4sCisJCQkJCSAgICAgS1ZNX1BB R0VfVFJBQ0tfUFJFV1JJVEUpOworCQlrdm1fc2xvdF9wYWdlX3RyYWNrX2FkZF9wYWdlKGt2bSwg c2xvdCwgZ2ZuLAorCQkJCQkgICAgIEtWTV9QQUdFX1RSQUNLX1dSSVRFKTsKKwkJcmV0dXJuOwor CX0KIAogCWt2bV9tbXVfZ2ZuX2Rpc2FsbG93X2xwYWdlKHNsb3QsIGdmbik7CiB9CkBAIC0xMTI4 LDkgKzExMzIsMTMgQEAgc3RhdGljIHZvaWQgdW5hY2NvdW50X3NoYWRvd2VkKHN0cnVjdCBrdm0g Kmt2bSwgc3RydWN0IGt2bV9tbXVfcGFnZSAqc3ApCiAJZ2ZuID0gc3AtPmdmbjsKIAlzbG90cyA9 IGt2bV9tZW1zbG90c19mb3Jfc3B0ZV9yb2xlKGt2bSwgc3AtPnJvbGUpOwogCXNsb3QgPSBfX2dm bl90b19tZW1zbG90KHNsb3RzLCBnZm4pOwotCWlmIChzcC0+cm9sZS5sZXZlbCA+IFBUX1BBR0Vf VEFCTEVfTEVWRUwpCi0JCXJldHVybiBrdm1fc2xvdF9wYWdlX3RyYWNrX3JlbW92ZV9wYWdlKGt2 bSwgc2xvdCwgZ2ZuLAotCQkJCQkJICAgICAgIEtWTV9QQUdFX1RSQUNLX1dSSVRFKTsKKwlpZiAo c3AtPnJvbGUubGV2ZWwgPiBQVF9QQUdFX1RBQkxFX0xFVkVMKSB7CisJCWt2bV9zbG90X3BhZ2Vf dHJhY2tfcmVtb3ZlX3BhZ2Uoa3ZtLCBzbG90LCBnZm4sCisJCQkJCQlLVk1fUEFHRV9UUkFDS19Q UkVXUklURSk7CisJCWt2bV9zbG90X3BhZ2VfdHJhY2tfcmVtb3ZlX3BhZ2Uoa3ZtLCBzbG90LCBn Zm4sCisJCQkJCQlLVk1fUEFHRV9UUkFDS19XUklURSk7CisJCXJldHVybjsKKwl9CiAKIAlrdm1f bW11X2dmbl9hbGxvd19scGFnZShzbG90LCBnZm4pOwogfQpAQCAtMjg4NCw3ICsyODkyLDggQEAg c3RhdGljIGJvb2wgbW11X25lZWRfd3JpdGVfcHJvdGVjdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IGdmbl90IGdmbiwKIHsKIAlzdHJ1Y3Qga3ZtX21tdV9wYWdlICpzcDsKIAotCWlmIChrdm1fcGFn ZV90cmFja19pc19hY3RpdmUodmNwdSwgZ2ZuLCBLVk1fUEFHRV9UUkFDS19XUklURSkpCisJaWYg KGt2bV9wYWdlX3RyYWNrX2lzX2FjdGl2ZSh2Y3B1LCBnZm4sIEtWTV9QQUdFX1RSQUNLX1BSRVdS SVRFKSB8fAorCSAgICBrdm1fcGFnZV90cmFja19pc19hY3RpdmUodmNwdSwgZ2ZuLCBLVk1fUEFH RV9UUkFDS19XUklURSkpCiAJCXJldHVybiB0cnVlOwogCiAJZm9yX2VhY2hfZ2ZuX2luZGlyZWN0 X3ZhbGlkX3NwKHZjcHUtPmt2bSwgc3AsIGdmbikgewpAQCAtNDAwNiwxNSArNDAxNSwyMSBAQCBz dGF0aWMgYm9vbCBwYWdlX2ZhdWx0X2hhbmRsZV9wYWdlX3RyYWNrKHN0cnVjdCBrdm1fdmNwdSAq dmNwdSwKIAlpZiAodW5saWtlbHkoZXJyb3JfY29kZSAmIFBGRVJSX1JTVkRfTUFTSykpCiAJCXJl dHVybiBmYWxzZTsKIAotCWlmICghKGVycm9yX2NvZGUgJiBQRkVSUl9QUkVTRU5UX01BU0spIHx8 Ci0JICAgICAgIShlcnJvcl9jb2RlICYgUEZFUlJfV1JJVEVfTUFTSykpCisJaWYgKCEoZXJyb3Jf Y29kZSAmIFBGRVJSX1BSRVNFTlRfTUFTSykpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qCi0JICog Z3Vlc3QgaXMgd3JpdGluZyB0aGUgcGFnZSB3aGljaCBpcyB3cml0ZSB0cmFja2VkIHdoaWNoIGNh bgorCSAqIGd1ZXN0IGlzIHJlYWRpbmcvd3JpdGluZy9mZXRjaGluZyB0aGUgcGFnZSB3aGljaCBp cworCSAqIHJlYWQvd3JpdGUvZXhlY3V0ZSB0cmFja2VkIHdoaWNoIGNhbgogCSAqIG5vdCBiZSBm aXhlZCBieSBwYWdlIGZhdWx0IGhhbmRsZXIuCiAJICovCi0JaWYgKGt2bV9wYWdlX3RyYWNrX2lz X2FjdGl2ZSh2Y3B1LCBnZm4sIEtWTV9QQUdFX1RSQUNLX1dSSVRFKSkKKwlpZiAoKChlcnJvcl9j b2RlICYgUEZFUlJfVVNFUl9NQVNLKQorCQkmJiBrdm1fcGFnZV90cmFja19pc19hY3RpdmUodmNw dSwgZ2ZuLCBLVk1fUEFHRV9UUkFDS19QUkVSRUFEKSkKKwkgICAgfHwgKChlcnJvcl9jb2RlICYg UEZFUlJfV1JJVEVfTUFTSykKKwkJJiYgKGt2bV9wYWdlX3RyYWNrX2lzX2FjdGl2ZSh2Y3B1LCBn Zm4sIEtWTV9QQUdFX1RSQUNLX1BSRVdSSVRFKQorCQkgfHwga3ZtX3BhZ2VfdHJhY2tfaXNfYWN0 aXZlKHZjcHUsIGdmbiwgS1ZNX1BBR0VfVFJBQ0tfV1JJVEUpKSkKKwkgICAgfHwgKChlcnJvcl9j b2RlICYgUEZFUlJfRkVUQ0hfTUFTSykKKwkJJiYga3ZtX3BhZ2VfdHJhY2tfaXNfYWN0aXZlKHZj cHUsIGdmbiwgS1ZNX1BBR0VfVFJBQ0tfUFJFRVhFQykpKQogCQlyZXR1cm4gdHJ1ZTsKIAogCXJl dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2 bS94ODYuYwppbmRleCBkM2QxNTk5ODYyNDMuLjdhZWYwMDJiZTU1MSAxMDA2NDQKLS0tIGEvYXJj aC94ODYva3ZtL3g4Ni5jCisrKyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtNTA2NSw2ICs1MDY1 LDcgQEAgc3RhdGljIGludCBrdm1fcmVhZF9ndWVzdF92aXJ0X2hlbHBlcihndmFfdCBhZGRyLCB2 b2lkICp2YWwsIHVuc2lnbmVkIGludCBieXRlcywKIHsKIAl2b2lkICpkYXRhID0gdmFsOwogCWlu dCByID0gWDg2RU1VTF9DT05USU5VRTsKKwlib29sIGRhdGFfcmVhZHk7CiAKIAl3aGlsZSAoYnl0 ZXMpIHsKIAkJZ3BhX3QgZ3BhID0gdmNwdS0+YXJjaC53YWxrX21tdS0+Z3ZhX3RvX2dwYSh2Y3B1 LCBhZGRyLCBhY2Nlc3MsCkBAIC01MDc1LDYgKzUwNzYsMTMgQEAgc3RhdGljIGludCBrdm1fcmVh ZF9ndWVzdF92aXJ0X2hlbHBlcihndmFfdCBhZGRyLCB2b2lkICp2YWwsIHVuc2lnbmVkIGludCBi eXRlcywKIAogCQlpZiAoZ3BhID09IFVOTUFQUEVEX0dWQSkKIAkJCXJldHVybiBYODZFTVVMX1BS T1BBR0FURV9GQVVMVDsKKwkJaWYgKCFrdm1fcGFnZV90cmFja19wcmVyZWFkKHZjcHUsIGdwYSwg YWRkciwgZGF0YSwgdG9yZWFkLAorCQkJCQkJJmRhdGFfcmVhZHkpKQorCQkJcmV0dXJuIFg4NkVN VUxfUkVUUllfSU5TVFI7CisJCWlmIChkYXRhX3JlYWR5KSB7CisJCQlXQVJOX09OKHRvcmVhZCA+ IGJ5dGVzKTsgLyogVE9ETyAqLworCQkJcmV0dXJuIFg4NkVNVUxfQ09OVElOVUU7CisJCX0KIAkJ cmV0ID0ga3ZtX3ZjcHVfcmVhZF9ndWVzdF9wYWdlKHZjcHUsIGdwYSA+PiBQQUdFX1NISUZULCBk YXRhLAogCQkJCQkgICAgICAgb2Zmc2V0LCB0b3JlYWQpOwogCQlpZiAocmV0IDwgMCkgewpAQCAt NTEwNiw2ICs1MTE0LDkgQEAgc3RhdGljIGludCBrdm1fZmV0Y2hfZ3Vlc3RfdmlydChzdHJ1Y3Qg eDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKIAlpZiAodW5saWtlbHkoZ3BhID09IFVOTUFQUEVEX0dW QSkpCiAJCXJldHVybiBYODZFTVVMX1BST1BBR0FURV9GQVVMVDsKIAorCWlmICgha3ZtX3BhZ2Vf dHJhY2tfcHJlZXhlYyh2Y3B1LCBncGEsIGFkZHIpKQorCQlyZXR1cm4gWDg2RU1VTF9SRVRSWV9J TlNUUjsKKwogCW9mZnNldCA9IGFkZHIgJiAoUEFHRV9TSVpFLTEpOwogCWlmIChXQVJOX09OKG9m ZnNldCArIGJ5dGVzID4gUEFHRV9TSVpFKSkKIAkJYnl0ZXMgPSAodW5zaWduZWQpUEFHRV9TSVpF IC0gb2Zmc2V0OwpAQCAtNTI4NCwxMyArNTI5NSwyNiBAQCBzdGF0aWMgaW50IHZjcHVfbW1pb19n dmFfdG9fZ3BhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBndmEsCiBpbnQg ZW11bGF0b3Jfd3JpdGVfcGh5cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgZ3Zh X3QgZ3ZhLAogCQkJY29uc3Qgdm9pZCAqdmFsLCBpbnQgYnl0ZXMpCiB7Ci0JaW50IHJldDsKLQot CXJldCA9IGt2bV92Y3B1X3dyaXRlX2d1ZXN0KHZjcHUsIGdwYSwgdmFsLCBieXRlcyk7Ci0JaWYg KHJldCA8IDApCi0JCXJldHVybiAwOworCWlmICgha3ZtX3BhZ2VfdHJhY2tfcHJld3JpdGUodmNw dSwgZ3BhLCBndmEsIHZhbCwgYnl0ZXMpKQorCQlyZXR1cm4gWDg2RU1VTF9SRVRSWV9JTlNUUjsK KwlpZiAoa3ZtX3ZjcHVfd3JpdGVfZ3Vlc3QodmNwdSwgZ3BhLCB2YWwsIGJ5dGVzKSA8IDApCisJ CXJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKIAlrdm1fcGFnZV90cmFja193cml0ZSh2Y3B1 LCBncGEsIGd2YSwgdmFsLCBieXRlcyk7Ci0JcmV0dXJuIDE7CisJcmV0dXJuIFg4NkVNVUxfQ09O VElOVUU7Cit9CisKK3N0YXRpYyBpbnQgZW11bGF0b3JfcmVhZF9waHlzKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSwgZ3BhX3QgZ3BhLCBndmFfdCBndmEsCisJCQkgICAgICB2b2lkICp2YWwsIGludCBi eXRlcykKK3sKKwlib29sIGRhdGFfcmVhZHk7CisKKwlpZiAoIWt2bV9wYWdlX3RyYWNrX3ByZXJl YWQodmNwdSwgZ3BhLCBndmEsIHZhbCwgYnl0ZXMsICZkYXRhX3JlYWR5KSkKKwkJcmV0dXJuIFg4 NkVNVUxfUkVUUllfSU5TVFI7CisJaWYgKGRhdGFfcmVhZHkpCisJCXJldHVybiBYODZFTVVMX0NP TlRJTlVFOworCWlmIChrdm1fdmNwdV9yZWFkX2d1ZXN0KHZjcHUsIGdwYSwgdmFsLCBieXRlcykg PCAwKQorCQlyZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CisJcmV0dXJuIFg4NkVNVUxfQ09O VElOVUU7CiB9CiAKIHN0cnVjdCByZWFkX3dyaXRlX2VtdWxhdG9yX29wcyB7CkBAIC01MzIwLDcg KzUzNDQsNyBAQCBzdGF0aWMgaW50IHJlYWRfcHJlcGFyZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IHZvaWQgKnZhbCwgaW50IGJ5dGVzKQogc3RhdGljIGludCByZWFkX2VtdWxhdGUoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90IGd2YSwKIAkJCXZvaWQgKnZhbCwgaW50IGJ5 dGVzKQogewotCXJldHVybiAha3ZtX3ZjcHVfcmVhZF9ndWVzdCh2Y3B1LCBncGEsIHZhbCwgYnl0 ZXMpOworCXJldHVybiBlbXVsYXRvcl9yZWFkX3BoeXModmNwdSwgZ3BhLCBndmEsIHZhbCwgYnl0 ZXMpOwogfQogCiBzdGF0aWMgaW50IHdyaXRlX2VtdWxhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCBncGFfdCBncGEsIGd2YV90IGd2YSwKQEAgLTUzOTUsOCArNTQxOSwxMSBAQCBzdGF0aWMgaW50 IGVtdWxhdG9yX3JlYWRfd3JpdGVfb25lcGFnZSh1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKnZh bCwKIAkJCXJldHVybiBYODZFTVVMX1BST1BBR0FURV9GQVVMVDsKIAl9CiAKLQlpZiAoIXJldCAm JiBvcHMtPnJlYWRfd3JpdGVfZW11bGF0ZSh2Y3B1LCBncGEsIGFkZHIsIHZhbCwgYnl0ZXMpKQot CQlyZXR1cm4gWDg2RU1VTF9DT05USU5VRTsKKwlpZiAoIXJldCkgeworCQlyZXQgPSBvcHMtPnJl YWRfd3JpdGVfZW11bGF0ZSh2Y3B1LCBncGEsIGFkZHIsIHZhbCwgYnl0ZXMpOworCQlpZiAocmV0 ID09IFg4NkVNVUxfQ09OVElOVUUgfHwgcmV0ID09IFg4NkVNVUxfUkVUUllfSU5TVFIpCisJCQly ZXR1cm4gcmV0OworCX0KIAogCS8qCiAJICogSXMgdGhpcyBNTUlPIGhhbmRsZWQgbG9jYWxseT8K QEAgLTU1MzEsNiArNTU1OCw5IEBAIHN0YXRpYyBpbnQgZW11bGF0b3JfY21weGNoZ19lbXVsYXRl ZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKIAlpZiAoaXNfZXJyb3JfcGFnZShwYWdl KSkKIAkJZ290byBlbXVsX3dyaXRlOwogCisJaWYgKCFrdm1fcGFnZV90cmFja19wcmV3cml0ZSh2 Y3B1LCBncGEsIGFkZHIsIG5ldywgYnl0ZXMpKQorCQlyZXR1cm4gWDg2RU1VTF9SRVRSWV9JTlNU UjsKKwogCWthZGRyID0ga21hcF9hdG9taWMocGFnZSk7CiAJa2FkZHIgKz0gb2Zmc2V0X2luX3Bh Z2UoZ3BhKTsKIAlzd2l0Y2ggKGJ5dGVzKSB7CkBAIC02NDE2LDYgKzY0NDYsOCBAQCBpbnQgeDg2 X2VtdWxhdGVfaW5zdHJ1Y3Rpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCiAJCXRyYWNlX2t2 bV9lbXVsYXRlX2luc25fc3RhcnQodmNwdSk7CiAJCSsrdmNwdS0+c3RhdC5pbnNuX2VtdWxhdGlv bjsKKwkJaWYgKHIgPT0gRU1VTEFUSU9OX1JFVFJZX0lOU1RSKQorCQkJcmV0dXJuIEVNVUxBVEVf RE9ORTsKIAkJaWYgKHIgIT0gRU1VTEFUSU9OX09LKSAgewogCQkJaWYgKGVtdWxhdGlvbl90eXBl ICYgRU1VTFRZUEVfVFJBUF9VRCkKIAkJCQlyZXR1cm4gRU1VTEFURV9GQUlMOwpAQCAtNjQ1Nyw2 ICs2NDg5LDggQEAgaW50IHg4Nl9lbXVsYXRlX2luc3RydWN0aW9uKHN0cnVjdCBrdm1fdmNwdSAq dmNwdSwKIAogCXIgPSB4ODZfZW11bGF0ZV9pbnNuKGN0eHQpOwogCisJaWYgKHIgPT0gRU1VTEFU SU9OX1JFVFJZX0lOU1RSKQorCQlyZXR1cm4gRU1VTEFURV9ET05FOwogCWlmIChyID09IEVNVUxB VElPTl9JTlRFUkNFUFRFRCkKIAkJcmV0dXJuIEVNVUxBVEVfRE9ORTsKIApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5n IGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9s aXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=