From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v2 4/4] drm/i915: Implement Link Rate fallback on Link training failure Date: Tue, 1 Nov 2016 12:34:37 -0700 Message-ID: <20161101193437.GA21605@intel.com> References: <1477703245-27375-1-git-send-email-manasi.d.navare@intel.com> <1477703245-27375-5-git-send-email-manasi.d.navare@intel.com> <87shrbk2k5.fsf@intel.com> <20161101162623.GA21517@intel.com> <87a8djj9ir.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9F2036E283 for ; Tue, 1 Nov 2016 19:32:52 +0000 (UTC) Content-Disposition: inline In-Reply-To: <87a8djj9ir.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: Jani Nikula Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBOb3YgMDEsIDIwMTYgYXQgMDk6MTY6MjhQTSArMDIwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gVHVlLCAwMSBOb3YgMjAxNiwgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJl QGludGVsLmNvbT4gd3JvdGU6Cj4gPiBPbiBUdWUsIE5vdiAwMSwgMjAxNiBhdCAxMDo0OToxNEFN ICswMjAwLCBKYW5pIE5pa3VsYSB3cm90ZToKPiA+PiBPbiBTYXQsIDI5IE9jdCAyMDE2LCBNYW5h c2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPiB3cm90ZToKPiA+PiA+IElmIGxp bmsgdHJhaW5pbmcgYXQgYSBsaW5rIHJhdGUgb3B0aW1hbCBmb3IgYSBwYXJ0aWN1bGFyCj4gPj4g PiBtb2RlIGZhaWxzIGR1cmluZyBtb2Rlc2V0J3MgYXRvbWljIGNvbW1pdCBwaGFzZSwgdGhlbiB3 ZQo+ID4+ID4gbGV0IHRoZSBtb2Rlc2V0IGNvbXBsZXRlIGFuZCB0aGVuIHJldHJ5LiBXZSBzYXZl IHRoZSBsaW5rIHJhdGUKPiA+PiA+IHZhbHVlIGF0IHdoaWNoIGxpbmsgdHJhaW5pbmcgZmFpbGVk LCB1cGRhdGUgdGhlIGxpbmsgc3RhdHVzIHByb3BlcnR5Cj4gPj4gPiB0byAiQkFEIiBhbmQgdXNl IGEgbG93ZXIgbGluayByYXRlIHRvIHBydW5lIHRoZSBtb2Rlcy4gSXQgd2lsbCByZWRvCj4gPj4g PiB0aGUgbW9kZXNldCBvbiB0aGUgY3VycmVudCBtb2RlIGF0IGxvd2VyIGxpbmsgcmF0ZSBvciBp ZiB0aGUgY3VycmVudAo+ID4+ID4gbW9kZSBnZXRzIHBydW5lZCBkdWUgdG8gbG93ZXIgbGluayBj b25zdHJhaW50cyB0aGVuLCBpdCB3aWxsIHNlbmQgYQo+ID4+ID4gaG90cGx1ZyB1ZXZlbnQgZm9y IHVzZXJzcGFjZSB0byBoYW5kbGUgaXQuCj4gPj4gPgo+ID4+ID4gVGhpcyBpcyBhbHNvIHJlcXVp cmVkIHRvIHBhc3MgRFAgQ1RTIHRlc3RzIDQuMy4xLjMsIDQuMy4xLjQsCj4gPj4gPiA0LjMuMS42 Lgo+ID4+ID4KPiA+PiA+IHYyOgo+ID4+ID4gKiBTcXVhc2hlZCBhIGZldyBwYXRjaGVzIChKYW5p IE5pa3VsYSkKPiA+PiA+Cj4gPj4gPiBDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxpbnV4 LmludGVsLmNvbT4KPiA+PiA+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVs LmNvbT4KPiA+PiA+IENjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbT4KPiA+PiA+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFy ZUBpbnRlbC5jb20+Cj4gPj4gPiAtLS0KPiA+PiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Y19oZWxwZXIuYyAgICAgICAgICAgfCAgNCArKwo+ID4+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jICAgICAgICAgICAgICB8IDIzICsrKysrKysrLQo+ID4+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgICAgICAgICB8IDc0ICsrKysrKysrKysrKysr KysrKysrKysrKystLQo+ID4+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtf dHJhaW5pbmcuYyB8IDEyICsrKy0tCj4gPj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggICAgICAgICAgICAgIHwgIDUgKy0KPiA+PiA+ICA1IGZpbGVzIGNoYW5nZWQsIDExMCBp bnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+ID4+ID4KPiA+PiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljX2hlbHBlci5jCj4gPj4gPiBpbmRleCA3NWFkMDFkLi5hM2RmM2E0IDEwMDY0NAo+ID4+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiA+PiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPj4gPiBAQCAtNTE5LDYgKzUx OSwxMCBAQCBzdGF0aWMgaW50IGhhbmRsZV9jb25mbGljdGluZ19lbmNvZGVycyhzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gPj4gPiAgCQkJCQkgICAgICAgY29ubmVjdG9yX3N0YXRl KTsKPiA+PiA+ICAJCWlmIChyZXQpCj4gPj4gPiAgCQkJcmV0dXJuIHJldDsKPiA+PiA+ICsKPiA+ PiA+ICsJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0 YXRlLCBjb25uZWN0b3ItPnN0YXRlLT5jcnRjKTsKPiA+PiA+ICsJCWlmIChjb25uZWN0b3ItPmxp bmtfc3RhdHVzID09IERSTV9NT0RFX0xJTktfU1RBVFVTX0JBRCkKPiA+PiA+ICsJCQljcnRjX3N0 YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQgPSB0cnVlOwo+ID4+ID4gIAl9Cj4gPj4gPiAgCj4gPj4g PiAgCS8qCj4gPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRp LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4+ID4gaW5kZXggOTM4YWM0 ZC4uMzE5ZWVjYSAxMDA2NDQKPiA+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RkaS5jCj4gPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4+ ID4gQEAgLTE2ODQsNiArMTY4NCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxl X2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4+ID4gIAlzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPiA+PiA+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNl LmRldik7Cj4gPj4gPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGRpX2dldF9lbmNvZGVyX3Bv cnQoZW5jb2Rlcik7Cj4gPj4gPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5l Y3RvciA9IGludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3I7Cj4gPj4gPiArCXN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50ZWxfY29ubmVjdG9yLT5iYXNlOwo+ID4+ID4gIAo+ ID4+ID4gIAlpbnRlbF9kcF9zZXRfbGlua19wYXJhbXMoaW50ZWxfZHAsIGxpbmtfcmF0ZSwgbGFu ZV9jb3VudCwKPiA+PiA+ICAJCQkJIGxpbmtfbXN0KTsKPiA+PiA+IEBAIC0xNjk0LDcgKzE2OTYs MjYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gPj4gPiAgCWludGVsX3ByZXBhcmVfZHBfZGRpX2J1ZmZlcnMoZW5j b2Rlcik7Cj4gPj4gPiAgCWludGVsX2RkaV9pbml0X2RwX2J1Zl9yZWcoZW5jb2Rlcik7Cj4gPj4g PiAgCWludGVsX2RwX3NpbmtfZHBtcyhpbnRlbF9kcCwgRFJNX01PREVfRFBNU19PTik7Cj4gPj4g PiAtCWludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ID4+ID4gKwlpZiAoIWlu dGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oaW50ZWxfZHApKSB7Cj4gPj4gPiArCQlEUk1fREVCVUdf S01TKCJMaW5rIFRyYWluaW5nIGZhaWxlZCBhdCBsaW5rIHJhdGUgPSAlZCwgbGFuZSBjb3VudCA9 ICVkIiwKPiA+PiA+ICsJCQkgICAgICBsaW5rX3JhdGUsIGxhbmVfY291bnQpOwo+ID4+ID4gKwkJ aW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkID0gdHJ1ZTsKPiA+PiA+ICsJCWludGVsX2RwX2dl dF9saW5rX3RyYWluX2ZhbGxiYWNrX3ZhbHVlcyhpbnRlbF9kcCwgbGlua19yYXRlLAo+ID4+ID4g KwkJCQkJCQlsYW5lX2NvdW50KTsKPiA+PiA+ICsJCS8qIFNjaGVkdWxlIGEgSG90cGx1ZyBVZXZl bnQgdG8gdXNlcnNwYWNlIHRvIHN0YXJ0IG1vZGVzZXQgKi8KPiA+PiA+ICsJCXNjaGVkdWxlX3dv cmsoJmludGVsX2Nvbm5lY3Rvci0+bW9kZXNldF9yZXRyeV93b3JrKTsKPiA+PiAKPiA+PiBUaGlz IGlzIG5vdCBqdXN0IGFib3V0IERESS4gTmVlZCB0byBkbyB0aGlzIGZvciB0aGUgb3RoZXIgY2Fz ZXMgdG9vLgo+ID4+Cj4gPgo+ID4gWWVzLCBmaXJzdCBzZXJpZXMgd2lsbCBnIG91dCBmb3IgYWRk aW5nIHRoaXMgc3VwcG9ydCBmb3IgRERJLCB0aGVuIG1vcmUgcGF0Y2hlcwo+ID4gdG8gZXhwYW5k IGl0IHRvIG5vbiBEREkgcGxhdGZvcm1zLgo+ID4KPiA+ICAKPiA+PiA+ICsJfSBlbHNlIHsKPiA+ PiA+ICsJCURSTV9ERUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgUGFzc2VkIGF0IExpbmsgUmF0ZSA9 ICVkLCBMYW5lIGNvdW50ID0gJWQiLAo+ID4+ID4gKwkJCSAgICAgIGxpbmtfcmF0ZSwgbGFuZV9j b3VudCk7Cj4gPj4gPiArCQlpbnRlbF9kcC0+bGlua190cmFpbl9mYWlsZWQgPSBmYWxzZTsKPiA+ PiA+ICsJCWludGVsX2RwLT5mYWxsYmFja19saW5rX3JhdGVfaW5kZXggPSAtMTsKPiA+PiA+ICsJ CWludGVsX2RwLT5mYWxsYmFja19saW5rX3JhdGUgPSAwOwo+ID4+ID4gKwkJaW50ZWxfZHAtPmZh bGxiYWNrX2xhbmVfY291bnQgPSAwOwo+ID4+ID4gKwkJY29ubmVjdG9yLT5saW5rX3N0YXR1cyA9 IERSTV9NT0RFX0xJTktfU1RBVFVTX0dPT0Q7Cj4gPj4gPiArCQlpbnRlbF9kcF9zZXRfbGlua19z dGF0dXNfcHJvcGVydHkoY29ubmVjdG9yLAo+ID4+ID4gKwkJCQkJCSAgRFJNX01PREVfTElOS19T VEFUVVNfR09PRCk7Cj4gPj4gCj4gPj4gTG9va3MgbGlrZSB5b3UgbmV2ZXIgYWN0dWFsbHkgcmVh ZCBjb25uZWN0b3ItPmxpbmtfc3RhdHVzLi4uIFdoeSBkbyB5b3UKPiA+PiBuZWVkIGJvdGggY29u bmVjdG9yLT5saW5rX3N0YXR1cyBhbmQgaW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkPyBEbyB5 b3UKPiA+PiB0aGluayB5b3UgaGF2ZSA0IHN0YXRlcz8gV2hhdCBhcmUgdGhleT8gQ2FuJ3QgdGhp cyBhbGwgYmUgaW4gc3luYyB3aXRoCj4gPj4gdGhlIHByb3BlcnR5Pwo+ID4+IAo+ID4KPiA+IFRo aXMgY29ubmVjdG9yLT5saW5rX3N0YXR1cyBtZW1iZXIgb2YgZHJtX0Nvbm5lY3RvciBnZXRzIHJl YWQgaW4KPiA+IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX21vZGVzZXQoKSBpbiB0aGUgZHJpdmVy IHdoZXJlIGl0IHJlYWRzIHRoaXMKPiA+IGFuZCBzZXRzIGNydGNfc3RhdGUtPmNvbm5lY3Rvcl9D aGFuZ2VkIHRvIHRydWUgaWYgdGhpcyBsaW5rX3N0YXR1cwo+ID4gaGFzIGNoYW5nZWQuCj4gPiBU aGlzIGlzIHJlcXVpcmVkIHNvIHRoYXQgdGhlIGRyaXZlciBkb2VzIGEgY29tcGxldGUgbW9kZXNl dC4KPiA+IFRoaXMgY29ubmVjdG9yLT5saW5rX3N0YXR1cyB3YXMgaW4gc3luYyB3aXRoIHRoZSBw cm9wZXJ0eS4gQnV0IHJlYWRpbmcgdGhlCj4gPiBkcm1fb2JqZWN0IHByb3BlcnR5IGluIGRybV9h dG9taWNfaGVscGVyX0NoZWNrX21vZGVzZXQgd2FzIGNhdXNpbmcgdGhlIHN5c3RlbSB0bwo+ID4g bm90IGJvb3QuCj4gPiBpbnRlbF9kcC0+bGlua190cmFpbl9mYWlsZWQgYWxzbyBqdXN0IGluZGlj YXRlcyBpZiB0aGUgbGluayBmYWlsZWQsIEkgd2lsbCBoYXZlIHRvIHNlZQo+ID4gaWYgaSBjYW4g anVzdCB1c2UgY29ubmVjdG9yLT5saW5rX3N0YXR1cyBmb3IgdGhpcyBwdXJwb3NlLiAKPiAKPiBQ bGVhc2UgZG8uIFVzdWFsbHkgaWYgeW91IGFkZCBtb3JlIHRoYW4gb25lIHZhcmlhYmxlIGZvciBl c3NlbnRpYWxseSB0aGUKPiBzYW1lIHRoaW5nLCB5b3UnbGwgZW5kIHVwIGhhdmluZyBjb21iaW5h dGlvbnMgb2YgdGhlIHZhcmlhYmxlcyAoc3RhdGVzKQo+IHRoYXQgeW91IHNob3VsZCBub3QgYmUg aW4uIEF0IGxlYXN0IHlvdSBzaG91bGQgaGF2ZSBhIGNsZWFyIGlkZWEgd2hhdAo+IHRoZSBzdGF0 ZXMgYXJlIHdoZXJlIGxpbmtfdHJhaW5fZmFpbGVkIGFuZCBsaW5rX3N0YXR1cyBkaXNhZ3JlZS4K PgoKSSB3aWxsIHRyeSB0byBjb252ZXJnZSB0aGVzZS4KSG93IGRvIHdlIGhhbmRsZSB0aGUgY2Fz ZSB3aGVyZSBpdCBoYXMgdHJpZWQgYWxsIHBvc3NpYmxlIGZhbGxiYWNrIHZhbHVlcywKbG93ZXN0 IGxpbmsgcmF0ZSBhbmQgbG93ZXN0IGxhbmUgY291bnQsIG5vdyB0aGUgbGluayBpcyBzdGlsbCBi YWQsCkRQUiBleHBlY3RzIGRyaXZlciB0byBzdG9wIGxpbmsgdHJhaW5pbmcgd2l0aCBFUlJPUiB0 aGF0IGxpbmsgdHJhaW5pbmcKaXMgdW5zdWNjZXNzZnVsIGV2ZW4gYWZ0ZXIgdHJ5aW5nIGZhbGxi YWNrLiBJbiB0aGlzIGNhc2Ugd2Ugc2hvdWxkIG5vdAp0cnkgdG8gcmV0cmFpbiBhZ2FpbiBhbmQg aW4gdGhhdCBjYXNlIEkgd2FzIGp1c3Qgc2V0dGluZyBsaW5rX3RyYWluX2ZhaWxlZAp0byBmYWxz ZSBhZ2Fpbi4gRG8geW91IGhhdmUgYW55IHN1Z2dlc3Rpb25zIG9uIGhvdyB0byBoYW5kbGUgdGhp cyBjYXNlLCBkbyB3ZQpzZW5kIHRoZSB1ZXZlbnQgaW4gdGhpcyBjYXNlIGFzIHdlbGw/IEJ1dCB0 aGVuIHdlIGRvbnQgaGF2ZSBmYWxsYmFjayB2YWx1ZXMgc2luY2UKd2UgaGF2ZSBleGhhdXN0ZWQg YWxsIGZhbGxiYWNrIHZhbHVlcy4KCiAKPiA+Cj4gPj4gPiArCX0KPiA+PiA+ICsKPiA+PiA+ICAJ aWYgKHBvcnQgIT0gUE9SVF9BIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiA+PiA+ICAJ CWludGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7Cj4gPj4gPiAgfQo+ID4+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jCj4gPj4gPiBpbmRleCBmYjRmY2RkLi5kMWYwZTJjIDEwMDY0NAo+ ID4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4+ID4gQEAgLTM1NCw4ICszNTQsMTQg QEAgdm9pZCBpbnRlbF9kcF9nZXRfbGlua190cmFpbl9mYWxsYmFja192YWx1ZXMoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwKPiA+PiA+ICAJCXRhcmdldF9jbG9jayA9IGZpeGVkX21vZGUtPmNs b2NrOwo+ID4+ID4gIAl9Cj4gPj4gPiAgCj4gPj4gPiAtCW1heF9saW5rX2Nsb2NrID0gaW50ZWxf ZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9kcCk7Cj4gPj4gPiAtCW1heF9sYW5lcyA9IGludGVsX2Rw X21heF9sYW5lX2NvdW50KGludGVsX2RwKTsKPiA+PiA+ICsJLyogUHJ1bmUgdGhlIG1vZGVzIHVz aW5nIHRoZSBmYWxsYmFjayBsaW5rIHJhdGUvbGFuZSBjb3VudCAqLwo+ID4+ID4gKwlpZiAoaW50 ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkKSB7Cj4gPj4gPiArCQltYXhfbGlua19jbG9jayA9IGlu dGVsX2RwLT5mYWxsYmFja19saW5rX3JhdGU7Cj4gPj4gPiArCQltYXhfbGFuZXMgPSBpbnRlbF9k cC0+ZmFsbGJhY2tfbGFuZV9jb3VudDsKPiA+PiA+ICsJfSBlbHNlIHsKPiA+PiA+ICsJCW1heF9s aW5rX2Nsb2NrID0gaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9kcCk7Cj4gPj4gPiArCQlt YXhfbGFuZXMgPSBpbnRlbF9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcCk7Cj4gPj4gPiArCX0K PiA+PiA+ICAKPiA+PiA+ICAJbWF4X3JhdGUgPSBpbnRlbF9kcF9tYXhfZGF0YV9yYXRlKG1heF9s aW5rX2Nsb2NrLCBtYXhfbGFuZXMpOwo+ID4+ID4gIAltb2RlX3JhdGUgPSBpbnRlbF9kcF9saW5r X3JlcXVpcmVkKHRhcmdldF9jbG9jaywgMTgpOwo+ID4+ID4gQEAgLTE2NDAsNiArMTY0NiwxMiBA QCBzdGF0aWMgaW50IGludGVsX2RwX2NvbXB1dGVfYnBwKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsCj4gPj4gPiAgCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfREJM Q0xLKQo+ID4+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4+ID4gIAo+ID4+ID4gKwkvKiBGYWxsIGJh Y2sgdG8gbG93ZXIgbGluayByYXRlIGluIGNhc2Ugb2YgZmFpbHVyZSBpbiBwcmV2aW91cyBtb2Rl c2V0ICovCj4gPj4gPiArCWlmIChpbnRlbF9kcC0+bGlua190cmFpbl9mYWlsZWQpIHsKPiA+PiA+ ICsJCW1pbl9sYW5lX2NvdW50ID0gbWF4X2xhbmVfY291bnQgPSBpbnRlbF9kcC0+ZmFsbGJhY2tf bGFuZV9jb3VudDsKPiA+PiA+ICsJCW1pbl9jbG9jayA9IG1heF9jbG9jayA9IGludGVsX2RwLT5m YWxsYmFja19saW5rX3JhdGVfaW5kZXg7Cj4gPj4gPiArCX0KPiA+PiA+ICsKPiA+PiAKPiA+PiBN eSBnZW5lcmFsIGZlZWxpbmcgaXMgdGhhdCB0aGVyZSdzIHN0YXJ0aW5nIHRvIGJlIGEgYml0IHRv byBtdWNoIHNwZWNpYWwKPiA+PiBjYXNpbmcgYXJvdW5kIHRoZSBmYWxsYmFjayB2YWx1ZXMuIEkn bSBub3QgZGVjaWRlZCB3ZSBuZWVkIHRvIGZpeCB0aGlzCj4gPj4gcmlnaHQgYXdheSBpbiB0aGlz IHNlcmllcywgb3Igd2hldGhlciBpdCBjYW4gYmUgZm9sbG93LXVwIHdvcmsuCj4gPj4gCj4gPj4g T25lIGlkZWEgaXMgdG8gY29tcHV0ZSB0aGUgY29tbW9uIHJhdGVzIGFuZCBsYW5lcyBvbmNlIHdo ZW4gdGhleSdyZQo+ID4+IGZpcnN0IG5lZWRlZCwgYW5kIGFsbCBvZiB0aGUgaGVscGVycyB3b3Vs ZCB1c2UgdGhhdCBpbmZvLiBUaGUgZmFsbGJhY2sKPiA+PiBjb2RlIHdvdWxkIGp1c3QgdHJpbSB0 aG9zZSwgYW5kIHRoZSBjb25kaXRpb25hbCBmYWxsYmFjayBzdHVmZiBjb3VsZCBiZQo+ID4+IHJl bW92ZWQgZnJvbSBhbGwgb3ZlciB0aGUgcGxhY2UuCj4gPj4KPiA+Cj4gPiBUaGVzZSBmYWxsYmFj ayB2YWx1ZXMgZ2V0IGNvbXB1dGVkIGluIGEgc2VwYXJhdGUgaGVscGVyIGZ1bmN0aW9uIHRoYXQK PiA+IEkgaGF2ZSBhZGRlZCBpbnRlbF9kcF9nZXRfbGlua190cmFpbl9mYWxsYmFja192YWx1ZXMu IEl0IGlzIHRoZQo+ID4gcHJldmlvdXMgcGF0Y2guICBJIHN0b3JlIHRoZSBmYWxsYmFjayB2YWx1 ZXMgaW4gaW50ZWxfZHAgb25lIGF0IGEgdGltZQo+ID4gYmVjYXVzZSBmb3IgdGhhdCBpdGVyYXRp b24gb2YgbW9kZXNldCB3ZSBvbmx5IG5lZWQgdG8gdHJ5IHRoZQo+ID4gZmFsbGJhY2tfbGlua19y YXRlIGFuZCBmYWxsYmFja19sYW5lX2NvdW50IHNvIHdlIGRvbnQgbmVlZCBhbiBhcnJheQo+ID4g aGVyZS4KPiAKPiBTdXJlLiBJJ20gKm5vdCogcmVmZXJyaW5nIHRvIG15IGVhcmxpZXIgc3VnZ2Vz dGlvbiBvZiBzdG9yaW5nIGZhaWxpbmcKPiBsaW5rIHJhdGUsIGxhbmUgY291bnQgcGFpcnMgKGFs dGhvdWdoIEkgdGhpbmsgd2UnbGwgbmVlZCB0aGF0Cj4gZXZlbnR1YWxseSkuCj4gCj4gPiBBcmUg eW91IHN1Z2dlc3RpbmcganVzdCBjaGFuZ2luZyB0aGUgY29tbW9uX3JhdGVzIGFycmF5IGl0c2Vs ZiB0byBnZXQKPiA+IHRyaW1tZWQgdG8gdXNlIHRoZSB0cmltbWVkIGZhbGxiYWNrIHZhbHVlcyBh ZnRlciBsaW5rIHRyYWluaW5nIGZhaWxzPwo+ID4gQ291bGQgeW91IHBsZWFzZSBlbGFib3JhdGUg eW91ciB0aG91Z2h0Pwo+IAo+IEknbSBub3Qgc2F5aW5nIHlvdSBzaG91bGQgY2hhbmdlIHRoaXMg bm93LiBCdXQgaGF2aW5nIGEgbG90IG9mIGNvZGUKPiBjaGVjayBzb21lIGZhbGxiYWNrIHN0dWZm IGlzIHVnbHkgYW5kIGVycm9yIHByb25lLiBJJ20ganVzdCBkb2N1bWVudGluZwo+IHRoZSBpZGVh cyB0byBtYWtlIHRoaXMgYmV0dGVyLgo+IAo+IEkgdGhpbmsgdGhpcyBjb3VsZCBiZSBmaXhlZCBi eSBzdG9yaW5nIHRoZSBjb21tb24gcmF0ZXMgYXJyYXkgYW5kIG1heAo+IGxhbmVzIGluIGludGVs X2RwLCBpbnN0ZWFkIG9mIGhhdmluZyB0aGVtIGxvY2FsbHkgaW4gYSBmZXcgZnVuY3Rpb25zLAo+ IGFuZCB0aGVuIG1ha2luZyB0aGUgbGluayByYXRlIGFuZCBsYW5lIGNvdW50aW5nIGZ1bmN0aW9u cyBhd2FyZSBvZiB0aGUKPiBmYWxsYmFjayBzdHVmZi4gRWl0aGVyIHRoZSBmdW5jdGlvbnMgd291 bGQgY2hlY2sgZm9yIHRoZSBmYWxsYmFja3MsCj4gY2VudHJhbGl6aW5nIHRoZSBjaGVja3MgaW4g b25lIHBsYWNlLCBhbmQvb3IgdGhlIGZhbGxiYWNrIGNvZGUgd291bGQKPiBtb2RpZnkgdGhlIGNv bW1vbiB2YWx1ZXMgc3RvcmVkIGluIGludGVsX2RwLCBzbyB0aGF0IHRoZSBsaW5rIHJhdGUgYW5k Cj4gbGFuZSBjb3VudGluZyBmdW5jdGlvbnMgd291bGQganVzdCB3b3JrIHdpdGggdGhlIGZhbGxi YWNrcy4gQ29kZSB3b3VsZAo+IGJlIHNpbXBsZXIgb3ZlcmFsbC4KPiAKCkFnYWluIHRoaXMgbWln aHQgaW52b2x2ZSBhIGxvdCBtb3JlIGNoYW5nZXMgc2luY2Ugd2Ugd291bGQgaGF2ZSB0byBjaGFu Z2UKYWxsIHRoZSBoZWxwZXIgZnVuY3Rpb25zIHRoYXQgY3VyZXJudGx5IGNhbGN1bGF0ZSBtYXgg bGFuZXMgYW5kIGNvbW1vbl9yYXRlcwpidXQgdGhpcyBjYW4gZGVmaW5pdGVseSBiZSBkb25lIGlu IHRoZSBuZXh0IHJvdW5kIG9mIGNsZWFuIHVwIGFmdGVyIHRoZXNlIApwYXRjaGVzIGxhbmQuIEJ1 dCBuZXZlcnRoZWxlc3MgSSB3aWxsIHNlZSBpZiBJIGNhbiB1cGRhdGUgdGhlIGNvbW1vbl9yYXRl cwphcnJheSBub3cgd2l0aCBmYWxsYmFjayB2YWx1ZXMgaW5zdGVhZCBvZiBzdG9yaW5nIGZhbGxi Y2sgdmFsdWVzIHNlcGFyYXRlbHkKaW4gdGhlIGludGVsX2RwIHN0cnVjdHVyZS4KCk1hbmFzaQo+ ID4gIAo+ID4+ID4gIAlEUk1fREVCVUdfS01TKCJEUCBsaW5rIGNvbXB1dGF0aW9uIHdpdGggbWF4 IGxhbmUgY291bnQgJWkgIgo+ID4+ID4gIAkJICAgICAgIm1heCBidyAlZCBwaXhlbCBjbG9jayAl aUtIelxuIiwKPiA+PiA+ICAJCSAgICAgIG1heF9sYW5lX2NvdW50LCBjb21tb25fcmF0ZXNbbWF4 X2Nsb2NrXSwKPiA+PiA+IEBAIC00NDIzLDYgKzQ0MzUsMTMgQEAgc3RhdGljIGJvb2wgaW50ZWxf ZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gPj4gPiAgCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X2FjdGl2ZSA9IDA7Cj4gPj4gPiAg CQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5cGUgPSAwOwo+ID4+ID4gIAkJaW50ZWxfZHAt PmNvbXBsaWFuY2VfdGVzdF9kYXRhID0gMDsKPiA+PiA+ICsJCWludGVsX2RwLT5saW5rX3RyYWlu X2ZhaWxlZCA9IGZhbHNlOwo+ID4+ID4gKwkJaW50ZWxfZHAtPmZhbGxiYWNrX2xpbmtfcmF0ZV9p bmRleCA9IC0xOwo+ID4+ID4gKwkJaW50ZWxfZHAtPmZhbGxiYWNrX2xpbmtfcmF0ZSA9IDA7Cj4g Pj4gPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGFuZV9jb3VudCA9IDA7Cj4gPj4gPiArCQljb25u ZWN0b3ItPmxpbmtfc3RhdHVzID0gRFJNX01PREVfTElOS19TVEFUVVNfR09PRDsKPiA+PiA+ICsJ CWludGVsX2RwX3NldF9saW5rX3N0YXR1c19wcm9wZXJ0eShjb25uZWN0b3IsCj4gPj4gPiArCQkJ CQkJICBEUk1fTU9ERV9MSU5LX1NUQVRVU19HT09EKTsKPiA+PiA+ICAKPiA+PiA+ICAJCWlmIChp bnRlbF9kcC0+aXNfbXN0KSB7Cj4gPj4gPiAgCQkJRFJNX0RFQlVHX0tNUygiTVNUIGRldmljZSBt YXkgaGF2ZSBkaXNhcHBlYXJlZCAlZCB2cyAlZFxuIiwKPiA+PiA+IEBAIC00NTE0LDggKzQ1MzMs MTIgQEAgc3RhdGljIGJvb2wgaW50ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4gPiAgCURSTV9ERUJVR19LTVMoIltDT05ORUNU T1I6JWQ6JXNdXG4iLAo+ID4+ID4gIAkJICAgICAgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0 b3ItPm5hbWUpOwo+ID4+ID4gIAo+ID4+ID4gKwkvKiBJZiB0aGlzIGlzIGEgcmV0cnkgZHVlIHRv IGxpbmsgdHJpYW5pbmcgZmFpbHVyZSAqLwo+ID4+ID4gKwlpZiAoc3RhdHVzID09IGNvbm5lY3Rv cl9zdGF0dXNfY29ubmVjdGVkICYmIGludGVsX2RwLT5saW5rX3RyYWluX2ZhaWxlZCkKPiA+PiA+ ICsJCXJldHVybiBzdGF0dXM7Cj4gPj4gPiArCj4gPj4gPiAgCS8qIElmIGZ1bGwgZGV0ZWN0IGlz IG5vdCBwZXJmb3JtZWQgeWV0LCBkbyBhIGZ1bGwgZGV0ZWN0ICovCj4gPj4gPiAtCWlmICghaW50 ZWxfZHAtPmRldGVjdF9kb25lKQo+ID4+ID4gKwlpZiAoIWludGVsX2RwLT5kZXRlY3RfZG9uZSAm JiAhaW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkKQo+ID4+ID4gIAkJc3RhdHVzID0gaW50ZWxf ZHBfbG9uZ19wdWxzZShpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yKTsKPiA+PiA+ICAKPiA+ PiA+ICAJaW50ZWxfZHAtPmRldGVjdF9kb25lID0gZmFsc2U7Cj4gPj4gPiBAQCAtNTY5Miw2ICs1 NzE1LDQ3IEBAIHN0YXRpYyBib29sIGludGVsX2VkcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ID4+ID4gIAlyZXR1cm4gZmFsc2U7Cj4gPj4gPiAgfQo+ID4+ID4g IAo+ID4+ID4gK3N0YXRpYyB2b2lkIGludGVsX2RwX21vZGVzZXRfcmV0cnlfd29ya19mbihzdHJ1 Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gPj4gPiArewo+ID4+ID4gKwlzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICppbnRlbF9jb25uZWN0b3I7Cj4gPj4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3I7Cj4gPj4gPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+ID4+ID4g Kwlib29sIHZlcmJvc2VfcHJ1bmUgPSB0cnVlOwo+ID4+ID4gKwlib29sIHJlcHJvYmUgPSBmYWxz ZTsKPiA+PiA+ICsKPiA+PiA+ICsJaW50ZWxfY29ubmVjdG9yID0gY29udGFpbmVyX29mKHdvcmss IHR5cGVvZigqaW50ZWxfY29ubmVjdG9yKSwKPiA+PiA+ICsJCQkJICAgICAgIG1vZGVzZXRfcmV0 cnlfd29yayk7Cj4gPj4gPiArCWNvbm5lY3RvciA9ICZpbnRlbF9jb25uZWN0b3ItPmJhc2U7Cj4g Pj4gPiArCj4gPj4gPiArCS8qIEdyYWIgdGhlIGxvY2tzIGJlZm9yZSBjaGFuZ2luZyBjb25uZWN0 b3IgcHJvcGVydHkqLwo+ID4+ID4gKwltdXRleF9sb2NrKCZjb25uZWN0b3ItPmRldi0+bW9kZV9j b25maWcubXV0ZXgpOwo+ID4+ID4gKwlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXVxu IiwgY29ubmVjdG9yLT5iYXNlLmlkLAo+ID4+ID4gKwkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsK PiA+PiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShtb2RlLCAmY29ubmVjdG9yLT5tb2RlcywgaGVh ZCkgewo+ID4+ID4gKwkJbW9kZS0+c3RhdHVzID0gaW50ZWxfZHBfbW9kZV92YWxpZChjb25uZWN0 b3IsCj4gPj4gPiArCQkJCQkJICAgbW9kZSk7Cj4gPj4gPiArCQlpZiAobW9kZS0+c3RhdHVzICE9 IE1PREVfT0spCj4gPj4gPiArCQkJcmVwcm9iZSA9IHRydWU7Cj4gPj4gPiArCX0KPiA+PiA+ICsJ ZHJtX21vZGVfcHJ1bmVfaW52YWxpZChjb25uZWN0b3ItPmRldiwgJmNvbm5lY3Rvci0+bW9kZXMs Cj4gPj4gPiArCQkJICAgICAgIHZlcmJvc2VfcHJ1bmUpOwo+ID4+ID4gKwo+ID4+ID4gKwkvKiBT ZXQgY29ubmVjdG9yIGxpbmsgc3RhdHVzIHRvIEJBRCBvbmx5IGlmIG1vZGVzZXQgcmVxdWlyZWQK PiA+PiA+ICsJICogZm9yIHRoZSBjdXJyZW50IG1vZGUsIGlmIG1vZGUgbGlzdCBjaGFuZ2VkIHRo ZW4ganVzdCBzZW5kIHVldmVudAo+ID4+ID4gKwkgKiBzbyB0aGF0IGl0IGNhbiByZXByb2JlIHRo ZSBjb25uZWN0b3JzIGFuZCB2YWxpZGF0ZSBtb2RlcyBhbmQgZG8KPiA+PiA+ICsJICogYSBtb2Rl c2V0IG9uIGEgZGlmZmVyZW50IHZhbGlkIG1vZGUuCj4gPj4gPiArCSAqLwo+ID4+ID4gKwlpZiAo IXJlcHJvYmUpIHsKPiA+PiA+ICsJCWNvbm5lY3Rvci0+bGlua19zdGF0dXMgPSBEUk1fTU9ERV9M SU5LX1NUQVRVU19CQUQ7Cj4gPj4gPiArCQlpbnRlbF9kcF9zZXRfbGlua19zdGF0dXNfcHJvcGVy dHkoY29ubmVjdG9yLAo+ID4+ID4gKwkJCQkJCSAgRFJNX01PREVfTElOS19TVEFUVVNfQkFEKTsK PiA+PiA+ICsJfQo+ID4+IAo+ID4+IAo+ID4+IEkgdGhpbmsgdGhlIGxpbmsgc3RhdHVzIHByb3Bl cnR5IHNob3VsZCBiZSBzZXQgdG8gYmFkIHVuY29uZGl0aW9uYWxseQo+ID4+IGhlcmUuIElmIHRo ZSBjdXJyZW50IGxpbmsgaXMgYmFkLCBpdCBpcyBiYWQgcmlnaHQgbm93IGluZGVwZW5kZW50IG9m Cj4gPj4gbW9kZXMgZml0dGluZyBpbnRvIHRoZSBmYWxsYmFjayBsaW5rIHBhcmFtZXRlcnMuCj4g Pj4gCj4gPj4gV2hpY2ggbWFrZXMgbWUgdGhpbmssIHVubGVzcyBJJ20gbWlzc2luZyBzb21ldGhp bmcsIHRoYXQgeW91IG1pZ2h0IGJlCj4gPj4gYWJsZSB0byBwcnVuZSB0aGUgaW52YWxpZCBtb2Rl cyBhbmQgc2V0IHRoZSBwcm9wZXJ0eSByaWdodCBhd2F5IHdoZW4KPiA+PiBsaW5rIHRyYWluaW5n IGZhaWxzLCBhbmQgb25seSB1c2UgdGhlIHdvcmsgdG8gZG8KPiA+PiBkcm1fa21zX2hlbHBlcl9o b3RwbHVnX2V2ZW50Lgo+ID4+Cj4gPgo+ID4gVGhlIHByb2JsZW0gd2l0aCBzZXR0aW5nIHRoZSBs aW5rX3N0YXR1cyBwcm9wZXJ0eSBCQUQgaXJyZXNwZWN0aXZlIG9mCj4gPiB0aGUgbW9kZSBwcnVu aW5nIGlzIHRoYXQsIGlmIHRoZSBtb2RlcyBnZXRzIHBydW5lZCBhbmQgd2Ugc2V0IHRoZQo+ID4g bGlua19zdHRhdXMgdG8gQkFEIENocmlzIFdpbHNvbidzIGRyaXZlciBjaGVja3MgdGhhdCB0aGUg bGluayBzdGF0dXMKPiA+IGlzIEJBRCBhbmQgaGUgZmlyc3QgdHJpZXMgdG8gYXR0ZW1wdCB0aGUg bW9kZXNldCBhdCB0aGUgY3VycmVudCBtb2RlCj4gPiB3aXRob3V0IGNhbGxpbmcgbW9kZV92YWxp ZCwgYW5kIHRoYXQgcmVzdWx0cyBpbiBhIGZhaWx1cmUgaW4KPiA+IGVub2NkZXItPmNvbXB1dGVf Y29uZmlnIHNpbmNlIG5vdyB0aGUgbW9kZSBkb2VzIG5vdCBmaXQgYW5kIHRoZSBwaXBlCj4gPiBj YW5ub3QgYmUgY29uZmlndXJlZC4gVGhpcyBjcmVhdGVzIGEgbG90IG9mIHdhcm5pbmdzL2Vycm9y cy9rZXJuZWwKPiA+IGNyYXNoIGV2ZW50dWFsbHkuICBTbyB0aGUgYmVzdCB3YXkgaXMgdG8gc2V0 IHRoZSBsaW5rIHN0YXR1cyBhcyBiYWQKPiA+IG9ubHkgd2hlbiB3ZSB3YW50IHRvIGZvcmNlIHRo ZSBtb2Rlc2V0IGF0IHRoZSBjdXJyZW50IG1vZGUsIGlmIHRoZQo+ID4gbW9kZXMgZ2V0IHBydW5l ZCB0aGVuIGluIGFueSBjYXNlIHVzZXJzcGFjZSB3aWxsIGRvIGFub3RoZXIgbW9kZXNldCBhdAo+ ID4gdGhlIG5leHQgbG93ZXIgbW9kZS4KPiAKPiBXaHkgd291bGQgdGhlIHVzZXJzcGFjZSBkcml2 ZXIgcmV0cnkgdGhlIHNhbWUgbW9kZSB3aXRob3V0IHJlZnJlc2hpbmcKPiB0aGUgbW9kZSBsaXN0 IGZpcnN0IGlmIGxpbmsgc3RhdHVzIGlzIGJhZD8KPiAKPiBJZiB0aGUgbGluayBpcyBiYWQsIHRo ZSBsaW5rIGlzICpiYWQqLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGN1cnJlbnQKPiBtb2Rl IG1pZ2h0IGV2ZW50dWFsbHkgd29yayBvciBub3QuIEFuIGludGVyZmFjZSB0aGF0IHJlcG9ydHMg Z29vZCBvbgo+IHNvbWUgdmFsdWVzIG9mIGJhZCBpcyBpbmNvbnNpc3RlbnQgKHJlbGF0ZWQgcmVh ZGluZyBbMV0pLiBJTU8gdGhlCj4gdXNlcnNwYWNlIHNob3VsZCBmaXJzdCBmaWd1cmUgb3V0IGlm IHRoZSBjdXJyZW50IG1vZGUgaXMgdmFsaWQgb3Igbm90LAo+IGFuZCB0aGVuIGRlY2lkZSB3aGF0 IHRvIGRvLgo+IAo+IENocmlzLCBhbnkgY29tbWVudHM/Cj4gCj4gU2lkZSBub3RlLCB0aGUga2Vy bmVsIG11c3Qgbm90IGNyYXNoIGRlcGVuZGluZyBvbiB3aGF0IHRoZSB1c2Vyc3BhY2UKPiBkb2Vz Lgo+IAo+IEJSLAo+IEphbmkuCj4gCgpDaHJpcywgeWVzIEkgdGhpbmsgaXQgaXMgYSBnb29kIGlk ZWEgdG8gYWx3YXlzIGNhbGwgbW9kZV92YWxpZCBmaXJzdCBvbiByZWNpZXZlaW5nCmxpbmtfc3Rh dHVzIGFzIEJBRCBhbmQgdGhlbiBjYWxsaW5nIHNldGNydGMgdG8gc2V0IHRoZSBjdXJyZW50IG1v ZGUgb3Igd2hhdGV2ZXIgdmFsaWQgbW9kZQppcy4gVGhlbiBJIHdvdWxkIG5vdCBuZWVkIHRvIHNl dCBsaW5rIHN0YXR1cyBCQUQgY29uZGl0aW9uYWxseSBpbiB0aGUgZHJpdmVyLgpDb3VsZCB5b3Ug bWFrZSB0aGlzIGNoYW5nZSBpbiB5b3VyIGxpbmtfc3RhdHVzIHBhdGNoIGFuZCByZXNlbmQgaXQg dG8gbWU/CgpNYW5hc2kKCj4gCj4gWzFdIGh0dHA6Ly9zd2VuZy50aGUtZGF2aWVzLm5ldC9Ib21l L3J1c3R5cy1hcGktZGVzaWduLW1hbmlmZXN0bwo+IAo+ID4KPiA+IE1hbmFzaSAKPiA+PiA+ICsJ bXV0ZXhfdW5sb2NrKCZjb25uZWN0b3ItPmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+ID4+ID4g Kwo+ID4+ID4gKwkvKiBTZW5kIEhvdHBsdWcgdWV2ZW50IHNvIHVzZXJzcGFjZSBjYW4gcmVwcm9i ZSAqLwo+ID4+ID4gKwlkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KGNvbm5lY3Rvci0+ZGV2 KTsKPiA+PiA+ICt9Cj4gPj4gPiArCj4gPj4gPiAgYm9vbAo+ID4+ID4gIGludGVsX2RwX2luaXRf Y29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ID4+ ID4gIAkJCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKPiA+PiA+IEBA IC01NzA0LDYgKzU3NjgsMTAgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9y KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPj4gPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50 ZWxfZGlnX3BvcnQtPnBvcnQ7Cj4gPj4gPiAgCWludCB0eXBlOwo+ID4+ID4gIAo+ID4+ID4gKwkv KiBJbml0aWFsaXplIHRoZSB3b3JrIGZvciBtb2Rlc2V0IGluIGNhc2Ugb2YgbGluayB0cmFpbiBm YWlsdXJlICovCj4gPj4gPiArCUlOSVRfV09SSygmaW50ZWxfY29ubmVjdG9yLT5tb2Rlc2V0X3Jl dHJ5X3dvcmssCj4gPj4gPiArCQkgIGludGVsX2RwX21vZGVzZXRfcmV0cnlfd29ya19mbik7Cj4g Pj4gPiArCj4gPj4gPiAgCWlmIChXQVJOKGludGVsX2RpZ19wb3J0LT5tYXhfbGFuZXMgPCAxLAo+ ID4+ID4gIAkJICJOb3QgZW5vdWdoIGxhbmVzICglZCkgZm9yIERQIG9uIHBvcnQgJWNcbiIsCj4g Pj4gPiAgCQkgaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lcywgcG9ydF9uYW1lKHBvcnQpKSkKPiA+ PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWlu aW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPiA+ PiA+IGluZGV4IDAwNDhiNTIuLjEwZjgxYWIgMTAwNjQ0Cj4gPj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPiA+PiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+ID4+ID4gQEAgLTMxMCw5ICsz MTAsMTUgQEAgdm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKPiA+PiA+ICAJCQkJRFBfVFJBSU5JTkdfUEFUVEVSTl9ESVNBQkxFKTsKPiA+PiA+ ICB9Cj4gPj4gPiAgCj4gPj4gPiAtdm9pZAo+ID4+ID4gK2Jvb2wKPiA+PiA+ICBpbnRlbF9kcF9z dGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPj4gPiAgewo+ID4+ ID4gLQlpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KGludGVsX2RwKTsKPiA+ PiA+IC0JaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihpbnRlbF9k cCk7Cj4gPj4gPiArCWJvb2wgcmV0Owo+ID4+ID4gKwo+ID4+ID4gKwlpZiAoaW50ZWxfZHBfbGlu a190cmFpbmluZ19jbG9ja19yZWNvdmVyeShpbnRlbF9kcCkpIHsKPiA+PiA+ICsJCXJldCA9IGlu dGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24oaW50ZWxfZHApOwo+ID4+ ID4gKwkJaWYgKHJldCkKPiA+PiA+ICsJCQlyZXR1cm4gdHJ1ZTsKPiA+PiA+ICsJfQo+ID4+ID4g KwlyZXR1cm4gZmFsc2U7Cj4gPj4gPiAgfQo+ID4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK PiA+PiA+IGluZGV4IGJjMjViMmIuLmE1NGU5YjcgMTAwNjQ0Cj4gPj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiA+PiA+IEBAIC0zMTIsNiArMzEyLDkgQEAgc3RydWN0IGludGVsX2Nv bm5lY3RvciB7Cj4gPj4gPiAgCXZvaWQgKnBvcnQ7IC8qIHN0b3JlIHRoaXMgb3BhcXVlIGFzIGl0 cyBpbGxlZ2FsIHRvIGRlcmVmZXJlbmNlIGl0ICovCj4gPj4gPiAgCj4gPj4gPiAgCXN0cnVjdCBp bnRlbF9kcCAqbXN0X3BvcnQ7Cj4gPj4gPiArCj4gPj4gPiArCS8qIFdvcmsgc3RydWN0IHRvIHNj aGVkdWxlIGEgdWV2ZW50IG9uIGxpbmsgdHJhaW4gZmFpbHVyZSAqLwo+ID4+ID4gKwlzdHJ1Y3Qg d29ya19zdHJ1Y3QgbW9kZXNldF9yZXRyeV93b3JrOwo+ID4+ID4gIH07Cj4gPj4gPiAgCj4gPj4g PiAgc3RydWN0IGRwbGwgewo+ID4+ID4gQEAgLTE0MDIsNyArMTQwNSw3IEBAIHZvaWQgaW50ZWxf ZHBfc2V0X2xpbmtfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPj4gPiAgCQkJ ICAgICAgYm9vbCBsaW5rX21zdCk7Cj4gPj4gPiAgdm9pZCBpbnRlbF9kcF9nZXRfbGlua190cmFp bl9mYWxsYmFja192YWx1ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+PiA+ICAJCQkJ CSAgICAgaW50IGxpbmtfcmF0ZSwgdWludDhfdCBsYW5lX2NvdW50KTsKPiA+PiA+IC12b2lkIGlu dGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gPj4g PiArYm9vbCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApOwo+ID4+ID4gIHZvaWQgaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApOwo+ID4+ID4gIHZvaWQgaW50ZWxfZHBfc2lua19kcG1zKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsIGludCBtb2RlKTsKPiA+PiA+ICB2b2lkIGludGVsX2RwX2VuY29kZXJf cmVzZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPiA+PiAKPiA+PiAtLSAKPiA+PiBK YW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKPiAKPiAtLSAK PiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==