From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Xu, Quan" Subject: [Patch v6 02/11] IOMMU/MMU: enhance the call trees of IOMMU unmapping and mapping Date: Tue, 31 May 2016 21:57:27 +0800 Message-ID: <1464703056-4741-3-git-send-email-quan.xu@intel.com> References: <1464703056-4741-1-git-send-email-quan.xu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1464703056-4741-1-git-send-email-quan.xu@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , Keir Fraser , Jan Beulich , George Dunlap , Andrew Cooper , dario.faggioli@citrix.com, Jun Nakajima , Quan Xu List-Id: xen-devel@lists.xenproject.org RnJvbTogUXVhbiBYdSA8cXVhbi54dUBpbnRlbC5jb20+CgpXaGVuIElPTU1VIG1hcHBpbmcgaXMg ZmFpbGVkLCB3ZSBpc3N1ZSBhIGJlc3QgZWZmb3J0IHJvbGxiYWNrLCBzdG9wcGluZwpJT01NVSBt YXBwaW5nLCB1bm1hcHBpbmcgdGhlIHByZXZpb3VzIElPTU1VIG1hcHMgYW5kIHRoZW4gcmVwb3J0 aW5nIHRoZQplcnJvciB1cCB0byB0aGUgY2FsbCB0cmVlcy4gV2hlbiByb2xsYmFjayBpcyBub3Qg ZmVhc2libGUgKGluIGVhcmx5CmluaXRpYWxpemF0aW9uIHBoYXNlIG9yIHRyYWRlLW9mZiBvZiBj b21wbGV4aXR5KSBmb3IgdGhlIGhhcmR3YXJlIGRvbWFpbiwKd2UgZG8gdGhpbmdzIG9uIGEgYmVz dCBlZmZvcnQgYmFzaXMsIG9ubHkgdGhyb3dpbmcgb3V0IGFuIGVycm9yIG1lc3NhZ2UuCgpJT01N VSB1bm1hcHBpbmcgc2hvdWxkIHBlcmhhcHMgY29udGludWUgZGVzcGl0ZSBhbiBlcnJvciwgaW4g YW4gYXR0ZW1wdAp0byBkbyBiZXN0IGVmZm9ydCBjbGVhbnVwLgoKU2lnbmVkLW9mZi1ieTogUXVh biBYdSA8cXVhbi54dUBpbnRlbC5jb20+CgpDQzogS2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4K Q0M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ0M6IEFuZHJldyBDb29wZXIgPGFu ZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNDOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBp bnRlbC5jb20+CkNDOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KQ0M6IEdlb3Jn ZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KCnY2OgogIDEuIExpbWl0IF9f bXVzdF9jaGVjayBhbm5vdGF0aW9uIHRvIElPTU1VIGZ1bmN0aW9ucyBmb3IgdGhpcyBwYXRjaCBz ZXQuCiAgMi4gUmVwbGFjZSAncmV0JyB3aXRoIGEgbW9yZSBzcGVjaWZpYyBuYW1lICdpb21tdV9y ZXQnIGluIF9fZ2V0X3BhZ2VfdHlwZSgpLgogIDMuIFJldHVybiB0aGUgZmlyc3QgZXJyb3IgaW5z dGVhZCBvZiB0aGUgbGFzdCBvbmUuCi0tLQogeGVuL2FyY2gveDg2L21tLmMgICAgICAgICAgICAg ICB8IDEzICsrKysrKysrLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgICAgICAgfCAz MyArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0t cHQuYyAgICAgICAgfCAyNCArKysrKysrKysrKysrKysrKysrKystLS0KIHhlbi9hcmNoL3g4Ni9t bS9wMm0uYyAgICAgICAgICAgfCAxNiArKysrKysrKysrKysrKy0tCiB4ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9pb21tdS5jIHwgMTQgKysrKysrKysrKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgODIg aW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwppbmRleCA4ZDEwYTNlLi5hZTdjOGFiIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvbW0uYworKysgYi94ZW4vYXJjaC94ODYvbW0uYwpAQCAtMjQ2Nyw3 ICsyNDY3LDcgQEAgc3RhdGljIGludCBfX2dldF9wYWdlX3R5cGUoc3RydWN0IHBhZ2VfaW5mbyAq cGFnZSwgdW5zaWduZWQgbG9uZyB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IHByZWVtcHRpYmxlKQogewogICAgIHVuc2lnbmVkIGxvbmcgbngsIHgsIHkgPSBwYWdlLT51Lmlu dXNlLnR5cGVfaW5mbzsKLSAgICBpbnQgcmMgPSAwOworICAgIGludCByYyA9IDAsIGlvbW11X3Jl dCA9IDA7CiAKICAgICBBU1NFUlQoISh0eXBlICYgfihQR1RfdHlwZV9tYXNrIHwgUEdUX3BhZV94 ZW5fbDIpKSk7CiAKQEAgLTI1NzgsMTEgKzI1NzgsMTEgQEAgc3RhdGljIGludCBfX2dldF9wYWdl X3R5cGUoc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwgdW5zaWduZWQgbG9uZyB0eXBlLAogICAgICAg ICBpZiAoIGQgJiYgaXNfcHZfZG9tYWluKGQpICYmIHVubGlrZWx5KG5lZWRfaW9tbXUoZCkpICkK ICAgICAgICAgewogICAgICAgICAgICAgaWYgKCAoeCAmIFBHVF90eXBlX21hc2spID09IFBHVF93 cml0YWJsZV9wYWdlICkKLSAgICAgICAgICAgICAgICBpb21tdV91bm1hcF9wYWdlKGQsIG1mbl90 b19nbWZuKGQsIHBhZ2VfdG9fbWZuKHBhZ2UpKSk7CisgICAgICAgICAgICAgICAgaW9tbXVfcmV0 ID0gaW9tbXVfdW5tYXBfcGFnZShkLCBtZm5fdG9fZ21mbihkLCBwYWdlX3RvX21mbihwYWdlKSkp OwogICAgICAgICAgICAgZWxzZSBpZiAoIHR5cGUgPT0gUEdUX3dyaXRhYmxlX3BhZ2UgKQotICAg ICAgICAgICAgICAgIGlvbW11X21hcF9wYWdlKGQsIG1mbl90b19nbWZuKGQsIHBhZ2VfdG9fbWZu KHBhZ2UpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlX3RvX21mbihwYWdl KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVUZfcmVhZGFibGV8SU9NTVVG X3dyaXRhYmxlKTsKKyAgICAgICAgICAgICAgICBpb21tdV9yZXQgPSBpb21tdV9tYXBfcGFnZShk LCBtZm5fdG9fZ21mbihkLCBwYWdlX3RvX21mbihwYWdlKSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV90b19tZm4ocGFnZSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0 YWJsZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI1OTksNiArMjU5OSw5IEBAIHN0YXRpYyBp bnQgX19nZXRfcGFnZV90eXBlKHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsIHVuc2lnbmVkIGxvbmcg dHlwZSwKICAgICBpZiAoICh4ICYgUEdUX3BhcnRpYWwpICYmICEobnggJiBQR1RfcGFydGlhbCkg KQogICAgICAgICBwdXRfcGFnZShwYWdlKTsKIAorICAgIGlmICggIXJjICkKKyAgICAgICAgcmMg PSBpb21tdV9yZXQ7CisKICAgICByZXR1cm4gcmM7CiB9CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9tbS9wMm0tZXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCmluZGV4IDFlZDVi NDcuLmViYjQzNDMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKKysrIGIv eGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwpAQCAtNjY3LDYgKzY2Nyw3IEBAIGVwdF9zZXRfZW50 cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwK ICAgICB1bnNpZ25lZCBsb25nIGdmbl9yZW1haW5kZXIgPSBnZm47CiAgICAgdW5zaWduZWQgaW50 IGksIHRhcmdldCA9IG9yZGVyIC8gRVBUX1RBQkxFX09SREVSOwogICAgIGludCByZXQsIHJjID0g MDsKKyAgICBib29sX3QgZW50cnlfd3JpdHRlbiA9IDA7CiAgICAgYm9vbF90IGRpcmVjdF9tbWlv ID0gKHAybXQgPT0gcDJtX21taW9fZGlyZWN0KTsKICAgICB1aW50OF90IGlwYXQgPSAwOwogICAg IGJvb2xfdCBuZWVkX21vZGlmeV92dGRfdGFibGUgPSAxOwpAQCAtODEyLDEwICs4MTMsMTUgQEAg ZXB0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwg bWZuX3QgbWZuLAogICAgIHJjID0gYXRvbWljX3dyaXRlX2VwdF9lbnRyeShlcHRfZW50cnksIG5l d19lbnRyeSwgdGFyZ2V0KTsKICAgICBpZiAoIHVubGlrZWx5KHJjKSApCiAgICAgICAgIG9sZF9l bnRyeS5lcHRlID0gMDsKLSAgICBlbHNlIGlmICggcDJtdCAhPSBwMm1faW52YWxpZCAmJgotICAg ICAgICAgICAgICAoZ2ZuICsgKDFVTCA8PCBvcmRlcikgLSAxID4gcDJtLT5tYXhfbWFwcGVkX3Bm bikgKQotICAgICAgICAvKiBUcmFjayB0aGUgaGlnaGVzdCBnZm4gZm9yIHdoaWNoIHdlIGhhdmUg ZXZlciBoYWQgYSB2YWxpZCBtYXBwaW5nICovCi0gICAgICAgIHAybS0+bWF4X21hcHBlZF9wZm4g PSBnZm4gKyAoMVVMIDw8IG9yZGVyKSAtIDE7CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZW50 cnlfd3JpdHRlbiA9IDE7CisKKyAgICAgICAgaWYgKCBwMm10ICE9IHAybV9pbnZhbGlkICYmCisg ICAgICAgICAgICAgKGdmbiArICgxVUwgPDwgb3JkZXIpIC0gMSA+IHAybS0+bWF4X21hcHBlZF9w Zm4pICkKKyAgICAgICAgICAgIC8qIFRyYWNrIHRoZSBoaWdoZXN0IGdmbiBmb3Igd2hpY2ggd2Ug aGF2ZSBldmVyIGhhZCBhIHZhbGlkIG1hcHBpbmcgKi8KKyAgICAgICAgICAgIHAybS0+bWF4X21h cHBlZF9wZm4gPSBnZm4gKyAoMVVMIDw8IG9yZGVyKSAtIDE7CisgICAgfQogCiBvdXQ6CiAgICAg aWYgKCBuZWVkc19zeW5jICkKQEAgLTgzMSwxMCArODM3LDIzIEBAIG91dDoKICAgICAgICAgewog ICAgICAgICAgICAgaWYgKCBpb21tdV9mbGFncyApCiAgICAgICAgICAgICAgICAgZm9yICggaSA9 IDA7IGkgPCAoMSA8PCBvcmRlcik7IGkrKyApCi0gICAgICAgICAgICAgICAgICAgIGlvbW11X21h cF9wYWdlKGQsIGdmbiArIGksIG1mbl94KG1mbikgKyBpLCBpb21tdV9mbGFncyk7CisgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByYyA9IGlvbW11X21hcF9wYWdlKGQsIGdm biArIGksIG1mbl94KG1mbikgKyBpLCBpb21tdV9mbGFncyk7CisgICAgICAgICAgICAgICAgICAg IGlmICggdW5saWtlbHkocmMpICkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgICAgICAgd2hpbGUgKCBpLS0gKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlv bW11X3VubWFwX3BhZ2UocDJtLT5kb21haW4sIGdmbiArIGkpOworCisgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICgxIDw8 IG9yZGVyKTsgaSsrICkKLSAgICAgICAgICAgICAgICAgICAgaW9tbXVfdW5tYXBfcGFnZShkLCBn Zm4gKyBpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldCA9IGlv bW11X3VubWFwX3BhZ2UoZCwgZ2ZuICsgaSk7CisgICAgICAgICAgICAgICAgICAgIGlmICggIXJj ICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gcmV0OworICAgICAgICAgICAgICAgIH0K ICAgICAgICAgfQogICAgIH0KIApAQCAtODQ3LDcgKzg2Niw3IEBAIG91dDoKICAgICBpZiAoIGlz X2VwdGVfcHJlc2VudCgmb2xkX2VudHJ5KSApCiAgICAgICAgIGVwdF9mcmVlX2VudHJ5KHAybSwg Jm9sZF9lbnRyeSwgdGFyZ2V0KTsKIAotICAgIGlmICggcmMgPT0gMCAmJiBwMm1faXNfaG9zdHAy bShwMm0pICkKKyAgICBpZiAoIGVudHJ5X3dyaXR0ZW4gJiYgcDJtX2lzX2hvc3RwMm0ocDJtKSAp CiAgICAgICAgIHAybV9hbHRwMm1fcHJvcGFnYXRlX2NoYW5nZShkLCBfZ2ZuKGdmbiksIG1mbiwg b3JkZXIsIHAybXQsIHAybWEpOwogCiAgICAgcmV0dXJuIHJjOwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L21tL3AybS1wdC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCmluZGV4IDNkODA2 MTIuLjI2MmY1MDAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYworKysgYi94 ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKQEAgLTY3Myw2ICs2NzMsOCBAQCBwMm1fcHRfc2V0X2Vu dHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4s CiAgICAgaWYgKCBpb21tdV9lbmFibGVkICYmIG5lZWRfaW9tbXUocDJtLT5kb21haW4pICYmCiAg ICAgICAgICAoaW9tbXVfb2xkX2ZsYWdzICE9IGlvbW11X3B0ZV9mbGFncyB8fCBvbGRfbWZuICE9 IG1mbl94KG1mbikpICkKICAgICB7CisgICAgICAgIGludCByZXQ7CisKICAgICAgICAgaWYgKCBp b21tdV91c2VfaGFwX3B0KHAybS0+ZG9tYWluKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm ICggaW9tbXVfb2xkX2ZsYWdzICkKQEAgLTY4MCwxMSArNjgyLDI3IEBAIHAybV9wdF9zZXRfZW50 cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwK ICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICggaW9tbXVfcHRlX2ZsYWdzICkKICAgICAgICAg ICAgIGZvciAoIGkgPSAwOyBpIDwgKDFVTCA8PCBwYWdlX29yZGVyKTsgaSsrICkKLSAgICAgICAg ICAgICAgICBpb21tdV9tYXBfcGFnZShwMm0tPmRvbWFpbiwgZ2ZuICsgaSwgbWZuX3gobWZuKSAr IGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9tbXVfcHRlX2ZsYWdzKTsKKyAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXQgPSBpb21tdV9tYXBfcGFnZShwMm0tPmRv bWFpbiwgZ2ZuICsgaSwgbWZuX3gobWZuKSArIGksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW9tbXVfcHRlX2ZsYWdzKTsKKyAgICAgICAgICAgICAgICBpZiAoIHVubGlr ZWx5KHJldCkgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUg KCBpLS0gKQorICAgICAgICAgICAgICAgICAgICAgICAgaW9tbXVfdW5tYXBfcGFnZShwMm0tPmRv bWFpbiwgZ2ZuICsgaSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAhcmMgKQorICAgICAg ICAgICAgICAgICAgICAgICAgcmMgPSByZXQ7CisKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAg ICAgICBmb3IgKCBpID0gMDsgaSA8ICgxVUwgPDwgcGFnZV9vcmRlcik7IGkrKyApCi0gICAgICAg ICAgICAgICAgaW9tbXVfdW5tYXBfcGFnZShwMm0tPmRvbWFpbiwgZ2ZuICsgaSk7CisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgcmV0ID0gaW9tbXVfdW5tYXBfcGFnZShwMm0tPmRvbWFp biwgZ2ZuICsgaSk7CisgICAgICAgICAgICAgICAgaWYgKCAhcmMgKQorICAgICAgICAgICAgICAg ICAgICByYyA9IHJldDsKKyAgICAgICAgICAgIH0KICAgICB9CiAKICAgICAvKgpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2L21tL3AybS5jCmluZGV4IDli MTk3NjkuLmRkMmM3NGMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYworKysgYi94 ZW4vYXJjaC94ODYvbW0vcDJtLmMKQEAgLTY0MSwxMCArNjQxLDIxIEBAIHAybV9yZW1vdmVfcGFn ZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9u ZyBtZm4sCiAKICAgICBpZiAoICFwYWdpbmdfbW9kZV90cmFuc2xhdGUocDJtLT5kb21haW4pICkK ICAgICB7CisgICAgICAgIGludCByYyA9IDA7CisKICAgICAgICAgaWYgKCBuZWVkX2lvbW11KHAy bS0+ZG9tYWluKSApCisgICAgICAgIHsKICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDEg PDwgcGFnZV9vcmRlcik7IGkrKyApCi0gICAgICAgICAgICAgICAgaW9tbXVfdW5tYXBfcGFnZShw Mm0tPmRvbWFpbiwgbWZuICsgaSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIGludCByZXQ7CisKKyAgICAgICAgICAgICAgICByZXQgPSBpb21tdV91 bm1hcF9wYWdlKHAybS0+ZG9tYWluLCBtZm4gKyBpKTsKKyAgICAgICAgICAgICAgICBpZiAoICFy YyApCisgICAgICAgICAgICAgICAgICAgIHJjID0gcmV0OworICAgICAgICAgICAgfQorICAgICAg ICB9CisKKyAgICAgICAgcmV0dXJuIHJjOwogICAgIH0KIAogICAgIEFTU0VSVChnZm5fbG9ja2Vk X2J5X21lKHAybSwgZ2ZuKSk7CkBAIC0yNTM1LDYgKzI1NDYsNyBAQCBpbnQgcDJtX2NoYW5nZV9h bHRwMm1fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBpZHgsCiAgICAgICAgIGlm ICggbWZuX3ZhbGlkKG1mbikgKQogICAgICAgICAgICAgcDJtX3JlbW92ZV9wYWdlKGFwMm0sIGdm bl94KG9sZF9nZm4pLCBtZm5feChtZm4pLCBQQUdFX09SREVSXzRLKTsKICAgICAgICAgcmMgPSAw OworCiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKaW5k ZXggNjczZTEyNi4uMjU1MDFjZCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv aW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCkBAIC0xNzEsMjAg KzE3MSwzMiBAQCB2b2lkIF9faHdkb21faW5pdCBpb21tdV9od2RvbV9pbml0KHN0cnVjdCBkb21h aW4gKmQpCiAgICAgewogICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwogICAgICAgICB1 bnNpZ25lZCBpbnQgaSA9IDA7CisgICAgICAgIGludCByYyA9IDA7CisKICAgICAgICAgcGFnZV9s aXN0X2Zvcl9lYWNoICggcGFnZSwgJmQtPnBhZ2VfbGlzdCApCiAgICAgICAgIHsKICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gcGFnZV90b19tZm4ocGFnZSk7CiAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIGdmbiA9IG1mbl90b19nbWZuKGQsIG1mbik7CiAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgbWFwcGluZyA9IElPTU1VRl9yZWFkYWJsZTsKKyAgICAgICAgICAgIGludCByZXQ7 CiAKICAgICAgICAgICAgIGlmICggKChwYWdlLT51LmludXNlLnR5cGVfaW5mbyAmIFBHVF9jb3Vu dF9tYXNrKSA9PSAwKSB8fAogICAgICAgICAgICAgICAgICAoKHBhZ2UtPnUuaW51c2UudHlwZV9p bmZvICYgUEdUX3R5cGVfbWFzaykKICAgICAgICAgICAgICAgICAgID09IFBHVF93cml0YWJsZV9w YWdlKSApCiAgICAgICAgICAgICAgICAgbWFwcGluZyB8PSBJT01NVUZfd3JpdGFibGU7Ci0gICAg ICAgICAgICBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFnZShkLCBnZm4sIG1mbiwgbWFwcGluZyk7 CisKKyAgICAgICAgICAgIHJldCA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGdmbiwg bWZuLCBtYXBwaW5nKTsKKyAgICAgICAgICAgIGlmICggIXJjICkKKyAgICAgICAgICAgICAgICBy YyA9IHJldDsKKwogICAgICAgICAgICAgaWYgKCAhKGkrKyAmIDB4ZmZmZmYpICkKICAgICAgICAg ICAgICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsKICAgICAgICAgfQorCisgICAgICAg IGlmICggcmMgKQorICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HCisgICAgICAgICAg ICAgICAgICAgImQlZDogSU9NTVUgbWFwcGluZyBmYWlsZWQ6ICVkIGZvciBoYXJkd2FyZSBkb21h aW5cbiIsCisgICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCByYyk7CiAgICAgfQogCiAg ICAgcmV0dXJuIGhkLT5wbGF0Zm9ybV9vcHMtPmh3ZG9tX2luaXQoZCk7Ci0tIAoxLjkuMQoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==