From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v5 35/47] x86emul: support AVX512F floating-point conversion insns Date: Mon, 19 Nov 2018 03:33:54 -0700 Message-ID: <5BF2919202000078001FD57B@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5BF289D802000078001FD3DF@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gOgsR-00037U-O3 for xen-devel@lists.xenproject.org; Mon, 19 Nov 2018 10:33:59 +0000 In-Reply-To: <5BF289D802000078001FD3DF@prv1-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper , Wei Liu , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VkNWVFBTMlBELCBzaGFyaW5nIGl0cyBtYWluIG9wY29kZSB3aXRoIG90aGVycywgbmVlZHMgYSAi bWFudWFsIgpvdmVycmlkZSBvZiBkaXNwOHNjYWxlLgoKVGhlIHNpbWRfc2l6ZSBjaGFuZ2UgZm9y IHR3b2J5dGVfdGFibGVbMHg1YV0gaXMgYmVuaWduIHRvIHByZS1leGlzdGluZwpjb2RlLCBidXQg YWxsb3dzIGRlY29kZV9kaXNwOHNjYWxlKCkgdG8gd29yayBhcyBpcyBoZXJlLgoKQWxzbyBjb3Jy ZWN0IHRoZSBjb21tZW50IG9uIGFuIEFWWCBjb3VudGVycGFydC4KClNpZ25lZC1vZmYtYnk6IEph biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCnY1OiBSZS1iYXNlIG92ZXIgY2hhbmdl cyBlYXJsaWVyIGluIHRoZSBzZXJpZXMuCnY0OiBOZXcuCgotLS0gYS90b29scy90ZXN0cy94ODZf ZW11bGF0b3IvZXZleC1kaXNwOC5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9ldmV4 LWRpc3A4LmMKQEAgLTEwOSw2ICsxMDksMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXN0IGF2 eDUxMmZfYWxsW10gPQogICAgIElOU05fRlAoY21wLCAgICAgICAgICAgICAwZiwgYzIpLAogICAg IElOU04oY29taXNkLCAgICAgICA2NiwgICAwZiwgMmYsICAgIGVsLCAgICAgIHEsIGVsKSwKICAg ICBJTlNOKGNvbWlzcywgICAgICAgICAsICAgMGYsIDJmLCAgICBlbCwgICAgICBkLCBlbCksCisg ICAgSU5TTihjdnRwZDJwcywgICAgIDY2LCAgIDBmLCA1YSwgICAgdmwsICAgICAgcSwgdmwpLAor ICAgIElOU04oY3Z0cGgycHMsICAgICA2NiwgMGYzOCwgMTMsICAgIHZsXzIsIGRfbmIsIHZsKSwK KyAgICBJTlNOKGN2dHBzMnBkLCAgICAgICAsICAgMGYsIDVhLCAgICB2bF8yLCAgICBkLCB2bCks CisgICAgSU5TTihjdnRwczJwaCwgICAgIDY2LCAwZjNhLCAxZCwgICAgdmxfMiwgZF9uYiwgdmwp LAorICAgIElOU04oY3Z0c2Qyc3MsICAgICBmMiwgICAwZiwgNWEsICAgIGVsLCAgICAgIHEsIGVs KSwKKyAgICBJTlNOKGN2dHNzMnNkLCAgICAgZjMsICAgMGYsIDVhLCAgICBlbCwgICAgICBkLCBl bCksCiAgICAgSU5TTl9GUChkaXYsICAgICAgICAgICAgIDBmLCA1ZSksCiAgICAgSU5TTihmbWFk ZDEzMiwgICAgIDY2LCAwZjM4LCA5OCwgICAgdmwsICAgICBzZCwgdmwpLAogICAgIElOU04oZm1h ZGQxMzIsICAgICA2NiwgMGYzOCwgOTksICAgIGVsLCAgICAgc2QsIGVsKSwKLS0tIGEvdG9vbHMv dGVzdHMveDg2X2VtdWxhdG9yL3NpbWQuYworKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3Iv c2ltZC5jCkBAIC0xODEsNyArMTgxLDkgQEAgc3RhdGljIGlubGluZSBib29sIF90b19ib29sKGJ5 dGVfdmVjX3QgYgogIyAgZGVmaW5lIG1heCh4LCB5KSBCUl8obWF4cHMsIF9tYXNrLCB4LCB5LCB1 bmRlZigpLCB+MCkKICMgIGRlZmluZSBtaW4oeCwgeSkgQlJfKG1pbnBzLCBfbWFzaywgeCwgeSwg dW5kZWYoKSwgfjApCiAjICBkZWZpbmUgbWl4KHgsIHkpIEIobW92YXBzLCBfbWFzaywgeCwgeSwg KDBiMDEwMTAxMDEwMTAxMDEwMSAmIEFMTF9UUlVFKSkKKyMgIGRlZmluZSBzaHJpbmsxKHgpIEJS XyhjdnRwZDJwcywgX21hc2ssICh2ZGZfdCkoeCksICh2c2ZfaGFsZl90KXt9LCB+MCkKICMgIGRl ZmluZSBzcXJ0KHgpIEJSKHNxcnRwcywgX21hc2ssIHgsIHVuZGVmKCksIH4wKQorIyAgZGVmaW5l IHdpZGVuMSh4KSAoKHZlY190KUJSKGN2dHBzMnBkLCBfbWFzaywgeCwgKHZkZl90KXVuZGVmKCks IH4wKSkKICMgIGlmIFZFQ19TSVpFID09IDE2CiAjICAgZGVmaW5lIGludGVybGVhdmVfaGkoeCwg eSkgQih1bnBja2hwcywgX21hc2ssIHgsIHksIHVuZGVmKCksIH4wKQogIyAgIGRlZmluZSBpbnRl cmxlYXZlX2xvKHgsIHkpIEIodW5wY2tscHMsIF9tYXNrLCB4LCB5LCB1bmRlZigpLCB+MCkKLS0t IGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3NpbWQuaAorKysgYi90b29scy90ZXN0cy94ODZf ZW11bGF0b3Ivc2ltZC5oCkBAIC02OCw2ICs2OCw3IEBAIHR5cGVkZWYgc2hvcnQgX19hdHRyaWJ1 dGVfXygodmVjdG9yX3NpemUKIHR5cGVkZWYgaW50IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXpl KFZFQ19TSVpFKSkpIHZzaV90OwogI2lmIFZFQ19TSVpFID49IDgKIHR5cGVkZWYgbG9uZyBsb25n IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKFZFQ19TSVpFKSkpIHZkaV90OwordHlwZWRlZiBk b3VibGUgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoVkVDX1NJWkUpKSkgdmRmX3Q7CiAjZW5k aWYKIAogI2lmIEVMRU1fU0laRSA9PSAxCkBAIC05Myw2ICs5NCw3IEBAIHR5cGVkZWYgY2hhciBf X2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgKIHR5cGVkZWYgc2hvcnQgX19hdHRyaWJ1dGVfXygo dmVjdG9yX3NpemUoSEFMRl9TSVpFKSkpIHZoaV9oYWxmX3Q7CiB0eXBlZGVmIGludCBfX2F0dHJp YnV0ZV9fKCh2ZWN0b3Jfc2l6ZShIQUxGX1NJWkUpKSkgdnNpX2hhbGZfdDsKIHR5cGVkZWYgbG9u ZyBsb25nIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKEhBTEZfU0laRSkpKSB2ZGlfaGFsZl90 OwordHlwZWRlZiBmbG9hdCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShIQUxGX1NJWkUpKSkg dnNmX2hhbGZfdDsKICMgZW5kaWYKIAogIyBpZiBFTEVNX0NPVU5UID49IDQKQEAgLTMyOCw2ICsz MzAsMTMgQEAgUkVOKHBhbmRuLCAsIGQpOwogUkVOKHBvciwgLCBkKTsKIFJFTihweG9yLCAsIGQp OwogIyBlbmRpZgorT1ZSKGN2dHBkMnBzeCk7CitPVlIoY3Z0cGQycHN5KTsKK09WUihjdnRwaDJw cyk7CitPVlIoY3Z0cHMycGQpOworT1ZSKGN2dHBzMnBoKTsKK09WUihjdnRzZDJzcyk7CitPVlIo Y3Z0c3Myc2QpOwogT1ZSKG1vdmRkdXApOwogT1ZSKG1vdm50ZHEpOwogT1ZSKG1vdm50ZHFhKTsK LS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMKKysrIGIv dG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMKQEAgLTM4NDIsNiAr Mzg0Miw0OSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgZWxzZQogICAg ICAgICBwcmludGYoInNraXBwZWRcbiIpOwogCisgICAgcHJpbnRmKCIlLTQwcyIsICJUZXN0aW5n IHZjdnRwaDJwcyAzMiglZWN4KSwlem1tN3slazR9Li4uIik7CisgICAgaWYgKCBzdGFja19leGVj ICYmIGNwdV9oYXNfYXZ4NTEyZiApCisgICAgeworICAgICAgICBkZWNsX2luc24oZXZleF92Y3Z0 cGgycHMpOworICAgICAgICBkZWNsX2luc24oZXZleF92Y3Z0cHMycGgpOworCisgICAgICAgIGFz bSB2b2xhdGlsZSAoICJ2cHRlcm5sb2dkICQweDgxLCAlJXptbTcsICUlem1tNywgJSV6bW03XG5c dCIKKyAgICAgICAgICAgICAgICAgICAgICAgImttb3Z3ICUxLCUlazRcbiIKKyAgICAgICAgICAg ICAgICAgICAgICAgcHV0X2luc24oZXZleF92Y3Z0cGgycHMsICJ2Y3Z0cGgycHMgMzIoJTApLCAl JXptbTcleyUlazQlfSIpCisgICAgICAgICAgICAgICAgICAgICAgIDo6ICJjIiAoTlVMTCksICJy IiAoMHgzMzMzKSApOworCisgICAgICAgIHNldF9pbnNuKGV2ZXhfdmN2dHBoMnBzKTsKKyAgICAg ICAgbWVtc2V0KHJlcywgMHhmZiwgMTI4KTsKKyAgICAgICAgcmVzWzhdID0gMHg0MDAwM2MwMDsg LyogKDEuMCwgMi4wKSAqLworICAgICAgICByZXNbMTBdID0gMHg0NDAwNDIwMDsgLyogKDMuMCwg NC4wKSAqLworICAgICAgICByZXNbMTJdID0gMHgzNDAwYjgwMDsgLyogKC0uNSwgLjI1KSAqLwor ICAgICAgICByZXNbMTRdID0gMHhiYzAwMDAwMDsgLyogKDAuMCwgLTEuKSAqLworICAgICAgICBy ZWdzLmVjeCA9ICh1bnNpZ25lZCBsb25nKXJlczsKKyAgICAgICAgcmMgPSB4ODZfZW11bGF0ZSgm Y3R4dCwgJmVtdWxvcHMpOworICAgICAgICBhc20gdm9sYXRpbGUgKCAidm1vdnVwcyAlJXptbTcs ICUwIiA6ICI9bSIgKHJlc1sxNl0pICk7CisgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZ IHx8ICFjaGVja19laXAoZXZleF92Y3Z0cGgycHMpICkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsK KyAgICAgICAgcHJpbnRmKCJva2F5XG4iKTsKKworICAgICAgICBwcmludGYoIiUtNDBzIiwgIlRl c3RpbmcgdmN2dHBzMnBoICQwLCV6bW0zLDY0KCVlZHgpeyVrNH0uLi4iKTsKKyAgICAgICAgYXNt IHZvbGF0aWxlICggInZtb3Z1cHMgJTAsICUlem1tM1xuIgorICAgICAgICAgICAgICAgICAgICAg ICBwdXRfaW5zbihldmV4X3ZjdnRwczJwaCwgInZjdnRwczJwaCAkMCwgJSV6bW0zLCAxMjgoJTEp JXslJWs0JX0iKQorICAgICAgICAgICAgICAgICAgICAgICA6OiAibSIgKHJlc1sxNl0pLCAiZCIg KE5VTEwpICk7CisKKyAgICAgICAgc2V0X2luc24oZXZleF92Y3Z0cHMycGgpOworICAgICAgICBy ZWdzLmVkeCA9ICh1bnNpZ25lZCBsb25nKXJlczsKKyAgICAgICAgbWVtc2V0KHJlcyArIDMyLCAw eGNjLCAzMik7CisgICAgICAgIHJjID0geDg2X2VtdWxhdGUoJmN0eHQsICZlbXVsb3BzKTsKKyAg ICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgfHwgIWNoZWNrX2VpcChldmV4X3ZjdnRwczJw aCkgKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICByZXNbMTVdID0gcmVzWzEzXSA9 IHJlc1sxMV0gPSByZXNbOV0gPSAweGNjY2NjY2NjOworICAgICAgICBpZiAoIG1lbWNtcChyZXMg KyA4LCByZXMgKyAzMiwgMzIpICkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgcHJp bnRmKCJva2F5XG4iKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBwcmludGYoInNraXBwZWRc biIpOworCiAjdW5kZWYgZGVjbF9pbnNuCiAjdW5kZWYgcHV0X2luc24KICN1bmRlZiBzZXRfaW5z bgotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYworKysgYi94ZW4v YXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpAQCAtMzEwLDcgKzMxMCw4IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgdHdvYnl0ZV90YWJsZSB7CiAgICAgWzB4NTIgLi4uIDB4NTNdID0g eyBEc3RJbXBsaWNpdHxTcmNNZW18TW9kUk18VHdvT3AsIHNpbWRfc2luZ2xlX2ZwIH0sCiAgICAg WzB4NTQgLi4uIDB4NTddID0geyBEc3RJbXBsaWNpdHxTcmNNZW18TW9kUk0sIHNpbWRfcGFja2Vk X2ZwLCBkOHNfdmwgfSwKICAgICBbMHg1OCAuLi4gMHg1OV0gPSB7IERzdEltcGxpY2l0fFNyY01l bXxNb2RSTSwgc2ltZF9hbnlfZnAsIGQ4c192bCB9LAotICAgIFsweDVhIC4uLiAweDViXSA9IHsg RHN0SW1wbGljaXR8U3JjTWVtfE1vZFJNfE1vdiwgc2ltZF9vdGhlciB9LAorICAgIFsweDVhXSA9 IHsgRHN0SW1wbGljaXR8U3JjTWVtfE1vZFJNfE1vdiwgc2ltZF9hbnlfZnAsIGQ4c192bCB9LAor ICAgIFsweDViXSA9IHsgRHN0SW1wbGljaXR8U3JjTWVtfE1vZFJNfE1vdiwgc2ltZF9vdGhlciB9 LAogICAgIFsweDVjIC4uLiAweDVmXSA9IHsgRHN0SW1wbGljaXR8U3JjTWVtfE1vZFJNLCBzaW1k X2FueV9mcCwgZDhzX3ZsIH0sCiAgICAgWzB4NjAgLi4uIDB4NjJdID0geyBEc3RJbXBsaWNpdHxT cmNNZW18TW9kUk0sIHNpbWRfb3RoZXIsIGQ4c192bCB9LAogICAgIFsweDYzIC4uLiAweDY3XSA9 IHsgRHN0SW1wbGljaXR8U3JjTWVtfE1vZFJNLCBzaW1kX3BhY2tlZF9pbnQsIGQ4c192bCB9LApA QCAtNDM3LDcgKzQzOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXh0MGYzOF90YWJsZSB7CiAg ICAgWzB4MGMgLi4uIDB4MGRdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfZnAsIC5kOHMg PSBkOHNfdmwgfSwKICAgICBbMHgwZSAuLi4gMHgwZl0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3Bh Y2tlZF9mcCB9LAogICAgIFsweDEwIC4uLiAweDEyXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFj a2VkX2ludCwgLmQ4cyA9IGQ4c192bCB9LAotICAgIFsweDEzXSA9IHsgLnNpbWRfc2l6ZSA9IHNp bWRfb3RoZXIsIC50d29fb3AgPSAxIH0sCisgICAgWzB4MTNdID0geyAuc2ltZF9zaXplID0gc2lt ZF9vdGhlciwgLnR3b19vcCA9IDEsIC5kOHMgPSBkOHNfdmxfYnlfMiB9LAogICAgIFsweDE0IC4u LiAweDE2XSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ZwLCAuZDhzID0gZDhzX3ZsIH0s CiAgICAgWzB4MTddID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfaW50LCAudHdvX29wID0g MSB9LAogICAgIFsweDE4XSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfc2NhbGFyX29wYywgLnR3b19v cCA9IDEsIC5kOHMgPSAyIH0sCkBAIC01NDEsNyArNTQyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBleHQwZjNhX3RhYmxlIHsKICAgICBbMHgxOV0gPSB7IC5zaW1kX3NpemUgPSBzaW1kXzEyOCwg LnRvX21lbSA9IDEsIC50d29fb3AgPSAxLCAuZDhzID0gNCB9LAogICAgIFsweDFhXSA9IHsgLnNp bWRfc2l6ZSA9IHNpbWRfMjU2LCAuZDhzID0gZDhzX3ZsX2J5XzIgfSwKICAgICBbMHgxYl0gPSB7 IC5zaW1kX3NpemUgPSBzaW1kXzI1NiwgLnRvX21lbSA9IDEsIC50d29fb3AgPSAxLCAuZDhzID0g ZDhzX3ZsX2J5XzIgfSwKLSAgICBbMHgxZF0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX290aGVyLCAu dG9fbWVtID0gMSwgLnR3b19vcCA9IDEgfSwKKyAgICBbMHgxZF0gPSB7IC5zaW1kX3NpemUgPSBz aW1kX290aGVyLCAudG9fbWVtID0gMSwgLnR3b19vcCA9IDEsIC5kOHMgPSBkOHNfdmxfYnlfMiB9 LAogICAgIFsweDFlIC4uLiAweDFmXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ludCwg LmQ4cyA9IGQ4c192bCB9LAogICAgIFsweDIwXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfbm9uZSwg LmQ4cyA9IDAgfSwKICAgICBbMHgyMV0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX290aGVyLCAuZDhz ID0gMiB9LApAQCAtMzA2Niw2ICszMDY3LDExIEBAIHg4Nl9kZWNvZGUoCiAgICAgICAgICAgICAg ICAgbW9kcm1fbW9kID0gMzsKICAgICAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAg Y2FzZSAweDVhOiAvKiB2Y3Z0cHMycGQgbmVlZHMgc3BlY2lhbCBjYXNpbmcgKi8KKyAgICAgICAg ICAgICAgICBpZiAoIGRpc3A4c2NhbGUgJiYgIWV2ZXgucGZ4ICYmICFldmV4LmJyICkKKyAgICAg ICAgICAgICAgICAgICAgLS1kaXNwOHNjYWxlOworICAgICAgICAgICAgICAgIGJyZWFrOworCiAg ICAgICAgICAgICBjYXNlIDB4N2U6IC8qIHZtb3ZxIHhtbS9tNjQseG1tIG5lZWRzIHNwZWNpYWwg Y2FzaW5nICovCiAgICAgICAgICAgICAgICAgaWYgKCBkaXNwOHNjYWxlID09IDIgJiYgZXZleC5w ZnggPT0gdmV4X2YzICkKICAgICAgICAgICAgICAgICAgICAgZGlzcDhzY2FsZSA9IDM7CkBAIC01 OTc0LDYgKzU5ODAsNyBAQCB4ODZfZW11bGF0ZSgKICAgICBDQVNFX1NJTURfQUxMX0ZQKF9FVkVY LCAweDBmLCAweDVkKTogICAgLyogdm1pbntwLHN9e3MsZH0gW3h5el1tbS9tZW0sW3h5el1tbSxb eHl6XW1te2t9ICovCiAgICAgQ0FTRV9TSU1EX0FMTF9GUChfRVZFWCwgMHgwZiwgMHg1ZSk6ICAg IC8qIHZkaXZ7cCxzfXtzLGR9IFt4eXpdbW0vbWVtLFt4eXpdbW0sW3h5el1tbXtrfSAqLwogICAg IENBU0VfU0lNRF9BTExfRlAoX0VWRVgsIDB4MGYsIDB4NWYpOiAgICAvKiB2bWF4e3Asc317cyxk fSBbeHl6XW1tL21lbSxbeHl6XW1tLFt4eXpdbW17a30gKi8KKyAgICBhdng1MTJmX2FsbF9mcDoK ICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKChldmV4LncgIT0gKGV2ZXgucGZ4ICYgVkVY X1BSRUZJWF9ET1VCTEVfTUFTSykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZWEudHlwZSA9PSBPUF9NRU0gJiYgZXZleC5iciAmJgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZXZleC5wZnggJiBWRVhfUFJFRklYX1NDQUxBUl9NQVNLKSkpLApAQCAtNjUzMCw3 ICs2NTM3LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGdvdG8gc2ltZF96bW07CiAKICAgICBD QVNFX1NJTURfQUxMX0ZQKCwgMHgwZiwgMHg1YSk6ICAgICAgICAvKiBjdnR7cCxzfXtzLGR9Mntw LHN9e3MsZH0geG1tL21lbSx4bW0gKi8KLSAgICBDQVNFX1NJTURfQUxMX0ZQKF9WRVgsIDB4MGYs IDB4NWEpOiAgICAvKiB2Y3Z0cHtzLGR9MnB7cyxkfSB4bW0vbWVtLHhtbSAqLworICAgIENBU0Vf U0lNRF9BTExfRlAoX1ZFWCwgMHgwZiwgMHg1YSk6ICAgIC8qIHZjdnRwe3MsZH0ycHtzLGR9IHt4 LHl9bW0vbWVtLHt4LHl9bW0gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiB2Y3Z0c3tzLGR9MnN7cyxkfSB4bW0vbWVtLHhtbSx4bW0gKi8KICAgICAgICAg b3BfYnl0ZXMgPSA0IDw8ICgoKHZleC5wZnggJiBWRVhfUFJFRklYX1NDQUxBUl9NQVNLKSA/IDAg OiAxICsgdmV4LmwpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAhISh2ZXgucGZ4ICYgVkVY X1BSRUZJWF9ET1VCTEVfTUFTSykpOwpAQCAtNjUzOSw2ICs2NTQ2LDEyIEBAIHg4Nl9lbXVsYXRl KAogICAgICAgICAgICAgZ290byBzaW1kXzBmX3NzZTI7CiAgICAgICAgIGdvdG8gc2ltZF8wZl9h dng7CiAKKyAgICBDQVNFX1NJTURfQUxMX0ZQKF9FVkVYLCAweDBmLCAweDVhKTogICAvKiB2Y3Z0 cHtzLGR9MnB7cyxkfSBbeHl6XW1tL21lbSxbeHl6XW1te2t9ICovCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdmN2dHN7cyxkfTJze3MsZH0geG1tL21lbSx4 bW0seG1te2t9ICovCisgICAgICAgIG9wX2J5dGVzID0gNCA8PCAoKChldmV4LnBmeCAmIFZFWF9Q UkVGSVhfU0NBTEFSX01BU0spID8gMCA6IDEgKyBldmV4LmxyKSArCisgICAgICAgICAgICAgICAg ICAgICAgICAgZXZleC53KTsKKyAgICAgICAgZ290byBhdng1MTJmX2FsbF9mcDsKKwogICAgIENB U0VfU0lNRF9QQUNLRURfRlAoLCAweDBmLCAweDViKTogICAgIC8qIGN2dHtwcyxkcX0ye2RxLHBz fSB4bW0vbWVtLHhtbSAqLwogICAgIENBU0VfU0lNRF9QQUNLRURfRlAoX1ZFWCwgMHgwZiwgMHg1 Yik6IC8qIHZjdnR7cHMsZHF9MntkcSxwc30ge3gseX1tbS9tZW0se3gseX1tbSAqLwogICAgIGNh c2UgWDg2RU1VTF9PUENfRjMoMHgwZiwgMHg1Yik6ICAgICAgIC8qIGN2dHRwczJkcSB4bW0vbWVt LHhtbSAqLwpAQCAtODQyMCw2ICs4NDMzLDE1IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBvcF9i eXRlcyA9IDggPDwgdmV4Lmw7CiAgICAgICAgIGdvdG8gc2ltZF8wZl95bW07CiAKKyAgICBjYXNl IFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDEzKTogLyogdmN2dHBoMnBzIHt4LHl9bW0v bWVtLFt4eXpdbW17a30gKi8KKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKGV2ZXgudyB8 fCAoZWEudHlwZSA9PSBPUF9NRU0gJiYgZXZleC5iciksIEVYQ19VRCk7CisgICAgICAgIGhvc3Rf YW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmYpOworICAgICAgICBpZiAoICFldmV4LmJyICkKKyAg ICAgICAgICAgIGF2eDUxMl92bGVuX2NoZWNrKGZhbHNlKTsKKyAgICAgICAgb3BfYnl0ZXMgPSA4 IDw8IGV2ZXgubHI7CisgICAgICAgIGVsZW1fYnl0ZXMgPSAyOworICAgICAgICBnb3RvIHNpbWRf em1tOworCiAgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZjM4LCAweDE2KTogLyogdnBl cm1wcyB5bW0vbTI1Nix5bW0seW1tICovCiAgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgw ZjM4LCAweDM2KTogLyogdnBlcm1kIHltbS9tMjU2LHltbSx5bW0gKi8KICAgICAgICAgZ2VuZXJh dGVfZXhjZXB0aW9uX2lmKCF2ZXgubCB8fCB2ZXgudywgRVhDX1VEKTsKQEAgLTkyNDMsMjcgKzky NjUsNzkgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGdvdG8gYXZ4NTEyZl9pbW04X25vX3NhZTsK IAogICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzYSwgMHgxZCk6IC8qIHZjdnRwczJw aCAkaW1tOCx7eCx5fW1tLHhtbS9tZW0gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYo MHgwZjNhLCAweDFkKTogLyogdmN2dHBzMnBoICRpbW04LFt4eXpdbW0se3gseX1tbS9tZW17a30g Ki8KICAgICB7CiAgICAgICAgIHVpbnQzMl90IG14Y3NyOwogCi0gICAgICAgIGdlbmVyYXRlX2V4 Y2VwdGlvbl9pZih2ZXgudyB8fCB2ZXgucmVnICE9IDB4ZiwgRVhDX1VEKTsKLSAgICAgICAgaG9z dF9hbmRfdmNwdV9tdXN0X2hhdmUoZjE2Yyk7CiAgICAgICAgIGZhaWxfaWYoIW9wcy0+d3JpdGUp OworICAgICAgICBpZiAoIGV2ZXhfZW5jb2RlZCgpICkKKyAgICAgICAgeworICAgICAgICAgICAg Z2VuZXJhdGVfZXhjZXB0aW9uX2lmKChldmV4LncgfHwgZXZleC5yZWcgIT0gMHhmIHx8ICFldmV4 LlJYIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlYS50eXBlID09IE9Q X01FTSAmJiAoZXZleC56IHx8IGV2ZXguYnIpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRVhDX1VEKTsKKyAgICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2 eDUxMmYpOworICAgICAgICAgICAgYXZ4NTEyX3ZsZW5fY2hlY2soZmFsc2UpOworICAgICAgICAg ICAgb3BjID0gaW5pdF9ldmV4KHN0dWIpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg ICAgeworICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC53IHx8IHZleC5yZWcg IT0gMHhmLCBFWENfVUQpOworICAgICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoZjE2 Yyk7CisgICAgICAgICAgICBvcGMgPSBpbml0X3ByZWZpeGVzKHN0dWIpOworICAgICAgICB9CisK KyAgICAgICAgb3BfYnl0ZXMgPSA4IDw8IGV2ZXgubHI7CiAKLSAgICAgICAgb3BjID0gaW5pdF9w cmVmaXhlcyhzdHViKTsKICAgICAgICAgb3BjWzBdID0gYjsKICAgICAgICAgb3BjWzFdID0gbW9k cm07CiAgICAgICAgIGlmICggZWEudHlwZSA9PSBPUF9NRU0gKQogICAgICAgICB7CiAgICAgICAg ICAgICAvKiBDb252ZXJ0IG1lbW9yeSBvcGVyYW5kIHRvICglckFYKS4gKi8KICAgICAgICAgICAg IHZleC5iID0gMTsKKyAgICAgICAgICAgIGV2ZXguYiA9IDE7CiAgICAgICAgICAgICBvcGNbMV0g Jj0gMHgzODsKICAgICAgICAgfQogICAgICAgICBvcGNbMl0gPSBpbW0xOwotICAgICAgICBpbnNu X2J5dGVzID0gUEZYX0JZVEVTICsgMzsKKyAgICAgICAgaWYgKCBldmV4X2VuY29kZWQoKSApCisg ICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBmdWxsID0gMDsKKworICAgICAgICAg ICAgaW5zbl9ieXRlcyA9IEVWRVhfUEZYX0JZVEVTICsgMzsKKyAgICAgICAgICAgIGNvcHlfRVZF WChvcGMsIGV2ZXgpOworCisgICAgICAgICAgICBpZiAoIGVhLnR5cGUgPT0gT1BfTUVNICYmIGV2 ZXgub3Btc2sgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZ1bGwgPSAweGZmZmYg Pj4gKDE2IC0gb3BfYnl0ZXMgLyAyKTsKKyAgICAgICAgICAgICAgICBvcF9tYXNrICY9IGZ1bGw7 CisgICAgICAgICAgICAgICAgaWYgKCAhb3BfbWFzayApCisgICAgICAgICAgICAgICAgICAgIGdv dG8gY29tcGxldGVfaW5zbjsKKworICAgICAgICAgICAgICAgIGZpcnN0X2J5dGUgPSBfX2J1aWx0 aW5fY3R6KG9wX21hc2spOworICAgICAgICAgICAgICAgIG9wX21hc2sgPj49IGZpcnN0X2J5dGU7 CisgICAgICAgICAgICAgICAgZnVsbCA+Pj0gZmlyc3RfYnl0ZTsKKyAgICAgICAgICAgICAgICBm aXJzdF9ieXRlIDw8PSAxOworICAgICAgICAgICAgICAgIG9wX2J5dGVzID0gKDMyIC0gX19idWls dGluX2NseihvcF9tYXNrKSkgPDwgMTsKKworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAg ICAgICAgICogV2UgbWF5IG5lZWQgdG8gcmVhZCAocGFydHMgb2YpIHRoZSBtZW1vcnkgb3BlcmFu ZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICogcHVycG9zZSBvZiBtZXJnaW5nIGluIG9yZGVy IHRvIGF2b2lkIHNwbGl0dGluZyB0aGUgd3JpdGUKKyAgICAgICAgICAgICAgICAgKiBiZWxvdyBp bnRvIG11bHRpcGxlIG9uZXMuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAg aWYgKCBvcF9tYXNrICE9IGZ1bGwgJiYKKyAgICAgICAgICAgICAgICAgICAgIChyYyA9IG9wcy0+ cmVhZChlYS5tZW0uc2VnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy dW5jYXRlX2VhKGVhLm1lbS5vZmYgKyBmaXJzdF9ieXRlKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAodm9pZCAqKW1tdmFscCArIGZpcnN0X2J5dGUsIG9wX2J5dGVzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eHQpKSAhPSBYODZFTVVMX09L QVkgKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICB9CisgICAg ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpbnNuX2J5dGVzID0g UEZYX0JZVEVTICsgMzsKKyAgICAgICAgICAgIGNvcHlfVkVYKG9wYywgdmV4KTsKKyAgICAgICAg fQogICAgICAgICBvcGNbM10gPSAweGMzOwogCi0gICAgICAgIGNvcHlfVkVYKG9wYywgdmV4KTsK ICAgICAgICAgLyogTGF0Y2ggTVhDU1IgLSB3ZSBtYXkgbmVlZCB0byByZXN0b3JlIGl0IGJlbG93 LiAqLwogICAgICAgICBpbnZva2Vfc3R1Yigic3RteGNzciAlW214Y3NyXSIsICIiLAogICAgICAg ICAgICAgICAgICAgICAiPW0iICgqbW12YWxwKSwgW214Y3NyXSAiPW0iIChteGNzcikgOiAiYSIg KG1tdmFscCkpOwpAQCAtOTI3Miw3ICs5MzQ2LDggQEAgeDg2X2VtdWxhdGUoCiAKICAgICAgICAg aWYgKCBlYS50eXBlID09IE9QX01FTSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJjID0gb3Bz LT53cml0ZShlYS5tZW0uc2VnLCBlYS5tZW0ub2ZmLCBtbXZhbHAsIDggPDwgdmV4LmwsIGN0eHQp OworICAgICAgICAgICAgcmMgPSBvcHMtPndyaXRlKGVhLm1lbS5zZWcsIHRydW5jYXRlX2VhKGVh Lm1lbS5vZmYgKyBmaXJzdF9ieXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9p ZCAqKW1tdmFscCArIGZpcnN0X2J5dGUsIG9wX2J5dGVzLCBjdHh0KTsKICAgICAgICAgICAgIGlm ICggcmMgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBh c20gdm9sYXRpbGUgKCAibGRteGNzciAlMCIgOjogIm0iIChteGNzcikgKTsKCgoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=