From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [DPU PATCH 4/6] drm/msm: strip down custom event ioctl's Date: Tue, 17 Apr 2018 16:54:48 -0400 Message-ID: <20180417205448.GS73214@art_vandelay> References: <1523902941-2253-1-git-send-email-jsanka@codeaurora.org> <1523902941-2253-5-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1523902941-2253-5-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Jeykumar Sankaran Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gTW9uLCBBcHIgMTYsIDIwMTggYXQgMTE6MjI6MTlBTSAtMDcwMCwgSmV5a3VtYXIgU2Fua2Fy YW4gd3JvdGU6Cj4gUmVtb3ZlIGN1c3RvbSBpb2N0bCBzdXBwb3J0IGluIFNETTg0NSB3aGljaCBh bGxvd3MKPiB1c2VyIHNwYWNlIHRvIHJlZ2lzdGVyL3VucmVnaXN0ZXIgZm9yIGh3IGV2ZW50cy4K PiAKPiBTaWduZWQtb2ZmLWJ5OiBKZXlrdW1hciBTYW5rYXJhbiA8anNhbmthQGNvZGVhdXJvcmEu b3JnPgoKUmV2aWV3ZWQtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgoKPiAt LS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYyB8IDIxOCArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9jcnRjLmggfCAgIDEgLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfa21zLmMgIHwgIDMxIC0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jICAg ICAgICAgICAgfCAyMDEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9rbXMuaCAgICAgICAgICAgIHwgICAyIC0KPiAgNSBmaWxlcyBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgNDUyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+IGluZGV4IDhlNDY0ZmEuLjM4NzkxOWEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPiBAQCAtMzksMzEgKzM5LDYg QEAKPiAgI2luY2x1ZGUgImRwdV9jb3JlX3BlcmYuaCIKPiAgI2luY2x1ZGUgImRwdV90cmFjZS5o Igo+ICAKPiAtc3RydWN0IGRwdV9jcnRjX2lycV9pbmZvIHsKPiAtCXN0cnVjdCBkcHVfaXJxX2Nh bGxiYWNrIGlycTsKPiAtCXUzMiBldmVudDsKPiAtCWludCAoKmZ1bmMpKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywgYm9vbCBlbiwKPiAtCQkJc3RydWN0IGRwdV9pcnFfY2FsbGJhY2sgKmlycSk7Cj4g LQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4gLX07Cj4gLQo+IC1zdHJ1Y3QgZHB1X2NydGNfY3Vz dG9tX2V2ZW50cyB7Cj4gLQl1MzIgZXZlbnQ7Cj4gLQlpbnQgKCpmdW5jKShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsIGJvb2wgZW4sCj4gLQkJCXN0cnVjdCBkcHVfaXJxX2NhbGxiYWNrICppcnEpOwo+ IC19Owo+IC0KPiAtc3RhdGljIGludCBkcHVfY3J0Y19wb3dlcl9pbnRlcnJ1cHRfaGFuZGxlcihz dHJ1Y3QgZHJtX2NydGMgKmNydGNfZHJtLAo+IC0JYm9vbCBlbiwgc3RydWN0IGRwdV9pcnFfY2Fs bGJhY2sgKmFkX2lycSk7Cj4gLXN0YXRpYyBpbnQgZHB1X2NydGNfaWRsZV9pbnRlcnJ1cHRfaGFu ZGxlcihzdHJ1Y3QgZHJtX2NydGMgKmNydGNfZHJtLAo+IC0JYm9vbCBlbiwgc3RydWN0IGRwdV9p cnFfY2FsbGJhY2sgKmlkbGVfaXJxKTsKPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgZHB1X2NydGNfY3Vz dG9tX2V2ZW50cyBjdXN0b21fZXZlbnRzW10gPSB7Cj4gLQl7RFJNX0VWRU5UX0FEX0JBQ0tMSUdI VCwgZHB1X2NwX2FkX2ludGVycnVwdH0sCj4gLQl7RFJNX0VWRU5UX0NSVENfUE9XRVIsIGRwdV9j cnRjX3Bvd2VyX2ludGVycnVwdF9oYW5kbGVyfSwKPiAtCXtEUk1fRVZFTlRfSURMRV9OT1RJRlks IGRwdV9jcnRjX2lkbGVfaW50ZXJydXB0X2hhbmRsZXJ9Cj4gLX07Cj4gLQo+ICAvKiBsYXllciBt aXhlciBpbmRleCBvbiBkcHVfY3J0YyAqLwo+ICAjZGVmaW5lIExFRlRfTUlYRVIgMAo+ICAjZGVm aW5lIFJJR0hUX01JWEVSIDEKPiBAQCAtMjQ1NSw5ICsyNDMwLDYgQEAgc3RhdGljIHZvaWQgZHB1 X2NydGNfaGFuZGxlX3Bvd2VyX2V2ZW50KHUzMiBldmVudF90eXBlLCB2b2lkICphcmcpCj4gIAlz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Cj4gIAlzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIgKm07 Cj4gIAl1MzIgaSwgbWlzcl9zdGF0dXM7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0Jc3Ry dWN0IGRwdV9jcnRjX2lycV9pbmZvICpub2RlID0gTlVMTDsKPiAtCWludCByZXQgPSAwOwo+ICAK PiAgCWlmICghY3J0Yykgewo+ICAJCURQVV9FUlJPUigiaW52YWxpZCBjcnRjXG4iKTsKPiBAQCAt MjQ3OSwxNyArMjQ1MSw2IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2hhbmRsZV9wb3dlcl9ldmVu dCh1MzIgZXZlbnRfdHlwZSwgdm9pZCAqYXJnKQo+ICAJCQlkcHVfZW5jb2Rlcl92aXJ0X3Jlc3Rv cmUoZW5jb2Rlcik7Cj4gIAkJfQo+ICAKPiAtCQlzcGluX2xvY2tfaXJxc2F2ZSgmZHB1X2NydGMt PnNwaW5fbG9jaywgZmxhZ3MpOwo+IC0JCWxpc3RfZm9yX2VhY2hfZW50cnkobm9kZSwgJmRwdV9j cnRjLT51c2VyX2V2ZW50X2xpc3QsIGxpc3QpIHsKPiAtCQkJcmV0ID0gMDsKPiAtCQkJaWYgKG5v ZGUtPmZ1bmMpCj4gLQkJCQlyZXQgPSBub2RlLT5mdW5jKGNydGMsIHRydWUsICZub2RlLT5pcnEp Owo+IC0JCQlpZiAocmV0KQo+IC0JCQkJRFBVX0VSUk9SKCIlcyBmYWlsZWQgdG8gZW5hYmxlIGV2 ZW50ICV4XG4iLAo+IC0JCQkJCQlkcHVfY3J0Yy0+bmFtZSwgbm9kZS0+ZXZlbnQpOwo+IC0JCX0K PiAtCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkcHVfY3J0Yy0+c3Bpbl9sb2NrLCBmbGFncyk7 Cj4gLQo+ICAJCWRwdV9jcF9jcnRjX3Bvc3RfaXBjKGNydGMpOwo+ICAKPiAgCQlmb3IgKGkgPSAw OyBpIDwgZHB1X2NydGMtPm51bV9taXhlcnM7ICsraSkgewo+IEBAIC0yNTE0LDE4ICsyNDc1LDYg QEAgc3RhdGljIHZvaWQgZHB1X2NydGNfaGFuZGxlX3Bvd2VyX2V2ZW50KHUzMiBldmVudF90eXBl LCB2b2lkICphcmcpCj4gIAkJCQkJCQlkcHVfY3J0Yy0+bWlzcl9kYXRhW2ldOwo+ICAJCX0KPiAg Cj4gLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmRwdV9jcnRjLT5zcGluX2xvY2ssIGZsYWdzKTsKPiAt CQlub2RlID0gTlVMTDsKPiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5vZGUsICZkcHVfY3J0Yy0+ dXNlcl9ldmVudF9saXN0LCBsaXN0KSB7Cj4gLQkJCXJldCA9IDA7Cj4gLQkJCWlmIChub2RlLT5m dW5jKQo+IC0JCQkJcmV0ID0gbm9kZS0+ZnVuYyhjcnRjLCBmYWxzZSwgJm5vZGUtPmlycSk7Cj4g LQkJCWlmIChyZXQpCj4gLQkJCQlEUFVfRVJST1IoIiVzIGZhaWxlZCB0byBkaXNhYmxlIGV2ZW50 ICV4XG4iLAo+IC0JCQkJCQlkcHVfY3J0Yy0+bmFtZSwgbm9kZS0+ZXZlbnQpOwo+IC0JCX0KPiAt CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkcHVfY3J0Yy0+c3Bpbl9sb2NrLCBmbGFncyk7Cj4g LQo+ICAJCWRwdV9jcF9jcnRjX3ByZV9pcGMoY3J0Yyk7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIERQ VV9QT1dFUl9FVkVOVF9QT1NUX0RJU0FCTEU6Cj4gQEAgLTI1NTMsOCArMjUwMiw2IEBAIHN0YXRp YyB2b2lkIGRwdV9jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7 Cj4gIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2Owo+IC0JdW5zaWduZWQgbG9uZyBmbGFn czsKPiAtCXN0cnVjdCBkcHVfY3J0Y19pcnFfaW5mbyAqbm9kZSA9IE5VTEw7Cj4gIAlzdHJ1Y3Qg ZHJtX2V2ZW50IGV2ZW50Owo+ICAJdTMyIHBvd2VyX29uOwo+ICAJaW50IHJldDsKPiBAQCAtMjYx NCwxNyArMjU2MSw2IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9j cnRjICpjcnRjKQo+ICAJCWF0b21pY19zZXQoJmRwdV9jcnRjLT5mcmFtZV9wZW5kaW5nLCAwKTsK PiAgCX0KPiAgCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZHB1X2NydGMtPnNwaW5fbG9jaywgZmxh Z3MpOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShub2RlLCAmZHB1X2NydGMtPnVzZXJfZXZlbnRf bGlzdCwgbGlzdCkgewo+IC0JCXJldCA9IDA7Cj4gLQkJaWYgKG5vZGUtPmZ1bmMpCj4gLQkJCXJl dCA9IG5vZGUtPmZ1bmMoY3J0YywgZmFsc2UsICZub2RlLT5pcnEpOwo+IC0JCWlmIChyZXQpCj4g LQkJCURQVV9FUlJPUigiJXMgZmFpbGVkIHRvIGRpc2FibGUgZXZlbnQgJXhcbiIsCj4gLQkJCQkJ ZHB1X2NydGMtPm5hbWUsIG5vZGUtPmV2ZW50KTsKPiAtCX0KPiAtCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmRwdV9jcnRjLT5zcGluX2xvY2ssIGZsYWdzKTsKPiAtCj4gIAlkcHVfY29yZV9wZXJm X2NydGNfdXBkYXRlKGNydGMsIDAsIHRydWUpOwo+ICAKPiAgCWRybV9mb3JfZWFjaF9lbmNvZGVy KGVuY29kZXIsIGNydGMtPmRldikgewo+IEBAIC0yNjU2LDggKzI1OTIsNiBAQCBzdGF0aWMgdm9p ZCBkcHVfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJc3RydWN0IGRwdV9j cnRjICpkcHVfY3J0YzsKPiAgCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiAgCXN0cnVj dCBtc21fZHJtX3ByaXZhdGUgKnByaXY7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0Jc3Ry dWN0IGRwdV9jcnRjX2lycV9pbmZvICpub2RlID0gTlVMTDsKPiAgCXN0cnVjdCBkcm1fZXZlbnQg ZXZlbnQ7Cj4gIAl1MzIgcG93ZXJfb247Cj4gIAlpbnQgcmV0Owo+IEBAIC0yNzA5LDE3ICsyNjQz LDYgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiAgCj4gIAltdXRleF91bmxvY2soJmRwdV9jcnRjLT5jcnRjX2xvY2spOwo+ICAKPiAtCXNwaW5f bG9ja19pcnFzYXZlKCZkcHVfY3J0Yy0+c3Bpbl9sb2NrLCBmbGFncyk7Cj4gLQlsaXN0X2Zvcl9l YWNoX2VudHJ5KG5vZGUsICZkcHVfY3J0Yy0+dXNlcl9ldmVudF9saXN0LCBsaXN0KSB7Cj4gLQkJ cmV0ID0gMDsKPiAtCQlpZiAobm9kZS0+ZnVuYykKPiAtCQkJcmV0ID0gbm9kZS0+ZnVuYyhjcnRj LCB0cnVlLCAmbm9kZS0+aXJxKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlEUFVfRVJST1IoIiVzIGZh aWxlZCB0byBlbmFibGUgZXZlbnQgJXhcbiIsCj4gLQkJCQlkcHVfY3J0Yy0+bmFtZSwgbm9kZS0+ ZXZlbnQpOwo+IC0JfQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZHB1X2NydGMtPnNwaW5f bG9jaywgZmxhZ3MpOwo+IC0KPiAgCWRwdV9jcnRjLT5wb3dlcl9ldmVudCA9IGRwdV9wb3dlcl9o YW5kbGVfcmVnaXN0ZXJfZXZlbnQoCj4gIAkJJnByaXYtPnBoYW5kbGUsCj4gIAkJRFBVX1BPV0VS X0VWRU5UX1BPU1RfRU5BQkxFIHwgRFBVX1BPV0VSX0VWRU5UX1BPU1RfRElTQUJMRSB8Cj4gQEAg LTM5OTUsNyArMzkxOCw3IEBAIHN0cnVjdCBkcm1fY3J0YyAqZHB1X2NydGNfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiAgCWluaXRfY29tcGxl dGlvbigmZHB1X2NydGMtPmZyYW1lX2RvbmVfY29tcCk7Cj4gIAo+ICAJSU5JVF9MSVNUX0hFQUQo JmRwdV9jcnRjLT5mcmFtZV9ldmVudF9saXN0KTsKPiAtCUlOSVRfTElTVF9IRUFEKCZkcHVfY3J0 Yy0+dXNlcl9ldmVudF9saXN0KTsKPiArCj4gIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShk cHVfY3J0Yy0+ZnJhbWVfZXZlbnRzKTsgaSsrKSB7Cj4gIAkJSU5JVF9MSVNUX0hFQUQoJmRwdV9j cnRjLT5mcmFtZV9ldmVudHNbaV0ubGlzdCk7Cj4gIAkJbGlzdF9hZGQoJmRwdV9jcnRjLT5mcmFt ZV9ldmVudHNbaV0ubGlzdCwKPiBAQCAtNDAzOSwxNDIgKzM5NjIsMyBAQCBzdHJ1Y3QgZHJtX2Ny dGMgKmRwdV9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUpCj4gIAlEUFVfREVCVUcoIiVzOiBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQgY3J0 Y1xuIiwgZHB1X2NydGMtPm5hbWUpOwo+ICAJcmV0dXJuIGNydGM7Cj4gIH0KPiAtCj4gLXN0YXRp YyBpbnQgX2RwdV9jcnRjX2V2ZW50X2VuYWJsZShzdHJ1Y3QgZHB1X2ttcyAqa21zLAo+IC0JCXN0 cnVjdCBkcm1fY3J0YyAqY3J0Y19kcm0sIHUzMiBldmVudCkKPiAtewo+IC0Jc3RydWN0IGRwdV9j cnRjICpjcnRjID0gTlVMTDsKPiAtCXN0cnVjdCBkcHVfY3J0Y19pcnFfaW5mbyAqbm9kZTsKPiAt CXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXY7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ IC0JYm9vbCBmb3VuZCA9IGZhbHNlOwo+IC0JaW50IHJldCwgaSA9IDA7Cj4gLQo+IC0JY3J0YyA9 IHRvX2RwdV9jcnRjKGNydGNfZHJtKTsKPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZjcnRjLT5zcGlu X2xvY2ssIGZsYWdzKTsKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkobm9kZSwgJmNydGMtPnVzZXJf ZXZlbnRfbGlzdCwgbGlzdCkgewo+IC0JCWlmIChub2RlLT5ldmVudCA9PSBldmVudCkgewo+IC0J CQlmb3VuZCA9IHRydWU7Cj4gLQkJCWJyZWFrOwo+IC0JCX0KPiAtCX0KPiAtCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmNydGMtPnNwaW5fbG9jaywgZmxhZ3MpOwo+IC0KPiAtCS8qIGV2ZW50IGFs cmVhZHkgZW5hYmxlZCAqLwo+IC0JaWYgKGZvdW5kKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCW5v ZGUgPSBOVUxMOwo+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3VzdG9tX2V2ZW50cyk7 IGkrKykgewo+IC0JCWlmIChjdXN0b21fZXZlbnRzW2ldLmV2ZW50ID09IGV2ZW50ICYmCj4gLQkJ CWN1c3RvbV9ldmVudHNbaV0uZnVuYykgewo+IC0JCQlub2RlID0ga3phbGxvYyhzaXplb2YoKm5v ZGUpLCBHRlBfS0VSTkVMKTsKPiAtCQkJaWYgKCFub2RlKQo+IC0JCQkJcmV0dXJuIC1FTk9NRU07 Cj4gLQkJCW5vZGUtPmV2ZW50ID0gZXZlbnQ7Cj4gLQkJCUlOSVRfTElTVF9IRUFEKCZub2RlLT5s aXN0KTsKPiAtCQkJbm9kZS0+ZnVuYyA9IGN1c3RvbV9ldmVudHNbaV0uZnVuYzsKPiAtCQkJbm9k ZS0+ZXZlbnQgPSBldmVudDsKPiAtCQkJYnJlYWs7Cj4gLQkJfQo+IC0JfQo+IC0KPiAtCWlmICgh bm9kZSkgewo+IC0JCURQVV9FUlJPUigidW5zdXBwb3J0ZWQgZXZlbnQgJXhcbiIsIGV2ZW50KTsK PiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiAtCj4gLQlwcml2ID0ga21zLT5kZXYtPmRldl9w cml2YXRlOwo+IC0JcmV0ID0gMDsKPiAtCWlmIChjcnRjX2RybS0+ZW5hYmxlZCkgewo+IC0JCWRw dV9wb3dlcl9yZXNvdXJjZV9lbmFibGUoJnByaXYtPnBoYW5kbGUsIGttcy0+Y29yZV9jbGllbnQs Cj4gLQkJCQl0cnVlKTsKPiAtCQlJTklUX0xJU1RfSEVBRCgmbm9kZS0+aXJxLmxpc3QpOwo+IC0J CXJldCA9IG5vZGUtPmZ1bmMoY3J0Y19kcm0sIHRydWUsICZub2RlLT5pcnEpOwo+IC0JCWRwdV9w b3dlcl9yZXNvdXJjZV9lbmFibGUoJnByaXYtPnBoYW5kbGUsIGttcy0+Y29yZV9jbGllbnQsCj4g LQkJCQlmYWxzZSk7Cj4gLQl9Cj4gLQo+IC0JaWYgKCFyZXQpIHsKPiAtCQlzcGluX2xvY2tfaXJx c2F2ZSgmY3J0Yy0+c3Bpbl9sb2NrLCBmbGFncyk7Cj4gLQkJbGlzdF9hZGRfdGFpbCgmbm9kZS0+ bGlzdCwgJmNydGMtPnVzZXJfZXZlbnRfbGlzdCk7Cj4gLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmY3J0Yy0+c3Bpbl9sb2NrLCBmbGFncyk7Cj4gLQl9IGVsc2Ugewo+IC0JCWtmcmVlKG5vZGUp Owo+IC0JfQo+IC0KPiAtCXJldHVybiByZXQ7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgX2RwdV9j cnRjX2V2ZW50X2Rpc2FibGUoc3RydWN0IGRwdV9rbXMgKmttcywKPiAtCQlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGNfZHJtLCB1MzIgZXZlbnQpCj4gLXsKPiAtCXN0cnVjdCBkcHVfY3J0YyAqY3J0YyA9 IE5VTEw7Cj4gLQlzdHJ1Y3QgZHB1X2NydGNfaXJxX2luZm8gKm5vZGUgPSBOVUxMOwo+IC0Jc3Ry dWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gLQli b29sIGZvdW5kID0gZmFsc2U7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWNydGMgPSB0b19kcHVfY3J0 YyhjcnRjX2RybSk7Cj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmY3J0Yy0+c3Bpbl9sb2NrLCBmbGFn cyk7Cj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5vZGUsICZjcnRjLT51c2VyX2V2ZW50X2xpc3Qs IGxpc3QpIHsKPiAtCQlpZiAobm9kZS0+ZXZlbnQgPT0gZXZlbnQpIHsKPiAtCQkJbGlzdF9kZWwo Jm5vZGUtPmxpc3QpOwo+IC0JCQlmb3VuZCA9IHRydWU7Cj4gLQkJCWJyZWFrOwo+IC0JCX0KPiAt CX0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNydGMtPnNwaW5fbG9jaywgZmxhZ3MpOwo+ IC0KPiAtCS8qIGV2ZW50IGFscmVhZHkgZGlzYWJsZWQgKi8KPiAtCWlmICghZm91bmQpCj4gLQkJ cmV0dXJuIDA7Cj4gLQo+IC0JLyoqCj4gLQkgKiBjcnRjIGlzIGRpc2FibGVkIGludGVycnVwdHMg YXJlIGNsZWFyZWQgcmVtb3ZlIGZyb20gdGhlIGxpc3QsCj4gLQkgKiBubyBuZWVkIHRvIGRpc2Fi bGUvZGUtcmVnaXN0ZXIuCj4gLQkgKi8KPiAtCWlmICghY3J0Y19kcm0tPmVuYWJsZWQpIHsKPiAt CQlrZnJlZShub2RlKTsKPiAtCQlyZXR1cm4gMDsKPiAtCX0KPiAtCXByaXYgPSBrbXMtPmRldi0+ ZGV2X3ByaXZhdGU7Cj4gLQlkcHVfcG93ZXJfcmVzb3VyY2VfZW5hYmxlKCZwcml2LT5waGFuZGxl LCBrbXMtPmNvcmVfY2xpZW50LCB0cnVlKTsKPiAtCXJldCA9IG5vZGUtPmZ1bmMoY3J0Y19kcm0s IGZhbHNlLCAmbm9kZS0+aXJxKTsKPiAtCWRwdV9wb3dlcl9yZXNvdXJjZV9lbmFibGUoJnByaXYt PnBoYW5kbGUsIGttcy0+Y29yZV9jbGllbnQsIGZhbHNlKTsKPiAtCXJldHVybiByZXQ7Cj4gLX0K PiAtCj4gLWludCBkcHVfY3J0Y19yZWdpc3Rlcl9jdXN0b21fZXZlbnQoc3RydWN0IGRwdV9rbXMg KmttcywKPiAtCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGNfZHJtLCB1MzIgZXZlbnQsIGJvb2wgZW4p Cj4gLXsKPiAtCXN0cnVjdCBkcHVfY3J0YyAqY3J0YyA9IE5VTEw7Cj4gLQlpbnQgcmV0Owo+IC0K PiAtCWNydGMgPSB0b19kcHVfY3J0YyhjcnRjX2RybSk7Cj4gLQlpZiAoIWNydGMgfHwgIWttcyB8 fCAha21zLT5kZXYpIHsKPiAtCQlEUk1fRVJST1IoImludmFsaWQgZHB1X2NydGMgJXBLIGttcyAl cEsgZGV2ICVwS1xuIiwgY3J0YywKPiAtCQkJa21zLCAoKGttcykgPyAoa21zLT5kZXYpIDogTlVM TCkpOwo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0JfQo+IC0KPiAtCWlmIChlbikKPiAtCQlyZXQg PSBfZHB1X2NydGNfZXZlbnRfZW5hYmxlKGttcywgY3J0Y19kcm0sIGV2ZW50KTsKPiAtCWVsc2UK PiAtCQlyZXQgPSBfZHB1X2NydGNfZXZlbnRfZGlzYWJsZShrbXMsIGNydGNfZHJtLCBldmVudCk7 Cj4gLQo+IC0JcmV0dXJuIHJldDsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBkcHVfY3J0Y19wb3dl cl9pbnRlcnJ1cHRfaGFuZGxlcihzdHJ1Y3QgZHJtX2NydGMgKmNydGNfZHJtLAo+IC0JYm9vbCBl biwgc3RydWN0IGRwdV9pcnFfY2FsbGJhY2sgKmlycSkKPiAtewo+IC0JcmV0dXJuIDA7Cj4gLX0K PiAtCj4gLXN0YXRpYyBpbnQgZHB1X2NydGNfaWRsZV9pbnRlcnJ1cHRfaGFuZGxlcihzdHJ1Y3Qg ZHJtX2NydGMgKmNydGNfZHJtLAo+IC0JYm9vbCBlbiwgc3RydWN0IGRwdV9pcnFfY2FsbGJhY2sg KmlycSkKPiAtewo+IC0JcmV0dXJuIDA7Cj4gLX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9jcnRjLmgKPiBpbmRleCBmYWRlNjU4Li5iYzA4NDE2IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCj4gQEAgLTIyMyw3ICsyMjMsNiBAQCBzdHJ1 Y3QgZHB1X2NydGMgewo+ICAJc3RydWN0IGxpc3RfaGVhZCBkaXJ0eV9saXN0Owo+ICAJc3RydWN0 IGxpc3RfaGVhZCBhZF9kaXJ0eTsKPiAgCXN0cnVjdCBsaXN0X2hlYWQgYWRfYWN0aXZlOwo+IC0J c3RydWN0IGxpc3RfaGVhZCB1c2VyX2V2ZW50X2xpc3Q7Cj4gIAo+ICAJc3RydWN0IG11dGV4IGNy dGNfbG9jazsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYwo+IGlu ZGV4IDJjMTg3ZTkuLjViMDdmNzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2ttcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2ttcy5jCj4gQEAgLTkwLDggKzkwLDYgQEAKPiAgCj4gIHN0YXRpYyBpbnQgZHB1X2ttc19o d19pbml0KHN0cnVjdCBtc21fa21zICprbXMpOwo+ICBzdGF0aWMgaW50IF9kcHVfa21zX21tdV9k ZXN0cm95KHN0cnVjdCBkcHVfa21zICpkcHVfa21zKTsKPiAtc3RhdGljIGludCBfZHB1X2ttc19y ZWdpc3Rlcl9ldmVudHMoc3RydWN0IG1zbV9rbXMgKmttcywKPiAtCQlzdHJ1Y3QgZHJtX21vZGVf b2JqZWN0ICpvYmosIHUzMiBldmVudCwgYm9vbCBlbik7Cj4gIGJvb2wgZHB1X2lzX2N1c3RvbV9j bGllbnQodm9pZCkKPiAgewo+ICAJcmV0dXJuIGRwdWN1c3RvbTsKPiBAQCAtMTc0NSw3ICsxNzQz LDYgQEAgc3RhdGljIGludCBkcHVfa21zX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4g IAkucG1fc3VzcGVuZCAgICAgID0gZHB1X2ttc19wbV9zdXNwZW5kLAo+ICAJLnBtX3Jlc3VtZSAg ICAgICA9IGRwdV9rbXNfcG1fcmVzdW1lLAo+ICAJLmRlc3Ryb3kgICAgICAgICA9IGRwdV9rbXNf ZGVzdHJveSwKPiAtCS5yZWdpc3Rlcl9ldmVudHMgPSBfZHB1X2ttc19yZWdpc3Rlcl9ldmVudHMs Cj4gIAkuZ2V0X2FkZHJlc3Nfc3BhY2UgPSBfZHB1X2ttc19nZXRfYWRkcmVzc19zcGFjZSwKPiAg CS5wb3N0b3BlbiA9IF9kcHVfa21zX3Bvc3Rfb3BlbiwKPiAgfTsKPiBAQCAtMjE1OSwzMSArMjE1 NiwzIEBAIHN0cnVjdCBtc21fa21zICpkcHVfa21zX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgCXJldHVybiAmZHB1X2ttcy0+YmFzZTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBfZHB1 X2ttc19yZWdpc3Rlcl9ldmVudHMoc3RydWN0IG1zbV9rbXMgKmttcywKPiAtCQlzdHJ1Y3QgZHJt X21vZGVfb2JqZWN0ICpvYmosIHUzMiBldmVudCwgYm9vbCBlbikKPiAtewo+IC0JaW50IHJldCA9 IDA7Cj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBOVUxMOwo+IC0Jc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm4gPSBOVUxMOwo+IC0Jc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMgPSBOVUxMOwo+ IC0KPiAtCWlmICgha21zIHx8ICFvYmopIHsKPiAtCQlEUFVfRVJST1IoImludmFsaWQgYXJndW1l bnQga21zICVwSyBvYmogJXBLXG4iLCBrbXMsIG9iaik7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4g LQl9Cj4gLQo+IC0JZHB1X2ttcyA9IHRvX2RwdV9rbXMoa21zKTsKPiAtCXN3aXRjaCAob2JqLT50 eXBlKSB7Cj4gLQljYXNlIERSTV9NT0RFX09CSkVDVF9DUlRDOgo+IC0JCWNydGMgPSBvYmpfdG9f Y3J0YyhvYmopOwo+IC0JCXJldCA9IGRwdV9jcnRjX3JlZ2lzdGVyX2N1c3RvbV9ldmVudChkcHVf a21zLCBjcnRjLCBldmVudCwgZW4pOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSBEUk1fTU9ERV9PQkpF Q1RfQ09OTkVDVE9SOgo+IC0JCWNvbm4gPSBvYmpfdG9fY29ubmVjdG9yKG9iaik7Cj4gLQkJcmV0 ID0gZHB1X2Nvbm5lY3Rvcl9yZWdpc3Rlcl9jdXN0b21fZXZlbnQoZHB1X2ttcywgY29ubiwgZXZl bnQsCj4gLQkJCQllbik7Cj4gLQkJYnJlYWs7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIHJldDsKPiAt fQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2Rydi5jCj4gaW5kZXggNWIxMmU4Ny4uYTcxMGI2MyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2Rydi5jCj4gQEAgLTEyMjYsMTgwICsxMjI2LDYgQEAgc3RhdGljIGludCBtc21f aW9jdGxfc3VibWl0cXVldWVfY2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKPiAgCXJldHVybiBtc21fc3VibWl0cXVldWVfcmVtb3ZlKGZpbGUtPmRyaXZlcl9wcml2LCBp ZCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgbXNtX2RybV9vYmplY3Rfc3VwcG9ydHNfZXZlbnQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAtCQlzdHJ1Y3QgZHJtX21zbV9ldmVudF9yZXEgKnJl cSwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+IC17Cj4gLQlpbnQgcmV0ID0gLUVJTlZBTDsKPiAt CXN0cnVjdCBkcm1fbW9kZV9vYmplY3QgKmFyZ19vYmo7Cj4gLQo+IC0JYXJnX29iaiA9IGRybV9t b2RlX29iamVjdF9maW5kKGRldiwgZmlsZSwgcmVxLT5vYmplY3RfaWQsIHJlcS0+b2JqZWN0X3R5 cGUpOwo+IC0JaWYgKCFhcmdfb2JqKQo+IC0JCXJldHVybiAtRU5PRU5UOwo+IC0KPiAtCXN3aXRj aCAoYXJnX29iai0+dHlwZSkgewo+IC0JY2FzZSBEUk1fTU9ERV9PQkpFQ1RfQ1JUQzoKPiAtCWNh c2UgRFJNX01PREVfT0JKRUNUX0NPTk5FQ1RPUjoKPiAtCQlyZXQgPSAwOwo+IC0JCWJyZWFrOwo+ IC0JZGVmYXVsdDoKPiAtCQlyZXQgPSAtRU9QTk9UU1VQUDsKPiAtCQlicmVhazsKPiAtCX0KPiAt Cj4gLQlyZXR1cm4gcmV0Owo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IG1zbV9yZWdpc3Rlcl9ldmVu dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0Jc3RydWN0IGRybV9tc21fZXZlbnRfcmVxICpy ZXEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwgYm9vbCBlbikKPiAtewo+IC0JaW50IHJldCA9IC1F SU5WQUw7Cj4gLQlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAtCXN0cnVjdCBtc21fa21zICprbXMgPSBwcml2LT5rbXM7Cj4gLQlzdHJ1Y3QgZHJtX21v ZGVfb2JqZWN0ICphcmdfb2JqOwo+IC0KPiAtCWFyZ19vYmogPSBkcm1fbW9kZV9vYmplY3RfZmlu ZChkZXYsIGZpbGUsIHJlcS0+b2JqZWN0X2lkLCByZXEtPm9iamVjdF90eXBlKTsKPiAtCWlmICgh YXJnX29iaikKPiAtCQlyZXR1cm4gLUVOT0VOVDsKPiAtCj4gLQlyZXQgPSBrbXMtPmZ1bmNzLT5y ZWdpc3Rlcl9ldmVudHMoa21zLCBhcmdfb2JqLCByZXEtPmV2ZW50LCBlbik7Cj4gLQlyZXR1cm4g cmV0Owo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IG1zbV9ldmVudF9jbGllbnRfY291bnQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAtCQlzdHJ1Y3QgZHJtX21zbV9ldmVudF9yZXEgKnJlcV9ldmVu dCwgYm9vbCBsb2NrZWQpCj4gLXsKPiAtCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+IC0JdW5zaWduZWQgbG9uZyBmbGFnID0gMDsKPiAtCXN0cnVjdCBt c21fZHJtX2V2ZW50ICpub2RlOwo+IC0JaW50IGNvdW50ID0gMDsKPiAtCj4gLQlpZiAoIWxvY2tl ZCkKPiAtCQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFnKTsKPiAtCWxp c3RfZm9yX2VhY2hfZW50cnkobm9kZSwgJnByaXYtPmNsaWVudF9ldmVudF9saXN0LCBiYXNlLmxp bmspIHsKPiAtCQlpZiAobm9kZS0+ZXZlbnQudHlwZSA9PSByZXFfZXZlbnQtPmV2ZW50ICYmCj4g LQkJCW5vZGUtPmluZm8ub2JqZWN0X2lkID09IHJlcV9ldmVudC0+b2JqZWN0X2lkKQo+IC0JCQlj b3VudCsrOwo+IC0JfQo+IC0JaWYgKCFsb2NrZWQpCj4gLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFnKTsKPiAtCj4gLQlyZXR1cm4gY291bnQ7Cj4gLX0KPiAt Cj4gLXN0YXRpYyBpbnQgbXNtX2lvY3RsX3JlZ2lzdGVyX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCj4gLQkJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQo+IC17 Cj4gLQlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAt CXN0cnVjdCBkcm1fbXNtX2V2ZW50X3JlcSAqcmVxX2V2ZW50ID0gZGF0YTsKPiAtCXN0cnVjdCBt c21fZHJtX2V2ZW50ICpjbGllbnQsICpub2RlOwo+IC0JdW5zaWduZWQgbG9uZyBmbGFnID0gMDsK PiAtCWJvb2wgZHVwX3JlcXVlc3QgPSBmYWxzZTsKPiAtCWludCByZXQgPSAwLCBjb3VudCA9IDA7 Cj4gLQo+IC0JcmV0ID0gbXNtX2RybV9vYmplY3Rfc3VwcG9ydHNfZXZlbnQoZGV2LCByZXFfZXZl bnQsIGZpbGUpOwo+IC0JaWYgKHJldCkgewo+IC0JCURSTV9FUlJPUigidW5zdXBwb3J0ZWQgZXZl bnQgJXggb2JqZWN0ICV4IG9iamVjdCBpZCAlZFxuIiwKPiAtCQkJcmVxX2V2ZW50LT5ldmVudCwg cmVxX2V2ZW50LT5vYmplY3RfdHlwZSwKPiAtCQkJcmVxX2V2ZW50LT5vYmplY3RfaWQpOwo+IC0J CXJldHVybiByZXQ7Cj4gLQl9Cj4gLQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRf bG9jaywgZmxhZyk7Cj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5vZGUsICZwcml2LT5jbGllbnRf ZXZlbnRfbGlzdCwgYmFzZS5saW5rKSB7Cj4gLQkJaWYgKG5vZGUtPmJhc2UuZmlsZV9wcml2ICE9 IGZpbGUpCj4gLQkJCWNvbnRpbnVlOwo+IC0JCWlmIChub2RlLT5ldmVudC50eXBlID09IHJlcV9l dmVudC0+ZXZlbnQgJiYKPiAtCQkJbm9kZS0+aW5mby5vYmplY3RfaWQgPT0gcmVxX2V2ZW50LT5v YmplY3RfaWQpIHsKPiAtCQkJRFJNX0RFQlVHKCJkdXBsaWNhdGUgcmVxdWVzdCBmb3IgZXZlbnQg JXggb2JqIGlkICVkXG4iLAo+IC0JCQkJbm9kZS0+ZXZlbnQudHlwZSwgbm9kZS0+aW5mby5vYmpl Y3RfaWQpOwo+IC0JCQlkdXBfcmVxdWVzdCA9IHRydWU7Cj4gLQkJCWJyZWFrOwo+IC0JCX0KPiAt CX0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZyk7Cj4g LQo+IC0JaWYgKGR1cF9yZXF1ZXN0KQo+IC0JCXJldHVybiAtRUFMUkVBRFk7Cj4gLQo+IC0JY2xp ZW50ID0ga3phbGxvYyhzaXplb2YoKmNsaWVudCksIEdGUF9LRVJORUwpOwo+IC0JaWYgKCFjbGll bnQpCj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gLQo+IC0JY2xpZW50LT5iYXNlLmZpbGVfcHJpdiA9 IGZpbGU7Cj4gLQljbGllbnQtPmJhc2UuZXZlbnQgPSAmY2xpZW50LT5ldmVudDsKPiAtCWNsaWVu dC0+ZXZlbnQudHlwZSA9IHJlcV9ldmVudC0+ZXZlbnQ7Cj4gLQltZW1jcHkoJmNsaWVudC0+aW5m bywgcmVxX2V2ZW50LCBzaXplb2YoY2xpZW50LT5pbmZvKSk7Cj4gLQo+IC0JLyogR2V0IHRoZSBj b3VudCBvZiBjbGllbnRzIHRoYXQgaGF2ZSByZWdpc3RlcmVkIGZvciBldmVudC4KPiAtCSAqIEV2 ZW50IHNob3VsZCBiZSBlbmFibGVkIGZvciBmaXJzdCBjbGllbnQsIGZvciBzdWJzZXF1ZW50IGVu YWJsZQo+IC0JICogY2FsbHMgYWRkIHRvIGNsaWVudCBsaXN0IGFuZCByZXR1cm4uCj4gLQkgKi8K PiAtCWNvdW50ID0gbXNtX2V2ZW50X2NsaWVudF9jb3VudChkZXYsIHJlcV9ldmVudCwgZmFsc2Up Owo+IC0JLyogQWRkIGN1cnJlbnQgY2xpZW50IHRvIGxpc3QgKi8KPiAtCXNwaW5fbG9ja19pcnFz YXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWcpOwo+IC0JbGlzdF9hZGRfdGFpbCgmY2xpZW50LT5i YXNlLmxpbmssICZwcml2LT5jbGllbnRfZXZlbnRfbGlzdCk7Cj4gLQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWcpOwo+IC0KPiAtCWlmIChjb3VudCkKPiAtCQly ZXR1cm4gMDsKPiAtCj4gLQlyZXQgPSBtc21fcmVnaXN0ZXJfZXZlbnQoZGV2LCByZXFfZXZlbnQs IGZpbGUsIHRydWUpOwo+IC0JaWYgKHJldCkgewo+IC0JCURSTV9FUlJPUigiZmFpbGVkIHRvIGVu YWJsZSBldmVudCAleCBvYmplY3QgJXggb2JqZWN0IGlkICVkXG4iLAo+IC0JCQlyZXFfZXZlbnQt PmV2ZW50LCByZXFfZXZlbnQtPm9iamVjdF90eXBlLAo+IC0JCQlyZXFfZXZlbnQtPm9iamVjdF9p ZCk7Cj4gLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZyk7Cj4gLQkJ bGlzdF9kZWwoJmNsaWVudC0+YmFzZS5saW5rKTsKPiAtCQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZkZXYtPmV2ZW50X2xvY2ssIGZsYWcpOwo+IC0JCWtmcmVlKGNsaWVudCk7Cj4gLQl9Cj4gLQly ZXR1cm4gcmV0Owo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IG1zbV9pb2N0bF9kZXJlZ2lzdGVyX2V2 ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gLQkJCQkgICAgICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gLXsKPiAtCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYg PSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGRybV9tc21fZXZlbnRfcmVxICpyZXFfZXZl bnQgPSBkYXRhOwo+IC0Jc3RydWN0IG1zbV9kcm1fZXZlbnQgKmNsaWVudCA9IE5VTEwsICpub2Rl LCAqdGVtcDsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZyA9IDA7Cj4gLQlpbnQgY291bnQgPSAwOwo+ IC0JYm9vbCBmb3VuZCA9IGZhbHNlOwo+IC0JaW50IHJldCA9IDA7Cj4gLQo+IC0JcmV0ID0gbXNt X2RybV9vYmplY3Rfc3VwcG9ydHNfZXZlbnQoZGV2LCByZXFfZXZlbnQsIGZpbGUpOwo+IC0JaWYg KHJldCkgewo+IC0JCURSTV9FUlJPUigidW5zdXBwb3J0ZWQgZXZlbnQgJXggb2JqZWN0ICV4IG9i amVjdCBpZCAlZFxuIiwKPiAtCQkJcmVxX2V2ZW50LT5ldmVudCwgcmVxX2V2ZW50LT5vYmplY3Rf dHlwZSwKPiAtCQkJcmVxX2V2ZW50LT5vYmplY3RfaWQpOwo+IC0JCXJldHVybiByZXQ7Cj4gLQl9 Cj4gLQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZyk7Cj4gLQls aXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobm9kZSwgdGVtcCwgJnByaXYtPmNsaWVudF9ldmVudF9s aXN0LAo+IC0JCQliYXNlLmxpbmspIHsKPiAtCQlpZiAobm9kZS0+ZXZlbnQudHlwZSA9PSByZXFf ZXZlbnQtPmV2ZW50ICYmCj4gLQkJICAgIG5vZGUtPmluZm8ub2JqZWN0X2lkID09IHJlcV9ldmVu dC0+b2JqZWN0X2lkICYmCj4gLQkJICAgIG5vZGUtPmJhc2UuZmlsZV9wcml2ID09IGZpbGUpIHsK PiAtCQkJY2xpZW50ID0gbm9kZTsKPiAtCQkJbGlzdF9kZWwoJmNsaWVudC0+YmFzZS5saW5rKTsK PiAtCQkJZm91bmQgPSB0cnVlOwo+IC0JCQlrZnJlZShjbGllbnQpOwo+IC0JCQlicmVhazsKPiAt CQl9Cj4gLQl9Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZs YWcpOwo+IC0KPiAtCWlmICghZm91bmQpCj4gLQkJcmV0dXJuIC1FTk9FTlQ7Cj4gLQo+IC0JY291 bnQgPSBtc21fZXZlbnRfY2xpZW50X2NvdW50KGRldiwgcmVxX2V2ZW50LCBmYWxzZSk7Cj4gLQlp ZiAoIWNvdW50KQo+IC0JCXJldCA9IG1zbV9yZWdpc3Rlcl9ldmVudChkZXYsIHJlcV9ldmVudCwg ZmlsZSwgZmFsc2UpOwo+IC0KPiAtCXJldHVybiByZXQ7Cj4gLX0KPiAtCj4gIHZvaWQgbXNtX21v ZGVfb2JqZWN0X2V2ZW50X25vdGlmeShzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICpvYmosCj4gIAkJ c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9ldmVudCAqZXZlbnQsIHU4ICpwYXls b2FkKQo+ICB7Cj4gQEAgLTE0NTIsMjkgKzEyNzgsNiBAQCB2b2lkIG1zbV9tb2RlX29iamVjdF9l dmVudF9ub3RpZnkoc3RydWN0IGRybV9tb2RlX29iamVjdCAqb2JqLAo+ICAKPiAgc3RhdGljIGlu dCBtc21fcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKPiAg ewo+IC0Jc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYgPSBmaWxwLT5wcml2YXRlX2RhdGE7Cj4g LQlzdHJ1Y3QgZHJtX21pbm9yICptaW5vciA9IGZpbGVfcHJpdi0+bWlub3I7Cj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gbWlub3ItPmRldjsKPiAtCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUg KnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IG1zbV9kcm1fZXZlbnQgKm5vZGUs ICp0ZW1wOwo+IC0JdTMyIGNvdW50Owo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsKPiAtCj4gLQlz cGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4gLQlsaXN0X2Zvcl9l YWNoX2VudHJ5X3NhZmUobm9kZSwgdGVtcCwgJnByaXYtPmNsaWVudF9ldmVudF9saXN0LAo+IC0J CQliYXNlLmxpbmspIHsKPiAtCQlpZiAobm9kZS0+YmFzZS5maWxlX3ByaXYgIT0gZmlsZV9wcml2 KQo+IC0JCQljb250aW51ZTsKPiAtCQlsaXN0X2RlbCgmbm9kZS0+YmFzZS5saW5rKTsKPiAtCQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPiAtCQljb3Vu dCA9IG1zbV9ldmVudF9jbGllbnRfY291bnQoZGV2LCAmbm9kZS0+aW5mbywgdHJ1ZSk7Cj4gLQkJ aWYgKCFjb3VudCkKPiAtCQkJbXNtX3JlZ2lzdGVyX2V2ZW50KGRldiwgJm5vZGUtPmluZm8sIGZp bGVfcHJpdiwgZmFsc2UpOwo+IC0JCWtmcmVlKG5vZGUpOwo+IC0JCXNwaW5fbG9ja19pcnFzYXZl KCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPiAtCX0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+IC0KPiAgCXJldHVybiBkcm1fcmVsZWFzZShp bm9kZSwgZmlscCk7Cj4gIH0KPiAgCj4gQEAgLTE1OTUsMTAgKzEzOTgsNiBAQCBpbnQgbXNtX2lv Y3RsX3JtZmIyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICNpZmRlZiBD T05GSUdfRFJNX01TTV9XUklURUJBQ0sKPiAgCURSTV9JT0NUTF9ERUZfRFJWKERQVV9XQl9DT05G SUcsIGRwdV93Yl9jb25maWcsIERSTV9VTkxPQ0tFRHxEUk1fQVVUSCksCj4gICNlbmRpZgo+IC0J RFJNX0lPQ1RMX0RFRl9EUlYoTVNNX1JFR0lTVEVSX0VWRU5ULCAgbXNtX2lvY3RsX3JlZ2lzdGVy X2V2ZW50LAo+IC0JCQkgIERSTV9VTkxPQ0tFRHxEUk1fQ09OVFJPTF9BTExPVyksCj4gLQlEUk1f SU9DVExfREVGX0RSVihNU01fREVSRUdJU1RFUl9FVkVOVCwgIG1zbV9pb2N0bF9kZXJlZ2lzdGVy X2V2ZW50LAo+IC0JCQkgIERSTV9VTkxPQ0tFRHxEUk1fQ09OVFJPTF9BTExPVyksCj4gIAlEUk1f SU9DVExfREVGX0RSVihNU01fUk1GQjIsIG1zbV9pb2N0bF9ybWZiMiwKPiAgCQkJICBEUk1fQ09O VFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLAo+ICB9Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oCj4gaW5k ZXggMjU4MDBjMC4uMGFlMWRlYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9rbXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oCj4gQEAgLTk0LDgg Kzk0LDYgQEAgc3RydWN0IG1zbV9rbXNfZnVuY3Mgewo+ICAJdm9pZCAoKnByZWNsb3NlKShzdHJ1 Y3QgbXNtX2ttcyAqa21zLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwo+ICAJdm9pZCAoKnBvc3Rj bG9zZSkoc3RydWN0IG1zbV9rbXMgKmttcywgc3RydWN0IGRybV9maWxlICpmaWxlKTsKPiAgCXZv aWQgKCpsYXN0Y2xvc2UpKHN0cnVjdCBtc21fa21zICprbXMpOwo+IC0JaW50ICgqcmVnaXN0ZXJf ZXZlbnRzKShzdHJ1Y3QgbXNtX2ttcyAqa21zLAo+IC0JCQlzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0 ICpvYmosIHUzMiBldmVudCwgYm9vbCBlbik7Cj4gIAl2b2lkICgqc2V0X2VuY29kZXJfbW9kZSko c3RydWN0IG1zbV9rbXMgKmttcywKPiAgCQkJCSBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIs Cj4gIAkJCQkgYm9vbCBjbWRfbW9kZSk7Cj4gLS0gCj4gVGhlIFF1YWxjb21tIElubm92YXRpb24g Q2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKPiBhIExp bnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cj4gCj4gLS0KPiBUbyB1bnN1YnNj cmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtYXJt LW1zbSIgaW4KPiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVs Lm9yZwo+IE1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFq b3Jkb21vLWluZm8uaHRtbAoKLS0gClNlYW4gUGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2ds ZSAvIENocm9taXVtIE9TCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVk cmVubwo=