From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 4/9] drm/i915: Use enum plane_id in SKL wm code Date: Thu, 17 Nov 2016 22:04:17 +0200 Message-ID: <20161117200417.GF31595@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> <1479409933.2382.35.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 47FAD6E870 for ; Thu, 17 Nov 2016 20:04:22 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1479409933.2382.35.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paulo Zanoni Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBOb3YgMTcsIDIwMTYgYXQgMDU6MTI6MTNQTSAtMDIwMCwgUGF1bG8gWmFub25pIHdy b3RlOgo+IEVtIFF1YSwgMjAxNi0xMS0wOSDDoHMgMTc6MDMgKzAyMDAsIHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tCj4gZXNjcmV2ZXU6Cj4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gCj4gPiBOdWtlIHNrbF93bV9wbGFuZV9p ZCgpIGFuZCBqdXN0IHVzZSB0aGUgbmV3IGludGVsX3BsYW5lLT5pZC4KPiA+IAo+ID4gdjI6IENv bnZlcnQgc2tsX3dyaXRlX3BsYW5lX3dtKCkgYXMgd2VsbAo+ID4gdjM6IENvbnZlcnQgc2tsX3Bp cGVfd21fZ2V0X2h3X3N0YXRlKCkgY29ycmVjdGx5Cj4gCj4gSW4gZ2VuZXJhbCwgSSByZWFsbHkg bGlrZSB0aGUgZmFjdCB0aGF0IHdlIHVuaWZpZWQgcGxhbmUvaWQvaSBpbnRvIGp1c3QKPiBwbGFu ZV9pZC4KPiAKPiBJbiBnZW5lcmFsLCBJIGRpc2xpa2UgdGhlIGZhY3QgdGhhdCBtYW55IG5ldyBs aW5lcyBnbyBwYXN0IDgwIGNvbHVtbnMKPiBub3cgOikuCj4gCj4gQSBmZXcgY29tbWVudHMgZm9s bG93Ogo+IAo+ID4gCj4gPiBDYzogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNv bT4KPiA+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiA+IENj OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ ID4gQ2M6IEx5dWRlIDxjcGF1bEByZWRoYXQuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IC0tLQo+ID4gwqBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCB8wqDCoMKgMiArLQo+ID4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jwqDCoHwgMTgwICsrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tCj4gPiAtLS0tLS0tLS0tCj4gPiDCoDIgZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9u cygrKSwgMTA2IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiA+IGluZGV4IGEzYzY5NmQ4YmY5My4uNmE0Y2Q2ZWRhZmE1IDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gPiBAQCAtMTc1MSw3ICsxNzUxLDcgQEAgdm9pZCBza2xfd3Jp dGVfY3Vyc29yX3dtKHN0cnVjdCBpbnRlbF9jcnRjCj4gPiAqaW50ZWxfY3J0YywKPiA+IMKgdm9p ZCBza2xfd3JpdGVfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gPiDC oAkJCWNvbnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKndtLAo+ID4gwqAJCQljb25zdCBzdHJ1Y3Qg c2tsX2RkYl9hbGxvY2F0aW9uICpkZGIsCj4gPiAtCQkJaW50IHBsYW5lKTsKPiA+ICsJCQllbnVt IHBsYW5lX2lkIHBsYW5lX2lkKTsKPiA+IMKgdWludDMyX3QgaWxrX3BpcGVfcGl4ZWxfcmF0ZShj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4gKnBpcGVfY29uZmlnKTsKPiA+IMKgYm9v bCBpbGtfZGlzYWJsZV9scF93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+IMKgaW50IHNh bml0aXplX3JjNl9vcHRpb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQK PiA+IGVuYWJsZV9yYzYpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gaW5kZXgg ODhlMjhjOTg5YjljLi5iYWU3ZWVhNmRlMTYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCj4gPiBAQCAtMjg2MywyOCArMjg2Myw2IEBAIGJvb2wgaWxrX2Rpc2FibGVfbHBfd20oc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiA+IMKgI2RlZmluZSBTS0xfU0FHVl9CTE9DS19USU1FCTMw IC8qIMK1cyAqLwo+ID4gwqAKPiA+IMKgLyoKPiA+IC0gKiBSZXR1cm4gdGhlIGluZGV4IG9mIGEg cGxhbmUgaW4gdGhlIFNLTCBEREIgYW5kIHdtIHJlc3VsdAo+ID4gYXJyYXlzLsKgwqBQcmltYXJ5 Cj4gPiAtICogcGxhbmUgaXMgYWx3YXlzIGluIHNsb3QgMCwgY3Vyc29yIGlzIGFsd2F5cyBpbiBz bG90Cj4gPiBJOTE1X01BWF9QTEFORVMtMSwgYW5kCj4gPiAtICogb3RoZXIgdW5pdmVyc2FsIHBs YW5lcyBhcmUgaW4gaW5kaWNlcyAxLi5uLsKgwqBOb3RlIHRoYXQgdGhpcyBtYXkKPiA+IGxlYXZl IHVudXNlZAo+ID4gLSAqIGluZGljZXMgYmV0d2VlbiB0aGUgdG9wICJzcHJpdGUiIHBsYW5lIGFu ZCB0aGUgY3Vyc29yLgo+ID4gLSAqLwo+ID4gLXN0YXRpYyBpbnQKPiA+IC1za2xfd21fcGxhbmVf aWQoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSkKPiA+IC17Cj4gPiAtCXN3aXRjaCAo cGxhbmUtPmJhc2UudHlwZSkgewo+ID4gLQljYXNlIERSTV9QTEFORV9UWVBFX1BSSU1BUlk6Cj4g PiAtCQlyZXR1cm4gMDsKPiA+IC0JY2FzZSBEUk1fUExBTkVfVFlQRV9DVVJTT1I6Cj4gPiAtCQly ZXR1cm4gUExBTkVfQ1VSU09SOwo+ID4gLQljYXNlIERSTV9QTEFORV9UWVBFX09WRVJMQVk6Cj4g PiAtCQlyZXR1cm4gcGxhbmUtPnBsYW5lICsgMTsKPiA+IC0JZGVmYXVsdDoKPiA+IC0JCU1JU1NJ TkdfQ0FTRShwbGFuZS0+YmFzZS50eXBlKTsKPiA+IC0JCXJldHVybiBwbGFuZS0+cGxhbmU7Cj4g PiAtCX0KPiA+IC19Cj4gPiAtCj4gPiAtLyoKPiA+IMKgICogRklYTUU6IFdlIHN0aWxsIGRvbid0 IGhhdmUgdGhlIHByb3BlciBjb2RlIGRldGVjdCBpZiB3ZSBuZWVkIHRvCj4gPiBhcHBseSB0aGUg V0EsCj4gPiDCoCAqIHNvIGFzc3VtZSB3ZSdsbCBhbHdheXMgbmVlZCBpdCBpbiBvcmRlciB0byBh dm9pZCB1bmRlcnJ1bnMuCj4gPiDCoCAqLwo+ID4gQEAgLTMwMjIsNyArMzAwMCw2IEBAIGJvb2wg aW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0cnVjdAo+ID4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp Cj4gPiDCoAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiA+IMKgCXN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmU7Cj4gPiDCoAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlOwo+ID4gLQlz dHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bTsKPiA+IMKgCWVudW0gcGlwZSBwaXBlOwo+ID4gwqAJaW50 IGxldmVsLCBsYXRlbmN5Owo+ID4gwqAKPiA+IEBAIC0zMDQ5LDcgKzMwMjYsOCBAQCBib29sIGlu dGVsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QKPiA+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ ID4gwqAJCXJldHVybiBmYWxzZTsKPiA+IMKgCj4gPiDCoAlmb3JfZWFjaF9pbnRlbF9wbGFuZV9v bl9jcnRjKGRldiwgY3J0YywgcGxhbmUpIHsKPiA+IC0JCXdtID0gJmNzdGF0ZS0KPiA+ID53bS5z a2wub3B0aW1hbC5wbGFuZXNbc2tsX3dtX3BsYW5lX2lkKHBsYW5lKV07Cj4gPiArCQlzdHJ1Y3Qg c2tsX3BsYW5lX3dtICp3bSA9Cj4gPiArCQkJJmNzdGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVz W3BsYW5lLT5pZF07Cj4gPiDCoAo+ID4gwqAJCS8qIFNraXAgdGhpcyBwbGFuZSBpZiBpdCdzIG5v dCBlbmFibGVkICovCj4gPiDCoAkJaWYgKCF3bS0+d21bMF0ucGxhbmVfZW4pCj4gPiBAQCAtMzE0 OCwyOCArMzEyNiwyOCBAQCBzdGF0aWMgdm9pZCBza2xfZGRiX2VudHJ5X2luaXRfZnJvbV9odyhz dHJ1Y3QKPiA+IHNrbF9kZGJfZW50cnkgKmVudHJ5LCB1MzIgcmVnKQo+ID4gwqB2b2lkIHNrbF9k ZGJfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IMKg CQkJwqDCoHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pCj4gPiDCoHsK PiA+IC0JZW51bSBwaXBlIHBpcGU7Cj4gPiAtCWludCBwbGFuZTsKPiA+ICsJc3RydWN0IGludGVs X2NydGMgKmNydGM7Cj4gPiDCoAl1MzIgdmFsOwo+ID4gwqAKPiA+IMKgCW1lbXNldChkZGIsIDAs IHNpemVvZigqZGRiKSk7Cj4gPiDCoAo+ID4gLQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBl KSB7Cj4gPiArCWZvcl9lYWNoX2ludGVsX2NydGMoJmRldl9wcml2LT5kcm0sIGNydGMpIHsKPiA+ IMKgCQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBvd2VyX2RvbWFpbjsKPiA+ICsJ CWVudW0gcGxhbmVfaWQgcGxhbmVfaWQ7Cj4gPiArCQllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBp cGU7Cj4gPiDCoAo+ID4gwqAJCXBvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJTl9QSVBFKHBpcGUp Owo+ID4gwqAJCWlmICghaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJp diwKPiA+IHBvd2VyX2RvbWFpbikpCj4gPiDCoAkJCWNvbnRpbnVlOwo+ID4gwqAKPiA+IC0JCWZv cl9lYWNoX3VuaXZlcnNhbF9wbGFuZShkZXZfcHJpdiwgcGlwZSwgcGxhbmUpIHsKPiA+IC0JCQl2 YWwgPSBJOTE1X1JFQUQoUExBTkVfQlVGX0NGRyhwaXBlLCBwbGFuZSkpOwo+ID4gLQkJCXNrbF9k ZGJfZW50cnlfaW5pdF9mcm9tX2h3KCZkZGItCj4gPiA+cGxhbmVbcGlwZV1bcGxhbmVdLAo+ID4g LQkJCQkJCcKgwqDCoHZhbCk7Cj4gPiAtCQl9Cj4gPiArCQlmb3JfZWFjaF9wbGFuZV9pZF9vbl9j cnRjKGNydGMsIHBsYW5lX2lkKSB7Cj4gPiArCQkJaWYgKHBsYW5lX2lkICE9IFBMQU5FX0NVUlNP UikKPiA+ICsJCQkJdmFsID0gSTkxNV9SRUFEKFBMQU5FX0JVRl9DRkcocGlwZSwKPiA+IHBsYW5l X2lkKSk7Cj4gPiArCQkJZWxzZQo+ID4gKwkJCQl2YWwgPSBJOTE1X1JFQUQoQ1VSX0JVRl9DRkco cGlwZSkpOwo+ID4gwqAKPiA+IC0JCXZhbCA9IEk5MTVfUkVBRChDVVJfQlVGX0NGRyhwaXBlKSk7 Cj4gPiAtCQlza2xfZGRiX2VudHJ5X2luaXRfZnJvbV9odygmZGRiLQo+ID4gPnBsYW5lW3BpcGVd W1BMQU5FX0NVUlNPUl0sCj4gPiAtCQkJCQnCoMKgwqB2YWwpOwo+ID4gKwkJCXNrbF9kZGJfZW50 cnlfaW5pdF9mcm9tX2h3KCZkZGItCj4gPiA+cGxhbmVbcGlwZV1bcGxhbmVfaWRdLCB2YWwpOwo+ ID4gKwkJfQo+ID4gwqAKPiA+IMKgCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwg cG93ZXJfZG9tYWluKTsKPiA+IMKgCX0KPiA+IEBAIC0zMjcwLDMwICszMjQ4LDMwIEBAIHNrbF9n ZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKHN0cnVjdAo+ID4gaW50ZWxfY3J0Y19zdGF0ZSAq aW50ZWxfY3N0YXRlLAo+ID4gwqAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGUgPSAmaW50 ZWxfY3N0YXRlLT5iYXNlOwo+ID4gwqAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0g Y3N0YXRlLT5zdGF0ZTsKPiA+IMKgCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ID4gLQljb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+ID4gwqAJY29uc3Qgc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqcHN0YXRlOwo+ID4gLQl1bnNpZ25lZCBpbnQgcmF0ZSwgdG90YWxfZGF0 YV9yYXRlID0gMDsKPiA+IC0JaW50IGlkOwo+ID4gKwl1bnNpZ25lZCBpbnQgdG90YWxfZGF0YV9y YXRlID0gMDsKPiA+IMKgCj4gPiDCoAlpZiAoV0FSTl9PTighc3RhdGUpKQo+ID4gwqAJCXJldHVy biAwOwo+ID4gwqAKPiA+IMKgCS8qIENhbGN1bGF0ZSBhbmQgY2FjaGUgZGF0YSByYXRlIGZvciBl YWNoIHBsYW5lICovCj4gPiDCoAlkcm1fYXRvbWljX2NydGNfc3RhdGVfZm9yX2VhY2hfcGxhbmVf c3RhdGUocGxhbmUsIHBzdGF0ZSwKPiA+IGNzdGF0ZSkgewo+ID4gLQkJaWQgPSBza2xfd21fcGxh bmVfaWQodG9faW50ZWxfcGxhbmUocGxhbmUpKTsKPiA+IC0JCWludGVsX3BsYW5lID0gdG9faW50 ZWxfcGxhbmUocGxhbmUpOwo+ID4gKwkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVs X3BsYW5lKHBsYW5lKS0+aWQ7Cj4gPiArCQl1bnNpZ25lZCBpbnQgcmF0ZTsKPiA+ICsKPiA+ICsJ CS8qIEZJWE1FIGN1cnNvciBzaG91bGRuJ3QgYmUgaGVyZSBubz8gKi8KPiAKPiBObywgYmVjYXVz ZSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKCkgcmV0dXJucyAwIGZvciB0aGUgY3Vyc29y Lgo+IE5vdCB0aGF0IEkgbGlrZSB0aGUgY3VycmVudCBkZXNpZ24sIGJ1dCBJIHRoaW5rIHRoZSBG SVhNRSBjYW4gbWFrZQo+IHRoaW5ncyBldmVuIG1vcmUgY29uZnVzaW5nLiBJIHNlZSAzIG9wdGlv bnM6IChpKSBqdXN0IHJlbW92ZSB0aGUgRklYTUU7Cj4gKGlpKSBhZGQgYSBjb21tZW50IGV4cGxh aW5pbmcgd2h5IHdlIGRvbid0IGNoZWNrIGZvciB0aGUgY3Vyc29yOyAoaWlpKQo+IGp1c3QgYWRk IGEgY2hlY2sgZm9yIHRoZSBjdXJzb3IgaGVyZSwgbWF5YmUgcmVtb3ZpbmcgaXQgZnJvbQo+IHNr bF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoKS4KClNob3VsZCBwcm9iYWJseSBtYWRlIGV4cGxp Y2l0IGhlcmUgYXMgSUlSQyBpdCdzIGV4cGxpY2l0IGluIHRoZSBwbGFjZQp3aGVyZSB0aGlzIGdl dHMgY29tcGFyZWQgdG8gdGhlIHBlci1wbGFuZSByYXRlLgoKPiAKPiAKPiA+IMKgCj4gPiDCoAkJ LyogcGFja2VkL3V2ICovCj4gPiDCoAkJcmF0ZSA9IHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3Jh dGUoaW50ZWxfY3N0YXRlLAo+ID4gwqAJCQkJCQnCoMKgwqDCoHBzdGF0ZSwgMCk7Cj4gPiAtCQlw bGFuZV9kYXRhX3JhdGVbaWRdID0gcmF0ZTsKPiA+ICsJCXBsYW5lX2RhdGFfcmF0ZVtwbGFuZV9p ZF0gPSByYXRlOwo+ID4gwqAKPiA+IMKgCQl0b3RhbF9kYXRhX3JhdGUgKz0gcmF0ZTsKPiA+IMKg Cj4gPiDCoAkJLyogeS1wbGFuZSAqLwo+ID4gwqAJCXJhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVf ZGF0YV9yYXRlKGludGVsX2NzdGF0ZSwKPiA+IMKgCQkJCQkJwqDCoMKgwqBwc3RhdGUsIDEpOwo+ ID4gLQkJcGxhbmVfeV9kYXRhX3JhdGVbaWRdID0gcmF0ZTsKPiA+ICsJCXBsYW5lX3lfZGF0YV9y YXRlW3BsYW5lX2lkXSA9IHJhdGU7Cj4gPiDCoAo+ID4gwqAJCXRvdGFsX2RhdGFfcmF0ZSArPSBy YXRlOwo+ID4gwqAJfQo+ID4gQEAgLTMzNzIsMTcgKzMzNTAsMTYgQEAgc2tsX2RkYl9jYWxjX21p bihjb25zdCBzdHJ1Y3QKPiA+IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwgaW50IG51bV9hY3Rp dmUsCj4gPiDCoAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiA+IMKgCj4gPiDCoAlkcm1fYXRv bWljX2NydGNfc3RhdGVfZm9yX2VhY2hfcGxhbmVfc3RhdGUocGxhbmUsIHBzdGF0ZSwKPiA+ICZj c3RhdGUtPmJhc2UpIHsKPiA+IC0JCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPQo+ ID4gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ID4gLQkJaW50IGlkID0gc2tsX3dtX3BsYW5lX2lk KGludGVsX3BsYW5lKTsKPiA+ICsJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSB0b19pbnRlbF9w bGFuZShwbGFuZSktPmlkOwo+ID4gwqAKPiA+IC0JCWlmIChpZCA9PSBQTEFORV9DVVJTT1IpCj4g PiArCQlpZiAocGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKQo+ID4gwqAJCQljb250aW51ZTsKPiA+ IMKgCj4gPiDCoAkJaWYgKCFwc3RhdGUtPnZpc2libGUpCj4gPiDCoAkJCWNvbnRpbnVlOwo+ID4g wqAKPiA+IC0JCW1pbmltdW1baWRdID0gc2tsX2RkYl9taW5fYWxsb2MocHN0YXRlLCAwKTsKPiA+ IC0JCXlfbWluaW11bVtpZF0gPSBza2xfZGRiX21pbl9hbGxvYyhwc3RhdGUsIDEpOwo+ID4gKwkJ bWluaW11bVtwbGFuZV9pZF0gPSBza2xfZGRiX21pbl9hbGxvYyhwc3RhdGUsIDApOwo+ID4gKwkJ eV9taW5pbXVtW3BsYW5lX2lkXSA9IHNrbF9kZGJfbWluX2FsbG9jKHBzdGF0ZSwgMSk7Cj4gPiDC oAl9Cj4gPiDCoAo+ID4gwqAJbWluaW11bVtQTEFORV9DVVJTT1JdID0gc2tsX2N1cnNvcl9hbGxv Y2F0aW9uKG51bV9hY3RpdmUpOwo+ID4gQEAgLTM0MDIsOCArMzM3OSw4IEBAIHNrbF9hbGxvY2F0 ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4gKmNzdGF0ZSwKPiA+IMKgCXVp bnQxNl90IG1pbmltdW1bSTkxNV9NQVhfUExBTkVTXSA9IHt9Owo+ID4gwqAJdWludDE2X3QgeV9t aW5pbXVtW0k5MTVfTUFYX1BMQU5FU10gPSB7fTsKPiA+IMKgCXVuc2lnbmVkIGludCB0b3RhbF9k YXRhX3JhdGU7Cj4gPiArCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQ7Cj4gPiDCoAlpbnQgbnVtX2Fj dGl2ZTsKPiA+IC0JaW50IGlkLCBpOwo+ID4gwqAJdW5zaWduZWQgcGxhbmVfZGF0YV9yYXRlW0k5 MTVfTUFYX1BMQU5FU10gPSB7fTsKPiA+IMKgCXVuc2lnbmVkIHBsYW5lX3lfZGF0YV9yYXRlW0k5 MTVfTUFYX1BMQU5FU10gPSB7fTsKPiA+IMKgCj4gPiBAQCAtMzQzOCw5ICszNDE1LDkgQEAgc2ts X2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gPiAqY3N0YXRlLAo+ ID4gwqAJwqAqIHByb3BvcnRpb25hbCB0byB0aGUgZGF0YSByYXRlLgo+ID4gwqAJwqAqLwo+ID4g wqAKPiA+IC0JZm9yIChpID0gMDsgaSA8IEk5MTVfTUFYX1BMQU5FUzsgaSsrKSB7Cj4gPiAtCQlh bGxvY19zaXplIC09IG1pbmltdW1baV07Cj4gPiAtCQlhbGxvY19zaXplIC09IHlfbWluaW11bVtp XTsKPiA+ICsJZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkg ewo+ID4gKwkJYWxsb2Nfc2l6ZSAtPSBtaW5pbXVtW3BsYW5lX2lkXTsKPiA+ICsJCWFsbG9jX3Np emUgLT0geV9taW5pbXVtW3BsYW5lX2lkXTsKPiA+IMKgCX0KPiA+IMKgCj4gPiDCoAlkZGItPnBs YW5lW3BpcGVdW1BMQU5FX0NVUlNPUl0uc3RhcnQgPSBhbGxvYy0+ZW5kIC0KPiA+IG1pbmltdW1b UExBTkVfQ1VSU09SXTsKPiA+IEBAIC0zNDU5LDI4ICszNDM2LDI4IEBAIHNrbF9hbGxvY2F0ZV9w aXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4gKmNzdGF0ZSwKPiA+IMKgCQlyZXR1 cm4gMDsKPiA+IMKgCj4gPiDCoAlzdGFydCA9IGFsbG9jLT5zdGFydDsKPiA+IC0JZm9yIChpZCA9 IDA7IGlkIDwgSTkxNV9NQVhfUExBTkVTOyBpZCsrKSB7Cj4gPiArCWZvcl9lYWNoX3BsYW5lX2lk X29uX2NydGMoaW50ZWxfY3J0YywgcGxhbmVfaWQpIHsKPiA+IMKgCQl1bnNpZ25lZCBpbnQgZGF0 YV9yYXRlLCB5X2RhdGFfcmF0ZTsKPiA+IMKgCQl1aW50MTZfdCBwbGFuZV9ibG9ja3MsIHlfcGxh bmVfYmxvY2tzID0gMDsKPiA+IMKgCj4gPiAtCQlpZiAoaWQgPT0gUExBTkVfQ1VSU09SKQo+ID4g KwkJaWYgKHBsYW5lX2lkID09IFBMQU5FX0NVUlNPUikKPiA+IMKgCQkJY29udGludWU7Cj4gPiDC oAo+ID4gLQkJZGF0YV9yYXRlID0gcGxhbmVfZGF0YV9yYXRlW2lkXTsKPiA+ICsJCWRhdGFfcmF0 ZSA9IHBsYW5lX2RhdGFfcmF0ZVtwbGFuZV9pZF07Cj4gPiDCoAo+ID4gwqAJCS8qCj4gPiDCoAkJ wqAqIGFsbG9jYXRpb24gZm9yIChwYWNrZWQgZm9ybWF0cykgb3IgKHV2LXBsYW5lIHBhcnQKPiA+ IG9mIHBsYW5hciBmb3JtYXQpOgo+ID4gwqAJCcKgKiBwcm9tb3RlIHRoZSBleHByZXNzaW9uIHRv IDY0IGJpdHMgdG8gYXZvaWQKPiA+IG92ZXJmbG93aW5nLCB0aGUKPiA+IMKgCQnCoCogcmVzdWx0 IGlzIDwgYXZhaWxhYmxlIGFzIGRhdGFfcmF0ZSAvCj4gPiB0b3RhbF9kYXRhX3JhdGUgPCAxCj4g PiDCoAkJwqAqLwo+ID4gLQkJcGxhbmVfYmxvY2tzID0gbWluaW11bVtpZF07Cj4gPiArCQlwbGFu ZV9ibG9ja3MgPSBtaW5pbXVtW3BsYW5lX2lkXTsKPiA+IMKgCQlwbGFuZV9ibG9ja3MgKz0gZGl2 X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqCj4gPiBkYXRhX3JhdGUsCj4gPiDCoAkJCQkJdG90 YWxfZGF0YV9yYXRlKTsKPiA+IMKgCj4gPiDCoAkJLyogTGVhdmUgZGlzYWJsZWQgcGxhbmVzIGF0 ICgwLDApICovCj4gPiDCoAkJaWYgKGRhdGFfcmF0ZSkgewo+ID4gLQkJCWRkYi0+cGxhbmVbcGlw ZV1baWRdLnN0YXJ0ID0gc3RhcnQ7Cj4gPiAtCQkJZGRiLT5wbGFuZVtwaXBlXVtpZF0uZW5kID0g c3RhcnQgKwo+ID4gcGxhbmVfYmxvY2tzOwo+ID4gKwkJCWRkYi0+cGxhbmVbcGlwZV1bcGxhbmVf aWRdLnN0YXJ0ID0gc3RhcnQ7Cj4gPiArCQkJZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV9pZF0uZW5k ID0gc3RhcnQgKwo+ID4gcGxhbmVfYmxvY2tzOwo+ID4gwqAJCX0KPiA+IMKgCj4gPiDCoAkJc3Rh cnQgKz0gcGxhbmVfYmxvY2tzOwo+ID4gQEAgLTM0ODgsMTUgKzM0NjUsMTUgQEAgc2tsX2FsbG9j YXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gPiAqY3N0YXRlLAo+ID4gwqAJ CS8qCj4gPiDCoAkJwqAqIGFsbG9jYXRpb24gZm9yIHlfcGxhbmUgcGFydCBvZiBwbGFuYXIgZm9y bWF0Ogo+ID4gwqAJCcKgKi8KPiA+IC0JCXlfZGF0YV9yYXRlID0gcGxhbmVfeV9kYXRhX3JhdGVb aWRdOwo+ID4gKwkJeV9kYXRhX3JhdGUgPSBwbGFuZV95X2RhdGFfcmF0ZVtwbGFuZV9pZF07Cj4g PiDCoAo+ID4gLQkJeV9wbGFuZV9ibG9ja3MgPSB5X21pbmltdW1baWRdOwo+ID4gKwkJeV9wbGFu ZV9ibG9ja3MgPSB5X21pbmltdW1bcGxhbmVfaWRdOwo+ID4gwqAJCXlfcGxhbmVfYmxvY2tzICs9 IGRpdl91NjQoKHVpbnQ2NF90KWFsbG9jX3NpemUgKgo+ID4geV9kYXRhX3JhdGUsCj4gPiDCoAkJ CQkJdG90YWxfZGF0YV9yYXRlKTsKPiA+IMKgCj4gPiDCoAkJaWYgKHlfZGF0YV9yYXRlKSB7Cj4g PiAtCQkJZGRiLT55X3BsYW5lW3BpcGVdW2lkXS5zdGFydCA9IHN0YXJ0Owo+ID4gLQkJCWRkYi0+ eV9wbGFuZVtwaXBlXVtpZF0uZW5kID0gc3RhcnQgKwo+ID4geV9wbGFuZV9ibG9ja3M7Cj4gPiAr CQkJZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lX2lkXS5zdGFydCA9IHN0YXJ0Owo+ID4gKwkJCWRk Yi0+eV9wbGFuZVtwaXBlXVtwbGFuZV9pZF0uZW5kID0gc3RhcnQgKwo+ID4geV9wbGFuZV9ibG9j a3M7Cj4gPiDCoAkJfQo+ID4gwqAKPiA+IMKgCQlzdGFydCArPSB5X3BsYW5lX2Jsb2NrczsKPiA+ IEBAIC0zNjg4LDExICszNjY1LDggQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShj b25zdCBzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gwqAJCQlyZXR1 cm4gMDsKPiA+IMKgCQl9IGVsc2Ugewo+ID4gwqAJCQlEUk1fREVCVUdfS01TKCJSZXF1ZXN0ZWQg ZGlzcGxheQo+ID4gY29uZmlndXJhdGlvbiBleGNlZWRzIHN5c3RlbSB3YXRlcm1hcmsgbGltaXRh dGlvbnNcbiIpOwo+ID4gLQkJCURSTV9ERUJVR19LTVMoIlBsYW5lICVkLiVkOiBibG9ja3MgcmVx dWlyZWQKPiA+ID0gJXUvJXUsIGxpbmVzIHJlcXVpcmVkID0gJXUvMzFcbiIsCj4gPiAtCQkJCcKg wqDCoMKgwqDCoHRvX2ludGVsX2NydGMoY3N0YXRlLQo+ID4gPmJhc2UuY3J0YyktPnBpcGUsCj4g PiAtCQkJCcKgwqDCoMKgwqDCoHNrbF93bV9wbGFuZV9pZCh0b19pbnRlbF9wbGFuZQo+ID4gKHBz dGF0ZS0+cGxhbmUpKSwKPiA+IC0JCQkJwqDCoMKgwqDCoMKgcmVzX2Jsb2NrcywgZGRiX2FsbG9j YXRpb24sCj4gPiByZXNfbGluZXMpOwo+ID4gLQo+ID4gKwkJCURSTV9ERUJVR19LTVMoIiVzOiBi bG9ja3MgcmVxdWlyZWQgPSAldS8ldSwKPiA+IGxpbmVzIHJlcXVpcmVkID0gJXUvMzFcbiIsCj4g PiArCQkJCcKgwqDCoMKgwqDCoHBzdGF0ZS0+cGxhbmUtPm5hbWUsCj4gPiByZXNfYmxvY2tzLCBk ZGJfYWxsb2NhdGlvbiwgcmVzX2xpbmVzKTsKPiAKPiBGZWVscyBsaWtlIHRoaXMgYmVsb25ncyB0 byBhIHNlcGFyYXRlIHBhdGNoLi4uCgpJIHN1cHBvc2VkIEkgY291bGQgc3BsaXQgaXQgb3V0IGlu dG8gYSBwcmVwIHBhdGNoLiBDYW4ndCBkbyBpdCBhcwphIGZpeHVwIHBhdGNoIHNpbmNlIEknZCBy YXRoZXIgbnVrZSBza2xfd21fcGxhbmVfaWQoKSBpbiBvbmUgZ28uCgo+IAo+IENhbid0IHdlIGtl ZXAgdGhlICJQbGFuZSIgd29yZCBoZXJlPyBPciBtYXliZSwgd2h5IG5vdCBkbyBsaWtlIHRoZQo+ IG90aGVyIGRlYnVnIHByaW50cyB3ZSBoYXZlIGFuZCBkb8KgW1BMQU5FOiVkOiVzXT8KClRoZSBw bGFuZSBuYW1lIGFscmVhZHkgaGFzICJwbGFuZSIgaW4gaXQuIFNvIG5hayBvbiB0aGUgaWRlYSBv ZiBrZWVwaW5nCiJQbGFuZSIgaGVyZSwgYnV0IEknbSBmaW5lIHdpdGggY29udmVydGluZyB0byB0 aGUgc3RhbmRhcmQgW1BMQU5FOi4uLl0Kbm90YXRpb24uCgo+IAo+IEV2ZXJ5dGhpbmcgZWxzZSBs b29rcyBjb3JyZWN0LiBXaXRoIHRoZSBjb21tZW50cyBhZGRyZXNzZWQ6Cj4gUmV2aWV3ZWQtYnk6 IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+IAo+ID4gwqAJCQlyZXR1 cm4gLUVJTlZBTDsKPiA+IMKgCQl9Cj4gPiDCoAl9Cj4gPiBAQCAtMzcxOSw3ICszNjkzLDYgQEAg c2tsX2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiA+IMKgCXVpbnQxNl90IGRkYl9ibG9ja3M7Cj4gPiDCoAllbnVtIHBpcGUgcGlw ZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gPiDCoAlpbnQgcmV0Owo+ID4gLQlpbnQgaSA9IHNrbF93 bV9wbGFuZV9pZChpbnRlbF9wbGFuZSk7Cj4gPiDCoAo+ID4gwqAJaWYgKHN0YXRlKQo+ID4gwqAJ CWludGVsX3BzdGF0ZSA9Cj4gPiBAQCAtMzc0Miw3ICszNzE1LDcgQEAgc2tsX2NvbXB1dGVfd21f bGV2ZWwoY29uc3Qgc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IMKg Cj4gPiDCoAlXQVJOX09OKCFpbnRlbF9wc3RhdGUtPmJhc2UuZmIpOwo+ID4gwqAKPiA+IC0JZGRi X2Jsb2NrcyA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmZGRiLT5wbGFuZVtwaXBlXVtpXSk7Cj4gPiAr CWRkYl9ibG9ja3MgPSBza2xfZGRiX2VudHJ5X3NpemUoJmRkYi0KPiA+ID5wbGFuZVtwaXBlXVtp bnRlbF9wbGFuZS0+aWRdKTsKPiA+IMKgCj4gPiDCoAlyZXQgPSBza2xfY29tcHV0ZV9wbGFuZV93 bShkZXZfcHJpdiwKPiA+IMKgCQkJCcKgwqDCoGNzdGF0ZSwKPiA+IEBAIC0zODA1LDcgKzM3Nzgs NyBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9waXBlX3dtKHN0cnVjdAo+ID4gaW50ZWxfY3J0Y19z dGF0ZSAqY3N0YXRlLAo+ID4gwqAJZm9yX2VhY2hfaW50ZWxfcGxhbmVfbWFzaygmZGV2X3ByaXYt PmRybSwKPiA+IMKgCQkJCcKgwqBpbnRlbF9wbGFuZSwKPiA+IMKgCQkJCcKgwqBjc3RhdGUtPmJh c2UucGxhbmVfbWFzaykgewo+ID4gLQkJd20gPSAmcGlwZV93bS0+cGxhbmVzW3NrbF93bV9wbGFu ZV9pZChpbnRlbF9wbGFuZSldOwo+ID4gKwkJd20gPSAmcGlwZV93bS0+cGxhbmVzW2ludGVsX3Bs YW5lLT5pZF07Cj4gPiDCoAo+ID4gwqAJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2 ZWw7IGxldmVsKyspIHsKPiA+IMKgCQkJcmV0ID0gc2tsX2NvbXB1dGVfd21fbGV2ZWwoZGV2X3By aXYsIGRkYiwKPiA+IGNzdGF0ZSwKPiA+IEBAIC0zODQ5LDcgKzM4MjIsNyBAQCBzdGF0aWMgdm9p ZCBza2xfd3JpdGVfd21fbGV2ZWwoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+IMKgdm9pZCBza2xfd3JpdGVfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMsCj4gPiDCoAkJCWNvbnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKndtLAo+ID4gwqAJCQlj b25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIsCj4gPiAtCQkJaW50IHBsYW5lKQo+ ID4gKwkJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQpCj4gPiDCoHsKPiA+IMKgCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9ICZpbnRlbF9jcnRjLT5iYXNlOwo+ID4gwqAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNydGMtPmRldjsKPiA+IEBAIC0zODU4LDE2ICszODMxLDE2IEBAIHZvaWQgc2tsX3dy aXRlX3BsYW5lX3dtKHN0cnVjdCBpbnRlbF9jcnRjCj4gPiAqaW50ZWxfY3J0YywKPiA+IMKgCWVu dW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+IMKgCj4gPiDCoAlmb3IgKGxldmVs ID0gMDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7Cj4gPiAtCQlza2xfd3JpdGVfd21f bGV2ZWwoZGV2X3ByaXYsIFBMQU5FX1dNKHBpcGUsIHBsYW5lLAo+ID4gbGV2ZWwpLAo+ID4gKwkJ c2tsX3dyaXRlX3dtX2xldmVsKGRldl9wcml2LCBQTEFORV9XTShwaXBlLAo+ID4gcGxhbmVfaWQs IGxldmVsKSwKPiA+IMKgCQkJCcKgwqDCoCZ3bS0+d21bbGV2ZWxdKTsKPiA+IMKgCX0KPiA+IC0J c2tsX3dyaXRlX3dtX2xldmVsKGRldl9wcml2LCBQTEFORV9XTV9UUkFOUyhwaXBlLCBwbGFuZSks Cj4gPiArCXNrbF93cml0ZV93bV9sZXZlbChkZXZfcHJpdiwgUExBTkVfV01fVFJBTlMocGlwZSwg cGxhbmVfaWQpLAo+ID4gwqAJCQnCoMKgwqAmd20tPnRyYW5zX3dtKTsKPiA+IMKgCj4gPiAtCXNr bF9kZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsIFBMQU5FX0JVRl9DRkcocGlwZSwgcGxhbmUpLAo+ ID4gLQkJCcKgwqDCoMKgJmRkYi0+cGxhbmVbcGlwZV1bcGxhbmVdKTsKPiA+IC0Jc2tsX2RkYl9l bnRyeV93cml0ZShkZXZfcHJpdiwgUExBTkVfTlYxMl9CVUZfQ0ZHKHBpcGUsCj4gPiBwbGFuZSks Cj4gPiAtCQkJwqDCoMKgwqAmZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lXSk7Cj4gPiArCXNrbF9k ZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsIFBMQU5FX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpLAo+ ID4gKwkJCcKgwqDCoMKgJmRkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsKPiA+ICsJc2tsX2Rk Yl9lbnRyeV93cml0ZShkZXZfcHJpdiwgUExBTkVfTlYxMl9CVUZfQ0ZHKHBpcGUsCj4gPiBwbGFu ZV9pZCksCj4gPiArCQkJwqDCoMKgwqAmZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lX2lkXSk7Cj4g PiDCoH0KPiA+IMKgCj4gPiDCoHZvaWQgc2tsX3dyaXRlX2N1cnNvcl93bShzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YywKPiA+IEBAIC0zOTgxLDE3ICszOTU0LDE2IEBAIHNrbF9kZGJfYWRk X2FmZmVjdGVkX3BsYW5lcyhzdHJ1Y3QKPiA+IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKPiA+ IMKgCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+ID4gwqAJc3RydWN0IGRy bV9wbGFuZSAqcGxhbmU7Cj4gPiDCoAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7 Cj4gPiAtCWludCBpZDsKPiA+IMKgCj4gPiDCoAlXQVJOX09OKCFkcm1fYXRvbWljX2dldF9leGlz dGluZ19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKSk7Cj4gPiDCoAo+ID4gwqAJZHJtX2Zvcl9lYWNo X3BsYW5lX21hc2socGxhbmUsIGRldiwgY3N0YXRlLT5iYXNlLnBsYW5lX21hc2spIAo+ID4gewo+ ID4gLQkJaWQgPSBza2xfd21fcGxhbmVfaWQodG9faW50ZWxfcGxhbmUocGxhbmUpKTsKPiA+ICsJ CWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSB0b19pbnRlbF9wbGFuZShwbGFuZSktPmlkOwo+ID4g wqAKPiA+IC0JCWlmIChza2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRiLT5wbGFuZVtwaXBlXVtp ZF0sCj4gPiAtCQkJCQkmbmV3X2RkYi0+cGxhbmVbcGlwZV1baWRdKQo+ID4gJiYKPiA+IC0JCcKg wqDCoMKgc2tsX2RkYl9lbnRyeV9lcXVhbCgmY3VyX2RkYi0+eV9wbGFuZVtwaXBlXVtpZF0sCj4g PiAtCQkJCQkmbmV3X2RkYi0KPiA+ID55X3BsYW5lW3BpcGVdW2lkXSkpCj4gPiArCQlpZiAoc2ts X2RkYl9lbnRyeV9lcXVhbCgmY3VyX2RkYi0KPiA+ID5wbGFuZVtwaXBlXVtwbGFuZV9pZF0sCj4g PiArCQkJCQkmbmV3X2RkYi0KPiA+ID5wbGFuZVtwaXBlXVtwbGFuZV9pZF0pICYmCj4gPiArCQnC oMKgwqDCoHNrbF9kZGJfZW50cnlfZXF1YWwoJmN1cl9kZGItCj4gPiA+eV9wbGFuZVtwaXBlXVtw bGFuZV9pZF0sCj4gPiArCQkJCQkmbmV3X2RkYi0KPiA+ID55X3BsYW5lW3BpcGVdW3BsYW5lX2lk XSkpCj4gPiDCoAkJCWNvbnRpbnVlOwo+ID4gwqAKPiA+IMKgCQlwbGFuZV9zdGF0ZSA9IGRybV9h dG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRlLAo+ID4gcGxhbmUpOwo+ID4gQEAgLTQxMDMsNyAr NDA3NSw2IEBAIHNrbF9wcmludF93bV9jaGFuZ2VzKGNvbnN0IHN0cnVjdAo+ID4gZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCj4gPiDCoAljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3Bs YW5lOwo+ID4gwqAJY29uc3Qgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqb2xkX2RkYiA9ICZk ZXZfcHJpdi0KPiA+ID53bS5za2xfaHcuZGRiOwo+ID4gwqAJY29uc3Qgc3RydWN0IHNrbF9kZGJf YWxsb2NhdGlvbiAqbmV3X2RkYiA9ICZpbnRlbF9zdGF0ZS0KPiA+ID53bV9yZXN1bHRzLmRkYjsK PiA+IC0JaW50IGlkOwo+ID4gwqAJaW50IGk7Cj4gPiDCoAo+ID4gwqAJZm9yX2VhY2hfY3J0Y19p bl9zdGF0ZShzdGF0ZSwgY3J0YywgY3N0YXRlLCBpKSB7Cj4gPiBAQCAtNDExMSwxMSArNDA4Miwx MSBAQCBza2xfcHJpbnRfd21fY2hhbmdlcyhjb25zdCBzdHJ1Y3QKPiA+IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+ID4gwqAJCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+ IMKgCj4gPiDCoAkJZm9yX2VhY2hfaW50ZWxfcGxhbmVfb25fY3J0YyhkZXYsIGludGVsX2NydGMs Cj4gPiBpbnRlbF9wbGFuZSkgewo+ID4gKwkJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBpbnRl bF9wbGFuZS0+aWQ7Cj4gPiDCoAkJCWNvbnN0IHN0cnVjdCBza2xfZGRiX2VudHJ5ICpvbGQsICpu ZXc7Cj4gPiDCoAo+ID4gLQkJCWlkID0gc2tsX3dtX3BsYW5lX2lkKGludGVsX3BsYW5lKTsKPiA+ IC0JCQlvbGQgPSAmb2xkX2RkYi0+cGxhbmVbcGlwZV1baWRdOwo+ID4gLQkJCW5ldyA9ICZuZXdf ZGRiLT5wbGFuZVtwaXBlXVtpZF07Cj4gPiArCQkJb2xkID0gJm9sZF9kZGItPnBsYW5lW3BpcGVd W3BsYW5lX2lkXTsKPiA+ICsJCQluZXcgPSAmbmV3X2RkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRd Owo+ID4gwqAKPiA+IMKgCQkJaWYgKHNrbF9kZGJfZW50cnlfZXF1YWwob2xkLCBuZXcpKQo+ID4g wqAJCQkJY29udGludWU7Cj4gPiBAQCAtNDIxOSwxNCArNDE5MCwxNiBAQCBzdGF0aWMgdm9pZCBz a2xfdXBkYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjCj4gPiAqaW50ZWxfY3J0YykKPiA+IMKgCcKg KiB0aGVpciB3YXRlcm1hcmtzIHVwZGF0ZWQgb25jZSB3ZSB1cGRhdGUgdGhlaXIgcGxhbmVzLgo+ ID4gwqAJwqAqLwo+ID4gwqAJaWYgKGludGVsX2NydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZV9jaGFu Z2VkKSB7Cj4gPiAtCQlpbnQgcGxhbmU7Cj4gPiAtCj4gPiAtCQlmb3JfZWFjaF91bml2ZXJzYWxf cGxhbmUoZGV2X3ByaXYsIHBpcGUsIHBsYW5lKQo+ID4gLQkJCXNrbF93cml0ZV9wbGFuZV93bShp bnRlbF9jcnRjLCAmcGlwZV93bS0KPiA+ID5wbGFuZXNbcGxhbmVdLAo+ID4gLQkJCQkJwqDCoMKg JnJlc3VsdHMtPmRkYiwgcGxhbmUpOwo+ID4gKwkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZDsKPiA+ IMKgCj4gPiAtCQlza2xfd3JpdGVfY3Vyc29yX3dtKGludGVsX2NydGMsICZwaXBlX3dtLQo+ID4g PnBsYW5lc1tQTEFORV9DVVJTT1JdLAo+ID4gLQkJCQnCoMKgwqDCoCZyZXN1bHRzLT5kZGIpOwo+ ID4gKwkJZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkgewo+ ID4gKwkJCWlmIChwbGFuZV9pZCAhPSBQTEFORV9DVVJTT1IpCj4gPiArCQkJCXNrbF93cml0ZV9w bGFuZV93bShpbnRlbF9jcnRjLAo+ID4gJnBpcGVfd20tPnBsYW5lc1twbGFuZV9pZF0sCj4gPiAr CQkJCQkJwqDCoMKgJnJlc3VsdHMtPmRkYiwKPiA+IHBsYW5lX2lkKTsKPiA+ICsJCQllbHNlCj4g PiArCQkJCXNrbF93cml0ZV9jdXJzb3Jfd20oaW50ZWxfY3J0YywKPiA+ICZwaXBlX3dtLT5wbGFu ZXNbcGxhbmVfaWRdLAo+ID4gKwkJCQkJCcKgwqDCoMKgJnJlc3VsdHMtPmRkYik7Cj4gPiArCQl9 Cj4gPiDCoAl9Cj4gPiDCoAo+ID4gwqAJc2tsX2NvcHlfd21fZm9yX3BpcGUoaHdfdmFscywgcmVz dWx0cywgcGlwZSk7Cj4gPiBAQCAtNDMyMywzMiArNDI5NiwyOSBAQCBzdGF0aWMgaW5saW5lIHZv aWQKPiA+IHNrbF93bV9sZXZlbF9mcm9tX3JlZ192YWwodWludDMyX3QgdmFsLAo+ID4gwqB2b2lk IHNrbF9waXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiDCoAkJ CcKgwqDCoMKgwqDCoHN0cnVjdCBza2xfcGlwZV93bSAqb3V0KQo+ID4gwqB7Cj4gPiAtCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+ID4gwqAJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gLQlzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lOwo+ID4gLQlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bTsKPiA+IMKg CWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+IC0JaW50IGxldmVsLCBpZCwg bWF4X2xldmVsOwo+ID4gKwlpbnQgbGV2ZWwsIG1heF9sZXZlbDsKPiA+ICsJZW51bSBwbGFuZV9p ZCBwbGFuZV9pZDsKPiA+IMKgCXVpbnQzMl90IHZhbDsKPiA+IMKgCj4gPiDCoAltYXhfbGV2ZWwg PSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2KTsKPiA+IMKgCj4gPiAtCWZvcl9lYWNoX2ludGVs X3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9wbGFuZSkgewo+ID4gLQkJaWQg PSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOwo+ID4gLQkJd20gPSAmb3V0LT5wbGFuZXNb aWRdOwo+ID4gKwlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGludGVsX2NydGMsIHBsYW5lX2lk KSB7Cj4gPiArCQlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9ICZvdXQtPnBsYW5lc1twbGFuZV9p ZF07Cj4gPiDCoAo+ID4gwqAJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxl dmVsKyspIHsKPiA+IC0JCQlpZiAoaWQgIT0gUExBTkVfQ1VSU09SKQo+ID4gLQkJCQl2YWwgPSBJ OTE1X1JFQUQoUExBTkVfV00ocGlwZSwgaWQsCj4gPiBsZXZlbCkpOwo+ID4gKwkJCWlmIChwbGFu ZV9pZCAhPSBQTEFORV9DVVJTT1IpCj4gPiArCQkJCXZhbCA9IEk5MTVfUkVBRChQTEFORV9XTShw aXBlLAo+ID4gcGxhbmVfaWQsIGxldmVsKSk7Cj4gPiDCoAkJCWVsc2UKPiA+IMKgCQkJCXZhbCA9 IEk5MTVfUkVBRChDVVJfV00ocGlwZSwKPiA+IGxldmVsKSk7Cj4gPiDCoAo+ID4gwqAJCQlza2xf d21fbGV2ZWxfZnJvbV9yZWdfdmFsKHZhbCwgJndtLQo+ID4gPndtW2xldmVsXSk7Cj4gPiDCoAkJ fQo+ID4gwqAKPiA+IC0JCWlmIChpZCAhPSBQTEFORV9DVVJTT1IpCj4gPiAtCQkJdmFsID0gSTkx NV9SRUFEKFBMQU5FX1dNX1RSQU5TKHBpcGUsIGlkKSk7Cj4gPiArCQlpZiAocGxhbmVfaWQgIT0g UExBTkVfQ1VSU09SKQo+ID4gKwkJCXZhbCA9IEk5MTVfUkVBRChQTEFORV9XTV9UUkFOUyhwaXBl LAo+ID4gcGxhbmVfaWQpKTsKPiA+IMKgCQllbHNlCj4gPiDCoAkJCXZhbCA9IEk5MTVfUkVBRChD VVJfV01fVFJBTlMocGlwZSkpOwo+ID4gwqAKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RD Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=