From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mahesh Kumar Subject: Re: [PATCH v6 8/8] drm/i915/gen9: WM memory bandwidth related workaround Date: Tue, 29 Nov 2016 19:17:54 +0530 Message-ID: <7cfc68d2-299b-e3db-b753-e9f113b0c1fc@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> <1480412769.29359.15.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 63D656E525 for ; Tue, 29 Nov 2016 13:46:24 +0000 (UTC) In-Reply-To: <1480412769.29359.15.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Lankhorst, Maarten" , "intel-gfx@lists.freedesktop.org" Cc: "Zanoni, Paulo R" List-Id: intel-gfx@lists.freedesktop.org CgpPbiBUdWVzZGF5IDI5IE5vdmVtYmVyIDIwMTYgMDM6MTYgUE0sIExhbmtob3JzdCwgTWFhcnRl biB3cm90ZToKPiBNYWhlc2ggS3VtYXIgc2NocmVlZiBvcCBkaSAyOS0xMS0yMDE2IG9tIDExOjEy IFsrMDUzMF06Cj4+IEhpLAo+Pgo+Pgo+PiBPbiBUaHVyc2RheSAyNCBOb3ZlbWJlciAyMDE2IDA2 OjIxIFBNLCBMYW5raG9yc3QsIE1hYXJ0ZW4gd3JvdGU6Cj4+PiBNYWhlc2ggS3VtYXIgc2NocmVl ZiBvcCBkbyAyNC0xMS0yMDE2IG9tIDA5OjMxIFsrMDUzMF06Cj4+Pj4gVGhpcyBwYXRjaCBpbXBs ZW1uZXRzIFdvcmthcml1bmRzIHJlbGF0ZWQgdG8gZGlzcGxheSBhcmJpdHJhdGVkCj4+Pj4gbWVt b3J5Cj4+Pj4gYmFuZHdpZHRoLiBUaGVzZSBXQSBhcmUgYXBwbGljYWJlIGZvciBhbGwgZ2VuLTkg YmFzZWQgcGxhdGZvcm1zLgo+Pj4+Cj4+Pj4gQ2hhbmdlcyBzaW5jZSB2MToKPj4+PiAgICAtIFJl YmFzZSBvbiB0b3Agb2YgUGF1bG8ncyBwYXRjaCBzZXJpZXMKPj4+PiBDaGFuZ2VzIHNpbmNlIHYy Ogo+Pj4+ICAgIC0gQWRkcmVzcyByZXZpZXcgY29tbWVudHMKPj4+PiAgICAtIFJlYmFzZS9yZXdv cmsgYXMgcGVyIG90aGVyIHBhdGNoIGNoYW5nZXMgaW4gc2VyaWVzCj4+Pj4KPj4+PiBTaWduZWQt b2ZmLWJ5OiBNYWhlc2ggS3VtYXIgPG1haGVzaDEua3VtYXJAaW50ZWwuY29tPgo+Pj4+IC0tLQo+ Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggfCAgIDkgKysrCj4+Pj4gICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyB8IDE0OQo+Pj4+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0KPj4+PiAgICAyIGZpbGVzIGNoYW5nZWQsIDE0OSBp bnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPj4+PiBpbmRleCA0ZTJmMTdmLi4yYjY3M2M2IDEwMDY0NAo+Pj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4+Pj4gQEAgLTExOTMsNiArMTE5MywxMyBAQCBlbnVtIGludGVsX3Ni aV9kZXN0aW5hdGlvbiB7Cj4+Pj4gICAgCVNCSV9NUEhZLAo+Pj4+ICAgIH07Cj4+Pj4gICAgCj4+ Pj4gKy8qIFNLTCsgV2F0ZXJtYXJrIGFyYml0cmF0ZWQgZGlzcGxheSBiYW5kd2lkdGggV29ya2Fy b3VuZHMgKi8KPj4+PiArZW51bSB3YXRlcm1hcmtfbWVtb3J5X3dhIHsKPj4+PiArCVdBVEVSTUFS S19XQV9OT05FLAo+Pj4+ICsJV0FURVJNQVJLX1dBX1hfVElMRUQsCj4+Pj4gKwlXQVRFUk1BUktf V0FfWV9USUxFRCwKPj4+PiArfTsKPj4+PiArCj4+Pj4gICAgI2RlZmluZSBRVUlSS19QSVBFQV9G T1JDRSAoMTw8MCkKPj4+PiAgICAjZGVmaW5lIFFVSVJLX0xWRFNfU1NDX0RJU0FCTEUgKDE8PDEp Cj4+Pj4gICAgI2RlZmluZSBRVUlSS19JTlZFUlRfQlJJR0hUTkVTUyAoMTw8MikKPj4+PiBAQCAt MTc2NCw2ICsxNzcxLDggQEAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiB7Cj4+Pj4gICAgCj4+ Pj4gICAgc3RydWN0IHNrbF93bV92YWx1ZXMgewo+Pj4+ICAgIAl1bnNpZ25lZCBkaXJ0eV9waXBl czsKPj4+PiArCS8qIGFueSBXYXRlck1hcmsgbWVtb3J5IHdvcmthcm91bmQgUmVxdWlyZWQgKi8K Pj4+PiArCWVudW0gd2F0ZXJtYXJrX21lbW9yeV93YSBtZW1fd2E7Cj4+Pj4gICAgCXN0cnVjdCBz a2xfZGRiX2FsbG9jYXRpb24gZGRiOwo+Pj4+ICAgIH07Cj4+Pj4gICAgCj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKPj4+PiBpbmRleCAzZTJkZDhmLi41NDdiYmRhIDEwMDY0NAo+Pj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPj4+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4+Pj4gQEAgLTI4ODksMTEgKzI4ODksNyBAQCBza2xf d21fcGxhbmVfaWQoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lCj4+Pj4gKnBsYW5lKQo+Pj4+ICAg IAl9Cj4+Pj4gICAgfQo+Pj4+ICAgIAo+Pj4+IC0vKgo+Pj4+IC0gKiBGSVhNRTogV2Ugc3RpbGwg ZG9uJ3QgaGF2ZSB0aGUgcHJvcGVyIGNvZGUgZGV0ZWN0IGlmIHdlIG5lZWQKPj4+PiB0bwo+Pj4+ IGFwcGx5IHRoZSBXQSwKPj4+PiAtICogc28gYXNzdW1lIHdlJ2xsIGFsd2F5cyBuZWVkIGl0IGlu IG9yZGVyIHRvIGF2b2lkIHVuZGVycnVucy4KPj4+PiAtICovCj4+Pj4gLXN0YXRpYyBib29sIHNr bF9uZWVkc19tZW1vcnlfYndfd2Eoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZQo+Pj4+ICpzdGF0 ZSkKPj4+PiArc3RhdGljIGJvb2wgaW50ZWxfbmVlZHNfbWVtb3J5X2J3X3dhKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUKPj4+PiAqc3RhdGUpCj4+Pj4gICAgewo+Pj4+ICAgIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLQo+Pj4+PiBiYXNlLmRldik7 Cj4+Pj4gICAgCj4+Pj4gQEAgLTMwNjcsNyArMzA2Myw3IEBAIGJvb2wgaW50ZWxfY2FuX2VuYWJs ZV9zYWd2KHN0cnVjdAo+Pj4+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+Pj4+ICAgIAo+Pj4+ ICAgIAkJbGF0ZW5jeSA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeVtsZXZlbF07Cj4+Pj4gICAg Cj4+Pj4gLQkJaWYgKHNrbF9uZWVkc19tZW1vcnlfYndfd2EoaW50ZWxfc3RhdGUpICYmCj4+Pj4g KwkJaWYgKGludGVsX25lZWRzX21lbW9yeV9id193YShpbnRlbF9zdGF0ZSkgJiYKPj4+PiAgICAJ CSAgICBwbGFuZS0+YmFzZS5zdGF0ZS0+ZmItPm1vZGlmaWVyID09Cj4+Pj4gICAgCQkgICAgSTkx NV9GT1JNQVRfTU9EX1hfVElMRUQpCj4+Pj4gICAgCQkJbGF0ZW5jeSArPSAxNTsKPj4+PiBAQCAt MzU5Nyw3ICszNTkzLDcgQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdAo+ Pj4+IHN0cnVjdAo+Pj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4+ICAgIAl1aW50 MzJfdCB5X21pbl9zY2FubGluZXM7Cj4+Pj4gICAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlID0KPj4+PiAgICAJCXRvX2ludGVsX2F0b21pY19zdGF0ZShjc3RhdGUtPmJhc2Uuc3Rh dGUpOwo+Pj4+IC0JYm9vbCBhcHBseV9tZW1vcnlfYndfd2EgPSBza2xfbmVlZHNfbWVtb3J5X2J3 X3dhKHN0YXRlKTsKPj4+PiArCWVudW0gd2F0ZXJtYXJrX21lbW9yeV93YSBtZW1fd2E7Cj4+Pj4g ICAgCWJvb2wgeV90aWxlZCwgeF90aWxlZDsKPj4+PiAgICAKPj4+PiAgICAJaWYgKGxhdGVuY3kg PT0gMCB8fCAhY3N0YXRlLT5iYXNlLmFjdGl2ZSB8fAo+Pj4+ICFpbnRlbF9wc3RhdGUtCj4+Pj4+ IGJhc2UudmlzaWJsZSkgewo+Pj4+IEBAIC0zNjEzLDcgKzM2MDksOCBAQCBzdGF0aWMgaW50IHNr bF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0Cj4+Pj4gc3RydWN0Cj4+Pj4gZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4+Pj4gICAgCWlmIChJU19LQUJZTEFLRShkZXZfcHJpdikgJiYgZGV2X3By aXYtPmlwY19lbmFibGVkKQo+Pj4+ICAgIAkJbGF0ZW5jeSArPSA0Owo+Pj4+ICAgIAo+Pj4+IC0J aWYgKGFwcGx5X21lbW9yeV9id193YSAmJiB4X3RpbGVkKQo+Pj4+ICsJbWVtX3dhID0gc3RhdGUt PndtX3Jlc3VsdHMubWVtX3dhOwo+Pj4+ICsJaWYgKG1lbV93YSAhPSBXQVRFUk1BUktfV0FfTk9O RSAmJiB4X3RpbGVkKQo+Pj4+ICAgIAkJbGF0ZW5jeSArPSAxNTsKPj4+PiAgICAKPj4+PiAgICAJ d2lkdGggPSBkcm1fcmVjdF93aWR0aCgmaW50ZWxfcHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4+ Pj4gQEAgLTM2NDgsNyArMzY0NSw3IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20o Y29uc3QKPj4+PiBzdHJ1Y3QKPj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+PiAg ICAJCXlfbWluX3NjYW5saW5lcyA9IDQ7Cj4+Pj4gICAgCX0KPj4+PiAgICAKPj4+PiAtCWlmIChh cHBseV9tZW1vcnlfYndfd2EpCj4+Pj4gKwlpZiAobWVtX3dhID09IFdBVEVSTUFSS19XQV9ZX1RJ TEVEKQo+Pj4+ICAgIAkJeV9taW5fc2NhbmxpbmVzICo9IDI7Cj4+Pj4gICAgCj4+Pj4gICAgCXBs YW5lX2J5dGVzX3Blcl9saW5lID0gd2lkdGggKiBjcHA7Cj4+Pj4gQEAgLTQwNzcsNiArNDA3NCwx NSBAQCBza2xfY29tcHV0ZV9kZGIoc3RydWN0IGRybV9hdG9taWNfc3RhdGUKPj4+PiAqc3RhdGUp Cj4+Pj4gICAgCX0KPj4+PiAgICAKPj4+PiAgICAJLyoKPj4+PiArCSAqIElmIFdhdGVybWFyayB3 b3JrYXJvdW5kIGlzIGNoYW5nZWQgd2UgbmVlZCB0bwo+Pj4+IHJlY2FsY3VsYXRlCj4+Pj4gKwkg KiB3YXRlcm1hcmsgdmFsdWVzIGZvciBhbGwgYWN0aXZlIHBpcGVzCj4+Pj4gKwkgKi8KPj4+PiAr CWlmIChpbnRlbF9zdGF0ZS0+d21fcmVzdWx0cy5tZW1fd2EgIT0gZGV2X3ByaXYtCj4+Pj4+IHdt LnNrbF9ody5tZW1fd2EpIHsKPj4+PiArCQlyZWFsbG9jX3BpcGVzID0gfjA7Cj4+Pj4gKwkJaW50 ZWxfc3RhdGUtPndtX3Jlc3VsdHMuZGlydHlfcGlwZXMgPSB+MDsKPj4+PiArCX0KPj4+PiArCj4+ Pj4gKwkvKgo+Pj4+ICAgIAkgKiBXZSdyZSBub3QgcmVjb21wdXRpbmcgZm9yIHRoZSBwaXBlcyBu b3QgaW5jbHVkZWQgaW4KPj4+PiB0aGUKPj4+PiBjb21taXQsIHNvCj4+Pj4gICAgCSAqIG1ha2Ug c3VyZSB3ZSBzdGFydCB3aXRoIHRoZSBjdXJyZW50IHN0YXRlLgo+Pj4+ICAgIAkgKi8KPj4+PiBA QCAtNDEwMiw2ICs0MTA4LDEyOSBAQCBza2xfY29tcHV0ZV9kZGIoc3RydWN0IGRybV9hdG9taWNf c3RhdGUKPj4+PiAqc3RhdGUpCj4+Pj4gICAgfQo+Pj4+ICAgIAo+Pj4+ICAgIHN0YXRpYyB2b2lk Cj4+Pj4gK3NrbF9jb21wdXRlX21lbW9yeV9iYW5kd2lkdGhfd21fd2Eoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUKPj4+PiAqc3RhdGUpCj4+Pj4gK3sKPj4+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBzdGF0ZS0+ZGV2Owo+Pj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShkZXYpOwo+Pj4+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4+ Pj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZTsKPj4+PiArCXN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KPj4+PiB0b19pbnRlbF9hdG9taWNf c3RhdGUoc3RhdGUpOwo+Pj4+ICsJc3RydWN0IG1lbWRldl9pbmZvICptZW1kZXZfaW5mbyA9ICZk ZXZfcHJpdi0KPj4+Pj4gbWVtZGV2X2luZm87Cj4+Pj4gKwlpbnQgbnVtX2FjdGl2ZV9waXBlczsK Pj4+PiArCXVpbnQzMl90IG1heF9waXBlX2J3X2ticHMsIHRvdGFsX3BpcGVfYndfa2JwczsKPj4+ PiArCWludCBkaXNwbGF5X2J3X3BlcmNlbnRhZ2U7Cj4+Pj4gKwlib29sIHlfdGlsZV9lbmFibGVk ID0gZmFsc2U7Cj4+Pj4gKwo+Pj4+ICsJaWYgKCFpbnRlbF9uZWVkc19tZW1vcnlfYndfd2EoaW50 ZWxfc3RhdGUpKSB7Cj4+Pj4gKwkJaW50ZWxfc3RhdGUtPndtX3Jlc3VsdHMubWVtX3dhID0KPj4+ PiBXQVRFUk1BUktfV0FfTk9ORTsKPj4+PiArCQlyZXR1cm47Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ ICsJaWYgKCFtZW1kZXZfaW5mby0+dmFsaWQpCj4+Pj4gKwkJZ290byBleGl0Owo+Pj4+ICsKPj4+ PiArCW1heF9waXBlX2J3X2ticHMgPSAwOwo+Pj4+ICsJbnVtX2FjdGl2ZV9waXBlcyA9IDA7Cj4+ Pj4gKwlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgaW50ZWxfY3J0Yykgewo+Pj4+ICsJCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGU7Cj4+Pj4gKwkJc3RydWN0IGludGVsX3BsYW5lICpw bGFuZTsKPj4+PiArCQlpbnQgbnVtX2FjdGl2ZV9wbGFuZXM7Cj4+Pj4gKwkJdWludDMyX3QgIG1h eF9wbGFuZV9id19rYnBzLCBwaXBlX2J3X2ticHM7Cj4+Pj4gKwo+Pj4+ICsJCS8qCj4+Pj4gKwkJ ICogSWYgQ1JUQyBpcyBwYXJ0IG9mIGN1cnJlbnQgYXRvbWljIGNvbW1pdCwgZ2V0Cj4+Pj4gY3J0 YyBzdGF0ZSBmcm9tCj4+Pj4gKwkJICogZXhpc3RpbmcgQ1JUQyBzdGF0ZS4gZWxzZSB0YWtlIHRo ZSBjYWNoZWQKPj4+PiBDUlRDCj4+Pj4gc3RhdGUKPj4+PiArCQkgKi8KPj4+PiArCQljc3RhdGUg PSBOVUxMOwo+Pj4+ICsJCWlmIChzdGF0ZSkKPj4+PiArCQkJY3N0YXRlID0KPj4+PiBpbnRlbF9h dG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUsCj4+Pj4gKwkJCQkJaW50ZWxfY3J0 Yyk7Cj4+Pj4gKwkJaWYgKCFjc3RhdGUpCj4+Pj4gKwkJCWNzdGF0ZSA9IHRvX2ludGVsX2NydGNf c3RhdGUoaW50ZWxfY3J0Yy0KPj4+Pj4gYmFzZS5zdGF0ZSk7Cj4+PiBUaGlzIGlzIHJlYWxseSBy ZWFsbHkgbm90IGFsbG93ZWQuIElmIHlvdSB3YW50IHRvIGFjY2Vzcwo+Pj4gY3J0Yy0+c3RhdGUs IHlvdSBuZWVkIHRvIGdldCB0aGUgc3RhdGUuCj4+Pgo+Pj4gU2luY2UgYSB3L2EgZm9yY2VzIGEg ZnVsbCByZWNhbGN1bGF0aW9uLCBiZXN0IHlvdSBjYW4gZG8gaXMgcHV0IHRoZQo+Pj4gcGVyCj4+ PiBwaXBlIHN0YXR1cyBpbiBjcnRjX3N0YXRlLT53bS5za2wgYXMgd2VsbC4gSWYgaXQgY2hhbmdl cyB5b3UgY291bGQKPj4+IGFkZAo+Pj4gYWxsIG90aGVyIHBpcGVzLgo+PiBJIHJlYWxseSBkb24n dCB3YW50IHRvIGFkZCBhbGwgcGlwZXMgaW4gInN0YXRlIiB1bnRpbCB0aGF0IGlzCj4+IG5lY2Vz c2FyeQo+PiBvdGhlcndpc2UgaXQnbGwgbWFrZSBvdXIgY29tbWl0IGh1Z2UsIHRoYXQncyB3aHkg Z2V0dGluZyB0aGUgY2FjaGVkCj4+IHN0YXRlLgo+PiBTYW1lIGdvZXMgZm9yIHBsYW5lLiBMYXRl ciBpZiB3L2EgY2hhbmdlcyB0aGVuIEknbSAgYWRkaW5nIGFsbCB0aGUKPj4gQ1JUQydzIGluIHJl bGxvY19waXBlcyBtYXNrLgo+Pgo+PiAJaWYgKGludGVsX3N0YXRlLT53bV9yZXN1bHRzLm1lbV93 YSAhPSBkZXZfcHJpdi0KPj4+IHdtLnNrbF9ody5tZW1fd2EpCj4+IElmIEkgaG9sZCB0aGUgY3J0 Yy0+bXV0ZXggb3IgcGxhbmUtPm11dGV4IGxvY2ssIEl0IG1heSBjYXVzZQo+PiBkZWFkbG9jawo+ PiB3aXRoIG90aGVyIGNvbW1pdHMuCj4+IEkgY2FuIGtlZXAgYSBjYWNoZWQgY29weSBvZiBwbGFu ZSBtZW1vcnkgYmFuZHdpZHRoIHJlcXVpcmVtZW50IGluCj4+ICJkZXZfcHJpdi0+d20uc2tsX2h3 IiwgYnV0IGFnYWluIGlmIHRoZXJlIGFyZSB0d28gcGFyYWxsZWwgY29tbWl0cwo+PiBpdAo+PiBt YXkgY2F1c2UgcmFjZS4KPj4KPj4gQ2FuIHlvdSBwbGVhc2Ugc3VnZ2VzdCB3aGF0IGlzIHRoZSBj b3JyZWN0IHdheSBvZiBnZXR0aW5nIHBsYW5lL2NydGMKPj4gc3RhdGUgZHVyaW5nIGNoZWNrIHBo YXNlIHdpdGhvdXQgaGF2ZSB0byBhY3R1YWxseSBjb21taXQgdGhlbSAoYWRkCj4+IGluCj4+IGds b2JhbC1zdGF0ZSksCj4+IElmIGFueSBzdWNoIHRoaW5nIGlzIGF2YWlsYWJsZSBpbiBhdG9taWMg ZnJhbWV3b3JrPwo+IEhvdyBvZnRlbiB3aWxsIHRoZSB3b3JrYXJvdW5kIHN0YXR1cyBjaGFuZ2Ug aW4gcHJhY3RpY2U/CkluIExpbnV4IHVzZS1jYXNlIHN0YXR1cyBjaGFuZ2VzIHZlcnkgcmFyZWx5 LCBJZiB3ZSBjb25uZWN0IG11bHRpcGxlIApoaWdoIHJlc29sdXRpb24gZGlzcGxheSAmIG91ciBE UkFNJ3MgYmFuZHdpZHRoIGlzIGxlc3Mgd2UgbWF5IGhhdmUgdG8gCmVuYWJsZSB0aGUgV0EuCiYg aXQnbGwgcmVtYWluIHRoZXJlIHVudGlsIGFueSBkaXNwbGF5IGluIHVucGx1Z2dlZCBPUiBhbnkg bW9kZXNldCB3aXRoIApsb3dlciByZXNvbHV0aW9uLgpPbiB0aGUgb3RoZXIgaGFuZCwgSW4gT1Mg d2l0aCBtdWx0aS1wbGFuZSBlbmFibGVkLCBXQSBtYXkgY2hhbmdlIGlmIGFueSAKcGxhbmUgaXMg ZW5hYmxlZC9kaXNhYmxlZCAoYmFzZWQgb24gdG90YWwgYmFuZHdpZHRoIHJlcXVpcmVtZW50IGZv ciBkaXNwbGF5KQo+IFlvdSBjb3VsZCBkbyBzYW1lIGFzIGFjdGl2ZV9jcnRjcywgcHJvdGVjdCBj aGFuZ2luZyB0aGUgd29ya2Fyb3VuZAo+IGN1cnJlbnQgY3J0YydzIHdvcmthcm91bmQgbW9kZSBp biBkZXZfcHJpdi0+d20uc2tsLndhX3N0YXRlW3BpcGVdIHdpdGgKPiBjb25uZWN0aW9uX211dGV4 LiBJZiB0aGlzIG1lYW5zIGNoYW5naW5nIHRoYXQgdGhlIGdsb2JhbCB3b3JrYXJvdW5kCj4gc2V0 dGluZyBpcyBjaGFuZ2VkLCB0aGVuIGFsc28gYWNxdWlyZSBhbGwgb3RoZXIgY3J0YyBzdGF0ZXMu ClRoaXMgaXMgbm90IHBlci1DUlRDIFdBLCB0aGlzIGlzIGNvbXBsZXRlIGRpc3BsYXktc3lzdGVt IGxldmVsIFdBLiAmIApkZXBlbmRzIHVwb24gdG90YWwgbWVtb3J5IHJlcXVpcmVtZW50IG9mIGRp c3BsYXkuCkFzIHlvdSBzdWdnZXN0ZWQgSSBjYW4ga2VlcCB0aGUgc3RhdHVzKGJhbmR3aWR0aCBy ZXF1aXJlbWVudCkgZm9yIGVhY2ggCnBpcGUgaW4gZGV2X3ByaXYtPndtLnNrbC53YV9zdGF0ZS9i YW5kd2lkdGhbcGlwZV0sIGFuZCBhY2Nlc3MgaXQgd2l0aCAKc29tZSBtdXRleC4KSXMgY29ubmVj dGlvbiBtdXRleCBpcyByaWdodCBtdXRleCB0byBob2xkLCB3aGF0IGFib3V0IHdtX211dGV4PwoK ClJlZ2FyZHMsCi1NYWhlc2gKPgo+IEkgY2FuJ3Qgc2F5IGl0J3MgcHJldHR5IHRob3VnaCwgaXQg d291bGQgbmVlZCBhIGdvb2QganVzdGlmaWNhdGlvbiBmb3IKPiBob3cgYmFkIHRoZSBwcm9ibGVt IGlzIGluIHByYWN0aWNlIHBsdXMgcHJldHR5IGdvb2QgZG9jdW1lbnRhdGlvbiBvbgo+IHdoeSBp dCB3b3Jrcy4KPgo+IH5NYWFydGVuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK