From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 2/3] drm/i915/gen9: Fix PCODE polling during CDCLK change notification Date: Mon, 28 Nov 2016 16:06:05 +0200 Message-ID: <20161128140605.GC31595@intel.com> References: <1480331578-1332-1-git-send-email-imre.deak@intel.com> <1480331578-1332-2-git-send-email-imre.deak@intel.com> <20161128135130.GA31595@intel.com> <1480341248.24456.38.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2FFCA6E352 for ; Mon, 28 Nov 2016 14:06:09 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1480341248.24456.38.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Imre Deak Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBOb3YgMjgsIDIwMTYgYXQgMDM6NTQ6MDhQTSArMDIwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+IE9uIG1hLCAyMDE2LTExLTI4IGF0IDE1OjUxICswMjAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3Jv dGU6Cj4gPiBPbiBNb24sIE5vdiAyOCwgMjAxNiBhdCAwMToxMjo1N1BNICswMjAwLCBJbXJlIERl YWsgd3JvdGU6Cj4gPiA+IGNvbW1pdCA4NDg0OTZlNTkwMjgzMzYwMGY3OTkyZjRmYWE4MmRjMTU0 NjA1MWJhCj4gPiA+IEF1dGhvcjogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KPiA+ID4gRGF0ZTrCoMKgwqBXZWQgSnVsIDEzIDE2OjMyOjAzIDIwMTYgKzAz MDAKPiA+ID4gCj4gPiA+IMKgwqDCoMKgZHJtL2k5MTU6IFdhaXQgdXAgdG8gM21zIGZvciB0aGUg cGN1IHRvIGFjayB0aGUgY2RjbGsgY2hhbmdlIHJlcXVlc3Qgb24gU0tMCj4gPiA+IAo+ID4gPiBp bmNyZWFzZWQgdGhlIHRpbWVvdXQgdG8gbWF0Y2ggdGhlIHNwZWMsIGJ1dCB3ZSBzdGlsbCBzZWUg YSB0aW1lb3V0IG9uCj4gPiA+IGF0IGxlYXN0IG9uZSBTS0wuIEEgQ0RDTEsgY2hhbmdlIHJlcXVl c3QgZm9sbG93aW5nIHRoZSBmYWlsZWQgb25lIHdpbGwKPiA+ID4gc3VjY2VlZCBuZXZlcnRoZWxl c3MuCj4gPiA+IAo+ID4gPiBJIGNvdWxkIHJlcHJvZHVjZSB0aGlzIHByb2JsZW0gZWFzaWx5IGJ5 IHJ1bm5pbmcga21zX3BpcGVfY3JjX2Jhc2ljIGluIGEKPiA+ID4gbG9vcC4gSW4gYWxsIGZhaWx1 cmUgY2FzZXMgX3dhaXRfZm9yKCkgd2FzIHByZS1lbXB0ZWQgZm9yID4zbXMgYW5kIHNvIGluCj4g PiA+IHRoZSB3b3JzdCBjYXNlIC0gd2hlbiB0aGUgcHJlLWVtcHRpb24gaGFwcGVuZWQgcmlnaHQg YWZ0ZXIgY2FsY3VsYXRpbmcKPiA+ID4gdGltZW91dF9fIGluIF93YWl0X2ZvcigpIC0gd2UgY2Fs bGVkIHNrbF9jZGNsa193YWl0X2Zvcl9wY3VfcmVhZHkoKSBvbmx5Cj4gPiA+IG9uY2Ugd2hpY2gg ZmFpbGVkIGFuZCBzbyBfd2FpdF9mb3IoKSB0aW1lZCBvdXQuIEFzIG9wcG9zZWQgdG8gdGhpcyB0 aGUKPiA+ID4gc3BlYyBzYXlzIHRvIGtlZXAgcmV0cnlpbmcgdGhlIHJlcXVlc3QgZm9yIGF0IG1v c3QgYSAzbXMgcGVyaW9kLgo+ID4gPiAKPiA+ID4gVG8gZml4IHRoaXMgZGlzYWJsZSBwcmUtZW1w dGlvbiB0byBtYXhpbWl6ZSB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIHJldHJ5Cj4gPiA+IHRoZSBy ZXF1ZXN0LiBBbHNvIGluY3JlYXNlIHRoZSB0aW1lb3V0IHRvIDEwbXMgdG8gYWNjb3VudCBmb3Ig aW50ZXJydXB0cwo+ID4gPiB0aGF0IGNvdWxkIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHRoZXNlIGF0 dGVtcHRzLiBXaXRoIHRoaXMgY2hhbmdlIEkKPiA+ID4gY291bGRuJ3QgdHJpZ2dlciB0aGUgcHJv YmxlbS4KPiA+ID4gCj4gPiA+IHYyOgo+ID4gPiAtIFVzZSAxbXMgcG9sbCBwZXJpb2QgaW5zdGVh ZCBvZiAxMHVzLiAoQ2hyaXMpCj4gPiA+IHYzOgo+ID4gPiAtIFBvbGwgd2l0aCBwcmUtZW1wdGlv biBkaXNhYmxlZCB0byBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIHJlcXVlc3QKPiA+ID4gwqAgYXR0 ZW1wdHMuIChWaWxsZSwgQ2hyaXMpCj4gPiA+IC0gRmFjdG9yIG91dCBhIGhlbHBlciB0byBwb2xs LCBpdCdzIGFsc28gbmVlZGVkIGJ5IHRoZSBuZXh0IHBhdGNoLgo+ID4gPiAKPiA+ID4gQ2M6IFZp bGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+IENjOiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiA+ID4gUmVmZXJlbmNlOiBo dHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05NzkyOQo+ID4gPiBU ZXN0Y2FzZTogaWd0L2ttc19waXBlX2NyY19iYXNpYy9zdXNwZW5kLXJlYWQtY3JjLXBpcGUtQgo+ ID4gPiBTaWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gPiA+ IC0tLQo+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKgwqB8 wqDCoDEgKwo+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmjCoMKgwqDCoMKg wqB8wqDCoDIgKy0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg fCAyOSArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jwqDCoMKgwqDCoMKgfCA0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKPiA+ID4gwqA0IGZpbGVzIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDIyIGRl bGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiA+IGluZGV4 IDAxZjUwNjcuLmY2MTg4MDcgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ ID4gPiBAQCAtMzU5Myw2ICszNTkzLDcgQEAgZXh0ZXJuIHZvaWQgaW50ZWxfZGlzcGxheV9wcmlu dF9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICplLAo+ID4gPiDC oAo+ID4gPiDCoGludCBzYW5keWJyaWRnZV9wY29kZV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiAqdmFsKTsKPiA+ID4gwqBpbnQgc2FuZHlicmlk Z2VfcGNvZGVfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJv eCwgdTMyIHZhbCk7Cj4gPiA+ICtpbnQgc2tsX3Bjb2RlX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwgdTMyIHJlcXVlc3QpOwo+ID4gPiDCoAo+ID4g PiDCoC8qIGludGVsX3NpZGViYW5kLmMgKi8KPiA+ID4gwqB1MzIgdmx2X3B1bml0X3JlYWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkcik7Cj4gPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaAo+ID4gPiBpbmRleCA2NzQ3ZDY4Li5mNTQyY2JjIDEwMDY0NAo+ID4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4gQEAgLTc0MjQsNyArNzQyNCw2IEBAIGVudW0g ewo+ID4gPiDCoCNkZWZpbmXCoMKgwqDCoMKgR0VOOV9NRU1fTEFURU5DWV9MRVZFTF8zXzdfU0hJ RlQJMjQKPiA+ID4gwqAjZGVmaW5lwqDCoMKgU0tMX1BDT0RFX0NEQ0xLX0NPTlRST0wJCTB4Nwo+ ID4gPiDCoCNkZWZpbmXCoMKgwqDCoMKgU0tMX0NEQ0xLX1BSRVBBUkVfRk9SX0NIQU5HRQkweDMK PiA+ID4gLSNkZWZpbmXCoMKgwqDCoMKgU0tMX0NEQ0xLX1JFQURZX0ZPUl9DSEFOR0UJCTB4MQo+ ID4gPiDCoCNkZWZpbmXCoMKgwqBHRU42X1BDT0RFX1dSSVRFX01JTl9GUkVRX1RBQkxFCTB4OAo+ ID4gPiDCoCNkZWZpbmXCoMKgwqBHRU42X1BDT0RFX1JFQURfTUlOX0ZSRVFfVEFCTEUJMHg5Cj4g PiA+IMKgI2RlZmluZcKgwqDCoEdFTjZfUkVBRF9PQ19QQVJBTVMJCQkweGMKPiA+ID4gQEAgLTc0 MzcsNiArNzQzNiw3IEBAIGVudW0gewo+ID4gPiDCoCNkZWZpbmXCoMKgwqDCoMKgR0VOOV9TQUdW X0RJU0FCTEUJCQkweDAKPiA+ID4gwqAjZGVmaW5lwqDCoMKgwqDCoEdFTjlfU0FHVl9JU19ESVNB QkxFRAkJMHgxCj4gPiA+IMKgI2RlZmluZcKgwqDCoMKgwqBHRU45X1NBR1ZfRU5BQkxFCQkJMHgz Cj4gPiA+ICsjZGVmaW5lwqDCoMKgR0VOOV9QQ09ERV9SRVFVRVNUX0RPTkUJCTB4MQo+ID4gCj4g PiBJcyB0aGF0IHJlYWxseSBhIGdlbmVyaWMgdGhpbmc/Cj4gCj4gQXQgbGVhc3QgU0FHViB1c2Vz IHRoZSBzYW1lIGFuZCB0aGVyZSBpcyBubyBvdGhlciByZXF1ZXN0IEkga25vdyBvZgo+IHRoYXQg d291bGQgbmVlZCB0aGlzIHBvbGxpbmcgcmVxdWVzdC4gSXQgd2lsbCBiZSB1c2VkIGluIHRoZSBu ZXh0IHBhdGNoCj4gZm9yIFNBR1YgdG9vLgoKQXQgbGVhc3QgaXQncyBhIGJpdCBtaXNwYWNlZCBz aW5jZSBub3cgaXQgbG9va3MgbGlrZSBpdCB3b3VsZCBiZQphIHBjb2RlIGNvbW1hbmQsIGJ1dCBj b21tYW5kIDB4MSA9PSBDTURfQ09ORklHIGFjY29yZGluZyB0byB0aGUgc3BlYy4KCj4gCj4gPiAK PiA+ID4gwqAjZGVmaW5lIEdFTjZfUENPREVfREFUQQkJCQlfTU1JTygweDEzODEyOCkKPiA+ID4g wqAjZGVmaW5lwqDCoMKgR0VONl9QQ09ERV9GUkVRX0lBX1JBVElPX1NISUZUCTgKPiA+ID4gwqAj ZGVmaW5lwqDCoMKgR0VONl9QQ09ERV9GUkVRX1JJTkdfUkFUSU9fU0hJRlQJMTYKPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiBpbmRleCA1ZDExMDAyLi40NmMwZTQy IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+IEBA IC02MjQ1LDM1ICs2MjQ1LDIyIEBAIHNrbF9kcGxsMF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiA+ID4gwqAJZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPSAwOwo+ ID4gPiDCoH0KPiA+ID4gwqAKPiA+ID4gLXN0YXRpYyBib29sIHNrbF9jZGNsa19wY3VfcmVhZHko c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAtewo+ID4gPiAtCWludCBy ZXQ7Cj4gPiA+IC0JdTMyIHZhbDsKPiA+ID4gLQo+ID4gPiAtCS8qIGluZm9ybSBQQ1Ugd2Ugd2Fu dCB0byBjaGFuZ2UgQ0RDTEsgKi8KPiA+ID4gLQl2YWwgPSBTS0xfQ0RDTEtfUFJFUEFSRV9GT1Jf Q0hBTkdFOwo+ID4gPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gPiA+ IC0JcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwgU0tMX1BDT0RFX0NEQ0xL X0NPTlRST0wsICZ2YWwpOwo+ID4gPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19s b2NrKTsKPiA+ID4gLQo+ID4gPiAtCXJldHVybiByZXQgPT0gMCAmJiAodmFsICYgU0tMX0NEQ0xL X1JFQURZX0ZPUl9DSEFOR0UpOwo+ID4gPiAtfQo+ID4gPiAtCj4gPiA+IC1zdGF0aWMgYm9vbCBz a2xfY2RjbGtfd2FpdF9mb3JfcGN1X3JlYWR5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiA+ID4gLXsKPiA+ID4gLQlyZXR1cm4gX3dhaXRfZm9yKHNrbF9jZGNsa19wY3VfcmVh ZHkoZGV2X3ByaXYpLCAzMDAwLCAxMCkgPT0gMDsKPiA+ID4gLX0KPiA+ID4gLQo+ID4gPiDCoHN0 YXRpYyB2b2lkIHNrbF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBpbnQgY2RjbGssIGludCB2Y28pCj4gPiA+IMKgewo+ID4gPiDCoAl1MzIgZnJlcV9zZWxlY3Qs IHBjdV9hY2s7Cj4gPiA+ICsJaW50IHJldDsKPiA+ID4gwqAKPiA+ID4gwqAJV0FSTl9PTigoY2Rj bGsgPT0gMjQwMDApICE9ICh2Y28gPT0gMCkpOwo+ID4gPiDCoAo+ID4gPiDCoAlEUk1fREVCVUdf RFJJVkVSKCJDaGFuZ2luZyBDRENMSyB0byAlZCBrSHogKFZDTyAlZCBrSHopXG4iLCBjZGNsaywg dmNvKTsKPiA+ID4gwqAKPiA+ID4gLQlpZiAoIXNrbF9jZGNsa193YWl0X2Zvcl9wY3VfcmVhZHko ZGV2X3ByaXYpKSB7Cj4gPiA+IC0JCURSTV9FUlJPUigiZmFpbGVkIHRvIGluZm9ybSBQQ1UgYWJv dXQgY2RjbGsgY2hhbmdlXG4iKTsKPiA+ID4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3 X2xvY2spOwo+ID4gPiArCXJldCA9IHNrbF9wY29kZV9yZXF1ZXN0KGRldl9wcml2LCBTS0xfUENP REVfQ0RDTEtfQ09OVFJPTCwKPiA+ID4gKwkJCQlTS0xfQ0RDTEtfUFJFUEFSRV9GT1JfQ0hBTkdF KTsKPiA+ID4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gPiA+ICsJ aWYgKHJldCkgewo+ID4gPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBpbmZvcm0gUENVIGFib3V0 IGNkY2xrIGNoYW5nZSAoJWQpXG4iLAo+ID4gPiArCQkJwqDCoHJldCk7Cj4gPiA+IMKgCQlyZXR1 cm47Cj4gPiA+IMKgCX0KPiA+ID4gwqAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiA+ IGluZGV4IDY2YzYyZjMuLmVkZDY4ZjMgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYwo+ID4gPiBAQCAtNzg2NCw2ICs3ODY0LDQ5IEBAIGludCBzYW5keWJyaWRnZV9wY29kZV93 cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+IMKgCXJldHVybiAw Owo+ID4gPiDCoH0KPiA+ID4gwqAKPiA+ID4gK3N0YXRpYyBib29sIHNrbF9wY29kZV90cnlfcmVx dWVzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYm94LAo+ID4gPiAr CQkJCcKgwqB1MzIgcmVxdWVzdCwgdTMyICpzdGF0dXMpCj4gPiA+ICt7Cj4gPiA+ICsJdTMyIHZh bCA9IHJlcXVlc3Q7Cj4gPiA+ICsKPiA+ID4gKwkqc3RhdHVzID0gc2FuZHlicmlkZ2VfcGNvZGVf cmVhZChkZXZfcHJpdiwgbWJveCwgJnZhbCk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gKnN0YXR1 cyB8fCAodmFsICYgR0VOOV9QQ09ERV9SRVFVRVNUX0RPTkUpOwo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICsvKioKPiA+ID4gKyAqIHNrbF9wY29kZV9yZXF1ZXN0IC0gc2VuZCBQQ09ERSByZXF1ZXN0 IHVudGlsIGFja25vd2xlZGdtZW50Cj4gPiA+ICsgKiBAZGV2X3ByaXY6IGRldmljZSBwcml2YXRl Cj4gPiA+ICsgKiBAbWJveDogUENPREUgbWFpbGJveCBJRCB0aGUgcmVxdWVzdCBpcyB0YXJnZXRl ZCBmb3IKPiA+ID4gKyAqIEByZXF1ZXN0OiByZXF1ZXN0IElECj4gPiA+ICsgKgo+ID4gPiArICog S2VlcCByZXNlbmRpbmcgdGhlIEByZXF1ZXN0IHRvIEBtYm94IHVudGlsIFBDT0RFIGFja25vd2xl ZGdlcyBpdCwgb3IgYSAxMG1zCj4gPiA+ICsgKiB0aW1lb3V0IGV4cGlyZXMuCj4gPiA+ICsgKgo+ ID4gPiArICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsICUtRVRJTUVET1VUIGluIGNhc2Ugb2YgYSB0 aW1lb3V0LCA8MCBpbiBjYXNlIG9mIHNvbWUKPiA+ID4gKyAqIG90aGVyIGVycm9yIGFzIHJlcG9y dGVkIGJ5IFBDT0RFLgo+ID4gPiArICovCj4gPiA+ICtpbnQgc2tsX3Bjb2RlX3JlcXVlc3Qoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwgdTMyIHJlcXVlc3QpCj4g PiA+ICt7Cj4gPiA+ICsJdTMyIHN0YXR1czsKPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiArCj4gPiA+ ICsJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spKTsKPiA+ ID4gKwo+ID4gPiArCS8qCj4gPiA+ICsJwqAqIFRoZSBzcGVjIHNheXMgdG8ga2VlcCByZXRyeWlu ZyB0aGUgcmVxdWVzdCBmb3IgYXQgbW9zdCAzbXMgdW50aWwKPiA+ID4gKwnCoCogYWNrbm93bGVk Z2VtZW50LCBzbyBkaXNhYmxlIHByZS1lbXB0aW9uIHRvIG1heGltaXplIHRoZSBudW1iZXIgb2YK PiA+ID4gKwnCoCogYXR0ZW1wdHMgd2l0aGluIHRoaXMgZHVyYXRpb24uIFVzZSBhIDEwbXMgb3Zl cmFsbCB0aW1lb3V0IHRvCj4gPiA+ICsJwqAqIGFjY291bnQgZm9yIGludGVycnVwdHMgdGhhdCBj b3VsZCByZWR1Y2UgdGhlIG51bWJlciBvZiBhdHRlbXB0cy4KPiA+ID4gKwnCoCovCj4gPiA+ICsJ cHJlZW1wdF9kaXNhYmxlKCk7Cj4gPiA+ICsJcmV0ID0gd2FpdF9mb3JfYXRvbWljKHNrbF9wY29k ZV90cnlfcmVxdWVzdChkZXZfcHJpdiwgbWJveCwgcmVxdWVzdCwKPiA+ID4gKwkJCQkJCcKgwqDC oMKgJnN0YXR1cyksIDEwKTsKPiA+ID4gKwlwcmVlbXB0X2VuYWJsZSgpOwo+ID4gPiArCj4gPiA+ ICsJcmV0dXJuIHJldCA/IHJldCA6IHN0YXR1czsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiDCoHN0 YXRpYyBpbnQgYnl0X2dwdV9mcmVxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg aW50IHZhbCkKPiA+ID4gwqB7Cj4gPiA+IMKgCS8qCj4gPiA+IC0twqAKPiA+ID4gMi41LjAKPiA+ IAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==