From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Thulasimani, Sivakumar" Subject: Re: [PATCH 2/2] drm/i915: Set invert bit for hpd based on VBT Date: Tue, 16 Feb 2016 07:29:03 +0530 Message-ID: <56C28267.9090404@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 9CD456E1D6 for ; Tue, 16 Feb 2016 01:59:27 +0000 (UTC) In-Reply-To: <20160212140838.GM23290@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , Shubhangi Shrivastava Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAyLzEyLzIwMTYgNzozOCBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+IE9uIEZyaSwg RmViIDEyLCAyMDE2IGF0IDA2OjM5OjQ0UE0gKzA1MzAsIFNodWJoYW5naSBTaHJpdmFzdGF2YSB3 cm90ZToKPj4gVGhpcyBwYXRjaCBzZXRzIHRoZSBpbnZlcnQgYml0IGZvciBocGQgZGV0ZWN0aW9u IGZvciBlYWNoIHBvcnQKPj4gYmFzZWQgb24gVkJUIGNvbmZpZ3VyYXRpb24uIFNpbmNlIGVhY2gg QU9CIGNhbiBiZSBkZXNpZ25lZCB0bwo+PiBkZXBlbmQgb24gaW52ZXJ0IGJpdCBvciBub3QsIGl0 IGlzIGV4cGVjdGVkIGlmIGFuIEFPQiByZXF1aXJlcwo+PiBpbnZlcnQgYml0LCB0aGUgdXNlciB3 aWxsIHNldCByZXNwZWN0aXZlIGJpdCBpbiBWQlQuCj4+Cj4+IHYyOiBTZXBhcmF0ZWQgVkJUIHBh cnNpbmcgZnJvbSB0aGUgcmVzdCBvZiB0aGUgbG9naWMuIChKYW5pKQo+Pgo+PiBTaWduZWQtb2Zm LWJ5OiBTaXZha3VtYXIgVGh1bGFzaW1hbmkgPHNpdmFrdW1hci50aHVsYXNpbWFuaUBpbnRlbC5j b20+Cj4+IFNpZ25lZC1vZmYtYnk6IER1cmdhZG9zcyBSIDxkdXJnYWRvc3MuckBpbnRlbC5jb20+ Cj4+IFNpZ25lZC1vZmYtYnk6IFNodWJoYW5naSBTaHJpdmFzdGF2YSA8c2h1YmhhbmdpLnNocml2 YXN0YXZhQGludGVsLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCAgIHwgIDEgKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICB8IDQz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmggICB8ICA5ICsrKysrKysrCj4+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYmlvcy5jIHwgNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPj4gICA0IGZpbGVzIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKykKPj4KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4+IGluZGV4IDgyMTY2NjUuLjQ1N2YxNzUgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+PiBAQCAtMzM5Myw2ICszMzkzLDcgQEAgZXh0ZXJuIHZvaWQgaW50 ZWxfaTJjX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+PiAgIC8qIGludGVsX2Jpb3Mu YyAqLwo+PiAgIGludCBpbnRlbF9iaW9zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKPj4gICBib29sIGludGVsX2Jpb3NfaXNfdmFsaWRfdmJ0KGNvbnN0IHZvaWQgKmJ1 Ziwgc2l6ZV90IHNpemUpOwo+PiArYm9vbCBpbnRlbF9iaW9zX2lzX3BvcnRfaHBkX2ludmVydGVk KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0KTsKPj4gICAKPj4gICAvKiBp bnRlbF9vcHJlZ2lvbi5jICovCj4+ICAgI2lmZGVmIENPTkZJR19BQ1BJCj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9pcnEuYwo+PiBpbmRleCAyNWE4OTM3Li5mYjk1ZmIwIDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfaXJxLmMKPj4gQEAgLTM2LDYgKzM2LDcgQEAKPj4gICAjaW5jbHVkZSAiaTkxNV9kcnYu aCIKPj4gICAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgo+PiAgICNpbmNsdWRlICJpbnRlbF9kcnYu aCIKPj4gKyNpbmNsdWRlICJpbnRlbF9iaW9zLmgiCj4+ICAgCj4+ICAgLyoqCj4+ICAgICogRE9D OiBpbnRlcnJ1cHQgaGFuZGxpbmcKPj4gQEAgLTM0MjQsNiArMzQyNSw0NyBAQCBzdGF0aWMgdm9p ZCBpYnhfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgIAlJOTE1X1dS SVRFKFBDSF9QT1JUX0hPVFBMVUcsIGhvdHBsdWcpOwo+PiAgIH0KPj4gICAKPj4gKy8qCj4+ICsg KiBGb3IgQlhUIGludmVydCBiaXQgaGFzIHRvIGJlIHNldCBiYXNlZCBvbiBBT0IgZGVzaWduCj4+ ICsgKiBmb3IgSFBEIGRldGVjdGlvbiBsb2dpYywgdXBkYXRlIGl0IGJhc2VkIG9uIFZCVCBmaWVs ZHMuCj4+ICsgKi8KPj4gK3N0YXRpYyB2b2lkIGJ4dF9ocGRfc2V0X2ludmVydChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1MzIgaG90cGx1Z19wb3J0KQo+PiArewo+PiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ICsJaW50IHJlZ192YWws IHZhbCA9IDA7Cj4+ICsJZW51bSBwb3J0IHBvcnQ7Cj4+ICsKPj4gKwlmb3IgKHBvcnQgPSBQT1JU X0E7IHBvcnQgPD0gUE9SVF9DOyBwb3J0KyspIHsKPj4gKwo+PiArCQkvKiBQcm9jZWVkIG9ubHkg aWYgaW52ZXJ0IGJpdCBpcyBzZXQgKi8KPj4gKwkJaWYgKGludGVsX2Jpb3NfaXNfcG9ydF9ocGRf aW52ZXJ0ZWQoZGV2LCBwb3J0KSkgewo+PiArCQkJc3dpdGNoIChwb3J0KSB7Cj4+ICsJCQljYXNl IFBPUlRfQToKPj4gKwkJCQlpZiAoaG90cGx1Z19wb3J0ICYgQlhUX0RFX1BPUlRfSFBfRERJQSkK Pj4gKwkJCQkJdmFsIHw9IEJYVF9ERElBX0hQRF9JTlZFUlQ7Cj4+ICsJCQkJYnJlYWs7Cj4+ICsJ CQljYXNlIFBPUlRfQjoKPj4gKwkJCQlpZiAoaG90cGx1Z19wb3J0ICYgQlhUX0RFX1BPUlRfSFBf RERJQikKPj4gKwkJCQkJdmFsIHw9IEJYVF9ERElCX0hQRF9JTlZFUlQ7Cj4+ICsJCQkJYnJlYWs7 Cj4+ICsJCQljYXNlIFBPUlRfQzoKPj4gKwkJCQlpZiAoaG90cGx1Z19wb3J0ICYgQlhUX0RFX1BP UlRfSFBfRERJQykKPj4gKwkJCQkJdmFsIHw9IEJYVF9ERElDX0hQRF9JTlZFUlQ7Cj4+ICsJCQkJ YnJlYWs7Cj4+ICsJCQlkZWZhdWx0Ogo+PiArCQkJCURSTV9FUlJPUigiSFBEIGludmVydCBzZXQg Zm9yIGludmFsaWQgcG9ydCAlZFxuIiwKPj4gKwkJCQkJCXBvcnQpOwo+PiArCQkJCWJyZWFrOwo+ PiArCQkJfQo+PiArCQl9Cj4+ICsJfQo+PiArCXJlZ192YWwgPSBJOTE1X1JFQUQoQlhUX0hPVFBM VUdfQ1RMKTsKPj4gKwlEUk1fREVCVUdfS01TKCJJbnZlcnQgYml0IHNldHRpbmc6IGhwX2N0bDol eCBocF9wb3J0OiV4IHZhbDoleFxuIiwKPj4gKwkJCQlyZWdfdmFsLCBob3RwbHVnX3BvcnQsIHZh bCk7Cj4+ICsJcmVnX3ZhbCAmPSB+QlhUX0RESV9IUERfSU5WRVJUX01BU0s7Cj4+ICsJSTkxNV9X UklURShCWFRfSE9UUExVR19DVEwsIHJlZ192YWwgfCB2YWwpOwo+PiArfQo+IE5vIFJNVyBzdHVm ZiBwbGVhc2UuIEp1c3Qgc2V0IHVwIHRoZSBiaXRzIGFwcHJvcHJpYXRlbHkgaW4gYnh0X2hwZF9p cnFfc2V0dXAoKS4KdGhlIHByb2JsZW0gaXMgd2UgbmVlZCB0byBxdWVyeSB2YnQgZm9yIHNldHRp bmcgaW52ZXJ0IGJpdC4gc28gbm90IHN1cmUgCmhhdmluZyB0aGlzIGxvZ2ljCmluc2lkZSBieHRf aHBkX2lycV9zZXR1cCBpcyBnb29kLiBpZiB3ZSB3YW50IHRvIGF2b2lkIHJlYWQvd3JpdGUgdG8g CnJlZ2lzdGVycyB3ZSBjYW4KbW9kaWZ5IHRoZSBpbnB1dCB0byBiZSB2YWx1ZXMgd3JpdHRlbiBv biByZWdpc3RlciBpbnN0ZWFkIG9mIAplbmFibGVkX2lycXMuIHRoYXQgd2F5CndlIGNhbiB3cml0 ZSB0aGUgdmFsdWUgdG8gcmVnaXN0ZXIgcG9zdCBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gYW5kIHdl IApuZWVkIG5vdAp3b3JyeSBhYm91dCBjdXJyZW50IHZhbHVlcyBpbiByZWdpc3Rlci4gaXMgdGhh dCBmaW5lID8KPgo+PiArCj4+ICAgc3RhdGljIHZvaWQgc3B0X2hwZF9pcnFfc2V0dXAoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPj4gICB7Cj4+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+IEBAIC0zNDk0LDYgKzM1MzYsNyBAQCBzdGF0 aWMgdm9pZCBieHRfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgIAlo b3RwbHVnIHw9IFBPUlRDX0hPVFBMVUdfRU5BQkxFIHwgUE9SVEJfSE9UUExVR19FTkFCTEUgfAo+ PiAgIAkJUE9SVEFfSE9UUExVR19FTkFCTEU7Cj4+ICAgCUk5MTVfV1JJVEUoUENIX1BPUlRfSE9U UExVRywgaG90cGx1Zyk7Cj4+ICsJYnh0X2hwZF9zZXRfaW52ZXJ0KGRldiwgZW5hYmxlZF9pcnFz KTsKPj4gICB9Cj4+ICAgCj4+ICAgc3RhdGljIHZvaWQgaWJ4X2lycV9wb3N0aW5zdGFsbChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4gaW5kZXggNjcz MmZjMS4uNjZjZjkyZSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+IEBAIC01OTQw LDYgKzU5NDAsMTUgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4+ICAgI2RlZmluZSBH RU44X1BDVV9JSVIgX01NSU8oMHg0NDRlOCkKPj4gICAjZGVmaW5lIEdFTjhfUENVX0lFUiBfTU1J TygweDQ0NGVjKQo+PiAgIAo+PiArLyogQlhUIGhvdHBsdWcgY29udHJvbCAqLwo+PiArI2RlZmlu ZSBCWFRfSE9UUExVR19DVEwJCQlfTU1JTygweEM0MDMwKQo+IFdlIGFscmVhZHkgaGF2ZSBhIG5h bWUgZm9yIHRoYXQgcmVnaXN0ZXIuCnllcywgYnV0IGFzIG1lbnRpb25lZCBieSB5b3UgYmVsb3cg dGhlIHJlZ2lzdGVyIGJpdHMgYXJlIGRpZmZlcmVudC4Kd2UgZGlkIG5vdCB3YW50IHRvIGNvbmZ1 c2UgYnkgdXNpbmcgYW4gb2xkIHJlZ2lzdGVyIGRlZmluZSB3aGVuIHRoZQpiaXRzIGFyZSBkaWZm ZXJlbnQuCj4+ICsjZGVmaW5lIEJYVF9ERElBX0hQRF9JTlZFUlQJCSgxIDw8IDI3KQo+PiArI2Rl ZmluZSBCWFRfRERJQ19IUERfSU5WRVJUCQkoMSA8PCAxMSkKPj4gKyNkZWZpbmUgQlhUX0RESUJf SFBEX0lOVkVSVAkJKDEgPDwgMykKPiBJIHdhcyBnb2luZyB0byBzdWdnZXN0IHBhcmFtZXRyaXpp bmcgdGhpcyBzdHVmZiwgYnV0IHRoZSBiaXRzIGFyZSBpbiBhCj4gZmFpcmx5IG5hc3R5IG9yZGVy IHNvIG5vdCBzbyBlYXN5LCBhbmQgd2UgaGF2ZW4ndCBwYXJhbWV0cml6ZWQgdGhlIHJlc3QKPiBp ZiB0aGUgaHBkIGJpdHMgZWl0aGVyLCBzbyBkb2luZyBpdCBqdXN0IGZvciB0aGVzZSB3b3VsZCBi ZSBhIGJpdCBvdXQgb2YKPiBwbGFjZSBwZXJoYXBzLgo+Cj4gV2Ugc2hvdWxkIHBlcmhhcHMgdHJ5 IHRvIHBhcmFtZXRyaXplIGFsbCB0aGUgaHBkIGJpdHMgdGhvdWdoLCBzaW5jZSB0aGF0Cj4gY291 bGQgcmVzdWx0IGluIHNvbWUgbmVhdGVyIGxvb2tpbmcgY29kZS4gQnV0IHRoYXQgc29ydCBvZiBz dHVmZiBpcwo+IGJldHRlciBsZWZ0IGZvciBhIHNlcGFyYXRlIHBhdGNoLiBBZnRlciBhIGJpdCBt b3JlIHRob3VnaCBpdCdzIG5vdAo+IGFjdHVhbGx5IGhhcmQgYXQgYWxsOiAoKChwb3J0KSAqIDgg KyAyNCArIHdoYXRldmVyKSAmIDMxKQpobW1tIHdpbGwgY2hlY2sgYW5kIGdldCBiYWNrIG9uIGlm IHRoaXMgY2FuIGJlIGRvbmUuCj4+ICsjZGVmaW5lIEJYVF9ERElfSFBEX0lOVkVSVF9NQVNLCQko QlhUX0RESUFfSFBEX0lOVkVSVCB8IFwKPj4gKwkJCQkJIEJYVF9ERElCX0hQRF9JTlZFUlQgfCBc Cj4+ICsJCQkJCSBCWFRfRERJQ19IUERfSU5WRVJUKQo+PiArCj4+ICAgI2RlZmluZSBJTEtfRElT UExBWV9DSElDS0VOMglfTU1JTygweDQyMDA0KQo+PiAgIC8qIFJlcXVpcmVkIG9uIGFsbCBJcm9u bGFrZSBhbmQgU2FuZHlicmlkZ2UgYWNjb3JkaW5nIHRvIHRoZSBCLVNwZWMuICovCj4+ICAgI2Rl ZmluZSAgSUxLX0VMUElOXzQwOV9TRUxFQ1QJKDEgPDwgMjUpCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9iaW9zLmMKPj4gaW5kZXggYTI2ZDRiNC4uMjRkMDA3NyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Jpb3MuYwo+PiBAQCAtMTA1LDYgKzEwNSw0OCBAQCBmaW5kX3NlY3Rpb24oY29uc3Qg dm9pZCAqX2JkYiwgaW50IHNlY3Rpb25faWQpCj4+ICAgCXJldHVybiBOVUxMOwo+PiAgIH0KPj4g ICAKPj4gK2Jvb2wKPj4gK2ludGVsX2Jpb3NfaXNfcG9ydF9ocGRfaW52ZXJ0ZWQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQpCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKwlpbnQgaTsKPj4gKwo+ PiArCWlmICghSVNfQlJPWFRPTihkZXYpKSB7Cj4+ICsJCURSTV9FUlJPUigiQml0IGludmVyc2lv biBpcyBub3QgcmVxdWlyZWQgaW4gdGhpcyBwbGF0Zm9ybVxuIik7Cj4+ICsJCXJldHVybiBmYWxz ZTsKPj4gKwl9Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPnZidC5jaGlsZF9k ZXZfbnVtOyBpKyspIHsKPj4gKwo+PiArCQlpZiAoZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZbaV0u Y29tbW9uLmhwZF9pbnZlcnQgPT0gMSkgewo+PiArCj4+ICsJCQlzd2l0Y2ggKGRldl9wcml2LT52 YnQuY2hpbGRfZGV2W2ldLmNvbW1vbi5kdm9fcG9ydCkgewo+PiArCQkJY2FzZSBEVk9fUE9SVF9E UEE6Cj4+ICsJCQljYXNlIERWT19QT1JUX0hETUlBOgo+PiArCQkJCWlmIChwb3J0ID09IFBPUlRf QSkKPj4gKwkJCQkJcmV0dXJuIHRydWU7Cj4+ICsJCQkJYnJlYWs7Cj4+ICsJCQljYXNlIERWT19Q T1JUX0RQQjoKPj4gKwkJCWNhc2UgRFZPX1BPUlRfSERNSUI6Cj4+ICsJCQkJaWYgKHBvcnQgPT0g UE9SVF9CKQo+PiArCQkJCQlyZXR1cm4gdHJ1ZTsKPj4gKwkJCQlicmVhazsKPj4gKwkJCWNhc2Ug RFZPX1BPUlRfRFBDOgo+PiArCQkJY2FzZSBEVk9fUE9SVF9IRE1JQzoKPj4gKwkJCQlpZiAocG9y dCA9PSBQT1JUX0MpCj4+ICsJCQkJCXJldHVybiB0cnVlOwo+PiArCQkJCWJyZWFrOwo+PiArCQkJ ZGVmYXVsdDoKPj4gKwkJCQlEUk1fREVCVUdfS01TKCJUaGlzIGR2byBwb3J0ICVkIGRvZXNuJ3Qg bmVlZCBpbnZlcnRcbiIsCj4+ICsJCQkJCWRldl9wcml2LT52YnQuY2hpbGRfZGV2W2ldLmNvbW1v bi5kdm9fcG9ydCk7Cj4gV2h5IGRvIHdlIG5lZWQgYSBkZWJ1ZyBtZXNzYWdlIGZvciB0aGUgIm5v IGludmVydCIgY2FzZSBpZiB3ZSBkb24ndAo+IG5lZWQgb25lIGZvciB0aGUgaW52ZXJ0IGNhc2U/ Cj4KPiBUaGUgY29kZSBzdHJ1Y3R1cmUgZmVlbHMgYSBiaXQgd29ua3kuIEl0J3Mgc29ydCBvZiBl eHBlY3RpbmcgbXVsdGlwbGUKPiBjaGlsZCBkZXZzIGZvciBlYWNoIHBvcnQuIENhbiB0aGF0IGFj dHVhbGx5IGhhcHBlbj8KdGhlIGRlYnVnIG1lc3NhZ2UgaXMganVzdCBhIGZhaWwgc2FmZSB0byBs ZXQga25vdyBpZiBWQlQgcHJvZ3JhbW1pbmcgaXMgCmluY29ycmVjdC4KaXQgY2FuIGJlIHJlbW92 ZWQuIGJ1dCB3ZSBhbHJlYWR5IGZvdW5kIGFuZCBmaXhlZCBhIGluY29ycmVjdCBwcm9ncmFtbWlu ZyBpbgpkZWZhdWx0IFZCVCB3aXRoIHRoaXMgc28gaSB3b3VsZCByZWNvbW1lbmQga2VlcGluZyBp dCA6KS4KCnJlZ2FyZGluZyBjaGlsZCBkZXZzLCB0aGUgaW52ZXJ0IGJpdCBjYW4gYmUgc2V0IGZv ciBIRE1JIG9yIERQIGJhc2VkIG9uIAp0aGUgYm9hcmQKZGVzaWduIHNvIHdlIG5lZWQgdG8gaGFu ZGxlIHRoaXMgZm9yIGJvdGggcG9ydCB0eXBlcy4gaGVuY2Ugd2UgYXJlIApjaGVja2luZyBmb3IK Ym90aCBoZXJlLiBpIHRvbyBmZWx0IGl0IG9kZCBoYXZpbmcgdG8gbG9vcCB0d2ljZSBvbmNlIGhl cmUgYW5kIGFnYWluIGluCgpieHRfaHBkX3NldF9pbnZlcnQuCgppZiB3ZSBjYW4gY29tZSB1cCB3 aXRoIGEgc2ltcGxlciBkZXNpZ24gdGhlbiBpIHdvdWxkIGZhdm9yIGl0IGFzIHdlbGwgCmJ1dCBm b3Igbm93CnRoaXMgc2VlbXMgdG8gYmUgcmVxdWlyZWQuCgpyZWdhcmRzLApTaXZha3VtYXIKPgo+ PiArCQkJCWJyZWFrOwo+PiArCQkJfQo+PiArCQl9Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIGZh bHNlOwo+PiArfQo+PiArCj4+ICAgc3RhdGljIHZvaWQKPj4gICBmaWxsX2RldGFpbF90aW1pbmdf ZGF0YShzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqcGFuZWxfZml4ZWRfbW9kZSwKPj4gICAJCQlj b25zdCBzdHJ1Y3QgbHZkc19kdm9fdGltaW5nICpkdm9fdGltaW5nKQo+PiAtLSAKPj4gMi42LjEK Pj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4g SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK