From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Grytsov Subject: [PATCH v2 2/5] libxl: add vsnd list and info Date: Fri, 18 May 2018 17:38:27 +0300 Message-ID: <20180518143830.4910-3-al1img@gmail.com> References: <20180518143830.4910-1-al1img@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fJgWr-0001YG-18 for xen-devel@lists.xenproject.org; Fri, 18 May 2018 14:38:45 +0000 Received: by mail-lf0-x242.google.com with SMTP id j193-v6so14301758lfg.6 for ; Fri, 18 May 2018 07:38:43 -0700 (PDT) In-Reply-To: <20180518143830.4910-1-al1img@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.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 IGdldHRpbmcgdnNuZCBsaXN0IGFtZCBpbmZvIEFQSQoKU2lnbmVkLW9mZi1ieTogT2xla3NhbmRy IEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29tPgotLS0KIHRvb2xzL2xpYnhsL2xp YnhsLmggICAgICAgICB8ICAxMCArCiB0b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgfCAgMTkg KysKIHRvb2xzL2xpYnhsL2xpYnhsX3V0aWxzLmggICB8ICAgMyArCiB0b29scy9saWJ4bC9saWJ4 bF92c25kLmMgICAgfCAzNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiA0 IGZpbGVzIGNoYW5nZWQsIDQwMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsLmggYi90b29scy9saWJ4bC9saWJ4bC5oCmluZGV4IGEz MTIxNjZiNDguLmJmYzc4ODU5NGMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsLmgKKysr IGIvdG9vbHMvbGlieGwvbGlieGwuaApAQCAtMjAxNCw2ICsyMDE0LDE2IEBAIGludCBsaWJ4bF9k ZXZpY2VfdnNuZF9kZXN0cm95KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2FzeW5jb3BfaG93ICphb19ob3cp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9DQUxMRVJTX09O TFk7CiAKK2xpYnhsX2RldmljZV92c25kICpsaWJ4bF9kZXZpY2VfdnNuZF9saXN0KGxpYnhsX2N0 eCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgZG9taWQsIGludCAqbnVtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTElCWExfRVhURVJOQUxfQ0FMTEVSU19PTkxZOwordm9pZCBsaWJ4bF9kZXZpY2VfdnNu ZF9saXN0X2ZyZWUobGlieGxfZGV2aWNlX3ZzbmQqIGxpc3QsIGludCBudW0pCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9DQUxMRVJTX09OTFk7CitpbnQg bGlieGxfZGV2aWNlX3ZzbmRfZ2V0aW5mbyhsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnNuZCAqdnNuZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3ZzbmRpbmZvICp2c25kbGluZm8p CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9DQUxMRVJTX09O TFk7CisKIC8qIEtleWJvYXJkICovCiBpbnQgbGlieGxfZGV2aWNlX3ZrYl9hZGQobGlieGxfY3R4 ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9kZXZpY2VfdmtiICp2a2IsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5bmNvcF9ob3cgKmFvX2hvdykKZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVz LmlkbAppbmRleCBhZDk3OGZiNDEzLi5kOTU5MTI3ZGMyIDEwMDY0NAotLS0gYS90b29scy9saWJ4 bC9saWJ4bF90eXBlcy5pZGwKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCkBAIC0x MDE5LDYgKzEwMTksMjUgQEAgbGlieGxfdmRpc3BsaW5mbyA9IFN0cnVjdCgidmRpc3BsaW5mbyIs IFsKICAgICAoImNvbm5lY3RvcnMiLCBBcnJheShsaWJ4bF9jb25uZWN0b3JpbmZvLCAibnVtX2Nv bm5lY3RvcnMiKSkKICAgICBdLCBkaXI9RElSX09VVCkKIAorbGlieGxfc3RyZWFtaW5mbyA9IFN0 cnVjdCgic3RyZWFtaW5mbyIsIFsKKyAgICAoInJlcV9ldnRjaCIsIGludGVnZXIpLAorICAgICgi cmVxX3JyZWYiLCBpbnRlZ2VyKQorICAgIF0pCisKK2xpYnhsX3BjbWluZm8gPSBTdHJ1Y3QoInBj bWluZm8iLCBbCisgICAgKCJzdHJlYW1zIiwgQXJyYXkobGlieGxfc3RyZWFtaW5mbywgIm51bV92 c25kX3N0cmVhbXMiKSkKKyAgICBdKQorCitsaWJ4bF92c25kaW5mbyA9IFN0cnVjdCgidnNuZGlu Zm8iLCBbCisgICAgKCJiYWNrZW5kIiwgc3RyaW5nKSwKKyAgICAoImJhY2tlbmRfaWQiLCB1aW50 MzIpLAorICAgICgiZnJvbnRlbmQiLCBzdHJpbmcpLAorICAgICgiZnJvbnRlbmRfaWQiLCB1aW50 MzIpLAorICAgICgiZGV2aWQiLCBsaWJ4bF9kZXZpZCksCisgICAgKCJzdGF0ZSIsIGludGVnZXIp LAorICAgICgicGNtcyIsIEFycmF5KGxpYnhsX3BjbWluZm8sICJudW1fdnNuZF9wY21zIikpCisg ICAgXSkKKwogIyBOVU1BIG5vZGUgY2hhcmFjdGVyaXN0aWNzOiBzaXplIGFuZCBmcmVlIGFyZSBo b3cgbXVjaCBtZW1vcnkgaXQgaGFzLCBhbmQgaG93CiAjIG11Y2ggb2YgaXQgaXMgZnJlZSwgcmVz cGVjdGl2ZWx5LiBkaXN0cyBpcyBhbiBhcnJheSBvZiBkaXN0YW5jZXMgZnJvbSB0aGlzCiAjIG5v ZGUgdG8gZWFjaCBvdGhlciBub2RlLgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdXRp bHMuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3V0aWxzLmgKaW5kZXggOWU3NDNkYzU5OC4uNTQ1NTc1 MmM2ZSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdXRpbHMuaAorKysgYi90b29scy9s aWJ4bC9saWJ4bF91dGlscy5oCkBAIC04Miw2ICs4Miw5IEBAIGludCBsaWJ4bF9kZXZpZF90b19k ZXZpY2VfdXNiY3RybChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiBpbnQgbGlieGxf ZGV2aWRfdG9fZGV2aWNlX3ZkaXNwbChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV2aWQsIGxpYnhsX2RldmljZV92 ZGlzcGwgKnZkaXNwbCk7CiAKK2ludCBsaWJ4bF9kZXZpZF90b19kZXZpY2VfdnNuZChsaWJ4bF9j dHggKmN0eCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGRldmlkLCBsaWJ4bF9kZXZpY2VfdnNuZCAqdnNuZCk7CisKIGludCBsaWJ4bF9jdHJscG9y dF90b19kZXZpY2VfdXNiZGV2KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjdHJsLCBpbnQgcG9ydCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV91c2JkZXYgKnVzYmRl dik7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF92c25kLmMgYi90b29scy9saWJ4bC9s aWJ4bF92c25kLmMKaW5kZXggMWUxOTIxNzgxMS4uYjE4OGViMmZiMyAxMDA2NDQKLS0tIGEvdG9v bHMvbGlieGwvbGlieGxfdnNuZC5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3ZzbmQuYwpAQCAt MzcsMjIgKzM3LDI0NyBAQCBzdGF0aWMgaW50IGxpYnhsX19kZXZpY2VfZnJvbV92c25kKGxpYnhs X19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQg bGlieGxfX3NhbXBsZV9yYXRlc19mcm9tX3N0cmluZyhsaWJ4bF9fZ2MgKmdjLCBjb25zdCBjaGFy ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxf dnNuZF9wYXJhbXMgKnBhcmFtcykKK3sKKyAgICBjaGFyICp0bXAgPSBsaWJ4bF9fc3RyZHVwKGdj LCBzdHIpOworCisgICAgcGFyYW1zLT5udW1fc2FtcGxlX3JhdGVzID0gMDsKKyAgICBwYXJhbXMt PnNhbXBsZV9yYXRlcyA9IE5VTEw7CisKKyAgICBjaGFyICpwID0gc3RydG9rKHRtcCwgIiAsIik7 CisKKyAgICB3aGlsZSAocCAhPSBOVUxMKSB7CisgICAgICAgIHBhcmFtcy0+c2FtcGxlX3JhdGVz ID0gbGlieGxfX3JlYWxsb2MoTk9HQywgcGFyYW1zLT5zYW1wbGVfcmF0ZXMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpwYXJhbXMtPnNhbXBs ZV9yYXRlcykgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwYXJhbXMtPm51bV9zYW1wbGVfcmF0ZXMgKyAxKSk7CisgICAgICAgIHBhcmFtcy0+c2FtcGxl X3JhdGVzW3BhcmFtcy0+bnVtX3NhbXBsZV9yYXRlcysrXSA9IHN0cnRvdWwocCwgTlVMTCwgMCk7 CisgICAgICAgIHAgPSBzdHJ0b2soTlVMTCwgIiAsIik7CisgICAgfQorCisgICAgcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgbGlieGxfX3NhbXBsZV9mb3JtYXRzX2Zyb21fc3RyaW5nKGxpYnhs X19nYyAqZ2MsIGNvbnN0IGNoYXIgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpYnhsX3ZzbmRfcGFyYW1zICpwYXJhbXMpCit7CisgICAgaW50IHJj OworICAgIGNoYXIgKnRtcCA9IGxpYnhsX19zdHJkdXAoZ2MsIHN0cik7CisKKyAgICBwYXJhbXMt Pm51bV9zYW1wbGVfZm9ybWF0cyA9IDA7CisgICAgcGFyYW1zLT5zYW1wbGVfZm9ybWF0cyA9IE5V TEw7CisKKyAgICBjaGFyICpwID0gc3RydG9rKHRtcCwgIiAsIik7CisKKyAgICB3aGlsZSAocCAh PSBOVUxMKSB7CisgICAgICAgIHBhcmFtcy0+c2FtcGxlX2Zvcm1hdHMgPSBsaWJ4bF9fcmVhbGxv YyhOT0dDLCBwYXJhbXMtPnNhbXBsZV9mb3JtYXRzLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpwYXJhbXMtPnNhbXBsZV9mb3JtYXRzKSAq CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW1z LT5udW1fc2FtcGxlX2Zvcm1hdHMgKyAxKSk7CisKKyAgICAgICAgbGlieGxfdnNuZF9wY21fZm9y bWF0IGZvcm1hdDsKKworICAgICAgICByYyA9IGxpYnhsX3ZzbmRfcGNtX2Zvcm1hdF9mcm9tX3N0 cmluZyhwLCAmZm9ybWF0KTsKKyAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsKKworICAgICAgICBw YXJhbXMtPnNhbXBsZV9mb3JtYXRzW3BhcmFtcy0+bnVtX3NhbXBsZV9mb3JtYXRzKytdID0gZm9y bWF0OworICAgICAgICBwID0gc3RydG9rKE5VTEwsICIgLCIpOworICAgIH0KKworICAgIHJjID0g MDsKKworb3V0OgorCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IGxpYnhsX19wYXJh bXNfZnJvbV94ZW5zdG9yZShsaWJ4bF9fZ2MgKmdjLCBjb25zdCBjaGFyICpwYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfdnNuZF9wYXJhbXMgKnBhcmFt cykKK3sKKyAgICBjb25zdCBjaGFyICp0bXA7CisgICAgaW50IHJjOworCisgICAgcmMgPSBsaWJ4 bF9feHNfcmVhZF9jaGVja2VkKGdjLCBYQlRfTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0NTUFJJTlRGKCIlcy8iWEVOU05EX0ZJRUxEX1NBTVBMRV9SQVRFUywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgpLCAmdG1wKTsKKyAgICBp ZiAocmMpIGdvdG8gb3V0OworCisgICAgaWYgKHRtcCkgeworICAgICAgICByYyA9IGxpYnhsX19z YW1wbGVfcmF0ZXNfZnJvbV9zdHJpbmcoZ2MsIHRtcCwgcGFyYW1zKTsKKyAgICAgICAgaWYgKHJj KSBnb3RvIG91dDsKKyAgICB9CisKKyAgICByYyA9IGxpYnhsX194c19yZWFkX2NoZWNrZWQoZ2Ms IFhCVF9OVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVz LyJYRU5TTkRfRklFTERfU0FNUExFX0ZPUk1BVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYXRoKSwgJnRtcCk7CisgICAgaWYgKHJjKSBnb3RvIG91dDsKKwor ICAgIGlmICh0bXApIHsKKyAgICAgICAgcmMgPSBsaWJ4bF9fc2FtcGxlX2Zvcm1hdHNfZnJvbV9z dHJpbmcoZ2MsIHRtcCwgcGFyYW1zKTsKKyAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsKKyAgICB9 CisKKyAgICByYyA9IGxpYnhsX194c19yZWFkX2NoZWNrZWQoZ2MsIFhCVF9OVUxMLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIlcy8iWEVOU05EX0ZJRUxEX0NI QU5ORUxTX01JTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YXRoKSwgJnRtcCk7CisgICAgaWYgKHJjKSBnb3RvIG91dDsKKworICAgIGlmICh0bXApIHsKKyAg ICAgICAgcGFyYW1zLT5jaGFubmVsc19taW4gPSBzdHJ0b3VsKHRtcCwgTlVMTCwgMCk7CisgICAg fQorCisgICAgcmMgPSBsaWJ4bF9feHNfcmVhZF9jaGVja2VkKGdjLCBYQlRfTlVMTCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXMvIlhFTlNORF9GSUVMRF9D SEFOTkVMU19NQVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGF0aCksICZ0bXApOworICAgIGlmIChyYykgZ290byBvdXQ7CisKKyAgICBpZiAodG1wKSB7Cisg ICAgICAgIHBhcmFtcy0+Y2hhbm5lbHNfbWF4ID0gc3RydG91bCh0bXAsIE5VTEwsIDApOworICAg IH0KKworICAgIHJjID0gbGlieGxfX3hzX3JlYWRfY2hlY2tlZChnYywgWEJUX05VTEwsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVzLyJYRU5TTkRfRklFTERf QlVGRkVSX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGF0aCksICZ0bXApOworICAgIGlmIChyYykgZ290byBvdXQ7CisKKyAgICBpZiAodG1wKSB7Cisg ICAgICAgIHBhcmFtcy0+YnVmZmVyX3NpemUgPSBzdHJ0b3VsKHRtcCwgTlVMTCwgMCk7CisgICAg fQorCisgICAgcmMgPSAwOworCitvdXQ6CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBp bnQgbGlieGxfX3N0cmVhbV9mcm9tX3hlbnN0b3JlKGxpYnhsX19nYyAqZ2MsIGNvbnN0IGNoYXIg KnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF92c25k X3N0cmVhbSAqc3RyZWFtKQoreworICAgIGNvbnN0IGNoYXIgKnRtcDsKKyAgICBpbnQgcmM7CisK KyAgICBzdHJlYW0tPmlkID0geHNfcmVhZChDVFgtPnhzaCwgWEJUX05VTEwsCisgICAgICAgICAg ICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIlcy8iWEVOU05EX0ZJRUxEX1NUUkVBTV9VTklRVUVf SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCksIE5VTEwpOworCisgICAgcmMgPSBs aWJ4bF9feHNfcmVhZF9jaGVja2VkKGdjLCBYQlRfTlVMTCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0NTUFJJTlRGKCIlcy8iWEVOU05EX0ZJRUxEX1RZUEUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoKSwgJnRtcCk7CisgICAgaWYgKHJj KSBnb3RvIG91dDsKKworICAgIGlmICh0bXApIHsKKyAgICAgICAgbGlieGxfdnNuZF9zdHJlYW1f dHlwZSB0eXBlOworCisgICAgICAgIHJjID0gbGlieGxfdnNuZF9zdHJlYW1fdHlwZV9mcm9tX3N0 cmluZyh0bXAsICZ0eXBlKTsKKyAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsKKworICAgICAgICBz dHJlYW0tPnR5cGUgPSB0eXBlOworICAgIH0KKworICAgIHJjID0gbGlieGxfX3BhcmFtc19mcm9t X3hlbnN0b3JlKGdjLCBwYXRoLCAmc3RyZWFtLT5wYXJhbXMpOworICAgIGlmIChyYykgZ290byBv dXQ7CisKKyAgICByYyA9IDA7CisKK291dDoKKworICAgIHJldHVybiByYzsKK30KKworc3RhdGlj IGludCBsaWJ4bF9fcGNtX2Zyb21feGVuc3RvcmUobGlieGxfX2djICpnYywgY29uc3QgY2hhciAq cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3ZzbmRfcGNt ICpwY20pCit7CisgICAgY29uc3QgY2hhciAqdG1wOworICAgIGludCByYzsKKworICAgIHBjbS0+ bmFtZSA9IHhzX3JlYWQoQ1RYLT54c2gsIFhCVF9OVUxMLAorICAgICAgICAgICAgICAgICAgICAg ICAgR0NTUFJJTlRGKCIlcy8iWEVOU05EX0ZJRUxEX0RFVklDRV9OQU1FLCBwYXRoKSwgTlVMTCk7 CisKKyAgICByYyA9IGxpYnhsX19wYXJhbXNfZnJvbV94ZW5zdG9yZShnYywgcGF0aCwgJnBjbS0+ cGFyYW1zKTsKKworICAgIHBjbS0+c3RyZWFtcyA9IE5VTEw7CisgICAgcGNtLT5udW1fdnNuZF9z dHJlYW1zID0gMDsKKworICAgIGRvIHsKKyAgICAgICAgY2hhciAqc3RyZWFtX3BhdGggPSBHQ1NQ UklOVEYoIiVzLyVkIiwgcGF0aCwgcGNtLT5udW1fdnNuZF9zdHJlYW1zKTsKKworICAgICAgICBy YyA9IGxpYnhsX194c19yZWFkX2NoZWNrZWQoZ2MsIFhCVF9OVUxMLCBzdHJlYW1fcGF0aCwgJnRt cCk7CisgICAgICAgIGlmIChyYykgZ290byBvdXQ7CisKKyAgICAgICAgaWYgKHRtcCkgeworICAg ICAgICAgICAgcGNtLT5zdHJlYW1zID0gbGlieGxfX3JlYWxsb2MoTk9HQywgcGNtLT5zdHJlYW1z LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpwY20t PnN0cmVhbXMpICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgr K3BjbS0+bnVtX3ZzbmRfc3RyZWFtcykpOworCisgICAgICAgICAgICBsaWJ4bF92c25kX3N0cmVh bV9pbml0KCZwY20tPnN0cmVhbXNbcGNtLT5udW1fdnNuZF9zdHJlYW1zIC0gMV0pOworCisgICAg ICAgICAgICByYyA9IGxpYnhsX19zdHJlYW1fZnJvbV94ZW5zdG9yZShnYywgc3RyZWFtX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGNtLT5zdHJl YW1zW3BjbS0+bnVtX3ZzbmRfc3RyZWFtcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLSAxXSk7CisgICAgICAgICAgICBpZiAocmMpIGdvdG8gb3V0OworICAg ICAgICB9CisgICAgfSB3aGlsZSAodG1wKTsKKworICAgIHJjID0gMDsKKworb3V0OgorCisgICAg cmV0dXJuIHJjOworfQorCiBzdGF0aWMgaW50IGxpYnhsX192c25kX2Zyb21feGVuc3RvcmUobGli eGxfX2djICpnYywgY29uc3QgY2hhciAqbGlieGxfcGF0aCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpZCBkZXZpZCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnNuZCAqdnNuZCkKIHsKLSAgICBjb25zdCBj aGFyICpiZV9wYXRoOworICAgIGNvbnN0IGNoYXIgKnRtcDsKKyAgICBjb25zdCBjaGFyICpmZV9w YXRoOwogICAgIGludCByYzsKIAogICAgIHZzbmQtPmRldmlkID0gZGV2aWQ7CiAgICAgcmMgPSBs aWJ4bF9feHNfcmVhZF9tYW5kYXRvcnkoZ2MsIFhCVF9OVUxMLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXMvYmFja2VuZCIsIGxpYnhsX3BhdGgpLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZiZV9wYXRoKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmdG1wKTsKKyAgICBpZiAocmMpIGdvdG8gb3V0OworCisgICAg cmMgPSBsaWJ4bF9fYmFja2VuZHBhdGhfcGFyc2VfZG9taWQoZ2MsIHRtcCwgJnZzbmQtPmJhY2tl bmRfZG9taWQpOwogICAgIGlmIChyYykgZ290byBvdXQ7CiAKLSAgICByYyA9IGxpYnhsX19iYWNr ZW5kcGF0aF9wYXJzZV9kb21pZChnYywgYmVfcGF0aCwgJnZzbmQtPmJhY2tlbmRfZG9taWQpOwor ICAgIHJjID0gbGlieGxfX3hzX3JlYWRfbWFuZGF0b3J5KGdjLCBYQlRfTlVMTCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVzL2Zyb250ZW5kIiwgbGlieGxf cGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZlX3BhdGgpOwogICAg IGlmIChyYykgZ290byBvdXQ7CiAKKyAgICB2c25kLT5zaG9ydF9uYW1lID0geHNfcmVhZChDVFgt PnhzaCwgWEJUX05VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRG KCIlcy8iWEVOU05EX0ZJRUxEX1ZDQVJEX1NIT1JUX05BTUUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmVfcGF0aCksIE5VTEwpOworCisgICAgdnNuZC0+bG9uZ19uYW1lID0geHNf cmVhZChDVFgtPnhzaCwgWEJUX05VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH Q1NQUklOVEYoIiVzLyJYRU5TTkRfRklFTERfVkNBUkRfTE9OR19OQU1FLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmVfcGF0aCksIE5VTEwpOworCisgICAgcmMgPSBsaWJ4bF9fcGFy YW1zX2Zyb21feGVuc3RvcmUoZ2MsIGZlX3BhdGgsICZ2c25kLT5wYXJhbXMpOworCisgICAgdnNu ZC0+cGNtcyA9IE5VTEw7CisgICAgdnNuZC0+bnVtX3ZzbmRfcGNtcyA9IDA7CisKKyAgICBkbyB7 CisgICAgICAgIGNoYXIgKnBjbV9wYXRoID0gR0NTUFJJTlRGKCIlcy8lZCIsIGZlX3BhdGgsIHZz bmQtPm51bV92c25kX3BjbXMpOworCisgICAgICAgIHJjID0gbGlieGxfX3hzX3JlYWRfY2hlY2tl ZChnYywgWEJUX05VTEwsIHBjbV9wYXRoLCAmdG1wKTsKKyAgICAgICAgaWYgKHJjKSBnb3RvIG91 dDsKKworICAgICAgICBpZiAodG1wKSB7CisgICAgICAgICAgICB2c25kLT5wY21zID0gbGlieGxf X3JlYWxsb2MoTk9HQywgdnNuZC0+cGNtcywgc2l6ZW9mKCp2c25kLT5wY21zKSAqCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsrdnNuZC0+bnVtX3ZzbmRfcGNtcykp OworCisgICAgICAgICAgICBsaWJ4bF92c25kX3BjbV9pbml0KCZ2c25kLT5wY21zW3ZzbmQtPm51 bV92c25kX3BjbXMgLSAxXSk7CisKKyAgICAgICAgICAgIHJjID0gbGlieGxfX3BjbV9mcm9tX3hl bnN0b3JlKGdjLCBwY21fcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZ2c25kLT5wY21zW3ZzbmQtPm51bV92c25kX3BjbXMgLSAxXSk7CisgICAgICAgICAg ICBpZiAocmMpIGdvdG8gb3V0OworICAgICAgICB9CisgICAgfSB3aGlsZSAodG1wKTsKKwogICAg IHJjID0gMDsKIAogb3V0OgpAQCAtMzA5LDExICs1MzQsMTU0IEBAIG91dDoKICAgICByZXR1cm4g cmM7CiB9CiAKK3N0YXRpYyBpbnQgbGlieGxfX2RldmljZV9zdHJlYW1fZ2V0aW5mbyhsaWJ4bF9f Z2MgKmdjLCBjb25zdCBjaGFyICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX3ZzbmRfcGNtKiBwY20sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlieGxfcGNtaW5mbyAqaW5mbykKK3sKKyAgICBjb25zdCBjaGFyICp0 bXA7CisgICAgaW50IGk7CisgICAgaW50IHJjOworCisgICAgaW5mby0+bnVtX3ZzbmRfc3RyZWFt cyA9IHBjbS0+bnVtX3ZzbmRfc3RyZWFtczsKKyAgICBpbmZvLT5zdHJlYW1zID0gbWFsbG9jKHNp emVvZigqaW5mby0+c3RyZWFtcykgKiBpbmZvLT5udW1fdnNuZF9zdHJlYW1zKTsKKworICAgIGZv ciAoaSA9IDA7IGkgPCBpbmZvLT5udW1fdnNuZF9zdHJlYW1zOyBpKyspCisgICAgeworICAgICAg ICBsaWJ4bF9zdHJlYW1pbmZvX2luaXQoJmluZm8tPnN0cmVhbXNbaV0pOworCisgICAgICAgIHJj ID0gbGlieGxfX3hzX3JlYWRfY2hlY2tlZChnYywgWEJUX05VTEwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVzLyVkLyJYRU5TTkRfRklFTERfUklOR19S RUYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLCBpKSwgJnRtcCk7 CisgICAgICAgIGlmIChyYykgZ290byBvdXQ7CisKKyAgICAgICAgaW5mby0+c3RyZWFtc1tpXS5y ZXFfcnJlZiA9IHRtcCA/IHN0cnRvdWwodG1wLCBOVUxMLCAxMCkgOiAtMTsKKworICAgICAgICBy YyA9IGxpYnhsX194c19yZWFkX2NoZWNrZWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIlcy8lZC8iWEVOU05EX0ZJRUxEX0VWVF9D SE5MLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgaSksICZ0bXAp OworICAgICAgICBpZiAocmMpIGdvdG8gb3V0OworCisgICAgICAgIGluZm8tPnN0cmVhbXNbaV0u cmVxX2V2dGNoID0gdG1wID8gc3RydG91bCh0bXAsIE5VTEwsIDEwKSA6IC0xOworICAgIH0KKwor ICAgIHJjID0gMDsKKworb3V0OgorCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IGxp YnhsX19kZXZpY2VfcGNtX2dldGluZm8obGlieGxfX2djICpnYywgY29uc3QgY2hhciAqcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnNuZCAq dnNuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF92c25kaW5m byAqaW5mbykKK3sKKyAgICBpbnQgaTsKKyAgICBpbnQgcmM7CisKKyAgICBpbmZvLT5udW1fdnNu ZF9wY21zID0gdnNuZC0+bnVtX3ZzbmRfcGNtczsKKyAgICBpbmZvLT5wY21zID0gbWFsbG9jKHNp emVvZigqaW5mby0+cGNtcykgKiBpbmZvLT5udW1fdnNuZF9wY21zKTsKKworICAgIGZvciAoaSA9 IDA7IGkgPCBpbmZvLT5udW1fdnNuZF9wY21zOyBpKyspCisgICAgeworICAgICAgICBsaWJ4bF9w Y21pbmZvX2luaXQoJmluZm8tPnBjbXNbaV0pOworCisgICAgICAgIHJjID0gbGlieGxfX2Rldmlj ZV9zdHJlYW1fZ2V0aW5mbyhnYywgR0NTUFJJTlRGKCIlcy8lZCIsIHBhdGgsIGkpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZzbmQtPnBjbXNbaV0sICZpbmZv LT5wY21zW2ldKTsKKyAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsKKyAgICB9CisKKyAgICByYyA9 IDA7CisKK291dDoKKworCisKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCBsaWJ4bF9kZXZpY2Vf dnNuZF9nZXRpbmZvKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92c25kICp2c25kLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlieGxfdnNuZGluZm8gKmluZm8pCit7CisgICAgR0NfSU5JVChj dHgpOworICAgIGNoYXIgKmxpYnhsX3BhdGgsICpkb21wYXRoLCAqZGV2cGF0aDsKKyAgICBjb25z dCBjaGFyICp2YWw7CisgICAgaW50IHJjOworCisgICAgbGlieGxfdnNuZGluZm9faW5pdChpbmZv KTsKKyAgICBkb21wYXRoID0gbGlieGxfX3hzX2dldF9kb21wYXRoKGdjLCBkb21pZCk7CisgICAg aW5mby0+ZGV2aWQgPSB2c25kLT5kZXZpZDsKKworICAgIGRldnBhdGggPSBsaWJ4bF9fZG9tYWlu X2RldmljZV9mcm9udGVuZF9wYXRoKGdjLCBkb21pZCwgaW5mby0+ZGV2aWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfX0RFVklDRV9LSU5E X1ZTTkQpOworICAgIGxpYnhsX3BhdGggPSBsaWJ4bF9fZG9tYWluX2RldmljZV9saWJ4bF9wYXRo KGdjLCBkb21pZCwgaW5mby0+ZGV2aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTElCWExfX0RFVklDRV9LSU5EX1ZTTkQpOworCisgICAgaW5mby0+ YmFja2VuZCA9IHhzX3JlYWQoY3R4LT54c2gsIFhCVF9OVUxMLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdDU1BSSU5URigiJXMvYmFja2VuZCIsIGxpYnhsX3BhdGgpLCBOVUxMKTsKKwor ICAgIHJjID0gbGlieGxfX2JhY2tlbmRwYXRoX3BhcnNlX2RvbWlkKGdjLCBpbmZvLT5iYWNrZW5k LCAmaW5mby0+YmFja2VuZF9pZCk7CisgICAgaWYgKHJjKSBnb3RvIG91dDsKKworICAgIHZhbCA9 IHhzX3JlYWQoY3R4LT54c2gsIFhCVF9OVUxMLCBHQ1NQUklOVEYoIiVzL3N0YXRlIiwgZGV2cGF0 aCksIE5VTEwpOworCisgICAgaW5mby0+c3RhdGUgPSB2YWwgPyBzdHJ0b3VsKHZhbCwgTlVMTCwg MTApIDogLTE7CisKKyAgICBpbmZvLT5mcm9udGVuZCA9IHhzX3JlYWQoY3R4LT54c2gsIFhCVF9O VUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVzL2Zyb250ZW5k IiwgbGlieGxfcGF0aCksIE5VTEwpOworCisgICAgaW5mby0+ZnJvbnRlbmRfaWQgPSBkb21pZDsK KworICAgIHJjID0gbGlieGxfX2RldmljZV9wY21fZ2V0aW5mbyhnYywgZGV2cGF0aCwgdnNuZCwg aW5mbyk7CisgICAgaWYgKHJjKSBnb3RvIG91dDsKKworICAgIHJjID0gMDsKKworb3V0OgorICAg ICBHQ19GUkVFOworICAgICByZXR1cm4gcmM7Cit9CisKK2ludCBsaWJ4bF9kZXZpZF90b19kZXZp Y2VfdnNuZChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGRldmlkLCBsaWJ4bF9kZXZpY2VfdnNuZCAqdnNuZCkKK3sKKyAg ICBHQ19JTklUKGN0eCk7CisKKyAgICBsaWJ4bF9kZXZpY2VfdnNuZCAqdnNuZHMgPSBOVUxMOwor ICAgIGludCBuLCBpOworICAgIGludCByYzsKKworICAgIGxpYnhsX2RldmljZV92c25kX2luaXQo dnNuZCk7CisKKyAgICB2c25kcyA9IGxpYnhsX19kZXZpY2VfbGlzdChnYywgJmxpYnhsX192c25k X2RldnR5cGUsIGRvbWlkLCAmbik7CisKKyAgICBpZiAoIXZzbmRzKSB7IHJjID0gRVJST1JfTk9U Rk9VTkQ7IGdvdG8gb3V0OyB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAg ICAgIGlmIChkZXZpZCA9PSB2c25kc1tpXS5kZXZpZCkgeworICAgICAgICAgICAgbGlieGxfZGV2 aWNlX3ZzbmRfY29weShjdHgsIHZzbmQsICZ2c25kc1tpXSk7CisgICAgICAgICAgICByYyA9IDA7 CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJjID0gRVJS T1JfTk9URk9VTkQ7CisKK291dDoKKworICAgIGlmICh2c25kcykKKyAgICAgICAgbGlieGxfX2Rl dmljZV9saXN0X2ZyZWUoJmxpYnhsX192c25kX2RldnR5cGUsIHZzbmRzLCBuKTsKKworICAgIEdD X0ZSRUU7CisgICAgcmV0dXJuIHJjOworfQorCiBzdGF0aWMgTElCWExfREVGSU5FX1VQREFURV9E RVZJRCh2c25kKQogc3RhdGljIExJQlhMX0RFRklORV9ERVZJQ0VTX0FERCh2c25kKQogCiBMSUJY TF9ERUZJTkVfREVWSUNFX0FERCh2c25kKQogTElCWExfREVGSU5FX0RFVklDRV9SRU1PVkUodnNu ZCkKK0xJQlhMX0RFRklORV9ERVZJQ0VfTElTVCh2c25kKQogCiBERUZJTkVfREVWSUNFX1RZUEVf U1RSVUNUKHZzbmQsIFZTTkQsCiAgICAgLnVwZGF0ZV9jb25maWcgPSAoZGV2aWNlX3VwZGF0ZV9j b25maWdfZm5fdCkgbGlieGxfX3VwZGF0ZV9jb25maWdfdnNuZCwKLS0gCjIuMTcuMAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=