From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: Re: [PATCH v4 5/5] drm/i915: remove intel_crtc_cursor_set_obj() Date: Tue, 28 Oct 2014 12:02:33 +0000 Message-ID: <20141028120233.GC9012@joana> References: <1414158695-31605-1-git-send-email-gustavo@padovan.org> <1414158695-31605-5-git-send-email-gustavo@padovan.org> <20141024151611.GH4284@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20141024151611.GH4284@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SGkgVmlsbGUsCgoyMDE0LTEwLTI0IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51 eC5pbnRlbC5jb20+OgoKPiBPbiBGcmksIE9jdCAyNCwgMjAxNCBhdCAwMjo1MTozNVBNICswMTAw LCBHdXN0YXZvIFBhZG92YW4gd3JvdGU6Cj4gPiBGcm9tOiBHdXN0YXZvIFBhZG92YW4gPGd1c3Rh dm8ucGFkb3ZhbkBjb2xsYWJvcmEuY28udWs+Cj4gPiAKPiA+IE1lcmdlIGl0IGludG8gdGhlIHBs YW5lIHVwZGF0ZV9wbGFuZSgpIGNhbGxiYWNrIGFuZCBtYWtlIG90aGVyCj4gPiB1c2VycyB1c2Ug dGhlIHVwZGF0ZV9wbGFuZSgpIGZ1bmN0aW9ucyBpbnN0ZWFkLgo+ID4gCj4gPiBUaGUgZmIgIT0g Y3J0Yy0+Y3Vyc29yLT5mYiB3YXMgYWxyZWFkeSBpbnNpZGUgaW50ZWxfY3J0Y19jdXJzb3Jfc2V0 X29iaigpCj4gPiBzbyB3ZSBmb2xkIGludGVsX2NydGNfY3Vyc29yX3NldF9vYmooKSBpbnNpZGUg aW50ZWxfY29tbWl0X2N1cnNvcl9wbGFuZSgpCj4gPiBhbmQgbWVyZ2UgYm90aCBwYXRocyBpbnRv IG9uZS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBh ZG92YW5AY29sbGFib3JhLmNvLnVrPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIHwgMjE1ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t Cj4gPiAgMSBmaWxlIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25zKCspLCAxMTUgZGVsZXRpb25zKC0p Cj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IGluZGV4IDlhOTEz ZjUuLjYwZWMxNjUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ ID4gQEAgLTg0NTMsMTA5ICs4NDUzLDYgQEAgc3RhdGljIGJvb2wgY3Vyc29yX3NpemVfb2soc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJcmV0dXJuIHRydWU7Cj4gPiAgfQo+ID4gIAo+ID4g LXN0YXRpYyBpbnQgaW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29iaihzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4gPiAtCQkJCSAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiA+IC0J CQkJICAgICB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQo+ID4gLXsKPiA+IC0Jc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+IC0Jc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gLQllbnVtIHBpcGUgcGlw ZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gPiAtCXVuc2lnbmVkIG9sZF93aWR0aDsKPiA+IC0JdWlu dDMyX3QgYWRkcjsKPiA+IC0JaW50IHJldDsKPiA+IC0KPiA+IC0JLyogaWYgd2Ugd2FudCB0byB0 dXJuIG9mZiB0aGUgY3Vyc29yIGlnbm9yZSB3aWR0aCBhbmQgaGVpZ2h0ICovCj4gPiAtCWlmICgh b2JqKSB7Cj4gPiAtCQlEUk1fREVCVUdfS01TKCJjdXJzb3Igb2ZmXG4iKTsKPiA+IC0JCWFkZHIg PSAwOwo+ID4gLQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4gLQkJZ290byBm aW5pc2g7Cj4gPiAtCX0KPiA+IC0KPiA+IC0JLyogd2Ugb25seSBuZWVkIHRvIHBpbiBpbnNpZGUg R1RUIGlmIGN1cnNvciBpcyBub24tcGh5ICovCj4gPiAtCW11dGV4X2xvY2soJmRldi0+c3RydWN0 X211dGV4KTsKPiA+IC0JaWYgKCFJTlRFTF9JTkZPKGRldiktPmN1cnNvcl9uZWVkc19waHlzaWNh bCkgewo+ID4gLQkJdW5zaWduZWQgYWxpZ25tZW50Owo+ID4gLQo+ID4gLQkJLyoKPiA+IC0JCSAq IEdsb2JhbCBndHQgcHRlIHJlZ2lzdGVycyBhcmUgc3BlY2lhbCByZWdpc3RlcnMgd2hpY2ggYWN0 dWFsbHkKPiA+IC0JCSAqIGZvcndhcmQgd3JpdGVzIHRvIGEgY2h1bmsgb2Ygc3lzdGVtIG1lbW9y eS4gV2hpY2ggbWVhbnMgdGhhdAo+ID4gLQkJICogdGhlcmUgaXMgbm8gcmlzayB0aGF0IHRoZSBy ZWdpc3RlciB2YWx1ZXMgZGlzYXBwZWFyIGFzIHNvb24KPiA+IC0JCSAqIGFzIHdlIGNhbGwgaW50 ZWxfcnVudGltZV9wbV9wdXQoKSwgc28gaXQgaXMgY29ycmVjdCB0byB3cmFwCj4gPiAtCQkgKiBv bmx5IHRoZSBwaW4vdW5waW4vZmVuY2UgYW5kIG5vdCBtb3JlLgo+ID4gLQkJICovCj4gPiAtCQlp bnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gPiAtCj4gPiAtCQkvKiBOb3RlIHRoYXQg dGhlIHcvYSBhbHNvIHJlcXVpcmVzIDIgUFRFIG9mIHBhZGRpbmcgZm9sbG93aW5nCj4gPiAtCQkg KiB0aGUgYm8uIFdlIGN1cnJlbnRseSBmaWxsIGFsbCB1bnVzZWQgUFRFIHdpdGggdGhlIHNoYWRv dwo+ID4gLQkJICogcGFnZSBhbmQgc28gd2Ugc2hvdWxkIGFsd2F5cyBoYXZlIHZhbGlkIFBURSBm b2xsb3dpbmcgdGhlCj4gPiAtCQkgKiBjdXJzb3IgcHJldmVudGluZyB0aGUgVlQtZCB3YXJuaW5n Lgo+ID4gLQkJICovCj4gPiAtCQlhbGlnbm1lbnQgPSAwOwo+ID4gLQkJaWYgKG5lZWRfdnRkX3dh KGRldikpCj4gPiAtCQkJYWxpZ25tZW50ID0gNjQqMTAyNDsKPiA+IC0KPiA+IC0JCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9waW5fdG9fZGlzcGxheV9wbGFuZShvYmosIGFsaWdubWVudCwgTlVMTCk7 Cj4gPiAtCQlpZiAocmV0KSB7Cj4gPiAtCQkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIG1vdmUg Y3Vyc29yIGJvIGludG8gdGhlIEdUVFxuIik7Cj4gPiAtCQkJaW50ZWxfcnVudGltZV9wbV9wdXQo ZGV2X3ByaXYpOwo+ID4gLQkJCWdvdG8gZmFpbF9sb2NrZWQ7Cj4gPiAtCQl9Cj4gPiAtCj4gPiAt CQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcHV0X2ZlbmNlKG9iaik7Cj4gPiAtCQlpZiAocmV0KSB7 Cj4gPiAtCQkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIHJlbGVhc2UgZmVuY2UgZm9yIGN1cnNv ciIpOwo+ID4gLQkJCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiA+IC0JCQlnb3Rv IGZhaWxfdW5waW47Cj4gPiAtCQl9Cj4gPiAtCj4gPiAtCQlhZGRyID0gaTkxNV9nZW1fb2JqX2dn dHRfb2Zmc2V0KG9iaik7Cj4gPiAtCj4gPiAtCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJp dik7Cj4gPiAtCX0gZWxzZSB7Cj4gPiAtCQlpbnQgYWxpZ24gPSBJU19JODMwKGRldikgPyAxNiAq IDEwMjQgOiAyNTY7Cj4gPiAtCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfYXR0YWNoX3BoeXMob2Jq LCBhbGlnbik7Cj4gPiAtCQlpZiAocmV0KSB7Cj4gPiAtCQkJRFJNX0RFQlVHX0tNUygiZmFpbGVk IHRvIGF0dGFjaCBwaHlzIG9iamVjdFxuIik7Cj4gPiAtCQkJZ290byBmYWlsX2xvY2tlZDsKPiA+ IC0JCX0KPiA+IC0JCWFkZHIgPSBvYmotPnBoeXNfaGFuZGxlLT5idXNhZGRyOwo+ID4gLQl9Cj4g PiAtCj4gPiAtIGZpbmlzaDoKPiA+IC0JaWYgKGludGVsX2NydGMtPmN1cnNvcl9ibykgewo+ID4g LQkJaWYgKCFJTlRFTF9JTkZPKGRldiktPmN1cnNvcl9uZWVkc19waHlzaWNhbCkKPiA+IC0JCQlp OTE1X2dlbV9vYmplY3RfdW5waW5fZnJvbV9kaXNwbGF5X3BsYW5lKGludGVsX2NydGMtPmN1cnNv cl9ibyk7Cj4gPiAtCX0KPiA+IC0KPiA+IC0JaTkxNV9nZW1fdHJhY2tfZmIoaW50ZWxfY3J0Yy0+ Y3Vyc29yX2JvLCBvYmosCj4gPiAtCQkJICBJTlRFTF9GUk9OVEJVRkZFUl9DVVJTT1IocGlwZSkp Owo+ID4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiA+IC0KPiA+IC0Jb2xk X3dpZHRoID0gaW50ZWxfY3J0Yy0+Y3Vyc29yX3dpZHRoOwo+ID4gLQo+ID4gLQlpbnRlbF9jcnRj LT5jdXJzb3JfYWRkciA9IGFkZHI7Cj4gPiAtCWludGVsX2NydGMtPmN1cnNvcl9ibyA9IG9iajsK PiA+IC0JaW50ZWxfY3J0Yy0+Y3Vyc29yX3dpZHRoID0gd2lkdGg7Cj4gPiAtCWludGVsX2NydGMt PmN1cnNvcl9oZWlnaHQgPSBoZWlnaHQ7Cj4gPiAtCj4gPiAtCWlmIChpbnRlbF9jcnRjLT5hY3Rp dmUpIHsKPiA+IC0JCWlmIChvbGRfd2lkdGggIT0gd2lkdGgpCj4gPiAtCQkJaW50ZWxfdXBkYXRl X3dhdGVybWFya3MoY3J0Yyk7Cj4gPiAtCQlpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3IoY3J0Yywg aW50ZWxfY3J0Yy0+Y3Vyc29yX2JvICE9IE5VTEwpOwo+ID4gLQo+ID4gLQkJaW50ZWxfZnJvbnRi dWZmZXJfZmxpcChkZXYsIElOVEVMX0ZST05UQlVGRkVSX0NVUlNPUihwaXBlKSk7Cj4gPiAtCX0K PiA+IC0KPiA+IC0JcmV0dXJuIDA7Cj4gPiAtZmFpbF91bnBpbjoKPiA+IC0JaTkxNV9nZW1fb2Jq ZWN0X3VucGluX2Zyb21fZGlzcGxheV9wbGFuZShvYmopOwo+ID4gLWZhaWxfbG9ja2VkOgo+ID4g LQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiA+IC0JcmV0dXJuIHJldDsKPiA+ IC19Cj4gPiAtCj4gPiAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19nYW1tYV9zZXQoc3RydWN0IGRy bV9jcnRjICpjcnRjLCB1MTYgKnJlZCwgdTE2ICpncmVlbiwKPiA+ICAJCQkJIHUxNiAqYmx1ZSwg dWludDMyX3Qgc3RhcnQsIHVpbnQzMl90IHNpemUpCj4gPiAgewo+ID4gQEAgLTExOTA2LDcgKzEx ODAzLDggQEAgaW50ZWxfY3Vyc29yX3BsYW5lX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUpCj4gPiAgCj4gPiAgCUJVR19PTighcGxhbmUtPmNydGMpOwo+ID4gIAo+ID4gLQlyZXR1cm4g aW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29iaihwbGFuZS0+Y3J0YywgTlVMTCwgMCwgMCk7Cj4gPiAr CXJldHVybiBwbGFuZS0+ZnVuY3MtPnVwZGF0ZV9wbGFuZShwbGFuZSwgcGxhbmUtPmNydGMsIE5V TEwsCj4gPiArCQkJCQkgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApOwo+ID4gIH0KPiA+ICAKPiA+ ICBzdGF0aWMgaW50Cj4gPiBAQCAtMTE5NzAsMjYgKzExODY4LDExMyBAQCBpbnRlbF9jb21taXRf Y3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gIAkJCSAgc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YyA9IHN0YXRlLT5jcnRjOwo+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2 Owo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+ID4gIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5mYjsKPiA+ICAJ c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4g LQlzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0gdG9faW50ZWxfZnJhbWVidWZm ZXIoZmIpOwo+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmIt Pm9iajsKPiA+IC0JaW50IGNydGNfdywgY3J0Y19oOwo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKPiA+ICsJZW51bSBwaXBlIHBpcGUgPSBp bnRlbF9jcnRjLT5waXBlOwo+ID4gKwl1bnNpZ25lZCBvbGRfd2lkdGg7Cj4gPiArCXVpbnQzMl90 IGFkZHI7Cj4gPiArCWludCByZXQ7Cj4gPiAgCj4gPiAgCWNydGMtPmN1cnNvcl94ID0gc3RhdGUt Pm9yaWdfZHN0LngxOwo+ID4gIAljcnRjLT5jdXJzb3JfeSA9IHN0YXRlLT5vcmlnX2RzdC55MTsK PiA+IC0JaWYgKGZiICE9IGNydGMtPmN1cnNvci0+ZmIpIHsKPiA+IC0JCWNydGNfdyA9IGRybV9y ZWN0X3dpZHRoKCZzdGF0ZS0+b3JpZ19kc3QpOwo+ID4gLQkJY3J0Y19oID0gZHJtX3JlY3RfaGVp Z2h0KCZzdGF0ZS0+b3JpZ19kc3QpOwo+ID4gLQkJcmV0dXJuIGludGVsX2NydGNfY3Vyc29yX3Nl dF9vYmooY3J0Yywgb2JqLCBjcnRjX3csIGNydGNfaCk7Cj4gPiArCj4gPiArCWlmIChpbnRlbF9j cnRjLT5jdXJzb3JfYm8gPT0gb2JqKQo+ID4gKwkJZ290byB1cGRhdGU7Cj4gPiArCj4gPiArCS8q IGlmIHdlIHdhbnQgdG8gdHVybiBvZmYgdGhlIGN1cnNvciBpZ25vcmUgd2lkdGggYW5kIGhlaWdo dCAqLwo+ID4gKwlpZiAoIW9iaikgewo+ID4gKwkJRFJNX0RFQlVHX0tNUygiY3Vyc29yIG9mZlxu Iik7Cj4gPiArCQlhZGRyID0gMDsKPiA+ICsJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4 KTsKPiA+ICsJCWdvdG8gZmluaXNoOwo+ID4gKwl9Cj4gPiArCj4gPiArCS8qIHdlIG9ubHkgbmVl ZCB0byBwaW4gaW5zaWRlIEdUVCBpZiBjdXJzb3IgaXMgbm9uLXBoeSAqLwo+ID4gKwltdXRleF9s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiArCWlmICghSU5URUxfSU5GTyhkZXYpLT5jdXJz b3JfbmVlZHNfcGh5c2ljYWwpIHsKPiA+ICsJCXVuc2lnbmVkIGFsaWdubWVudDsKPiA+ICsKPiA+ ICsJCS8qCj4gPiArCQkgKiBHbG9iYWwgZ3R0IHB0ZSByZWdpc3RlcnMgYXJlIHNwZWNpYWwgcmVn aXN0ZXJzIHdoaWNoIGFjdHVhbGx5Cj4gPiArCQkgKiBmb3J3YXJkIHdyaXRlcyB0byBhIGNodW5r IG9mIHN5c3RlbSBtZW1vcnkuIFdoaWNoIG1lYW5zIHRoYXQKPiA+ICsJCSAqIHRoZXJlIGlzIG5v IHJpc2sgdGhhdCB0aGUgcmVnaXN0ZXIgdmFsdWVzIGRpc2FwcGVhciBhcyBzb29uCj4gPiArCQkg KiBhcyB3ZSBjYWxsIGludGVsX3J1bnRpbWVfcG1fcHV0KCksIHNvIGl0IGlzIGNvcnJlY3QgdG8g d3JhcAo+ID4gKwkJICogb25seSB0aGUgcGluL3VucGluL2ZlbmNlIGFuZCBub3QgbW9yZS4KPiA+ ICsJCSAqLwo+ID4gKwkJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ID4gKwo+ID4g KwkJLyogTm90ZSB0aGF0IHRoZSB3L2EgYWxzbyByZXF1aXJlcyAyIFBURSBvZiBwYWRkaW5nIGZv bGxvd2luZwo+ID4gKwkJICogdGhlIGJvLiBXZSBjdXJyZW50bHkgZmlsbCBhbGwgdW51c2VkIFBU RSB3aXRoIHRoZSBzaGFkb3cKPiA+ICsJCSAqIHBhZ2UgYW5kIHNvIHdlIHNob3VsZCBhbHdheXMg aGF2ZSB2YWxpZCBQVEUgZm9sbG93aW5nIHRoZQo+ID4gKwkJICogY3Vyc29yIHByZXZlbnRpbmcg dGhlIFZULWQgd2FybmluZy4KPiA+ICsJCSAqLwo+ID4gKwkJYWxpZ25tZW50ID0gMDsKPiA+ICsJ CWlmIChuZWVkX3Z0ZF93YShkZXYpKQo+ID4gKwkJCWFsaWdubWVudCA9IDY0KjEwMjQ7Cj4gPiAr Cj4gPiArCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcGluX3RvX2Rpc3BsYXlfcGxhbmUob2JqLCBh bGlnbm1lbnQsIE5VTEwpOwo+ID4gKwkJaWYgKHJldCkgewo+ID4gKwkJCURSTV9ERUJVR19LTVMo ImZhaWxlZCB0byBtb3ZlIGN1cnNvciBibyBpbnRvIHRoZSBHVFRcbiIpOwo+ID4gKwkJCWludGVs X3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiA+ICsJCQlnb3RvIGZhaWxfbG9ja2VkOwo+ID4g KwkJfQo+ID4gKwo+ID4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9mZW5jZShvYmopOwo+ ID4gKwkJaWYgKHJldCkgewo+ID4gKwkJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byByZWxlYXNl IGZlbmNlIGZvciBjdXJzb3IiKTsKPiA+ICsJCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJp dik7Cj4gPiArCQkJZ290byBmYWlsX3VucGluOwo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJYWRkciA9 IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopOwo+ID4gKwo+ID4gKwkJaW50ZWxfcnVudGlt ZV9wbV9wdXQoZGV2X3ByaXYpOwo+ID4gIAl9IGVsc2Ugewo+ID4gLQkJaW50ZWxfY3J0Y191cGRh dGVfY3Vyc29yKGNydGMsIHN0YXRlLT52aXNpYmxlKTsKPiA+ICsJCWludCBhbGlnbiA9IElTX0k4 MzAoZGV2KSA/IDE2ICogMTAyNCA6IDI1NjsKPiA+ICsJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9h dHRhY2hfcGh5cyhvYmosIGFsaWduKTsKPiA+ICsJCWlmIChyZXQpIHsKPiA+ICsJCQlEUk1fREVC VUdfS01TKCJmYWlsZWQgdG8gYXR0YWNoIHBoeXMgb2JqZWN0XG4iKTsKPiA+ICsJCQlnb3RvIGZh aWxfbG9ja2VkOwo+ID4gKwkJfQo+ID4gKwkJYWRkciA9IG9iai0+cGh5c19oYW5kbGUtPmJ1c2Fk ZHI7Cj4gPiArCX0KPiA+ICAKPiA+IC0JCWludGVsX2Zyb250YnVmZmVyX2ZsaXAoY3J0Yy0+ZGV2 LAo+ID4gLQkJCQkgICAgICAgSU5URUxfRlJPTlRCVUZGRVJfQ1VSU09SKGludGVsX2NydGMtPnBp cGUpKTsKPiA+ICtmaW5pc2g6Cj4gPiArCWlmIChpbnRlbF9jcnRjLT5jdXJzb3JfYm8pIHsKPiA+ ICsJCWlmICghSU5URUxfSU5GTyhkZXYpLT5jdXJzb3JfbmVlZHNfcGh5c2ljYWwpCj4gPiArCQkJ aTkxNV9nZW1fb2JqZWN0X3VucGluX2Zyb21fZGlzcGxheV9wbGFuZShpbnRlbF9jcnRjLT5jdXJz b3JfYm8pOwo+ID4gKwl9Cj4gPiAgCj4gPiAtCQlyZXR1cm4gMDsKPiA+ICsJaTkxNV9nZW1fdHJh Y2tfZmIoaW50ZWxfY3J0Yy0+Y3Vyc29yX2JvLCBvYmosCj4gPiArCQkJICBJTlRFTF9GUk9OVEJV RkZFUl9DVVJTT1IocGlwZSkpOwo+ID4gKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4 KTsKPiA+ICsKPiA+ICsJaW50ZWxfY3J0Yy0+Y3Vyc29yX2FkZHIgPSBhZGRyOwo+ID4gKwlpbnRl bF9jcnRjLT5jdXJzb3JfYm8gPSBvYmo7Cj4gPiArdXBkYXRlOgo+ID4gKwlvbGRfd2lkdGggPSBp bnRlbF9jcnRjLT5jdXJzb3Jfd2lkdGg7Cj4gPiArCj4gPiArCWludGVsX2NydGMtPmN1cnNvcl93 aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+b3JpZ19kc3QpOwo+ID4gKwlpbnRlbF9jcnRj LT5jdXJzb3JfaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+b3JpZ19kc3QpOwo+ID4g Kwo+ID4gKwlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKSB7Cj4gPiArCQlpZiAob2xkX3dpZHRoICE9 IGludGVsX2NydGMtPmN1cnNvcl93aWR0aCkKPiA+ICsJCQlpbnRlbF91cGRhdGVfd2F0ZXJtYXJr cyhjcnRjKTsKPiA+ICsJCWludGVsX2NydGNfdXBkYXRlX2N1cnNvcihjcnRjLCBzdGF0ZS0+dmlz aWJsZSk7Cj4gCj4gU28gd2UgbmVlZCB0byBtYWtlIHN1cmUgc3RhdGUtPnZpc2libGU9PWZhbHNl IHdoZW4gdGhlcmUncyBubyBmYi4gSQo+IHN1cHBvc2Ugd2Ugc2hvdWxkIGp1c3QgZG8gdGhhdCBp biBkcm1fcGxhbmVfaGVscGVyX2NoZWNrX3VwZGF0ZSgpLgoKVGhlIGNvZGUgdG8gY2hlY2sgdGhh dCBpcyBtZXJnZWQgYWxyZWFkeSwgZG8geW91IGhhdmUgYW55IG90aGVyIGNvbW1lbnQgb24KdGhp cyBwYXRjaD8KCglHdXN0YXZvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==