From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Xu, Quan" Subject: [PATCH v7 02/11] IOMMU/MMU: enhance the call trees of IOMMU unmapping and mapping Date: Wed, 8 Jun 2016 16:58:55 +0800 Message-ID: <1465376344-28290-3-git-send-email-quan.xu@intel.com> References: <1465376344-28290-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: <1465376344-28290-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 ZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KCnY3OgogIDEuIGFkZCBfX211 c3RfY2hlY2sgYW5ub3RhdGlvbiB0byBpb21tdV9tYXBfcGFnZSgpIC8gaW9tbXVfdW5tYXBfcGFn ZSgpLgogIDIuIHVzZSB0aGUgc2FtZSBjb2RlIHN0cnVjdHVyZSBmb3IgcDJtX3B0X3NldF9lbnRy eSgpIGFzIEkgZG8gb24gdGhlCiAgICAgRVBUIHNpZGUuCiAgMy4gZml4IGFtZF9pb21tdV9od2Rv bV9pbml0KCkgLyBpb21tdV9od2RvbV9pbml0KCkgaGVyZS4KICA0LiBlbmhhbmNlIHByaW50IGlu Zm9tYXRpb24uIEl0IGlzIG5vIG5lZWQgdG8gbWVudGlvbiAiaGFyZHdhcmUgZG9tYWluIgogICAg IGluIHByaW50ayBvZiBpb21tdV9od2RvbV9pbml0KCkuCiAgNS4gbWFrZSB0aGUgYXNzaWdubWVu dCBiZSByZXBsYWNlZCBieSBpdHMgcmlnaHQgc2lkZSBiZWNvbWluZwogICAgIHRoZSB2YXJpYWJs ZSdzIGluaXRpYWxpemVyLgotLS0KIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAxMyArKysrKystLS0tLQogeGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyAgICAg ICAgICAgICAgICAgICB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiB4ZW4vYXJj aC94ODYvbW0vcDJtLXB0LmMgICAgICAgICAgICAgICAgICAgIHwgMjMgKysrKysrKysrKysrKysr Ky0tLQogeGVuL2FyY2gveDg2L21tL3AybS5jICAgICAgICAgICAgICAgICAgICAgICB8IDE4ICsr KysrKysrKysrKy0tLQogeGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jICAgICAgICAgICAgICAgICAg ICB8ICA0ICsrKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMg fCAxNSArKysrKysrKysrKy0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jICAgICAg ICAgICAgIHwgMTMgKysrKysrKysrKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC94ODYv dnRkLmMgICAgICAgfCAxNSArKysrKysrKysrKy0tCiB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAg ICAgICAgICAgICAgICAgICAgIHwgIDYgKystLS0KIDkgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2Vy dGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5j IGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggOGQxMGEzZS4uYWU3YzhhYiAxMDA2NDQKLS0tIGEv eGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gveDg2L21tLmMKQEAgLTI0NjcsNyArMjQ2 Nyw3IEBAIHN0YXRpYyBpbnQgX19nZXRfcGFnZV90eXBlKHN0cnVjdCBwYWdlX2luZm8gKnBhZ2Us IHVuc2lnbmVkIGxvbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwcmVl bXB0aWJsZSkKIHsKICAgICB1bnNpZ25lZCBsb25nIG54LCB4LCB5ID0gcGFnZS0+dS5pbnVzZS50 eXBlX2luZm87Ci0gICAgaW50IHJjID0gMDsKKyAgICBpbnQgcmMgPSAwLCBpb21tdV9yZXQgPSAw OwogCiAgICAgQVNTRVJUKCEodHlwZSAmIH4oUEdUX3R5cGVfbWFzayB8IFBHVF9wYWVfeGVuX2wy KSkpOwogCkBAIC0yNTc4LDExICsyNTc4LDExIEBAIHN0YXRpYyBpbnQgX19nZXRfcGFnZV90eXBl KHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsIHVuc2lnbmVkIGxvbmcgdHlwZSwKICAgICAgICAgaWYg KCBkICYmIGlzX3B2X2RvbWFpbihkKSAmJiB1bmxpa2VseShuZWVkX2lvbW11KGQpKSApCiAgICAg ICAgIHsKICAgICAgICAgICAgIGlmICggKHggJiBQR1RfdHlwZV9tYXNrKSA9PSBQR1Rfd3JpdGFi bGVfcGFnZSApCi0gICAgICAgICAgICAgICAgaW9tbXVfdW5tYXBfcGFnZShkLCBtZm5fdG9fZ21m bihkLCBwYWdlX3RvX21mbihwYWdlKSkpOworICAgICAgICAgICAgICAgIGlvbW11X3JldCA9IGlv bW11X3VubWFwX3BhZ2UoZCwgbWZuX3RvX2dtZm4oZCwgcGFnZV90b19tZm4ocGFnZSkpKTsKICAg ICAgICAgICAgIGVsc2UgaWYgKCB0eXBlID09IFBHVF93cml0YWJsZV9wYWdlICkKLSAgICAgICAg ICAgICAgICBpb21tdV9tYXBfcGFnZShkLCBtZm5fdG9fZ21mbihkLCBwYWdlX3RvX21mbihwYWdl KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV90b19tZm4ocGFnZSksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0 YWJsZSk7CisgICAgICAgICAgICAgICAgaW9tbXVfcmV0ID0gaW9tbXVfbWFwX3BhZ2UoZCwgbWZu X3RvX2dtZm4oZCwgcGFnZV90b19tZm4ocGFnZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBhZ2VfdG9fbWZuKHBhZ2UpLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VRl9yZWFkYWJsZXxJT01NVUZfd3JpdGFibGUp OwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTk5LDYgKzI1OTksOSBAQCBzdGF0aWMgaW50IF9f Z2V0X3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25nIHR5cGUs CiAgICAgaWYgKCAoeCAmIFBHVF9wYXJ0aWFsKSAmJiAhKG54ICYgUEdUX3BhcnRpYWwpICkKICAg ICAgICAgcHV0X3BhZ2UocGFnZSk7CiAKKyAgICBpZiAoICFyYyApCisgICAgICAgIHJjID0gaW9t bXVfcmV0OworCiAgICAgcmV0dXJuIHJjOwogfQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv bW0vcDJtLWVwdC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwppbmRleCAxZWQ1YjQ3Li41 YWViYzI0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCisrKyBiL3hlbi9h cmNoL3g4Ni9tbS9wMm0tZXB0LmMKQEAgLTY2Nyw2ICs2NjcsNyBAQCBlcHRfc2V0X2VudHJ5KHN0 cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAgICAg dW5zaWduZWQgbG9uZyBnZm5fcmVtYWluZGVyID0gZ2ZuOwogICAgIHVuc2lnbmVkIGludCBpLCB0 YXJnZXQgPSBvcmRlciAvIEVQVF9UQUJMRV9PUkRFUjsKICAgICBpbnQgcmV0LCByYyA9IDA7Cisg ICAgYm9vbF90IGVudHJ5X3dyaXR0ZW4gPSAwOwogICAgIGJvb2xfdCBkaXJlY3RfbW1pbyA9IChw Mm10ID09IHAybV9tbWlvX2RpcmVjdCk7CiAgICAgdWludDhfdCBpcGF0ID0gMDsKICAgICBib29s X3QgbmVlZF9tb2RpZnlfdnRkX3RhYmxlID0gMTsKQEAgLTgxMiwxMCArODEzLDE1IEBAIGVwdF9z ZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90 IG1mbiwKICAgICByYyA9IGF0b21pY193cml0ZV9lcHRfZW50cnkoZXB0X2VudHJ5LCBuZXdfZW50 cnksIHRhcmdldCk7CiAgICAgaWYgKCB1bmxpa2VseShyYykgKQogICAgICAgICBvbGRfZW50cnku ZXB0ZSA9IDA7Ci0gICAgZWxzZSBpZiAoIHAybXQgIT0gcDJtX2ludmFsaWQgJiYKLSAgICAgICAg ICAgICAgKGdmbiArICgxVUwgPDwgb3JkZXIpIC0gMSA+IHAybS0+bWF4X21hcHBlZF9wZm4pICkK LSAgICAgICAgLyogVHJhY2sgdGhlIGhpZ2hlc3QgZ2ZuIGZvciB3aGljaCB3ZSBoYXZlIGV2ZXIg aGFkIGEgdmFsaWQgbWFwcGluZyAqLwotICAgICAgICBwMm0tPm1heF9tYXBwZWRfcGZuID0gZ2Zu ICsgKDFVTCA8PCBvcmRlcikgLSAxOworICAgIGVsc2UKKyAgICB7CisgICAgICAgIGVudHJ5X3dy aXR0ZW4gPSAxOworCisgICAgICAgIGlmICggcDJtdCAhPSBwMm1faW52YWxpZCAmJgorICAgICAg ICAgICAgIChnZm4gKyAoMVVMIDw8IG9yZGVyKSAtIDEgPiBwMm0tPm1heF9tYXBwZWRfcGZuKSAp CisgICAgICAgICAgICAvKiBUcmFjayB0aGUgaGlnaGVzdCBnZm4gZm9yIHdoaWNoIHdlIGhhdmUg ZXZlciBoYWQgYSB2YWxpZCBtYXBwaW5nICovCisgICAgICAgICAgICBwMm0tPm1heF9tYXBwZWRf cGZuID0gZ2ZuICsgKDFVTCA8PCBvcmRlcikgLSAxOworICAgIH0KIAogb3V0OgogICAgIGlmICgg bmVlZHNfc3luYyApCkBAIC04MzEsMTAgKzgzNywyNCBAQCBvdXQ6CiAgICAgICAgIHsKICAgICAg ICAgICAgIGlmICggaW9tbXVfZmxhZ3MgKQogICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBp IDwgKDEgPDwgb3JkZXIpOyBpKysgKQotICAgICAgICAgICAgICAgICAgICBpb21tdV9tYXBfcGFn ZShkLCBnZm4gKyBpLCBtZm5feChtZm4pICsgaSwgaW9tbXVfZmxhZ3MpOworICAgICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmMgPSBpb21tdV9tYXBfcGFnZShkLCBnZm4gKyBp LCBtZm5feChtZm4pICsgaSwgaW9tbXVfZmxhZ3MpOworICAgICAgICAgICAgICAgICAgICBpZiAo IHVubGlrZWx5KHJjKSApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHdoaWxlICggaS0tICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGlv bW11X3VubWFwX3BhZ2UocDJtLT5kb21haW4sIGdmbiArIGkpICkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ZWxzZQogICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDEgPDwgb3JkZXIpOyBpKysg KQotICAgICAgICAgICAgICAgICAgICBpb21tdV91bm1hcF9wYWdlKGQsIGdmbiArIGkpOworICAg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0ID0gaW9tbXVfdW5tYXBfcGFn ZShkLCBnZm4gKyBpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAhcmMgKQorICAgICAgICAg ICAgICAgICAgICAgICAgcmMgPSByZXQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICB9CiAg ICAgfQogCkBAIC04NDcsNyArODY3LDcgQEAgb3V0OgogICAgIGlmICggaXNfZXB0ZV9wcmVzZW50 KCZvbGRfZW50cnkpICkKICAgICAgICAgZXB0X2ZyZWVfZW50cnkocDJtLCAmb2xkX2VudHJ5LCB0 YXJnZXQpOwogCi0gICAgaWYgKCByYyA9PSAwICYmIHAybV9pc19ob3N0cDJtKHAybSkgKQorICAg IGlmICggZW50cnlfd3JpdHRlbiAmJiBwMm1faXNfaG9zdHAybShwMm0pICkKICAgICAgICAgcDJt X2FsdHAybV9wcm9wYWdhdGVfY2hhbmdlKGQsIF9nZm4oZ2ZuKSwgbWZuLCBvcmRlciwgcDJtdCwg cDJtYSk7CiAKICAgICByZXR1cm4gcmM7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJt LXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKaW5kZXggM2Q4MDYxMi4uYTM4NzBkYSAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9t bS9wMm0tcHQuYwpAQCAtNjczLDYgKzY3Myw4IEBAIHAybV9wdF9zZXRfZW50cnkoc3RydWN0IHAy bV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwKICAgICBpZiAoIGlv bW11X2VuYWJsZWQgJiYgbmVlZF9pb21tdShwMm0tPmRvbWFpbikgJiYKICAgICAgICAgIChpb21t dV9vbGRfZmxhZ3MgIT0gaW9tbXVfcHRlX2ZsYWdzIHx8IG9sZF9tZm4gIT0gbWZuX3gobWZuKSkg KQogICAgIHsKKyAgICAgICAgQVNTRVJUKHJjID09IDApOworCiAgICAgICAgIGlmICggaW9tbXVf dXNlX2hhcF9wdChwMm0tPmRvbWFpbikgKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIGlv bW11X29sZF9mbGFncyApCkBAIC02ODAsMTEgKzY4MiwyNiBAQCBwMm1fcHRfc2V0X2VudHJ5KHN0 cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAgICAg ICAgIH0KICAgICAgICAgZWxzZSBpZiAoIGlvbW11X3B0ZV9mbGFncyApCiAgICAgICAgICAgICBm b3IgKCBpID0gMDsgaSA8ICgxVUwgPDwgcGFnZV9vcmRlcik7IGkrKyApCi0gICAgICAgICAgICAg ICAgaW9tbXVfbWFwX3BhZ2UocDJtLT5kb21haW4sIGdmbiArIGksIG1mbl94KG1mbikgKyBpLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvbW11X3B0ZV9mbGFncyk7CisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgcmMgPSBpb21tdV9tYXBfcGFnZShwMm0tPmRvbWFpbiwg Z2ZuICsgaSwgbWZuX3gobWZuKSArIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpb21tdV9wdGVfZmxhZ3MpOworICAgICAgICAgICAgICAgIGlmICggdW5saWtlbHkocmMp ICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkK KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaW9tbXVfdW5tYXBfcGFnZShwMm0tPmRvbWFp biwgZ2ZuICsgaSkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCAoMVVMIDw8IHBh Z2Vfb3JkZXIpOyBpKysgKQotICAgICAgICAgICAgICAgIGlvbW11X3VubWFwX3BhZ2UocDJtLT5k b21haW4sIGdmbiArIGkpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludCByZXQg PSBpb21tdV91bm1hcF9wYWdlKHAybS0+ZG9tYWluLCBnZm4gKyBpKTsKKworICAgICAgICAgICAg ICAgIGlmICggIXJjICkKKyAgICAgICAgICAgICAgICAgICAgcmMgPSByZXQ7CisgICAgICAgICAg ICB9CiAgICAgfQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYyBi L3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwppbmRleCA5YjE5NzY5Li43Y2UyNWQyIDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvbW0vcDJtLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3AybS5jCkBAIC02 NDEsMTAgKzY0MSwyMCBAQCBwMm1fcmVtb3ZlX3BhZ2Uoc3RydWN0IHAybV9kb21haW4gKnAybSwg dW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogCiAgICAgaWYgKCAhcGFnaW5n X21vZGVfdHJhbnNsYXRlKHAybS0+ZG9tYWluKSApCiAgICAgeworICAgICAgICBpbnQgcmMgPSAw OworCiAgICAgICAgIGlmICggbmVlZF9pb21tdShwMm0tPmRvbWFpbikgKQorICAgICAgICB7CiAg ICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICgxIDw8IHBhZ2Vfb3JkZXIpOyBpKysgKQotICAg ICAgICAgICAgICAgIGlvbW11X3VubWFwX3BhZ2UocDJtLT5kb21haW4sIG1mbiArIGkpOwotICAg ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgcmV0ID0g aW9tbXVfdW5tYXBfcGFnZShwMm0tPmRvbWFpbiwgbWZuICsgaSk7CisKKyAgICAgICAgICAgICAg ICBpZiAoICFyYyApCisgICAgICAgICAgICAgICAgICAgIHJjID0gcmV0OworICAgICAgICAgICAg fQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJjOwogICAgIH0KIAogICAgIEFTU0VSVChn Zm5fbG9ja2VkX2J5X21lKHAybSwgZ2ZuKSk7CkBAIC03MDAsNyArNzEwLDkgQEAgZ3Vlc3RfcGh5 c21hcF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAgICAg ICAgICAgICAgICAgaWYgKCByYyAhPSAwICkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgIHdoaWxlICggaS0tID4gMCApCi0gICAgICAgICAgICAgICAgICAgICAgICBpb21t dV91bm1hcF9wYWdlKGQsIG1mbiArIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBp b21tdV91bm1hcF9wYWdlKGQsIG1mbiArIGkpICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsKKwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmM7CiAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82NC9t bS5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jCmluZGV4IGUwN2U2OWUuLjZkYWI3ZmYgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYworKysgYi94ZW4vYXJjaC94ODYveDg2 XzY0L21tLmMKQEAgLTE0MzYsNyArMTQzNiw5IEBAIGludCBtZW1vcnlfYWRkKHVuc2lnbmVkIGxv bmcgc3BmbiwgdW5zaWduZWQgbG9uZyBlcGZuLCB1bnNpZ25lZCBpbnQgcHhtKQogICAgICAgICBp ZiAoIGkgIT0gZXBmbiApCiAgICAgICAgIHsKICAgICAgICAgICAgIHdoaWxlIChpLS0gPiBvbGRf bWF4KQotICAgICAgICAgICAgICAgIGlvbW11X3VubWFwX3BhZ2UoaGFyZHdhcmVfZG9tYWluLCBp KTsKKyAgICAgICAgICAgICAgICBpZiAoIGlvbW11X3VubWFwX3BhZ2UoaGFyZHdhcmVfZG9tYWlu LCBpKSApCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICBnb3Rv IGRlc3Ryb3lfbTJwOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2FtZC9wY2lfYW1kX2lvbW11LmMKaW5kZXggZmNlOTgyNy4uNGE4NjBhZiAxMDA2NDQKLS0tIGEv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYworKysgYi94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jCkBAIC0yODIsNiArMjgyLDggQEAg c3RhdGljIHZvaWQgX19od2RvbV9pbml0IGFtZF9pb21tdV9od2RvbV9pbml0KHN0cnVjdCBkb21h aW4gKmQpCiAKICAgICBpZiAoICFpb21tdV9wYXNzdGhyb3VnaCAmJiAhbmVlZF9pb21tdShkKSAp CiAgICAgeworICAgICAgICBpbnQgcmMgPSAwOworCiAgICAgICAgIC8qIFNldCB1cCAxOjEgcGFn ZSB0YWJsZSBmb3IgZG9tMCAqLwogICAgICAgICBmb3IgKCBpID0gMDsgaSA8IG1heF9wZHg7IGkr KyApCiAgICAgICAgIHsKQEAgLTI5MiwxMiArMjk0LDIxIEBAIHN0YXRpYyB2b2lkIF9faHdkb21f aW5pdCBhbWRfaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgICAg ICogYSBwZm5fdmFsaWQoKSBjaGVjayB3b3VsZCBzZWVtIGRlc2lyYWJsZSBoZXJlLgogICAgICAg ICAgICAgICovCiAgICAgICAgICAgICBpZiAoIG1mbl92YWxpZChwZm4pICkKLSAgICAgICAgICAg ICAgICBhbWRfaW9tbXVfbWFwX3BhZ2UoZCwgcGZuLCBwZm4sIAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJT01NVUZfcmVhZGFibGV8SU9NTVVGX3dyaXRhYmxlKTsKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgcmV0ID0gYW1kX2lvbW11X21hcF9wYWdlKGQs IHBmbiwgcGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0YWJsZSk7CisKKyAgICAgICAgICAgICAgICBpZiAo ICFyYyApCisgICAgICAgICAgICAgICAgICAgIHJjID0gcmV0OworICAgICAgICAgICAgfQogCiAg ICAgICAgICAgICBpZiAoICEoaSAmIDB4ZmZmZmYpICkKICAgICAgICAgICAgICAgICBwcm9jZXNz X3BlbmRpbmdfc29mdGlycXMoKTsKICAgICAgICAgfQorCisgICAgICAgIGlmICggcmMgKQorICAg ICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJkJWQ6IElPTU1VIG1hcHBpbmcgZmFpbGVkOiAlZFxu IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIHJjKTsKICAgICB9 CiAKICAgICBmb3JfZWFjaF9hbWRfaW9tbXUgKCBpb21tdSApCmRpZmYgLS1naXQgYS94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUu YwppbmRleCA2NzNlMTI2Li5lYzg1MzUyIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKQEAgLTE3 MSwyMCArMTcxLDMxIEBAIHZvaWQgX19od2RvbV9pbml0IGlvbW11X2h3ZG9tX2luaXQoc3RydWN0 IGRvbWFpbiAqZCkKICAgICB7CiAgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CiAgICAg ICAgIHVuc2lnbmVkIGludCBpID0gMDsKKyAgICAgICAgaW50IHJjID0gMDsKKwogICAgICAgICBw YWdlX2xpc3RfZm9yX2VhY2ggKCBwYWdlLCAmZC0+cGFnZV9saXN0ICkKICAgICAgICAgewogICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSBwYWdlX3RvX21mbihwYWdlKTsKICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgZ2ZuID0gbWZuX3RvX2dtZm4oZCwgbWZuKTsKICAgICAgICAgICAg IHVuc2lnbmVkIGludCBtYXBwaW5nID0gSU9NTVVGX3JlYWRhYmxlOworICAgICAgICAgICAgaW50 IHJldDsKIAogICAgICAgICAgICAgaWYgKCAoKHBhZ2UtPnUuaW51c2UudHlwZV9pbmZvICYgUEdU X2NvdW50X21hc2spID09IDApIHx8CiAgICAgICAgICAgICAgICAgICgocGFnZS0+dS5pbnVzZS50 eXBlX2luZm8gJiBQR1RfdHlwZV9tYXNrKQogICAgICAgICAgICAgICAgICAgPT0gUEdUX3dyaXRh YmxlX3BhZ2UpICkKICAgICAgICAgICAgICAgICBtYXBwaW5nIHw9IElPTU1VRl93cml0YWJsZTsK LSAgICAgICAgICAgIGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGdmbiwgbWZuLCBtYXBw aW5nKTsKKworICAgICAgICAgICAgcmV0ID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwg Z2ZuLCBtZm4sIG1hcHBpbmcpOworICAgICAgICAgICAgaWYgKCAhcmMgKQorICAgICAgICAgICAg ICAgIHJjID0gcmV0OworCiAgICAgICAgICAgICBpZiAoICEoaSsrICYgMHhmZmZmZikgKQogICAg ICAgICAgICAgICAgIHByb2Nlc3NfcGVuZGluZ19zb2Z0aXJxcygpOwogICAgICAgICB9CisKKyAg ICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgImQlZDog SU9NTVUgbWFwcGluZyBmYWlsZWQ6ICVkXG4iLAorICAgICAgICAgICAgICAgICAgIGQtPmRvbWFp bl9pZCwgcmMpOwogICAgIH0KIAogICAgIHJldHVybiBoZC0+cGxhdGZvcm1fb3BzLT5od2RvbV9p bml0KGQpOwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3g4Ni92dGQu YyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC94ODYvdnRkLmMKaW5kZXggYzBkNmFhYi4u M2Q2NzkwOSAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3g4Ni92dGQu YworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQveDg2L3Z0ZC5jCkBAIC0xMTgsNiAr MTE4LDggQEAgdm9pZCBfX2h3ZG9tX2luaXQgdnRkX3NldF9od2RvbV9tYXBwaW5nKHN0cnVjdCBk b21haW4gKmQpCiAKICAgICBmb3IgKCBpID0gMDsgaSA8IHRvcDsgaSsrICkKICAgICB7CisgICAg ICAgIGludCByYyA9IDA7CisKICAgICAgICAgLyoKICAgICAgICAgICogU2V0IHVwIDE6MSBtYXBw aW5nIGZvciBkb20wLiBEZWZhdWx0IHRvIHVzZSBvbmx5IGNvbnZlbnRpb25hbCBSQU0KICAgICAg ICAgICogYXJlYXMgYW5kIGxldCBSTVJScyBpbmNsdWRlIG5lZWRlZCByZXNlcnZlZCByZWdpb25z LiBXaGVuIHNldCwgdGhlCkBAIC0xNDAsOCArMTQyLDE3IEBAIHZvaWQgX19od2RvbV9pbml0IHZ0 ZF9zZXRfaHdkb21fbWFwcGluZyhzdHJ1Y3QgZG9tYWluICpkKQogCiAgICAgICAgIHRtcCA9IDEg PDwgKFBBR0VfU0hJRlQgLSBQQUdFX1NISUZUXzRLKTsKICAgICAgICAgZm9yICggaiA9IDA7IGog PCB0bXA7IGorKyApCi0gICAgICAgICAgICBpb21tdV9tYXBfcGFnZShkLCBwZm4gKiB0bXAgKyBq LCBwZm4gKiB0bXAgKyBqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVGX3JlYWRh YmxlfElPTU1VRl93cml0YWJsZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGludCByZXQgPSBp b21tdV9tYXBfcGFnZShkLCBwZm4gKiB0bXAgKyBqLCBwZm4gKiB0bXAgKyBqLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VRl9yZWFkYWJsZXxJT01NVUZfd3JpdGFi bGUpOworCisgICAgICAgICAgICBpZiggIXJjICkKKyAgICAgICAgICAgICAgIHJjID0gcmV0Owor ICAgICAgICB9CisKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgIHByaW50ayhYRU5MT0df V0FSTklORyBWVERQUkVGSVggIiBkJWQ6IElPTU1VIG1hcHBpbmcgZmFpbGVkOiAlZFxuIiwKKyAg ICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgcmMpOwogCiAgICAgICAgIGlmICghKGkgJiAo MHhmZmZmZiA+PiAoUEFHRV9TSElGVCAtIFBBR0VfU0hJRlRfNEspKSkpCiAgICAgICAgICAgICBw cm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9p b21tdS5oIGIveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKaW5kZXggMTliYTk3Ni4uZWFhMmM3NyAx MDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKKysrIGIveGVuL2luY2x1ZGUveGVu L2lvbW11LmgKQEAgLTc0LDkgKzc0LDkgQEAgdm9pZCBpb21tdV90ZWFyZG93bihzdHJ1Y3QgZG9t YWluICpkKTsKICNkZWZpbmUgSU9NTVVGX3JlYWRhYmxlICAoMXU8PF9JT01NVUZfcmVhZGFibGUp CiAjZGVmaW5lIF9JT01NVUZfd3JpdGFibGUgMQogI2RlZmluZSBJT01NVUZfd3JpdGFibGUgICgx dTw8X0lPTU1VRl93cml0YWJsZSkKLWludCBpb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4sCi0gICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IGZsYWdzKTsKLWludCBpb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKTsKK2ludCBfX211c3RfY2hlY2sgaW9tbXVfbWFwX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwor aW50IF9fbXVzdF9jaGVjayBpb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGxvbmcgZ2ZuKTsKIAogZW51bSBpb21tdV9mZWF0dXJlCiB7Ci0tIAoxLjkuMQoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCg==