From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH v3 2/3] drm/i915/gen9: Fix PCODE polling during CDCLK change notification Date: Mon, 28 Nov 2016 15:54:08 +0200 Message-ID: <1480341248.24456.38.camel@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> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id D9A7A6E226 for ; Mon, 28 Nov 2016 13:54:10 +0000 (UTC) In-Reply-To: <20161128135130.GA31595@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gbWEsIDIwMTYtMTEtMjggYXQgMTU6NTEgKzAyMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToK PiBPbiBNb24sIE5vdiAyOCwgMjAxNiBhdCAwMToxMjo1N1BNICswMjAwLCBJbXJlIERlYWsgd3Jv dGU6Cj4gPiBjb21taXQgODQ4NDk2ZTU5MDI4MzM2MDBmNzk5MmY0ZmFhODJkYzE1NDYwNTFiYQo+ ID4gQXV0aG9yOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t Pgo+ID4gRGF0ZTrCoMKgwqBXZWQgSnVsIDEzIDE2OjMyOjAzIDIwMTYgKzAzMDAKPiA+IAo+ID4g wqDCoMKgwqBkcm0vaTkxNTogV2FpdCB1cCB0byAzbXMgZm9yIHRoZSBwY3UgdG8gYWNrIHRoZSBj ZGNsayBjaGFuZ2UgcmVxdWVzdCBvbiBTS0wKPiA+IAo+ID4gaW5jcmVhc2VkIHRoZSB0aW1lb3V0 IHRvIG1hdGNoIHRoZSBzcGVjLCBidXQgd2Ugc3RpbGwgc2VlIGEgdGltZW91dCBvbgo+ID4gYXQg bGVhc3Qgb25lIFNLTC4gQSBDRENMSyBjaGFuZ2UgcmVxdWVzdCBmb2xsb3dpbmcgdGhlIGZhaWxl ZCBvbmUgd2lsbAo+ID4gc3VjY2VlZCBuZXZlcnRoZWxlc3MuCj4gPiAKPiA+IEkgY291bGQgcmVw cm9kdWNlIHRoaXMgcHJvYmxlbSBlYXNpbHkgYnkgcnVubmluZyBrbXNfcGlwZV9jcmNfYmFzaWMg aW4gYQo+ID4gbG9vcC4gSW4gYWxsIGZhaWx1cmUgY2FzZXMgX3dhaXRfZm9yKCkgd2FzIHByZS1l bXB0ZWQgZm9yID4zbXMgYW5kIHNvIGluCj4gPiB0aGUgd29yc3QgY2FzZSAtIHdoZW4gdGhlIHBy ZS1lbXB0aW9uIGhhcHBlbmVkIHJpZ2h0IGFmdGVyIGNhbGN1bGF0aW5nCj4gPiB0aW1lb3V0X18g aW4gX3dhaXRfZm9yKCkgLSB3ZSBjYWxsZWQgc2tsX2NkY2xrX3dhaXRfZm9yX3BjdV9yZWFkeSgp IG9ubHkKPiA+IG9uY2Ugd2hpY2ggZmFpbGVkIGFuZCBzbyBfd2FpdF9mb3IoKSB0aW1lZCBvdXQu IEFzIG9wcG9zZWQgdG8gdGhpcyB0aGUKPiA+IHNwZWMgc2F5cyB0byBrZWVwIHJldHJ5aW5nIHRo ZSByZXF1ZXN0IGZvciBhdCBtb3N0IGEgM21zIHBlcmlvZC4KPiA+IAo+ID4gVG8gZml4IHRoaXMg ZGlzYWJsZSBwcmUtZW1wdGlvbiB0byBtYXhpbWl6ZSB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIHJl dHJ5Cj4gPiB0aGUgcmVxdWVzdC4gQWxzbyBpbmNyZWFzZSB0aGUgdGltZW91dCB0byAxMG1zIHRv IGFjY291bnQgZm9yIGludGVycnVwdHMKPiA+IHRoYXQgY291bGQgcmVkdWNlIHRoZSBudW1iZXIg b2YgdGhlc2UgYXR0ZW1wdHMuIFdpdGggdGhpcyBjaGFuZ2UgSQo+ID4gY291bGRuJ3QgdHJpZ2dl ciB0aGUgcHJvYmxlbS4KPiA+IAo+ID4gdjI6Cj4gPiAtIFVzZSAxbXMgcG9sbCBwZXJpb2QgaW5z dGVhZCBvZiAxMHVzLiAoQ2hyaXMpCj4gPiB2MzoKPiA+IC0gUG9sbCB3aXRoIHByZS1lbXB0aW9u IGRpc2FibGVkIHRvIGluY3JlYXNlIHRoZSBudW1iZXIgb2YgcmVxdWVzdAo+ID4gwqAgYXR0ZW1w dHMuIChWaWxsZSwgQ2hyaXMpCj4gPiAtIEZhY3RvciBvdXQgYSBoZWxwZXIgdG8gcG9sbCwgaXQn cyBhbHNvIG5lZWRlZCBieSB0aGUgbmV4dCBwYXRjaC4KPiA+IAo+ID4gQ2M6IFZpbGxlIFN5cmrD pGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiBDYzogQ2hyaXMgV2lsc29u IDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gPiBSZWZlcmVuY2U6IGh0dHBzOi8vYnVncy5m cmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTI5Cj4gPiBUZXN0Y2FzZTogaWd0L2tt c19waXBlX2NyY19iYXNpYy9zdXNwZW5kLXJlYWQtY3JjLXBpcGUtQgo+ID4gU2lnbmVkLW9mZi1i eTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiDCoGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKgwqB8wqDCoDEgKwo+ID4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5owqDCoMKgwqDCoMKgfMKgwqAyICstCj4gPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDI5ICsrKysrKystLS0tLS0tLS0tLS0t LS0tLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jwqDCoMKgwqDCoMKgfCA0 MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+IMKgNCBmaWxlcyBjaGFu Z2VkLCA1MyBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gPiBpbmRleCAwMWY1MDY3Li5mNjE4ODA3IDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+ID4gQEAgLTM1OTMsNiArMzU5Myw3IEBAIGV4dGVybiB2b2lkIGlu dGVsX2Rpc3BsYXlfcHJpbnRfZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRl X2J1ZiAqZSwKPiA+IMKgCj4gPiDCoGludCBzYW5keWJyaWRnZV9wY29kZV9yZWFkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiAqdmFsKTsKPiA+IMKgaW50 IHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgdTMyIG1ib3gsIHUzMiB2YWwpOwo+ID4gK2ludCBza2xfcGNvZGVfcmVxdWVzdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYm94LCB1MzIgcmVxdWVzdCk7Cj4gPiDC oAo+ID4gwqAvKiBpbnRlbF9zaWRlYmFuZC5jICovCj4gPiDCoHUzMiB2bHZfcHVuaXRfcmVhZChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBhZGRyKTsKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaAo+ID4gaW5kZXggNjc0N2Q2OC4uZjU0MmNiYyAxMDA2NDQKPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKPiA+IEBAIC03NDI0LDcgKzc0MjQsNiBAQCBlbnVtIHsKPiA+IMKg I2RlZmluZcKgwqDCoMKgwqBHRU45X01FTV9MQVRFTkNZX0xFVkVMXzNfN19TSElGVAkyNAo+ID4g wqAjZGVmaW5lwqDCoMKgU0tMX1BDT0RFX0NEQ0xLX0NPTlRST0wJCTB4Nwo+ID4gwqAjZGVmaW5l wqDCoMKgwqDCoFNLTF9DRENMS19QUkVQQVJFX0ZPUl9DSEFOR0UJMHgzCj4gPiAtI2RlZmluZcKg wqDCoMKgwqBTS0xfQ0RDTEtfUkVBRFlfRk9SX0NIQU5HRQkJMHgxCj4gPiDCoCNkZWZpbmXCoMKg wqBHRU42X1BDT0RFX1dSSVRFX01JTl9GUkVRX1RBQkxFCTB4OAo+ID4gwqAjZGVmaW5lwqDCoMKg R0VONl9QQ09ERV9SRUFEX01JTl9GUkVRX1RBQkxFCTB4OQo+ID4gwqAjZGVmaW5lwqDCoMKgR0VO Nl9SRUFEX09DX1BBUkFNUwkJCTB4Ywo+ID4gQEAgLTc0MzcsNiArNzQzNiw3IEBAIGVudW0gewo+ ID4gwqAjZGVmaW5lwqDCoMKgwqDCoEdFTjlfU0FHVl9ESVNBQkxFCQkJMHgwCj4gPiDCoCNkZWZp bmXCoMKgwqDCoMKgR0VOOV9TQUdWX0lTX0RJU0FCTEVECQkweDEKPiA+IMKgI2RlZmluZcKgwqDC oMKgwqBHRU45X1NBR1ZfRU5BQkxFCQkJMHgzCj4gPiArI2RlZmluZcKgwqDCoEdFTjlfUENPREVf UkVRVUVTVF9ET05FCQkweDEKPiAKPiBJcyB0aGF0IHJlYWxseSBhIGdlbmVyaWMgdGhpbmc/CgpB dCBsZWFzdCBTQUdWIHVzZXMgdGhlIHNhbWUgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHJlcXVlc3Qg SSBrbm93IG9mCnRoYXQgd291bGQgbmVlZCB0aGlzIHBvbGxpbmcgcmVxdWVzdC4gSXQgd2lsbCBi ZSB1c2VkIGluIHRoZSBuZXh0IHBhdGNoCmZvciBTQUdWIHRvby4KCj4gCj4gPiDCoCNkZWZpbmUg R0VONl9QQ09ERV9EQVRBCQkJCV9NTUlPKDB4MTM4MTI4KQo+ID4gwqAjZGVmaW5lwqDCoMKgR0VO Nl9QQ09ERV9GUkVRX0lBX1JBVElPX1NISUZUCTgKPiA+IMKgI2RlZmluZcKgwqDCoEdFTjZfUENP REVfRlJFUV9SSU5HX1JBVElPX1NISUZUCTE2Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gPiBpbmRleCA1ZDExMDAyLi40NmMwZTQyIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IEBAIC02MjQ1LDM1ICs2MjQ1LDIyIEBAIHNrbF9kcGxs MF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgCWRldl9w cml2LT5jZGNsa19wbGwudmNvID0gMDsKPiA+IMKgfQo+ID4gwqAKPiA+IC1zdGF0aWMgYm9vbCBz a2xfY2RjbGtfcGN1X3JlYWR5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ IC17Cj4gPiAtCWludCByZXQ7Cj4gPiAtCXUzMiB2YWw7Cj4gPiAtCj4gPiAtCS8qIGluZm9ybSBQ Q1Ugd2Ugd2FudCB0byBjaGFuZ2UgQ0RDTEsgKi8KPiA+IC0JdmFsID0gU0tMX0NEQ0xLX1BSRVBB UkVfRk9SX0NIQU5HRTsKPiA+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsK PiA+IC0JcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwgU0tMX1BDT0RFX0NE Q0xLX0NPTlRST0wsICZ2YWwpOwo+ID4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdf bG9jayk7Cj4gPiAtCj4gPiAtCXJldHVybiByZXQgPT0gMCAmJiAodmFsICYgU0tMX0NEQ0xLX1JF QURZX0ZPUl9DSEFOR0UpOwo+ID4gLX0KPiA+IC0KPiA+IC1zdGF0aWMgYm9vbCBza2xfY2RjbGtf d2FpdF9mb3JfcGN1X3JlYWR5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ IC17Cj4gPiAtCXJldHVybiBfd2FpdF9mb3Ioc2tsX2NkY2xrX3BjdV9yZWFkeShkZXZfcHJpdiks IDMwMDAsIDEwKSA9PSAwOwo+ID4gLX0KPiA+IC0KPiA+IMKgc3RhdGljIHZvaWQgc2tsX3NldF9j ZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBjZGNsaywgaW50IHZj bykKPiA+IMKgewo+ID4gwqAJdTMyIGZyZXFfc2VsZWN0LCBwY3VfYWNrOwo+ID4gKwlpbnQgcmV0 Owo+ID4gwqAKPiA+IMKgCVdBUk5fT04oKGNkY2xrID09IDI0MDAwKSAhPSAodmNvID09IDApKTsK PiA+IMKgCj4gPiDCoAlEUk1fREVCVUdfRFJJVkVSKCJDaGFuZ2luZyBDRENMSyB0byAlZCBrSHog KFZDTyAlZCBrSHopXG4iLCBjZGNsaywgdmNvKTsKPiA+IMKgCj4gPiAtCWlmICghc2tsX2NkY2xr X3dhaXRfZm9yX3BjdV9yZWFkeShkZXZfcHJpdikpIHsKPiA+IC0JCURSTV9FUlJPUigiZmFpbGVk IHRvIGluZm9ybSBQQ1UgYWJvdXQgY2RjbGsgY2hhbmdlXG4iKTsKPiA+ICsJbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiA+ICsJcmV0ID0gc2tsX3Bjb2RlX3JlcXVlc3QoZGV2 X3ByaXYsIFNLTF9QQ09ERV9DRENMS19DT05UUk9MLAo+ID4gKwkJCQlTS0xfQ0RDTEtfUFJFUEFS RV9GT1JfQ0hBTkdFKTsKPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2sp Owo+ID4gKwlpZiAocmV0KSB7Cj4gPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBpbmZvcm0gUENV IGFib3V0IGNkY2xrIGNoYW5nZSAoJWQpXG4iLAo+ID4gKwkJCcKgwqByZXQpOwo+ID4gwqAJCXJl dHVybjsKPiA+IMKgCX0KPiA+IMKgCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+IGluZGV4 IDY2YzYyZjMuLmVkZDY4ZjMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiBA QCAtNzg2NCw2ICs3ODY0LDQ5IEBAIGludCBzYW5keWJyaWRnZV9wY29kZV93cml0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiDCoAlyZXR1cm4gMDsKPiA+IMKgfQo+ID4g wqAKPiA+ICtzdGF0aWMgYm9vbCBza2xfcGNvZGVfdHJ5X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwKPiA+ICsJCQkJwqDCoHUzMiByZXF1ZXN0LCB1 MzIgKnN0YXR1cykKPiA+ICt7Cj4gPiArCXUzMiB2YWwgPSByZXF1ZXN0Owo+ID4gKwo+ID4gKwkq c3RhdHVzID0gc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwgbWJveCwgJnZhbCk7Cj4g PiArCj4gPiArCXJldHVybiAqc3RhdHVzIHx8ICh2YWwgJiBHRU45X1BDT0RFX1JFUVVFU1RfRE9O RSk7Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIHNrbF9wY29kZV9yZXF1ZXN0IC0gc2Vu ZCBQQ09ERSByZXF1ZXN0IHVudGlsIGFja25vd2xlZGdtZW50Cj4gPiArICogQGRldl9wcml2OiBk ZXZpY2UgcHJpdmF0ZQo+ID4gKyAqIEBtYm94OiBQQ09ERSBtYWlsYm94IElEIHRoZSByZXF1ZXN0 IGlzIHRhcmdldGVkIGZvcgo+ID4gKyAqIEByZXF1ZXN0OiByZXF1ZXN0IElECj4gPiArICoKPiA+ ICsgKiBLZWVwIHJlc2VuZGluZyB0aGUgQHJlcXVlc3QgdG8gQG1ib3ggdW50aWwgUENPREUgYWNr bm93bGVkZ2VzIGl0LCBvciBhIDEwbXMKPiA+ICsgKiB0aW1lb3V0IGV4cGlyZXMuCj4gPiArICoK PiA+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgJS1FVElNRURPVVQgaW4gY2FzZSBvZiBhIHRp bWVvdXQsIDwwIGluIGNhc2Ugb2Ygc29tZQo+ID4gKyAqIG90aGVyIGVycm9yIGFzIHJlcG9ydGVk IGJ5IFBDT0RFLgo+ID4gKyAqLwo+ID4gK2ludCBza2xfcGNvZGVfcmVxdWVzdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYm94LCB1MzIgcmVxdWVzdCkKPiA+ICt7Cj4g PiArCXUzMiBzdGF0dXM7Cj4gPiArCWludCByZXQ7Cj4gPiArCj4gPiArCVdBUk5fT04oIW11dGV4 X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnJwcy5od19sb2NrKSk7Cj4gPiArCj4gPiArCS8qCj4gPiAr CcKgKiBUaGUgc3BlYyBzYXlzIHRvIGtlZXAgcmV0cnlpbmcgdGhlIHJlcXVlc3QgZm9yIGF0IG1v c3QgM21zIHVudGlsCj4gPiArCcKgKiBhY2tub3dsZWRnZW1lbnQsIHNvIGRpc2FibGUgcHJlLWVt cHRpb24gdG8gbWF4aW1pemUgdGhlIG51bWJlciBvZgo+ID4gKwnCoCogYXR0ZW1wdHMgd2l0aGlu IHRoaXMgZHVyYXRpb24uIFVzZSBhIDEwbXMgb3ZlcmFsbCB0aW1lb3V0IHRvCj4gPiArCcKgKiBh Y2NvdW50IGZvciBpbnRlcnJ1cHRzIHRoYXQgY291bGQgcmVkdWNlIHRoZSBudW1iZXIgb2YgYXR0 ZW1wdHMuCj4gPiArCcKgKi8KPiA+ICsJcHJlZW1wdF9kaXNhYmxlKCk7Cj4gPiArCXJldCA9IHdh aXRfZm9yX2F0b21pYyhza2xfcGNvZGVfdHJ5X3JlcXVlc3QoZGV2X3ByaXYsIG1ib3gsIHJlcXVl c3QsCj4gPiArCQkJCQkJwqDCoMKgwqAmc3RhdHVzKSwgMTApOwo+ID4gKwlwcmVlbXB0X2VuYWJs ZSgpOwo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0ID8gcmV0IDogc3RhdHVzOwo+ID4gK30KPiA+ICsK PiA+IMKgc3RhdGljIGludCBieXRfZ3B1X2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCBpbnQgdmFsKQo+ID4gwqB7Cj4gPiDCoAkvKgo+ID4gLS3CoAo+ID4gMi41LjAKPiAK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==