From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 1/4] drm/i915/bxt: Fix PPS lost state after suspend breaking eDP link training Date: Thu, 16 Jun 2016 17:39:35 +0300 Message-ID: <1466087975.19918.8.camel@intel.com> References: <1466084243-5388-1-git-send-email-imre.deak@intel.com> <1466084243-5388-2-git-send-email-imre.deak@intel.com> <20160616135834.GC4329@intel.com> Reply-To: imre.deak@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 ESMTP id C61BC6EA72 for ; Thu, 16 Jun 2016 14:39:40 +0000 (UTC) In-Reply-To: <20160616135834.GC4329@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 =?ISO-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gdG8sIDIwMTYtMDYtMTYgYXQgMTY6NTggKzAzMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToK PiBPbiBUaHUsIEp1biAxNiwgMjAxNiBhdCAwNDozNzoyMFBNICswMzAwLCBJbXJlIERlYWsgd3Jv dGU6Cj4gPiBUaGUgUFBTIHJlZ2lzdGVycyBhcmUgYmFja2VkIGJ5IHBvd2VyIHdlbGwgIzAgYW5k IGFzIHN1Y2ggbWF5IGJlIHJlc2V0Cj4gPiBhZnRlciBzeXN0ZW0gb3IgcnVudGltZSBzdXNwZW5k IChib3RoIGltcGx5aW5nIGEgcG9zc2libGUgREM5Cj4gPiB0cmFuc2l0aW9uKS4gRml4IHRoaXMg YnkgcmV1c2luZyB0aGUgVkxWL0NIViBQUFMgcGlwZS1yZWFzc2lnbm1lbnQKPiA+IGxvZ2ljLiBU aGUgZGlmZmVyZW5jZSBvbiBCWFQgaXMgdGhhdCB0aGUgUFBTIGluc3RhbmNlcyBhcmUgbm90IHBp cGUgYnV0Cj4gPiBwb3J0IChvciBtb3JlIGFjY3VyYXRlbHkgcGluKSBzcGVjaWZpYywgc28gd2Ug b25seSBuZWVkIHRvIGNhcmUgYWJvdXQKPiA+IHRoZSBsb3N0IEhXIHN0YXRlLiBBcyBvcHBvc2Vk IHRvIFZMVi9DSFYgdGhlIFNXIHN0YXRlIGlzIGZpeGVkIGFuZAo+ID4gaW5pdGlhbGl6ZWQgZHVy aW5nIGNvbm5lY3RvciBpbml0Lgo+ID4gCj4gPiBUaGlzIGFsc28gcGF2ZXMgdGhlIHdheSB0b3dh cmRzIHVzaW5nIHRoZSBhY3R1YWwgcG9ydC0+UFBTIGluc3RhbmNlCj4gPiBtYXBwaW5nIGJhc2Vk IG9uIFZCVC4KPiA+IAo+ID4gVGhpcyBmaXhlcyBlRFAgbGluayB0cmFpbmluZyBlcnJvcnMgb24g QlhUIGFmdGVyIHN1c3BlbmQsIHdoZXJlIHdlCj4gPiBzdGFydGVkIHRoZSBsaW5rIHRyYWluaW5n IHRvbyBlYXJseSBkdWUgdG8gYW4gaW5jb3JyZWN0IFQzIChwYW5lbCBwb3dlcgo+ID4gb24pIHJl Z2lzdGVyIHZhbHVlLgo+ID4gCj4gPiBCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9w Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0MzYKPiA+IFNpZ25lZC1vZmYtYnk6IEltcmUgRGVhayA8 aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jwqDCoMKgwqDCoMKgwqDCoMKgfCA3MSArKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmjCoMKgwqDCoMKg wqDCoMKgfMKgwqA3ICsrKy0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGlt ZV9wbS5jIHzCoMKgMyArLQo+ID4gwqAzIGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyks IDIzIGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+IGluZGV4 IGJlMDgzNTEuLjE5YThiYmUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBA QCAtNDI2LDYgKzQyNiwzNyBAQCB2bHZfcG93ZXJfc2VxdWVuY2VyX3BpcGUoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKPiA+IMKgCXJldHVybiBpbnRlbF9kcC0+cHBzX3BpcGU7Cj4gPiDCoH0K PiA+IMKgCj4gPiArc3RhdGljIGludAo+ID4gK2J4dF9wb3dlcl9zZXF1ZW5jZXJfaWR4KHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiArewo+ID4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+ICsJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2Owo+ID4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ID4gKwo+ID4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cHBzX211dGV4KTsKPiA+ ICsKPiA+ICsJLyogV2Ugc2hvdWxkIG5ldmVyIGxhbmQgaGVyZSB3aXRoIHJlZ3VsYXIgRFAgcG9y dHMgKi8KPiA+ICsJV0FSTl9PTighaXNfZWRwKGludGVsX2RwKSk7Cj4gPiArCj4gPiArCS8qCj4g PiArCcKgKiBUT0RPOiBCWFQgaGFzIDIgUFBTIGluc3RhbmNlcy4gVGhlIGNvcnJlY3QgcG9ydC0+ UFBTIGluc3RhbmNlCj4gPiArCcKgKiBtYXBwaW5nIG5lZWRzIHRvIGJlIHJldHJpZXZlZCBmcm9t IFZCVCwgZm9yIG5vdyBqdXN0IGhhcmQtY29kZSB0bwo+ID4gKwnCoCogdXNlIGluc3RhbmNlICMw IGFsd2F5cy4KPiA+ICsJwqAqLwo+ID4gKwlpZiAoIWludGVsX2RwLT5wcHNfcmVzZXQpCj4gPiAr CQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJaW50ZWxfZHAtPnBwc19yZXNldCA9IGZhbHNlOwo+ID4g Kwo+ID4gKwkvKgo+ID4gKwnCoCogT25seSB0aGUgSFcgbmVlZHMgdG8gYmUgcmVwcm9ncmFtbWVk LCB0aGUgU1cgc3RhdGUgaXMgZml4ZWQgYW5kCj4gPiArCcKgKiBoYXMgYmVlbiBzZXR1cCBkdXJp bmcgY29ubmVjdG9yIGluaXQuCj4gPiArCcKgKi8KPiA+ICsJaW50ZWxfZHBfaW5pdF9wYW5lbF9w b3dlcl9zZXF1ZW5jZXJfcmVnaXN0ZXJzKGRldiwgaW50ZWxfZHApOwo+ID4gKwo+ID4gKwlyZXR1 cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiDCoHR5cGVkZWYgYm9vbCAoKnZsdl9waXBlX2NoZWNrKShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiDCoAkJCcKgwqDCoMKgwqDCoMKg ZW51bSBwaXBlIHBpcGUpOwo+ID4gwqAKPiA+IEBAIC01MDcsMTIgKzUzOCwxMyBAQCB2bHZfaW5p dGlhbF9wb3dlcl9zZXF1ZW5jZXJfc2V0dXAoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ IMKgCWludGVsX2RwX2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyX3JlZ2lzdGVycyhkZXYsIGlu dGVsX2RwKTsKPiA+IMKgfQo+ID4gwqAKPiA+IC12b2lkIHZsdl9wb3dlcl9zZXF1ZW5jZXJfcmVz ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gK3ZvaWQgaW50ZWxfcG93 ZXJfc2VxdWVuY2VyX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ IMKgewo+ID4gwqAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gPiDC oAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiA+IMKgCj4gPiAtCWlmIChXQVJOX09O KCFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSkpCj4gPiArCWlmIChX QVJOX09OKCFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJgo+ID4g KwnCoMKgwqDCoCFJU19CUk9YVE9OKGRldikpKQo+ID4gwqAJCXJldHVybjsKPiA+IMKgCj4gPiDC oAkvKgo+ID4gQEAgLTUzMiw3ICs1NjQsMTAgQEAgdm9pZCB2bHZfcG93ZXJfc2VxdWVuY2VyX3Jl c2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgCQkJY29udGludWU7 Cj4gPiDCoAo+ID4gwqAJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNl KTsKPiA+IC0JCWludGVsX2RwLT5wcHNfcGlwZSA9IElOVkFMSURfUElQRTsKPiA+ICsJCWlmIChJ U19CUk9YVE9OKGRldikpCj4gPiArCQkJaW50ZWxfZHAtPnBwc19yZXNldCA9IHRydWU7Cj4gPiAr CQllbHNlCj4gPiArCQkJaW50ZWxfZHAtPnBwc19waXBlID0gSU5WQUxJRF9QSVBFOwo+ID4gwqAJ fQo+ID4gwqB9Cj4gPiDCoAo+ID4gQEAgLTU0Miw3ICs1NzcsNyBAQCBfcHBfY3RybF9yZWcoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBp bnRlbF9kcF90b19kZXYoaW50ZWxfZHApOwo+ID4gwqAKPiA+IMKgCWlmIChJU19CUk9YVE9OKGRl dikpCj4gPiAtCQlyZXR1cm4gQlhUX1BQX0NPTlRST0woMCk7Cj4gPiArCQlyZXR1cm4gQlhUX1BQ X0NPTlRST0woYnh0X3Bvd2VyX3NlcXVlbmNlcl9pZHgoaW50ZWxfZHApKTsKPiA+IMKgCWVsc2Ug aWYgKEhBU19QQ0hfU1BMSVQoZGV2KSkKPiA+IMKgCQlyZXR1cm4gUENIX1BQX0NPTlRST0w7Cj4g PiDCoAllbHNlCj4gPiBAQCAtNTU1LDcgKzU5MCw3IEBAIF9wcF9zdGF0X3JlZyhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQo+ID4gwqAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2Rw X3RvX2RldihpbnRlbF9kcCk7Cj4gPiDCoAo+ID4gwqAJaWYgKElTX0JST1hUT04oZGV2KSkKPiA+ IC0JCXJldHVybiBCWFRfUFBfU1RBVFVTKDApOwo+ID4gKwkJcmV0dXJuIEJYVF9QUF9TVEFUVVMo Ynh0X3Bvd2VyX3NlcXVlbmNlcl9pZHgoaW50ZWxfZHApKTsKPiA+IMKgCWVsc2UgaWYgKEhBU19Q Q0hfU1BMSVQoZGV2KSkKPiA+IMKgCQlyZXR1cm4gUENIX1BQX1NUQVRVUzsKPiA+IMKgCWVsc2UK PiA+IEBAIC00NzIyLDE0ICs0NzU3LDExIEBAIGludGVsX2RwX2luaXRfcGFuZWxfcG93ZXJfc2Vx dWVuY2VyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiDCoAkJcmV0dXJuOwo+ID4gwqAKPiA+ IMKgCWlmIChJU19CUk9YVE9OKGRldikpIHsKPiA+IC0JCS8qCj4gPiAtCQnCoCogVE9ETzogQlhU IGhhcyAyIHNldHMgb2YgUFBTIHJlZ2lzdGVycy4KPiA+IC0JCcKgKiBDb3JyZWN0IFJlZ2lzdGVy IGZvciBCcm94dG9uIG5lZWQgdG8gYmUgaWRlbnRpZmllZAo+ID4gLQkJwqAqIHVzaW5nIFZCVC4g aGFyZGNvZGluZyBmb3Igbm93Cj4gPiAtCQnCoCovCj4gPiAtCQlwcF9jdHJsX3JlZyA9IEJYVF9Q UF9DT05UUk9MKDApOwo+ID4gLQkJcHBfb25fcmVnID0gQlhUX1BQX09OX0RFTEFZUygwKTsKPiA+ IC0JCXBwX29mZl9yZWcgPSBCWFRfUFBfT0ZGX0RFTEFZUygwKTsKPiA+ICsJCWludCBpZHggPSBi eHRfcG93ZXJfc2VxdWVuY2VyX2lkeChpbnRlbF9kcCk7Cj4gPiArCj4gPiArCQlwcF9jdHJsX3Jl ZyA9IEJYVF9QUF9DT05UUk9MKGlkeCk7Cj4gPiArCQlwcF9vbl9yZWcgPSBCWFRfUFBfT05fREVM QVlTKGlkeCk7Cj4gPiArCQlwcF9vZmZfcmVnID0gQlhUX1BQX09GRl9ERUxBWVMoaWR4KTsKPiA+ IMKgCX0gZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXYpKSB7Cj4gPiDCoAkJcHBfY3RybF9yZWcg PSBQQ0hfUFBfQ09OVFJPTDsKPiA+IMKgCQlwcF9vbl9yZWcgPSBQQ0hfUFBfT05fREVMQVlTOwo+ ID4gQEAgLTQ4NDIsMTQgKzQ4NzQsMTEgQEAgaW50ZWxfZHBfaW5pdF9wYW5lbF9wb3dlcl9zZXF1 ZW5jZXJfcmVnaXN0ZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiDCoAlsb2NrZGVwX2Fz c2VydF9oZWxkKCZkZXZfcHJpdi0+cHBzX211dGV4KTsKPiA+IMKgCj4gPiDCoAlpZiAoSVNfQlJP WFRPTihkZXYpKSB7Cj4gPiAtCQkvKgo+ID4gLQkJwqAqIFRPRE86IEJYVCBoYXMgMiBzZXRzIG9m IFBQUyByZWdpc3RlcnMuCj4gPiAtCQnCoCogQ29ycmVjdCBSZWdpc3RlciBmb3IgQnJveHRvbiBu ZWVkIHRvIGJlIGlkZW50aWZpZWQKPiA+IC0JCcKgKiB1c2luZyBWQlQuIGhhcmRjb2RpbmcgZm9y IG5vdwo+ID4gLQkJwqAqLwo+ID4gLQkJcHBfY3RybF9yZWcgPSBCWFRfUFBfQ09OVFJPTCgwKTsK PiA+IC0JCXBwX29uX3JlZyA9IEJYVF9QUF9PTl9ERUxBWVMoMCk7Cj4gPiAtCQlwcF9vZmZfcmVn ID0gQlhUX1BQX09GRl9ERUxBWVMoMCk7Cj4gPiArCQlpbnQgaWR4ID0gYnh0X3Bvd2VyX3NlcXVl bmNlcl9pZHgoaW50ZWxfZHApOwo+ID4gKwo+ID4gKwkJcHBfY3RybF9yZWcgPSBCWFRfUFBfQ09O VFJPTChpZHgpOwo+ID4gKwkJcHBfb25fcmVnID0gQlhUX1BQX09OX0RFTEFZUyhpZHgpOwo+ID4g KwkJcHBfb2ZmX3JlZyA9IEJYVF9QUF9PRkZfREVMQVlTKGlkeCk7Cj4gPiDCoAo+ID4gwqAJfSBl bHNlIGlmIChIQVNfUENIX1NQTElUKGRldikpIHsKPiA+IMKgCQlwcF9vbl9yZWcgPSBQQ0hfUFBf T05fREVMQVlTOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IGluZGV4IDhkYzY3YWQu Ljg3MDg0OWUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IEBAIC04Njks NiArODY5LDExIEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4gPiDCoAnCoCogdGhpcyBwb3J0LiBPbmx5 IHJlbGV2YW50IG9uIFZMVi9DSFYuCj4gPiDCoAnCoCovCj4gPiDCoAllbnVtIHBpcGUgcHBzX3Bp cGU7Cj4gPiArCS8qCj4gPiArCcKgKiBTZXQgaWYgdGhlIHNlcXVlbmNlciBtYXkgYmUgcmVzZXQg ZHVlIHRvIGEgcG93ZXIgdHJhbnNpdGlvbiwKPiA+ICsJwqAqIHJlcXVpcmluZyBhIHJlaW5pdGlh bGl6YXRpb24uIE9ubHkgcmVsZXZhbnQgb24gQlhULgo+ID4gKwnCoCovCj4gPiArCWJvb2wgcHBz X3Jlc2V0Owo+ID4gwqAJc3RydWN0IGVkcF9wb3dlcl9zZXEgcHBzX2RlbGF5czsKPiA+IMKgCj4g PiDCoAlib29sIGNhbl9tc3Q7IC8qIHRoaXMgcG9ydCBzdXBwb3J0cyBtc3QgKi8KPiA+IEBAIC0x MzQ4LDcgKzEzNTMsNyBAQCB2b2lkIGludGVsX2RwX21zdF9yZXN1bWUoc3RydWN0IGRybV9kZXZp Y2UgKmRldik7Cj4gPiDCoGludCBpbnRlbF9kcF9tYXhfbGlua19yYXRlKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApOwo+ID4gwqBpbnQgaW50ZWxfZHBfcmF0ZV9zZWxlY3Qoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwgaW50IHJhdGUpOwo+ID4gwqB2b2lkIGludGVsX2RwX2hvdF9wbHVnKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKTsKPiA+IC12b2lkIHZsdl9wb3dlcl9z ZXF1ZW5jZXJfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ICt2 b2lkIGludGVsX3Bvd2VyX3NlcXVlbmNlcl9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwo+ID4gwqB1aW50MzJfdCBpbnRlbF9kcF9wYWNrX2F1eChjb25zdCB1aW50OF90 ICpzcmMsIGludCBzcmNfYnl0ZXMpOwo+ID4gwqB2b2lkIGludGVsX3BsYW5lX2Rlc3Ryb3koc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUpOwo+ID4gwqB2b2lkIGludGVsX2VkcF9kcnJzX2VuYWJsZShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y dW50aW1lX3BtLmMKPiA+IGluZGV4IGU4NTZkNDkuLjIyYjQ2ZjUgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ID4gQEAgLTU3OCw2ICs1NzgsNyBAQCB2 b2lkIGJ4dF9lbmFibGVfZGM5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ IMKgCj4gPiDCoAlEUk1fREVCVUdfS01TKCJFbmFibGluZyBEQzlcbiIpOwo+ID4gwqAKPiA+ICsJ aW50ZWxfcG93ZXJfc2VxdWVuY2VyX3Jlc2V0KGRldl9wcml2KTsKPiA+IMKgCWdlbjlfc2V0X2Rj X3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9FTl9EQzkpOwo+ID4gwqB9Cj4gCj4gSSB3YXMgd29u ZGVyaW5nIGhvdyB3ZSBkZWFsIHdpdGggY29taW5nIG91dCBvZiBTNCBub3csIGJ1dCBJIHN1cHBv c2Ugd2UKPiBjdXJyZW50bHkgZW5hYmxlIERDOSBpbiAuZnJlZXplIGFzIHdlbGwuIFdoZW4vaWYg d2UgcmVtb3ZlIHRoYXQgKHRvIG9wdGltaXplCj4gYXdheSB0aGUgYmxpbmtzIGR1cmluZyBoaWJl cm5hdGlvbiksIEkgdGhpbmsgd2UnbGwgbmVlZCBzb21ldGhpbmcgZGlmZmVyZW50Cj4gdG8gZGVh bCB3aXRoIHRoZSB1bmtub3duIFBQUyBzdGF0ZSBvbiAucmVzdG9yZS4KCkhtIHllYSwgSSBhc3N1 bWUgd2UgY291bGQgcmVzZXQgdGhlIHN0YXRlIGluIC5yZXN0b3JlIHRoZW4uIEJ1dCB3ZSdkCnN0 aWxsIG5lZWQgdGhlIERDOSB0aW1lIHJlc2V0IGV2ZW4gaW4gdGhhdCBjYXNlLgoKPiBBcmUgeW91 IGdvaW5nIHRvIGRvIHNvbWV0aGluZyBhYm91dCBQQ0ggcGxhdGZvcm1zIGFzIHdlbGwsIG9yIGFy ZSB5b3UgZ29pbmcKPiBsZWF2ZSB0aGF0IGZvciBzb21lb25lIGVsc2U/CgpJIGNhbiB0YWtlIGEg bG9vayBhdCB0aGF0IGxhdGVyIGlmIG5vIG9uZSBlbHNlIGRvZXMuIEFGQUlDUyBpdCB3b3VsZAph bW91bnQgdG8gcmVwbGFjaW5nIHRoZSBQUFMgc2F2ZS9yZXN0b3JlIGluIGk5MTVfc3VzcGVuZC5j IHdpdGggYSByZXNldApkdXJpbmcgc3lzdGVtIHN1c3BlbmQrcmVnaXN0ZXIgcmUtaW5pdCBiYXNl ZCBvbiBwcHNfcmVzZXQKaW7CoGludGVsX3Bwc19nZXRfcmVnaXN0ZXJzKCkuIEknZCBoYXZlIHRv IGFsc28gY2hlY2sgaG93IHRoaXMgd291bGQKYWZmZWN0IExWRFMuCgo+ID4gwqAKPiA+IEBAIC0x MTEyLDcgKzExMTMsNyBAQCBzdGF0aWMgdm9pZCB2bHZfZGlzcGxheV9wb3dlcl93ZWxsX2RlaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoAkvKiBtYWtlIHN1cmUg d2UncmUgZG9uZSBwcm9jZXNzaW5nIGRpc3BsYXkgaXJxcyAqLwo+ID4gwqAJc3luY2hyb25pemVf aXJxKGRldl9wcml2LT5kZXYtPmlycSk7Cj4gPiDCoAo+ID4gLQl2bHZfcG93ZXJfc2VxdWVuY2Vy X3Jlc2V0KGRldl9wcml2KTsKPiA+ICsJaW50ZWxfcG93ZXJfc2VxdWVuY2VyX3Jlc2V0KGRldl9w cml2KTsKPiA+IMKgfQo+ID4gwqAKPiA+IMKgc3RhdGljIHZvaWQgdmx2X2Rpc3BsYXlfcG93ZXJf d2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gLS3CoAo+ ID4gMi41LjAKPiA+IAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+IEludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=