From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/3] drm/i915: Do not acquire crtc state to check clock during modeset, v2. Date: Tue, 27 Oct 2015 16:27:16 +0200 Message-ID: <20151027142716.GI4437@intel.com> References: <1445514996-18733-3-git-send-email-maarten.lankhorst@linux.intel.com> <1445952393-25283-1-git-send-email-maarten.lankhorst@linux.intel.com> <20151027132917.GC4437@intel.com> <562F7EFC.80909@linux.intel.com> <20151027134946.GF4437@intel.com> <562F8154.2040602@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id B6EB56E4E1 for ; Tue, 27 Oct 2015 07:27:22 -0700 (PDT) Content-Disposition: inline In-Reply-To: <562F8154.2040602@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 T24gVHVlLCBPY3QgMjcsIDIwMTUgYXQgMDI6NTE6MTZQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMjctMTAtMTUgb20gMTQ6NDkgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBUdWUsIE9jdCAyNywgMjAxNSBhdCAwMjo0MToxNlBNICswMTAwLCBNYWFydGVuIExh bmtob3JzdCB3cm90ZToKPiA+PiBPcCAyNy0xMC0xNSBvbSAxNDoyOSBzY2hyZWVmIFZpbGxlIFN5 cmrDpGzDpDoKPiA+Pj4gT24gVHVlLCBPY3QgMjcsIDIwMTUgYXQgMDI6MjY6MzFQTSArMDEwMCwg TWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4gPj4+PiBQYXJhbGxlbCBtb2Rlc2V0cyBhcmUgc3Rp bGwgbm90IGFsbG93ZWQsIGJ1dCB0aGlzIHdpbGwgYWxsb3cgdXBkYXRpbmcKPiA+Pj4+IGEgZGlm ZmVyZW50IGNydGMgZHVyaW5nIGEgbW9kZXNldCBpZiB0aGUgY2xvY2sgaXMgbm90IGNoYW5nZWQu Cj4gPj4+Pgo+ID4+Pj4gQWRkaXRpb25hbGx5IHdoZW4gYWxsIHBpcGVzIGFyZSBEUE1TIG9mZiB0 aGUgY2RjbGsgd2lsbCBiZSBsb3dlcmVkCj4gPj4+PiB0byB0aGUgbWluaW11bSBhbGxvd2VkLgo+ ID4+Pj4KPiA+Pj4+IENoYW5nZXMgc2luY2UgdjE6Cj4gPj4+PiAtIEFkZCBkZXZfcHJpdi0+YWN0 aXZlX2NydGNzIGZvciB0cmFja2luZyB3aGljaCBjcnRjcyBhcmUgYWN0aXZlLgo+ID4+Pj4gLSBS ZW5hbWUgbWluX2NkY2xrIHRvIG1pbl9waXhjbGsgYW5kIG1vdmUgdG8gZGV2X3ByaXYuCj4gPj4+ PiAtIEFkZCBhIGFjdGl2ZV9jcnRjcyBtYXNrIHdoaWNoIGlzIHVwZGF0ZWQgYXRvbWljYWxseS4K PiA+Pj4+IC0gQWRkIGludGVsX2F0b21pY19zdGF0ZS0+bW9kZXNldCB3aGljaCBpcyBzZXQgb24g bW9kZXNldHMuCj4gPj4+PiAtIENvbW1pdCBuZXcgcGl4Y2xrL2FjdGl2ZV9jcnRjcyByaWdodCBh ZnRlciBzdGF0ZSBzd2FwLgo+ID4+Pj4KPiA+Pj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gPj4+PiAtLS0KPiA+ Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDUgKysKPiA+Pj4+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYyAgfCAgIDIgKy0KPiA+Pj4+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxNjAgKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0KPiA+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAgICAgfCAgIDcgKy0KPiA+Pj4+ICA0IGZpbGVzIGNoYW5nZWQsIDEyNSBpbnNlcnRpb25z KCspLCA0OSBkZWxldGlvbnMoLSkKPiA+Pj4+Cj4gPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiA+Pj4+IGluZGV4IDU5Yzk0OTI5ZjI1Yi4uMzdlZWY4NmU0YTBhIDEwMDY0NAo+ID4+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4+Pj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4+Pj4gQEAgLTE4MzcsOCArMTgzNywxMyBAQCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gPj4+PiAgCXN0cnVjdCBpbnRlbF9waXBlX2NyYyBwaXBl X2NyY1tJOTE1X01BWF9QSVBFU107Cj4gPj4+PiAgI2VuZGlmCj4gPj4+PiAgCj4gPj4+PiArCS8q IGRwbGwgYW5kIGNkY2xrIHN0YXRlIGlzIHByb3RlY3RlZCBieSBjb25uZWN0aW9uX211dGV4ICov Cj4gPj4+PiAgCWludCBudW1fc2hhcmVkX2RwbGw7Cj4gPj4+PiAgCXN0cnVjdCBpbnRlbF9zaGFy ZWRfZHBsbCBzaGFyZWRfZHBsbHNbSTkxNV9OVU1fUExMU107Cj4gPj4+PiArCj4gPj4+PiArCXVu c2lnbmVkIGludCBhY3RpdmVfY3J0Y3M7Cj4gPj4+PiArCXVuc2lnbmVkIGludCBtaW5fcGl4Y2xr W0k5MTVfTUFYX1BJUEVTXTsKPiA+Pj4+ICsKPiA+Pj4+ICAJaW50IGRwaW9fcGh5X2lvc2ZfcG9y dFtJOTE1X05VTV9QSFlTX1ZMVl07Cj4gPj4+PiAgCj4gPj4+PiAgCXN0cnVjdCBpOTE1X3dvcmth cm91bmRzIHdvcmthcm91bmRzOwo+ID4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMK PiA+Pj4+IGluZGV4IDI1YTg5MWFhMzgyNC4uY2I4ZmNmNGZlN2YyIDEwMDY0NAo+ID4+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKPiA+Pj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4gPj4+PiBAQCAtMzA1LDUgKzMwNSw1IEBA IHZvaWQgaW50ZWxfYXRvbWljX3N0YXRlX2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz KQo+ID4+Pj4gIHsKPiA+Pj4+ICAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUgPSB0 b19pbnRlbF9hdG9taWNfc3RhdGUocyk7Cj4gPj4+PiAgCWRybV9hdG9taWNfc3RhdGVfZGVmYXVs dF9jbGVhcigmc3RhdGUtPmJhc2UpOwo+ID4+Pj4gLQlzdGF0ZS0+ZHBsbF9zZXQgPSBmYWxzZTsK PiA+Pj4+ICsJc3RhdGUtPmRwbGxfc2V0ID0gc3RhdGUtPm1vZGVzZXQgPSBmYWxzZTsKPiA+Pj4+ ICB9Cj4gPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPj4+PiBpbmRleCAw MjJlNjI4Yjg1MjAuLmEwNTA4ZDVlOWUxMyAxMDA2NDQKPiA+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gPj4+PiBAQCAtNTIzNyw2ICs1MjM3LDcgQEAgc3RhdGljIHZv aWQgbW9kZXNldF9wdXRfcG93ZXJfZG9tYWlucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gPj4+PiAgCj4gPj4+PiAgc3RhdGljIHZvaWQgbW9kZXNldF91cGRhdGVfY3J0Y19w b3dlcl9kb21haW5zKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+Pj4+ICB7Cj4g Pj4+PiArCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxf YXRvbWljX3N0YXRlKHN0YXRlKTsKPiA+Pj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0 YXRlLT5kZXY7Cj4gPj4+PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gPj4+PiAgCXVuc2lnbmVkIGxvbmcgcHV0X2RvbWFpbnNbSTkxNV9N QVhfUElQRVNdID0ge307Cj4gPj4+PiBAQCAtNTI0NSwxMyArNTI0NiwxOCBAQCBzdGF0aWMgdm9p ZCBtb2Rlc2V0X3VwZGF0ZV9jcnRjX3Bvd2VyX2RvbWFpbnMoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+ID4+Pj4gIAlpbnQgaTsKPiA+Pj4+ICAKPiA+Pj4+ICAJZm9yX2VhY2hfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ID4+Pj4gLQkJaWYgKG5l ZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpKQo+ID4+Pj4gLQkJCXB1dF9kb21haW5zW3RvX2ludGVs X2NydGMoY3J0YyktPnBpcGVdID0KPiA+Pj4+IC0JCQkJbW9kZXNldF9nZXRfY3J0Y19wb3dlcl9k b21haW5zKGNydGMpOwo+ID4+Pj4gKwkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPQo+ ID4+Pj4gKwkJCXRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPj4+PiArCQllbnVtIHBpcGUgcGlwZSA9 IGludGVsX2NydGMtPnBpcGU7Cj4gPj4+PiArCj4gPj4+PiArCQlpZiAoIW5lZWRzX21vZGVzZXQo Y3J0Yy0+c3RhdGUpKQo+ID4+Pj4gKwkJCWNvbnRpbnVlOwo+ID4+Pj4gKwo+ID4+Pj4gKwkJcHV0 X2RvbWFpbnNbcGlwZV0gPSBtb2Rlc2V0X2dldF9jcnRjX3Bvd2VyX2RvbWFpbnMoY3J0Yyk7Cj4g Pj4+PiAgCX0KPiA+Pj4+ICAKPiA+Pj4+ICAJaWYgKGRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRf Y29tbWl0X2NkY2xrKSB7Cj4gPj4+PiAtCQl1bnNpZ25lZCBpbnQgY2RjbGsgPSB0b19pbnRlbF9h dG9taWNfc3RhdGUoc3RhdGUpLT5jZGNsazsKPiA+Pj4+ICsJCXVuc2lnbmVkIGludCBjZGNsayA9 IGludGVsX3N0YXRlLT5jZGNsazsKPiA+Pj4+ICAKPiA+Pj4+ICAJCWlmIChjZGNsayAhPSBkZXZf cHJpdi0+Y2RjbGtfZnJlcSAmJgo+ID4+Pj4gIAkJICAgICFXQVJOX09OKCFzdGF0ZS0+YWxsb3df bW9kZXNldCkpCj4gPj4+PiBAQCAtNTkzOCwyMyArNTk0NCwzMiBAQCBzdGF0aWMgaW50IGJyb3h0 b25fY2FsY19jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4+PiAg c3RhdGljIGludCBpbnRlbF9tb2RlX21heF9waXhjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiA+Pj4+ICAJCQkJIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+Pj4+ICB7Cj4g Pj4+PiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+ID4+Pj4gLQlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiA+Pj4+IC0JaW50IG1heF9waXhjbGsgPSAwOwo+ ID4+Pj4gKwlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVs X2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4gPj4+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPj4+PiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YzsKPiA+Pj4+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4+Pj4gKwl1 bnNpZ25lZCBtYXhfcGl4ZWxfcmF0ZSA9IDAsIGk7Cj4gPj4+PiArCWVudW0gcGlwZSBwaXBlOwo+ ID4+Pj4gIAo+ID4+Pj4gLQlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgaW50ZWxfY3J0Yykgewo+ ID4+Pj4gLQkJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwg aW50ZWxfY3J0Yyk7Cj4gPj4+PiAtCQlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQo+ID4+Pj4gLQkJ CXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwo+ID4+Pj4gKwltZW1jcHkoaW50ZWxfc3RhdGUt Pm1pbl9waXhjbGssIGRldl9wcml2LT5taW5fcGl4Y2xrLAo+ID4+Pj4gKwkgICAgICAgc2l6ZW9m KGludGVsX3N0YXRlLT5taW5fcGl4Y2xrKSk7Cj4gPj4+PiAgCj4gPj4+PiAtCQlpZiAoIWNydGNf c3RhdGUtPmJhc2UuZW5hYmxlKQo+ID4+Pj4gLQkJCWNvbnRpbnVlOwo+ID4+Pj4gKwlmb3JfZWFj aF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gPj4+PiArCQlp bnQgcGl4Y2xrID0gMDsKPiA+Pj4+ICAKPiA+Pj4+IC0JCW1heF9waXhjbGsgPSBtYXgobWF4X3Bp eGNsaywKPiA+Pj4+IC0JCQkJIGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Ns b2NrKTsKPiA+Pj4+ICsJCWlmIChjcnRjX3N0YXRlLT5lbmFibGUpCj4gPj4+PiArCQkJcGl4Y2xr ID0gY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+ID4+Pj4gKwo+ID4+Pj4g KwkJaW50ZWxfc3RhdGUtPm1pbl9waXhjbGtbaV0gPSBwaXhjbGs7Cj4gPj4+PiAgCX0KPiA+Pj4+ ICAKPiA+Pj4+IC0JcmV0dXJuIG1heF9waXhjbGs7Cj4gPj4+PiArCWlmICghaW50ZWxfc3RhdGUt PmFjdGl2ZV9jcnRjcykKPiA+Pj4+ICsJCXJldHVybiAwOwo+ID4+Pj4gKwo+ID4+Pj4gKwlmb3Jf ZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQo+ID4+Pj4gKwkJbWF4X3BpeGVsX3JhdGUgPSBtYXgo aW50ZWxfc3RhdGUtPm1pbl9waXhjbGtbcGlwZV0sIG1heF9waXhlbF9yYXRlKTsKPiA+Pj4+ICsK PiA+Pj4+ICsJcmV0dXJuIG1heF9waXhlbF9yYXRlOwo+ID4+Pj4gIH0KPiA+Pj4+ICAKPiA+Pj4+ ICBzdGF0aWMgaW50IHZhbGxleXZpZXdfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKPiA+Pj4+IEBAIC02MjU1LDYgKzYyNzAsOSBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4+ Pj4gIAlmb3JfZWFjaF9wb3dlcl9kb21haW4oZG9tYWluLCBkb21haW5zKQo+ID4+Pj4gIAkJaW50 ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIGRvbWFpbik7Cj4gPj4+PiAgCWludGVsX2Ny dGMtPmVuYWJsZWRfcG93ZXJfZG9tYWlucyA9IDA7Cj4gPj4+PiArCj4gPj4+PiArCWRldl9wcml2 LT5hY3RpdmVfY3J0Y3MgJj0gfigxIDw8IGludGVsX2NydGMtPnBpcGUpOwo+ID4+Pj4gKwlkZXZf cHJpdi0+bWluX3BpeGNsa1tpbnRlbF9jcnRjLT5waXBlXSA9IDA7Cj4gPj4+PiAgfQo+ID4+Pj4g IAo+ID4+Pj4gIC8qCj4gPj4+PiBAQCAtOTQ5MCwyOSArOTUwOCwzOSBAQCBzdGF0aWMgdm9pZCBi cm94dG9uX21vZGVzZXRfY29tbWl0X2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRf c3RhdGUpCj4gPj4+PiAgLyogY29tcHV0ZSB0aGUgbWF4IHJhdGUgZm9yIG5ldyBjb25maWd1cmF0 aW9uICovCj4gPj4+PiAgc3RhdGljIGludCBpbGtfbWF4X3BpeGVsX3JhdGUoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQo+ID4+Pj4gIHsKPiA+Pj4+IC0Jc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGM7Cj4gPj4+PiAtCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl Owo+ID4+Pj4gLQlpbnQgbWF4X3BpeGVsX3JhdGUgPSAwOwo+ID4+Pj4gKwlzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7 Cj4gPj4+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0YXRlLT5kZXYt PmRldl9wcml2YXRlOwo+ID4+Pj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPj4+PiArCXN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiA+Pj4+ICsJdW5zaWduZWQgbWF4X3Bp eGVsX3JhdGUgPSAwLCBpOwo+ID4+Pj4gKwllbnVtIHBpcGUgcGlwZTsKPiA+Pj4+ICAKPiA+Pj4+ IC0JZm9yX2VhY2hfaW50ZWxfY3J0YyhzdGF0ZS0+ZGV2LCBpbnRlbF9jcnRjKSB7Cj4gPj4+PiAt CQlpbnQgcGl4ZWxfcmF0ZTsKPiA+Pj4+ICsJbWVtY3B5KGludGVsX3N0YXRlLT5taW5fcGl4Y2xr LCBkZXZfcHJpdi0+bWluX3BpeGNsaywKPiA+Pj4+ICsJICAgICAgIHNpemVvZihpbnRlbF9zdGF0 ZS0+bWluX3BpeGNsaykpOwo+ID4+Pj4gIAo+ID4+Pj4gLQkJY3J0Y19zdGF0ZSA9IGludGVsX2F0 b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7Cj4gPj4+PiAtCQlpZiAoSVNf RVJSKGNydGNfc3RhdGUpKQo+ID4+Pj4gLQkJCXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwo+ ID4+Pj4gKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBp KSB7Cj4gPj4+PiArCQlpbnQgcGl4Y2xrID0gMDsKPiA+Pj4+ICAKPiA+Pj4+IC0JCWlmICghY3J0 Y19zdGF0ZS0+YmFzZS5lbmFibGUpCj4gPj4+PiAtCQkJY29udGludWU7Cj4gPj4+PiArCQlpZiAo Y3J0Y19zdGF0ZS0+ZW5hYmxlKSB7Cj4gPj4+PiArCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmludGVsX2NydGNfc3RhdGUgPQo+ID4+Pj4gKwkJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNf c3RhdGUpOwo+ID4+Pj4gIAo+ID4+Pj4gLQkJcGl4ZWxfcmF0ZSA9IGlsa19waXBlX3BpeGVsX3Jh dGUoY3J0Y19zdGF0ZSk7Cj4gPj4+PiArCQkJcGl4Y2xrID0gaWxrX3BpcGVfcGl4ZWxfcmF0ZShp bnRlbF9jcnRjX3N0YXRlKTsKPiA+Pj4gQ291bGQgeW91IGF2b2lkIHRoZSByZWluZGVudCBhbmQg cmVuYW1lcyBwbGVhc2U/Cj4gPj4+Cj4gPj4gVGhlIHBpeGNsayBoYXMgdG8gYmUgc2V0IGV2ZW4g d2hlbiBlbmFibGVkID0gZmFsc2UuIFRoaXMgd2F5IHRoZSBuYW1lcyBmb3IgaWxrX21heF9waXhl bF9yYXRlIGFuZCBpbnRlbF9tb2RlX21heF9waXhjbGsgYXJlIGlkZW50aWNhbC4KPiA+IEkgZG9u J3QgZm9sbG93Lgo+IFRoZSBvbGQgY29kZSB3YXMgYSBub29wIHdoZW4gY3J0Y19zdGF0ZS0+ZW5h YmxlID0gZmFsc2UsIG5ldyBjb2RlIG5lZWRzIHRvIHNldCBtaW5fcGl4Y2xrW3BpcGVdIHRvIDAg aW4gdGhhdCBjYXNlLgoKVGhhdCBkb2Vzbid0IGV4cGxhaW4gdGhlIHJlbmFtZSBvciByZWluZGVu dC4KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==