From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: Re: [DPU PATCH v2 03/12] drm/msm/dpu: add MDSS top level driver for dpu Date: Fri, 11 May 2018 11:05:24 -0600 Message-ID: <20180511170523.GF4995@jcrouse-lnx.qualcomm.com> References: <1526050178-31893-1-git-send-email-ryadav@codeaurora.org> <1526050178-31893-4-git-send-email-ryadav@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: <1526050178-31893-4-git-send-email-ryadav-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: Rajesh Yadav 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-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gRnJpLCBNYXkgMTEsIDIwMTggYXQgMDg6MTk6MjlQTSArMDUzMCwgUmFqZXNoIFlhZGF2IHdy b3RlOgo+IFNvQ3MgY29udGFpbmluZyBkcHUgaGF2ZSBhIE1EU1MgdG9wIGxldmVsIHdyYXBwZXIK PiB3aGljaCBpbmNsdWRlcyBzdWItYmxvY2tzIGFzIGRwdSwgZHNpLCBwaHksIGRwIGV0Yy4KPiBN RFNTIHRvcCBsZXZlbCB3cmFwcGVyIG1hbmFnZXMgY29tbW9uIHJlc291cmNlcyBsaWtlCj4gY29t bW9uIGNsb2NrcywgcG93ZXIgYW5kIGlycSBmb3IgaXRzIHN1Yi1ibG9ja3MuCj4gCj4gQ3VycmVu dGx5LCBpbiBkcHUgZHJpdmVyLCBhbGwgdGhlIHBvd2VyIHJlc291cmNlCj4gbWFuYWdlbWVudCBp cyBwYXJ0IG9mIHBvd2VyX2hhbmRsZSB3aGljaCBtYW5hZ2VzCj4gdGhlc2UgcmVzb3VyY2VzIHZp YSBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi4gQW5kCj4gdGhlIHJlc291cmNlIHJlbGF0aW9uc2hp cHMgYXJlIG5vdCBtb2RlbGxlZCBwcm9wZXJseQo+IGluIGR0LiAgTW9yZW92ZXIgdGhlIGlycSBk b21haW4gaGFuZGxpbmcgY29kZSBpcyBwYXJ0Cj4gb2YgZHB1IGRldmljZSAod2hpY2ggaXMgYSBj aGlsZCBkZXZpY2UpIGR1ZSB0byBsYWNrCj4gb2YgYSBkZWRpY2F0ZWQgZHJpdmVyIGZvciBNRFNT IHRvcCBsZXZlbCB3cmFwcGVyCj4gZGV2aWNlLgo+IAo+IFRoaXMgY2hhbmdlIGFkZHMgZHB1X21k c3MgdG9wIGxldmVsIGRyaXZlciB0byBoYW5kbGUKPiBjb21tb24gY2xvY2sgbGlrZSAtIGNvcmUg Y2xvY2ssIGFoYiBjbG9jawo+IChmb3IgcmVnaXN0ZXIgYWNjZXNzKSwgbWFpbiBwb3dlciBzdXBw bHkgKGkuZS4gZ2RzYykKPiBhbmQgaXJxIG1hbmFnZW1lbnQuCj4gVGhlIHRvcCBsZXZlbCBtZHNz IGRldmljZS9kcml2ZXIgYWN0cyBhcyBhbiBpbnRlcnJ1cHQKPiBjb250cm9sbGVyIGFuZCBtYW5h Z2UgaHdpcnEgbWFwcGluZyBmb3IgaXRzIGNoaWxkCj4gZGV2aWNlcy4KPiAKPiBJdCBpbXBsZW1l bnRzIHJ1bnRpbWVfcG0gc3VwcG9ydCBmb3IgcmVzb3VyY2UgbWFuYWdlbWVudC4KPiBDaGlsZCBu b2RlcyBjYW4gY29udHJvbCB0aGVzZSByZXNvdXJjZXMgdmlhIHJ1bnRpbWVfcG0KPiBnZXQvcHV0 IGNhbGxzIG9uIHRoZWlyIGNvcnJlc3BvbmRpbmcgZGV2aWNlcyBkdWUgdG8gcGFyZW50Cj4gY2hp bGQgcmVsYXRpb25zaGlwIGRlZmluZWQgaW4gZHQuCj4gCj4gQ2hhbmdlcyBpbiB2MjoKPiAJLSBt ZXJnZSBfZHB1X21kc3NfaHdfcmV2X2luaXQgdG8gZHB1X21kc3NfaW5pdCAoU2VhbiBQYXVsKQo+ IAktIG1lcmdlIF9kcHVfbWRzc19nZXRfaW50cl9zb3VyY2VzIHRvIGRwdV9tZHNzX2lycSAoU2Vh biBQYXVsKQo+IAktIGZpeCBpbmRlbnRhdGlvbiBmb3IgaXJxX2ZpbmRfbWFwcGluZyBjYWxsIChT ZWFuIFBhdWwpCj4gCS0gcmVtb3ZlIHVubmVjZXNzYXJ5IGdvdG8gc3RhdGVtZW50cyBmcm9tIGRw dV9tZHNzX2lycSAoU2VhbiBQYXVsKQo+IAktIHJlbW92ZSByZWR1bmRhbnQgcGFyYW0gY2hlY2tz IGZyb20KPiAJICBkcHVfbWRzc19pcnFfbWFzay91bm1hc2sgKFNlYW4gUGF1bC9Kb3JkYW4gQ3Jv dXNlKQo+IAktIHJlbW92ZSByZWR1bmRhbnQgcGFyYW0gY2hlY2tzIGZyb20KPiAJICBkcHVfbWRz c19pcnFkb21haW5fbWFwIChTZWFuIFBhdWwvSm9yZGFuIENyb3VzZSkKPiAJLSByZXR1cm4gZXJy b3IgY29kZSBmcm9tIGRwdV9tZHNzX2VuYWJsZS9kaXNhYmxlIChTZWFuIFBhdWwvSm9yZGFuIENy b3VzZSkKPiAJLSByZW1vdmUgcmVkdW5kYW50IHBhcmFtIGNoZWNrIGZyb20gZHB1X21kc3NfZGVz dHJveSAoU2VhbiBQYXVsKQo+IAktIHJlbW92ZSBleHBsaWNpdCBjYWxscyB0byBkZXZtX2tmcmVl IChTZWFuIFBhdWwvSm9yZGFuIENyb3VzZSkKPiAJLSByZW1vdmUgY29tcGF0aWJpbGl0eSBjaGVj ayBmcm9tIGRwdV9tZHNzX2luaXQgYXMKPiAJICBpdCBpcyBjb25kaXRpb25hbGx5IGNhbGxlZCBm cm9tIG1zbV9kcnYgKFNlYW4gUGF1bCkKPiAJLSByZXdvcmtlZCBtc21fZHNzX3BhcnNlX2Nsb2Nr KCkgdG8gYWRkIHJldHVybiBjaGVja3MgZm9yCj4gCSAgb2ZfcHJvcGVydHlfcmVhZF8qIGNhbGxz LCBmaXggbG9nIG1lc3NhZ2UgYW5kCj4gCSAgZml4IGFsaWdubWVudCBpc3N1ZXMgKFNlYW4gUGF1 bC9Kb3JkYW4gQ3JvdXNlKQo+IAktIHJlbW92ZSBleHRyYSBsaW5lIGJlZm9yZSBkcHVfbWRzc19p bml0IChTZWFuIFBhdWwpCj4gCS0gcmVtb3ZlIHJlZHVuZGFudCBwYXJhbSBjaGVja3MgZnJvbSBf X2ludHJfb2Zmc2V0IGFuZAo+IAkgIG1ha2UgaXQgYSB2b2lkIGZ1bmN0aW9uIHRvIGF2b2lkIHVu bmVjZXNzYXJ5IGVycm9yCj4gCSAgaGFuZGxpbmcgZnJvbSBjYWxsZXIgKEpvcmRhbiBDcm91c2Up Cj4gCS0gcmVtb3ZlIHJlZHVuZGFudCBwYXJhbSBjaGVjayBmcm9tIGRwdV9tZHNzX2lycSAoSm9y ZGFuIENyb3VzZSkKPiAJLSBjaGFuZ2UgbWRzcyBhZGRyZXNzIHNwYWNlIGxvZyBtZXNzYWdlIHRv IGRlYnVnIGFuZCB1c2UgJXBLIGZvcgo+IAkgIGtlcm5lbCBwb2ludGVycyAoSm9yZGFuIENyb3Vz ZSkKPiAJLSByZW1vdmUgdW5uZWNlc3NhcnkgbG9nIG1lc3NhZ2UgZnJvbSBtc21fZHNzX3BhcnNl X2Nsb2NrIChKb3JkYW4gQ3JvdXNlKQo+IAktIGRvbid0IGV4cG9ydCBtc21fZHNzX3BhcnNlX2Ns b2NrIHNpbmNlIGl0IGlzIHVzZWQKPiAJICBvbmx5IGJ5IGRwdSBkcml2ZXIgKEpvcmRhbiBDcm91 c2UpCj4gCj4gU2lnbmVkLW9mZi1ieTogUmFqZXNoIFlhZGF2IDxyeWFkYXZAY29kZWF1cm9yYS5v cmc+CgpSZXZpZXdlZC1ieTogSm9yZGFuIENyb3VzZSA8amNyb3VzZUBjb2RlYXVyb3JhLm9yZz4K Ckkga25vdyB5b3UnbGwgZ2V0IGEgaHVuZHJlZCBkaWZmZXJlbnQgb3BpbmlvbnMgZnJvbSBhIGh1 bmRyZWQgZGlmZmVyZW50IHBlb3BsZQpidXQgeW91IGRvbid0IG5lZWQgdG8gY3JlZGl0IG1lIGZv ciBldmVyeSBjaGFuZ2UgLSBqdXN0IGEgc2luZ2xlIGxpbmUgImZpeGVkCmJ1Z3MiIHdvcmtzIGZv ciBtZS4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgICAgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29y ZV9pcnEuYyAgICAgIHwgIDk3IC0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfY29yZV9pcnEuaCAgICAgIHwgIDE0IC0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMgICAgfCAgIDkgLQo+ICBkcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oICAgIHwgICA3IC0KPiAgZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVycnVwdHMuYyB8ICAyOCArLS0KPiAgZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVycnVwdHMuaCB8ICAxMSAtCj4gIGRy aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9pcnEuYyAgICAgICAgICAgfCAgNDggKy0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMgICAgICAgICAgIHwg ICA2IC0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5oICAgICAgICAg ICB8ICAgMiAtCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9tZHNzLmMgICAg ICAgICAgfCAyNTQgKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vbXNt L2RwdV9pb191dGlsLmMgICAgICAgICAgICAgICAgIHwgIDU3ICsrKysrCj4gIGRyaXZlcnMvZ3B1 L2RybS9tc20vbXNtX2Rydi5jICAgICAgICAgICAgICAgICAgICAgfCAgMjYgKystCj4gIGRyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fa21zLmggICAgICAgICAgICAgICAgICAgICB8ICAgMSAr Cj4gIGluY2x1ZGUvbGludXgvZHB1X2lvX3V0aWwuaCAgICAgICAgICAgICAgICAgICAgICAgfCAg IDIgKwo+ICAxNiBmaWxlcyBjaGFuZ2VkLCAzMzkgaW5zZXJ0aW9ucygrKSwgMjI2IGRlbGV0aW9u cygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X21kc3MuYwo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxl IGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQo+IGluZGV4IGQ3NTU4ZWQuLmQ5ODI2YzEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKPiBAQCAtODEsNiArODEsNyBAQCBtc20teSA6PSBcCj4g IAlkaXNwL2RwdTEvZHB1X3JlZ19kbWEubyBcCj4gIAlkaXNwL2RwdTEvZHB1X3JtLm8gXAo+ICAJ ZGlzcC9kcHUxL2RwdV92YmlmLm8gXAo+ICsJZGlzcC9kcHUxL2RwdV9tZHNzLm8gXAo+ICAJZHB1 X2RiZy5vIFwKPiAgCWRwdV9pb191dGlsLm8gXAo+ICAJZHB1X2RiZ19ldnRsb2cubyBcCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX2lycS5jIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmMKPiBpbmRleCBmZTMz MDEzLi45NzdhZGM0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9jb3JlX2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2NvcmVfaXJxLmMKPiBAQCAtNTE1LDEwMyArNTE1LDYgQEAgdm9pZCBkcHVfY29yZV9pcnFfdW5p bnN0YWxsKHN0cnVjdCBkcHVfa21zICpkcHVfa21zKQo+ICAJZHB1X2ttcy0+aXJxX29iai50b3Rh bF9pcnFzID0gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgZHB1X2NvcmVfaXJxX21hc2soc3Ry dWN0IGlycV9kYXRhICppcnFkKQo+IC17Cj4gLQlzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttczsKPiAt Cj4gLQlpZiAoIWlycWQgfHwgIWlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGlycWQpKSB7Cj4g LQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBhcmFtZXRlcnMgaXJxZCAlZFxuIiwgaXJxZCAhPSBOVUxM KTsKPiAtCQlyZXR1cm47Cj4gLQl9Cj4gLQlkcHVfa21zID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlw X2RhdGEoaXJxZCk7Cj4gLQo+IC0JLyogbWVtb3J5IGJhcnJpZXIgKi8KPiAtCXNtcF9tYl9fYmVm b3JlX2F0b21pYygpOwo+IC0JY2xlYXJfYml0KGlycWQtPmh3aXJxLCAmZHB1X2ttcy0+aXJxX2Nv bnRyb2xsZXIuZW5hYmxlZF9tYXNrKTsKPiAtCS8qIG1lbW9yeSBiYXJyaWVyICovCj4gLQlzbXBf bWJfX2FmdGVyX2F0b21pYygpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBkcHVfY29yZV9pcnFf dW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqaXJxZCkKPiAtewo+IC0Jc3RydWN0IGRwdV9rbXMgKmRw dV9rbXM7Cj4gLQo+IC0JaWYgKCFpcnFkIHx8ICFpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShp cnFkKSkgewo+IC0JCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbWV0ZXJzIGlycWQgJWRcbiIsIGly cWQgIT0gTlVMTCk7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+IC0JZHB1X2ttcyA9IGlycV9kYXRhX2dl dF9pcnFfY2hpcF9kYXRhKGlycWQpOwo+IC0KPiAtCS8qIG1lbW9yeSBiYXJyaWVyICovCj4gLQlz bXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKPiAtCXNldF9iaXQoaXJxZC0+aHdpcnEsICZkcHVfa21z LT5pcnFfY29udHJvbGxlci5lbmFibGVkX21hc2spOwo+IC0JLyogbWVtb3J5IGJhcnJpZXIgKi8K PiAtCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgaXJx X2NoaXAgZHB1X2NvcmVfaXJxX2NoaXAgPSB7Cj4gLQkubmFtZSA9ICJkcHUiLAo+IC0JLmlycV9t YXNrID0gZHB1X2NvcmVfaXJxX21hc2ssCj4gLQkuaXJxX3VubWFzayA9IGRwdV9jb3JlX2lycV91 bm1hc2ssCj4gLX07Cj4gLQo+IC1zdGF0aWMgaW50IGRwdV9jb3JlX2lycWRvbWFpbl9tYXAoc3Ry dWN0IGlycV9kb21haW4gKmRvbWFpbiwKPiAtCQl1bnNpZ25lZCBpbnQgaXJxLCBpcnFfaHdfbnVt YmVyX3QgaHdpcnEpCj4gLXsKPiAtCXN0cnVjdCBkcHVfa21zICpkcHVfa21zOwo+IC0JaW50IHJj Owo+IC0KPiAtCWlmICghZG9tYWluIHx8ICFkb21haW4tPmhvc3RfZGF0YSkgewo+IC0JCURQVV9F UlJPUigiaW52YWxpZCBwYXJhbWV0ZXJzIGRvbWFpbiAlZFxuIiwgZG9tYWluICE9IE5VTEwpOwo+ IC0JCXJldHVybiAtRUlOVkFMOwo+IC0JfQo+IC0JZHB1X2ttcyA9IGRvbWFpbi0+aG9zdF9kYXRh Owo+IC0KPiAtCWlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsICZkcHVfY29yZV9pcnFfY2hp cCwgaGFuZGxlX2xldmVsX2lycSk7Cj4gLQlyYyA9IGlycV9zZXRfY2hpcF9kYXRhKGlycSwgZHB1 X2ttcyk7Cj4gLQo+IC0JcmV0dXJuIHJjOwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0 IGlycV9kb21haW5fb3BzIGRwdV9jb3JlX2lycWRvbWFpbl9vcHMgPSB7Cj4gLQkubWFwID0gZHB1 X2NvcmVfaXJxZG9tYWluX21hcCwKPiAtCS54bGF0ZSA9IGlycV9kb21haW5feGxhdGVfb25lY2Vs bCwKPiAtfTsKPiAtCj4gLWludCBkcHVfY29yZV9pcnFfZG9tYWluX2FkZChzdHJ1Y3QgZHB1X2tt cyAqZHB1X2ttcykKPiAtewo+IC0Jc3RydWN0IGRldmljZSAqZGV2Owo+IC0Jc3RydWN0IGlycV9k b21haW4gKmRvbWFpbjsKPiAtCj4gLQlpZiAoIWRwdV9rbXMtPmRldiB8fCAhZHB1X2ttcy0+ZGV2 LT5kZXYpIHsKPiAtCQlwcl9lcnIoImludmFsaWQgZGV2aWNlIGhhbmRsZXNcbiIpOwo+IC0JCXJl dHVybiAtRUlOVkFMOwo+IC0JfQo+IC0KPiAtCWRldiA9IGRwdV9rbXMtPmRldi0+ZGV2Owo+IC0K PiAtCWRvbWFpbiA9IGlycV9kb21haW5fYWRkX2xpbmVhcihkZXYtPm9mX25vZGUsIDMyLAo+IC0J CQkmZHB1X2NvcmVfaXJxZG9tYWluX29wcywgZHB1X2ttcyk7Cj4gLQlpZiAoIWRvbWFpbikgewo+ IC0JCXByX2VycigiZmFpbGVkIHRvIGFkZCBpcnFfZG9tYWluXG4iKTsKPiAtCQlyZXR1cm4gLUVJ TlZBTDsKPiAtCX0KPiAtCj4gLQlkcHVfa21zLT5pcnFfY29udHJvbGxlci5lbmFibGVkX21hc2sg PSAwOwo+IC0JZHB1X2ttcy0+aXJxX2NvbnRyb2xsZXIuZG9tYWluID0gZG9tYWluOwo+IC0KPiAt CXJldHVybiAwOwo+IC19Cj4gLQo+IC1pbnQgZHB1X2NvcmVfaXJxX2RvbWFpbl9maW5pKHN0cnVj dCBkcHVfa21zICpkcHVfa21zKQo+IC17Cj4gLQlpZiAoZHB1X2ttcy0+aXJxX2NvbnRyb2xsZXIu ZG9tYWluKSB7Cj4gLQkJaXJxX2RvbWFpbl9yZW1vdmUoZHB1X2ttcy0+aXJxX2NvbnRyb2xsZXIu ZG9tYWluKTsKPiAtCQlkcHVfa21zLT5pcnFfY29udHJvbGxlci5kb21haW4gPSBOVUxMOwo+IC0J fQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gIGlycXJldHVybl90IGRwdV9jb3JlX2lycShzdHJ1 Y3QgZHB1X2ttcyAqZHB1X2ttcykKPiAgewo+ICAJLyoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuaAo+IGluZGV4IDY0YTU0ZmUuLjhmYTU5ZGIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuaAo+IEBAIC0z OCwyMCArMzgsNiBAQAo+ICB2b2lkIGRwdV9jb3JlX2lycV91bmluc3RhbGwoc3RydWN0IGRwdV9r bXMgKmRwdV9rbXMpOwo+ICAKPiAgLyoqCj4gLSAqIGRwdV9jb3JlX2lycV9kb21haW5fYWRkIC0g QWRkIGNvcmUgSVJRIGRvbWFpbiBmb3IgRFBVCj4gLSAqIEBkcHVfa21zOgkJRFBVIGhhbmRsZQo+ IC0gKiBAcmV0dXJuOgkJbm9uZQo+IC0gKi8KPiAtaW50IGRwdV9jb3JlX2lycV9kb21haW5fYWRk KHN0cnVjdCBkcHVfa21zICpkcHVfa21zKTsKPiAtCj4gLS8qKgo+IC0gKiBkcHVfY29yZV9pcnFf ZG9tYWluX2ZpbmkgLSB1bmluc3RhbGwgY29yZSBJUlEgZG9tYWluCj4gLSAqIEBkcHVfa21zOgkJ RFBVIGhhbmRsZQo+IC0gKiBAcmV0dXJuOgkJMCBpZiBzdWNjZXNzOyBlcnJvciBjb2RlIG90aGVy d2lzZQo+IC0gKi8KPiAtaW50IGRwdV9jb3JlX2lycV9kb21haW5fZmluaShzdHJ1Y3QgZHB1X2tt cyAqZHB1X2ttcyk7Cj4gLQo+IC0vKioKPiAgICogZHB1X2NvcmVfaXJxIC0gY29yZSBJUlEgaGFu ZGxlcgo+ICAgKiBAZHB1X2ttczoJCURQVSBoYW5kbGUKPiAgICogQHJldHVybjoJCWludGVycnVw dCBoYW5kbGluZyBzdGF0dXMKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2h3X2NhdGFsb2cuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9od19jYXRhbG9nLmMKPiBpbmRleCA4ZTc3OWMwLi5jNWIzNzBmIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jCj4gQEAgLTc3LDEzICs3 Nyw2IEBACj4gIAkuaGFzX2lkbGVfcGMgPSB0cnVlLAo+ICB9Owo+ICAKPiAtc3RhdGljIHN0cnVj dCBkcHVfbWRzc19iYXNlX2NmZyBzZG04NDVfbWRzc1tdID0gewo+IC0Jewo+IC0JLm5hbWUgPSAi bWRzc18wIiwgLmlkID0gTURQX1RPUCwKPiAtCS5iYXNlID0gMHgwLCAuZmVhdHVyZXMgPSAwCj4g LQl9LAo+IC19Owo+IC0KPiAgc3RhdGljIHN0cnVjdCBkcHVfbWRwX2NmZyBzZG04NDVfbWRwW10g PSB7Cj4gIAl7Cj4gIAkubmFtZSA9ICJ0b3BfMCIsIC5pZCA9IE1EUF9UT1AsCj4gQEAgLTU1MCw4 ICs1NDMsNiBAQCB2b2lkIHNkbTg0NV9jZmdfaW5pdChzdHJ1Y3QgZHB1X21kc3NfY2ZnICpkcHVf Y2ZnKQo+ICB7Cj4gIAkqZHB1X2NmZyA9IChzdHJ1Y3QgZHB1X21kc3NfY2ZnKXsKPiAgCQkuY2Fw cyA9ICZzZG04NDVfZHB1X2NhcHMsCj4gLQkJLm1kc3NfY291bnQgPSBBUlJBWV9TSVpFKHNkbTg0 NV9tZHNzKSwKPiAtCQkubWRzcyA9IHNkbTg0NV9tZHNzLAo+ICAJCS5tZHBfY291bnQgPSBBUlJB WV9TSVpFKHNkbTg0NV9tZHApLAo+ICAJCS5tZHAgPSBzZG04NDVfbWRwLAo+ICAJCS5jdGxfY291 bnQgPSBBUlJBWV9TSVpFKHNkbTg0NV9jdGwpLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaAo+IGluZGV4IDM5YmVjMGEuLjcwODQ2NDMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmgKPiBA QCAtNDkyLDEwICs0OTIsNiBAQCBzdHJ1Y3QgZHB1X3diX3N1Yl9ibG9ja3Mgewo+ICAJdTMyIG1h eGxpbmV3aWR0aDsKPiAgfTsKPiAgCj4gLXN0cnVjdCBkcHVfbWRzc19iYXNlX2NmZyB7Cj4gLQlE UFVfSFdfQkxLX0lORk87Cj4gLX07Cj4gLQo+ICAvKioKPiAgICogZHB1X2Nsa19jdHJsX3R5cGUg LSBEZWZpbmVzIHRvcCBsZXZlbCBjbG9jayBjb250cm9sIHNpZ25hbHMKPiAgICovCj4gQEAgLTg3 NSw5ICs4NzEsNiBAQCBzdHJ1Y3QgZHB1X21kc3NfY2ZnIHsKPiAgCj4gIAljb25zdCBzdHJ1Y3Qg ZHB1X2NhcHMgKmNhcHM7Cj4gIAo+IC0JdTMyIG1kc3NfY291bnQ7Cj4gLQlzdHJ1Y3QgZHB1X21k c3NfYmFzZV9jZmcgKm1kc3M7Cj4gLQo+ICAJdTMyIG1kcF9jb3VudDsKPiAgCXN0cnVjdCBkcHVf bWRwX2NmZyAqbWRwOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2h3X2ludGVycnVwdHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9od19pbnRlcnJ1cHRzLmMKPiBpbmRleCA5NzY3Y2M4Li43M2YwODRjIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5jCj4g QEAgLTIyLDcgKzIyLDYgQEAKPiAgICogUmVnaXN0ZXIgb2Zmc2V0cyBpbiBNRFNTIHJlZ2lzdGVy IGZpbGUgZm9yIHRoZSBpbnRlcnJ1cHQgcmVnaXN0ZXJzCj4gICAqIHcuci50LiB0byB0aGUgTURT UyBiYXNlCj4gICAqLwo+IC0jZGVmaW5lIEhXX0lOVFJfU1RBVFVTCQkJMHgwMDEwCj4gICNkZWZp bmUgTURQX1NTUFBfVE9QMF9PRkYJCTB4MTAwMAo+ICAjZGVmaW5lIE1EUF9JTlRGXzBfT0ZGCQkJ MHg2QjAwMAo+ICAjZGVmaW5lIE1EUF9JTlRGXzFfT0ZGCQkJMHg2QjgwMAo+IEBAIC0xMDE3LDE3 ICsxMDE2LDYgQEAgc3RhdGljIGludCBkcHVfaHdfaW50cl9nZXRfdmFsaWRfaW50ZXJydXB0cyhz dHJ1Y3QgZHB1X2h3X2ludHIgKmludHIsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGlj IGludCBkcHVfaHdfaW50cl9nZXRfaW50ZXJydXB0X3NvdXJjZXMoc3RydWN0IGRwdV9od19pbnRy ICppbnRyLAo+IC0JCXVpbnQzMl90ICpzb3VyY2VzKQo+IC17Cj4gLQlpZiAoIWludHIgfHwgIXNv dXJjZXMpCj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQo+IC0JKnNvdXJjZXMgPSBEUFVfUkVHX1JF QUQoJmludHItPmh3LCBIV19JTlRSX1NUQVRVUyk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAt Cj4gIHN0YXRpYyB2b2lkIGRwdV9od19pbnRyX2dldF9pbnRlcnJ1cHRfc3RhdHVzZXMoc3RydWN0 IGRwdV9od19pbnRyICppbnRyKQo+ICB7Cj4gIAlpbnQgaTsKPiBAQCAtMTE2Miw3ICsxMTUwLDYg QEAgc3RhdGljIHZvaWQgX19zZXR1cF9pbnRyX29wcyhzdHJ1Y3QgZHB1X2h3X2ludHJfb3BzICpv cHMpCj4gIAlvcHMtPmNsZWFyX2FsbF9pcnFzID0gZHB1X2h3X2ludHJfY2xlYXJfaXJxczsKPiAg CW9wcy0+ZGlzYWJsZV9hbGxfaXJxcyA9IGRwdV9od19pbnRyX2Rpc2FibGVfaXJxczsKPiAgCW9w cy0+Z2V0X3ZhbGlkX2ludGVycnVwdHMgPSBkcHVfaHdfaW50cl9nZXRfdmFsaWRfaW50ZXJydXB0 czsKPiAtCW9wcy0+Z2V0X2ludGVycnVwdF9zb3VyY2VzID0gZHB1X2h3X2ludHJfZ2V0X2ludGVy cnVwdF9zb3VyY2VzOwo+ICAJb3BzLT5nZXRfaW50ZXJydXB0X3N0YXR1c2VzID0gZHB1X2h3X2lu dHJfZ2V0X2ludGVycnVwdF9zdGF0dXNlczsKPiAgCW9wcy0+Y2xlYXJfaW50ZXJydXB0X3N0YXR1 cyA9IGRwdV9od19pbnRyX2NsZWFyX2ludGVycnVwdF9zdGF0dXM7Cj4gIAlvcHMtPmNsZWFyX2lu dHJfc3RhdHVzX25vbG9jayA9IGRwdV9od19pbnRyX2NsZWFyX2ludHJfc3RhdHVzX25vbG9jazsK PiBAQCAtMTE3MCwyMyArMTE1NywxOCBAQCBzdGF0aWMgdm9pZCBfX3NldHVwX2ludHJfb3BzKHN0 cnVjdCBkcHVfaHdfaW50cl9vcHMgKm9wcykKPiAgCW9wcy0+Z2V0X2ludHJfc3RhdHVzX25vbG9j ayA9IGRwdV9od19pbnRyX2dldF9pbnRyX3N0YXR1c19ub2xvY2s7Cj4gIH0KPiAgCj4gLXN0YXRp YyBzdHJ1Y3QgZHB1X21kc3NfYmFzZV9jZmcgKl9faW50cl9vZmZzZXQoc3RydWN0IGRwdV9tZHNz X2NmZyAqbSwKPiArc3RhdGljIHZvaWQgX19pbnRyX29mZnNldChzdHJ1Y3QgZHB1X21kc3NfY2Zn ICptLAo+ICAJCXZvaWQgX19pb21lbSAqYWRkciwgc3RydWN0IGRwdV9od19ibGtfcmVnX21hcCAq aHcpCj4gIHsKPiAtCWlmICghbSB8fCAhYWRkciB8fCAhaHcgfHwgbS0+bWRwX2NvdW50ID09IDAp Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gLQo+ICAJaHctPmJhc2Vfb2ZmID0gYWRkcjsKPiAtCWh3LT5i bGtfb2ZmID0gbS0+bWRzc1swXS5iYXNlOwo+ICsJaHctPmJsa19vZmYgPSBtLT5tZHBbMF0uYmFz ZTsKPiAgCWh3LT5od3ZlcnNpb24gPSBtLT5od3ZlcnNpb247Cj4gLQlyZXR1cm4gJm0tPm1kc3Nb MF07Cj4gIH0KPiAgCj4gIHN0cnVjdCBkcHVfaHdfaW50ciAqZHB1X2h3X2ludHJfaW5pdCh2b2lk IF9faW9tZW0gKmFkZHIsCj4gIAkJc3RydWN0IGRwdV9tZHNzX2NmZyAqbSkKPiAgewo+ICAJc3Ry dWN0IGRwdV9od19pbnRyICppbnRyOwo+IC0Jc3RydWN0IGRwdV9tZHNzX2Jhc2VfY2ZnICpjZmc7 Cj4gIAo+ICAJaWYgKCFhZGRyIHx8ICFtKQo+ICAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ IEBAIC0xMTk1LDExICsxMTc3LDcgQEAgc3RydWN0IGRwdV9od19pbnRyICpkcHVfaHdfaW50cl9p bml0KHZvaWQgX19pb21lbSAqYWRkciwKPiAgCWlmICghaW50cikKPiAgCQlyZXR1cm4gRVJSX1BU UigtRU5PTUVNKTsKPiAgCj4gLQljZmcgPSBfX2ludHJfb2Zmc2V0KG0sIGFkZHIsICZpbnRyLT5o dyk7Cj4gLQlpZiAoIWNmZykgewo+IC0JCWtmcmVlKGludHIpOwo+IC0JCXJldHVybiBFUlJfUFRS KC1FSU5WQUwpOwo+IC0JfQo+ICsJX19pbnRyX29mZnNldChtLCBhZGRyLCAmaW50ci0+aHcpOwo+ ICAJX19zZXR1cF9pbnRyX29wcygmaW50ci0+b3BzKTsKPiAgCj4gIAlpbnRyLT5pcnFfaWR4X3Ri bF9zaXplID0gQVJSQVlfU0laRShkcHVfaXJxX21hcCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLmggYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5oCj4gaW5kZXggMmYxYTgyOC4uYjUy Y2RjYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdf aW50ZXJydXB0cy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X2ludGVycnVwdHMuaAo+IEBAIC0yNDIsMTcgKzI0Miw2IEBAIHN0cnVjdCBkcHVfaHdfaW50cl9v cHMgewo+ICAJaW50ICgqZ2V0X3ZhbGlkX2ludGVycnVwdHMpKAo+ICAJCQlzdHJ1Y3QgZHB1X2h3 X2ludHIgKmludHIsCj4gIAkJCXVpbnQzMl90ICptYXNrKTsKPiAtCj4gLQkvKioKPiAtCSAqIGdl dF9pbnRlcnJ1cHRfc291cmNlcyAtIEdldHMgdGhlIGJpdG1hc2sgb2YgdGhlIERQVSBpbnRlcnJ1 cHQKPiAtCSAqICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSB0aGF0IGFyZSBjdXJyZW50 bHkgZmlyZWQuCj4gLQkgKiBAaW50cjoJSFcgaW50ZXJydXB0IGhhbmRsZQo+IC0JICogQHNvdXJj ZXM6CVJldHVybmluZyB0aGUgRFBVIGludGVycnVwdCBzb3VyY2Ugc3RhdHVzIGJpdCBtYXNrCj4g LQkgKiBAcmV0dXJuOgkwIGZvciBzdWNjZXNzLCBvdGhlcndpc2UgZmFpbHVyZQo+IC0JICovCj4g LQlpbnQgKCpnZXRfaW50ZXJydXB0X3NvdXJjZXMpKAo+IC0JCQlzdHJ1Y3QgZHB1X2h3X2ludHIg KmludHIsCj4gLQkJCXVpbnQzMl90ICpzb3VyY2VzKTsKPiAgfTsKPiAgCj4gIC8qKgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaXJxLmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaXJxLmMKPiBpbmRleCAxOWMwOTI5Li5kNWU2Y2Uw IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9pcnEuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9pcnEuYwo+IEBAIC0xOSw1 NiArMTksMTEgQEAKPiAgI2luY2x1ZGUgImRwdV9pcnEuaCIKPiAgI2luY2x1ZGUgImRwdV9jb3Jl X2lycS5oIgo+ICAKPiAtc3RhdGljIHVpbnQzMl90IGdfZHB1X2lycV9zdGF0dXM7Cj4gLQo+ICBp cnFyZXR1cm5fdCBkcHVfaXJxKHN0cnVjdCBtc21fa21zICprbXMpCj4gIHsKPiAgCXN0cnVjdCBk cHVfa21zICpkcHVfa21zID0gdG9fZHB1X2ttcyhrbXMpOwo+IC0JdTMyIGludGVycnVwdHM7Cj4g LQo+IC0JZHB1X2ttcy0+aHdfaW50ci0+b3BzLmdldF9pbnRlcnJ1cHRfc291cmNlcyhkcHVfa21z LT5od19pbnRyLAo+IC0JCQkmaW50ZXJydXB0cyk7Cj4gLQo+IC0JLyogc3RvcmUgaXJxIHN0YXR1 cyBpbiBjYXNlIG9mIGlycS1zdG9ybSBkZWJ1Z2dpbmcgKi8KPiAtCWdfZHB1X2lycV9zdGF0dXMg PSBpbnRlcnJ1cHRzOwo+IC0KPiAtCS8qCj4gLQkgKiBUYWtpbmcgY2FyZSBvZiBNRFAgaW50ZXJy dXB0Cj4gLQkgKi8KPiAtCWlmIChpbnRlcnJ1cHRzICYgSVJRX1NPVVJDRV9NRFApIHsKPiAtCQlp bnRlcnJ1cHRzICY9IH5JUlFfU09VUkNFX01EUDsKPiAtCQlkcHVfY29yZV9pcnEoZHB1X2ttcyk7 Cj4gLQl9Cj4gLQo+IC0JLyoKPiAtCSAqIFJvdXRpbmcgYWxsIG90aGVyIGludGVycnVwdHMgdG8g ZXh0ZXJuYWwgZHJpdmVycwo+IC0JICovCj4gLQl3aGlsZSAoaW50ZXJydXB0cykgewo+IC0JCWly cV9od19udW1iZXJfdCBod2lycSA9IGZscyhpbnRlcnJ1cHRzKSAtIDE7Cj4gLQkJdW5zaWduZWQg aW50IG1hcHBpbmc7Cj4gLQkJaW50IHJjOwo+IC0KPiAtCQltYXBwaW5nID0gaXJxX2ZpbmRfbWFw cGluZyhkcHVfa21zLT5pcnFfY29udHJvbGxlci5kb21haW4sCj4gLQkJCQlod2lycSk7Cj4gLQkJ aWYgKG1hcHBpbmcgPT0gMCkgewo+IC0JCQlEUFVfRVZUMzIoaHdpcnEsIERQVV9FVlRMT0dfRVJS T1IpOwo+IC0JCQlnb3RvIGVycm9yOwo+IC0JCX0KPiAtCj4gLQkJcmMgPSBnZW5lcmljX2hhbmRs ZV9pcnEobWFwcGluZyk7Cj4gLQkJaWYgKHJjIDwgMCkgewo+IC0JCQlEUFVfRVZUMzIoaHdpcnEs IG1hcHBpbmcsIHJjLCBEUFVfRVZUTE9HX0VSUk9SKTsKPiAtCQkJZ290byBlcnJvcjsKPiAtCQl9 Cj4gLQo+IC0JCWludGVycnVwdHMgJj0gfigxIDw8IGh3aXJxKTsKPiAtCX0KPiAtCj4gLQlyZXR1 cm4gSVJRX0hBTkRMRUQ7Cj4gIAo+IC1lcnJvcjoKPiAtCS8qIGJhZCBzaXR1YXRpb24sIGluZm9y bSBpcnEgc3lzdGVtLCBpdCBtYXkgZGlzYWJsZSBvdmVyYWxsIE1EU1MgaXJxICovCj4gLQlyZXR1 cm4gSVJRX05PTkU7Cj4gKwlyZXR1cm4gZHB1X2NvcmVfaXJxKGRwdV9rbXMpOwo+ICB9Cj4gIAo+ ICB2b2lkIGRwdV9pcnFfcHJlaW5zdGFsbChzdHJ1Y3QgbXNtX2ttcyAqa21zKQo+IEBAIC0xMDgs NSArNjMsNCBAQCB2b2lkIGRwdV9pcnFfdW5pbnN0YWxsKHN0cnVjdCBtc21fa21zICprbXMpCj4g IAl9Cj4gIAo+ICAJZHB1X2NvcmVfaXJxX3VuaW5zdGFsbChkcHVfa21zKTsKPiAtCWRwdV9jb3Jl X2lycV9kb21haW5fZmluaShkcHVfa21zKTsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfa21zLmMKPiBpbmRleCAwNmFkYjM4Li5lNGFiNzUzIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYwo+IEBAIC02MzYsMTAgKzYzNiw2IEBAIHN0YXRp YyBpbnQgX2RwdV9rbXNfZHJtX29ial9pbml0KHN0cnVjdCBkcHVfa21zICpkcHVfa21zKQo+ICAJ cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAljYXRhbG9nID0gZHB1X2ttcy0+Y2F0YWxvZzsK PiAgCj4gLQlyZXQgPSBkcHVfY29yZV9pcnFfZG9tYWluX2FkZChkcHVfa21zKTsKPiAtCWlmIChy ZXQpCj4gLQkJZ290byBmYWlsX2lycTsKPiAtCj4gIAkvKgo+ICAJICogQ3JlYXRlIGVuY29kZXIg YW5kIHF1ZXJ5IGRpc3BsYXkgZHJpdmVycyB0byBjcmVhdGUKPiAgCSAqIGJyaWRnZXMgYW5kIGNv bm5lY3RvcnMKPiBAQCAtNzE2LDggKzcxMiw2IEBAIHN0YXRpYyBpbnQgX2RwdV9rbXNfZHJtX29i al9pbml0KHN0cnVjdCBkcHVfa21zICpkcHVfa21zKQo+ICAJcmV0dXJuIDA7Cj4gIGZhaWw6Cj4g IAlfZHB1X2ttc19kcm1fb2JqX2Rlc3Ryb3koZHB1X2ttcyk7Cj4gLWZhaWxfaXJxOgo+IC0JZHB1 X2NvcmVfaXJxX2RvbWFpbl9maW5pKGRwdV9rbXMpOwo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5oIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5oCj4gaW5kZXggNWIwYzA4MS4u YTFjMDkxMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf a21zLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmgKPiBA QCAtMTg0LDggKzE4NCw2IEBAIHN0cnVjdCBkcHVfa21zIHsKPiAgCXN0cnVjdCByZWd1bGF0b3Ig Km1tYWdpYzsKPiAgCXN0cnVjdCByZWd1bGF0b3IgKnZlbnVzOwo+ICAKPiAtCXN0cnVjdCBkcHVf aXJxX2NvbnRyb2xsZXIgaXJxX2NvbnRyb2xsZXI7Cj4gLQo+ICAJc3RydWN0IGRwdV9od19pbnRy ICpod19pbnRyOwo+ICAJc3RydWN0IGRwdV9pcnEgaXJxX29iajsKPiAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9tZHNzLmMgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfbWRzcy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwLi5jZTY4MGVhCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9tZHNzLmMKPiBAQCAtMCwwICsxLDI1NCBAQAo+ICsvKgo+ICsg KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsgKiBDb3B5cmlnaHQgKGMpIDIw MTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImRwdV9rbXMu aCIKPiArCj4gKyNkZWZpbmUgdG9fZHB1X21kc3MoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBk cHVfbWRzcywgYmFzZSkKPiArCj4gKyNkZWZpbmUgSFdfSU5UUl9TVEFUVVMJCQkweDAwMTAKPiAr Cj4gK3N0cnVjdCBkcHVfbWRzcyB7Cj4gKwlzdHJ1Y3QgbXNtX21kc3MgYmFzZTsKPiArCXZvaWQg X19pb21lbSAqbW1pbzsKPiArCXVuc2lnbmVkIGxvbmcgbW1pb19sZW47Cj4gKwl1MzIgaHd2ZXJz aW9uOwo+ICsJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgbXA7Cj4gKwlzdHJ1Y3QgZHB1X2lycV9j b250cm9sbGVyIGlycV9jb250cm9sbGVyOwo+ICt9Owo+ICsKPiArc3RhdGljIGlycXJldHVybl90 IGRwdV9tZHNzX2lycShpbnQgaXJxLCB2b2lkICphcmcpCj4gK3sKPiArCXN0cnVjdCBkcHVfbWRz cyAqZHB1X21kc3MgPSBhcmc7Cj4gKwl1MzIgaW50ZXJydXB0czsKPiArCj4gKwlpbnRlcnJ1cHRz ID0gcmVhZGxfcmVsYXhlZChkcHVfbWRzcy0+bW1pbyArIEhXX0lOVFJfU1RBVFVTKTsKPiArCj4g Kwl3aGlsZSAoaW50ZXJydXB0cykgewo+ICsJCWlycV9od19udW1iZXJfdCBod2lycSA9IGZscyhp bnRlcnJ1cHRzKSAtIDE7Cj4gKwkJdW5zaWduZWQgaW50IG1hcHBpbmc7Cj4gKwkJaW50IHJjOwo+ ICsKPiArCQltYXBwaW5nID0gaXJxX2ZpbmRfbWFwcGluZyhkcHVfbWRzcy0+aXJxX2NvbnRyb2xs ZXIuZG9tYWluLAo+ICsJCQkJCSAgIGh3aXJxKTsKPiArCQlpZiAobWFwcGluZyA9PSAwKSB7Cj4g KwkJCURQVV9FVlQzMihod2lycSwgRFBVX0VWVExPR19FUlJPUik7Cj4gKwkJCXJldHVybiBJUlFf Tk9ORTsKPiArCQl9Cj4gKwo+ICsJCXJjID0gZ2VuZXJpY19oYW5kbGVfaXJxKG1hcHBpbmcpOwo+ ICsJCWlmIChyYyA8IDApIHsKPiArCQkJRFBVX0VWVDMyKGh3aXJxLCBtYXBwaW5nLCByYywgRFBV X0VWVExPR19FUlJPUik7Cj4gKwkJCXJldHVybiBJUlFfTk9ORTsKPiArCQl9Cj4gKwo+ICsJCWlu dGVycnVwdHMgJj0gfigxIDw8IGh3aXJxKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gSVJRX0hBTkRM RUQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRwdV9tZHNzX2lycV9tYXNrKHN0cnVjdCBpcnFf ZGF0YSAqaXJxZCkKPiArewo+ICsJc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcyA9IGlycV9kYXRh X2dldF9pcnFfY2hpcF9kYXRhKGlycWQpOwo+ICsKPiArCS8qIG1lbW9yeSBiYXJyaWVyICovCj4g KwlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKPiArCWNsZWFyX2JpdChpcnFkLT5od2lycSwgJmRw dV9tZHNzLT5pcnFfY29udHJvbGxlci5lbmFibGVkX21hc2spOwo+ICsJLyogbWVtb3J5IGJhcnJp ZXIgKi8KPiArCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGRwdV9tZHNzX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICppcnFkKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHB1X21kc3MgKmRwdV9tZHNzID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoaXJxZCk7 Cj4gKwo+ICsJLyogbWVtb3J5IGJhcnJpZXIgKi8KPiArCXNtcF9tYl9fYmVmb3JlX2F0b21pYygp Owo+ICsJc2V0X2JpdChpcnFkLT5od2lycSwgJmRwdV9tZHNzLT5pcnFfY29udHJvbGxlci5lbmFi bGVkX21hc2spOwo+ICsJLyogbWVtb3J5IGJhcnJpZXIgKi8KPiArCXNtcF9tYl9fYWZ0ZXJfYXRv bWljKCk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgZHB1X21kc3NfaXJxX2No aXAgPSB7Cj4gKwkubmFtZSA9ICJkcHVfbWRzcyIsCj4gKwkuaXJxX21hc2sgPSBkcHVfbWRzc19p cnFfbWFzaywKPiArCS5pcnFfdW5tYXNrID0gZHB1X21kc3NfaXJxX3VubWFzaywKPiArfTsKPiAr Cj4gK3N0YXRpYyBpbnQgZHB1X21kc3NfaXJxZG9tYWluX21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAq ZG9tYWluLAo+ICsJCXVuc2lnbmVkIGludCBpcnEsIGlycV9od19udW1iZXJfdCBod2lycSkKPiAr ewo+ICsJc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcyA9IGRvbWFpbi0+aG9zdF9kYXRhOwo+ICsJ aW50IHJldDsKPiArCj4gKwlpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCAmZHB1X21kc3Nf aXJxX2NoaXAsIGhhbmRsZV9sZXZlbF9pcnEpOwo+ICsJcmV0ID0gaXJxX3NldF9jaGlwX2RhdGEo aXJxLCBkcHVfbWRzcyk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBkcHVfbWRzc19pcnFkb21haW5fb3BzID0gewo+ICsJ Lm1hcCA9IGRwdV9tZHNzX2lycWRvbWFpbl9tYXAsCj4gKwkueGxhdGUgPSBpcnFfZG9tYWluX3hs YXRlX29uZWNlbGwsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IF9kcHVfbWRzc19pcnFfZG9tYWlu X2FkZChzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzKQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpk ZXY7Cj4gKwlzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluOwo+ICsKPiArCWRldiA9IGRwdV9tZHNz LT5iYXNlLmRldi0+ZGV2Owo+ICsKPiArCWRvbWFpbiA9IGlycV9kb21haW5fYWRkX2xpbmVhcihk ZXYtPm9mX25vZGUsIDMyLAo+ICsJCQkmZHB1X21kc3NfaXJxZG9tYWluX29wcywgZHB1X21kc3Mp Owo+ICsJaWYgKCFkb21haW4pIHsKPiArCQlEUFVfRVJST1IoImZhaWxlZCB0byBhZGQgaXJxX2Rv bWFpblxuIik7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJZHB1X21kc3MtPmly cV9jb250cm9sbGVyLmVuYWJsZWRfbWFzayA9IDA7Cj4gKwlkcHVfbWRzcy0+aXJxX2NvbnRyb2xs ZXIuZG9tYWluID0gZG9tYWluOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgX2Rw dV9tZHNzX2lycV9kb21haW5fZmluaShzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzKQo+ICt7Cj4g KwlpZiAoZHB1X21kc3MtPmlycV9jb250cm9sbGVyLmRvbWFpbikgewo+ICsJCWlycV9kb21haW5f cmVtb3ZlKGRwdV9tZHNzLT5pcnFfY29udHJvbGxlci5kb21haW4pOwo+ICsJCWRwdV9tZHNzLT5p cnFfY29udHJvbGxlci5kb21haW4gPSBOVUxMOwo+ICsJfQo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr c3RhdGljIGludCBkcHVfbWRzc19lbmFibGUoc3RydWN0IG1zbV9tZHNzICptZHNzKQo+ICt7Cj4g KwlzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzID0gdG9fZHB1X21kc3MobWRzcyk7Cj4gKwlzdHJ1 Y3QgZHNzX21vZHVsZV9wb3dlciAqbXAgPSAmZHB1X21kc3MtPm1wOwo+ICsJaW50IHJldDsKPiAr Cj4gKwlyZXQgPSBtc21fZHNzX2VuYWJsZV9jbGsobXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xr LCB0cnVlKTsKPiArCWlmIChyZXQpCj4gKwkJRFBVX0VSUk9SKCJjbG9jayBlbmFibGUgZmFpbGVk LCByZXQ6JWRcbiIsIHJldCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGlj IGludCBkcHVfbWRzc19kaXNhYmxlKHN0cnVjdCBtc21fbWRzcyAqbWRzcykKPiArewo+ICsJc3Ry dWN0IGRwdV9tZHNzICpkcHVfbWRzcyA9IHRvX2RwdV9tZHNzKG1kc3MpOwo+ICsJc3RydWN0IGRz c19tb2R1bGVfcG93ZXIgKm1wID0gJmRwdV9tZHNzLT5tcDsKPiArCWludCByZXQ7Cj4gKwo+ICsJ cmV0ID0gbXNtX2Rzc19lbmFibGVfY2xrKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2NsaywgZmFs c2UpOwo+ICsJaWYgKHJldCkKPiArCQlEUFVfRVJST1IoImNsb2NrIGRpc2FibGUgZmFpbGVkLCBy ZXQ6JWRcbiIsIHJldCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgZHB1X21kc3NfZGVzdHJveShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldi0+ZGV2KTsK PiArCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJ c3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcyA9IHRvX2RwdV9tZHNzKHByaXYtPm1kc3MpOwo+ICsJ c3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wID0gJmRwdV9tZHNzLT5tcDsKPiArCj4gKwlfZHB1 X21kc3NfaXJxX2RvbWFpbl9maW5pKGRwdV9tZHNzKTsKPiArCj4gKwltc21fZHNzX3B1dF9jbGso bXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrKTsKPiArCWRldm1fa2ZyZWUoJnBkZXYtPmRldiwg bXAtPmNsa19jb25maWcpOwo+ICsKPiArCWlmIChkcHVfbWRzcy0+bW1pbykKPiArCQltc21faW91 bm1hcChwZGV2LCBkcHVfbWRzcy0+bW1pbyk7Cj4gKwlkcHVfbWRzcy0+bW1pbyA9IE5VTEw7Cj4g Kwo+ICsJcG1fcnVudGltZV9kaXNhYmxlKGRldi0+ZGV2KTsKPiArCXByaXYtPm1kc3MgPSBOVUxM Owo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG1zbV9tZHNzX2Z1bmNzIG1kc3NfZnVu Y3MgPSB7Cj4gKwkuZW5hYmxlCT0gZHB1X21kc3NfZW5hYmxlLAo+ICsJLmRpc2FibGUgPSBkcHVf bWRzc19kaXNhYmxlLAo+ICsJLmRlc3Ryb3kgPSBkcHVfbWRzc19kZXN0cm95LAo+ICt9Owo+ICsK PiAraW50IGRwdV9tZHNzX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYtPmRldik7 Cj4gKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAr CXN0cnVjdCBkcHVfbWRzcyAqZHB1X21kc3M7Cj4gKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAq bXA7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwlkcHVfbWRzcyA9IGRldm1fa3phbGxvYyhkZXYt PmRldiwgc2l6ZW9mKCpkcHVfbWRzcyksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFkcHVfbWRzcykK PiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlkcHVfbWRzcy0+bW1pbyA9IG1zbV9pb3JlbWFw KHBkZXYsICJtZHNzX3BoeXMiLCAibWRzc19waHlzIik7Cj4gKwlpZiAoSVNfRVJSKGRwdV9tZHNz LT5tbWlvKSkgewo+ICsJCXJldCA9IFBUUl9FUlIoZHB1X21kc3MtPm1taW8pOwo+ICsJCURQVV9F UlJPUigibWRzcyByZWdpc3RlciBtZW1vcnkgbWFwIGZhaWxlZDogJWRcbiIsIHJldCk7Cj4gKwkJ ZHB1X21kc3MtPm1taW8gPSBOVUxMOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwlEUk1fREVC VUcoIm1hcHBlZCBtZHNzIGFkZHJlc3Mgc3BhY2UgQCVwS1xuIiwgZHB1X21kc3MtPm1taW8pOwo+ ICsJZHB1X21kc3MtPm1taW9fbGVuID0gbXNtX2lvbWFwX3NpemUocGRldiwgIm1kc3NfcGh5cyIp Owo+ICsKPiArCW1wID0gJmRwdV9tZHNzLT5tcDsKPiArCXJldCA9IG1zbV9kc3NfcGFyc2VfY2xv Y2socGRldiwgbXApOwo+ICsJaWYgKHJldCkgewo+ICsJCURQVV9FUlJPUigiZmFpbGVkIHRvIHBh cnNlIGNsb2NrcywgcmV0PSVkXG4iLCByZXQpOwo+ICsJCWdvdG8gY2xrX3BhcnNlX2VycjsKPiAr CX0KPiArCj4gKwlyZXQgPSBtc21fZHNzX2dldF9jbGsoJnBkZXYtPmRldiwgbXAtPmNsa19jb25m aWcsIG1wLT5udW1fY2xrKTsKPiArCWlmIChyZXQpIHsKPiArCQlEUFVfRVJST1IoImZhaWxlZCB0 byBnZXQgY2xvY2tzLCByZXQ9JWRcbiIsIHJldCk7Cj4gKwkJZ290byBjbGtfZ2V0X2Vycm9yOwo+ ICsJfQo+ICsKPiArCXJldCA9IG1zbV9kc3NfY2xrX3NldF9yYXRlKG1wLT5jbGtfY29uZmlnLCBt cC0+bnVtX2Nsayk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gc2V0 IGNsb2NrIHJhdGUsIHJldD0lZFxuIiwgcmV0KTsKPiArCQlnb3RvIGNsa19yYXRlX2Vycm9yOwo+ ICsJfQo+ICsKPiArCWRwdV9tZHNzLT5iYXNlLmRldiA9IGRldjsKPiArCWRwdV9tZHNzLT5iYXNl LmZ1bmNzID0gJm1kc3NfZnVuY3M7Cj4gKwo+ICsJcmV0ID0gX2RwdV9tZHNzX2lycV9kb21haW5f YWRkKGRwdV9tZHNzKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBpcnFfZG9tYWluX2Vycm9yOwo+ ICsKPiArCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LT5kZXYsIHBsYXRmb3JtX2dldF9pcnEo cGRldiwgMCksCj4gKwkJCWRwdV9tZHNzX2lycSwgMCwgImRwdV9tZHNzX2lzciIsIGRwdV9tZHNz KTsKPiArCWlmIChyZXQpIHsKPiArCQlEUFVfRVJST1IoImZhaWxlZCB0byBpbml0IGlycTogJWRc biIsIHJldCk7Cj4gKwkJZ290byBpcnFfZXJyb3I7Cj4gKwl9Cj4gKwo+ICsJcG1fcnVudGltZV9l bmFibGUoZGV2LT5kZXYpOwo+ICsKPiArCXBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2LT5kZXYpOwo+ ICsJZHB1X21kc3MtPmh3dmVyc2lvbiA9IHJlYWRsX3JlbGF4ZWQoZHB1X21kc3MtPm1taW8pOwo+ ICsJcG1fcnVudGltZV9wdXRfc3luYyhkZXYtPmRldik7Cj4gKwo+ICsJcHJpdi0+bWRzcyA9ICZk cHVfbWRzcy0+YmFzZTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICsKPiAraXJxX2Vycm9yOgo+ICsJ X2RwdV9tZHNzX2lycV9kb21haW5fZmluaShkcHVfbWRzcyk7Cj4gK2lycV9kb21haW5fZXJyb3I6 Cj4gK2Nsa19yYXRlX2Vycm9yOgo+ICsJbXNtX2Rzc19wdXRfY2xrKG1wLT5jbGtfY29uZmlnLCBt cC0+bnVtX2Nsayk7Cj4gK2Nsa19nZXRfZXJyb3I6Cj4gKwlkZXZtX2tmcmVlKCZwZGV2LT5kZXYs IG1wLT5jbGtfY29uZmlnKTsKPiArY2xrX3BhcnNlX2VycjoKPiArCWlmIChkcHVfbWRzcy0+bW1p bykKPiArCQltc21faW91bm1hcChwZGV2LCBkcHVfbWRzcy0+bW1pbyk7Cj4gKwlkcHVfbWRzcy0+ bW1pbyA9IE5VTEw7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZHB1X2lvX3V0aWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2lvX3V0 aWwuYwo+IGluZGV4IGExOGJjOTkuLmM0NGYzM2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kcHVfaW9fdXRpbC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfaW9f dXRpbC5jCj4gQEAgLTQ0OCw2ICs0NDgsNjMgQEAgaW50IG1zbV9kc3NfZW5hYmxlX2NsayhzdHJ1 Y3QgZHNzX2NsayAqY2xrX2FycnksIGludCBudW1fY2xrLCBpbnQgZW5hYmxlKQo+ICB9IC8qIG1z bV9kc3NfZW5hYmxlX2NsayAqLwo+ICBFWFBPUlRfU1lNQk9MKG1zbV9kc3NfZW5hYmxlX2Nsayk7 Cj4gIAo+ICtpbnQgbXNtX2Rzc19wYXJzZV9jbG9jayhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2LAo+ICsJCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcCkKPiArewo+ICsJdTMyIGksIHJj ID0gMDsKPiArCWNvbnN0IGNoYXIgKmNsb2NrX25hbWU7Cj4gKwl1MzIgcmF0ZSA9IDAsIG1heF9y YXRlID0gMDsKPiArCWludCBudW1fY2xrID0gMDsKPiArCj4gKwlpZiAoIXBkZXYgfHwgIW1wKQo+ ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCW1wLT5udW1fY2xrID0gMDsKPiArCW51bV9jbGsg PSBvZl9wcm9wZXJ0eV9jb3VudF9zdHJpbmdzKHBkZXYtPmRldi5vZl9ub2RlLCAiY2xvY2stbmFt ZXMiKTsKPiArCWlmIChudW1fY2xrIDw9IDApIHsKPiArCQlwcl9kZWJ1ZygiY2xvY2tzIGFyZSBu b3QgZGVmaW5lZFxuIik7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJbXAtPmNsa19jb25m aWcgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwKPiArCQkJCSAgICAgIHNpemVvZihzdHJ1Y3Qg ZHNzX2NsaykgKiBudW1fY2xrLAo+ICsJCQkJICAgICAgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIW1w LT5jbGtfY29uZmlnKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWZvciAoaSA9IDA7IGkg PCBudW1fY2xrOyBpKyspIHsKPiArCQlyYyA9IG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nX2luZGV4 KHBkZXYtPmRldi5vZl9ub2RlLAo+ICsJCQkJCQkgICAiY2xvY2stbmFtZXMiLCBpLAo+ICsJCQkJ CQkgICAmY2xvY2tfbmFtZSk7Cj4gKwkJaWYgKHJjKQo+ICsJCQlicmVhazsKPiArCQlzdHJsY3B5 KG1wLT5jbGtfY29uZmlnW2ldLmNsa19uYW1lLCBjbG9ja19uYW1lLAo+ICsJCQlzaXplb2YobXAt PmNsa19jb25maWdbaV0uY2xrX25hbWUpKTsKPiArCj4gKwkJcmMgPSBvZl9wcm9wZXJ0eV9yZWFk X3UzMl9pbmRleChwZGV2LT5kZXYub2Zfbm9kZSwKPiArCQkJCQkJImNsb2NrLXJhdGUiLCBpLAo+ ICsJCQkJCQkmcmF0ZSk7Cj4gKwkJaWYgKHJjKQo+ICsJCQlicmVhazsKPiArCQltcC0+Y2xrX2Nv bmZpZ1tpXS5yYXRlID0gcmF0ZTsKPiArCQlpZiAoIW1wLT5jbGtfY29uZmlnW2ldLnJhdGUpCj4g KwkJCW1wLT5jbGtfY29uZmlnW2ldLnR5cGUgPSBEU1NfQ0xLX0FIQjsKPiArCQllbHNlCj4gKwkJ CW1wLT5jbGtfY29uZmlnW2ldLnR5cGUgPSBEU1NfQ0xLX1BDTEs7Cj4gKwo+ICsJCXJjID0gb2Zf cHJvcGVydHlfcmVhZF91MzJfaW5kZXgocGRldi0+ZGV2Lm9mX25vZGUsCj4gKwkJCQkJCSJjbG9j ay1tYXgtcmF0ZSIsIGksCj4gKwkJCQkJCSZtYXhfcmF0ZSk7Cj4gKwkJaWYgKHJjKQo+ICsJCQli cmVhazsKPiArCQltcC0+Y2xrX2NvbmZpZ1tpXS5tYXhfcmF0ZSA9IG1heF9yYXRlOwo+ICsJfQo+ ICsKPiArCWlmICghcmMpCj4gKwkJbXAtPm51bV9jbGsgPSBudW1fY2xrOwo+ICsKPiArCXJldHVy biByYzsKPiArfQo+ICAKPiAgaW50IGRwdV9pMmNfYnl0ZV9yZWFkKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQsIHVpbnQ4X3Qgc2xhdmVfYWRkciwKPiAgCQkJdWludDhfdCByZWdfb2Zmc2V0LCB1 aW50OF90ICpyZWFkX2J1ZikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21f ZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+IGluZGV4IDVkOGYxYjYuLmEw ZTczZWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+IEBAIC01MDMsNyArNTAzLDE4IEBAIHN0 YXRpYyBpbnQgbXNtX2RybV9pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRybV9kcml2 ZXIgKmRydikKPiAgCWRkZXYtPmRldl9wcml2YXRlID0gcHJpdjsKPiAgCXByaXYtPmRldiA9IGRk ZXY7Cj4gIAo+IC0JcmV0ID0gbWRwNV9tZHNzX2luaXQoZGRldik7Cj4gKwlzd2l0Y2ggKGdldF9t ZHBfdmVyKHBkZXYpKSB7Cj4gKwljYXNlIEtNU19NRFA1Ogo+ICsJCXJldCA9IG1kcDVfbWRzc19p bml0KGRkZXYpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBLTVNfRFBVOgo+ICsJCXJldCA9IGRwdV9t ZHNzX2luaXQoZGRldik7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldCA9IDA7Cj4g KwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIG1kc3NfaW5pdF9mYWls Owo+ICAKPiBAQCAtMTUzOSwxMiArMTU1MCwxMyBAQCBzdGF0aWMgaW50IGFkZF9kaXNwbGF5X2Nv bXBvbmVudHMoc3RydWN0IGRldmljZSAqZGV2LAo+ICAJaW50IHJldDsKPiAgCj4gIAkvKgo+IC0J ICogTURQNSBiYXNlZCBkZXZpY2VzIGRvbid0IGhhdmUgYSBmbGF0IGhpZXJhcmNoeS4gVGhlcmUg aXMgYSB0b3AgbGV2ZWwKPiAtCSAqIHBhcmVudDogTURTUywgYW5kIGNoaWxkcmVuOiBNRFA1LCBE U0ksIEhETUksIGVEUCBldGMuIFBvcHVsYXRlIHRoZQo+IC0JICogY2hpbGRyZW4gZGV2aWNlcywg ZmluZCB0aGUgTURQNSBub2RlLCBhbmQgdGhlbiBhZGQgdGhlIGludGVyZmFjZXMKPiAtCSAqIHRv IG91ciBjb21wb25lbnRzIGxpc3QuCj4gKwkgKiBNRFA1L0RQVSBiYXNlZCBkZXZpY2VzIGRvbid0 IGhhdmUgYSBmbGF0IGhpZXJhcmNoeS4gVGhlcmUgaXMgYSB0b3AKPiArCSAqIGxldmVsIHBhcmVu dDogTURTUywgYW5kIGNoaWxkcmVuOiBNRFA1L0RQVSwgRFNJLCBIRE1JLCBlRFAgZXRjLgo+ICsJ ICogUG9wdWxhdGUgdGhlIGNoaWxkcmVuIGRldmljZXMsIGZpbmQgdGhlIE1EUDUvRFBVIG5vZGUs IGFuZCB0aGVuIGFkZAo+ICsJICogdGhlIGludGVyZmFjZXMgdG8gb3VyIGNvbXBvbmVudHMgbGlz dC4KPiAgCSAqLwo+IC0JaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGRldi0+b2Zfbm9kZSwg InFjb20sbWRzcyIpKSB7Cj4gKwlpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LT5vZl9u b2RlLCAicWNvbSxtZHNzIikgfHwKPiArCQlvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShkZXYtPm9m X25vZGUsICJxY29tLGRwdS1tZHNzIikpIHsKPiAgCQlyZXQgPSBvZl9wbGF0Zm9ybV9wb3B1bGF0 ZShkZXYtPm9mX25vZGUsIE5VTEwsIE5VTEwsIGRldik7Cj4gIAkJaWYgKHJldCkgewo+ICAJCQlk ZXZfZXJyKGRldiwgImZhaWxlZCB0byBwb3B1bGF0ZSBjaGlsZHJlbiBkZXZpY2VzXG4iKTsKPiBA QCAtMTY4Niw3ICsxNjk4LDcgQEAgc3RhdGljIGludCBtc21fcGRldl9yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPiAgCXsgLmNvbXBhdGlibGUgPSAicWNvbSxtZHA0IiwgLmRh dGEgPSAodm9pZCAqKUtNU19NRFA0IH0sCj4gIAl7IC5jb21wYXRpYmxlID0gInFjb20sbWRzcyIs IC5kYXRhID0gKHZvaWQgKilLTVNfTURQNSB9LAo+ICAjaWZkZWYgQ09ORklHX0RSTV9NU01fRFBV Cj4gLQl7IC5jb21wYXRpYmxlID0gInFjb20sZHB1LWttcyIsIC5kYXRhID0gKHZvaWQgKilLTVNf RFBVIH0sCj4gKwl7IC5jb21wYXRpYmxlID0gInFjb20sZHB1LW1kc3MiLCAuZGF0YSA9ICh2b2lk ICopS01TX0RQVSB9LAo+ICAjZW5kaWYKPiAgCXt9Cj4gIH07Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgK PiBpbmRleCA5MGEyNTIxLi5lOGU1ZTczIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKPiBAQCAt MzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBtc21fZHJtX3ByaXZhdGUgewo+ICAJLyogc3Vib3JkaW5h dGUgZGV2aWNlcywgaWYgcHJlc2VudDogKi8KPiAgCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmdw dV9wZGV2Owo+ICAKPiAtCS8qIHRvcCBsZXZlbCBNRFNTIHdyYXBwZXIgZGV2aWNlIChmb3IgTURQ NSBvbmx5KSAqLwo+ICsJLyogdG9wIGxldmVsIE1EU1Mgd3JhcHBlciBkZXZpY2UgKGZvciBNRFA1 L0RQVSBvbmx5KSAqLwo+ICAJc3RydWN0IG1zbV9tZHNzICptZHNzOwo+ICAKPiAgCS8qIHBvc3Np Ymx5IHRoaXMgc2hvdWxkIGJlIGluIHRoZSBrbXMgY29tcG9uZW50LCBidXQgaXQgaXMKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fa21zLmggYi9kcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9rbXMuaAo+IGluZGV4IDlhN2JjN2QuLjVlMWRlODUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fa21zLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9rbXMuaAo+IEBAIC0xNDQsNiArMTQ0LDcgQEAgc3RydWN0IG1zbV9tZHNzIHsKPiAgfTsKPiAg Cj4gIGludCBtZHA1X21kc3NfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAraW50IGRw dV9tZHNzX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIAo+ICAvKioKPiAgICogTW9k ZSBTZXQgVXRpbGl0eSBGdW5jdGlvbnMKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kcHVf aW9fdXRpbC5oIGIvaW5jbHVkZS9saW51eC9kcHVfaW9fdXRpbC5oCj4gaW5kZXggN2M3Mzg5OS4u NDVlNjA2ZiAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4L2RwdV9pb191dGlsLmgKPiArKysg Yi9pbmNsdWRlL2xpbnV4L2RwdV9pb191dGlsLmgKPiBAQCAtMTA0LDYgKzEwNCw4IEBAIGludCBt c21fZHNzX2NvbmZpZ192cmVnKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRzc192cmVnICpp bl92cmVnLAo+ICB2b2lkIG1zbV9kc3NfcHV0X2NsayhzdHJ1Y3QgZHNzX2NsayAqY2xrX2Fycnks IGludCBudW1fY2xrKTsKPiAgaW50IG1zbV9kc3NfY2xrX3NldF9yYXRlKHN0cnVjdCBkc3NfY2xr ICpjbGtfYXJyeSwgaW50IG51bV9jbGspOwo+ICBpbnQgbXNtX2Rzc19lbmFibGVfY2xrKHN0cnVj dCBkc3NfY2xrICpjbGtfYXJyeSwgaW50IG51bV9jbGssIGludCBlbmFibGUpOwo+ICtpbnQgbXNt X2Rzc19wYXJzZV9jbG9jayhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+ICsJCXN0cnVj dCBkc3NfbW9kdWxlX3Bvd2VyICptcCk7Cj4gIAo+ICBpbnQgZHB1X2kyY19ieXRlX3JlYWQoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCwgdWludDhfdCBzbGF2ZV9hZGRyLAo+ICAJCSAgICAgICB1 aW50OF90IHJlZ19vZmZzZXQsIHVpbnQ4X3QgKnJlYWRfYnVmKTsKPiAtLSAKPiBUaGUgUXVhbGNv bW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3Jh IEZvcnVtLAo+IGEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKPiAKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEZyZWVkcmVu byBtYWlsaW5nIGxpc3QKPiBGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8KCi0tIApU aGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgQ29kZSBB dXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1h aWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==