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: Tue, 9 Feb 2016 09:57:19 +0100 Message-ID: <56B9A9EF.2030801@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> <56B1C113.403@linux.intel.com> <20160203163408.GF23290@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 085446E51C for ; Tue, 9 Feb 2016 00:57:21 -0800 (PST) In-Reply-To: <20160203163408.GF23290@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 T3AgMDMtMDItMTYgb20gMTc6MzQgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6Cj4gT24gV2VkLCBG ZWIgMDMsIDIwMTYgYXQgMDk6NTc6NTVBTSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6 Cj4+IE9wIDAyLTAyLTE2IG9tIDE4OjMyIHNjaHJlZWYgVmlsbGUgU3lyasOkbMOkOgo+Pj4gT24g VHVlLCBGZWIgMDIsIDIwMTYgYXQgMDE6NDg6MTdQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3Qg d3JvdGU6Cj4+Pj4gZHJtL2k5MTU6IFVzZSBhdG9taWMgc3RhdGUgdG8gb2J0YWluIGxvYWQgZGV0 ZWN0aW9uIGNydGMsIHYyLgo+Pj4+Cj4+Pj4gSW5zdGVhZCBvZiByZXN0b3JpbmcgZHBtcyBhbmQg YSBmbGFnIGZvciB3aGV0aGVyIGEgdGVtcCBmYiBpcyBhbGxvY2F0ZWQgZHVwbGljYXRlCj4+Pj4g YW4gYXRvbWljIHN0YXRlIGJlZm9yZSB0aGUgbmV3IHN0YXRlIGlzIGNvbW1pdHRlZCwgYW5kIGNv bW1pdCBpdCB0aGUgb2xkIHN0YXRlCj4+Pj4gaW4gaW50ZWxfcmVsZWFzZV9sb2FkX2RldGVjdF9w aXBlLgo+Pj4+Cj4+Pj4gQ2hhbmdlcyBzaW5jZSB2MToKPj4+PiAtIFVzZSBhIHJlYWwgYXRvbWlj IHN0YXRlLgo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0 ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPj4+PiAtLS0KPj4+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4+Pj4gaW5kZXggNGQ4YzlmNzg1N2RiLi5jN2JhOGY0YTk3MWUg MTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+Pj4gQEAgLTEw MzYxLDYgKzEwMzYxLDcgQEAgbW9kZV9maXRzX2luX2ZiZGV2KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4+Pj4gIAlpZiAob2JqLT5iYXNlLnNpemUgPCBtb2RlLT52ZGlzcGxheSAqIGZiLT5waXRj aGVzWzBdKQo+Pj4+ICAJCXJldHVybiBOVUxMOwo+Pj4+ICAKPj4+PiArCWRybV9mcmFtZWJ1ZmZl cl9yZWZlcmVuY2UoZmIpOwo+Pj4+ICAJcmV0dXJuIGZiOwo+Pj4+ICAjZWxzZQo+Pj4+ICAJcmV0 dXJuIE5VTEw7Cj4+Pj4gQEAgLTEwNDE2LDcgKzEwNDE3LDcgQEAgYm9vbCBpbnRlbF9nZXRfbG9h ZF9kZXRlY3RfcGlwZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+Pj4+ICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsKPj4+PiAgCXN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiOwo+Pj4+ICAJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRl di0+bW9kZV9jb25maWc7Cj4+Pj4gLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBO VUxMOwo+Pj4+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gTlVMTCwgKnJlc3Rv cmVfc3RhdGUgPSBOVUxMOwo+Pj4+ICAJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5l Y3Rvcl9zdGF0ZTsKPj4+PiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ Pj4+ICAJaW50IHJldCwgaSA9IC0xOwo+Pj4+IEBAIC0xMDQyNSw2ICsxMDQyNiw4IEBAIGJvb2wg aW50ZWxfZ2V0X2xvYWRfZGV0ZWN0X3BpcGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKPj4+PiAgCQkgICAgICBjb25uZWN0b3ItPmJhc2UuaWQsIGNvbm5lY3Rvci0+bmFtZSwKPj4+ PiAgCQkgICAgICBlbmNvZGVyLT5iYXNlLmlkLCBlbmNvZGVyLT5uYW1lKTsKPj4+PiAgCj4+Pj4g KwlvbGQtPnJlc3RvcmVfc3RhdGUgPSBOVUxMOwo+Pj4+ICsKPj4+PiAgcmV0cnk6Cj4+Pj4gIAly ZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjb25maWctPmNvbm5lY3Rpb25fbXV0ZXgsIGN0eCk7Cj4+ Pj4gIAlpZiAocmV0KQo+Pj4+IEBAIC0xMDQ0MSwyNCArMTA0NDQsMTUgQEAgcmV0cnk6Cj4+Pj4g IAkgKi8KPj4+PiAgCj4+Pj4gIAkvKiBTZWUgaWYgd2UgYWxyZWFkeSBoYXZlIGEgQ1JUQyBmb3Ig dGhpcyBjb25uZWN0b3IgKi8KPj4+PiAtCWlmIChlbmNvZGVyLT5jcnRjKSB7Cj4+Pj4gLQkJY3J0 YyA9IGVuY29kZXItPmNydGM7Cj4+Pj4gKwlpZiAoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yykgewo+ Pj4+ICsJCWNydGMgPSBjb25uZWN0b3ItPnN0YXRlLT5jcnRjOwo+Pj4+ICAKPj4+PiAgCQlyZXQg PSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgY3R4KTsKPj4+PiAgCQlpZiAocmV0KQo+ Pj4+ICAJCQlnb3RvIGZhaWw7Cj4+Pj4gLQkJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+ cHJpbWFyeS0+bXV0ZXgsIGN0eCk7Cj4+Pj4gLQkJaWYgKHJldCkKPj4+PiAtCQkJZ290byBmYWls Owo+Pj4+IC0KPj4+PiAtCQlvbGQtPmRwbXNfbW9kZSA9IGNvbm5lY3Rvci0+ZHBtczsKPj4+PiAt CQlvbGQtPmxvYWRfZGV0ZWN0X3RlbXAgPSBmYWxzZTsKPj4+PiAgCj4+Pj4gIAkJLyogTWFrZSBz dXJlIHRoZSBjcnRjIGFuZCBjb25uZWN0b3IgYXJlIHJ1bm5pbmcgKi8KPj4+PiAtCQlpZiAoY29u bmVjdG9yLT5kcG1zICE9IERSTV9NT0RFX0RQTVNfT04pCj4+Pj4gLQkJCWNvbm5lY3Rvci0+ZnVu Y3MtPmRwbXMoY29ubmVjdG9yLCBEUk1fTU9ERV9EUE1TX09OKTsKPj4+PiAtCj4+Pj4gLQkJcmV0 dXJuIHRydWU7Cj4+Pj4gKwkJZ290byBmb3VuZDsKPj4+PiAgCX0KPj4+PiAgCj4+Pj4gIAkvKiBG aW5kIGFuIHVudXNlZCBvbmUgKGlmIHBvc3NpYmxlKSAqLwo+Pj4+IEBAIC0xMDQ2Niw4ICsxMDQ2 MCwxNSBAQCByZXRyeToKPj4+PiAgCQlpKys7Cj4+Pj4gIAkJaWYgKCEoZW5jb2Rlci0+cG9zc2li bGVfY3J0Y3MgJiAoMSA8PCBpKSkpCj4+Pj4gIAkJCWNvbnRpbnVlOwo+Pj4+IC0JCWlmIChwb3Nz aWJsZV9jcnRjLT5zdGF0ZS0+ZW5hYmxlKQo+Pj4+ICsKPj4+PiArCQlyZXQgPSBkcm1fbW9kZXNl dF9sb2NrKCZwb3NzaWJsZV9jcnRjLT5tdXRleCwgY3R4KTsKPj4+PiArCQlpZiAocmV0KQo+Pj4+ ICsJCQlnb3RvIGZhaWw7Cj4+Pj4gKwo+Pj4+ICsJCWlmIChwb3NzaWJsZV9jcnRjLT5zdGF0ZS0+ ZW5hYmxlKSB7Cj4+Pj4gKwkJCWRybV9tb2Rlc2V0X3VubG9jaygmcG9zc2libGVfY3J0Yy0+bXV0 ZXgpOwo+Pj4+ICAJCQljb250aW51ZTsKPj4+PiArCQl9Cj4+Pj4gIAo+Pj4+ICAJCWNydGMgPSBw b3NzaWJsZV9jcnRjOwo+Pj4+ICAJCWJyZWFrOwo+Pj4+IEBAIC0xMDQ4MSwyMyArMTA0ODIsMjIg QEAgcmV0cnk6Cj4+Pj4gIAkJZ290byBmYWlsOwo+Pj4+ICAJfQo+Pj4+ICAKPj4+PiAtCXJldCA9 IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCBjdHgpOwo+Pj4+IC0JaWYgKHJldCkKPj4+ PiAtCQlnb3RvIGZhaWw7Cj4+Pj4gK2ZvdW5kOgo+Pj4+ICsJaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Yyk7Cj4+Pj4gKwo+Pj4+ICAJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+ cHJpbWFyeS0+bXV0ZXgsIGN0eCk7Cj4+Pj4gIAlpZiAocmV0KQo+Pj4+ICAJCWdvdG8gZmFpbDsK Pj4+PiAgCj4+Pj4gLQlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPj4+PiAtCW9s ZC0+ZHBtc19tb2RlID0gY29ubmVjdG9yLT5kcG1zOwo+Pj4+IC0Jb2xkLT5sb2FkX2RldGVjdF90 ZW1wID0gdHJ1ZTsKPj4+PiAtCW9sZC0+cmVsZWFzZV9mYiA9IE5VTEw7Cj4+Pj4gLQo+Pj4+ICAJ c3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7Cj4+Pj4gLQlpZiAoIXN0YXRlKQo+ Pj4+IC0JCXJldHVybiBmYWxzZTsKPj4+PiArCXJlc3RvcmVfc3RhdGUgPSBkcm1fYXRvbWljX3N0 YXRlX2FsbG9jKGRldik7Cj4+Pj4gKwlpZiAoIXN0YXRlIHx8ICFyZXN0b3JlX3N0YXRlKSB7Cj4+ Pj4gKwkJcmV0ID0gLUVOT01FTTsKPj4+PiArCQlnb3RvIGZhaWw7Cj4+Pj4gKwl9Cj4+Pj4gIAo+ Pj4+ICAJc3RhdGUtPmFjcXVpcmVfY3R4ID0gY3R4Owo+Pj4+ICsJcmVzdG9yZV9zdGF0ZS0+YWNx dWlyZV9jdHggPSBjdHg7Cj4+Pj4gIAo+Pj4+ICAJY29ubmVjdG9yX3N0YXRlID0gZHJtX2F0b21p Y19nZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOwo+Pj4+ICAJaWYgKElTX0VS Uihjb25uZWN0b3Jfc3RhdGUpKSB7Cj4+Pj4gQEAgLTEwNTA1LDcgKzEwNTA1LDkgQEAgcmV0cnk6 Cj4+Pj4gIAkJZ290byBmYWlsOwo+Pj4+ICAJfQo+Pj4+ICAKPj4+PiAtCWNvbm5lY3Rvcl9zdGF0 ZS0+Y3J0YyA9IGNydGM7Cj4+Pj4gKwlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25u ZWN0b3IoY29ubmVjdG9yX3N0YXRlLCBjcnRjKTsKPj4+PiArCWlmIChyZXQpCj4+Pj4gKwkJZ290 byBmYWlsOwo+Pj4+ICAKPj4+PiAgCWNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNf c3RhdGUoc3RhdGUsIGludGVsX2NydGMpOwo+Pj4+ICAJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkg ewo+Pj4+IEBAIC0xMDUyOSw3ICsxMDUzMSw2IEBAIHJldHJ5Ogo+Pj4+ICAJaWYgKGZiID09IE5V TEwpIHsKPj4+PiAgCQlEUk1fREVCVUdfS01TKCJjcmVhdGluZyB0bXAgZmIgZm9yIGxvYWQtZGV0 ZWN0aW9uXG4iKTsKPj4+PiAgCQlmYiA9IGludGVsX2ZyYW1lYnVmZmVyX2NyZWF0ZV9mb3JfbW9k ZShkZXYsIG1vZGUsIDI0LCAzMik7Cj4+Pj4gLQkJb2xkLT5yZWxlYXNlX2ZiID0gZmI7Cj4+Pj4g IAl9IGVsc2UKPj4+PiAgCQlEUk1fREVCVUdfS01TKCJyZXVzaW5nIGZiZGV2IGZvciBsb2FkLWRl dGVjdGlvbiBmcmFtZWJ1ZmZlclxuIik7Cj4+Pj4gIAlpZiAoSVNfRVJSKGZiKSkgewo+Pj4+IEBA IC0xMDU0MSwxNSArMTA1NDIsMjggQEAgcmV0cnk6Cj4+Pj4gIAlpZiAocmV0KQo+Pj4+ICAJCWdv dG8gZmFpbDsKPj4+PiAgCj4+Pj4gLQlkcm1fbW9kZV9jb3B5KCZjcnRjX3N0YXRlLT5iYXNlLm1v ZGUsIG1vZGUpOwo+Pj4+ICsJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKGZiKTsKPj4+PiAr Cj4+Pj4gKwlyZXQgPSBkcm1fYXRvbWljX3NldF9tb2RlX2Zvcl9jcnRjKCZjcnRjX3N0YXRlLT5i YXNlLCBtb2RlKTsKPj4+PiArCWlmIChyZXQpCj4+Pj4gKwkJZ290byBmYWlsOwo+Pj4+ICsKPj4+ PiArCXJldCA9IFBUUl9FUlJfT1JfWkVSTyhkcm1fYXRvbWljX2dldF9jb25uZWN0b3Jfc3RhdGUo cmVzdG9yZV9zdGF0ZSwgY29ubmVjdG9yKSk7Cj4+Pj4gKwlpZiAoIXJldCkKPj4+PiArCQlyZXQg PSBQVFJfRVJSX09SX1pFUk8oZHJtX2F0b21pY19nZXRfY3J0Y19zdGF0ZShyZXN0b3JlX3N0YXRl LCBjcnRjKSk7Cj4+Pj4gKwlpZiAoIXJldCkKPj4+PiArCQlyZXQgPSBQVFJfRVJSX09SX1pFUk8o ZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUocmVzdG9yZV9zdGF0ZSwgY3J0Yy0+cHJpbWFyeSkp Owo+Pj4+ICsJaWYgKHJldCkgewo+Pj4+ICsJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byBjcmVh dGUgYSBjb3B5IG9mIG9sZCBzdGF0ZSB0byByZXN0b3JlOiAlaVxuIiwgcmV0KTsKPj4+PiArCQln b3RvIGZhaWw7Cj4+Pj4gKwl9Cj4+Pj4gIAo+Pj4+ICAJaWYgKGRybV9hdG9taWNfY29tbWl0KHN0 YXRlKSkgewo+Pj4+ICAJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBzZXQgbW9kZSBvbiBsb2Fk LWRldGVjdCBwaXBlXG4iKTsKPj4+PiAtCQlpZiAob2xkLT5yZWxlYXNlX2ZiKQo+Pj4+IC0JCQlv bGQtPnJlbGVhc2VfZmItPmZ1bmNzLT5kZXN0cm95KG9sZC0+cmVsZWFzZV9mYik7Cj4+Pj4gIAkJ Z290byBmYWlsOwo+Pj4+ICAJfQo+Pj4+IC0JY3J0Yy0+cHJpbWFyeS0+Y3J0YyA9IGNydGM7Cj4+ Pj4gKwo+Pj4+ICsJb2xkLT5yZXN0b3JlX3N0YXRlID0gcmVzdG9yZV9zdGF0ZTsKPj4+PiAgCj4+ Pj4gIAkvKiBsZXQgdGhlIGNvbm5lY3RvciBnZXQgdGhyb3VnaCBvbmUgZnVsbCBjeWNsZSBiZWZv cmUgdGVzdGluZyAqLwo+Pj4+ICAJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgaW50ZWxfY3J0 Yy0+cGlwZSk7Cj4+Pj4gQEAgLTEwNTU3LDcgKzEwNTcxLDggQEAgcmV0cnk6Cj4+Pj4gIAo+Pj4+ ICBmYWlsOgo+Pj4+ICAJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPj4+PiAtCXN0YXRl ID0gTlVMTDsKPj4+PiArCWRybV9hdG9taWNfc3RhdGVfZnJlZShyZXN0b3JlX3N0YXRlKTsKPj4+ PiArCXJlc3RvcmVfc3RhdGUgPSBzdGF0ZSA9IE5VTEw7Cj4+Pj4gIAo+Pj4+ICAJaWYgKHJldCA9 PSAtRURFQURMSykgewo+Pj4+ICAJCWRybV9tb2Rlc2V0X2JhY2tvZmYoY3R4KTsKPj4+PiBAQCAt MTA1NzEsMTQgKzEwNTg2LDEyIEBAIHZvaWQgaW50ZWxfcmVsZWFzZV9sb2FkX2RldGVjdF9waXBl KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+Pj4gIAkJCQkgICAgc3RydWN0IGlu dGVsX2xvYWRfZGV0ZWN0X3BpcGUgKm9sZCwKPj4+PiAgCQkJCSAgICBzdHJ1Y3QgZHJtX21vZGVz ZXRfYWNxdWlyZV9jdHggKmN0eCkKPj4+PiAgewo+Pj4+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGNvbm5lY3Rvci0+ZGV2Owo+Pj4+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2Vu Y29kZXIgPQo+Pj4+ICAJCWludGVsX2F0dGFjaGVkX2VuY29kZXIoY29ubmVjdG9yKTsKPj4+PiAg CXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZpbnRlbF9lbmNvZGVyLT5iYXNlOwo+Pj4+ IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0gZW5jb2Rlci0+Y3J0YzsKPj4+PiArCXN0cnVjdCBk cm1fY3J0YyAqY3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7Cj4+Pj4gIAlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4+Pj4gLQlzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4+Pj4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubmVjdG9yX3N0YXRlOwo+Pj4+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl ID0gb2xkLT5yZXN0b3JlX3N0YXRlOwo+Pj4+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGU7Cj4+Pj4gIAlpbnQgcmV0Owo+Pj4+ICAKPj4+PiBAQCAtMTA1ODYsNTAgKzEwNTk5 LDE3IEBAIHZvaWQgaW50ZWxfcmVsZWFzZV9sb2FkX2RldGVjdF9waXBlKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCj4+Pj4gIAkJICAgICAgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25u ZWN0b3ItPm5hbWUsCj4+Pj4gIAkJICAgICAgZW5jb2Rlci0+YmFzZS5pZCwgZW5jb2Rlci0+bmFt ZSk7Cj4+Pj4gIAo+Pj4+IC0JaWYgKG9sZC0+bG9hZF9kZXRlY3RfdGVtcCkgewo+Pj4+IC0JCXN0 YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhkZXYpOwo+Pj4+IC0JCWlmICghc3RhdGUpCj4+ Pj4gLQkJCWdvdG8gZmFpbDsKPj4+PiAtCj4+Pj4gLQkJc3RhdGUtPmFjcXVpcmVfY3R4ID0gY3R4 Owo+Pj4+IC0KPj4+PiAtCQljb25uZWN0b3Jfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jb25uZWN0 b3Jfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvcik7Cj4+Pj4gLQkJaWYgKElTX0VSUihjb25uZWN0b3Jf c3RhdGUpKQo+Pj4+IC0JCQlnb3RvIGZhaWw7Cj4+Pj4gLQo+Pj4+IC0JCWNydGNfc3RhdGUgPSBp bnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGludGVsX2NydGMpOwo+Pj4+IC0JCWlm IChJU19FUlIoY3J0Y19zdGF0ZSkpCj4+Pj4gLQkJCWdvdG8gZmFpbDsKPj4+PiAtCj4+Pj4gLQkJ Y29ubmVjdG9yX3N0YXRlLT5jcnRjID0gTlVMTDsKPj4+PiAtCj4+Pj4gLQkJY3J0Y19zdGF0ZS0+ YmFzZS5lbmFibGUgPSBjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSA9IGZhbHNlOwo+Pj4+IC0KPj4+ PiAtCQlyZXQgPSBpbnRlbF9tb2Rlc2V0X3NldHVwX3BsYW5lX3N0YXRlKHN0YXRlLCBjcnRjLCBO VUxMLCBOVUxMLAo+Pj4+IC0JCQkJCQkgICAgICAwLCAwKTsKPj4+PiAtCQlpZiAocmV0KQo+Pj4+ IC0JCQlnb3RvIGZhaWw7Cj4+Pj4gLQo+Pj4+IC0JCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0 YXRlKTsKPj4+PiAtCQlpZiAocmV0KQo+Pj4+IC0JCQlnb3RvIGZhaWw7Cj4+Pj4gLQo+Pj4+IC0J CWlmIChvbGQtPnJlbGVhc2VfZmIpIHsKPj4+PiAtCQkJZHJtX2ZyYW1lYnVmZmVyX3VucmVnaXN0 ZXJfcHJpdmF0ZShvbGQtPnJlbGVhc2VfZmIpOwo+Pj4+IC0JCQlkcm1fZnJhbWVidWZmZXJfdW5y ZWZlcmVuY2Uob2xkLT5yZWxlYXNlX2ZiKTsKPj4+PiAtCQl9Cj4+Pj4gLQo+Pj4+ICsJaWYgKCFz dGF0ZSkKPj4+PiAgCQlyZXR1cm47Cj4+Pj4gLQl9Cj4+Pj4gIAo+Pj4+IC0JLyogU3dpdGNoIGNy dGMgYW5kIGVuY29kZXIgYmFjayBvZmYgaWYgbmVjZXNzYXJ5ICovCj4+Pj4gLQlpZiAob2xkLT5k cG1zX21vZGUgIT0gRFJNX01PREVfRFBNU19PTikKPj4+PiAtCQljb25uZWN0b3ItPmZ1bmNzLT5k cG1zKGNvbm5lY3Rvciwgb2xkLT5kcG1zX21vZGUpOwo+Pj4+ICsJY3J0Y19zdGF0ZSA9IGludGVs X2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7Cj4+Pj4gKwljcnRjX3N0 YXRlLT5zaGFyZWRfZHBsbCA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpLT5zaGFy ZWRfZHBsbDsKPj4+IEhtbS4gV2hhdCdzIHRoaXMgc2hhcmVkX2RwbGwgc3R1ZmY/Cj4+IEl0J3Mg Zm9yIGludGVsX21vZGVzZXRfY2xlYXJfcGxscywgbm9ybWFsbHkgd2UgZHVwbGljYXRlIHRoZSBu ZXcgc3RhdGUgYW5kIGl0J3MgaGFuZGxlZCBjb3JyZWN0bHksCj4+IGJ1dCB3aGVuIHdlIGR1cGxp Y2F0ZSB0aGUgb2xkIHN0YXRlIHRoZSBwbGwgbWF5IGJlIGRpZmZlcmVudCBhbmQgdW5leHBlY3Rl ZCBiZWhhdmlvciBjb3VsZCBvY2N1cgo+PiBvdGhlcndpc2UuCj4gU291bmRzIGZyYWdpbGUuIEFu eSBjaGFuY2Ugb2YgbWFraW5nIGl0IGRvIHRoZSByaWdodCB0aGluZyAodG0pIHdpdGhvdXQKPiBo YXZpbmcgdG8ganVtcCB0aHJvdWdoIHN1Y2ggaG9vcHM/CkknbSBub3QgY29tcGxldGVseSBzdXJl IGlmIHRoYXQncyBwb3NzaWJsZSwgSSdsbCBoYXZlIHRvIGNoZWNrIGlmIG1ha2luZyBpbnRlbF9t b2Rlc2V0X2NsZWFyX3BsbHMgb25seSBjbGVhciB0aGUgbWFzayBmcm9tIG9sZF9jcnRjX3N0YXRl LT5zaGFyZWRfZHBsbCB3aWxsIGJyZWFrIGFueXRoaW5nIGZpcnN0LgoKfk1hYXJ0ZW4KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==