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 18:11:58 +0200 Message-ID: <20171102161158.GP10981@intel.com> References: <20171102135651.9329-1-maarten.lankhorst@linux.intel.com> <20171102142712.GO10981@intel.com> <87inesd7ys.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2F2AE6E95D for ; Thu, 2 Nov 2017 16:12:05 +0000 (UTC) Content-Disposition: inline In-Reply-To: <87inesd7ys.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: Tomi Sarvela , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBOb3YgMDIsIDIwMTcgYXQgMDU6MTk6MDdQTSArMDIwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gVGh1LCAwMiBOb3YgMjAxNywgVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4gPiBPbiBUaHUsIE5vdiAwMiwgMjAxNyBhdCAwMjo1 Njo1MVBNICswMTAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90ZToKPiA+PiBUaGlzIGludGVyZmFj ZSBpcyBkZXByZWNhdGVkLCBhbmQgaGFzIGJlZW4gcmVwbGFjZWQgYnkgdGhlIHVwc3RyZWFtCj4g Pj4gZHJtIGNyYyBpbnRlcmZhY2UuCj4gPgo+ID4gQmVmb3JlIHdlIG51a2UgdGhpcyBJIHdvdWxk IGxpa2UgdG8gc2VlIGFuIG9wdGlvbiBpbiB0aGUgbmV3IGludGVyZmFjZQo+ID4gdG8gbm90IGZp bHRlciBvdXQgdGhlICJiYWQiIENSQ3MuIFdoZW4gYW5hbHl6aW5nIGhvdyB0aGUgaGFyZHdhcmUK PiA+IGJlaGF2ZXMgc2VlaW5nIGV2ZXJ5IENSQyBjYW4gYmUgdmFsdWFibGUuIEFuZCBJJ20gbm90 IGF0IGFsbCBjb252aW5jZWQKPiA+IHdlIHNob3VsZCBiZSBkcm9wcGluZyBhcyBtYW55IENSQ3Mg YXMgd2UgYXJlIGN1cnJlbnRseS4KPiAKPiBJJ20gbm90IGFnYWluc3QgaXQsIGJ1dCBkbyB5b3Ug aGF2ZSBhIGNvbmNyZXRlIHByb3Bvc2FsIG9uIGhvdyB0aGF0Cj4gb3B0aW9uIHdvdWxkIGxvb2sg bGlrZT8KClNvbWUga2luZCBvZiBvZiBmaWx0ZXJfYmFkX2NyY3MgZmlsZSB3aXRoIGEgYm9vbCB2 YWx1ZSBwZXJoYXBzPwoKPiAKPiBCUiwKPiBKYW5pLgo+IAo+ID4KPiA+PiAKPiA+PiBTaWduZWQt b2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwu Y29tPgo+ID4+IENjOiBUb21pIFNhcnZlbGEgPHRvbWkucC5zYXJ2ZWxhQGludGVsLmNvbT4KPiA+ PiBDYzogUGV0cmkgTGF0dmFsYSA8cGV0cmkubGF0dmFsYUBpbnRlbC5jb20+Cj4gPj4gQ2M6IEph bmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gPj4gLS0tCj4gPj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgfCAgIDcgKy0KPiA+PiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICB8ICAxMCAtCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfaXJxLmMgICAgICAgfCAgNzkgKystLS0tCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oICAgICAgfCAgIDIgLQo+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9waXBlX2NyYy5jIHwgNDQ2IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K PiA+PiAgNSBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCA1MjEgZGVsZXRpb25zKC0p Cj4gPj4gCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+PiBpbmRleCA3ZWZl NTdjMDcwM2UuLmEzNjIzNzBlNWE2OCAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCj4gPj4gQEAgLTQ5OTEsNyArNDk5MSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9kZWJ1Z2ZzX2ZpbGVzIHsKPiA+PiAgCXsiaTkxNV9ncHVfaW5mbyIsICZpOTE1X2dwdV9p bmZvX2ZvcHN9LAo+ID4+ICAjZW5kaWYKPiA+PiAgCXsiaTkxNV9uZXh0X3NlcW5vIiwgJmk5MTVf bmV4dF9zZXFub19mb3BzfSwKPiA+PiAtCXsiaTkxNV9kaXNwbGF5X2NyY19jdGwiLCAmaTkxNV9k aXNwbGF5X2NyY19jdGxfZm9wc30sCj4gPj4gIAl7Imk5MTVfcHJpX3dtX2xhdGVuY3kiLCAmaTkx NV9wcmlfd21fbGF0ZW5jeV9mb3BzfSwKPiA+PiAgCXsiaTkxNV9zcHJfd21fbGF0ZW5jeSIsICZp OTE1X3Nwcl93bV9sYXRlbmN5X2ZvcHN9LAo+ID4+ICAJeyJpOTE1X2N1cl93bV9sYXRlbmN5Iiwg Jmk5MTVfY3VyX3dtX2xhdGVuY3lfZm9wc30sCj4gPj4gQEAgLTUwMDgsNyArNTAwNyw3IEBAIGlu dCBpOTE1X2RlYnVnZnNfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ID4+ICB7Cj4gPj4gIAlzdHJ1Y3QgZHJtX21pbm9yICptaW5vciA9IGRldl9wcml2LT5kcm0u cHJpbWFyeTsKPiA+PiAgCXN0cnVjdCBkZW50cnkgKmVudDsKPiA+PiAtCWludCByZXQsIGk7Cj4g Pj4gKwlpbnQgaTsKPiA+PiAgCj4gPj4gIAllbnQgPSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJpOTE1 X2ZvcmNld2FrZV91c2VyIiwgU19JUlVTUiwKPiA+PiAgCQkJCSAgbWlub3ItPmRlYnVnZnNfcm9v dCwgdG9faTkxNShtaW5vci0+ZGV2KSwKPiA+PiBAQCAtNTAxNiwxMCArNTAxNSw2IEBAIGludCBp OTE1X2RlYnVnZnNfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ID4+ICAJaWYgKCFlbnQpCj4gPj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gPj4gIAo+ID4+IC0JcmV0 ID0gaW50ZWxfcGlwZV9jcmNfY3JlYXRlKG1pbm9yKTsKPiA+PiAtCWlmIChyZXQpCj4gPj4gLQkJ cmV0dXJuIHJldDsKPiA+PiAtCj4gPj4gIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShpOTE1 X2RlYnVnZnNfZmlsZXMpOyBpKyspIHsKPiA+PiAgCQllbnQgPSBkZWJ1Z2ZzX2NyZWF0ZV9maWxl KGk5MTVfZGVidWdmc19maWxlc1tpXS5uYW1lLAo+ID4+ICAJCQkJCSAgU19JUlVHTyB8IFNfSVdV U1IsCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPj4gaW5kZXggZDM3ZmQxMTkwOGQwLi5m NDI5MGM5NzM5ZTEgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+PiBAQCAt MTk0OCwxOSArMTk0OCw5IEBAIGVudW0gaW50ZWxfcGlwZV9jcmNfc291cmNlIHsKPiA+PiAgCUlO VEVMX1BJUEVfQ1JDX1NPVVJDRV9NQVgsCj4gPj4gIH07Cj4gPj4gIAo+ID4+IC1zdHJ1Y3QgaW50 ZWxfcGlwZV9jcmNfZW50cnkgewo+ID4+IC0JdWludDMyX3QgZnJhbWU7Cj4gPj4gLQl1aW50MzJf dCBjcmNbNV07Cj4gPj4gLX07Cj4gPj4gLQo+ID4+ICAjZGVmaW5lIElOVEVMX1BJUEVfQ1JDX0VO VFJJRVNfTlIJMTI4Cj4gPj4gIHN0cnVjdCBpbnRlbF9waXBlX2NyYyB7Cj4gPj4gIAlzcGlubG9j a190IGxvY2s7Cj4gPj4gLQlib29sIG9wZW5lZDsJCS8qIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhl IHJlc3VsdCBmaWxlICovCj4gPj4gLQlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmNfZW50cnkgKmVudHJp ZXM7Cj4gPj4gLQllbnVtIGludGVsX3BpcGVfY3JjX3NvdXJjZSBzb3VyY2U7Cj4gPj4gLQlpbnQg aGVhZCwgdGFpbDsKPiA+PiAtCXdhaXRfcXVldWVfaGVhZF90IHdxOwo+ID4+ICAJaW50IHNraXBw ZWQ7Cj4gPj4gIH07Cj4gPj4gIAo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4+IGluZGV4 IGZmMDBlNDYyNjk3YS4uYmUxMTljYjU2N2E0IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jCj4gPj4gQEAgLTE2MTMsNjkgKzE2MTMsMzQgQEAgc3RhdGljIHZvaWQgZGlzcGxheV9w aXBlX2NyY19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g Pj4gIAkJCQkJIHVpbnQzMl90IGNyYzQpCj4gPj4gIHsKPiA+PiAgCXN0cnVjdCBpbnRlbF9waXBl X2NyYyAqcGlwZV9jcmMgPSAmZGV2X3ByaXYtPnBpcGVfY3JjW3BpcGVdOwo+ID4+IC0Jc3RydWN0 IGludGVsX3BpcGVfY3JjX2VudHJ5ICplbnRyeTsKPiA+PiAgCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUoZGV2X3ByaXYsIHBpcGUpOwo+ID4+IC0Jc3Ry dWN0IGRybV9kcml2ZXIgKmRyaXZlciA9IGRldl9wcml2LT5kcm0uZHJpdmVyOwo+ID4+ICAJdWlu dDMyX3QgY3Jjc1s1XTsKPiA+PiAtCWludCBoZWFkLCB0YWlsOwo+ID4+ICAKPiA+PiAgCXNwaW5f bG9jaygmcGlwZV9jcmMtPmxvY2spOwo+ID4+IC0JaWYgKHBpcGVfY3JjLT5zb3VyY2UpIHsKPiA+ PiAtCQlpZiAoIXBpcGVfY3JjLT5lbnRyaWVzKSB7Cj4gPj4gLQkJCXNwaW5fdW5sb2NrKCZwaXBl X2NyYy0+bG9jayk7Cj4gPj4gLQkJCURSTV9ERUJVR19LTVMoInNwdXJpb3VzIGludGVycnVwdFxu Iik7Cj4gPj4gLQkJCXJldHVybjsKPiA+PiAtCQl9Cj4gPj4gLQo+ID4+IC0JCWhlYWQgPSBwaXBl X2NyYy0+aGVhZDsKPiA+PiAtCQl0YWlsID0gcGlwZV9jcmMtPnRhaWw7Cj4gPj4gLQo+ID4+IC0J CWlmIChDSVJDX1NQQUNFKGhlYWQsIHRhaWwsIElOVEVMX1BJUEVfQ1JDX0VOVFJJRVNfTlIpIDwg MSkgewo+ID4+IC0JCQlzcGluX3VubG9jaygmcGlwZV9jcmMtPmxvY2spOwo+ID4+IC0JCQlEUk1f RVJST1IoIkNSQyBidWZmZXIgb3ZlcmZsb3dpbmdcbiIpOwo+ID4+IC0JCQlyZXR1cm47Cj4gPj4g LQkJfQo+ID4+IC0KPiA+PiAtCQllbnRyeSA9ICZwaXBlX2NyYy0+ZW50cmllc1toZWFkXTsKPiA+ PiAtCj4gPj4gLQkJZW50cnktPmZyYW1lID0gZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoJmRl dl9wcml2LT5kcm0sIHBpcGUpOwo+ID4+IC0JCWVudHJ5LT5jcmNbMF0gPSBjcmMwOwo+ID4+IC0J CWVudHJ5LT5jcmNbMV0gPSBjcmMxOwo+ID4+IC0JCWVudHJ5LT5jcmNbMl0gPSBjcmMyOwo+ID4+ IC0JCWVudHJ5LT5jcmNbM10gPSBjcmMzOwo+ID4+IC0JCWVudHJ5LT5jcmNbNF0gPSBjcmM0Owo+ ID4+IC0KPiA+PiAtCQloZWFkID0gKGhlYWQgKyAxKSAmIChJTlRFTF9QSVBFX0NSQ19FTlRSSUVT X05SIC0gMSk7Cj4gPj4gLQkJcGlwZV9jcmMtPmhlYWQgPSBoZWFkOwo+ID4+IC0KPiA+PiAtCQlz cGluX3VubG9jaygmcGlwZV9jcmMtPmxvY2spOwo+ID4+IC0KPiA+PiAtCQl3YWtlX3VwX2ludGVy cnVwdGlibGUoJnBpcGVfY3JjLT53cSk7Cj4gPj4gLQl9IGVsc2Ugewo+ID4+IC0JCS8qCj4gPj4g LQkJICogRm9yIHNvbWUgbm90IHlldCBpZGVudGlmaWVkIHJlYXNvbiwgdGhlIGZpcnN0IENSQyBp cwo+ID4+IC0JCSAqIGJvbmtlcnMuIFNvIGxldCdzIGp1c3Qgd2FpdCBmb3IgdGhlIG5leHQgdmJs YW5rIGFuZCByZWFkCj4gPj4gLQkJICogb3V0IHRoZSBidWdneSByZXN1bHQuCj4gPj4gLQkJICoK PiA+PiAtCQkgKiBPbiBHRU44KyBzb21ldGltZXMgdGhlIHNlY29uZCBDUkMgaXMgYm9ua2VycyBh cyB3ZWxsLCBzbwo+ID4+IC0JCSAqIGRvbid0IHRydXN0IHRoYXQgb25lIGVpdGhlci4KPiA+PiAt CQkgKi8KPiA+PiAtCQlpZiAocGlwZV9jcmMtPnNraXBwZWQgPT0gMCB8fAo+ID4+IC0JCSAgICAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA4ICYmIHBpcGVfY3JjLT5za2lwcGVkID09IDEpKSB7Cj4g Pj4gLQkJCXBpcGVfY3JjLT5za2lwcGVkKys7Cj4gPj4gLQkJCXNwaW5fdW5sb2NrKCZwaXBlX2Ny Yy0+bG9jayk7Cj4gPj4gLQkJCXJldHVybjsKPiA+PiAtCQl9Cj4gPj4gKwkvKgo+ID4+ICsJICog Rm9yIHNvbWUgbm90IHlldCBpZGVudGlmaWVkIHJlYXNvbiwgdGhlIGZpcnN0IENSQyBpcwo+ID4+ ICsJICogYm9ua2Vycy4gU28gbGV0J3MganVzdCB3YWl0IGZvciB0aGUgbmV4dCB2YmxhbmsgYW5k IHJlYWQKPiA+PiArCSAqIG91dCB0aGUgYnVnZ3kgcmVzdWx0Lgo+ID4+ICsJICoKPiA+PiArCSAq IE9uIEdFTjgrIHNvbWV0aW1lcyB0aGUgc2Vjb25kIENSQyBpcyBib25rZXJzIGFzIHdlbGwsIHNv Cj4gPj4gKwkgKiBkb24ndCB0cnVzdCB0aGF0IG9uZSBlaXRoZXIuCj4gPj4gKwkgKi8KPiA+PiAr CWlmIChwaXBlX2NyYy0+c2tpcHBlZCA9PSAwIHx8Cj4gPj4gKwkgICAgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOCAmJiBwaXBlX2NyYy0+c2tpcHBlZCA9PSAxKSkgewo+ID4+ICsJCXBpcGVfY3Jj LT5za2lwcGVkKys7Cj4gPj4gIAkJc3Bpbl91bmxvY2soJnBpcGVfY3JjLT5sb2NrKTsKPiA+PiAt CQljcmNzWzBdID0gY3JjMDsKPiA+PiAtCQljcmNzWzFdID0gY3JjMTsKPiA+PiAtCQljcmNzWzJd ID0gY3JjMjsKPiA+PiAtCQljcmNzWzNdID0gY3JjMzsKPiA+PiAtCQljcmNzWzRdID0gY3JjNDsK PiA+PiAtCQlkcm1fY3J0Y19hZGRfY3JjX2VudHJ5KCZjcnRjLT5iYXNlLCB0cnVlLAo+ID4+IC0J CQkJICAgICAgIGRybV9jcnRjX2FjY3VyYXRlX3ZibGFua19jb3VudCgmY3J0Yy0+YmFzZSksCj4g Pj4gLQkJCQkgICAgICAgY3Jjcyk7Cj4gPj4gKwkJcmV0dXJuOwo+ID4+ICAJfQo+ID4+ICsJc3Bp bl91bmxvY2soJnBpcGVfY3JjLT5sb2NrKTsKPiA+PiArCj4gPj4gKwljcmNzWzBdID0gY3JjMDsK PiA+PiArCWNyY3NbMV0gPSBjcmMxOwo+ID4+ICsJY3Jjc1syXSA9IGNyYzI7Cj4gPj4gKwljcmNz WzNdID0gY3JjMzsKPiA+PiArCWNyY3NbNF0gPSBjcmM0Owo+ID4+ICsJZHJtX2NydGNfYWRkX2Ny Y19lbnRyeSgmY3J0Yy0+YmFzZSwgdHJ1ZSwKPiA+PiArCQkJCWRybV9jcnRjX2FjY3VyYXRlX3Zi bGFua19jb3VudCgmY3J0Yy0+YmFzZSksCj4gPj4gKwkJCQljcmNzKTsKPiA+PiAgfQo+ID4+ICAj ZWxzZQo+ID4+ICBzdGF0aWMgaW5saW5lIHZvaWQKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+ID4+IGluZGV4IDJmOGI5YWYyMjVlZi4uNmIwMzBiNmZiNzAwIDEwMDY0NAo+ID4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+PiBAQCAtMjAxMywxMiArMjAxMywxMCBAQCB2b2lkIGxz cGNvbl9yZXN1bWUoc3RydWN0IGludGVsX2xzcGNvbiAqbHNwY29uKTsKPiA+PiAgdm9pZCBsc3Bj b25fd2FpdF9wY29uX21vZGUoc3RydWN0IGludGVsX2xzcGNvbiAqbHNwY29uKTsKPiA+PiAgCj4g Pj4gIC8qIGludGVsX3BpcGVfY3JjLmMgKi8KPiA+PiAtaW50IGludGVsX3BpcGVfY3JjX2NyZWF0 ZShzdHJ1Y3QgZHJtX21pbm9yICptaW5vcik7Cj4gPj4gICNpZmRlZiBDT05GSUdfREVCVUdfRlMK PiA+PiAgaW50IGludGVsX2NydGNfc2V0X2NyY19zb3VyY2Uoc3RydWN0IGRybV9jcnRjICpjcnRj LCBjb25zdCBjaGFyICpzb3VyY2VfbmFtZSwKPiA+PiAgCQkJICAgICAgc2l6ZV90ICp2YWx1ZXNf Y250KTsKPiA+PiAgI2Vsc2UKPiA+PiAgI2RlZmluZSBpbnRlbF9jcnRjX3NldF9jcmNfc291cmNl IE5VTEwKPiA+PiAgI2VuZGlmCj4gPj4gLWV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRp b25zIGk5MTVfZGlzcGxheV9jcmNfY3RsX2ZvcHM7Cj4gPj4gICNlbmRpZiAvKiBfX0lOVEVMX0RS Vl9IX18gKi8KPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlw ZV9jcmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BpcGVfY3JjLmMKPiA+PiBpbmRl eCA4OTk4MzlmMmY3YzYuLjRjYTRiYTVhMTQ1YiAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9waXBlX2NyYy5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcGlwZV9jcmMuYwo+ID4+IEBAIC0zMCwxNjAgKzMwLDYgQEAKPiA+PiAgI2luY2x1 ZGUgPGxpbnV4L2RlYnVnZnMuaD4KPiA+PiAgI2luY2x1ZGUgImludGVsX2Rydi5oIgo+ID4+ICAK PiA+PiAtc3RydWN0IHBpcGVfY3JjX2luZm8gewo+ID4+IC0JY29uc3QgY2hhciAqbmFtZTsKPiA+ PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdjsKPiA+PiAtCWVudW0gcGlwZSBw aXBlOwo+ID4+IC19Owo+ID4+IC0KPiA+PiAtc3RhdGljIGludCBpOTE1X3BpcGVfY3JjX29wZW4o c3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGVwKQo+ID4+IC17Cj4gPj4gLQlz dHJ1Y3QgcGlwZV9jcmNfaW5mbyAqaW5mbyA9IGlub2RlLT5pX3ByaXZhdGU7Cj4gPj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBpbmZvLT5kZXZfcHJpdjsKPiA+PiAtCXN0 cnVjdCBpbnRlbF9waXBlX2NyYyAqcGlwZV9jcmMgPSAmZGV2X3ByaXYtPnBpcGVfY3JjW2luZm8t PnBpcGVdOwo+ID4+IC0KPiA+PiAtCWlmIChpbmZvLT5waXBlID49IElOVEVMX0lORk8oZGV2X3By aXYpLT5udW1fcGlwZXMpCj4gPj4gLQkJcmV0dXJuIC1FTk9ERVY7Cj4gPj4gLQo+ID4+IC0Jc3Bp bl9sb2NrX2lycSgmcGlwZV9jcmMtPmxvY2spOwo+ID4+IC0KPiA+PiAtCWlmIChwaXBlX2NyYy0+ b3BlbmVkKSB7Cj4gPj4gLQkJc3Bpbl91bmxvY2tfaXJxKCZwaXBlX2NyYy0+bG9jayk7Cj4gPj4g LQkJcmV0dXJuIC1FQlVTWTsgLyogYWxyZWFkeSBvcGVuICovCj4gPj4gLQl9Cj4gPj4gLQo+ID4+ IC0JcGlwZV9jcmMtPm9wZW5lZCA9IHRydWU7Cj4gPj4gLQlmaWxlcC0+cHJpdmF0ZV9kYXRhID0g aW5vZGUtPmlfcHJpdmF0ZTsKPiA+PiAtCj4gPj4gLQlzcGluX3VubG9ja19pcnEoJnBpcGVfY3Jj LT5sb2NrKTsKPiA+PiAtCj4gPj4gLQlyZXR1cm4gMDsKPiA+PiAtfQo+ID4+IC0KPiA+PiAtc3Rh dGljIGludCBpOTE1X3BpcGVfY3JjX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0 IGZpbGUgKmZpbGVwKQo+ID4+IC17Cj4gPj4gLQlzdHJ1Y3QgcGlwZV9jcmNfaW5mbyAqaW5mbyA9 IGlub2RlLT5pX3ByaXZhdGU7Cj4gPj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBpbmZvLT5kZXZfcHJpdjsKPiA+PiAtCXN0cnVjdCBpbnRlbF9waXBlX2NyYyAqcGlwZV9j cmMgPSAmZGV2X3ByaXYtPnBpcGVfY3JjW2luZm8tPnBpcGVdOwo+ID4+IC0KPiA+PiAtCXNwaW5f bG9ja19pcnEoJnBpcGVfY3JjLT5sb2NrKTsKPiA+PiAtCXBpcGVfY3JjLT5vcGVuZWQgPSBmYWxz ZTsKPiA+PiAtCXNwaW5fdW5sb2NrX2lycSgmcGlwZV9jcmMtPmxvY2spOwo+ID4+IC0KPiA+PiAt CXJldHVybiAwOwo+ID4+IC19Cj4gPj4gLQo+ID4+IC0vKiAoNiBmaWVsZHMsIDggY2hhcnMgZWFj aCwgc3BhY2Ugc2VwYXJhdGVkICg1KSArICdcbicpICovCj4gPj4gLSNkZWZpbmUgUElQRV9DUkNf TElORV9MRU4JKDYgKiA4ICsgNSArIDEpCj4gPj4gLS8qIGFjY291bnQgZm9yIFwnMCcgKi8KPiA+ PiAtI2RlZmluZSBQSVBFX0NSQ19CVUZGRVJfTEVOCShQSVBFX0NSQ19MSU5FX0xFTiArIDEpCj4g Pj4gLQo+ID4+IC1zdGF0aWMgaW50IHBpcGVfY3JjX2RhdGFfY291bnQoc3RydWN0IGludGVsX3Bp cGVfY3JjICpwaXBlX2NyYykKPiA+PiAtewo+ID4+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmcGlw ZV9jcmMtPmxvY2spOwo+ID4+IC0JcmV0dXJuIENJUkNfQ05UKHBpcGVfY3JjLT5oZWFkLCBwaXBl X2NyYy0+dGFpbCwKPiA+PiAtCQkJSU5URUxfUElQRV9DUkNfRU5UUklFU19OUik7Cj4gPj4gLX0K PiA+PiAtCj4gPj4gLXN0YXRpYyBzc2l6ZV90Cj4gPj4gLWk5MTVfcGlwZV9jcmNfcmVhZChzdHJ1 Y3QgZmlsZSAqZmlsZXAsIGNoYXIgX191c2VyICp1c2VyX2J1Ziwgc2l6ZV90IGNvdW50LAo+ID4+ IC0JCSAgIGxvZmZfdCAqcG9zKQo+ID4+IC17Cj4gPj4gLQlzdHJ1Y3QgcGlwZV9jcmNfaW5mbyAq aW5mbyA9IGZpbGVwLT5wcml2YXRlX2RhdGE7Cj4gPj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBpbmZvLT5kZXZfcHJpdjsKPiA+PiAtCXN0cnVjdCBpbnRlbF9waXBlX2Ny YyAqcGlwZV9jcmMgPSAmZGV2X3ByaXYtPnBpcGVfY3JjW2luZm8tPnBpcGVdOwo+ID4+IC0JY2hh ciBidWZbUElQRV9DUkNfQlVGRkVSX0xFTl07Cj4gPj4gLQlpbnQgbl9lbnRyaWVzOwo+ID4+IC0J c3NpemVfdCBieXRlc19yZWFkOwo+ID4+IC0KPiA+PiAtCS8qCj4gPj4gLQkgKiBEb24ndCBhbGxv dyB1c2VyIHNwYWNlIHRvIHByb3ZpZGUgYnVmZmVycyBub3QgYmlnIGVub3VnaCB0byBob2xkCj4g Pj4gLQkgKiBhIGxpbmUgb2YgZGF0YS4KPiA+PiAtCSAqLwo+ID4+IC0JaWYgKGNvdW50IDwgUElQ RV9DUkNfTElORV9MRU4pCj4gPj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gPj4gLQo+ID4+IC0JaWYg KHBpcGVfY3JjLT5zb3VyY2UgPT0gSU5URUxfUElQRV9DUkNfU09VUkNFX05PTkUpCj4gPj4gLQkJ cmV0dXJuIDA7Cj4gPj4gLQo+ID4+IC0JLyogbm90aGluZyB0byByZWFkICovCj4gPj4gLQlzcGlu X2xvY2tfaXJxKCZwaXBlX2NyYy0+bG9jayk7Cj4gPj4gLQl3aGlsZSAocGlwZV9jcmNfZGF0YV9j b3VudChwaXBlX2NyYykgPT0gMCkgewo+ID4+IC0JCWludCByZXQ7Cj4gPj4gLQo+ID4+IC0JCWlm IChmaWxlcC0+Zl9mbGFncyAmIE9fTk9OQkxPQ0spIHsKPiA+PiAtCQkJc3Bpbl91bmxvY2tfaXJx KCZwaXBlX2NyYy0+bG9jayk7Cj4gPj4gLQkJCXJldHVybiAtRUFHQUlOOwo+ID4+IC0JCX0KPiA+ PiAtCj4gPj4gLQkJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX2xvY2tfaXJxKHBpcGVf Y3JjLT53cSwKPiA+PiAtCQkJCXBpcGVfY3JjX2RhdGFfY291bnQocGlwZV9jcmMpLCBwaXBlX2Ny Yy0+bG9jayk7Cj4gPj4gLQkJaWYgKHJldCkgewo+ID4+IC0JCQlzcGluX3VubG9ja19pcnEoJnBp cGVfY3JjLT5sb2NrKTsKPiA+PiAtCQkJcmV0dXJuIHJldDsKPiA+PiAtCQl9Cj4gPj4gLQl9Cj4g Pj4gLQo+ID4+IC0JLyogV2Ugbm93IGhhdmUgb25lIG9yIG1vcmUgZW50cmllcyB0byByZWFkICov Cj4gPj4gLQluX2VudHJpZXMgPSBjb3VudCAvIFBJUEVfQ1JDX0xJTkVfTEVOOwo+ID4+IC0KPiA+ PiAtCWJ5dGVzX3JlYWQgPSAwOwo+ID4+IC0Jd2hpbGUgKG5fZW50cmllcyA+IDApIHsKPiA+PiAt CQlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmNfZW50cnkgKmVudHJ5ID0KPiA+PiAtCQkJJnBpcGVfY3Jj LT5lbnRyaWVzW3BpcGVfY3JjLT50YWlsXTsKPiA+PiAtCj4gPj4gLQkJaWYgKENJUkNfQ05UKHBp cGVfY3JjLT5oZWFkLCBwaXBlX2NyYy0+dGFpbCwKPiA+PiAtCQkJICAgICBJTlRFTF9QSVBFX0NS Q19FTlRSSUVTX05SKSA8IDEpCj4gPj4gLQkJCWJyZWFrOwo+ID4+IC0KPiA+PiAtCQlCVUlMRF9C VUdfT05fTk9UX1BPV0VSX09GXzIoSU5URUxfUElQRV9DUkNfRU5UUklFU19OUik7Cj4gPj4gLQkJ cGlwZV9jcmMtPnRhaWwgPSAocGlwZV9jcmMtPnRhaWwgKyAxKSAmCj4gPj4gLQkJCQkgKElOVEVM X1BJUEVfQ1JDX0VOVFJJRVNfTlIgLSAxKTsKPiA+PiAtCj4gPj4gLQkJYnl0ZXNfcmVhZCArPSBz bnByaW50ZihidWYsIFBJUEVfQ1JDX0JVRkZFUl9MRU4sCj4gPj4gLQkJCQkgICAgICAgIiU4dSAl OHggJTh4ICU4eCAlOHggJTh4XG4iLAo+ID4+IC0JCQkJICAgICAgIGVudHJ5LT5mcmFtZSwgZW50 cnktPmNyY1swXSwKPiA+PiAtCQkJCSAgICAgICBlbnRyeS0+Y3JjWzFdLCBlbnRyeS0+Y3JjWzJd LAo+ID4+IC0JCQkJICAgICAgIGVudHJ5LT5jcmNbM10sIGVudHJ5LT5jcmNbNF0pOwo+ID4+IC0K PiA+PiAtCQlzcGluX3VubG9ja19pcnEoJnBpcGVfY3JjLT5sb2NrKTsKPiA+PiAtCj4gPj4gLQkJ aWYgKGNvcHlfdG9fdXNlcih1c2VyX2J1ZiwgYnVmLCBQSVBFX0NSQ19MSU5FX0xFTikpCj4gPj4g LQkJCXJldHVybiAtRUZBVUxUOwo+ID4+IC0KPiA+PiAtCQl1c2VyX2J1ZiArPSBQSVBFX0NSQ19M SU5FX0xFTjsKPiA+PiAtCQluX2VudHJpZXMtLTsKPiA+PiAtCj4gPj4gLQkJc3Bpbl9sb2NrX2ly cSgmcGlwZV9jcmMtPmxvY2spOwo+ID4+IC0JfQo+ID4+IC0KPiA+PiAtCXNwaW5fdW5sb2NrX2ly cSgmcGlwZV9jcmMtPmxvY2spOwo+ID4+IC0KPiA+PiAtCXJldHVybiBieXRlc19yZWFkOwo+ID4+ IC19Cj4gPj4gLQo+ID4+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpOTE1 X3BpcGVfY3JjX2ZvcHMgPSB7Cj4gPj4gLQkub3duZXIgPSBUSElTX01PRFVMRSwKPiA+PiAtCS5v cGVuID0gaTkxNV9waXBlX2NyY19vcGVuLAo+ID4+IC0JLnJlYWQgPSBpOTE1X3BpcGVfY3JjX3Jl YWQsCj4gPj4gLQkucmVsZWFzZSA9IGk5MTVfcGlwZV9jcmNfcmVsZWFzZSwKPiA+PiAtfTsKPiA+ PiAtCj4gPj4gLXN0YXRpYyBzdHJ1Y3QgcGlwZV9jcmNfaW5mbyBpOTE1X3BpcGVfY3JjX2RhdGFb STkxNV9NQVhfUElQRVNdID0gewo+ID4+IC0Jewo+ID4+IC0JCS5uYW1lID0gImk5MTVfcGlwZV9B X2NyYyIsCj4gPj4gLQkJLnBpcGUgPSBQSVBFX0EsCj4gPj4gLQl9LAo+ID4+IC0Jewo+ID4+IC0J CS5uYW1lID0gImk5MTVfcGlwZV9CX2NyYyIsCj4gPj4gLQkJLnBpcGUgPSBQSVBFX0IsCj4gPj4g LQl9LAo+ID4+IC0Jewo+ID4+IC0JCS5uYW1lID0gImk5MTVfcGlwZV9DX2NyYyIsCj4gPj4gLQkJ LnBpcGUgPSBQSVBFX0MsCj4gPj4gLQl9LAo+ID4+IC19Owo+ID4+IC0KPiA+PiAgc3RhdGljIGNv bnN0IGNoYXIgKiBjb25zdCBwaXBlX2NyY19zb3VyY2VzW10gPSB7Cj4gPj4gIAkibm9uZSIsCj4g Pj4gIAkicGxhbmUxIiwKPiA+PiBAQCAtMTk3LDI5ICs0Myw2IEBAIHN0YXRpYyBjb25zdCBjaGFy ICogY29uc3QgcGlwZV9jcmNfc291cmNlc1tdID0gewo+ID4+ICAJImF1dG8iLAo+ID4+ICB9Owo+ ID4+ICAKPiA+PiAtc3RhdGljIGNvbnN0IGNoYXIgKnBpcGVfY3JjX3NvdXJjZV9uYW1lKGVudW0g aW50ZWxfcGlwZV9jcmNfc291cmNlIHNvdXJjZSkKPiA+PiAtewo+ID4+IC0JQlVJTERfQlVHX09O KEFSUkFZX1NJWkUocGlwZV9jcmNfc291cmNlcykgIT0gSU5URUxfUElQRV9DUkNfU09VUkNFX01B WCk7Cj4gPj4gLQlyZXR1cm4gcGlwZV9jcmNfc291cmNlc1tzb3VyY2VdOwo+ID4+IC19Cj4gPj4g LQo+ID4+IC1zdGF0aWMgaW50IGRpc3BsYXlfY3JjX2N0bF9zaG93KHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqZGF0YSkKPiA+PiAtewo+ID4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gbS0+cHJpdmF0ZTsKPiA+PiAtCWVudW0gcGlwZSBwaXBlOwo+ID4+IC0KPiA+PiAt CWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCj4gPj4gLQkJc2VxX3ByaW50ZihtLCAiJWMg JXNcbiIsIHBpcGVfbmFtZShwaXBlKSwKPiA+PiAtCQkJICAgcGlwZV9jcmNfc291cmNlX25hbWUo ZGV2X3ByaXYtPnBpcGVfY3JjW3BpcGVdLnNvdXJjZSkpOwo+ID4+IC0KPiA+PiAtCXJldHVybiAw Owo+ID4+IC19Cj4gPj4gLQo+ID4+IC1zdGF0aWMgaW50IGRpc3BsYXlfY3JjX2N0bF9vcGVuKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQo+ID4+IC17Cj4gPj4gLQlyZXR1 cm4gc2luZ2xlX29wZW4oZmlsZSwgZGlzcGxheV9jcmNfY3RsX3Nob3csIGlub2RlLT5pX3ByaXZh dGUpOwo+ID4+IC19Cj4gPj4gLQo+ID4+ICBzdGF0aWMgaW50IGk4eHhfcGlwZV9jcmNfY3RsX3Jl ZyhlbnVtIGludGVsX3BpcGVfY3JjX3NvdXJjZSAqc291cmNlLAo+ID4+ICAJCQkJIHVpbnQzMl90 ICp2YWwpCj4gPj4gIHsKPiA+PiBAQCAtNjE2LDE3OCArNDM5LDYgQEAgc3RhdGljIGludCBnZXRf bmV3X2NyY19jdGxfcmVnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+PiAg CQlyZXR1cm4gaXZiX3BpcGVfY3JjX2N0bF9yZWcoZGV2X3ByaXYsIHBpcGUsIHNvdXJjZSwgdmFs KTsKPiA+PiAgfQo+ID4+ICAKPiA+PiAtc3RhdGljIGludCBwaXBlX2NyY19zZXRfc291cmNlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+PiAtCQkJICAgICAgIGVudW0gcGlw ZSBwaXBlLAo+ID4+IC0JCQkgICAgICAgZW51bSBpbnRlbF9waXBlX2NyY19zb3VyY2Ugc291cmNl KQo+ID4+IC17Cj4gPj4gLQlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmMgKnBpcGVfY3JjID0gJmRldl9w cml2LT5waXBlX2NyY1twaXBlXTsKPiA+PiAtCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21h aW4gcG93ZXJfZG9tYWluOwo+ID4+IC0JdTMyIHZhbCA9IDA7IC8qIHNodXQgdXAgZ2NjICovCj4g Pj4gLQlpbnQgcmV0Owo+ID4+IC0KPiA+PiAtCWlmIChwaXBlX2NyYy0+c291cmNlID09IHNvdXJj ZSkKPiA+PiAtCQlyZXR1cm4gMDsKPiA+PiAtCj4gPj4gLQkvKiBmb3JiaWQgY2hhbmdpbmcgdGhl IHNvdXJjZSB3aXRob3V0IGdvaW5nIGJhY2sgdG8gJ25vbmUnICovCj4gPj4gLQlpZiAocGlwZV9j cmMtPnNvdXJjZSAmJiBzb3VyY2UpCj4gPj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gPj4gLQo+ID4+ IC0JcG93ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJUEUocGlwZSk7Cj4gPj4gLQlpZiAoIWlu dGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbikp IHsKPiA+PiAtCQlEUk1fREVCVUdfS01TKCJUcnlpbmcgdG8gY2FwdHVyZSBDUkMgd2hpbGUgcGlw ZSBpcyBvZmZcbiIpOwo+ID4+IC0JCXJldHVybiAtRUlPOwo+ID4+IC0JfQo+ID4+IC0KPiA+PiAt CXJldCA9IGdldF9uZXdfY3JjX2N0bF9yZWcoZGV2X3ByaXYsIHBpcGUsICZzb3VyY2UsICZ2YWwp Owo+ID4+IC0JaWYgKHJldCAhPSAwKQo+ID4+IC0JCWdvdG8gb3V0Owo+ID4+IC0KPiA+PiAtCS8q IG5vbmUgLT4gcmVhbCBzb3VyY2UgdHJhbnNpdGlvbiAqLwo+ID4+IC0JaWYgKHNvdXJjZSkgewo+ ID4+IC0JCXN0cnVjdCBpbnRlbF9waXBlX2NyY19lbnRyeSAqZW50cmllczsKPiA+PiAtCj4gPj4g LQkJRFJNX0RFQlVHX0RSSVZFUigiY29sbGVjdGluZyBDUkNzIGZvciBwaXBlICVjLCAlc1xuIiwK PiA+PiAtCQkJCSBwaXBlX25hbWUocGlwZSksIHBpcGVfY3JjX3NvdXJjZV9uYW1lKHNvdXJjZSkp Owo+ID4+IC0KPiA+PiAtCQllbnRyaWVzID0ga2NhbGxvYyhJTlRFTF9QSVBFX0NSQ19FTlRSSUVT X05SLAo+ID4+IC0JCQkJICBzaXplb2YocGlwZV9jcmMtPmVudHJpZXNbMF0pLAo+ID4+IC0JCQkJ ICBHRlBfS0VSTkVMKTsKPiA+PiAtCQlpZiAoIWVudHJpZXMpIHsKPiA+PiAtCQkJcmV0ID0gLUVO T01FTTsKPiA+PiAtCQkJZ290byBvdXQ7Cj4gPj4gLQkJfQo+ID4+IC0KPiA+PiAtCQlzcGluX2xv Y2tfaXJxKCZwaXBlX2NyYy0+bG9jayk7Cj4gPj4gLQkJa2ZyZWUocGlwZV9jcmMtPmVudHJpZXMp Owo+ID4+IC0JCXBpcGVfY3JjLT5lbnRyaWVzID0gZW50cmllczsKPiA+PiAtCQlwaXBlX2NyYy0+ aGVhZCA9IDA7Cj4gPj4gLQkJcGlwZV9jcmMtPnRhaWwgPSAwOwo+ID4+IC0JCXNwaW5fdW5sb2Nr X2lycSgmcGlwZV9jcmMtPmxvY2spOwo+ID4+IC0JfQo+ID4+IC0KPiA+PiAtCXBpcGVfY3JjLT5z b3VyY2UgPSBzb3VyY2U7Cj4gPj4gLQo+ID4+IC0JSTkxNV9XUklURShQSVBFX0NSQ19DVEwocGlw ZSksIHZhbCk7Cj4gPj4gLQlQT1NUSU5HX1JFQUQoUElQRV9DUkNfQ1RMKHBpcGUpKTsKPiA+PiAt Cj4gPj4gLQkvKiByZWFsIHNvdXJjZSAtPiBub25lIHRyYW5zaXRpb24gKi8KPiA+PiAtCWlmICgh c291cmNlKSB7Cj4gPj4gLQkJc3RydWN0IGludGVsX3BpcGVfY3JjX2VudHJ5ICplbnRyaWVzOwo+ ID4+IC0JCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUo ZGV2X3ByaXYsCj4gPj4gLQkJCQkJCQkJICBwaXBlKTsKPiA+PiAtCj4gPj4gLQkJRFJNX0RFQlVH X0RSSVZFUigic3RvcHBpbmcgQ1JDcyBmb3IgcGlwZSAlY1xuIiwKPiA+PiAtCQkJCSBwaXBlX25h bWUocGlwZSkpOwo+ID4+IC0KPiA+PiAtCQlkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5iYXNlLm11 dGV4LCBOVUxMKTsKPiA+PiAtCQlpZiAoY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKQo+ID4+IC0J CQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2X3ByaXYsIHBpcGUpOwo+ID4+IC0JCWRybV9tb2Rl c2V0X3VubG9jaygmY3J0Yy0+YmFzZS5tdXRleCk7Cj4gPj4gLQo+ID4+IC0JCXNwaW5fbG9ja19p cnEoJnBpcGVfY3JjLT5sb2NrKTsKPiA+PiAtCQllbnRyaWVzID0gcGlwZV9jcmMtPmVudHJpZXM7 Cj4gPj4gLQkJcGlwZV9jcmMtPmVudHJpZXMgPSBOVUxMOwo+ID4+IC0JCXBpcGVfY3JjLT5oZWFk ID0gMDsKPiA+PiAtCQlwaXBlX2NyYy0+dGFpbCA9IDA7Cj4gPj4gLQkJc3Bpbl91bmxvY2tfaXJx KCZwaXBlX2NyYy0+bG9jayk7Cj4gPj4gLQo+ID4+IC0JCWtmcmVlKGVudHJpZXMpOwo+ID4+IC0K PiA+PiAtCQlpZiAoSVNfRzRYKGRldl9wcml2KSkKPiA+PiAtCQkJZzR4X3VuZG9fcGlwZV9zY3Jh bWJsZV9yZXNldChkZXZfcHJpdiwgcGlwZSk7Cj4gPj4gLQkJZWxzZSBpZiAoSVNfVkFMTEVZVklF VyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gPj4gLQkJCXZsdl91bmRv X3BpcGVfc2NyYW1ibGVfcmVzZXQoZGV2X3ByaXYsIHBpcGUpOwo+ID4+IC0JCWVsc2UgaWYgKChJ U19IQVNXRUxMKGRldl9wcml2KSB8fAo+ID4+IC0JCQkgIElTX0JST0FEV0VMTChkZXZfcHJpdikp ICYmIHBpcGUgPT0gUElQRV9BKQo+ID4+IC0JCQloc3dfcGlwZV9BX2NyY193YShkZXZfcHJpdiwg ZmFsc2UpOwo+ID4+IC0JfQo+ID4+IC0KPiA+PiAtCXJldCA9IDA7Cj4gPj4gLQo+ID4+IC1vdXQ6 Cj4gPj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsK PiA+PiAtCj4gPj4gLQlyZXR1cm4gcmV0Owo+ID4+IC19Cj4gPj4gLQo+ID4+IC0vKgo+ID4+IC0g KiBQYXJzZSBwaXBlIENSQyBjb21tYW5kIHN0cmluZ3M6Cj4gPj4gLSAqICAgY29tbWFuZDogd3Nw KiBvYmplY3Qgd3NwKyBuYW1lIHdzcCsgc291cmNlIHdzcCoKPiA+PiAtICogICBvYmplY3Q6ICdw aXBlJwo+ID4+IC0gKiAgIG5hbWU6IChBIHwgQiB8IEMpCj4gPj4gLSAqICAgc291cmNlOiAobm9u ZSB8IHBsYW5lMSB8IHBsYW5lMiB8IHBmKQo+ID4+IC0gKiAgIHdzcDogKCMweDIwIHwgIzB4OSB8 ICMweEEpKwo+ID4+IC0gKgo+ID4+IC0gKiBlZy46Cj4gPj4gLSAqICAicGlwZSBBIHBsYW5lMSIg IC0+ICBTdGFydCBDUkMgY29tcHV0YXRpb25zIG9uIHBsYW5lMSBvZiBwaXBlIEEKPiA+PiAtICog ICJwaXBlIEEgbm9uZSIgICAgLT4gIFN0b3AgQ1JDCj4gPj4gLSAqLwo+ID4+IC1zdGF0aWMgaW50 IGRpc3BsYXlfY3JjX2N0bF90b2tlbml6ZShjaGFyICpidWYsIGNoYXIgKndvcmRzW10sIGludCBt YXhfd29yZHMpCj4gPj4gLXsKPiA+PiAtCWludCBuX3dvcmRzID0gMDsKPiA+PiAtCj4gPj4gLQl3 aGlsZSAoKmJ1Zikgewo+ID4+IC0JCWNoYXIgKmVuZDsKPiA+PiAtCj4gPj4gLQkJLyogc2tpcCBs ZWFkaW5nIHdoaXRlIHNwYWNlICovCj4gPj4gLQkJYnVmID0gc2tpcF9zcGFjZXMoYnVmKTsKPiA+ PiAtCQlpZiAoISpidWYpCj4gPj4gLQkJCWJyZWFrOwkvKiBlbmQgb2YgYnVmZmVyICovCj4gPj4g LQo+ID4+IC0JCS8qIGZpbmQgZW5kIG9mIHdvcmQgKi8KPiA+PiAtCQlmb3IgKGVuZCA9IGJ1Zjsg KmVuZCAmJiAhaXNzcGFjZSgqZW5kKTsgZW5kKyspCj4gPj4gLQkJCTsKPiA+PiAtCj4gPj4gLQkJ aWYgKG5fd29yZHMgPT0gbWF4X3dvcmRzKSB7Cj4gPj4gLQkJCURSTV9ERUJVR19EUklWRVIoInRv byBtYW55IHdvcmRzLCBhbGxvd2VkIDw9ICVkXG4iLAo+ID4+IC0JCQkJCSBtYXhfd29yZHMpOwo+ ID4+IC0JCQlyZXR1cm4gLUVJTlZBTDsJLyogcmFuIG91dCBvZiB3b3Jkc1tdIGJlZm9yZSBieXRl cyAqLwo+ID4+IC0JCX0KPiA+PiAtCj4gPj4gLQkJaWYgKCplbmQpCj4gPj4gLQkJCSplbmQrKyA9 ICdcMCc7Cj4gPj4gLQkJd29yZHNbbl93b3JkcysrXSA9IGJ1ZjsKPiA+PiAtCQlidWYgPSBlbmQ7 Cj4gPj4gLQl9Cj4gPj4gLQo+ID4+IC0JcmV0dXJuIG5fd29yZHM7Cj4gPj4gLX0KPiA+PiAtCj4g Pj4gLWVudW0gaW50ZWxfcGlwZV9jcmNfb2JqZWN0IHsKPiA+PiAtCVBJUEVfQ1JDX09CSkVDVF9Q SVBFLAo+ID4+IC19Owo+ID4+IC0KPiA+PiAtc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwaXBl X2NyY19vYmplY3RzW10gPSB7Cj4gPj4gLQkicGlwZSIsCj4gPj4gLX07Cj4gPj4gLQo+ID4+IC1z dGF0aWMgaW50Cj4gPj4gLWRpc3BsYXlfY3JjX2N0bF9wYXJzZV9vYmplY3QoY29uc3QgY2hhciAq YnVmLCBlbnVtIGludGVsX3BpcGVfY3JjX29iamVjdCAqbykKPiA+PiAtewo+ID4+IC0JaW50IGk7 Cj4gPj4gLQo+ID4+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocGlwZV9jcmNfb2JqZWN0 cyk7IGkrKykKPiA+PiAtCQlpZiAoIXN0cmNtcChidWYsIHBpcGVfY3JjX29iamVjdHNbaV0pKSB7 Cj4gPj4gLQkJCSpvID0gaTsKPiA+PiAtCQkJcmV0dXJuIDA7Cj4gPj4gLQkJfQo+ID4+IC0KPiA+ PiAtCXJldHVybiAtRUlOVkFMOwo+ID4+IC19Cj4gPj4gLQo+ID4+IC1zdGF0aWMgaW50IGRpc3Bs YXlfY3JjX2N0bF9wYXJzZV9waXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiA+PiAtCQkJCSAgICAgIGNvbnN0IGNoYXIgKmJ1ZiwgZW51bSBwaXBlICpwaXBlKQo+ID4+IC17 Cj4gPj4gLQljb25zdCBjaGFyIG5hbWUgPSBidWZbMF07Cj4gPj4gLQo+ID4+IC0JaWYgKG5hbWUg PCAnQScgfHwgbmFtZSA+PSBwaXBlX25hbWUoSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9waXBl cykpCj4gPj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gPj4gLQo+ID4+IC0JKnBpcGUgPSBuYW1lIC0g J0EnOwo+ID4+IC0KPiA+PiAtCXJldHVybiAwOwo+ID4+IC19Cj4gPj4gLQo+ID4+ICBzdGF0aWMg aW50Cj4gPj4gIGRpc3BsYXlfY3JjX2N0bF9wYXJzZV9zb3VyY2UoY29uc3QgY2hhciAqYnVmLCBl bnVtIGludGVsX3BpcGVfY3JjX3NvdXJjZSAqcykKPiA+PiAgewo+ID4+IEBAIC04MDcsODEgKzQ1 OCw2IEBAIGRpc3BsYXlfY3JjX2N0bF9wYXJzZV9zb3VyY2UoY29uc3QgY2hhciAqYnVmLCBlbnVt IGludGVsX3BpcGVfY3JjX3NvdXJjZSAqcykKPiA+PiAgCXJldHVybiAtRUlOVkFMOwo+ID4+ICB9 Cj4gPj4gIAo+ID4+IC1zdGF0aWMgaW50IGRpc3BsYXlfY3JjX2N0bF9wYXJzZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4gLQkJCQkgY2hhciAqYnVmLCBzaXplX3QgbGVu KQo+ID4+IC17Cj4gPj4gLSNkZWZpbmUgTl9XT1JEUyAzCj4gPj4gLQlpbnQgbl93b3JkczsKPiA+ PiAtCWNoYXIgKndvcmRzW05fV09SRFNdOwo+ID4+IC0JZW51bSBwaXBlIHBpcGU7Cj4gPj4gLQll bnVtIGludGVsX3BpcGVfY3JjX29iamVjdCBvYmplY3Q7Cj4gPj4gLQllbnVtIGludGVsX3BpcGVf Y3JjX3NvdXJjZSBzb3VyY2U7Cj4gPj4gLQo+ID4+IC0Jbl93b3JkcyA9IGRpc3BsYXlfY3JjX2N0 bF90b2tlbml6ZShidWYsIHdvcmRzLCBOX1dPUkRTKTsKPiA+PiAtCWlmIChuX3dvcmRzICE9IE5f V09SRFMpIHsKPiA+PiAtCQlEUk1fREVCVUdfRFJJVkVSKCJ0b2tlbml6ZSBmYWlsZWQsIGEgY29t bWFuZCBpcyAlZCB3b3Jkc1xuIiwKPiA+PiAtCQkJCSBOX1dPUkRTKTsKPiA+PiAtCQlyZXR1cm4g LUVJTlZBTDsKPiA+PiAtCX0KPiA+PiAtCj4gPj4gLQlpZiAoZGlzcGxheV9jcmNfY3RsX3BhcnNl X29iamVjdCh3b3Jkc1swXSwgJm9iamVjdCkgPCAwKSB7Cj4gPj4gLQkJRFJNX0RFQlVHX0RSSVZF UigidW5rbm93biBvYmplY3QgJXNcbiIsIHdvcmRzWzBdKTsKPiA+PiAtCQlyZXR1cm4gLUVJTlZB TDsKPiA+PiAtCX0KPiA+PiAtCj4gPj4gLQlpZiAoZGlzcGxheV9jcmNfY3RsX3BhcnNlX3BpcGUo ZGV2X3ByaXYsIHdvcmRzWzFdLCAmcGlwZSkgPCAwKSB7Cj4gPj4gLQkJRFJNX0RFQlVHX0RSSVZF UigidW5rbm93biBwaXBlICVzXG4iLCB3b3Jkc1sxXSk7Cj4gPj4gLQkJcmV0dXJuIC1FSU5WQUw7 Cj4gPj4gLQl9Cj4gPj4gLQo+ID4+IC0JaWYgKGRpc3BsYXlfY3JjX2N0bF9wYXJzZV9zb3VyY2Uo d29yZHNbMl0sICZzb3VyY2UpIDwgMCkgewo+ID4+IC0JCURSTV9ERUJVR19EUklWRVIoInVua25v d24gc291cmNlICVzXG4iLCB3b3Jkc1syXSk7Cj4gPj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gPj4g LQl9Cj4gPj4gLQo+ID4+IC0JcmV0dXJuIHBpcGVfY3JjX3NldF9zb3VyY2UoZGV2X3ByaXYsIHBp cGUsIHNvdXJjZSk7Cj4gPj4gLX0KPiA+PiAtCj4gPj4gLXN0YXRpYyBzc2l6ZV90IGRpc3BsYXlf Y3JjX2N0bF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYs Cj4gPj4gLQkJCQkgICAgIHNpemVfdCBsZW4sIGxvZmZfdCAqb2ZmcCkKPiA+PiAtewo+ID4+IC0J c3RydWN0IHNlcV9maWxlICptID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwo+ID4+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsKPiA+PiAtCWNoYXIgKnRtcGJ1 ZjsKPiA+PiAtCWludCByZXQ7Cj4gPj4gLQo+ID4+IC0JaWYgKGxlbiA9PSAwKQo+ID4+IC0JCXJl dHVybiAwOwo+ID4+IC0KPiA+PiAtCWlmIChsZW4gPiBQQUdFX1NJWkUgLSAxKSB7Cj4gPj4gLQkJ RFJNX0RFQlVHX0RSSVZFUigiZXhwZWN0ZWQgPCVsdSBieXRlcyBpbnRvIHBpcGUgY3JjIGNvbnRy b2xcbiIsCj4gPj4gLQkJCQkgUEFHRV9TSVpFKTsKPiA+PiAtCQlyZXR1cm4gLUUyQklHOwo+ID4+ IC0JfQo+ID4+IC0KPiA+PiAtCXRtcGJ1ZiA9IG1lbWR1cF91c2VyX251bCh1YnVmLCBsZW4pOwo+ ID4+IC0JaWYgKElTX0VSUih0bXBidWYpKQo+ID4+IC0JCXJldHVybiBQVFJfRVJSKHRtcGJ1Zik7 Cj4gPj4gLQo+ID4+IC0JcmV0ID0gZGlzcGxheV9jcmNfY3RsX3BhcnNlKGRldl9wcml2LCB0bXBi dWYsIGxlbik7Cj4gPj4gLQo+ID4+IC0Ja2ZyZWUodG1wYnVmKTsKPiA+PiAtCWlmIChyZXQgPCAw KQo+ID4+IC0JCXJldHVybiByZXQ7Cj4gPj4gLQo+ID4+IC0JKm9mZnAgKz0gbGVuOwo+ID4+IC0J cmV0dXJuIGxlbjsKPiA+PiAtfQo+ID4+IC0KPiA+PiAtY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0 aW9ucyBpOTE1X2Rpc3BsYXlfY3JjX2N0bF9mb3BzID0gewo+ID4+IC0JLm93bmVyID0gVEhJU19N T0RVTEUsCj4gPj4gLQkub3BlbiA9IGRpc3BsYXlfY3JjX2N0bF9vcGVuLAo+ID4+IC0JLnJlYWQg PSBzZXFfcmVhZCwKPiA+PiAtCS5sbHNlZWsgPSBzZXFfbHNlZWssCj4gPj4gLQkucmVsZWFzZSA9 IHNpbmdsZV9yZWxlYXNlLAo+ID4+IC0JLndyaXRlID0gZGlzcGxheV9jcmNfY3RsX3dyaXRlCj4g Pj4gLX07Cj4gPj4gLQo+ID4+ICB2b2lkIGludGVsX2Rpc3BsYXlfY3JjX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4+ICB7Cj4gPj4gIAllbnVtIHBpcGUgcGlwZTsK PiA+PiBAQCAtODg5LDMyICs0NjUsMTAgQEAgdm9pZCBpbnRlbF9kaXNwbGF5X2NyY19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+PiAgCWZvcl9lYWNoX3BpcGUoZGV2 X3ByaXYsIHBpcGUpIHsKPiA+PiAgCQlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmMgKnBpcGVfY3JjID0g JmRldl9wcml2LT5waXBlX2NyY1twaXBlXTsKPiA+PiAgCj4gPj4gLQkJcGlwZV9jcmMtPm9wZW5l ZCA9IGZhbHNlOwo+ID4+ICAJCXNwaW5fbG9ja19pbml0KCZwaXBlX2NyYy0+bG9jayk7Cj4gPj4g LQkJaW5pdF93YWl0cXVldWVfaGVhZCgmcGlwZV9jcmMtPndxKTsKPiA+PiAgCX0KPiA+PiAgfQo+ ID4+ICAKPiA+PiAtaW50IGludGVsX3BpcGVfY3JjX2NyZWF0ZShzdHJ1Y3QgZHJtX21pbm9yICpt aW5vcikKPiA+PiAtewo+ID4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShtaW5vci0+ZGV2KTsKPiA+PiAtCXN0cnVjdCBkZW50cnkgKmVudDsKPiA+PiAtCWlu dCBpOwo+ID4+IC0KPiA+PiAtCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGk5MTVfcGlwZV9j cmNfZGF0YSk7IGkrKykgewo+ID4+IC0JCXN0cnVjdCBwaXBlX2NyY19pbmZvICppbmZvID0gJmk5 MTVfcGlwZV9jcmNfZGF0YVtpXTsKPiA+PiAtCj4gPj4gLQkJaW5mby0+ZGV2X3ByaXYgPSBkZXZf cHJpdjsKPiA+PiAtCQllbnQgPSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKGluZm8tPm5hbWUsIFNfSVJV R08sCj4gPj4gLQkJCQkJICBtaW5vci0+ZGVidWdmc19yb290LCBpbmZvLAo+ID4+IC0JCQkJCSAg Jmk5MTVfcGlwZV9jcmNfZm9wcyk7Cj4gPj4gLQkJaWYgKCFlbnQpCj4gPj4gLQkJCXJldHVybiAt RU5PTUVNOwo+ID4+IC0JfQo+ID4+IC0KPiA+PiAtCXJldHVybiAwOwo+ID4+IC19Cj4gPj4gLQo+ ID4+ICBpbnQgaW50ZWxfY3J0Y19zZXRfY3JjX3NvdXJjZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMs IGNvbnN0IGNoYXIgKnNvdXJjZV9uYW1lLAo+ID4+ICAJCQkgICAgICBzaXplX3QgKnZhbHVlc19j bnQpCj4gPj4gIHsKPiA+PiAtLSAKPiA+PiAyLjE0LjEKPiA+PiAKPiA+PiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4+IEludGVsLWdmeCBtYWlsaW5n IGxpc3QKPiA+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPj4gaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiAKPiAtLSAK PiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKCi0tIApW aWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=