From mboxrd@z Thu Jan 1 00:00:00 1970 From: Quan Xu Subject: [PATCH v5 03/10] IOMMU/MMU: enhance the call trees of IOMMU unmapping and mapping Date: Wed, 18 May 2016 16:08:24 +0800 Message-ID: <1463558911-98187-4-git-send-email-quan.xu@intel.com> References: <1463558911-98187-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: <1463558911-98187-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 V2hlbiBJT01NVSBtYXBwaW5nIGlzIGZhaWxlZCwgd2UgaXNzdWUgYSBiZXN0IGVmZm9ydCByb2xs YmFjaywgc3RvcHBpbmcKSU9NTVUgbWFwcGluZywgdW5tYXBwaW5nIHRoZSBwcmV2aW91cyBJT01N VSBtYXBzIGFuZCB0aGVuIHJlcG9ydGluZyB0aGUKZXJyb3IgdXAgdG8gdGhlIGNhbGwgdHJlZXMu IFdoZW4gcm9sbGJhY2sgaXMgbm90IGZlYXNpYmxlIChpbiBlYXJseQppbml0aWFsaXphdGlvbiBw aGFzZSBvciB0cmFkZS1vZmYgb2YgY29tcGxleGl0eSkgZm9yIHRoZSBoYXJkd2FyZSBkb21haW4s CndlIGRvIHRoaW5ncyBvbiBhIGJlc3QgZWZmb3J0IGJhc2lzLCBvbmx5IHRocm93aW5nIG91dCBh biBlcnJvciBtZXNzYWdlLgoKSU9NTVUgdW5tYXBwaW5nIHNob3VsZCBwZXJoYXBzIGNvbnRpbnVl IGRlc3BpdGUgYW4gZXJyb3IsIGluIGFuIGF0dGVtcHQKdG8gZG8gYmVzdCBlZmZvcnQgY2xlYW51 cC4KClNpZ25lZC1vZmYtYnk6IFF1YW4gWHUgPHF1YW4ueHVAaW50ZWwuY29tPgoKQ0M6IEtlaXIg RnJhc2VyIDxrZWlyQHhlbi5vcmc+CkNDOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ CkNDOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpDQzogSnVuIE5h a2FqaW1hIDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPgpDQzogS2V2aW4gVGlhbiA8a2V2aW4udGlh bkBpbnRlbC5jb20+CkNDOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGV1LmNpdHJpeC5j b20+Ci0tLQogeGVuL2FyY2gveDg2L21tLmMgICAgICAgICAgICAgICB8IDE4ICsrKysrKysrKysr LS0tLS0tLQogeGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyAgICAgICB8IDM3ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyAgICAg ICAgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKystLS0tCiB4ZW4vYXJjaC94ODYvbW0vcDJt LmMgICAgICAgICAgIHwgMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogeGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyB8IDE1ICsrKysrKysrKysrKysrLQogeGVuL2lu Y2x1ZGUvYXNtLXg4Ni9wMm0uaCAgICAgICB8IDEyICsrKysrKystLS0tLQogNiBmaWxlcyBjaGFu Z2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwppbmRleCAwM2E0ZDViLi5mZWUzYjlk IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0uYworKysgYi94ZW4vYXJjaC94ODYvbW0uYwpA QCAtMjQ2MywxMSArMjQ2MywxMiBAQCBzdGF0aWMgaW50IF9fcHV0X3BhZ2VfdHlwZShzdHJ1Y3Qg cGFnZV9pbmZvICpwYWdlLAogfQogCiAKLXN0YXRpYyBpbnQgX19nZXRfcGFnZV90eXBlKHN0cnVj dCBwYWdlX2luZm8gKnBhZ2UsIHVuc2lnbmVkIGxvbmcgdHlwZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBwcmVlbXB0aWJsZSkKK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIF9fZ2V0 X3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJlZW1wdGlibGUpCiB7CiAgICAgdW5zaWduZWQg bG9uZyBueCwgeCwgeSA9IHBhZ2UtPnUuaW51c2UudHlwZV9pbmZvOwotICAgIGludCByYyA9IDA7 CisgICAgaW50IHJjID0gMCwgcmV0ID0gMDsKIAogICAgIEFTU0VSVCghKHR5cGUgJiB+KFBHVF90 eXBlX21hc2sgfCBQR1RfcGFlX3hlbl9sMikpKTsKIApAQCAtMjU3OCwxMSArMjU3OSwxMSBAQCBz dGF0aWMgaW50IF9fZ2V0X3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25l ZCBsb25nIHR5cGUsCiAgICAgICAgIGlmICggZCAmJiBpc19wdl9kb21haW4oZCkgJiYgdW5saWtl bHkobmVlZF9pb21tdShkKSkgKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoICh4ICYgUEdU X3R5cGVfbWFzaykgPT0gUEdUX3dyaXRhYmxlX3BhZ2UgKQotICAgICAgICAgICAgICAgIGlvbW11 X3VubWFwX3BhZ2UoZCwgbWZuX3RvX2dtZm4oZCwgcGFnZV90b19tZm4ocGFnZSkpKTsKKyAgICAg ICAgICAgICAgICByZXQgPSBpb21tdV91bm1hcF9wYWdlKGQsIG1mbl90b19nbWZuKGQsIHBhZ2Vf dG9fbWZuKHBhZ2UpKSk7CiAgICAgICAgICAgICBlbHNlIGlmICggdHlwZSA9PSBQR1Rfd3JpdGFi bGVfcGFnZSApCi0gICAgICAgICAgICAgICAgaW9tbXVfbWFwX3BhZ2UoZCwgbWZuX3RvX2dtZm4o ZCwgcGFnZV90b19tZm4ocGFnZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh Z2VfdG9fbWZuKHBhZ2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VRl9y ZWFkYWJsZXxJT01NVUZfd3JpdGFibGUpOworICAgICAgICAgICAgICAgIHJldCA9IGlvbW11X21h cF9wYWdlKGQsIG1mbl90b19nbWZuKGQsIHBhZ2VfdG9fbWZuKHBhZ2UpKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlX3RvX21mbihwYWdlKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVUZfcmVhZGFibGV8SU9NTVVGX3dyaXRhYmxl KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjU5OSw2ICsyNjAwLDkgQEAgc3RhdGljIGludCBf X2dldF9wYWdlX3R5cGUoc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwgdW5zaWduZWQgbG9uZyB0eXBl LAogICAgIGlmICggKHggJiBQR1RfcGFydGlhbCkgJiYgIShueCAmIFBHVF9wYXJ0aWFsKSApCiAg ICAgICAgIHB1dF9wYWdlKHBhZ2UpOwogCisgICAgaWYgKCAhcmMgKQorICAgICAgICByYyA9IHJl dDsKKwogICAgIHJldHVybiByYzsKIH0KIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3Ay bS1lcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKaW5kZXggMWVkNWI0Ny4uN2Q0ODA5 ZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYworKysgYi94ZW4vYXJjaC94 ODYvbW0vcDJtLWVwdC5jCkBAIC02NTgsNyArNjU4LDcgQEAgYm9vbF90IGVwdF9oYW5kbGVfbWlz Y29uZmlnKHVpbnQ2NF90IGdwYSkKICAqCiAgKiBSZXR1cm5zOiAwIGZvciBzdWNjZXNzLCAtZXJy bm8gZm9yIGZhaWx1cmUKICAqLwotc3RhdGljIGludAorc3RhdGljIGludCBfX211c3RfY2hlY2sK IGVwdF9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4s IG1mbl90IG1mbiwgCiAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvcmRlciwgcDJtX3R5cGVf dCBwMm10LCBwMm1fYWNjZXNzX3QgcDJtYSwKICAgICAgICAgICAgICAgaW50IHN2ZSkKQEAgLTY2 Nyw2ICs2NjcsNyBAQCBlcHRfc2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2ln bmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAgICAgdW5zaWduZWQgbG9uZyBnZm5fcmVtYWluZGVy ID0gZ2ZuOwogICAgIHVuc2lnbmVkIGludCBpLCB0YXJnZXQgPSBvcmRlciAvIEVQVF9UQUJMRV9P UkRFUjsKICAgICBpbnQgcmV0LCByYyA9IDA7CisgICAgYm9vbF90IGVudHJ5X3dyaXR0ZW4gPSAw OwogICAgIGJvb2xfdCBkaXJlY3RfbW1pbyA9IChwMm10ID09IHAybV9tbWlvX2RpcmVjdCk7CiAg ICAgdWludDhfdCBpcGF0ID0gMDsKICAgICBib29sX3QgbmVlZF9tb2RpZnlfdnRkX3RhYmxlID0g MTsKQEAgLTgxMiwxMCArODEzLDE1IEBAIGVwdF9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4g KnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwKICAgICByYyA9IGF0b21pY193cml0 ZV9lcHRfZW50cnkoZXB0X2VudHJ5LCBuZXdfZW50cnksIHRhcmdldCk7CiAgICAgaWYgKCB1bmxp a2VseShyYykgKQogICAgICAgICBvbGRfZW50cnkuZXB0ZSA9IDA7Ci0gICAgZWxzZSBpZiAoIHAy bXQgIT0gcDJtX2ludmFsaWQgJiYKLSAgICAgICAgICAgICAgKGdmbiArICgxVUwgPDwgb3JkZXIp IC0gMSA+IHAybS0+bWF4X21hcHBlZF9wZm4pICkKLSAgICAgICAgLyogVHJhY2sgdGhlIGhpZ2hl c3QgZ2ZuIGZvciB3aGljaCB3ZSBoYXZlIGV2ZXIgaGFkIGEgdmFsaWQgbWFwcGluZyAqLwotICAg ICAgICBwMm0tPm1heF9tYXBwZWRfcGZuID0gZ2ZuICsgKDFVTCA8PCBvcmRlcikgLSAxOworICAg IGVsc2UKKyAgICB7CisgICAgICAgIGVudHJ5X3dyaXR0ZW4gPSAxOworCisgICAgICAgIGlmICgg cDJtdCAhPSBwMm1faW52YWxpZCAmJgorICAgICAgICAgICAgIChnZm4gKyAoMVVMIDw8IG9yZGVy KSAtIDEgPiBwMm0tPm1heF9tYXBwZWRfcGZuKSApCisgICAgICAgICAgICAvKiBUcmFjayB0aGUg aGlnaGVzdCBnZm4gZm9yIHdoaWNoIHdlIGhhdmUgZXZlciBoYWQgYSB2YWxpZCBtYXBwaW5nICov CisgICAgICAgICAgICBwMm0tPm1heF9tYXBwZWRfcGZuID0gZ2ZuICsgKDFVTCA8PCBvcmRlcikg LSAxOworICAgIH0KIAogb3V0OgogICAgIGlmICggbmVlZHNfc3luYyApCkBAIC04MzEsMTAgKzgz NywyNSBAQCBvdXQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICggaW9tbXVfZmxhZ3MgKQog ICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDEgPDwgb3JkZXIpOyBpKysgKQotICAg ICAgICAgICAgICAgICAgICBpb21tdV9tYXBfcGFnZShkLCBnZm4gKyBpLCBtZm5feChtZm4pICsg aSwgaW9tbXVfZmxhZ3MpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg cmMgPSBpb21tdV9tYXBfcGFnZShkLCBnZm4gKyBpLCBtZm5feChtZm4pICsgaSwgaW9tbXVfZmxh Z3MpOworCisgICAgICAgICAgICAgICAgICAgIGlmICggdW5saWtlbHkocmMpICkKKyAgICAgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlvbW11X3VubWFwX3BhZ2UocDJtLT5kb21haW4sIGdm biArIGkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg ICAgICBmb3IgKCBpID0gMDsgaSA8ICgxIDw8IG9yZGVyKTsgaSsrICkKLSAgICAgICAgICAgICAg ICAgICAgaW9tbXVfdW5tYXBfcGFnZShkLCBnZm4gKyBpKTsKKyAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICAgIHJldCA9IGlvbW11X3VubWFwX3BhZ2UoZCwgZ2ZuICsgaSk7CisK KyAgICAgICAgICAgICAgICAgICAgaWYgKCAhcmMgJiYgdW5saWtlbHkocmV0KSApCisgICAgICAg ICAgICAgICAgICAgICAgICByYyA9IHJldDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgIH0K ICAgICB9CiAKQEAgLTg0Nyw3ICs4NjgsNyBAQCBvdXQ6CiAgICAgaWYgKCBpc19lcHRlX3ByZXNl bnQoJm9sZF9lbnRyeSkgKQogICAgICAgICBlcHRfZnJlZV9lbnRyeShwMm0sICZvbGRfZW50cnks IHRhcmdldCk7CiAKLSAgICBpZiAoIHJjID09IDAgJiYgcDJtX2lzX2hvc3RwMm0ocDJtKSApCisg ICAgaWYgKCBlbnRyeV93cml0dGVuICYmIHAybV9pc19ob3N0cDJtKHAybSkgKQogICAgICAgICBw Mm1fYWx0cDJtX3Byb3BhZ2F0ZV9jaGFuZ2UoZCwgX2dmbihnZm4pLCBtZm4sIG9yZGVyLCBwMm10 LCBwMm1hKTsKIAogICAgIHJldHVybiByYzsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9w Mm0tcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwppbmRleCAzZDgwNjEyLi5iNTBiZDAx IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKKysrIGIveGVuL2FyY2gveDg2 L21tL3AybS1wdC5jCkBAIC00ODUsNyArNDg1LDcgQEAgaW50IHAybV9wdF9oYW5kbGVfZGVmZXJy ZWRfY2hhbmdlcyh1aW50NjRfdCBncGEpCiB9CiAKIC8qIFJldHVybnM6IDAgZm9yIHN1Y2Nlc3Ms IC1lcnJubyBmb3IgZmFpbHVyZSAqLwotc3RhdGljIGludAorc3RhdGljIGludCBfX211c3RfY2hl Y2sKIHAybV9wdF9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9u ZyBnZm4sIG1mbl90IG1mbiwKICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2Vfb3Jk ZXIsIHAybV90eXBlX3QgcDJtdCwgcDJtX2FjY2Vzc190IHAybWEsCiAgICAgICAgICAgICAgICAg IGludCBzdmUpCkBAIC02NzMsNiArNjczLDggQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJt X2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgbWZuX3QgbWZuLAogICAgIGlmICggaW9t bXVfZW5hYmxlZCAmJiBuZWVkX2lvbW11KHAybS0+ZG9tYWluKSAmJgogICAgICAgICAgKGlvbW11 X29sZF9mbGFncyAhPSBpb21tdV9wdGVfZmxhZ3MgfHwgb2xkX21mbiAhPSBtZm5feChtZm4pKSAp CiAgICAgeworICAgICAgICBpbnQgcmV0OworCiAgICAgICAgIGlmICggaW9tbXVfdXNlX2hhcF9w dChwMm0tPmRvbWFpbikgKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIGlvbW11X29sZF9m bGFncyApCkBAIC02ODAsMTEgKzY4MiwyOSBAQCBwMm1fcHRfc2V0X2VudHJ5KHN0cnVjdCBwMm1f ZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAgICAgICAgIH0KICAg ICAgICAgZWxzZSBpZiAoIGlvbW11X3B0ZV9mbGFncyApCiAgICAgICAgICAgICBmb3IgKCBpID0g MDsgaSA8ICgxVUwgPDwgcGFnZV9vcmRlcik7IGkrKyApCi0gICAgICAgICAgICAgICAgaW9tbXVf bWFwX3BhZ2UocDJtLT5kb21haW4sIGdmbiArIGksIG1mbl94KG1mbikgKyBpLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlvbW11X3B0ZV9mbGFncyk7CisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgcmV0ID0gaW9tbXVfbWFwX3BhZ2UocDJtLT5kb21haW4sIGdmbiArIGks IG1mbl94KG1mbikgKyBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlv bW11X3B0ZV9mbGFncyk7CisKKyAgICAgICAgICAgICAgICBpZiAoIHVubGlrZWx5KHJldCkgKQor ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKQorICAg ICAgICAgICAgICAgICAgICAgICAgaW9tbXVfdW5tYXBfcGFnZShwMm0tPmRvbWFpbiwgZ2ZuICsg aSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAhcmMgKQorICAgICAgICAgICAgICAgICAg ICAgICAgcmMgPSByZXQ7CisKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmb3IgKCBp ID0gMDsgaSA8ICgxVUwgPDwgcGFnZV9vcmRlcik7IGkrKyApCi0gICAgICAgICAgICAgICAgaW9t bXVfdW5tYXBfcGFnZShwMm0tPmRvbWFpbiwgZ2ZuICsgaSk7CisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgcmV0ID0gaW9tbXVfdW5tYXBfcGFnZShwMm0tPmRvbWFpbiwgZ2ZuICsgaSk7 CisKKyAgICAgICAgICAgICAgICBpZiAoICFyYyAmJiB1bmxpa2VseShyZXQpICkKKyAgICAgICAg ICAgICAgICAgICAgcmMgPSByZXQ7CisgICAgICAgICAgICB9CiAgICAgfQogCiAgICAgLyoKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwpp bmRleCA5NGVhYmY2Li42ZTMzOTg3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMK KysrIGIveGVuL2FyY2gveDg2L21tL3AybS5jCkBAIC02MzAsNyArNjMwLDcgQEAgdm9pZCBwMm1f ZmluYWxfdGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCkKIH0KIAogCi1zdGF0aWMgaW50CitzdGF0 aWMgaW50IF9fbXVzdF9jaGVjawogcDJtX3JlbW92ZV9wYWdlKHN0cnVjdCBwMm1fZG9tYWluICpw Mm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgcGFnZV9vcmRlcikKIHsKQEAgLTY0MSwxMCArNjQxLDIyIEBAIHAybV9y ZW1vdmVfcGFnZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5z aWduZWQgbG9uZyBtZm4sCiAKICAgICBpZiAoICFwYWdpbmdfbW9kZV90cmFuc2xhdGUocDJtLT5k b21haW4pICkKICAgICB7CisgICAgICAgIGludCByYyA9IDA7CisKICAgICAgICAgaWYgKCBuZWVk X2lvbW11KHAybS0+ZG9tYWluKSApCisgICAgICAgIHsKICAgICAgICAgICAgIGZvciAoIGkgPSAw OyBpIDwgKDEgPDwgcGFnZV9vcmRlcik7IGkrKyApCi0gICAgICAgICAgICAgICAgaW9tbXVfdW5t YXBfcGFnZShwMm0tPmRvbWFpbiwgbWZuICsgaSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgIGludCByZXQ7CisKKyAgICAgICAgICAgICAgICByZXQg PSBpb21tdV91bm1hcF9wYWdlKHAybS0+ZG9tYWluLCBtZm4gKyBpKTsKKworICAgICAgICAgICAg ICAgIGlmICggIXJjICYmIHVubGlrZWx5KHJldCkgKQorICAgICAgICAgICAgICAgICAgICByYyA9 IHJldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByYzsKICAg ICB9CiAKICAgICBBU1NFUlQoZ2ZuX2xvY2tlZF9ieV9tZShwMm0sIGdmbikpOwpAQCAtNzk4LDcg KzgxMCwxNCBAQCBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGdmbiwKICAgICAgICAgICAgICAgICBQMk1fREVCVUcoIm9sZCBnZm49JSNseCAt PiBtZm4gJSNseFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dmbiAsIG1mbl94KG9t Zm4pKTsKICAgICAgICAgICAgICAgICBpZiAoIG1mbl94KG9tZm4pID09IChtZm4gKyBpKSApCi0g ICAgICAgICAgICAgICAgICAgIHAybV9yZW1vdmVfcGFnZShwMm0sIG9nZm4sIG1mbiArIGksIDAp OworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHJldDsKKworICAg ICAgICAgICAgICAgICAgICByZXQgPSBwMm1fcmVtb3ZlX3BhZ2UocDJtLCBvZ2ZuLCBtZm4gKyBp LCAwKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoICFyYyAmJiB1bmxpa2VseShyZXQpICkK KyAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gcmV0OworICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTI1MTMsOSArMjUzMiwxMiBAQCBpbnQg cDJtX2NoYW5nZV9hbHRwMm1fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBpZHgs CiAKICAgICBpZiAoIGdmbl94KG5ld19nZm4pID09IElOVkFMSURfR0ZOICkKICAgICB7Ci0gICAg ICAgIGlmICggbWZuX3ZhbGlkKG1mbikgKQotICAgICAgICAgICAgcDJtX3JlbW92ZV9wYWdlKGFw Mm0sIGdmbl94KG9sZF9nZm4pLCBtZm5feChtZm4pLCBQQUdFX09SREVSXzRLKTsKICAgICAgICAg cmMgPSAwOworCisgICAgICAgIGlmICggbWZuX3ZhbGlkKG1mbikgKQorICAgICAgICAgICAgcmMg PSBwMm1fcmVtb3ZlX3BhZ2UoYXAybSwgZ2ZuX3gob2xkX2dmbiksIG1mbl94KG1mbiksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdFX09SREVSXzRLKTsKKwogICAgICAgICBn b3RvIG91dDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lv bW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCmluZGV4IDdjNzAzMDYuLmUw NGRiMTYgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKKysrIGIv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYwpAQCAtMTcxLDIwICsxNzEsMzMgQEAgdm9p ZCBfX2h3ZG9tX2luaXQgaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QgZG9tYWluICpkKQogICAgIHsK ICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKICAgICAgICAgdW5zaWduZWQgaW50IGkg PSAwOworICAgICAgICBpbnQgcmMgPSAwOworCiAgICAgICAgIHBhZ2VfbGlzdF9mb3JfZWFjaCAo IHBhZ2UsICZkLT5wYWdlX2xpc3QgKQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBs b25nIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBn Zm4gPSBtZm5fdG9fZ21mbihkLCBtZm4pOwogICAgICAgICAgICAgdW5zaWduZWQgaW50IG1hcHBp bmcgPSBJT01NVUZfcmVhZGFibGU7CisgICAgICAgICAgICBpbnQgcmV0OwogCiAgICAgICAgICAg ICBpZiAoICgocGFnZS0+dS5pbnVzZS50eXBlX2luZm8gJiBQR1RfY291bnRfbWFzaykgPT0gMCkg fHwKICAgICAgICAgICAgICAgICAgKChwYWdlLT51LmludXNlLnR5cGVfaW5mbyAmIFBHVF90eXBl X21hc2spCiAgICAgICAgICAgICAgICAgICA9PSBQR1Rfd3JpdGFibGVfcGFnZSkgKQogICAgICAg ICAgICAgICAgIG1hcHBpbmcgfD0gSU9NTVVGX3dyaXRhYmxlOwotICAgICAgICAgICAgaGQtPnBs YXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgZ2ZuLCBtZm4sIG1hcHBpbmcpOworCisgICAgICAgICAg ICByZXQgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFnZShkLCBnZm4sIG1mbiwgbWFwcGluZyk7 CisKKyAgICAgICAgICAgIGlmICggdW5saWtlbHkocmV0KSApCisgICAgICAgICAgICAgICAgcmMg PSByZXQ7CisKICAgICAgICAgICAgIGlmICggIShpKysgJiAweGZmZmZmKSApCiAgICAgICAgICAg ICAgICAgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7CiAgICAgICAgIH0KKworICAgICAgICBp ZiAoIHJjICkKKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfV0FSTklORworICAgICAgICAgICAg ICAgICAgICJkJWQ6IElPTU1VIG1hcHBpbmcgZmFpbGVkICVkIGZvciBoYXJkd2FyZSBkb21haW4u IiwKKyAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIHJjKTsKICAgICB9CiAKICAgICBy ZXR1cm4gaGQtPnBsYXRmb3JtX29wcy0+aHdkb21faW5pdChkKTsKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS14ODYvcDJtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCmluZGV4IDY1 Njc1YTIuLmRkNTEzODAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKKysr IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaApAQCAtNTQ1LDkgKzU0NSwxMSBAQCB2b2lkIHAy bV90ZWFyZG93bihzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKTsKIHZvaWQgcDJtX2ZpbmFsX3RlYXJk b3duKHN0cnVjdCBkb21haW4gKmQpOwogCiAvKiBBZGQgYSBwYWdlIHRvIGEgZG9tYWluJ3MgcDJt IHRhYmxlICovCi1pbnQgZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgbG9uZyBnZm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBtZm4sIHVuc2lnbmVkIGludCBwYWdlX29yZGVyLCAKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwMm1fdHlwZV90IHQpOworaW50IF9fbXVzdF9jaGVjayBndWVzdF9waHlzbWFwX2Fk ZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX29yZGVyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90IHQpOwogCiAvKiBVbnR5cGVk IHZlcnNpb24gZm9yIFJBTSBvbmx5LCBmb3IgY29tcGF0aWJpbGl0eSAqLwogc3RhdGljIGlubGlu ZSBpbnQgZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShzdHJ1Y3QgZG9tYWluICpkLApAQCAtODA4LDgg KzgxMCw4IEBAIGludCBwMm1fZGVzdHJveV9hbHRwMm1fYnlfaWQoc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgaW50IGlkeCk7CiBpbnQgcDJtX3N3aXRjaF9kb21haW5fYWx0cDJtX2J5X2lkKHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBpZHgpOwogCiAvKiBDaGFuZ2UgYSBnZm4tPm1m biBtYXBwaW5nICovCi1pbnQgcDJtX2NoYW5nZV9hbHRwMm1fZ2ZuKHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGludCBpZHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdmbl90IG9sZF9n Zm4sIGdmbl90IG5ld19nZm4pOworaW50IF9fbXVzdF9jaGVjayBwMm1fY2hhbmdlX2FsdHAybV9n Zm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlkeCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdmbl90IG9sZF9nZm4sIGdmbl90IG5ld19nZm4pOwogCiAv KiBQcm9wYWdhdGUgYSBob3N0IHAybSBjaGFuZ2UgdG8gYWxsIGFsdGVybmF0ZSBwMm0ncyAqLwog dm9pZCBwMm1fYWx0cDJtX3Byb3BhZ2F0ZV9jaGFuZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3Qg Z2ZuLAotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=