From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v3 06/34] x86emul: test for correct EVEX Disp8 scaling Date: Tue, 18 Sep 2018 05:57:17 -0600 Message-ID: <5BA0E81D02000078001E953A@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5BA0E58F02000078001E94CE@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]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1g2Ed9-0006ez-3O for xen-devel@lists.xenproject.org; Tue, 18 Sep 2018 11:57:23 +0000 In-Reply-To: <5BA0E58F02000078001E94CE@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 List-Id: xen-devel@lists.xenproject.org QmVzaWRlcyB0aGUgYWxyZWFkeSBleGlzdGluZyB0ZXN0cyAod2hpY2ggYXJlIGdvaW5nIHRvIGJl IGV4dGVuZGVkIG9uY2UKcmVzcGVjdGl2ZSBJU0EgZXh0ZW5zaW9uIHN1cHBvcnQgaXMgY29tcGxl dGUpLCBsZXQncyBhbHNvIGVuc3VyZSBmb3IKZXZlcnkgaW5kaXZpZHVhbCBpbnNuIHRoYXQgdGhl aXIgRGlzcDggc2NhbGluZyAoYW5kIG1lbW9yeSBhY2Nlc3Mgd2lkdGgpCmFyZSBjb3JyZWN0LgoK U2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KdjM6IE5l dy4KCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9NYWtlZmlsZQorKysgYi90b29scy90 ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZpbGUKQEAgLTEzOSw3ICsxMzksNyBAQCAkKGFkZHN1ZmZp eCAuaCwkKFNJTUQpICQoRk1BKSAkKFNHKSk6IHNpCiAKIHhvcC5oOiBzaW1kLWZtYS5jCiAKLSQo VEFSR0VUKTogeDg2LWVtdWxhdGUubyB0ZXN0X3g4Nl9lbXVsYXRvci5vIHdyYXBwZXJzLm8KKyQo VEFSR0VUKTogeDg2LWVtdWxhdGUubyB0ZXN0X3g4Nl9lbXVsYXRvci5vIGV2ZXgtZGlzcDgubyB3 cmFwcGVycy5vCiAJJChIT1NUQ0MpICQoSE9TVENGTEFHUykgLW8gJEAgJF4KIAogLlBIT05ZOiBj bGVhbgpAQCAtMTY2LDcgKzE2Niw3IEBAIHg4Ni5oIDo9ICQoYWRkcHJlZml4ICQoWEVOX1JPT1Qp L3Rvb2xzL2kKICAgICAgICAgICAgICAgICAgICAgIHg4Ni12ZW5kb3JzLmggeDg2LWRlZm5zLmgg bXNyLWluZGV4LmgpCiB4ODZfZW11bGF0ZS5oIDo9IHg4Ni1lbXVsYXRlLmggeDg2X2VtdWxhdGUv eDg2X2VtdWxhdGUuaCAkKHg4Ni5oKQogCi14ODYtZW11bGF0ZS5vIHRlc3RfeDg2X2VtdWxhdG9y Lm8gd3JhcHBlcnMubzogJS5vOiAlLmMgJCh4ODZfZW11bGF0ZS5oKQoreDg2LWVtdWxhdGUubyB0 ZXN0X3g4Nl9lbXVsYXRvci5vIGV2ZXgtZGlzcDgubyB3cmFwcGVycy5vOiAlLm86ICUuYyAkKHg4 Nl9lbXVsYXRlLmgpCiAJJChIT1NUQ0MpICQoSE9TVENGTEFHUykgLWMgLWcgLW8gJEAgJDwKIAog eDg2LWVtdWxhdGUubzogeDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwotLS0gL2Rldi9udWxsCisr KyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9ldmV4LWRpc3A4LmMKQEAgLTAsMCArMSw0Mzcg QEAKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAi eDg2LWVtdWxhdGUuaCIKKworc3RydWN0IHRlc3QgeworICAgIGNvbnN0IGNoYXIgKm1uZW1vbmlj OworICAgIHVuc2lnbmVkIGludCBvcGM6ODsKKyAgICB1bnNpZ25lZCBpbnQgc3BjOjI7CisgICAg dW5zaWduZWQgaW50IHBmeDoyOworICAgIHVuc2lnbmVkIGludCB2c3o6MzsKKyAgICB1bnNpZ25l ZCBpbnQgZXN6OjQ7CisgICAgdW5zaWduZWQgaW50IHNjYWxlOjE7CisgICAgdW5zaWduZWQgaW50 IGV4dDozOworfTsKKworZW51bSBzcGMgeworICAgIFNQQ19pbnZhbGlkLAorICAgIFNQQ18wZiwK KyAgICBTUENfMGYzOCwKKyAgICBTUENfMGYzYSwKK307CisKK2VudW0gcGZ4IHsKKyAgICBQRlhf LAorICAgIFBGWF82NiwKKyAgICBQRlhfZjMsCisgICAgUEZYX2YyCit9OworCitlbnVtIHZsIHsK KyAgICBWTF8xMjgsCisgICAgVkxfMjU2LAorICAgIFZMXzUxMiwKK307CisKK2VudW0gc2NhbGUg eworICAgIFNDX3ZsLAorICAgIFNDX2VsLAorfTsKKworZW51bSB2c3ogeworICAgIFZTWl92bCwK KyAgICBWU1pfdmxfMiwgLyogVkwgLyAyICovCisgICAgVlNaX3ZsXzQsIC8qIFZMIC8gNCAqLwor ICAgIFZTWl92bF84LCAvKiBWTCAvIDggKi8KKyAgICAvKiAibm8gYnJvYWRjYXN0IiBpbXBsaWVk IGZyb20gaGVyZSBvbi4gKi8KKyAgICBWU1pfZWwsCisgICAgVlNaX2VsXzIsIC8qIEVMICogMiAq LworICAgIFZTWl9lbF80LCAvKiBFTCAqIDQgKi8KKyAgICBWU1pfZWxfOCwgLyogRUwgKiA4ICov Cit9OworCitlbnVtIGVzeiB7CisgICAgRVNaX2QsCisgICAgRVNaX3EsCisgICAgRVNaX2RxLAor ICAgIEVTWl9zZCwKKyAgICBFU1pfZF9uYiwKKyAgICBFU1pfcV9uYiwKKyAgICAvKiAibm8gYnJv YWRjYXN0IiBpbXBsaWVkIGZyb20gaGVyZSBvbi4gKi8KKyAgICBFU1pfYiwKKyAgICBFU1pfdywK KyAgICBFU1pfYncsCit9OworCisjaWZuZGVmIF9faTM4Nl9fCisjIGRlZmluZSBFU1pfZHE2NCBF U1pfZHEKKyNlbHNlCisjIGRlZmluZSBFU1pfZHE2NCBFU1pfZAorI2VuZGlmCisKKyNkZWZpbmUg SU5TTlgobSwgcCwgc3AsIG8sIGUsIHZzLCBlcywgc2MpIHsgXAorICAgIC5tbmVtb25pYyA9ICNt LCAub3BjID0gMHgjI28sIC5zcGMgPSBTUENfIyNzcCwgLnBmeCA9IFBGWF8jI3AsIFwKKyAgICAu dnN6ID0gVlNaXyMjdnMsIC5lc3ogPSBFU1pfIyNlcywgLnNjYWxlID0gU0NfIyNzYywgLmV4dCA9 IDAjI2UgXAorfQorI2RlZmluZSBJTlNOKG0sIHAsIHNwLCBvLCB2cywgZXMsIHNjKSBJTlNOWCht LCBwLCBzcCwgbywgMCwgdnMsIGVzLCBzYykKKyNkZWZpbmUgSU5TTl9QRlAobSwgc3AsIG8pIFwK KyAgICBJTlNOKG0jI3BkLCA2Niwgc3AsIG8sIHZsLCBxLCB2bCksIFwKKyAgICBJTlNOKG0jI3Bz LCAgICwgc3AsIG8sIHZsLCBkLCB2bCkKKyNkZWZpbmUgSU5TTl9QRlBfTkIobSwgc3AsIG8pIFwK KyAgICBJTlNOKG0jI3BkLCA2Niwgc3AsIG8sIHZsLCBxX25iLCB2bCksIFwKKyAgICBJTlNOKG0j I3BzLCAgICwgc3AsIG8sIHZsLCBkX25iLCB2bCkKKyNkZWZpbmUgSU5TTl9TRlAobSwgc3AsIG8p IFwKKyAgICBJTlNOKG0jI3NkLCBmMiwgc3AsIG8sIGVsLCBxLCBlbCksIFwKKyAgICBJTlNOKG0j I3NzLCBmMywgc3AsIG8sIGVsLCBkLCBlbCkKKworI2RlZmluZSBJTlNOX0ZQKG0sIHNwLCBvKSBc CisgICAgSU5TTl9QRlAobSwgc3AsIG8pLCBcCisgICAgSU5TTl9TRlAobSwgc3AsIG8pCisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJmX2FsbFtdID0geworICAgIElOU05fU0ZQKG1v diwgICAgICAgICAgICAwZiwgMTApLAorICAgIElOU05fU0ZQKG1vdiwgICAgICAgICAgICAwZiwg MTEpLAorICAgIElOU05fUEZQX05CKG1vdmEsICAgICAgICAwZiwgMjgpLAorICAgIElOU05fUEZQ X05CKG1vdmEsICAgICAgICAwZiwgMjkpLAorICAgIElOU04obW92ZHFhMzIsICAgICA2NiwgICAw ZiwgNmYsICAgIHZsLCAgIGRfbmIsIHZsKSwKKyAgICBJTlNOKG1vdmRxYTMyLCAgICAgNjYsICAg MGYsIDdmLCAgICB2bCwgICBkX25iLCB2bCksCisgICAgSU5TTihtb3ZkcWE2NCwgICAgIDY2LCAg IDBmLCA2ZiwgICAgdmwsICAgcV9uYiwgdmwpLAorICAgIElOU04obW92ZHFhNjQsICAgICA2Niwg ICAwZiwgN2YsICAgIHZsLCAgIHFfbmIsIHZsKSwKKyAgICBJTlNOKG1vdmRxdTMyLCAgICAgZjMs ICAgMGYsIDZmLCAgICB2bCwgICBkX25iLCB2bCksCisgICAgSU5TTihtb3ZkcXUzMiwgICAgIGYz LCAgIDBmLCA3ZiwgICAgdmwsICAgZF9uYiwgdmwpLAorICAgIElOU04obW92ZHF1NjQsICAgICBm MywgICAwZiwgNmYsICAgIHZsLCAgIHFfbmIsIHZsKSwKKyAgICBJTlNOKG1vdmRxdTY0LCAgICAg ZjMsICAgMGYsIDdmLCAgICB2bCwgICBxX25iLCB2bCksCisgICAgSU5TTihtb3ZudGRxLCAgICAg IDY2LCAgIDBmLCBlNywgICAgdmwsICAgZF9uYiwgdmwpLAorICAgIElOU04obW92bnRkcWEsICAg ICA2NiwgMGYzOCwgMmEsICAgIHZsLCAgIGRfbmIsIHZsKSwKKyAgICBJTlNOX1BGUF9OQihtb3Zu dCwgICAgICAgMGYsIDJiKSwKKyAgICBJTlNOX1BGUF9OQihtb3Z1LCAgICAgICAgMGYsIDEwKSwK KyAgICBJTlNOX1BGUF9OQihtb3Z1LCAgICAgICAgMGYsIDExKSwKK307CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgdGVzdCBhdng1MTJmXzEyOFtdID0geworICAgIElOU04obW92LCAgICAgICA2Niwg ICAwZiwgNmUsIGVsLCBkcTY0LCBlbCksCisgICAgSU5TTihtb3YsICAgICAgIDY2LCAgIDBmLCA3 ZSwgZWwsIGRxNjQsIGVsKSwKKyAgICBJTlNOKG1vdnEsICAgICAgZjMsICAgMGYsIDdlLCBlbCwg ICAgcSwgZWwpLAorICAgIElOU04obW92cSwgICAgICA2NiwgICAwZiwgZDYsIGVsLCAgICBxLCBl bCksCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyYndfYWxsW10gPSB7Cisg ICAgSU5TTihtb3ZkcXU4LCAgICAgZjIsICAgMGYsIDZmLCAgICB2bCwgICBiLCB2bCksCisgICAg SU5TTihtb3ZkcXU4LCAgICAgZjIsICAgMGYsIDdmLCAgICB2bCwgICBiLCB2bCksCisgICAgSU5T Tihtb3ZkcXUxNiwgICAgZjIsICAgMGYsIDZmLCAgICB2bCwgICB3LCB2bCksCisgICAgSU5TTiht b3ZkcXUxNiwgICAgZjIsICAgMGYsIDdmLCAgICB2bCwgICB3LCB2bCksCit9OworCitzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciB2bF9hbGxbXSA9IHsgVkxfNTEyLCBWTF8xMjgsIFZMXzI1NiB9 Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgdmxfMTI4W10gPSB7IFZMXzEyOCB9OworCisv KgorICogVGhpcyB0YWJsZSwgaW5kaWNhdGluZyB0aGUgcHJlc2VuY2Ugb2YgYW4gaW1tZWRpYXRl IChieXRlKSBmb3IgYW4gb3Bjb2RlCisgKiBzcGFjZSAwZiBtYWpvciBvcGNvZGUsIGlzIGluZGV4 ZWQgYnkgaGlnaCBtYWpvciBvcGNvZGUgYnl0ZSBuaWJibGUsIHdpdGgKKyAqIGVhY2ggdGFibGUg ZWxlbWVudCB0aGVuIGJpdC1pbmRleGVkIGJ5IGxvdyBtYWpvciBvcGNvZGUgYnl0ZSBuaWJibGUu CisgKi8KK3N0YXRpYyBjb25zdCB1aW50MTZfdCBpbW0wZlsxNl0gPSB7CisgICAgWzB4N10gPSAo MSA8PCAweDApIC8qIHZwc2h1ZiogKi8gfAorICAgICAgICAgICAgKDEgPDwgMHgxKSAvKiB2cHN7 bGwscmEscmx9dyAqLyB8CisgICAgICAgICAgICAoMSA8PCAweDIpIC8qIHZwc3tsLHJ9bGQsIHZw e3JvbCxyb3Isc3JhfXtkLHF9ICovIHwKKyAgICAgICAgICAgICgxIDw8IDB4MykgLyogdnBze2ws cn1seyxkfXEgKi8sCisgICAgWzB4Y10gPSAoMSA8PCAweDIpIC8qIHZjbXB7cCxzfXtkLHN9ICov IHwKKyAgICAgICAgICAgICgxIDw8IDB4NCkgLyogdnBpbnNydyAqLyB8CisgICAgICAgICAgICAo MSA8PCAweDUpIC8qIHZwZXh0cncgKi8gfAorICAgICAgICAgICAgKDEgPDwgMHg2KSAvKiB2c2h1 ZnB7ZCxzfSAqLywKK307CisKK3N0YXRpYyBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzIGVtdWxvcHM7 CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgYWNjZXNzZWRbMyAqIDY0XTsKKworc3RhdGljIGJvb2wg cmVjb3JkX2FjY2VzcyhlbnVtIHg4Nl9zZWdtZW50IHNlZywgdW5zaWduZWQgbG9uZyBvZmZzZXQs CisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBieXRlcykKK3sKKyAgICB3 aGlsZSAoIGJ5dGVzLS0gKQorICAgIHsKKyAgICAgICAgaWYgKCBvZmZzZXQgPj0gQVJSQVlfU0la RShhY2Nlc3NlZCkgKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICArK2FjY2Vz c2VkW29mZnNldCsrXTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlu dCByZWFkKGVudW0geDg2X3NlZ21lbnQgc2VnLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdm9pZCAq cF9kYXRhLAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBieXRlcywgc3RydWN0IHg4Nl9l bXVsYXRlX2N0eHQgKmN0eHQpCit7CisgICAgaWYgKCAhcmVjb3JkX2FjY2VzcyhzZWcsIG9mZnNl dCwgYnl0ZXMpICkKKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOworICAgIG1l bXNldChwX2RhdGEsIDAsIGJ5dGVzKTsKKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworfQorCitz dGF0aWMgaW50IHdyaXRlKGVudW0geDg2X3NlZ21lbnQgc2VnLCB1bnNpZ25lZCBsb25nIG9mZnNl dCwgdm9pZCAqcF9kYXRhLAorICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnl0ZXMsIHN0 cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQoreworICAgIGlmICggIXJlY29yZF9hY2Nlc3Mo c2VnLCBvZmZzZXQsIGJ5dGVzKSApCisgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJM RTsKKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X29uZShj b25zdCBzdHJ1Y3QgdGVzdCAqdGVzdCwgZW51bSB2bCB2bCwKKyAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGNoYXIgKmluc3RyLCBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKK3sK KyAgICB1bnNpZ25lZCBpbnQgdnN6LCBlc3osIGk7CisgICAgaW50IHJjOworICAgIGJvb2wgc2cg PSBzdHJzdHIodGVzdC0+bW5lbW9uaWMsICJnYXRoZXIiKSB8fAorICAgICAgICAgICAgICBzdHJz dHIodGVzdC0+bW5lbW9uaWMsICJzY2F0dGVyIik7CisgICAgYm9vbCBpbW0gPSB0ZXN0LT5zcGMg PT0gU1BDXzBmM2EgfHwKKyAgICAgICAgICAgICAgICh0ZXN0LT5zcGMgPT0gU1BDXzBmICYmCisg ICAgICAgICAgICAgICAgKGltbTBmW3Rlc3QtPm9wYyA+PiA0XSAmICgxIDw8ICh0ZXN0LT5vcGMg JiAweGYpKSkpOworICAgIHVuaW9uIGV2ZXggeworICAgICAgICB1aW50OF90IHJhd1szXTsKKyAg ICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQ4X3Qgb3BjeDoyOworICAgICAgICAgICAg dWludDhfdCBtYno6MjsKKyAgICAgICAgICAgIHVpbnQ4X3QgUjoxOworICAgICAgICAgICAgdWlu dDhfdCBiOjE7CisgICAgICAgICAgICB1aW50OF90IHg6MTsKKyAgICAgICAgICAgIHVpbnQ4X3Qg cjoxOworICAgICAgICAgICAgdWludDhfdCBwZng6MjsKKyAgICAgICAgICAgIHVpbnQ4X3QgbWJz OjE7CisgICAgICAgICAgICB1aW50OF90IHJlZzo0OworICAgICAgICAgICAgdWludDhfdCB3OjE7 CisgICAgICAgICAgICB1aW50OF90IG9wbXNrOjM7CisgICAgICAgICAgICB1aW50OF90IFJYOjE7 CisgICAgICAgICAgICB1aW50OF90IGJjc3Q6MTsKKyAgICAgICAgICAgIHVpbnQ4X3QgbHI6MjsK KyAgICAgICAgICAgIHVpbnQ4X3QgejoxOworICAgICAgICB9OworICAgIH0gZXZleCA9IHsKKyAg ICAgICAgLm9wY3ggPSB0ZXN0LT5zcGMsIC5wZnggPSB0ZXN0LT5wZngsIC5sciA9IHZsLAorICAg ICAgICAuUiA9IDEsIC5iID0gMSwgLnggPSAxLCAuciA9IDEsIC5tYnMgPSAxLAorICAgICAgICAu cmVnID0gMHhmLCAuUlggPSAxLCAub3Btc2sgPSBzZywKKyAgICB9OworCisgICAgc3dpdGNoICgg dGVzdC0+ZXN6ICkKKyAgICB7CisgICAgY2FzZSBFU1pfYjoKKyAgICAgICAgZXN6ID0gMTsKKyAg ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVTWl93OgorICAgICAgICBlc3ogPSAyOworICAgICAg ICBldmV4LncgPSAxOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVNaX2Q6IGNhc2UgRVNa X2RfbmI6CisgICAgICAgIGVzeiA9IDQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFU1pf cTogY2FzZSBFU1pfcV9uYjoKKyAgICAgICAgZXN6ID0gODsKKyAgICAgICAgZXZleC53ID0gMTsK KyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfVU5SRUFDSEFC TEUoKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKCB0ZXN0LT52c3ogKQorICAgIHsKKyAgICBjYXNl IFZTWl92bDoKKyAgICAgICAgdnN6ID0gMTYgPDwgdmw7CisgICAgICAgIGJyZWFrOworCisgICAg Y2FzZSBWU1pfdmxfMjoKKyAgICAgICAgdnN6ID0gOCA8PCB2bDsKKyAgICAgICAgYnJlYWs7CisK KyAgICBjYXNlIFZTWl92bF80OgorICAgICAgICB2c3ogPSA0IDw8IHZsOworICAgICAgICBicmVh azsKKworICAgIGNhc2UgVlNaX3ZsXzg6CisgICAgICAgIHZzeiA9IDIgPDwgdmw7CisgICAgICAg IGJyZWFrOworCisgICAgY2FzZSBWU1pfZWw6CisgICAgICAgIHZzeiA9IGVzejsKKyAgICAgICAg YnJlYWs7CisKKyAgICBjYXNlIFZTWl9lbF8yOgorICAgICAgICB2c3ogPSBlc3ogKiAyOworICAg ICAgICBicmVhazsKKworICAgIGNhc2UgVlNaX2VsXzQ6CisgICAgICAgIHZzeiA9IGVzeiAqIDQ7 CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBWU1pfZWxfODoKKyAgICAgICAgdnN6ID0gZXN6 ICogODsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfVU5S RUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE5vdGU6IFNJQiBhZGRyZXNzaW5n IGlzIHVzZWQgaGVyZSwgc3VjaCB0aGF0IFMvRyBpbnNucyBjYW4gYmUgaGFuZGxlZAorICAgICAq IHdpdGhvdXQgZXh0cmEgY29uZGl0aW9uYWxzLgorICAgICAqLworICAgIGluc3RyWzBdID0gMHg2 MjsKKyAgICBpbnN0clsxXSA9IGV2ZXgucmF3WzBdOworICAgIGluc3RyWzJdID0gZXZleC5yYXdb MV07CisgICAgaW5zdHJbM10gPSBldmV4LnJhd1syXTsKKyAgICBpbnN0cls0XSA9IHRlc3QtPm9w YzsKKyAgICBpbnN0cls1XSA9IDB4NDQgfCAodGVzdC0+ZXh0IDw8IDMpOyAvKiBNb2RSL00gKi8K KyAgICBpbnN0cls2XSA9IDB4MTI7IC8qIFNJQjogYmFzZSByRFgsIGluZGV4IG5vbmUgLyB4TU00 ICovCisgICAgaW5zdHJbN10gPSAxOyAvKiBEaXNwOCAqLworICAgIGluc3RyWzhdID0gMDsgLyog aW1tZWRpYXRlLCBpZiBhbnkgKi8KKworICAgIGFzbSB2b2xhdGlsZSAoICJreG5vcncgJWsxLCAl azEsICVrMSIgKTsKKyAgICBhc20gdm9sYXRpbGUgKCAidnhvcnBzICV4bW00LCAleG1tNCwgJXht bTQiICk7CisKKyAgICBjdHh0LT5yZWdzLT5laXAgPSAodW5zaWduZWQgbG9uZykmaW5zdHJbMF07 CisgICAgY3R4dC0+cmVncy0+ZWR4ID0gMDsKKyAgICBtZW1zZXQoYWNjZXNzZWQsIDAsIHNpemVv ZihhY2Nlc3NlZCkpOworCisgICAgcmMgPSB4ODZfZW11bGF0ZShjdHh0LCAmZW11bG9wcyk7Cisg ICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgfHwKKyAgICAgICAgIChjdHh0LT5yZWdzLT5laXAg IT0gKHVuc2lnbmVkIGxvbmcpJmluc3RyWzggKyBpbW1dKSApCisgICAgICAgIGdvdG8gZmFpbDsK KworICAgIGZvciAoIGkgPSAwOyBpIDwgdnN6OyArK2kgKQorICAgICAgICAgaWYgKCBhY2Nlc3Nl ZFtpXSApCisgICAgICAgICAgICAgZ290byBmYWlsOworICAgIGZvciAoIDsgaSA8ICh0ZXN0LT5z Y2FsZSA9PSBTQ192bCA/IHZzeiA6IGVzeikgKyAoc2cgPyBlc3ogOiB2c3opOyArK2kgKQorICAg ICAgICAgaWYgKCBhY2Nlc3NlZFtpXSAhPSAoc2cgPyB2c3ogLyBlc3ogOiAxKSApCisgICAgICAg ICAgICAgZ290byBmYWlsOworICAgIGZvciAoIDsgaSA8IEFSUkFZX1NJWkUoYWNjZXNzZWQpOyAr K2kgKQorICAgICAgICAgaWYgKCBhY2Nlc3NlZFtpXSApCisgICAgICAgICAgICAgZ290byBmYWls OworCisgICAgLyogQWxzbyBjaGVjayB0aGUgYnJvYWRjYXN0IGNhc2UsIGlmIGF2YWlsYWJsZS4g Ki8KKyAgICBpZiAoIHRlc3QtPnZzeiA+PSBWU1pfZWwgfHwgdGVzdC0+c2NhbGUgIT0gU0Nfdmwg KQorICAgICAgICByZXR1cm47CisKKyAgICBzd2l0Y2ggKCB0ZXN0LT5lc3ogKQorICAgIHsKKyAg ICBjYXNlIEVTWl9kX25iOiBjYXNlIEVTWl9xX25iOgorICAgIGNhc2UgRVNaX2I6IGNhc2UgRVNa X3c6IGNhc2UgRVNaX2J3OgorICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIEVTWl9kOiBjYXNl IEVTWl9xOgorICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9V TlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIGV2ZXguYmNzdCA9IDE7CisgICAgaW5zdHJbM10g PSBldmV4LnJhd1syXTsKKworICAgIGN0eHQtPnJlZ3MtPmVpcCA9ICh1bnNpZ25lZCBsb25nKSZp bnN0clswXTsKKyAgICBtZW1zZXQoYWNjZXNzZWQsIDAsIHNpemVvZihhY2Nlc3NlZCkpOworCisg ICAgcmMgPSB4ODZfZW11bGF0ZShjdHh0LCAmZW11bG9wcyk7CisgICAgaWYgKCByYyAhPSBYODZF TVVMX09LQVkgfHwKKyAgICAgICAgIChjdHh0LT5yZWdzLT5laXAgIT0gKHVuc2lnbmVkIGxvbmcp Jmluc3RyWzggKyBpbW1dKSApCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIGZvciAoIGkgPSAw OyBpIDwgZXN6OyArK2kgKQorICAgICAgICAgaWYgKCBhY2Nlc3NlZFtpXSApCisgICAgICAgICAg ICAgZ290byBmYWlsOworICAgIGZvciAoIDsgaSA8IGVzeiAqIDI7ICsraSApCisgICAgICAgICBp ZiAoIGFjY2Vzc2VkW2ldICE9IDEgKQorICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICBmb3Ig KCA7IGkgPCBBUlJBWV9TSVpFKGFjY2Vzc2VkKTsgKytpICkKKyAgICAgICAgIGlmICggYWNjZXNz ZWRbaV0gKQorICAgICAgICAgICAgIGdvdG8gZmFpbDsKKworICAgIHJldHVybjsKKworIGZhaWw6 CisgICAgcHJpbnRmKCJmYWlsZWQgKHYlcyVzICV1LWJpdClcbiIsIHRlc3QtPm1uZW1vbmljLAor ICAgICAgICAgICBldmV4LmJjc3QgPyAiL2Jjc3QiIDogIiIsIDEyOCA8PCB2bCk7CisgICAgZXhp dCgxKTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9wYWlyKGNvbnN0IHN0cnVjdCB0ZXN0ICp0bXBs LCBlbnVtIHZsIHZsLAorICAgICAgICAgICAgICAgICAgICAgIGVudW0gZXN6IGVzejEsIGNvbnN0 IGNoYXIgKnN1ZmZpeDEsCisgICAgICAgICAgICAgICAgICAgICAgZW51bSBlc3ogZXN6MiwgY29u c3QgY2hhciAqc3VmZml4MiwKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpp bnN0ciwgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCit7CisgICAgc3RydWN0IHRlc3Qg dGVzdCA9ICp0bXBsOworICAgIGNoYXIgbW5lbW9uaWNbMjRdOworCisgICAgdGVzdC5lc3ogPSBl c3oxOworICAgIHNucHJpbnRmKG1uZW1vbmljLCBBUlJBWV9TSVpFKG1uZW1vbmljKSwgIiVzJXMi LCB0bXBsLT5tbmVtb25pYywgc3VmZml4MSk7CisgICAgdGVzdC5tbmVtb25pYyA9IG1uZW1vbmlj OworICAgIHRlc3Rfb25lKCZ0ZXN0LCB2bCwgaW5zdHIsIGN0eHQpOworCisgICAgdGVzdC5lc3og PSBlc3oyOworICAgIHNucHJpbnRmKG1uZW1vbmljLCBBUlJBWV9TSVpFKG1uZW1vbmljKSwgIiVz JXMiLCB0bXBsLT5tbmVtb25pYywgc3VmZml4Mik7CisgICAgdGVzdC5tbmVtb25pYyA9IG1uZW1v bmljOworICAgIHRlc3Rfb25lKCZ0ZXN0LCB2bCwgaW5zdHIsIGN0eHQpOworfQorCitzdGF0aWMg dm9pZCB0ZXN0X2dyb3VwKGNvbnN0IHN0cnVjdCB0ZXN0IHRlc3RzW10sIHVuc2lnbmVkIGludCBu cl90ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIHZsW10s IHVuc2lnbmVkIGludCBucl92bCwKKyAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqaW5zdHIs IHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQoreworICAgIHVuc2lnbmVkIGludCBpLCBq OworCisgICAgZm9yICggaSA9IDA7IGkgPCBucl90ZXN0OyArK2kgKQorICAgIHsKKyAgICAgICAg Zm9yICggaiA9IDA7IGogPCBucl92bDsgKytqICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg KCB2bFswXSA9PSBWTF81MTIgJiYgdmxbal0gIT0gVkxfNTEyICYmICFjcHVfaGFzX2F2eDUxMnZs ICkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgc3dpdGNoICggdGVz dHNbaV0uZXN6ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg ICAgICAgICAgdGVzdF9vbmUoJnRlc3RzW2ldLCB2bFtqXSwgaW5zdHIsIGN0eHQpOworICAgICAg ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEVTWl9idzoKKyAgICAgICAgICAg ICAgICB0ZXN0X3BhaXIoJnRlc3RzW2ldLCB2bFtqXSwgRVNaX2IsICJiIiwgRVNaX3csICJ3IiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHIsIGN0eHQpOworICAgICAgICAgICAgICAg IGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEVTWl9kcToKKyAgICAgICAgICAgICAgICB0ZXN0 X3BhaXIoJnRlc3RzW2ldLCB2bFtqXSwgRVNaX2QsICJkIiwgRVNaX3EsICJxIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgaW5zdHIsIGN0eHQpOworICAgICAgICAgICAgICAgIGJyZWFrOwor CisgICAgICAgICAgICBjYXNlIEVTWl9zZDoKKyAgICAgICAgICAgICAgICB0ZXN0X3BhaXIoJnRl c3RzW2ldLCB2bFtqXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRVNaX2QsIHRlc3RzW2ld LnZzeiA8IFZTWl9lbCA/ICJwcyIgOiAic3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBF U1pfcSwgdGVzdHNbaV0udnN6IDwgVlNaX2VsID8gInBkIiA6ICJzZCIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIGluc3RyLCBjdHh0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBldmV4X2Rpc3A4X3Rlc3Qodm9p ZCAqaW5zdHIsIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAorICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyAqb3BzKQoreworICAgIGVtdWxvcHMg PSAqb3BzOworICAgIGVtdWxvcHMucmVhZCA9IHJlYWQ7CisgICAgZW11bG9wcy53cml0ZSA9IHdy aXRlOworCisjZGVmaW5lIFJVTihmZWF0LCB2bCkgZG8geyBcCisgICAgaWYgKCBjcHVfaGFzXyMj ZmVhdCApIFwKKyAgICB7IFwKKyAgICAgICAgcHJpbnRmKCIlLTQwcyIsICJUZXN0aW5nICIgI2Zl YXQgIi8iICN2bCAiIGRpc3A4IGhhbmRsaW5nLi4uIik7IFwKKyAgICAgICAgdGVzdF9ncm91cChm ZWF0ICMjIF8gIyMgdmwsIEFSUkFZX1NJWkUoZmVhdCAjIyBfICMjIHZsKSwgXAorICAgICAgICAg ICAgICAgICAgIHZsXyAjIyB2bCwgQVJSQVlfU0laRSh2bF8gIyMgdmwpLCBpbnN0ciwgY3R4dCk7 IFwKKyAgICAgICAgcHJpbnRmKCJva2F5XG4iKTsgXAorICAgIH0gXAorfSB3aGlsZSAoIGZhbHNl ICkKKworICAgIFJVTihhdng1MTJmLCBhbGwpOworICAgIFJVTihhdng1MTJmLCAxMjgpOworICAg IFJVTihhdng1MTJidywgYWxsKTsKK30KLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rl c3RfeDg2X2VtdWxhdG9yLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2 X2VtdWxhdG9yLmMKQEAgLTM3OTUsNiArMzc5NSw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKICAgICBlbHNlCiAgICAgICAgIHByaW50Zigic2tpcHBlZFxuIik7CiAKKyAgICBp ZiAoIHN0YWNrX2V4ZWMgKQorICAgICAgICBldmV4X2Rpc3A4X3Rlc3QoaW5zdHIsICZjdHh0LCAm ZW11bG9wcyk7CisKICAgICBmb3IgKCBqID0gMDsgaiA8IEFSUkFZX1NJWkUoYmxvYnMpOyBqKysg KQogICAgIHsKICAgICAgICAgaWYgKCBibG9ic1tqXS5jaGVja19jcHUgJiYgIWJsb2JzW2pdLmNo ZWNrX2NwdSgpICkKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Ni1lbXVsYXRlLmgK KysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Ni1lbXVsYXRlLmgKQEAgLTcxLDYgKzcx LDkgQEAgV1JBUChwdXRzKTsKIAogI2luY2x1ZGUgIng4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgi CiAKK3ZvaWQgZXZleF9kaXNwOF90ZXN0KHZvaWQgKmluc3RyLCBzdHJ1Y3QgeDg2X2VtdWxhdGVf Y3R4dCAqY3R4dCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0 ZV9vcHMgKm9wcyk7CisKIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgeGdldGJ2KHVpbnQzMl90IHhj cikKIHsKICAgICB1aW50MzJfdCBsbywgaGk7CgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v bGlzdGluZm8veGVuLWRldmVs