From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v4 3/4] libxl: add HVM usb passthrough support Date: Tue, 20 Sep 2016 16:18:09 +0200 Message-ID: <1474381090-31962-4-git-send-email-jgross@suse.com> References: <1474381090-31962-1-git-send-email-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1474381090-31962-1-git-send-email-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: George.Dunlap@eu.citrix.com, wei.liu2@citrix.com, ian.jackson@eu.citrix.com, Juergen Gross List-Id: xen-devel@lists.xenproject.org QWRkIEhWTSB1c2IgcGFzc3Rocm91Z2ggc3VwcG9ydCB0byBsaWJ4bCBieSB1c2luZyBxZW11J3Mg Y2FwYWJpbGl0eQp0byBlbXVsYXRlIHN0YW5kYXJkIFVTQiBjb250cm9sbGVycy4KCkEgVVNCIGNv bnRyb2xsZXIgaXMgYWRkZWQgdmlhIHFtcCBjb21tYW5kIHRvIHRoZSBlbXVsYXRlZCBoYXJkd2Fy ZQp3aGVuIGEgdXNiY3RybCBkZXZpY2Ugb2YgdHlwZSBERVZJQ0VNT0RFTCBpcyByZXF1ZXN0ZWQu IERlcGVuZGluZyBvbgp0aGUgcmVxdWVzdGVkIHNwZWVkIHRoZSBhcHByb3ByaWF0ZSBoYXJkd2Fy ZSB0eXBlIGlzIHNlbGVjdGVkLiBBIGhvc3QKVVNCIGRldmljZSBjYW4gdGhlbiBiZSBhZGRlZCB0 byB0aGUgZW11bGF0ZWQgVVNCIGNvbnRyb2xsZXIgdmlhIHFtcApjb21tYW5kLgoKUmVtb3Zpbmcg b2YgdGhlIGRldmljZXMgaXMgZG9uZSB2aWEgcW1wIGNvbW1hbmRzLCB0b28uCgpTaWduZWQtb2Zm LWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+CkFja2VkLWJ5OiBXZWkgTGl1IDx3 ZWkubGl1MkBjaXRyaXguY29tPgotLS0KVjM6IHJlbmFtZWQgcHZ1c2JfZ2V0X3BvcnRfcGF0aCgp IHRvIHZ1c2JfZ2V0X3BvcnRfcGF0aCgpIChHZW9yZ2UgRHVubGFwKQoKVjI6IGNvZGUgc3R5bGUg aXNzdWVzIChXZWkgTGl1KQogICAgYWRkaW5nIHNvbWUgYXNzZXJ0KClzIChXZWkgTGl1KQogICAg c3BsaXQgb3V0IGxpYnhsX19kZXZpY2VfdXNiY3RybF9kZWxfeGVuc3RvcmUoKSAoV2VpIExpdSkK LS0tCiB0b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYyB8ICAgMyArLQogdG9vbHMvbGlieGwvbGli eGxfdXNiLmMgICAgfCAzOTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tCiB0b29scy9saWJ4bC94bF9jbWRpbXBsLmMgICB8ICAgNCArLQogMyBmaWxlcyBjaGFu Z2VkLCAzMTEgaW5zZXJ0aW9ucygrKSwgOTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9v bHMvbGlieGwvbGlieGxfZGV2aWNlLmMgYi90b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYwppbmRl eCAxY2M5MDk4Li4zZTdhMTAyIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9kZXZpY2Uu YworKysgYi90b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYwpAQCAtODExLDggKzgxMSw3IEBAIHZv aWQgbGlieGxfX2RldmljZXNfZGVzdHJveShsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19kZXZpY2Vz X3JlbW92ZV9zdGF0ZSAqZHJzKQogICAgICAgICAgICAgICAgIGFvZGV2LT5hY3Rpb24gPSBMSUJY TF9fREVWSUNFX0FDVElPTl9SRU1PVkU7CiAgICAgICAgICAgICAgICAgYW9kZXYtPmRldiA9IGRl djsKICAgICAgICAgICAgICAgICBhb2Rldi0+Zm9yY2UgPSBkcnMtPmZvcmNlOwotICAgICAgICAg ICAgICAgIGlmIChkZXYtPmJhY2tlbmRfa2luZCA9PSBMSUJYTF9fREVWSUNFX0tJTkRfVlVTQiB8 fAotICAgICAgICAgICAgICAgICAgICBkZXYtPmJhY2tlbmRfa2luZCA9PSBMSUJYTF9fREVWSUNF X0tJTkRfUVVTQikKKyAgICAgICAgICAgICAgICBpZiAoZGV2LT5raW5kID09IExJQlhMX19ERVZJ Q0VfS0lORF9WVVNCKQogICAgICAgICAgICAgICAgICAgICBsaWJ4bF9faW5pdGlhdGVfZGV2aWNl X3VzYmN0cmxfcmVtb3ZlKGVnYywgYW9kZXYpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg ICAgICAgICAgICAgICAgbGlieGxfX2luaXRpYXRlX2RldmljZV9nZW5lcmljX3JlbW92ZShlZ2Ms IGFvZGV2KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3VzYi5jIGIvdG9vbHMvbGli eGwvbGlieGxfdXNiLmMKaW5kZXggMjQ5MzQ2NC4uNzYyNjBiMSAxMDA2NDQKLS0tIGEvdG9vbHMv bGlieGwvbGlieGxfdXNiLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfdXNiLmMKQEAgLTE3LDYg KzE3LDcgQEAKIAogI2luY2x1ZGUgImxpYnhsX2ludGVybmFsLmgiCiAjaW5jbHVkZSA8aW50dHlw ZXMuaD4KKyNpbmNsdWRlIDx4ZW4vaW8vdXNiaWYuaD4KIAogI2RlZmluZSBVU0JCQUNLX0lORk9f UEFUSCAiL2xpYnhsL3VzYmJhY2siCiAKQEAgLTQzLDEyICs0NCw2IEBAIHN0YXRpYyBpbnQgbGli eGxfX2RldmljZV91c2JjdHJsX3NldGRlZmF1bHQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9t aWQsCiAgICAgaW50IHJjOwogICAgIGxpYnhsX2RvbWFpbl90eXBlIGRvbXR5cGUgPSBsaWJ4bF9f ZG9tYWluX3R5cGUoZ2MsIGRvbWlkKTsKIAotICAgIGlmICghdXNiY3RybC0+dmVyc2lvbikKLSAg ICAgICAgdXNiY3RybC0+dmVyc2lvbiA9IDI7Ci0KLSAgICBpZiAoIXVzYmN0cmwtPnBvcnRzKQot ICAgICAgICB1c2JjdHJsLT5wb3J0cyA9IDg7Ci0KICAgICBpZiAodXNiY3RybC0+dHlwZSA9PSBM SUJYTF9VU0JDVFJMX1RZUEVfQVVUTykgewogICAgICAgICBpZiAoZG9tdHlwZSA9PSBMSUJYTF9E T01BSU5fVFlQRV9QVikgewogICAgICAgICAgICAgcmMgPSB1c2JiYWNrX2lzX2xvYWRlZChnYyk7 CkBAIC02Miw2ICs1Nyw3MSBAQCBzdGF0aWMgaW50IGxpYnhsX19kZXZpY2VfdXNiY3RybF9zZXRk ZWZhdWx0KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICB9CiAgICAgfQog CisgICAgc3dpdGNoICh1c2JjdHJsLT50eXBlKSB7CisgICAgY2FzZSBMSUJYTF9VU0JDVFJMX1RZ UEVfUFY6CisgICAgY2FzZSBMSUJYTF9VU0JDVFJMX1RZUEVfUVVTQjoKKyAgICAgICAgaWYgKCF1 c2JjdHJsLT52ZXJzaW9uKQorICAgICAgICAgICAgdXNiY3RybC0+dmVyc2lvbiA9IDI7CisgICAg ICAgIGlmICh1c2JjdHJsLT52ZXJzaW9uIDwgMSB8fCB1c2JjdHJsLT52ZXJzaW9uID4gMikgewor ICAgICAgICAgICAgTE9HKEVSUk9SLAorICAgICAgICAgICAgICAgICJVU0IgdmVyc2lvbiBmb3Ig cGFyYXZpcnR1YWxpemVkIGRldmljZXMgbXVzdCBiZSAxIG9yIDIiKTsKKyAgICAgICAgICAgIHJj ID0gRVJST1JfSU5WQUw7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAg ICBpZiAoIXVzYmN0cmwtPnBvcnRzKQorICAgICAgICAgICAgdXNiY3RybC0+cG9ydHMgPSA4Owor ICAgICAgICBpZiAodXNiY3RybC0+cG9ydHMgPCAxIHx8IHVzYmN0cmwtPnBvcnRzID4gVVNCSUZf TUFYX1BPUlROUikgeworICAgICAgICAgICAgTE9HKEVSUk9SLCAiTnVtYmVyIG9mIHBvcnRzIGZv ciBVU0IgY29udHJvbGxlciBpcyBsaW1pdGVkIHRvICV1IiwKKyAgICAgICAgICAgICAgICBVU0JJ Rl9NQVhfUE9SVE5SKTsKKyAgICAgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CisgICAgICAgICAg ICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIExJQlhMX1VT QkNUUkxfVFlQRV9ERVZJQ0VNT0RFTDoKKyAgICAgICAgaWYgKCF1c2JjdHJsLT52ZXJzaW9uKQor ICAgICAgICAgICAgdXNiY3RybC0+dmVyc2lvbiA9IDI7CisgICAgICAgIHN3aXRjaCAodXNiY3Ry bC0+dmVyc2lvbikgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAvKiB1aGNpIGNvbnRy b2xsZXIgaW4gcWVtdSBoYXMgZml4ZWQgbnVtYmVyIG9mIHBvcnRzLiAqLworICAgICAgICAgICAg aWYgKHVzYmN0cmwtPnBvcnRzICYmIHVzYmN0cmwtPnBvcnRzICE9IDIpIHsKKyAgICAgICAgICAg ICAgICBMT0coRVJST1IsCisgICAgICAgICAgICAgICAgICAgICJOdW1iZXIgb2YgcG9ydHMgZm9y IFVTQiBjb250cm9sbGVyIG9mIHZlcnNpb24gMSBpcyBhbHdheXMgMiIpOworICAgICAgICAgICAg ICAgIHJjID0gRVJST1JfSU5WQUw7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAg ICAgICB9CisgICAgICAgICAgICB1c2JjdHJsLT5wb3J0cyA9IDI7CisgICAgICAgICAgICBicmVh azsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgLyogZWhjaSBjb250cm9sbGVyIGluIHFl bXUgaGFzIGZpeGVkIG51bWJlciBvZiBwb3J0cy4gKi8KKyAgICAgICAgICAgIGlmICh1c2JjdHJs LT5wb3J0cyAmJiB1c2JjdHJsLT5wb3J0cyAhPSA2KSB7CisgICAgICAgICAgICAgICAgTE9HKEVS Uk9SLAorICAgICAgICAgICAgICAgICAgICAiTnVtYmVyIG9mIHBvcnRzIGZvciBVU0IgY29udHJv bGxlciBvZiB2ZXJzaW9uIDIgaXMgYWx3YXlzIDYiKTsKKyAgICAgICAgICAgICAgICByYyA9IEVS Uk9SX0lOVkFMOworICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgfQorICAg ICAgICAgICAgdXNiY3RybC0+cG9ydHMgPSA2OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg IGNhc2UgMzoKKyAgICAgICAgICAgIGlmICghdXNiY3RybC0+cG9ydHMpCisgICAgICAgICAgICAg ICAgdXNiY3RybC0+cG9ydHMgPSA4OworICAgICAgICAgICAgLyogeGhjaSBjb250cm9sbGVyIGlu IHFlbXUgc3VwcG9ydHMgdXAgdG8gMTUgcG9ydHMuICovCisgICAgICAgICAgICBpZiAodXNiY3Ry bC0+cG9ydHMgPiAxNSkgeworICAgICAgICAgICAgICAgIExPRyhFUlJPUiwKKyAgICAgICAgICAg ICAgICAgICAgIk51bWJlciBvZiBwb3J0cyBmb3IgVVNCIGNvbnRyb2xsZXIgb2YgdmVyc2lvbiAz IGlzIGxpbWl0ZWQgdG8gMTUiKTsKKyAgICAgICAgICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwor ICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBMT0coRVJST1IsICJJbGxlZ2FsIFVT QiB2ZXJzaW9uIik7CisgICAgICAgICAgICByYyA9IEVSUk9SX0lOVkFMOworICAgICAgICAgICAg Z290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg ICAgYnJlYWs7CisgICAgfQorCiAgICAgcmMgPSBsaWJ4bF9fcmVzb2x2ZV9kb21pZChnYywgdXNi Y3RybC0+YmFja2VuZF9kb21uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVz YmN0cmwtPmJhY2tlbmRfZG9taWQpOwogCkBAIC03NSw5ICsxMzUsMjAgQEAgc3RhdGljIGludCBs aWJ4bF9fZGV2aWNlX2Zyb21fdXNiY3RybChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwK IHsKICAgICBkZXZpY2UtPmJhY2tlbmRfZGV2aWQgICA9IHVzYmN0cmwtPmRldmlkOwogICAgIGRl dmljZS0+YmFja2VuZF9kb21pZCAgID0gdXNiY3RybC0+YmFja2VuZF9kb21pZDsKLSAgICBkZXZp Y2UtPmJhY2tlbmRfa2luZCAgICA9ICh1c2JjdHJsLT50eXBlID09IExJQlhMX1VTQkNUUkxfVFlQ RV9QVikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTElCWExfX0RFVklDRV9LSU5E X1ZVU0IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTElCWExfX0RFVklDRV9LSU5E X1FVU0I7CisgICAgc3dpdGNoICh1c2JjdHJsLT50eXBlKSB7CisgICAgY2FzZSBMSUJYTF9VU0JD VFJMX1RZUEVfUFY6CisgICAgICAgIGRldmljZS0+YmFja2VuZF9raW5kID0gTElCWExfX0RFVklD RV9LSU5EX1ZVU0I7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTElCWExfVVNCQ1RSTF9UWVBF X1FVU0I6CisgICAgICAgIGRldmljZS0+YmFja2VuZF9raW5kID0gTElCWExfX0RFVklDRV9LSU5E X1FVU0I7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTElCWExfVVNCQ1RSTF9UWVBFX0RFVklD RU1PREVMOgorICAgICAgICBkZXZpY2UtPmJhY2tlbmRfa2luZCA9IExJQlhMX19ERVZJQ0VfS0lO RF9OT05FOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7 IC8qIGNhbid0IHJlYWxseSBoYXBwZW4uICovCisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBk ZXZpY2UtPmRldmlkICAgICAgICAgICA9IHVzYmN0cmwtPmRldmlkOwogICAgIGRldmljZS0+ZG9t aWQgICAgICAgICAgID0gZG9taWQ7CiAgICAgZGV2aWNlLT5raW5kICAgICAgICAgICAgPSBMSUJY TF9fREVWSUNFX0tJTkRfVlVTQjsKQEAgLTg1LDYgKzE1NiwzNSBAQCBzdGF0aWMgaW50IGxpYnhs X19kZXZpY2VfZnJvbV91c2JjdHJsKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAg IHJldHVybiAwOwogfQogCitzdGF0aWMgY29uc3QgY2hhciAqdnVzYl9iZV9mcm9tX3hzX2xpYnhs X3R5cGUobGlieGxfX2djICpnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICpsaWJ4bF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3VzYmN0cmxfdHlwZSB0eXBlKQoreworICAg IGNvbnN0IGNoYXIgKmJlX3BhdGggPSBOVUxMLCAqdG1wOworICAgIGludCByOworCisgICAgaWYg KHR5cGUgPT0gTElCWExfVVNCQ1RSTF9UWVBFX0FVVE8pIHsKKyAgICAgICAgciA9IGxpYnhsX194 c19yZWFkX2NoZWNrZWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHQ1NQUklOVEYoIiVzL3R5cGUiLCBsaWJ4bF9wYXRoKSwgJnRtcCk7CisgICAgICAg IGlmIChyIHx8IGxpYnhsX3VzYmN0cmxfdHlwZV9mcm9tX3N0cmluZyh0bXAsICZ0eXBlKSkKKyAg ICAgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmICh0eXBlID09IExJQlhMX1VTQkNU UkxfVFlQRV9ERVZJQ0VNT0RFTCkgeworICAgICAgICBiZV9wYXRoID0gbGlieGxfcGF0aDsKKyAg ICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgciA9IGxpYnhsX194c19yZWFkX2NoZWNrZWQo Z2MsIFhCVF9OVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigi JXMvYmFja2VuZCIsIGxpYnhsX3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZiZV9wYXRoKTsKKyAgICBpZiAocikKKyAgICAgICAgYmVfcGF0aCA9IE5VTEw7CisKK291dDoK KyAgICByZXR1cm4gYmVfcGF0aDsKK30KKwogLyogQWRkIHVzYmN0cmwgaW5mb3JtYXRpb24gdG8g eGVuc3RvcmUuCiAgKgogICogQWRkaW5nIGEgdXNiIGNvbnRyb2xsZXIgd2lsbCBhZGQgYSBuZXcg J3F1c2InIG9yICd2dXNiJyBkZXZpY2UgaW4geGVuc3RvcmUsCkBAIC05Niw3ICsxOTYsNyBAQCBz dGF0aWMgaW50IGxpYnhsX19kZXZpY2VfdXNiY3RybF9hZGRfeGVuc3RvcmUobGlieGxfX2djICpn YywgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCB1cGRhdGVfanNvbikKIHsKICAgICBsaWJ4bF9fZGV2aWNlICpkZXZpY2U7 Ci0gICAgZmxleGFycmF5X3QgKmZyb250OworICAgIGZsZXhhcnJheV90ICpmcm9udCA9IE5VTEw7 CiAgICAgZmxleGFycmF5X3QgKmJhY2s7CiAgICAgeHNfdHJhbnNhY3Rpb25fdCB0ID0gWEJUX05V TEw7CiAgICAgaW50IGksIHJjOwpAQCAtMTEyLDEzICsyMTIsMjEgQEAgc3RhdGljIGludCBsaWJ4 bF9fZGV2aWNlX3VzYmN0cmxfYWRkX3hlbnN0b3JlKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRv bWlkLAogICAgIHJjID0gbGlieGxfX2RldmljZV9mcm9tX3VzYmN0cmwoZ2MsIGRvbWlkLCB1c2Jj dHJsLCBkZXZpY2UpOwogICAgIGlmIChyYykgZ290byBvdXQ7CiAKLSAgICBmcm9udCA9IGZsZXhh cnJheV9tYWtlKGdjLCA0LCAxKTsKICAgICBiYWNrID0gZmxleGFycmF5X21ha2UoZ2MsIDEyLCAx KTsKIAotICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihiYWNrLCAiZnJvbnRlbmQtaWQiLCBHQ1NQ UklOVEYoIiVkIiwgZG9taWQpKTsKLSAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIoYmFjaywgIm9u bGluZSIsICIxIik7Ci0gICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGJhY2ssICJzdGF0ZSIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJWQiLCBYZW5idXNTdGF0ZUluaXRp YWxpc2luZykpOworICAgIGlmIChkZXZpY2UtPmJhY2tlbmRfa2luZCAhPSBMSUJYTF9fREVWSUNF X0tJTkRfTk9ORSkgeworICAgICAgICBmcm9udCA9IGZsZXhhcnJheV9tYWtlKGdjLCA0LCAxKTsK KworICAgICAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIoYmFjaywgImZyb250ZW5kLWlkIiwgR0NT UFJJTlRGKCIlZCIsIGRvbWlkKSk7CisgICAgICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihiYWNr LCAib25saW5lIiwgIjEiKTsKKyAgICAgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGJhY2ssICJz dGF0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVkIiwgWGVu YnVzU3RhdGVJbml0aWFsaXNpbmcpKTsKKyAgICAgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGZy b250LCAiYmFja2VuZC1pZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1NQUklO VEYoIiVkIiwgdXNiY3RybC0+YmFja2VuZF9kb21pZCkpOworICAgICAgICBmbGV4YXJyYXlfYXBw ZW5kX3BhaXIoZnJvbnQsICJzdGF0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH Q1NQUklOVEYoIiVkIiwgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcpKTsKKyAgICB9CisKICAgICBm bGV4YXJyYXlfYXBwZW5kX3BhaXIoYmFjaywgInR5cGUiLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2hhciAqKWxpYnhsX3VzYmN0cmxfdHlwZV90b19zdHJpbmcodXNiY3RybC0+dHlwZSkp OwogICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihiYWNrLCAidXNiLXZlciIsIEdDU1BSSU5URigi JWQiLCB1c2JjdHJsLT52ZXJzaW9uKSk7CkBAIC0xMjcsMTEgKzIzNSw2IEBAIHN0YXRpYyBpbnQg bGlieGxfX2RldmljZV91c2JjdHJsX2FkZF94ZW5zdG9yZShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJf dCBkb21pZCwKICAgICBmb3IgKGkgPSAwOyBpIDwgdXNiY3RybC0+cG9ydHM7IGkrKykKICAgICAg ICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGJhY2ssIEdDU1BSSU5URigicG9ydC8lZCIsIGkgKyAx KSwgIiIpOwogCi0gICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGZyb250LCAiYmFja2VuZC1pZCIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJWQiLCB1c2JjdHJsLT5iYWNr ZW5kX2RvbWlkKSk7Ci0gICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGZyb250LCAic3RhdGUiLAot ICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVkIiwgWGVuYnVzU3RhdGVJbml0 aWFsaXNpbmcpKTsKLQogICAgIGlmICh1cGRhdGVfanNvbikgewogICAgICAgICBsb2NrID0gbGli eGxfX2xvY2tfZG9tYWluX3VzZXJkYXRhKGdjLCBkb21pZCk7CiAgICAgICAgIGlmICghbG9jaykg ewpAQCAtMTk2LDE1ICsyOTksNyBAQCBvdXQ6CiAKIHN0YXRpYyBjb25zdCBjaGFyICp2dXNiX2Jl X2Zyb21feHNfbGlieGwobGlieGxfX2djICpnYywgY29uc3QgY2hhciAqbGlieGxfcGF0aCkKIHsK LSAgICBjb25zdCBjaGFyICpiZV9wYXRoOwotICAgIGludCByOwotCi0gICAgciA9IGxpYnhsX194 c19yZWFkX2NoZWNrZWQoZ2MsIFhCVF9OVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdDU1BSSU5URigiJXMvYmFja2VuZCIsIGxpYnhsX3BhdGgpLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZiZV9wYXRoKTsKLSAgICBpZiAociB8fCAhYmVfcGF0aCkgcmV0dXJu IE5VTEw7Ci0KLSAgICByZXR1cm4gYmVfcGF0aDsKKyAgICByZXR1cm4gdnVzYl9iZV9mcm9tX3hz X2xpYnhsX3R5cGUoZ2MsIGxpYnhsX3BhdGgsIExJQlhMX1VTQkNUUkxfVFlQRV9BVVRPKTsKIH0K IAogc3RhdGljIHZvaWQgbGlieGxfX2RldmljZV91c2JjdHJsX2RlbF94ZW5zdG9yZShsaWJ4bF9f Z2MgKmdjLCB1aW50MzJfdCBkb21pZCwKQEAgLTIxNiw3ICszMTEsNyBAQCBzdGF0aWMgdm9pZCBs aWJ4bF9fZGV2aWNlX3VzYmN0cmxfZGVsX3hlbnN0b3JlKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90 IGRvbWlkLAogCiAgICAgbGlieGxfcGF0aCA9IEdDU1BSSU5URigiJXMvZGV2aWNlL3Z1c2IvJWQi LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3hzX2xpYnhsX3BhdGgoZ2MsIGRv bWlkKSwgdXNiY3RybC0+ZGV2aWQpOwotICAgIGJlX3BhdGggPSB2dXNiX2JlX2Zyb21feHNfbGli eGwoZ2MsIGxpYnhsX3BhdGgpOworICAgIGJlX3BhdGggPSB2dXNiX2JlX2Zyb21feHNfbGlieGxf dHlwZShnYywgbGlieGxfcGF0aCwgdXNiY3RybC0+dHlwZSk7CiAKICAgICBmb3IgKDs7KSB7CiAg ICAgICAgIHJjID0gbGlieGxfX3hzX3RyYW5zYWN0aW9uX3N0YXJ0KGdjLCAmdCk7CkBAIC0yNDcs NiArMzQyLDkzIEBAIHN0YXRpYyBjaGFyICpwdnVzYl9nZXRfZGV2aWNlX3R5cGUobGlieGxfdXNi Y3RybF90eXBlIHR5cGUpCiAgICAgfQogfQogCisvKiBTZW5kIHFtcCBjb21tYW5kcyB0byBjcmVh dGUgYSB1c2IgY29udHJvbGxlciBpbiBxZW11LgorICoKKyAqIERlcGVuZGluZyBvbiB0aGUgc3Bl ZWQgKHVzYmN0cmwtPnZlcnNpb24pIHdlIGNyZWF0ZToKKyAqIC0gcGlpeDMtdXNiLXVoY2kgKHZl cnNpb249MSksIGFsd2F5cyAyIHBvcnRzCisgKiAtIHVzYi1laGNpICAgICAgICh2ZXJzaW9uPTIp LCBhbHdheXMgNiBwb3J0cworICogLSBuZWMtdXNiLXhoY2kgICAodmVyc2lvbj0zKSwgdXAgdG8g MTUgcG9ydHMKKyAqLworc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX3VzYmN0cmxfYWRkX2h2bShs aWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3VzYmN0cmwgKnVzYmN0cmwpCit7CisgICAgZmxl eGFycmF5X3QgKnFtcF9hcmdzOworCisgICAgcW1wX2FyZ3MgPSBmbGV4YXJyYXlfbWFrZShnYywg OCwgMSk7CisKKyAgICBzd2l0Y2ggKHVzYmN0cmwtPnZlcnNpb24pIHsKKyAgICBjYXNlIDE6Cisg ICAgICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihxbXBfYXJncywgImRyaXZlciIsICJwaWl4My11 c2ItdWhjaSIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIGZsZXhhcnJh eV9hcHBlbmRfcGFpcihxbXBfYXJncywgImRyaXZlciIsICJ1c2ItZWhjaSIpOworICAgICAgICBi cmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihxbXBfYXJn cywgImRyaXZlciIsICJuZWMtdXNiLXhoY2kiKTsKKyAgICAgICAgZmxleGFycmF5X2FwcGVuZF9w YWlyKHFtcF9hcmdzLCAicDIiLCBHQ1NQUklOVEYoIiVkIiwgdXNiY3RybC0+cG9ydHMpKTsKKyAg ICAgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKHFtcF9hcmdzLCAicDMiLCBHQ1NQUklOVEYoIiVk IiwgdXNiY3RybC0+cG9ydHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg ICAgYXNzZXJ0KDApOyAvKiBTaG91bGQgbm90IGJlIHBvc3NpYmxlLiAqLworICAgICAgICBicmVh azsKKyAgICB9CisKKyAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIocW1wX2FyZ3MsICJpZCIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigieGVudXNiLSVkIiwgdXNiY3RybC0+ ZGV2aWQpKTsKKworICAgIHJldHVybiBsaWJ4bF9fcW1wX3J1bl9jb21tYW5kX2ZsZXhhcnJheShn YywgZG9taWQsICJkZXZpY2VfYWRkIiwgcW1wX2FyZ3MpOworfQorCisvKiBTZW5kIHFtcCBjb21t YW5kcyB0byBkZWxldGUgYSB1c2IgY29udHJvbGxlciBpbiBxZW11LiAgKi8KK3N0YXRpYyBpbnQg bGlieGxfX2RldmljZV91c2JjdHJsX2RlbF9odm0obGlieGxfX2djICpnYywgdWludDMyX3QgZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXZpZCkK K3sKKyAgICBmbGV4YXJyYXlfdCAqcW1wX2FyZ3M7CisKKyAgICBxbXBfYXJncyA9IGZsZXhhcnJh eV9tYWtlKGdjLCAyLCAxKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIocW1wX2FyZ3MsICJp ZCIsIEdDU1BSSU5URigieGVudXNiLSVkIiwgZGV2aWQpKTsKKworICAgIHJldHVybiBsaWJ4bF9f cW1wX3J1bl9jb21tYW5kX2ZsZXhhcnJheShnYywgZG9taWQsICJkZXZpY2VfZGVsIiwgcW1wX2Fy Z3MpOworfQorCisvKiBTZW5kIHFtcCBjb21tYW5kcyB0byBjcmVhdGUgYSB1c2IgZGV2aWNlIGlu IHFlbXUuICovCitzdGF0aWMgaW50IGxpYnhsX19kZXZpY2VfdXNiZGV2X2FkZF9odm0obGlieGxf X2djICpnYywgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfZGV2aWNlX3VzYmRldiAqdXNiZGV2KQoreworICAgIGZsZXhhcnJheV90 ICpxbXBfYXJnczsKKworICAgIHFtcF9hcmdzID0gZmxleGFycmF5X21ha2UoZ2MsIDEyLCAxKTsK KyAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIocW1wX2FyZ3MsICJpZCIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIEdDU1BSSU5URigieGVudXNiLSVkLSVkIiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVzYmRldi0+dS5ob3N0ZGV2Lmhvc3RidXMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2JkZXYtPnUuaG9zdGRldi5ob3N0YWRkcikpOwor ICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihxbXBfYXJncywgImRyaXZlciIsICJ1c2ItaG9zdCIp OworICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihxbXBfYXJncywgImJ1cyIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgIEdDU1BSSU5URigieGVudXNiLSVkLjAiLCB1c2JkZXYtPmN0cmwpKTsK KyAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIocW1wX2FyZ3MsICJwb3J0IiwgR0NTUFJJTlRGKCIl ZCIsIHVzYmRldi0+cG9ydCkpOworICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihxbXBfYXJncywg Imhvc3RidXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVkIiwgdXNi ZGV2LT51Lmhvc3RkZXYuaG9zdGJ1cykpOworICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihxbXBf YXJncywgImhvc3RhZGRyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIl ZCIsIHVzYmRldi0+dS5ob3N0ZGV2Lmhvc3RhZGRyKSk7CisKKyAgICByZXR1cm4gbGlieGxfX3Ft cF9ydW5fY29tbWFuZF9mbGV4YXJyYXkoZ2MsIGRvbWlkLCAiZGV2aWNlX2FkZCIsIHFtcF9hcmdz KTsKK30KKworLyogU2VuZCBxbXAgY29tbWFuZHMgdG8gZGVsZXRlIGEgdXNiIGRldmljZSBpbiBx ZW11LiAqLworc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX3VzYmRldl9kZWxfaHZtKGxpYnhsX19n YyAqZ2MsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpYnhsX2RldmljZV91c2JkZXYgKnVzYmRldikKK3sKKyAgICBmbGV4YXJyYXlfdCAq cW1wX2FyZ3M7CisKKyAgICBxbXBfYXJncyA9IGZsZXhhcnJheV9tYWtlKGdjLCAyLCAxKTsKKyAg ICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIocW1wX2FyZ3MsICJpZCIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgIEdDU1BSSU5URigieGVudXNiLSVkLSVkIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVzYmRldi0+dS5ob3N0ZGV2Lmhvc3RidXMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1c2JkZXYtPnUuaG9zdGRldi5ob3N0YWRkcikpOworCisg ICAgcmV0dXJuIGxpYnhsX19xbXBfcnVuX2NvbW1hbmRfZmxleGFycmF5KGdjLCBkb21pZCwgImRl dmljZV9kZWwiLCBxbXBfYXJncyk7Cit9CisKIC8qIEFPIG9wZXJhdGlvbiB0byBhZGQgYSB1c2Ig Y29udHJvbGxlci4KICAqCiAgKiBHZW5lcmFsbHksIGl0IGRvZXM6CkBAIC0yNzgsMTMgKzQ2MCw2 IEBAIHN0YXRpYyB2b2lkIGxpYnhsX19kZXZpY2VfdXNiY3RybF9hZGQobGlieGxfX2VnYyAqZWdj LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh1c2JjdHJsLT50 eXBlICE9IExJQlhMX1VTQkNUUkxfVFlQRV9QViAmJgotICAgICAgICB1c2JjdHJsLT50eXBlICE9 IExJQlhMX1VTQkNUUkxfVFlQRV9RVVNCKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgIlVuc3VwcG9y dGVkIFVTQiBjb250cm9sbGVyIHR5cGUiKTsKLSAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwotICAg ICAgICBnb3RvIG91dDsKLSAgICB9Ci0KICAgICByYyA9IGxpYnhsX19kZXZpY2VfdXNiY3RybF9h ZGRfeGVuc3RvcmUoZ2MsIGRvbWlkLCB1c2JjdHJsLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhb2Rldi0+dXBkYXRlX2pzb24pOwogICAgIGlmIChyYykgZ290 byBvdXQ7CkBAIC0yOTMsNiArNDY4LDEyIEBAIHN0YXRpYyB2b2lkIGxpYnhsX19kZXZpY2VfdXNi Y3RybF9hZGQobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21pZCwKICAgICByYyA9IGxpYnhs X19kZXZpY2VfZnJvbV91c2JjdHJsKGdjLCBkb21pZCwgdXNiY3RybCwgZGV2aWNlKTsKICAgICBp ZiAocmMpIGdvdG8gb3V0cm07CiAKKyAgICBpZiAoZGV2aWNlLT5iYWNrZW5kX2tpbmQgPT0gTElC WExfX0RFVklDRV9LSU5EX05PTkUpIHsKKyAgICAgICAgcmMgPSBsaWJ4bF9fZGV2aWNlX3VzYmN0 cmxfYWRkX2h2bShnYywgZG9taWQsIHVzYmN0cmwpOworICAgICAgICBpZiAocmMpIGdvdG8gb3V0 cm07CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKwogICAgIGFvZGV2LT5kZXYgPSBkZXZpY2U7 CiAgICAgYW9kZXYtPmFjdGlvbiA9IExJQlhMX19ERVZJQ0VfQUNUSU9OX0FERDsKICAgICBsaWJ4 bF9fd2FpdF9kZXZpY2VfY29ubmVjdGlvbihlZ2MsIGFvZGV2KTsKQEAgLTM0NywxMyArNTI4LDYg QEAgdm9pZCBsaWJ4bF9faW5pdGlhdGVfZGV2aWNlX3VzYmN0cmxfcmVtb3ZlKGxpYnhsX19lZ2Mg KmVnYywKICAgICByYyA9IGxpYnhsX2RldmljZV91c2JjdHJsX2dldGluZm8oQ1RYLCBkb21pZCwg JnVzYmN0cmwsICZ1c2JjdHJsaW5mbyk7CiAgICAgaWYgKHJjKSBnb3RvIG91dDsKIAotICAgIGlm ICh1c2JjdHJsaW5mby50eXBlICE9IExJQlhMX1VTQkNUUkxfVFlQRV9QViAmJgotICAgICAgICB1 c2JjdHJsaW5mby50eXBlICE9IExJQlhMX1VTQkNUUkxfVFlQRV9RVVNCKSB7Ci0gICAgICAgIExP RyhFUlJPUiwgIlVuc3VwcG9ydGVkIFVTQiBjb250cm9sbGVyIHR5cGUiKTsKLSAgICAgICAgcmMg PSBFUlJPUl9GQUlMOwotICAgICAgICBnb3RvIG91dDsKLSAgICB9Ci0KICAgICAvKiBSZW1vdmUg dXNiIGRldmljZXMgZmlyc3QgKi8KICAgICByYyA9IGxpYnhsX19kZXZpY2VfdXNiZGV2X2xpc3Rf Zm9yX3VzYmN0cmwoZ2MsIGRvbWlkLCB1c2JjdHJsX2RldmlkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNiZGV2cywgJm51bV91c2JkZXYpOwpAQCAt MzY4LDYgKzU0MiwxMyBAQCB2b2lkIGxpYnhsX19pbml0aWF0ZV9kZXZpY2VfdXNiY3RybF9yZW1v dmUobGlieGxfX2VnYyAqZWdjLAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKHVzYmN0cmxp bmZvLnR5cGUgPT0gTElCWExfVVNCQ1RSTF9UWVBFX0RFVklDRU1PREVMKSB7CisgICAgICAgIHJj ID0gbGlieGxfX2RldmljZV91c2JjdHJsX2RlbF9odm0oZ2MsIGRvbWlkLCB1c2JjdHJsX2Rldmlk KTsKKyAgICAgICAgaWYgKCFyYykKKyAgICAgICAgICAgIGxpYnhsX19kZXZpY2VfdXNiY3RybF9k ZWxfeGVuc3RvcmUoZ2MsIGRvbWlkLCAmdXNiY3RybCk7CisgICAgICAgIGdvdG8gb3V0OworICAg IH0KKwogICAgIGxpYnhsX2RldmljZV91c2JjdHJsX2Rpc3Bvc2UoJnVzYmN0cmwpOwogICAgIGxp YnhsX3VzYmN0cmxpbmZvX2Rpc3Bvc2UoJnVzYmN0cmxpbmZvKTsKIApAQCAtNDI4LDE1ICs2MDks MjAgQEAgbGlieGxfZGV2aWNlX3VzYmN0cmxfbGlzdChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3Qg ZG9taWQsIGludCAqbnVtKQogICAgIH0pCiAKICAgICAgICAgICAgIGxpYnhsX3BhdGggPSBHQ1NQ UklOVEYoIiVzLyVzIiwgbGlieGxfdnVzYnNfcGF0aCwgKmVudHJ5KTsKLSAgICAgICAgICAgIGJl X3BhdGggPSBSRUFEX1NVQlBBVEgobGlieGxfcGF0aCwgImJhY2tlbmQiKTsKLSAgICAgICAgICAg IGlmICghYmVfcGF0aCkgZ290byBvdXQ7Ci0gICAgICAgICAgICByZXQgPSBsaWJ4bF9fYmFja2Vu ZHBhdGhfcGFyc2VfZG9taWQoZ2MsIGJlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmdXNiY3RybC0+YmFja2VuZF9kb21pZCk7CisgICAgICAg ICAgICBsaWJ4bF91c2JjdHJsX3R5cGVfZnJvbV9zdHJpbmcoUkVBRF9TVUJQQVRIKGxpYnhsX3Bh dGgsICJ0eXBlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnVzYmN0cmwtPnR5cGUpOworICAgICAgICAgICAgaWYgKHVzYmN0cmwtPnR5cGUgPT0gTElCWExf VVNCQ1RSTF9UWVBFX0RFVklDRU1PREVMKSB7CisgICAgICAgICAgICAgICAgYmVfcGF0aCA9IGxp YnhsX3BhdGg7CisgICAgICAgICAgICAgICAgcmV0ID0gbGlieGxfX2dldF9kb21pZChnYywgJnVz YmN0cmwtPmJhY2tlbmRfZG9taWQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg ICAgICBiZV9wYXRoID0gUkVBRF9TVUJQQVRIKGxpYnhsX3BhdGgsICJiYWNrZW5kIik7CisgICAg ICAgICAgICAgICAgaWYgKCFiZV9wYXRoKSBnb3RvIG91dDsKKyAgICAgICAgICAgICAgICByZXQg PSBsaWJ4bF9fYmFja2VuZHBhdGhfcGFyc2VfZG9taWQoZ2MsIGJlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2JjdHJsLT5iYWNr ZW5kX2RvbWlkKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChyZXQpIGdvdG8gb3V0 OwogICAgICAgICAgICAgdXNiY3RybC0+dmVyc2lvbiA9IFJFQURfU1VCUEFUSF9JTlQoYmVfcGF0 aCwgInVzYi12ZXIiKTsKICAgICAgICAgICAgIHVzYmN0cmwtPnBvcnRzID0gUkVBRF9TVUJQQVRI X0lOVChiZV9wYXRoLCAibnVtLXBvcnRzIik7Ci0gICAgICAgICAgICBsaWJ4bF91c2JjdHJsX3R5 cGVfZnJvbV9zdHJpbmcoUkVBRF9TVUJQQVRIKGxpYnhsX3BhdGgsICJ0eXBlIiksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzYmN0cmwtPnR5cGUpOwogCiAj dW5kZWYgUkVBRF9TVUJQQVRICiAjdW5kZWYgUkVBRF9TVUJQQVRIX0lOVApAQCAtNDgxLDI0ICs2 NjcsMzMgQEAgaW50IGxpYnhsX2RldmljZV91c2JjdHJsX2dldGluZm8obGlieGxfY3R4ICpjdHgs IHVpbnQzMl90IGRvbWlkLAogICAgICAgICB0bXAgPyBhdG9pKHRtcCkgOiAtMTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0pCiAKLSAgICBkb21wYXRo ID0gbGlieGxfX3hzX2dldF9kb21wYXRoKGdjLCBkb21pZCk7Ci0gICAgZmVfcGF0aCA9IEdDU1BS SU5URigiJXMvZGV2aWNlL3Z1c2IvJWQiLCBkb21wYXRoLCB1c2JjdHJsLT5kZXZpZCk7CiAgICAg bGlieGxfZG9tX3BhdGggPSBsaWJ4bF9feHNfbGlieGxfcGF0aChnYywgZG9taWQpOwogICAgIGxp YnhsX3BhdGggPSBHQ1NQUklOVEYoIiVzL2RldmljZS92dXNiLyVkIiwgbGlieGxfZG9tX3BhdGgs IHVzYmN0cmwtPmRldmlkKTsKLSAgICBiZV9wYXRoID0gUkVBRF9TVUJQQVRIKGxpYnhsX3BhdGgs ICJiYWNrZW5kIik7Ci0gICAgdXNiY3RybGluZm8tPmJhY2tlbmQgPSBsaWJ4bF9fc3RyZHVwKE5P R0MsIGJlX3BhdGgpOwotICAgIHJjID0gbGlieGxfX2JhY2tlbmRwYXRoX3BhcnNlX2RvbWlkKGdj LCBiZV9wYXRoLCAmdXNiY3RybC0+YmFja2VuZF9kb21pZCk7Ci0gICAgaWYgKHJjKSBnb3RvIG91 dDsKLSAgICB1c2JjdHJsaW5mby0+c3RhdGUgPSBSRUFEX1NVQlBBVEhfSU5UKGZlX3BhdGgsICJz dGF0ZSIpOwotICAgIHVzYmN0cmxpbmZvLT5ldnRjaCA9IFJFQURfU1VCUEFUSF9JTlQoZmVfcGF0 aCwgImV2ZW50LWNoYW5uZWwiKTsKLSAgICB1c2JjdHJsaW5mby0+cmVmX3VyYiA9IFJFQURfU1VC UEFUSF9JTlQoZmVfcGF0aCwgInVyYi1yaW5nLXJlZiIpOwotICAgIHVzYmN0cmxpbmZvLT5yZWZf Y29ubiA9IFJFQURfU1VCUEFUSF9JTlQoZmVfcGF0aCwgInVyYi1yaW5nLXJlZiIpOwotICAgIHVz YmN0cmxpbmZvLT5mcm9udGVuZCA9IGxpYnhsX19zdHJkdXAoTk9HQywgZmVfcGF0aCk7Ci0gICAg dXNiY3RybGluZm8tPmZyb250ZW5kX2lkID0gZG9taWQ7Ci0gICAgdXNiY3RybGluZm8tPnBvcnRz ID0gUkVBRF9TVUJQQVRIX0lOVChiZV9wYXRoLCAibnVtLXBvcnRzIik7Ci0gICAgdXNiY3RybGlu Zm8tPnZlcnNpb24gPSBSRUFEX1NVQlBBVEhfSU5UKGJlX3BhdGgsICJ1c2ItdmVyIik7OwotICAg IHRtcCA9IFJFQURfU1VCUEFUSChsaWJ4bF9wYXRoLCAidHlwZSIpOwotICAgIGxpYnhsX3VzYmN0 cmxfdHlwZV9mcm9tX3N0cmluZyh0bXAsICZ1c2JjdHJsaW5mby0+dHlwZSk7CisgICAgbGlieGxf dXNiY3RybF90eXBlX2Zyb21fc3RyaW5nKFJFQURfU1VCUEFUSChsaWJ4bF9wYXRoLCAidHlwZSIp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNiY3RybGluZm8tPnR5cGUp OworCisgICAgaWYgKHVzYmN0cmxpbmZvLT50eXBlICE9IExJQlhMX1VTQkNUUkxfVFlQRV9ERVZJ Q0VNT0RFTCkgeworICAgICAgICBkb21wYXRoID0gbGlieGxfX3hzX2dldF9kb21wYXRoKGdjLCBk b21pZCk7CisgICAgICAgIGZlX3BhdGggPSBHQ1NQUklOVEYoIiVzL2RldmljZS92dXNiLyVkIiwg ZG9tcGF0aCwgdXNiY3RybC0+ZGV2aWQpOworICAgICAgICBiZV9wYXRoID0gUkVBRF9TVUJQQVRI KGxpYnhsX3BhdGgsICJiYWNrZW5kIik7CisgICAgICAgIHVzYmN0cmxpbmZvLT5iYWNrZW5kID0g bGlieGxfX3N0cmR1cChOT0dDLCBiZV9wYXRoKTsKKyAgICAgICAgcmMgPSBsaWJ4bF9fYmFja2Vu ZHBhdGhfcGFyc2VfZG9taWQoZ2MsIGJlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZ1c2JjdHJsLT5iYWNrZW5kX2RvbWlkKTsKKyAgICAgICAgaWYg KHJjKSBnb3RvIG91dDsKKyAgICAgICAgdXNiY3RybGluZm8tPnN0YXRlID0gUkVBRF9TVUJQQVRI X0lOVChmZV9wYXRoLCAic3RhdGUiKTsKKyAgICAgICAgdXNiY3RybGluZm8tPmV2dGNoID0gUkVB RF9TVUJQQVRIX0lOVChmZV9wYXRoLCAiZXZlbnQtY2hhbm5lbCIpOworICAgICAgICB1c2JjdHJs aW5mby0+cmVmX3VyYiA9IFJFQURfU1VCUEFUSF9JTlQoZmVfcGF0aCwgInVyYi1yaW5nLXJlZiIp OworICAgICAgICB1c2JjdHJsaW5mby0+cmVmX2Nvbm4gPSBSRUFEX1NVQlBBVEhfSU5UKGZlX3Bh dGgsICJ1cmItcmluZy1yZWYiKTsKKyAgICAgICAgdXNiY3RybGluZm8tPmZyb250ZW5kID0gbGli eGxfX3N0cmR1cChOT0dDLCBmZV9wYXRoKTsKKyAgICAgICAgdXNiY3RybGluZm8tPmZyb250ZW5k X2lkID0gZG9taWQ7CisgICAgICAgIHVzYmN0cmxpbmZvLT5wb3J0cyA9IFJFQURfU1VCUEFUSF9J TlQoYmVfcGF0aCwgIm51bS1wb3J0cyIpOworICAgICAgICB1c2JjdHJsaW5mby0+dmVyc2lvbiA9 IFJFQURfU1VCUEFUSF9JTlQoYmVfcGF0aCwgInVzYi12ZXIiKTsKKyAgICB9IGVsc2UgeworICAg ICAgICB1c2JjdHJsaW5mby0+cG9ydHMgPSBSRUFEX1NVQlBBVEhfSU5UKGxpYnhsX3BhdGgsICJu dW0tcG9ydHMiKTsKKyAgICAgICAgdXNiY3RybGluZm8tPnZlcnNpb24gPSBSRUFEX1NVQlBBVEhf SU5UKGxpYnhsX3BhdGgsICJ1c2ItdmVyIik7CisgICAgICAgIHJjID0gbGlieGxfX2dldF9kb21p ZChnYywgJnVzYmN0cmwtPmJhY2tlbmRfZG9taWQpOworICAgICAgICBpZiAocmMpIGdvdG8gb3V0 OworICAgIH0KIAogI3VuZGVmIFJFQURfU1VCUEFUSAogI3VuZGVmIFJFQURfU1VCUEFUSF9JTlQK QEAgLTc5MCw2ICs5ODUsMjEgQEAgbGlieGxfZGV2aWNlX3VzYmRldl9saXN0KGxpYnhsX2N0eCAq Y3R4LCB1aW50MzJfdCBkb21pZCwgaW50ICpudW0pCiAgICAgcmV0dXJuIHVzYmRldnM7CiB9CiAK K3N0YXRpYyBjaGFyICp2dXNiX2dldF9wb3J0X3BhdGgobGlieGxfX2djICpnYywgdWludDMyX3Qg ZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3VzYmN0cmxfdHlw ZSB0eXBlLCBpbnQgY3RybCwgaW50IHBvcnQpCit7CisgICAgY2hhciAqcGF0aDsKKworICAgIGlm ICh0eXBlID09IExJQlhMX1VTQkNUUkxfVFlQRV9ERVZJQ0VNT0RFTCkKKyAgICAgICAgcGF0aCA9 IEdDU1BSSU5URigiJXMvZGV2aWNlL3Z1c2IiLCBsaWJ4bF9feHNfbGlieGxfcGF0aChnYywgZG9t aWQpKTsKKyAgICBlbHNlCisgICAgICAgIHBhdGggPSBHQ1NQUklOVEYoIiVzL2JhY2tlbmQvJXMv JWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX194c19nZXRfZG9tcGF0aChnYywg TElCWExfVE9PTFNUQUNLX0RPTUlEKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwdnVzYl9n ZXRfZGV2aWNlX3R5cGUodHlwZSksIGRvbWlkKTsKKworICAgIHJldHVybiBHQ1NQUklOVEYoIiVz LyVkL3BvcnQvJWQiLCBwYXRoLCBjdHJsLCBwb3J0KTsKK30KKwogLyogZmluZCBmaXJzdCB1bnVz ZWQgY29udHJvbGxlcjpwb3J0IGFuZCBnaXZlIHRoYXQgdG8gdXNiIGRldmljZSAqLwogc3RhdGlj IGludAogbGlieGxfX2RldmljZV91c2JkZXZfc2V0X2RlZmF1bHRfdXNiY3RybChsaWJ4bF9fZ2Mg KmdjLCB1aW50MzJfdCBkb21pZCwKQEAgLTgwOSwxMCArMTAxOSw4IEBAIGxpYnhsX19kZXZpY2Vf dXNiZGV2X3NldF9kZWZhdWx0X3VzYmN0cmwobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQs CiAgICAgICAgIGZvciAoaiA9IDA7IGogPCB1c2JjdHJsc1tpXS5wb3J0czsgaisrKSB7CiAgICAg ICAgICAgICBjb25zdCBjaGFyICpwYXRoLCAqdG1wOwogCi0gICAgICAgICAgICBwYXRoID0gR0NT UFJJTlRGKCIlcy9iYWNrZW5kLyVzLyVkLyVkL3BvcnQvJWQiLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsaWJ4bF9feHNfZ2V0X2RvbXBhdGgoZ2MsIExJQlhMX1RPT0xTVEFDS19ET01J RCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB2dXNiX2dldF9kZXZpY2VfdHlwZSh1 c2JjdHJsc1tpXS50eXBlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9taWQsIHVz YmN0cmxzW2ldLmRldmlkLCBqICsgMSk7CisgICAgICAgICAgICBwYXRoID0gdnVzYl9nZXRfcG9y dF9wYXRoKGdjLCBkb21pZCwgdXNiY3RybHNbaV0udHlwZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdXNiY3RybHNbaV0uZGV2aWQsIGogKyAxKTsKICAgICAgICAgICAg IHJjID0gbGlieGxfX3hzX3JlYWRfY2hlY2tlZChnYywgWEJUX05VTEwsIHBhdGgsICZ0bXApOwog ICAgICAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsKIApAQCAtODgxLDEzICsxMDg5LDYgQEAgc3Rh dGljIGludCBsaWJ4bF9fZGV2aWNlX3VzYmRldl9zZXRkZWZhdWx0KGxpYnhsX19nYyAqZ2MsCiAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAodXNiY3Ry bC0+dHlwZSAhPSBMSUJYTF9VU0JDVFJMX1RZUEVfUFYgJiYKLSAgICAgICAgICAgICAgICB1c2Jj dHJsLT50eXBlICE9IExJQlhMX1VTQkNUUkxfVFlQRV9RVVNCKSB7Ci0gICAgICAgICAgICAgICAg TE9HKEVSUk9SLCAiVW5zdXBwb3J0ZWQgVVNCIGNvbnRyb2xsZXIgdHlwZSIpOwotICAgICAgICAg ICAgICAgIHJjID0gRVJST1JfRkFJTDsKLSAgICAgICAgICAgICAgICBnb3RvIG91dDsKLSAgICAg ICAgICAgIH0KLQogICAgICAgICAgICAgcmMgPSBsaWJ4bF9fZGV2aWNlX3VzYmN0cmxfYWRkX3hl bnN0b3JlKGdjLCBkb21pZCwgdXNiY3RybCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfanNvbik7CiAgICAgICAgICAgICBpZiAocmMp IGdvdG8gb3V0OwpAQCAtMTAxMywxMCArMTIxNCw4IEBAIHN0YXRpYyBpbnQgbGlieGxfX2Rldmlj ZV91c2JkZXZfYWRkX3hlbnN0b3JlKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAg ICAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsKICAgICAgICAgfQogCi0gICAgICAgIGJlX3BhdGgg PSBHQ1NQUklOVEYoIiVzL2JhY2tlbmQvJXMvJWQvJWQvcG9ydC8lZCIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlieGxfX3hzX2dldF9kb21wYXRoKGdjLCBMSUJYTF9UT09MU1RBQ0tf RE9NSUQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB2dXNiX2dldF9kZXZpY2VfdHlw ZSh0eXBlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZCwgdXNiZGV2LT5jdHJs LCB1c2JkZXYtPnBvcnQpOworICAgICAgICBiZV9wYXRoID0gdnVzYl9nZXRfcG9ydF9wYXRoKGdj LCBkb21pZCwgdHlwZSwgdXNiZGV2LT5jdHJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVzYmRldi0+cG9ydCk7CiAKICAgICAgICAgTE9HKERFQlVHLCAiQWRkaW5nIHVz YiBkZXZpY2UgJXMgdG8geGVuc3RvcmU6IGNvbnRyb2xsZXIgJWQsIHBvcnQgJWQiLAogICAgICAg ICAgICAgYnVzaWQsIHVzYmRldi0+Y3RybCwgdXNiZGV2LT5wb3J0KTsKQEAgLTEwNDQsMTAgKzEy NDMsNyBAQCBzdGF0aWMgaW50IGxpYnhsX19kZXZpY2VfdXNiZGV2X3JlbW92ZV94ZW5zdG9yZShs aWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKIHsKICAgICBjaGFyICpiZV9wYXRoOwogCi0g ICAgYmVfcGF0aCA9IEdDU1BSSU5URigiJXMvYmFja2VuZC8lcy8lZC8lZC9wb3J0LyVkIiwKLSAg ICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX194c19nZXRfZG9tcGF0aChnYywgTElCWExfVE9P TFNUQUNLX0RPTUlEKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHB2dXNiX2dldF9kZXZpY2Vf dHlwZSh0eXBlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvbWlkLCB1c2JkZXYtPmN0cmws IHVzYmRldi0+cG9ydCk7CisgICAgYmVfcGF0aCA9IHZ1c2JfZ2V0X3BvcnRfcGF0aChnYywgZG9t aWQsIHR5cGUsIHVzYmRldi0+Y3RybCwgdXNiZGV2LT5wb3J0KTsKIAogICAgIExPRyhERUJVRywg IlJlbW92aW5nIHVzYiBkZXZpY2UgZnJvbSB4ZW5zdG9yZTogY29udHJvbGxlciAlZCwgcG9ydCAl ZCIsCiAgICAgICAgIHVzYmRldi0+Y3RybCwgdXNiZGV2LT5wb3J0KTsKQEAgLTEwNjAsMTAgKzEy NTYsOCBAQCBzdGF0aWMgY2hhciAqdXNiZGV2X2J1c2lkX2Zyb21fY3RybHBvcnQobGlieGxfX2dj ICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlieGxfdXNiY3RybF90eXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIGxpYnhsX194c19y ZWFkKGdjLCBYQlRfTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIl cy9iYWNrZW5kLyVzLyVkLyVkL3BvcnQvJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfX3hzX2dldF9kb21wYXRoKGdjLCBMSUJYTF9UT09MU1RBQ0tfRE9NSUQpLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHZ1c2JfZ2V0X2RldmljZV90eXBlKHR5cGUpLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9taWQsIHVzYmRldi0+Y3RybCwgdXNiZGV2 LT5wb3J0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHZ1c2JfZ2V0X3BvcnRfcGF0aChn YywgZG9taWQsIHR5cGUsIHVzYmRldi0+Y3RybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVzYmRldi0+cG9ydCkpOwogfQogCiAvKiBnZXQgb3JpZ2luYWwg ZHJpdmVyIHBhdGggb2YgdXNiIGludGVyZmFjZSwgc3RvcmVkIGluIEBkcnZwYXRoICovCkBAIC0x NDI3LDYgKzE2MjEsMTggQEAgc3RhdGljIGludCBkb191c2JkZXZfYWRkKGxpYnhsX19nYyAqZ2Ms IHVpbnQzMl90IGRvbWlkLAogCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTElCWExfVVNCQ1RS TF9UWVBFX0RFVklDRU1PREVMOgorICAgICAgICByYyA9IGxpYnhsX19kZXZpY2VfdXNiZGV2X2Fk ZF94ZW5zdG9yZShnYywgZG9taWQsIHVzYmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTElCWExfVVNCQ1RSTF9UWVBFX0RFVklDRU1PREVMLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfanNvbik7 CisgICAgICAgIGlmIChyYykgZ290byBvdXQ7CisKKyAgICAgICAgcmMgPSBsaWJ4bF9fZGV2aWNl X3VzYmRldl9hZGRfaHZtKGdjLCBkb21pZCwgdXNiZGV2KTsKKyAgICAgICAgaWYgKHJjKSB7Cisg ICAgICAgICAgICBsaWJ4bF9fZGV2aWNlX3VzYmRldl9yZW1vdmVfeGVuc3RvcmUoZ2MsIGRvbWlk LCB1c2JkZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM SUJYTF9VU0JDVFJMX1RZUEVfREVWSUNFTU9ERUwpOworICAgICAgICAgICAgZ290byBvdXQ7Cisg ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HKEVSUk9S LCAiVW5zdXBwb3J0ZWQgdXNiIGNvbnRyb2xsZXIgdHlwZSIpOwogICAgICAgICByYyA9IEVSUk9S X0ZBSUw7CkBAIC0xNTk0LDYgKzE4MDAsMTkgQEAgc3RhdGljIGludCBkb191c2JkZXZfcmVtb3Zl KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogCiAgICAgICAgIGJyZWFrOwogICAgIGNh c2UgTElCWExfVVNCQ1RSTF9UWVBFX0RFVklDRU1PREVMOgorICAgICAgICByYyA9IGxpYnhsX19k ZXZpY2VfdXNiZGV2X3JlbW92ZV94ZW5zdG9yZShnYywgZG9taWQsIHVzYmRldiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9VU0JDVFJMX1RZUEVf REVWSUNFTU9ERUwpOworICAgICAgICBpZiAocmMpIGdvdG8gb3V0OworCisgICAgICAgIHJjID0g bGlieGxfX2RldmljZV91c2JkZXZfZGVsX2h2bShnYywgZG9taWQsIHVzYmRldik7CisgICAgICAg IGlmIChyYykgeworICAgICAgICAgICAgbGlieGxfX2RldmljZV91c2JkZXZfYWRkX3hlbnN0b3Jl KGdjLCBkb21pZCwgdXNiZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExJQlhMX1VTQkNUUkxfVFlQRV9ERVZJQ0VNT0RFTCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisgICAgICAgICAgICBnb3Rv IG91dDsKKyAgICAgICAgfQorCisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg IExPRyhFUlJPUiwgIlVuc3VwcG9ydGVkIHVzYiBjb250cm9sbGVyIHR5cGUiKTsKICAgICAgICAg cmMgPSBFUlJPUl9GQUlMOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jIGIv dG9vbHMvbGlieGwveGxfY21kaW1wbC5jCmluZGV4IDYyMjM3ZDAuLmNiNDNjMDAgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYworKysgYi90b29scy9saWJ4bC94bF9jbWRpbXBs LmMKQEAgLTM3MjgsMTQgKzM3MjgsMTQgQEAgaW50IG1haW5fdXNibGlzdChpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IG51bWN0cmw7ICsraSkgewot ICAgICAgICBwcmludGYoIiUtNnMgJS02cyAlLTNzICUtNXMgJS03cyAlLTVzXG4iLAorICAgICAg ICBwcmludGYoIiUtNnMgJS0xMnMgJS0zcyAlLTVzICUtN3MgJS01c1xuIiwKICAgICAgICAgICAg ICAgICAiRGV2aWQiLCAiVHlwZSIsICJCRSIsICJzdGF0ZSIsICJ1c2ItdmVyIiwgInBvcnRzIik7 CiAKICAgICAgICAgbGlieGxfdXNiY3RybGluZm9faW5pdCgmdXNiY3RybGluZm8pOwogCiAgICAg ICAgIGlmICghbGlieGxfZGV2aWNlX3VzYmN0cmxfZ2V0aW5mbyhjdHgsIGRvbWlkLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNiY3RybHNbaV0sICZ1c2JjdHJsaW5mbykpIHsK LSAgICAgICAgICAgIHByaW50ZigiJS02ZCAlLTZzICUtM2QgJS01ZCAlLTdkICUtNWRcbiIsCisg ICAgICAgICAgICBwcmludGYoIiUtNmQgJS0xMnMgJS0zZCAlLTVkICUtN2QgJS01ZFxuIiwKICAg ICAgICAgICAgICAgICAgICAgdXNiY3RybGluZm8uZGV2aWQsCiAgICAgICAgICAgICAgICAgICAg IGxpYnhsX3VzYmN0cmxfdHlwZV90b19zdHJpbmcodXNiY3RybGluZm8udHlwZSksCiAgICAgICAg ICAgICAgICAgICAgIHVzYmN0cmxpbmZvLmJhY2tlbmRfaWQsIHVzYmN0cmxpbmZvLnN0YXRlLAot LSAKMi42LjYKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK