From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rajesh Yadav Subject: [DPU PATCH v2 03/12] drm/msm/dpu: add MDSS top level driver for dpu Date: Fri, 11 May 2018 20:19:29 +0530 Message-ID: <1526050178-31893-4-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 U29DcyBjb250YWluaW5nIGRwdSBoYXZlIGEgTURTUyB0b3AgbGV2ZWwgd3JhcHBlcgp3aGljaCBp bmNsdWRlcyBzdWItYmxvY2tzIGFzIGRwdSwgZHNpLCBwaHksIGRwIGV0Yy4KTURTUyB0b3AgbGV2 ZWwgd3JhcHBlciBtYW5hZ2VzIGNvbW1vbiByZXNvdXJjZXMgbGlrZQpjb21tb24gY2xvY2tzLCBw b3dlciBhbmQgaXJxIGZvciBpdHMgc3ViLWJsb2Nrcy4KCkN1cnJlbnRseSwgaW4gZHB1IGRyaXZl ciwgYWxsIHRoZSBwb3dlciByZXNvdXJjZQptYW5hZ2VtZW50IGlzIHBhcnQgb2YgcG93ZXJfaGFu ZGxlIHdoaWNoIG1hbmFnZXMKdGhlc2UgcmVzb3VyY2VzIHZpYSBhIGN1c3RvbSBpbXBsZW1lbnRh dGlvbi4gQW5kCnRoZSByZXNvdXJjZSByZWxhdGlvbnNoaXBzIGFyZSBub3QgbW9kZWxsZWQgcHJv cGVybHkKaW4gZHQuICBNb3Jlb3ZlciB0aGUgaXJxIGRvbWFpbiBoYW5kbGluZyBjb2RlIGlzIHBh cnQKb2YgZHB1IGRldmljZSAod2hpY2ggaXMgYSBjaGlsZCBkZXZpY2UpIGR1ZSB0byBsYWNrCm9m IGEgZGVkaWNhdGVkIGRyaXZlciBmb3IgTURTUyB0b3AgbGV2ZWwgd3JhcHBlcgpkZXZpY2UuCgpU aGlzIGNoYW5nZSBhZGRzIGRwdV9tZHNzIHRvcCBsZXZlbCBkcml2ZXIgdG8gaGFuZGxlCmNvbW1v biBjbG9jayBsaWtlIC0gY29yZSBjbG9jaywgYWhiIGNsb2NrCihmb3IgcmVnaXN0ZXIgYWNjZXNz KSwgbWFpbiBwb3dlciBzdXBwbHkgKGkuZS4gZ2RzYykKYW5kIGlycSBtYW5hZ2VtZW50LgpUaGUg dG9wIGxldmVsIG1kc3MgZGV2aWNlL2RyaXZlciBhY3RzIGFzIGFuIGludGVycnVwdApjb250cm9s bGVyIGFuZCBtYW5hZ2UgaHdpcnEgbWFwcGluZyBmb3IgaXRzIGNoaWxkCmRldmljZXMuCgpJdCBp bXBsZW1lbnRzIHJ1bnRpbWVfcG0gc3VwcG9ydCBmb3IgcmVzb3VyY2UgbWFuYWdlbWVudC4KQ2hp bGQgbm9kZXMgY2FuIGNvbnRyb2wgdGhlc2UgcmVzb3VyY2VzIHZpYSBydW50aW1lX3BtCmdldC9w dXQgY2FsbHMgb24gdGhlaXIgY29ycmVzcG9uZGluZyBkZXZpY2VzIGR1ZSB0byBwYXJlbnQKY2hp bGQgcmVsYXRpb25zaGlwIGRlZmluZWQgaW4gZHQuCgpDaGFuZ2VzIGluIHYyOgoJLSBtZXJnZSBf ZHB1X21kc3NfaHdfcmV2X2luaXQgdG8gZHB1X21kc3NfaW5pdCAoU2VhbiBQYXVsKQoJLSBtZXJn ZSBfZHB1X21kc3NfZ2V0X2ludHJfc291cmNlcyB0byBkcHVfbWRzc19pcnEgKFNlYW4gUGF1bCkK CS0gZml4IGluZGVudGF0aW9uIGZvciBpcnFfZmluZF9tYXBwaW5nIGNhbGwgKFNlYW4gUGF1bCkK CS0gcmVtb3ZlIHVubmVjZXNzYXJ5IGdvdG8gc3RhdGVtZW50cyBmcm9tIGRwdV9tZHNzX2lycSAo U2VhbiBQYXVsKQoJLSByZW1vdmUgcmVkdW5kYW50IHBhcmFtIGNoZWNrcyBmcm9tCgkgIGRwdV9t ZHNzX2lycV9tYXNrL3VubWFzayAoU2VhbiBQYXVsL0pvcmRhbiBDcm91c2UpCgktIHJlbW92ZSBy ZWR1bmRhbnQgcGFyYW0gY2hlY2tzIGZyb20KCSAgZHB1X21kc3NfaXJxZG9tYWluX21hcCAoU2Vh biBQYXVsL0pvcmRhbiBDcm91c2UpCgktIHJldHVybiBlcnJvciBjb2RlIGZyb20gZHB1X21kc3Nf ZW5hYmxlL2Rpc2FibGUgKFNlYW4gUGF1bC9Kb3JkYW4gQ3JvdXNlKQoJLSByZW1vdmUgcmVkdW5k YW50IHBhcmFtIGNoZWNrIGZyb20gZHB1X21kc3NfZGVzdHJveSAoU2VhbiBQYXVsKQoJLSByZW1v dmUgZXhwbGljaXQgY2FsbHMgdG8gZGV2bV9rZnJlZSAoU2VhbiBQYXVsL0pvcmRhbiBDcm91c2Up CgktIHJlbW92ZSBjb21wYXRpYmlsaXR5IGNoZWNrIGZyb20gZHB1X21kc3NfaW5pdCBhcwoJICBp dCBpcyBjb25kaXRpb25hbGx5IGNhbGxlZCBmcm9tIG1zbV9kcnYgKFNlYW4gUGF1bCkKCS0gcmV3 b3JrZWQgbXNtX2Rzc19wYXJzZV9jbG9jaygpIHRvIGFkZCByZXR1cm4gY2hlY2tzIGZvcgoJICBv Zl9wcm9wZXJ0eV9yZWFkXyogY2FsbHMsIGZpeCBsb2cgbWVzc2FnZSBhbmQKCSAgZml4IGFsaWdu bWVudCBpc3N1ZXMgKFNlYW4gUGF1bC9Kb3JkYW4gQ3JvdXNlKQoJLSByZW1vdmUgZXh0cmEgbGlu ZSBiZWZvcmUgZHB1X21kc3NfaW5pdCAoU2VhbiBQYXVsKQoJLSByZW1vdmUgcmVkdW5kYW50IHBh cmFtIGNoZWNrcyBmcm9tIF9faW50cl9vZmZzZXQgYW5kCgkgIG1ha2UgaXQgYSB2b2lkIGZ1bmN0 aW9uIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGVycm9yCgkgIGhhbmRsaW5nIGZyb20gY2FsbGVyIChK b3JkYW4gQ3JvdXNlKQoJLSByZW1vdmUgcmVkdW5kYW50IHBhcmFtIGNoZWNrIGZyb20gZHB1X21k c3NfaXJxIChKb3JkYW4gQ3JvdXNlKQoJLSBjaGFuZ2UgbWRzcyBhZGRyZXNzIHNwYWNlIGxvZyBt ZXNzYWdlIHRvIGRlYnVnIGFuZCB1c2UgJXBLIGZvcgoJICBrZXJuZWwgcG9pbnRlcnMgKEpvcmRh biBDcm91c2UpCgktIHJlbW92ZSB1bm5lY2Vzc2FyeSBsb2cgbWVzc2FnZSBmcm9tIG1zbV9kc3Nf cGFyc2VfY2xvY2sgKEpvcmRhbiBDcm91c2UpCgktIGRvbid0IGV4cG9ydCBtc21fZHNzX3BhcnNl X2Nsb2NrIHNpbmNlIGl0IGlzIHVzZWQKCSAgb25seSBieSBkcHUgZHJpdmVyIChKb3JkYW4gQ3Jv dXNlKQoKU2lnbmVkLW9mZi1ieTogUmFqZXNoIFlhZGF2IDxyeWFkYXZAY29kZWF1cm9yYS5vcmc+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuYyAgICAg IHwgIDk3IC0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVf aXJxLmggICAgICB8ICAxNCAtLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X2NhdGFsb2cuYyAgICB8ICAgOSAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfY2F0YWxvZy5oICAgIHwgICA3IC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9od19pbnRlcnJ1cHRzLmMgfCAgMjggKy0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfaHdfaW50ZXJydXB0cy5oIHwgIDExIC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9pcnEuYyAgICAgICAgICAgfCAgNDggKy0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2ttcy5jICAgICAgICAgICB8ICAgNiAtCiBkcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfa21zLmggICAgICAgICAgIHwgICAyIC0KIGRyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9tZHNzLmMgICAgICAgICAgfCAyNTQgKysrKysrKysrKysrKysrKysr KysrKwogZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfaW9fdXRpbC5jICAgICAgICAgICAgICAgICB8 ICA1NyArKysrKwogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMgICAgICAgICAgICAgICAg ICAgICB8ICAyNiArKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oICAgICAgICAgICAg ICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogaW5jbHVkZS9saW51eC9kcHVfaW9fdXRpbC5oICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMiArCiAxNiBmaWxlcyBjaGFuZ2VkLCAzMzkgaW5zZXJ0aW9ucygr KSwgMjI2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9tZHNzLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQppbmRleCBkNzU1OGVkLi5k OTgyNmMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKQEAgLTgxLDYgKzgxLDcgQEAgbXNtLXkgOj0gXAog CWRpc3AvZHB1MS9kcHVfcmVnX2RtYS5vIFwKIAlkaXNwL2RwdTEvZHB1X3JtLm8gXAogCWRpc3Av ZHB1MS9kcHVfdmJpZi5vIFwKKwlkaXNwL2RwdTEvZHB1X21kc3MubyBcCiAJZHB1X2RiZy5vIFwK IAlkcHVfaW9fdXRpbC5vIFwKIAlkcHVfZGJnX2V2dGxvZy5vIFwKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX2lycS5jIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmMKaW5kZXggZmUzMzAxMy4uOTc3YWRjNCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmMKQEAgLTUxNSwx MDMgKzUxNSw2IEBAIHZvaWQgZHB1X2NvcmVfaXJxX3VuaW5zdGFsbChzdHJ1Y3QgZHB1X2ttcyAq ZHB1X2ttcykKIAlkcHVfa21zLT5pcnFfb2JqLnRvdGFsX2lycXMgPSAwOwogfQogCi1zdGF0aWMg dm9pZCBkcHVfY29yZV9pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmlycWQpCi17Ci0Jc3RydWN0 IGRwdV9rbXMgKmRwdV9rbXM7Ci0KLQlpZiAoIWlycWQgfHwgIWlycV9kYXRhX2dldF9pcnFfY2hp cF9kYXRhKGlycWQpKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbWV0ZXJzIGlycWQgJWRc biIsIGlycWQgIT0gTlVMTCk7Ci0JCXJldHVybjsKLQl9Ci0JZHB1X2ttcyA9IGlycV9kYXRhX2dl dF9pcnFfY2hpcF9kYXRhKGlycWQpOwotCi0JLyogbWVtb3J5IGJhcnJpZXIgKi8KLQlzbXBfbWJf X2JlZm9yZV9hdG9taWMoKTsKLQljbGVhcl9iaXQoaXJxZC0+aHdpcnEsICZkcHVfa21zLT5pcnFf Y29udHJvbGxlci5lbmFibGVkX21hc2spOwotCS8qIG1lbW9yeSBiYXJyaWVyICovCi0Jc21wX21i X19hZnRlcl9hdG9taWMoKTsKLX0KLQotc3RhdGljIHZvaWQgZHB1X2NvcmVfaXJxX3VubWFzayhz dHJ1Y3QgaXJxX2RhdGEgKmlycWQpCi17Ci0Jc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7Ci0KLQlp ZiAoIWlycWQgfHwgIWlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGlycWQpKSB7Ci0JCURQVV9F UlJPUigiaW52YWxpZCBwYXJhbWV0ZXJzIGlycWQgJWRcbiIsIGlycWQgIT0gTlVMTCk7Ci0JCXJl dHVybjsKLQl9Ci0JZHB1X2ttcyA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGlycWQpOwot Ci0JLyogbWVtb3J5IGJhcnJpZXIgKi8KLQlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKLQlzZXRf Yml0KGlycWQtPmh3aXJxLCAmZHB1X2ttcy0+aXJxX2NvbnRyb2xsZXIuZW5hYmxlZF9tYXNrKTsK LQkvKiBtZW1vcnkgYmFycmllciAqLwotCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Ci19Ci0KLXN0 YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgZHB1X2NvcmVfaXJxX2NoaXAgPSB7Ci0JLm5hbWUgPSAiZHB1 IiwKLQkuaXJxX21hc2sgPSBkcHVfY29yZV9pcnFfbWFzaywKLQkuaXJxX3VubWFzayA9IGRwdV9j b3JlX2lycV91bm1hc2ssCi19OwotCi1zdGF0aWMgaW50IGRwdV9jb3JlX2lycWRvbWFpbl9tYXAo c3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwKLQkJdW5zaWduZWQgaW50IGlycSwgaXJxX2h3X251 bWJlcl90IGh3aXJxKQotewotCXN0cnVjdCBkcHVfa21zICpkcHVfa21zOwotCWludCByYzsKLQot CWlmICghZG9tYWluIHx8ICFkb21haW4tPmhvc3RfZGF0YSkgewotCQlEUFVfRVJST1IoImludmFs aWQgcGFyYW1ldGVycyBkb21haW4gJWRcbiIsIGRvbWFpbiAhPSBOVUxMKTsKLQkJcmV0dXJuIC1F SU5WQUw7Ci0JfQotCWRwdV9rbXMgPSBkb21haW4tPmhvc3RfZGF0YTsKLQotCWlycV9zZXRfY2hp cF9hbmRfaGFuZGxlcihpcnEsICZkcHVfY29yZV9pcnFfY2hpcCwgaGFuZGxlX2xldmVsX2lycSk7 Ci0JcmMgPSBpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGRwdV9rbXMpOwotCi0JcmV0dXJuIHJjOwot fQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIGRwdV9jb3JlX2lycWRvbWFp bl9vcHMgPSB7Ci0JLm1hcCA9IGRwdV9jb3JlX2lycWRvbWFpbl9tYXAsCi0JLnhsYXRlID0gaXJx X2RvbWFpbl94bGF0ZV9vbmVjZWxsLAotfTsKLQotaW50IGRwdV9jb3JlX2lycV9kb21haW5fYWRk KHN0cnVjdCBkcHVfa21zICpkcHVfa21zKQotewotCXN0cnVjdCBkZXZpY2UgKmRldjsKLQlzdHJ1 Y3QgaXJxX2RvbWFpbiAqZG9tYWluOwotCi0JaWYgKCFkcHVfa21zLT5kZXYgfHwgIWRwdV9rbXMt PmRldi0+ZGV2KSB7Ci0JCXByX2VycigiaW52YWxpZCBkZXZpY2UgaGFuZGxlc1xuIik7Ci0JCXJl dHVybiAtRUlOVkFMOwotCX0KLQotCWRldiA9IGRwdV9rbXMtPmRldi0+ZGV2OwotCi0JZG9tYWlu ID0gaXJxX2RvbWFpbl9hZGRfbGluZWFyKGRldi0+b2Zfbm9kZSwgMzIsCi0JCQkmZHB1X2NvcmVf aXJxZG9tYWluX29wcywgZHB1X2ttcyk7Ci0JaWYgKCFkb21haW4pIHsKLQkJcHJfZXJyKCJmYWls ZWQgdG8gYWRkIGlycV9kb21haW5cbiIpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlkcHVf a21zLT5pcnFfY29udHJvbGxlci5lbmFibGVkX21hc2sgPSAwOwotCWRwdV9rbXMtPmlycV9jb250 cm9sbGVyLmRvbWFpbiA9IGRvbWFpbjsKLQotCXJldHVybiAwOwotfQotCi1pbnQgZHB1X2NvcmVf aXJxX2RvbWFpbl9maW5pKHN0cnVjdCBkcHVfa21zICpkcHVfa21zKQotewotCWlmIChkcHVfa21z LT5pcnFfY29udHJvbGxlci5kb21haW4pIHsKLQkJaXJxX2RvbWFpbl9yZW1vdmUoZHB1X2ttcy0+ aXJxX2NvbnRyb2xsZXIuZG9tYWluKTsKLQkJZHB1X2ttcy0+aXJxX2NvbnRyb2xsZXIuZG9tYWlu ID0gTlVMTDsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KIGlycXJldHVybl90IGRwdV9jb3JlX2lycShz dHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykKIHsKIAkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfY29yZV9pcnEuaAppbmRleCA2NGE1NGZlLi44ZmE1OWRiIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuaApAQCAtMzgsMjAgKzM4LDYg QEAKIHZvaWQgZHB1X2NvcmVfaXJxX3VuaW5zdGFsbChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcyk7 CiAKIC8qKgotICogZHB1X2NvcmVfaXJxX2RvbWFpbl9hZGQgLSBBZGQgY29yZSBJUlEgZG9tYWlu IGZvciBEUFUKLSAqIEBkcHVfa21zOgkJRFBVIGhhbmRsZQotICogQHJldHVybjoJCW5vbmUKLSAq LwotaW50IGRwdV9jb3JlX2lycV9kb21haW5fYWRkKHN0cnVjdCBkcHVfa21zICpkcHVfa21zKTsK LQotLyoqCi0gKiBkcHVfY29yZV9pcnFfZG9tYWluX2ZpbmkgLSB1bmluc3RhbGwgY29yZSBJUlEg ZG9tYWluCi0gKiBAZHB1X2ttczoJCURQVSBoYW5kbGUKLSAqIEByZXR1cm46CQkwIGlmIHN1Y2Nl c3M7IGVycm9yIGNvZGUgb3RoZXJ3aXNlCi0gKi8KLWludCBkcHVfY29yZV9pcnFfZG9tYWluX2Zp bmkoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMpOwotCi0vKioKICAqIGRwdV9jb3JlX2lycSAtIGNv cmUgSVJRIGhhbmRsZXIKICAqIEBkcHVfa21zOgkJRFBVIGhhbmRsZQogICogQHJldHVybjoJCWlu dGVycnVwdCBoYW5kbGluZyBzdGF0dXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfaHdfY2F0YWxvZy5jCmluZGV4IDhlNzc5YzAuLmM1YjM3MGYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYwpAQCAtNzcsMTMgKzc3LDYg QEAKIAkuaGFzX2lkbGVfcGMgPSB0cnVlLAogfTsKIAotc3RhdGljIHN0cnVjdCBkcHVfbWRzc19i YXNlX2NmZyBzZG04NDVfbWRzc1tdID0gewotCXsKLQkubmFtZSA9ICJtZHNzXzAiLCAuaWQgPSBN RFBfVE9QLAotCS5iYXNlID0gMHgwLCAuZmVhdHVyZXMgPSAwCi0JfSwKLX07Ci0KIHN0YXRpYyBz dHJ1Y3QgZHB1X21kcF9jZmcgc2RtODQ1X21kcFtdID0gewogCXsKIAkubmFtZSA9ICJ0b3BfMCIs IC5pZCA9IE1EUF9UT1AsCkBAIC01NTAsOCArNTQzLDYgQEAgdm9pZCBzZG04NDVfY2ZnX2luaXQo c3RydWN0IGRwdV9tZHNzX2NmZyAqZHB1X2NmZykKIHsKIAkqZHB1X2NmZyA9IChzdHJ1Y3QgZHB1 X21kc3NfY2ZnKXsKIAkJLmNhcHMgPSAmc2RtODQ1X2RwdV9jYXBzLAotCQkubWRzc19jb3VudCA9 IEFSUkFZX1NJWkUoc2RtODQ1X21kc3MpLAotCQkubWRzcyA9IHNkbTg0NV9tZHNzLAogCQkubWRw X2NvdW50ID0gQVJSQVlfU0laRShzZG04NDVfbWRwKSwKIAkJLm1kcCA9IHNkbTg0NV9tZHAsCiAJ CS5jdGxfY291bnQgPSBBUlJBWV9TSVpFKHNkbTg0NV9jdGwpLApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmgKaW5kZXggMzliZWMwYS4uNzA4NDY0MyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oCkBA IC00OTIsMTAgKzQ5Miw2IEBAIHN0cnVjdCBkcHVfd2Jfc3ViX2Jsb2NrcyB7CiAJdTMyIG1heGxp bmV3aWR0aDsKIH07CiAKLXN0cnVjdCBkcHVfbWRzc19iYXNlX2NmZyB7Ci0JRFBVX0hXX0JMS19J TkZPOwotfTsKLQogLyoqCiAgKiBkcHVfY2xrX2N0cmxfdHlwZSAtIERlZmluZXMgdG9wIGxldmVs IGNsb2NrIGNvbnRyb2wgc2lnbmFscwogICovCkBAIC04NzUsOSArODcxLDYgQEAgc3RydWN0IGRw dV9tZHNzX2NmZyB7CiAKIAljb25zdCBzdHJ1Y3QgZHB1X2NhcHMgKmNhcHM7CiAKLQl1MzIgbWRz c19jb3VudDsKLQlzdHJ1Y3QgZHB1X21kc3NfYmFzZV9jZmcgKm1kc3M7Ci0KIAl1MzIgbWRwX2Nv dW50OwogCXN0cnVjdCBkcHVfbWRwX2NmZyAqbWRwOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5jIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVycnVwdHMuYwppbmRleCA5NzY3Y2M4Li43M2YwODRj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJy dXB0cy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1 cHRzLmMKQEAgLTIyLDcgKzIyLDYgQEAKICAqIFJlZ2lzdGVyIG9mZnNldHMgaW4gTURTUyByZWdp c3RlciBmaWxlIGZvciB0aGUgaW50ZXJydXB0IHJlZ2lzdGVycwogICogdy5yLnQuIHRvIHRoZSBN RFNTIGJhc2UKICAqLwotI2RlZmluZSBIV19JTlRSX1NUQVRVUwkJCTB4MDAxMAogI2RlZmluZSBN RFBfU1NQUF9UT1AwX09GRgkJMHgxMDAwCiAjZGVmaW5lIE1EUF9JTlRGXzBfT0ZGCQkJMHg2QjAw MAogI2RlZmluZSBNRFBfSU5URl8xX09GRgkJCTB4NkI4MDAKQEAgLTEwMTcsMTcgKzEwMTYsNiBA QCBzdGF0aWMgaW50IGRwdV9od19pbnRyX2dldF92YWxpZF9pbnRlcnJ1cHRzKHN0cnVjdCBkcHVf aHdfaW50ciAqaW50ciwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBkcHVfaHdfaW50cl9n ZXRfaW50ZXJydXB0X3NvdXJjZXMoc3RydWN0IGRwdV9od19pbnRyICppbnRyLAotCQl1aW50MzJf dCAqc291cmNlcykKLXsKLQlpZiAoIWludHIgfHwgIXNvdXJjZXMpCi0JCXJldHVybiAtRUlOVkFM OwotCi0JKnNvdXJjZXMgPSBEUFVfUkVHX1JFQUQoJmludHItPmh3LCBIV19JTlRSX1NUQVRVUyk7 Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgZHB1X2h3X2ludHJfZ2V0X2ludGVycnVw dF9zdGF0dXNlcyhzdHJ1Y3QgZHB1X2h3X2ludHIgKmludHIpCiB7CiAJaW50IGk7CkBAIC0xMTYy LDcgKzExNTAsNiBAQCBzdGF0aWMgdm9pZCBfX3NldHVwX2ludHJfb3BzKHN0cnVjdCBkcHVfaHdf aW50cl9vcHMgKm9wcykKIAlvcHMtPmNsZWFyX2FsbF9pcnFzID0gZHB1X2h3X2ludHJfY2xlYXJf aXJxczsKIAlvcHMtPmRpc2FibGVfYWxsX2lycXMgPSBkcHVfaHdfaW50cl9kaXNhYmxlX2lycXM7 CiAJb3BzLT5nZXRfdmFsaWRfaW50ZXJydXB0cyA9IGRwdV9od19pbnRyX2dldF92YWxpZF9pbnRl cnJ1cHRzOwotCW9wcy0+Z2V0X2ludGVycnVwdF9zb3VyY2VzID0gZHB1X2h3X2ludHJfZ2V0X2lu dGVycnVwdF9zb3VyY2VzOwogCW9wcy0+Z2V0X2ludGVycnVwdF9zdGF0dXNlcyA9IGRwdV9od19p bnRyX2dldF9pbnRlcnJ1cHRfc3RhdHVzZXM7CiAJb3BzLT5jbGVhcl9pbnRlcnJ1cHRfc3RhdHVz ID0gZHB1X2h3X2ludHJfY2xlYXJfaW50ZXJydXB0X3N0YXR1czsKIAlvcHMtPmNsZWFyX2ludHJf c3RhdHVzX25vbG9jayA9IGRwdV9od19pbnRyX2NsZWFyX2ludHJfc3RhdHVzX25vbG9jazsKQEAg LTExNzAsMjMgKzExNTcsMTggQEAgc3RhdGljIHZvaWQgX19zZXR1cF9pbnRyX29wcyhzdHJ1Y3Qg ZHB1X2h3X2ludHJfb3BzICpvcHMpCiAJb3BzLT5nZXRfaW50cl9zdGF0dXNfbm9sb2NrID0gZHB1 X2h3X2ludHJfZ2V0X2ludHJfc3RhdHVzX25vbG9jazsKIH0KIAotc3RhdGljIHN0cnVjdCBkcHVf bWRzc19iYXNlX2NmZyAqX19pbnRyX29mZnNldChzdHJ1Y3QgZHB1X21kc3NfY2ZnICptLAorc3Rh dGljIHZvaWQgX19pbnRyX29mZnNldChzdHJ1Y3QgZHB1X21kc3NfY2ZnICptLAogCQl2b2lkIF9f aW9tZW0gKmFkZHIsIHN0cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmh3KQogewotCWlmICghbSB8 fCAhYWRkciB8fCAhaHcgfHwgbS0+bWRwX2NvdW50ID09IDApCi0JCXJldHVybiBOVUxMOwotCiAJ aHctPmJhc2Vfb2ZmID0gYWRkcjsKLQlody0+YmxrX29mZiA9IG0tPm1kc3NbMF0uYmFzZTsKKwlo dy0+YmxrX29mZiA9IG0tPm1kcFswXS5iYXNlOwogCWh3LT5od3ZlcnNpb24gPSBtLT5od3ZlcnNp b247Ci0JcmV0dXJuICZtLT5tZHNzWzBdOwogfQogCiBzdHJ1Y3QgZHB1X2h3X2ludHIgKmRwdV9o d19pbnRyX2luaXQodm9pZCBfX2lvbWVtICphZGRyLAogCQlzdHJ1Y3QgZHB1X21kc3NfY2ZnICpt KQogewogCXN0cnVjdCBkcHVfaHdfaW50ciAqaW50cjsKLQlzdHJ1Y3QgZHB1X21kc3NfYmFzZV9j ZmcgKmNmZzsKIAogCWlmICghYWRkciB8fCAhbSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7 CkBAIC0xMTk1LDExICsxMTc3LDcgQEAgc3RydWN0IGRwdV9od19pbnRyICpkcHVfaHdfaW50cl9p bml0KHZvaWQgX19pb21lbSAqYWRkciwKIAlpZiAoIWludHIpCiAJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwogCi0JY2ZnID0gX19pbnRyX29mZnNldChtLCBhZGRyLCAmaW50ci0+aHcpOwotCWlm ICghY2ZnKSB7Ci0JCWtmcmVlKGludHIpOwotCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKLQl9 CisJX19pbnRyX29mZnNldChtLCBhZGRyLCAmaW50ci0+aHcpOwogCV9fc2V0dXBfaW50cl9vcHMo JmludHItPm9wcyk7CiAKIAlpbnRyLT5pcnFfaWR4X3RibF9zaXplID0gQVJSQVlfU0laRShkcHVf aXJxX21hcCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfaW50ZXJydXB0cy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2lu dGVycnVwdHMuaAppbmRleCAyZjFhODI4Li5iNTJjZGNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLmgKQEAgLTI0MiwxNyArMjQyLDYg QEAgc3RydWN0IGRwdV9od19pbnRyX29wcyB7CiAJaW50ICgqZ2V0X3ZhbGlkX2ludGVycnVwdHMp KAogCQkJc3RydWN0IGRwdV9od19pbnRyICppbnRyLAogCQkJdWludDMyX3QgKm1hc2spOwotCi0J LyoqCi0JICogZ2V0X2ludGVycnVwdF9zb3VyY2VzIC0gR2V0cyB0aGUgYml0bWFzayBvZiB0aGUg RFBVIGludGVycnVwdAotCSAqICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSB0aGF0IGFy ZSBjdXJyZW50bHkgZmlyZWQuCi0JICogQGludHI6CUhXIGludGVycnVwdCBoYW5kbGUKLQkgKiBA c291cmNlczoJUmV0dXJuaW5nIHRoZSBEUFUgaW50ZXJydXB0IHNvdXJjZSBzdGF0dXMgYml0IG1h c2sKLQkgKiBAcmV0dXJuOgkwIGZvciBzdWNjZXNzLCBvdGhlcndpc2UgZmFpbHVyZQotCSAqLwot CWludCAoKmdldF9pbnRlcnJ1cHRfc291cmNlcykoCi0JCQlzdHJ1Y3QgZHB1X2h3X2ludHIgKmlu dHIsCi0JCQl1aW50MzJfdCAqc291cmNlcyk7CiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9pcnEuYwppbmRleCAxOWMwOTI5Li5kNWU2Y2UwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2lycS5jCkBAIC0xOSw1NiArMTksMTEgQEAKICNpbmNsdWRl ICJkcHVfaXJxLmgiCiAjaW5jbHVkZSAiZHB1X2NvcmVfaXJxLmgiCiAKLXN0YXRpYyB1aW50MzJf dCBnX2RwdV9pcnFfc3RhdHVzOwotCiBpcnFyZXR1cm5fdCBkcHVfaXJxKHN0cnVjdCBtc21fa21z ICprbXMpCiB7CiAJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMgPSB0b19kcHVfa21zKGttcyk7Ci0J dTMyIGludGVycnVwdHM7Ci0KLQlkcHVfa21zLT5od19pbnRyLT5vcHMuZ2V0X2ludGVycnVwdF9z b3VyY2VzKGRwdV9rbXMtPmh3X2ludHIsCi0JCQkmaW50ZXJydXB0cyk7Ci0KLQkvKiBzdG9yZSBp cnEgc3RhdHVzIGluIGNhc2Ugb2YgaXJxLXN0b3JtIGRlYnVnZ2luZyAqLwotCWdfZHB1X2lycV9z dGF0dXMgPSBpbnRlcnJ1cHRzOwotCi0JLyoKLQkgKiBUYWtpbmcgY2FyZSBvZiBNRFAgaW50ZXJy dXB0Ci0JICovCi0JaWYgKGludGVycnVwdHMgJiBJUlFfU09VUkNFX01EUCkgewotCQlpbnRlcnJ1 cHRzICY9IH5JUlFfU09VUkNFX01EUDsKLQkJZHB1X2NvcmVfaXJxKGRwdV9rbXMpOwotCX0KLQot CS8qCi0JICogUm91dGluZyBhbGwgb3RoZXIgaW50ZXJydXB0cyB0byBleHRlcm5hbCBkcml2ZXJz Ci0JICovCi0Jd2hpbGUgKGludGVycnVwdHMpIHsKLQkJaXJxX2h3X251bWJlcl90IGh3aXJxID0g ZmxzKGludGVycnVwdHMpIC0gMTsKLQkJdW5zaWduZWQgaW50IG1hcHBpbmc7Ci0JCWludCByYzsK LQotCQltYXBwaW5nID0gaXJxX2ZpbmRfbWFwcGluZyhkcHVfa21zLT5pcnFfY29udHJvbGxlci5k b21haW4sCi0JCQkJaHdpcnEpOwotCQlpZiAobWFwcGluZyA9PSAwKSB7Ci0JCQlEUFVfRVZUMzIo aHdpcnEsIERQVV9FVlRMT0dfRVJST1IpOwotCQkJZ290byBlcnJvcjsKLQkJfQotCi0JCXJjID0g Z2VuZXJpY19oYW5kbGVfaXJxKG1hcHBpbmcpOwotCQlpZiAocmMgPCAwKSB7Ci0JCQlEUFVfRVZU MzIoaHdpcnEsIG1hcHBpbmcsIHJjLCBEUFVfRVZUTE9HX0VSUk9SKTsKLQkJCWdvdG8gZXJyb3I7 Ci0JCX0KLQotCQlpbnRlcnJ1cHRzICY9IH4oMSA8PCBod2lycSk7Ci0JfQotCi0JcmV0dXJuIElS UV9IQU5ETEVEOwogCi1lcnJvcjoKLQkvKiBiYWQgc2l0dWF0aW9uLCBpbmZvcm0gaXJxIHN5c3Rl bSwgaXQgbWF5IGRpc2FibGUgb3ZlcmFsbCBNRFNTIGlycSAqLwotCXJldHVybiBJUlFfTk9ORTsK KwlyZXR1cm4gZHB1X2NvcmVfaXJxKGRwdV9rbXMpOwogfQogCiB2b2lkIGRwdV9pcnFfcHJlaW5z dGFsbChzdHJ1Y3QgbXNtX2ttcyAqa21zKQpAQCAtMTA4LDUgKzYzLDQgQEAgdm9pZCBkcHVfaXJx X3VuaW5zdGFsbChzdHJ1Y3QgbXNtX2ttcyAqa21zKQogCX0KIAogCWRwdV9jb3JlX2lycV91bmlu c3RhbGwoZHB1X2ttcyk7Ci0JZHB1X2NvcmVfaXJxX2RvbWFpbl9maW5pKGRwdV9rbXMpOwogfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jCmluZGV4IDA2YWRiMzguLmU0YWI3 NTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKQEAgLTYzNiwxMCAr NjM2LDYgQEAgc3RhdGljIGludCBfZHB1X2ttc19kcm1fb2JqX2luaXQoc3RydWN0IGRwdV9rbXMg KmRwdV9rbXMpCiAJcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJY2F0YWxvZyA9IGRwdV9rbXMt PmNhdGFsb2c7CiAKLQlyZXQgPSBkcHVfY29yZV9pcnFfZG9tYWluX2FkZChkcHVfa21zKTsKLQlp ZiAocmV0KQotCQlnb3RvIGZhaWxfaXJxOwotCiAJLyoKIAkgKiBDcmVhdGUgZW5jb2RlciBhbmQg cXVlcnkgZGlzcGxheSBkcml2ZXJzIHRvIGNyZWF0ZQogCSAqIGJyaWRnZXMgYW5kIGNvbm5lY3Rv cnMKQEAgLTcxNiw4ICs3MTIsNiBAQCBzdGF0aWMgaW50IF9kcHVfa21zX2RybV9vYmpfaW5pdChz dHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykKIAlyZXR1cm4gMDsKIGZhaWw6CiAJX2RwdV9rbXNfZHJt X29ial9kZXN0cm95KGRwdV9rbXMpOwotZmFpbF9pcnE6Ci0JZHB1X2NvcmVfaXJxX2RvbWFpbl9m aW5pKGRwdV9rbXMpOwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9rbXMuaAppbmRleCA1YjBjMDgxLi5hMWMwOTEwIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2ttcy5oCkBAIC0xODQsOCArMTg0LDYgQEAgc3RydWN0IGRwdV9rbXMg ewogCXN0cnVjdCByZWd1bGF0b3IgKm1tYWdpYzsKIAlzdHJ1Y3QgcmVndWxhdG9yICp2ZW51czsK IAotCXN0cnVjdCBkcHVfaXJxX2NvbnRyb2xsZXIgaXJxX2NvbnRyb2xsZXI7Ci0KIAlzdHJ1Y3Qg ZHB1X2h3X2ludHIgKmh3X2ludHI7CiAJc3RydWN0IGRwdV9pcnEgaXJxX29iajsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X21kc3MuYyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9tZHNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uY2U2ODBlYQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9tZHNzLmMKQEAgLTAsMCArMSwyNTQgQEAKKy8qCisgKiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorICogQ29weXJpZ2h0IChjKSAyMDE4LCBUaGUgTGlu dXggRm91bmRhdGlvbgorICovCisKKyNpbmNsdWRlICJkcHVfa21zLmgiCisKKyNkZWZpbmUgdG9f ZHB1X21kc3MoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcHVfbWRzcywgYmFzZSkKKworI2Rl ZmluZSBIV19JTlRSX1NUQVRVUwkJCTB4MDAxMAorCitzdHJ1Y3QgZHB1X21kc3MgeworCXN0cnVj dCBtc21fbWRzcyBiYXNlOworCXZvaWQgX19pb21lbSAqbW1pbzsKKwl1bnNpZ25lZCBsb25nIG1t aW9fbGVuOworCXUzMiBod3ZlcnNpb247CisJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgbXA7CisJ c3RydWN0IGRwdV9pcnFfY29udHJvbGxlciBpcnFfY29udHJvbGxlcjsKK307CisKK3N0YXRpYyBp cnFyZXR1cm5fdCBkcHVfbWRzc19pcnEoaW50IGlycSwgdm9pZCAqYXJnKQoreworCXN0cnVjdCBk cHVfbWRzcyAqZHB1X21kc3MgPSBhcmc7CisJdTMyIGludGVycnVwdHM7CisKKwlpbnRlcnJ1cHRz ID0gcmVhZGxfcmVsYXhlZChkcHVfbWRzcy0+bW1pbyArIEhXX0lOVFJfU1RBVFVTKTsKKworCXdo aWxlIChpbnRlcnJ1cHRzKSB7CisJCWlycV9od19udW1iZXJfdCBod2lycSA9IGZscyhpbnRlcnJ1 cHRzKSAtIDE7CisJCXVuc2lnbmVkIGludCBtYXBwaW5nOworCQlpbnQgcmM7CisKKwkJbWFwcGlu ZyA9IGlycV9maW5kX21hcHBpbmcoZHB1X21kc3MtPmlycV9jb250cm9sbGVyLmRvbWFpbiwKKwkJ CQkJICAgaHdpcnEpOworCQlpZiAobWFwcGluZyA9PSAwKSB7CisJCQlEUFVfRVZUMzIoaHdpcnEs IERQVV9FVlRMT0dfRVJST1IpOworCQkJcmV0dXJuIElSUV9OT05FOworCQl9CisKKwkJcmMgPSBn ZW5lcmljX2hhbmRsZV9pcnEobWFwcGluZyk7CisJCWlmIChyYyA8IDApIHsKKwkJCURQVV9FVlQz Mihod2lycSwgbWFwcGluZywgcmMsIERQVV9FVlRMT0dfRVJST1IpOworCQkJcmV0dXJuIElSUV9O T05FOworCQl9CisKKwkJaW50ZXJydXB0cyAmPSB+KDEgPDwgaHdpcnEpOworCX0KKworCXJldHVy biBJUlFfSEFORExFRDsKK30KKworc3RhdGljIHZvaWQgZHB1X21kc3NfaXJxX21hc2soc3RydWN0 IGlycV9kYXRhICppcnFkKQoreworCXN0cnVjdCBkcHVfbWRzcyAqZHB1X21kc3MgPSBpcnFfZGF0 YV9nZXRfaXJxX2NoaXBfZGF0YShpcnFkKTsKKworCS8qIG1lbW9yeSBiYXJyaWVyICovCisJc21w X21iX19iZWZvcmVfYXRvbWljKCk7CisJY2xlYXJfYml0KGlycWQtPmh3aXJxLCAmZHB1X21kc3Mt PmlycV9jb250cm9sbGVyLmVuYWJsZWRfbWFzayk7CisJLyogbWVtb3J5IGJhcnJpZXIgKi8KKwlz bXBfbWJfX2FmdGVyX2F0b21pYygpOworfQorCitzdGF0aWMgdm9pZCBkcHVfbWRzc19pcnFfdW5t YXNrKHN0cnVjdCBpcnFfZGF0YSAqaXJxZCkKK3sKKwlzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNz ID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoaXJxZCk7CisKKwkvKiBtZW1vcnkgYmFycmll ciAqLworCXNtcF9tYl9fYmVmb3JlX2F0b21pYygpOworCXNldF9iaXQoaXJxZC0+aHdpcnEsICZk cHVfbWRzcy0+aXJxX2NvbnRyb2xsZXIuZW5hYmxlZF9tYXNrKTsKKwkvKiBtZW1vcnkgYmFycmll ciAqLworCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaXJxX2No aXAgZHB1X21kc3NfaXJxX2NoaXAgPSB7CisJLm5hbWUgPSAiZHB1X21kc3MiLAorCS5pcnFfbWFz ayA9IGRwdV9tZHNzX2lycV9tYXNrLAorCS5pcnFfdW5tYXNrID0gZHB1X21kc3NfaXJxX3VubWFz aywKK307CisKK3N0YXRpYyBpbnQgZHB1X21kc3NfaXJxZG9tYWluX21hcChzdHJ1Y3QgaXJxX2Rv bWFpbiAqZG9tYWluLAorCQl1bnNpZ25lZCBpbnQgaXJxLCBpcnFfaHdfbnVtYmVyX3QgaHdpcnEp Cit7CisJc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcyA9IGRvbWFpbi0+aG9zdF9kYXRhOworCWlu dCByZXQ7CisKKwlpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCAmZHB1X21kc3NfaXJxX2No aXAsIGhhbmRsZV9sZXZlbF9pcnEpOworCXJldCA9IGlycV9zZXRfY2hpcF9kYXRhKGlycSwgZHB1 X21kc3MpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9t YWluX29wcyBkcHVfbWRzc19pcnFkb21haW5fb3BzID0geworCS5tYXAgPSBkcHVfbWRzc19pcnFk b21haW5fbWFwLAorCS54bGF0ZSA9IGlycV9kb21haW5feGxhdGVfb25lY2VsbCwKK307CisKK3N0 YXRpYyBpbnQgX2RwdV9tZHNzX2lycV9kb21haW5fYWRkKHN0cnVjdCBkcHVfbWRzcyAqZHB1X21k c3MpCit7CisJc3RydWN0IGRldmljZSAqZGV2OworCXN0cnVjdCBpcnFfZG9tYWluICpkb21haW47 CisKKwlkZXYgPSBkcHVfbWRzcy0+YmFzZS5kZXYtPmRldjsKKworCWRvbWFpbiA9IGlycV9kb21h aW5fYWRkX2xpbmVhcihkZXYtPm9mX25vZGUsIDMyLAorCQkJJmRwdV9tZHNzX2lycWRvbWFpbl9v cHMsIGRwdV9tZHNzKTsKKwlpZiAoIWRvbWFpbikgeworCQlEUFVfRVJST1IoImZhaWxlZCB0byBh ZGQgaXJxX2RvbWFpblxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWRwdV9tZHNzLT5p cnFfY29udHJvbGxlci5lbmFibGVkX21hc2sgPSAwOworCWRwdV9tZHNzLT5pcnFfY29udHJvbGxl ci5kb21haW4gPSBkb21haW47CisKKwlyZXR1cm4gMDsKK30KKworaW50IF9kcHVfbWRzc19pcnFf ZG9tYWluX2Zpbmkoc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcykKK3sKKwlpZiAoZHB1X21kc3Mt PmlycV9jb250cm9sbGVyLmRvbWFpbikgeworCQlpcnFfZG9tYWluX3JlbW92ZShkcHVfbWRzcy0+ aXJxX2NvbnRyb2xsZXIuZG9tYWluKTsKKwkJZHB1X21kc3MtPmlycV9jb250cm9sbGVyLmRvbWFp biA9IE5VTEw7CisJfQorCXJldHVybiAwOworfQorc3RhdGljIGludCBkcHVfbWRzc19lbmFibGUo c3RydWN0IG1zbV9tZHNzICptZHNzKQoreworCXN0cnVjdCBkcHVfbWRzcyAqZHB1X21kc3MgPSB0 b19kcHVfbWRzcyhtZHNzKTsKKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXAgPSAmZHB1X21k c3MtPm1wOworCWludCByZXQ7CisKKwlyZXQgPSBtc21fZHNzX2VuYWJsZV9jbGsobXAtPmNsa19j b25maWcsIG1wLT5udW1fY2xrLCB0cnVlKTsKKwlpZiAocmV0KQorCQlEUFVfRVJST1IoImNsb2Nr IGVuYWJsZSBmYWlsZWQsIHJldDolZFxuIiwgcmV0KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBpbnQgZHB1X21kc3NfZGlzYWJsZShzdHJ1Y3QgbXNtX21kc3MgKm1kc3MpCit7CisJc3Ry dWN0IGRwdV9tZHNzICpkcHVfbWRzcyA9IHRvX2RwdV9tZHNzKG1kc3MpOworCXN0cnVjdCBkc3Nf bW9kdWxlX3Bvd2VyICptcCA9ICZkcHVfbWRzcy0+bXA7CisJaW50IHJldDsKKworCXJldCA9IG1z bV9kc3NfZW5hYmxlX2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGssIGZhbHNlKTsKKwlp ZiAocmV0KQorCQlEUFVfRVJST1IoImNsb2NrIGRpc2FibGUgZmFpbGVkLCByZXQ6JWRcbiIsIHJl dCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBkcHVfbWRzc19kZXN0cm95KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9 IHRvX3BsYXRmb3JtX2RldmljZShkZXYtPmRldik7CisJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAq cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcyA9IHRv X2RwdV9tZHNzKHByaXYtPm1kc3MpOworCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcCA9ICZk cHVfbWRzcy0+bXA7CisKKwlfZHB1X21kc3NfaXJxX2RvbWFpbl9maW5pKGRwdV9tZHNzKTsKKwor CW1zbV9kc3NfcHV0X2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGspOworCWRldm1fa2Zy ZWUoJnBkZXYtPmRldiwgbXAtPmNsa19jb25maWcpOworCisJaWYgKGRwdV9tZHNzLT5tbWlvKQor CQltc21faW91bm1hcChwZGV2LCBkcHVfbWRzcy0+bW1pbyk7CisJZHB1X21kc3MtPm1taW8gPSBO VUxMOworCisJcG1fcnVudGltZV9kaXNhYmxlKGRldi0+ZGV2KTsKKwlwcml2LT5tZHNzID0gTlVM TDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBtc21fbWRzc19mdW5jcyBtZHNzX2Z1bmNzID0g eworCS5lbmFibGUJPSBkcHVfbWRzc19lbmFibGUsCisJLmRpc2FibGUgPSBkcHVfbWRzc19kaXNh YmxlLAorCS5kZXN0cm95ID0gZHB1X21kc3NfZGVzdHJveSwKK307CisKK2ludCBkcHVfbWRzc19p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYtPmRldik7CisJc3RydWN0IG1zbV9kcm1fcHJp dmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRwdV9tZHNzICpkcHVfbWRz czsKKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXA7CisJaW50IHJldCA9IDA7CisKKwlkcHVf bWRzcyA9IGRldm1fa3phbGxvYyhkZXYtPmRldiwgc2l6ZW9mKCpkcHVfbWRzcyksIEdGUF9LRVJO RUwpOworCWlmICghZHB1X21kc3MpCisJCXJldHVybiAtRU5PTUVNOworCisJZHB1X21kc3MtPm1t aW8gPSBtc21faW9yZW1hcChwZGV2LCAibWRzc19waHlzIiwgIm1kc3NfcGh5cyIpOworCWlmIChJ U19FUlIoZHB1X21kc3MtPm1taW8pKSB7CisJCXJldCA9IFBUUl9FUlIoZHB1X21kc3MtPm1taW8p OworCQlEUFVfRVJST1IoIm1kc3MgcmVnaXN0ZXIgbWVtb3J5IG1hcCBmYWlsZWQ6ICVkXG4iLCBy ZXQpOworCQlkcHVfbWRzcy0+bW1pbyA9IE5VTEw7CisJCXJldHVybiByZXQ7CisJfQorCURSTV9E RUJVRygibWFwcGVkIG1kc3MgYWRkcmVzcyBzcGFjZSBAJXBLXG4iLCBkcHVfbWRzcy0+bW1pbyk7 CisJZHB1X21kc3MtPm1taW9fbGVuID0gbXNtX2lvbWFwX3NpemUocGRldiwgIm1kc3NfcGh5cyIp OworCisJbXAgPSAmZHB1X21kc3MtPm1wOworCXJldCA9IG1zbV9kc3NfcGFyc2VfY2xvY2socGRl diwgbXApOworCWlmIChyZXQpIHsKKwkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gcGFyc2UgY2xvY2tz LCByZXQ9JWRcbiIsIHJldCk7CisJCWdvdG8gY2xrX3BhcnNlX2VycjsKKwl9CisKKwlyZXQgPSBt c21fZHNzX2dldF9jbGsoJnBkZXYtPmRldiwgbXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrKTsK KwlpZiAocmV0KSB7CisJCURQVV9FUlJPUigiZmFpbGVkIHRvIGdldCBjbG9ja3MsIHJldD0lZFxu IiwgcmV0KTsKKwkJZ290byBjbGtfZ2V0X2Vycm9yOworCX0KKworCXJldCA9IG1zbV9kc3NfY2xr X3NldF9yYXRlKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Nsayk7CisJaWYgKHJldCkgeworCQlE UFVfRVJST1IoImZhaWxlZCB0byBzZXQgY2xvY2sgcmF0ZSwgcmV0PSVkXG4iLCByZXQpOworCQln b3RvIGNsa19yYXRlX2Vycm9yOworCX0KKworCWRwdV9tZHNzLT5iYXNlLmRldiA9IGRldjsKKwlk cHVfbWRzcy0+YmFzZS5mdW5jcyA9ICZtZHNzX2Z1bmNzOworCisJcmV0ID0gX2RwdV9tZHNzX2ly cV9kb21haW5fYWRkKGRwdV9tZHNzKTsKKwlpZiAocmV0KQorCQlnb3RvIGlycV9kb21haW5fZXJy b3I7CisKKwlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKGRldi0+ZGV2LCBwbGF0Zm9ybV9nZXRfaXJx KHBkZXYsIDApLAorCQkJZHB1X21kc3NfaXJxLCAwLCAiZHB1X21kc3NfaXNyIiwgZHB1X21kc3Mp OworCWlmIChyZXQpIHsKKwkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gaW5pdCBpcnE6ICVkXG4iLCBy ZXQpOworCQlnb3RvIGlycV9lcnJvcjsKKwl9CisKKwlwbV9ydW50aW1lX2VuYWJsZShkZXYtPmRl dik7CisKKwlwbV9ydW50aW1lX2dldF9zeW5jKGRldi0+ZGV2KTsKKwlkcHVfbWRzcy0+aHd2ZXJz aW9uID0gcmVhZGxfcmVsYXhlZChkcHVfbWRzcy0+bW1pbyk7CisJcG1fcnVudGltZV9wdXRfc3lu YyhkZXYtPmRldik7CisKKwlwcml2LT5tZHNzID0gJmRwdV9tZHNzLT5iYXNlOworCisJcmV0dXJu IHJldDsKKworaXJxX2Vycm9yOgorCV9kcHVfbWRzc19pcnFfZG9tYWluX2ZpbmkoZHB1X21kc3Mp OworaXJxX2RvbWFpbl9lcnJvcjoKK2Nsa19yYXRlX2Vycm9yOgorCW1zbV9kc3NfcHV0X2Nsayht cC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGspOworY2xrX2dldF9lcnJvcjoKKwlkZXZtX2tmcmVl KCZwZGV2LT5kZXYsIG1wLT5jbGtfY29uZmlnKTsKK2Nsa19wYXJzZV9lcnI6CisJaWYgKGRwdV9t ZHNzLT5tbWlvKQorCQltc21faW91bm1hcChwZGV2LCBkcHVfbWRzcy0+bW1pbyk7CisJZHB1X21k c3MtPm1taW8gPSBOVUxMOworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2RwdV9pb191dGlsLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9pb191dGls LmMKaW5kZXggYTE4YmM5OS4uYzQ0ZjMzZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9kcHVfaW9fdXRpbC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2lvX3V0aWwuYwpA QCAtNDQ4LDYgKzQ0OCw2MyBAQCBpbnQgbXNtX2Rzc19lbmFibGVfY2xrKHN0cnVjdCBkc3NfY2xr ICpjbGtfYXJyeSwgaW50IG51bV9jbGssIGludCBlbmFibGUpCiB9IC8qIG1zbV9kc3NfZW5hYmxl X2NsayAqLwogRVhQT1JUX1NZTUJPTChtc21fZHNzX2VuYWJsZV9jbGspOwogCitpbnQgbXNtX2Rz c19wYXJzZV9jbG9jayhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAorCQlzdHJ1Y3QgZHNz X21vZHVsZV9wb3dlciAqbXApCit7CisJdTMyIGksIHJjID0gMDsKKwljb25zdCBjaGFyICpjbG9j a19uYW1lOworCXUzMiByYXRlID0gMCwgbWF4X3JhdGUgPSAwOworCWludCBudW1fY2xrID0gMDsK KworCWlmICghcGRldiB8fCAhbXApCisJCXJldHVybiAtRUlOVkFMOworCisJbXAtPm51bV9jbGsg PSAwOworCW51bV9jbGsgPSBvZl9wcm9wZXJ0eV9jb3VudF9zdHJpbmdzKHBkZXYtPmRldi5vZl9u b2RlLCAiY2xvY2stbmFtZXMiKTsKKwlpZiAobnVtX2NsayA8PSAwKSB7CisJCXByX2RlYnVnKCJj bG9ja3MgYXJlIG5vdCBkZWZpbmVkXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCisJbXAtPmNsa19j b25maWcgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwKKwkJCQkgICAgICBzaXplb2Yoc3RydWN0 IGRzc19jbGspICogbnVtX2NsaywKKwkJCQkgICAgICBHRlBfS0VSTkVMKTsKKwlpZiAoIW1wLT5j bGtfY29uZmlnKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWZvciAoaSA9IDA7IGkgPCBudW1fY2xr OyBpKyspIHsKKwkJcmMgPSBvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZ19pbmRleChwZGV2LT5kZXYu b2Zfbm9kZSwKKwkJCQkJCSAgICJjbG9jay1uYW1lcyIsIGksCisJCQkJCQkgICAmY2xvY2tfbmFt ZSk7CisJCWlmIChyYykKKwkJCWJyZWFrOworCQlzdHJsY3B5KG1wLT5jbGtfY29uZmlnW2ldLmNs a19uYW1lLCBjbG9ja19uYW1lLAorCQkJc2l6ZW9mKG1wLT5jbGtfY29uZmlnW2ldLmNsa19uYW1l KSk7CisKKwkJcmMgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMl9pbmRleChwZGV2LT5kZXYub2Zfbm9k ZSwKKwkJCQkJCSJjbG9jay1yYXRlIiwgaSwKKwkJCQkJCSZyYXRlKTsKKwkJaWYgKHJjKQorCQkJ YnJlYWs7CisJCW1wLT5jbGtfY29uZmlnW2ldLnJhdGUgPSByYXRlOworCQlpZiAoIW1wLT5jbGtf Y29uZmlnW2ldLnJhdGUpCisJCQltcC0+Y2xrX2NvbmZpZ1tpXS50eXBlID0gRFNTX0NMS19BSEI7 CisJCWVsc2UKKwkJCW1wLT5jbGtfY29uZmlnW2ldLnR5cGUgPSBEU1NfQ0xLX1BDTEs7CisKKwkJ cmMgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMl9pbmRleChwZGV2LT5kZXYub2Zfbm9kZSwKKwkJCQkJ CSJjbG9jay1tYXgtcmF0ZSIsIGksCisJCQkJCQkmbWF4X3JhdGUpOworCQlpZiAocmMpCisJCQli cmVhazsKKwkJbXAtPmNsa19jb25maWdbaV0ubWF4X3JhdGUgPSBtYXhfcmF0ZTsKKwl9CisKKwlp ZiAoIXJjKQorCQltcC0+bnVtX2NsayA9IG51bV9jbGs7CisKKwlyZXR1cm4gcmM7Cit9CiAKIGlu dCBkcHVfaTJjX2J5dGVfcmVhZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1aW50OF90IHNs YXZlX2FkZHIsCiAJCQl1aW50OF90IHJlZ19vZmZzZXQsIHVpbnQ4X3QgKnJlYWRfYnVmKQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9kcnYuYwppbmRleCA1ZDhmMWI2Li5hMGU3M2VhIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYu YwpAQCAtNTAzLDcgKzUwMywxOCBAQCBzdGF0aWMgaW50IG1zbV9kcm1faW5pdChzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBkcm1fZHJpdmVyICpkcnYpCiAJZGRldi0+ZGV2X3ByaXZhdGUgPSBw cml2OwogCXByaXYtPmRldiA9IGRkZXY7CiAKLQlyZXQgPSBtZHA1X21kc3NfaW5pdChkZGV2KTsK Kwlzd2l0Y2ggKGdldF9tZHBfdmVyKHBkZXYpKSB7CisJY2FzZSBLTVNfTURQNToKKwkJcmV0ID0g bWRwNV9tZHNzX2luaXQoZGRldik7CisJCWJyZWFrOworCWNhc2UgS01TX0RQVToKKwkJcmV0ID0g ZHB1X21kc3NfaW5pdChkZGV2KTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0ID0gMDsKKwkJ YnJlYWs7CisJfQorCiAJaWYgKHJldCkKIAkJZ290byBtZHNzX2luaXRfZmFpbDsKIApAQCAtMTUz OSwxMiArMTU1MCwxMyBAQCBzdGF0aWMgaW50IGFkZF9kaXNwbGF5X2NvbXBvbmVudHMoc3RydWN0 IGRldmljZSAqZGV2LAogCWludCByZXQ7CiAKIAkvKgotCSAqIE1EUDUgYmFzZWQgZGV2aWNlcyBk b24ndCBoYXZlIGEgZmxhdCBoaWVyYXJjaHkuIFRoZXJlIGlzIGEgdG9wIGxldmVsCi0JICogcGFy ZW50OiBNRFNTLCBhbmQgY2hpbGRyZW46IE1EUDUsIERTSSwgSERNSSwgZURQIGV0Yy4gUG9wdWxh dGUgdGhlCi0JICogY2hpbGRyZW4gZGV2aWNlcywgZmluZCB0aGUgTURQNSBub2RlLCBhbmQgdGhl biBhZGQgdGhlIGludGVyZmFjZXMKLQkgKiB0byBvdXIgY29tcG9uZW50cyBsaXN0LgorCSAqIE1E UDUvRFBVIGJhc2VkIGRldmljZXMgZG9uJ3QgaGF2ZSBhIGZsYXQgaGllcmFyY2h5LiBUaGVyZSBp cyBhIHRvcAorCSAqIGxldmVsIHBhcmVudDogTURTUywgYW5kIGNoaWxkcmVuOiBNRFA1L0RQVSwg RFNJLCBIRE1JLCBlRFAgZXRjLgorCSAqIFBvcHVsYXRlIHRoZSBjaGlsZHJlbiBkZXZpY2VzLCBm aW5kIHRoZSBNRFA1L0RQVSBub2RlLCBhbmQgdGhlbiBhZGQKKwkgKiB0aGUgaW50ZXJmYWNlcyB0 byBvdXIgY29tcG9uZW50cyBsaXN0LgogCSAqLwotCWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJs ZShkZXYtPm9mX25vZGUsICJxY29tLG1kc3MiKSkgeworCWlmIChvZl9kZXZpY2VfaXNfY29tcGF0 aWJsZShkZXYtPm9mX25vZGUsICJxY29tLG1kc3MiKSB8fAorCQlvZl9kZXZpY2VfaXNfY29tcGF0 aWJsZShkZXYtPm9mX25vZGUsICJxY29tLGRwdS1tZHNzIikpIHsKIAkJcmV0ID0gb2ZfcGxhdGZv cm1fcG9wdWxhdGUoZGV2LT5vZl9ub2RlLCBOVUxMLCBOVUxMLCBkZXYpOwogCQlpZiAocmV0KSB7 CiAJCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBwb3B1bGF0ZSBjaGlsZHJlbiBkZXZpY2VzXG4i KTsKQEAgLTE2ODYsNyArMTY5OCw3IEBAIHN0YXRpYyBpbnQgbXNtX3BkZXZfcmVtb3ZlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJeyAuY29tcGF0aWJsZSA9ICJxY29tLG1kcDQiLCAu ZGF0YSA9ICh2b2lkICopS01TX01EUDQgfSwKIAl7IC5jb21wYXRpYmxlID0gInFjb20sbWRzcyIs IC5kYXRhID0gKHZvaWQgKilLTVNfTURQNSB9LAogI2lmZGVmIENPTkZJR19EUk1fTVNNX0RQVQot CXsgLmNvbXBhdGlibGUgPSAicWNvbSxkcHUta21zIiwgLmRhdGEgPSAodm9pZCAqKUtNU19EUFUg fSwKKwl7IC5jb21wYXRpYmxlID0gInFjb20sZHB1LW1kc3MiLCAuZGF0YSA9ICh2b2lkICopS01T X0RQVSB9LAogI2VuZGlmCiAJe30KIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCmluZGV4IDkwYTI1MjEu LmU4ZTVlNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0 IG1zbV9kcm1fcHJpdmF0ZSB7CiAJLyogc3Vib3JkaW5hdGUgZGV2aWNlcywgaWYgcHJlc2VudDog Ki8KIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpncHVfcGRldjsKIAotCS8qIHRvcCBsZXZlbCBN RFNTIHdyYXBwZXIgZGV2aWNlIChmb3IgTURQNSBvbmx5KSAqLworCS8qIHRvcCBsZXZlbCBNRFNT IHdyYXBwZXIgZGV2aWNlIChmb3IgTURQNS9EUFUgb25seSkgKi8KIAlzdHJ1Y3QgbXNtX21kc3Mg Km1kc3M7CiAKIAkvKiBwb3NzaWJseSB0aGlzIHNob3VsZCBiZSBpbiB0aGUga21zIGNvbXBvbmVu dCwgYnV0IGl0IGlzCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9rbXMuaCBi L2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oCmluZGV4IDlhN2JjN2QuLjVlMWRlODUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vbXNtX2ttcy5oCkBAIC0xNDQsNiArMTQ0LDcgQEAgc3RydWN0IG1zbV9tZHNzIHsK IH07CiAKIGludCBtZHA1X21kc3NfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2ludCBk cHVfbWRzc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogCiAvKioKICAqIE1vZGUgU2V0 IFV0aWxpdHkgRnVuY3Rpb25zCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RwdV9pb191dGls LmggYi9pbmNsdWRlL2xpbnV4L2RwdV9pb191dGlsLmgKaW5kZXggN2M3Mzg5OS4uNDVlNjA2ZiAx MDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kcHVfaW9fdXRpbC5oCisrKyBiL2luY2x1ZGUvbGlu dXgvZHB1X2lvX3V0aWwuaApAQCAtMTA0LDYgKzEwNCw4IEBAIGludCBtc21fZHNzX2NvbmZpZ192 cmVnKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRzc192cmVnICppbl92cmVnLAogdm9pZCBt c21fZHNzX3B1dF9jbGsoc3RydWN0IGRzc19jbGsgKmNsa19hcnJ5LCBpbnQgbnVtX2Nsayk7CiBp bnQgbXNtX2Rzc19jbGtfc2V0X3JhdGUoc3RydWN0IGRzc19jbGsgKmNsa19hcnJ5LCBpbnQgbnVt X2Nsayk7CiBpbnQgbXNtX2Rzc19lbmFibGVfY2xrKHN0cnVjdCBkc3NfY2xrICpjbGtfYXJyeSwg aW50IG51bV9jbGssIGludCBlbmFibGUpOworaW50IG1zbV9kc3NfcGFyc2VfY2xvY2soc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldiwKKwkJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wKTsK IAogaW50IGRwdV9pMmNfYnl0ZV9yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHVpbnQ4 X3Qgc2xhdmVfYWRkciwKIAkJICAgICAgIHVpbnQ4X3QgcmVnX29mZnNldCwgdWludDhfdCAqcmVh ZF9idWYpOwotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVt YmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9y YXRpdmUgUHJvamVjdAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRy ZW5vCg==