From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rajesh Yadav Subject: [DPU PATCH 04/11] drm/msm/dpu: create new platform driver for dpu device Date: Thu, 10 May 2018 13:59:38 +0530 Message-ID: <1525940985-30428-5-git-send-email-ryadav@codeaurora.org> References: <1525940985-30428-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: <1525940985-30428-1-git-send-email-ryadav@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Cc: Rajesh Yadav , hoegsberg@chromium.org List-Id: linux-arm-msm@vger.kernel.org Q3VycmVudCBNU00gZGlzcGxheSBjb250cm9sbGVyIEhXIG1hdGNoZXMgYSB0cmVlIGxpa2UKaGll cmFyY2h5IHdoZXJlIE1EU1MgdG9wIGxldmVsIHdyYXBwZXIgaXMgcGFyZW50IGRldmljZQphbmQg bWRwNS9kcHUsIGRzaSwgZHAgYXJlIGNoaWxkIGRldmljZXMuCgpFYWNoIGNoaWxkIGRldmljZSBs aWtlIG1kcDUsIGRzaSBldGMuIGhhdmUgYSBzZXBhcmF0ZSBkcml2ZXIsCmJ1dCBjdXJyZW50bHkg ZHB1IGhhbmRsaW5nIGlzIHRpZWQgdG8gYSBzaW5nbGUgZHJpdmVyIHdoaWNoCndhcyBtYW5hZ2lu ZyBib3RoIG1kc3MgYW5kIGRwdSByZXNvdXJjZXMuCgpJbm9yZGVyIHRvIGhhdmUgdGhlIGNsZWFu ZXIgb25lIHRvIG9uZSBkZXZpY2UgYW5kIGRyaXZlcgphc3NvY2lhdGlvbiwgdGhpcyBjaGFuZ2Ug YWRkcyBhIG5ldyBwbGF0Zm9ybV9kcml2ZXIgZm9yIGRwdQpjaGlsZCBkZXZpY2Ugbm9kZSB3aGlj aCBpbXBsZW1lbnRzIHRoZSBrbXMgZnVuY3Rpb25hbGl0eS4KClRoZSBkcHUgZHJpdmVyIGltcGxl bWVudHMgcnVudGltZV9wbSBzdXBwb3J0IGZvciBtYW5hZ2luZyBjbG9ja3MKYW5kIGJ1cyBiYW5k d2lkdGggZXRjLgoKU2lnbmVkLW9mZi1ieTogUmFqZXNoIFlhZGF2IDxyeWFkYXZAY29kZWF1cm9y YS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jIHwgMjUx ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfa21zLmggfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMg ICAgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oICAgICAgICAg ICB8ICAgMyArCiA0IGZpbGVzIGNoYW5nZWQsIDIxNCBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21z LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKaW5kZXggZTRhYjc1 My4uMmNkNTFmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYwpAQCAt MTAzMCwxNCArMTAzMCwxMyBAQCBzdGF0aWMgbG9uZyBkcHVfa21zX3JvdW5kX3BpeGNsayhzdHJ1 Y3QgbXNtX2ttcyAqa21zLCB1bnNpZ25lZCBsb25nIHJhdGUsCiAJcmV0dXJuIHJhdGU7CiB9CiAK LXN0YXRpYyB2b2lkIF9kcHVfa21zX2h3X2Rlc3Ryb3koc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMs Ci0JCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCitzdGF0aWMgdm9pZCBfZHB1X2ttc19o d19kZXN0cm95KHN0cnVjdCBkcHVfa21zICpkcHVfa21zKQogewogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXY7CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKIAlpbnQgaTsKIAotCWlmICgh ZHB1X2ttcyB8fCAhcGRldikKKwlpZiAoIWRwdV9rbXMpCiAJCXJldHVybjsKIAogCWRldiA9IGRw dV9rbXMtPmRldjsKQEAgLTEwOTEsMTUgKzEwOTAsMTUgQEAgc3RhdGljIHZvaWQgX2RwdV9rbXNf aHdfZGVzdHJveShzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcywKIAlkcHVfa21zLT5jb3JlX2NsaWVu dCA9IE5VTEw7CiAKIAlpZiAoZHB1X2ttcy0+dmJpZltWQklGX05SVF0pCi0JCW1zbV9pb3VubWFw KHBkZXYsIGRwdV9rbXMtPnZiaWZbVkJJRl9OUlRdKTsKKwkJbXNtX2lvdW5tYXAoZHB1X2ttcy0+ cGRldiwgZHB1X2ttcy0+dmJpZltWQklGX05SVF0pOwogCWRwdV9rbXMtPnZiaWZbVkJJRl9OUlRd ID0gTlVMTDsKIAogCWlmIChkcHVfa21zLT52YmlmW1ZCSUZfUlRdKQotCQltc21faW91bm1hcChw ZGV2LCBkcHVfa21zLT52YmlmW1ZCSUZfUlRdKTsKKwkJbXNtX2lvdW5tYXAoZHB1X2ttcy0+cGRl diwgZHB1X2ttcy0+dmJpZltWQklGX1JUXSk7CiAJZHB1X2ttcy0+dmJpZltWQklGX1JUXSA9IE5V TEw7CiAKIAlpZiAoZHB1X2ttcy0+bW1pbykKLQkJbXNtX2lvdW5tYXAocGRldiwgZHB1X2ttcy0+ bW1pbyk7CisJCW1zbV9pb3VubWFwKGRwdV9rbXMtPnBkZXYsIGRwdV9rbXMtPm1taW8pOwogCWRw dV9rbXMtPm1taW8gPSBOVUxMOwogCiAJZHB1X3JlZ19kbWFfZGVpbml0KCk7CkBAIC0xMTcyLDgg KzExNzEsNiBAQCBpbnQgZHB1X2ttc19tbXVfYXR0YWNoKHN0cnVjdCBkcHVfa21zICpkcHVfa21z LCBib29sIHNlY3VyZV9vbmx5KQogc3RhdGljIHZvaWQgZHB1X2ttc19kZXN0cm95KHN0cnVjdCBt c21fa21zICprbXMpCiB7CiAJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7Ci0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldjsKLQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0Zm9ybWRldjsKIAogCWlm ICgha21zKSB7CiAJCURQVV9FUlJPUigiaW52YWxpZCBrbXNcbiIpOwpAQCAtMTE4MSwyMCArMTE3 OCw3IEBAIHN0YXRpYyB2b2lkIGRwdV9rbXNfZGVzdHJveShzdHJ1Y3QgbXNtX2ttcyAqa21zKQog CX0KIAogCWRwdV9rbXMgPSB0b19kcHVfa21zKGttcyk7Ci0JZGV2ID0gZHB1X2ttcy0+ZGV2Owot CWlmICghZGV2KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBkZXZpY2VcbiIpOwotCQlyZXR1cm47 Ci0JfQotCi0JcGxhdGZvcm1kZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2UoZGV2LT5kZXYpOwotCWlm ICghcGxhdGZvcm1kZXYpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBsYXRmb3JtIGRldmljZVxu Iik7Ci0JCXJldHVybjsKLQl9Ci0KLQlfZHB1X2ttc19od19kZXN0cm95KGRwdV9rbXMsIHBsYXRm b3JtZGV2KTsKLQlrZnJlZShkcHVfa21zKTsKKwlfZHB1X2ttc19od19kZXN0cm95KGRwdV9rbXMp OwogfQogCiBzdGF0aWMgdm9pZCBkcHVfa21zX3ByZWNsb3NlKHN0cnVjdCBtc21fa21zICprbXMs IHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKQEAgLTE1NTAsNyArMTUzNCw2IEBAIHN0YXRpYyBpbnQg ZHB1X2ttc19od19pbml0KHN0cnVjdCBtc21fa21zICprbXMpCiAJc3RydWN0IGRwdV9rbXMgKmRw dV9rbXM7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRl ICpwcml2OwotCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBsYXRmb3JtZGV2OwogCWludCBpLCBy YyA9IC1FSU5WQUw7CiAKIAlpZiAoIWttcykgewpAQCAtMTU2NSwzNCArMTU0OCwyOCBAQCBzdGF0 aWMgaW50IGRwdV9rbXNfaHdfaW5pdChzdHJ1Y3QgbXNtX2ttcyAqa21zKQogCQlnb3RvIGVuZDsK IAl9CiAKLQlwbGF0Zm9ybWRldiA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYtPmRldik7Ci0JaWYg KCFwbGF0Zm9ybWRldikgewotCQlEUFVfRVJST1IoImludmFsaWQgcGxhdGZvcm0gZGV2aWNlXG4i KTsKLQkJZ290byBlbmQ7Ci0JCX0KLQogCXByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCWlmICgh cHJpdikgewogCQlEUFVfRVJST1IoImludmFsaWQgcHJpdmF0ZSBkYXRhXG4iKTsKIAkJZ290byBl bmQ7CiAJfQogCi0JZHB1X2ttcy0+bW1pbyA9IG1zbV9pb3JlbWFwKHBsYXRmb3JtZGV2LCAibWRw X3BoeXMiLCAibWRwX3BoeXMiKTsKKwlkcHVfa21zLT5tbWlvID0gbXNtX2lvcmVtYXAoZHB1X2tt cy0+cGRldiwgIm1kcF9waHlzIiwgIm1kcF9waHlzIik7CiAJaWYgKElTX0VSUihkcHVfa21zLT5t bWlvKSkgewogCQlyYyA9IFBUUl9FUlIoZHB1X2ttcy0+bW1pbyk7CiAJCURQVV9FUlJPUigibWRw IHJlZ2lzdGVyIG1lbW9yeSBtYXAgZmFpbGVkOiAlZFxuIiwgcmMpOwogCQlkcHVfa21zLT5tbWlv ID0gTlVMTDsKIAkJZ290byBlcnJvcjsKIAl9Ci0JRFJNX0lORk8oIm1hcHBlZCBtZHAgYWRkcmVz cyBzcGFjZSBAJXBcbiIsIGRwdV9rbXMtPm1taW8pOwotCWRwdV9rbXMtPm1taW9fbGVuID0gbXNt X2lvbWFwX3NpemUocGxhdGZvcm1kZXYsICJtZHBfcGh5cyIpOworCURSTV9JTkZPKCJtYXBwZWQg ZHB1IGFkZHJlc3Mgc3BhY2UgQCVwXG4iLCBkcHVfa21zLT5tbWlvKTsKKwlkcHVfa21zLT5tbWlv X2xlbiA9IG1zbV9pb21hcF9zaXplKGRwdV9rbXMtPnBkZXYsICJtZHBfcGh5cyIpOwogCiAJcmMg PSBkcHVfZGJnX3JlZ19yZWdpc3Rlcl9iYXNlKERQVV9EQkdfTkFNRSwgZHB1X2ttcy0+bW1pbywK IAkJCWRwdV9rbXMtPm1taW9fbGVuKTsKIAlpZiAocmMpCiAJCURQVV9FUlJPUigiZGJnIGJhc2Ug cmVnaXN0ZXIga21zIGZhaWxlZDogJWRcbiIsIHJjKTsKIAotCWRwdV9rbXMtPnZiaWZbVkJJRl9S VF0gPSBtc21faW9yZW1hcChwbGF0Zm9ybWRldiwgInZiaWZfcGh5cyIsCisJZHB1X2ttcy0+dmJp ZltWQklGX1JUXSA9IG1zbV9pb3JlbWFwKGRwdV9rbXMtPnBkZXYsICJ2YmlmX3BoeXMiLAogCQkJ CQkJCQkidmJpZl9waHlzIik7CiAJaWYgKElTX0VSUihkcHVfa21zLT52YmlmW1ZCSUZfUlRdKSkg ewogCQlyYyA9IFBUUl9FUlIoZHB1X2ttcy0+dmJpZltWQklGX1JUXSk7CkBAIC0xNjAwLDIwICsx NTc3LDIwIEBAIHN0YXRpYyBpbnQgZHB1X2ttc19od19pbml0KHN0cnVjdCBtc21fa21zICprbXMp CiAJCWRwdV9rbXMtPnZiaWZbVkJJRl9SVF0gPSBOVUxMOwogCQlnb3RvIGVycm9yOwogCX0KLQlk cHVfa21zLT52YmlmX2xlbltWQklGX1JUXSA9IG1zbV9pb21hcF9zaXplKHBsYXRmb3JtZGV2LAor CWRwdV9rbXMtPnZiaWZfbGVuW1ZCSUZfUlRdID0gbXNtX2lvbWFwX3NpemUoZHB1X2ttcy0+cGRl diwKIAkJCQkJCQkJInZiaWZfcGh5cyIpOwogCXJjID0gZHB1X2RiZ19yZWdfcmVnaXN0ZXJfYmFz ZSgidmJpZl9ydCIsIGRwdV9rbXMtPnZiaWZbVkJJRl9SVF0sCiAJCQkJZHB1X2ttcy0+dmJpZl9s ZW5bVkJJRl9SVF0pOwogCWlmIChyYykKIAkJRFBVX0VSUk9SKCJkYmcgYmFzZSByZWdpc3RlciB2 YmlmX3J0IGZhaWxlZDogJWRcbiIsIHJjKTsKIAotCWRwdV9rbXMtPnZiaWZbVkJJRl9OUlRdID0g bXNtX2lvcmVtYXAocGxhdGZvcm1kZXYsICJ2YmlmX25ydF9waHlzIiwKKwlkcHVfa21zLT52Ymlm W1ZCSUZfTlJUXSA9IG1zbV9pb3JlbWFwKGRwdV9rbXMtPnBkZXYsICJ2YmlmX25ydF9waHlzIiwK IAkJCQkJCQkJInZiaWZfbnJ0X3BoeXMiKTsKIAlpZiAoSVNfRVJSKGRwdV9rbXMtPnZiaWZbVkJJ Rl9OUlRdKSkgewogCQlkcHVfa21zLT52YmlmW1ZCSUZfTlJUXSA9IE5VTEw7CiAJCURQVV9ERUJV RygiVkJJRiBOUlQgaXMgbm90IGRlZmluZWQiKTsKIAl9IGVsc2UgewotCQlkcHVfa21zLT52Ymlm X2xlbltWQklGX05SVF0gPSBtc21faW9tYXBfc2l6ZShwbGF0Zm9ybWRldiwKKwkJZHB1X2ttcy0+ dmJpZl9sZW5bVkJJRl9OUlRdID0gbXNtX2lvbWFwX3NpemUoZHB1X2ttcy0+cGRldiwKIAkJCQkJ CQkidmJpZl9ucnRfcGh5cyIpOwogCQlyYyA9IGRwdV9kYmdfcmVnX3JlZ2lzdGVyX2Jhc2UoInZi aWZfbnJ0IiwKIAkJCQlkcHVfa21zLT52YmlmW1ZCSUZfTlJUXSwKQEAgLTE2MjQsMTMgKzE2MDEs MTMgQEAgc3RhdGljIGludCBkcHVfa21zX2h3X2luaXQoc3RydWN0IG1zbV9rbXMgKmttcykKIAl9 CiAKICNpZmRlZiBDT05GSUdfQ0hST01FX1JFR0RNQQotCWRwdV9rbXMtPnJlZ19kbWEgPSBtc21f aW9yZW1hcChwbGF0Zm9ybWRldiwgInJlZ2RtYV9waHlzIiwKKwlkcHVfa21zLT5yZWdfZG1hID0g bXNtX2lvcmVtYXAoZHB1X2ttcy0+cGRldiwgInJlZ2RtYV9waHlzIiwKIAkJCQkJCQkJInJlZ2Rt YV9waHlzIik7CiAJaWYgKElTX0VSUihkcHVfa21zLT5yZWdfZG1hKSkgewogCQlkcHVfa21zLT5y ZWdfZG1hID0gTlVMTDsKIAkJRFBVX0RFQlVHKCJSRUdfRE1BIGlzIG5vdCBkZWZpbmVkIik7CiAJ fSBlbHNlIHsKLQkJZHB1X2ttcy0+cmVnX2RtYV9sZW4gPSBtc21faW9tYXBfc2l6ZShwbGF0Zm9y bWRldiwKKwkJZHB1X2ttcy0+cmVnX2RtYV9sZW4gPSBtc21faW9tYXBfc2l6ZShkcHVfa21zLT5w ZGV2LAogCQkJCQkJCQkicmVnZG1hX3BoeXMiKTsKIAkJcmMgPSAgZHB1X2RiZ19yZWdfcmVnaXN0 ZXJfYmFzZSgicmVnX2RtYSIsCiAJCQkJZHB1X2ttcy0+cmVnX2RtYSwKQEAgLTE4MDQsMTQgKzE3 ODEsMTMgQEAgc3RhdGljIGludCBkcHVfa21zX2h3X2luaXQoc3RydWN0IG1zbV9rbXMgKmttcykK IAlkcHVfcG93ZXJfcmVzb3VyY2VfZW5hYmxlKCZwcml2LT5waGFuZGxlLCBkcHVfa21zLT5jb3Jl X2NsaWVudCwgZmFsc2UpOwogCXBtX3J1bnRpbWVfcHV0X3N5bmMoZGV2LT5kZXYpOwogZXJyb3I6 Ci0JX2RwdV9rbXNfaHdfZGVzdHJveShkcHVfa21zLCBwbGF0Zm9ybWRldik7CisJX2RwdV9rbXNf aHdfZGVzdHJveShkcHVfa21zKTsKIGVuZDoKIAlyZXR1cm4gcmM7CiB9CiAKIHN0cnVjdCBtc21f a21zICpkcHVfa21zX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKLQlzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldi0+ZGV2KTsKIAlzdHJ1 Y3QgbXNtX2RybV9wcml2YXRlICpwcml2OwogCXN0cnVjdCBkcHVfa21zICpkcHVfa21zOwogCWlu dCBpcnE7CkBAIC0xODIxLDI0ICsxNzk3LDIwNyBAQCBzdHJ1Y3QgbXNtX2ttcyAqZHB1X2ttc19p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwog CX0KIAotCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7CisJcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7CisJZHB1X2ttcyA9IHRvX2RwdV9rbXMocHJpdi0+a21zKTsKKworCWlycSA9IGly cV9vZl9wYXJzZV9hbmRfbWFwKGRwdV9rbXMtPnBkZXYtPmRldi5vZl9ub2RlLCAwKTsKIAlpZiAo aXJxIDwgMCkgewogCQlEUFVfRVJST1IoImZhaWxlZCB0byBnZXQgaXJxOiAlZFxuIiwgaXJxKTsK IAkJcmV0dXJuIEVSUl9QVFIoaXJxKTsKIAl9CisJZHB1X2ttcy0+YmFzZS5pcnEgPSBpcnE7CiAK LQlwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlyZXR1cm4gJmRwdV9rbXMtPmJhc2U7Cit9CisK K3N0YXRpYyB2b2lkIGRwdV9kZXN0cm95KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7 CisJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsK KwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXAgPSAmZHB1X2ttcy0+bXA7CisKKwltc21fZHNz X3B1dF9jbGsobXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrKTsKKwlkZXZtX2tmcmVlKCZwZGV2 LT5kZXYsIG1wLT5jbGtfY29uZmlnKTsKKwltcC0+bnVtX2NsayA9IDA7CisKKwlpZiAoZHB1X2tt cy0+cnBtX2VuYWJsZWQpCisJCXBtX3J1bnRpbWVfZGlzYWJsZSgmcGRldi0+ZGV2KTsKKworCWRl dm1fa2ZyZWUoJnBkZXYtPmRldiwgZHB1X2ttcyk7Cit9CiAKLQlkcHVfa21zID0ga3phbGxvYyhz aXplb2YoKmRwdV9rbXMpLCBHRlBfS0VSTkVMKTsKK3N0YXRpYyBpbnQgZHB1X2luaXQoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1 Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHB1 X2ttcyAqZHB1X2ttczsKKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXA7CisJaW50IHJldCA9 IDA7CisKKwlkcHVfa21zID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqZHB1X2tt cyksIEdGUF9LRVJORUwpOwogCWlmICghZHB1X2ttcykgewogCQlEUFVfRVJST1IoImZhaWxlZCB0 byBhbGxvY2F0ZSBkcHUga21zXG4iKTsKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisJCXJl dHVybiAtRU5PTUVNOworCX0KKworCW1wID0gJmRwdV9rbXMtPm1wOworCXJldCA9IG1zbV9kc3Nf cGFyc2VfY2xvY2socGRldiwgbXApOworCWlmIChyZXQpIHsKKwkJRFBVX0VSUk9SKCJmYWlsZWQg dG8gcGFyc2UgY2xvY2tzLCByZXQ9JWRcbiIsIHJldCk7CisJCWdvdG8gY2xrX3BhcnNlX2Vycm9y OworCX0KKworCXJldCA9IG1zbV9kc3NfZ2V0X2NsaygmcGRldi0+ZGV2LCBtcC0+Y2xrX2NvbmZp ZywgbXAtPm51bV9jbGspOworCWlmIChyZXQpIHsKKwkJcHJfZXJyKCJmYWlsZWQgdG8gZ2V0IGNs b2NrcywgcmV0PSVkXG4iLCByZXQpOworCQlnb3RvIGNsa19nZXRfZXJyb3I7CisJfQorCisJcmV0 ID0gbXNtX2Rzc19jbGtfc2V0X3JhdGUobXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrKTsKKwlp ZiAocmV0KSB7CisJCXByX2VycigiZmFpbGVkIHRvIHNldCBjbG9jayByYXRlLCByZXQ9JWRcbiIs IHJldCk7CisJCWdvdG8gY2xrX3JhdGVfZXJyb3I7CiAJfQogCisJcGxhdGZvcm1fc2V0X2RydmRh dGEocGRldiwgZHB1X2ttcyk7CisKIAltc21fa21zX2luaXQoJmRwdV9rbXMtPmJhc2UsICZrbXNf ZnVuY3MpOwogCWRwdV9rbXMtPmRldiA9IGRldjsKLQlkcHVfa21zLT5iYXNlLmlycSA9IGlycTsK KwlkcHVfa21zLT5wZGV2ID0gcGRldjsKIAotCXJldHVybiAmZHB1X2ttcy0+YmFzZTsKKwlwbV9y dW50aW1lX2VuYWJsZSgmcGRldi0+ZGV2KTsKKwlkcHVfa21zLT5ycG1fZW5hYmxlZCA9IHRydWU7 CisKKwlwcml2LT5rbXMgPSAmZHB1X2ttcy0+YmFzZTsKKworCXJldHVybiByZXQ7CisKK2Nsa19y YXRlX2Vycm9yOgorCW1zbV9kc3NfcHV0X2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGsp OworY2xrX2dldF9lcnJvcjoKKwlkZXZtX2tmcmVlKCZwZGV2LT5kZXYsIG1wLT5jbGtfY29uZmln KTsKKwltcC0+bnVtX2NsayA9IDA7CitjbGtfcGFyc2VfZXJyb3I6CisJZGV2bV9rZnJlZSgmcGRl di0+ZGV2LCBkcHVfa21zKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZHB1X2Jp bmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEp Cit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBkZXZfZ2V0X2RydmRhdGEobWFzdGVyKTsK KwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7 CisKKwlyZXR1cm4gZHB1X2luaXQocGRldiwgZGRldik7CiB9CiAKK3N0YXRpYyB2b2lkIGRwdV91 bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRh dGEpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2Rldmlj ZShkZXYpOworCisJZHB1X2Rlc3Ryb3kocGRldik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg Y29tcG9uZW50X29wcyBkcHVfb3BzID0geworCS5iaW5kICAgPSBkcHVfYmluZCwKKwkudW5iaW5k ID0gZHB1X3VuYmluZCwKK307CisKK3N0YXRpYyBpbnQgZHB1X2Rldl9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQoreworCXJldHVybiBjb21wb25lbnRfYWRkKCZwZGV2LT5kZXYs ICZkcHVfb3BzKTsKK30KKworc3RhdGljIGludCBkcHVfZGV2X3JlbW92ZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQoreworCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJmRwdV9vcHMp OworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRwdV9ydW50aW1lX3N1c3BlbmQoc3RydWN0 IGRldmljZSAqZGV2KQoreworCWludCByYyA9IC0xOworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgZHB1X2ttcyAqZHB1X2tt cyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZGV2 OworCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXY7CisJc3RydWN0IGRzc19tb2R1bGVfcG93 ZXIgKm1wID0gJmRwdV9rbXMtPm1wOworCisJZGRldiA9IGRwdV9rbXMtPmRldjsKKwlpZiAoIWRk ZXYpIHsKKwkJRFBVX0VSUk9SKCJpbnZhbGlkIGRybV9kZXZpY2VcbiIpOworCQlnb3RvIGV4aXQ7 CisJfQorCXByaXYgPSBkZGV2LT5kZXZfcHJpdmF0ZTsKKworCXJjID0gZHB1X3Bvd2VyX3Jlc291 cmNlX2VuYWJsZSgmcHJpdi0+cGhhbmRsZSwKKwkJZHB1X2ttcy0+Y29yZV9jbGllbnQsIGZhbHNl KTsKKwlpZiAocmMpCisJCURQVV9FUlJPUigicmVzb3VyY2UgZGlzYWJsZSBmYWlsZWQ6ICVkXG4i LCByYyk7CisKKwlyYyA9IG1zbV9kc3NfZW5hYmxlX2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51 bV9jbGssIGZhbHNlKTsKKwlpZiAocmMpCisJCURQVV9FUlJPUigiY2xvY2sgZGlzYWJsZSBmYWls ZWQgcmM6JWRcbiIsIHJjKTsKKworZXhpdDoKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQg ZHB1X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlpbnQgcmMgPSAtMTsK KwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7 CisJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGRldjsKKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2 OworCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcCA9ICZkcHVfa21zLT5tcDsKKworCWRkZXYg PSBkcHVfa21zLT5kZXY7CisJaWYgKCFkZGV2KSB7CisJCURQVV9FUlJPUigiaW52YWxpZCBkcm1f ZGV2aWNlXG4iKTsKKwkJZ290byBleGl0OworCX0KKwlwcml2ID0gZGRldi0+ZGV2X3ByaXZhdGU7 CisKKwlyYyA9IG1zbV9kc3NfZW5hYmxlX2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGss IHRydWUpOworCWlmIChyYykgeworCQlEUFVfRVJST1IoImNsb2NrIGVuYWJsZSBmYWlsZWQgcmM6 JWRcbiIsIHJjKTsKKwkJZ290byBleGl0OworCX0KKworCXJjID0gZHB1X3Bvd2VyX3Jlc291cmNl X2VuYWJsZSgmcHJpdi0+cGhhbmRsZSwgZHB1X2ttcy0+Y29yZV9jbGllbnQsCisJCXRydWUpOwor CWlmIChyYykKKwkJRFBVX0VSUk9SKCJyZXNvdXJjZSBlbmFibGUgZmFpbGVkOiAlZFxuIiwgcmMp OworCitleGl0OgorCXJldHVybiByYzsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1f b3BzIGRwdV9wbV9vcHMgPSB7CisJU0VUX1JVTlRJTUVfUE1fT1BTKGRwdV9ydW50aW1lX3N1c3Bl bmQsIGRwdV9ydW50aW1lX3Jlc3VtZSwgTlVMTCkKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg b2ZfZGV2aWNlX2lkIGRwdV9kdF9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAicWNvbSxk cHUiLCB9LAorCXt9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZHB1X2R0X21hdGNoKTsK Kworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHB1X2RyaXZlciA9IHsKKwkucHJvYmUg PSBkcHVfZGV2X3Byb2JlLAorCS5yZW1vdmUgPSBkcHVfZGV2X3JlbW92ZSwKKwkuZHJpdmVyID0g eworCQkubmFtZSA9ICJtc21fZHB1IiwKKwkJLm9mX21hdGNoX3RhYmxlID0gZHB1X2R0X21hdGNo LAorCQkucG0gPSAmZHB1X3BtX29wcywKKwl9LAorfTsKKwordm9pZCBfX2luaXQgbXNtX2RwdV9y ZWdpc3Rlcih2b2lkKQoreworCXBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmZHB1X2RyaXZlcik7 Cit9CisKK3ZvaWQgX19leGl0IG1zbV9kcHVfdW5yZWdpc3Rlcih2b2lkKQoreworCXBsYXRmb3Jt X2RyaXZlcl91bnJlZ2lzdGVyKCZkcHVfZHJpdmVyKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9rbXMuaAppbmRleCBhMWMwOTEwLi4zYzY5OTIxIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2ttcy5oCkBAIC0yMDAsNiArMjAwLDEwIEBAIHN0cnVjdCBkcHVf a21zIHsKIAlzdHJ1Y3QgZHB1X2h3X21kcCAqaHdfbWRwOwogCiAJYm9vbCBoYXNfZGFuZ2VyX2N0 cmw7CisKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2OworCWJvb2wgcnBtX2VuYWJsZWQ7 CisJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgbXA7CiB9OwogCiBzdHJ1Y3QgdnN5bmNfaW5mbyB7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vbXNtX2Rydi5jCmluZGV4IGEwZTczZWEuLjU0NzA1MjkgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNt X2Rydi5jCkBAIC0xNzMxLDYgKzE3MzEsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBtc21fZHJtX3Jl Z2lzdGVyKHZvaWQpCiAKIAlEQkcoImluaXQiKTsKIAltc21fbWRwX3JlZ2lzdGVyKCk7CisJbXNt X2RwdV9yZWdpc3RlcigpOwogCW1zbV9kc2lfcmVnaXN0ZXIoKTsKIAltc21fZWRwX3JlZ2lzdGVy KCk7CiAJbXNtX2hkbWlfcmVnaXN0ZXIoKTsKQEAgLTE3NDcsNiArMTc0OCw3IEBAIHN0YXRpYyB2 b2lkIF9fZXhpdCBtc21fZHJtX3VucmVnaXN0ZXIodm9pZCkKIAltc21fZWRwX3VucmVnaXN0ZXIo KTsKIAltc21fZHNpX3VucmVnaXN0ZXIoKTsKIAltc21fbWRwX3VucmVnaXN0ZXIoKTsKKwltc21f ZHB1X3VucmVnaXN0ZXIoKTsKIH0KIAogbW9kdWxlX2luaXQobXNtX2RybV9yZWdpc3Rlcik7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2Rydi5oCmluZGV4IGU4ZTVlNzMuLjIyYTMwOTYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Ry di5oCkBAIC02ODIsNiArNjgyLDkgQEAgc3RhdGljIGlubGluZSBpbnQgbXNtX2RzaV9tb2Rlc2V0 X2luaXQoc3RydWN0IG1zbV9kc2kgKm1zbV9kc2ksCiB2b2lkIF9faW5pdCBtc21fbWRwX3JlZ2lz dGVyKHZvaWQpOwogdm9pZCBfX2V4aXQgbXNtX21kcF91bnJlZ2lzdGVyKHZvaWQpOwogCit2b2lk IF9faW5pdCBtc21fZHB1X3JlZ2lzdGVyKHZvaWQpOwordm9pZCBfX2V4aXQgbXNtX2RwdV91bnJl Z2lzdGVyKHZvaWQpOworCiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCiB2b2lkIG1zbV9nZW1fZGVz Y3JpYmUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBzZXFfZmlsZSAqbSk7CiB2 b2lkIG1zbV9nZW1fZGVzY3JpYmVfb2JqZWN0cyhzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzdHJ1 Y3Qgc2VxX2ZpbGUgKm0pOwotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMu IGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9u IENvbGxhYm9yYXRpdmUgUHJvamVjdAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==