From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rajesh Yadav Subject: [DPU PATCH v2 04/12] drm/msm/dpu: create new platform driver for dpu device Date: Fri, 11 May 2018 20:19:30 +0530 Message-ID: <1526050178-31893-5-git-send-email-ryadav@codeaurora.org> References: <1526050178-31893-1-git-send-email-ryadav@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1526050178-31893-1-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: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, Rajesh Yadav , hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org Q3VycmVudCBNU00gZGlzcGxheSBjb250cm9sbGVyIEhXIG1hdGNoZXMgYSB0cmVlIGxpa2UKaGll cmFyY2h5IHdoZXJlIE1EU1MgdG9wIGxldmVsIHdyYXBwZXIgaXMgcGFyZW50IGRldmljZQphbmQg bWRwNS9kcHUsIGRzaSwgZHAgYXJlIGNoaWxkIGRldmljZXMuCgpFYWNoIGNoaWxkIGRldmljZSBs aWtlIG1kcDUsIGRzaSBldGMuIGhhdmUgYSBzZXBhcmF0ZSBkcml2ZXIsCmJ1dCBjdXJyZW50bHkg ZHB1IGhhbmRsaW5nIGlzIHRpZWQgdG8gYSBzaW5nbGUgZHJpdmVyIHdoaWNoCndhcyBtYW5hZ2lu ZyBib3RoIG1kc3MgYW5kIGRwdSByZXNvdXJjZXMuCgpJbm9yZGVyIHRvIGhhdmUgdGhlIGNsZWFu ZXIgb25lIHRvIG9uZSBkZXZpY2UgYW5kIGRyaXZlcgphc3NvY2lhdGlvbiwgdGhpcyBjaGFuZ2Ug YWRkcyBhIG5ldyBwbGF0Zm9ybV9kcml2ZXIgZm9yIGRwdQpjaGlsZCBkZXZpY2Ugbm9kZSB3aGlj aCBpbXBsZW1lbnRzIHRoZSBrbXMgZnVuY3Rpb25hbGl0eS4KClRoZSBkcHUgZHJpdmVyIGltcGxl bWVudHMgcnVudGltZV9wbSBzdXBwb3J0IGZvciBtYW5hZ2luZyBjbG9ja3MKYW5kIGJ1cyBiYW5k d2lkdGggZXRjLgoKQ2hhbmdlcyBpbiB2MjoKCS0gcmVtb3ZlIHJlZHVuZGFudCBwYXJhbSBjaGVj ayBmcm9tIF9kcHVfa21zX2h3X2Rlc3Ryb3kgKFNlYW4gUGF1bCkKCS0gcmVtb3ZlIGV4cGxpY2l0 IGNhbGxzIHRvIGRldm1fa2ZyZWUgKFNlYW4gUGF1bCkKCS0gbWVyZ2UgZHB1X2luaXQgaW50byBk cHVfYmluZCAoU2VhbiBQYXVsKQoJLSBtZXJnZSBkcHVfZGVzdHJveSBpbnRvIGRwdV91bmJpbmQg KFNlYW4gUGF1bCkKCS0gdXNlICVwSyBmb3Iga2VybmVsIHBvaW50ZXIgcHJpbnRpbmcgKEpvcmRh biBDcm91c2UpCgktIHJlbW92ZSBleHBsaWNpdCBkZXZtIGFsbG9jYXRpb24gZmFpbHVyZSBtZXNz YWdlIChKb3JkYW4gQ3JvdXNlKQoKU2lnbmVkLW9mZi1ieTogUmFqZXNoIFlhZGF2IDxyeWFkYXZA Y29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2tt cy5jIHwgMjM4ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmggfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL21zbS9t c21fZHJ2LmMgICAgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5o ICAgICAgICAgICB8ICAgMyArCiA0IGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCA1 MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKaW5k ZXggZTRhYjc1My4uODVmM2RiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9r bXMuYwpAQCAtMTAzMCwxNiArMTAzMCwxMiBAQCBzdGF0aWMgbG9uZyBkcHVfa21zX3JvdW5kX3Bp eGNsayhzdHJ1Y3QgbXNtX2ttcyAqa21zLCB1bnNpZ25lZCBsb25nIHJhdGUsCiAJcmV0dXJuIHJh dGU7CiB9CiAKLXN0YXRpYyB2b2lkIF9kcHVfa21zX2h3X2Rlc3Ryb3koc3RydWN0IGRwdV9rbXMg KmRwdV9rbXMsCi0JCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCitzdGF0aWMgdm9pZCBf ZHB1X2ttc19od19kZXN0cm95KHN0cnVjdCBkcHVfa21zICpkcHVfa21zKQogewogCXN0cnVjdCBk cm1fZGV2aWNlICpkZXY7CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKIAlpbnQgaTsK IAotCWlmICghZHB1X2ttcyB8fCAhcGRldikKLQkJcmV0dXJuOwotCiAJZGV2ID0gZHB1X2ttcy0+ ZGV2OwogCWlmICghZGV2KQogCQlyZXR1cm47CkBAIC0xMDkxLDE1ICsxMDg3LDE1IEBAIHN0YXRp YyB2b2lkIF9kcHVfa21zX2h3X2Rlc3Ryb3koc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMsCiAJZHB1 X2ttcy0+Y29yZV9jbGllbnQgPSBOVUxMOwogCiAJaWYgKGRwdV9rbXMtPnZiaWZbVkJJRl9OUlRd KQotCQltc21faW91bm1hcChwZGV2LCBkcHVfa21zLT52YmlmW1ZCSUZfTlJUXSk7CisJCW1zbV9p b3VubWFwKGRwdV9rbXMtPnBkZXYsIGRwdV9rbXMtPnZiaWZbVkJJRl9OUlRdKTsKIAlkcHVfa21z LT52YmlmW1ZCSUZfTlJUXSA9IE5VTEw7CiAKIAlpZiAoZHB1X2ttcy0+dmJpZltWQklGX1JUXSkK LQkJbXNtX2lvdW5tYXAocGRldiwgZHB1X2ttcy0+dmJpZltWQklGX1JUXSk7CisJCW1zbV9pb3Vu bWFwKGRwdV9rbXMtPnBkZXYsIGRwdV9rbXMtPnZiaWZbVkJJRl9SVF0pOwogCWRwdV9rbXMtPnZi aWZbVkJJRl9SVF0gPSBOVUxMOwogCiAJaWYgKGRwdV9rbXMtPm1taW8pCi0JCW1zbV9pb3VubWFw KHBkZXYsIGRwdV9rbXMtPm1taW8pOworCQltc21faW91bm1hcChkcHVfa21zLT5wZGV2LCBkcHVf a21zLT5tbWlvKTsKIAlkcHVfa21zLT5tbWlvID0gTlVMTDsKIAogCWRwdV9yZWdfZG1hX2RlaW5p dCgpOwpAQCAtMTE3Miw4ICsxMTY4LDYgQEAgaW50IGRwdV9rbXNfbW11X2F0dGFjaChzdHJ1Y3Qg ZHB1X2ttcyAqZHB1X2ttcywgYm9vbCBzZWN1cmVfb25seSkKIHN0YXRpYyB2b2lkIGRwdV9rbXNf ZGVzdHJveShzdHJ1Y3QgbXNtX2ttcyAqa21zKQogewogCXN0cnVjdCBkcHVfa21zICpkcHVfa21z OwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7Ci0Jc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxh dGZvcm1kZXY7CiAKIAlpZiAoIWttcykgewogCQlEUFVfRVJST1IoImludmFsaWQga21zXG4iKTsK QEAgLTExODEsMjAgKzExNzUsNyBAQCBzdGF0aWMgdm9pZCBkcHVfa21zX2Rlc3Ryb3koc3RydWN0 IG1zbV9rbXMgKmttcykKIAl9CiAKIAlkcHVfa21zID0gdG9fZHB1X2ttcyhrbXMpOwotCWRldiA9 IGRwdV9rbXMtPmRldjsKLQlpZiAoIWRldikgewotCQlEUFVfRVJST1IoImludmFsaWQgZGV2aWNl XG4iKTsKLQkJcmV0dXJuOwotCX0KLQotCXBsYXRmb3JtZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNl KGRldi0+ZGV2KTsKLQlpZiAoIXBsYXRmb3JtZGV2KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBw bGF0Zm9ybSBkZXZpY2VcbiIpOwotCQlyZXR1cm47Ci0JfQotCi0JX2RwdV9rbXNfaHdfZGVzdHJv eShkcHVfa21zLCBwbGF0Zm9ybWRldik7Ci0Ja2ZyZWUoZHB1X2ttcyk7CisJX2RwdV9rbXNfaHdf ZGVzdHJveShkcHVfa21zKTsKIH0KIAogc3RhdGljIHZvaWQgZHB1X2ttc19wcmVjbG9zZShzdHJ1 Y3QgbXNtX2ttcyAqa21zLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCkBAIC0xNTUwLDcgKzE1MzEs NiBAQCBzdGF0aWMgaW50IGRwdV9rbXNfaHdfaW5pdChzdHJ1Y3QgbXNtX2ttcyAqa21zKQogCXN0 cnVjdCBkcHVfa21zICpkcHVfa21zOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAJc3RydWN0 IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKLQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0Zm9y bWRldjsKIAlpbnQgaSwgcmMgPSAtRUlOVkFMOwogCiAJaWYgKCFrbXMpIHsKQEAgLTE1NjUsMzQg KzE1NDUsMjggQEAgc3RhdGljIGludCBkcHVfa21zX2h3X2luaXQoc3RydWN0IG1zbV9rbXMgKmtt cykKIAkJZ290byBlbmQ7CiAJfQogCi0JcGxhdGZvcm1kZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2Uo ZGV2LT5kZXYpOwotCWlmICghcGxhdGZvcm1kZXYpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBs YXRmb3JtIGRldmljZVxuIik7Ci0JCWdvdG8gZW5kOwotCQl9Ci0KIAlwcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKIAlpZiAoIXByaXYpIHsKIAkJRFBVX0VSUk9SKCJpbnZhbGlkIHByaXZhdGUgZGF0 YVxuIik7CiAJCWdvdG8gZW5kOwogCX0KIAotCWRwdV9rbXMtPm1taW8gPSBtc21faW9yZW1hcChw bGF0Zm9ybWRldiwgIm1kcF9waHlzIiwgIm1kcF9waHlzIik7CisJZHB1X2ttcy0+bW1pbyA9IG1z bV9pb3JlbWFwKGRwdV9rbXMtPnBkZXYsICJtZHBfcGh5cyIsICJtZHBfcGh5cyIpOwogCWlmIChJ U19FUlIoZHB1X2ttcy0+bW1pbykpIHsKIAkJcmMgPSBQVFJfRVJSKGRwdV9rbXMtPm1taW8pOwog CQlEUFVfRVJST1IoIm1kcCByZWdpc3RlciBtZW1vcnkgbWFwIGZhaWxlZDogJWRcbiIsIHJjKTsK IAkJZHB1X2ttcy0+bW1pbyA9IE5VTEw7CiAJCWdvdG8gZXJyb3I7CiAJfQotCURSTV9JTkZPKCJt YXBwZWQgbWRwIGFkZHJlc3Mgc3BhY2UgQCVwXG4iLCBkcHVfa21zLT5tbWlvKTsKLQlkcHVfa21z LT5tbWlvX2xlbiA9IG1zbV9pb21hcF9zaXplKHBsYXRmb3JtZGV2LCAibWRwX3BoeXMiKTsKKwlE Uk1fREVCVUcoIm1hcHBlZCBkcHUgYWRkcmVzcyBzcGFjZSBAJXBLXG4iLCBkcHVfa21zLT5tbWlv KTsKKwlkcHVfa21zLT5tbWlvX2xlbiA9IG1zbV9pb21hcF9zaXplKGRwdV9rbXMtPnBkZXYsICJt ZHBfcGh5cyIpOwogCiAJcmMgPSBkcHVfZGJnX3JlZ19yZWdpc3Rlcl9iYXNlKERQVV9EQkdfTkFN RSwgZHB1X2ttcy0+bW1pbywKIAkJCWRwdV9rbXMtPm1taW9fbGVuKTsKIAlpZiAocmMpCiAJCURQ VV9FUlJPUigiZGJnIGJhc2UgcmVnaXN0ZXIga21zIGZhaWxlZDogJWRcbiIsIHJjKTsKIAotCWRw dV9rbXMtPnZiaWZbVkJJRl9SVF0gPSBtc21faW9yZW1hcChwbGF0Zm9ybWRldiwgInZiaWZfcGh5 cyIsCisJZHB1X2ttcy0+dmJpZltWQklGX1JUXSA9IG1zbV9pb3JlbWFwKGRwdV9rbXMtPnBkZXYs ICJ2YmlmX3BoeXMiLAogCQkJCQkJCQkidmJpZl9waHlzIik7CiAJaWYgKElTX0VSUihkcHVfa21z LT52YmlmW1ZCSUZfUlRdKSkgewogCQlyYyA9IFBUUl9FUlIoZHB1X2ttcy0+dmJpZltWQklGX1JU XSk7CkBAIC0xNjAwLDIwICsxNTc0LDIwIEBAIHN0YXRpYyBpbnQgZHB1X2ttc19od19pbml0KHN0 cnVjdCBtc21fa21zICprbXMpCiAJCWRwdV9rbXMtPnZiaWZbVkJJRl9SVF0gPSBOVUxMOwogCQln b3RvIGVycm9yOwogCX0KLQlkcHVfa21zLT52YmlmX2xlbltWQklGX1JUXSA9IG1zbV9pb21hcF9z aXplKHBsYXRmb3JtZGV2LAorCWRwdV9rbXMtPnZiaWZfbGVuW1ZCSUZfUlRdID0gbXNtX2lvbWFw X3NpemUoZHB1X2ttcy0+cGRldiwKIAkJCQkJCQkJInZiaWZfcGh5cyIpOwogCXJjID0gZHB1X2Ri Z19yZWdfcmVnaXN0ZXJfYmFzZSgidmJpZl9ydCIsIGRwdV9rbXMtPnZiaWZbVkJJRl9SVF0sCiAJ CQkJZHB1X2ttcy0+dmJpZl9sZW5bVkJJRl9SVF0pOwogCWlmIChyYykKIAkJRFBVX0VSUk9SKCJk YmcgYmFzZSByZWdpc3RlciB2YmlmX3J0IGZhaWxlZDogJWRcbiIsIHJjKTsKIAotCWRwdV9rbXMt PnZiaWZbVkJJRl9OUlRdID0gbXNtX2lvcmVtYXAocGxhdGZvcm1kZXYsICJ2YmlmX25ydF9waHlz IiwKKwlkcHVfa21zLT52YmlmW1ZCSUZfTlJUXSA9IG1zbV9pb3JlbWFwKGRwdV9rbXMtPnBkZXYs ICJ2YmlmX25ydF9waHlzIiwKIAkJCQkJCQkJInZiaWZfbnJ0X3BoeXMiKTsKIAlpZiAoSVNfRVJS KGRwdV9rbXMtPnZiaWZbVkJJRl9OUlRdKSkgewogCQlkcHVfa21zLT52YmlmW1ZCSUZfTlJUXSA9 IE5VTEw7CiAJCURQVV9ERUJVRygiVkJJRiBOUlQgaXMgbm90IGRlZmluZWQiKTsKIAl9IGVsc2Ug ewotCQlkcHVfa21zLT52YmlmX2xlbltWQklGX05SVF0gPSBtc21faW9tYXBfc2l6ZShwbGF0Zm9y bWRldiwKKwkJZHB1X2ttcy0+dmJpZl9sZW5bVkJJRl9OUlRdID0gbXNtX2lvbWFwX3NpemUoZHB1 X2ttcy0+cGRldiwKIAkJCQkJCQkidmJpZl9ucnRfcGh5cyIpOwogCQlyYyA9IGRwdV9kYmdfcmVn X3JlZ2lzdGVyX2Jhc2UoInZiaWZfbnJ0IiwKIAkJCQlkcHVfa21zLT52YmlmW1ZCSUZfTlJUXSwK QEAgLTE2MjQsMTMgKzE1OTgsMTMgQEAgc3RhdGljIGludCBkcHVfa21zX2h3X2luaXQoc3RydWN0 IG1zbV9rbXMgKmttcykKIAl9CiAKICNpZmRlZiBDT05GSUdfQ0hST01FX1JFR0RNQQotCWRwdV9r bXMtPnJlZ19kbWEgPSBtc21faW9yZW1hcChwbGF0Zm9ybWRldiwgInJlZ2RtYV9waHlzIiwKKwlk cHVfa21zLT5yZWdfZG1hID0gbXNtX2lvcmVtYXAoZHB1X2ttcy0+cGRldiwgInJlZ2RtYV9waHlz IiwKIAkJCQkJCQkJInJlZ2RtYV9waHlzIik7CiAJaWYgKElTX0VSUihkcHVfa21zLT5yZWdfZG1h KSkgewogCQlkcHVfa21zLT5yZWdfZG1hID0gTlVMTDsKIAkJRFBVX0RFQlVHKCJSRUdfRE1BIGlz IG5vdCBkZWZpbmVkIik7CiAJfSBlbHNlIHsKLQkJZHB1X2ttcy0+cmVnX2RtYV9sZW4gPSBtc21f aW9tYXBfc2l6ZShwbGF0Zm9ybWRldiwKKwkJZHB1X2ttcy0+cmVnX2RtYV9sZW4gPSBtc21faW9t YXBfc2l6ZShkcHVfa21zLT5wZGV2LAogCQkJCQkJCQkicmVnZG1hX3BoeXMiKTsKIAkJcmMgPSAg ZHB1X2RiZ19yZWdfcmVnaXN0ZXJfYmFzZSgicmVnX2RtYSIsCiAJCQkJZHB1X2ttcy0+cmVnX2Rt YSwKQEAgLTE4MDQsMTQgKzE3NzgsMTMgQEAgc3RhdGljIGludCBkcHVfa21zX2h3X2luaXQoc3Ry dWN0IG1zbV9rbXMgKmttcykKIAlkcHVfcG93ZXJfcmVzb3VyY2VfZW5hYmxlKCZwcml2LT5waGFu ZGxlLCBkcHVfa21zLT5jb3JlX2NsaWVudCwgZmFsc2UpOwogCXBtX3J1bnRpbWVfcHV0X3N5bmMo ZGV2LT5kZXYpOwogZXJyb3I6Ci0JX2RwdV9rbXNfaHdfZGVzdHJveShkcHVfa21zLCBwbGF0Zm9y bWRldik7CisJX2RwdV9rbXNfaHdfZGVzdHJveShkcHVfa21zKTsKIGVuZDoKIAlyZXR1cm4gcmM7 CiB9CiAKIHN0cnVjdCBtc21fa21zICpkcHVfa21zX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIHsKLQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNl KGRldi0+ZGV2KTsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2OwogCXN0cnVjdCBkcHVf a21zICpkcHVfa21zOwogCWludCBpcnE7CkBAIC0xODIxLDI0ICsxNzk0LDE4NyBAQCBzdHJ1Y3Qg bXNtX2ttcyAqZHB1X2ttc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCXJldHVybiBF UlJfUFRSKC1FSU5WQUwpOwogCX0KIAotCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7 CisJcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJZHB1X2ttcyA9IHRvX2RwdV9rbXMocHJpdi0+ a21zKTsKKworCWlycSA9IGlycV9vZl9wYXJzZV9hbmRfbWFwKGRwdV9rbXMtPnBkZXYtPmRldi5v Zl9ub2RlLCAwKTsKIAlpZiAoaXJxIDwgMCkgewogCQlEUFVfRVJST1IoImZhaWxlZCB0byBnZXQg aXJxOiAlZFxuIiwgaXJxKTsKIAkJcmV0dXJuIEVSUl9QVFIoaXJxKTsKIAl9CisJZHB1X2ttcy0+ YmFzZS5pcnEgPSBpcnE7CiAKLQlwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlyZXR1cm4gJmRw dV9rbXMtPmJhc2U7Cit9CiAKLQlkcHVfa21zID0ga3phbGxvYyhzaXplb2YoKmRwdV9rbXMpLCBH RlBfS0VSTkVMKTsKLQlpZiAoIWRwdV9rbXMpIHsKLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gYWxs b2NhdGUgZHB1IGttc1xuIik7Ci0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworc3RhdGljIGlu dCBkcHVfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9p ZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IGRldl9nZXRfZHJ2ZGF0YSht YXN0ZXIpOworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZp Y2UoZGV2KTsKKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGRldi0+ZGV2X3ByaXZh dGU7CisJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7CisJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIg Km1wOworCWludCByZXQgPSAwOworCisJZHB1X2ttcyA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2 LCBzaXplb2YoKmRwdV9rbXMpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWRwdV9rbXMpCisJCXJldHVy biAtRU5PTUVNOworCisJbXAgPSAmZHB1X2ttcy0+bXA7CisJcmV0ID0gbXNtX2Rzc19wYXJzZV9j bG9jayhwZGV2LCBtcCk7CisJaWYgKHJldCkgeworCQlEUFVfRVJST1IoImZhaWxlZCB0byBwYXJz ZSBjbG9ja3MsIHJldD0lZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBt c21fZHNzX2dldF9jbGsoJnBkZXYtPmRldiwgbXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrKTsK KwlpZiAocmV0KSB7CisJCXByX2VycigiZmFpbGVkIHRvIGdldCBjbG9ja3MsIHJldD0lZFxuIiwg cmV0KTsKKwkJZ290byBjbGtfZ2V0X2Vycm9yOworCX0KKworCXJldCA9IG1zbV9kc3NfY2xrX3Nl dF9yYXRlKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Nsayk7CisJaWYgKHJldCkgeworCQlwcl9l cnIoImZhaWxlZCB0byBzZXQgY2xvY2sgcmF0ZSwgcmV0PSVkXG4iLCByZXQpOworCQlnb3RvIGNs a19yYXRlX2Vycm9yOwogCX0KIAorCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGRwdV9rbXMp OworCiAJbXNtX2ttc19pbml0KCZkcHVfa21zLT5iYXNlLCAma21zX2Z1bmNzKTsKLQlkcHVfa21z LT5kZXYgPSBkZXY7Ci0JZHB1X2ttcy0+YmFzZS5pcnEgPSBpcnE7CisJZHB1X2ttcy0+ZGV2ID0g ZGRldjsKKwlkcHVfa21zLT5wZGV2ID0gcGRldjsKIAotCXJldHVybiAmZHB1X2ttcy0+YmFzZTsK KwlwbV9ydW50aW1lX2VuYWJsZSgmcGRldi0+ZGV2KTsKKwlkcHVfa21zLT5ycG1fZW5hYmxlZCA9 IHRydWU7CisKKwlwcml2LT5rbXMgPSAmZHB1X2ttcy0+YmFzZTsKKwlyZXR1cm4gcmV0OworCitj bGtfcmF0ZV9lcnJvcjoKKwltc21fZHNzX3B1dF9jbGsobXAtPmNsa19jb25maWcsIG1wLT5udW1f Y2xrKTsKK2Nsa19nZXRfZXJyb3I6CisJZGV2bV9rZnJlZSgmcGRldi0+ZGV2LCBtcC0+Y2xrX2Nv bmZpZyk7CisJbXAtPm51bV9jbGsgPSAwOworCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyB2b2lk IGRwdV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZv aWQgKmRhdGEpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3Jt X2RldmljZShkZXYpOworCXN0cnVjdCBkcHVfa21zICpkcHVfa21zID0gcGxhdGZvcm1fZ2V0X2Ry dmRhdGEocGRldik7CisJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wID0gJmRwdV9rbXMtPm1w OworCisJbXNtX2Rzc19wdXRfY2xrKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Nsayk7CisJZGV2 bV9rZnJlZSgmcGRldi0+ZGV2LCBtcC0+Y2xrX2NvbmZpZyk7CisJbXAtPm51bV9jbGsgPSAwOwor CisJaWYgKGRwdV9rbXMtPnJwbV9lbmFibGVkKQorCQlwbV9ydW50aW1lX2Rpc2FibGUoJnBkZXYt PmRldik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBkcHVfb3BzID0g eworCS5iaW5kICAgPSBkcHVfYmluZCwKKwkudW5iaW5kID0gZHB1X3VuYmluZCwKK307CisKK3N0 YXRpYyBpbnQgZHB1X2Rldl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQorewor CXJldHVybiBjb21wb25lbnRfYWRkKCZwZGV2LT5kZXYsICZkcHVfb3BzKTsKK30KKworc3RhdGlj IGludCBkcHVfZGV2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCWNv bXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJmRwdV9vcHMpOworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IGRwdV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQoreworCWludCBy YyA9IC0xOworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZp Y2UoZGV2KTsKKwlzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcyA9IHBsYXRmb3JtX2dldF9kcnZkYXRh KHBkZXYpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZGV2OworCXN0cnVjdCBtc21fZHJtX3ByaXZh dGUgKnByaXY7CisJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wID0gJmRwdV9rbXMtPm1wOwor CisJZGRldiA9IGRwdV9rbXMtPmRldjsKKwlpZiAoIWRkZXYpIHsKKwkJRFBVX0VSUk9SKCJpbnZh bGlkIGRybV9kZXZpY2VcbiIpOworCQlnb3RvIGV4aXQ7CisJfQorCXByaXYgPSBkZGV2LT5kZXZf cHJpdmF0ZTsKKworCXJjID0gZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZSgmcHJpdi0+cGhhbmRs ZSwKKwkJZHB1X2ttcy0+Y29yZV9jbGllbnQsIGZhbHNlKTsKKwlpZiAocmMpCisJCURQVV9FUlJP UigicmVzb3VyY2UgZGlzYWJsZSBmYWlsZWQ6ICVkXG4iLCByYyk7CisKKwlyYyA9IG1zbV9kc3Nf ZW5hYmxlX2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGssIGZhbHNlKTsKKwlpZiAocmMp CisJCURQVV9FUlJPUigiY2xvY2sgZGlzYWJsZSBmYWlsZWQgcmM6JWRcbiIsIHJjKTsKKworZXhp dDoKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgZHB1X3J1bnRpbWVfcmVzdW1lKHN0cnVj dCBkZXZpY2UgKmRldikKK3sKKwlpbnQgcmMgPSAtMTsKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7CisJc3RydWN0IGRwdV9rbXMgKmRwdV9r bXMgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGRl djsKKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2OworCXN0cnVjdCBkc3NfbW9kdWxlX3Bv d2VyICptcCA9ICZkcHVfa21zLT5tcDsKKworCWRkZXYgPSBkcHVfa21zLT5kZXY7CisJaWYgKCFk ZGV2KSB7CisJCURQVV9FUlJPUigiaW52YWxpZCBkcm1fZGV2aWNlXG4iKTsKKwkJZ290byBleGl0 OworCX0KKwlwcml2ID0gZGRldi0+ZGV2X3ByaXZhdGU7CisKKwlyYyA9IG1zbV9kc3NfZW5hYmxl X2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGssIHRydWUpOworCWlmIChyYykgeworCQlE UFVfRVJST1IoImNsb2NrIGVuYWJsZSBmYWlsZWQgcmM6JWRcbiIsIHJjKTsKKwkJZ290byBleGl0 OworCX0KKworCXJjID0gZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZSgmcHJpdi0+cGhhbmRsZSwg ZHB1X2ttcy0+Y29yZV9jbGllbnQsCisJCXRydWUpOworCWlmIChyYykKKwkJRFBVX0VSUk9SKCJy ZXNvdXJjZSBlbmFibGUgZmFpbGVkOiAlZFxuIiwgcmMpOworCitleGl0OgorCXJldHVybiByYzsK K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGRwdV9wbV9vcHMgPSB7CisJU0VU X1JVTlRJTUVfUE1fT1BTKGRwdV9ydW50aW1lX3N1c3BlbmQsIGRwdV9ydW50aW1lX3Jlc3VtZSwg TlVMTCkKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRwdV9kdF9tYXRj aFtdID0geworCXsgLmNvbXBhdGlibGUgPSAicWNvbSxkcHUiLCB9LAorCXt9Cit9OworTU9EVUxF X0RFVklDRV9UQUJMRShvZiwgZHB1X2R0X21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9y bV9kcml2ZXIgZHB1X2RyaXZlciA9IHsKKwkucHJvYmUgPSBkcHVfZGV2X3Byb2JlLAorCS5yZW1v dmUgPSBkcHVfZGV2X3JlbW92ZSwKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJtc21fZHB1IiwK KwkJLm9mX21hdGNoX3RhYmxlID0gZHB1X2R0X21hdGNoLAorCQkucG0gPSAmZHB1X3BtX29wcywK Kwl9LAorfTsKKwordm9pZCBfX2luaXQgbXNtX2RwdV9yZWdpc3Rlcih2b2lkKQoreworCXBsYXRm b3JtX2RyaXZlcl9yZWdpc3RlcigmZHB1X2RyaXZlcik7Cit9CisKK3ZvaWQgX19leGl0IG1zbV9k cHVfdW5yZWdpc3Rlcih2b2lkKQoreworCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZkcHVf ZHJpdmVyKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaAppbmRleCBh MWMwOTEwLi4zYzY5OTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfa21zLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5o CkBAIC0yMDAsNiArMjAwLDEwIEBAIHN0cnVjdCBkcHVfa21zIHsKIAlzdHJ1Y3QgZHB1X2h3X21k cCAqaHdfbWRwOwogCiAJYm9vbCBoYXNfZGFuZ2VyX2N0cmw7CisKKwlzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2OworCWJvb2wgcnBtX2VuYWJsZWQ7CisJc3RydWN0IGRzc19tb2R1bGVfcG93 ZXIgbXA7CiB9OwogCiBzdHJ1Y3QgdnN5bmNfaW5mbyB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCmluZGV4 IGEwZTczZWEuLjU0NzA1MjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Ry di5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCkBAIC0xNzMxLDYgKzE3MzEs NyBAQCBzdGF0aWMgaW50IF9faW5pdCBtc21fZHJtX3JlZ2lzdGVyKHZvaWQpCiAKIAlEQkcoImlu aXQiKTsKIAltc21fbWRwX3JlZ2lzdGVyKCk7CisJbXNtX2RwdV9yZWdpc3RlcigpOwogCW1zbV9k c2lfcmVnaXN0ZXIoKTsKIAltc21fZWRwX3JlZ2lzdGVyKCk7CiAJbXNtX2hkbWlfcmVnaXN0ZXIo KTsKQEAgLTE3NDcsNiArMTc0OCw3IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBtc21fZHJtX3VucmVn aXN0ZXIodm9pZCkKIAltc21fZWRwX3VucmVnaXN0ZXIoKTsKIAltc21fZHNpX3VucmVnaXN0ZXIo KTsKIAltc21fbWRwX3VucmVnaXN0ZXIoKTsKKwltc21fZHB1X3VucmVnaXN0ZXIoKTsKIH0KIAog bW9kdWxlX2luaXQobXNtX2RybV9yZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCmluZGV4IGU4 ZTVlNzMuLjIyYTMwOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCkBAIC02ODIsNiArNjgyLDkgQEAg c3RhdGljIGlubGluZSBpbnQgbXNtX2RzaV9tb2Rlc2V0X2luaXQoc3RydWN0IG1zbV9kc2kgKm1z bV9kc2ksCiB2b2lkIF9faW5pdCBtc21fbWRwX3JlZ2lzdGVyKHZvaWQpOwogdm9pZCBfX2V4aXQg bXNtX21kcF91bnJlZ2lzdGVyKHZvaWQpOwogCit2b2lkIF9faW5pdCBtc21fZHB1X3JlZ2lzdGVy KHZvaWQpOwordm9pZCBfX2V4aXQgbXNtX2RwdV91bnJlZ2lzdGVyKHZvaWQpOworCiAjaWZkZWYg Q09ORklHX0RFQlVHX0ZTCiB2b2lkIG1zbV9nZW1fZGVzY3JpYmUoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHN0cnVjdCBzZXFfZmlsZSAqbSk7CiB2b2lkIG1zbV9nZW1fZGVzY3JpYmVfb2Jq ZWN0cyhzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pOwotLSAKVGhl IFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2Rl IEF1cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5v IG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==