From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Grytsov Subject: [PATCH v4 04/13] xl: add PV display device commands Date: Tue, 18 Jul 2017 17:25:21 +0300 Message-ID: <1500387930-16317-5-git-send-email-al1img@gmail.com> References: <1500387930-16317-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 1dXTRa-0002WX-Sf for xen-devel@lists.xenproject.org; Tue, 18 Jul 2017 14:25:47 +0000 Received: by mail-lf0-f65.google.com with SMTP id z78so1998083lff.2 for ; Tue, 18 Jul 2017 07:25:44 -0700 (PDT) In-Reply-To: <1500387930-16317-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 IGNvbW1hbmRzOiB2ZGlzcGwtYXR0YWNoLCB2ZGlzcGwtbGlzdCwgdmRpc3BsLWRldGFjaAphbmQg ZG9tYWluIGNvbmZpZyB2ZGlzcGwgcGFyc2VyCgpTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgR3J5 dHNvdiA8b2xla3NhbmRyX2dyeXRzb3ZAZXBhbS5jb20+Ci0tLQogdG9vbHMveGwvTWFrZWZpbGUg ICAgICB8ICAgMSArCiB0b29scy94bC94bC5oICAgICAgICAgIHwgICAzICsKIHRvb2xzL3hsL3hs X2NtZHRhYmxlLmMgfCAgMTkgKysrKysrCiB0b29scy94bC94bF9wYXJzZS5jICAgIHwgIDc1ICsr KysrKysrKysrKysrKysrKysrKystCiB0b29scy94bC94bF9wYXJzZS5oICAgIHwgICAyICstCiB0 b29scy94bC94bF92ZGlzcGwuYyAgIHwgMTYzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMjYxIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMveGwveGxfdmRpc3BsLmMK CmRpZmYgLS1naXQgYS90b29scy94bC9NYWtlZmlsZSBiL3Rvb2xzL3hsL01ha2VmaWxlCmluZGV4 IGUxNmY4NzcuLjVjNzg0YjUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL01ha2VmaWxlCisrKyBiL3Rv b2xzL3hsL01ha2VmaWxlCkBAIC0yMSw2ICsyMSw3IEBAIFhMX09CSlMgKz0geGxfdnRwbS5vIHhs X2Jsb2NrLm8geGxfbmljLm8geGxfdXNiLm8KIFhMX09CSlMgKz0geGxfc2NoZWQubyB4bF9wY2ku byB4bF92Y3B1Lm8geGxfY2Ryb20ubyB4bF9tZW0ubwogWExfT0JKUyArPSB4bF9wc3IubyB4bF9p bmZvLm8geGxfY29uc29sZS5vIHhsX21pc2MubwogWExfT0JKUyArPSB4bF92bWNvbnRyb2wubyB4 bF9zYXZlcmVzdG9yZS5vIHhsX21pZ3JhdGUubworWExfT0JKUyArPSB4bF92ZGlzcGwubwogCiAk KFhMX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVudG9vbGxvZykKICQoWExfT0JKUyk6 IENGTEFHUyArPSAkKENGTEFHU19YTCkKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsLmggYi90b29s cy94bC94bC5oCmluZGV4IGFhOTViNzcuLmQzNjEyNDEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hs LmgKKysrIGIvdG9vbHMveGwveGwuaApAQCAtMTY2LDYgKzE2Niw5IEBAIGludCBtYWluX2Jsb2Nr ZGV0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl92dHBtYXR0YWNoKGludCBh cmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl92dHBtbGlzdChpbnQgYXJnYywgY2hhciAqKmFy Z3YpOwogaW50IG1haW5fdnRwbWRldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworaW50IG1h aW5fdmRpc3BsYXR0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CitpbnQgbWFpbl92ZGlzcGxs aXN0KGludCBhcmdjLCBjaGFyICoqYXJndik7CitpbnQgbWFpbl92ZGlzcGxkZXRhY2goaW50IGFy Z2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3VzYmN0cmxfYXR0YWNoKGludCBhcmdjLCBjaGFy ICoqYXJndik7CiBpbnQgbWFpbl91c2JjdHJsX2RldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3Yp OwogaW50IG1haW5fdXNiZGV2X2F0dGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwpkaWZmIC0t Z2l0IGEvdG9vbHMveGwveGxfY21kdGFibGUuYyBiL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKaW5k ZXggMzBlYjkzYy4uNWFlMjQ3NyAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGxfY21kdGFibGUuYwor KysgYi90b29scy94bC94bF9jbWR0YWJsZS5jCkBAIC0zNzIsNiArMzcyLDI1IEBAIHN0cnVjdCBj bWRfc3BlYyBjbWRfdGFibGVbXSA9IHsKICAgICAgICJEZXN0cm95IGEgZG9tYWluJ3MgdmlydHVh bCBUUE0gZGV2aWNlIiwKICAgICAgICI8RG9tYWluPiA8RGV2SWR8dXVpZD4iLAogICAgIH0sCisg ICAgeyAidmRpc3BsLWF0dGFjaCIsCisgICAgICAmbWFpbl92ZGlzcGxhdHRhY2gsIDEsIDEsCisg ICAgICAiQ3JlYXRlIGEgbmV3IHZpcnR1YWwgZGlzcGxheSBkZXZpY2UiLAorICAgICAgIjxEb21h aW4+IFtiYWNrZW5kPTxCYWNrRG9tYWluPl0gW2JlLWFsbG9jPTxCYWNrQWxsb2M+XSBbY29ubmVj dG9ycz0nPENvbm5lY3RvcnM+J10iLAorICAgICAgIiAgICBCYWNrQWxsb2MgIC0gc2V0IHRvIDEg dG8gaWYgYmFja2VuZCBhbGxvY2F0ZXMgZGlzcGxheSBidWZmZXJzXG4iCisgICAgICAiICAgIENv bm5lY3RvcnMgLSBsaXN0IG9mIGNvbm5lY3RvcidzIGRlc2NyaXB0aW9uIGluIElEOld4SCBmb3Jt YXQsXG4iCisgICAgICAiICAgICAgICAgICAgICAgICB3aGVyZTogSUQgLSB1bmlxdWUgY29ubmVj dG9yIElELCBXIC0gY29ubmVjdG9yIHdpZHRoLFxuIgorICAgICAgIiAgICAgICAgICAgICAgICAg SCAtIGNvbm5lY3RvciBoZWlnaHQ6IGNvbm5lY3RvcnM9J2lkMDo4MDB4NjAwO2lkMToxMDI0eDc2 OCdcbiIKKyAgICB9LAorICAgIHsgInZkaXNwbC1saXN0IiwKKyAgICAgICZtYWluX3ZkaXNwbGxp c3QsIDAsIDAsCisgICAgICAiTGlzdCB2aXJ0dWFsIGRpc3BsYXkgZGV2aWNlcyBmb3IgYSBkb21h aW4iLAorICAgICAgIjxEb21haW4ocyk+IiwKKyAgICB9LAorICAgIHsgInZkaXNwbC1kZXRhY2gi LAorICAgICAgJm1haW5fdmRpc3BsZGV0YWNoLCAwLCAxLAorICAgICAgIkRlc3Ryb3kgYSBkb21h aW4ncyB2aXJ0dWFsIGRpc3BsYXkgZGV2aWNlIiwKKyAgICAgICI8RG9tYWluPiA8RGV2SWQ+IiwK KyAgICB9LAogICAgIHsgInVwdGltZSIsCiAgICAgICAmbWFpbl91cHRpbWUsIDAsIDAsCiAgICAg ICAiUHJpbnQgdXB0aW1lIGZvciBhbGwvc29tZSBkb21haW5zIiwKZGlmZiAtLWdpdCBhL3Rvb2xz L3hsL3hsX3BhcnNlLmMgYi90b29scy94bC94bF9wYXJzZS5jCmluZGV4IDg1NmEzMDQuLjIxNDA5 MDUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX3BhcnNlLmMKKysrIGIvdG9vbHMveGwveGxfcGFy c2UuYwpAQCAtODAzLDYgKzgwMyw1MSBAQCBpbnQgcGFyc2VfdXNiZGV2X2NvbmZpZyhsaWJ4bF9k ZXZpY2VfdXNiZGV2ICp1c2JkZXYsIGNoYXIgKnRva2VuKQogICAgIHJldHVybiAwOwogfQogCitp bnQgcGFyc2VfdmRpc3BsX2NvbmZpZyhsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGwsIGNoYXIg KnRva2VuKQoreworICAgIGNoYXIgKm9wYXJnOworICAgIGxpYnhsX3N0cmluZ19saXN0IGNvbm5l Y3RvcnMgPSBOVUxMOworICAgIGludCBpOworICAgIGludCByYzsKKworICAgIGlmIChNQVRDSF9P UFRJT04oImJhY2tlbmQiLCB0b2tlbiwgb3BhcmcpKSB7CisgICAgICAgIHZkaXNwbC0+YmFja2Vu ZF9kb21uYW1lID0gc3RyZHVwKG9wYXJnKTsKKyAgICB9IGVsc2UgaWYgKE1BVENIX09QVElPTigi YmUtYWxsb2MiLCB0b2tlbiwgb3BhcmcpKSB7CisgICAgICAgIHZkaXNwbC0+YmVfYWxsb2MgPSBz dHJ0b3VsKG9wYXJnLCBOVUxMLCAwKTsKKyAgICB9IGVsc2UgaWYgKE1BVENIX09QVElPTigiY29u bmVjdG9ycyIsIHRva2VuLCBvcGFyZykpIHsKKyAgICAgICAgc3BsaXRfc3RyaW5nX2ludG9fc3Ry aW5nX2xpc3Qob3BhcmcsICI7IiwgJmNvbm5lY3RvcnMpOworCisgICAgICAgIHZkaXNwbC0+bnVt X2Nvbm5lY3RvcnMgPSBsaWJ4bF9zdHJpbmdfbGlzdF9sZW5ndGgoJmNvbm5lY3RvcnMpOworICAg ICAgICB2ZGlzcGwtPmNvbm5lY3RvcnMgPSBjYWxsb2ModmRpc3BsLT5udW1fY29ubmVjdG9ycywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigqdmRpc3BsLT5jb25u ZWN0b3JzKSk7CisKKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgdmRpc3BsLT5udW1fY29ubmVjdG9y czsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjaGFyICpyZXNvbHV0aW9uOworCisgICAg ICAgICAgICByYyA9IHNwbGl0X3N0cmluZ19pbnRvX3BhaXIoY29ubmVjdG9yc1tpXSwgIjoiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2ZGlzcGwtPmNvbm5lY3Rv cnNbaV0uaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc29s dXRpb24pOworCisgICAgICAgICAgICByYz0gc3NjYW5mKHJlc29sdXRpb24sICIldXgldSIsICZ2 ZGlzcGwtPmNvbm5lY3RvcnNbaV0ud2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICZ2ZGlz cGwtPmNvbm5lY3RvcnNbaV0uaGVpZ2h0KTsKKyAgICAgICAgICAgIGlmIChyYyAhPSAyKSB7Cisg ICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW4ndCBwYXJzZSBjb25uZWN0b3IgcmVz b2x1dGlvblxuIik7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICB9Cisg ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVua25vd24g c3RyaW5nIFwiJXNcIiBpbiB2ZGlzcGwgc3BlY1xuIiwgdG9rZW4pOworICAgICAgICByYyA9IDE7 IGdvdG8gb3V0OworICAgIH0KKworICAgIHJjID0gMDsKKworb3V0OgorICAgIGxpYnhsX3N0cmlu Z19saXN0X2Rpc3Bvc2UoJmNvbm5lY3RvcnMpOworICAgIHJldHVybiByYzsKK30KKwogdm9pZCBw YXJzZV9jb25maWdfZGF0YShjb25zdCBjaGFyICpjb25maWdfc291cmNlLAogICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICpjb25maWdfZGF0YSwKICAgICAgICAgICAgICAgICAgICAg ICAgaW50IGNvbmZpZ19sZW4sCkBAIC04MTIsNyArODU3LDcgQEAgdm9pZCBwYXJzZV9jb25maWdf ZGF0YShjb25zdCBjaGFyICpjb25maWdfc291cmNlLAogICAgIGxvbmcgbCwgdmNwdXMgPSAwOwog ICAgIFhMVV9Db25maWcgKmNvbmZpZzsKICAgICBYTFVfQ29uZmlnTGlzdCAqY3B1cywgKnZiZHMs ICpuaWNzLCAqcGNpcywgKmN2ZmJzLCAqY3B1aWRzLCAqdnRwbXMsCi0gICAgICAgICAgICAgICAg ICAgKnVzYmN0cmxzLCAqdXNiZGV2cywgKnA5ZGV2czsKKyAgICAgICAgICAgICAgICAgICAqdXNi Y3RybHMsICp1c2JkZXZzLCAqcDlkZXZzLCAqdmRpc3BsczsKICAgICBYTFVfQ29uZmlnTGlzdCAq Y2hhbm5lbHMsICppb3BvcnRzLCAqaXJxcywgKmlvbWVtLCAqdmlyaWRpYW4sICpkdGRldnM7CiAg ICAgaW50IG51bV9pb3BvcnRzLCBudW1faXJxcywgbnVtX2lvbWVtLCBudW1fY3B1cywgbnVtX3Zp cmlkaWFuOwogICAgIGludCBwY2lfcG93ZXJfbWdtdCA9IDA7CkBAIC0xNDYyLDYgKzE1MDcsMzQg QEAgdm9pZCBwYXJzZV9jb25maWdfZGF0YShjb25zdCBjaGFyICpjb25maWdfc291cmNlLAogICAg ICAgICB9CiAgICAgfQogCisgICAgaWYgKCF4bHVfY2ZnX2dldF9saXN0KGNvbmZpZywgInZkaXNw bCIsICZ2ZGlzcGxzLCAwLCAwKSkgeworICAgICAgICBkX2NvbmZpZy0+bnVtX3ZkaXNwbHMgPSAw OworICAgICAgICBkX2NvbmZpZy0+dmRpc3BscyA9IE5VTEw7CisgICAgICAgIHdoaWxlICgoYnVm ID0geGx1X2NmZ19nZXRfbGlzdGl0ZW0odmRpc3BscywgZF9jb25maWctPm51bV92ZGlzcGxzKSkg IT0gTlVMTCkgeworICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZkaXNwbCAqdmRpc3BsOworICAg ICAgICAgICAgY2hhciAqIGJ1ZjIgPSBzdHJkdXAoYnVmKTsKKyAgICAgICAgICAgIGNoYXIgKnA7 CisgICAgICAgICAgICB2ZGlzcGwgPSBBUlJBWV9FWFRFTkRfSU5JVChkX2NvbmZpZy0+dmRpc3Bs cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRfY29uZmlnLT5udW1f dmRpc3BscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2Rl dmljZV92ZGlzcGxfaW5pdCk7CisgICAgICAgICAgICBwID0gc3RydG9rIChidWYyLCAiLCIpOwor ICAgICAgICAgICAgd2hpbGUgKHAgIT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICB3aGlsZSAoKnAgPT0gJyAnKSBwKys7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlX3Zk aXNwbF9jb25maWcodmRpc3BsLCBwKSkgeworICAgICAgICAgICAgICAgICAgICBmcmVlKGJ1ZjIp OworICAgICAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICBwID0gc3RydG9rIChOVUxMLCAiLCIpOworICAgICAgICAgICAgfQorICAgICAg ICAgICAgZnJlZShidWYyKTsKKyAgICAgICAgICAgIGlmICh2ZGlzcGwtPm51bV9jb25uZWN0b3Jz ID09IDApIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkF0IGxlYXN0IG9uZSBj b25uZWN0b3Igc2hvdWxkIGJlIHNwZWNpZmllZC5cbiIpOworICAgICAgICAgICAgICAgIGV4aXQo MSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAoIXhsdV9jZmdf Z2V0X2xpc3QgKGNvbmZpZywgImNoYW5uZWwiLCAmY2hhbm5lbHMsIDAsIDApKSB7CiAgICAgICAg IGRfY29uZmlnLT5udW1fY2hhbm5lbHMgPSAwOwogICAgICAgICBkX2NvbmZpZy0+Y2hhbm5lbHMg PSBOVUxMOwpkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfcGFyc2UuaCBiL3Rvb2xzL3hsL3hsX3Bh cnNlLmgKaW5kZXggZGI4YmMzZi4uY2M0NTlmYiAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGxfcGFy c2UuaAorKysgYi90b29scy94bC94bF9wYXJzZS5oCkBAIC0zMyw3ICszMyw3IEBAIGludCBwYXJz ZV91c2JjdHJsX2NvbmZpZyhsaWJ4bF9kZXZpY2VfdXNiY3RybCAqdXNiY3RybCwgY2hhciAqdG9r ZW4pOwogaW50IHBhcnNlX3VzYmRldl9jb25maWcobGlieGxfZGV2aWNlX3VzYmRldiAqdXNiZGV2 LCBjaGFyICp0b2tlbik7CiBpbnQgcGFyc2VfY3B1cmFuZ2UoY29uc3QgY2hhciAqY3B1LCBsaWJ4 bF9iaXRtYXAgKmNwdW1hcCk7CiBpbnQgcGFyc2VfbmljX2NvbmZpZyhsaWJ4bF9kZXZpY2Vfbmlj ICpuaWMsIFhMVV9Db25maWcgKipjb25maWcsIGNoYXIgKnRva2VuKTsKLQoraW50IHBhcnNlX3Zk aXNwbF9jb25maWcobGlieGxfZGV2aWNlX3ZkaXNwbCAqdmRpc3BsLCBjaGFyICp0b2tlbik7CiAK IGludCBtYXRjaF9vcHRpb25fc2l6ZShjb25zdCBjaGFyICpwcmVmaXgsIHNpemVfdCBsZW4sCiAg ICAgICAgICAgICAgICAgICAgICAgY2hhciAqYXJnLCBjaGFyICoqYXJnb3B0KTsKZGlmZiAtLWdp dCBhL3Rvb2xzL3hsL3hsX3ZkaXNwbC5jIGIvdG9vbHMveGwveGxfdmRpc3BsLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NjOTliNgotLS0gL2Rldi9udWxsCisrKyBiL3Rv b2xzL3hsL3hsX3ZkaXNwbC5jCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChD KSAyMDE2IEVQQU0gU3lzdGVtcyBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZAorICogYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyLjEg b25seS4gd2l0aCB0aGUgc3BlY2lhbAorICogZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVk IGluIGZpbGUgTElDRU5TRS4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLwor CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlIDxsaWJ4bC5oPgorI2luY2x1ZGUgPGxp YnhsX3V0aWxzLmg+CisjaW5jbHVkZSA8bGlieGx1dGlsLmg+CisKKyNpbmNsdWRlICJ4bC5oIgor I2luY2x1ZGUgInhsX3V0aWxzLmgiCisjaW5jbHVkZSAieGxfcGFyc2UuaCIKKworaW50IG1haW5f dmRpc3BsYXR0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBpbnQgb3B0OworICAg IGludCByYzsKKyAgICB1aW50MzJfdCBkb21pZDsKKyAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsIHZk aXNwbDsKKworICAgIFNXSVRDSF9GT1JFQUNIX09QVChvcHQsICIiLCBOVUxMLCAidmRpc3BsLWF0 dGFjaCIsIDEpIHsKKyAgICAgICAgLyogTm8gb3B0aW9ucyAqLworICAgIH0KKworICAgIGxpYnhs X2RldmljZV92ZGlzcGxfaW5pdCgmdmRpc3BsKTsKKyAgICBkb21pZCA9IGZpbmRfZG9tYWluKGFy Z3Zbb3B0aW5kKytdKTsKKworICAgIGZvciAoYXJndiArPSBvcHRpbmQsIGFyZ2MgLT0gb3B0aW5k OyBhcmdjID4gMDsgKythcmd2LCAtLWFyZ2MpIHsKKyAgICAgICAgcmMgPSBwYXJzZV92ZGlzcGxf Y29uZmlnKCZ2ZGlzcGwsICphcmd2KTsKKyAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsKKyAgICB9 CisKKyAgICBpZiAodmRpc3BsLm51bV9jb25uZWN0b3JzID09IDApIHsKKyAgICAgICAgZnByaW50 ZihzdGRlcnIsICJBdCBsZWFzdCBvbmUgY29ubmVjdG9yIHNob3VsZCBiZSBzcGVjaWZpZWQuXG4i KTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOyBnb3RvIG91dDsKKyAgICB9CisKKyAgICBpZiAo ZHJ5cnVuX29ubHkpIHsKKyAgICAgICAgY2hhciAqanNvbiA9IGxpYnhsX2RldmljZV92ZGlzcGxf dG9fanNvbihjdHgsICZ2ZGlzcGwpOworICAgICAgICBwcmludGYoInZkaXNwbDogJXNcbiIsIGpz b24pOworICAgICAgICBmcmVlKGpzb24pOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAg ICBpZiAobGlieGxfZGV2aWNlX3ZkaXNwbF9hZGQoY3R4LCBkb21pZCwgJnZkaXNwbCwgMCkpIHsK KyAgICAgICAgZnByaW50ZihzdGRlcnIsICJsaWJ4bF9kZXZpY2VfdmRpc3BsX2FkZCBmYWlsZWQu XG4iKTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOyBnb3RvIG91dDsKKyAgICB9CisKKyAgICBy YyA9IDA7CisKK291dDoKKyAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsX2Rpc3Bvc2UoJnZkaXNwbCk7 CisgICAgcmV0dXJuIHJjOworfQorCitpbnQgbWFpbl92ZGlzcGxsaXN0KGludCBhcmdjLCBjaGFy ICoqYXJndikKK3sKKyAgIGludCBvcHQ7CisgICBpbnQgaSwgaiwgbjsKKyAgIGxpYnhsX2Rldmlj ZV92ZGlzcGwgKnZkaXNwbHM7CisgICBsaWJ4bF92ZGlzcGxpbmZvIHZkaXNwbGluZm87CisKKyAg IFNXSVRDSF9GT1JFQUNIX09QVChvcHQsICIiLCBOVUxMLCAidmRpc3BsLWxpc3QiLCAxKSB7Cisg ICAgICAgLyogTm8gb3B0aW9ucyAqLworICAgfQorCisgICBmb3IgKGFyZ3YgKz0gb3B0aW5kLCBh cmdjIC09IG9wdGluZDsgYXJnYyA+IDA7IC0tYXJnYywgKythcmd2KSB7CisgICAgICAgdWludDMy X3QgZG9taWQ7CisKKyAgICAgICBpZiAobGlieGxfZG9tYWluX3F1YWxpZmllcl90b19kb21pZChj dHgsICphcmd2LCAmZG9taWQpIDwgMCkgeworICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVz IGlzIGFuIGludmFsaWQgZG9tYWluIGlkZW50aWZpZXJcbiIsICphcmd2KTsKKyAgICAgICAgICAg Y29udGludWU7CisgICAgICAgfQorCisgICAgICAgdmRpc3BscyA9IGxpYnhsX2RldmljZV92ZGlz cGxfbGlzdChjdHgsIGRvbWlkLCAmbik7CisKKyAgICAgICBpZiAoIXZkaXNwbHMpIGNvbnRpbnVl OworCisgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICBsaWJ4bF92 ZGlzcGxpbmZvX2luaXQoJnZkaXNwbGluZm8pOworICAgICAgICAgICBpZiAobGlieGxfZGV2aWNl X3ZkaXNwbF9nZXRpbmZvKGN0eCwgZG9taWQsICZ2ZGlzcGxzW2ldLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2ZGlzcGxpbmZvKSA9PSAwKSB7CisgICAgICAg ICAgICAgICBwcmludGYoIkRldklkOiAlZCwgQkU6ICVkLCBoYW5kbGU6ICVkLCBzdGF0ZTogJWQs ICIKKyAgICAgICAgICAgICAgICAgICAgICAiYmUtYWxsb2M6ICVkLCBCRS1wYXRoOiAlcywgRkUt cGF0aDogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIHZkaXNwbGluZm8uZGV2aWQsIHZk aXNwbGluZm8uYmFja2VuZF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgdmRpc3BsaW5mby5m cm9udGVuZF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgdmRpc3BsaW5mby5zdGF0ZSwgdmRp c3BsaW5mby5iZV9hbGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgdmRpc3BsaW5mby5iYWNr ZW5kLCB2ZGlzcGxpbmZvLmZyb250ZW5kKTsKKworICAgICAgICAgICAgICAgZm9yIChqID0gMDsg aiA8IHZkaXNwbGluZm8ubnVtX2Nvbm5lY3RvcnM7IGorKykgeworICAgICAgICAgICAgICAgICAg IHByaW50ZigiXHRDb25uZWN0b3I6ICVkLCBpZDogJXMsIHdpZHRoOiAlZCwgaGVpZ2h0OiAlZCwg IgorICAgICAgICAgICAgICAgICAgICAgICAgICAicmVxLXJyZWY6ICVkLCByZXEtZXZ0Y2g6ICVk LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJldnQtcnJlZjogJWQsIGV2dC1ldnRjaDog JWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGosIHZkaXNwbGluZm8uY29ubmVjdG9y c1tqXS5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdmRpc3BsaW5mby5jb25uZWN0b3Jz W2pdLndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2ZGlzcGxpbmZvLmNvbm5lY3Rv cnNbal0uaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICB2ZGlzcGxpbmZvLmNvbm5l Y3RvcnNbal0ucmVxX3JyZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZkaXNwbGluZm8u Y29ubmVjdG9yc1tqXS5yZXFfZXZ0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZkaXNw bGluZm8uY29ubmVjdG9yc1tqXS5ldnRfcnJlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg dmRpc3BsaW5mby5jb25uZWN0b3JzW2pdLmV2dF9ldnRjaCk7CisgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgIH0KKyAgICAgICAgICAgbGlieGxfdmRpc3BsaW5mb19kaXNwb3NlKCZ2ZGlzcGxp bmZvKTsKKyAgICAgICB9CisgICAgICAgbGlieGxfZGV2aWNlX3ZkaXNwbF9saXN0X2ZyZWUodmRp c3Bscywgbik7CisgICB9CisgICByZXR1cm4gMDsKK30KKworaW50IG1haW5fdmRpc3BsZGV0YWNo KGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICB1aW50MzJfdCBkb21pZCwgZGV2aWQ7Cisg ICAgaW50IG9wdCwgcmM7CisgICAgbGlieGxfZGV2aWNlX3ZkaXNwbCB2ZGlzcGw7CisKKyAgICBT V0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiIiwgTlVMTCwgInZkaXNwbC1kZXRhY2giLCAyKSB7Cisg ICAgICAgIC8qIE5vIG9wdGlvbnMgKi8KKyAgICB9CisKKyAgICBkb21pZCA9IGZpbmRfZG9tYWlu KGFyZ3Zbb3B0aW5kKytdKTsKKyAgICBkZXZpZCA9IGF0b2koYXJndltvcHRpbmQrK10pOworCisg ICAgbGlieGxfZGV2aWNlX3ZkaXNwbF9pbml0KCZ2ZGlzcGwpOworCisgICAgaWYgKGxpYnhsX2Rl dmlkX3RvX2RldmljZV92ZGlzcGwoY3R4LCBkb21pZCwgZGV2aWQsICZ2ZGlzcGwpKSB7CisgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3I6IERldmljZSAlZCBub3QgY29ubmVjdGVkLlxuIiwg ZGV2aWQpOworICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CisgICAgICAgIGdvdG8gb3V0OworICAg IH0KKworICAgIHJjID0gbGlieGxfZGV2aWNlX3ZkaXNwbF9yZW1vdmUoY3R4LCBkb21pZCwgJnZk aXNwbCwgMCk7CisgICAgaWYgKHJjKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxf ZGV2aWNlX3ZkaXNwbF9yZW1vdmUgZmFpbGVkLlxuIik7CisgICAgICAgIHJjID0gRVJST1JfRkFJ TDsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgcmMgPSAwOworCitvdXQ6CisgICAg bGlieGxfZGV2aWNlX3ZkaXNwbF9kaXNwb3NlKCZ2ZGlzcGwpOworICAgIHJldHVybiByYzsKK30K KworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtYmFzaWMtb2Zmc2V0 OiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwotLSAKMi43LjQKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK