From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH v2 3/5] drm/i915: Move SST DP link retraining into the ->post_hotplug() hook Date: Tue, 30 Jan 2018 18:16:59 -0500 Message-ID: <1517354219.4938.24.camel@redhat.com> References: <20180117192149.17760-1-ville.syrjala@linux.intel.com> <20180117192149.17760-3-ville.syrjala@linux.intel.com> Reply-To: lyude@redhat.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt0-f194.google.com (mail-qt0-f194.google.com [209.85.216.194]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5A2E86EB35 for ; Tue, 30 Jan 2018 23:17:02 +0000 (UTC) Received: by mail-qt0-f194.google.com with SMTP id d8so19563186qtm.0 for ; Tue, 30 Jan 2018 15:17:02 -0800 (PST) In-Reply-To: <20180117192149.17760-3-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville Syrjala , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE4LTAxLTE3IGF0IDIxOjIxICswMjAwLCBWaWxsZSBTeXJqYWxhIHdyb3RlOgo+ IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4g Cj4gRG9pbmcgbGluayByZXRyYWluaW5nIGZyb20gdGhlIHNob3J0IHB1bHNlIGhhbmRsZXIgaXMg cHJvYmxlbWF0aWMgc2luY2UKPiB0aGF0IG1pZ2h0IGludHJvZHVjZSBkZWFkbG9ja3Mgd2l0aCBN U1Qgc2lkZWJhbmQgcHJvY2Vzc2luZy4gQ3VycmVudGx5Cj4gd2UgZG9uJ3QgcmV0cmFpbiBNU1Qg bGlua3MgZnJvbSB0aGlzIGNvZGUsIGJ1dCB3ZSB3YW50IHRvIGNoYW5nZSB0aGF0Lgo+IFNvIGJl dHRlciB0byBtb3ZlIHRoZSBlbnRpcmUgdGhpbmcgdG8gdGhlIGhvdHBsdWcgd29yay4gV2UgY2Fu IHV0aWxpemUKPiB0aGUgbmV3IGVuY29kZXItPmhvdHBsdWcoKSBob29rIGZvciB0aGlzLgo+IAo+ IFRoZSBvbmx5IHRoaW5nIHdlIGxlYXZlIGluIHRoZSBzaG9ydCBwdWxzZSBoYW5kbGVyIGlzIHRo ZSBsaW5rIHN0YXR1cwo+IGNoZWNrLiBUaGF0IG9uZSBzdGlsbCBkZXBlbmRzIG9uIHRoZSBsaW5r IHBhcmFtZXRlcnMgc3RvcmVkIHVuZGVyCj4gaW50ZWxfZHAsIHNvIG5vIGxvY2tpbmcgYXJvdW5k IHRoYXQgYnV0IHJhY2VzIHNob3VsZCBiZSBtb3N0bHkgaGFybWxlc3MKPiBhcyB0aGUgYWN0dWFs IHJldHJhaW5pbmcgY29kZSB3aWxsIHJlY2hlY2sgdGhlIGxpbmsgc3RhdGUgaWYgd2UKPiBlbmQg dXAgdGhlcmUgYnkgbWlzdGFrZS4KPiAKPiB2MjogUmViYXNlIGR1ZSB0byAtPnBvc3RfaG90cGx1 ZygpIG5vdyBiZWluZyBqdXN0IC0+aG90cGx1ZygpCj4gICAgIENoZWNrIHRoZSBjb25uZWN0b3Ig dHlwZSB0byBmaWd1cmUgb3V0IGlmIHdlIHNob3VsZCBkbwo+ICAgICB0aGUgSERNSSB0aGluZyBv ciB0aGUgRFAgdGhpbmsgZm9yIERESQo+IAo+IENjOiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5u YXZhcmVAaW50ZWwuY29tPgo+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9y c3RAbGludXguaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmls bGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jIHwgIDEwICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMg IHwgMTk2ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+IC0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCB8ICAgMiArCj4gIDMgZmlsZXMgY2hhbmdlZCwg MTIwIGluc2VydGlvbnMoKyksIDg4IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGRpLmMKPiBpbmRleCAyNTc5M2JkYzY5MmYuLjVmM2Q1OGYxYWU2ZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jCj4gQEAgLTI4ODAsNyArMjg4MCwxMCBAQCBzdGF0aWMgYm9vbCBp bnRlbF9kZGlfaG90cGx1ZyhzdHJ1Y3QgaW50ZWxfZW5jb2Rlcgo+ICplbmNvZGVyLAo+ICAJZHJt X21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwo+ICAKPiAgCWZvciAoOzspIHsKPiAtCQly ZXQgPSBpbnRlbF9oZG1pX3Jlc2V0X2xpbmsoZW5jb2RlciwgJmN0eCk7Cj4gKwkJaWYgKGNvbm5l Y3Rvci0+YmFzZS5jb25uZWN0b3JfdHlwZSA9PQo+IERSTV9NT0RFX0NPTk5FQ1RPUl9IRE1JQSkK PiArCQkJcmV0ID0gaW50ZWxfaGRtaV9yZXNldF9saW5rKGVuY29kZXIsICZjdHgpOwo+ICsJCWVs c2UKPiArCQkJcmV0ID0gaW50ZWxfZHBfcmV0cmFpbl9saW5rKGVuY29kZXIsICZjdHgpOwo+ICAK PiAgCQlpZiAocmV0ID09IC1FREVBRExLKSB7Cj4gIAkJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0 eCk7Cj4gQEAgLTMwMDcsMTAgKzMwMTAsNyBAQCB2b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBlbnVtIHBvcnQgcG9ydCkKPiAgCWRybV9lbmNv ZGVyX2luaXQoJmRldl9wcml2LT5kcm0sIGVuY29kZXIsICZpbnRlbF9kZGlfZnVuY3MsCj4gIAkJ CSBEUk1fTU9ERV9FTkNPREVSX1RNRFMsICJEREkgJWMiLCBwb3J0X25hbWUocG9ydCkpOwo+ICAK PiAtCWlmIChpbml0X2hkbWkpCj4gLQkJaW50ZWxfZW5jb2Rlci0+aG90cGx1ZyA9IGludGVsX2Rk aV9ob3RwbHVnOwo+IC0JZWxzZQo+IC0JCWludGVsX2VuY29kZXItPmhvdHBsdWcgPSBpbnRlbF9l bmNvZGVyX2hvdHBsdWc7Cj4gKwlpbnRlbF9lbmNvZGVyLT5ob3RwbHVnID0gaW50ZWxfZGRpX2hv dHBsdWc7Cj4gIAlpbnRlbF9lbmNvZGVyLT5jb21wdXRlX291dHB1dF90eXBlID0gaW50ZWxfZGRp X2NvbXB1dGVfb3V0cHV0X3R5cGU7Cj4gIAlpbnRlbF9lbmNvZGVyLT5jb21wdXRlX2NvbmZpZyA9 IGludGVsX2RkaV9jb21wdXRlX2NvbmZpZzsKPiAgCWludGVsX2VuY29kZXItPmVuYWJsZSA9IGlu dGVsX2VuYWJsZV9kZGk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggNmJiZjE0NDEw YzJhLi4xNTIwMTZlMDlhMTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtNDI3 NSwxMiArNDI3NSw4MyBAQCBpbnRlbF9kcF9jaGVja19tc3Rfc3RhdHVzKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCj4gIAlyZXR1cm4gLUVJTlZBTDsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQK PiAtaW50ZWxfZHBfcmV0cmFpbl9saW5rKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gK3N0 YXRpYyBib29sCj4gK2ludGVsX2RwX25lZWRzX2xpbmtfcmV0cmFpbihzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQo+ICt7Cj4gKwl1OCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXTsK PiArCj4gKwlpZiAoIWludGVsX2RwX2dldF9saW5rX3N0YXR1cyhpbnRlbF9kcCwgbGlua19zdGF0 dXMpKSB7Cj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGxpbmsgc3RhdHVzXG4iKTsKPiAr CQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIFZhbGlkYXRlIHRoZSBjYWNo ZWQgdmFsdWVzIG9mIGludGVsX2RwLT5saW5rX3JhdGUgYW5kCj4gKwkgKiBpbnRlbF9kcC0+bGFu ZV9jb3VudCBiZWZvcmUgYXR0ZW1wdGluZyB0byByZXRyYWluLgo+ICsJICovCj4gKwlpZiAoIWlu dGVsX2RwX2xpbmtfcGFyYW1zX3ZhbGlkKGludGVsX2RwLCBpbnRlbF9kcC0+bGlua19yYXRlLAo+ ICsJCQkJCWludGVsX2RwLT5sYW5lX2NvdW50KSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJ LyogUmV0cmFpbiBpZiBDaGFubmVsIEVRIG9yIENSIG5vdCBvayAqLwo+ICsJcmV0dXJuICFkcm1f ZHBfY2hhbm5lbF9lcV9vayhsaW5rX3N0YXR1cywgaW50ZWxfZHAtPmxhbmVfY291bnQpOwo+ICt9 Cj4gKwo+ICsvKgo+ICsgKiBJZiBkaXNwbGF5IGlzIG5vdyBjb25uZWN0ZWQgY2hlY2sgbGlua3Mg c3RhdHVzLAo+ICsgKiB0aGVyZSBoYXMgYmVlbiBrbm93biBpc3N1ZXMgb2YgbGluayBsb3NzIHRy aWdnZXJpbmcKPiArICogbG9uZyBwdWxzZS4KPiArICoKPiArICogU29tZSBzaW5rcyAoZWcuIEFT VVMgUEIyODdRKSBzZWVtIHRvIHBlcmZvcm0gc29tZQo+ICsgKiB3ZWlyZCBIUEQgcGluZyBwb25n IGR1cmluZyBtb2Rlc2V0cy4gU28gd2UgY2FuIGFwcGFyZW50bHkKPiArICogZW5kIHVwIHdpdGgg SFBEIGdvaW5nIGxvdyBkdXJpbmcgYSBtb2Rlc2V0LCBhbmQgdGhlbgo+ICsgKiBnb2luZyBiYWNr IHVwIHNvb24gYWZ0ZXIuIEFuZCBvbmNlIHRoYXQgaGFwcGVucyB3ZSBtdXN0Cj4gKyAqIHJldHJh aW4gdGhlIGxpbmsgdG8gZ2V0IGEgcGljdHVyZS4gVGhhdCdzIGluIGNhc2Ugbm8KPiArICogdXNl cnNwYWNlIGNvbXBvbmVudCByZWFjdGVkIHRvIGludGVybWl0dGVudCBIUEQgZGlwLgo+ICsgKi8K PiAraW50IGludGVsX2RwX3JldHJhaW5fbGluayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiArCQkJICBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCkKPiAgewo+IC0J c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSAmZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHAp LT5iYXNlOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShl bmNvZGVyLT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVs X2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAg PSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwo+ICsJc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yID0gaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3RvcjsKPiArCXN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ICsJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiArCWludCBy ZXQ7Cj4gKwo+ICsJLyogRklYTUUgaGFuZGxlIHRoZSBNU1QgY29ubmVjdG9ycyBhcyB3ZWxsICov Cj4gKwo+ICsJaWYgKCFjb25uZWN0b3IgfHwgY29ubmVjdG9yLT5iYXNlLnN0YXR1cyAhPQo+IGNv bm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCXJldCA9IGRy bV9tb2Rlc2V0X2xvY2soJmRldl9wcml2LT5kcm0ubW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRl eCwKPiBjdHgpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWNvbm5fc3Rh dGUgPSBjb25uZWN0b3ItPmJhc2Uuc3RhdGU7Cj4gKwo+ICsJY3J0YyA9IHRvX2ludGVsX2NydGMo Y29ubl9zdGF0ZS0+Y3J0Yyk7Cj4gKwlpZiAoIWNydGMpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJ cmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+YmFzZS5tdXRleCwgY3R4KTsKPiArCWlmIChy ZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwljcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19z dGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsKPiArCj4gKwlXQVJOX09OKCFpbnRlbF9jcnRjX2hhc19k cF9lbmNvZGVyKGNydGNfc3RhdGUpKTsKPiArCj4gKwlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0 aXZlKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmIChjb25uX3N0YXRlLT5jb21taXQgJiYKPiAr CSAgICAhdHJ5X3dhaXRfZm9yX2NvbXBsZXRpb24oJmNvbm5fc3RhdGUtPmNvbW1pdC0+aHdfZG9u ZSkpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaWYgKCFpbnRlbF9kcF9uZWVkc19saW5rX3JldHJh aW4oaW50ZWxfZHApKQo+ICsJCXJldHVybiAwOwpOQUssIHRoaXMgZGVmaW5pdGVseSB3b24ndCB3 b3JrIGZvciBpbXBsZW1lbnRpbmcgTVNUIHJldHJhaW5pbmcuIFRoZXJlJ3Mgc29tZQpwcmV0dHkg aHVnZSBkaWZmZXJlbmNlcyB3aXRoIGhvdyByZXRyYWluaW5nIG5lZWRzIHRvIGJlIGhhbmRsZWQg b24gU1NUIHZzLiBNU1QuCkFuIGV4YW1wbGUgd2l0aCBzb21lIG5vcm1hbCBTU1Qgc2luayB2cy4g d2hhdCBoYXBwZW5zIG9uIG15IGNhbGRpZ2l0IFRTMwoKU1NUOgogICAgMS4gY29tbWl0IG1vZGVz ZXQsIGV2ZXJ5dGhpbmcgaXMgT0sKICAgIDIuIHNvbWV0aGluZyBoYXBwZW5zLCBzaW5rIHNlbmRz IHNob3J0cHVsc2UgYW5kIGNoYW5nZXMgbGluayBzdGF0dXMgcmVnaXN0ZXJzCiAgICBpbiBkcGNk CiAgICAzLiBTb3VyY2UgcmVjZWl2ZXMgc2hvcnQgcHVsc2UsIHRyaWVzIHJldHJhaW5pbmcgZml2 ZSB0aW1lcwogICAgNC4gaWYgdGhpcyBzdWNjZWVkczoKICAgICAgICA1LiB3ZSdyZSBkb25lIGhl cmUKICAgIDYuIGlmIHRoaXMgZmFpbHM6CiAgICAgICAgNy4gbWFyayBsaW5rIHN0YXR1cyBhcyBi YWQKICAgICAgICA4LiBnZXQgZmFsbGJhY2sgcGFyYW1ldGVycwogICAgICAgIDkuIGhvdHBsdWcg ZXZlbnQKCk1TVCAoaTkxNSBkb2Vzbid0IGRvIHRoaXMgeWV0LCBidXQgdGhpcyBpcyBnZW5lcmFs bHkgaG93IGl0IG5lZWRzIHRvIGJlCmhhbmRsZWQpOgogICAgMS4gY29tbWl0IG1vZGVzZXQsIGV2 ZXJ5dGhpbmcgaXMgT0sKICAgIDIuIHNvbWV0aGluZyBoYXBwZW5zIChpbiBteSBjYXNlLCB0aGUg TVNUIGh1YiBkaXNjb3ZlcnMgaXQgaGFkIHRoZSB3cm9uZyBtYXgKICAgIGxpbmsgcmF0ZS9sYW5l IGNvdW50KSwgc2luayBzZW5kcyBFU0kgaW5kaWNhdGluZyBjaGFubmVsIEVRIGhhcyBmYWlsZWQK ICAgIDMuIHJldHJhaW5pbmcgY29tbWVuY2VzIHdpdGggZml2ZSByZXRyaWVzLgogICAgNC4gaWYg dGhpcyBzdWNjZWVkczoKICAgICAgIDUuIGNvbnRpbnVlCiAgICA2LiBpZiB0aGlzIGZhaWxzIChJ IGFjdHVhbGx5IGhhdmVuJ3Qgc2VlbiB0aGlzIG9uY2UgeWV0KQogICAgICAgIDcuIG1hcmsgbGlu ayBzdGF0dXMgYXMgYmFkIG9uIGFsbCBkb3duc3RyZWFtIGNvbm5lY3RvcnMKICAgICAgICA4LiBn ZXQgZmFsbGJhY2sgcGFyYW1ldGVycwogICAgICAgIDkuIGhvdHBsdWcgZXZlbnQKICAgIDEwLiB0 aGUgcmV0cmFpbiBkaWRuJ3QgYWN0dWFsbHkgd29yayAoZGVzcGl0ZSB3aGF0IHRoZSBTU1QgbGlu ayBzdGF0dXMKICAgIHJlZ2lzdGVycyB0b2xkIHVzKS4gZ28gYmFjayB0byBzdGVwIDMgZml2ZSBt b3JlIHRpbWVzCiAgICAxMS4gaWYgdGhpcyBmYWlsczoKICAgICAgICAxMi4gbWFyayBsaW5rIHN0 YXR1cyBhcyBiYWQgb24gYWxsIGRvd25zdHJlYW0gY29ubmVjdG9ycwogICAgICAgIDEzLiBnZXQg ZmFsbGJhY2sgcGFyYW1ldGVycwogICAgICAgIDE0LiBob3RwbHVnIGV2ZW50CgpzaW1wbHkgcHV0 OiB3ZSByZWFsbHkgc2hvdWxkIGtlZXAgdGhlICJkbyB3ZSBuZWVkIHRvIHJldHJhaW4/IiBsb2dp YyBvdXQgb2YgdGhlCmFjdHVhbCByZXRyYWluaW5nIGhlbHBlcnMgc28gdGhhdCBTU1QvTVNUIGNv ZGVwYXRocyBjYW4gZG8gdGhlaXIgb3duIGNoZWNrcyB0bwpmaWd1cmUgdGhpcyBvdXQuCgo+ICAK PiAgCS8qIFN1cHByZXNzIHVuZGVycnVucyBjYXVzZWQgYnkgcmUtdHJhaW5pbmcgKi8KPiAgCWlu dGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIGNydGMtPnBpcGUs IGZhbHNlKTsKPiBAQCAtNDI5OCw1MSArNDM2OSw0OSBAQCBpbnRlbF9kcF9yZXRyYWluX2xpbmso c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCWlmIChjcnRjLT5jb25maWctPmhhc19wY2hf ZW5jb2RlcikKPiAgCQlpbnRlbF9zZXRfcGNoX2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9w cml2LAo+ICAJCQkJCQkgICAgICBpbnRlbF9jcnRjX3BjaF90cmFuc2NvZAo+IGVyKGNydGMpLCB0 cnVlKTsKPiArCj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQKPiAtaW50ZWxf ZHBfY2hlY2tfbGlua19zdGF0dXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiArLyoKPiAr ICogSWYgZGlzcGxheSBpcyBub3cgY29ubmVjdGVkIGNoZWNrIGxpbmtzIHN0YXR1cywKPiArICog dGhlcmUgaGFzIGJlZW4ga25vd24gaXNzdWVzIG9mIGxpbmsgbG9zcyB0cmlnZ2VyaW5nCj4gKyAq IGxvbmcgcHVsc2UuCj4gKyAqCj4gKyAqIFNvbWUgc2lua3MgKGVnLiBBU1VTIFBCMjg3USkgc2Vl bSB0byBwZXJmb3JtIHNvbWUKPiArICogd2VpcmQgSFBEIHBpbmcgcG9uZyBkdXJpbmcgbW9kZXNl dHMuIFNvIHdlIGNhbiBhcHBhcmVudGx5Cj4gKyAqIGVuZCB1cCB3aXRoIEhQRCBnb2luZyBsb3cg ZHVyaW5nIGEgbW9kZXNldCwgYW5kIHRoZW4KPiArICogZ29pbmcgYmFjayB1cCBzb29uIGFmdGVy LiBBbmQgb25jZSB0aGF0IGhhcHBlbnMgd2UgbXVzdAo+ICsgKiByZXRyYWluIHRoZSBsaW5rIHRv IGdldCBhIHBpY3R1cmUuIFRoYXQncyBpbiBjYXNlIG5vCj4gKyAqIHVzZXJzcGFjZSBjb21wb25l bnQgcmVhY3RlZCB0byBpbnRlcm1pdHRlbnQgSFBEIGRpcC4KPiArICovCj4gK3N0YXRpYyBib29s IGludGVsX2RwX2hvdHBsdWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCSAg ICAgc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IHRvX2k5MTUoaW50ZWxfZHBfdG9fZGV2KGludGVs X2RwKSk7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZkcF90b19k aWdfcG9ydChpbnRlbF9kcCktCj4gPmJhc2U7Cj4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubl9zdGF0ZSA9Cj4gLQkJaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+YmFzZS5z dGF0ZTsKPiAtCXU4IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdOwo+IC0KPiAtCVdB Uk5fT04oIWRybV9tb2Rlc2V0X2lzX2xvY2tlZCgmZGV2X3ByaXYtCj4gPmRybS5tb2RlX2NvbmZp Zy5jb25uZWN0aW9uX211dGV4KSk7Cj4gLQo+IC0JaWYgKCFpbnRlbF9kcF9nZXRfbGlua19zdGF0 dXMoaW50ZWxfZHAsIGxpbmtfc3RhdHVzKSkgewo+IC0JCURSTV9FUlJPUigiRmFpbGVkIHRvIGdl dCBsaW5rIHN0YXR1c1xuIik7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+ICsJc3RydWN0IGRybV9tb2Rl c2V0X2FjcXVpcmVfY3R4IGN0eDsKPiArCWJvb2wgY2hhbmdlZDsKPiArCWludCByZXQ7Cj4gIAo+ IC0JaWYgKCFjb25uX3N0YXRlLT5jcnRjKQo+IC0JCXJldHVybjsKPiArCWNoYW5nZWQgPSBpbnRl bF9lbmNvZGVyX2hvdHBsdWcoZW5jb2RlciwgY29ubmVjdG9yKTsKPiAgCj4gLQlXQVJOX09OKCFk cm1fbW9kZXNldF9pc19sb2NrZWQoJmNvbm5fc3RhdGUtPmNydGMtPm11dGV4KSk7Cj4gKwlkcm1f bW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gIAo+IC0JaWYgKCFjb25uX3N0YXRlLT5j cnRjLT5zdGF0ZS0+YWN0aXZlKQo+IC0JCXJldHVybjsKPiArCWZvciAoOzspIHsKPiArCQlyZXQg PSBpbnRlbF9kcF9yZXRyYWluX2xpbmsoZW5jb2RlciwgJmN0eCk7Cj4gIAo+IC0JaWYgKGNvbm5f c3RhdGUtPmNvbW1pdCAmJgo+IC0JICAgICF0cnlfd2FpdF9mb3JfY29tcGxldGlvbigmY29ubl9z dGF0ZS0+Y29tbWl0LT5od19kb25lKSkKPiAtCQlyZXR1cm47Cj4gKwkJaWYgKHJldCA9PSAtRURF QURMSykgewo+ICsJCQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+ICsJCQljb250aW51ZTsK PiArCQl9Cj4gIAo+IC0JLyoKPiAtCSAqIFZhbGlkYXRlIHRoZSBjYWNoZWQgdmFsdWVzIG9mIGlu dGVsX2RwLT5saW5rX3JhdGUgYW5kCj4gLQkgKiBpbnRlbF9kcC0+bGFuZV9jb3VudCBiZWZvcmUg YXR0ZW1wdGluZyB0byByZXRyYWluLgo+IC0JICovCj4gLQlpZiAoIWludGVsX2RwX2xpbmtfcGFy YW1zX3ZhbGlkKGludGVsX2RwLCBpbnRlbF9kcC0+bGlua19yYXRlLAo+IC0JCQkJCWludGVsX2Rw LT5sYW5lX2NvdW50KSkKPiAtCQlyZXR1cm47Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gIAo+IC0JLyog UmV0cmFpbiBpZiBDaGFubmVsIEVRIG9yIENSIG5vdCBvayAqLwo+IC0JaWYgKCFkcm1fZHBfY2hh bm5lbF9lcV9vayhsaW5rX3N0YXR1cywgaW50ZWxfZHAtPmxhbmVfY291bnQpKSB7Cj4gLQkJRFJN X0RFQlVHX0tNUygiJXM6IGNoYW5uZWwgRVEgbm90IG9rLCByZXRyYWluaW5nXG4iLAo+IC0JCQkg ICAgICBpbnRlbF9lbmNvZGVyLT5iYXNlLm5hbWUpOwo+ICsJZHJtX21vZGVzZXRfZHJvcF9sb2Nr cygmY3R4KTsKPiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiArCVdBUk4ocmV0 LCAiQWNxdWlyaW5nIG1vZGVzZXQgbG9ja3MgZmFpbGVkIHdpdGggJWlcbiIsIHJldCk7Cj4gIAo+ IC0JCWludGVsX2RwX3JldHJhaW5fbGluayhpbnRlbF9kcCk7Cj4gLQl9Cj4gKwlyZXR1cm4gY2hh bmdlZDsKPiAgfQo+ICAKPiAgLyoKPiBAQCAtNDQwMCw3ICs0NDY5LDkgQEAgaW50ZWxfZHBfc2hv cnRfcHVsc2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCQkJRFJNX0RFQlVHX0RSSVZF UigiQ1Agb3Igc2luayBzcGVjaWZpYyBpcnEKPiB1bmhhbmRsZWRcbiIpOwo+ICAJfQo+ICAKPiAt CWludGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVzKGludGVsX2RwKTsKPiArCS8qIGRlZmVyIHRvIHRo ZSBob3RwbHVnIHdvcmsgZm9yIGxpbmsgcmV0cmFpbmluZyBpZiBuZWVkZWQgKi8KPiArCWlmIChp bnRlbF9kcF9uZWVkc19saW5rX3JldHJhaW4oaW50ZWxfZHApKQo+ICsJCXJldHVybiBmYWxzZTsK PiAgCj4gIAlpZiAoaW50ZWxfZHAtPmNvbXBsaWFuY2UudGVzdF90eXBlID09IERQX1RFU1RfTElO S19UUkFJTklORykgewo+ICAJCURSTV9ERUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgQ29tcGxpYW5j ZSBUZXN0IHJlcXVlc3RlZFxuIik7Cj4gQEAgLTQ3ODUsMjAgKzQ4NTYsNiBAQCBpbnRlbF9kcF9s b25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCQkgKi8KPiAg CQlzdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPiAgCQlnb3RvIG91dDsK PiAtCX0gZWxzZSB7Cj4gLQkJLyoKPiAtCQkgKiBJZiBkaXNwbGF5IGlzIG5vdyBjb25uZWN0ZWQg Y2hlY2sgbGlua3Mgc3RhdHVzLAo+IC0JCSAqIHRoZXJlIGhhcyBiZWVuIGtub3duIGlzc3VlcyBv ZiBsaW5rIGxvc3MgdHJpZ2dlcnJpbmcKPiAtCQkgKiBsb25nIHB1bHNlLgo+IC0JCSAqCj4gLQkJ ICogU29tZSBzaW5rcyAoZWcuIEFTVVMgUEIyODdRKSBzZWVtIHRvIHBlcmZvcm0gc29tZQo+IC0J CSAqIHdlaXJkIEhQRCBwaW5nIHBvbmcgZHVyaW5nIG1vZGVzZXRzLiBTbyB3ZSBjYW4gYXBwYXJl bnRseQo+IC0JCSAqIGVuZCB1cCB3aXRoIEhQRCBnb2luZyBsb3cgZHVyaW5nIGEgbW9kZXNldCwg YW5kIHRoZW4KPiAtCQkgKiBnb2luZyBiYWNrIHVwIHNvb24gYWZ0ZXIuIEFuZCBvbmNlIHRoYXQg aGFwcGVucyB3ZSBtdXN0Cj4gLQkJICogcmV0cmFpbiB0aGUgbGluayB0byBnZXQgYSBwaWN0dXJl LiBUaGF0J3MgaW4gY2FzZSBubwo+IC0JCSAqIHVzZXJzcGFjZSBjb21wb25lbnQgcmVhY3RlZCB0 byBpbnRlcm1pdHRlbnQgSFBEIGRpcC4KPiAtCQkgKi8KPiAtCQlpbnRlbF9kcF9jaGVja19saW5r X3N0YXR1cyhpbnRlbF9kcCk7Cj4gIAl9Cj4gIAo+ICAJLyoKPiBAQCAtNTM0MCwzNyArNTM5Nywx MCBAQCBpbnRlbF9kcF9ocGRfcHVsc2Uoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydAo+ICppbnRl bF9kaWdfcG9ydCwgYm9vbCBsb25nX2hwZCkKPiAgCX0KPiAgCj4gIAlpZiAoIWludGVsX2RwLT5p c19tc3QpIHsKPiAtCQlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+IC0JCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50ZWxfZHAtCj4gPmF0dGFjaGVkX2Nv bm5lY3Rvci0+YmFzZTsKPiAtCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gLQkJaW50IGlyZXQ7 Cj4gLQkJYm9vbCBoYW5kbGVkID0gZmFsc2U7Cj4gLQo+IC0JCWRybV9tb2Rlc2V0X2FjcXVpcmVf aW5pdCgmY3R4LCAwKTsKPiAtcmV0cnk6Cj4gLQkJaXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmRl dl9wcml2LQo+ID5kcm0ubW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwgJmN0eCk7Cj4gLQkJ aWYgKGlyZXQpCj4gLQkJCWdvdG8gZXJyOwo+IC0KPiAtCQljcnRjID0gY29ubmVjdG9yLT5zdGF0 ZS0+Y3J0YzsKPiAtCQlpZiAoY3J0Yykgewo+IC0JCQlpcmV0ID0gZHJtX21vZGVzZXRfbG9jaygm Y3J0Yy0+bXV0ZXgsICZjdHgpOwo+IC0JCQlpZiAoaXJldCkKPiAtCQkJCWdvdG8gZXJyOwo+IC0J CX0KPiArCQlib29sIGhhbmRsZWQ7Cj4gIAo+ICAJCWhhbmRsZWQgPSBpbnRlbF9kcF9zaG9ydF9w dWxzZShpbnRlbF9kcCk7Cj4gIAo+IC1lcnI6Cj4gLQkJaWYgKGlyZXQgPT0gLUVERUFETEspIHsK PiAtCQkJZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKPiAtCQkJZ290byByZXRyeTsKPiAtCQl9 Cj4gLQo+IC0JCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gLQkJZHJtX21vZGVzZXRf YWNxdWlyZV9maW5pKCZjdHgpOwo+IC0JCVdBUk4oaXJldCwgIkFjcXVpcmluZyBtb2Rlc2V0IGxv Y2tzIGZhaWxlZCB3aXRoICVpXG4iLCBpcmV0KTsKPiAtCj4gIAkJLyogU2hvcnQgcHVsc2UgY2Fu IHNpZ25pZnkgbG9zcyBvZiBoZGNwIGF1dGhlbnRpY2F0aW9uICovCj4gIAkJaW50ZWxfaGRjcF9j aGVja19saW5rKGludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3IpOwo+ICAKPiBAQCAtNjQwMCw3 ICs2NDMwLDcgQEAgYm9vbCBpbnRlbF9kcF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgCQkJICAgICAiRFAgJWMiLCBwb3J0X25hbWUocG9ydCkpKQo+ICAJCWdvdG8g ZXJyX2VuY29kZXJfaW5pdDsKPiAgCj4gLQlpbnRlbF9lbmNvZGVyLT5ob3RwbHVnID0gaW50ZWxf ZW5jb2Rlcl9ob3RwbHVnOwo+ICsJaW50ZWxfZW5jb2Rlci0+aG90cGx1ZyA9IGludGVsX2RwX2hv dHBsdWc7Cj4gIAlpbnRlbF9lbmNvZGVyLT5jb21wdXRlX2NvbmZpZyA9IGludGVsX2RwX2NvbXB1 dGVfY29uZmlnOwo+ICAJaW50ZWxfZW5jb2Rlci0+Z2V0X2h3X3N0YXRlID0gaW50ZWxfZHBfZ2V0 X2h3X3N0YXRlOwo+ICAJaW50ZWxfZW5jb2Rlci0+Z2V0X2NvbmZpZyA9IGludGVsX2RwX2dldF9j b25maWc7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDVlYTFkYzNmNjNiZi4u ZGRmMjhhNDQyY2Q3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTYxMSw2 ICsxNjExLDggQEAgaW50IGludGVsX2RwX2dldF9saW5rX3RyYWluX2ZhbGxiYWNrX3ZhbHVlcyhz dHJ1Y3QKPiBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJCQkJICAgIGludCBsaW5rX3JhdGUsIHVp bnQ4X3QKPiBsYW5lX2NvdW50KTsKPiAgdm9pZCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ICB2b2lkIGludGVsX2RwX3N0b3BfbGlua190cmFp bihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiAraW50IGludGVsX2RwX3JldHJhaW5fbGlu ayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJICBzdHJ1Y3QgZHJtX21vZGVz ZXRfYWNxdWlyZV9jdHggKmN0eCk7Cj4gIHZvaWQgaW50ZWxfZHBfc2lua19kcG1zKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsIGludCBtb2RlKTsKPiAgdm9pZCBpbnRlbF9kcF9lbmNvZGVyX3Jl c2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7Cj4gIHZvaWQgaW50ZWxfZHBfZW5jb2Rl cl9zdXNwZW5kKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKTsKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==