From mboxrd@z Thu Jan 1 00:00:00 1970 From: Quan Xu Subject: [PATCH v3 03/10] IOMMU/MMU: enhance the call trees of IOMMU unmapping and mapping Date: Fri, 29 Apr 2016 17:25:10 +0800 Message-ID: <1461921917-48394-4-git-send-email-quan.xu@intel.com> References: <1461921917-48394-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: <1461921917-48394-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+Ci0tLQogeGVuL2FyY2gveDg2L21tLmMgICAgICAgICAgICAgICB8IDEzICsrKysrKysrLS0t LS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgICAgICAgfCAyNyArKysrKysrKysrKysrKysr KysrKysrKysrLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyAgICAgICAgfCAyNCArKysrKysr KysrKysrKysrKysrKy0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgfCAxMSAr KysrKysrKystLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyB8IDE0ICsrKysrKysr KysrKystCiA1IGZpbGVzIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5k ZXggYTQyMDk3Zi4uNDI3MDk3ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIv eGVuL2FyY2gveDg2L21tLmMKQEAgLTI0NjcsNyArMjQ2Nyw3IEBAIHN0YXRpYyBpbnQgX19nZXRf cGFnZV90eXBlKHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsIHVuc2lnbmVkIGxvbmcgdHlwZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwcmVlbXB0aWJsZSkKIHsKICAgICB1bnNpZ25l ZCBsb25nIG54LCB4LCB5ID0gcGFnZS0+dS5pbnVzZS50eXBlX2luZm87Ci0gICAgaW50IHJjID0g MDsKKyAgICBpbnQgcmMgPSAwLCByZXQgPSAwOwogCiAgICAgQVNTRVJUKCEodHlwZSAmIH4oUEdU X3R5cGVfbWFzayB8IFBHVF9wYWVfeGVuX2wyKSkpOwogCkBAIC0yNTc4LDExICsyNTc4LDExIEBA IHN0YXRpYyBpbnQgX19nZXRfcGFnZV90eXBlKHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsIHVuc2ln bmVkIGxvbmcgdHlwZSwKICAgICAgICAgaWYgKCBkICYmIGlzX3B2X2RvbWFpbihkKSAmJiB1bmxp a2VseShuZWVkX2lvbW11KGQpKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICggKHggJiBQ R1RfdHlwZV9tYXNrKSA9PSBQR1Rfd3JpdGFibGVfcGFnZSApCi0gICAgICAgICAgICAgICAgaW9t bXVfdW5tYXBfcGFnZShkLCBtZm5fdG9fZ21mbihkLCBwYWdlX3RvX21mbihwYWdlKSkpOworICAg ICAgICAgICAgICAgIHJldCA9IGlvbW11X3VubWFwX3BhZ2UoZCwgbWZuX3RvX2dtZm4oZCwgcGFn ZV90b19tZm4ocGFnZSkpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCB0eXBlID09IFBHVF93cml0 YWJsZV9wYWdlICkKLSAgICAgICAgICAgICAgICBpb21tdV9tYXBfcGFnZShkLCBtZm5fdG9fZ21m bihkLCBwYWdlX3RvX21mbihwYWdlKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGFnZV90b19tZm4ocGFnZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVG X3JlYWRhYmxlfElPTU1VRl93cml0YWJsZSk7CisgICAgICAgICAgICAgICAgcmV0ID0gaW9tbXVf bWFwX3BhZ2UoZCwgbWZuX3RvX2dtZm4oZCwgcGFnZV90b19tZm4ocGFnZSkpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfdG9fbWZuKHBhZ2UpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VRl9yZWFkYWJsZXxJT01NVUZfd3JpdGFi bGUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTk5LDYgKzI1OTksOSBAQCBzdGF0aWMgaW50 IF9fZ2V0X3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25nIHR5 cGUsCiAgICAgaWYgKCAoeCAmIFBHVF9wYXJ0aWFsKSAmJiAhKG54ICYgUEdUX3BhcnRpYWwpICkK ICAgICAgICAgcHV0X3BhZ2UocGFnZSk7CiAKKyAgICBpZiAoICFyYyApCisgICAgICAgIHJjID0g cmV0OworCiAgICAgcmV0dXJuIHJjOwogfQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0v cDJtLWVwdC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwppbmRleCAxZWQ1YjQ3Li5kZjg3 OTQ0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCisrKyBiL3hlbi9hcmNo L3g4Ni9tbS9wMm0tZXB0LmMKQEAgLTgyMSw2ICs4MjEsOCBAQCBvdXQ6CiAgICAgaWYgKCBuZWVk c19zeW5jICkKICAgICAgICAgZXB0X3N5bmNfZG9tYWluKHAybSk7CiAKKyAgICByZXQgPSAwOwor CiAgICAgLyogRm9yIGhvc3QgcDJtLCBtYXkgbmVlZCB0byBjaGFuZ2UgVlQtZCBwYWdlIHRhYmxl LiovCiAgICAgaWYgKCByYyA9PSAwICYmIHAybV9pc19ob3N0cDJtKHAybSkgJiYgbmVlZF9pb21t dShkKSAmJgogICAgICAgICAgbmVlZF9tb2RpZnlfdnRkX3RhYmxlICkKQEAgLTgzMSwxMSArODMz LDI5IEBAIG91dDoKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCBpb21tdV9mbGFncyApCiAg ICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCAoMSA8PCBvcmRlcik7IGkrKyApCi0gICAg ICAgICAgICAgICAgICAgIGlvbW11X21hcF9wYWdlKGQsIGdmbiArIGksIG1mbl94KG1mbikgKyBp LCBpb21tdV9mbGFncyk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy YyA9IGlvbW11X21hcF9wYWdlKGQsIGdmbiArIGksIG1mbl94KG1mbikgKyBpLCBpb21tdV9mbGFn cyk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAhcmV0ICYmIHVubGlrZWx5KHJjKSApCisg ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggaS0t ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb21tdV91bm1hcF9wYWdlKGQsIGdmbiAr IGkpOworCisgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSByYzsKKyAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDEg PDwgb3JkZXIpOyBpKysgKQotICAgICAgICAgICAgICAgICAgICBpb21tdV91bm1hcF9wYWdlKGQs IGdmbiArIGkpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmMgPSBp b21tdV91bm1hcF9wYWdlKGQsIGdmbiArIGkpOworCisgICAgICAgICAgICAgICAgICAgIGlmICgg IXJldCAmJiB1bmxpa2VseShyYykgKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gcmM7 CisgICAgICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgcmMgPSAwOwogICAgIH0K IAogICAgIHVubWFwX2RvbWFpbl9wYWdlKHRhYmxlKTsKQEAgLTg1MCw2ICs4NzAsOSBAQCBvdXQ6 CiAgICAgaWYgKCByYyA9PSAwICYmIHAybV9pc19ob3N0cDJtKHAybSkgKQogICAgICAgICBwMm1f YWx0cDJtX3Byb3BhZ2F0ZV9jaGFuZ2UoZCwgX2dmbihnZm4pLCBtZm4sIG9yZGVyLCBwMm10LCBw Mm1hKTsKIAorICAgIGlmICggIXJjICkKKyAgICAgICAgcmMgPSByZXQ7CisKICAgICByZXR1cm4g cmM7CiB9CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyBiL3hlbi9hcmNo L3g4Ni9tbS9wMm0tcHQuYwppbmRleCAzZDgwNjEyLi45ZjU1MzllIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvbW0vcDJtLXB0LmMKKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCkBAIC00 OTgsNyArNDk4LDcgQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1 bnNpZ25lZCBsb25nIGdmbiwgbWZuX3QgbWZuLAogICAgIGwxX3BnZW50cnlfdCBpbnRlcm1lZGlh dGVfZW50cnkgPSBsMWVfZW1wdHkoKTsKICAgICBsMl9wZ2VudHJ5X3QgbDJlX2NvbnRlbnQ7CiAg ICAgbDNfcGdlbnRyeV90IGwzZV9jb250ZW50OwotICAgIGludCByYzsKKyAgICBpbnQgcmMsIHJl dDsKICAgICB1bnNpZ25lZCBpbnQgaW9tbXVfcHRlX2ZsYWdzID0gcDJtX2dldF9pb21tdV9mbGFn cyhwMm10KTsKICAgICAvKgogICAgICAqIG9sZF9tZm4gYW5kIGlvbW11X29sZF9mbGFncyBjb250 cm9sIHBvc3NpYmxlIGZsdXNoL3VwZGF0ZSBuZWVkcyBvbiB0aGUKQEAgLTY4MCwxMSArNjgwLDI3 IEBAIHAybV9wdF9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9u ZyBnZm4sIG1mbl90IG1mbiwKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICggaW9tbXVfcHRl X2ZsYWdzICkKICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDFVTCA8PCBwYWdlX29yZGVy KTsgaSsrICkKLSAgICAgICAgICAgICAgICBpb21tdV9tYXBfcGFnZShwMm0tPmRvbWFpbiwgZ2Zu ICsgaSwgbWZuX3gobWZuKSArIGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9t bXVfcHRlX2ZsYWdzKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXQgPSBpb21t dV9tYXBfcGFnZShwMm0tPmRvbWFpbiwgZ2ZuICsgaSwgbWZuX3gobWZuKSArIGksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb21tdV9wdGVfZmxhZ3MpOworCisgICAgICAg ICAgICAgICAgaWYgKCAhcmMgJiYgdW5saWtlbHkocmV0KSApCisgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSApCisgICAgICAgICAgICAgICAgICAgICAg ICBpb21tdV91bm1hcF9wYWdlKHAybS0+ZG9tYWluLCBnZm4gKyBpKTsKKworICAgICAgICAgICAg ICAgICAgICByYyA9IHJldDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmb3IgKCBp ID0gMDsgaSA8ICgxVUwgPDwgcGFnZV9vcmRlcik7IGkrKyApCi0gICAgICAgICAgICAgICAgaW9t bXVfdW5tYXBfcGFnZShwMm0tPmRvbWFpbiwgZ2ZuICsgaSk7CisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgcmV0ID0gaW9tbXVfdW5tYXBfcGFnZShwMm0tPmRvbWFpbiwgZ2ZuICsgaSk7 CisKKyAgICAgICAgICAgICAgICBpZiAoICFyYyAmJiB1bmxpa2VseShyZXQpICkKKyAgICAgICAg ICAgICAgICAgICAgcmMgPSByZXQ7CisgICAgICAgICAgICB9CiAgICAgfQogCiAgICAgLyoKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwpp bmRleCA2ZWVmMmYzLi42YTliYmExIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMK KysrIGIveGVuL2FyY2gveDg2L21tL3AybS5jCkBAIC02MzYsMTMgKzYzNiwyMCBAQCBwMm1fcmVt b3ZlX3BhZ2Uoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2ln bmVkIGxvbmcgbWZuLAogICAgIG1mbl90IG1mbl9yZXR1cm47CiAgICAgcDJtX3R5cGVfdCB0Owog ICAgIHAybV9hY2Nlc3NfdCBhOworICAgIGludCByYyA9IDAsIHJldDsKIAogICAgIGlmICggIXBh Z2luZ19tb2RlX3RyYW5zbGF0ZShwMm0tPmRvbWFpbikgKQogICAgIHsKICAgICAgICAgaWYgKCBu ZWVkX2lvbW11KHAybS0+ZG9tYWluKSApCiAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICgx IDw8IHBhZ2Vfb3JkZXIpOyBpKysgKQotICAgICAgICAgICAgICAgIGlvbW11X3VubWFwX3BhZ2Uo cDJtLT5kb21haW4sIG1mbiArIGkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgIHJldCA9IGlvbW11X3VubWFwX3BhZ2UocDJtLT5kb21haW4sIG1mbiAr IGkpOworCisgICAgICAgICAgICAgICBpZiAoICFyYyAmJiB1bmxpa2VseShyZXQpICkKKyAgICAg ICAgICAgICAgICAgICByYyA9IHJldDsKKyAgICAgICAgICAgIH0KKworICAgICAgICByZXR1cm4g cmM7CiAgICAgfQogCiAgICAgQVNTRVJUKGdmbl9sb2NrZWRfYnlfbWUocDJtLCBnZm4pKTsKZGlm ZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgYi94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9pb21tdS5jCmluZGV4IGEwMDAzYWMuLmQ3NDQzM2QgMTAwNjQ0Ci0tLSBhL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvaW9tbXUuYwpAQCAtMTcyLDYgKzE3Miw4IEBAIHZvaWQgX19od2RvbV9pbml0IGlvbW11X2h3 ZG9tX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICB7CiAgICAgICAgIHN0cnVjdCBwYWdlX2lu Zm8gKnBhZ2U7CiAgICAgICAgIHVuc2lnbmVkIGludCBpID0gMDsKKyAgICAgICAgaW50IHJldCwg cmMgPSAwOworCiAgICAgICAgIHBhZ2VfbGlzdF9mb3JfZWFjaCAoIHBhZ2UsICZkLT5wYWdlX2xp c3QgKQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiA9IHBhZ2VfdG9f bWZuKHBhZ2UpOwpAQCAtMTgyLDEwICsxODQsMjAgQEAgdm9pZCBfX2h3ZG9tX2luaXQgaW9tbXVf aHdkb21faW5pdChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgICAgICAgICAoKHBhZ2UtPnUu aW51c2UudHlwZV9pbmZvICYgUEdUX3R5cGVfbWFzaykKICAgICAgICAgICAgICAgICAgID09IFBH VF93cml0YWJsZV9wYWdlKSApCiAgICAgICAgICAgICAgICAgbWFwcGluZyB8PSBJT01NVUZfd3Jp dGFibGU7Ci0gICAgICAgICAgICBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFnZShkLCBnZm4sIG1m biwgbWFwcGluZyk7CisKKyAgICAgICAgICAgIHJldCA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9w YWdlKGQsIGdmbiwgbWZuLCBtYXBwaW5nKTsKKworICAgICAgICAgICAgaWYgKCB1bmxpa2VseShy ZXQpICkKKyAgICAgICAgICAgICAgICByYyA9IHJldDsKKwogICAgICAgICAgICAgaWYgKCAhKGkr KyAmIDB4ZmZmZmYpICkKICAgICAgICAgICAgICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMo KTsKICAgICAgICAgfQorCisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgcHJpbnRrKFhF TkxPR19XQVJOSU5HCisgICAgICAgICAgICAgICAgICAgImlvbW11X2h3ZG9tX2luaXQ6IElPTU1V IG1hcHBpbmcgZmFpbGVkIGZvciBkb20lZC4iLAorICAgICAgICAgICAgICAgICAgIGQtPmRvbWFp bl9pZCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGhkLT5wbGF0Zm9ybV9vcHMtPmh3ZG9tX2luaXQo ZCk7Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==