From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 6/7] drm/i915: Implement PHY lane power gating for CHV Date: Mon, 11 May 2015 14:43:17 +0300 Message-ID: <20150511114316.GN18908@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 04311899AB for ; Mon, 11 May 2015 04:43:46 -0700 (PDT) Content-Disposition: inline In-Reply-To: <554D9C9F.90409@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Deepak S Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gU2F0LCBNYXkgMDksIDIwMTUgYXQgMTE6MDU6MjdBTSArMDUzMCwgRGVlcGFrIFMgd3JvdGU6 Cj4gCj4gCj4gT24gRnJpZGF5IDA4IE1heSAyMDE1IDA5OjM1IFBNLCBWaWxsZSBTeXJqw6Rsw6Qg d3JvdGU6Cj4gPiBPbiBGcmksIE1heSAwOCwgMjAxNSBhdCAwODoxOToxMlBNICswNTMwLCBEZWVw YWsgUyB3cm90ZToKPiA+Pgo+ID4+IE9uIEZyaWRheSAxMCBBcHJpbCAyMDE1IDA4OjUxIFBNLCB2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbSB3cm90ZToKPiA+Pj4gRnJvbTogVmlsbGUgU3ly asOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+Pj4KPiA+Pj4gUG93ZXJn YXRlIHRoZSBQSFkgbGFuZXMgd2hlbiB0aGV5J3JlIG5vdCBuZWVkZWQuIEZvciBIRE1JIGFsbCBm b3VyIGxhbmVzCj4gPj4+IGFyZSBuZWVkZWQgYWx3YXlzLCBidXQgZm9yIERQIHdlIGNhbiBlbmFi bGUgb25seSB0aGUgbmVlZGVkIGxhbmVzLiBBbmQKPiA+Pj4gd2hlbiB0aGUgcG9ydCBpcyBub3Qg dXNlZCBhbGwgbGFuZXMgY2FuIGJlIHBvd2VyIGdhdGVkLiBUaGlzIGNvdWxkCj4gPj4+IHJlZHVj ZSBwb3dlciBjb25zdW1wdGlvbiBhIGJpdCB3aGVuIG9ubHkgYSBzdWJzZXQgb2YgdGhlIGxhbmVz IGluIHRoZQo+ID4+PiBQSFkgYXJlIHJlcXVpcmVkLgo+ID4+Pgo+ID4+PiBBIGJpdCBvZiBleHRy YSBjYXJlIGlzIG5lZWRlZCB0byByZWNvbnN0cnVjdCB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUK PiA+Pj4gRFBJT19QSFlfQ09OVFJPTCByZWdpc3RlciBzaW5jZSB3ZSBjYW4ndCByZWFkIGl0LiBT byBpbnN0ZWFkIHdlIHJlYWQgdGhlCj4gPj4+IGFjdHVhbCBsYW5lIHN0YXR1cyBmcm9tIHRoZSBE UExML1BIWV9TVEFUVVMgcmVnaXN0ZXJzIGFuZCB1c2UgdGhhdCB0bwo+ID4+PiBkZXRlcm1pbmUg d2hpY2ggbGFuZXMgb3VnaHQgdG8gYmUgcG93ZXJnYXRlZCBpbml0aWFsbHkuCj4gPj4+Cj4gPj4+ IEFsc28gc3ByaW5rbGUgYSBmZXcgZGVidWcgcHJpbnRzIGFyb3VuZCBzbyB0aGF0IHdlIGNhbiBt b25pdG9yIHRoZQo+ID4+PiBEUElPX1BIWV9TVEFUVVMgY2hhbmdlcyB3aXRob3V0IGhhdmluZyB0 byByZWFkIGl0IGFuZCByaXNrIGNvcnJ1cHRpbmcKPiA+Pj4gaXQuCj4gPj4+Cj4gPj4+IFNpZ25l ZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ Cj4gPj4+IC0tLQo+ID4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAg ICAgfCAgMiArCj4gPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAg ICB8ICA4ICsrKysKPiA+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAg ICAgIHwgIDIgKwo+ID4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICAg ICAgfCAgNSArKysKPiA+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9w bS5jIHwgNjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gPj4+ICAgIDUgZmls ZXMgY2hhbmdlZCwgODIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiA+Pj4KPiA+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPj4+IGluZGV4IDk3N2JhZDYuLjM0YzM2NmEgMTAwNjQ0 Cj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4+PiBAQCAtMTg4NywxMCArMTg4Nywx MiBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiA+Pj4gICAgI2RlZmluZSBEUElPX1BI WV9TVEFUVVMJCQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjI0MCkKPiA+Pj4gICAgI2RlZmluZSAg IERQTExfUE9SVERfUkVBRFlfTUFTSwkJKDB4ZikKPiA+Pj4gICAgI2RlZmluZSBESVNQTEFZX1BI WV9DT05UUk9MIChWTFZfRElTUExBWV9CQVNFICsgMHg2MDEwMCkKPiA+Pj4gKyNkZWZpbmUgICBQ SFlfQ0hfUE9XRVJfRE9XTl9PVlJEX0VOKHBoeSwgY2gpCSgxIDw8ICgyKihwaHkpKyhjaCkrMjcp KQo+ID4+PiAgICAjZGVmaW5lICAgUEhZX0xET19ERUxBWV8wTlMJCQkweDAKPiA+Pj4gICAgI2Rl ZmluZSAgIFBIWV9MRE9fREVMQVlfMjAwTlMJCQkweDEKPiA+Pj4gICAgI2RlZmluZSAgIFBIWV9M RE9fREVMQVlfNjAwTlMJCQkweDIKPiA+Pj4gICAgI2RlZmluZSAgIFBIWV9MRE9fU0VRX0RFTEFZ KGRlbGF5LCBwaHkpCQkoKGRlbGF5KSA8PCAoMioocGh5KSsyMykpCj4gPj4+ICsjZGVmaW5lICAg UEhZX0NIX1BPV0VSX0RPV05fT1ZSRChtYXNrLCBwaHksIGNoKQkoKG1hc2spIDw8ICg4KihwaHkp KzQqKGNoKSsxMSkpCj4gPj4+ICAgICNkZWZpbmUgICBQSFlfQ0hfU1VfUFNSCQkJCTB4MQo+ID4+ PiAgICAjZGVmaW5lICAgUEhZX0NIX0RFRVBfUFNSCQkJMHg3Cj4gPj4+ICAgICNkZWZpbmUgICBQ SFlfQ0hfUE9XRVJfTU9ERShtb2RlLCBwaHksIGNoKQkoKG1vZGUpIDw8ICg2KihwaHkpKzMqKGNo KSsyKSkKPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPj4+IGluZGV4IGFjMzhmZDguLjBi NDNmOTkgMTAwNjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK PiA+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4+PiBAQCAtMjMz Niw2ICsyMzM2LDggQEAgc3RhdGljIHZvaWQgY2h2X3Bvc3RfZGlzYWJsZV9kcChzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcikKPiA+Pj4gICAgCj4gPj4+ICAgIAlpbnRlbF9kcF9saW5rX2Rv d24oaW50ZWxfZHApOwo+ID4+PiAgICAKPiA+Pj4gKwljaHZfcG93ZXJnYXRlX3BoeV9sYW5lcyhl bmNvZGVyLCAweGYpOwo+ID4+PiArCj4gPj4+ICAgIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHBp b19sb2NrKTsKPiA+Pj4gICAgCj4gPj4+ICAgIAkvKiBQcm9wYWdhdGUgc29mdCByZXNldCB0byBk YXRhIGxhbmUgcmVzZXQgKi8KPiA+Pj4gQEAgLTI0ODIsNiArMjQ4NCwxMiBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gPj4+ICAg IAlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ID4+PiAgICAJCXZsdl9pbml0X3BhbmVsX3Bvd2Vy X3NlcXVlbmNlcihpbnRlbF9kcCk7Cj4gPj4+ICAgIAo+ID4+PiArCWlmIChJU19DSEVSUllWSUVX KGRldikpIHsKPiA+Pj4gKwkJLyogRklYTUUgZGVhbCB3aXRoIGxhbmUgcmV2ZXJzYWwgKi8KPiA+ Pj4gKwkJbGFuZV9tYXNrID0gMHhmICYgfigoMSA8PCBpbnRlbF9kcC0+bGFuZV9jb3VudCkgLSAx KTsKPiA+Pj4gKwkJY2h2X3Bvd2VyZ2F0ZV9waHlfbGFuZXMoZW5jb2RlciwgbGFuZV9tYXNrKTsK PiA+Pj4gKwl9Cj4gPj4+ICsKPiA+Pj4gICAgCWludGVsX2RwX2VuYWJsZV9wb3J0KGludGVsX2Rw KTsKPiA+Pj4gICAgCj4gPj4+ICAgIAllZHBfcGFuZWxfdmRkX29uKGludGVsX2RwKTsKPiA+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+Pj4gaW5kZXggM2VjODI5YS4uNTRiY2NhOCAxMDA2 NDQKPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+Pj4gQEAgLTEyMzgsNiArMTIz OCw4IEBAIHZvaWQgaW50ZWxfcnVudGltZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKPiA+Pj4gICAgCj4gPj4+ICAgIHZvaWQgaW50ZWxfZGlzcGxheV9zZXRfaW5p dF9wb3dlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2LCBib29sIGVuYWJsZSk7Cj4gPj4+ ICAgIAo+ID4+PiArdm9pZCBjaHZfcG93ZXJnYXRlX3BoeV9sYW5lcyhzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwgdW5zaWduZWQgaW50IG1hc2spOwo+ID4+PiArCj4gPj4+ICAgIC8qIGlu dGVsX3BtLmMgKi8KPiA+Pj4gICAgdm9pZCBpbnRlbF9pbml0X2Nsb2NrX2dhdGluZyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKPiA+Pj4gICAgdm9pZCBpbnRlbF9zdXNwZW5kX2h3KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpOwo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gPj4+IGlu ZGV4IDI0YjBhYTEuLmY1ODQyYzMgMTAwNjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkbWkuYwo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o ZG1pLmMKPiA+Pj4gQEAgLTkxNiw2ICs5MTYsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxl X2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gPj4+ICAgIAkJSTkxNV9XUklU RShpbnRlbF9oZG1pLT5oZG1pX3JlZywgdGVtcCk7Cj4gPj4+ICAgIAkJUE9TVElOR19SRUFEKGlu dGVsX2hkbWktPmhkbWlfcmVnKTsKPiA+Pj4gICAgCX0KPiA+Pj4gKwo+ID4+PiArCWlmIChJU19D SEVSUllWSUVXKGRldikpCj4gPj4+ICsJCWNodl9wb3dlcmdhdGVfcGh5X2xhbmVzKGVuY29kZXIs IDB4Zik7Cj4gPj4+ICAgIH0KPiA+Pj4gICAgCj4gPj4+ICAgIHN0YXRpYyBpbnQgaGRtaV9wb3J0 Y2xvY2tfbGltaXQoc3RydWN0IGludGVsX2hkbWkgKmhkbWksIGJvb2wgcmVzcGVjdF9kdmlfbGlt aXQpCj4gPj4+IEBAIC0xNjM0LDYgKzE2MzcsOCBAQCBzdGF0aWMgdm9pZCBjaHZfaGRtaV9wcmVf ZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ID4+PiAgICAJCQkJICAgaW50 ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfaGRtaV9zaW5rLAo+ID4+PiAgICAJCQkJICAgYWRqdXN0ZWRf bW9kZSk7Cj4gPj4+ICAgIAo+ID4+PiArCWNodl9wb3dlcmdhdGVfcGh5X2xhbmVzKGVuY29kZXIs IDB4MCk7Cj4gPj4+ICsKPiA+Pj4gICAgCWludGVsX2VuYWJsZV9oZG1pKGVuY29kZXIpOwo+ID4+ PiAgICAKPiA+Pj4gICAgCXZsdl93YWl0X3BvcnRfcmVhZHkoZGV2X3ByaXYsIGRwb3J0LCAweDAp Owo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9w bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gPj4+IGluZGV4 IDVjZDhhNTEuLmQ5ZTAwZDMgMTAwNjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3J1bnRpbWVfcG0uYwo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ydW50aW1lX3BtLmMKPiA+Pj4gQEAgLTY2OCw2ICs2NjgsOSBAQCBzdGF0aWMgdm9pZCBjaHZf ZHBpb19jbW5fcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ID4+PiAgICAKPiA+Pj4gICAgCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0gUEhZ X0NPTV9MQU5FX1JFU0VUX0RFQVNTRVJUKHBoeSk7Cj4gPj4+ICAgIAlJOTE1X1dSSVRFKERJU1BM QVlfUEhZX0NPTlRST0wsIGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwo+ID4+PiArCj4gPj4+ ICsJRFJNX0RFQlVHX0tNUygiRW5hYmxlZCBEUElPIFBIWSVkIChEUElPX1BIWV9DT05UUk9MPTB4 JTA4eClcbiIsCj4gPj4+ICsJCSAgICAgIHBoeSwgZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7 Cj4gPj4+ICAgIH0KPiA+Pj4gICAgCj4gPj4+ICAgIHN0YXRpYyB2b2lkIGNodl9kcGlvX2Ntbl9w b3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4+ PiBAQCAtNjgwLDEwICs2ODMsMTUgQEAgc3RhdGljIHZvaWQgY2h2X2RwaW9fY21uX3Bvd2VyX3dl bGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4+ICAgIAo+ ID4+PiAgICAJaWYgKHBvd2VyX3dlbGwtPmRhdGEgPT0gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NN Tl9CQykgewo+ID4+PiAgICAJCXBoeSA9IERQSU9fUEhZMDsKPiA+Pj4gKwkJZGV2X3ByaXYtPmNo dl9waHlfY29udHJvbCB8PQo+ID4+PiArCQkJUEhZX0NIX1BPV0VSX0RPV05fT1ZSRCgweGYsIHBo eSwgRFBJT19DSDApIHwKPiA+Pj4gKwkJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkQoMHhmLCBwaHks IERQSU9fQ0gxKTsKPiA+Pj4gICAgCQlhc3NlcnRfcGxsX2Rpc2FibGVkKGRldl9wcml2LCBQSVBF X0EpOwo+ID4+PiAgICAJCWFzc2VydF9wbGxfZGlzYWJsZWQoZGV2X3ByaXYsIFBJUEVfQik7Cj4g Pj4+ICAgIAl9IGVsc2Ugewo+ID4+PiAgICAJCXBoeSA9IERQSU9fUEhZMTsKPiA+Pj4gKwkJZGV2 X3ByaXYtPmNodl9waHlfY29udHJvbCB8PQo+ID4+PiArCQkJUEhZX0NIX1BPV0VSX0RPV05fT1ZS RCgweGYsIHBoeSwgRFBJT19DSDApOwo+ID4+PiAgICAJCWFzc2VydF9wbGxfZGlzYWJsZWQoZGV2 X3ByaXYsIFBJUEVfQyk7Cj4gPj4+ICAgIAl9Cj4gPj4+ICAgIAo+ID4+PiBAQCAtNjkxLDYgKzY5 OSwyNSBAQCBzdGF0aWMgdm9pZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+Pj4gICAgCUk5MTVfV1JJVEUoRElTUExB WV9QSFlfQ09OVFJPTCwgZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7Cj4gPj4+ICAgIAo+ID4+ PiAgICAJdmx2X3NldF9wb3dlcl93ZWxsKGRldl9wcml2LCBwb3dlcl93ZWxsLCBmYWxzZSk7Cj4g Pj4+ICsKPiA+Pj4gKwlEUk1fREVCVUdfS01TKCJEaXNhYmxlZCBEUElPIFBIWSVkIChEUElPX1BI WV9DT05UUk9MPTB4JTA4eClcbiIsCj4gPj4+ICsJCSAgICAgIHBoeSwgZGV2X3ByaXYtPmNodl9w aHlfY29udHJvbCk7Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4gK3ZvaWQgY2h2X3Bvd2VyZ2F0ZV9w aHlfbGFuZXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIHVuc2lnbmVkIGludCBtYXNr KQo+ID4+PiArewo+ID4+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNl LmRldjsKPiA+Pj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+ID4+PiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50 ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwo+ID4+PiArCWVudW0gZHBpb19waHkgcGh5ID0g RFBJT19QSFkoaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gPj4+ICsJZW51bSBkcGlvX2NoYW5uZWwgY2gg PSB2bHZfZHBvcnRfdG9fY2hhbm5lbChlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpKTsK PiA+Pj4gKwo+ID4+PiArCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgJj0gflBIWV9DSF9QT1dF Ul9ET1dOX09WUkQoMHhmLCBwaHksIGNoKTsKPiA+Pj4gKwlkZXZfcHJpdi0+Y2h2X3BoeV9jb250 cm9sIHw9IFBIWV9DSF9QT1dFUl9ET1dOX09WUkQobWFzaywgcGh5LCBjaCk7Cj4gPj4+ICsJSTkx NV9XUklURShESVNQTEFZX1BIWV9DT05UUk9MLCBkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sKTsK PiA+Pj4gKwo+ID4+PiArCURSTV9ERUJVR19LTVMoIlBvd2VyIGdhdGluZyBEUElPIFBIWSVkIENI JWQgbGFuZXMgMHgleCAoRFBJT19QSFlfQ09OVFJPTD0weCUwOHgpXG4iLAo+ID4+PiArCQkgICAg ICBwaHksIGNoLCBtYXNrLCBkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sKTsKPiA+Pj4gICAgfQo+ ID4+PiAgICAKPiA+PiBIaSBWaWxsZSwKPiA+Pgo+ID4+IEkgdGhpbmsgYmFzZWQgb24gdGhlIHNw ZWMsIHdlIG5lZWR0byBwcm9ncmFtIDB4ODE3MCBhcyAweHh4QzN4eHh4IHRvIGFmZmVjdCB0aGUg RERJMCBwb3dlciBkb3duCj4gPj4gYW5kIHRoaXMgcmVpZ3N0ZXIgdG8gYmUgcHJvZ3JhbXRlZCBi ZWZvcmVEUElPX1BIWV9DT05UUk9MID8KPiA+IERvaC4gTmljZSBjYXRjaC4gTG9va3MgbGlrZSB0 aGUgZHluYW1pYyBwb3dlciBkb3duIGJpdHMgZGVmYXVsdCB0byBvZmYuCj4gPiBJIGFsc28gZm91 bmQgdGhlIHNhbWUgYml0IGluIENMMiBEVzYsIHdoaWNoIGlzbid0IG1lbnRpb25lZCBieSB0aGUg c3BlYy4KPiA+IEknbGwgY29vayB1cCBhIHBhdGNoIHRvIGZsaXAgdGhlbSBhbmQgcnVuIGEgZmV3 IHRlc3RzIHRvIHNlZSBpZiBzdHVmZgo+ID4gc3RpbGwgd29ya3MuCj4gCj4gT2sgVGhhbmtzCj4g T25lIG1vcmUgUS4gSSB0aGluayB3ZSBuZWVkIHRvIHJlLXByb2dyYW0gcGh5IGxhbmVzIHBvd2Vy IGRvd24gb3ZlcnJpZGUgL2VuYWJsZSB2YWx1ZXMgYWZ0ZXIgcG93ZXIgZ2F0aW5nL3VuZ2F0aW5n IFBIWTAvMT8KCkkndmUgdGFrZW4gYSBzdGFiIGF0IHRoaXMsIGFuZCBzYWRseSBpdHMgbWFraW5n IHRoaW5ncyBxdWl0ZSBhIGJpdCBtb3JlCmNvbXBsaWNhdGVkLiBXaGVuZXZlciB0aGUgbGFuZSBp cyBwb3dlciBnYXRlZCB3ZSBhbHNvIGxvc2UgdGhlIHJlbGV2YW50CnJlZ2lzdGVycywgc28gaWYg d2UgcG93ZXIgZ2F0ZSB0aGUgdW51c2VkIGxhbmVzIGJlZm9yZSBwcm9ncmFtbWluZyBhbGwKdGhl IFBDUy9UWCByZWdpc3RlcnMsIHdlIG5lZWQgdG8gY2hhbmdlIHRoZSBjb2RlIHNvIHRoYXQgaXQg ZG9lc24ndAp0cnkgdG8gcHJvZ3JhbSB0aGUgcmVnaXN0ZXJzIGluIHRoZSBwb3dlciBnYXRlZCBs YW5lcy4KCkFsc28gSSdtIG5vdCBlbnRpcmVseSBzdXJlIGhvdyBMUkMgZXRjLiB3b3JrcyB3aGVu IHNvbWUvYWxsIGxhbmVzIHBvd2VyCmdhdGVkLiBUaGVyZSBhcmUgc29tZSBub3RlcyB0aGF0IHNv cnQgb2YgbWFrZSBtZSB0aGluayB0aGUgaHcgaW50ZXJuYWxseQpwb3dlcnMgdXAgZXZlcnl0aGlu ZyByZWdhcmRsZXNzIG9mIHRoZSBpbnB1dCBzaWduYWxzIHRvIGd1YXJhbnRlZSB0aGF0CnRoaW5n cyBhcmUgcHJvcGVybHkgY2FsaWJyYXRlZCwgYnV0IGlmIHdlIGxvc2UgdGhlIHJlZ2lzdGVycyBk b2VzIHRoYXQKbWVhbiB3ZSBsb3NlIHRoZSBjYWxpYnJhdGlvbnJlc3VsdHMgYXMgd2VsbD8KCkFu ZCBvbiB0aGUgb3RoZXIgaGFuZCB0aGVyZSBhcmUgYSBidW5jaCBvZiBvdGhlciBub3RlcyB0aGF0 IG1ha2UgbWUgdGhpbmsKdGhleSBhc3N1bWVkIHdlIHdvdWxkIG9ubHkgcG93ZXJnYXRlIHRoZSB1 bnVzZWQgbGFuZXMgYWZ0ZXIgbGluayB0cmFpbmluZwpoYXMgZmluaXNoZWQsIHdoaWNoIGFnYWlu IHN1Z2dlc3RzIHRoYXQgd2Ugc2hvdWxkIHRyYWluIHRoZSBsaW5rIHdpdGggbWF4CmxhbmVzIGlu aXRpYWxseSBhbmQgZHJvcCB0aGUgdW51c2VkIGxhbmVzIGFmdGVyd2FyZHMuIEJ1dCB0aGVuIGl0 J3Mgbm90CmNsZWFyIHdoYXQgaGFwcGVucyBpZiB3ZSBuZWVkIHRvIGluY3JlYXNlIHRoZSBudW1i ZXIgb2YgbGFuZXMgYWZ0ZXJ3YXJkcwp3aXRob3V0IGRvaW5nIGEgZnVsbCBQSFkgcmVpbml0LgoK SSBhbHNvIGhhZCB0aGUgbWFjaGluZSBoYXJkIGhhbmcgaWYgSSBlbmFibGVkIHRoZSBDTDEgUFNS IHBvd2VyIGRvd24gYml0CmluIHRoZSBzaW5nbGUgY2hhbm5lbCBQSFksIHdoZXJlYXMgc2V0dGlu ZyBpdCBpbiB0aGUgZHVhbCBjaGFubmVsIFBIWSBpcwphcHBhcmVudGx5IE9LLgoKU28gbG9va3Mg bGlrZSB0aGlzIHRvcGljIG5lZWRzIGEgYml0IG1vcmUgc3R1ZHkuCgo+IAo+ID4KPiA+PiBUaGFu a3MKPiA+PiBEZWVwYWsKPiA+Pgo+ID4+PiAgICBzdGF0aWMgYm9vbCBjaHZfcGlwZV9wb3dlcl93 ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4+PiBAQCAt MTQwMiwxOSArMTQyOSw1MyBAQCBzdGF0aWMgdm9pZCBjaHZfcGh5X2NvbnRyb2xfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPj4+ICAgIAkgKiBESVNQTEFZX1BIWV9D T05UUk9MIGNhbiBnZXQgY29ycnVwdGVkIGlmIHJlYWQuIEFzIGEKPiA+Pj4gICAgCSAqIHdvcmth cm91bmQgbmV2ZXIgZXZlciByZWFkIERJU1BMQVlfUEhZX0NPTlRST0wsIGFuZAo+ID4+PiAgICAJ ICogaW5zdGVhZCBtYWludGFpbiBhIHNoYWRvdyBjb3B5IG91cnNlbHZlcy4gVXNlIHRoZSBhY3R1 YWwKPiA+Pj4gLQkgKiBwb3dlciB3ZWxsIHN0YXRlIHRvIHJlY29uc3RydWN0IHRoZSBleHBlY3Rl ZCBpbml0aWFsCj4gPj4+IC0JICogdmFsdWUuCj4gPj4+ICsJICogcG93ZXIgd2VsbCBzdGF0ZSBh bmQgbGFuZSBzdGF0dXMgdG8gcmVjb25zdHJ1Y3QgdGhlCj4gPj4+ICsJICogZXhwZWN0ZWQgaW5p dGlhbCB2YWx1ZS4KPiA+Pj4gICAgCSAqLwo+ID4+PiAgICAJZGV2X3ByaXYtPmNodl9waHlfY29u dHJvbCA9Cj4gPj4+ICsJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkRfRU4oRFBJT19QSFkwLCBEUElP X0NIMCkgfAo+ID4+PiArCQlQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEX0VOKERQSU9fUEhZMCwgRFBJ T19DSDEpIHwKPiA+Pj4gKwkJUEhZX0NIX1BPV0VSX0RPV05fT1ZSRF9FTihEUElPX1BIWTEsIERQ SU9fQ0gwKSB8Cj4gPj4+ICAgIAkJUEhZX0xET19TRVFfREVMQVkoUEhZX0xET19ERUxBWV82MDBO UywgRFBJT19QSFkwKSB8Cj4gPj4+ICAgIAkJUEhZX0xET19TRVFfREVMQVkoUEhZX0xET19ERUxB WV82MDBOUywgRFBJT19QSFkxKSB8Cj4gPj4+ICAgIAkJUEhZX0NIX1BPV0VSX01PREUoUEhZX0NI X1NVX1BTUiwgRFBJT19QSFkwLCBEUElPX0NIMCkgfAo+ID4+PiAgICAJCVBIWV9DSF9QT1dFUl9N T0RFKFBIWV9DSF9TVV9QU1IsIERQSU9fUEhZMCwgRFBJT19DSDEpIHwKPiA+Pj4gICAgCQlQSFlf Q0hfUE9XRVJfTU9ERShQSFlfQ0hfU1VfUFNSLCBEUElPX1BIWTEsIERQSU9fQ0gwKTsKPiA+Pj4g LQlpZiAoY21uX2JjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9iYykpCj4gPj4+ICsK PiA+Pj4gKwlpZiAoY21uX2JjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9iYykpIHsK PiA+Pj4gKwkJdWludDMyX3Qgc3RhdHVzID0gSTkxNV9SRUFEKERQTEwoUElQRV9BKSk7Cj4gPj4+ ICsJCXVuc2lnbmVkIGludCBtYXNrOwo+ID4+PiArCj4gPj4+ICsJCW1hc2sgPSBzdGF0dXMgJiBE UExMX1BPUlRCX1JFQURZX01BU0s7Cj4gPj4+ICsJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wg fD0KPiA+Pj4gKwkJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkQobWFzaywgRFBJT19QSFkwLCBEUElP X0NIMCk7Cj4gPj4+ICsJCW1hc2sgPSAoc3RhdHVzICYgRFBMTF9QT1JUQ19SRUFEWV9NQVNLKSA+ PiA0Owo+ID4+PiArCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9Cj4gPj4+ICsJCQlQSFlf Q0hfUE9XRVJfRE9XTl9PVlJEKG1hc2ssIERQSU9fUEhZMCwgRFBJT19DSDEpOwo+ID4+PiArCj4g Pj4+ICAgIAkJZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8PSBQSFlfQ09NX0xBTkVfUkVTRVRf REVBU1NFUlQoRFBJT19QSFkwKTsKPiA+Pj4gLQlpZiAoY21uX2QtPm9wcy0+aXNfZW5hYmxlZChk ZXZfcHJpdiwgY21uX2QpKQo+ID4+PiArCX0gZWxzZSB7Cj4gPj4+ICsJCWRldl9wcml2LT5jaHZf cGh5X2NvbnRyb2wgfD0KPiA+Pj4gKwkJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkQoMHhmLCBEUElP X1BIWTAsIERQSU9fQ0gwKSB8Cj4gPj4+ICsJCQlQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKDB4Ziwg RFBJT19QSFkwLCBEUElPX0NIMSk7Cj4gPj4+ICsJfQo+ID4+PiArCj4gPj4+ICsJaWYgKGNtbl9k LT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9kKSkgewo+ID4+PiArCQl1aW50MzJfdCBz dGF0dXMgPSBJOTE1X1JFQUQoRFBJT19QSFlfU1RBVFVTKTsKPiA+Pj4gKwkJdW5zaWduZWQgaW50 IG1hc2s7Cj4gPj4+ICsKPiA+Pj4gKwkJbWFzayA9IHN0YXR1cyAmIERQTExfUE9SVERfUkVBRFlf TUFTSzsKPiA+Pj4gKwkJZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8PQo+ID4+PiArCQkJUEhZ X0NIX1BPV0VSX0RPV05fT1ZSRChtYXNrLCBEUElPX1BIWTEsIERQSU9fQ0gwKTsKPiA+Pj4gKwo+ ID4+PiAgICAJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0gUEhZX0NPTV9MQU5FX1JFU0VU X0RFQVNTRVJUKERQSU9fUEhZMSk7Cj4gPj4+ICsJfSBlbHNlIHsKPiA+Pj4gKwkJZGV2X3ByaXYt PmNodl9waHlfY29udHJvbCB8PQo+ID4+PiArCQkJUEhZX0NIX1BPV0VSX0RPV05fT1ZSRCgweGYs IERQSU9fUEhZMSwgRFBJT19DSDApOwo+ID4+PiArCX0KPiA+Pj4gKwo+ID4+PiArCURSTV9ERUJV R19LTVMoIkluaXRpYWwgRFBJT19QSFlfQ09OVFJPTD0weCUwOHhcbiIsCj4gPj4+ICsJCSAgICAg IGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwo+ID4+PiAgICB9Cj4gPj4+ICAgIAo+ID4+PiAg ICBzdGF0aWMgdm9pZCB2bHZfY21ubGFuZV93YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiA+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwo+ID4+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngKPiA+CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=