From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 02/11] drm/i915: Do not acquire crtc state to check clock during modeset. Date: Thu, 22 Oct 2015 16:31:23 +0300 Message-ID: <20151022133123.GP26517@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id DFAC56EE99 for ; Thu, 22 Oct 2015 06:31:26 -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 dHVybiAxNDQwMDA7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIDE5MjAwOwoKVGhpcyBzdHVmZiBvdWdo dCB0byBiZSBhIHNlcGFyYXRlIHBhdGNoLgoKPiAgfQo+ICAKPiAgLyogQ29tcHV0ZSB0aGUgbWF4 IHBpeGVsIGNsb2NrIGZvciBuZXcgY29uZmlndXJhdGlvbi4gVXNlcyBhdG9taWMgc3RhdGUgaWYK PiBAQCAtNTkzOSwyMiArNTk0OCwzMSBAQCBzdGF0aWMgaW50IGludGVsX21vZGVfbWF4X3BpeGNs ayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSkKPiAgewo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4gLQlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiAtCWludCBtYXhfcGl4Y2xrID0gMDsK PiArCWludCBtYXhfcGl4ZWxfcmF0ZSA9IDA7Cj4gKwlib29sIGFueV9hY3RpdmUgPSBmYWxzZTsK PiAgCj4gLQlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgaW50ZWxfY3J0Yykgewo+IC0JCWNydGNf c3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGludGVsX2NydGMpOwo+ IC0JCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCj4gLQkJCXJldHVybiBQVFJfRVJSKGNydGNfc3Rh dGUpOwo+ICsJZm9yX2VhY2hfaW50ZWxfY3J0YyhzdGF0ZS0+ZGV2LCBpbnRlbF9jcnRjKSB7Cj4g KwkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpkcm1fY3J0Y19zdGF0ZTsKPiArCQlzdHJ1Y3QgZHJt X2NydGMgKmNydGMgPSAmaW50ZWxfY3J0Yy0+YmFzZTsKPiArCQlpbnQgcGl4Y2xrID0gMDsKPiAg Cj4gLQkJaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSkKPiAtCQkJY29udGludWU7Cj4gKwkJ ZHJtX2NydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRl LCBjcnRjKTsKCkp1c3QgYSByYW5kb20gaWRlYSBoZXJlLCBidXQgd291bGQgYmUgbmljZXIgaWYg d2Ugd3JhcCB0aGlzIGludG8Kc29tZXRoaW5nIHRoYXQgcmV0dXJucyB0aGUgaW50ZWxfY3J0Y19z dGF0ZSBpbnN0ZWFkLiBBdm9pZCBoYXZpbmcKdG8gZG8gdG9faW50ZWxfY3J0Y19zdGF0ZSgpIGlu IHRoZSBjYWxsZXIuCgpHZW5lcmFsbHkgSSB0aGluayB3ZSBzaG91bGQgb25seSBwYXNzIGFyb3Vu ZCB0aGUgaW50ZWxfZm9vX3N0YXRlIHN0dWZmLApleGNlcHQgd2hlbiBpdCBnZXRzIHBhc3NlZCB0 byBzb21lIGNvcmUvaGVscGVyIHN0dWZmLgoKPiArCQlpZiAoIWRybV9jcnRjX3N0YXRlKSB7Cj4g KwkJCWFueV9hY3RpdmUgfD0gaW50ZWxfY3J0Yy0+YWN0aXZlOwo+ICsJCQlwaXhjbGsgPSBpbnRl bF9jcnRjLT5taW5fY2RjbGs7Cj4gKwkJfSBlbHNlIGlmIChkcm1fY3J0Y19zdGF0ZS0+ZW5hYmxl KSB7Cj4gKwkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KPiArCQkJCXRv X2ludGVsX2NydGNfc3RhdGUoZHJtX2NydGNfc3RhdGUpOwo+ICsKPiArCQkJYW55X2FjdGl2ZSB8 PSBkcm1fY3J0Y19zdGF0ZS0+YWN0aXZlOwo+ICsJCQlwaXhjbGsgPSBjcnRjX3N0YXRlLT5iYXNl LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiArCQl9Cj4gIAo+IC0JCW1heF9waXhjbGsgPSBt YXgobWF4X3BpeGNsaywKPiAtCQkJCSBjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0 Y19jbG9jayk7Cj4gKwkJdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+cGlwZV9jZGNsa1tp bnRlbF9jcnRjLT5waXBlXSA9IHBpeGNsazsKPiArCQltYXhfcGl4ZWxfcmF0ZSA9IG1heChtYXhf cGl4ZWxfcmF0ZSwgcGl4Y2xrKTsKPiAgCX0KPiAgCj4gLQlyZXR1cm4gbWF4X3BpeGNsazsKPiAr CXJldHVybiBhbnlfYWN0aXZlID8gbWF4X3BpeGVsX3JhdGUgOiAwOwo+ICB9Cj4gIAo+ICBzdGF0 aWMgaW50IHZhbGxleXZpZXdfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKPiBAQCAtOTQ5MSwyOSArOTUwOSwzNSBAQCBzdGF0aWMgdm9pZCBicm94dG9u X21vZGVzZXRfY29tbWl0X2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUp Cj4gIHN0YXRpYyBpbnQgaWxrX21heF9waXhlbF9yYXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSkKPiAgewo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4gLQlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiAgCWludCBtYXhfcGl4ZWxfcmF0ZSA9 IDA7Cj4gKwlib29sIGFueV9hY3RpdmUgPSBmYWxzZTsKPiAgCj4gIAlmb3JfZWFjaF9pbnRlbF9j cnRjKHN0YXRlLT5kZXYsIGludGVsX2NydGMpIHsKPiAtCQlpbnQgcGl4ZWxfcmF0ZTsKPiAtCj4g LQkJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxf Y3J0Yyk7Cj4gLQkJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkKPiAtCQkJcmV0dXJuIFBUUl9FUlIo Y3J0Y19zdGF0ZSk7Cj4gKwkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpkcm1fY3J0Y19zdGF0ZTsK PiArCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmaW50ZWxfY3J0Yy0+YmFzZTsKPiArCQlpbnQg cGl4ZWxfcmF0ZSA9IDA7Cj4gIAo+IC0JCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUpCj4g LQkJCWNvbnRpbnVlOwo+ICsJCWRybV9jcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3Rp bmdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gKwkJaWYgKCFkcm1fY3J0Y19zdGF0ZSkgewo+ ICsJCQlhbnlfYWN0aXZlIHw9IGludGVsX2NydGMtPmFjdGl2ZTsKPiArCQkJcGl4ZWxfcmF0ZSA9 IGludGVsX2NydGMtPm1pbl9jZGNsazsKPiArCQl9IGVsc2UgaWYgKGRybV9jcnRjX3N0YXRlLT5l bmFibGUpIHsKPiArCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQo+ICsJ CQkJdG9faW50ZWxfY3J0Y19zdGF0ZShkcm1fY3J0Y19zdGF0ZSk7Cj4gIAo+IC0JCXBpeGVsX3Jh dGUgPSBpbGtfcGlwZV9waXhlbF9yYXRlKGNydGNfc3RhdGUpOwo+ICsJCQlhbnlfYWN0aXZlIHw9 IGRybV9jcnRjX3N0YXRlLT5hY3RpdmU7Cj4gKwkJCXBpeGVsX3JhdGUgPSBpbGtfcGlwZV9waXhl bF9yYXRlKGNydGNfc3RhdGUpOwo+ICAKPiAtCQkvKiBwaXhlbCByYXRlIG11c3RuJ3QgZXhjZWVk IDk1JSBvZiBjZGNsayB3aXRoIElQUyBvbiBCRFcgKi8KPiAtCQlpZiAoSVNfQlJPQURXRUxMKHN0 YXRlLT5kZXYpICYmIGNydGNfc3RhdGUtPmlwc19lbmFibGVkKQo+IC0JCQlwaXhlbF9yYXRlID0g RElWX1JPVU5EX1VQKHBpeGVsX3JhdGUgKiAxMDAsIDk1KTsKPiArCQkJLyogcGl4ZWwgcmF0ZSBt dXN0bid0IGV4Y2VlZCA5NSUgb2YgY2RjbGsgd2l0aCBJUFMgb24gQkRXICovCj4gKwkJCWlmIChJ U19CUk9BRFdFTEwoc3RhdGUtPmRldikgJiYgY3J0Y19zdGF0ZS0+aXBzX2VuYWJsZWQpCj4gKwkJ CQlwaXhlbF9yYXRlID0gRElWX1JPVU5EX1VQKHBpeGVsX3JhdGUgKiAxMDAsIDk1KTsKPiArCQl9 Cj4gIAo+ICsJCXRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSktPnBpcGVfY2RjbGtbaW50ZWxf Y3J0Yy0+cGlwZV0gPSBwaXhlbF9yYXRlOwo+ICAJCW1heF9waXhlbF9yYXRlID0gbWF4KG1heF9w aXhlbF9yYXRlLCBwaXhlbF9yYXRlKTsKPiAgCX0KPiAgCj4gLQlyZXR1cm4gbWF4X3BpeGVsX3Jh dGU7Cj4gKwlyZXR1cm4gYW55X2FjdGl2ZSA/IG1heF9waXhlbF9yYXRlIDogMDsKPiAgfQo+ICAK PiAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBpbnQgY2RjbGspCj4gQEAgLTk2MTIsMTQgKzk2MzYsMTAgQEAgc3RhdGljIGludCBicm9hZHdl bGxfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAg CWVsc2UKPiAgCQljZGNsayA9IDMzNzUwMDsKPiAgCj4gLQkvKgo+IC0JICogRklYTUUgbW92ZSB0 aGUgY2RjbGsgY2FjbHVsYXRpb24gdG8KPiAtCSAqIGNvbXB1dGVfY29uZmlnKCkgc28gd2UgY2Fu IGZhaWwgZ3JhY2VndWxseS4KPiAtCSAqLwo+ICAJaWYgKGNkY2xrID4gZGV2X3ByaXYtPm1heF9j ZGNsa19mcmVxKSB7Cj4gIAkJRFJNX0VSUk9SKCJyZXF1ZXN0ZWQgY2RjbGsgKCVkIGtIeikgZXhj ZWVkcyBtYXggKCVkIGtIeilcbiIsCj4gIAkJCSAgY2RjbGssIGRldl9wcml2LT5tYXhfY2RjbGtf ZnJlcSk7Cj4gLQkJY2RjbGsgPSBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXE7Cj4gKwkJcmV0dXJu IC1FSU5WQUw7Cj4gIAl9Cj4gIAo+ICAJdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+Y2Rj bGsgPSBjZGNsazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDUxNzIyZTY1N2I5 MS4uNTRhMmMwZGEyZWNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMjUw LDYgKzI1MCw3IEBAIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgewo+ICAJdW5zaWduZWQgaW50 IGNkY2xrOwo+ICAJYm9vbCBkcGxsX3NldDsKPiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9j b25maWcgc2hhcmVkX2RwbGxbSTkxNV9OVU1fUExMU107Cj4gKwl1bnNpZ25lZCBpbnQgcGlwZV9j ZGNsa1tJOTE1X01BWF9QSVBFU107Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgewo+IEBAIC01MzYsOCArNTM3LDE2IEBAIHN0cnVjdCBpbnRlbF9jcnRjIHsKPiAgCSAqIFdo ZXRoZXIgdGhlIGNydGMgYW5kIHRoZSBjb25uZWN0ZWQgb3V0cHV0IHBpcGVsaW5lIGlzIGFjdGl2 ZS4gSW1wbGllcwo+ICAJICogdGhhdCBjcnRjLT5lbmFibGVkIGlzIHNldCwgaS5lLiB0aGUgY3Vy cmVudCBtb2RlIGNvbmZpZ3VyYXRpb24gaGFzCj4gIAkgKiBzb21lIG91dHB1dHMgY29ubmVjdGVk IHRvIHRoaXMgY3J0Yy4KPiArCSAqCj4gKwkgKiBQcm90ZWN0ZWQgYnkgY3J0Yy5tdXRleCBhbmQg Y29ubmVjdGlvbl9tdXRleAo+ICAJICovCj4gIAlib29sIGFjdGl2ZTsKPiArCj4gKwkvKiBNaW5p bXVtIGNkY2xrIHJlcXVpcmVkIGZvciB0aGlzIHBpcGUsCj4gKwkgKiBwcm90ZWN0ZWQgYnkgY3J0 Yy5tdXRleCBhbmQgY29ubmVjdGlvbl9tdXRleC4KPiArCSAqLwo+ICsJdW5zaWduZWQgaW50IG1p bl9jZGNsazsKPiArCj4gIAl1bnNpZ25lZCBsb25nIGVuYWJsZWRfcG93ZXJfZG9tYWluczsKPiAg CWJvb2wgbG93ZnJlcV9hdmFpbDsKPiAgCXN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5Owo+ IC0tIAo+IDIuMS4wCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==