From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v4 06/44] x86emul: test for correct EVEX Disp8 scaling Date: Tue, 25 Sep 2018 07:29:20 -0600 Message-ID: <5BAA383002000078001EB9EF@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5BAA34B502000078001EB9B6@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 1g4nP8-0004q9-97 for xen-devel@lists.xenproject.org; Tue, 25 Sep 2018 13:29:30 +0000 In-Reply-To: <5BAA34B502000078001EB9B6@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 U2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KdjQ6IElu dHJvZHVjZSBFU1pfZF9XSUcuCnYzOiBOZXcuCgotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0 b3IvTWFrZWZpbGUKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlCkBAIC0x MzksNyArMTM5LDcgQEAgJChhZGRzdWZmaXggLmgsJChTSU1EKSAkKEZNQSkgJChTRykpOiBzaQog CiB4b3AuaDogc2ltZC1mbWEuYwogCi0kKFRBUkdFVCk6IHg4Ni1lbXVsYXRlLm8gdGVzdF94ODZf ZW11bGF0b3IubyB3cmFwcGVycy5vCiskKFRBUkdFVCk6IHg4Ni1lbXVsYXRlLm8gdGVzdF94ODZf ZW11bGF0b3IubyBldmV4LWRpc3A4Lm8gd3JhcHBlcnMubwogCSQoSE9TVENDKSAkKEhPU1RDRkxB R1MpIC1vICRAICReCiAKIC5QSE9OWTogY2xlYW4KQEAgLTE2Niw3ICsxNjYsNyBAQCB4ODYuaCA6 PSAkKGFkZHByZWZpeCAkKFhFTl9ST09UKS90b29scy9pCiAgICAgICAgICAgICAgICAgICAgICB4 ODYtdmVuZG9ycy5oIHg4Ni1kZWZucy5oIG1zci1pbmRleC5oKQogeDg2X2VtdWxhdGUuaCA6PSB4 ODYtZW11bGF0ZS5oIHg4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmggJCh4ODYuaCkKIAoteDg2LWVt dWxhdGUubyB0ZXN0X3g4Nl9lbXVsYXRvci5vIHdyYXBwZXJzLm86ICUubzogJS5jICQoeDg2X2Vt dWxhdGUuaCkKK3g4Ni1lbXVsYXRlLm8gdGVzdF94ODZfZW11bGF0b3IubyBldmV4LWRpc3A4Lm8g d3JhcHBlcnMubzogJS5vOiAlLmMgJCh4ODZfZW11bGF0ZS5oKQogCSQoSE9TVENDKSAkKEhPU1RD RkxBR1MpIC1jIC1nIC1vICRAICQ8CiAKIHg4Ni1lbXVsYXRlLm86IHg4Nl9lbXVsYXRlL3g4Nl9l bXVsYXRlLmMKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3IvZXZl eC1kaXNwOC5jCkBAIC0wLDAgKzEsNDUyIEBACisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVk ZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgIng4Ni1lbXVsYXRlLmgiCisKK3N0cnVjdCB0ZXN0IHsK KyAgICBjb25zdCBjaGFyICptbmVtb25pYzsKKyAgICB1bnNpZ25lZCBpbnQgb3BjOjg7CisgICAg dW5zaWduZWQgaW50IHNwYzoyOworICAgIHVuc2lnbmVkIGludCBwZng6MjsKKyAgICB1bnNpZ25l ZCBpbnQgdnN6OjM7CisgICAgdW5zaWduZWQgaW50IGVzejo0OworICAgIHVuc2lnbmVkIGludCBz Y2FsZToxOworICAgIHVuc2lnbmVkIGludCBleHQ6MzsKK307CisKK2VudW0gc3BjIHsKKyAgICBT UENfaW52YWxpZCwKKyAgICBTUENfMGYsCisgICAgU1BDXzBmMzgsCisgICAgU1BDXzBmM2EsCit9 OworCitlbnVtIHBmeCB7CisgICAgUEZYXywKKyAgICBQRlhfNjYsCisgICAgUEZYX2YzLAorICAg IFBGWF9mMgorfTsKKworZW51bSB2bCB7CisgICAgVkxfMTI4LAorICAgIFZMXzI1NiwKKyAgICBW TF81MTIsCit9OworCitlbnVtIHNjYWxlIHsKKyAgICBTQ192bCwKKyAgICBTQ19lbCwKK307CisK K2VudW0gdnN6IHsKKyAgICBWU1pfdmwsCisgICAgVlNaX3ZsXzIsIC8qIFZMIC8gMiAqLworICAg IFZTWl92bF80LCAvKiBWTCAvIDQgKi8KKyAgICBWU1pfdmxfOCwgLyogVkwgLyA4ICovCisgICAg LyogIm5vIGJyb2FkY2FzdCIgaW1wbGllZCBmcm9tIGhlcmUgb24uICovCisgICAgVlNaX2VsLAor ICAgIFZTWl9lbF8yLCAvKiBFTCAqIDIgKi8KKyAgICBWU1pfZWxfNCwgLyogRUwgKiA0ICovCisg ICAgVlNaX2VsXzgsIC8qIEVMICogOCAqLworfTsKKworZW51bSBlc3ogeworICAgIEVTWl9kLAor ICAgIEVTWl9xLAorICAgIEVTWl9kcSwKKyAgICBFU1pfc2QsCisgICAgRVNaX2RfbmIsCisgICAg RVNaX3FfbmIsCisgICAgLyogIm5vIGJyb2FkY2FzdCIgaW1wbGllZCBmcm9tIGhlcmUgb24uICov CisjaWZkZWYgX19pMzg2X18KKyAgICBFU1pfZF9XSUcsCisjZW5kaWYKKyAgICBFU1pfYiwKKyAg ICBFU1pfdywKKyAgICBFU1pfYncsCit9OworCisjaWZuZGVmIF9faTM4Nl9fCisjIGRlZmluZSBF U1pfZHE2NCBFU1pfZHEKKyNlbHNlCisjIGRlZmluZSBFU1pfZHE2NCBFU1pfZF9XSUcKKyNlbmRp ZgorCisjZGVmaW5lIElOU05YKG0sIHAsIHNwLCBvLCBlLCB2cywgZXMsIHNjKSB7IFwKKyAgICAu bW5lbW9uaWMgPSAjbSwgLm9wYyA9IDB4IyNvLCAuc3BjID0gU1BDXyMjc3AsIC5wZnggPSBQRlhf IyNwLCBcCisgICAgLnZzeiA9IFZTWl8jI3ZzLCAuZXN6ID0gRVNaXyMjZXMsIC5zY2FsZSA9IFND XyMjc2MsIC5leHQgPSAwIyNlIFwKK30KKyNkZWZpbmUgSU5TTihtLCBwLCBzcCwgbywgdnMsIGVz LCBzYykgSU5TTlgobSwgcCwgc3AsIG8sIDAsIHZzLCBlcywgc2MpCisjZGVmaW5lIElOU05fUEZQ KG0sIHNwLCBvKSBcCisgICAgSU5TTihtIyNwZCwgNjYsIHNwLCBvLCB2bCwgcSwgdmwpLCBcCisg ICAgSU5TTihtIyNwcywgICAsIHNwLCBvLCB2bCwgZCwgdmwpCisjZGVmaW5lIElOU05fUEZQX05C KG0sIHNwLCBvKSBcCisgICAgSU5TTihtIyNwZCwgNjYsIHNwLCBvLCB2bCwgcV9uYiwgdmwpLCBc CisgICAgSU5TTihtIyNwcywgICAsIHNwLCBvLCB2bCwgZF9uYiwgdmwpCisjZGVmaW5lIElOU05f U0ZQKG0sIHNwLCBvKSBcCisgICAgSU5TTihtIyNzZCwgZjIsIHNwLCBvLCBlbCwgcSwgZWwpLCBc CisgICAgSU5TTihtIyNzcywgZjMsIHNwLCBvLCBlbCwgZCwgZWwpCisKKyNkZWZpbmUgSU5TTl9G UChtLCBzcCwgbykgXAorICAgIElOU05fUEZQKG0sIHNwLCBvKSwgXAorICAgIElOU05fU0ZQKG0s IHNwLCBvKQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyZl9hbGxbXSA9IHsKKyAg ICBJTlNOX1NGUChtb3YsICAgICAgICAgICAgMGYsIDEwKSwKKyAgICBJTlNOX1NGUChtb3YsICAg ICAgICAgICAgMGYsIDExKSwKKyAgICBJTlNOX1BGUF9OQihtb3ZhLCAgICAgICAgMGYsIDI4KSwK KyAgICBJTlNOX1BGUF9OQihtb3ZhLCAgICAgICAgMGYsIDI5KSwKKyAgICBJTlNOKG1vdmRxYTMy LCAgICAgNjYsICAgMGYsIDZmLCAgICB2bCwgICBkX25iLCB2bCksCisgICAgSU5TTihtb3ZkcWEz MiwgICAgIDY2LCAgIDBmLCA3ZiwgICAgdmwsICAgZF9uYiwgdmwpLAorICAgIElOU04obW92ZHFh NjQsICAgICA2NiwgICAwZiwgNmYsICAgIHZsLCAgIHFfbmIsIHZsKSwKKyAgICBJTlNOKG1vdmRx YTY0LCAgICAgNjYsICAgMGYsIDdmLCAgICB2bCwgICBxX25iLCB2bCksCisgICAgSU5TTihtb3Zk cXUzMiwgICAgIGYzLCAgIDBmLCA2ZiwgICAgdmwsICAgZF9uYiwgdmwpLAorICAgIElOU04obW92 ZHF1MzIsICAgICBmMywgICAwZiwgN2YsICAgIHZsLCAgIGRfbmIsIHZsKSwKKyAgICBJTlNOKG1v dmRxdTY0LCAgICAgZjMsICAgMGYsIDZmLCAgICB2bCwgICBxX25iLCB2bCksCisgICAgSU5TTiht b3ZkcXU2NCwgICAgIGYzLCAgIDBmLCA3ZiwgICAgdmwsICAgcV9uYiwgdmwpLAorICAgIElOU04o bW92bnRkcSwgICAgICA2NiwgICAwZiwgZTcsICAgIHZsLCAgIGRfbmIsIHZsKSwKKyAgICBJTlNO KG1vdm50ZHFhLCAgICAgNjYsIDBmMzgsIDJhLCAgICB2bCwgICBkX25iLCB2bCksCisgICAgSU5T Tl9QRlBfTkIobW92bnQsICAgICAgIDBmLCAyYiksCisgICAgSU5TTl9QRlBfTkIobW92dSwgICAg ICAgIDBmLCAxMCksCisgICAgSU5TTl9QRlBfTkIobW92dSwgICAgICAgIDBmLCAxMSksCit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyZl8xMjhbXSA9IHsKKyAgICBJTlNOKG1v diwgICAgICAgNjYsICAgMGYsIDZlLCBlbCwgZHE2NCwgZWwpLAorICAgIElOU04obW92LCAgICAg ICA2NiwgICAwZiwgN2UsIGVsLCBkcTY0LCBlbCksCisgICAgSU5TTihtb3ZxLCAgICAgIGYzLCAg IDBmLCA3ZSwgZWwsICAgIHEsIGVsKSwKKyAgICBJTlNOKG1vdnEsICAgICAgNjYsICAgMGYsIGQ2 LCBlbCwgICAgcSwgZWwpLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXN0IGF2eDUxMmJ3 X2FsbFtdID0geworICAgIElOU04obW92ZHF1OCwgICAgIGYyLCAgIDBmLCA2ZiwgICAgdmwsICAg IGIsIHZsKSwKKyAgICBJTlNOKG1vdmRxdTgsICAgICBmMiwgICAwZiwgN2YsICAgIHZsLCAgICBi LCB2bCksCisgICAgSU5TTihtb3ZkcXUxNiwgICAgZjIsICAgMGYsIDZmLCAgICB2bCwgICAgdywg dmwpLAorICAgIElOU04obW92ZHF1MTYsICAgIGYyLCAgIDBmLCA3ZiwgICAgdmwsICAgIHcsIHZs KSwKK307CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHZsX2FsbFtdID0geyBWTF81MTIs IFZMXzEyOCwgVkxfMjU2IH07CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB2bF8xMjhbXSA9 IHsgVkxfMTI4IH07CisKKy8qCisgKiBUaGlzIHRhYmxlLCBpbmRpY2F0aW5nIHRoZSBwcmVzZW5j ZSBvZiBhbiBpbW1lZGlhdGUgKGJ5dGUpIGZvciBhbiBvcGNvZGUKKyAqIHNwYWNlIDBmIG1ham9y IG9wY29kZSwgaXMgaW5kZXhlZCBieSBoaWdoIG1ham9yIG9wY29kZSBieXRlIG5pYmJsZSwgd2l0 aAorICogZWFjaCB0YWJsZSBlbGVtZW50IHRoZW4gYml0LWluZGV4ZWQgYnkgbG93IG1ham9yIG9w Y29kZSBieXRlIG5pYmJsZS4KKyAqLworc3RhdGljIGNvbnN0IHVpbnQxNl90IGltbTBmWzE2XSA9 IHsKKyAgICBbMHg3XSA9ICgxIDw8IDB4MCkgLyogdnBzaHVmKiAqLyB8CisgICAgICAgICAgICAo MSA8PCAweDEpIC8qIHZwc3tsbCxyYSxybH13ICovIHwKKyAgICAgICAgICAgICgxIDw8IDB4Mikg LyogdnBze2wscn1sZCwgdnB7cm9sLHJvcixzcmF9e2QscX0gKi8gfAorICAgICAgICAgICAgKDEg PDwgMHgzKSAvKiB2cHN7bCxyfWx7LGR9cSAqLywKKyAgICBbMHhjXSA9ICgxIDw8IDB4MikgLyog dmNtcHtwLHN9e2Qsc30gKi8gfAorICAgICAgICAgICAgKDEgPDwgMHg0KSAvKiB2cGluc3J3ICov IHwKKyAgICAgICAgICAgICgxIDw8IDB4NSkgLyogdnBleHRydyAqLyB8CisgICAgICAgICAgICAo MSA8PCAweDYpIC8qIHZzaHVmcHtkLHN9ICovLAorfTsKKworc3RhdGljIHN0cnVjdCB4ODZfZW11 bGF0ZV9vcHMgZW11bG9wczsKKworc3RhdGljIHVuc2lnbmVkIGludCBhY2Nlc3NlZFszICogNjRd OworCitzdGF0aWMgYm9vbCByZWNvcmRfYWNjZXNzKGVudW0geDg2X3NlZ21lbnQgc2VnLCB1bnNp Z25lZCBsb25nIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50 IGJ5dGVzKQoreworICAgIHdoaWxlICggYnl0ZXMtLSApCisgICAgeworICAgICAgICBpZiAoIG9m ZnNldCA+PSBBUlJBWV9TSVpFKGFjY2Vzc2VkKSApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgICsrYWNjZXNzZWRbb2Zmc2V0KytdOworICAgIH0KKworICAgIHJldHVybiB0cnVl OworfQorCitzdGF0aWMgaW50IHJlYWQoZW51bSB4ODZfc2VnbWVudCBzZWcsIHVuc2lnbmVkIGxv bmcgb2Zmc2V0LCB2b2lkICpwX2RhdGEsCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJ5 dGVzLCBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKK3sKKyAgICBpZiAoICFyZWNvcmRf YWNjZXNzKHNlZywgb2Zmc2V0LCBieXRlcykgKQorICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhB TkRMRUFCTEU7CisgICAgbWVtc2V0KHBfZGF0YSwgMCwgYnl0ZXMpOworICAgIHJldHVybiBYODZF TVVMX09LQVk7Cit9CisKK3N0YXRpYyBpbnQgd3JpdGUoZW51bSB4ODZfc2VnbWVudCBzZWcsIHVu c2lnbmVkIGxvbmcgb2Zmc2V0LCB2b2lkICpwX2RhdGEsCisgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBieXRlcywgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCit7CisgICAgaWYg KCAhcmVjb3JkX2FjY2VzcyhzZWcsIG9mZnNldCwgYnl0ZXMpICkKKyAgICAgICAgcmV0dXJuIFg4 NkVNVUxfVU5IQU5ETEVBQkxFOworICAgIHJldHVybiBYODZFTVVMX09LQVk7Cit9CisKK3N0YXRp YyB2b2lkIHRlc3Rfb25lKGNvbnN0IHN0cnVjdCB0ZXN0ICp0ZXN0LCBlbnVtIHZsIHZsLAorICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqaW5zdHIsIHN0cnVjdCB4ODZfZW11bGF0 ZV9jdHh0ICpjdHh0KQoreworICAgIHVuc2lnbmVkIGludCB2c3osIGVzeiwgaTsKKyAgICBpbnQg cmM7CisgICAgYm9vbCBzZyA9IHN0cnN0cih0ZXN0LT5tbmVtb25pYywgImdhdGhlciIpIHx8Cisg ICAgICAgICAgICAgIHN0cnN0cih0ZXN0LT5tbmVtb25pYywgInNjYXR0ZXIiKTsKKyAgICBib29s IGltbSA9IHRlc3QtPnNwYyA9PSBTUENfMGYzYSB8fAorICAgICAgICAgICAgICAgKHRlc3QtPnNw YyA9PSBTUENfMGYgJiYKKyAgICAgICAgICAgICAgICAoaW1tMGZbdGVzdC0+b3BjID4+IDRdICYg KDEgPDwgKHRlc3QtPm9wYyAmIDB4ZikpKSk7CisgICAgdW5pb24gZXZleCB7CisgICAgICAgIHVp bnQ4X3QgcmF3WzNdOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDhfdCBvcGN4 OjI7CisgICAgICAgICAgICB1aW50OF90IG1iejoyOworICAgICAgICAgICAgdWludDhfdCBSOjE7 CisgICAgICAgICAgICB1aW50OF90IGI6MTsKKyAgICAgICAgICAgIHVpbnQ4X3QgeDoxOworICAg ICAgICAgICAgdWludDhfdCByOjE7CisgICAgICAgICAgICB1aW50OF90IHBmeDoyOworICAgICAg ICAgICAgdWludDhfdCBtYnM6MTsKKyAgICAgICAgICAgIHVpbnQ4X3QgcmVnOjQ7CisgICAgICAg ICAgICB1aW50OF90IHc6MTsKKyAgICAgICAgICAgIHVpbnQ4X3Qgb3Btc2s6MzsKKyAgICAgICAg ICAgIHVpbnQ4X3QgUlg6MTsKKyAgICAgICAgICAgIHVpbnQ4X3QgYmNzdDoxOworICAgICAgICAg ICAgdWludDhfdCBscjoyOworICAgICAgICAgICAgdWludDhfdCB6OjE7CisgICAgICAgIH07Cisg ICAgfSBldmV4ID0geworICAgICAgICAub3BjeCA9IHRlc3QtPnNwYywgLnBmeCA9IHRlc3QtPnBm eCwgLmxyID0gdmwsCisgICAgICAgIC5SID0gMSwgLmIgPSAxLCAueCA9IDEsIC5yID0gMSwgLm1i cyA9IDEsCisgICAgICAgIC5yZWcgPSAweGYsIC5SWCA9IDEsIC5vcG1zayA9IHNnLAorICAgIH07 CisKKyAgICBzd2l0Y2ggKCB0ZXN0LT5lc3ogKQorICAgIHsKKyAgICBjYXNlIEVTWl9iOgorICAg ICAgICBlc3ogPSAxOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVNaX3c6CisgICAgICAg IGVzeiA9IDI7CisgICAgICAgIGV2ZXgudyA9IDE7CisgICAgICAgIGJyZWFrOworCisjaWZkZWYg X19pMzg2X18KKyAgICBjYXNlIEVTWl9kX1dJRzoKKyAgICAgICAgZXZleC53ID0gMTsKKyAgICAg ICAgLyogZmFsbCB0aHJvdWdoICovCisjZW5kaWYKKyAgICBjYXNlIEVTWl9kOiBjYXNlIEVTWl9k X25iOgorICAgICAgICBlc3ogPSA0OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVNaX3E6 IGNhc2UgRVNaX3FfbmI6CisgICAgICAgIGVzeiA9IDg7CisgICAgICAgIGV2ZXgudyA9IDE7Cisg ICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxF KCk7CisgICAgfQorCisgICAgc3dpdGNoICggdGVzdC0+dnN6ICkKKyAgICB7CisgICAgY2FzZSBW U1pfdmw6CisgICAgICAgIHZzeiA9IDE2IDw8IHZsOworICAgICAgICBicmVhazsKKworICAgIGNh c2UgVlNaX3ZsXzI6CisgICAgICAgIHZzeiA9IDggPDwgdmw7CisgICAgICAgIGJyZWFrOworCisg ICAgY2FzZSBWU1pfdmxfNDoKKyAgICAgICAgdnN6ID0gNCA8PCB2bDsKKyAgICAgICAgYnJlYWs7 CisKKyAgICBjYXNlIFZTWl92bF84OgorICAgICAgICB2c3ogPSAyIDw8IHZsOworICAgICAgICBi cmVhazsKKworICAgIGNhc2UgVlNaX2VsOgorICAgICAgICB2c3ogPSBlc3o7CisgICAgICAgIGJy ZWFrOworCisgICAgY2FzZSBWU1pfZWxfMjoKKyAgICAgICAgdnN6ID0gZXN6ICogMjsKKyAgICAg ICAgYnJlYWs7CisKKyAgICBjYXNlIFZTWl9lbF80OgorICAgICAgICB2c3ogPSBlc3ogKiA0Owor ICAgICAgICBicmVhazsKKworICAgIGNhc2UgVlNaX2VsXzg6CisgICAgICAgIHZzeiA9IGVzeiAq IDg7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX1VOUkVB Q0hBQkxFKCk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBOb3RlOiBTSUIgYWRkcmVzc2luZyBp cyB1c2VkIGhlcmUsIHN1Y2ggdGhhdCBTL0cgaW5zbnMgY2FuIGJlIGhhbmRsZWQKKyAgICAgKiB3 aXRob3V0IGV4dHJhIGNvbmRpdGlvbmFscy4KKyAgICAgKi8KKyAgICBpbnN0clswXSA9IDB4NjI7 CisgICAgaW5zdHJbMV0gPSBldmV4LnJhd1swXTsKKyAgICBpbnN0clsyXSA9IGV2ZXgucmF3WzFd OworICAgIGluc3RyWzNdID0gZXZleC5yYXdbMl07CisgICAgaW5zdHJbNF0gPSB0ZXN0LT5vcGM7 CisgICAgaW5zdHJbNV0gPSAweDQ0IHwgKHRlc3QtPmV4dCA8PCAzKTsgLyogTW9kUi9NICovCisg ICAgaW5zdHJbNl0gPSAweDEyOyAvKiBTSUI6IGJhc2UgckRYLCBpbmRleCBub25lIC8geE1NNCAq LworICAgIGluc3RyWzddID0gMTsgLyogRGlzcDggKi8KKyAgICBpbnN0cls4XSA9IDA7IC8qIGlt bWVkaWF0ZSwgaWYgYW55ICovCisKKyAgICBhc20gdm9sYXRpbGUgKCAia3hub3J3ICVrMSwgJWsx LCAlazEiICk7CisgICAgYXNtIHZvbGF0aWxlICggInZ4b3JwcyAleG1tNCwgJXhtbTQsICV4bW00 IiApOworCisgICAgY3R4dC0+cmVncy0+ZWlwID0gKHVuc2lnbmVkIGxvbmcpJmluc3RyWzBdOwor ICAgIGN0eHQtPnJlZ3MtPmVkeCA9IDA7CisgICAgbWVtc2V0KGFjY2Vzc2VkLCAwLCBzaXplb2Yo YWNjZXNzZWQpKTsKKworICAgIHJjID0geDg2X2VtdWxhdGUoY3R4dCwgJmVtdWxvcHMpOworICAg IGlmICggcmMgIT0gWDg2RU1VTF9PS0FZIHx8CisgICAgICAgICAoY3R4dC0+cmVncy0+ZWlwICE9 ICh1bnNpZ25lZCBsb25nKSZpbnN0cls4ICsgaW1tXSkgKQorICAgICAgICBnb3RvIGZhaWw7CisK KyAgICBmb3IgKCBpID0gMDsgaSA8IHZzejsgKytpICkKKyAgICAgICAgIGlmICggYWNjZXNzZWRb aV0gKQorICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICBmb3IgKCA7IGkgPCAodGVzdC0+c2Nh bGUgPT0gU0NfdmwgPyB2c3ogOiBlc3opICsgKHNnID8gZXN6IDogdnN6KTsgKytpICkKKyAgICAg ICAgIGlmICggYWNjZXNzZWRbaV0gIT0gKHNnID8gdnN6IC8gZXN6IDogMSkgKQorICAgICAgICAg ICAgIGdvdG8gZmFpbDsKKyAgICBmb3IgKCA7IGkgPCBBUlJBWV9TSVpFKGFjY2Vzc2VkKTsgKytp ICkKKyAgICAgICAgIGlmICggYWNjZXNzZWRbaV0gKQorICAgICAgICAgICAgIGdvdG8gZmFpbDsK KworICAgIC8qIEFsc28gY2hlY2sgdGhlIGJyb2FkY2FzdCBjYXNlLCBpZiBhdmFpbGFibGUuICov CisgICAgaWYgKCB0ZXN0LT52c3ogPj0gVlNaX2VsIHx8IHRlc3QtPnNjYWxlICE9IFNDX3ZsICkK KyAgICAgICAgcmV0dXJuOworCisgICAgc3dpdGNoICggdGVzdC0+ZXN6ICkKKyAgICB7CisgICAg Y2FzZSBFU1pfZF9uYjogY2FzZSBFU1pfcV9uYjoKKyAgICBjYXNlIEVTWl9iOiBjYXNlIEVTWl93 OiBjYXNlIEVTWl9idzoKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBFU1pfZDogY2FzZSBF U1pfcToKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfVU5S RUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICBldmV4LmJjc3QgPSAxOworICAgIGluc3RyWzNdID0g ZXZleC5yYXdbMl07CisKKyAgICBjdHh0LT5yZWdzLT5laXAgPSAodW5zaWduZWQgbG9uZykmaW5z dHJbMF07CisgICAgbWVtc2V0KGFjY2Vzc2VkLCAwLCBzaXplb2YoYWNjZXNzZWQpKTsKKworICAg IHJjID0geDg2X2VtdWxhdGUoY3R4dCwgJmVtdWxvcHMpOworICAgIGlmICggcmMgIT0gWDg2RU1V TF9PS0FZIHx8CisgICAgICAgICAoY3R4dC0+cmVncy0+ZWlwICE9ICh1bnNpZ25lZCBsb25nKSZp bnN0cls4ICsgaW1tXSkgKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICBmb3IgKCBpID0gMDsg aSA8IGVzejsgKytpICkKKyAgICAgICAgIGlmICggYWNjZXNzZWRbaV0gKQorICAgICAgICAgICAg IGdvdG8gZmFpbDsKKyAgICBmb3IgKCA7IGkgPCBlc3ogKiAyOyArK2kgKQorICAgICAgICAgaWYg KCBhY2Nlc3NlZFtpXSAhPSAxICkKKyAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgZm9yICgg OyBpIDwgQVJSQVlfU0laRShhY2Nlc3NlZCk7ICsraSApCisgICAgICAgICBpZiAoIGFjY2Vzc2Vk W2ldICkKKyAgICAgICAgICAgICBnb3RvIGZhaWw7CisKKyAgICByZXR1cm47CisKKyBmYWlsOgor ICAgIHByaW50ZigiZmFpbGVkICh2JXMlcyAldS1iaXQpXG4iLCB0ZXN0LT5tbmVtb25pYywKKyAg ICAgICAgICAgZXZleC5iY3N0ID8gIi9iY3N0IiA6ICIiLCAxMjggPDwgdmwpOworICAgIGV4aXQo MSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfcGFpcihjb25zdCBzdHJ1Y3QgdGVzdCAqdG1wbCwg ZW51bSB2bCB2bCwKKyAgICAgICAgICAgICAgICAgICAgICBlbnVtIGVzeiBlc3oxLCBjb25zdCBj aGFyICpzdWZmaXgxLAorICAgICAgICAgICAgICAgICAgICAgIGVudW0gZXN6IGVzejIsIGNvbnN0 IGNoYXIgKnN1ZmZpeDIsCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqaW5z dHIsIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQoreworICAgIHN0cnVjdCB0ZXN0IHRl c3QgPSAqdG1wbDsKKyAgICBjaGFyIG1uZW1vbmljWzI0XTsKKworICAgIHRlc3QuZXN6ID0gZXN6 MTsKKyAgICBzbnByaW50ZihtbmVtb25pYywgQVJSQVlfU0laRShtbmVtb25pYyksICIlcyVzIiwg dG1wbC0+bW5lbW9uaWMsIHN1ZmZpeDEpOworICAgIHRlc3QubW5lbW9uaWMgPSBtbmVtb25pYzsK KyAgICB0ZXN0X29uZSgmdGVzdCwgdmwsIGluc3RyLCBjdHh0KTsKKworICAgIHRlc3QuZXN6ID0g ZXN6MjsKKyAgICBzbnByaW50ZihtbmVtb25pYywgQVJSQVlfU0laRShtbmVtb25pYyksICIlcyVz IiwgdG1wbC0+bW5lbW9uaWMsIHN1ZmZpeDIpOworICAgIHRlc3QubW5lbW9uaWMgPSBtbmVtb25p YzsKKyAgICB0ZXN0X29uZSgmdGVzdCwgdmwsIGluc3RyLCBjdHh0KTsKK30KKworc3RhdGljIHZv aWQgdGVzdF9ncm91cChjb25zdCBzdHJ1Y3QgdGVzdCB0ZXN0c1tdLCB1bnNpZ25lZCBpbnQgbnJf dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciB2bFtdLCB1 bnNpZ25lZCBpbnQgbnJfdmwsCisgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmluc3RyLCBz dHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaSwgajsK KworICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfdGVzdDsgKytpICkKKyAgICB7CisgICAgICAgIGZv ciAoIGogPSAwOyBqIDwgbnJfdmw7ICsraiApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgg dmxbMF0gPT0gVkxfNTEyICYmIHZsW2pdICE9IFZMXzUxMiAmJiAhY3B1X2hhc19hdng1MTJ2bCAp CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHN3aXRjaCAoIHRlc3Rz W2ldLmVzeiApCisgICAgICAgICAgICB7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg ICAgICAgIHRlc3Rfb25lKCZ0ZXN0c1tpXSwgdmxbal0sIGluc3RyLCBjdHh0KTsKKyAgICAgICAg ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBFU1pfYnc6CisgICAgICAgICAgICAg ICAgdGVzdF9wYWlyKCZ0ZXN0c1tpXSwgdmxbal0sIEVTWl9iLCAiYiIsIEVTWl93LCAidyIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RyLCBjdHh0KTsKKyAgICAgICAgICAgICAgICBi cmVhazsKKworICAgICAgICAgICAgY2FzZSBFU1pfZHE6CisgICAgICAgICAgICAgICAgdGVzdF9w YWlyKCZ0ZXN0c1tpXSwgdmxbal0sIEVTWl9kLCAiZCIsIEVTWl9xLCAicSIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgIGluc3RyLCBjdHh0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKwor I2lmZGVmIF9faTM4Nl9fCisgICAgICAgICAgICBjYXNlIEVTWl9kX1dJRzoKKyAgICAgICAgICAg ICAgICB0ZXN0X3BhaXIoJnRlc3RzW2ldLCB2bFtqXSwgRVNaX2QsICIvVzAiLAorICAgICAgICAg ICAgICAgICAgICAgICAgICBFU1pfZF9XSUcsICIvVzEiLCBpbnN0ciwgY3R4dCk7CisgICAgICAg ICAgICAgICAgYnJlYWs7CisjZW5kaWYKKworICAgICAgICAgICAgY2FzZSBFU1pfc2Q6CisgICAg ICAgICAgICAgICAgdGVzdF9wYWlyKCZ0ZXN0c1tpXSwgdmxbal0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgIEVTWl9kLCB0ZXN0c1tpXS52c3ogPCBWU1pfZWwgPyAicHMiIDogInNzIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgRVNaX3EsIHRlc3RzW2ldLnZzeiA8IFZTWl9lbCA/ICJw ZCIgOiAic2QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ciwgY3R4dCk7CisgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisK K3ZvaWQgZXZleF9kaXNwOF90ZXN0KHZvaWQgKmluc3RyLCBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4 dCAqY3R4dCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9v cHMgKm9wcykKK3sKKyAgICBlbXVsb3BzID0gKm9wczsKKyAgICBlbXVsb3BzLnJlYWQgPSByZWFk OworICAgIGVtdWxvcHMud3JpdGUgPSB3cml0ZTsKKworI2RlZmluZSBSVU4oZmVhdCwgdmwpIGRv IHsgXAorICAgIGlmICggY3B1X2hhc18jI2ZlYXQgKSBcCisgICAgeyBcCisgICAgICAgIHByaW50 ZigiJS00MHMiLCAiVGVzdGluZyAiICNmZWF0ICIvIiAjdmwgIiBkaXNwOCBoYW5kbGluZy4uLiIp OyBcCisgICAgICAgIHRlc3RfZ3JvdXAoZmVhdCAjIyBfICMjIHZsLCBBUlJBWV9TSVpFKGZlYXQg IyMgXyAjIyB2bCksIFwKKyAgICAgICAgICAgICAgICAgICB2bF8gIyMgdmwsIEFSUkFZX1NJWkUo dmxfICMjIHZsKSwgaW5zdHIsIGN0eHQpOyBcCisgICAgICAgIHByaW50Zigib2theVxuIik7IFwK KyAgICB9IFwKK30gd2hpbGUgKCBmYWxzZSApCisKKyAgICBSVU4oYXZ4NTEyZiwgYWxsKTsKKyAg ICBSVU4oYXZ4NTEyZiwgMTI4KTsKKyAgICBSVU4oYXZ4NTEyYncsIGFsbCk7Cit9Ci0tLSBhL3Rv b2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCisrKyBiL3Rvb2xzL3Rl c3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCkBAIC0zNzk1LDYgKzM3OTUsOSBA QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgZWxzZQogICAgICAgICBwcmlu dGYoInNraXBwZWRcbiIpOwogCisgICAgaWYgKCBzdGFja19leGVjICkKKyAgICAgICAgZXZleF9k aXNwOF90ZXN0KGluc3RyLCAmY3R4dCwgJmVtdWxvcHMpOworCiAgICAgZm9yICggaiA9IDA7IGog PCBBUlJBWV9TSVpFKGJsb2JzKTsgaisrICkKICAgICB7CiAgICAgICAgIGlmICggYmxvYnNbal0u Y2hlY2tfY3B1ICYmICFibG9ic1tqXS5jaGVja19jcHUoKSApCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4 Nl9lbXVsYXRvci94ODYtZW11bGF0ZS5oCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94 ODYtZW11bGF0ZS5oCkBAIC03MSw2ICs3MSw5IEBAIFdSQVAocHV0cyk7CiAKICNpbmNsdWRlICJ4 ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oIgogCit2b2lkIGV2ZXhfZGlzcDhfdGVzdCh2b2lkICpp bnN0ciwgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsCisgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzICpvcHMpOworCiBzdGF0aWMgaW5saW5lIHVp bnQ2NF90IHhnZXRidih1aW50MzJfdCB4Y3IpCiB7CiAgICAgdWludDMyX3QgbG8sIGhpOwoKCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==