From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH RESEND 1/4] x86emul: support MOVBE and CRC32 Date: Mon, 20 Jun 2016 05:57:25 -0600 Message-ID: <5767F64502000078000F6ABB@prv-mh.provo.novell.com> References: <5767F35B02000078000F6A88@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bExpc-00014d-Ie for xen-devel@lists.xenproject.org; Mon, 20 Jun 2016 11:57:32 +0000 In-Reply-To: <5767F35B02000078000F6A88@prv-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel Cc: Andrew Cooper List-Id: xen-devel@lists.xenproject.org VGhlIGZvcm1lciBpbiBhbiBhdHRlbXB0IHRvIGF0IGxlYXN0IGdyYWR1YWxseSBzdXBwb3J0IGFs bCBzaW1wbGUgZGF0YQptb3ZlbWVudCBpbnN0cnVjdGlvbnMuIFRoZSBsYXR0ZXIganVzdCBiZWNh dXNlIGl0IHNoYXJlcyB0aGUgb3Bjb2RlCndpdGggdGhlIGZvcm1lci4KClNpZ25lZC1vZmYtYnk6 IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9l bXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRv ci90ZXN0X3g4Nl9lbXVsYXRvci5jCkBAIC03OCw3ICs3OCwxNCBAQCBzdGF0aWMgaW50IGNwdWlk KAogICAgIHVuc2lnbmVkIGludCAqZWR4LAogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpj dHh0KQogeworICAgIHVuc2lnbmVkIGludCBsZWFmID0gKmVheDsKKwogICAgIGFzbSAoImNwdWlk IiA6ICIrYSIgKCplYXgpLCAiK2MiICgqZWN4KSwgIj1kIiAoKmVkeCksICI9YiIgKCplYngpKTsK KworICAgIC8qIFRoZSBlbXVsYXRvciBkb2Vzbid0IGl0c2VsZiB1c2UgTU9WQkUsIHNvIHdlIGNh biBhbHdheXMgcnVuIHRoZSB0ZXN0LiAqLworICAgIGlmICggbGVhZiA9PSAxICkKKyAgICAgICAg KmVjeCB8PSAxVSA8PCAyMjsKKwogICAgIHJldHVybiBYODZFTVVMX09LQVk7CiB9CiAKQEAgLTYw NSw2ICs2MTIsMzQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgIHByaW50 Zigic2tpcHBlZFxuIik7CiAjZW5kaWYKIAorICAgIHByaW50ZigiJS00MHMiLCAiVGVzdGluZyBt b3ZiZSAoJSVlY3gpLCUlZWF4Li4uIik7CisgICAgaW5zdHJbMF0gPSAweDBmOyBpbnN0clsxXSA9 IDB4Mzg7IGluc3RyWzJdID0gMHhmMDsgaW5zdHJbM10gPSAweDAxOworICAgIHJlZ3MuZWZsYWdz ID0gMHgyMDA7CisgICAgcmVncy5laXAgICAgPSAodW5zaWduZWQgbG9uZykmaW5zdHJbMF07Cisg ICAgcmVncy5lY3ggICAgPSAodW5zaWduZWQgbG9uZylyZXM7CisgICAgcmVncy5lYXggICAgPSAw eDExMTExMTExOworICAgICpyZXMgICAgICAgID0gMHgxMjM0NTY3ODsKKyAgICByYyA9IHg4Nl9l bXVsYXRlKCZjdHh0LCAmZW11bG9wcyk7CisgICAgaWYgKCAocmMgIT0gWDg2RU1VTF9PS0FZKSB8 fAorICAgICAgICAgKCpyZXMgIT0gMHgxMjM0NTY3OCkgfHwKKyAgICAgICAgIChyZWdzLmVheCAh PSAweDc4NTYzNDEyKSB8fAorICAgICAgICAgKHJlZ3MuZWZsYWdzICE9IDB4MjAwKSB8fAorICAg ICAgICAgKHJlZ3MuZWlwICE9ICh1bnNpZ25lZCBsb25nKSZpbnN0cls0XSkgKQorICAgICAgICBn b3RvIGZhaWw7CisgICAgcHJpbnRmKCJva2F5XG4iKTsKKworICAgIHByaW50ZigiJS00MHMiLCAi VGVzdGluZyBtb3ZiZSAlJWF4LCglJWVjeCkuLi4iKTsKKyAgICBpbnN0clswXSA9IDB4NjY7IGlu c3RyWzFdID0gMHgwZjsgaW5zdHJbMl0gPSAweDM4OyBpbnN0clszXSA9IDB4ZjE7IGluc3RyWzRd ID0gMHgwMTsKKyAgICByZWdzLmVpcCA9ICh1bnNpZ25lZCBsb25nKSZpbnN0clswXTsKKyAgICBy YyA9IHg4Nl9lbXVsYXRlKCZjdHh0LCAmZW11bG9wcyk7CisgICAgaWYgKCAocmMgIT0gWDg2RU1V TF9PS0FZKSB8fAorICAgICAgICAgKCpyZXMgIT0gMHgxMjM0MTIzNCkgfHwKKyAgICAgICAgIChy ZWdzLmVheCAhPSAweDc4NTYzNDEyKSB8fAorICAgICAgICAgKHJlZ3MuZWZsYWdzICE9IDB4MjAw KSB8fAorICAgICAgICAgKHJlZ3MuZWlwICE9ICh1bnNpZ25lZCBsb25nKSZpbnN0cls1XSkgKQor ICAgICAgICBnb3RvIGZhaWw7CisgICAgcHJpbnRmKCJva2F5XG4iKTsKKwogI2RlZmluZSBkZWNs X2luc24od2hpY2gpIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIHdoaWNoW10sIHdoaWNoIyNf bGVuW10KICNkZWZpbmUgcHV0X2luc24od2hpY2gsIGluc24pICIucHVzaHNlY3Rpb24gLnRlc3Qs IFwiYXhcIiwgQHByb2diaXRzXG4iIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN3 aGljaCAiOiAiIGluc24gIlxuIiAgICAgICAgICAgICAgICAgICAgIFwKLS0tIGEvdG9vbHMvdGVz dHMveDg2X2VtdWxhdG9yL3g4Nl9lbXVsYXRlLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxh dG9yL3g4Nl9lbXVsYXRlLmMKQEAgLTEyLDYgKzEyLDcgQEAgdHlwZWRlZiBib29sIGJvb2xfdDsK IAogI2RlZmluZSBCVUcoKSBhYm9ydCgpCiAjZGVmaW5lIEFTU0VSVCBhc3NlcnQKKyNkZWZpbmUg QVNTRVJUX1VOUkVBQ0hBQkxFKCkgYXNzZXJ0KCFfX0xJTkVfXykKIAogI2RlZmluZSBjcHVfaGFz X2FtZF9lcnJhdHVtKG5yKSAwCiAjZGVmaW5lIG1hcmtfcmVnc19kaXJ0eShyKSAoKHZvaWQpKHIp KQotLS0gYS94ZW4vYXJjaC94ODYvUnVsZXMubWsKKysrIGIveGVuL2FyY2gveDg2L1J1bGVzLm1r CkBAIC0xMiw2ICsxMiw3IEBAIENGTEFHUyArPSAtbXNvZnQtZmxvYXQKICQoY2FsbCBjYy1vcHRp b25zLWFkZCxDRkxBR1MsQ0MsJChFTUJFRERFRF9FWFRSQV9DRkxBR1MpKQogJChjYWxsIGNjLW9w dGlvbi1hZGQsQ0ZMQUdTLENDLC1XbmVzdGVkLWV4dGVybnMpCiAkKGNhbGwgYXMtaW5zbi1jaGVj ayxDRkxBR1MsQ0MsInZtY2FsbCIsLURIQVZFX0dBU19WTVgpCiskKGNhbGwgYXMtaW5zbi1jaGVj ayxDRkxBR1MsQ0MsImNyYzMyICVlYXgkJChjb21tYSklZWF4IiwtREhBVkVfR0FTX1NTRTRfMikK ICQoY2FsbCBhcy1pbnNuLWNoZWNrLENGTEFHUyxDQywiaW52ZXB0ICglcmF4KSQkKGNvbW1hKSVy YXgiLC1ESEFWRV9HQVNfRVBUKQogJChjYWxsIGFzLWluc24tY2hlY2ssQ0ZMQUdTLENDLCJyZGZz YmFzZSAlcmF4IiwtREhBVkVfR0FTX0ZTR1NCQVNFKQogJChjYWxsIGFzLWluc24tY2hlY2ssQ0ZM QUdTLENDLCIuZXF1IFwieFwiJCQoY29tbWEpMSIsIFwKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9l bXVsYXRlL3g4Nl9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9l bXVsYXRlLmMKQEAgLTE4OCw3ICsxODgsNyBAQCBzdGF0aWMgdWludDhfdCB0d29ieXRlX3RhYmxl WzI1Nl0gPSB7CiAgICAgSW1wbGljaXRPcHMsIEltcGxpY2l0T3BzLCBJbXBsaWNpdE9wcywgMCwK ICAgICBJbXBsaWNpdE9wcywgSW1wbGljaXRPcHMsIDAsIDAsCiAgICAgLyogMHgzOCAtIDB4M0Yg Ki8KLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIERzdFJlZ3xTcmNNZW18TW9kUk0s IDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgICAgLyogMHg0MCAtIDB4NDcgKi8KICAgICBEc3RSZWd8 U3JjTWVtfE1vZFJNfE1vdiwgRHN0UmVnfFNyY01lbXxNb2RSTXxNb3YsCiAgICAgRHN0UmVnfFNy Y01lbXxNb2RSTXxNb3YsIERzdFJlZ3xTcmNNZW18TW9kUk18TW92LApAQCAtMTA5OCw2ICsxMDk4 LDggQEAgc3RhdGljIGJvb2xfdCB2Y3B1X2hhcygKICNkZWZpbmUgdmNwdV9tdXN0X2hhdmVfc3Nl MigpIHZjcHVfbXVzdF9oYXZlKDB4MDAwMDAwMDEsIEVEWCwgMjYpCiAjZGVmaW5lIHZjcHVfbXVz dF9oYXZlX3NzZTMoKSB2Y3B1X211c3RfaGF2ZSgweDAwMDAwMDAxLCBFQ1gsICAwKQogI2RlZmlu ZSB2Y3B1X211c3RfaGF2ZV9jeDE2KCkgdmNwdV9tdXN0X2hhdmUoMHgwMDAwMDAwMSwgRUNYLCAx MykKKyNkZWZpbmUgdmNwdV9tdXN0X2hhdmVfc3NlNF8yKCkgdmNwdV9tdXN0X2hhdmUoMHgwMDAw MDAwMSwgRUNYLCAyMCkKKyNkZWZpbmUgdmNwdV9tdXN0X2hhdmVfbW92YmUoKSB2Y3B1X211c3Rf aGF2ZSgweDAwMDAwMDAxLCBFQ1gsIDIyKQogI2RlZmluZSB2Y3B1X211c3RfaGF2ZV9hdngoKSAg dmNwdV9tdXN0X2hhdmUoMHgwMDAwMDAwMSwgRUNYLCAyOCkKIAogI2lmZGVmIF9fWEVOX18KQEAg LTE1MDksOCArMTUxMSw5IEBAIHg4Nl9lbXVsYXRlKAogICAgIC8qIFNoYWRvdyBjb3B5IG9mIHJl Z2lzdGVyIHN0YXRlLiBDb21taXR0ZWQgb24gc3VjY2Vzc2Z1bCBlbXVsYXRpb24uICovCiAgICAg c3RydWN0IGNwdV91c2VyX3JlZ3MgX3JlZ3MgPSAqY3R4dC0+cmVnczsKIAotICAgIHVpbnQ4X3Qg YiwgZCwgc2liLCBzaWJfaW5kZXgsIHNpYl9iYXNlLCB0d29ieXRlID0gMCwgcmV4X3ByZWZpeCA9 IDA7CisgICAgdWludDhfdCBiLCBkLCBzaWIsIHNpYl9pbmRleCwgc2liX2Jhc2UsIHJleF9wcmVm aXggPSAwOwogICAgIHVpbnQ4X3QgbW9kcm0gPSAwLCBtb2RybV9tb2QgPSAwLCBtb2RybV9yZWcg PSAwLCBtb2RybV9ybSA9IDA7CisgICAgZW51bSB7IGV4dF9ub25lLCBleHRfMGYsIGV4dF8wZjM4 IH0gZXh0ID0gZXh0X25vbmU7CiAgICAgdW5pb24gdmV4IHZleCA9IHt9OwogICAgIHVuc2lnbmVk IGludCBvcF9ieXRlcywgZGVmX29wX2J5dGVzLCBhZF9ieXRlcywgZGVmX2FkX2J5dGVzOwogICAg IGJvb2xfdCBsb2NrX3ByZWZpeCA9IDA7CkBAIC0xNjA2LDkgKzE2MDksMTggQEAgeDg2X2VtdWxh dGUoCiAgICAgICAgIC8qIFR3by1ieXRlIG9wY29kZT8gKi8KICAgICAgICAgaWYgKCBiID09IDB4 MGYgKQogICAgICAgICB7Ci0gICAgICAgICAgICB0d29ieXRlID0gMTsKICAgICAgICAgICAgIGIg PSBpbnNuX2ZldGNoX3R5cGUodWludDhfdCk7CiAgICAgICAgICAgICBkID0gdHdvYnl0ZV90YWJs ZVtiXTsKKyAgICAgICAgICAgIHN3aXRjaCAoIGIgKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBleHQgPSBleHRfMGY7CisgICAgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDB4Mzg6CisgICAgICAgICAgICAgICAgYiA9IGlu c25fZmV0Y2hfdHlwZSh1aW50OF90KTsKKyAgICAgICAgICAgICAgICBleHQgPSBleHRfMGYzODsK KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg ICAgIC8qIFVucmVjb2duaXNlZD8gKi8KQEAgLTE2MjUsNyArMTYzNyw3IEBAIHg4Nl9lbXVsYXRl KAogICAgICAgICBtb2RybSA9IGluc25fZmV0Y2hfdHlwZSh1aW50OF90KTsKICAgICAgICAgbW9k cm1fbW9kID0gKG1vZHJtICYgMHhjMCkgPj4gNjsKIAotICAgICAgICBpZiAoICF0d29ieXRlICYm ICgoYiAmIH4xKSA9PSAweGM0KSApCisgICAgICAgIGlmICggIWV4dCAmJiAoKGIgJiB+MSkgPT0g MHhjNCkgKQogICAgICAgICAgICAgc3dpdGNoICggZGVmX2FkX2J5dGVzICkKICAgICAgICAgICAg IHsKICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC0xNjcxLDEyICsxNjgzLDEyIEBAIHg4Nl9lbXVs YXRlKAogICAgICAgICAgICAgICAgICAgICByZXhfcHJlZml4IHw9IFJFWF9SOwogCiAgICAgICAg ICAgICAgICAgZmFpbF9pZih2ZXgub3BjeCAhPSB2ZXhfMGYpOwotICAgICAgICAgICAgICAgIHR3 b2J5dGUgPSAxOworICAgICAgICAgICAgICAgIGV4dCA9IGV4dF8wZjsKICAgICAgICAgICAgICAg ICBiID0gaW5zbl9mZXRjaF90eXBlKHVpbnQ4X3QpOwogICAgICAgICAgICAgICAgIGQgPSB0d29i eXRlX3RhYmxlW2JdOwogCiAgICAgICAgICAgICAgICAgLyogVW5yZWNvZ25pc2VkPyAqLwotICAg ICAgICAgICAgICAgIGlmICggZCA9PSAwICkKKyAgICAgICAgICAgICAgICBpZiAoIGQgPT0gMCB8 fCBiID09IDB4MzggKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGNhbm5vdF9lbXVsYXRlOwog CiAgICAgICAgICAgICAgICAgbW9kcm0gPSBpbnNuX2ZldGNoX3R5cGUodWludDhfdCk7CkBAIC0x NzYyLDcgKzE3NzQsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgIGVhLm1lbS5zZWcgID0geDg2X3NlZ19zczsKICAgICAgICAgICAgICAgICAg ICAgZWEubWVtLm9mZiArPSBfcmVncy5lc3A7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggIXR3 b2J5dGUgJiYgKGIgPT0gMHg4ZikgKQorICAgICAgICAgICAgICAgICAgICBpZiAoICFleHQgJiYg KGIgPT0gMHg4ZikgKQogICAgICAgICAgICAgICAgICAgICAgICAgLyogUE9QIDxybT4gY29tcHV0 ZXMgaXRzIEVBIHBvc3QgaW5jcmVtZW50LiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgZWEu bWVtLm9mZiArPSAoKG1vZGVfNjRiaXQoKSAmJiAob3BfYnl0ZXMgPT0gNCkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDggOiBvcF9ieXRlcyk7CkBAIC0xNzk3LDEy ICsxODA5LDEyIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgKChvcF9i eXRlcyA9PSA4KSA/IDQgOiBvcF9ieXRlcyk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIChk ICYgU3JjTWFzaykgPT0gU3JjSW1tQnl0ZSApCiAgICAgICAgICAgICAgICAgICAgIGVhLm1lbS5v ZmYgKz0gMTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICggIXR3b2J5dGUgJiYgKChiICYgMHhm ZSkgPT0gMHhmNikgJiYKKyAgICAgICAgICAgICAgICBlbHNlIGlmICggIWV4dCAmJiAoKGIgJiAw eGZlKSA9PSAweGY2KSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1vZHJtX3JlZyAm IDcpIDw9IDEpICkKICAgICAgICAgICAgICAgICAgICAgLyogU3BlY2lhbCBjYXNlIGluIEdycDM6 IHRlc3QgaGFzIGltbWVkaWF0ZSBvcGVyYW5kLiAqLwogICAgICAgICAgICAgICAgICAgICBlYS5t ZW0ub2ZmICs9IChkICYgQnl0ZU9wKSA/IDEKICAgICAgICAgICAgICAgICAgICAgICAgIDogKChv cF9ieXRlcyA9PSA4KSA/IDQgOiBvcF9ieXRlcyk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAo IHR3b2J5dGUgJiYgKChiICYgMHhmNykgPT0gMHhhNCkgKQorICAgICAgICAgICAgICAgIGVsc2Ug aWYgKCBleHQgPT0gZXh0XzBmICYmICgoYiAmIDB4ZjcpID09IDB4YTQpICkKICAgICAgICAgICAg ICAgICAgICAgLyogU0hMRC9TSFJEIHdpdGggaW1tZWRpYXRlIGJ5dGUgdGhpcmQgb3BlcmFuZC4g Ki8KICAgICAgICAgICAgICAgICAgICAgZWEubWVtLm9mZisrOwogICAgICAgICAgICAgICAgIGJy ZWFrOwpAQCAtMTgyMSw3ICsxODMzLDkgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGVhLm1lbS5z ZWcgPSBvdmVycmlkZV9zZWc7CiAKICAgICAvKiBFYXJseSBvcGVyYW5kIGFkanVzdG1lbnRzLiAq LwotICAgIGlmICggIXR3b2J5dGUgKQorICAgIHN3aXRjaCAoIGV4dCApCisgICAgeworICAgIGNh c2UgZXh0X25vbmU6CiAgICAgICAgIHN3aXRjaCAoIGIgKQogICAgICAgICB7CiAgICAgICAgIGNh c2UgMHhmNiAuLi4gMHhmNzogLyogR3JwMyAqLwpAQCAtMTg1NCw2ICsxODY4LDI5IEBAIHg4Nl9l bXVsYXRlKAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAg ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGV4dF8wZjoKKyAgICAgICAgYnJlYWs7CisKKyAgICBj YXNlIGV4dF8wZjM4OgorICAgICAgICBzd2l0Y2ggKCBiICkKKyAgICAgICAgeworICAgICAgICBj YXNlIDB4ZjA6IC8qIG1vdmJlIC8gY3JjMzIgKi8KKyAgICAgICAgICAgIGQgfD0gcmVwbmVfcHJl Zml4KCkgPyBCeXRlT3AgOiBNb3Y7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAw eGYxOiAvKiBtb3ZiZSAvIGNyYzMyICovCisgICAgICAgICAgICBpZiAoICFyZXBuZV9wcmVmaXgo KSApCisgICAgICAgICAgICAgICAgZCA9IChkICYgfihEc3RNYXNrIHwgU3JjTWFzaykpIHwgRHN0 TWVtIHwgU3JjUmVnIHwgTW92OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6 IC8qIFVudGlsIGl0IGlzIHdvcnRoIG1ha2luZyB0aGlzIHRhYmxlIGJhc2VkIC4uLiAqLworICAg ICAgICAgICAgZ290byBjYW5ub3RfZW11bGF0ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK KworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOworICAgIH0KIAog ICAgIC8qIERlY29kZSBhbmQgZmV0Y2ggdGhlIHNvdXJjZSBvcGVyYW5kOiByZWdpc3RlciwgbWVt b3J5IG9yIGltbWVkaWF0ZS4gKi8KICAgICBzd2l0Y2ggKCBkICYgU3JjTWFzayApCkBAIC0yMDEy LDggKzIwNDksMTggQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg IGlmICggdHdvYnl0ZSApCi0gICAgICAgIGdvdG8gdHdvYnl0ZV9pbnNuOworICAgIHN3aXRjaCAo IGV4dCApCisgICAgeworICAgIGNhc2UgZXh0X25vbmU6CisgICAgICAgIGJyZWFrOworICAgIGNh c2UgZXh0XzBmOgorICAgICAgICBnb3RvIGV4dF8wZl9pbnNuOworICAgIGNhc2UgZXh0XzBmMzg6 CisgICAgICAgIGdvdG8gZXh0XzBmMzhfaW5zbjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF UlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgZ290byBjYW5ub3RfZW11bGF0ZTsKKyAgICB9CiAK ICAgICBzd2l0Y2ggKCBiICkKICAgICB7CkBAIC0yMDU2LDcgKzIxMDMsNyBAQCB4ODZfZW11bGF0 ZSgKICAgICAgICAgc3RydWN0IHNlZ21lbnRfcmVnaXN0ZXIgcmVnOwogICAgICAgICBzcmMudmFs ID0geDg2X3NlZ19lczsKICAgICBwdXNoX3NlZzoKLSAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9u X2lmKG1vZGVfNjRiaXQoKSAmJiAhdHdvYnl0ZSwgRVhDX1VELCAtMSk7CisgICAgICAgIGdlbmVy YXRlX2V4Y2VwdGlvbl9pZihtb2RlXzY0Yml0KCkgJiYgIWV4dCwgRVhDX1VELCAtMSk7CiAgICAg ICAgIGZhaWxfaWYob3BzLT5yZWFkX3NlZ21lbnQgPT0gTlVMTCk7CiAgICAgICAgIGlmICggKHJj ID0gb3BzLT5yZWFkX3NlZ21lbnQoc3JjLnZhbCwgJnJlZywgY3R4dCkpICE9IDAgKQogICAgICAg ICAgICAgcmV0dXJuIHJjOwpAQCAtMjA3Miw3ICsyMTE5LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAg Y2FzZSAweDA3OiAvKiBwb3AgJSVlcyAqLwogICAgICAgICBzcmMudmFsID0geDg2X3NlZ19lczsK ICAgICBwb3Bfc2VnOgotICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYobW9kZV82NGJpdCgp ICYmICF0d29ieXRlLCBFWENfVUQsIC0xKTsKKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lm KG1vZGVfNjRiaXQoKSAmJiAhZXh0LCBFWENfVUQsIC0xKTsKICAgICAgICAgZmFpbF9pZihvcHMt PndyaXRlX3NlZ21lbnQgPT0gTlVMTCk7CiAgICAgICAgIC8qIDY0LWJpdCBtb2RlOiBQT1AgZGVm YXVsdHMgdG8gYSA2NC1iaXQgb3BlcmFuZC4gKi8KICAgICAgICAgaWYgKCBtb2RlXzY0Yml0KCkg JiYgKG9wX2J5dGVzID09IDQpICkKQEAgLTI3MjcsNyArMjc3NCw3IEBAIHg4Nl9lbXVsYXRlKAog ICAgICAgICB1bnNpZ25lZCBsb25nIHNlbDsKICAgICAgICAgZHN0LnZhbCA9IHg4Nl9zZWdfZXM7 CiAgICAgbGVzOiAvKiBkc3QudmFsIGlkZW50aWZpZXMgdGhlIHNlZ21lbnQgKi8KLSAgICAgICAg Z2VuZXJhdGVfZXhjZXB0aW9uX2lmKG1vZGVfNjRiaXQoKSAmJiAhdHdvYnl0ZSwgRVhDX1VELCAt MSk7CisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihtb2RlXzY0Yml0KCkgJiYgIWV4dCwg RVhDX1VELCAtMSk7CiAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihzcmMudHlwZSAhPSBP UF9NRU0sIEVYQ19VRCwgLTEpOwogICAgICAgICBpZiAoIChyYyA9IHJlYWRfdWxvbmcoc3JjLm1l bS5zZWcsIHNyYy5tZW0ub2ZmICsgc3JjLmJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJnNlbCwgMiwgY3R4dCwgb3BzKSkgIT0gMCApCkBAIC0zODY1LDcgKzM5MTIsNyBAQCB4 ODZfZW11bGF0ZSgKICAgICBwdXRfc3R1YihzdHViKTsKICAgICByZXR1cm4gcmM7CiAKLSB0d29i eXRlX2luc246CisgZXh0XzBmX2luc246CiAgICAgc3dpdGNoICggYiApCiAgICAgewogICAgIGNh c2UgMHgwMDogLyogR3JwNiAqLwpAQCAtNDc3Miw2ICs0ODE5LDcyIEBAIHg4Nl9lbXVsYXRlKAog ICAgIH0KICAgICBnb3RvIHdyaXRlYmFjazsKIAorIGV4dF8wZjM4X2luc246CisgICAgc3dpdGNo ICggYiApCisgICAgeworICAgIGNhc2UgMHhmMDogY2FzZSAweGYxOiAvKiBtb3ZiZSAvIGNyYzMy ICovCisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihyZXBlX3ByZWZpeCgpLCBFWENfVUQs IC0xKTsKKyAgICAgICAgaWYgKCByZXBuZV9wcmVmaXgoKSApCisgICAgICAgIHsKKyAgICAgICAg ICAgIC8qIGNyYzMyICovCisjaWZkZWYgSEFWRV9HQVNfU1NFNF8yCisgICAgICAgICAgICBob3N0 X2FuZF92Y3B1X211c3RfaGF2ZShzc2U0XzIpOworICAgICAgICAgICAgZHN0LmJ5dGVzID0gcmV4 X3ByZWZpeCAmIFJFWF9XID8gOCA6IDQ7CisgICAgICAgICAgICBzd2l0Y2ggKCBvcF9ieXRlcyAp CisgICAgICAgICAgICB7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgYXNt ICggImNyYzMyYiAlMSwlazAiIDogIityIiAoZHN0LnZhbCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOiAicW0iICgqKHVpbnQ4X3QgKikmc3JjLnZhbCkgKTsKKyAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBh c20gKCAiY3JjMzJ3ICUxLCVrMCIgOiAiK3IiIChkc3QudmFsKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6ICJybSIgKCoodWludDE2X3QgKikmc3JjLnZhbCkgKTsKKyAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAg ICBhc20gKCAiY3JjMzJsICUxLCVrMCIgOiAiK3IiIChkc3QudmFsKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6ICJybSIgKCoodWludDMyX3QgKikmc3JjLnZhbCkgKTsK KyAgICAgICAgICAgICAgICBicmVhazsKKyMgaWZkZWYgX194ODZfNjRfXworICAgICAgICAgICAg Y2FzZSA4OgorICAgICAgICAgICAgICAgIGFzbSAoICJjcmMzMnEgJTEsJTAiIDogIityIiAoZHN0 LnZhbCkgOiAicm0iIChzcmMudmFsKSApOworICAgICAgICAgICAgICAgIGJyZWFrOworIyBlbmRp ZgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5SRUFDSEFC TEUoKTsKKyAgICAgICAgICAgIH0KKyNlbHNlIC8qICFIQVZFX0dBU19TU0U0XzIgKi8KKyAgICAg ICAgICAgIGdvdG8gY2Fubm90X2VtdWxhdGU7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBl bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIG1vdmJlICovCisgICAgICAgICAgICB2Y3B1 X211c3RfaGF2ZV9tb3ZiZSgpOworICAgICAgICAgICAgc3dpdGNoICggb3BfYnl0ZXMgKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgIGFzbSAoICJ4 Y2hnICVoMCwlYjAiIDogIj1RIiAoZHN0LnZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6ICIwIiAoKih1aW50MzJfdCAqKSZzcmMudmFsKSApOworICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA0OgorI2lmZGVmIF9feDg2XzY0X18KKyAgICAg ICAgICAgICAgICBhc20gKCAiYnN3YXAgJWswIiA6ICI9ciIgKGRzdC52YWwpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOiAiMCIgKCoodWludDMyX3QgKikmc3JjLnZhbCkgKTsK KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgODoKKyNlbmRpZgorICAg ICAgICAgICAgICAgIGFzbSAoICJic3dhcCAlMCIgOiAiPXIiIChkc3QudmFsKSA6ICIwIiAoc3Jj LnZhbCkgKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg ICAgICAgICAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAg ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ290byBjYW5ub3Rf ZW11bGF0ZTsKKyAgICB9CisgICAgZ290byB3cml0ZWJhY2s7CisKICBjYW5ub3RfZW11bGF0ZToK ICAgICBfcHV0X2ZwdSgpOwogICAgIHB1dF9zdHViKHN0dWIpOwotLS0gYS94ZW4vaW5jbHVkZS9h c20teDg2L2NwdWZlYXR1cmUuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWZlYXR1cmUu aApAQCAtNTcsNiArNTcsNyBAQAogI2RlZmluZSBjcHVfaGFzX3NzZQkJYm9vdF9jcHVfaGFzKFg4 Nl9GRUFUVVJFX1NTRSkKICNkZWZpbmUgY3B1X2hhc19zc2UyCQlib290X2NwdV9oYXMoWDg2X0ZF QVRVUkVfU1NFMikKICNkZWZpbmUgY3B1X2hhc19zc2UzCQlib290X2NwdV9oYXMoWDg2X0ZFQVRV UkVfU1NFMykKKyNkZWZpbmUgY3B1X2hhc19zc2U0XzIJCWJvb3RfY3B1X2hhcyhYODZfRkVBVFVS RV9TU0U0XzIpCiAjZGVmaW5lIGNwdV9oYXNfaHR0CQlib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVf SFRUKQogI2RlZmluZSBjcHVfaGFzX254CQlib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfTlgpCiAj ZGVmaW5lIGNwdV9oYXNfY2xmbHVzaAkJYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0NMRkxVU0gp CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==