From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 02/11] drm/i915: Do not acquire crtc state to check clock during modeset. Date: Thu, 22 Oct 2015 15:42:58 +0200 Message-ID: <5628E7E2.9060501@linux.intel.com> References: <1445514996-18733-1-git-send-email-maarten.lankhorst@linux.intel.com> <1445514996-18733-3-git-send-email-maarten.lankhorst@linux.intel.com> <20151022130825.GT16848@phenom.ffwll.local> 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 A9A7D6E4C6 for ; Thu, 22 Oct 2015 06:43:30 -0700 (PDT) In-Reply-To: <20151022130825.GT16848@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMjItMTAtMTUgb20gMTU6MDggc2NocmVlZiBEYW5pZWwgVmV0dGVyOgo+IE9uIFRodSwgT2N0 IDIyLCAyMDE1IGF0IDAxOjU2OjI3UE0gKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+ PiBQYXJhbGxlbCBtb2Rlc2V0cyBhcmUgc3RpbGwgbm90IGFsbG93ZWQsIGJ1dCB0aGlzIHdpbGwg YWxsb3cgdXBkYXRpbmcKPj4gYSBkaWZmZXJlbnQgY3J0YyBkdXJpbmcgYSBtb2Rlc2V0IGlmIHRo ZSBjbG9jayBpcyBub3QgY2hhbmdlZC4KPj4KPj4gQWRkaXRpb25hbGx5IHdoZW4gYWxsIHBpcGVz IGFyZSBEUE1TIG9mZiB0aGUgY2RjbGsgd2lsbCBiZSBsb3dlcmVkCj4+IHRvIHRoZSBtaW5pbXVt IGFsbG93ZWQuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVu Lmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4+IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jIHwgOTAgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgOSArKysrCj4+ ICAyIGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQo+Pgo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IGluZGV4IDAyMmU2MjhiODUyMC4u MDUxYTFlMmIxYzU1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ IEBAIC01MjM3LDYgKzUyMzcsNyBAQCBzdGF0aWMgdm9pZCBtb2Rlc2V0X3B1dF9wb3dlcl9kb21h aW5zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gIAo+PiAgc3RhdGljIHZv aWQgbW9kZXNldF91cGRhdGVfY3J0Y19wb3dlcl9kb21haW5zKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKPj4gIHsKPj4gKwlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9z dGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4+ICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IHN0YXRlLT5kZXY7Cj4+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gIAl1bnNpZ25lZCBsb25nIHB1dF9kb21haW5zW0k5 MTVfTUFYX1BJUEVTXSA9IHt9Owo+PiBAQCAtNTI0NSwxMyArNTI0NiwyMCBAQCBzdGF0aWMgdm9p ZCBtb2Rlc2V0X3VwZGF0ZV9jcnRjX3Bvd2VyX2RvbWFpbnMoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+PiAgCWludCBpOwo+PiAgCj4+ICAJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShz dGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+PiAtCQlpZiAobmVlZHNfbW9kZXNldChjcnRj LT5zdGF0ZSkpCj4+IC0JCQlwdXRfZG9tYWluc1t0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlXSA9 Cj4+IC0JCQkJbW9kZXNldF9nZXRfY3J0Y19wb3dlcl9kb21haW5zKGNydGMpOwo+PiArCQlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9Cj4+ICsJCQl0b19pbnRlbF9jcnRjKGNydGMpOwo+ PiArCQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4+ICsKPj4gKwkJaWYgKCFu ZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKSkKPj4gKwkJCWNvbnRpbnVlOwo+PiArCj4+ICsJCWlu dGVsX2NydGMtPm1pbl9jZGNsayA9IGludGVsX3N0YXRlLT5waXBlX2NkY2xrW3BpcGVdOwo+PiAr Cj4+ICsJCXB1dF9kb21haW5zW3BpcGVdID0gbW9kZXNldF9nZXRfY3J0Y19wb3dlcl9kb21haW5z KGNydGMpOwo+PiAgCX0KPj4gIAo+PiAgCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2Nv bW1pdF9jZGNsaykgewo+PiAtCQl1bnNpZ25lZCBpbnQgY2RjbGsgPSB0b19pbnRlbF9hdG9taWNf c3RhdGUoc3RhdGUpLT5jZGNsazsKPj4gKwkJdW5zaWduZWQgaW50IGNkY2xrID0gaW50ZWxfc3Rh dGUtPmNkY2xrOwo+PiAgCj4+ICAJCWlmIChjZGNsayAhPSBkZXZfcHJpdi0+Y2RjbGtfZnJlcSAm Jgo+PiAgCQkgICAgIVdBUk5fT04oIXN0YXRlLT5hbGxvd19tb2Rlc2V0KSkKPj4gQEAgLTU5MTks NyArNTkyNyw2IEBAIHN0YXRpYyBpbnQgYnJveHRvbl9jYWxjX2NkY2xrKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPj4gIAkvKgo+PiAgCSAqIEZJWE1FOgo+PiAgCSAqIC0gcmVt b3ZlIHRoZSBndWFyZGJhbmQsIGl0J3Mgbm90IG5lZWRlZCBvbiBCWFQKPj4gLQkgKiAtIHNldCAx OS4yTUh6IGJ5cGFzcyBmcmVxdWVuY3kgaWYgdGhlcmUgYXJlIG5vIGFjdGl2ZSBwaXBlcwo+PiAg CSAqLwo+PiAgCWlmIChtYXhfcGl4Y2xrID4gNTc2MDAwKjkvMTApCj4+ICAJCXJldHVybiA2MjQw MDA7Cj4+IEBAIC01OTI5LDggKzU5MzYsMTAgQEAgc3RhdGljIGludCBicm94dG9uX2NhbGNfY2Rj bGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgCQlyZXR1cm4gMzg0MDAw Owo+PiAgCWVsc2UgaWYgKG1heF9waXhjbGsgPiAxNDQwMDAqOS8xMCkKPj4gIAkJcmV0dXJuIDI4 ODAwMDsKPj4gLQllbHNlCj4+ICsJZWxzZSBpZiAobWF4X3BpeGNsaykKPj4gIAkJcmV0dXJuIDE0 NDAwMDsKPj4gKwllbHNlCj4+ICsJCXJldHVybiAxOTIwMDsKPj4gIH0KPj4gIAo+PiAgLyogQ29t cHV0ZSB0aGUgbWF4IHBpeGVsIGNsb2NrIGZvciBuZXcgY29uZmlndXJhdGlvbi4gVXNlcyBhdG9t aWMgc3RhdGUgaWYKPj4gQEAgLTU5MzksMjIgKzU5NDgsMzEgQEAgc3RhdGljIGludCBpbnRlbF9t b2RlX21heF9waXhjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gIAkJCQkgc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+PiAgewo+PiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjOwo+PiAtCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+PiAtCWlu dCBtYXhfcGl4Y2xrID0gMDsKPj4gKwlpbnQgbWF4X3BpeGVsX3JhdGUgPSAwOwo+PiArCWJvb2wg YW55X2FjdGl2ZSA9IGZhbHNlOwo+PiAgCj4+IC0JZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGlu dGVsX2NydGMpIHsKPj4gLQkJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0 ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7Cj4+IC0JCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCj4+IC0J CQlyZXR1cm4gUFRSX0VSUihjcnRjX3N0YXRlKTsKPj4gKwlmb3JfZWFjaF9pbnRlbF9jcnRjKHN0 YXRlLT5kZXYsIGludGVsX2NydGMpIHsKPj4gKwkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpkcm1f Y3J0Y19zdGF0ZTsKPj4gKwkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gJmludGVsX2NydGMtPmJh c2U7Cj4+ICsJCWludCBwaXhjbGsgPSAwOwo+PiAgCj4+IC0JCWlmICghY3J0Y19zdGF0ZS0+YmFz ZS5lbmFibGUpCj4+IC0JCQljb250aW51ZTsKPj4gKwkJZHJtX2NydGNfc3RhdGUgPSBkcm1fYXRv bWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPj4gKwkJaWYgKCFkcm1f Y3J0Y19zdGF0ZSkgewo+PiArCQkJYW55X2FjdGl2ZSB8PSBpbnRlbF9jcnRjLT5hY3RpdmU7Cj4+ ICsJCQlwaXhjbGsgPSBpbnRlbF9jcnRjLT5taW5fY2RjbGs7Cj4+ICsJCX0gZWxzZSBpZiAoZHJt X2NydGNfc3RhdGUtPmVuYWJsZSkgewo+PiArCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUgPQo+PiArCQkJCXRvX2ludGVsX2NydGNfc3RhdGUoZHJtX2NydGNfc3RhdGUpOwo+ PiArCj4+ICsJCQlhbnlfYWN0aXZlIHw9IGRybV9jcnRjX3N0YXRlLT5hY3RpdmU7Cj4+ICsJCQlw aXhjbGsgPSBjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPj4gKwkJ fQo+PiAgCj4+IC0JCW1heF9waXhjbGsgPSBtYXgobWF4X3BpeGNsaywKPj4gLQkJCQkgY3J0Y19z dGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2spOwo+PiArCQl0b19pbnRlbF9hdG9t aWNfc3RhdGUoc3RhdGUpLT5waXBlX2NkY2xrW2ludGVsX2NydGMtPnBpcGVdID0gcGl4Y2xrOwo+ PiArCQltYXhfcGl4ZWxfcmF0ZSA9IG1heChtYXhfcGl4ZWxfcmF0ZSwgcGl4Y2xrKTsKPj4gIAl9 Cj4+ICAKPj4gLQlyZXR1cm4gbWF4X3BpeGNsazsKPj4gKwlyZXR1cm4gYW55X2FjdGl2ZSA/IG1h eF9waXhlbF9yYXRlIDogMDsKPj4gIH0KPj4gIAo+PiAgc3RhdGljIGludCB2YWxsZXl2aWV3X21v ZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4+IEBAIC05 NDkxLDI5ICs5NTA5LDM1IEBAIHN0YXRpYyB2b2lkIGJyb3h0b25fbW9kZXNldF9jb21taXRfY2Rj bGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPj4gIHN0YXRpYyBpbnQgaWxr X21heF9waXhlbF9yYXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4gIHsKPj4g IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPj4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZTsKPj4gIAlpbnQgbWF4X3BpeGVsX3JhdGUgPSAwOwo+PiArCWJvb2wg YW55X2FjdGl2ZSA9IGZhbHNlOwo+PiAgCj4+ICAJZm9yX2VhY2hfaW50ZWxfY3J0YyhzdGF0ZS0+ ZGV2LCBpbnRlbF9jcnRjKSB7Cj4+IC0JCWludCBwaXhlbF9yYXRlOwo+PiAtCj4+IC0JCWNydGNf c3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGludGVsX2NydGMpOwo+ PiAtCQlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQo+PiAtCQkJcmV0dXJuIFBUUl9FUlIoY3J0Y19z dGF0ZSk7Cj4+ICsJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqZHJtX2NydGNfc3RhdGU7Cj4+ICsJ CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZpbnRlbF9jcnRjLT5iYXNlOwo+PiArCQlpbnQgcGl4 ZWxfcmF0ZSA9IDA7Cj4+ICAKPj4gLQkJaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSkKPj4g LQkJCWNvbnRpbnVlOwo+PiArCQlkcm1fY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0 aW5nX2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+PiArCQlpZiAoIWRybV9jcnRjX3N0YXRlKSB7 Cj4+ICsJCQlhbnlfYWN0aXZlIHw9IGludGVsX2NydGMtPmFjdGl2ZTsKPj4gKwkJCXBpeGVsX3Jh dGUgPSBpbnRlbF9jcnRjLT5taW5fY2RjbGs7Cj4+ICsJCX0gZWxzZSBpZiAoZHJtX2NydGNfc3Rh dGUtPmVuYWJsZSkgewo+PiArCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUg PQo+PiArCQkJCXRvX2ludGVsX2NydGNfc3RhdGUoZHJtX2NydGNfc3RhdGUpOwo+PiAgCj4+IC0J CXBpeGVsX3JhdGUgPSBpbGtfcGlwZV9waXhlbF9yYXRlKGNydGNfc3RhdGUpOwo+PiArCQkJYW55 X2FjdGl2ZSB8PSBkcm1fY3J0Y19zdGF0ZS0+YWN0aXZlOwo+PiArCQkJcGl4ZWxfcmF0ZSA9IGls a19waXBlX3BpeGVsX3JhdGUoY3J0Y19zdGF0ZSk7Cj4+ICAKPj4gLQkJLyogcGl4ZWwgcmF0ZSBt dXN0bid0IGV4Y2VlZCA5NSUgb2YgY2RjbGsgd2l0aCBJUFMgb24gQkRXICovCj4+IC0JCWlmIChJ U19CUk9BRFdFTEwoc3RhdGUtPmRldikgJiYgY3J0Y19zdGF0ZS0+aXBzX2VuYWJsZWQpCj4+IC0J CQlwaXhlbF9yYXRlID0gRElWX1JPVU5EX1VQKHBpeGVsX3JhdGUgKiAxMDAsIDk1KTsKPj4gKwkJ CS8qIHBpeGVsIHJhdGUgbXVzdG4ndCBleGNlZWQgOTUlIG9mIGNkY2xrIHdpdGggSVBTIG9uIEJE VyAqLwo+PiArCQkJaWYgKElTX0JST0FEV0VMTChzdGF0ZS0+ZGV2KSAmJiBjcnRjX3N0YXRlLT5p cHNfZW5hYmxlZCkKPj4gKwkJCQlwaXhlbF9yYXRlID0gRElWX1JPVU5EX1VQKHBpeGVsX3JhdGUg KiAxMDAsIDk1KTsKPj4gKwkJfQo+PiAgCj4+ICsJCXRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0 ZSktPnBpcGVfY2RjbGtbaW50ZWxfY3J0Yy0+cGlwZV0gPSBwaXhlbF9yYXRlOwo+PiAgCQltYXhf cGl4ZWxfcmF0ZSA9IG1heChtYXhfcGl4ZWxfcmF0ZSwgcGl4ZWxfcmF0ZSk7Cj4+ICAJfQo+PiAg Cj4+IC0JcmV0dXJuIG1heF9waXhlbF9yYXRlOwo+PiArCXJldHVybiBhbnlfYWN0aXZlID8gbWF4 X3BpeGVsX3JhdGUgOiAwOwo+PiAgfQo+PiAgCj4+ICBzdGF0aWMgdm9pZCBicm9hZHdlbGxfc2V0 X2NkY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjZGNsaykKPj4gQEAgLTk2MTIsMTQg Kzk2MzYsMTAgQEAgc3RhdGljIGludCBicm9hZHdlbGxfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4gIAllbHNlCj4+ICAJCWNkY2xrID0gMzM3NTAw Owo+PiAgCj4+IC0JLyoKPj4gLQkgKiBGSVhNRSBtb3ZlIHRoZSBjZGNsayBjYWNsdWxhdGlvbiB0 bwo+PiAtCSAqIGNvbXB1dGVfY29uZmlnKCkgc28gd2UgY2FuIGZhaWwgZ3JhY2VndWxseS4KPj4g LQkgKi8KPj4gIAlpZiAoY2RjbGsgPiBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEpIHsKPj4gIAkJ RFJNX0VSUk9SKCJyZXF1ZXN0ZWQgY2RjbGsgKCVkIGtIeikgZXhjZWVkcyBtYXggKCVkIGtIeilc biIsCj4+ICAJCQkgIGNkY2xrLCBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEpOwo+PiAtCQljZGNs ayA9IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcTsKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICAJ fQo+PiAgCj4+ICAJdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+Y2RjbGsgPSBjZGNsazsK Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gaW5kZXggNTE3MjJlNjU3YjkxLi41NGEyYzBk YTJlY2UgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IEBAIC0yNTAsNiArMjUw LDcgQEAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSB7Cj4+ICAJdW5zaWduZWQgaW50IGNkY2xr Owo+PiAgCWJvb2wgZHBsbF9zZXQ7Cj4+ICAJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZp ZyBzaGFyZWRfZHBsbFtJOTE1X05VTV9QTExTXTsKPj4gKwl1bnNpZ25lZCBpbnQgcGlwZV9jZGNs a1tJOTE1X01BWF9QSVBFU107Cj4+ICB9Owo+PiAgCj4+ICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgewo+PiBAQCAtNTM2LDggKzUzNywxNiBAQCBzdHJ1Y3QgaW50ZWxfY3J0YyB7Cj4+ICAJICog V2hldGhlciB0aGUgY3J0YyBhbmQgdGhlIGNvbm5lY3RlZCBvdXRwdXQgcGlwZWxpbmUgaXMgYWN0 aXZlLiBJbXBsaWVzCj4+ICAJICogdGhhdCBjcnRjLT5lbmFibGVkIGlzIHNldCwgaS5lLiB0aGUg Y3VycmVudCBtb2RlIGNvbmZpZ3VyYXRpb24gaGFzCj4+ICAJICogc29tZSBvdXRwdXRzIGNvbm5l Y3RlZCB0byB0aGlzIGNydGMuCj4+ICsJICoKPj4gKwkgKiBQcm90ZWN0ZWQgYnkgY3J0Yy5tdXRl eCBhbmQgY29ubmVjdGlvbl9tdXRleAo+IFRoaXMgbmVlZHMgdG8gYmUgY2xhcmlmaWVkIHRvIG1l YW46IHJlYWQtcHJvdGVjdGVkIGJ5IGNvbm5lY3Rpb25fbXV0ZXgsCj4gd3JpdGVycyBhZGRpdGlv bmFsbHkgbXVzdCBob2xkIGNydGMtPm11dGV4LiBTYW1lIGJlbG93Lgo+Cj4gVGhpbmtpbmcgYWJv dXQgdGhpcyBhIGJpdCBtb3JlIHRoZSB1c3VhbCBkZXNpZ24gd2UgZG8gaXMgcHV0IHRoZSBzdGF0 ZQo+IGNvcGllcyBub3QgaW50byB0aGUgcGFyZW50IG9iamVjdCB3aXRoIGZ1bmt5IHJ1bGVzLCBi dXQgaW5zdGVhZCBpbnRvIHRoZQo+IHN0YXRlIG9mIHRoZSBoaWdoZXItbGV2ZWwgb2JqZWN0cy4g U28gZm9yIGV4YW1wbGUgdGhlIHJlYWQtb25seQo+IHBsYW5lX2FjdGl2ZSBzdGF0ZSBpcyBpbiBj cnRjX3N0YXRlLT5wbGFuZV9tYXNrLgo+Cj4gU2ltaWxhcmx5IGluIHRoaXMgY2FzZSBoZXJlIEkg dGhpbmsgaXQgd291bGQgYmUgY2xlYW5lciBkZXNpZ24gdG8gaGF2ZSBhCj4gbWluX2NkY2xrIGFy cmF5IGluIGludGVsX3N0YXRlLCBzZXR0aW5nIGl0IHRvIDAgaWYgdGhlIHBpcGUgaXMgdG90YWxs eQo+IG9mZi4gVGhhdCB3YXkgbG9ja2luZyBydWxlcyBhcmUgMTAwJSBjbGVhcjogSWYgeW91IG5l ZWQgdG8gY2hhbmdlIGl0LCB5b3UKPiBuZWVkIHRvIGNvcHkgdGhlIGdsb2JhbCBzdGF0ZSBhbmQg YWNxdWlyZSBjb25uZWN0aW9uX211dGV4LiBUaGF0Cj4gYXV0b21hdGljYWxseSBnaXZlcyB5b3Ug cmVhZC1hY2Nlc3MgdG8gYWxsIGNydGMncyBtaW5fY2RjbGsuClNvcnJ5IHRoaXMgaXMgdGhlIG9u bHkgY2FzZSB3aGVyZSBhIGRlcGVuZGVuY3kgb24gaW50ZWxfY3J0Yy0+YWN0aXZlIGlzIHZhbGlk LgpmYmMgYW5kIHdhdGVybWFyayB1c2VycyBzaG91bGQgc3RvcCBsb29raW5nIGF0IGl0LiAoaW50 ZWxfY3J0Y19hY3RpdmUpCgoyIGNydGMncywgIzEgcmVxdWlyZXMgY2xvY2sgYXQgMTAwLCAjMiBy ZXF1aXJlcyBjbG9jayBhdCAyMDAuCllvdSBkbyBhIERQTVMgbW9kZSBvZmYgb24gIzIsIGFuZCBp ZiB5b3UgZG9uJ3QgdHJhY2sgY3J0Y19jbG9jayB5b3Ugd291bGQgc2V0IHRoZSBkaXNwbGF5IGNs b2NrIHRvIDEwMCBhbmQgZm9yY2UgYSBtb2Rlc2V0IG9uICMxIHRvby4KSWYgeW91IGltbWVkaWF0 ZWx5IGRvIGRwbXMgb2ZmIG9uICMxIGFmdGVyd2FyZHMgaXQgbWVhbnMgdGhhdCB0aGUgdXNlciB3 b3VsZCBzZWUgIzEgYmVpbmcgZGlzYWJsZWQsIHJlLWVuYWJsZWQgYW5kIGRpc2FibGVkIGFnYWlu Li4KCj4gVGhhdCB3YXkgd2UgZG9uJ3QgcGxheSB0cmlja3Mgd2l0aCBnZXRfZXhpc3Rpbmdfc3Rh dGUsIGRvbid0IGFkZCBtb3JlCj4gZGVwZW5jaWVzIG9uIHRoZSBsZWdhY3ktZW5jdW1iZXJlZCBp bnRlbF9jcnRjLT5hY3RpdmUgYW5kIGl0J3MganVzdAo+IGdlbmVyYWxseSBtb3JlIGF3ZXNvbWUu ClRoZSB0cmlja3MgYXJlIG5lZWRlZCB0byBhbGxvdyBhIG1vZGVzZXQgdG8gcnVuIHBhcmFsbGVs IHRvIGFueSBwYWdlIGZsaXBzLgpUaG91Z2ggcGVyaGFwcyBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8g YWRkIGEgc3RydWN0IHRvIGRldl9wcml2IHRoYXQgY29udGFpbnMKbWluIGNkY2xrIGFuZCBhIGZs YWcgdG8gc2VlIGlmIHRoZSBjcnRjIGlzIGFjdGl2ZSBvciBub3QuCgp+TWFhcnRlbgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=