From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/2] drm/i915: Set invert bit for hpd based on VBT Date: Tue, 16 Feb 2016 11:41:12 +0200 Message-ID: <20160216094112.GB23290@intel.com> References: <1455282584-6350-1-git-send-email-shubhangi.shrivastava@intel.com> <1455282584-6350-2-git-send-email-shubhangi.shrivastava@intel.com> <20160212140838.GM23290@intel.com> <56C28267.9090404@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 7CB4A6E77A for ; Tue, 16 Feb 2016 09:41:16 +0000 (UTC) Content-Disposition: inline In-Reply-To: <56C28267.9090404@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Thulasimani, Sivakumar" Cc: intel-gfx@lists.freedesktop.org, Shubhangi Shrivastava List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBGZWIgMTYsIDIwMTYgYXQgMDc6Mjk6MDNBTSArMDUzMCwgVGh1bGFzaW1hbmksIFNp dmFrdW1hciB3cm90ZToKPiAKPiAKPiBPbiAyLzEyLzIwMTYgNzozOCBQTSwgVmlsbGUgU3lyasOk bMOkIHdyb3RlOgo+ID4gT24gRnJpLCBGZWIgMTIsIDIwMTYgYXQgMDY6Mzk6NDRQTSArMDUzMCwg U2h1YmhhbmdpIFNocml2YXN0YXZhIHdyb3RlOgo+ID4+IFRoaXMgcGF0Y2ggc2V0cyB0aGUgaW52 ZXJ0IGJpdCBmb3IgaHBkIGRldGVjdGlvbiBmb3IgZWFjaCBwb3J0Cj4gPj4gYmFzZWQgb24gVkJU IGNvbmZpZ3VyYXRpb24uIFNpbmNlIGVhY2ggQU9CIGNhbiBiZSBkZXNpZ25lZCB0bwo+ID4+IGRl cGVuZCBvbiBpbnZlcnQgYml0IG9yIG5vdCwgaXQgaXMgZXhwZWN0ZWQgaWYgYW4gQU9CIHJlcXVp cmVzCj4gPj4gaW52ZXJ0IGJpdCwgdGhlIHVzZXIgd2lsbCBzZXQgcmVzcGVjdGl2ZSBiaXQgaW4g VkJULgo+ID4+Cj4gPj4gdjI6IFNlcGFyYXRlZCBWQlQgcGFyc2luZyBmcm9tIHRoZSByZXN0IG9m IHRoZSBsb2dpYy4gKEphbmkpCj4gPj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBTaXZha3VtYXIgVGh1 bGFzaW1hbmkgPHNpdmFrdW1hci50aHVsYXNpbWFuaUBpbnRlbC5jb20+Cj4gPj4gU2lnbmVkLW9m Zi1ieTogRHVyZ2Fkb3NzIFIgPGR1cmdhZG9zcy5yQGludGVsLmNvbT4KPiA+PiBTaWduZWQtb2Zm LWJ5OiBTaHViaGFuZ2kgU2hyaXZhc3RhdmEgPHNodWJoYW5naS5zaHJpdmFzdGF2YUBpbnRlbC5j b20+Cj4gPj4gLS0tCj4gPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgfCAg MSArCj4gPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgfCA0MyArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+PiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmggICB8ICA5ICsrKysrKysrCj4gPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9iaW9zLmMgfCA0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwo+ID4+ICAgNCBmaWxlcyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspCj4gPj4KPiA+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiA+PiBpbmRleCA4MjE2NjY1Li40NTdmMTc1IDEwMDY0NAo+ID4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPj4gQEAgLTMzOTMsNiArMzM5Myw3IEBAIGV4dGVy biB2b2lkIGludGVsX2kyY19yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+PiAgIC8q IGludGVsX2Jpb3MuYyAqLwo+ID4+ICAgaW50IGludGVsX2Jpb3NfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4+ICAgYm9vbCBpbnRlbF9iaW9zX2lzX3ZhbGlkX3Zi dChjb25zdCB2b2lkICpidWYsIHNpemVfdCBzaXplKTsKPiA+PiArYm9vbCBpbnRlbF9iaW9zX2lz X3BvcnRfaHBkX2ludmVydGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0 KTsKPiA+PiAgIAo+ID4+ICAgLyogaW50ZWxfb3ByZWdpb24uYyAqLwo+ID4+ICAgI2lmZGVmIENP TkZJR19BQ1BJCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJx LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gPj4gaW5kZXggMjVhODkzNy4u ZmI5NWZiMCAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5j Cj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4+IEBAIC0zNiw2 ICszNiw3IEBACj4gPj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiA+PiAgICNpbmNsdWRlICJp OTE1X3RyYWNlLmgiCj4gPj4gICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gPj4gKyNpbmNsdWRl ICJpbnRlbF9iaW9zLmgiCj4gPj4gICAKPiA+PiAgIC8qKgo+ID4+ICAgICogRE9DOiBpbnRlcnJ1 cHQgaGFuZGxpbmcKPiA+PiBAQCAtMzQyNCw2ICszNDI1LDQ3IEBAIHN0YXRpYyB2b2lkIGlieF9o cGRfaXJxX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPj4gICAJSTkxNV9XUklURShQ Q0hfUE9SVF9IT1RQTFVHLCBob3RwbHVnKTsKPiA+PiAgIH0KPiA+PiAgIAo+ID4+ICsvKgo+ID4+ ICsgKiBGb3IgQlhUIGludmVydCBiaXQgaGFzIHRvIGJlIHNldCBiYXNlZCBvbiBBT0IgZGVzaWdu Cj4gPj4gKyAqIGZvciBIUEQgZGV0ZWN0aW9uIGxvZ2ljLCB1cGRhdGUgaXQgYmFzZWQgb24gVkJU IGZpZWxkcy4KPiA+PiArICovCj4gPj4gK3N0YXRpYyB2b2lkIGJ4dF9ocGRfc2V0X2ludmVydChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgaG90cGx1Z19wb3J0KQo+ID4+ICt7Cj4gPj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4+ ICsJaW50IHJlZ192YWwsIHZhbCA9IDA7Cj4gPj4gKwllbnVtIHBvcnQgcG9ydDsKPiA+PiArCj4g Pj4gKwlmb3IgKHBvcnQgPSBQT1JUX0E7IHBvcnQgPD0gUE9SVF9DOyBwb3J0KyspIHsKPiA+PiAr Cj4gPj4gKwkJLyogUHJvY2VlZCBvbmx5IGlmIGludmVydCBiaXQgaXMgc2V0ICovCj4gPj4gKwkJ aWYgKGludGVsX2Jpb3NfaXNfcG9ydF9ocGRfaW52ZXJ0ZWQoZGV2LCBwb3J0KSkgewo+ID4+ICsJ CQlzd2l0Y2ggKHBvcnQpIHsKPiA+PiArCQkJY2FzZSBQT1JUX0E6Cj4gPj4gKwkJCQlpZiAoaG90 cGx1Z19wb3J0ICYgQlhUX0RFX1BPUlRfSFBfRERJQSkKPiA+PiArCQkJCQl2YWwgfD0gQlhUX0RE SUFfSFBEX0lOVkVSVDsKPiA+PiArCQkJCWJyZWFrOwo+ID4+ICsJCQljYXNlIFBPUlRfQjoKPiA+ PiArCQkJCWlmIChob3RwbHVnX3BvcnQgJiBCWFRfREVfUE9SVF9IUF9ERElCKQo+ID4+ICsJCQkJ CXZhbCB8PSBCWFRfRERJQl9IUERfSU5WRVJUOwo+ID4+ICsJCQkJYnJlYWs7Cj4gPj4gKwkJCWNh c2UgUE9SVF9DOgo+ID4+ICsJCQkJaWYgKGhvdHBsdWdfcG9ydCAmIEJYVF9ERV9QT1JUX0hQX0RE SUMpCj4gPj4gKwkJCQkJdmFsIHw9IEJYVF9ERElDX0hQRF9JTlZFUlQ7Cj4gPj4gKwkJCQlicmVh azsKPiA+PiArCQkJZGVmYXVsdDoKPiA+PiArCQkJCURSTV9FUlJPUigiSFBEIGludmVydCBzZXQg Zm9yIGludmFsaWQgcG9ydCAlZFxuIiwKPiA+PiArCQkJCQkJcG9ydCk7Cj4gPj4gKwkJCQlicmVh azsKPiA+PiArCQkJfQo+ID4+ICsJCX0KPiA+PiArCX0KPiA+PiArCXJlZ192YWwgPSBJOTE1X1JF QUQoQlhUX0hPVFBMVUdfQ1RMKTsKPiA+PiArCURSTV9ERUJVR19LTVMoIkludmVydCBiaXQgc2V0 dGluZzogaHBfY3RsOiV4IGhwX3BvcnQ6JXggdmFsOiV4XG4iLAo+ID4+ICsJCQkJcmVnX3ZhbCwg aG90cGx1Z19wb3J0LCB2YWwpOwo+ID4+ICsJcmVnX3ZhbCAmPSB+QlhUX0RESV9IUERfSU5WRVJU X01BU0s7Cj4gPj4gKwlJOTE1X1dSSVRFKEJYVF9IT1RQTFVHX0NUTCwgcmVnX3ZhbCB8IHZhbCk7 Cj4gPj4gK30KPiA+IE5vIFJNVyBzdHVmZiBwbGVhc2UuIEp1c3Qgc2V0IHVwIHRoZSBiaXRzIGFw cHJvcHJpYXRlbHkgaW4gYnh0X2hwZF9pcnFfc2V0dXAoKS4KPiB0aGUgcHJvYmxlbSBpcyB3ZSBu ZWVkIHRvIHF1ZXJ5IHZidCBmb3Igc2V0dGluZyBpbnZlcnQgYml0LiBzbyBub3Qgc3VyZSAKPiBo YXZpbmcgdGhpcyBsb2dpYwo+IGluc2lkZSBieHRfaHBkX2lycV9zZXR1cCBpcyBnb29kLgoKSSB0 aGluayBpdCBpcy4gV2UgZG9uJ3Qgd2FudCB0byBzcHJlYWQgdGhpcyBzdHVmZiBhcm91bmQgYWxs IG92ZXIgdGhlCnBsYWNlLgoKPiBpZiB3ZSB3YW50IHRvIGF2b2lkIHJlYWQvd3JpdGUgdG8gCj4g cmVnaXN0ZXJzIHdlIGNhbgo+IG1vZGlmeSB0aGUgaW5wdXQgdG8gYmUgdmFsdWVzIHdyaXR0ZW4g b24gcmVnaXN0ZXIgaW5zdGVhZCBvZiAKPiBlbmFibGVkX2lycXMuIHRoYXQgd2F5Cj4gd2UgY2Fu IHdyaXRlIHRoZSB2YWx1ZSB0byByZWdpc3RlciBwb3N0IGNhbGwgdG8gdGhpcyBmdW5jdGlvbiBh bmQgd2UgCj4gbmVlZCBub3QKPiB3b3JyeSBhYm91dCBjdXJyZW50IHZhbHVlcyBpbiByZWdpc3Rl ci4gaXMgdGhhdCBmaW5lID8KCkkgZG9uJ3QgcmVhbGx5IHNlZSBhbnkgcG9pbnQgaW4gZG9pbmcg aXQgb3V0c2lkZSBieHRfaHBkX2lycV9zZXR1cCgpLgoKPiA+Cj4gPj4gKwo+ID4+ICAgc3RhdGlj IHZvaWQgc3B0X2hwZF9pcnFfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+PiAgIHsK PiA+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+ID4+IEBAIC0zNDk0LDYgKzM1MzYsNyBAQCBzdGF0aWMgdm9pZCBieHRfaHBkX2lycV9z ZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4+ICAgCWhvdHBsdWcgfD0gUE9SVENfSE9U UExVR19FTkFCTEUgfCBQT1JUQl9IT1RQTFVHX0VOQUJMRSB8Cj4gPj4gICAJCVBPUlRBX0hPVFBM VUdfRU5BQkxFOwo+ID4+ICAgCUk5MTVfV1JJVEUoUENIX1BPUlRfSE9UUExVRywgaG90cGx1Zyk7 Cj4gPj4gKwlieHRfaHBkX3NldF9pbnZlcnQoZGV2LCBlbmFibGVkX2lycXMpOwo+ID4+ICAgfQo+ ID4+ICAgCj4gPj4gICBzdGF0aWMgdm9pZCBpYnhfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPj4gaW5kZXggNjczMmZj MS4uNjZjZjkyZSAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4+IEBAIC01 OTQwLDYgKzU5NDAsMTUgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gPj4gICAjZGVm aW5lIEdFTjhfUENVX0lJUiBfTU1JTygweDQ0NGU4KQo+ID4+ICAgI2RlZmluZSBHRU44X1BDVV9J RVIgX01NSU8oMHg0NDRlYykKPiA+PiAgIAo+ID4+ICsvKiBCWFQgaG90cGx1ZyBjb250cm9sICov Cj4gPj4gKyNkZWZpbmUgQlhUX0hPVFBMVUdfQ1RMCQkJX01NSU8oMHhDNDAzMCkKPiA+IFdlIGFs cmVhZHkgaGF2ZSBhIG5hbWUgZm9yIHRoYXQgcmVnaXN0ZXIuCj4geWVzLCBidXQgYXMgbWVudGlv bmVkIGJ5IHlvdSBiZWxvdyB0aGUgcmVnaXN0ZXIgYml0cyBhcmUgZGlmZmVyZW50Lgo+IHdlIGRp ZCBub3Qgd2FudCB0byBjb25mdXNlIGJ5IHVzaW5nIGFuIG9sZCByZWdpc3RlciBkZWZpbmUgd2hl biB0aGUKPiBiaXRzIGFyZSBkaWZmZXJlbnQuCgpUaGF0J3Mgbm90IGhvdyB3ZSByb2xsIGdlbmVy YWxseS4gQmVzaWRlcyB3ZSdyZSBhbHJlZHkgdXNpbmcgdGhlIG90aGVyCmJpdHMgaW4gdGhhdCBy ZWdpc3RlciBvbiBCWFQuCgo+ID4+ICsjZGVmaW5lIEJYVF9ERElBX0hQRF9JTlZFUlQJCSgxIDw8 IDI3KQo+ID4+ICsjZGVmaW5lIEJYVF9ERElDX0hQRF9JTlZFUlQJCSgxIDw8IDExKQo+ID4+ICsj ZGVmaW5lIEJYVF9ERElCX0hQRF9JTlZFUlQJCSgxIDw8IDMpCj4gPiBJIHdhcyBnb2luZyB0byBz dWdnZXN0IHBhcmFtZXRyaXppbmcgdGhpcyBzdHVmZiwgYnV0IHRoZSBiaXRzIGFyZSBpbiBhCj4g PiBmYWlybHkgbmFzdHkgb3JkZXIgc28gbm90IHNvIGVhc3ksIGFuZCB3ZSBoYXZlbid0IHBhcmFt ZXRyaXplZCB0aGUgcmVzdAo+ID4gaWYgdGhlIGhwZCBiaXRzIGVpdGhlciwgc28gZG9pbmcgaXQg anVzdCBmb3IgdGhlc2Ugd291bGQgYmUgYSBiaXQgb3V0IG9mCj4gPiBwbGFjZSBwZXJoYXBzLgo+ ID4KPiA+IFdlIHNob3VsZCBwZXJoYXBzIHRyeSB0byBwYXJhbWV0cml6ZSBhbGwgdGhlIGhwZCBi aXRzIHRob3VnaCwgc2luY2UgdGhhdAo+ID4gY291bGQgcmVzdWx0IGluIHNvbWUgbmVhdGVyIGxv b2tpbmcgY29kZS4gQnV0IHRoYXQgc29ydCBvZiBzdHVmZiBpcwo+ID4gYmV0dGVyIGxlZnQgZm9y IGEgc2VwYXJhdGUgcGF0Y2guIEFmdGVyIGEgYml0IG1vcmUgdGhvdWdoIGl0J3Mgbm90Cj4gPiBh Y3R1YWxseSBoYXJkIGF0IGFsbDogKCgocG9ydCkgKiA4ICsgMjQgKyB3aGF0ZXZlcikgJiAzMSkK PiBobW1tIHdpbGwgY2hlY2sgYW5kIGdldCBiYWNrIG9uIGlmIHRoaXMgY2FuIGJlIGRvbmUuCgpJ IHRyaWVkIHRvIGRvIGl0IGdsb2JhbGx5LCBhbmQgd2hpbGUgbW9zdCBvZiBpdCB0dXJuZWQgb3V0 IE9LLCB0aGVyZQp3ZXJlIGVub3VnaCBleGNlcHRpb25zIHRoYXQgSSBkb24ndCB0aGluayBpdCdz IG5lY2Vzc2FyaWx5IHdvcnRod2lsZS4KSXQnbGwganVzdCBtYWtlIHNvbWUgb2YgdGhlIGJpdHMg cGFyYW1ldHJpemVkIGFuZCBzb21lIG5vdCwgc28gZmVlbHMKYSBiaXQgaW5jb25zaXN0ZW50LgoK PiA+PiArI2RlZmluZSBCWFRfRERJX0hQRF9JTlZFUlRfTUFTSwkJKEJYVF9ERElBX0hQRF9JTlZF UlQgfCBcCj4gPj4gKwkJCQkJIEJYVF9ERElCX0hQRF9JTlZFUlQgfCBcCj4gPj4gKwkJCQkJIEJY VF9ERElDX0hQRF9JTlZFUlQpCj4gPj4gKwo+ID4+ICAgI2RlZmluZSBJTEtfRElTUExBWV9DSElD S0VOMglfTU1JTygweDQyMDA0KQo+ID4+ICAgLyogUmVxdWlyZWQgb24gYWxsIElyb25sYWtlIGFu ZCBTYW5keWJyaWRnZSBhY2NvcmRpbmcgdG8gdGhlIEItU3BlYy4gKi8KPiA+PiAgICNkZWZpbmUg IElMS19FTFBJTl80MDlfU0VMRUNUCSgxIDw8IDI1KQo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9i aW9zLmMKPiA+PiBpbmRleCBhMjZkNGI0Li4yNGQwMDc3IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Jpb3MuYwo+ID4+IEBAIC0xMDUsNiArMTA1LDQ4IEBAIGZpbmRfc2VjdGlvbihj b25zdCB2b2lkICpfYmRiLCBpbnQgc2VjdGlvbl9pZCkKPiA+PiAgIAlyZXR1cm4gTlVMTDsKPiA+ PiAgIH0KPiA+PiAgIAo+ID4+ICtib29sCj4gPj4gK2ludGVsX2Jpb3NfaXNfcG9ydF9ocGRfaW52 ZXJ0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQpCj4gPj4gK3sKPiA+ PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gPj4gKwlpbnQgaTsKPiA+PiArCj4gPj4gKwlpZiAoIUlTX0JST1hUT04oZGV2KSkgewo+ID4+ ICsJCURSTV9FUlJPUigiQml0IGludmVyc2lvbiBpcyBub3QgcmVxdWlyZWQgaW4gdGhpcyBwbGF0 Zm9ybVxuIik7Cj4gPj4gKwkJcmV0dXJuIGZhbHNlOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCWZv ciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldl9udW07IGkrKykgewo+ID4+ICsK PiA+PiArCQlpZiAoZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZbaV0uY29tbW9uLmhwZF9pbnZlcnQg PT0gMSkgewo+ID4+ICsKPiA+PiArCQkJc3dpdGNoIChkZXZfcHJpdi0+dmJ0LmNoaWxkX2Rldltp XS5jb21tb24uZHZvX3BvcnQpIHsKPiA+PiArCQkJY2FzZSBEVk9fUE9SVF9EUEE6Cj4gPj4gKwkJ CWNhc2UgRFZPX1BPUlRfSERNSUE6Cj4gPj4gKwkJCQlpZiAocG9ydCA9PSBQT1JUX0EpCj4gPj4g KwkJCQkJcmV0dXJuIHRydWU7Cj4gPj4gKwkJCQlicmVhazsKPiA+PiArCQkJY2FzZSBEVk9fUE9S VF9EUEI6Cj4gPj4gKwkJCWNhc2UgRFZPX1BPUlRfSERNSUI6Cj4gPj4gKwkJCQlpZiAocG9ydCA9 PSBQT1JUX0IpCj4gPj4gKwkJCQkJcmV0dXJuIHRydWU7Cj4gPj4gKwkJCQlicmVhazsKPiA+PiAr CQkJY2FzZSBEVk9fUE9SVF9EUEM6Cj4gPj4gKwkJCWNhc2UgRFZPX1BPUlRfSERNSUM6Cj4gPj4g KwkJCQlpZiAocG9ydCA9PSBQT1JUX0MpCj4gPj4gKwkJCQkJcmV0dXJuIHRydWU7Cj4gPj4gKwkJ CQlicmVhazsKPiA+PiArCQkJZGVmYXVsdDoKPiA+PiArCQkJCURSTV9ERUJVR19LTVMoIlRoaXMg ZHZvIHBvcnQgJWQgZG9lc24ndCBuZWVkIGludmVydFxuIiwKPiA+PiArCQkJCQlkZXZfcHJpdi0+ dmJ0LmNoaWxkX2RldltpXS5jb21tb24uZHZvX3BvcnQpOwo+ID4gV2h5IGRvIHdlIG5lZWQgYSBk ZWJ1ZyBtZXNzYWdlIGZvciB0aGUgIm5vIGludmVydCIgY2FzZSBpZiB3ZSBkb24ndAo+ID4gbmVl ZCBvbmUgZm9yIHRoZSBpbnZlcnQgY2FzZT8KPiA+Cj4gPiBUaGUgY29kZSBzdHJ1Y3R1cmUgZmVl bHMgYSBiaXQgd29ua3kuIEl0J3Mgc29ydCBvZiBleHBlY3RpbmcgbXVsdGlwbGUKPiA+IGNoaWxk IGRldnMgZm9yIGVhY2ggcG9ydC4gQ2FuIHRoYXQgYWN0dWFsbHkgaGFwcGVuPwo+IHRoZSBkZWJ1 ZyBtZXNzYWdlIGlzIGp1c3QgYSBmYWlsIHNhZmUgdG8gbGV0IGtub3cgaWYgVkJUIHByb2dyYW1t aW5nIGlzIAo+IGluY29ycmVjdC4KCldlbGwsIGl0J2xsIHRlbGwgeW91IHRoZXJlJ3MgYSBib2d1 cyBwb3J0IGluIHRoZSBWQlQsIGJ1dCBvbmx5IGlmIGl0CmRvZXNuJ3QgaGF2ZSBpbnZlcnQ9PTEs IGJ1dCBpdCB3b24ndCB0ZWxsIHlvdSBhYm91dCBhIGJvZ3VzIHBvcnQgd2l0aAppbnZlcnQ9PTAu IFNvIHNlZW1zIGxpa2UgYSBzb21ld2hhdCBoYWxmIGhlYXJ0ZWQgYXR0ZW1wdCBhdCB2ZXJpZnlp bmcKdGhlIFZCVCB0byBtZS4KCj4gaXQgY2FuIGJlIHJlbW92ZWQuIGJ1dCB3ZSBhbHJlYWR5IGZv dW5kIGFuZCBmaXhlZCBhIGluY29ycmVjdCBwcm9ncmFtbWluZyBpbgo+IGRlZmF1bHQgVkJUIHdp dGggdGhpcyBzbyBpIHdvdWxkIHJlY29tbWVuZCBrZWVwaW5nIGl0IDopLgo+IAo+IHJlZ2FyZGlu ZyBjaGlsZCBkZXZzLCB0aGUgaW52ZXJ0IGJpdCBjYW4gYmUgc2V0IGZvciBIRE1JIG9yIERQIGJh c2VkIG9uIAo+IHRoZSBib2FyZAo+IGRlc2lnbiBzbyB3ZSBuZWVkIHRvIGhhbmRsZSB0aGlzIGZv ciBib3RoIHBvcnQgdHlwZXMuIGhlbmNlIHdlIGFyZSAKPiBjaGVja2luZyBmb3IKPiBib3RoIGhl cmUuIGkgdG9vIGZlbHQgaXQgb2RkIGhhdmluZyB0byBsb29wIHR3aWNlIG9uY2UgaGVyZSBhbmQg YWdhaW4gaW4KPiAKPiBieHRfaHBkX3NldF9pbnZlcnQuCj4gCj4gaWYgd2UgY2FuIGNvbWUgdXAg d2l0aCBhIHNpbXBsZXIgZGVzaWduIHRoZW4gaSB3b3VsZCBmYXZvciBpdCBhcyB3ZWxsIAo+IGJ1 dCBmb3Igbm93Cj4gdGhpcyBzZWVtcyB0byBiZSByZXF1aXJlZC4KCkkgdHJpZWQgdG8gdGhpbmsg aG93IHRvIGRvIHRoaXMgbW9yZSBuZWF0bHkgYW5kIGRpZG4ndCByZWFsbHkgY29tZSB1cAp3aXRo IGFueXRoaW5nIHJlYWxseSBlbGVnYW50LgoKSSBzdXBwb3NlIG9uZSB0aGluZyB3ZSBjb3VsZCB0 cnkgaXMgdG8gaGF2ZSB0aGlzIGNvbnN0cnVjdCBhIGJpdG1hc2sKc28gaXQgd291bGRuJ3QgaGF2 ZSB0byBsb29wIHRocm91Z2ggdGhlIGNoaWxkIGRldnMgbW9yZSB0aGFuIG9uY2UuCkFuZCB0aGVu IHRoZSByZWdpc3RlciBzZXR1cCBjb3VsZCBtYXliZSBkbyBqdXN0IHNvbWV0aGluZyBsaWtlOgoK aWYgKGludmVydF9ocGQgJiBQT1JUX0EpCglzb21ldGhpbmcgfD0gQlhUX0RESUFfSFBEX0lOVkVS VDsKaWYgKGludmVydF9ocGQmIFBPUlRfQikKCXNvbWV0aGluZyB8PSBCWFRfRERJQl9IUERfSU5W RVJUOwppZiAoaW52ZXJ0X2hwZCAmIFBPUlRfQykKCXNvbWV0aGluZyB8PSBCWFRfRERJQ19IUERf SU5WRVJUOwoKd2l0aG91dCBsb29waW5nIHNpbmNlIHdlIGRvbid0IGxvb3AgdGhlcmUgZm9yIHRo ZSBvdGhlciBiaXRzIGVpdGhlci4KCj4gCj4gcmVnYXJkcywKPiBTaXZha3VtYXIKPiA+Cj4gPj4g KwkJCQlicmVhazsKPiA+PiArCQkJfQo+ID4+ICsJCX0KPiA+PiArCX0KPiA+PiArCj4gPj4gKwly ZXR1cm4gZmFsc2U7Cj4gPj4gK30KPiA+PiArCj4gPj4gICBzdGF0aWMgdm9pZAo+ID4+ICAgZmls bF9kZXRhaWxfdGltaW5nX2RhdGEoc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnBhbmVsX2ZpeGVk X21vZGUsCj4gPj4gICAJCQljb25zdCBzdHJ1Y3QgbHZkc19kdm9fdGltaW5nICpkdm9fdGltaW5n KQo+ID4+IC0tIAo+ID4+IDIuNi4xCj4gPj4KPiA+PiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+ID4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+PiBJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QK SW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=