From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v18 5/6] drm/i915/dp: Enable Upfront link training on DDI platforms Date: Thu, 29 Sep 2016 19:05:01 +0300 Message-ID: <877f9ulmj6.fsf@intel.com> References: <1473984244-4349-6-git-send-email-manasi.d.navare@intel.com> <1474409056-6412-1-git-send-email-manasi.d.navare@intel.com> <87wphulx62.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3EBB36E88F for ; Thu, 29 Sep 2016 16:05:05 +0000 (UTC) In-Reply-To: <87wphulx62.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: Manasi Navare , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyOSBTZXAgMjAxNiwgSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxpbnV4LmludGVs LmNvbT4gd3JvdGU6Cj4gT24gV2VkLCAyMSBTZXAgMjAxNiwgTWFuYXNpIE5hdmFyZSA8bWFuYXNp LmQubmF2YXJlQGludGVsLmNvbT4gd3JvdGU6Cj4+IFRvIHN1cHBvcnQgVVNCIHR5cGUgQyBhbHRl cm5hdGUgRFAgbW9kZSwgdGhlIGRpc3BsYXkgZHJpdmVyIG5lZWRzIHRvCj4+IGtub3cgdGhlIG51 bWJlciBvZiBsYW5lcyByZXF1aXJlZCBieSB0aGUgRFAgcGFuZWwgYXMgd2VsbCBhcyBudW1iZXIK Pj4gb2YgbGFuZXMgdGhhdCBjYW4gYmUgc3VwcG9ydGVkIGJ5IHRoZSB0eXBlLUMgY2FibGUuIFNv bWV0aW1lcywgdGhlCj4+IHR5cGUtQyBjYWJsZSBtYXkgbGltaXQgdGhlIGJhbmR3aWR0aCBldmVu IGlmIFBhbmVsIGNhbiBzdXBwb3J0Cj4+IG1vcmUgbGFuZXMuIFRvIGFkZHJlc3MgdGhlc2Ugc2Nl bmFyaW9zIHdlIG5lZWQgdG8gdHJhaW4gdGhlIGxpbmsgYmVmb3JlCj4+IG1vZGVzZXQuIFRoaXMg dXBmcm9udCBsaW5rIHRyYWluaW5nIGNhY2hlcyB0aGUgdmFsdWVzIG9mIG1heCBsaW5rIHJhdGUK Pj4gYW5kIG1heCBsYW5lIGNvdW50IHRoYXQgZ2V0IHVzZWQgbGF0ZXIgZHVyaW5nIG1vZGVzZXQu IFVwZnJvbnQgbGluawo+PiB0cmFpbmluZyBkb2VzIG5vdCBjaGFuZ2UgYW55IEhXIHN0YXRlLCB0 aGUgbGluayBpcyBkaXNhYmxlZCBhbmQgUExMCj4+IHZhbHVlcyBhcmUgcmVzZXQgdG8gcHJldmlv dXMgdmFsdWVzIGFmdGVyIHVwZnJvbnQgbGluayB0YXJpbmluZyBzbwo+PiB0aGF0IHN1YnNlcXVl bnQgbW9kZXNldCBpcyBub3QgYXdhcmUgb2YgdGhlc2UgY2hhbmdlcy4KPgo+IFNvbWUgb2YgdGhl IGNvbmNlcm5zIGFuZCBxdWVzdGlvbnMgSSd2ZSBnYXRoZXJlZCBhYm91dCB0aGUgdXBmcm9udCBs aW5rCj4gdHJhaW5pbmc6Cj4KPiAqIFdoYXQgaWYgdGhlIHVzZXJzcGFjZSBoYXNuJ3QgZGlzYWJs ZWQgdGhlIGNydGMgYnkgdGhlIHRpbWUgd2UgZ2V0IHRoZQo+ICAgaG90cGx1Zz8gVXBmcm9udCBs aW5rIHRyYWluaW5nIGp1c3QgZ29lcyBhaGVhZCBhbmQgbWVzc2VzIHdpdGggdGhhdAo+ICAgc3Rh dGUuCj4KPiAqIE9uZSBvZiB0aGUgcG90ZW50aWFsIGJlbmVmaXRzIG9mIHVwZnJvbnQgbGluayB0 cmFpbmluZyBpcyB0aGF0IGl0Cj4gICBjb3VsZCBtYWtlIHRoZSBob3RwbHVnIGZhc3RlciBieSBk b2luZyB0aGUgbGluayB0cmFpbmluZyBiZWZvcmUgdGhlCj4gICB1c2Vyc3BhY2UgZXZlbiBhc2tz IGZvciBhIG1vZGVzZXQuIEhvd2V2ZXIsIElJVUMsIHRoZSBwYXRjaCBub3cgZG9lcwo+ICAgdGhl IHVwZnJvbnQgbGluayB0cmFpbmluZywgZGlzYWJsZXMgdGhlIGxpbmssIGFuZCB0aGVuIGRvZXMg bGluawo+ICAgdHJhaW5pbmcgYWdhaW4gYXQgbW9kZXNldC4gSXMgdGhhdCByaWdodD8gU28gaXQg Y2FuIGFjdHVhbGx5IG1ha2UgdGhlCj4gICBsaW5rIHRyYWluaW5nIHNsb3dlcj8gKE9uIHRoZSBw bHVzIHNpZGUsIHRoaXMgYXZvaWRzIHRoZSBwcm9ibGVtIG9mCj4gICBsZWF2aW5nIHRoZSBsaW5r IHVwIGFuZCBydW5uaW5nIGlmIHRoZXJlIGlzbid0IGEgdXNlcnNwYWNlIHJlc3BvbmRpbmcKPiAg IHRvIGhvdHBsdWcgb3IgdXNlcnNwYWNlIG5ldmVyIGFza3MgZm9yIGEgbW9kZXNldC4pCj4KPiAq IEFub3RoZXIgYmVuZWZpdCBvZiB1cGZyb250IGxpbmsgdHJhaW5pbmcgaXMgdGhhdCB3ZSBjYW4g cHJ1bmUgdGhlCj4gICBtb2RlcyBhY2NvcmRpbmcgdG8gd2hhdCB0aGUgbGluayBjYW4gYWN0dWFs bHkgZG8sIGJlZm9yZQo+ICAgbW9kZXNldC4gSG93ZXZlciwgdGhpcyBzdGlsbCBkb2Vzbid0IGhl bHAgdGhlIGNhc2Ugb2YgbGluayBkZWdyYWRpbmcKPiAgIGR1cmluZyBvcGVyYXRpb24uIChJIGFt IG5vdCBzdXJlIGhvdyBtdWNoIHdlIHJlYWxseSBjYXJlIGFib3V0IHRoaXMsCj4gICBidXQgaXQg d291bGQgc2VlbSB0aGF0IHRoZSBhcHByb2FjaCBkZXNjcmliZWQgaW4gbXkgb3RoZXIgbWFpbCBt aWdodAo+ICAgc29sdmUgaXQuKQo+Cj4gKiBVcGZyb250IGxpbmsgdHJhaW5pbmcgaXMgb25seSBl bmFibGVkIGZvciBEREkgcGxhdGZvcm1zLCBkdXBsaWNhdGluZwo+ICAgcGFydHMgb2YgbGluayB0 cmFpbmluZyBhbmQgYXBwYXJlbnRseSBwYXJ0cyBvZiBtb2Rlc2V0IGZvciBEREksIGFuZAo+ICAg ZGl2ZXJnaW5nIHRoZSBsaW5rIHRyYWluaW5nIGNvZGUgZm9yIERESSBhbmQgbm9uLURESSBwbGF0 Zm9ybXMuIFdpdGgKPiAgIHRoZSBjdXJyZW50IGFwcHJvYWNoLCB0aGlzIG1ha2VzIGl0IGltcG9z c2libGUgdG8gcnVuIERQIGNvbXBsaWFuY2UKPiAgIHRlc3RzIGZvciBub24tRERJIHBsYXRmb3Jt cy4KPgo+ICogSG93IGRvZXMgdXBmcm9udCBsaW5rIHRyYWluaW5nIGludGVyYWN0IHdpdGggYXRv bWljIGFuZCBmYXN0Ym9vdD8gL21lCj4gICBjbHVlbGVzcy4KPgo+ICogVGhlcmUganVzdCBpcyBh IHN1YmplY3RpdmVseSBzY2FyeSBmZWVsaW5nIHRvIHRoZSBjaGFuZ2UuIFRoZSBEUCBsaW5rCj4g ICB0cmFpbmluZyBjb2RlIGhhcyBiZWVuIHJpZGRsZWQgd2l0aCByZWdyZXNzaW9ucyBpbiB0aGUg cGFzdCwgYW5kIGV2ZW4KPiAgIHRoZSBzbWFsbGVzdCBhbmQgaW5ub2NlbnQgc2VlbWluZyBjaGFu Z2VzIGhhdmUgY2F1c2VkIHRoZW0uIFRoaXMgaXMgYQo+ICAgaGFyZCB0aGluZyB0byBqdXN0aWZ5 LCBjYWxsIGl0IGEgZ3V0IGZlZWxpbmcgaWYgeW91IHdpbGwsIGJ1dCBoaXN0b3J5Cj4gICBoYXMg dGF1Z2h0IG1lIG5vdCB0byBkaXNtaXNzIHRob3NlIGluc3RpbmN0cyB3aXRoIGEgc2hydWcuCj4K PiBBbGwgaW4gYWxsLCBJJ2QgbGlrZSB0byBkZWNvdXBsZSBjdXJyZW50IERQIGNvbXBsaWFuY2Ug ZWZmb3J0cyBmcm9tCj4gdXBmcm9udCBsaW5rIHRyYWluaW5nLgoKQW5vdGhlciB0aGF0IEkgZmFp bGVkIHRvIG1lbnRpb246IEV2ZW50dWFsbHkgd2UnbGwgd2FudCB0aGUgRFAKY29tcGxpYW5jZSBz dHVmZiB0byBiZSBzb21ldGhpbmcgdGhhdCBvdGhlciBkcml2ZXJzIGNhbiBoYXZlIHRvby4gV2Un bGwKd2FudCB0byBwdXNoIG1vcmUgRFAgY29kZSB0byBkcm0gY29yZSBEUCBoZWxwZXJzLCBhbmQg d2UnbGwgd2FudCB0bwpzaGFyZSB0aGUgYnVyZGVuIG9mIGtlZXBpbmcgRFAgY29tcGxpYW50LiBB cyB0aGUgdXBmcm9udCBsaW5rIHRyYWluaW5nCmRvZXNuJ3Qgc2VlbSB0byBiZSBhbiAoZWFzeSkg b3B0aW9uIGV2ZW4gZm9yIG91ciBub24tRERJIGhhcmR3YXJlLCBpdAptYXkgYmUgYSBkaWZmaWN1 bHQgdGhpbmcgZm9yIG90aGVyIGhhcmR3YXJlIGFzIHdlbGwuIE1heWJlLiBCZXR0ZXIgc3RpY2sK d2l0aCBzb21ldGhpbmcgdGhhdCdzIHByb2JhYmx5IGFuIGVhc2llciBzZWxsIGZvciBkcm0/CgpC UiwKSmFuaS4KCgo+Cj4gVmlsbGUsIGZlZWwgZnJlZSB0byBjbGFyaWZ5IG9yIGFkZCB0byB0aGUg bGlzdC4KPgo+Cj4gQlIsCj4gSmFuaS4KPgo+Cj4+Cj4+IFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24g cHJpb3Igd29yayBkb25lIGJ5Cj4+IFIsRHVyZ2Fkb3NzIDxkdXJnYWRvc3MuckBpbnRlbC5jb20+ Cj4+Cj4+IENoYW5nZXMgc2luY2UgdjE3Ogo+PiAqIFJlYmFzZWQgb24gdGhlIGxhdGVzdCBuaWdo dGx5Cj4+IENoYW5nZXMgc2luY2UgdjE2Ogo+PiAqIFVzZSBIQVNfRERJIG1hY3JvIGZvciBlbmFi bGluZyB0aGlzIGZlYXR1cmUgKFJvZHJpZ28gVml2aSkKPj4gKiBGaXggc29tZSB1bm5lY2Vzc2Fy eSByZW1vdmFscy9jaGFuZ2VzIGR1ZSB0byByZWJhc2UgKFJvZHJpZ28gVml2aSkKPj4KPj4gQ2hh bmdlcyBzaW5jZSB2MTU6Cj4+ICogU3BsaXQgdGhpcyBwYXRjaCBpbnRvIHR3byBwYXRjaGVzIC0g b25lIHdpdGggZnVuY3Rpb25hbAo+PiBjaGFuZ2VzIHRvIGVuYWJsZSB1cGZyb250IGFuZCBvdGhl ciB3aXRoIG1vdmluZyB0aGUgZXhpc3RpbmcKPj4gZnVuY3Rpb25zIGFyb3VuZCBzbyB0aGF0IHRo ZXkgY2FuIGJlIHVzZWQgZm9yIHVwZnJvbnQgKEphbmkgTmlrdWxhKQo+PiAqIENsZWFuZWQgdXAg dGhlIGNvbW1pdCBtZXNzYWdlCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IER1cmdhZG9zcyBSIDxkdXJn YWRvc3MuckBpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IEppbSBCcmlkZSA8amltLmJyaWRl QGxpbnV4LmludGVsLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNp LmQubmF2YXJlQGludGVsLmNvbT4KPj4gLS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYyAgICAgICAgICAgICAgfCAgMjEgKystCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jICAgICAgICAgICAgICAgfCAxOTAgKysrKysrKysrKysrKysrKysrKysrKysrKy0K Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYyB8ICAgMSAt Cj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICAgICAgfCAgMTQg Ky0KPj4gIDQgZmlsZXMgY2hhbmdlZCwgMjE4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0p Cj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4+IGluZGV4IDA5MzAzOGMuLjhlNTI1MDcg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4+IEBAIC0xNjc2LDcgKzE2NzYsOCBA QCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKPj4gIAlwbGwtPmNvbmZpZy5jcnRjX21hc2sgPSAwOwo+PiAgCj4+ICAJLyog SWYgTGluayBUcmFpbmluZyBmYWlscywgc2VuZCBhIHVldmVudCB0byBnZW5lcmF0ZSBhIGhvdHBs dWcgKi8KPj4gLQlpZiAoIWludGVsX2RkaV9saW5rX3RyYWluKGludGVsX2RwLCBsaW5rX3JhdGUs IGxhbmVfY291bnQsIGxpbmtfbXN0KSkKPj4gKwlpZiAoIWludGVsX2RkaV9saW5rX3RyYWluKGlu dGVsX2RwLCBsaW5rX3JhdGUsIGxhbmVfY291bnQsIGxpbmtfbXN0LAo+PiArCQkJCSAgZmFsc2Up KQo+PiAgCQlkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KGVuY29kZXItPmJhc2UuZGV2KTsK Pj4gIAlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwo+PiAgfQo+PiBAQCAtMjQ2NCw3ICsy NDY1LDcgQEAgaW50ZWxfZGRpX2dldF9saW5rX2RwbGwoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwgaW50IGNsb2NrKQo+PiAgCj4+ICBib29sCj4+ICBpbnRlbF9kZGlfbGlua190cmFpbihzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgbWF4X2xpbmtfcmF0ZSwKPj4gLQkJICAgICB1aW50 OF90IG1heF9sYW5lX2NvdW50LCBib29sIGxpbmtfbXN0KQo+PiArCQkgICAgIHVpbnQ4X3QgbWF4 X2xhbmVfY291bnQsIGJvb2wgbGlua19tc3QsIGJvb2wgaXNfdXBmcm9udCkKPj4gIHsKPj4gIAlz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBpbnRlbF9kcC0+YXR0YWNoZWRfY29u bmVjdG9yOwo+PiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gY29ubmVjdG9yLT5l bmNvZGVyOwo+PiBAQCAtMjUxMyw2ICsyNTE0LDcgQEAgaW50ZWxfZGRpX2xpbmtfdHJhaW4oc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IG1heF9saW5rX3JhdGUsCj4+ICAJCQlwbGwtPmZ1 bmNzLmRpc2FibGUoZGV2X3ByaXYsIHBsbCk7Cj4+ICAJCQlwbGwtPmNvbmZpZyA9IHRtcF9wbGxf Y29uZmlnOwo+PiAgCQl9Cj4+ICsKPj4gIAkJaWYgKHJldCkgewo+PiAgCQkJRFJNX0RFQlVHX0tN UygiTGluayBUcmFpbmluZyBzdWNjZXNzZnVsIGF0IGxpbmsgcmF0ZTogJWQgbGFuZTogJWRcbiIs Cj4+ICAJCQkJICAgICAgbGlua19yYXRlLCBsYW5lX2NvdW50KTsKPj4gQEAgLTI1MjIsNiArMjUy NCwyMSBAQCBpbnRlbF9kZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBp bnQgbWF4X2xpbmtfcmF0ZSwKPj4gIAo+PiAgCWludGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRl bF9kcCk7Cj4+ICAKPj4gKwlpZiAoaXNfdXBmcm9udCkgewo+PiArCQlEUk1fREVCVUdfS01TKCJV cGZyb250IGxpbmsgdHJhaW4gJXM6IGxpbmtfY2xvY2s6JWQgbGFuZXM6JWRcbiIsCj4+ICsJCQkg ICAgICByZXQgPyAiUGFzc2VkIiA6ICJGYWlsZWQiLAo+PiArCQkJICAgICAgbGlua19yYXRlLCBs YW5lX2NvdW50KTsKPj4gKwkJLyogRGlzYWJsZSBwb3J0IGZvbGxvd2VkIGJ5IFBMTCBmb3IgbmV4 dCByZXRyeS9jbGVhbiB1cCAqLwo+PiArCQlpbnRlbF9kZGlfcG9zdF9kaXNhYmxlKGVuY29kZXIs IE5VTEwsIE5VTEwpOwo+PiArCQlwbGwtPmZ1bmNzLmRpc2FibGUoZGV2X3ByaXYsIHBsbCk7Cj4+ ICsJCXBsbC0+Y29uZmlnID0gdG1wX3BsbF9jb25maWc7Cj4+ICsJCWlmIChyZXQpIHsKPj4gKwkJ CS8qIFNhdmUgdGhlIHVwZnJvbnQgdmFsdWVzICovCj4+ICsJCQlpbnRlbF9kcC0+bWF4X2xhbmVz X3VwZnJvbnQgPSBsYW5lX2NvdW50Owo+PiArCQkJaW50ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBm cm9udCA9IGxpbmtfcmF0ZTsKPj4gKwkJfQo+PiArCX0KPj4gKwo+PiAgCWlmICghbGFuZV9jb3Vu dCkKPj4gIAkJRFJNX0VSUk9SKCJMaW5rIFRyYWluaW5nIEZhaWxlZFxuIik7Cj4+ICAKPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jCj4+IGluZGV4IDhkOWE4YWIuLmEwNThkNWQgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiBAQCAtMTUzLDEyICsxNTMsMjEgQEAgaW50ZWxfZHBfbWF4 X2xpbmtfYncoc3RydWN0IGludGVsX2RwICAqaW50ZWxfZHApCj4+ICBzdGF0aWMgdTggaW50ZWxf ZHBfbWF4X2xhbmVfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPj4gIHsKPj4gIAlz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0 KGludGVsX2RwKTsKPj4gLQl1OCBzb3VyY2VfbWF4LCBzaW5rX21heDsKPj4gKwl1OCB0ZW1wLCBz b3VyY2VfbWF4LCBzaW5rX21heDsKPj4gIAo+PiAgCXNvdXJjZV9tYXggPSBpbnRlbF9kaWdfcG9y dC0+bWF4X2xhbmVzOwo+PiAgCXNpbmtfbWF4ID0gZHJtX2RwX21heF9sYW5lX2NvdW50KGludGVs X2RwLT5kcGNkKTsKPj4gIAo+PiAtCXJldHVybiBtaW4oc291cmNlX21heCwgc2lua19tYXgpOwo+ PiArCXRlbXAgPSBtaW4oc291cmNlX21heCwgc2lua19tYXgpOwo+PiArCj4+ICsJLyoKPj4gKwkg KiBMaW1pdCBtYXggbGFuZXMgdy5yLnQgdG8gdGhlIG1heCB2YWx1ZSBmb3VuZAo+PiArCSAqIHVz aW5nIFVwZnJvbnQgbGluayB0cmFpbmluZyBhbHNvLgo+PiArCSAqLwo+PiArCWlmIChpbnRlbF9k cC0+bWF4X2xhbmVzX3VwZnJvbnQpCj4+ICsJCXJldHVybiBtaW4odGVtcCwgaW50ZWxfZHAtPm1h eF9sYW5lc191cGZyb250KTsKPj4gKwllbHNlCj4+ICsJCXJldHVybiB0ZW1wOwo+PiAgfQo+PiAg Cj4+ICAvKgo+PiBAQCAtMTkwLDYgKzE5OSw0MiBAQCBpbnRlbF9kcF9tYXhfZGF0YV9yYXRlKGlu dCBtYXhfbGlua19jbG9jaywgaW50IG1heF9sYW5lcykKPj4gIAlyZXR1cm4gKG1heF9saW5rX2Ns b2NrICogbWF4X2xhbmVzICogOCkgLyAxMDsKPj4gIH0KPj4gIAo+PiArc3RhdGljIGludCBpbnRl bF9kcF91cGZyb250X2NydGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gKwkJ CQkJIHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4LAo+PiArCQkJCQkgYm9vbCBl bmFibGUpCj4+ICt7Cj4+ICsJaW50IHJldDsKPj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGU7Cj4+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4+ICsJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+PiArCWVudW0gcGlwZSBwaXBl ID0gY3J0Yy0+cGlwZTsKPj4gKwo+PiArCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhk ZXYpOwo+PiArCWlmICghc3RhdGUpCj4+ICsJCXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJc3Rh dGUtPmFjcXVpcmVfY3R4ID0gY3R4Owo+PiArCj4+ICsJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21p Y19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4+ICsJaWYgKElTX0VSUihjcnRjX3N0YXRl KSkgewo+PiArCQlyZXQgPSBQVFJfRVJSKGNydGNfc3RhdGUpOwo+PiArCQlkcm1fYXRvbWljX3N0 YXRlX2ZyZWUoc3RhdGUpOwo+PiArCQlyZXR1cm4gcmV0Owo+PiArCX0KPj4gKwo+PiArCURSTV9E RUJVR19LTVMoIiVzYWJsaW5nIGNydGMgJWMgJXMgdXBmcm9udCBsaW5rIHRyYWluXG4iLAo+PiAr CQkJZW5hYmxlID8gIkVuIiA6ICJEaXMiLAo+PiArCQkJcGlwZV9uYW1lKHBpcGUpLAo+PiArCQkJ ZW5hYmxlID8gImFmdGVyIiA6ICJiZWZvcmUiKTsKPj4gKwo+PiArCWNydGNfc3RhdGUtPmJhc2Uu YWN0aXZlID0gZW5hYmxlOwo+PiArCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKPj4g KwlpZiAocmV0KQo+PiArCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+PiArCj4+ICsJ cmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiAgc3RhdGljIGludAo+PiAgaW50ZWxfZHBfZG93bnN0 cmVhbV9tYXhfZG90Y2xvY2soc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPj4gIHsKPj4gQEAg LTI4MSw2ICszMjYsMTcgQEAgc3RhdGljIGludCBpbnRlbF9kcF9jb21tb25fcmF0ZXMoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwKPj4gIAlpbnQgc291cmNlX2xlbiwgc2lua19sZW47Cj4+ICAK Pj4gIAlzaW5rX2xlbiA9IGludGVsX2RwX3NpbmtfcmF0ZXMoaW50ZWxfZHAsICZzaW5rX3JhdGVz KTsKPj4gKwo+PiArCS8qIENhcCBzaW5rIHJhdGVzIHcuci50IHVwZnJvbnQgdmFsdWVzICovCj4+ ICsJaWYgKGludGVsX2RwLT5tYXhfbGlua19yYXRlX3VwZnJvbnQpIHsKPj4gKwkJaW50IGxlbiA9 IHNpbmtfbGVuIC0gMTsKPj4gKwo+PiArCQl3aGlsZSAobGVuID4gMCAmJiBzaW5rX3JhdGVzW2xl bl0gPgo+PiArCQkgICAgICAgaW50ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCkKPj4gKwkJ CWxlbi0tOwo+PiArCQlzaW5rX2xlbiA9IGxlbiArIDE7Cj4+ICsJfQo+PiArCj4+ICAJc291cmNl X2xlbiA9IGludGVsX2RwX3NvdXJjZV9yYXRlcyhpbnRlbF9kcCwgJnNvdXJjZV9yYXRlcyk7Cj4+ ICAKPj4gIAlyZXR1cm4gaW50ZXJzZWN0X3JhdGVzKHNvdXJjZV9yYXRlcywgc291cmNlX2xlbiwK Pj4gQEAgLTI4OCw2ICszNDQsOTIgQEAgc3RhdGljIGludCBpbnRlbF9kcF9jb21tb25fcmF0ZXMo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPj4gIAkJCSAgICAgICBjb21tb25fcmF0ZXMpOwo+ PiAgfQo+PiAgCj4+ICtzdGF0aWMgYm9vbCBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKPj4gK3sKPj4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPj4gKwlzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFzZTsK Pj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZW5jb2Rlci0+YmFzZS5kZXY7Cj4+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+PiAr CXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOwo+PiAr CXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7Cj4+ICsJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGM7Cj4+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gTlVMTDsKPj4gKwlz dHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKPj4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2Rw bGxfY29uZmlnIHRtcF9wbGxfY29uZmlnOwo+PiArCWJvb2wgZGlzYWJsZV9kcGxsID0gZmFsc2U7 Cj4+ICsJaW50IHJldDsKPj4gKwlib29sIGRvbmUgPSBmYWxzZSwgaGFzX21zdCA9IGZhbHNlOwo+ PiArCXVpbnQ4X3QgbWF4X2xhbmVzOwo+PiArCWludCBjb21tb25fcmF0ZXNbRFBfTUFYX1NVUFBP UlRFRF9SQVRFU10gPSB7fTsKPj4gKwlpbnQgY29tbW9uX2xlbjsKPj4gKwllbnVtIGludGVsX2Rp c3BsYXlfcG93ZXJfZG9tYWluIHBvd2VyX2RvbWFpbjsKPj4gKwo+PiArCXBvd2VyX2RvbWFpbiA9 IGludGVsX2Rpc3BsYXlfcG9ydF9wb3dlcl9kb21haW4oaW50ZWxfZW5jb2Rlcik7Cj4+ICsJaW50 ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7Cj4+ICsKPj4gKwlj b21tb25fbGVuID0gaW50ZWxfZHBfY29tbW9uX3JhdGVzKGludGVsX2RwLCBjb21tb25fcmF0ZXMp Owo+PiArCW1heF9sYW5lcyA9IGludGVsX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwKTsKPj4g KwlpZiAoV0FSTl9PTihjb21tb25fbGVuIDw9IDApKQo+PiArCQlyZXR1cm4gdHJ1ZTsKPj4gKwo+ PiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPj4gK3JldHJ5Ogo+PiArCXJl dCA9IGRybV9tb2Rlc2V0X2xvY2soJmNvbmZpZy0+Y29ubmVjdGlvbl9tdXRleCwgJmN0eCk7Cj4+ ICsJaWYgKHJldCkKPj4gKwkJZ290byBleGl0X2ZhaWw7Cj4+ICsKPj4gKwlpZiAoaW50ZWxfZW5j b2Rlci0+YmFzZS5jcnRjKSB7Cj4+ICsJCWNydGMgPSBpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGM7 Cj4+ICsKPj4gKwkJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0ZXgsICZjdHgpOwo+ PiArCQlpZiAocmV0KQo+PiArCQkJZ290byBleGl0X2ZhaWw7Cj4+ICsKPj4gKwkJcmV0ID0gZHJt X21vZGVzZXRfbG9jaygmY3J0Yy0+cHJpbWFyeS0+bXV0ZXgsICZjdHgpOwo+PiArCQlpZiAocmV0 KQo+PiArCQkJZ290byBleGl0X2ZhaWw7Cj4+ICsKPj4gKwkJaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Yyk7Cj4+ICsJCXBsbCA9IGludGVsX2NydGMtPmNvbmZpZy0+c2hhcmVkX2RwbGw7 Cj4+ICsJCWRpc2FibGVfZHBsbCA9IHRydWU7Cj4+ICsJCWhhc19tc3QgPSBpbnRlbF9jcnRjX2hh c190eXBlKGludGVsX2NydGMtPmNvbmZpZywKPj4gKwkJCQkJICAgICAgSU5URUxfT1VUUFVUX0RQ X01TVCk7Cj4+ICsJCXJldCA9IGludGVsX2RwX3VwZnJvbnRfY3J0Y19kaXNhYmxlKGludGVsX2Ny dGMsICZjdHgsIGZhbHNlKTsKPj4gKwkJaWYgKHJldCkKPj4gKwkJCWdvdG8gZXhpdF9mYWlsOwo+ PiArCX0KPj4gKwo+PiArCW11dGV4X2xvY2soJmRldl9wcml2LT5kcGxsX2xvY2spOwo+PiArCWlm IChkaXNhYmxlX2RwbGwpIHsKPj4gKwkJLyogQ2xlYXIgdGhlIFBMTCBjb25maWcgc3RhdGUgKi8K Pj4gKwkJdG1wX3BsbF9jb25maWcgPSBwbGwtPmNvbmZpZzsKPj4gKwkJcGxsLT5jb25maWcuY3J0 Y19tYXNrID0gMDsKPj4gKwl9Cj4+ICsKPj4gKwlkb25lID0gaW50ZWxfZHAtPnVwZnJvbnRfbGlu a190cmFpbihpbnRlbF9kcCwKPj4gKwkJCQkJICAgIGNvbW1vbl9yYXRlc1tjb21tb25fbGVuLTFd LAo+PiArCQkJCQkgICAgbWF4X2xhbmVzLAo+PiArCQkJCQkgICAgaGFzX21zdCwKPj4gKwkJCQkJ ICAgIHRydWUpOwo+PiArCWlmIChkaXNhYmxlX2RwbGwpCj4+ICsJCXBsbC0+Y29uZmlnID0gdG1w X3BsbF9jb25maWc7Cj4+ICsKPj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5kcGxsX2xvY2sp Owo+PiArCj4+ICsJaWYgKGNydGMpCj4+ICsJCXJldCA9IGludGVsX2RwX3VwZnJvbnRfY3J0Y19k aXNhYmxlKGludGVsX2NydGMsICZjdHgsIHRydWUpOwo+PiArCj4+ICtleGl0X2ZhaWw6Cj4+ICsJ aWYgKHJldCA9PSAtRURFQURMSykgewo+PiArCQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+ PiArCQlnb3RvIHJldHJ5Owo+PiArCX0KPj4gKwlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgp Owo+PiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPj4gKwlpbnRlbF9kaXNwbGF5 X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPj4gKwlyZXR1cm4gZG9uZTsKPj4g K30KPj4gKwo+PiAgc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzCj4+ICBpbnRlbF9kcF9tb2Rl X3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ICAJCSAgICBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPj4gQEAgLTMxMSw2ICs0NTMsMTkgQEAgaW50ZWxfZHBf bW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAgCQl0YXJnZXRf Y2xvY2sgPSBmaXhlZF9tb2RlLT5jbG9jazsKPj4gIAl9Cj4+ICAKPj4gKwlpZiAoaW50ZWxfZHAt PnVwZnJvbnRfbGlua190cmFpbiAmJiAhaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSkgewo+PiArCQli b29sIGRvX3VwZnJvbnRfbGlua190cmFpbjsKPj4gKwkJLyogRG8gbm90IGRvIHVwZnJvbnQgbGlu ayB0cmFpbiwgaWYgaXQgaXMgYSBjb21wbGlhbmNlCj4+ICsJCSAqIHJlcXVlc3QKPj4gKwkJICov Cj4+ICsJCWRvX3VwZnJvbnRfbGlua190cmFpbiA9ICFpbnRlbF9kcC0+dXBmcm9udF9kb25lICYm Cj4+ICsJCQkoaW50ZWxfZHAtPmNvbXBsaWFuY2VfdGVzdF90eXBlICE9Cj4+ICsJCQkgRFBfVEVT VF9MSU5LX1RSQUlOSU5HKTsKPj4gKwo+PiArCQlpZiAoZG9fdXBmcm9udF9saW5rX3RyYWluKQo+ PiArCQkJaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSA9IGludGVsX2RwX3VwZnJvbnRfbGlua190cmFp bihpbnRlbF9kcCk7Cj4+ICsJfQo+PiArCj4+ICAJbWF4X2xpbmtfY2xvY2sgPSBpbnRlbF9kcF9t YXhfbGlua19yYXRlKGludGVsX2RwKTsKPj4gIAltYXhfbGFuZXMgPSBpbnRlbF9kcF9tYXhfbGFu ZV9jb3VudChpbnRlbF9kcCk7Cj4+ICAKPj4gQEAgLTE0OTksNiArMTY1NCw5IEBAIGludGVsX2Rw X21heF9saW5rX3JhdGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPj4gIAlpbnQgcmF0ZXNb RFBfTUFYX1NVUFBPUlRFRF9SQVRFU10gPSB7fTsKPj4gIAlpbnQgbGVuOwo+PiAgCj4+ICsJaWYg KGludGVsX2RwLT5tYXhfbGlua19yYXRlX3VwZnJvbnQpCj4+ICsJCXJldHVybiBpbnRlbF9kcC0+ bWF4X2xpbmtfcmF0ZV91cGZyb250Owo+PiArCj4+ICAJbGVuID0gaW50ZWxfZHBfY29tbW9uX3Jh dGVzKGludGVsX2RwLCByYXRlcyk7Cj4+ICAJaWYgKFdBUk5fT04obGVuIDw9IDApKQo+PiAgCQly ZXR1cm4gMTYyMDAwOwo+PiBAQCAtMTY0NCw2ICsxODAyLDIxIEBAIGludGVsX2RwX2NvbXB1dGVf Y29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+PiAgCWZvciAoOyBicHAgPj0g NiozOyBicHAgLT0gMiozKSB7Cj4+ICAJCW1vZGVfcmF0ZSA9IGludGVsX2RwX2xpbmtfcmVxdWly ZWQoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKPj4gIAkJCQkJCSAgIGJwcCk7Cj4+ICsKPj4g KwkJaWYgKCFpc19lZHAoaW50ZWxfZHApICYmIGludGVsX2RwLT51cGZyb250X2RvbmUpIHsKPj4g KwkJCWNsb2NrID0gbWF4X2Nsb2NrOwo+PiArCQkJbGFuZV9jb3VudCA9IGludGVsX2RwLT5tYXhf bGFuZXNfdXBmcm9udDsKPj4gKwkJCWxpbmtfY2xvY2sgPSBpbnRlbF9kcC0+bWF4X2xpbmtfcmF0 ZV91cGZyb250Owo+PiArCQkJbGlua19hdmFpbCA9IGludGVsX2RwX21heF9kYXRhX3JhdGUobGlu a19jbG9jaywKPj4gKwkJCQkJCQkgICAgbGFuZV9jb3VudCk7Cj4+ICsJCQltb2RlX3JhdGUgPSBp bnRlbF9kcF9saW5rX3JlcXVpcmVkKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2ssCj4+ICsJCQkJ CQkJICAgYnBwKTsKPj4gKwkJCWlmIChtb2RlX3JhdGUgPD0gbGlua19hdmFpbCkKPj4gKwkJCQln b3RvIGZvdW5kOwo+PiArCQkJZWxzZQo+PiArCQkJCWNvbnRpbnVlOwo+PiArCQl9Cj4+ICsKPj4g IAkJY2xvY2sgPSBtYXhfY2xvY2s7Cj4+ICAJCWxhbmVfY291bnQgPSBtYXhfbGFuZV9jb3VudDsK Pj4gIAkJbGlua19jbG9jayA9IGNvbW1vbl9yYXRlc1tjbG9ja107Cj4+IEBAIC0xNjcyLDcgKzE4 NDUsNiBAQCBmb3VuZDoKPj4gIAl9Cj4+ICAKPj4gIAlwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCA9 IGxhbmVfY291bnQ7Cj4+IC0KPj4gIAlwaXBlX2NvbmZpZy0+cGlwZV9icHAgPSBicHA7Cj4+ICAJ cGlwZV9jb25maWctPnBvcnRfY2xvY2sgPSBjb21tb25fcmF0ZXNbY2xvY2tdOwo+PiAgCj4+IEBA IC00NDUzLDggKzQ2MjUsMTIgQEAgaW50ZWxfZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICppbnRlbF9jb25uZWN0b3IpCj4+ICAKPj4gIG91dDoKPj4gIAlpZiAoKHN0YXR1cyAh PSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkgJiYKPj4gLQkgICAgKGludGVsX2RwLT5pc19t c3QgPT0gZmFsc2UpKQo+PiArCSAgICAoaW50ZWxfZHAtPmlzX21zdCA9PSBmYWxzZSkpIHsKPj4g IAkJaW50ZWxfZHBfdW5zZXRfZWRpZChpbnRlbF9kcCk7Cj4+ICsJCWludGVsX2RwLT51cGZyb250 X2RvbmUgPSBmYWxzZTsKPj4gKwkJaW50ZWxfZHAtPm1heF9sYW5lc191cGZyb250ID0gMDsKPj4g KwkJaW50ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCA9IDA7Cj4+ICsJfQo+PiAgCj4+ICAJ aW50ZWxfZGlzcGxheV9wb3dlcl9wdXQodG9faTkxNShkZXYpLCBwb3dlcl9kb21haW4pOwo+PiAg CXJldHVybjsKPj4gQEAgLTU2OTgsNiArNTg3NCwxMiBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3Rv cihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPj4gIAlpZiAodHlw ZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfZURQKQo+PiAgCQlpbnRlbF9lbmNvZGVyLT50eXBlID0g SU5URUxfT1VUUFVUX0VEUDsKPj4gIAo+PiArCS8qIEluaXRpYWxpemUgdXBmcm9udCBsaW5rIHRy YWluaW5nIHZmdW5jIGZvciBEUCAqLwo+PiArCWlmIChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElO VEVMX09VVFBVVF9FRFApIHsKPj4gKwkJaWYgKEhBU19EREkoZGV2X3ByaXYpKQo+PiArCQkJaW50 ZWxfZHAtPnVwZnJvbnRfbGlua190cmFpbiA9IGludGVsX2RkaV9saW5rX3RyYWluOwo+PiArCX0K Pj4gKwo+PiAgCS8qIGVEUCBvbmx5IG9uIHBvcnQgQiBhbmQvb3IgQyBvbiB2bHYvY2h2ICovCj4+ ICAJaWYgKFdBUk5fT04oKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikp ICYmCj4+ICAJCSAgICBpc19lZHAoaW50ZWxfZHApICYmIHBvcnQgIT0gUE9SVF9CICYmIHBvcnQg IT0gUE9SVF9DKSkKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw X2xpbmtfdHJhaW5pbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJh aW5pbmcuYwo+PiBpbmRleCA2ZWI1ZWI2Li43ODJhOTE5IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4+IEBAIC0zMDQsNyArMzA0LDYg QEAgaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQo+PiAgCWludGVsX2RwX3NldF9pZGxlX2xpbmtfdHJhaW4oaW50ZWxf ZHApOwo+PiAgCj4+ICAJcmV0dXJuIGludGVsX2RwLT5jaGFubmVsX2VxX3N0YXR1czsKPj4gLQo+ PiAgfQo+PiAgCj4+ICB2b2lkIGludGVsX2RwX3N0b3BfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBpbmRleCAwYWViMzE3 Li5mZGZjMGI2IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBAQCAtODg3LDYg Kzg4NywxMiBAQCBzdHJ1Y3QgaW50ZWxfZHAgewo+PiAgCWVudW0gaGRtaV9mb3JjZV9hdWRpbyBm b3JjZV9hdWRpbzsKPj4gIAlib29sIGxpbWl0ZWRfY29sb3JfcmFuZ2U7Cj4+ICAJYm9vbCBjb2xv cl9yYW5nZV9hdXRvOwo+PiArCj4+ICsJLyogVXBmcm9udCBsaW5rIHRyYWluIHBhcmFtZXRlcnMg Ki8KPj4gKwlpbnQgbWF4X2xpbmtfcmF0ZV91cGZyb250Owo+PiArCXVpbnQ4X3QgbWF4X2xhbmVz X3VwZnJvbnQ7Cj4+ICsJYm9vbCB1cGZyb250X2RvbmU7Cj4+ICsKPj4gIAl1aW50OF90IGRwY2Rb RFBfUkVDRUlWRVJfQ0FQX1NJWkVdOwo+PiAgCXVpbnQ4X3QgcHNyX2RwY2RbRURQX1BTUl9SRUNF SVZFUl9DQVBfU0laRV07Cj4+ICAJdWludDhfdCBkb3duc3RyZWFtX3BvcnRzW0RQX01BWF9ET1dO U1RSRUFNX1BPUlRTXTsKPj4gQEAgLTk0NCw2ICs5NTAsMTEgQEAgc3RydWN0IGludGVsX2RwIHsK Pj4gIAkvKiBUaGlzIGlzIGNhbGxlZCBiZWZvcmUgYSBsaW5rIHRyYWluaW5nIGlzIHN0YXJ0ZXJk ICovCj4+ICAJdm9pZCAoKnByZXBhcmVfbGlua19yZXRyYWluKShzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKTsKPj4gIAo+PiArCS8qIEZvciBVcGZyb250IGxpbmsgdHJhaW5pbmcgKi8KPj4gKwli b29sICgqdXBmcm9udF9saW5rX3RyYWluKShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQg Y2xvY2ssCj4+ICsJCQkJICAgdWludDhfdCBsYW5lX2NvdW50LCBib29sIGxpbmtfbXN0LAo+PiAr CQkJCSAgIGJvb2wgaXNfdXBmcm9udCk7Cj4+ICsKPj4gIAkvKiBEaXNwbGF5cG9ydCBjb21wbGlh bmNlIHRlc3RpbmcgKi8KPj4gIAl1bnNpZ25lZCBsb25nIGNvbXBsaWFuY2VfdGVzdF90eXBlOwo+ PiAgCXVuc2lnbmVkIGxvbmcgY29tcGxpYW5jZV90ZXN0X2RhdGE7Cj4+IEBAIC0xMTY2LDcgKzEx NzcsOCBAQCB2b2lkIGludGVsX2RkaV9jbG9ja19nZXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4+ICB2b2lkIGludGVsX2RkaV9zZXRfdmNfcGF5bG9hZF9hbGxvYyhzdHJ1Y3QgZHJt X2NydGMgKmNydGMsIGJvb2wgc3RhdGUpOwo+PiAgdWludDMyX3QgZGRpX3NpZ25hbF9sZXZlbHMo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4+ICBib29sIGludGVsX2RkaV9saW5rX3RyYWlu KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtYXhfbGlua19yYXRlLAo+PiAtCQkJICB1 aW50OF90IG1heF9sYW5lX2NvdW50LCBib29sIGxpbmtfbXN0KTsKPj4gKwkJCSAgdWludDhfdCBt YXhfbGFuZV9jb3VudCwgYm9vbCBsaW5rX21zdCwKPj4gKwkJCSAgYm9vbCBpc191cGZyb250KTsK Pj4gIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqaW50ZWxfZGRpX2dldF9saW5rX2RwbGwoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKPj4gIAkJCQkJCSAgaW50IGNsb2NrKTsKPj4gIHVuc2ln bmVkIGludCBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKCi0t IApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==