From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v5 03/47] x86emul: test for correct EVEX Disp8 scaling Date: Mon, 19 Nov 2018 03:14:28 -0700 Message-ID: <5BF28D0402000078001FD405@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5BF289D802000078001FD3DF@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 1gOgZe-0005SM-04 for xen-devel@lists.xenproject.org; Mon, 19 Nov 2018 10:14:34 +0000 In-Reply-To: <5BF289D802000078001FD3DF@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 QmVzaWRlcyB0aGUgYWxyZWFkeSBleGlzdGluZyB0ZXN0cyAod2hpY2ggYXJlIGdvaW5nIHRvIGJl IGV4dGVuZGVkIG9uY2UKcmVzcGVjdGl2ZSBJU0EgZXh0ZW5zaW9uIHN1cHBvcnQgaXMgY29tcGxl dGUpLCBsZXQncyBhbHNvIGVuc3VyZSBmb3IKZXZlcnkgaW5kaXZpZHVhbCBpbnNuIHRoYXQgdGhl aXIgRGlzcDggc2NhbGluZyAoYW5kIG1lbW9yeSBhY2Nlc3Mgd2lkdGgpCmFyZSBjb3JyZWN0LgoK U2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KdjU6IEZp eCB1cHBlciBib3VuZCBvZiBmaXJzdCBhY2Nlc3MgY2hlY2sgbG9vcC4gQWRkIGNvbW1lbnRzLiBS ZS1iYXNlLgp2NDogSW50cm9kdWNlIEVTWl9kX1dJRy4KdjM6IE5ldy4KCi0tLSBhL3Rvb2xzL3Rl c3RzL3g4Nl9lbXVsYXRvci9NYWtlZmlsZQorKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3Iv TWFrZWZpbGUKQEAgLTE0NCw3ICsxNDQsNyBAQCAkKGFkZHN1ZmZpeCAuaCwkKFNJTUQpICQoRk1B KSAkKFNHKSk6IHNpCiAKIHhvcC5oOiBzaW1kLWZtYS5jCiAKLSQoVEFSR0VUKTogeDg2LWVtdWxh dGUubyBjcHVpZC5vIHRlc3RfeDg2X2VtdWxhdG9yLm8gd3JhcHBlcnMubworJChUQVJHRVQpOiB4 ODYtZW11bGF0ZS5vIGNwdWlkLm8gdGVzdF94ODZfZW11bGF0b3IubyBldmV4LWRpc3A4Lm8gd3Jh cHBlcnMubwogCSQoSE9TVENDKSAkKEhPU1RDRkxBR1MpIC1vICRAICReCiAKIC5QSE9OWTogY2xl YW4KQEAgLTE3MSw3ICsxNzEsNyBAQCB4ODYuaCA6PSAkKGFkZHByZWZpeCAkKFhFTl9ST09UKS90 b29scy9pCiAgICAgICAgICAgICAgICAgICAgICB4ODYtdmVuZG9ycy5oIHg4Ni1kZWZucy5oIG1z ci1pbmRleC5oKQogeDg2X2VtdWxhdGUuaCA6PSB4ODYtZW11bGF0ZS5oIHg4Nl9lbXVsYXRlL3g4 Nl9lbXVsYXRlLmggJCh4ODYuaCkKIAoteDg2LWVtdWxhdGUubyB0ZXN0X3g4Nl9lbXVsYXRvci5v IHdyYXBwZXJzLm86ICUubzogJS5jICQoeDg2X2VtdWxhdGUuaCkKK3g4Ni1lbXVsYXRlLm8gdGVz dF94ODZfZW11bGF0b3IubyBldmV4LWRpc3A4Lm8gd3JhcHBlcnMubzogJS5vOiAlLmMgJCh4ODZf ZW11bGF0ZS5oKQogCSQoSE9TVENDKSAkKEhPU1RDRkxBR1MpIC1jIC1nIC1vICRAICQ8CiAKIHg4 Ni1lbXVsYXRlLm86IHg4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKLS0tIC9kZXYvbnVsbAorKysg Yi90b29scy90ZXN0cy94ODZfZW11bGF0b3IvZXZleC1kaXNwOC5jCkBAIC0wLDAgKzEsNDcxIEBA CisjaW5jbHVkZSAieDg2LWVtdWxhdGUuaCIKKworI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1 ZGUgPHN0ZGlvLmg+CisKK3N0cnVjdCB0ZXN0IHsKKyAgICBjb25zdCBjaGFyICptbmVtb25pYzsK KyAgICB1bnNpZ25lZCBpbnQgb3BjOjg7CisgICAgdW5zaWduZWQgaW50IHNwYzoyOworICAgIHVu c2lnbmVkIGludCBwZng6MjsKKyAgICB1bnNpZ25lZCBpbnQgdnN6OjM7CisgICAgdW5zaWduZWQg aW50IGVzejo0OworICAgIHVuc2lnbmVkIGludCBzY2FsZToxOworICAgIHVuc2lnbmVkIGludCBl eHQ6MzsKK307CisKK2VudW0gc3BjIHsKKyAgICBTUENfaW52YWxpZCwKKyAgICBTUENfMGYsCisg ICAgU1BDXzBmMzgsCisgICAgU1BDXzBmM2EsCit9OworCitlbnVtIHBmeCB7CisgICAgUEZYXywK KyAgICBQRlhfNjYsCisgICAgUEZYX2YzLAorICAgIFBGWF9mMgorfTsKKworZW51bSB2bCB7Cisg ICAgVkxfMTI4LAorICAgIFZMXzI1NiwKKyAgICBWTF81MTIsCit9OworCitlbnVtIHNjYWxlIHsg Lyogc2NhbGUgYnkgbWVtb3J5IG9wZXJhbmQgLi4uICovCisgICAgU0NfdmwsICAgLyogLi4uIHZl Y3RvciBsZW5ndGggKi8KKyAgICBTQ19lbCwgICAvKiAuLi4gZWxlbWVudCBsZW5ndGggKi8KK307 CisKKy8qCisgKiBWZWN0b3Igc2l6ZSBpcyBkZXRlcm1pbmVkIGVpdGhlciBmcm9tIEVWRVguTCdM IChWTCkgb3IgdmVjdG9yCisgKiBlbGVtZW50IHNpemUgKEVMKSwgb2Z0ZW4gY29udHJvbGxlZCBi eSBFVkVYLlcgKHNlZSBlbnVtIGVzeikuCisgKi8KK2VudW0gdnN6IHsKKyAgICBWU1pfdmwsCisg ICAgVlNaX3ZsXzIsIC8qIFZMIC8gMiAqLworICAgIFZTWl92bF80LCAvKiBWTCAvIDQgKi8KKyAg ICBWU1pfdmxfOCwgLyogVkwgLyA4ICovCisgICAgLyogIm5vIGJyb2FkY2FzdCIgaW1wbGllZCBm cm9tIGhlcmUgb24uICovCisgICAgVlNaX2VsLAorICAgIFZTWl9lbF8yLCAvKiBFTCAqIDIgKi8K KyAgICBWU1pfZWxfNCwgLyogRUwgKiA0ICovCisgICAgVlNaX2VsXzgsIC8qIEVMICogOCAqLwor fTsKKworLyoKKyAqIFZlY3RvciBlbGVtZW50IHNpemUgaXMgZWl0aGVyIGFuIG9wY29kZSBhdHRy aWJ1dGUgb3Igb2Z0ZW4gZGV0ZXJtaW5lZAorICogYnkgRVZFWC5XIChpbiB3aGljaCBjYXNlIGVu dW1lcmF0b3JzIGJlbG93IG5hbWUgdHdvIHNpemVzKS4gSW5zdHJ1Y3Rpb25zCisgKiBhY2Nlc3Np bmcgR1BScyBvZnRlbiB1c2UgRVZFWC5XIHRvIHNlbGVjdCBiZXR3ZWVuIDMyLSBhbmQgNjQtYml0 IEdQUgorICogd2lkdGgsIGJ1dCB0aGlzIGRpc3RpbmN0aW9uIGdvZXMgYXdheSBvdXRzaWRlIG9m IDY0LWJpdCBtb2RlIChhbmQgRVZFWC5XCisgKiBpcyBpZ25vcmVkIHRoZXJlKS4KKyAqLworZW51 bSBlc3ogeworICAgIEVTWl9kLAorICAgIEVTWl9xLAorICAgIEVTWl9kcSwKKyAgICBFU1pfc2Qs CisgICAgRVNaX2RfbmIsCisgICAgRVNaX3FfbmIsCisgICAgLyogIm5vIGJyb2FkY2FzdCIgaW1w bGllZCBmcm9tIGhlcmUgb24uICovCisjaWZkZWYgX19pMzg2X18KKyAgICBFU1pfZF9XSUcsCisj ZW5kaWYKKyAgICBFU1pfYiwKKyAgICBFU1pfdywKKyAgICBFU1pfYncsCit9OworCisjaWZuZGVm IF9faTM4Nl9fCisjIGRlZmluZSBFU1pfZHE2NCBFU1pfZHEKKyNlbHNlCisjIGRlZmluZSBFU1pf ZHE2NCBFU1pfZF9XSUcKKyNlbmRpZgorCisjZGVmaW5lIElOU05YKG0sIHAsIHNwLCBvLCBlLCB2 cywgZXMsIHNjKSB7IFwKKyAgICAubW5lbW9uaWMgPSAjbSwgLm9wYyA9IDB4IyNvLCAuc3BjID0g U1BDXyMjc3AsIC5wZnggPSBQRlhfIyNwLCBcCisgICAgLnZzeiA9IFZTWl8jI3ZzLCAuZXN6ID0g RVNaXyMjZXMsIC5zY2FsZSA9IFNDXyMjc2MsIC5leHQgPSAwIyNlIFwKK30KKyNkZWZpbmUgSU5T TihtLCBwLCBzcCwgbywgdnMsIGVzLCBzYykgSU5TTlgobSwgcCwgc3AsIG8sIDAsIHZzLCBlcywg c2MpCisjZGVmaW5lIElOU05fUEZQKG0sIHNwLCBvKSBcCisgICAgSU5TTihtIyNwZCwgNjYsIHNw LCBvLCB2bCwgcSwgdmwpLCBcCisgICAgSU5TTihtIyNwcywgICAsIHNwLCBvLCB2bCwgZCwgdmwp CisjZGVmaW5lIElOU05fUEZQX05CKG0sIHNwLCBvKSBcCisgICAgSU5TTihtIyNwZCwgNjYsIHNw LCBvLCB2bCwgcV9uYiwgdmwpLCBcCisgICAgSU5TTihtIyNwcywgICAsIHNwLCBvLCB2bCwgZF9u YiwgdmwpCisjZGVmaW5lIElOU05fU0ZQKG0sIHNwLCBvKSBcCisgICAgSU5TTihtIyNzZCwgZjIs IHNwLCBvLCBlbCwgcSwgZWwpLCBcCisgICAgSU5TTihtIyNzcywgZjMsIHNwLCBvLCBlbCwgZCwg ZWwpCisKKyNkZWZpbmUgSU5TTl9GUChtLCBzcCwgbykgXAorICAgIElOU05fUEZQKG0sIHNwLCBv KSwgXAorICAgIElOU05fU0ZQKG0sIHNwLCBvKQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3Qg YXZ4NTEyZl9hbGxbXSA9IHsKKyAgICBJTlNOX1NGUChtb3YsICAgICAgICAgICAgMGYsIDEwKSwK KyAgICBJTlNOX1NGUChtb3YsICAgICAgICAgICAgMGYsIDExKSwKKyAgICBJTlNOX1BGUF9OQiht b3ZhLCAgICAgICAgMGYsIDI4KSwKKyAgICBJTlNOX1BGUF9OQihtb3ZhLCAgICAgICAgMGYsIDI5 KSwKKyAgICBJTlNOKG1vdmRxYTMyLCAgICAgNjYsICAgMGYsIDZmLCAgICB2bCwgICBkX25iLCB2 bCksCisgICAgSU5TTihtb3ZkcWEzMiwgICAgIDY2LCAgIDBmLCA3ZiwgICAgdmwsICAgZF9uYiwg dmwpLAorICAgIElOU04obW92ZHFhNjQsICAgICA2NiwgICAwZiwgNmYsICAgIHZsLCAgIHFfbmIs IHZsKSwKKyAgICBJTlNOKG1vdmRxYTY0LCAgICAgNjYsICAgMGYsIDdmLCAgICB2bCwgICBxX25i LCB2bCksCisgICAgSU5TTihtb3ZkcXUzMiwgICAgIGYzLCAgIDBmLCA2ZiwgICAgdmwsICAgZF9u YiwgdmwpLAorICAgIElOU04obW92ZHF1MzIsICAgICBmMywgICAwZiwgN2YsICAgIHZsLCAgIGRf bmIsIHZsKSwKKyAgICBJTlNOKG1vdmRxdTY0LCAgICAgZjMsICAgMGYsIDZmLCAgICB2bCwgICBx X25iLCB2bCksCisgICAgSU5TTihtb3ZkcXU2NCwgICAgIGYzLCAgIDBmLCA3ZiwgICAgdmwsICAg cV9uYiwgdmwpLAorICAgIElOU04obW92bnRkcSwgICAgICA2NiwgICAwZiwgZTcsICAgIHZsLCAg IGRfbmIsIHZsKSwKKyAgICBJTlNOKG1vdm50ZHFhLCAgICAgNjYsIDBmMzgsIDJhLCAgICB2bCwg ICBkX25iLCB2bCksCisgICAgSU5TTl9QRlBfTkIobW92bnQsICAgICAgIDBmLCAyYiksCisgICAg SU5TTl9QRlBfTkIobW92dSwgICAgICAgIDBmLCAxMCksCisgICAgSU5TTl9QRlBfTkIobW92dSwg ICAgICAgIDBmLCAxMSksCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyZl8x MjhbXSA9IHsKKyAgICBJTlNOKG1vdiwgICAgICAgNjYsICAgMGYsIDZlLCBlbCwgZHE2NCwgZWwp LAorICAgIElOU04obW92LCAgICAgICA2NiwgICAwZiwgN2UsIGVsLCBkcTY0LCBlbCksCisgICAg SU5TTihtb3ZxLCAgICAgIGYzLCAgIDBmLCA3ZSwgZWwsICAgIHEsIGVsKSwKKyAgICBJTlNOKG1v dnEsICAgICAgNjYsICAgMGYsIGQ2LCBlbCwgICAgcSwgZWwpLAorfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCB0ZXN0IGF2eDUxMmJ3X2FsbFtdID0geworICAgIElOU04obW92ZHF1OCwgICAgIGYy LCAgIDBmLCA2ZiwgICAgdmwsICAgIGIsIHZsKSwKKyAgICBJTlNOKG1vdmRxdTgsICAgICBmMiwg ICAwZiwgN2YsICAgIHZsLCAgICBiLCB2bCksCisgICAgSU5TTihtb3ZkcXUxNiwgICAgZjIsICAg MGYsIDZmLCAgICB2bCwgICAgdywgdmwpLAorICAgIElOU04obW92ZHF1MTYsICAgIGYyLCAgIDBm LCA3ZiwgICAgdmwsICAgIHcsIHZsKSwKK307CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHZsX2FsbFtdID0geyBWTF81MTIsIFZMXzEyOCwgVkxfMjU2IH07CitzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciB2bF8xMjhbXSA9IHsgVkxfMTI4IH07CisKKy8qCisgKiBUaGlzIHRhYmxlLCBp bmRpY2F0aW5nIHRoZSBwcmVzZW5jZSBvZiBhbiBpbW1lZGlhdGUgKGJ5dGUpIGZvciBhbiBvcGNv ZGUKKyAqIHNwYWNlIDBmIG1ham9yIG9wY29kZSwgaXMgaW5kZXhlZCBieSBoaWdoIG1ham9yIG9w Y29kZSBieXRlIG5pYmJsZSwgd2l0aAorICogZWFjaCB0YWJsZSBlbGVtZW50IHRoZW4gYml0LWlu ZGV4ZWQgYnkgbG93IG1ham9yIG9wY29kZSBieXRlIG5pYmJsZS4KKyAqLworc3RhdGljIGNvbnN0 IHVpbnQxNl90IGltbTBmWzE2XSA9IHsKKyAgICBbMHg3XSA9ICgxIDw8IDB4MCkgLyogdnBzaHVm KiAqLyB8CisgICAgICAgICAgICAoMSA8PCAweDEpIC8qIHZwc3tsbCxyYSxybH13ICovIHwKKyAg ICAgICAgICAgICgxIDw8IDB4MikgLyogdnBze2wscn1sZCwgdnB7cm9sLHJvcixzcmF9e2QscX0g Ki8gfAorICAgICAgICAgICAgKDEgPDwgMHgzKSAvKiB2cHN7bCxyfWx7LGR9cSAqLywKKyAgICBb MHhjXSA9ICgxIDw8IDB4MikgLyogdmNtcHtwLHN9e2Qsc30gKi8gfAorICAgICAgICAgICAgKDEg PDwgMHg0KSAvKiB2cGluc3J3ICovIHwKKyAgICAgICAgICAgICgxIDw8IDB4NSkgLyogdnBleHRy dyAqLyB8CisgICAgICAgICAgICAoMSA8PCAweDYpIC8qIHZzaHVmcHtkLHN9ICovLAorfTsKKwor c3RhdGljIHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgZW11bG9wczsKKworLyoKKyAqIEFjY2VzcyB0 cmFja2luZyAoYnkgZ3JhbnVsYXIpIGlzIHVzZWQgb24gdGhlIGZpcnN0IDY0IGJ5dGVzIG9mIGFk ZHJlc3MKKyAqIHNwYWNlLiBJbnN0cnVjdGlvbnMgZ2V0IGVuY29kZSB3aXRoIGEgcmF3IERpc3A4 IHZhbHVlIG9mIDEsIHdoaWNoIHRoZW4KKyAqIGdldHMgc2NhbGVkIGFjY29yZGluZ2x5LiBIZW5j ZSBhY2Nlc3NlcyBiZWxvdyB0aGUgYWRkcmVzcyA8c2NhbGluZyBmYWN0b3I+CisgKiBhcyB3ZWxs IGFzIGF0IG9yIGFib3ZlIDIgKiA8c2NhbGluZyBmYWN0b3I+IGFyZSBpbmRpY2F0aW9ucyBvZiBi dWdzLiBUbworICogYWlkIGRpYWdub3NpcyAvIGRlYnVnZ2luZywgdHJhY2sgYWxsIGFjY2Vzc2Vz IGJlbG93IDMgKiA8c2NhbGluZyBmYWN0b3I+LgorICogV2l0aCBBVlg1MTIgdGhlIG1heGltdW0g c2NhbGluZyBmYWN0b3IgaXMgNjQuCisgKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgYWNjZXNzZWRb MyAqIDY0XTsKKworc3RhdGljIGJvb2wgcmVjb3JkX2FjY2VzcyhlbnVtIHg4Nl9zZWdtZW50IHNl ZywgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBieXRlcykKK3sKKyAgICB3aGlsZSAoIGJ5dGVzLS0gKQorICAgIHsKKyAgICAgICAg aWYgKCBvZmZzZXQgPj0gQVJSQVlfU0laRShhY2Nlc3NlZCkgKQorICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworICAgICAgICArK2FjY2Vzc2VkW29mZnNldCsrXTsKKyAgICB9CisKKyAgICByZXR1 cm4gdHJ1ZTsKK30KKworc3RhdGljIGludCByZWFkKGVudW0geDg2X3NlZ21lbnQgc2VnLCB1bnNp Z25lZCBsb25nIG9mZnNldCwgdm9pZCAqcF9kYXRhLAorICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBieXRlcywgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCit7CisgICAgaWYgKCAh cmVjb3JkX2FjY2VzcyhzZWcsIG9mZnNldCwgYnl0ZXMpICkKKyAgICAgICAgcmV0dXJuIFg4NkVN VUxfVU5IQU5ETEVBQkxFOworICAgIG1lbXNldChwX2RhdGEsIDAsIGJ5dGVzKTsKKyAgICByZXR1 cm4gWDg2RU1VTF9PS0FZOworfQorCitzdGF0aWMgaW50IHdyaXRlKGVudW0geDg2X3NlZ21lbnQg c2VnLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdm9pZCAqcF9kYXRhLAorICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgYnl0ZXMsIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQorewor ICAgIGlmICggIXJlY29yZF9hY2Nlc3Moc2VnLCBvZmZzZXQsIGJ5dGVzKSApCisgICAgICAgIHJl dHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworfQor CitzdGF0aWMgdm9pZCB0ZXN0X29uZShjb25zdCBzdHJ1Y3QgdGVzdCAqdGVzdCwgZW51bSB2bCB2 bCwKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmluc3RyLCBzdHJ1Y3QgeDg2 X2VtdWxhdGVfY3R4dCAqY3R4dCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgdnN6LCBlc3osIGk7Cisg ICAgaW50IHJjOworICAgIGJvb2wgc2cgPSBzdHJzdHIodGVzdC0+bW5lbW9uaWMsICJnYXRoZXIi KSB8fAorICAgICAgICAgICAgICBzdHJzdHIodGVzdC0+bW5lbW9uaWMsICJzY2F0dGVyIik7Cisg ICAgYm9vbCBpbW0gPSB0ZXN0LT5zcGMgPT0gU1BDXzBmM2EgfHwKKyAgICAgICAgICAgICAgICh0 ZXN0LT5zcGMgPT0gU1BDXzBmICYmCisgICAgICAgICAgICAgICAgKGltbTBmW3Rlc3QtPm9wYyA+ PiA0XSAmICgxIDw8ICh0ZXN0LT5vcGMgJiAweGYpKSkpOworICAgIHVuaW9uIGV2ZXggeworICAg ICAgICB1aW50OF90IHJhd1szXTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQ4 X3Qgb3BjeDoyOworICAgICAgICAgICAgdWludDhfdCBtYno6MjsKKyAgICAgICAgICAgIHVpbnQ4 X3QgUjoxOworICAgICAgICAgICAgdWludDhfdCBiOjE7CisgICAgICAgICAgICB1aW50OF90IHg6 MTsKKyAgICAgICAgICAgIHVpbnQ4X3QgcjoxOworICAgICAgICAgICAgdWludDhfdCBwZng6MjsK KyAgICAgICAgICAgIHVpbnQ4X3QgbWJzOjE7CisgICAgICAgICAgICB1aW50OF90IHJlZzo0Owor ICAgICAgICAgICAgdWludDhfdCB3OjE7CisgICAgICAgICAgICB1aW50OF90IG9wbXNrOjM7Cisg ICAgICAgICAgICB1aW50OF90IFJYOjE7CisgICAgICAgICAgICB1aW50OF90IGJjc3Q6MTsKKyAg ICAgICAgICAgIHVpbnQ4X3QgbHI6MjsKKyAgICAgICAgICAgIHVpbnQ4X3QgejoxOworICAgICAg ICB9OworICAgIH0gZXZleCA9IHsKKyAgICAgICAgLm9wY3ggPSB0ZXN0LT5zcGMsIC5wZnggPSB0 ZXN0LT5wZngsIC5sciA9IHZsLAorICAgICAgICAuUiA9IDEsIC5iID0gMSwgLnggPSAxLCAuciA9 IDEsIC5tYnMgPSAxLAorICAgICAgICAucmVnID0gMHhmLCAuUlggPSAxLCAub3Btc2sgPSBzZywK KyAgICB9OworCisgICAgc3dpdGNoICggdGVzdC0+ZXN6ICkKKyAgICB7CisgICAgY2FzZSBFU1pf YjoKKyAgICAgICAgZXN6ID0gMTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVTWl93Ogor ICAgICAgICBlc3ogPSAyOworICAgICAgICBldmV4LncgPSAxOworICAgICAgICBicmVhazsKKwor I2lmZGVmIF9faTM4Nl9fCisgICAgY2FzZSBFU1pfZF9XSUc6CisgICAgICAgIGV2ZXgudyA9IDE7 CisgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworI2VuZGlmCisgICAgY2FzZSBFU1pfZDogY2Fz ZSBFU1pfZF9uYjoKKyAgICAgICAgZXN6ID0gNDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl IEVTWl9xOiBjYXNlIEVTWl9xX25iOgorICAgICAgICBlc3ogPSA4OworICAgICAgICBldmV4Lncg PSAxOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9VTlJF QUNIQUJMRSgpOworICAgIH0KKworICAgIHN3aXRjaCAoIHRlc3QtPnZzeiApCisgICAgeworICAg IGNhc2UgVlNaX3ZsOgorICAgICAgICB2c3ogPSAxNiA8PCB2bDsKKyAgICAgICAgYnJlYWs7CisK KyAgICBjYXNlIFZTWl92bF8yOgorICAgICAgICB2c3ogPSA4IDw8IHZsOworICAgICAgICBicmVh azsKKworICAgIGNhc2UgVlNaX3ZsXzQ6CisgICAgICAgIHZzeiA9IDQgPDwgdmw7CisgICAgICAg IGJyZWFrOworCisgICAgY2FzZSBWU1pfdmxfODoKKyAgICAgICAgdnN6ID0gMiA8PCB2bDsKKyAg ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFZTWl9lbDoKKyAgICAgICAgdnN6ID0gZXN6OworICAg ICAgICBicmVhazsKKworICAgIGNhc2UgVlNaX2VsXzI6CisgICAgICAgIHZzeiA9IGVzeiAqIDI7 CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBWU1pfZWxfNDoKKyAgICAgICAgdnN6ID0gZXN6 ICogNDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFZTWl9lbF84OgorICAgICAgICB2c3og PSBlc3ogKiA4OworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS VF9VTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIC8qCisgICAgICogTm90ZTogU0lCIGFkZHJl c3NpbmcgaXMgdXNlZCBoZXJlLCBzdWNoIHRoYXQgUy9HIGluc25zIGNhbiBiZSBoYW5kbGVkCisg ICAgICogd2l0aG91dCBleHRyYSBjb25kaXRpb25hbHMuCisgICAgICovCisgICAgaW5zdHJbMF0g PSAweDYyOworICAgIGluc3RyWzFdID0gZXZleC5yYXdbMF07CisgICAgaW5zdHJbMl0gPSBldmV4 LnJhd1sxXTsKKyAgICBpbnN0clszXSA9IGV2ZXgucmF3WzJdOworICAgIGluc3RyWzRdID0gdGVz dC0+b3BjOworICAgIGluc3RyWzVdID0gMHg0NCB8ICh0ZXN0LT5leHQgPDwgMyk7IC8qIE1vZFIv TSAqLworICAgIGluc3RyWzZdID0gMHgxMjsgLyogU0lCOiBiYXNlIHJEWCwgaW5kZXggbm9uZSAv IHhNTTQgKi8KKyAgICBpbnN0cls3XSA9IDE7IC8qIERpc3A4ICovCisgICAgaW5zdHJbOF0gPSAw OyAvKiBpbW1lZGlhdGUsIGlmIGFueSAqLworCisgICAgYXNtIHZvbGF0aWxlICggImt4bm9ydyAl azEsICVrMSwgJWsxIiApOworICAgIGFzbSB2b2xhdGlsZSAoICJ2eG9ycHMgJXhtbTQsICV4bW00 LCAleG1tNCIgKTsKKworICAgIGN0eHQtPnJlZ3MtPmVpcCA9ICh1bnNpZ25lZCBsb25nKSZpbnN0 clswXTsKKyAgICBjdHh0LT5yZWdzLT5lZHggPSAwOworICAgIG1lbXNldChhY2Nlc3NlZCwgMCwg c2l6ZW9mKGFjY2Vzc2VkKSk7CisKKyAgICByYyA9IHg4Nl9lbXVsYXRlKGN0eHQsICZlbXVsb3Bz KTsKKyAgICBpZiAoIHJjICE9IFg4NkVNVUxfT0tBWSB8fAorICAgICAgICAgKGN0eHQtPnJlZ3Mt PmVpcCAhPSAodW5zaWduZWQgbG9uZykmaW5zdHJbOCArIGltbV0pICkKKyAgICAgICAgZ290byBm YWlsOworCisgICAgZm9yICggaSA9IDA7IGkgPCAodGVzdC0+c2NhbGUgPT0gU0NfdmwgPyB2c3og OiBlc3opOyArK2kgKQorICAgICAgICAgaWYgKCBhY2Nlc3NlZFtpXSApCisgICAgICAgICAgICAg Z290byBmYWlsOworICAgIGZvciAoIDsgaSA8ICh0ZXN0LT5zY2FsZSA9PSBTQ192bCA/IHZzeiA6 IGVzeikgKyAoc2cgPyBlc3ogOiB2c3opOyArK2kgKQorICAgICAgICAgaWYgKCBhY2Nlc3NlZFtp XSAhPSAoc2cgPyB2c3ogLyBlc3ogOiAxKSApCisgICAgICAgICAgICAgZ290byBmYWlsOworICAg IGZvciAoIDsgaSA8IEFSUkFZX1NJWkUoYWNjZXNzZWQpOyArK2kgKQorICAgICAgICAgaWYgKCBh Y2Nlc3NlZFtpXSApCisgICAgICAgICAgICAgZ290byBmYWlsOworCisgICAgLyogQWxzbyBjaGVj ayB0aGUgYnJvYWRjYXN0IGNhc2UsIGlmIGF2YWlsYWJsZS4gKi8KKyAgICBpZiAoIHRlc3QtPnZz eiA+PSBWU1pfZWwgfHwgdGVzdC0+c2NhbGUgIT0gU0NfdmwgKQorICAgICAgICByZXR1cm47CisK KyAgICBzd2l0Y2ggKCB0ZXN0LT5lc3ogKQorICAgIHsKKyAgICBjYXNlIEVTWl9kX25iOiBjYXNl IEVTWl9xX25iOgorICAgIGNhc2UgRVNaX2I6IGNhc2UgRVNaX3c6IGNhc2UgRVNaX2J3OgorICAg ICAgICByZXR1cm47CisKKyAgICBjYXNlIEVTWl9kOiBjYXNlIEVTWl9xOgorICAgICAgICBicmVh azsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOworICAgIH0K KworICAgIGV2ZXguYmNzdCA9IDE7CisgICAgaW5zdHJbM10gPSBldmV4LnJhd1syXTsKKworICAg IGN0eHQtPnJlZ3MtPmVpcCA9ICh1bnNpZ25lZCBsb25nKSZpbnN0clswXTsKKyAgICBtZW1zZXQo YWNjZXNzZWQsIDAsIHNpemVvZihhY2Nlc3NlZCkpOworCisgICAgcmMgPSB4ODZfZW11bGF0ZShj dHh0LCAmZW11bG9wcyk7CisgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgfHwKKyAgICAgICAg IChjdHh0LT5yZWdzLT5laXAgIT0gKHVuc2lnbmVkIGxvbmcpJmluc3RyWzggKyBpbW1dKSApCisg ICAgICAgIGdvdG8gZmFpbDsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgZXN6OyArK2kgKQorICAg ICAgICAgaWYgKCBhY2Nlc3NlZFtpXSApCisgICAgICAgICAgICAgZ290byBmYWlsOworICAgIGZv ciAoIDsgaSA8IGVzeiAqIDI7ICsraSApCisgICAgICAgICBpZiAoIGFjY2Vzc2VkW2ldICE9IDEg KQorICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICBmb3IgKCA7IGkgPCBBUlJBWV9TSVpFKGFj Y2Vzc2VkKTsgKytpICkKKyAgICAgICAgIGlmICggYWNjZXNzZWRbaV0gKQorICAgICAgICAgICAg IGdvdG8gZmFpbDsKKworICAgIHJldHVybjsKKworIGZhaWw6CisgICAgcHJpbnRmKCJmYWlsZWQg KHYlcyVzICV1LWJpdClcbiIsIHRlc3QtPm1uZW1vbmljLAorICAgICAgICAgICBldmV4LmJjc3Qg PyAiL2Jjc3QiIDogIiIsIDEyOCA8PCB2bCk7CisgICAgZXhpdCgxKTsKK30KKworc3RhdGljIHZv aWQgdGVzdF9wYWlyKGNvbnN0IHN0cnVjdCB0ZXN0ICp0bXBsLCBlbnVtIHZsIHZsLAorICAgICAg ICAgICAgICAgICAgICAgIGVudW0gZXN6IGVzejEsIGNvbnN0IGNoYXIgKnN1ZmZpeDEsCisgICAg ICAgICAgICAgICAgICAgICAgZW51bSBlc3ogZXN6MiwgY29uc3QgY2hhciAqc3VmZml4MiwKKyAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICppbnN0ciwgc3RydWN0IHg4Nl9lbXVs YXRlX2N0eHQgKmN0eHQpCit7CisgICAgc3RydWN0IHRlc3QgdGVzdCA9ICp0bXBsOworICAgIGNo YXIgbW5lbW9uaWNbMjRdOworCisgICAgdGVzdC5lc3ogPSBlc3oxOworICAgIHNucHJpbnRmKG1u ZW1vbmljLCBBUlJBWV9TSVpFKG1uZW1vbmljKSwgIiVzJXMiLCB0bXBsLT5tbmVtb25pYywgc3Vm Zml4MSk7CisgICAgdGVzdC5tbmVtb25pYyA9IG1uZW1vbmljOworICAgIHRlc3Rfb25lKCZ0ZXN0 LCB2bCwgaW5zdHIsIGN0eHQpOworCisgICAgdGVzdC5lc3ogPSBlc3oyOworICAgIHNucHJpbnRm KG1uZW1vbmljLCBBUlJBWV9TSVpFKG1uZW1vbmljKSwgIiVzJXMiLCB0bXBsLT5tbmVtb25pYywg c3VmZml4Mik7CisgICAgdGVzdC5tbmVtb25pYyA9IG1uZW1vbmljOworICAgIHRlc3Rfb25lKCZ0 ZXN0LCB2bCwgaW5zdHIsIGN0eHQpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X2dyb3VwKGNvbnN0 IHN0cnVjdCB0ZXN0IHRlc3RzW10sIHVuc2lnbmVkIGludCBucl90ZXN0LAorICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIHZsW10sIHVuc2lnbmVkIGludCBucl92bCwK KyAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqaW5zdHIsIHN0cnVjdCB4ODZfZW11bGF0ZV9j dHh0ICpjdHh0KQoreworICAgIHVuc2lnbmVkIGludCBpLCBqOworCisgICAgZm9yICggaSA9IDA7 IGkgPCBucl90ZXN0OyArK2kgKQorICAgIHsKKyAgICAgICAgZm9yICggaiA9IDA7IGogPCBucl92 bDsgKytqICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCB2bFswXSA9PSBWTF81MTIgJiYg dmxbal0gIT0gVkxfNTEyICYmICFjcHVfaGFzX2F2eDUxMnZsICkKKyAgICAgICAgICAgICAgICBj b250aW51ZTsKKworICAgICAgICAgICAgc3dpdGNoICggdGVzdHNbaV0uZXN6ICkKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGVzdF9vbmUoJnRl c3RzW2ldLCB2bFtqXSwgaW5zdHIsIGN0eHQpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisg ICAgICAgICAgICBjYXNlIEVTWl9idzoKKyAgICAgICAgICAgICAgICB0ZXN0X3BhaXIoJnRlc3Rz W2ldLCB2bFtqXSwgRVNaX2IsICJiIiwgRVNaX3csICJ3IiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5zdHIsIGN0eHQpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg ICBjYXNlIEVTWl9kcToKKyAgICAgICAgICAgICAgICB0ZXN0X3BhaXIoJnRlc3RzW2ldLCB2bFtq XSwgRVNaX2QsICJkIiwgRVNaX3EsICJxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5z dHIsIGN0eHQpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisjaWZkZWYgX19pMzg2X18KKyAg ICAgICAgICAgIGNhc2UgRVNaX2RfV0lHOgorICAgICAgICAgICAgICAgIHRlc3RfcGFpcigmdGVz dHNbaV0sIHZsW2pdLCBFU1pfZCwgIi9XMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEVT Wl9kX1dJRywgIi9XMSIsIGluc3RyLCBjdHh0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyNl bmRpZgorCisgICAgICAgICAgICBjYXNlIEVTWl9zZDoKKyAgICAgICAgICAgICAgICB0ZXN0X3Bh aXIoJnRlc3RzW2ldLCB2bFtqXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRVNaX2QsIHRl c3RzW2ldLnZzeiA8IFZTWl9lbCA/ICJwcyIgOiAic3MiLAorICAgICAgICAgICAgICAgICAgICAg ICAgICBFU1pfcSwgdGVzdHNbaV0udnN6IDwgVlNaX2VsID8gInBkIiA6ICJzZCIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIGluc3RyLCBjdHh0KTsKKyAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBldmV4X2Rpc3A4X3Rl c3Qodm9pZCAqaW5zdHIsIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAorICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyAqb3BzKQoreworICAgIGVt dWxvcHMgPSAqb3BzOworICAgIGVtdWxvcHMucmVhZCA9IHJlYWQ7CisgICAgZW11bG9wcy53cml0 ZSA9IHdyaXRlOworCisjZGVmaW5lIFJVTihmZWF0LCB2bCkgZG8geyBcCisgICAgaWYgKCBjcHVf aGFzXyMjZmVhdCApIFwKKyAgICB7IFwKKyAgICAgICAgcHJpbnRmKCIlLTQwcyIsICJUZXN0aW5n ICIgI2ZlYXQgIi8iICN2bCAiIGRpc3A4IGhhbmRsaW5nLi4uIik7IFwKKyAgICAgICAgdGVzdF9n cm91cChmZWF0ICMjIF8gIyMgdmwsIEFSUkFZX1NJWkUoZmVhdCAjIyBfICMjIHZsKSwgXAorICAg ICAgICAgICAgICAgICAgIHZsXyAjIyB2bCwgQVJSQVlfU0laRSh2bF8gIyMgdmwpLCBpbnN0ciwg Y3R4dCk7IFwKKyAgICAgICAgcHJpbnRmKCJva2F5XG4iKTsgXAorICAgIH0gXAorfSB3aGlsZSAo IGZhbHNlICkKKworICAgIFJVTihhdng1MTJmLCBhbGwpOworICAgIFJVTihhdng1MTJmLCAxMjgp OworICAgIFJVTihhdng1MTJidywgYWxsKTsKK30KLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxh dG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rl c3RfeDg2X2VtdWxhdG9yLmMKQEAgLTM3OTUsNiArMzc5NSw5IEBAIGludCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKICAgICBlbHNlCiAgICAgICAgIHByaW50Zigic2tpcHBlZFxuIik7CiAK KyAgICBpZiAoIHN0YWNrX2V4ZWMgKQorICAgICAgICBldmV4X2Rpc3A4X3Rlc3QoaW5zdHIsICZj dHh0LCAmZW11bG9wcyk7CisKICAgICBmb3IgKCBqID0gMDsgaiA8IEFSUkFZX1NJWkUoYmxvYnMp OyBqKysgKQogICAgIHsKICAgICAgICAgaWYgKCBibG9ic1tqXS5jaGVja19jcHUgJiYgIWJsb2Jz W2pdLmNoZWNrX2NwdSgpICkKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Ni1lbXVs YXRlLmgKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Ni1lbXVsYXRlLmgKQEAgLTk2 LDYgKzk2LDkgQEAgV1JBUChwdXRzKTsKIAogI2luY2x1ZGUgIng4Nl9lbXVsYXRlL3g4Nl9lbXVs YXRlLmgiCiAKK3ZvaWQgZXZleF9kaXNwOF90ZXN0KHZvaWQgKmluc3RyLCBzdHJ1Y3QgeDg2X2Vt dWxhdGVfY3R4dCAqY3R4dCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4ODZf ZW11bGF0ZV9vcHMgKm9wcyk7CisKIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgeGdldGJ2KHVpbnQz Ml90IHhjcikKIHsKICAgICB1aW50MzJfdCBsbywgaGk7CgoKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs