From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH 7/7] x86: add iommu_ops to map and unmap pages, and also to flush the IOTLB Date: Mon, 12 Feb 2018 10:47:14 +0000 Message-ID: <20180212104714.1922-8-paul.durrant@citrix.com> References: <20180212104714.1922-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1elBfF-0003yI-RD for xen-devel@lists.xenproject.org; Mon, 12 Feb 2018 10:48:49 +0000 In-Reply-To: <20180212104714.1922-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 , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBhZGRzIGlvbW11X29wcyB0byBhbGxvdyBhIGRvbWFpbiB3aXRoIGNvbnRyb2xf aW9tbXUgcHJpdmlsZWdlCnRvIG1hcCBhbmQgdW5tYXAgcGFnZXMgZnJvbSBhbnkgZ3Vlc3Qgb3Zl ciB3aGljaCBpdCBoYXMgbWFwcGluZyBwcml2aWxlZ2UKaW4gdGhlIElPTU1VLgpUaGVzZSBvcGVy YXRpb25zIGltcGxpY2l0bHkgZGlzYWJsZSBJT1RMQiBmbHVzaGluZyBzbyB0aGF0IHRoZSBjYWxs ZXIgY2FuCmJhdGNoIG9wZXJhdGlvbnMgYW5kIHRoZW4gZXhwbGljaXRseSBmbHVzaCB0aGUgSU9U TEIgdXNpbmcgdGhlIGlvbW11X29wCmFsc28gYWRkZWQgYnkgdGhpcyBwYXRjaC4KClNpZ25lZC1v ZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Ci0tLQpDYzogSmFu IEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNv b3BlcjNAY2l0cml4LmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAZXUuY2l0 cml4LmNvbT4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzog S29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpDYzogU3RlZmFu byBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogVGltIERlZWdhbiA8dGlt QHhlbi5vcmc+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KIHhlbi9hcmNo L3g4Ni9pb21tdV9vcC5jICAgICAgIHwgMTg2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVibGljL2lvbW11X29wLmggfCAgMzcgKysrKysr KysrCiB4ZW4vaW5jbHVkZS94bGF0LmxzdCAgICAgICAgICB8ICAgMiArCiAzIGZpbGVzIGNoYW5n ZWQsIDIyNSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2lvbW11X29w LmMgYi94ZW4vYXJjaC94ODYvaW9tbXVfb3AuYwppbmRleCBhYzgxYjk4YjdhLi5iMTBjOTE2Mjc5 IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaW9tbXVfb3AuYworKysgYi94ZW4vYXJjaC94ODYv aW9tbXVfb3AuYwpAQCAtMjQsNiArMjQsMTc0IEBACiAjaW5jbHVkZSA8eGVuL2h5cGVyY2FsbC5o PgogI2luY2x1ZGUgPHhlbi9pb21tdS5oPgogCisvKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20v cGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KKyN1bmRlZiBtZm5fdG9fcGFn ZQorI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3BhZ2UobWZuX3gobWZuKSkKKyN1 bmRlZiBwYWdlX3RvX21mbgorI2RlZmluZSBwYWdlX3RvX21mbihwYWdlKSBfbWZuKF9fcGFnZV90 b19tZm4ocGFnZSkpCisKK3N0cnVjdCBjaGVja19yZG1fY3R4dCB7CisgICAgYmZuX3QgYmZuOwor fTsKKworc3RhdGljIGludCBjaGVja19yZG0oeGVuX3Bmbl90IHN0YXJ0LCB4ZW5fdWxvbmdfdCBu ciwgdTMyIGlkLCB2b2lkICphcmcpCit7CisgICAgc3RydWN0IGNoZWNrX3JkbV9jdHh0ICpjdHh0 ID0gYXJnOworCisgICAgaWYgKCBiZm5feChjdHh0LT5iZm4pID49IHN0YXJ0ICYmCisgICAgICAg ICBiZm5feChjdHh0LT5iZm4pIDwgc3RhcnQgKyBuciApCisgICAgICAgIHJldHVybiAtRUlOVkFM OworCisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgaW9tbXVvcF9tYXAoc3RydWN0IHhl bl9pb21tdV9vcF9tYXAgKm9wLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisgICAgc3RydWN0IGRv bWFpbiAqZCwgKm9kLCAqY3VycmQgPSBjdXJyZW50LT5kb21haW47CisgICAgc3RydWN0IGRvbWFp bl9pb21tdSAqaW9tbXUgPSBkb21faW9tbXUoY3VycmQpOworICAgIGNvbnN0IHN0cnVjdCBpb21t dV9vcHMgKm9wcyA9IGlvbW11LT5wbGF0Zm9ybV9vcHM7CisgICAgZG9taWRfdCBkb21pZCA9IG9w LT5kb21pZDsKKyAgICBnZm5fdCBnZm4gPSBfZ2ZuKG9wLT5nZm4pOworICAgIGJmbl90IGJmbiA9 IF9iZm4ob3AtPmJmbik7CisgICAgbWZuX3QgbWZuOworICAgIHN0cnVjdCBjaGVja19yZG1fY3R4 dCBjdHh0ID0geworICAgICAgICAuYmZuID0gYmZuLAorICAgIH07CisgICAgcDJtX3R5cGVfdCBw Mm10OworICAgIHAybV9xdWVyeV90IHAybXE7CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsK KyAgICB1bnNpZ25lZCBpbnQgcHJvdDsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAob3AtPnBhZDAg IT0gMCB8fCBvcC0+cGFkMSAhPSAwKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIC8q CisgICAgICogQm90aCBtYXBfcGFnZSBhbmQgbG9va3VwX3BhZ2Ugb3BlcmF0aW9ucyBtdXN0IGJl IGltcGxlbWVudGVkLgorICAgICAqIFRoZSBsb29rdXBfcGFnZSBtZXRob2QgaXMgbm90IHVzZWQg aGVyZSBidXQgaXMgcmVsaWVkIHVwb24gYnkKKyAgICAgKiBpb21tdW9wX3VubWFwKCkgdG8gZHJv cCB0aGUgcGFnZSByZWZlcmVuY2UgdGFrZW4gaGVyZS4KKyAgICAgKi8KKyAgICBpZiAoICFvcHMt Pm1hcF9wYWdlIHx8ICFvcHMtPmxvb2t1cF9wYWdlICkKKyAgICAgICAgcmV0dXJuIC1FTk9TWVM7 CisKKyAgICAvKiBDaGVjayB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgQkZOIGZhbGxzIGluIGEgcmVz ZXJ2ZWQgcmVnaW9uICovCisgICAgcmMgPSBpb21tdV9nZXRfcmVzZXJ2ZWRfZGV2aWNlX21lbW9y eShjaGVja19yZG0sICZjdHh0KTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOwor CisgICAgZCA9IHJjdV9sb2NrX2RvbWFpbl9ieV9hbnlfaWQoZG9taWQpOworICAgIGlmICggIWQg KQorICAgICAgICByZXR1cm4gLUVTUkNIOworCisgICAgcDJtcSA9IChmbGFncyAmIFhFTl9JT01N VU9QX21hcF9yZWFkb25seSkgPworICAgICAgICBQMk1fVU5TSEFSRSA6IFAyTV9BTExPQzsKKyAg ICBwYWdlID0gZ2V0X3BhZ2VfZnJvbV9nZm4oZCwgZ2ZuX3goZ2ZuKSwgJnAybXQsIHAybXEpOwor CisgICAgcmMgPSAtRU5PRU5UOworICAgIGlmICggIXBhZ2UgKQorICAgICAgICBnb3RvIHVubG9j azsKKworICAgIGlmICggcDJtX2lzX3BhZ2VkKHAybXQpICkKKyAgICB7CisgICAgICAgIHAybV9t ZW1fcGFnaW5nX3BvcHVsYXRlKGQsIGdmbl94KGdmbikpOworICAgICAgICBnb3RvIHJlbGVhc2U7 CisgICAgfQorCisgICAgaWYgKCAocDJtcSAmIFAyTV9VTlNIQVJFKSAmJiBwMm1faXNfc2hhcmVk KHAybXQpICkKKyAgICAgICAgZ290byByZWxlYXNlOworCisgICAgLyoKKyAgICAgKiBNYWtlIHN1 cmUgdGhlIHBhZ2UgaXMgUkFNIGFuZCwgaWYgaXQgaXMgcmVhZC1vbmx5LCB0aGF0IHRoZQorICAg ICAqIHJlYWQtb25seSBmbGFnIGlzIHByZXNlbnQuCisgICAgICovCisgICAgcmMgPSAtRVBFUk07 CisgICAgaWYgKCAhcDJtX2lzX2FueV9yYW0ocDJtdCkgfHwKKyAgICAgICAgIChwMm1faXNfcmVh ZG9ubHkocDJtdCkgJiYgIShmbGFncyAmIFhFTl9JT01NVU9QX21hcF9yZWFkb25seSkpICkKKyAg ICAgICAgZ290byByZWxlYXNlOworCisgICAgLyoKKyAgICAgKiBJZiB0aGUgY2FsbGluZyBkb21h aW4gZG9lcyBub3Qgb3duIHRoZSBwYWdlIHRoZW4gbWFrZSBzdXJlIGl0CisgICAgICogaGFzIG1h cHBpbmcgcHJpdmlsZWdlIG92ZXIgdGhlIHBhZ2Ugb3duZXIuCisgICAgICovCisgICAgb2QgPSBw YWdlX2dldF9vd25lcihwYWdlKTsKKyAgICBpZiAoIG9kICE9IGN1cnJkICkKKyAgICB7CisgICAg ICAgIHJjID0geHNtX2RvbWFpbl9tZW1vcnlfbWFwKFhTTV9UQVJHRVQsIG9kKTsKKyAgICAgICAg aWYgKCByYyApCisgICAgICAgICAgICBnb3RvIHJlbGVhc2U7CisgICAgfQorCisgICAgcHJvdCA9 IElPTU1VRl9yZWFkYWJsZTsKKyAgICBpZiAoICEoZmxhZ3MgJiBYRU5fSU9NTVVPUF9tYXBfcmVh ZG9ubHkpICkKKyAgICAgICAgcHJvdCB8PSBJT01NVUZfd3JpdGFibGU7CisKKyAgICBtZm4gPSBw YWdlX3RvX21mbihwYWdlKTsKKworICAgIHJjID0gMDsKKyAgICBpZiAoICFvcHMtPm1hcF9wYWdl KGN1cnJkLCBiZm4sIG1mbiwgcHJvdCkgKQorICAgICAgICBnb3RvIHVubG9jazsgLyoga2VlcCB0 aGUgcGFnZSByZWYgKi8KKworICAgIHJjID0gLUVJTzsKKworIHJlbGVhc2U6CisgICAgcHV0X3Bh Z2UocGFnZSk7CisKKyB1bmxvY2s6CisgICAgcmN1X3VubG9ja19kb21haW4oZCk7CisKKyAgICBy ZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgaW9tbXVvcF91bm1hcChzdHJ1Y3QgeGVuX2lvbW11 X29wX3VubWFwICpvcCkKK3sKKyAgICBzdHJ1Y3QgZG9tYWluICpjdXJyZCA9IGN1cnJlbnQtPmRv bWFpbjsKKyAgICBzdHJ1Y3QgZG9tYWluX2lvbW11ICppb21tdSA9IGRvbV9pb21tdShjdXJyZCk7 CisgICAgY29uc3Qgc3RydWN0IGlvbW11X29wcyAqb3BzID0gaW9tbXUtPnBsYXRmb3JtX29wczsK KyAgICBiZm5fdCBiZm4gPSBfYmZuKG9wLT5iZm4pOworICAgIG1mbl90IG1mbjsKKyAgICBzdHJ1 Y3QgY2hlY2tfcmRtX2N0eHQgY3R4dCA9IHsKKyAgICAgICAgLmJmbiA9IGJmbiwKKyAgICB9Owor ICAgIHVuc2lnbmVkIGludCBmbGFnczsKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOworICAg IGludCByYzsKKworICAgIC8qCisgICAgICogQm90aCB1bm1hcF9wYWdlIGFuZCBsb29rdXBfcGFn ZSBvcGVyYXRpb25zIG11c3QgYmUgaW1wbGVtZW50ZWQuCisgICAgICovCisgICAgaWYgKCAhb3Bz LT51bm1hcF9wYWdlIHx8ICFvcHMtPmxvb2t1cF9wYWdlICkKKyAgICAgICAgcmV0dXJuIC1FTk9T WVM7CisKKyAgICAvKiBDaGVjayB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgQkZOIGZhbGxzIGluIGEg cmVzZXJ2ZWQgcmVnaW9uICovCisgICAgcmMgPSBpb21tdV9nZXRfcmVzZXJ2ZWRfZGV2aWNlX21l bW9yeShjaGVja19yZG0sICZjdHh0KTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJj OworCisgICAgaWYgKCBvcHMtPmxvb2t1cF9wYWdlKGN1cnJkLCBiZm4sICZtZm4sICZmbGFncykg fHwKKyAgICAgICAgICFtZm5fdmFsaWQobWZuKSApCisgICAgICAgIHJldHVybiAtRU5PRU5UOwor CisgICAgcGFnZSA9IG1mbl90b19wYWdlKG1mbik7CisKKyAgICBpZiAoIG9wcy0+dW5tYXBfcGFn ZShjdXJyZCwgYmZuKSApCisgICAgICAgIHJldHVybiAtRUlPOworCisgICAgcHV0X3BhZ2UocGFn ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaW9tbXVvcF9mbHVzaCh2b2lkKQor eworICAgIHN0cnVjdCBkb21haW4gKmN1cnJkID0gY3VycmVudC0+ZG9tYWluOworICAgIHN0cnVj dCBkb21haW5faW9tbXUgKmlvbW11ID0gZG9tX2lvbW11KGN1cnJkKTsKKyAgICBjb25zdCBzdHJ1 Y3QgaW9tbXVfb3BzICpvcHMgPSBpb21tdS0+cGxhdGZvcm1fb3BzOworCisgICAgaWYgKCBvcHMt PmlvdGxiX2ZsdXNoX2FsbChjdXJyZCkgKQorICAgICAgICByZXR1cm4gLUVJTzsKKworICAgIHJl dHVybiAwOworfQorCiBzdHJ1Y3QgZ2V0X3JkbV9jdHh0IHsKICAgICB1bnNpZ25lZCBpbnQgbWF4 X2VudHJpZXM7CiAgICAgdW5zaWduZWQgaW50IG5yX2VudHJpZXM7CkBAIC0xMDEsNiArMjY5LDIy IEBAIHN0YXRpYyB2b2lkIGlvbW11X29wKHhlbl9pb21tdV9vcF90ICpvcCkKICAgICAgICAgb3At PnN0YXR1cyA9IGlvbW11b3BfcXVlcnlfcmVzZXJ2ZWQoJm9wLT51LnF1ZXJ5X3Jlc2VydmVkKTsK ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFhFTl9JT01NVU9QX21hcDoKKyAgICAgICAgdGhp c19jcHUoaW9tbXVfZG9udF9mbHVzaF9pb3RsYikgPSAxOworICAgICAgICBvcC0+c3RhdHVzID0g aW9tbXVvcF9tYXAoJm9wLT51Lm1hcCwgb3AtPmZsYWdzKTsKKyAgICAgICAgdGhpc19jcHUoaW9t bXVfZG9udF9mbHVzaF9pb3RsYikgPSAwOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgWEVO X0lPTU1VT1BfdW5tYXA6CisgICAgICAgIHRoaXNfY3B1KGlvbW11X2RvbnRfZmx1c2hfaW90bGIp ID0gMTsKKyAgICAgICAgb3AtPnN0YXR1cyA9IGlvbW11b3BfdW5tYXAoJm9wLT51LnVubWFwKTsK KyAgICAgICAgdGhpc19jcHUoaW9tbXVfZG9udF9mbHVzaF9pb3RsYikgPSAwOworICAgICAgICBi cmVhazsKKworICAgIGNhc2UgWEVOX0lPTU1VT1BfZmx1c2g6CisgICAgICAgIG9wLT5zdGF0dXMg PSBpb21tdW9wX2ZsdXNoKCk7CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAg ICAgb3AtPnN0YXR1cyA9IC1FT1BOT1RTVVBQOwogICAgICAgICBicmVhazsKQEAgLTE5NSw2ICsz NzksOCBAQCBpbnQgY29tcGF0X2lvbW11X29wKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oY29tcGF0 X2lvbW11X29wX3QpIHVvcHMsCiAgICAgICAgICAqIHdlIG5lZWQgdG8gZml4IHRoaW5ncyB1cCBo ZXJlLgogICAgICAgICAgKi8KICNkZWZpbmUgWExBVF9pb21tdV9vcF91X3F1ZXJ5X3Jlc2VydmVk IFhFTl9JT01NVU9QX3F1ZXJ5X3Jlc2VydmVkCisjZGVmaW5lIFhMQVRfaW9tbXVfb3BfdV9tYXAg WEVOX0lPTU1VT1BfbWFwCisjZGVmaW5lIFhMQVRfaW9tbXVfb3BfdV91bm1hcCBYRU5fSU9NTVVP UF91bm1hcAogICAgICAgICB1ID0gY21wLm9wOwogCiAjZGVmaW5lIFhMQVRfaW9tbXVfb3BfcXVl cnlfcmVzZXJ2ZWRfSE5ETF9yZWdpb25zKF9kXywgX3NfKSBcCmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9wdWJsaWMvaW9tbXVfb3AuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9pb21tdV9vcC5oCmlu ZGV4IDI0YjhiOWUwY2MuLjlhNzgyNjAzZGUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1Ymxp Yy9pb21tdV9vcC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9pb21tdV9vcC5oCkBAIC01Nywx MyArNTcsNTAgQEAgc3RydWN0IHhlbl9pb21tdV9vcF9xdWVyeV9yZXNlcnZlZCB7CiAgICAgWEVO X0dVRVNUX0hBTkRMRSh4ZW5faW9tbXVfcmVzZXJ2ZWRfcmVnaW9uX3QpIHJlZ2lvbnM7CiB9Owog CisvKgorICogWEVOX0lPTU1VT1BfbWFwOiBNYXAgYSBwYWdlIGluIHRoZSBJT01NVS4KKyAqLwor I2RlZmluZSBYRU5fSU9NTVVPUF9tYXAgMgorCitzdHJ1Y3QgeGVuX2lvbW11X29wX21hcCB7Cisg ICAgLyogSU4gLSBUaGUgSU9NTVUgZnJhbWUgbnVtYmVyIHdoaWNoIHdpbGwgaG9sZCB0aGUgbmV3 IG1hcHBpbmcgKi8KKyAgICB4ZW5fYmZuX3QgYmZuOworICAgIC8qIElOIC0gVGhlIGd1ZXN0IGZy YW1lIG51bWJlciBvZiB0aGUgcGFnZSB0byBiZSBtYXBwZWQgKi8KKyAgICB4ZW5fcGZuX3QgZ2Zu OworICAgIC8qIElOIC0gVGhlIGRvbWlkIG9mIHRoZSBndWVzdCAqLworICAgIGRvbWlkX3QgZG9t aWQ7CisgICAgdW5zaWduZWQgc2hvcnQgcGFkMDsKKyAgICB1bnNpZ25lZCBpbnQgcGFkMTsKK307 CisKKy8qCisgKiBYRU5fSU9NTVVPUF91bm1hcDogUmVtb3ZlIGEgbWFwcGluZyBpbiB0aGUgSU9N TVUuCisgKi8KKyNkZWZpbmUgWEVOX0lPTU1VT1BfdW5tYXAgMworCitzdHJ1Y3QgeGVuX2lvbW11 X29wX3VubWFwIHsKKyAgICAvKiBJTiAtIFRoZSBJT01NVSBmcmFtZSBudW1iZXIgaG9sZGluZyB0 aGUgbWFwcGluZyB0byBiZSBjbGVhcmVkICovCisgICAgeGVuX2Jmbl90IGJmbjsKK307CisKKy8q CisgKiBYRU5fSU9NTVVPUF9mbHVzaDogRmx1c2ggdGhlIElPTU1VIFRMQi4KKyAqLworI2RlZmlu ZSBYRU5fSU9NTVVPUF9mbHVzaCA0CisKIHN0cnVjdCB4ZW5faW9tbXVfb3AgewogICAgIHVpbnQx Nl90IG9wOwogICAgIHVpbnQxNl90IGZsYWdzOyAvKiBvcCBzcGVjaWZpYyBmbGFncyAqLworCisj ZGVmaW5lIF9YRU5fSU9NTVVPUF9tYXBfcmVhZG9ubHkgMAorI2RlZmluZSBYRU5fSU9NTVVPUF9t YXBfcmVhZG9ubHkgKDEgPDwgKF9YRU5fSU9NTVVPUF9tYXBfcmVhZG9ubHkpKQorCiAgICAgaW50 MzJfdCBzdGF0dXM7IC8qIG9wIGNvbXBsZXRpb24gc3RhdHVzOiAqLwogICAgICAgICAgICAgICAg ICAgICAvKiAwIGZvciBzdWNjZXNzIG90aGVyd2lzZSwgbmVnYXRpdmUgZXJybm8gKi8KICAgICB1 bmlvbiB7CiAgICAgICAgIHN0cnVjdCB4ZW5faW9tbXVfb3BfcXVlcnlfcmVzZXJ2ZWQgcXVlcnlf cmVzZXJ2ZWQ7CisgICAgICAgIHN0cnVjdCB4ZW5faW9tbXVfb3BfbWFwIG1hcDsKKyAgICAgICAg c3RydWN0IHhlbl9pb21tdV9vcF91bm1hcCB1bm1hcDsKICAgICB9IHU7CiB9OwogdHlwZWRlZiBz dHJ1Y3QgeGVuX2lvbW11X29wIHhlbl9pb21tdV9vcF90OwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUveGxhdC5sc3QgYi94ZW4vaW5jbHVkZS94bGF0LmxzdAppbmRleCBhMjA3MGI2ZDdkLi5kZGRh ZmM3NDIyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94bGF0LmxzdAorKysgYi94ZW4vaW5jbHVk ZS94bGF0LmxzdApAQCAtNzgsNiArNzgsOCBAQAogPwl2Y3B1X2h2bV94ODZfNjQJCQlodm0vaHZt X3ZjcHUuaAogIQlpb21tdV9yZXNlcnZlZF9yZWdpb24JCWlvbW11X29wLmgKICEJaW9tbXVfb3Bf cXVlcnlfcmVzZXJ2ZWQJCWlvbW11X29wLmgKKyEJaW9tbXVfb3BfbWFwCQkJaW9tbXVfb3AuaAor IQlpb21tdV9vcF91bm1hcAkJCWlvbW11X29wLmgKICEJaW9tbXVfb3AJCQlpb21tdV9vcC5oCiA/ CWtleGVjX2V4ZWMJCQlrZXhlYy5oCiAhCWtleGVjX2ltYWdlCQkJa2V4ZWMuaAotLSAKMi4xMS4w CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==