From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: Re: [DPU PATCH v2 04/12] drm/msm/dpu: create new platform driver for dpu device Date: Fri, 11 May 2018 11:06:29 -0600 Message-ID: <20180511170629.GG4995@jcrouse-lnx.qualcomm.com> 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 ZGFuIENyb3VzZSkKPgo+IFNpZ25lZC1vZmYtYnk6IFJhamVzaCBZYWRhdiA8cnlhZGF2QGNvZGVh dXJvcmEub3JnPgoKUmV2aWV3ZWQtYnk6IEpvcmRhbiBDcm91c2UgPGpjcm91c2VAY29kZWF1cm9y YS5vcmc+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYyB8 IDIzOCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfa21zLmggfCAgIDQgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9kcnYuYyAgICAgICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYu aCAgICAgICAgICAgfCAgIDMgKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCsp LCA1MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2tt cy5jCj4gaW5kZXggZTRhYjc1My4uODVmM2RiYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfa21zLmMKPiBAQCAtMTAzMCwxNiArMTAzMCwxMiBAQCBzdGF0aWMgbG9uZyBk cHVfa21zX3JvdW5kX3BpeGNsayhzdHJ1Y3QgbXNtX2ttcyAqa21zLCB1bnNpZ25lZCBsb25nIHJh dGUsCj4gIAlyZXR1cm4gcmF0ZTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgX2RwdV9rbXNfaHdf ZGVzdHJveShzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcywKPiAtCQlzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQo+ICtzdGF0aWMgdm9pZCBfZHB1X2ttc19od19kZXN0cm95KHN0cnVjdCBkcHVf a21zICpkcHVfa21zKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2Owo+ICAJc3RydWN0 IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKPiAgCWludCBpOwo+ICAKPiAtCWlmICghZHB1X2ttcyB8 fCAhcGRldikKPiAtCQlyZXR1cm47Cj4gLQo+ICAJZGV2ID0gZHB1X2ttcy0+ZGV2Owo+ICAJaWYg KCFkZXYpCj4gIAkJcmV0dXJuOwo+IEBAIC0xMDkxLDE1ICsxMDg3LDE1IEBAIHN0YXRpYyB2b2lk IF9kcHVfa21zX2h3X2Rlc3Ryb3koc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMsCj4gIAlkcHVfa21z LT5jb3JlX2NsaWVudCA9IE5VTEw7Cj4gIAo+ICAJaWYgKGRwdV9rbXMtPnZiaWZbVkJJRl9OUlRd KQo+IC0JCW1zbV9pb3VubWFwKHBkZXYsIGRwdV9rbXMtPnZiaWZbVkJJRl9OUlRdKTsKPiArCQlt c21faW91bm1hcChkcHVfa21zLT5wZGV2LCBkcHVfa21zLT52YmlmW1ZCSUZfTlJUXSk7Cj4gIAlk cHVfa21zLT52YmlmW1ZCSUZfTlJUXSA9IE5VTEw7Cj4gIAo+ICAJaWYgKGRwdV9rbXMtPnZiaWZb VkJJRl9SVF0pCj4gLQkJbXNtX2lvdW5tYXAocGRldiwgZHB1X2ttcy0+dmJpZltWQklGX1JUXSk7 Cj4gKwkJbXNtX2lvdW5tYXAoZHB1X2ttcy0+cGRldiwgZHB1X2ttcy0+dmJpZltWQklGX1JUXSk7 Cj4gIAlkcHVfa21zLT52YmlmW1ZCSUZfUlRdID0gTlVMTDsKPiAgCj4gIAlpZiAoZHB1X2ttcy0+ bW1pbykKPiAtCQltc21faW91bm1hcChwZGV2LCBkcHVfa21zLT5tbWlvKTsKPiArCQltc21faW91 bm1hcChkcHVfa21zLT5wZGV2LCBkcHVfa21zLT5tbWlvKTsKPiAgCWRwdV9rbXMtPm1taW8gPSBO VUxMOwo+ICAKPiAgCWRwdV9yZWdfZG1hX2RlaW5pdCgpOwo+IEBAIC0xMTcyLDggKzExNjgsNiBA QCBpbnQgZHB1X2ttc19tbXVfYXR0YWNoKHN0cnVjdCBkcHVfa21zICpkcHVfa21zLCBib29sIHNl Y3VyZV9vbmx5KQo+ICBzdGF0aWMgdm9pZCBkcHVfa21zX2Rlc3Ryb3koc3RydWN0IG1zbV9rbXMg KmttcykKPiAgewo+ICAJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7Cj4gLQlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2Owo+IC0Jc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxhdGZvcm1kZXY7Cj4gIAo+ ICAJaWYgKCFrbXMpIHsKPiAgCQlEUFVfRVJST1IoImludmFsaWQga21zXG4iKTsKPiBAQCAtMTE4 MSwyMCArMTE3NSw3IEBAIHN0YXRpYyB2b2lkIGRwdV9rbXNfZGVzdHJveShzdHJ1Y3QgbXNtX2tt cyAqa21zKQo+ICAJfQo+ICAKPiAgCWRwdV9rbXMgPSB0b19kcHVfa21zKGttcyk7Cj4gLQlkZXYg PSBkcHVfa21zLT5kZXY7Cj4gLQlpZiAoIWRldikgewo+IC0JCURQVV9FUlJPUigiaW52YWxpZCBk ZXZpY2VcbiIpOwo+IC0JCXJldHVybjsKPiAtCX0KPiAtCj4gLQlwbGF0Zm9ybWRldiA9IHRvX3Bs YXRmb3JtX2RldmljZShkZXYtPmRldik7Cj4gLQlpZiAoIXBsYXRmb3JtZGV2KSB7Cj4gLQkJRFBV X0VSUk9SKCJpbnZhbGlkIHBsYXRmb3JtIGRldmljZVxuIik7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+ IC0KPiAtCV9kcHVfa21zX2h3X2Rlc3Ryb3koZHB1X2ttcywgcGxhdGZvcm1kZXYpOwo+IC0Ja2Zy ZWUoZHB1X2ttcyk7Cj4gKwlfZHB1X2ttc19od19kZXN0cm95KGRwdV9rbXMpOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZCBkcHVfa21zX3ByZWNsb3NlKHN0cnVjdCBtc21fa21zICprbXMsIHN0cnVj dCBkcm1fZmlsZSAqZmlsZSkKPiBAQCAtMTU1MCw3ICsxNTMxLDYgQEAgc3RhdGljIGludCBkcHVf a21zX2h3X2luaXQoc3RydWN0IG1zbV9rbXMgKmttcykKPiAgCXN0cnVjdCBkcHVfa21zICpkcHVf a21zOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPiAgCXN0cnVjdCBtc21fZHJtX3ByaXZh dGUgKnByaXY7Cj4gLQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0Zm9ybWRldjsKPiAgCWlu dCBpLCByYyA9IC1FSU5WQUw7Cj4gIAo+ICAJaWYgKCFrbXMpIHsKPiBAQCAtMTU2NSwzNCArMTU0 NSwyOCBAQCBzdGF0aWMgaW50IGRwdV9rbXNfaHdfaW5pdChzdHJ1Y3QgbXNtX2ttcyAqa21zKQo+ ICAJCWdvdG8gZW5kOwo+ICAJfQo+ICAKPiAtCXBsYXRmb3JtZGV2ID0gdG9fcGxhdGZvcm1fZGV2 aWNlKGRldi0+ZGV2KTsKPiAtCWlmICghcGxhdGZvcm1kZXYpIHsKPiAtCQlEUFVfRVJST1IoImlu dmFsaWQgcGxhdGZvcm0gZGV2aWNlXG4iKTsKPiAtCQlnb3RvIGVuZDsKPiAtCQl9Cj4gLQo+ICAJ cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlpZiAoIXByaXYpIHsKPiAgCQlEUFVfRVJST1Io ImludmFsaWQgcHJpdmF0ZSBkYXRhXG4iKTsKPiAgCQlnb3RvIGVuZDsKPiAgCX0KPiAgCj4gLQlk cHVfa21zLT5tbWlvID0gbXNtX2lvcmVtYXAocGxhdGZvcm1kZXYsICJtZHBfcGh5cyIsICJtZHBf cGh5cyIpOwo+ICsJZHB1X2ttcy0+bW1pbyA9IG1zbV9pb3JlbWFwKGRwdV9rbXMtPnBkZXYsICJt ZHBfcGh5cyIsICJtZHBfcGh5cyIpOwo+ICAJaWYgKElTX0VSUihkcHVfa21zLT5tbWlvKSkgewo+ ICAJCXJjID0gUFRSX0VSUihkcHVfa21zLT5tbWlvKTsKPiAgCQlEUFVfRVJST1IoIm1kcCByZWdp c3RlciBtZW1vcnkgbWFwIGZhaWxlZDogJWRcbiIsIHJjKTsKPiAgCQlkcHVfa21zLT5tbWlvID0g TlVMTDsKPiAgCQlnb3RvIGVycm9yOwo+ICAJfQo+IC0JRFJNX0lORk8oIm1hcHBlZCBtZHAgYWRk cmVzcyBzcGFjZSBAJXBcbiIsIGRwdV9rbXMtPm1taW8pOwo+IC0JZHB1X2ttcy0+bW1pb19sZW4g PSBtc21faW9tYXBfc2l6ZShwbGF0Zm9ybWRldiwgIm1kcF9waHlzIik7Cj4gKwlEUk1fREVCVUco Im1hcHBlZCBkcHUgYWRkcmVzcyBzcGFjZSBAJXBLXG4iLCBkcHVfa21zLT5tbWlvKTsKPiArCWRw dV9rbXMtPm1taW9fbGVuID0gbXNtX2lvbWFwX3NpemUoZHB1X2ttcy0+cGRldiwgIm1kcF9waHlz Iik7Cj4gIAo+ICAJcmMgPSBkcHVfZGJnX3JlZ19yZWdpc3Rlcl9iYXNlKERQVV9EQkdfTkFNRSwg ZHB1X2ttcy0+bW1pbywKPiAgCQkJZHB1X2ttcy0+bW1pb19sZW4pOwo+ICAJaWYgKHJjKQo+ICAJ CURQVV9FUlJPUigiZGJnIGJhc2UgcmVnaXN0ZXIga21zIGZhaWxlZDogJWRcbiIsIHJjKTsKPiAg Cj4gLQlkcHVfa21zLT52YmlmW1ZCSUZfUlRdID0gbXNtX2lvcmVtYXAocGxhdGZvcm1kZXYsICJ2 YmlmX3BoeXMiLAo+ICsJZHB1X2ttcy0+dmJpZltWQklGX1JUXSA9IG1zbV9pb3JlbWFwKGRwdV9r bXMtPnBkZXYsICJ2YmlmX3BoeXMiLAo+ICAJCQkJCQkJCSJ2YmlmX3BoeXMiKTsKPiAgCWlmIChJ U19FUlIoZHB1X2ttcy0+dmJpZltWQklGX1JUXSkpIHsKPiAgCQlyYyA9IFBUUl9FUlIoZHB1X2tt cy0+dmJpZltWQklGX1JUXSk7Cj4gQEAgLTE2MDAsMjAgKzE1NzQsMjAgQEAgc3RhdGljIGludCBk cHVfa21zX2h3X2luaXQoc3RydWN0IG1zbV9rbXMgKmttcykKPiAgCQlkcHVfa21zLT52YmlmW1ZC SUZfUlRdID0gTlVMTDsKPiAgCQlnb3RvIGVycm9yOwo+ICAJfQo+IC0JZHB1X2ttcy0+dmJpZl9s ZW5bVkJJRl9SVF0gPSBtc21faW9tYXBfc2l6ZShwbGF0Zm9ybWRldiwKPiArCWRwdV9rbXMtPnZi aWZfbGVuW1ZCSUZfUlRdID0gbXNtX2lvbWFwX3NpemUoZHB1X2ttcy0+cGRldiwKPiAgCQkJCQkJ CQkidmJpZl9waHlzIik7Cj4gIAlyYyA9IGRwdV9kYmdfcmVnX3JlZ2lzdGVyX2Jhc2UoInZiaWZf cnQiLCBkcHVfa21zLT52YmlmW1ZCSUZfUlRdLAo+ICAJCQkJZHB1X2ttcy0+dmJpZl9sZW5bVkJJ Rl9SVF0pOwo+ICAJaWYgKHJjKQo+ICAJCURQVV9FUlJPUigiZGJnIGJhc2UgcmVnaXN0ZXIgdmJp Zl9ydCBmYWlsZWQ6ICVkXG4iLCByYyk7Cj4gIAo+IC0JZHB1X2ttcy0+dmJpZltWQklGX05SVF0g PSBtc21faW9yZW1hcChwbGF0Zm9ybWRldiwgInZiaWZfbnJ0X3BoeXMiLAo+ICsJZHB1X2ttcy0+ dmJpZltWQklGX05SVF0gPSBtc21faW9yZW1hcChkcHVfa21zLT5wZGV2LCAidmJpZl9ucnRfcGh5 cyIsCj4gIAkJCQkJCQkJInZiaWZfbnJ0X3BoeXMiKTsKPiAgCWlmIChJU19FUlIoZHB1X2ttcy0+ dmJpZltWQklGX05SVF0pKSB7Cj4gIAkJZHB1X2ttcy0+dmJpZltWQklGX05SVF0gPSBOVUxMOwo+ ICAJCURQVV9ERUJVRygiVkJJRiBOUlQgaXMgbm90IGRlZmluZWQiKTsKPiAgCX0gZWxzZSB7Cj4g LQkJZHB1X2ttcy0+dmJpZl9sZW5bVkJJRl9OUlRdID0gbXNtX2lvbWFwX3NpemUocGxhdGZvcm1k ZXYsCj4gKwkJZHB1X2ttcy0+dmJpZl9sZW5bVkJJRl9OUlRdID0gbXNtX2lvbWFwX3NpemUoZHB1 X2ttcy0+cGRldiwKPiAgCQkJCQkJCSJ2YmlmX25ydF9waHlzIik7Cj4gIAkJcmMgPSBkcHVfZGJn X3JlZ19yZWdpc3Rlcl9iYXNlKCJ2YmlmX25ydCIsCj4gIAkJCQlkcHVfa21zLT52YmlmW1ZCSUZf TlJUXSwKPiBAQCAtMTYyNCwxMyArMTU5OCwxMyBAQCBzdGF0aWMgaW50IGRwdV9rbXNfaHdfaW5p dChzdHJ1Y3QgbXNtX2ttcyAqa21zKQo+ICAJfQo+ICAKPiAgI2lmZGVmIENPTkZJR19DSFJPTUVf UkVHRE1BCj4gLQlkcHVfa21zLT5yZWdfZG1hID0gbXNtX2lvcmVtYXAocGxhdGZvcm1kZXYsICJy ZWdkbWFfcGh5cyIsCj4gKwlkcHVfa21zLT5yZWdfZG1hID0gbXNtX2lvcmVtYXAoZHB1X2ttcy0+ cGRldiwgInJlZ2RtYV9waHlzIiwKPiAgCQkJCQkJCQkicmVnZG1hX3BoeXMiKTsKPiAgCWlmIChJ U19FUlIoZHB1X2ttcy0+cmVnX2RtYSkpIHsKPiAgCQlkcHVfa21zLT5yZWdfZG1hID0gTlVMTDsK PiAgCQlEUFVfREVCVUcoIlJFR19ETUEgaXMgbm90IGRlZmluZWQiKTsKPiAgCX0gZWxzZSB7Cj4g LQkJZHB1X2ttcy0+cmVnX2RtYV9sZW4gPSBtc21faW9tYXBfc2l6ZShwbGF0Zm9ybWRldiwKPiAr CQlkcHVfa21zLT5yZWdfZG1hX2xlbiA9IG1zbV9pb21hcF9zaXplKGRwdV9rbXMtPnBkZXYsCj4g IAkJCQkJCQkJInJlZ2RtYV9waHlzIik7Cj4gIAkJcmMgPSAgZHB1X2RiZ19yZWdfcmVnaXN0ZXJf YmFzZSgicmVnX2RtYSIsCj4gIAkJCQlkcHVfa21zLT5yZWdfZG1hLAo+IEBAIC0xODA0LDE0ICsx Nzc4LDEzIEBAIHN0YXRpYyBpbnQgZHB1X2ttc19od19pbml0KHN0cnVjdCBtc21fa21zICprbXMp Cj4gIAlkcHVfcG93ZXJfcmVzb3VyY2VfZW5hYmxlKCZwcml2LT5waGFuZGxlLCBkcHVfa21zLT5j b3JlX2NsaWVudCwgZmFsc2UpOwo+ICAJcG1fcnVudGltZV9wdXRfc3luYyhkZXYtPmRldik7Cj4g IGVycm9yOgo+IC0JX2RwdV9rbXNfaHdfZGVzdHJveShkcHVfa21zLCBwbGF0Zm9ybWRldik7Cj4g KwlfZHB1X2ttc19od19kZXN0cm95KGRwdV9rbXMpOwo+ICBlbmQ6Cj4gIAlyZXR1cm4gcmM7Cj4g IH0KPiAgCj4gIHN0cnVjdCBtc21fa21zICpkcHVfa21zX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgewo+IC0Jc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3Jt X2RldmljZShkZXYtPmRldik7Cj4gIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2Owo+ICAJ c3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7Cj4gIAlpbnQgaXJxOwo+IEBAIC0xODIxLDI0ICsxNzk0 LDE4NyBAQCBzdHJ1Y3QgbXNtX2ttcyAqZHB1X2ttc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gIAl9Cj4gIAo+IC0JaXJxID0gcGxh dGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKPiArCXByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJ ZHB1X2ttcyA9IHRvX2RwdV9rbXMocHJpdi0+a21zKTsKPiArCj4gKwlpcnEgPSBpcnFfb2ZfcGFy c2VfYW5kX21hcChkcHVfa21zLT5wZGV2LT5kZXYub2Zfbm9kZSwgMCk7Cj4gIAlpZiAoaXJxIDwg MCkgewo+ICAJCURQVV9FUlJPUigiZmFpbGVkIHRvIGdldCBpcnE6ICVkXG4iLCBpcnEpOwo+ICAJ CXJldHVybiBFUlJfUFRSKGlycSk7Cj4gIAl9Cj4gKwlkcHVfa21zLT5iYXNlLmlycSA9IGlycTsK PiAgCj4gLQlwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXJldHVybiAmZHB1X2ttcy0+YmFz ZTsKPiArfQo+ICAKPiAtCWRwdV9rbXMgPSBremFsbG9jKHNpemVvZigqZHB1X2ttcyksIEdGUF9L RVJORUwpOwo+IC0JaWYgKCFkcHVfa21zKSB7Cj4gLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gYWxs b2NhdGUgZHB1IGttc1xuIik7Cj4gLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gK3N0YXRp YyBpbnQgZHB1X2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIs IHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gZGV2X2dldF9k cnZkYXRhKG1hc3Rlcik7Cj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxh dGZvcm1fZGV2aWNlKGRldik7Cj4gKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGRl di0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttczsKPiArCXN0cnVjdCBk c3NfbW9kdWxlX3Bvd2VyICptcDsKPiArCWludCByZXQgPSAwOwo+ICsKPiArCWRwdV9rbXMgPSBk ZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpkcHVfa21zKSwgR0ZQX0tFUk5FTCk7Cj4g KwlpZiAoIWRwdV9rbXMpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJbXAgPSAmZHB1X2tt cy0+bXA7Cj4gKwlyZXQgPSBtc21fZHNzX3BhcnNlX2Nsb2NrKHBkZXYsIG1wKTsKPiArCWlmIChy ZXQpIHsKPiArCQlEUFVfRVJST1IoImZhaWxlZCB0byBwYXJzZSBjbG9ja3MsIHJldD0lZFxuIiwg cmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldCA9IG1zbV9kc3NfZ2V0X2Ns aygmcGRldi0+ZGV2LCBtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGspOwo+ICsJaWYgKHJldCkg ewo+ICsJCXByX2VycigiZmFpbGVkIHRvIGdldCBjbG9ja3MsIHJldD0lZFxuIiwgcmV0KTsKPiAr CQlnb3RvIGNsa19nZXRfZXJyb3I7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gbXNtX2Rzc19jbGtfc2V0 X3JhdGUobXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrKTsKPiArCWlmIChyZXQpIHsKPiArCQlw cl9lcnIoImZhaWxlZCB0byBzZXQgY2xvY2sgcmF0ZSwgcmV0PSVkXG4iLCByZXQpOwo+ICsJCWdv dG8gY2xrX3JhdGVfZXJyb3I7Cj4gIAl9Cj4gIAo+ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRl diwgZHB1X2ttcyk7Cj4gKwo+ICAJbXNtX2ttc19pbml0KCZkcHVfa21zLT5iYXNlLCAma21zX2Z1 bmNzKTsKPiAtCWRwdV9rbXMtPmRldiA9IGRldjsKPiAtCWRwdV9rbXMtPmJhc2UuaXJxID0gaXJx Owo+ICsJZHB1X2ttcy0+ZGV2ID0gZGRldjsKPiArCWRwdV9rbXMtPnBkZXYgPSBwZGV2Owo+ICAK PiAtCXJldHVybiAmZHB1X2ttcy0+YmFzZTsKPiArCXBtX3J1bnRpbWVfZW5hYmxlKCZwZGV2LT5k ZXYpOwo+ICsJZHB1X2ttcy0+cnBtX2VuYWJsZWQgPSB0cnVlOwo+ICsKPiArCXByaXYtPmttcyA9 ICZkcHVfa21zLT5iYXNlOwo+ICsJcmV0dXJuIHJldDsKPiArCj4gK2Nsa19yYXRlX2Vycm9yOgo+ ICsJbXNtX2Rzc19wdXRfY2xrKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Nsayk7Cj4gK2Nsa19n ZXRfZXJyb3I6Cj4gKwlkZXZtX2tmcmVlKCZwZGV2LT5kZXYsIG1wLT5jbGtfY29uZmlnKTsKPiAr CW1wLT5udW1fY2xrID0gMDsKPiArCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lk IGRwdV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZv aWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0 Zm9ybV9kZXZpY2UoZGV2KTsKPiArCXN0cnVjdCBkcHVfa21zICpkcHVfa21zID0gcGxhdGZvcm1f Z2V0X2RydmRhdGEocGRldik7Cj4gKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXAgPSAmZHB1 X2ttcy0+bXA7Cj4gKwo+ICsJbXNtX2Rzc19wdXRfY2xrKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVt X2Nsayk7Cj4gKwlkZXZtX2tmcmVlKCZwZGV2LT5kZXYsIG1wLT5jbGtfY29uZmlnKTsKPiArCW1w LT5udW1fY2xrID0gMDsKPiArCj4gKwlpZiAoZHB1X2ttcy0+cnBtX2VuYWJsZWQpCj4gKwkJcG1f cnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGNvbXBvbmVudF9vcHMgZHB1X29wcyA9IHsKPiArCS5iaW5kICAgPSBkcHVfYmluZCwKPiAr CS51bmJpbmQgPSBkcHVfdW5iaW5kLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBkcHVfZGV2X3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArCXJldHVybiBjb21wb25l bnRfYWRkKCZwZGV2LT5kZXYsICZkcHVfb3BzKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBkcHVf ZGV2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwljb21wb25l bnRfZGVsKCZwZGV2LT5kZXYsICZkcHVfb3BzKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IGRwdV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4g KwlpbnQgcmMgPSAtMTsKPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0 Zm9ybV9kZXZpY2UoZGV2KTsKPiArCXN0cnVjdCBkcHVfa21zICpkcHVfa21zID0gcGxhdGZvcm1f Z2V0X2RydmRhdGEocGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGRldjsKPiArCXN0cnVj dCBtc21fZHJtX3ByaXZhdGUgKnByaXY7Cj4gKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXAg PSAmZHB1X2ttcy0+bXA7Cj4gKwo+ICsJZGRldiA9IGRwdV9rbXMtPmRldjsKPiArCWlmICghZGRl dikgewo+ICsJCURQVV9FUlJPUigiaW52YWxpZCBkcm1fZGV2aWNlXG4iKTsKPiArCQlnb3RvIGV4 aXQ7Cj4gKwl9Cj4gKwlwcml2ID0gZGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwo+ICsJcmMgPSBkcHVf cG93ZXJfcmVzb3VyY2VfZW5hYmxlKCZwcml2LT5waGFuZGxlLAo+ICsJCWRwdV9rbXMtPmNvcmVf Y2xpZW50LCBmYWxzZSk7Cj4gKwlpZiAocmMpCj4gKwkJRFBVX0VSUk9SKCJyZXNvdXJjZSBkaXNh YmxlIGZhaWxlZDogJWRcbiIsIHJjKTsKPiArCj4gKwlyYyA9IG1zbV9kc3NfZW5hYmxlX2Nsayht cC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGssIGZhbHNlKTsKPiArCWlmIChyYykKPiArCQlEUFVf RVJST1IoImNsb2NrIGRpc2FibGUgZmFpbGVkIHJjOiVkXG4iLCByYyk7Cj4gKwo+ICtleGl0Ogo+ ICsJcmV0dXJuIHJjOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGRwdV9ydW50aW1lX3Jlc3VtZShz dHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCWludCByYyA9IC0xOwo+ICsJc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYpOwo+ICsJc3RydWN0IGRw dV9rbXMgKmRwdV9rbXMgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiArCXN0cnVjdCBk cm1fZGV2aWNlICpkZGV2Owo+ICsJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKPiArCXN0 cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcCA9ICZkcHVfa21zLT5tcDsKPiArCj4gKwlkZGV2ID0g ZHB1X2ttcy0+ZGV2Owo+ICsJaWYgKCFkZGV2KSB7Cj4gKwkJRFBVX0VSUk9SKCJpbnZhbGlkIGRy bV9kZXZpY2VcbiIpOwo+ICsJCWdvdG8gZXhpdDsKPiArCX0KPiArCXByaXYgPSBkZGV2LT5kZXZf cHJpdmF0ZTsKPiArCj4gKwlyYyA9IG1zbV9kc3NfZW5hYmxlX2NsayhtcC0+Y2xrX2NvbmZpZywg bXAtPm51bV9jbGssIHRydWUpOwo+ICsJaWYgKHJjKSB7Cj4gKwkJRFBVX0VSUk9SKCJjbG9jayBl bmFibGUgZmFpbGVkIHJjOiVkXG4iLCByYyk7Cj4gKwkJZ290byBleGl0Owo+ICsJfQo+ICsKPiAr CXJjID0gZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZSgmcHJpdi0+cGhhbmRsZSwgZHB1X2ttcy0+ Y29yZV9jbGllbnQsCj4gKwkJdHJ1ZSk7Cj4gKwlpZiAocmMpCj4gKwkJRFBVX0VSUk9SKCJyZXNv dXJjZSBlbmFibGUgZmFpbGVkOiAlZFxuIiwgcmMpOwo+ICsKPiArZXhpdDoKPiArCXJldHVybiBy YzsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGRwdV9wbV9vcHMg PSB7Cj4gKwlTRVRfUlVOVElNRV9QTV9PUFMoZHB1X3J1bnRpbWVfc3VzcGVuZCwgZHB1X3J1bnRp bWVfcmVzdW1lLCBOVUxMKQo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgZHB1X2R0X21hdGNoW10gPSB7Cj4gKwl7IC5jb21wYXRpYmxlID0gInFjb20sZHB1Iiwg fSwKPiArCXt9Cj4gK307Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGRwdV9kdF9tYXRjaCk7 Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkcHVfZHJpdmVyID0gewo+ICsJ LnByb2JlID0gZHB1X2Rldl9wcm9iZSwKPiArCS5yZW1vdmUgPSBkcHVfZGV2X3JlbW92ZSwKPiAr CS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSAibXNtX2RwdSIsCj4gKwkJLm9mX21hdGNoX3RhYmxl ID0gZHB1X2R0X21hdGNoLAo+ICsJCS5wbSA9ICZkcHVfcG1fb3BzLAo+ICsJfSwKPiArfTsKPiAr Cj4gK3ZvaWQgX19pbml0IG1zbV9kcHVfcmVnaXN0ZXIodm9pZCkKPiArewo+ICsJcGxhdGZvcm1f ZHJpdmVyX3JlZ2lzdGVyKCZkcHVfZHJpdmVyKTsKPiArfQo+ICsKPiArdm9pZCBfX2V4aXQgbXNt X2RwdV91bnJlZ2lzdGVyKHZvaWQpCj4gK3sKPiArCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVy KCZkcHVfZHJpdmVyKTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfa21zLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21z LmgKPiBpbmRleCBhMWMwOTEwLi4zYzY5OTIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9rbXMuaAo+IEBAIC0yMDAsNiArMjAwLDEwIEBAIHN0cnVjdCBkcHVfa21zIHsK PiAgCXN0cnVjdCBkcHVfaHdfbWRwICpod19tZHA7Cj4gIAo+ICAJYm9vbCBoYXNfZGFuZ2VyX2N0 cmw7Cj4gKwo+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKPiArCWJvb2wgcnBtX2Vu YWJsZWQ7Cj4gKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciBtcDsKPiAgfTsKPiAgCj4gIHN0cnVj dCB2c3luY19pbmZvIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+IGluZGV4IGEwZTczZWEuLjU0NzA1 MjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+IEBAIC0xNzMxLDYgKzE3MzEsNyBAQCBzdGF0 aWMgaW50IF9faW5pdCBtc21fZHJtX3JlZ2lzdGVyKHZvaWQpCj4gIAo+ICAJREJHKCJpbml0Iik7 Cj4gIAltc21fbWRwX3JlZ2lzdGVyKCk7Cj4gKwltc21fZHB1X3JlZ2lzdGVyKCk7Cj4gIAltc21f ZHNpX3JlZ2lzdGVyKCk7Cj4gIAltc21fZWRwX3JlZ2lzdGVyKCk7Cj4gIAltc21faGRtaV9yZWdp c3RlcigpOwo+IEBAIC0xNzQ3LDYgKzE3NDgsNyBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbXNtX2Ry bV91bnJlZ2lzdGVyKHZvaWQpCj4gIAltc21fZWRwX3VucmVnaXN0ZXIoKTsKPiAgCW1zbV9kc2lf dW5yZWdpc3RlcigpOwo+ICAJbXNtX21kcF91bnJlZ2lzdGVyKCk7Cj4gKwltc21fZHB1X3VucmVn aXN0ZXIoKTsKPiAgfQo+ICAKPiAgbW9kdWxlX2luaXQobXNtX2RybV9yZWdpc3Rlcik7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZHJ2LmgKPiBpbmRleCBlOGU1ZTczLi4yMmEzMDk2IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9t c21fZHJ2LmgKPiBAQCAtNjgyLDYgKzY4Miw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1zbV9kc2lf bW9kZXNldF9pbml0KHN0cnVjdCBtc21fZHNpICptc21fZHNpLAo+ICB2b2lkIF9faW5pdCBtc21f bWRwX3JlZ2lzdGVyKHZvaWQpOwo+ICB2b2lkIF9fZXhpdCBtc21fbWRwX3VucmVnaXN0ZXIodm9p ZCk7Cj4gIAo+ICt2b2lkIF9faW5pdCBtc21fZHB1X3JlZ2lzdGVyKHZvaWQpOwo+ICt2b2lkIF9f ZXhpdCBtc21fZHB1X3VucmVnaXN0ZXIodm9pZCk7Cj4gKwo+ICAjaWZkZWYgQ09ORklHX0RFQlVH X0ZTCj4gIHZvaWQgbXNtX2dlbV9kZXNjcmliZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwg c3RydWN0IHNlcV9maWxlICptKTsKPiAgdm9pZCBtc21fZ2VtX2Rlc2NyaWJlX29iamVjdHMoc3Ry dWN0IGxpc3RfaGVhZCAqbGlzdCwgc3RydWN0IHNlcV9maWxlICptKTsKPiAtLSAKPiBUaGUgUXVh bGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVy b3JhIEZvcnVtLAo+IGEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKPiAK PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEZyZWVk cmVubyBtYWlsaW5nIGxpc3QKPiBGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8KCi0t IApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgQ29k ZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5v IG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==