From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sivakumar Thulasimani Subject: Re: [PATCH] drm/i915: DP link training optimization Date: Fri, 27 Feb 2015 16:29:02 +0530 Message-ID: <54F04DF6.5070401@intel.com> References: <1424942770-14493-1-git-send-email-mika.kahola@intel.com> <54EFC889.5000504@gmail.com> <87sidrajen.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 686FC6E8B2 for ; Fri, 27 Feb 2015 02:59:05 -0800 (PST) In-Reply-To: <87sidrajen.fsf@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 List-Id: intel-gfx@lists.freedesktop.org Ck9uIDIvMjcvMjAxNSAxOjE0IFBNLCBKYW5pIE5pa3VsYSB3cm90ZToKPiBPbiBGcmksIDI3IEZl YiAyMDE1LCBUb2RkIFByZXZpdGUgPHRwcmV2aXRlQGdtYWlsLmNvbT4gd3JvdGU6Cj4+IEhpIE1p a2EsCj4+Cj4+IE9uIDIvMjYvMjAxNSAyOjI2IEFNLCBNaWthIEthaG9sYSB3cm90ZToKPj4+IElu IGEgY2FzZSB3aGVuIERQIGxpbmsgaGFzIGJlZW4gb25jZSB0cmFpbmVkIHdlIGNhbiByZXVzZQo+ Pj4gdGhlIGV4aXN0aW5nIGxpbmsgdHJhaW5pbmcgcGFyYW1ldGVycyBpLmUuIHZvbHRhZ2Ugc3dp bmcKPj4+IGFuZCBwcmUtZW1waGFzaXMgbGV2ZWxzIGZyb20gY2FjaGUgd2hlbiB0aGVyZSBpcyBh IG5lZWQgdG8KPj4+IHJlc3RhcnQgbGluayB0cmFpbmluZy4gSW4gYSBjYXNlIG9mIGVEUCB3ZSBp bml0aWFsbHkgdHJ5Cj4+PiB0byB0cmFpbiB0aGUgbGluayBieSB1c2luZyB0aGUgcGFyYW1ldGVy IHNldCB0aGF0IHdlIGNhbiBmaW5kCj4+PiBmcm9tIFZCVC4gVGhlIGZhbGxiYWNrIG9uIGJvdGgg Y2FzZXMgaXMgdG8gcmVzZXQgdGhlIGxpbmsKPj4+IHRyYWluaW5nIHBhcmFtZXRlcnMgYW5kIHJl c3RhcnQuCj4+IEkgdGhpbmsgeW91IGhhdmUgYSBnb29kIGlkZWEgaGVyZSBmb3IgdGhlIGVEUCBj YXNlLiBCdXQgdGhlIHdheSBpdCdzCj4+IGNvZGVkLCB0aGVyZSBhcHBlYXIgdG8gYmUgY2FzZXMg d2hlcmUgdGhlIGNvZGUgd2lsbCB0cnkgdG8gcmV1c2UgdGhlCj4+IHNhbWUgdHJhaW5pbmcgc2V0 dGluZ3MgZm9yIHJlZ3VsYXIgRFAgYXMgd2VsbC4gVGhhdCB3aWxsIGxpa2VseSBoYXZlCj4+IHNv bWUgdW5mb3J0dW5hdGUgcmVzdWx0cywgYXMgdGhlcmUncyBubyBndWFyYW50ZWUgZm9yIGEgbm9y bWFsIGV4dGVybmFsCj4+IERpc3BsYXlwb3J0IGNvbm5lY3Rpb24gdGhhdCB0cmFpbmluZyBzZXR0 aW5ncyB3aGljaCB3b3JrZWQgb25jZSB3aWxsCj4+IHdvcmsgdGhlIG5leHQgdGltZS4gVGhpcyB3 b3VsZCBiZSBvZiBwYXJ0aWN1bGFyIGNvbmNlcm4gd2hlbgo+PiBkaXNjb25uZWN0aW5nIGFuZCBy ZWNvbm5lY3RpbmcgRGlzcGxheXBvcnQgc2luayBkZXZpY2VzLCBhcyBpdCBhcHBlYXJzCj4+IGFz IHRob3VnaCBpdCB3b3VsZCB0cnkgdG8gcmV0cmFpbiB0aGUgbmV3bHkgY29ubmVjdGVkIGRldmlj ZSB1c2luZyB0aGUKPj4gcHJldmlvdXNseSB2YWxpZCBzZXR0aW5ncyBmb3IgdGhlIG9sZCBkZXZp Y2UuCj4gSG1tLCBJIHRob3VnaHQgaXQgd291bGQgYmUgYWxsIHJpZ2h0IG9uIGV4dGVybmFsIERQ IGFsc28gaWYgd2UgZW5zdXJlIHdlCj4gcmVzZXQgdGhlIHRyYWluIHNldCB3aGVuIHRoZSBzaW5r IG1heSBoYXZlIGNoYW5nZWQsIGkuZS4gYXQgc3VzcGVuZCBhbmQKPiBob3RwbHVnLgo+Cj4gQlIs Cj4gSmFuaS4KVGhvdWdoIFZCVCBmaWVsZHMgZm9yIEZhc3QgTGluayBUcmFpbmluZyBoYXMgYmVl biBhdmFpbGFibGUgZm9yIGEgbG9uZyAKdGltZSBpdCB3YXMgbm90IGFsd2F5cyBmaWxsZWQgYW5k IHRoZXJlIHdhcyBubyB3YXkgdG8ga25vdyBpZiB0aGUgdmFsdWVzIAppbiBWQlQgYXJlIHZhbGlk IG9yIG5vdC4gSGVuY2UgaXQgaXMgbW9yZSB0aGFuIGxpa2VseSB0byBiZSBlbnRlcmluZyB0aGUg CmZhaWxpbmcgY29uZGl0aW9uLiBUaGVyZSB3YXMgYSBmaWVsZCBhZGRlZCBpbiBCRFcgdGltZWxp bmUgdG8gc2F5IGlmIHRoZSAKVkJUIGZpZWxkcyBmb3IgRkxUIHZhbHVlcyBpcyB2YWxpZCBvciBu b3QsIHNvIHBsZWFzZSB1c2UgdGhlbSBvbmx5IGFmdGVyIApzdWNoIGEgY2hlY2suCgpyZWdhcmRz LApTaXZha3VtYXIKPgo+PiBJTUhPLCB0aGlzIHJlYWxseSBuZWVkcyB0byBiZSB3cml0dGVuIGFz IGVEUCBvbmx5IGFuZCBzdWNoIHRoYXQgaXQgY2FuCj4+IG5ldmVyIG9jY3VyIG9uIGFuIGV4dGVy bmFsIERpc3BsYXlwb3J0IGRldmljZS4gT3RoZXJ3aXNlLCBpdCBzZWVtcyBsaWtlCj4+IHRoZXJl J3MgYSBnb29kIGNoYW5jZSBvZiBlbmRpbmcgdXAgd2l0aCBhIGJsYWNrIHNjcmVlbiB3aGVuIHlv dSBwbHVnIGluCj4+IGEgRGlzcGxheXBvcnQgbW9uaXRvci4KPj4KPj4+IFNpZ25lZC1vZmYtYnk6 IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+Cj4+PiAtLS0KPj4+ICAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgIHwgOTMgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg fCAgMSArCj4+PiAgICAyIGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0 aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+Pj4gaW5kZXggZDExNDFkMy4u ODQ4MmY1OCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4+IEBAIC0zMjg4LDgg KzMyODgsMzkgQEAgc3RhdGljIGJvb2wKPj4+ICAgIGludGVsX2RwX3Jlc2V0X2xpbmtfdHJhaW4o c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdWludDMyX3QgKkRQLAo+Pj4gICAgCQkJdWludDhf dCBkcF90cmFpbl9wYXQpCj4+PiAgICB7Cj4+PiAtCW1lbXNldChpbnRlbF9kcC0+dHJhaW5fc2V0 LCAwLCBzaXplb2YoaW50ZWxfZHAtPnRyYWluX3NldCkpOwo+Pj4gKwlzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPj4+ ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2 Owo+Pj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+Pj4gKwlpbnQgaTsKPj4+ICsKPj4+ICsJLyogaW4gY2FzZSBvZiBlRFAsIGdldCBsaW5r IHRyYWluaW5nIHBhcmFtZXRlcnMgZnJvbSBWQlQgKi8KPj4+ICsJaWYgKGlzX2VkcChpbnRlbF9k cCkpIHsKPj4+ICsJCWZvciAoaT0wOyBpPGludGVsX2RwLT5sYW5lX2NvdW50OyBpKyspCj4+PiAr CQkJaW50ZWxfZHAtPnRyYWluX3NldFtpXSA9ICBkZXZfcHJpdi0+dmJ0LmVkcF92c3dpbmcgfCBk ZXZfcHJpdi0+dmJ0LmVkcF9wcmVlbXBoYXNpczsKPj4+ICsJfQo+Pj4gKwllbHNlCj4+PiArCQlt ZW1zZXQoaW50ZWxfZHAtPnRyYWluX3NldCwgMCwgc2l6ZW9mKGludGVsX2RwLT50cmFpbl9zZXQp KTsKPj4+ICsKPj4+ICsJaW50ZWxfZHBfc2V0X3NpZ25hbF9sZXZlbHMoaW50ZWxfZHAsIERQKTsK Pj4+ICsJcmV0dXJuIGludGVsX2RwX3NldF9saW5rX3RyYWluKGludGVsX2RwLCBEUCwgZHBfdHJh aW5fcGF0KTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGJvb2wKPj4+ICtpbnRlbF9kcF9yZXVz ZV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHVpbnQzMl90ICpEUCwKPj4+ ICsJCQkgIHVpbnQ4X3QgZHBfdHJhaW5fcGF0KQo+Pj4gK3sKPj4+ICsJc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4+ PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRl djsKPj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPj4+ICsKPj4+ICAgIAlpbnRlbF9kcF9zZXRfc2lnbmFsX2xldmVscyhpbnRlbF9kcCwg RFApOwo+Pj4gKwo+Pj4gKwlJOTE1X1dSSVRFKGludGVsX2RwLT5vdXRwdXRfcmVnLCAqRFApOwo+ Pj4gKwlQT1NUSU5HX1JFQUQoaW50ZWxfZHAtPm91dHB1dF9yZWcpOwo+Pj4gKwo+Pj4gKwlkcm1f ZHBfZHBjZF93cml0ZSgmaW50ZWxfZHAtPmF1eCwgRFBfVFJBSU5JTkdfTEFORTBfU0VULAo+Pj4g KwkJCSAgaW50ZWxfZHAtPnRyYWluX3NldCwgaW50ZWxfZHAtPmxhbmVfY291bnQpOwo+Pj4gKwo+ Pj4gICAgCXJldHVybiBpbnRlbF9kcF9zZXRfbGlua190cmFpbihpbnRlbF9kcCwgRFAsIGRwX3Ry YWluX3BhdCk7Cj4+PiAgICB9Cj4+PiAgICAKPj4gSSdtIG5vdCBzdXJlIHlvdSB3YW50IHRvIGJl IHVwZGF0aW5nIHRoZSBzaW5rIGRldmljZSBhdCB0aGlzIHBvaW50LiBUaGlzCj4+IHNob3VsZCBi ZSBjaGVja2VkIGFnYWluc3QgdGhlIHNwZWMgdG8gYmUgc3VyZSBpdCdzIG5vdCBvdXQgb2Ygc2Vx dWVuY2UuCj4+Cj4+PiBAQCAtMzM1Niw2ICszMzg3LDggQEAgaW50ZWxfZHBfc3RhcnRfbGlua190 cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+Pj4gICAgCWludCB2b2x0YWdlX3RyaWVz LCBsb29wX3RyaWVzOwo+Pj4gICAgCXVpbnQzMl90IERQID0gaW50ZWxfZHAtPkRQOwo+Pj4gICAg CXVpbnQ4X3QgbGlua19jb25maWdbMl07Cj4+PiArCXVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElO S19TVEFUVVNfU0laRV07Cj4+PiArCWJvb2wgcmV1c2VfdHJhaW5fc2V0ID0gZmFsc2U7Cj4+PiAg ICAKPj4+ICAgIAlpZiAoSEFTX0RESShkZXYpKQo+Pj4gICAgCQlpbnRlbF9kZGlfcHJlcGFyZV9s aW5rX3JldHJhaW4oZW5jb2Rlcik7Cj4+PiBAQCAtMzM3MywyMCArMzQwNiw0NCBAQCBpbnRlbF9k cF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+PiAgICAKPj4+ ICAgIAlEUCB8PSBEUF9QT1JUX0VOOwo+Pj4gICAgCj4+PiAtCS8qIGNsb2NrIHJlY292ZXJ5ICov Cj4+PiAtCWlmICghaW50ZWxfZHBfcmVzZXRfbGlua190cmFpbihpbnRlbF9kcCwgJkRQLAo+Pj4g LQkJCQkgICAgICAgRFBfVFJBSU5JTkdfUEFUVEVSTl8xIHwKPj4+IC0JCQkJICAgICAgIERQX0xJ TktfU0NSQU1CTElOR19ESVNBQkxFKSkgewo+Pj4gLQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZW5h YmxlIGxpbmsgdHJhaW5pbmdcbiIpOwo+Pj4gLQkJcmV0dXJuOwo+Pj4gKwkvKgo+Pj4gKwkgKiBj aGVjayBpZiBEUCBoYXMgYWxyZWFkeSB0cmFpbmVkLiBSZXNldCB2b2x0YWdlIHN3aW5nIGFuZAo+ Pj4gKwkgKiBwcmUtZW1waGFzaXMgbGV2ZWxzIGlmIHRoYXQncyBub3QgdGhlIGNhc2UuCj4+PiAr CSAqLwo+Pj4gKwlpZiAoaW50ZWxfZHAtPmxpbmtfdHJhaW5lZCkgewo+Pj4gKwkJaWYgKCFpbnRl bF9kcF9yZXVzZV9saW5rX3RyYWluKGludGVsX2RwLCAmRFAsCj4+PiArCQkJCQkgICAgICAgRFBf VFJBSU5JTkdfUEFUVEVSTl8xIHwKPj4+ICsJCQkJCSAgICAgICBEUF9MSU5LX1NDUkFNQkxJTkdf RElTQUJMRSkpIHsKPj4+ICsJCQlEUk1fREVCVUdfS01TKCJ1bmFibGUgdG8gc2V0IGtub3duIGxp bmsgdHJhaW5pbmcgdmFsdWVzXG4iKTsKPj4+ICsJCQlyZXR1cm47Cj4+PiArCQl9Cj4+PiArCQlE Uk1fREVCVUdfS01TKCJyZXVzZSBjdXJyZW50IGxpbmsgdHJhaW4gc2V0XG4iKTsKPj4+ICsJCXJl dXNlX3RyYWluX3NldCA9IHRydWU7Cj4+PiArCX0KPj4+ICsJZWxzZSB7Cj4+PiArCQkvKiByZXNl dCBsaW5rIHRyYWluaW5nIHZhbHVlcyAqLwo+Pj4gKwkJaWYgKCFpbnRlbF9kcF9yZXNldF9saW5r X3RyYWluKGludGVsX2RwLCAmRFAsCj4+PiArCQkJCQkgICAgICAgRFBfVFJBSU5JTkdfUEFUVEVS Tl8xIHwKPj4+ICsJCQkJCSAgICAgICBEUF9MSU5LX1NDUkFNQkxJTkdfRElTQUJMRSkpIHsKPj4+ ICsJCQlEUk1fRVJST1IoImZhaWxlZCB0byBlbmFibGUgbGluayB0cmFpbmluZ1xuIik7Cj4+PiAr CQkJcmV0dXJuOwo+Pj4gKwkJfQo+Pj4gKwkJRFJNX0RFQlVHX0tNUygicmVzZXQgbGluayB0cmFp biBzZXRcbiIpOwo+Pj4gKwo+Pj4gKwkJLyoKPj4+ICsJCSAqIGluIGNhc2Ugb2YgZURQLCBhbGxv dyBmYWxsYmFjayB0byByZXNldCBsaW5rIHRyYWluaW5nIHNldAo+Pj4gKwkJICogaWYgVkJUIHBh cmFtZXRlcnMgZG9lc24ndCBhcHBseQo+Pj4gKwkJICovCj4+PiArCQlpZiAoaXNfZWRwKGludGVs X2RwKSkKPj4+ICsJCQlyZXVzZV90cmFpbl9zZXQgPSB0cnVlOwo+Pj4gKwkJZWxzZQo+Pj4gKwkJ CXJldXNlX3RyYWluX3NldCA9IGZhbHNlOwo+Pj4gICAgCX0KPj4+ICAgIAo+Pj4gICAgCXZvbHRh Z2UgPSAweGZmOwo+Pj4gICAgCXZvbHRhZ2VfdHJpZXMgPSAwOwo+Pj4gICAgCWxvb3BfdHJpZXMg PSAwOwo+Pj4gICAgCWZvciAoOzspIHsKPj4+IC0JCXVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElO S19TVEFUVVNfU0laRV07Cj4+PiAtCj4+PiAgICAJCWRybV9kcF9saW5rX3RyYWluX2Nsb2NrX3Jl Y292ZXJ5X2RlbGF5KGludGVsX2RwLT5kcGNkKTsKPj4+ICAgIAkJaWYgKCFpbnRlbF9kcF9nZXRf bGlua19zdGF0dXMoaW50ZWxfZHAsIGxpbmtfc3RhdHVzKSkgewo+Pj4gICAgCQkJRFJNX0VSUk9S KCJmYWlsZWQgdG8gZ2V0IGxpbmsgc3RhdHVzXG4iKTsKPj4+IEBAIC0zMzk3LDYgKzM0NTQsMjAg QEAgaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ Pj4gICAgCQkJRFJNX0RFQlVHX0tNUygiY2xvY2sgcmVjb3ZlcnkgT0tcbiIpOwo+Pj4gICAgCQkJ YnJlYWs7Cj4+PiAgICAJCX0KPj4+ICsJCS8qCj4+PiArCQkgKiBpZiB3ZSB1c2VkIHByZXZpb3Vz bHkgdHJhaW5lZCB2b2x0YWdlIGFuZCBwcmUtZW1waGFzaXMgdmFsdWVzCj4+PiArCQkgKiBhbmQg d2UgZG9uJ3QgZ2V0IGNsb2NrIHJlY292ZXJ5LCByZXNldCBsaW5rIHRyYWluaW5nIHZhbHVlcwo+ Pj4gKwkJICovCj4+PiArCQlpZiAocmV1c2VfdHJhaW5fc2V0KSB7Cj4+PiArCQkJRFJNX0RFQlVH X0tNUygiY2xvY2sgcmVjb3Zlcnkgbm90IG9rLCByZXNldHRpbmcgRFAgdHJhaW4gc2V0XG4iKTsK Pj4+ICsJCQlpZiAoIWludGVsX2RwX3Jlc2V0X2xpbmtfdHJhaW4oaW50ZWxfZHAsICZEUCwKPj4+ ICsJCQkJCQkgICAgICAgRFBfVFJBSU5JTkdfUEFUVEVSTl8xIHwKPj4+ICsJCQkJCQkgICAgICAg RFBfTElOS19TQ1JBTUJMSU5HX0RJU0FCTEUpKSB7Cj4+PiArCQkJCURSTV9FUlJPUigiZmFpbGVk IHRvIGVuYWJsZSBsaW5rIHRyYWluaW5nXG4iKTsKPj4+ICsJCQkJcmV0dXJuOwo+Pj4gKwkJCX0K Pj4+ICsJCQlyZXVzZV90cmFpbl9zZXQgPSBmYWxzZTsKPj4+ICsJCX0KPj4+ICAgIAo+Pj4gICAg CQkvKiBDaGVjayB0byBzZWUgaWYgd2UndmUgdHJpZWQgdGhlIG1heCB2b2x0YWdlICovCj4+PiAg ICAJCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9kcC0+bGFuZV9jb3VudDsgaSsrKQo+Pj4gQEAgLTM1 MTEsOCArMzU4MiwxMCBAQCBpbnRlbF9kcF9jb21wbGV0ZV9saW5rX3RyYWluKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4+PiAgICAKPj4+ICAgIAlpbnRlbF9kcC0+RFAgPSBEUDsKPj4+ICAg IAo+Pj4gLQlpZiAoY2hhbm5lbF9lcSkKPj4+ICsJaWYgKGNoYW5uZWxfZXEpIHsKPj4+ICAgIAkJ RFJNX0RFQlVHX0tNUygiQ2hhbm5lbCBFUSBkb25lLiBEUCBUcmFpbmluZyBzdWNjZXNzZnVsXG4i KTsKPj4+ICsJCWludGVsX2RwLT5saW5rX3RyYWluZWQgPSB0cnVlOwo+PiBUaGUgbGlua190cmFp bmVkIGZsYWcgaXMgc2V0IGhlcmUgYnV0IG5ldmVyIGluaXRpYWxpemVkIG9yIGNsZWFyZWQKPj4g YW55d2hlcmUgZWxzZS4gU28gaXQgbG9va3MgbGlrZSBvbmNlIGl0J3Mgc2V0LCBpdCdzIHRoZXJl IGZvcmV2ZXIuIFRoYXQKPj4gYmVpbmcgdGhlIGNhc2UsIHRoaXMgY29kZSB3b3VsZCBuZXZlciBo aXQgdGhlIGVsc2UoKSBjYXNlIHdoZXJlCj4+IGludGVsX2RwLT5saW5rX3RyYWluZWQgaXMgY2hl Y2tlZCBmdXJ0aGVyIHVwLiBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIG5vdAo+PiB3aGF0IHlvdSBp bnRlbmRlZC4uLiA6KQo+Pgo+Pj4gKwl9Cj4+PiAgICAKPj4+ICAgIH0KPj4+ICAgIAo+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+IGluZGV4IDFmYjE1MjkuLjMyZWNlMGQgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+IEBAIC02NjgsNiArNjY4LDcgQEAgc3RydWN0 IGludGVsX2RwIHsKPj4+ICAgIAkJCQkgICAgIGJvb2wgaGFzX2F1eF9pcnEsCj4+PiAgICAJCQkJ ICAgICBpbnQgc2VuZF9ieXRlcywKPj4+ICAgIAkJCQkgICAgIHVpbnQzMl90IGF1eF9jbG9ja19k aXZpZGVyKTsKPj4+ICsJYm9vbCBsaW5rX3RyYWluZWQ7IC8qIGZsYWcgdG8gaW5kaWNhdGUgaWYg RFAgbGluayBoYXMgYmVlbiB0cmFpbmVkIG9yIG5vdCAqLwo+Pj4gICAgfTsKPj4+ICAgIAo+Pj4g ICAgc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCB7Cj4+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCj4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4gSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=