From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v8 01/13] x86: add multiboot2 protocol support Date: Thu, 29 Sep 2016 00:51:20 +0200 Message-ID: <1475103092-27893-2-git-send-email-daniel.kiper@oracle.com> References: <1475103092-27893-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 1bpNhy-0004F9-Eb for xen-devel@lists.xenproject.org; Wed, 28 Sep 2016 22:52:10 +0000 In-Reply-To: <1475103092-27893-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, julien.grall@arm.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+ClJldmlld2VkLWJ5OiBKYW4gQmV1bGlj aCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQp2OCAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIHVz ZSBzaXplb2YoPHZhcj4vPGV4cHI+KSBpbnN0ZWFkIG9mIHNpemVvZig8dHlwZT4pCiAgICAgaWYg aXQgaXMgcG9zc2libGUKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKS4KCnY3IC0gc3Vn Z2VzdGlvbnMvZml4ZXM6CiAgIC0gcmVuYW1lIG1iaV9tYmkvbWJpMl9tYmkgdG8gbWJpX3JlbG9j L21iaTJfcmVsb2MgcmVzcGVjdGl2ZWx5CiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCks CiAgIC0gaW5pdGlhbGl6ZSBtYmlfb3V0LT5mbGFncyB1c2luZyAifD0iIGluc3RlYWQgb2YgIj0i CiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gdXNlIHNpemVvZigqbW1hcF9k c3QpIGluc3RlYWQgb2Ygc2l6ZW9mKG1lbW9yeV9tYXBfdCkKICAgICBpZiBpdCBtYWtlcyBzZW5z ZQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLgoKdjYgLSBzdWdnZXN0aW9ucy9maXhl czoKICAgLSBwcm9wZXJseSBpbmRleCBtdWx0aWJvb3QyX3RhZ19tbWFwX3QuZW50cmllc1tdCiAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZG8gbm90IGluZGV4IG1iaV9vdXRf bW9kc1tdIGJleW9uZCBpdHMgZW5kCiAgICAgKHN1Z2dlc3RlZCBieSBBbmRyZXcgQ29vcGVyKSwK ICAgLSByZWR1Y2UgbnVtYmVyIG9mIGNhc3RzCiAgICAgKHN1Z2dlc3RlZCBieSBBbmRyZXcgQ29v cGVyIGFuZCBKYW4gQmV1bGljaCksCiAgIC0gYWRkIGJyYWNlcyB0byBpbmNyZWFzZSBjb2RlIHJl YWRhYmlsaXR5CiAgICAgKHN1Z2dlc3RlZCBieSBBbmRyZXcgQ29vcGVyKS4KCnY1IC0gc3VnZ2Vz dGlvbnMvZml4ZXM6CiAgIC0gY2hlY2sgbXVsdGlib290Ml90YWdfbW1hcF90LmVudHJ5X3NpemUg YmVmb3JlCiAgICAgbXVsdGlib290Ml90YWdfbW1hcF90LmVudHJpZXNbXSB1c2UKICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBwcm9wZXJseSBpbmRleCBtdWx0aWJvb3QyX3Rh Z19tbWFwX3QuZW50cmllc1tdCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0g dXNlICJ0eXBlIG5hbWVbXSIgaW5zdGFkIG9mICJ0eXBlIG5hbWVbMF0iCiAgICAgaW4geGVuL2lu Y2x1ZGUveGVuL211bHRpYm9vdDIuaAogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAog ICAtIHJlbW92ZSB1bm5lZWRlZCBjb21tZW50CiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkuCgp2NCAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIGF2b2lkIGFzc2VtYmx5IHVzYWdlIGlu IHhlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMsCiAgIC0gZml4IGJvdW5kYXJ5IGNoZWNrIGlzc3Vl IGFuZCBvcHRpbWl6ZQogICAgIGZvcigpIGxvb3BzIGluIG1iaTJfbWJpKCksCiAgIC0gbW92ZSB0 byBzdGRjYWxsIGNhbGxpbmcgY29udmVudGlvbiwKICAgLSByZW1vdmUgdW5uZWVkZWQgdHlwZW9m KCkgZnJvbSBBTElHTl9VUCgpIG1hY3JvCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCks CiAgIC0gYWRkIGFuZCB1c2UgTlVMTCBkZWZpbml0aW9uIGluIHhlbi9hcmNoL3g4Ni9ib290L3Jl bG9jLmMKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBkbyBub3QgcmVhZCBk YXRhIGJleW9uZCB0aGUgZW5kIG9mIG11bHRpYm9vdDIKICAgICBpbmZvcm1hdGlvbiBpbiB4ZW4v YXJjaC94ODYvYm9vdC9oZWFkLlMKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAg LSBhZGQgOnJlcSB0byBzb21lIC5tYWNybyBhcmd1bWVudHMKICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKSwKICAgLSB1c2UgY21vdmNjIGlmIHBvc3NpYmxlLAogICAtIGFkZCAuTCB0byBt dWx0aWJvb3QyX2hlYWRlcl9lbmQgbGFiZWwKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KSwKICAgLSBhZGQgLkwgdG8gbXVsdGlib290Ml9wcm90byBsYWJlbAogICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpLAogICAtIGltcHJvdmUgbGFiZWwgbmFtZXMKICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKS4KCnYzIC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gcmVvcmRlciBy ZWxvYygpIGFyZ3VtZW50cwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHJl bW92ZSAuTCBmcm9tIG11bHRpYm9vdDIgaGVhZGVyIGxhYmVscwogICAgIChzdWdnZXN0ZWQgYnkg QW5kcmV3IENvb3BlciwgSmFuIEJldWxpY2ggYW5kIEtvbnJhZCBSemVzenV0ZWsgV2lsayksCiAg IC0gdGFrZSBpbnRvIGFjY291bnQgYWxpZ25tZW50IHdoZW4gc2tpcHBpbmcgbXVsdGlib290MiBm aXhlZCBwYXJ0CiAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspLAogICAt IGNyZWF0ZSBtb2R1bGVzIGRhdGEgaWYgbW9kdWxlcyBjb3VudCAhPSAwCiAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCksCiAgIC0gaW1wcm92ZSBtYWNyb3MKICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKSwKICAgLSByZWR1Y2UgbnVtYmVyIG9mIGNhc3RzCiAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCksCiAgIC0gdXNlIGNvbnN0IGlmIHBvc3NpYmxlCiAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZHJvcCBzdGF0aWMgYW5kIF9fdXNlZF9fIGF0dHJp YnV0ZSBmcm9tIHJlbG9jKCkKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBy ZW1vdmUgaXNvbGF0ZWQvc3RyYXkgX19wYWNrZWQgYXR0cmlidXRlIGZyb20KICAgICBtdWx0aWJv b3QyX21lbW9yeV9tYXBfdCB0eXBlIGRlZmluaXRpb24KICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKSwKICAgLSByZWZvcm1hdCB4ZW4vaW5jbHVkZS94ZW4vbXVsdGlib290Mi5oCiAgICAg KHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspLAogICAtIGltcHJvdmUgY29tbWVu dHMKICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsayksCiAgIC0gcmVtb3Zl IGhhcmQgdGFicwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2ggYW5kIEtvbnJhZCBSemVz enV0ZWsgV2lsaykuCgp2MiAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIGdlbmVyYXRlIG11bHRp Ym9vdDIgaGVhZGVyIHVzaW5nIG1hY3JvcwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp LAogICAtIGltcHJvdmUgY29tbWVudHMKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwK ICAgLSBzaW1wbGlmeSBhc3NlbWJseSBpbiB4ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMKICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBkbyBub3QgaW5jbHVkZSBpbmNsdWRlL3hl bi9jb21waWxlci5oCiAgICAgaW4geGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYwogICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGRvIG5vdCByZWFkIGRhdGEgYmV5b25kIHRoZSBl bmQgb2YgbXVsdGlib290MiBpbmZvcm1hdGlvbgogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpLgoKdjIgLSBub3QgZml4ZWQgeWV0OgogICAtIGR5bmFtaWMgZGVwZW5kZW5jeSBnZW5lcmF0 aW9uIGZvciB4ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5TOwogICAgIHRoaXMgcmVxdWlyZXMgbW9y ZSB3b3JrOyBJIGFtIG5vdCBzdXJlIHRoYXQgaXQgcGF5cyBiZWNhdXNlCiAgICAgcG90ZW50aWFs IHBhdGNoIHJlcXVpcmVzIG1vcmUgY2hhbmdlcyB0aGFuIGFkZGl0aW9uIG9mIGp1c3QKICAgICBt dWx0aWJvb3QyLmggdG8gTWFrZWZpbGUKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwK ICAgLSBpc29sYXRlZC9zdHJheSBfX3BhY2tlZCBhdHRyaWJ1dGUgdXNhZ2UgZm9yIG11bHRpYm9v dDJfbWVtb3J5X21hcF90CiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkuCi0tLQogeGVu L2FyY2gveDg2L2Jvb3QvTWFrZWZpbGUgICAgICAgIHwgICAgMyArLQogeGVuL2FyY2gveDg2L2Jv b3QvaGVhZC5TICAgICAgICAgIHwgIDEwNyArKysrKysrKysrKysrKysrKysrKysrLQogeGVuL2Fy Y2gveDg2L2Jvb3QvcmVsb2MuYyAgICAgICAgIHwgIDE0OCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLQogeGVuL2FyY2gveDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5jIHwgICAgOSArKwog eGVuL2luY2x1ZGUveGVuL211bHRpYm9vdDIuaCAgICAgIHwgIDE2OSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDQyNiBpbnNlcnRpb25zKCsp LCAxMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS94ZW4vbXVs dGlib290Mi5oCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvTWFrZWZpbGUgYi94ZW4v YXJjaC94ODYvYm9vdC9NYWtlZmlsZQppbmRleCA1ZmRiNWFlLi4wNjg5M2Q4IDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvYm9vdC9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvYm9vdC9NYWtl ZmlsZQpAQCAtMSw2ICsxLDcgQEAKIG9iai1iaW4teSArPSBoZWFkLm8KIAotUkVMT0NfREVQUyA9 ICQoQkFTRURJUikvaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oICQoQkFTRURJUikvaW5jbHVkZS94 ZW4vbXVsdGlib290LmgKK1JFTE9DX0RFUFMgPSAkKEJBU0VESVIpL2luY2x1ZGUvYXNtLXg4Ni9j b25maWcuaCAkKEJBU0VESVIpL2luY2x1ZGUveGVuL211bHRpYm9vdC5oIFwKKwkgICAgICQoQkFT RURJUikvaW5jbHVkZS94ZW4vbXVsdGlib290Mi5oCiAKIGhlYWQubzogcmVsb2MuUwogCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMgYi94ZW4vYXJjaC94ODYvYm9vdC9oZWFk LlMKaW5kZXggNmYyYzY2OC4uMzgzZmY3OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Jvb3Qv aGVhZC5TCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L2hlYWQuUwpAQCAtMSw1ICsxLDYgQEAKICNp bmNsdWRlIDx4ZW4vY29uZmlnLmg+CiAjaW5jbHVkZSA8eGVuL211bHRpYm9vdC5oPgorI2luY2x1 ZGUgPHhlbi9tdWx0aWJvb3QyLmg+CiAjaW5jbHVkZSA8cHVibGljL3hlbi5oPgogI2luY2x1ZGUg PGFzbS9hc21fZGVmbnMuaD4KICNpbmNsdWRlIDxhc20vZGVzYy5oPgpAQCAtMTksNiArMjAsMjgg QEAKICNkZWZpbmUgQk9PVF9QU0VVRE9STV9DUyAweDAwMjAKICNkZWZpbmUgQk9PVF9QU0VVRE9S TV9EUyAweDAwMjgKIAorI2RlZmluZSBNQjJfSFQobmFtZSkgICAgICAoTVVMVElCT09UMl9IRUFE RVJfVEFHXyMjbmFtZSkKKyNkZWZpbmUgTUIyX1RUKG5hbWUpICAgICAgKE1VTFRJQk9PVDJfVEFH X1RZUEVfIyNuYW1lKQorCisgICAgICAgIC5tYWNybyBtYjJodF9hcmdzIGFyZzpyZXEsIGFyZ3M6 dmFyYXJnCisgICAgICAgIC5sb25nIFxhcmcKKyAgICAgICAgLmlmbmIgXGFyZ3MKKyAgICAgICAg bWIyaHRfYXJncyBcYXJncworICAgICAgICAuZW5kaWYKKyAgICAgICAgLmVuZG0KKworICAgICAg ICAubWFjcm8gbWIyaHRfaW5pdCB0eXBlOnJlcSwgcmVxOnJlcSwgYXJnczp2YXJhcmcKKyAgICAg ICAgLmFsaWduIE1VTFRJQk9PVDJfVEFHX0FMSUdOCisuTG1iMmh0X2luaXRfc3RhcnRcQDoKKyAg ICAgICAgLnNob3J0IFx0eXBlCisgICAgICAgIC5zaG9ydCBccmVxCisgICAgICAgIC5sb25nIC5M bWIyaHRfaW5pdF9lbmRcQCAtIC5MbWIyaHRfaW5pdF9zdGFydFxACisgICAgICAgIC5pZm5iIFxh cmdzCisgICAgICAgIG1iMmh0X2FyZ3MgXGFyZ3MKKyAgICAgICAgLmVuZGlmCisuTG1iMmh0X2lu aXRfZW5kXEA6CisgICAgICAgIC5lbmRtCisKIEVOVFJZKHN0YXJ0KQogICAgICAgICBqbXAgICAg IF9fc3RhcnQKIApAQCAtMzQsNiArNTcsNDIgQEAgbXVsdGlib290MV9oZWFkZXJfc3RhcnQ6ICAg ICAgIC8qKiogTVVMVElCT09UMSBIRUFERVIgKioqKi8KICAgICAgICAgLmxvbmcgICAtKE1VTFRJ Qk9PVF9IRUFERVJfTUFHSUMgKyBNVUxUSUJPT1RfSEVBREVSX0ZMQUdTKQogbXVsdGlib290MV9o ZWFkZXJfZW5kOgogCisvKioqIE1VTFRJQk9PVDIgSEVBREVSICoqKiovCisvKiBTb21lIGlkZWFz IGFyZSB0YWtlbiBmcm9tIGdydWItMi4wMC9ncnViLWNvcmUvdGVzdHMvYm9vdC9rZXJuZWwtaTM4 Ni5TIGZpbGUuICovCisgICAgICAgIC5hbGlnbiAgTVVMVElCT09UMl9IRUFERVJfQUxJR04KKwor bXVsdGlib290Ml9oZWFkZXJfc3RhcnQ6CisgICAgICAgIC8qIE1hZ2ljIG51bWJlciBpbmRpY2F0 aW5nIGEgTXVsdGlib290MiBoZWFkZXIuICovCisgICAgICAgIC5sb25nICAgTVVMVElCT09UMl9I RUFERVJfTUFHSUMKKyAgICAgICAgLyogQXJjaGl0ZWN0dXJlOiBpMzg2LiAqLworICAgICAgICAu bG9uZyAgIE1VTFRJQk9PVDJfQVJDSElURUNUVVJFX0kzODYKKyAgICAgICAgLyogTXVsdGlib290 MiBoZWFkZXIgbGVuZ3RoLiAqLworICAgICAgICAubG9uZyAgIC5MbXVsdGlib290Ml9oZWFkZXJf ZW5kIC0gbXVsdGlib290Ml9oZWFkZXJfc3RhcnQKKyAgICAgICAgLyogTXVsdGlib290MiBoZWFk ZXIgY2hlY2tzdW0uICovCisgICAgICAgIC5sb25nICAgLShNVUxUSUJPT1QyX0hFQURFUl9NQUdJ QyArIE1VTFRJQk9PVDJfQVJDSElURUNUVVJFX0kzODYgKyBcCisgICAgICAgICAgICAgICAgICAg ICAgICAoLkxtdWx0aWJvb3QyX2hlYWRlcl9lbmQgLSBtdWx0aWJvb3QyX2hlYWRlcl9zdGFydCkp CisKKyAgICAgICAgLyogTXVsdGlib290MiBpbmZvcm1hdGlvbiByZXF1ZXN0IHRhZy4gKi8KKyAg ICAgICAgbWIyaHRfaW5pdCBNQjJfSFQoSU5GT1JNQVRJT05fUkVRVUVTVCksIE1CMl9IVChSRVFV SVJFRCksIFwKKyAgICAgICAgICAgICAgICAgICBNQjJfVFQoQkFTSUNfTUVNSU5GTyksIE1CMl9U VChNTUFQKQorCisgICAgICAgIC8qIEFsaWduIG1vZHVsZXMgYXQgcGFnZSBib3VuZHJ5LiAqLwor ICAgICAgICBtYjJodF9pbml0IE1CMl9IVChNT0RVTEVfQUxJR04pLCBNQjJfSFQoUkVRVUlSRUQp CisKKyAgICAgICAgLyogQ29uc29sZSBmbGFncyB0YWcuICovCisgICAgICAgIG1iMmh0X2luaXQg TUIyX0hUKENPTlNPTEVfRkxBR1MpLCBNQjJfSFQoT1BUSU9OQUwpLCBcCisgICAgICAgICAgICAg ICAgICAgTVVMVElCT09UMl9DT05TT0xFX0ZMQUdTX0VHQV9URVhUX1NVUFBPUlRFRAorCisgICAg ICAgIC8qIEZyYW1lYnVmZmVyIHRhZy4gKi8KKyAgICAgICAgbWIyaHRfaW5pdCBNQjJfSFQoRlJB TUVCVUZGRVIpLCBNQjJfSFQoT1BUSU9OQUwpLCBcCisgICAgICAgICAgICAgICAgICAgMCwgLyog TnVtYmVyIG9mIHRoZSBjb2x1bW5zIC0gbm8gcHJlZmVyZW5jZS4gKi8gXAorICAgICAgICAgICAg ICAgICAgIDAsIC8qIE51bWJlciBvZiB0aGUgbGluZXMgLSBubyBwcmVmZXJlbmNlLiAqLyBcCisg ICAgICAgICAgICAgICAgICAgMCAgLyogTnVtYmVyIG9mIGJpdHMgcGVyIHBpeGVsIC0gbm8gcHJl ZmVyZW5jZS4gKi8KKworICAgICAgICAvKiBNdWx0aWJvb3QyIGhlYWRlciBlbmQgdGFnLiAqLwor ICAgICAgICBtYjJodF9pbml0IE1CMl9IVChFTkQpLCBNQjJfSFQoUkVRVUlSRUQpCisuTG11bHRp Ym9vdDJfaGVhZGVyX2VuZDoKKwogICAgICAgICAuc2VjdGlvbiAuaW5pdC5yb2RhdGEsICJhIiwg QHByb2diaXRzCiAgICAgICAgIC5hbGlnbiA0CiAKQEAgLTgyLDEwICsxNDEsNTIgQEAgX19zdGFy dDoKICAgICAgICAgbW92ICAgICAlZWN4LCVlcwogICAgICAgICBtb3YgICAgICVlY3gsJXNzCiAK LSAgICAgICAgLyogQ2hlY2sgZm9yIE11bHRpYm9vdCBib290bG9hZGVyICovCisgICAgICAgIC8q IEJvb3Rsb2FkZXJzIG1heSBzZXQgbXVsdGlib290ezEsMn0ubWVtX2xvd2VyIHRvIGEgbm9uemVy byB2YWx1ZS4gKi8KKyAgICAgICAgeG9yICAgICAlZWR4LCVlZHgKKworICAgICAgICAvKiBDaGVj ayBmb3IgTXVsdGlib290MiBib290bG9hZGVyLiAqLworICAgICAgICBjbXAgICAgICRNVUxUSUJP T1QyX0JPT1RMT0FERVJfTUFHSUMsJWVheAorICAgICAgICBqZSAgICAgIC5MbXVsdGlib290Ml9w cm90bworCisgICAgICAgIC8qIENoZWNrIGZvciBNdWx0aWJvb3QgYm9vdGxvYWRlci4gKi8KICAg ICAgICAgY21wICAgICAkTVVMVElCT09UX0JPT1RMT0FERVJfTUFHSUMsJWVheAogICAgICAgICBq bmUgICAgIG5vdF9tdWx0aWJvb3QKIAorICAgICAgICAvKiBHZXQgbWVtX2xvd2VyIGZyb20gTXVs dGlib290IGluZm9ybWF0aW9uLiAqLworICAgICAgICB0ZXN0YiAgICRNQklfTUVNTElNSVRTLE1C X2ZsYWdzKCVlYngpCisKKyAgICAgICAgLyogTm90IGF2YWlsYWJsZT8gQkRBIHZhbHVlIHdpbGwg YmUgZmluZS4gKi8KKyAgICAgICAgY21vdm56ICBNQl9tZW1fbG93ZXIoJWVieCksJWVkeAorICAg ICAgICBqbXAgICAgIHRyYW1wb2xpbmVfc2V0dXAKKworLkxtdWx0aWJvb3QyX3Byb3RvOgorICAg ICAgICAvKiBTa2lwIE11bHRpYm9vdDIgaW5mb3JtYXRpb24gZml4ZWQgcGFydC4gKi8KKyAgICAg ICAgbGVhICAgICAoTUIyX2ZpeGVkX3NpemVvZitNVUxUSUJPT1QyX1RBR19BTElHTi0xKSglZWJ4 KSwlZWN4CisgICAgICAgIGFuZCAgICAgJH4oTVVMVElCT09UMl9UQUdfQUxJR04tMSksJWVjeAor CiswOgorICAgICAgICAvKiBDaGVjayBNdWx0aWJvb3QyIGluZm9ybWF0aW9uIHRvdGFsIHNpemUu ICovCisgICAgICAgIG1vdiAgICAgJWVjeCwlZWRpCisgICAgICAgIHN1YiAgICAgJWVieCwlZWRp CisgICAgICAgIGNtcCAgICAgJWVkaSxNQjJfZml4ZWRfdG90YWxfc2l6ZSglZWJ4KQorICAgICAg ICBqYmUgICAgIHRyYW1wb2xpbmVfc2V0dXAKKworICAgICAgICAvKiBHZXQgbWVtX2xvd2VyIGZy b20gTXVsdGlib290MiBpbmZvcm1hdGlvbi4gKi8KKyAgICAgICAgY21wbCAgICAkTVVMVElCT09U Ml9UQUdfVFlQRV9CQVNJQ19NRU1JTkZPLE1CMl90YWdfdHlwZSglZWN4KQorICAgICAgICBjbW92 ZSAgIE1CMl9tZW1fbG93ZXIoJWVjeCksJWVkeAorICAgICAgICBqZSAgICAgIHRyYW1wb2xpbmVf c2V0dXAKKworICAgICAgICAvKiBJcyBpdCB0aGUgZW5kIG9mIE11bHRpYm9vdDIgaW5mb3JtYXRp b24/ICovCisgICAgICAgIGNtcGwgICAgJE1VTFRJQk9PVDJfVEFHX1RZUEVfRU5ELE1CMl90YWdf dHlwZSglZWN4KQorICAgICAgICBqZSAgICAgIHRyYW1wb2xpbmVfc2V0dXAKKworICAgICAgICAv KiBHbyB0byBuZXh0IE11bHRpYm9vdDIgaW5mb3JtYXRpb24gdGFnLiAqLworICAgICAgICBhZGQg ICAgIE1CMl90YWdfc2l6ZSglZWN4KSwlZWN4CisgICAgICAgIGFkZCAgICAgJChNVUxUSUJPT1Qy X1RBR19BTElHTi0xKSwlZWN4CisgICAgICAgIGFuZCAgICAgJH4oTVVMVElCT09UMl9UQUdfQUxJ R04tMSksJWVjeAorICAgICAgICBqbXAgICAgIDBiCisKK3RyYW1wb2xpbmVfc2V0dXA6CiAgICAg ICAgIC8qIFNldCB1cCB0cmFtcG9saW5lIHNlZ21lbnQgNjRrIGJlbG93IEVCREEgKi8KICAgICAg ICAgbW92endsICAweDQwZSwlZWN4ICAgICAgICAgIC8qIEVCREEgc2VnbWVudCAqLwogICAgICAg ICBjbXAgICAgICQweGEwMDAsJWVjeCAgICAgICAgLyogc2FuaXR5IGNoZWNrIChoaWdoKSAqLwpA QCAtMTAwLDkgKzIwMSw2IEBAIF9fc3RhcnQ6CiAgICAgICAgICAqIENvbXBhcmUgdGhlIHZhbHVl IGluIHRoZSBCREEgd2l0aCB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGUKICAgICAgICAgICogbXVs dGlib290IHN0cnVjdHVyZSAoaWYgYXZhaWxhYmxlKSBhbmQgdXNlIHRoZSBzbWFsbGVzdC4KICAg ICAgICAgICovCi0gICAgICAgIHRlc3RiICAgJE1CSV9NRU1MSU1JVFMsKCVlYngpCi0gICAgICAg IGp6ICAgICAgMmYgICAgICAgICAgICAgICAgICAvKiBub3QgYXZhaWxhYmxlPyBCREEgdmFsdWUg d2lsbCBiZSBmaW5lICovCi0gICAgICAgIG1vdiAgICAgTUJfbWVtX2xvd2VyKCVlYngpLCVlZHgK ICAgICAgICAgY21wICAgICAkMHgxMDAsJWVkeCAgICAgICAgIC8qIGlzIHRoZSBtdWx0aWJvb3Qg dmFsdWUgdG9vIHNtYWxsPyAqLwogICAgICAgICBqYiAgICAgIDJmICAgICAgICAgICAgICAgICAg LyogaWYgc28sIGRvIG5vdCB1c2UgaXQgKi8KICAgICAgICAgc2hsICAgICAkMTAtNCwlZWR4CkBA IC0xMjEsNiArMjE5LDcgQEAgX19zdGFydDoKICAgICAgICAgbW92ICAgICAkc3ltX3BoeXMoY3B1 MF9zdGFjaykrMTAyNCwlZXNwCiAgICAgICAgIHB1c2ggICAgJWVjeCAgICAgICAgICAgICAgICAv KiBCb290IHRyYW1wb2xpbmUgYWRkcmVzcy4gKi8KICAgICAgICAgcHVzaCAgICAlZWJ4ICAgICAg ICAgICAgICAgIC8qIE11bHRpYm9vdCBpbmZvcm1hdGlvbiBhZGRyZXNzLiAqLworICAgICAgICBw dXNoICAgICVlYXggICAgICAgICAgICAgICAgLyogTXVsdGlib290IG1hZ2ljLiAqLwogICAgICAg ICBjYWxsICAgIHJlbG9jCiAgICAgICAgIG1vdiAgICAgJWVheCxzeW1fcGh5cyhtdWx0aWJvb3Rf cHRyKQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jIGIveGVuL2FyY2gv eDg2L2Jvb3QvcmVsb2MuYwppbmRleCBlYThjYjM3Li5iMjJiZjFlIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvYm9vdC9yZWxvYy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMKQEAg LTUsMTUgKzUsMTggQEAKICAqIGFuZCBtb2R1bGVzLiBUaGlzIGlzIG1vc3QgZWFzaWx5IGRvbmUg ZWFybHkgd2l0aCBwYWdpbmcgZGlzYWJsZWQuCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDA5LCBD aXRyaXggU3lzdGVtcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTYgT3JhY2xlIGFu ZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBBdXRob3Jz OgogICogICAgS2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KKyAqICAgIERhbmllbCBLaXBlciA8 ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+CiAgKi8KIAogLyoKICAqIFRoaXMgZW50cnkgcG9pbnQg aXMgZW50ZXJlZCBmcm9tIHhlbi9hcmNoL3g4Ni9ib290L2hlYWQuUyB3aXRoOgotICogICAtIDB4 NCglZXNwKSA9IE1VTFRJQk9PVF9JTkZPUk1BVElPTl9BRERSRVNTLAotICogICAtIDB4OCglZXNw KSA9IEJPT1RfVFJBTVBPTElORV9BRERSRVNTLgorICogICAtIDB4NCglZXNwKSA9IE1VTFRJQk9P VF9NQUdJQywKKyAqICAgLSAweDgoJWVzcCkgPSBNVUxUSUJPT1RfSU5GT1JNQVRJT05fQUREUkVT UywKKyAqICAgLSAweGMoJWVzcCkgPSBCT09UX1RSQU1QT0xJTkVfQUREUkVTUy4KICAqLwogYXNt ICgKICAgICAiICAgIC50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgpAQCAtMjMsNyAr MjYsMTIgQEAgYXNtICgKICAgICApOwogCiB0eXBlZGVmIHVuc2lnbmVkIGludCB1MzI7Cit0eXBl ZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7CisKICNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRl L3hlbi9tdWx0aWJvb3QuaCIKKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL3hlbi9tdWx0aWJv b3QyLmgiCisKKyNkZWZpbmUgTlVMTAkJKCh2b2lkICopMCkKIAogI2RlZmluZSBfX3N0ZGNhbGwJ X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKQogCkBAIC0zMiw2ICs0MCw5IEBAIHR5cGVkZWYg dW5zaWduZWQgaW50IHUzMjsKIAogI2RlZmluZSBfcCh2YWwpCQkoKHZvaWQgKikodW5zaWduZWQg bG9uZykodmFsKSkKIAorI2RlZmluZSBnZXRfbWIyX2RhdGEodGFnLCB0eXBlLCBtZW1iZXIpICAg KCgobXVsdGlib290Ml90YWdfIyN0eXBlIyNfdCAqKSh0YWcpKS0+bWVtYmVyKQorI2RlZmluZSBn ZXRfbWIyX3N0cmluZyh0YWcsIHR5cGUsIG1lbWJlcikgKCh1MzIpZ2V0X21iMl9kYXRhKHRhZywg dHlwZSwgbWVtYmVyKSkKKwogc3RhdGljIHUzMiBhbGxvYzsKIAogc3RhdGljIHUzMiBhbGxvY19t ZW0odTMyIGJ5dGVzKQpAQCAtMzksNiArNTAsMTIgQEAgc3RhdGljIHUzMiBhbGxvY19tZW0odTMy IGJ5dGVzKQogICAgIHJldHVybiBhbGxvYyAtPSBBTElHTl9VUChieXRlcywgMTYpOwogfQogCitz dGF0aWMgdm9pZCB6ZXJvX21lbSh1MzIgcywgdTMyIGJ5dGVzKQoreworICAgIHdoaWxlICggYnl0 ZXMtLSApCisgICAgICAgICooY2hhciAqKXMrKyA9IDA7Cit9CisKIHN0YXRpYyB1MzIgY29weV9t ZW0odTMyIHNyYywgdTMyIGJ5dGVzKQogewogICAgIHUzMiBkc3QsIGRzdF9yZXQ7CkBAIC02NSwx MyArODIsMTEgQEAgc3RhdGljIHUzMiBjb3B5X3N0cmluZyh1MzIgc3JjKQogICAgIHJldHVybiBj b3B5X21lbShzcmMsIHAgLSBzcmMgKyAxKTsKIH0KIAotbXVsdGlib290X2luZm9fdCBfX3N0ZGNh bGwgKnJlbG9jKHUzMiBtYmlfaW4sIHUzMiB0cmFtcG9saW5lKQorc3RhdGljIG11bHRpYm9vdF9p bmZvX3QgKm1iaV9yZWxvYyh1MzIgbWJpX2luKQogewogICAgIGludCBpOwogICAgIG11bHRpYm9v dF9pbmZvX3QgKm1iaV9vdXQ7CiAKLSAgICBhbGxvYyA9IHRyYW1wb2xpbmU7Ci0KICAgICBtYmlf b3V0ID0gX3AoY29weV9tZW0obWJpX2luLCBzaXplb2YoKm1iaV9vdXQpKSk7CiAKICAgICBpZiAo IG1iaV9vdXQtPmZsYWdzICYgTUJJX0NNRExJTkUgKQpAQCAtMTA4LDMgKzEyMywxMjYgQEAgbXVs dGlib290X2luZm9fdCBfX3N0ZGNhbGwgKnJlbG9jKHUzMiBtYmlfaW4sIHUzMiB0cmFtcG9saW5l KQogCiAgICAgcmV0dXJuIG1iaV9vdXQ7CiB9CisKK3N0YXRpYyBtdWx0aWJvb3RfaW5mb190ICpt YmkyX3JlbG9jKHUzMiBtYmlfaW4pCit7CisgICAgY29uc3QgbXVsdGlib290Ml9maXhlZF90ICpt YmlfZml4ID0gX3AobWJpX2luKTsKKyAgICBjb25zdCBtdWx0aWJvb3QyX21lbW9yeV9tYXBfdCAq bW1hcF9zcmM7CisgICAgY29uc3QgbXVsdGlib290Ml90YWdfdCAqdGFnOworICAgIG1vZHVsZV90 ICptYmlfb3V0X21vZHMgPSBOVUxMOworICAgIG1lbW9yeV9tYXBfdCAqbW1hcF9kc3Q7CisgICAg bXVsdGlib290X2luZm9fdCAqbWJpX291dDsKKyAgICB1MzIgcHRyOworICAgIHVuc2lnbmVkIGlu dCBpLCBtb2RfaWR4ID0gMDsKKworICAgIHB0ciA9IGFsbG9jX21lbShzaXplb2YoKm1iaV9vdXQp KTsKKyAgICBtYmlfb3V0ID0gX3AocHRyKTsKKyAgICB6ZXJvX21lbShwdHIsIHNpemVvZigqbWJp X291dCkpOworCisgICAgLyogU2tpcCBNdWx0aWJvb3QyIGluZm9ybWF0aW9uIGZpeGVkIHBhcnQu ICovCisgICAgcHRyID0gQUxJR05fVVAobWJpX2luICsgc2l6ZW9mKCptYmlfZml4KSwgTVVMVElC T09UMl9UQUdfQUxJR04pOworCisgICAgLyogR2V0IHRoZSBudW1iZXIgb2YgbW9kdWxlcy4gKi8K KyAgICBmb3IgKCB0YWcgPSBfcChwdHIpOyAodTMyKXRhZyAtIG1iaV9pbiA8IG1iaV9maXgtPnRv dGFsX3NpemU7CisgICAgICAgICAgdGFnID0gX3AoQUxJR05fVVAoKHUzMil0YWcgKyB0YWctPnNp emUsIE1VTFRJQk9PVDJfVEFHX0FMSUdOKSkgKQorICAgIHsKKyAgICAgICAgaWYgKCB0YWctPnR5 cGUgPT0gTVVMVElCT09UMl9UQUdfVFlQRV9NT0RVTEUgKQorICAgICAgICAgICAgKyttYmlfb3V0 LT5tb2RzX2NvdW50OworICAgICAgICBlbHNlIGlmICggdGFnLT50eXBlID09IE1VTFRJQk9PVDJf VEFHX1RZUEVfRU5EICkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICggbWJp X291dC0+bW9kc19jb3VudCApCisgICAgeworICAgICAgICBtYmlfb3V0LT5mbGFncyB8PSBNQklf TU9EVUxFUzsKKyAgICAgICAgbWJpX291dC0+bW9kc19hZGRyID0gYWxsb2NfbWVtKG1iaV9vdXQt Pm1vZHNfY291bnQgKiBzaXplb2YoKm1iaV9vdXRfbW9kcykpOworICAgICAgICBtYmlfb3V0X21v ZHMgPSBfcChtYmlfb3V0LT5tb2RzX2FkZHIpOworICAgIH0KKworICAgIC8qIFNraXAgTXVsdGli b290MiBpbmZvcm1hdGlvbiBmaXhlZCBwYXJ0LiAqLworICAgIHB0ciA9IEFMSUdOX1VQKG1iaV9p biArIHNpemVvZigqbWJpX2ZpeCksIE1VTFRJQk9PVDJfVEFHX0FMSUdOKTsKKworICAgIC8qIFB1 dCBhbGwgbmVlZGVkIGRhdGEgaW50byBtYmlfb3V0LiAqLworICAgIGZvciAoIHRhZyA9IF9wKHB0 cik7ICh1MzIpdGFnIC0gbWJpX2luIDwgbWJpX2ZpeC0+dG90YWxfc2l6ZTsKKyAgICAgICAgICB0 YWcgPSBfcChBTElHTl9VUCgodTMyKXRhZyArIHRhZy0+c2l6ZSwgTVVMVElCT09UMl9UQUdfQUxJ R04pKSApCisgICAgICAgIHN3aXRjaCAoIHRhZy0+dHlwZSApCisgICAgICAgIHsKKyAgICAgICAg Y2FzZSBNVUxUSUJPT1QyX1RBR19UWVBFX0JPT1RfTE9BREVSX05BTUU6CisgICAgICAgICAgICBt Ymlfb3V0LT5mbGFncyB8PSBNQklfTE9BREVSTkFNRTsKKyAgICAgICAgICAgIHB0ciA9IGdldF9t YjJfc3RyaW5nKHRhZywgc3RyaW5nLCBzdHJpbmcpOworICAgICAgICAgICAgbWJpX291dC0+Ym9v dF9sb2FkZXJfbmFtZSA9IGNvcHlfc3RyaW5nKHB0cik7CisgICAgICAgICAgICBicmVhazsKKwor ICAgICAgICBjYXNlIE1VTFRJQk9PVDJfVEFHX1RZUEVfQ01ETElORToKKyAgICAgICAgICAgIG1i aV9vdXQtPmZsYWdzIHw9IE1CSV9DTURMSU5FOworICAgICAgICAgICAgcHRyID0gZ2V0X21iMl9z dHJpbmcodGFnLCBzdHJpbmcsIHN0cmluZyk7CisgICAgICAgICAgICBtYmlfb3V0LT5jbWRsaW5l ID0gY29weV9zdHJpbmcocHRyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug TVVMVElCT09UMl9UQUdfVFlQRV9CQVNJQ19NRU1JTkZPOgorICAgICAgICAgICAgbWJpX291dC0+ ZmxhZ3MgfD0gTUJJX01FTUxJTUlUUzsKKyAgICAgICAgICAgIG1iaV9vdXQtPm1lbV9sb3dlciA9 IGdldF9tYjJfZGF0YSh0YWcsIGJhc2ljX21lbWluZm8sIG1lbV9sb3dlcik7CisgICAgICAgICAg ICBtYmlfb3V0LT5tZW1fdXBwZXIgPSBnZXRfbWIyX2RhdGEodGFnLCBiYXNpY19tZW1pbmZvLCBt ZW1fdXBwZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNVUxUSUJPT1Qy X1RBR19UWVBFX01NQVA6CisgICAgICAgICAgICBpZiAoIGdldF9tYjJfZGF0YSh0YWcsIG1tYXAs IGVudHJ5X3NpemUpIDwgc2l6ZW9mKCptbWFwX3NyYykgKQorICAgICAgICAgICAgICAgIGJyZWFr OworCisgICAgICAgICAgICBtYmlfb3V0LT5mbGFncyB8PSBNQklfTUVNTUFQOworICAgICAgICAg ICAgbWJpX291dC0+bW1hcF9sZW5ndGggPSBnZXRfbWIyX2RhdGEodGFnLCBtbWFwLCBzaXplKTsK KyAgICAgICAgICAgIG1iaV9vdXQtPm1tYXBfbGVuZ3RoIC09IHNpemVvZihtdWx0aWJvb3QyX3Rh Z19tbWFwX3QpOworICAgICAgICAgICAgbWJpX291dC0+bW1hcF9sZW5ndGggLz0gZ2V0X21iMl9k YXRhKHRhZywgbW1hcCwgZW50cnlfc2l6ZSk7CisgICAgICAgICAgICBtYmlfb3V0LT5tbWFwX2xl bmd0aCAqPSBzaXplb2YoKm1tYXBfZHN0KTsKKworICAgICAgICAgICAgbWJpX291dC0+bW1hcF9h ZGRyID0gYWxsb2NfbWVtKG1iaV9vdXQtPm1tYXBfbGVuZ3RoKTsKKworICAgICAgICAgICAgbW1h cF9zcmMgPSBnZXRfbWIyX2RhdGEodGFnLCBtbWFwLCBlbnRyaWVzKTsKKyAgICAgICAgICAgIG1t YXBfZHN0ID0gX3AobWJpX291dC0+bW1hcF9hZGRyKTsKKworICAgICAgICAgICAgZm9yICggaSA9 IDA7IGkgPCBtYmlfb3V0LT5tbWFwX2xlbmd0aCAvIHNpemVvZigqbW1hcF9kc3QpOyBpKysgKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIEluaXQgc2l6ZSBtZW1iZXIgcHJvcGVy bHkuICovCisgICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0uc2l6ZSA9IHNpemVvZigqbW1hcF9k c3QpOworICAgICAgICAgICAgICAgIG1tYXBfZHN0W2ldLnNpemUgLT0gc2l6ZW9mKG1tYXBfZHN0 W2ldLnNpemUpOworICAgICAgICAgICAgICAgIC8qIE5vdyBjb3B5IGEgZ2l2ZW4gcmVnaW9uIGRh dGEuICovCisgICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0uYmFzZV9hZGRyX2xvdyA9ICh1MzIp bW1hcF9zcmMtPmFkZHI7CisgICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0uYmFzZV9hZGRyX2hp Z2ggPSAodTMyKShtbWFwX3NyYy0+YWRkciA+PiAzMik7CisgICAgICAgICAgICAgICAgbW1hcF9k c3RbaV0ubGVuZ3RoX2xvdyA9ICh1MzIpbW1hcF9zcmMtPmxlbjsKKyAgICAgICAgICAgICAgICBt bWFwX2RzdFtpXS5sZW5ndGhfaGlnaCA9ICh1MzIpKG1tYXBfc3JjLT5sZW4gPj4gMzIpOworICAg ICAgICAgICAgICAgIG1tYXBfZHN0W2ldLnR5cGUgPSBtbWFwX3NyYy0+dHlwZTsKKyAgICAgICAg ICAgICAgICBtbWFwX3NyYyA9IF9wKG1tYXBfc3JjKSArIGdldF9tYjJfZGF0YSh0YWcsIG1tYXAs IGVudHJ5X3NpemUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg ICAgY2FzZSBNVUxUSUJPT1QyX1RBR19UWVBFX01PRFVMRToKKyAgICAgICAgICAgIGlmICggbW9k X2lkeCA+PSBtYmlfb3V0LT5tb2RzX2NvdW50ICkKKyAgICAgICAgICAgICAgICBicmVhazsKKwor ICAgICAgICAgICAgbWJpX291dF9tb2RzW21vZF9pZHhdLm1vZF9zdGFydCA9IGdldF9tYjJfZGF0 YSh0YWcsIG1vZHVsZSwgbW9kX3N0YXJ0KTsKKyAgICAgICAgICAgIG1iaV9vdXRfbW9kc1ttb2Rf aWR4XS5tb2RfZW5kID0gZ2V0X21iMl9kYXRhKHRhZywgbW9kdWxlLCBtb2RfZW5kKTsKKyAgICAg ICAgICAgIHB0ciA9IGdldF9tYjJfc3RyaW5nKHRhZywgbW9kdWxlLCBjbWRsaW5lKTsKKyAgICAg ICAgICAgIG1iaV9vdXRfbW9kc1ttb2RfaWR4XS5zdHJpbmcgPSBjb3B5X3N0cmluZyhwdHIpOwor ICAgICAgICAgICAgbWJpX291dF9tb2RzW21vZF9pZHhdLnJlc2VydmVkID0gMDsKKyAgICAgICAg ICAgICsrbW9kX2lkeDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTVVMVElC T09UMl9UQUdfVFlQRV9FTkQ6CisgICAgICAgICAgICByZXR1cm4gbWJpX291dDsKKworICAgICAg ICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgIHJldHVybiBt Ymlfb3V0OworfQorCittdWx0aWJvb3RfaW5mb190IF9fc3RkY2FsbCAqcmVsb2ModTMyIG1iX21h Z2ljLCB1MzIgbWJpX2luLCB1MzIgdHJhbXBvbGluZSkKK3sKKyAgICBhbGxvYyA9IHRyYW1wb2xp bmU7CisKKyAgICBpZiAoIG1iX21hZ2ljID09IE1VTFRJQk9PVDJfQk9PVExPQURFUl9NQUdJQyAp CisgICAgICAgIHJldHVybiBtYmkyX3JlbG9jKG1iaV9pbik7CisgICAgZWxzZQorICAgICAgICBy ZXR1cm4gbWJpX3JlbG9jKG1iaV9pbik7Cit9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2 XzY0L2FzbS1vZmZzZXRzLmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMKaW5k ZXggNjQ5MDVjNi4uYjQzN2E4ZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9hc20t b2Zmc2V0cy5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYwpAQCAtMTMs NiArMTMsNyBAQAogI2luY2x1ZGUgPGFzbS9maXhtYXAuaD4KICNpbmNsdWRlIDxhc20vaGFyZGly cS5oPgogI2luY2x1ZGUgPHhlbi9tdWx0aWJvb3QuaD4KKyNpbmNsdWRlIDx4ZW4vbXVsdGlib290 Mi5oPgogCiAjZGVmaW5lIERFRklORShfc3ltLCBfdmFsKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgYXNtIHZvbGF0aWxlICgiXG4uYXNjaWlc Ij09PiNkZWZpbmUgIiAjX3N5bSAiICUwIC8qICIgI192YWwgIiAqLzw9PVwiIiBcCkBAIC0xNjcs NiArMTY4LDE0IEBAIHZvaWQgX19kdW1teV9fKHZvaWQpCiAgICAgT0ZGU0VUKE1CX2ZsYWdzLCBt dWx0aWJvb3RfaW5mb190LCBmbGFncyk7CiAgICAgT0ZGU0VUKE1CX2NtZGxpbmUsIG11bHRpYm9v dF9pbmZvX3QsIGNtZGxpbmUpOwogICAgIE9GRlNFVChNQl9tZW1fbG93ZXIsIG11bHRpYm9vdF9p bmZvX3QsIG1lbV9sb3dlcik7CisgICAgQkxBTksoKTsKKworICAgIERFRklORShNQjJfZml4ZWRf c2l6ZW9mLCBzaXplb2YobXVsdGlib290Ml9maXhlZF90KSk7CisgICAgT0ZGU0VUKE1CMl9maXhl ZF90b3RhbF9zaXplLCBtdWx0aWJvb3QyX2ZpeGVkX3QsIHRvdGFsX3NpemUpOworICAgIE9GRlNF VChNQjJfdGFnX3R5cGUsIG11bHRpYm9vdDJfdGFnX3QsIHR5cGUpOworICAgIE9GRlNFVChNQjJf dGFnX3NpemUsIG11bHRpYm9vdDJfdGFnX3QsIHNpemUpOworICAgIE9GRlNFVChNQjJfbWVtX2xv d2VyLCBtdWx0aWJvb3QyX3RhZ19iYXNpY19tZW1pbmZvX3QsIG1lbV9sb3dlcik7CisgICAgQkxB TksoKTsKIAogICAgIE9GRlNFVChET01BSU5fdm1fYXNzaXN0LCBzdHJ1Y3QgZG9tYWluLCB2bV9h c3Npc3QpOwogfQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL211bHRpYm9vdDIuaCBiL3hl bi9pbmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uOGRkNTgwMAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9tdWx0aWJv b3QyLmgKQEAgLTAsMCArMSwxNjkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5LDIwMDMs MjAwNywyMDA4LDIwMDksMjAxMCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgKgor ICogIG11bHRpYm9vdDIuaCAtIE11bHRpYm9vdCAyIGhlYWRlciBmaWxlLgorICoKKyAqICBCYXNl ZCBvbiBncnViLTIuMDAvaW5jbHVkZS9tdWx0aWJvb3QyLmggZmlsZS4KKyAqCisgKiAgUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEgY29weQorICogIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl CisgKiAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqICBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoK KyAqICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAorICogIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBBTlkKKyAqICBERVZFTE9QRVIgT1Ig RElTVFJJQlVUT1IgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElB QklMSVRZLAorICogIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IKKyAqICBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJF LgorICovCisKKyNpZm5kZWYgX19NVUxUSUJPT1QyX0hfXworI2RlZmluZSBfX01VTFRJQk9PVDJf SF9fCisKKy8qIFRoZSBtYWdpYyBmaWVsZCBzaG91bGQgY29udGFpbiB0aGlzLiAgKi8KKyNkZWZp bmUgTVVMVElCT09UMl9IRUFERVJfTUFHSUMJCQkJMHhlODUyNTBkNgorCisvKiBUaGlzIHNob3Vs ZCBiZSBpbiAlZWF4IG9uIHg4NiBhcmNoaXRlY3R1cmUuICAqLworI2RlZmluZSBNVUxUSUJPT1Qy X0JPT1RMT0FERVJfTUFHSUMJCQkweDM2ZDc2Mjg5CisKKy8qIEhvdyBtYW55IGJ5dGVzIGZyb20g dGhlIHN0YXJ0IG9mIHRoZSBmaWxlIHdlIHNlYXJjaCBmb3IgdGhlIGhlYWRlci4gICovCisjZGVm aW5lIE1VTFRJQk9PVDJfU0VBUkNICQkJCTMyNzY4CisKKy8qIE11bHRpYm9vdCAyIGhlYWRlciBh bGlnbm1lbnQuICovCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX0FMSUdOCQkJCTgKKworLyog QWxpZ25tZW50IG9mIG11bHRpYm9vdCAyIG1vZHVsZXMuICAqLworI2RlZmluZSBNVUxUSUJPT1Qy X01PRF9BTElHTgkJCQkweDAwMDAxMDAwCisKKy8qIEFsaWdubWVudCBvZiB0aGUgbXVsdGlib290 IDIgaW5mbyBzdHJ1Y3R1cmUuICAqLworI2RlZmluZSBNVUxUSUJPT1QyX0lORk9fQUxJR04JCQkJ MHgwMDAwMDAwOAorCisvKiBNdWx0aWJvb3QgMiBhcmNoaXRlY3R1cmVzLiAqLworI2RlZmluZSBN VUxUSUJPT1QyX0FSQ0hJVEVDVFVSRV9JMzg2CQkJMAorI2RlZmluZSBNVUxUSUJPT1QyX0FSQ0hJ VEVDVFVSRV9NSVBTMzIJCQk0CisKKy8qIEhlYWRlciB0YWcgdHlwZXMuICovCisjZGVmaW5lIE1V TFRJQk9PVDJfSEVBREVSX1RBR19FTkQJCQkwCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RB R19JTkZPUk1BVElPTl9SRVFVRVNUCTEKKyNkZWZpbmUgTVVMVElCT09UMl9IRUFERVJfVEFHX0FE RFJFU1MJCQkyCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19FTlRSWV9BRERSRVNTCQkz CisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19DT05TT0xFX0ZMQUdTCQk0CisjZGVmaW5l IE1VTFRJQk9PVDJfSEVBREVSX1RBR19GUkFNRUJVRkZFUgkJNQorI2RlZmluZSBNVUxUSUJPT1Qy X0hFQURFUl9UQUdfTU9EVUxFX0FMSUdOCQk2CisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RB R19FRklfQlMJCQk3CisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19FTlRSWV9BRERSRVNT X0VGSTMyCTgKKyNkZWZpbmUgTVVMVElCT09UMl9IRUFERVJfVEFHX0VOVFJZX0FERFJFU1NfRUZJ NjQJOQorCisvKiBIZWFkZXIgdGFnIGZsYWdzLiAqLworI2RlZmluZSBNVUxUSUJPT1QyX0hFQURF Ul9UQUdfUkVRVUlSRUQJCQkwCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19PUFRJT05B TAkJCTEKKworLyogSGVhZGVyIGNvbnNvbGUgdGFnIGNvbnNvbGVfZmxhZ3MuICovCisjZGVmaW5l IE1VTFRJQk9PVDJfQ09OU09MRV9GTEFHU19DT05TT0xFX1JFUVVJUkVECTEKKyNkZWZpbmUgTVVM VElCT09UMl9DT05TT0xFX0ZMQUdTX0VHQV9URVhUX1NVUFBPUlRFRAkyCisKKy8qIEZsYWdzIHNl dCBpbiB0aGUgJ2ZsYWdzJyBtZW1iZXIgb2YgdGhlIG11bHRpYm9vdCBoZWFkZXIuICAqLworI2Rl ZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX0VORAkJCQkwCisjZGVmaW5lIE1VTFRJQk9PVDJfVEFH X1RZUEVfQ01ETElORQkJCTEKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9CT09UX0xPQURF Ul9OQU1FCQkyCisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfTU9EVUxFCQkJMworI2RlZmlu ZSBNVUxUSUJPT1QyX1RBR19UWVBFX0JBU0lDX01FTUlORk8JCTQKKyNkZWZpbmUgTVVMVElCT09U Ml9UQUdfVFlQRV9CT09UREVWCQkJNQorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX01NQVAJ CQk2CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfVkJFCQkJCTcKKyNkZWZpbmUgTVVMVElC T09UMl9UQUdfVFlQRV9GUkFNRUJVRkZFUgkJCTgKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQ RV9FTEZfU0VDVElPTlMJCTkKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9BUE0JCQkJMTAK KyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9FRkkzMgkJCTExCisjZGVmaW5lIE1VTFRJQk9P VDJfVEFHX1RZUEVfRUZJNjQJCQkxMgorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX1NNQklP UwkJCTEzCisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfQUNQSV9PTEQJCQkxNAorI2RlZmlu ZSBNVUxUSUJPT1QyX1RBR19UWVBFX0FDUElfTkVXCQkJMTUKKyNkZWZpbmUgTVVMVElCT09UMl9U QUdfVFlQRV9ORVRXT1JLCQkJMTYKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9FRklfTU1B UAkJCTE3CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJX0JTCQkJMTgKKyNkZWZpbmUg TVVMVElCT09UMl9UQUdfVFlQRV9FRkkzMl9JSAkJCTE5CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFH X1RZUEVfRUZJNjRfSUgJCQkyMAorCisvKiBNdWx0aWJvb3QgMiB0YWcgYWxpZ25tZW50LiAqLwor I2RlZmluZSBNVUxUSUJPT1QyX1RBR19BTElHTgkJCQk4CisKKy8qIE1lbW9yeSB0eXBlcy4gKi8K KyNkZWZpbmUgTVVMVElCT09UMl9NRU1PUllfQVZBSUxBQkxFCQkJMQorI2RlZmluZSBNVUxUSUJP T1QyX01FTU9SWV9SRVNFUlZFRAkJCTIKKyNkZWZpbmUgTVVMVElCT09UMl9NRU1PUllfQUNQSV9S RUNMQUlNQUJMRQkJMworI2RlZmluZSBNVUxUSUJPT1QyX01FTU9SWV9OVlMJCQkJNAorI2RlZmlu ZSBNVUxUSUJPT1QyX01FTU9SWV9CQURSQU0JCQk1CisKKy8qIEZyYW1lYnVmZmVyIHR5cGVzLiAq LworI2RlZmluZSBNVUxUSUJPT1QyX0ZSQU1FQlVGRkVSX1RZUEVfSU5ERVhFRAkJMAorI2RlZmlu ZSBNVUxUSUJPT1QyX0ZSQU1FQlVGRkVSX1RZUEVfUkdCCQkJMQorI2RlZmluZSBNVUxUSUJPT1Qy X0ZSQU1FQlVGRkVSX1RZUEVfRUdBX1RFWFQJCTIKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KK3R5 cGVkZWYgc3RydWN0IHsKKyAgICB1MzIgdG90YWxfc2l6ZTsKKyAgICB1MzIgcmVzZXJ2ZWQ7Cit9 IG11bHRpYm9vdDJfZml4ZWRfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHUzMiB0eXBlOwor ICAgIHUzMiBzaXplOworfSBtdWx0aWJvb3QyX3RhZ190OworCit0eXBlZGVmIHN0cnVjdCB7Cisg ICAgdTMyIHR5cGU7CisgICAgdTMyIHNpemU7CisgICAgY2hhciBzdHJpbmdbXTsKK30gbXVsdGli b290Ml90YWdfc3RyaW5nX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1MzIgdHlwZTsKKyAg ICB1MzIgc2l6ZTsKKyAgICB1MzIgbWVtX2xvd2VyOworICAgIHUzMiBtZW1fdXBwZXI7Cit9IG11 bHRpYm9vdDJfdGFnX2Jhc2ljX21lbWluZm9fdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHU2 NCBhZGRyOworICAgIHU2NCBsZW47CisgICAgdTMyIHR5cGU7CisgICAgdTMyIHplcm87Cit9IG11 bHRpYm9vdDJfbWVtb3J5X21hcF90OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdTMyIHR5cGU7 CisgICAgdTMyIHNpemU7CisgICAgdTMyIGVudHJ5X3NpemU7CisgICAgdTMyIGVudHJ5X3ZlcnNp b247CisgICAgbXVsdGlib290Ml9tZW1vcnlfbWFwX3QgZW50cmllc1tdOworfSBtdWx0aWJvb3Qy X3RhZ19tbWFwX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1MzIgdHlwZTsKKyAgICB1MzIg c2l6ZTsKKyAgICB1NjQgcG9pbnRlcjsKK30gbXVsdGlib290Ml90YWdfZWZpNjRfdDsKKwordHlw ZWRlZiBzdHJ1Y3QgeworICAgIHUzMiB0eXBlOworICAgIHUzMiBzaXplOworICAgIHU2NCBwb2lu dGVyOworfSBtdWx0aWJvb3QyX3RhZ19lZmk2NF9paF90OworCit0eXBlZGVmIHN0cnVjdCB7Cisg ICAgdTMyIHR5cGU7CisgICAgdTMyIHNpemU7CisgICAgdTMyIG1vZF9zdGFydDsKKyAgICB1MzIg bW9kX2VuZDsKKyAgICBjaGFyIGNtZGxpbmVbXTsKK30gbXVsdGlib290Ml90YWdfbW9kdWxlX3Q7 CisjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCisKKyNlbmRpZiAvKiBfX01VTFRJQk9PVDJfSF9f ICovCi0tIAoxLjcuMTAuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=