From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: igt/kms_rotation_crc: Add horizontal flip subtest. Date: Thu, 21 Sep 2017 13:57:14 +0300 Message-ID: <20170921105714.GE4914@intel.com> References: <1505965837-1744-1-git-send-email-joseph1.garvey@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id C2C506E0BF for ; Thu, 21 Sep 2017 10:57:18 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1505965837-1744-1-git-send-email-joseph1.garvey@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Joseph Garvey Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMjAsIDIwMTcgYXQgMDg6NTA6MzdQTSAtMDcwMCwgSm9zZXBoIEdhcnZleSB3 cm90ZToKPiBUZXN0IHRoYXQgaG9yaXpvbnRhbCBmbGlwIHdvcmtzIHdpdGggc3VwcG9ydGVkIHJv dGF0aW9ucy4gSW5jbHVkZXMKPiBhIGZpeCBmb3IgdGhlIHVucm90YXRlZCBmYiB3aGljaCB3YXMg bm90IGJlaW5nIHBvc2l0aW9uZWQgY29ycmVjdGx5Cj4gd2l0aCBwb3J0cmFpdCBhbmQgbGFuZHNj YXBlIHJlY3RhbmdsZXMuCj4gCj4gU2lnbmVkLW9mZi1ieTogSm9zZXBoIEdhcnZleSA8am9zZXBo MS5nYXJ2ZXlAaW50ZWwuY29tPgo+IC0tLQo+ICBsaWIvaWd0X2ttcy5jICAgICAgICAgICAgfCAg IDIgKy0KPiAgbGliL2lndF9rbXMuaCAgICAgICAgICAgIHwgICA0ICsKPiAgdGVzdHMva21zX3Jv dGF0aW9uX2NyYy5jIHwgMTk3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTY2IGluc2VydGlvbnMoKyksIDM3IGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwo+ IGluZGV4IDdiY2FmYzAuLmVjNmZmZDIgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9rbXMuYwo+ICsr KyBiL2xpYi9pZ3Rfa21zLmMKPiBAQCAtMzA1NCw3ICszMDU0LDcgQEAgdm9pZCBpZ3RfZmJfc2V0 X3NpemUoc3RydWN0IGlndF9mYiAqZmIsIGlndF9wbGFuZV90ICpwbGFuZSwKPiAgCj4gIHN0YXRp YyBjb25zdCBjaGFyICpyb3RhdGlvbl9uYW1lKGlndF9yb3RhdGlvbl90IHJvdGF0aW9uKQo+ICB7 Cj4gLQlzd2l0Y2ggKHJvdGF0aW9uKSB7Cj4gKwlzd2l0Y2ggKHJvdGF0aW9uICYgSUdUX1JPVEFU SU9OX01BU0spIHsKPiAgCWNhc2UgSUdUX1JPVEFUSU9OXzA6Cj4gIAkJcmV0dXJuICIwwrAiOwo+ ICAJY2FzZSBJR1RfUk9UQVRJT05fOTA6Cj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmggYi9s aWIvaWd0X2ttcy5oCj4gaW5kZXggM2QxMDYxZi4uNjEzOTNkMSAxMDA2NDQKPiAtLS0gYS9saWIv aWd0X2ttcy5oCj4gKysrIGIvbGliL2lndF9rbXMuaAo+IEBAIC0yODEsOCArMjgxLDEyIEBAIHR5 cGVkZWYgZW51bSB7Cj4gIAlJR1RfUk9UQVRJT05fOTAgID0gMSA8PCAxLAo+ICAJSUdUX1JPVEFU SU9OXzE4MCA9IDEgPDwgMiwKPiAgCUlHVF9ST1RBVElPTl8yNzAgPSAxIDw8IDMsCj4gKwlJR1Rf UkVGTEVDVF9YICAgID0gMSA8PCA0LAoKTWF5YmUgYWRkIFJFRkxFQ1RfWSBhcyB3ZWxsPwoKPiAg fSBpZ3Rfcm90YXRpb25fdDsKPiAgCj4gKyNkZWZpbmUgSUdUX1JPVEFUSU9OX01BU0sgXAo+ICsJ KElHVF9ST1RBVElPTl8wIHwgSUdUX1JPVEFUSU9OXzkwIHwgSUdUX1JPVEFUSU9OXzE4MCB8IElH VF9ST1RBVElPTl8yNzApCj4gKwo+ICB0eXBlZGVmIHN0cnVjdCB7Cj4gIAkvKjwgcHJpdmF0ZSA+ Ki8KPiAgCWlndF9waXBlX3QgKnBpcGU7Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19yb3RhdGlv bl9jcmMuYyBiL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYwo+IGluZGV4IDIxZTI2NGEuLjBlMmRm OTYgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMva21zX3JvdGF0aW9uX2NyYy5jCj4gKysrIGIvdGVzdHMv a21zX3JvdGF0aW9uX2NyYy5jCj4gQEAgLTMyLDYgKzMyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+ ICAJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Owo+ICAJc3RydWN0IGlndF9mYiBmYjsKPiAgCXN0cnVj dCBpZ3RfZmIgZmJfcmVmZXJlbmNlOwo+ICsJc3RydWN0IGlndF9mYiBmYl91bnJvdGF0ZWQ7Cj4g IAlzdHJ1Y3QgaWd0X2ZiIGZiX21vZGVzZXQ7Cj4gIAlzdHJ1Y3QgaWd0X2ZiIGZiX2ZsaXA7Cj4g IAlpZ3RfY3JjX3QgcmVmX2NyYzsKPiBAQCAtNDMsOCArNDQsNjIgQEAgdHlwZWRlZiBzdHJ1Y3Qg ewo+ICAJdWludDMyX3Qgb3ZlcnJpZGVfZm10Owo+ICAJdWludDY0X3Qgb3ZlcnJpZGVfdGlsaW5n Owo+ICAJYm9vbCBmbGlwczsKPiArCWludCBkZXZpZDsKPiAgfSBkYXRhX3Q7Cj4gIAo+ICt0eXBl ZGVmIHN0cnVjdCB7Cj4gKwlmbG9hdCByOwo+ICsJZmxvYXQgZzsKPiArCWZsb2F0IGI7Cj4gK30g cmdiX2NvbG9yX3Q7Cj4gKwo+ICtzdGF0aWMgdm9pZCBzZXRfY29sb3IocmdiX2NvbG9yX3QgKmNv bG9yLCBmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiKQo+ICt7Cj4gKwljb2xvci0+ciA9IHI7Cj4g Kwljb2xvci0+ZyA9IGc7Cj4gKwljb2xvci0+YiA9IGI7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IHJvdGF0ZV9jb2xvcnMocmdiX2NvbG9yX3QgKnRsLCByZ2JfY29sb3JfdCAqdHIsIHJnYl9jb2xv cl90ICpiciwKPiArCQkJICByZ2JfY29sb3JfdCAqYmwsIGlndF9yb3RhdGlvbl90IHJvdGF0aW9u KQo+ICt7Cj4gKwlyZ2JfY29sb3JfdCBibF90bXAsIGJyX3RtcCwgdGxfdG1wLCB0cl90bXA7Cj4g Kwo+ICsJaWYgKHJvdGF0aW9uICYgSUdUX1JFRkxFQ1RfWCkgewo+ICsJCWJsX3RtcCA9ICpibDsK PiArCQlicl90bXAgPSAqYnI7Cj4gKwkJdGxfdG1wID0gKnRsOwo+ICsJCXRyX3RtcCA9ICp0cjsK PiArCQkqdGwgPSB0cl90bXA7Cj4gKwkJKmJsID0gYnJfdG1wOwo+ICsJCSp0ciA9IHRsX3RtcDsK PiArCQkqYnIgPSBibF90bXA7CgpUaGVzZSBjb3VsZCB1c2UgaWd0X3N3YXAoKQoKPiArCX0KPiAr Cj4gKwlpZiAocm90YXRpb24gJiBJR1RfUk9UQVRJT05fOTApIHsKPiArCQlibF90bXAgPSAqYmw7 Cj4gKwkJYnJfdG1wID0gKmJyOwo+ICsJCXRsX3RtcCA9ICp0bDsKPiArCQl0cl90bXAgPSAqdHI7 Cj4gKwkJKnRsID0gdHJfdG1wOwo+ICsJCSpibCA9IHRsX3RtcDsKPiArCQkqdHIgPSBicl90bXA7 Cj4gKwkJKmJyID0gYmxfdG1wOwo+ICsJfSBlbHNlIGlmIChyb3RhdGlvbiAmIElHVF9ST1RBVElP Tl8yNzApIHsKPiArCQlibF90bXAgPSAqYmw7Cj4gKwkJYnJfdG1wID0gKmJyOwo+ICsJCXRsX3Rt cCA9ICp0bDsKPiArCQl0cl90bXAgPSAqdHI7Cj4gKwkJKnRsID0gYmxfdG1wOwo+ICsJCSpibCA9 IGJyX3RtcDsKPiArCQkqdHIgPSB0bF90bXA7Cj4gKwkJKmJyID0gdHJfdG1wOwo+ICsJfQo+ICt9 Cj4gKwo+ICsjZGVmaW5lIFJHQl9DT0xPUihjb2xvcikgXAo+ICsJY29sb3IuciwgY29sb3IuZywg Y29sb3IuYgo+ICsKPiAgc3RhdGljIHZvaWQKPiAgcGFpbnRfc3F1YXJlcyhkYXRhX3QgKmRhdGEs IGlndF9yb3RhdGlvbl90IHJvdGF0aW9uLAo+ICAJICAgICAgc3RydWN0IGlndF9mYiAqZmIsIGZs b2F0IG8pCj4gQEAgLTUyLDM1ICsxMDcsMjYgQEAgcGFpbnRfc3F1YXJlcyhkYXRhX3QgKmRhdGEs IGlndF9yb3RhdGlvbl90IHJvdGF0aW9uLAo+ICAJY2Fpcm9fdCAqY3I7Cj4gIAl1bnNpZ25lZCBp bnQgdyA9IGZiLT53aWR0aDsKPiAgCXVuc2lnbmVkIGludCBoID0gZmItPmhlaWdodDsKPiArCXJn Yl9jb2xvcl90IHRsLCB0ciwgYmwsIGJyOwo+ICAKPiAgCWNyID0gaWd0X2dldF9jYWlyb19jdHgo ZGF0YS0+Z2Z4X2ZkLCBmYik7Cj4gIAo+IC0JaWYgKHJvdGF0aW9uID09IElHVF9ST1RBVElPTl8x ODApIHsKPiArCXNldF9jb2xvcigmdGwsIG8sIDAsIDApOwo+ICsJc2V0X2NvbG9yKCZ0ciwgMCwg bywgMCk7Cj4gKwlzZXRfY29sb3IoJmJyLCBvLCBvLCBvKTsKPiArCXNldF9jb2xvcigmYmwsIDAs IDAsIG8pOwoKTWF5YmUgd3JpdGUgdGhlIGZsb2F0IGNvbnN0YW50cyBhcyBhY3R1YWwgZmxvYXQg Y29uc3RhbnRzPyBXb3VsZCBtYWtlCml0IG11Y2ggbW9yZSBjbGVhciB0aGF0IGl0IGFjdHVhbGx5 IHRha2VzIGZsb2F0cyBpbnN0ZWFkIG9mIGludGVnZXJzLgoKPiArCj4gKwlyb3RhdGVfY29sb3Jz KCZ0bCwgJnRyLCAmYnIsICZibCwgcm90YXRpb24pOwo+ICsKPiArCWlmIChyb3RhdGlvbiAmIElH VF9ST1RBVElPTl8xODApIHsKPiAgCQljYWlyb190cmFuc2xhdGUoY3IsIHcsIGgpOwo+ICAJCWNh aXJvX3JvdGF0ZShjciwgTV9QSSk7Cj4gIAl9CgpUaGlzIDE4MCBkZWdyZWUgc3BlY2lhbCBjYXNl IGhhcyBhbHdheXMgYm90aGVyZWQgbWUuIENvdWxkIHlvdSByZW1vdmUgdGhpcwphbmQganVzdCBk byB0aGluZ3Mgb25lIHdheSBmb3IgYWxsIGFuZ2xlcz8KCj4gIAo+IC0JaWYgKHJvdGF0aW9uID09 IElHVF9ST1RBVElPTl85MCkgewo+IC0JCS8qIFBhaW50IDQgc3F1YXJlcyB3aXRoIHdpZHRoID09 IGhlaWdodCBpbiBHcmVlbiwgV2hpdGUsCj4gLQkJQmx1ZSwgUmVkIENsb2Nrd2lzZSBvcmRlciB0 byBsb29rIGxpa2UgMjcwIGRlZ3JlZSByb3RhdGVkKi8KPiAtCQlpZ3RfcGFpbnRfY29sb3IoY3Is IDAsIDAsIHcgLyAyLCBoIC8gMiwgMC4wLCBvLCAwLjApOwo+IC0JCWlndF9wYWludF9jb2xvcihj ciwgdyAvIDIsIDAsIHcgLyAyLCBoIC8gMiwgbywgbywgbyk7Cj4gLQkJaWd0X3BhaW50X2NvbG9y KGNyLCAwLCBoIC8gMiwgdyAvIDIsIGggLyAyLCBvLCAwLjAsIDAuMCk7Cj4gLQkJaWd0X3BhaW50 X2NvbG9yKGNyLCB3IC8gMiwgaCAvIDIsIHcgLyAyLCBoIC8gMiwgMC4wLCAwLjAsIG8pOwo+IC0J fSBlbHNlIGlmIChyb3RhdGlvbiA9PSBJR1RfUk9UQVRJT05fMjcwKSB7Cj4gLQkJLyogUGFpbnQg NCBzcXVhcmVzIHdpdGggd2lkdGggPT0gaGVpZ2h0IGluIEJsdWUsIFJlZCwKPiAtCQlHcmVlbiwg V2hpdGUgQ2xvY2t3aXNlIG9yZGVyIHRvIGxvb2sgbGlrZSA5MCBkZWdyZWUgcm90YXRlZCovCj4g LQkJaWd0X3BhaW50X2NvbG9yKGNyLCAwLCAwLCB3IC8gMiwgaCAvIDIsIDAuMCwgMC4wLCBvKTsK PiAtCQlpZ3RfcGFpbnRfY29sb3IoY3IsIHcgLyAyLCAwLCB3IC8gMiwgaCAvIDIsIG8sIDAuMCwg MC4wKTsKPiAtCQlpZ3RfcGFpbnRfY29sb3IoY3IsIDAsIGggLyAyLCB3IC8gMiwgaCAvIDIsIG8s IG8sIG8pOwo+IC0JCWlndF9wYWludF9jb2xvcihjciwgdyAvIDIsIGggLyAyLCB3IC8gMiwgaCAv IDIsIDAuMCwgbywgMC4wKTsKPiAtCX0gZWxzZSB7Cj4gLQkJLyogUGFpbnQgd2l0aCA0IHNxdWFy ZXMgb2YgUmVkLCBHcmVlbiwgV2hpdGUsIEJsdWUgQ2xvY2t3aXNlICovCj4gLQkJaWd0X3BhaW50 X2NvbG9yKGNyLCAwLCAwLCB3IC8gMiwgaCAvIDIsIG8sIDAuMCwgMC4wKTsKPiAtCQlpZ3RfcGFp bnRfY29sb3IoY3IsIHcgLyAyLCAwLCB3IC8gMiwgaCAvIDIsIDAuMCwgbywgMC4wKTsKPiAtCQlp Z3RfcGFpbnRfY29sb3IoY3IsIDAsIGggLyAyLCB3IC8gMiwgaCAvIDIsIDAuMCwgMC4wLCBvKTsK PiAtCQlpZ3RfcGFpbnRfY29sb3IoY3IsIHcgLyAyLCBoIC8gMiwgdyAvIDIsIGggLyAyLCBvLCBv LCBvKTsKPiAtCX0KPiArCWlndF9wYWludF9jb2xvcihjciwgMCwgMCwgdyAvIDIsIGggLyAyLCBS R0JfQ09MT1IodGwpKTsKPiArCWlndF9wYWludF9jb2xvcihjciwgdyAvIDIsIDAsIHcgLyAyLCBo IC8gMiwgUkdCX0NPTE9SKHRyKSk7Cj4gKwlpZ3RfcGFpbnRfY29sb3IoY3IsIDAsIGggLyAyLCB3 IC8gMiwgaCAvIDIsIFJHQl9DT0xPUihibCkpOwo+ICsJaWd0X3BhaW50X2NvbG9yKGNyLCB3IC8g MiwgaCAvIDIsIHcgLyAyLCBoIC8gMiwgUkdCX0NPTE9SKGJyKSk7Cj4gIAo+ICAJY2Fpcm9fZGVz dHJveShjcik7Cj4gIH0KPiBAQCAtMTQxLDYgKzE4Nyw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZV9m YnMoZGF0YV90ICpkYXRhKQo+ICAKPiAgCWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0 YS0+ZmIpOwo+ICAJaWd0X3JlbW92ZV9mYihkYXRhLT5nZnhfZmQsICZkYXRhLT5mYl9yZWZlcmVu Y2UpOwo+ICsJaWd0X3JlbW92ZV9mYihkYXRhLT5nZnhfZmQsICZkYXRhLT5mYl91bnJvdGF0ZWQp Owo+ICAKPiAgCWlmIChkYXRhLT5mYl9mbGlwLmZiX2lkKQo+ICAJCWlndF9yZW1vdmVfZmIoZGF0 YS0+Z2Z4X2ZkLCAmZGF0YS0+ZmJfZmxpcCk7Cj4gQEAgLTIxMiwxNyArMjU5LDEyIEBAIHN0YXRp YyB2b2lkIHByZXBhcmVfZmJzKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsCj4g IAkgKiBGb3IgOTAvMjcwLCB3ZSB3aWxsIHVzZSBjcmVhdGUgc21hbGxlciBmYiBzbyB0aGF0IHRo ZSByb3RhdGVkCj4gIAkgKiBmcmFtZSBjYW4gZml0IGluCj4gIAkgKi8KPiAtCWlmIChkYXRhLT5y b3RhdGlvbiA9PSBJR1RfUk9UQVRJT05fOTAgfHwKPiAtCSAgICBkYXRhLT5yb3RhdGlvbiA9PSBJ R1RfUk9UQVRJT05fMjcwKSB7Cj4gKwlpZiAoZGF0YS0+cm90YXRpb24gJiAoSUdUX1JPVEFUSU9O XzkwIHwgSUdUX1JPVEFUSU9OXzI3MCkpIHsKPiAgCQl0aWxpbmcgPSBkYXRhLT5vdmVycmlkZV90 aWxpbmcgPzogTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ7Cj4gIAo+ICAJCWlndF9zd2Fw KHcsIGgpOwo+ICAJfQo+ICAKPiAtCWlndF9jcmVhdGVfZmIoZGF0YS0+Z2Z4X2ZkLCB3LCBoLCBw aXhlbF9mb3JtYXQsIHRpbGluZywgJmRhdGEtPmZiKTsKPiAtCj4gLQlpZ3RfcGxhbmVfc2V0X3Jv dGF0aW9uKHBsYW5lLCBJR1RfUk9UQVRJT05fMCk7Cj4gLQo+ICAJLyoKPiAgCSAqIENyZWF0ZSBh IHJlZmVyZW5jZSBzb2Z0d2FyZSByb3RhdGVkIGZsaXAgZnJhbWVidWZmZXIuCj4gIAkgKi8KPiBA QCAtMjU1LDggKzI5NywyMCBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2ZicyhkYXRhX3QgKmRhdGEs IGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+ICAJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEt PnBpcGVfY3JjLCAmZGF0YS0+cmVmX2NyYyk7Cj4gIAo+ICAJLyoKPiArCSAqIFByZXBhcmUgdGhl IG5vbi1yb3RhdGVkIHJlZmVyZW5jZSBmYi4KPiArCSAqLwo+ICsJaWd0X2NyZWF0ZV9mYihkYXRh LT5nZnhfZmQsIHJlZl93LCByZWZfaCwgcGl4ZWxfZm9ybWF0LCB0aWxpbmcsICZkYXRhLT5mYl91 bnJvdGF0ZWQpOwo+ICsJcGFpbnRfc3F1YXJlcyhkYXRhLCBJR1RfUk9UQVRJT05fMCwgJmRhdGEt PmZiX3Vucm90YXRlZCwgMS4wKTsKPiArCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5m Yl91bnJvdGF0ZWQpOwo+ICsJaWd0X3BsYW5lX3NldF9yb3RhdGlvbihwbGFuZSwgSUdUX1JPVEFU SU9OXzApOwo+ICsJaWYgKHBsYW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX0NVUlNPUikKPiAr CQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lLCBkYXRhLT5wb3NfeCwgZGF0YS0+cG9zX3kp Owo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBkaXNwbGF5LT5pc19hdG9taWMgPyBD T01NSVRfQVRPTUlDIDogQ09NTUlUX1VOSVZFUlNBTCk7Cj4gKwo+ICsJLyoKPiAgCSAqIFByZXBh cmUgdGhlIHBsYW5lIHdpdGggYW4gbm9uLXJvdGF0ZWQgZmIgbGV0IHRoZSBodyByb3RhdGUgaXQu Cj4gIAkgKi8KPiArCWlndF9jcmVhdGVfZmIoZGF0YS0+Z2Z4X2ZkLCB3LCBoLCBwaXhlbF9mb3Jt YXQsIHRpbGluZywgJmRhdGEtPmZiKTsKPiAgCXBhaW50X3NxdWFyZXMoZGF0YSwgSUdUX1JPVEFU SU9OXzAsICZkYXRhLT5mYiwgMS4wKTsKPiAgCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRh LT5mYik7Cj4gIAo+IEBAIC0zMjIsNyArMzc2LDcgQEAgc3RhdGljIHZvaWQgd2FpdF9mb3JfcGFn ZWZsaXAoaW50IGZkKQo+ICAJaWd0X2Fzc2VydChkcm1IYW5kbGVFdmVudChmZCwgJmV2Y3R4KSA9 PSAwKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgdGVzdF9wbGFuZV9yb3RhdGlvbihkYXRhX3Qg KmRhdGEsIGludCBwbGFuZV90eXBlKQo+ICtzdGF0aWMgdm9pZCBfX3Rlc3RfcGxhbmVfcm90YXRp b24oZGF0YV90ICpkYXRhLCBpbnQgcGxhbmVfdHlwZSwgYm9vbCB0ZXN0X2JhZF9mb3JtYXQpCj4g IHsKPiAgCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPiAgCWlndF9v dXRwdXRfdCAqb3V0cHV0Owo+IEBAIC0zNDUsNiArMzk5LDkgQEAgc3RhdGljIHZvaWQgdGVzdF9w bGFuZV9yb3RhdGlvbihkYXRhX3QgKmRhdGEsIGludCBwbGFuZV90eXBlKQo+ICAJCWlndF9wbGFu ZV90ICpwbGFuZTsKPiAgCQlpbnQgaTsKPiAgCj4gKwkJaWYgKElTX0NIRVJSWVZJRVcoZGF0YS0+ ZGV2aWQpICYmIHBpcGUgIT0gUElQRV9CKQo+ICsJCQljb250aW51ZTsKCldlIHNob3VsZCBiZSBh YmxlIHRvIGp1c3QgYXNrIHRoZSBwbGFuZSB3aGljaCByb3RhdGlvbnMgaXQgc3VwcG9ydHMuCgo+ ICsKPiAgCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7Cj4gIAo+ICAJCXBsYW5l ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsIHBsYW5lX3R5cGUpOwo+IEBAIC0z NjYsMTQgKzQyMywxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BsYW5lX3JvdGF0aW9uKGRhdGFfdCAq ZGF0YSwgaW50IHBsYW5lX3R5cGUpCj4gIAkJCWlndF9kZWJ1ZygiVGVzdGluZyBjYXNlICVpIG9u IHBpcGUgJXNcbiIsIGksIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKTsKPiAgCQkJcHJlcGFyZV9m YnMoZGF0YSwgb3V0cHV0LCBwbGFuZSwgaSk7Cj4gIAo+IC0JCQlpZ3RfZGlzcGxheV9jb21taXQy KGRpc3BsYXksIGNvbW1pdCk7Cj4gLQo+ICAJCQlpZ3RfcGxhbmVfc2V0X3JvdGF0aW9uKHBsYW5l LCBkYXRhLT5yb3RhdGlvbik7Cj4gLQkJCWlmIChkYXRhLT5yb3RhdGlvbiA9PSBJR1RfUk9UQVRJ T05fOTAgfHwgZGF0YS0+cm90YXRpb24gPT0gSUdUX1JPVEFUSU9OXzI3MCkKPiArCQkJaWYgKGRh dGEtPnJvdGF0aW9uICYgKElHVF9ST1RBVElPTl85MCB8IElHVF9ST1RBVElPTl8yNzApKQo+ICAJ CQkJaWd0X3BsYW5lX3NldF9zaXplKHBsYW5lLCBkYXRhLT5mYi5oZWlnaHQsIGRhdGEtPmZiLndp ZHRoKTsKPiAgCj4gIAkJCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXQyKGRpc3BsYXksIGNv bW1pdCk7Cj4gLQkJCWlmIChkYXRhLT5vdmVycmlkZV9mbXQgfHwgZGF0YS0+b3ZlcnJpZGVfdGls aW5nKSB7Cj4gKwkJCWlmICh0ZXN0X2JhZF9mb3JtYXQgJiYgKGRhdGEtPm92ZXJyaWRlX2ZtdCB8 fCBkYXRhLT5vdmVycmlkZV90aWxpbmcpKSB7Cj4gIAkJCQlpZ3RfYXNzZXJ0X2VxKHJldCwgLUVJ TlZBTCk7Cj4gIAkJCQljb250aW51ZTsKPiAgCQkJfQo+IEBAIC00MTAsNiArNDY1LDE2IEBAIHN0 YXRpYyB2b2lkIHRlc3RfcGxhbmVfcm90YXRpb24oZGF0YV90ICpkYXRhLCBpbnQgcGxhbmVfdHlw ZSkKPiAgCWlndF9yZXF1aXJlX2YodmFsaWRfdGVzdHMsICJubyB2YWxpZCBjcnRjL2Nvbm5lY3Rv ciBjb21iaW5hdGlvbnMgZm91bmRcbiIpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW5saW5lIHZvaWQg dGVzdF9iYWRfcGxhbmVfcm90YXRpb24oZGF0YV90ICpkYXRhLCBpbnQgcGxhbmVfdHlwZSkKPiAr ewo+ICsJX190ZXN0X3BsYW5lX3JvdGF0aW9uKGRhdGEsIHBsYW5lX3R5cGUsIHRydWUpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgdGVzdF9wbGFuZV9yb3RhdGlvbihkYXRhX3QgKmRh dGEsIGludCBwbGFuZV90eXBlKQo+ICt7Cj4gKwlfX3Rlc3RfcGxhbmVfcm90YXRpb24oZGF0YSwg cGxhbmVfdHlwZSwgZmFsc2UpOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCB0ZXN0X3BsYW5lX3Jv dGF0aW9uX3l0aWxlZF9vYmooZGF0YV90ICpkYXRhLAo+ICAJCQkJCSAgIGlndF9vdXRwdXRfdCAq b3V0cHV0LAo+ICAJCQkJCSAgIGludCBwbGFuZV90eXBlKQo+IEBAIC02MTIsNiArNjc3LDggQEAg c3RhdGljIGNvbnN0IGNoYXIgKnBsYW5lX3Rlc3Rfc3RyKHVuc2lnbmVkIHBsYW5lKQo+ICBzdGF0 aWMgY29uc3QgY2hhciAqcm90X3Rlc3Rfc3RyKGlndF9yb3RhdGlvbl90IHJvdCkKPiAgewo+ICAJ c3dpdGNoIChyb3QpIHsKPiArCWNhc2UgSUdUX1JPVEFUSU9OXzA6Cj4gKwkJcmV0dXJuICIwIjsK PiAgCWNhc2UgSUdUX1JPVEFUSU9OXzkwOgo+ICAJCXJldHVybiAiOTAiOwo+ICAJY2FzZSBJR1Rf Uk9UQVRJT05fMTgwOgo+IEBAIC02MjMsNiArNjkwLDIwIEBAIHN0YXRpYyBjb25zdCBjaGFyICpy b3RfdGVzdF9zdHIoaWd0X3JvdGF0aW9uX3Qgcm90KQo+ICAJfQo+ICB9Cj4gIAo+ICtzdGF0aWMg Y29uc3QgY2hhciAqdGlsaW5nX3Rlc3Rfc3RyKHVpbnQ2NF90IHRpbGluZykKPiArewo+ICsJc3dp dGNoICh0aWxpbmcpIHsKPiArCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6Cj4g KwkJcmV0dXJuICJ4LXRpbGVkIjsKPiArCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElM RUQ6Cj4gKwkJcmV0dXJuICJ5LXRpbGVkIjsKPiArCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9E X1lmX1RJTEVEOgo+ICsJCXJldHVybiAieWYtdGlsZWQiOwo+ICsJZGVmYXVsdDoKPiArCQlpZ3Rf YXNzZXJ0KDApOwo+ICsJfQo+ICt9Cj4gKwo+ICBzdGF0aWMgY29uc3QgY2hhciAqZmxpcF90ZXN0 X3N0cih1bnNpZ25lZCBmbGlwcykKPiAgewo+ICAJaWYgKGZsaXBzKQo+IEBAIC02NTMsNiArNzM0 LDM1IEBAIGlndF9tYWluCj4gIAkJeyBEUk1fUExBTkVfVFlQRV9DVVJTT1IsIElHVF9ST1RBVElP Tl8xODAsIDAgfSwKPiAgCQl7IDAsIDAsIDB9Cj4gIAl9Owo+ICsKPiArCXN0cnVjdCBoZmxpcCB7 Cj4gKwkJdWludDY0X3QgdGlsaW5nOwo+ICsJCWlndF9yb3RhdGlvbl90IHJvdDsKPiArCQl1bnNp Z25lZCBmbGlwczsKCmJvb2w/Cgo+ICsJfSAqaGZsaXAsIGhmbGlwX3N1YnRlc3RzW10gPSB7Cj4g KwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwgSUdUX1JPVEFUSU9OXzAsIDAgfSwK PiArCQl7IExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVELCBJR1RfUk9UQVRJT05fMTgwLCAw IH0sCj4gKwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCwgSUdUX1JPVEFUSU9OXzAs IDAgfSwKPiArCQl7IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVELCBJR1RfUk9UQVRJT05f OTAsIDAgfSwKPiArCQl7IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVELCBJR1RfUk9UQVRJ T05fMTgwLCAwIH0sCj4gKwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCwgSUdUX1JP VEFUSU9OXzI3MCwgMCB9LAo+ICsJCXsgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVELCBJ R1RfUk9UQVRJT05fMCwgMH0sCj4gKwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQs IElHVF9ST1RBVElPTl85MCwgMH0sCj4gKwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElM RUQsIElHVF9ST1RBVElPTl8xODAsIDB9LAo+ICsJCXsgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lm X1RJTEVELCBJR1RfUk9UQVRJT05fMjcwLCAwfSwKPiArCQl7IExPQ0FMX0k5MTVfRk9STUFUX01P RF9YX1RJTEVELCBJR1RfUk9UQVRJT05fMCwgMSB9LAo+ICsJCXsgTE9DQUxfSTkxNV9GT1JNQVRf TU9EX1hfVElMRUQsIElHVF9ST1RBVElPTl8xODAsIDEgfSwKPiArCQl7IExPQ0FMX0k5MTVfRk9S TUFUX01PRF9ZX1RJTEVELCBJR1RfUk9UQVRJT05fMCwgMSB9LAo+ICsJCXsgTE9DQUxfSTkxNV9G T1JNQVRfTU9EX1lfVElMRUQsIElHVF9ST1RBVElPTl85MCwgMSB9LAo+ICsJCXsgTE9DQUxfSTkx NV9GT1JNQVRfTU9EX1lfVElMRUQsIElHVF9ST1RBVElPTl8xODAsIDEgfSwKPiArCQl7IExPQ0FM X0k5MTVfRk9STUFUX01PRF9ZX1RJTEVELCBJR1RfUk9UQVRJT05fMjcwLCAxIH0sCj4gKwkJeyBM T0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQsIElHVF9ST1RBVElPTl8wLCAxfSwKPiArCQl7 IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCwgSUdUX1JPVEFUSU9OXzkwLCAxfSwKPiAr CQl7IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCwgSUdUX1JPVEFUSU9OXzE4MCwgMX0s Cj4gKwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQsIElHVF9ST1RBVElPTl8yNzAs IDF9LAo+ICsJCXsgMCwgMCwgMH0KPiArCX07Cj4gKwo+ICAJZGF0YV90IGRhdGEgPSB7fTsKPiAg CWludCBnZW4gPSAwOwo+ICAKPiBAQCAtNjYwLDcgKzc3MCw4IEBAIGlndF9tYWluCj4gIAo+ICAJ aWd0X2ZpeHR1cmUgewo+ICAJCWRhdGEuZ2Z4X2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihE UklWRVJfSU5URUwpOwo+IC0JCWdlbiA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGRh dGEuZ2Z4X2ZkKSk7Cj4gKwkJZGF0YS5kZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZGF0YS5n ZnhfZmQpOwo+ICsJCWdlbiA9IGludGVsX2dlbihkYXRhLmRldmlkKTsKPiAgCj4gIAkJa21zdGVz dF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwo+ICAKPiBAQCAtNjk3LDcgKzgwOCw3IEBAIGlndF9t YWluCj4gIAkJZGF0YS5wb3NfeSA9IDA7Cj4gIAkJZGF0YS5yb3RhdGlvbiA9IElHVF9ST1RBVElP Tl85MDsKPiAgCQlkYXRhLm92ZXJyaWRlX2ZtdCA9IERSTV9GT1JNQVRfUkdCNTY1Owo+IC0JCXRl c3RfcGxhbmVfcm90YXRpb24oJmRhdGEsIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwo+ICsJCXRl c3RfYmFkX3BsYW5lX3JvdGF0aW9uKCZkYXRhLCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiAg CX0KPiAgCj4gIAlpZ3Rfc3VidGVzdF9mKCJiYWQtdGlsaW5nIikgewo+IEBAIC03MDUsNyArODE2 LDcgQEAgaWd0X21haW4KPiAgCQlkYXRhLm92ZXJyaWRlX2ZtdCA9IDA7Cj4gIAkJZGF0YS5yb3Rh dGlvbiA9IElHVF9ST1RBVElPTl85MDsKPiAgCQlkYXRhLm92ZXJyaWRlX3RpbGluZyA9IExPQ0FM X0RSTV9GT1JNQVRfTU9EX05PTkU7Cj4gLQkJdGVzdF9wbGFuZV9yb3RhdGlvbigmZGF0YSwgRFJN X1BMQU5FX1RZUEVfUFJJTUFSWSk7Cj4gKwkJdGVzdF9iYWRfcGxhbmVfcm90YXRpb24oJmRhdGEs IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwo+ICAJfQo+ICAKPiAgCWlndF9zdWJ0ZXN0X2YoInBy aW1hcnktcm90YXRpb24tOTAtWS10aWxlZCIpIHsKPiBAQCAtNzI4LDYgKzgzOSwyMCBAQCBpZ3Rf bWFpbgo+ICAJCWlndF9yZXF1aXJlX2YodmFsaWRfdGVzdHMsICJubyB2YWxpZCBjcnRjL2Nvbm5l Y3RvciBjb21iaW5hdGlvbnMgZm91bmRcbiIpOwo+ICAJfQo+ICAKPiArCWZvciAoaGZsaXAgPSBo ZmxpcF9zdWJ0ZXN0czsgaGZsaXAtPnRpbGluZzsgaGZsaXArKykgewo+ICsJCWlndF9zdWJ0ZXN0 X2YoInByaW1hcnktaC1mbGlwLSVzLSVzIiwKCkknZCBjYWxsIGl0ICJyZWZsZWN0LXgiIG9yIHNv bWV0aGluZyBsaWtlIHRoYXQgc2luY2UgdGhhdCdzIHdoYXQgdGhlCmZsYWcgaXMgY2FsbGVkLgoK PiArCQkJICAgICAgdGlsaW5nX3Rlc3Rfc3RyKGhmbGlwLT50aWxpbmcpLAo+ICsJCQkgICAgICBy b3RfdGVzdF9zdHIoaGZsaXAtPnJvdCkpIHsKPiArCQkJaWd0X3JlcXVpcmUoZ2VuID49IDEwIHx8 Cj4gKwkJCQkgICAgKElTX0NIRVJSWVZJRVcoZGF0YS5kZXZpZCkgJiYgaGZsaXAtPnJvdCA9PSBJ R1RfUk9UQVRJT05fMCAmJgo+ICsJCQkJICAgIGhmbGlwLT50aWxpbmcgPT0gTE9DQUxfSTkxNV9G T1JNQVRfTU9EX1hfVElMRUQpKTsKPiArCQkJZGF0YS5yb3RhdGlvbiA9IChJR1RfUkVGTEVDVF9Y IHwgaGZsaXAtPnJvdCk7Cj4gKwkJCWRhdGEub3ZlcnJpZGVfdGlsaW5nID0gaGZsaXAtPnRpbGlu ZzsKPiArCQkJZGF0YS5mbGlwcyA9IGhmbGlwLT5mbGlwczsKPiArCQkJdGVzdF9wbGFuZV9yb3Rh dGlvbigmZGF0YSwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7Cj4gKwkJfQo+ICsJfQo+ICsKPiAg CWlndF9zdWJ0ZXN0X2YoImV4aGF1c3QtZmVuY2VzIikgewo+ICAJCWVudW0gcGlwZSBwaXBlOwo+ ICAJCWlndF9vdXRwdXRfdCAqb3V0cHV0Owo+IC0tIAo+IDIuNy40CgotLSAKVmlsbGUgU3lyasOk bMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK