From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v5 09/16] x86: add multiboot2 protocol support Date: Sat, 20 Aug 2016 00:43:19 +0200 Message-ID: <1471646606-28519-10-git-send-email-daniel.kiper@oracle.com> References: <1471646606-28519-1-git-send-email-daniel.kiper@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1basXC-0002nl-AQ for xen-devel@lists.xenproject.org; Fri, 19 Aug 2016 22:45:06 +0000 In-Reply-To: <1471646606-28519-1-git-send-email-daniel.kiper@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: jgross@suse.com, sstabellini@kernel.org, andrew.cooper3@citrix.com, cardoe@cardoe.com, pgnet.dev@gmail.com, ning.sun@intel.com, david.vrabel@citrix.com, jbeulich@suse.com, qiaowei.ren@intel.com, gang.wei@intel.com, fu.wei@linaro.org List-Id: xen-devel@lists.xenproject.org QWRkIG11bHRpYm9vdDIgcHJvdG9jb2wgc3VwcG9ydC4gQWx0ZXIgbWluIG1lbW9yeSBsaW1pdCBo YW5kbGluZyBhcyB3ZQpub3cgbWF5IG5vdCBmaW5kIGl0IGZyb20gZWl0aGVyIG11bHRpYm9vdCAo djEpIG9yIG11bHRpYm9vdDIuCgpUaGlzIHdheSB3ZSBhcmUgbGF5aW5nIHRoZSBmb3VuZGF0aW9u IGZvciBFRkkgKyBHUlVCMiArIFhlbiBkZXZlbG9wbWVudC4KClNpZ25lZC1vZmYtYnk6IERhbmll bCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+Ci0tLQp2NSAtIHN1Z2dlc3Rpb25zL2Zp eGVzOgogICAtIGNoZWNrIG11bHRpYm9vdDJfdGFnX21tYXBfdC5lbnRyeV9zaXplIGJlZm9yZQog ICAgIG11bHRpYm9vdDJfdGFnX21tYXBfdC5lbnRyaWVzW10gdXNlCiAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCksCiAgIC0gcHJvcGVybHkgaW5kZXggbXVsdGlib290Ml90YWdfbW1hcF90 LmVudHJpZXNbXQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHVzZSAidHlw ZSBuYW1lW10iIGluc3RhZCBvZiAidHlwZSBuYW1lWzBdIgogICAgIGluIHhlbi9pbmNsdWRlL3hl bi9tdWx0aWJvb3QyLmgKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSByZW1v dmUgdW5uZWVkZWQgY29tbWVudAogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLgoKdjQg LSBzdWdnZXN0aW9ucy9maXhlczoKICAgLSBhdm9pZCBhc3NlbWJseSB1c2FnZSBpbiB4ZW4vYXJj aC94ODYvYm9vdC9yZWxvYy5jLAogICAtIGZpeCBib3VuZGFyeSBjaGVjayBpc3N1ZSBhbmQgb3B0 aW1pemUKICAgICBmb3IoKSBsb29wcyBpbiBtYmkyX21iaSgpLAogICAtIG1vdmUgdG8gc3RkY2Fs bCBjYWxsaW5nIGNvbnZlbnRpb24sCiAgIC0gcmVtb3ZlIHVubmVlZGVkIHR5cGVvZigpIGZyb20g QUxJR05fVVAoKSBtYWNybwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGFk ZCBhbmQgdXNlIE5VTEwgZGVmaW5pdGlvbiBpbiB4ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jCiAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZG8gbm90IHJlYWQgZGF0YSBiZXlv bmQgdGhlIGVuZCBvZiBtdWx0aWJvb3QyCiAgICAgaW5mb3JtYXRpb24gaW4geGVuL2FyY2gveDg2 L2Jvb3QvaGVhZC5TCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gYWRkIDpy ZXEgdG8gc29tZSAubWFjcm8gYXJndW1lbnRzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCksCiAgIC0gdXNlIGNtb3ZjYyBpZiBwb3NzaWJsZSwKICAgLSBhZGQgLkwgdG8gbXVsdGlib290 Ml9oZWFkZXJfZW5kIGxhYmVsCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0g YWRkIC5MIHRvIG11bHRpYm9vdDJfcHJvdG8gbGFiZWwKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKSwKICAgLSBpbXByb3ZlIGxhYmVsIG5hbWVzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCkuCgp2MyAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIHJlb3JkZXIgcmVsb2MoKSBh cmd1bWVudHMKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSByZW1vdmUgLkwg ZnJvbSBtdWx0aWJvb3QyIGhlYWRlciBsYWJlbHMKICAgICAoc3VnZ2VzdGVkIGJ5IEFuZHJldyBD b29wZXIsIEphbiBCZXVsaWNoIGFuZCBLb25yYWQgUnplc3p1dGVrIFdpbGspLAogICAtIHRha2Ug aW50byBhY2NvdW50IGFsaWdubWVudCB3aGVuIHNraXBwaW5nIG11bHRpYm9vdDIgZml4ZWQgcGFy dAogICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKSwKICAgLSBjcmVhdGUg bW9kdWxlcyBkYXRhIGlmIG1vZHVsZXMgY291bnQgIT0gMAogICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpLAogICAtIGltcHJvdmUgbWFjcm9zCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCksCiAgIC0gcmVkdWNlIG51bWJlciBvZiBjYXN0cwogICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpLAogICAtIHVzZSBjb25zdCBpZiBwb3NzaWJsZQogICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpLAogICAtIGRyb3Agc3RhdGljIGFuZCBfX3VzZWRfXyBhdHRyaWJ1dGUgZnJv bSByZWxvYygpCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcmVtb3ZlIGlz b2xhdGVkL3N0cmF5IF9fcGFja2VkIGF0dHJpYnV0ZSBmcm9tCiAgICAgbXVsdGlib290Ml9tZW1v cnlfbWFwX3QgdHlwZSBkZWZpbml0aW9uCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCks CiAgIC0gcmVmb3JtYXQgeGVuL2luY2x1ZGUveGVuL211bHRpYm9vdDIuaAogICAgIChzdWdnZXN0 ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKSwKICAgLSBpbXByb3ZlIGNvbW1lbnRzCiAgICAg KHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspLAogICAtIHJlbW92ZSBoYXJkIHRh YnMKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoIGFuZCBLb25yYWQgUnplc3p1dGVrIFdp bGspLgoKdjIgLSBzdWdnZXN0aW9ucy9maXhlczoKICAgLSBnZW5lcmF0ZSBtdWx0aWJvb3QyIGhl YWRlciB1c2luZyBtYWNyb3MKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBp bXByb3ZlIGNvbW1lbnRzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gc2lt cGxpZnkgYXNzZW1ibHkgaW4geGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TCiAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZG8gbm90IGluY2x1ZGUgaW5jbHVkZS94ZW4vY29tcGls ZXIuaAogICAgIGluIHhlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMKICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKSwKICAgLSBkbyBub3QgcmVhZCBkYXRhIGJleW9uZCB0aGUgZW5kIG9mIG11 bHRpYm9vdDIgaW5mb3JtYXRpb24KICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKS4KCnYy IC0gbm90IGZpeGVkIHlldDoKICAgLSBkeW5hbWljIGRlcGVuZGVuY3kgZ2VuZXJhdGlvbiBmb3Ig eGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuUzsKICAgICB0aGlzIHJlcXVpcmVzIG1vcmUgd29yazsg SSBhbSBub3Qgc3VyZSB0aGF0IGl0IHBheXMgYmVjYXVzZQogICAgIHBvdGVudGlhbCBwYXRjaCBy ZXF1aXJlcyBtb3JlIGNoYW5nZXMgdGhhbiBhZGRpdGlvbiBvZiBqdXN0CiAgICAgbXVsdGlib290 Mi5oIHRvIE1ha2VmaWxlCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gaXNv bGF0ZWQvc3RyYXkgX19wYWNrZWQgYXR0cmlidXRlIHVzYWdlIGZvciBtdWx0aWJvb3QyX21lbW9y eV9tYXBfdAogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLgotLS0KIHhlbi9hcmNoL3g4 Ni9ib290L01ha2VmaWxlICAgICAgICB8ICAgIDMgKy0KIHhlbi9hcmNoL3g4Ni9ib290L2hlYWQu UyAgICAgICAgICB8ICAxMDcgKysrKysrKysrKysrKysrKysrKysrKy0KIHhlbi9hcmNoL3g4Ni9i b290L3JlbG9jLmMgICAgICAgICB8ICAxNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LQogeGVuL2FyY2gveDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5jIHwgICAgOSArKwogeGVuL2luY2x1 ZGUveGVuL211bHRpYm9vdDIuaCAgICAgIHwgIDE2OSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDQyMiBpbnNlcnRpb25zKCspLCAxMCBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS94ZW4vbXVsdGlib290Mi5o CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvTWFrZWZpbGUgYi94ZW4vYXJjaC94ODYv Ym9vdC9NYWtlZmlsZQppbmRleCA1ZmRiNWFlLi4wNjg5M2Q4IDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvYm9vdC9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvYm9vdC9NYWtlZmlsZQpAQCAt MSw2ICsxLDcgQEAKIG9iai1iaW4teSArPSBoZWFkLm8KIAotUkVMT0NfREVQUyA9ICQoQkFTRURJ UikvaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oICQoQkFTRURJUikvaW5jbHVkZS94ZW4vbXVsdGli b290LmgKK1JFTE9DX0RFUFMgPSAkKEJBU0VESVIpL2luY2x1ZGUvYXNtLXg4Ni9jb25maWcuaCAk KEJBU0VESVIpL2luY2x1ZGUveGVuL211bHRpYm9vdC5oIFwKKwkgICAgICQoQkFTRURJUikvaW5j bHVkZS94ZW4vbXVsdGlib290Mi5oCiAKIGhlYWQubzogcmVsb2MuUwogCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMgYi94ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMKaW5kZXgg ZmZhZmNiNS4uNWU2MTg1NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TCisr KyBiL3hlbi9hcmNoL3g4Ni9ib290L2hlYWQuUwpAQCAtMSw1ICsxLDYgQEAKICNpbmNsdWRlIDx4 ZW4vY29uZmlnLmg+CiAjaW5jbHVkZSA8eGVuL211bHRpYm9vdC5oPgorI2luY2x1ZGUgPHhlbi9t dWx0aWJvb3QyLmg+CiAjaW5jbHVkZSA8cHVibGljL3hlbi5oPgogI2luY2x1ZGUgPGFzbS9hc21f ZGVmbnMuaD4KICNpbmNsdWRlIDxhc20vZGVzYy5oPgpAQCAtMTksNiArMjAsMjggQEAKICNkZWZp bmUgQk9PVF9QU0VVRE9STV9DUyAweDAwMjAKICNkZWZpbmUgQk9PVF9QU0VVRE9STV9EUyAweDAw MjgKIAorI2RlZmluZSBNQjJfSFQobmFtZSkgICAgICAoTVVMVElCT09UMl9IRUFERVJfVEFHXyMj bmFtZSkKKyNkZWZpbmUgTUIyX1RUKG5hbWUpICAgICAgKE1VTFRJQk9PVDJfVEFHX1RZUEVfIyNu YW1lKQorCisgICAgICAgIC5tYWNybyBtYjJodF9hcmdzIGFyZzpyZXEsIGFyZ3M6dmFyYXJnCisg ICAgICAgIC5sb25nIFxhcmcKKyAgICAgICAgLmlmbmIgXGFyZ3MKKyAgICAgICAgbWIyaHRfYXJn cyBcYXJncworICAgICAgICAuZW5kaWYKKyAgICAgICAgLmVuZG0KKworICAgICAgICAubWFjcm8g bWIyaHRfaW5pdCB0eXBlOnJlcSwgcmVxOnJlcSwgYXJnczp2YXJhcmcKKyAgICAgICAgLmFsaWdu IE1VTFRJQk9PVDJfVEFHX0FMSUdOCisuTG1iMmh0X2luaXRfc3RhcnRcQDoKKyAgICAgICAgLnNo b3J0IFx0eXBlCisgICAgICAgIC5zaG9ydCBccmVxCisgICAgICAgIC5sb25nIC5MbWIyaHRfaW5p dF9lbmRcQCAtIC5MbWIyaHRfaW5pdF9zdGFydFxACisgICAgICAgIC5pZm5iIFxhcmdzCisgICAg ICAgIG1iMmh0X2FyZ3MgXGFyZ3MKKyAgICAgICAgLmVuZGlmCisuTG1iMmh0X2luaXRfZW5kXEA6 CisgICAgICAgIC5lbmRtCisKIEVOVFJZKHN0YXJ0KQogICAgICAgICBqbXAgICAgIF9fc3RhcnQK IApAQCAtMzQsNiArNTcsNDIgQEAgbXVsdGlib290MV9oZWFkZXJfc3RhcnQ6ICAgICAgIC8qKiog TVVMVElCT09UMSBIRUFERVIgKioqKi8KICAgICAgICAgLmxvbmcgICAtKE1VTFRJQk9PVF9IRUFE RVJfTUFHSUMgKyBNVUxUSUJPT1RfSEVBREVSX0ZMQUdTKQogLkxtdWx0aWJvb3QxX2hlYWRlcl9l bmQ6CiAKKy8qKiogTVVMVElCT09UMiBIRUFERVIgKioqKi8KKy8qIFNvbWUgaWRlYXMgYXJlIHRh a2VuIGZyb20gZ3J1Yi0yLjAwL2dydWItY29yZS90ZXN0cy9ib290L2tlcm5lbC1pMzg2LlMgZmls ZS4gKi8KKyAgICAgICAgLmFsaWduICBNVUxUSUJPT1QyX0hFQURFUl9BTElHTgorCittdWx0aWJv b3QyX2hlYWRlcl9zdGFydDoKKyAgICAgICAgLyogTWFnaWMgbnVtYmVyIGluZGljYXRpbmcgYSBN dWx0aWJvb3QyIGhlYWRlci4gKi8KKyAgICAgICAgLmxvbmcgICBNVUxUSUJPT1QyX0hFQURFUl9N QUdJQworICAgICAgICAvKiBBcmNoaXRlY3R1cmU6IGkzODYuICovCisgICAgICAgIC5sb25nICAg TVVMVElCT09UMl9BUkNISVRFQ1RVUkVfSTM4NgorICAgICAgICAvKiBNdWx0aWJvb3QyIGhlYWRl ciBsZW5ndGguICovCisgICAgICAgIC5sb25nICAgLkxtdWx0aWJvb3QyX2hlYWRlcl9lbmQgLSBt dWx0aWJvb3QyX2hlYWRlcl9zdGFydAorICAgICAgICAvKiBNdWx0aWJvb3QyIGhlYWRlciBjaGVj a3N1bS4gKi8KKyAgICAgICAgLmxvbmcgICAtKE1VTFRJQk9PVDJfSEVBREVSX01BR0lDICsgTVVM VElCT09UMl9BUkNISVRFQ1RVUkVfSTM4NiArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICgu TG11bHRpYm9vdDJfaGVhZGVyX2VuZCAtIG11bHRpYm9vdDJfaGVhZGVyX3N0YXJ0KSkKKworICAg ICAgICAvKiBNdWx0aWJvb3QyIGluZm9ybWF0aW9uIHJlcXVlc3QgdGFnLiAqLworICAgICAgICBt YjJodF9pbml0IE1CMl9IVChJTkZPUk1BVElPTl9SRVFVRVNUKSwgTUIyX0hUKFJFUVVJUkVEKSwg XAorICAgICAgICAgICAgICAgICAgIE1CMl9UVChCQVNJQ19NRU1JTkZPKSwgTUIyX1RUKE1NQVAp CisKKyAgICAgICAgLyogQWxpZ24gbW9kdWxlcyBhdCBwYWdlIGJvdW5kcnkuICovCisgICAgICAg IG1iMmh0X2luaXQgTUIyX0hUKE1PRFVMRV9BTElHTiksIE1CMl9IVChSRVFVSVJFRCkKKworICAg ICAgICAvKiBDb25zb2xlIGZsYWdzIHRhZy4gKi8KKyAgICAgICAgbWIyaHRfaW5pdCBNQjJfSFQo Q09OU09MRV9GTEFHUyksIE1CMl9IVChPUFRJT05BTCksIFwKKyAgICAgICAgICAgICAgICAgICBN VUxUSUJPT1QyX0NPTlNPTEVfRkxBR1NfRUdBX1RFWFRfU1VQUE9SVEVECisKKyAgICAgICAgLyog RnJhbWVidWZmZXIgdGFnLiAqLworICAgICAgICBtYjJodF9pbml0IE1CMl9IVChGUkFNRUJVRkZF UiksIE1CMl9IVChPUFRJT05BTCksIFwKKyAgICAgICAgICAgICAgICAgICAwLCAvKiBOdW1iZXIg b2YgdGhlIGNvbHVtbnMgLSBubyBwcmVmZXJlbmNlLiAqLyBcCisgICAgICAgICAgICAgICAgICAg MCwgLyogTnVtYmVyIG9mIHRoZSBsaW5lcyAtIG5vIHByZWZlcmVuY2UuICovIFwKKyAgICAgICAg ICAgICAgICAgICAwICAvKiBOdW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwgLSBubyBwcmVmZXJlbmNl LiAqLworCisgICAgICAgIC8qIE11bHRpYm9vdDIgaGVhZGVyIGVuZCB0YWcuICovCisgICAgICAg IG1iMmh0X2luaXQgTUIyX0hUKEVORCksIE1CMl9IVChSRVFVSVJFRCkKKy5MbXVsdGlib290Ml9o ZWFkZXJfZW5kOgorCiAgICAgICAgIC5zZWN0aW9uIC5pbml0LnJvZGF0YSwgImEiLCBAcHJvZ2Jp dHMKICAgICAgICAgLmFsaWduIDQKIApAQCAtODIsMTAgKzE0MSw1MiBAQCBfX3N0YXJ0OgogICAg ICAgICBtb3YgICAgICVlY3gsJWVzCiAgICAgICAgIG1vdiAgICAgJWVjeCwlc3MKIAotICAgICAg ICAvKiBDaGVjayBmb3IgTXVsdGlib290IGJvb3Rsb2FkZXIgKi8KKyAgICAgICAgLyogQm9vdGxv YWRlcnMgbWF5IHNldCBtdWx0aWJvb3R7MSwyfS5tZW1fbG93ZXIgdG8gYSBub256ZXJvIHZhbHVl LiAqLworICAgICAgICB4b3IgICAgICVlZHgsJWVkeAorCisgICAgICAgIC8qIENoZWNrIGZvciBN dWx0aWJvb3QyIGJvb3Rsb2FkZXIuICovCisgICAgICAgIGNtcCAgICAgJE1VTFRJQk9PVDJfQk9P VExPQURFUl9NQUdJQywlZWF4CisgICAgICAgIGplICAgICAgLkxtdWx0aWJvb3QyX3Byb3RvCisK KyAgICAgICAgLyogQ2hlY2sgZm9yIE11bHRpYm9vdCBib290bG9hZGVyLiAqLwogICAgICAgICBj bXAgICAgICRNVUxUSUJPT1RfQk9PVExPQURFUl9NQUdJQywlZWF4CiAgICAgICAgIGpuZSAgICAg bm90X211bHRpYm9vdAogCisgICAgICAgIC8qIEdldCBtZW1fbG93ZXIgZnJvbSBNdWx0aWJvb3Qg aW5mb3JtYXRpb24uICovCisgICAgICAgIHRlc3RiICAgJE1CSV9NRU1MSU1JVFMsTUJfZmxhZ3Mo JWVieCkKKworICAgICAgICAvKiBOb3QgYXZhaWxhYmxlPyBCREEgdmFsdWUgd2lsbCBiZSBmaW5l LiAqLworICAgICAgICBjbW92bnogIE1CX21lbV9sb3dlciglZWJ4KSwlZWR4CisgICAgICAgIGpt cCAgICAgdHJhbXBvbGluZV9zZXR1cAorCisuTG11bHRpYm9vdDJfcHJvdG86CisgICAgICAgIC8q IFNraXAgTXVsdGlib290MiBpbmZvcm1hdGlvbiBmaXhlZCBwYXJ0LiAqLworICAgICAgICBsZWEg ICAgIChNQjJfZml4ZWRfc2l6ZW9mK01VTFRJQk9PVDJfVEFHX0FMSUdOLTEpKCVlYngpLCVlY3gK KyAgICAgICAgYW5kICAgICAkfihNVUxUSUJPT1QyX1RBR19BTElHTi0xKSwlZWN4CisKKzA6Cisg ICAgICAgIC8qIENoZWNrIE11bHRpYm9vdDIgaW5mb3JtYXRpb24gdG90YWwgc2l6ZS4gKi8KKyAg ICAgICAgbW92ICAgICAlZWN4LCVlZGkKKyAgICAgICAgc3ViICAgICAlZWJ4LCVlZGkKKyAgICAg ICAgY21wICAgICAlZWRpLE1CMl9maXhlZF90b3RhbF9zaXplKCVlYngpCisgICAgICAgIGpiZSAg ICAgdHJhbXBvbGluZV9zZXR1cAorCisgICAgICAgIC8qIEdldCBtZW1fbG93ZXIgZnJvbSBNdWx0 aWJvb3QyIGluZm9ybWF0aW9uLiAqLworICAgICAgICBjbXBsICAgICRNVUxUSUJPT1QyX1RBR19U WVBFX0JBU0lDX01FTUlORk8sTUIyX3RhZ190eXBlKCVlY3gpCisgICAgICAgIGNtb3ZlICAgTUIy X21lbV9sb3dlciglZWN4KSwlZWR4CisgICAgICAgIGplICAgICAgdHJhbXBvbGluZV9zZXR1cAor CisgICAgICAgIC8qIElzIGl0IHRoZSBlbmQgb2YgTXVsdGlib290MiBpbmZvcm1hdGlvbj8gKi8K KyAgICAgICAgY21wbCAgICAkTVVMVElCT09UMl9UQUdfVFlQRV9FTkQsTUIyX3RhZ190eXBlKCVl Y3gpCisgICAgICAgIGplICAgICAgdHJhbXBvbGluZV9zZXR1cAorCisgICAgICAgIC8qIEdvIHRv IG5leHQgTXVsdGlib290MiBpbmZvcm1hdGlvbiB0YWcuICovCisgICAgICAgIGFkZCAgICAgTUIy X3RhZ19zaXplKCVlY3gpLCVlY3gKKyAgICAgICAgYWRkICAgICAkKE1VTFRJQk9PVDJfVEFHX0FM SUdOLTEpLCVlY3gKKyAgICAgICAgYW5kICAgICAkfihNVUxUSUJPT1QyX1RBR19BTElHTi0xKSwl ZWN4CisgICAgICAgIGptcCAgICAgMGIKKwordHJhbXBvbGluZV9zZXR1cDoKICAgICAgICAgLyog U2V0IHVwIHRyYW1wb2xpbmUgc2VnbWVudCA2NGsgYmVsb3cgRUJEQSAqLwogICAgICAgICBtb3Z6 d2wgIDB4NDBlLCVlY3ggICAgICAgICAgLyogRUJEQSBzZWdtZW50ICovCiAgICAgICAgIGNtcCAg ICAgJDB4YTAwMCwlZWN4ICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKGhpZ2gpICovCkBAIC0xMDAs OSArMjAxLDYgQEAgX19zdGFydDoKICAgICAgICAgICogQ29tcGFyZSB0aGUgdmFsdWUgaW4gdGhl IEJEQSB3aXRoIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoZQogICAgICAgICAgKiBtdWx0aWJvb3Qg c3RydWN0dXJlIChpZiBhdmFpbGFibGUpIGFuZCB1c2UgdGhlIHNtYWxsZXN0LgogICAgICAgICAg Ki8KLSAgICAgICAgdGVzdGIgICAkTUJJX01FTUxJTUlUUywoJWVieCkKLSAgICAgICAganogICAg ICAyZiAgICAgICAgICAgICAgICAgIC8qIG5vdCBhdmFpbGFibGU/IEJEQSB2YWx1ZSB3aWxsIGJl IGZpbmUgKi8KLSAgICAgICAgbW92ICAgICBNQl9tZW1fbG93ZXIoJWVieCksJWVkeAogICAgICAg ICBjbXAgICAgICQweDEwMCwlZWR4ICAgICAgICAgLyogaXMgdGhlIG11bHRpYm9vdCB2YWx1ZSB0 b28gc21hbGw/ICovCiAgICAgICAgIGpiICAgICAgMmYgICAgICAgICAgICAgICAgICAvKiBpZiBz bywgZG8gbm90IHVzZSBpdCAqLwogICAgICAgICBzaGwgICAgICQxMC00LCVlZHgKQEAgLTEyMSw2 ICsyMTksNyBAQCBfX3N0YXJ0OgogICAgICAgICBtb3YgICAgICRzeW1fcGh5cyhjcHUwX3N0YWNr KSsxMDI0LCVlc3AKICAgICAgICAgcHVzaCAgICAlZWN4ICAgICAgICAgICAgICAgIC8qIEJvb3Qg dHJhbXBvbGluZSBhZGRyZXNzLiAqLwogICAgICAgICBwdXNoICAgICVlYnggICAgICAgICAgICAg ICAgLyogTXVsdGlib290IGluZm9ybWF0aW9uIGFkZHJlc3MuICovCisgICAgICAgIHB1c2ggICAg JWVheCAgICAgICAgICAgICAgICAvKiBNdWx0aWJvb3QgbWFnaWMuICovCiAgICAgICAgIGNhbGwg ICAgcmVsb2MKICAgICAgICAgbW92ICAgICAlZWF4LHN5bV9waHlzKG11bHRpYm9vdF9wdHIpCiAK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMgYi94ZW4vYXJjaC94ODYvYm9v dC9yZWxvYy5jCmluZGV4IGRjNmE0MzUuLjc1NTMwOTcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9ib290L3JlbG9jLmMKKysrIGIveGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYwpAQCAtNSwxNSAr NSwxOCBAQAogICogYW5kIG1vZHVsZXMuIFRoaXMgaXMgbW9zdCBlYXNpbHkgZG9uZSBlYXJseSB3 aXRoIHBhZ2luZyBkaXNhYmxlZC4KICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDksIENpdHJpeCBT eXN0ZW1zLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNiBPcmFjbGUgYW5kL29yIGl0 cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIEF1dGhvcnM6CiAgKiAg ICBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgorICogICAgRGFuaWVsIEtpcGVyIDxkYW5pZWwu a2lwZXJAb3JhY2xlLmNvbT4KICAqLwogCiAvKgogICogVGhpcyBlbnRyeSBwb2ludCBpcyBlbnRl cmVkIGZyb20geGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TIHdpdGg6Ci0gKiAgIC0gMHg0KCVlc3Ap ID0gTVVMVElCT09UX0lORk9STUFUSU9OX0FERFJFU1MsCi0gKiAgIC0gMHg4KCVlc3ApID0gQk9P VF9UUkFNUE9MSU5FX0FERFJFU1MuCisgKiAgIC0gMHg0KCVlc3ApID0gTVVMVElCT09UX01BR0lD LAorICogICAtIDB4OCglZXNwKSA9IE1VTFRJQk9PVF9JTkZPUk1BVElPTl9BRERSRVNTLAorICog ICAtIDB4YyglZXNwKSA9IEJPT1RfVFJBTVBPTElORV9BRERSRVNTLgogICovCiBhc20gKAogICAg ICIgICAgLnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCkBAIC0yMywxMyArMjYsMjEg QEAgYXNtICgKICAgICApOwogCiB0eXBlZGVmIHVuc2lnbmVkIGludCB1MzI7Cit0eXBlZGVmIHVu c2lnbmVkIGxvbmcgbG9uZyB1NjQ7CisKICNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL3hlbi9t dWx0aWJvb3QuaCIKKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgi CisKKyNkZWZpbmUgTlVMTAkJKCh2b2lkICopMCkKIAogI2RlZmluZSBfX3N0ZGNhbGwJX19hdHRy aWJ1dGVfXygoX19zdGRjYWxsX18pKQogCiAjZGVmaW5lIEFMSUdOX1VQKGFyZywgYWxpZ24pIFwK ICAgICAgICAgICAgICAgICAoKChhcmcpICsgKGFsaWduKSAtIDEpICYgfigodHlwZW9mKGFyZykp KGFsaWduKSAtIDEpKQogCisjZGVmaW5lIGdldF9tYjJfZGF0YSh0YWcsIHR5cGUsIG1lbWJlcikg ICAoKChtdWx0aWJvb3QyX3RhZ18jI3R5cGUjI190ICopKHRhZykpLT5tZW1iZXIpCisjZGVmaW5l IGdldF9tYjJfc3RyaW5nKHRhZywgdHlwZSwgbWVtYmVyKSAoKHUzMilnZXRfbWIyX2RhdGEodGFn LCB0eXBlLCBtZW1iZXIpKQorCiBzdGF0aWMgdTMyIGFsbG9jOwogCiBzdGF0aWMgdTMyIGFsbG9j X21lbSh1MzIgYnl0ZXMpCkBAIC0zNyw2ICs0OCwxMiBAQCBzdGF0aWMgdTMyIGFsbG9jX21lbSh1 MzIgYnl0ZXMpCiAgICAgcmV0dXJuIGFsbG9jIC09IEFMSUdOX1VQKGJ5dGVzLCAxNik7CiB9CiAK K3N0YXRpYyB2b2lkIHplcm9fbWVtKHUzMiBzLCB1MzIgYnl0ZXMpCit7CisgICAgd2hpbGUgKCBi eXRlcy0tICkKKyAgICAgICAgKihjaGFyICopcysrID0gMDsKK30KKwogc3RhdGljIHUzMiBjb3B5 X21lbSh1MzIgc3JjLCB1MzIgYnl0ZXMpCiB7CiAgICAgdTMyIGRzdCwgZHN0X3JldDsKQEAgLTYz LDEzICs4MCwxMSBAQCBzdGF0aWMgdTMyIGNvcHlfc3RyaW5nKHUzMiBzcmMpCiAgICAgcmV0dXJu IGNvcHlfbWVtKHNyYywgcCAtIHNyYyArIDEpOwogfQogCi1tdWx0aWJvb3RfaW5mb190IF9fc3Rk Y2FsbCAqcmVsb2ModTMyIG1iaV9pbiwgdTMyIHRyYW1wb2xpbmUpCitzdGF0aWMgbXVsdGlib290 X2luZm9fdCAqbWJpX21iaSh1MzIgbWJpX2luKQogewogICAgIGludCBpOwogICAgIG11bHRpYm9v dF9pbmZvX3QgKm1iaV9vdXQ7CiAKLSAgICBhbGxvYyA9IHRyYW1wb2xpbmU7Ci0KICAgICBtYmlf b3V0ID0gKG11bHRpYm9vdF9pbmZvX3QgKiljb3B5X21lbShtYmlfaW4sIHNpemVvZigqbWJpX291 dCkpOwogCiAgICAgaWYgKCBtYmlfb3V0LT5mbGFncyAmIE1CSV9DTURMSU5FICkKQEAgLTEwNiwz ICsxMjEsMTIyIEBAIG11bHRpYm9vdF9pbmZvX3QgX19zdGRjYWxsICpyZWxvYyh1MzIgbWJpX2lu LCB1MzIgdHJhbXBvbGluZSkKIAogICAgIHJldHVybiBtYmlfb3V0OwogfQorCitzdGF0aWMgbXVs dGlib290X2luZm9fdCAqbWJpMl9tYmkodTMyIG1iaV9pbikKK3sKKyAgICBjb25zdCBtdWx0aWJv b3QyX21lbW9yeV9tYXBfdCAqbW1hcF9zcmM7CisgICAgY29uc3QgbXVsdGlib290Ml90YWdfdCAq dGFnOworICAgIG1vZHVsZV90ICptYmlfb3V0X21vZHMgPSBOVUxMOworICAgIG1lbW9yeV9tYXBf dCAqbW1hcF9kc3Q7CisgICAgbXVsdGlib290X2luZm9fdCAqbWJpX291dDsKKyAgICB1MzIgcHRy OworICAgIHVuc2lnbmVkIGludCBpLCBtb2RfaWR4ID0gMDsKKworICAgIHB0ciA9IGFsbG9jX21l bShzaXplb2YoKm1iaV9vdXQpKTsKKyAgICBtYmlfb3V0ID0gKG11bHRpYm9vdF9pbmZvX3QgKilw dHI7CisgICAgemVyb19tZW0ocHRyLCBzaXplb2YoKm1iaV9vdXQpKTsKKworICAgIC8qIFNraXAg TXVsdGlib290MiBpbmZvcm1hdGlvbiBmaXhlZCBwYXJ0LiAqLworICAgIHB0ciA9IEFMSUdOX1VQ KG1iaV9pbiArIHNpemVvZihtdWx0aWJvb3QyX2ZpeGVkX3QpLCBNVUxUSUJPT1QyX1RBR19BTElH Tik7CisKKyAgICAvKiBHZXQgdGhlIG51bWJlciBvZiBtb2R1bGVzLiAqLworICAgIGZvciAoIHRh ZyA9IChtdWx0aWJvb3QyX3RhZ190ICopcHRyOworICAgICAgICAgICh1MzIpdGFnIC0gbWJpX2lu IDwgKChtdWx0aWJvb3QyX2ZpeGVkX3QgKiltYmlfaW4pLT50b3RhbF9zaXplOworICAgICAgICAg IHRhZyA9IChtdWx0aWJvb3QyX3RhZ190ICopQUxJR05fVVAoKHUzMil0YWcgKyB0YWctPnNpemUs IE1VTFRJQk9PVDJfVEFHX0FMSUdOKSApCisgICAgICAgIGlmICggdGFnLT50eXBlID09IE1VTFRJ Qk9PVDJfVEFHX1RZUEVfTU9EVUxFICkKKyAgICAgICAgICAgICsrbWJpX291dC0+bW9kc19jb3Vu dDsKKyAgICAgICAgZWxzZSBpZiAoIHRhZy0+dHlwZSA9PSBNVUxUSUJPT1QyX1RBR19UWVBFX0VO RCApCisgICAgICAgICAgICBicmVhazsKKworICAgIGlmICggbWJpX291dC0+bW9kc19jb3VudCAp CisgICAgeworICAgICAgICBtYmlfb3V0LT5mbGFncyA9IE1CSV9NT0RVTEVTOworICAgICAgICBt Ymlfb3V0LT5tb2RzX2FkZHIgPSBhbGxvY19tZW0obWJpX291dC0+bW9kc19jb3VudCAqIHNpemVv Zihtb2R1bGVfdCkpOworICAgICAgICBtYmlfb3V0X21vZHMgPSAobW9kdWxlX3QgKiltYmlfb3V0 LT5tb2RzX2FkZHI7CisgICAgfQorCisgICAgLyogU2tpcCBNdWx0aWJvb3QyIGluZm9ybWF0aW9u IGZpeGVkIHBhcnQuICovCisgICAgcHRyID0gQUxJR05fVVAobWJpX2luICsgc2l6ZW9mKG11bHRp Ym9vdDJfZml4ZWRfdCksIE1VTFRJQk9PVDJfVEFHX0FMSUdOKTsKKworICAgIC8qIFB1dCBhbGwg bmVlZGVkIGRhdGEgaW50byBtYmlfb3V0LiAqLworICAgIGZvciAoIHRhZyA9IChtdWx0aWJvb3Qy X3RhZ190ICopcHRyOworICAgICAgICAgICh1MzIpdGFnIC0gbWJpX2luIDwgKChtdWx0aWJvb3Qy X2ZpeGVkX3QgKiltYmlfaW4pLT50b3RhbF9zaXplOworICAgICAgICAgIHRhZyA9IChtdWx0aWJv b3QyX3RhZ190ICopQUxJR05fVVAoKHUzMil0YWcgKyB0YWctPnNpemUsIE1VTFRJQk9PVDJfVEFH X0FMSUdOKSApCisgICAgICAgIHN3aXRjaCAoIHRhZy0+dHlwZSApCisgICAgICAgIHsKKyAgICAg ICAgY2FzZSBNVUxUSUJPT1QyX1RBR19UWVBFX0JPT1RfTE9BREVSX05BTUU6CisgICAgICAgICAg ICBtYmlfb3V0LT5mbGFncyB8PSBNQklfTE9BREVSTkFNRTsKKyAgICAgICAgICAgIHB0ciA9IGdl dF9tYjJfc3RyaW5nKHRhZywgc3RyaW5nLCBzdHJpbmcpOworICAgICAgICAgICAgbWJpX291dC0+ Ym9vdF9sb2FkZXJfbmFtZSA9IGNvcHlfc3RyaW5nKHB0cik7CisgICAgICAgICAgICBicmVhazsK KworICAgICAgICBjYXNlIE1VTFRJQk9PVDJfVEFHX1RZUEVfQ01ETElORToKKyAgICAgICAgICAg IG1iaV9vdXQtPmZsYWdzIHw9IE1CSV9DTURMSU5FOworICAgICAgICAgICAgcHRyID0gZ2V0X21i Ml9zdHJpbmcodGFnLCBzdHJpbmcsIHN0cmluZyk7CisgICAgICAgICAgICBtYmlfb3V0LT5jbWRs aW5lID0gY29weV9zdHJpbmcocHRyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh c2UgTVVMVElCT09UMl9UQUdfVFlQRV9CQVNJQ19NRU1JTkZPOgorICAgICAgICAgICAgbWJpX291 dC0+ZmxhZ3MgfD0gTUJJX01FTUxJTUlUUzsKKyAgICAgICAgICAgIG1iaV9vdXQtPm1lbV9sb3dl ciA9IGdldF9tYjJfZGF0YSh0YWcsIGJhc2ljX21lbWluZm8sIG1lbV9sb3dlcik7CisgICAgICAg ICAgICBtYmlfb3V0LT5tZW1fdXBwZXIgPSBnZXRfbWIyX2RhdGEodGFnLCBiYXNpY19tZW1pbmZv LCBtZW1fdXBwZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNVUxUSUJP T1QyX1RBR19UWVBFX01NQVA6CisgICAgICAgICAgICBpZiAoIGdldF9tYjJfZGF0YSh0YWcsIG1t YXAsIGVudHJ5X3NpemUpIDwgc2l6ZW9mKCptbWFwX3NyYykgKQorICAgICAgICAgICAgICAgIGJy ZWFrOworCisgICAgICAgICAgICBtYmlfb3V0LT5mbGFncyB8PSBNQklfTUVNTUFQOworICAgICAg ICAgICAgbWJpX291dC0+bW1hcF9sZW5ndGggPSBnZXRfbWIyX2RhdGEodGFnLCBtbWFwLCBzaXpl KTsKKyAgICAgICAgICAgIG1iaV9vdXQtPm1tYXBfbGVuZ3RoIC09IHNpemVvZihtdWx0aWJvb3Qy X3RhZ19tbWFwX3QpOworICAgICAgICAgICAgbWJpX291dC0+bW1hcF9sZW5ndGggLz0gZ2V0X21i Ml9kYXRhKHRhZywgbW1hcCwgZW50cnlfc2l6ZSk7CisgICAgICAgICAgICBtYmlfb3V0LT5tbWFw X2xlbmd0aCAqPSBzaXplb2YobWVtb3J5X21hcF90KTsKKworICAgICAgICAgICAgbWJpX291dC0+ bW1hcF9hZGRyID0gYWxsb2NfbWVtKG1iaV9vdXQtPm1tYXBfbGVuZ3RoKTsKKworICAgICAgICAg ICAgbW1hcF9zcmMgPSBnZXRfbWIyX2RhdGEodGFnLCBtbWFwLCBlbnRyaWVzKTsKKyAgICAgICAg ICAgIG1tYXBfZHN0ID0gKG1lbW9yeV9tYXBfdCAqKW1iaV9vdXQtPm1tYXBfYWRkcjsKKworICAg ICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBtYmlfb3V0LT5tbWFwX2xlbmd0aCAvIHNpemVvZiht ZW1vcnlfbWFwX3QpOyBpKysgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIElu aXQgc2l6ZSBtZW1iZXIgcHJvcGVybHkuICovCisgICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0u c2l6ZSA9IHNpemVvZihtZW1vcnlfbWFwX3QpOworICAgICAgICAgICAgICAgIG1tYXBfZHN0W2ld LnNpemUgLT0gc2l6ZW9mKCgobWVtb3J5X21hcF90KXswfSkuc2l6ZSk7CisgICAgICAgICAgICAg ICAgLyogTm93IGNvcHkgYSBnaXZlbiByZWdpb24gZGF0YS4gKi8KKyAgICAgICAgICAgICAgICBt bWFwX3NyYyA9ICh2b2lkICopbW1hcF9zcmMgKyBpICogZ2V0X21iMl9kYXRhKHRhZywgbW1hcCwg ZW50cnlfc2l6ZSk7CisgICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0uYmFzZV9hZGRyX2xvdyA9 ICh1MzIpbW1hcF9zcmMtPmFkZHI7CisgICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0uYmFzZV9h ZGRyX2hpZ2ggPSAodTMyKShtbWFwX3NyYy0+YWRkciA+PiAzMik7CisgICAgICAgICAgICAgICAg bW1hcF9kc3RbaV0ubGVuZ3RoX2xvdyA9ICh1MzIpbW1hcF9zcmMtPmxlbjsKKyAgICAgICAgICAg ICAgICBtbWFwX2RzdFtpXS5sZW5ndGhfaGlnaCA9ICh1MzIpKG1tYXBfc3JjLT5sZW4gPj4gMzIp OworICAgICAgICAgICAgICAgIG1tYXBfZHN0W2ldLnR5cGUgPSBtbWFwX3NyYy0+dHlwZTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTVVMVElCT09U Ml9UQUdfVFlQRV9NT0RVTEU6CisgICAgICAgICAgICBtYmlfb3V0X21vZHNbbW9kX2lkeF0ubW9k X3N0YXJ0ID0gZ2V0X21iMl9kYXRhKHRhZywgbW9kdWxlLCBtb2Rfc3RhcnQpOworICAgICAgICAg ICAgbWJpX291dF9tb2RzW21vZF9pZHhdLm1vZF9lbmQgPSBnZXRfbWIyX2RhdGEodGFnLCBtb2R1 bGUsIG1vZF9lbmQpOworICAgICAgICAgICAgcHRyID0gZ2V0X21iMl9zdHJpbmcodGFnLCBtb2R1 bGUsIGNtZGxpbmUpOworICAgICAgICAgICAgbWJpX291dF9tb2RzW21vZF9pZHhdLnN0cmluZyA9 IGNvcHlfc3RyaW5nKHB0cik7CisgICAgICAgICAgICBtYmlfb3V0X21vZHNbbW9kX2lkeF0ucmVz ZXJ2ZWQgPSAwOworICAgICAgICAgICAgKyttb2RfaWR4OworICAgICAgICAgICAgYnJlYWs7CisK KyAgICAgICAgY2FzZSBNVUxUSUJPT1QyX1RBR19UWVBFX0VORDoKKyAgICAgICAgICAgIHJldHVy biBtYmlfb3V0OworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgfQorCisgICAgcmV0dXJuIG1iaV9vdXQ7Cit9CisKK211bHRpYm9vdF9pbmZvX3QgX19zdGRj YWxsICpyZWxvYyh1MzIgbWJfbWFnaWMsIHUzMiBtYmlfaW4sIHUzMiB0cmFtcG9saW5lKQorewor ICAgIGFsbG9jID0gdHJhbXBvbGluZTsKKworICAgIGlmICggbWJfbWFnaWMgPT0gTVVMVElCT09U Ml9CT09UTE9BREVSX01BR0lDICkKKyAgICAgICAgcmV0dXJuIG1iaTJfbWJpKG1iaV9pbik7Cisg ICAgZWxzZQorICAgICAgICByZXR1cm4gbWJpX21iaShtYmlfaW4pOworfQpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC9h c20tb2Zmc2V0cy5jCmluZGV4IDA1ZDJiODUuLjBmYzFjNjMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYworKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1v ZmZzZXRzLmMKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlIDxhc20vZml4bWFwLmg+CiAjaW5j bHVkZSA8YXNtL2hhcmRpcnEuaD4KICNpbmNsdWRlIDx4ZW4vbXVsdGlib290Lmg+CisjaW5jbHVk ZSA8eGVuL211bHRpYm9vdDIuaD4KIAogI2RlZmluZSBERUZJTkUoX3N5bSwgX3ZhbCkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGFzbSB2b2xh dGlsZSAoIlxuLmFzY2lpXCI9PT4jZGVmaW5lICIgI19zeW0gIiAlMCAvKiAiICNfdmFsICIgKi88 PT1cIiIgXApAQCAtMTY4LDYgKzE2OSwxNCBAQCB2b2lkIF9fZHVtbXlfXyh2b2lkKQogICAgIE9G RlNFVChNQl9mbGFncywgbXVsdGlib290X2luZm9fdCwgZmxhZ3MpOwogICAgIE9GRlNFVChNQl9j bWRsaW5lLCBtdWx0aWJvb3RfaW5mb190LCBjbWRsaW5lKTsKICAgICBPRkZTRVQoTUJfbWVtX2xv d2VyLCBtdWx0aWJvb3RfaW5mb190LCBtZW1fbG93ZXIpOworICAgIEJMQU5LKCk7CisKKyAgICBE RUZJTkUoTUIyX2ZpeGVkX3NpemVvZiwgc2l6ZW9mKG11bHRpYm9vdDJfZml4ZWRfdCkpOworICAg IE9GRlNFVChNQjJfZml4ZWRfdG90YWxfc2l6ZSwgbXVsdGlib290Ml9maXhlZF90LCB0b3RhbF9z aXplKTsKKyAgICBPRkZTRVQoTUIyX3RhZ190eXBlLCBtdWx0aWJvb3QyX3RhZ190LCB0eXBlKTsK KyAgICBPRkZTRVQoTUIyX3RhZ19zaXplLCBtdWx0aWJvb3QyX3RhZ190LCBzaXplKTsKKyAgICBP RkZTRVQoTUIyX21lbV9sb3dlciwgbXVsdGlib290Ml90YWdfYmFzaWNfbWVtaW5mb190LCBtZW1f bG93ZXIpOworICAgIEJMQU5LKCk7CiAKICAgICBPRkZTRVQoRE9NQUlOX3ZtX2Fzc2lzdCwgc3Ry dWN0IGRvbWFpbiwgdm1fYXNzaXN0KTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9t dWx0aWJvb3QyLmggYi94ZW4vaW5jbHVkZS94ZW4vbXVsdGlib290Mi5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZDU4MDAKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5j bHVkZS94ZW4vbXVsdGlib290Mi5oCkBAIC0wLDAgKzEsMTY5IEBACisvKgorICogIENvcHlyaWdo dCAoQykgMTk5OSwyMDAzLDIwMDcsMjAwOCwyMDA5LDIwMTAgIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorICoKKyAqICBtdWx0aWJvb3QyLmggLSBNdWx0aWJvb3QgMiBoZWFkZXIgZmls ZS4KKyAqCisgKiAgQmFzZWQgb24gZ3J1Yi0yLjAwL2luY2x1ZGUvbXVsdGlib290Mi5oIGZpbGUu CisgKgorICogIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqICBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uIHRoZQorICogIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3 YXJlIGlzCisgKiAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyAqCisgKiAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqICBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiAgVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKKyAqICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgQU5ZCisg KiAgREVWRUxPUEVSIE9SIERJU1RSSUJVVE9SIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSIExJQUJJTElUWSwKKyAqICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SCisgKiAgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT IElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9fTVVMVElCT09UMl9IX18KKyNkZWZp bmUgX19NVUxUSUJPT1QyX0hfXworCisvKiBUaGUgbWFnaWMgZmllbGQgc2hvdWxkIGNvbnRhaW4g dGhpcy4gICovCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX01BR0lDCQkJCTB4ZTg1MjUwZDYK KworLyogVGhpcyBzaG91bGQgYmUgaW4gJWVheCBvbiB4ODYgYXJjaGl0ZWN0dXJlLiAgKi8KKyNk ZWZpbmUgTVVMVElCT09UMl9CT09UTE9BREVSX01BR0lDCQkJMHgzNmQ3NjI4OQorCisvKiBIb3cg bWFueSBieXRlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZSB3ZSBzZWFyY2ggZm9yIHRoZSBo ZWFkZXIuICAqLworI2RlZmluZSBNVUxUSUJPT1QyX1NFQVJDSAkJCQkzMjc2OAorCisvKiBNdWx0 aWJvb3QgMiBoZWFkZXIgYWxpZ25tZW50LiAqLworI2RlZmluZSBNVUxUSUJPT1QyX0hFQURFUl9B TElHTgkJCQk4CisKKy8qIEFsaWdubWVudCBvZiBtdWx0aWJvb3QgMiBtb2R1bGVzLiAgKi8KKyNk ZWZpbmUgTVVMVElCT09UMl9NT0RfQUxJR04JCQkJMHgwMDAwMTAwMAorCisvKiBBbGlnbm1lbnQg b2YgdGhlIG11bHRpYm9vdCAyIGluZm8gc3RydWN0dXJlLiAgKi8KKyNkZWZpbmUgTVVMVElCT09U Ml9JTkZPX0FMSUdOCQkJCTB4MDAwMDAwMDgKKworLyogTXVsdGlib290IDIgYXJjaGl0ZWN0dXJl cy4gKi8KKyNkZWZpbmUgTVVMVElCT09UMl9BUkNISVRFQ1RVUkVfSTM4NgkJCTAKKyNkZWZpbmUg TVVMVElCT09UMl9BUkNISVRFQ1RVUkVfTUlQUzMyCQkJNAorCisvKiBIZWFkZXIgdGFnIHR5cGVz LiAqLworI2RlZmluZSBNVUxUSUJPT1QyX0hFQURFUl9UQUdfRU5ECQkJMAorI2RlZmluZSBNVUxU SUJPT1QyX0hFQURFUl9UQUdfSU5GT1JNQVRJT05fUkVRVUVTVAkxCisjZGVmaW5lIE1VTFRJQk9P VDJfSEVBREVSX1RBR19BRERSRVNTCQkJMgorI2RlZmluZSBNVUxUSUJPT1QyX0hFQURFUl9UQUdf RU5UUllfQUREUkVTUwkJMworI2RlZmluZSBNVUxUSUJPT1QyX0hFQURFUl9UQUdfQ09OU09MRV9G TEFHUwkJNAorI2RlZmluZSBNVUxUSUJPT1QyX0hFQURFUl9UQUdfRlJBTUVCVUZGRVIJCTUKKyNk ZWZpbmUgTVVMVElCT09UMl9IRUFERVJfVEFHX01PRFVMRV9BTElHTgkJNgorI2RlZmluZSBNVUxU SUJPT1QyX0hFQURFUl9UQUdfRUZJX0JTCQkJNworI2RlZmluZSBNVUxUSUJPT1QyX0hFQURFUl9U QUdfRU5UUllfQUREUkVTU19FRkkzMgk4CisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19F TlRSWV9BRERSRVNTX0VGSTY0CTkKKworLyogSGVhZGVyIHRhZyBmbGFncy4gKi8KKyNkZWZpbmUg TVVMVElCT09UMl9IRUFERVJfVEFHX1JFUVVJUkVECQkJMAorI2RlZmluZSBNVUxUSUJPT1QyX0hF QURFUl9UQUdfT1BUSU9OQUwJCQkxCisKKy8qIEhlYWRlciBjb25zb2xlIHRhZyBjb25zb2xlX2Zs YWdzLiAqLworI2RlZmluZSBNVUxUSUJPT1QyX0NPTlNPTEVfRkxBR1NfQ09OU09MRV9SRVFVSVJF RAkxCisjZGVmaW5lIE1VTFRJQk9PVDJfQ09OU09MRV9GTEFHU19FR0FfVEVYVF9TVVBQT1JURUQJ MgorCisvKiBGbGFncyBzZXQgaW4gdGhlICdmbGFncycgbWVtYmVyIG9mIHRoZSBtdWx0aWJvb3Qg aGVhZGVyLiAgKi8KKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9FTkQJCQkJMAorI2RlZmlu ZSBNVUxUSUJPT1QyX1RBR19UWVBFX0NNRExJTkUJCQkxCisjZGVmaW5lIE1VTFRJQk9PVDJfVEFH X1RZUEVfQk9PVF9MT0FERVJfTkFNRQkJMgorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX01P RFVMRQkJCTMKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9CQVNJQ19NRU1JTkZPCQk0Cisj ZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfQk9PVERFVgkJCTUKKyNkZWZpbmUgTVVMVElCT09U Ml9UQUdfVFlQRV9NTUFQCQkJNgorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX1ZCRQkJCQk3 CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRlJBTUVCVUZGRVIJCQk4CisjZGVmaW5lIE1V TFRJQk9PVDJfVEFHX1RZUEVfRUxGX1NFQ1RJT05TCQk5CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFH X1RZUEVfQVBNCQkJCTEwCisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJMzIJCQkxMQor I2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX0VGSTY0CQkJMTIKKyNkZWZpbmUgTVVMVElCT09U Ml9UQUdfVFlQRV9TTUJJT1MJCQkxMworI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX0FDUElf T0xECQkJMTQKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9BQ1BJX05FVwkJCTE1CisjZGVm aW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfTkVUV09SSwkJCTE2CisjZGVmaW5lIE1VTFRJQk9PVDJf VEFHX1RZUEVfRUZJX01NQVAJCQkxNworI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX0VGSV9C UwkJCTE4CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJMzJfSUgJCQkxOQorI2RlZmlu ZSBNVUxUSUJPT1QyX1RBR19UWVBFX0VGSTY0X0lICQkJMjAKKworLyogTXVsdGlib290IDIgdGFn IGFsaWdubWVudC4gKi8KKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfQUxJR04JCQkJOAorCisvKiBN ZW1vcnkgdHlwZXMuICovCisjZGVmaW5lIE1VTFRJQk9PVDJfTUVNT1JZX0FWQUlMQUJMRQkJCTEK KyNkZWZpbmUgTVVMVElCT09UMl9NRU1PUllfUkVTRVJWRUQJCQkyCisjZGVmaW5lIE1VTFRJQk9P VDJfTUVNT1JZX0FDUElfUkVDTEFJTUFCTEUJCTMKKyNkZWZpbmUgTVVMVElCT09UMl9NRU1PUllf TlZTCQkJCTQKKyNkZWZpbmUgTVVMVElCT09UMl9NRU1PUllfQkFEUkFNCQkJNQorCisvKiBGcmFt ZWJ1ZmZlciB0eXBlcy4gKi8KKyNkZWZpbmUgTVVMVElCT09UMl9GUkFNRUJVRkZFUl9UWVBFX0lO REVYRUQJCTAKKyNkZWZpbmUgTVVMVElCT09UMl9GUkFNRUJVRkZFUl9UWVBFX1JHQgkJCTEKKyNk ZWZpbmUgTVVMVElCT09UMl9GUkFNRUJVRkZFUl9UWVBFX0VHQV9URVhUCQkyCisKKyNpZm5kZWYg X19BU1NFTUJMWV9fCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdTMyIHRvdGFsX3NpemU7CisgICAg dTMyIHJlc2VydmVkOworfSBtdWx0aWJvb3QyX2ZpeGVkX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsK KyAgICB1MzIgdHlwZTsKKyAgICB1MzIgc2l6ZTsKK30gbXVsdGlib290Ml90YWdfdDsKKwordHlw ZWRlZiBzdHJ1Y3QgeworICAgIHUzMiB0eXBlOworICAgIHUzMiBzaXplOworICAgIGNoYXIgc3Ry aW5nW107Cit9IG11bHRpYm9vdDJfdGFnX3N0cmluZ190OworCit0eXBlZGVmIHN0cnVjdCB7Cisg ICAgdTMyIHR5cGU7CisgICAgdTMyIHNpemU7CisgICAgdTMyIG1lbV9sb3dlcjsKKyAgICB1MzIg bWVtX3VwcGVyOworfSBtdWx0aWJvb3QyX3RhZ19iYXNpY19tZW1pbmZvX3Q7CisKK3R5cGVkZWYg c3RydWN0IHsKKyAgICB1NjQgYWRkcjsKKyAgICB1NjQgbGVuOworICAgIHUzMiB0eXBlOworICAg IHUzMiB6ZXJvOworfSBtdWx0aWJvb3QyX21lbW9yeV9tYXBfdDsKKwordHlwZWRlZiBzdHJ1Y3Qg eworICAgIHUzMiB0eXBlOworICAgIHUzMiBzaXplOworICAgIHUzMiBlbnRyeV9zaXplOworICAg IHUzMiBlbnRyeV92ZXJzaW9uOworICAgIG11bHRpYm9vdDJfbWVtb3J5X21hcF90IGVudHJpZXNb XTsKK30gbXVsdGlib290Ml90YWdfbW1hcF90OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdTMy IHR5cGU7CisgICAgdTMyIHNpemU7CisgICAgdTY0IHBvaW50ZXI7Cit9IG11bHRpYm9vdDJfdGFn X2VmaTY0X3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1MzIgdHlwZTsKKyAgICB1MzIgc2l6 ZTsKKyAgICB1NjQgcG9pbnRlcjsKK30gbXVsdGlib290Ml90YWdfZWZpNjRfaWhfdDsKKwordHlw ZWRlZiBzdHJ1Y3QgeworICAgIHUzMiB0eXBlOworICAgIHUzMiBzaXplOworICAgIHUzMiBtb2Rf c3RhcnQ7CisgICAgdTMyIG1vZF9lbmQ7CisgICAgY2hhciBjbWRsaW5lW107Cit9IG11bHRpYm9v dDJfdGFnX21vZHVsZV90OworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworCisjZW5kaWYgLyog X19NVUxUSUJPT1QyX0hfXyAqLwotLSAKMS43LjEwLjQKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK