From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 5/5] drm/i915: Implement Link Rate fallback on Link training failure Date: Fri, 18 Nov 2016 15:31:48 +0200 Message-ID: <87shqoykvv.fsf@intel.com> References: <1479453200-27705-6-git-send-email-manasi.d.navare@intel.com> <1479454189-28345-1-git-send-email-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1479454189-28345-1-git-send-email-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: Manasi Navare , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCAxOCBOb3YgMjAxNiwgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVs LmNvbT4gd3JvdGU6Cj4gSWYgbGluayB0cmFpbmluZyBhdCBhIGxpbmsgcmF0ZSBvcHRpbWFsIGZv ciBhIHBhcnRpY3VsYXIKPiBtb2RlIGZhaWxzIGR1cmluZyBtb2Rlc2V0J3MgYXRvbWljIGNvbW1p dCBwaGFzZSwgdGhlbiB3ZQo+IGxldCB0aGUgbW9kZXNldCBjb21wbGV0ZSBhbmQgdGhlbiByZXRy eS4gV2Ugc2F2ZSB0aGUgbGluayByYXRlCj4gdmFsdWUgYXQgd2hpY2ggbGluayB0cmFpbmluZyBm YWlsZWQsIHVwZGF0ZSB0aGUgbGluayBzdGF0dXMgcHJvcGVydHkKPiB0byAiQkFEIiBhbmQgdXNl IGEgbG93ZXIgbGluayByYXRlIHRvIHBydW5lIHRoZSBtb2Rlcy4gSXQgd2lsbCByZWRvCj4gdGhl IG1vZGVzZXQgb24gdGhlIGN1cnJlbnQgbW9kZSBhdCBsb3dlciBsaW5rIHJhdGUgb3IgaWYgdGhl IGN1cnJlbnQKPiBtb2RlIGdldHMgcHJ1bmVkIGR1ZSB0byBsb3dlciBsaW5rIGNvbnN0cmFpbnRz IHRoZW4sIGl0IHdpbGwgc2VuZCBhCj4gaG90cGx1ZyB1ZXZlbnQgZm9yIHVzZXJzcGFjZSB0byBo YW5kbGUgaXQuCj4KPiBUaGlzIGlzIGFsc28gcmVxdWlyZWQgdG8gcGFzcyBEUCBDVFMgdGVzdHMg NC4zLjEuMywgNC4zLjEuNCwKPiA0LjMuMS42Lgo+Cj4gdjc6Cj4gUmVtb3ZlIHRoZSByZWR1bmRh bnQgdmFyaWFibGUgaW4gcHJldmlvdXMgcGF0Y2ggaXRzZWxmCj4gdjY6Cj4gKiBPYnRhaW4gbGlu ayByYXRlIGluZGV4IGZyb20gZmFsbGJhY2tfbGlua19yYXRlIHVzaW5nCj4gdGhlIGhlbHBlciBp bnRlbF9kcF9saW5rX3JhdGVfaW5kZXggKEphbmkgTmlrdWxhKQo+ICogSW5jbHVkZSBmYWxsYmFj ayB3aXRoaW4gaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbiAoSmFuaSBOaWt1bGEpCj4gdjU6Cj4g KiBNb3ZlIHNldCBsaW5rIHN0YXR1cyB0byBkcm0gY29yZSAoRGFuaWVsIFZldHRlciwgSmFuaSBO aWt1bGEpCj4gdjQ6Cj4gKiBBZGQgZmFsbGJhY2sgc3VwcG9ydCBmb3Igbm9uIERESSBwbGF0Zm9y bXMgdG9vCj4gKiBTZXQgY29ubmVjdG9yLT5saW5rIHN0YXR1cyBpbnNpZGUgc2V0X2xpbmtfc3Rh dHVzIGZ1bmN0aW9uCj4gKEphbmkgTmlrdWxhKQo+IHYzOgo+ICogU2V0IGxpbmsgc3RhdHVzIHBy b3BlcnR5IHRvIEJBZCB1bmNvbmRpdGlvbmFsbHkgKEphbmkgTmlrdWxhKQo+ICogRG9udCB1c2Ug dHdvIHNlcGFyYXRlIHZhcmlhYmxlcyBsaW5rX3RyYWluX2ZhaWxlZCBhbmQgbGlua19zdGF0dXMK PiB0byBpbmRpY2F0ZSBzYW1lIHRoaW5nIChKYW5pIE5pa3VsYSkKPiB2MjoKPiAqIFNxdWFzaGVk IGEgZmV3IHBhdGNoZXMgKEphbmkgTmlrdWxhKQo+Cj4gQWNrZWQtYnk6IFRvbnkgQ2hlbmcgPHRv bnkuY2hlbmdAYW1kLmNvbT4KPiBBY2tlZC1ieTogSGFycnkgV2VudGxhbmQgPEhhcnJ5LndlbnRs YW5kQGFtZC5jb20+Cj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5j b20+Cj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgo+IENjOiBW aWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiBTaWduZWQtb2Zm LWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+IC0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAgICAgICAgfCA2MyArKysrKysr KysrKysrKysrKysrKysrKysrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlu a190cmFpbmluZy5jIHwgMjggKysrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oICAgICAgICAgICAgICB8ICAzICsrCj4gIDMgZmlsZXMgY2hhbmdlZCwgOTAgaW5z ZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGlu ZGV4IDRmYjg5ZTEuLmE1NmEzNGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAt MzUxLDggKzM1MSwxNCBAQCBpbnQgaW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJhY2tfdmFs dWVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJdGFyZ2V0X2Nsb2NrID0gZml4ZWRf bW9kZS0+Y2xvY2s7Cj4gIAl9Cj4gIAo+IC0JbWF4X2xpbmtfY2xvY2sgPSBpbnRlbF9kcF9tYXhf bGlua19yYXRlKGludGVsX2RwKTsKPiAtCW1heF9sYW5lcyA9IGludGVsX2RwX21heF9sYW5lX2Nv dW50KGludGVsX2RwKTsKPiArCS8qIFBydW5lIHRoZSBtb2RlcyB1c2luZyB0aGUgZmFsbGJhY2sg bGluayByYXRlL2xhbmUgY291bnQgKi8KPiArCWlmIChjb25uZWN0b3ItPmxpbmtfc3RhdHVzID09 IERSTV9NT0RFX0xJTktfU1RBVFVTX0JBRCkgewo+ICsJCW1heF9saW5rX2Nsb2NrID0gaW50ZWxf ZHAtPmZhbGxiYWNrX2xpbmtfcmF0ZTsKPiArCQltYXhfbGFuZXMgPSBpbnRlbF9kcC0+ZmFsbGJh Y2tfbGFuZV9jb3VudDsKPiArCX0gZWxzZSB7Cj4gKwkJbWF4X2xpbmtfY2xvY2sgPSBpbnRlbF9k cF9tYXhfbGlua19yYXRlKGludGVsX2RwKTsKPiArCQltYXhfbGFuZXMgPSBpbnRlbF9kcF9tYXhf bGFuZV9jb3VudChpbnRlbF9kcCk7Cj4gKwl9Cj4gIAo+ICAJbWF4X3JhdGUgPSBpbnRlbF9kcF9t YXhfZGF0YV9yYXRlKG1heF9saW5rX2Nsb2NrLCBtYXhfbGFuZXMpOwo+ICAJbW9kZV9yYXRlID0g aW50ZWxfZHBfbGlua19yZXF1aXJlZCh0YXJnZXRfY2xvY2ssIDE4KTsKPiBAQCAtMTU4OCw2ICsx NTk0LDcgQEAgc3RhdGljIGludCBpbnRlbF9kcF9jb21wdXRlX2JwcChzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLAo+ICAJZW51bSBwb3J0IHBvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCkt PnBvcnQ7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo cGlwZV9jb25maWctPmJhc2UuY3J0Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRl bF9jb25uZWN0b3IgPSBpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOwo+ICsJc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9jb25uZWN0b3ItPmJhc2U7Cj4gIAlpbnQg bGFuZV9jb3VudCwgY2xvY2s7Cj4gIAlpbnQgbWluX2xhbmVfY291bnQgPSAxOwo+ICAJaW50IG1h eF9sYW5lX2NvdW50ID0gaW50ZWxfZHBfbWF4X2xhbmVfY291bnQoaW50ZWxfZHApOwo+IEBAIC0x NjM1LDYgKzE2NDIsMTQgQEAgc3RhdGljIGludCBpbnRlbF9kcF9jb21wdXRlX2JwcChzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLAo+ICAJaWYgKGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01P REVfRkxBR19EQkxDTEspCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiArCS8qIEZhbGwgYmFjayB0 byBsb3dlciBsaW5rIHJhdGUgaW4gY2FzZSBvZiBmYWlsdXJlIGluIHByZXZpb3VzIG1vZGVzZXQg Ki8KPiArCWlmIChjb25uZWN0b3ItPmxpbmtfc3RhdHVzID09IERSTV9NT0RFX0xJTktfU1RBVFVT X0JBRCkgewo+ICsJCW1pbl9sYW5lX2NvdW50ID0gbWF4X2xhbmVfY291bnQgPSBpbnRlbF9kcC0+ ZmFsbGJhY2tfbGFuZV9jb3VudDsKPiArCQltaW5fY2xvY2sgPSBtYXhfY2xvY2sgPSBpbnRlbF9k cF9saW5rX3JhdGVfaW5kZXgoaW50ZWxfZHAsCj4gKwkJCQkJCQkJIGNvbW1vbl9yYXRlcywKPiAr CQkJCQkJCQkgaW50ZWxfZHAtPmZhbGxiYWNrX2xpbmtfcmF0ZSk7Cj4gKwl9Cj4gKwo+ICAJRFJN X0RFQlVHX0tNUygiRFAgbGluayBjb21wdXRhdGlvbiB3aXRoIG1heCBsYW5lIGNvdW50ICVpICIK PiAgCQkgICAgICAibWF4IGJ3ICVkIHBpeGVsIGNsb2NrICVpS0h6XG4iLAo+ICAJCSAgICAgIG1h eF9sYW5lX2NvdW50LCBjb21tb25fcmF0ZXNbbWF4X2Nsb2NrXSwKPiBAQCAtNDQxNSw2ICs0NDMw LDEwIEBAIHN0YXRpYyBib29sIGludGVsX2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCWludGVsX2RwLT5jb21wbGlhbmNlX3Rlc3Rf YWN0aXZlID0gMDsKPiAgCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5cGUgPSAwOwo+ICAJ CWludGVsX2RwLT5jb21wbGlhbmNlX3Rlc3RfZGF0YSA9IDA7Cj4gKwkJaW50ZWxfZHAtPmZhbGxi YWNrX2xpbmtfcmF0ZSA9IDA7Cj4gKwkJaW50ZWxfZHAtPmZhbGxiYWNrX2xhbmVfY291bnQgPSAw Owo+ICsJCWRybV9tb2RlX2Nvbm5lY3Rvcl9zZXRfbGlua19zdGF0dXNfcHJvcGVydHkoY29ubmVj dG9yLAo+ICsJCQkJCQkJICAgIERSTV9NT0RFX0xJTktfU1RBVFVTX0dPT0QpOwo+ICAKPiAgCQlp ZiAoaW50ZWxfZHAtPmlzX21zdCkgewo+ICAJCQlEUk1fREVCVUdfS01TKCJNU1QgZGV2aWNlIG1h eSBoYXZlIGRpc2FwcGVhcmVkICVkIHZzICVkXG4iLAo+IEBAIC00NTA2LDYgKzQ1MjUsMTEgQEAg c3RhdGljIGJvb2wgaW50ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXVxu IiwKPiAgCQkgICAgICBjb25uZWN0b3ItPmJhc2UuaWQsIGNvbm5lY3Rvci0+bmFtZSk7Cj4gIAo+ ICsJLyogSWYgdGhpcyBpcyBhIHJldHJ5IGR1ZSB0byBsaW5rIHRyaWFuaW5nIGZhaWx1cmUgKi8K PiArCWlmIChzdGF0dXMgPT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQgJiYKPiArCSAgICBj b25uZWN0b3ItPmxpbmtfc3RhdHVzID09IERSTV9NT0RFX0xJTktfU1RBVFVTX0JBRCkKPiArCQly ZXR1cm4gc3RhdHVzOwo+ICsKPiAgCS8qIElmIGZ1bGwgZGV0ZWN0IGlzIG5vdCBwZXJmb3JtZWQg eWV0LCBkbyBhIGZ1bGwgZGV0ZWN0ICovCj4gIAlpZiAoIWludGVsX2RwLT5kZXRlY3RfZG9uZSkK PiAgCQlzdGF0dXMgPSBpbnRlbF9kcF9sb25nX3B1bHNlKGludGVsX2RwLT5hdHRhY2hlZF9jb25u ZWN0b3IpOwo+IEBAIC01NjcxLDYgKzU2OTUsMzcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2lu aXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAlyZXR1cm4gZmFsc2U7 Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGludGVsX2RwX21vZGVzZXRfcmV0cnlfd29ya19mbihz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmludGVsX2Nvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4g KwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPiArCWJvb2wgdmVyYm9zZV9wcnVuZSA9 IHRydWU7CgpOaXRwaWNrLCB0b3RhbGx5IHVubmVjZXNzYXJ5IHRlbXBvcmFyeSB2YXJpYWJsZS4K Cj4gKwo+ICsJaW50ZWxfY29ubmVjdG9yID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqaW50 ZWxfY29ubmVjdG9yKSwKPiArCQkJCSAgICAgICBtb2Rlc2V0X3JldHJ5X3dvcmspOwo+ICsJY29u bmVjdG9yID0gJmludGVsX2Nvbm5lY3Rvci0+YmFzZTsKPiArCj4gKwkvKiBHcmFiIHRoZSBsb2Nr cyBiZWZvcmUgY2hhbmdpbmcgY29ubmVjdG9yIHByb3BlcnR5Ki8KPiArCW11dGV4X2xvY2soJmNv bm5lY3Rvci0+ZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gKwlEUk1fREVCVUdfS01TKCJbQ09O TkVDVE9SOiVkOiVzXVxuIiwgY29ubmVjdG9yLT5iYXNlLmlkLAo+ICsJCSAgICAgIGNvbm5lY3Rv ci0+bmFtZSk7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1vZGUsICZjb25uZWN0b3ItPm1vZGVz LCBoZWFkKSB7Cj4gKwkJbW9kZS0+c3RhdHVzID0gaW50ZWxfZHBfbW9kZV92YWxpZChjb25uZWN0 b3IsCj4gKwkJCQkJCSAgIG1vZGUpOwo+ICsJfQoKVGhlIGZpcnN0IHRpbWUgd2UgZW5kIHVwIGhl cmUsIHdlJ2xsIHN0aWxsIGhhdmUgImdvb2QiIGxpbmsgc3RhdHVzLCBhbmQKdGhlIGZhbGxiYWNr IHZhbHVlcyB3b24ndCBiZSB0YWtlbiBpbnRvIGFjY291bnQgaW4KaW50ZWxfZHBfbW9kZV92YWxp ZCgpLiBJZiB0aGVyZSBhcmUgbW9kZXMgdGhhdCBubyBsb25nZXIgZml0IGludG8gdGhlCmZhbGxi YWNrIHZhbHVlcywgY29tcHV0ZSBjb25maWcgd2lsbCBmYWlsIG9mZiB0aGUgYmF0IHRoZSBuZXh0 IHRpbWUKYXJvdW5kLiBTbyBJIHRoaW5rIHlvdSBzaG91bGQgc2V0IGxpbmsgc3RhdHVzIHRvIGJh ZCBmaXJzdC4KCkJSLApKYW5pLgoKPiArCWRybV9tb2RlX3BydW5lX2ludmFsaWQoY29ubmVjdG9y LT5kZXYsICZjb25uZWN0b3ItPm1vZGVzLAo+ICsJCQkgICAgICAgdmVyYm9zZV9wcnVuZSk7Cj4g KwkvKiBTZXQgY29ubmVjdG9yIGxpbmsgc3RhdHVzIHRvIEJBRCBhbmQgc2VuZCBhIFVldmVudCB0 byBub3RpZnkKPiArCSAqIHVzZXJzcGFjZSB0byBkbyBhIG1vZGVzZXQuCj4gKwkgKi8KPiArCWRy bV9tb2RlX2Nvbm5lY3Rvcl9zZXRfbGlua19zdGF0dXNfcHJvcGVydHkoY29ubmVjdG9yLAo+ICsJ CQkJCQkgICAgRFJNX01PREVfTElOS19TVEFUVVNfQkFEKTsKPiArCW11dGV4X3VubG9jaygmY29u bmVjdG9yLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiArCS8qIFNlbmQgSG90cGx1ZyB1ZXZl bnQgc28gdXNlcnNwYWNlIGNhbiByZXByb2JlICovCj4gKwlkcm1fa21zX2hlbHBlcl9ob3RwbHVn X2V2ZW50KGNvbm5lY3Rvci0+ZGV2KTsKPiArfQo+ICsKPiAgYm9vbAo+ICBpbnRlbF9kcF9pbml0 X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiAg CQkJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQo+IEBAIC01NjgzLDYg KzU3MzgsMTAgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsCj4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5w b3J0Owo+ICAJaW50IHR5cGU7Cj4gIAo+ICsJLyogSW5pdGlhbGl6ZSB0aGUgd29yayBmb3IgbW9k ZXNldCBpbiBjYXNlIG9mIGxpbmsgdHJhaW4gZmFpbHVyZSAqLwo+ICsJSU5JVF9XT1JLKCZpbnRl bF9jb25uZWN0b3ItPm1vZGVzZXRfcmV0cnlfd29yaywKPiArCQkgIGludGVsX2RwX21vZGVzZXRf cmV0cnlfd29ya19mbik7Cj4gKwo+ICAJaWYgKFdBUk4oaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5l cyA8IDEsCj4gIAkJICJOb3QgZW5vdWdoIGxhbmVzICglZCkgZm9yIERQIG9uIHBvcnQgJWNcbiIs Cj4gIAkJIGludGVsX2RpZ19wb3J0LT5tYXhfbGFuZXMsIHBvcnRfbmFtZShwb3J0KSkpCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+IGluZGV4IDAw NDhiNTIuLmNjMjQzZGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHBfbGlua190cmFpbmluZy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBf bGlua190cmFpbmluZy5jCj4gQEAgLTMxMyw2ICszMTMsMzAgQEAgdm9pZCBpbnRlbF9kcF9zdG9w X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgdm9pZAo+ICBpbnRlbF9k cF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIHsKPiAtCWlu dGVsX2RwX2xpbmtfdHJhaW5pbmdfY2xvY2tfcmVjb3ZlcnkoaW50ZWxfZHApOwo+IC0JaW50ZWxf ZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihpbnRlbF9kcCk7Cj4gKwlzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IgPSBpbnRlbF9kcC0+YXR0YWNoZWRf Y29ubmVjdG9yOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9j b25uZWN0b3ItPmJhc2U7Cj4gKwo+ICsJaWYgKCFpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2Nr X3JlY292ZXJ5KGludGVsX2RwKSkKPiArCQlnb3RvIGZhaWx1cmVfaGFuZGxpbmc7Cj4gKwlpZiAo IWludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24oaW50ZWxfZHApKQo+ ICsJCWdvdG8gZmFpbHVyZV9oYW5kbGluZzsKPiArCj4gKwkvKiBSZXNldCB0aGUgTGluayBUcmFp biBWYWx1ZXMgKi8KPiArCURSTV9ERUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgUGFzc2VkIGF0IExp bmsgUmF0ZSA9ICVkLCBMYW5lIGNvdW50ID0gJWQiLAo+ICsJCSAgICAgIGludGVsX2RwLT5saW5r X3JhdGUsIGludGVsX2RwLT5sYW5lX2NvdW50KTsKPiArCWludGVsX2RwLT5mYWxsYmFja19saW5r X3JhdGUgPSAwOwo+ICsJaW50ZWxfZHAtPmZhbGxiYWNrX2xhbmVfY291bnQgPSAwOwo+ICsJZHJt X21vZGVfY29ubmVjdG9yX3NldF9saW5rX3N0YXR1c19wcm9wZXJ0eShjb25uZWN0b3IsCj4gKwkJ CQkJCSAgICBEUk1fTU9ERV9MSU5LX1NUQVRVU19HT09EKTsKPiArCXJldHVybjsKPiArCj4gKyBm YWlsdXJlX2hhbmRsaW5nOgo+ICsJRFJNX0RFQlVHX0tNUygiTGluayBUcmFpbmluZyBmYWlsZWQg YXQgbGluayByYXRlID0gJWQsIGxhbmUgY291bnQgPSAlZCIsCj4gKwkJICAgICAgaW50ZWxfZHAt PmxpbmtfcmF0ZSwgaW50ZWxfZHAtPmxhbmVfY291bnQpOwo+ICsJaWYgKCFpbnRlbF9kcF9nZXRf bGlua190cmFpbl9mYWxsYmFja192YWx1ZXMoaW50ZWxfZHAsCj4gKwkJCQkJCSAgICAgaW50ZWxf ZHAtPmxpbmtfcmF0ZSwKPiArCQkJCQkJICAgICBpbnRlbF9kcC0+bGFuZV9jb3VudCkpCj4gKwkJ LyogU2NoZWR1bGUgYSBIb3RwbHVnIFVldmVudCB0byB1c2Vyc3BhY2UgdG8gc3RhcnQgbW9kZXNl dCAqLwo+ICsJCXNjaGVkdWxlX3dvcmsoJmludGVsX2Nvbm5lY3Rvci0+bW9kZXNldF9yZXRyeV93 b3JrKTsKPiArCXJldHVybjsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXgg ZTFjNDNhOS4uMzNiZTY2ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTMx NSw2ICszMTUsOSBAQCBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKPiAgCXZvaWQgKnBvcnQ7IC8q IHN0b3JlIHRoaXMgb3BhcXVlIGFzIGl0cyBpbGxlZ2FsIHRvIGRlcmVmZXJlbmNlIGl0ICovCj4g IAo+ICAJc3RydWN0IGludGVsX2RwICptc3RfcG9ydDsKPiArCj4gKwkvKiBXb3JrIHN0cnVjdCB0 byBzY2hlZHVsZSBhIHVldmVudCBvbiBsaW5rIHRyYWluIGZhaWx1cmUgKi8KPiArCXN0cnVjdCB3 b3JrX3N0cnVjdCBtb2Rlc2V0X3JldHJ5X3dvcms7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgZHBsbCB7 CgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=