From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 3/9] drm/amdgpu: cleanup amdgpu_ih.c Date: Tue, 25 Sep 2018 13:01:01 +0200 Message-ID: References: <20180924123820.1873-1-christian.koenig@amd.com> <20180924123820.1873-3-christian.koenig@amd.com> <20180925102823.GD30495@hr-amur2> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180925102823.GD30495@hr-amur2> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Huang Rui Cc: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org QW0gMjUuMDkuMjAxOCB1bSAxMjoyOCBzY2hyaWViIEh1YW5nIFJ1aToKPiBPbiBNb24sIFNlcCAy NCwgMjAxOCBhdCAwMjozODoxNFBNICswMjAwLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+PiBD bGVhbnVwIGFtZGdwdV9paC5jIHRvIGJlIGFibGUgdG8gaGFuZGxlIG11bHRpcGxlIGludGVycnVw dCByaW5ncy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFu LmtvZW5pZ0BhbWQuY29tPgo+IFJldmlld2VkLWJ5OiBIdWFuZyBSdWkgPHJheS5odWFuZ0BhbWQu Y29tPgo+Cj4gV2lsbCB3ZSBoYXZlIG11bHRpcGxlIGludGVycnVwdCByaW5ncyBpbiBuZXcgYXNp Yz8KClZlZ2EgYWxyZWFkeSBoYXMgMyBvZiB0aGVtLCB3ZSBqdXN0IGhhdmVuJ3QgYWN0aXZhdGVk IHRoZSBvdGhlciB5ZXQuCgpDaHJpc3RpYW4uCgo+Cj4gVGhhbmtzLAo+IFJheQo+Cj4+IC0tLQo+ PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5jICB8IDE1MiArKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9paC5oICB8ICAgOCArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9pcnEuYyB8ICAgMiArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npa19p aC5jICAgICB8ICAgNCArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2N6X2loLmMg ICAgICB8ICAgNCArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2ljZWxhbmRfaWgu YyB8ICAgNCArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2loLmMgICAgICB8 ICAgNCArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3RvbmdhX2loLmMgICB8ICAg NCArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZlZ2ExMF9paC5jICB8ICAgNCAr LQo+PiAgIDkgZmlsZXMgY2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKSwgMTAyIGRlbGV0aW9ucygt KQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lo LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaWguYwo+PiBpbmRleCA0ZWQ4 NjIxOGNlZjMuLjE1ZmIwZjk3MzhhYiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2loLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2loLmMKPj4gQEAgLTI2LDQ0ICsyNiwyMCBAQAo+PiAgICNpbmNsdWRlICJhbWRncHVf aWguaCIKPj4gICAjaW5jbHVkZSAiYW1kZ3B1X2FtZGtmZC5oIgo+PiAgIAo+PiAtLyoqCj4+IC0g KiBhbWRncHVfaWhfcmluZ19hbGxvYyAtIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIElIIHJpbmcK Pj4gLSAqCj4+IC0gKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCj4+IC0gKgo+PiAtICog QWxsb2NhdGUgYSByaW5nIGJ1ZmZlciBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyLgo+PiAt ICogUmV0dXJucyAwIGZvciBzdWNjZXNzLCBlcnJvcnMgZm9yIGZhaWx1cmUuCj4+IC0gKi8KPj4g LXN0YXRpYyBpbnQgYW1kZ3B1X2loX3JpbmdfYWxsb2Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpCj4+IC17Cj4+IC0JaW50IHI7Cj4+IC0KPj4gLQkvKiBBbGxvY2F0ZSByaW5nIGJ1ZmZlciAq Lwo+PiAtCWlmIChhZGV2LT5pcnEuaWgucmluZ19vYmogPT0gTlVMTCkgewo+PiAtCQlyID0gYW1k Z3B1X2JvX2NyZWF0ZV9rZXJuZWwoYWRldiwgYWRldi0+aXJxLmloLnJpbmdfc2l6ZSwKPj4gLQkJ CQkJICAgIFBBR0VfU0laRSwgQU1ER1BVX0dFTV9ET01BSU5fR1RULAo+PiAtCQkJCQkgICAgJmFk ZXYtPmlycS5paC5yaW5nX29iaiwKPj4gLQkJCQkJICAgICZhZGV2LT5pcnEuaWguZ3B1X2FkZHIs Cj4+IC0JCQkJCSAgICAodm9pZCAqKikmYWRldi0+aXJxLmloLnJpbmcpOwo+PiAtCQlpZiAocikg ewo+PiAtCQkJRFJNX0VSUk9SKCJhbWRncHU6IGZhaWxlZCB0byBjcmVhdGUgaWggcmluZyBidWZm ZXIgKCVkKS5cbiIsIHIpOwo+PiAtCQkJcmV0dXJuIHI7Cj4+IC0JCX0KPj4gLQl9Cj4+IC0JcmV0 dXJuIDA7Cj4+IC19Cj4+IC0KPj4gICAvKioKPj4gICAgKiBhbWRncHVfaWhfcmluZ19pbml0IC0g aW5pdGlhbGl6ZSB0aGUgSUggc3RhdGUKPj4gICAgKgo+PiAgICAqIEBhZGV2OiBhbWRncHVfZGV2 aWNlIHBvaW50ZXIKPj4gKyAqIEBpaDogaWggcmluZyB0byBpbml0aWFsaXplCj4+ICsgKiBAcmlu Z19zaXplOiByaW5nIHNpemUgdG8gYWxsb2NhdGUKPj4gKyAqIEB1c2VfYnVzX2FkZHI6IHRydWUg d2hlbiB3ZSBjYW4gdXNlIGRtYV9hbGxvY19jb2hlcmVudAo+PiAgICAqCj4+ICAgICogSW5pdGlh bGl6ZXMgdGhlIElIIHN0YXRlIGFuZCBhbGxvY2F0ZXMgYSBidWZmZXIKPj4gICAgKiBmb3IgdGhl IElIIHJpbmcgYnVmZmVyLgo+PiAgICAqIFJldHVybnMgMCBmb3Igc3VjY2VzcywgZXJyb3JzIGZv ciBmYWlsdXJlLgo+PiAgICAqLwo+PiAtaW50IGFtZGdwdV9paF9yaW5nX2luaXQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIHJpbmdfc2l6ZSwKPj4gLQkJCWJvb2wgdXNlX2J1 c19hZGRyKQo+PiAraW50IGFtZGdwdV9paF9yaW5nX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIHN0cnVjdCBhbWRncHVfaWhfcmluZyAqaWgsCj4+ICsJCQl1bnNpZ25lZCByaW5nX3Np emUsIGJvb2wgdXNlX2J1c19hZGRyKQo+PiAgIHsKPj4gICAJdTMyIHJiX2J1ZnN6Owo+PiAgIAlp bnQgcjsKPj4gQEAgLTcxLDcwICs0Nyw3NiBAQCBpbnQgYW1kZ3B1X2loX3JpbmdfaW5pdChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgcmluZ19zaXplLAo+PiAgIAkvKiBBbGln biByaW5nIHNpemUgKi8KPj4gICAJcmJfYnVmc3ogPSBvcmRlcl9iYXNlXzIocmluZ19zaXplIC8g NCk7Cj4+ICAgCXJpbmdfc2l6ZSA9ICgxIDw8IHJiX2J1ZnN6KSAqIDQ7Cj4+IC0JYWRldi0+aXJx LmloLnJpbmdfc2l6ZSA9IHJpbmdfc2l6ZTsKPj4gLQlhZGV2LT5pcnEuaWgucHRyX21hc2sgPSBh ZGV2LT5pcnEuaWgucmluZ19zaXplIC0gMTsKPj4gLQlhZGV2LT5pcnEuaWgucnB0ciA9IDA7Cj4+ IC0JYWRldi0+aXJxLmloLnVzZV9idXNfYWRkciA9IHVzZV9idXNfYWRkcjsKPj4gLQo+PiAtCWlm IChhZGV2LT5pcnEuaWgudXNlX2J1c19hZGRyKSB7Cj4+IC0JCWlmICghYWRldi0+aXJxLmloLnJp bmcpIHsKPj4gLQkJCS8qIGFkZCA4IGJ5dGVzIGZvciB0aGUgcnB0ci93cHRyIHNoYWRvd3MgYW5k Cj4+IC0JCQkgKiBhZGQgdGhlbSB0byB0aGUgZW5kIG9mIHRoZSByaW5nIGFsbG9jYXRpb24uCj4+ IC0JCQkgKi8KPj4gLQkJCWFkZXYtPmlycS5paC5yaW5nID0gcGNpX2FsbG9jX2NvbnNpc3RlbnQo YWRldi0+cGRldiwKPj4gLQkJCQkJCQkJIGFkZXYtPmlycS5paC5yaW5nX3NpemUgKyA4LAo+PiAt CQkJCQkJCQkgJmFkZXYtPmlycS5paC5yYl9kbWFfYWRkcik7Cj4+IC0JCQlpZiAoYWRldi0+aXJx LmloLnJpbmcgPT0gTlVMTCkKPj4gLQkJCQlyZXR1cm4gLUVOT01FTTsKPj4gLQkJCW1lbXNldCgo dm9pZCAqKWFkZXYtPmlycS5paC5yaW5nLCAwLCBhZGV2LT5pcnEuaWgucmluZ19zaXplICsgOCk7 Cj4+IC0JCQlhZGV2LT5pcnEuaWgud3B0cl9vZmZzID0gKGFkZXYtPmlycS5paC5yaW5nX3NpemUg LyA0KSArIDA7Cj4+IC0JCQlhZGV2LT5pcnEuaWgucnB0cl9vZmZzID0gKGFkZXYtPmlycS5paC5y aW5nX3NpemUgLyA0KSArIDE7Cj4+IC0JCX0KPj4gLQkJcmV0dXJuIDA7Cj4+ICsJaWgtPnJpbmdf c2l6ZSA9IHJpbmdfc2l6ZTsKPj4gKwlpaC0+cHRyX21hc2sgPSBpaC0+cmluZ19zaXplIC0gMTsK Pj4gKwlpaC0+cnB0ciA9IDA7Cj4+ICsJaWgtPnVzZV9idXNfYWRkciA9IHVzZV9idXNfYWRkcjsK Pj4gKwo+PiArCWlmICh1c2VfYnVzX2FkZHIpIHsKPj4gKwkJaWYgKGloLT5yaW5nKQo+PiArCQkJ cmV0dXJuIDA7Cj4+ICsKPj4gKwkJLyogYWRkIDggYnl0ZXMgZm9yIHRoZSBycHRyL3dwdHIgc2hh ZG93cyBhbmQKPj4gKwkJICogYWRkIHRoZW0gdG8gdGhlIGVuZCBvZiB0aGUgcmluZyBhbGxvY2F0 aW9uLgo+PiArCQkgKi8KPj4gKwkJaWgtPnJpbmcgPSBkbWFfYWxsb2NfY29oZXJlbnQoYWRldi0+ ZGV2LCBpaC0+cmluZ19zaXplICsgOCwKPj4gKwkJCQkJICAgICAgJmloLT5yYl9kbWFfYWRkciwg R0ZQX0tFUk5FTCk7Cj4+ICsJCWlmIChpaC0+cmluZyA9PSBOVUxMKQo+PiArCQkJcmV0dXJuIC1F Tk9NRU07Cj4+ICsKPj4gKwkJbWVtc2V0KCh2b2lkICopaWgtPnJpbmcsIDAsIGloLT5yaW5nX3Np emUgKyA4KTsKPj4gKwkJaWgtPndwdHJfb2ZmcyA9IChpaC0+cmluZ19zaXplIC8gNCkgKyAwOwo+ PiArCQlpaC0+cnB0cl9vZmZzID0gKGloLT5yaW5nX3NpemUgLyA0KSArIDE7Cj4+ICAgCX0gZWxz ZSB7Cj4+IC0JCXIgPSBhbWRncHVfZGV2aWNlX3diX2dldChhZGV2LCAmYWRldi0+aXJxLmloLndw dHJfb2Zmcyk7Cj4+ICsJCXIgPSBhbWRncHVfZGV2aWNlX3diX2dldChhZGV2LCAmaWgtPndwdHJf b2Zmcyk7Cj4+ICsJCWlmIChyKQo+PiArCQkJcmV0dXJuIHI7Cj4+ICsKPj4gKwkJciA9IGFtZGdw dV9kZXZpY2Vfd2JfZ2V0KGFkZXYsICZpaC0+cnB0cl9vZmZzKTsKPj4gICAJCWlmIChyKSB7Cj4+ IC0JCQlkZXZfZXJyKGFkZXYtPmRldiwgIiglZCkgaWggd3B0cl9vZmZzIHdiIGFsbG9jIGZhaWxl ZFxuIiwgcik7Cj4+ICsJCQlhbWRncHVfZGV2aWNlX3diX2ZyZWUoYWRldiwgaWgtPndwdHJfb2Zm cyk7Cj4+ICAgCQkJcmV0dXJuIHI7Cj4+ICAgCQl9Cj4+ICAgCj4+IC0JCXIgPSBhbWRncHVfZGV2 aWNlX3diX2dldChhZGV2LCAmYWRldi0+aXJxLmloLnJwdHJfb2Zmcyk7Cj4+ICsJCXIgPSBhbWRn cHVfYm9fY3JlYXRlX2tlcm5lbChhZGV2LCBpaC0+cmluZ19zaXplLCBQQUdFX1NJWkUsCj4+ICsJ CQkJCSAgICBBTURHUFVfR0VNX0RPTUFJTl9HVFQsCj4+ICsJCQkJCSAgICAmaWgtPnJpbmdfb2Jq LCAmaWgtPmdwdV9hZGRyLAo+PiArCQkJCQkgICAgKHZvaWQgKiopJmloLT5yaW5nKTsKPj4gICAJ CWlmIChyKSB7Cj4+IC0JCQlhbWRncHVfZGV2aWNlX3diX2ZyZWUoYWRldiwgYWRldi0+aXJxLmlo LndwdHJfb2Zmcyk7Cj4+IC0JCQlkZXZfZXJyKGFkZXYtPmRldiwgIiglZCkgaWggcnB0cl9vZmZz IHdiIGFsbG9jIGZhaWxlZFxuIiwgcik7Cj4+ICsJCQlhbWRncHVfZGV2aWNlX3diX2ZyZWUoYWRl diwgaWgtPnJwdHJfb2Zmcyk7Cj4+ICsJCQlhbWRncHVfZGV2aWNlX3diX2ZyZWUoYWRldiwgaWgt PndwdHJfb2Zmcyk7Cj4+ICAgCQkJcmV0dXJuIHI7Cj4+ICAgCQl9Cj4+IC0KPj4gLQkJcmV0dXJu IGFtZGdwdV9paF9yaW5nX2FsbG9jKGFkZXYpOwo+PiAgIAl9Cj4+ICsJcmV0dXJuIDA7Cj4+ICAg fQo+PiAgIAo+PiAgIC8qKgo+PiAgICAqIGFtZGdwdV9paF9yaW5nX2ZpbmkgLSB0ZWFyIGRvd24g dGhlIElIIHN0YXRlCj4+ICAgICoKPj4gICAgKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVy Cj4+ICsgKiBAaWg6IGloIHJpbmcgdG8gdGVhciBkb3duCj4+ICAgICoKPj4gICAgKiBUZWFycyBk b3duIHRoZSBJSCBzdGF0ZSBhbmQgZnJlZXMgYnVmZmVyCj4+ICAgICogdXNlZCBmb3IgdGhlIElI IHJpbmcgYnVmZmVyLgo+PiAgICAqLwo+PiAtdm9pZCBhbWRncHVfaWhfcmluZ19maW5pKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQo+PiArdm9pZCBhbWRncHVfaWhfcmluZ19maW5pKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X2loX3JpbmcgKmloKQo+PiAgIHsK Pj4gLQlpZiAoYWRldi0+aXJxLmloLnVzZV9idXNfYWRkcikgewo+PiAtCQlpZiAoYWRldi0+aXJx LmloLnJpbmcpIHsKPj4gLQkJCS8qIGFkZCA4IGJ5dGVzIGZvciB0aGUgcnB0ci93cHRyIHNoYWRv d3MgYW5kCj4+IC0JCQkgKiBhZGQgdGhlbSB0byB0aGUgZW5kIG9mIHRoZSByaW5nIGFsbG9jYXRp b24uCj4+IC0JCQkgKi8KPj4gLQkJCXBjaV9mcmVlX2NvbnNpc3RlbnQoYWRldi0+cGRldiwgYWRl di0+aXJxLmloLnJpbmdfc2l6ZSArIDgsCj4+IC0JCQkJCSAgICAodm9pZCAqKWFkZXYtPmlycS5p aC5yaW5nLAo+PiAtCQkJCQkgICAgYWRldi0+aXJxLmloLnJiX2RtYV9hZGRyKTsKPj4gLQkJCWFk ZXYtPmlycS5paC5yaW5nID0gTlVMTDsKPj4gLQkJfQo+PiArCWlmIChpaC0+dXNlX2J1c19hZGRy KSB7Cj4+ICsJCWlmICghaWgtPnJpbmcpCj4+ICsJCQlyZXR1cm47Cj4+ICsKPj4gKwkJLyogYWRk IDggYnl0ZXMgZm9yIHRoZSBycHRyL3dwdHIgc2hhZG93cyBhbmQKPj4gKwkJICogYWRkIHRoZW0g dG8gdGhlIGVuZCBvZiB0aGUgcmluZyBhbGxvY2F0aW9uLgo+PiArCQkgKi8KPj4gKwkJZG1hX2Zy ZWVfY29oZXJlbnQoYWRldi0+ZGV2LCBpaC0+cmluZ19zaXplICsgOCwKPj4gKwkJCQkgICh2b2lk ICopaWgtPnJpbmcsIGloLT5yYl9kbWFfYWRkcik7Cj4+ICsJCWloLT5yaW5nID0gTlVMTDsKPj4g ICAJfSBlbHNlIHsKPj4gLQkJYW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCZhZGV2LT5pcnEuaWgucmlu Z19vYmosCj4+IC0JCQkJICAgICAgJmFkZXYtPmlycS5paC5ncHVfYWRkciwKPj4gLQkJCQkgICAg ICAodm9pZCAqKikmYWRldi0+aXJxLmloLnJpbmcpOwo+PiAtCQlhbWRncHVfZGV2aWNlX3diX2Zy ZWUoYWRldiwgYWRldi0+aXJxLmloLndwdHJfb2Zmcyk7Cj4+IC0JCWFtZGdwdV9kZXZpY2Vfd2Jf ZnJlZShhZGV2LCBhZGV2LT5pcnEuaWgucnB0cl9vZmZzKTsKPj4gKwkJYW1kZ3B1X2JvX2ZyZWVf a2VybmVsKCZpaC0+cmluZ19vYmosICZpaC0+Z3B1X2FkZHIsCj4+ICsJCQkJICAgICAgKHZvaWQg KiopJmloLT5yaW5nKTsKPj4gKwkJYW1kZ3B1X2RldmljZV93Yl9mcmVlKGFkZXYsIGloLT53cHRy X29mZnMpOwo+PiArCQlhbWRncHVfZGV2aWNlX3diX2ZyZWUoYWRldiwgaWgtPnJwdHJfb2Zmcyk7 Cj4+ICAgCX0KPj4gICB9Cj4+ICAgCj4+IEBAIC0xNDIsNTYgKzEyNCw1NiBAQCB2b2lkIGFtZGdw dV9paF9yaW5nX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+ICAgICogYW1kZ3B1 X2loX3Byb2Nlc3MgLSBpbnRlcnJ1cHQgaGFuZGxlcgo+PiAgICAqCj4+ICAgICogQGFkZXY6IGFt ZGdwdV9kZXZpY2UgcG9pbnRlcgo+PiArICogQGloOiBpaCByaW5nIHRvIHByb2Nlc3MKPj4gICAg Kgo+PiAgICAqIEludGVycnVwdCBoYW5kZXIgKFZJKSwgd2FsayB0aGUgSUggcmluZy4KPj4gICAg KiBSZXR1cm5zIGlycSBwcm9jZXNzIHJldHVybiBjb2RlLgo+PiAgICAqLwo+PiAtaW50IGFtZGdw dV9paF9wcm9jZXNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+PiAraW50IGFtZGdwdV9p aF9wcm9jZXNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X2loX3Jp bmcgKmloKQo+PiAgIHsKPj4gICAJc3RydWN0IGFtZGdwdV9pdl9lbnRyeSBlbnRyeTsKPj4gICAJ dTMyIHdwdHI7Cj4+ICAgCj4+IC0JaWYgKCFhZGV2LT5pcnEuaWguZW5hYmxlZCB8fCBhZGV2LT5z aHV0ZG93bikKPj4gKwlpZiAoIWloLT5lbmFibGVkIHx8IGFkZXYtPnNodXRkb3duKQo+PiAgIAkJ cmV0dXJuIElSUV9OT05FOwo+PiAgIAo+PiAgIAl3cHRyID0gYW1kZ3B1X2loX2dldF93cHRyKGFk ZXYpOwo+PiAgIAo+PiAgIHJlc3RhcnRfaWg6Cj4+ICAgCS8qIGlzIHNvbWVib2R5IGVsc2UgYWxy ZWFkeSBwcm9jZXNzaW5nIGlycXM/ICovCj4+IC0JaWYgKGF0b21pY194Y2hnKCZhZGV2LT5pcnEu aWgubG9jaywgMSkpCj4+ICsJaWYgKGF0b21pY194Y2hnKCZpaC0+bG9jaywgMSkpCj4+ICAgCQly ZXR1cm4gSVJRX05PTkU7Cj4+ICAgCj4+IC0JRFJNX0RFQlVHKCIlczogcnB0ciAlZCwgd3B0ciAl ZFxuIiwgX19mdW5jX18sIGFkZXYtPmlycS5paC5ycHRyLCB3cHRyKTsKPj4gKwlEUk1fREVCVUco IiVzOiBycHRyICVkLCB3cHRyICVkXG4iLCBfX2Z1bmNfXywgaWgtPnJwdHIsIHdwdHIpOwo+PiAg IAo+PiAgIAkvKiBPcmRlciByZWFkaW5nIG9mIHdwdHIgdnMuIHJlYWRpbmcgb2YgSUggcmluZyBk YXRhICovCj4+ICAgCXJtYigpOwo+PiAgIAo+PiAtCXdoaWxlIChhZGV2LT5pcnEuaWgucnB0ciAh PSB3cHRyKSB7Cj4+IC0JCXUzMiByaW5nX2luZGV4ID0gYWRldi0+aXJxLmloLnJwdHIgPj4gMjsK Pj4gKwl3aGlsZSAoaWgtPnJwdHIgIT0gd3B0cikgewo+PiArCQl1MzIgcmluZ19pbmRleCA9IGlo LT5ycHRyID4+IDI7Cj4+ICAgCj4+ICAgCQkvKiBQcmVzY3JlZW5pbmcgb2YgaGlnaC1mcmVxdWVu Y3kgaW50ZXJydXB0cyAqLwo+PiAgIAkJaWYgKCFhbWRncHVfaWhfcHJlc2NyZWVuX2l2KGFkZXYp KSB7Cj4+IC0JCQlhZGV2LT5pcnEuaWgucnB0ciAmPSBhZGV2LT5pcnEuaWgucHRyX21hc2s7Cj4+ ICsJCQlpaC0+cnB0ciAmPSBpaC0+cHRyX21hc2s7Cj4+ICAgCQkJY29udGludWU7Cj4+ICAgCQl9 Cj4+ICAgCj4+ICAgCQkvKiBCZWZvcmUgZGlzcGF0Y2hpbmcgaXJxIHRvIElQIGJsb2Nrcywgc2Vu ZCBpdCB0byBhbWRrZmQgKi8KPj4gICAJCWFtZGdwdV9hbWRrZmRfaW50ZXJydXB0KGFkZXYsCj4+ IC0JCQkJKGNvbnN0IHZvaWQgKikgJmFkZXYtPmlycS5paC5yaW5nW3JpbmdfaW5kZXhdKTsKPj4g KwkJCQkJKGNvbnN0IHZvaWQgKikgJmloLT5yaW5nW3JpbmdfaW5kZXhdKTsKPj4gICAKPj4gLQkJ ZW50cnkuaXZfZW50cnkgPSAoY29uc3QgdWludDMyX3QgKikKPj4gLQkJCSZhZGV2LT5pcnEuaWgu cmluZ1tyaW5nX2luZGV4XTsKPj4gKwkJZW50cnkuaXZfZW50cnkgPSAoY29uc3QgdWludDMyX3Qg KikmaWgtPnJpbmdbcmluZ19pbmRleF07Cj4+ICAgCQlhbWRncHVfaWhfZGVjb2RlX2l2KGFkZXYs ICZlbnRyeSk7Cj4+IC0JCWFkZXYtPmlycS5paC5ycHRyICY9IGFkZXYtPmlycS5paC5wdHJfbWFz azsKPj4gKwkJaWgtPnJwdHIgJj0gaWgtPnB0cl9tYXNrOwo+PiAgIAo+PiAgIAkJYW1kZ3B1X2ly cV9kaXNwYXRjaChhZGV2LCAmZW50cnkpOwo+PiAgIAl9Cj4+ICAgCWFtZGdwdV9paF9zZXRfcnB0 cihhZGV2KTsKPj4gLQlhdG9taWNfc2V0KCZhZGV2LT5pcnEuaWgubG9jaywgMCk7Cj4+ICsJYXRv bWljX3NldCgmaWgtPmxvY2ssIDApOwo+PiAgIAo+PiAgIAkvKiBtYWtlIHN1cmUgd3B0ciBoYXNu J3QgY2hhbmdlZCB3aGlsZSBwcm9jZXNzaW5nICovCj4+ICAgCXdwdHIgPSBhbWRncHVfaWhfZ2V0 X3dwdHIoYWRldik7Cj4+IC0JaWYgKHdwdHIgIT0gYWRldi0+aXJxLmloLnJwdHIpCj4+ICsJaWYg KHdwdHIgIT0gaWgtPnJwdHIpCj4+ICAgCQlnb3RvIHJlc3RhcnRfaWg7Cj4+ICAgCj4+ICAgCXJl dHVybiBJUlFfSEFORExFRDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9paC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2loLmgK Pj4gaW5kZXggMGQ1YjNmNTIwMWQyLi4zZTU1Zjk4NTAwNWMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5oCj4+IEBAIC04Miw5ICs4Miw5IEBAIHN0cnVjdCBhbWRn cHVfaWhfZnVuY3Mgewo+PiAgICNkZWZpbmUgYW1kZ3B1X2loX2RlY29kZV9pdihhZGV2LCBpdikg KGFkZXYpLT5pcnEuaWhfZnVuY3MtPmRlY29kZV9pdigoYWRldiksIChpdikpCj4+ICAgI2RlZmlu ZSBhbWRncHVfaWhfc2V0X3JwdHIoYWRldikgKGFkZXYpLT5pcnEuaWhfZnVuY3MtPnNldF9ycHRy KChhZGV2KSkKPj4gICAKPj4gLWludCBhbWRncHVfaWhfcmluZ19pbml0KHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LCB1bnNpZ25lZCByaW5nX3NpemUsCj4+IC0JCQlib29sIHVzZV9idXNfYWRk cik7Cj4+IC12b2lkIGFtZGdwdV9paF9yaW5nX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpOwo+PiAtaW50IGFtZGdwdV9paF9wcm9jZXNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 KTsKPj4gK2ludCBhbWRncHVfaWhfcmluZ19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LCBzdHJ1Y3QgYW1kZ3B1X2loX3JpbmcgKmloLAo+PiArCQkJdW5zaWduZWQgcmluZ19zaXplLCBi b29sIHVzZV9idXNfYWRkcik7Cj4+ICt2b2lkIGFtZGdwdV9paF9yaW5nX2Zpbmkoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfaWhfcmluZyAqaWgpOwo+PiAraW50IGFt ZGdwdV9paF9wcm9jZXNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1 X2loX3JpbmcgKmloKTsKPj4gICAKPj4gICAjZW5kaWYKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9pcnEuYwo+PiBpbmRleCBiOTI3ZTg3OTg1MzQuLmFhYTg1NDVlNDU4YSAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lycS5jCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9pcnEuYwo+PiBAQCAtMTYzLDcg KzE2Myw3IEBAIGlycXJldHVybl90IGFtZGdwdV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICph cmcpCj4+ICAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK Pj4gICAJaXJxcmV0dXJuX3QgcmV0Owo+PiAgIAo+PiAtCXJldCA9IGFtZGdwdV9paF9wcm9jZXNz KGFkZXYpOwo+PiArCXJldCA9IGFtZGdwdV9paF9wcm9jZXNzKGFkZXYsICZhZGV2LT5pcnEuaWgp Owo+PiAgIAlpZiAocmV0ID09IElSUV9IQU5ETEVEKQo+PiAgIAkJcG1fcnVudGltZV9tYXJrX2xh c3RfYnVzeShkZXYtPmRldik7Cj4+ICAgCXJldHVybiByZXQ7Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWtfaWguYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2Npa19paC5jCj4+IGluZGV4IGU3NTE4M2UwOTgyMC4uYzM3YzRiNzZlN2U5IDEwMDY0NAo+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWtfaWguYwo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWtfaWguYwo+PiBAQCAtMzE4LDcgKzMxOCw3IEBAIHN0 YXRpYyBpbnQgY2lrX2loX3N3X2luaXQodm9pZCAqaGFuZGxlKQo+PiAgIAlpbnQgcjsKPj4gICAJ c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5k bGU7Cj4+ICAgCj4+IC0JciA9IGFtZGdwdV9paF9yaW5nX2luaXQoYWRldiwgNjQgKiAxMDI0LCBm YWxzZSk7Cj4+ICsJciA9IGFtZGdwdV9paF9yaW5nX2luaXQoYWRldiwgJmFkZXYtPmlycS5paCwg NjQgKiAxMDI0LCBmYWxzZSk7Cj4+ICAgCWlmIChyKQo+PiAgIAkJcmV0dXJuIHI7Cj4+ICAgCj4+ IEBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIGludCBjaWtfaWhfc3dfZmluaSh2b2lkICpoYW5k bGUpCj4+ICAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2 aWNlICopaGFuZGxlOwo+PiAgIAo+PiAgIAlhbWRncHVfaXJxX2ZpbmkoYWRldik7Cj4+IC0JYW1k Z3B1X2loX3JpbmdfZmluaShhZGV2KTsKPj4gKwlhbWRncHVfaWhfcmluZ19maW5pKGFkZXYsICZh ZGV2LT5pcnEuaWgpOwo+PiAgIAlhbWRncHVfaXJxX3JlbW92ZV9kb21haW4oYWRldik7Cj4+ICAg Cj4+ICAgCXJldHVybiAwOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvY3pfaWguYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2N6X2loLmMKPj4gaW5kZXgg OTM4NWRhMWUxZTQwLi4zMDZlMGJkMTU0ZmEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2N6X2loLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Y3pfaWguYwo+PiBAQCAtMjk3LDcgKzI5Nyw3IEBAIHN0YXRpYyBpbnQgY3pfaWhfc3dfaW5pdCh2 b2lkICpoYW5kbGUpCj4+ICAgCWludCByOwo+PiAgIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKPj4gICAKPj4gLQlyID0gYW1kZ3B1 X2loX3JpbmdfaW5pdChhZGV2LCA2NCAqIDEwMjQsIGZhbHNlKTsKPj4gKwlyID0gYW1kZ3B1X2lo X3JpbmdfaW5pdChhZGV2LCAmYWRldi0+aXJxLmloLCA2NCAqIDEwMjQsIGZhbHNlKTsKPj4gICAJ aWYgKHIpCj4+ICAgCQlyZXR1cm4gcjsKPj4gICAKPj4gQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0 aWMgaW50IGN6X2loX3N3X2Zpbmkodm9pZCAqaGFuZGxlKQo+PiAgIAlzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKPj4gICAKPj4gICAJ YW1kZ3B1X2lycV9maW5pKGFkZXYpOwo+PiAtCWFtZGdwdV9paF9yaW5nX2ZpbmkoYWRldik7Cj4+ ICsJYW1kZ3B1X2loX3JpbmdfZmluaShhZGV2LCAmYWRldi0+aXJxLmloKTsKPj4gICAJYW1kZ3B1 X2lycV9yZW1vdmVfZG9tYWluKGFkZXYpOwo+PiAgIAo+PiAgIAlyZXR1cm4gMDsKPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2ljZWxhbmRfaWguYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2ljZWxhbmRfaWguYwo+PiBpbmRleCA0NWVmMGE4MThlMTEuLjkw MDVkZWVlYzYxMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvaWNl bGFuZF9paC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2ljZWxhbmRfaWgu Ywo+PiBAQCAtMjk3LDcgKzI5Nyw3IEBAIHN0YXRpYyBpbnQgaWNlbGFuZF9paF9zd19pbml0KHZv aWQgKmhhbmRsZSkKPj4gICAJaW50IHI7Cj4+ICAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+PiAgIAo+PiAtCXIgPSBhbWRncHVf aWhfcmluZ19pbml0KGFkZXYsIDY0ICogMTAyNCwgZmFsc2UpOwo+PiArCXIgPSBhbWRncHVfaWhf cmluZ19pbml0KGFkZXYsICZhZGV2LT5pcnEuaWgsIDY0ICogMTAyNCwgZmFsc2UpOwo+PiAgIAlp ZiAocikKPj4gICAJCXJldHVybiByOwo+PiAgIAo+PiBAQCAtMzExLDcgKzMxMSw3IEBAIHN0YXRp YyBpbnQgaWNlbGFuZF9paF9zd19maW5pKHZvaWQgKmhhbmRsZSkKPj4gICAJc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4+ICAgCj4+ ICAgCWFtZGdwdV9pcnFfZmluaShhZGV2KTsKPj4gLQlhbWRncHVfaWhfcmluZ19maW5pKGFkZXYp Owo+PiArCWFtZGdwdV9paF9yaW5nX2ZpbmkoYWRldiwgJmFkZXYtPmlycS5paCk7Cj4+ICAgCWFt ZGdwdV9pcnFfcmVtb3ZlX2RvbWFpbihhZGV2KTsKPj4gICAKPj4gICAJcmV0dXJuIDA7Cj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaV9paC5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvc2lfaWguYwo+PiBpbmRleCA5NzcxMWQzMjc1MjcuLmFjZGY2MDc1 OTU3YSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfaWguYwo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaV9paC5jCj4+IEBAIC0xNzAsNyAr MTcwLDcgQEAgc3RhdGljIGludCBzaV9paF9zd19pbml0KHZvaWQgKmhhbmRsZSkKPj4gICAJaW50 IHI7Cj4+ICAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2 aWNlICopaGFuZGxlOwo+PiAgIAo+PiAtCXIgPSBhbWRncHVfaWhfcmluZ19pbml0KGFkZXYsIDY0 ICogMTAyNCwgZmFsc2UpOwo+PiArCXIgPSBhbWRncHVfaWhfcmluZ19pbml0KGFkZXYsICZhZGV2 LT5pcnEuaWgsIDY0ICogMTAyNCwgZmFsc2UpOwo+PiAgIAlpZiAocikKPj4gICAJCXJldHVybiBy Owo+PiAgIAo+PiBAQCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyBpbnQgc2lfaWhfc3dfZmluaSh2 b2lkICpoYW5kbGUpCj4+ICAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBh bWRncHVfZGV2aWNlICopaGFuZGxlOwo+PiAgIAo+PiAgIAlhbWRncHVfaXJxX2ZpbmkoYWRldik7 Cj4+IC0JYW1kZ3B1X2loX3JpbmdfZmluaShhZGV2KTsKPj4gKwlhbWRncHVfaWhfcmluZ19maW5p KGFkZXYsICZhZGV2LT5pcnEuaWgpOwo+PiAgIAo+PiAgIAlyZXR1cm4gMDsKPj4gICB9Cj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS90b25nYV9paC5jIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvdG9uZ2FfaWguYwo+PiBpbmRleCBhNzlhMzc3Njg4OGEuLjgz ZmRmODEwZmZjNyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdG9u Z2FfaWguYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS90b25nYV9paC5jCj4+ IEBAIC0zMTcsNyArMzE3LDcgQEAgc3RhdGljIGludCB0b25nYV9paF9zd19pbml0KHZvaWQgKmhh bmRsZSkKPj4gICAJaW50IHI7Cj4+ICAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0 cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+PiAgIAo+PiAtCXIgPSBhbWRncHVfaWhfcmlu Z19pbml0KGFkZXYsIDY0ICogMTAyNCwgdHJ1ZSk7Cj4+ICsJciA9IGFtZGdwdV9paF9yaW5nX2lu aXQoYWRldiwgJmFkZXYtPmlycS5paCwgNjQgKiAxMDI0LCB0cnVlKTsKPj4gICAJaWYgKHIpCj4+ ICAgCQlyZXR1cm4gcjsKPj4gICAKPj4gQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgaW50IHRv bmdhX2loX3N3X2Zpbmkodm9pZCAqaGFuZGxlKQo+PiAgIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKPj4gICAKPj4gICAJYW1kZ3B1 X2lycV9maW5pKGFkZXYpOwo+PiAtCWFtZGdwdV9paF9yaW5nX2ZpbmkoYWRldik7Cj4+ICsJYW1k Z3B1X2loX3JpbmdfZmluaShhZGV2LCAmYWRldi0+aXJxLmloKTsKPj4gICAJYW1kZ3B1X2lycV9y ZW1vdmVfZG9tYWluKGFkZXYpOwo+PiAgIAo+PiAgIAlyZXR1cm4gMDsKPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZlZ2ExMF9paC5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvdmVnYTEwX2loLmMKPj4gaW5kZXggMzc0ODdiNGNiZDZlLi5hOTlmNzE3OTdh YTMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZlZ2ExMF9paC5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZlZ2ExMF9paC5jCj4+IEBAIC0z ODAsNyArMzgwLDcgQEAgc3RhdGljIGludCB2ZWdhMTBfaWhfc3dfaW5pdCh2b2lkICpoYW5kbGUp Cj4+ICAgCWludCByOwo+PiAgIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKPj4gICAKPj4gLQlyID0gYW1kZ3B1X2loX3JpbmdfaW5p dChhZGV2LCAyNTYgKiAxMDI0LCB0cnVlKTsKPj4gKwlyID0gYW1kZ3B1X2loX3JpbmdfaW5pdChh ZGV2LCAmYWRldi0+aXJxLmloLCAyNTYgKiAxMDI0LCB0cnVlKTsKPj4gICAJaWYgKHIpCj4+ICAg CQlyZXR1cm4gcjsKPj4gICAKPj4gQEAgLTM5Nyw3ICszOTcsNyBAQCBzdGF0aWMgaW50IHZlZ2Ex MF9paF9zd19maW5pKHZvaWQgKmhhbmRsZSkKPj4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4+ICAgCj4+ICAgCWFtZGdwdV9p cnFfZmluaShhZGV2KTsKPj4gLQlhbWRncHVfaWhfcmluZ19maW5pKGFkZXYpOwo+PiArCWFtZGdw dV9paF9yaW5nX2ZpbmkoYWRldiwgJmFkZXYtPmlycS5paCk7Cj4+ICAgCj4+ICAgCXJldHVybiAw Owo+PiAgIH0KPj4gLS0gCj4+IDIuMTQuMQo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+PiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+PiBhbWQtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v YW1kLWdmeAo=