From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Grytsov Subject: [PATCH v1 4/5] xl: add vsnd CLI commands Date: Wed, 1 Nov 2017 17:04:46 +0200 Message-ID: <1509548687-6071-5-git-send-email-al1img@gmail.com> References: <1509548687-6071-1-git-send-email-al1img@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e9uZh-00055V-0y for xen-devel@lists.xenproject.org; Wed, 01 Nov 2017 15:05:01 +0000 Received: by mail-lf0-f67.google.com with SMTP id 75so2893468lfx.1 for ; Wed, 01 Nov 2017 08:04:59 -0700 (PDT) In-Reply-To: <1509548687-6071-1-git-send-email-al1img@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: ian.jackson@eu.citrix.com, wei.liu2@citrix.com, Oleksandr Grytsov List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29tPgoKQWRk IENMSSBjb21tYW5kcyB0byBhdHRhY2gsIGRldGFjaCBhbmQgbGlzdCB2aXJ0dWFsIHNvdW5kIGRl dmljZXMKClNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBHcnl0c292IDxvbGVrc2FuZHJfZ3J5dHNv dkBlcGFtLmNvbT4KQWNrZWQtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQog dG9vbHMveGwvTWFrZWZpbGUgICAgICB8ICAgMiArLQogdG9vbHMveGwveGwuaCAgICAgICAgICB8 ICAgMyArCiB0b29scy94bC94bF9jbWR0YWJsZS5jIHwgIDE1ICsrKysKIHRvb2xzL3hsL3hsX3Zz bmQuYyAgICAgfCAyMDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyMjIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3hsL3hsX3ZzbmQuYwoKZGlmZiAtLWdpdCBhL3Rv b2xzL3hsL01ha2VmaWxlIGIvdG9vbHMveGwvTWFrZWZpbGUKaW5kZXggYTUxMTdhYi4uNjZiZGJk ZSAxMDA2NDQKLS0tIGEvdG9vbHMveGwvTWFrZWZpbGUKKysrIGIvdG9vbHMveGwvTWFrZWZpbGUK QEAgLTIyLDcgKzIyLDcgQEAgWExfT0JKUyArPSB4bF92dHBtLm8geGxfYmxvY2subyB4bF9uaWMu byB4bF91c2IubwogWExfT0JKUyArPSB4bF9zY2hlZC5vIHhsX3BjaS5vIHhsX3ZjcHUubyB4bF9j ZHJvbS5vIHhsX21lbS5vCiBYTF9PQkpTICs9IHhsX2luZm8ubyB4bF9jb25zb2xlLm8geGxfbWlz Yy5vCiBYTF9PQkpTICs9IHhsX3ZtY29udHJvbC5vIHhsX3NhdmVyZXN0b3JlLm8geGxfbWlncmF0 ZS5vCi1YTF9PQkpTICs9IHhsX3ZkaXNwbC5vCitYTF9PQkpTICs9IHhsX3ZkaXNwbC5vIHhsX3Zz bmQubwogCiAkKFhMX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVudG9vbGxvZykKICQo WExfT0JKUyk6IENGTEFHUyArPSAkKENGTEFHU19YTCkKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hs LmggYi90b29scy94bC94bC5oCmluZGV4IDMxZDY2MGIuLjcwM2NhYTYgMTAwNjQ0Ci0tLSBhL3Rv b2xzL3hsL3hsLmgKKysrIGIvdG9vbHMveGwveGwuaApAQCAtMTcwLDYgKzE3MCw5IEBAIGludCBt YWluX3Z0cG1kZXRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3ZkaXNwbGF0 dGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fdmRpc3BsbGlzdChpbnQgYXJn YywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fdmRpc3BsZGV0YWNoKGludCBhcmdjLCBjaGFyICoq YXJndik7CitpbnQgbWFpbl92c25kYXR0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CitpbnQg bWFpbl92c25kbGlzdChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworaW50IG1haW5fdnNuZGRldGFj aChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fdXNiY3RybF9hdHRhY2goaW50IGFy Z2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3VzYmN0cmxfZGV0YWNoKGludCBhcmdjLCBjaGFy ICoqYXJndik7CiBpbnQgbWFpbl91c2JkZXZfYXR0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7 CmRpZmYgLS1naXQgYS90b29scy94bC94bF9jbWR0YWJsZS5jIGIvdG9vbHMveGwveGxfY21kdGFi bGUuYwppbmRleCBjMzA0YTg1Li44ZTE2MmNlIDEwMDY0NAotLS0gYS90b29scy94bC94bF9jbWR0 YWJsZS5jCisrKyBiL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKQEAgLTM5Nyw2ICszOTcsMjEgQEAg c3RydWN0IGNtZF9zcGVjIGNtZF90YWJsZVtdID0gewogICAgICAgIkRlc3Ryb3kgYSBkb21haW4n cyB2aXJ0dWFsIGRpc3BsYXkgZGV2aWNlIiwKICAgICAgICI8RG9tYWluPiA8RGV2SWQ+IiwKICAg ICB9LAorICAgIHsgInZzbmQtYXR0YWNoIiwKKyAgICAgICZtYWluX3ZzbmRhdHRhY2gsIDEsIDEs CisgICAgICAiQ3JlYXRlIGEgbmV3IHZpcnR1YWwgc291bmQgZGV2aWNlIiwKKyAgICAgICI8RG9t YWluPiA8dnNuZC1zcGVjLWNvbXBvbmVudChzKT4uLi4iLAorICAgIH0sCisgICAgeyAidnNuZC1s aXN0IiwKKyAgICAgICZtYWluX3ZzbmRsaXN0LCAwLCAwLAorICAgICAgIkxpc3QgdmlydHVhbCBk aXNwbGF5IGRldmljZXMgZm9yIGEgZG9tYWluIiwKKyAgICAgICI8RG9tYWluKHMpPiIsCisgICAg fSwKKyAgICB7ICJ2c25kLWRldGFjaCIsCisgICAgICAmbWFpbl92c25kZGV0YWNoLCAwLCAxLAor ICAgICAgIkRlc3Ryb3kgYSBkb21haW4ncyB2aXJ0dWFsIHNvdW5kIGRldmljZSIsCisgICAgICAi PERvbWFpbj4gPERldklkPiIsCisgICAgfSwKICAgICB7ICJ1cHRpbWUiLAogICAgICAgJm1haW5f dXB0aW1lLCAwLCAwLAogICAgICAgIlByaW50IHVwdGltZSBmb3IgYWxsL3NvbWUgZG9tYWlucyIs CmRpZmYgLS1naXQgYS90b29scy94bC94bF92c25kLmMgYi90b29scy94bC94bF92c25kLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFlZTBiYQotLS0gL2Rldi9udWxsCisr KyBiL3Rvb2xzL3hsL3hsX3ZzbmQuYwpAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIENvcHlyaWdo dCAoQykgMjAxNiBFUEFNIFN5c3RlbXMgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQKKyAqIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24g Mi4xIG9ubHkuIHdpdGggdGhlIHNwZWNpYWwKKyAqIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2Ny aWJlZCBpbiBmaWxlIExJQ0VOU0UuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor ICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg Ki8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSA8bGlieGwuaD4KKyNpbmNsdWRl IDxsaWJ4bF91dGlscy5oPgorI2luY2x1ZGUgPGxpYnhsdXRpbC5oPgorCisjaW5jbHVkZSAieGwu aCIKKyNpbmNsdWRlICJ4bF91dGlscy5oIgorI2luY2x1ZGUgInhsX3BhcnNlLmgiCisKK2ludCBt YWluX3ZzbmRhdHRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGludCBvcHQ7Cisg ICAgaW50IHJjOworICAgIHVpbnQzMl90IGRvbWlkOworICAgIGxpYnhsX2RldmljZV92c25kIHZz bmQ7CisKKyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiIiwgTlVMTCwgInZzbmQtYXR0YWNo IiwgMikgeworICAgICAgICAvKiBObyBvcHRpb25zICovCisgICAgfQorCisgICAgbGlieGxfZGV2 aWNlX3ZzbmRfaW5pdCgmdnNuZCk7CisgICAgZG9taWQgPSBmaW5kX2RvbWFpbihhcmd2W29wdGlu ZCsrXSk7CisKKyAgICBmb3IgKGFyZ3YgKz0gb3B0aW5kLCBhcmdjIC09IG9wdGluZDsgYXJnYyA+ IDA7ICsrYXJndiwgLS1hcmdjKSB7CisgICAgICAgIHJjID0gcGFyc2VfdnNuZF9pdGVtKCZ2c25k LCAqYXJndik7CisgICAgICAgIGlmIChyYykgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKGRy eXJ1bl9vbmx5KSB7CisgICAgICAgIGNoYXIgKmpzb24gPSBsaWJ4bF9kZXZpY2VfdnNuZF90b19q c29uKGN0eCwgJnZzbmQpOworICAgICAgICBwcmludGYoInZzbmQ6ICVzXG4iLCBqc29uKTsKKyAg ICAgICAgZnJlZShqc29uKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKGxp YnhsX2RldmljZV92c25kX2FkZChjdHgsIGRvbWlkLCAmdnNuZCwgMCkpIHsKKyAgICAgICAgZnBy aW50ZihzdGRlcnIsICJsaWJ4bF9kZXZpY2VfdnNuZF9hZGQgZmFpbGVkLlxuIik7CisgICAgICAg IHJjID0gRVJST1JfRkFJTDsgZ290byBvdXQ7CisgICAgfQorCisgICAgcmMgPSAwOworCitvdXQ6 CisgICAgbGlieGxfZGV2aWNlX3ZzbmRfZGlzcG9zZSgmdnNuZCk7CisgICAgcmV0dXJuIHJjOwor fQorCitzdGF0aWMgdm9pZCBwcmludF9wYXJhbXMobGlieGxfdnNuZF9wYXJhbXMgKnBhcmFtcykK K3sKKyAgICBpbnQgaTsKKworICAgIGlmIChwYXJhbXMtPmNoYW5uZWxzX21pbikgeworICAgICAg ICBwcmludGYoIiwgY2hhbm5lbHMtbWluOiAldSIsIHBhcmFtcy0+Y2hhbm5lbHNfbWluKTsKKyAg ICB9CisKKyAgICBpZiAocGFyYW1zLT5jaGFubmVsc19tYXgpIHsKKyAgICAgICAgcHJpbnRmKCIs IGNoYW5uZWxzLW1heDogJXUiLCBwYXJhbXMtPmNoYW5uZWxzX21heCk7CisgICAgfQorCisgICAg aWYgKHBhcmFtcy0+YnVmZmVyX3NpemUpIHsKKyAgICAgICAgcHJpbnRmKCIsIGJ1ZmZlci1zaXpl OiAldSIsIHBhcmFtcy0+YnVmZmVyX3NpemUpOworICAgIH0KKworICAgIGlmIChwYXJhbXMtPm51 bV9zYW1wbGVfcmF0ZXMpIHsKKyAgICAgICAgcHJpbnRmKCIsIHNhbXBsZS1yYXRlczogIik7Cisg ICAgICAgIGZvciAoaSA9IDA7IGkgPCBwYXJhbXMtPm51bV9zYW1wbGVfcmF0ZXMgLSAxOyBpKysp IHsKKyAgICAgICAgICAgIHByaW50ZigiJXU7IiwgcGFyYW1zLT5zYW1wbGVfcmF0ZXNbaV0pOwor ICAgICAgICB9CisgICAgICAgIHByaW50ZigiJXUiLCBwYXJhbXMtPnNhbXBsZV9yYXRlc1tpXSk7 CisgICAgfQorCisgICAgaWYgKHBhcmFtcy0+bnVtX3NhbXBsZV9mb3JtYXRzKSB7CisgICAgICAg IHByaW50ZigiLCBzYW1wbGUtZm9ybWF0czogIik7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBw YXJhbXMtPm51bV9zYW1wbGVfZm9ybWF0cyAtIDE7IGkrKykgeworICAgICAgICAgICAgcHJpbnRm KCIlczsiLCBsaWJ4bF92c25kX3BjbV9mb3JtYXRfdG9fc3RyaW5nKHBhcmFtcy0+c2FtcGxlX2Zv cm1hdHNbaV0pKTsKKyAgICAgICAgfQorICAgICAgICBwcmludGYoIiVzIiwgbGlieGxfdnNuZF9w Y21fZm9ybWF0X3RvX3N0cmluZyhwYXJhbXMtPnNhbXBsZV9mb3JtYXRzW2ldKSk7CisgICAgfQor CisgICAgcHJpbnRmKCJcbiIpOworfQorCitpbnQgbWFpbl92c25kbGlzdChpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCit7CisgICBpbnQgb3B0OworICAgaW50IGksIGosIGssIG47CisgICBsaWJ4bF9k ZXZpY2VfdnNuZCAqdnNuZHM7CisgICBsaWJ4bF92c25kaW5mbyB2c25kaW5mbzsKKworICAgU1dJ VENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJ2c25kLWxpc3QiLCAxKSB7CisgICAgICAg LyogTm8gb3B0aW9ucyAqLworICAgfQorCisgICBmb3IgKGFyZ3YgKz0gb3B0aW5kLCBhcmdjIC09 IG9wdGluZDsgYXJnYyA+IDA7IC0tYXJnYywgKythcmd2KSB7CisgICAgICAgdWludDMyX3QgZG9t aWQ7CisKKyAgICAgICBpZiAobGlieGxfZG9tYWluX3F1YWxpZmllcl90b19kb21pZChjdHgsICph cmd2LCAmZG9taWQpIDwgMCkgeworICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIGlzIGFu IGludmFsaWQgZG9tYWluIGlkZW50aWZpZXJcbiIsICphcmd2KTsKKyAgICAgICAgICAgY29udGlu dWU7CisgICAgICAgfQorCisgICAgICAgdnNuZHMgPSBsaWJ4bF9kZXZpY2VfdnNuZF9saXN0KGN0 eCwgZG9taWQsICZuKTsKKworICAgICAgIGlmICghdnNuZHMpIGNvbnRpbnVlOworCisgICAgICAg Zm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICBsaWJ4bF92c25kaW5mb19pbml0 KCZ2c25kaW5mbyk7CisgICAgICAgICAgIGlmIChsaWJ4bF9kZXZpY2VfdnNuZF9nZXRpbmZvKGN0 eCwgZG9taWQsICZ2c25kc1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJnZzbmRpbmZvKSA9PSAwKSB7CisgICAgICAgICAgICAgICBwcmludGYoIlxuZGV2aWQ6 ICVkLCBiZS1kb21pZDogJWQsIGhhbmRsZTogJWQsIHN0YXRlOiAlZCwgIgorICAgICAgICAgICAg ICAgICAgICAgICJiZS1wYXRoOiAlcywgZmUtcGF0aDogJXNcbiIsCisgICAgICAgICAgICAgICAg ICAgICAgdnNuZGluZm8uZGV2aWQsIHZzbmRpbmZvLmJhY2tlbmRfaWQsCisgICAgICAgICAgICAg ICAgICAgICAgdnNuZGluZm8uZnJvbnRlbmRfaWQsIHZzbmRpbmZvLnN0YXRlLAorICAgICAgICAg ICAgICAgICAgICAgIHZzbmRpbmZvLmJhY2tlbmQsIHZzbmRpbmZvLmZyb250ZW5kKTsKKworICAg ICAgICAgICAgICAgcHJpbnRmKCJzaG9ydC1uYW1lOiBcIiVzXCIsIGxvbmctbmFtZTogXCIlc1wi IiwKKyAgICAgICAgICAgICAgICAgICAgICB2c25kc1tpXS5zaG9ydF9uYW1lLCB2c25kc1tpXS5s b25nX25hbWUpOworICAgICAgICAgICAgICAgcHJpbnRfcGFyYW1zKCZ2c25kc1tpXS5wYXJhbXMp OworCisgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgdnNuZGluZm8ubnVtX3ZzbmRfcGNt czsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgbGlieGxfdnNuZF9wY20gKnBjbSA9ICZ2c25k c1tpXS5wY21zW2pdOworCisgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcdHBjbTogJWQsIG5h bWU6IFwiJXNcIiIsIGosIHBjbS0+bmFtZSk7CisgICAgICAgICAgICAgICAgICAgcHJpbnRfcGFy YW1zKCZwY20tPnBhcmFtcyk7CisKKyAgICAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCB2 c25kc1tpXS5wY21zW2pdLm51bV92c25kX3N0cmVhbXM7IGsrKykgeworICAgICAgICAgICAgICAg ICAgICAgICBsaWJ4bF92c25kX3N0cmVhbSAqc3RyZWFtID0gJnZzbmRzW2ldLnBjbXNbal0uc3Ry ZWFtc1trXTsKKyAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfc3RyZWFtaW5mbyAqaW5mbyA9 ICZ2c25kaW5mby5wY21zW2pdLnN0cmVhbXNba107CisKKyAgICAgICAgICAgICAgICAgICAgICAg cHJpbnRmKCJcdFx0c3RyZWFtOiAlZCwgaWQ6IFwiJXNcIiwgdHlwZTogJXMiLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaywgc3RyZWFtLT5pZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX3ZzbmRfc3RyZWFtX3R5cGVfdG9fc3RyaW5nKHN0cmVhbS0+dHlwZSkp OworICAgICAgICAgICAgICAgICAgICAgICBwcmludF9wYXJhbXMoJnN0cmVhbS0+cGFyYW1zKTsK KyAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcdFx0XHRldmVudC1jaGFubmVsOiAlZCwg cmluZy1yZWY6ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+cmVx X2V2dGNoLCBpbmZvLT5yZXFfcnJlZik7CisgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgfQorICAgICAgICAgICB9CisgICAgICAgICAgIGxpYnhsX3ZzbmRpbmZvX2Rpc3Bvc2Uo JnZzbmRpbmZvKTsKKyAgICAgICB9CisgICAgICAgbGlieGxfZGV2aWNlX3ZzbmRfbGlzdF9mcmVl KHZzbmRzLCBuKTsKKyAgIH0KKyAgIHJldHVybiAwOworfQorCitpbnQgbWFpbl92c25kZGV0YWNo KGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICB1aW50MzJfdCBkb21pZCwgZGV2aWQ7Cisg ICAgaW50IG9wdCwgcmM7CisgICAgbGlieGxfZGV2aWNlX3ZzbmQgdnNuZDsKKworICAgIFNXSVRD SF9GT1JFQUNIX09QVChvcHQsICIiLCBOVUxMLCAidnNuZC1kZXRhY2giLCAyKSB7CisgICAgICAg IC8qIE5vIG9wdGlvbnMgKi8KKyAgICB9CisKKyAgICBkb21pZCA9IGZpbmRfZG9tYWluKGFyZ3Zb b3B0aW5kKytdKTsKKyAgICBkZXZpZCA9IGF0b2koYXJndltvcHRpbmQrK10pOworCisgICAgbGli eGxfZGV2aWNlX3ZzbmRfaW5pdCgmdnNuZCk7CisKKyAgICBpZiAobGlieGxfZGV2aWRfdG9fZGV2 aWNlX3ZzbmQoY3R4LCBkb21pZCwgZGV2aWQsICZ2c25kKSkgeworICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIkVycm9yOiBEZXZpY2UgJWQgbm90IGNvbm5lY3RlZC5cbiIsIGRldmlkKTsKKyAgICAg ICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICByYyA9 IGxpYnhsX2RldmljZV92c25kX3JlbW92ZShjdHgsIGRvbWlkLCAmdnNuZCwgMCk7CisgICAgaWYg KHJjKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxfZGV2aWNlX3ZzbmRfcmVtb3Zl IGZhaWxlZC5cbiIpOworICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CisgICAgICAgIGdvdG8gb3V0 OworICAgIH0KKworICAgIHJjID0gMDsKKworb3V0OgorICAgIGxpYnhsX2RldmljZV92c25kX2Rp c3Bvc2UoJnZzbmQpOworICAgIHJldHVybiByYzsKK30KKworCisvKgorICogTG9jYWwgdmFyaWFi bGVzOgorICogbW9kZTogQworICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIGluZGVudC10YWJzLW1v ZGU6IG5pbAorICogRW5kOgorICovCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=