From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH i-g-t 1/6] i-g-t: kms_plane_scaling: Fix basic scaling test Date: Thu, 4 Jan 2018 15:56:34 +0100 Message-ID: <4f0cfbde-c550-91c2-196a-41e74782f2f3@linux.intel.com> References: <1513158652-8912-1-git-send-email-vidya.srinivas@intel.com> <1513158652-8912-2-git-send-email-vidya.srinivas@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id AB0B0892D5 for ; Thu, 4 Jan 2018 14:56:38 +0000 (UTC) In-Reply-To: <1513158652-8912-2-git-send-email-vidya.srinivas@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Vidya Srinivas , intel-gfx@lists.freedesktop.org Cc: daniel.vetter@intel.com List-Id: intel-gfx@lists.freedesktop.org T3AgMTMtMTItMTcgb20gMTA6NTAgc2NocmVlZiBWaWR5YSBTcmluaXZhczoKPiBGcm9tOiBNYWhl c2ggS3VtYXIgPG1haGVzaDEua3VtYXJAaW50ZWwuY29tPgo+Cj4gUElQRUMgZG9lc250IGhhdmUg M3JkIHBsYW5lIGluIEdFTjkuIFNvLCB3ZSBza2lwIHRoZQo+IDNyZCBwbGFuZSByZWxhdGVkIHNj YWxpbmcgdGVzdCB3aGVyZSAybmQgT1ZFUkxBWQo+IHBsYW5lIGlzIG5vdCBhdmFpbGFibGUuCj4K PiBSZXN0cmljdGluZyBkb3duc2NhbGluZyB0byAoOS8xMCl4IG9yaWdpbmFsIHNpemUgb2YgdGhl Cj4gaW1hZ2UgdG8gYXZvaWQgIk1heCBwaXhlbCByYXRlIGxpbWl0YXRpb24iIG9mIHRoZSBoYXJk d2FyZS4KPgo+IExhdGVyIHBhdGNoZXMgaW4gdGhpcyBzZXJpZXMgd2lsbCBjb3ZlciBjb3JuZXIg Y2FzZXMgb2YKPiBzY2FsaW5nLgo+Cj4gU2lnbmVkLW9mZi1ieTogTWFoZXNoIEt1bWFyIDxtYWhl c2gxLmt1bWFyQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBKeW90aSBZYWRhdiA8anlvdGku ci55YWRhdkBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogVmlkeWEgU3Jpbml2YXMgPHZpZHlh LnNyaW5pdmFzQGludGVsLmNvbT4KPiAtLS0KPiAgdGVzdHMva21zX3BsYW5lX3NjYWxpbmcuYyB8 IDIzNCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDEg ZmlsZSBjaGFuZ2VkLCAxMjUgaW5zZXJ0aW9ucygrKSwgMTA5IGRlbGV0aW9ucygtKQo+Cj4gZGlm ZiAtLWdpdCBhL3Rlc3RzL2ttc19wbGFuZV9zY2FsaW5nLmMgYi90ZXN0cy9rbXNfcGxhbmVfc2Nh bGluZy5jCj4gaW5kZXggNDAzZGY0Ny4uYTgyN2NiMyAxMDA2NDQKPiAtLS0gYS90ZXN0cy9rbXNf cGxhbmVfc2NhbGluZy5jCj4gKysrIGIvdGVzdHMva21zX3BsYW5lX3NjYWxpbmcuYwo+IEBAIC0x NjMsMTQ0ICsxNjMsMTU5IEBAIHN0YXRpYyB2b2lkIGl0ZXJhdGVfcGxhbmVfc2NhbGluZyhkYXRh X3QgKmQsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSkKPiAgCX0KPiAgfQoKVGhlIHNjYWxlciB0ZXN0 cyBzaG91bGQgcmVhbGx5IHJlcXVpcmUgZGlzcGxheS0+aXNfYXRvbWljLiBFdmVuIGlmIHRoZXJl IGFyZQp0aGVvcmV0aWNhbGx5IG1vcmUgbGltaXRzIG9uIHRoZSBhbW91bnQgb2Ygc2NhbGVycywg aGF2aW5nIGEgWVVWIG1vZGUgb3IgaW50ZXJsYWNlZAptb2RlIG1heSB0YWtlIGEgc2NhbGVyLCBj YXVzaW5nIHRoaXMgdGVzdCB0byBmYWlsLgoKV2l0aCB0cnlfY29tbWl0X2F0b21pYywgaXQgd291 bGQgYmUgcG9zc2libGUgdG8gdGVzdCBpZiBlbm91Z2ggc2NhbGVycyBhcmUgYXZhaWxhYmxlLgoK T24gdG9wIG9mIHRoYXQsIEkgd291bGQgcmVhbGx5IGxpa2UgdGhlIHRlc3QgdG8gYmUgbW9yZSBy ZWFkYWJsZSwgYW5kIGhhdmluZwp0ZXN0X3BsYW5lX3NjYWxpbmdfb25fcGlwZSBzcGxpdCB1cCBp biBzbWFsbGVyIHBpZWNlcyB3b3VsZCBhY2NvbXBsaXNoIHRoYXQuCgpJIHdvdWxkIGRvIHNvbWUg c3BsaXQgdXBzIGZpcnN0IGJlZm9yZSBkb2luZyBhbnkgZml4ZXMsIGl0J3MgaGFyZCB0byByZWFk IHdoYXQncwpjaGFuZ2VkIHRocm91Z2ggdGhlIHdoaXRlc3BhY2UgY2hhbmdlcywgZXZlbiBpZiB0 aGUgY29kZSBpcyBjb3JyZWN0LgoKQWxzbyB0aGlzIHRlc3QgbmVlZHMgdG8gYmUgc3BsaXQgdXAg aW50byBzdWJ0ZXN0cywgdGhpcyBpcyBhIGdvb2Qgc3RhcnQgZm9yIGl0LgoKUmVwbGFjZSBpZ3Rf c2ltcGxlX21haW4gd2l0aCBpZ3RfbWFpbiwgYW5kIGFkZCBzdWJ0ZXN0cyBmb3IgZWFjaCBwaXBl IGFuZCB2YXJpb3VzCnRlc3RzIGJlaW5nIHBlcmZvcm1lZC4gU2VlIGZvciBleGFtcGxlIGttc19j b2xvciwgdGhpcyB0ZXN0IGlzIGFscmVhZHkgdHJ5aW5nIHRvIGRvIHRvbwptdWNoIGluIG9uZSBn by4gOikKCn5NYWFydGVuCgo+ICAKPiAtc3RhdGljIHZvaWQgdGVzdF9wbGFuZV9zY2FsaW5nKGRh dGFfdCAqZCkKPiArc3RhdGljIHZvaWQKPiArdGVzdF9wbGFuZV9zY2FsaW5nX29uX3BpcGUoZGF0 YV90ICpkLCBlbnVtIHBpcGUgcGlwZSwgaWd0X291dHB1dF90ICpvdXRwdXQpCj4gIHsKPiAgCWln dF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZC0+ZGlzcGxheTsKPiAtCWlndF9vdXRwdXRfdCAqb3V0 cHV0Owo+IC0JZW51bSBwaXBlIHBpcGU7Cj4gLQlpbnQgdmFsaWRfdGVzdHMgPSAwOwo+ICsJZHJt TW9kZU1vZGVJbmZvICptb2RlOwo+ICAJaW50IHByaW1hcnlfcGxhbmVfc2NhbGluZyA9IDA7IC8q IEZvciBub3cgKi8KPiAgCj4gLQlpZ3RfcmVxdWlyZShkLT5udW1fc2NhbGVycyk7Cj4gKwlpZ3Rf b3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7Cj4gKwltb2RlID0gaWd0X291dHB1dF9nZXRf bW9kZShvdXRwdXQpOwo+ICsKPiArCS8qIGFsbG9jYXRlIGZiMiB3aXRoIGltYWdlIHNpemUgKi8K PiArCWQtPmZiX2lkMiA9IGlndF9jcmVhdGVfaW1hZ2VfZmIoZC0+ZHJtX2ZkLCAwLCAwLAo+ICsJ CQlEUk1fRk9STUFUX1hSR0I4ODg4LAo+ICsJCQlMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxF RCwgLyogdGlsZWQgKi8KPiArCQkJRklMRV9OQU1FLCAmZC0+ZmIyKTsKPiArCWlndF9hc3NlcnQo ZC0+ZmJfaWQyKTsKPiArCj4gKwlkLT5mYl9pZDMgPSBpZ3RfY3JlYXRlX3BhdHRlcm5fZmIoZC0+ ZHJtX2ZkLAo+ICsJCQltb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCj4gKwkJCURSTV9G T1JNQVRfWFJHQjg4ODgsCj4gKwkJCUxPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVELCAvKiB0 aWxlZCAqLwo+ICsJCQkmZC0+ZmIzKTsKPiArCWlndF9hc3NlcnQoZC0+ZmJfaWQzKTsKPiArCj4g KwkvKiBTZXQgdXAgZGlzcGxheSB3aXRoIHBsYW5lIDEgKi8KPiArCWQtPnBsYW5lMSA9IGlndF9v dXRwdXRfZ2V0X3BsYW5lKG91dHB1dCwgMCk7Cj4gKwlwcmVwYXJlX2NydGMoZCwgb3V0cHV0LCBw aXBlLCBkLT5wbGFuZTEsIG1vZGUsIENPTU1JVF9VTklWRVJTQUwpOwo+ICsKPiArCWlmIChwcmlt YXJ5X3BsYW5lX3NjYWxpbmcpIHsKPiArCQkvKiBQcmltYXJ5IHBsYW5lIHVwc2NhbGluZyAqLwo+ ICsJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMSwgZC0+cGxhbmUxLCAxMDAsIDEwMCk7Cj4g KwkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYjEsIGQtPnBsYW5lMSwgNTAwLCA1MDApOwo+ICsJCWln dF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUxLCAwLCAwKTsKPiArCQlpZ3RfcGxhbmVfc2V0 X3NpemUoZC0+cGxhbmUxLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwo+ICsJCWln dF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7Cj4gIAo+IC0JZm9y X2VhY2hfcGlwZV93aXRoX3ZhbGlkX291dHB1dChkaXNwbGF5LCBwaXBlLCBvdXRwdXQpIHsKPiAt CQlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7Cj4gLQo+IC0JCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0 cHV0LCBwaXBlKTsKPiAtCj4gLQkJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsK PiAtCj4gLQkJLyogYWxsb2NhdGUgZmIyIHdpdGggaW1hZ2Ugc2l6ZSAqLwo+IC0JCWQtPmZiX2lk MiA9IGlndF9jcmVhdGVfaW1hZ2VfZmIoZC0+ZHJtX2ZkLCAwLCAwLAo+IC0JCQkJCQlEUk1fRk9S TUFUX1hSR0I4ODg4LAo+IC0JCQkJCQlMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwgLyog dGlsZWQgKi8KPiAtCQkJCQkJRklMRV9OQU1FLCAmZC0+ZmIyKTsKPiAtCQlpZ3RfYXNzZXJ0KGQt PmZiX2lkMik7Cj4gLQo+IC0JCWQtPmZiX2lkMyA9IGlndF9jcmVhdGVfcGF0dGVybl9mYihkLT5k cm1fZmQsCj4gLQkJCQkJCSAgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LAo+IC0JCQkJ CQkgIERSTV9GT1JNQVRfWFJHQjg4ODgsCj4gLQkJCQkJCSAgTE9DQUxfSTkxNV9GT1JNQVRfTU9E X1hfVElMRUQsIC8qIHRpbGVkICovCj4gLQkJCQkJCSAgJmQtPmZiMyk7Cj4gLQkJaWd0X2Fzc2Vy dChkLT5mYl9pZDMpOwo+IC0KPiAtCQkvKiBTZXQgdXAgZGlzcGxheSB3aXRoIHBsYW5lIDEgKi8K PiAtCQlkLT5wbGFuZTEgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZShvdXRwdXQsIDApOwo+IC0JCXBy ZXBhcmVfY3J0YyhkLCBvdXRwdXQsIHBpcGUsIGQtPnBsYW5lMSwgbW9kZSwgQ09NTUlUX1VOSVZF UlNBTCk7Cj4gLQo+IC0JCWlmIChwcmltYXJ5X3BsYW5lX3NjYWxpbmcpIHsKPiAtCQkJLyogUHJp bWFyeSBwbGFuZSB1cHNjYWxpbmcgKi8KPiAtCQkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIx LCBkLT5wbGFuZTEsIDEwMCwgMTAwKTsKPiAtCQkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYjEsIGQt PnBsYW5lMSwgNTAwLCA1MDApOwo+IC0JCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGQtPnBsYW5l MSwgMCwgMCk7Cj4gLQkJCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTEsIG1vZGUtPmhkaXNw bGF5LCBtb2RlLT52ZGlzcGxheSk7Cj4gLQkJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwg Q09NTUlUX1VOSVZFUlNBTCk7Cj4gKwkJLyogUHJpbWFyeSBwbGFuZSAxOjEgbm8gc2NhbGluZyAq Lwo+ICsJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMSwgZC0+cGxhbmUxLCAwLCAwKTsKPiAr CQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMSwgZC0+cGxhbmUxLCBkLT5mYjEud2lkdGgsIGQtPmZi MS5oZWlnaHQpOwo+ICsJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUxLCAwLCAwKTsK PiArCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUxLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+ dmRpc3BsYXkpOwo+ICsJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZF UlNBTCk7Cj4gKwl9Cj4gIAo+IC0JCQkvKiBQcmltYXJ5IHBsYW5lIDE6MSBubyBzY2FsaW5nICov Cj4gLQkJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMSwgZC0+cGxhbmUxLCAwLCAwKTsKPiAt CQkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYjEsIGQtPnBsYW5lMSwgZC0+ZmIxLndpZHRoLCBkLT5m YjEuaGVpZ2h0KTsKPiAtCQkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTEsIDAsIDAp Owo+IC0JCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUxLCBtb2RlLT5oZGlzcGxheSwgbW9k ZS0+dmRpc3BsYXkpOwo+IC0JCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9V TklWRVJTQUwpOwo+IC0JCX0KPiArCS8qIFNldCB1cCBmYjItPnBsYW5lMiBtYXBwaW5nLiAqLwo+ ICsJZC0+cGxhbmUyID0gaWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0LCAxKTsKPiArCWlndF9w bGFuZV9zZXRfZmIoZC0+cGxhbmUyLCAmZC0+ZmIyKTsKPiAgCj4gLQkJLyogU2V0IHVwIGZiMi0+ cGxhbmUyIG1hcHBpbmcuICovCj4gLQkJZC0+cGxhbmUyID0gaWd0X291dHB1dF9nZXRfcGxhbmUo b3V0cHV0LCAxKTsKPiAtCQlpZ3RfcGxhbmVfc2V0X2ZiKGQtPnBsYW5lMiwgJmQtPmZiMik7Cj4g KwkvKiAybmQgcGxhbmUgd2luZG93ZWQgKi8KPiArCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZi MiwgZC0+cGxhbmUyLCAxMDAsIDEwMCk7Cj4gKwlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMiwgZC0+ cGxhbmUyLCBkLT5mYjIud2lkdGgtMjAwLCBkLT5mYjIuaGVpZ2h0LTIwMCk7Cj4gKwlpZ3RfcGxh bmVfc2V0X3Bvc2l0aW9uKGQtPnBsYW5lMiwgMTAwLCAxMDApOwo+ICsJaWd0X3BsYW5lX3NldF9z aXplKGQtPnBsYW5lMiwgbW9kZS0+aGRpc3BsYXktMjAwLCBtb2RlLT52ZGlzcGxheS0yMDApOwo+ ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKPiAgCj4g LQkJLyogMm5kIHBsYW5lIHdpbmRvd2VkICovCj4gLQkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ ZmIyLCBkLT5wbGFuZTIsIDEwMCwgMTAwKTsKPiAtCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMiwg ZC0+cGxhbmUyLCBkLT5mYjIud2lkdGgtMjAwLCBkLT5mYjIuaGVpZ2h0LTIwMCk7Cj4gLQkJaWd0 X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTIsIDEwMCwgMTAwKTsKPiAtCQlpZ3RfcGxhbmVf c2V0X3NpemUoZC0+cGxhbmUyLCBtb2RlLT5oZGlzcGxheS0yMDAsIG1vZGUtPnZkaXNwbGF5LTIw MCk7Cj4gLQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsK PiArCWl0ZXJhdGVfcGxhbmVfc2NhbGluZyhkLCBtb2RlKTsKPiAgCj4gLQkJaXRlcmF0ZV9wbGFu ZV9zY2FsaW5nKGQsIG1vZGUpOwo+ICsJLyogMm5kIHBsYW5lIHVwIHNjYWxpbmcgKi8KPiArCWln dF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMiwgZC0+cGxhbmUyLCAxMDAsIDEwMCk7Cj4gKwlpZ3Rf ZmJfc2V0X3NpemUoJmQtPmZiMiwgZC0+cGxhbmUyLCA1MDAsIDUwMCk7Cj4gKwlpZ3RfcGxhbmVf c2V0X3Bvc2l0aW9uKGQtPnBsYW5lMiwgMTAsIDEwKTsKPiArCWlndF9wbGFuZV9zZXRfc2l6ZShk LT5wbGFuZTIsIG1vZGUtPmhkaXNwbGF5LTIwLCBtb2RlLT52ZGlzcGxheS0yMCk7Cj4gKwlpZ3Rf ZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwpOwo+ICAKPiAtCQkvKiAy bmQgcGxhbmUgdXAgc2NhbGluZyAqLwo+IC0JCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMiwg ZC0+cGxhbmUyLCAxMDAsIDEwMCk7Cj4gLQkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYjIsIGQtPnBs YW5lMiwgNTAwLCA1MDApOwo+IC0JCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUyLCAx MCwgMTApOwo+IC0JCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIsIG1vZGUtPmhkaXNwbGF5 LTIwLCBtb2RlLT52ZGlzcGxheS0yMCk7Cj4gLQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5 LCBDT01NSVRfVU5JVkVSU0FMKTsKPiArCS8qIDJuZCBwbGFuZSBkb3duc2NhbGluZyAqLwo+ICsJ aWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIyLCBkLT5wbGFuZTIsIDAsIDApOwo+ICsJaWd0X2Zi X3NldF9zaXplKCZkLT5mYjIsIGQtPnBsYW5lMiwgZC0+ZmIyLndpZHRoLCBkLT5mYjIuaGVpZ2h0 KTsKPiArCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUyLCAxMCwgMTApOwo+ICAKPiAt CQkvKiAybmQgcGxhbmUgZG93bnNjYWxpbmcgKi8KPiAtCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZk LT5mYjIsIGQtPnBsYW5lMiwgMCwgMCk7Cj4gLQkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYjIsIGQt PnBsYW5lMiwgZC0+ZmIyLndpZHRoLCBkLT5mYjIuaGVpZ2h0KTsKPiAtCQlpZ3RfcGxhbmVfc2V0 X3Bvc2l0aW9uKGQtPnBsYW5lMiwgMTAsIDEwKTsKPiAtCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+ cGxhbmUyLCA1MDAsIDUwMCAqIGQtPmZiMi5oZWlnaHQvZC0+ZmIyLndpZHRoKTsKPiArCS8qIERv d25zY2FsZSAoMTAvOSl4IG9mIG9yaWdpbmFsIGltYWdlICovCj4gKwlpZ3RfcGxhbmVfc2V0X3Np emUoZC0+cGxhbmUyLCAoZC0+ZmIyLndpZHRoICogMTApLzksIChkLT5mYjIuaGVpZ2h0ICogMTAp LzkpOwo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsK PiArCj4gKwlpZiAocHJpbWFyeV9wbGFuZV9zY2FsaW5nKSB7Cj4gKwkJLyogUHJpbWFyeSBwbGFu ZSB1cCBzY2FsaW5nICovCj4gKwkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIxLCBkLT5wbGFu ZTEsIDEwMCwgMTAwKTsKPiArCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMSwgZC0+cGxhbmUxLCA1 MDAsIDUwMCk7Cj4gKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTEsIDAsIDApOwo+ ICsJCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTEsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52 ZGlzcGxheSk7Cj4gIAkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVS U0FMKTsKPiArCX0KPiAgCj4gLQkJaWYgKHByaW1hcnlfcGxhbmVfc2NhbGluZykgewo+IC0JCQkv KiBQcmltYXJ5IHBsYW5lIHVwIHNjYWxpbmcgKi8KPiAtCQkJaWd0X2ZiX3NldF9wb3NpdGlvbigm ZC0+ZmIxLCBkLT5wbGFuZTEsIDEwMCwgMTAwKTsKPiAtCQkJaWd0X2ZiX3NldF9zaXplKCZkLT5m YjEsIGQtPnBsYW5lMSwgNTAwLCA1MDApOwo+IC0JCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGQt PnBsYW5lMSwgMCwgMCk7Cj4gLQkJCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTEsIG1vZGUt PmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSk7Cj4gLQkJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlz cGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7Cj4gLQkJfQo+ICsJLyogU2V0IHVwIGZiMy0+cGxhbmUz IG1hcHBpbmcuICovCj4gKwlkLT5wbGFuZTMgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZShvdXRwdXQs IDIpOwo+ICsJaWd0X3BsYW5lX3NldF9mYihkLT5wbGFuZTMsICZkLT5mYjMpOwo+ICAKPiAtCQkv KiBTZXQgdXAgZmIzLT5wbGFuZTMgbWFwcGluZy4gKi8KPiAtCQlkLT5wbGFuZTMgPSBpZ3Rfb3V0 cHV0X2dldF9wbGFuZShvdXRwdXQsIDIpOwo+IC0JCWlndF9wbGFuZV9zZXRfZmIoZC0+cGxhbmUz LCAmZC0+ZmIzKTsKPiArCWlmKGQtPnBsYW5lMy0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJT T1IpIHsKPiArCQlpZ3RfaW5mbygiUGxhbmUtMyBkb2VzbnQgZXhpc3Qgb24gcGlwZSAlc1xuIiwg a21zdGVzdF9waXBlX25hbWUocGlwZSkpOwo+ICsJCWdvdG8gY2xlYW51cDsKPiArCX0KPiAgCj4g LQkJLyogM3JkIHBsYW5lIHdpbmRvd2VkIC0gbm8gc2NhbGluZyAqLwo+IC0JCWlndF9mYl9zZXRf cG9zaXRpb24oJmQtPmZiMywgZC0+cGxhbmUzLCAxMDAsIDEwMCk7Cj4gLQkJaWd0X2ZiX3NldF9z aXplKCZkLT5mYjMsIGQtPnBsYW5lMywgZC0+ZmIzLndpZHRoLTMwMCwgZC0+ZmIzLmhlaWdodC0z MDApOwo+IC0JCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUzLCAxMDAsIDEwMCk7Cj4g LQkJaWd0X3BsYW5lX3NldF9zaXplKGQtPnBsYW5lMywgbW9kZS0+aGRpc3BsYXktMzAwLCBtb2Rl LT52ZGlzcGxheS0zMDApOwo+IC0JCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlU X1VOSVZFUlNBTCk7Cj4gKwkvKiAzcmQgcGxhbmUgd2luZG93ZWQgLSBubyBzY2FsaW5nICovCj4g KwlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYjMsIGQtPnBsYW5lMywgMTAwLCAxMDApOwo+ICsJ aWd0X2ZiX3NldF9zaXplKCZkLT5mYjMsIGQtPnBsYW5lMywgZC0+ZmIzLndpZHRoLTMwMCwgZC0+ ZmIzLmhlaWdodC0zMDApOwo+ICsJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTMsIDEw MCwgMTAwKTsKPiArCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTMsIG1vZGUtPmhkaXNwbGF5 LTMwMCwgbW9kZS0+dmRpc3BsYXktMzAwKTsKPiArCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxh eSwgQ09NTUlUX1VOSVZFUlNBTCk7Cj4gKwo+ICsJLyogU3dpdGNoIHNjYWxlciBmcm9tIHBsYW5l IDIgdG8gcGxhbmUgMyAqLwo+ICsJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIyLCBkLT5wbGFu ZTIsIDEwMCwgMTAwKTsKPiArCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIyLCBkLT5wbGFuZTIsIGQt PmZiMi53aWR0aC0yMDAsIGQtPmZiMi5oZWlnaHQtMjAwKTsKPiArCWlndF9wbGFuZV9zZXRfcG9z aXRpb24oZC0+cGxhbmUyLCAxMDAsIDEwMCk7Cj4gKwlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxh bmUyLCBkLT5mYjIud2lkdGgtMjAwLCBkLT5mYjIuaGVpZ2h0LTIwMCk7Cj4gKwo+ICsJaWd0X2Zi X3NldF9wb3NpdGlvbigmZC0+ZmIzLCBkLT5wbGFuZTMsIDEwMCwgMTAwKTsKPiArCWlndF9mYl9z ZXRfc2l6ZSgmZC0+ZmIzLCBkLT5wbGFuZTMsIGQtPmZiMy53aWR0aC00MDAsIGQtPmZiMy5oZWln aHQtNDAwKTsKPiArCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUzLCAxMCwgMTApOwo+ ICsJaWd0X3BsYW5lX3NldF9zaXplKGQtPnBsYW5lMywgbW9kZS0+aGRpc3BsYXktMzAwLCBtb2Rl LT52ZGlzcGxheS0zMDApOwo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRf VU5JVkVSU0FMKTsKPiArCj4gKwlpZiAocHJpbWFyeV9wbGFuZV9zY2FsaW5nKSB7Cj4gKwkJLyog U3dpdGNoIHNjYWxlciBmcm9tIHBsYW5lIDEgdG8gcGxhbmUgMiAqLwo+ICsJCWlndF9mYl9zZXRf cG9zaXRpb24oJmQtPmZiMSwgZC0+cGxhbmUxLCAwLCAwKTsKPiArCQlpZ3RfZmJfc2V0X3NpemUo JmQtPmZiMSwgZC0+cGxhbmUxLCBkLT5mYjEud2lkdGgsIGQtPmZiMS5oZWlnaHQpOwo+ICsJCWln dF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUxLCAwLCAwKTsKPiArCQlpZ3RfcGxhbmVfc2V0 X3NpemUoZC0+cGxhbmUxLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwo+ICAKPiAt CQkvKiBTd2l0Y2ggc2NhbGVyIGZyb20gcGxhbmUgMiB0byBwbGFuZSAzICovCj4gIAkJaWd0X2Zi X3NldF9wb3NpdGlvbigmZC0+ZmIyLCBkLT5wbGFuZTIsIDEwMCwgMTAwKTsKPiAtCQlpZ3RfZmJf c2V0X3NpemUoJmQtPmZiMiwgZC0+cGxhbmUyLCBkLT5mYjIud2lkdGgtMjAwLCBkLT5mYjIuaGVp Z2h0LTIwMCk7Cj4gKwkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYjIsIGQtPnBsYW5lMiwgZC0+ZmIy LndpZHRoLTUwMCxkLT5mYjIuaGVpZ2h0LTUwMCk7Cj4gIAkJaWd0X3BsYW5lX3NldF9wb3NpdGlv bihkLT5wbGFuZTIsIDEwMCwgMTAwKTsKPiAtCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUy LCBkLT5mYjIud2lkdGgtMjAwLCBkLT5mYjIuaGVpZ2h0LTIwMCk7Cj4gLQo+IC0JCWlndF9mYl9z ZXRfcG9zaXRpb24oJmQtPmZiMywgZC0+cGxhbmUzLCAxMDAsIDEwMCk7Cj4gLQkJaWd0X2ZiX3Nl dF9zaXplKCZkLT5mYjMsIGQtPnBsYW5lMywgZC0+ZmIzLndpZHRoLTQwMCwgZC0+ZmIzLmhlaWdo dC00MDApOwo+IC0JCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUzLCAxMCwgMTApOwo+ IC0JCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTMsIG1vZGUtPmhkaXNwbGF5LTMwMCwgbW9k ZS0+dmRpc3BsYXktMzAwKTsKPiArCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUyLCBtb2Rl LT5oZGlzcGxheS0yMDAsIG1vZGUtPnZkaXNwbGF5LTIwMCk7Cj4gIAkJaWd0X2Rpc3BsYXlfY29t bWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKPiArCX0KPiAgCj4gLQkJaWYgKHByaW1h cnlfcGxhbmVfc2NhbGluZykgewo+IC0JCQkvKiBTd2l0Y2ggc2NhbGVyIGZyb20gcGxhbmUgMSB0 byBwbGFuZSAyICovCj4gLQkJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMSwgZC0+cGxhbmUx LCAwLCAwKTsKPiAtCQkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYjEsIGQtPnBsYW5lMSwgZC0+ZmIx LndpZHRoLCBkLT5mYjEuaGVpZ2h0KTsKPiAtCQkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5w bGFuZTEsIDAsIDApOwo+IC0JCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUxLCBtb2RlLT5o ZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwo+IC0KPiAtCQkJaWd0X2ZiX3NldF9wb3NpdGlvbigm ZC0+ZmIyLCBkLT5wbGFuZTIsIDEwMCwgMTAwKTsKPiAtCQkJaWd0X2ZiX3NldF9zaXplKCZkLT5m YjIsIGQtPnBsYW5lMiwgZC0+ZmIyLndpZHRoLTUwMCxkLT5mYjIuaGVpZ2h0LTUwMCk7Cj4gLQkJ CWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUyLCAxMDAsIDEwMCk7Cj4gLQkJCWlndF9w bGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIsIG1vZGUtPmhkaXNwbGF5LTIwMCwgbW9kZS0+dmRpc3Bs YXktMjAwKTsKPiAtCQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVS U0FMKTsKPiAtCQl9Cj4gK2NsZWFudXA6Cj4gKwkvKiBiYWNrIHRvIHNpbmdsZSBwbGFuZSBtb2Rl ICovCj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKGQtPnBsYW5lMiwgTlVMTCk7Cj4gKwlpZ3RfcGxhbmVf c2V0X2ZiKGQtPnBsYW5lMywgTlVMTCk7Cj4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXks IENPTU1JVF9VTklWRVJTQUwpOwo+ICAKPiAtCQkvKiBiYWNrIHRvIHNpbmdsZSBwbGFuZSBtb2Rl ICovCj4gLQkJaWd0X3BsYW5lX3NldF9mYihkLT5wbGFuZTIsIE5VTEwpOwo+IC0JCWlndF9wbGFu ZV9zZXRfZmIoZC0+cGxhbmUzLCBOVUxMKTsKPiAtCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3Bs YXksIENPTU1JVF9VTklWRVJTQUwpOwo+ICsJY2xlYW51cF9jcnRjKGQsIG91dHB1dCwgZC0+cGxh bmUxKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdGVzdF9wbGFuZV9zY2FsaW5nKGRhdGFfdCAq ZCwgZW51bSBwaXBlIHBpcGUpCj4gK3sKPiArCWlndF9vdXRwdXRfdCAqb3V0cHV0Owo+ICsJaW50 IHZhbGlkX3Rlc3RzID0gMDsKPiArCj4gKwlpZ3RfcmVxdWlyZShkLT5udW1fc2NhbGVycyk7Cj4g IAo+ICsJZm9yX2VhY2hfdmFsaWRfb3V0cHV0X29uX3BpcGUoJmQtPmRpc3BsYXksIHBpcGUsIG91 dHB1dCkgewo+ICsJCXRlc3RfcGxhbmVfc2NhbGluZ19vbl9waXBlKGQsIHBpcGUsIG91dHB1dCk7 Cj4gKwkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfQU5ZKTsKPiAgCQl2YWxpZF90 ZXN0cysrOwo+IC0JCWNsZWFudXBfY3J0YyhkLCBvdXRwdXQsIGQtPnBsYW5lMSk7Cj4gIAl9Cj4g Kwo+ICAJaWd0X3JlcXVpcmVfZih2YWxpZF90ZXN0cywgIm5vIHZhbGlkIGNydGMvY29ubmVjdG9y IGNvbWJpbmF0aW9ucyBmb3VuZFxuIik7Cj4gIH0KPiAgCj4gIGlndF9zaW1wbGVfbWFpbgo+ICB7 Cj4gIAlkYXRhX3QgZGF0YSA9IHt9Owo+ICsJZW51bSBwaXBlIHBpcGU7Cj4gIAo+ICAJaWd0X3Nr aXBfb25fc2ltdWxhdGlvbigpOwo+ICAKPiBAQCAtMzEyLDcgKzMyNyw4IEBAIGlndF9zaW1wbGVf bWFpbgo+ICAKPiAgCWRhdGEubnVtX3NjYWxlcnMgPSBpbnRlbF9nZW4oZGF0YS5kZXZpZCkgPj0g OSA/IDIgOiAwOwo+ICAKPiAtCXRlc3RfcGxhbmVfc2NhbGluZygmZGF0YSk7Cj4gKwlmb3JfZWFj aF9waXBlX3N0YXRpYyhwaXBlKQo+ICsJCXRlc3RfcGxhbmVfc2NhbGluZygmZGF0YSwgcGlwZSk7 Cj4gIAo+ICAJaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5KTsKPiAgfQoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=