From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Lankhorst, Maarten" Subject: Re: [PATCH v6 8/8] drm/i915/gen9: WM memory bandwidth related workaround Date: Tue, 29 Nov 2016 09:46:11 +0000 Message-ID: <1480412769.29359.15.camel@intel.com> References: <20161124040135.5517-1-mahesh1.kumar@intel.com> <20161124040135.5517-9-mahesh1.kumar@intel.com> <1479991890.30963.19.camel@intel.com> <4ab3b016-a9b0-a76b-cc65-e68b5a028622@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id CCB136E5B6 for ; Tue, 29 Nov 2016 09:47:20 +0000 (UTC) In-Reply-To: <4ab3b016-a9b0-a76b-cc65-e68b5a028622@intel.com> Content-Language: en-US Content-ID: 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" , "Kumar, Mahesh1" Cc: "Zanoni, Paulo R" List-Id: intel-gfx@lists.freedesktop.org TWFoZXNoIEt1bWFyIHNjaHJlZWYgb3AgZGkgMjktMTEtMjAxNiBvbSAxMToxMiBbKzA1MzBdOg0K PiBIaSwNCj4gDQo+IA0KPiBPbiBUaHVyc2RheSAyNCBOb3ZlbWJlciAyMDE2IDA2OjIxIFBNLCBM YW5raG9yc3QsIE1hYXJ0ZW4gd3JvdGU6DQo+ID4gDQo+ID4gTWFoZXNoIEt1bWFyIHNjaHJlZWYg b3AgZG8gMjQtMTEtMjAxNiBvbSAwOTozMSBbKzA1MzBdOg0KPiA+ID4gDQo+ID4gPiBUaGlzIHBh dGNoIGltcGxlbW5ldHMgV29ya2FyaXVuZHMgcmVsYXRlZCB0byBkaXNwbGF5IGFyYml0cmF0ZWQN Cj4gPiA+IG1lbW9yeQ0KPiA+ID4gYmFuZHdpZHRoLiBUaGVzZSBXQSBhcmUgYXBwbGljYWJlIGZv ciBhbGwgZ2VuLTkgYmFzZWQgcGxhdGZvcm1zLg0KPiA+ID4gDQo+ID4gPiBDaGFuZ2VzIHNpbmNl IHYxOg0KPiA+ID4gwqAgLSBSZWJhc2Ugb24gdG9wIG9mIFBhdWxvJ3MgcGF0Y2ggc2VyaWVzDQo+ ID4gPiBDaGFuZ2VzIHNpbmNlIHYyOg0KPiA+ID4gwqAgLSBBZGRyZXNzIHJldmlldyBjb21tZW50 cw0KPiA+ID4gwqAgLSBSZWJhc2UvcmV3b3JrIGFzIHBlciBvdGhlciBwYXRjaCBjaGFuZ2VzIGlu IHNlcmllcw0KPiA+ID4gDQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNYWhlc2ggS3VtYXIgPG1haGVz aDEua3VtYXJAaW50ZWwuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiDCoCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIHzCoMKgwqA5ICsrKw0KPiA+ID4gwqAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyB8IDE0OQ0KPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLQ0KPiA+ID4gwqAgMiBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKSwg OSBkZWxldGlvbnMoLSkNCj4gPiA+IA0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgNCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aA0KPiA+ID4gaW5kZXggNGUyZjE3Zi4uMmI2NzNjNiAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgNCj4gPiA+IEBAIC0xMTkzLDYgKzExOTMsMTMgQEAgZW51bSBpbnRlbF9z YmlfZGVzdGluYXRpb24gew0KPiA+ID4gwqDCoAlTQklfTVBIWSwNCj4gPiA+IMKgIH07DQo+ID4g PiDCoMKgDQo+ID4gPiArLyogU0tMKyBXYXRlcm1hcmsgYXJiaXRyYXRlZCBkaXNwbGF5IGJhbmR3 aWR0aCBXb3JrYXJvdW5kcyAqLw0KPiA+ID4gK2VudW0gd2F0ZXJtYXJrX21lbW9yeV93YSB7DQo+ ID4gPiArCVdBVEVSTUFSS19XQV9OT05FLA0KPiA+ID4gKwlXQVRFUk1BUktfV0FfWF9USUxFRCwN Cj4gPiA+ICsJV0FURVJNQVJLX1dBX1lfVElMRUQsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ IMKgICNkZWZpbmUgUVVJUktfUElQRUFfRk9SQ0UgKDE8PDApDQo+ID4gPiDCoCAjZGVmaW5lIFFV SVJLX0xWRFNfU1NDX0RJU0FCTEUgKDE8PDEpDQo+ID4gPiDCoCAjZGVmaW5lIFFVSVJLX0lOVkVS VF9CUklHSFRORVNTICgxPDwyKQ0KPiA+ID4gQEAgLTE3NjQsNiArMTc3MSw4IEBAIHN0cnVjdCBz a2xfZGRiX2FsbG9jYXRpb24gew0KPiA+ID4gwqDCoA0KPiA+ID4gwqAgc3RydWN0IHNrbF93bV92 YWx1ZXMgew0KPiA+ID4gwqDCoAl1bnNpZ25lZCBkaXJ0eV9waXBlczsNCj4gPiA+ICsJLyogYW55 IFdhdGVyTWFyayBtZW1vcnkgd29ya2Fyb3VuZCBSZXF1aXJlZCAqLw0KPiA+ID4gKwllbnVtIHdh dGVybWFya19tZW1vcnlfd2EgbWVtX3dhOw0KPiA+ID4gwqDCoAlzdHJ1Y3Qgc2tsX2RkYl9hbGxv Y2F0aW9uIGRkYjsNCj4gPiA+IMKgIH07DQo+ID4gPiDCoMKgDQo+ID4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYw0KPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jDQo+ID4gPiBpbmRleCAzZTJkZDhmLi41NDdiYmRhIDEwMDY0NA0KPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYw0KPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYw0KPiA+ID4gQEAgLTI4ODksMTEgKzI4ODksNyBA QCBza2xfd21fcGxhbmVfaWQoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lDQo+ID4gPiAqcGxhbmUp DQo+ID4gPiDCoMKgCX0NCj4gPiA+IMKgIH0NCj4gPiA+IMKgwqANCj4gPiA+IC0vKg0KPiA+ID4g LSAqIEZJWE1FOiBXZSBzdGlsbCBkb24ndCBoYXZlIHRoZSBwcm9wZXIgY29kZSBkZXRlY3QgaWYg d2UgbmVlZA0KPiA+ID4gdG8NCj4gPiA+IGFwcGx5IHRoZSBXQSwNCj4gPiA+IC0gKiBzbyBhc3N1 bWUgd2UnbGwgYWx3YXlzIG5lZWQgaXQgaW4gb3JkZXIgdG8gYXZvaWQgdW5kZXJydW5zLg0KPiA+ ID4gLSAqLw0KPiA+ID4gLXN0YXRpYyBib29sIHNrbF9uZWVkc19tZW1vcnlfYndfd2Eoc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZQ0KPiA+ID4gKnN0YXRlKQ0KPiA+ID4gK3N0YXRpYyBib29sIGlu dGVsX25lZWRzX21lbW9yeV9id193YShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlDQo+ID4gPiAq c3RhdGUpDQo+ID4gPiDCoCB7DQo+ID4gPiDCoMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtDQo+ID4gPiA+IA0KPiA+ID4gPiBiYXNlLmRldik7DQo+ ID4gPiDCoMKgDQo+ID4gPiBAQCAtMzA2Nyw3ICszMDYzLDcgQEAgYm9vbCBpbnRlbF9jYW5fZW5h YmxlX3NhZ3Yoc3RydWN0DQo+ID4gPiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gPiA+IMKg wqANCj4gPiA+IMKgwqAJCWxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2ZWxd Ow0KPiA+ID4gwqDCoA0KPiA+ID4gLQkJaWYgKHNrbF9uZWVkc19tZW1vcnlfYndfd2EoaW50ZWxf c3RhdGUpICYmDQo+ID4gPiArCQlpZiAoaW50ZWxfbmVlZHNfbWVtb3J5X2J3X3dhKGludGVsX3N0 YXRlKSAmJg0KPiA+ID4gwqDCoAkJwqDCoMKgwqBwbGFuZS0+YmFzZS5zdGF0ZS0+ZmItPm1vZGlm aWVyID09DQo+ID4gPiDCoMKgCQnCoMKgwqDCoEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQ0KPiA+ ID4gwqDCoAkJCWxhdGVuY3kgKz0gMTU7DQo+ID4gPiBAQCAtMzU5Nyw3ICszNTkzLDcgQEAgc3Rh dGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdA0KPiA+ID4gc3RydWN0DQo+ID4gPiBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gPiA+IMKgwqAJdWludDMyX3QgeV9taW5fc2Nh bmxpbmVzOw0KPiA+ID4gwqDCoAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9DQo+ ID4gPiDCoMKgCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoY3N0YXRlLT5iYXNlLnN0YXRlKTsNCj4g PiA+IC0JYm9vbCBhcHBseV9tZW1vcnlfYndfd2EgPSBza2xfbmVlZHNfbWVtb3J5X2J3X3dhKHN0 YXRlKTsNCj4gPiA+ICsJZW51bSB3YXRlcm1hcmtfbWVtb3J5X3dhIG1lbV93YTsNCj4gPiA+IMKg wqAJYm9vbCB5X3RpbGVkLCB4X3RpbGVkOw0KPiA+ID4gwqDCoA0KPiA+ID4gwqDCoAlpZiAobGF0 ZW5jeSA9PSAwIHx8ICFjc3RhdGUtPmJhc2UuYWN0aXZlIHx8DQo+ID4gPiAhaW50ZWxfcHN0YXRl LQ0KPiA+ID4gPiANCj4gPiA+ID4gYmFzZS52aXNpYmxlKSB7DQo+ID4gPiBAQCAtMzYxMyw3ICsz NjA5LDggQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdA0KPiA+ID4gc3Ry dWN0DQo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gPiA+IMKgwqAJaWYgKElT X0tBQllMQUtFKGRldl9wcml2KSAmJiBkZXZfcHJpdi0+aXBjX2VuYWJsZWQpDQo+ID4gPiDCoMKg CQlsYXRlbmN5ICs9IDQ7DQo+ID4gPiDCoMKgDQo+ID4gPiAtCWlmIChhcHBseV9tZW1vcnlfYndf d2EgJiYgeF90aWxlZCkNCj4gPiA+ICsJbWVtX3dhID0gc3RhdGUtPndtX3Jlc3VsdHMubWVtX3dh Ow0KPiA+ID4gKwlpZiAobWVtX3dhICE9IFdBVEVSTUFSS19XQV9OT05FICYmIHhfdGlsZWQpDQo+ ID4gPiDCoMKgCQlsYXRlbmN5ICs9IDE1Ow0KPiA+ID4gwqDCoA0KPiA+ID4gwqDCoAl3aWR0aCA9 IGRybV9yZWN0X3dpZHRoKCZpbnRlbF9wc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsNCj4gPiA+IEBA IC0zNjQ4LDcgKzM2NDUsNyBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0 DQo+ID4gPiBzdHJ1Y3QNCj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+ID4g wqDCoAkJeV9taW5fc2NhbmxpbmVzID0gNDsNCj4gPiA+IMKgwqAJfQ0KPiA+ID4gwqDCoA0KPiA+ ID4gLQlpZiAoYXBwbHlfbWVtb3J5X2J3X3dhKQ0KPiA+ID4gKwlpZiAobWVtX3dhID09IFdBVEVS TUFSS19XQV9ZX1RJTEVEKQ0KPiA+ID4gwqDCoAkJeV9taW5fc2NhbmxpbmVzICo9IDI7DQo+ID4g PiDCoMKgDQo+ID4gPiDCoMKgCXBsYW5lX2J5dGVzX3Blcl9saW5lID0gd2lkdGggKiBjcHA7DQo+ ID4gPiBAQCAtNDA3Nyw2ICs0MDc0LDE1IEBAIHNrbF9jb21wdXRlX2RkYihzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZQ0KPiA+ID4gKnN0YXRlKQ0KPiA+ID4gwqDCoAl9DQo+ID4gPiDCoMKgDQo+ID4g PiDCoMKgCS8qDQo+ID4gPiArCcKgKiBJZiBXYXRlcm1hcmsgd29ya2Fyb3VuZCBpcyBjaGFuZ2Vk IHdlIG5lZWQgdG8NCj4gPiA+IHJlY2FsY3VsYXRlDQo+ID4gPiArCcKgKiB3YXRlcm1hcmsgdmFs dWVzIGZvciBhbGwgYWN0aXZlIHBpcGVzDQo+ID4gPiArCcKgKi8NCj4gPiA+ICsJaWYgKGludGVs X3N0YXRlLT53bV9yZXN1bHRzLm1lbV93YSAhPSBkZXZfcHJpdi0NCj4gPiA+ID4gDQo+ID4gPiA+ IHdtLnNrbF9ody5tZW1fd2EpIHsNCj4gPiA+ICsJCXJlYWxsb2NfcGlwZXMgPSB+MDsNCj4gPiA+ ICsJCWludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRpcnR5X3BpcGVzID0gfjA7DQo+ID4gPiArCX0N Cj4gPiA+ICsNCj4gPiA+ICsJLyoNCj4gPiA+IMKgwqAJwqAqIFdlJ3JlIG5vdCByZWNvbXB1dGlu ZyBmb3IgdGhlIHBpcGVzIG5vdCBpbmNsdWRlZCBpbg0KPiA+ID4gdGhlDQo+ID4gPiBjb21taXQs IHNvDQo+ID4gPiDCoMKgCcKgKiBtYWtlIHN1cmUgd2Ugc3RhcnQgd2l0aCB0aGUgY3VycmVudCBz dGF0ZS4NCj4gPiA+IMKgwqAJwqAqLw0KPiA+ID4gQEAgLTQxMDIsNiArNDEwOCwxMjkgQEAgc2ts X2NvbXB1dGVfZGRiKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlDQo+ID4gPiAqc3RhdGUpDQo+ID4g PiDCoCB9DQo+ID4gPiDCoMKgDQo+ID4gPiDCoCBzdGF0aWMgdm9pZA0KPiA+ID4gK3NrbF9jb21w dXRlX21lbW9yeV9iYW5kd2lkdGhfd21fd2Eoc3RydWN0IGRybV9hdG9taWNfc3RhdGUNCj4gPiA+ ICpzdGF0ZSkNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0 ZS0+ZGV2Ow0KPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7DQo+ID4gPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOw0KPiA+ID4g KwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZTsNCj4gPiA+ICsJc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQ0KPiA+ID4gdG9faW50ZWxfYXRvbWlj X3N0YXRlKHN0YXRlKTsNCj4gPiA+ICsJc3RydWN0IG1lbWRldl9pbmZvICptZW1kZXZfaW5mbyA9 ICZkZXZfcHJpdi0NCj4gPiA+ID5tZW1kZXZfaW5mbzsNCj4gPiA+ICsJaW50IG51bV9hY3RpdmVf cGlwZXM7DQo+ID4gPiArCXVpbnQzMl90IG1heF9waXBlX2J3X2ticHMsIHRvdGFsX3BpcGVfYndf a2JwczsNCj4gPiA+ICsJaW50IGRpc3BsYXlfYndfcGVyY2VudGFnZTsNCj4gPiA+ICsJYm9vbCB5 X3RpbGVfZW5hYmxlZCA9IGZhbHNlOw0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoIWludGVsX25lZWRz X21lbW9yeV9id193YShpbnRlbF9zdGF0ZSkpIHsNCj4gPiA+ICsJCWludGVsX3N0YXRlLT53bV9y ZXN1bHRzLm1lbV93YSA9DQo+ID4gPiBXQVRFUk1BUktfV0FfTk9ORTsNCj4gPiA+ICsJCXJldHVy bjsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoIW1lbWRldl9pbmZvLT52YWxpZCkN Cj4gPiA+ICsJCWdvdG8gZXhpdDsNCj4gPiA+ICsNCj4gPiA+ICsJbWF4X3BpcGVfYndfa2JwcyA9 IDA7DQo+ID4gPiArCW51bV9hY3RpdmVfcGlwZXMgPSAwOw0KPiA+ID4gKwlmb3JfZWFjaF9pbnRl bF9jcnRjKGRldiwgaW50ZWxfY3J0Yykgew0KPiA+ID4gKwkJc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNzdGF0ZTsNCj4gPiA+ICsJCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7DQo+ID4gPiAr CQlpbnQgbnVtX2FjdGl2ZV9wbGFuZXM7DQo+ID4gPiArCQl1aW50MzJfdMKgwqBtYXhfcGxhbmVf Yndfa2JwcywgcGlwZV9id19rYnBzOw0KPiA+ID4gKw0KPiA+ID4gKwkJLyoNCj4gPiA+ICsJCcKg KiBJZiBDUlRDIGlzIHBhcnQgb2YgY3VycmVudCBhdG9taWMgY29tbWl0LCBnZXQNCj4gPiA+IGNy dGMgc3RhdGUgZnJvbQ0KPiA+ID4gKwkJwqAqIGV4aXN0aW5nIENSVEMgc3RhdGUuIGVsc2UgdGFr ZSB0aGUgY2FjaGVkDQo+ID4gPiBDUlRDDQo+ID4gPiBzdGF0ZQ0KPiA+ID4gKwkJwqAqLw0KPiA+ ID4gKwkJY3N0YXRlID0gTlVMTDsNCj4gPiA+ICsJCWlmIChzdGF0ZSkNCj4gPiA+ICsJCQljc3Rh dGUgPQ0KPiA+ID4gaW50ZWxfYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLA0K PiA+ID4gKwkJCQkJaW50ZWxfY3J0Yyk7DQo+ID4gPiArCQlpZiAoIWNzdGF0ZSkNCj4gPiA+ICsJ CQljc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGludGVsX2NydGMtDQo+ID4gPiA+IA0KPiA+ ID4gPiBiYXNlLnN0YXRlKTsNCj4gPiBUaGlzIGlzIHJlYWxseSByZWFsbHkgbm90IGFsbG93ZWQu IElmIHlvdSB3YW50IHRvIGFjY2Vzcw0KPiA+IGNydGMtPnN0YXRlLCB5b3UgbmVlZCB0byBnZXQg dGhlIHN0YXRlLg0KPiA+IA0KPiA+IFNpbmNlIGEgdy9hIGZvcmNlcyBhIGZ1bGwgcmVjYWxjdWxh dGlvbiwgYmVzdCB5b3UgY2FuIGRvIGlzIHB1dCB0aGUNCj4gPiBwZXINCj4gPiBwaXBlIHN0YXR1 cyBpbiBjcnRjX3N0YXRlLT53bS5za2wgYXMgd2VsbC4gSWYgaXQgY2hhbmdlcyB5b3UgY291bGQN Cj4gPiBhZGQNCj4gPiBhbGwgb3RoZXIgcGlwZXMuDQo+IEkgcmVhbGx5IGRvbid0IHdhbnQgdG8g YWRkIGFsbCBwaXBlcyBpbiAic3RhdGUiIHVudGlsIHRoYXQgaXMNCj4gbmVjZXNzYXJ5wqANCj4g b3RoZXJ3aXNlIGl0J2xsIG1ha2Ugb3VyIGNvbW1pdCBodWdlLCB0aGF0J3Mgd2h5IGdldHRpbmcg dGhlIGNhY2hlZA0KPiBzdGF0ZS4NCj4gU2FtZSBnb2VzIGZvciBwbGFuZS4gTGF0ZXIgaWYgdy9h IGNoYW5nZXMgdGhlbiBJJ23CoMKgYWRkaW5nIGFsbCB0aGXCoA0KPiBDUlRDJ3MgaW4gcmVsbG9j X3BpcGVzIG1hc2suDQo+IA0KPiAJaWYgKGludGVsX3N0YXRlLT53bV9yZXN1bHRzLm1lbV93YSAh PSBkZXZfcHJpdi0NCj4gPndtLnNrbF9ody5tZW1fd2EpDQo+IA0KPiBJZiBJIGhvbGQgdGhlIGNy dGMtPm11dGV4IG9yIHBsYW5lLT5tdXRleCBsb2NrLCBJdCBtYXkgY2F1c2UNCj4gZGVhZGxvY2vC oA0KPiB3aXRoIG90aGVyIGNvbW1pdHMuDQo+IEkgY2FuIGtlZXAgYSBjYWNoZWQgY29weSBvZiBw bGFuZSBtZW1vcnkgYmFuZHdpZHRoIHJlcXVpcmVtZW50IGluwqANCj4gImRldl9wcml2LT53bS5z a2xfaHciLCBidXQgYWdhaW4gaWYgdGhlcmUgYXJlIHR3byBwYXJhbGxlbCBjb21taXRzDQo+IGl0 wqANCj4gbWF5IGNhdXNlIHJhY2UuDQo+IA0KPiBDYW4geW91IHBsZWFzZSBzdWdnZXN0IHdoYXQg aXMgdGhlIGNvcnJlY3Qgd2F5IG9mIGdldHRpbmcgcGxhbmUvY3J0Y8KgDQo+IHN0YXRlIGR1cmlu ZyBjaGVjayBwaGFzZSB3aXRob3V0IGhhdmUgdG8gYWN0dWFsbHkgY29tbWl0IHRoZW0gKGFkZA0K PiBpbsKgDQo+IGdsb2JhbC1zdGF0ZSksDQo+IElmIGFueSBzdWNoIHRoaW5nIGlzIGF2YWlsYWJs ZSBpbiBhdG9taWMgZnJhbWV3b3JrPw0KSG93IG9mdGVuIHdpbGwgdGhlIHdvcmthcm91bmQgc3Rh dHVzIGNoYW5nZSBpbiBwcmFjdGljZT8NCg0KWW91IGNvdWxkIGRvIHNhbWUgYXMgYWN0aXZlX2Ny dGNzLCBwcm90ZWN0IGNoYW5naW5nIHRoZSB3b3JrYXJvdW5kDQpjdXJyZW50IGNydGMncyB3b3Jr YXJvdW5kIG1vZGUgaW4gZGV2X3ByaXYtPndtLnNrbC53YV9zdGF0ZVtwaXBlXSB3aXRoDQpjb25u ZWN0aW9uX211dGV4LiBJZiB0aGlzIG1lYW5zIGNoYW5naW5nIHRoYXQgdGhlIGdsb2JhbCB3b3Jr YXJvdW5kDQpzZXR0aW5nIGlzIGNoYW5nZWQsIHRoZW4gYWxzbyBhY3F1aXJlIGFsbCBvdGhlciBj cnRjIHN0YXRlcy4NCg0KSSBjYW4ndCBzYXkgaXQncyBwcmV0dHkgdGhvdWdoLCBpdCB3b3VsZCBu ZWVkIGEgZ29vZCBqdXN0aWZpY2F0aW9uIGZvcg0KaG93IGJhZCB0aGUgcHJvYmxlbSBpcyBpbiBw cmFjdGljZSBwbHVzIHByZXR0eSBnb29kIGRvY3VtZW50YXRpb24gb24NCndoeSBpdCB3b3Jrcy4N Cg0Kfk1hYXJ0ZW4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkludGVsIEludGVybmF0aW9uYWwgQi5WLgpSZWdpc3Rl cmVkIGluIFRoZSBOZXRoZXJsYW5kcyB1bmRlciBudW1iZXIgMzQwOTg1MzUKU3RhdHV0b3J5IHNl YXQ6IEhhYXJsZW1tZXJtZWVyClJlZ2lzdGVyZWQgYWRkcmVzczogQ2Fwcm9uaWxhYW4gMzcsIDEx MTlORyBTY2hpcGhvbC1SaWprCgpUaGlzIGUtbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIG1heSBj b250YWluIGNvbmZpZGVudGlhbCBtYXRlcmlhbCBmb3IKdGhlIHNvbGUgdXNlIG9mIHRoZSBpbnRl bmRlZCByZWNpcGllbnQocykuIEFueSByZXZpZXcgb3IgZGlzdHJpYnV0aW9uCmJ5IG90aGVycyBp cyBzdHJpY3RseSBwcm9oaWJpdGVkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQKcmVjaXBp ZW50LCBwbGVhc2UgY29udGFjdCB0aGUgc2VuZGVyIGFuZCBkZWxldGUgYWxsIGNvcGllcy4KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==