From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: Remove support for legacy debugfs crc interface Date: Thu, 2 Nov 2017 16:27:12 +0200 Message-ID: <20171102142712.GO10981@intel.com> References: <20171102135651.9329-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 E5D2B6E91F for ; Thu, 2 Nov 2017 14:27:31 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20171102135651.9329-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 Cc: Tomi Sarvela , Jani Nikula , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBOb3YgMDIsIDIwMTcgYXQgMDI6NTY6NTFQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gVGhpcyBpbnRlcmZhY2UgaXMgZGVwcmVjYXRlZCwgYW5kIGhhcyBiZWVuIHJl cGxhY2VkIGJ5IHRoZSB1cHN0cmVhbQo+IGRybSBjcmMgaW50ZXJmYWNlLgoKQmVmb3JlIHdlIG51 a2UgdGhpcyBJIHdvdWxkIGxpa2UgdG8gc2VlIGFuIG9wdGlvbiBpbiB0aGUgbmV3IGludGVyZmFj ZQp0byBub3QgZmlsdGVyIG91dCB0aGUgImJhZCIgQ1JDcy4gV2hlbiBhbmFseXppbmcgaG93IHRo ZSBoYXJkd2FyZQpiZWhhdmVzIHNlZWluZyBldmVyeSBDUkMgY2FuIGJlIHZhbHVhYmxlLiBBbmQg SSdtIG5vdCBhdCBhbGwgY29udmluY2VkCndlIHNob3VsZCBiZSBkcm9wcGluZyBhcyBtYW55IENS Q3MgYXMgd2UgYXJlIGN1cnJlbnRseS4KCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5r aG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiBDYzogVG9taSBTYXJ2 ZWxhIDx0b21pLnAuc2FydmVsYUBpbnRlbC5jb20+Cj4gQ2M6IFBldHJpIExhdHZhbGEgPHBldHJp LmxhdHZhbGFAaW50ZWwuY29tPgo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwu Y29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgIHwgICA3 ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgfCAgMTAgLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgIHwgIDc5ICsrLS0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgIHwgICAyIC0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYyB8IDQ0NiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gIDUgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgNTIxIGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggN2VmZTU3 YzA3MDNlLi5hMzYyMzcwZTVhNjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu Ywo+IEBAIC00OTkxLDcgKzQ5OTEsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfZGVidWdm c19maWxlcyB7Cj4gIAl7Imk5MTVfZ3B1X2luZm8iLCAmaTkxNV9ncHVfaW5mb19mb3BzfSwKPiAg I2VuZGlmCj4gIAl7Imk5MTVfbmV4dF9zZXFubyIsICZpOTE1X25leHRfc2Vxbm9fZm9wc30sCj4g LQl7Imk5MTVfZGlzcGxheV9jcmNfY3RsIiwgJmk5MTVfZGlzcGxheV9jcmNfY3RsX2ZvcHN9LAo+ ICAJeyJpOTE1X3ByaV93bV9sYXRlbmN5IiwgJmk5MTVfcHJpX3dtX2xhdGVuY3lfZm9wc30sCj4g IAl7Imk5MTVfc3ByX3dtX2xhdGVuY3kiLCAmaTkxNV9zcHJfd21fbGF0ZW5jeV9mb3BzfSwKPiAg CXsiaTkxNV9jdXJfd21fbGF0ZW5jeSIsICZpOTE1X2N1cl93bV9sYXRlbmN5X2ZvcHN9LAo+IEBA IC01MDA4LDcgKzUwMDcsNyBAQCBpbnQgaTkxNV9kZWJ1Z2ZzX3JlZ2lzdGVyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJc3RydWN0IGRybV9taW5vciAqbWlub3Ig PSBkZXZfcHJpdi0+ZHJtLnByaW1hcnk7Cj4gIAlzdHJ1Y3QgZGVudHJ5ICplbnQ7Cj4gLQlpbnQg cmV0LCBpOwo+ICsJaW50IGk7Cj4gIAo+ICAJZW50ID0gZGVidWdmc19jcmVhdGVfZmlsZSgiaTkx NV9mb3JjZXdha2VfdXNlciIsIFNfSVJVU1IsCj4gIAkJCQkgIG1pbm9yLT5kZWJ1Z2ZzX3Jvb3Qs IHRvX2k5MTUobWlub3ItPmRldiksCj4gQEAgLTUwMTYsMTAgKzUwMTUsNiBAQCBpbnQgaTkxNV9k ZWJ1Z2ZzX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlm ICghZW50KQo+ICAJCXJldHVybiAtRU5PTUVNOwo+ICAKPiAtCXJldCA9IGludGVsX3BpcGVfY3Jj X2NyZWF0ZShtaW5vcik7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+ICAJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaTkxNV9kZWJ1Z2ZzX2ZpbGVzKTsgaSsrKSB7Cj4gIAkJ ZW50ID0gZGVidWdmc19jcmVhdGVfZmlsZShpOTE1X2RlYnVnZnNfZmlsZXNbaV0ubmFtZSwKPiAg CQkJCQkgIFNfSVJVR08gfCBTX0lXVVNSLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4 IGQzN2ZkMTE5MDhkMC4uZjQyOTBjOTczOWUxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gQEAgLTE5NDgsMTkgKzE5NDgsOSBAQCBlbnVtIGludGVsX3BpcGVfY3JjX3NvdXJjZSB7Cj4g IAlJTlRFTF9QSVBFX0NSQ19TT1VSQ0VfTUFYLAo+ICB9Owo+ICAKPiAtc3RydWN0IGludGVsX3Bp cGVfY3JjX2VudHJ5IHsKPiAtCXVpbnQzMl90IGZyYW1lOwo+IC0JdWludDMyX3QgY3JjWzVdOwo+ IC19Owo+IC0KPiAgI2RlZmluZSBJTlRFTF9QSVBFX0NSQ19FTlRSSUVTX05SCTEyOAo+ICBzdHJ1 Y3QgaW50ZWxfcGlwZV9jcmMgewo+ICAJc3BpbmxvY2tfdCBsb2NrOwo+IC0JYm9vbCBvcGVuZWQ7 CQkvKiBleGNsdXNpdmUgYWNjZXNzIHRvIHRoZSByZXN1bHQgZmlsZSAqLwo+IC0Jc3RydWN0IGlu dGVsX3BpcGVfY3JjX2VudHJ5ICplbnRyaWVzOwo+IC0JZW51bSBpbnRlbF9waXBlX2NyY19zb3Vy Y2Ugc291cmNlOwo+IC0JaW50IGhlYWQsIHRhaWw7Cj4gLQl3YWl0X3F1ZXVlX2hlYWRfdCB3cTsK PiAgCWludCBza2lwcGVkOwo+ICB9Owo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBpbmRl eCBmZjAwZTQ2MjY5N2EuLmJlMTE5Y2I1NjdhNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu Ywo+IEBAIC0xNjEzLDY5ICsxNjEzLDM0IEBAIHN0YXRpYyB2b2lkIGRpc3BsYXlfcGlwZV9jcmNf aXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJCSB1 aW50MzJfdCBjcmM0KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmMgKnBpcGVfY3JjID0g JmRldl9wcml2LT5waXBlX2NyY1twaXBlXTsKPiAtCXN0cnVjdCBpbnRlbF9waXBlX2NyY19lbnRy eSAqZW50cnk7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGludGVsX2dldF9jcnRjX2Zv cl9waXBlKGRldl9wcml2LCBwaXBlKTsKPiAtCXN0cnVjdCBkcm1fZHJpdmVyICpkcml2ZXIgPSBk ZXZfcHJpdi0+ZHJtLmRyaXZlcjsKPiAgCXVpbnQzMl90IGNyY3NbNV07Cj4gLQlpbnQgaGVhZCwg dGFpbDsKPiAgCj4gIAlzcGluX2xvY2soJnBpcGVfY3JjLT5sb2NrKTsKPiAtCWlmIChwaXBlX2Ny Yy0+c291cmNlKSB7Cj4gLQkJaWYgKCFwaXBlX2NyYy0+ZW50cmllcykgewo+IC0JCQlzcGluX3Vu bG9jaygmcGlwZV9jcmMtPmxvY2spOwo+IC0JCQlEUk1fREVCVUdfS01TKCJzcHVyaW91cyBpbnRl cnJ1cHRcbiIpOwo+IC0JCQlyZXR1cm47Cj4gLQkJfQo+IC0KPiAtCQloZWFkID0gcGlwZV9jcmMt PmhlYWQ7Cj4gLQkJdGFpbCA9IHBpcGVfY3JjLT50YWlsOwo+IC0KPiAtCQlpZiAoQ0lSQ19TUEFD RShoZWFkLCB0YWlsLCBJTlRFTF9QSVBFX0NSQ19FTlRSSUVTX05SKSA8IDEpIHsKPiAtCQkJc3Bp bl91bmxvY2soJnBpcGVfY3JjLT5sb2NrKTsKPiAtCQkJRFJNX0VSUk9SKCJDUkMgYnVmZmVyIG92 ZXJmbG93aW5nXG4iKTsKPiAtCQkJcmV0dXJuOwo+IC0JCX0KPiAtCj4gLQkJZW50cnkgPSAmcGlw ZV9jcmMtPmVudHJpZXNbaGVhZF07Cj4gLQo+IC0JCWVudHJ5LT5mcmFtZSA9IGRyaXZlci0+Z2V0 X3ZibGFua19jb3VudGVyKCZkZXZfcHJpdi0+ZHJtLCBwaXBlKTsKPiAtCQllbnRyeS0+Y3JjWzBd ID0gY3JjMDsKPiAtCQllbnRyeS0+Y3JjWzFdID0gY3JjMTsKPiAtCQllbnRyeS0+Y3JjWzJdID0g Y3JjMjsKPiAtCQllbnRyeS0+Y3JjWzNdID0gY3JjMzsKPiAtCQllbnRyeS0+Y3JjWzRdID0gY3Jj NDsKPiAtCj4gLQkJaGVhZCA9IChoZWFkICsgMSkgJiAoSU5URUxfUElQRV9DUkNfRU5UUklFU19O UiAtIDEpOwo+IC0JCXBpcGVfY3JjLT5oZWFkID0gaGVhZDsKPiAtCj4gLQkJc3Bpbl91bmxvY2so JnBpcGVfY3JjLT5sb2NrKTsKPiAtCj4gLQkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZwaXBlX2Ny Yy0+d3EpOwo+IC0JfSBlbHNlIHsKPiAtCQkvKgo+IC0JCSAqIEZvciBzb21lIG5vdCB5ZXQgaWRl bnRpZmllZCByZWFzb24sIHRoZSBmaXJzdCBDUkMgaXMKPiAtCQkgKiBib25rZXJzLiBTbyBsZXQn cyBqdXN0IHdhaXQgZm9yIHRoZSBuZXh0IHZibGFuayBhbmQgcmVhZAo+IC0JCSAqIG91dCB0aGUg YnVnZ3kgcmVzdWx0Lgo+IC0JCSAqCj4gLQkJICogT24gR0VOOCsgc29tZXRpbWVzIHRoZSBzZWNv bmQgQ1JDIGlzIGJvbmtlcnMgYXMgd2VsbCwgc28KPiAtCQkgKiBkb24ndCB0cnVzdCB0aGF0IG9u ZSBlaXRoZXIuCj4gLQkJICovCj4gLQkJaWYgKHBpcGVfY3JjLT5za2lwcGVkID09IDAgfHwKPiAt CQkgICAgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCAmJiBwaXBlX2NyYy0+c2tpcHBlZCA9PSAx KSkgewo+IC0JCQlwaXBlX2NyYy0+c2tpcHBlZCsrOwo+IC0JCQlzcGluX3VubG9jaygmcGlwZV9j cmMtPmxvY2spOwo+IC0JCQlyZXR1cm47Cj4gLQkJfQo+ICsJLyoKPiArCSAqIEZvciBzb21lIG5v dCB5ZXQgaWRlbnRpZmllZCByZWFzb24sIHRoZSBmaXJzdCBDUkMgaXMKPiArCSAqIGJvbmtlcnMu IFNvIGxldCdzIGp1c3Qgd2FpdCBmb3IgdGhlIG5leHQgdmJsYW5rIGFuZCByZWFkCj4gKwkgKiBv dXQgdGhlIGJ1Z2d5IHJlc3VsdC4KPiArCSAqCj4gKwkgKiBPbiBHRU44KyBzb21ldGltZXMgdGhl IHNlY29uZCBDUkMgaXMgYm9ua2VycyBhcyB3ZWxsLCBzbwo+ICsJICogZG9uJ3QgdHJ1c3QgdGhh dCBvbmUgZWl0aGVyLgo+ICsJICovCj4gKwlpZiAocGlwZV9jcmMtPnNraXBwZWQgPT0gMCB8fAo+ ICsJICAgIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDggJiYgcGlwZV9jcmMtPnNraXBwZWQgPT0g MSkpIHsKPiArCQlwaXBlX2NyYy0+c2tpcHBlZCsrOwo+ICAJCXNwaW5fdW5sb2NrKCZwaXBlX2Ny Yy0+bG9jayk7Cj4gLQkJY3Jjc1swXSA9IGNyYzA7Cj4gLQkJY3Jjc1sxXSA9IGNyYzE7Cj4gLQkJ Y3Jjc1syXSA9IGNyYzI7Cj4gLQkJY3Jjc1szXSA9IGNyYzM7Cj4gLQkJY3Jjc1s0XSA9IGNyYzQ7 Cj4gLQkJZHJtX2NydGNfYWRkX2NyY19lbnRyeSgmY3J0Yy0+YmFzZSwgdHJ1ZSwKPiAtCQkJCSAg ICAgICBkcm1fY3J0Y19hY2N1cmF0ZV92YmxhbmtfY291bnQoJmNydGMtPmJhc2UpLAo+IC0JCQkJ ICAgICAgIGNyY3MpOwo+ICsJCXJldHVybjsKPiAgCX0KPiArCXNwaW5fdW5sb2NrKCZwaXBlX2Ny Yy0+bG9jayk7Cj4gKwo+ICsJY3Jjc1swXSA9IGNyYzA7Cj4gKwljcmNzWzFdID0gY3JjMTsKPiAr CWNyY3NbMl0gPSBjcmMyOwo+ICsJY3Jjc1szXSA9IGNyYzM7Cj4gKwljcmNzWzRdID0gY3JjNDsK PiArCWRybV9jcnRjX2FkZF9jcmNfZW50cnkoJmNydGMtPmJhc2UsIHRydWUsCj4gKwkJCQlkcm1f Y3J0Y19hY2N1cmF0ZV92YmxhbmtfY291bnQoJmNydGMtPmJhc2UpLAo+ICsJCQkJY3Jjcyk7Cj4g IH0KPiAgI2Vsc2UKPiAgc3RhdGljIGlubGluZSB2b2lkCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiBpbmRleCAyZjhiOWFmMjI1ZWYuLjZiMDMwYjZmYjcwMCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gQEAgLTIwMTMsMTIgKzIwMTMsMTAgQEAgdm9pZCBsc3Bjb25fcmVzdW1l KHN0cnVjdCBpbnRlbF9sc3Bjb24gKmxzcGNvbik7Cj4gIHZvaWQgbHNwY29uX3dhaXRfcGNvbl9t b2RlKHN0cnVjdCBpbnRlbF9sc3Bjb24gKmxzcGNvbik7Cj4gIAo+ICAvKiBpbnRlbF9waXBlX2Ny Yy5jICovCj4gLWludCBpbnRlbF9waXBlX2NyY19jcmVhdGUoc3RydWN0IGRybV9taW5vciAqbWlu b3IpOwo+ICAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCj4gIGludCBpbnRlbF9jcnRjX3NldF9jcmNf c291cmNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgY29uc3QgY2hhciAqc291cmNlX25hbWUsCj4g IAkJCSAgICAgIHNpemVfdCAqdmFsdWVzX2NudCk7Cj4gICNlbHNlCj4gICNkZWZpbmUgaW50ZWxf Y3J0Y19zZXRfY3JjX3NvdXJjZSBOVUxMCj4gICNlbmRpZgo+IC1leHRlcm4gY29uc3Qgc3RydWN0 IGZpbGVfb3BlcmF0aW9ucyBpOTE1X2Rpc3BsYXlfY3JjX2N0bF9mb3BzOwo+ICAjZW5kaWYgLyog X19JTlRFTF9EUlZfSF9fICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BpcGVfY3JjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9waXBlX2NyYy5jCj4g aW5kZXggODk5ODM5ZjJmN2M2Li40Y2E0YmE1YTE0NWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BpcGVfY3JjLmMKPiBAQCAtMzAsMTYwICszMCw2IEBACj4gICNpbmNsdWRlIDxsaW51 eC9kZWJ1Z2ZzLmg+Cj4gICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiAgCj4gLXN0cnVjdCBwaXBl X2NyY19pbmZvIHsKPiAtCWNvbnN0IGNoYXIgKm5hbWU7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXY7Cj4gLQllbnVtIHBpcGUgcGlwZTsKPiAtfTsKPiAtCj4gLXN0YXRpYyBp bnQgaTkxNV9waXBlX2NyY19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpm aWxlcCkKPiAtewo+IC0Jc3RydWN0IHBpcGVfY3JjX2luZm8gKmluZm8gPSBpbm9kZS0+aV9wcml2 YXRlOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gaW5mby0+ZGV2X3By aXY7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmMgKnBpcGVfY3JjID0gJmRldl9wcml2LT5waXBl X2NyY1tpbmZvLT5waXBlXTsKPiAtCj4gLQlpZiAoaW5mby0+cGlwZSA+PSBJTlRFTF9JTkZPKGRl dl9wcml2KS0+bnVtX3BpcGVzKQo+IC0JCXJldHVybiAtRU5PREVWOwo+IC0KPiAtCXNwaW5fbG9j a19pcnEoJnBpcGVfY3JjLT5sb2NrKTsKPiAtCj4gLQlpZiAocGlwZV9jcmMtPm9wZW5lZCkgewo+ IC0JCXNwaW5fdW5sb2NrX2lycSgmcGlwZV9jcmMtPmxvY2spOwo+IC0JCXJldHVybiAtRUJVU1k7 IC8qIGFscmVhZHkgb3BlbiAqLwo+IC0JfQo+IC0KPiAtCXBpcGVfY3JjLT5vcGVuZWQgPSB0cnVl Owo+IC0JZmlsZXAtPnByaXZhdGVfZGF0YSA9IGlub2RlLT5pX3ByaXZhdGU7Cj4gLQo+IC0Jc3Bp bl91bmxvY2tfaXJxKCZwaXBlX2NyYy0+bG9jayk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAt Cj4gLXN0YXRpYyBpbnQgaTkxNV9waXBlX2NyY19yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHN0cnVjdCBmaWxlICpmaWxlcCkKPiAtewo+IC0Jc3RydWN0IHBpcGVfY3JjX2luZm8gKmluZm8g PSBpbm9kZS0+aV9wcml2YXRlOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gaW5mby0+ZGV2X3ByaXY7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmMgKnBpcGVfY3JjID0g JmRldl9wcml2LT5waXBlX2NyY1tpbmZvLT5waXBlXTsKPiAtCj4gLQlzcGluX2xvY2tfaXJxKCZw aXBlX2NyYy0+bG9jayk7Cj4gLQlwaXBlX2NyYy0+b3BlbmVkID0gZmFsc2U7Cj4gLQlzcGluX3Vu bG9ja19pcnEoJnBpcGVfY3JjLT5sb2NrKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAt LyogKDYgZmllbGRzLCA4IGNoYXJzIGVhY2gsIHNwYWNlIHNlcGFyYXRlZCAoNSkgKyAnXG4nKSAq Lwo+IC0jZGVmaW5lIFBJUEVfQ1JDX0xJTkVfTEVOCSg2ICogOCArIDUgKyAxKQo+IC0vKiBhY2Nv dW50IGZvciBcJzAnICovCj4gLSNkZWZpbmUgUElQRV9DUkNfQlVGRkVSX0xFTgkoUElQRV9DUkNf TElORV9MRU4gKyAxKQo+IC0KPiAtc3RhdGljIGludCBwaXBlX2NyY19kYXRhX2NvdW50KHN0cnVj dCBpbnRlbF9waXBlX2NyYyAqcGlwZV9jcmMpCj4gLXsKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JnBpcGVfY3JjLT5sb2NrKTsKPiAtCXJldHVybiBDSVJDX0NOVChwaXBlX2NyYy0+aGVhZCwgcGlw ZV9jcmMtPnRhaWwsCj4gLQkJCUlOVEVMX1BJUEVfQ1JDX0VOVFJJRVNfTlIpOwo+IC19Cj4gLQo+ IC1zdGF0aWMgc3NpemVfdAo+IC1pOTE1X3BpcGVfY3JjX3JlYWQoc3RydWN0IGZpbGUgKmZpbGVw LCBjaGFyIF9fdXNlciAqdXNlcl9idWYsIHNpemVfdCBjb3VudCwKPiAtCQkgICBsb2ZmX3QgKnBv cykKPiAtewo+IC0Jc3RydWN0IHBpcGVfY3JjX2luZm8gKmluZm8gPSBmaWxlcC0+cHJpdmF0ZV9k YXRhOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gaW5mby0+ZGV2X3By aXY7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmMgKnBpcGVfY3JjID0gJmRldl9wcml2LT5waXBl X2NyY1tpbmZvLT5waXBlXTsKPiAtCWNoYXIgYnVmW1BJUEVfQ1JDX0JVRkZFUl9MRU5dOwo+IC0J aW50IG5fZW50cmllczsKPiAtCXNzaXplX3QgYnl0ZXNfcmVhZDsKPiAtCj4gLQkvKgo+IC0JICog RG9uJ3QgYWxsb3cgdXNlciBzcGFjZSB0byBwcm92aWRlIGJ1ZmZlcnMgbm90IGJpZyBlbm91Z2gg dG8gaG9sZAo+IC0JICogYSBsaW5lIG9mIGRhdGEuCj4gLQkgKi8KPiAtCWlmIChjb3VudCA8IFBJ UEVfQ1JDX0xJTkVfTEVOKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCWlmIChwaXBlX2Ny Yy0+c291cmNlID09IElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9OT05FKQo+IC0JCXJldHVybiAwOwo+ IC0KPiAtCS8qIG5vdGhpbmcgdG8gcmVhZCAqLwo+IC0Jc3Bpbl9sb2NrX2lycSgmcGlwZV9jcmMt PmxvY2spOwo+IC0Jd2hpbGUgKHBpcGVfY3JjX2RhdGFfY291bnQocGlwZV9jcmMpID09IDApIHsK PiAtCQlpbnQgcmV0Owo+IC0KPiAtCQlpZiAoZmlsZXAtPmZfZmxhZ3MgJiBPX05PTkJMT0NLKSB7 Cj4gLQkJCXNwaW5fdW5sb2NrX2lycSgmcGlwZV9jcmMtPmxvY2spOwo+IC0JCQlyZXR1cm4gLUVB R0FJTjsKPiAtCQl9Cj4gLQo+IC0JCXJldCA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV9sb2Nr X2lycShwaXBlX2NyYy0+d3EsCj4gLQkJCQlwaXBlX2NyY19kYXRhX2NvdW50KHBpcGVfY3JjKSwg cGlwZV9jcmMtPmxvY2spOwo+IC0JCWlmIChyZXQpIHsKPiAtCQkJc3Bpbl91bmxvY2tfaXJxKCZw aXBlX2NyYy0+bG9jayk7Cj4gLQkJCXJldHVybiByZXQ7Cj4gLQkJfQo+IC0JfQo+IC0KPiAtCS8q IFdlIG5vdyBoYXZlIG9uZSBvciBtb3JlIGVudHJpZXMgdG8gcmVhZCAqLwo+IC0Jbl9lbnRyaWVz ID0gY291bnQgLyBQSVBFX0NSQ19MSU5FX0xFTjsKPiAtCj4gLQlieXRlc19yZWFkID0gMDsKPiAt CXdoaWxlIChuX2VudHJpZXMgPiAwKSB7Cj4gLQkJc3RydWN0IGludGVsX3BpcGVfY3JjX2VudHJ5 ICplbnRyeSA9Cj4gLQkJCSZwaXBlX2NyYy0+ZW50cmllc1twaXBlX2NyYy0+dGFpbF07Cj4gLQo+ IC0JCWlmIChDSVJDX0NOVChwaXBlX2NyYy0+aGVhZCwgcGlwZV9jcmMtPnRhaWwsCj4gLQkJCSAg ICAgSU5URUxfUElQRV9DUkNfRU5UUklFU19OUikgPCAxKQo+IC0JCQlicmVhazsKPiAtCj4gLQkJ QlVJTERfQlVHX09OX05PVF9QT1dFUl9PRl8yKElOVEVMX1BJUEVfQ1JDX0VOVFJJRVNfTlIpOwo+ IC0JCXBpcGVfY3JjLT50YWlsID0gKHBpcGVfY3JjLT50YWlsICsgMSkgJgo+IC0JCQkJIChJTlRF TF9QSVBFX0NSQ19FTlRSSUVTX05SIC0gMSk7Cj4gLQo+IC0JCWJ5dGVzX3JlYWQgKz0gc25wcmlu dGYoYnVmLCBQSVBFX0NSQ19CVUZGRVJfTEVOLAo+IC0JCQkJICAgICAgICIlOHUgJTh4ICU4eCAl OHggJTh4ICU4eFxuIiwKPiAtCQkJCSAgICAgICBlbnRyeS0+ZnJhbWUsIGVudHJ5LT5jcmNbMF0s Cj4gLQkJCQkgICAgICAgZW50cnktPmNyY1sxXSwgZW50cnktPmNyY1syXSwKPiAtCQkJCSAgICAg ICBlbnRyeS0+Y3JjWzNdLCBlbnRyeS0+Y3JjWzRdKTsKPiAtCj4gLQkJc3Bpbl91bmxvY2tfaXJx KCZwaXBlX2NyYy0+bG9jayk7Cj4gLQo+IC0JCWlmIChjb3B5X3RvX3VzZXIodXNlcl9idWYsIGJ1 ZiwgUElQRV9DUkNfTElORV9MRU4pKQo+IC0JCQlyZXR1cm4gLUVGQVVMVDsKPiAtCj4gLQkJdXNl cl9idWYgKz0gUElQRV9DUkNfTElORV9MRU47Cj4gLQkJbl9lbnRyaWVzLS07Cj4gLQo+IC0JCXNw aW5fbG9ja19pcnEoJnBpcGVfY3JjLT5sb2NrKTsKPiAtCX0KPiAtCj4gLQlzcGluX3VubG9ja19p cnEoJnBpcGVfY3JjLT5sb2NrKTsKPiAtCj4gLQlyZXR1cm4gYnl0ZXNfcmVhZDsKPiAtfQo+IC0K PiAtc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaTkxNV9waXBlX2NyY19mb3Bz ID0gewo+IC0JLm93bmVyID0gVEhJU19NT0RVTEUsCj4gLQkub3BlbiA9IGk5MTVfcGlwZV9jcmNf b3BlbiwKPiAtCS5yZWFkID0gaTkxNV9waXBlX2NyY19yZWFkLAo+IC0JLnJlbGVhc2UgPSBpOTE1 X3BpcGVfY3JjX3JlbGVhc2UsCj4gLX07Cj4gLQo+IC1zdGF0aWMgc3RydWN0IHBpcGVfY3JjX2lu Zm8gaTkxNV9waXBlX2NyY19kYXRhW0k5MTVfTUFYX1BJUEVTXSA9IHsKPiAtCXsKPiAtCQkubmFt ZSA9ICJpOTE1X3BpcGVfQV9jcmMiLAo+IC0JCS5waXBlID0gUElQRV9BLAo+IC0JfSwKPiAtCXsK PiAtCQkubmFtZSA9ICJpOTE1X3BpcGVfQl9jcmMiLAo+IC0JCS5waXBlID0gUElQRV9CLAo+IC0J fSwKPiAtCXsKPiAtCQkubmFtZSA9ICJpOTE1X3BpcGVfQ19jcmMiLAo+IC0JCS5waXBlID0gUElQ RV9DLAo+IC0JfSwKPiAtfTsKPiAtCj4gIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcGlwZV9j cmNfc291cmNlc1tdID0gewo+ICAJIm5vbmUiLAo+ICAJInBsYW5lMSIsCj4gQEAgLTE5NywyOSAr NDMsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBpcGVfY3JjX3NvdXJjZXNbXSA9IHsK PiAgCSJhdXRvIiwKPiAgfTsKPiAgCj4gLXN0YXRpYyBjb25zdCBjaGFyICpwaXBlX2NyY19zb3Vy Y2VfbmFtZShlbnVtIGludGVsX3BpcGVfY3JjX3NvdXJjZSBzb3VyY2UpCj4gLXsKPiAtCUJVSUxE X0JVR19PTihBUlJBWV9TSVpFKHBpcGVfY3JjX3NvdXJjZXMpICE9IElOVEVMX1BJUEVfQ1JDX1NP VVJDRV9NQVgpOwo+IC0JcmV0dXJuIHBpcGVfY3JjX3NvdXJjZXNbc291cmNlXTsKPiAtfQo+IC0K PiAtc3RhdGljIGludCBkaXNwbGF5X2NyY19jdGxfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKmRhdGEpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG0t PnByaXZhdGU7Cj4gLQllbnVtIHBpcGUgcGlwZTsKPiAtCj4gLQlmb3JfZWFjaF9waXBlKGRldl9w cml2LCBwaXBlKQo+IC0JCXNlcV9wcmludGYobSwgIiVjICVzXG4iLCBwaXBlX25hbWUocGlwZSks Cj4gLQkJCSAgIHBpcGVfY3JjX3NvdXJjZV9uYW1lKGRldl9wcml2LT5waXBlX2NyY1twaXBlXS5z b3VyY2UpKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBkaXNwbGF5 X2NyY19jdGxfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiAt ewo+IC0JcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIGRpc3BsYXlfY3JjX2N0bF9zaG93LCBpbm9k ZS0+aV9wcml2YXRlKTsKPiAtfQo+IC0KPiAgc3RhdGljIGludCBpOHh4X3BpcGVfY3JjX2N0bF9y ZWcoZW51bSBpbnRlbF9waXBlX2NyY19zb3VyY2UgKnNvdXJjZSwKPiAgCQkJCSB1aW50MzJfdCAq dmFsKQo+ICB7Cj4gQEAgLTYxNiwxNzggKzQzOSw2IEBAIHN0YXRpYyBpbnQgZ2V0X25ld19jcmNf Y3RsX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJcmV0dXJuIGl2 Yl9waXBlX2NyY19jdGxfcmVnKGRldl9wcml2LCBwaXBlLCBzb3VyY2UsIHZhbCk7Cj4gIH0KPiAg Cj4gLXN0YXRpYyBpbnQgcGlwZV9jcmNfc2V0X3NvdXJjZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gLQkJCSAgICAgICBlbnVtIHBpcGUgcGlwZSwKPiAtCQkJICAgICAgIGVu dW0gaW50ZWxfcGlwZV9jcmNfc291cmNlIHNvdXJjZSkKPiAtewo+IC0Jc3RydWN0IGludGVsX3Bp cGVfY3JjICpwaXBlX2NyYyA9ICZkZXZfcHJpdi0+cGlwZV9jcmNbcGlwZV07Cj4gLQllbnVtIGlu dGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBvd2VyX2RvbWFpbjsKPiAtCXUzMiB2YWwgPSAwOyAv KiBzaHV0IHVwIGdjYyAqLwo+IC0JaW50IHJldDsKPiAtCj4gLQlpZiAocGlwZV9jcmMtPnNvdXJj ZSA9PSBzb3VyY2UpCj4gLQkJcmV0dXJuIDA7Cj4gLQo+IC0JLyogZm9yYmlkIGNoYW5naW5nIHRo ZSBzb3VyY2Ugd2l0aG91dCBnb2luZyBiYWNrIHRvICdub25lJyAqLwo+IC0JaWYgKHBpcGVfY3Jj LT5zb3VyY2UgJiYgc291cmNlKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCXBvd2VyX2Rv bWFpbiA9IFBPV0VSX0RPTUFJTl9QSVBFKHBpcGUpOwo+IC0JaWYgKCFpbnRlbF9kaXNwbGF5X3Bv d2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBwb3dlcl9kb21haW4pKSB7Cj4gLQkJRFJNX0RF QlVHX0tNUygiVHJ5aW5nIHRvIGNhcHR1cmUgQ1JDIHdoaWxlIHBpcGUgaXMgb2ZmXG4iKTsKPiAt CQlyZXR1cm4gLUVJTzsKPiAtCX0KPiAtCj4gLQlyZXQgPSBnZXRfbmV3X2NyY19jdGxfcmVnKGRl dl9wcml2LCBwaXBlLCAmc291cmNlLCAmdmFsKTsKPiAtCWlmIChyZXQgIT0gMCkKPiAtCQlnb3Rv IG91dDsKPiAtCj4gLQkvKiBub25lIC0+IHJlYWwgc291cmNlIHRyYW5zaXRpb24gKi8KPiAtCWlm IChzb3VyY2UpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmNfZW50cnkgKmVudHJpZXM7Cj4g LQo+IC0JCURSTV9ERUJVR19EUklWRVIoImNvbGxlY3RpbmcgQ1JDcyBmb3IgcGlwZSAlYywgJXNc biIsCj4gLQkJCQkgcGlwZV9uYW1lKHBpcGUpLCBwaXBlX2NyY19zb3VyY2VfbmFtZShzb3VyY2Up KTsKPiAtCj4gLQkJZW50cmllcyA9IGtjYWxsb2MoSU5URUxfUElQRV9DUkNfRU5UUklFU19OUiwK PiAtCQkJCSAgc2l6ZW9mKHBpcGVfY3JjLT5lbnRyaWVzWzBdKSwKPiAtCQkJCSAgR0ZQX0tFUk5F TCk7Cj4gLQkJaWYgKCFlbnRyaWVzKSB7Cj4gLQkJCXJldCA9IC1FTk9NRU07Cj4gLQkJCWdvdG8g b3V0Owo+IC0JCX0KPiAtCj4gLQkJc3Bpbl9sb2NrX2lycSgmcGlwZV9jcmMtPmxvY2spOwo+IC0J CWtmcmVlKHBpcGVfY3JjLT5lbnRyaWVzKTsKPiAtCQlwaXBlX2NyYy0+ZW50cmllcyA9IGVudHJp ZXM7Cj4gLQkJcGlwZV9jcmMtPmhlYWQgPSAwOwo+IC0JCXBpcGVfY3JjLT50YWlsID0gMDsKPiAt CQlzcGluX3VubG9ja19pcnEoJnBpcGVfY3JjLT5sb2NrKTsKPiAtCX0KPiAtCj4gLQlwaXBlX2Ny Yy0+c291cmNlID0gc291cmNlOwo+IC0KPiAtCUk5MTVfV1JJVEUoUElQRV9DUkNfQ1RMKHBpcGUp LCB2YWwpOwo+IC0JUE9TVElOR19SRUFEKFBJUEVfQ1JDX0NUTChwaXBlKSk7Cj4gLQo+IC0JLyog cmVhbCBzb3VyY2UgLT4gbm9uZSB0cmFuc2l0aW9uICovCj4gLQlpZiAoIXNvdXJjZSkgewo+IC0J CXN0cnVjdCBpbnRlbF9waXBlX2NyY19lbnRyeSAqZW50cmllczsKPiAtCQlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YyA9IGludGVsX2dldF9jcnRjX2Zvcl9waXBlKGRldl9wcml2LAo+IC0JCQkJCQkJ CSAgcGlwZSk7Cj4gLQo+IC0JCURSTV9ERUJVR19EUklWRVIoInN0b3BwaW5nIENSQ3MgZm9yIHBp cGUgJWNcbiIsCj4gLQkJCQkgcGlwZV9uYW1lKHBpcGUpKTsKPiAtCj4gLQkJZHJtX21vZGVzZXRf bG9jaygmY3J0Yy0+YmFzZS5tdXRleCwgTlVMTCk7Cj4gLQkJaWYgKGNydGMtPmJhc2Uuc3RhdGUt PmFjdGl2ZSkKPiAtCQkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldl9wcml2LCBwaXBlKTsKPiAt CQlkcm1fbW9kZXNldF91bmxvY2soJmNydGMtPmJhc2UubXV0ZXgpOwo+IC0KPiAtCQlzcGluX2xv Y2tfaXJxKCZwaXBlX2NyYy0+bG9jayk7Cj4gLQkJZW50cmllcyA9IHBpcGVfY3JjLT5lbnRyaWVz Owo+IC0JCXBpcGVfY3JjLT5lbnRyaWVzID0gTlVMTDsKPiAtCQlwaXBlX2NyYy0+aGVhZCA9IDA7 Cj4gLQkJcGlwZV9jcmMtPnRhaWwgPSAwOwo+IC0JCXNwaW5fdW5sb2NrX2lycSgmcGlwZV9jcmMt PmxvY2spOwo+IC0KPiAtCQlrZnJlZShlbnRyaWVzKTsKPiAtCj4gLQkJaWYgKElTX0c0WChkZXZf cHJpdikpCj4gLQkJCWc0eF91bmRvX3BpcGVfc2NyYW1ibGVfcmVzZXQoZGV2X3ByaXYsIHBpcGUp Owo+IC0JCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpKQo+IC0JCQl2bHZfdW5kb19waXBlX3NjcmFtYmxlX3Jlc2V0KGRldl9wcml2LCBw aXBlKTsKPiAtCQllbHNlIGlmICgoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwKPiAtCQkJICBJU19C Uk9BRFdFTEwoZGV2X3ByaXYpKSAmJiBwaXBlID09IFBJUEVfQSkKPiAtCQkJaHN3X3BpcGVfQV9j cmNfd2EoZGV2X3ByaXYsIGZhbHNlKTsKPiAtCX0KPiAtCj4gLQlyZXQgPSAwOwo+IC0KPiAtb3V0 Ogo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7Cj4g LQo+IC0JcmV0dXJuIHJldDsKPiAtfQo+IC0KPiAtLyoKPiAtICogUGFyc2UgcGlwZSBDUkMgY29t bWFuZCBzdHJpbmdzOgo+IC0gKiAgIGNvbW1hbmQ6IHdzcCogb2JqZWN0IHdzcCsgbmFtZSB3c3Ar IHNvdXJjZSB3c3AqCj4gLSAqICAgb2JqZWN0OiAncGlwZScKPiAtICogICBuYW1lOiAoQSB8IEIg fCBDKQo+IC0gKiAgIHNvdXJjZTogKG5vbmUgfCBwbGFuZTEgfCBwbGFuZTIgfCBwZikKPiAtICog ICB3c3A6ICgjMHgyMCB8ICMweDkgfCAjMHhBKSsKPiAtICoKPiAtICogZWcuOgo+IC0gKiAgInBp cGUgQSBwbGFuZTEiICAtPiAgU3RhcnQgQ1JDIGNvbXB1dGF0aW9ucyBvbiBwbGFuZTEgb2YgcGlw ZSBBCj4gLSAqICAicGlwZSBBIG5vbmUiICAgIC0+ICBTdG9wIENSQwo+IC0gKi8KPiAtc3RhdGlj IGludCBkaXNwbGF5X2NyY19jdGxfdG9rZW5pemUoY2hhciAqYnVmLCBjaGFyICp3b3Jkc1tdLCBp bnQgbWF4X3dvcmRzKQo+IC17Cj4gLQlpbnQgbl93b3JkcyA9IDA7Cj4gLQo+IC0Jd2hpbGUgKCpi dWYpIHsKPiAtCQljaGFyICplbmQ7Cj4gLQo+IC0JCS8qIHNraXAgbGVhZGluZyB3aGl0ZSBzcGFj ZSAqLwo+IC0JCWJ1ZiA9IHNraXBfc3BhY2VzKGJ1Zik7Cj4gLQkJaWYgKCEqYnVmKQo+IC0JCQli cmVhazsJLyogZW5kIG9mIGJ1ZmZlciAqLwo+IC0KPiAtCQkvKiBmaW5kIGVuZCBvZiB3b3JkICov Cj4gLQkJZm9yIChlbmQgPSBidWY7ICplbmQgJiYgIWlzc3BhY2UoKmVuZCk7IGVuZCsrKQo+IC0J CQk7Cj4gLQo+IC0JCWlmIChuX3dvcmRzID09IG1heF93b3Jkcykgewo+IC0JCQlEUk1fREVCVUdf RFJJVkVSKCJ0b28gbWFueSB3b3JkcywgYWxsb3dlZCA8PSAlZFxuIiwKPiAtCQkJCQkgbWF4X3dv cmRzKTsKPiAtCQkJcmV0dXJuIC1FSU5WQUw7CS8qIHJhbiBvdXQgb2Ygd29yZHNbXSBiZWZvcmUg Ynl0ZXMgKi8KPiAtCQl9Cj4gLQo+IC0JCWlmICgqZW5kKQo+IC0JCQkqZW5kKysgPSAnXDAnOwo+ IC0JCXdvcmRzW25fd29yZHMrK10gPSBidWY7Cj4gLQkJYnVmID0gZW5kOwo+IC0JfQo+IC0KPiAt CXJldHVybiBuX3dvcmRzOwo+IC19Cj4gLQo+IC1lbnVtIGludGVsX3BpcGVfY3JjX29iamVjdCB7 Cj4gLQlQSVBFX0NSQ19PQkpFQ1RfUElQRSwKPiAtfTsKPiAtCj4gLXN0YXRpYyBjb25zdCBjaGFy ICogY29uc3QgcGlwZV9jcmNfb2JqZWN0c1tdID0gewo+IC0JInBpcGUiLAo+IC19Owo+IC0KPiAt c3RhdGljIGludAo+IC1kaXNwbGF5X2NyY19jdGxfcGFyc2Vfb2JqZWN0KGNvbnN0IGNoYXIgKmJ1 ZiwgZW51bSBpbnRlbF9waXBlX2NyY19vYmplY3QgKm8pCj4gLXsKPiAtCWludCBpOwo+IC0KPiAt CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHBpcGVfY3JjX29iamVjdHMpOyBpKyspCj4gLQkJ aWYgKCFzdHJjbXAoYnVmLCBwaXBlX2NyY19vYmplY3RzW2ldKSkgewo+IC0JCQkqbyA9IGk7Cj4g LQkJCXJldHVybiAwOwo+IC0JCX0KPiAtCj4gLQlyZXR1cm4gLUVJTlZBTDsKPiAtfQo+IC0KPiAt c3RhdGljIGludCBkaXNwbGF5X2NyY19jdGxfcGFyc2VfcGlwZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkgICAgICBjb25zdCBjaGFyICpidWYsIGVudW0gcGlwZSAq cGlwZSkKPiAtewo+IC0JY29uc3QgY2hhciBuYW1lID0gYnVmWzBdOwo+IC0KPiAtCWlmIChuYW1l IDwgJ0EnIHx8IG5hbWUgPj0gcGlwZV9uYW1lKElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcGlw ZXMpKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCSpwaXBlID0gbmFtZSAtICdBJzsKPiAt Cj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAgc3RhdGljIGludAo+ICBkaXNwbGF5X2NyY19jdGxf cGFyc2Vfc291cmNlKGNvbnN0IGNoYXIgKmJ1ZiwgZW51bSBpbnRlbF9waXBlX2NyY19zb3VyY2Ug KnMpCj4gIHsKPiBAQCAtODA3LDgxICs0NTgsNiBAQCBkaXNwbGF5X2NyY19jdGxfcGFyc2Vfc291 cmNlKGNvbnN0IGNoYXIgKmJ1ZiwgZW51bSBpbnRlbF9waXBlX2NyY19zb3VyY2UgKnMpCj4gIAly ZXR1cm4gLUVJTlZBTDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBkaXNwbGF5X2NyY19jdGxfcGFy c2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQkJIGNoYXIgKmJ1Ziwg c2l6ZV90IGxlbikKPiAtewo+IC0jZGVmaW5lIE5fV09SRFMgMwo+IC0JaW50IG5fd29yZHM7Cj4g LQljaGFyICp3b3Jkc1tOX1dPUkRTXTsKPiAtCWVudW0gcGlwZSBwaXBlOwo+IC0JZW51bSBpbnRl bF9waXBlX2NyY19vYmplY3Qgb2JqZWN0Owo+IC0JZW51bSBpbnRlbF9waXBlX2NyY19zb3VyY2Ug c291cmNlOwo+IC0KPiAtCW5fd29yZHMgPSBkaXNwbGF5X2NyY19jdGxfdG9rZW5pemUoYnVmLCB3 b3JkcywgTl9XT1JEUyk7Cj4gLQlpZiAobl93b3JkcyAhPSBOX1dPUkRTKSB7Cj4gLQkJRFJNX0RF QlVHX0RSSVZFUigidG9rZW5pemUgZmFpbGVkLCBhIGNvbW1hbmQgaXMgJWQgd29yZHNcbiIsCj4g LQkJCQkgTl9XT1JEUyk7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQl9Cj4gLQo+IC0JaWYgKGRp c3BsYXlfY3JjX2N0bF9wYXJzZV9vYmplY3Qod29yZHNbMF0sICZvYmplY3QpIDwgMCkgewo+IC0J CURSTV9ERUJVR19EUklWRVIoInVua25vd24gb2JqZWN0ICVzXG4iLCB3b3Jkc1swXSk7Cj4gLQkJ cmV0dXJuIC1FSU5WQUw7Cj4gLQl9Cj4gLQo+IC0JaWYgKGRpc3BsYXlfY3JjX2N0bF9wYXJzZV9w aXBlKGRldl9wcml2LCB3b3Jkc1sxXSwgJnBpcGUpIDwgMCkgewo+IC0JCURSTV9ERUJVR19EUklW RVIoInVua25vd24gcGlwZSAlc1xuIiwgd29yZHNbMV0pOwo+IC0JCXJldHVybiAtRUlOVkFMOwo+ IC0JfQo+IC0KPiAtCWlmIChkaXNwbGF5X2NyY19jdGxfcGFyc2Vfc291cmNlKHdvcmRzWzJdLCAm c291cmNlKSA8IDApIHsKPiAtCQlEUk1fREVCVUdfRFJJVkVSKCJ1bmtub3duIHNvdXJjZSAlc1xu Iiwgd29yZHNbMl0pOwo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0JfQo+IC0KPiAtCXJldHVybiBw aXBlX2NyY19zZXRfc291cmNlKGRldl9wcml2LCBwaXBlLCBzb3VyY2UpOwo+IC19Cj4gLQo+IC1z dGF0aWMgc3NpemVfdCBkaXNwbGF5X2NyY19jdGxfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNv bnN0IGNoYXIgX191c2VyICp1YnVmLAo+IC0JCQkJICAgICBzaXplX3QgbGVuLCBsb2ZmX3QgKm9m ZnApCj4gLXsKPiAtCXN0cnVjdCBzZXFfZmlsZSAqbSA9IGZpbGUtPnByaXZhdGVfZGF0YTsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG0tPnByaXZhdGU7Cj4gLQljaGFy ICp0bXBidWY7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWlmIChsZW4gPT0gMCkKPiAtCQlyZXR1cm4g MDsKPiAtCj4gLQlpZiAobGVuID4gUEFHRV9TSVpFIC0gMSkgewo+IC0JCURSTV9ERUJVR19EUklW RVIoImV4cGVjdGVkIDwlbHUgYnl0ZXMgaW50byBwaXBlIGNyYyBjb250cm9sXG4iLAo+IC0JCQkJ IFBBR0VfU0laRSk7Cj4gLQkJcmV0dXJuIC1FMkJJRzsKPiAtCX0KPiAtCj4gLQl0bXBidWYgPSBt ZW1kdXBfdXNlcl9udWwodWJ1ZiwgbGVuKTsKPiAtCWlmIChJU19FUlIodG1wYnVmKSkKPiAtCQly ZXR1cm4gUFRSX0VSUih0bXBidWYpOwo+IC0KPiAtCXJldCA9IGRpc3BsYXlfY3JjX2N0bF9wYXJz ZShkZXZfcHJpdiwgdG1wYnVmLCBsZW4pOwo+IC0KPiAtCWtmcmVlKHRtcGJ1Zik7Cj4gLQlpZiAo cmV0IDwgMCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCSpvZmZwICs9IGxlbjsKPiAtCXJldHVy biBsZW47Cj4gLX0KPiAtCj4gLWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaTkxNV9kaXNw bGF5X2NyY19jdGxfZm9wcyA9IHsKPiAtCS5vd25lciA9IFRISVNfTU9EVUxFLAo+IC0JLm9wZW4g PSBkaXNwbGF5X2NyY19jdGxfb3BlbiwKPiAtCS5yZWFkID0gc2VxX3JlYWQsCj4gLQkubGxzZWVr ID0gc2VxX2xzZWVrLAo+IC0JLnJlbGVhc2UgPSBzaW5nbGVfcmVsZWFzZSwKPiAtCS53cml0ZSA9 IGRpc3BsYXlfY3JjX2N0bF93cml0ZQo+IC19Owo+IC0KPiAgdm9pZCBpbnRlbF9kaXNwbGF5X2Ny Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJZW51bSBw aXBlIHBpcGU7Cj4gQEAgLTg4OSwzMiArNDY1LDEwIEBAIHZvaWQgaW50ZWxfZGlzcGxheV9jcmNf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlmb3JfZWFjaF9waXBl KGRldl9wcml2LCBwaXBlKSB7Cj4gIAkJc3RydWN0IGludGVsX3BpcGVfY3JjICpwaXBlX2NyYyA9 ICZkZXZfcHJpdi0+cGlwZV9jcmNbcGlwZV07Cj4gIAo+IC0JCXBpcGVfY3JjLT5vcGVuZWQgPSBm YWxzZTsKPiAgCQlzcGluX2xvY2tfaW5pdCgmcGlwZV9jcmMtPmxvY2spOwo+IC0JCWluaXRfd2Fp dHF1ZXVlX2hlYWQoJnBpcGVfY3JjLT53cSk7Cj4gIAl9Cj4gIH0KPiAgCj4gLWludCBpbnRlbF9w aXBlX2NyY19jcmVhdGUoc3RydWN0IGRybV9taW5vciAqbWlub3IpCj4gLXsKPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUobWlub3ItPmRldik7Cj4gLQlzdHJ1 Y3QgZGVudHJ5ICplbnQ7Cj4gLQlpbnQgaTsKPiAtCj4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShpOTE1X3BpcGVfY3JjX2RhdGEpOyBpKyspIHsKPiAtCQlzdHJ1Y3QgcGlwZV9jcmNfaW5m byAqaW5mbyA9ICZpOTE1X3BpcGVfY3JjX2RhdGFbaV07Cj4gLQo+IC0JCWluZm8tPmRldl9wcml2 ID0gZGV2X3ByaXY7Cj4gLQkJZW50ID0gZGVidWdmc19jcmVhdGVfZmlsZShpbmZvLT5uYW1lLCBT X0lSVUdPLAo+IC0JCQkJCSAgbWlub3ItPmRlYnVnZnNfcm9vdCwgaW5mbywKPiAtCQkJCQkgICZp OTE1X3BpcGVfY3JjX2ZvcHMpOwo+IC0JCWlmICghZW50KQo+IC0JCQlyZXR1cm4gLUVOT01FTTsK PiAtCX0KPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAgaW50IGludGVsX2NydGNfc2V0X2Ny Y19zb3VyY2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLCBjb25zdCBjaGFyICpzb3VyY2VfbmFtZSwK PiAgCQkJICAgICAgc2l6ZV90ICp2YWx1ZXNfY250KQo+ICB7Cj4gLS0gCj4gMi4xNC4xCj4gCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAK VmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK