From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1210C6E78A for ; Fri, 9 Feb 2018 09:40:00 +0000 (UTC) From: "Kahola, Mika" Date: Fri, 9 Feb 2018 09:39:57 +0000 Message-ID: References: <20180206101417.59979-1-maarten.lankhorst@linux.intel.com> <20180206101417.59979-10-maarten.lankhorst@linux.intel.com> In-Reply-To: <20180206101417.59979-10-maarten.lankhorst@linux.intel.com> Content-Language: en-US MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 10/12] tests/kms_rotation_crc: Perform lazy cleanup and require atomic. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBpZ3QtZGV2IFttYWlsdG86aWd0 LWRldi1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10gT24gQmVoYWxmIE9mDQo+IE1hYXJ0 ZW4gTGFua2hvcnN0DQo+IFNlbnQ6IFR1ZXNkYXksIEZlYnJ1YXJ5IDYsIDIwMTggMTI6MTQgUE0N Cj4gVG86IGlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+IFN1YmplY3Q6IFtpZ3QtZGV2 XSBbUEFUQ0ggaS1nLXQgMTAvMTJdIHRlc3RzL2ttc19yb3RhdGlvbl9jcmM6IFBlcmZvcm0gbGF6 eQ0KPiBjbGVhbnVwIGFuZCByZXF1aXJlIGF0b21pYy4NCj4gDQo+IFRoaXMgd29uJ3QgY2xlYW4g dXAgcmVzb3VyY2VzIGJldHdlZW4gc3VidGVzdHMsIHNvIGlmIHN1YnRlc3RzIGZhaWwgdGhlIG5l eHQNCj4gc3VidGVzdCB3aWxsIGNsZWFuIHVwIGV2ZXJ5dGhpbmcuIFRoaXMgYWxsb3dzIGFsbCBz dWJ0ZXN0cyBldmVuIGlmIG9uZSBmYWlscy4NCj4gDQoNClJldmlld2VkLWJ5OiBNaWthIEthaG9s YSA8bWlrYS5rYWhvbGFAaW50ZWwuY29tPg0KDQo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+DQo+IC0tLQ0KPiAgdGVz dHMva21zX3JvdGF0aW9uX2NyYy5jIHwgMjAzICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+ICAxIGZpbGUgY2hhbmdlZCwgNjAgaW5zZXJ0aW9ucygrKSwg MTQzIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19yb3RhdGlvbl9j cmMuYyBiL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYyBpbmRleA0KPiA3NGE2MTEwMjJkNWEuLjky NDJkZGVlNWZlYiAxMDA2NDQNCj4gLS0tIGEvdGVzdHMva21zX3JvdGF0aW9uX2NyYy5jDQo+ICsr KyBiL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYw0KPiBAQCAtMzMsNyArMzMsNiBAQCB0eXBlZGVm IHN0cnVjdCB7DQo+ICAJc3RydWN0IGlndF9mYiBmYjsNCj4gIAlzdHJ1Y3QgaWd0X2ZiIGZiX3Jl ZmVyZW5jZTsNCj4gIAlzdHJ1Y3QgaWd0X2ZiIGZiX3Vucm90YXRlZDsNCj4gLQlzdHJ1Y3QgaWd0 X2ZiIGZiX21vZGVzZXQ7DQo+ICAJc3RydWN0IGlndF9mYiBmYl9mbGlwOw0KPiAgCWlndF9jcmNf dCByZWZfY3JjOw0KPiAgCWlndF9jcmNfdCBmbGlwX2NyYzsNCj4gQEAgLTEyMiw2MSArMTIxLDQx IEBAIHBhaW50X3NxdWFyZXMoZGF0YV90ICpkYXRhLCBpZ3Rfcm90YXRpb25fdCByb3RhdGlvbiwN Cj4gIAlpZ3RfcHV0X2NhaXJvX2N0eChkYXRhLT5nZnhfZmQsIGZiLCBjcik7ICB9DQo+IA0KPiAt c3RhdGljIHZvaWQgcHJlcGFyZV9jcnRjKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRw dXQsIGVudW0gcGlwZSBwaXBlLA0KPiAtCQkJIGlndF9wbGFuZV90ICpwbGFuZSwgZW51bSBpZ3Rf Y29tbWl0X3N0eWxlIGNvbW1pdCkNCj4gK3N0YXRpYyB2b2lkIHJlbW92ZV9mYnMoZGF0YV90ICpk YXRhKQ0KPiAgew0KPiAtCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsNCj4gLQl1bnNpZ25lZCBpbnQg dywgaDsNCj4gLQl1aW50NjRfdCB0aWxpbmcgPSBkYXRhLT5vdmVycmlkZV90aWxpbmcgPzoNCj4g TE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORTsNCj4gLQl1aW50MzJfdCBwaXhlbF9mb3JtYXQgPSBk YXRhLT5vdmVycmlkZV9mbXQgPzoNCj4gRFJNX0ZPUk1BVF9YUkdCODg4ODsNCj4gLQlpZ3RfZGlz cGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7DQo+IC0JaWd0X3BsYW5lX3QgKnByaW1h cnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwNCj4gRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSk7DQo+ICsJaWd0X3JlbW92ZV9mYihkYXRhLT5nZnhfZmQsICZkYXRhLT5mYik7DQo+ ICsJaWd0X3JlbW92ZV9mYihkYXRhLT5nZnhfZmQsICZkYXRhLT5mYl9yZWZlcmVuY2UpOw0KPiAr CWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+ZmJfdW5yb3RhdGVkKTsNCj4gKwlp Z3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmZiX2ZsaXApOyB9DQo+IA0KPiAtCWln dF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsNCj4gLQlpZ3RfcGxhbmVfc2V0X3JvdGF0 aW9uKHBsYW5lLCBJR1RfUk9UQVRJT05fMCk7DQo+ICtzdGF0aWMgdm9pZCBjbGVhbnVwX2NydGMo ZGF0YV90ICpkYXRhKQ0KPiArew0KPiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ ZGlzcGxheTsNCj4gDQo+IC0JLyogY3JlYXRlIHRoZSBwaXBlX2NyYyBvYmplY3QgZm9yIHRoaXMg cGlwZSAqLw0KPiAgCWlndF9waXBlX2NyY19mcmVlKGRhdGEtPnBpcGVfY3JjKTsNCj4gLQlkYXRh LT5waXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcoZGF0YS0+Z2Z4X2ZkLCBwaXBlLA0KPiBJTlRF TF9QSVBFX0NSQ19TT1VSQ0VfQVVUTyk7DQo+IC0NCj4gLQltb2RlID0gaWd0X291dHB1dF9nZXRf bW9kZShvdXRwdXQpOw0KPiArCWRhdGEtPnBpcGVfY3JjID0gTlVMTDsNCj4gDQo+IC0JdyA9IG1v ZGUtPmhkaXNwbGF5Ow0KPiAtCWggPSBtb2RlLT52ZGlzcGxheTsNCj4gKwlyZW1vdmVfZmJzKGRh dGEpOw0KPiANCj4gLQlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmdmeF9mZCwgdywgaCwgcGl4ZWxfZm9y bWF0LCB0aWxpbmcsICZkYXRhLQ0KPiA+ZmJfbW9kZXNldCk7DQo+ICsJaWd0X2Rpc3BsYXlfcmVz ZXQoZGlzcGxheSk7DQo+ICt9DQo+IA0KPiAtCS8qDQo+IC0JICogV2l0aCBpZ3RfZGlzcGxheV9j b21taXQyIGFuZCBDT01NSVRfVU5JVkVSU0FMLCB3ZSBjYWxsIGp1c3QgdGhlDQo+IC0JICogc2V0 cGxhbmUgd2l0aG91dCBhIG1vZGVzZXQuIFNvLCB0byBiZSBhYmxlIHRvIGNhbGwNCj4gLQkgKiBp Z3RfZGlzcGxheV9jb21taXQgYW5kIHVsdGltYXRlbHkgc2V0Y3J0YyB0byBkbyB0aGUgZmlyc3Qg bW9kZXNldCwNCj4gLQkgKiB3ZSBjcmVhdGUgYW4gZmIgY292ZXJpbmcgdGhlIGNydGMgYW5kIGNh bGwgY29tbWl0DQo+IC0JICoNCj4gLQkgKiBJdCdzIGFsc28gYSBnb29kIGlkZWEgdG8gc2V0IGEg cHJpbWFyeSBmYiBvbiB0aGUgcHJpbWFyeSBwbGFuZQ0KPiAtCSAqIHJlZ2FyZGxlc3MsIHRvIGZv cmNlIGEgdW5kZXJydW4gd2hlbiB3YXRlcm1hcmtzIGFyZSBhbGxvY2F0ZWQNCj4gLQkgKiBpbmNv cnJlY3RseSBmb3Igb3RoZXIgcGxhbmVzLg0KPiAtCSAqLw0KPiAtCWlndF9wbGFuZV9zZXRfZmIo cHJpbWFyeSwgJmRhdGEtPmZiX21vZGVzZXQpOw0KPiArc3RhdGljIHZvaWQgcHJlcGFyZV9jcnRj KGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsIGVudW0gcGlwZSBwaXBlLA0KPiAr CQkJIGlndF9wbGFuZV90ICpwbGFuZSkNCj4gK3sNCj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5 ID0gJmRhdGEtPmRpc3BsYXk7DQo+IA0KPiAtCWlmIChjb21taXQgPCBDT01NSVRfQVRPTUlDKSB7 DQo+IC0JCWlndF9wbGFuZV9jbGVhcl9wcm9wX2NoYW5nZWQocHJpbWFyeSwNCj4gSUdUX1BMQU5F X1JPVEFUSU9OKTsNCj4gLQkJaWd0X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkpOw0KPiArCWNsZWFu dXBfY3J0YyhkYXRhKTsNCj4gDQo+IC0JCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQ RV9QUklNQVJZKQ0KPiAtCQkJaWd0X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocHJpbWFyeSwNCj4g SUdUX1BMQU5FX1JPVEFUSU9OKTsNCj4gLQl9DQo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShvdXRw dXQsIHBpcGUpOw0KPiArCWlndF9wbGFuZV9zZXRfcm90YXRpb24ocGxhbmUsIElHVF9ST1RBVElP Tl8wKTsNCj4gDQo+IC0JaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7DQo+ICsJLyogY3Jl YXRlIHRoZSBwaXBlX2NyYyBvYmplY3QgZm9yIHRoaXMgcGlwZSAqLw0KPiArCWlndF9waXBlX2Ny Y19mcmVlKGRhdGEtPnBpcGVfY3JjKTsNCj4gKwlkYXRhLT5waXBlX2NyYyA9IGlndF9waXBlX2Ny Y19uZXcoZGF0YS0+Z2Z4X2ZkLCBwaXBlLA0KPiArSU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8p Ow0KPiANCj4gLQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIGNvbW1pdCk7DQo+IC19DQo+ IC0NCj4gLXN0YXRpYyB2b2lkIHJlbW92ZV9mYnMoZGF0YV90ICpkYXRhKQ0KPiAtew0KPiAtCWln dF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+ZmIpOw0KPiAtCWlndF9yZW1vdmVfZmIo ZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+ZmJfcmVmZXJlbmNlKTsNCj4gLQlpZ3RfcmVtb3ZlX2ZiKGRh dGEtPmdmeF9mZCwgJmRhdGEtPmZiX3Vucm90YXRlZCk7DQo+IC0JaWd0X3JlbW92ZV9mYihkYXRh LT5nZnhfZmQsICZkYXRhLT5mYl9mbGlwKTsNCj4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3Bs YXksIENPTU1JVF9BVE9NSUMpOw0KPiAgfQ0KPiANCj4gIGVudW0gcmVjdGFuZ2xlX3R5cGUgew0K PiBAQCAtMjQ3LDI4ICsyMjYsMjQgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9mYnMoZGF0YV90ICpk YXRhLCBpZ3Rfb3V0cHV0X3QNCj4gKm91dHB1dCwNCj4gIAkvKg0KPiAgCSAqIENyZWF0ZSBhIHJl ZmVyZW5jZSBzb2Z0d2FyZSByb3RhdGVkIGZsaXAgZnJhbWVidWZmZXIuDQo+ICAJICovDQo+IC0J aWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkgfHwgZGlzcGxheS0+aXNf YXRvbWljKSB7DQo+IC0JCWlndF9jcmVhdGVfZmIoZGF0YS0+Z2Z4X2ZkLCByZWZfdywgcmVmX2gs IHBpeGVsX2Zvcm1hdCwgdGlsaW5nLA0KPiAtCQkJICAgICAgJmRhdGEtPmZiX2ZsaXApOw0KPiAt CQlwYWludF9zcXVhcmVzKGRhdGEsIGRhdGEtPnJvdGF0aW9uLCAmZGF0YS0+ZmJfZmxpcCwNCj4g LQkJCSAgICAgIGZsaXBfb3BhY2l0eSk7DQo+IC0JCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZk YXRhLT5mYl9mbGlwKTsNCj4gLQkJaWYgKHBsYW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX0NV UlNPUikNCj4gLQkJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24ocGxhbmUsIGRhdGEtPnBvc194LCBk YXRhLQ0KPiA+cG9zX3kpOw0KPiAtCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksDQo+IC0J CQkJICAgIGRpc3BsYXktPmlzX2F0b21pYyA/DQo+IC0JCQkJICAgIENPTU1JVF9BVE9NSUMgOiBD T01NSVRfVU5JVkVSU0FMKTsNCj4gLQkJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBp cGVfY3JjLCAmZGF0YS0+ZmxpcF9jcmMpOw0KPiAtDQo+IC0JCS8qDQo+IC0JCSAqIFByZXBhcmUg dGhlIG5vbi1yb3RhdGVkIGZsaXAgZmIuDQo+IC0JCSAqLw0KPiAtCQlpZ3RfcmVtb3ZlX2ZiKGRh dGEtPmdmeF9mZCwgJmRhdGEtPmZiX2ZsaXApOw0KPiAtCQlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmdm eF9mZCwgdywgaCwgcGl4ZWxfZm9ybWF0LCB0aWxpbmcsDQo+IC0JCQkgICAgICAmZGF0YS0+ZmJf ZmxpcCk7DQo+IC0JCXBhaW50X3NxdWFyZXMoZGF0YSwgSUdUX1JPVEFUSU9OXzAsICZkYXRhLT5m Yl9mbGlwLA0KPiAtCQkJICAgICAgZmxpcF9vcGFjaXR5KTsNCj4gLQl9DQo+ICsJaWd0X2NyZWF0 ZV9mYihkYXRhLT5nZnhfZmQsIHJlZl93LCByZWZfaCwgcGl4ZWxfZm9ybWF0LCB0aWxpbmcsDQo+ ICsJCSAgICAgICZkYXRhLT5mYl9mbGlwKTsNCj4gKwlwYWludF9zcXVhcmVzKGRhdGEsIGRhdGEt PnJvdGF0aW9uLCAmZGF0YS0+ZmJfZmxpcCwNCj4gKwkJICAgICAgZmxpcF9vcGFjaXR5KTsNCj4g KwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+ZmJfZmxpcCk7DQo+ICsJaWYgKHBsYW5l LT50eXBlICE9IERSTV9QTEFORV9UWVBFX0NVUlNPUikNCj4gKwkJaWd0X3BsYW5lX3NldF9wb3Np dGlvbihwbGFuZSwgZGF0YS0+cG9zX3gsIGRhdGEtPnBvc195KTsNCj4gKwlpZ3RfZGlzcGxheV9j b21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOw0KPiArCWlndF9waXBlX2NyY19jb2xsZWN0 X2NyYyhkYXRhLT5waXBlX2NyYywgJmRhdGEtPmZsaXBfY3JjKTsNCj4gKw0KPiArCS8qDQo+ICsJ ICAqIFByZXBhcmUgdGhlIG5vbi1yb3RhdGVkIGZsaXAgZmIuDQo+ICsJICAqLw0KPiArCWlndF9y ZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+ZmJfZmxpcCk7DQo+ICsJaWd0X2NyZWF0ZV9m YihkYXRhLT5nZnhfZmQsIHcsIGgsIHBpeGVsX2Zvcm1hdCwgdGlsaW5nLA0KPiArCQkgICAgICAm ZGF0YS0+ZmJfZmxpcCk7DQo+ICsJcGFpbnRfc3F1YXJlcyhkYXRhLCBJR1RfUk9UQVRJT05fMCwg JmRhdGEtPmZiX2ZsaXAsDQo+ICsJCSAgICAgIGZsaXBfb3BhY2l0eSk7DQo+IA0KPiAgCS8qDQo+ ICAJICogQ3JlYXRlIGEgcmVmZXJlbmNlIENSQyBmb3IgYSBzb2Z0d2FyZS1yb3RhdGVkIGZiLg0K PiBAQCAtMjgwLDcgKzI1NSw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfZmJzKGRhdGFfdCAqZGF0 YSwgaWd0X291dHB1dF90DQo+ICpvdXRwdXQsDQo+ICAJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwg JmRhdGEtPmZiX3JlZmVyZW5jZSk7DQo+ICAJaWYgKHBsYW5lLT50eXBlICE9IERSTV9QTEFORV9U WVBFX0NVUlNPUikNCj4gIAkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihwbGFuZSwgZGF0YS0+cG9z X3gsIGRhdGEtPnBvc195KTsNCj4gLQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIGRpc3Bs YXktPmlzX2F0b21pYyA/IENPTU1JVF9BVE9NSUMgOg0KPiBDT01NSVRfVU5JVkVSU0FMKTsNCj4g KwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOw0KPiANCj4gIAlp Z3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZkYXRhLT5yZWZfY3JjKTsN Cj4gDQo+IEBAIC0yOTMsNyArMjY4LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9mYnMoZGF0YV90 ICpkYXRhLCBpZ3Rfb3V0cHV0X3QNCj4gKm91dHB1dCwNCj4gIAlpZ3RfcGxhbmVfc2V0X3JvdGF0 aW9uKHBsYW5lLCBJR1RfUk9UQVRJT05fMCk7DQo+ICAJaWYgKHBsYW5lLT50eXBlICE9IERSTV9Q TEFORV9UWVBFX0NVUlNPUikNCj4gIAkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihwbGFuZSwgZGF0 YS0+cG9zX3gsIGRhdGEtPnBvc195KTsNCj4gLQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXks IGRpc3BsYXktPmlzX2F0b21pYyA/IENPTU1JVF9BVE9NSUMgOg0KPiBDT01NSVRfVU5JVkVSU0FM KTsNCj4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOw0KPiAN Cj4gIAkvKg0KPiAgCSAqIFByZXBhcmUgdGhlIHBsYW5lIHdpdGggYW4gbm9uLXJvdGF0ZWQgZmIg bGV0IHRoZSBodyByb3RhdGUgaXQuDQo+IEBAIC0zMDYsMzUgKzI4MSw2IEBAIHN0YXRpYyB2b2lk IHByZXBhcmVfZmJzKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90DQo+ICpvdXRwdXQsDQo+ICAJ CWlndF9wbGFuZV9zZXRfcG9zaXRpb24ocGxhbmUsIGRhdGEtPnBvc194LCBkYXRhLT5wb3NfeSk7 ICB9DQo+IA0KPiAtc3RhdGljIHZvaWQgY2xlYW51cF9jcnRjKGRhdGFfdCAqZGF0YSwgaWd0X291 dHB1dF90ICpvdXRwdXQsIGlndF9wbGFuZV90DQo+ICpwbGFuZSkgLXsNCj4gLQlpZ3RfZGlzcGxh eV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7DQo+IC0NCj4gLQlpZ3RfcGlwZV9jcmNfZnJl ZShkYXRhLT5waXBlX2NyYyk7DQo+IC0JZGF0YS0+cGlwZV9jcmMgPSBOVUxMOw0KPiAtDQo+IC0J cmVtb3ZlX2ZicyhkYXRhKTsNCj4gLQ0KPiAtCWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAm ZGF0YS0+ZmJfbW9kZXNldCk7DQo+IC0NCj4gLQkvKiBYWFg6IHNlZSB0aGUgbm90ZSBpbiBwcmVw YXJlX2NydGMoKSAqLw0KPiAtCWlmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklN QVJZKSB7DQo+IC0JCWlndF9wbGFuZV90ICpwcmltYXJ5Ow0KPiAtDQo+IC0JCXByaW1hcnkgPSBp Z3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwNCj4gRFJNX1BMQU5FX1RZUEVfUFJJTUFS WSk7DQo+IC0JCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgTlVMTCk7DQo+IC0JfQ0KPiAtDQo+ IC0JaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7DQo+IC0JaWd0X3BsYW5lX3NldF9yb3Rh dGlvbihwbGFuZSwgSUdUX1JPVEFUSU9OXzApOw0KPiAtDQo+IC0JaWd0X2Rpc3BsYXlfY29tbWl0 MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsNCj4gLQ0KPiAtCWlndF9vdXRwdXRfc2V0X3Bp cGUob3V0cHV0LCBQSVBFX0FOWSk7DQo+IC0NCj4gLQlpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxh eSk7DQo+IC19DQo+IC0NCj4gIHN0YXRpYyB2b2lkIHdhaXRfZm9yX3BhZ2VmbGlwKGludCBmZCkN Cj4gIHsNCj4gIAlkcm1FdmVudENvbnRleHQgZXZjdHggPSB7IC52ZXJzaW9uID0gMiB9OyBAQCAt MzU5LDE4ICszMDUsMTEgQEANCj4gc3RhdGljIHZvaWQgdGVzdF9wbGFuZV9yb3RhdGlvbihkYXRh X3QgKmRhdGEsIGludCBwbGFuZV90eXBlLCBib29sDQo+IHRlc3RfYmFkX2Zvcm0NCj4gIAllbnVt IHBpcGUgcGlwZTsNCj4gIAlpbnQgdmFsaWRfdGVzdHMgPSAwOw0KPiAgCWlndF9jcmNfdCBjcmNf b3V0cHV0Ow0KPiAtCWVudW0gaWd0X2NvbW1pdF9zdHlsZSBjb21taXQgPSBDT01NSVRfTEVHQUNZ Ow0KPiAgCWludCByZXQ7DQo+IA0KPiAtCWlmIChwbGFuZV90eXBlID09IERSTV9QTEFORV9UWVBF X1BSSU1BUlkgfHwgcGxhbmVfdHlwZSA9PQ0KPiBEUk1fUExBTkVfVFlQRV9DVVJTT1IpDQo+IC0J CWNvbW1pdCA9IENPTU1JVF9VTklWRVJTQUw7DQo+IC0NCj4gIAlpZiAocGxhbmVfdHlwZSA9PSBE Uk1fUExBTkVfVFlQRV9DVVJTT1IpDQo+ICAJCWlndF9yZXF1aXJlKGRpc3BsYXktPmhhc19jdXJz b3JfcGxhbmUpOw0KPiANCj4gLQlpZiAoZGF0YS0+ZGlzcGxheS5pc19hdG9taWMpDQo+IC0JCWNv bW1pdCA9IENPTU1JVF9BVE9NSUM7DQo+IC0NCj4gIAlmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRf b3V0cHV0KGRpc3BsYXksIHBpcGUsIG91dHB1dCkgew0KPiAgCQlpZ3RfcGxhbmVfdCAqcGxhbmU7 DQo+ICAJCWludCBpOw0KPiBAQCAtMzgzLDcgKzMyMiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGxh bmVfcm90YXRpb24oZGF0YV90ICpkYXRhLCBpbnQNCj4gcGxhbmVfdHlwZSwgYm9vbCB0ZXN0X2Jh ZF9mb3JtDQo+ICAJCXBsYW5lID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsIHBs YW5lX3R5cGUpOw0KPiAgCQlpZ3RfcmVxdWlyZShpZ3RfcGxhbmVfaGFzX3Byb3AocGxhbmUsDQo+ IElHVF9QTEFORV9ST1RBVElPTikpOw0KPiANCj4gLQkJcHJlcGFyZV9jcnRjKGRhdGEsIG91dHB1 dCwgcGlwZSwgcGxhbmUsIGNvbW1pdCk7DQo+ICsJCXByZXBhcmVfY3J0YyhkYXRhLCBvdXRwdXQs IHBpcGUsIHBsYW5lKTsNCj4gDQo+ICAJCWZvciAoaSA9IDA7IGkgPCBudW1fcmVjdGFuZ2xlX3R5 cGVzOyBpKyspIHsNCj4gIAkJCS8qIFVuc3VwcG9ydGVkIG9uIGk5MTUgKi8NCj4gQEAgLTQwMyw3 ICszNDIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BsYW5lX3JvdGF0aW9uKGRhdGFfdCAqZGF0YSwg aW50DQo+IHBsYW5lX3R5cGUsIGJvb2wgdGVzdF9iYWRfZm9ybQ0KPiAgCQkJaWYgKGRhdGEtPnJv dGF0aW9uICYgKElHVF9ST1RBVElPTl85MCB8DQo+IElHVF9ST1RBVElPTl8yNzApKQ0KPiAgCQkJ CWlndF9wbGFuZV9zZXRfc2l6ZShwbGFuZSwgZGF0YS0+ZmIuaGVpZ2h0LA0KPiBkYXRhLT5mYi53 aWR0aCk7DQo+IA0KPiAtCQkJcmV0ID0gaWd0X2Rpc3BsYXlfdHJ5X2NvbW1pdDIoZGlzcGxheSwg Y29tbWl0KTsNCj4gKwkJCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXQyKGRpc3BsYXksDQo+ IENPTU1JVF9BVE9NSUMpOw0KPiAgCQkJaWYgKHRlc3RfYmFkX2Zvcm1hdCkgew0KPiAgCQkJCWln dF9hc3NlcnRfZXEocmV0LCAtRUlOVkFMKTsNCj4gIAkJCQljb250aW51ZTsNCj4gQEAgLTQ0NCw0 MSArMzgzLDI4IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGxhbmVfcm90YXRpb24oZGF0YV90ICpkYXRh LCBpbnQNCj4gcGxhbmVfdHlwZSwgYm9vbCB0ZXN0X2JhZF9mb3JtDQo+ICAJCX0NCj4gDQo+ICAJ CXZhbGlkX3Rlc3RzKys7DQo+IC0JCWNsZWFudXBfY3J0YyhkYXRhLCBvdXRwdXQsIHBsYW5lKTsN Cj4gIAl9DQo+ICAJaWd0X3JlcXVpcmVfZih2YWxpZF90ZXN0cywgIm5vIHZhbGlkIGNydGMvY29u bmVjdG9yIGNvbWJpbmF0aW9ucw0KPiBmb3VuZFxuIik7ICB9DQo+IA0KPiAgc3RhdGljIHZvaWQg dGVzdF9wbGFuZV9yb3RhdGlvbl9leGhhdXN0X2ZlbmNlcyhkYXRhX3QgKmRhdGEsDQo+ICAJCQkJ CSAgICAgICBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwNCj4gLQkJCQkJICAgICAgIGludCBwbGFuZV90 eXBlKQ0KPiArCQkJCQkgICAgICAgaWd0X3BsYW5lX3QgKnBsYW5lKQ0KPiAgew0KPiAgCWlndF9k aXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsNCj4gIAl1aW50NjRfdCB0aWxpbmcg PSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDsNCj4gIAl1aW50MzJfdCBmb3JtYXQgPSBE Uk1fRk9STUFUX1hSR0I4ODg4Ow0KPiAgCWludCBicHAgPSBpZ3RfZHJtX2Zvcm1hdF90b19icHAo Zm9ybWF0KTsNCj4gLQllbnVtIGlndF9jb21taXRfc3R5bGUgY29tbWl0ID0gQ09NTUlUX0xFR0FD WTsNCj4gIAlpbnQgZmQgPSBkYXRhLT5nZnhfZmQ7DQo+IC0JaWd0X3BsYW5lX3QgKnBsYW5lOw0K PiAgCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsNCj4gLQlkYXRhX3QgZGF0YTJbTUFYX0ZFTkNFUysx XSA9IHt9Ow0KPiArCXN0cnVjdCBpZ3RfZmIgZmJbTUFYX0ZFTkNFUysxXSA9IHt9Ow0KPiAgCXVu c2lnbmVkIGludCBzdHJpZGUsIHNpemUsIHcsIGg7DQo+ICAJdWludDMyX3QgZ2VtX2hhbmRsZTsN Cj4gIAl1aW50NjRfdCB0b3RhbF9hcGVydHVyZV9zaXplLCB0b3RhbF9mYnNfc2l6ZTsNCj4gIAlp bnQgaSwgcmV0Ow0KPiANCj4gLQlwbGFuZSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0 cHV0LCBwbGFuZV90eXBlKTsNCj4gIAlpZ3RfcmVxdWlyZShpZ3RfcGxhbmVfaGFzX3Byb3AocGxh bmUsIElHVF9QTEFORV9ST1RBVElPTikpOw0KPiANCj4gLQlpZiAocGxhbmVfdHlwZSA9PSBEUk1f UExBTkVfVFlQRV9QUklNQVJZIHx8IHBsYW5lX3R5cGUgPT0NCj4gRFJNX1BMQU5FX1RZUEVfQ1VS U09SKQ0KPiAtCQljb21taXQgPSBDT01NSVRfVU5JVkVSU0FMOw0KPiAtDQo+IC0JaWYgKHBsYW5l X3R5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKQ0KPiAtCQlpZ3RfcmVxdWlyZShkaXNwbGF5 LT5oYXNfY3Vyc29yX3BsYW5lKTsNCj4gLQ0KPiAtCWlmIChkYXRhLT5kaXNwbGF5LmlzX2F0b21p YykNCj4gLQkJY29tbWl0ID0gQ09NTUlUX0FUT01JQzsNCj4gLQ0KPiAgCW1vZGUgPSBpZ3Rfb3V0 cHV0X2dldF9tb2RlKG91dHB1dCk7DQo+ICAJdyA9IG1vZGUtPmhkaXNwbGF5Ow0KPiAgCWggPSBt b2RlLT52ZGlzcGxheTsNCj4gQEAgLTQ5Nyw3ICs0MjMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3Bs YW5lX3JvdGF0aW9uX2V4aGF1c3RfZmVuY2VzKGRhdGFfdA0KPiAqZGF0YSwNCj4gIAlpZ3RfcmVx dWlyZSh0b3RhbF9mYnNfc2l6ZSA8IHRvdGFsX2FwZXJ0dXJlX3NpemUgKiAwLjkpOw0KPiANCj4g IAlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBOVUxMKTsNCj4gLQlpZ3RfZGlzcGxheV9jb21taXQo ZGlzcGxheSk7DQo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlD KTsNCj4gDQo+ICAJZm9yIChpID0gMDsgaSA8IE1BWF9GRU5DRVMgKyAxOyBpKyspIHsNCj4gIAkJ Z2VtX2hhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIHNpemUpOw0KPiBAQCAtNTEwLDIwICs0MzYsMjAg QEAgc3RhdGljIHZvaWQNCj4gdGVzdF9wbGFuZV9yb3RhdGlvbl9leGhhdXN0X2ZlbmNlcyhkYXRh X3QgKmRhdGEsDQo+ICAJCXJldCA9IChfX2ttc19hZGRmYihmZCwgZ2VtX2hhbmRsZSwgdywgaCwg c3RyaWRlLA0KPiAgCQkgICAgICAgZm9ybWF0LCB0aWxpbmcsIE5VTEwsDQo+ICAJCSAgICAgICBM T0NBTF9EUk1fTU9ERV9GQl9NT0RJRklFUlMsDQo+IC0JCSAgICAgICAmZGF0YTJbaV0uZmIuZmJf aWQpKTsNCj4gKwkJICAgICAgICZmYltpXS5mYl9pZCkpOw0KPiAgCQlpZiAocmV0KSB7DQo+ICAJ CQlpZ3Rfd2FybigiZmFpbGVkIHRvIGNyZWF0ZSBmcmFtZWJ1ZmZlclxuIik7DQo+ICAJCQlnb3Rv IGVycl9hbGxvYzsNCj4gIAkJfQ0KPiANCj4gLQkJZGF0YTJbaV0uZmIud2lkdGggPSB3Ow0KPiAt CQlkYXRhMltpXS5mYi5oZWlnaHQgPSBoOw0KPiAtCQlkYXRhMltpXS5mYi5nZW1faGFuZGxlID0g Z2VtX2hhbmRsZTsNCj4gKwkJZmJbaV0ud2lkdGggPSB3Ow0KPiArCQlmYltpXS5oZWlnaHQgPSBo Ow0KPiArCQlmYltpXS5nZW1faGFuZGxlID0gZ2VtX2hhbmRsZTsNCj4gDQo+IC0JCWlndF9wbGFu ZV9zZXRfZmIocGxhbmUsICZkYXRhMltpXS5mYik7DQo+ICsJCWlndF9wbGFuZV9zZXRfZmIocGxh bmUsICZmYltpXSk7DQo+ICAJCWlndF9wbGFuZV9zZXRfcm90YXRpb24ocGxhbmUsIElHVF9ST1RB VElPTl8wKTsNCj4gDQo+IC0JCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXQyKGRpc3BsYXks IGNvbW1pdCk7DQo+ICsJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01J Qyk7DQo+ICAJCWlmIChyZXQpIHsNCj4gIAkJCWlndF93YXJuKCJmYWlsZWQgdG8gY29tbWl0IHVu cm90YXRlZCBmYlxuIik7DQo+ICAJCQlnb3RvIGVycl9jb21taXQ7DQo+IEBAIC01MzIsNyArNDU4 LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9wbGFuZV9yb3RhdGlvbl9leGhhdXN0X2ZlbmNlcyhkYXRh X3QNCj4gKmRhdGEsDQo+ICAJCWlndF9wbGFuZV9zZXRfcm90YXRpb24ocGxhbmUsIElHVF9ST1RB VElPTl85MCk7DQo+ICAJCWlndF9wbGFuZV9zZXRfc2l6ZShwbGFuZSwgaCwgdyk7DQo+IA0KPiAt CQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIGNvbW1pdCk7DQo+ICsJCWlndF9kaXNwbGF5 X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7DQo+ICAJCWlmIChyZXQpIHsNCj4gIAkJ CWlndF93YXJuKCJmYWlsZWQgdG8gY29tbWl0IGhhcmR3YXJlIHJvdGF0ZWQgZmI6ICVpXG4iLA0K PiByZXQpOw0KPiAgCQkJZ290byBlcnJfY29tbWl0Ow0KPiBAQCAtNTQ1LDE5ICs0NzEsOSBAQCBl cnJfYWxsb2M6DQo+IA0KPiAgCWktLTsNCj4gIGVycl9jb21taXQ6DQo+IC0JaWd0X3BsYW5lX3Nl dF9mYihwbGFuZSwgTlVMTCk7DQo+IC0JaWd0X3BsYW5lX3NldF9yb3RhdGlvbihwbGFuZSwgSUdU X1JPVEFUSU9OXzApOw0KPiAtDQo+IC0JaWYgKGNvbW1pdCA8IENPTU1JVF9BVE9NSUMpDQo+IC0J CWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgY29tbWl0KTsNCj4gLQ0KPiAtCWlndF9vdXRw dXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX05PTkUpOw0KPiAtCWlndF9kaXNwbGF5X2NvbW1pdDIo ZGlzcGxheSwgZGlzcGxheS0+aXNfYXRvbWljID8gQ09NTUlUX0FUT01JQyA6DQo+IENPTU1JVF9M RUdBQ1kpOw0KPiAtDQo+ICAJZm9yICg7IGkgPj0gMDsgaS0tKQ0KPiAtCQlpZ3RfcmVtb3ZlX2Zi KGZkLCAmZGF0YTJbaV0uZmIpOw0KPiArCQlpZ3RfcmVtb3ZlX2ZiKGZkLCAmZmJbaV0pOw0KPiAN Cj4gLQlrbXN0ZXN0X3Jlc3RvcmVfdnRfbW9kZSgpOw0KPiAgCWlndF9hc3NlcnRfZXEocmV0LCAw KTsNCj4gIH0NCj4gDQo+IEBAIC03MTQsOSArNjMwLDEwIEBAIGlndF9tYWluDQo+ICAJCWlndF9y ZXF1aXJlKGdlbiA+PSA5KTsNCj4gDQo+ICAJCWZvcl9lYWNoX3BpcGVfd2l0aF92YWxpZF9vdXRw dXQoJmRhdGEuZGlzcGxheSwgcGlwZSwgb3V0cHV0KSB7DQo+IC0JCQlpZ3Rfb3V0cHV0X3NldF9w aXBlKG91dHB1dCwgcGlwZSk7DQo+ICsJCQlpZ3RfcGxhbmVfdCAqcHJpbWFyeSA9DQo+ICZkYXRh LmRpc3BsYXkucGlwZXNbcGlwZV0ucGxhbmVzWzBdOw0KPiArCQkJcHJlcGFyZV9jcnRjKCZkYXRh LCBvdXRwdXQsIHBpcGUsIHByaW1hcnkpOw0KPiANCj4gLQkJCXRlc3RfcGxhbmVfcm90YXRpb25f ZXhoYXVzdF9mZW5jZXMoJmRhdGEsIG91dHB1dCwNCj4gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7 DQo+ICsJCQl0ZXN0X3BsYW5lX3JvdGF0aW9uX2V4aGF1c3RfZmVuY2VzKCZkYXRhLCBvdXRwdXQs DQo+IHByaW1hcnkpOw0KPiANCj4gIAkJCXZhbGlkX3Rlc3RzKys7DQo+ICAJCQlicmVhazsNCj4g LS0NCj4gMi4xNi4xDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXw0KPiBpZ3QtZGV2IG1haWxpbmcgbGlzdA0KPiBpZ3QtZGV2QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZw0KPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2lndC1kZXYNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=