From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Xu, Quan" Subject: [PATCH v8 02/11] IOMMU/MMU: enhance the call trees of IOMMU unmapping and mapping Date: Mon, 13 Jun 2016 23:17:09 +0800 Message-ID: <1465831038-43005-3-git-send-email-quan.xu@intel.com> References: <1465831038-43005-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: <1465831038-43005-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 , Feng Wu , Jan Beulich , George Dunlap , Andrew Cooper , dario.faggioli@citrix.com, Jun Nakajima , Quan Xu , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org RnJvbTogUXVhbiBYdSA8cXVhbi54dUBpbnRlbC5jb20+CgpXaGVuIElPTU1VIG1hcHBpbmcgaXMg ZmFpbGVkLCB3ZSBpc3N1ZSBhIGJlc3QgZWZmb3J0IHJvbGxiYWNrLCBzdG9wcGluZwpJT01NVSBt YXBwaW5nLCB1bm1hcHBpbmcgdGhlIHByZXZpb3VzIElPTU1VIG1hcHMgYW5kIHRoZW4gcmVwb3J0 aW5nIHRoZQplcnJvciB1cCB0byB0aGUgY2FsbCB0cmVlcy4gV2hlbiByb2xsYmFjayBpcyBub3Qg ZmVhc2libGUgKGluIGVhcmx5CmluaXRpYWxpemF0aW9uIHBoYXNlIG9yIHRyYWRlLW9mZiBvZiBj b21wbGV4aXR5KSBmb3IgdGhlIGhhcmR3YXJlIGRvbWFpbiwKd2UgZG8gdGhpbmdzIG9uIGEgYmVz dCBlZmZvcnQgYmFzaXMsIG9ubHkgdGhyb3dpbmcgb3V0IGFuIGVycm9yIG1lc3NhZ2UuCgpJT01N VSB1bm1hcHBpbmcgc2hvdWxkIHBlcmhhcHMgY29udGludWUgZGVzcGl0ZSBhbiBlcnJvciwgaW4g YW4gYXR0ZW1wdAp0byBkbyBiZXN0IGVmZm9ydCBjbGVhbnVwLgoKU2lnbmVkLW9mZi1ieTogUXVh biBYdSA8cXVhbi54dUBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxp Y2hAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBTdXJhdmVlIFN1dGhpa3VscGFuaXQgPHN1cmF2ZWUu c3V0aGlrdWxwYW5pdEBhbWQuY29tPgpBY2tlZC1ieTogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBp bnRlbC5jb20+CgpDQzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDQzogQW5kcmV3 IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ0M6IEp1biBOYWthamltYSA8anVu Lm5ha2FqaW1hQGludGVsLmNvbT4KQ0M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29t PgpDQzogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgpDQzogU3Vy YXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KQ0M6IEZl bmcgV3UgPGZlbmcud3VAaW50ZWwuY29tPgoKdjg6CiAgMS4gYWRkIG1pc3NpbmcgYmxhbmsKICAy LiBhZGQgYSBicmllZiBjb21tZW50IChKYW4sIGlmIHlvdSBoYXZlIGEgYmV0dGVyIG9uZSwgY291 bGQgeW91IGhlbHAgbWUKICAgICBlbmhhbmNlIGl0IHVwb24gY29tbWl0PykKLS0tCiB4ZW4vYXJj aC94ODYvbW0uYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrLS0tLQogeGVu L2FyY2gveDg2L21tL3AybS1lcHQuYyAgICAgICAgICAgICAgICAgICB8IDM5ICsrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tCiB4ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMgICAgICAgICAgICAg ICAgICAgIHwgMjggKysrKysrKysrKysrKysrKysrLS0tCiB4ZW4vYXJjaC94ODYvbW0vcDJtLmMg ICAgICAgICAgICAgICAgICAgICAgIHwgMjMgKysrKysrKysrKysrKystLS0KIHhlbi9hcmNoL3g4 Ni94ODZfNjQvbW0uYyAgICAgICAgICAgICAgICAgICAgfCAgOSArKysrKystCiB4ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jIHwgMTUgKysrKysrKysrLS0KIHhlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgICAgICAgICAgICAgfCAxMyArKysrKysrKystCiB4 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQveDg2L3Z0ZC5jICAgICAgIHwgMTUgKysrKysrKysr LS0KIHhlbi9pbmNsdWRlL3hlbi9pb21tdS5oICAgICAgICAgICAgICAgICAgICAgfCAgNiArKy0t LQogOSBmaWxlcyBjaGFuZ2VkLCAxMzQgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwppbmRleCA4 ZDEwYTNlLi5hZTdjOGFiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0uYworKysgYi94ZW4v YXJjaC94ODYvbW0uYwpAQCAtMjQ2Nyw3ICsyNDY3LDcgQEAgc3RhdGljIGludCBfX2dldF9wYWdl X3R5cGUoc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwgdW5zaWduZWQgbG9uZyB0eXBlLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHByZWVtcHRpYmxlKQogewogICAgIHVuc2lnbmVkIGxv bmcgbngsIHgsIHkgPSBwYWdlLT51LmludXNlLnR5cGVfaW5mbzsKLSAgICBpbnQgcmMgPSAwOwor ICAgIGludCByYyA9IDAsIGlvbW11X3JldCA9IDA7CiAKICAgICBBU1NFUlQoISh0eXBlICYgfihQ R1RfdHlwZV9tYXNrIHwgUEdUX3BhZV94ZW5fbDIpKSk7CiAKQEAgLTI1NzgsMTEgKzI1NzgsMTEg QEAgc3RhdGljIGludCBfX2dldF9wYWdlX3R5cGUoc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwgdW5z aWduZWQgbG9uZyB0eXBlLAogICAgICAgICBpZiAoIGQgJiYgaXNfcHZfZG9tYWluKGQpICYmIHVu bGlrZWx5KG5lZWRfaW9tbXUoZCkpICkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCAoeCAm IFBHVF90eXBlX21hc2spID09IFBHVF93cml0YWJsZV9wYWdlICkKLSAgICAgICAgICAgICAgICBp b21tdV91bm1hcF9wYWdlKGQsIG1mbl90b19nbWZuKGQsIHBhZ2VfdG9fbWZuKHBhZ2UpKSk7Cisg ICAgICAgICAgICAgICAgaW9tbXVfcmV0ID0gaW9tbXVfdW5tYXBfcGFnZShkLCBtZm5fdG9fZ21m bihkLCBwYWdlX3RvX21mbihwYWdlKSkpOwogICAgICAgICAgICAgZWxzZSBpZiAoIHR5cGUgPT0g UEdUX3dyaXRhYmxlX3BhZ2UgKQotICAgICAgICAgICAgICAgIGlvbW11X21hcF9wYWdlKGQsIG1m bl90b19nbWZuKGQsIHBhZ2VfdG9fbWZuKHBhZ2UpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYWdlX3RvX21mbihwYWdlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJT01NVUZfcmVhZGFibGV8SU9NTVVGX3dyaXRhYmxlKTsKKyAgICAgICAgICAgICAgICBpb21t dV9yZXQgPSBpb21tdV9tYXBfcGFnZShkLCBtZm5fdG9fZ21mbihkLCBwYWdlX3RvX21mbihwYWdl KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV90b19t Zm4ocGFnZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9N TVVGX3JlYWRhYmxlfElPTU1VRl93cml0YWJsZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI1 OTksNiArMjU5OSw5IEBAIHN0YXRpYyBpbnQgX19nZXRfcGFnZV90eXBlKHN0cnVjdCBwYWdlX2lu Zm8gKnBhZ2UsIHVuc2lnbmVkIGxvbmcgdHlwZSwKICAgICBpZiAoICh4ICYgUEdUX3BhcnRpYWwp ICYmICEobnggJiBQR1RfcGFydGlhbCkgKQogICAgICAgICBwdXRfcGFnZShwYWdlKTsKIAorICAg IGlmICggIXJjICkKKyAgICAgICAgcmMgPSBpb21tdV9yZXQ7CisKICAgICByZXR1cm4gcmM7CiB9 CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgYi94ZW4vYXJjaC94ODYv bW0vcDJtLWVwdC5jCmluZGV4IDFlZDViNDcuLmEyMzMxOTQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni9tbS9wMm0tZXB0LmMKKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwpAQCAtNjY3 LDYgKzY2Nyw3IEBAIGVwdF9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWdu ZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwKICAgICB1bnNpZ25lZCBsb25nIGdmbl9yZW1haW5kZXIg PSBnZm47CiAgICAgdW5zaWduZWQgaW50IGksIHRhcmdldCA9IG9yZGVyIC8gRVBUX1RBQkxFX09S REVSOwogICAgIGludCByZXQsIHJjID0gMDsKKyAgICBib29sX3QgZW50cnlfd3JpdHRlbiA9IDA7 CiAgICAgYm9vbF90IGRpcmVjdF9tbWlvID0gKHAybXQgPT0gcDJtX21taW9fZGlyZWN0KTsKICAg ICB1aW50OF90IGlwYXQgPSAwOwogICAgIGJvb2xfdCBuZWVkX21vZGlmeV92dGRfdGFibGUgPSAx OwpAQCAtODEyLDEwICs4MTMsMTUgQEAgZXB0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgbWZuX3QgbWZuLAogICAgIHJjID0gYXRvbWljX3dyaXRl X2VwdF9lbnRyeShlcHRfZW50cnksIG5ld19lbnRyeSwgdGFyZ2V0KTsKICAgICBpZiAoIHVubGlr ZWx5KHJjKSApCiAgICAgICAgIG9sZF9lbnRyeS5lcHRlID0gMDsKLSAgICBlbHNlIGlmICggcDJt dCAhPSBwMm1faW52YWxpZCAmJgotICAgICAgICAgICAgICAoZ2ZuICsgKDFVTCA8PCBvcmRlcikg LSAxID4gcDJtLT5tYXhfbWFwcGVkX3BmbikgKQotICAgICAgICAvKiBUcmFjayB0aGUgaGlnaGVz dCBnZm4gZm9yIHdoaWNoIHdlIGhhdmUgZXZlciBoYWQgYSB2YWxpZCBtYXBwaW5nICovCi0gICAg ICAgIHAybS0+bWF4X21hcHBlZF9wZm4gPSBnZm4gKyAoMVVMIDw8IG9yZGVyKSAtIDE7CisgICAg ZWxzZQorICAgIHsKKyAgICAgICAgZW50cnlfd3JpdHRlbiA9IDE7CisKKyAgICAgICAgaWYgKCBw Mm10ICE9IHAybV9pbnZhbGlkICYmCisgICAgICAgICAgICAgKGdmbiArICgxVUwgPDwgb3JkZXIp IC0gMSA+IHAybS0+bWF4X21hcHBlZF9wZm4pICkKKyAgICAgICAgICAgIC8qIFRyYWNrIHRoZSBo aWdoZXN0IGdmbiBmb3Igd2hpY2ggd2UgaGF2ZSBldmVyIGhhZCBhIHZhbGlkIG1hcHBpbmcgKi8K KyAgICAgICAgICAgIHAybS0+bWF4X21hcHBlZF9wZm4gPSBnZm4gKyAoMVVMIDw8IG9yZGVyKSAt IDE7CisgICAgfQogCiBvdXQ6CiAgICAgaWYgKCBuZWVkc19zeW5jICkKQEAgLTgzMSwxMCArODM3 LDI5IEBAIG91dDoKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCBpb21tdV9mbGFncyApCiAg ICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCAoMSA8PCBvcmRlcik7IGkrKyApCi0gICAg ICAgICAgICAgICAgICAgIGlvbW11X21hcF9wYWdlKGQsIGdmbiArIGksIG1mbl94KG1mbikgKyBp LCBpb21tdV9mbGFncyk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy YyA9IGlvbW11X21hcF9wYWdlKGQsIGdmbiArIGksIG1mbl94KG1mbikgKyBpLCBpb21tdV9mbGFn cyk7CisgICAgICAgICAgICAgICAgICAgIGlmICggdW5saWtlbHkocmMpICkKKyAgICAgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICog SU9NTVUgdW5tYXBwaW5nIHNob3VsZCBwZXJoYXBzIGNvbnRpbnVlIGRlc3BpdGUgYW4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKiBlcnJvciBpbiBhbiBhdHRlbXB0IHRvIGRvIGJlc3Qg ZWZmb3J0IGNsZWFudXAsIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGNvbnN1 bWUgdGhlIGVycm9yIGFzIF9fbXVzdF9jaGVjayBhbm5vdGF0aW9uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaW9tbXVf dW5tYXBfcGFnZShwMm0tPmRvbWFpbiwgZ2ZuICsgaSkgKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNl CiAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCAoMSA8PCBvcmRlcik7IGkrKyApCi0g ICAgICAgICAgICAgICAgICAgIGlvbW11X3VubWFwX3BhZ2UoZCwgZ2ZuICsgaSk7CisgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXQgPSBpb21tdV91bm1hcF9wYWdlKGQs IGdmbiArIGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoICFyYyApCisgICAgICAgICAgICAg ICAgICAgICAgICByYyA9IHJldDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9 CiAKQEAgLTg0Nyw3ICs4NzIsNyBAQCBvdXQ6CiAgICAgaWYgKCBpc19lcHRlX3ByZXNlbnQoJm9s ZF9lbnRyeSkgKQogICAgICAgICBlcHRfZnJlZV9lbnRyeShwMm0sICZvbGRfZW50cnksIHRhcmdl dCk7CiAKLSAgICBpZiAoIHJjID09IDAgJiYgcDJtX2lzX2hvc3RwMm0ocDJtKSApCisgICAgaWYg KCBlbnRyeV93cml0dGVuICYmIHAybV9pc19ob3N0cDJtKHAybSkgKQogICAgICAgICBwMm1fYWx0 cDJtX3Byb3BhZ2F0ZV9jaGFuZ2UoZCwgX2dmbihnZm4pLCBtZm4sIG9yZGVyLCBwMm10LCBwMm1h KTsKIAogICAgIHJldHVybiByYzsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQu YyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwppbmRleCAzZDgwNjEyLi41MDZlODY2IDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKKysrIGIveGVuL2FyY2gveDg2L21tL3Ay bS1wdC5jCkBAIC02NzMsNiArNjczLDggQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2Rv bWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgbWZuX3QgbWZuLAogICAgIGlmICggaW9tbXVf ZW5hYmxlZCAmJiBuZWVkX2lvbW11KHAybS0+ZG9tYWluKSAmJgogICAgICAgICAgKGlvbW11X29s ZF9mbGFncyAhPSBpb21tdV9wdGVfZmxhZ3MgfHwgb2xkX21mbiAhPSBtZm5feChtZm4pKSApCiAg ICAgeworICAgICAgICBBU1NFUlQocmMgPT0gMCk7CisKICAgICAgICAgaWYgKCBpb21tdV91c2Vf aGFwX3B0KHAybS0+ZG9tYWluKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICggaW9tbXVf b2xkX2ZsYWdzICkKQEAgLTY4MCwxMSArNjgyLDMxIEBAIHAybV9wdF9zZXRfZW50cnkoc3RydWN0 IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwKICAgICAgICAg fQogICAgICAgICBlbHNlIGlmICggaW9tbXVfcHRlX2ZsYWdzICkKICAgICAgICAgICAgIGZvciAo IGkgPSAwOyBpIDwgKDFVTCA8PCBwYWdlX29yZGVyKTsgaSsrICkKLSAgICAgICAgICAgICAgICBp b21tdV9tYXBfcGFnZShwMm0tPmRvbWFpbiwgZ2ZuICsgaSwgbWZuX3gobWZuKSArIGksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9tbXVfcHRlX2ZsYWdzKTsKKyAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICByYyA9IGlvbW11X21hcF9wYWdlKHAybS0+ZG9tYWluLCBnZm4g KyBpLCBtZm5feChtZm4pICsgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlvbW11X3B0ZV9mbGFncyk7CisgICAgICAgICAgICAgICAgaWYgKCB1bmxpa2VseShyYykgKQor ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKQorICAg ICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIElPTU1V IHVubWFwcGluZyBzaG91bGQgcGVyaGFwcyBjb250aW51ZSBkZXNwaXRlIGFuCisgICAgICAgICAg ICAgICAgICAgICAgICAgKiBlcnJvciBpbiBhbiBhdHRlbXB0IHRvIGRvIGJlc3QgZWZmb3J0IGNs ZWFudXAsIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICogY29uc3VtZSB0aGUgZXJyb3Ig YXMgX19tdXN0X2NoZWNrIGFubm90YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8K KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaW9tbXVfdW5tYXBfcGFnZShwMm0tPmRvbWFp biwgZ2ZuICsgaSkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCAoMVVMIDw8IHBh Z2Vfb3JkZXIpOyBpKysgKQotICAgICAgICAgICAgICAgIGlvbW11X3VubWFwX3BhZ2UocDJtLT5k b21haW4sIGdmbiArIGkpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludCByZXQg PSBpb21tdV91bm1hcF9wYWdlKHAybS0+ZG9tYWluLCBnZm4gKyBpKTsKKworICAgICAgICAgICAg ICAgIGlmICggIXJjICkKKyAgICAgICAgICAgICAgICAgICAgcmMgPSByZXQ7CisgICAgICAgICAg ICB9CiAgICAgfQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYyBi L3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwppbmRleCA5YjE5NzY5Li5jYWJmN2MzIDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvbW0vcDJtLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3AybS5jCkBAIC02 NDEsMTAgKzY0MSwyMCBAQCBwMm1fcmVtb3ZlX3BhZ2Uoc3RydWN0IHAybV9kb21haW4gKnAybSwg dW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogCiAgICAgaWYgKCAhcGFnaW5n X21vZGVfdHJhbnNsYXRlKHAybS0+ZG9tYWluKSApCiAgICAgeworICAgICAgICBpbnQgcmMgPSAw OworCiAgICAgICAgIGlmICggbmVlZF9pb21tdShwMm0tPmRvbWFpbikgKQorICAgICAgICB7CiAg ICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICgxIDw8IHBhZ2Vfb3JkZXIpOyBpKysgKQotICAg ICAgICAgICAgICAgIGlvbW11X3VubWFwX3BhZ2UocDJtLT5kb21haW4sIG1mbiArIGkpOwotICAg ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgcmV0ID0g aW9tbXVfdW5tYXBfcGFnZShwMm0tPmRvbWFpbiwgbWZuICsgaSk7CisKKyAgICAgICAgICAgICAg ICBpZiAoICFyYyApCisgICAgICAgICAgICAgICAgICAgIHJjID0gcmV0OworICAgICAgICAgICAg fQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJjOwogICAgIH0KIAogICAgIEFTU0VSVChn Zm5fbG9ja2VkX2J5X21lKHAybSwgZ2ZuKSk7CkBAIC03MDAsNyArNzEwLDE0IEBAIGd1ZXN0X3Bo eXNtYXBfYWRkX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAogICAg ICAgICAgICAgICAgIGlmICggcmMgIT0gMCApCiAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICB3aGlsZSAoIGktLSA+IDAgKQotICAgICAgICAgICAgICAgICAgICAgICAgaW9t bXVfdW5tYXBfcGFnZShkLCBtZm4gKyBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qCisg ICAgICAgICAgICAgICAgICAgICAgICAgKiBJT01NVSB1bm1hcHBpbmcgc2hvdWxkIHBlcmhhcHMg Y29udGludWUgZGVzcGl0ZSBhbgorICAgICAgICAgICAgICAgICAgICAgICAgICogZXJyb3IgaW4g YW4gYXR0ZW1wdCB0byBkbyBiZXN0IGVmZm9ydCBjbGVhbnVwLCBhbmQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAqIGNvbnN1bWUgdGhlIGVycm9yIGFzIF9fbXVzdF9jaGVjayBhbm5vdGF0aW9u LgorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoIGlvbW11X3VubWFwX3BhZ2UoZCwgbWZuICsgaSkgKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByYzsKICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2 XzY0L21tLmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMKaW5kZXggZTA3ZTY5ZS4uYWY3MTAy ZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jCisrKyBiL3hlbi9hcmNoL3g4 Ni94ODZfNjQvbW0uYwpAQCAtMTQzNiw3ICsxNDM2LDE0IEBAIGludCBtZW1vcnlfYWRkKHVuc2ln bmVkIGxvbmcgc3BmbiwgdW5zaWduZWQgbG9uZyBlcGZuLCB1bnNpZ25lZCBpbnQgcHhtKQogICAg ICAgICBpZiAoIGkgIT0gZXBmbiApCiAgICAgICAgIHsKICAgICAgICAgICAgIHdoaWxlIChpLS0g PiBvbGRfbWF4KQotICAgICAgICAgICAgICAgIGlvbW11X3VubWFwX3BhZ2UoaGFyZHdhcmVfZG9t YWluLCBpKTsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIElPTU1VIHVu bWFwcGluZyBzaG91bGQgcGVyaGFwcyBjb250aW51ZSBkZXNwaXRlIGFuCisgICAgICAgICAgICAg ICAgICogZXJyb3IgaW4gYW4gYXR0ZW1wdCB0byBkbyBiZXN0IGVmZm9ydCBjbGVhbnVwLCBhbmQK KyAgICAgICAgICAgICAgICAgKiBjb25zdW1lIHRoZSBlcnJvciBhcyBfX211c3RfY2hlY2sgYW5u b3RhdGlvbi4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoIGlvbW11 X3VubWFwX3BhZ2UoaGFyZHdhcmVfZG9tYWluLCBpKSApCisgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOworCiAgICAgICAgICAgICBnb3RvIGRlc3Ryb3lfbTJwOwogICAgICAgICB9CiAgICAg fQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUu YyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMKaW5kZXggZmNl OTgyNy4uNGE4NjBhZiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3Bj aV9hbWRfaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9p b21tdS5jCkBAIC0yODIsNiArMjgyLDggQEAgc3RhdGljIHZvaWQgX19od2RvbV9pbml0IGFtZF9p b21tdV9od2RvbV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAKICAgICBpZiAoICFpb21tdV9wYXNz dGhyb3VnaCAmJiAhbmVlZF9pb21tdShkKSApCiAgICAgeworICAgICAgICBpbnQgcmMgPSAwOwor CiAgICAgICAgIC8qIFNldCB1cCAxOjEgcGFnZSB0YWJsZSBmb3IgZG9tMCAqLwogICAgICAgICBm b3IgKCBpID0gMDsgaSA8IG1heF9wZHg7IGkrKyApCiAgICAgICAgIHsKQEAgLTI5MiwxMiArMjk0 LDIxIEBAIHN0YXRpYyB2b2lkIF9faHdkb21faW5pdCBhbWRfaW9tbXVfaHdkb21faW5pdChzdHJ1 Y3QgZG9tYWluICpkKQogICAgICAgICAgICAgICogYSBwZm5fdmFsaWQoKSBjaGVjayB3b3VsZCBz ZWVtIGRlc2lyYWJsZSBoZXJlLgogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoIG1m bl92YWxpZChwZm4pICkKLSAgICAgICAgICAgICAgICBhbWRfaW9tbXVfbWFwX3BhZ2UoZCwgcGZu LCBwZm4sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVUZfcmVhZGFi bGV8SU9NTVVGX3dyaXRhYmxlKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQg cmV0ID0gYW1kX2lvbW11X21hcF9wYWdlKGQsIHBmbiwgcGZuLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0YWJs ZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoICFyYyApCisgICAgICAgICAgICAgICAgICAgIHJj ID0gcmV0OworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoICEoaSAmIDB4ZmZmZmYp ICkKICAgICAgICAgICAgICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsKICAgICAgICAg fQorCisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJkJWQ6 IElPTU1VIG1hcHBpbmcgZmFpbGVkOiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkLT5kb21haW5faWQsIHJjKTsKICAgICB9CiAKICAgICBmb3JfZWFjaF9hbWRfaW9tbXUgKCBp b21tdSApCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jIGIveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYwppbmRleCA2NzNlMTI2Li5lYzg1MzUyIDEwMDY0 NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2lvbW11LmMKQEAgLTE3MSwyMCArMTcxLDMxIEBAIHZvaWQgX19od2RvbV9p bml0IGlvbW11X2h3ZG9tX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICB7CiAgICAgICAgIHN0 cnVjdCBwYWdlX2luZm8gKnBhZ2U7CiAgICAgICAgIHVuc2lnbmVkIGludCBpID0gMDsKKyAgICAg ICAgaW50IHJjID0gMDsKKwogICAgICAgICBwYWdlX2xpc3RfZm9yX2VhY2ggKCBwYWdlLCAmZC0+ cGFnZV9saXN0ICkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSBw YWdlX3RvX21mbihwYWdlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuID0gbWZuX3Rv X2dtZm4oZCwgbWZuKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXBwaW5nID0gSU9NTVVG X3JlYWRhYmxlOworICAgICAgICAgICAgaW50IHJldDsKIAogICAgICAgICAgICAgaWYgKCAoKHBh Z2UtPnUuaW51c2UudHlwZV9pbmZvICYgUEdUX2NvdW50X21hc2spID09IDApIHx8CiAgICAgICAg ICAgICAgICAgICgocGFnZS0+dS5pbnVzZS50eXBlX2luZm8gJiBQR1RfdHlwZV9tYXNrKQogICAg ICAgICAgICAgICAgICAgPT0gUEdUX3dyaXRhYmxlX3BhZ2UpICkKICAgICAgICAgICAgICAgICBt YXBwaW5nIHw9IElPTU1VRl93cml0YWJsZTsKLSAgICAgICAgICAgIGhkLT5wbGF0Zm9ybV9vcHMt Pm1hcF9wYWdlKGQsIGdmbiwgbWZuLCBtYXBwaW5nKTsKKworICAgICAgICAgICAgcmV0ID0gaGQt PnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgZ2ZuLCBtZm4sIG1hcHBpbmcpOworICAgICAgICAg ICAgaWYgKCAhcmMgKQorICAgICAgICAgICAgICAgIHJjID0gcmV0OworCiAgICAgICAgICAgICBp ZiAoICEoaSsrICYgMHhmZmZmZikgKQogICAgICAgICAgICAgICAgIHByb2Nlc3NfcGVuZGluZ19z b2Z0aXJxcygpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBw cmludGsoWEVOTE9HX1dBUk5JTkcgImQlZDogSU9NTVUgbWFwcGluZyBmYWlsZWQ6ICVkXG4iLAor ICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgcmMpOwogICAgIH0KIAogICAgIHJldHVy biBoZC0+cGxhdGZvcm1fb3BzLT5od2RvbV9pbml0KGQpOwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvdnRkL3g4Ni92dGQuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0 ZC94ODYvdnRkLmMKaW5kZXggYzBkNmFhYi4uOTc0YjUzNyAxMDA2NDQKLS0tIGEveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvdnRkL3g4Ni92dGQuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC92dGQveDg2L3Z0ZC5jCkBAIC0xMTgsNiArMTE4LDggQEAgdm9pZCBfX2h3ZG9tX2luaXQgdnRk X3NldF9od2RvbV9tYXBwaW5nKHN0cnVjdCBkb21haW4gKmQpCiAKICAgICBmb3IgKCBpID0gMDsg aSA8IHRvcDsgaSsrICkKICAgICB7CisgICAgICAgIGludCByYyA9IDA7CisKICAgICAgICAgLyoK ICAgICAgICAgICogU2V0IHVwIDE6MSBtYXBwaW5nIGZvciBkb20wLiBEZWZhdWx0IHRvIHVzZSBv bmx5IGNvbnZlbnRpb25hbCBSQU0KICAgICAgICAgICogYXJlYXMgYW5kIGxldCBSTVJScyBpbmNs dWRlIG5lZWRlZCByZXNlcnZlZCByZWdpb25zLiBXaGVuIHNldCwgdGhlCkBAIC0xNDAsOCArMTQy LDE3IEBAIHZvaWQgX19od2RvbV9pbml0IHZ0ZF9zZXRfaHdkb21fbWFwcGluZyhzdHJ1Y3QgZG9t YWluICpkKQogCiAgICAgICAgIHRtcCA9IDEgPDwgKFBBR0VfU0hJRlQgLSBQQUdFX1NISUZUXzRL KTsKICAgICAgICAgZm9yICggaiA9IDA7IGogPCB0bXA7IGorKyApCi0gICAgICAgICAgICBpb21t dV9tYXBfcGFnZShkLCBwZm4gKiB0bXAgKyBqLCBwZm4gKiB0bXAgKyBqLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0YWJsZSk7CisgICAgICAg IHsKKyAgICAgICAgICAgIGludCByZXQgPSBpb21tdV9tYXBfcGFnZShkLCBwZm4gKiB0bXAgKyBq LCBwZm4gKiB0bXAgKyBqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElP TU1VRl9yZWFkYWJsZXxJT01NVUZfd3JpdGFibGUpOworCisgICAgICAgICAgICBpZiAoICFyYyAp CisgICAgICAgICAgICAgICByYyA9IHJldDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggcmMg KQorICAgICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgVlREUFJFRklYICIgZCVkOiBJT01N VSBtYXBwaW5nIGZhaWxlZDogJWRcbiIsCisgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQs IHJjKTsKIAogICAgICAgICBpZiAoIShpICYgKDB4ZmZmZmYgPj4gKFBBR0VfU0hJRlQgLSBQQUdF X1NISUZUXzRLKSkpKQogICAgICAgICAgICAgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7CmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCBiL3hlbi9pbmNsdWRlL3hlbi9pb21t dS5oCmluZGV4IDE5YmE5NzYuLmVhYTJjNzcgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9p b21tdS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oCkBAIC03NCw5ICs3NCw5IEBAIHZv aWQgaW9tbXVfdGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCk7CiAjZGVmaW5lIElPTU1VRl9yZWFk YWJsZSAgKDF1PDxfSU9NTVVGX3JlYWRhYmxlKQogI2RlZmluZSBfSU9NTVVGX3dyaXRhYmxlIDEK ICNkZWZpbmUgSU9NTVVGX3dyaXRhYmxlICAoMXU8PF9JT01NVUZfd3JpdGFibGUpCi1pbnQgaW9t bXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVk IGxvbmcgbWZuLAotICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncyk7Ci1pbnQg aW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbik7Citp bnQgX19tdXN0X2NoZWNrIGlvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgZ2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IG1mbiwgdW5zaWduZWQgaW50IGZsYWdzKTsKK2ludCBfX211c3RfY2hlY2sgaW9tbXVfdW5tYXBf cGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbik7CiAKIGVudW0gaW9tbXVf ZmVhdHVyZQogewotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=