From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: More DPIO magic for CHV HDMI & DP Date: Fri, 30 Jan 2015 13:09:02 +0200 Message-ID: <20150130110902.GB19354@intel.com> References: <1422556313-3198-1-git-send-email-vijay.a.purushothaman@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 9AA0A6E0E4 for ; Fri, 30 Jan 2015 03:09:06 -0800 (PST) Content-Disposition: inline In-Reply-To: <1422556313-3198-1-git-send-email-vijay.a.purushothaman@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: Vijay Purushothaman Cc: Intel Graphics List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKYW4gMzAsIDIwMTUgYXQgMTI6MDE6NTNBTSArMDUzMCwgVmlqYXkgUHVydXNob3Ro YW1hbiB3cm90ZToKPiBUaGlzIHBhdGNoIGltcGxlbWVudHMgbGF0ZXN0IGNoYW5nZXMgaW4gR2Fp biwgbG9jayB0aHJlc2hvbGQgYW5kIGludGVnZXIKPiBjby1lZmZpY2llbnQgdmFsdWVzIHVzaW5n IHNpZGViYW5kIHIvdy4gV2l0aG91dCB0aGVzZSBjaGFuZ2VzIHRoZXJlIHdpbGwKPiBiZSBzaWdu YWwgaW50ZWdyaXR5IGlzc3VlcyBmb3IgYm90aCBIRE1JIGFuZCBEUC4KPiAKPiBDaGFuZ2UtSWQ6 IEk3YjcxNTFiNWFiM2E1MmM0YzkxMmNmMTA2MDJjNjlhN2QxYTcwMjIyCj4gU2lnbmVkLW9mZi1i eTogVmlqYXkgUHVydXNob3RoYW1hbiA8dmlqYXkuYS5wdXJ1c2hvdGhhbWFuQGxpbnV4LmludGVs LmNvbT4KPiBUZXN0ZWQtYnk6IEhvbmcgTGl1IDxob25nLmxpdUBpbnRlbC5jb20+Cj4gLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICB8ICAgMzEgKysrKysrKysrKysr KysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgIDY3ICsrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KPiAgMiBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNl cnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBp bmRleCAxMzdjNWUwLi4yYjNmMDY1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAg LTEwNDksNiArMTA0OSwzNyBAQCBlbnVtIHB1bml0X3Bvd2VyX3dlbGwgewo+ICAjZGVmaW5lICAg RFBJT19DSFZfUFJPUF9DT0VGRl9TSElGVAkwCj4gICNkZWZpbmUgQ0hWX1BMTF9EVzYoY2gpIF9Q SVBFKGNoLCBfQ0hWX1BMTF9EVzZfQ0gwLCBfQ0hWX1BMTF9EVzZfQ0gxKQo+ICAKPiArI2RlZmlu ZSBfQ0hWX1BMTF9EVzdfQ0gwCQkweDgwMWMKPiArI2RlZmluZSBfQ0hWX1BMTF9EVzdfQ0gxCQkw eDgwM2MKPiArI2RlZmluZSBDSFZfUExMX0RXNyhjaCkgX1BJUEUoY2gsIF9DSFZfUExMX0RXN19D SDAsIF9DSFZfUExMX0RXN19DSDEpCgp1bnVzZWQKCj4gKwo+ICsjZGVmaW5lIF9DSFZfUExMX0RX OF9DSDAJCTB4ODAyMAo+ICsjZGVmaW5lIF9DSFZfUExMX0RXOF9DSDEJCTB4ODFBMAo+ICsjZGVm aW5lIENIVl9QTExfRFc4KGNoKSBfUElQRShjaCwgX0NIVl9QTExfRFc4X0NIMCwgX0NIVl9QTExf RFc4X0NIMSkKPiArCj4gKyNkZWZpbmUgX0NIVl9QTExfRFc5X0NIMAkJMHg4MDI0Cj4gKyNkZWZp bmUgX0NIVl9QTExfRFc5X0NIMQkJMHg4MUE0Cj4gKyNkZWZpbmUgIERQSU9fQ0hWX0lOVF9MT0NL X1RIUkVTSE9MRF9TSElGVAkJMSAvKiAzIGJpdHMgKi8KPiArI2RlZmluZSAgRFBJT19DSFZfSU5U X0xPQ0tfVEhSRVNIT0xEX1NFTF9DT0FSU0UJMSAvKiAxOiBjb2Fyc2UgJiAwIDogZmluZSAgKi8K PiArI2RlZmluZSBDSFZfUExMX0RXOShjaCkgX1BJUEUoY2gsIF9DSFZfUExMX0RXOV9DSDAsIF9D SFZfUExMX0RXOV9DSDEpCj4gKwo+ICsjZGVmaW5lIF9DSFZfUExMX0RXMTBfQ0gwCQkweDgwNDAK PiArI2RlZmluZSBfQ0hWX1BMTF9EVzEwX0NIMQkJMHg4MDYwCj4gKyNkZWZpbmUgQ0hWX1BMTF9E VzEwKGNoKSBfUElQRShjaCwgX0NIVl9QTExfRFcxMF9DSDAsIF9DSFZfUExMX0RXMTBfQ0gxKQo+ ICsKPiArI2RlZmluZSBfQ0hWX1BMTF9EVzExX0JDQVNUCQkweEMwNDQKPiArI2RlZmluZSBfQ0hW X1BMTF9EVzExX0NIMAkJMHg4MDQ0Cj4gKyNkZWZpbmUgX0NIVl9QTExfRFcxMV9DSDEJCTB4ODA2 NAo+ICsjZGVmaW5lIENIVl9QTExfRFcxMShjaCkgX1BJUEUoY2gsIF9DSFZfUExMX0RXMTFfQ0gw LCBfQ0hWX1BMTF9EVzExX0NIMSkKPiArCj4gKyNkZWZpbmUgX0NIVl9QTExfRFcxMl9DSDAJCTB4 ODA0OAo+ICsjZGVmaW5lIF9DSFZfUExMX0RXMTJfQ0gxCQkweDgwNjgKPiArI2RlZmluZSBDSFZf UExMX0RXMTIoY2gpIF9QSVBFKGNoLCBfQ0hWX1BMTF9EVzEyX0NIMCwgX0NIVl9QTExfRFcxMl9D SDEpCj4gKwo+ICsjZGVmaW5lIF9DSFZfUExMX0RXMTNfQ0gwCQkweDgwNEMKPiArI2RlZmluZSBf Q0hWX1BMTF9EVzEzX0NIMQkJMHg4MDZDCj4gKyNkZWZpbmUgQ0hWX1BMTF9EVzEzKGNoKSBfUElQ RShjaCwgX0NIVl9QTExfRFcxM19DSDAsIF9DSFZfUExMX0RXMTNfQ0gxKQoKRFcxMC1EVzEzIGFy ZSB1bnVzZWQgYXMgd2VsbAoKPiArCj4gICNkZWZpbmUgX0NIVl9DTU5fRFc1X0NIMCAgICAgICAg ICAgICAgIDB4ODExNAo+ICAjZGVmaW5lICAgQ0hWX0JVRlJJR0hURU5BMV9ESVNBQkxFCSgwIDw8 IDIwKQo+ICAjZGVmaW5lICAgQ0hWX0JVRlJJR0hURU5BMV9OT1JNQUwJKDEgPDwgMjApCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGMzNjJkMTFlLi5mYjI3ZmFmIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC02NTc2LDkgKzY1NzYs OSBAQCBzdGF0aWMgdm9pZCBjaHZfdXBkYXRlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykK PiAgCWludCBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCWludCBkcGxsX3JlZyA9IERQTEwoY3J0Yy0+ cGlwZSk7Cj4gIAllbnVtIGRwaW9fY2hhbm5lbCBwb3J0ID0gdmx2X3BpcGVfdG9fY2hhbm5lbChw aXBlKTsKPiAtCXUzMiBsb29wZmlsdGVyLCBpbnRjb2VmZjsKPiArCXUzMiBsb29wZmlsdGVyLCB0 cmlidWZfY2FsY250cjsKPiAgCXUzMiBiZXN0biwgYmVzdG0xLCBiZXN0bTIsIGJlc3RwMSwgYmVz dHAyLCBiZXN0bTJfZnJhYzsKPiAtCWludCByZWZjbGs7Cj4gKwlpbnQgdmNvOwo+ICAKPiAgCWNy dGMtPmNvbmZpZy5kcGxsX2h3X3N0YXRlLmRwbGwgPSBEUExMX1NTQ19SRUZfQ0xPQ0tfQ0hWIHwK PiAgCQlEUExMX1JFRkFfQ0xLX0VOQUJMRV9WTFYgfCBEUExMX1ZHQV9NT0RFX0RJUyB8Cj4gQEAg LTY1OTUsNiArNjU5NSw3IEBAIHN0YXRpYyB2b2lkIGNodl91cGRhdGVfcGxsKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQo+ICAJYmVzdG0yID0gY3J0Yy0+Y29uZmlnLmRwbGwubTIgPj4gMjI7Cj4g IAliZXN0cDEgPSBjcnRjLT5jb25maWcuZHBsbC5wMTsKPiAgCWJlc3RwMiA9IGNydGMtPmNvbmZp Zy5kcGxsLnAyOwo+ICsJdmNvID0gY3J0Yy0+Y29uZmlnLmRwbGwudmNvOwo+ICAKPiAgCS8qCj4g IAkgKiBFbmFibGUgUmVmY2xrIGFuZCBTU0MKPiBAQCAtNjYxOSwzMSArNjYyMCw1OSBAQCBzdGF0 aWMgdm9pZCBjaHZfdXBkYXRlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCQkJRFBJ T19DSFZfTTFfRElWX0JZXzIgfAo+ICAJCQkxIDw8IERQSU9fQ0hWX05fRElWX1NISUZUKTsKPiAg Cj4gLQkvKiBNMiBmcmFjdGlvbiBkaXZpc2lvbiAqLwo+IC0Jdmx2X2RwaW9fd3JpdGUoZGV2X3By aXYsIHBpcGUsIENIVl9QTExfRFcyKHBvcnQpLCBiZXN0bTJfZnJhYyk7Cj4gKwlpZiAoYmVzdG0y X2ZyYWMpIHsKPiArCQkvKiBNMiBmcmFjdGlvbiBkaXZpc2lvbiAqLwo+ICsJCXZsdl9kcGlvX3dy aXRlKGRldl9wcml2LCBwaXBlLCBDSFZfUExMX0RXMihwb3J0KSwgYmVzdG0yX2ZyYWMpOwo+ICsK PiArCQkvKiBNMiBmcmFjdGlvbiBkaXZpc2lvbiBlbmFibGUgKi8KPiArCQl2bHZfZHBpb193cml0 ZShkZXZfcHJpdiwgcGlwZSwgQ0hWX1BMTF9EVzMocG9ydCksCj4gKwkJCQl2bHZfZHBpb19yZWFk KGRldl9wcml2LCBwaXBlLCBDSFZfUExMX0RXMyhwb3J0KSkgJgoKcy8mL3wvCgpBcyBhIGdlbmVy YWwgc3R5bGUgaXNzdWUgSSBkb24ndCBsaWtlIGhpZGluZyB0aGUgdmx2X2RwaW9fcmVhZCgpIGlu c2lkZQp0aGUgdmx2X2RwaW9fd3JpdGUoKS4gU28gdGhlIHBhdHRlciBoYXMgYmVlbjoKCnZhbCA9 IHZsdl9kcGlvX3JlYWQoKTsKY2hhbmdlIHZhbAp2bHZfZHBpcF93cml0ZSh2YWwpOwoKRXZlbnR1 YWxseSBJJ20gcGxhbm5pbmcgdG8gZ2V0IHJpZCBvZiB0aGUgUk1XIHN0dWZmLiBCdXQgSSd2ZSBu b3QgZG9uZQp0aGF0IHlldCBzaW5jZSBJIHdhcyB3b3JyaWVkIHNvbWUgb2YgdGhlIHVuY2hhbmdl ZCByZXNldCB2YWx1ZXMgd291bGQKc3RpbGwgY2hhbmdlIGFzIHRoZSBoYXJkd2FyZSBldm9sdmVz LiBJJ20gaG9waW5nIHN0dWZmIGhhcyBiZWVuIG1vcmUgb3IKbGVzcyBuYWlsZWQgZG93biBieSBu b3cgc28gd2UgY291bGQgcHJvYmFibHkgYXR0ZW1wdCB0aGlzLgoKPiArCQkJCURQSU9fQ0hWX0ZS QUNfRElWX0VOKTsKPiArCj4gKwkJLyogUHJvZ3JhbSBkaWdpdGFsIGxvY2sgZGV0ZWN0IHRocmVz aG9sZCAqLwo+ICsJCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBDSFZfUExMX0RXOShw b3J0KSwKPiArCQkJCXZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIENIVl9QTExfRFc5KHBv cnQpKSB8Cj4gKwkJCQkoMHg1IDw8IERQSU9fQ0hWX0lOVF9MT0NLX1RIUkVTSE9MRF9TSElGVCkp Owo+ICsJfSBlbHNlIHsKPiArCQkvKiBNMiBmcmFjdGlvbiBkaXZpc2lvbiBkaXNhYmxlICovCj4g KwkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIENIVl9QTExfRFczKHBvcnQpLAo+ICsJ CQkJdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1BMTF9EVzMocG9ydCkpICYKPiAr CQkJCX4oRFBJT19DSFZfRlJBQ19ESVZfRU4pKTsKPiAgCj4gLQkvKiBNMiBmcmFjdGlvbiBkaXZp c2lvbiBlbmFibGUgKi8KPiAtCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBDSFZfUExM X0RXMyhwb3J0KSwKPiAtCQkgICAgICAgRFBJT19DSFZfRlJBQ19ESVZfRU4gfAo+IC0JCSAgICAg ICAoMiA8PCBEUElPX0NIVl9GRUVERldEX0dBSU5fU0hJRlQpKTsKPiArCQkvKiBQcm9ncmFtIGRp Z2l0YWwgbG9jayBkZXRlY3QgdGhyZXNob2xkICovCj4gKwkJdmx2X2RwaW9fd3JpdGUoZGV2X3By aXYsIHBpcGUsIENIVl9QTExfRFc5KHBvcnQpLAo+ICsJCQkJdmx2X2RwaW9fcmVhZChkZXZfcHJp diwgcGlwZSwgQ0hWX1BMTF9EVzkocG9ydCkpIHwKPiArCQkJCSgweDUgPDwgRFBJT19DSFZfSU5U X0xPQ0tfVEhSRVNIT0xEX1NISUZUKSB8Cj4gKwkJCQlEUElPX0NIVl9JTlRfTE9DS19USFJFU0hP TERfU0VMX0NPQVJTRSk7Cj4gKwl9Cj4gIAo+ICAJLyogTG9vcCBmaWx0ZXIgKi8KPiAtCXJlZmNs ayA9IGk5eHhfZ2V0X3JlZmNsaygmY3J0Yy0+YmFzZSwgMCk7Cj4gLQlsb29wZmlsdGVyID0gNSA8 PCBEUElPX0NIVl9QUk9QX0NPRUZGX1NISUZUIHwKPiAtCQkyIDw8IERQSU9fQ0hWX0dBSU5fQ1RS TF9TSElGVDsKPiAtCWlmIChyZWZjbGsgPT0gMTAwMDAwKQo+IC0JCWludGNvZWZmID0gMTE7Cj4g LQllbHNlIGlmIChyZWZjbGsgPT0gMzg0MDApCj4gLQkJaW50Y29lZmYgPSAxMDsKPiArCWlmICh2 Y28gPT0gNTQwMDAwKQo+ICsJCWxvb3BmaWx0ZXIgPSAweDEwODAzOwo+ICsJZWxzZSBpZiAodmNv IDw9IDYyMDAwMCkKPiArCQlsb29wZmlsdGVyID0gMHgzMEIwNTsKPiArCWVsc2UgaWYgKHZjbyA8 PSA2NDgwMDApCgpUaG9zZSB2Y28gbGltaXRzIGxvb2sgd2F5IHRvbyBsb3cuIFRoZSB2Y28gZnJl cSBzaG91bGQgYmUgc29tZXdoZXJlCmluIHRoZSA0LTYgR0h6IHJhbmdlLiBBcmUgdGhlc2Ugb2Zm IGJ5IGEgZmFjdG9yIG9mIDEwLCBvciB3ZXJlIHlvdQp0aGlua2luZyBvZiBzb21lIG90aGVyIGNs b2NrIGhlcmU/Cgo+ICsJCWxvb3BmaWx0ZXIgPSAweDMwOTA0Owo+ICsJZWxzZQo+ICsJCWxvb3Bm aWx0ZXIgPSAweDEwODAzOwoKSSdkIGxpa2UgdG8gaGF2ZSBuYW1lcyBmb3IgYWxsIHRoZSBtYWdp YyBiaXRzLCBlc3BlY2lhbGx5IGFzIHRoZSBzcGVjCnNpdHVhdGlvbiBpcyB3aGF0IGl0IGlzLCBz byBkZWNvZGluZyBtYWdpYyBudW1iZXJzIGlzIGEgYml0IHBhaW5mdWwuCgo+ICsJdmx2X2RwaW9f d3JpdGUoZGV2X3ByaXYsIHBpcGUsIENIVl9QTExfRFc2KHBvcnQpLAo+ICsJCQkoKHZsdl9kcGlv X3JlYWQoZGV2X3ByaXYsIHBpcGUsIENIVl9QTExfRFc2KHBvcnQpKSAmCj4gKwkJCTB4RkYwMDAw MDApIHwgbG9vcGZpbHRlcikpOwoKVGhlIHRvcCBiaXRzIHNlZW0gdG8gYmUgYWxsIHJlc2VydmVk IGFuZCBkZWZhdWx0IHRvIDAuIFNvIHRoZSBtYXNrIGFuZApSTVcgY2FuIHN1cmVseSBnbz8KCj4g Kwo+ICsJaWYgKHZjbyA8PSA2MjAwMDApCj4gKwkJdHJpYnVmX2NhbGNudHIgPSAweDk7Cj4gKwll bHNlIGlmICh2Y28gPD0gNjQ4MDAwKQo+ICsJCXRyaWJ1Zl9jYWxjbnRyID0gMHg4Owo+ICAJZWxz ZQo+IC0JCWludGNvZWZmID0gOTsKPiAtCWxvb3BmaWx0ZXIgfD0gaW50Y29lZmYgPDwgRFBJT19D SFZfSU5UX0NPRUZGX1NISUZUOwo+IC0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIENI Vl9QTExfRFc2KHBvcnQpLCBsb29wZmlsdGVyKTsKPiArCQl0cmlidWZfY2FsY250ciA9IDA7Cj4g Kwl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgQ0hWX1BMTF9EVzgocG9ydCksCj4gKwkJ CSgodmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1BMTF9EVzgocG9ydCkpICYKPiAr CQkJMHhGRkZGRkYwMCkgfCB0cmlidWZfY2FsY250cikpOwo+ICAKPiAgCS8qIEFGQyBSZWNhbCAq Lwo+ICAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIENIVl9DTU5fRFcxNChwb3J0KSwK PiAgCQkJdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX0NNTl9EVzE0KHBvcnQpKSB8 Cj4gLQkJCURQSU9fQUZDX1JFQ0FMKTsKPiArCQkJRFBJT19BRkNfUkVDQUwgfCBEUElPX0RDTEtQ X0VOKTsKCldoeSB0aGlzPyBXZSBlbmFibGUgaXQgaW4gY2h2X2VuYWJsZV9wbGwoKSBhbHJlYWR5 IGFmdGVyIHRoZSBQTEwgaXRzZWxmCmhhcyBiZWVuIGVuYWJsZWQuIElzIHRoYXQgdG9vIGxhdGUg Zm9yIHNvbWUgcmVhc29uPwoKCkdlbmVyYWxseSBJIHRoaW5rIHRoZSBwYXRjaCBzaG91bGQgYmUg c3BsaXQgaW50byBzZXZlcmFsIHBhcnRzOgotIGZyYWMgdnMuIGludCBkaXZpZGVyCi0gaW50X2xv Y2tfdGhyZXNob2xkCi0gbG9vcCBmaWx0ZXIgc3R1ZmYKLSBkY2xrcCBlbmFibGUsIGlmIHJlYWxs eSBuZWVkZWQsIGFuZCB0aGUgY29tbWl0IG1lc3NhZ2Ugc2hvdWxkIHNheSB3aHkKICBpdCdzIG5l ZWRlZC4KCgpPbiBhIHNsaWdodGx5IHJlbGF0ZWQgdG9waWMsIHllc3RlcmRheSBJIG1hbmFnZWQg dG8gbmFycm93IGRvd24gc29tZSBraW5kCm9mIHByb2JsZW0gd2l0aCBkYXRhIGxhbmUgRENDIGNh bGlicmF0aW9uLiBJdCBtYW5pZmVzdHMgYXMgbGluayB0cmFpbmluZwpmYWlsaW5nIHdoZW4gZHJp dmluZyBEUCBwb3J0IEIgd2l0aCBwaXBlIEEgYWZ0ZXIgdGhlIGNtbmxhbmUgcG93ZXIgd2VsbApo YXMgYmVlbiB0dXJuZWQgb2ZmLCBvciBpZiBwb3J0IEIgaGFzIGJlZW4gZHJpdmVuIHdpdGggcGlw ZSBCIHByZXZpb3VzbHkuCklmIEkgcmV0cnkgdGhlIG1vZGVzZXQgYSBzZWNvbmQgdGltZSB0aGUg bGluayB0cmFpbmluZyB3aWxsIHN1Y2NlZWQuIEkKYWxzbyBtYW5hZ2VkIHRvIG1ha2UgaXQgd29y ayBieSBmb3JjaW5nIGEgRENDIGNhbGlicmF0aW9uIGluCmNodl9wcmVfZW5hYmxlX2RwKCkuIFdo YXQncyBzbGlnaHRseSBvZGQgaXMgdGhhdCB3aXRoIHBpcGUgQSB0aGUgZm9yY2VkCmNhbGlicmF0 aW9uIHN1Y2NlZWRzLCBidXQgd2l0aCBwaXBlIEIgaXQgZG9lc24ndCBhbmQgeWV0IHBpcGUgQiBh bHdheXMKd29ya3MgYW5kIHRoZSBjYWxpYnJhdGlvbiBzdGF0dXMgc2VlbXMgdG8gaW5kaWNhdGVz IHN1Y2Nlc3MgYWZ0ZXIgdGhlCkRQIHBvcnQgcmVnaXN0ZXIgaGFzIGJlZW4gZW5hYmxlZC4gSSdt IHN0aWxsIGxvb2tpbmcgaW50byB0aGlzLCBidXQgSQp3YXMganVzdCB3b25kZXJpbmcgaWYgeW91 J3ZlIHNlZW4gYW55dGhpbmcgc2ltaWxhcj8KCj4gIAo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+ZHBpb19sb2NrKTsKPiAgfQo+IC0tIAo+IDEuNy45LjUKCi0tIApWaWxsZSBTeXJqw6Rsw6QK SW50ZWwgT1RDCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbnRlbCBGaW5sYW5kIE95ClJlZ2lzdGVyZWQgQWRkcmVz czogUEwgMjgxLCAwMDE4MSBIZWxzaW5raSAKQnVzaW5lc3MgSWRlbnRpdHkgQ29kZTogMDM1NzYw NiAtIDQgCkRvbWljaWxlZCBpbiBIZWxzaW5raSAKClRoaXMgZS1tYWlsIGFuZCBhbnkgYXR0YWNo bWVudHMgbWF5IGNvbnRhaW4gY29uZmlkZW50aWFsIG1hdGVyaWFsIGZvcgp0aGUgc29sZSB1c2Ug b2YgdGhlIGludGVuZGVkIHJlY2lwaWVudChzKS4gQW55IHJldmlldyBvciBkaXN0cmlidXRpb24K Ynkgb3RoZXJzIGlzIHN0cmljdGx5IHByb2hpYml0ZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRl bmRlZApyZWNpcGllbnQsIHBsZWFzZSBjb250YWN0IHRoZSBzZW5kZXIgYW5kIGRlbGV0ZSBhbGwg Y29waWVzLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK