From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 63A956E532 for ; Wed, 7 Feb 2018 08:55:46 +0000 (UTC) Message-ID: <1517993743.14464.1.camel@intel.com> From: Mika Kahola Date: Wed, 07 Feb 2018 10:55:43 +0200 In-Reply-To: <20180201153914.74639-10-maarten.lankhorst@linux.intel.com> References: <20180201153914.74639-1-maarten.lankhorst@linux.intel.com> <20180201153914.74639-10-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 9/9] tests/kms_rotation_crc: Perform lazy cleanup and require atomic. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: mika.kahola@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Maarten Lankhorst , igt-dev@lists.freedesktop.org List-ID: T24gVGh1LCAyMDE4LTAyLTAxIGF0IDE2OjM5ICswMTAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPiBUaGlzIHdvbid0IGNsZWFuIHVwIHJlc291cmNlcyBiZXR3ZWVuIHN1YnRlc3RzLCBzbyBp ZiBzdWJ0ZXN0cyBmYWlsCj4gdGhlIG5leHQgc3VidGVzdCB3aWxsIGNsZWFuIHVwIGV2ZXJ5dGhp bmcuIFRoaXMgYWxsb3dzIGFsbCBzdWJ0ZXN0cwo+IGV2ZW4gaWYgb25lIGZhaWxzLgo+IAo+IFNp Z25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5p bnRlbC5jb20+Cj4gLS0tCj4gwqB0ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMgfCAyMTMgKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtLS0tLS0tLS0tLS0KPiDCoDEgZmlsZSBj aGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCAxNDcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYyBiL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYwo+ IGluZGV4IDUyYTg1ZmI2MmY5Zi4uYTBmYjczNGQwMmY2IDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2tt c19yb3RhdGlvbl9jcmMuYwo+ICsrKyBiL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYwo+IEBAIC0z Myw3ICszMyw2IEBAIHR5cGVkZWYgc3RydWN0IHsKPiDCoAlzdHJ1Y3QgaWd0X2ZiIGZiOwo+IMKg CXN0cnVjdCBpZ3RfZmIgZmJfcmVmZXJlbmNlOwo+IMKgCXN0cnVjdCBpZ3RfZmIgZmJfdW5yb3Rh dGVkOwo+IC0Jc3RydWN0IGlndF9mYiBmYl9tb2Rlc2V0Owo+IMKgCXN0cnVjdCBpZ3RfZmIgZmJf ZmxpcDsKPiDCoAlpZ3RfY3JjX3QgcmVmX2NyYzsKPiDCoAlpZ3RfY3JjX3QgZmxpcF9jcmM7Cj4g QEAgLTEyMiw2OCArMTIxLDUwIEBAIHBhaW50X3NxdWFyZXMoZGF0YV90ICpkYXRhLCBpZ3Rfcm90 YXRpb25fdAo+IHJvdGF0aW9uLAo+IMKgCWlndF9wdXRfY2Fpcm9fY3R4KGRhdGEtPmdmeF9mZCwg ZmIsIGNyKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgdm9pZCBwcmVwYXJlX2NydGMoZGF0YV90ICpk YXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bQo+IHBpcGUgcGlwZSwKPiAtCQkJwqBpZ3Rf cGxhbmVfdCAqcGxhbmUsIGVudW0gaWd0X2NvbW1pdF9zdHlsZQo+IGNvbW1pdCkKPiArc3RhdGlj IHZvaWQgcmVtb3ZlX2ZicyhkYXRhX3QgKmRhdGEpCj4gwqB7Cj4gLQlkcm1Nb2RlTW9kZUluZm8g Km1vZGU7Cj4gLQl1bnNpZ25lZCBpbnQgdywgaDsKPiAtCXVpbnQ2NF90IHRpbGluZyA9IGRhdGEt Pm92ZXJyaWRlX3RpbGluZyA/Ogo+IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkU7Cj4gLQl1aW50 MzJfdCBwaXhlbF9mb3JtYXQgPSBkYXRhLT5vdmVycmlkZV9mbXQgPzoKPiBEUk1fRk9STUFUX1hS R0I4ODg4Owo+IC0JaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+IC0J aWd0X3BsYW5lX3QgKnByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwK PiBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiArCWlmIChkYXRhLT5mYi5mYl9pZCkKPiArCQlp Z3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmZiKTsKPiDCoAo+IC0JaWd0X291dHB1 dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+IC0JaWd0X3BsYW5lX3NldF9yb3RhdGlvbihwbGFu ZSwgSUdUX1JPVEFUSU9OXzApOwo+ICsJaWYgKGRhdGEtPmZiX3JlZmVyZW5jZS5mYl9pZCkKPiAr CQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmZiX3JlZmVyZW5jZSk7Cj4gwqAK PiAtCS8qIGNyZWF0ZSB0aGUgcGlwZV9jcmMgb2JqZWN0IGZvciB0aGlzIHBpcGUgKi8KPiAtCWln dF9waXBlX2NyY19mcmVlKGRhdGEtPnBpcGVfY3JjKTsKPiAtCWRhdGEtPnBpcGVfY3JjID0gaWd0 X3BpcGVfY3JjX25ldyhkYXRhLT5nZnhfZmQsIHBpcGUsCj4gSU5URUxfUElQRV9DUkNfU09VUkNF X0FVVE8pOwo+IC0KPiAtCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7Cj4gKwlp ZiAoZGF0YS0+ZmJfdW5yb3RhdGVkLmZiX2lkKQo+ICsJCWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4 X2ZkLCAmZGF0YS0+ZmJfdW5yb3RhdGVkKTsKPiDCoAo+IC0JdyA9IG1vZGUtPmhkaXNwbGF5Owo+ IC0JaCA9IG1vZGUtPnZkaXNwbGF5Owo+IC0KPiAtCWlndF9jcmVhdGVfZmIoZGF0YS0+Z2Z4X2Zk LCB3LCBoLCBwaXhlbF9mb3JtYXQsIHRpbGluZywKPiAmZGF0YS0+ZmJfbW9kZXNldCk7Cj4gKwlp ZiAoZGF0YS0+ZmJfZmxpcC5mYl9pZCkKPiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwg JmRhdGEtPmZiX2ZsaXApOwo+IMKgCj4gLQkvKgo+IC0JwqAqIFdpdGggaWd0X2Rpc3BsYXlfY29t bWl0MiBhbmQgQ09NTUlUX1VOSVZFUlNBTCwgd2UgY2FsbAo+IGp1c3QgdGhlCj4gLQnCoCogc2V0 cGxhbmUgd2l0aG91dCBhIG1vZGVzZXQuIFNvLCB0byBiZSBhYmxlIHRvIGNhbGwKPiAtCcKgKiBp Z3RfZGlzcGxheV9jb21taXQgYW5kIHVsdGltYXRlbHkgc2V0Y3J0YyB0byBkbyB0aGUgZmlyc3QK PiBtb2Rlc2V0LAo+IC0JwqAqIHdlIGNyZWF0ZSBhbiBmYiBjb3ZlcmluZyB0aGUgY3J0YyBhbmQg Y2FsbCBjb21taXQKPiAtCcKgKgo+IC0JwqAqIEl0J3MgYWxzbyBhIGdvb2QgaWRlYSB0byBzZXQg YSBwcmltYXJ5IGZiIG9uIHRoZSBwcmltYXJ5Cj4gcGxhbmUKPiAtCcKgKiByZWdhcmRsZXNzLCB0 byBmb3JjZSBhIHVuZGVycnVuIHdoZW4gd2F0ZXJtYXJrcyBhcmUKPiBhbGxvY2F0ZWQKPiAtCcKg KiBpbmNvcnJlY3RseSBmb3Igb3RoZXIgcGxhbmVzLgo+IC0JwqAqLwo+IC0JaWd0X3BsYW5lX3Nl dF9mYihwcmltYXJ5LCAmZGF0YS0+ZmJfbW9kZXNldCk7Cj4gKwlkYXRhLT5mYl9mbGlwLmZiX2lk ID0gZGF0YS0+ZmJfcmVmZXJlbmNlLmZiX2lkID0gZGF0YS0KPiA+ZmJfdW5yb3RhdGVkLmZiX2lk ID0gZGF0YS0+ZmIuZmJfaWQgPSAwOwo+ICt9Cj4gwqAKPiAtCWlmIChjb21taXQgPCBDT01NSVRf QVRPTUlDKSB7Cj4gLQkJaWd0X3BsYW5lX2NsZWFyX3Byb3BfY2hhbmdlZChwcmltYXJ5LAo+IElH VF9QTEFORV9ST1RBVElPTik7Cj4gLQkJaWd0X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkpOwo+ICtz dGF0aWMgdm9pZCBjbGVhbnVwX2NydGMoZGF0YV90ICpkYXRhKQo+ICt7Cj4gKwlpZ3RfZGlzcGxh eV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7Cj4gwqAKPiAtCQlpZiAocGxhbmUtPnR5cGUg PT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkKPiAtCQkJaWd0X3BsYW5lX3NldF9wcm9wX2NoYW5n ZWQocHJpbWFyeSwKPiBJR1RfUExBTkVfUk9UQVRJT04pOwo+IC0JfQo+ICsJaWd0X3BpcGVfY3Jj X2ZyZWUoZGF0YS0+cGlwZV9jcmMpOwo+ICsJZGF0YS0+cGlwZV9jcmMgPSBOVUxMOwo+IMKgCj4g LQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBOVUxMKTsKPiArCXJlbW92ZV9mYnMoZGF0YSk7Cj4g wqAKPiAtCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgY29tbWl0KTsKPiArCWlndF9kaXNw bGF5X3Jlc2V0KGRpc3BsYXkpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkIHJlbW92ZV9mYnMo ZGF0YV90ICpkYXRhKQo+ICtzdGF0aWMgdm9pZCBwcmVwYXJlX2NydGMoZGF0YV90ICpkYXRhLCBp Z3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bQo+IHBpcGUgcGlwZSwKPiArCQkJwqBpZ3RfcGxhbmVf dCAqcGxhbmUpCj4gwqB7Cj4gLQlpZiAoIWRhdGEtPmZiLmZiX2lkKQo+IC0JCXJldHVybjsKPiAr CWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPiDCoAo+IC0JaWd0X3Jl bW92ZV9mYihkYXRhLT5nZnhfZmQsICZkYXRhLT5mYik7Cj4gLQlpZ3RfcmVtb3ZlX2ZiKGRhdGEt PmdmeF9mZCwgJmRhdGEtPmZiX3JlZmVyZW5jZSk7Cj4gLQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdm eF9mZCwgJmRhdGEtPmZiX3Vucm90YXRlZCk7Cj4gKwljbGVhbnVwX2NydGMoZGF0YSk7Cj4gwqAK PiAtCWlmIChkYXRhLT5mYl9mbGlwLmZiX2lkKQo+IC0JCWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4 X2ZkLCAmZGF0YS0+ZmJfZmxpcCk7Cj4gKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlw ZSk7Cj4gKwlpZ3RfcGxhbmVfc2V0X3JvdGF0aW9uKHBsYW5lLCBJR1RfUk9UQVRJT05fMCk7Cj4g Kwo+ICsJLyogY3JlYXRlIHRoZSBwaXBlX2NyYyBvYmplY3QgZm9yIHRoaXMgcGlwZSAqLwo+ICsJ aWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOwo+ICsJZGF0YS0+cGlwZV9jcmMgPSBp Z3RfcGlwZV9jcmNfbmV3KGRhdGEtPmdmeF9mZCwgcGlwZSwKPiBJTlRFTF9QSVBFX0NSQ19TT1VS Q0VfQVVUTyk7Cj4gwqAKPiAtCWRhdGEtPmZiX2ZsaXAuZmJfaWQgPSBkYXRhLT5mYi5mYl9pZCA9 IDA7Cj4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+IMKg fQo+IMKgCj4gwqBlbnVtIHJlY3RhbmdsZV90eXBlIHsKPiBAQCAtMjA2LDcgKzE4Nyw3IEBAIHN0 YXRpYyB2b2lkIHByZXBhcmVfZmJzKGRhdGFfdCAqZGF0YSwKPiBpZ3Rfb3V0cHV0X3QgKm91dHB1 dCwKPiDCoAo+IMKgCWlmIChkYXRhLT5mYi5mYl9pZCkgewo+IMKgCQlpZ3RfcGxhbmVfc2V0X2Zi KHBsYW5lLCBOVUxMKTsKPiAtCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIGRpc3BsYXkt PmlzX2F0b21pYyA/Cj4gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9VTklWRVJTQUwpOwo+ICsJCWln dF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7ClNob3VsZCB3ZSBrZWVw IHRoZSBsZWdhY3kgY29tbWl0IGhlcmUgb3Igc2hvdWxkIHdlIGhhdmUgYSByZXF1aXJlbWVudApm b3IgdGhpcyB0ZXN0IHRoYXQgaXQgcnVucyBvbmx5IGF0b21pYz8KPiDCoAo+IMKgCQlyZW1vdmVf ZmJzKGRhdGEpOwo+IMKgCX0KPiBAQCAtMjU5LDI4ICsyNDAsMjQgQEAgc3RhdGljIHZvaWQgcHJl cGFyZV9mYnMoZGF0YV90ICpkYXRhLAo+IGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+IMKgCS8qCj4g wqAJwqAqIENyZWF0ZSBhIHJlZmVyZW5jZSBzb2Z0d2FyZSByb3RhdGVkIGZsaXAgZnJhbWVidWZm ZXIuCj4gwqAJwqAqLwo+IC0JaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1B UlkgfHwgZGlzcGxheS0KPiA+aXNfYXRvbWljKSB7Cj4gLQkJaWd0X2NyZWF0ZV9mYihkYXRhLT5n ZnhfZmQsIHJlZl93LCByZWZfaCwKPiBwaXhlbF9mb3JtYXQsIHRpbGluZywKPiAtCQkJwqDCoMKg wqDCoMKgJmRhdGEtPmZiX2ZsaXApOwo+IC0JCXBhaW50X3NxdWFyZXMoZGF0YSwgZGF0YS0+cm90 YXRpb24sICZkYXRhLT5mYl9mbGlwLAo+IC0JCQnCoMKgwqDCoMKgwqBmbGlwX29wYWNpdHkpOwo+ IC0JCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5mYl9mbGlwKTsKPiAtCQlpZiAocGxh bmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKQo+IC0JCQlpZ3RfcGxhbmVfc2V0X3Bv c2l0aW9uKHBsYW5lLCBkYXRhLT5wb3NfeCwKPiBkYXRhLT5wb3NfeSk7Cj4gLQkJaWd0X2Rpc3Bs YXlfY29tbWl0MihkaXNwbGF5LAo+IC0JCQkJwqDCoMKgwqBkaXNwbGF5LT5pc19hdG9taWMgPwo+ IC0JCQkJwqDCoMKgwqBDT01NSVRfQVRPTUlDIDoKPiBDT01NSVRfVU5JVkVSU0FMKTsKPiAtCQlp Z3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZkYXRhLQo+ID5mbGlwX2Ny Yyk7Cj4gLQo+IC0JCS8qCj4gLQkJwqAqIFByZXBhcmUgdGhlIG5vbi1yb3RhdGVkIGZsaXAgZmIu Cj4gLQkJwqAqLwo+IC0JCWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+ZmJfZmxp cCk7Cj4gLQkJaWd0X2NyZWF0ZV9mYihkYXRhLT5nZnhfZmQsIHcsIGgsIHBpeGVsX2Zvcm1hdCwK PiB0aWxpbmcsCj4gLQkJCcKgwqDCoMKgwqDCoCZkYXRhLT5mYl9mbGlwKTsKPiAtCQlwYWludF9z cXVhcmVzKGRhdGEsIElHVF9ST1RBVElPTl8wLCAmZGF0YS0+ZmJfZmxpcCwKPiAtCQkJwqDCoMKg wqDCoMKgZmxpcF9vcGFjaXR5KTsKPiAtCX0KPiArCWlndF9jcmVhdGVfZmIoZGF0YS0+Z2Z4X2Zk LCByZWZfdywgcmVmX2gsIHBpeGVsX2Zvcm1hdCwKPiB0aWxpbmcsCj4gKwkJwqDCoMKgwqDCoMKg JmRhdGEtPmZiX2ZsaXApOwo+ICsJcGFpbnRfc3F1YXJlcyhkYXRhLCBkYXRhLT5yb3RhdGlvbiwg JmRhdGEtPmZiX2ZsaXAsCj4gKwkJwqDCoMKgwqDCoMKgZmxpcF9vcGFjaXR5KTsKPiArCWlndF9w bGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5mYl9mbGlwKTsKPiArCWlmIChwbGFuZS0+dHlwZSAh PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCj4gKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihwbGFu ZSwgZGF0YS0+cG9zX3gsIGRhdGEtCj4gPnBvc195KTsKPiArCWlndF9kaXNwbGF5X2NvbW1pdDIo ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4gKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0 YS0+cGlwZV9jcmMsICZkYXRhLT5mbGlwX2NyYyk7Cj4gKwo+ICsJLyoKPiArCcKgwqAqIFByZXBh cmUgdGhlIG5vbi1yb3RhdGVkIGZsaXAgZmIuCj4gKwnCoMKgKi8KPiArCWlndF9yZW1vdmVfZmIo ZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+ZmJfZmxpcCk7Cj4gKwlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmdm eF9mZCwgdywgaCwgcGl4ZWxfZm9ybWF0LCB0aWxpbmcsCj4gKwkJwqDCoMKgwqDCoMKgJmRhdGEt PmZiX2ZsaXApOwo+ICsJcGFpbnRfc3F1YXJlcyhkYXRhLCBJR1RfUk9UQVRJT05fMCwgJmRhdGEt PmZiX2ZsaXAsCj4gKwkJwqDCoMKgwqDCoMKgZmxpcF9vcGFjaXR5KTsKPiDCoAo+IMKgCS8qCj4g wqAJwqAqIENyZWF0ZSBhIHJlZmVyZW5jZSBDUkMgZm9yIGEgc29mdHdhcmUtcm90YXRlZCBmYi4K PiBAQCAtMjkyLDcgKzI2OSw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfZmJzKGRhdGFfdCAqZGF0 YSwKPiBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKPiDCoAlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAm ZGF0YS0+ZmJfcmVmZXJlbmNlKTsKPiDCoAlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZ UEVfQ1VSU09SKQo+IMKgCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lLCBkYXRhLT5wb3Nf eCwgZGF0YS0KPiA+cG9zX3kpOwo+IC0JaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBkaXNw bGF5LT5pc19hdG9taWMgPwo+IENPTU1JVF9BVE9NSUMgOiBDT01NSVRfVU5JVkVSU0FMKTsKPiAr CWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4gwqAKPiDCoAlp Z3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZkYXRhLT5yZWZfY3JjKTsK PiDCoAo+IEBAIC0zMDUsNyArMjgyLDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9mYnMoZGF0YV90 ICpkYXRhLAo+IGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+IMKgCWlndF9wbGFuZV9zZXRfcm90YXRp b24ocGxhbmUsIElHVF9ST1RBVElPTl8wKTsKPiDCoAlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BM QU5FX1RZUEVfQ1VSU09SKQo+IMKgCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lLCBkYXRh LT5wb3NfeCwgZGF0YS0KPiA+cG9zX3kpOwo+IC0JaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5 LCBkaXNwbGF5LT5pc19hdG9taWMgPwo+IENPTU1JVF9BVE9NSUMgOiBDT01NSVRfVU5JVkVSU0FM KTsKPiArCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4gwqAK PiDCoAkvKgo+IMKgCcKgKiBQcmVwYXJlIHRoZSBwbGFuZSB3aXRoIGFuIG5vbi1yb3RhdGVkIGZi IGxldCB0aGUgaHcKPiByb3RhdGUgaXQuCj4gQEAgLTMxOCwzNSArMjk1LDYgQEAgc3RhdGljIHZv aWQgcHJlcGFyZV9mYnMoZGF0YV90ICpkYXRhLAo+IGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+IMKg CQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lLCBkYXRhLT5wb3NfeCwgZGF0YS0KPiA+cG9z X3kpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkIGNsZWFudXBfY3J0YyhkYXRhX3QgKmRhdGEs IGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+IGlndF9wbGFuZV90ICpwbGFuZSkKPiAtewo+IC0JaWd0 X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+IC0KPiAtCWlndF9waXBlX2Ny Y19mcmVlKGRhdGEtPnBpcGVfY3JjKTsKPiAtCWRhdGEtPnBpcGVfY3JjID0gTlVMTDsKPiAtCj4g LQlyZW1vdmVfZmJzKGRhdGEpOwo+IC0KPiAtCWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAm ZGF0YS0+ZmJfbW9kZXNldCk7Cj4gLQo+IC0JLyogWFhYOiBzZWUgdGhlIG5vdGUgaW4gcHJlcGFy ZV9jcnRjKCkgKi8KPiAtCWlmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZ KSB7Cj4gLQkJaWd0X3BsYW5lX3QgKnByaW1hcnk7Cj4gLQo+IC0JCXByaW1hcnkgPSBpZ3Rfb3V0 cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwKPiBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiAt CQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIE5VTEwpOwo+IC0JfQo+IC0KPiAtCWlndF9wbGFu ZV9zZXRfZmIocGxhbmUsIE5VTEwpOwo+IC0JaWd0X3BsYW5lX3NldF9yb3RhdGlvbihwbGFuZSwg SUdUX1JPVEFUSU9OXzApOwo+IC0KPiAtCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09N TUlUX1VOSVZFUlNBTCk7Cj4gLQo+IC0JaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVf QU5ZKTsKPiAtCj4gLQlpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7Cj4gLX0KPiAtCj4gwqBz dGF0aWMgdm9pZCB3YWl0X2Zvcl9wYWdlZmxpcChpbnQgZmQpCj4gwqB7Cj4gwqAJZHJtRXZlbnRD b250ZXh0IGV2Y3R4ID0geyAudmVyc2lvbiA9IDIgfTsKPiBAQCAtMzcxLDE4ICszMTksMTEgQEAg c3RhdGljIHZvaWQgdGVzdF9wbGFuZV9yb3RhdGlvbihkYXRhX3QgKmRhdGEsCj4gaW50IHBsYW5l X3R5cGUsIGJvb2wgdGVzdF9iYWRfZm9ybQo+IMKgCWVudW0gcGlwZSBwaXBlOwo+IMKgCWludCB2 YWxpZF90ZXN0cyA9IDA7Cj4gwqAJaWd0X2NyY190IGNyY19vdXRwdXQ7Cj4gLQllbnVtIGlndF9j b21taXRfc3R5bGUgY29tbWl0ID0gQ09NTUlUX0xFR0FDWTsKPiDCoAlpbnQgcmV0Owo+IMKgCj4g LQlpZiAocGxhbmVfdHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZIHx8IHBsYW5lX3R5cGUg PT0KPiBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCj4gLQkJY29tbWl0ID0gQ09NTUlUX1VOSVZFUlNB TDsKPiAtCj4gwqAJaWYgKHBsYW5lX3R5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKQo+IMKg CQlpZ3RfcmVxdWlyZShkaXNwbGF5LT5oYXNfY3Vyc29yX3BsYW5lKTsKPiDCoAo+IC0JaWYgKGRh dGEtPmRpc3BsYXkuaXNfYXRvbWljKQo+IC0JCWNvbW1pdCA9IENPTU1JVF9BVE9NSUM7Cj4gLQo+ IMKgCWZvcl9lYWNoX3BpcGVfd2l0aF92YWxpZF9vdXRwdXQoZGlzcGxheSwgcGlwZSwgb3V0cHV0 KSB7Cj4gwqAJCWlndF9wbGFuZV90ICpwbGFuZTsKPiDCoAkJaW50IGk7Cj4gQEAgLTM5NSw3ICsz MzYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BsYW5lX3JvdGF0aW9uKGRhdGFfdCAqZGF0YSwgaW50 Cj4gcGxhbmVfdHlwZSwgYm9vbCB0ZXN0X2JhZF9mb3JtCj4gwqAJCXBsYW5lID0gaWd0X291dHB1 dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsCj4gcGxhbmVfdHlwZSk7Cj4gwqAJCWlndF9yZXF1aXJl KGlndF9wbGFuZV9oYXNfcHJvcChwbGFuZSwKPiBJR1RfUExBTkVfUk9UQVRJT04pKTsKPiDCoAo+ IC0JCXByZXBhcmVfY3J0YyhkYXRhLCBvdXRwdXQsIHBpcGUsIHBsYW5lLCBjb21taXQpOwo+ICsJ CXByZXBhcmVfY3J0YyhkYXRhLCBvdXRwdXQsIHBpcGUsIHBsYW5lKTsKPiDCoAo+IMKgCQlmb3Ig KGkgPSAwOyBpIDwgbnVtX3JlY3RhbmdsZV90eXBlczsgaSsrKSB7Cj4gwqAJCQkvKiBVbnN1cHBv cnRlZCBvbiBpOTE1ICovCj4gQEAgLTQxNSw3ICszNTYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3Bs YW5lX3JvdGF0aW9uKGRhdGFfdCAqZGF0YSwgaW50Cj4gcGxhbmVfdHlwZSwgYm9vbCB0ZXN0X2Jh ZF9mb3JtCj4gwqAJCQlpZiAoZGF0YS0+cm90YXRpb24gJiAoSUdUX1JPVEFUSU9OXzkwIHwKPiBJ R1RfUk9UQVRJT05fMjcwKSkKPiDCoAkJCQlpZ3RfcGxhbmVfc2V0X3NpemUocGxhbmUsIGRhdGEt Cj4gPmZiLmhlaWdodCwgZGF0YS0+ZmIud2lkdGgpOwo+IMKgCj4gLQkJCXJldCA9IGlndF9kaXNw bGF5X3RyeV9jb21taXQyKGRpc3BsYXksCj4gY29tbWl0KTsKPiArCQkJcmV0ID0gaWd0X2Rpc3Bs YXlfdHJ5X2NvbW1pdDIoZGlzcGxheSwKPiBDT01NSVRfQVRPTUlDKTsKPiDCoAkJCWlmICh0ZXN0 X2JhZF9mb3JtYXQpIHsKPiDCoAkJCQlpZ3RfYXNzZXJ0X2VxKHJldCwgLUVJTlZBTCk7Cj4gwqAJ CQkJY29udGludWU7Cj4gQEAgLTQ1Niw0MSArMzk3LDI4IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGxh bmVfcm90YXRpb24oZGF0YV90ICpkYXRhLAo+IGludCBwbGFuZV90eXBlLCBib29sIHRlc3RfYmFk X2Zvcm0KPiDCoAkJfQo+IMKgCj4gwqAJCXZhbGlkX3Rlc3RzKys7Cj4gLQkJY2xlYW51cF9jcnRj KGRhdGEsIG91dHB1dCwgcGxhbmUpOwo+IMKgCX0KPiDCoAlpZ3RfcmVxdWlyZV9mKHZhbGlkX3Rl c3RzLCAibm8gdmFsaWQgY3J0Yy9jb25uZWN0b3IKPiBjb21iaW5hdGlvbnMgZm91bmRcbiIpOwo+ IMKgfQo+IMKgCj4gwqBzdGF0aWMgdm9pZCB0ZXN0X3BsYW5lX3JvdGF0aW9uX2V4aGF1c3RfZmVu Y2VzKGRhdGFfdCAqZGF0YSwKPiDCoAkJCQkJwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3QgKm91 dHB1dCwKPiAtCQkJCQnCoMKgwqDCoMKgwqDCoGludCBwbGFuZV90eXBlKQo+ICsJCQkJCcKgwqDC oMKgwqDCoMKgaWd0X3BsYW5lX3QgKnBsYW5lKQo+IMKgewo+IMKgCWlndF9kaXNwbGF5X3QgKmRp c3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPiDCoAl1aW50NjRfdCB0aWxpbmcgPSBMT0NBTF9JOTE1 X0ZPUk1BVF9NT0RfWV9USUxFRDsKPiDCoAl1aW50MzJfdCBmb3JtYXQgPSBEUk1fRk9STUFUX1hS R0I4ODg4Owo+IMKgCWludCBicHAgPSBpZ3RfZHJtX2Zvcm1hdF90b19icHAoZm9ybWF0KTsKPiAt CWVudW0gaWd0X2NvbW1pdF9zdHlsZSBjb21taXQgPSBDT01NSVRfTEVHQUNZOwo+IMKgCWludCBm ZCA9IGRhdGEtPmdmeF9mZDsKPiAtCWlndF9wbGFuZV90ICpwbGFuZTsKPiDCoAlkcm1Nb2RlTW9k ZUluZm8gKm1vZGU7Cj4gLQlkYXRhX3QgZGF0YTJbTUFYX0ZFTkNFUysxXSA9IHt9Owo+ICsJc3Ry dWN0IGlndF9mYiBmYltNQVhfRkVOQ0VTKzFdID0ge307Cj4gwqAJdW5zaWduZWQgaW50IHN0cmlk ZSwgc2l6ZSwgdywgaDsKPiDCoAl1aW50MzJfdCBnZW1faGFuZGxlOwo+IMKgCXVpbnQ2NF90IHRv dGFsX2FwZXJ0dXJlX3NpemUsIHRvdGFsX2Zic19zaXplOwo+IMKgCWludCBpLCByZXQ7Cj4gwqAK PiAtCXBsYW5lID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsIHBsYW5lX3R5cGUp Owo+IMKgCWlndF9yZXF1aXJlKGlndF9wbGFuZV9oYXNfcHJvcChwbGFuZSwgSUdUX1BMQU5FX1JP VEFUSU9OKSk7Cj4gwqAKPiAtCWlmIChwbGFuZV90eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1B UlkgfHwgcGxhbmVfdHlwZSA9PQo+IERSTV9QTEFORV9UWVBFX0NVUlNPUikKPiAtCQljb21taXQg PSBDT01NSVRfVU5JVkVSU0FMOwo+IC0KPiAtCWlmIChwbGFuZV90eXBlID09IERSTV9QTEFORV9U WVBFX0NVUlNPUikKPiAtCQlpZ3RfcmVxdWlyZShkaXNwbGF5LT5oYXNfY3Vyc29yX3BsYW5lKTsK PiAtCj4gLQlpZiAoZGF0YS0+ZGlzcGxheS5pc19hdG9taWMpCj4gLQkJY29tbWl0ID0gQ09NTUlU X0FUT01JQzsKPiAtCj4gwqAJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKPiDC oAl3ID0gbW9kZS0+aGRpc3BsYXk7Cj4gwqAJaCA9IG1vZGUtPnZkaXNwbGF5Owo+IEBAIC01MDks NyArNDM3LDcgQEAgc3RhdGljIHZvaWQKPiB0ZXN0X3BsYW5lX3JvdGF0aW9uX2V4aGF1c3RfZmVu Y2VzKGRhdGFfdCAqZGF0YSwKPiDCoAlpZ3RfcmVxdWlyZSh0b3RhbF9mYnNfc2l6ZSA8IHRvdGFs X2FwZXJ0dXJlX3NpemUgKiAwLjkpOwo+IMKgCj4gwqAJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwg TlVMTCk7Cj4gLQlpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7Cj4gKwlpZ3RfZGlzcGxheV9j b21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+IMKgCj4gwqAJZm9yIChpID0gMDsgaSA8 IE1BWF9GRU5DRVMgKyAxOyBpKyspIHsKPiDCoAkJZ2VtX2hhbmRsZSA9IGdlbV9jcmVhdGUoZmQs IHNpemUpOwo+IEBAIC01MjIsMjAgKzQ1MCwyMCBAQCBzdGF0aWMgdm9pZAo+IHRlc3RfcGxhbmVf cm90YXRpb25fZXhoYXVzdF9mZW5jZXMoZGF0YV90ICpkYXRhLAo+IMKgCQlyZXQgPSAoX19rbXNf YWRkZmIoZmQsIGdlbV9oYW5kbGUsIHcsIGgsIHN0cmlkZSwKPiDCoAkJwqDCoMKgwqDCoMKgwqBm b3JtYXQsIHRpbGluZywgTlVMTCwKPiDCoAkJwqDCoMKgwqDCoMKgwqBMT0NBTF9EUk1fTU9ERV9G Ql9NT0RJRklFUlMsCj4gLQkJwqDCoMKgwqDCoMKgwqAmZGF0YTJbaV0uZmIuZmJfaWQpKTsKPiAr CQnCoMKgwqDCoMKgwqDCoCZmYltpXS5mYl9pZCkpOwo+IMKgCQlpZiAocmV0KSB7Cj4gwqAJCQlp Z3Rfd2FybigiZmFpbGVkIHRvIGNyZWF0ZSBmcmFtZWJ1ZmZlclxuIik7Cj4gwqAJCQlnb3RvIGVy cl9hbGxvYzsKPiDCoAkJfQo+IMKgCj4gLQkJZGF0YTJbaV0uZmIud2lkdGggPSB3Owo+IC0JCWRh dGEyW2ldLmZiLmhlaWdodCA9IGg7Cj4gLQkJZGF0YTJbaV0uZmIuZ2VtX2hhbmRsZSA9IGdlbV9o YW5kbGU7Cj4gKwkJZmJbaV0ud2lkdGggPSB3Owo+ICsJCWZiW2ldLmhlaWdodCA9IGg7Cj4gKwkJ ZmJbaV0uZ2VtX2hhbmRsZSA9IGdlbV9oYW5kbGU7Cj4gwqAKPiAtCQlpZ3RfcGxhbmVfc2V0X2Zi KHBsYW5lLCAmZGF0YTJbaV0uZmIpOwo+ICsJCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZmYltp XSk7Cj4gwqAJCWlndF9wbGFuZV9zZXRfcm90YXRpb24ocGxhbmUsIElHVF9ST1RBVElPTl8wKTsK PiDCoAo+IC0JCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXQyKGRpc3BsYXksIGNvbW1pdCk7 Cj4gKwkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPiDCoAkJ aWYgKHJldCkgewo+IMKgCQkJaWd0X3dhcm4oImZhaWxlZCB0byBjb21taXQgdW5yb3RhdGVkIGZi XG4iKTsKPiDCoAkJCWdvdG8gZXJyX2NvbW1pdDsKPiBAQCAtNTQ0LDcgKzQ3Miw3IEBAIHN0YXRp YyB2b2lkCj4gdGVzdF9wbGFuZV9yb3RhdGlvbl9leGhhdXN0X2ZlbmNlcyhkYXRhX3QgKmRhdGEs Cj4gwqAJCWlndF9wbGFuZV9zZXRfcm90YXRpb24ocGxhbmUsIElHVF9ST1RBVElPTl85MCk7Cj4g wqAJCWlndF9wbGFuZV9zZXRfc2l6ZShwbGFuZSwgaCwgdyk7Cj4gwqAKPiAtCQlpZ3RfZGlzcGxh eV9jb21taXQyKGRpc3BsYXksIGNvbW1pdCk7Cj4gKwkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNw bGF5LCBDT01NSVRfQVRPTUlDKTsKPiDCoAkJaWYgKHJldCkgewo+IMKgCQkJaWd0X3dhcm4oImZh aWxlZCB0byBjb21taXQgaGFyZHdhcmUgcm90YXRlZAo+IGZiOiAlaVxuIiwgcmV0KTsKPiDCoAkJ CWdvdG8gZXJyX2NvbW1pdDsKPiBAQCAtNTU3LDE5ICs0ODUsOSBAQCBlcnJfYWxsb2M6Cj4gwqAK PiDCoAlpLS07Cj4gwqBlcnJfY29tbWl0Ogo+IC0JaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVM TCk7Cj4gLQlpZ3RfcGxhbmVfc2V0X3JvdGF0aW9uKHBsYW5lLCBJR1RfUk9UQVRJT05fMCk7Cj4g LQo+IC0JaWYgKGNvbW1pdCA8IENPTU1JVF9BVE9NSUMpCj4gLQkJaWd0X2Rpc3BsYXlfY29tbWl0 MihkaXNwbGF5LCBjb21taXQpOwo+IC0KPiAtCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQ SVBFX05PTkUpOwo+IC0JaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBkaXNwbGF5LT5pc19h dG9taWMgPwo+IENPTU1JVF9BVE9NSUMgOiBDT01NSVRfTEVHQUNZKTsKPiAtCj4gwqAJZm9yICg7 IGkgPj0gMDsgaS0tKQo+IC0JCWlndF9yZW1vdmVfZmIoZmQsICZkYXRhMltpXS5mYik7Cj4gKwkJ aWd0X3JlbW92ZV9mYihmZCwgJmZiW2ldKTsKPiDCoAo+IC0Ja21zdGVzdF9yZXN0b3JlX3Z0X21v ZGUoKTsKPiDCoAlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7Cj4gwqB9Cj4gwqAKPiBAQCAtNzI2LDkg KzY0NCwxMCBAQCBpZ3RfbWFpbgo+IMKgCQlpZ3RfcmVxdWlyZShnZW4gPj0gOSk7Cj4gwqAKPiDC oAkJZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlkX291dHB1dCgmZGF0YS5kaXNwbGF5LCBwaXBlLAo+ IG91dHB1dCkgewo+IC0JCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7Cj4gKwkJ CWlndF9wbGFuZV90ICpwcmltYXJ5ID0KPiAmZGF0YS5kaXNwbGF5LnBpcGVzW3BpcGVdLnBsYW5l c1swXTsKPiArCQkJcHJlcGFyZV9jcnRjKCZkYXRhLCBvdXRwdXQsIHBpcGUsIHByaW1hcnkpOwo+ IMKgCj4gLQkJCXRlc3RfcGxhbmVfcm90YXRpb25fZXhoYXVzdF9mZW5jZXMoJmRhdGEsCj4gb3V0 cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiArCQkJdGVzdF9wbGFuZV9yb3RhdGlvbl9l eGhhdXN0X2ZlbmNlcygmZGF0YSwKPiBvdXRwdXQsIHByaW1hcnkpOwo+IMKgCj4gwqAJCQl2YWxp ZF90ZXN0cysrOwo+IMKgCQkJYnJlYWs7Ci0tIApNaWthIEthaG9sYSAtIEludGVsIE9UQwoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWls aW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==