From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v4 25/28] tools/libxl: Add an user configurable parameter to control vIOMMU attributes Date: Fri, 17 Nov 2017 14:22:32 +0800 Message-ID: <1510899755-40237-26-git-send-email-chao.gao@intel.com> References: <1510899755-40237-1-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1510899755-40237-1-git-send-email-chao.gao@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: Lan Tianyu , Kevin Tian , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Tim Deegan , Jan Beulich , Chao Gao , Ian Jackson , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org QSBmaWVsZCwgdmlvbW11X2luZm8sIGlzIGFkZGVkIHRvIHN0cnVjdCBsaWJ4bF9kb21haW5fYnVp bGRfaW5mby4gU2V2ZXJhbAphdHRyaWJ1dGVzIGNhbiBiZSBzcGVjaWZpZWQgYnkgZ3Vlc3QgY29u ZmlnIGZpbGUgZm9yIHZpcnR1YWwgSU9NTVUuIFRoZXNlCmF0dHJpYnV0ZXMgYXJlIHVzZWQgZm9y IERNQVIgY29uc3RydWN0aW9uIGFuZCB2SU9NTVUgY3JlYXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBD aGFvIEdhbyA8Y2hhby5nYW9AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBMYW4gVGlhbnl1IDx0 aWFueXUubGFuQGludGVsLmNvbT4KCi0tLQp2NDoKIC0gTW92ZSBWVERfQkFTRV9BRERSRVNTJ3Mg ZGVmaW5pdGlvbiB0byBsaWJ4bF9hcmNoLmgKCnYzOgogLSBhbGxvdyBhbiBhcnJheSBvZiB2aW9t bXUgcmF0aGVyIHRoYW4gb25seSBvbmUgdmlvbW11IHRvIHByZXNlbnQgdG8gZ3Vlc3QuCiBEdXJp bmcgZG9tYWluIGJ1aWxkaW5nLCBhbiBlcnJvciB3b3VsZCBiZSByYWlzZWQgZm9yCiBtdWx0aXBs ZSB2aW9tbXVzIGNhc2Ugc2luY2Ugd2UgaGF2ZW4ndCBpbXBsZW1lbnRlZCB0aGlzIHlldC4KIC0g cHJvdmlkZSBhIGxpYnhsX192aW9tbXVfc2V0X2RlZmF1bHQoKSBmb3IgdmlvbW11Ci0tLQogZG9j cy9tYW4veGwuY2ZnLnBvZC41LmluICAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrCiB0 b29scy9saWJ4bC9saWJ4bF9hcmNoLmggICAgfCAgMSArCiB0b29scy9saWJ4bC9saWJ4bF9jcmVh dGUuYyAgfCA0NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRv b2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCB8IDEyICsrKysrKysrKysrCiB0b29scy94bC94bF9w YXJzZS5jICAgICAgICAgfCA1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTM2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9kb2NzL21hbi94bC5jZmcucG9kLjUuaW4gYi9kb2NzL21hbi94bC5j ZmcucG9kLjUuaW4KaW5kZXggYjdiOTFkOC4uMmE0OGNiOCAxMDA2NDQKLS0tIGEvZG9jcy9tYW4v eGwuY2ZnLnBvZC41LmluCisrKyBiL2RvY3MvbWFuL3hsLmNmZy5wb2QuNS5pbgpAQCAtMTgwMyw2 ICsxODAzLDMzIEBAIEw8aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2Rl dGFpbHMuYXNweD9pZD0zMDcwNz4KIAogPWJhY2sgCiAKKz1pdGVtIEI8dmlvbW11PVsgIlZJT01N VV9TVFJJTkciLCAiVklPTU1VX1NUUklORyIsIC4uLl0+CisKK1NwZWNpZmllcyB0aGUgdklPTU1V cyB3aGljaCBhcmUgdG8gYmUgcHJvdmlkZWQgdG8gdGhlIGd1ZXN0LgorCitCPFZJT01NVV9TVFJJ Tkc+IGhhcyB0aGUgZm9ybSBDPEtFWT1WQUxVRSxLRVk9VkFMVUUsLi4uPiB3aGVyZToKKworPW92 ZXIgNAorCis9aXRlbSBCPEtFWT1WQUxVRT4KKworUG9zc2libGUgQjxLRVk+cyBhcmU6CisKKz1v dmVyIDQKKworPWl0ZW0gQjx0eXBlPSJTVFJJTkciPgorCitDdXJyZW50bHkgdGhlcmUgaXMgb25s eSBvbmUgdmFsaWQgdHlwZToKKworKHg4NiBvbmx5KSAiaW50ZWxfdnRkIiBtZWFucyBwcm92aWRp bmcgYSBlbXVsYXRlZCBJbnRlbCBWVC1kIHRvIHRoZSBndWVzdC4KKworPWl0ZW0gQjxpbnRyZW1h cD1CT09MRUFOPgorCitTcGVjaWZpZXMgd2hldGhlciB0aGUgdklPTU1VIHNob3VsZCBzdXBwb3J0 IGludGVycnVwdCByZW1hcHBpbmcKK2FuZCBkZWZhdWx0ICd0cnVlJy4KKworPWJhY2sKKwogPWhl YWQzIEd1ZXN0IFZpcnR1YWwgVGltZSBDb250cm9scwogCiA9b3ZlciA0CmRpZmYgLS1naXQgYS90 b29scy9saWJ4bC9saWJ4bF9hcmNoLmggYi90b29scy9saWJ4bC9saWJ4bF9hcmNoLmgKaW5kZXgg Nzg0ZWM3Zi4uOWE3NGQ5NiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfYXJjaC5oCisr KyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2FyY2guaApAQCAtODEsNiArODEsNyBAQCBpbnQgbGlieGxf X2FyY2hfZXh0cmFfbWVtb3J5KGxpYnhsX19nYyAqZ2MsCiAjaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX3g4Nl82NF9fKQogCiAjZGVmaW5lIExBUElDX0JBU0VfQUREUkVTUyAgMHhm ZWUwMDAwMAorI2RlZmluZSBWVERfQkFTRV9BRERSRVNTICAgIDB4ZmVkOTAwMDAKIAogaW50IGxp YnhsX19kb21fbG9hZF9hY3BpKGxpYnhsX19nYyAqZ2MsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgbGlieGxfZG9tYWluX2J1aWxkX2luZm8gKmJfaW5mbywKZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jIGIvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKaW5k ZXggZjE1ZmIyMS4uYjQ4Njc1MSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRl LmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKQEAgLTU5LDYgKzU5LDUwIEBAIHZv aWQgbGlieGxfX3JkbV9zZXRkZWZhdWx0KGxpYnhsX19nYyAqZ2MsIGxpYnhsX2RvbWFpbl9idWls ZF9pbmZvICpiX2luZm8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfUkRNX01F TV9CT1VOREFSWV9NRU1LQl9ERUZBVUxUOwogfQogCitzdGF0aWMgaW50IGxpYnhsX192aW9tbXVf c2V0X2RlZmF1bHQobGlieGxfX2djICpnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyAqYl9pbmZvKQoreworICAgIGludCBpOwor CisgICAgZm9yIChpID0gMDsgaSA8IGJfaW5mby0+bnVtX3Zpb21tdXM7IGkrKykgeworICAgICAg ICBsaWJ4bF92aW9tbXVfaW5mbyAqdmlvbW11ID0gJmJfaW5mby0+dmlvbW11W2ldOworCisgICAg ICAgIGlmIChsaWJ4bF9kZWZib29sX2lzX2RlZmF1bHQodmlvbW11LT5pbnRyZW1hcCkpCisgICAg ICAgICAgICBsaWJ4bF9kZWZib29sX3NldCgmdmlvbW11LT5pbnRyZW1hcCwgdHJ1ZSk7CisKKyAg ICAgICAgaWYgKCFsaWJ4bF9kZWZib29sX3ZhbCh2aW9tbXUtPmludHJlbWFwKSkgeworICAgICAg ICAgICAgTE9HKEVSUk9SLCAiQ2Fubm90IGNyZWF0ZSBvbmUgdmlydHVhbCBWVEQgd2l0aG91dCBp bnRyZW1hcCIpOworICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0lOVkFMOworICAgICAgICB9CisK KyAgICAgICAgc3dpdGNoICh2aW9tbXUtPnR5cGUpIHsKKyAgICAgICAgY2FzZSBMSUJYTF9WSU9N TVVfVFlQRV9JTlRFTF9WVEQ6CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogSWYgdGhl cmUgYXJlIG11bHRpcGxlIHZJT01NVXMsIHdlIG5lZWQgYXJyYW5nZSBhbGwgdklPTU1VcyB0bwor ICAgICAgICAgICAgICogYXZvaWQgb3ZlcmxhcC4gUHV0IGEgY2hlY2sgaGVyZSBpbiBjYXNlIHdl IGdldCBoZXJlIGZvciBtdWx0aXBsZQorICAgICAgICAgICAgICogdklPTU1VcyBjYXNlLgorICAg ICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoYl9pbmZvLT5udW1fdmlvbW11cyA+IDEpIHsK KyAgICAgICAgICAgICAgICBMT0coRVJST1IsICJNdWx0aXBsZSB2SU9NTVVzIHN1cHBvcnQgaXMg dW5kZXIgaW1wbGVtZW50YXRpb24iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JfSU5W QUw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFNldCBkZWZhdWx0IHZhbHVlcyB0 byB1bmV4cG9zZWQgZmllbGRzICovCisgICAgICAgICAgICB2aW9tbXUtPmJhc2VfYWRkciA9IFZU RF9CQVNFX0FERFJFU1M7CisKKyAgICAgICAgICAgIC8qIFNldCBkZXNpcmVkIGNhcGJpbGl0aWVz ICovCisgICAgICAgICAgICB2aW9tbXUtPmNhcCA9IFZJT01NVV9DQVBfSVJRX1JFTUFQUElORzsK KworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl dHVybiBFUlJPUl9JTlZBTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQor CiBpbnQgbGlieGxfX2RvbWFpbl9idWlsZF9pbmZvX3NldGRlZmF1bHQobGlieGxfX2djICpnYywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kb21haW5fYnVp bGRfaW5mbyAqYl9pbmZvKQogewpAQCAtMjE4LDYgKzI2Miw5IEBAIGludCBsaWJ4bF9fZG9tYWlu X2J1aWxkX2luZm9fc2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLAogICAgIGxpYnhsX19hcmNoX2Rv bWFpbl9idWlsZF9pbmZvX2FjcGlfc2V0ZGVmYXVsdChiX2luZm8pOwogICAgIGxpYnhsX2RlZmJv b2xfc2V0ZGVmYXVsdCgmYl9pbmZvLT5kbV9yZXN0cmljdCwgZmFsc2UpOwogCisgICAgaWYgKGxp YnhsX192aW9tbXVfc2V0X2RlZmF1bHQoZ2MsIGJfaW5mbykpCisgICAgICAgIHJldHVybiBFUlJP Ul9GQUlMOworCiAgICAgc3dpdGNoIChiX2luZm8tPnR5cGUpIHsKICAgICBjYXNlIExJQlhMX0RP TUFJTl9UWVBFX0hWTToKICAgICAgICAgaWYgKGJfaW5mby0+c2hhZG93X21lbWtiID09IExJQlhM X01FTUtCX0RFRkFVTFQpCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwg Yi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKaW5kZXggYTIzOTMyNC4uYjY4NjllYiAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCisrKyBiL3Rvb2xzL2xpYnhsL2xp YnhsX3R5cGVzLmlkbApAQCAtNDU3LDYgKzQ1NywxNyBAQCBsaWJ4bF9hbHRwMm1fbW9kZSA9IEVu dW1lcmF0aW9uKCJhbHRwMm1fbW9kZSIsIFsKICAgICAoMywgImxpbWl0ZWQiKSwKICAgICBdLCBp bml0X3ZhbCA9ICJMSUJYTF9BTFRQMk1fTU9ERV9ESVNBQkxFRCIpCiAKK2xpYnhsX3Zpb21tdV90 eXBlID0gRW51bWVyYXRpb24oInZpb21tdV90eXBlIiwgWworICAgICgxLCAiaW50ZWxfdnRkIiks CisgICAgXSkKKworbGlieGxfdmlvbW11X2luZm8gPSBTdHJ1Y3QoInZpb21tdV9pbmZvIiwgWwor ICAgICgidHlwZSIsICAgICAgICAgICAgbGlieGxfdmlvbW11X3R5cGUpLAorICAgICgiaW50cmVt YXAiLCAgICAgICAgbGlieGxfZGVmYm9vbCksCisgICAgKCJjYXAiLCAgICAgICAgICAgICB1aW50 NjQpLAorICAgICgiYmFzZV9hZGRyIiwgICAgICAgdWludDY0KSwKKyAgICBdKQorCiBsaWJ4bF9k b21haW5fYnVpbGRfaW5mbyA9IFN0cnVjdCgiZG9tYWluX2J1aWxkX2luZm8iLFsKICAgICAoIm1h eF92Y3B1cyIsICAgICAgIGludGVnZXIpLAogICAgICgiYXZhaWxfdmNwdXMiLCAgICAgbGlieGxf Yml0bWFwKSwKQEAgLTUyMiw2ICs1MzMsNyBAQCBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyA9IFN0 cnVjdCgiZG9tYWluX2J1aWxkX2luZm8iLFsKICAgICAoIm5lc3RlZF9odm0iLCAgICAgICBsaWJ4 bF9kZWZib29sKSwKICAgICAoImFwaWMiLCAgICAgICAgICAgICBsaWJ4bF9kZWZib29sKSwKICAg ICAoImRtX3Jlc3RyaWN0IiwgICAgICBsaWJ4bF9kZWZib29sKSwKKyAgICAoInZpb21tdSIsICAg ICAgICAgICBBcnJheShsaWJ4bF92aW9tbXVfaW5mbywgIm51bV92aW9tbXVzIikpLAogICAgICgi dSIsIEtleWVkVW5pb24oTm9uZSwgbGlieGxfZG9tYWluX3R5cGUsICJ0eXBlIiwKICAgICAgICAg ICAgICAgICBbKCJodm0iLCBTdHJ1Y3QoTm9uZSwgWygiZmlybXdhcmUiLCAgICAgICAgIHN0cmlu ZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImJpb3MiLCAgICAg ICAgICAgICBsaWJ4bF9iaW9zX3R5cGUpLApkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfcGFyc2Uu YyBiL3Rvb2xzL3hsL3hsX3BhcnNlLmMKaW5kZXggOWE2OTJkNS4uYWEyZWVhYyAxMDA2NDQKLS0t IGEvdG9vbHMveGwveGxfcGFyc2UuYworKysgYi90b29scy94bC94bF9wYXJzZS5jCkBAIC04NTEs NiArODUxLDM4IEBAIG91dDoKICAgICByZXR1cm4gcmM7CiB9CiAKKy8qIFBhcnNlcyB2aW9tbXUg ZGF0YSBhbmQgYWRkcyBpbmZvIGludG8gdmlvbW11CisgKiBSZXR1cm5zIDEgaWYgdGhlIGlucHV0 IGRvZXNuJ3QgZm9ybSBhIHZhbGlkIHZpb21tdQorICogb3IgcGFyc2VkIHZhbHVlcyBhcmUgbm90 IGNvcnJlY3QuIFN1Y2Nlc3NmdWwgcGFyc2UgcmV0dXJucyAwICovCitzdGF0aWMgaW50IHBhcnNl X3Zpb21tdV9jb25maWcobGlieGxfdmlvbW11X2luZm8gKnZpb21tdSwgY29uc3QgY2hhciAqaW5m bykKK3sKKyAgICBjaGFyICpwdHIsICpvcGFyZywgKnNhdmVwdHIgPSBOVUxMLCAqYnVmID0geHN0 cmR1cChpbmZvKTsKKworICAgIHB0ciA9IHN0cnRva19yKGJ1ZiwgIiwiLCAmc2F2ZXB0cik7Cisg ICAgaWYgKE1BVENIX09QVElPTigidHlwZSIsIHB0ciwgb3BhcmcpKSB7CisgICAgICAgIGlmICgh c3RyY21wKG9wYXJnLCAiaW50ZWxfdnRkIikpIHsKKyAgICAgICAgICAgIHZpb21tdS0+dHlwZSA9 IExJQlhMX1ZJT01NVV9UWVBFX0lOVEVMX1ZURDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCB2aW9tbXUgdHlwZTogJXNcbiIsIG9wYXJnKTsK KyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAg ZnByaW50ZihzdGRlcnIsICJ2aW9tbXUgdHlwZSBzaG91bGQgYmUgc2V0IGZpcnN0OiAlc1xuIiwg b3BhcmcpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBmb3IgKHB0ciA9IHN0cnRv a19yKE5VTEwsICIsIiwgJnNhdmVwdHIpOyBwdHI7CisgICAgICAgICBwdHIgPSBzdHJ0b2tfcihO VUxMLCAiLCIsICZzYXZlcHRyKSkgeworICAgICAgICBpZiAoTUFUQ0hfT1BUSU9OKCJpbnRyZW1h cCIsIHB0ciwgb3BhcmcpKSB7CisgICAgICAgICAgICBsaWJ4bF9kZWZib29sX3NldCgmdmlvbW11 LT5pbnRyZW1hcCwgc3RydG91bChvcGFyZywgTlVMTCwgMCkpOworICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmtub3duIHN0cmluZyBgJXMnIGluIHZpb21t dSBzcGVjXG4iLCBwdHIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9 CisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgcGFyc2VfY29uZmlnX2RhdGEoY29uc3QgY2hhciAq Y29uZmlnX3NvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29uZmln X2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb25maWdfbGVuLApAQCAtODYwLDcg Kzg5Miw3IEBAIHZvaWQgcGFyc2VfY29uZmlnX2RhdGEoY29uc3QgY2hhciAqY29uZmlnX3NvdXJj ZSwKICAgICBsb25nIGwsIHZjcHVzID0gMDsKICAgICBYTFVfQ29uZmlnICpjb25maWc7CiAgICAg WExVX0NvbmZpZ0xpc3QgKmNwdXMsICp2YmRzLCAqbmljcywgKnBjaXMsICpjdmZicywgKmNwdWlk cywgKnZ0cG1zLAotICAgICAgICAgICAgICAgICAgICp1c2JjdHJscywgKnVzYmRldnMsICpwOWRl dnMsICp2ZGlzcGxzOworICAgICAgICAgICAgICAgICAgICp1c2JjdHJscywgKnVzYmRldnMsICpw OWRldnMsICp2ZGlzcGxzLCAqaW9tbXVzOwogICAgIFhMVV9Db25maWdMaXN0ICpjaGFubmVscywg KmlvcG9ydHMsICppcnFzLCAqaW9tZW0sICp2aXJpZGlhbiwgKmR0ZGV2cywKICAgICAgICAgICAg ICAgICAgICAqbWNhX2NhcHM7CiAgICAgaW50IG51bV9pb3BvcnRzLCBudW1faXJxcywgbnVtX2lv bWVtLCBudW1fY3B1cywgbnVtX3ZpcmlkaWFuLCBudW1fbWNhX2NhcHM7CkBAIC0xMTk5LDYgKzEy MzEsMjIgQEAgdm9pZCBwYXJzZV9jb25maWdfZGF0YShjb25zdCBjaGFyICpjb25maWdfc291cmNl LAogICAgIHhsdV9jZmdfZ2V0X2RlZmJvb2woY29uZmlnLCAibmVzdGVkaHZtIiwgJmJfaW5mby0+ bmVzdGVkX2h2bSwgMCk7CiAgICAgeGx1X2NmZ19nZXRfZGVmYm9vbChjb25maWcsICJhcGljIiwg JmJfaW5mby0+YXBpYywgMCk7CiAKKyAgICBpZiAoIXhsdV9jZmdfZ2V0X2xpc3QgKGNvbmZpZywg InZpb21tdSIsICZpb21tdXMsIDAsIDApKSB7CisgICAgICAgIHdoaWxlICgoYnVmID0geGx1X2Nm Z19nZXRfbGlzdGl0ZW0gKGlvbW11cywgYl9pbmZvLT5udW1fdmlvbW11cykpCisgICAgICAgICAg ICAgICAgIT0gTlVMTCkgeworICAgICAgICAgICAgbGlieGxfdmlvbW11X2luZm8gKnZpb21tdTsK KworICAgICAgICAgICAgdmlvbW11ID0gQVJSQVlfRVhURU5EX0lOSVRfTk9ERVZJRChiX2luZm8t PnZpb21tdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Yl9pbmZvLT5udW1fdmlvbW11cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfdmlvbW11X2luZm9faW5pdCk7CisKKyAgICAgICAgICAgIGlmIChw YXJzZV92aW9tbXVfY29uZmlnKHZpb21tdSwgYnVmKSkgeworICAgICAgICAgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAiRVJST1I6IGludmFsaWQgdmlvbW11IHNldHRpbmdcbiIpOworICAgICAgICAg ICAgICAgIGV4aXQgKDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAg c3dpdGNoKGJfaW5mby0+dHlwZSkgewogICAgIGNhc2UgTElCWExfRE9NQUlOX1RZUEVfSFZNOgog ICAgICAgICBrZXJuZWxfYmFzZW5hbWUgPSBsaWJ4bF9iYXNlbmFtZShiX2luZm8tPmtlcm5lbCk7 Ci0tIAoxLjguMy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==