From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v4 2/3] drm/i915/gen9: Fix PCODE polling during CDCLK change notification Date: Mon, 28 Nov 2016 18:24:49 +0200 Message-ID: <20161128162449.GG31595@intel.com> References: <1480346969-16121-1-git-send-email-imre.deak@intel.com> <1480346969-16121-2-git-send-email-imre.deak@intel.com> <20161128155826.GE31595@intel.com> <1480349571.24456.68.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 553C76E426 for ; Mon, 28 Nov 2016 16:24:53 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1480349571.24456.68.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 T24gTW9uLCBOb3YgMjgsIDIwMTYgYXQgMDY6MTI6NTFQTSArMDIwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+IE9uIG1hLCAyMDE2LTExLTI4IGF0IDE3OjU4ICswMjAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3Jv dGU6Cj4gPiBPbiBNb24sIE5vdiAyOCwgMjAxNiBhdCAwNToyOToyOFBNICswMjAwLCBJbXJlIERl 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+ID4gPiB2NDoKPiA+ID4gLSBQ YXNzIHJlcGx5X21hc2ssIHJlcGx5IHRvIHNrbF9wY29kZV9yZXF1ZXN0KCksIGluc3RlYWQgb2Yg YXNzdW1pbmcgdGhlCj4gPiA+IMKgIHJlcGx5IGlzIGdlbmVyaWMuIChWaWxsZSkKPiA+ID4gCj4g PiA+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ ID4gPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gPiA+IFJl ZmVyZW5jZTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc5 MjkKPiA+ID4gVGVzdGNhc2U6IGlndC9rbXNfcGlwZV9jcmNfYmFzaWMvc3VzcGVuZC1yZWFkLWNy Yy1waXBlLUIKPiA+ID4gU2lnbmVkLW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwu Y29tPgo+ID4gPiAtLS0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5owqDC oMKgwqDCoMKgfMKgwqAyICsrCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIHwgMzEgKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiA+ID4gwqBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jwqDCoMKgwqDCoMKgfCA0OSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiA+ID4gwqAzIGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyks IDIxIGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiA+ IGluZGV4IDAxZjUwNjcuLjFiZTViYWIgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+ID4gPiBAQCAtMzU5Myw2ICszNTkzLDggQEAgZXh0ZXJuIHZvaWQgaW50ZWxfZGlzcGxh eV9wcmludF9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICplLAo+ ID4gPiDCoAo+ID4gPiDCoGludCBzYW5keWJyaWRnZV9wY29kZV9yZWFkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiAqdmFsKTsKPiA+ID4gwqBpbnQgc2Fu ZHlicmlkZ2VfcGNvZGVfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 MzIgbWJveCwgdTMyIHZhbCk7Cj4gPiA+ICtpbnQgc2tsX3Bjb2RlX3JlcXVlc3Qoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwgdTMyIHJlcXVlc3QsCj4gPiA+ICsJ CcKgwqDCoMKgwqDCoHUzMiByZXBseV9tYXNrLCB1MzIgcmVwbHkpOwo+ID4gPiDCoAo+ID4gPiDC oC8qIGludGVsX3NpZGViYW5kLmMgKi8KPiA+ID4gwqB1MzIgdmx2X3B1bml0X3JlYWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkcik7Cj4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4gaW5kZXggNWQxMTAwMi4uM2QyMjBkYSAxMDA2NDQK PiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiBAQCAtNjI0NSwz NSArNjI0NSwyNCBAQCBza2xfZHBsbDBfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gPiA+IMKgCWRldl9wcml2LT5jZGNsa19wbGwudmNvID0gMDsKPiA+ID4gwqB9 Cj4gPiA+IMKgCj4gPiA+IC1zdGF0aWMgYm9vbCBza2xfY2RjbGtfcGN1X3JlYWR5KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gLXsKPiA+ID4gLQlpbnQgcmV0Owo+ID4g PiAtCXUzMiB2YWw7Cj4gPiA+IC0KPiA+ID4gLQkvKiBpbmZvcm0gUENVIHdlIHdhbnQgdG8gY2hh bmdlIENEQ0xLICovCj4gPiA+IC0JdmFsID0gU0tMX0NEQ0xLX1BSRVBBUkVfRk9SX0NIQU5HRTsK PiA+ID4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+ID4gPiAtCXJldCA9 IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoZGV2X3ByaXYsIFNLTF9QQ09ERV9DRENMS19DT05UUk9M LCAmdmFsKTsKPiA+ID4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4g PiA+IC0KPiA+ID4gLQlyZXR1cm4gcmV0ID09IDAgJiYgKHZhbCAmIFNLTF9DRENMS19SRUFEWV9G T1JfQ0hBTkdFKTsKPiA+ID4gLX0KPiA+ID4gLQo+ID4gPiAtc3RhdGljIGJvb2wgc2tsX2NkY2xr X3dhaXRfZm9yX3BjdV9yZWFkeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g PiA+IC17Cj4gPiA+IC0JcmV0dXJuIF93YWl0X2Zvcihza2xfY2RjbGtfcGN1X3JlYWR5KGRldl9w cml2KSwgMzAwMCwgMTApID09IDA7Cj4gPiA+IC19Cj4gPiA+IC0KPiA+ID4gwqBzdGF0aWMgdm9p ZCBza2xfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGNk Y2xrLCBpbnQgdmNvKQo+ID4gPiDCoHsKPiA+ID4gwqAJdTMyIGZyZXFfc2VsZWN0LCBwY3VfYWNr Owo+ID4gPiArCWludCByZXQ7Cj4gPiA+IMKgCj4gPiA+IMKgCVdBUk5fT04oKGNkY2xrID09IDI0 MDAwKSAhPSAodmNvID09IDApKTsKPiA+ID4gwqAKPiA+ID4gwqAJRFJNX0RFQlVHX0RSSVZFUigi Q2hhbmdpbmcgQ0RDTEsgdG8gJWQga0h6IChWQ08gJWQga0h6KVxuIiwgY2RjbGssIHZjbyk7Cj4g PiA+IMKgCj4gPiA+IC0JaWYgKCFza2xfY2RjbGtfd2FpdF9mb3JfcGN1X3JlYWR5KGRldl9wcml2 KSkgewo+ID4gPiAtCQlEUk1fRVJST1IoImZhaWxlZCB0byBpbmZvcm0gUENVIGFib3V0IGNkY2xr IGNoYW5nZVxuIik7Cj4gPiA+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsK PiA+ID4gKwlyZXQgPSBza2xfcGNvZGVfcmVxdWVzdChkZXZfcHJpdiwgU0tMX1BDT0RFX0NEQ0xL X0NPTlRST0wsCj4gPiA+ICsJCQkJU0tMX0NEQ0xLX1BSRVBBUkVfRk9SX0NIQU5HRSwKPiA+ID4g KwkJCQlTS0xfQ0RDTEtfUkVBRFlfRk9SX0NIQU5HRSwKPiA+ID4gKwkJCQlTS0xfQ0RDTEtfUkVB RFlfRk9SX0NIQU5HRSk7Cj4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xv Y2spOwo+ID4gPiArCWlmIChyZXQpIHsKPiA+ID4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5m b3JtIFBDVSBhYm91dCBjZGNsayBjaGFuZ2UgKCVkKVxuIiwKPiA+ID4gKwkJCcKgwqByZXQpOwo+ ID4gPiDCoAkJcmV0dXJuOwo+ID4gPiDCoAl9Cj4gPiA+IMKgCj4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYwo+ID4gPiBpbmRleCA2NmM2MmYzLi5hZWQ4OGUwIDEwMDY0NAo+ID4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKPiA+ID4gQEAgLTc4NjQsNiArNzg2NCw1NSBAQCBpbnQgc2FuZHli cmlkZ2VfcGNvZGVfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4g PiDCoAlyZXR1cm4gMDsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+ICtzdGF0aWMgYm9vbCBza2xf cGNvZGVfdHJ5X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIg bWJveCwKPiA+ID4gKwkJCQnCoMKgdTMyIHJlcXVlc3QsIHUzMiByZXBseV9tYXNrLCB1MzIgcmVw bHksCj4gPiA+ICsJCQkJwqDCoHUzMiAqc3RhdHVzKQo+ID4gPiArewo+ID4gPiArCXUzMiB2YWwg PSByZXF1ZXN0Owo+ID4gPiArCj4gPiA+ICsJKnN0YXR1cyA9IHNhbmR5YnJpZGdlX3Bjb2RlX3Jl YWQoZGV2X3ByaXYsIG1ib3gsICZ2YWwpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuICpzdGF0dXMg fHwgKCh2YWwgJiByZXBseV9tYXNrKSA9PSByZXBseSk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4g Ky8qKgo+ID4gPiArICogc2tsX3Bjb2RlX3JlcXVlc3QgLSBzZW5kIFBDT0RFIHJlcXVlc3QgdW50 aWwgYWNrbm93bGVkZ21lbnQKPiA+ID4gKyAqIEBkZXZfcHJpdjogZGV2aWNlIHByaXZhdGUKPiA+ ID4gKyAqIEBtYm94OiBQQ09ERSBtYWlsYm94IElEIHRoZSByZXF1ZXN0IGlzIHRhcmdldGVkIGZv cgo+ID4gPiArICogQHJlcXVlc3Q6IHJlcXVlc3QgSUQKPiA+ID4gKyAqIEByZXBseV9tYXNrOiBt YXNrIHVzZWQgdG8gY2hlY2sgZm9yIHJlcXVlc3QgYWNrbm93bGVkZ21lbnQKPiA+ID4gKyAqIEBy ZXBseTogdmFsdWUgdXNlZCB0byBjaGVjayBmb3IgcmVxdWVzdCBhY2tub3dsZWRnZW1lbnQKPiA+ ID4gKyAqCj4gPiA+ICsgKiBLZWVwIHJlc2VuZGluZyB0aGUgQHJlcXVlc3QgdG8gQG1ib3ggdW50 aWwgUENPREUgYWNrbm93bGVkZ2VzIGl0LCBQQ09ERQo+ID4gPiArICogcmVwb3J0cyBhbiBlcnJv ciBvciBhIDEwbXMgdGltZW91dCBleHBpcmVzLiBUaGUgcmVxdWVzdCBpcyBhY2tub3dsZWRnZWQK PiA+ID4gKyAqIG9uY2UgdGhlIFBDT0RFIHJlcGx5IGR3b3JkIGVxdWFscyBAcmVwbHkgYWZ0ZXIg YXBseWluZyBAcmVwbHlfbWFzay4KPiA+ID4gKyAqCj4gPiA+ICsgKiBSZXR1cm5zIDAgb24gc3Vj Y2VzcywgJS1FVElNRURPVVQgaW4gY2FzZSBvZiBhIHRpbWVvdXQsIDwwIGluIGNhc2Ugb2Ygc29t ZQo+ID4gPiArICogb3RoZXIgZXJyb3IgYXMgcmVwb3J0ZWQgYnkgUENPREUuCj4gPiA+ICsgKi8K PiA+ID4gK2ludCBza2xfcGNvZGVfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHUzMiBtYm94LCB1MzIgcmVxdWVzdCwKPiA+ID4gKwkJwqDCoMKgwqDCoMKgdTMyIHJl cGx5X21hc2ssIHUzMiByZXBseSkKPiA+ID4gK3sKPiA+ID4gKwl1MzIgc3RhdHVzOwo+ID4gPiAr CWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9w cml2LT5ycHMuaHdfbG9jaykpOwo+ID4gPiArCj4gPiA+ICsJLyoKPiA+ID4gKwnCoCogVGhlIHNw ZWMgc2F5cyB0byBrZWVwIHJldHJ5aW5nIHRoZSByZXF1ZXN0IGZvciBhdCBtb3N0IDNtcyB1bnRp bAo+ID4gCj4gPiBUaGlzIGNvbW1lbnQgc2VlbXMgYSBsaXR0bGUgbWlzcGxhY2VkLiBUaGUgM21z IGlzIHNwZWNpZmllZCBmb3IgdGhlCj4gPiBjZGNsayBwcmVwIHJlcXVlc3QsIFNBR1Ygd2lsbCBo YXZlIGEgZGlmZmVyZW50IHZhbHVlLgo+ID4gSWYgd2UgZG9uJ3Qgd2FudCBjYWxsZXJzIHRvIHBh c3MgaW4gdGhlIHRpbWVvdXQgYXMgd2VsbCwgSSBndWVzcyB3ZSdsbAo+ID4gYXQgbGVhc3Qgd2Fu dCB0byByZXdvcmQgdGhpcyBjb21tZW50IHRvIHNheSB3aGljaCBjYWxsZXJzIG5lZWQgd2hhdAo+ ID4ga2luZCBvZiB0aW1lb3V0cy4KPiAKPiBIb3cgYWJvdXQgImF0IG1vc3QgM21zIC0gd2hpY2gg Y2FuIGJlIGxlc3MgZGVwZW5kaW5nIG9uIHRoZSBnaXZlbgo+IHJlcXVlc3QiPwoKSSdkIHJhdGhl ciB3YW50IGV4cGxpY2l0ICJjZGNsayB0aGluZyBuZWVkcyAzbXMsIHNhZ3YgdGhpbmcgbmVlZHMK MW1zIiAob3Igd2hhdGV2ZXIgdGhlIHNhZ3YgdGltZW91dCB3YXMpLiBPdGhlcndpc2UgaXQncyBo YXJkIHRvIHNlZQp3aGV0aGVyIGl0J3MgZXZlbiBkb2luZyB0aGUgY29ycmVjdCB0aGluZy4KCj4g Cj4gPiBUaG91Z2ggSSBraW5kYSBsaWtlIHRoZSBpZGVhIG9mIGNhbGxlcnMgcGFzc2luZyB0aGF0 Cj4gPiBpbiBhcyB3ZWxsLgo+IAo+IFRoZSAxMG1zIHRpbWVvdXQgSSBjaG9zZSBoZXJlIGlzIGFu eXdheSBhbiB1cHBlciBib3VuZCwgY29uc2lkZXJpbmcKPiB0aGF0IGludGVycnVwdHMgY291bGQg cmVkdWNlIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgd2UgY2FuIHNlbmQuIEhlbmNlCj4gdGhvdWdo dCB0byBtYWtlIGl0IGEgZ2VuZXJpYyB2YWx1ZS4KPiAKPiA+IAo+ID4gPiArCcKgKiBhY2tub3ds ZWRnZW1lbnQsIHNvIGRpc2FibGUgcHJlLWVtcHRpb24gdG8gbWF4aW1pemUgdGhlIG51bWJlciBv Zgo+ID4gPiArCcKgKiBhdHRlbXB0cyB3aXRoaW4gdGhpcyBkdXJhdGlvbi4gVXNlIGEgMTBtcyBv dmVyYWxsIHRpbWVvdXQgdG8KPiA+ID4gKwnCoCogYWNjb3VudCBmb3IgaW50ZXJydXB0cyB0aGF0 IGNvdWxkIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGF0dGVtcHRzLgo+ID4gPiArCcKgKi8KPiA+ID4g KwlwcmVlbXB0X2Rpc2FibGUoKTsKPiA+ID4gKwlyZXQgPSB3YWl0X2Zvcl9hdG9taWMoc2tsX3Bj b2RlX3RyeV9yZXF1ZXN0KGRldl9wcml2LCBtYm94LCByZXF1ZXN0LAo+ID4gPiArCQkJCQkJwqDC oMKgwqByZXBseV9tYXNrLCByZXBseSwgJnN0YXR1cyksCj4gPiA+ICsJCQnCoMKgwqDCoMKgwqAx MCk7Cj4gPiA+ICsJcHJlZW1wdF9lbmFibGUoKTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiByZXQg PyByZXQgOiBzdGF0dXM7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gwqBzdGF0aWMgaW50IGJ5dF9n cHVfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2YWwpCj4gPiA+ IMKgewo+ID4gPiDCoAkvKgo+ID4gPiAtLcKgCj4gPiA+IDIuNS4wCj4gPiAKCi0tIApWaWxsZSBT eXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=