From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Grytsov Subject: [PATCH v1 2/2] xl: add PV display device commands Date: Wed, 5 Apr 2017 13:03:17 +0300 Message-ID: <1491386597-1103-3-git-send-email-al1img@gmail.com> References: <1491386597-1103-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cvhmt-0001ek-6h for xen-devel@lists.xenproject.org; Wed, 05 Apr 2017 10:03:39 +0000 Received: by mail-lf0-f68.google.com with SMTP id r36so731714lfi.0 for ; Wed, 05 Apr 2017 03:03:37 -0700 (PDT) In-Reply-To: <1491386597-1103-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: jgross@suse.com, ian.jackson@eu.citrix.com, wei.liu2@citrix.com, Oleksandr Grytsov , andr2000@gmail.com List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29tPgoKU2ln bmVkLW9mZi1ieTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29t PgotLS0KIHRvb2xzL3hsL01ha2VmaWxlICAgICAgfCAgIDEgKwogdG9vbHMveGwveGwuaCAgICAg ICAgICB8ICAgMyArCiB0b29scy94bC94bF9jbWR0YWJsZS5jIHwgIDE2ICsrKysrCiB0b29scy94 bC94bF9wYXJzZS5jICAgIHwgIDQzICsrKysrKysrKysrKy0KIHRvb2xzL3hsL3hsX3BhcnNlLmgg ICAgfCAgIDIgKy0KIHRvb2xzL3hsL3hsX3ZkaXNwbC5jICAgfCAxNjIgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAyMjUg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy94 bC94bF92ZGlzcGwuYwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL01ha2VmaWxlIGIvdG9vbHMveGwv TWFrZWZpbGUKaW5kZXggZTE2Zjg3Ny4uNWM3ODRiNSAxMDA2NDQKLS0tIGEvdG9vbHMveGwvTWFr ZWZpbGUKKysrIGIvdG9vbHMveGwvTWFrZWZpbGUKQEAgLTIxLDYgKzIxLDcgQEAgWExfT0JKUyAr PSB4bF92dHBtLm8geGxfYmxvY2subyB4bF9uaWMubyB4bF91c2IubwogWExfT0JKUyArPSB4bF9z Y2hlZC5vIHhsX3BjaS5vIHhsX3ZjcHUubyB4bF9jZHJvbS5vIHhsX21lbS5vCiBYTF9PQkpTICs9 IHhsX3Bzci5vIHhsX2luZm8ubyB4bF9jb25zb2xlLm8geGxfbWlzYy5vCiBYTF9PQkpTICs9IHhs X3ZtY29udHJvbC5vIHhsX3NhdmVyZXN0b3JlLm8geGxfbWlncmF0ZS5vCitYTF9PQkpTICs9IHhs X3ZkaXNwbC5vCiAKICQoWExfT0JKUyk6IENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW50b29sbG9n KQogJChYTF9PQkpTKTogQ0ZMQUdTICs9ICQoQ0ZMQUdTX1hMKQpkaWZmIC0tZ2l0IGEvdG9vbHMv eGwveGwuaCBiL3Rvb2xzL3hsL3hsLmgKaW5kZXggYWE5NWI3Ny4uZDM2MTI0MSAxMDA2NDQKLS0t IGEvdG9vbHMveGwveGwuaAorKysgYi90b29scy94bC94bC5oCkBAIC0xNjYsNiArMTY2LDkgQEAg aW50IG1haW5fYmxvY2tkZXRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3Z0 cG1hdHRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3Z0cG1saXN0KGludCBh cmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl92dHBtZGV0YWNoKGludCBhcmdjLCBjaGFyICoq YXJndik7CitpbnQgbWFpbl92ZGlzcGxhdHRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2lu dCBtYWluX3ZkaXNwbGxpc3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2ludCBtYWluX3ZkaXNw bGRldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fdXNiY3RybF9hdHRhY2go aW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3VzYmN0cmxfZGV0YWNoKGludCBhcmdj LCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl91c2JkZXZfYXR0YWNoKGludCBhcmdjLCBjaGFyICoq YXJndik7CmRpZmYgLS1naXQgYS90b29scy94bC94bF9jbWR0YWJsZS5jIGIvdG9vbHMveGwveGxf Y21kdGFibGUuYwppbmRleCA3ZDk3ODExLi4zNDA5MGUxIDEwMDY0NAotLS0gYS90b29scy94bC94 bF9jbWR0YWJsZS5jCisrKyBiL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKQEAgLTM3Miw2ICszNzIs MjIgQEAgc3RydWN0IGNtZF9zcGVjIGNtZF90YWJsZVtdID0gewogICAgICAgIkRlc3Ryb3kgYSBk b21haW4ncyB2aXJ0dWFsIFRQTSBkZXZpY2UiLAogICAgICAgIjxEb21haW4+IDxEZXZJZHx1dWlk PiIsCiAgICAgfSwKKyAgICB7ICJ2ZGlzcGwtYXR0YWNoIiwKKyAgICAgICZtYWluX3ZkaXNwbGF0 dGFjaCwgMSwgMSwKKyAgICAgICJDcmVhdGUgYSBuZXcgdmlydHVhbCBkaXNwbGF5IGRldmljZSIs CisgICAgICAiPERvbWFpbj4gW2RldklkPTxEZXZpY2U+XSBbYmFja2VuZD08QmFja0RvbWFpbj5d IFtiZUFsbG9jPTxCYWNrQWxsb2M+XSIsCisgICAgICAiICAgIEJhY2tBbGxvYyAtIHNldCB0byAx IHRvIGFsbG93IGJhY2tlbmQgYWxsb2NhdGVkIGRpc3BsYXkgYnVmZmVycyIKKyAgICB9LAorICAg IHsgInZkaXNwbC1saXN0IiwKKyAgICAgICZtYWluX3ZkaXNwbGxpc3QsIDAsIDAsCisgICAgICAi TGlzdCB2aXJ0dWFsIGRpc3BsYXkgZGV2aWNlcyBmb3IgYSBkb21haW4iLAorICAgICAgIjxEb21h aW4ocyk+IiwKKyAgICB9LAorICAgIHsgInZkaXNwbC1kZXRhY2giLAorICAgICAgJm1haW5fdmRp c3BsZGV0YWNoLCAwLCAxLAorICAgICAgIkRlc3Ryb3kgYSBkb21haW4ncyB2aXJ0dWFsIGRpc3Bs YXkgZGV2aWNlIiwKKyAgICAgICI8RG9tYWluPiA8RGV2SWQ+IiwKKyAgICB9LAogICAgIHsgInVw dGltZSIsCiAgICAgICAmbWFpbl91cHRpbWUsIDAsIDAsCiAgICAgICAiUHJpbnQgdXB0aW1lIGZv ciBhbGwvc29tZSBkb21haW5zIiwKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX3BhcnNlLmMgYi90 b29scy94bC94bF9wYXJzZS5jCmluZGV4IGI3MmY5OTAuLmZkNjY4NWEgMTAwNjQ0Ci0tLSBhL3Rv b2xzL3hsL3hsX3BhcnNlLmMKKysrIGIvdG9vbHMveGwveGxfcGFyc2UuYwpAQCAtODAzLDYgKzgw MywyNCBAQCBpbnQgcGFyc2VfdXNiZGV2X2NvbmZpZyhsaWJ4bF9kZXZpY2VfdXNiZGV2ICp1c2Jk ZXYsIGNoYXIgKnRva2VuKQogICAgIHJldHVybiAwOwogfQogCitpbnQgcGFyc2VfdmRpc3BsX2Nv bmZpZyhsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGwsIGNoYXIgKnRva2VuKQoreworICAgIGNo YXIgKm9wYXJnOworCisgICAgaWYgKE1BVENIX09QVElPTigiYmFja2VuZCIsIHRva2VuLCBvcGFy ZykpIHsKKyAgICAgICAgdmRpc3BsLT5iYWNrZW5kX2RvbW5hbWUgPSBzdHJkdXAob3BhcmcpOwor ICAgIH0gZWxzZSBpZiAoTUFUQ0hfT1BUSU9OKCJkZXZJZCIsIHRva2VuLCBvcGFyZykpIHsKKyAg ICAgICAgdmRpc3BsLT5kZXZpZCA9IGF0b2kob3BhcmcpOworICAgIH0gZWxzZSBpZiAoTUFUQ0hf T1BUSU9OKCJiZUFsbG9jIiwgdG9rZW4sIG9wYXJnKSkgeworICAgIAl2ZGlzcGwtPmJlX2FsbG9j ID0gc3RydG91bChvcGFyZywgTlVMTCwgMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZnByaW50 ZihzdGRlcnIsICJVbmtub3duIHN0cmluZyBgJXMnIGluIHZkaXNwbCBzcGVjXG4iLCB0b2tlbik7 CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiB2b2lkIHBh cnNlX2NvbmZpZ19kYXRhKGNvbnN0IGNoYXIgKmNvbmZpZ19zb3VyY2UsCiAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbmZpZ19kYXRhLAogICAgICAgICAgICAgICAgICAgICAg ICBpbnQgY29uZmlnX2xlbiwKQEAgLTgxMiw3ICs4MzAsNyBAQCB2b2lkIHBhcnNlX2NvbmZpZ19k YXRhKGNvbnN0IGNoYXIgKmNvbmZpZ19zb3VyY2UsCiAgICAgbG9uZyBsLCB2Y3B1cyA9IDA7CiAg ICAgWExVX0NvbmZpZyAqY29uZmlnOwogICAgIFhMVV9Db25maWdMaXN0ICpjcHVzLCAqdmJkcywg Km5pY3MsICpwY2lzLCAqY3ZmYnMsICpjcHVpZHMsICp2dHBtcywKLSAgICAgICAgICAgICAgICAg ICAqdXNiY3RybHMsICp1c2JkZXZzOworICAgICAgICAgICAgICAgICAgICp1c2JjdHJscywgKnVz YmRldnMsICp2ZGlzcGxzOwogICAgIFhMVV9Db25maWdMaXN0ICpjaGFubmVscywgKmlvcG9ydHMs ICppcnFzLCAqaW9tZW0sICp2aXJpZGlhbiwgKmR0ZGV2czsKICAgICBpbnQgbnVtX2lvcG9ydHMs IG51bV9pcnFzLCBudW1faW9tZW0sIG51bV9jcHVzLCBudW1fdmlyaWRpYW47CiAgICAgaW50IHBj aV9wb3dlcl9tZ210ID0gMDsKQEAgLTEzOTAsNiArMTQwOCwyOSBAQCB2b2lkIHBhcnNlX2NvbmZp Z19kYXRhKGNvbnN0IGNoYXIgKmNvbmZpZ19zb3VyY2UsCiAgICAgICAgIH0KICAgICB9CiAKKyAg ICBpZiAoIXhsdV9jZmdfZ2V0X2xpc3QoY29uZmlnLCAidmRpc3BsIiwgJnZkaXNwbHMsIDAsIDAp KSB7CisgICAgICAgIGRfY29uZmlnLT5udW1fdmRpc3BscyA9IDA7CisgICAgICAgIGRfY29uZmln LT52ZGlzcGxzID0gTlVMTDsKKyAgICAgICAgd2hpbGUgKChidWYgPSB4bHVfY2ZnX2dldF9saXN0 aXRlbSh2ZGlzcGxzLCBkX2NvbmZpZy0+bnVtX3ZkaXNwbHMpKSAhPSBOVUxMKSB7CisgICAgICAg ICAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGw7CisgICAgICAgICAgICBjaGFyICogYnVm MiA9IHN0cmR1cChidWYpOworICAgICAgICAgICAgY2hhciAqcDsKKyAgICAgICAgICAgIHZkaXNw bCA9IEFSUkFZX0VYVEVORF9JTklUKGRfY29uZmlnLT52ZGlzcGxzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZF9jb25maWctPm51bV92ZGlzcGxzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZkaXNwbF9pbml0KTsK KyAgICAgICAgICAgIHAgPSBzdHJ0b2sgKGJ1ZjIsICIsIik7CisgICAgICAgICAgICB3aGlsZSAo cCAhPSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHdoaWxlICgqcCA9PSAn ICcpIHArKzsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VfdmRpc3BsX2NvbmZpZyh2ZGlzcGws IHApKSB7CisgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIHAgPSBzdHJ0b2sgKE5VTEwsICIsIik7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICBmcmVlKGJ1ZjIpOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKCF4bHVf Y2ZnX2dldF9saXN0IChjb25maWcsICJjaGFubmVsIiwgJmNoYW5uZWxzLCAwLCAwKSkgewogICAg ICAgICBkX2NvbmZpZy0+bnVtX2NoYW5uZWxzID0gMDsKICAgICAgICAgZF9jb25maWctPmNoYW5u ZWxzID0gTlVMTDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX3BhcnNlLmggYi90b29scy94bC94 bF9wYXJzZS5oCmluZGV4IGRiOGJjM2YuLmNjNDU5ZmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hs X3BhcnNlLmgKKysrIGIvdG9vbHMveGwveGxfcGFyc2UuaApAQCAtMzMsNyArMzMsNyBAQCBpbnQg cGFyc2VfdXNiY3RybF9jb25maWcobGlieGxfZGV2aWNlX3VzYmN0cmwgKnVzYmN0cmwsIGNoYXIg KnRva2VuKTsKIGludCBwYXJzZV91c2JkZXZfY29uZmlnKGxpYnhsX2RldmljZV91c2JkZXYgKnVz YmRldiwgY2hhciAqdG9rZW4pOwogaW50IHBhcnNlX2NwdXJhbmdlKGNvbnN0IGNoYXIgKmNwdSwg bGlieGxfYml0bWFwICpjcHVtYXApOwogaW50IHBhcnNlX25pY19jb25maWcobGlieGxfZGV2aWNl X25pYyAqbmljLCBYTFVfQ29uZmlnICoqY29uZmlnLCBjaGFyICp0b2tlbik7Ci0KK2ludCBwYXJz ZV92ZGlzcGxfY29uZmlnKGxpYnhsX2RldmljZV92ZGlzcGwgKnZkaXNwbCwgY2hhciAqdG9rZW4p OwogCiBpbnQgbWF0Y2hfb3B0aW9uX3NpemUoY29uc3QgY2hhciAqcHJlZml4LCBzaXplX3QgbGVu LAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmFyZywgY2hhciAqKmFyZ29wdCk7CmRpZmYg LS1naXQgYS90b29scy94bC94bF92ZGlzcGwuYyBiL3Rvb2xzL3hsL3hsX3ZkaXNwbC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZjkwYzkKLS0tIC9kZXYvbnVsbAorKysg Yi90b29scy94bC94bF92ZGlzcGwuYwpAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdo dCAoQykgMjAxNiBFUEFNIFN5c3RlbXMgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQKKyAqIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24g Mi4xIG9ubHkuIHdpdGggdGhlIHNwZWNpYWwKKyAqIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2Ny aWJlZCBpbiBmaWxlIExJQ0VOU0UuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor ICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg Ki8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSA8bGlieGwuaD4KKyNpbmNsdWRl IDxsaWJ4bF91dGlscy5oPgorI2luY2x1ZGUgPGxpYnhsdXRpbC5oPgorCisjaW5jbHVkZSAieGwu aCIKKyNpbmNsdWRlICJ4bF91dGlscy5oIgorI2luY2x1ZGUgInhsX3BhcnNlLmgiCisKK2ludCBt YWluX3ZkaXNwbGF0dGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgaW50IG9wdDsK KyAgICBpbnQgcmM7CisgICAgY2hhciAqb3Bhcmc7CisgICAgdWludDMyX3QgZG9taWQ7CisgICAg bGlieGxfZGV2aWNlX3ZkaXNwbCB2ZGlzcGw7CisKKyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0 LCAiIiwgTlVMTCwgInZkaXNwbC1hdHRhY2giLCAxKSB7CisgICAgICAgIC8qIE5vIG9wdGlvbnMg Ki8KKyAgICB9CisKKyAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsX2luaXQoJnZkaXNwbCk7CisgICAg ZG9taWQgPSBmaW5kX2RvbWFpbihhcmd2W29wdGluZCsrXSk7CisKKyAgICBmb3IgKGFyZ3YgKz0g b3B0aW5kLCBhcmdjIC09IG9wdGluZDsgYXJnYyA+IDA7ICsrYXJndiwgLS1hcmdjKSB7CisgICAg ICAgIGlmIChNQVRDSF9PUFRJT04oImRldklkIiwgKmFyZ3YsIG9wYXJnKSkgeworICAgICAgICAg ICAgdmRpc3BsLmRldmlkID0gYXRvaShvcGFyZyk7CisgICAgICAgIH0gZWxzZSBpZiAoTUFUQ0hf T1BUSU9OKCJiYWNrZW5kIiwgKmFyZ3YsIG9wYXJnKSkgeworICAgICAgICAgICAgdmRpc3BsLmJh Y2tlbmRfZG9taWQgPSBmaW5kX2RvbWFpbihvcGFyZyk7CisgICAgICAgICAgICByZXBsYWNlX3N0 cmluZygmdmRpc3BsLmJhY2tlbmRfZG9tbmFtZSwgb3BhcmcpOworICAgICAgICB9IGVsc2UgaWYg KE1BVENIX09QVElPTigiYmVBbGxvYyIsICphcmd2LCBvcGFyZykpIHsKKyAgICAgICAgICAgIHZk aXNwbC5iZV9hbGxvYyA9IHN0cnRvdWwob3BhcmcsIE5VTEwsIDApOworICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ1bnJlY29nbml6ZWQgYXJndW1lbnQgYCVz J1xuIiwgKmFyZ3YpOworICAgICAgICAgICAgcmMgPSAxOworICAgICAgICAgICAgZ290byBvdXQ7 CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZHJ5cnVuX29ubHkpIHsKKyAgICAgICAgY2hh ciAqanNvbiA9IGxpYnhsX2RldmljZV92ZGlzcGxfdG9fanNvbihjdHgsICZ2ZGlzcGwpOworICAg ICAgICBwcmludGYoInZkaXNwbDogJXNcbiIsIGpzb24pOworICAgICAgICBmcmVlKGpzb24pOwor ICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBpZiAobGlieGxfZGV2aWNlX3ZkaXNwbF9h ZGQoY3R4LCBkb21pZCwgJnZkaXNwbCwgMCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJs aWJ4bF9kZXZpY2VfdmRpc3BsX2FkZCBmYWlsZWQuXG4iKTsKKyAgICAgICAgcmMgPSBFUlJPUl9G QUlMOworICAgIH0KKworICAgIHJjID0gMDsKKworb3V0OgorICAgIGxpYnhsX2RldmljZV92ZGlz cGxfZGlzcG9zZSgmdmRpc3BsKTsKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCBtYWluX3ZkaXNw bGxpc3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgaW50IG9wdDsKKyAgIGludCBpLCBu OworICAgbGlieGxfZGV2aWNlX3ZkaXNwbCAqdmRpc3BsczsKKyAgIGxpYnhsX3ZkaXNwbGluZm8g dmRpc3BsaW5mbzsKKworICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJ2ZGlz cGwtbGlzdCIsIDEpIHsKKyAgICAgICAvKiBObyBvcHRpb25zICovCisgICB9CisKKyAgIC8qIHZk aXNwbGluZm8udXVpZCBzaG91bGQgYmUgb3V0cHV0dGVkIHRvbyAqLworICAgcHJpbnRmKCIlLTVz ICUtM3MgJS02cyAlLTVzICUtOHMgJS00MHMgJS00MHNcbiIsCisgICAgICAgICAgICJWZGV2Iiwg IkJFIiwgImhhbmRsZSIsICJzdGF0ZSIsICJiZS1hbGxvYyIsICJCRS1wYXRoIiwgIkZFLXBhdGgi KTsKKyAgIGZvciAoYXJndiArPSBvcHRpbmQsIGFyZ2MgLT0gb3B0aW5kOyBhcmdjID4gMDsgLS1h cmdjLCArK2FyZ3YpIHsKKyAgICAgICB1aW50MzJfdCBkb21pZDsKKworICAgICAgIGlmIChsaWJ4 bF9kb21haW5fcXVhbGlmaWVyX3RvX2RvbWlkKGN0eCwgKmFyZ3YsICZkb21pZCkgPCAwKSB7Cisg ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgaXMgYW4gaW52YWxpZCBkb21haW4gaWRlbnRp ZmllclxuIiwgKmFyZ3YpOworICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICB9CisKKyAgICAg ICB2ZGlzcGxzID0gbGlieGxfZGV2aWNlX3ZkaXNwbF9saXN0KGN0eCwgZG9taWQsICZuKTsKKwor ICAgICAgIGlmICghdmRpc3BscykgeworICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICB9CisK KyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgIGxpYnhsX3ZkaXNw bGluZm9faW5pdCgmdmRpc3BsaW5mbyk7CisgICAgICAgICAgIGlmIChsaWJ4bF9kZXZpY2VfdmRp c3BsX2dldGluZm8oY3R4LCBkb21pZCwgJnZkaXNwbHNbaV0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJnZkaXNwbGluZm8pID09IDApIHsKKyAgICAgICAgICAg ICAgIC8qICAgICAgVmRldiBCRSAgIGhkbCAgIHN0ICBiZS1hbGxvYyBCRS1wYXRoIEZFLXBhdGgq LworICAgICAgICAgICAgICAgcHJpbnRmKCIlLTVkICUtM2QgJS02ZCAlLTVkICUtOGQgJS00MHMg JS00MHNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIHZkaXNwbGluZm8uZGV2aWQsIHZkaXNw bGluZm8uYmFja2VuZF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgdmRpc3BsaW5mby5mcm9u dGVuZF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgdmRpc3BsaW5mby5zdGF0ZSwgdmRpc3Bs aW5mby5iZV9hbGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgdmRpc3BsaW5mby5iYWNrZW5k LCB2ZGlzcGxpbmZvLmZyb250ZW5kKTsKKyAgICAgICAgICAgfQorICAgICAgICAgICBsaWJ4bF92 ZGlzcGxpbmZvX2Rpc3Bvc2UoJnZkaXNwbGluZm8pOworICAgICAgIH0KKworICAgICAgIGxpYnhs X2RldmljZV92ZGlzcGxfbGlzdF9mcmVlKHZkaXNwbHMsIG4pOworICAgfQorICAgcmV0dXJuIDA7 Cit9CisKK2ludCBtYWluX3ZkaXNwbGRldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7Cisg ICAgdWludDMyX3QgZG9taWQsIGRldmlkOworICAgIGludCBvcHQsIHJjOworICAgIGxpYnhsX2Rl dmljZV92ZGlzcGwgdmRpc3BsOworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5V TEwsICJ2ZGlzcGwtZGV0YWNoIiwgMikgeworICAgICAgICAvKiBObyBvcHRpb25zICovCisgICAg fQorCisgICAgZG9taWQgPSBmaW5kX2RvbWFpbihhcmd2W29wdGluZCsrXSk7CisgICAgZGV2aWQg PSBhdG9pKGFyZ3Zbb3B0aW5kKytdKTsKKworICAgIGxpYnhsX2RldmljZV92ZGlzcGxfaW5pdCgm dmRpc3BsKTsKKworICAgIGlmIChsaWJ4bF9kZXZpZF90b19kZXZpY2VfdmRpc3BsKGN0eCwgZG9t aWQsIGRldmlkLCAmdmRpc3BsKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiBE ZXZpY2UgJWQgbm90IGNvbm5lY3RlZC5cbiIsIGRldmlkKTsKKyAgICAgICAgcmMgPSBFUlJPUl9G QUlMOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICByYyA9IGxpYnhsX2RldmljZV92 ZGlzcGxfcmVtb3ZlKGN0eCwgZG9taWQsICZ2ZGlzcGwsIDApOworICAgIGlmIChyYykgeworICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX2RldmljZV92ZGlzcGxfcmVtb3ZlIGZhaWxlZC5c biIpOworICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0K KworICAgIHJjID0gMDsKKworb3V0OgorICAgIGxpYnhsX2RldmljZV92ZGlzcGxfZGlzcG9zZSgm dmRpc3BsKTsKKyAgICByZXR1cm4gcmM7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6Cisg KiBtb2RlOiBDCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmls CisgKiBFbmQ6CisgKi8KLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==