From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 12/15] x86: add iommu_op to enable modification of IOMMU mappings Date: Wed, 1 Aug 2018 14:40:25 +0100 Message-ID: <20180801134028.1654-13-paul.durrant@citrix.com> References: <20180801134028.1654-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fkref-0002E7-TN for xen-devel@lists.xenproject.org; Wed, 01 Aug 2018 13:59:09 +0000 In-Reply-To: <20180801134028.1654-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBhZGRzIGFuIGlvbW11X29wIHdoaWNoIGNoZWNrcyB3aGV0aGVyIGl0IGlzIHBv c3NpYmxlIG9yCnNhZmUgZm9yIGEgZG9tYWluIHRvIG1vZGlmeSBpdHMgb3duIElPTU1VIG1hcHBp bmdzIGFuZCwgaWYgc28sIGNyZWF0ZXMKYSByYW5nZXNldCB0byB0cmFjayBtb2RpZmljYXRpb25z LgoKTk9URTogVGhlIGFjdHVhbCBtYXAgYW5kIHVubWFwIG9wZXJhdGlvbnMgYXJlIGludHJvZHVj ZWQgYnkgc3Vic2VxdWVudAogICAgICBwYXRjaGVzLgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJy YW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KLS0tCkNjOiBKYW4gQmV1bGljaCA8amJldWxp Y2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29t PgpDYzogR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBldS5jaXRyaXguY29tPgpDYzogSWFu IEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBKdWxpZW4gR3JhbGwgPGp1 bGllbi5ncmFsbEBhcm0uY29tPgpDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2ls a0BvcmFjbGUuY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwu b3JnPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBj aXRyaXguY29tPgoKdjQ6CiAtIFNldCBzeW5jX2lvbW11X3B0IHRvIGZhbHNlIGluc3RlYWQgb2Yg bmVlZF9pb21tdS4KCnYyOgogLSBOZXcgaW4gdjIuCi0tLQogeGVuL2FyY2gveDg2L2lvbW11X29w LmMgICAgICAgICB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jIHwgIDIgKy0KIHhlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL3BjaS5jICAgfCAgNCArKy0tCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3Au aCAgIHwgIDYgKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgICAgIHwgIDMgKysr CiA1IGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2lvbW11X29wLmMgYi94ZW4vYXJjaC94ODYvaW9tbXVfb3Au YwppbmRleCBiY2ZjZDQ5MTAyLi5iMjk1NDdiZmZkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv aW9tbXVfb3AuYworKysgYi94ZW4vYXJjaC94ODYvaW9tbXVfb3AuYwpAQCAtNzgsNiArNzgsNDIg QEAgc3RhdGljIGludCBpb21tdV9vcF9xdWVyeV9yZXNlcnZlZChzdHJ1Y3QgeGVuX2lvbW11X29w X3F1ZXJ5X3Jlc2VydmVkICpvcCkKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBpb21t dV9vcF9lbmFibGVfbW9kaWZpY2F0aW9uKHZvaWQpCit7CisgICAgc3RydWN0IGRvbWFpbiAqY3Vy cmQgPSBjdXJyZW50LT5kb21haW47CisgICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaW9tbXUgPSBk b21faW9tbXUoY3VycmQpOworICAgIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wcyA9IGlvbW11 LT5wbGF0Zm9ybV9vcHM7CisKKyAgICAvKiBIYXMgbW9kaWZpY2F0aW9uIGFscmVhZHkgYmVlbiBl bmFibGVkPyAqLworICAgIGlmICggaW9tbXUtPmlvbW11X29wX3JhbmdlcyApCisgICAgICAgIHJl dHVybiAwOworCisgICAgLyoKKyAgICAgKiBUaGUgSU9NTVUgbWFwcGluZ3MgY2Fubm90IGJlIG1v ZGlmaWVkIGlmOgorICAgICAqIC0gdGhlIElPTU1VIGlzIG5vdCBlbmFibGVkIG9yLAorICAgICAq IC0gdGhlIGN1cnJlbnQgZG9tYWluIGlzIGRvbTAgYW5kIHRyYW5sc2F0aW9uIGlzIGRpc2FibGVk IG9yLAorICAgICAqIC0gSEFQIGlzIGVuYWJsZWQgYW5kIHRoZSBJT01NVSBzaGFyZXMgdGhlIG1h cHBpbmdzLgorICAgICAqLworICAgIGlmICggIWlvbW11X2VuYWJsZWQgfHwKKyAgICAgICAgIChp c19oYXJkd2FyZV9kb21haW4oY3VycmQpICYmIGlvbW11X3Bhc3N0aHJvdWdoKSB8fAorICAgICAg ICAgaW9tbXVfdXNlX2hhcF9wdChjdXJyZCkgKQorICAgICAgICByZXR1cm4gLUVBQ0NFUzsKKwor ICAgIC8qCisgICAgICogVGhlIElPTU1VIGltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSB0aGUg bG9va3VwIG1ldGhvZCBpZgorICAgICAqIG1vZGlmaWNhdGlvbiBvZiB0aGUgbWFwcGluZ3MgaXMg dG8gYmUgc3VwcG9ydGVkLgorICAgICAqLworICAgIGlmICggIW9wcy0+bG9va3VwX3BhZ2UgKQor ICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CisKKyAgICBpb21tdS0+aW9tbXVfb3BfcmFuZ2Vz ID0gcmFuZ2VzZXRfbmV3KGN1cnJkLCBOVUxMLCAwKTsKKyAgICBpZiAoICFpb21tdS0+aW9tbXVf b3BfcmFuZ2VzICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKKyAgICBjdXJyZC0+c3luY19p b21tdV9wdCA9IDA7IC8qIERpc2FibGUgc3luY2hyb25pemF0aW9uICovCisgICAgcmV0dXJuIDA7 Cit9CisKIHN0YXRpYyB2b2lkIGlvbW11X29wKHhlbl9pb21tdV9vcF90ICpvcCkKIHsKICAgICBz d2l0Y2ggKCBvcC0+b3AgKQpAQCAtODYsNiArMTIyLDEwIEBAIHN0YXRpYyB2b2lkIGlvbW11X29w KHhlbl9pb21tdV9vcF90ICpvcCkKICAgICAgICAgb3AtPnN0YXR1cyA9IGlvbW11X29wX3F1ZXJ5 X3Jlc2VydmVkKCZvcC0+dS5xdWVyeV9yZXNlcnZlZCk7CiAgICAgICAgIGJyZWFrOwogCisgICAg Y2FzZSBYRU5fSU9NTVVPUF9lbmFibGVfbW9kaWZpY2F0aW9uOgorICAgICAgICBvcC0+c3RhdHVz ID0gaW9tbXVfb3BfZW5hYmxlX21vZGlmaWNhdGlvbigpOworICAgICAgICBicmVhazsKKwogICAg IGRlZmF1bHQ6CiAgICAgICAgIG9wLT5zdGF0dXMgPSAtRU9QTk9UU1VQUDsKICAgICAgICAgYnJl YWs7CkBAIC05OCw2ICsxMzgsNyBAQCBpbnQgZG9fb25lX2lvbW11X29wKHhlbl9pb21tdV9vcF9i dWZfdCAqYnVmKQogICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBv cF9zaXplW10gPSB7CiAgICAgICAgIFtYRU5fSU9NTVVPUF9xdWVyeV9yZXNlcnZlZF0gPSBzaXpl b2Yoc3RydWN0IHhlbl9pb21tdV9vcF9xdWVyeV9yZXNlcnZlZCksCisgICAgICAgIFtYRU5fSU9N TVVPUF9lbmFibGVfbW9kaWZpY2F0aW9uXSA9IDAsCiAgICAgfTsKICAgICBzaXplX3Qgc2l6ZTsK ICAgICBpbnQgcmM7CkBAIC0xODQsNiArMjI1LDcgQEAgaW50IGNvbXBhdF9vbmVfaW9tbXVfb3Ao Y29tcGF0X2lvbW11X29wX2J1Zl90ICpidWYpCiAgICAgc2l6ZV90IG9mZnNldDsKICAgICBzdGF0 aWMgY29uc3Qgc2l6ZV90IG9wX3NpemVbXSA9IHsKICAgICAgICAgW1hFTl9JT01NVU9QX3F1ZXJ5 X3Jlc2VydmVkXSA9IHNpemVvZihzdHJ1Y3QgY29tcGF0X2lvbW11X29wX3F1ZXJ5X3Jlc2VydmVk KSwKKyAgICAgICAgW1hFTl9JT01NVU9QX2VuYWJsZV9tb2RpZmljYXRpb25dID0gMCwKICAgICB9 OwogICAgIHNpemVfdCBzaXplOwogICAgIHhlbl9pb21tdV9vcF90IG5hdDsKZGlmZiAtLWdpdCBh L3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9pb21tdS5jCmluZGV4IGNhZjNkMTI1YWUuLjhmNjM1YTVjZGIgMTAwNjQ0Ci0tLSBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv aW9tbXUuYwpAQCAtMjYsNyArMjYsNiBAQCBzdGF0aWMgdm9pZCBpb21tdV9kdW1wX3AybV90YWJs ZSh1bnNpZ25lZCBjaGFyIGtleSk7CiAKIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IGlvbW11 X2Rldl9pb3RsYl90aW1lb3V0ID0gMTAwMDsKIGludGVnZXJfcGFyYW0oImlvbW11X2Rldl9pb3Rs Yl90aW1lb3V0IiwgaW9tbXVfZGV2X2lvdGxiX3RpbWVvdXQpOwotCiAvKgogICogVGhlICdpb21t dScgcGFyYW1ldGVyIGVuYWJsZXMgdGhlIElPTU1VLiAgT3B0aW9uYWwgY29tbWEgc2VwYXJhdGVk CiAgKiB2YWx1ZSBtYXkgY29udGFpbjoKQEAgLTI2NSw2ICsyNjQsNyBAQCB2b2lkIGlvbW11X2Rv bWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpCiAgICAgYXJjaF9pb21tdV9kb21haW5fZGVz dHJveShkKTsKIAogICAgIHJhbmdlc2V0X2Rlc3Ryb3koaGQtPnJlc2VydmVkX3Jhbmdlcyk7Cisg ICAgcmFuZ2VzZXRfZGVzdHJveShoZC0+aW9tbXVfb3BfcmFuZ2VzKTsKIH0KIAogaW50IGlvbW11 X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbiwgbWZuX3QgbWZuLApkaWZmIC0t Z2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC9wY2kuYwppbmRleCAzZDNhZDQ4NGU3Li5kNDAzM2FmNDFhIDEwMDY0NAotLS0gYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9w Y2kuYwpAQCAtMTQ2MCw3ICsxNDYwLDcgQEAgc3RhdGljIGludCBhc3NpZ25fZGV2aWNlKHN0cnVj dCBkb21haW4gKmQsIHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4sIHUzMiBmbGFnKQogICAgIH0K IAogIGRvbmU6Ci0gICAgaWYgKCAhaGFzX2FyY2hfcGRldnMoZCkgJiYgaGFzX2lvbW11X3B0KGQp ICkKKyAgICBpZiAoICFoYXNfYXJjaF9wZGV2cyhkKSAmJiBoYXNfaW9tbXVfcHQoZCkgJiYgIWhk LT5pb21tdV9vcF9yYW5nZXMgKQogICAgICAgICBpb21tdV90ZWFyZG93bihkKTsKICAgICBwY2lk ZXZzX3VubG9jaygpOwogCkBAIC0xNTEwLDcgKzE1MTAsNyBAQCBpbnQgZGVhc3NpZ25fZGV2aWNl KHN0cnVjdCBkb21haW4gKmQsIHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4pCiAKICAgICBwZGV2 LT5mYXVsdC5jb3VudCA9IDA7CiAKLSAgICBpZiAoICFoYXNfYXJjaF9wZGV2cyhkKSAmJiBoYXNf aW9tbXVfcHQoZCkgKQorICAgIGlmICggIWhhc19hcmNoX3BkZXZzKGQpICYmIGhhc19pb21tdV9w dChkKSAmJiAhaGQtPmlvbW11X29wX3JhbmdlcyApCiAgICAgICAgIGlvbW11X3RlYXJkb3duKGQp OwogCiAgICAgcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9pb21t dV9vcC5oIGIveGVuL2luY2x1ZGUvcHVibGljL2lvbW11X29wLmgKaW5kZXggYWRlNDA0YTg3Ny4u OWJmNzRiZDAwNyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2lvbW11X29wLmgKKysr IGIveGVuL2luY2x1ZGUvcHVibGljL2lvbW11X29wLmgKQEAgLTYxLDYgKzYxLDEyIEBAIHN0cnVj dCB4ZW5faW9tbXVfb3BfcXVlcnlfcmVzZXJ2ZWQgewogICAgIFhFTl9HVUVTVF9IQU5ETEUoeGVu X2lvbW11X3Jlc2VydmVkX3JhbmdlX3QpIHJhbmdlczsKIH07CiAKKy8qCisgKiBYRU5fSU9NTVVP UF9lbmFibGVfbW9kaWZpY2F0aW9uOiBFbmFibGUgb3BlcmF0aW9ucyB0aGF0IG1vZGlmeSBJT01N VQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ3MuCisgKi8KKyNk ZWZpbmUgWEVOX0lPTU1VT1BfZW5hYmxlX21vZGlmaWNhdGlvbiAyCisKIHN0cnVjdCB4ZW5faW9t bXVfb3AgewogICAgIHVpbnQxNl90IG9wOyAgICAvKiBvcCB0eXBlICovCiAgICAgdWludDE2X3Qg cGFkOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmggYi94ZW4vaW5jbHVkZS94 ZW4vaW9tbXUuaAppbmRleCA3YzVkNDZkZjgxLi4wOGIxNjNjYmNiIDEwMDY0NAotLS0gYS94ZW4v aW5jbHVkZS94ZW4vaW9tbXUuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaApAQCAtMTMw LDYgKzEzMCw5IEBAIHN0cnVjdCBkb21haW5faW9tbXUgewogICAgICAqIG11c3Qgbm90IGJlIG1v ZGlmaWVkIGFmdGVyIGluaXRpYWxpemF0aW9uLgogICAgICAqLwogICAgIHN0cnVjdCByYW5nZXNl dCAqcmVzZXJ2ZWRfcmFuZ2VzOworCisgICAgLyogUmFuZ2VzIHVuZGVyIHRoZSBjb250cm9sIG9m IGlvbW11X29wICovCisgICAgc3RydWN0IHJhbmdlc2V0ICppb21tdV9vcF9yYW5nZXM7CiB9Owog CiAjZGVmaW5lIGRvbV9pb21tdShkKSAgICAgICAgICAgICAgKCYoZCktPmlvbW11KQotLSAKMi4x MS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6 Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==