From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [DPU PATCH v2 04/12] drm/msm/dpu: create new platform driver for dpu device Date: Fri, 11 May 2018 11:30:41 -0400 Message-ID: <20180511153041.GS33053@art_vandelay> References: <1526050178-31893-1-git-send-email-ryadav@codeaurora.org> <1526050178-31893-5-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-5-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 T24gRnJpLCBNYXkgMTEsIDIwMTggYXQgMDg6MTk6MzBQTSArMDUzMCwgUmFqZXNoIFlhZGF2IHdy b3RlOgo+IEN1cnJlbnQgTVNNIGRpc3BsYXkgY29udHJvbGxlciBIVyBtYXRjaGVzIGEgdHJlZSBs aWtlCj4gaGllcmFyY2h5IHdoZXJlIE1EU1MgdG9wIGxldmVsIHdyYXBwZXIgaXMgcGFyZW50IGRl dmljZQo+IGFuZCBtZHA1L2RwdSwgZHNpLCBkcCBhcmUgY2hpbGQgZGV2aWNlcy4KPiAKPiBFYWNo IGNoaWxkIGRldmljZSBsaWtlIG1kcDUsIGRzaSBldGMuIGhhdmUgYSBzZXBhcmF0ZSBkcml2ZXIs Cj4gYnV0IGN1cnJlbnRseSBkcHUgaGFuZGxpbmcgaXMgdGllZCB0byBhIHNpbmdsZSBkcml2ZXIg d2hpY2gKPiB3YXMgbWFuYWdpbmcgYm90aCBtZHNzIGFuZCBkcHUgcmVzb3VyY2VzLgo+IAo+IElu b3JkZXIgdG8gaGF2ZSB0aGUgY2xlYW5lciBvbmUgdG8gb25lIGRldmljZSBhbmQgZHJpdmVyCj4g YXNzb2NpYXRpb24sIHRoaXMgY2hhbmdlIGFkZHMgYSBuZXcgcGxhdGZvcm1fZHJpdmVyIGZvciBk cHUKPiBjaGlsZCBkZXZpY2Ugbm9kZSB3aGljaCBpbXBsZW1lbnRzIHRoZSBrbXMgZnVuY3Rpb25h bGl0eS4KPiAKPiBUaGUgZHB1IGRyaXZlciBpbXBsZW1lbnRzIHJ1bnRpbWVfcG0gc3VwcG9ydCBm b3IgbWFuYWdpbmcgY2xvY2tzCj4gYW5kIGJ1cyBiYW5kd2lkdGggZXRjLgo+IAo+IENoYW5nZXMg aW4gdjI6Cj4gCS0gcmVtb3ZlIHJlZHVuZGFudCBwYXJhbSBjaGVjayBmcm9tIF9kcHVfa21zX2h3 X2Rlc3Ryb3kgKFNlYW4gUGF1bCkKPiAJLSByZW1vdmUgZXhwbGljaXQgY2FsbHMgdG8gZGV2bV9r ZnJlZSAoU2VhbiBQYXVsKQo+IAktIG1lcmdlIGRwdV9pbml0IGludG8gZHB1X2JpbmQgKFNlYW4g UGF1bCkKPiAJLSBtZXJnZSBkcHVfZGVzdHJveSBpbnRvIGRwdV91bmJpbmQgKFNlYW4gUGF1bCkK PiAJLSB1c2UgJXBLIGZvciBrZXJuZWwgcG9pbnRlciBwcmludGluZyAoSm9yZGFuIENyb3VzZSkK PiAJLSByZW1vdmUgZXhwbGljaXQgZGV2bSBhbGxvY2F0aW9uIGZhaWx1cmUgbWVzc2FnZSAoSm9y ZGFuIENyb3VzZSkKPiAKPiBTaWduZWQtb2ZmLWJ5OiBSYWplc2ggWWFkYXYgPHJ5YWRhdkBjb2Rl YXVyb3JhLm9yZz4KClJldmlld2VkLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9y Zz4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYyB8IDIz OCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfa21zLmggfCAgIDQgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9k cnYuYyAgICAgICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCAg ICAgICAgICAgfCAgIDMgKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCA1 MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5j Cj4gaW5kZXggZTRhYjc1My4uODVmM2RiYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfa21zLmMKPiBAQCAtMTAzMCwxNiArMTAzMCwxMiBAQCBzdGF0aWMgbG9uZyBkcHVf a21zX3JvdW5kX3BpeGNsayhzdHJ1Y3QgbXNtX2ttcyAqa21zLCB1bnNpZ25lZCBsb25nIHJhdGUs Cj4gIAlyZXR1cm4gcmF0ZTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgX2RwdV9rbXNfaHdfZGVz dHJveShzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcywKPiAtCQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQo+ICtzdGF0aWMgdm9pZCBfZHB1X2ttc19od19kZXN0cm95KHN0cnVjdCBkcHVfa21z ICpkcHVfa21zKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2Owo+ICAJc3RydWN0IG1z bV9kcm1fcHJpdmF0ZSAqcHJpdjsKPiAgCWludCBpOwo+ICAKPiAtCWlmICghZHB1X2ttcyB8fCAh cGRldikKPiAtCQlyZXR1cm47Cj4gLQo+ICAJZGV2ID0gZHB1X2ttcy0+ZGV2Owo+ICAJaWYgKCFk ZXYpCj4gIAkJcmV0dXJuOwo+IEBAIC0xMDkxLDE1ICsxMDg3LDE1IEBAIHN0YXRpYyB2b2lkIF9k cHVfa21zX2h3X2Rlc3Ryb3koc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMsCj4gIAlkcHVfa21zLT5j b3JlX2NsaWVudCA9IE5VTEw7Cj4gIAo+ICAJaWYgKGRwdV9rbXMtPnZiaWZbVkJJRl9OUlRdKQo+ IC0JCW1zbV9pb3VubWFwKHBkZXYsIGRwdV9rbXMtPnZiaWZbVkJJRl9OUlRdKTsKPiArCQltc21f aW91bm1hcChkcHVfa21zLT5wZGV2LCBkcHVfa21zLT52YmlmW1ZCSUZfTlJUXSk7Cj4gIAlkcHVf a21zLT52YmlmW1ZCSUZfTlJUXSA9IE5VTEw7Cj4gIAo+ICAJaWYgKGRwdV9rbXMtPnZiaWZbVkJJ Rl9SVF0pCj4gLQkJbXNtX2lvdW5tYXAocGRldiwgZHB1X2ttcy0+dmJpZltWQklGX1JUXSk7Cj4g KwkJbXNtX2lvdW5tYXAoZHB1X2ttcy0+cGRldiwgZHB1X2ttcy0+dmJpZltWQklGX1JUXSk7Cj4g IAlkcHVfa21zLT52YmlmW1ZCSUZfUlRdID0gTlVMTDsKPiAgCj4gIAlpZiAoZHB1X2ttcy0+bW1p bykKPiAtCQltc21faW91bm1hcChwZGV2LCBkcHVfa21zLT5tbWlvKTsKPiArCQltc21faW91bm1h cChkcHVfa21zLT5wZGV2LCBkcHVfa21zLT5tbWlvKTsKPiAgCWRwdV9rbXMtPm1taW8gPSBOVUxM Owo+ICAKPiAgCWRwdV9yZWdfZG1hX2RlaW5pdCgpOwo+IEBAIC0xMTcyLDggKzExNjgsNiBAQCBp bnQgZHB1X2ttc19tbXVfYXR0YWNoKHN0cnVjdCBkcHVfa21zICpkcHVfa21zLCBib29sIHNlY3Vy ZV9vbmx5KQo+ICBzdGF0aWMgdm9pZCBkcHVfa21zX2Rlc3Ryb3koc3RydWN0IG1zbV9rbXMgKmtt cykKPiAgewo+ICAJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7Cj4gLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2Owo+IC0Jc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxhdGZvcm1kZXY7Cj4gIAo+ICAJ aWYgKCFrbXMpIHsKPiAgCQlEUFVfRVJST1IoImludmFsaWQga21zXG4iKTsKPiBAQCAtMTE4MSwy MCArMTE3NSw3IEBAIHN0YXRpYyB2b2lkIGRwdV9rbXNfZGVzdHJveShzdHJ1Y3QgbXNtX2ttcyAq a21zKQo+ICAJfQo+ICAKPiAgCWRwdV9rbXMgPSB0b19kcHVfa21zKGttcyk7Cj4gLQlkZXYgPSBk cHVfa21zLT5kZXY7Cj4gLQlpZiAoIWRldikgewo+IC0JCURQVV9FUlJPUigiaW52YWxpZCBkZXZp Y2VcbiIpOwo+IC0JCXJldHVybjsKPiAtCX0KPiAtCj4gLQlwbGF0Zm9ybWRldiA9IHRvX3BsYXRm b3JtX2RldmljZShkZXYtPmRldik7Cj4gLQlpZiAoIXBsYXRmb3JtZGV2KSB7Cj4gLQkJRFBVX0VS Uk9SKCJpbnZhbGlkIHBsYXRmb3JtIGRldmljZVxuIik7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+IC0K PiAtCV9kcHVfa21zX2h3X2Rlc3Ryb3koZHB1X2ttcywgcGxhdGZvcm1kZXYpOwo+IC0Ja2ZyZWUo ZHB1X2ttcyk7Cj4gKwlfZHB1X2ttc19od19kZXN0cm95KGRwdV9rbXMpOwo+ICB9Cj4gIAo+ICBz dGF0aWMgdm9pZCBkcHVfa21zX3ByZWNsb3NlKHN0cnVjdCBtc21fa21zICprbXMsIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSkKPiBAQCAtMTU1MCw3ICsxNTMxLDYgQEAgc3RhdGljIGludCBkcHVfa21z X2h3X2luaXQoc3RydWN0IG1zbV9rbXMgKmttcykKPiAgCXN0cnVjdCBkcHVfa21zICpkcHVfa21z Owo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPiAgCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUg KnByaXY7Cj4gLQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0Zm9ybWRldjsKPiAgCWludCBp LCByYyA9IC1FSU5WQUw7Cj4gIAo+ICAJaWYgKCFrbXMpIHsKPiBAQCAtMTU2NSwzNCArMTU0NSwy OCBAQCBzdGF0aWMgaW50IGRwdV9rbXNfaHdfaW5pdChzdHJ1Y3QgbXNtX2ttcyAqa21zKQo+ICAJ CWdvdG8gZW5kOwo+ICAJfQo+ICAKPiAtCXBsYXRmb3JtZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNl KGRldi0+ZGV2KTsKPiAtCWlmICghcGxhdGZvcm1kZXYpIHsKPiAtCQlEUFVfRVJST1IoImludmFs aWQgcGxhdGZvcm0gZGV2aWNlXG4iKTsKPiAtCQlnb3RvIGVuZDsKPiAtCQl9Cj4gLQo+ICAJcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlpZiAoIXByaXYpIHsKPiAgCQlEUFVfRVJST1IoImlu dmFsaWQgcHJpdmF0ZSBkYXRhXG4iKTsKPiAgCQlnb3RvIGVuZDsKPiAgCX0KPiAgCj4gLQlkcHVf a21zLT5tbWlvID0gbXNtX2lvcmVtYXAocGxhdGZvcm1kZXYsICJtZHBfcGh5cyIsICJtZHBfcGh5 cyIpOwo+ICsJZHB1X2ttcy0+bW1pbyA9IG1zbV9pb3JlbWFwKGRwdV9rbXMtPnBkZXYsICJtZHBf cGh5cyIsICJtZHBfcGh5cyIpOwo+ICAJaWYgKElTX0VSUihkcHVfa21zLT5tbWlvKSkgewo+ICAJ CXJjID0gUFRSX0VSUihkcHVfa21zLT5tbWlvKTsKPiAgCQlEUFVfRVJST1IoIm1kcCByZWdpc3Rl ciBtZW1vcnkgbWFwIGZhaWxlZDogJWRcbiIsIHJjKTsKPiAgCQlkcHVfa21zLT5tbWlvID0gTlVM TDsKPiAgCQlnb3RvIGVycm9yOwo+ICAJfQo+IC0JRFJNX0lORk8oIm1hcHBlZCBtZHAgYWRkcmVz cyBzcGFjZSBAJXBcbiIsIGRwdV9rbXMtPm1taW8pOwo+IC0JZHB1X2ttcy0+bW1pb19sZW4gPSBt c21faW9tYXBfc2l6ZShwbGF0Zm9ybWRldiwgIm1kcF9waHlzIik7Cj4gKwlEUk1fREVCVUcoIm1h cHBlZCBkcHUgYWRkcmVzcyBzcGFjZSBAJXBLXG4iLCBkcHVfa21zLT5tbWlvKTsKPiArCWRwdV9r bXMtPm1taW9fbGVuID0gbXNtX2lvbWFwX3NpemUoZHB1X2ttcy0+cGRldiwgIm1kcF9waHlzIik7 Cj4gIAo+ICAJcmMgPSBkcHVfZGJnX3JlZ19yZWdpc3Rlcl9iYXNlKERQVV9EQkdfTkFNRSwgZHB1 X2ttcy0+bW1pbywKPiAgCQkJZHB1X2ttcy0+bW1pb19sZW4pOwo+ICAJaWYgKHJjKQo+ICAJCURQ VV9FUlJPUigiZGJnIGJhc2UgcmVnaXN0ZXIga21zIGZhaWxlZDogJWRcbiIsIHJjKTsKPiAgCj4g LQlkcHVfa21zLT52YmlmW1ZCSUZfUlRdID0gbXNtX2lvcmVtYXAocGxhdGZvcm1kZXYsICJ2Ymlm X3BoeXMiLAo+ICsJZHB1X2ttcy0+dmJpZltWQklGX1JUXSA9IG1zbV9pb3JlbWFwKGRwdV9rbXMt PnBkZXYsICJ2YmlmX3BoeXMiLAo+ICAJCQkJCQkJCSJ2YmlmX3BoeXMiKTsKPiAgCWlmIChJU19F UlIoZHB1X2ttcy0+dmJpZltWQklGX1JUXSkpIHsKPiAgCQlyYyA9IFBUUl9FUlIoZHB1X2ttcy0+ dmJpZltWQklGX1JUXSk7Cj4gQEAgLTE2MDAsMjAgKzE1NzQsMjAgQEAgc3RhdGljIGludCBkcHVf a21zX2h3X2luaXQoc3RydWN0IG1zbV9rbXMgKmttcykKPiAgCQlkcHVfa21zLT52YmlmW1ZCSUZf UlRdID0gTlVMTDsKPiAgCQlnb3RvIGVycm9yOwo+ICAJfQo+IC0JZHB1X2ttcy0+dmJpZl9sZW5b VkJJRl9SVF0gPSBtc21faW9tYXBfc2l6ZShwbGF0Zm9ybWRldiwKPiArCWRwdV9rbXMtPnZiaWZf bGVuW1ZCSUZfUlRdID0gbXNtX2lvbWFwX3NpemUoZHB1X2ttcy0+cGRldiwKPiAgCQkJCQkJCQki dmJpZl9waHlzIik7Cj4gIAlyYyA9IGRwdV9kYmdfcmVnX3JlZ2lzdGVyX2Jhc2UoInZiaWZfcnQi LCBkcHVfa21zLT52YmlmW1ZCSUZfUlRdLAo+ICAJCQkJZHB1X2ttcy0+dmJpZl9sZW5bVkJJRl9S VF0pOwo+ICAJaWYgKHJjKQo+ICAJCURQVV9FUlJPUigiZGJnIGJhc2UgcmVnaXN0ZXIgdmJpZl9y dCBmYWlsZWQ6ICVkXG4iLCByYyk7Cj4gIAo+IC0JZHB1X2ttcy0+dmJpZltWQklGX05SVF0gPSBt c21faW9yZW1hcChwbGF0Zm9ybWRldiwgInZiaWZfbnJ0X3BoeXMiLAo+ICsJZHB1X2ttcy0+dmJp ZltWQklGX05SVF0gPSBtc21faW9yZW1hcChkcHVfa21zLT5wZGV2LCAidmJpZl9ucnRfcGh5cyIs Cj4gIAkJCQkJCQkJInZiaWZfbnJ0X3BoeXMiKTsKPiAgCWlmIChJU19FUlIoZHB1X2ttcy0+dmJp ZltWQklGX05SVF0pKSB7Cj4gIAkJZHB1X2ttcy0+dmJpZltWQklGX05SVF0gPSBOVUxMOwo+ICAJ CURQVV9ERUJVRygiVkJJRiBOUlQgaXMgbm90IGRlZmluZWQiKTsKPiAgCX0gZWxzZSB7Cj4gLQkJ ZHB1X2ttcy0+dmJpZl9sZW5bVkJJRl9OUlRdID0gbXNtX2lvbWFwX3NpemUocGxhdGZvcm1kZXYs Cj4gKwkJZHB1X2ttcy0+dmJpZl9sZW5bVkJJRl9OUlRdID0gbXNtX2lvbWFwX3NpemUoZHB1X2tt cy0+cGRldiwKPiAgCQkJCQkJCSJ2YmlmX25ydF9waHlzIik7Cj4gIAkJcmMgPSBkcHVfZGJnX3Jl Z19yZWdpc3Rlcl9iYXNlKCJ2YmlmX25ydCIsCj4gIAkJCQlkcHVfa21zLT52YmlmW1ZCSUZfTlJU XSwKPiBAQCAtMTYyNCwxMyArMTU5OCwxMyBAQCBzdGF0aWMgaW50IGRwdV9rbXNfaHdfaW5pdChz dHJ1Y3QgbXNtX2ttcyAqa21zKQo+ICAJfQo+ICAKPiAgI2lmZGVmIENPTkZJR19DSFJPTUVfUkVH RE1BCj4gLQlkcHVfa21zLT5yZWdfZG1hID0gbXNtX2lvcmVtYXAocGxhdGZvcm1kZXYsICJyZWdk bWFfcGh5cyIsCj4gKwlkcHVfa21zLT5yZWdfZG1hID0gbXNtX2lvcmVtYXAoZHB1X2ttcy0+cGRl diwgInJlZ2RtYV9waHlzIiwKPiAgCQkJCQkJCQkicmVnZG1hX3BoeXMiKTsKPiAgCWlmIChJU19F UlIoZHB1X2ttcy0+cmVnX2RtYSkpIHsKPiAgCQlkcHVfa21zLT5yZWdfZG1hID0gTlVMTDsKPiAg CQlEUFVfREVCVUcoIlJFR19ETUEgaXMgbm90IGRlZmluZWQiKTsKPiAgCX0gZWxzZSB7Cj4gLQkJ ZHB1X2ttcy0+cmVnX2RtYV9sZW4gPSBtc21faW9tYXBfc2l6ZShwbGF0Zm9ybWRldiwKPiArCQlk cHVfa21zLT5yZWdfZG1hX2xlbiA9IG1zbV9pb21hcF9zaXplKGRwdV9rbXMtPnBkZXYsCj4gIAkJ CQkJCQkJInJlZ2RtYV9waHlzIik7Cj4gIAkJcmMgPSAgZHB1X2RiZ19yZWdfcmVnaXN0ZXJfYmFz ZSgicmVnX2RtYSIsCj4gIAkJCQlkcHVfa21zLT5yZWdfZG1hLAo+IEBAIC0xODA0LDE0ICsxNzc4 LDEzIEBAIHN0YXRpYyBpbnQgZHB1X2ttc19od19pbml0KHN0cnVjdCBtc21fa21zICprbXMpCj4g IAlkcHVfcG93ZXJfcmVzb3VyY2VfZW5hYmxlKCZwcml2LT5waGFuZGxlLCBkcHVfa21zLT5jb3Jl X2NsaWVudCwgZmFsc2UpOwo+ICAJcG1fcnVudGltZV9wdXRfc3luYyhkZXYtPmRldik7Cj4gIGVy cm9yOgo+IC0JX2RwdV9rbXNfaHdfZGVzdHJveShkcHVfa21zLCBwbGF0Zm9ybWRldik7Cj4gKwlf ZHB1X2ttc19od19kZXN0cm95KGRwdV9rbXMpOwo+ICBlbmQ6Cj4gIAlyZXR1cm4gcmM7Cj4gIH0K PiAgCj4gIHN0cnVjdCBtc21fa21zICpkcHVfa21zX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgewo+IC0Jc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2Rl dmljZShkZXYtPmRldik7Cj4gIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2Owo+ICAJc3Ry dWN0IGRwdV9rbXMgKmRwdV9rbXM7Cj4gIAlpbnQgaXJxOwo+IEBAIC0xODIxLDI0ICsxNzk0LDE4 NyBAQCBzdHJ1Y3QgbXNtX2ttcyAqZHB1X2ttc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gIAl9Cj4gIAo+IC0JaXJxID0gcGxhdGZv cm1fZ2V0X2lycShwZGV2LCAwKTsKPiArCXByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJZHB1 X2ttcyA9IHRvX2RwdV9rbXMocHJpdi0+a21zKTsKPiArCj4gKwlpcnEgPSBpcnFfb2ZfcGFyc2Vf YW5kX21hcChkcHVfa21zLT5wZGV2LT5kZXYub2Zfbm9kZSwgMCk7Cj4gIAlpZiAoaXJxIDwgMCkg ewo+ICAJCURQVV9FUlJPUigiZmFpbGVkIHRvIGdldCBpcnE6ICVkXG4iLCBpcnEpOwo+ICAJCXJl dHVybiBFUlJfUFRSKGlycSk7Cj4gIAl9Cj4gKwlkcHVfa21zLT5iYXNlLmlycSA9IGlycTsKPiAg Cj4gLQlwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXJldHVybiAmZHB1X2ttcy0+YmFzZTsK PiArfQo+ICAKPiAtCWRwdV9rbXMgPSBremFsbG9jKHNpemVvZigqZHB1X2ttcyksIEdGUF9LRVJO RUwpOwo+IC0JaWYgKCFkcHVfa21zKSB7Cj4gLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gYWxsb2Nh dGUgZHB1IGttc1xuIik7Cj4gLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gK3N0YXRpYyBp bnQgZHB1X2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZv aWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gZGV2X2dldF9kcnZk YXRhKG1hc3Rlcik7Cj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZv cm1fZGV2aWNlKGRldik7Cj4gKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGRldi0+ ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttczsKPiArCXN0cnVjdCBkc3Nf bW9kdWxlX3Bvd2VyICptcDsKPiArCWludCByZXQgPSAwOwo+ICsKPiArCWRwdV9rbXMgPSBkZXZt X2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpkcHVfa21zKSwgR0ZQX0tFUk5FTCk7Cj4gKwlp ZiAoIWRwdV9rbXMpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJbXAgPSAmZHB1X2ttcy0+ bXA7Cj4gKwlyZXQgPSBtc21fZHNzX3BhcnNlX2Nsb2NrKHBkZXYsIG1wKTsKPiArCWlmIChyZXQp IHsKPiArCQlEUFVfRVJST1IoImZhaWxlZCB0byBwYXJzZSBjbG9ja3MsIHJldD0lZFxuIiwgcmV0 KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldCA9IG1zbV9kc3NfZ2V0X2Nsaygm cGRldi0+ZGV2LCBtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGspOwo+ICsJaWYgKHJldCkgewo+ ICsJCXByX2VycigiZmFpbGVkIHRvIGdldCBjbG9ja3MsIHJldD0lZFxuIiwgcmV0KTsKPiArCQln b3RvIGNsa19nZXRfZXJyb3I7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gbXNtX2Rzc19jbGtfc2V0X3Jh dGUobXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrKTsKPiArCWlmIChyZXQpIHsKPiArCQlwcl9l cnIoImZhaWxlZCB0byBzZXQgY2xvY2sgcmF0ZSwgcmV0PSVkXG4iLCByZXQpOwo+ICsJCWdvdG8g Y2xrX3JhdGVfZXJyb3I7Cj4gIAl9Cj4gIAo+ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwg ZHB1X2ttcyk7Cj4gKwo+ICAJbXNtX2ttc19pbml0KCZkcHVfa21zLT5iYXNlLCAma21zX2Z1bmNz KTsKPiAtCWRwdV9rbXMtPmRldiA9IGRldjsKPiAtCWRwdV9rbXMtPmJhc2UuaXJxID0gaXJxOwo+ ICsJZHB1X2ttcy0+ZGV2ID0gZGRldjsKPiArCWRwdV9rbXMtPnBkZXYgPSBwZGV2Owo+ICAKPiAt CXJldHVybiAmZHB1X2ttcy0+YmFzZTsKPiArCXBtX3J1bnRpbWVfZW5hYmxlKCZwZGV2LT5kZXYp Owo+ICsJZHB1X2ttcy0+cnBtX2VuYWJsZWQgPSB0cnVlOwo+ICsKPiArCXByaXYtPmttcyA9ICZk cHVfa21zLT5iYXNlOwo+ICsJcmV0dXJuIHJldDsKPiArCj4gK2Nsa19yYXRlX2Vycm9yOgo+ICsJ bXNtX2Rzc19wdXRfY2xrKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Nsayk7Cj4gK2Nsa19nZXRf ZXJyb3I6Cj4gKwlkZXZtX2tmcmVlKCZwZGV2LT5kZXYsIG1wLT5jbGtfY29uZmlnKTsKPiArCW1w LT5udW1fY2xrID0gMDsKPiArCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGRw dV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQg KmRhdGEpCj4gK3sKPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9y bV9kZXZpY2UoZGV2KTsKPiArCXN0cnVjdCBkcHVfa21zICpkcHVfa21zID0gcGxhdGZvcm1fZ2V0 X2RydmRhdGEocGRldik7Cj4gKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXAgPSAmZHB1X2tt cy0+bXA7Cj4gKwo+ICsJbXNtX2Rzc19wdXRfY2xrKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Ns ayk7Cj4gKwlkZXZtX2tmcmVlKCZwZGV2LT5kZXYsIG1wLT5jbGtfY29uZmlnKTsKPiArCW1wLT5u dW1fY2xrID0gMDsKPiArCj4gKwlpZiAoZHB1X2ttcy0+cnBtX2VuYWJsZWQpCj4gKwkJcG1fcnVu dGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGNvbXBvbmVudF9vcHMgZHB1X29wcyA9IHsKPiArCS5iaW5kICAgPSBkcHVfYmluZCwKPiArCS51 bmJpbmQgPSBkcHVfdW5iaW5kLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBkcHVfZGV2X3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArCXJldHVybiBjb21wb25lbnRf YWRkKCZwZGV2LT5kZXYsICZkcHVfb3BzKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBkcHVfZGV2 X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwljb21wb25lbnRf ZGVsKCZwZGV2LT5kZXYsICZkcHVfb3BzKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IGRwdV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlp bnQgcmMgPSAtMTsKPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9y bV9kZXZpY2UoZGV2KTsKPiArCXN0cnVjdCBkcHVfa21zICpkcHVfa21zID0gcGxhdGZvcm1fZ2V0 X2RydmRhdGEocGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGRldjsKPiArCXN0cnVjdCBt c21fZHJtX3ByaXZhdGUgKnByaXY7Cj4gKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXAgPSAm ZHB1X2ttcy0+bXA7Cj4gKwo+ICsJZGRldiA9IGRwdV9rbXMtPmRldjsKPiArCWlmICghZGRldikg ewo+ICsJCURQVV9FUlJPUigiaW52YWxpZCBkcm1fZGV2aWNlXG4iKTsKPiArCQlnb3RvIGV4aXQ7 Cj4gKwl9Cj4gKwlwcml2ID0gZGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwo+ICsJcmMgPSBkcHVfcG93 ZXJfcmVzb3VyY2VfZW5hYmxlKCZwcml2LT5waGFuZGxlLAo+ICsJCWRwdV9rbXMtPmNvcmVfY2xp ZW50LCBmYWxzZSk7Cj4gKwlpZiAocmMpCj4gKwkJRFBVX0VSUk9SKCJyZXNvdXJjZSBkaXNhYmxl IGZhaWxlZDogJWRcbiIsIHJjKTsKPiArCj4gKwlyYyA9IG1zbV9kc3NfZW5hYmxlX2NsayhtcC0+ Y2xrX2NvbmZpZywgbXAtPm51bV9jbGssIGZhbHNlKTsKPiArCWlmIChyYykKPiArCQlEUFVfRVJS T1IoImNsb2NrIGRpc2FibGUgZmFpbGVkIHJjOiVkXG4iLCByYyk7Cj4gKwo+ICtleGl0Ogo+ICsJ cmV0dXJuIHJjOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGRwdV9ydW50aW1lX3Jlc3VtZShzdHJ1 Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCWludCByYyA9IC0xOwo+ICsJc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYpOwo+ICsJc3RydWN0IGRwdV9r bXMgKmRwdV9rbXMgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiArCXN0cnVjdCBkcm1f ZGV2aWNlICpkZGV2Owo+ICsJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKPiArCXN0cnVj dCBkc3NfbW9kdWxlX3Bvd2VyICptcCA9ICZkcHVfa21zLT5tcDsKPiArCj4gKwlkZGV2ID0gZHB1 X2ttcy0+ZGV2Owo+ICsJaWYgKCFkZGV2KSB7Cj4gKwkJRFBVX0VSUk9SKCJpbnZhbGlkIGRybV9k ZXZpY2VcbiIpOwo+ICsJCWdvdG8gZXhpdDsKPiArCX0KPiArCXByaXYgPSBkZGV2LT5kZXZfcHJp dmF0ZTsKPiArCj4gKwlyYyA9IG1zbV9kc3NfZW5hYmxlX2NsayhtcC0+Y2xrX2NvbmZpZywgbXAt Pm51bV9jbGssIHRydWUpOwo+ICsJaWYgKHJjKSB7Cj4gKwkJRFBVX0VSUk9SKCJjbG9jayBlbmFi bGUgZmFpbGVkIHJjOiVkXG4iLCByYyk7Cj4gKwkJZ290byBleGl0Owo+ICsJfQo+ICsKPiArCXJj ID0gZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZSgmcHJpdi0+cGhhbmRsZSwgZHB1X2ttcy0+Y29y ZV9jbGllbnQsCj4gKwkJdHJ1ZSk7Cj4gKwlpZiAocmMpCj4gKwkJRFBVX0VSUk9SKCJyZXNvdXJj ZSBlbmFibGUgZmFpbGVkOiAlZFxuIiwgcmMpOwo+ICsKPiArZXhpdDoKPiArCXJldHVybiByYzsK PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGRwdV9wbV9vcHMgPSB7 Cj4gKwlTRVRfUlVOVElNRV9QTV9PUFMoZHB1X3J1bnRpbWVfc3VzcGVuZCwgZHB1X3J1bnRpbWVf cmVzdW1lLCBOVUxMKQo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2Vf aWQgZHB1X2R0X21hdGNoW10gPSB7Cj4gKwl7IC5jb21wYXRpYmxlID0gInFjb20sZHB1IiwgfSwK PiArCXt9Cj4gK307Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGRwdV9kdF9tYXRjaCk7Cj4g Kwo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkcHVfZHJpdmVyID0gewo+ICsJLnBy b2JlID0gZHB1X2Rldl9wcm9iZSwKPiArCS5yZW1vdmUgPSBkcHVfZGV2X3JlbW92ZSwKPiArCS5k cml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSAibXNtX2RwdSIsCj4gKwkJLm9mX21hdGNoX3RhYmxlID0g ZHB1X2R0X21hdGNoLAo+ICsJCS5wbSA9ICZkcHVfcG1fb3BzLAo+ICsJfSwKPiArfTsKPiArCj4g K3ZvaWQgX19pbml0IG1zbV9kcHVfcmVnaXN0ZXIodm9pZCkKPiArewo+ICsJcGxhdGZvcm1fZHJp dmVyX3JlZ2lzdGVyKCZkcHVfZHJpdmVyKTsKPiArfQo+ICsKPiArdm9pZCBfX2V4aXQgbXNtX2Rw dV91bnJlZ2lzdGVyKHZvaWQpCj4gK3sKPiArCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZk cHVfZHJpdmVyKTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfa21zLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmgK PiBpbmRleCBhMWMwOTEwLi4zYzY5OTIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9rbXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9rbXMuaAo+IEBAIC0yMDAsNiArMjAwLDEwIEBAIHN0cnVjdCBkcHVfa21zIHsKPiAg CXN0cnVjdCBkcHVfaHdfbWRwICpod19tZHA7Cj4gIAo+ICAJYm9vbCBoYXNfZGFuZ2VyX2N0cmw7 Cj4gKwo+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKPiArCWJvb2wgcnBtX2VuYWJs ZWQ7Cj4gKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciBtcDsKPiAgfTsKPiAgCj4gIHN0cnVjdCB2 c3luY19pbmZvIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+IGluZGV4IGEwZTczZWEuLjU0NzA1Mjkg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+IEBAIC0xNzMxLDYgKzE3MzEsNyBAQCBzdGF0aWMg aW50IF9faW5pdCBtc21fZHJtX3JlZ2lzdGVyKHZvaWQpCj4gIAo+ICAJREJHKCJpbml0Iik7Cj4g IAltc21fbWRwX3JlZ2lzdGVyKCk7Cj4gKwltc21fZHB1X3JlZ2lzdGVyKCk7Cj4gIAltc21fZHNp X3JlZ2lzdGVyKCk7Cj4gIAltc21fZWRwX3JlZ2lzdGVyKCk7Cj4gIAltc21faGRtaV9yZWdpc3Rl cigpOwo+IEBAIC0xNzQ3LDYgKzE3NDgsNyBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbXNtX2RybV91 bnJlZ2lzdGVyKHZvaWQpCj4gIAltc21fZWRwX3VucmVnaXN0ZXIoKTsKPiAgCW1zbV9kc2lfdW5y ZWdpc3RlcigpOwo+ICAJbXNtX21kcF91bnJlZ2lzdGVyKCk7Cj4gKwltc21fZHB1X3VucmVnaXN0 ZXIoKTsKPiAgfQo+ICAKPiAgbW9kdWxlX2luaXQobXNtX2RybV9yZWdpc3Rlcik7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21z bS9tc21fZHJ2LmgKPiBpbmRleCBlOGU1ZTczLi4yMmEzMDk2IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21f ZHJ2LmgKPiBAQCAtNjgyLDYgKzY4Miw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1zbV9kc2lfbW9k ZXNldF9pbml0KHN0cnVjdCBtc21fZHNpICptc21fZHNpLAo+ICB2b2lkIF9faW5pdCBtc21fbWRw X3JlZ2lzdGVyKHZvaWQpOwo+ICB2b2lkIF9fZXhpdCBtc21fbWRwX3VucmVnaXN0ZXIodm9pZCk7 Cj4gIAo+ICt2b2lkIF9faW5pdCBtc21fZHB1X3JlZ2lzdGVyKHZvaWQpOwo+ICt2b2lkIF9fZXhp dCBtc21fZHB1X3VucmVnaXN0ZXIodm9pZCk7Cj4gKwo+ICAjaWZkZWYgQ09ORklHX0RFQlVHX0ZT Cj4gIHZvaWQgbXNtX2dlbV9kZXNjcmliZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3Ry dWN0IHNlcV9maWxlICptKTsKPiAgdm9pZCBtc21fZ2VtX2Rlc2NyaWJlX29iamVjdHMoc3RydWN0 IGxpc3RfaGVhZCAqbGlzdCwgc3RydWN0IHNlcV9maWxlICptKTsKPiAtLSAKPiBUaGUgUXVhbGNv bW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3Jh IEZvcnVtLAo+IGEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKPiAKCi0t IApTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFp bGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K