From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v2 4/4] drm/i915: Implement Link Rate fallback on Link training failure Date: Tue, 01 Nov 2016 21:16:28 +0200 Message-ID: <87a8djj9ir.fsf@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 286AE89E50 for ; Tue, 1 Nov 2016 19:16:37 +0000 (UTC) In-Reply-To: <20161101162623.GA21517@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 Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAwMSBOb3YgMjAxNiwgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVs LmNvbT4gd3JvdGU6Cj4gT24gVHVlLCBOb3YgMDEsIDIwMTYgYXQgMTA6NDk6MTRBTSArMDIwMCwg SmFuaSBOaWt1bGEgd3JvdGU6Cj4+IE9uIFNhdCwgMjkgT2N0IDIwMTYsIE1hbmFzaSBOYXZhcmUg PG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+IHdyb3RlOgo+PiA+IElmIGxpbmsgdHJhaW5pbmcg YXQgYSBsaW5rIHJhdGUgb3B0aW1hbCBmb3IgYSBwYXJ0aWN1bGFyCj4+ID4gbW9kZSBmYWlscyBk dXJpbmcgbW9kZXNldCdzIGF0b21pYyBjb21taXQgcGhhc2UsIHRoZW4gd2UKPj4gPiBsZXQgdGhl IG1vZGVzZXQgY29tcGxldGUgYW5kIHRoZW4gcmV0cnkuIFdlIHNhdmUgdGhlIGxpbmsgcmF0ZQo+ PiA+IHZhbHVlIGF0IHdoaWNoIGxpbmsgdHJhaW5pbmcgZmFpbGVkLCB1cGRhdGUgdGhlIGxpbmsg c3RhdHVzIHByb3BlcnR5Cj4+ID4gdG8gIkJBRCIgYW5kIHVzZSBhIGxvd2VyIGxpbmsgcmF0ZSB0 byBwcnVuZSB0aGUgbW9kZXMuIEl0IHdpbGwgcmVkbwo+PiA+IHRoZSBtb2Rlc2V0IG9uIHRoZSBj dXJyZW50IG1vZGUgYXQgbG93ZXIgbGluayByYXRlIG9yIGlmIHRoZSBjdXJyZW50Cj4+ID4gbW9k ZSBnZXRzIHBydW5lZCBkdWUgdG8gbG93ZXIgbGluayBjb25zdHJhaW50cyB0aGVuLCBpdCB3aWxs IHNlbmQgYQo+PiA+IGhvdHBsdWcgdWV2ZW50IGZvciB1c2Vyc3BhY2UgdG8gaGFuZGxlIGl0Lgo+ PiA+Cj4+ID4gVGhpcyBpcyBhbHNvIHJlcXVpcmVkIHRvIHBhc3MgRFAgQ1RTIHRlc3RzIDQuMy4x LjMsIDQuMy4xLjQsCj4+ID4gNC4zLjEuNi4KPj4gPgo+PiA+IHYyOgo+PiA+ICogU3F1YXNoZWQg YSBmZXcgcGF0Y2hlcyAoSmFuaSBOaWt1bGEpCj4+ID4KPj4gPiBDYzogSmFuaSBOaWt1bGEgPGph bmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT4KPj4gPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVs LnZldHRlckBpbnRlbC5jb20+Cj4+ID4gQ2M6IFZpbGxlIFN5cmphbGEgPHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tPgo+PiA+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFz aS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4+ID4gLS0tCj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljX2hlbHBlci5jICAgICAgICAgICB8ICA0ICsrCj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jICAgICAgICAgICAgICB8IDIzICsrKysrKysrLQo+PiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAgICAgICAgfCA3NCArKysrKysrKysrKysr KysrKysrKysrKysrLS0KPj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190 cmFpbmluZy5jIHwgMTIgKysrLS0KPj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggICAgICAgICAgICAgIHwgIDUgKy0KPj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0 aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPj4gPgo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hl bHBlci5jCj4+ID4gaW5kZXggNzVhZDAxZC4uYTNkZjNhNCAxMDA2NDQKPj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fYXRvbWljX2hlbHBlci5jCj4+ID4gQEAgLTUxOSw2ICs1MTksMTAgQEAgc3RhdGljIGlu dCBoYW5kbGVfY29uZmxpY3RpbmdfZW5jb2RlcnMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlLAo+PiA+ICAJCQkJCSAgICAgICBjb25uZWN0b3Jfc3RhdGUpOwo+PiA+ICAJCWlmIChyZXQp Cj4+ID4gIAkJCXJldHVybiByZXQ7Cj4+ID4gKwo+PiA+ICsJCWNydGNfc3RhdGUgPSBkcm1fYXRv bWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBjb25uZWN0b3ItPnN0YXRlLT5jcnRj KTsKPj4gPiArCQlpZiAoY29ubmVjdG9yLT5saW5rX3N0YXR1cyA9PSBEUk1fTU9ERV9MSU5LX1NU QVRVU19CQUQpCj4+ID4gKwkJCWNydGNfc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCA9IHRydWU7 Cj4+ID4gIAl9Cj4+ID4gIAo+PiA+ICAJLyoKPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ PiA+IGluZGV4IDkzOGFjNGQuLjMxOWVlY2EgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGRpLmMKPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYwo+PiA+IEBAIC0xNjg0LDYgKzE2ODQsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlf cHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4gPiAgCXN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwo+ PiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVy LT5iYXNlLmRldik7Cj4+ID4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rl cl9wb3J0KGVuY29kZXIpOwo+PiA+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yID0gaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3RvcjsKPj4gPiArCXN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50ZWxfY29ubmVjdG9yLT5iYXNlOwo+PiA+ICAKPj4g PiAgCWludGVsX2RwX3NldF9saW5rX3BhcmFtcyhpbnRlbF9kcCwgbGlua19yYXRlLCBsYW5lX2Nv dW50LAo+PiA+ICAJCQkJIGxpbmtfbXN0KTsKPj4gPiBAQCAtMTY5NCw3ICsxNjk2LDI2IEBAIHN0 YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+PiA+ICAJaW50ZWxfcHJlcGFyZV9kcF9kZGlfYnVmZmVycyhlbmNvZGVyKTsKPj4g PiAgCWludGVsX2RkaV9pbml0X2RwX2J1Zl9yZWcoZW5jb2Rlcik7Cj4+ID4gIAlpbnRlbF9kcF9z aW5rX2RwbXMoaW50ZWxfZHAsIERSTV9NT0RFX0RQTVNfT04pOwo+PiA+IC0JaW50ZWxfZHBfc3Rh cnRfbGlua190cmFpbihpbnRlbF9kcCk7Cj4+ID4gKwlpZiAoIWludGVsX2RwX3N0YXJ0X2xpbmtf dHJhaW4oaW50ZWxfZHApKSB7Cj4+ID4gKwkJRFJNX0RFQlVHX0tNUygiTGluayBUcmFpbmluZyBm YWlsZWQgYXQgbGluayByYXRlID0gJWQsIGxhbmUgY291bnQgPSAlZCIsCj4+ID4gKwkJCSAgICAg IGxpbmtfcmF0ZSwgbGFuZV9jb3VudCk7Cj4+ID4gKwkJaW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFp bGVkID0gdHJ1ZTsKPj4gPiArCQlpbnRlbF9kcF9nZXRfbGlua190cmFpbl9mYWxsYmFja192YWx1 ZXMoaW50ZWxfZHAsIGxpbmtfcmF0ZSwKPj4gPiArCQkJCQkJCWxhbmVfY291bnQpOwo+PiA+ICsJ CS8qIFNjaGVkdWxlIGEgSG90cGx1ZyBVZXZlbnQgdG8gdXNlcnNwYWNlIHRvIHN0YXJ0IG1vZGVz ZXQgKi8KPj4gPiArCQlzY2hlZHVsZV93b3JrKCZpbnRlbF9jb25uZWN0b3ItPm1vZGVzZXRfcmV0 cnlfd29yayk7Cj4+IAo+PiBUaGlzIGlzIG5vdCBqdXN0IGFib3V0IERESS4gTmVlZCB0byBkbyB0 aGlzIGZvciB0aGUgb3RoZXIgY2FzZXMgdG9vLgo+Pgo+Cj4gWWVzLCBmaXJzdCBzZXJpZXMgd2ls bCBnIG91dCBmb3IgYWRkaW5nIHRoaXMgc3VwcG9ydCBmb3IgRERJLCB0aGVuIG1vcmUgcGF0Y2hl cwo+IHRvIGV4cGFuZCBpdCB0byBub24gRERJIHBsYXRmb3Jtcy4KPgo+ICAKPj4gPiArCX0gZWxz ZSB7Cj4+ID4gKwkJRFJNX0RFQlVHX0tNUygiTGluayBUcmFpbmluZyBQYXNzZWQgYXQgTGluayBS YXRlID0gJWQsIExhbmUgY291bnQgPSAlZCIsCj4+ID4gKwkJCSAgICAgIGxpbmtfcmF0ZSwgbGFu ZV9jb3VudCk7Cj4+ID4gKwkJaW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkID0gZmFsc2U7Cj4+ ID4gKwkJaW50ZWxfZHAtPmZhbGxiYWNrX2xpbmtfcmF0ZV9pbmRleCA9IC0xOwo+PiA+ICsJCWlu dGVsX2RwLT5mYWxsYmFja19saW5rX3JhdGUgPSAwOwo+PiA+ICsJCWludGVsX2RwLT5mYWxsYmFj a19sYW5lX2NvdW50ID0gMDsKPj4gPiArCQljb25uZWN0b3ItPmxpbmtfc3RhdHVzID0gRFJNX01P REVfTElOS19TVEFUVVNfR09PRDsKPj4gPiArCQlpbnRlbF9kcF9zZXRfbGlua19zdGF0dXNfcHJv cGVydHkoY29ubmVjdG9yLAo+PiA+ICsJCQkJCQkgIERSTV9NT0RFX0xJTktfU1RBVFVTX0dPT0Qp Owo+PiAKPj4gTG9va3MgbGlrZSB5b3UgbmV2ZXIgYWN0dWFsbHkgcmVhZCBjb25uZWN0b3ItPmxp bmtfc3RhdHVzLi4uIFdoeSBkbyB5b3UKPj4gbmVlZCBib3RoIGNvbm5lY3Rvci0+bGlua19zdGF0 dXMgYW5kIGludGVsX2RwLT5saW5rX3RyYWluX2ZhaWxlZD8gRG8geW91Cj4+IHRoaW5rIHlvdSBo YXZlIDQgc3RhdGVzPyBXaGF0IGFyZSB0aGV5PyBDYW4ndCB0aGlzIGFsbCBiZSBpbiBzeW5jIHdp dGgKPj4gdGhlIHByb3BlcnR5Pwo+PiAKPgo+IFRoaXMgY29ubmVjdG9yLT5saW5rX3N0YXR1cyBt ZW1iZXIgb2YgZHJtX0Nvbm5lY3RvciBnZXRzIHJlYWQgaW4KPiBkcm1fYXRvbWljX2hlbHBlcl9j aGVja19tb2Rlc2V0KCkgaW4gdGhlIGRyaXZlciB3aGVyZSBpdCByZWFkcyB0aGlzCj4gYW5kIHNl dHMgY3J0Y19zdGF0ZS0+Y29ubmVjdG9yX0NoYW5nZWQgdG8gdHJ1ZSBpZiB0aGlzIGxpbmtfc3Rh dHVzCj4gaGFzIGNoYW5nZWQuCj4gVGhpcyBpcyByZXF1aXJlZCBzbyB0aGF0IHRoZSBkcml2ZXIg ZG9lcyBhIGNvbXBsZXRlIG1vZGVzZXQuCj4gVGhpcyBjb25uZWN0b3ItPmxpbmtfc3RhdHVzIHdh cyBpbiBzeW5jIHdpdGggdGhlIHByb3BlcnR5LiBCdXQgcmVhZGluZyB0aGUKPiBkcm1fb2JqZWN0 IHByb3BlcnR5IGluIGRybV9hdG9taWNfaGVscGVyX0NoZWNrX21vZGVzZXQgd2FzIGNhdXNpbmcg dGhlIHN5c3RlbSB0bwo+IG5vdCBib290Lgo+IGludGVsX2RwLT5saW5rX3RyYWluX2ZhaWxlZCBh bHNvIGp1c3QgaW5kaWNhdGVzIGlmIHRoZSBsaW5rIGZhaWxlZCwgSSB3aWxsIGhhdmUgdG8gc2Vl Cj4gaWYgaSBjYW4ganVzdCB1c2UgY29ubmVjdG9yLT5saW5rX3N0YXR1cyBmb3IgdGhpcyBwdXJw b3NlLiAKClBsZWFzZSBkby4gVXN1YWxseSBpZiB5b3UgYWRkIG1vcmUgdGhhbiBvbmUgdmFyaWFi bGUgZm9yIGVzc2VudGlhbGx5IHRoZQpzYW1lIHRoaW5nLCB5b3UnbGwgZW5kIHVwIGhhdmluZyBj b21iaW5hdGlvbnMgb2YgdGhlIHZhcmlhYmxlcyAoc3RhdGVzKQp0aGF0IHlvdSBzaG91bGQgbm90 IGJlIGluLiBBdCBsZWFzdCB5b3Ugc2hvdWxkIGhhdmUgYSBjbGVhciBpZGVhIHdoYXQKdGhlIHN0 YXRlcyBhcmUgd2hlcmUgbGlua190cmFpbl9mYWlsZWQgYW5kIGxpbmtfc3RhdHVzIGRpc2FncmVl LgoKPgo+PiA+ICsJfQo+PiA+ICsKPj4gPiAgCWlmIChwb3J0ICE9IFBPUlRfQSB8fCBJTlRFTF9H RU4oZGV2X3ByaXYpID49IDkpCj4+ID4gIAkJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGludGVs X2RwKTsKPj4gPiAgfQo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiA+IGluZGV4IGZiNGZj ZGQuLmQxZjBlMmMgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4gPiBAQCAt MzU0LDggKzM1NCwxNCBAQCB2b2lkIGludGVsX2RwX2dldF9saW5rX3RyYWluX2ZhbGxiYWNrX3Zh bHVlcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+PiA+ICAJCXRhcmdldF9jbG9jayA9IGZp eGVkX21vZGUtPmNsb2NrOwo+PiA+ICAJfQo+PiA+ICAKPj4gPiAtCW1heF9saW5rX2Nsb2NrID0g aW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9kcCk7Cj4+ID4gLQltYXhfbGFuZXMgPSBpbnRl bF9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcCk7Cj4+ID4gKwkvKiBQcnVuZSB0aGUgbW9kZXMg dXNpbmcgdGhlIGZhbGxiYWNrIGxpbmsgcmF0ZS9sYW5lIGNvdW50ICovCj4+ID4gKwlpZiAoaW50 ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkKSB7Cj4+ID4gKwkJbWF4X2xpbmtfY2xvY2sgPSBpbnRl bF9kcC0+ZmFsbGJhY2tfbGlua19yYXRlOwo+PiA+ICsJCW1heF9sYW5lcyA9IGludGVsX2RwLT5m YWxsYmFja19sYW5lX2NvdW50Owo+PiA+ICsJfSBlbHNlIHsKPj4gPiArCQltYXhfbGlua19jbG9j ayA9IGludGVsX2RwX21heF9saW5rX3JhdGUoaW50ZWxfZHApOwo+PiA+ICsJCW1heF9sYW5lcyA9 IGludGVsX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwKTsKPj4gPiArCX0KPj4gPiAgCj4+ID4g IAltYXhfcmF0ZSA9IGludGVsX2RwX21heF9kYXRhX3JhdGUobWF4X2xpbmtfY2xvY2ssIG1heF9s YW5lcyk7Cj4+ID4gIAltb2RlX3JhdGUgPSBpbnRlbF9kcF9saW5rX3JlcXVpcmVkKHRhcmdldF9j bG9jaywgMTgpOwo+PiA+IEBAIC0xNjQwLDYgKzE2NDYsMTIgQEAgc3RhdGljIGludCBpbnRlbF9k cF9jb21wdXRlX2JwcChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+PiA+ICAJaWYgKGFkanVz dGVkX21vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19EQkxDTEspCj4+ID4gIAkJcmV0dXJuIGZh bHNlOwo+PiA+ICAKPj4gPiArCS8qIEZhbGwgYmFjayB0byBsb3dlciBsaW5rIHJhdGUgaW4gY2Fz ZSBvZiBmYWlsdXJlIGluIHByZXZpb3VzIG1vZGVzZXQgKi8KPj4gPiArCWlmIChpbnRlbF9kcC0+ bGlua190cmFpbl9mYWlsZWQpIHsKPj4gPiArCQltaW5fbGFuZV9jb3VudCA9IG1heF9sYW5lX2Nv dW50ID0gaW50ZWxfZHAtPmZhbGxiYWNrX2xhbmVfY291bnQ7Cj4+ID4gKwkJbWluX2Nsb2NrID0g bWF4X2Nsb2NrID0gaW50ZWxfZHAtPmZhbGxiYWNrX2xpbmtfcmF0ZV9pbmRleDsKPj4gPiArCX0K Pj4gPiArCj4+IAo+PiBNeSBnZW5lcmFsIGZlZWxpbmcgaXMgdGhhdCB0aGVyZSdzIHN0YXJ0aW5n IHRvIGJlIGEgYml0IHRvbyBtdWNoIHNwZWNpYWwKPj4gY2FzaW5nIGFyb3VuZCB0aGUgZmFsbGJh Y2sgdmFsdWVzLiBJJ20gbm90IGRlY2lkZWQgd2UgbmVlZCB0byBmaXggdGhpcwo+PiByaWdodCBh d2F5IGluIHRoaXMgc2VyaWVzLCBvciB3aGV0aGVyIGl0IGNhbiBiZSBmb2xsb3ctdXAgd29yay4K Pj4gCj4+IE9uZSBpZGVhIGlzIHRvIGNvbXB1dGUgdGhlIGNvbW1vbiByYXRlcyBhbmQgbGFuZXMg b25jZSB3aGVuIHRoZXkncmUKPj4gZmlyc3QgbmVlZGVkLCBhbmQgYWxsIG9mIHRoZSBoZWxwZXJz IHdvdWxkIHVzZSB0aGF0IGluZm8uIFRoZSBmYWxsYmFjawo+PiBjb2RlIHdvdWxkIGp1c3QgdHJp bSB0aG9zZSwgYW5kIHRoZSBjb25kaXRpb25hbCBmYWxsYmFjayBzdHVmZiBjb3VsZCBiZQo+PiBy ZW1vdmVkIGZyb20gYWxsIG92ZXIgdGhlIHBsYWNlLgo+Pgo+Cj4gVGhlc2UgZmFsbGJhY2sgdmFs dWVzIGdldCBjb21wdXRlZCBpbiBhIHNlcGFyYXRlIGhlbHBlciBmdW5jdGlvbiB0aGF0Cj4gSSBo YXZlIGFkZGVkIGludGVsX2RwX2dldF9saW5rX3RyYWluX2ZhbGxiYWNrX3ZhbHVlcy4gSXQgaXMg dGhlCj4gcHJldmlvdXMgcGF0Y2guICBJIHN0b3JlIHRoZSBmYWxsYmFjayB2YWx1ZXMgaW4gaW50 ZWxfZHAgb25lIGF0IGEgdGltZQo+IGJlY2F1c2UgZm9yIHRoYXQgaXRlcmF0aW9uIG9mIG1vZGVz ZXQgd2Ugb25seSBuZWVkIHRvIHRyeSB0aGUKPiBmYWxsYmFja19saW5rX3JhdGUgYW5kIGZhbGxi YWNrX2xhbmVfY291bnQgc28gd2UgZG9udCBuZWVkIGFuIGFycmF5Cj4gaGVyZS4KClN1cmUuIEkn bSAqbm90KiByZWZlcnJpbmcgdG8gbXkgZWFybGllciBzdWdnZXN0aW9uIG9mIHN0b3JpbmcgZmFp bGluZwpsaW5rIHJhdGUsIGxhbmUgY291bnQgcGFpcnMgKGFsdGhvdWdoIEkgdGhpbmsgd2UnbGwg bmVlZCB0aGF0CmV2ZW50dWFsbHkpLgoKPiBBcmUgeW91IHN1Z2dlc3RpbmcganVzdCBjaGFuZ2lu ZyB0aGUgY29tbW9uX3JhdGVzIGFycmF5IGl0c2VsZiB0byBnZXQKPiB0cmltbWVkIHRvIHVzZSB0 aGUgdHJpbW1lZCBmYWxsYmFjayB2YWx1ZXMgYWZ0ZXIgbGluayB0cmFpbmluZyBmYWlscz8KPiBD b3VsZCB5b3UgcGxlYXNlIGVsYWJvcmF0ZSB5b3VyIHRob3VnaHQ/CgpJJ20gbm90IHNheWluZyB5 b3Ugc2hvdWxkIGNoYW5nZSB0aGlzIG5vdy4gQnV0IGhhdmluZyBhIGxvdCBvZiBjb2RlCmNoZWNr IHNvbWUgZmFsbGJhY2sgc3R1ZmYgaXMgdWdseSBhbmQgZXJyb3IgcHJvbmUuIEknbSBqdXN0IGRv Y3VtZW50aW5nCnRoZSBpZGVhcyB0byBtYWtlIHRoaXMgYmV0dGVyLgoKSSB0aGluayB0aGlzIGNv dWxkIGJlIGZpeGVkIGJ5IHN0b3JpbmcgdGhlIGNvbW1vbiByYXRlcyBhcnJheSBhbmQgbWF4Cmxh bmVzIGluIGludGVsX2RwLCBpbnN0ZWFkIG9mIGhhdmluZyB0aGVtIGxvY2FsbHkgaW4gYSBmZXcg ZnVuY3Rpb25zLAphbmQgdGhlbiBtYWtpbmcgdGhlIGxpbmsgcmF0ZSBhbmQgbGFuZSBjb3VudGlu ZyBmdW5jdGlvbnMgYXdhcmUgb2YgdGhlCmZhbGxiYWNrIHN0dWZmLiBFaXRoZXIgdGhlIGZ1bmN0 aW9ucyB3b3VsZCBjaGVjayBmb3IgdGhlIGZhbGxiYWNrcywKY2VudHJhbGl6aW5nIHRoZSBjaGVj a3MgaW4gb25lIHBsYWNlLCBhbmQvb3IgdGhlIGZhbGxiYWNrIGNvZGUgd291bGQKbW9kaWZ5IHRo ZSBjb21tb24gdmFsdWVzIHN0b3JlZCBpbiBpbnRlbF9kcCwgc28gdGhhdCB0aGUgbGluayByYXRl IGFuZApsYW5lIGNvdW50aW5nIGZ1bmN0aW9ucyB3b3VsZCBqdXN0IHdvcmsgd2l0aCB0aGUgZmFs bGJhY2tzLiBDb2RlIHdvdWxkCmJlIHNpbXBsZXIgb3ZlcmFsbC4KCj4gIAo+PiA+ICAJRFJNX0RF QlVHX0tNUygiRFAgbGluayBjb21wdXRhdGlvbiB3aXRoIG1heCBsYW5lIGNvdW50ICVpICIKPj4g PiAgCQkgICAgICAibWF4IGJ3ICVkIHBpeGVsIGNsb2NrICVpS0h6XG4iLAo+PiA+ICAJCSAgICAg IG1heF9sYW5lX2NvdW50LCBjb21tb25fcmF0ZXNbbWF4X2Nsb2NrXSwKPj4gPiBAQCAtNDQyMyw2 ICs0NDM1LDEzIEBAIHN0YXRpYyBib29sIGludGVsX2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiA+ICAJCWludGVsX2RwLT5jb21wbGlh bmNlX3Rlc3RfYWN0aXZlID0gMDsKPj4gPiAgCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5 cGUgPSAwOwo+PiA+ICAJCWludGVsX2RwLT5jb21wbGlhbmNlX3Rlc3RfZGF0YSA9IDA7Cj4+ID4g KwkJaW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkID0gZmFsc2U7Cj4+ID4gKwkJaW50ZWxfZHAt PmZhbGxiYWNrX2xpbmtfcmF0ZV9pbmRleCA9IC0xOwo+PiA+ICsJCWludGVsX2RwLT5mYWxsYmFj a19saW5rX3JhdGUgPSAwOwo+PiA+ICsJCWludGVsX2RwLT5mYWxsYmFja19sYW5lX2NvdW50ID0g MDsKPj4gPiArCQljb25uZWN0b3ItPmxpbmtfc3RhdHVzID0gRFJNX01PREVfTElOS19TVEFUVVNf R09PRDsKPj4gPiArCQlpbnRlbF9kcF9zZXRfbGlua19zdGF0dXNfcHJvcGVydHkoY29ubmVjdG9y LAo+PiA+ICsJCQkJCQkgIERSTV9NT0RFX0xJTktfU1RBVFVTX0dPT0QpOwo+PiA+ICAKPj4gPiAg CQlpZiAoaW50ZWxfZHAtPmlzX21zdCkgewo+PiA+ICAJCQlEUk1fREVCVUdfS01TKCJNU1QgZGV2 aWNlIG1heSBoYXZlIGRpc2FwcGVhcmVkICVkIHZzICVkXG4iLAo+PiA+IEBAIC00NTE0LDggKzQ1 MzMsMTIgQEAgc3RhdGljIGJvb2wgaW50ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ID4gIAlEUk1fREVCVUdfS01TKCJbQ09OTkVD VE9SOiVkOiVzXVxuIiwKPj4gPiAgCQkgICAgICBjb25uZWN0b3ItPmJhc2UuaWQsIGNvbm5lY3Rv ci0+bmFtZSk7Cj4+ID4gIAo+PiA+ICsJLyogSWYgdGhpcyBpcyBhIHJldHJ5IGR1ZSB0byBsaW5r IHRyaWFuaW5nIGZhaWx1cmUgKi8KPj4gPiArCWlmIChzdGF0dXMgPT0gY29ubmVjdG9yX3N0YXR1 c19jb25uZWN0ZWQgJiYgaW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkKQo+PiA+ICsJCXJldHVy biBzdGF0dXM7Cj4+ID4gKwo+PiA+ICAJLyogSWYgZnVsbCBkZXRlY3QgaXMgbm90IHBlcmZvcm1l ZCB5ZXQsIGRvIGEgZnVsbCBkZXRlY3QgKi8KPj4gPiAtCWlmICghaW50ZWxfZHAtPmRldGVjdF9k b25lKQo+PiA+ICsJaWYgKCFpbnRlbF9kcC0+ZGV0ZWN0X2RvbmUgJiYgIWludGVsX2RwLT5saW5r X3RyYWluX2ZhaWxlZCkKPj4gPiAgCQlzdGF0dXMgPSBpbnRlbF9kcF9sb25nX3B1bHNlKGludGVs X2RwLT5hdHRhY2hlZF9jb25uZWN0b3IpOwo+PiA+ICAKPj4gPiAgCWludGVsX2RwLT5kZXRlY3Rf ZG9uZSA9IGZhbHNlOwo+PiA+IEBAIC01NjkyLDYgKzU3MTUsNDcgQEAgc3RhdGljIGJvb2wgaW50 ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4+ID4gIAly ZXR1cm4gZmFsc2U7Cj4+ID4gIH0KPj4gPiAgCj4+ID4gK3N0YXRpYyB2b2lkIGludGVsX2RwX21v ZGVzZXRfcmV0cnlfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4+ID4gK3sKPj4g PiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcjsKPj4gPiArCXN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4+ID4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZTsKPj4gPiArCWJvb2wgdmVyYm9zZV9wcnVuZSA9IHRydWU7Cj4+ID4gKwlib29sIHJl cHJvYmUgPSBmYWxzZTsKPj4gPiArCj4+ID4gKwlpbnRlbF9jb25uZWN0b3IgPSBjb250YWluZXJf b2Yod29yaywgdHlwZW9mKCppbnRlbF9jb25uZWN0b3IpLAo+PiA+ICsJCQkJICAgICAgIG1vZGVz ZXRfcmV0cnlfd29yayk7Cj4+ID4gKwljb25uZWN0b3IgPSAmaW50ZWxfY29ubmVjdG9yLT5iYXNl Owo+PiA+ICsKPj4gPiArCS8qIEdyYWIgdGhlIGxvY2tzIGJlZm9yZSBjaGFuZ2luZyBjb25uZWN0 b3IgcHJvcGVydHkqLwo+PiA+ICsJbXV0ZXhfbG9jaygmY29ubmVjdG9yLT5kZXYtPm1vZGVfY29u ZmlnLm11dGV4KTsKPj4gPiArCURSTV9ERUJVR19LTVMoIltDT05ORUNUT1I6JWQ6JXNdXG4iLCBj b25uZWN0b3ItPmJhc2UuaWQsCj4+ID4gKwkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKPj4gPiAr CWxpc3RfZm9yX2VhY2hfZW50cnkobW9kZSwgJmNvbm5lY3Rvci0+bW9kZXMsIGhlYWQpIHsKPj4g PiArCQltb2RlLT5zdGF0dXMgPSBpbnRlbF9kcF9tb2RlX3ZhbGlkKGNvbm5lY3RvciwKPj4gPiAr CQkJCQkJICAgbW9kZSk7Cj4+ID4gKwkJaWYgKG1vZGUtPnN0YXR1cyAhPSBNT0RFX09LKQo+PiA+ ICsJCQlyZXByb2JlID0gdHJ1ZTsKPj4gPiArCX0KPj4gPiArCWRybV9tb2RlX3BydW5lX2ludmFs aWQoY29ubmVjdG9yLT5kZXYsICZjb25uZWN0b3ItPm1vZGVzLAo+PiA+ICsJCQkgICAgICAgdmVy Ym9zZV9wcnVuZSk7Cj4+ID4gKwo+PiA+ICsJLyogU2V0IGNvbm5lY3RvciBsaW5rIHN0YXR1cyB0 byBCQUQgb25seSBpZiBtb2Rlc2V0IHJlcXVpcmVkCj4+ID4gKwkgKiBmb3IgdGhlIGN1cnJlbnQg bW9kZSwgaWYgbW9kZSBsaXN0IGNoYW5nZWQgdGhlbiBqdXN0IHNlbmQgdWV2ZW50Cj4+ID4gKwkg KiBzbyB0aGF0IGl0IGNhbiByZXByb2JlIHRoZSBjb25uZWN0b3JzIGFuZCB2YWxpZGF0ZSBtb2Rl cyBhbmQgZG8KPj4gPiArCSAqIGEgbW9kZXNldCBvbiBhIGRpZmZlcmVudCB2YWxpZCBtb2RlLgo+ PiA+ICsJICovCj4+ID4gKwlpZiAoIXJlcHJvYmUpIHsKPj4gPiArCQljb25uZWN0b3ItPmxpbmtf c3RhdHVzID0gRFJNX01PREVfTElOS19TVEFUVVNfQkFEOwo+PiA+ICsJCWludGVsX2RwX3NldF9s aW5rX3N0YXR1c19wcm9wZXJ0eShjb25uZWN0b3IsCj4+ID4gKwkJCQkJCSAgRFJNX01PREVfTElO S19TVEFUVVNfQkFEKTsKPj4gPiArCX0KPj4gCj4+IAo+PiBJIHRoaW5rIHRoZSBsaW5rIHN0YXR1 cyBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IHRvIGJhZCB1bmNvbmRpdGlvbmFsbHkKPj4gaGVyZS4g SWYgdGhlIGN1cnJlbnQgbGluayBpcyBiYWQsIGl0IGlzIGJhZCByaWdodCBub3cgaW5kZXBlbmRl bnQgb2YKPj4gbW9kZXMgZml0dGluZyBpbnRvIHRoZSBmYWxsYmFjayBsaW5rIHBhcmFtZXRlcnMu Cj4+IAo+PiBXaGljaCBtYWtlcyBtZSB0aGluaywgdW5sZXNzIEknbSBtaXNzaW5nIHNvbWV0aGlu ZywgdGhhdCB5b3UgbWlnaHQgYmUKPj4gYWJsZSB0byBwcnVuZSB0aGUgaW52YWxpZCBtb2RlcyBh bmQgc2V0IHRoZSBwcm9wZXJ0eSByaWdodCBhd2F5IHdoZW4KPj4gbGluayB0cmFpbmluZyBmYWls cywgYW5kIG9ubHkgdXNlIHRoZSB3b3JrIHRvIGRvCj4+IGRybV9rbXNfaGVscGVyX2hvdHBsdWdf ZXZlbnQuCj4+Cj4KPiBUaGUgcHJvYmxlbSB3aXRoIHNldHRpbmcgdGhlIGxpbmtfc3RhdHVzIHBy b3BlcnR5IEJBRCBpcnJlc3BlY3RpdmUgb2YKPiB0aGUgbW9kZSBwcnVuaW5nIGlzIHRoYXQsIGlm IHRoZSBtb2RlcyBnZXRzIHBydW5lZCBhbmQgd2Ugc2V0IHRoZQo+IGxpbmtfc3R0YXVzIHRvIEJB RCBDaHJpcyBXaWxzb24ncyBkcml2ZXIgY2hlY2tzIHRoYXQgdGhlIGxpbmsgc3RhdHVzCj4gaXMg QkFEIGFuZCBoZSBmaXJzdCB0cmllcyB0byBhdHRlbXB0IHRoZSBtb2Rlc2V0IGF0IHRoZSBjdXJy ZW50IG1vZGUKPiB3aXRob3V0IGNhbGxpbmcgbW9kZV92YWxpZCwgYW5kIHRoYXQgcmVzdWx0cyBp biBhIGZhaWx1cmUgaW4KPiBlbm9jZGVyLT5jb21wdXRlX2NvbmZpZyBzaW5jZSBub3cgdGhlIG1v ZGUgZG9lcyBub3QgZml0IGFuZCB0aGUgcGlwZQo+IGNhbm5vdCBiZSBjb25maWd1cmVkLiBUaGlz IGNyZWF0ZXMgYSBsb3Qgb2Ygd2FybmluZ3MvZXJyb3JzL2tlcm5lbAo+IGNyYXNoIGV2ZW50dWFs bHkuICBTbyB0aGUgYmVzdCB3YXkgaXMgdG8gc2V0IHRoZSBsaW5rIHN0YXR1cyBhcyBiYWQKPiBv bmx5IHdoZW4gd2Ugd2FudCB0byBmb3JjZSB0aGUgbW9kZXNldCBhdCB0aGUgY3VycmVudCBtb2Rl LCBpZiB0aGUKPiBtb2RlcyBnZXQgcHJ1bmVkIHRoZW4gaW4gYW55IGNhc2UgdXNlcnNwYWNlIHdp bGwgZG8gYW5vdGhlciBtb2Rlc2V0IGF0Cj4gdGhlIG5leHQgbG93ZXIgbW9kZS4KCldoeSB3b3Vs ZCB0aGUgdXNlcnNwYWNlIGRyaXZlciByZXRyeSB0aGUgc2FtZSBtb2RlIHdpdGhvdXQgcmVmcmVz aGluZwp0aGUgbW9kZSBsaXN0IGZpcnN0IGlmIGxpbmsgc3RhdHVzIGlzIGJhZD8KCklmIHRoZSBs aW5rIGlzIGJhZCwgdGhlIGxpbmsgaXMgKmJhZCosIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUg Y3VycmVudAptb2RlIG1pZ2h0IGV2ZW50dWFsbHkgd29yayBvciBub3QuIEFuIGludGVyZmFjZSB0 aGF0IHJlcG9ydHMgZ29vZCBvbgpzb21lIHZhbHVlcyBvZiBiYWQgaXMgaW5jb25zaXN0ZW50IChy ZWxhdGVkIHJlYWRpbmcgWzFdKS4gSU1PIHRoZQp1c2Vyc3BhY2Ugc2hvdWxkIGZpcnN0IGZpZ3Vy ZSBvdXQgaWYgdGhlIGN1cnJlbnQgbW9kZSBpcyB2YWxpZCBvciBub3QsCmFuZCB0aGVuIGRlY2lk ZSB3aGF0IHRvIGRvLgoKQ2hyaXMsIGFueSBjb21tZW50cz8KClNpZGUgbm90ZSwgdGhlIGtlcm5l bCBtdXN0IG5vdCBjcmFzaCBkZXBlbmRpbmcgb24gd2hhdCB0aGUgdXNlcnNwYWNlCmRvZXMuCgpC UiwKSmFuaS4KCgpbMV0gaHR0cDovL3N3ZW5nLnRoZS1kYXZpZXMubmV0L0hvbWUvcnVzdHlzLWFw aS1kZXNpZ24tbWFuaWZlc3RvCgo+Cj4gTWFuYXNpIAo+PiA+ICsJbXV0ZXhfdW5sb2NrKCZjb25u ZWN0b3ItPmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+PiA+ICsKPj4gPiArCS8qIFNlbmQgSG90 cGx1ZyB1ZXZlbnQgc28gdXNlcnNwYWNlIGNhbiByZXByb2JlICovCj4+ID4gKwlkcm1fa21zX2hl bHBlcl9ob3RwbHVnX2V2ZW50KGNvbm5lY3Rvci0+ZGV2KTsKPj4gPiArfQo+PiA+ICsKPj4gPiAg Ym9vbAo+PiA+ICBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCwKPj4gPiAgCQkJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50 ZWxfY29ubmVjdG9yKQo+PiA+IEBAIC01NzA0LDYgKzU3NjgsMTAgQEAgc3RhdGljIGJvb2wgaW50 ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4+ID4gIAll bnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5wb3J0Owo+PiA+ICAJaW50IHR5cGU7Cj4+ ID4gIAo+PiA+ICsJLyogSW5pdGlhbGl6ZSB0aGUgd29yayBmb3IgbW9kZXNldCBpbiBjYXNlIG9m IGxpbmsgdHJhaW4gZmFpbHVyZSAqLwo+PiA+ICsJSU5JVF9XT1JLKCZpbnRlbF9jb25uZWN0b3It Pm1vZGVzZXRfcmV0cnlfd29yaywKPj4gPiArCQkgIGludGVsX2RwX21vZGVzZXRfcmV0cnlfd29y a19mbik7Cj4+ID4gKwo+PiA+ICAJaWYgKFdBUk4oaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lcyA8 IDEsCj4+ID4gIAkJICJOb3QgZW5vdWdoIGxhbmVzICglZCkgZm9yIERQIG9uIHBvcnQgJWNcbiIs Cj4+ID4gIAkJIGludGVsX2RpZ19wb3J0LT5tYXhfbGFuZXMsIHBvcnRfbmFtZShwb3J0KSkpCj4+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5p bmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+PiA+ IGluZGV4IDAwNDhiNTIuLjEwZjgxYWIgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4+ID4gQEAgLTMxMCw5ICszMTAsMTUgQEAg dm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK Pj4gPiAgCQkJCURQX1RSQUlOSU5HX1BBVFRFUk5fRElTQUJMRSk7Cj4+ID4gIH0KPj4gPiAgCj4+ ID4gLXZvaWQKPj4gPiArYm9vbAo+PiA+ICBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+ID4gIHsKPj4gPiAtCWludGVsX2RwX2xpbmtfdHJhaW5p bmdfY2xvY2tfcmVjb3ZlcnkoaW50ZWxfZHApOwo+PiA+IC0JaW50ZWxfZHBfbGlua190cmFpbmlu Z19jaGFubmVsX2VxdWFsaXphdGlvbihpbnRlbF9kcCk7Cj4+ID4gKwlib29sIHJldDsKPj4gPiAr Cj4+ID4gKwlpZiAoaW50ZWxfZHBfbGlua190cmFpbmluZ19jbG9ja19yZWNvdmVyeShpbnRlbF9k cCkpIHsKPj4gPiArCQlyZXQgPSBpbnRlbF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxp emF0aW9uKGludGVsX2RwKTsKPj4gPiArCQlpZiAocmV0KQo+PiA+ICsJCQlyZXR1cm4gdHJ1ZTsK Pj4gPiArCX0KPj4gPiArCXJldHVybiBmYWxzZTsKPj4gPiAgfQo+PiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4+ID4gaW5kZXggYmMyNWIyYi4uYTU0ZTliNyAxMDA2NDQKPj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4+ID4gQEAgLTMxMiw2ICszMTIsOSBAQCBzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yIHsKPj4gPiAgCXZvaWQgKnBvcnQ7IC8qIHN0b3JlIHRoaXMgb3BhcXVlIGFzIGl0 cyBpbGxlZ2FsIHRvIGRlcmVmZXJlbmNlIGl0ICovCj4+ID4gIAo+PiA+ICAJc3RydWN0IGludGVs X2RwICptc3RfcG9ydDsKPj4gPiArCj4+ID4gKwkvKiBXb3JrIHN0cnVjdCB0byBzY2hlZHVsZSBh IHVldmVudCBvbiBsaW5rIHRyYWluIGZhaWx1cmUgKi8KPj4gPiArCXN0cnVjdCB3b3JrX3N0cnVj dCBtb2Rlc2V0X3JldHJ5X3dvcms7Cj4+ID4gIH07Cj4+ID4gIAo+PiA+ICBzdHJ1Y3QgZHBsbCB7 Cj4+ID4gQEAgLTE0MDIsNyArMTQwNSw3IEBAIHZvaWQgaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1z KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4+ID4gIAkJCSAgICAgIGJvb2wgbGlua19tc3Qp Owo+PiA+ICB2b2lkIGludGVsX2RwX2dldF9saW5rX3RyYWluX2ZhbGxiYWNrX3ZhbHVlcyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+PiA+ICAJCQkJCSAgICAgaW50IGxpbmtfcmF0ZSwgdWlu dDhfdCBsYW5lX2NvdW50KTsKPj4gPiAtdm9pZCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+PiA+ICtib29sIGludGVsX2RwX3N0YXJ0X2xpbmtf dHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4+ID4gIHZvaWQgaW50ZWxfZHBfc3Rv cF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+PiA+ICB2b2lkIGludGVs X2RwX3NpbmtfZHBtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgbW9kZSk7Cj4+ID4g IHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9yZXNldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIp Owo+PiAKPj4gLS0gCj4+IEphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5 IENlbnRlcgoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENl bnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK