From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 02/11] drm/i915: Do not acquire crtc state to check clock during modeset. Date: Thu, 22 Oct 2015 15:08:25 +0200 Message-ID: <20151022130825.GT16848@phenom.ffwll.local> References: <1445514996-18733-1-git-send-email-maarten.lankhorst@linux.intel.com> <1445514996-18733-3-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f182.google.com (mail-wi0-f182.google.com [209.85.212.182]) by gabe.freedesktop.org (Postfix) with ESMTPS id 561C26EFB3 for ; Thu, 22 Oct 2015 06:08:29 -0700 (PDT) Received: by wicll6 with SMTP id ll6so118276819wic.1 for ; Thu, 22 Oct 2015 06:08:27 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1445514996-18733-3-git-send-email-maarten.lankhorst@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 T24gVGh1LCBPY3QgMjIsIDIwMTUgYXQgMDE6NTY6MjdQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gUGFyYWxsZWwgbW9kZXNldHMgYXJlIHN0aWxsIG5vdCBhbGxvd2VkLCBidXQg dGhpcyB3aWxsIGFsbG93IHVwZGF0aW5nCj4gYSBkaWZmZXJlbnQgY3J0YyBkdXJpbmcgYSBtb2Rl c2V0IGlmIHRoZSBjbG9jayBpcyBub3QgY2hhbmdlZC4KPiAKPiBBZGRpdGlvbmFsbHkgd2hlbiBh bGwgcGlwZXMgYXJlIERQTVMgb2ZmIHRoZSBjZGNsayB3aWxsIGJlIGxvd2VyZWQKPiB0byB0aGUg bWluaW11bSBhbGxvd2VkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxt YWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDkwICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgOSArKysr Cj4gIDIgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDAyMmU2MjhiODUyMC4u MDUxYTFlMmIxYzU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBA IC01MjM3LDYgKzUyMzcsNyBAQCBzdGF0aWMgdm9pZCBtb2Rlc2V0X3B1dF9wb3dlcl9kb21haW5z KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIHN0YXRpYyB2b2lkIG1v ZGVzZXRfdXBkYXRlX2NydGNfcG93ZXJfZG9tYWlucyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpCj4gIHsKPiArCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0g dG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBzdGF0ZS0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiAgCXVuc2lnbmVkIGxvbmcgcHV0X2RvbWFpbnNbSTkxNV9NQVhfUElQ RVNdID0ge307Cj4gQEAgLTUyNDUsMTMgKzUyNDYsMjAgQEAgc3RhdGljIHZvaWQgbW9kZXNldF91 cGRhdGVfY3J0Y19wb3dlcl9kb21haW5zKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK PiAgCWludCBpOwo+ICAKPiAgCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNy dGNfc3RhdGUsIGkpIHsKPiAtCQlpZiAobmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkpCj4gLQkJ CXB1dF9kb21haW5zW3RvX2ludGVsX2NydGMoY3J0YyktPnBpcGVdID0KPiAtCQkJCW1vZGVzZXRf Z2V0X2NydGNfcG93ZXJfZG9tYWlucyhjcnRjKTsKPiArCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9Cj4gKwkJCXRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwkJZW51bSBwaXBlIHBpcGUg PSBpbnRlbF9jcnRjLT5waXBlOwo+ICsKPiArCQlpZiAoIW5lZWRzX21vZGVzZXQoY3J0Yy0+c3Rh dGUpKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaW50ZWxfY3J0Yy0+bWluX2NkY2xrID0gaW50 ZWxfc3RhdGUtPnBpcGVfY2RjbGtbcGlwZV07Cj4gKwo+ICsJCXB1dF9kb21haW5zW3BpcGVdID0g bW9kZXNldF9nZXRfY3J0Y19wb3dlcl9kb21haW5zKGNydGMpOwo+ICAJfQo+ICAKPiAgCWlmIChk ZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NvbW1pdF9jZGNsaykgewo+IC0JCXVuc2lnbmVkIGlu dCBjZGNsayA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSktPmNkY2xrOwo+ICsJCXVuc2ln bmVkIGludCBjZGNsayA9IGludGVsX3N0YXRlLT5jZGNsazsKPiAgCj4gIAkJaWYgKGNkY2xrICE9 IGRldl9wcml2LT5jZGNsa19mcmVxICYmCj4gIAkJICAgICFXQVJOX09OKCFzdGF0ZS0+YWxsb3df bW9kZXNldCkpCj4gQEAgLTU5MTksNyArNTkyNyw2IEBAIHN0YXRpYyBpbnQgYnJveHRvbl9jYWxj X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCS8qCj4gIAkgKiBG SVhNRToKPiAgCSAqIC0gcmVtb3ZlIHRoZSBndWFyZGJhbmQsIGl0J3Mgbm90IG5lZWRlZCBvbiBC WFQKPiAtCSAqIC0gc2V0IDE5LjJNSHogYnlwYXNzIGZyZXF1ZW5jeSBpZiB0aGVyZSBhcmUgbm8g YWN0aXZlIHBpcGVzCj4gIAkgKi8KPiAgCWlmIChtYXhfcGl4Y2xrID4gNTc2MDAwKjkvMTApCj4g IAkJcmV0dXJuIDYyNDAwMDsKPiBAQCAtNTkyOSw4ICs1OTM2LDEwIEBAIHN0YXRpYyBpbnQgYnJv eHRvbl9jYWxjX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQly ZXR1cm4gMzg0MDAwOwo+ICAJZWxzZSBpZiAobWF4X3BpeGNsayA+IDE0NDAwMCo5LzEwKQo+ICAJ CXJldHVybiAyODgwMDA7Cj4gLQllbHNlCj4gKwllbHNlIGlmIChtYXhfcGl4Y2xrKQo+ICAJCXJl dHVybiAxNDQwMDA7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIDE5MjAwOwo+ICB9Cj4gIAo+ICAvKiBD b21wdXRlIHRoZSBtYXggcGl4ZWwgY2xvY2sgZm9yIG5ldyBjb25maWd1cmF0aW9uLiBVc2VzIGF0 b21pYyBzdGF0ZSBpZgo+IEBAIC01OTM5LDIyICs1OTQ4LDMxIEBAIHN0YXRpYyBpbnQgaW50ZWxf bW9kZV9tYXhfcGl4Y2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkgc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YzsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+IC0JaW50IG1h eF9waXhjbGsgPSAwOwo+ICsJaW50IG1heF9waXhlbF9yYXRlID0gMDsKPiArCWJvb2wgYW55X2Fj dGl2ZSA9IGZhbHNlOwo+ICAKPiAtCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRj KSB7Cj4gLQkJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwg aW50ZWxfY3J0Yyk7Cj4gLQkJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkKPiAtCQkJcmV0dXJuIFBU Ul9FUlIoY3J0Y19zdGF0ZSk7Cj4gKwlmb3JfZWFjaF9pbnRlbF9jcnRjKHN0YXRlLT5kZXYsIGlu dGVsX2NydGMpIHsKPiArCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmRybV9jcnRjX3N0YXRlOwo+ ICsJCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZpbnRlbF9jcnRjLT5iYXNlOwo+ICsJCWludCBw aXhjbGsgPSAwOwo+ICAKPiAtCQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQo+IC0JCQlj b250aW51ZTsKPiArCQlkcm1fY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2Ny dGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+ICsJCWlmICghZHJtX2NydGNfc3RhdGUpIHsKPiArCQkJ YW55X2FjdGl2ZSB8PSBpbnRlbF9jcnRjLT5hY3RpdmU7Cj4gKwkJCXBpeGNsayA9IGludGVsX2Ny dGMtPm1pbl9jZGNsazsKPiArCQl9IGVsc2UgaWYgKGRybV9jcnRjX3N0YXRlLT5lbmFibGUpIHsK PiArCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQo+ICsJCQkJdG9faW50 ZWxfY3J0Y19zdGF0ZShkcm1fY3J0Y19zdGF0ZSk7Cj4gKwo+ICsJCQlhbnlfYWN0aXZlIHw9IGRy bV9jcnRjX3N0YXRlLT5hY3RpdmU7Cj4gKwkJCXBpeGNsayA9IGNydGNfc3RhdGUtPmJhc2UuYWRq dXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+ICsJCX0KPiAgCj4gLQkJbWF4X3BpeGNsayA9IG1heCht YXhfcGl4Y2xrLAo+IC0JCQkJIGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Ns b2NrKTsKPiArCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLT5waXBlX2NkY2xrW2ludGVs X2NydGMtPnBpcGVdID0gcGl4Y2xrOwo+ICsJCW1heF9waXhlbF9yYXRlID0gbWF4KG1heF9waXhl bF9yYXRlLCBwaXhjbGspOwo+ICAJfQo+ICAKPiAtCXJldHVybiBtYXhfcGl4Y2xrOwo+ICsJcmV0 dXJuIGFueV9hY3RpdmUgPyBtYXhfcGl4ZWxfcmF0ZSA6IDA7Cj4gIH0KPiAgCj4gIHN0YXRpYyBp bnQgdmFsbGV5dmlld19tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQo+IEBAIC05NDkxLDI5ICs5NTA5LDM1IEBAIHN0YXRpYyB2b2lkIGJyb3h0b25fbW9k ZXNldF9jb21taXRfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiAg c3RhdGljIGludCBpbGtfbWF4X3BpeGVsX3JhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiAtCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICAJaW50IG1heF9waXhlbF9yYXRlID0gMDsK PiArCWJvb2wgYW55X2FjdGl2ZSA9IGZhbHNlOwo+ICAKPiAgCWZvcl9lYWNoX2ludGVsX2NydGMo c3RhdGUtPmRldiwgaW50ZWxfY3J0Yykgewo+IC0JCWludCBwaXhlbF9yYXRlOwo+IC0KPiAtCQlj cnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBpbnRlbF9jcnRj KTsKPiAtCQlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQo+IC0JCQlyZXR1cm4gUFRSX0VSUihjcnRj X3N0YXRlKTsKPiArCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmRybV9jcnRjX3N0YXRlOwo+ICsJ CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZpbnRlbF9jcnRjLT5iYXNlOwo+ICsJCWludCBwaXhl bF9yYXRlID0gMDsKPiAgCj4gLQkJaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSkKPiAtCQkJ Y29udGludWU7Cj4gKwkJZHJtX2NydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19j cnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiArCQlpZiAoIWRybV9jcnRjX3N0YXRlKSB7Cj4gKwkJ CWFueV9hY3RpdmUgfD0gaW50ZWxfY3J0Yy0+YWN0aXZlOwo+ICsJCQlwaXhlbF9yYXRlID0gaW50 ZWxfY3J0Yy0+bWluX2NkY2xrOwo+ICsJCX0gZWxzZSBpZiAoZHJtX2NydGNfc3RhdGUtPmVuYWJs ZSkgewo+ICsJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9Cj4gKwkJCQl0 b19pbnRlbF9jcnRjX3N0YXRlKGRybV9jcnRjX3N0YXRlKTsKPiAgCj4gLQkJcGl4ZWxfcmF0ZSA9 IGlsa19waXBlX3BpeGVsX3JhdGUoY3J0Y19zdGF0ZSk7Cj4gKwkJCWFueV9hY3RpdmUgfD0gZHJt X2NydGNfc3RhdGUtPmFjdGl2ZTsKPiArCQkJcGl4ZWxfcmF0ZSA9IGlsa19waXBlX3BpeGVsX3Jh dGUoY3J0Y19zdGF0ZSk7Cj4gIAo+IC0JCS8qIHBpeGVsIHJhdGUgbXVzdG4ndCBleGNlZWQgOTUl IG9mIGNkY2xrIHdpdGggSVBTIG9uIEJEVyAqLwo+IC0JCWlmIChJU19CUk9BRFdFTEwoc3RhdGUt PmRldikgJiYgY3J0Y19zdGF0ZS0+aXBzX2VuYWJsZWQpCj4gLQkJCXBpeGVsX3JhdGUgPSBESVZf Uk9VTkRfVVAocGl4ZWxfcmF0ZSAqIDEwMCwgOTUpOwo+ICsJCQkvKiBwaXhlbCByYXRlIG11c3Ru J3QgZXhjZWVkIDk1JSBvZiBjZGNsayB3aXRoIElQUyBvbiBCRFcgKi8KPiArCQkJaWYgKElTX0JS T0FEV0VMTChzdGF0ZS0+ZGV2KSAmJiBjcnRjX3N0YXRlLT5pcHNfZW5hYmxlZCkKPiArCQkJCXBp eGVsX3JhdGUgPSBESVZfUk9VTkRfVVAocGl4ZWxfcmF0ZSAqIDEwMCwgOTUpOwo+ICsJCX0KPiAg Cj4gKwkJdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+cGlwZV9jZGNsa1tpbnRlbF9jcnRj LT5waXBlXSA9IHBpeGVsX3JhdGU7Cj4gIAkJbWF4X3BpeGVsX3JhdGUgPSBtYXgobWF4X3BpeGVs X3JhdGUsIHBpeGVsX3JhdGUpOwo+ICAJfQo+ICAKPiAtCXJldHVybiBtYXhfcGl4ZWxfcmF0ZTsK PiArCXJldHVybiBhbnlfYWN0aXZlID8gbWF4X3BpeGVsX3JhdGUgOiAwOwo+ICB9Cj4gIAo+ICBz dGF0aWMgdm9pZCBicm9hZHdlbGxfc2V0X2NkY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGlu dCBjZGNsaykKPiBAQCAtOTYxMiwxNCArOTYzNiwxMCBAQCBzdGF0aWMgaW50IGJyb2Fkd2VsbF9t b2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJZWxz ZQo+ICAJCWNkY2xrID0gMzM3NTAwOwo+ICAKPiAtCS8qCj4gLQkgKiBGSVhNRSBtb3ZlIHRoZSBj ZGNsayBjYWNsdWxhdGlvbiB0bwo+IC0JICogY29tcHV0ZV9jb25maWcoKSBzbyB3ZSBjYW4gZmFp bCBncmFjZWd1bGx5Lgo+IC0JICovCj4gIAlpZiAoY2RjbGsgPiBkZXZfcHJpdi0+bWF4X2NkY2xr X2ZyZXEpIHsKPiAgCQlEUk1fRVJST1IoInJlcXVlc3RlZCBjZGNsayAoJWQga0h6KSBleGNlZWRz IG1heCAoJWQga0h6KVxuIiwKPiAgCQkJICBjZGNsaywgZGV2X3ByaXYtPm1heF9jZGNsa19mcmVx KTsKPiAtCQljZGNsayA9IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcTsKPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiAgCX0KPiAgCj4gIAl0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLT5jZGNsayA9 IGNkY2xrOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggNTE3MjJlNjU3YjkxLi41 NGEyYzBkYTJlY2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0yNTAsNiAr MjUwLDcgQEAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSB7Cj4gIAl1bnNpZ25lZCBpbnQgY2Rj bGs7Cj4gIAlib29sIGRwbGxfc2V0Owo+ICAJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZp ZyBzaGFyZWRfZHBsbFtJOTE1X05VTV9QTExTXTsKPiArCXVuc2lnbmVkIGludCBwaXBlX2NkY2xr W0k5MTVfTUFYX1BJUEVTXTsKPiAgfTsKPiAgCj4gIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7 Cj4gQEAgLTUzNiw4ICs1MzcsMTYgQEAgc3RydWN0IGludGVsX2NydGMgewo+ICAJICogV2hldGhl ciB0aGUgY3J0YyBhbmQgdGhlIGNvbm5lY3RlZCBvdXRwdXQgcGlwZWxpbmUgaXMgYWN0aXZlLiBJ bXBsaWVzCj4gIAkgKiB0aGF0IGNydGMtPmVuYWJsZWQgaXMgc2V0LCBpLmUuIHRoZSBjdXJyZW50 IG1vZGUgY29uZmlndXJhdGlvbiBoYXMKPiAgCSAqIHNvbWUgb3V0cHV0cyBjb25uZWN0ZWQgdG8g dGhpcyBjcnRjLgo+ICsJICoKPiArCSAqIFByb3RlY3RlZCBieSBjcnRjLm11dGV4IGFuZCBjb25u ZWN0aW9uX211dGV4CgpUaGlzIG5lZWRzIHRvIGJlIGNsYXJpZmllZCB0byBtZWFuOiByZWFkLXBy b3RlY3RlZCBieSBjb25uZWN0aW9uX211dGV4LAp3cml0ZXJzIGFkZGl0aW9uYWxseSBtdXN0IGhv bGQgY3J0Yy0+bXV0ZXguIFNhbWUgYmVsb3cuCgpUaGlua2luZyBhYm91dCB0aGlzIGEgYml0IG1v cmUgdGhlIHVzdWFsIGRlc2lnbiB3ZSBkbyBpcyBwdXQgdGhlIHN0YXRlCmNvcGllcyBub3QgaW50 byB0aGUgcGFyZW50IG9iamVjdCB3aXRoIGZ1bmt5IHJ1bGVzLCBidXQgaW5zdGVhZCBpbnRvIHRo ZQpzdGF0ZSBvZiB0aGUgaGlnaGVyLWxldmVsIG9iamVjdHMuIFNvIGZvciBleGFtcGxlIHRoZSBy ZWFkLW9ubHkKcGxhbmVfYWN0aXZlIHN0YXRlIGlzIGluIGNydGNfc3RhdGUtPnBsYW5lX21hc2su CgpTaW1pbGFybHkgaW4gdGhpcyBjYXNlIGhlcmUgSSB0aGluayBpdCB3b3VsZCBiZSBjbGVhbmVy IGRlc2lnbiB0byBoYXZlIGEKbWluX2NkY2xrIGFycmF5IGluIGludGVsX3N0YXRlLCBzZXR0aW5n IGl0IHRvIDAgaWYgdGhlIHBpcGUgaXMgdG90YWxseQpvZmYuIFRoYXQgd2F5IGxvY2tpbmcgcnVs ZXMgYXJlIDEwMCUgY2xlYXI6IElmIHlvdSBuZWVkIHRvIGNoYW5nZSBpdCwgeW91Cm5lZWQgdG8g Y29weSB0aGUgZ2xvYmFsIHN0YXRlIGFuZCBhY3F1aXJlIGNvbm5lY3Rpb25fbXV0ZXguIFRoYXQK YXV0b21hdGljYWxseSBnaXZlcyB5b3UgcmVhZC1hY2Nlc3MgdG8gYWxsIGNydGMncyBtaW5fY2Rj bGsuCgpUaGF0IHdheSB3ZSBkb24ndCBwbGF5IHRyaWNrcyB3aXRoIGdldF9leGlzdGluZ19zdGF0 ZSwgZG9uJ3QgYWRkIG1vcmUKZGVwZW5jaWVzIG9uIHRoZSBsZWdhY3ktZW5jdW1iZXJlZCBpbnRl bF9jcnRjLT5hY3RpdmUgYW5kIGl0J3MganVzdApnZW5lcmFsbHkgbW9yZSBhd2Vzb21lLgoKVGhv dWdodHM/Ci1EYW5pZWwKCj4gIAkgKi8KPiAgCWJvb2wgYWN0aXZlOwo+ICsKPiArCS8qIE1pbmlt dW0gY2RjbGsgcmVxdWlyZWQgZm9yIHRoaXMgcGlwZSwKPiArCSAqIHByb3RlY3RlZCBieSBjcnRj Lm11dGV4IGFuZCBjb25uZWN0aW9uX211dGV4Lgo+ICsJICovCj4gKwl1bnNpZ25lZCBpbnQgbWlu X2NkY2xrOwo+ICsKPiAgCXVuc2lnbmVkIGxvbmcgZW5hYmxlZF9wb3dlcl9kb21haW5zOwo+ICAJ Ym9vbCBsb3dmcmVxX2F2YWlsOwo+ICAJc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXk7Cj4g LS0gCj4gMi4xLjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENv cnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==