From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Grytsov Subject: [PATCH v3 10/11] xl: add PV display device commands Date: Tue, 27 Jun 2017 13:03:26 +0300 Message-ID: <1498557807-10810-11-git-send-email-al1img@gmail.com> References: <1498557807-10810-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dPnLX-0007Nd-Vi for xen-devel@lists.xenproject.org; Tue, 27 Jun 2017 10:03:48 +0000 Received: by mail-lf0-f66.google.com with SMTP id g21so2306653lfk.1 for ; Tue, 27 Jun 2017 03:03:46 -0700 (PDT) In-Reply-To: <1498557807-10810-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: wei.liu2@citrix.com, ian.jackson@eu.citrix.com, Oleksandr Grytsov List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29tPgoKQWRk IGNvbW1hbmRzOiB2ZGlzcGwtYXR0YWNoLCB2ZGlzcGwtbGlzdCwgdmRpc3BsLWRldGFjaAphbmQg ZG9tYWluIGNvbmZpZyB2ZGlzcGwgcGFyc2VyCgpTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgR3J5 dHNvdiA8b2xla3NhbmRyX2dyeXRzb3ZAZXBhbS5jb20+Ci0tLQogdG9vbHMveGwvTWFrZWZpbGUg ICAgICB8ICAgMSArCiB0b29scy94bC94bC5oICAgICAgICAgIHwgICAzICsKIHRvb2xzL3hsL3hs X2NtZHRhYmxlLmMgfCAgMTkgKysrKysrCiB0b29scy94bC94bF9wYXJzZS5jICAgIHwgIDc3ICsr KysrKysrKysrKysrKysrKysrKystCiB0b29scy94bC94bF9wYXJzZS5oICAgIHwgICAyICstCiB0 b29scy94bC94bF92ZGlzcGwuYyAgIHwgMTY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMjY2IGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMveGwveGxfdmRpc3BsLmMK CmRpZmYgLS1naXQgYS90b29scy94bC9NYWtlZmlsZSBiL3Rvb2xzL3hsL01ha2VmaWxlCmluZGV4 IGUxNmY4NzcuLjVjNzg0YjUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL01ha2VmaWxlCisrKyBiL3Rv b2xzL3hsL01ha2VmaWxlCkBAIC0yMSw2ICsyMSw3IEBAIFhMX09CSlMgKz0geGxfdnRwbS5vIHhs X2Jsb2NrLm8geGxfbmljLm8geGxfdXNiLm8KIFhMX09CSlMgKz0geGxfc2NoZWQubyB4bF9wY2ku byB4bF92Y3B1Lm8geGxfY2Ryb20ubyB4bF9tZW0ubwogWExfT0JKUyArPSB4bF9wc3IubyB4bF9p bmZvLm8geGxfY29uc29sZS5vIHhsX21pc2MubwogWExfT0JKUyArPSB4bF92bWNvbnRyb2wubyB4 bF9zYXZlcmVzdG9yZS5vIHhsX21pZ3JhdGUubworWExfT0JKUyArPSB4bF92ZGlzcGwubwogCiAk KFhMX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVudG9vbGxvZykKICQoWExfT0JKUyk6 IENGTEFHUyArPSAkKENGTEFHU19YTCkKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsLmggYi90b29s cy94bC94bC5oCmluZGV4IGFhOTViNzcuLmQzNjEyNDEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hs LmgKKysrIGIvdG9vbHMveGwveGwuaApAQCAtMTY2LDYgKzE2Niw5IEBAIGludCBtYWluX2Jsb2Nr ZGV0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl92dHBtYXR0YWNoKGludCBh cmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl92dHBtbGlzdChpbnQgYXJnYywgY2hhciAqKmFy Z3YpOwogaW50IG1haW5fdnRwbWRldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworaW50IG1h aW5fdmRpc3BsYXR0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CitpbnQgbWFpbl92ZGlzcGxs aXN0KGludCBhcmdjLCBjaGFyICoqYXJndik7CitpbnQgbWFpbl92ZGlzcGxkZXRhY2goaW50IGFy Z2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3VzYmN0cmxfYXR0YWNoKGludCBhcmdjLCBjaGFy ICoqYXJndik7CiBpbnQgbWFpbl91c2JjdHJsX2RldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3Yp OwogaW50IG1haW5fdXNiZGV2X2F0dGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwpkaWZmIC0t Z2l0IGEvdG9vbHMveGwveGxfY21kdGFibGUuYyBiL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKaW5k ZXggMzBlYjkzYy4uZDIxMjYxZiAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGxfY21kdGFibGUuYwor KysgYi90b29scy94bC94bF9jbWR0YWJsZS5jCkBAIC0zNzIsNiArMzcyLDI1IEBAIHN0cnVjdCBj bWRfc3BlYyBjbWRfdGFibGVbXSA9IHsKICAgICAgICJEZXN0cm95IGEgZG9tYWluJ3MgdmlydHVh bCBUUE0gZGV2aWNlIiwKICAgICAgICI8RG9tYWluPiA8RGV2SWR8dXVpZD4iLAogICAgIH0sCisg ICAgeyAidmRpc3BsLWF0dGFjaCIsCisgICAgICAmbWFpbl92ZGlzcGxhdHRhY2gsIDEsIDEsCisg ICAgICAiQ3JlYXRlIGEgbmV3IHZpcnR1YWwgZGlzcGxheSBkZXZpY2UiLAorICAgICAgIjxEb21h aW4+IFtkZXZJZD08RGV2aWNlPl0gW2JhY2tlbmQ9PEJhY2tEb21haW4+XSBbYmVBbGxvYz08QmFj a0FsbG9jPl0gW2Nvbm5lY3RvcnM9JzxDb25uZWN0b3JzPiddIiwKKyAgICAgICIgICAgQmFja0Fs bG9jIC0gc2V0IHRvIDEgdG8gYWxsb3cgYmFja2VuZCBhbGxvY2F0ZWQgZGlzcGxheSBidWZmZXJz XG4iCisgICAgICAiICAgIENvbm5lY3RvcnMgLSBsaXN0IG9mIGNvbm5lY3RvcidzIGRlc2NyaXB0 aW9uIGluIElEOld4SCBmb3JtYXQsXG4iCisgICAgICAiICAgICAgICAgICAgICAgICB3aGVyZTog SUQgLSB1bmlxdWUgY29ubmVjdG9yIElELCBXIC0gY29ubmVjdG9yIHdpZHRoLFxuIgorICAgICAg IiAgICAgICAgICAgICAgICAgSCAtIGNvbm5lY3RvciBoZWlnaHQ6IGNvbm5lY3RvcnM9J2lkMDo4 MDB4NjAwO2lkMToxMDI0eDc2OCdcbiIKKyAgICB9LAorICAgIHsgInZkaXNwbC1saXN0IiwKKyAg ICAgICZtYWluX3ZkaXNwbGxpc3QsIDAsIDAsCisgICAgICAiTGlzdCB2aXJ0dWFsIGRpc3BsYXkg ZGV2aWNlcyBmb3IgYSBkb21haW4iLAorICAgICAgIjxEb21haW4ocyk+IiwKKyAgICB9LAorICAg IHsgInZkaXNwbC1kZXRhY2giLAorICAgICAgJm1haW5fdmRpc3BsZGV0YWNoLCAwLCAxLAorICAg ICAgIkRlc3Ryb3kgYSBkb21haW4ncyB2aXJ0dWFsIGRpc3BsYXkgZGV2aWNlIiwKKyAgICAgICI8 RG9tYWluPiA8RGV2SWQ+IiwKKyAgICB9LAogICAgIHsgInVwdGltZSIsCiAgICAgICAmbWFpbl91 cHRpbWUsIDAsIDAsCiAgICAgICAiUHJpbnQgdXB0aW1lIGZvciBhbGwvc29tZSBkb21haW5zIiwK ZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX3BhcnNlLmMgYi90b29scy94bC94bF9wYXJzZS5jCmlu ZGV4IDg1NmEzMDQuLjhiODBkNTggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX3BhcnNlLmMKKysr IGIvdG9vbHMveGwveGxfcGFyc2UuYwpAQCAtODAzLDYgKzgwMyw1MyBAQCBpbnQgcGFyc2VfdXNi ZGV2X2NvbmZpZyhsaWJ4bF9kZXZpY2VfdXNiZGV2ICp1c2JkZXYsIGNoYXIgKnRva2VuKQogICAg IHJldHVybiAwOwogfQogCitpbnQgcGFyc2VfdmRpc3BsX2NvbmZpZyhsaWJ4bF9kZXZpY2VfdmRp c3BsICp2ZGlzcGwsIGNoYXIgKnRva2VuKQoreworICAgIGNoYXIgKm9wYXJnOworICAgIGxpYnhs X3N0cmluZ19saXN0IGNvbm5lY3RvcnMgPSBOVUxMOworICAgIGludCBpOworICAgIGludCByYzsK KworICAgIGlmIChNQVRDSF9PUFRJT04oImJhY2tlbmQiLCB0b2tlbiwgb3BhcmcpKSB7CisgICAg ICAgIHZkaXNwbC0+YmFja2VuZF9kb21uYW1lID0gc3RyZHVwKG9wYXJnKTsKKyAgICB9IGVsc2Ug aWYgKE1BVENIX09QVElPTigiZGV2SWQiLCB0b2tlbiwgb3BhcmcpKSB7CisgICAgICAgIHZkaXNw bC0+ZGV2aWQgPSBhdG9pKG9wYXJnKTsKKyAgICB9IGVsc2UgaWYgKE1BVENIX09QVElPTigiYmVB bGxvYyIsIHRva2VuLCBvcGFyZykpIHsKKyAgICAgICAgdmRpc3BsLT5iZV9hbGxvYyA9IHN0cnRv dWwob3BhcmcsIE5VTEwsIDApOworICAgIH0gZWxzZSBpZiAoTUFUQ0hfT1BUSU9OKCJjb25uZWN0 b3JzIiwgdG9rZW4sIG9wYXJnKSkgeworICAgICAgICBzcGxpdF9zdHJpbmdfaW50b19zdHJpbmdf bGlzdChvcGFyZywgIjsiLCAmY29ubmVjdG9ycyk7CisKKyAgICAgICAgdmRpc3BsLT5udW1fY29u bmVjdG9ycyA9IGxpYnhsX3N0cmluZ19saXN0X2xlbmd0aCgmY29ubmVjdG9ycyk7CisgICAgICAg IHZkaXNwbC0+Y29ubmVjdG9ycyA9IGNhbGxvYyh2ZGlzcGwtPm51bV9jb25uZWN0b3JzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCp2ZGlzcGwtPmNvbm5lY3Rv cnMpKTsKKworICAgICAgICBmb3IoaSA9IDA7IGkgPCB2ZGlzcGwtPm51bV9jb25uZWN0b3JzOyBp KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoYXIgKnJlc29sdXRpb247CisKKyAgICAgICAg ICAgIHJjID0gc3BsaXRfc3RyaW5nX2ludG9fcGFpcihjb25uZWN0b3JzW2ldLCAiOiIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZkaXNwbC0+Y29ubmVjdG9yc1tp XS5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzb2x1dGlv bik7CisKKyAgICAgICAgICAgIHJjPSBzc2NhbmYocmVzb2x1dGlvbiwgIiV1eCV1IiwgJnZkaXNw bC0+Y29ubmVjdG9yc1tpXS53aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgJnZkaXNwbC0+ Y29ubmVjdG9yc1tpXS5oZWlnaHQpOworICAgICAgICAgICAgaWYgKHJjICE9IDIpIHsKKyAgICAg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbid0IHBhcnNlIGNvbm5lY3RvciByZXNvbHV0 aW9uXG4iKTsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5rbm93biBzdHJp bmcgXCIlc1wiIGluIHZkaXNwbCBzcGVjXG4iLCB0b2tlbik7CisgICAgICAgIHJjID0gMTsgZ290 byBvdXQ7CisgICAgfQorCisgICAgcmMgPSAwOworCitvdXQ6CisgICAgbGlieGxfc3RyaW5nX2xp c3RfZGlzcG9zZSgmY29ubmVjdG9ycyk7CisgICAgcmV0dXJuIHJjOworfQorCiB2b2lkIHBhcnNl X2NvbmZpZ19kYXRhKGNvbnN0IGNoYXIgKmNvbmZpZ19zb3VyY2UsCiAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKmNvbmZpZ19kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBp bnQgY29uZmlnX2xlbiwKQEAgLTgxMiw3ICs4NTksNyBAQCB2b2lkIHBhcnNlX2NvbmZpZ19kYXRh KGNvbnN0IGNoYXIgKmNvbmZpZ19zb3VyY2UsCiAgICAgbG9uZyBsLCB2Y3B1cyA9IDA7CiAgICAg WExVX0NvbmZpZyAqY29uZmlnOwogICAgIFhMVV9Db25maWdMaXN0ICpjcHVzLCAqdmJkcywgKm5p Y3MsICpwY2lzLCAqY3ZmYnMsICpjcHVpZHMsICp2dHBtcywKLSAgICAgICAgICAgICAgICAgICAq dXNiY3RybHMsICp1c2JkZXZzLCAqcDlkZXZzOworICAgICAgICAgICAgICAgICAgICp1c2JjdHJs cywgKnVzYmRldnMsICpwOWRldnMsICp2ZGlzcGxzOwogICAgIFhMVV9Db25maWdMaXN0ICpjaGFu bmVscywgKmlvcG9ydHMsICppcnFzLCAqaW9tZW0sICp2aXJpZGlhbiwgKmR0ZGV2czsKICAgICBp bnQgbnVtX2lvcG9ydHMsIG51bV9pcnFzLCBudW1faW9tZW0sIG51bV9jcHVzLCBudW1fdmlyaWRp YW47CiAgICAgaW50IHBjaV9wb3dlcl9tZ210ID0gMDsKQEAgLTE0NjIsNiArMTUwOSwzNCBAQCB2 b2lkIHBhcnNlX2NvbmZpZ19kYXRhKGNvbnN0IGNoYXIgKmNvbmZpZ19zb3VyY2UsCiAgICAgICAg IH0KICAgICB9CiAKKyAgICBpZiAoIXhsdV9jZmdfZ2V0X2xpc3QoY29uZmlnLCAidmRpc3BsIiwg JnZkaXNwbHMsIDAsIDApKSB7CisgICAgICAgIGRfY29uZmlnLT5udW1fdmRpc3BscyA9IDA7Cisg ICAgICAgIGRfY29uZmlnLT52ZGlzcGxzID0gTlVMTDsKKyAgICAgICAgd2hpbGUgKChidWYgPSB4 bHVfY2ZnX2dldF9saXN0aXRlbSh2ZGlzcGxzLCBkX2NvbmZpZy0+bnVtX3ZkaXNwbHMpKSAhPSBO VUxMKSB7CisgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGw7CisgICAgICAg ICAgICBjaGFyICogYnVmMiA9IHN0cmR1cChidWYpOworICAgICAgICAgICAgY2hhciAqcDsKKyAg ICAgICAgICAgIHZkaXNwbCA9IEFSUkFZX0VYVEVORF9JTklUKGRfY29uZmlnLT52ZGlzcGxzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZF9jb25maWctPm51bV92ZGlz cGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNl X3ZkaXNwbF9pbml0KTsKKyAgICAgICAgICAgIHAgPSBzdHJ0b2sgKGJ1ZjIsICIsIik7CisgICAg ICAgICAgICB3aGlsZSAocCAhPSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg IHdoaWxlICgqcCA9PSAnICcpIHArKzsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VfdmRpc3Bs X2NvbmZpZyh2ZGlzcGwsIHApKSB7CisgICAgICAgICAgICAgICAgICAgIGZyZWUoYnVmMik7Cisg ICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgIHAgPSBzdHJ0b2sgKE5VTEwsICIsIik7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICBmcmVlKGJ1ZjIpOworICAgICAgICAgICAgaWYgKHZkaXNwbC0+bnVtX2Nvbm5lY3RvcnMgPT0g MCkgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQXQgbGVhc3Qgb25lIGNvbm5l Y3RvciBzaG91bGQgYmUgc3BlY2lmaWVkLlxuIik7CisgICAgICAgICAgICAgICAgZXhpdCgxKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmICgheGx1X2NmZ19nZXRf bGlzdCAoY29uZmlnLCAiY2hhbm5lbCIsICZjaGFubmVscywgMCwgMCkpIHsKICAgICAgICAgZF9j b25maWctPm51bV9jaGFubmVscyA9IDA7CiAgICAgICAgIGRfY29uZmlnLT5jaGFubmVscyA9IE5V TEw7CmRpZmYgLS1naXQgYS90b29scy94bC94bF9wYXJzZS5oIGIvdG9vbHMveGwveGxfcGFyc2Uu aAppbmRleCBkYjhiYzNmLi5jYzQ1OWZiIDEwMDY0NAotLS0gYS90b29scy94bC94bF9wYXJzZS5o CisrKyBiL3Rvb2xzL3hsL3hsX3BhcnNlLmgKQEAgLTMzLDcgKzMzLDcgQEAgaW50IHBhcnNlX3Vz YmN0cmxfY29uZmlnKGxpYnhsX2RldmljZV91c2JjdHJsICp1c2JjdHJsLCBjaGFyICp0b2tlbik7 CiBpbnQgcGFyc2VfdXNiZGV2X2NvbmZpZyhsaWJ4bF9kZXZpY2VfdXNiZGV2ICp1c2JkZXYsIGNo YXIgKnRva2VuKTsKIGludCBwYXJzZV9jcHVyYW5nZShjb25zdCBjaGFyICpjcHUsIGxpYnhsX2Jp dG1hcCAqY3B1bWFwKTsKIGludCBwYXJzZV9uaWNfY29uZmlnKGxpYnhsX2RldmljZV9uaWMgKm5p YywgWExVX0NvbmZpZyAqKmNvbmZpZywgY2hhciAqdG9rZW4pOwotCitpbnQgcGFyc2VfdmRpc3Bs X2NvbmZpZyhsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGwsIGNoYXIgKnRva2VuKTsKIAogaW50 IG1hdGNoX29wdGlvbl9zaXplKGNvbnN0IGNoYXIgKnByZWZpeCwgc2l6ZV90IGxlbiwKICAgICAg ICAgICAgICAgICAgICAgICBjaGFyICphcmcsIGNoYXIgKiphcmdvcHQpOwpkaWZmIC0tZ2l0IGEv dG9vbHMveGwveGxfdmRpc3BsLmMgYi90b29scy94bC94bF92ZGlzcGwuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDQ1MTJiCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMv eGwveGxfdmRpc3BsLmMKQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw MTYgRVBBTSBTeXN0ZW1zIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkCisgKiBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIuMSBvbmx5 LiB3aXRoIHRoZSBzcGVjaWFsCisgKiBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4g ZmlsZSBMSUNFTlNFLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNp bmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgPGxpYnhsLmg+CisjaW5jbHVkZSA8bGlieGxf dXRpbHMuaD4KKyNpbmNsdWRlIDxsaWJ4bHV0aWwuaD4KKworI2luY2x1ZGUgInhsLmgiCisjaW5j bHVkZSAieGxfdXRpbHMuaCIKKyNpbmNsdWRlICJ4bF9wYXJzZS5oIgorCitpbnQgbWFpbl92ZGlz cGxhdHRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGludCBvcHQ7CisgICAgaW50 IHJjOworICAgIHVpbnQzMl90IGRvbWlkOworICAgIGxpYnhsX2RldmljZV92ZGlzcGwgdmRpc3Bs OworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJ2ZGlzcGwtYXR0YWNo IiwgMSkgeworICAgICAgICAvKiBObyBvcHRpb25zICovCisgICAgfQorCisgICAgbGlieGxfZGV2 aWNlX3ZkaXNwbF9pbml0KCZ2ZGlzcGwpOworICAgIGRvbWlkID0gZmluZF9kb21haW4oYXJndltv cHRpbmQrK10pOworCisgICAgZm9yIChhcmd2ICs9IG9wdGluZCwgYXJnYyAtPSBvcHRpbmQ7IGFy Z2MgPiAwOyArK2FyZ3YsIC0tYXJnYykgeworICAgICAgICByYyA9IHBhcnNlX3ZkaXNwbF9jb25m aWcoJnZkaXNwbCwgKmFyZ3YpOworICAgICAgICBpZiAocmMpIGdvdG8gb3V0OworICAgIH0KKwor ICAgIGlmICh2ZGlzcGwubnVtX2Nvbm5lY3RvcnMgPT0gMCkgeworICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIkF0IGxlYXN0IG9uZSBjb25uZWN0b3Igc2hvdWxkIGJlIHNwZWNpZmllZC5cbiIpOwor ICAgICAgICByYyA9IEVSUk9SX0ZBSUw7IGdvdG8gb3V0OworICAgIH0KKworICAgIGlmIChkcnly dW5fb25seSkgeworICAgICAgICBjaGFyICpqc29uID0gbGlieGxfZGV2aWNlX3ZkaXNwbF90b19q c29uKGN0eCwgJnZkaXNwbCk7CisgICAgICAgIHByaW50ZigidmRpc3BsOiAlc1xuIiwganNvbik7 CisgICAgICAgIGZyZWUoanNvbik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlm IChsaWJ4bF9kZXZpY2VfdmRpc3BsX2FkZChjdHgsIGRvbWlkLCAmdmRpc3BsLCAwKSkgeworICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX2RldmljZV92ZGlzcGxfYWRkIGZhaWxlZC5cbiIp OworICAgICAgICByYyA9IEVSUk9SX0ZBSUw7IGdvdG8gb3V0OworICAgIH0KKworICAgIHJjID0g MDsKKworb3V0OgorICAgIGxpYnhsX2RldmljZV92ZGlzcGxfZGlzcG9zZSgmdmRpc3BsKTsKKyAg ICByZXR1cm4gcmM7Cit9CisKK2ludCBtYWluX3ZkaXNwbGxpc3QoaW50IGFyZ2MsIGNoYXIgKiph cmd2KQoreworICAgaW50IG9wdDsKKyAgIGludCBpLCBqLCBuOworICAgbGlieGxfZGV2aWNlX3Zk aXNwbCAqdmRpc3BsczsKKyAgIGxpYnhsX3ZkaXNwbGluZm8gdmRpc3BsaW5mbzsKKworICAgU1dJ VENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJ2ZGlzcGwtbGlzdCIsIDEpIHsKKyAgICAg ICAvKiBObyBvcHRpb25zICovCisgICB9CisKKyAgIGZvciAoYXJndiArPSBvcHRpbmQsIGFyZ2Mg LT0gb3B0aW5kOyBhcmdjID4gMDsgLS1hcmdjLCArK2FyZ3YpIHsKKyAgICAgICB1aW50MzJfdCBk b21pZDsKKworICAgICAgIGlmIChsaWJ4bF9kb21haW5fcXVhbGlmaWVyX3RvX2RvbWlkKGN0eCwg KmFyZ3YsICZkb21pZCkgPCAwKSB7CisgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgaXMg YW4gaW52YWxpZCBkb21haW4gaWRlbnRpZmllclxuIiwgKmFyZ3YpOworICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICB9CisKKyAgICAgICB2ZGlzcGxzID0gbGlieGxfZGV2aWNlX3ZkaXNwbF9s aXN0KGN0eCwgZG9taWQsICZuKTsKKworICAgICAgIGlmICghdmRpc3BscykgeworICAgICAgICAg ICBjb250aW51ZTsKKyAgICAgICB9CisKKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7 CisgICAgICAgICAgIGxpYnhsX3ZkaXNwbGluZm9faW5pdCgmdmRpc3BsaW5mbyk7CisgICAgICAg ICAgIGlmIChsaWJ4bF9kZXZpY2VfdmRpc3BsX2dldGluZm8oY3R4LCBkb21pZCwgJnZkaXNwbHNb aV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZkaXNwbGlu Zm8pID09IDApIHsKKyAgICAgICAgICAgICAgIHByaW50ZigiRGV2SWQ6ICVkLCBCRTogJWQsIGhh bmRsZTogJWQsIHN0YXRlOiAlZCwgIgorICAgICAgICAgICAgICAgICAgICAgICJiZS1hbGxvYzog JWQsIEJFLXBhdGg6ICVzLCBGRS1wYXRoOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg dmRpc3BsaW5mby5kZXZpZCwgdmRpc3BsaW5mby5iYWNrZW5kX2lkLAorICAgICAgICAgICAgICAg ICAgICAgICB2ZGlzcGxpbmZvLmZyb250ZW5kX2lkLAorICAgICAgICAgICAgICAgICAgICAgICB2 ZGlzcGxpbmZvLnN0YXRlLCB2ZGlzcGxpbmZvLmJlX2FsbG9jLAorICAgICAgICAgICAgICAgICAg ICAgICB2ZGlzcGxpbmZvLmJhY2tlbmQsIHZkaXNwbGluZm8uZnJvbnRlbmQpOworCisgICAgICAg ICAgICAgICBmb3IgKGogPSAwOyBqIDwgdmRpc3BsaW5mby5udW1fY29ubmVjdG9yczsgaisrKSB7 CisgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcdENvbm5lY3RvcjogJWQsIGlkOiAlcywgd2lk dGg6ICVkLCBoZWlnaHQ6ICVkLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXEtcnJl ZjogJWQsIHJlcS1ldnRjaDogJWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImV2dC1y cmVmOiAlZCwgZXZ0LWV2dGNoOiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaiwg dmRpc3BsaW5mby5jb25uZWN0b3JzW2pdLmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2 ZGlzcGxpbmZvLmNvbm5lY3RvcnNbal0ud2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg IHZkaXNwbGluZm8uY29ubmVjdG9yc1tqXS5oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHZkaXNwbGluZm8uY29ubmVjdG9yc1tqXS5yZXFfcnJlZiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgdmRpc3BsaW5mby5jb25uZWN0b3JzW2pdLnJlcV9ldnRjaCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgdmRpc3BsaW5mby5jb25uZWN0b3JzW2pdLmV2dF9ycmVmLAorICAgICAg ICAgICAgICAgICAgICAgICAgICB2ZGlzcGxpbmZvLmNvbm5lY3RvcnNbal0uZXZ0X2V2dGNoKTsK KyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfQorICAgICAgICAgICBsaWJ4bF92ZGlzcGxp bmZvX2Rpc3Bvc2UoJnZkaXNwbGluZm8pOworICAgICAgIH0KKworICAgICAgIGxpYnhsX2Rldmlj ZV92ZGlzcGxfbGlzdF9mcmVlKHZkaXNwbHMsIG4pOworICAgfQorICAgcmV0dXJuIDA7Cit9CisK K2ludCBtYWluX3ZkaXNwbGRldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgdWlu dDMyX3QgZG9taWQsIGRldmlkOworICAgIGludCBvcHQsIHJjOworICAgIGxpYnhsX2RldmljZV92 ZGlzcGwgdmRpc3BsOworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJ2 ZGlzcGwtZGV0YWNoIiwgMikgeworICAgICAgICAvKiBObyBvcHRpb25zICovCisgICAgfQorCisg ICAgZG9taWQgPSBmaW5kX2RvbWFpbihhcmd2W29wdGluZCsrXSk7CisgICAgZGV2aWQgPSBhdG9p KGFyZ3Zbb3B0aW5kKytdKTsKKworICAgIGxpYnhsX2RldmljZV92ZGlzcGxfaW5pdCgmdmRpc3Bs KTsKKworICAgIGlmIChsaWJ4bF9kZXZpZF90b19kZXZpY2VfdmRpc3BsKGN0eCwgZG9taWQsIGRl dmlkLCAmdmRpc3BsKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiBEZXZpY2Ug JWQgbm90IGNvbm5lY3RlZC5cbiIsIGRldmlkKTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwor ICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICByYyA9IGxpYnhsX2RldmljZV92ZGlzcGxf cmVtb3ZlKGN0eCwgZG9taWQsICZ2ZGlzcGwsIDApOworICAgIGlmIChyYykgeworICAgICAgICBm cHJpbnRmKHN0ZGVyciwgImxpYnhsX2RldmljZV92ZGlzcGxfcmVtb3ZlIGZhaWxlZC5cbiIpOwor ICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAg IHJjID0gMDsKKworb3V0OgorICAgIGxpYnhsX2RldmljZV92ZGlzcGxfZGlzcG9zZSgmdmRpc3Bs KTsKKyAgICByZXR1cm4gcmM7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2Rl OiBDCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBF bmQ6CisgKi8KLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==