From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/4] drm/i915/bxt: Fix PPS lost state after suspend breaking eDP link training Date: Thu, 16 Jun 2016 16:58:35 +0300 Message-ID: <20160616135834.GC4329@intel.com> References: <1466084243-5388-1-git-send-email-imre.deak@intel.com> <1466084243-5388-2-git-send-email-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 471D86EA62 for ; Thu, 16 Jun 2016 13:58:38 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1466084243-5388-2-git-send-email-imre.deak@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Imre Deak Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdW4gMTYsIDIwMTYgYXQgMDQ6Mzc6MjBQTSArMDMwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+IFRoZSBQUFMgcmVnaXN0ZXJzIGFyZSBiYWNrZWQgYnkgcG93ZXIgd2VsbCAjMCBhbmQgYXMg c3VjaCBtYXkgYmUgcmVzZXQKPiBhZnRlciBzeXN0ZW0gb3IgcnVudGltZSBzdXNwZW5kIChib3Ro IGltcGx5aW5nIGEgcG9zc2libGUgREM5Cj4gdHJhbnNpdGlvbikuIEZpeCB0aGlzIGJ5IHJldXNp bmcgdGhlIFZMVi9DSFYgUFBTIHBpcGUtcmVhc3NpZ25tZW50Cj4gbG9naWMuIFRoZSBkaWZmZXJl bmNlIG9uIEJYVCBpcyB0aGF0IHRoZSBQUFMgaW5zdGFuY2VzIGFyZSBub3QgcGlwZSBidXQKPiBw b3J0IChvciBtb3JlIGFjY3VyYXRlbHkgcGluKSBzcGVjaWZpYywgc28gd2Ugb25seSBuZWVkIHRv IGNhcmUgYWJvdXQKPiB0aGUgbG9zdCBIVyBzdGF0ZS4gQXMgb3Bwb3NlZCB0byBWTFYvQ0hWIHRo ZSBTVyBzdGF0ZSBpcyBmaXhlZCBhbmQKPiBpbml0aWFsaXplZCBkdXJpbmcgY29ubmVjdG9yIGlu aXQuCj4gCj4gVGhpcyBhbHNvIHBhdmVzIHRoZSB3YXkgdG93YXJkcyB1c2luZyB0aGUgYWN0dWFs IHBvcnQtPlBQUyBpbnN0YW5jZQo+IG1hcHBpbmcgYmFzZWQgb24gVkJULgo+IAo+IFRoaXMgZml4 ZXMgZURQIGxpbmsgdHJhaW5pbmcgZXJyb3JzIG9uIEJYVCBhZnRlciBzdXNwZW5kLCB3aGVyZSB3 ZQo+IHN0YXJ0ZWQgdGhlIGxpbmsgdHJhaW5pbmcgdG9vIGVhcmx5IGR1ZSB0byBhbiBpbmNvcnJl Y3QgVDMgKHBhbmVsIHBvd2VyCj4gb24pIHJlZ2lzdGVyIHZhbHVlLgo+IAo+IEJ1Z3ppbGxhOiBo dHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05NjQzNgo+IFNpZ25l ZC1vZmYtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAgIHwgNzEgKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAg ICB8ICA3ICsrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIHwg IDMgKy0KPiAgMyBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRleCBiZTA4MzUxLi4xOWE4YmJlIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTQyNiw2ICs0MjYsMzcgQEAgdmx2X3Bv d2VyX3NlcXVlbmNlcl9waXBlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlyZXR1cm4g aW50ZWxfZHAtPnBwc19waXBlOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50Cj4gK2J4dF9wb3dlcl9z ZXF1ZW5jZXJfaWR4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gK3sKPiArCXN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxf ZHApOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJh c2UuZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPiArCj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cHBzX211dGV4 KTsKPiArCj4gKwkvKiBXZSBzaG91bGQgbmV2ZXIgbGFuZCBoZXJlIHdpdGggcmVndWxhciBEUCBw b3J0cyAqLwo+ICsJV0FSTl9PTighaXNfZWRwKGludGVsX2RwKSk7Cj4gKwo+ICsJLyoKPiArCSAq IFRPRE86IEJYVCBoYXMgMiBQUFMgaW5zdGFuY2VzLiBUaGUgY29ycmVjdCBwb3J0LT5QUFMgaW5z dGFuY2UKPiArCSAqIG1hcHBpbmcgbmVlZHMgdG8gYmUgcmV0cmlldmVkIGZyb20gVkJULCBmb3Ig bm93IGp1c3QgaGFyZC1jb2RlIHRvCj4gKwkgKiB1c2UgaW5zdGFuY2UgIzAgYWx3YXlzLgo+ICsJ ICovCj4gKwlpZiAoIWludGVsX2RwLT5wcHNfcmVzZXQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJ aW50ZWxfZHAtPnBwc19yZXNldCA9IGZhbHNlOwo+ICsKPiArCS8qCj4gKwkgKiBPbmx5IHRoZSBI VyBuZWVkcyB0byBiZSByZXByb2dyYW1tZWQsIHRoZSBTVyBzdGF0ZSBpcyBmaXhlZCBhbmQKPiAr CSAqIGhhcyBiZWVuIHNldHVwIGR1cmluZyBjb25uZWN0b3IgaW5pdC4KPiArCSAqLwo+ICsJaW50 ZWxfZHBfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXJfcmVnaXN0ZXJzKGRldiwgaW50ZWxfZHAp Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICB0eXBlZGVmIGJvb2wgKCp2bHZfcGlwZV9j aGVjaykoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkgICAgICAgZW51 bSBwaXBlIHBpcGUpOwo+ICAKPiBAQCAtNTA3LDEyICs1MzgsMTMgQEAgdmx2X2luaXRpYWxfcG93 ZXJfc2VxdWVuY2VyX3NldHVwKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlpbnRlbF9k cF9pbml0X3BhbmVsX3Bvd2VyX3NlcXVlbmNlcl9yZWdpc3RlcnMoZGV2LCBpbnRlbF9kcCk7Cj4g IH0KPiAgCj4gLXZvaWQgdmx2X3Bvd2VyX3NlcXVlbmNlcl9yZXNldChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3ZvaWQgaW50ZWxfcG93ZXJfc2VxdWVuY2VyX3Jlc2V0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl cjsKPiAgCj4gLQlpZiAoV0FSTl9PTighSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19DSEVSUllW SUVXKGRldikpKQo+ICsJaWYgKFdBUk5fT04oIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hF UlJZVklFVyhkZXYpICYmCj4gKwkgICAgIUlTX0JST1hUT04oZGV2KSkpCj4gIAkJcmV0dXJuOwo+ ICAKPiAgCS8qCj4gQEAgLTUzMiw3ICs1NjQsMTAgQEAgdm9pZCB2bHZfcG93ZXJfc2VxdWVuY2Vy X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkJY29udGludWU7 Cj4gIAo+ICAJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPiAt CQlpbnRlbF9kcC0+cHBzX3BpcGUgPSBJTlZBTElEX1BJUEU7Cj4gKwkJaWYgKElTX0JST1hUT04o ZGV2KSkKPiArCQkJaW50ZWxfZHAtPnBwc19yZXNldCA9IHRydWU7Cj4gKwkJZWxzZQo+ICsJCQlp bnRlbF9kcC0+cHBzX3BpcGUgPSBJTlZBTElEX1BJUEU7Cj4gIAl9Cj4gIH0KPiAgCj4gQEAgLTU0 Miw3ICs1NzcsNyBAQCBfcHBfY3RybF9yZWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAg CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kcF90b19kZXYoaW50ZWxfZHApOwo+ICAK PiAgCWlmIChJU19CUk9YVE9OKGRldikpCj4gLQkJcmV0dXJuIEJYVF9QUF9DT05UUk9MKDApOwo+ ICsJCXJldHVybiBCWFRfUFBfQ09OVFJPTChieHRfcG93ZXJfc2VxdWVuY2VyX2lkeChpbnRlbF9k cCkpOwo+ICAJZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXYpKQo+ICAJCXJldHVybiBQQ0hfUFBf Q09OVFJPTDsKPiAgCWVsc2UKPiBAQCAtNTU1LDcgKzU5MCw3IEBAIF9wcF9zdGF0X3JlZyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVs X2RwX3RvX2RldihpbnRlbF9kcCk7Cj4gIAo+ICAJaWYgKElTX0JST1hUT04oZGV2KSkKPiAtCQly ZXR1cm4gQlhUX1BQX1NUQVRVUygwKTsKPiArCQlyZXR1cm4gQlhUX1BQX1NUQVRVUyhieHRfcG93 ZXJfc2VxdWVuY2VyX2lkeChpbnRlbF9kcCkpOwo+ICAJZWxzZSBpZiAoSEFTX1BDSF9TUExJVChk ZXYpKQo+ICAJCXJldHVybiBQQ0hfUFBfU1RBVFVTOwo+ICAJZWxzZQo+IEBAIC00NzIyLDE0ICs0 NzU3LDExIEBAIGludGVsX2RwX2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWlmIChJU19CUk9YVE9OKGRldikpIHsK PiAtCQkvKgo+IC0JCSAqIFRPRE86IEJYVCBoYXMgMiBzZXRzIG9mIFBQUyByZWdpc3RlcnMuCj4g LQkJICogQ29ycmVjdCBSZWdpc3RlciBmb3IgQnJveHRvbiBuZWVkIHRvIGJlIGlkZW50aWZpZWQK PiAtCQkgKiB1c2luZyBWQlQuIGhhcmRjb2RpbmcgZm9yIG5vdwo+IC0JCSAqLwo+IC0JCXBwX2N0 cmxfcmVnID0gQlhUX1BQX0NPTlRST0woMCk7Cj4gLQkJcHBfb25fcmVnID0gQlhUX1BQX09OX0RF TEFZUygwKTsKPiAtCQlwcF9vZmZfcmVnID0gQlhUX1BQX09GRl9ERUxBWVMoMCk7Cj4gKwkJaW50 IGlkeCA9IGJ4dF9wb3dlcl9zZXF1ZW5jZXJfaWR4KGludGVsX2RwKTsKPiArCj4gKwkJcHBfY3Ry bF9yZWcgPSBCWFRfUFBfQ09OVFJPTChpZHgpOwo+ICsJCXBwX29uX3JlZyA9IEJYVF9QUF9PTl9E RUxBWVMoaWR4KTsKPiArCQlwcF9vZmZfcmVnID0gQlhUX1BQX09GRl9ERUxBWVMoaWR4KTsKPiAg CX0gZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXYpKSB7Cj4gIAkJcHBfY3RybF9yZWcgPSBQQ0hf UFBfQ09OVFJPTDsKPiAgCQlwcF9vbl9yZWcgPSBQQ0hfUFBfT05fREVMQVlTOwo+IEBAIC00ODQy LDE0ICs0ODc0LDExIEBAIGludGVsX2RwX2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyX3JlZ2lz dGVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2 X3ByaXYtPnBwc19tdXRleCk7Cj4gIAo+ICAJaWYgKElTX0JST1hUT04oZGV2KSkgewo+IC0JCS8q Cj4gLQkJICogVE9ETzogQlhUIGhhcyAyIHNldHMgb2YgUFBTIHJlZ2lzdGVycy4KPiAtCQkgKiBD b3JyZWN0IFJlZ2lzdGVyIGZvciBCcm94dG9uIG5lZWQgdG8gYmUgaWRlbnRpZmllZAo+IC0JCSAq IHVzaW5nIFZCVC4gaGFyZGNvZGluZyBmb3Igbm93Cj4gLQkJICovCj4gLQkJcHBfY3RybF9yZWcg PSBCWFRfUFBfQ09OVFJPTCgwKTsKPiAtCQlwcF9vbl9yZWcgPSBCWFRfUFBfT05fREVMQVlTKDAp Owo+IC0JCXBwX29mZl9yZWcgPSBCWFRfUFBfT0ZGX0RFTEFZUygwKTsKPiArCQlpbnQgaWR4ID0g Ynh0X3Bvd2VyX3NlcXVlbmNlcl9pZHgoaW50ZWxfZHApOwo+ICsKPiArCQlwcF9jdHJsX3JlZyA9 IEJYVF9QUF9DT05UUk9MKGlkeCk7Cj4gKwkJcHBfb25fcmVnID0gQlhUX1BQX09OX0RFTEFZUyhp ZHgpOwo+ICsJCXBwX29mZl9yZWcgPSBCWFRfUFBfT0ZGX0RFTEFZUyhpZHgpOwo+ICAKPiAgCX0g ZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXYpKSB7Cj4gIAkJcHBfb25fcmVnID0gUENIX1BQX09O X0RFTEFZUzsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDhkYzY3YWQuLjg3MDg0 OWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC04NjksNiArODY5LDExIEBA IHN0cnVjdCBpbnRlbF9kcCB7Cj4gIAkgKiB0aGlzIHBvcnQuIE9ubHkgcmVsZXZhbnQgb24gVkxW L0NIVi4KPiAgCSAqLwo+ICAJZW51bSBwaXBlIHBwc19waXBlOwo+ICsJLyoKPiArCSAqIFNldCBp ZiB0aGUgc2VxdWVuY2VyIG1heSBiZSByZXNldCBkdWUgdG8gYSBwb3dlciB0cmFuc2l0aW9uLAo+ ICsJICogcmVxdWlyaW5nIGEgcmVpbml0aWFsaXphdGlvbi4gT25seSByZWxldmFudCBvbiBCWFQu Cj4gKwkgKi8KPiArCWJvb2wgcHBzX3Jlc2V0Owo+ICAJc3RydWN0IGVkcF9wb3dlcl9zZXEgcHBz X2RlbGF5czsKPiAgCj4gIAlib29sIGNhbl9tc3Q7IC8qIHRoaXMgcG9ydCBzdXBwb3J0cyBtc3Qg Ki8KPiBAQCAtMTM0OCw3ICsxMzUzLDcgQEAgdm9pZCBpbnRlbF9kcF9tc3RfcmVzdW1lKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwo+ICBpbnQgaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKTsKPiAgaW50IGludGVsX2RwX3JhdGVfc2VsZWN0KHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsIGludCByYXRlKTsKPiAgdm9pZCBpbnRlbF9kcF9ob3RfcGx1Zyhz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2Rlcik7Cj4gLXZvaWQgdmx2X3Bvd2VyX3Nl cXVlbmNlcl9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICt2b2lk IGludGVsX3Bvd2VyX3NlcXVlbmNlcl9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ICB1aW50MzJfdCBpbnRlbF9kcF9wYWNrX2F1eChjb25zdCB1aW50OF90ICpzcmMs IGludCBzcmNfYnl0ZXMpOwo+ICB2b2lkIGludGVsX3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9w bGFuZSAqcGxhbmUpOwo+ICB2b2lkIGludGVsX2VkcF9kcnJzX2VuYWJsZShzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4g aW5kZXggZTg1NmQ0OS4uMjJiNDZmNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ydW50aW1lX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y dW50aW1lX3BtLmMKPiBAQCAtNTc4LDYgKzU3OCw3IEBAIHZvaWQgYnh0X2VuYWJsZV9kYzkoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCURSTV9ERUJVR19LTVMoIkVu YWJsaW5nIERDOVxuIik7Cj4gIAo+ICsJaW50ZWxfcG93ZXJfc2VxdWVuY2VyX3Jlc2V0KGRldl9w cml2KTsKPiAgCWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9FTl9EQzkpOwo+ ICB9CgpJIHdhcyB3b25kZXJpbmcgaG93IHdlIGRlYWwgd2l0aCBjb21pbmcgb3V0IG9mIFM0IG5v dywgYnV0IEkgc3VwcG9zZSB3ZQpjdXJyZW50bHkgZW5hYmxlIERDOSBpbiAuZnJlZXplIGFzIHdl bGwuIFdoZW4vaWYgd2UgcmVtb3ZlIHRoYXQgKHRvIG9wdGltaXplCmF3YXkgdGhlIGJsaW5rcyBk dXJpbmcgaGliZXJuYXRpb24pLCBJIHRoaW5rIHdlJ2xsIG5lZWQgc29tZXRoaW5nIGRpZmZlcmVu dAp0byBkZWFsIHdpdGggdGhlIHVua25vd24gUFBTIHN0YXRlIG9uIC5yZXN0b3JlLgoKQXJlIHlv dSBnb2luZyB0byBkbyBzb21ldGhpbmcgYWJvdXQgUENIIHBsYXRmb3JtcyBhcyB3ZWxsLCBvciBh cmUgeW91IGdvaW5nCmxlYXZlIHRoYXQgZm9yIHNvbWVvbmUgZWxzZT8KCj4gIAo+IEBAIC0xMTEy LDcgKzExMTMsNyBAQCBzdGF0aWMgdm9pZCB2bHZfZGlzcGxheV9wb3dlcl93ZWxsX2RlaW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkvKiBtYWtlIHN1cmUgd2UncmUg ZG9uZSBwcm9jZXNzaW5nIGRpc3BsYXkgaXJxcyAqLwo+ICAJc3luY2hyb25pemVfaXJxKGRldl9w cml2LT5kZXYtPmlycSk7Cj4gIAo+IC0Jdmx2X3Bvd2VyX3NlcXVlbmNlcl9yZXNldChkZXZfcHJp dik7Cj4gKwlpbnRlbF9wb3dlcl9zZXF1ZW5jZXJfcmVzZXQoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZCB2bHZfZGlzcGxheV9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLS0gCj4gMi41LjAKPiAKPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QK PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QK SW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=