From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH 3/9] drm/i915: Use enum plane_id in SKL wm code Date: Tue, 22 Nov 2016 15:27:50 -0500 Message-ID: <1479846470.23297.0.camel@redhat.com> References: <1479830524-7882-1-git-send-email-ville.syrjala@linux.intel.com> <1479830524-7882-4-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id 895336E2C3 for ; Tue, 22 Nov 2016 20:27:52 +0000 (UTC) In-Reply-To: <1479830524-7882-4-git-send-email-ville.syrjala@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: ville.syrjala@linux.intel.com, intel-gfx@lists.freedesktop.org Cc: Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org TG9va3MgZ29vZCB0byBtZQoKUmV2aWV3ZWQtYnk6IEx5dWRlIDxseXVkZUByZWRoYXQuY29tPgoK T24gVHVlLCAyMDE2LTExLTIyIGF0IDE4OjAxICswMjAwLCB2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbSB3cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGlu dXguaW50ZWwuY29tPgo+IAo+IE51a2Ugc2tsX3dtX3BsYW5lX2lkKCkgYW5kIGp1c3QgdXNlIHRo ZSBuZXcgaW50ZWxfcGxhbmUtPmlkLgo+IAo+IHYyOiBDb252ZXJ0IHNrbF93cml0ZV9wbGFuZV93 bSgpIGFzIHdlbGwKPiB2MzogQ29udmVydCBza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoKSBjb3Jy ZWN0bHkKPiB2NDogUmViYXNlIGR1ZSB0byBjaGFuZ2VzIGluIHRoZSB3bSBjb2RlCj4gwqDCoMKg wqBEcm9wIHRoZSBjdXJzb3IgRklYTUUgZnJvbSB0aGUgdG90YWwgZGF0YSByYXRlIGNhbGMgKFBh dWxvKQo+IMKgwqDCoMKgVXNlIHRoZSAiW1BMQU5FOiVkOiVzXSIgZm9ybWF0IGluIGRlYnVnIHBy aW50IChQYXVsbykKPiAKPiBDYzogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNv bT4KPiBDYzogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+Cj4gQ2M6IE1h YXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6 IEx5dWRlIDxjcGF1bEByZWRoYXQuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzD pCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gUmV2aWV3ZWQtYnk6IFBhdWxvIFph bm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+IC0tLQo+IMKgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYyB8IDE4MCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KPiAt LS0tLS0tLS0tCj4gwqAxIGZpbGUgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMTAzIGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggYmJiMWVhZjFlNmRi Li5lNjM1MTQ0NTAxNmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtMjg2Nywy OCArMjg2Nyw2IEBAIGJvb2wgaWxrX2Rpc2FibGVfbHBfd20oc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiDCoCNkZWZpbmUgU0tMX1NBR1ZfQkxPQ0tfVElNRQkzMCAvKiDCtXMgKi8KPiDCoAo+IMKg LyoKPiAtICogUmV0dXJuIHRoZSBpbmRleCBvZiBhIHBsYW5lIGluIHRoZSBTS0wgRERCIGFuZCB3 bSByZXN1bHQKPiBhcnJheXMuwqDCoFByaW1hcnkKPiAtICogcGxhbmUgaXMgYWx3YXlzIGluIHNs b3QgMCwgY3Vyc29yIGlzIGFsd2F5cyBpbiBzbG90Cj4gSTkxNV9NQVhfUExBTkVTLTEsIGFuZAo+ IC0gKiBvdGhlciB1bml2ZXJzYWwgcGxhbmVzIGFyZSBpbiBpbmRpY2VzIDEuLm4uwqDCoE5vdGUg dGhhdCB0aGlzIG1heQo+IGxlYXZlIHVudXNlZAo+IC0gKiBpbmRpY2VzIGJldHdlZW4gdGhlIHRv cCAic3ByaXRlIiBwbGFuZSBhbmQgdGhlIGN1cnNvci4KPiAtICovCj4gLXN0YXRpYyBpbnQKPiAt c2tsX3dtX3BsYW5lX2lkKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCj4gLXsKPiAt CXN3aXRjaCAocGxhbmUtPmJhc2UudHlwZSkgewo+IC0JY2FzZSBEUk1fUExBTkVfVFlQRV9QUklN QVJZOgo+IC0JCXJldHVybiAwOwo+IC0JY2FzZSBEUk1fUExBTkVfVFlQRV9DVVJTT1I6Cj4gLQkJ cmV0dXJuIFBMQU5FX0NVUlNPUjsKPiAtCWNhc2UgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToKPiAt CQlyZXR1cm4gcGxhbmUtPnBsYW5lICsgMTsKPiAtCWRlZmF1bHQ6Cj4gLQkJTUlTU0lOR19DQVNF KHBsYW5lLT5iYXNlLnR5cGUpOwo+IC0JCXJldHVybiBwbGFuZS0+cGxhbmU7Cj4gLQl9Cj4gLX0K PiAtCj4gLS8qCj4gwqAgKiBGSVhNRTogV2Ugc3RpbGwgZG9uJ3QgaGF2ZSB0aGUgcHJvcGVyIGNv ZGUgZGV0ZWN0IGlmIHdlIG5lZWQgdG8KPiBhcHBseSB0aGUgV0EsCj4gwqAgKiBzbyBhc3N1bWUg d2UnbGwgYWx3YXlzIG5lZWQgaXQgaW4gb3JkZXIgdG8gYXZvaWQgdW5kZXJydW5zLgo+IMKgICov Cj4gQEAgLTMwMjYsNyArMzAwNCw2IEBAIGJvb2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0cnVj dAo+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+IMKgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRj Owo+IMKgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7Cj4gwqAJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZTsKPiAtCXN0cnVjdCBza2xfcGxhbmVfd20gKndtOwo+IMKgCWVudW0gcGlw ZSBwaXBlOwo+IMKgCWludCBsZXZlbCwgbGF0ZW5jeTsKPiDCoAo+IEBAIC0zMDUzLDcgKzMwMzAs OCBAQCBib29sIGludGVsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QKPiBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSkKPiDCoAkJcmV0dXJuIGZhbHNlOwo+IMKgCj4gwqAJZm9yX2VhY2hfaW50ZWxfcGxh bmVfb25fY3J0YyhkZXYsIGNydGMsIHBsYW5lKSB7Cj4gLQkJd20gPSAmY3N0YXRlLQo+ID53bS5z a2wub3B0aW1hbC5wbGFuZXNbc2tsX3dtX3BsYW5lX2lkKHBsYW5lKV07Cj4gKwkJc3RydWN0IHNr bF9wbGFuZV93bSAqd20gPQo+ICsJCQkmY3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbcGxh bmUtPmlkXTsKPiDCoAo+IMKgCQkvKiBTa2lwIHRoaXMgcGxhbmUgaWYgaXQncyBub3QgZW5hYmxl ZCAqLwo+IMKgCQlpZiAoIXdtLT53bVswXS5wbGFuZV9lbikKPiBAQCAtMzE1NiwyOCArMzEzNCwy OSBAQCBzdGF0aWMgdm9pZCBza2xfZGRiX2VudHJ5X2luaXRfZnJvbV9odyhzdHJ1Y3QKPiBza2xf ZGRiX2VudHJ5ICplbnRyeSwgdTMyIHJlZykKPiDCoHZvaWQgc2tsX2RkYl9nZXRfaHdfc3RhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCQkJwqDCoHN0cnVjdCBza2xf ZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pCj4gwqB7Cj4gLQllbnVtIHBpcGUgcGlwZTsK PiAtCWludCBwbGFuZTsKPiAtCXUzMiB2YWw7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsK PiDCoAo+IMKgCW1lbXNldChkZGIsIDAsIHNpemVvZigqZGRiKSk7Cj4gwqAKPiAtCWZvcl9lYWNo X3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKPiArCWZvcl9lYWNoX2ludGVsX2NydGMoJmRldl9wcml2 LT5kcm0sIGNydGMpIHsKPiDCoAkJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dl cl9kb21haW47Cj4gKwkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZDsKPiArCQllbnVtIHBpcGUgcGlw ZSA9IGNydGMtPnBpcGU7Cj4gwqAKPiDCoAkJcG93ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJ UEUocGlwZSk7Cj4gwqAJCWlmICghaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChk ZXZfcHJpdiwKPiBwb3dlcl9kb21haW4pKQo+IMKgCQkJY29udGludWU7Cj4gwqAKPiAtCQlmb3Jf ZWFjaF91bml2ZXJzYWxfcGxhbmUoZGV2X3ByaXYsIHBpcGUsIHBsYW5lKSB7Cj4gLQkJCXZhbCA9 IEk5MTVfUkVBRChQTEFORV9CVUZfQ0ZHKHBpcGUsIHBsYW5lKSk7Cj4gLQkJCXNrbF9kZGJfZW50 cnlfaW5pdF9mcm9tX2h3KCZkZGItCj4gPnBsYW5lW3BpcGVdW3BsYW5lXSwKPiAtCQkJCQkJwqDC oMKgdmFsKTsKPiAtCQl9Cj4gKwkJZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0YyhjcnRjLCBwbGFu ZV9pZCkgewo+ICsJCQl1MzIgdmFsOwo+ICsKPiArCQkJaWYgKHBsYW5lX2lkICE9IFBMQU5FX0NV UlNPUikKPiArCQkJCXZhbCA9IEk5MTVfUkVBRChQTEFORV9CVUZfQ0ZHKHBpcGUsCj4gcGxhbmVf aWQpKTsKPiArCQkJZWxzZQo+ICsJCQkJdmFsID0gSTkxNV9SRUFEKENVUl9CVUZfQ0ZHKHBpcGUp KTsKPiDCoAo+IC0JCXZhbCA9IEk5MTVfUkVBRChDVVJfQlVGX0NGRyhwaXBlKSk7Cj4gLQkJc2ts X2RkYl9lbnRyeV9pbml0X2Zyb21faHcoJmRkYi0KPiA+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09S XSwKPiAtCQkJCQnCoMKgwqB2YWwpOwo+ICsJCQlza2xfZGRiX2VudHJ5X2luaXRfZnJvbV9odygm ZGRiLQo+ID5wbGFuZVtwaXBlXVtwbGFuZV9pZF0sIHZhbCk7Cj4gKwkJfQo+IMKgCj4gwqAJCWlu dGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+IMKgCX0KPiBA QCAtMzI3OCwzMCArMzI1NywyOCBAQCBza2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShz dHJ1Y3QKPiBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9jc3RhdGUsCj4gwqAJc3RydWN0IGRybV9j cnRjX3N0YXRlICpjc3RhdGUgPSAmaW50ZWxfY3N0YXRlLT5iYXNlOwo+IMKgCXN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSA9IGNzdGF0ZS0+c3RhdGU7Cj4gwqAJc3RydWN0IGRybV9wbGFu ZSAqcGxhbmU7Cj4gLQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+IMKg CWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZTsKPiAtCXVuc2lnbmVkIGludCBy YXRlLCB0b3RhbF9kYXRhX3JhdGUgPSAwOwo+IC0JaW50IGlkOwo+ICsJdW5zaWduZWQgaW50IHRv dGFsX2RhdGFfcmF0ZSA9IDA7Cj4gwqAKPiDCoAlpZiAoV0FSTl9PTighc3RhdGUpKQo+IMKgCQly ZXR1cm4gMDsKPiDCoAo+IMKgCS8qIENhbGN1bGF0ZSBhbmQgY2FjaGUgZGF0YSByYXRlIGZvciBl YWNoIHBsYW5lICovCj4gwqAJZHJtX2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lYWNoX3BsYW5lX3N0 YXRlKHBsYW5lLCBwc3RhdGUsCj4gY3N0YXRlKSB7Cj4gLQkJaWQgPSBza2xfd21fcGxhbmVfaWQo dG9faW50ZWxfcGxhbmUocGxhbmUpKTsKPiAtCQlpbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5l KHBsYW5lKTsKPiArCQllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gdG9faW50ZWxfcGxhbmUocGxh bmUpLT5pZDsKPiArCQl1bnNpZ25lZCBpbnQgcmF0ZTsKPiDCoAo+IMKgCQkvKiBwYWNrZWQvdXYg Ki8KPiDCoAkJcmF0ZSA9IHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoaW50ZWxfY3N0YXRl LAo+IMKgCQkJCQkJwqDCoMKgwqBwc3RhdGUsIDApOwo+IC0JCXBsYW5lX2RhdGFfcmF0ZVtpZF0g PSByYXRlOwo+ICsJCXBsYW5lX2RhdGFfcmF0ZVtwbGFuZV9pZF0gPSByYXRlOwo+IMKgCj4gwqAJ CXRvdGFsX2RhdGFfcmF0ZSArPSByYXRlOwo+IMKgCj4gwqAJCS8qIHktcGxhbmUgKi8KPiDCoAkJ cmF0ZSA9IHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoaW50ZWxfY3N0YXRlLAo+IMKgCQkJ CQkJwqDCoMKgwqBwc3RhdGUsIDEpOwo+IC0JCXBsYW5lX3lfZGF0YV9yYXRlW2lkXSA9IHJhdGU7 Cj4gKwkJcGxhbmVfeV9kYXRhX3JhdGVbcGxhbmVfaWRdID0gcmF0ZTsKPiDCoAo+IMKgCQl0b3Rh bF9kYXRhX3JhdGUgKz0gcmF0ZTsKPiDCoAl9Cj4gQEAgLTMzODAsMTcgKzMzNTcsMTYgQEAgc2ts X2RkYl9jYWxjX21pbihjb25zdCBzdHJ1Y3QKPiBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsIGlu dCBudW1fYWN0aXZlLAo+IMKgCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+IMKgCj4gwqAJZHJt X2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lYWNoX3BsYW5lX3N0YXRlKHBsYW5lLCBwc3RhdGUsCj4g JmNzdGF0ZS0+YmFzZSkgewo+IC0JCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPQo+ IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAtCQlpbnQgaWQgPSBza2xfd21fcGxhbmVfaWQoaW50 ZWxfcGxhbmUpOwo+ICsJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSB0b19pbnRlbF9wbGFuZShw bGFuZSktPmlkOwo+IMKgCj4gLQkJaWYgKGlkID09IFBMQU5FX0NVUlNPUikKPiArCQlpZiAocGxh bmVfaWQgPT0gUExBTkVfQ1VSU09SKQo+IMKgCQkJY29udGludWU7Cj4gwqAKPiDCoAkJaWYgKCFw c3RhdGUtPnZpc2libGUpCj4gwqAJCQljb250aW51ZTsKPiDCoAo+IC0JCW1pbmltdW1baWRdID0g c2tsX2RkYl9taW5fYWxsb2MocHN0YXRlLCAwKTsKPiAtCQl5X21pbmltdW1baWRdID0gc2tsX2Rk Yl9taW5fYWxsb2MocHN0YXRlLCAxKTsKPiArCQltaW5pbXVtW3BsYW5lX2lkXSA9IHNrbF9kZGJf bWluX2FsbG9jKHBzdGF0ZSwgMCk7Cj4gKwkJeV9taW5pbXVtW3BsYW5lX2lkXSA9IHNrbF9kZGJf bWluX2FsbG9jKHBzdGF0ZSwgMSk7Cj4gwqAJfQo+IMKgCj4gwqAJbWluaW11bVtQTEFORV9DVVJT T1JdID0gc2tsX2N1cnNvcl9hbGxvY2F0aW9uKG51bV9hY3RpdmUpOwo+IEBAIC0zNDEwLDggKzMz ODYsOCBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiAq Y3N0YXRlLAo+IMKgCXVpbnQxNl90IG1pbmltdW1bSTkxNV9NQVhfUExBTkVTXSA9IHt9Owo+IMKg CXVpbnQxNl90IHlfbWluaW11bVtJOTE1X01BWF9QTEFORVNdID0ge307Cj4gwqAJdW5zaWduZWQg aW50IHRvdGFsX2RhdGFfcmF0ZTsKPiArCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQ7Cj4gwqAJaW50 IG51bV9hY3RpdmU7Cj4gLQlpbnQgaWQsIGk7Cj4gwqAJdW5zaWduZWQgcGxhbmVfZGF0YV9yYXRl W0k5MTVfTUFYX1BMQU5FU10gPSB7fTsKPiDCoAl1bnNpZ25lZCBwbGFuZV95X2RhdGFfcmF0ZVtJ OTE1X01BWF9QTEFORVNdID0ge307Cj4gwqAKPiBAQCAtMzQ0Miw5ICszNDE4LDkgQEAgc2tsX2Fs bG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gKmNzdGF0ZSwKPiDCoAnC oCogcHJvcG9ydGlvbmFsIHRvIHRoZSBkYXRhIHJhdGUuCj4gwqAJwqAqLwo+IMKgCj4gLQlmb3Ig KGkgPSAwOyBpIDwgSTkxNV9NQVhfUExBTkVTOyBpKyspIHsKPiAtCQlhbGxvY19zaXplIC09IG1p bmltdW1baV07Cj4gLQkJYWxsb2Nfc2l6ZSAtPSB5X21pbmltdW1baV07Cj4gKwlmb3JfZWFjaF9w bGFuZV9pZF9vbl9jcnRjKGludGVsX2NydGMsIHBsYW5lX2lkKSB7Cj4gKwkJYWxsb2Nfc2l6ZSAt PSBtaW5pbXVtW3BsYW5lX2lkXTsKPiArCQlhbGxvY19zaXplIC09IHlfbWluaW11bVtwbGFuZV9p ZF07Cj4gwqAJfQo+IMKgCj4gwqAJZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdLnN0YXJ0 ID0gYWxsb2MtPmVuZCAtCj4gbWluaW11bVtQTEFORV9DVVJTT1JdOwo+IEBAIC0zNDYzLDI4ICsz NDM5LDI4IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ ICpjc3RhdGUsCj4gwqAJCXJldHVybiAwOwo+IMKgCj4gwqAJc3RhcnQgPSBhbGxvYy0+c3RhcnQ7 Cj4gLQlmb3IgKGlkID0gMDsgaWQgPCBJOTE1X01BWF9QTEFORVM7IGlkKyspIHsKPiArCWZvcl9l YWNoX3BsYW5lX2lkX29uX2NydGMoaW50ZWxfY3J0YywgcGxhbmVfaWQpIHsKPiDCoAkJdW5zaWdu ZWQgaW50IGRhdGFfcmF0ZSwgeV9kYXRhX3JhdGU7Cj4gwqAJCXVpbnQxNl90IHBsYW5lX2Jsb2Nr cywgeV9wbGFuZV9ibG9ja3MgPSAwOwo+IMKgCj4gLQkJaWYgKGlkID09IFBMQU5FX0NVUlNPUikK PiArCQlpZiAocGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKQo+IMKgCQkJY29udGludWU7Cj4gwqAK PiAtCQlkYXRhX3JhdGUgPSBwbGFuZV9kYXRhX3JhdGVbaWRdOwo+ICsJCWRhdGFfcmF0ZSA9IHBs YW5lX2RhdGFfcmF0ZVtwbGFuZV9pZF07Cj4gwqAKPiDCoAkJLyoKPiDCoAkJwqAqIGFsbG9jYXRp b24gZm9yIChwYWNrZWQgZm9ybWF0cykgb3IgKHV2LXBsYW5lIHBhcnQKPiBvZiBwbGFuYXIgZm9y bWF0KToKPiDCoAkJwqAqIHByb21vdGUgdGhlIGV4cHJlc3Npb24gdG8gNjQgYml0cyB0byBhdm9p ZAo+IG92ZXJmbG93aW5nLCB0aGUKPiDCoAkJwqAqIHJlc3VsdCBpcyA8IGF2YWlsYWJsZSBhcyBk YXRhX3JhdGUgLwo+IHRvdGFsX2RhdGFfcmF0ZSA8IDEKPiDCoAkJwqAqLwo+IC0JCXBsYW5lX2Js b2NrcyA9IG1pbmltdW1baWRdOwo+ICsJCXBsYW5lX2Jsb2NrcyA9IG1pbmltdW1bcGxhbmVfaWRd Owo+IMKgCQlwbGFuZV9ibG9ja3MgKz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqCj4g ZGF0YV9yYXRlLAo+IMKgCQkJCQl0b3RhbF9kYXRhX3JhdGUpOwo+IMKgCj4gwqAJCS8qIExlYXZl IGRpc2FibGVkIHBsYW5lcyBhdCAoMCwwKSAqLwo+IMKgCQlpZiAoZGF0YV9yYXRlKSB7Cj4gLQkJ CWRkYi0+cGxhbmVbcGlwZV1baWRdLnN0YXJ0ID0gc3RhcnQ7Cj4gLQkJCWRkYi0+cGxhbmVbcGlw ZV1baWRdLmVuZCA9IHN0YXJ0ICsKPiBwbGFuZV9ibG9ja3M7Cj4gKwkJCWRkYi0+cGxhbmVbcGlw ZV1bcGxhbmVfaWRdLnN0YXJ0ID0gc3RhcnQ7Cj4gKwkJCWRkYi0+cGxhbmVbcGlwZV1bcGxhbmVf aWRdLmVuZCA9IHN0YXJ0ICsKPiBwbGFuZV9ibG9ja3M7Cj4gwqAJCX0KPiDCoAo+IMKgCQlzdGFy dCArPSBwbGFuZV9ibG9ja3M7Cj4gQEAgLTM0OTIsMTUgKzM0NjgsMTUgQEAgc2tsX2FsbG9jYXRl X3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gKmNzdGF0ZSwKPiDCoAkJLyoKPiDC oAkJwqAqIGFsbG9jYXRpb24gZm9yIHlfcGxhbmUgcGFydCBvZiBwbGFuYXIgZm9ybWF0Ogo+IMKg CQnCoCovCj4gLQkJeV9kYXRhX3JhdGUgPSBwbGFuZV95X2RhdGFfcmF0ZVtpZF07Cj4gKwkJeV9k YXRhX3JhdGUgPSBwbGFuZV95X2RhdGFfcmF0ZVtwbGFuZV9pZF07Cj4gwqAKPiAtCQl5X3BsYW5l X2Jsb2NrcyA9IHlfbWluaW11bVtpZF07Cj4gKwkJeV9wbGFuZV9ibG9ja3MgPSB5X21pbmltdW1b cGxhbmVfaWRdOwo+IMKgCQl5X3BsYW5lX2Jsb2NrcyArPSBkaXZfdTY0KCh1aW50NjRfdClhbGxv Y19zaXplICoKPiB5X2RhdGFfcmF0ZSwKPiDCoAkJCQkJdG90YWxfZGF0YV9yYXRlKTsKPiDCoAo+ IMKgCQlpZiAoeV9kYXRhX3JhdGUpIHsKPiAtCQkJZGRiLT55X3BsYW5lW3BpcGVdW2lkXS5zdGFy dCA9IHN0YXJ0Owo+IC0JCQlkZGItPnlfcGxhbmVbcGlwZV1baWRdLmVuZCA9IHN0YXJ0ICsKPiB5 X3BsYW5lX2Jsb2NrczsKPiArCQkJZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lX2lkXS5zdGFydCA9 IHN0YXJ0Owo+ICsJCQlkZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRdLmVuZCA9IHN0YXJ0ICsK PiB5X3BsYW5lX2Jsb2NrczsKPiDCoAkJfQo+IMKgCj4gwqAJCXN0YXJ0ICs9IHlfcGxhbmVfYmxv Y2tzOwo+IEBAIC0zNjkyLDEyICszNjY4LDEyIEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxh bmVfd20oY29uc3Qgc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJCWlm IChsZXZlbCkgewo+IMKgCQkJcmV0dXJuIDA7Cj4gwqAJCX0gZWxzZSB7Cj4gKwkJCXN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lID0gcHN0YXRlLT5wbGFuZTsKPiArCj4gwqAJCQlEUk1fREVCVUdfS01T KCJSZXF1ZXN0ZWQgZGlzcGxheQo+IGNvbmZpZ3VyYXRpb24gZXhjZWVkcyBzeXN0ZW0gd2F0ZXJt YXJrIGxpbWl0YXRpb25zXG4iKTsKPiAtCQkJRFJNX0RFQlVHX0tNUygiUGxhbmUgJWQuJWQ6IGJs b2NrcyByZXF1aXJlZAo+ID0gJXUvJXUsIGxpbmVzIHJlcXVpcmVkID0gJXUvMzFcbiIsCj4gLQkJ CQnCoMKgwqDCoMKgwqB0b19pbnRlbF9jcnRjKGNzdGF0ZS0KPiA+YmFzZS5jcnRjKS0+cGlwZSwK PiAtCQkJCcKgwqDCoMKgwqDCoHNrbF93bV9wbGFuZV9pZCh0b19pbnRlbF9wbGFuZQo+IChwc3Rh dGUtPnBsYW5lKSksCj4gKwkJCURSTV9ERUJVR19LTVMoIltQTEFORTolZDolc10gYmxvY2tzIHJl cXVpcmVkCj4gPSAldS8ldSwgbGluZXMgcmVxdWlyZWQgPSAldS8zMVxuIiwKPiArCQkJCcKgwqDC oMKgwqDCoHBsYW5lLT5iYXNlLmlkLCBwbGFuZS0+bmFtZSwKPiDCoAkJCQnCoMKgwqDCoMKgwqBy ZXNfYmxvY2tzLCBkZGJfYWxsb2NhdGlvbiwKPiByZXNfbGluZXMpOwo+IC0KPiDCoAkJCXJldHVy biAtRUlOVkFMOwo+IMKgCQl9Cj4gwqAJfQo+IEBAIC0zNzI0LDcgKzM3MDAsNiBAQCBza2xfY29t cHV0ZV93bV9sZXZlbChjb25zdCBzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiDCoAl1aW50MTZfdCBkZGJfYmxvY2tzOwo+IMKgCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0 Yy0+cGlwZTsKPiDCoAlpbnQgcmV0Owo+IC0JaW50IGkgPSBza2xfd21fcGxhbmVfaWQoaW50ZWxf cGxhbmUpOwo+IMKgCj4gwqAJaWYgKHN0YXRlKQo+IMKgCQlpbnRlbF9wc3RhdGUgPQo+IEBAIC0z NzQ3LDcgKzM3MjIsNyBAQCBza2xfY29tcHV0ZV93bV9sZXZlbChjb25zdCBzdHJ1Y3QKPiBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAo+IMKgCVdBUk5fT04oIWludGVsX3BzdGF0ZS0+ YmFzZS5mYik7Cj4gwqAKPiAtCWRkYl9ibG9ja3MgPSBza2xfZGRiX2VudHJ5X3NpemUoJmRkYi0+ cGxhbmVbcGlwZV1baV0pOwo+ICsJZGRiX2Jsb2NrcyA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmZGRi LQo+ID5wbGFuZVtwaXBlXVtpbnRlbF9wbGFuZS0+aWRdKTsKPiDCoAo+IMKgCXJldCA9IHNrbF9j b21wdXRlX3BsYW5lX3dtKGRldl9wcml2LAo+IMKgCQkJCcKgwqDCoGNzdGF0ZSwKPiBAQCAtMzgx MCw3ICszNzg1LDcgQEAgc3RhdGljIGludCBza2xfYnVpbGRfcGlwZV93bShzdHJ1Y3QKPiBpbnRl bF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gwqAJZm9yX2VhY2hfaW50ZWxfcGxhbmVfbWFzaygmZGV2 X3ByaXYtPmRybSwKPiDCoAkJCQnCoMKgaW50ZWxfcGxhbmUsCj4gwqAJCQkJwqDCoGNzdGF0ZS0+ YmFzZS5wbGFuZV9tYXNrKSB7Cj4gLQkJd20gPSAmcGlwZV93bS0+cGxhbmVzW3NrbF93bV9wbGFu ZV9pZChpbnRlbF9wbGFuZSldOwo+ICsJCXdtID0gJnBpcGVfd20tPnBsYW5lc1tpbnRlbF9wbGFu ZS0+aWRdOwo+IMKgCj4gwqAJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxl dmVsKyspIHsKPiDCoAkJCXJldCA9IHNrbF9jb21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBkZGIs Cj4gY3N0YXRlLAo+IEBAIC0zODU0LDcgKzM4MjksNyBAQCBzdGF0aWMgdm9pZCBza2xfd3JpdGVf d21fbGV2ZWwoc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqB2b2lkIHNr bF93cml0ZV9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiDCoAkJCWNv bnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKndtLAo+IMKgCQkJY29uc3Qgc3RydWN0IHNrbF9kZGJf YWxsb2NhdGlvbiAqZGRiLAo+IC0JCQlpbnQgcGxhbmUpCj4gKwkJCWVudW0gcGxhbmVfaWQgcGxh bmVfaWQpCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gJmludGVsX2NydGMtPmJh c2U7Cj4gwqAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiBAQCAtMzg2Mywx NiArMzgzOCwxNiBAQCB2b2lkIHNrbF93cml0ZV9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0Ywo+ ICppbnRlbF9jcnRjLAo+IMKgCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiDC oAo+IMKgCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiAt CQlza2xfd3JpdGVfd21fbGV2ZWwoZGV2X3ByaXYsIFBMQU5FX1dNKHBpcGUsIHBsYW5lLAo+IGxl dmVsKSwKPiArCQlza2xfd3JpdGVfd21fbGV2ZWwoZGV2X3ByaXYsIFBMQU5FX1dNKHBpcGUsCj4g cGxhbmVfaWQsIGxldmVsKSwKPiDCoAkJCQnCoMKgwqAmd20tPndtW2xldmVsXSk7Cj4gwqAJfQo+ IC0Jc2tsX3dyaXRlX3dtX2xldmVsKGRldl9wcml2LCBQTEFORV9XTV9UUkFOUyhwaXBlLCBwbGFu ZSksCj4gKwlza2xfd3JpdGVfd21fbGV2ZWwoZGV2X3ByaXYsIFBMQU5FX1dNX1RSQU5TKHBpcGUs IHBsYW5lX2lkKSwKPiDCoAkJCcKgwqDCoCZ3bS0+dHJhbnNfd20pOwo+IMKgCj4gLQlza2xfZGRi X2VudHJ5X3dyaXRlKGRldl9wcml2LCBQTEFORV9CVUZfQ0ZHKHBpcGUsIHBsYW5lKSwKPiAtCQkJ wqDCoMKgwqAmZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV0pOwo+IC0Jc2tsX2RkYl9lbnRyeV93cml0 ZShkZXZfcHJpdiwgUExBTkVfTlYxMl9CVUZfQ0ZHKHBpcGUsCj4gcGxhbmUpLAo+IC0JCQnCoMKg wqDCoCZkZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVdKTsKPiArCXNrbF9kZGJfZW50cnlfd3JpdGUo ZGV2X3ByaXYsIFBMQU5FX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpLAo+ICsJCQnCoMKgwqDCoCZk ZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSk7Cj4gKwlza2xfZGRiX2VudHJ5X3dyaXRlKGRldl9w cml2LCBQTEFORV9OVjEyX0JVRl9DRkcocGlwZSwKPiBwbGFuZV9pZCksCj4gKwkJCcKgwqDCoMKg JmRkYi0+eV9wbGFuZVtwaXBlXVtwbGFuZV9pZF0pOwo+IMKgfQo+IMKgCj4gwqB2b2lkIHNrbF93 cml0ZV9jdXJzb3Jfd20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gQEAgLTM5Nzcs MTcgKzM5NTIsMTYgQEAgc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0cnVjdAo+IGludGVs X2NydGNfc3RhdGUgKmNzdGF0ZSkKPiDCoAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZTsKPiDCoAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiDCoAllbnVtIHBpcGUgcGlwZSA9 IGludGVsX2NydGMtPnBpcGU7Cj4gLQlpbnQgaWQ7Cj4gwqAKPiDCoAlXQVJOX09OKCFkcm1fYXRv bWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKSk7Cj4gwqAKPiDCoAlkcm1f Zm9yX2VhY2hfcGxhbmVfbWFzayhwbGFuZSwgZGV2LCBjc3RhdGUtPmJhc2UucGxhbmVfbWFzaykg Cj4gewo+IC0JCWlkID0gc2tsX3dtX3BsYW5lX2lkKHRvX2ludGVsX3BsYW5lKHBsYW5lKSk7Cj4g KwkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKS0+aWQ7Cj4g wqAKPiAtCQlpZiAoc2tsX2RkYl9lbnRyeV9lcXVhbCgmY3VyX2RkYi0+cGxhbmVbcGlwZV1baWRd LAo+IC0JCQkJCSZuZXdfZGRiLT5wbGFuZVtwaXBlXVtpZF0pCj4gJiYKPiAtCQnCoMKgwqDCoHNr bF9kZGJfZW50cnlfZXF1YWwoJmN1cl9kZGItPnlfcGxhbmVbcGlwZV1baWRdLAo+IC0JCQkJCSZu ZXdfZGRiLQo+ID55X3BsYW5lW3BpcGVdW2lkXSkpCj4gKwkJaWYgKHNrbF9kZGJfZW50cnlfZXF1 YWwoJmN1cl9kZGItCj4gPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSwKPiArCQkJCQkmbmV3X2RkYi0K PiA+cGxhbmVbcGlwZV1bcGxhbmVfaWRdKSAmJgo+ICsJCcKgwqDCoMKgc2tsX2RkYl9lbnRyeV9l cXVhbCgmY3VyX2RkYi0KPiA+eV9wbGFuZVtwaXBlXVtwbGFuZV9pZF0sCj4gKwkJCQkJJm5ld19k ZGItCj4gPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRdKSkKPiDCoAkJCWNvbnRpbnVlOwo+IMKgCj4g wqAJCXBsYW5lX3N0YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsCj4gcGxh bmUpOwo+IEBAIC00MDk5LDcgKzQwNzMsNiBAQCBza2xfcHJpbnRfd21fY2hhbmdlcyhjb25zdCBz dHJ1Y3QKPiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiDCoAljb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lOwo+IMKgCWNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24g Km9sZF9kZGIgPSAmZGV2X3ByaXYtCj4gPndtLnNrbF9ody5kZGI7Cj4gwqAJY29uc3Qgc3RydWN0 IHNrbF9kZGJfYWxsb2NhdGlvbiAqbmV3X2RkYiA9ICZpbnRlbF9zdGF0ZS0KPiA+d21fcmVzdWx0 cy5kZGI7Cj4gLQlpbnQgaWQ7Cj4gwqAJaW50IGk7Cj4gwqAKPiDCoAlmb3JfZWFjaF9jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBjc3RhdGUsIGkpIHsKPiBAQCAtNDEwNywxMSArNDA4MCwxMSBA QCBza2xfcHJpbnRfd21fY2hhbmdlcyhjb25zdCBzdHJ1Y3QKPiBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPiDCoAkJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IMKgCj4gwqAJ CWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLAo+IGludGVsX3Bs YW5lKSB7Cj4gKwkJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBpbnRlbF9wbGFuZS0+aWQ7Cj4g wqAJCQljb25zdCBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqb2xkLCAqbmV3Owo+IMKgCj4gLQkJCWlk ID0gc2tsX3dtX3BsYW5lX2lkKGludGVsX3BsYW5lKTsKPiAtCQkJb2xkID0gJm9sZF9kZGItPnBs YW5lW3BpcGVdW2lkXTsKPiAtCQkJbmV3ID0gJm5ld19kZGItPnBsYW5lW3BpcGVdW2lkXTsKPiAr CQkJb2xkID0gJm9sZF9kZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXTsKPiArCQkJbmV3ID0gJm5l d19kZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXTsKPiDCoAo+IMKgCQkJaWYgKHNrbF9kZGJfZW50 cnlfZXF1YWwob2xkLCBuZXcpKQo+IMKgCQkJCWNvbnRpbnVlOwo+IEBAIC00MjAxLDE3ICs0MTc0 LDIxIEBAIHN0YXRpYyB2b2lkIHNrbF9hdG9taWNfdXBkYXRlX2NydGNfd20oc3RydWN0Cj4gaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiDCoAlzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20g PSAmY3N0YXRlLT53bS5za2wub3B0aW1hbDsKPiDCoAljb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxv Y2F0aW9uICpkZGIgPSAmc3RhdGUtCj4gPndtX3Jlc3VsdHMuZGRiOwo+IMKgCWVudW0gcGlwZSBw aXBlID0gY3J0Yy0+cGlwZTsKPiAtCWludCBwbGFuZTsKPiArCWVudW0gcGxhbmVfaWQgcGxhbmVf aWQ7Cj4gwqAKPiDCoAlpZiAoIShzdGF0ZS0+d21fcmVzdWx0cy5kaXJ0eV9waXBlcyAmIGRybV9j cnRjX21hc2soJmNydGMtCj4gPmJhc2UpKSkKPiDCoAkJcmV0dXJuOwo+IMKgCj4gwqAJSTkxNV9X UklURShQSVBFX1dNX0xJTkVUSU1FKHBpcGUpLCBwaXBlX3dtLT5saW5ldGltZSk7Cj4gwqAKPiAt CWZvcl9lYWNoX3VuaXZlcnNhbF9wbGFuZShkZXZfcHJpdiwgcGlwZSwgcGxhbmUpCj4gLQkJc2ts X3dyaXRlX3BsYW5lX3dtKGNydGMsICZwaXBlX3dtLT5wbGFuZXNbcGxhbmVdLAo+IGRkYiwgcGxh bmUpOwo+IC0KPiAtCXNrbF93cml0ZV9jdXJzb3Jfd20oY3J0YywgJnBpcGVfd20tPnBsYW5lc1tQ TEFORV9DVVJTT1JdLAo+IGRkYik7Cj4gKwlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGNydGMs IHBsYW5lX2lkKSB7Cj4gKwkJaWYgKHBsYW5lX2lkICE9IFBMQU5FX0NVUlNPUikKPiArCQkJc2ts X3dyaXRlX3BsYW5lX3dtKGNydGMsICZwaXBlX3dtLQo+ID5wbGFuZXNbcGxhbmVfaWRdLAo+ICsJ CQkJCcKgwqDCoGRkYiwgcGxhbmVfaWQpOwo+ICsJCWVsc2UKPiArCQkJc2tsX3dyaXRlX2N1cnNv cl93bShjcnRjLCAmcGlwZV93bS0KPiA+cGxhbmVzW3BsYW5lX2lkXSwKPiArCQkJCQnCoMKgwqDC oGRkYik7Cj4gKwl9Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIHNrbF9pbml0aWFsX3dtKHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+IEBAIC00MzI2LDMyICs0MzAzLDI5IEBA IHN0YXRpYyBpbmxpbmUgdm9pZAo+IHNrbF93bV9sZXZlbF9mcm9tX3JlZ192YWwodWludDMyX3Qg dmFsLAo+IMKgdm9pZCBza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9jcnRjICpj cnRjLAo+IMKgCQkJwqDCoMKgwqDCoMKgc3RydWN0IHNrbF9waXBlX3dtICpvdXQpCj4gwqB7Cj4g LQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+IMKgCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCXN0cnVjdCBpbnRlbF9w bGFuZSAqaW50ZWxfcGxhbmU7Cj4gLQlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bTsKPiDCoAllbnVt IHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gLQlpbnQgbGV2ZWwsIGlkLCBtYXhfbGV2 ZWw7Cj4gKwlpbnQgbGV2ZWwsIG1heF9sZXZlbDsKPiArCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQ7 Cj4gwqAJdWludDMyX3QgdmFsOwo+IMKgCj4gwqAJbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZl bChkZXZfcHJpdik7Cj4gwqAKPiAtCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBp bnRlbF9jcnRjLCBpbnRlbF9wbGFuZSkgewo+IC0JCWlkID0gc2tsX3dtX3BsYW5lX2lkKGludGVs X3BsYW5lKTsKPiAtCQl3bSA9ICZvdXQtPnBsYW5lc1tpZF07Cj4gKwlmb3JfZWFjaF9wbGFuZV9p ZF9vbl9jcnRjKGludGVsX2NydGMsIHBsYW5lX2lkKSB7Cj4gKwkJc3RydWN0IHNrbF9wbGFuZV93 bSAqd20gPSAmb3V0LT5wbGFuZXNbcGxhbmVfaWRdOwo+IMKgCj4gwqAJCWZvciAobGV2ZWwgPSAw OyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiAtCQkJaWYgKGlkICE9IFBMQU5FX0NV UlNPUikKPiAtCQkJCXZhbCA9IEk5MTVfUkVBRChQTEFORV9XTShwaXBlLCBpZCwKPiBsZXZlbCkp Owo+ICsJCQlpZiAocGxhbmVfaWQgIT0gUExBTkVfQ1VSU09SKQo+ICsJCQkJdmFsID0gSTkxNV9S RUFEKFBMQU5FX1dNKHBpcGUsCj4gcGxhbmVfaWQsIGxldmVsKSk7Cj4gwqAJCQllbHNlCj4gwqAJ CQkJdmFsID0gSTkxNV9SRUFEKENVUl9XTShwaXBlLAo+IGxldmVsKSk7Cj4gwqAKPiDCoAkJCXNr bF93bV9sZXZlbF9mcm9tX3JlZ192YWwodmFsLCAmd20tCj4gPndtW2xldmVsXSk7Cj4gwqAJCX0K PiDCoAo+IC0JCWlmIChpZCAhPSBQTEFORV9DVVJTT1IpCj4gLQkJCXZhbCA9IEk5MTVfUkVBRChQ TEFORV9XTV9UUkFOUyhwaXBlLCBpZCkpOwo+ICsJCWlmIChwbGFuZV9pZCAhPSBQTEFORV9DVVJT T1IpCj4gKwkJCXZhbCA9IEk5MTVfUkVBRChQTEFORV9XTV9UUkFOUyhwaXBlLAo+IHBsYW5lX2lk KSk7Cj4gwqAJCWVsc2UKPiDCoAkJCXZhbCA9IEk5MTVfUkVBRChDVVJfV01fVFJBTlMocGlwZSkp Owo+IMKgCi0tIApDaGVlcnMsCglMeXVkZQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK