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: Fri, 8 May 2015 19:05:32 +0300 Message-ID: <20150508160532.GG18908@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 34A036E090 for ; Fri, 8 May 2015 09:05:51 -0700 (PDT) Content-Disposition: inline In-Reply-To: <554CCCE8.1030302@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 T24gRnJpLCBNYXkgMDgsIDIwMTUgYXQgMDg6MTk6MTJQTSArMDUzMCwgRGVlcGFrIFMgd3JvdGU6 Cj4gCj4gCj4gT24gRnJpZGF5IDEwIEFwcmlsIDIwMTUgMDg6NTEgUE0sIHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tIHdyb3RlOgo+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+Cj4gPiBQb3dlcmdhdGUgdGhlIFBIWSBsYW5lcyB3 aGVuIHRoZXkncmUgbm90IG5lZWRlZC4gRm9yIEhETUkgYWxsIGZvdXIgbGFuZXMKPiA+IGFyZSBu ZWVkZWQgYWx3YXlzLCBidXQgZm9yIERQIHdlIGNhbiBlbmFibGUgb25seSB0aGUgbmVlZGVkIGxh bmVzLiBBbmQKPiA+IHdoZW4gdGhlIHBvcnQgaXMgbm90IHVzZWQgYWxsIGxhbmVzIGNhbiBiZSBw b3dlciBnYXRlZC4gVGhpcyBjb3VsZAo+ID4gcmVkdWNlIHBvd2VyIGNvbnN1bXB0aW9uIGEgYml0 IHdoZW4gb25seSBhIHN1YnNldCBvZiB0aGUgbGFuZXMgaW4gdGhlCj4gPiBQSFkgYXJlIHJlcXVp cmVkLgo+ID4KPiA+IEEgYml0IG9mIGV4dHJhIGNhcmUgaXMgbmVlZGVkIHRvIHJlY29uc3RydWN0 IHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZQo+ID4gRFBJT19QSFlfQ09OVFJPTCByZWdpc3RlciBz aW5jZSB3ZSBjYW4ndCByZWFkIGl0LiBTbyBpbnN0ZWFkIHdlIHJlYWQgdGhlCj4gPiBhY3R1YWwg bGFuZSBzdGF0dXMgZnJvbSB0aGUgRFBMTC9QSFlfU1RBVFVTIHJlZ2lzdGVycyBhbmQgdXNlIHRo YXQgdG8KPiA+IGRldGVybWluZSB3aGljaCBsYW5lcyBvdWdodCB0byBiZSBwb3dlcmdhdGVkIGlu aXRpYWxseS4KPiA+Cj4gPiBBbHNvIHNwcmlua2xlIGEgZmV3IGRlYnVnIHByaW50cyBhcm91bmQg c28gdGhhdCB3ZSBjYW4gbW9uaXRvciB0aGUKPiA+IERQSU9fUEhZX1NUQVRVUyBjaGFuZ2VzIHdp dGhvdXQgaGF2aW5nIHRvIHJlYWQgaXQgYW5kIHJpc2sgY29ycnVwdGluZwo+ID4gaXQuCj4gPgo+ ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbT4KPiA+IC0tLQo+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAg ICAgICAgfCAgMiArCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAg ICB8ICA4ICsrKysKPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAg IHwgIDIgKwo+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICAgICAgfCAg NSArKysKPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIHwgNjkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gPiAgIDUgZmlsZXMgY2hhbmdlZCwg ODIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmgKPiA+IGluZGV4IDk3N2JhZDYuLjM0YzM2NmEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oCj4gPiBAQCAtMTg4NywxMCArMTg4NywxMiBAQCBlbnVtIHNrbF9kaXNwX3Bvd2Vy X3dlbGxzIHsKPiA+ICAgI2RlZmluZSBEUElPX1BIWV9TVEFUVVMJCQkoVkxWX0RJU1BMQVlfQkFT RSArIDB4NjI0MCkKPiA+ICAgI2RlZmluZSAgIERQTExfUE9SVERfUkVBRFlfTUFTSwkJKDB4ZikK PiA+ICAgI2RlZmluZSBESVNQTEFZX1BIWV9DT05UUk9MIChWTFZfRElTUExBWV9CQVNFICsgMHg2 MDEwMCkKPiA+ICsjZGVmaW5lICAgUEhZX0NIX1BPV0VSX0RPV05fT1ZSRF9FTihwaHksIGNoKQko MSA8PCAoMioocGh5KSsoY2gpKzI3KSkKPiA+ICAgI2RlZmluZSAgIFBIWV9MRE9fREVMQVlfME5T CQkJMHgwCj4gPiAgICNkZWZpbmUgICBQSFlfTERPX0RFTEFZXzIwME5TCQkJMHgxCj4gPiAgICNk ZWZpbmUgICBQSFlfTERPX0RFTEFZXzYwME5TCQkJMHgyCj4gPiAgICNkZWZpbmUgICBQSFlfTERP X1NFUV9ERUxBWShkZWxheSwgcGh5KQkJKChkZWxheSkgPDwgKDIqKHBoeSkrMjMpKQo+ID4gKyNk ZWZpbmUgICBQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKG1hc2ssIHBoeSwgY2gpCSgobWFzaykgPDwg KDgqKHBoeSkrNCooY2gpKzExKSkKPiA+ICAgI2RlZmluZSAgIFBIWV9DSF9TVV9QU1IJCQkJMHgx Cj4gPiAgICNkZWZpbmUgICBQSFlfQ0hfREVFUF9QU1IJCQkweDcKPiA+ICAgI2RlZmluZSAgIFBI WV9DSF9QT1dFUl9NT0RFKG1vZGUsIHBoeSwgY2gpCSgobW9kZSkgPDwgKDYqKHBoeSkrMyooY2gp KzIpKQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBpbmRleCBhYzM4ZmQ4Li4wYjQzZjk5 IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gQEAgLTIzMzYsNiArMjMzNiw4 IEBAIHN0YXRpYyB2b2lkIGNodl9wb3N0X2Rpc2FibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIpCj4gPiAgIAo+ID4gICAJaW50ZWxfZHBfbGlua19kb3duKGludGVsX2RwKTsKPiA+ ICAgCj4gPiArCWNodl9wb3dlcmdhdGVfcGh5X2xhbmVzKGVuY29kZXIsIDB4Zik7Cj4gPiArCj4g PiAgIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHBpb19sb2NrKTsKPiA+ICAgCj4gPiAgIAkvKiBQ cm9wYWdhdGUgc29mdCByZXNldCB0byBkYXRhIGxhbmUgcmVzZXQgKi8KPiA+IEBAIC0yNDgyLDYg KzI0ODQsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyKQo+ID4gICAJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPiA+ICAgCQl2bHZf aW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXIoaW50ZWxfZHApOwo+ID4gICAKPiA+ICsJaWYgKElT X0NIRVJSWVZJRVcoZGV2KSkgewo+ID4gKwkJLyogRklYTUUgZGVhbCB3aXRoIGxhbmUgcmV2ZXJz YWwgKi8KPiA+ICsJCWxhbmVfbWFzayA9IDB4ZiAmIH4oKDEgPDwgaW50ZWxfZHAtPmxhbmVfY291 bnQpIC0gMSk7Cj4gPiArCQljaHZfcG93ZXJnYXRlX3BoeV9sYW5lcyhlbmNvZGVyLCBsYW5lX21h c2spOwo+ID4gKwl9Cj4gPiArCj4gPiAgIAlpbnRlbF9kcF9lbmFibGVfcG9ydChpbnRlbF9kcCk7 Cj4gPiAgIAo+ID4gICAJZWRwX3BhbmVsX3ZkZF9vbihpbnRlbF9kcCk7Cj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+ID4gaW5kZXggM2VjODI5YS4uNTRiY2NhOCAxMDA2NDQKPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTEyMzgsNiArMTIzOCw4IEBAIHZvaWQgaW50ZWxf cnVudGltZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ICAg Cj4gPiAgIHZvaWQgaW50ZWxfZGlzcGxheV9zZXRfaW5pdF9wb3dlcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2LCBib29sIGVuYWJsZSk7Cj4gPiAgIAo+ID4gK3ZvaWQgY2h2X3Bvd2VyZ2F0 ZV9waHlfbGFuZXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIHVuc2lnbmVkIGludCBt YXNrKTsKPiA+ICsKPiA+ICAgLyogaW50ZWxfcG0uYyAqLwo+ID4gICB2b2lkIGludGVsX2luaXRf Y2xvY2tfZ2F0aW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gICB2b2lkIGludGVsX3N1 c3BlbmRfaHcoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aGRtaS5jCj4gPiBpbmRleCAyNGIwYWExLi5mNTg0MmMzIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9oZG1pLmMKPiA+IEBAIC05MTYsNiArOTE2LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZGlzYWJsZV9oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ID4gICAJCUk5MTVf V1JJVEUoaW50ZWxfaGRtaS0+aGRtaV9yZWcsIHRlbXApOwo+ID4gICAJCVBPU1RJTkdfUkVBRChp bnRlbF9oZG1pLT5oZG1pX3JlZyk7Cj4gPiAgIAl9Cj4gPiArCj4gPiArCWlmIChJU19DSEVSUllW SUVXKGRldikpCj4gPiArCQljaHZfcG93ZXJnYXRlX3BoeV9sYW5lcyhlbmNvZGVyLCAweGYpOwo+ ID4gICB9Cj4gPiAgIAo+ID4gICBzdGF0aWMgaW50IGhkbWlfcG9ydGNsb2NrX2xpbWl0KHN0cnVj dCBpbnRlbF9oZG1pICpoZG1pLCBib29sIHJlc3BlY3RfZHZpX2xpbWl0KQo+ID4gQEAgLTE2MzQs NiArMTYzNyw4IEBAIHN0YXRpYyB2b2lkIGNodl9oZG1pX3ByZV9lbmFibGUoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIpCj4gPiAgIAkJCQkgICBpbnRlbF9jcnRjLT5jb25maWctPmhhc19o ZG1pX3NpbmssCj4gPiAgIAkJCQkgICBhZGp1c3RlZF9tb2RlKTsKPiA+ICAgCj4gPiArCWNodl9w b3dlcmdhdGVfcGh5X2xhbmVzKGVuY29kZXIsIDB4MCk7Cj4gPiArCj4gPiAgIAlpbnRlbF9lbmFi bGVfaGRtaShlbmNvZGVyKTsKPiA+ICAgCj4gPiAgIAl2bHZfd2FpdF9wb3J0X3JlYWR5KGRldl9w cml2LCBkcG9ydCwgMHgwKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3Bt LmMKPiA+IGluZGV4IDVjZDhhNTEuLmQ5ZTAwZDMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ID4gQEAgLTY2OCw2ICs2NjgsOSBAQCBzdGF0aWMgdm9p ZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ID4gICAKPiA+ICAgCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0gUEhZ X0NPTV9MQU5FX1JFU0VUX0RFQVNTRVJUKHBoeSk7Cj4gPiAgIAlJOTE1X1dSSVRFKERJU1BMQVlf UEhZX0NPTlRST0wsIGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwo+ID4gKwo+ID4gKwlEUk1f REVCVUdfS01TKCJFbmFibGVkIERQSU8gUEhZJWQgKERQSU9fUEhZX0NPTlRST0w9MHglMDh4KVxu IiwKPiA+ICsJCSAgICAgIHBoeSwgZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7Cj4gPiAgIH0K PiA+ICAgCj4gPiAgIHN0YXRpYyB2b2lkIGNodl9kcGlvX2Ntbl9wb3dlcl93ZWxsX2Rpc2FibGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gQEAgLTY4MCwxMCArNjgzLDE1 IEBAIHN0YXRpYyB2b2lkIGNodl9kcGlvX2Ntbl9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gICAKPiA+ICAgCWlmIChwb3dlcl93ZWxsLT5k YXRhID09IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMpIHsKPiA+ICAgCQlwaHkgPSBEUElP X1BIWTA7Cj4gPiArCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9Cj4gPiArCQkJUEhZX0NI X1BPV0VSX0RPV05fT1ZSRCgweGYsIHBoeSwgRFBJT19DSDApIHwKPiA+ICsJCQlQSFlfQ0hfUE9X RVJfRE9XTl9PVlJEKDB4ZiwgcGh5LCBEUElPX0NIMSk7Cj4gPiAgIAkJYXNzZXJ0X3BsbF9kaXNh YmxlZChkZXZfcHJpdiwgUElQRV9BKTsKPiA+ICAgCQlhc3NlcnRfcGxsX2Rpc2FibGVkKGRldl9w cml2LCBQSVBFX0IpOwo+ID4gICAJfSBlbHNlIHsKPiA+ICAgCQlwaHkgPSBEUElPX1BIWTE7Cj4g PiArCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9Cj4gPiArCQkJUEhZX0NIX1BPV0VSX0RP V05fT1ZSRCgweGYsIHBoeSwgRFBJT19DSDApOwo+ID4gICAJCWFzc2VydF9wbGxfZGlzYWJsZWQo ZGV2X3ByaXYsIFBJUEVfQyk7Cj4gPiAgIAl9Cj4gPiAgIAo+ID4gQEAgLTY5MSw2ICs2OTksMjUg QEAgc3RhdGljIHZvaWQgY2h2X2RwaW9fY21uX3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgIAlJOTE1X1dSSVRFKERJU1BMQVlfUEhZX0NP TlRST0wsIGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwo+ID4gICAKPiA+ICAgCXZsdl9zZXRf cG93ZXJfd2VsbChkZXZfcHJpdiwgcG93ZXJfd2VsbCwgZmFsc2UpOwo+ID4gKwo+ID4gKwlEUk1f REVCVUdfS01TKCJEaXNhYmxlZCBEUElPIFBIWSVkIChEUElPX1BIWV9DT05UUk9MPTB4JTA4eClc biIsCj4gPiArCQkgICAgICBwaHksIGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwo+ID4gK30K PiA+ICsKPiA+ICt2b2lkIGNodl9wb3dlcmdhdGVfcGh5X2xhbmVzKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLCB1bnNpZ25lZCBpbnQgbWFzaykKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICsJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7Cj4gPiAr CWVudW0gZHBpb19waHkgcGh5ID0gRFBJT19QSFkoaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gPiArCWVu dW0gZHBpb19jaGFubmVsIGNoID0gdmx2X2Rwb3J0X3RvX2NoYW5uZWwoZW5jX3RvX2RpZ19wb3J0 KCZlbmNvZGVyLT5iYXNlKSk7Cj4gPiArCj4gPiArCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wg Jj0gflBIWV9DSF9QT1dFUl9ET1dOX09WUkQoMHhmLCBwaHksIGNoKTsKPiA+ICsJZGV2X3ByaXYt PmNodl9waHlfY29udHJvbCB8PSBQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKG1hc2ssIHBoeSwgY2gp Owo+ID4gKwlJOTE1X1dSSVRFKERJU1BMQVlfUEhZX0NPTlRST0wsIGRldl9wcml2LT5jaHZfcGh5 X2NvbnRyb2wpOwo+ID4gKwo+ID4gKwlEUk1fREVCVUdfS01TKCJQb3dlciBnYXRpbmcgRFBJTyBQ SFklZCBDSCVkIGxhbmVzIDB4JXggKERQSU9fUEhZX0NPTlRST0w9MHglMDh4KVxuIiwKPiA+ICsJ CSAgICAgIHBoeSwgY2gsIG1hc2ssIGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwo+ID4gICB9 Cj4gPiAgIAo+IAo+IEhpIFZpbGxlLAo+IAo+IEkgdGhpbmsgYmFzZWQgb24gdGhlIHNwZWMsIHdl IG5lZWR0byBwcm9ncmFtIDB4ODE3MCBhcyAweHh4QzN4eHh4IHRvIGFmZmVjdCB0aGUgRERJMCBw b3dlciBkb3duCj4gYW5kIHRoaXMgcmVpZ3N0ZXIgdG8gYmUgcHJvZ3JhbXRlZCBiZWZvcmVEUElP X1BIWV9DT05UUk9MID8KCkRvaC4gTmljZSBjYXRjaC4gTG9va3MgbGlrZSB0aGUgZHluYW1pYyBw b3dlciBkb3duIGJpdHMgZGVmYXVsdCB0byBvZmYuCkkgYWxzbyBmb3VuZCB0aGUgc2FtZSBiaXQg aW4gQ0wyIERXNiwgd2hpY2ggaXNuJ3QgbWVudGlvbmVkIGJ5IHRoZSBzcGVjLgpJJ2xsIGNvb2sg dXAgYSBwYXRjaCB0byBmbGlwIHRoZW0gYW5kIHJ1biBhIGZldyB0ZXN0cyB0byBzZWUgaWYgc3R1 ZmYKc3RpbGwgd29ya3MuCgo+IAo+IFRoYW5rcwo+IERlZXBhawo+IAo+ID4gICBzdGF0aWMgYm9v bCBjaHZfcGlwZV9wb3dlcl93ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ID4gQEAgLTE0MDIsMTkgKzE0MjksNTMgQEAgc3RhdGljIHZvaWQgY2h2X3BoeV9j b250cm9sX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gICAJICog RElTUExBWV9QSFlfQ09OVFJPTCBjYW4gZ2V0IGNvcnJ1cHRlZCBpZiByZWFkLiBBcyBhCj4gPiAg IAkgKiB3b3JrYXJvdW5kIG5ldmVyIGV2ZXIgcmVhZCBESVNQTEFZX1BIWV9DT05UUk9MLCBhbmQK PiA+ICAgCSAqIGluc3RlYWQgbWFpbnRhaW4gYSBzaGFkb3cgY29weSBvdXJzZWx2ZXMuIFVzZSB0 aGUgYWN0dWFsCj4gPiAtCSAqIHBvd2VyIHdlbGwgc3RhdGUgdG8gcmVjb25zdHJ1Y3QgdGhlIGV4 cGVjdGVkIGluaXRpYWwKPiA+IC0JICogdmFsdWUuCj4gPiArCSAqIHBvd2VyIHdlbGwgc3RhdGUg YW5kIGxhbmUgc3RhdHVzIHRvIHJlY29uc3RydWN0IHRoZQo+ID4gKwkgKiBleHBlY3RlZCBpbml0 aWFsIHZhbHVlLgo+ID4gICAJICovCj4gPiAgIAlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sID0K PiA+ICsJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkRfRU4oRFBJT19QSFkwLCBEUElPX0NIMCkgfAo+ ID4gKwkJUEhZX0NIX1BPV0VSX0RPV05fT1ZSRF9FTihEUElPX1BIWTAsIERQSU9fQ0gxKSB8Cj4g PiArCQlQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEX0VOKERQSU9fUEhZMSwgRFBJT19DSDApIHwKPiA+ ICAgCQlQSFlfTERPX1NFUV9ERUxBWShQSFlfTERPX0RFTEFZXzYwME5TLCBEUElPX1BIWTApIHwK PiA+ICAgCQlQSFlfTERPX1NFUV9ERUxBWShQSFlfTERPX0RFTEFZXzYwME5TLCBEUElPX1BIWTEp IHwKPiA+ICAgCQlQSFlfQ0hfUE9XRVJfTU9ERShQSFlfQ0hfU1VfUFNSLCBEUElPX1BIWTAsIERQ SU9fQ0gwKSB8Cj4gPiAgIAkJUEhZX0NIX1BPV0VSX01PREUoUEhZX0NIX1NVX1BTUiwgRFBJT19Q SFkwLCBEUElPX0NIMSkgfAo+ID4gICAJCVBIWV9DSF9QT1dFUl9NT0RFKFBIWV9DSF9TVV9QU1Is IERQSU9fUEhZMSwgRFBJT19DSDApOwo+ID4gLQlpZiAoY21uX2JjLT5vcHMtPmlzX2VuYWJsZWQo ZGV2X3ByaXYsIGNtbl9iYykpCj4gPiArCj4gPiArCWlmIChjbW5fYmMtPm9wcy0+aXNfZW5hYmxl ZChkZXZfcHJpdiwgY21uX2JjKSkgewo+ID4gKwkJdWludDMyX3Qgc3RhdHVzID0gSTkxNV9SRUFE KERQTEwoUElQRV9BKSk7Cj4gPiArCQl1bnNpZ25lZCBpbnQgbWFzazsKPiA+ICsKPiA+ICsJCW1h c2sgPSBzdGF0dXMgJiBEUExMX1BPUlRCX1JFQURZX01BU0s7Cj4gPiArCQlkZXZfcHJpdi0+Y2h2 X3BoeV9jb250cm9sIHw9Cj4gPiArCQkJUEhZX0NIX1BPV0VSX0RPV05fT1ZSRChtYXNrLCBEUElP X1BIWTAsIERQSU9fQ0gwKTsKPiA+ICsJCW1hc2sgPSAoc3RhdHVzICYgRFBMTF9QT1JUQ19SRUFE WV9NQVNLKSA+PiA0Owo+ID4gKwkJZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8PQo+ID4gKwkJ CVBIWV9DSF9QT1dFUl9ET1dOX09WUkQobWFzaywgRFBJT19QSFkwLCBEUElPX0NIMSk7Cj4gPiAr Cj4gPiAgIAkJZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8PSBQSFlfQ09NX0xBTkVfUkVTRVRf REVBU1NFUlQoRFBJT19QSFkwKTsKPiA+IC0JaWYgKGNtbl9kLT5vcHMtPmlzX2VuYWJsZWQoZGV2 X3ByaXYsIGNtbl9kKSkKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCWRldl9wcml2LT5jaHZfcGh5X2Nv bnRyb2wgfD0KPiA+ICsJCQlQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKDB4ZiwgRFBJT19QSFkwLCBE UElPX0NIMCkgfAo+ID4gKwkJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkQoMHhmLCBEUElPX1BIWTAs IERQSU9fQ0gxKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlpZiAoY21uX2QtPm9wcy0+aXNfZW5hYmxl ZChkZXZfcHJpdiwgY21uX2QpKSB7Cj4gPiArCQl1aW50MzJfdCBzdGF0dXMgPSBJOTE1X1JFQUQo RFBJT19QSFlfU1RBVFVTKTsKPiA+ICsJCXVuc2lnbmVkIGludCBtYXNrOwo+ID4gKwo+ID4gKwkJ bWFzayA9IHN0YXR1cyAmIERQTExfUE9SVERfUkVBRFlfTUFTSzsKPiA+ICsJCWRldl9wcml2LT5j aHZfcGh5X2NvbnRyb2wgfD0KPiA+ICsJCQlQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKG1hc2ssIERQ SU9fUEhZMSwgRFBJT19DSDApOwo+ID4gKwo+ID4gICAJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRy b2wgfD0gUEhZX0NPTV9MQU5FX1JFU0VUX0RFQVNTRVJUKERQSU9fUEhZMSk7Cj4gPiArCX0gZWxz ZSB7Cj4gPiArCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9Cj4gPiArCQkJUEhZX0NIX1BP V0VSX0RPV05fT1ZSRCgweGYsIERQSU9fUEhZMSwgRFBJT19DSDApOwo+ID4gKwl9Cj4gPiArCj4g PiArCURSTV9ERUJVR19LTVMoIkluaXRpYWwgRFBJT19QSFlfQ09OVFJPTD0weCUwOHhcbiIsCj4g PiArCQkgICAgICBkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sKTsKPiA+ICAgfQo+ID4gICAKPiA+ ICAgc3RhdGljIHZvaWQgdmx2X2NtbmxhbmVfd2Eoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+IAoKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAoKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==