From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v6 13/14] x86: add iommu_ops to modify and flush IOMMU mappings Date: Thu, 23 Aug 2018 10:47:10 +0100 Message-ID: <20180823094711.21376-14-paul.durrant@citrix.com> References: <20180823094711.21376-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 1fsmO2-00028B-O6 for xen-devel@lists.xenproject.org; Thu, 23 Aug 2018 09:58:42 +0000 In-Reply-To: <20180823094711.21376-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 VGhpcyBwYXRjaCBhZGRzIGlvbW11X29wcyB0byBhZGQgKG1hcCkgb3IgcmVtb3ZlICh1bm1hcCkg ZnJhbWVzIGluIHRoZQpkb21haW4ncyBJT01NVSBtYXBwaW5ncywgYW5kIGFuIGlvbW11X29wIHRv IHN5bmNocm9uaXplIChmbHVzaCkgdGhvc2UKbWFuaXB1bGF0aW9ucyB3aXRoIHRoZSBoYXJkd2Fy ZS4KCkN1cnJlbnRseSB0aGUgZmxhZ3MgdmFsdWUgZm9yIGVhY2ggb3AgbXVzdCBpbmNsdWRlIHRo ZQpYRU5fSU9NTVVPUF9tYXAvdW5tYXAvZmx1c2hfYWxsIGZsYWcgYXMgdGhlIGltcGxlbWVudGF0 aW9uIGRvZXMgbm90IHlldApzdXBwb3J0IHBlci1kZXZpY2UgbWFwcGluZ3MuIFRoZSBzYmRmIGZp ZWxkIG9mIGVhY2ggaHlwZXJjYWxsIGlzCmFjY29yZGluZ2x5IGlnbm9yZWQuCgpNYXBwaW5ncyBh ZGRlZCBieSB0aGUgbWFwIG9wZXJhdGlvbiBhcmUgdHJhY2tlZCBhbmQgb25seSB0aG9zZSBtYXBw aW5ncwptYXkgYmUgcmVtb3ZlZCBieSBhIHN1YnNlcXVlbnQgdW5tYXAgb3BlcmF0aW9uLiBGcmFt ZXMgYXJlIHNwZWNpZmllZCBieSB0aGUKb3duaW5nIGRvbWFpbiBhbmQgR0ZOLiBJdCBpcywgb2Yg Y291cnNlLCBwZXJtaXNzYWJsZSBmb3IgYSBkb21haW4gdG8gbWFwCml0cyBvd24gZnJhbWVzIHVz aW5nIERPTUlEX1NFTEYuCgpOT1RFOiBUaGUgb3duaW5nIGRvbWFpbiBhbmQgR0ZOIG11c3QgYWxz byBiZSBzcGVjaWZpZWQgaW4gdGhlIHVubWFwCiAgICAgIG9wZXJhdGlvbiwgYXMgd2VsbCBhcyB0 aGUgQkZOLCBzbyB0aGF0IHRoZXkgY2FuIGJlIGNyb3NzLWNoZWNrZWQKICAgICAgd2l0aCB0aGUg ZXhpc3RlbnQgbWFwcGluZy4KClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJy YW50QGNpdHJpeC5jb20+Ci0tLQpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpD YzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6IEdlb3JnZSBE dW5sYXAgPEdlb3JnZS5EdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IElhbiBKYWNrc29uIDxpYW4u amFja3NvbkBldS5jaXRyaXguY29tPgpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJt LmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4K Q2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IFRpbSBE ZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KCnY2 OgogLSBBZGQgcGxhY2Vob2xkZXIgc2JkZiBmaWVsZCBhbmQgZmxhZyB0byBjb250cm9sIHNjb3Bl IG9mIG1hcCwgdW5tYXAgYW5kCiAgIGZsdXNoLgoKdjQ6CiAtIEZpeGVkIGxvZ2ljIGludmVyc2lv biB3aGVuIGNoZWNraW5nIHJldHVybiBvZiBpb21tdV91bm1hcF9wYWdlKCkuCgp2MzoKIC0gQWRk IHR5cGUgcGlubmluZy4KCnYyOgogLSBIZWF2aWx5IHJlLXdvcmtlZCBpbiB2MiwgaW5jbHVkaW5n IGV4cGxpY2l0IHRyYWNraW5nIG9mIG1hcHBpbmdzLgogICBUaGlzIGF2b2lkcyB0aGUgbmVlZCB0 byBjbGVhciBub24tcmVzZXJ2ZWQgbWFwcGluZ3MgZnJvbSBJT01NVQogICBhdCBzdGFydCBvZiBk YXksIHdoaWNoIHdvdWxkIGJlIHByb2hpYml0aXZlbHkgc2xvdyBvbiBhIGxhcmdlIGhvc3QuCi0t LQogeGVuL2NvbW1vbi9pb21tdV9vcC5jICAgICAgICAgfCAxNzggKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3AuaCB8 IDExMCArKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUveGxhdC5sc3QgICAg ICAgICAgfCAgIDMgKwogMyBmaWxlcyBjaGFuZ2VkLCAyOTEgaW5zZXJ0aW9ucygrKQoKZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vaW9tbXVfb3AuYyBiL3hlbi9jb21tb24vaW9tbXVfb3AuYwppbmRl eCBjY2JiOWI2MzQwLi4zMjg1MjJmMjQ1IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2lvbW11X29w LmMKKysrIGIveGVuL2NvbW1vbi9pb21tdV9vcC5jCkBAIC0xMjMsNiArMTIzLDE1NiBAQCBzdGF0 aWMgaW50IGlvbW11X29wX2VuYWJsZV9tb2RpZmljYXRpb24oCiAgICAgcmV0dXJuIDA7CiB9CiAK K3N0YXRpYyBpbnQgaW9tbXVvcF9tYXAoc3RydWN0IHhlbl9pb21tdV9vcF9tYXAgKm9wKQorewor ICAgIHN0cnVjdCBkb21haW4gKmQsICpjdXJyZCA9IGN1cnJlbnQtPmRvbWFpbjsKKyAgICBzdHJ1 Y3QgZG9tYWluX2lvbW11ICppb21tdSA9IGRvbV9pb21tdShjdXJyZCk7CisgICAgYm9vbCByZWFk b25seSA9IG9wLT5mbGFncyAmIFhFTl9JT01NVU9QX21hcF9yZWFkb25seTsKKyAgICBiZm5fdCBi Zm4gPSBfYmZuKG9wLT5iZm4pOworICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CisgICAgdW5z aWduZWQgaW50IHByb3Q7CisgICAgaW50IHJjLCBpZ25vcmU7CisKKyAgICBpZiAoIG9wLT5wYWQg fHwKKyAgICAgICAgIChvcC0+ZmxhZ3MgJiB+KFhFTl9JT01NVU9QX21hcF9hbGwgfAorICAgICAg ICAgICAgICAgICAgICAgICAgWEVOX0lPTU1VT1BfbWFwX3JlYWRvbmx5KSkgKQorICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggIWlvbW11LT5pb21tdV9vcF9yYW5nZXMgKQorICAg ICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CisKKyAgICAvKiBQZXItZGV2aWNlIG1hcHBpbmcgbm90 IHlldCBzdXBwb3J0ZWQgKi8KKyAgICBpZiAoICEob3AtPmZsYWdzICYgWEVOX0lPTU1VT1BfbWFw X2FsbCkgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIC8qIENoZWNrIHdoZXRoZXIg dGhlIHNwZWNpZmllZCBCRk4gZmFsbHMgaW4gYSByZXNlcnZlZCByZWdpb24gKi8KKyAgICBpZiAo IHJhbmdlc2V0X2NvbnRhaW5zX3NpbmdsZXRvbihpb21tdS0+cmVzZXJ2ZWRfcmFuZ2VzLCBiZm5f eChiZm4pKSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgZCA9IHJjdV9sb2NrX2Rv bWFpbl9ieV9hbnlfaWQob3AtPmRvbWlkKTsKKyAgICBpZiAoICFkICkKKyAgICAgICAgcmV0dXJu IC1FU1JDSDsKKworICAgIHJjID0gZ2V0X3BhZ2VkX2dmbihkLCBfZ2ZuKG9wLT5nZm4pLCByZWFk b25seSwgTlVMTCwgJnBhZ2UpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIHVubG9jazsK KworICAgIHJjID0gLUVJTlZBTDsKKyAgICBpZiAoICFyZWFkb25seSAmJiAhZ2V0X3BhZ2VfdHlw ZShwYWdlLCBQR1Rfd3JpdGFibGVfcGFnZSkgKQorICAgIHsKKyAgICAgICAgcHV0X3BhZ2UocGFn ZSk7CisgICAgICAgIGdvdG8gdW5sb2NrOworICAgIH0KKworICAgIHByb3QgPSBJT01NVUZfcmVh ZGFibGU7CisgICAgaWYgKCAhcmVhZG9ubHkgKQorICAgICAgICBwcm90IHw9IElPTU1VRl93cml0 YWJsZTsKKworICAgIHJjID0gLUVJTzsKKyAgICBpZiAoIGlvbW11X21hcF9wYWdlKGN1cnJkLCBi Zm4sIHBhZ2VfdG9fbWZuKHBhZ2UpLCBwcm90KSApCisgICAgICAgIGdvdG8gcmVsZWFzZTsKKwor ICAgIHJjID0gcmFuZ2VzZXRfYWRkX3NpbmdsZXRvbihpb21tdS0+aW9tbXVfb3BfcmFuZ2VzLCBi Zm5feChiZm4pKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byB1bm1hcDsKKworICAgIHJj ID0gMDsKKyAgICBnb3RvIHVubG9jazsgLyogcmV0YWluIG1hcHBpbmcgYW5kIHJlZmVyZW5jZXMg Ki8KKworIHVubWFwOgorICAgIGlnbm9yZSA9IGlvbW11X3VubWFwX3BhZ2UoY3VycmQsIGJmbik7 CisKKyByZWxlYXNlOgorICAgIGlmICggIXJlYWRvbmx5ICkKKyAgICAgICAgcHV0X3BhZ2VfdHlw ZShwYWdlKTsKKyAgICBwdXRfcGFnZShwYWdlKTsKKworIHVubG9jazoKKyAgICByY3VfdW5sb2Nr X2RvbWFpbihkKTsKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgaW9tbXVvcF91bm1h cChzdHJ1Y3QgeGVuX2lvbW11X29wX3VubWFwICpvcCkKK3sKKyAgICBzdHJ1Y3QgZG9tYWluICpk LCAqY3VycmQgPSBjdXJyZW50LT5kb21haW47CisgICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaW9t bXUgPSBkb21faW9tbXUoY3VycmQpOworICAgIGJmbl90IGJmbiA9IF9iZm4ob3AtPmJmbik7Cisg ICAgbWZuX3QgbWZuOworICAgIGJvb2wgcmVhZG9ubHk7CisgICAgdW5zaWduZWQgaW50IHByb3Q7 CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIG9w LT5wYWQgfHwKKyAgICAgICAgIChvcC0+ZmxhZ3MgJiB+WEVOX0lPTU1VT1BfdW5tYXBfYWxsKSAp CisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCAhaW9tbXUtPmlvbW11X29wX3Jh bmdlcyApCisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKworICAgIC8qIFBlci1kZXZpY2Ug dW5tYXBwaW5nIG5vdCB5ZXQgc3VwcG9ydGVkICovCisgICAgaWYgKCAhKG9wLT5mbGFncyAmIFhF Tl9JT01NVU9QX3VubWFwX2FsbCkgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlm ICggIXJhbmdlc2V0X2NvbnRhaW5zX3NpbmdsZXRvbihpb21tdS0+aW9tbXVfb3BfcmFuZ2VzLCBi Zm5feChiZm4pKSB8fAorICAgICAgICAgaW9tbXVfbG9va3VwX3BhZ2UoY3VycmQsIGJmbiwgJm1m biwgJnByb3QpIHx8CisgICAgICAgICAhbWZuX3ZhbGlkKG1mbikgKQorICAgICAgICByZXR1cm4g LUVOT0VOVDsKKworICAgIHJlYWRvbmx5ID0gIShwcm90ICYgSU9NTVVGX3dyaXRhYmxlKTsKKwor ICAgIGQgPSByY3VfbG9ja19kb21haW5fYnlfYW55X2lkKG9wLT5kb21pZCk7CisgICAgaWYgKCAh ZCApCisgICAgICAgIHJldHVybiAtRVNSQ0g7CisKKyAgICByYyA9IGdldF9wYWdlZF9nZm4oZCwg X2dmbihvcC0+Z2ZuKSwgIShwcm90ICYgSU9NTVVGX3dyaXRhYmxlKSwgTlVMTCwKKyAgICAgICAg ICAgICAgICAgICAgICAgJnBhZ2UpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIHVubG9j azsKKworICAgIHB1dF9wYWdlKHBhZ2UpOyAvKiByZWxlYXNlIGV4dHJhIHJlZmVyZW5jZSBqdXN0 IHRha2VuICovCisKKyAgICByYyA9IC1FSU5WQUw7CisgICAgaWYgKCAhbWZuX2VxKHBhZ2VfdG9f bWZuKHBhZ2UpLCBtZm4pICkKKyAgICAgICAgZ290byB1bmxvY2s7CisKKyAgICAvKiByZWxlYXNl IHJlZmVyZW5jZSB0YWtlbiBpbiBtYXAgKi8KKyAgICBpZiAoICFyZWFkb25seSApCisgICAgICAg IHB1dF9wYWdlX3R5cGUocGFnZSk7CisgICAgcHV0X3BhZ2UocGFnZSk7CisKKyAgICByYyA9IHJh bmdlc2V0X3JlbW92ZV9zaW5nbGV0b24oaW9tbXUtPmlvbW11X29wX3JhbmdlcywgYmZuX3goYmZu KSk7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gdW5sb2NrOworCisgICAgaWYgKCBpb21t dV91bm1hcF9wYWdlKGN1cnJkLCBiZm4pICkKKyAgICAgICAgcmMgPSAtRUlPOworCisgdW5sb2Nr OgorICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOworCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0 aWMgaW50IGlvbW11b3BfZmx1c2goc3RydWN0IHhlbl9pb21tdV9vcF9mbHVzaCAqb3ApCit7Cisg ICAgc3RydWN0IGRvbWFpbiAqY3VycmQgPSBjdXJyZW50LT5kb21haW47CisgICAgc3RydWN0IGRv bWFpbl9pb21tdSAqaW9tbXUgPSBkb21faW9tbXUoY3VycmQpOworCisgICAgaWYgKCBvcC0+cGFk MCB8fCBvcC0+cGFkMSB8fAorICAgICAgICAgKG9wLT5mbGFncyAmIH5YRU5fSU9NTVVPUF9mbHVz aF9hbGwpICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoICFpb21tdS0+aW9t bXVfb3BfcmFuZ2VzICkKKyAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOworCisgICAgLyogUGVy LWRldmljZSBmbHVzaGluZyBub3QgeWV0IHN1cHBvcnRlZCAqLworICAgIGlmICggIShvcC0+Zmxh Z3MgJiBYRU5fSU9NTVVPUF9mbHVzaF9hbGwpICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisK KyAgICByZXR1cm4gIWlvbW11X2lvdGxiX2ZsdXNoX2FsbChjdXJyZCkgPyAwIDogLUVJTzsKK30K Kwogc3RhdGljIHZvaWQgaW9tbXVfb3AoeGVuX2lvbW11X29wX3QgKm9wKQogewogICAgIHN3aXRj aCAoIG9wLT5vcCApCkBAIC0xMzUsNiArMjg1LDIyIEBAIHN0YXRpYyB2b2lkIGlvbW11X29wKHhl bl9pb21tdV9vcF90ICpvcCkKICAgICAgICAgb3AtPnN0YXR1cyA9IGlvbW11X29wX2VuYWJsZV9t b2RpZmljYXRpb24oJm9wLT51LmVuYWJsZV9tb2RpZmljYXRpb24pOwogICAgICAgICBicmVhazsK IAorICAgIGNhc2UgWEVOX0lPTU1VT1BfbWFwOgorICAgICAgICB0aGlzX2NwdShpb21tdV9kb250 X2ZsdXNoX2lvdGxiKSA9IDE7CisgICAgICAgIG9wLT5zdGF0dXMgPSBpb21tdW9wX21hcCgmb3At PnUubWFwKTsKKyAgICAgICAgdGhpc19jcHUoaW9tbXVfZG9udF9mbHVzaF9pb3RsYikgPSAwOwor ICAgICAgICBicmVhazsKKworICAgIGNhc2UgWEVOX0lPTU1VT1BfdW5tYXA6CisgICAgICAgIHRo aXNfY3B1KGlvbW11X2RvbnRfZmx1c2hfaW90bGIpID0gMTsKKyAgICAgICAgb3AtPnN0YXR1cyA9 IGlvbW11b3BfdW5tYXAoJm9wLT51LnVubWFwKTsKKyAgICAgICAgdGhpc19jcHUoaW9tbXVfZG9u dF9mbHVzaF9pb3RsYikgPSAwOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgWEVOX0lPTU1V T1BfZmx1c2g6CisgICAgICAgIG9wLT5zdGF0dXMgPSBpb21tdW9wX2ZsdXNoKCZvcC0+dS5mbHVz aCk7CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgb3AtPnN0YXR1cyA9 IC1FT1BOT1RTVVBQOwogICAgICAgICBicmVhazsKQEAgLTE0OCw2ICszMTQsOSBAQCBpbnQgZG9f b25lX2lvbW11X29wKHhlbl9pb21tdV9vcF9idWZfdCAqYnVmKQogICAgIHN0YXRpYyBjb25zdCBz aXplX3Qgb3Bfc2l6ZVtdID0gewogICAgICAgICBbWEVOX0lPTU1VT1BfcXVlcnlfcmVzZXJ2ZWRd ID0gc2l6ZW9mKHN0cnVjdCB4ZW5faW9tbXVfb3BfcXVlcnlfcmVzZXJ2ZWQpLAogICAgICAgICBb WEVOX0lPTU1VT1BfZW5hYmxlX21vZGlmaWNhdGlvbl0gPSBzaXplb2Yoc3RydWN0IHhlbl9pb21t dV9vcF9lbmFibGVfbW9kaWZpY2F0aW9uKSwKKyAgICAgICAgW1hFTl9JT01NVU9QX21hcF0gPSBz aXplb2Yoc3RydWN0IHhlbl9pb21tdV9vcF9tYXApLAorICAgICAgICBbWEVOX0lPTU1VT1BfdW5t YXBdID0gc2l6ZW9mKHN0cnVjdCB4ZW5faW9tbXVfb3BfdW5tYXApLAorICAgICAgICBbWEVOX0lP TU1VT1BfZmx1c2hdID0gc2l6ZW9mKHN0cnVjdCB4ZW5faW9tbXVfb3BfZmx1c2gpLAogICAgIH07 CiAgICAgc2l6ZV90IHNpemU7CiAgICAgaW50IHJjOwpAQCAtMjM1LDYgKzQwNCw5IEBAIGludCBj b21wYXRfb25lX2lvbW11X29wKGNvbXBhdF9pb21tdV9vcF9idWZfdCAqYnVmKQogICAgIHN0YXRp YyBjb25zdCBzaXplX3Qgb3Bfc2l6ZVtdID0gewogICAgICAgICBbWEVOX0lPTU1VT1BfcXVlcnlf cmVzZXJ2ZWRdID0gc2l6ZW9mKHN0cnVjdCBjb21wYXRfaW9tbXVfb3BfcXVlcnlfcmVzZXJ2ZWQp LAogICAgICAgICBbWEVOX0lPTU1VT1BfZW5hYmxlX21vZGlmaWNhdGlvbl0gPSBzaXplb2Yoc3Ry dWN0IGNvbXBhdF9pb21tdV9vcF9lbmFibGVfbW9kaWZpY2F0aW9uKSwKKyAgICAgICAgW1hFTl9J T01NVU9QX21hcF0gPSBzaXplb2Yoc3RydWN0IGNvbXBhdF9pb21tdV9vcF9tYXApLAorICAgICAg ICBbWEVOX0lPTU1VT1BfdW5tYXBdID0gc2l6ZW9mKHN0cnVjdCBjb21wYXRfaW9tbXVfb3BfdW5t YXApLAorICAgICAgICBbWEVOX0lPTU1VT1BfZmx1c2hdID0gc2l6ZW9mKHN0cnVjdCBjb21wYXRf aW9tbXVfb3BfZmx1c2gpLAogICAgIH07CiAgICAgc2l6ZV90IHNpemU7CiAgICAgeGVuX2lvbW11 X29wX3QgbmF0OwpAQCAtMjczLDYgKzQ0NSw5IEBAIGludCBjb21wYXRfb25lX2lvbW11X29wKGNv bXBhdF9pb21tdV9vcF9idWZfdCAqYnVmKQogICAgICAqLwogI2RlZmluZSBYTEFUX2lvbW11X29w X3VfcXVlcnlfcmVzZXJ2ZWQgWEVOX0lPTU1VT1BfcXVlcnlfcmVzZXJ2ZWQKICNkZWZpbmUgWExB VF9pb21tdV9vcF91X2VuYWJsZV9tb2RpZmljYXRpb24gWEVOX0lPTU1VT1BfZW5hYmxlX21vZGlm aWNhdGlvbgorI2RlZmluZSBYTEFUX2lvbW11X29wX3VfbWFwIFhFTl9JT01NVU9QX21hcAorI2Rl ZmluZSBYTEFUX2lvbW11X29wX3VfdW5tYXAgWEVOX0lPTU1VT1BfdW5tYXAKKyNkZWZpbmUgWExB VF9pb21tdV9vcF91X2ZsdXNoIFhFTl9JT01NVU9QX2ZsdXNoCiAgICAgdSA9IGNtcC5vcDsKIAog I2RlZmluZSBYTEFUX2lvbW11X29wX3F1ZXJ5X3Jlc2VydmVkX0hORExfcmFuZ2VzKF9kXywgX3Nf KSAgICAgICAgICAgIFwKQEAgLTMzMiw2ICs1MDcsOSBAQCBpbnQgY29tcGF0X29uZV9pb21tdV9v cChjb21wYXRfaW9tbXVfb3BfYnVmX3QgKmJ1ZikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmNtcCwgc3RhdHVzKSApCiAgICAgICAgIHJldHVybiAtRUZBVUxUOwogCisjdW5kZWYg WExBVF9pb21tdV9vcF91X2ZsdXNoCisjdW5kZWYgWExBVF9pb21tdV9vcF91X3VubWFwCisjdW5k ZWYgWExBVF9pb21tdV9vcF91X21hcAogI3VuZGVmIFhMQVRfaW9tbXVfb3BfdV9lbmFibGVfbW9k aWZpY2F0aW9uCiAjdW5kZWYgWExBVF9pb21tdV9vcF91X3F1ZXJ5X3Jlc2VydmVkCiAKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9pb21tdV9vcC5oIGIveGVuL2luY2x1ZGUvcHVibGlj L2lvbW11X29wLmgKaW5kZXggOWI5OGI1Y2Y4OS4uZTZjMDhmNGJkZCAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUvcHVibGljL2lvbW11X29wLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2lvbW11 X29wLmgKQEAgLTgwLDYgKzgwLDExMyBAQCBzdHJ1Y3QgeGVuX2lvbW11X29wX2VuYWJsZV9tb2Rp ZmljYXRpb24gewogI2RlZmluZSBYRU5fSU9NTVVfQ0FQX3Blcl9kZXZpY2VfbWFwcGluZ3MgKDF1 IDw8IF9YRU5fSU9NTVVfQ0FQX3Blcl9kZXZpY2VfbWFwcGluZ3MpCiB9OwogCisvKgorICogWEVO X0lPTU1VT1BfbWFwOiBNYXAgYSBndWVzdCBwYWdlIGluIHRoZSBJT01NVS4KKyAqLworI2RlZmlu ZSBYRU5fSU9NTVVPUF9tYXAgMworCitzdHJ1Y3QgeGVuX2lvbW11X29wX21hcCB7CisgICAgLyog SU4gLSBUaGUgZG9taWQgb2YgdGhlIGd1ZXN0ICovCisgICAgZG9taWRfdCBkb21pZDsKKyAgICAv KgorICAgICAqIElOIC0gZmxhZ3MgY29udHJvbGxpbmcgdGhlIG1hcHBpbmcuIFRoaXMgc2hvdWxk IGJlIGEgYml0d2lzZSBPUiBvZiB0aGUKKyAgICAgKiAgICAgIGZsYWdzIGRlZmluZWQgYmVsb3cu CisgICAgICovCisgICAgdWludDE2X3QgZmxhZ3M7CisKKyAgICAvKgorICAgICAqIFNob3VsZCB0 aGUgbWFwcGluZyBiZSBjcmVhdGVkIGZvciBhbGwgaW5pdGlhdG9ycz8KKyAgICAgKgorICAgICAq IE5PVEU6IFRoaXMgZmxhZyBpcyBjdXJyZW50bHkgcmVxdWlyZWQgYXMgdGhlIGltcGxlbWVudGF0 aW9uIGRvZXMgbm90IHlldAorICAgICAqICAgICAgIHN1cHBvcnQgcHJlLWRldmljZSBtYXBwaW5n cy4KKyAgICAgKi8KKyNkZWZpbmUgX1hFTl9JT01NVU9QX21hcF9hbGwgMAorI2RlZmluZSBYRU5f SU9NTVVPUF9tYXBfYWxsICgxIDw8IChfWEVOX0lPTU1VT1BfbWFwX2FsbCkpCisKKyAgICAvKiBT aG91bGQgdGhlIG1hcHBpbmcgYmUgcmVhZC1vbmx5IHRvIHRoZSBpbml0aWF0b3I/ICovCisjZGVm aW5lIF9YRU5fSU9NTVVPUF9tYXBfcmVhZG9ubHkgMQorI2RlZmluZSBYRU5fSU9NTVVPUF9tYXBf cmVhZG9ubHkgKDEgPDwgKF9YRU5fSU9NTVVPUF9tYXBfcmVhZG9ubHkpKQorCisgICAgdWludDMy X3QgcGFkOworICAgIC8qCisgICAgICogSU4gLSBTZWdtZW50L0J1cy9EZXZpY2UvRnVuY3Rpb24g b2YgdGhlIGluaXRpYXRvci4KKyAgICAgKgorICAgICAqIE5PVEU6IFRoaXMgaXMgaWdub3JlZCBp ZiBYRU5fSU9NTVVPUF9tYXBfYWxsIGlzIHNldC4KKyAgICAgKi8KKyAgICB1aW50NjRfdCBzYmRm OworICAgIC8qIElOIC0gVGhlIElPTU1VIGZyYW1lIG51bWJlciB3aGljaCB3aWxsIGhvbGQgdGhl IG5ldyBtYXBwaW5nICovCisgICAgeGVuX2Jmbl90IGJmbjsKKyAgICAvKiBJTiAtIFRoZSBndWVz dCBmcmFtZSBudW1iZXIgb2YgdGhlIHBhZ2UgdG8gYmUgbWFwcGVkICovCisgICAgeGVuX3Bmbl90 IGdmbjsKK307CisKKy8qCisgKiBYRU5fSU9NTVVPUF91bm1hcF9nZm46IFJlbW92ZSBhIG1hcHBp bmcgaW4gdGhlIElPTU1VLgorICovCisjZGVmaW5lIFhFTl9JT01NVU9QX3VubWFwIDQKKworc3Ry dWN0IHhlbl9pb21tdV9vcF91bm1hcCB7CisgICAgLyogSU4gLSBUaGUgZG9taWQgb2YgdGhlIGd1 ZXN0ICovCisgICAgZG9taWRfdCBkb21pZDsKKyAgICAvKgorICAgICAqIElOIC0gZmxhZ3MgY29u dHJvbGxpbmcgdGhlIHVubWFwcGluZy4gVGhpcyBzaG91bGQgYmUgYSBiaXR3aXNlIE9SIG9mIHRo ZQorICAgICAqICAgICAgZmxhZ3MgZGVmaW5lZCBiZWxvdy4KKyAgICAgKi8KKyAgICB1aW50MTZf dCBmbGFnczsKKworICAgIC8qCisgICAgICogU2hvdWxkIHRoZSBtYXBwaW5nIGJlIGRlc3Ryb3ll ZCBmb3IgYWxsIGluaXRpYXRvcnM/CisgICAgICoKKyAgICAgKiBOT1RFOiBUaGlzIGZsYWcgaXMg Y3VycmVudGx5IHJlcXVpcmVkIGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCB5ZXQKKyAg ICAgKiAgICAgICBzdXBwb3J0IHByZS1kZXZpY2UgbWFwcGluZ3MuCisgICAgICovCisjZGVmaW5l IF9YRU5fSU9NTVVPUF91bm1hcF9hbGwgMAorI2RlZmluZSBYRU5fSU9NTVVPUF91bm1hcF9hbGwg KDEgPDwgKF9YRU5fSU9NTVVPUF91bm1hcF9hbGwpKQorCisgICAgdWludDMyX3QgcGFkOworICAg IC8qCisgICAgICogSU4gLSBTZWdtZW50L0J1cy9EZXZpY2UvRnVuY3Rpb24gb2YgdGhlIGluaXRp YXRvci4KKyAgICAgKgorICAgICAqIE5PVEU6IFRoaXMgaXMgaWdub3JlZCBpZiBYRU5fSU9NTVVP UF91bm1hcF9hbGwgaXMgc2V0LgorICAgICAqLworICAgIHVpbnQ2NF90IHNiZGY7CisgICAgLyog SU4gLSBUaGUgSU9NTVUgZnJhbWUgbnVtYmVyIHdoaWNoIGhvbGRzIHRoZSBtYXBwaW5nIHRvIGJl IHJlbW92ZWQgKi8KKyAgICB4ZW5fYmZuX3QgYmZuOworICAgIC8qIElOIC0gVGhlIGd1ZXN0IGZy YW1lIG51bWJlciBvZiB0aGUgcGFnZSB0aGF0IGlzIG1hcHBlZCAqLworICAgIHhlbl9wZm5fdCBn Zm47Cit9OworCisvKgorICogWEVOX0lPTU1VT1BfZmx1c2g6IEZsdXNoIHRoZSBJT01NVSBUTEIu CisgKi8KKyNkZWZpbmUgWEVOX0lPTU1VT1BfZmx1c2ggNQorCitzdHJ1Y3QgeGVuX2lvbW11X29w X2ZsdXNoIHsKKyAgICAvKgorICAgICAqIElOIC0gZmxhZ3MgY29udHJvbGxpbmcgZmx1c2hpbmcu IFRoaXMgc2hvdWxkIGJlIGEgYml0d2lzZSBPUiBvZiB0aGUKKyAgICAgKiAgICAgIGZsYWdzIGRl ZmluZWQgYmVsb3cuCisgICAgICovCisgICAgdWludDE2X3QgZmxhZ3M7CisKKyAgICAvKgorICAg ICAqIFNob3VsZCB0aGUgbWFwcGluZ3MgZmx1c2hlZCBmb3IgYWxsIGluaXRpYXRvcnM/CisgICAg ICoKKyAgICAgKiBOT1RFOiBUaGlzIGZsYWcgaXMgY3VycmVudGx5IHJlcXVpcmVkIGFzIHRoZSBp bXBsZW1lbnRhdGlvbiBkb2VzIG5vdCB5ZXQKKyAgICAgKiAgICAgICBzdXBwb3J0IHByZS1kZXZp Y2UgbWFwcGluZ3MuCisgICAgICovCisjZGVmaW5lIF9YRU5fSU9NTVVPUF9mbHVzaF9hbGwgMAor I2RlZmluZSBYRU5fSU9NTVVPUF9mbHVzaF9hbGwgKDEgPDwgKF9YRU5fSU9NTVVPUF9mbHVzaF9h bGwpKQorCisgICAgdWludDE2X3QgcGFkMDsKKyAgICB1aW50MzJfdCBwYWQxOworICAgIC8qCisg ICAgICogSU4gLSBTZWdtZW50L0J1cy9EZXZpY2UvRnVuY3Rpb24gb2YgdGhlIGluaXRpYXRvci4K KyAgICAgKgorICAgICAqIE5PVEU6IFRoaXMgaXMgaWdub3JlZCBpZiBYRU5fSU9NTVVPUF9mbHVz aF9hbGwgaXMgc2V0LgorICAgICAqLworICAgIHVpbnQ2NF90IHNiZGY7Cit9OworCiBzdHJ1Y3Qg eGVuX2lvbW11X29wIHsKICAgICB1aW50MTZfdCBvcDsgICAgLyogb3AgdHlwZSAqLwogICAgIHVp bnQxNl90IHBhZDsKQEAgLTg4LDYgKzE5NSw5IEBAIHN0cnVjdCB4ZW5faW9tbXVfb3AgewogICAg IHVuaW9uIHsKICAgICAgICAgc3RydWN0IHhlbl9pb21tdV9vcF9xdWVyeV9yZXNlcnZlZCBxdWVy eV9yZXNlcnZlZDsKICAgICAgICAgc3RydWN0IHhlbl9pb21tdV9vcF9lbmFibGVfbW9kaWZpY2F0 aW9uIGVuYWJsZV9tb2RpZmljYXRpb247CisgICAgICAgIHN0cnVjdCB4ZW5faW9tbXVfb3BfbWFw IG1hcDsKKyAgICAgICAgc3RydWN0IHhlbl9pb21tdV9vcF91bm1hcCB1bm1hcDsKKyAgICAgICAg c3RydWN0IHhlbl9pb21tdV9vcF9mbHVzaCBmbHVzaDsKICAgICB9IHU7CiB9OwogdHlwZWRlZiBz dHJ1Y3QgeGVuX2lvbW11X29wIHhlbl9pb21tdV9vcF90OwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUveGxhdC5sc3QgYi94ZW4vaW5jbHVkZS94bGF0LmxzdAppbmRleCBjMWIyN2UwMzQ5Li41YWI0 YzcyMjY0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94bGF0LmxzdAorKysgYi94ZW4vaW5jbHVk ZS94bGF0LmxzdApAQCAtODAsNyArODAsMTAgQEAKICEJaW9tbXVfb3AJCQlpb21tdV9vcC5oCiAh CWlvbW11X29wX2J1ZgkJCWlvbW11X29wLmgKICEJaW9tbXVfb3BfZW5hYmxlX21vZGlmaWNhdGlv bglpb21tdV9vcC5oCishCWlvbW11X29wX2ZsdXNoCQkJaW9tbXVfb3AuaAorIQlpb21tdV9vcF9t YXAJCQlpb21tdV9vcC5oCiAhCWlvbW11X29wX3F1ZXJ5X3Jlc2VydmVkCQlpb21tdV9vcC5oCish CWlvbW11X29wX3VubWFwCQkJaW9tbXVfb3AuaAogPwlpb21tdV9yZXNlcnZlZF9yYW5nZQkJaW9t bXVfb3AuaAogPwlrZXhlY19leGVjCQkJa2V4ZWMuaAogIQlrZXhlY19pbWFnZQkJCWtleGVjLmgK LS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=