From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 1/2] drm/i915: Remove support for legacy debugfs crc interface Date: Thu, 28 Jun 2018 11:40:34 +0300 Message-ID: <87a7rftibh.fsf@intel.com> References: <20180628072303.14175-1-maarten.lankhorst@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 7E7A96EC8A for ; Thu, 28 Jun 2018 08:40:48 +0000 (UTC) In-Reply-To: <20180628072303.14175-1-maarten.lankhorst@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: Maarten Lankhorst , intel-gfx@lists.freedesktop.org Cc: Tomi Sarvela List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyOCBKdW4gMjAxOCwgTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0 QGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4gVGhpcyBpbnRlcmZhY2UgaXMgZGVwcmVjYXRlZCwg YW5kIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSB1cHN0cmVhbQo+IGRybSBjcmMgaW50ZXJmYWNl Lgo+Cj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0 QGxpbnV4LmludGVsLmNvbT4KPiBDYzogVG9taSBTYXJ2ZWxhIDx0b21pLnAuc2FydmVsYUBpbnRl bC5jb20+Cj4gQ2M6IFBldHJpIExhdHZhbGEgPHBldHJpLmxhdHZhbGFAaW50ZWwuY29tPgo+IENj OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+IENjOiBWaWxsZSBTeXJqw6Rs w6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IEFja2VkLWJ5OiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgoKQWNrZWQtYnk6IEphbmkgTmlr dWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYyAgIHwgICA3ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgICAgfCAgMTEgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAg ICAgICB8ICA3OSArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAg IHwgICAyIC0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYyB8IDQ0NSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICA1IGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlv bnMoKyksIDUyMCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j Cj4gaW5kZXggYzQwMGY0MmE1NGVjLi5iNzUzZDUwYjAxM2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+IEBAIC00Nzk5LDcgKzQ3OTksNiBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGk5MTVfZGVidWdmc19maWxlcyB7Cj4gICNlbmRpZgo+ICAJeyJpOTE1X2ZpZm9fdW5kZXJy dW5fcmVzZXQiLCAmaTkxNV9maWZvX3VuZGVycnVuX3Jlc2V0X29wc30sCj4gIAl7Imk5MTVfbmV4 dF9zZXFubyIsICZpOTE1X25leHRfc2Vxbm9fZm9wc30sCj4gLQl7Imk5MTVfZGlzcGxheV9jcmNf Y3RsIiwgJmk5MTVfZGlzcGxheV9jcmNfY3RsX2ZvcHN9LAo+ICAJeyJpOTE1X3ByaV93bV9sYXRl bmN5IiwgJmk5MTVfcHJpX3dtX2xhdGVuY3lfZm9wc30sCj4gIAl7Imk5MTVfc3ByX3dtX2xhdGVu Y3kiLCAmaTkxNV9zcHJfd21fbGF0ZW5jeV9mb3BzfSwKPiAgCXsiaTkxNV9jdXJfd21fbGF0ZW5j eSIsICZpOTE1X2N1cl93bV9sYXRlbmN5X2ZvcHN9LAo+IEBAIC00ODE5LDcgKzQ4MTgsNyBAQCBp bnQgaTkxNV9kZWJ1Z2ZzX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgewo+ICAJc3RydWN0IGRybV9taW5vciAqbWlub3IgPSBkZXZfcHJpdi0+ZHJtLnByaW1h cnk7Cj4gIAlzdHJ1Y3QgZGVudHJ5ICplbnQ7Cj4gLQlpbnQgcmV0LCBpOwo+ICsJaW50IGk7Cj4g IAo+ICAJZW50ID0gZGVidWdmc19jcmVhdGVfZmlsZSgiaTkxNV9mb3JjZXdha2VfdXNlciIsIFNf SVJVU1IsCj4gIAkJCQkgIG1pbm9yLT5kZWJ1Z2ZzX3Jvb3QsIHRvX2k5MTUobWlub3ItPmRldiks Cj4gQEAgLTQ4MjcsMTAgKzQ4MjYsNiBAQCBpbnQgaTkxNV9kZWJ1Z2ZzX3JlZ2lzdGVyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlmICghZW50KQo+ICAJCXJldHVybiAt RU5PTUVNOwo+ICAKPiAtCXJldCA9IGludGVsX3BpcGVfY3JjX2NyZWF0ZShtaW5vcik7Cj4gLQlp ZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+ICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUoaTkxNV9kZWJ1Z2ZzX2ZpbGVzKTsgaSsrKSB7Cj4gIAkJZW50ID0gZGVidWdmc19jcmVhdGVf ZmlsZShpOTE1X2RlYnVnZnNfZmlsZXNbaV0ubmFtZSwKPiAgCQkJCQkgIFNfSVJVR08gfCBTX0lX VVNSLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDJiNjg0ZjQzMWM2MC4uMjk4YjY0 OTdjZGM1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTEyNzYsMjAgKzEyNzYs MTEgQEAgZW51bSBpbnRlbF9waXBlX2NyY19zb3VyY2Ugewo+ICAJSU5URUxfUElQRV9DUkNfU09V UkNFX01BWCwKPiAgfTsKPiAgCj4gLXN0cnVjdCBpbnRlbF9waXBlX2NyY19lbnRyeSB7Cj4gLQl1 aW50MzJfdCBmcmFtZTsKPiAtCXVpbnQzMl90IGNyY1s1XTsKPiAtfTsKPiAtCj4gICNkZWZpbmUg SU5URUxfUElQRV9DUkNfRU5UUklFU19OUgkxMjgKPiAgc3RydWN0IGludGVsX3BpcGVfY3JjIHsK PiAgCXNwaW5sb2NrX3QgbG9jazsKPiAtCWJvb2wgb3BlbmVkOwkJLyogZXhjbHVzaXZlIGFjY2Vz cyB0byB0aGUgcmVzdWx0IGZpbGUgKi8KPiAtCXN0cnVjdCBpbnRlbF9waXBlX2NyY19lbnRyeSAq ZW50cmllczsKPiAtCWVudW0gaW50ZWxfcGlwZV9jcmNfc291cmNlIHNvdXJjZTsKPiAtCWludCBo ZWFkLCB0YWlsOwo+IC0Jd2FpdF9xdWV1ZV9oZWFkX3Qgd3E7Cj4gIAlpbnQgc2tpcHBlZDsKPiAr CWVudW0gaW50ZWxfcGlwZV9jcmNfc291cmNlIHNvdXJjZTsKPiAgfTsKPiAgCj4gIHN0cnVjdCBp OTE1X2Zyb250YnVmZmVyX3RyYWNraW5nIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBpbmRl eCA0NmFhZWY1YzE4NTEuLjA4OTI4ODMwZmEwMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu Ywo+IEBAIC0xNzAzLDY5ICsxNzAzLDM0IEBAIHN0YXRpYyB2b2lkIGRpc3BsYXlfcGlwZV9jcmNf aXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJCSB1 aW50MzJfdCBjcmM0KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmMgKnBpcGVfY3JjID0g JmRldl9wcml2LT5waXBlX2NyY1twaXBlXTsKPiAtCXN0cnVjdCBpbnRlbF9waXBlX2NyY19lbnRy eSAqZW50cnk7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGludGVsX2dldF9jcnRjX2Zv cl9waXBlKGRldl9wcml2LCBwaXBlKTsKPiAtCXN0cnVjdCBkcm1fZHJpdmVyICpkcml2ZXIgPSBk ZXZfcHJpdi0+ZHJtLmRyaXZlcjsKPiAgCXVpbnQzMl90IGNyY3NbNV07Cj4gLQlpbnQgaGVhZCwg dGFpbDsKPiAgCj4gIAlzcGluX2xvY2soJnBpcGVfY3JjLT5sb2NrKTsKPiAtCWlmIChwaXBlX2Ny Yy0+c291cmNlICYmICFjcnRjLT5iYXNlLmNyYy5vcGVuZWQpIHsKPiAtCQlpZiAoIXBpcGVfY3Jj LT5lbnRyaWVzKSB7Cj4gLQkJCXNwaW5fdW5sb2NrKCZwaXBlX2NyYy0+bG9jayk7Cj4gLQkJCURS TV9ERUJVR19LTVMoInNwdXJpb3VzIGludGVycnVwdFxuIik7Cj4gLQkJCXJldHVybjsKPiAtCQl9 Cj4gLQo+IC0JCWhlYWQgPSBwaXBlX2NyYy0+aGVhZDsKPiAtCQl0YWlsID0gcGlwZV9jcmMtPnRh aWw7Cj4gLQo+IC0JCWlmIChDSVJDX1NQQUNFKGhlYWQsIHRhaWwsIElOVEVMX1BJUEVfQ1JDX0VO VFJJRVNfTlIpIDwgMSkgewo+IC0JCQlzcGluX3VubG9jaygmcGlwZV9jcmMtPmxvY2spOwo+IC0J CQlEUk1fRVJST1IoIkNSQyBidWZmZXIgb3ZlcmZsb3dpbmdcbiIpOwo+IC0JCQlyZXR1cm47Cj4g LQkJfQo+IC0KPiAtCQllbnRyeSA9ICZwaXBlX2NyYy0+ZW50cmllc1toZWFkXTsKPiAtCj4gLQkJ ZW50cnktPmZyYW1lID0gZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoJmRldl9wcml2LT5kcm0s IHBpcGUpOwo+IC0JCWVudHJ5LT5jcmNbMF0gPSBjcmMwOwo+IC0JCWVudHJ5LT5jcmNbMV0gPSBj cmMxOwo+IC0JCWVudHJ5LT5jcmNbMl0gPSBjcmMyOwo+IC0JCWVudHJ5LT5jcmNbM10gPSBjcmMz Owo+IC0JCWVudHJ5LT5jcmNbNF0gPSBjcmM0Owo+IC0KPiAtCQloZWFkID0gKGhlYWQgKyAxKSAm IChJTlRFTF9QSVBFX0NSQ19FTlRSSUVTX05SIC0gMSk7Cj4gLQkJcGlwZV9jcmMtPmhlYWQgPSBo ZWFkOwo+IC0KPiAtCQlzcGluX3VubG9jaygmcGlwZV9jcmMtPmxvY2spOwo+IC0KPiAtCQl3YWtl X3VwX2ludGVycnVwdGlibGUoJnBpcGVfY3JjLT53cSk7Cj4gLQl9IGVsc2Ugewo+IC0JCS8qCj4g LQkJICogRm9yIHNvbWUgbm90IHlldCBpZGVudGlmaWVkIHJlYXNvbiwgdGhlIGZpcnN0IENSQyBp cwo+IC0JCSAqIGJvbmtlcnMuIFNvIGxldCdzIGp1c3Qgd2FpdCBmb3IgdGhlIG5leHQgdmJsYW5r IGFuZCByZWFkCj4gLQkJICogb3V0IHRoZSBidWdneSByZXN1bHQuCj4gLQkJICoKPiAtCQkgKiBP biBHRU44KyBzb21ldGltZXMgdGhlIHNlY29uZCBDUkMgaXMgYm9ua2VycyBhcyB3ZWxsLCBzbwo+ IC0JCSAqIGRvbid0IHRydXN0IHRoYXQgb25lIGVpdGhlci4KPiAtCQkgKi8KPiAtCQlpZiAocGlw ZV9jcmMtPnNraXBwZWQgPD0gMCB8fAo+IC0JCSAgICAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4 ICYmIHBpcGVfY3JjLT5za2lwcGVkID09IDEpKSB7Cj4gLQkJCXBpcGVfY3JjLT5za2lwcGVkKys7 Cj4gLQkJCXNwaW5fdW5sb2NrKCZwaXBlX2NyYy0+bG9jayk7Cj4gLQkJCXJldHVybjsKPiAtCQl9 Cj4gKwkvKgo+ICsJICogRm9yIHNvbWUgbm90IHlldCBpZGVudGlmaWVkIHJlYXNvbiwgdGhlIGZp cnN0IENSQyBpcwo+ICsJICogYm9ua2Vycy4gU28gbGV0J3MganVzdCB3YWl0IGZvciB0aGUgbmV4 dCB2YmxhbmsgYW5kIHJlYWQKPiArCSAqIG91dCB0aGUgYnVnZ3kgcmVzdWx0Lgo+ICsJICoKPiAr CSAqIE9uIEdFTjgrIHNvbWV0aW1lcyB0aGUgc2Vjb25kIENSQyBpcyBib25rZXJzIGFzIHdlbGws IHNvCj4gKwkgKiBkb24ndCB0cnVzdCB0aGF0IG9uZSBlaXRoZXIuCj4gKwkgKi8KPiArCWlmIChw aXBlX2NyYy0+c2tpcHBlZCA8PSAwIHx8Cj4gKwkgICAgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OCAmJiBwaXBlX2NyYy0+c2tpcHBlZCA9PSAxKSkgewo+ICsJCXBpcGVfY3JjLT5za2lwcGVkKys7 Cj4gIAkJc3Bpbl91bmxvY2soJnBpcGVfY3JjLT5sb2NrKTsKPiAtCQljcmNzWzBdID0gY3JjMDsK PiAtCQljcmNzWzFdID0gY3JjMTsKPiAtCQljcmNzWzJdID0gY3JjMjsKPiAtCQljcmNzWzNdID0g Y3JjMzsKPiAtCQljcmNzWzRdID0gY3JjNDsKPiAtCQlkcm1fY3J0Y19hZGRfY3JjX2VudHJ5KCZj cnRjLT5iYXNlLCB0cnVlLAo+IC0JCQkJICAgICAgIGRybV9jcnRjX2FjY3VyYXRlX3ZibGFua19j b3VudCgmY3J0Yy0+YmFzZSksCj4gLQkJCQkgICAgICAgY3Jjcyk7Cj4gKwkJcmV0dXJuOwo+ICAJ fQo+ICsJc3Bpbl91bmxvY2soJnBpcGVfY3JjLT5sb2NrKTsKPiArCj4gKwljcmNzWzBdID0gY3Jj MDsKPiArCWNyY3NbMV0gPSBjcmMxOwo+ICsJY3Jjc1syXSA9IGNyYzI7Cj4gKwljcmNzWzNdID0g Y3JjMzsKPiArCWNyY3NbNF0gPSBjcmM0Owo+ICsJZHJtX2NydGNfYWRkX2NyY19lbnRyeSgmY3J0 Yy0+YmFzZSwgdHJ1ZSwKPiArCQkJCWRybV9jcnRjX2FjY3VyYXRlX3ZibGFua19jb3VudCgmY3J0 Yy0+YmFzZSksCj4gKwkJCQljcmNzKTsKPiAgfQo+ICAjZWxzZQo+ICBzdGF0aWMgaW5saW5lIHZv aWQKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IGE2ZmYyNjAwYTNhMC4uMmQzNmM0 ZDMxY2VmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMjE1Miw3ICsyMTUy LDYgQEAgdm9pZCBsc3Bjb25fcmVzdW1lKHN0cnVjdCBpbnRlbF9sc3Bjb24gKmxzcGNvbik7Cj4g IHZvaWQgbHNwY29uX3dhaXRfcGNvbl9tb2RlKHN0cnVjdCBpbnRlbF9sc3Bjb24gKmxzcGNvbik7 Cj4gIAo+ICAvKiBpbnRlbF9waXBlX2NyYy5jICovCj4gLWludCBpbnRlbF9waXBlX2NyY19jcmVh dGUoc3RydWN0IGRybV9taW5vciAqbWlub3IpOwo+ICAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCj4g IGludCBpbnRlbF9jcnRjX3NldF9jcmNfc291cmNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgY29u c3QgY2hhciAqc291cmNlX25hbWUsCj4gIAkJCSAgICAgIHNpemVfdCAqdmFsdWVzX2NudCk7Cj4g QEAgLTIxNjgsNSArMjE2Nyw0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9jcnRjX2VuYWJs ZV9waXBlX2NyYyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgewo+ICB9Cj4gICNlbmRpZgo+ IC1leHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpOTE1X2Rpc3BsYXlfY3JjX2N0 bF9mb3BzOwo+ICAjZW5kaWYgLyogX19JTlRFTF9EUlZfSF9fICovCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BpcGVfY3JjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9waXBlX2NyYy5jCj4gaW5kZXggMzlhNGU0ZWRkYTA3Li44NDllMWI2OWJhNzMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BpcGVfY3JjLmMKPiBAQCAtMzAsMTYwICszMCw2 IEBACj4gICNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+Cj4gICNpbmNsdWRlICJpbnRlbF9kcnYu aCIKPiAgCj4gLXN0cnVjdCBwaXBlX2NyY19pbmZvIHsKPiAtCWNvbnN0IGNoYXIgKm5hbWU7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXY7Cj4gLQllbnVtIHBpcGUgcGlwZTsK PiAtfTsKPiAtCj4gLXN0YXRpYyBpbnQgaTkxNV9waXBlX2NyY19vcGVuKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlcCkKPiAtewo+IC0Jc3RydWN0IHBpcGVfY3JjX2luZm8g KmluZm8gPSBpbm9kZS0+aV9wcml2YXRlOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gaW5mby0+ZGV2X3ByaXY7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmMgKnBpcGVf Y3JjID0gJmRldl9wcml2LT5waXBlX2NyY1tpbmZvLT5waXBlXTsKPiAtCj4gLQlpZiAoaW5mby0+ cGlwZSA+PSBJTlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3BpcGVzKQo+IC0JCXJldHVybiAtRU5P REVWOwo+IC0KPiAtCXNwaW5fbG9ja19pcnEoJnBpcGVfY3JjLT5sb2NrKTsKPiAtCj4gLQlpZiAo cGlwZV9jcmMtPm9wZW5lZCkgewo+IC0JCXNwaW5fdW5sb2NrX2lycSgmcGlwZV9jcmMtPmxvY2sp Owo+IC0JCXJldHVybiAtRUJVU1k7IC8qIGFscmVhZHkgb3BlbiAqLwo+IC0JfQo+IC0KPiAtCXBp cGVfY3JjLT5vcGVuZWQgPSB0cnVlOwo+IC0JZmlsZXAtPnByaXZhdGVfZGF0YSA9IGlub2RlLT5p X3ByaXZhdGU7Cj4gLQo+IC0Jc3Bpbl91bmxvY2tfaXJxKCZwaXBlX2NyYy0+bG9jayk7Cj4gLQo+ IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgaTkxNV9waXBlX2NyY19yZWxlYXNl KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlcCkKPiAtewo+IC0Jc3RydWN0 IHBpcGVfY3JjX2luZm8gKmluZm8gPSBpbm9kZS0+aV9wcml2YXRlOwo+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gaW5mby0+ZGV2X3ByaXY7Cj4gLQlzdHJ1Y3QgaW50ZWxf cGlwZV9jcmMgKnBpcGVfY3JjID0gJmRldl9wcml2LT5waXBlX2NyY1tpbmZvLT5waXBlXTsKPiAt Cj4gLQlzcGluX2xvY2tfaXJxKCZwaXBlX2NyYy0+bG9jayk7Cj4gLQlwaXBlX2NyYy0+b3BlbmVk ID0gZmFsc2U7Cj4gLQlzcGluX3VubG9ja19pcnEoJnBpcGVfY3JjLT5sb2NrKTsKPiAtCj4gLQly ZXR1cm4gMDsKPiAtfQo+IC0KPiAtLyogKDYgZmllbGRzLCA4IGNoYXJzIGVhY2gsIHNwYWNlIHNl cGFyYXRlZCAoNSkgKyAnXG4nKSAqLwo+IC0jZGVmaW5lIFBJUEVfQ1JDX0xJTkVfTEVOCSg2ICog OCArIDUgKyAxKQo+IC0vKiBhY2NvdW50IGZvciBcJzAnICovCj4gLSNkZWZpbmUgUElQRV9DUkNf QlVGRkVSX0xFTgkoUElQRV9DUkNfTElORV9MRU4gKyAxKQo+IC0KPiAtc3RhdGljIGludCBwaXBl X2NyY19kYXRhX2NvdW50KHN0cnVjdCBpbnRlbF9waXBlX2NyYyAqcGlwZV9jcmMpCj4gLXsKPiAt CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnBpcGVfY3JjLT5sb2NrKTsKPiAtCXJldHVybiBDSVJDX0NO VChwaXBlX2NyYy0+aGVhZCwgcGlwZV9jcmMtPnRhaWwsCj4gLQkJCUlOVEVMX1BJUEVfQ1JDX0VO VFJJRVNfTlIpOwo+IC19Cj4gLQo+IC1zdGF0aWMgc3NpemVfdAo+IC1pOTE1X3BpcGVfY3JjX3Jl YWQoc3RydWN0IGZpbGUgKmZpbGVwLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsIHNpemVfdCBjb3Vu dCwKPiAtCQkgICBsb2ZmX3QgKnBvcykKPiAtewo+IC0Jc3RydWN0IHBpcGVfY3JjX2luZm8gKmlu Zm8gPSBmaWxlcC0+cHJpdmF0ZV9kYXRhOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gaW5mby0+ZGV2X3ByaXY7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmMgKnBpcGVf Y3JjID0gJmRldl9wcml2LT5waXBlX2NyY1tpbmZvLT5waXBlXTsKPiAtCWNoYXIgYnVmW1BJUEVf Q1JDX0JVRkZFUl9MRU5dOwo+IC0JaW50IG5fZW50cmllczsKPiAtCXNzaXplX3QgYnl0ZXNfcmVh ZDsKPiAtCj4gLQkvKgo+IC0JICogRG9uJ3QgYWxsb3cgdXNlciBzcGFjZSB0byBwcm92aWRlIGJ1 ZmZlcnMgbm90IGJpZyBlbm91Z2ggdG8gaG9sZAo+IC0JICogYSBsaW5lIG9mIGRhdGEuCj4gLQkg Ki8KPiAtCWlmIChjb3VudCA8IFBJUEVfQ1JDX0xJTkVfTEVOKQo+IC0JCXJldHVybiAtRUlOVkFM Owo+IC0KPiAtCWlmIChwaXBlX2NyYy0+c291cmNlID09IElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9O T05FKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCS8qIG5vdGhpbmcgdG8gcmVhZCAqLwo+IC0Jc3Bp bl9sb2NrX2lycSgmcGlwZV9jcmMtPmxvY2spOwo+IC0Jd2hpbGUgKHBpcGVfY3JjX2RhdGFfY291 bnQocGlwZV9jcmMpID09IDApIHsKPiAtCQlpbnQgcmV0Owo+IC0KPiAtCQlpZiAoZmlsZXAtPmZf ZmxhZ3MgJiBPX05PTkJMT0NLKSB7Cj4gLQkJCXNwaW5fdW5sb2NrX2lycSgmcGlwZV9jcmMtPmxv Y2spOwo+IC0JCQlyZXR1cm4gLUVBR0FJTjsKPiAtCQl9Cj4gLQo+IC0JCXJldCA9IHdhaXRfZXZl bnRfaW50ZXJydXB0aWJsZV9sb2NrX2lycShwaXBlX2NyYy0+d3EsCj4gLQkJCQlwaXBlX2NyY19k YXRhX2NvdW50KHBpcGVfY3JjKSwgcGlwZV9jcmMtPmxvY2spOwo+IC0JCWlmIChyZXQpIHsKPiAt CQkJc3Bpbl91bmxvY2tfaXJxKCZwaXBlX2NyYy0+bG9jayk7Cj4gLQkJCXJldHVybiByZXQ7Cj4g LQkJfQo+IC0JfQo+IC0KPiAtCS8qIFdlIG5vdyBoYXZlIG9uZSBvciBtb3JlIGVudHJpZXMgdG8g cmVhZCAqLwo+IC0Jbl9lbnRyaWVzID0gY291bnQgLyBQSVBFX0NSQ19MSU5FX0xFTjsKPiAtCj4g LQlieXRlc19yZWFkID0gMDsKPiAtCXdoaWxlIChuX2VudHJpZXMgPiAwKSB7Cj4gLQkJc3RydWN0 IGludGVsX3BpcGVfY3JjX2VudHJ5ICplbnRyeSA9Cj4gLQkJCSZwaXBlX2NyYy0+ZW50cmllc1tw aXBlX2NyYy0+dGFpbF07Cj4gLQo+IC0JCWlmIChDSVJDX0NOVChwaXBlX2NyYy0+aGVhZCwgcGlw ZV9jcmMtPnRhaWwsCj4gLQkJCSAgICAgSU5URUxfUElQRV9DUkNfRU5UUklFU19OUikgPCAxKQo+ IC0JCQlicmVhazsKPiAtCj4gLQkJQlVJTERfQlVHX09OX05PVF9QT1dFUl9PRl8yKElOVEVMX1BJ UEVfQ1JDX0VOVFJJRVNfTlIpOwo+IC0JCXBpcGVfY3JjLT50YWlsID0gKHBpcGVfY3JjLT50YWls ICsgMSkgJgo+IC0JCQkJIChJTlRFTF9QSVBFX0NSQ19FTlRSSUVTX05SIC0gMSk7Cj4gLQo+IC0J CWJ5dGVzX3JlYWQgKz0gc25wcmludGYoYnVmLCBQSVBFX0NSQ19CVUZGRVJfTEVOLAo+IC0JCQkJ ICAgICAgICIlOHUgJTh4ICU4eCAlOHggJTh4ICU4eFxuIiwKPiAtCQkJCSAgICAgICBlbnRyeS0+ ZnJhbWUsIGVudHJ5LT5jcmNbMF0sCj4gLQkJCQkgICAgICAgZW50cnktPmNyY1sxXSwgZW50cnkt PmNyY1syXSwKPiAtCQkJCSAgICAgICBlbnRyeS0+Y3JjWzNdLCBlbnRyeS0+Y3JjWzRdKTsKPiAt Cj4gLQkJc3Bpbl91bmxvY2tfaXJxKCZwaXBlX2NyYy0+bG9jayk7Cj4gLQo+IC0JCWlmIChjb3B5 X3RvX3VzZXIodXNlcl9idWYsIGJ1ZiwgUElQRV9DUkNfTElORV9MRU4pKQo+IC0JCQlyZXR1cm4g LUVGQVVMVDsKPiAtCj4gLQkJdXNlcl9idWYgKz0gUElQRV9DUkNfTElORV9MRU47Cj4gLQkJbl9l bnRyaWVzLS07Cj4gLQo+IC0JCXNwaW5fbG9ja19pcnEoJnBpcGVfY3JjLT5sb2NrKTsKPiAtCX0K PiAtCj4gLQlzcGluX3VubG9ja19pcnEoJnBpcGVfY3JjLT5sb2NrKTsKPiAtCj4gLQlyZXR1cm4g Ynl0ZXNfcmVhZDsKPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlv bnMgaTkxNV9waXBlX2NyY19mb3BzID0gewo+IC0JLm93bmVyID0gVEhJU19NT0RVTEUsCj4gLQku b3BlbiA9IGk5MTVfcGlwZV9jcmNfb3BlbiwKPiAtCS5yZWFkID0gaTkxNV9waXBlX2NyY19yZWFk LAo+IC0JLnJlbGVhc2UgPSBpOTE1X3BpcGVfY3JjX3JlbGVhc2UsCj4gLX07Cj4gLQo+IC1zdGF0 aWMgc3RydWN0IHBpcGVfY3JjX2luZm8gaTkxNV9waXBlX2NyY19kYXRhW0k5MTVfTUFYX1BJUEVT XSA9IHsKPiAtCXsKPiAtCQkubmFtZSA9ICJpOTE1X3BpcGVfQV9jcmMiLAo+IC0JCS5waXBlID0g UElQRV9BLAo+IC0JfSwKPiAtCXsKPiAtCQkubmFtZSA9ICJpOTE1X3BpcGVfQl9jcmMiLAo+IC0J CS5waXBlID0gUElQRV9CLAo+IC0JfSwKPiAtCXsKPiAtCQkubmFtZSA9ICJpOTE1X3BpcGVfQ19j cmMiLAo+IC0JCS5waXBlID0gUElQRV9DLAo+IC0JfSwKPiAtfTsKPiAtCj4gIHN0YXRpYyBjb25z dCBjaGFyICogY29uc3QgcGlwZV9jcmNfc291cmNlc1tdID0gewo+ICAJIm5vbmUiLAo+ICAJInBs YW5lMSIsCj4gQEAgLTE5NywyOSArNDMsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBp cGVfY3JjX3NvdXJjZXNbXSA9IHsKPiAgCSJhdXRvIiwKPiAgfTsKPiAgCj4gLXN0YXRpYyBjb25z dCBjaGFyICpwaXBlX2NyY19zb3VyY2VfbmFtZShlbnVtIGludGVsX3BpcGVfY3JjX3NvdXJjZSBz b3VyY2UpCj4gLXsKPiAtCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKHBpcGVfY3JjX3NvdXJjZXMp ICE9IElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9NQVgpOwo+IC0JcmV0dXJuIHBpcGVfY3JjX3NvdXJj ZXNbc291cmNlXTsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBkaXNwbGF5X2NyY19jdGxfc2hvdyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IG0tPnByaXZhdGU7Cj4gLQllbnVtIHBpcGUgcGlwZTsKPiAtCj4g LQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQo+IC0JCXNlcV9wcmludGYobSwgIiVjICVz XG4iLCBwaXBlX25hbWUocGlwZSksCj4gLQkJCSAgIHBpcGVfY3JjX3NvdXJjZV9uYW1lKGRldl9w cml2LT5waXBlX2NyY1twaXBlXS5zb3VyY2UpKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0K PiAtc3RhdGljIGludCBkaXNwbGF5X2NyY19jdGxfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz dHJ1Y3QgZmlsZSAqZmlsZSkKPiAtewo+IC0JcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIGRpc3Bs YXlfY3JjX2N0bF9zaG93LCBpbm9kZS0+aV9wcml2YXRlKTsKPiAtfQo+IC0KPiAgc3RhdGljIGlu dCBpOHh4X3BpcGVfY3JjX2N0bF9yZWcoZW51bSBpbnRlbF9waXBlX2NyY19zb3VyY2UgKnNvdXJj ZSwKPiAgCQkJCSB1aW50MzJfdCAqdmFsKQo+ICB7Cj4gQEAgLTYxNiwxNzcgKzQzOSw2IEBAIHN0 YXRpYyBpbnQgZ2V0X25ld19jcmNfY3RsX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gIAkJcmV0dXJuIGl2Yl9waXBlX2NyY19jdGxfcmVnKGRldl9wcml2LCBwaXBlLCBz b3VyY2UsIHZhbCwgc2V0X3dhKTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBwaXBlX2NyY19zZXRf c291cmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQkJICAgICAgIGVu dW0gcGlwZSBwaXBlLAo+IC0JCQkgICAgICAgZW51bSBpbnRlbF9waXBlX2NyY19zb3VyY2Ugc291 cmNlKQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmMgKnBpcGVfY3JjID0gJmRldl9wcml2 LT5waXBlX2NyY1twaXBlXTsKPiAtCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93 ZXJfZG9tYWluOwo+IC0JdTMyIHZhbCA9IDA7IC8qIHNodXQgdXAgZ2NjICovCj4gLQlpbnQgcmV0 Owo+IC0KPiAtCWlmIChwaXBlX2NyYy0+c291cmNlID09IHNvdXJjZSkKPiAtCQlyZXR1cm4gMDsK PiAtCj4gLQkvKiBmb3JiaWQgY2hhbmdpbmcgdGhlIHNvdXJjZSB3aXRob3V0IGdvaW5nIGJhY2sg dG8gJ25vbmUnICovCj4gLQlpZiAocGlwZV9jcmMtPnNvdXJjZSAmJiBzb3VyY2UpCj4gLQkJcmV0 dXJuIC1FSU5WQUw7Cj4gLQo+IC0JcG93ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJUEUocGlw ZSk7Cj4gLQlpZiAoIWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYs IHBvd2VyX2RvbWFpbikpIHsKPiAtCQlEUk1fREVCVUdfS01TKCJUcnlpbmcgdG8gY2FwdHVyZSBD UkMgd2hpbGUgcGlwZSBpcyBvZmZcbiIpOwo+IC0JCXJldHVybiAtRUlPOwo+IC0JfQo+IC0KPiAt CXJldCA9IGdldF9uZXdfY3JjX2N0bF9yZWcoZGV2X3ByaXYsIHBpcGUsICZzb3VyY2UsICZ2YWws IHRydWUpOwo+IC0JaWYgKHJldCAhPSAwKQo+IC0JCWdvdG8gb3V0Owo+IC0KPiAtCS8qIG5vbmUg LT4gcmVhbCBzb3VyY2UgdHJhbnNpdGlvbiAqLwo+IC0JaWYgKHNvdXJjZSkgewo+IC0JCXN0cnVj dCBpbnRlbF9waXBlX2NyY19lbnRyeSAqZW50cmllczsKPiAtCj4gLQkJRFJNX0RFQlVHX0RSSVZF UigiY29sbGVjdGluZyBDUkNzIGZvciBwaXBlICVjLCAlc1xuIiwKPiAtCQkJCSBwaXBlX25hbWUo cGlwZSksIHBpcGVfY3JjX3NvdXJjZV9uYW1lKHNvdXJjZSkpOwo+IC0KPiAtCQllbnRyaWVzID0g a2NhbGxvYyhJTlRFTF9QSVBFX0NSQ19FTlRSSUVTX05SLAo+IC0JCQkJICBzaXplb2YocGlwZV9j cmMtPmVudHJpZXNbMF0pLAo+IC0JCQkJICBHRlBfS0VSTkVMKTsKPiAtCQlpZiAoIWVudHJpZXMp IHsKPiAtCQkJcmV0ID0gLUVOT01FTTsKPiAtCQkJZ290byBvdXQ7Cj4gLQkJfQo+IC0KPiAtCQlz cGluX2xvY2tfaXJxKCZwaXBlX2NyYy0+bG9jayk7Cj4gLQkJa2ZyZWUocGlwZV9jcmMtPmVudHJp ZXMpOwo+IC0JCXBpcGVfY3JjLT5lbnRyaWVzID0gZW50cmllczsKPiAtCQlwaXBlX2NyYy0+aGVh ZCA9IDA7Cj4gLQkJcGlwZV9jcmMtPnRhaWwgPSAwOwo+IC0JCXNwaW5fdW5sb2NrX2lycSgmcGlw ZV9jcmMtPmxvY2spOwo+IC0JfQo+IC0KPiAtCXBpcGVfY3JjLT5zb3VyY2UgPSBzb3VyY2U7Cj4g LQo+IC0JSTkxNV9XUklURShQSVBFX0NSQ19DVEwocGlwZSksIHZhbCk7Cj4gLQlQT1NUSU5HX1JF QUQoUElQRV9DUkNfQ1RMKHBpcGUpKTsKPiAtCj4gLQkvKiByZWFsIHNvdXJjZSAtPiBub25lIHRy YW5zaXRpb24gKi8KPiAtCWlmICghc291cmNlKSB7Cj4gLQkJc3RydWN0IGludGVsX3BpcGVfY3Jj X2VudHJ5ICplbnRyaWVzOwo+IC0JCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gaW50ZWxfZ2V0 X2NydGNfZm9yX3BpcGUoZGV2X3ByaXYsCj4gLQkJCQkJCQkJICBwaXBlKTsKPiAtCj4gLQkJRFJN X0RFQlVHX0RSSVZFUigic3RvcHBpbmcgQ1JDcyBmb3IgcGlwZSAlY1xuIiwKPiAtCQkJCSBwaXBl X25hbWUocGlwZSkpOwo+IC0KPiAtCQlkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5iYXNlLm11dGV4 LCBOVUxMKTsKPiAtCQlpZiAoY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKQo+IC0JCQlpbnRlbF93 YWl0X2Zvcl92YmxhbmsoZGV2X3ByaXYsIHBpcGUpOwo+IC0JCWRybV9tb2Rlc2V0X3VubG9jaygm Y3J0Yy0+YmFzZS5tdXRleCk7Cj4gLQo+IC0JCXNwaW5fbG9ja19pcnEoJnBpcGVfY3JjLT5sb2Nr KTsKPiAtCQllbnRyaWVzID0gcGlwZV9jcmMtPmVudHJpZXM7Cj4gLQkJcGlwZV9jcmMtPmVudHJp ZXMgPSBOVUxMOwo+IC0JCXBpcGVfY3JjLT5oZWFkID0gMDsKPiAtCQlwaXBlX2NyYy0+dGFpbCA9 IDA7Cj4gLQkJc3Bpbl91bmxvY2tfaXJxKCZwaXBlX2NyYy0+bG9jayk7Cj4gLQo+IC0JCWtmcmVl KGVudHJpZXMpOwo+IC0KPiAtCQlpZiAoSVNfRzRYKGRldl9wcml2KSkKPiAtCQkJZzR4X3VuZG9f cGlwZV9zY3JhbWJsZV9yZXNldChkZXZfcHJpdiwgcGlwZSk7Cj4gLQkJZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gLQkJCXZsdl91 bmRvX3BpcGVfc2NyYW1ibGVfcmVzZXQoZGV2X3ByaXYsIHBpcGUpOwo+IC0JCWVsc2UgaWYgKChJ U19IQVNXRUxMKGRldl9wcml2KSB8fAo+IC0JCQkgIElTX0JST0FEV0VMTChkZXZfcHJpdikpICYm IHBpcGUgPT0gUElQRV9BKQo+IC0JCQloc3dfcGlwZV9BX2NyY193YShkZXZfcHJpdiwgZmFsc2Up Owo+IC0JfQo+IC0KPiAtCXJldCA9IDA7Cj4gLQo+IC1vdXQ6Cj4gLQlpbnRlbF9kaXNwbGF5X3Bv d2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiAtCj4gLQlyZXR1cm4gcmV0Owo+IC19 Cj4gLQo+IC0vKgo+IC0gKiBQYXJzZSBwaXBlIENSQyBjb21tYW5kIHN0cmluZ3M6Cj4gLSAqICAg Y29tbWFuZDogd3NwKiBvYmplY3Qgd3NwKyBuYW1lIHdzcCsgc291cmNlIHdzcCoKPiAtICogICBv YmplY3Q6ICdwaXBlJwo+IC0gKiAgIG5hbWU6IChBIHwgQiB8IEMpCj4gLSAqICAgc291cmNlOiAo bm9uZSB8IHBsYW5lMSB8IHBsYW5lMiB8IHBmKQo+IC0gKiAgIHdzcDogKCMweDIwIHwgIzB4OSB8 ICMweEEpKwo+IC0gKgo+IC0gKiBlZy46Cj4gLSAqICAicGlwZSBBIHBsYW5lMSIgIC0+ICBTdGFy dCBDUkMgY29tcHV0YXRpb25zIG9uIHBsYW5lMSBvZiBwaXBlIEEKPiAtICogICJwaXBlIEEgbm9u ZSIgICAgLT4gIFN0b3AgQ1JDCj4gLSAqLwo+IC1zdGF0aWMgaW50IGRpc3BsYXlfY3JjX2N0bF90 b2tlbml6ZShjaGFyICpidWYsIGNoYXIgKndvcmRzW10sIGludCBtYXhfd29yZHMpCj4gLXsKPiAt CWludCBuX3dvcmRzID0gMDsKPiAtCj4gLQl3aGlsZSAoKmJ1Zikgewo+IC0JCWNoYXIgKmVuZDsK PiAtCj4gLQkJLyogc2tpcCBsZWFkaW5nIHdoaXRlIHNwYWNlICovCj4gLQkJYnVmID0gc2tpcF9z cGFjZXMoYnVmKTsKPiAtCQlpZiAoISpidWYpCj4gLQkJCWJyZWFrOwkvKiBlbmQgb2YgYnVmZmVy ICovCj4gLQo+IC0JCS8qIGZpbmQgZW5kIG9mIHdvcmQgKi8KPiAtCQlmb3IgKGVuZCA9IGJ1Zjsg KmVuZCAmJiAhaXNzcGFjZSgqZW5kKTsgZW5kKyspCj4gLQkJCTsKPiAtCj4gLQkJaWYgKG5fd29y ZHMgPT0gbWF4X3dvcmRzKSB7Cj4gLQkJCURSTV9ERUJVR19EUklWRVIoInRvbyBtYW55IHdvcmRz LCBhbGxvd2VkIDw9ICVkXG4iLAo+IC0JCQkJCSBtYXhfd29yZHMpOwo+IC0JCQlyZXR1cm4gLUVJ TlZBTDsJLyogcmFuIG91dCBvZiB3b3Jkc1tdIGJlZm9yZSBieXRlcyAqLwo+IC0JCX0KPiAtCj4g LQkJaWYgKCplbmQpCj4gLQkJCSplbmQrKyA9ICdcMCc7Cj4gLQkJd29yZHNbbl93b3JkcysrXSA9 IGJ1ZjsKPiAtCQlidWYgPSBlbmQ7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIG5fd29yZHM7Cj4gLX0K PiAtCj4gLWVudW0gaW50ZWxfcGlwZV9jcmNfb2JqZWN0IHsKPiAtCVBJUEVfQ1JDX09CSkVDVF9Q SVBFLAo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwaXBlX2NyY19vYmpl Y3RzW10gPSB7Cj4gLQkicGlwZSIsCj4gLX07Cj4gLQo+IC1zdGF0aWMgaW50Cj4gLWRpc3BsYXlf Y3JjX2N0bF9wYXJzZV9vYmplY3QoY29uc3QgY2hhciAqYnVmLCBlbnVtIGludGVsX3BpcGVfY3Jj X29iamVjdCAqbykKPiAtewo+IC0JaW50IGk7Cj4gLQo+IC0JaSA9IG1hdGNoX3N0cmluZyhwaXBl X2NyY19vYmplY3RzLCBBUlJBWV9TSVpFKHBpcGVfY3JjX29iamVjdHMpLCBidWYpOwo+IC0JaWYg KGkgPCAwKQo+IC0JCXJldHVybiBpOwo+IC0KPiAtCSpvID0gaTsKPiAtCXJldHVybiAwOwo+IC19 Cj4gLQo+IC1zdGF0aWMgaW50IGRpc3BsYXlfY3JjX2N0bF9wYXJzZV9waXBlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQkJCSAgICAgIGNvbnN0IGNoYXIgKmJ1ZiwgZW51 bSBwaXBlICpwaXBlKQo+IC17Cj4gLQljb25zdCBjaGFyIG5hbWUgPSBidWZbMF07Cj4gLQo+IC0J aWYgKG5hbWUgPCAnQScgfHwgbmFtZSA+PSBwaXBlX25hbWUoSU5URUxfSU5GTyhkZXZfcHJpdikt Pm51bV9waXBlcykpCj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQo+IC0JKnBpcGUgPSBuYW1lIC0g J0EnOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ICBzdGF0aWMgaW50Cj4gIGRpc3BsYXlf Y3JjX2N0bF9wYXJzZV9zb3VyY2UoY29uc3QgY2hhciAqYnVmLCBlbnVtIGludGVsX3BpcGVfY3Jj X3NvdXJjZSAqcykKPiAgewo+IEBAIC04MDUsODEgKzQ1Nyw2IEBAIGRpc3BsYXlfY3JjX2N0bF9w YXJzZV9zb3VyY2UoY29uc3QgY2hhciAqYnVmLCBlbnVtIGludGVsX3BpcGVfY3JjX3NvdXJjZSAq cykKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGRpc3BsYXlfY3JjX2N0bF9w YXJzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkgY2hhciAqYnVm LCBzaXplX3QgbGVuKQo+IC17Cj4gLSNkZWZpbmUgTl9XT1JEUyAzCj4gLQlpbnQgbl93b3JkczsK PiAtCWNoYXIgKndvcmRzW05fV09SRFNdOwo+IC0JZW51bSBwaXBlIHBpcGU7Cj4gLQllbnVtIGlu dGVsX3BpcGVfY3JjX29iamVjdCBvYmplY3Q7Cj4gLQllbnVtIGludGVsX3BpcGVfY3JjX3NvdXJj ZSBzb3VyY2U7Cj4gLQo+IC0Jbl93b3JkcyA9IGRpc3BsYXlfY3JjX2N0bF90b2tlbml6ZShidWYs IHdvcmRzLCBOX1dPUkRTKTsKPiAtCWlmIChuX3dvcmRzICE9IE5fV09SRFMpIHsKPiAtCQlEUk1f REVCVUdfRFJJVkVSKCJ0b2tlbml6ZSBmYWlsZWQsIGEgY29tbWFuZCBpcyAlZCB3b3Jkc1xuIiwK PiAtCQkJCSBOX1dPUkRTKTsKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiAtCj4gLQlpZiAo ZGlzcGxheV9jcmNfY3RsX3BhcnNlX29iamVjdCh3b3Jkc1swXSwgJm9iamVjdCkgPCAwKSB7Cj4g LQkJRFJNX0RFQlVHX0RSSVZFUigidW5rbm93biBvYmplY3QgJXNcbiIsIHdvcmRzWzBdKTsKPiAt CQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiAtCj4gLQlpZiAoZGlzcGxheV9jcmNfY3RsX3BhcnNl X3BpcGUoZGV2X3ByaXYsIHdvcmRzWzFdLCAmcGlwZSkgPCAwKSB7Cj4gLQkJRFJNX0RFQlVHX0RS SVZFUigidW5rbm93biBwaXBlICVzXG4iLCB3b3Jkc1sxXSk7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7 Cj4gLQl9Cj4gLQo+IC0JaWYgKGRpc3BsYXlfY3JjX2N0bF9wYXJzZV9zb3VyY2Uod29yZHNbMl0s ICZzb3VyY2UpIDwgMCkgewo+IC0JCURSTV9ERUJVR19EUklWRVIoInVua25vd24gc291cmNlICVz XG4iLCB3b3Jkc1syXSk7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJu IHBpcGVfY3JjX3NldF9zb3VyY2UoZGV2X3ByaXYsIHBpcGUsIHNvdXJjZSk7Cj4gLX0KPiAtCj4g LXN0YXRpYyBzc2l6ZV90IGRpc3BsYXlfY3JjX2N0bF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwg Y29uc3QgY2hhciBfX3VzZXIgKnVidWYsCj4gLQkJCQkgICAgIHNpemVfdCBsZW4sIGxvZmZfdCAq b2ZmcCkKPiAtewo+IC0Jc3RydWN0IHNlcV9maWxlICptID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwo+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsKPiAtCWNo YXIgKnRtcGJ1ZjsKPiAtCWludCByZXQ7Cj4gLQo+IC0JaWYgKGxlbiA9PSAwKQo+IC0JCXJldHVy biAwOwo+IC0KPiAtCWlmIChsZW4gPiBQQUdFX1NJWkUgLSAxKSB7Cj4gLQkJRFJNX0RFQlVHX0RS SVZFUigiZXhwZWN0ZWQgPCVsdSBieXRlcyBpbnRvIHBpcGUgY3JjIGNvbnRyb2xcbiIsCj4gLQkJ CQkgUEFHRV9TSVpFKTsKPiAtCQlyZXR1cm4gLUUyQklHOwo+IC0JfQo+IC0KPiAtCXRtcGJ1ZiA9 IG1lbWR1cF91c2VyX251bCh1YnVmLCBsZW4pOwo+IC0JaWYgKElTX0VSUih0bXBidWYpKQo+IC0J CXJldHVybiBQVFJfRVJSKHRtcGJ1Zik7Cj4gLQo+IC0JcmV0ID0gZGlzcGxheV9jcmNfY3RsX3Bh cnNlKGRldl9wcml2LCB0bXBidWYsIGxlbik7Cj4gLQo+IC0Ja2ZyZWUodG1wYnVmKTsKPiAtCWlm IChyZXQgPCAwKQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JKm9mZnAgKz0gbGVuOwo+IC0JcmV0 dXJuIGxlbjsKPiAtfQo+IC0KPiAtY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpOTE1X2Rp c3BsYXlfY3JjX2N0bF9mb3BzID0gewo+IC0JLm93bmVyID0gVEhJU19NT0RVTEUsCj4gLQkub3Bl biA9IGRpc3BsYXlfY3JjX2N0bF9vcGVuLAo+IC0JLnJlYWQgPSBzZXFfcmVhZCwKPiAtCS5sbHNl ZWsgPSBzZXFfbHNlZWssCj4gLQkucmVsZWFzZSA9IHNpbmdsZV9yZWxlYXNlLAo+IC0JLndyaXRl ID0gZGlzcGxheV9jcmNfY3RsX3dyaXRlCj4gLX07Cj4gLQo+ICB2b2lkIGludGVsX2Rpc3BsYXlf Y3JjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAllbnVt IHBpcGUgcGlwZTsKPiBAQCAtODg3LDMwICs0NjQsOCBAQCB2b2lkIGludGVsX2Rpc3BsYXlfY3Jj X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJZm9yX2VhY2hfcGlw ZShkZXZfcHJpdiwgcGlwZSkgewo+ICAJCXN0cnVjdCBpbnRlbF9waXBlX2NyYyAqcGlwZV9jcmMg PSAmZGV2X3ByaXYtPnBpcGVfY3JjW3BpcGVdOwo+ICAKPiAtCQlwaXBlX2NyYy0+b3BlbmVkID0g ZmFsc2U7Cj4gIAkJc3Bpbl9sb2NrX2luaXQoJnBpcGVfY3JjLT5sb2NrKTsKPiAtCQlpbml0X3dh aXRxdWV1ZV9oZWFkKCZwaXBlX2NyYy0+d3EpOwo+IC0JfQo+IC19Cj4gLQo+IC1pbnQgaW50ZWxf cGlwZV9jcmNfY3JlYXRlKHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKQo+IC17Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG1pbm9yLT5kZXYpOwo+IC0Jc3Ry dWN0IGRlbnRyeSAqZW50Owo+IC0JaW50IGk7Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUoaTkxNV9waXBlX2NyY19kYXRhKTsgaSsrKSB7Cj4gLQkJc3RydWN0IHBpcGVfY3JjX2lu Zm8gKmluZm8gPSAmaTkxNV9waXBlX2NyY19kYXRhW2ldOwo+IC0KPiAtCQlpbmZvLT5kZXZfcHJp diA9IGRldl9wcml2Owo+IC0JCWVudCA9IGRlYnVnZnNfY3JlYXRlX2ZpbGUoaW5mby0+bmFtZSwg U19JUlVHTywKPiAtCQkJCQkgIG1pbm9yLT5kZWJ1Z2ZzX3Jvb3QsIGluZm8sCj4gLQkJCQkJICAm aTkxNV9waXBlX2NyY19mb3BzKTsKPiAtCQlpZiAoIWVudCkKPiAtCQkJcmV0dXJuIC1FTk9NRU07 Cj4gIAl9Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gIH0KPiAgCj4gIGludCBpbnRlbF9jcnRjX3NldF9j cmNfc291cmNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgY29uc3QgY2hhciAqc291cmNlX25hbWUs CgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIEdyYXBoaWNzIENlbnRlcgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK