From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Grytsov Subject: [PATCH 2/2] xl: add PV display device commands Date: Thu, 23 Mar 2017 12:10:32 +0200 Message-ID: <1490263832-9068-3-git-send-email-al1img@gmail.com> References: <1490263832-9068-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 1cqzhZ-0003u0-Vn for xen-devel@lists.xenproject.org; Thu, 23 Mar 2017 10:10:42 +0000 Received: by mail-wm0-f67.google.com with SMTP id n11so15495725wma.0 for ; Thu, 23 Mar 2017 03:10:40 -0700 (PDT) In-Reply-To: <1490263832-9068-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: Oleksandr Grytsov List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29tPgoKU2ln bmVkLW9mZi1ieTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29t PgotLS0KIHRvb2xzL3hsL01ha2VmaWxlICAgICAgfCAgIDEgKwogdG9vbHMveGwveGwuaCAgICAg ICAgICB8ICAgMyArCiB0b29scy94bC94bF9jbWR0YWJsZS5jIHwgIDE2ICsrKysrCiB0b29scy94 bC94bF9wYXJzZS5jICAgIHwgIDQ0ICsrKysrKysrKysrKystCiB0b29scy94bC94bF9wYXJzZS5o ICAgIHwgICAyICstCiB0b29scy94bC94bF92ZGlzcGwuYyAgIHwgMTYyICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMjI2 IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMv eGwveGxfdmRpc3BsLmMKCmRpZmYgLS1naXQgYS90b29scy94bC9NYWtlZmlsZSBiL3Rvb2xzL3hs L01ha2VmaWxlCmluZGV4IGUxNmY4NzcuLjVjNzg0YjUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL01h a2VmaWxlCisrKyBiL3Rvb2xzL3hsL01ha2VmaWxlCkBAIC0yMSw2ICsyMSw3IEBAIFhMX09CSlMg Kz0geGxfdnRwbS5vIHhsX2Jsb2NrLm8geGxfbmljLm8geGxfdXNiLm8KIFhMX09CSlMgKz0geGxf c2NoZWQubyB4bF9wY2kubyB4bF92Y3B1Lm8geGxfY2Ryb20ubyB4bF9tZW0ubwogWExfT0JKUyAr PSB4bF9wc3IubyB4bF9pbmZvLm8geGxfY29uc29sZS5vIHhsX21pc2MubwogWExfT0JKUyArPSB4 bF92bWNvbnRyb2wubyB4bF9zYXZlcmVzdG9yZS5vIHhsX21pZ3JhdGUubworWExfT0JKUyArPSB4 bF92ZGlzcGwubwogCiAkKFhMX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVudG9vbGxv ZykKICQoWExfT0JKUyk6IENGTEFHUyArPSAkKENGTEFHU19YTCkKZGlmZiAtLWdpdCBhL3Rvb2xz L3hsL3hsLmggYi90b29scy94bC94bC5oCmluZGV4IDFhZDA3MjYuLjM3MGEwZDQgMTAwNjQ0Ci0t LSBhL3Rvb2xzL3hsL3hsLmgKKysrIGIvdG9vbHMveGwveGwuaApAQCAtMTY1LDYgKzE2NSw5IEBA IGludCBtYWluX2Jsb2NrZGV0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl92 dHBtYXR0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl92dHBtbGlzdChpbnQg YXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fdnRwbWRldGFjaChpbnQgYXJnYywgY2hhciAq KmFyZ3YpOworaW50IG1haW5fdmRpc3BsYXR0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7Citp bnQgbWFpbl92ZGlzcGxsaXN0KGludCBhcmdjLCBjaGFyICoqYXJndik7CitpbnQgbWFpbl92ZGlz cGxkZXRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3VzYmN0cmxfYXR0YWNo KGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl91c2JjdHJsX2RldGFjaChpbnQgYXJn YywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fdXNiZGV2X2F0dGFjaChpbnQgYXJnYywgY2hhciAq KmFyZ3YpOwpkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfY21kdGFibGUuYyBiL3Rvb2xzL3hsL3hs X2NtZHRhYmxlLmMKaW5kZXggMTIxOWIzMy4uMTA1MGRjMSAxMDA2NDQKLS0tIGEvdG9vbHMveGwv eGxfY21kdGFibGUuYworKysgYi90b29scy94bC94bF9jbWR0YWJsZS5jCkBAIC0zNzIsNiArMzcy LDIyIEBAIHN0cnVjdCBjbWRfc3BlYyBjbWRfdGFibGVbXSA9IHsKICAgICAgICJEZXN0cm95IGEg ZG9tYWluJ3MgdmlydHVhbCBUUE0gZGV2aWNlIiwKICAgICAgICI8RG9tYWluPiA8RGV2SWR8dXVp ZD4iLAogICAgIH0sCisgICAgeyAidmRpc3BsLWF0dGFjaCIsCisgICAgICAmbWFpbl92ZGlzcGxh dHRhY2gsIDEsIDEsCisgICAgICAiQ3JlYXRlIGEgbmV3IHZpcnR1YWwgZGlzcGxheSBkZXZpY2Ui LAorICAgICAgIjxEb21haW4+IFtkZXZJZD08RGV2aWNlPl0gW2JhY2tlbmQ9PEJhY2tEb21haW4+ XSBbYmVBbGxvYz08QmFja0FsbG9jPl0iLAorICAgICAgIiAgICBCYWNrQWxsb2MgLSBzZXQgdG8g MSB0byBhbGxvdyBiYWNrZW5kIGFsbG9jYXRlZCBkaXNwbGF5IGJ1ZmZlcnMiCisgICAgfSwKKyAg ICB7ICJ2ZGlzcGwtbGlzdCIsCisgICAgICAmbWFpbl92ZGlzcGxsaXN0LCAwLCAwLAorICAgICAg Ikxpc3QgdmlydHVhbCBkaXNwbGF5IGRldmljZXMgZm9yIGEgZG9tYWluIiwKKyAgICAgICI8RG9t YWluKHMpPiIsCisgICAgfSwKKyAgICB7ICJ2ZGlzcGwtZGV0YWNoIiwKKyAgICAgICZtYWluX3Zk aXNwbGRldGFjaCwgMCwgMSwKKyAgICAgICJEZXN0cm95IGEgZG9tYWluJ3MgdmlydHVhbCBkaXNw bGF5IGRldmljZSIsCisgICAgICAiPERvbWFpbj4gPERldklkPiIsCisgICAgfSwKICAgICB7ICJ1 cHRpbWUiLAogICAgICAgJm1haW5fdXB0aW1lLCAwLCAwLAogICAgICAgIlByaW50IHVwdGltZSBm b3IgYWxsL3NvbWUgZG9tYWlucyIsCmRpZmYgLS1naXQgYS90b29scy94bC94bF9wYXJzZS5jIGIv dG9vbHMveGwveGxfcGFyc2UuYwppbmRleCAxZWYwYzI3Li42ZDM3OGVkIDEwMDY0NAotLS0gYS90 b29scy94bC94bF9wYXJzZS5jCisrKyBiL3Rvb2xzL3hsL3hsX3BhcnNlLmMKQEAgLTcwNyw2ICs3 MDcsMjUgQEAgaW50IHBhcnNlX3VzYmRldl9jb25maWcobGlieGxfZGV2aWNlX3VzYmRldiAqdXNi ZGV2LCBjaGFyICp0b2tlbikKICAgICByZXR1cm4gMDsKIH0KIAoraW50IHBhcnNlX3ZkaXNwbF9j b25maWcobGlieGxfZGV2aWNlX3ZkaXNwbCAqdmRpc3BsLCBjaGFyICp0b2tlbikKK3sKKyAgICBj aGFyICpvcGFyZzsKKworICAgIGlmIChNQVRDSF9PUFRJT04oImJhY2tlbmQiLCB0b2tlbiwgb3Bh cmcpKSB7CisgICAgICAgIHZkaXNwbC0+YmFja2VuZF9kb21pZCA9IGZpbmRfZG9tYWluKG9wYXJn KTsKKyAgICAgICAgdmRpc3BsLT5iYWNrZW5kX2RvbW5hbWUgPSBzdHJkdXAob3BhcmcpOworICAg IH0gZWxzZSBpZiAoTUFUQ0hfT1BUSU9OKCJkZXZJZCIsIHRva2VuLCBvcGFyZykpIHsKKyAgICAg ICAgdmRpc3BsLT5kZXZpZCA9IGF0b2kob3BhcmcpOworICAgIH0gZWxzZSBpZiAoTUFUQ0hfT1BU SU9OKCJiZUFsbG9jIiwgdG9rZW4sIG9wYXJnKSkgeworICAgIAl2ZGlzcGwtPmJlX2FsbG9jID0g c3RydG91bChvcGFyZywgTlVMTCwgMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZnByaW50Zihz dGRlcnIsICJVbmtub3duIHN0cmluZyBgJXMnIGluIHZkaXNwbCBzcGVjXG4iLCB0b2tlbik7Cisg ICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiB2b2lkIHBhcnNl X2NvbmZpZ19kYXRhKGNvbnN0IGNoYXIgKmNvbmZpZ19zb3VyY2UsCiAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKmNvbmZpZ19kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBp bnQgY29uZmlnX2xlbiwKQEAgLTcxNiw3ICs3MzUsNyBAQCB2b2lkIHBhcnNlX2NvbmZpZ19kYXRh KGNvbnN0IGNoYXIgKmNvbmZpZ19zb3VyY2UsCiAgICAgbG9uZyBsLCB2Y3B1cyA9IDA7CiAgICAg WExVX0NvbmZpZyAqY29uZmlnOwogICAgIFhMVV9Db25maWdMaXN0ICpjcHVzLCAqdmJkcywgKm5p Y3MsICpwY2lzLCAqY3ZmYnMsICpjcHVpZHMsICp2dHBtcywKLSAgICAgICAgICAgICAgICAgICAq dXNiY3RybHMsICp1c2JkZXZzOworICAgICAgICAgICAgICAgICAgICp1c2JjdHJscywgKnVzYmRl dnMsICp2ZGlzcGxzOwogICAgIFhMVV9Db25maWdMaXN0ICpjaGFubmVscywgKmlvcG9ydHMsICpp cnFzLCAqaW9tZW0sICp2aXJpZGlhbiwgKmR0ZGV2czsKICAgICBpbnQgbnVtX2lvcG9ydHMsIG51 bV9pcnFzLCBudW1faW9tZW0sIG51bV9jcHVzLCBudW1fdmlyaWRpYW47CiAgICAgaW50IHBjaV9w b3dlcl9tZ210ID0gMDsKQEAgLTEyOTUsNiArMTMxNCwyOSBAQCB2b2lkIHBhcnNlX2NvbmZpZ19k YXRhKGNvbnN0IGNoYXIgKmNvbmZpZ19zb3VyY2UsCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBp ZiAoIXhsdV9jZmdfZ2V0X2xpc3QoY29uZmlnLCAidmRpc3BsIiwgJnZkaXNwbHMsIDAsIDApKSB7 CisgICAgICAgIGRfY29uZmlnLT5udW1fdmRpc3BscyA9IDA7CisgICAgICAgIGRfY29uZmlnLT52 ZGlzcGxzID0gTlVMTDsKKyAgICAgICAgd2hpbGUgKChidWYgPSB4bHVfY2ZnX2dldF9saXN0aXRl bSh2ZGlzcGxzLCBkX2NvbmZpZy0+bnVtX3ZkaXNwbHMpKSAhPSBOVUxMKSB7CisgICAgICAgICAg ICBsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGw7CisgICAgICAgICAgICBjaGFyICogYnVmMiA9 IHN0cmR1cChidWYpOworICAgICAgICAgICAgY2hhciAqcDsKKyAgICAgICAgICAgIHZkaXNwbCA9 IEFSUkFZX0VYVEVORF9JTklUKGRfY29uZmlnLT52ZGlzcGxzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZF9jb25maWctPm51bV92ZGlzcGxzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZkaXNwbF9pbml0KTsKKyAg ICAgICAgICAgIHAgPSBzdHJ0b2sgKGJ1ZjIsICIsIik7CisgICAgICAgICAgICB3aGlsZSAocCAh PSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHdoaWxlICgqcCA9PSAnICcp IHArKzsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VfdmRpc3BsX2NvbmZpZyh2ZGlzcGwsIHAp KSB7CisgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgIHAgPSBzdHJ0b2sgKE5VTEwsICIsIik7CisgICAgICAgICAgICB9CisgICAg ICAgICAgICBmcmVlKGJ1ZjIpOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKCF4bHVfY2Zn X2dldF9saXN0IChjb25maWcsICJjaGFubmVsIiwgJmNoYW5uZWxzLCAwLCAwKSkgewogICAgICAg ICBkX2NvbmZpZy0+bnVtX2NoYW5uZWxzID0gMDsKICAgICAgICAgZF9jb25maWctPmNoYW5uZWxz ID0gTlVMTDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX3BhcnNlLmggYi90b29scy94bC94bF9w YXJzZS5oCmluZGV4IGRiOGJjM2YuLmNjNDU5ZmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX3Bh cnNlLmgKKysrIGIvdG9vbHMveGwveGxfcGFyc2UuaApAQCAtMzMsNyArMzMsNyBAQCBpbnQgcGFy c2VfdXNiY3RybF9jb25maWcobGlieGxfZGV2aWNlX3VzYmN0cmwgKnVzYmN0cmwsIGNoYXIgKnRv a2VuKTsKIGludCBwYXJzZV91c2JkZXZfY29uZmlnKGxpYnhsX2RldmljZV91c2JkZXYgKnVzYmRl diwgY2hhciAqdG9rZW4pOwogaW50IHBhcnNlX2NwdXJhbmdlKGNvbnN0IGNoYXIgKmNwdSwgbGli eGxfYml0bWFwICpjcHVtYXApOwogaW50IHBhcnNlX25pY19jb25maWcobGlieGxfZGV2aWNlX25p YyAqbmljLCBYTFVfQ29uZmlnICoqY29uZmlnLCBjaGFyICp0b2tlbik7Ci0KK2ludCBwYXJzZV92 ZGlzcGxfY29uZmlnKGxpYnhsX2RldmljZV92ZGlzcGwgKnZkaXNwbCwgY2hhciAqdG9rZW4pOwog CiBpbnQgbWF0Y2hfb3B0aW9uX3NpemUoY29uc3QgY2hhciAqcHJlZml4LCBzaXplX3QgbGVuLAog ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmFyZywgY2hhciAqKmFyZ29wdCk7CmRpZmYgLS1n aXQgYS90b29scy94bC94bF92ZGlzcGwuYyBiL3Rvb2xzL3hsL3hsX3ZkaXNwbC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZjkwYzkKLS0tIC9kZXYvbnVsbAorKysgYi90 b29scy94bC94bF92ZGlzcGwuYwpAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo QykgMjAxNiBFUEFNIFN5c3RlbXMgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQKKyAqIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMi4x IG9ubHkuIHdpdGggdGhlIHNwZWNpYWwKKyAqIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJl ZCBpbiBmaWxlIExJQ0VOU0UuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICog R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8K KworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSA8bGlieGwuaD4KKyNpbmNsdWRlIDxs aWJ4bF91dGlscy5oPgorI2luY2x1ZGUgPGxpYnhsdXRpbC5oPgorCisjaW5jbHVkZSAieGwuaCIK KyNpbmNsdWRlICJ4bF91dGlscy5oIgorI2luY2x1ZGUgInhsX3BhcnNlLmgiCisKK2ludCBtYWlu X3ZkaXNwbGF0dGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgaW50IG9wdDsKKyAg ICBpbnQgcmM7CisgICAgY2hhciAqb3Bhcmc7CisgICAgdWludDMyX3QgZG9taWQ7CisgICAgbGli eGxfZGV2aWNlX3ZkaXNwbCB2ZGlzcGw7CisKKyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAi IiwgTlVMTCwgInZkaXNwbC1hdHRhY2giLCAxKSB7CisgICAgICAgIC8qIE5vIG9wdGlvbnMgKi8K KyAgICB9CisKKyAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsX2luaXQoJnZkaXNwbCk7CisgICAgZG9t aWQgPSBmaW5kX2RvbWFpbihhcmd2W29wdGluZCsrXSk7CisKKyAgICBmb3IgKGFyZ3YgKz0gb3B0 aW5kLCBhcmdjIC09IG9wdGluZDsgYXJnYyA+IDA7ICsrYXJndiwgLS1hcmdjKSB7CisgICAgICAg IGlmIChNQVRDSF9PUFRJT04oImRldklkIiwgKmFyZ3YsIG9wYXJnKSkgeworICAgICAgICAgICAg dmRpc3BsLmRldmlkID0gYXRvaShvcGFyZyk7CisgICAgICAgIH0gZWxzZSBpZiAoTUFUQ0hfT1BU SU9OKCJiYWNrZW5kIiwgKmFyZ3YsIG9wYXJnKSkgeworICAgICAgICAgICAgdmRpc3BsLmJhY2tl bmRfZG9taWQgPSBmaW5kX2RvbWFpbihvcGFyZyk7CisgICAgICAgICAgICByZXBsYWNlX3N0cmlu ZygmdmRpc3BsLmJhY2tlbmRfZG9tbmFtZSwgb3BhcmcpOworICAgICAgICB9IGVsc2UgaWYgKE1B VENIX09QVElPTigiYmVBbGxvYyIsICphcmd2LCBvcGFyZykpIHsKKyAgICAgICAgICAgIHZkaXNw bC5iZV9hbGxvYyA9IHN0cnRvdWwob3BhcmcsIE5VTEwsIDApOworICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ1bnJlY29nbml6ZWQgYXJndW1lbnQgYCVzJ1xu IiwgKmFyZ3YpOworICAgICAgICAgICAgcmMgPSAxOworICAgICAgICAgICAgZ290byBvdXQ7Cisg ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZHJ5cnVuX29ubHkpIHsKKyAgICAgICAgY2hhciAq anNvbiA9IGxpYnhsX2RldmljZV92ZGlzcGxfdG9fanNvbihjdHgsICZ2ZGlzcGwpOworICAgICAg ICBwcmludGYoInZkaXNwbDogJXNcbiIsIGpzb24pOworICAgICAgICBmcmVlKGpzb24pOworICAg ICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBpZiAobGlieGxfZGV2aWNlX3ZkaXNwbF9hZGQo Y3R4LCBkb21pZCwgJnZkaXNwbCwgMCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJsaWJ4 bF9kZXZpY2VfdmRpc3BsX2FkZCBmYWlsZWQuXG4iKTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlM OworICAgIH0KKworICAgIHJjID0gMDsKKworb3V0OgorICAgIGxpYnhsX2RldmljZV92ZGlzcGxf ZGlzcG9zZSgmdmRpc3BsKTsKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCBtYWluX3ZkaXNwbGxp c3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgaW50IG9wdDsKKyAgIGludCBpLCBuOwor ICAgbGlieGxfZGV2aWNlX3ZkaXNwbCAqdmRpc3BsczsKKyAgIGxpYnhsX3ZkaXNwbGluZm8gdmRp c3BsaW5mbzsKKworICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJ2ZGlzcGwt bGlzdCIsIDEpIHsKKyAgICAgICAvKiBObyBvcHRpb25zICovCisgICB9CisKKyAgIC8qIHZkaXNw bGluZm8udXVpZCBzaG91bGQgYmUgb3V0cHV0dGVkIHRvbyAqLworICAgcHJpbnRmKCIlLTVzICUt M3MgJS02cyAlLTVzICUtOHMgJS00MHMgJS00MHNcbiIsCisgICAgICAgICAgICJWZGV2IiwgIkJF IiwgImhhbmRsZSIsICJzdGF0ZSIsICJiZS1hbGxvYyIsICJCRS1wYXRoIiwgIkZFLXBhdGgiKTsK KyAgIGZvciAoYXJndiArPSBvcHRpbmQsIGFyZ2MgLT0gb3B0aW5kOyBhcmdjID4gMDsgLS1hcmdj LCArK2FyZ3YpIHsKKyAgICAgICB1aW50MzJfdCBkb21pZDsKKworICAgICAgIGlmIChsaWJ4bF9k b21haW5fcXVhbGlmaWVyX3RvX2RvbWlkKGN0eCwgKmFyZ3YsICZkb21pZCkgPCAwKSB7CisgICAg ICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgaXMgYW4gaW52YWxpZCBkb21haW4gaWRlbnRpZmll clxuIiwgKmFyZ3YpOworICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICB9CisKKyAgICAgICB2 ZGlzcGxzID0gbGlieGxfZGV2aWNlX3ZkaXNwbF9saXN0KGN0eCwgZG9taWQsICZuKTsKKworICAg ICAgIGlmICghdmRpc3BscykgeworICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICB9CisKKyAg ICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgIGxpYnhsX3ZkaXNwbGlu Zm9faW5pdCgmdmRpc3BsaW5mbyk7CisgICAgICAgICAgIGlmIChsaWJ4bF9kZXZpY2VfdmRpc3Bs X2dldGluZm8oY3R4LCBkb21pZCwgJnZkaXNwbHNbaV0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnZkaXNwbGluZm8pID09IDApIHsKKyAgICAgICAgICAgICAg IC8qICAgICAgVmRldiBCRSAgIGhkbCAgIHN0ICBiZS1hbGxvYyBCRS1wYXRoIEZFLXBhdGgqLwor ICAgICAgICAgICAgICAgcHJpbnRmKCIlLTVkICUtM2QgJS02ZCAlLTVkICUtOGQgJS00MHMgJS00 MHNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIHZkaXNwbGluZm8uZGV2aWQsIHZkaXNwbGlu Zm8uYmFja2VuZF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgdmRpc3BsaW5mby5mcm9udGVu ZF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgdmRpc3BsaW5mby5zdGF0ZSwgdmRpc3BsaW5m by5iZV9hbGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgdmRpc3BsaW5mby5iYWNrZW5kLCB2 ZGlzcGxpbmZvLmZyb250ZW5kKTsKKyAgICAgICAgICAgfQorICAgICAgICAgICBsaWJ4bF92ZGlz cGxpbmZvX2Rpc3Bvc2UoJnZkaXNwbGluZm8pOworICAgICAgIH0KKworICAgICAgIGxpYnhsX2Rl dmljZV92ZGlzcGxfbGlzdF9mcmVlKHZkaXNwbHMsIG4pOworICAgfQorICAgcmV0dXJuIDA7Cit9 CisKK2ludCBtYWluX3ZkaXNwbGRldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAg dWludDMyX3QgZG9taWQsIGRldmlkOworICAgIGludCBvcHQsIHJjOworICAgIGxpYnhsX2Rldmlj ZV92ZGlzcGwgdmRpc3BsOworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEws ICJ2ZGlzcGwtZGV0YWNoIiwgMikgeworICAgICAgICAvKiBObyBvcHRpb25zICovCisgICAgfQor CisgICAgZG9taWQgPSBmaW5kX2RvbWFpbihhcmd2W29wdGluZCsrXSk7CisgICAgZGV2aWQgPSBh dG9pKGFyZ3Zbb3B0aW5kKytdKTsKKworICAgIGxpYnhsX2RldmljZV92ZGlzcGxfaW5pdCgmdmRp c3BsKTsKKworICAgIGlmIChsaWJ4bF9kZXZpZF90b19kZXZpY2VfdmRpc3BsKGN0eCwgZG9taWQs IGRldmlkLCAmdmRpc3BsKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiBEZXZp Y2UgJWQgbm90IGNvbm5lY3RlZC5cbiIsIGRldmlkKTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlM OworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICByYyA9IGxpYnhsX2RldmljZV92ZGlz cGxfcmVtb3ZlKGN0eCwgZG9taWQsICZ2ZGlzcGwsIDApOworICAgIGlmIChyYykgeworICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX2RldmljZV92ZGlzcGxfcmVtb3ZlIGZhaWxlZC5cbiIp OworICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKwor ICAgIHJjID0gMDsKKworb3V0OgorICAgIGxpYnhsX2RldmljZV92ZGlzcGxfZGlzcG9zZSgmdmRp c3BsKTsKKyAgICByZXR1cm4gcmM7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBt b2RlOiBDCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisg KiBFbmQ6CisgKi8KLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==