From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v7 14/49] x86emul: basic AVX512BW testing Date: Wed, 19 Dec 2018 07:44:18 -0700 Message-ID: <5C1A59420200007800207901@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 1gZd5E-0003uK-3E for xen-devel@lists.xenproject.org; Wed, 19 Dec 2018 14:44:24 +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 VGVzdCB2YXJpb3VzIG9mIHRoZSBpbnNucyB3aGljaCBoYXZlIGJlZW4gaW1wbGVtZW50ZWQgYWxy ZWFkeS4KClNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0t CnY2OiBSZS1iYXNlIG92ZXIgY2hhbmdlcyBlYXJsaWVyIGluIHRoZSBzZXJpZXMuCnY0OiBBZGQg X19BVlg1MTJWTF9fIGNvbmRpdGlvbmFsIGFyb3VuZCBtYWpvcml0eSBvZiBPVlIoKSBhZGRpdGlv bnMuCiAgICBDb3JyZWN0IGVxKCkgZm9yIDEtIGFuZCAyLWJ5dGUgY2FzZXMuCnYzOiBOZXcuCgot LS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZpbGUKKysrIGIvdG9vbHMvdGVzdHMv eDg2X2VtdWxhdG9yL01ha2VmaWxlCkBAIC0xOSw3ICsxOSw3IEBAIHZwYXRoICUuYyAkKFhFTl9S T09UKS94ZW4vbGliL3g4NgogCiBDRkxBR1MgKz0gJChDRkxBR1NfeGVuaW5jbHVkZSkKIAotU0lN RCA6PSAzZG5vdyBzc2Ugc3NlMiBzc2U0IGF2eCBhdngyIHhvcCBhdng1MTJmCitTSU1EIDo9IDNk bm93IHNzZSBzc2UyIHNzZTQgYXZ4IGF2eDIgeG9wIGF2eDUxMmYgYXZ4NTEyYncKIEZNQSA6PSBm bWE0IGZtYQogU0cgOj0gYXZ4Mi1zZwogVEVTVENBU0VTIDo9IGJsb3dmaXNoICQoU0lNRCkgJChG TUEpICQoU0cpCkBAIC02OSw2ICs2OSw5IEBAIHhvcC1mbHRzIDo9ICQoYXZ4LWZsdHMpCiBhdng1 MTJmLXZlY3MgOj0gNjQgMTYgMzIKIGF2eDUxMmYtaW50cyA6PSA0IDgKIGF2eDUxMmYtZmx0cyA6 PSA0IDgKK2F2eDUxMmJ3LXZlY3MgOj0gJChhdng1MTJmLXZlY3MpCithdng1MTJidy1pbnRzIDo9 IDEgMgorYXZ4NTEyYnctZmx0cyA6PQogCiBhdng1MTJmLW9wbWFzay12ZWNzIDo9IDIKIGF2eDUx MmRxLW9wbWFzay12ZWNzIDo9IDEKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3NpbWQu YworKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3Ivc2ltZC5jCkBAIC0zMSw2ICszMSwxMCBA QCBFTlRSWShzaW1kX3Rlc3QpOwogIyAgZGVmaW5lIGVxKHgsIHkpICgoQlIoY21wcHMsIF9tYXNr LCB4LCB5LCAwLCAtMSkgJiBBTExfVFJVRSkgPT0gQUxMX1RSVUUpCiAjIGVsaWYgRkxPQVRfU0la RSA9PSA4CiAjICBkZWZpbmUgZXEoeCwgeSkgKEJSKGNtcHBkLCBfbWFzaywgeCwgeSwgMCwgLTEp ID09IEFMTF9UUlVFKQorIyBlbGlmIChJTlRfU0laRSA9PSAxIHx8IFVJTlRfU0laRSA9PSAxKSAm JiBkZWZpbmVkKF9fQVZYNTEyQldfXykKKyMgIGRlZmluZSBlcSh4LCB5KSAoQihwY21wZXFiLCBf bWFzaywgKHZxaV90KSh4KSwgKHZxaV90KSh5KSwgLTEpID09IEFMTF9UUlVFKQorIyBlbGlmIChJ TlRfU0laRSA9PSAyIHx8IFVJTlRfU0laRSA9PSAyKSAmJiBkZWZpbmVkKF9fQVZYNTEyQldfXykK KyMgIGRlZmluZSBlcSh4LCB5KSAoQihwY21wZXF3LCBfbWFzaywgKHZoaV90KSh4KSwgKHZoaV90 KSh5KSwgLTEpID09IEFMTF9UUlVFKQogIyBlbGlmIElOVF9TSVpFID09IDQgfHwgVUlOVF9TSVpF ID09IDQKICMgIGRlZmluZSBlcSh4LCB5KSAoQihwY21wZXFkLCBfbWFzaywgKHZzaV90KSh4KSwg KHZzaV90KSh5KSwgLTEpID09IEFMTF9UUlVFKQogIyBlbGlmIElOVF9TSVpFID09IDggfHwgVUlO VF9TSVpFID09IDgKQEAgLTM3NCw2ICszNzgsODcgQEAgc3RhdGljIGlubGluZSBib29sIF90b19i b29sKGJ5dGVfdmVjX3QgYgogIyAgZGVmaW5lIG1heCh4LCB5KSAoKHZlY190KUIocG1heHVxLCBf bWFzaywgKHZkaV90KSh4KSwgKHZkaV90KSh5KSwgKHZkaV90KXVuZGVmKCksIH4wKSkKICMgIGRl ZmluZSBtaW4oeCwgeSkgKCh2ZWNfdClCKHBtaW51cSwgX21hc2ssICh2ZGlfdCkoeCksICh2ZGlf dCkoeSksICh2ZGlfdCl1bmRlZigpLCB+MCkpCiAjIGVuZGlmCisjZWxpZiAoSU5UX1NJWkUgPT0g MSB8fCBVSU5UX1NJWkUgPT0gMSB8fCBJTlRfU0laRSA9PSAyIHx8IFVJTlRfU0laRSA9PSAyKSAm JiBcCisgICAgICBkZWZpbmVkKF9fQVZYNTEyQldfXykgJiYgKFZFQ19TSVpFID09IDY0IHx8IGRl ZmluZWQoX19BVlg1MTJWTF9fKSkKKyMgaWYgSU5UX1NJWkUgPT0gMSB8fCBVSU5UX1NJWkUgPT0g MQorIyAgZGVmaW5lIGJyb2FkY2FzdCh4KSAoeyBcCisgICAgdmVjX3QgdF87IFwKKyAgICBhc20g KCAiJXtldmV4JX0gdnBicm9hZGNhc3RiICUxLCAlMCIgXAorICAgICAgICAgIDogIj12IiAodF8p IDogIm0iICgqKGNoYXJbMV0peyB4IH0pICk7IFwKKyAgICB0XzsgXAorfSkKKyMgIGRlZmluZSBi cm9hZGNhc3QyKHgpICh7IFwKKyAgICB2ZWNfdCB0XzsgXAorICAgIGFzbSAoICJ2cGJyb2FkY2Fz dGIgJWsxLCAlMCIgOiAiPXYiICh0XykgOiAiciIgKHgpICk7IFwKKyAgICB0XzsgXAorfSkKKyMg IGlmIFZFQ19TSVpFID09IDE2CisjICAgZGVmaW5lIGludGVybGVhdmVfaGkoeCwgeSkgKCh2ZWNf dClCKHB1bnBja2hidywgX21hc2ssICh2cWlfdCkoeCksICh2cWlfdCkoeSksICh2cWlfdCl1bmRl ZigpLCB+MCkpCisjICAgZGVmaW5lIGludGVybGVhdmVfbG8oeCwgeSkgKCh2ZWNfdClCKHB1bnBj a2xidywgX21hc2ssICh2cWlfdCkoeCksICh2cWlfdCkoeSksICh2cWlfdCl1bmRlZigpLCB+MCkp CisjICAgZGVmaW5lIHN3YXAoeCkgKCh2ZWNfdClCKHBzaHVmYiwgX21hc2ssICh2cWlfdCkoeCks ICh2cWlfdCkoaW52IC0gMSksICh2cWlfdCl1bmRlZigpLCB+MCkpCisjICBlbGlmIGRlZmluZWQo X19BVlg1MTJWQk1JX18pCisjICAgZGVmaW5lIGludGVybGVhdmVfaGkoeCwgeSkgKCh2ZWNfdClC KHZwZXJtaTJ2YXJxaSwgX21hc2ssICh2cWlfdCkoeCksIGludGVybGVhdmVfaGksICh2cWlfdCko eSksIH4wKSkKKyMgICBkZWZpbmUgaW50ZXJsZWF2ZV9sbyh4LCB5KSAoKHZlY190KUIodnBlcm10 MnZhcnFpLCBfbWFzaywgaW50ZXJsZWF2ZV9sbywgKHZxaV90KSh4KSwgKHZxaV90KSh5KSwgfjAp KQorIyAgZW5kaWYKKyMgIGRlZmluZSBtaXgoeCwgeSkgKCh2ZWNfdClCKG1vdmRxdXFpLCBfbWFz aywgKHZxaV90KSh4KSwgKHZxaV90KSh5KSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKDBiMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEw MTAxMDEwMTAxMDEwMUxMICYgQUxMX1RSVUUpKSkKKyMgIGRlZmluZSBzaHJpbmsxKHgpICgoaGFs Zl90KUIocG1vdndiLCBfbWFzaywgKHZoaV90KSh4KSwgKHZxaV9oYWxmX3Qpe30sIH4wKSkKKyMg IGRlZmluZSBzaHJpbmsyKHgpICgocXVhcnRlcl90KUIocG1vdmRiLCBfbWFzaywgKHZzaV90KSh4 KSwgKHZxaV9xdWFydGVyX3Qpe30sIH4wKSkKKyMgIGRlZmluZSBzaHJpbmszKHgpICgoZWlnaHRo X3QpQihwbW92cWIsIF9tYXNrLCAodmRpX3QpKHgpLCAodnFpX2VpZ2h0aF90KXt9LCB+MCkpCisj IGVsaWYgSU5UX1NJWkUgPT0gMiB8fCBVSU5UX1NJWkUgPT0gMgorIyAgZGVmaW5lIGJyb2FkY2Fz dCh4KSAoeyBcCisgICAgdmVjX3QgdF87IFwKKyAgICBhc20gKCAiJXtldmV4JX0gdnBicm9hZGNh c3R3ICUxLCAlMCIgXAorICAgICAgICAgIDogIj12IiAodF8pIDogIm0iICgqKHNob3J0WzFdKXsg eCB9KSApOyBcCisgICAgdF87IFwKK30pCisjICBkZWZpbmUgYnJvYWRjYXN0Mih4KSAoeyBcCisg ICAgdmVjX3QgdF87IFwKKyAgICBhc20gKCAidnBicm9hZGNhc3R3ICVrMSwgJTAiIDogIj12IiAo dF8pIDogInIiICh4KSApOyBcCisgICAgdF87IFwKK30pCisjICBpZiBWRUNfU0laRSA9PSAxNgor IyAgIGRlZmluZSBpbnRlcmxlYXZlX2hpKHgsIHkpICgodmVjX3QpQihwdW5wY2tod2QsIF9tYXNr LCAodmhpX3QpKHgpLCAodmhpX3QpKHkpLCAodmhpX3QpdW5kZWYoKSwgfjApKQorIyAgIGRlZmlu ZSBpbnRlcmxlYXZlX2xvKHgsIHkpICgodmVjX3QpQihwdW5wY2tsd2QsIF9tYXNrLCAodmhpX3Qp KHgpLCAodmhpX3QpKHkpLCAodmhpX3QpdW5kZWYoKSwgfjApKQorIyAgIGRlZmluZSBzd2FwKHgp ICgodmVjX3QpQihwc2h1ZmQsIF9tYXNrLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh2c2lfdClCKHBzaHVmaHcsIF9tYXNrLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEIocHNodWZsdywgX21hc2ssICh2aGlfdCkoeCksIDBiMDAwMTEwMTEsICh2aGlf dCl1bmRlZigpLCB+MCksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MGIwMDAxMTAxMSwgKHZoaV90KXVuZGVmKCksIH4wKSwgXAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwYjAxMDAxMTEwLCAodnNpX3QpdW5kZWYoKSwgfjApKQorIyAgZWxzZQorIyAgIGRl ZmluZSBpbnRlcmxlYXZlX2hpKHgsIHkpICgodmVjX3QpQih2cGVybWkydmFyaGksIF9tYXNrLCAo dmhpX3QpKHgpLCBpbnRlcmxlYXZlX2hpLCAodmhpX3QpKHkpLCB+MCkpCisjICAgZGVmaW5lIGlu dGVybGVhdmVfbG8oeCwgeSkgKCh2ZWNfdClCKHZwZXJtdDJ2YXJoaSwgX21hc2ssIGludGVybGVh dmVfbG8sICh2aGlfdCkoeCksICh2aGlfdCkoeSksIH4wKSkKKyMgIGVuZGlmCisjICBkZWZpbmUg bWl4KHgsIHkpICgodmVjX3QpQihtb3ZkcXVoaSwgX21hc2ssICh2aGlfdCkoeCksICh2aGlfdCko eSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwYjAxMDEwMTAxMDEwMTAxMDEw MTAxMDEwMTAxMDEwMTAxICYgQUxMX1RSVUUpKSkKKyMgIGRlZmluZSBzaHJpbmsxKHgpICgoaGFs Zl90KUIocG1vdmR3LCBfbWFzaywgKHZzaV90KSh4KSwgKHZoaV9oYWxmX3Qpe30sIH4wKSkKKyMg IGRlZmluZSBzaHJpbmsyKHgpICgocXVhcnRlcl90KUIocG1vdnF3LCBfbWFzaywgKHZkaV90KSh4 KSwgKHZoaV9xdWFydGVyX3Qpe30sIH4wKSkKKyMgZW5kaWYKKyMgaWYgSU5UX1NJWkUgPT0gMQor IyAgZGVmaW5lIG1heCh4LCB5KSAoKHZlY190KUIocG1heHNiLCBfbWFzaywgKHZxaV90KSh4KSwg KHZxaV90KSh5KSwgKHZxaV90KXVuZGVmKCksIH4wKSkKKyMgIGRlZmluZSBtaW4oeCwgeSkgKCh2 ZWNfdClCKHBtaW5zYiwgX21hc2ssICh2cWlfdCkoeCksICh2cWlfdCkoeSksICh2cWlfdCl1bmRl ZigpLCB+MCkpCisjICBkZWZpbmUgd2lkZW4xKHgpICgodmVjX3QpQihwbW92c3hidywgX21hc2ss ICh2cWlfaGFsZl90KSh4KSwgKHZoaV90KXVuZGVmKCksIH4wKSkKKyMgIGRlZmluZSB3aWRlbjIo eCkgKCh2ZWNfdClCKHBtb3ZzeGJkLCBfbWFzaywgKHZxaV9xdWFydGVyX3QpKHgpLCAodnNpX3Qp dW5kZWYoKSwgfjApKQorIyAgZGVmaW5lIHdpZGVuMyh4KSAoKHZlY190KUIocG1vdnN4YnEsIF9t YXNrLCAodnFpX2VpZ2h0aF90KSh4KSwgKHZkaV90KXVuZGVmKCksIH4wKSkKKyMgZWxpZiBVSU5U X1NJWkUgPT0gMQorIyAgZGVmaW5lIG1heCh4LCB5KSAoKHZlY190KUIocG1heHViLCBfbWFzaywg KHZxaV90KSh4KSwgKHZxaV90KSh5KSwgKHZxaV90KXVuZGVmKCksIH4wKSkKKyMgIGRlZmluZSBt aW4oeCwgeSkgKCh2ZWNfdClCKHBtaW51YiwgX21hc2ssICh2cWlfdCkoeCksICh2cWlfdCkoeSks ICh2cWlfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgd2lkZW4xKHgpICgodmVjX3QpQihwbW92 enhidywgX21hc2ssICh2cWlfaGFsZl90KSh4KSwgKHZoaV90KXVuZGVmKCksIH4wKSkKKyMgIGRl ZmluZSB3aWRlbjIoeCkgKCh2ZWNfdClCKHBtb3Z6eGJkLCBfbWFzaywgKHZxaV9xdWFydGVyX3Qp KHgpLCAodnNpX3QpdW5kZWYoKSwgfjApKQorIyAgZGVmaW5lIHdpZGVuMyh4KSAoKHZlY190KUIo cG1vdnp4YnEsIF9tYXNrLCAodnFpX2VpZ2h0aF90KSh4KSwgKHZkaV90KXVuZGVmKCksIH4wKSkK KyMgZWxpZiBJTlRfU0laRSA9PSAyCisjICBkZWZpbmUgbWF4KHgsIHkpIEIocG1heHN3LCBfbWFz aywgeCwgeSwgdW5kZWYoKSwgfjApCisjICBkZWZpbmUgbWluKHgsIHkpIEIocG1pbnN3LCBfbWFz aywgeCwgeSwgdW5kZWYoKSwgfjApCisjICBkZWZpbmUgbXVsX2hpKHgsIHkpIEIocG11bGh3LCBf bWFzaywgeCwgeSwgdW5kZWYoKSwgfjApCisjICBkZWZpbmUgd2lkZW4xKHgpICgodmVjX3QpQihw bW92c3h3ZCwgX21hc2ssIHgsICh2c2lfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgd2lkZW4y KHgpICgodmVjX3QpQihwbW92c3h3cSwgX21hc2ssIHgsICh2ZGlfdCl1bmRlZigpLCB+MCkpCisj IGVsaWYgVUlOVF9TSVpFID09IDIKKyMgIGRlZmluZSBtYXgoeCwgeSkgKCh2ZWNfdClCKHBtYXh1 dywgX21hc2ssICh2aGlfdCkoeCksICh2aGlfdCkoeSksICh2aGlfdCl1bmRlZigpLCB+MCkpCisj ICBkZWZpbmUgbWluKHgsIHkpICgodmVjX3QpQihwbWludXcsIF9tYXNrLCAodmhpX3QpKHgpLCAo dmhpX3QpKHkpLCAodmhpX3QpdW5kZWYoKSwgfjApKQorIyAgZGVmaW5lIG11bF9oaSh4LCB5KSAo KHZlY190KUIocG11bGh1dywgX21hc2ssICh2aGlfdCkoeCksICh2aGlfdCkoeSksICh2aGlfdCl1 bmRlZigpLCB+MCkpCisjICBkZWZpbmUgd2lkZW4xKHgpICgodmVjX3QpQihwbW92enh3ZCwgX21h c2ssICh2aGlfaGFsZl90KSh4KSwgKHZzaV90KXVuZGVmKCksIH4wKSkKKyMgIGRlZmluZSB3aWRl bjIoeCkgKCh2ZWNfdClCKHBtb3Z6eHdxLCBfbWFzaywgKHZoaV9xdWFydGVyX3QpKHgpLCAodmRp X3QpdW5kZWYoKSwgfjApKQorIyBlbmRpZgogI2VsaWYgVkVDX1NJWkUgPT0gMTYgJiYgZGVmaW5l ZChfX1NTRTJfXykKICMgaWYgSU5UX1NJWkUgPT0gMSB8fCBVSU5UX1NJWkUgPT0gMQogIyAgZGVm aW5lIGludGVybGVhdmVfaGkoeCwgeSkgKCh2ZWNfdClfX2J1aWx0aW5faWEzMl9wdW5wY2toYncx MjgoKHZxaV90KSh4KSwgKHZxaV90KSh5KSkpCkBAIC01NjUsNyArNjUwLDcgQEAgc3RhdGljIGlu bGluZSBib29sIF90b19ib29sKGJ5dGVfdmVjX3QgYgogIyAgZW5kaWYKICMgZW5kaWYKICNlbmRp ZgotI2lmIFZFQ19TSVpFID09IDE2ICYmIGRlZmluZWQoX19TU1NFM19fKQorI2lmIFZFQ19TSVpF ID09IDE2ICYmIGRlZmluZWQoX19TU1NFM19fKSAmJiAhZGVmaW5lZChfX0FWWDUxMlZMX18pCiAj IGlmIElOVF9TSVpFID09IDEKICMgIGRlZmluZSBhYnMoeCkgKCh2ZWNfdClfX2J1aWx0aW5faWEz Ml9wYWJzYjEyOCgodnFpX3QpKHgpKSkKICMgZWxpZiBJTlRfU0laRSA9PSAyCkBAIC03ODksNiAr ODc0LDQwIEBAIHN0YXRpYyBpbmxpbmUgaGFsZl90IGxvd19oYWxmKHZlY190IHgpCiB9CiAjIGVu ZGlmCiAKKyMgaWYgIWRlZmluZWQobG93X3F1YXJ0ZXIpICYmIGRlZmluZWQoUVVBUlRFUl9TSVpF KQorc3RhdGljIGlubGluZSBxdWFydGVyX3QgbG93X3F1YXJ0ZXIodmVjX3QgeCkKK3sKKyMgIGlm IFFVQVJURVJfU0laRSA8IFZFQ19TSVpFCisgICAgcXVhcnRlcl90IHk7CisgICAgdW5zaWduZWQg aW50IGk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEVMRU1fQ09VTlQgLyA0OyArK2kgKQorICAg ICAgICB5W2ldID0geFtpXTsKKworICAgIHJldHVybiB5OworIyAgZWxzZQorICAgIHJldHVybiB4 OworIyAgZW5kaWYKK30KKyMgZW5kaWYKKworIyBpZiAhZGVmaW5lZChsb3dfZWlnaHRoKSAmJiBk ZWZpbmVkKEVJR0hUSF9TSVpFKQorc3RhdGljIGlubGluZSBlaWdodGhfdCBsb3dfZWlnaHRoKHZl Y190IHgpCit7CisjICBpZiBFSUdIVEhfU0laRSA8IFZFQ19TSVpFCisgICAgZWlnaHRoX3QgeTsK KyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgRUxFTV9DT1VOVCAv IDQ7ICsraSApCisgICAgICAgIHlbaV0gPSB4W2ldOworCisgICAgcmV0dXJuIHk7CisjICBlbHNl CisgICAgcmV0dXJuIHg7CisjICBlbmRpZgorfQorIyBlbmRpZgorCiAjZW5kaWYKIAogI2lmIGRl ZmluZWQoX19BVlg1MTJGX18pICYmIGRlZmluZWQoRkxPQVRfU0laRSkKQEAgLTExMTcsNyArMTIz Niw3IEBAIGludCBzaW1kX3Rlc3Qodm9pZCkKICAgICB5ID0gaW50ZXJsZWF2ZV9sbyhhbHQgPCAw LCBhbHQgPCAwKTsKICAgICB5ID0gaW50ZXJsZWF2ZV9sbyh6LCB5KTsKICAgICB0b3VjaCh4KTsK LSAgICB6ID0gd2lkZW4yKHgpOworICAgIHogPSB3aWRlbjIobG93X3F1YXJ0ZXIoeCkpOwogICAg IHRvdWNoKHgpOwogICAgIGlmICggIWVxKHosIHkpICkgcmV0dXJuIF9fTElORV9fOwogCkBAIC0x MTI2LDcgKzEyNDUsNyBAQCBpbnQgc2ltZF90ZXN0KHZvaWQpCiAgICAgeSA9IGludGVybGVhdmVf bG8oeSwgeSk7CiAgICAgeSA9IGludGVybGVhdmVfbG8oeiwgeSk7CiAgICAgdG91Y2goeCk7Ci0g ICAgeiA9IHdpZGVuMyh4KTsKKyAgICB6ID0gd2lkZW4zKGxvd19laWdodGgoeCkpOwogICAgIHRv dWNoKHgpOwogICAgIGlmICggIWVxKHosIHkpICkgcmV0dXJuIF9fTElORV9fOwogIyAgZW5kaWYK QEAgLTExNDgsMTQgKzEyNjcsMTQgQEAgaW50IHNpbWRfdGVzdCh2b2lkKQogCiAjIGlmZGVmIHdp ZGVuMgogICAgIHRvdWNoKHNyYyk7Ci0gICAgeCA9IHdpZGVuMihzcmMpOworICAgIHggPSB3aWRl bjIobG93X3F1YXJ0ZXIoc3JjKSk7CiAgICAgdG91Y2goc3JjKTsKICAgICBpZiAoICFlcSh4LCB6 KSApIHJldHVybiBfX0xJTkVfXzsKICMgZW5kaWYKIAogIyBpZmRlZiB3aWRlbjMKICAgICB0b3Vj aChzcmMpOwotICAgIHggPSB3aWRlbjMoc3JjKTsKKyAgICB4ID0gd2lkZW4zKGxvd19laWdodGgo c3JjKSk7CiAgICAgdG91Y2goc3JjKTsKICAgICBpZiAoICFlcSh4LCBpbnRlcmxlYXZlX2xvKHos ICh2ZWNfdCl7fSkpICkgcmV0dXJuIF9fTElORV9fOwogIyBlbmRpZgpAQCAtMTE3NSw2ICsxMjk0 LDM2IEBAIGludCBzaW1kX3Rlc3Qodm9pZCkKICAgICAgICAgICAgIGlmICggYXV4MltpXSAhPSBz cmNbaV0gKQogICAgICAgICAgICAgICAgIHJldHVybiBfX0xJTkVfXzsKICAgICB9CisjZW5kaWYK KworI2lmIGRlZmluZWQod2lkZW4yKSAmJiBkZWZpbmVkKHNocmluazIpCisgICAgeworICAgICAg ICBxdWFydGVyX3QgYXV4MSA9IGxvd19xdWFydGVyKHNyYyksIGF1eDI7CisKKyAgICAgICAgdG91 Y2goYXV4MSk7CisgICAgICAgIHggPSB3aWRlbjIoYXV4MSk7CisgICAgICAgIHRvdWNoKHgpOwor ICAgICAgICBhdXgyID0gc2hyaW5rMih4KTsKKyAgICAgICAgdG91Y2goYXV4Mik7CisgICAgICAg IGZvciAoIGkgPSAwOyBpIDwgRUxFTV9DT1VOVCAvIDQ7ICsraSApCisgICAgICAgICAgICBpZiAo IGF1eDJbaV0gIT0gc3JjW2ldICkKKyAgICAgICAgICAgICAgICByZXR1cm4gX19MSU5FX187Cisg ICAgfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKHdpZGVuMykgJiYgZGVmaW5lZChzaHJpbmszKQor ICAgIHsKKyAgICAgICAgZWlnaHRoX3QgYXV4MSA9IGxvd19laWdodGgoc3JjKSwgYXV4MjsKKwor ICAgICAgICB0b3VjaChhdXgxKTsKKyAgICAgICAgeCA9IHdpZGVuMyhhdXgxKTsKKyAgICAgICAg dG91Y2goeCk7CisgICAgICAgIGF1eDIgPSBzaHJpbmszKHgpOworICAgICAgICB0b3VjaChhdXgy KTsKKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBFTEVNX0NPVU5UIC8gODsgKytpICkKKyAgICAg ICAgICAgIGlmICggYXV4MltpXSAhPSBzcmNbaV0gKQorICAgICAgICAgICAgICAgIHJldHVybiBf X0xJTkVfXzsKKyAgICB9CiAjZW5kaWYKIAogI2lmZGVmIGR1cF9sbwotLS0gYS90b29scy90ZXN0 cy94ODZfZW11bGF0b3Ivc2ltZC5oCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zaW1k LmgKQEAgLTk1LDYgKzk1LDMyIEBAIHR5cGVkZWYgaW50IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9z aXplKEgKIHR5cGVkZWYgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKEhBTEZf U0laRSkpKSB2ZGlfaGFsZl90OwogIyBlbmRpZgogCisjIGlmIEVMRU1fQ09VTlQgPj0gNAorIyAg aWYgVkVDX1NJWkUgPiA2NAorIyAgIGRlZmluZSBRVUFSVEVSX1NJWkUgKFZFQ19TSVpFIC8gNCkK KyMgIGVsc2UKKyMgICBkZWZpbmUgUVVBUlRFUl9TSVpFIDE2CisjICBlbmRpZgordHlwZWRlZiB0 eXBlb2YoKHZlY190KXt9WzBdKSBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShRVUFSVEVSX1NJ WkUpKSkgcXVhcnRlcl90OwordHlwZWRlZiBjaGFyIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXpl KFFVQVJURVJfU0laRSkpKSB2cWlfcXVhcnRlcl90OwordHlwZWRlZiBzaG9ydCBfX2F0dHJpYnV0 ZV9fKCh2ZWN0b3Jfc2l6ZShRVUFSVEVSX1NJWkUpKSkgdmhpX3F1YXJ0ZXJfdDsKK3R5cGVkZWYg aW50IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKFFVQVJURVJfU0laRSkpKSB2c2lfcXVhcnRl cl90OwordHlwZWRlZiBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoUVVBUlRF Ul9TSVpFKSkpIHZkaV9xdWFydGVyX3Q7CisjIGVuZGlmCisKKyMgaWYgRUxFTV9DT1VOVCA+PSA4 CisjICBpZiBWRUNfU0laRSA+IDEyOAorIyAgIGRlZmluZSBFSUdIVEhfU0laRSAoVkVDX1NJWkUg LyA4KQorIyAgZWxzZQorIyAgIGRlZmluZSBFSUdIVEhfU0laRSAxNgorIyAgZW5kaWYKK3R5cGVk ZWYgdHlwZW9mKCh2ZWNfdCl7fVswXSkgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoRUlHSFRI X1NJWkUpKSkgZWlnaHRoX3Q7Cit0eXBlZGVmIGNoYXIgX19hdHRyaWJ1dGVfXygodmVjdG9yX3Np emUoRUlHSFRIX1NJWkUpKSkgdnFpX2VpZ2h0aF90OwordHlwZWRlZiBzaG9ydCBfX2F0dHJpYnV0 ZV9fKCh2ZWN0b3Jfc2l6ZShFSUdIVEhfU0laRSkpKSB2aGlfZWlnaHRoX3Q7Cit0eXBlZGVmIGlu dCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShFSUdIVEhfU0laRSkpKSB2c2lfZWlnaHRoX3Q7 Cit0eXBlZGVmIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShFSUdIVEhfU0la RSkpKSB2ZGlfZWlnaHRoX3Q7CisjIGVuZGlmCisKICNlbmRpZgogCiAjaWYgVkVDX1NJWkUgPT0g MTYKQEAgLTE4Miw2ICsyMDgsOSBAQCBPVlJfU0ZQKGJyb2FkY2FzdCk7CiBPVlJfU0ZQKGNvbWkp OwogT1ZSX0ZQKGFkZCk7CiBPVlJfSU5UKGFkZCk7CitPVlJfQlcoYWRkcyk7CitPVlJfQlcoYWRk dXMpOworT1ZSX0JXKGF2Zyk7CiBPVlJfRlAoZGl2KTsKIE9WUihleHRyYWN0cHMpOwogT1ZSX0ZN QShmbWFkZCwgRlApOwpAQCAtMjE0LDYgKzI0Myw4IEBAIE9WUl9JTlQoc3JsKTsKIE9WUl9EUShz cmx2KTsKIE9WUl9GUChzdWIpOwogT1ZSX0lOVChzdWIpOworT1ZSX0JXKHN1YnMpOworT1ZSX0JX KHN1YnVzKTsKIE9WUl9TRlAodWNvbWkpOwogT1ZSX1ZGUCh1bnBja2gpOwogT1ZSX1ZGUCh1bnBj a2wpOwpAQCAtMjc1LDYgKzMwNiwzMSBAQCBPVlIocHVucGNrbGRxKTsKIE9WUihwdW5wY2tscWRx KTsKICMgZW5kaWYKIAorIyBpZmRlZiBfX0FWWDUxMkJXX18KK09WUihwZXh0cmIpOworT1ZSKHBl eHRydyk7CitPVlIocGluc3JiKTsKK09WUihwaW5zcncpOworIyAgaWZkZWYgX19BVlg1MTJWTF9f CitPVlIocG1hZGR3ZCk7CitPVlIocG1vdnN4YncpOworT1ZSKHBtb3Z6eGJ3KTsKK09WUihwbXVs aHV3KTsKK09WUihwbXVsaHcpOworT1ZSKHBtdWxsdyk7CitPVlIocHNhZGJ3KTsKK09WUihwc2h1 ZmIpOworT1ZSKHBzaHVmaHcpOworT1ZSKHBzaHVmbHcpOworT1ZSKHB1bnBja2hidyk7CitPVlIo cHVucGNraHdkKTsKK09WUihwdW5wY2tsYncpOworT1ZSKHB1bnBja2x3ZCk7CitPVlIoc2xsZHEp OworT1ZSKHNybGRxKTsKKyMgIGVuZGlmCisjIGVuZGlmCisKICMgdW5kZWYgT1ZSX1ZGUAogIyB1 bmRlZiBPVlJfU0ZQCiAjIHVuZGVmIE9WUl9JTlQKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxh dG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rl c3RfeDg2X2VtdWxhdG9yLmMKQEAgLTIyLDYgKzIyLDcgQEAgYXNtICggIi5wdXNoc2VjdGlvbiAu dGVzdCwgXCJheFwiLCBAcHJvZwogI2luY2x1ZGUgImF2eDUxMmRxLW9wbWFzay5oIgogI2luY2x1 ZGUgImF2eDUxMmJ3LW9wbWFzay5oIgogI2luY2x1ZGUgImF2eDUxMmYuaCIKKyNpbmNsdWRlICJh dng1MTJidy5oIgogCiAjZGVmaW5lIHZlcmJvc2UgZmFsc2UgLyogU3dpdGNoIHRvIHRydWUgZm9y IGZhciBtb3JlIGxvZ2dpbmcuICovCiAKQEAgLTEwNSw2ICsxMDYsMTEgQEAgc3RhdGljIGJvb2wg c2ltZF9jaGVja19hdng1MTJidyh2b2lkKQogfQogI2RlZmluZSBzaW1kX2NoZWNrX2F2eDUxMmJ3 X29wbWFzayBzaW1kX2NoZWNrX2F2eDUxMmJ3CiAKK3N0YXRpYyBib29sIHNpbWRfY2hlY2tfYXZ4 NTEyYndfdmwodm9pZCkKK3sKKyAgICByZXR1cm4gY3B1X2hhc19hdng1MTJidyAmJiBjcHVfaGFz X2F2eDUxMnZsOworfQorCiBzdGF0aWMgdm9pZCBzaW1kX3NldF9yZWdzKHN0cnVjdCBjcHVfdXNl cl9yZWdzICpyZWdzKQogewogICAgIGlmICggY3B1X2hhc19tbXggKQpAQCAtMjg0LDYgKzI5MCwx OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKICAgICBBVlg1MTJWTChWTCB1NjR4MiwgICAgICAg IGF2eDUxMmYsICAgICAgMTZ1OCksCiAgICAgQVZYNTEyVkwoVkwgczY0eDQsICAgICAgICBhdng1 MTJmLCAgICAgIDMyaTgpLAogICAgIEFWWDUxMlZMKFZMIHU2NHg0LCAgICAgICAgYXZ4NTEyZiwg ICAgICAzMnU4KSwKKyAgICBTSU1EKEFWWDUxMkJXIHM4eDY0LCAgICAgYXZ4NTEyYncsICAgICAg NjRpMSksCisgICAgU0lNRChBVlg1MTJCVyB1OHg2NCwgICAgIGF2eDUxMmJ3LCAgICAgIDY0dTEp LAorICAgIFNJTUQoQVZYNTEyQlcgczE2eDMyLCAgICBhdng1MTJidywgICAgICA2NGkyKSwKKyAg ICBTSU1EKEFWWDUxMkJXIHUxNngzMiwgICAgYXZ4NTEyYncsICAgICAgNjR1MiksCisgICAgQVZY NTEyVkwoQlcrVkwgczh4MTYsICAgIGF2eDUxMmJ3LCAgICAgIDE2aTEpLAorICAgIEFWWDUxMlZM KEJXK1ZMIHU4eDE2LCAgICBhdng1MTJidywgICAgICAxNnUxKSwKKyAgICBBVlg1MTJWTChCVytW TCBzOHgzMiwgICAgYXZ4NTEyYncsICAgICAgMzJpMSksCisgICAgQVZYNTEyVkwoQlcrVkwgdTh4 MzIsICAgIGF2eDUxMmJ3LCAgICAgIDMydTEpLAorICAgIEFWWDUxMlZMKEJXK1ZMIHMxNng4LCAg ICBhdng1MTJidywgICAgICAxNmkyKSwKKyAgICBBVlg1MTJWTChCVytWTCB1MTZ4OCwgICAgYXZ4 NTEyYncsICAgICAgMTZ1MiksCisgICAgQVZYNTEyVkwoQlcrVkwgczE2eDE2LCAgIGF2eDUxMmJ3 LCAgICAgIDMyaTIpLAorICAgIEFWWDUxMlZMKEJXK1ZMIHUxNngxNiwgICBhdng1MTJidywgICAg ICAzMnUyKSwKICN1bmRlZiBBVlg1MTJWTF8KICN1bmRlZiBBVlg1MTJWTAogI3VuZGVmIFNJTURf CgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs