From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v7 09/49] x86emul: support AVX512{F, BW} down conversion moves Date: Wed, 19 Dec 2018 07:41:49 -0700 Message-ID: <5C1A58AD02000078002078F2@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 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 1gZd2o-0003PT-6J for xen-devel@lists.xenproject.org; Wed, 19 Dec 2018 14:41:54 +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 Tm90ZSB0aGF0IHRoZSB2cG1vdnsscyx1c317ZCxxfXcgdGFibGUgZW50cmllcyBpbiBldmV4LWRp c3A4LmMgYXJlCnNsaWdodGx5IGRpZmZlcmVudCBmcm9tIHdoYXQgb25lIHdvdWxkIGV4cGVjdCwg ZHVlIHRvIHRoZW0gcmVxdWlyaW5nCkVWRVguVyB0byBiZSB6ZXJvLgoKU2lnbmVkLW9mZi1ieTog SmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0Kdjc6IGVhLnR5cGUgPT0gT1BfKiAt PiBlYS50eXBlICE9IE9QXyouIFJlLWJhc2Ugb3ZlciBjaGFuZ2UgaW4gcHJldmlvdXMKICAgIHBh dGNoLiBSZS1iYXNlLgp2NTogQWxzbyBhZGp1c3QgeDg2X2luc25faXNfbWVtX3dyaXRlKCkuCnY0 OiBBbHNvICNVRCB3aGVuIGV2ZXgueiBpcyBzZXQgd2l0aCBhIG1lbW9yeSBvcGVyYW5kLgp2Mzog TmV3LgoKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL2V2ZXgtZGlzcDguYworKysgYi90 b29scy90ZXN0cy94ODZfZW11bGF0b3IvZXZleC1kaXNwOC5jCkBAIC0xNzcsMTEgKzE3NywyNiBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyZl9hbGxbXSA9CiAgICAgSU5TTihwbWF4 dSwgICAgICAgIDY2LCAwZjM4LCAzZiwgICAgdmwsICAgICBkcSwgdmwpLAogICAgIElOU04ocG1p bnMsICAgICAgICA2NiwgMGYzOCwgMzksICAgIHZsLCAgICAgZHEsIHZsKSwKICAgICBJTlNOKHBt aW51LCAgICAgICAgNjYsIDBmMzgsIDNiLCAgICB2bCwgICAgIGRxLCB2bCksCisgICAgSU5TTihw bW92ZGIsICAgICAgIGYzLCAwZjM4LCAzMSwgICAgdmxfNCwgICAgYiwgdmwpLAorICAgIElOU04o cG1vdmR3LCAgICAgICBmMywgMGYzOCwgMzMsICAgIHZsXzIsICAgIGIsIHZsKSwKKyAgICBJTlNO KHBtb3ZxYiwgICAgICAgZjMsIDBmMzgsIDMyLCAgICB2bF84LCAgICBiLCB2bCksCisgICAgSU5T TihwbW92cWQsICAgICAgIGYzLCAwZjM4LCAzNSwgICAgdmxfMiwgZF9uYiwgdmwpLAorICAgIElO U04ocG1vdnF3LCAgICAgICBmMywgMGYzOCwgMzQsICAgIHZsXzQsICAgIGIsIHZsKSwKKyAgICBJ TlNOKHBtb3ZzZGIsICAgICAgZjMsIDBmMzgsIDIxLCAgICB2bF80LCAgICBiLCB2bCksCisgICAg SU5TTihwbW92c2R3LCAgICAgIGYzLCAwZjM4LCAyMywgICAgdmxfMiwgICAgYiwgdmwpLAorICAg IElOU04ocG1vdnNxYiwgICAgICBmMywgMGYzOCwgMjIsICAgIHZsXzgsICAgIGIsIHZsKSwKKyAg ICBJTlNOKHBtb3ZzcWQsICAgICAgZjMsIDBmMzgsIDI1LCAgICB2bF8yLCBkX25iLCB2bCksCisg ICAgSU5TTihwbW92c3F3LCAgICAgIGYzLCAwZjM4LCAyNCwgICAgdmxfNCwgICAgYiwgdmwpLAog ICAgIElOU04ocG1vdnN4YmQsICAgICA2NiwgMGYzOCwgMjEsICAgIHZsXzQsICAgIGIsIHZsKSwK ICAgICBJTlNOKHBtb3ZzeGJxLCAgICAgNjYsIDBmMzgsIDIyLCAgICB2bF84LCAgICBiLCB2bCks CiAgICAgSU5TTihwbW92c3h3ZCwgICAgIDY2LCAwZjM4LCAyMywgICAgdmxfMiwgICAgdywgdmwp LAogICAgIElOU04ocG1vdnN4d3EsICAgICA2NiwgMGYzOCwgMjQsICAgIHZsXzQsICAgIHcsIHZs KSwKICAgICBJTlNOKHBtb3ZzeGRxLCAgICAgNjYsIDBmMzgsIDI1LCAgICB2bF8yLCBkX25iLCB2 bCksCisgICAgSU5TTihwbW92dXNkYiwgICAgIGYzLCAwZjM4LCAxMSwgICAgdmxfNCwgICAgYiwg dmwpLAorICAgIElOU04ocG1vdnVzZHcsICAgICBmMywgMGYzOCwgMTMsICAgIHZsXzIsICAgIGIs IHZsKSwKKyAgICBJTlNOKHBtb3Z1c3FiLCAgICAgZjMsIDBmMzgsIDEyLCAgICB2bF84LCAgICBi LCB2bCksCisgICAgSU5TTihwbW92dXNxZCwgICAgIGYzLCAwZjM4LCAxNSwgICAgdmxfMiwgZF9u YiwgdmwpLAorICAgIElOU04ocG1vdnVzcXcsICAgICBmMywgMGYzOCwgMTQsICAgIHZsXzQsICAg IGIsIHZsKSwKICAgICBJTlNOKHBtb3Z6eGJkLCAgICAgNjYsIDBmMzgsIDMxLCAgICB2bF80LCAg ICBiLCB2bCksCiAgICAgSU5TTihwbW92enhicSwgICAgIDY2LCAwZjM4LCAzMiwgICAgdmxfOCwg ICAgYiwgdmwpLAogICAgIElOU04ocG1vdnp4d2QsICAgICA2NiwgMGYzOCwgMzMsICAgIHZsXzIs ICAgIHcsIHZsKSwKQEAgLTI4NCw3ICsyOTksMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXN0 IGF2eDUxMmJ3X2FsbFtdCiAgICAgSU5TTihwbWluc3csICAgICAgNjYsICAgMGYsIGVhLCAgICB2 bCwgICAgdywgdmwpLAogICAgIElOU04ocG1pbnViLCAgICAgIDY2LCAgIDBmLCBkYSwgICAgdmws ICAgIGIsIHZsKSwKICAgICBJTlNOKHBtaW51dywgICAgICA2NiwgMGYzOCwgM2EsICAgIHZsLCAg ICB3LCB2bCksCisgICAgSU5TTihwbW92c3diLCAgICAgZjMsIDBmMzgsIDIwLCAgICB2bF8yLCAg YiwgdmwpLAogICAgIElOU04ocG1vdnN4YncsICAgIDY2LCAwZjM4LCAyMCwgICAgdmxfMiwgIGIs IHZsKSwKKyAgICBJTlNOKHBtb3Z1c3diLCAgICBmMywgMGYzOCwgMTAsICAgIHZsXzIsICBiLCB2 bCksCisgICAgSU5TTihwbW92d2IsICAgICAgZjMsIDBmMzgsIDMwLCAgICB2bF8yLCAgYiwgdmwp LAogICAgIElOU04ocG1vdnp4YncsICAgIDY2LCAwZjM4LCAzMCwgICAgdmxfMiwgIGIsIHZsKSwK ICAgICBJTlNOKHBtdWxodXcsICAgICA2NiwgICAwZiwgZTQsICAgIHZsLCAgICB3LCB2bCksCiAg ICAgSU5TTihwbXVsaHcsICAgICAgNjYsICAgMGYsIGU1LCAgICB2bCwgICAgdywgdmwpLAotLS0g YS90b29scy90ZXN0cy94ODZfZW11bGF0b3Ivc2ltZC5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9l bXVsYXRvci9zaW1kLmMKQEAgLTI3Nyw2ICsyNzcsMTcgQEAgc3RhdGljIGlubGluZSBib29sIF90 b19ib29sKGJ5dGVfdmVjX3QgYgogI2VuZGlmCiAjaWYgKElOVF9TSVpFID09IDQgfHwgVUlOVF9T SVpFID09IDQgfHwgSU5UX1NJWkUgPT0gOCB8fCBVSU5UX1NJWkUgPT0gOCkgJiYgXAogICAgICBk ZWZpbmVkKF9fQVZYNTEyRl9fKSAmJiAoVkVDX1NJWkUgPT0gNjQgfHwgZGVmaW5lZChfX0FWWDUx MlZMX18pKQorIyBpZiBFTEVNX0NPVU5UID09IDggLyogdmV4dHJhY3RpezMyLDY0fXg0ICovIHx8 IFwKKyAgICAgKEVMRU1fQ09VTlQgPT0gMTYgJiYgRUxFTV9TSVpFID09IDQgJiYgZGVmaW5lZChf X0FWWDUxMkRRX18pKSAvKiB2ZXh0cmFjdGkzMng4ICovIHx8IFwKKyAgICAgKEVMRU1fQ09VTlQg PT0gNCAmJiBFTEVNX1NJWkUgPT0gOCAmJiBkZWZpbmVkKF9fQVZYNTEyRFFfXykpIC8qIHZleHRy YWN0aTY0eDIgKi8KKyMgIGRlZmluZSBsb3dfaGFsZih4KSAoeyBcCisgICAgaGFsZl90IHRfOyBc CisgICAgYXNtICggInZleHRyYWN0aSVjW3ddeCVjW25dICQwLCAlW3NdLCAlW2RdIiBcCisgICAg ICAgICAgOiBbZF0gIj1tIiAodF8pIFwKKyAgICAgICAgICA6IFtzXSAidiIgKHgpLCBbd10gImki IChFTEVNX1NJWkUgKiA4KSwgW25dICJpIiAoRUxFTV9DT1VOVCAvIDIpICk7IFwKKyAgICB0Xzsg XAorfSkKKyMgZW5kaWYKICMgaWYgSU5UX1NJWkUgPT0gNCB8fCBVSU5UX1NJWkUgPT0gNAogIyAg ZGVmaW5lIGJyb2FkY2FzdCh4KSAoeyBcCiAgICAgdmVjX3QgdF87IFwKQEAgLTI5MSw2ICszMDIs NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX3RvX2Jvb2woYnl0ZV92ZWNfdCBiCiB9KQogIyAgZGVm aW5lIG1peCh4LCB5KSAoKHZlY190KUIobW92ZHFhMzJfLCBfbWFzaywgKHZzaV90KSh4KSwgKHZz aV90KSh5KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDBiMDEwMTAxMDEwMTAx MDEwMSAmICgoMSA8PCBFTEVNX0NPVU5UKSAtIDEpKSkpCisjICBkZWZpbmUgc2hyaW5rMSh4KSAo KGhhbGZfdClCKHBtb3ZxZCwgX21hc2ssICh2ZGlfdCkoeCksICh2c2lfaGFsZl90KXt9LCB+MCkp CiAjIGVsaWYgSU5UX1NJWkUgPT0gOCB8fCBVSU5UX1NJWkUgPT0gOAogIyAgZGVmaW5lIGJyb2Fk Y2FzdCh4KSAoeyBcCiAgICAgdmVjX3QgdF87IFwKQEAgLTcyMCw2ICs3MzIsMjcgQEAgc3RhdGlj IGlubGluZSBib29sIF90b19ib29sKGJ5dGVfdmVjX3QgYgogIyBlbmRpZgogI2VuZGlmCiAKKyNp ZiBWRUNfU0laRSA+PSAxNgorCisjIGlmICFkZWZpbmVkKGxvd19oYWxmKSAmJiBkZWZpbmVkKEhB TEZfU0laRSkKK3N0YXRpYyBpbmxpbmUgaGFsZl90IGxvd19oYWxmKHZlY190IHgpCit7CisjICBp ZiBIQUxGX1NJWkUgPCBWRUNfU0laRQorICAgIGhhbGZfdCB5OworICAgIHVuc2lnbmVkIGludCBp OworCisgICAgZm9yICggaSA9IDA7IGkgPCBFTEVNX0NPVU5UIC8gMjsgKytpICkKKyAgICAgICAg eVtpXSA9IHhbaV07CisKKyAgICByZXR1cm4geTsKKyMgIGVsc2UKKyAgICByZXR1cm4geDsKKyMg IGVuZGlmCit9CisjIGVuZGlmCisKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChfX0FWWDUxMkZfXykg JiYgZGVmaW5lZChGTE9BVF9TSVpFKQogIyBpbmNsdWRlICJzaW1kLWZtYS5jIgogI2VuZGlmCkBA IC0xMDg3LDYgKzExMjAsMjEgQEAgaW50IHNpbWRfdGVzdCh2b2lkKQogCiAjZW5kaWYKIAorI2lm IGRlZmluZWQod2lkZW4xKSAmJiBkZWZpbmVkKHNocmluazEpCisgICAgeworICAgICAgICBoYWxm X3QgYXV4MSA9IGxvd19oYWxmKHNyYyksIGF1eDI7CisKKyAgICAgICAgdG91Y2goYXV4MSk7Cisg ICAgICAgIHggPSB3aWRlbjEoYXV4MSk7CisgICAgICAgIHRvdWNoKHgpOworICAgICAgICBhdXgy ID0gc2hyaW5rMSh4KTsKKyAgICAgICAgdG91Y2goYXV4Mik7CisgICAgICAgIGZvciAoIGkgPSAw OyBpIDwgRUxFTV9DT1VOVCAvIDI7ICsraSApCisgICAgICAgICAgICBpZiAoIGF1eDJbaV0gIT0g c3JjW2ldICkKKyAgICAgICAgICAgICAgICByZXR1cm4gX19MSU5FX187CisgICAgfQorI2VuZGlm CisKICNpZmRlZiBkdXBfbG8KICAgICB0b3VjaChzcmMpOwogICAgIHggPSBkdXBfbG8oc3JjKTsK LS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3NpbWQuaAorKysgYi90b29scy90ZXN0cy94 ODZfZW11bGF0b3Ivc2ltZC5oCkBAIC03MCw2ICs3MCwyMyBAQCB0eXBlZGVmIGludCBfX2F0dHJp YnV0ZV9fKCh2ZWN0b3Jfc2l6ZShWCiB0eXBlZGVmIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKCh2 ZWN0b3Jfc2l6ZShWRUNfU0laRSkpKSB2ZGlfdDsKICNlbmRpZgogCisjaWYgVkVDX1NJWkUgPj0g MTYKKworIyBpZiBFTEVNX0NPVU5UID49IDIKKyMgIGlmIFZFQ19TSVpFID4gMzIKKyMgICBkZWZp bmUgSEFMRl9TSVpFIChWRUNfU0laRSAvIDIpCisjICBlbHNlCisjICAgZGVmaW5lIEhBTEZfU0la RSAxNgorIyAgZW5kaWYKK3R5cGVkZWYgdHlwZW9mKCh2ZWNfdCl7fVswXSkgX19hdHRyaWJ1dGVf XygodmVjdG9yX3NpemUoSEFMRl9TSVpFKSkpIGhhbGZfdDsKK3R5cGVkZWYgY2hhciBfX2F0dHJp YnV0ZV9fKCh2ZWN0b3Jfc2l6ZShIQUxGX1NJWkUpKSkgdnFpX2hhbGZfdDsKK3R5cGVkZWYgc2hv cnQgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoSEFMRl9TSVpFKSkpIHZoaV9oYWxmX3Q7Cit0 eXBlZGVmIGludCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShIQUxGX1NJWkUpKSkgdnNpX2hh bGZfdDsKK3R5cGVkZWYgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKEhBTEZf U0laRSkpKSB2ZGlfaGFsZl90OworIyBlbmRpZgorCisjZW5kaWYKKwogI2lmIFZFQ19TSVpFID09 IDE2CiAjIGRlZmluZSBCKG4sIHMsIGEuLi4pICAgX19idWlsdGluX2lhMzJfICMjIG4gIyMgMTI4 ICMjIHMoYSkKICMgZGVmaW5lIEJfKG4sIHMsIGEuLi4pICBfX2J1aWx0aW5faWEzMl8gIyMgbiAj IyAgICAgICAgcyhhKQotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUu YworKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpAQCAtMzA2OCw3 ICszMDY4LDIyIEBAIHg4Nl9kZWNvZGUoCiAgICAgICAgICAgICAgICAgZCB8PSB2U0lCOwogICAg ICAgICAgICAgc3RhdGUtPnNpbWRfc2l6ZSA9IGV4dDBmMzhfdGFibGVbYl0uc2ltZF9zaXplOwog ICAgICAgICAgICAgaWYgKCBldmV4X2VuY29kZWQoKSApCi0gICAgICAgICAgICAgICAgZGlzcDhz Y2FsZSA9IGRlY29kZV9kaXNwOHNjYWxlKGV4dDBmMzhfdGFibGVbYl0uZDhzLCBzdGF0ZSk7Cisg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBWUE1P VlVTKiBhcmUgaWRlbnRpY2FsIHRvIFZQTU9WUyogRGlzcDgtc2NhbGluZy13aXNlLCBidXQKKyAg ICAgICAgICAgICAgICAgKiB0aGVpciBhdHRyaWJ1dGVzIGRvbid0IG1hdGNoIHRob3NlIG9mIHRo ZSB2ZXhfNjYgZW5jb2RlZAorICAgICAgICAgICAgICAgICAqIGluc25zIHdpdGggdGhlIHNhbWUg YmFzZSBvcGNvZGVzLiBSYXRoZXIgdGhhbiBhZGRpbmcgbmV3CisgICAgICAgICAgICAgICAgICog Y29sdW1ucyB0byB0aGUgdGFibGUsIGhhbmRsZSB0aGlzIGhlcmUgZm9yIG5vdy4KKyAgICAgICAg ICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoIGV2ZXgucGZ4ICE9IHZleF9mMyB8fCAo YiAmIDB4ZjgpICE9IDB4MTAgKQorICAgICAgICAgICAgICAgICAgICBkaXNwOHNjYWxlID0gZGVj b2RlX2Rpc3A4c2NhbGUoZXh0MGYzOF90YWJsZVtiXS5kOHMsIHN0YXRlKTsKKyAgICAgICAgICAg ICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBkaXNwOHNj YWxlID0gZGVjb2RlX2Rpc3A4c2NhbGUoZXh0MGYzOF90YWJsZVtiICsgMHgxMF0uZDhzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUpOwor ICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+c2ltZF9zaXplID0gc2ltZF9vdGhlcjsKKyAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg ICBjYXNlIGV4dF8wZjNhOgpAQCAtODM0NywxMCArODM2MiwxNCBAQCB4ODZfZW11bGF0ZSgKICAg ICAgICAgb3BfYnl0ZXMgPSAxNiA+PiAocG1vdl9jb252ZXJ0X2RlbHRhW2IgJiA3XSAtIHZleC5s KTsKICAgICAgICAgZ290byBzaW1kXzBmX2ludDsKIAorICAgIGNhc2UgWDg2RU1VTF9PUENfRVZF WF9GMygweDBmMzgsIDB4MTApOiAvKiB2cG1vdnVzd2IgW3h5el1tbSx7eCx5fW1tL21lbXtrfSAq LwogICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmMzgsIDB4MjApOiAvKiB2cG1vdnN4 Yncge3gseX1tbS9tZW0sW3h5el1tbXtrfSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF9G MygweDBmMzgsIDB4MjApOiAvKiB2cG1vdnN3YiBbeHl6XW1tLHt4LHl9bW0vbWVte2t9ICovCiAg ICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwgMHgzMCk6IC8qIHZwbW92enhidyB7 eCx5fW1tL21lbSxbeHl6XW1te2t9ICovCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYX0YzKDB4 MGYzOCwgMHgzMCk6IC8qIHZwbW92d2IgW3h5el1tbSx7eCx5fW1tL21lbXtrfSAqLwogICAgICAg ICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJidyk7Ci0gICAgICAgIC8qIGZhbGwgdGhy b3VnaCAqLworICAgICAgICBpZiAoIGV2ZXgucGZ4ICE9IHZleF9mMyApCisgICAgICAgIHsKICAg ICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDIxKTogLyogdnBtb3ZzeGJkIHht bS9tZW0sW3h5el1tbXtrfSAqLwogICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmMzgs IDB4MjIpOiAvKiB2cG1vdnN4YnEgeG1tL21lbSxbeHl6XW1te2t9ICovCiAgICAgY2FzZSBYODZF TVVMX09QQ19FVkVYXzY2KDB4MGYzOCwgMHgyMyk6IC8qIHZwbW92c3h3ZCB7eCx5fW1tL21lbSxb eHl6XW1te2t9ICovCkBAIC04MzYxLDcgKzgzODAsMjkgQEAgeDg2X2VtdWxhdGUoCiAgICAgY2Fz ZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwgMHgzMyk6IC8qIHZwbW92enh3ZCB7eCx5fW1t L21lbSxbeHl6XW1te2t9ICovCiAgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwg MHgzNCk6IC8qIHZwbW92enh3cSB4bW0vbWVtLFt4eXpdbW17a30gKi8KICAgICBjYXNlIFg4NkVN VUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDM1KTogLyogdnBtb3Z6eGRxIHt4LHl9bW0vbWVtLFt4 eXpdbW17a30gKi8KLSAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKGV2ZXguYnJzIHx8IChl dmV4LncgJiYgKGIgJiA3KSA9PSA1KSwgRVhDX1VEKTsKKyAgICAgICAgICAgIGdlbmVyYXRlX2V4 Y2VwdGlvbl9pZihldmV4LncgJiYgKGIgJiA3KSA9PSA1LCBFWENfVUQpOworICAgICAgICB9Cisg ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF9GMygweDBm MzgsIDB4MTEpOiAvKiB2cG1vdnVzZGIgW3h5el1tbSx4bW0vbWVte2t9ICovCisgICAgY2FzZSBY ODZFTVVMX09QQ19FVkVYX0YzKDB4MGYzOCwgMHgxMik6IC8qIHZwbW92dXNxYiBbeHl6XW1tLHht bS9tZW17a30gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfRjMoMHgwZjM4LCAweDEzKTog LyogdnBtb3Z1c2R3IFt4eXpdbW0se3gseX1tbS9tZW17a30gKi8KKyAgICBjYXNlIFg4NkVNVUxf T1BDX0VWRVhfRjMoMHgwZjM4LCAweDE0KTogLyogdnBtb3Z1c3F3IFt4eXpdbW0seG1tL21lbXtr fSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF9GMygweDBmMzgsIDB4MTUpOiAvKiB2cG1v dnVzcWQgW3h5el1tbSx7eCx5fW1tL21lbXtrfSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZF WF9GMygweDBmMzgsIDB4MjEpOiAvKiB2cG1vdnNkYiBbeHl6XW1tLHhtbS9tZW17a30gKi8KKyAg ICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfRjMoMHgwZjM4LCAweDIyKTogLyogdnBtb3ZzcWIgW3h5 el1tbSx4bW0vbWVte2t9ICovCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYX0YzKDB4MGYzOCwg MHgyMyk6IC8qIHZwbW92c2R3IFt4eXpdbW0se3gseX1tbS9tZW17a30gKi8KKyAgICBjYXNlIFg4 NkVNVUxfT1BDX0VWRVhfRjMoMHgwZjM4LCAweDI0KTogLyogdnBtb3ZzcXcgW3h5el1tbSx4bW0v bWVte2t9ICovCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYX0YzKDB4MGYzOCwgMHgyNSk6IC8q IHZwbW92c3FkIFt4eXpdbW0se3gseX1tbS9tZW17a30gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BD X0VWRVhfRjMoMHgwZjM4LCAweDMxKTogLyogdnBtb3ZkYiBbeHl6XW1tLHhtbS9tZW17a30gKi8K KyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfRjMoMHgwZjM4LCAweDMyKTogLyogdnBtb3ZxYiBb eHl6XW1tLHhtbS9tZW17a30gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfRjMoMHgwZjM4 LCAweDMzKTogLyogdnBtb3ZkdyBbeHl6XW1tLHt4LHl9bW0vbWVte2t9ICovCisgICAgY2FzZSBY ODZFTVVMX09QQ19FVkVYX0YzKDB4MGYzOCwgMHgzNCk6IC8qIHZwbW92cXcgW3h5el1tbSx4bW0v bWVte2t9ICovCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYX0YzKDB4MGYzOCwgMHgzNSk6IC8q IHZwbW92cWQgW3h5el1tbSx7eCx5fW1tL21lbXtrfSAqLworICAgICAgICAgICAgZ2VuZXJhdGVf ZXhjZXB0aW9uX2lmKGV2ZXgudyB8fCAoZWEudHlwZSAhPSBPUF9SRUcgJiYgZXZleC56KSwgRVhD X1VEKTsKKyAgICAgICAgICAgIGQgPSBEc3RNZW0gfCBTcmNSZWcgfCBUd29PcDsKKyAgICAgICAg fQorICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoZXZleC5icnMsIEVYQ19VRCk7CiAgICAg ICAgIG9wX2J5dGVzID0gMzIgPj4gKHBtb3ZfY29udmVydF9kZWx0YVtiICYgN10gKyAxIC0gZXZl eC5scik7CiAgICAgICAgIGVsZW1fYnl0ZXMgPSAoYiAmIDcpIDwgMyA/IDEgOiAoYiAmIDcpICE9 IDUgPyAyIDogNDsKICAgICAgICAgZ290byBhdng1MTJmX25vX3NhZTsKQEAgLTEwMjAwLDYgKzEw MjQxLDEyIEBAIHg4Nl9pbnNuX2lzX21lbV93cml0ZShjb25zdCBzdHJ1Y3QgeDg2X2UKICAgICBj YXNlIFg4NkVNVUxfT1BDKDB4MGYsIDB4YWIpOiAgICAgICAgLyogQlRTICovCiAgICAgY2FzZSBY ODZFTVVMX09QQygweDBmLCAweGIzKTogICAgICAgIC8qIEJUUiAqLwogICAgIGNhc2UgWDg2RU1V TF9PUEMoMHgwZiwgMHhiYik6ICAgICAgICAvKiBCVEMgKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BD X0VWRVhfRjMoMHgwZjM4LCAweDEwKSAuLi4KKyAgICAgICAgIFg4NkVNVUxfT1BDX0VWRVhfRjMo MHgwZjM4LCAweDE1KTogLyogVlBNT1ZVUyogKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhf RjMoMHgwZjM4LCAweDIwKSAuLi4KKyAgICAgICAgIFg4NkVNVUxfT1BDX0VWRVhfRjMoMHgwZjM4 LCAweDI1KTogLyogVlBNT1ZTKiAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF9GMygweDBm MzgsIDB4MzApIC4uLgorICAgICAgICAgWDg2RU1VTF9PUENfRVZFWF9GMygweDBmMzgsIDB4MzUp OiAvKiBWUE1PVntELFEsV30qICovCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSAw eGQ5OgoKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0 cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==