From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 06/14] drm/i915: Check for FIFO underruns after modeset on IVB/HSW and CPT/PPT Date: Fri, 30 Oct 2015 16:45:50 +0100 Message-ID: <20151030154550.GE16848@phenom.ffwll.local> References: <1446146763-31821-1-git-send-email-ville.syrjala@linux.intel.com> <1446146763-31821-7-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f178.google.com (mail-wi0-f178.google.com [209.85.212.178]) by gabe.freedesktop.org (Postfix) with ESMTPS id F17DD72067 for ; Fri, 30 Oct 2015 08:45:53 -0700 (PDT) Received: by wicll6 with SMTP id ll6so13371723wic.0 for ; Fri, 30 Oct 2015 08:45:52 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1446146763-31821-7-git-send-email-ville.syrjala@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: ville.syrjala@linux.intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMjksIDIwMTUgYXQgMDk6MjU6NTVQTSArMDIwMCwgdmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiAKPiBEdWUgdG8gdGhlIHNoYXJlZCBlcnJvciBpbnRlcnJ1 cHQgb24gSVZCL0hTVyBhbmQgQ1BUL1BQVCB3ZSBtYXkgbm90Cj4gYWx3YXlzIGdldCBhbiBpbnRl cnJ1cHQgb24gYSBGSUZPIHVuZGVycnVuLiBCdXQgd2UgY2FuIGFsd2F5cyBkbyBhbgo+IGV4cGxp Y2l0IGNoZWNrIChsaWtlIHdlIGRvIG9uIEdNQ0ggcGxhdGZvcm1zIHRoYXQgaGF2ZSBubyB1bmRl cnJ1bgo+IGludGVycnVwdCkuCj4gCj4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jICAgICAgIHwgICA2ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oICAgICAgICAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9maWZvX3VuZGVycnVuLmMgfCAxMjEgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0K PiAgMyBmaWxlcyBjaGFuZ2VkLCAxMDUgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGM3Y2Q5ZjcuLmU4MjAx NDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTQ3MTksOSAr NDcxOSw5IEBAIGludGVsX3Bvc3RfZW5hYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRj KQo+ICAJaWYgKElTX0dFTjIoZGV2KSkKPiAgCQlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5f cmVwb3J0aW5nKGRldl9wcml2LCBwaXBlLCB0cnVlKTsKPiAgCj4gLQkvKiBVbmRlcnJ1bnMgZG9u J3QgcmFpc2UgaW50ZXJydXB0cywgc28gY2hlY2sgbWFudWFsbHkuICovCj4gLQlpZiAoSEFTX0dN Q0hfRElTUExBWShkZXYpKQo+IC0JCWk5eHhfY2hlY2tfZmlmb191bmRlcnJ1bnMoZGV2X3ByaXYp Owo+ICsJLyogVW5kZXJydW5zIGRvbid0IGFsd2F5cyByYWlzZSBpbnRlcnJ1cHRzLCBzbyBjaGVj ayBtYW51YWxseS4gKi8KPiArCWludGVsX2NoZWNrX2NwdV9maWZvX3VuZGVycnVucyhkZXZfcHJp dik7Cj4gKwlpbnRlbF9jaGVja19wY2hfZmlmb191bmRlcnJ1bnMoZGV2X3ByaXYpOwo+ICB9Cj4g IAo+ICAvKioKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDFhM2JiZGMuLjcyY2My NzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC05NTksNyArOTU5LDggQEAg dm9pZCBpbnRlbF9jcHVfZmlmb191bmRlcnJ1bl9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkJIGVudW0gcGlwZSBwaXBlKTsKPiAgdm9pZCBpbnRl bF9wY2hfZmlmb191bmRlcnJ1bl9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gIAkJCQkJIGVudW0gdHJhbnNjb2RlciBwY2hfdHJhbnNjb2Rlcik7Cj4gLXZv aWQgaTl4eF9jaGVja19maWZvX3VuZGVycnVucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ICt2b2lkIGludGVsX2NoZWNrX2NwdV9maWZvX3VuZGVycnVucyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICt2b2lkIGludGVsX2NoZWNrX3BjaF9maWZvX3Vu ZGVycnVucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiAgLyogaTkx NV9pcnEuYyAqLwo+ICB2b2lkIGdlbjVfZW5hYmxlX2d0X2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIHVpbnQzMl90IG1hc2spOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9maWZvX3VuZGVycnVuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9maWZvX3VuZGVycnVuLmMKPiBpbmRleCA1NGRhYTY2Li5hNTQ2ZmMzIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZpZm9fdW5kZXJydW4uYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZpZm9fdW5kZXJydW4uYwo+IEBAIC04NSwzNyArODUs MjggQEAgc3RhdGljIGJvb2wgY3B0X2Nhbl9lbmFibGVfc2Vycl9pbnQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgfQo+ICAKPiAgLyoqCj4gLSAqIGk5eHhfY2hlY2tfZmlmb191bmRlcnJ1bnMg LSBjaGVjayBmb3IgZmlmbyB1bmRlcnJ1bnMKPiAtICogQGRldl9wcml2OiBpOTE1IGRldmljZSBp bnN0YW5jZQo+ICsgKiBpbnRlbF9jaGVja19jcHVfZmlmb191bmRlcnJ1bnMgLSBjaGVjayBmb3Ig ZmlmbyB1bmRlcnJ1bnMKPiArICogQGNydGM6IHBpcGUKPiAgICoKPiAgICogVGhpcyBmdW5jdGlv biBjaGVja3MgZm9yIGZpZm8gdW5kZXJydW5zIG9uIEdNQ0ggcGxhdGZvcm1zLiBUaGlzIG5lZWRz IHRvIGJlCj4gICAqIGRvbmUgbWFudWFsbHkgb24gbW9kZXNldCB0byBtYWtlIHN1cmUgdGhhdCB3 ZSBjYXRjaCBhbGwgdW5kZXJydW5zIHNpbmNlIHRoZXkKPiAgICogZG8gbm90IGdlbmVyYXRlIGFu IGludGVycnVwdCBieSB0aGVtc2VsdmVzIG9uIHRoZXNlIHBsYXRmb3Jtcy4KPiAgICovCgpTdGFs ZSBrZXJuZWxkb2MgYWJvdmUsIGp1c3QgZGVsZXRlIGl0LiBXaXRoIHRoYXQgZml4ZWQ6CgpSZXZp ZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KCj4gLXZvaWQg aTl4eF9jaGVja19maWZvX3VuZGVycnVucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gK3N0YXRpYyB2b2lkIGk5eHhfY2hlY2tfZmlmb191bmRlcnJ1bnMoc3RydWN0IGludGVs X2NydGMgKmNydGMpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwo+IC0KPiAtCXNw aW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4gLQo+IC0JZm9yX2VhY2hfaW50ZWxf Y3J0YyhkZXZfcHJpdi0+ZGV2LCBjcnRjKSB7Cj4gLQkJdTMyIHJlZyA9IFBJUEVTVEFUKGNydGMt PnBpcGUpOwo+IC0JCXUzMiBwaXBlc3RhdDsKPiAtCj4gLQkJaWYgKGNydGMtPmNwdV9maWZvX3Vu ZGVycnVuX2Rpc2FibGVkKQo+IC0JCQljb250aW51ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICsJdTMyIHJlZyA9IFBJ UEVTVEFUKGNydGMtPnBpcGUpOwo+ICsJdTMyIHBpcGVzdGF0ID0gSTkxNV9SRUFEKHJlZykgJiAw eGZmZmYwMDAwOwo+ICAKPiAtCQlwaXBlc3RhdCA9IEk5MTVfUkVBRChyZWcpICYgMHhmZmZmMDAw MDsKPiAtCQlpZiAoKHBpcGVzdGF0ICYgUElQRV9GSUZPX1VOREVSUlVOX1NUQVRVUykgPT0gMCkK PiAtCQkJY29udGludWU7Cj4gKwlhc3NlcnRfc3Bpbl9sb2NrZWQoJmRldl9wcml2LT5pcnFfbG9j ayk7Cj4gIAo+IC0JCUk5MTVfV1JJVEUocmVnLCBwaXBlc3RhdCB8IFBJUEVfRklGT19VTkRFUlJV Tl9TVEFUVVMpOwo+IC0JCVBPU1RJTkdfUkVBRChyZWcpOwo+ICsJaWYgKChwaXBlc3RhdCAmIFBJ UEVfRklGT19VTkRFUlJVTl9TVEFUVVMpID09IDApCj4gKwkJcmV0dXJuOwo+ICAKPiAtCQlEUk1f RVJST1IoInBpcGUgJWMgdW5kZXJydW5cbiIsIHBpcGVfbmFtZShjcnRjLT5waXBlKSk7Cj4gLQl9 Cj4gKwlJOTE1X1dSSVRFKHJlZywgcGlwZXN0YXQgfCBQSVBFX0ZJRk9fVU5ERVJSVU5fU1RBVFVT KTsKPiArCVBPU1RJTkdfUkVBRChyZWcpOwo+ICAKPiAtCXNwaW5fdW5sb2NrX2lycSgmZGV2X3By aXYtPmlycV9sb2NrKTsKPiArCURSTV9FUlJPUigicGlwZSAlYyB1bmRlcnJ1blxuIiwgcGlwZV9u YW1lKGNydGMtPnBpcGUpKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaTl4eF9zZXRfZmlmb191 bmRlcnJ1bl9yZXBvcnRpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiBAQCAtMTUwLDYgKzE0 MSwyMyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9zZXRfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmco c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlpcm9ubGFrZV9kaXNhYmxlX2Rpc3BsYXlfaXJx KGRldl9wcml2LCBiaXQpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBpdnlicmlkZ2VfY2hlY2tf Zmlmb191bmRlcnJ1bnMoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gK3sKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICsJ ZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICsJdWludDMyX3QgZXJyX2ludCA9IEk5MTVf UkVBRChHRU43X0VSUl9JTlQpOwo+ICsKPiArCWFzc2VydF9zcGluX2xvY2tlZCgmZGV2X3ByaXYt PmlycV9sb2NrKTsKPiArCj4gKwlpZiAoKGVycl9pbnQgJiBFUlJfSU5UX0ZJRk9fVU5ERVJSVU4o cGlwZSkpID09IDApCj4gKwkJcmV0dXJuOwo+ICsKPiArCUk5MTVfV1JJVEUoR0VON19FUlJfSU5U LCBFUlJfSU5UX0ZJRk9fVU5ERVJSVU4ocGlwZSkpOwo+ICsJUE9TVElOR19SRUFEKEdFTjdfRVJS X0lOVCk7Cj4gKwo+ICsJRFJNX0VSUk9SKCJmaWZvIHVuZGVycnVuIG9uIHBpcGUgJWNcbiIsIHBp cGVfbmFtZShwaXBlKSk7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGl2eWJyaWRnZV9zZXRfZmlm b191bmRlcnJ1bl9yZXBvcnRpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJCQkJICBl bnVtIHBpcGUgcGlwZSwKPiAgCQkJCQkJICBib29sIGVuYWJsZSwgYm9vbCBvbGQpCj4gQEAgLTIw Miw2ICsyMTAsMjQgQEAgc3RhdGljIHZvaWQgaWJ4X3NldF9maWZvX3VuZGVycnVuX3JlcG9ydGlu ZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCWlieF9kaXNhYmxlX2Rpc3BsYXlfaW50ZXJy dXB0KGRldl9wcml2LCBiaXQpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBjcHRfY2hlY2tfcGNo X2ZpZm9fdW5kZXJydW5zKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAr CWVudW0gdHJhbnNjb2RlciBwY2hfdHJhbnNjb2RlciA9IChlbnVtIHRyYW5zY29kZXIpIGNydGMt PnBpcGU7Cj4gKwl1aW50MzJfdCBzZXJyX2ludCA9IEk5MTVfUkVBRChTRVJSX0lOVCk7Cj4gKwo+ ICsJYXNzZXJ0X3NwaW5fbG9ja2VkKCZkZXZfcHJpdi0+aXJxX2xvY2spOwo+ICsKPiArCWlmICgo c2Vycl9pbnQgJiBTRVJSX0lOVF9UUkFOU19GSUZPX1VOREVSUlVOKHBjaF90cmFuc2NvZGVyKSkg PT0gMCkKPiArCQlyZXR1cm47Cj4gKwo+ICsJSTkxNV9XUklURShTRVJSX0lOVCwgU0VSUl9JTlRf VFJBTlNfRklGT19VTkRFUlJVTihwY2hfdHJhbnNjb2RlcikpOwo+ICsJUE9TVElOR19SRUFEKFNF UlJfSU5UKTsKPiArCj4gKwlEUk1fRVJST1IoInBjaCBmaWZvIHVuZGVycnVuIG9uIHBjaCB0cmFu c2NvZGVyICVjXG4iLAo+ICsJCSAgdHJhbnNjb2Rlcl9uYW1lKHBjaF90cmFuc2NvZGVyKSk7Cj4g K30KPiArCj4gIHN0YXRpYyB2b2lkIGNwdF9zZXRfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJCQkgICAgZW51bSB0cmFuc2NvZGVyIHBjaF90cmFu c2NvZGVyLAo+ICAJCQkJCSAgICBib29sIGVuYWJsZSwgYm9vbCBvbGQpCj4gQEAgLTM3NSwzICs0 MDEsNTYgQEAgdm9pZCBpbnRlbF9wY2hfZmlmb191bmRlcnJ1bl9pcnFfaGFuZGxlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJRFJNX0VSUk9SKCJQQ0ggdHJhbnNjb2Rl ciAlYyBGSUZPIHVuZGVycnVuXG4iLAo+ICAJCQkgIHRyYW5zY29kZXJfbmFtZShwY2hfdHJhbnNj b2RlcikpOwo+ICB9Cj4gKwo+ICsvKioKPiArICogaW50ZWxfY2hlY2tfY3B1X2ZpZm9fdW5kZXJy dW5zIC0gY2hlY2sgZm9yIENQVSBmaWZvIHVuZGVycnVucyBpbW1lZGlhdGVseQo+ICsgKiBAZGV2 X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNlCj4gKyAqCj4gKyAqIENoZWNrIGZvciBDUFUgZmlm byB1bmRlcnJ1bnMgaW1tZWRpYXRlbHkuIFVzZWZ1bCBvbiBJVkIvSFNXIHdoZXJlIHRoZSBzaGFy ZWQKPiArICogZXJyb3IgaW50ZXJydXB0IG1heSBoYXZlIGJlZW4gZGlzYWJsZWQsIGFuZCBzbyBD UFUgZmlmbyB1bmRlcnJ1bnMgd29uJ3QKPiArICogbmVjZXNzYXJpbHkgcmFpc2UgYW4gaW50ZXJy dXB0LCBhbmQgb24gR01DSCBwbGF0Zm9ybXMgd2hlcmUgdW5kZXJydW5zIG5ldmVyCj4gKyAqIHJh aXNlIGFuIGludGVycnVwdC4KPiArICovCj4gK3ZvaWQgaW50ZWxfY2hlY2tfY3B1X2ZpZm9fdW5k ZXJydW5zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJc3RydWN0 IGludGVsX2NydGMgKmNydGM7Cj4gKwo+ICsJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9s b2NrKTsKPiArCj4gKwlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldl9wcml2LT5kZXYsIGNydGMpIHsK PiArCQlpZiAoY3J0Yy0+Y3B1X2ZpZm9fdW5kZXJydW5fZGlzYWJsZWQpCj4gKwkJCWNvbnRpbnVl Owo+ICsKPiArCQlpZiAoSEFTX0dNQ0hfRElTUExBWShkZXZfcHJpdikpCj4gKwkJCWk5eHhfY2hl Y2tfZmlmb191bmRlcnJ1bnMoY3J0Yyk7Cj4gKwkJZWxzZSBpZiAoSVNfR0VONyhkZXZfcHJpdikp Cj4gKwkJCWl2eWJyaWRnZV9jaGVja19maWZvX3VuZGVycnVucyhjcnRjKTsKPiArCX0KPiArCj4g KwlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4gK30KPiArCj4gKy8qKgo+ ICsgKiBpbnRlbF9jaGVja19wY2hfZmlmb191bmRlcnJ1bnMgLSBjaGVjayBmb3IgUENIIGZpZm8g dW5kZXJydW5zIGltbWVkaWF0ZWx5Cj4gKyAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFu Y2UKPiArICoKPiArICogQ2hlY2sgZm9yIFBDSCBmaWZvIHVuZGVycnVucyBpbW1lZGlhdGVseS4g VXNlZnVsIG9uIENQVC9QUFQgd2hlcmUgdGhlIHNoYXJlZAo+ICsgKiBlcnJvciBpbnRlcnJ1cHQg bWF5IGhhdmUgYmVlbiBkaXNhYmxlZCwgYW5kIHNvIFBDSCBmaWZvIHVuZGVycnVucyB3b24ndAo+ ICsgKiBuZWNlc3NhcmlseSByYWlzZSBhbiBpbnRlcnJ1cHQuCj4gKyAqLwo+ICt2b2lkIGludGVs X2NoZWNrX3BjaF9maWZvX3VuZGVycnVucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwo+ICsKPiArCXNwaW5fbG9ja19p cnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4gKwo+ICsJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXZf cHJpdi0+ZGV2LCBjcnRjKSB7Cj4gKwkJaWYgKGNydGMtPnBjaF9maWZvX3VuZGVycnVuX2Rpc2Fi bGVkKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYgKEhBU19QQ0hfQ1BUKGRldl9wcml2KSkK PiArCQkJY3B0X2NoZWNrX3BjaF9maWZvX3VuZGVycnVucyhjcnRjKTsKPiArCX0KPiArCj4gKwlz cGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4gK30KPiAtLSAKPiAyLjQuMTAK PiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IElu dGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4g aHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoK LS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0 dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==