From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [RFCv2 DP-typeC 5/6] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Wed, 21 Oct 2015 18:38:00 +0300 Message-ID: <1445441880.3989.22.camel@gmail.com> References: <1444824013-23147-1-git-send-email-durgadoss.r@intel.com> <1444824013-23147-6-git-send-email-durgadoss.r@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f52.google.com (mail-pa0-f52.google.com [209.85.220.52]) by gabe.freedesktop.org (Postfix) with ESMTPS id C823A89C29 for ; Wed, 21 Oct 2015 08:38:05 -0700 (PDT) Received: by padhk11 with SMTP id hk11so58047343pad.1 for ; Wed, 21 Oct 2015 08:38:05 -0700 (PDT) In-Reply-To: <1444824013-23147-6-git-send-email-durgadoss.r@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Durgadoss R , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE1LTEwLTE0IGF0IDE3OjMwICswNTMwLCBEdXJnYWRvc3MgUiB3cm90ZToKPiBU byBzdXBwb3J0IFVTQiB0eXBlIEMgYWx0ZXJuYXRlIERQIG1vZGUsIHRoZSBkaXNwbGF5IGRyaXZl ciBuZWVkcyB0bwo+IGtub3cgdGhlIG51bWJlciBvZiBsYW5lcyByZXF1aXJlZCBieSB0aGUgRFAg cGFuZWwgYXMgd2VsbCBhcyBudW1iZXIKPiBvZiBsYW5lcyB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQg YnkgdGhlIHR5cGUtQyBjYWJsZS4gU29tZXRpbWVzLCB0aGUKPiB0eXBlLUMgY2FibGUgbWF5IGxp bWl0IHRoZSBiYW5kd2lkdGggZXZlbiBpZiBQYW5lbCBjYW4gc3VwcG9ydAo+IG1vcmUgbGFuZXMu IFRvIGFkZHJlc3MgdGhlc2Ugc2NlbmFyaW9zLCB0aGUgZGlzcGxheSBkcml2ZXIgd2lsbAo+IHN0 YXJ0IGxpbmsgdHJhaW5pbmcgd2l0aCBtYXggbGFuZXMsIGFuZCBpZiB0aGF0IGZhaWxzLCB0aGUg ZHJpdmVyCj4gZmFsbHMgYmFjayB0byB4MiBsYW5lczsgYW5kIHJlcGVhdHMgdGhpcyBwcm9jZWR1 cmUgZm9yIGFsbAo+IGJhbmR3aWR0aC9sYW5lIGNvbmZpZ3VyYXRpb25zLgo+IAo+ICogU2luY2Ug bGluayB0cmFpbmluZyBpcyBkb25lIGJlZm9yZSBtb2Rlc2V0IG9ubHkgdGhlIHBvcnQKPiAgIChh bmQgbm90IHBpcGUvcGxhbmVzKSBhbmQgaXRzIGFzc29jaWF0ZWQgUExMcyBhcmUgZW5hYmxlZC4K PiAqIE9uY2UgbGluayB0cmFpbmluZyBpcyBkb25lLCB0aGUgcG9ydCBhbmQgaXRzIFBMTHMgYXJl IGRpc2FibGVkOwo+ICAgc28gdGhhdCB0aGUgc3Vic2VxdWVudCBtb2Rlc2V0IGlzIG5vdCBhd2Fy ZSBvZiB0aGVzZSBjaGFuZ2VzLgo+ICogT24gRFAgaG90cGx1ZzogRGlyZWN0bHkgc3RhcnQgbGlu ayB0cmFpbmluZyBvbiB0aGUgY3J0Ywo+ICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBEUCBlbmNvZGVy Lgo+ICogT24gQ29ubmVjdGVkIGJvb3Qgc2NlbmFyaW9zOiBXaGVuIGJvb3RlZCB3aXRoIGFuIExG UCBhbmQgYSBEUCwKPiAgIHR5cGljYWxseSwgQklPUyBicmluZ3MgdXAgRFAuIEluIHRoZXNlIGNh c2VzLCB3ZSBkaXNhYmxlIHRoZQo+ICAgY3J0YyBmaXJzdCBhbmQgdGhlbiBzdGFydCB1cGZyb250 IGxpbmsgdHJhaW5pbmcuIFRoZSBjcnRjIGlzCj4gICByZS1lbmFibGVkIGFzIHBhcnQgb2YgYSBz dWJzZXF1ZW50IG1vZGVzZXQuCj4gKiBGb3IgQlhULCBkZGktPmVuYWJsZS9kaXNhYmxlIGZvciBE UCBvbmx5IGVuYWJsZS9kaXNhYmxlCj4gICBhdWRpbyBjb2RlYyBhbmQgaGVuY2UgYXJlIG5vdCBp bmNsdWRlZCBpbiB1cGZyb250IGxpbmsKPiAgIHRyYWluaW5nIHNlcXVlbmNlLgo+ICogQXMgb2Yg bm93LCB0aGlzIGlzIHRlc3RlZCBvbmx5IG9uIEJYVCBBMSBwbGF0Zm9ybSwgb24KPiAgIGtlcm5l bCA0LjItcmMyLgo+IAo+IFNpZ25lZC1vZmYtYnk6IER1cmdhZG9zcyBSIDxkdXJnYWRvc3MuckBp bnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIHwgMTUy Cj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwLmMgIHwgIDQxICsrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oIHwgICAyICsKPiAgMyBmaWxlcyBjaGFuZ2VkLCAxOTQgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBp bmRleCA4ZTRlYTM2Li5iM2E5YmZmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBA QCAtMzIwOSw2ICszMjA5LDE1OCBAQCBpbnRlbF9kZGlfaW5pdF9oZG1pX2Nvbm5lY3RvcihzdHJ1 Y3QKPiBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ICAJcmV0dXJuIGNvbm5l Y3RvcjsKPiAgfQo+ICAKPiArYm9vbCBpbnRlbF9kZGlfdXBmcm9udF9saW5rX3RyYWluKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgc3RydWN0 IGludGVsX2NydGMgKmNydGMpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpk aWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiArCXN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvciA9IGludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3I7Cj4gKwlzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqdG1wX2VuY29kZXIsICplbmNvZGVyID0gY29ubmVjdG9yLT5lbmNv ZGVyOwo+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGw7Cj4gKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqdG1wX2NydGM7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKnRtcF9kcm1fY3J0YzsKPiArCXVp bnQ4X3QgdG1wX2xhbmVfY291bnQsIHRtcF9saW5rX2J3Owo+ICsJYm9vbCByZXQsIGZvdW5kLCB2 YWxpZF9jcnRjID0gZmFsc2U7Cj4gKwo+ICsJLyogRm9yIG5vdywgd2UgaGF2ZSBvbmx5IFNLTCBh bmQgQlhUIHN1cHBvcnRpbmcgdHlwZS1DICovCj4gKwlpZiAoIUlTX0JST1hUT04oZGV2KSB8fCAh SVNfU0tZTEFLRShkZXYpKQo+ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCWlmICghY29ubmVjdG9y IHx8ICFlbmNvZGVyKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiZHAgY29ubmVjdG9yL2VuY29kZXIg aXMgTlVMTFxuIik7Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsKPiArCS8qIElmIHdlIGFs cmVhZHkgaGF2ZSBhIGNydGMsIHN0YXJ0IGxpbmsgdHJhaW5pbmcgZGlyZWN0bHkgKi8KPiArCWlm IChjcnRjKSB7Cj4gKwkJdmFsaWRfY3J0YyA9IHRydWU7Cj4gKwkJZ290byBzdGFydF9saW5rX3Ry YWluOwo+ICsJfQo+ICsKPiArCS8qIEZpbmQgYW4gdW51c2VkIGNydGMgYW5kIHVzZSBpdCBmb3Ig bGluayB0cmFpbmluZyAqLwo+ICsJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKPiAr CQlpZiAoaW50ZWxfY3J0Y19hY3RpdmUoJmNydGMtPmJhc2UpKQo+ICsJCQljb250aW51ZTsKPiAr Cj4gKwkJLyogTWFrZSBzdXJlIHRoZSBuZXcgY3J0YyB3aWxsIHdvcmsgd2l0aCB0aGUgZW5jb2Rl ciAqLwo+ICsJCWlmIChkcm1fZW5jb2Rlcl9jcnRjX29rKCZlbmNvZGVyLT5iYXNlLCAmY3J0Yy0+ YmFzZSkpIHsKPiArCQkJZm91bmQgPSB0cnVlOwo+ICsKPiArCQkJLyogU2F2ZSB0aGUgZXhpc3Rp bmcgdmFsdWVzICovCj4gKwkJCXRtcF9lbmNvZGVyID0gY29ubmVjdG9yLT5uZXdfZW5jb2RlcjsK PiArCQkJdG1wX2NydGMgPSBlbmNvZGVyLT5uZXdfY3J0YzsKPiArCQkJdG1wX2RybV9jcnRjID0g ZW5jb2Rlci0+YmFzZS5jcnRjOwoKSW4gd2hpY2ggY2FzZSBhcmUgdGhlc2UgZGlmZmVyZW50IHRo YW4gTlVMTD8gSSB0aG91Z2h0IGF0IHRoaXMgcG9pbnQgdGhlcmUKaGFzbid0IGJlZW4gYSBtb2Rl c2V0IGluIHRoZSBob3RwbHVnIGNhc2UgYW5kIHlvdSBkaXNhYmxlIHRoZSBjcnRjIG9uIHRoZQpj b25uZWN0ZWQgb24gYm9vdCBjYXNlLiBUaGlzIHdpbGwgYWxzbyBuZWVkIHRvIGJlIHJlYmFzZWQg b24gYXRvbWljLgoKPiArCj4gKwkJCWNvbm5lY3Rvci0+bmV3X2VuY29kZXIgPSBlbmNvZGVyOwo+ ICsJCQllbmNvZGVyLT5uZXdfY3J0YyA9IGNydGM7Cj4gKwkJCWVuY29kZXItPmJhc2UuY3J0YyA9 ICZjcnRjLT5iYXNlOwo+ICsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfQoKSSB0aGluayBpdCB3 b3VsZCBiZSBhIGdvb2QgaWRlYSB0byBzcGxpdCB0aGUgc2VhcmNoIGZvciBhbiB1bnVzZWQgY3J0 YyB0byBhCnNlcGFyYXRlIGZ1bmN0aW9uLiBBbHNvLCB0aGVyZSdzIHNpbWlsYXIgY29kZSBpbiBp bnRlbF9nZXRfbG9hZF9kZXRlY3RfcGlwZSgpLAppdCB3b3VsZCBiZSBuaWNlIGlmIHRoYXQgY291 bGQgdXNlIHRoZSBzYW1lIGZ1bmN0aW9uLgoKPiArCj4gKwlpZiAoIWZvdW5kKSB7Cj4gKwkJRFJN X0VSUk9SKCJDb3VsZCBub3QgZmluZCBjcnRjIGZvciB1cGZyb250IGxpbmsgdHJhaW5pbmdcbiIp Owo+ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiArCj4gK3N0YXJ0X2xpbmtfdHJhaW46Cj4gKwlE Uk1fREVCVUdfS01TKCJ1cGZyb250IGxpbmsgdHJhaW4gb24gcGlwZTolY1xuIiwgcGlwZV9uYW1l KGNydGMKPiAtPnBpcGUpKTsKPiArCWZvdW5kID0gZmFsc2U7Cj4gKwo+ICsJLyogU2F2ZSB0aGUg ZXhpc3RpbmcgbGFuZV9jb3VudCBhbmQgbGlua19idyB2YWx1ZXMgKi8KPiArCXRtcF9sYW5lX2Nv dW50ID0gaW50ZWxfZHAtPmxhbmVfY291bnQ7Cj4gKwl0bXBfbGlua19idyA9IGludGVsX2RwLT5s aW5rX2J3Owo+ICsKPiArCS8qIEluaXRpYWxpemUgd2l0aCBNYXggTGluayByYXRlICYgbGFuZSBj b3VudCBzdXBwb3J0ZWQgYnkgcGFuZWwgKi8KPiArCWludGVsX2RwLT5saW5rX2J3ID0gIGludGVs X2RwLT5kcGNkW0RQX01BWF9MSU5LX1JBVEVdOwo+ICsJaW50ZWxfZHAtPmxhbmVfY291bnQgPSBp bnRlbF9kcC0+ZHBjZFtEUF9NQVhfTEFORV9DT1VOVF0gJgo+ICsJCQkJCURQX01BWF9MQU5FX0NP VU5UX01BU0s7Cj4gKwo+ICsJLyogU2VsZWN0cyB0aGUgc2hhcmVkIERQTEwgdG8gdXNlIGZvciB0 aGlzIHBvcnQgKi8KPiArCWludGVsX2dldF9kZGlfcGxsKGRldl9wcml2LCBkaWdfcG9ydC0+cG9y dCwgY3J0Yy0+Y29uZmlnKTsKPiArCXBsbCA9IGludGVsX2NydGNfdG9fc2hhcmVkX2RwbGwoY3J0 Yyk7Cj4gKwlpZiAoIXBsbCkgewo+ICsJCURSTV9FUlJPUigiQ291bGQgbm90IGdldCBzaGFyZWQg RFBMTFxuIik7Cj4gKwkJZ290byBleGl0Owo+ICsJfQo+ICsKPiArCWRvIHsKPiArCQkvKiBGaW5k IHBvcnQgY2xvY2sgZnJvbSBsaW5rX2J3ICovCj4gKwkJY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2Nr ID0KPiArCQkJCWRybV9kcF9id19jb2RlX3RvX2xpbmtfcmF0ZShpbnRlbF9kcAo+IC0+bGlua19i dyk7Cj4gKwo+ICsJCXJldCA9IGludGVsX2RkaV9wbGxfc2VsZWN0KGNydGMsIGNydGMtPmNvbmZp ZywgZW5jb2RlciwKPiBmYWxzZSk7Cj4gKwkJaWYgKCFyZXQpIHsKPiArCQkJRFJNX0VSUk9SKCJD b3VsZCBub3Qgc2VsZWN0IFBMTFxuIik7Cj4gKwkJCWdvdG8gZXhpdDsKPiArCQl9Cj4gKwo+ICsJ CXBsbC0+Y29uZmlnLmNydGNfbWFzayA9ICgxIDw8IGNydGMtPnBpcGUpOwoKSXMgaXQgcG9zc2li bGUgdGhhdCB0aGlzIHBsbCBpcyBiZWluZyB1c2VkIGJ5IGFub3RoZXIgYWN0aXZlIGNydGM/IElu IHRoYXQgY2FzZQp5b3Ugc3RlYWwgdGhlIHBsbCBhbmQgY2hhbmdlIHRoZSBjb25maWd1cmF0aW9u IGJlaGluZCBpdHMgYmFjay4KCj4gKwkJcGxsLT5jb25maWcuaHdfc3RhdGUgPSBjcnRjLT5jb25m aWctPmRwbGxfaHdfc3RhdGU7Cj4gKwo+ICsJCURSTV9ERUJVR19LTVMoIlVzaW5nIHNoYXJlZF9k cGxsOiVkXG4iLCBjcnRjLT5jb25maWcKPiAtPnNoYXJlZF9kcGxsKTsKPiArCj4gKwkJLyogRW5h YmxlIFBMTCBmb2xsb3dlZCBieSBwb3J0ICovCj4gKwkJaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxs KGNydGMpOwo+ICsJCWVuY29kZXItPnByZV9lbmFibGUoZW5jb2Rlcik7Cj4gKwo+ICsJCS8qIENo ZWNrIGlmIGxpbmsgdHJhaW5pbmcgcGFzc2VkOyBpZiBzbyB1cGRhdGUgbGFuZSBjb3VudCAqLwo+ ICsJCWlmIChpbnRlbF9kcC0+dHJhaW5fc2V0X3ZhbGlkKSB7Cj4gKwkJCWludGVsX2RwLT5kcGNk W0RQX01BWF9MQU5FX0NPVU5UXSAmPQo+ICsJCQkJCQl+RFBfTUFYX0xBTkVfQ09VTlRfTUFTSzsK PiArCQkJaW50ZWxfZHAtPmRwY2RbRFBfTUFYX0xBTkVfQ09VTlRdIHw9Cj4gKwkJCQlpbnRlbF9k cC0+bGFuZV9jb3VudCAmCj4gRFBfTUFYX0xBTkVfQ09VTlRfTUFTSzsKPiArCj4gKwkJCWZvdW5k ID0gdHJ1ZTsKPiArCQl9Cj4gKwo+ICsJCS8qIERpc2FibGUgcG9ydCBmb2xsb3dlZCBieSBQTEwg Zm9yIG5leHQgcmV0cnkvY2xlYW4gdXAgKi8KPiArCQllbmNvZGVyLT5wb3N0X2Rpc2FibGUoZW5j b2Rlcik7Cj4gKwkJaW50ZWxfZGlzYWJsZV9zaGFyZWRfZHBsbChjcnRjKTsKPiArCj4gKwkJaWYg KGZvdW5kKQo+ICsJCQlnb3RvIGV4aXQ7Cj4gKwo+ICsJCURSTV9ERUJVR19LTVMoInVwZnJvbnQg bGluayB0cmFpbmluZyBmYWlsZWQuIGxhbmVzOiVkCj4gYnc6JWRcbiIsCj4gKwkJCQlpbnRlbF9k cC0+bGFuZV9jb3VudCwgaW50ZWxfZHAtPmxpbmtfYncpOwo+ICsKPiArCQkvKiBHbyBkb3duIHRv IHRoZSBuZXh0IGxldmVsIGFuZCByZXRyeSBsaW5rIHRyYWluaW5nICovCj4gKwkJaWYgKGludGVs X2RwLT5sYW5lX2NvdW50ID09IDQpIHsKPiArCQkJaW50ZWxfZHAtPmxhbmVfY291bnQgPSAyOwo+ ICsJCX0gZWxzZSBpZiAoaW50ZWxfZHAtPmxhbmVfY291bnQgPT0gMikgewo+ICsJCQlpbnRlbF9k cC0+bGFuZV9jb3VudCA9IDE7Cj4gKwkJfSBlbHNlIGlmIChpbnRlbF9kcC0+bGlua19idyA9PSBE UF9MSU5LX0JXXzVfNCkgewo+ICsJCQlpbnRlbF9kcC0+bGlua19idyA9IERQX0xJTktfQldfMl83 Owo+ICsJCQlpbnRlbF9kcC0+bGFuZV9jb3VudCA9IDQ7Cj4gKwkJfSBlbHNlIGlmIChpbnRlbF9k cC0+bGlua19idyA9PSBEUF9MSU5LX0JXXzJfNykgewo+ICsJCQlpbnRlbF9kcC0+bGlua19idyA9 IERQX0xJTktfQldfMV82MjsKPiArCQkJaW50ZWxfZHAtPmxhbmVfY291bnQgPSA0Owo+ICsJCX0g ZWxzZSB7Cj4gKwkJCS8qIFRyaWVkIGFsbCBjb21iaW5hdGlvbnMsIHNvIGV4aXQgKi8KPiArCQkJ YnJlYWs7Cj4gKwkJfQoKSSB3b25kZXIgd2hhdCBoYXBwZW5zIHRvIHRoZSBsYW5lIHN0YXR1cyBk cGNkIHJlZ2lzdGVycyB3aGVuIHRoZSBjYWJsZSBvbmx5CnN1cHBvcnRzIGEgcmVkdWNlZCBudW1i ZXIgb2YgbGFuZXMuIFRoZSBEUCBzdGFuZGFyZCAoYXQgbGVhc3QgdGhlIDEuMyB2ZXJzaW9uKQpz YXlzIHRoYXQgaWYgY2xvY2sgcmVjb3ZlcnkgZmFpbHMgd2l0aCBSQlIsIHRoZSBzb3VyY2UgZGV2 aWNlIHNob3VsZCBjaGVjayBpZgp0aGUgbG93ZXIgbnVtYmVyIGxhbmVzIGhhdmUgdGhlIENSX0RP TkUgYml0IHNldCwgYW5kIGluIHRoYXQgY2FzZSByZWR1Y2UgdGhlCm51bWJlciBvZiBsYW5lcywg Z28gYmFjayB0byB0aGUgaGlnaGVzdCByYXRlIGRlc2lyZWQgYW5kIGNvbnRpbnVlIHRoZSBsaW5r CnRyYWluaW5nLgoKPiArCj4gKwl9IHdoaWxlICgxKTsKCk1heWJlIG1ha2UgdGhpcyBpbnRvIGEg Zm9yICg7OykgbG9vcC4gVGhhdCB3YXkgb25lIGNhbiBzcG90IHRoZSAobGFjayBvZikgZW5kCmNv bmRpdGlvbiBlYXJsaWVyIHdoZW4gcmVhZGluZyB0b3AgdG8gYm90dG9tLgoKCkFuZGVyCgo+ICsK PiArZXhpdDoKPiArCS8qIFJlc3RvcmUgbG9jYWwgYXNzb2NpYXRpb25zIG1hZGUgKi8KPiArCWlm ICghdmFsaWRfY3J0Yykgewo+ICsJCWNvbm5lY3Rvci0+bmV3X2VuY29kZXIgPSB0bXBfZW5jb2Rl cjsKPiArCQllbmNvZGVyLT5uZXdfY3J0YyA9IHRtcF9jcnRjOwo+ICsJCWVuY29kZXItPmJhc2Uu Y3J0YyA9IHRtcF9kcm1fY3J0YzsKPiArCX0KPiArCj4gKwlpZiAoZm91bmQpCj4gKwkJRFJNX0RF QlVHX0tNUygidXBmcm9udCBsaW5rIHRyYWluaW5nIHBhc3NlZC4gbGFuZXM6JWQKPiBidzolZFxu IiwKPiArCQkJCWludGVsX2RwLT5sYW5lX2NvdW50LCBpbnRlbF9kcC0+bGlua19idyk7Cj4gKwkv KiBSZXN0b3JlIGxhbmVfY291bnQgYW5kIGxpbmtfYncgdmFsdWVzICovCj4gKwlpbnRlbF9kcC0+ bGFuZV9jb3VudCA9IHRtcF9sYW5lX2NvdW50Owo+ICsJaW50ZWxfZHAtPmxpbmtfYncgPSB0bXBf bGlua19idzsKPiArCj4gKwlyZXR1cm4gZm91bmQ7Cj4gK30KPiArCj4gIHZvaWQgaW50ZWxfZGRp X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQpCj4gIHsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggMThiY2ZiZS4uODM3NmI0NyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwo+IEBAIC00Nzg1LDYgKzQ3ODUsMzUgQEAgaW50ZWxfZHBfcG93ZXJf cHV0KHN0cnVjdCBpbnRlbF9kcCAqZHAsCj4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dCh0b19p OTE1KGVuY29kZXItPmJhc2UuZGV2KSwgcG93ZXJfZG9tYWluKTsKPiAgfQo+ICAKPiArc3RhdGlj IGJvb2wgaW50ZWxfZHBfdXBmcm9udF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0g ZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gaW50 ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5jcnRjOwo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmlu dGVsX2VuY29kZXIgPSAmaW50ZWxfZGlnX3BvcnQtPmJhc2U7Cj4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gaW50ZWxfZW5jb2Rlci0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YyA9IGNydGMgPyB0b19pbnRlbF9jcnRjKGNydGMpIDogTlVMTDsKPiArCj4gKwkv Kgo+ICsJICogT24gaG90cGx1ZyBjYXNlcywgd2UgY2FsbCBfdXBmcm9udF9saW5rX3RyYWluIGRp cmVjdGx5Lgo+ICsJICogSW4gY29ubmVjdGVkIGJvb3Qgc2NlbmFyaW9zIChib290IHdpdGgge01J UEkvZURQfSArIERQKSwKPiArCSAqIEJJT1MgdHlwaWNhbGx5IGJyaW5ncyB1cCBEUC4gSGVuY2Us IHdlIGRpc2FibGUgdGhlIGNydGMKPiArCSAqIHRvIGRvIF91cGZyb250X2xpbmtfdHJhaW5pbmcu IEl0IGdldHMgcmUtZW5hYmxlZCBhcyBwYXJ0IG9mCj4gKwkgKiBzdWJzZXF1ZW50IG1vZGVzZXQu Cj4gKwkgKi8KPiArCWlmIChpbnRlbF9lbmNvZGVyLT5jb25uZWN0b3JzX2FjdGl2ZSAmJiBjcnRj ICYmIGNydGMtPmVuYWJsZWQpIHsKPiArCQlEUk1fREVCVUdfS01TKCJEaXNhYmxpbmcgY3J0YyAl YyBmb3IgdXBmcm9udCBsaW5rCj4gdHJhaW5pbmdcbiIsCj4gKwkJCQlwaXBlX25hbWUoaW50ZWxf Y3J0Yy0+cGlwZSkpOwo+ICsJCWludGVsX2NydGNfY29udHJvbChjcnRjLCBmYWxzZSk7Cj4gKwl9 Cj4gKwo+ICsJaWYgKEhBU19EREkoZGV2KSkKPiArCQlyZXR1cm4gaW50ZWxfZGRpX3VwZnJvbnRf bGlua190cmFpbihkZXYsIGludGVsX2RwLAo+IGludGVsX2NydGMpOwo+ICsKPiArCS8qIE5vdCBh IHN1cHBvcnRlZCBwbGF0Zm9ybS4gQXNzdW1lIHdlIGRvbid0IG5lZWQgdXBmcm9udF90cmFpbiAq Lwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gKwo+ICBzdGF0aWMgZW51bSBkcm1fY29ubmVj dG9yX3N0YXR1cwo+ICBpbnRlbF9kcF9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwgYm9vbCBmb3JjZSkKPiAgewo+IEBAIC00Nzk0LDcgKzQ4MjMsNyBAQCBpbnRlbF9kcF9k ZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbAo+IGZvcmNlKQo+ICAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ICAJZW51bSBkcm1fY29u bmVjdG9yX3N0YXR1cyBzdGF0dXM7Cj4gIAllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWlu IHBvd2VyX2RvbWFpbjsKPiAtCWJvb2wgcmV0Owo+ICsJYm9vbCByZXQsIGRvX3VwZnJvbnRfbGlu a190cmFpbjsKPiAgCXU4IHNpbmtfaXJxX3ZlY3RvcjsKPiAgCj4gIAlEUk1fREVCVUdfS01TKCJb Q09OTkVDVE9SOiVkOiVzXVxuIiwKPiBAQCAtNDg1Miw2ICs0ODgxLDE2IEBAIGludGVsX2RwX2Rl dGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sCj4gZm9yY2UpCj4gIAkJ CURSTV9ERUJVR19EUklWRVIoIkNQIG9yIHNpbmsgc3BlY2lmaWMgaXJxCj4gdW5oYW5kbGVkXG4i KTsKPiAgCX0KPiAgCj4gKwkvKiBEbyBub3QgZG8gdXBmcm9udCBsaW5rIHRyYWluLCBpZiBpdCBp cyBhIGNvbXBsaWFuY2UgcmVxdWVzdCAqLwo+ICsJZG9fdXBmcm9udF9saW5rX3RyYWluID0KPiAr CQlpbnRlbF9lbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCAmJgo+ICsJ CWludGVsX2RwLT5jb21wbGlhbmNlX3Rlc3RfdHlwZSAhPSBEUF9URVNUX0xJTktfVFJBSU5JTkc7 Cj4gKwo+ICsJaWYgKGRvX3VwZnJvbnRfbGlua190cmFpbikgewo+ICsJCXJldCA9IGludGVsX2Rw X3VwZnJvbnRfbGlua190cmFpbihpbnRlbF9kcCk7Cj4gKwkJaWYgKCFyZXQpCj4gKwkJCXN0YXR1 cyA9IGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+ICsJfQo+ICBvdXQ6Cj4gIAlpbnRl bF9kcF9wb3dlcl9wdXQoaW50ZWxfZHAsIHBvd2VyX2RvbWFpbik7Cj4gIAlyZXR1cm4gc3RhdHVz Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA1YmNkZDM3Li44MmFmNGU2IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTAwNyw2ICsxMDA3LDggQEAgdm9p ZCBpbnRlbF9kZGlfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJ CQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiAgdm9pZCBpbnRlbF9k ZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2Moc3RydWN0IGRybV9jcnRjICpjcnRjLCBib29sIHN0YXRl KTsKPiAgdWludDMyX3QgZGRpX3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCk7Cj4gK2Jvb2wgaW50ZWxfZGRpX3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ICsJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjKTsKPiAgCj4gIC8qIGludGVsX2Zyb250YnVmZmVyLmMgKi8KPiAgdm9pZCBpbnRlbF9m Yl9vYmpfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=