From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915/bxt: Fix eDP panel power save/restore Date: Sat, 02 Jan 2016 15:41:29 +0200 Message-ID: <874mewdrp2.fsf@intel.com> References: <1451516190-28723-1-git-send-email-matthew.d.roper@intel.com> <56849A99.1070406@intel.com> <20151231165145.GS2778@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20151231165145.GS2778@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper , "Kannan, Vandana" Cc: intel-gfx@lists.freedesktop.org, drm-intel-fixes@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAzMSBEZWMgMjAxNSwgTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNv bT4gd3JvdGU6Cj4gT24gVGh1LCBEZWMgMzEsIDIwMTUgYXQgMDg6MzE6NDVBTSArMDUzMCwgS2Fu bmFuLCBWYW5kYW5hIHdyb3RlOgo+PiBXaGVuIEkgc3VibWl0dGVkIHRoZSBQUFMgcGF0Y2ggaW4g QXByaWwsIEkgZ290IGFuIGlucHV0IGZyb20gSmFuaSB0bwo+PiBub3QgbWFrZSBjaGFuZ2VzIGlu IGk5MTVfc3VzcGVuZC5jIGFzIGl0IHdhcyB0byBiZWNvbWUgb2Jzb2xldGUuCj4+IEJlbG93IG1h aWwgZm9yIHlvdXIgcmVmZXJlbmNlLgo+PiAKPj4gSmFuaSwKPj4gRG9lcyB5b3VyIGluaXRpYWwg Y29tbWVudCBzdGlsbCBob2xkIGdvb2Q/Cj4KPiBJIGRvbid0IHRoaW5rIG5vdCB0b3VjaGluZyBp OTE1X3N1c3BlbmQuYyBhdCBhbGwgaXMgYW4gb3B0aW9uIHNpbmNlIHRoYXQKPiBtZWFucyB0aGF0 IHRoZSBjdXJyZW50IGNvZGUgd2lsbCB0cnkgdG8gcmVhZC93cml0ZSByZWdpc3RlcnMgdGhhdCBz aW1wbHkKPiBkb24ndCBleGlzdCBvbiB0aGUgcGxhdGZvcm0uICBCYXNlZCBvbiBKYW5pJ3MgY29t bWVudCwgbWF5YmUgd2Ugc2hvdWxkCj4ganVzdCBiZSBhZGRpbmcgQlhUIHRvIHRoZSBsaXN0IG9m IHBsYXRmb3JtcyB3ZSBkb24ndCBkbyBhbnkgUFAKPiBzYXZlL3Jlc3RvcmUgb24/CgpOb3QgdG91 Y2hpbmcgdGhlIHJlZ2lzdGVycyBpbiBpOTE1X3N1c3BlbmQuYyBmb3IgQlhUIHdhcyB3aGF0IEkg bWVhbnQsCmJ1dCBwcm9iYWJseSBmYWlsZWQgYXQgZXhwcmVzc2luZyBpdC4gVGhlIGVuY29kZXIv Y29ubmVjdG9yIGhvb2tzIHNob3VsZApjb3ZlciB0aGlzLCBhbmQgaWYgbm90LCBzaG91bGQgYmUg dXBkYXRlZCB0byBjb3ZlciB0aGlzLiBUaGUgYmlnIGhhbW1lcgpzdXNwZW5kL3Jlc3VtZSBpbiBp OTE1X3N1c3BlbmQuYyBpcyBvYmxpdmlvdXMgdG8gbW9zdCBtb2Rlc2V0IHN0YXRlIGFuZAppcyB1 bmFibGUgdG8gZG8gYW55dGhpbmcgY2xldmVyLgoKQlIsCkphbmkuCgoKPgo+ICAgICAgICAgZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMKPiAgICAgICAgIGluZGV4IDYxYmVjOGUuLjY5ZDU5 NjUgMTAwNjQ0Cj4gICAgICAgICAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3Bl bmQuYwo+ICAgICAgICAgKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMK PiAgICAgICAgIEBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfc2F2ZV9kaXNwbGF5 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAgICAgICAgICAgICAgICAgICAgICAgZGV2X3By aXYtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RFTEFZUyA9IEk5MTVfUkVBRChQQ0hfUFBfT05fREVMQVlT KTsKPiAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfT0ZG X0RFTEFZUyA9IEk5MTVfUkVBRChQQ0hfUFBfT0ZGX0RFTEFZUyk7Cj4gICAgICAgICAgICAgICAg ICAgICAgICAgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0RJVklTT1IgPSBJOTE1X1JFQUQoUENI X1BQX0RJVklTT1IpOwo+ICAgICAgICAgLSAgICAgICB9IGVsc2UgaWYgKCFJU19WQUxMRVlWSUVX KGRldikpIHsKPiAgICAgICAgICsgICAgICAgfSBlbHNlIGlmICghSVNfVkFMTEVZVklFVyhkZXYp ICYmICFJU19CUk9YVE9OKGRldikpIHsKPiAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfcHJp di0+cmVnZmlsZS5zYXZlUFBfQ09OVFJPTCA9IEk5MTVfUkVBRChQUF9DT05UUk9MKTsKPiAgICAg ICAgICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfT05fREVMQVlTID0g STkxNV9SRUFEKFBQX09OX0RFTEFZUyk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgZGV2X3By aXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMgPSBJOTE1X1JFQUQoUFBfT0ZGX0RFTEFZUyk7 Cj4KPiBJJ20gbm90IHJlYWxseSBmYW1pbGlhciB3aXRoIHRoZSBwYW5lbCBwb3dlciBzZXF1ZW5j aW5nIHN0dWZmLCBzbyBJJ2xsIGxldCB5b3UKPiBhbmQgSmFuaSBtYWtlIHRoZSBjYWxsIHRoZXJl LiAgSSdtIGp1c3QgbG9va2luZyBhdCBTMyBvbiBCcm94dG9uICh3aGljaCBoYXMgYWxsCj4ga2lu ZHMgb2YgcHJvYmxlbXMgcmlnaHQgbm93KSwgYW5kIGZpZ3VyZWQgSSdkIHRyeSB0byBjbGVhciB1 cCBhIGNvdXBsZSBvZiB0aGUKPiB1bmNsYWltZWQgcmVnaXN0ZXIgd2FybmluZ3MgdG8gbWFrZSBp dCBtb3JlIGNsZWFyIHdoZXJlIHRoZSByZWFsIFMzIHByb2JsZW1zCj4gbGllLgo+Cj4gVGhhbmtz Lgo+Cj4KPiBNYXR0Cj4KPj4gCj4+IE9uIFRodSwgMzAgQXByIDIwMTUsIFZhbmRhbmEgS2FubmFu IDx2YW5kYW5hLmthbm5hbkBpbnRlbC5jb20+IHdyb3RlOgo+PiA+IENoYW5nZXMgYmFzZWQgb24g ZnV0dXJlIHBsYXRmb3JtIHJlYWRpbmVzcyBwYXRjaGVzIHJlbGF0ZWQgdG8KPj4gPiBIQVNfUENI X1NQTElUKCkuIFVzZSBIQVNfR01DSF9ESVNQTEFZKCkgaW5zdGVhZCBvZiBIQVNfUENIX1NQTElU Cj4+ID4KPj4gPiBTaWduZWQtb2ZmLWJ5OiBWYW5kYW5hIEthbm5hbiA8dmFuZGFuYS5rYW5uYW5A aW50ZWwuY29tPgo+PiA+IFNpZ25lZC1vZmYtYnk6IEEuU3VuaWwgS2FtYXRoIDxzdW5pbC5rYW1h dGhAaW50ZWwuY29tPgo+PiA+IC0tLQo+PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1 c3BlbmQuYyB8IDQgKystLQo+PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAg ICB8IDggKysrKy0tLS0KPj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYg ZGVsZXRpb25zKC0pCj4+ID4KPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zdXNwZW5kLmMKPj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5j Cj4+ID4gaW5kZXggY2Y2N2Y4Mi4uZTkxZDYzNyAxMDA2NDQKPj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYwo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfc3VzcGVuZC5jCj4+ID4gQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9z YXZlX2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gPiAgCQlkZXZfcHJpdi0+cmVn ZmlsZS5zYXZlTFZEUyA9IEk5MTVfUkVBRChMVkRTKTsKPj4gPgo+PiA+ICAJLyogUGFuZWwgcG93 ZXIgc2VxdWVuY2VyICovCj4+ID4gLQlpZiAoSEFTX1BDSF9TUExJVChkZXYpKSB7Cj4+ID4gKwlp ZiAoIUhBU19HTUNIX0RJU1BMQVkoZGV2KSkgewo+PiA+ICAJCWRldl9wcml2LT5yZWdmaWxlLnNh dmVQUF9DT05UUk9MID0gSTkxNV9SRUFEKFBDSF9QUF9DT05UUk9MKTsKPj4gPiAgCQlkZXZfcHJp di0+cmVnZmlsZS5zYXZlUFBfT05fREVMQVlTID0gSTkxNV9SRUFEKFBDSF9QUF9PTl9ERUxBWVMp Owo+PiA+ICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTID0gSTkxNV9SRUFE KFBDSF9QUF9PRkZfREVMQVlTKTsKPj4gPiBAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgdm9pZCBp OTE1X3Jlc3RvcmVfZGlzcGxheShzdHJ1Y3QKPj4gZHJtX2RldmljZSAqZGV2KQo+PiA+ICAJCUk5 MTVfV1JJVEUoTFZEUywgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZUxWRFMgJiBtYXNrKTsKPj4gPgo+ PiA+ICAJLyogUGFuZWwgcG93ZXIgc2VxdWVuY2VyICovCj4+ID4gLQlpZiAoSEFTX1BDSF9TUExJ VChkZXYpKSB7Cj4+ID4gKwlpZiAoIUhBU19HTUNIX0RJU1BMQVkoZGV2KSkgewo+PiA+ICAJCUk5 MTVfV1JJVEUoUENIX1BQX09OX0RFTEFZUywgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RF TEFZUyk7Cj4+ID4gIAkJSTkxNV9XUklURShQQ0hfUFBfT0ZGX0RFTEFZUywgZGV2X3ByaXYtPnJl Z2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMpOwo+PiA+ICAJCUk5MTVfV1JJVEUoUENIX1BQX0RJVklT T1IsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9ESVZJU09SKTsKPj4gCj4+IEkgZG9uJ3QgdGhp bmsgeW91IHNob3VsZCB0b3VjaCBpOTE1X3N1c3BlbmQuYyBhdCBhbGwuIFdlJ3JlIHRyeWluZwo+ PiB0byBnZXQgcmlkIG9mIHRoaXMgYmxpbmQgcmVnaXN0ZXIgc2F2ZS9yZXN0b3JlLCBhbmQgbWFr ZSBldmVyeXRoaW5nCj4+IHdvcmsgaW4gdGhlIGVuY29kZXIvY29ubmVjdG9yIGNvZGUuIERvIG5v dGUgdGhhdCB3ZSBhbHJlYWR5IHNraXAKPj4gdGhpcyBmb3Igdmx2L2NodiBwb3dlciBzZXF1ZW5j ZXIgcmVnaXN0ZXJzLgo+PiAKPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYwo+PiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBpbmRleCA5 MzdiYTMxLi42OGUxMGMxIDEwMDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+ID4g QEAgLTU1OSw3ICs1NTksNyBAQCBzdGF0aWMgdTMyIF9wcF9jdHJsX3JlZyhzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQo+PiA+IHsKPj4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRl bF9kcF90b19kZXYoaW50ZWxfZHApOwo+PiA+Cj4+ID4gLQlpZiAoSEFTX1BDSF9TUExJVChkZXYp KQo+PiA+ICsJaWYgKCFIQVNfR01DSF9ESVNQTEFZKGRldikpCj4+ID4gIAkJcmV0dXJuIFBDSF9Q UF9DT05UUk9MOwo+PiA+ICAJZWxzZQo+PiA+ICAJCXJldHVybiBWTFZfUElQRV9QUF9DT05UUk9M KHZsdl9wb3dlcl9zZXF1ZW5jZXJfcGlwZShpbnRlbF9kcCkpOwo+PiA+IEBAIC01NjksNyArNTY5 LDcgQEAgc3RhdGljIHUzMiBfcHBfc3RhdF9yZWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK Pj4gPiB7Cj4+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGlu dGVsX2RwKTsKPj4gPgo+PiA+IC0JaWYgKEhBU19QQ0hfU1BMSVQoZGV2KSkKPj4gPiArCWlmICgh SEFTX0dNQ0hfRElTUExBWShkZXYpKQo+PiA+ICAJCXJldHVybiBQQ0hfUFBfU1RBVFVTOwo+PiA+ ICAJZWxzZQo+PiA+ICAJCXJldHVybiBWTFZfUElQRV9QUF9TVEFUVVModmx2X3Bvd2VyX3NlcXVl bmNlcl9waXBlKGludGVsX2RwKSk7Cj4+ID4gQEAgLTQ5NjMsNyArNDk2Myw3IEBAIGludGVsX2Rw X2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyKHN0cnVjdAo+PiBkcm1fZGV2aWNlICpkZXYsCj4+ ID4gIAlpZiAoZmluYWwtPnQxMV90MTIgIT0gMCkKPj4gPiAgCQlyZXR1cm47Cj4+ID4KPj4gPiAt CWlmIChIQVNfUENIX1NQTElUKGRldikpIHsKPj4gPiArCWlmICghSEFTX0dNQ0hfRElTUExBWShk ZXYpKSB7Cj4+ID4gIAkJcHBfY3RybF9yZWcgPSBQQ0hfUFBfQ09OVFJPTDsKPj4gPiAgCQlwcF9v bl9yZWcgPSBQQ0hfUFBfT05fREVMQVlTOwo+PiA+ICAJCXBwX29mZl9yZWcgPSBQQ0hfUFBfT0ZG X0RFTEFZUzsKPj4gPiBAQCAtNTA2Myw3ICs1MDYzLDcgQEAKPj4gPiBpbnRlbF9kcF9pbml0X3Bh bmVsX3Bvd2VyX3NlcXVlbmNlcl9yZWdpc3RlcnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4g Pgo+PiA+ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnBwc19tdXRleCk7Cj4+ID4K Pj4gPiAtCWlmIChIQVNfUENIX1NQTElUKGRldikpIHsKPj4gPiArCWlmICghSEFTX0dNQ0hfRElT UExBWShkZXYpKSB7Cj4+ID4gIAkJcHBfb25fcmVnID0gUENIX1BQX09OX0RFTEFZUzsKPj4gPiAg CQlwcF9vZmZfcmVnID0gUENIX1BQX09GRl9ERUxBWVM7Cj4+ID4gIAkJcHBfZGl2X3JlZyA9IFBD SF9QUF9ESVZJU09SOwo+PiAKPj4gRm9yIHRoZSByZXN0LCBJJ2QgbGlrZSB5b3UgdG8gZG8gd2hh dCBJIHN1Z2dlc3RlZCBpbiBteSByZXBseSB0bwo+PiBwYXRjaCAzLCBpLmUuIGFkZCBhIG5ldyBp ZiAoSVNfQlJPWFRPTihkZXYpKSBhdCB0aGUgdG9wIG9mIGVhY2ggb2YKPj4gdGhlc2UsIHdpdGgK Pj4gQlhUX1BQX1dIQVRFVkVSKDApIGFzIHRoZSByZWdpc3Rlci4gTGF0ZXIgb24sIHdlIGNhbiBh ZGQgY29kZSB0bwo+PiBjaG9vc2UgdGhlIHBvd2VyIHNlcXVlbmNlciwgYSBiaXQgc2ltaWxhciB0 byB3aGF0IHZsdi9jaHYgZG8gbm93Cj4+IChleGNlcHQgdGhlcmUgaXQncyBiYXNlZCBvbiBwaXBl KS4KPj4gCj4+IEJSLAo+PiBKYW5pLgo+PiAKPj4gPiAtLQo+PiA+IDIuMC4xCj4+ID4KPj4gPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiA+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QKPj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+ ID4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo+PiAKPj4gLS0KPj4gSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kg Q2VudGVyCj4+IAo+PiAtIFZhbmRhbmEKPj4gCj4+IAo+PiBPbiAxMi8zMS8yMDE1IDQ6MjYgQU0s IE1hdHQgUm9wZXIgd3JvdGU6Cj4+ID5Ccm94dG9uLXNwZWNpZmljIHBhbmVsIHBvd2VyIHNlcXVl bmNpbmcgd2FzIGFkZGVkIGluIGNvbW1pdAo+PiA+Cj4+ID4gICAgICAgICBjb21taXQgYjBhMDhi ZWM5NjMxOGJlNTRkYjk3YzNmMGI5ZTM3YjUyNTYxZjllYQo+PiA+ICAgICAgICAgQXV0aG9yOiBW YW5kYW5hIEthbm5hbiA8dmFuZGFuYS5rYW5uYW5AaW50ZWwuY29tPgo+PiA+ICAgICAgICAgRGF0 ZTogICBUaHUgSnVuIDE4IDExOjAwOjU1IDIwMTUgKzA1MzAKPj4gPgo+PiA+ICAgICAgICAgICAg IGRybS9pOTE1L2J4dDogZURQIFBhbmVsIFBvd2VyIHNlcXVlbmNpbmcKPj4gPgo+PiA+QXMgbm90 ZWQgaW4gdGhhdCBjb21taXQsIEJyb3h0b24gaGFzIHR3byBzZXRzIG9mIHJlZ2lzdGVycyAoYW5k IHdlJ3JlCj4+ID5zdXBwb3NlZCB0byByZWFkIHdoaWNoIHRvIHVzZSBmcm9tIHRoZSBWQlQsIGFs dGhvdWdoIHdlJ3JlIHB1bnRpbmcgb24KPj4gPnRoYXQgcGFydCBhdCB0aGUgbW9tZW50KSBhbmQg YWxzbyBkb2Vzbid0IGhhdmUgYSBkaXZpc29yIHJlZ2lzdGVyLgo+PiA+QWx0aG91Z2ggd2UgdGFr ZSB0aGUgQlhULXNwZWNpZmljIGRldGFpbHMgaW50byBhY2NvdW50IGF0IGluaXRpYWwgc3lzdGVt Cj4+ID5pbml0LCB3ZSBmYWlsIHRvIHNhdmUvcmVzdG9yZSB0aGUgYXBwcm9wcmlhdGUgcmVnaXN0 ZXJzIGFyb3VuZCBzeXN0ZW0KPj4gPnN1c3BlbmQvcmVzdW1lLCB3aGljaCBsZWFkcyB0byB1bmNs YWltZWQgcmVnaXN0ZXIgd2FybmluZ3MgYXQgdGhlCj4+ID5tb21lbnQsIGFuZCBtYXkgYWxzbyBm YWlsIHRvIHNhdmUgdGhlIHByb3BlciByZWdpc3RlcnMgb25jZSB3ZSBzdGFydAo+PiA+YWN0dWFs bHkgcGF5aW5nIGF0dGVudGlvbiB0byB0aGUgVkJULgo+PiA+Cj4+ID5DYzogVmFuZGFuYSBLYW5u YW4gPHZhbmRhbmEua2FubmFuQGludGVsLmNvbT4KPj4gPkNjOiBkcm0taW50ZWwtZml4ZXNAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCj4+ID5TaWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3 LmQucm9wZXJAaW50ZWwuY29tPgo+PiA+LS0tCj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfc3VzcGVuZC5jIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKy0tCj4+ID4gIDEgZmlsZSBj aGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+PiA+Cj4+ID5kaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3N1c3BlbmQuYwo+PiA+aW5kZXggYmY1ODJmZS4uNjFiZWM4ZSAxMDA2NDQK Pj4gPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4+ID4rKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYwo+PiA+QEAgLTQ0LDcgKzQ0LDE4IEBA IHN0YXRpYyB2b2lkIGk5MTVfc2F2ZV9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ ID4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZUxWRFMgPSBJOTE1X1JFQUQoTFZEUyk7Cj4+ID4K Pj4gPiAgCS8qIFBhbmVsIHBvd2VyIHNlcXVlbmNlciAqLwo+PiA+LQlpZiAoSEFTX1BDSF9TUExJ VChkZXYpKSB7Cj4+ID4rCWlmIChJU19CUk9YVE9OKGRldikpIHsKPj4gPisJCS8qCj4+ID4rCQkg KiBUT0RPOiBCWFQgaGFzIDIgc2V0cyBvZiBQUFMgcmVnaXN0ZXJzLgo+PiA+KwkJICogQ29ycmVj dCBSZWdpc3RlciBmb3IgQnJveHRvbiBuZWVkIHRvIGJlIGlkZW50aWZpZWQKPj4gPisJCSAqIHVz aW5nIFZCVC4gaGFyZGNvZGluZyBmb3Igbm93Lgo+PiA+KwkJICoKPj4gPisJCSAqIFRoZXJlJ3Mg YWxzbyBubyBkaXZpc29yIHJlZ2lzdGVyIG9uIEJyb3h0b24uCj4+ID4rCQkgKi8KPj4gPisJCWRl dl9wcml2LT5yZWdmaWxlLnNhdmVQUF9DT05UUk9MID0gSTkxNV9SRUFEKEJYVF9QUF9DT05UUk9M KDApKTsKPj4gPisJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMgPSBJOTE1X1JF QUQoQlhUX1BQX09OX0RFTEFZUygwKSk7Cj4+ID4rCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBf T0ZGX0RFTEFZUyA9IEk5MTVfUkVBRChCWFRfUFBfT0ZGX0RFTEFZUygwKSk7Cj4+ID4rCX0gZWxz ZSBpZiAoSEFTX1BDSF9TUExJVChkZXYpKSB7Cj4+ID4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2 ZVBQX0NPTlRST0wgPSBJOTE1X1JFQUQoUENIX1BQX0NPTlRST0wpOwo+PiA+ICAJCWRldl9wcml2 LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMgPSBJOTE1X1JFQUQoUENIX1BQX09OX0RFTEFZUyk7 Cj4+ID4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMgPSBJOTE1X1JFQUQo UENIX1BQX09GRl9ERUxBWVMpOwo+PiA+QEAgLTgzLDcgKzk0LDE2IEBAIHN0YXRpYyB2b2lkIGk5 MTVfcmVzdG9yZV9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ID4gIAkJSTkxNV9X UklURShMVkRTLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlTFZEUyAmIG1hc2spOwo+PiA+Cj4+ID4g IAkvKiBQYW5lbCBwb3dlciBzZXF1ZW5jZXIgKi8KPj4gPi0JaWYgKEhBU19QQ0hfU1BMSVQoZGV2 KSkgewo+PiA+KwlpZiAoSVNfQlJPWFRPTihkZXYpKSB7Cj4+ID4rCQkvKgo+PiA+KwkJICogVE9E TzogQlhUIGhhcyAyIHNldHMgb2YgUFBTIHJlZ2lzdGVycy4KPj4gPisJCSAqIENvcnJlY3QgUmVn aXN0ZXIgZm9yIEJyb3h0b24gbmVlZCB0byBiZSBpZGVudGlmaWVkCj4+ID4rCQkgKiB1c2luZyBW QlQuIGhhcmRjb2RpbmcgZm9yIG5vdwo+PiA+KwkJICovCj4+ID4rCQlJOTE1X1dSSVRFKEJYVF9Q UF9PTl9ERUxBWVMoMCksIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMpOwo+PiA+ KwkJSTkxNV9XUklURShCWFRfUFBfT0ZGX0RFTEFZUygwKSwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2 ZVBQX09GRl9ERUxBWVMpOwo+PiA+KwkJSTkxNV9XUklURShCWFRfUFBfQ09OVFJPTCgwKSwgZGV2 X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0NPTlRST0wpOwo+PiA+Kwl9IGVsc2UgaWYgKEhBU19QQ0hf U1BMSVQoZGV2KSkgewo+PiA+ICAJCUk5MTVfV1JJVEUoUENIX1BQX09OX0RFTEFZUywgZGV2X3By aXYtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RFTEFZUyk7Cj4+ID4gIAkJSTkxNV9XUklURShQQ0hfUFBf T0ZGX0RFTEFZUywgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMpOwo+PiA+ICAJ CUk5MTVfV1JJVEUoUENIX1BQX0RJVklTT1IsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9ESVZJ U09SKTsKPj4gPgoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5 IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=