From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH v3 4/9] drm/i915: Use enum plane_id in SKL wm code Date: Thu, 17 Nov 2016 17:12:13 -0200 Message-ID: <1479409933.2382.35.camel@intel.com> References: <1478616439-10150-5-git-send-email-ville.syrjala@linux.intel.com> <1478703806-27351-1-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 299936E859 for ; Thu, 17 Nov 2016 19:12:18 +0000 (UTC) In-Reply-To: <1478703806-27351-1-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 List-Id: intel-gfx@lists.freedesktop.org RW0gUXVhLCAyMDE2LTExLTA5IMOgcyAxNzowMyArMDIwMCwgdmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20KZXNjcmV2ZXU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4KPiAKPiBOdWtlIHNrbF93bV9wbGFuZV9pZCgpIGFuZCBqdXN0IHVz ZSB0aGUgbmV3IGludGVsX3BsYW5lLT5pZC4KPiAKPiB2MjogQ29udmVydCBza2xfd3JpdGVfcGxh bmVfd20oKSBhcyB3ZWxsCj4gdjM6IENvbnZlcnQgc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKCkg Y29ycmVjdGx5CgpJbiBnZW5lcmFsLCBJIHJlYWxseSBsaWtlIHRoZSBmYWN0IHRoYXQgd2UgdW5p ZmllZCBwbGFuZS9pZC9pIGludG8ganVzdApwbGFuZV9pZC4KCkluIGdlbmVyYWwsIEkgZGlzbGlr ZSB0aGUgZmFjdCB0aGF0IG1hbnkgbmV3IGxpbmVzIGdvIHBhc3QgODAgY29sdW1ucwpub3cgOiku CgpBIGZldyBjb21tZW50cyBmb2xsb3c6Cgo+IAo+IENjOiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQu cm9wZXJAaW50ZWwuY29tPgo+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVs LmNvbT4KPiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4Lmlu dGVsLmNvbT4KPiBDYzogTHl1ZGUgPGNwYXVsQHJlZGhhdC5jb20+Cj4gU2lnbmVkLW9mZi1ieTog VmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiDC oGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIHzCoMKgwqAyICstCj4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jwqDCoHwgMTgwICsrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tCj4gLS0tLS0tLS0tLQo+IMKgMiBmaWxlcyBjaGFuZ2VkLCA3NiBpbnNlcnRpb25zKCsp LCAxMDYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4 IGEzYzY5NmQ4YmY5My4uNmE0Y2Q2ZWRhZmE1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiBAQCAtMTc1MSw3ICsxNzUxLDcgQEAgdm9pZCBza2xfd3JpdGVfY3Vyc29yX3dtKHN0cnVj dCBpbnRlbF9jcnRjCj4gKmludGVsX2NydGMsCj4gwqB2b2lkIHNrbF93cml0ZV9wbGFuZV93bShz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiDCoAkJCWNvbnN0IHN0cnVjdCBza2xfcGxh bmVfd20gKndtLAo+IMKgCQkJY29uc3Qgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiLAo+ IC0JCQlpbnQgcGxhbmUpOwo+ICsJCQllbnVtIHBsYW5lX2lkIHBsYW5lX2lkKTsKPiDCoHVpbnQz Ml90IGlsa19waXBlX3BpeGVsX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiAq cGlwZV9jb25maWcpOwo+IMKgYm9vbCBpbGtfZGlzYWJsZV9scF93bShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKPiDCoGludCBzYW5pdGl6ZV9yYzZfb3B0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgaW50Cj4gZW5hYmxlX3JjNik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKPiBpbmRleCA4OGUyOGM5ODliOWMuLmJhZTdlZWE2ZGUxNiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+IEBAIC0yODYzLDI4ICsyODYzLDYgQEAgYm9vbCBpbGtfZGlzYWJsZV9scF93 bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgI2RlZmluZSBTS0xfU0FHVl9CTE9DS19USU1F CTMwIC8qIMK1cyAqLwo+IMKgCj4gwqAvKgo+IC0gKiBSZXR1cm4gdGhlIGluZGV4IG9mIGEgcGxh bmUgaW4gdGhlIFNLTCBEREIgYW5kIHdtIHJlc3VsdAo+IGFycmF5cy7CoMKgUHJpbWFyeQo+IC0g KiBwbGFuZSBpcyBhbHdheXMgaW4gc2xvdCAwLCBjdXJzb3IgaXMgYWx3YXlzIGluIHNsb3QKPiBJ OTE1X01BWF9QTEFORVMtMSwgYW5kCj4gLSAqIG90aGVyIHVuaXZlcnNhbCBwbGFuZXMgYXJlIGlu IGluZGljZXMgMS4ubi7CoMKgTm90ZSB0aGF0IHRoaXMgbWF5Cj4gbGVhdmUgdW51c2VkCj4gLSAq IGluZGljZXMgYmV0d2VlbiB0aGUgdG9wICJzcHJpdGUiIHBsYW5lIGFuZCB0aGUgY3Vyc29yLgo+ IC0gKi8KPiAtc3RhdGljIGludAo+IC1za2xfd21fcGxhbmVfaWQoY29uc3Qgc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSkKPiAtewo+IC0Jc3dpdGNoIChwbGFuZS0+YmFzZS50eXBlKSB7Cj4gLQlj YXNlIERSTV9QTEFORV9UWVBFX1BSSU1BUlk6Cj4gLQkJcmV0dXJuIDA7Cj4gLQljYXNlIERSTV9Q TEFORV9UWVBFX0NVUlNPUjoKPiAtCQlyZXR1cm4gUExBTkVfQ1VSU09SOwo+IC0JY2FzZSBEUk1f UExBTkVfVFlQRV9PVkVSTEFZOgo+IC0JCXJldHVybiBwbGFuZS0+cGxhbmUgKyAxOwo+IC0JZGVm YXVsdDoKPiAtCQlNSVNTSU5HX0NBU0UocGxhbmUtPmJhc2UudHlwZSk7Cj4gLQkJcmV0dXJuIHBs YW5lLT5wbGFuZTsKPiAtCX0KPiAtfQo+IC0KPiAtLyoKPiDCoCAqIEZJWE1FOiBXZSBzdGlsbCBk b24ndCBoYXZlIHRoZSBwcm9wZXIgY29kZSBkZXRlY3QgaWYgd2UgbmVlZCB0bwo+IGFwcGx5IHRo ZSBXQSwKPiDCoCAqIHNvIGFzc3VtZSB3ZSdsbCBhbHdheXMgbmVlZCBpdCBpbiBvcmRlciB0byBh dm9pZCB1bmRlcnJ1bnMuCj4gwqAgKi8KPiBAQCAtMzAyMiw3ICszMDAwLDYgQEAgYm9vbCBpbnRl bF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0Cj4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gwqAJ c3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gwqAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZTsK PiDCoAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlOwo+IC0Jc3RydWN0IHNrbF9wbGFu ZV93bSAqd207Cj4gwqAJZW51bSBwaXBlIHBpcGU7Cj4gwqAJaW50IGxldmVsLCBsYXRlbmN5Owo+ IMKgCj4gQEAgLTMwNDksNyArMzAyNiw4IEBAIGJvb2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0 cnVjdAo+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+IMKgCQlyZXR1cm4gZmFsc2U7Cj4gwqAK PiDCoAlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgY3J0YywgcGxhbmUpIHsKPiAt CQl3bSA9ICZjc3RhdGUtCj4gPndtLnNrbC5vcHRpbWFsLnBsYW5lc1tza2xfd21fcGxhbmVfaWQo cGxhbmUpXTsKPiArCQlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9Cj4gKwkJCSZjc3RhdGUtPndt LnNrbC5vcHRpbWFsLnBsYW5lc1twbGFuZS0+aWRdOwo+IMKgCj4gwqAJCS8qIFNraXAgdGhpcyBw bGFuZSBpZiBpdCdzIG5vdCBlbmFibGVkICovCj4gwqAJCWlmICghd20tPndtWzBdLnBsYW5lX2Vu KQo+IEBAIC0zMTQ4LDI4ICszMTI2LDI4IEBAIHN0YXRpYyB2b2lkIHNrbF9kZGJfZW50cnlfaW5p dF9mcm9tX2h3KHN0cnVjdAo+IHNrbF9kZGJfZW50cnkgKmVudHJ5LCB1MzIgcmVnKQo+IMKgdm9p ZCBza2xfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gwqAJCQnCoMKgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiIC8qIG91dCAqLykKPiDC oHsKPiAtCWVudW0gcGlwZSBwaXBlOwo+IC0JaW50IHBsYW5lOwo+ICsJc3RydWN0IGludGVsX2Ny dGMgKmNydGM7Cj4gwqAJdTMyIHZhbDsKPiDCoAo+IMKgCW1lbXNldChkZGIsIDAsIHNpemVvZigq ZGRiKSk7Cj4gwqAKPiAtCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKPiArCWZvcl9l YWNoX2ludGVsX2NydGMoJmRldl9wcml2LT5kcm0sIGNydGMpIHsKPiDCoAkJZW51bSBpbnRlbF9k aXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Cj4gKwkJZW51bSBwbGFuZV9pZCBwbGFu ZV9pZDsKPiArCQllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gwqAKPiDCoAkJcG93ZXJf ZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJUEUocGlwZSk7Cj4gwqAJCWlmICghaW50ZWxfZGlzcGxh eV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwKPiBwb3dlcl9kb21haW4pKQo+IMKgCQkJ Y29udGludWU7Cj4gwqAKPiAtCQlmb3JfZWFjaF91bml2ZXJzYWxfcGxhbmUoZGV2X3ByaXYsIHBp cGUsIHBsYW5lKSB7Cj4gLQkJCXZhbCA9IEk5MTVfUkVBRChQTEFORV9CVUZfQ0ZHKHBpcGUsIHBs YW5lKSk7Cj4gLQkJCXNrbF9kZGJfZW50cnlfaW5pdF9mcm9tX2h3KCZkZGItCj4gPnBsYW5lW3Bp cGVdW3BsYW5lXSwKPiAtCQkJCQkJwqDCoMKgdmFsKTsKPiAtCQl9Cj4gKwkJZm9yX2VhY2hfcGxh bmVfaWRfb25fY3J0YyhjcnRjLCBwbGFuZV9pZCkgewo+ICsJCQlpZiAocGxhbmVfaWQgIT0gUExB TkVfQ1VSU09SKQo+ICsJCQkJdmFsID0gSTkxNV9SRUFEKFBMQU5FX0JVRl9DRkcocGlwZSwKPiBw bGFuZV9pZCkpOwo+ICsJCQllbHNlCj4gKwkJCQl2YWwgPSBJOTE1X1JFQUQoQ1VSX0JVRl9DRkco cGlwZSkpOwo+IMKgCj4gLQkJdmFsID0gSTkxNV9SRUFEKENVUl9CVUZfQ0ZHKHBpcGUpKTsKPiAt CQlza2xfZGRiX2VudHJ5X2luaXRfZnJvbV9odygmZGRiLQo+ID5wbGFuZVtwaXBlXVtQTEFORV9D VVJTT1JdLAo+IC0JCQkJCcKgwqDCoHZhbCk7Cj4gKwkJCXNrbF9kZGJfZW50cnlfaW5pdF9mcm9t X2h3KCZkZGItCj4gPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSwgdmFsKTsKPiArCQl9Cj4gwqAKPiDC oAkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7Cj4gwqAJ fQo+IEBAIC0zMjcwLDMwICszMjQ4LDMwIEBAIHNrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9y YXRlKHN0cnVjdAo+IGludGVsX2NydGNfc3RhdGUgKmludGVsX2NzdGF0ZSwKPiDCoAlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNzdGF0ZSA9ICZpbnRlbF9jc3RhdGUtPmJhc2U7Cj4gwqAJc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3N0YXRlLT5zdGF0ZTsKPiDCoAlzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZTsKPiAtCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmU7 Cj4gwqAJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlOwo+IC0JdW5zaWduZWQg aW50IHJhdGUsIHRvdGFsX2RhdGFfcmF0ZSA9IDA7Cj4gLQlpbnQgaWQ7Cj4gKwl1bnNpZ25lZCBp bnQgdG90YWxfZGF0YV9yYXRlID0gMDsKPiDCoAo+IMKgCWlmIChXQVJOX09OKCFzdGF0ZSkpCj4g wqAJCXJldHVybiAwOwo+IMKgCj4gwqAJLyogQ2FsY3VsYXRlIGFuZCBjYWNoZSBkYXRhIHJhdGUg Zm9yIGVhY2ggcGxhbmUgKi8KPiDCoAlkcm1fYXRvbWljX2NydGNfc3RhdGVfZm9yX2VhY2hfcGxh bmVfc3RhdGUocGxhbmUsIHBzdGF0ZSwKPiBjc3RhdGUpIHsKPiAtCQlpZCA9IHNrbF93bV9wbGFu ZV9pZCh0b19pbnRlbF9wbGFuZShwbGFuZSkpOwo+IC0JCWludGVsX3BsYW5lID0gdG9faW50ZWxf cGxhbmUocGxhbmUpOwo+ICsJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSB0b19pbnRlbF9wbGFu ZShwbGFuZSktPmlkOwo+ICsJCXVuc2lnbmVkIGludCByYXRlOwo+ICsKPiArCQkvKiBGSVhNRSBj dXJzb3Igc2hvdWxkbid0IGJlIGhlcmUgbm8/ICovCgpObywgYmVjYXVzZSBza2xfcGxhbmVfcmVs YXRpdmVfZGF0YV9yYXRlKCkgcmV0dXJucyAwIGZvciB0aGUgY3Vyc29yLgpOb3QgdGhhdCBJIGxp a2UgdGhlIGN1cnJlbnQgZGVzaWduLCBidXQgSSB0aGluayB0aGUgRklYTUUgY2FuIG1ha2UKdGhp bmdzIGV2ZW4gbW9yZSBjb25mdXNpbmcuIEkgc2VlIDMgb3B0aW9uczogKGkpIGp1c3QgcmVtb3Zl IHRoZSBGSVhNRTsKKGlpKSBhZGQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHdlIGRvbid0IGNo ZWNrIGZvciB0aGUgY3Vyc29yOyAoaWlpKQpqdXN0IGFkZCBhIGNoZWNrIGZvciB0aGUgY3Vyc29y IGhlcmUsIG1heWJlIHJlbW92aW5nIGl0IGZyb20Kc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFfcmF0 ZSgpLgoKCj4gwqAKPiDCoAkJLyogcGFja2VkL3V2ICovCj4gwqAJCXJhdGUgPSBza2xfcGxhbmVf cmVsYXRpdmVfZGF0YV9yYXRlKGludGVsX2NzdGF0ZSwKPiDCoAkJCQkJCcKgwqDCoMKgcHN0YXRl LCAwKTsKPiAtCQlwbGFuZV9kYXRhX3JhdGVbaWRdID0gcmF0ZTsKPiArCQlwbGFuZV9kYXRhX3Jh dGVbcGxhbmVfaWRdID0gcmF0ZTsKPiDCoAo+IMKgCQl0b3RhbF9kYXRhX3JhdGUgKz0gcmF0ZTsK PiDCoAo+IMKgCQkvKiB5LXBsYW5lICovCj4gwqAJCXJhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVf ZGF0YV9yYXRlKGludGVsX2NzdGF0ZSwKPiDCoAkJCQkJCcKgwqDCoMKgcHN0YXRlLCAxKTsKPiAt CQlwbGFuZV95X2RhdGFfcmF0ZVtpZF0gPSByYXRlOwo+ICsJCXBsYW5lX3lfZGF0YV9yYXRlW3Bs YW5lX2lkXSA9IHJhdGU7Cj4gwqAKPiDCoAkJdG90YWxfZGF0YV9yYXRlICs9IHJhdGU7Cj4gwqAJ fQo+IEBAIC0zMzcyLDE3ICszMzUwLDE2IEBAIHNrbF9kZGJfY2FsY19taW4oY29uc3Qgc3RydWN0 Cj4gaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLCBpbnQgbnVtX2FjdGl2ZSwKPiDCoAlzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZTsKPiDCoAo+IMKgCWRybV9hdG9taWNfY3J0Y19zdGF0ZV9mb3JfZWFj aF9wbGFuZV9zdGF0ZShwbGFuZSwgcHN0YXRlLAo+ICZjc3RhdGUtPmJhc2UpIHsKPiAtCQlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0KPiB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4g LQkJaW50IGlkID0gc2tsX3dtX3BsYW5lX2lkKGludGVsX3BsYW5lKTsKPiArCQllbnVtIHBsYW5l X2lkIHBsYW5lX2lkID0gdG9faW50ZWxfcGxhbmUocGxhbmUpLT5pZDsKPiDCoAo+IC0JCWlmIChp ZCA9PSBQTEFORV9DVVJTT1IpCj4gKwkJaWYgKHBsYW5lX2lkID09IFBMQU5FX0NVUlNPUikKPiDC oAkJCWNvbnRpbnVlOwo+IMKgCj4gwqAJCWlmICghcHN0YXRlLT52aXNpYmxlKQo+IMKgCQkJY29u dGludWU7Cj4gwqAKPiAtCQltaW5pbXVtW2lkXSA9IHNrbF9kZGJfbWluX2FsbG9jKHBzdGF0ZSwg MCk7Cj4gLQkJeV9taW5pbXVtW2lkXSA9IHNrbF9kZGJfbWluX2FsbG9jKHBzdGF0ZSwgMSk7Cj4g KwkJbWluaW11bVtwbGFuZV9pZF0gPSBza2xfZGRiX21pbl9hbGxvYyhwc3RhdGUsIDApOwo+ICsJ CXlfbWluaW11bVtwbGFuZV9pZF0gPSBza2xfZGRiX21pbl9hbGxvYyhwc3RhdGUsIDEpOwo+IMKg CX0KPiDCoAo+IMKgCW1pbmltdW1bUExBTkVfQ1VSU09SXSA9IHNrbF9jdXJzb3JfYWxsb2NhdGlv bihudW1fYWN0aXZlKTsKPiBAQCAtMzQwMiw4ICszMzc5LDggQEAgc2tsX2FsbG9jYXRlX3BpcGVf ZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gKmNzdGF0ZSwKPiDCoAl1aW50MTZfdCBtaW5p bXVtW0k5MTVfTUFYX1BMQU5FU10gPSB7fTsKPiDCoAl1aW50MTZfdCB5X21pbmltdW1bSTkxNV9N QVhfUExBTkVTXSA9IHt9Owo+IMKgCXVuc2lnbmVkIGludCB0b3RhbF9kYXRhX3JhdGU7Cj4gKwll bnVtIHBsYW5lX2lkIHBsYW5lX2lkOwo+IMKgCWludCBudW1fYWN0aXZlOwo+IC0JaW50IGlkLCBp Owo+IMKgCXVuc2lnbmVkIHBsYW5lX2RhdGFfcmF0ZVtJOTE1X01BWF9QTEFORVNdID0ge307Cj4g wqAJdW5zaWduZWQgcGxhbmVfeV9kYXRhX3JhdGVbSTkxNV9NQVhfUExBTkVTXSA9IHt9Owo+IMKg Cj4gQEAgLTM0MzgsOSArMzQxNSw5IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZQo+ICpjc3RhdGUsCj4gwqAJwqAqIHByb3BvcnRpb25hbCB0byB0aGUgZGF0 YSByYXRlLgo+IMKgCcKgKi8KPiDCoAo+IC0JZm9yIChpID0gMDsgaSA8IEk5MTVfTUFYX1BMQU5F UzsgaSsrKSB7Cj4gLQkJYWxsb2Nfc2l6ZSAtPSBtaW5pbXVtW2ldOwo+IC0JCWFsbG9jX3NpemUg LT0geV9taW5pbXVtW2ldOwo+ICsJZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRj LCBwbGFuZV9pZCkgewo+ICsJCWFsbG9jX3NpemUgLT0gbWluaW11bVtwbGFuZV9pZF07Cj4gKwkJ YWxsb2Nfc2l6ZSAtPSB5X21pbmltdW1bcGxhbmVfaWRdOwo+IMKgCX0KPiDCoAo+IMKgCWRkYi0+ cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXS5zdGFydCA9IGFsbG9jLT5lbmQgLQo+IG1pbmltdW1b UExBTkVfQ1VSU09SXTsKPiBAQCAtMzQ1OSwyOCArMzQzNiwyOCBAQCBza2xfYWxsb2NhdGVfcGlw ZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiAqY3N0YXRlLAo+IMKgCQlyZXR1cm4gMDsK PiDCoAo+IMKgCXN0YXJ0ID0gYWxsb2MtPnN0YXJ0Owo+IC0JZm9yIChpZCA9IDA7IGlkIDwgSTkx NV9NQVhfUExBTkVTOyBpZCsrKSB7Cj4gKwlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGludGVs X2NydGMsIHBsYW5lX2lkKSB7Cj4gwqAJCXVuc2lnbmVkIGludCBkYXRhX3JhdGUsIHlfZGF0YV9y YXRlOwo+IMKgCQl1aW50MTZfdCBwbGFuZV9ibG9ja3MsIHlfcGxhbmVfYmxvY2tzID0gMDsKPiDC oAo+IC0JCWlmIChpZCA9PSBQTEFORV9DVVJTT1IpCj4gKwkJaWYgKHBsYW5lX2lkID09IFBMQU5F X0NVUlNPUikKPiDCoAkJCWNvbnRpbnVlOwo+IMKgCj4gLQkJZGF0YV9yYXRlID0gcGxhbmVfZGF0 YV9yYXRlW2lkXTsKPiArCQlkYXRhX3JhdGUgPSBwbGFuZV9kYXRhX3JhdGVbcGxhbmVfaWRdOwo+ IMKgCj4gwqAJCS8qCj4gwqAJCcKgKiBhbGxvY2F0aW9uIGZvciAocGFja2VkIGZvcm1hdHMpIG9y ICh1di1wbGFuZSBwYXJ0Cj4gb2YgcGxhbmFyIGZvcm1hdCk6Cj4gwqAJCcKgKiBwcm9tb3RlIHRo ZSBleHByZXNzaW9uIHRvIDY0IGJpdHMgdG8gYXZvaWQKPiBvdmVyZmxvd2luZywgdGhlCj4gwqAJ CcKgKiByZXN1bHQgaXMgPCBhdmFpbGFibGUgYXMgZGF0YV9yYXRlIC8KPiB0b3RhbF9kYXRhX3Jh dGUgPCAxCj4gwqAJCcKgKi8KPiAtCQlwbGFuZV9ibG9ja3MgPSBtaW5pbXVtW2lkXTsKPiArCQlw bGFuZV9ibG9ja3MgPSBtaW5pbXVtW3BsYW5lX2lkXTsKPiDCoAkJcGxhbmVfYmxvY2tzICs9IGRp dl91NjQoKHVpbnQ2NF90KWFsbG9jX3NpemUgKgo+IGRhdGFfcmF0ZSwKPiDCoAkJCQkJdG90YWxf ZGF0YV9yYXRlKTsKPiDCoAo+IMKgCQkvKiBMZWF2ZSBkaXNhYmxlZCBwbGFuZXMgYXQgKDAsMCkg Ki8KPiDCoAkJaWYgKGRhdGFfcmF0ZSkgewo+IC0JCQlkZGItPnBsYW5lW3BpcGVdW2lkXS5zdGFy dCA9IHN0YXJ0Owo+IC0JCQlkZGItPnBsYW5lW3BpcGVdW2lkXS5lbmQgPSBzdGFydCArCj4gcGxh bmVfYmxvY2tzOwo+ICsJCQlkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXS5zdGFydCA9IHN0YXJ0 Owo+ICsJCQlkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXS5lbmQgPSBzdGFydCArCj4gcGxhbmVf YmxvY2tzOwo+IMKgCQl9Cj4gwqAKPiDCoAkJc3RhcnQgKz0gcGxhbmVfYmxvY2tzOwo+IEBAIC0z NDg4LDE1ICszNDY1LDE1IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZQo+ICpjc3RhdGUsCj4gwqAJCS8qCj4gwqAJCcKgKiBhbGxvY2F0aW9uIGZvciB5X3Bs YW5lIHBhcnQgb2YgcGxhbmFyIGZvcm1hdDoKPiDCoAkJwqAqLwo+IC0JCXlfZGF0YV9yYXRlID0g cGxhbmVfeV9kYXRhX3JhdGVbaWRdOwo+ICsJCXlfZGF0YV9yYXRlID0gcGxhbmVfeV9kYXRhX3Jh dGVbcGxhbmVfaWRdOwo+IMKgCj4gLQkJeV9wbGFuZV9ibG9ja3MgPSB5X21pbmltdW1baWRdOwo+ ICsJCXlfcGxhbmVfYmxvY2tzID0geV9taW5pbXVtW3BsYW5lX2lkXTsKPiDCoAkJeV9wbGFuZV9i bG9ja3MgKz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqCj4geV9kYXRhX3JhdGUsCj4g wqAJCQkJCXRvdGFsX2RhdGFfcmF0ZSk7Cj4gwqAKPiDCoAkJaWYgKHlfZGF0YV9yYXRlKSB7Cj4g LQkJCWRkYi0+eV9wbGFuZVtwaXBlXVtpZF0uc3RhcnQgPSBzdGFydDsKPiAtCQkJZGRiLT55X3Bs YW5lW3BpcGVdW2lkXS5lbmQgPSBzdGFydCArCj4geV9wbGFuZV9ibG9ja3M7Cj4gKwkJCWRkYi0+ eV9wbGFuZVtwaXBlXVtwbGFuZV9pZF0uc3RhcnQgPSBzdGFydDsKPiArCQkJZGRiLT55X3BsYW5l W3BpcGVdW3BsYW5lX2lkXS5lbmQgPSBzdGFydCArCj4geV9wbGFuZV9ibG9ja3M7Cj4gwqAJCX0K PiDCoAo+IMKgCQlzdGFydCArPSB5X3BsYW5lX2Jsb2NrczsKPiBAQCAtMzY4OCwxMSArMzY2NSw4 IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0Cj4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJCQlyZXR1cm4gMDsKPiDCoAkJfSBlbHNlIHsKPiDC oAkJCURSTV9ERUJVR19LTVMoIlJlcXVlc3RlZCBkaXNwbGF5Cj4gY29uZmlndXJhdGlvbiBleGNl ZWRzIHN5c3RlbSB3YXRlcm1hcmsgbGltaXRhdGlvbnNcbiIpOwo+IC0JCQlEUk1fREVCVUdfS01T KCJQbGFuZSAlZC4lZDogYmxvY2tzIHJlcXVpcmVkCj4gPSAldS8ldSwgbGluZXMgcmVxdWlyZWQg PSAldS8zMVxuIiwKPiAtCQkJCcKgwqDCoMKgwqDCoHRvX2ludGVsX2NydGMoY3N0YXRlLQo+ID5i YXNlLmNydGMpLT5waXBlLAo+IC0JCQkJwqDCoMKgwqDCoMKgc2tsX3dtX3BsYW5lX2lkKHRvX2lu dGVsX3BsYW5lCj4gKHBzdGF0ZS0+cGxhbmUpKSwKPiAtCQkJCcKgwqDCoMKgwqDCoHJlc19ibG9j a3MsIGRkYl9hbGxvY2F0aW9uLAo+IHJlc19saW5lcyk7Cj4gLQo+ICsJCQlEUk1fREVCVUdfS01T KCIlczogYmxvY2tzIHJlcXVpcmVkID0gJXUvJXUsCj4gbGluZXMgcmVxdWlyZWQgPSAldS8zMVxu IiwKPiArCQkJCcKgwqDCoMKgwqDCoHBzdGF0ZS0+cGxhbmUtPm5hbWUsCj4gcmVzX2Jsb2Nrcywg ZGRiX2FsbG9jYXRpb24sIHJlc19saW5lcyk7CgpGZWVscyBsaWtlIHRoaXMgYmVsb25ncyB0byBh IHNlcGFyYXRlIHBhdGNoLi4uCgpDYW4ndCB3ZSBrZWVwIHRoZSAiUGxhbmUiIHdvcmQgaGVyZT8g T3IgbWF5YmUsIHdoeSBub3QgZG8gbGlrZSB0aGUKb3RoZXIgZGVidWcgcHJpbnRzIHdlIGhhdmUg YW5kIGRvwqBbUExBTkU6JWQ6JXNdPwoKRXZlcnl0aGluZyBlbHNlIGxvb2tzIGNvcnJlY3QuIFdp dGggdGhlIGNvbW1lbnRzIGFkZHJlc3NlZDoKUmV2aWV3ZWQtYnk6IFBhdWxvIFphbm9uaSA8cGF1 bG8uci56YW5vbmlAaW50ZWwuY29tPgoKPiDCoAkJCXJldHVybiAtRUlOVkFMOwo+IMKgCQl9Cj4g wqAJfQo+IEBAIC0zNzE5LDcgKzM2OTMsNiBAQCBza2xfY29tcHV0ZV93bV9sZXZlbChjb25zdCBz dHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAl1aW50MTZfdCBkZGJfYmxv Y2tzOwo+IMKgCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiDCoAlpbnQgcmV0 Owo+IC0JaW50IGkgPSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOwo+IMKgCj4gwqAJaWYg KHN0YXRlKQo+IMKgCQlpbnRlbF9wc3RhdGUgPQo+IEBAIC0zNzQyLDcgKzM3MTUsNyBAQCBza2xf Y29tcHV0ZV93bV9sZXZlbChjb25zdCBzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiDCoAo+IMKgCVdBUk5fT04oIWludGVsX3BzdGF0ZS0+YmFzZS5mYik7Cj4gwqAKPiAtCWRk Yl9ibG9ja3MgPSBza2xfZGRiX2VudHJ5X3NpemUoJmRkYi0+cGxhbmVbcGlwZV1baV0pOwo+ICsJ ZGRiX2Jsb2NrcyA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmZGRiLQo+ID5wbGFuZVtwaXBlXVtpbnRl bF9wbGFuZS0+aWRdKTsKPiDCoAo+IMKgCXJldCA9IHNrbF9jb21wdXRlX3BsYW5lX3dtKGRldl9w cml2LAo+IMKgCQkJCcKgwqDCoGNzdGF0ZSwKPiBAQCAtMzgwNSw3ICszNzc4LDcgQEAgc3RhdGlj IGludCBza2xfYnVpbGRfcGlwZV93bShzdHJ1Y3QKPiBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUs Cj4gwqAJZm9yX2VhY2hfaW50ZWxfcGxhbmVfbWFzaygmZGV2X3ByaXYtPmRybSwKPiDCoAkJCQnC oMKgaW50ZWxfcGxhbmUsCj4gwqAJCQkJwqDCoGNzdGF0ZS0+YmFzZS5wbGFuZV9tYXNrKSB7Cj4g LQkJd20gPSAmcGlwZV93bS0+cGxhbmVzW3NrbF93bV9wbGFuZV9pZChpbnRlbF9wbGFuZSldOwo+ ICsJCXdtID0gJnBpcGVfd20tPnBsYW5lc1tpbnRlbF9wbGFuZS0+aWRdOwo+IMKgCj4gwqAJCWZv ciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiDCoAkJCXJldCA9 IHNrbF9jb21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBkZGIsCj4gY3N0YXRlLAo+IEBAIC0zODQ5 LDcgKzM4MjIsNyBAQCBzdGF0aWMgdm9pZCBza2xfd3JpdGVfd21fbGV2ZWwoc3RydWN0Cj4gZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqB2b2lkIHNrbF93cml0ZV9wbGFuZV93bShzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiDCoAkJCWNvbnN0IHN0cnVjdCBza2xfcGxhbmVf d20gKndtLAo+IMKgCQkJY29uc3Qgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiLAo+IC0J CQlpbnQgcGxhbmUpCj4gKwkJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQpCj4gwqB7Cj4gwqAJc3Ry dWN0IGRybV9jcnRjICpjcnRjID0gJmludGVsX2NydGMtPmJhc2U7Cj4gwqAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiBAQCAtMzg1OCwxNiArMzgzMSwxNiBAQCB2b2lkIHNr bF93cml0ZV9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0Ywo+ICppbnRlbF9jcnRjLAo+IMKgCWVu dW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiDCoAo+IMKgCWZvciAobGV2ZWwgPSAw OyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiAtCQlza2xfd3JpdGVfd21fbGV2ZWwo ZGV2X3ByaXYsIFBMQU5FX1dNKHBpcGUsIHBsYW5lLAo+IGxldmVsKSwKPiArCQlza2xfd3JpdGVf d21fbGV2ZWwoZGV2X3ByaXYsIFBMQU5FX1dNKHBpcGUsCj4gcGxhbmVfaWQsIGxldmVsKSwKPiDC oAkJCQnCoMKgwqAmd20tPndtW2xldmVsXSk7Cj4gwqAJfQo+IC0Jc2tsX3dyaXRlX3dtX2xldmVs KGRldl9wcml2LCBQTEFORV9XTV9UUkFOUyhwaXBlLCBwbGFuZSksCj4gKwlza2xfd3JpdGVfd21f bGV2ZWwoZGV2X3ByaXYsIFBMQU5FX1dNX1RSQU5TKHBpcGUsIHBsYW5lX2lkKSwKPiDCoAkJCcKg wqDCoCZ3bS0+dHJhbnNfd20pOwo+IMKgCj4gLQlza2xfZGRiX2VudHJ5X3dyaXRlKGRldl9wcml2 LCBQTEFORV9CVUZfQ0ZHKHBpcGUsIHBsYW5lKSwKPiAtCQkJwqDCoMKgwqAmZGRiLT5wbGFuZVtw aXBlXVtwbGFuZV0pOwo+IC0Jc2tsX2RkYl9lbnRyeV93cml0ZShkZXZfcHJpdiwgUExBTkVfTlYx Ml9CVUZfQ0ZHKHBpcGUsCj4gcGxhbmUpLAo+IC0JCQnCoMKgwqDCoCZkZGItPnlfcGxhbmVbcGlw ZV1bcGxhbmVdKTsKPiArCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsIFBMQU5FX0JVRl9D RkcocGlwZSwgcGxhbmVfaWQpLAo+ICsJCQnCoMKgwqDCoCZkZGItPnBsYW5lW3BpcGVdW3BsYW5l X2lkXSk7Cj4gKwlza2xfZGRiX2VudHJ5X3dyaXRlKGRldl9wcml2LCBQTEFORV9OVjEyX0JVRl9D RkcocGlwZSwKPiBwbGFuZV9pZCksCj4gKwkJCcKgwqDCoMKgJmRkYi0+eV9wbGFuZVtwaXBlXVtw bGFuZV9pZF0pOwo+IMKgfQo+IMKgCj4gwqB2b2lkIHNrbF93cml0ZV9jdXJzb3Jfd20oc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gQEAgLTM5ODEsMTcgKzM5NTQsMTYgQEAgc2tsX2Rk Yl9hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0cnVjdAo+IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkK PiDCoAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPiDCoAlzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZTsKPiDCoAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4g LQlpbnQgaWQ7Cj4gwqAKPiDCoAlXQVJOX09OKCFkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRj X3N0YXRlKHN0YXRlLCBjcnRjKSk7Cj4gwqAKPiDCoAlkcm1fZm9yX2VhY2hfcGxhbmVfbWFzayhw bGFuZSwgZGV2LCBjc3RhdGUtPmJhc2UucGxhbmVfbWFzaykgCj4gewo+IC0JCWlkID0gc2tsX3dt X3BsYW5lX2lkKHRvX2ludGVsX3BsYW5lKHBsYW5lKSk7Cj4gKwkJZW51bSBwbGFuZV9pZCBwbGFu ZV9pZCA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKS0+aWQ7Cj4gwqAKPiAtCQlpZiAoc2tsX2RkYl9l bnRyeV9lcXVhbCgmY3VyX2RkYi0+cGxhbmVbcGlwZV1baWRdLAo+IC0JCQkJCSZuZXdfZGRiLT5w bGFuZVtwaXBlXVtpZF0pCj4gJiYKPiAtCQnCoMKgwqDCoHNrbF9kZGJfZW50cnlfZXF1YWwoJmN1 cl9kZGItPnlfcGxhbmVbcGlwZV1baWRdLAo+IC0JCQkJCSZuZXdfZGRiLQo+ID55X3BsYW5lW3Bp cGVdW2lkXSkpCj4gKwkJaWYgKHNrbF9kZGJfZW50cnlfZXF1YWwoJmN1cl9kZGItCj4gPnBsYW5l W3BpcGVdW3BsYW5lX2lkXSwKPiArCQkJCQkmbmV3X2RkYi0KPiA+cGxhbmVbcGlwZV1bcGxhbmVf aWRdKSAmJgo+ICsJCcKgwqDCoMKgc2tsX2RkYl9lbnRyeV9lcXVhbCgmY3VyX2RkYi0KPiA+eV9w bGFuZVtwaXBlXVtwbGFuZV9pZF0sCj4gKwkJCQkJJm5ld19kZGItCj4gPnlfcGxhbmVbcGlwZV1b cGxhbmVfaWRdKSkKPiDCoAkJCWNvbnRpbnVlOwo+IMKgCj4gwqAJCXBsYW5lX3N0YXRlID0gZHJt X2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsCj4gcGxhbmUpOwo+IEBAIC00MTAzLDcgKzQw NzUsNiBAQCBza2xfcHJpbnRfd21fY2hhbmdlcyhjb25zdCBzdHJ1Y3QKPiBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKPiDCoAljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+ IMKgCWNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm9sZF9kZGIgPSAmZGV2X3ByaXYt Cj4gPndtLnNrbF9ody5kZGI7Cj4gwqAJY29uc3Qgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAq bmV3X2RkYiA9ICZpbnRlbF9zdGF0ZS0KPiA+d21fcmVzdWx0cy5kZGI7Cj4gLQlpbnQgaWQ7Cj4g wqAJaW50IGk7Cj4gwqAKPiDCoAlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBj c3RhdGUsIGkpIHsKPiBAQCAtNDExMSwxMSArNDA4MiwxMSBAQCBza2xfcHJpbnRfd21fY2hhbmdl cyhjb25zdCBzdHJ1Y3QKPiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiDCoAkJZW51bSBwaXBl IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IMKgCj4gwqAJCWZvcl9lYWNoX2ludGVsX3BsYW5l X29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLAo+IGludGVsX3BsYW5lKSB7Cj4gKwkJCWVudW0gcGxh bmVfaWQgcGxhbmVfaWQgPSBpbnRlbF9wbGFuZS0+aWQ7Cj4gwqAJCQljb25zdCBzdHJ1Y3Qgc2ts X2RkYl9lbnRyeSAqb2xkLCAqbmV3Owo+IMKgCj4gLQkJCWlkID0gc2tsX3dtX3BsYW5lX2lkKGlu dGVsX3BsYW5lKTsKPiAtCQkJb2xkID0gJm9sZF9kZGItPnBsYW5lW3BpcGVdW2lkXTsKPiAtCQkJ bmV3ID0gJm5ld19kZGItPnBsYW5lW3BpcGVdW2lkXTsKPiArCQkJb2xkID0gJm9sZF9kZGItPnBs YW5lW3BpcGVdW3BsYW5lX2lkXTsKPiArCQkJbmV3ID0gJm5ld19kZGItPnBsYW5lW3BpcGVdW3Bs YW5lX2lkXTsKPiDCoAo+IMKgCQkJaWYgKHNrbF9kZGJfZW50cnlfZXF1YWwob2xkLCBuZXcpKQo+ IMKgCQkJCWNvbnRpbnVlOwo+IEBAIC00MjE5LDE0ICs0MTkwLDE2IEBAIHN0YXRpYyB2b2lkIHNr bF91cGRhdGVfd20oc3RydWN0IGludGVsX2NydGMKPiAqaW50ZWxfY3J0YykKPiDCoAnCoCogdGhl aXIgd2F0ZXJtYXJrcyB1cGRhdGVkIG9uY2Ugd2UgdXBkYXRlIHRoZWlyIHBsYW5lcy4KPiDCoAnC oCovCj4gwqAJaWYgKGludGVsX2NydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZV9jaGFuZ2VkKSB7Cj4g LQkJaW50IHBsYW5lOwo+IC0KPiAtCQlmb3JfZWFjaF91bml2ZXJzYWxfcGxhbmUoZGV2X3ByaXYs IHBpcGUsIHBsYW5lKQo+IC0JCQlza2xfd3JpdGVfcGxhbmVfd20oaW50ZWxfY3J0YywgJnBpcGVf d20tCj4gPnBsYW5lc1twbGFuZV0sCj4gLQkJCQkJwqDCoMKgJnJlc3VsdHMtPmRkYiwgcGxhbmUp Owo+ICsJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQ7Cj4gwqAKPiAtCQlza2xfd3JpdGVfY3Vyc29y X3dtKGludGVsX2NydGMsICZwaXBlX3dtLQo+ID5wbGFuZXNbUExBTkVfQ1VSU09SXSwKPiAtCQkJ CcKgwqDCoMKgJnJlc3VsdHMtPmRkYik7Cj4gKwkJZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0Yyhp bnRlbF9jcnRjLCBwbGFuZV9pZCkgewo+ICsJCQlpZiAocGxhbmVfaWQgIT0gUExBTkVfQ1VSU09S KQo+ICsJCQkJc2tsX3dyaXRlX3BsYW5lX3dtKGludGVsX2NydGMsCj4gJnBpcGVfd20tPnBsYW5l c1twbGFuZV9pZF0sCj4gKwkJCQkJCcKgwqDCoCZyZXN1bHRzLT5kZGIsCj4gcGxhbmVfaWQpOwo+ ICsJCQllbHNlCj4gKwkJCQlza2xfd3JpdGVfY3Vyc29yX3dtKGludGVsX2NydGMsCj4gJnBpcGVf d20tPnBsYW5lc1twbGFuZV9pZF0sCj4gKwkJCQkJCcKgwqDCoMKgJnJlc3VsdHMtPmRkYik7Cj4g KwkJfQo+IMKgCX0KPiDCoAo+IMKgCXNrbF9jb3B5X3dtX2Zvcl9waXBlKGh3X3ZhbHMsIHJlc3Vs dHMsIHBpcGUpOwo+IEBAIC00MzIzLDMyICs0Mjk2LDI5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZAo+ IHNrbF93bV9sZXZlbF9mcm9tX3JlZ192YWwodWludDMyX3QgdmFsLAo+IMKgdm9pZCBza2xfcGlw ZV93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IMKgCQkJwqDCoMKgwqDC oMKgc3RydWN0IHNrbF9waXBlX3dtICpvdXQpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY3J0Yy0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjcnRjLT5kZXYpOwo+IMKgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmU7Cj4g LQlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bTsKPiDCoAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2Ny dGMtPnBpcGU7Cj4gLQlpbnQgbGV2ZWwsIGlkLCBtYXhfbGV2ZWw7Cj4gKwlpbnQgbGV2ZWwsIG1h eF9sZXZlbDsKPiArCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQ7Cj4gwqAJdWludDMyX3QgdmFsOwo+ IMKgCj4gwqAJbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7Cj4gwqAKPiAt CWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9wbGFu ZSkgewo+IC0JCWlkID0gc2tsX3dtX3BsYW5lX2lkKGludGVsX3BsYW5lKTsKPiAtCQl3bSA9ICZv dXQtPnBsYW5lc1tpZF07Cj4gKwlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGludGVsX2NydGMs IHBsYW5lX2lkKSB7Cj4gKwkJc3RydWN0IHNrbF9wbGFuZV93bSAqd20gPSAmb3V0LT5wbGFuZXNb cGxhbmVfaWRdOwo+IMKgCj4gwqAJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7 IGxldmVsKyspIHsKPiAtCQkJaWYgKGlkICE9IFBMQU5FX0NVUlNPUikKPiAtCQkJCXZhbCA9IEk5 MTVfUkVBRChQTEFORV9XTShwaXBlLCBpZCwKPiBsZXZlbCkpOwo+ICsJCQlpZiAocGxhbmVfaWQg IT0gUExBTkVfQ1VSU09SKQo+ICsJCQkJdmFsID0gSTkxNV9SRUFEKFBMQU5FX1dNKHBpcGUsCj4g cGxhbmVfaWQsIGxldmVsKSk7Cj4gwqAJCQllbHNlCj4gwqAJCQkJdmFsID0gSTkxNV9SRUFEKENV Ul9XTShwaXBlLAo+IGxldmVsKSk7Cj4gwqAKPiDCoAkJCXNrbF93bV9sZXZlbF9mcm9tX3JlZ192 YWwodmFsLCAmd20tCj4gPndtW2xldmVsXSk7Cj4gwqAJCX0KPiDCoAo+IC0JCWlmIChpZCAhPSBQ TEFORV9DVVJTT1IpCj4gLQkJCXZhbCA9IEk5MTVfUkVBRChQTEFORV9XTV9UUkFOUyhwaXBlLCBp ZCkpOwo+ICsJCWlmIChwbGFuZV9pZCAhPSBQTEFORV9DVVJTT1IpCj4gKwkJCXZhbCA9IEk5MTVf UkVBRChQTEFORV9XTV9UUkFOUyhwaXBlLAo+IHBsYW5lX2lkKSk7Cj4gwqAJCWVsc2UKPiDCoAkJ CXZhbCA9IEk5MTVfUkVBRChDVVJfV01fVFJBTlMocGlwZSkpOwo+IMKgCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=