From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v3 3/4] libxl: add HVM usb passthrough support Date: Tue, 20 Sep 2016 14:01:09 +0200 Message-ID: <1474372870-9408-4-git-send-email-jgross@suse.com> References: <1474372870-9408-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: <1474372870-9408-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+Ci0tLQpWMzogcmVuYW1lZCBwdnVz Yl9nZXRfcG9ydF9wYXRoKCkgdG8gdnVzYl9nZXRfcG9ydF9wYXRoKCkgKEdlb3JnZSBEdW5sYXAp CgpWMjogY29kZSBzdHlsZSBpc3N1ZXMgKFdlaSBMaXUpCiAgICBhZGRpbmcgc29tZSBhc3NlcnQo KXMgKFdlaSBMaXUpCiAgICBzcGxpdCBvdXQgbGlieGxfX2RldmljZV91c2JjdHJsX2RlbF94ZW5z dG9yZSgpIChXZWkgTGl1KQotLS0KIHRvb2xzL2xpYnhsL2xpYnhsX2RldmljZS5jIHwgICAzICst CiB0b29scy9saWJ4bC9saWJ4bF91c2IuYyAgICB8IDM5NyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0KIHRvb2xzL2xpYnhsL3hsX2NtZGltcGwuYyAgIHwgICA0 ICstCiAzIGZpbGVzIGNoYW5nZWQsIDMxMSBpbnNlcnRpb25zKCspLCA5MyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYyBiL3Rvb2xzL2xpYnhsL2xp YnhsX2RldmljZS5jCmluZGV4IGY1M2Y3NzIuLjJhY2ZiNDggMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xp YnhsL2xpYnhsX2RldmljZS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RldmljZS5jCkBAIC04 MDgsOCArODA4LDcgQEAgdm9pZCBsaWJ4bF9fZGV2aWNlc19kZXN0cm95KGxpYnhsX19lZ2MgKmVn YywgbGlieGxfX2RldmljZXNfcmVtb3ZlX3N0YXRlICpkcnMpCiAgICAgICAgICAgICAgICAgYW9k ZXYtPmFjdGlvbiA9IExJQlhMX19ERVZJQ0VfQUNUSU9OX1JFTU9WRTsKICAgICAgICAgICAgICAg ICBhb2Rldi0+ZGV2ID0gZGV2OwogICAgICAgICAgICAgICAgIGFvZGV2LT5mb3JjZSA9IGRycy0+ Zm9yY2U7Ci0gICAgICAgICAgICAgICAgaWYgKGRldi0+YmFja2VuZF9raW5kID09IExJQlhMX19E RVZJQ0VfS0lORF9WVVNCIHx8Ci0gICAgICAgICAgICAgICAgICAgIGRldi0+YmFja2VuZF9raW5k ID09IExJQlhMX19ERVZJQ0VfS0lORF9RVVNCKQorICAgICAgICAgICAgICAgIGlmIChkZXYtPmtp bmQgPT0gTElCWExfX0RFVklDRV9LSU5EX1ZVU0IpCiAgICAgICAgICAgICAgICAgICAgIGxpYnhs X19pbml0aWF0ZV9kZXZpY2VfdXNiY3RybF9yZW1vdmUoZWdjLCBhb2Rldik7CiAgICAgICAgICAg ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBsaWJ4bF9faW5pdGlhdGVfZGV2aWNlX2dl bmVyaWNfcmVtb3ZlKGVnYywgYW9kZXYpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxf dXNiLmMgYi90b29scy9saWJ4bC9saWJ4bF91c2IuYwppbmRleCAyNDkzNDY0Li43NjI2MGIxIDEw MDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF91c2IuYworKysgYi90b29scy9saWJ4bC9saWJ4 bF91c2IuYwpAQCAtMTcsNiArMTcsNyBAQAogCiAjaW5jbHVkZSAibGlieGxfaW50ZXJuYWwuaCIK ICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2luY2x1ZGUgPHhlbi9pby91c2JpZi5oPgogCiAjZGVm aW5lIFVTQkJBQ0tfSU5GT19QQVRIICIvbGlieGwvdXNiYmFjayIKIApAQCAtNDMsMTIgKzQ0LDYg QEAgc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX3VzYmN0cmxfc2V0ZGVmYXVsdChsaWJ4bF9fZ2Mg KmdjLCB1aW50MzJfdCBkb21pZCwKICAgICBpbnQgcmM7CiAgICAgbGlieGxfZG9tYWluX3R5cGUg ZG9tdHlwZSA9IGxpYnhsX19kb21haW5fdHlwZShnYywgZG9taWQpOwogCi0gICAgaWYgKCF1c2Jj dHJsLT52ZXJzaW9uKQotICAgICAgICB1c2JjdHJsLT52ZXJzaW9uID0gMjsKLQotICAgIGlmICgh dXNiY3RybC0+cG9ydHMpCi0gICAgICAgIHVzYmN0cmwtPnBvcnRzID0gODsKLQogICAgIGlmICh1 c2JjdHJsLT50eXBlID09IExJQlhMX1VTQkNUUkxfVFlQRV9BVVRPKSB7CiAgICAgICAgIGlmIChk b210eXBlID09IExJQlhMX0RPTUFJTl9UWVBFX1BWKSB7CiAgICAgICAgICAgICByYyA9IHVzYmJh Y2tfaXNfbG9hZGVkKGdjKTsKQEAgLTYyLDYgKzU3LDcxIEBAIHN0YXRpYyBpbnQgbGlieGxfX2Rl dmljZV91c2JjdHJsX3NldGRlZmF1bHQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAg ICAgICAgIH0KICAgICB9CiAKKyAgICBzd2l0Y2ggKHVzYmN0cmwtPnR5cGUpIHsKKyAgICBjYXNl IExJQlhMX1VTQkNUUkxfVFlQRV9QVjoKKyAgICBjYXNlIExJQlhMX1VTQkNUUkxfVFlQRV9RVVNC OgorICAgICAgICBpZiAoIXVzYmN0cmwtPnZlcnNpb24pCisgICAgICAgICAgICB1c2JjdHJsLT52 ZXJzaW9uID0gMjsKKyAgICAgICAgaWYgKHVzYmN0cmwtPnZlcnNpb24gPCAxIHx8IHVzYmN0cmwt PnZlcnNpb24gPiAyKSB7CisgICAgICAgICAgICBMT0coRVJST1IsCisgICAgICAgICAgICAgICAg IlVTQiB2ZXJzaW9uIGZvciBwYXJhdmlydHVhbGl6ZWQgZGV2aWNlcyBtdXN0IGJlIDEgb3IgMiIp OworICAgICAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsKKyAgICAgICAgICAgIGdvdG8gb3V0Owor ICAgICAgICB9CisgICAgICAgIGlmICghdXNiY3RybC0+cG9ydHMpCisgICAgICAgICAgICB1c2Jj dHJsLT5wb3J0cyA9IDg7CisgICAgICAgIGlmICh1c2JjdHJsLT5wb3J0cyA8IDEgfHwgdXNiY3Ry bC0+cG9ydHMgPiBVU0JJRl9NQVhfUE9SVE5SKSB7CisgICAgICAgICAgICBMT0coRVJST1IsICJO dW1iZXIgb2YgcG9ydHMgZm9yIFVTQiBjb250cm9sbGVyIGlzIGxpbWl0ZWQgdG8gJXUiLAorICAg ICAgICAgICAgICAgIFVTQklGX01BWF9QT1JUTlIpOworICAgICAgICAgICAgcmMgPSBFUlJPUl9J TlZBTDsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor ICAgIGNhc2UgTElCWExfVVNCQ1RSTF9UWVBFX0RFVklDRU1PREVMOgorICAgICAgICBpZiAoIXVz YmN0cmwtPnZlcnNpb24pCisgICAgICAgICAgICB1c2JjdHJsLT52ZXJzaW9uID0gMjsKKyAgICAg ICAgc3dpdGNoICh1c2JjdHJsLT52ZXJzaW9uKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAg ICAgIC8qIHVoY2kgY29udHJvbGxlciBpbiBxZW11IGhhcyBmaXhlZCBudW1iZXIgb2YgcG9ydHMu ICovCisgICAgICAgICAgICBpZiAodXNiY3RybC0+cG9ydHMgJiYgdXNiY3RybC0+cG9ydHMgIT0g MikgeworICAgICAgICAgICAgICAgIExPRyhFUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgIk51 bWJlciBvZiBwb3J0cyBmb3IgVVNCIGNvbnRyb2xsZXIgb2YgdmVyc2lvbiAxIGlzIGFsd2F5cyAy Iik7CisgICAgICAgICAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsKKyAgICAgICAgICAgICAgICBn b3RvIG91dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVzYmN0cmwtPnBvcnRzID0gMjsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAvKiBlaGNp IGNvbnRyb2xsZXIgaW4gcWVtdSBoYXMgZml4ZWQgbnVtYmVyIG9mIHBvcnRzLiAqLworICAgICAg ICAgICAgaWYgKHVzYmN0cmwtPnBvcnRzICYmIHVzYmN0cmwtPnBvcnRzICE9IDYpIHsKKyAgICAg ICAgICAgICAgICBMT0coRVJST1IsCisgICAgICAgICAgICAgICAgICAgICJOdW1iZXIgb2YgcG9y dHMgZm9yIFVTQiBjb250cm9sbGVyIG9mIHZlcnNpb24gMiBpcyBhbHdheXMgNiIpOworICAgICAg ICAgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICB1c2JjdHJsLT5wb3J0cyA9IDY7CisgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgaWYgKCF1c2JjdHJsLT5wb3J0 cykKKyAgICAgICAgICAgICAgICB1c2JjdHJsLT5wb3J0cyA9IDg7CisgICAgICAgICAgICAvKiB4 aGNpIGNvbnRyb2xsZXIgaW4gcWVtdSBzdXBwb3J0cyB1cCB0byAxNSBwb3J0cy4gKi8KKyAgICAg ICAgICAgIGlmICh1c2JjdHJsLT5wb3J0cyA+IDE1KSB7CisgICAgICAgICAgICAgICAgTE9HKEVS Uk9SLAorICAgICAgICAgICAgICAgICAgICAiTnVtYmVyIG9mIHBvcnRzIGZvciBVU0IgY29udHJv bGxlciBvZiB2ZXJzaW9uIDMgaXMgbGltaXRlZCB0byAxNSIpOworICAgICAgICAgICAgICAgIHJj ID0gRVJST1JfSU5WQUw7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhF UlJPUiwgIklsbGVnYWwgVVNCIHZlcnNpb24iKTsKKyAgICAgICAgICAgIHJjID0gRVJST1JfSU5W QUw7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg ICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICByYyA9IGxpYnhsX19yZXNv bHZlX2RvbWlkKGdjLCB1c2JjdHJsLT5iYWNrZW5kX2RvbW5hbWUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmdXNiY3RybC0+YmFja2VuZF9kb21pZCk7CiAKQEAgLTc1LDkgKzEzNSwy MCBAQCBzdGF0aWMgaW50IGxpYnhsX19kZXZpY2VfZnJvbV91c2JjdHJsKGxpYnhsX19nYyAqZ2Ms IHVpbnQzMl90IGRvbWlkLAogewogICAgIGRldmljZS0+YmFja2VuZF9kZXZpZCAgID0gdXNiY3Ry bC0+ZGV2aWQ7CiAgICAgZGV2aWNlLT5iYWNrZW5kX2RvbWlkICAgPSB1c2JjdHJsLT5iYWNrZW5k X2RvbWlkOwotICAgIGRldmljZS0+YmFja2VuZF9raW5kICAgID0gKHVzYmN0cmwtPnR5cGUgPT0g TElCWExfVVNCQ1RSTF9UWVBFX1BWKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBM SUJYTF9fREVWSUNFX0tJTkRfVlVTQgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBM SUJYTF9fREVWSUNFX0tJTkRfUVVTQjsKKyAgICBzd2l0Y2ggKHVzYmN0cmwtPnR5cGUpIHsKKyAg ICBjYXNlIExJQlhMX1VTQkNUUkxfVFlQRV9QVjoKKyAgICAgICAgZGV2aWNlLT5iYWNrZW5kX2tp bmQgPSBMSUJYTF9fREVWSUNFX0tJTkRfVlVTQjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBM SUJYTF9VU0JDVFJMX1RZUEVfUVVTQjoKKyAgICAgICAgZGV2aWNlLT5iYWNrZW5kX2tpbmQgPSBM SUJYTF9fREVWSUNFX0tJTkRfUVVTQjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMSUJYTF9V U0JDVFJMX1RZUEVfREVWSUNFTU9ERUw6CisgICAgICAgIGRldmljZS0+YmFja2VuZF9raW5kID0g TElCWExfX0RFVklDRV9LSU5EX05PTkU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg ICAgICAgIGFzc2VydCgwKTsgLyogY2FuJ3QgcmVhbGx5IGhhcHBlbi4gKi8KKyAgICAgICAgYnJl YWs7CisgICAgfQogICAgIGRldmljZS0+ZGV2aWQgICAgICAgICAgID0gdXNiY3RybC0+ZGV2aWQ7 CiAgICAgZGV2aWNlLT5kb21pZCAgICAgICAgICAgPSBkb21pZDsKICAgICBkZXZpY2UtPmtpbmQg ICAgICAgICAgICA9IExJQlhMX19ERVZJQ0VfS0lORF9WVVNCOwpAQCAtODUsNiArMTU2LDM1IEBA IHN0YXRpYyBpbnQgbGlieGxfX2RldmljZV9mcm9tX3VzYmN0cmwobGlieGxfX2djICpnYywgdWlu dDMyX3QgZG9taWQsCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICp2dXNi X2JlX2Zyb21feHNfbGlieGxfdHlwZShsaWJ4bF9fZ2MgKmdjLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxpYnhsX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfdXNiY3RybF90 eXBlIHR5cGUpCit7CisgICAgY29uc3QgY2hhciAqYmVfcGF0aCA9IE5VTEwsICp0bXA7CisgICAg aW50IHI7CisKKyAgICBpZiAodHlwZSA9PSBMSUJYTF9VU0JDVFJMX1RZUEVfQVVUTykgeworICAg ICAgICByID0gbGlieGxfX3hzX3JlYWRfY2hlY2tlZChnYywgWEJUX05VTEwsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXMvdHlwZSIsIGxpYnhsX3BhdGgp LCAmdG1wKTsKKyAgICAgICAgaWYgKHIgfHwgbGlieGxfdXNiY3RybF90eXBlX2Zyb21fc3RyaW5n KHRtcCwgJnR5cGUpKQorICAgICAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKHR5 cGUgPT0gTElCWExfVVNCQ1RSTF9UWVBFX0RFVklDRU1PREVMKSB7CisgICAgICAgIGJlX3BhdGgg PSBsaWJ4bF9wYXRoOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICByID0gbGlieGxf X3hzX3JlYWRfY2hlY2tlZChnYywgWEJUX05VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0NTUFJJTlRGKCIlcy9iYWNrZW5kIiwgbGlieGxfcGF0aCksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmJlX3BhdGgpOworICAgIGlmIChyKQorICAgICAgICBiZV9wYXRo ID0gTlVMTDsKKworb3V0OgorICAgIHJldHVybiBiZV9wYXRoOworfQorCiAvKiBBZGQgdXNiY3Ry bCBpbmZvcm1hdGlvbiB0byB4ZW5zdG9yZS4KICAqCiAgKiBBZGRpbmcgYSB1c2IgY29udHJvbGxl ciB3aWxsIGFkZCBhIG5ldyAncXVzYicgb3IgJ3Z1c2InIGRldmljZSBpbiB4ZW5zdG9yZSwKQEAg LTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBpbnQgbGlieGxfX2RldmljZV91c2JjdHJsX2FkZF94ZW5z dG9yZShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVwZGF0ZV9qc29uKQogewogICAgIGxpYnhs X19kZXZpY2UgKmRldmljZTsKLSAgICBmbGV4YXJyYXlfdCAqZnJvbnQ7CisgICAgZmxleGFycmF5 X3QgKmZyb250ID0gTlVMTDsKICAgICBmbGV4YXJyYXlfdCAqYmFjazsKICAgICB4c190cmFuc2Fj dGlvbl90IHQgPSBYQlRfTlVMTDsKICAgICBpbnQgaSwgcmM7CkBAIC0xMTIsMTMgKzIxMiwyMSBA QCBzdGF0aWMgaW50IGxpYnhsX19kZXZpY2VfdXNiY3RybF9hZGRfeGVuc3RvcmUobGlieGxfX2dj ICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgcmMgPSBsaWJ4bF9fZGV2aWNlX2Zyb21fdXNiY3Ry bChnYywgZG9taWQsIHVzYmN0cmwsIGRldmljZSk7CiAgICAgaWYgKHJjKSBnb3RvIG91dDsKIAot ICAgIGZyb250ID0gZmxleGFycmF5X21ha2UoZ2MsIDQsIDEpOwogICAgIGJhY2sgPSBmbGV4YXJy YXlfbWFrZShnYywgMTIsIDEpOwogCi0gICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGJhY2ssICJm cm9udGVuZC1pZCIsIEdDU1BSSU5URigiJWQiLCBkb21pZCkpOwotICAgIGZsZXhhcnJheV9hcHBl bmRfcGFpcihiYWNrLCAib25saW5lIiwgIjEiKTsKLSAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIo YmFjaywgInN0YXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIlZCIs IFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nKSk7CisgICAgaWYgKGRldmljZS0+YmFja2VuZF9raW5k ICE9IExJQlhMX19ERVZJQ0VfS0lORF9OT05FKSB7CisgICAgICAgIGZyb250ID0gZmxleGFycmF5 X21ha2UoZ2MsIDQsIDEpOworCisgICAgICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihiYWNrLCAi ZnJvbnRlbmQtaWQiLCBHQ1NQUklOVEYoIiVkIiwgZG9taWQpKTsKKyAgICAgICAgZmxleGFycmF5 X2FwcGVuZF9wYWlyKGJhY2ssICJvbmxpbmUiLCAiMSIpOworICAgICAgICBmbGV4YXJyYXlfYXBw ZW5kX3BhaXIoYmFjaywgInN0YXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdD U1BSSU5URigiJWQiLCBYZW5idXNTdGF0ZUluaXRpYWxpc2luZykpOworICAgICAgICBmbGV4YXJy YXlfYXBwZW5kX3BhaXIoZnJvbnQsICJiYWNrZW5kLWlkIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdDU1BSSU5URigiJWQiLCB1c2JjdHJsLT5iYWNrZW5kX2RvbWlkKSk7CisgICAg ICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihmcm9udCwgInN0YXRlIiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJWQiLCBYZW5idXNTdGF0ZUluaXRpYWxpc2luZykp OworICAgIH0KKwogICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihiYWNrLCAidHlwZSIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopbGlieGxfdXNiY3RybF90eXBlX3RvX3N0cmlu Zyh1c2JjdHJsLT50eXBlKSk7CiAgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGJhY2ssICJ1c2It dmVyIiwgR0NTUFJJTlRGKCIlZCIsIHVzYmN0cmwtPnZlcnNpb24pKTsKQEAgLTEyNywxMSArMjM1 LDYgQEAgc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX3VzYmN0cmxfYWRkX3hlbnN0b3JlKGxpYnhs X19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgIGZvciAoaSA9IDA7IGkgPCB1c2JjdHJsLT5w b3J0czsgaSsrKQogICAgICAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIoYmFjaywgR0NTUFJJTlRG KCJwb3J0LyVkIiwgaSArIDEpLCAiIik7CiAKLSAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIoZnJv bnQsICJiYWNrZW5kLWlkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIl ZCIsIHVzYmN0cmwtPmJhY2tlbmRfZG9taWQpKTsKLSAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIo ZnJvbnQsICJzdGF0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJWQi LCBYZW5idXNTdGF0ZUluaXRpYWxpc2luZykpOwotCiAgICAgaWYgKHVwZGF0ZV9qc29uKSB7CiAg ICAgICAgIGxvY2sgPSBsaWJ4bF9fbG9ja19kb21haW5fdXNlcmRhdGEoZ2MsIGRvbWlkKTsKICAg ICAgICAgaWYgKCFsb2NrKSB7CkBAIC0xOTYsMTUgKzI5OSw3IEBAIG91dDoKIAogc3RhdGljIGNv bnN0IGNoYXIgKnZ1c2JfYmVfZnJvbV94c19saWJ4bChsaWJ4bF9fZ2MgKmdjLCBjb25zdCBjaGFy ICpsaWJ4bF9wYXRoKQogewotICAgIGNvbnN0IGNoYXIgKmJlX3BhdGg7Ci0gICAgaW50IHI7Ci0K LSAgICByID0gbGlieGxfX3hzX3JlYWRfY2hlY2tlZChnYywgWEJUX05VTEwsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIlcy9iYWNrZW5kIiwgbGlieGxfcGF0aCks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJlX3BhdGgpOwotICAgIGlmIChyIHx8 ICFiZV9wYXRoKSByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBiZV9wYXRoOworICAgIHJldHVy biB2dXNiX2JlX2Zyb21feHNfbGlieGxfdHlwZShnYywgbGlieGxfcGF0aCwgTElCWExfVVNCQ1RS TF9UWVBFX0FVVE8pOwogfQogCiBzdGF0aWMgdm9pZCBsaWJ4bF9fZGV2aWNlX3VzYmN0cmxfZGVs X3hlbnN0b3JlKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLApAQCAtMjE2LDcgKzMxMSw3 IEBAIHN0YXRpYyB2b2lkIGxpYnhsX19kZXZpY2VfdXNiY3RybF9kZWxfeGVuc3RvcmUobGlieGxf X2djICpnYywgdWludDMyX3QgZG9taWQsCiAKICAgICBsaWJ4bF9wYXRoID0gR0NTUFJJTlRGKCIl cy9kZXZpY2UvdnVzYi8lZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9feHNf bGlieGxfcGF0aChnYywgZG9taWQpLCB1c2JjdHJsLT5kZXZpZCk7Ci0gICAgYmVfcGF0aCA9IHZ1 c2JfYmVfZnJvbV94c19saWJ4bChnYywgbGlieGxfcGF0aCk7CisgICAgYmVfcGF0aCA9IHZ1c2Jf YmVfZnJvbV94c19saWJ4bF90eXBlKGdjLCBsaWJ4bF9wYXRoLCB1c2JjdHJsLT50eXBlKTsKIAog ICAgIGZvciAoOzspIHsKICAgICAgICAgcmMgPSBsaWJ4bF9feHNfdHJhbnNhY3Rpb25fc3RhcnQo Z2MsICZ0KTsKQEAgLTI0Nyw2ICszNDIsOTMgQEAgc3RhdGljIGNoYXIgKnB2dXNiX2dldF9kZXZp Y2VfdHlwZShsaWJ4bF91c2JjdHJsX3R5cGUgdHlwZSkKICAgICB9CiB9CiAKKy8qIFNlbmQgcW1w IGNvbW1hbmRzIHRvIGNyZWF0ZSBhIHVzYiBjb250cm9sbGVyIGluIHFlbXUuCisgKgorICogRGVw ZW5kaW5nIG9uIHRoZSBzcGVlZCAodXNiY3RybC0+dmVyc2lvbikgd2UgY3JlYXRlOgorICogLSBw aWl4My11c2ItdWhjaSAodmVyc2lvbj0xKSwgYWx3YXlzIDIgcG9ydHMKKyAqIC0gdXNiLWVoY2kg ICAgICAgKHZlcnNpb249MiksIGFsd2F5cyA2IHBvcnRzCisgKiAtIG5lYy11c2IteGhjaSAgICh2 ZXJzaW9uPTMpLCB1cCB0byAxNSBwb3J0cworICovCitzdGF0aWMgaW50IGxpYnhsX19kZXZpY2Vf dXNiY3RybF9hZGRfaHZtKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdXNiY3RybCAqdXNi Y3RybCkKK3sKKyAgICBmbGV4YXJyYXlfdCAqcW1wX2FyZ3M7CisKKyAgICBxbXBfYXJncyA9IGZs ZXhhcnJheV9tYWtlKGdjLCA4LCAxKTsKKworICAgIHN3aXRjaCAodXNiY3RybC0+dmVyc2lvbikg eworICAgIGNhc2UgMToKKyAgICAgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKHFtcF9hcmdzLCAi ZHJpdmVyIiwgInBpaXgzLXVzYi11aGNpIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoK KyAgICAgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKHFtcF9hcmdzLCAiZHJpdmVyIiwgInVzYi1l aGNpIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgZmxleGFycmF5X2Fw cGVuZF9wYWlyKHFtcF9hcmdzLCAiZHJpdmVyIiwgIm5lYy11c2IteGhjaSIpOworICAgICAgICBm bGV4YXJyYXlfYXBwZW5kX3BhaXIocW1wX2FyZ3MsICJwMiIsIEdDU1BSSU5URigiJWQiLCB1c2Jj dHJsLT5wb3J0cykpOworICAgICAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIocW1wX2FyZ3MsICJw MyIsIEdDU1BSSU5URigiJWQiLCB1c2JjdHJsLT5wb3J0cykpOworICAgICAgICBicmVhazsKKyAg ICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7IC8qIFNob3VsZCBub3QgYmUgcG9zc2libGUu ICovCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihx bXBfYXJncywgImlkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCJ4ZW51 c2ItJWQiLCB1c2JjdHJsLT5kZXZpZCkpOworCisgICAgcmV0dXJuIGxpYnhsX19xbXBfcnVuX2Nv bW1hbmRfZmxleGFycmF5KGdjLCBkb21pZCwgImRldmljZV9hZGQiLCBxbXBfYXJncyk7Cit9CisK Ky8qIFNlbmQgcW1wIGNvbW1hbmRzIHRvIGRlbGV0ZSBhIHVzYiBjb250cm9sbGVyIGluIHFlbXUu ICAqLworc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX3VzYmN0cmxfZGVsX2h2bShsaWJ4bF9fZ2Mg KmdjLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IGRldmlkKQoreworICAgIGZsZXhhcnJheV90ICpxbXBfYXJnczsKKworICAgIHFt cF9hcmdzID0gZmxleGFycmF5X21ha2UoZ2MsIDIsIDEpOworICAgIGZsZXhhcnJheV9hcHBlbmRf cGFpcihxbXBfYXJncywgImlkIiwgR0NTUFJJTlRGKCJ4ZW51c2ItJWQiLCBkZXZpZCkpOworCisg ICAgcmV0dXJuIGxpYnhsX19xbXBfcnVuX2NvbW1hbmRfZmxleGFycmF5KGdjLCBkb21pZCwgImRl dmljZV9kZWwiLCBxbXBfYXJncyk7Cit9CisKKy8qIFNlbmQgcW1wIGNvbW1hbmRzIHRvIGNyZWF0 ZSBhIHVzYiBkZXZpY2UgaW4gcWVtdS4gKi8KK3N0YXRpYyBpbnQgbGlieGxfX2RldmljZV91c2Jk ZXZfYWRkX2h2bShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdXNiZGV2ICp1c2JkZXYpCit7 CisgICAgZmxleGFycmF5X3QgKnFtcF9hcmdzOworCisgICAgcW1wX2FyZ3MgPSBmbGV4YXJyYXlf bWFrZShnYywgMTIsIDEpOworICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihxbXBfYXJncywgImlk IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCJ4ZW51c2ItJWQtJWQiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNiZGV2LT51Lmhvc3RkZXYuaG9z dGJ1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYmRldi0+dS5ob3N0 ZGV2Lmhvc3RhZGRyKSk7CisgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKHFtcF9hcmdzLCAiZHJp dmVyIiwgInVzYi1ob3N0Iik7CisgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKHFtcF9hcmdzLCAi YnVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCJ4ZW51c2ItJWQuMCIs IHVzYmRldi0+Y3RybCkpOworICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihxbXBfYXJncywgInBv cnQiLCBHQ1NQUklOVEYoIiVkIiwgdXNiZGV2LT5wb3J0KSk7CisgICAgZmxleGFycmF5X2FwcGVu ZF9wYWlyKHFtcF9hcmdzLCAiaG9zdGJ1cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdD U1BSSU5URigiJWQiLCB1c2JkZXYtPnUuaG9zdGRldi5ob3N0YnVzKSk7CisgICAgZmxleGFycmF5 X2FwcGVuZF9wYWlyKHFtcF9hcmdzLCAiaG9zdGFkZHIiLAorICAgICAgICAgICAgICAgICAgICAg ICAgICBHQ1NQUklOVEYoIiVkIiwgdXNiZGV2LT51Lmhvc3RkZXYuaG9zdGFkZHIpKTsKKworICAg IHJldHVybiBsaWJ4bF9fcW1wX3J1bl9jb21tYW5kX2ZsZXhhcnJheShnYywgZG9taWQsICJkZXZp Y2VfYWRkIiwgcW1wX2FyZ3MpOworfQorCisvKiBTZW5kIHFtcCBjb21tYW5kcyB0byBkZWxldGUg YSB1c2IgZGV2aWNlIGluIHFlbXUuICovCitzdGF0aWMgaW50IGxpYnhsX19kZXZpY2VfdXNiZGV2 X2RlbF9odm0obGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3VzYmRldiAqdXNiZGV2KQorewor ICAgIGZsZXhhcnJheV90ICpxbXBfYXJnczsKKworICAgIHFtcF9hcmdzID0gZmxleGFycmF5X21h a2UoZ2MsIDIsIDEpOworICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihxbXBfYXJncywgImlkIiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCJ4ZW51c2ItJWQtJWQiLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNiZGV2LT51Lmhvc3RkZXYuaG9zdGJ1 cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYmRldi0+dS5ob3N0ZGV2 Lmhvc3RhZGRyKSk7CisKKyAgICByZXR1cm4gbGlieGxfX3FtcF9ydW5fY29tbWFuZF9mbGV4YXJy YXkoZ2MsIGRvbWlkLCAiZGV2aWNlX2RlbCIsIHFtcF9hcmdzKTsKK30KKwogLyogQU8gb3BlcmF0 aW9uIHRvIGFkZCBhIHVzYiBjb250cm9sbGVyLgogICoKICAqIEdlbmVyYWxseSwgaXQgZG9lczoK QEAgLTI3OCwxMyArNDYwLDYgQEAgc3RhdGljIHZvaWQgbGlieGxfX2RldmljZV91c2JjdHJsX2Fk ZChsaWJ4bF9fZWdjICplZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICB9CiAgICAgfQogCi0g ICAgaWYgKHVzYmN0cmwtPnR5cGUgIT0gTElCWExfVVNCQ1RSTF9UWVBFX1BWICYmCi0gICAgICAg IHVzYmN0cmwtPnR5cGUgIT0gTElCWExfVVNCQ1RSTF9UWVBFX1FVU0IpIHsKLSAgICAgICAgTE9H KEVSUk9SLCAiVW5zdXBwb3J0ZWQgVVNCIGNvbnRyb2xsZXIgdHlwZSIpOwotICAgICAgICByYyA9 IEVSUk9SX0ZBSUw7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KLQogICAgIHJjID0gbGlieGxf X2RldmljZV91c2JjdHJsX2FkZF94ZW5zdG9yZShnYywgZG9taWQsIHVzYmN0cmwsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFvZGV2LT51cGRhdGVfanNvbik7 CiAgICAgaWYgKHJjKSBnb3RvIG91dDsKQEAgLTI5Myw2ICs0NjgsMTIgQEAgc3RhdGljIHZvaWQg bGlieGxfX2RldmljZV91c2JjdHJsX2FkZChsaWJ4bF9fZWdjICplZ2MsIHVpbnQzMl90IGRvbWlk LAogICAgIHJjID0gbGlieGxfX2RldmljZV9mcm9tX3VzYmN0cmwoZ2MsIGRvbWlkLCB1c2JjdHJs LCBkZXZpY2UpOwogICAgIGlmIChyYykgZ290byBvdXRybTsKIAorICAgIGlmIChkZXZpY2UtPmJh Y2tlbmRfa2luZCA9PSBMSUJYTF9fREVWSUNFX0tJTkRfTk9ORSkgeworICAgICAgICByYyA9IGxp YnhsX19kZXZpY2VfdXNiY3RybF9hZGRfaHZtKGdjLCBkb21pZCwgdXNiY3RybCk7CisgICAgICAg IGlmIChyYykgZ290byBvdXRybTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCiAgICAgYW9k ZXYtPmRldiA9IGRldmljZTsKICAgICBhb2Rldi0+YWN0aW9uID0gTElCWExfX0RFVklDRV9BQ1RJ T05fQUREOwogICAgIGxpYnhsX193YWl0X2RldmljZV9jb25uZWN0aW9uKGVnYywgYW9kZXYpOwpA QCAtMzQ3LDEzICs1MjgsNiBAQCB2b2lkIGxpYnhsX19pbml0aWF0ZV9kZXZpY2VfdXNiY3RybF9y ZW1vdmUobGlieGxfX2VnYyAqZWdjLAogICAgIHJjID0gbGlieGxfZGV2aWNlX3VzYmN0cmxfZ2V0 aW5mbyhDVFgsIGRvbWlkLCAmdXNiY3RybCwgJnVzYmN0cmxpbmZvKTsKICAgICBpZiAocmMpIGdv dG8gb3V0OwogCi0gICAgaWYgKHVzYmN0cmxpbmZvLnR5cGUgIT0gTElCWExfVVNCQ1RSTF9UWVBF X1BWICYmCi0gICAgICAgIHVzYmN0cmxpbmZvLnR5cGUgIT0gTElCWExfVVNCQ1RSTF9UWVBFX1FV U0IpIHsKLSAgICAgICAgTE9HKEVSUk9SLCAiVW5zdXBwb3J0ZWQgVVNCIGNvbnRyb2xsZXIgdHlw ZSIpOwotICAgICAgICByYyA9IEVSUk9SX0ZBSUw7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0K LQogICAgIC8qIFJlbW92ZSB1c2IgZGV2aWNlcyBmaXJzdCAqLwogICAgIHJjID0gbGlieGxfX2Rl dmljZV91c2JkZXZfbGlzdF9mb3JfdXNiY3RybChnYywgZG9taWQsIHVzYmN0cmxfZGV2aWQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2JkZXZzLCAm bnVtX3VzYmRldik7CkBAIC0zNjgsNiArNTQyLDEzIEBAIHZvaWQgbGlieGxfX2luaXRpYXRlX2Rl dmljZV91c2JjdHJsX3JlbW92ZShsaWJ4bF9fZWdjICplZ2MsCiAgICAgICAgIH0KICAgICB9CiAK KyAgICBpZiAodXNiY3RybGluZm8udHlwZSA9PSBMSUJYTF9VU0JDVFJMX1RZUEVfREVWSUNFTU9E RUwpIHsKKyAgICAgICAgcmMgPSBsaWJ4bF9fZGV2aWNlX3VzYmN0cmxfZGVsX2h2bShnYywgZG9t aWQsIHVzYmN0cmxfZGV2aWQpOworICAgICAgICBpZiAoIXJjKQorICAgICAgICAgICAgbGlieGxf X2RldmljZV91c2JjdHJsX2RlbF94ZW5zdG9yZShnYywgZG9taWQsICZ1c2JjdHJsKTsKKyAgICAg ICAgZ290byBvdXQ7CisgICAgfQorCiAgICAgbGlieGxfZGV2aWNlX3VzYmN0cmxfZGlzcG9zZSgm dXNiY3RybCk7CiAgICAgbGlieGxfdXNiY3RybGluZm9fZGlzcG9zZSgmdXNiY3RybGluZm8pOwog CkBAIC00MjgsMTUgKzYwOSwyMCBAQCBsaWJ4bF9kZXZpY2VfdXNiY3RybF9saXN0KGxpYnhsX2N0 eCAqY3R4LCB1aW50MzJfdCBkb21pZCwgaW50ICpudW0pCiAgICAgfSkKIAogICAgICAgICAgICAg bGlieGxfcGF0aCA9IEdDU1BSSU5URigiJXMvJXMiLCBsaWJ4bF92dXNic19wYXRoLCAqZW50cnkp OwotICAgICAgICAgICAgYmVfcGF0aCA9IFJFQURfU1VCUEFUSChsaWJ4bF9wYXRoLCAiYmFja2Vu ZCIpOwotICAgICAgICAgICAgaWYgKCFiZV9wYXRoKSBnb3RvIG91dDsKLSAgICAgICAgICAgIHJl dCA9IGxpYnhsX19iYWNrZW5kcGF0aF9wYXJzZV9kb21pZChnYywgYmVfcGF0aCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2JjdHJsLT5iYWNrZW5k X2RvbWlkKTsKKyAgICAgICAgICAgIGxpYnhsX3VzYmN0cmxfdHlwZV9mcm9tX3N0cmluZyhSRUFE X1NVQlBBVEgobGlieGxfcGF0aCwgInR5cGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmdXNiY3RybC0+dHlwZSk7CisgICAgICAgICAgICBpZiAodXNiY3Ry bC0+dHlwZSA9PSBMSUJYTF9VU0JDVFJMX1RZUEVfREVWSUNFTU9ERUwpIHsKKyAgICAgICAgICAg ICAgICBiZV9wYXRoID0gbGlieGxfcGF0aDsKKyAgICAgICAgICAgICAgICByZXQgPSBsaWJ4bF9f Z2V0X2RvbWlkKGdjLCAmdXNiY3RybC0+YmFja2VuZF9kb21pZCk7CisgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICAgIGJlX3BhdGggPSBSRUFEX1NVQlBBVEgobGlieGxfcGF0aCwg ImJhY2tlbmQiKTsKKyAgICAgICAgICAgICAgICBpZiAoIWJlX3BhdGgpIGdvdG8gb3V0OworICAg ICAgICAgICAgICAgIHJldCA9IGxpYnhsX19iYWNrZW5kcGF0aF9wYXJzZV9kb21pZChnYywgYmVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnVzYmN0cmwtPmJhY2tlbmRfZG9taWQpOworICAgICAgICAgICAgfQogICAgICAgICAgICAg aWYgKHJldCkgZ290byBvdXQ7CiAgICAgICAgICAgICB1c2JjdHJsLT52ZXJzaW9uID0gUkVBRF9T VUJQQVRIX0lOVChiZV9wYXRoLCAidXNiLXZlciIpOwogICAgICAgICAgICAgdXNiY3RybC0+cG9y dHMgPSBSRUFEX1NVQlBBVEhfSU5UKGJlX3BhdGgsICJudW0tcG9ydHMiKTsKLSAgICAgICAgICAg IGxpYnhsX3VzYmN0cmxfdHlwZV9mcm9tX3N0cmluZyhSRUFEX1NVQlBBVEgobGlieGxfcGF0aCwg InR5cGUiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNi Y3RybC0+dHlwZSk7CiAKICN1bmRlZiBSRUFEX1NVQlBBVEgKICN1bmRlZiBSRUFEX1NVQlBBVEhf SU5UCkBAIC00ODEsMjQgKzY2NywzMyBAQCBpbnQgbGlieGxfZGV2aWNlX3VzYmN0cmxfZ2V0aW5m byhsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgIHRtcCA/IGF0b2kodG1w KSA6IC0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg fSkKIAotICAgIGRvbXBhdGggPSBsaWJ4bF9feHNfZ2V0X2RvbXBhdGgoZ2MsIGRvbWlkKTsKLSAg ICBmZV9wYXRoID0gR0NTUFJJTlRGKCIlcy9kZXZpY2UvdnVzYi8lZCIsIGRvbXBhdGgsIHVzYmN0 cmwtPmRldmlkKTsKICAgICBsaWJ4bF9kb21fcGF0aCA9IGxpYnhsX194c19saWJ4bF9wYXRoKGdj LCBkb21pZCk7CiAgICAgbGlieGxfcGF0aCA9IEdDU1BSSU5URigiJXMvZGV2aWNlL3Z1c2IvJWQi LCBsaWJ4bF9kb21fcGF0aCwgdXNiY3RybC0+ZGV2aWQpOwotICAgIGJlX3BhdGggPSBSRUFEX1NV QlBBVEgobGlieGxfcGF0aCwgImJhY2tlbmQiKTsKLSAgICB1c2JjdHJsaW5mby0+YmFja2VuZCA9 IGxpYnhsX19zdHJkdXAoTk9HQywgYmVfcGF0aCk7Ci0gICAgcmMgPSBsaWJ4bF9fYmFja2VuZHBh dGhfcGFyc2VfZG9taWQoZ2MsIGJlX3BhdGgsICZ1c2JjdHJsLT5iYWNrZW5kX2RvbWlkKTsKLSAg ICBpZiAocmMpIGdvdG8gb3V0OwotICAgIHVzYmN0cmxpbmZvLT5zdGF0ZSA9IFJFQURfU1VCUEFU SF9JTlQoZmVfcGF0aCwgInN0YXRlIik7Ci0gICAgdXNiY3RybGluZm8tPmV2dGNoID0gUkVBRF9T VUJQQVRIX0lOVChmZV9wYXRoLCAiZXZlbnQtY2hhbm5lbCIpOwotICAgIHVzYmN0cmxpbmZvLT5y ZWZfdXJiID0gUkVBRF9TVUJQQVRIX0lOVChmZV9wYXRoLCAidXJiLXJpbmctcmVmIik7Ci0gICAg dXNiY3RybGluZm8tPnJlZl9jb25uID0gUkVBRF9TVUJQQVRIX0lOVChmZV9wYXRoLCAidXJiLXJp bmctcmVmIik7Ci0gICAgdXNiY3RybGluZm8tPmZyb250ZW5kID0gbGlieGxfX3N0cmR1cChOT0dD LCBmZV9wYXRoKTsKLSAgICB1c2JjdHJsaW5mby0+ZnJvbnRlbmRfaWQgPSBkb21pZDsKLSAgICB1 c2JjdHJsaW5mby0+cG9ydHMgPSBSRUFEX1NVQlBBVEhfSU5UKGJlX3BhdGgsICJudW0tcG9ydHMi KTsKLSAgICB1c2JjdHJsaW5mby0+dmVyc2lvbiA9IFJFQURfU1VCUEFUSF9JTlQoYmVfcGF0aCwg InVzYi12ZXIiKTs7Ci0gICAgdG1wID0gUkVBRF9TVUJQQVRIKGxpYnhsX3BhdGgsICJ0eXBlIik7 Ci0gICAgbGlieGxfdXNiY3RybF90eXBlX2Zyb21fc3RyaW5nKHRtcCwgJnVzYmN0cmxpbmZvLT50 eXBlKTsKKyAgICBsaWJ4bF91c2JjdHJsX3R5cGVfZnJvbV9zdHJpbmcoUkVBRF9TVUJQQVRIKGxp YnhsX3BhdGgsICJ0eXBlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1 c2JjdHJsaW5mby0+dHlwZSk7CisKKyAgICBpZiAodXNiY3RybGluZm8tPnR5cGUgIT0gTElCWExf VVNCQ1RSTF9UWVBFX0RFVklDRU1PREVMKSB7CisgICAgICAgIGRvbXBhdGggPSBsaWJ4bF9feHNf Z2V0X2RvbXBhdGgoZ2MsIGRvbWlkKTsKKyAgICAgICAgZmVfcGF0aCA9IEdDU1BSSU5URigiJXMv ZGV2aWNlL3Z1c2IvJWQiLCBkb21wYXRoLCB1c2JjdHJsLT5kZXZpZCk7CisgICAgICAgIGJlX3Bh dGggPSBSRUFEX1NVQlBBVEgobGlieGxfcGF0aCwgImJhY2tlbmQiKTsKKyAgICAgICAgdXNiY3Ry bGluZm8tPmJhY2tlbmQgPSBsaWJ4bF9fc3RyZHVwKE5PR0MsIGJlX3BhdGgpOworICAgICAgICBy YyA9IGxpYnhsX19iYWNrZW5kcGF0aF9wYXJzZV9kb21pZChnYywgYmVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzYmN0cmwtPmJhY2tlbmRfZG9t aWQpOworICAgICAgICBpZiAocmMpIGdvdG8gb3V0OworICAgICAgICB1c2JjdHJsaW5mby0+c3Rh dGUgPSBSRUFEX1NVQlBBVEhfSU5UKGZlX3BhdGgsICJzdGF0ZSIpOworICAgICAgICB1c2JjdHJs aW5mby0+ZXZ0Y2ggPSBSRUFEX1NVQlBBVEhfSU5UKGZlX3BhdGgsICJldmVudC1jaGFubmVsIik7 CisgICAgICAgIHVzYmN0cmxpbmZvLT5yZWZfdXJiID0gUkVBRF9TVUJQQVRIX0lOVChmZV9wYXRo LCAidXJiLXJpbmctcmVmIik7CisgICAgICAgIHVzYmN0cmxpbmZvLT5yZWZfY29ubiA9IFJFQURf U1VCUEFUSF9JTlQoZmVfcGF0aCwgInVyYi1yaW5nLXJlZiIpOworICAgICAgICB1c2JjdHJsaW5m by0+ZnJvbnRlbmQgPSBsaWJ4bF9fc3RyZHVwKE5PR0MsIGZlX3BhdGgpOworICAgICAgICB1c2Jj dHJsaW5mby0+ZnJvbnRlbmRfaWQgPSBkb21pZDsKKyAgICAgICAgdXNiY3RybGluZm8tPnBvcnRz ID0gUkVBRF9TVUJQQVRIX0lOVChiZV9wYXRoLCAibnVtLXBvcnRzIik7CisgICAgICAgIHVzYmN0 cmxpbmZvLT52ZXJzaW9uID0gUkVBRF9TVUJQQVRIX0lOVChiZV9wYXRoLCAidXNiLXZlciIpOwor ICAgIH0gZWxzZSB7CisgICAgICAgIHVzYmN0cmxpbmZvLT5wb3J0cyA9IFJFQURfU1VCUEFUSF9J TlQobGlieGxfcGF0aCwgIm51bS1wb3J0cyIpOworICAgICAgICB1c2JjdHJsaW5mby0+dmVyc2lv biA9IFJFQURfU1VCUEFUSF9JTlQobGlieGxfcGF0aCwgInVzYi12ZXIiKTsKKyAgICAgICAgcmMg PSBsaWJ4bF9fZ2V0X2RvbWlkKGdjLCAmdXNiY3RybC0+YmFja2VuZF9kb21pZCk7CisgICAgICAg IGlmIChyYykgZ290byBvdXQ7CisgICAgfQogCiAjdW5kZWYgUkVBRF9TVUJQQVRICiAjdW5kZWYg UkVBRF9TVUJQQVRIX0lOVApAQCAtNzkwLDYgKzk4NSwyMSBAQCBsaWJ4bF9kZXZpY2VfdXNiZGV2 X2xpc3QobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBpbnQgKm51bSkKICAgICByZXR1 cm4gdXNiZGV2czsKIH0KIAorc3RhdGljIGNoYXIgKnZ1c2JfZ2V0X3BvcnRfcGF0aChsaWJ4bF9f Z2MgKmdjLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGlieGxfdXNiY3RybF90eXBlIHR5cGUsIGludCBjdHJsLCBpbnQgcG9ydCkKK3sKKyAgICBjaGFy ICpwYXRoOworCisgICAgaWYgKHR5cGUgPT0gTElCWExfVVNCQ1RSTF9UWVBFX0RFVklDRU1PREVM KQorICAgICAgICBwYXRoID0gR0NTUFJJTlRGKCIlcy9kZXZpY2UvdnVzYiIsIGxpYnhsX194c19s aWJ4bF9wYXRoKGdjLCBkb21pZCkpOworICAgIGVsc2UKKyAgICAgICAgcGF0aCA9IEdDU1BSSU5U RigiJXMvYmFja2VuZC8lcy8lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3hz X2dldF9kb21wYXRoKGdjLCBMSUJYTF9UT09MU1RBQ0tfRE9NSUQpLAorICAgICAgICAgICAgICAg ICAgICAgICAgIHB2dXNiX2dldF9kZXZpY2VfdHlwZSh0eXBlKSwgZG9taWQpOworCisgICAgcmV0 dXJuIEdDU1BSSU5URigiJXMvJWQvcG9ydC8lZCIsIHBhdGgsIGN0cmwsIHBvcnQpOworfQorCiAv KiBmaW5kIGZpcnN0IHVudXNlZCBjb250cm9sbGVyOnBvcnQgYW5kIGdpdmUgdGhhdCB0byB1c2Ig ZGV2aWNlICovCiBzdGF0aWMgaW50CiBsaWJ4bF9fZGV2aWNlX3VzYmRldl9zZXRfZGVmYXVsdF91 c2JjdHJsKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLApAQCAtODA5LDEwICsxMDE5LDgg QEAgbGlieGxfX2RldmljZV91c2JkZXZfc2V0X2RlZmF1bHRfdXNiY3RybChsaWJ4bF9fZ2MgKmdj LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgZm9yIChqID0gMDsgaiA8IHVzYmN0cmxzW2ldLnBv cnRzOyBqKyspIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGgsICp0bXA7CiAKLSAgICAg ICAgICAgIHBhdGggPSBHQ1NQUklOVEYoIiVzL2JhY2tlbmQvJXMvJWQvJWQvcG9ydC8lZCIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX194c19nZXRfZG9tcGF0aChnYywgTElC WExfVE9PTFNUQUNLX0RPTUlEKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHZ1c2Jf Z2V0X2RldmljZV90eXBlKHVzYmN0cmxzW2ldLnR5cGUpLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkb21pZCwgdXNiY3RybHNbaV0uZGV2aWQsIGogKyAxKTsKKyAgICAgICAgICAgIHBh dGggPSB2dXNiX2dldF9wb3J0X3BhdGgoZ2MsIGRvbWlkLCB1c2JjdHJsc1tpXS50eXBlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2JjdHJsc1tpXS5kZXZpZCwgaiAr IDEpOwogICAgICAgICAgICAgcmMgPSBsaWJ4bF9feHNfcmVhZF9jaGVja2VkKGdjLCBYQlRfTlVM TCwgcGF0aCwgJnRtcCk7CiAgICAgICAgICAgICBpZiAocmMpIGdvdG8gb3V0OwogCkBAIC04ODEs MTMgKzEwODksNiBAQCBzdGF0aWMgaW50IGxpYnhsX19kZXZpY2VfdXNiZGV2X3NldGRlZmF1bHQo bGlieGxfX2djICpnYywKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAg ICAgICAgIGlmICh1c2JjdHJsLT50eXBlICE9IExJQlhMX1VTQkNUUkxfVFlQRV9QViAmJgotICAg ICAgICAgICAgICAgIHVzYmN0cmwtPnR5cGUgIT0gTElCWExfVVNCQ1RSTF9UWVBFX1FVU0IpIHsK LSAgICAgICAgICAgICAgICBMT0coRVJST1IsICJVbnN1cHBvcnRlZCBVU0IgY29udHJvbGxlciB0 eXBlIik7Ci0gICAgICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwotICAgICAgICAgICAgICAg IGdvdG8gb3V0OwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICByYyA9IGxpYnhsX19kZXZp Y2VfdXNiY3RybF9hZGRfeGVuc3RvcmUoZ2MsIGRvbWlkLCB1c2JjdHJsLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9qc29uKTsKICAg ICAgICAgICAgIGlmIChyYykgZ290byBvdXQ7CkBAIC0xMDEzLDEwICsxMjE0LDggQEAgc3RhdGlj IGludCBsaWJ4bF9fZGV2aWNlX3VzYmRldl9hZGRfeGVuc3RvcmUobGlieGxfX2djICpnYywgdWlu dDMyX3QgZG9taWQsCiAgICAgICAgICAgICBpZiAocmMpIGdvdG8gb3V0OwogICAgICAgICB9CiAK LSAgICAgICAgYmVfcGF0aCA9IEdDU1BSSU5URigiJXMvYmFja2VuZC8lcy8lZC8lZC9wb3J0LyVk IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9feHNfZ2V0X2RvbXBhdGgoZ2Ms IExJQlhMX1RPT0xTVEFDS19ET01JRCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHZ1 c2JfZ2V0X2RldmljZV90eXBlKHR5cGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv bWlkLCB1c2JkZXYtPmN0cmwsIHVzYmRldi0+cG9ydCk7CisgICAgICAgIGJlX3BhdGggPSB2dXNi X2dldF9wb3J0X3BhdGgoZ2MsIGRvbWlkLCB0eXBlLCB1c2JkZXYtPmN0cmwsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNiZGV2LT5wb3J0KTsKIAogICAgICAgICBMT0co REVCVUcsICJBZGRpbmcgdXNiIGRldmljZSAlcyB0byB4ZW5zdG9yZTogY29udHJvbGxlciAlZCwg cG9ydCAlZCIsCiAgICAgICAgICAgICBidXNpZCwgdXNiZGV2LT5jdHJsLCB1c2JkZXYtPnBvcnQp OwpAQCAtMTA0NCwxMCArMTI0Myw3IEBAIHN0YXRpYyBpbnQgbGlieGxfX2RldmljZV91c2JkZXZf cmVtb3ZlX3hlbnN0b3JlKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogewogICAgIGNo YXIgKmJlX3BhdGg7CiAKLSAgICBiZV9wYXRoID0gR0NTUFJJTlRGKCIlcy9iYWNrZW5kLyVzLyVk LyVkL3BvcnQvJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3hzX2dldF9kb21w YXRoKGdjLCBMSUJYTF9UT09MU1RBQ0tfRE9NSUQpLAotICAgICAgICAgICAgICAgICAgICAgICAg cHZ1c2JfZ2V0X2RldmljZV90eXBlKHR5cGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgZG9t aWQsIHVzYmRldi0+Y3RybCwgdXNiZGV2LT5wb3J0KTsKKyAgICBiZV9wYXRoID0gdnVzYl9nZXRf cG9ydF9wYXRoKGdjLCBkb21pZCwgdHlwZSwgdXNiZGV2LT5jdHJsLCB1c2JkZXYtPnBvcnQpOwog CiAgICAgTE9HKERFQlVHLCAiUmVtb3ZpbmcgdXNiIGRldmljZSBmcm9tIHhlbnN0b3JlOiBjb250 cm9sbGVyICVkLCBwb3J0ICVkIiwKICAgICAgICAgdXNiZGV2LT5jdHJsLCB1c2JkZXYtPnBvcnQp OwpAQCAtMTA2MCwxMCArMTI1Niw4IEBAIHN0YXRpYyBjaGFyICp1c2JkZXZfYnVzaWRfZnJvbV9j dHJscG9ydChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF91c2JjdHJsX3R5cGUgdHlwZSkKIHsKICAgICBy ZXR1cm4gbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLAotICAgICAgICAgICAgICAgICAgICAg ICAgICBHQ1NQUklOVEYoIiVzL2JhY2tlbmQvJXMvJWQvJWQvcG9ydC8lZCIsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaWJ4bF9feHNfZ2V0X2RvbXBhdGgoZ2MsIExJQlhMX1RPT0xT VEFDS19ET01JRCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdnVzYl9nZXRfZGV2 aWNlX3R5cGUodHlwZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZCwgdXNi ZGV2LT5jdHJsLCB1c2JkZXYtPnBvcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdnVz Yl9nZXRfcG9ydF9wYXRoKGdjLCBkb21pZCwgdHlwZSwgdXNiZGV2LT5jdHJsLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNiZGV2LT5wb3J0KSk7CiB9CiAK IC8qIGdldCBvcmlnaW5hbCBkcml2ZXIgcGF0aCBvZiB1c2IgaW50ZXJmYWNlLCBzdG9yZWQgaW4g QGRydnBhdGggKi8KQEAgLTE0MjcsNiArMTYyMSwxOCBAQCBzdGF0aWMgaW50IGRvX3VzYmRldl9h ZGQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAKICAgICAgICAgYnJlYWs7CiAgICAg Y2FzZSBMSUJYTF9VU0JDVFJMX1RZUEVfREVWSUNFTU9ERUw6CisgICAgICAgIHJjID0gbGlieGxf X2RldmljZV91c2JkZXZfYWRkX3hlbnN0b3JlKGdjLCBkb21pZCwgdXNiZGV2LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9VU0JDVFJMX1RZUEVf REVWSUNFTU9ERUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVwZGF0ZV9qc29uKTsKKyAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsKKworICAgICAgICBy YyA9IGxpYnhsX19kZXZpY2VfdXNiZGV2X2FkZF9odm0oZ2MsIGRvbWlkLCB1c2JkZXYpOworICAg ICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIGxpYnhsX19kZXZpY2VfdXNiZGV2X3JlbW92ZV94 ZW5zdG9yZShnYywgZG9taWQsIHVzYmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExJQlhMX1VTQkNUUkxfVFlQRV9ERVZJQ0VNT0RFTCk7CisgICAgICAg ICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog ICAgICAgICBMT0coRVJST1IsICJVbnN1cHBvcnRlZCB1c2IgY29udHJvbGxlciB0eXBlIik7CiAg ICAgICAgIHJjID0gRVJST1JfRkFJTDsKQEAgLTE1OTQsNiArMTgwMCwxOSBAQCBzdGF0aWMgaW50 IGRvX3VzYmRldl9yZW1vdmUobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAKICAgICAg ICAgYnJlYWs7CiAgICAgY2FzZSBMSUJYTF9VU0JDVFJMX1RZUEVfREVWSUNFTU9ERUw6CisgICAg ICAgIHJjID0gbGlieGxfX2RldmljZV91c2JkZXZfcmVtb3ZlX3hlbnN0b3JlKGdjLCBkb21pZCwg dXNiZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJ QlhMX1VTQkNUUkxfVFlQRV9ERVZJQ0VNT0RFTCk7CisgICAgICAgIGlmIChyYykgZ290byBvdXQ7 CisKKyAgICAgICAgcmMgPSBsaWJ4bF9fZGV2aWNlX3VzYmRldl9kZWxfaHZtKGdjLCBkb21pZCwg dXNiZGV2KTsKKyAgICAgICAgaWYgKHJjKSB7CisgICAgICAgICAgICBsaWJ4bF9fZGV2aWNlX3Vz YmRldl9hZGRfeGVuc3RvcmUoZ2MsIGRvbWlkLCB1c2JkZXYsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfVVNCQ1RSTF9UWVBFX0RFVklDRU1PREVM LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsK KyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisKKyAgICAgICAgYnJlYWs7CiAgICAg ZGVmYXVsdDoKICAgICAgICAgTE9HKEVSUk9SLCAiVW5zdXBwb3J0ZWQgdXNiIGNvbnRyb2xsZXIg dHlwZSIpOwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CmRpZmYgLS1naXQgYS90b29scy9saWJ4 bC94bF9jbWRpbXBsLmMgYi90b29scy9saWJ4bC94bF9jbWRpbXBsLmMKaW5kZXggNjIyMzdkMC4u Y2I0M2MwMCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jCisrKyBiL3Rvb2xz L2xpYnhsL3hsX2NtZGltcGwuYwpAQCAtMzcyOCwxNCArMzcyOCwxNCBAQCBpbnQgbWFpbl91c2Js aXN0KGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwg bnVtY3RybDsgKytpKSB7Ci0gICAgICAgIHByaW50ZigiJS02cyAlLTZzICUtM3MgJS01cyAlLTdz ICUtNXNcbiIsCisgICAgICAgIHByaW50ZigiJS02cyAlLTEycyAlLTNzICUtNXMgJS03cyAlLTVz XG4iLAogICAgICAgICAgICAgICAgICJEZXZpZCIsICJUeXBlIiwgIkJFIiwgInN0YXRlIiwgInVz Yi12ZXIiLCAicG9ydHMiKTsKIAogICAgICAgICBsaWJ4bF91c2JjdHJsaW5mb19pbml0KCZ1c2Jj dHJsaW5mbyk7CiAKICAgICAgICAgaWYgKCFsaWJ4bF9kZXZpY2VfdXNiY3RybF9nZXRpbmZvKGN0 eCwgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2JjdHJsc1tpXSwg JnVzYmN0cmxpbmZvKSkgewotICAgICAgICAgICAgcHJpbnRmKCIlLTZkICUtNnMgJS0zZCAlLTVk ICUtN2QgJS01ZFxuIiwKKyAgICAgICAgICAgIHByaW50ZigiJS02ZCAlLTEycyAlLTNkICUtNWQg JS03ZCAlLTVkXG4iLAogICAgICAgICAgICAgICAgICAgICB1c2JjdHJsaW5mby5kZXZpZCwKICAg ICAgICAgICAgICAgICAgICAgbGlieGxfdXNiY3RybF90eXBlX3RvX3N0cmluZyh1c2JjdHJsaW5m by50eXBlKSwKICAgICAgICAgICAgICAgICAgICAgdXNiY3RybGluZm8uYmFja2VuZF9pZCwgdXNi Y3RybGluZm8uc3RhdGUsCi0tIAoyLjYuNgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=