From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rajesh Yadav Subject: [DPU PATCH v2 02/12] drm/msm/mdp5: subclass msm_mdss for mdp5 Date: Fri, 11 May 2018 20:19:28 +0530 Message-ID: <1526050178-31893-3-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@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 U29DcyBoYXZpbmcgbWRwNSBvciBkcHUgaGF2ZSBpZGVudGljYWwgdHJlZSBsaWtlCmRldmljZSBo aWVyYXJjaHkgd2hlcmUgTURTUyB0b3AgbGV2ZWwgd3JhcHBlciBtYW5hZ2VzCmNvbW1vbiBwb3dl ciByZXNvdXJjZXMgZm9yIGFsbCBjaGlsZCBkZXZpY2VzLgoKU3ViY2xhc3MgbXNtX21kc3Mgc28g dGhhdCBtc21fbWRzcyBpbmNsdWRlcyBjb21tb24gZGVmaW5lcwphbmQgbWRwNS9kcHUgbWRzcyBk ZXJpdmF0aW9ucyB0byBpbmNsdWRlIGFueSBleHRlbnNpb25zLgoKQWRkIG1kc3MgaGVscGVyIGlu dGVyZmFjZSAobXNtX21kc3NfZnVuY3MpIHRvIG1zbV9tZHNzCmJhc2UgZm9yIG1kcDUvZHB1IG1k c3Mgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gY2FsbHMuCgpUaGlzIGNoYW5nZSBzdWJjbGFzc2Vz IG1zbV9tZHNzIGZvciBtZHA1LCBkcHUgc3BlY2lmaWMKY2hhbmdlcyB3aWxsIGJlIGRvbmUgc2Vw YXJhdGVseS4KCkNoYW5nZXMgaW4gdjI6CgktIGZpeGVkIGluZGVudGF0aW9uIGZvciBpcnFfZG9t YWluX2FkZF9saW5lYXIgY2FsbCAoU2VhbiBQYXVsKQoKU2lnbmVkLW9mZi1ieTogUmFqZXNoIFlh ZGF2IDxyeWFkYXZAY29kZWF1cm9yYS5vcmc+ClJldmlld2VkLWJ5OiBTZWFuIFBhdWwgPHNlYW5w YXVsQGNocm9taXVtLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1 X21kc3MuYyB8IDE1NCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9tc20vbXNtX2Rydi5jICAgICAgICAgICAgIHwgIDIzICsrKy0tCiBkcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9rbXMuaCAgICAgICAgICAgICB8ICAyMCArKy0tCiAzIGZpbGVzIGNoYW5nZWQs IDExMCBpbnNlcnRpb25zKCspLCA4NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X21kc3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9tZHA1L21kcDVfbWRzcy5jCmluZGV4IGYyYTBkYjcuLjFjYzRlNTcgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfbWRzcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfbWRzcy5jCkBAIC0yMCwxMiArMjAsMTAgQEAKICNp bmNsdWRlICJtc21fZHJ2LmgiCiAjaW5jbHVkZSAibWRwNV9rbXMuaCIKIAotLyoKLSAqIElmIG5l ZWRlZCwgdGhpcyBjYW4gYmVjb21lIG1vcmUgc3BlY2lmaWM6IHNvbWV0aGluZyBsaWtlIHN0cnVj dCBtZHA1X21kc3MsCi0gKiB3aGljaCBjb250YWlucyBhICdzdHJ1Y3QgbXNtX21kc3MgYmFzZScg bWVtYmVyLgotICovCi1zdHJ1Y3QgbXNtX21kc3MgewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7 CisjZGVmaW5lIHRvX21kcDVfbWRzcyh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IG1kcDVfbWRz cywgYmFzZSkKKworc3RydWN0IG1kcDVfbWRzcyB7CisJc3RydWN0IG1zbV9tZHNzIGJhc2U7CiAK IAl2b2lkIF9faW9tZW0gKm1taW8sICp2YmlmOwogCkBAIC00MSwyMiArMzksMjIgQEAgc3RydWN0 IG1zbV9tZHNzIHsKIAl9IGlycWNvbnRyb2xsZXI7CiB9OwogCi1zdGF0aWMgaW5saW5lIHZvaWQg bWRzc193cml0ZShzdHJ1Y3QgbXNtX21kc3MgKm1kc3MsIHUzMiByZWcsIHUzMiBkYXRhKQorc3Rh dGljIGlubGluZSB2b2lkIG1kc3Nfd3JpdGUoc3RydWN0IG1kcDVfbWRzcyAqbWRwNV9tZHNzLCB1 MzIgcmVnLCB1MzIgZGF0YSkKIHsKLQltc21fd3JpdGVsKGRhdGEsIG1kc3MtPm1taW8gKyByZWcp OworCW1zbV93cml0ZWwoZGF0YSwgbWRwNV9tZHNzLT5tbWlvICsgcmVnKTsKIH0KIAotc3RhdGlj IGlubGluZSB1MzIgbWRzc19yZWFkKHN0cnVjdCBtc21fbWRzcyAqbWRzcywgdTMyIHJlZykKK3N0 YXRpYyBpbmxpbmUgdTMyIG1kc3NfcmVhZChzdHJ1Y3QgbWRwNV9tZHNzICptZHA1X21kc3MsIHUz MiByZWcpCiB7Ci0JcmV0dXJuIG1zbV9yZWFkbChtZHNzLT5tbWlvICsgcmVnKTsKKwlyZXR1cm4g bXNtX3JlYWRsKG1kcDVfbWRzcy0+bW1pbyArIHJlZyk7CiB9CiAKIHN0YXRpYyBpcnFyZXR1cm5f dCBtZHNzX2lycShpbnQgaXJxLCB2b2lkICphcmcpCiB7Ci0Jc3RydWN0IG1zbV9tZHNzICptZHNz ID0gYXJnOworCXN0cnVjdCBtZHA1X21kc3MgKm1kcDVfbWRzcyA9IGFyZzsKIAl1MzIgaW50cjsK IAotCWludHIgPSBtZHNzX3JlYWQobWRzcywgUkVHX01EU1NfSFdfSU5UUl9TVEFUVVMpOworCWlu dHIgPSBtZHNzX3JlYWQobWRwNV9tZHNzLCBSRUdfTURTU19IV19JTlRSX1NUQVRVUyk7CiAKIAlW RVJCKCJpbnRyPSUwOHgiLCBpbnRyKTsKIApAQCAtNjQsNyArNjIsNyBAQCBzdGF0aWMgaXJxcmV0 dXJuX3QgbWRzc19pcnEoaW50IGlycSwgdm9pZCAqYXJnKQogCQlpcnFfaHdfbnVtYmVyX3QgaHdp cnEgPSBmbHMoaW50cikgLSAxOwogCiAJCWdlbmVyaWNfaGFuZGxlX2lycShpcnFfZmluZF9tYXBw aW5nKAotCQkJCW1kc3MtPmlycWNvbnRyb2xsZXIuZG9tYWluLCBod2lycSkpOworCQkJCW1kcDVf bWRzcy0+aXJxY29udHJvbGxlci5kb21haW4sIGh3aXJxKSk7CiAJCWludHIgJj0gfigxIDw8IGh3 aXJxKTsKIAl9CiAKQEAgLTg0LDE5ICs4MiwxOSBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgbWRzc19p cnEoaW50IGlycSwgdm9pZCAqYXJnKQogCiBzdGF0aWMgdm9pZCBtZHNzX2h3X21hc2tfaXJxKHN0 cnVjdCBpcnFfZGF0YSAqaXJxZCkKIHsKLQlzdHJ1Y3QgbXNtX21kc3MgKm1kc3MgPSBpcnFfZGF0 YV9nZXRfaXJxX2NoaXBfZGF0YShpcnFkKTsKKwlzdHJ1Y3QgbWRwNV9tZHNzICptZHA1X21kc3Mg PSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShpcnFkKTsKIAogCXNtcF9tYl9fYmVmb3JlX2F0 b21pYygpOwotCWNsZWFyX2JpdChpcnFkLT5od2lycSwgJm1kc3MtPmlycWNvbnRyb2xsZXIuZW5h YmxlZF9tYXNrKTsKKwljbGVhcl9iaXQoaXJxZC0+aHdpcnEsICZtZHA1X21kc3MtPmlycWNvbnRy b2xsZXIuZW5hYmxlZF9tYXNrKTsKIAlzbXBfbWJfX2FmdGVyX2F0b21pYygpOwogfQogCiBzdGF0 aWMgdm9pZCBtZHNzX2h3X3VubWFza19pcnEoc3RydWN0IGlycV9kYXRhICppcnFkKQogewotCXN0 cnVjdCBtc21fbWRzcyAqbWRzcyA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGlycWQpOwor CXN0cnVjdCBtZHA1X21kc3MgKm1kcDVfbWRzcyA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRh KGlycWQpOwogCiAJc21wX21iX19iZWZvcmVfYXRvbWljKCk7Ci0Jc2V0X2JpdChpcnFkLT5od2ly cSwgJm1kc3MtPmlycWNvbnRyb2xsZXIuZW5hYmxlZF9tYXNrKTsKKwlzZXRfYml0KGlycWQtPmh3 aXJxLCAmbWRwNV9tZHNzLT5pcnFjb250cm9sbGVyLmVuYWJsZWRfbWFzayk7CiAJc21wX21iX19h ZnRlcl9hdG9taWMoKTsKIH0KIApAQCAtMTA5LDEzICsxMDcsMTMgQEAgc3RhdGljIHZvaWQgbWRz c19od191bm1hc2tfaXJxKHN0cnVjdCBpcnFfZGF0YSAqaXJxZCkKIHN0YXRpYyBpbnQgbWRzc19o d19pcnFkb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaXJxLAog CQkJCSBpcnFfaHdfbnVtYmVyX3QgaHdpcnEpCiB7Ci0Jc3RydWN0IG1zbV9tZHNzICptZHNzID0g ZC0+aG9zdF9kYXRhOworCXN0cnVjdCBtZHA1X21kc3MgKm1kcDVfbWRzcyA9IGQtPmhvc3RfZGF0 YTsKIAogCWlmICghKFZBTElEX0lSUVMgJiAoMSA8PCBod2lycSkpKQogCQlyZXR1cm4gLUVQRVJN OwogCiAJaXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgJm1kc3NfaHdfaXJxX2NoaXAsIGhh bmRsZV9sZXZlbF9pcnEpOwotCWlycV9zZXRfY2hpcF9kYXRhKGlycSwgbWRzcyk7CisJaXJxX3Nl dF9jaGlwX2RhdGEoaXJxLCBtZHA1X21kc3MpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xMjYsOTAg KzEyNCw5OSBAQCBzdGF0aWMgaW50IG1kc3NfaHdfaXJxZG9tYWluX21hcChzdHJ1Y3QgaXJxX2Rv bWFpbiAqZCwgdW5zaWduZWQgaW50IGlycSwKIH07CiAKIAotc3RhdGljIGludCBtZHNzX2lycV9k b21haW5faW5pdChzdHJ1Y3QgbXNtX21kc3MgKm1kc3MpCitzdGF0aWMgaW50IG1kc3NfaXJxX2Rv bWFpbl9pbml0KHN0cnVjdCBtZHA1X21kc3MgKm1kcDVfbWRzcykKIHsKLQlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSBtZHNzLT5kZXYtPmRldjsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBtZHA1X21kc3Mt PmJhc2UuZGV2LT5kZXY7CiAJc3RydWN0IGlycV9kb21haW4gKmQ7CiAKIAlkID0gaXJxX2RvbWFp bl9hZGRfbGluZWFyKGRldi0+b2Zfbm9kZSwgMzIsICZtZHNzX2h3X2lycWRvbWFpbl9vcHMsCi0J CQkJICBtZHNzKTsKKwkJCQkgIG1kcDVfbWRzcyk7CiAJaWYgKCFkKSB7CiAJCWRldl9lcnIoZGV2 LCAibWRzcyBpcnEgZG9tYWluIGFkZCBmYWlsZWRcbiIpOwogCQlyZXR1cm4gLUVOWElPOwogCX0K IAotCW1kc3MtPmlycWNvbnRyb2xsZXIuZW5hYmxlZF9tYXNrID0gMDsKLQltZHNzLT5pcnFjb250 cm9sbGVyLmRvbWFpbiA9IGQ7CisJbWRwNV9tZHNzLT5pcnFjb250cm9sbGVyLmVuYWJsZWRfbWFz ayA9IDA7CisJbWRwNV9tZHNzLT5pcnFjb250cm9sbGVyLmRvbWFpbiA9IGQ7CiAKIAlyZXR1cm4g MDsKIH0KIAotaW50IG1zbV9tZHNzX2VuYWJsZShzdHJ1Y3QgbXNtX21kc3MgKm1kc3MpCitzdGF0 aWMgaW50IG1kcDVfbWRzc19lbmFibGUoc3RydWN0IG1zbV9tZHNzICptZHNzKQogeworCXN0cnVj dCBtZHA1X21kc3MgKm1kcDVfbWRzcyA9IHRvX21kcDVfbWRzcyhtZHNzKTsKIAlEQkcoIiIpOwog Ci0JY2xrX3ByZXBhcmVfZW5hYmxlKG1kc3MtPmFoYl9jbGspOwotCWlmIChtZHNzLT5heGlfY2xr KQotCQljbGtfcHJlcGFyZV9lbmFibGUobWRzcy0+YXhpX2Nsayk7Ci0JaWYgKG1kc3MtPnZzeW5j X2NsaykKLQkJY2xrX3ByZXBhcmVfZW5hYmxlKG1kc3MtPnZzeW5jX2Nsayk7CisJY2xrX3ByZXBh cmVfZW5hYmxlKG1kcDVfbWRzcy0+YWhiX2Nsayk7CisJaWYgKG1kcDVfbWRzcy0+YXhpX2NsaykK KwkJY2xrX3ByZXBhcmVfZW5hYmxlKG1kcDVfbWRzcy0+YXhpX2Nsayk7CisJaWYgKG1kcDVfbWRz cy0+dnN5bmNfY2xrKQorCQljbGtfcHJlcGFyZV9lbmFibGUobWRwNV9tZHNzLT52c3luY19jbGsp OwogCiAJcmV0dXJuIDA7CiB9CiAKLWludCBtc21fbWRzc19kaXNhYmxlKHN0cnVjdCBtc21fbWRz cyAqbWRzcykKK3N0YXRpYyBpbnQgbWRwNV9tZHNzX2Rpc2FibGUoc3RydWN0IG1zbV9tZHNzICpt ZHNzKQogeworCXN0cnVjdCBtZHA1X21kc3MgKm1kcDVfbWRzcyA9IHRvX21kcDVfbWRzcyhtZHNz KTsKIAlEQkcoIiIpOwogCi0JaWYgKG1kc3MtPnZzeW5jX2NsaykKLQkJY2xrX2Rpc2FibGVfdW5w cmVwYXJlKG1kc3MtPnZzeW5jX2Nsayk7Ci0JaWYgKG1kc3MtPmF4aV9jbGspCi0JCWNsa19kaXNh YmxlX3VucHJlcGFyZShtZHNzLT5heGlfY2xrKTsKLQljbGtfZGlzYWJsZV91bnByZXBhcmUobWRz cy0+YWhiX2Nsayk7CisJaWYgKG1kcDVfbWRzcy0+dnN5bmNfY2xrKQorCQljbGtfZGlzYWJsZV91 bnByZXBhcmUobWRwNV9tZHNzLT52c3luY19jbGspOworCWlmIChtZHA1X21kc3MtPmF4aV9jbGsp CisJCWNsa19kaXNhYmxlX3VucHJlcGFyZShtZHA1X21kc3MtPmF4aV9jbGspOworCWNsa19kaXNh YmxlX3VucHJlcGFyZShtZHA1X21kc3MtPmFoYl9jbGspOwogCiAJcmV0dXJuIDA7CiB9CiAKLXN0 YXRpYyBpbnQgbXNtX21kc3NfZ2V0X2Nsb2NrcyhzdHJ1Y3QgbXNtX21kc3MgKm1kc3MpCitzdGF0 aWMgaW50IG1zbV9tZHNzX2dldF9jbG9ja3Moc3RydWN0IG1kcDVfbWRzcyAqbWRwNV9tZHNzKQog ewotCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2UobWRz cy0+ZGV2LT5kZXYpOworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPQorCQkJdG9fcGxh dGZvcm1fZGV2aWNlKG1kcDVfbWRzcy0+YmFzZS5kZXYtPmRldik7CiAKLQltZHNzLT5haGJfY2xr ID0gbXNtX2Nsa19nZXQocGRldiwgImlmYWNlIik7Ci0JaWYgKElTX0VSUihtZHNzLT5haGJfY2xr KSkKLQkJbWRzcy0+YWhiX2NsayA9IE5VTEw7CisJbWRwNV9tZHNzLT5haGJfY2xrID0gbXNtX2Ns a19nZXQocGRldiwgImlmYWNlIik7CisJaWYgKElTX0VSUihtZHA1X21kc3MtPmFoYl9jbGspKQor CQltZHA1X21kc3MtPmFoYl9jbGsgPSBOVUxMOwogCi0JbWRzcy0+YXhpX2NsayA9IG1zbV9jbGtf Z2V0KHBkZXYsICJidXMiKTsKLQlpZiAoSVNfRVJSKG1kc3MtPmF4aV9jbGspKQotCQltZHNzLT5h eGlfY2xrID0gTlVMTDsKKwltZHA1X21kc3MtPmF4aV9jbGsgPSBtc21fY2xrX2dldChwZGV2LCAi YnVzIik7CisJaWYgKElTX0VSUihtZHA1X21kc3MtPmF4aV9jbGspKQorCQltZHA1X21kc3MtPmF4 aV9jbGsgPSBOVUxMOwogCi0JbWRzcy0+dnN5bmNfY2xrID0gbXNtX2Nsa19nZXQocGRldiwgInZz eW5jIik7Ci0JaWYgKElTX0VSUihtZHNzLT52c3luY19jbGspKQotCQltZHNzLT52c3luY19jbGsg PSBOVUxMOworCW1kcDVfbWRzcy0+dnN5bmNfY2xrID0gbXNtX2Nsa19nZXQocGRldiwgInZzeW5j Iik7CisJaWYgKElTX0VSUihtZHA1X21kc3MtPnZzeW5jX2NsaykpCisJCW1kcDVfbWRzcy0+dnN5 bmNfY2xrID0gTlVMTDsKIAogCXJldHVybiAwOwogfQogCi12b2lkIG1zbV9tZHNzX2Rlc3Ryb3ko c3RydWN0IGRybV9kZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIG1kcDVfbWRzc19kZXN0cm95KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IG1zbV9tZHNzICptZHNzID0gcHJpdi0+bWRzczsK KwlzdHJ1Y3QgbWRwNV9tZHNzICptZHA1X21kc3MgPSB0b19tZHA1X21kc3MocHJpdi0+bWRzcyk7 CiAKLQlpZiAoIW1kc3MpCisJaWYgKCFtZHA1X21kc3MpCiAJCXJldHVybjsKIAotCWlycV9kb21h aW5fcmVtb3ZlKG1kc3MtPmlycWNvbnRyb2xsZXIuZG9tYWluKTsKLQltZHNzLT5pcnFjb250cm9s bGVyLmRvbWFpbiA9IE5VTEw7CisJaXJxX2RvbWFpbl9yZW1vdmUobWRwNV9tZHNzLT5pcnFjb250 cm9sbGVyLmRvbWFpbik7CisJbWRwNV9tZHNzLT5pcnFjb250cm9sbGVyLmRvbWFpbiA9IE5VTEw7 CiAKLQlyZWd1bGF0b3JfZGlzYWJsZShtZHNzLT52ZGQpOworCXJlZ3VsYXRvcl9kaXNhYmxlKG1k cDVfbWRzcy0+dmRkKTsKIAogCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYtPmRldik7CiB9CiAKLWlu dCBtc21fbWRzc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCitzdGF0aWMgY29uc3Qgc3Ry dWN0IG1zbV9tZHNzX2Z1bmNzIG1kc3NfZnVuY3MgPSB7CisJLmVuYWJsZQk9IG1kcDVfbWRzc19l bmFibGUsCisJLmRpc2FibGUgPSBtZHA1X21kc3NfZGlzYWJsZSwKKwkuZGVzdHJveSA9IG1kcDVf bWRzc19kZXN0cm95LAorfTsKKworaW50IG1kcDVfbWRzc19pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiB7CiAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2Rl dmljZShkZXYtPmRldik7CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Ci0Jc3RydWN0IG1zbV9tZHNzICptZHNzOworCXN0cnVjdCBtZHA1X21kc3MgKm1k cDVfbWRzczsKIAlpbnQgcmV0OwogCiAJREJHKCIiKTsKQEAgLTIxNyw0MCArMjI0LDQwIEBAIGlu dCBtc21fbWRzc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKCFvZl9kZXZpY2Vf aXNfY29tcGF0aWJsZShkZXYtPmRldi0+b2Zfbm9kZSwgInFjb20sbWRzcyIpKQogCQlyZXR1cm4g MDsKIAotCW1kc3MgPSBkZXZtX2t6YWxsb2MoZGV2LT5kZXYsIHNpemVvZigqbWRzcyksIEdGUF9L RVJORUwpOwotCWlmICghbWRzcykgeworCW1kcDVfbWRzcyA9IGRldm1fa3phbGxvYyhkZXYtPmRl diwgc2l6ZW9mKCptZHA1X21kc3MpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIW1kcDVfbWRzcykgewog CQlyZXQgPSAtRU5PTUVNOwogCQlnb3RvIGZhaWw7CiAJfQogCi0JbWRzcy0+ZGV2ID0gZGV2Owor CW1kcDVfbWRzcy0+YmFzZS5kZXYgPSBkZXY7CiAKLQltZHNzLT5tbWlvID0gbXNtX2lvcmVtYXAo cGRldiwgIm1kc3NfcGh5cyIsICJNRFNTIik7Ci0JaWYgKElTX0VSUihtZHNzLT5tbWlvKSkgewot CQlyZXQgPSBQVFJfRVJSKG1kc3MtPm1taW8pOworCW1kcDVfbWRzcy0+bW1pbyA9IG1zbV9pb3Jl bWFwKHBkZXYsICJtZHNzX3BoeXMiLCAiTURTUyIpOworCWlmIChJU19FUlIobWRwNV9tZHNzLT5t bWlvKSkgeworCQlyZXQgPSBQVFJfRVJSKG1kcDVfbWRzcy0+bW1pbyk7CiAJCWdvdG8gZmFpbDsK IAl9CiAKLQltZHNzLT52YmlmID0gbXNtX2lvcmVtYXAocGRldiwgInZiaWZfcGh5cyIsICJWQklG Iik7Ci0JaWYgKElTX0VSUihtZHNzLT52YmlmKSkgewotCQlyZXQgPSBQVFJfRVJSKG1kc3MtPnZi aWYpOworCW1kcDVfbWRzcy0+dmJpZiA9IG1zbV9pb3JlbWFwKHBkZXYsICJ2YmlmX3BoeXMiLCAi VkJJRiIpOworCWlmIChJU19FUlIobWRwNV9tZHNzLT52YmlmKSkgeworCQlyZXQgPSBQVFJfRVJS KG1kcDVfbWRzcy0+dmJpZik7CiAJCWdvdG8gZmFpbDsKIAl9CiAKLQlyZXQgPSBtc21fbWRzc19n ZXRfY2xvY2tzKG1kc3MpOworCXJldCA9IG1zbV9tZHNzX2dldF9jbG9ja3MobWRwNV9tZHNzKTsK IAlpZiAocmV0KSB7CiAJCWRldl9lcnIoZGV2LT5kZXYsICJmYWlsZWQgdG8gZ2V0IGNsb2Nrczog JWRcbiIsIHJldCk7CiAJCWdvdG8gZmFpbDsKIAl9CiAKIAkvKiBSZWd1bGF0b3IgdG8gZW5hYmxl IEdEU0NzIGluIGRvd25zdHJlYW0ga2VybmVscyAqLwotCW1kc3MtPnZkZCA9IGRldm1fcmVndWxh dG9yX2dldChkZXYtPmRldiwgInZkZCIpOwotCWlmIChJU19FUlIobWRzcy0+dmRkKSkgewotCQly ZXQgPSBQVFJfRVJSKG1kc3MtPnZkZCk7CisJbWRwNV9tZHNzLT52ZGQgPSBkZXZtX3JlZ3VsYXRv cl9nZXQoZGV2LT5kZXYsICJ2ZGQiKTsKKwlpZiAoSVNfRVJSKG1kcDVfbWRzcy0+dmRkKSkgewor CQlyZXQgPSBQVFJfRVJSKG1kcDVfbWRzcy0+dmRkKTsKIAkJZ290byBmYWlsOwogCX0KIAotCXJl dCA9IHJlZ3VsYXRvcl9lbmFibGUobWRzcy0+dmRkKTsKKwlyZXQgPSByZWd1bGF0b3JfZW5hYmxl KG1kcDVfbWRzcy0+dmRkKTsKIAlpZiAocmV0KSB7CiAJCWRldl9lcnIoZGV2LT5kZXYsICJmYWls ZWQgdG8gZW5hYmxlIHJlZ3VsYXRvciB2ZGQ6ICVkXG4iLAogCQkJcmV0KTsKQEAgLTI1OCwyNSAr MjY1LDI2IEBAIGludCBtc21fbWRzc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJfQog CiAJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycShkZXYtPmRldiwgcGxhdGZvcm1fZ2V0X2lycShwZGV2 LCAwKSwKLQkJCSAgICAgICBtZHNzX2lycSwgMCwgIm1kc3NfaXNyIiwgbWRzcyk7CisJCQkgICAg ICAgbWRzc19pcnEsIDAsICJtZHNzX2lzciIsIG1kcDVfbWRzcyk7CiAJaWYgKHJldCkgewogCQlk ZXZfZXJyKGRldi0+ZGV2LCAiZmFpbGVkIHRvIGluaXQgaXJxOiAlZFxuIiwgcmV0KTsKIAkJZ290 byBmYWlsX2lycTsKIAl9CiAKLQlyZXQgPSBtZHNzX2lycV9kb21haW5faW5pdChtZHNzKTsKKwly ZXQgPSBtZHNzX2lycV9kb21haW5faW5pdChtZHA1X21kc3MpOwogCWlmIChyZXQpIHsKIAkJZGV2 X2VycihkZXYtPmRldiwgImZhaWxlZCB0byBpbml0IHN1Yi1ibG9jayBpcnFzOiAlZFxuIiwgcmV0 KTsKIAkJZ290byBmYWlsX2lycTsKIAl9CiAKLQlwcml2LT5tZHNzID0gbWRzczsKKwltZHA1X21k c3MtPmJhc2UuZnVuY3MgPSAmbWRzc19mdW5jczsKKwlwcml2LT5tZHNzID0gJm1kcDVfbWRzcy0+ YmFzZTsKIAogCXBtX3J1bnRpbWVfZW5hYmxlKGRldi0+ZGV2KTsKIAogCXJldHVybiAwOwogZmFp bF9pcnE6Ci0JcmVndWxhdG9yX2Rpc2FibGUobWRzcy0+dmRkKTsKKwlyZWd1bGF0b3JfZGlzYWJs ZShtZHA1X21kc3MtPnZkZCk7CiBmYWlsOgogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Ry di5jCmluZGV4IDliYjQzNmYuLjVkOGYxYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCkBAIC0yNzAs NiArMjcwLDcgQEAgc3RhdGljIGludCBtc21fZHJtX3VuaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYp CiAJc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsK IAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGRldi0+ZGV2X3ByaXZhdGU7CiAJc3Ry dWN0IG1zbV9rbXMgKmttcyA9IHByaXYtPmttczsKKwlzdHJ1Y3QgbXNtX21kc3MgKm1kc3MgPSBw cml2LT5tZHNzOwogCXN0cnVjdCBtc21fdmJsYW5rX2N0cmwgKnZibF9jdHJsID0gJnByaXYtPnZi bGFua19jdHJsOwogCXN0cnVjdCB2YmxhbmtfZXZlbnQgKnZibF9ldiwgKnRtcDsKIAlpbnQgaTsK QEAgLTM0Niw4ICszNDcsOCBAQCBzdGF0aWMgaW50IG1zbV9kcm1fdW5pbml0KHN0cnVjdCBkZXZp Y2UgKmRldikKIAogCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShwcml2LT5kZWJ1Z19yb290KTsK IAotCW1zbV9tZHNzX2Rlc3Ryb3koZGRldik7Ci0KKwlpZiAobWRzcyAmJiBtZHNzLT5mdW5jcykK KwkJbWRzcy0+ZnVuY3MtPmRlc3Ryb3koZGRldik7CiAKIAlkZGV2LT5kZXZfcHJpdmF0ZSA9IE5V TEw7CiAJa2ZyZWUocHJpdik7CkBAIC00NzYsNiArNDc3LDcgQEAgc3RhdGljIGludCBtc21fZHJt X2luaXQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2RyaXZlciAqZHJ2KQogCXN0cnVj dCBkcm1fZGV2aWNlICpkZGV2OwogCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXY7CiAJc3Ry dWN0IG1zbV9rbXMgKmttczsKKwlzdHJ1Y3QgbXNtX21kc3MgKm1kc3M7CiAKICNpZmRlZiBDT05G SUdfRFJNX01TTV9EUFUKIAlzdHJ1Y3QgZHB1X2RiZ19wb3dlcl9jdHJsIGRiZ19wb3dlcl9jdHJs ID0geyAwIH07CkBAIC01MDEsMTAgKzUwMywxMiBAQCBzdGF0aWMgaW50IG1zbV9kcm1faW5pdChz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZHJpdmVyICpkcnYpCiAJZGRldi0+ZGV2X3By aXZhdGUgPSBwcml2OwogCXByaXYtPmRldiA9IGRkZXY7CiAKLQlyZXQgPSBtc21fbWRzc19pbml0 KGRkZXYpOworCXJldCA9IG1kcDVfbWRzc19pbml0KGRkZXYpOwogCWlmIChyZXQpCiAJCWdvdG8g bWRzc19pbml0X2ZhaWw7CiAKKwltZHNzID0gcHJpdi0+bWRzczsKKwogCXByaXYtPndxID0gYWxs b2Nfb3JkZXJlZF93b3JrcXVldWUoIm1zbSIsIDApOwogCiAJSU5JVF9MSVNUX0hFQUQoJnByaXYt PmNsaWVudF9ldmVudF9saXN0KTsKQEAgLTc0Niw3ICs3NTAsOCBAQCBzdGF0aWMgaW50IG1zbV9k cm1faW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZHJpdmVyICpkcnYpCiAJZHB1 X3Bvd2VyX3Jlc291cmNlX2RlaW5pdChwZGV2LCAmcHJpdi0+cGhhbmRsZSk7CiBwb3dlcl9pbml0 X2ZhaWw6CiAjZW5kaWYKLQltc21fbWRzc19kZXN0cm95KGRkZXYpOworCWlmIChtZHNzICYmIG1k c3MtPmZ1bmNzKQorCQltZHNzLT5mdW5jcy0+ZGVzdHJveShkZGV2KTsKIG1kc3NfaW5pdF9mYWls OgogCWtmcmVlKHByaXYpOwogcHJpdl9hbGxvY19mYWlsOgpAQCAtMTQxNiwxMSArMTQyMSwxMiBA QCBzdGF0aWMgaW50IG1zbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQogewog CXN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAJc3RydWN0 IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBtc21f bWRzcyAqbWRzcyA9IHByaXYtPm1kc3M7CiAKIAlEQkcoIiIpOwogCi0JaWYgKHByaXYtPm1kc3Mp Ci0JCXJldHVybiAwOyAvLyBtc21fbWRzc19kaXNhYmxlKHByaXYtPm1kc3MpOworCWlmIChtZHNz ICYmIG1kc3MtPmZ1bmNzKQorCQltZHNzLT5mdW5jcy0+ZGlzYWJsZShtZHNzKTsKIAogCXJldHVy biAwOwogfQpAQCAtMTQyOSwxMSArMTQzNSwxMiBAQCBzdGF0aWMgaW50IG1zbV9ydW50aW1lX3Jl c3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGRl di0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IG1zbV9tZHNzICptZHNzID0gcHJpdi0+bWRzczsKIAog CURCRygiIik7CiAKLQlpZiAocHJpdi0+bWRzcykKLQkJcmV0dXJuIDA7Ly9tc21fbWRzc19lbmFi bGUocHJpdi0+bWRzcyk7CisJaWYgKG1kc3MgJiYgbWRzcy0+ZnVuY3MpCisJCW1kc3MtPmZ1bmNz LT5lbmFibGUobWRzcyk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vbXNtX2ttcy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fa21zLmgKaW5kZXgg NWIwOWNlNS4uOWE3YmM3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fa21z LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fa21zLmgKQEAgLTEyNiwxNiArMTI2LDI0 IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtc21fa21zX2luaXQoc3RydWN0IG1zbV9rbXMgKmttcywK IAlrbXMtPmZ1bmNzID0gZnVuY3M7CiB9CiAKLXN0cnVjdCBtc21fa21zICptZHA0X2ttc19pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwotCi1pbnQgbXNtX21kc3NfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKLXZvaWQgbXNtX21kc3NfZGVzdHJveShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKIHN0cnVjdCBtc21fa21zICptZHA1X2ttc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwogCiBzdHJ1Y3QgbXNtX2ttcyAqZHB1X2ttc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwogCi1pbnQgbXNtX21kc3NfZW5hYmxlKHN0cnVjdCBtc21fbWRzcyAqbWRzcyk7Ci1pbnQg bXNtX21kc3NfZGlzYWJsZShzdHJ1Y3QgbXNtX21kc3MgKm1kc3MpOworc3RydWN0IG1zbV9rbXMg Km1kcDRfa21zX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CisKK3N0cnVjdCBtc21fbWRz c19mdW5jcyB7CisJaW50ICgqZW5hYmxlKShzdHJ1Y3QgbXNtX21kc3MgKm1kc3MpOworCWludCAo KmRpc2FibGUpKHN0cnVjdCBtc21fbWRzcyAqbWRzcyk7CisJdm9pZCAoKmRlc3Ryb3kpKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOworfTsKKworc3RydWN0IG1zbV9tZHNzIHsKKwlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2OworCWNvbnN0IHN0cnVjdCBtc21fbWRzc19mdW5jcyAqZnVuY3M7Cit9Owor CitpbnQgbWRwNV9tZHNzX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKIC8qKgogICog TW9kZSBTZXQgVXRpbGl0eSBGdW5jdGlvbnMKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENl bnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXgg Rm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=