From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v7 20/49] x86emul: support AVX512F floating-point conversion insns Date: Wed, 19 Dec 2018 07:48:30 -0700 Message-ID: <5C1A5A3E0200007800207952@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5C1A52ED0200007800207865@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gZd9I-0004hm-BO for xen-devel@lists.xenproject.org; Wed, 19 Dec 2018 14:48:36 +0000 In-Reply-To: <5C1A52ED0200007800207865@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 biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCnY3OiBlYS50eXBlID09IE9QXyogLT4g ZWEudHlwZSAhPSBPUF8qLiBSZS1iYXNlLgp2NjogUmUtYmFzZSBvdmVyIGNoYW5nZXMgZWFybGll ciBpbiB0aGUgc2VyaWVzLgp2NTogUmUtYmFzZSBvdmVyIGNoYW5nZXMgZWFybGllciBpbiB0aGUg c2VyaWVzLgp2NDogTmV3LgoKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL2V2ZXgtZGlz cDguYworKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3IvZXZleC1kaXNwOC5jCkBAIC0xMDks NiArMTA5LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJmX2FsbFtdID0KICAg ICBJTlNOX0ZQKGNtcCwgICAgICAgICAgICAgMGYsIGMyKSwKICAgICBJTlNOKGNvbWlzZCwgICAg ICAgNjYsICAgMGYsIDJmLCAgICBlbCwgICAgICBxLCBlbCksCiAgICAgSU5TTihjb21pc3MsICAg ICAgICAgLCAgIDBmLCAyZiwgICAgZWwsICAgICAgZCwgZWwpLAorICAgIElOU04oY3Z0cGQycHMs ICAgICA2NiwgICAwZiwgNWEsICAgIHZsLCAgICAgIHEsIHZsKSwKKyAgICBJTlNOKGN2dHBoMnBz LCAgICAgNjYsIDBmMzgsIDEzLCAgICB2bF8yLCBkX25iLCB2bCksCisgICAgSU5TTihjdnRwczJw ZCwgICAgICAgLCAgIDBmLCA1YSwgICAgdmxfMiwgICAgZCwgdmwpLAorICAgIElOU04oY3Z0cHMy cGgsICAgICA2NiwgMGYzYSwgMWQsICAgIHZsXzIsIGRfbmIsIHZsKSwKKyAgICBJTlNOKGN2dHNk MnNzLCAgICAgZjIsICAgMGYsIDVhLCAgICBlbCwgICAgICBxLCBlbCksCisgICAgSU5TTihjdnRz czJzZCwgICAgIGYzLCAgIDBmLCA1YSwgICAgZWwsICAgICAgZCwgZWwpLAogICAgIElOU05fRlAo ZGl2LCAgICAgICAgICAgICAwZiwgNWUpLAogICAgIElOU04oZm1hZGQxMzIsICAgICA2NiwgMGYz OCwgOTgsICAgIHZsLCAgICAgc2QsIHZsKSwKICAgICBJTlNOKGZtYWRkMTMyLCAgICAgNjYsIDBm MzgsIDk5LCAgICBlbCwgICAgIHNkLCBlbCksCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRv ci9zaW1kLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3NpbWQuYwpAQCAtMTgxLDcg KzE4MSw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBfdG9fYm9vbChieXRlX3ZlY190IGIKICMgIGRl ZmluZSBtYXgoeCwgeSkgQlJfKG1heHBzLCBfbWFzaywgeCwgeSwgdW5kZWYoKSwgfjApCiAjICBk ZWZpbmUgbWluKHgsIHkpIEJSXyhtaW5wcywgX21hc2ssIHgsIHksIHVuZGVmKCksIH4wKQogIyAg ZGVmaW5lIG1peCh4LCB5KSBCKG1vdmFwcywgX21hc2ssIHgsIHksICgwYjAxMDEwMTAxMDEwMTAx MDEgJiBBTExfVFJVRSkpCisjICBkZWZpbmUgc2hyaW5rMSh4KSBCUl8oY3Z0cGQycHMsIF9tYXNr LCAodmRmX3QpKHgpLCAodnNmX2hhbGZfdCl7fSwgfjApCiAjICBkZWZpbmUgc3FydCh4KSBCUihz cXJ0cHMsIF9tYXNrLCB4LCB1bmRlZigpLCB+MCkKKyMgIGRlZmluZSB3aWRlbjEoeCkgKCh2ZWNf dClCUihjdnRwczJwZCwgX21hc2ssIHgsICh2ZGZfdCl1bmRlZigpLCB+MCkpCiAjICBpZiBWRUNf U0laRSA9PSAxNgogIyAgIGRlZmluZSBpbnRlcmxlYXZlX2hpKHgsIHkpIEIodW5wY2tocHMsIF9t YXNrLCB4LCB5LCB1bmRlZigpLCB+MCkKICMgICBkZWZpbmUgaW50ZXJsZWF2ZV9sbyh4LCB5KSBC KHVucGNrbHBzLCBfbWFzaywgeCwgeSwgdW5kZWYoKSwgfjApCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4 Nl9lbXVsYXRvci9zaW1kLmgKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3NpbWQuaApA QCAtNjgsNiArNjgsNyBAQCB0eXBlZGVmIHNob3J0IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXpl CiB0eXBlZGVmIGludCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShWRUNfU0laRSkpKSB2c2lf dDsKICNpZiBWRUNfU0laRSA+PSA4CiB0eXBlZGVmIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKCh2 ZWN0b3Jfc2l6ZShWRUNfU0laRSkpKSB2ZGlfdDsKK3R5cGVkZWYgZG91YmxlIF9fYXR0cmlidXRl X18oKHZlY3Rvcl9zaXplKFZFQ19TSVpFKSkpIHZkZl90OwogI2VuZGlmCiAKICNpZiBFTEVNX1NJ WkUgPT0gMQpAQCAtOTMsNiArOTQsNyBAQCB0eXBlZGVmIGNoYXIgX19hdHRyaWJ1dGVfXygodmVj dG9yX3NpemUoCiB0eXBlZGVmIHNob3J0IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKEhBTEZf U0laRSkpKSB2aGlfaGFsZl90OwogdHlwZWRlZiBpbnQgX19hdHRyaWJ1dGVfXygodmVjdG9yX3Np emUoSEFMRl9TSVpFKSkpIHZzaV9oYWxmX3Q7CiB0eXBlZGVmIGxvbmcgbG9uZyBfX2F0dHJpYnV0 ZV9fKCh2ZWN0b3Jfc2l6ZShIQUxGX1NJWkUpKSkgdmRpX2hhbGZfdDsKK3R5cGVkZWYgZmxvYXQg X19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoSEFMRl9TSVpFKSkpIHZzZl9oYWxmX3Q7CiAjIGVu ZGlmCiAKICMgaWYgRUxFTV9DT1VOVCA+PSA0CkBAIC0zMjgsNiArMzMwLDEzIEBAIFJFTihwYW5k biwgLCBkKTsKIFJFTihwb3IsICwgZCk7CiBSRU4ocHhvciwgLCBkKTsKICMgIGVuZGlmCitPVlIo Y3Z0cGQycHN4KTsKK09WUihjdnRwZDJwc3kpOworT1ZSKGN2dHBoMnBzKTsKK09WUihjdnRwczJw ZCk7CitPVlIoY3Z0cHMycGgpOworT1ZSKGN2dHNkMnNzKTsKK09WUihjdnRzczJzZCk7CiBPVlIo bW92ZGR1cCk7CiBPVlIobW92bnRkcSk7CiBPVlIobW92bnRkcWEpOwotLS0gYS90b29scy90ZXN0 cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYworKysgYi90b29scy90ZXN0cy94ODZf ZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYwpAQCAtMzg3MSw2ICszODcxLDQ5IEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICBlbHNlCiAgICAgICAgIHByaW50Zigic2tp cHBlZFxuIik7CiAKKyAgICBwcmludGYoIiUtNDBzIiwgIlRlc3RpbmcgdmN2dHBoMnBzIDMyKCVl Y3gpLCV6bW03eyVrNH0uLi4iKTsKKyAgICBpZiAoIHN0YWNrX2V4ZWMgJiYgY3B1X2hhc19hdng1 MTJmICkKKyAgICB7CisgICAgICAgIGRlY2xfaW5zbihldmV4X3ZjdnRwaDJwcyk7CisgICAgICAg IGRlY2xfaW5zbihldmV4X3ZjdnRwczJwaCk7CisKKyAgICAgICAgYXNtIHZvbGF0aWxlICggInZw dGVybmxvZ2QgJDB4ODEsICUlem1tNywgJSV6bW03LCAlJXptbTdcblx0IgorICAgICAgICAgICAg ICAgICAgICAgICAia21vdncgJTEsJSVrNFxuIgorICAgICAgICAgICAgICAgICAgICAgICBwdXRf aW5zbihldmV4X3ZjdnRwaDJwcywgInZjdnRwaDJwcyAzMiglMCksICUlem1tNyV7JSVrNCV9IikK KyAgICAgICAgICAgICAgICAgICAgICAgOjogImMiIChOVUxMKSwgInIiICgweDMzMzMpICk7CisK KyAgICAgICAgc2V0X2luc24oZXZleF92Y3Z0cGgycHMpOworICAgICAgICBtZW1zZXQocmVzLCAw eGZmLCAxMjgpOworICAgICAgICByZXNbOF0gPSAweDQwMDAzYzAwOyAvKiAoMS4wLCAyLjApICov CisgICAgICAgIHJlc1sxMF0gPSAweDQ0MDA0MjAwOyAvKiAoMy4wLCA0LjApICovCisgICAgICAg IHJlc1sxMl0gPSAweDM0MDBiODAwOyAvKiAoLS41LCAuMjUpICovCisgICAgICAgIHJlc1sxNF0g PSAweGJjMDAwMDAwOyAvKiAoMC4wLCAtMS4pICovCisgICAgICAgIHJlZ3MuZWN4ID0gKHVuc2ln bmVkIGxvbmcpcmVzOworICAgICAgICByYyA9IHg4Nl9lbXVsYXRlKCZjdHh0LCAmZW11bG9wcyk7 CisgICAgICAgIGFzbSB2b2xhdGlsZSAoICJ2bW92dXBzICUlem1tNywgJTAiIDogIj1tIiAocmVz WzE2XSkgKTsKKyAgICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgfHwgIWNoZWNrX2VpcChl dmV4X3ZjdnRwaDJwcykgKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBwcmludGYo Im9rYXlcbiIpOworCisgICAgICAgIHByaW50ZigiJS00MHMiLCAiVGVzdGluZyB2Y3Z0cHMycGgg JDAsJXptbTMsNjQoJWVkeCl7JWs0fS4uLiIpOworICAgICAgICBhc20gdm9sYXRpbGUgKCAidm1v dnVwcyAlMCwgJSV6bW0zXG4iCisgICAgICAgICAgICAgICAgICAgICAgIHB1dF9pbnNuKGV2ZXhf dmN2dHBzMnBoLCAidmN2dHBzMnBoICQwLCAlJXptbTMsIDEyOCglMSkleyUlazQlfSIpCisgICAg ICAgICAgICAgICAgICAgICAgIDo6ICJtIiAocmVzWzE2XSksICJkIiAoTlVMTCkgKTsKKworICAg ICAgICBzZXRfaW5zbihldmV4X3ZjdnRwczJwaCk7CisgICAgICAgIHJlZ3MuZWR4ID0gKHVuc2ln bmVkIGxvbmcpcmVzOworICAgICAgICBtZW1zZXQocmVzICsgMzIsIDB4Y2MsIDMyKTsKKyAgICAg ICAgcmMgPSB4ODZfZW11bGF0ZSgmY3R4dCwgJmVtdWxvcHMpOworICAgICAgICBpZiAoIHJjICE9 IFg4NkVNVUxfT0tBWSB8fCAhY2hlY2tfZWlwKGV2ZXhfdmN2dHBzMnBoKSApCisgICAgICAgICAg ICBnb3RvIGZhaWw7CisgICAgICAgIHJlc1sxNV0gPSByZXNbMTNdID0gcmVzWzExXSA9IHJlc1s5 XSA9IDB4Y2NjY2NjY2M7CisgICAgICAgIGlmICggbWVtY21wKHJlcyArIDgsIHJlcyArIDMyLCAz MikgKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBwcmludGYoIm9rYXlcbiIpOwor ICAgIH0KKyAgICBlbHNlCisgICAgICAgIHByaW50Zigic2tpcHBlZFxuIik7CisKICN1bmRlZiBk ZWNsX2luc24KICN1bmRlZiBwdXRfaW5zbgogI3VuZGVmIHNldF9pbnNuCi0tLSBhL3hlbi9hcmNo L3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11 bGF0ZS94ODZfZW11bGF0ZS5jCkBAIC0zMTAsNyArMzEwLDggQEAgc3RhdGljIGNvbnN0IHN0cnVj dCB0d29ieXRlX3RhYmxlIHsKICAgICBbMHg1MiAuLi4gMHg1M10gPSB7IERzdEltcGxpY2l0fFNy Y01lbXxNb2RSTXxUd29PcCwgc2ltZF9zaW5nbGVfZnAgfSwKICAgICBbMHg1NCAuLi4gMHg1N10g PSB7IERzdEltcGxpY2l0fFNyY01lbXxNb2RSTSwgc2ltZF9wYWNrZWRfZnAsIGQ4c192bCB9LAog ICAgIFsweDU4IC4uLiAweDU5XSA9IHsgRHN0SW1wbGljaXR8U3JjTWVtfE1vZFJNLCBzaW1kX2Fu eV9mcCwgZDhzX3ZsIH0sCi0gICAgWzB4NWEgLi4uIDB4NWJdID0geyBEc3RJbXBsaWNpdHxTcmNN ZW18TW9kUk18TW92LCBzaW1kX290aGVyIH0sCisgICAgWzB4NWFdID0geyBEc3RJbXBsaWNpdHxT cmNNZW18TW9kUk18TW92LCBzaW1kX2FueV9mcCwgZDhzX3ZsIH0sCisgICAgWzB4NWJdID0geyBE c3RJbXBsaWNpdHxTcmNNZW18TW9kUk18TW92LCBzaW1kX290aGVyIH0sCiAgICAgWzB4NWMgLi4u IDB4NWZdID0geyBEc3RJbXBsaWNpdHxTcmNNZW18TW9kUk0sIHNpbWRfYW55X2ZwLCBkOHNfdmwg fSwKICAgICBbMHg2MCAuLi4gMHg2Ml0gPSB7IERzdEltcGxpY2l0fFNyY01lbXxNb2RSTSwgc2lt ZF9vdGhlciwgZDhzX3ZsIH0sCiAgICAgWzB4NjMgLi4uIDB4NjddID0geyBEc3RJbXBsaWNpdHxT cmNNZW18TW9kUk0sIHNpbWRfcGFja2VkX2ludCwgZDhzX3ZsIH0sCkBAIC00MzcsNyArNDM4LDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBleHQwZjM4X3RhYmxlIHsKICAgICBbMHgwYyAuLi4gMHgw ZF0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9mcCwgLmQ4cyA9IGQ4c192bCB9LAogICAg IFsweDBlIC4uLiAweDBmXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ZwIH0sCiAgICAg WzB4MTAgLi4uIDB4MTJdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfaW50LCAuZDhzID0g ZDhzX3ZsIH0sCi0gICAgWzB4MTNdID0geyAuc2ltZF9zaXplID0gc2ltZF9vdGhlciwgLnR3b19v cCA9IDEgfSwKKyAgICBbMHgxM10gPSB7IC5zaW1kX3NpemUgPSBzaW1kX290aGVyLCAudHdvX29w ID0gMSwgLmQ4cyA9IGQ4c192bF9ieV8yIH0sCiAgICAgWzB4MTQgLi4uIDB4MTZdID0geyAuc2lt ZF9zaXplID0gc2ltZF9wYWNrZWRfZnAsIC5kOHMgPSBkOHNfdmwgfSwKICAgICBbMHgxN10gPSB7 IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQsIC50d29fb3AgPSAxIH0sCiAgICAgWzB4MThd ID0geyAuc2ltZF9zaXplID0gc2ltZF9zY2FsYXJfb3BjLCAudHdvX29wID0gMSwgLmQ4cyA9IDIg fSwKQEAgLTU0MSw3ICs1NDIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV4dDBmM2FfdGFibGUg ewogICAgIFsweDE5XSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfMTI4LCAudG9fbWVtID0gMSwgLnR3 b19vcCA9IDEsIC5kOHMgPSA0IH0sCiAgICAgWzB4MWFdID0geyAuc2ltZF9zaXplID0gc2ltZF8y NTYsIC5kOHMgPSBkOHNfdmxfYnlfMiB9LAogICAgIFsweDFiXSA9IHsgLnNpbWRfc2l6ZSA9IHNp bWRfMjU2LCAudG9fbWVtID0gMSwgLnR3b19vcCA9IDEsIC5kOHMgPSBkOHNfdmxfYnlfMiB9LAot ICAgIFsweDFkXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXIsIC50b19tZW0gPSAxLCAudHdv X29wID0gMSB9LAorICAgIFsweDFkXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXIsIC50b19t ZW0gPSAxLCAudHdvX29wID0gMSwgLmQ4cyA9IGQ4c192bF9ieV8yIH0sCiAgICAgWzB4MWUgLi4u IDB4MWZdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfaW50LCAuZDhzID0gZDhzX3ZsIH0s CiAgICAgWzB4MjBdID0geyAuc2ltZF9zaXplID0gc2ltZF9ub25lLCAuZDhzID0gMCB9LAogICAg IFsweDIxXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXIsIC5kOHMgPSAyIH0sCkBAIC0zMDcx LDYgKzMwNzIsMTEgQEAgeDg2X2RlY29kZSgKICAgICAgICAgICAgICAgICBtb2RybV9tb2QgPSAz OwogICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICBjYXNlIDB4NWE6IC8qIHZj dnRwczJwZCBuZWVkcyBzcGVjaWFsIGNhc2luZyAqLworICAgICAgICAgICAgICAgIGlmICggZGlz cDhzY2FsZSAmJiAhZXZleC5wZnggJiYgIWV2ZXguYnJzICkKKyAgICAgICAgICAgICAgICAgICAg LS1kaXNwOHNjYWxlOworICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNl IDB4N2U6IC8qIHZtb3ZxIHhtbS9tNjQseG1tIG5lZWRzIHNwZWNpYWwgY2FzaW5nICovCiAgICAg ICAgICAgICAgICAgaWYgKCBkaXNwOHNjYWxlID09IDIgJiYgZXZleC5wZnggPT0gdmV4X2YzICkK ICAgICAgICAgICAgICAgICAgICAgZGlzcDhzY2FsZSA9IDM7CkBAIC01OTg4LDYgKzU5OTQsNyBA QCB4ODZfZW11bGF0ZSgKICAgICBDQVNFX1NJTURfQUxMX0ZQKF9FVkVYLCAweDBmLCAweDVkKTog ICAgLyogdm1pbntwLHN9e3MsZH0gW3h5el1tbS9tZW0sW3h5el1tbSxbeHl6XW1te2t9ICovCiAg ICAgQ0FTRV9TSU1EX0FMTF9GUChfRVZFWCwgMHgwZiwgMHg1ZSk6ICAgIC8qIHZkaXZ7cCxzfXtz LGR9IFt4eXpdbW0vbWVtLFt4eXpdbW0sW3h5el1tbXtrfSAqLwogICAgIENBU0VfU0lNRF9BTExf RlAoX0VWRVgsIDB4MGYsIDB4NWYpOiAgICAvKiB2bWF4e3Asc317cyxkfSBbeHl6XW1tL21lbSxb eHl6XW1tLFt4eXpdbW17a30gKi8KKyAgICBhdng1MTJmX2FsbF9mcDoKICAgICAgICAgZ2VuZXJh dGVfZXhjZXB0aW9uX2lmKChldmV4LncgIT0gKGV2ZXgucGZ4ICYgVkVYX1BSRUZJWF9ET1VCTEVf TUFTSykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWEudHlwZSAhPSBPUF9S RUcgJiYgZXZleC5icnMgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZXgu cGZ4ICYgVkVYX1BSRUZJWF9TQ0FMQVJfTUFTSykpKSwKQEAgLTY1NDgsNyArNjU1NSw3IEBAIHg4 Nl9lbXVsYXRlKAogICAgICAgICBnb3RvIHNpbWRfem1tOwogCiAgICAgQ0FTRV9TSU1EX0FMTF9G UCgsIDB4MGYsIDB4NWEpOiAgICAgICAgLyogY3Z0e3Asc317cyxkfTJ7cCxzfXtzLGR9IHhtbS9t ZW0seG1tICovCi0gICAgQ0FTRV9TSU1EX0FMTF9GUChfVkVYLCAweDBmLCAweDVhKTogICAgLyog dmN2dHB7cyxkfTJwe3MsZH0geG1tL21lbSx4bW0gKi8KKyAgICBDQVNFX1NJTURfQUxMX0ZQKF9W RVgsIDB4MGYsIDB4NWEpOiAgICAvKiB2Y3Z0cHtzLGR9MnB7cyxkfSB7eCx5fW1tL21lbSx7eCx5 fW1tICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdmN2 dHN7cyxkfTJze3MsZH0geG1tL21lbSx4bW0seG1tICovCiAgICAgICAgIG9wX2J5dGVzID0gNCA8 PCAoKCh2ZXgucGZ4ICYgVkVYX1BSRUZJWF9TQ0FMQVJfTUFTSykgPyAwIDogMSArIHZleC5sKSAr CiAgICAgICAgICAgICAgICAgICAgICAgICAgISEodmV4LnBmeCAmIFZFWF9QUkVGSVhfRE9VQkxF X01BU0spKTsKQEAgLTY1NTcsNiArNjU2NCwxMiBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAg IGdvdG8gc2ltZF8wZl9zc2UyOwogICAgICAgICBnb3RvIHNpbWRfMGZfYXZ4OwogCisgICAgQ0FT RV9TSU1EX0FMTF9GUChfRVZFWCwgMHgwZiwgMHg1YSk6ICAgLyogdmN2dHB7cyxkfTJwe3MsZH0g W3h5el1tbS9tZW0sW3h5el1tbXtrfSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIHZjdnRze3MsZH0yc3tzLGR9IHhtbS9tZW0seG1tLHhtbXtrfSAqLwor ICAgICAgICBvcF9ieXRlcyA9IDQgPDwgKCgoZXZleC5wZnggJiBWRVhfUFJFRklYX1NDQUxBUl9N QVNLKSA/IDAgOiAxICsgZXZleC5scikgKworICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZXgu dyk7CisgICAgICAgIGdvdG8gYXZ4NTEyZl9hbGxfZnA7CisKICAgICBDQVNFX1NJTURfUEFDS0VE X0ZQKCwgMHgwZiwgMHg1Yik6ICAgICAvKiBjdnR7cHMsZHF9MntkcSxwc30geG1tL21lbSx4bW0g Ki8KICAgICBDQVNFX1NJTURfUEFDS0VEX0ZQKF9WRVgsIDB4MGYsIDB4NWIpOiAvKiB2Y3Z0e3Bz LGRxfTJ7ZHEscHN9IHt4LHl9bW0vbWVtLHt4LHl9bW0gKi8KICAgICBjYXNlIFg4NkVNVUxfT1BD X0YzKDB4MGYsIDB4NWIpOiAgICAgICAvKiBjdnR0cHMyZHEgeG1tL21lbSx4bW0gKi8KQEAgLTg0 NDQsNiArODQ1NywxNSBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgb3BfYnl0ZXMgPSA4IDw8IHZl eC5sOwogICAgICAgICBnb3RvIHNpbWRfMGZfeW1tOwogCisgICAgY2FzZSBYODZFTVVMX09QQ19F VkVYXzY2KDB4MGYzOCwgMHgxMyk6IC8qIHZjdnRwaDJwcyB7eCx5fW1tL21lbSxbeHl6XW1te2t9 ICovCisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihldmV4LncgfHwgKGVhLnR5cGUgIT0g T1BfUkVHICYmIGV2ZXguYnJzKSwgRVhDX1VEKTsKKyAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0 X2hhdmUoYXZ4NTEyZik7CisgICAgICAgIGlmICggIWV2ZXguYnJzICkKKyAgICAgICAgICAgIGF2 eDUxMl92bGVuX2NoZWNrKGZhbHNlKTsKKyAgICAgICAgb3BfYnl0ZXMgPSA4IDw8IGV2ZXgubHI7 CisgICAgICAgIGVsZW1fYnl0ZXMgPSAyOworICAgICAgICBnb3RvIHNpbWRfem1tOworCiAgICAg Y2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZjM4LCAweDE2KTogLyogdnBlcm1wcyB5bW0vbTI1 Nix5bW0seW1tICovCiAgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZjM4LCAweDM2KTog LyogdnBlcm1kIHltbS9tMjU2LHltbSx5bW0gKi8KICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9u X2lmKCF2ZXgubCB8fCB2ZXgudywgRVhDX1VEKTsKQEAgLTkyNzIsMjcgKzkyOTQsNzkgQEAgeDg2 X2VtdWxhdGUoCiAgICAgICAgIGdvdG8gYXZ4NTEyZl9pbW04X25vX3NhZTsKIAogICAgIGNhc2Ug WDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzYSwgMHgxZCk6IC8qIHZjdnRwczJwaCAkaW1tOCx7eCx5 fW1tLHhtbS9tZW0gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjNhLCAweDFk KTogLyogdmN2dHBzMnBoICRpbW04LFt4eXpdbW0se3gseX1tbS9tZW17a30gKi8KICAgICB7CiAg ICAgICAgIHVpbnQzMl90IG14Y3NyOwogCi0gICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZih2 ZXgudyB8fCB2ZXgucmVnICE9IDB4ZiwgRVhDX1VEKTsKLSAgICAgICAgaG9zdF9hbmRfdmNwdV9t dXN0X2hhdmUoZjE2Yyk7CiAgICAgICAgIGZhaWxfaWYoIW9wcy0+d3JpdGUpOworICAgICAgICBp ZiAoIGV2ZXhfZW5jb2RlZCgpICkKKyAgICAgICAgeworICAgICAgICAgICAgZ2VuZXJhdGVfZXhj ZXB0aW9uX2lmKChldmV4LncgfHwgZXZleC5yZWcgIT0gMHhmIHx8ICFldmV4LlJYIHx8CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlYS50eXBlICE9IE9QX1JFRyAmJiAoZXZl eC56IHx8IGV2ZXguYnJzKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVY Q19VRCk7CisgICAgICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJmKTsKKyAg ICAgICAgICAgIGF2eDUxMl92bGVuX2NoZWNrKGZhbHNlKTsKKyAgICAgICAgICAgIG9wYyA9IGlu aXRfZXZleChzdHViKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAg ICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZih2ZXgudyB8fCB2ZXgucmVnICE9IDB4ZiwgRVhD X1VEKTsKKyAgICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGYxNmMpOworICAgICAg ICAgICAgb3BjID0gaW5pdF9wcmVmaXhlcyhzdHViKTsKKyAgICAgICAgfQorCisgICAgICAgIG9w X2J5dGVzID0gOCA8PCBldmV4LmxyOwogCi0gICAgICAgIG9wYyA9IGluaXRfcHJlZml4ZXMoc3R1 Yik7CiAgICAgICAgIG9wY1swXSA9IGI7CiAgICAgICAgIG9wY1sxXSA9IG1vZHJtOwogICAgICAg ICBpZiAoIGVhLnR5cGUgPT0gT1BfTUVNICkKICAgICAgICAgewogICAgICAgICAgICAgLyogQ29u dmVydCBtZW1vcnkgb3BlcmFuZCB0byAoJXJBWCkuICovCiAgICAgICAgICAgICB2ZXguYiA9IDE7 CisgICAgICAgICAgICBldmV4LmIgPSAxOwogICAgICAgICAgICAgb3BjWzFdICY9IDB4Mzg7CiAg ICAgICAgIH0KICAgICAgICAgb3BjWzJdID0gaW1tMTsKLSAgICAgICAgaW5zbl9ieXRlcyA9IFBG WF9CWVRFUyArIDM7CisgICAgICAgIGlmICggZXZleF9lbmNvZGVkKCkgKQorICAgICAgICB7Cisg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZnVsbCA9IDA7CisKKyAgICAgICAgICAgIGluc25fYnl0 ZXMgPSBFVkVYX1BGWF9CWVRFUyArIDM7CisgICAgICAgICAgICBjb3B5X0VWRVgob3BjLCBldmV4 KTsKKworICAgICAgICAgICAgaWYgKCBlYS50eXBlID09IE9QX01FTSAmJiBldmV4Lm9wbXNrICkK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmdWxsID0gMHhmZmZmID4+ICgxNiAtIG9w X2J5dGVzIC8gMik7CisgICAgICAgICAgICAgICAgb3BfbWFzayAmPSBmdWxsOworICAgICAgICAg ICAgICAgIGlmICggIW9wX21hc2sgKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGNvbXBsZXRl X2luc247CisKKyAgICAgICAgICAgICAgICBmaXJzdF9ieXRlID0gX19idWlsdGluX2N0eihvcF9t YXNrKTsKKyAgICAgICAgICAgICAgICBvcF9tYXNrID4+PSBmaXJzdF9ieXRlOworICAgICAgICAg ICAgICAgIGZ1bGwgPj49IGZpcnN0X2J5dGU7CisgICAgICAgICAgICAgICAgZmlyc3RfYnl0ZSA8 PD0gMTsKKyAgICAgICAgICAgICAgICBvcF9ieXRlcyA9ICgzMiAtIF9fYnVpbHRpbl9jbHoob3Bf bWFzaykpIDw8IDE7CisKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFdl IG1heSBuZWVkIHRvIHJlYWQgKHBhcnRzIG9mKSB0aGUgbWVtb3J5IG9wZXJhbmQgZm9yIHRoZQor ICAgICAgICAgICAgICAgICAqIHB1cnBvc2Ugb2YgbWVyZ2luZyBpbiBvcmRlciB0byBhdm9pZCBz cGxpdHRpbmcgdGhlIHdyaXRlCisgICAgICAgICAgICAgICAgICogYmVsb3cgaW50byBtdWx0aXBs ZSBvbmVzLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGlmICggb3BfbWFz ayAhPSBmdWxsICYmCisgICAgICAgICAgICAgICAgICAgICAocmMgPSBvcHMtPnJlYWQoZWEubWVt LnNlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZV9lYShl YS5tZW0ub2ZmICsgZmlyc3RfYnl0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHZvaWQgKiltbXZhbHAgKyBmaXJzdF9ieXRlLCBvcF9ieXRlcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjdHh0KSkgIT0gWDg2RU1VTF9PS0FZICkKKyAgICAg ICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaW5zbl9ieXRlcyA9IFBGWF9CWVRFUyAr IDM7CisgICAgICAgICAgICBjb3B5X1ZFWChvcGMsIHZleCk7CisgICAgICAgIH0KICAgICAgICAg b3BjWzNdID0gMHhjMzsKIAotICAgICAgICBjb3B5X1ZFWChvcGMsIHZleCk7CiAgICAgICAgIC8q IExhdGNoIE1YQ1NSIC0gd2UgbWF5IG5lZWQgdG8gcmVzdG9yZSBpdCBiZWxvdy4gKi8KICAgICAg ICAgaW52b2tlX3N0dWIoInN0bXhjc3IgJVtteGNzcl0iLCAiIiwKICAgICAgICAgICAgICAgICAg ICAgIj1tIiAoKm1tdmFscCksIFtteGNzcl0gIj1tIiAobXhjc3IpIDogImEiIChtbXZhbHApKTsK QEAgLTkzMDEsNyArOTM3NSw4IEBAIHg4Nl9lbXVsYXRlKAogCiAgICAgICAgIGlmICggZWEudHlw ZSA9PSBPUF9NRU0gKQogICAgICAgICB7Ci0gICAgICAgICAgICByYyA9IG9wcy0+d3JpdGUoZWEu bWVtLnNlZywgZWEubWVtLm9mZiwgbW12YWxwLCA4IDw8IHZleC5sLCBjdHh0KTsKKyAgICAgICAg ICAgIHJjID0gb3BzLT53cml0ZShlYS5tZW0uc2VnLCB0cnVuY2F0ZV9lYShlYS5tZW0ub2ZmICsg Zmlyc3RfYnl0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKiltbXZhbHAg KyBmaXJzdF9ieXRlLCBvcF9ieXRlcywgY3R4dCk7CiAgICAgICAgICAgICBpZiAoIHJjICE9IFg4 NkVNVUxfT0tBWSApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgYXNtIHZvbGF0aWxl ICggImxkbXhjc3IgJTAiIDo6ICJtIiAobXhjc3IpICk7CgoKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs