From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 3/4] drm/i915: Do not acquire crtc state to check clock during modeset, v3. Date: Wed, 16 Dec 2015 11:10:28 +0100 Message-ID: <56713894.9030909@linux.intel.com> References: <1448360945-5723-1-git-send-email-maarten.lankhorst@linux.intel.com> <1448360945-5723-4-git-send-email-maarten.lankhorst@linux.intel.com> <1450174960.3137.6.camel@sorvi> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id F13DB6E883 for ; Wed, 16 Dec 2015 02:10:41 -0800 (PST) In-Reply-To: <1450174960.3137.6.camel@sorvi> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: mika.kahola@intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMTUtMTItMTUgb20gMTE6MjIgc2NocmVlZiBNaWthIEthaG9sYToKPiBPbiBUdWUsIDIwMTUt MTEtMjQgYXQgMTE6MjkgKzAxMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+PiBQYXJhbGxl bCBtb2Rlc2V0cyBhcmUgc3RpbGwgbm90IGFsbG93ZWQsIGJ1dCB0aGlzIHdpbGwgYWxsb3cgdXBk YXRpbmcKPj4gYSBkaWZmZXJlbnQgY3J0YyBkdXJpbmcgYSBtb2Rlc2V0IGlmIHRoZSBjbG9jayBp cyBub3QgY2hhbmdlZC4KPj4KPj4gQWRkaXRpb25hbGx5IHdoZW4gYWxsIHBpcGVzIGFyZSBEUE1T IG9mZiB0aGUgY2RjbGsgd2lsbCBiZSBsb3dlcmVkCj4+IHRvIHRoZSBtaW5pbXVtIGFsbG93ZWQu Cj4+Cj4+IENoYW5nZXMgc2luY2UgdjE6Cj4+IC0gQWRkIGRldl9wcml2LT5hY3RpdmVfY3J0Y3Mg Zm9yIHRyYWNraW5nIHdoaWNoIGNydGNzIGFyZSBhY3RpdmUuCj4+IC0gUmVuYW1lIG1pbl9jZGNs ayB0byBtaW5fcGl4Y2xrIGFuZCBtb3ZlIHRvIGRldl9wcml2Lgo+PiAtIEFkZCBhIGFjdGl2ZV9j cnRjcyBtYXNrIHdoaWNoIGlzIHVwZGF0ZWQgYXRvbWljYWxseS4KPj4gLSBBZGQgaW50ZWxfYXRv bWljX3N0YXRlLT5tb2Rlc2V0IHdoaWNoIGlzIHNldCBvbiBtb2Rlc2V0cy4KPj4gLSBDb21taXQg bmV3IHBpeGNsay9hY3RpdmVfY3J0Y3MgcmlnaHQgYWZ0ZXIgc3RhdGUgc3dhcC4KPj4gQ2hhbmdl cyBzaW5jZSB2MjoKPj4gLSBNYWtlIHRoZSBjaGFuZ2VzIHJlbGF0ZWQgdG8gbWF4X3BpeGVsX3Jh dGUgY2FsY3VsYXRpb25zIG1vcmUgcmVhZGFibGUuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0 ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4+IC0tLQo+ PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgICA1ICsrCj4+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYyAgfCAgIDIgKy0KPj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDEzOSArKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICA3 ICstCj4+ICA0IGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMo LSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IGluZGV4IGEzMjU3MWYwZDAxOC4uYzdi NzZjMmU4ZTA5IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gQEAgLTE4MjEsOCAr MTgyMSwxMyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4+ICAJc3RydWN0IGludGVsX3Bp cGVfY3JjIHBpcGVfY3JjW0k5MTVfTUFYX1BJUEVTXTsKPj4gICNlbmRpZgo+PiAgCj4+ICsJLyog ZHBsbCBhbmQgY2RjbGsgc3RhdGUgaXMgcHJvdGVjdGVkIGJ5IGNvbm5lY3Rpb25fbXV0ZXggKi8K Pj4gIAlpbnQgbnVtX3NoYXJlZF9kcGxsOwo+PiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCBz aGFyZWRfZHBsbHNbSTkxNV9OVU1fUExMU107Cj4+ICsKPj4gKwl1bnNpZ25lZCBpbnQgYWN0aXZl X2NydGNzOwo+PiArCXVuc2lnbmVkIGludCBtaW5fcGl4Y2xrW0k5MTVfTUFYX1BJUEVTXTsKPj4g Kwo+PiAgCWludCBkcGlvX3BoeV9pb3NmX3BvcnRbSTkxNV9OVU1fUEhZU19WTFZdOwo+PiAgCj4+ ICAJc3RydWN0IGk5MTVfd29ya2Fyb3VuZHMgd29ya2Fyb3VuZHM7Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F0b21pYy5jCj4+IGluZGV4IDY0M2YzNDJkZTMzYi4uYzRlYWRiYzkyOGI3IDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+PiBAQCAtMzA2LDUgKzMwNiw1IEBA IHZvaWQgaW50ZWxfYXRvbWljX3N0YXRlX2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz KQo+PiAgewo+PiAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlID0gdG9faW50ZWxf YXRvbWljX3N0YXRlKHMpOwo+PiAgCWRybV9hdG9taWNfc3RhdGVfZGVmYXVsdF9jbGVhcigmc3Rh dGUtPmJhc2UpOwo+PiAtCXN0YXRlLT5kcGxsX3NldCA9IGZhbHNlOwo+PiArCXN0YXRlLT5kcGxs X3NldCA9IHN0YXRlLT5tb2Rlc2V0ID0gZmFsc2U7Cj4+ICB9Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPj4gaW5kZXggM2M0NjAzN2I2ZTU1Li4xNzhhMDQyZjkxN2UgMTAwNjQ0 Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gQEAgLTU5OTEsMjIgKzU5OTEs MzEgQEAgc3RhdGljIGludCBicm94dG9uX2NhbGNfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+PiAgc3RhdGljIGludCBpbnRlbF9tb2RlX21heF9waXhjbGsoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPj4gIAkJCQkgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl KQo+PiAgewo+PiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+PiAtCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+PiAtCWludCBtYXhfcGl4Y2xrID0gMDsKPj4g KwlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21p Y19zdGF0ZShzdGF0ZSk7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiBUaGlzIGlzIGEgbml0cGljayBidXQgd2Ugc2hvdWxkIHVzZSBu b3dhZGF5cyB0b19pOTE1KCkgCj4gIAo+PiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPj4gKwlz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4+ICsJdW5zaWduZWQgbWF4X3BpeGNs ayA9IDAsIGk7Cj4+ICsJZW51bSBwaXBlIHBpcGU7Cj4+ICAKPj4gLQlmb3JfZWFjaF9pbnRlbF9j cnRjKGRldiwgaW50ZWxfY3J0Yykgewo+PiAtCQljcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dl dF9jcnRjX3N0YXRlKHN0YXRlLCBpbnRlbF9jcnRjKTsKPj4gLQkJaWYgKElTX0VSUihjcnRjX3N0 YXRlKSkKPj4gLQkJCXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwo+PiArCW1lbWNweShpbnRl bF9zdGF0ZS0+bWluX3BpeGNsaywgZGV2X3ByaXYtPm1pbl9waXhjbGssCj4+ICsJICAgICAgIHNp emVvZihpbnRlbF9zdGF0ZS0+bWluX3BpeGNsaykpOwo+PiAgCj4+IC0JCWlmICghY3J0Y19zdGF0 ZS0+YmFzZS5lbmFibGUpCj4+IC0JCQljb250aW51ZTsKPj4gKwlmb3JfZWFjaF9jcnRjX2luX3N0 YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4+ICsJCWludCBwaXhjbGsgPSAwOwo+ PiArCj4+ICsJCWlmIChjcnRjX3N0YXRlLT5lbmFibGUpCj4+ICsJCQlwaXhjbGsgPSBjcnRjX3N0 YXRlLT5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4+ICAKPj4gLQkJbWF4X3BpeGNsayA9IG1h eChtYXhfcGl4Y2xrLAo+PiAtCQkJCSBjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0 Y19jbG9jayk7Cj4+ICsJCWludGVsX3N0YXRlLT5taW5fcGl4Y2xrW2ldID0gcGl4Y2xrOwo+PiAg CX0KPj4gIAo+PiArCWlmICghaW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcykKPj4gKwkJcmV0dXJu IDA7Cj4+ICsKPj4gKwlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQo+PiArCQltYXhfcGl4 Y2xrID0gbWF4KGludGVsX3N0YXRlLT5taW5fcGl4Y2xrW3BpcGVdLCBtYXhfcGl4Y2xrKTsKPj4g Kwo+PiAgCXJldHVybiBtYXhfcGl4Y2xrOwo+PiAgfQo+PiAgCj4+IEBAIC02MzEwLDYgKzYzMTks OSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRybV9j cnRjICpjcnRjKQo+PiAgCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbihkb21haW4sIGRvbWFpbnMpCj4+ ICAJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBkb21haW4pOwo+PiAgCWludGVs X2NydGMtPmVuYWJsZWRfcG93ZXJfZG9tYWlucyA9IDA7Cj4+ICsKPj4gKwlkZXZfcHJpdi0+YWN0 aXZlX2NydGNzICY9IH4oMSA8PCBpbnRlbF9jcnRjLT5waXBlKTsKPj4gKwlkZXZfcHJpdi0+bWlu X3BpeGNsa1tpbnRlbF9jcnRjLT5waXBlXSA9IDA7Cj4+ICB9Cj4+ICAKPj4gIC8qCj4+IEBAIC05 NTU1LDI5ICs5NTY3LDQxIEBAIHN0YXRpYyB2b2lkIGJyb3h0b25fbW9kZXNldF9jb21taXRfY2Rj bGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPj4gIC8qIGNvbXB1dGUgdGhl IG1heCByYXRlIGZvciBuZXcgY29uZmlndXJhdGlvbiAqLwo+PiAgc3RhdGljIGludCBpbGtfbWF4 X3BpeGVsX3JhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+PiAgewo+PiAtCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+PiArCXN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdGF0ZS0+ZGV2LT5kZXZfcHJpdmF0ZTsK Pj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpj c3RhdGU7Cj4+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4+IC0JaW50 IG1heF9waXhlbF9yYXRlID0gMDsKPj4gKwl1bnNpZ25lZCBtYXhfcGl4ZWxfcmF0ZSA9IDAsIGk7 Cj4+ICsJZW51bSBwaXBlIHBpcGU7Cj4+ICAKPj4gLQlmb3JfZWFjaF9pbnRlbF9jcnRjKHN0YXRl LT5kZXYsIGludGVsX2NydGMpIHsKPj4gLQkJaW50IHBpeGVsX3JhdGU7Cj4+ICsJbWVtY3B5KGlu dGVsX3N0YXRlLT5taW5fcGl4Y2xrLCBkZXZfcHJpdi0+bWluX3BpeGNsaywKPj4gKwkgICAgICAg c2l6ZW9mKGludGVsX3N0YXRlLT5taW5fcGl4Y2xrKSk7Cj4+ICAKPj4gLQkJY3J0Y19zdGF0ZSA9 IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7Cj4+IC0JCWlm IChJU19FUlIoY3J0Y19zdGF0ZSkpCj4+IC0JCQlyZXR1cm4gUFRSX0VSUihjcnRjX3N0YXRlKTsK Pj4gKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjc3RhdGUsIGkpIHsKPj4g KwkJaW50IHBpeGVsX3JhdGU7Cj4+ICAKPj4gLQkJaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmVuYWJs ZSkKPj4gKwkJY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3N0YXRlKTsKPj4gKwkJ aWYgKCFjcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSkgewo+PiArCQkJaW50ZWxfc3RhdGUtPm1pbl9w aXhjbGtbaV0gPSAwOwo+PiAgCQkJY29udGludWU7Cj4+ICsJCX0KPj4gIAo+PiAgCQlwaXhlbF9y YXRlID0gaWxrX3BpcGVfcGl4ZWxfcmF0ZShjcnRjX3N0YXRlKTsKPj4gIAo+PiAgCQkvKiBwaXhl bCByYXRlIG11c3RuJ3QgZXhjZWVkIDk1JSBvZiBjZGNsayB3aXRoIElQUyBvbiBCRFcgKi8KPj4g LQkJaWYgKElTX0JST0FEV0VMTChzdGF0ZS0+ZGV2KSAmJiBjcnRjX3N0YXRlLT5pcHNfZW5hYmxl ZCkKPj4gKwkJaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikgJiYgY3J0Y19zdGF0ZS0+aXBzX2Vu YWJsZWQpCj4+ICAJCQlwaXhlbF9yYXRlID0gRElWX1JPVU5EX1VQKHBpeGVsX3JhdGUgKiAxMDAs IDk1KTsKPj4gIAo+PiAtCQltYXhfcGl4ZWxfcmF0ZSA9IG1heChtYXhfcGl4ZWxfcmF0ZSwgcGl4 ZWxfcmF0ZSk7Cj4+ICsJCWludGVsX3N0YXRlLT5taW5fcGl4Y2xrW2ldID0gcGl4ZWxfcmF0ZTsK Pj4gIAl9Cj4+ICAKPj4gKwlpZiAoIWludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MpCj4+ICsJCXJl dHVybiAwOwo+PiArCj4+ICsJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKPj4gKwkJbWF4 X3BpeGVsX3JhdGUgPSBtYXgoaW50ZWxfc3RhdGUtPm1pbl9waXhjbGtbcGlwZV0sIG1heF9waXhl bF9yYXRlKTsKPj4gKwo+PiAgCXJldHVybiBtYXhfcGl4ZWxfcmF0ZTsKPj4gIH0KPj4gIAo+PiBA QCAtMTMwNjksMTUgKzEzMDkzLDI3IEBAIHN0YXRpYyBpbnQgaW50ZWxfbW9kZXNldF9hbGxfcGlw ZXMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+PiAgCj4+ICBzdGF0aWMgaW50IGlu dGVsX21vZGVzZXRfY2hlY2tzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4gIHsK Pj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKPj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiAtCWludCByZXQ7 Cj4+ICsJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9h dG9taWNfc3RhdGUoc3RhdGUpOwo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHN0YXRlLT5kZXYtPmRldl9wcml2YXRlOwo+PiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK Pj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4+ICsJaW50IHJldCA9IDAs IGk7Cj4+ICAKPj4gIAlpZiAoIWNoZWNrX2RpZ2l0YWxfcG9ydF9jb25mbGljdHMoc3RhdGUpKSB7 Cj4+ICAJCURSTV9ERUJVR19LTVMoInJlamVjdGluZyBjb25mbGljdGluZyBkaWdpdGFsIHBvcnQg Y29uZmlndXJhdGlvblxuIik7Cj4+ICAJCXJldHVybiAtRUlOVkFMOwo+PiAgCX0KPj4gIAo+PiAr CWludGVsX3N0YXRlLT5tb2Rlc2V0ID0gdHJ1ZTsKPj4gKwlpbnRlbF9zdGF0ZS0+YWN0aXZlX2Ny dGNzID0gZGV2X3ByaXYtPmFjdGl2ZV9jcnRjczsKPj4gKwo+PiArCWZvcl9lYWNoX2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPj4gKwkJaWYgKGNydGNfc3RhdGUt PmFjdGl2ZSkKPj4gKwkJCWludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MgfD0gMSA8PCBpOwo+PiAr CQllbHNlCj4+ICsJCQlpbnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNzICY9IH4oMSA8PCBpKTsKPj4g Kwl9Cj4+ICsKPj4gIAkvKgo+PiAgCSAqIFNlZSBpZiB0aGUgY29uZmlnIHJlcXVpcmVzIGFueSBh ZGRpdGlvbmFsIHByZXBhcmF0aW9uLCBlLmcuCj4+ICAJICogdG8gYWRqdXN0IGdsb2JhbCBzdGF0 ZSB3aXRoIHBpcGVzIG9mZi4gIFdlIG5lZWQgdG8gZG8gdGhpcwo+PiBAQCAtMTMxMDEsNyArMTMx MzcsNyBAQCBzdGF0aWMgaW50IGludGVsX21vZGVzZXRfY2hlY2tzKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKPj4gIAo+PiAgCWludGVsX21vZGVzZXRfY2xlYXJfcGxscyhzdGF0ZSk7 Cj4+ICAKPj4gLQlpZiAoSVNfSEFTV0VMTChkZXYpKQo+PiArCWlmIChJU19IQVNXRUxMKGRldl9w cml2KSkKPj4gIAkJcmV0dXJuIGhhc3dlbGxfbW9kZV9zZXRfcGxhbmVzX3dvcmthcm91bmQoc3Rh dGUpOwo+PiAgCj4+ICAJcmV0dXJuIDA7Cj4+IEBAIC0xMzMxOCwxMiArMTMzNTQsMTIgQEAgc3Rh dGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAJ CQkgICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+PiAgCQkJICAgICAgIGJv b2wgYXN5bmMpCj4+ICB7Cj4+ICsJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3Rh dGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+PiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ICAJc3RydWN0IGRybV9jcnRj X3N0YXRlICpjcnRjX3N0YXRlOwo+PiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPj4gLQlpbnQg cmV0ID0gMDsKPj4gLQlpbnQgaTsKPj4gLQlib29sIGFueV9tcyA9IGZhbHNlOwo+PiArCWludCBy ZXQgPSAwLCBpOwo+PiArCWJvb2wgaHdfY2hlY2sgPSBpbnRlbF9zdGF0ZS0+bW9kZXNldDsKPj4g IAo+PiAgCXJldCA9IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChkZXYsIHN0YXRlLCBhc3lu Yyk7Cj4+ICAJaWYgKHJldCkgewo+PiBAQCAtMTMzMzQsMTMgKzEzMzcwLDE4IEBAIHN0YXRpYyBp bnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCWRybV9h dG9taWNfaGVscGVyX3N3YXBfc3RhdGUoZGV2LCBzdGF0ZSk7Cj4+ICAJZGV2X3ByaXYtPndtLmNv bmZpZyA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSktPndtX2NvbmZpZzsKPj4gIAo+PiAr CWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNldCkgewo+PiArCQltZW1jcHkoZGV2X3ByaXYtPm1pbl9w aXhjbGssIGludGVsX3N0YXRlLT5taW5fcGl4Y2xrLAo+PiArCQkgICAgICAgc2l6ZW9mKGludGVs X3N0YXRlLT5taW5fcGl4Y2xrKSk7Cj4+ICsJCWRldl9wcml2LT5hY3RpdmVfY3J0Y3MgPSBpbnRl bF9zdGF0ZS0+YWN0aXZlX2NydGNzOwo+PiArCX0KPj4gKwo+PiAgCWZvcl9lYWNoX2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPj4gIAkJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+PiAgCj4+ICAJCWlmICghbmVl ZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkpCj4+ICAJCQljb250aW51ZTsKPj4gIAo+PiAtCQlhbnlf bXMgPSB0cnVlOwo+PiAgCQlpbnRlbF9wcmVfcGxhbmVfdXBkYXRlKGludGVsX2NydGMpOwo+PiAg Cj4+ICAJCWlmIChjcnRjX3N0YXRlLT5hY3RpdmUpIHsKPj4gQEAgLTEzMzU1LDcgKzEzMzk2LDcg QEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4+ICAJICogdXBkYXRlIHRoZSB0aGUgb3V0cHV0IGNvbmZpZ3VyYXRpb24uICovCj4+ICAJaW50 ZWxfbW9kZXNldF91cGRhdGVfY3J0Y19zdGF0ZShzdGF0ZSk7Cj4+ICAKPj4gLQlpZiAoYW55X21z KSB7Cj4+ICsJaWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0KSB7Cj4+ICAJCWludGVsX3NoYXJlZF9k cGxsX2NvbW1pdChzdGF0ZSk7Cj4+ICAKPj4gIAkJZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX2xl Z2FjeV9tb2Rlc2V0X3N0YXRlKHN0YXRlLT5kZXYsIHN0YXRlKTsKPj4gQEAgLTEzMzgyLDcgKzEz NDIzLDcgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4+ICAJCQlwdXRfZG9tYWlucyA9IG1vZGVzZXRfZ2V0X2NydGNfcG93ZXJfZG9tYWlu cyhjcnRjKTsKPj4gIAo+PiAgCQkJLyogbWFrZSBzdXJlIGludGVsX21vZGVzZXRfY2hlY2tfc3Rh dGUgcnVucyAqLwo+PiAtCQkJYW55X21zID0gdHJ1ZTsKPj4gKwkJCWh3X2NoZWNrID0gdHJ1ZTsK Pj4gIAkJfQo+PiAgCj4+ICAJCWlmICghbW9kZXNldCkKPj4gQEAgLTEzNDA5LDcgKzEzNDUwLDcg QEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4+ICAJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4+ICAJ bXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4+ICAKPj4gLQlpZiAoYW55X21zKQo+ PiArCWlmIChod19jaGVjaykKPj4gIAkJaW50ZWxfbW9kZXNldF9jaGVja19zdGF0ZShkZXYsIHN0 YXRlKTsKPj4gIAo+PiAgCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4+IEBAIC0xNTQx NywxNiArMTU0NTgsMzYgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0 YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yOwo+PiAgCWludCBpOwo+PiAgCj4+ICsJZGV2X3ByaXYtPmFjdGl2ZV9jcnRjcyA9 IDA7Cj4+ICsKPj4gIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+PiAtCQlfX2Ry bV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZSgmY3J0Yy0+YmFzZSwgY3J0Yy0+YmFz ZS5zdGF0ZSk7Cj4+IC0JCW1lbXNldChjcnRjLT5jb25maWcsIDAsIHNpemVvZigqY3J0Yy0+Y29u ZmlnKSk7Cj4+IC0JCWNydGMtPmNvbmZpZy0+YmFzZS5jcnRjID0gJmNydGMtPmJhc2U7Cj4+ICsJ CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gY3J0Yy0+Y29uZmlnOwo+PiAr CQlpbnQgcGl4Y2xrID0gMDsKPj4gIAo+PiAtCQljcnRjLT5hY3RpdmUgPSBkZXZfcHJpdi0+ZGlz cGxheS5nZXRfcGlwZV9jb25maWcoY3J0YywKPj4gLQkJCQkJCQkJIGNydGMtPmNvbmZpZyk7Cj4+ ICsJCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKCZjcnRjLT5iYXNlLCAm Y3J0Y19zdGF0ZS0+YmFzZSk7Cj4+ICsJCW1lbXNldChjcnRjX3N0YXRlLCAwLCBzaXplb2YoKmNy dGNfc3RhdGUpKTsKPj4gKwkJY3J0Y19zdGF0ZS0+YmFzZS5jcnRjID0gJmNydGMtPmJhc2U7Cj4+ ICAKPj4gLQkJY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlID0gY3J0Yy0+YWN0aXZlOwo+PiAtCQlj cnRjLT5iYXNlLmVuYWJsZWQgPSBjcnRjLT5hY3RpdmU7Cj4+ICsJCWNydGNfc3RhdGUtPmJhc2Uu YWN0aXZlID0gY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUgPQo+PiArCQkJZGV2X3ByaXYtPmRpc3Bs YXkuZ2V0X3BpcGVfY29uZmlnKGNydGMsIGNydGNfc3RhdGUpOwo+PiArCj4+ICsJCWNydGMtPmJh c2UuZW5hYmxlZCA9IGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlOwo+PiArCQljcnRjLT5hY3RpdmUg PSBjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZTsKPj4gKwo+PiArCQlpZiAoY3J0Y19zdGF0ZS0+YmFz ZS5hY3RpdmUpIHsKPj4gKwkJCWRldl9wcml2LT5hY3RpdmVfY3J0Y3MgfD0gMSA8PCBjcnRjLT5w aXBlOwo+PiArCj4+ICsJCQlpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+PiArCQkJCXBp eGNsayA9IGlsa19waXBlX3BpeGVsX3JhdGUoY3J0Y19zdGF0ZSk7Cj4+ICsKPj4gKwkJCQkvKiBw aXhlbCByYXRlIG11c3RuJ3QgZXhjZWVkIDk1JSBvZiBjZGNsayB3aXRoIElQUyBvbiBCRFcgKi8K Pj4gKwkJCQlpZiAoY3J0Y19zdGF0ZS0+aXBzX2VuYWJsZWQpCj4+ICsJCQkJCXBpeGNsayA9IERJ Vl9ST1VORF9VUChwaXhjbGsgKiAxMDAsIDk1KTsKPj4gKwkJCX0gZWxzZSBpZiAoSVNfQlJPWFRP TihkZXZfcHJpdikgfHwgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4+ICsJCQkJcGl4Y2xrID0g Y3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gV2hhdCBoYXBwZW5z IHdpdGggdGhlIG90aGVyIHBsYXRmb3Jtcz8KPgpXZWxsIHRoZSBvdGhlciBwbGF0Zm9ybXMgaGF2 ZSBubyBzdXBwb3J0IGZvciBjZGNsayBhZGp1c3RtZW50LCBidXQgaXQgc2VlbXMgSSB3b3VsZCBu ZWVkIHRvIGFkZCBhIElTX0NIRVJSWVZJRVcoKSBvbiB0aGF0IGlmIGJyYW5jaCwKYW5kIHBlcmhh cHMgYSBlbHNlIFdBUk5fT04oZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrKTsg YXMgd2VsbCB0byBtYWtlIHN1cmUgYW55IGZ1dHVyZSBwbGF0Zm9ybSBpcyBjb3ZlcmVkLgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=