From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v2 1/6] drm/i915: Use atomic state to obtain load detection crtc, v2. Date: Wed, 3 Feb 2016 09:57:55 +0100 Message-ID: <56B1C113.403@linux.intel.com> References: <1454334242-23354-1-git-send-email-maarten.lankhorst@linux.intel.com> <1454334242-23354-2-git-send-email-maarten.lankhorst@linux.intel.com> <56B0A591.1040801@linux.intel.com> <20160202173229.GX23290@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 0D2C57A04C for ; Wed, 3 Feb 2016 00:57:58 -0800 (PST) In-Reply-To: <20160202173229.GX23290@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMDItMDItMTYgb20gMTg6MzIgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6Cj4gT24gVHVlLCBG ZWIgMDIsIDIwMTYgYXQgMDE6NDg6MTdQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6 Cj4+IGRybS9pOTE1OiBVc2UgYXRvbWljIHN0YXRlIHRvIG9idGFpbiBsb2FkIGRldGVjdGlvbiBj cnRjLCB2Mi4KPj4KPj4gSW5zdGVhZCBvZiByZXN0b3JpbmcgZHBtcyBhbmQgYSBmbGFnIGZvciB3 aGV0aGVyIGEgdGVtcCBmYiBpcyBhbGxvY2F0ZWQgZHVwbGljYXRlCj4+IGFuIGF0b21pYyBzdGF0 ZSBiZWZvcmUgdGhlIG5ldyBzdGF0ZSBpcyBjb21taXR0ZWQsIGFuZCBjb21taXQgaXQgdGhlIG9s ZCBzdGF0ZQo+PiBpbiBpbnRlbF9yZWxlYXNlX2xvYWRfZGV0ZWN0X3BpcGUuCj4+Cj4+IENoYW5n ZXMgc2luY2UgdjE6Cj4+IC0gVXNlIGEgcmVhbCBhdG9taWMgc3RhdGUuCj4+Cj4+IFNpZ25lZC1v ZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5j b20+Cj4+IC0tLQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IGluZGV4IDRk OGM5Zjc4NTdkYi4uYzdiYThmNGE5NzFlIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4+IEBAIC0xMDM2MSw2ICsxMDM2MSw3IEBAIG1vZGVfZml0c19pbl9mYmRldihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCWlmIChvYmotPmJhc2Uuc2l6ZSA8IG1vZGUtPnZk aXNwbGF5ICogZmItPnBpdGNoZXNbMF0pCj4+ICAJCXJldHVybiBOVUxMOwo+PiAgCj4+ICsJZHJt X2ZyYW1lYnVmZmVyX3JlZmVyZW5jZShmYik7Cj4+ICAJcmV0dXJuIGZiOwo+PiAgI2Vsc2UKPj4g IAlyZXR1cm4gTlVMTDsKPj4gQEAgLTEwNDE2LDcgKzEwNDE3LDcgQEAgYm9vbCBpbnRlbF9nZXRf bG9hZF9kZXRlY3RfcGlwZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAgCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7Cj4+ICAJc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmI7Cj4+ICAJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRldi0+ bW9kZV9jb25maWc7Cj4+IC0Jc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gTlVMTDsK Pj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBOVUxMLCAqcmVzdG9yZV9zdGF0 ZSA9IE5VTEw7Cj4+ICAJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0 ZTsKPj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPj4gIAlpbnQgcmV0 LCBpID0gLTE7Cj4+IEBAIC0xMDQyNSw2ICsxMDQyNiw4IEBAIGJvb2wgaW50ZWxfZ2V0X2xvYWRf ZGV0ZWN0X3BpcGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gIAkJICAgICAg Y29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUsCj4+ICAJCSAgICAgIGVuY29kZXIt PmJhc2UuaWQsIGVuY29kZXItPm5hbWUpOwo+PiAgCj4+ICsJb2xkLT5yZXN0b3JlX3N0YXRlID0g TlVMTDsKPj4gKwo+PiAgcmV0cnk6Cj4+ICAJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY29uZmln LT5jb25uZWN0aW9uX211dGV4LCBjdHgpOwo+PiAgCWlmIChyZXQpCj4+IEBAIC0xMDQ0MSwyNCAr MTA0NDQsMTUgQEAgcmV0cnk6Cj4+ICAJICovCj4+ICAKPj4gIAkvKiBTZWUgaWYgd2UgYWxyZWFk eSBoYXZlIGEgQ1JUQyBmb3IgdGhpcyBjb25uZWN0b3IgKi8KPj4gLQlpZiAoZW5jb2Rlci0+Y3J0 Yykgewo+PiAtCQljcnRjID0gZW5jb2Rlci0+Y3J0YzsKPj4gKwlpZiAoY29ubmVjdG9yLT5zdGF0 ZS0+Y3J0Yykgewo+PiArCQljcnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsKPj4gIAo+PiAg CQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgY3R4KTsKPj4gIAkJaWYgKHJl dCkKPj4gIAkJCWdvdG8gZmFpbDsKPj4gLQkJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+ cHJpbWFyeS0+bXV0ZXgsIGN0eCk7Cj4+IC0JCWlmIChyZXQpCj4+IC0JCQlnb3RvIGZhaWw7Cj4+ IC0KPj4gLQkJb2xkLT5kcG1zX21vZGUgPSBjb25uZWN0b3ItPmRwbXM7Cj4+IC0JCW9sZC0+bG9h ZF9kZXRlY3RfdGVtcCA9IGZhbHNlOwo+PiAgCj4+ICAJCS8qIE1ha2Ugc3VyZSB0aGUgY3J0YyBh bmQgY29ubmVjdG9yIGFyZSBydW5uaW5nICovCj4+IC0JCWlmIChjb25uZWN0b3ItPmRwbXMgIT0g RFJNX01PREVfRFBNU19PTikKPj4gLQkJCWNvbm5lY3Rvci0+ZnVuY3MtPmRwbXMoY29ubmVjdG9y LCBEUk1fTU9ERV9EUE1TX09OKTsKPj4gLQo+PiAtCQlyZXR1cm4gdHJ1ZTsKPj4gKwkJZ290byBm b3VuZDsKPj4gIAl9Cj4+ICAKPj4gIAkvKiBGaW5kIGFuIHVudXNlZCBvbmUgKGlmIHBvc3NpYmxl KSAqLwo+PiBAQCAtMTA0NjYsOCArMTA0NjAsMTUgQEAgcmV0cnk6Cj4+ICAJCWkrKzsKPj4gIAkJ aWYgKCEoZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgJiAoMSA8PCBpKSkpCj4+ICAJCQljb250aW51 ZTsKPj4gLQkJaWYgKHBvc3NpYmxlX2NydGMtPnN0YXRlLT5lbmFibGUpCj4+ICsKPj4gKwkJcmV0 ID0gZHJtX21vZGVzZXRfbG9jaygmcG9zc2libGVfY3J0Yy0+bXV0ZXgsIGN0eCk7Cj4+ICsJCWlm IChyZXQpCj4+ICsJCQlnb3RvIGZhaWw7Cj4+ICsKPj4gKwkJaWYgKHBvc3NpYmxlX2NydGMtPnN0 YXRlLT5lbmFibGUpIHsKPj4gKwkJCWRybV9tb2Rlc2V0X3VubG9jaygmcG9zc2libGVfY3J0Yy0+ bXV0ZXgpOwo+PiAgCQkJY29udGludWU7Cj4+ICsJCX0KPj4gIAo+PiAgCQljcnRjID0gcG9zc2li bGVfY3J0YzsKPj4gIAkJYnJlYWs7Cj4+IEBAIC0xMDQ4MSwyMyArMTA0ODIsMjIgQEAgcmV0cnk6 Cj4+ICAJCWdvdG8gZmFpbDsKPj4gIAl9Cj4+ICAKPj4gLQlyZXQgPSBkcm1fbW9kZXNldF9sb2Nr KCZjcnRjLT5tdXRleCwgY3R4KTsKPj4gLQlpZiAocmV0KQo+PiAtCQlnb3RvIGZhaWw7Cj4+ICtm b3VuZDoKPj4gKwlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPj4gKwo+PiAgCXJl dCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPnByaW1hcnktPm11dGV4LCBjdHgpOwo+PiAgCWlm IChyZXQpCj4+ICAJCWdvdG8gZmFpbDsKPj4gIAo+PiAtCWludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwo+PiAtCW9sZC0+ZHBtc19tb2RlID0gY29ubmVjdG9yLT5kcG1zOwo+PiAtCW9s ZC0+bG9hZF9kZXRlY3RfdGVtcCA9IHRydWU7Cj4+IC0Jb2xkLT5yZWxlYXNlX2ZiID0gTlVMTDsK Pj4gLQo+PiAgCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhkZXYpOwo+PiAtCWlmICgh c3RhdGUpCj4+IC0JCXJldHVybiBmYWxzZTsKPj4gKwlyZXN0b3JlX3N0YXRlID0gZHJtX2F0b21p Y19zdGF0ZV9hbGxvYyhkZXYpOwo+PiArCWlmICghc3RhdGUgfHwgIXJlc3RvcmVfc3RhdGUpIHsK Pj4gKwkJcmV0ID0gLUVOT01FTTsKPj4gKwkJZ290byBmYWlsOwo+PiArCX0KPj4gIAo+PiAgCXN0 YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKPj4gKwlyZXN0b3JlX3N0YXRlLT5hY3F1aXJlX2N0eCA9 IGN0eDsKPj4gIAo+PiAgCWNvbm5lY3Rvcl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rv cl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yKTsKPj4gIAlpZiAoSVNfRVJSKGNvbm5lY3Rvcl9zdGF0 ZSkpIHsKPj4gQEAgLTEwNTA1LDcgKzEwNTA1LDkgQEAgcmV0cnk6Cj4+ICAJCWdvdG8gZmFpbDsK Pj4gIAl9Cj4+ICAKPj4gLQljb25uZWN0b3Jfc3RhdGUtPmNydGMgPSBjcnRjOwo+PiArCXJldCA9 IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5lY3Rvcihjb25uZWN0b3Jfc3RhdGUsIGNydGMp Owo+PiArCWlmIChyZXQpCj4+ICsJCWdvdG8gZmFpbDsKPj4gIAo+PiAgCWNydGNfc3RhdGUgPSBp bnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGludGVsX2NydGMpOwo+PiAgCWlmIChJ U19FUlIoY3J0Y19zdGF0ZSkpIHsKPj4gQEAgLTEwNTI5LDcgKzEwNTMxLDYgQEAgcmV0cnk6Cj4+ ICAJaWYgKGZiID09IE5VTEwpIHsKPj4gIAkJRFJNX0RFQlVHX0tNUygiY3JlYXRpbmcgdG1wIGZi IGZvciBsb2FkLWRldGVjdGlvblxuIik7Cj4+ICAJCWZiID0gaW50ZWxfZnJhbWVidWZmZXJfY3Jl YXRlX2Zvcl9tb2RlKGRldiwgbW9kZSwgMjQsIDMyKTsKPj4gLQkJb2xkLT5yZWxlYXNlX2ZiID0g ZmI7Cj4+ICAJfSBlbHNlCj4+ICAJCURSTV9ERUJVR19LTVMoInJldXNpbmcgZmJkZXYgZm9yIGxv YWQtZGV0ZWN0aW9uIGZyYW1lYnVmZmVyXG4iKTsKPj4gIAlpZiAoSVNfRVJSKGZiKSkgewo+PiBA QCAtMTA1NDEsMTUgKzEwNTQyLDI4IEBAIHJldHJ5Ogo+PiAgCWlmIChyZXQpCj4+ICAJCWdvdG8g ZmFpbDsKPj4gIAo+PiAtCWRybV9tb2RlX2NvcHkoJmNydGNfc3RhdGUtPmJhc2UubW9kZSwgbW9k ZSk7Cj4+ICsJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKGZiKTsKPj4gKwo+PiArCXJldCA9 IGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMoJmNydGNfc3RhdGUtPmJhc2UsIG1vZGUpOwo+ PiArCWlmIChyZXQpCj4+ICsJCWdvdG8gZmFpbDsKPj4gKwo+PiArCXJldCA9IFBUUl9FUlJfT1Jf WkVSTyhkcm1fYXRvbWljX2dldF9jb25uZWN0b3Jfc3RhdGUocmVzdG9yZV9zdGF0ZSwgY29ubmVj dG9yKSk7Cj4+ICsJaWYgKCFyZXQpCj4+ICsJCXJldCA9IFBUUl9FUlJfT1JfWkVSTyhkcm1fYXRv bWljX2dldF9jcnRjX3N0YXRlKHJlc3RvcmVfc3RhdGUsIGNydGMpKTsKPj4gKwlpZiAoIXJldCkK Pj4gKwkJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHJl c3RvcmVfc3RhdGUsIGNydGMtPnByaW1hcnkpKTsKPj4gKwlpZiAocmV0KSB7Cj4+ICsJCURSTV9E RUJVR19LTVMoIkZhaWxlZCB0byBjcmVhdGUgYSBjb3B5IG9mIG9sZCBzdGF0ZSB0byByZXN0b3Jl OiAlaVxuIiwgcmV0KTsKPj4gKwkJZ290byBmYWlsOwo+PiArCX0KPj4gIAo+PiAgCWlmIChkcm1f YXRvbWljX2NvbW1pdChzdGF0ZSkpIHsKPj4gIAkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIHNl dCBtb2RlIG9uIGxvYWQtZGV0ZWN0IHBpcGVcbiIpOwo+PiAtCQlpZiAob2xkLT5yZWxlYXNlX2Zi KQo+PiAtCQkJb2xkLT5yZWxlYXNlX2ZiLT5mdW5jcy0+ZGVzdHJveShvbGQtPnJlbGVhc2VfZmIp Owo+PiAgCQlnb3RvIGZhaWw7Cj4+ICAJfQo+PiAtCWNydGMtPnByaW1hcnktPmNydGMgPSBjcnRj Owo+PiArCj4+ICsJb2xkLT5yZXN0b3JlX3N0YXRlID0gcmVzdG9yZV9zdGF0ZTsKPj4gIAo+PiAg CS8qIGxldCB0aGUgY29ubmVjdG9yIGdldCB0aHJvdWdoIG9uZSBmdWxsIGN5Y2xlIGJlZm9yZSB0 ZXN0aW5nICovCj4+ICAJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgaW50ZWxfY3J0Yy0+cGlw ZSk7Cj4+IEBAIC0xMDU1Nyw3ICsxMDU3MSw4IEBAIHJldHJ5Ogo+PiAgCj4+ICBmYWlsOgo+PiAg CWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4+IC0Jc3RhdGUgPSBOVUxMOwo+PiArCWRy bV9hdG9taWNfc3RhdGVfZnJlZShyZXN0b3JlX3N0YXRlKTsKPj4gKwlyZXN0b3JlX3N0YXRlID0g c3RhdGUgPSBOVUxMOwo+PiAgCj4+ICAJaWYgKHJldCA9PSAtRURFQURMSykgewo+PiAgCQlkcm1f bW9kZXNldF9iYWNrb2ZmKGN0eCk7Cj4+IEBAIC0xMDU3MSwxNCArMTA1ODYsMTIgQEAgdm9pZCBp bnRlbF9yZWxlYXNlX2xvYWRfZGV0ZWN0X3BpcGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKPj4gIAkJCQkgICAgc3RydWN0IGludGVsX2xvYWRfZGV0ZWN0X3BpcGUgKm9sZCwKPj4g IAkJCQkgICAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgpCj4+ICB7Cj4+IC0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+PiAgCXN0cnVjdCBpbnRl bF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0KPj4gIAkJaW50ZWxfYXR0YWNoZWRfZW5jb2Rlcihj b25uZWN0b3IpOwo+PiAgCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZpbnRlbF9lbmNv ZGVyLT5iYXNlOwo+PiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGVuY29kZXItPmNydGM7Cj4+ ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsKPj4gIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4+IC0J c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+PiAtCXN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7Cj4+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlID0gb2xkLT5yZXN0b3JlX3N0YXRlOwo+PiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlOwo+PiAgCWludCByZXQ7Cj4+ICAKPj4gQEAgLTEwNTg2LDUwICsxMDU5OSwxNyBA QCB2b2lkIGludGVsX3JlbGVhc2VfbG9hZF9kZXRlY3RfcGlwZShzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+PiAgCQkgICAgICBjb25uZWN0b3ItPmJhc2UuaWQsIGNvbm5lY3Rvci0+ bmFtZSwKPj4gIAkJICAgICAgZW5jb2Rlci0+YmFzZS5pZCwgZW5jb2Rlci0+bmFtZSk7Cj4+ICAK Pj4gLQlpZiAob2xkLT5sb2FkX2RldGVjdF90ZW1wKSB7Cj4+IC0JCXN0YXRlID0gZHJtX2F0b21p Y19zdGF0ZV9hbGxvYyhkZXYpOwo+PiAtCQlpZiAoIXN0YXRlKQo+PiAtCQkJZ290byBmYWlsOwo+ PiAtCj4+IC0JCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKPj4gLQo+PiAtCQljb25uZWN0b3Jf c3RhdGUgPSBkcm1fYXRvbWljX2dldF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvcik7 Cj4+IC0JCWlmIChJU19FUlIoY29ubmVjdG9yX3N0YXRlKSkKPj4gLQkJCWdvdG8gZmFpbDsKPj4g LQo+PiAtCQljcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBp bnRlbF9jcnRjKTsKPj4gLQkJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkKPj4gLQkJCWdvdG8gZmFp bDsKPj4gLQo+PiAtCQljb25uZWN0b3Jfc3RhdGUtPmNydGMgPSBOVUxMOwo+PiAtCj4+IC0JCWNy dGNfc3RhdGUtPmJhc2UuZW5hYmxlID0gY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgPSBmYWxzZTsK Pj4gLQo+PiAtCQlyZXQgPSBpbnRlbF9tb2Rlc2V0X3NldHVwX3BsYW5lX3N0YXRlKHN0YXRlLCBj cnRjLCBOVUxMLCBOVUxMLAo+PiAtCQkJCQkJICAgICAgMCwgMCk7Cj4+IC0JCWlmIChyZXQpCj4+ IC0JCQlnb3RvIGZhaWw7Cj4+IC0KPj4gLQkJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUp Owo+PiAtCQlpZiAocmV0KQo+PiAtCQkJZ290byBmYWlsOwo+PiAtCj4+IC0JCWlmIChvbGQtPnJl bGVhc2VfZmIpIHsKPj4gLQkJCWRybV9mcmFtZWJ1ZmZlcl91bnJlZ2lzdGVyX3ByaXZhdGUob2xk LT5yZWxlYXNlX2ZiKTsKPj4gLQkJCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShvbGQtPnJl bGVhc2VfZmIpOwo+PiAtCQl9Cj4+IC0KPj4gKwlpZiAoIXN0YXRlKQo+PiAgCQlyZXR1cm47Cj4+ IC0JfQo+PiAgCj4+IC0JLyogU3dpdGNoIGNydGMgYW5kIGVuY29kZXIgYmFjayBvZmYgaWYgbmVj ZXNzYXJ5ICovCj4+IC0JaWYgKG9sZC0+ZHBtc19tb2RlICE9IERSTV9NT0RFX0RQTVNfT04pCj4+ IC0JCWNvbm5lY3Rvci0+ZnVuY3MtPmRwbXMoY29ubmVjdG9yLCBvbGQtPmRwbXNfbW9kZSk7Cj4+ ICsJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxf Y3J0Yyk7Cj4+ICsJY3J0Y19zdGF0ZS0+c2hhcmVkX2RwbGwgPSB0b19pbnRlbF9jcnRjX3N0YXRl KGNydGMtPnN0YXRlKS0+c2hhcmVkX2RwbGw7Cj4gSG1tLiBXaGF0J3MgdGhpcyBzaGFyZWRfZHBs bCBzdHVmZj8KSXQncyBmb3IgaW50ZWxfbW9kZXNldF9jbGVhcl9wbGxzLCBub3JtYWxseSB3ZSBk dXBsaWNhdGUgdGhlIG5ldyBzdGF0ZSBhbmQgaXQncyBoYW5kbGVkIGNvcnJlY3RseSwKYnV0IHdo ZW4gd2UgZHVwbGljYXRlIHRoZSBvbGQgc3RhdGUgdGhlIHBsbCBtYXkgYmUgZGlmZmVyZW50IGFu ZCB1bmV4cGVjdGVkIGJlaGF2aW9yIGNvdWxkIG9jY3VyCm90aGVyd2lzZS4KCn5NYWFydGVuCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==