From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v6 19/42] x86emul: support AVX512F floating-point conversion insns Date: Thu, 06 Dec 2018 03:00:19 -0700 Message-ID: <5C08F3330200007800203832@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5C08EFAE020000780020373E@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 1gUqSG-0005M3-Nt for xen-devel@lists.xenproject.org; Thu, 06 Dec 2018 10:00:24 +0000 In-Reply-To: <5C08EFAE020000780020373E@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 biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCnY2OiBSZS1iYXNlIG92ZXIgY2hhbmdl cyBlYXJsaWVyIGluIHRoZSBzZXJpZXMuCnY1OiBSZS1iYXNlIG92ZXIgY2hhbmdlcyBlYXJsaWVy IGluIHRoZSBzZXJpZXMuCnY0OiBOZXcuCgotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3Iv ZXZleC1kaXNwOC5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9ldmV4LWRpc3A4LmMK QEAgLTEwOSw2ICsxMDksMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXN0IGF2eDUxMmZfYWxs W10gPQogICAgIElOU05fRlAoY21wLCAgICAgICAgICAgICAwZiwgYzIpLAogICAgIElOU04oY29t aXNkLCAgICAgICA2NiwgICAwZiwgMmYsICAgIGVsLCAgICAgIHEsIGVsKSwKICAgICBJTlNOKGNv bWlzcywgICAgICAgICAsICAgMGYsIDJmLCAgICBlbCwgICAgICBkLCBlbCksCisgICAgSU5TTihj dnRwZDJwcywgICAgIDY2LCAgIDBmLCA1YSwgICAgdmwsICAgICAgcSwgdmwpLAorICAgIElOU04o Y3Z0cGgycHMsICAgICA2NiwgMGYzOCwgMTMsICAgIHZsXzIsIGRfbmIsIHZsKSwKKyAgICBJTlNO KGN2dHBzMnBkLCAgICAgICAsICAgMGYsIDVhLCAgICB2bF8yLCAgICBkLCB2bCksCisgICAgSU5T TihjdnRwczJwaCwgICAgIDY2LCAwZjNhLCAxZCwgICAgdmxfMiwgZF9uYiwgdmwpLAorICAgIElO U04oY3Z0c2Qyc3MsICAgICBmMiwgICAwZiwgNWEsICAgIGVsLCAgICAgIHEsIGVsKSwKKyAgICBJ TlNOKGN2dHNzMnNkLCAgICAgZjMsICAgMGYsIDVhLCAgICBlbCwgICAgICBkLCBlbCksCiAgICAg SU5TTl9GUChkaXYsICAgICAgICAgICAgIDBmLCA1ZSksCiAgICAgSU5TTihmbWFkZDEzMiwgICAg IDY2LCAwZjM4LCA5OCwgICAgdmwsICAgICBzZCwgdmwpLAogICAgIElOU04oZm1hZGQxMzIsICAg ICA2NiwgMGYzOCwgOTksICAgIGVsLCAgICAgc2QsIGVsKSwKLS0tIGEvdG9vbHMvdGVzdHMveDg2 X2VtdWxhdG9yL3NpbWQuYworKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3Ivc2ltZC5jCkBA IC0xODEsNyArMTgxLDkgQEAgc3RhdGljIGlubGluZSBib29sIF90b19ib29sKGJ5dGVfdmVjX3Qg YgogIyAgZGVmaW5lIG1heCh4LCB5KSBCUl8obWF4cHMsIF9tYXNrLCB4LCB5LCB1bmRlZigpLCB+ MCkKICMgIGRlZmluZSBtaW4oeCwgeSkgQlJfKG1pbnBzLCBfbWFzaywgeCwgeSwgdW5kZWYoKSwg fjApCiAjICBkZWZpbmUgbWl4KHgsIHkpIEIobW92YXBzLCBfbWFzaywgeCwgeSwgKDBiMDEwMTAx MDEwMTAxMDEwMSAmIEFMTF9UUlVFKSkKKyMgIGRlZmluZSBzaHJpbmsxKHgpIEJSXyhjdnRwZDJw cywgX21hc2ssICh2ZGZfdCkoeCksICh2c2ZfaGFsZl90KXt9LCB+MCkKICMgIGRlZmluZSBzcXJ0 KHgpIEJSKHNxcnRwcywgX21hc2ssIHgsIHVuZGVmKCksIH4wKQorIyAgZGVmaW5lIHdpZGVuMSh4 KSAoKHZlY190KUJSKGN2dHBzMnBkLCBfbWFzaywgeCwgKHZkZl90KXVuZGVmKCksIH4wKSkKICMg IGlmIFZFQ19TSVpFID09IDE2CiAjICAgZGVmaW5lIGludGVybGVhdmVfaGkoeCwgeSkgQih1bnBj a2hwcywgX21hc2ssIHgsIHksIHVuZGVmKCksIH4wKQogIyAgIGRlZmluZSBpbnRlcmxlYXZlX2xv KHgsIHkpIEIodW5wY2tscHMsIF9tYXNrLCB4LCB5LCB1bmRlZigpLCB+MCkKLS0tIGEvdG9vbHMv dGVzdHMveDg2X2VtdWxhdG9yL3NpbWQuaAorKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3Iv c2ltZC5oCkBAIC02OCw2ICs2OCw3IEBAIHR5cGVkZWYgc2hvcnQgX19hdHRyaWJ1dGVfXygodmVj dG9yX3NpemUKIHR5cGVkZWYgaW50IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKFZFQ19TSVpF KSkpIHZzaV90OwogI2lmIFZFQ19TSVpFID49IDgKIHR5cGVkZWYgbG9uZyBsb25nIF9fYXR0cmli dXRlX18oKHZlY3Rvcl9zaXplKFZFQ19TSVpFKSkpIHZkaV90OwordHlwZWRlZiBkb3VibGUgX19h dHRyaWJ1dGVfXygodmVjdG9yX3NpemUoVkVDX1NJWkUpKSkgdmRmX3Q7CiAjZW5kaWYKIAogI2lm IEVMRU1fU0laRSA9PSAxCkBAIC05Myw2ICs5NCw3IEBAIHR5cGVkZWYgY2hhciBfX2F0dHJpYnV0 ZV9fKCh2ZWN0b3Jfc2l6ZSgKIHR5cGVkZWYgc2hvcnQgX19hdHRyaWJ1dGVfXygodmVjdG9yX3Np emUoSEFMRl9TSVpFKSkpIHZoaV9oYWxmX3Q7CiB0eXBlZGVmIGludCBfX2F0dHJpYnV0ZV9fKCh2 ZWN0b3Jfc2l6ZShIQUxGX1NJWkUpKSkgdnNpX2hhbGZfdDsKIHR5cGVkZWYgbG9uZyBsb25nIF9f YXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKEhBTEZfU0laRSkpKSB2ZGlfaGFsZl90OwordHlwZWRl ZiBmbG9hdCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShIQUxGX1NJWkUpKSkgdnNmX2hhbGZf dDsKICMgZW5kaWYKIAogIyBpZiBFTEVNX0NPVU5UID49IDQKQEAgLTMyOCw2ICszMzAsMTMgQEAg UkVOKHBhbmRuLCAsIGQpOwogUkVOKHBvciwgLCBkKTsKIFJFTihweG9yLCAsIGQpOwogIyAgZW5k aWYKK09WUihjdnRwZDJwc3gpOworT1ZSKGN2dHBkMnBzeSk7CitPVlIoY3Z0cGgycHMpOworT1ZS KGN2dHBzMnBkKTsKK09WUihjdnRwczJwaCk7CitPVlIoY3Z0c2Qyc3MpOworT1ZSKGN2dHNzMnNk KTsKIE9WUihtb3ZkZHVwKTsKIE9WUihtb3ZudGRxKTsKIE9WUihtb3ZudGRxYSk7Ci0tLSBhL3Rv b2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCisrKyBiL3Rvb2xzL3Rl c3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCkBAIC0zODQyLDYgKzM4NDIsNDkg QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgIGVsc2UKICAgICAgICAgcHJp bnRmKCJza2lwcGVkXG4iKTsKIAorICAgIHByaW50ZigiJS00MHMiLCAiVGVzdGluZyB2Y3Z0cGgy cHMgMzIoJWVjeCksJXptbTd7JWs0fS4uLiIpOworICAgIGlmICggc3RhY2tfZXhlYyAmJiBjcHVf aGFzX2F2eDUxMmYgKQorICAgIHsKKyAgICAgICAgZGVjbF9pbnNuKGV2ZXhfdmN2dHBoMnBzKTsK KyAgICAgICAgZGVjbF9pbnNuKGV2ZXhfdmN2dHBzMnBoKTsKKworICAgICAgICBhc20gdm9sYXRp bGUgKCAidnB0ZXJubG9nZCAkMHg4MSwgJSV6bW03LCAlJXptbTcsICUlem1tN1xuXHQiCisgICAg ICAgICAgICAgICAgICAgICAgICJrbW92dyAlMSwlJWs0XG4iCisgICAgICAgICAgICAgICAgICAg ICAgIHB1dF9pbnNuKGV2ZXhfdmN2dHBoMnBzLCAidmN2dHBoMnBzIDMyKCUwKSwgJSV6bW03JXsl JWs0JX0iKQorICAgICAgICAgICAgICAgICAgICAgICA6OiAiYyIgKE5VTEwpLCAiciIgKDB4MzMz MykgKTsKKworICAgICAgICBzZXRfaW5zbihldmV4X3ZjdnRwaDJwcyk7CisgICAgICAgIG1lbXNl dChyZXMsIDB4ZmYsIDEyOCk7CisgICAgICAgIHJlc1s4XSA9IDB4NDAwMDNjMDA7IC8qICgxLjAs IDIuMCkgKi8KKyAgICAgICAgcmVzWzEwXSA9IDB4NDQwMDQyMDA7IC8qICgzLjAsIDQuMCkgKi8K KyAgICAgICAgcmVzWzEyXSA9IDB4MzQwMGI4MDA7IC8qICgtLjUsIC4yNSkgKi8KKyAgICAgICAg cmVzWzE0XSA9IDB4YmMwMDAwMDA7IC8qICgwLjAsIC0xLikgKi8KKyAgICAgICAgcmVncy5lY3gg PSAodW5zaWduZWQgbG9uZylyZXM7CisgICAgICAgIHJjID0geDg2X2VtdWxhdGUoJmN0eHQsICZl bXVsb3BzKTsKKyAgICAgICAgYXNtIHZvbGF0aWxlICggInZtb3Z1cHMgJSV6bW03LCAlMCIgOiAi PW0iIChyZXNbMTZdKSApOworICAgICAgICBpZiAoIHJjICE9IFg4NkVNVUxfT0tBWSB8fCAhY2hl Y2tfZWlwKGV2ZXhfdmN2dHBoMnBzKSApCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAg IHByaW50Zigib2theVxuIik7CisKKyAgICAgICAgcHJpbnRmKCIlLTQwcyIsICJUZXN0aW5nIHZj dnRwczJwaCAkMCwlem1tMyw2NCglZWR4KXslazR9Li4uIik7CisgICAgICAgIGFzbSB2b2xhdGls ZSAoICJ2bW92dXBzICUwLCAlJXptbTNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgcHV0X2lu c24oZXZleF92Y3Z0cHMycGgsICJ2Y3Z0cHMycGggJDAsICUlem1tMywgMTI4KCUxKSV7JSVrNCV9 IikKKyAgICAgICAgICAgICAgICAgICAgICAgOjogIm0iIChyZXNbMTZdKSwgImQiIChOVUxMKSAp OworCisgICAgICAgIHNldF9pbnNuKGV2ZXhfdmN2dHBzMnBoKTsKKyAgICAgICAgcmVncy5lZHgg PSAodW5zaWduZWQgbG9uZylyZXM7CisgICAgICAgIG1lbXNldChyZXMgKyAzMiwgMHhjYywgMzIp OworICAgICAgICByYyA9IHg4Nl9lbXVsYXRlKCZjdHh0LCAmZW11bG9wcyk7CisgICAgICAgIGlm ICggcmMgIT0gWDg2RU1VTF9PS0FZIHx8ICFjaGVja19laXAoZXZleF92Y3Z0cHMycGgpICkKKyAg ICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgcmVzWzE1XSA9IHJlc1sxM10gPSByZXNbMTFd ID0gcmVzWzldID0gMHhjY2NjY2NjYzsKKyAgICAgICAgaWYgKCBtZW1jbXAocmVzICsgOCwgcmVz ICsgMzIsIDMyKSApCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIHByaW50Zigib2th eVxuIik7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcHJpbnRmKCJza2lwcGVkXG4iKTsKKwog I3VuZGVmIGRlY2xfaW5zbgogI3VuZGVmIHB1dF9pbnNuCiAjdW5kZWYgc2V0X2luc24KLS0tIGEv eGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2 L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKQEAgLTMxMCw3ICszMTAsOCBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHR3b2J5dGVfdGFibGUgewogICAgIFsweDUyIC4uLiAweDUzXSA9IHsgRHN0SW1w bGljaXR8U3JjTWVtfE1vZFJNfFR3b09wLCBzaW1kX3NpbmdsZV9mcCB9LAogICAgIFsweDU0IC4u LiAweDU3XSA9IHsgRHN0SW1wbGljaXR8U3JjTWVtfE1vZFJNLCBzaW1kX3BhY2tlZF9mcCwgZDhz X3ZsIH0sCiAgICAgWzB4NTggLi4uIDB4NTldID0geyBEc3RJbXBsaWNpdHxTcmNNZW18TW9kUk0s IHNpbWRfYW55X2ZwLCBkOHNfdmwgfSwKLSAgICBbMHg1YSAuLi4gMHg1Yl0gPSB7IERzdEltcGxp Y2l0fFNyY01lbXxNb2RSTXxNb3YsIHNpbWRfb3RoZXIgfSwKKyAgICBbMHg1YV0gPSB7IERzdElt cGxpY2l0fFNyY01lbXxNb2RSTXxNb3YsIHNpbWRfYW55X2ZwLCBkOHNfdmwgfSwKKyAgICBbMHg1 Yl0gPSB7IERzdEltcGxpY2l0fFNyY01lbXxNb2RSTXxNb3YsIHNpbWRfb3RoZXIgfSwKICAgICBb MHg1YyAuLi4gMHg1Zl0gPSB7IERzdEltcGxpY2l0fFNyY01lbXxNb2RSTSwgc2ltZF9hbnlfZnAs IGQ4c192bCB9LAogICAgIFsweDYwIC4uLiAweDYyXSA9IHsgRHN0SW1wbGljaXR8U3JjTWVtfE1v ZFJNLCBzaW1kX290aGVyLCBkOHNfdmwgfSwKICAgICBbMHg2MyAuLi4gMHg2N10gPSB7IERzdElt cGxpY2l0fFNyY01lbXxNb2RSTSwgc2ltZF9wYWNrZWRfaW50LCBkOHNfdmwgfSwKQEAgLTQzNyw3 ICs0MzgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV4dDBmMzhfdGFibGUgewogICAgIFsweDBj IC4uLiAweDBkXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ZwLCAuZDhzID0gZDhzX3Zs IH0sCiAgICAgWzB4MGUgLi4uIDB4MGZdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfZnAg fSwKICAgICBbMHgxMCAuLi4gMHgxMl0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQs IC5kOHMgPSBkOHNfdmwgfSwKLSAgICBbMHgxM10gPSB7IC5zaW1kX3NpemUgPSBzaW1kX290aGVy LCAudHdvX29wID0gMSB9LAorICAgIFsweDEzXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXIs IC50d29fb3AgPSAxLCAuZDhzID0gZDhzX3ZsX2J5XzIgfSwKICAgICBbMHgxNCAuLi4gMHgxNl0g PSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9mcCwgLmQ4cyA9IGQ4c192bCB9LAogICAgIFsw eDE3XSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ludCwgLnR3b19vcCA9IDEgfSwKICAg ICBbMHgxOF0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3NjYWxhcl9vcGMsIC50d29fb3AgPSAxLCAu ZDhzID0gMiB9LApAQCAtNTQxLDcgKzU0Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXh0MGYz YV90YWJsZSB7CiAgICAgWzB4MTldID0geyAuc2ltZF9zaXplID0gc2ltZF8xMjgsIC50b19tZW0g PSAxLCAudHdvX29wID0gMSwgLmQ4cyA9IDQgfSwKICAgICBbMHgxYV0gPSB7IC5zaW1kX3NpemUg PSBzaW1kXzI1NiwgLmQ4cyA9IGQ4c192bF9ieV8yIH0sCiAgICAgWzB4MWJdID0geyAuc2ltZF9z aXplID0gc2ltZF8yNTYsIC50b19tZW0gPSAxLCAudHdvX29wID0gMSwgLmQ4cyA9IGQ4c192bF9i eV8yIH0sCi0gICAgWzB4MWRdID0geyAuc2ltZF9zaXplID0gc2ltZF9vdGhlciwgLnRvX21lbSA9 IDEsIC50d29fb3AgPSAxIH0sCisgICAgWzB4MWRdID0geyAuc2ltZF9zaXplID0gc2ltZF9vdGhl ciwgLnRvX21lbSA9IDEsIC50d29fb3AgPSAxLCAuZDhzID0gZDhzX3ZsX2J5XzIgfSwKICAgICBb MHgxZSAuLi4gMHgxZl0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQsIC5kOHMgPSBk OHNfdmwgfSwKICAgICBbMHgyMF0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX25vbmUsIC5kOHMgPSAw IH0sCiAgICAgWzB4MjFdID0geyAuc2ltZF9zaXplID0gc2ltZF9vdGhlciwgLmQ4cyA9IDIgfSwK QEAgLTMwNjgsNiArMzA2OSwxMSBAQCB4ODZfZGVjb2RlKAogICAgICAgICAgICAgICAgIG1vZHJt X21vZCA9IDM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICAgIGNhc2UgMHg1 YTogLyogdmN2dHBzMnBkIG5lZWRzIHNwZWNpYWwgY2FzaW5nICovCisgICAgICAgICAgICAgICAg aWYgKCBkaXNwOHNjYWxlICYmICFldmV4LnBmeCAmJiAhZXZleC5iciApCisgICAgICAgICAgICAg ICAgICAgIC0tZGlzcDhzY2FsZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAg ICAgY2FzZSAweDdlOiAvKiB2bW92cSB4bW0vbTY0LHhtbSBuZWVkcyBzcGVjaWFsIGNhc2luZyAq LwogICAgICAgICAgICAgICAgIGlmICggZGlzcDhzY2FsZSA9PSAyICYmIGV2ZXgucGZ4ID09IHZl eF9mMyApCiAgICAgICAgICAgICAgICAgICAgIGRpc3A4c2NhbGUgPSAzOwpAQCAtNTk4Miw2ICs1 OTg4LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgQ0FTRV9TSU1EX0FMTF9GUChfRVZFWCwgMHgwZiwg MHg1ZCk6ICAgIC8qIHZtaW57cCxzfXtzLGR9IFt4eXpdbW0vbWVtLFt4eXpdbW0sW3h5el1tbXtr fSAqLwogICAgIENBU0VfU0lNRF9BTExfRlAoX0VWRVgsIDB4MGYsIDB4NWUpOiAgICAvKiB2ZGl2 e3Asc317cyxkfSBbeHl6XW1tL21lbSxbeHl6XW1tLFt4eXpdbW17a30gKi8KICAgICBDQVNFX1NJ TURfQUxMX0ZQKF9FVkVYLCAweDBmLCAweDVmKTogICAgLyogdm1heHtwLHN9e3MsZH0gW3h5el1t bS9tZW0sW3h5el1tbSxbeHl6XW1te2t9ICovCisgICAgYXZ4NTEyZl9hbGxfZnA6CiAgICAgICAg IGdlbmVyYXRlX2V4Y2VwdGlvbl9pZigoZXZleC53ICE9IChldmV4LnBmeCAmIFZFWF9QUkVGSVhf RE9VQkxFX01BU0spIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVhLnR5cGUg PT0gT1BfTUVNICYmIGV2ZXguYnIgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGV2ZXgucGZ4ICYgVkVYX1BSRUZJWF9TQ0FMQVJfTUFTSykpKSwKQEAgLTY1MzksNyArNjU0Niw3 IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBnb3RvIHNpbWRfem1tOwogCiAgICAgQ0FTRV9TSU1E X0FMTF9GUCgsIDB4MGYsIDB4NWEpOiAgICAgICAgLyogY3Z0e3Asc317cyxkfTJ7cCxzfXtzLGR9 IHhtbS9tZW0seG1tICovCi0gICAgQ0FTRV9TSU1EX0FMTF9GUChfVkVYLCAweDBmLCAweDVhKTog ICAgLyogdmN2dHB7cyxkfTJwe3MsZH0geG1tL21lbSx4bW0gKi8KKyAgICBDQVNFX1NJTURfQUxM X0ZQKF9WRVgsIDB4MGYsIDB4NWEpOiAgICAvKiB2Y3Z0cHtzLGR9MnB7cyxkfSB7eCx5fW1tL21l bSx7eCx5fW1tICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogdmN2dHN7cyxkfTJze3MsZH0geG1tL21lbSx4bW0seG1tICovCiAgICAgICAgIG9wX2J5dGVz ID0gNCA8PCAoKCh2ZXgucGZ4ICYgVkVYX1BSRUZJWF9TQ0FMQVJfTUFTSykgPyAwIDogMSArIHZl eC5sKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgISEodmV4LnBmeCAmIFZFWF9QUkVGSVhf RE9VQkxFX01BU0spKTsKQEAgLTY1NDgsNiArNjU1NSwxMiBAQCB4ODZfZW11bGF0ZSgKICAgICAg ICAgICAgIGdvdG8gc2ltZF8wZl9zc2UyOwogICAgICAgICBnb3RvIHNpbWRfMGZfYXZ4OwogCisg ICAgQ0FTRV9TSU1EX0FMTF9GUChfRVZFWCwgMHgwZiwgMHg1YSk6ICAgLyogdmN2dHB7cyxkfTJw e3MsZH0gW3h5el1tbS9tZW0sW3h5el1tbXtrfSAqLworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIHZjdnRze3MsZH0yc3tzLGR9IHhtbS9tZW0seG1tLHhtbXtr fSAqLworICAgICAgICBvcF9ieXRlcyA9IDQgPDwgKCgoZXZleC5wZnggJiBWRVhfUFJFRklYX1ND QUxBUl9NQVNLKSA/IDAgOiAxICsgZXZleC5scikgKworICAgICAgICAgICAgICAgICAgICAgICAg IGV2ZXgudyk7CisgICAgICAgIGdvdG8gYXZ4NTEyZl9hbGxfZnA7CisKICAgICBDQVNFX1NJTURf UEFDS0VEX0ZQKCwgMHgwZiwgMHg1Yik6ICAgICAvKiBjdnR7cHMsZHF9MntkcSxwc30geG1tL21l bSx4bW0gKi8KICAgICBDQVNFX1NJTURfUEFDS0VEX0ZQKF9WRVgsIDB4MGYsIDB4NWIpOiAvKiB2 Y3Z0e3BzLGRxfTJ7ZHEscHN9IHt4LHl9bW0vbWVtLHt4LHl9bW0gKi8KICAgICBjYXNlIFg4NkVN VUxfT1BDX0YzKDB4MGYsIDB4NWIpOiAgICAgICAvKiBjdnR0cHMyZHEgeG1tL21lbSx4bW0gKi8K QEAgLTg0MzEsNiArODQ0NCwxNSBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgb3BfYnl0ZXMgPSA4 IDw8IHZleC5sOwogICAgICAgICBnb3RvIHNpbWRfMGZfeW1tOwogCisgICAgY2FzZSBYODZFTVVM X09QQ19FVkVYXzY2KDB4MGYzOCwgMHgxMyk6IC8qIHZjdnRwaDJwcyB7eCx5fW1tL21lbSxbeHl6 XW1te2t9ICovCisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihldmV4LncgfHwgKGVhLnR5 cGUgPT0gT1BfTUVNICYmIGV2ZXguYnIpLCBFWENfVUQpOworICAgICAgICBob3N0X2FuZF92Y3B1 X211c3RfaGF2ZShhdng1MTJmKTsKKyAgICAgICAgaWYgKCAhZXZleC5iciApCisgICAgICAgICAg ICBhdng1MTJfdmxlbl9jaGVjayhmYWxzZSk7CisgICAgICAgIG9wX2J5dGVzID0gOCA8PCBldmV4 LmxyOworICAgICAgICBlbGVtX2J5dGVzID0gMjsKKyAgICAgICAgZ290byBzaW1kX3ptbTsKKwog ICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzOCwgMHgxNik6IC8qIHZwZXJtcHMgeW1t L20yNTYseW1tLHltbSAqLwogICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzOCwgMHgz Nik6IC8qIHZwZXJtZCB5bW0vbTI1Nix5bW0seW1tICovCiAgICAgICAgIGdlbmVyYXRlX2V4Y2Vw dGlvbl9pZighdmV4LmwgfHwgdmV4LncsIEVYQ19VRCk7CkBAIC05MjU1LDI3ICs5Mjc3LDc5IEBA IHg4Nl9lbXVsYXRlKAogICAgICAgICBnb3RvIGF2eDUxMmZfaW1tOF9ub19zYWU7CiAKICAgICBj YXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBmM2EsIDB4MWQpOiAvKiB2Y3Z0cHMycGggJGltbTgs e3gseX1tbSx4bW0vbWVtICovCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzYSwg MHgxZCk6IC8qIHZjdnRwczJwaCAkaW1tOCxbeHl6XW1tLHt4LHl9bW0vbWVte2t9ICovCiAgICAg ewogICAgICAgICB1aW50MzJfdCBteGNzcjsKIAotICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25f aWYodmV4LncgfHwgdmV4LnJlZyAhPSAweGYsIEVYQ19VRCk7Ci0gICAgICAgIGhvc3RfYW5kX3Zj cHVfbXVzdF9oYXZlKGYxNmMpOwogICAgICAgICBmYWlsX2lmKCFvcHMtPndyaXRlKTsKKyAgICAg ICAgaWYgKCBldmV4X2VuY29kZWQoKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdlbmVyYXRl X2V4Y2VwdGlvbl9pZigoZXZleC53IHx8IGV2ZXgucmVnICE9IDB4ZiB8fCAhZXZleC5SWCB8fAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWEudHlwZSA9PSBPUF9NRU0gJiYg KGV2ZXgueiB8fCBldmV4LmJyKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVYQ19VRCk7CisgICAgICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJmKTsK KyAgICAgICAgICAgIGF2eDUxMl92bGVuX2NoZWNrKGZhbHNlKTsKKyAgICAgICAgICAgIG9wYyA9 IGluaXRfZXZleChzdHViKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAg ICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZih2ZXgudyB8fCB2ZXgucmVnICE9IDB4Ziwg RVhDX1VEKTsKKyAgICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGYxNmMpOworICAg ICAgICAgICAgb3BjID0gaW5pdF9wcmVmaXhlcyhzdHViKTsKKyAgICAgICAgfQorCisgICAgICAg IG9wX2J5dGVzID0gOCA8PCBldmV4LmxyOwogCi0gICAgICAgIG9wYyA9IGluaXRfcHJlZml4ZXMo c3R1Yik7CiAgICAgICAgIG9wY1swXSA9IGI7CiAgICAgICAgIG9wY1sxXSA9IG1vZHJtOwogICAg ICAgICBpZiAoIGVhLnR5cGUgPT0gT1BfTUVNICkKICAgICAgICAgewogICAgICAgICAgICAgLyog Q29udmVydCBtZW1vcnkgb3BlcmFuZCB0byAoJXJBWCkuICovCiAgICAgICAgICAgICB2ZXguYiA9 IDE7CisgICAgICAgICAgICBldmV4LmIgPSAxOwogICAgICAgICAgICAgb3BjWzFdICY9IDB4Mzg7 CiAgICAgICAgIH0KICAgICAgICAgb3BjWzJdID0gaW1tMTsKLSAgICAgICAgaW5zbl9ieXRlcyA9 IFBGWF9CWVRFUyArIDM7CisgICAgICAgIGlmICggZXZleF9lbmNvZGVkKCkgKQorICAgICAgICB7 CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZnVsbCA9IDA7CisKKyAgICAgICAgICAgIGluc25f Ynl0ZXMgPSBFVkVYX1BGWF9CWVRFUyArIDM7CisgICAgICAgICAgICBjb3B5X0VWRVgob3BjLCBl dmV4KTsKKworICAgICAgICAgICAgaWYgKCBlYS50eXBlID09IE9QX01FTSAmJiBldmV4Lm9wbXNr ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmdWxsID0gMHhmZmZmID4+ICgxNiAt IG9wX2J5dGVzIC8gMik7CisgICAgICAgICAgICAgICAgb3BfbWFzayAmPSBmdWxsOworICAgICAg ICAgICAgICAgIGlmICggIW9wX21hc2sgKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGNvbXBs ZXRlX2luc247CisKKyAgICAgICAgICAgICAgICBmaXJzdF9ieXRlID0gX19idWlsdGluX2N0eihv cF9tYXNrKTsKKyAgICAgICAgICAgICAgICBvcF9tYXNrID4+PSBmaXJzdF9ieXRlOworICAgICAg ICAgICAgICAgIGZ1bGwgPj49IGZpcnN0X2J5dGU7CisgICAgICAgICAgICAgICAgZmlyc3RfYnl0 ZSA8PD0gMTsKKyAgICAgICAgICAgICAgICBvcF9ieXRlcyA9ICgzMiAtIF9fYnVpbHRpbl9jbHoo b3BfbWFzaykpIDw8IDE7CisKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAq IFdlIG1heSBuZWVkIHRvIHJlYWQgKHBhcnRzIG9mKSB0aGUgbWVtb3J5IG9wZXJhbmQgZm9yIHRo ZQorICAgICAgICAgICAgICAgICAqIHB1cnBvc2Ugb2YgbWVyZ2luZyBpbiBvcmRlciB0byBhdm9p ZCBzcGxpdHRpbmcgdGhlIHdyaXRlCisgICAgICAgICAgICAgICAgICogYmVsb3cgaW50byBtdWx0 aXBsZSBvbmVzLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGlmICggb3Bf bWFzayAhPSBmdWxsICYmCisgICAgICAgICAgICAgICAgICAgICAocmMgPSBvcHMtPnJlYWQoZWEu bWVtLnNlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZV9l YShlYS5tZW0ub2ZmICsgZmlyc3RfYnl0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHZvaWQgKiltbXZhbHAgKyBmaXJzdF9ieXRlLCBvcF9ieXRlcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHh0KSkgIT0gWDg2RU1VTF9PS0FZICkKKyAg ICAgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaW5zbl9ieXRlcyA9IFBGWF9CWVRF UyArIDM7CisgICAgICAgICAgICBjb3B5X1ZFWChvcGMsIHZleCk7CisgICAgICAgIH0KICAgICAg ICAgb3BjWzNdID0gMHhjMzsKIAotICAgICAgICBjb3B5X1ZFWChvcGMsIHZleCk7CiAgICAgICAg IC8qIExhdGNoIE1YQ1NSIC0gd2UgbWF5IG5lZWQgdG8gcmVzdG9yZSBpdCBiZWxvdy4gKi8KICAg ICAgICAgaW52b2tlX3N0dWIoInN0bXhjc3IgJVtteGNzcl0iLCAiIiwKICAgICAgICAgICAgICAg ICAgICAgIj1tIiAoKm1tdmFscCksIFtteGNzcl0gIj1tIiAobXhjc3IpIDogImEiIChtbXZhbHAp KTsKQEAgLTkyODQsNyArOTM1OCw4IEBAIHg4Nl9lbXVsYXRlKAogCiAgICAgICAgIGlmICggZWEu dHlwZSA9PSBPUF9NRU0gKQogICAgICAgICB7Ci0gICAgICAgICAgICByYyA9IG9wcy0+d3JpdGUo ZWEubWVtLnNlZywgZWEubWVtLm9mZiwgbW12YWxwLCA4IDw8IHZleC5sLCBjdHh0KTsKKyAgICAg ICAgICAgIHJjID0gb3BzLT53cml0ZShlYS5tZW0uc2VnLCB0cnVuY2F0ZV9lYShlYS5tZW0ub2Zm ICsgZmlyc3RfYnl0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKiltbXZh bHAgKyBmaXJzdF9ieXRlLCBvcF9ieXRlcywgY3R4dCk7CiAgICAgICAgICAgICBpZiAoIHJjICE9 IFg4NkVNVUxfT0tBWSApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgYXNtIHZvbGF0 aWxlICggImxkbXhjc3IgJTAiIDo6ICJtIiAobXhjc3IpICk7CgoKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn L21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs