From mboxrd@z Thu Jan 1 00:00:00 1970 From: Changlong Xie Subject: [PATCH v11 20/27] Support colo mode for qemu disk Date: Fri, 4 Mar 2016 16:41:24 +0800 Message-ID: <1457080891-26054-21-git-send-email-xiecl.fnst@cn.fujitsu.com> References: <1457080891-26054-1-git-send-email-xiecl.fnst@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1457080891-26054-1-git-send-email-xiecl.fnst@cn.fujitsu.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen devel , Konrad Rzeszutek Wilk , Andrew Cooper , Ian Campbell , Ian Jackson , Wei Liu Cc: Lars Kurth , Changlong Xie , Wen Congyang , Gui Jianfeng , Jiang Yunhong , Dong Eddie , Anthony Perard , Shriram Rajagopalan , Yang Hongyang List-Id: xen-devel@lists.xenproject.org RnJvbTogV2VuIENvbmd5YW5nIDx3ZW5jeUBjbi5mdWppdHN1LmNvbT4KClVzYWdlOiBkaXNrID0g WycuLi4sY29sbyxjb2xvLWhvc3Q9eHh4LGNvbG8tcG9ydD14eHgsY29sby1leHBvcnQ9eHh4LGFj dGl2ZS1kaXNrPXh4eCxoaWRkZW4tZGlzaz14eHguLi4nXQpGb3IgUUVNVSBibG9jayByZXBsaWNh dGlvbiBkZXRhaWxzOgpodHRwOi8vd2lraS5xZW11Lm9yZy9GZWF0dXJlcy9CbG9ja1JlcGxpY2F0 aW9uCgpTaWduZWQtb2ZmLWJ5OiBXZW4gQ29uZ3lhbmcgPHdlbmN5QGNuLmZ1aml0c3UuY29tPgpT aWduZWQtb2ZmLWJ5OiBZYW5nIEhvbmd5YW5nIDxob25neWFuZy55YW5nQGVhc3lzdGFjay5jbj4K U2lnbmVkLW9mZi1ieTogQ2hhbmdsb25nIFhpZSA8eGllY2wuZm5zdEBjbi5mdWppdHN1LmNvbT4K LS0tCiBkb2NzL21hbi94bC5wb2QuMSAgICAgICAgICAgICAgICAgICB8ICAzNiArKysrKystCiBk b2NzL21pc2MveGwtZGlzay1jb25maWd1cmF0aW9uLnR4dCB8ICA1MyArKysrKysrKysrKwogdG9v bHMvbGlieGwvbGlieGwuYyAgICAgICAgICAgICAgICAgfCAgNjQgKysrKysrKysrKysrLQogdG9v bHMvbGlieGwvbGlieGxfY3JlYXRlLmMgICAgICAgICAgfCAgMjUgKysrKy0KIHRvb2xzL2xpYnhs L2xpYnhsX2RldmljZS5jICAgICAgICAgIHwgIDU0ICsrKysrKysrKysrCiB0b29scy9saWJ4bC9s aWJ4bF9kbS5jICAgICAgICAgICAgICB8IDE4NCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0KIHRvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCAgICAgICAgIHwgICA3ICsrCiB0 b29scy9saWJ4bC9saWJ4bHVfZGlza19sLmwgICAgICAgICB8ICAgNyArKwogOCBmaWxlcyBjaGFu Z2VkLCA0MTggaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9j cy9tYW4veGwucG9kLjEgYi9kb2NzL21hbi94bC5wb2QuMQppbmRleCAxYzZkZDg3Li4zNmIwOTNi IDEwMDY0NAotLS0gYS9kb2NzL21hbi94bC5wb2QuMQorKysgYi9kb2NzL21hbi94bC5wb2QuMQpA QCAtNDUwLDExICs0NTAsMzkgQEAgUHJpbnQgaHVnZSAoISkgYW1vdW50IG9mIGRlYnVnIGR1cmlu ZyB0aGUgbWlncmF0aW9uIHByb2Nlc3MuCiBFbmFibGUgUmVtdXMgSEEgb3IgQ09MTyBIQSBmb3Ig ZG9tYWluLiBCeSBkZWZhdWx0IEI8eGw+IHJlbGllcyBvbiBzc2ggYXMgYQogdHJhbnNwb3J0IG1l Y2hhbmlzbSBiZXR3ZWVuIHRoZSB0d28gaG9zdHMuCiAKLU4uQjogUmVtdXMgc3VwcG9ydCBpbiB4 bCBpcyBzdGlsbCBpbiBleHBlcmltZW50YWwgKHByb29mLW9mLWNvbmNlcHQpIHBoYXNlLgotICAg ICBEaXNrIHJlcGxpY2F0aW9uIHN1cHBvcnQgaXMgbGltaXRlZCB0byBEUkJEIGRpc2tzLgorQjxO T1RFUz4KKworPW92ZXIgNAorCitSZW11cyBzdXBwb3J0IGluIHhsIGlzIHN0aWxsIGluIGV4cGVy aW1lbnRhbCAocHJvb2Ytb2YtY29uY2VwdCkgcGhhc2UuCitEaXNrIHJlcGxpY2F0aW9uIHN1cHBv cnQgaXMgbGltaXRlZCB0byBEUkJEIGRpc2tzLgorCitDT0xPIHN1cHBvcnQgaW4geGwgaXMgc3Rp bGwgaW4gZXhwZXJpbWVudGFsIChwcm9vZi1vZi1jb25jZXB0KSBwaGFzZS4KK1RoZXJlIGlzIG5v IHN1cHBvcnQgZm9yIG5ldHdvcmsgYXQgdGhlIG1vbWVudC4KKworPWJhY2sKKworQjxFWEFNUExF PgogCi0gICAgIENPTE8gc3VwcG9ydCBpbiB4bCBpcyBzdGlsbCBpbiBleHBlcmltZW50YWwgKHBy b29mLW9mLWNvbmNlcHQpIHBoYXNlLgotICAgICBUaGVyZSBpcyBubyBzdXBwb3J0IGZvciBuZXR3 b3JrIG9yIGRpc2sgYXQgdGhlIG1vbWVudC4KKz1vdmVyIDQKKworKGEpIEFuIGV4YW1wbGUgZm9y IENPTE8gcmVwbGljYXRpb24ncyBjb25maWd1cmF0aW9uOiBkaXNrID1bJy4uLixjb2xvLGNvbG8t aG9zdAorPXh4eCxjb2xvLXBvcnQ9eHh4LGNvbG8tZXhwb3J0PXh4eCxhY3RpdmUtZGlzaz14eHgs aGlkZGVuLWRpc2s9eHh4Li4uJ10KKworPWl0ZW0gQjxjb2xvLWhvc3Q+ICAgICAgOlNlY29uZGFy eSBob3N0J3MgaXAgYWRkcmVzcy4KKworPWl0ZW0gQjxjb2xvLXBvcnQ+ICAgICAgOlNlY29uZGFy eSBob3N0J3MgcG9ydCwgd2Ugd2lsbCBydW4gYSBuYmQgc2VydmVyIG9uCitzZWNvbmRhcnkgaG9z dCwgYW5kIHRoZSBuYmQgc2VydmVyIHdpbGwgbGlzdGVuIHRoaXMgcG9ydC4KKworPWl0ZW0gQjxj b2xvLWV4cG9ydD4gICAgOk5iZCBzZXJ2ZXIncyBkaXNrIGV4cG9ydCBuYW1lIG9mIHNlY29uZGFy eSBob3N0LgorCis9aXRlbSBCPGFjdGl2ZS1kaXNrPiAgICA6U2Vjb25kYXJ5J3MgZ3Vlc3Qgd3Jp dGUgd2lsbCBiZSBidWZmZXJlZCBpbiB0aGlzIGRpc2ssCithbmQgaXQncyB1c2VkIGJ5IHNlY29u ZGFyeS4KKworPWl0ZW0gQjxoaWRkZW4tZGlzaz4gICAgOlByaW1hcnkncyBtb2RpZmllZCBjb250 ZW50cyB3aWxsIGJlIGJ1ZmZlcmVkIGluIHRoaXMKK2Rpc2ssIGFuZCBpdCdzIHVzZWQgYnkgc2Vj b25kYXJ5LgorCis9YmFjawogCiBCPE9QVElPTlM+CiAKZGlmZiAtLWdpdCBhL2RvY3MvbWlzYy94 bC1kaXNrLWNvbmZpZ3VyYXRpb24udHh0IGIvZG9jcy9taXNjL3hsLWRpc2stY29uZmlndXJhdGlv bi50eHQKaW5kZXggMjlmNmRkYi4uNmU3Mzk3NSAxMDA2NDQKLS0tIGEvZG9jcy9taXNjL3hsLWRp c2stY29uZmlndXJhdGlvbi50eHQKKysrIGIvZG9jcy9taXNjL3hsLWRpc2stY29uZmlndXJhdGlv bi50eHQKQEAgLTIzNCw2ICsyMzQsNTkgQEAgd2VyZSBpbnRlbnRpb25hbGx5IGNyZWF0ZWQgbm9u LXNwYXJzZSB0byBhdm9pZCBmcmFnbWVudGF0aW9uIG9mIHRoZQogZmlsZS4KIAogCis9PT09PT09 PT09PT09PT0KK0NPTE8gUEFSQU1FVEVSUworPT09PT09PT09PT09PT09CisKKworY29sbworLS0t LQorCitFbmFibGUgQ09MTyBIQSBmb3IgZGlzay4gRm9yIGJldHRlciB1bmRlcnN0YW5kaW5nIGJs b2NrIHJlcGxpY2F0aW9uIG9uCitRRU1VLCBwbGVhc2UgcmVmZXIgdG86CitodHRwOi8vd2lraS5x ZW11Lm9yZy9GZWF0dXJlcy9CbG9ja1JlcGxpY2F0aW9uCisKKworY29sby1ob3N0CistLS0tLS0t LS0KKworRGVzY3JpcHRpb246ICAgICAgICAgICBTZWNvbmRhcnkgaG9zdCdzIGFkZHJlc3MKK01h bmRhdG9yeTogICAgICAgICAgICAgWWVzIHdoZW4gQ09MTyBlbmFibGVkCisKKworY29sby1wb3J0 CistLS0tLS0tLS0KKworRGVzY3JpcHRpb246ICAgICAgICAgICBTZWNvbmRhcnkgcG9ydAorICAg ICAgICAgICAgICAgICAgICAgICBXZSB3aWxsIHJ1biBhIG5iZCBzZXJ2ZXIgb24gc2Vjb25kYXJ5 IGhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgbmJkIHNlcnZlciB3aWxsIGxp c3RlbiB0aGlzIHBvcnQuCitNYW5kYXRvcnk6ICAgICAgICAgICAgIFllcyB3aGVuIENPTE8gZW5h YmxlZAorCisKK2NvbG8tZXhwb3J0CistLS0tLS0tLS0tLQorCitEZXNjcmlwdGlvbjogICAgICAg ICAgIFdlIHdpbGwgcnVuIGEgbmJkIHNlcnZlciBvbiBzZWNvbmRhcnkgaG9zdCwKKyAgICAgICAg ICAgICAgICAgICAgICAgZXhwb3J0bmFtZSBpcyB0aGUgbmJkIHNlcnZlcidzIGRpc2sgZXhwb3J0 IG5hbWUuCitNYW5kYXRvcnk6ICAgICAgICAgICAgIFllcyB3aGVuIENPTE8gZW5hYmxlZAorCisK K2FjdGl2ZS1kaXNrCistLS0tLS0tLS0tLQorCitEZXNjcmlwdGlvbjogICAgICAgICAgIFRoaXMg aXMgdXNlZCBieSBzZWNvbmRhcnkuIFNlY29uZGFyeSBndWVzdCdzIHdyaXRlCisgICAgICAgICAg ICAgICAgICAgICAgIHdpbGwgYmUgYnVmZmVyZWQgaW4gdGhpcyBkaXNrLgorTWFuZGF0b3J5OiAg ICAgICAgICAgICBZZXMgd2hlbiBDT0xPIGVuYWJsZWQKKworCitoaWRkZW4tZGlzaworLS0tLS0t LS0tLS0KKworRGVzY3JpcHRpb246ICAgICAgICAgICBUaGlzIGlzIHVzZWQgYnkgc2Vjb25kYXJ5 LiBJdCBidWZmZXJzIHRoZSBvcmlnaW5hbAorICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50 IHRoYXQgaXMgbW9kaWZpZWQgYnkgdGhlIHByaW1hcnkgVk0uCitNYW5kYXRvcnk6ICAgICAgICAg ICAgIFllcyB3aGVuIENPTE8gZW5hYmxlZAorCisKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiBERVBSRUNBVEVEIFBBUkFNRVRFUlMsIFBSRUZJWEVTIEFORCBT WU5UQVhFUwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsLmMgYi90b29scy9saWJ4bC9saWJ4bC5jCmluZGV4 IDM2ODlkZmMuLmViMWIyNzcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsLmMKKysrIGIv dG9vbHMvbGlieGwvbGlieGwuYwpAQCAtMjMwNyw2ICsyMzA3LDggQEAgaW50IGxpYnhsX19kZXZp Y2VfZGlza19zZXRkZWZhdWx0KGxpYnhsX19nYyAqZ2MsIGxpYnhsX2RldmljZV9kaXNrICpkaXNr KQogICAgIGludCByYzsKIAogICAgIGxpYnhsX2RlZmJvb2xfc2V0ZGVmYXVsdCgmZGlzay0+ZGlz Y2FyZF9lbmFibGUsICEhZGlzay0+cmVhZHdyaXRlKTsKKyAgICBsaWJ4bF9kZWZib29sX3NldGRl ZmF1bHQoJmRpc2stPmNvbG9fZW5hYmxlLCBmYWxzZSk7CisgICAgbGlieGxfZGVmYm9vbF9zZXRk ZWZhdWx0KCZkaXNrLT5jb2xvX3Jlc3RvcmVfZW5hYmxlLCBmYWxzZSk7CiAKICAgICByYyA9IGxp YnhsX19yZXNvbHZlX2RvbWlkKGdjLCBkaXNrLT5iYWNrZW5kX2RvbW5hbWUsICZkaXNrLT5iYWNr ZW5kX2RvbWlkKTsKICAgICBpZiAocmMgPCAwKSByZXR1cm4gcmM7CkBAIC0yNTA1LDYgKzI1MDcs MTggQEAgc3RhdGljIHZvaWQgZGV2aWNlX2Rpc2tfYWRkKGxpYnhsX19lZ2MgKmVnYywgdWludDMy X3QgZG9taWQsCiAgICAgICAgICAgICAgICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAicGFyYW1z Iik7CiAgICAgICAgICAgICAgICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCBHQ1NQUklOVEYoIiVz OiVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19kZXZpY2VfZGlza19z dHJpbmdfb2ZfZm9ybWF0KGRpc2stPmZvcm1hdCksIGRpc2stPnBkZXZfcGF0aCkpOworICAgICAg ICAgICAgICAgIGlmIChsaWJ4bF9kZWZib29sX3ZhbChkaXNrLT5jb2xvX2VuYWJsZSkpIHsKKyAg ICAgICAgICAgICAgICAgICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAiY29sby1ob3N0Iik7Cisg ICAgICAgICAgICAgICAgICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgbGlieGxfX3NwcmludGYo Z2MsICIlcyIsIGRpc2stPmNvbG9faG9zdCkpOworICAgICAgICAgICAgICAgICAgICBmbGV4YXJy YXlfYXBwZW5kKGJhY2ssICJjb2xvLXBvcnQiKTsKKyAgICAgICAgICAgICAgICAgICAgZmxleGFy cmF5X2FwcGVuZChiYWNrLCBsaWJ4bF9fc3ByaW50ZihnYywgIiVzIiwgZGlzay0+Y29sb19wb3J0 KSk7CisgICAgICAgICAgICAgICAgICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgImNvbG8tZXhw b3J0Iik7CisgICAgICAgICAgICAgICAgICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgbGlieGxf X3NwcmludGYoZ2MsICIlcyIsIGRpc2stPmNvbG9fZXhwb3J0KSk7CisgICAgICAgICAgICAgICAg ICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgImFjdGl2ZS1kaXNrIik7CisgICAgICAgICAgICAg ICAgICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgbGlieGxfX3NwcmludGYoZ2MsICIlcyIsIGRp c2stPmFjdGl2ZV9kaXNrKSk7CisgICAgICAgICAgICAgICAgICAgIGZsZXhhcnJheV9hcHBlbmQo YmFjaywgImhpZGRlbi1kaXNrIik7CisgICAgICAgICAgICAgICAgICAgIGZsZXhhcnJheV9hcHBl bmQoYmFjaywgbGlieGxfX3NwcmludGYoZ2MsICIlcyIsIGRpc2stPmhpZGRlbl9kaXNrKSk7Cisg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFzc2VydChkZXZpY2UtPmJhY2tlbmRf a2luZCA9PSBMSUJYTF9fREVWSUNFX0tJTkRfUURJU0spOwogICAgICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICAgICAgZGVmYXVsdDoKQEAgLTI2MjAsNyArMjYzNCwxMiBAQCBzdGF0aWMgaW50 IGxpYnhsX19kZXZpY2VfZGlza19mcm9tX3hzX2JlKGxpYnhsX19nYyAqZ2MsCiAgICAgICAgIGdv dG8gY2xlYW51cDsKICAgICB9CiAKLSAgICAvKiAicGFyYW1zIiBtYXkgbm90IGJlIHByZXNlbnQ7 IGJ1dCBldmVyeXRoaW5nIGVsc2UgbXVzdCBiZS4gKi8KKyAgICAvKgorICAgICAqICJwYXJhbXMi IG1heSBub3QgYmUgcHJlc2VudDsgYnV0IGV2ZXJ5dGhpbmcgZWxzZSBtdXN0IGJlLgorICAgICAq IGNvbG8gcmVsZWF0ZWQgZW50cmllcyhjb2xvLWhvc3QsIGNvbG8tcG9ydCwgY29sby1leHBvcnQs CisgICAgICogYWN0aXZlLWRpc2sgYW5kIGhpZGRlbi1kaXNrKSBhcmUgcHJlc2VudCBvbmx5IGlm IGNvbG8gaXMKKyAgICAgKiBlbmFibGVkLgorICAgICAqLwogICAgIHRtcCA9IHhzX3JlYWQoY3R4 LT54c2gsIFhCVF9OVUxMLAogICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIlcy9wYXJhbXMi LCBiZV9wYXRoKSwgJmxlbik7CiAgICAgaWYgKHRtcCAmJiBzdHJjaHIodG1wLCAnOicpKSB7CkBA IC0yNjMwLDYgKzI2NDksNDkgQEAgc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX2Rpc2tfZnJvbV94 c19iZShsaWJ4bF9fZ2MgKmdjLAogICAgICAgICBkaXNrLT5wZGV2X3BhdGggPSB0bXA7CiAgICAg fQogCisgICAgdG1wID0geHNfcmVhZChjdHgtPnhzaCwgWEJUX05VTEwsCisgICAgICAgICAgICAg ICAgICBHQ1NQUklOVEYoIiVzL2NvbG8taG9zdCIsIGJlX3BhdGgpLCAmbGVuKTsKKyAgICBpZiAo dG1wKSB7CisgICAgICAgIGxpYnhsX2RlZmJvb2xfc2V0KCZkaXNrLT5jb2xvX2VuYWJsZSwgdHJ1 ZSk7CisgICAgICAgIGRpc2stPmNvbG9faG9zdCA9IHRtcDsKKyAgICB9IGVsc2UgeworICAgICAg ICBsaWJ4bF9kZWZib29sX3NldCgmZGlzay0+Y29sb19lbmFibGUsIGZhbHNlKTsKKyAgICB9CisK KyAgICBpZiAobGlieGxfZGVmYm9vbF92YWwoZGlzay0+Y29sb19lbmFibGUpKSB7CisgICAgICAg IHRtcCA9IHhzX3JlYWQoY3R4LT54c2gsIFhCVF9OVUxMLAorICAgICAgICAgICAgICAgICAgICAg IEdDU1BSSU5URigiJXMvY29sby1wb3J0IiwgYmVfcGF0aCksICZsZW4pOworICAgICAgICBpZiAo IXRtcCkgeworICAgICAgICAgICAgTE9HKEVSUk9SLCAiTWlzc2luZyB4ZW5zdG9yZSBub2RlICVz L2NvbG8tcG9ydCIsIGJlX3BhdGgpOworICAgICAgICAgICAgZ290byBjbGVhbnVwOworICAgICAg ICB9CisgICAgICAgIGRpc2stPmNvbG9fcG9ydCA9IHRtcDsKKworICAgICAgICB0bXAgPSB4c19y ZWFkKGN0eC0+eHNoLCBYQlRfTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYo IiVzL2NvbG8tZXhwb3J0IiwgYmVfcGF0aCksICZsZW4pOworICAgICAgICBpZiAoIXRtcCkgewor ICAgICAgICAgICAgTE9HKEVSUk9SLCAiTWlzc2luZyB4ZW5zdG9yZSBub2RlICVzL2NvbG8tZXhw b3J0IiwgYmVfcGF0aCk7CisgICAgICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgICAgIH0KKyAg ICAgICAgZGlzay0+Y29sb19leHBvcnQgPSB0bXA7CisKKyAgICAgICAgdG1wID0geHNfcmVhZChj dHgtPnhzaCwgWEJUX05VTEwsCisgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIlcy9h Y3RpdmUtZGlzayIsIGJlX3BhdGgpLCAmbGVuKTsKKyAgICAgICAgaWYgKCF0bXApIHsKKyAgICAg ICAgICAgIExPRyhFUlJPUiwgIk1pc3NpbmcgeGVuc3RvcmUgbm9kZSAlcy9hY3RpdmUtZGlzayIs IGJlX3BhdGgpOworICAgICAgICAgICAgZ290byBjbGVhbnVwOworICAgICAgICB9CisgICAgICAg IGRpc2stPmFjdGl2ZV9kaXNrID0gdG1wOworCisgICAgICAgIHRtcCA9IHhzX3JlYWQoY3R4LT54 c2gsIFhCVF9OVUxMLAorICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXMvaGlkZGVu LWRpc2siLCBiZV9wYXRoKSwgJmxlbik7CisgICAgICAgIGlmICghdG1wKSB7CisgICAgICAgICAg ICBMT0coRVJST1IsICJNaXNzaW5nIHhlbnN0b3JlIG5vZGUgJXMvaGlkZGVuLWRpc2siLCBiZV9w YXRoKTsKKyAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgfQorICAgICAgICBkaXNr LT5oaWRkZW5fZGlzayA9IHRtcDsKKyAgICB9CisKIAogICAgIHRtcCA9IGxpYnhsX194c19yZWFk KGdjLCBYQlRfTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVzL3R5 cGUiLCBiZV9wYXRoKSk7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYyBi L3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jCmluZGV4IDM2MTBhMzkuLmJmZjA4YjAgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhs X2NyZWF0ZS5jCkBAIC0xODAwLDEyICsxODAwLDI5IEBAIHN0YXRpYyB2b2lkIGRvbWFpbl9jcmVh dGVfY2IobGlieGxfX2VnYyAqZWdjLAogCiAgICAgbGlieGxfX2FvX2NvbXBsZXRlKGVnYywgYW8s IHJjKTsKIH0KLSAgICAKKworc3RhdGljIHZvaWQgc2V0X2Rpc2tfY29sb19yZXN0b3JlKGxpYnhs X2RvbWFpbl9jb25maWcgKmRfY29uZmlnKQoreworICAgIGludCBpOworCisgICAgZm9yIChpID0g MDsgaSA8IGRfY29uZmlnLT5udW1fZGlza3M7IGkrKykKKyAgICAgICAgbGlieGxfZGVmYm9vbF9z ZXQoJmRfY29uZmlnLT5kaXNrc1tpXS5jb2xvX3Jlc3RvcmVfZW5hYmxlLCB0cnVlKTsKK30KKwor c3RhdGljIHZvaWQgdW5zZXRfZGlza19jb2xvX3Jlc3RvcmUobGlieGxfZG9tYWluX2NvbmZpZyAq ZF9jb25maWcpCit7CisgICAgaW50IGk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgZF9jb25maWct Pm51bV9kaXNrczsgaSsrKQorICAgICAgICBsaWJ4bF9kZWZib29sX3NldCgmZF9jb25maWctPmRp c2tzW2ldLmNvbG9fcmVzdG9yZV9lbmFibGUsIGZhbHNlKTsKK30KKwogaW50IGxpYnhsX2RvbWFp bl9jcmVhdGVfbmV3KGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9kb21haW5fY29uZmlnICpkX2NvbmZp ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqZG9taWQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5bmNvcF9ob3cgKmFvX2hvdywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9hc3luY3Byb2dyZXNzX2hvdyAq YW9wX2NvbnNvbGVfaG93KQogeworICAgIHVuc2V0X2Rpc2tfY29sb19yZXN0b3JlKGRfY29uZmln KTsKICAgICByZXR1cm4gZG9fZG9tYWluX2NyZWF0ZShjdHgsIGRfY29uZmlnLCBkb21pZCwgLTEs IC0xLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFvX2hvdywgYW9wX2NvbnNv bGVfaG93KTsKIH0KQEAgLTE4MTcsNiArMTgzNCwxMiBAQCBpbnQgbGlieGxfZG9tYWluX2NyZWF0 ZV9yZXN0b3JlKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9kb21haW5fY29uZmlnICpkX2NvbmZpZywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5bmNvcF9ob3cg KmFvX2hvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5 bmNwcm9ncmVzc19ob3cgKmFvcF9jb25zb2xlX2hvdykKIHsKKyAgICBpZiAocGFyYW1zLT5jaGVj a3BvaW50ZWRfc3RyZWFtID09IExJQlhMX0NIRUNLUE9JTlRFRF9TVFJFQU1fQ09MTykgeworICAg ICAgICBzZXRfZGlza19jb2xvX3Jlc3RvcmUoZF9jb25maWcpOworICAgIH0gZWxzZSB7CisgICAg ICAgIHVuc2V0X2Rpc2tfY29sb19yZXN0b3JlKGRfY29uZmlnKTsKKyAgICB9CisKICAgICByZXR1 cm4gZG9fZG9tYWluX2NyZWF0ZShjdHgsIGRfY29uZmlnLCBkb21pZCwgcmVzdG9yZV9mZCwgc2Vu ZF9iYWNrX2ZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgYW9faG93LCBh b3BfY29uc29sZV9ob3cpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfZGV2aWNl LmMgYi90b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYwppbmRleCA4YmI1ZTkzLi4wMzlhZmM2IDEw MDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYworKysgYi90b29scy9saWJ4bC9s aWJ4bF9kZXZpY2UuYwpAQCAtMTk2LDYgKzE5NiwxMCBAQCBzdGF0aWMgaW50IGRpc2tfdHJ5X2Jh Y2tlbmQoZGlza190cnlfYmFja2VuZF9hcmdzICphLAogICAgICAgICAgICAgZ290byBiYWRfZm9y bWF0OwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGxpYnhsX2RlZmJvb2xfdmFsKGEtPmRpc2st PmNvbG9fZW5hYmxlKSB8fAorICAgICAgICAgICAgYS0+ZGlzay0+YWN0aXZlX2Rpc2sgfHwgYS0+ ZGlzay0+aGlkZGVuX2Rpc2spCisgICAgICAgICAgICBnb3RvIGJhZF9jb2xvOworCiAgICAgICAg IGlmIChhLT5kaXNrLT5iYWNrZW5kX2RvbWlkICE9IExJQlhMX1RPT0xTVEFDS19ET01JRCkgewog ICAgICAgICAgICAgTE9HKERFQlVHLCAiRGlzayB2ZGV2PSVzLCBpcyB1c2luZyBhIHN0b3JhZ2Ug ZHJpdmVyIGRvbWFpbiwgIgogICAgICAgICAgICAgICAgICAgICAgICAic2tpcHBpbmcgcGh5c2lj YWwgZGV2aWNlIGNoZWNrIiwgYS0+ZGlzay0+dmRldik7CkBAIC0yMTgsNiArMjIyLDEwIEBAIHN0 YXRpYyBpbnQgZGlza190cnlfYmFja2VuZChkaXNrX3RyeV9iYWNrZW5kX2FyZ3MgKmEsCiAgICAg Y2FzZSBMSUJYTF9ESVNLX0JBQ0tFTkRfVEFQOgogICAgICAgICBpZiAoYS0+ZGlzay0+c2NyaXB0 KSBnb3RvIGJhZF9zY3JpcHQ7CiAKKyAgICAgICAgaWYgKGxpYnhsX2RlZmJvb2xfdmFsKGEtPmRp c2stPmNvbG9fZW5hYmxlKSB8fAorICAgICAgICAgICAgYS0+ZGlzay0+YWN0aXZlX2Rpc2sgfHwg YS0+ZGlzay0+aGlkZGVuX2Rpc2spCisgICAgICAgICAgICBnb3RvIGJhZF9jb2xvOworCiAgICAg ICAgIGlmIChhLT5kaXNrLT5pc19jZHJvbSkgewogICAgICAgICAgICAgTE9HKERFQlVHLCAiRGlz ayB2ZGV2PSVzLCBiYWNrZW5kIHRhcCB1bnN1aXRhYmxlIGZvciBjZHJvbXMiLAogICAgICAgICAg ICAgICAgICAgICAgICBhLT5kaXNrLT52ZGV2KTsKQEAgLTIzNiw2ICsyNDQsMjIgQEAgc3RhdGlj IGludCBkaXNrX3RyeV9iYWNrZW5kKGRpc2tfdHJ5X2JhY2tlbmRfYXJncyAqYSwKIAogICAgIGNh c2UgTElCWExfRElTS19CQUNLRU5EX1FESVNLOgogICAgICAgICBpZiAoYS0+ZGlzay0+c2NyaXB0 KSBnb3RvIGJhZF9zY3JpcHQ7CisgICAgICAgIGlmIChsaWJ4bF9kZWZib29sX3ZhbChhLT5kaXNr LT5jb2xvX2VuYWJsZSkpIHsKKyAgICAgICAgICAgIGlmICghYS0+ZGlzay0+Y29sb19ob3N0KQor ICAgICAgICAgICAgICAgIGdvdG8gYmFkX2NvbG9faG9zdDsKKworICAgICAgICAgICAgaWYgKCFh LT5kaXNrLT5jb2xvX3BvcnQpCisgICAgICAgICAgICAgICAgZ290byBiYWRfY29sb19wb3J0Owor CisgICAgICAgICAgICBpZiAoIWEtPmRpc2stPmNvbG9fZXhwb3J0KQorICAgICAgICAgICAgICAg IGdvdG8gYmFkX2NvbG9fZXhwb3J0OworCisgICAgICAgICAgICBpZiAoIWEtPmRpc2stPmFjdGl2 ZV9kaXNrKQorICAgICAgICAgICAgICAgIGdvdG8gYmFkX2FjdGl2ZV9kaXNrOworCisgICAgICAg ICAgICBpZiAoIWEtPmRpc2stPmhpZGRlbl9kaXNrKQorICAgICAgICAgICAgICAgIGdvdG8gYmFk X2hpZGRlbl9kaXNrOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBiYWNrZW5kOwogCiAgICAg ZGVmYXVsdDoKQEAgLTI1Niw2ICsyODAsMzYgQEAgc3RhdGljIGludCBkaXNrX3RyeV9iYWNrZW5k KGRpc2tfdHJ5X2JhY2tlbmRfYXJncyAqYSwKICAgICBMT0coREVCVUcsICJEaXNrIHZkZXY9JXMs IGJhY2tlbmQgJXMgbm90IGNvbXBhdGlibGUgd2l0aCBzY3JpcHQ9Li4uIiwKICAgICAgICAgYS0+ ZGlzay0+dmRldiwgbGlieGxfZGlza19iYWNrZW5kX3RvX3N0cmluZyhiYWNrZW5kKSk7CiAgICAg cmV0dXJuIDA7CisKKyBiYWRfY29sbzoKKyAgICBMT0coREVCVUcsICJEaXNrIHZkZXY9JXMsIGJh Y2tlbmQgJXMgbm90IGNvbXBhdGlibGUgd2l0aCBjb2xvIiwKKyAgICAgICAgYS0+ZGlzay0+dmRl diwgbGlieGxfZGlza19iYWNrZW5kX3RvX3N0cmluZyhiYWNrZW5kKSk7CisgICAgcmV0dXJuIDA7 CisKKyBiYWRfY29sb19ob3N0OgorICAgIExPRyhERUJVRywgIkRpc2sgdmRldj0lcywgYmFja2Vu ZCAlcyBuZWVkcyBjb2xvLWhvc3Q9Li4uIGZvciBjb2xvIiwKKyAgICAgICAgYS0+ZGlzay0+dmRl diwgbGlieGxfZGlza19iYWNrZW5kX3RvX3N0cmluZyhiYWNrZW5kKSk7CisgICAgcmV0dXJuIDA7 CisKKyBiYWRfY29sb19wb3J0OgorICAgIExPRyhERUJVRywgIkRpc2sgdmRldj0lcywgYmFja2Vu ZCAlcyBuZWVkcyBjb2xvLXBvcnQ9Li4uIGZvciBjb2xvIiwKKyAgICAgICAgYS0+ZGlzay0+dmRl diwgbGlieGxfZGlza19iYWNrZW5kX3RvX3N0cmluZyhiYWNrZW5kKSk7CisgICAgcmV0dXJuIDA7 CisKKyBiYWRfY29sb19leHBvcnQ6CisgICAgTE9HKERFQlVHLCAiRGlzayB2ZGV2PSVzLCBiYWNr ZW5kICVzIG5lZWRzIGNvbG8tZXhwb3J0PS4uLiBmb3IgY29sbyIsCisgICAgICAgIGEtPmRpc2st PnZkZXYsIGxpYnhsX2Rpc2tfYmFja2VuZF90b19zdHJpbmcoYmFja2VuZCkpOworICAgIHJldHVy biAwOworCisgYmFkX2FjdGl2ZV9kaXNrOgorICAgIExPRyhERUJVRywgIkRpc2sgdmRldj0lcywg YmFja2VuZCAlcyBuZWVkcyBhY3RpdmUtZGlzaz0uLi4gZm9yIGNvbG8iLAorICAgICAgICBhLT5k aXNrLT52ZGV2LCBsaWJ4bF9kaXNrX2JhY2tlbmRfdG9fc3RyaW5nKGJhY2tlbmQpKTsKKyAgICBy ZXR1cm4gMDsKKworIGJhZF9oaWRkZW5fZGlzazoKKyAgICBMT0coREVCVUcsICJEaXNrIHZkZXY9 JXMsIGJhY2tlbmQgJXMgbmVlZHMgaGlkZGVuLWRpc2s9Li4uIGZvciBjb2xvIiwKKyAgICAgICAg YS0+ZGlzay0+dmRldiwgbGlieGxfZGlza19iYWNrZW5kX3RvX3N0cmluZyhiYWNrZW5kKSk7Cisg ICAgcmV0dXJuIDA7CiB9CiAKIGludCBsaWJ4bF9fZGV2aWNlX2Rpc2tfc2V0X2JhY2tlbmQobGli eGxfX2djICpnYywgbGlieGxfZGV2aWNlX2Rpc2sgKmRpc2spIHsKZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhsL2xpYnhsX2RtLmMgYi90b29scy9saWJ4bC9saWJ4bF9kbS5jCmluZGV4IDRhY2EzOGUu LmJhMTcyNTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RtLmMKKysrIGIvdG9vbHMv bGlieGwvbGlieGxfZG0uYwpAQCAtNzUxLDYgKzc1MSwxMzkgQEAgc3RhdGljIGludCBsaWJ4bF9f ZG1fcnVuYXNfaGVscGVyKGxpYnhsX19nYyAqZ2MsIGNvbnN0IGNoYXIgKnVzZXJuYW1lKQogICAg IH0KIH0KIAorLyogY29sbyBtb2RlICovCitlbnVtIHsKKyAgICBMSUJYTF9fQ09MT19OT05FID0g MCwKKyAgICBMSUJYTF9fQ09MT19QUklNQVJZLAorICAgIExJQlhMX19DT0xPX1NFQ09OREFSWSwK K307CisKK3N0YXRpYyBjaGFyICpxZW11X2Rpc2tfc2NzaV9kcml2ZV9zdHJpbmcobGlieGxfX2dj ICpnYywgY29uc3QgY2hhciAqcGRldl9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgdW5pdCwgY29uc3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9kZXZpY2VfZGlzayAqZGlz aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbG9fbW9k ZSkKK3sKKyAgICBjaGFyICpkcml2ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZXhwb3J0bmFt ZSA9IGRpc2stPmNvbG9fZXhwb3J0OworICAgIGNvbnN0IGNoYXIgKmFjdGl2ZV9kaXNrID0gZGlz ay0+YWN0aXZlX2Rpc2s7CisgICAgY29uc3QgY2hhciAqaGlkZGVuX2Rpc2sgPSBkaXNrLT5oaWRk ZW5fZGlzazsKKworICAgIHN3aXRjaCAoY29sb19tb2RlKSB7CisgICAgY2FzZSBMSUJYTF9fQ09M T19OT05FOgorICAgICAgICBkcml2ZSA9IGxpYnhsX19zcHJpbnRmCisgICAgICAgICAgICAoZ2Ms ICJmaWxlPSVzLGlmPXNjc2ksYnVzPTAsdW5pdD0lZCxmb3JtYXQ9JXMsY2FjaGU9d3JpdGViYWNr IiwKKyAgICAgICAgICAgICBwZGV2X3BhdGgsIHVuaXQsIGZvcm1hdCk7CisgICAgICAgIGJyZWFr OworICAgIGNhc2UgTElCWExfX0NPTE9fUFJJTUFSWToKKyAgICAgICAgLyoKKyAgICAgICAgICog cHJpbWFyeToKKyAgICAgICAgICogIC1kaXJ2ZSBpZj1zY3NpLGJ1cz0wLHVuaXQ9eCxjYWNoZT13 cml0ZWJhY2ssZHJpdmVyPXF1b3J1bSxcCisgICAgICAgICAqICBpZD1leHBvcnRuYW1lLFwKKyAg ICAgICAgICogIGNoaWxkcmVuLjAuZmlsZS5maWxlbmFtZT1wZGV2X3BhdGgsXAorICAgICAgICAg KiAgY2hpbGRyZW4uMC5kcml2ZXI9Zm9ybWF0LFwKKyAgICAgICAgICogIHJlYWQtcGF0dGVybj1m aWZvLFwKKyAgICAgICAgICogIHZvdGUtdGhyZXNob2xkPTEKKyAgICAgICAgICovCisgICAgICAg IGRyaXZlID0gR0NTUFJJTlRGKAorICAgICAgICAgICAgImlmPXNjc2ksYnVzPTAsdW5pdD0lZCxj YWNoZT13cml0ZWJhY2ssZHJpdmVyPXF1b3J1bSwiCisgICAgICAgICAgICAiaWQ9JXMsIgorICAg ICAgICAgICAgImNoaWxkcmVuLjAuZmlsZS5maWxlbmFtZT0lcywiCisgICAgICAgICAgICAiY2hp bGRyZW4uMC5kcml2ZXI9JXMsIgorICAgICAgICAgICAgInJlYWQtcGF0dGVybj1maWZvLCIKKyAg ICAgICAgICAgICJ2b3RlLXRocmVzaG9sZD0xIiwKKyAgICAgICAgICAgIHVuaXQsIGV4cG9ydG5h bWUsIHBkZXZfcGF0aCwgZm9ybWF0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMSUJYTF9f Q09MT19TRUNPTkRBUlk6CisgICAgICAgIC8qCisgICAgICAgICAqIHNlY29uZGFyeToKKyAgICAg ICAgICogIC1kcml2ZSBpZj1zY3NpLGJ1cz0wLHVuaXQ9eCxjYWNoZT13cml0ZWJhY2ssZHJpdmVy PXJlcGxpY2F0aW9uLFwKKyAgICAgICAgICogIG1vZGU9c2Vjb25kYXJ5LFwKKyAgICAgICAgICog IGZpbGUuZHJpdmVyPXFjb3cyLFwKKyAgICAgICAgICogIGZpbGUuZmlsZS5maWxlbmFtZT1hY3Rp dmVfZGlzayxcCisgICAgICAgICAqICBmaWxlLmJhY2tpbmcuZHJpdmVyPXFjb3cyLFwKKyAgICAg ICAgICogIGZpbGUuYmFja2luZy5maWxlLmZpbGVuYW1lPWhpZGRlbl9kaXNrLFwKKyAgICAgICAg ICogIGZpbGUuYmFja2luZy5iYWNraW5nPWV4cG9ydG5hbWUsCisgICAgICAgICAqLworICAgICAg ICBkcml2ZSA9IEdDU1BSSU5URigKKyAgICAgICAgICAgICJpZj1zY3NpLGJ1cz0wLHVuaXQ9JWQs Y2FjaGU9d3JpdGViYWNrLGRyaXZlcj1yZXBsaWNhdGlvbiwiCisgICAgICAgICAgICAibW9kZT1z ZWNvbmRhcnksIgorICAgICAgICAgICAgImZpbGUuZHJpdmVyPXFjb3cyLCIKKyAgICAgICAgICAg ICJmaWxlLmZpbGUuZmlsZW5hbWU9JXMsIgorICAgICAgICAgICAgImZpbGUuYmFja2luZy5kcml2 ZXI9cWNvdzIsIgorICAgICAgICAgICAgImZpbGUuYmFja2luZy5maWxlLmZpbGVuYW1lPSVzLCIK KyAgICAgICAgICAgICJmaWxlLmJhY2tpbmcuYmFja2luZz0lcyIsCisgICAgICAgICAgICB1bml0 LCBhY3RpdmVfZGlzaywgaGlkZGVuX2Rpc2ssIGV4cG9ydG5hbWUpOworICAgICAgICBicmVhazsK KyAgICBkZWZhdWx0OgorICAgICAgICBhYm9ydCgpOworICAgIH0KKworICAgIHJldHVybiBkcml2 ZTsKK30KKworc3RhdGljIGNoYXIgKnFlbXVfZGlza19pZGVfZHJpdmVfc3RyaW5nKGxpYnhsX19n YyAqZ2MsIGNvbnN0IGNoYXIgKnBkZXZfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgdW5pdCwgY29uc3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2RldmljZV9kaXNrICpkaXNr LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2xvX21vZGUp Cit7CisgICAgY2hhciAqZHJpdmUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmV4cG9ydG5hbWUg PSBkaXNrLT5jb2xvX2V4cG9ydDsKKyAgICBjb25zdCBjaGFyICphY3RpdmVfZGlzayA9IGRpc2st PmFjdGl2ZV9kaXNrOworICAgIGNvbnN0IGNoYXIgKmhpZGRlbl9kaXNrID0gZGlzay0+aGlkZGVu X2Rpc2s7CisKKyAgICBzd2l0Y2ggKGNvbG9fbW9kZSkgeworICAgIGNhc2UgTElCWExfX0NPTE9f Tk9ORToKKyAgICAgICAgZHJpdmUgPSBHQ1NQUklOVEYKKyAgICAgICAgICAgICgiZmlsZT0lcyxp Zj1pZGUsaW5kZXg9JWQsbWVkaWE9ZGlzayxmb3JtYXQ9JXMsY2FjaGU9d3JpdGViYWNrIiwKKyAg ICAgICAgICAgICBwZGV2X3BhdGgsIHVuaXQsIGZvcm1hdCk7CisgICAgICAgIGJyZWFrOworICAg IGNhc2UgTElCWExfX0NPTE9fUFJJTUFSWToKKyAgICAgICAgLyoKKyAgICAgICAgICogcHJpbWFy eToKKyAgICAgICAgICogIC1kaXJ2ZSBpZj1pZGUsaW5kZXg9eCxtZWRpYT1kaXNrLGNhY2hlPXdy aXRlYmFjayxkcml2ZXI9cXVvcnVtLFwKKyAgICAgICAgICogIGlkPWV4cG9ydG5hbWUsXAorICAg ICAgICAgKiAgY2hpbGRyZW4uMC5maWxlLmZpbGVuYW1lPXBkZXZfcGF0aCxcCisgICAgICAgICAq ICBjaGlsZHJlbi4wLmRyaXZlcj1mb3JtYXQsXAorICAgICAgICAgKiAgcmVhZC1wYXR0ZXJuPWZp Zm8sXAorICAgICAgICAgKiAgdm90ZS10aHJlc2hvbGQ9MQorICAgICAgICAgKi8KKyAgICAgICAg ZHJpdmUgPSBHQ1NQUklOVEYoCisgICAgICAgICAgICAiaWY9aWRlLGluZGV4PSVkLG1lZGlhPWRp c2ssY2FjaGU9d3JpdGViYWNrLGRyaXZlcj1xdW9ydW0sIgorICAgICAgICAgICAgImlkPSVzLCIK KyAgICAgICAgICAgICJjaGlsZHJlbi4wLmZpbGUuZmlsZW5hbWU9JXMsIgorICAgICAgICAgICAg ImNoaWxkcmVuLjAuZHJpdmVyPSVzLCIKKyAgICAgICAgICAgICJyZWFkLXBhdHRlcm49Zmlmbywi CisgICAgICAgICAgICAidm90ZS10aHJlc2hvbGQ9MSIsCisgICAgICAgICAgICAgdW5pdCwgZXhw b3J0bmFtZSwgcGRldl9wYXRoLCBmb3JtYXQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExJ QlhMX19DT0xPX1NFQ09OREFSWToKKyAgICAgICAgLyoKKyAgICAgICAgICogc2Vjb25kYXJ5Ogor ICAgICAgICAgKiAgLWRyaXZlIGlmPWlkZSxpbmRleD14LG1lZGlhPWRpc2ssY2FjaGU9d3JpdGVi YWNrLGRyaXZlcj1yZXBsaWNhdGlvbixcCisgICAgICAgICAqICBtb2RlPXNlY29uZGFyeSxcCisg ICAgICAgICAqICBmaWxlLmRyaXZlcj1xY293MixcCisgICAgICAgICAqICBmaWxlLmZpbGUuZmls ZW5hbWU9YWN0aXZlX2Rpc2ssXAorICAgICAgICAgKiAgZmlsZS5iYWNraW5nLmRyaXZlcj1xY293 MixcCisgICAgICAgICAqICBmaWxlLmJhY2tpbmcuZmlsZS5maWxlbmFtZT1oaWRkZW5fZGlzayxc CisgICAgICAgICAqICBmaWxlLmJhY2tpbmcuYmFja2luZz1leHBvcnRuYW1lLAorICAgICAgICAg Ki8KKyAgICAgICAgZHJpdmUgPSBHQ1NQUklOVEYoCisgICAgICAgICAgICAiaWY9aWRlLGluZGV4 PSVkLG1lZGlhPWRpc2ssY2FjaGU9d3JpdGViYWNrLGRyaXZlcj1yZXBsaWNhdGlvbiwiCisgICAg ICAgICAgICAibW9kZT1zZWNvbmRhcnksIgorICAgICAgICAgICAgImZpbGUuZHJpdmVyPXFjb3cy LCIKKyAgICAgICAgICAgICJmaWxlLmZpbGUuZmlsZW5hbWU9JXMsIgorICAgICAgICAgICAgImZp bGUuYmFja2luZy5kcml2ZXI9cWNvdzIsIgorICAgICAgICAgICAgImZpbGUuYmFja2luZy5maWxl LmZpbGVuYW1lPSVzLCIKKyAgICAgICAgICAgICJmaWxlLmJhY2tpbmcuYmFja2luZz0lcyIsCisg ICAgICAgICAgICB1bml0LCBhY3RpdmVfZGlzaywgaGlkZGVuX2Rpc2ssIGV4cG9ydG5hbWUpOwor ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhYm9ydCgpOworICAgIH0KKwor ICAgIHJldHVybiBkcml2ZTsKK30KKwogc3RhdGljIGludCBsaWJ4bF9fYnVpbGRfZGV2aWNlX21v ZGVsX2FyZ3NfbmV3KGxpYnhsX19nYyAqZ2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqZG0sIGludCBndWVzdF9kb21pZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9kb21haW5fY29uZmlnICpn dWVzdF9jb25maWcsCkBAIC0xMTY0LDYgKzEyOTcsNyBAQCBzdGF0aWMgaW50IGxpYnhsX19idWls ZF9kZXZpY2VfbW9kZWxfYXJnc19uZXcobGlieGxfX2djICpnYywKICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKmZvcm1hdCA9IHFlbXVfZGlza19mb3JtYXRfc3RyaW5nKGRpc2tzW2ldLmZvcm1hdCk7 CiAgICAgICAgICAgICBjaGFyICpkcml2ZTsKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBkZXZf cGF0aDsKKyAgICAgICAgICAgIGludCBjb2xvX21vZGU7CiAKICAgICAgICAgICAgIGlmIChkZXZf bnVtYmVyID09IC0xKSB7CiAgICAgICAgICAgICAgICAgTE9HKFdBUk4sICJ1bmFibGUgdG8gZGV0 ZXJtaW5lIiIgZGlzayBudW1iZXIgZm9yICVzIiwKQEAgLTEyMDgsMTAgKzEzNDIsMzIgQEAgc3Rh dGljIGludCBsaWJ4bF9fYnVpbGRfZGV2aWNlX21vZGVsX2FyZ3NfbmV3KGxpYnhsX19nYyAqZ2Ms CiAgICAgICAgICAgICAgICAgICogRm9yIG90aGVyIGRpc2tzIHdlIHRyYW5zbGF0ZSBkZXZpY2Vz IDAuLjMgaW50bwogICAgICAgICAgICAgICAgICAqIGhkW2EtZF0gYW5kIGlnbm9yZSB0aGUgcmVz dC4KICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAobGlieGxfZGVmYm9v bF92YWwoZGlza3NbaV0uY29sb19lbmFibGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChs aWJ4bF9kZWZib29sX3ZhbChkaXNrc1tpXS5jb2xvX3Jlc3RvcmVfZW5hYmxlKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgIGNvbG9fbW9kZSA9IExJQlhMX19DT0xPX1NFQ09OREFSWTsKKyAgICAg ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgY29sb19tb2RlID0g TElCWExfX0NPTE9fUFJJTUFSWTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICAgICAgICBjb2xvX21vZGUgPSBMSUJYTF9fQ09MT19OT05FOworICAgICAgICAgICAgICAg IH0KKwogICAgICAgICAgICAgICAgIGlmIChzdHJuY21wKGRpc2tzW2ldLnZkZXYsICJzZCIsIDIp ID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgZHJpdmUgPSBsaWJ4bF9fc3ByaW50ZgotICAg ICAgICAgICAgICAgICAgICAgICAgKGdjLCAiZmlsZT0lcyxpZj1zY3NpLGJ1cz0wLHVuaXQ9JWQs Zm9ybWF0PSVzLHJlYWRvbmx5PSVzLGNhY2hlPXdyaXRlYmFjayIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgcGRldl9wYXRoLCBkaXNrLCBmb3JtYXQsIGRpc2tzW2ldLnJlYWR3cml0ZSA/ICJv ZmYiIDogIm9uIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb2xvX21vZGUgPT0gTElCWExf X0NPTE9fU0VDT05EQVJZKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAg ICAgICAgICAgICAgICAgICogLWRyaXZlIGlmPW5vbmUsZHJpdmVyPWZvcm1hdCxmaWxlPXBkZXZf cGF0aCxcCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBpZD1leHBvcnRuYW1lCisgICAgICAg ICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlID0gbGli eGxfX3NwcmludGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2MsICJpZj1ub25lLGRy aXZlcj0lcyxmaWxlPSVzLGlkPSVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y bWF0LCBwZGV2X3BhdGgsIGRpc2tzW2ldLmNvbG9fZXhwb3J0KTsKKworICAgICAgICAgICAgICAg ICAgICAgICAgZmxleGFycmF5X2FwcGVuZChkbV9hcmdzLCAiLWRyaXZlIik7CisgICAgICAgICAg ICAgICAgICAgICAgICBmbGV4YXJyYXlfYXBwZW5kKGRtX2FyZ3MsIGRyaXZlKTsKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkcml2ZSA9IHFlbXVfZGlza19zY3Np X2RyaXZlX3N0cmluZyhnYywgcGRldl9wYXRoLCBkaXNrLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkaXNrc1tpXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29s b19tb2RlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0cm5jbXAoZGlza3NbaV0udmRl diwgInh2ZCIsIDMpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAg ICAgICAgICAgICogRG8gbm90IGFkZCBhbnkgZW11bGF0ZWQgZGlzayB3aGVuIFBWIGRpc2sgYXJl CkBAIC0xMjM0LDEyICsxMzkwLDI4IEBAIHN0YXRpYyBpbnQgbGlieGxfX2J1aWxkX2RldmljZV9t b2RlbF9hcmdzX25ldyhsaWJ4bF9fZ2MgKmdjLAogICAgICAgICAgICAgICAgICAgICAgICAgTE9H KEVSUk9SLCAicWVtdS14ZW4gZG9lc24ndCBzdXBwb3J0IHJlYWQtb25seSBJREUgZGlzayBkcml2 ZXJzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JfSU5WQUw7CiAgICAg ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZHJpdmUgPSBsaWJ4bF9fc3By aW50ZgotICAgICAgICAgICAgICAgICAgICAgICAgKGdjLCAiZmlsZT0lcyxpZj1pZGUsaW5kZXg9 JWQsbWVkaWE9ZGlzayxmb3JtYXQ9JXMsY2FjaGU9d3JpdGViYWNrIiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICBwZGV2X3BhdGgsIGRpc2ssIGZvcm1hdCk7CisgICAgICAgICAgICAgICAgICAg IGlmIChjb2xvX21vZGUgPT0gTElCWExfX0NPTE9fU0VDT05EQVJZKSB7CisgICAgICAgICAgICAg ICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICogLWRyaXZlIGlmPW5vbmUs ZHJpdmVyPWZvcm1hdCxmaWxlPXBkZXZfcGF0aCxcCisgICAgICAgICAgICAgICAgICAgICAgICAg KiBpZD1leHBvcnRuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAg ICAgICAgICAgICAgIGRyaXZlID0gbGlieGxfX3NwcmludGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ2MsICJpZj1ub25lLGRyaXZlcj0lcyxmaWxlPSVzLGlkPSVzIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBwZGV2X3BhdGgsIGRpc2tzW2ldLmNvbG9fZXhw b3J0KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZmxleGFycmF5X2FwcGVuZChkbV9hcmdz LCAiLWRyaXZlIik7CisgICAgICAgICAgICAgICAgICAgICAgICBmbGV4YXJyYXlfYXBwZW5kKGRt X2FyZ3MsIGRyaXZlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICBkcml2ZSA9IHFlbXVfZGlza19pZGVfZHJpdmVfc3RyaW5nKGdjLCBwZGV2X3BhdGgsIGRpc2ss CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZkaXNrc1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb2xvX21vZGUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBEbyBub3QgZW11bGF0ZSB0aGlzIGRpc2sg Ki8KICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWRyaXZlKQorICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg ZmxleGFycmF5X2FwcGVuZChkbV9hcmdzLCAiLWRyaXZlIik7CmRpZmYgLS1naXQgYS90b29scy9s aWJ4bC9saWJ4bF90eXBlcy5pZGwgYi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKaW5kZXgg OWIwYTUzNy4uYTIwNzhkMSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRs CisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbApAQCAtNTc1LDYgKzU3NSwxMyBAQCBs aWJ4bF9kZXZpY2VfZGlzayA9IFN0cnVjdCgiZGV2aWNlX2Rpc2siLCBbCiAgICAgKCJpc19jZHJv bSIsIGludGVnZXIpLAogICAgICgiZGlyZWN0X2lvX3NhZmUiLCBib29sKSwKICAgICAoImRpc2Nh cmRfZW5hYmxlIiwgbGlieGxfZGVmYm9vbCksCisgICAgKCJjb2xvX2VuYWJsZSIsIGxpYnhsX2Rl ZmJvb2wpLAorICAgICgiY29sb19yZXN0b3JlX2VuYWJsZSIsIGxpYnhsX2RlZmJvb2wpLAorICAg ICgiY29sb19ob3N0Iiwgc3RyaW5nKSwKKyAgICAoImNvbG9fcG9ydCIsIHN0cmluZyksCisgICAg KCJjb2xvX2V4cG9ydCIsIHN0cmluZyksCisgICAgKCJhY3RpdmVfZGlzayIsIHN0cmluZyksCisg ICAgKCJoaWRkZW5fZGlzayIsIHN0cmluZykKICAgICBdKQogCiBsaWJ4bF9kZXZpY2VfbmljID0g U3RydWN0KCJkZXZpY2VfbmljIiwgWwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGx1X2Rp c2tfbC5sIGIvdG9vbHMvbGlieGwvbGlieGx1X2Rpc2tfbC5sCmluZGV4IDFhNWRlYjUuLjU4ZGE5 NDMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsdV9kaXNrX2wubAorKysgYi90b29scy9s aWJ4bC9saWJ4bHVfZGlza19sLmwKQEAgLTE3Niw2ICsxNzYsMTMgQEAgc2NyaXB0PVteLF0qLD8J eyBTVFJJUCgnLCcpOyBTQVZFU1RSSU5HKCJzY3JpcHQiLCBzY3JpcHQsIEZST01FUVVBTFMpOyB9 CiBkaXJlY3QtaW8tc2FmZSw/IHsgRFBDLT5kaXNrLT5kaXJlY3RfaW9fc2FmZSA9IDE7IH0KIGRp c2NhcmQsPwl7IGxpYnhsX2RlZmJvb2xfc2V0KCZEUEMtPmRpc2stPmRpc2NhcmRfZW5hYmxlLCB0 cnVlKTsgfQogbm8tZGlzY2FyZCw/CXsgbGlieGxfZGVmYm9vbF9zZXQoJkRQQy0+ZGlzay0+ZGlz Y2FyZF9lbmFibGUsIGZhbHNlKTsgfQorY29sbyw/CQl7IGxpYnhsX2RlZmJvb2xfc2V0KCZEUEMt PmRpc2stPmNvbG9fZW5hYmxlLCB0cnVlKTsgfQorbm8tY29sbyw/CXsgbGlieGxfZGVmYm9vbF9z ZXQoJkRQQy0+ZGlzay0+Y29sb19lbmFibGUsIGZhbHNlKTsgfQorY29sby1ob3N0PVteLF0qLD8J eyBTVFJJUCgnLCcpOyBTQVZFU1RSSU5HKCJjb2xvLWhvc3QiLCBjb2xvX2hvc3QsIEZST01FUVVB TFMpOyB9Citjb2xvLXBvcnQ9W14sXSosPwl7IFNUUklQKCcsJyk7IFNBVkVTVFJJTkcoImNvbG8t cG9ydCIsIGNvbG9fcG9ydCwgRlJPTUVRVUFMUyk7IH0KK2NvbG8tZXhwb3J0PVteLF0qLD8JeyBT VFJJUCgnLCcpOyBTQVZFU1RSSU5HKCJjb2xvLWV4cG9ydCIsIGNvbG9fZXhwb3J0LCBGUk9NRVFV QUxTKTsgfQorYWN0aXZlLWRpc2s9W14sXSosPwl7IFNUUklQKCcsJyk7IFNBVkVTVFJJTkcoImFj dGl2ZS1kaXNrIiwgYWN0aXZlX2Rpc2ssIEZST01FUVVBTFMpOyB9CitoaWRkZW4tZGlzaz1bXixd Kiw/CXsgU1RSSVAoJywnKTsgU0FWRVNUUklORygiaGlkZGVuLWRpc2siLCBoaWRkZW5fZGlzaywg RlJPTUVRVUFMUyk7IH0KIAogIC8qIHRoZSB0YXJnZXQgbWFnaWMgcGFyYW1ldGVyLCBlYXRzIHRo ZSByZXN0IG9mIHRoZSBzdHJpbmcgKi8KIAotLSAKMS45LjMKCgoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==