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: Wed, 13 May 2015 08:49:47 +0530 Message-ID: <5552C2D3.6000102@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> <554D9C9F.90409@linux.intel.com> <20150511114316.GN18908@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id E43AF6E6C8 for ; Tue, 12 May 2015 20:23:14 -0700 (PDT) In-Reply-To: <20150511114316.GN18908@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 CgpPbiBNb25kYXkgMTEgTWF5IDIwMTUgMDU6MTMgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToK PiBPbiBTYXQsIE1heSAwOSwgMjAxNSBhdCAxMTowNToyN0FNICswNTMwLCBEZWVwYWsgUyB3cm90 ZToKPj4KPj4gT24gRnJpZGF5IDA4IE1heSAyMDE1IDA5OjM1IFBNLCBWaWxsZSBTeXJqw6Rsw6Qg d3JvdGU6Cj4+PiBPbiBGcmksIE1heSAwOCwgMjAxNSBhdCAwODoxOToxMlBNICswNTMwLCBEZWVw YWsgUyB3cm90ZToKPj4+PiBPbiBGcmlkYXkgMTAgQXByaWwgMjAxNSAwODo1MSBQTSwgdmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20gd3JvdGU6Cj4+Pj4+IEZyb206IFZpbGxlIFN5cmrDpGzD pCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4+Pj4+Cj4+Pj4+IFBvd2VyZ2F0ZSB0 aGUgUEhZIGxhbmVzIHdoZW4gdGhleSdyZSBub3QgbmVlZGVkLiBGb3IgSERNSSBhbGwgZm91ciBs YW5lcwo+Pj4+PiBhcmUgbmVlZGVkIGFsd2F5cywgYnV0IGZvciBEUCB3ZSBjYW4gZW5hYmxlIG9u bHkgdGhlIG5lZWRlZCBsYW5lcy4gQW5kCj4+Pj4+IHdoZW4gdGhlIHBvcnQgaXMgbm90IHVzZWQg YWxsIGxhbmVzIGNhbiBiZSBwb3dlciBnYXRlZC4gVGhpcyBjb3VsZAo+Pj4+PiByZWR1Y2UgcG93 ZXIgY29uc3VtcHRpb24gYSBiaXQgd2hlbiBvbmx5IGEgc3Vic2V0IG9mIHRoZSBsYW5lcyBpbiB0 aGUKPj4+Pj4gUEhZIGFyZSByZXF1aXJlZC4KPj4+Pj4KPj4+Pj4gQSBiaXQgb2YgZXh0cmEgY2Fy ZSBpcyBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlCj4+Pj4+ IERQSU9fUEhZX0NPTlRST0wgcmVnaXN0ZXIgc2luY2Ugd2UgY2FuJ3QgcmVhZCBpdC4gU28gaW5z dGVhZCB3ZSByZWFkIHRoZQo+Pj4+PiBhY3R1YWwgbGFuZSBzdGF0dXMgZnJvbSB0aGUgRFBMTC9Q SFlfU1RBVFVTIHJlZ2lzdGVycyBhbmQgdXNlIHRoYXQgdG8KPj4+Pj4gZGV0ZXJtaW5lIHdoaWNo IGxhbmVzIG91Z2h0IHRvIGJlIHBvd2VyZ2F0ZWQgaW5pdGlhbGx5Lgo+Pj4+Pgo+Pj4+PiBBbHNv IHNwcmlua2xlIGEgZmV3IGRlYnVnIHByaW50cyBhcm91bmQgc28gdGhhdCB3ZSBjYW4gbW9uaXRv ciB0aGUKPj4+Pj4gRFBJT19QSFlfU1RBVFVTIGNoYW5nZXMgd2l0aG91dCBoYXZpbmcgdG8gcmVh ZCBpdCBhbmQgcmlzayBjb3JydXB0aW5nCj4+Pj4+IGl0Lgo+Pj4+Pgo+Pj4+PiBTaWduZWQtb2Zm LWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+Pj4+ PiAtLS0KPj4+Pj4gICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAgICB8 ICAyICsKPj4+Pj4gICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgICB8 ICA4ICsrKysKPj4+Pj4gICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAg ICB8ICAyICsKPj4+Pj4gICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyAgICAg ICB8ICA1ICsrKwo+Pj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9w bS5jIHwgNjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4+Pj4+ICAgICA1IGZp bGVzIGNoYW5nZWQsIDgyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4+Pj4+Cj4+Pj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+Pj4+PiBpbmRleCA5NzdiYWQ2Li4zNGMzNjZhIDEwMDY0 NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+Pj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4+Pj4gQEAgLTE4ODcsMTAgKzE4ODcs MTIgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4+Pj4+ICAgICAjZGVmaW5lIERQSU9f UEhZX1NUQVRVUwkJCShWTFZfRElTUExBWV9CQVNFICsgMHg2MjQwKQo+Pj4+PiAgICAgI2RlZmlu ZSAgIERQTExfUE9SVERfUkVBRFlfTUFTSwkJKDB4ZikKPj4+Pj4gICAgICNkZWZpbmUgRElTUExB WV9QSFlfQ09OVFJPTCAoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjAxMDApCj4+Pj4+ICsjZGVmaW5l ICAgUEhZX0NIX1BPV0VSX0RPV05fT1ZSRF9FTihwaHksIGNoKQkoMSA8PCAoMioocGh5KSsoY2gp KzI3KSkKPj4+Pj4gICAgICNkZWZpbmUgICBQSFlfTERPX0RFTEFZXzBOUwkJCTB4MAo+Pj4+PiAg ICAgI2RlZmluZSAgIFBIWV9MRE9fREVMQVlfMjAwTlMJCQkweDEKPj4+Pj4gICAgICNkZWZpbmUg ICBQSFlfTERPX0RFTEFZXzYwME5TCQkJMHgyCj4+Pj4+ICAgICAjZGVmaW5lICAgUEhZX0xET19T RVFfREVMQVkoZGVsYXksIHBoeSkJCSgoZGVsYXkpIDw8ICgyKihwaHkpKzIzKSkKPj4+Pj4gKyNk ZWZpbmUgICBQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKG1hc2ssIHBoeSwgY2gpCSgobWFzaykgPDwg KDgqKHBoeSkrNCooY2gpKzExKSkKPj4+Pj4gICAgICNkZWZpbmUgICBQSFlfQ0hfU1VfUFNSCQkJ CTB4MQo+Pj4+PiAgICAgI2RlZmluZSAgIFBIWV9DSF9ERUVQX1BTUgkJCTB4Nwo+Pj4+PiAgICAg I2RlZmluZSAgIFBIWV9DSF9QT1dFUl9NT0RFKG1vZGUsIHBoeSwgY2gpCSgobW9kZSkgPDwgKDYq KHBoeSkrMyooY2gpKzIpKQo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4+Pj4gaW5kZXgg YWMzOGZkOC4uMGI0M2Y5OSAxMDA2NDQKPj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYwo+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+ Pj4+IEBAIC0yMzM2LDYgKzIzMzYsOCBAQCBzdGF0aWMgdm9pZCBjaHZfcG9zdF9kaXNhYmxlX2Rw KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+Pj4+PiAgICAgCj4+Pj4+ICAgICAJaW50 ZWxfZHBfbGlua19kb3duKGludGVsX2RwKTsKPj4+Pj4gICAgIAo+Pj4+PiArCWNodl9wb3dlcmdh dGVfcGh5X2xhbmVzKGVuY29kZXIsIDB4Zik7Cj4+Pj4+ICsKPj4+Pj4gICAgIAltdXRleF9sb2Nr KCZkZXZfcHJpdi0+ZHBpb19sb2NrKTsKPj4+Pj4gICAgIAo+Pj4+PiAgICAgCS8qIFByb3BhZ2F0 ZSBzb2Z0IHJlc2V0IHRvIGRhdGEgbGFuZSByZXNldCAqLwo+Pj4+PiBAQCAtMjQ4Miw2ICsyNDg0 LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKPj4+Pj4gICAgIAlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+Pj4+PiAgICAgCQl2 bHZfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXIoaW50ZWxfZHApOwo+Pj4+PiAgICAgCj4+Pj4+ ICsJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkgewo+Pj4+PiArCQkvKiBGSVhNRSBkZWFsIHdpdGgg bGFuZSByZXZlcnNhbCAqLwo+Pj4+PiArCQlsYW5lX21hc2sgPSAweGYgJiB+KCgxIDw8IGludGVs X2RwLT5sYW5lX2NvdW50KSAtIDEpOwo+Pj4+PiArCQljaHZfcG93ZXJnYXRlX3BoeV9sYW5lcyhl bmNvZGVyLCBsYW5lX21hc2spOwo+Pj4+PiArCX0KPj4+Pj4gKwo+Pj4+PiAgICAgCWludGVsX2Rw X2VuYWJsZV9wb3J0KGludGVsX2RwKTsKPj4+Pj4gICAgIAo+Pj4+PiAgICAgCWVkcF9wYW5lbF92 ZGRfb24oaW50ZWxfZHApOwo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+Pj4+PiBpbmRl eCAzZWM4MjlhLi41NGJjY2E4IDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+Pj4+PiBAQCAtMTIzOCw2ICsxMjM4LDggQEAgdm9pZCBpbnRlbF9ydW50aW1lX3BtX3B1dChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+Pj4+PiAgICAgCj4+Pj4+ICAgICB2 b2lkIGludGVsX2Rpc3BsYXlfc2V0X2luaXRfcG93ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldiwgYm9vbCBlbmFibGUpOwo+Pj4+PiAgICAgCj4+Pj4+ICt2b2lkIGNodl9wb3dlcmdhdGVf cGh5X2xhbmVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCB1bnNpZ25lZCBpbnQgbWFz ayk7Cj4+Pj4+ICsKPj4+Pj4gICAgIC8qIGludGVsX3BtLmMgKi8KPj4+Pj4gICAgIHZvaWQgaW50 ZWxfaW5pdF9jbG9ja19nYXRpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4+Pj4+ICAgICB2 b2lkIGludGVsX3N1c3BlbmRfaHcoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4+Pj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oZG1pLmMKPj4+Pj4gaW5kZXggMjRiMGFhMS4uZjU4NDJjMyAxMDA2NDQK Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4+Pj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+Pj4+PiBAQCAtOTE2LDYgKzkxNiw5 IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKPj4+Pj4gICAgIAkJSTkxNV9XUklURShpbnRlbF9oZG1pLT5oZG1pX3JlZywgdGVt cCk7Cj4+Pj4+ICAgICAJCVBPU1RJTkdfUkVBRChpbnRlbF9oZG1pLT5oZG1pX3JlZyk7Cj4+Pj4+ ICAgICAJfQo+Pj4+PiArCj4+Pj4+ICsJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkKPj4+Pj4gKwkJ Y2h2X3Bvd2VyZ2F0ZV9waHlfbGFuZXMoZW5jb2RlciwgMHhmKTsKPj4+Pj4gICAgIH0KPj4+Pj4g ICAgIAo+Pj4+PiAgICAgc3RhdGljIGludCBoZG1pX3BvcnRjbG9ja19saW1pdChzdHJ1Y3QgaW50 ZWxfaGRtaSAqaGRtaSwgYm9vbCByZXNwZWN0X2R2aV9saW1pdCkKPj4+Pj4gQEAgLTE2MzQsNiAr MTYzNyw4IEBAIHN0YXRpYyB2b2lkIGNodl9oZG1pX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIpCj4+Pj4+ICAgICAJCQkJICAgaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNf aGRtaV9zaW5rLAo+Pj4+PiAgICAgCQkJCSAgIGFkanVzdGVkX21vZGUpOwo+Pj4+PiAgICAgCj4+ Pj4+ICsJY2h2X3Bvd2VyZ2F0ZV9waHlfbGFuZXMoZW5jb2RlciwgMHgwKTsKPj4+Pj4gKwo+Pj4+ PiAgICAgCWludGVsX2VuYWJsZV9oZG1pKGVuY29kZXIpOwo+Pj4+PiAgICAgCj4+Pj4+ICAgICAJ dmx2X3dhaXRfcG9ydF9yZWFkeShkZXZfcHJpdiwgZHBvcnQsIDB4MCk7Cj4+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPj4+Pj4gaW5kZXggNWNkOGE1MS4uZDllMDBk MyAxMDA2NDQKPj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9w bS5jCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ Pj4+PiBAQCAtNjY4LDYgKzY2OCw5IEBAIHN0YXRpYyB2b2lkIGNodl9kcGlvX2Ntbl9wb3dlcl93 ZWxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+Pj4+ICAgICAK Pj4+Pj4gICAgIAlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9IFBIWV9DT01fTEFORV9SRVNF VF9ERUFTU0VSVChwaHkpOwo+Pj4+PiAgICAgCUk5MTVfV1JJVEUoRElTUExBWV9QSFlfQ09OVFJP TCwgZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7Cj4+Pj4+ICsKPj4+Pj4gKwlEUk1fREVCVUdf S01TKCJFbmFibGVkIERQSU8gUEhZJWQgKERQSU9fUEhZX0NPTlRST0w9MHglMDh4KVxuIiwKPj4+ Pj4gKwkJICAgICAgcGh5LCBkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sKTsKPj4+Pj4gICAgIH0K Pj4+Pj4gICAgIAo+Pj4+PiAgICAgc3RhdGljIHZvaWQgY2h2X2RwaW9fY21uX3Bvd2VyX3dlbGxf ZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+Pj4+IEBAIC02ODAs MTAgKzY4MywxNSBAQCBzdGF0aWMgdm9pZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9kaXNhYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+Pj4gICAgIAo+Pj4+PiAgICAg CWlmIChwb3dlcl93ZWxsLT5kYXRhID09IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMpIHsK Pj4+Pj4gICAgIAkJcGh5ID0gRFBJT19QSFkwOwo+Pj4+PiArCQlkZXZfcHJpdi0+Y2h2X3BoeV9j b250cm9sIHw9Cj4+Pj4+ICsJCQlQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKDB4ZiwgcGh5LCBEUElP X0NIMCkgfAo+Pj4+PiArCQkJUEhZX0NIX1BPV0VSX0RPV05fT1ZSRCgweGYsIHBoeSwgRFBJT19D SDEpOwo+Pj4+PiAgICAgCQlhc3NlcnRfcGxsX2Rpc2FibGVkKGRldl9wcml2LCBQSVBFX0EpOwo+ Pj4+PiAgICAgCQlhc3NlcnRfcGxsX2Rpc2FibGVkKGRldl9wcml2LCBQSVBFX0IpOwo+Pj4+PiAg ICAgCX0gZWxzZSB7Cj4+Pj4+ICAgICAJCXBoeSA9IERQSU9fUEhZMTsKPj4+Pj4gKwkJZGV2X3By aXYtPmNodl9waHlfY29udHJvbCB8PQo+Pj4+PiArCQkJUEhZX0NIX1BPV0VSX0RPV05fT1ZSRCgw eGYsIHBoeSwgRFBJT19DSDApOwo+Pj4+PiAgICAgCQlhc3NlcnRfcGxsX2Rpc2FibGVkKGRldl9w cml2LCBQSVBFX0MpOwo+Pj4+PiAgICAgCX0KPj4+Pj4gICAgIAo+Pj4+PiBAQCAtNjkxLDYgKzY5 OSwyNSBAQCBzdGF0aWMgdm9pZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+Pj4gICAgIAlJOTE1X1dSSVRFKERJU1BM QVlfUEhZX0NPTlRST0wsIGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwo+Pj4+PiAgICAgCj4+ Pj4+ICAgICAJdmx2X3NldF9wb3dlcl93ZWxsKGRldl9wcml2LCBwb3dlcl93ZWxsLCBmYWxzZSk7 Cj4+Pj4+ICsKPj4+Pj4gKwlEUk1fREVCVUdfS01TKCJEaXNhYmxlZCBEUElPIFBIWSVkIChEUElP X1BIWV9DT05UUk9MPTB4JTA4eClcbiIsCj4+Pj4+ICsJCSAgICAgIHBoeSwgZGV2X3ByaXYtPmNo dl9waHlfY29udHJvbCk7Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4gK3ZvaWQgY2h2X3Bvd2VyZ2F0 ZV9waHlfbGFuZXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIHVuc2lnbmVkIGludCBt YXNrKQo+Pj4+PiArewo+Pj4+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5i YXNlLmRldjsKPj4+Pj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+Pj4+PiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwo+Pj4+PiArCWVudW0gZHBpb19waHkgcGh5 ID0gRFBJT19QSFkoaW50ZWxfY3J0Yy0+cGlwZSk7Cj4+Pj4+ICsJZW51bSBkcGlvX2NoYW5uZWwg Y2ggPSB2bHZfZHBvcnRfdG9fY2hhbm5lbChlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2Up KTsKPj4+Pj4gKwo+Pj4+PiArCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgJj0gflBIWV9DSF9Q T1dFUl9ET1dOX09WUkQoMHhmLCBwaHksIGNoKTsKPj4+Pj4gKwlkZXZfcHJpdi0+Y2h2X3BoeV9j b250cm9sIHw9IFBIWV9DSF9QT1dFUl9ET1dOX09WUkQobWFzaywgcGh5LCBjaCk7Cj4+Pj4+ICsJ STkxNV9XUklURShESVNQTEFZX1BIWV9DT05UUk9MLCBkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9s KTsKPj4+Pj4gKwo+Pj4+PiArCURSTV9ERUJVR19LTVMoIlBvd2VyIGdhdGluZyBEUElPIFBIWSVk IENIJWQgbGFuZXMgMHgleCAoRFBJT19QSFlfQ09OVFJPTD0weCUwOHgpXG4iLAo+Pj4+PiArCQkg ICAgICBwaHksIGNoLCBtYXNrLCBkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sKTsKPj4+Pj4gICAg IH0KPj4+Pj4gICAgIAo+Pj4+IEhpIFZpbGxlLAo+Pj4+Cj4+Pj4gSSB0aGluayBiYXNlZCBvbiB0 aGUgc3BlYywgd2UgbmVlZHRvIHByb2dyYW0gMHg4MTcwIGFzIDB4eHhDM3h4eHggdG8gYWZmZWN0 IHRoZSBEREkwIHBvd2VyIGRvd24KPj4+PiBhbmQgdGhpcyByZWlnc3RlciB0byBiZSBwcm9ncmFt dGVkIGJlZm9yZURQSU9fUEhZX0NPTlRST0wgPwo+Pj4gRG9oLiBOaWNlIGNhdGNoLiBMb29rcyBs aWtlIHRoZSBkeW5hbWljIHBvd2VyIGRvd24gYml0cyBkZWZhdWx0IHRvIG9mZi4KPj4+IEkgYWxz byBmb3VuZCB0aGUgc2FtZSBiaXQgaW4gQ0wyIERXNiwgd2hpY2ggaXNuJ3QgbWVudGlvbmVkIGJ5 IHRoZSBzcGVjLgo+Pj4gSSdsbCBjb29rIHVwIGEgcGF0Y2ggdG8gZmxpcCB0aGVtIGFuZCBydW4g YSBmZXcgdGVzdHMgdG8gc2VlIGlmIHN0dWZmCj4+PiBzdGlsbCB3b3Jrcy4KPj4gT2sgVGhhbmtz Cj4+IE9uZSBtb3JlIFEuIEkgdGhpbmsgd2UgbmVlZCB0byByZS1wcm9ncmFtIHBoeSBsYW5lcyBw b3dlciBkb3duIG92ZXJyaWRlIC9lbmFibGUgdmFsdWVzIGFmdGVyIHBvd2VyIGdhdGluZy91bmdh dGluZyBQSFkwLzE/Cj4gSSd2ZSB0YWtlbiBhIHN0YWIgYXQgdGhpcywgYW5kIHNhZGx5IGl0cyBt YWtpbmcgdGhpbmdzIHF1aXRlIGEgYml0IG1vcmUKPiBjb21wbGljYXRlZC4gV2hlbmV2ZXIgdGhl IGxhbmUgaXMgcG93ZXIgZ2F0ZWQgd2UgYWxzbyBsb3NlIHRoZSByZWxldmFudAo+IHJlZ2lzdGVy cywgc28gaWYgd2UgcG93ZXIgZ2F0ZSB0aGUgdW51c2VkIGxhbmVzIGJlZm9yZSBwcm9ncmFtbWlu ZyBhbGwKPiB0aGUgUENTL1RYIHJlZ2lzdGVycywgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGNvZGUg c28gdGhhdCBpdCBkb2Vzbid0Cj4gdHJ5IHRvIHByb2dyYW0gdGhlIHJlZ2lzdGVycyBpbiB0aGUg cG93ZXIgZ2F0ZWQgbGFuZXMuCj4KPiBBbHNvIEknbSBub3QgZW50aXJlbHkgc3VyZSBob3cgTFJD IGV0Yy4gd29ya3Mgd2hlbiBzb21lL2FsbCBsYW5lcyBwb3dlcgo+IGdhdGVkLiBUaGVyZSBhcmUg c29tZSBub3RlcyB0aGF0IHNvcnQgb2YgbWFrZSBtZSB0aGluayB0aGUgaHcgaW50ZXJuYWxseQo+ IHBvd2VycyB1cCBldmVyeXRoaW5nIHJlZ2FyZGxlc3Mgb2YgdGhlIGlucHV0IHNpZ25hbHMgdG8g Z3VhcmFudGVlIHRoYXQKPiB0aGluZ3MgYXJlIHByb3Blcmx5IGNhbGlicmF0ZWQsIGJ1dCBpZiB3 ZSBsb3NlIHRoZSByZWdpc3RlcnMgZG9lcyB0aGF0Cj4gbWVhbiB3ZSBsb3NlIHRoZSBjYWxpYnJh dGlvbnJlc3VsdHMgYXMgd2VsbD8KPgo+IEFuZCBvbiB0aGUgb3RoZXIgaGFuZCB0aGVyZSBhcmUg YSBidW5jaCBvZiBvdGhlciBub3RlcyB0aGF0IG1ha2UgbWUgdGhpbmsKPiB0aGV5IGFzc3VtZWQg d2Ugd291bGQgb25seSBwb3dlcmdhdGUgdGhlIHVudXNlZCBsYW5lcyBhZnRlciBsaW5rIHRyYWlu aW5nCj4gaGFzIGZpbmlzaGVkLCB3aGljaCBhZ2FpbiBzdWdnZXN0cyB0aGF0IHdlIHNob3VsZCB0 cmFpbiB0aGUgbGluayB3aXRoIG1heAo+IGxhbmVzIGluaXRpYWxseSBhbmQgZHJvcCB0aGUgdW51 c2VkIGxhbmVzIGFmdGVyd2FyZHMuIEJ1dCB0aGVuIGl0J3Mgbm90Cj4gY2xlYXIgd2hhdCBoYXBw ZW5zIGlmIHdlIG5lZWQgdG8gaW5jcmVhc2UgdGhlIG51bWJlciBvZiBsYW5lcyBhZnRlcndhcmRz Cj4gd2l0aG91dCBkb2luZyBhIGZ1bGwgUEhZIHJlaW5pdC4KPgo+IEkgYWxzbyBoYWQgdGhlIG1h Y2hpbmUgaGFyZCBoYW5nIGlmIEkgZW5hYmxlZCB0aGUgQ0wxIFBTUiBwb3dlciBkb3duIGJpdAo+ IGluIHRoZSBzaW5nbGUgY2hhbm5lbCBQSFksIHdoZXJlYXMgc2V0dGluZyBpdCBpbiB0aGUgZHVh bCBjaGFubmVsIFBIWSBpcwo+IGFwcGFyZW50bHkgT0suCj4KPiBTbyBsb29rcyBsaWtlIHRoaXMg dG9waWMgbmVlZHMgYSBiaXQgbW9yZSBzdHVkeS4KClllcyB2aWxsZS4gSSBhZ3JlZSB3ZSBuZWVk IHNvbWUgbW9yZSBzdHVkeS4gSSB3aWxsIGFsc28gZG8gc29tZQpleHBlcmltZW50cyB0byBmaW5k IHRoZSBIVyBiZWhhdmlvciBpbiBkaWZmZXJlbnQgc2NlbmFyaW8uCgo+Pj4+IFRoYW5rcwo+Pj4+ IERlZXBhawo+Pj4+Cj4+Pj4+ICAgICBzdGF0aWMgYm9vbCBjaHZfcGlwZV9wb3dlcl93ZWxsX2Vu YWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4+PiBAQCAtMTQwMiwx OSArMTQyOSw1MyBAQCBzdGF0aWMgdm9pZCBjaHZfcGh5X2NvbnRyb2xfaW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+Pj4+ICAgICAJICogRElTUExBWV9QSFlfQ09OVFJP TCBjYW4gZ2V0IGNvcnJ1cHRlZCBpZiByZWFkLiBBcyBhCj4+Pj4+ICAgICAJICogd29ya2Fyb3Vu ZCBuZXZlciBldmVyIHJlYWQgRElTUExBWV9QSFlfQ09OVFJPTCwgYW5kCj4+Pj4+ICAgICAJICog aW5zdGVhZCBtYWludGFpbiBhIHNoYWRvdyBjb3B5IG91cnNlbHZlcy4gVXNlIHRoZSBhY3R1YWwK Pj4+Pj4gLQkgKiBwb3dlciB3ZWxsIHN0YXRlIHRvIHJlY29uc3RydWN0IHRoZSBleHBlY3RlZCBp bml0aWFsCj4+Pj4+IC0JICogdmFsdWUuCj4+Pj4+ICsJICogcG93ZXIgd2VsbCBzdGF0ZSBhbmQg bGFuZSBzdGF0dXMgdG8gcmVjb25zdHJ1Y3QgdGhlCj4+Pj4+ICsJICogZXhwZWN0ZWQgaW5pdGlh bCB2YWx1ZS4KPj4+Pj4gICAgIAkgKi8KPj4+Pj4gICAgIAlkZXZfcHJpdi0+Y2h2X3BoeV9jb250 cm9sID0KPj4+Pj4gKwkJUEhZX0NIX1BPV0VSX0RPV05fT1ZSRF9FTihEUElPX1BIWTAsIERQSU9f Q0gwKSB8Cj4+Pj4+ICsJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkRfRU4oRFBJT19QSFkwLCBEUElP X0NIMSkgfAo+Pj4+PiArCQlQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEX0VOKERQSU9fUEhZMSwgRFBJ T19DSDApIHwKPj4+Pj4gICAgIAkJUEhZX0xET19TRVFfREVMQVkoUEhZX0xET19ERUxBWV82MDBO UywgRFBJT19QSFkwKSB8Cj4+Pj4+ICAgICAJCVBIWV9MRE9fU0VRX0RFTEFZKFBIWV9MRE9fREVM QVlfNjAwTlMsIERQSU9fUEhZMSkgfAo+Pj4+PiAgICAgCQlQSFlfQ0hfUE9XRVJfTU9ERShQSFlf Q0hfU1VfUFNSLCBEUElPX1BIWTAsIERQSU9fQ0gwKSB8Cj4+Pj4+ICAgICAJCVBIWV9DSF9QT1dF Ul9NT0RFKFBIWV9DSF9TVV9QU1IsIERQSU9fUEhZMCwgRFBJT19DSDEpIHwKPj4+Pj4gICAgIAkJ UEhZX0NIX1BPV0VSX01PREUoUEhZX0NIX1NVX1BTUiwgRFBJT19QSFkxLCBEUElPX0NIMCk7Cj4+ Pj4+IC0JaWYgKGNtbl9iYy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fYmMpKQo+Pj4+ PiArCj4+Pj4+ICsJaWYgKGNtbl9iYy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fYmMp KSB7Cj4+Pj4+ICsJCXVpbnQzMl90IHN0YXR1cyA9IEk5MTVfUkVBRChEUExMKFBJUEVfQSkpOwo+ Pj4+PiArCQl1bnNpZ25lZCBpbnQgbWFzazsKPj4+Pj4gKwo+Pj4+PiArCQltYXNrID0gc3RhdHVz ICYgRFBMTF9QT1JUQl9SRUFEWV9NQVNLOwo+Pj4+PiArCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250 cm9sIHw9Cj4+Pj4+ICsJCQlQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKG1hc2ssIERQSU9fUEhZMCwg RFBJT19DSDApOwo+Pj4+PiArCQltYXNrID0gKHN0YXR1cyAmIERQTExfUE9SVENfUkVBRFlfTUFT SykgPj4gNDsKPj4+Pj4gKwkJZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8PQo+Pj4+PiArCQkJ UEhZX0NIX1BPV0VSX0RPV05fT1ZSRChtYXNrLCBEUElPX1BIWTAsIERQSU9fQ0gxKTsKPj4+Pj4g Kwo+Pj4+PiAgICAgCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9IFBIWV9DT01fTEFORV9S RVNFVF9ERUFTU0VSVChEUElPX1BIWTApOwo+Pj4+PiAtCWlmIChjbW5fZC0+b3BzLT5pc19lbmFi bGVkKGRldl9wcml2LCBjbW5fZCkpCj4+Pj4+ICsJfSBlbHNlIHsKPj4+Pj4gKwkJZGV2X3ByaXYt PmNodl9waHlfY29udHJvbCB8PQo+Pj4+PiArCQkJUEhZX0NIX1BPV0VSX0RPV05fT1ZSRCgweGYs IERQSU9fUEhZMCwgRFBJT19DSDApIHwKPj4+Pj4gKwkJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkQo MHhmLCBEUElPX1BIWTAsIERQSU9fQ0gxKTsKPj4+Pj4gKwl9Cj4+Pj4+ICsKPj4+Pj4gKwlpZiAo Y21uX2QtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgY21uX2QpKSB7Cj4+Pj4+ICsJCXVpbnQz Ml90IHN0YXR1cyA9IEk5MTVfUkVBRChEUElPX1BIWV9TVEFUVVMpOwo+Pj4+PiArCQl1bnNpZ25l ZCBpbnQgbWFzazsKPj4+Pj4gKwo+Pj4+PiArCQltYXNrID0gc3RhdHVzICYgRFBMTF9QT1JURF9S RUFEWV9NQVNLOwo+Pj4+PiArCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9Cj4+Pj4+ICsJ CQlQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKG1hc2ssIERQSU9fUEhZMSwgRFBJT19DSDApOwo+Pj4+ PiArCj4+Pj4+ICAgICAJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0gUEhZX0NPTV9MQU5F X1JFU0VUX0RFQVNTRVJUKERQSU9fUEhZMSk7Cj4+Pj4+ICsJfSBlbHNlIHsKPj4+Pj4gKwkJZGV2 X3ByaXYtPmNodl9waHlfY29udHJvbCB8PQo+Pj4+PiArCQkJUEhZX0NIX1BPV0VSX0RPV05fT1ZS RCgweGYsIERQSU9fUEhZMSwgRFBJT19DSDApOwo+Pj4+PiArCX0KPj4+Pj4gKwo+Pj4+PiArCURS TV9ERUJVR19LTVMoIkluaXRpYWwgRFBJT19QSFlfQ09OVFJPTD0weCUwOHhcbiIsCj4+Pj4+ICsJ CSAgICAgIGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwo+Pj4+PiAgICAgfQo+Pj4+PiAgICAg Cj4+Pj4+ICAgICBzdGF0aWMgdm9pZCB2bHZfY21ubGFuZV93YShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPj4+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+Pj4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==