From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [Intel-gfx] [PATCH v4 5/5] drm/i915: remove intel_crtc_cursor_set_obj() Date: Tue, 28 Oct 2014 14:35:26 +0200 Message-ID: <20141028123526.GW4284@intel.com> References: <1414158695-31605-1-git-send-email-gustavo@padovan.org> <1414158695-31605-5-git-send-email-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1414158695-31605-5-git-send-email-gustavo@padovan.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Gustavo Padovan Cc: intel-gfx@lists.freedesktop.org, Gustavo Padovan , dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBPY3QgMjQsIDIwMTQgYXQgMDI6NTE6MzVQTSArMDEwMCwgR3VzdGF2byBQYWRvdmFu IHdyb3RlOgo+IEZyb206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9y YS5jby51az4KPiAKPiBNZXJnZSBpdCBpbnRvIHRoZSBwbGFuZSB1cGRhdGVfcGxhbmUoKSBjYWxs YmFjayBhbmQgbWFrZSBvdGhlcgo+IHVzZXJzIHVzZSB0aGUgdXBkYXRlX3BsYW5lKCkgZnVuY3Rp b25zIGluc3RlYWQuCj4gCj4gVGhlIGZiICE9IGNydGMtPmN1cnNvci0+ZmIgd2FzIGFscmVhZHkg aW5zaWRlIGludGVsX2NydGNfY3Vyc29yX3NldF9vYmooKQo+IHNvIHdlIGZvbGQgaW50ZWxfY3J0 Y19jdXJzb3Jfc2V0X29iaigpIGluc2lkZSBpbnRlbF9jb21taXRfY3Vyc29yX3BsYW5lKCkKPiBh bmQgbWVyZ2UgYm90aCBwYXRocyBpbnRvIG9uZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBHdXN0YXZv IFBhZG92YW4gPGd1c3Rhdm8ucGFkb3ZhbkBjb2xsYWJvcmEuY28udWs+Cj4gLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDIxNSArKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDEx NSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5k ZXggOWE5MTNmNS4uNjBlYzE2NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiBAQCAtODQ1MywxMDkgKzg0NTMsNiBAQCBzdGF0aWMgYm9vbCBjdXJzb3Jfc2l6ZV9vayhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4gLXN0YXRp YyBpbnQgaW50ZWxfY3J0Y19jdXJzb3Jfc2V0X29iaihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g LQkJCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkgICAgIHVp bnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCj4gLXsKPiAtCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBjcnRjLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNydGMpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBl Owo+IC0JdW5zaWduZWQgb2xkX3dpZHRoOwo+IC0JdWludDMyX3QgYWRkcjsKPiAtCWludCByZXQ7 Cj4gLQo+IC0JLyogaWYgd2Ugd2FudCB0byB0dXJuIG9mZiB0aGUgY3Vyc29yIGlnbm9yZSB3aWR0 aCBhbmQgaGVpZ2h0ICovCj4gLQlpZiAoIW9iaikgewo+IC0JCURSTV9ERUJVR19LTVMoImN1cnNv ciBvZmZcbiIpOwo+IC0JCWFkZHIgPSAwOwo+IC0JCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211 dGV4KTsKPiAtCQlnb3RvIGZpbmlzaDsKPiAtCX0KPiAtCj4gLQkvKiB3ZSBvbmx5IG5lZWQgdG8g cGluIGluc2lkZSBHVFQgaWYgY3Vyc29yIGlzIG5vbi1waHkgKi8KPiAtCW11dGV4X2xvY2soJmRl di0+c3RydWN0X211dGV4KTsKPiAtCWlmICghSU5URUxfSU5GTyhkZXYpLT5jdXJzb3JfbmVlZHNf cGh5c2ljYWwpIHsKPiAtCQl1bnNpZ25lZCBhbGlnbm1lbnQ7Cj4gLQo+IC0JCS8qCj4gLQkJICog R2xvYmFsIGd0dCBwdGUgcmVnaXN0ZXJzIGFyZSBzcGVjaWFsIHJlZ2lzdGVycyB3aGljaCBhY3R1 YWxseQo+IC0JCSAqIGZvcndhcmQgd3JpdGVzIHRvIGEgY2h1bmsgb2Ygc3lzdGVtIG1lbW9yeS4g V2hpY2ggbWVhbnMgdGhhdAo+IC0JCSAqIHRoZXJlIGlzIG5vIHJpc2sgdGhhdCB0aGUgcmVnaXN0 ZXIgdmFsdWVzIGRpc2FwcGVhciBhcyBzb29uCj4gLQkJICogYXMgd2UgY2FsbCBpbnRlbF9ydW50 aW1lX3BtX3B1dCgpLCBzbyBpdCBpcyBjb3JyZWN0IHRvIHdyYXAKPiAtCQkgKiBvbmx5IHRoZSBw aW4vdW5waW4vZmVuY2UgYW5kIG5vdCBtb3JlLgo+IC0JCSAqLwo+IC0JCWludGVsX3J1bnRpbWVf cG1fZ2V0KGRldl9wcml2KTsKPiAtCj4gLQkJLyogTm90ZSB0aGF0IHRoZSB3L2EgYWxzbyByZXF1 aXJlcyAyIFBURSBvZiBwYWRkaW5nIGZvbGxvd2luZwo+IC0JCSAqIHRoZSBiby4gV2UgY3VycmVu dGx5IGZpbGwgYWxsIHVudXNlZCBQVEUgd2l0aCB0aGUgc2hhZG93Cj4gLQkJICogcGFnZSBhbmQg c28gd2Ugc2hvdWxkIGFsd2F5cyBoYXZlIHZhbGlkIFBURSBmb2xsb3dpbmcgdGhlCj4gLQkJICog Y3Vyc29yIHByZXZlbnRpbmcgdGhlIFZULWQgd2FybmluZy4KPiAtCQkgKi8KPiAtCQlhbGlnbm1l bnQgPSAwOwo+IC0JCWlmIChuZWVkX3Z0ZF93YShkZXYpKQo+IC0JCQlhbGlnbm1lbnQgPSA2NCox MDI0Owo+IC0KPiAtCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcGluX3RvX2Rpc3BsYXlfcGxhbmUo b2JqLCBhbGlnbm1lbnQsIE5VTEwpOwo+IC0JCWlmIChyZXQpIHsKPiAtCQkJRFJNX0RFQlVHX0tN UygiZmFpbGVkIHRvIG1vdmUgY3Vyc29yIGJvIGludG8gdGhlIEdUVFxuIik7Cj4gLQkJCWludGVs X3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAtCQkJZ290byBmYWlsX2xvY2tlZDsKPiAtCQl9 Cj4gLQo+IC0JCXJldCA9IGk5MTVfZ2VtX29iamVjdF9wdXRfZmVuY2Uob2JqKTsKPiAtCQlpZiAo cmV0KSB7Cj4gLQkJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byByZWxlYXNlIGZlbmNlIGZvciBj dXJzb3IiKTsKPiAtCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+IC0JCQlnb3Rv IGZhaWxfdW5waW47Cj4gLQkJfQo+IC0KPiAtCQlhZGRyID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zm c2V0KG9iaik7Cj4gLQo+IC0JCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAtCX0g ZWxzZSB7Cj4gLQkJaW50IGFsaWduID0gSVNfSTgzMChkZXYpID8gMTYgKiAxMDI0IDogMjU2Owo+ IC0JCXJldCA9IGk5MTVfZ2VtX29iamVjdF9hdHRhY2hfcGh5cyhvYmosIGFsaWduKTsKPiAtCQlp ZiAocmV0KSB7Cj4gLQkJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBhdHRhY2ggcGh5cyBvYmpl Y3RcbiIpOwo+IC0JCQlnb3RvIGZhaWxfbG9ja2VkOwo+IC0JCX0KPiAtCQlhZGRyID0gb2JqLT5w aHlzX2hhbmRsZS0+YnVzYWRkcjsKPiAtCX0KPiAtCj4gLSBmaW5pc2g6Cj4gLQlpZiAoaW50ZWxf Y3J0Yy0+Y3Vyc29yX2JvKSB7Cj4gLQkJaWYgKCFJTlRFTF9JTkZPKGRldiktPmN1cnNvcl9uZWVk c19waHlzaWNhbCkKPiAtCQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX2Zyb21fZGlzcGxheV9wbGFu ZShpbnRlbF9jcnRjLT5jdXJzb3JfYm8pOwo+IC0JfQo+IC0KPiAtCWk5MTVfZ2VtX3RyYWNrX2Zi KGludGVsX2NydGMtPmN1cnNvcl9ibywgb2JqLAo+IC0JCQkgIElOVEVMX0ZST05UQlVGRkVSX0NV UlNPUihwaXBlKSk7Cj4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCj4g LQlvbGRfd2lkdGggPSBpbnRlbF9jcnRjLT5jdXJzb3Jfd2lkdGg7Cj4gLQo+IC0JaW50ZWxfY3J0 Yy0+Y3Vyc29yX2FkZHIgPSBhZGRyOwo+IC0JaW50ZWxfY3J0Yy0+Y3Vyc29yX2JvID0gb2JqOwo+ IC0JaW50ZWxfY3J0Yy0+Y3Vyc29yX3dpZHRoID0gd2lkdGg7Cj4gLQlpbnRlbF9jcnRjLT5jdXJz b3JfaGVpZ2h0ID0gaGVpZ2h0Owo+IC0KPiAtCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpIHsKPiAt CQlpZiAob2xkX3dpZHRoICE9IHdpZHRoKQo+IC0JCQlpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyhj cnRjKTsKPiAtCQlpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3IoY3J0YywgaW50ZWxfY3J0Yy0+Y3Vy c29yX2JvICE9IE5VTEwpOwo+IC0KPiAtCQlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlwKGRldiwgSU5U RUxfRlJPTlRCVUZGRVJfQ1VSU09SKHBpcGUpKTsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gMDsKPiAt ZmFpbF91bnBpbjoKPiAtCWk5MTVfZ2VtX29iamVjdF91bnBpbl9mcm9tX2Rpc3BsYXlfcGxhbmUo b2JqKTsKPiAtZmFpbF9sb2NrZWQ6Cj4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4 KTsKPiAtCXJldHVybiByZXQ7Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZ2Ft bWFfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgdTE2ICpyZWQsIHUxNiAqZ3JlZW4sCj4gIAkJ CQkgdTE2ICpibHVlLCB1aW50MzJfdCBzdGFydCwgdWludDMyX3Qgc2l6ZSkKPiAgewo+IEBAIC0x MTkwNiw3ICsxMTgwMyw4IEBAIGludGVsX2N1cnNvcl9wbGFuZV9kaXNhYmxlKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lKQo+ICAKPiAgCUJVR19PTighcGxhbmUtPmNydGMpOwo+ICAKPiAtCXJldHVy biBpbnRlbF9jcnRjX2N1cnNvcl9zZXRfb2JqKHBsYW5lLT5jcnRjLCBOVUxMLCAwLCAwKTsKPiAr CXJldHVybiBwbGFuZS0+ZnVuY3MtPnVwZGF0ZV9wbGFuZShwbGFuZSwgcGxhbmUtPmNydGMsIE5V TEwsCj4gKwkJCQkJICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKPiAgfQo+ICAKPiAgc3RhdGlj IGludAo+IEBAIC0xMTk3MCwyNiArMTE4NjgsMTEzIEBAIGludGVsX2NvbW1pdF9jdXJzb3JfcGxh bmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJCSAgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpzdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3RhdGUtPmNydGM7 Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmZiOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0Jc3RydWN0IGludGVsX2ZyYW1lYnVmZmVy ICppbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKTsKPiAtCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYi0+b2JqOwo+IC0JaW50IGNydGNfdywgY3J0Y19o Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7 Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gKwl1bnNpZ25lZCBvbGRf d2lkdGg7Cj4gKwl1aW50MzJfdCBhZGRyOwo+ICsJaW50IHJldDsKPiAgCj4gIAljcnRjLT5jdXJz b3JfeCA9IHN0YXRlLT5vcmlnX2RzdC54MTsKPiAgCWNydGMtPmN1cnNvcl95ID0gc3RhdGUtPm9y aWdfZHN0LnkxOwo+IC0JaWYgKGZiICE9IGNydGMtPmN1cnNvci0+ZmIpIHsKPiAtCQljcnRjX3cg PSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KTsKPiAtCQljcnRjX2ggPSBkcm1fcmVj dF9oZWlnaHQoJnN0YXRlLT5vcmlnX2RzdCk7Cj4gLQkJcmV0dXJuIGludGVsX2NydGNfY3Vyc29y X3NldF9vYmooY3J0Yywgb2JqLCBjcnRjX3csIGNydGNfaCk7Cj4gKwo+ICsJaWYgKGludGVsX2Ny dGMtPmN1cnNvcl9ibyA9PSBvYmopCj4gKwkJZ290byB1cGRhdGU7Cj4gKwo+ICsJLyogaWYgd2Ug d2FudCB0byB0dXJuIG9mZiB0aGUgY3Vyc29yIGlnbm9yZSB3aWR0aCBhbmQgaGVpZ2h0ICovCj4g KwlpZiAoIW9iaikgewo+ICsJCURSTV9ERUJVR19LTVMoImN1cnNvciBvZmZcbiIpOwo+ICsJCWFk ZHIgPSAwOwo+ICsJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCQlnb3RvIGZp bmlzaDsKPiArCX0KPiArCj4gKwkvKiB3ZSBvbmx5IG5lZWQgdG8gcGluIGluc2lkZSBHVFQgaWYg Y3Vyc29yIGlzIG5vbi1waHkgKi8KPiArCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsK PiArCWlmICghSU5URUxfSU5GTyhkZXYpLT5jdXJzb3JfbmVlZHNfcGh5c2ljYWwpIHsKPiArCQl1 bnNpZ25lZCBhbGlnbm1lbnQ7Cj4gKwo+ICsJCS8qCj4gKwkJICogR2xvYmFsIGd0dCBwdGUgcmVn aXN0ZXJzIGFyZSBzcGVjaWFsIHJlZ2lzdGVycyB3aGljaCBhY3R1YWxseQo+ICsJCSAqIGZvcndh cmQgd3JpdGVzIHRvIGEgY2h1bmsgb2Ygc3lzdGVtIG1lbW9yeS4gV2hpY2ggbWVhbnMgdGhhdAo+ ICsJCSAqIHRoZXJlIGlzIG5vIHJpc2sgdGhhdCB0aGUgcmVnaXN0ZXIgdmFsdWVzIGRpc2FwcGVh ciBhcyBzb29uCj4gKwkJICogYXMgd2UgY2FsbCBpbnRlbF9ydW50aW1lX3BtX3B1dCgpLCBzbyBp dCBpcyBjb3JyZWN0IHRvIHdyYXAKPiArCQkgKiBvbmx5IHRoZSBwaW4vdW5waW4vZmVuY2UgYW5k IG5vdCBtb3JlLgo+ICsJCSAqLwo+ICsJCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsK PiArCj4gKwkJLyogTm90ZSB0aGF0IHRoZSB3L2EgYWxzbyByZXF1aXJlcyAyIFBURSBvZiBwYWRk aW5nIGZvbGxvd2luZwo+ICsJCSAqIHRoZSBiby4gV2UgY3VycmVudGx5IGZpbGwgYWxsIHVudXNl ZCBQVEUgd2l0aCB0aGUgc2hhZG93Cj4gKwkJICogcGFnZSBhbmQgc28gd2Ugc2hvdWxkIGFsd2F5 cyBoYXZlIHZhbGlkIFBURSBmb2xsb3dpbmcgdGhlCj4gKwkJICogY3Vyc29yIHByZXZlbnRpbmcg dGhlIFZULWQgd2FybmluZy4KPiArCQkgKi8KPiArCQlhbGlnbm1lbnQgPSAwOwo+ICsJCWlmIChu ZWVkX3Z0ZF93YShkZXYpKQo+ICsJCQlhbGlnbm1lbnQgPSA2NCoxMDI0Owo+ICsKPiArCQlyZXQg PSBpOTE1X2dlbV9vYmplY3RfcGluX3RvX2Rpc3BsYXlfcGxhbmUob2JqLCBhbGlnbm1lbnQsIE5V TEwpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIG1vdmUg Y3Vyc29yIGJvIGludG8gdGhlIEdUVFxuIik7Cj4gKwkJCWludGVsX3J1bnRpbWVfcG1fcHV0KGRl dl9wcml2KTsKPiArCQkJZ290byBmYWlsX2xvY2tlZDsKPiArCQl9Cj4gKwo+ICsJCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9wdXRfZmVuY2Uob2JqKTsKPiArCQlpZiAocmV0KSB7Cj4gKwkJCURSTV9E RUJVR19LTVMoImZhaWxlZCB0byByZWxlYXNlIGZlbmNlIGZvciBjdXJzb3IiKTsKPiArCQkJaW50 ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJCQlnb3RvIGZhaWxfdW5waW47Cj4gKwkJ fQo+ICsKPiArCQlhZGRyID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaik7Cj4gKwo+ICsJ CWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAgCX0gZWxzZSB7Cj4gLQkJaW50ZWxf Y3J0Y191cGRhdGVfY3Vyc29yKGNydGMsIHN0YXRlLT52aXNpYmxlKTsKPiArCQlpbnQgYWxpZ24g PSBJU19JODMwKGRldikgPyAxNiAqIDEwMjQgOiAyNTY7Cj4gKwkJcmV0ID0gaTkxNV9nZW1fb2Jq ZWN0X2F0dGFjaF9waHlzKG9iaiwgYWxpZ24pOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJRFJNX0RF QlVHX0tNUygiZmFpbGVkIHRvIGF0dGFjaCBwaHlzIG9iamVjdFxuIik7Cj4gKwkJCWdvdG8gZmFp bF9sb2NrZWQ7Cj4gKwkJfQo+ICsJCWFkZHIgPSBvYmotPnBoeXNfaGFuZGxlLT5idXNhZGRyOwo+ ICsJfQo+ICAKPiAtCQlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlwKGNydGMtPmRldiwKPiAtCQkJCSAg ICAgICBJTlRFTF9GUk9OVEJVRkZFUl9DVVJTT1IoaW50ZWxfY3J0Yy0+cGlwZSkpOwo+ICtmaW5p c2g6Cj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y3Vyc29yX2JvKSB7Cj4gKwkJaWYgKCFJTlRFTF9JTkZP KGRldiktPmN1cnNvcl9uZWVkc19waHlzaWNhbCkKPiArCQkJaTkxNV9nZW1fb2JqZWN0X3VucGlu X2Zyb21fZGlzcGxheV9wbGFuZShpbnRlbF9jcnRjLT5jdXJzb3JfYm8pOwo+ICsJfQo+ICAKPiAt CQlyZXR1cm4gMDsKPiArCWk5MTVfZ2VtX3RyYWNrX2ZiKGludGVsX2NydGMtPmN1cnNvcl9ibywg b2JqLAo+ICsJCQkgIElOVEVMX0ZST05UQlVGRkVSX0NVUlNPUihwaXBlKSk7Cj4gKwltdXRleF91 bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCj4gKwlpbnRlbF9jcnRjLT5jdXJzb3JfYWRk ciA9IGFkZHI7Cj4gKwlpbnRlbF9jcnRjLT5jdXJzb3JfYm8gPSBvYmo7Cj4gK3VwZGF0ZToKPiAr CW9sZF93aWR0aCA9IGludGVsX2NydGMtPmN1cnNvcl93aWR0aDsKPiArCj4gKwlpbnRlbF9jcnRj LT5jdXJzb3Jfd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KTsKPiArCWlu dGVsX2NydGMtPmN1cnNvcl9oZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT5vcmlnX2Rz dCk7Cj4gKwo+ICsJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkgewo+ICsJCWlmIChvbGRfd2lkdGgg IT0gaW50ZWxfY3J0Yy0+Y3Vyc29yX3dpZHRoKQo+ICsJCQlpbnRlbF91cGRhdGVfd2F0ZXJtYXJr cyhjcnRjKTsKPiArCQlpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3IoY3J0Yywgc3RhdGUtPnZpc2li bGUpOwo+ICsKPiArCQlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlwKGRldiwgSU5URUxfRlJPTlRCVUZG RVJfQ1VSU09SKHBpcGUpKTsKPiAgCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArZmFpbF91bnBpbjoK PiArCWk5MTVfZ2VtX29iamVjdF91bnBpbl9mcm9tX2Rpc3BsYXlfcGxhbmUob2JqKTsKPiArZmFp bF9sb2NrZWQ6Cj4gKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCWRybV9n ZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKCZvYmotPmJhc2UpOwoKVGhhdCB1bnJlZiBu ZWVkcyB0byBiZSBkcm9wcGVkLiBXaXRoIHRoYXQgY2hhbmdlIHRoZSBwYXRjaCBpcwoKUmV2aWV3 ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cgo+ ICsJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAgc3RhdGljIGludAo+IC0tIAo+IDEuOS4zCj4gCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApW aWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==