From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zanoni, Paulo R" Subject: Re: [PATCH v4 7/8] drm/i915: Do not compute watermarks on a noop. Date: Thu, 18 Feb 2016 20:51:20 +0000 Message-ID: <1455828677.2576.100.camel@intel.com> References: <1455108583-29227-1-git-send-email-maarten.lankhorst@linux.intel.com> <1455108583-29227-8-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id AA5E26ED70 for ; Thu, 18 Feb 2016 20:51:22 +0000 (UTC) In-Reply-To: <1455108583-29227-8-git-send-email-maarten.lankhorst@linux.intel.com> Content-Language: en-US Content-ID: <347CCDDFDB5EE44F863CDD4CF7C65D3C@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "intel-gfx@lists.freedesktop.org" , "maarten.lankhorst@linux.intel.com" List-Id: intel-gfx@lists.freedesktop.org RW0gUXVhLCAyMDE2LTAyLTEwIMOgcyAxMzo0OSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3QgZXNj cmV2ZXU6DQo+IE5vIGF0b21pYyBzdGF0ZSBzaG91bGQgYmUgaW5jbHVkZWQgYWZ0ZXIgYWxsIHZh bGlkYXRpb24gd2hlbiBub3RoaW5nDQo+IGhhcw0KPiBjaGFuZ2VkLiBEdXJpbmcgbW9kZXNldCBh bGwgYWN0aXZlIHBsYW5lcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBzdGF0ZSwNCj4gd2hpbGUgZGlz YWJsZWQgcGxhbmVzIHdvbid0IGNoYW5nZSB0aGVpciBzdGF0ZS4NCg0KQXMgc29tZW9uZSB3aG8g aXMgYWxzbyBub3Qgc3VwZXIgZmFtaWxpYXIgd2l0aCB0aGUgbmV3IHdhdGVybWFya3MgY29kZSwN CkkgcmVhbGx5IHJlYWxseSB3aXNoIEkgaGFkIGEgbW9yZSBkZXRhaWxlZCBjb21taXQgbWVzc2Fn ZSB0byBhbGxvdyBtZQ0KdG8gdW5kZXJzdGFuZCB5b3VyIHRyYWluIG9mIHRob3VnaHQuIEknbGwg YXNrIHNvbWUgcXVlc3Rpb25zIGJlbG93IHRvDQp2YWxpZGF0ZSBteSB1bmRlcnN0YW5kaW5nLg0K DQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9y c3RAbGludXguaW50ZWwuY29tPg0KPiBDYzogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGlu dGVsLmNvbT4NCj4gLS0tDQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j IHzCoMKgMyArLQ0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5owqDCoMKgwqDC oHwgMTMgKysrKysrKysNCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jwqDCoMKg wqDCoMKgfCA2MSArKysrKysrKysrKysrKysrKysrKystLS0tLQ0KPiAtLS0tLS0tLS0tDQo+IMKg MyBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkNCj4gDQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMNCj4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMNCj4gaW5kZXggMDBjYjI2MWM2Nzg3 Li42YmIxZjVkYmM3YTAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMN Cj4gQEAgLTExOTEwLDcgKzExOTEwLDggQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2F0b21pY19j aGVjayhzdHJ1Y3QNCj4gZHJtX2NydGMgKmNydGMsDQo+IMKgCX0NCj4gwqANCj4gwqAJcmV0ID0g MDsNCj4gLQlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9waXBlX3dtKSB7DQo+ICsJaWYg KGRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfcGlwZV93bSAmJg0KPiArCcKgwqDCoMKgKG1vZGVf Y2hhbmdlZCB8fCBwaXBlX2NvbmZpZy0+dXBkYXRlX3BpcGUgfHwgY3J0Y19zdGF0ZS0NCj4gPnBs YW5lc19jaGFuZ2VkKSkgew0KPiDCoAkJcmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9w aXBlX3dtKGludGVsX2NydGMsDQo+IHN0YXRlKTsNCj4gwqAJCWlmIChyZXQpDQo+IMKgCQkJcmV0 dXJuIHJldDsNCg0KQ2FuJ3QgdGhpcyBjaHVuayBiZSBvbiBpdHMgb3duIHNlcGFyYXRlIGNvbW1p dD8gSSdtIG5vdCBzdXJlIHdoeSB0aGUNCnJlc3Qgb2YgdGhlIGNvbW1pdCBpcyByZWxhdGVkIHRv IHRoaXMgY2hhbmdlLg0KDQpJdCBzZWVtcyB0aGUgcmVzdCBvZiB0aGUgY29tbWl0IGlzIGFpbWVk IHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgcGxhbmVzDQp3ZSBoYXZlIHRvIGxvY2ssIG5vdCBhYm91 dCBub3QgY29tcHV0aW5nIFdNcyBpZiBub3RoaW5nIGluIHRoZSBwaXBlIGhhcw0KY2hhbmdlZC4N Cg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaA0KPiBpbmRleCA4ZWZmYjllY2UyMWUuLjE0 NDU5N2FjNzRlMyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4gQEAgLTE1ODMs NiArMTU4MywxOSBAQCBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RydWN0DQo+IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlLA0KPiDCoA0KPiDCoAlyZXR1cm4gdG9faW50ZWxfY3J0Y19zdGF0 ZShjcnRjX3N0YXRlKTsNCj4gwqB9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICoNCj4gK2ludGVsX2F0b21pY19nZXRfZXhpc3RpbmdfcGxhbmVfc3RhdGUo c3RydWN0IGRybV9hdG9taWNfc3RhdGUNCj4gKnN0YXRlLA0KPiArCQkJCcKgwqDCoMKgwqDCoHN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpDQo+ICt7DQo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGU7DQo+ICsNCj4gKwlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4 aXN0aW5nX3BsYW5lX3N0YXRlKHN0YXRlLA0KPiAmcGxhbmUtPmJhc2UpOw0KPiArDQo+ICsJcmV0 dXJuIHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKTsNCj4gK30NCj4gKw0KPiArDQoN ClR3byBuZXdsaW5lcyBhYm92ZS4NCg0KSXQgc2VlbXMgeW91J2xsIGJlIGFibGUgdG8gc2ltcGxp ZnkgYSBsb3Qgb2Ygc3R1ZmYgd2l0aCB0aGlzIG5ldw0KZnVuY3Rpb24uIEknbSBsb29raW5nIGZv cndhcmQgdG8gcmV2aWV3IHRoYXQgcGF0Y2ggOikNCg0KDQo+IMKgaW50IGludGVsX2F0b21pY19z ZXR1cF9zY2FsZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsDQo+IMKgCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjLA0KPiDCoAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jDQo+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYw0KPiBpbmRleCAzNzllYWJlMDkzY2IuLjhm YjhjNjg5MWFlNiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u Yw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jDQo+IEBAIC0yMDEwLDEx ICsyMDEwLDE4IEBAIHN0YXRpYyB2b2lkIGlsa19jb21wdXRlX3dtX2xldmVsKGNvbnN0IHN0cnVj dA0KPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gwqAJCWN1cl9sYXRlbmN5ICo9IDU7 DQo+IMKgCX0NCj4gwqANCj4gLQlyZXN1bHQtPnByaV92YWwgPSBpbGtfY29tcHV0ZV9wcmlfd20o Y3N0YXRlLCBwcmlzdGF0ZSwNCj4gLQkJCQkJwqDCoMKgwqDCoHByaV9sYXRlbmN5LCBsZXZlbCk7 DQo+IC0JcmVzdWx0LT5zcHJfdmFsID0gaWxrX2NvbXB1dGVfc3ByX3dtKGNzdGF0ZSwgc3Byc3Rh dGUsDQo+IHNwcl9sYXRlbmN5KTsNCj4gLQlyZXN1bHQtPmN1cl92YWwgPSBpbGtfY29tcHV0ZV9j dXJfd20oY3N0YXRlLCBjdXJzdGF0ZSwNCj4gY3VyX2xhdGVuY3kpOw0KPiAtCXJlc3VsdC0+ZmJj X3ZhbCA9IGlsa19jb21wdXRlX2ZiY193bShjc3RhdGUsIHByaXN0YXRlLA0KPiByZXN1bHQtPnBy aV92YWwpOw0KPiArCWlmIChwcmlzdGF0ZSkgew0KPiArCQlyZXN1bHQtPnByaV92YWwgPSBpbGtf Y29tcHV0ZV9wcmlfd20oY3N0YXRlLA0KPiBwcmlzdGF0ZSwNCj4gKwkJCQkJCcKgwqDCoMKgwqBw cmlfbGF0ZW5jeSwNCj4gbGV2ZWwpOw0KPiArCQlyZXN1bHQtPmZiY192YWwgPSBpbGtfY29tcHV0 ZV9mYmNfd20oY3N0YXRlLA0KPiBwcmlzdGF0ZSwgcmVzdWx0LT5wcmlfdmFsKTsNCj4gKwl9DQo+ ICsNCj4gKwlpZiAoc3Byc3RhdGUpDQo+ICsJCXJlc3VsdC0+c3ByX3ZhbCA9IGlsa19jb21wdXRl X3Nwcl93bShjc3RhdGUsDQo+IHNwcnN0YXRlLCBzcHJfbGF0ZW5jeSk7DQo+ICsNCj4gKwlpZiAo Y3Vyc3RhdGUpDQo+ICsJCXJlc3VsdC0+Y3VyX3ZhbCA9IGlsa19jb21wdXRlX2N1cl93bShjc3Rh dGUsDQo+IGN1cnN0YXRlLCBjdXJfbGF0ZW5jeSk7DQo+ICsNCj4gwqAJcmVzdWx0LT5lbmFibGUg PSB0cnVlOw0KPiDCoH0NCj4gwqANCj4gQEAgLTIyODcsNyArMjI5NCw2IEBAIHN0YXRpYyBpbnQg aWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QNCj4gaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywNCj4g wqAJY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsNCj4gwqAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9IE5VTEw7DQo+IMKg CXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmU7DQo+IC0Jc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqcHM7DQo+IMKgCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHJpc3RhdGUgPSBOVUxM Ow0KPiDCoAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnNwcnN0YXRlID0gTlVMTDsNCj4gwqAJ c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpjdXJzdGF0ZSA9IE5VTEw7DQo+IEBAIC0yMzA2LDMw ICsyMzEyLDM3IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QNCj4gaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YywNCj4gwqAJbWVtc2V0KHBpcGVfd20sIDAsIHNpemVvZigqcGlw ZV93bSkpOw0KPiDCoA0KPiDCoAlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50 ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsNCj4gLQkJcHMgPSBkcm1fYXRvbWljX2dldF9wbGFuZV9z dGF0ZShzdGF0ZSwNCj4gLQkJCQkJCSZpbnRlbF9wbGFuZS0+YmFzZSk7DQo+IC0JCWlmIChJU19F UlIocHMpKQ0KPiAtCQkJcmV0dXJuIFBUUl9FUlIocHMpOw0KPiArCQlzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBzOw0KPiArDQo+ICsJCXBzID0gaW50ZWxfYXRvbWljX2dldF9leGlzdGluZ19w bGFuZV9zdGF0ZShzdGF0ZSwNCj4gKwkJCQkJCQnCoMKgwqBpbnRlbF9wbGENCj4gbmUpOw0KPiAr CQlpZiAoIXBzKQ0KPiArCQkJY29udGludWU7DQoNCk9rLCBsZXQgbWUgc2VlIGlmIEkgdW5kZXJz dG9vZDogaWYgc29tZSBvZiB0aGVzZSBwbGFuZXMgaXMgbm90IHBhcnQgb2YNCnRoZSBhdG9taWMg Y29tbWl0LCB5b3UncmUgbm90IGdvaW5nIHRvIGluY2x1ZGUgaXQgaW4gdGhlIGNhbGN1bGF0aW9u cw0Kc2luY2UgaXRzIHZhbHVlIGlzIG5vdCBnb2luZyB0byBjaGFuZ2UuIFRoaXMgd291bGQgYWxs b3cgdXMgbG9jayBsZXNzDQpwbGFuZXMsIHdoaWNoIGlzIHRoZSBtYWluIGFkdmFudGFnZS4gSXMg dGhpcyBjb3JyZWN0Pw0KDQpJZiB5ZXMsIGhvdyBtdWNoIGRvIHdlIHJlYWxseSBnYWluIGJ5IHNh dmluZyBzb21lIHBsYW5lIGxvY2tpbmc/DQoNClNvIGJ5IG5vdCBhc3NpZ25pbmcgdmFsdWVzIHRv IHJlc3VsdC0+eF92YWwgYXQgaWxrX2NvbXB1dGVfd21fbGV2ZWwoKQ0Kd2hlbiBOVUxMIGlzIHBh c3NlZCB5b3UncmUgZ29pbmcgdG8gcHJlc2VydmUgd2hhdGV2ZXIgY29ycmVjdCB2YWx1ZXMNCndl cmUgYWxyZWFkeSBzZXQgZWFybGllciwgc28geW91IGRvbid0IG5lZWQgdG8gcmVjb21wdXRlIHRo ZW0uIElzIHRoaXMNCmNvcnJlY3Q/DQoNCklmIHRoZSBhbnN3ZXIgdG8gdGhlIGFib3ZlIGlzICJ5 ZXMiLCB0aGVuIGRvbid0IHdlIG5lZWQgdG8gcmVtb3ZlIHRoZQ0KbWVtc2V0KHBpcGVfd20sIDAp IGF0IHRoZSBiZWdpbm5pbmcgb2YgaWxrX2NvbXB1dGVfd21fbGV2ZWw/IE90aGVyd2lzZSwNCm5v dGhpbmcgd2lsbCBiZSBwcmVzZXJ2ZWQuDQoNClRoZXJlJ3MgYWxzbyB0aGUgemVyby1pbml0aWFs aXphdGlvbiBvZiAiY29uZmlnIiB0byBjb25zaWRlci4NCg0KT3IgbWF5YmUgaW5zdGVhZCBvZiBh bGwgb2YgdGhlIGFib3ZlLCB3ZSdyZSB3b3JraW5nIHVuZGVyIHRoZQ0KYXNzdW1wdGlvbiB0aGF0 IGlmIHNvbWUgb2YgdGhlIHBsYW5lcyBpcyBub3QgcGFydCBvZiB0aGUgYXRvbWljIGNvbW1pdCwN CnRoZW4gYWxsIGl0cyByZWxldmFudCBXTSB2YWx1ZXMgd2lsbCBiZSB6ZXJvPw0KDQo+IMKgDQo+ IMKgCQlpZiAoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSA9PQ0KPiBEUk1fUExBTkVfVFlQRV9QUklN QVJZKQ0KPiAtCQkJcHJpc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShwcyk7DQo+IC0JCWVs c2UgaWYgKGludGVsX3BsYW5lLT5iYXNlLnR5cGUgPT0NCj4gRFJNX1BMQU5FX1RZUEVfT1ZFUkxB WSkNCj4gLQkJCXNwcnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHMpOw0KPiAtCQllbHNl IGlmIChpbnRlbF9wbGFuZS0+YmFzZS50eXBlID09DQo+IERSTV9QTEFORV9UWVBFX0NVUlNPUikN Cj4gLQkJCWN1cnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHMpOw0KPiArCQkJcHJpc3Rh dGUgPSBwczsNCj4gKwkJZWxzZSBpZiAoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSA9PQ0KPiBEUk1f UExBTkVfVFlQRV9PVkVSTEFZKSB7DQo+ICsJCQlzcHJzdGF0ZSA9IHBzOw0KPiArDQo+ICsJCQlp ZiAocHMpIHsNCj4gKwkJCQlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQgPSBzcHJzdGF0ZS0NCj4g PnZpc2libGU7DQo+ICsJCQkJcGlwZV93bS0+c3ByaXRlc19zY2FsZWQgPSBzcHJzdGF0ZS0NCj4g PnZpc2libGUgJiYNCg0KWW91J3JlIHNldHRpbmcgdGhlc2UgdmFsdWVzIGhlcmUuLi4NCg0KPiAr CQkJCQkoZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLQ0KPiA+ZHN0KSAhPSBkcm1fcmVjdF93aWR0 aCgmc3Byc3RhdGUtPnNyYykgPj4gMTYgfHwNCj4gKwkJCQkJZHJtX3JlY3RfaGVpZ2h0KCZzcHJz dGF0ZS0NCj4gPmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+c3JjKSA+PiAxNik7 DQo+ICsJCQl9DQo+ICsJCX0gZWxzZSBpZiAoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSA9PQ0KPiBE Uk1fUExBTkVfVFlQRV9DVVJTT1IpDQoNCihtaXNzaW5nIGJyYWNrZXRzIGhlcmUsIGJ1dCBpZiB5 b3UgZm9sbG93IG15IHN1Z2dlc3Rpb24gYmVsb3cgeW91IHdvbid0DQpuZWVkIHRoZW0pDQoNCj4g KwkJCWN1cnN0YXRlID0gcHM7DQo+IMKgCX0NCj4gwqANCj4gLQljb25maWcuc3ByaXRlc19lbmFi bGVkID0gc3Byc3RhdGUtPnZpc2libGU7DQo+IC0JY29uZmlnLnNwcml0ZXNfc2NhbGVkID0gc3By c3RhdGUtPnZpc2libGUgJiYNCj4gLQkJKGRybV9yZWN0X3dpZHRoKCZzcHJzdGF0ZS0+ZHN0KSAh PQ0KPiBkcm1fcmVjdF93aWR0aCgmc3Byc3RhdGUtPnNyYykgPj4gMTYgfHwNCj4gLQkJZHJtX3Jl Y3RfaGVpZ2h0KCZzcHJzdGF0ZS0+ZHN0KSAhPQ0KPiBkcm1fcmVjdF9oZWlnaHQoJnNwcnN0YXRl LT5zcmMpID4+IDE2KTsNCj4gKwljb25maWcuc3ByaXRlc19lbmFibGVkID0gcGlwZV93bS0+c3By aXRlc19lbmFibGVkOw0KPiArCWNvbmZpZy5zcHJpdGVzX3NjYWxlZCA9IHBpcGVfd20tPnNwcml0 ZXNfc2NhbGVkOw0KPiDCoA0KPiDCoAlwaXBlX3dtLT5waXBlX2VuYWJsZWQgPSBjc3RhdGUtPmJh c2UuYWN0aXZlOw0KPiDCoAlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQgPSBjb25maWcuc3ByaXRl c19lbmFibGVkOw0KPiDCoAlwaXBlX3dtLT5zcHJpdGVzX3NjYWxlZCA9IGNvbmZpZy5zcHJpdGVz X3NjYWxlZDsNCg0KLi4uYnV0IHRoZW4gd2UgcmUtc2V0IHRoZW0gaGVyZS4NCg0KRWl0aGVyIHlv dSBjb3VsZCByZW1vdmUgdGhlc2UgYXNzaWdubWVudHMgaGVyZSwgb3IgeW91IGNvdWxkIG1vdmUg dGhlDQoiaWYgKHBzKSIgZnJvbSB0aGUgbG9vcCB0byBvdXRzaWRlIGl0LCBiZWNvbWluZyAiaWYg KHNwcnN0YXRlKSIsIG1ha2luZw0KdGhlIHBvc3QtcGF0Y2ggY29kZSBzaW1pbGFyIHRvIHRoZSBw cmUtcGF0Y2ggY29kZS4gU2luY2UgYm90aCBwaXBlX3dtDQphbmQgY29uZmlnIGFyZSB6ZXJvLWlu aXRpYWxpemVkIHlvdSBkb24ndCBldmVuIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlDQohc3Byc3Rh dGUgY2FzZS4NCg0KPiDCoA0KPiDCoAkvKiBJTEsvU05COiBMUDIrIHdhdGVybWFya3Mgb25seSB3 L28gc3ByaXRlcyAqLw0KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA2ICYmIHNwcnN0 YXRlLT52aXNpYmxlKQ0KPiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA2ICYmIHBpcGVf d20tPnNwcml0ZXNfZW5hYmxlZCkNCj4gwqAJCW1heF9sZXZlbCA9IDE7DQo+IMKgDQo+IMKgCS8q IElMSy9TTkIvSVZCOiBMUDErIHdhdGVybWFya3Mgb25seSB3L28gc2NhbGluZyAqLw0KPiBAQCAt MjM1MiwyMCArMjM2NSwxOCBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVfd20oc3RydWN0 DQo+IGludGVsX2NydGMgKmludGVsX2NydGMsDQo+IMKgCWlsa19jb21wdXRlX3dtX3JlZ19tYXhp bXVtcyhkZXYsIDEsICZtYXgpOw0KPiDCoA0KPiDCoAlmb3IgKGxldmVsID0gMTsgbGV2ZWwgPD0g bWF4X2xldmVsOyBsZXZlbCsrKSB7DQo+IC0JCXN0cnVjdCBpbnRlbF93bV9sZXZlbCB3bSA9IHt9 Ow0KPiArCQlzdHJ1Y3QgaW50ZWxfd21fbGV2ZWwgKndtID0gJnBpcGVfd20tPndtW2xldmVsXTsN Cj4gwqANCj4gwqAJCWlsa19jb21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBpbnRlbF9jcnRjLCBs ZXZlbCwNCj4gY3N0YXRlLA0KPiAtCQkJCcKgwqDCoMKgwqBwcmlzdGF0ZSwgc3Byc3RhdGUsIGN1 cnN0YXRlLA0KPiAmd20pOw0KPiArCQkJCcKgwqDCoMKgwqBwcmlzdGF0ZSwgc3Byc3RhdGUsIGN1 cnN0YXRlLA0KPiB3bSk7DQo+IMKgDQo+IMKgCQkvKg0KPiDCoAkJwqAqIERpc2FibGUgYW55IHdh dGVybWFyayBsZXZlbCB0aGF0IGV4Y2VlZHMgdGhlDQo+IMKgCQnCoCogcmVnaXN0ZXIgbWF4aW11 bXMgc2luY2Ugc3VjaCB3YXRlcm1hcmtzIGFyZQ0KPiDCoAkJwqAqIGFsd2F5cyBpbnZhbGlkLg0K PiDCoAkJwqAqLw0KPiAtCQlpZiAoIWlsa192YWxpZGF0ZV93bV9sZXZlbChsZXZlbCwgJm1heCwg JndtKSkNCj4gKwkJaWYgKCFpbGtfdmFsaWRhdGVfd21fbGV2ZWwobGV2ZWwsICZtYXgsIHdtKSkN Cj4gwqAJCQlicmVhazsNCj4gLQ0KPiAtCQlwaXBlX3dtLT53bVtsZXZlbF0gPSB3bTsNCg0KVGhl IGNoYW5nZSBpbiB0aGUgY2h1bmsgYWJvdmUgaXMgdGhhdCB3ZSdyZSBub3cgbGVhdmluZyB3aXRo IG5vbi16ZXJvDQp3bS0+e3ByaSxzcHIsY3VyfV92YWwgaWYgc29tZSBsZXZlbCBpcyBpbnZhbGlk LiBHaXZlbiB0aGUgY3VycmVudA0KY29tcGxleGl0eSBvZiB0aGUgY29kZSwgaXQncyBub3QgdHJp dmlhbCB2ZXJpZnkgd2hldGhlciBub3RoaW5nIGxhdGVyDQppcyBhc3N1bWluZyB0aGF0IGludmFs aWQgbGV2ZWxzIGFyZSBhbGwtemVybywgYnV0IGl0IGxvb2tzIGxpa2Ugd2UncmUNCnNhZmUuIEFu eXdheSwgY291bGQgeW91IHBsZWFzZSBtb3ZlIHRoaXMgdG8gYSBzZXBhcmF0ZSBwYXRjaCB0aGF0 IGNvbWVzDQpiZWZvcmUgdGhlIG90aGVyIGNoYW5nZXM/IEl0IHNlZW1zIHRoaXMgY2hhbmdlIHdv dWxkIGJlIHNhZmUgYWxvbmUsIGFuZA0Kd2UncmUgc2VlaW5nIHByb2JsZW1zIHdpdGggV01zIHRo ZXNlIGRheXMsIHNvIGhhdmluZyBuaWNlIGJpc2VjdGFiaWxpdHkNCmlzIGEgaHVnZSBwbHVzLg0K DQpUaGFua3MsDQpQYXVsbw0KDQo+IMKgCX0NCj4gwqANCj4gwqAJcmV0dXJuIDA7Cl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=