From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepak S Subject: Re: [PATCH 6/7] drm/i915: Implement PHY lane power gating for CHV Date: Sat, 09 May 2015 11:05:27 +0530 Message-ID: <554D9C9F.90409@linux.intel.com> References: <1428679293-6208-1-git-send-email-ville.syrjala@linux.intel.com> <1428679293-6208-7-git-send-email-ville.syrjala@linux.intel.com> <554CCCE8.1030302@linux.intel.com> <20150508160532.GG18908@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 7C5346E236 for ; Fri, 8 May 2015 22:38:35 -0700 (PDT) In-Reply-To: <20150508160532.GG18908@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?windows-1252?Q?Ville_Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiBGcmlkYXkgMDggTWF5IDIwMTUgMDk6MzUgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToK PiBPbiBGcmksIE1heSAwOCwgMjAxNSBhdCAwODoxOToxMlBNICswNTMwLCBEZWVwYWsgUyB3cm90 ZToKPj4KPj4gT24gRnJpZGF5IDEwIEFwcmlsIDIwMTUgMDg6NTEgUE0sIHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tIHdyb3RlOgo+Pj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPj4+Cj4+PiBQb3dlcmdhdGUgdGhlIFBIWSBsYW5lcyB3 aGVuIHRoZXkncmUgbm90IG5lZWRlZC4gRm9yIEhETUkgYWxsIGZvdXIgbGFuZXMKPj4+IGFyZSBu ZWVkZWQgYWx3YXlzLCBidXQgZm9yIERQIHdlIGNhbiBlbmFibGUgb25seSB0aGUgbmVlZGVkIGxh bmVzLiBBbmQKPj4+IHdoZW4gdGhlIHBvcnQgaXMgbm90IHVzZWQgYWxsIGxhbmVzIGNhbiBiZSBw b3dlciBnYXRlZC4gVGhpcyBjb3VsZAo+Pj4gcmVkdWNlIHBvd2VyIGNvbnN1bXB0aW9uIGEgYml0 IHdoZW4gb25seSBhIHN1YnNldCBvZiB0aGUgbGFuZXMgaW4gdGhlCj4+PiBQSFkgYXJlIHJlcXVp cmVkLgo+Pj4KPj4+IEEgYml0IG9mIGV4dHJhIGNhcmUgaXMgbmVlZGVkIHRvIHJlY29uc3RydWN0 IHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZQo+Pj4gRFBJT19QSFlfQ09OVFJPTCByZWdpc3RlciBz aW5jZSB3ZSBjYW4ndCByZWFkIGl0LiBTbyBpbnN0ZWFkIHdlIHJlYWQgdGhlCj4+PiBhY3R1YWwg bGFuZSBzdGF0dXMgZnJvbSB0aGUgRFBMTC9QSFlfU1RBVFVTIHJlZ2lzdGVycyBhbmQgdXNlIHRo YXQgdG8KPj4+IGRldGVybWluZSB3aGljaCBsYW5lcyBvdWdodCB0byBiZSBwb3dlcmdhdGVkIGlu aXRpYWxseS4KPj4+Cj4+PiBBbHNvIHNwcmlua2xlIGEgZmV3IGRlYnVnIHByaW50cyBhcm91bmQg c28gdGhhdCB3ZSBjYW4gbW9uaXRvciB0aGUKPj4+IERQSU9fUEhZX1NUQVRVUyBjaGFuZ2VzIHdp dGhvdXQgaGF2aW5nIHRvIHJlYWQgaXQgYW5kIHJpc2sgY29ycnVwdGluZwo+Pj4gaXQuCj4+Pgo+ Pj4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbT4KPj4+IC0tLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAg ICAgICAgIHwgIDIgKwo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAg ICAgIHwgIDggKysrKwo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAg ICAgIHwgIDIgKwo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jICAgICAg IHwgIDUgKysrCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMg fCA2OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPj4+ICAgIDUgZmlsZXMgY2hh bmdlZCwgODIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgKPj4+IGluZGV4IDk3N2JhZDYuLjM0YzM2NmEgMTAwNjQ0Cj4+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCj4+PiBAQCAtMTg4NywxMCArMTg4NywxMiBAQCBlbnVtIHNrbF9kaXNw X3Bvd2VyX3dlbGxzIHsKPj4+ICAgICNkZWZpbmUgRFBJT19QSFlfU1RBVFVTCQkJKFZMVl9ESVNQ TEFZX0JBU0UgKyAweDYyNDApCj4+PiAgICAjZGVmaW5lICAgRFBMTF9QT1JURF9SRUFEWV9NQVNL CQkoMHhmKQo+Pj4gICAgI2RlZmluZSBESVNQTEFZX1BIWV9DT05UUk9MIChWTFZfRElTUExBWV9C QVNFICsgMHg2MDEwMCkKPj4+ICsjZGVmaW5lICAgUEhZX0NIX1BPV0VSX0RPV05fT1ZSRF9FTihw aHksIGNoKQkoMSA8PCAoMioocGh5KSsoY2gpKzI3KSkKPj4+ICAgICNkZWZpbmUgICBQSFlfTERP X0RFTEFZXzBOUwkJCTB4MAo+Pj4gICAgI2RlZmluZSAgIFBIWV9MRE9fREVMQVlfMjAwTlMJCQkw eDEKPj4+ICAgICNkZWZpbmUgICBQSFlfTERPX0RFTEFZXzYwME5TCQkJMHgyCj4+PiAgICAjZGVm aW5lICAgUEhZX0xET19TRVFfREVMQVkoZGVsYXksIHBoeSkJCSgoZGVsYXkpIDw8ICgyKihwaHkp KzIzKSkKPj4+ICsjZGVmaW5lICAgUEhZX0NIX1BPV0VSX0RPV05fT1ZSRChtYXNrLCBwaHksIGNo KQkoKG1hc2spIDw8ICg4KihwaHkpKzQqKGNoKSsxMSkpCj4+PiAgICAjZGVmaW5lICAgUEhZX0NI X1NVX1BTUgkJCQkweDEKPj4+ICAgICNkZWZpbmUgICBQSFlfQ0hfREVFUF9QU1IJCQkweDcKPj4+ ICAgICNkZWZpbmUgICBQSFlfQ0hfUE9XRVJfTU9ERShtb2RlLCBwaHksIGNoKQkoKG1vZGUpIDw8 ICg2KihwaHkpKzMqKGNoKSsyKSkKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+Pj4gaW5kZXgg YWMzOGZkOC4uMGI0M2Y5OSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4+IEBA IC0yMzM2LDYgKzIzMzYsOCBAQCBzdGF0aWMgdm9pZCBjaHZfcG9zdF9kaXNhYmxlX2RwKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+Pj4gICAgCj4+PiAgICAJaW50ZWxfZHBfbGlua19k b3duKGludGVsX2RwKTsKPj4+ICAgIAo+Pj4gKwljaHZfcG93ZXJnYXRlX3BoeV9sYW5lcyhlbmNv ZGVyLCAweGYpOwo+Pj4gKwo+Pj4gICAgCW11dGV4X2xvY2soJmRldl9wcml2LT5kcGlvX2xvY2sp Owo+Pj4gICAgCj4+PiAgICAJLyogUHJvcGFnYXRlIHNvZnQgcmVzZXQgdG8gZGF0YSBsYW5lIHJl c2V0ICovCj4+PiBAQCAtMjQ4Miw2ICsyNDg0LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJs ZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPj4+ICAgIAlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKQo+Pj4gICAgCQl2bHZfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXIoaW50ZWxf ZHApOwo+Pj4gICAgCj4+PiArCWlmIChJU19DSEVSUllWSUVXKGRldikpIHsKPj4+ICsJCS8qIEZJ WE1FIGRlYWwgd2l0aCBsYW5lIHJldmVyc2FsICovCj4+PiArCQlsYW5lX21hc2sgPSAweGYgJiB+ KCgxIDw8IGludGVsX2RwLT5sYW5lX2NvdW50KSAtIDEpOwo+Pj4gKwkJY2h2X3Bvd2VyZ2F0ZV9w aHlfbGFuZXMoZW5jb2RlciwgbGFuZV9tYXNrKTsKPj4+ICsJfQo+Pj4gKwo+Pj4gICAgCWludGVs X2RwX2VuYWJsZV9wb3J0KGludGVsX2RwKTsKPj4+ICAgIAo+Pj4gICAgCWVkcF9wYW5lbF92ZGRf b24oaW50ZWxfZHApOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+IGluZGV4IDNlYzgy OWEuLjU0YmNjYTggMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+IEBAIC0x MjM4LDYgKzEyMzgsOCBAQCB2b2lkIGludGVsX3J1bnRpbWVfcG1fcHV0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7Cj4+PiAgICAKPj4+ICAgIHZvaWQgaW50ZWxfZGlzcGxheV9z ZXRfaW5pdF9wb3dlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2LCBib29sIGVuYWJsZSk7 Cj4+PiAgICAKPj4+ICt2b2lkIGNodl9wb3dlcmdhdGVfcGh5X2xhbmVzKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLCB1bnNpZ25lZCBpbnQgbWFzayk7Cj4+PiArCj4+PiAgICAvKiBpbnRl bF9wbS5jICovCj4+PiAgICB2b2lkIGludGVsX2luaXRfY2xvY2tfZ2F0aW5nKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwo+Pj4gICAgdm9pZCBpbnRlbF9zdXNwZW5kX2h3KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hk bWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+Pj4gaW5kZXggMjRiMGFh MS4uZjU4NDJjMyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hk bWkuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4+PiBAQCAt OTE2LDYgKzkxNiw5IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfaGRtaShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcikKPj4+ICAgIAkJSTkxNV9XUklURShpbnRlbF9oZG1pLT5oZG1p X3JlZywgdGVtcCk7Cj4+PiAgICAJCVBPU1RJTkdfUkVBRChpbnRlbF9oZG1pLT5oZG1pX3JlZyk7 Cj4+PiAgICAJfQo+Pj4gKwo+Pj4gKwlpZiAoSVNfQ0hFUlJZVklFVyhkZXYpKQo+Pj4gKwkJY2h2 X3Bvd2VyZ2F0ZV9waHlfbGFuZXMoZW5jb2RlciwgMHhmKTsKPj4+ICAgIH0KPj4+ICAgIAo+Pj4g ICAgc3RhdGljIGludCBoZG1pX3BvcnRjbG9ja19saW1pdChzdHJ1Y3QgaW50ZWxfaGRtaSAqaGRt aSwgYm9vbCByZXNwZWN0X2R2aV9saW1pdCkKPj4+IEBAIC0xNjM0LDYgKzE2MzcsOCBAQCBzdGF0 aWMgdm9pZCBjaHZfaGRtaV9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy KQo+Pj4gICAgCQkJCSAgIGludGVsX2NydGMtPmNvbmZpZy0+aGFzX2hkbWlfc2luaywKPj4+ICAg IAkJCQkgICBhZGp1c3RlZF9tb2RlKTsKPj4+ICAgIAo+Pj4gKwljaHZfcG93ZXJnYXRlX3BoeV9s YW5lcyhlbmNvZGVyLCAweDApOwo+Pj4gKwo+Pj4gICAgCWludGVsX2VuYWJsZV9oZG1pKGVuY29k ZXIpOwo+Pj4gICAgCj4+PiAgICAJdmx2X3dhaXRfcG9ydF9yZWFkeShkZXZfcHJpdiwgZHBvcnQs IDB4MCk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGlt ZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4+PiBpbmRl eCA1Y2Q4YTUxLi5kOWUwMGQzIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcnVudGltZV9wbS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y dW50aW1lX3BtLmMKPj4+IEBAIC02NjgsNiArNjY4LDkgQEAgc3RhdGljIHZvaWQgY2h2X2RwaW9f Y21uX3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK Pj4+ICAgIAo+Pj4gICAgCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0gUEhZX0NPTV9MQU5F X1JFU0VUX0RFQVNTRVJUKHBoeSk7Cj4+PiAgICAJSTkxNV9XUklURShESVNQTEFZX1BIWV9DT05U Uk9MLCBkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sKTsKPj4+ICsKPj4+ICsJRFJNX0RFQlVHX0tN UygiRW5hYmxlZCBEUElPIFBIWSVkIChEUElPX1BIWV9DT05UUk9MPTB4JTA4eClcbiIsCj4+PiAr CQkgICAgICBwaHksIGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwo+Pj4gICAgfQo+Pj4gICAg Cj4+PiAgICBzdGF0aWMgdm9pZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+IEBAIC02ODAsMTAgKzY4MywxNSBAQCBz dGF0aWMgdm9pZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPj4+ICAgIAo+Pj4gICAgCWlmIChwb3dlcl93ZWxsLT5kYXRh ID09IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMpIHsKPj4+ICAgIAkJcGh5ID0gRFBJT19Q SFkwOwo+Pj4gKwkJZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8PQo+Pj4gKwkJCVBIWV9DSF9Q T1dFUl9ET1dOX09WUkQoMHhmLCBwaHksIERQSU9fQ0gwKSB8Cj4+PiArCQkJUEhZX0NIX1BPV0VS X0RPV05fT1ZSRCgweGYsIHBoeSwgRFBJT19DSDEpOwo+Pj4gICAgCQlhc3NlcnRfcGxsX2Rpc2Fi bGVkKGRldl9wcml2LCBQSVBFX0EpOwo+Pj4gICAgCQlhc3NlcnRfcGxsX2Rpc2FibGVkKGRldl9w cml2LCBQSVBFX0IpOwo+Pj4gICAgCX0gZWxzZSB7Cj4+PiAgICAJCXBoeSA9IERQSU9fUEhZMTsK Pj4+ICsJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0KPj4+ICsJCQlQSFlfQ0hfUE9XRVJf RE9XTl9PVlJEKDB4ZiwgcGh5LCBEUElPX0NIMCk7Cj4+PiAgICAJCWFzc2VydF9wbGxfZGlzYWJs ZWQoZGV2X3ByaXYsIFBJUEVfQyk7Cj4+PiAgICAJfQo+Pj4gICAgCj4+PiBAQCAtNjkxLDYgKzY5 OSwyNSBAQCBzdGF0aWMgdm9pZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+ICAgIAlJOTE1X1dSSVRFKERJU1BMQVlf UEhZX0NPTlRST0wsIGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwo+Pj4gICAgCj4+PiAgICAJ dmx2X3NldF9wb3dlcl93ZWxsKGRldl9wcml2LCBwb3dlcl93ZWxsLCBmYWxzZSk7Cj4+PiArCj4+ PiArCURSTV9ERUJVR19LTVMoIkRpc2FibGVkIERQSU8gUEhZJWQgKERQSU9fUEhZX0NPTlRST0w9 MHglMDh4KVxuIiwKPj4+ICsJCSAgICAgIHBoeSwgZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7 Cj4+PiArfQo+Pj4gKwo+Pj4gK3ZvaWQgY2h2X3Bvd2VyZ2F0ZV9waHlfbGFuZXMoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsIHVuc2lnbmVkIGludCBtYXNrKQo+Pj4gK3sKPj4+ICsJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2Owo+Pj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Pj4gKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRj KTsKPj4+ICsJZW51bSBkcGlvX3BoeSBwaHkgPSBEUElPX1BIWShpbnRlbF9jcnRjLT5waXBlKTsK Pj4+ICsJZW51bSBkcGlvX2NoYW5uZWwgY2ggPSB2bHZfZHBvcnRfdG9fY2hhbm5lbChlbmNfdG9f ZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpKTsKPj4+ICsKPj4+ICsJZGV2X3ByaXYtPmNodl9waHlf Y29udHJvbCAmPSB+UEhZX0NIX1BPV0VSX0RPV05fT1ZSRCgweGYsIHBoeSwgY2gpOwo+Pj4gKwlk ZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9IFBIWV9DSF9QT1dFUl9ET1dOX09WUkQobWFzaywg cGh5LCBjaCk7Cj4+PiArCUk5MTVfV1JJVEUoRElTUExBWV9QSFlfQ09OVFJPTCwgZGV2X3ByaXYt PmNodl9waHlfY29udHJvbCk7Cj4+PiArCj4+PiArCURSTV9ERUJVR19LTVMoIlBvd2VyIGdhdGlu ZyBEUElPIFBIWSVkIENIJWQgbGFuZXMgMHgleCAoRFBJT19QSFlfQ09OVFJPTD0weCUwOHgpXG4i LAo+Pj4gKwkJICAgICAgcGh5LCBjaCwgbWFzaywgZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7 Cj4+PiAgICB9Cj4+PiAgICAKPj4gSGkgVmlsbGUsCj4+Cj4+IEkgdGhpbmsgYmFzZWQgb24gdGhl IHNwZWMsIHdlIG5lZWR0byBwcm9ncmFtIDB4ODE3MCBhcyAweHh4QzN4eHh4IHRvIGFmZmVjdCB0 aGUgRERJMCBwb3dlciBkb3duCj4+IGFuZCB0aGlzIHJlaWdzdGVyIHRvIGJlIHByb2dyYW10ZWQg YmVmb3JlRFBJT19QSFlfQ09OVFJPTCA/Cj4gRG9oLiBOaWNlIGNhdGNoLiBMb29rcyBsaWtlIHRo ZSBkeW5hbWljIHBvd2VyIGRvd24gYml0cyBkZWZhdWx0IHRvIG9mZi4KPiBJIGFsc28gZm91bmQg dGhlIHNhbWUgYml0IGluIENMMiBEVzYsIHdoaWNoIGlzbid0IG1lbnRpb25lZCBieSB0aGUgc3Bl Yy4KPiBJJ2xsIGNvb2sgdXAgYSBwYXRjaCB0byBmbGlwIHRoZW0gYW5kIHJ1biBhIGZldyB0ZXN0 cyB0byBzZWUgaWYgc3R1ZmYKPiBzdGlsbCB3b3Jrcy4KCk9rIFRoYW5rcwpPbmUgbW9yZSBRLiBJ IHRoaW5rIHdlIG5lZWQgdG8gcmUtcHJvZ3JhbSBwaHkgbGFuZXMgcG93ZXIgZG93biBvdmVycmlk ZSAvZW5hYmxlIHZhbHVlcyBhZnRlciBwb3dlciBnYXRpbmcvdW5nYXRpbmcgUEhZMC8xPwoKPgo+ PiBUaGFua3MKPj4gRGVlcGFrCj4+Cj4+PiAgICBzdGF0aWMgYm9vbCBjaHZfcGlwZV9wb3dlcl93 ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4gQEAgLTE0 MDIsMTkgKzE0MjksNTMgQEAgc3RhdGljIHZvaWQgY2h2X3BoeV9jb250cm9sX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Pj4gICAgCSAqIERJU1BMQVlfUEhZX0NPTlRS T0wgY2FuIGdldCBjb3JydXB0ZWQgaWYgcmVhZC4gQXMgYQo+Pj4gICAgCSAqIHdvcmthcm91bmQg bmV2ZXIgZXZlciByZWFkIERJU1BMQVlfUEhZX0NPTlRST0wsIGFuZAo+Pj4gICAgCSAqIGluc3Rl YWQgbWFpbnRhaW4gYSBzaGFkb3cgY29weSBvdXJzZWx2ZXMuIFVzZSB0aGUgYWN0dWFsCj4+PiAt CSAqIHBvd2VyIHdlbGwgc3RhdGUgdG8gcmVjb25zdHJ1Y3QgdGhlIGV4cGVjdGVkIGluaXRpYWwK Pj4+IC0JICogdmFsdWUuCj4+PiArCSAqIHBvd2VyIHdlbGwgc3RhdGUgYW5kIGxhbmUgc3RhdHVz IHRvIHJlY29uc3RydWN0IHRoZQo+Pj4gKwkgKiBleHBlY3RlZCBpbml0aWFsIHZhbHVlLgo+Pj4g ICAgCSAqLwo+Pj4gICAgCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgPQo+Pj4gKwkJUEhZX0NI X1BPV0VSX0RPV05fT1ZSRF9FTihEUElPX1BIWTAsIERQSU9fQ0gwKSB8Cj4+PiArCQlQSFlfQ0hf UE9XRVJfRE9XTl9PVlJEX0VOKERQSU9fUEhZMCwgRFBJT19DSDEpIHwKPj4+ICsJCVBIWV9DSF9Q T1dFUl9ET1dOX09WUkRfRU4oRFBJT19QSFkxLCBEUElPX0NIMCkgfAo+Pj4gICAgCQlQSFlfTERP X1NFUV9ERUxBWShQSFlfTERPX0RFTEFZXzYwME5TLCBEUElPX1BIWTApIHwKPj4+ICAgIAkJUEhZ X0xET19TRVFfREVMQVkoUEhZX0xET19ERUxBWV82MDBOUywgRFBJT19QSFkxKSB8Cj4+PiAgICAJ CVBIWV9DSF9QT1dFUl9NT0RFKFBIWV9DSF9TVV9QU1IsIERQSU9fUEhZMCwgRFBJT19DSDApIHwK Pj4+ICAgIAkJUEhZX0NIX1BPV0VSX01PREUoUEhZX0NIX1NVX1BTUiwgRFBJT19QSFkwLCBEUElP X0NIMSkgfAo+Pj4gICAgCQlQSFlfQ0hfUE9XRVJfTU9ERShQSFlfQ0hfU1VfUFNSLCBEUElPX1BI WTEsIERQSU9fQ0gwKTsKPj4+IC0JaWYgKGNtbl9iYy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2 LCBjbW5fYmMpKQo+Pj4gKwo+Pj4gKwlpZiAoY21uX2JjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3By aXYsIGNtbl9iYykpIHsKPj4+ICsJCXVpbnQzMl90IHN0YXR1cyA9IEk5MTVfUkVBRChEUExMKFBJ UEVfQSkpOwo+Pj4gKwkJdW5zaWduZWQgaW50IG1hc2s7Cj4+PiArCj4+PiArCQltYXNrID0gc3Rh dHVzICYgRFBMTF9QT1JUQl9SRUFEWV9NQVNLOwo+Pj4gKwkJZGV2X3ByaXYtPmNodl9waHlfY29u dHJvbCB8PQo+Pj4gKwkJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkQobWFzaywgRFBJT19QSFkwLCBE UElPX0NIMCk7Cj4+PiArCQltYXNrID0gKHN0YXR1cyAmIERQTExfUE9SVENfUkVBRFlfTUFTSykg Pj4gNDsKPj4+ICsJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0KPj4+ICsJCQlQSFlfQ0hf UE9XRVJfRE9XTl9PVlJEKG1hc2ssIERQSU9fUEhZMCwgRFBJT19DSDEpOwo+Pj4gKwo+Pj4gICAg CQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9IFBIWV9DT01fTEFORV9SRVNFVF9ERUFTU0VS VChEUElPX1BIWTApOwo+Pj4gLQlpZiAoY21uX2QtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwg Y21uX2QpKQo+Pj4gKwl9IGVsc2Ugewo+Pj4gKwkJZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8 PQo+Pj4gKwkJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkQoMHhmLCBEUElPX1BIWTAsIERQSU9fQ0gw KSB8Cj4+PiArCQkJUEhZX0NIX1BPV0VSX0RPV05fT1ZSRCgweGYsIERQSU9fUEhZMCwgRFBJT19D SDEpOwo+Pj4gKwl9Cj4+PiArCj4+PiArCWlmIChjbW5fZC0+b3BzLT5pc19lbmFibGVkKGRldl9w cml2LCBjbW5fZCkpIHsKPj4+ICsJCXVpbnQzMl90IHN0YXR1cyA9IEk5MTVfUkVBRChEUElPX1BI WV9TVEFUVVMpOwo+Pj4gKwkJdW5zaWduZWQgaW50IG1hc2s7Cj4+PiArCj4+PiArCQltYXNrID0g c3RhdHVzICYgRFBMTF9QT1JURF9SRUFEWV9NQVNLOwo+Pj4gKwkJZGV2X3ByaXYtPmNodl9waHlf Y29udHJvbCB8PQo+Pj4gKwkJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkQobWFzaywgRFBJT19QSFkx LCBEUElPX0NIMCk7Cj4+PiArCj4+PiAgICAJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0g UEhZX0NPTV9MQU5FX1JFU0VUX0RFQVNTRVJUKERQSU9fUEhZMSk7Cj4+PiArCX0gZWxzZSB7Cj4+ PiArCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9Cj4+PiArCQkJUEhZX0NIX1BPV0VSX0RP V05fT1ZSRCgweGYsIERQSU9fUEhZMSwgRFBJT19DSDApOwo+Pj4gKwl9Cj4+PiArCj4+PiArCURS TV9ERUJVR19LTVMoIkluaXRpYWwgRFBJT19QSFlfQ09OVFJPTD0weCUwOHhcbiIsCj4+PiArCQkg ICAgICBkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sKTsKPj4+ICAgIH0KPj4+ICAgIAo+Pj4gICAg c3RhdGljIHZvaWQgdmx2X2NtbmxhbmVfd2Eoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=