From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v10] drm/i915: Implement Link Rate fallback on Link training failure Date: Fri, 31 Mar 2017 13:33:04 +0300 Message-ID: <87k2753fdr.fsf@intel.com> References: <1489529511-7856-1-git-send-email-manasi.d.navare@intel.com> <20170322154436.GA17810@intel.com> <20170330225415.GL31477@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 467236EA76 for ; Fri, 31 Mar 2017 10:33:07 +0000 (UTC) In-Reply-To: <20170330225415.GL31477@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare , intel-gfx@lists.freedesktop.org Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAzMSBNYXIgMjAxNywgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVs LmNvbT4gd3JvdGU6Cj4gSGkgSmFuaSwKPgo+IEkgaGF2ZSByZXZpZXdlZCB5b3VyIHJlY2VudCBE UCBsaW5rIHJhdGUgLyBsYW5lIGNvdW50Cj4gcmVmYWN0b3JpbmcgcGF0Y2ggc2VyaWVzIGFuZCBJ IGJlbGlldmUgdGhhdCBpdCB3aWxsIHNvb24gZ2V0IG1lcmdlZC4KCkkgaGF2ZW4ndCByZWNlaXZl ZCByZXZpZXdzIG9uIGFsbCBvZiB0aGUgcGF0Y2hlcyBpbiBteSBzZXJpZXMgeWV0LCBpbgpwYXJ0 aWN1bGFyIHRoZSBmaXJzdCBwYXRjaGVzIGFyZSBtaXNzaW5nIHJldmlld3Mgc28gSSBjYW4ndCBl dmVuIGdldApzdGFydGVkIHB1c2hpbmcgdGhlbS4KCkJSLApKYW5pLgoKCj4KPiBBcmUgeW91IHdh aXRpbmcgb24gbWVyZ2luZyB0aGlzIHBhdGNoIHNvIHRoYXQgeW91ciByZWZhY3RvcmluZwo+IHNl cmllcyBnZXRzIG1lcmdlZCBmaXJzdD8gT3IgY2FuIHdlIG1lcmdlIHRoaXMgcGF0Y2ggc2luY2UK PiBpdCBhbHJlYWR5IGhhcyBBQ0tzIGFuZCBSLWJzLgo+Cj4gUGxlYXNlIGFkdmlzZSBvbiBuZXh0 IHN0ZXBzIGZvciB0aGlzIHBhdGNoLCBzaW5jZSBzb21lCj4gb2YgdGhlIFBTUiByZWxhdGVkIHBh dGNoZXMgYXJlIHBlbmRpbmcgbWVyZ2UgYmVjYXVzZSBvZiB0aGlzLgo+Cj4gUmVnYXJkcwo+IE1h bmFzaQo+Cj4KPiBPbiBXZWQsIE1hciAyMiwgMjAxNyBhdCAwODo0NDozNkFNIC0wNzAwLCBNYW5h c2kgTmF2YXJlIHdyb3RlOgo+PiBIaSBKYW5pL1ZpbGxlLAo+PiAKPj4gSSBuZWVkIHRvIGFkZCBh bm90aGVyIHF1aWNrIGZpeCB3aGljaCB3b3VsZCBiZSByZXF1aXJlZCBmb3IgdGhlIGZhbGxiYWNr Cj4+IHRvIGhhcHBlbiBhcyBleHBlY3RlZC4gU2hvdWxkIEkgcmVzcGluIHRoaXMgcGF0Y2ggdG8g YWRkIHRoYXQgZml4IG9yCj4+IHNob3VsZCBJIHdhaXQgZm9yIHRoaXMgdG8gZ2V0IGxhbmRlZD8K Pj4gCj4+IEkgaGF2ZSBtZW50aW9uZWQgdGhlIGZpeCBzdWdnZXN0ZWQgYmVsb3csIHBsZWFzZSBs ZXQgbWUga25vdyB5b3VyIHRob3VnaHRzIG9uIHRoYXQuCj4+IAo+PiAKPj4gT24gVHVlLCBNYXIg MTQsIDIwMTcgYXQgMDM6MTE6NTFQTSAtMDcwMCwgTWFuYXNpIE5hdmFyZSB3cm90ZToKPj4gPiBJ ZiBsaW5rIHRyYWluaW5nIGF0IGEgbGluayByYXRlIG9wdGltYWwgZm9yIGEgcGFydGljdWxhcgo+ PiA+IG1vZGUgZmFpbHMgZHVyaW5nIG1vZGVzZXQncyBhdG9taWMgY29tbWl0IHBoYXNlLCB0aGVu IHdlCj4+ID4gbGV0IHRoZSBtb2Rlc2V0IGNvbXBsZXRlIGFuZCB0aGVuIHJldHJ5LiBXZSBzYXZl IHRoZSBsaW5rIHJhdGUKPj4gPiB2YWx1ZSBhdCB3aGljaCBsaW5rIHRyYWluaW5nIGZhaWxlZCwg dXBkYXRlIHRoZSBsaW5rIHN0YXR1cyBwcm9wZXJ0eQo+PiA+IHRvICJCQUQiIGFuZCB1c2UgYSBs b3dlciBsaW5rIHJhdGUgdG8gcHJ1bmUgdGhlIG1vZGVzLiBJdCB3aWxsIHJlZG8KPj4gPiB0aGUg bW9kZXNldCBvbiB0aGUgY3VycmVudCBtb2RlIGF0IGxvd2VyIGxpbmsgcmF0ZSBvciBpZiB0aGUg Y3VycmVudAo+PiA+IG1vZGUgZ2V0cyBwcnVuZWQgZHVlIHRvIGxvd2VyIGxpbmsgY29uc3RyYWlu dHMgdGhlbiwgaXQgd2lsbCBzZW5kIGEKPj4gPiBob3RwbHVnIHVldmVudCBmb3IgdXNlcnNwYWNl IHRvIGhhbmRsZSBpdC4KPj4gPiAKPj4gPiBUaGlzIGlzIGFsc28gcmVxdWlyZWQgdG8gcGFzcyBE UCBDVFMgdGVzdHMgNC4zLjEuMywgNC4zLjEuNCwKPj4gPiA0LjMuMS42Lgo+PiA+IAo+PiA+IFRo aXMgcGF0Y2ggaXMgYSByZXNlbmQgb2YgdGhlIG9yaWdpbmFsIGNvbW1pdCBpZCAoMjMzY2U4ODFk ZDkxZmIKPj4gPiAiZHJtL2k5MTU6IEltcGxlbWVudCBMaW5rIFJhdGUgZmFsbGJhY2sgb24gTGlu ayB0cmFpbmluZyBmYWlsdXJlIikKPj4gPiB3aGljaCBnb3QgcmV2ZXJ0ZWQgaW4gdGhpcyBjb21t aXQgaWQgKGFmYzFlYmY0NTYyYTE0IFJldmVydAo+PiA+ICJkcm0vaTkxNTogSW1wbGVtZW50IExp bmsgUmF0ZSBmYWxsYmFjayBvbiBMaW5rIHRyYWluaW5nIGZhaWx1cmUiKQo+PiA+IGR1ZSB0byBD SSBmYWlsdXJlcy4KPj4gPiAKPj4gPiBBZnRlciBpbnZlc3RpZ2F0aW5nIHRoZSBDSSBmYWlsdXJl cyBpdCB3YXMgZm91bmQgdGhhdCB0aGVzZQo+PiA+IHdlcmUgZXNzZW50aWFsbHkgdGhlIGZhaWx1 cmVzIHdoaWNoIHdlcmUgYWx3YXlzIHRoZXJlIGJ1dCBoaWRkZW4gYmVjYXVzZQo+PiA+IHRoZXkg dXNlZCB0byBiZSBEUk1fREVCVUdfS01TIG1lc3NhZ2VzIGZvciBsaW5rIGZhaWx1cmVzIHNvIG5l dmVyIGdvdAo+PiA+IGNhdWdodCBieSBDSS4gQnV0IG5vdyB0aGlzIHBhdGNoIGFjdHVhbGx5IHRo cm93cyBEUk1fRVJST1IgaWYgdGhlIGxpbmsKPj4gPiB0cmFpbmluZyBmYWlscyBhdCBSQlIgYW5k IDEgbGFuZS4gU28gaXQgY2F1Z2h0IHRoZXNlIGxpbmsgdHJhaW4gZmFpbHVyZXMuCj4+ID4gCj4+ ID4gVGhlcmUgd2VyZSB0d28gZmFpbHVyZXM6Cj4+ID4gMS4gT24gU0tMIDY3MDBrIHRoaXMgd2Fz IGJlY2F1c2UgdGhlIG1hY2hpbmUgaW4gQ0kgbGFiIGlzIGEgU0tMIGRlc2t0b3AKPj4gPiB3aXRo b3V0IGVEUCBvbiBQb3J0IEEuIEJ1dCBvdXIgVkJUIGluaXRpYWxpemF0aW9uIGNvZGUgaW4gdGhl IGRyaXZlciB3cml0ZXMKPj4gPiBWQlQgZGVmYXVsdHMgaW4gYSB3YXkgdGhhdCBpdCBhbHdheXMg c2V0cyBEUCBmbGFnIG9uIFBvcnQgQSBhbmQgdGhpcyBkb2VzCj4+ID4gbm90IGdldCBjbGVhcmVk IGFmdGVyIHBhcnNpbmcgdGhlIFZCVCBvdXRwdXRzLiBUaGlzIGhhcyBiZWVuIGZpeGVkIGluCj4+ ID4gY29tbWl0IGlkIChiYjFkMTMyOTM1YzJmOCAiZHJtL2k5MTUvdmJ0OiBzcGxpdCBvdXQgZGVm YXVsdHMgdGhhdCBhcmUgc2V0Cj4+ID4gd2hlbiB0aGVyZSBpcyBubyBWQlQpIGFuZCAoNjY1Nzg4 NTcyYzY0MTBiICJkcm0vaTkxNS92YnQ6IGRvbid0IHByb3BhZ2F0ZQo+PiA+IGVycm9ycyBmcm9t IGludGVsX2Jpb3NfaW5pdCgpKQo+PiA+IAo+PiA+IDIuIE9uIElMSy02NTAgZGVza3RvcCAtIFRo aXMgd2FzIGhhcHBlbmluZyBiZWNhdXNlIG9mIGEgYmFkIG1vbml0b3IgZGVza3RvcAo+PiA+IGNv bWJpbmF0aW9uLiBJIHN3aXRjaGVkIHRoZSBtb25pdG9yIGluIHRoZSBDSSBsYWIgYW5kIHRoYXQg aGVscGVkIGdldCByaWQKPj4gPiBvZiB0aGUgbGluayBmYWlsdXJlcyBvbiBJTEsgc3lzdGVtLgo+ PiA+IAo+PiA+IHYxMDoKPj4gPiAqIFJlYmFzZSBvbiBkcm0tdGlwIGFuZCByZXNlbmQgYWZ0ZXIg cmV2ZXJ0Cj4+ID4gdjk6Cj4+ID4gKiBVc2UgdGhlIHRyaW1tZWQgbWF4IHZhbHVlcyBvZiBsaW5r IHJhdGUvbGFuZSBjb3VudCBiYXNlZCBvbgo+PiA+IGxpbmsgdHJhaW4gZmFsbGJhY2sgKERhbmll bCBWZXR0ZXIpCj4+ID4gdjg6Cj4+ID4gKiBTZXQgbGlua19zdGF0dXMgdG8gQkFEIGZpcnN0IGFu ZCB0aGVuIGNhbGwgbW9kZV92YWxpZCAoSmFuaSBOaWt1bGEpCj4+ID4gdjc6Cj4+ID4gUmVtb3Zl IHRoZSByZWR1bmRhbnQgdmFyaWFibGUgaW4gcHJldmlvdXMgcGF0Y2ggaXRzZWxmCj4+ID4gdjY6 Cj4+ID4gKiBPYnRhaW4gbGluayByYXRlIGluZGV4IGZyb20gZmFsbGJhY2tfbGlua19yYXRlIHVz aW5nCj4+ID4gdGhlIGhlbHBlciBpbnRlbF9kcF9saW5rX3JhdGVfaW5kZXggKEphbmkgTmlrdWxh KQo+PiA+ICogSW5jbHVkZSBmYWxsYmFjayB3aXRoaW4gaW50ZWxfZHBfc3RhcnRfbGlua190cmFp biAoSmFuaSBOaWt1bGEpCj4+ID4gdjU6Cj4+ID4gKiBNb3ZlIHNldCBsaW5rIHN0YXR1cyB0byBk cm0gY29yZSAoRGFuaWVsIFZldHRlciwgSmFuaSBOaWt1bGEpCj4+ID4gdjQ6Cj4+ID4gKiBBZGQg ZmFsbGJhY2sgc3VwcG9ydCBmb3Igbm9uIERESSBwbGF0Zm9ybXMgdG9vCj4+ID4gKiBTZXQgY29u bmVjdG9yLT5saW5rIHN0YXR1cyBpbnNpZGUgc2V0X2xpbmtfc3RhdHVzIGZ1bmN0aW9uCj4+ID4g KEphbmkgTmlrdWxhKQo+PiA+IHYzOgo+PiA+ICogU2V0IGxpbmsgc3RhdHVzIHByb3BlcnR5IHRv IEJBZCB1bmNvbmRpdGlvbmFsbHkgKEphbmkgTmlrdWxhKQo+PiA+ICogRG9udCB1c2UgdHdvIHNl cGFyYXRlIHZhcmlhYmxlcyBsaW5rX3RyYWluX2ZhaWxlZCBhbmQgbGlua19zdGF0dXMKPj4gPiB0 byBpbmRpY2F0ZSBzYW1lIHRoaW5nIChKYW5pIE5pa3VsYSkKPj4gPiB2MjoKPj4gPiAqIFNxdWFz aGVkIGEgZmV3IHBhdGNoZXMgKEphbmkgTmlrdWxhKQo+PiA+IAo+PiA+IEFja2VkLWJ5OiBUb255 IENoZW5nIDx0b255LmNoZW5nQGFtZC5jb20+Cj4+ID4gQWNrZWQtYnk6IEhhcnJ5IFdlbnRsYW5k IDxIYXJyeS53ZW50bGFuZEBhbWQuY29tPgo+PiA+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1 bGFAbGludXguaW50ZWwuY29tPgo+PiA+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVy QGludGVsLmNvbT4KPj4gPiBDYzogVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+Cj4+ID4gU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2 YXJlQGludGVsLmNvbT4KPj4gPiBSZXZpZXdlZC1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxh QGludGVsLmNvbT4KPj4gPiBTaWduZWQtb2ZmLWJ5OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFA aW50ZWwuY29tPgo+PiA+IC0tLQo+PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j ICAgICAgICAgICAgICAgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jIHwgMjIgKysrKysrKysr KysrKysrKysrKystLQo+PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAg ICAgICAgICAgfCAgMyArKysKPj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQo+PiA+IAo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiA+IGlu ZGV4IGZkOTZhNmMuLjg5NWY5MzQgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYwo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK Pj4gPiBAQCAtNTkyNCw2ICs1OTI0LDI5IEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yX3BvcnRf aW5mbyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPj4gPiAgCX0K Pj4gPiAgfQo+PiA+ICAKPj4gPiArc3RhdGljIHZvaWQgaW50ZWxfZHBfbW9kZXNldF9yZXRyeV93 b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPj4gPiArewo+PiA+ICsJc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yOwo+PiA+ICsJc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcjsKPj4gPiArCj4+ID4gKwlpbnRlbF9jb25uZWN0b3IgPSBjb250YWluZXJf b2Yod29yaywgdHlwZW9mKCppbnRlbF9jb25uZWN0b3IpLAo+PiA+ICsJCQkJICAgICAgIG1vZGVz ZXRfcmV0cnlfd29yayk7Cj4+ID4gKwljb25uZWN0b3IgPSAmaW50ZWxfY29ubmVjdG9yLT5iYXNl Owo+PiA+ICsJRFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc11cbiIsIGNvbm5lY3Rvci0+ YmFzZS5pZCwKPj4gPiArCQkgICAgICBjb25uZWN0b3ItPm5hbWUpOwo+PiA+ICsKPj4gPiArCS8q IEdyYWIgdGhlIGxvY2tzIGJlZm9yZSBjaGFuZ2luZyBjb25uZWN0b3IgcHJvcGVydHkqLwo+PiA+ ICsJbXV0ZXhfbG9jaygmY29ubmVjdG9yLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPj4gPiAr CS8qIFNldCBjb25uZWN0b3IgbGluayBzdGF0dXMgdG8gQkFEIGFuZCBzZW5kIGEgVWV2ZW50IHRv IG5vdGlmeQo+PiA+ICsJICogdXNlcnNwYWNlIHRvIGRvIGEgbW9kZXNldC4KPj4gPiArCSAqLwo+ PiA+ICsJZHJtX21vZGVfY29ubmVjdG9yX3NldF9saW5rX3N0YXR1c19wcm9wZXJ0eShjb25uZWN0 b3IsCj4+ID4gKwkJCQkJCSAgICBEUk1fTU9ERV9MSU5LX1NUQVRVU19CQUQpOwo+PiA+ICsJbXV0 ZXhfdW5sb2NrKCZjb25uZWN0b3ItPmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+PiA+ICsJLyog U2VuZCBIb3RwbHVnIHVldmVudCBzbyB1c2Vyc3BhY2UgY2FuIHJlcHJvYmUgKi8KPj4gPiArCWRy bV9rbXNfaGVscGVyX2hvdHBsdWdfZXZlbnQoY29ubmVjdG9yLT5kZXYpOwo+PiA+ICt9Cj4+ID4g Kwo+PiA+ICBib29sCj4+ID4gIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+PiA+ICAJCQlzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICppbnRlbF9jb25uZWN0b3IpCj4+ID4gQEAgLTU5MzYsNiArNTk1OSwxMCBAQCBpbnRlbF9k cF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCwKPj4gPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7Cj4+ID4gIAlp bnQgdHlwZTsKPj4gPiAgCj4+ID4gKwkvKiBJbml0aWFsaXplIHRoZSB3b3JrIGZvciBtb2Rlc2V0 IGluIGNhc2Ugb2YgbGluayB0cmFpbiBmYWlsdXJlICovCj4+ID4gKwlJTklUX1dPUksoJmludGVs X2Nvbm5lY3Rvci0+bW9kZXNldF9yZXRyeV93b3JrLAo+PiA+ICsJCSAgaW50ZWxfZHBfbW9kZXNl dF9yZXRyeV93b3JrX2ZuKTsKPj4gPiArCj4+ID4gIAlpZiAoV0FSTihpbnRlbF9kaWdfcG9ydC0+ bWF4X2xhbmVzIDwgMSwKPj4gPiAgCQkgIk5vdCBlbm91Z2ggbGFuZXMgKCVkKSBmb3IgRFAgb24g cG9ydCAlY1xuIiwKPj4gPiAgCQkgaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lcywgcG9ydF9uYW1l KHBvcnQpKSkKPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBf bGlua190cmFpbmluZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFp bmluZy5jCj4+ID4gaW5kZXggMDA0OGI1Mi4uOTU1YjIzOSAxMDA2NDQKPj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPj4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPj4gPiBAQCAtMzEzLDYg KzMxMywyNCBAQCB2b2lkIGludGVsX2RwX3N0b3BfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQo+PiA+ICB2b2lkCj4+ID4gIGludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKPj4gPiAgewo+PiA+IC0JaW50ZWxfZHBfbGlua190cmFp bmluZ19jbG9ja19yZWNvdmVyeShpbnRlbF9kcCk7Cj4+ID4gLQlpbnRlbF9kcF9saW5rX3RyYWlu aW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKGludGVsX2RwKTsKPj4gPiArCXN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IGludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3I7 Cj4+ID4gKwo+PiA+ICsJaWYgKCFpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5 KGludGVsX2RwKSkKPj4gPiArCQlnb3RvIGZhaWx1cmVfaGFuZGxpbmc7Cj4+ID4gKwlpZiAoIWlu dGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24oaW50ZWxfZHApKQo+PiA+ ICsJCWdvdG8gZmFpbHVyZV9oYW5kbGluZzsKPj4gPiArCj4+ID4gKwlEUk1fREVCVUdfS01TKCJM aW5rIFRyYWluaW5nIFBhc3NlZCBhdCBMaW5rIFJhdGUgPSAlZCwgTGFuZSBjb3VudCA9ICVkIiwK Pj4gPiArCQkgICAgICBpbnRlbF9kcC0+bGlua19yYXRlLCBpbnRlbF9kcC0+bGFuZV9jb3VudCk7 Cj4+ID4gKwlyZXR1cm47Cj4+ID4gKwo+PiA+ICsgZmFpbHVyZV9oYW5kbGluZzoKPj4gPiArCURS TV9ERUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgZmFpbGVkIGF0IGxpbmsgcmF0ZSA9ICVkLCBsYW5l IGNvdW50ID0gJWQiLAo+PiA+ICsJCSAgICAgIGludGVsX2RwLT5saW5rX3JhdGUsIGludGVsX2Rw LT5sYW5lX2NvdW50KTsKPj4gPiArCWlmICghaW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJh Y2tfdmFsdWVzKGludGVsX2RwLAo+PiA+ICsJCQkJCQkgICAgIGludGVsX2RwLT5saW5rX3JhdGUs Cj4+ID4gKwkJCQkJCSAgICAgaW50ZWxfZHAtPmxhbmVfY291bnQpKQo+PiA+ICsJCS8qIFNjaGVk dWxlIGEgSG90cGx1ZyBVZXZlbnQgdG8gdXNlcnNwYWNlIHRvIHN0YXJ0IG1vZGVzZXQgKi8KPj4g PiArCQlzY2hlZHVsZV93b3JrKCZpbnRlbF9jb25uZWN0b3ItPm1vZGVzZXRfcmV0cnlfd29yayk7 Cj4+IAo+PiBUaGlzIGlzIHdoZXJlIHRoZSBuZXcgYm9vbGVhbiBpbnRlbF9kcC0+dHJhaW5fc2V0 X3ZhbGlkIHdpbGwgaGF2ZSB0byBiZSBzZXQgdG8gZmFsc2Ugb24gZmFpbHVyZS4KPj4gVGhpcyBl bnN1cmVzIHRoYXQgd2UgZG9udCBlbmQgdXAgcmV0cmFpbmluZyBhdCB0aGUgc2FtZSBwYXJhbWV0 ZXJzIGluIGludGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVzKCkKPj4gCj4+IFNvIGluIGludGVsX2Rw X2NoZWNrLWxpbmtfc3RhdHVzICwganVzdCBiZWZvcmUgcmV0cmFpbmluZyBpdCB3aWxsIGFkZCBh IGNoZWNrLCAKPj4gaWYgKCFpbnRlbF9kcC0+dHJhaW5fc2V0X3ZhbGlkKQo+PiByZXR1cm47Cj4+ IAo+PiBWaWxsZS9KYW5pIHdoYXQgYXJlIHlvdXIgdGhvdWdodHMgb24gdGhpcz8KPj4gCj4+IFJl Z2FyZHMKPj4gTWFuYXNpCj4+IAo+PiA+ICsJcmV0dXJuOwo+PiA+ICB9Cj4+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPj4gPiBpbmRleCA1MTIyOGZlLi4wZmUxYWM4IDEwMDY0NAo+PiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gPiBAQCAtMzIxLDYgKzMyMSw5IEBAIHN0cnVjdCBp bnRlbF9jb25uZWN0b3Igewo+PiA+ICAJdm9pZCAqcG9ydDsgLyogc3RvcmUgdGhpcyBvcGFxdWUg YXMgaXRzIGlsbGVnYWwgdG8gZGVyZWZlcmVuY2UgaXQgKi8KPj4gPiAgCj4+ID4gIAlzdHJ1Y3Qg aW50ZWxfZHAgKm1zdF9wb3J0Owo+PiA+ICsKPj4gPiArCS8qIFdvcmsgc3RydWN0IHRvIHNjaGVk dWxlIGEgdWV2ZW50IG9uIGxpbmsgdHJhaW4gZmFpbHVyZSAqLwo+PiA+ICsJc3RydWN0IHdvcmtf c3RydWN0IG1vZGVzZXRfcmV0cnlfd29yazsKPj4gPiAgfTsKPj4gPiAgCj4+ID4gIHN0cnVjdCBk cGxsIHsKPj4gPiAtLSAKPj4gPiAyLjEuNAo+PiA+IAo+PiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+IElu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwg T3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==