From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 1/6] drm/i915: Use atomic state to obtain load detection crtc, v2. Date: Wed, 3 Feb 2016 18:34:08 +0200 Message-ID: <20160203163408.GF23290@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> 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 335A36E7A8 for ; Wed, 3 Feb 2016 08:34:12 -0800 (PST) Content-Disposition: inline In-Reply-To: <56B1C113.403@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: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBGZWIgMDMsIDIwMTYgYXQgMDk6NTc6NTVBTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMDItMDItMTYgb20gMTg6MzIgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBUdWUsIEZlYiAwMiwgMjAxNiBhdCAwMTo0ODoxN1BNICswMTAwLCBNYWFydGVuIExh bmtob3JzdCB3cm90ZToKPiA+PiBkcm0vaTkxNTogVXNlIGF0b21pYyBzdGF0ZSB0byBvYnRhaW4g bG9hZCBkZXRlY3Rpb24gY3J0YywgdjIuCj4gPj4KPiA+PiBJbnN0ZWFkIG9mIHJlc3RvcmluZyBk cG1zIGFuZCBhIGZsYWcgZm9yIHdoZXRoZXIgYSB0ZW1wIGZiIGlzIGFsbG9jYXRlZCBkdXBsaWNh dGUKPiA+PiBhbiBhdG9taWMgc3RhdGUgYmVmb3JlIHRoZSBuZXcgc3RhdGUgaXMgY29tbWl0dGVk LCBhbmQgY29tbWl0IGl0IHRoZSBvbGQgc3RhdGUKPiA+PiBpbiBpbnRlbF9yZWxlYXNlX2xvYWRf ZGV0ZWN0X3BpcGUuCj4gPj4KPiA+PiBDaGFuZ2VzIHNpbmNlIHYxOgo+ID4+IC0gVXNlIGEgcmVh bCBhdG9taWMgc3RhdGUuCj4gPj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3Jz dCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4+IC0tLQo+ID4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+PiBpbmRleCA0ZDhjOWY3ODU3ZGIuLmM3YmE4 ZjRhOTcxZSAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ PiBAQCAtMTAzNjEsNiArMTAzNjEsNyBAQCBtb2RlX2ZpdHNfaW5fZmJkZXYoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiA+PiAgCWlmIChvYmotPmJhc2Uuc2l6ZSA8IG1vZGUtPnZkaXNwbGF5ICog ZmItPnBpdGNoZXNbMF0pCj4gPj4gIAkJcmV0dXJuIE5VTEw7Cj4gPj4gIAo+ID4+ICsJZHJtX2Zy YW1lYnVmZmVyX3JlZmVyZW5jZShmYik7Cj4gPj4gIAlyZXR1cm4gZmI7Cj4gPj4gICNlbHNlCj4g Pj4gIAlyZXR1cm4gTlVMTDsKPiA+PiBAQCAtMTA0MTYsNyArMTA0MTcsNyBAQCBib29sIGludGVs X2dldF9sb2FkX2RldGVjdF9waXBlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4g Pj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Owo+ID4+ICAJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cj4gPj4gIAlzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25m aWcgPSAmZGV2LT5tb2RlX2NvbmZpZzsKPiA+PiAtCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSA9IE5VTEw7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBOVUxM LCAqcmVzdG9yZV9zdGF0ZSA9IE5VTEw7Cj4gPj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubmVjdG9yX3N0YXRlOwo+ID4+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGU7Cj4gPj4gIAlpbnQgcmV0LCBpID0gLTE7Cj4gPj4gQEAgLTEwNDI1LDYgKzEwNDI2LDgg QEAgYm9vbCBpbnRlbF9nZXRfbG9hZF9kZXRlY3RfcGlwZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAo+ID4+ICAJCSAgICAgIGNvbm5lY3Rvci0+YmFzZS5pZCwgY29ubmVjdG9yLT5u YW1lLAo+ID4+ICAJCSAgICAgIGVuY29kZXItPmJhc2UuaWQsIGVuY29kZXItPm5hbWUpOwo+ID4+ ICAKPiA+PiArCW9sZC0+cmVzdG9yZV9zdGF0ZSA9IE5VTEw7Cj4gPj4gKwo+ID4+ICByZXRyeToK PiA+PiAgCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNvbmZpZy0+Y29ubmVjdGlvbl9tdXRleCwg Y3R4KTsKPiA+PiAgCWlmIChyZXQpCj4gPj4gQEAgLTEwNDQxLDI0ICsxMDQ0NCwxNSBAQCByZXRy eToKPiA+PiAgCSAqLwo+ID4+ICAKPiA+PiAgCS8qIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBD UlRDIGZvciB0aGlzIGNvbm5lY3RvciAqLwo+ID4+IC0JaWYgKGVuY29kZXItPmNydGMpIHsKPiA+ PiAtCQljcnRjID0gZW5jb2Rlci0+Y3J0YzsKPiA+PiArCWlmIChjb25uZWN0b3ItPnN0YXRlLT5j cnRjKSB7Cj4gPj4gKwkJY3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7Cj4gPj4gIAo+ID4+ ICAJCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCBjdHgpOwo+ID4+ICAJCWlm IChyZXQpCj4gPj4gIAkJCWdvdG8gZmFpbDsKPiA+PiAtCQlyZXQgPSBkcm1fbW9kZXNldF9sb2Nr KCZjcnRjLT5wcmltYXJ5LT5tdXRleCwgY3R4KTsKPiA+PiAtCQlpZiAocmV0KQo+ID4+IC0JCQln b3RvIGZhaWw7Cj4gPj4gLQo+ID4+IC0JCW9sZC0+ZHBtc19tb2RlID0gY29ubmVjdG9yLT5kcG1z Owo+ID4+IC0JCW9sZC0+bG9hZF9kZXRlY3RfdGVtcCA9IGZhbHNlOwo+ID4+ICAKPiA+PiAgCQkv KiBNYWtlIHN1cmUgdGhlIGNydGMgYW5kIGNvbm5lY3RvciBhcmUgcnVubmluZyAqLwo+ID4+IC0J CWlmIChjb25uZWN0b3ItPmRwbXMgIT0gRFJNX01PREVfRFBNU19PTikKPiA+PiAtCQkJY29ubmVj dG9yLT5mdW5jcy0+ZHBtcyhjb25uZWN0b3IsIERSTV9NT0RFX0RQTVNfT04pOwo+ID4+IC0KPiA+ PiAtCQlyZXR1cm4gdHJ1ZTsKPiA+PiArCQlnb3RvIGZvdW5kOwo+ID4+ICAJfQo+ID4+ICAKPiA+ PiAgCS8qIEZpbmQgYW4gdW51c2VkIG9uZSAoaWYgcG9zc2libGUpICovCj4gPj4gQEAgLTEwNDY2 LDggKzEwNDYwLDE1IEBAIHJldHJ5Ogo+ID4+ICAJCWkrKzsKPiA+PiAgCQlpZiAoIShlbmNvZGVy LT5wb3NzaWJsZV9jcnRjcyAmICgxIDw8IGkpKSkKPiA+PiAgCQkJY29udGludWU7Cj4gPj4gLQkJ aWYgKHBvc3NpYmxlX2NydGMtPnN0YXRlLT5lbmFibGUpCj4gPj4gKwo+ID4+ICsJCXJldCA9IGRy bV9tb2Rlc2V0X2xvY2soJnBvc3NpYmxlX2NydGMtPm11dGV4LCBjdHgpOwo+ID4+ICsJCWlmIChy ZXQpCj4gPj4gKwkJCWdvdG8gZmFpbDsKPiA+PiArCj4gPj4gKwkJaWYgKHBvc3NpYmxlX2NydGMt PnN0YXRlLT5lbmFibGUpIHsKPiA+PiArCQkJZHJtX21vZGVzZXRfdW5sb2NrKCZwb3NzaWJsZV9j cnRjLT5tdXRleCk7Cj4gPj4gIAkJCWNvbnRpbnVlOwo+ID4+ICsJCX0KPiA+PiAgCj4gPj4gIAkJ Y3J0YyA9IHBvc3NpYmxlX2NydGM7Cj4gPj4gIAkJYnJlYWs7Cj4gPj4gQEAgLTEwNDgxLDIzICsx MDQ4MiwyMiBAQCByZXRyeToKPiA+PiAgCQlnb3RvIGZhaWw7Cj4gPj4gIAl9Cj4gPj4gIAo+ID4+ IC0JcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0ZXgsIGN0eCk7Cj4gPj4gLQlpZiAo cmV0KQo+ID4+IC0JCWdvdG8gZmFpbDsKPiA+PiArZm91bmQ6Cj4gPj4gKwlpbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjKTsKPiA+PiArCj4gPj4gIAlyZXQgPSBkcm1fbW9kZXNldF9sb2Nr KCZjcnRjLT5wcmltYXJ5LT5tdXRleCwgY3R4KTsKPiA+PiAgCWlmIChyZXQpCj4gPj4gIAkJZ290 byBmYWlsOwo+ID4+ICAKPiA+PiAtCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ ID4+IC0Jb2xkLT5kcG1zX21vZGUgPSBjb25uZWN0b3ItPmRwbXM7Cj4gPj4gLQlvbGQtPmxvYWRf ZGV0ZWN0X3RlbXAgPSB0cnVlOwo+ID4+IC0Jb2xkLT5yZWxlYXNlX2ZiID0gTlVMTDsKPiA+PiAt Cj4gPj4gIAlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPiA+PiAtCWlmICgh c3RhdGUpCj4gPj4gLQkJcmV0dXJuIGZhbHNlOwo+ID4+ICsJcmVzdG9yZV9zdGF0ZSA9IGRybV9h dG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPiA+PiArCWlmICghc3RhdGUgfHwgIXJlc3RvcmVfc3Rh dGUpIHsKPiA+PiArCQlyZXQgPSAtRU5PTUVNOwo+ID4+ICsJCWdvdG8gZmFpbDsKPiA+PiArCX0K PiA+PiAgCj4gPj4gIAlzdGF0ZS0+YWNxdWlyZV9jdHggPSBjdHg7Cj4gPj4gKwlyZXN0b3JlX3N0 YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKPiA+PiAgCj4gPj4gIAljb25uZWN0b3Jfc3RhdGUgPSBk cm1fYXRvbWljX2dldF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvcik7Cj4gPj4gIAlp ZiAoSVNfRVJSKGNvbm5lY3Rvcl9zdGF0ZSkpIHsKPiA+PiBAQCAtMTA1MDUsNyArMTA1MDUsOSBA QCByZXRyeToKPiA+PiAgCQlnb3RvIGZhaWw7Cj4gPj4gIAl9Cj4gPj4gIAo+ID4+IC0JY29ubmVj dG9yX3N0YXRlLT5jcnRjID0gY3J0YzsKPiA+PiArCXJldCA9IGRybV9hdG9taWNfc2V0X2NydGNf Zm9yX2Nvbm5lY3Rvcihjb25uZWN0b3Jfc3RhdGUsIGNydGMpOwo+ID4+ICsJaWYgKHJldCkKPiA+ PiArCQlnb3RvIGZhaWw7Cj4gPj4gIAo+ID4+ICAJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19n ZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7Cj4gPj4gIAlpZiAoSVNfRVJSKGNydGNf c3RhdGUpKSB7Cj4gPj4gQEAgLTEwNTI5LDcgKzEwNTMxLDYgQEAgcmV0cnk6Cj4gPj4gIAlpZiAo ZmIgPT0gTlVMTCkgewo+ID4+ICAJCURSTV9ERUJVR19LTVMoImNyZWF0aW5nIHRtcCBmYiBmb3Ig bG9hZC1kZXRlY3Rpb25cbiIpOwo+ID4+ICAJCWZiID0gaW50ZWxfZnJhbWVidWZmZXJfY3JlYXRl X2Zvcl9tb2RlKGRldiwgbW9kZSwgMjQsIDMyKTsKPiA+PiAtCQlvbGQtPnJlbGVhc2VfZmIgPSBm YjsKPiA+PiAgCX0gZWxzZQo+ID4+ICAJCURSTV9ERUJVR19LTVMoInJldXNpbmcgZmJkZXYgZm9y IGxvYWQtZGV0ZWN0aW9uIGZyYW1lYnVmZmVyXG4iKTsKPiA+PiAgCWlmIChJU19FUlIoZmIpKSB7 Cj4gPj4gQEAgLTEwNTQxLDE1ICsxMDU0MiwyOCBAQCByZXRyeToKPiA+PiAgCWlmIChyZXQpCj4g Pj4gIAkJZ290byBmYWlsOwo+ID4+ICAKPiA+PiAtCWRybV9tb2RlX2NvcHkoJmNydGNfc3RhdGUt PmJhc2UubW9kZSwgbW9kZSk7Cj4gPj4gKwlkcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2UoZmIp Owo+ID4+ICsKPiA+PiArCXJldCA9IGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMoJmNydGNf c3RhdGUtPmJhc2UsIG1vZGUpOwo+ID4+ICsJaWYgKHJldCkKPiA+PiArCQlnb3RvIGZhaWw7Cj4g Pj4gKwo+ID4+ICsJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rv cl9zdGF0ZShyZXN0b3JlX3N0YXRlLCBjb25uZWN0b3IpKTsKPiA+PiArCWlmICghcmV0KQo+ID4+ ICsJCXJldCA9IFBUUl9FUlJfT1JfWkVSTyhkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHJlc3Rv cmVfc3RhdGUsIGNydGMpKTsKPiA+PiArCWlmICghcmV0KQo+ID4+ICsJCXJldCA9IFBUUl9FUlJf T1JfWkVSTyhkcm1fYXRvbWljX2dldF9wbGFuZV9zdGF0ZShyZXN0b3JlX3N0YXRlLCBjcnRjLT5w cmltYXJ5KSk7Cj4gPj4gKwlpZiAocmV0KSB7Cj4gPj4gKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVk IHRvIGNyZWF0ZSBhIGNvcHkgb2Ygb2xkIHN0YXRlIHRvIHJlc3RvcmU6ICVpXG4iLCByZXQpOwo+ ID4+ICsJCWdvdG8gZmFpbDsKPiA+PiArCX0KPiA+PiAgCj4gPj4gIAlpZiAoZHJtX2F0b21pY19j b21taXQoc3RhdGUpKSB7Cj4gPj4gIAkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIHNldCBtb2Rl IG9uIGxvYWQtZGV0ZWN0IHBpcGVcbiIpOwo+ID4+IC0JCWlmIChvbGQtPnJlbGVhc2VfZmIpCj4g Pj4gLQkJCW9sZC0+cmVsZWFzZV9mYi0+ZnVuY3MtPmRlc3Ryb3kob2xkLT5yZWxlYXNlX2ZiKTsK PiA+PiAgCQlnb3RvIGZhaWw7Cj4gPj4gIAl9Cj4gPj4gLQljcnRjLT5wcmltYXJ5LT5jcnRjID0g Y3J0YzsKPiA+PiArCj4gPj4gKwlvbGQtPnJlc3RvcmVfc3RhdGUgPSByZXN0b3JlX3N0YXRlOwo+ ID4+ICAKPiA+PiAgCS8qIGxldCB0aGUgY29ubmVjdG9yIGdldCB0aHJvdWdoIG9uZSBmdWxsIGN5 Y2xlIGJlZm9yZSB0ZXN0aW5nICovCj4gPj4gIAlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBp bnRlbF9jcnRjLT5waXBlKTsKPiA+PiBAQCAtMTA1NTcsNyArMTA1NzEsOCBAQCByZXRyeToKPiA+ PiAgCj4gPj4gIGZhaWw6Cj4gPj4gIAlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ID4+ IC0Jc3RhdGUgPSBOVUxMOwo+ID4+ICsJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHJlc3RvcmVfc3Rh dGUpOwo+ID4+ICsJcmVzdG9yZV9zdGF0ZSA9IHN0YXRlID0gTlVMTDsKPiA+PiAgCj4gPj4gIAlp ZiAocmV0ID09IC1FREVBRExLKSB7Cj4gPj4gIAkJZHJtX21vZGVzZXRfYmFja29mZihjdHgpOwo+ ID4+IEBAIC0xMDU3MSwxNCArMTA1ODYsMTIgQEAgdm9pZCBpbnRlbF9yZWxlYXNlX2xvYWRfZGV0 ZWN0X3BpcGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+PiAgCQkJCSAgICBz dHJ1Y3QgaW50ZWxfbG9hZF9kZXRlY3RfcGlwZSAqb2xkLAo+ID4+ICAJCQkJICAgIHN0cnVjdCBk cm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KQo+ID4+ICB7Cj4gPj4gLQlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4gPj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq aW50ZWxfZW5jb2RlciA9Cj4gPj4gIAkJaW50ZWxfYXR0YWNoZWRfZW5jb2Rlcihjb25uZWN0b3Ip Owo+ID4+ICAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmludGVsX2VuY29kZXItPmJh c2U7Cj4gPj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBlbmNvZGVyLT5jcnRjOwo+ID4+ICsJ c3RydWN0IGRybV9jcnRjICpjcnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsKPiA+PiAgCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiA+PiAt CXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPiA+PiAtCXN0cnVjdCBkcm1fY29ubmVj dG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUgPSBvbGQtPnJlc3RvcmVfc3RhdGU7Cj4gPj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZTsKPiA+PiAgCWludCByZXQ7Cj4gPj4gIAo+ID4+IEBAIC0xMDU4Niw1 MCArMTA1OTksMTcgQEAgdm9pZCBpbnRlbF9yZWxlYXNlX2xvYWRfZGV0ZWN0X3BpcGUoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+PiAgCQkgICAgICBjb25uZWN0b3ItPmJhc2Uu aWQsIGNvbm5lY3Rvci0+bmFtZSwKPiA+PiAgCQkgICAgICBlbmNvZGVyLT5iYXNlLmlkLCBlbmNv ZGVyLT5uYW1lKTsKPiA+PiAgCj4gPj4gLQlpZiAob2xkLT5sb2FkX2RldGVjdF90ZW1wKSB7Cj4g Pj4gLQkJc3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7Cj4gPj4gLQkJaWYgKCFz dGF0ZSkKPiA+PiAtCQkJZ290byBmYWlsOwo+ID4+IC0KPiA+PiAtCQlzdGF0ZS0+YWNxdWlyZV9j dHggPSBjdHg7Cj4gPj4gLQo+ID4+IC0JCWNvbm5lY3Rvcl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0 X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yKTsKPiA+PiAtCQlpZiAoSVNfRVJSKGNv bm5lY3Rvcl9zdGF0ZSkpCj4gPj4gLQkJCWdvdG8gZmFpbDsKPiA+PiAtCj4gPj4gLQkJY3J0Y19z dGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7Cj4g Pj4gLQkJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkKPiA+PiAtCQkJZ290byBmYWlsOwo+ID4+IC0K PiA+PiAtCQljb25uZWN0b3Jfc3RhdGUtPmNydGMgPSBOVUxMOwo+ID4+IC0KPiA+PiAtCQljcnRj X3N0YXRlLT5iYXNlLmVuYWJsZSA9IGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlID0gZmFsc2U7Cj4g Pj4gLQo+ID4+IC0JCXJldCA9IGludGVsX21vZGVzZXRfc2V0dXBfcGxhbmVfc3RhdGUoc3RhdGUs IGNydGMsIE5VTEwsIE5VTEwsCj4gPj4gLQkJCQkJCSAgICAgIDAsIDApOwo+ID4+IC0JCWlmIChy ZXQpCj4gPj4gLQkJCWdvdG8gZmFpbDsKPiA+PiAtCj4gPj4gLQkJcmV0ID0gZHJtX2F0b21pY19j b21taXQoc3RhdGUpOwo+ID4+IC0JCWlmIChyZXQpCj4gPj4gLQkJCWdvdG8gZmFpbDsKPiA+PiAt Cj4gPj4gLQkJaWYgKG9sZC0+cmVsZWFzZV9mYikgewo+ID4+IC0JCQlkcm1fZnJhbWVidWZmZXJf dW5yZWdpc3Rlcl9wcml2YXRlKG9sZC0+cmVsZWFzZV9mYik7Cj4gPj4gLQkJCWRybV9mcmFtZWJ1 ZmZlcl91bnJlZmVyZW5jZShvbGQtPnJlbGVhc2VfZmIpOwo+ID4+IC0JCX0KPiA+PiAtCj4gPj4g KwlpZiAoIXN0YXRlKQo+ID4+ICAJCXJldHVybjsKPiA+PiAtCX0KPiA+PiAgCj4gPj4gLQkvKiBT d2l0Y2ggY3J0YyBhbmQgZW5jb2RlciBiYWNrIG9mZiBpZiBuZWNlc3NhcnkgKi8KPiA+PiAtCWlm IChvbGQtPmRwbXNfbW9kZSAhPSBEUk1fTU9ERV9EUE1TX09OKQo+ID4+IC0JCWNvbm5lY3Rvci0+ ZnVuY3MtPmRwbXMoY29ubmVjdG9yLCBvbGQtPmRwbXNfbW9kZSk7Cj4gPj4gKwljcnRjX3N0YXRl ID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBpbnRlbF9jcnRjKTsKPiA+PiAr CWNydGNfc3RhdGUtPnNoYXJlZF9kcGxsID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0 ZSktPnNoYXJlZF9kcGxsOwo+ID4gSG1tLiBXaGF0J3MgdGhpcyBzaGFyZWRfZHBsbCBzdHVmZj8K PiBJdCdzIGZvciBpbnRlbF9tb2Rlc2V0X2NsZWFyX3BsbHMsIG5vcm1hbGx5IHdlIGR1cGxpY2F0 ZSB0aGUgbmV3IHN0YXRlIGFuZCBpdCdzIGhhbmRsZWQgY29ycmVjdGx5LAo+IGJ1dCB3aGVuIHdl IGR1cGxpY2F0ZSB0aGUgb2xkIHN0YXRlIHRoZSBwbGwgbWF5IGJlIGRpZmZlcmVudCBhbmQgdW5l eHBlY3RlZCBiZWhhdmlvciBjb3VsZCBvY2N1cgo+IG90aGVyd2lzZS4KClNvdW5kcyBmcmFnaWxl LiBBbnkgY2hhbmNlIG9mIG1ha2luZyBpdCBkbyB0aGUgcmlnaHQgdGhpbmcgKHRtKSB3aXRob3V0 CmhhdmluZyB0byBqdW1wIHRocm91Z2ggc3VjaCBob29wcz8KCi0tIApWaWxsZSBTeXJqw6Rsw6QK SW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==