From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rajesh Yadav Subject: [DPU PATCH 03/11] drm/msm/dpu: add MDSS top level driver for dpu Date: Thu, 10 May 2018 13:59:37 +0530 Message-ID: <1525940985-30428-4-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-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 bGQgcmVsYXRpb25zaGlwIGRlZmluZWQgaW4gZHQuCgpTaWduZWQtb2ZmLWJ5OiBSYWplc2ggWWFk YXYgPHJ5YWRhdkBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL01ha2Vm aWxlICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9jb3JlX2lycS5jICAgICAgfCAgOTcgLS0tLS0tLQogZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmggICAgICB8ICAxNCAtCiBkcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jICAgIHwgICA5IC0KIGRyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmggICAgfCAgIDcgLQogZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVycnVwdHMuYyB8ICAyOSArLS0KIGRyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLmggfCAgMTEgLQogZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2lycS5jICAgICAgICAgICB8ICA0OCArLS0t CiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMgICAgICAgICAgIHwgICA2 IC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaCAgICAgICAgICAgfCAg IDIgLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X21kc3MuYyAgICAgICAgICB8 IDMwMSArKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9pb191 dGlsLmMgICAgICAgICAgICAgICAgIHwgIDU1ICsrKysKIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNt X2Rydi5jICAgICAgICAgICAgICAgICAgICAgfCAgMjYgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20v bXNtX2Rydi5oICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2ttcy5oICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogaW5jbHVkZS9saW51eC9k cHVfaW9fdXRpbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiAxNiBmaWxlcyBjaGFu Z2VkLCAzOTAgaW5zZXJ0aW9ucygrKSwgMjIyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9tZHNzLmMKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtl ZmlsZQppbmRleCBkNzU1OGVkLi5kOTgyNmMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKQEAgLTgxLDYg KzgxLDcgQEAgbXNtLXkgOj0gXAogCWRpc3AvZHB1MS9kcHVfcmVnX2RtYS5vIFwKIAlkaXNwL2Rw dTEvZHB1X3JtLm8gXAogCWRpc3AvZHB1MS9kcHVfdmJpZi5vIFwKKwlkaXNwL2RwdTEvZHB1X21k c3MubyBcCiAJZHB1X2RiZy5vIFwKIAlkcHVfaW9fdXRpbC5vIFwKIAlkcHVfZGJnX2V2dGxvZy5v IFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX2ly cS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmMKaW5kZXgg ZmUzMzAxMy4uOTc3YWRjNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2NvcmVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2NvcmVfaXJxLmMKQEAgLTUxNSwxMDMgKzUxNSw2IEBAIHZvaWQgZHB1X2NvcmVfaXJxX3VuaW5z dGFsbChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykKIAlkcHVfa21zLT5pcnFfb2JqLnRvdGFsX2ly cXMgPSAwOwogfQogCi1zdGF0aWMgdm9pZCBkcHVfY29yZV9pcnFfbWFzayhzdHJ1Y3QgaXJxX2Rh dGEgKmlycWQpCi17Ci0Jc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7Ci0KLQlpZiAoIWlycWQgfHwg IWlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGlycWQpKSB7Ci0JCURQVV9FUlJPUigiaW52YWxp ZCBwYXJhbWV0ZXJzIGlycWQgJWRcbiIsIGlycWQgIT0gTlVMTCk7Ci0JCXJldHVybjsKLQl9Ci0J ZHB1X2ttcyA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGlycWQpOwotCi0JLyogbWVtb3J5 IGJhcnJpZXIgKi8KLQlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKLQljbGVhcl9iaXQoaXJxZC0+ aHdpcnEsICZkcHVfa21zLT5pcnFfY29udHJvbGxlci5lbmFibGVkX21hc2spOwotCS8qIG1lbW9y eSBiYXJyaWVyICovCi0Jc21wX21iX19hZnRlcl9hdG9taWMoKTsKLX0KLQotc3RhdGljIHZvaWQg ZHB1X2NvcmVfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmlycWQpCi17Ci0Jc3RydWN0IGRw dV9rbXMgKmRwdV9rbXM7Ci0KLQlpZiAoIWlycWQgfHwgIWlycV9kYXRhX2dldF9pcnFfY2hpcF9k YXRhKGlycWQpKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbWV0ZXJzIGlycWQgJWRcbiIs IGlycWQgIT0gTlVMTCk7Ci0JCXJldHVybjsKLQl9Ci0JZHB1X2ttcyA9IGlycV9kYXRhX2dldF9p cnFfY2hpcF9kYXRhKGlycWQpOwotCi0JLyogbWVtb3J5IGJhcnJpZXIgKi8KLQlzbXBfbWJfX2Jl Zm9yZV9hdG9taWMoKTsKLQlzZXRfYml0KGlycWQtPmh3aXJxLCAmZHB1X2ttcy0+aXJxX2NvbnRy b2xsZXIuZW5hYmxlZF9tYXNrKTsKLQkvKiBtZW1vcnkgYmFycmllciAqLwotCXNtcF9tYl9fYWZ0 ZXJfYXRvbWljKCk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgZHB1X2NvcmVfaXJxX2No aXAgPSB7Ci0JLm5hbWUgPSAiZHB1IiwKLQkuaXJxX21hc2sgPSBkcHVfY29yZV9pcnFfbWFzaywK LQkuaXJxX3VubWFzayA9IGRwdV9jb3JlX2lycV91bm1hc2ssCi19OwotCi1zdGF0aWMgaW50IGRw dV9jb3JlX2lycWRvbWFpbl9tYXAoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwKLQkJdW5zaWdu ZWQgaW50IGlycSwgaXJxX2h3X251bWJlcl90IGh3aXJxKQotewotCXN0cnVjdCBkcHVfa21zICpk cHVfa21zOwotCWludCByYzsKLQotCWlmICghZG9tYWluIHx8ICFkb21haW4tPmhvc3RfZGF0YSkg ewotCQlEUFVfRVJST1IoImludmFsaWQgcGFyYW1ldGVycyBkb21haW4gJWRcbiIsIGRvbWFpbiAh PSBOVUxMKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCWRwdV9rbXMgPSBkb21haW4tPmhvc3Rf ZGF0YTsKLQotCWlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsICZkcHVfY29yZV9pcnFfY2hp cCwgaGFuZGxlX2xldmVsX2lycSk7Ci0JcmMgPSBpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGRwdV9r bXMpOwotCi0JcmV0dXJuIHJjOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5f b3BzIGRwdV9jb3JlX2lycWRvbWFpbl9vcHMgPSB7Ci0JLm1hcCA9IGRwdV9jb3JlX2lycWRvbWFp bl9tYXAsCi0JLnhsYXRlID0gaXJxX2RvbWFpbl94bGF0ZV9vbmVjZWxsLAotfTsKLQotaW50IGRw dV9jb3JlX2lycV9kb21haW5fYWRkKHN0cnVjdCBkcHVfa21zICpkcHVfa21zKQotewotCXN0cnVj dCBkZXZpY2UgKmRldjsKLQlzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluOwotCi0JaWYgKCFkcHVf a21zLT5kZXYgfHwgIWRwdV9rbXMtPmRldi0+ZGV2KSB7Ci0JCXByX2VycigiaW52YWxpZCBkZXZp Y2UgaGFuZGxlc1xuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCWRldiA9IGRwdV9rbXMt PmRldi0+ZGV2OwotCi0JZG9tYWluID0gaXJxX2RvbWFpbl9hZGRfbGluZWFyKGRldi0+b2Zfbm9k ZSwgMzIsCi0JCQkmZHB1X2NvcmVfaXJxZG9tYWluX29wcywgZHB1X2ttcyk7Ci0JaWYgKCFkb21h aW4pIHsKLQkJcHJfZXJyKCJmYWlsZWQgdG8gYWRkIGlycV9kb21haW5cbiIpOwotCQlyZXR1cm4g LUVJTlZBTDsKLQl9Ci0KLQlkcHVfa21zLT5pcnFfY29udHJvbGxlci5lbmFibGVkX21hc2sgPSAw OwotCWRwdV9rbXMtPmlycV9jb250cm9sbGVyLmRvbWFpbiA9IGRvbWFpbjsKLQotCXJldHVybiAw OwotfQotCi1pbnQgZHB1X2NvcmVfaXJxX2RvbWFpbl9maW5pKHN0cnVjdCBkcHVfa21zICpkcHVf a21zKQotewotCWlmIChkcHVfa21zLT5pcnFfY29udHJvbGxlci5kb21haW4pIHsKLQkJaXJxX2Rv bWFpbl9yZW1vdmUoZHB1X2ttcy0+aXJxX2NvbnRyb2xsZXIuZG9tYWluKTsKLQkJZHB1X2ttcy0+ aXJxX2NvbnRyb2xsZXIuZG9tYWluID0gTlVMTDsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KIGlycXJl dHVybl90IGRwdV9jb3JlX2lycShzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykKIHsKIAkvKgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmggYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuaAppbmRleCA2NGE1NGZl Li44ZmE1OWRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf Y29yZV9pcnEuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9p cnEuaApAQCAtMzgsMjAgKzM4LDYgQEAKIHZvaWQgZHB1X2NvcmVfaXJxX3VuaW5zdGFsbChzdHJ1 Y3QgZHB1X2ttcyAqZHB1X2ttcyk7CiAKIC8qKgotICogZHB1X2NvcmVfaXJxX2RvbWFpbl9hZGQg LSBBZGQgY29yZSBJUlEgZG9tYWluIGZvciBEUFUKLSAqIEBkcHVfa21zOgkJRFBVIGhhbmRsZQot ICogQHJldHVybjoJCW5vbmUKLSAqLwotaW50IGRwdV9jb3JlX2lycV9kb21haW5fYWRkKHN0cnVj dCBkcHVfa21zICpkcHVfa21zKTsKLQotLyoqCi0gKiBkcHVfY29yZV9pcnFfZG9tYWluX2Zpbmkg LSB1bmluc3RhbGwgY29yZSBJUlEgZG9tYWluCi0gKiBAZHB1X2ttczoJCURQVSBoYW5kbGUKLSAq IEByZXR1cm46CQkwIGlmIHN1Y2Nlc3M7IGVycm9yIGNvZGUgb3RoZXJ3aXNlCi0gKi8KLWludCBk cHVfY29yZV9pcnFfZG9tYWluX2Zpbmkoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMpOwotCi0vKioK ICAqIGRwdV9jb3JlX2lycSAtIGNvcmUgSVJRIGhhbmRsZXIKICAqIEBkcHVfa21zOgkJRFBVIGhh bmRsZQogICogQHJldHVybjoJCWludGVycnVwdCBoYW5kbGluZyBzdGF0dXMKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jCmluZGV4IDhlNzc5YzAuLmM1 YjM3MGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19j YXRhbG9nLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFs b2cuYwpAQCAtNzcsMTMgKzc3LDYgQEAKIAkuaGFzX2lkbGVfcGMgPSB0cnVlLAogfTsKIAotc3Rh dGljIHN0cnVjdCBkcHVfbWRzc19iYXNlX2NmZyBzZG04NDVfbWRzc1tdID0gewotCXsKLQkubmFt ZSA9ICJtZHNzXzAiLCAuaWQgPSBNRFBfVE9QLAotCS5iYXNlID0gMHgwLCAuZmVhdHVyZXMgPSAw Ci0JfSwKLX07Ci0KIHN0YXRpYyBzdHJ1Y3QgZHB1X21kcF9jZmcgc2RtODQ1X21kcFtdID0gewog CXsKIAkubmFtZSA9ICJ0b3BfMCIsIC5pZCA9IE1EUF9UT1AsCkBAIC01NTAsOCArNTQzLDYgQEAg dm9pZCBzZG04NDVfY2ZnX2luaXQoc3RydWN0IGRwdV9tZHNzX2NmZyAqZHB1X2NmZykKIHsKIAkq ZHB1X2NmZyA9IChzdHJ1Y3QgZHB1X21kc3NfY2ZnKXsKIAkJLmNhcHMgPSAmc2RtODQ1X2RwdV9j YXBzLAotCQkubWRzc19jb3VudCA9IEFSUkFZX1NJWkUoc2RtODQ1X21kc3MpLAotCQkubWRzcyA9 IHNkbTg0NV9tZHNzLAogCQkubWRwX2NvdW50ID0gQVJSQVlfU0laRShzZG04NDVfbWRwKSwKIAkJ Lm1kcCA9IHNkbTg0NV9tZHAsCiAJCS5jdGxfY291bnQgPSBBUlJBWV9TSVpFKHNkbTg0NV9jdGwp LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFs b2cuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmgKaW5k ZXggMzliZWMwYS4uNzA4NDY0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2h3X2NhdGFsb2cuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfaHdfY2F0YWxvZy5oCkBAIC00OTIsMTAgKzQ5Miw2IEBAIHN0cnVjdCBkcHVfd2Jfc3Vi X2Jsb2NrcyB7CiAJdTMyIG1heGxpbmV3aWR0aDsKIH07CiAKLXN0cnVjdCBkcHVfbWRzc19iYXNl X2NmZyB7Ci0JRFBVX0hXX0JMS19JTkZPOwotfTsKLQogLyoqCiAgKiBkcHVfY2xrX2N0cmxfdHlw ZSAtIERlZmluZXMgdG9wIGxldmVsIGNsb2NrIGNvbnRyb2wgc2lnbmFscwogICovCkBAIC04NzUs OSArODcxLDYgQEAgc3RydWN0IGRwdV9tZHNzX2NmZyB7CiAKIAljb25zdCBzdHJ1Y3QgZHB1X2Nh cHMgKmNhcHM7CiAKLQl1MzIgbWRzc19jb3VudDsKLQlzdHJ1Y3QgZHB1X21kc3NfYmFzZV9jZmcg Km1kc3M7Ci0KIAl1MzIgbWRwX2NvdW50OwogCXN0cnVjdCBkcHVfbWRwX2NmZyAqbWRwOwogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0 cy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVycnVwdHMuYwpp bmRleCA5NzY3Y2M4Li43MDkzYmE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLmMKQEAgLTIyLDcgKzIyLDYgQEAKICAqIFJlZ2lzdGVy IG9mZnNldHMgaW4gTURTUyByZWdpc3RlciBmaWxlIGZvciB0aGUgaW50ZXJydXB0IHJlZ2lzdGVy cwogICogdy5yLnQuIHRvIHRoZSBNRFNTIGJhc2UKICAqLwotI2RlZmluZSBIV19JTlRSX1NUQVRV UwkJCTB4MDAxMAogI2RlZmluZSBNRFBfU1NQUF9UT1AwX09GRgkJMHgxMDAwCiAjZGVmaW5lIE1E UF9JTlRGXzBfT0ZGCQkJMHg2QjAwMAogI2RlZmluZSBNRFBfSU5URl8xX09GRgkJCTB4NkI4MDAK QEAgLTEwMTcsMTcgKzEwMTYsNiBAQCBzdGF0aWMgaW50IGRwdV9od19pbnRyX2dldF92YWxpZF9p bnRlcnJ1cHRzKHN0cnVjdCBkcHVfaHdfaW50ciAqaW50ciwKIAlyZXR1cm4gMDsKIH0KIAotc3Rh dGljIGludCBkcHVfaHdfaW50cl9nZXRfaW50ZXJydXB0X3NvdXJjZXMoc3RydWN0IGRwdV9od19p bnRyICppbnRyLAotCQl1aW50MzJfdCAqc291cmNlcykKLXsKLQlpZiAoIWludHIgfHwgIXNvdXJj ZXMpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JKnNvdXJjZXMgPSBEUFVfUkVHX1JFQUQoJmludHIt Pmh3LCBIV19JTlRSX1NUQVRVUyk7Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgZHB1 X2h3X2ludHJfZ2V0X2ludGVycnVwdF9zdGF0dXNlcyhzdHJ1Y3QgZHB1X2h3X2ludHIgKmludHIp CiB7CiAJaW50IGk7CkBAIC0xMTYyLDcgKzExNTAsNiBAQCBzdGF0aWMgdm9pZCBfX3NldHVwX2lu dHJfb3BzKHN0cnVjdCBkcHVfaHdfaW50cl9vcHMgKm9wcykKIAlvcHMtPmNsZWFyX2FsbF9pcnFz ID0gZHB1X2h3X2ludHJfY2xlYXJfaXJxczsKIAlvcHMtPmRpc2FibGVfYWxsX2lycXMgPSBkcHVf aHdfaW50cl9kaXNhYmxlX2lycXM7CiAJb3BzLT5nZXRfdmFsaWRfaW50ZXJydXB0cyA9IGRwdV9o d19pbnRyX2dldF92YWxpZF9pbnRlcnJ1cHRzOwotCW9wcy0+Z2V0X2ludGVycnVwdF9zb3VyY2Vz ID0gZHB1X2h3X2ludHJfZ2V0X2ludGVycnVwdF9zb3VyY2VzOwogCW9wcy0+Z2V0X2ludGVycnVw dF9zdGF0dXNlcyA9IGRwdV9od19pbnRyX2dldF9pbnRlcnJ1cHRfc3RhdHVzZXM7CiAJb3BzLT5j bGVhcl9pbnRlcnJ1cHRfc3RhdHVzID0gZHB1X2h3X2ludHJfY2xlYXJfaW50ZXJydXB0X3N0YXR1 czsKIAlvcHMtPmNsZWFyX2ludHJfc3RhdHVzX25vbG9jayA9IGRwdV9od19pbnRyX2NsZWFyX2lu dHJfc3RhdHVzX25vbG9jazsKQEAgLTExNzAsMjMgKzExNTcsMjMgQEAgc3RhdGljIHZvaWQgX19z ZXR1cF9pbnRyX29wcyhzdHJ1Y3QgZHB1X2h3X2ludHJfb3BzICpvcHMpCiAJb3BzLT5nZXRfaW50 cl9zdGF0dXNfbm9sb2NrID0gZHB1X2h3X2ludHJfZ2V0X2ludHJfc3RhdHVzX25vbG9jazsKIH0K IAotc3RhdGljIHN0cnVjdCBkcHVfbWRzc19iYXNlX2NmZyAqX19pbnRyX29mZnNldChzdHJ1Y3Qg ZHB1X21kc3NfY2ZnICptLAorc3RhdGljIGludCBfX2ludHJfb2Zmc2V0KHN0cnVjdCBkcHVfbWRz c19jZmcgKm0sCiAJCXZvaWQgX19pb21lbSAqYWRkciwgc3RydWN0IGRwdV9od19ibGtfcmVnX21h cCAqaHcpCiB7CiAJaWYgKCFtIHx8ICFhZGRyIHx8ICFodyB8fCBtLT5tZHBfY291bnQgPT0gMCkK LQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiAtRUlOVkFMOwogCiAJaHctPmJhc2Vfb2ZmID0gYWRk cjsKLQlody0+YmxrX29mZiA9IG0tPm1kc3NbMF0uYmFzZTsKKwlody0+YmxrX29mZiA9IG0tPm1k cFswXS5iYXNlOwogCWh3LT5od3ZlcnNpb24gPSBtLT5od3ZlcnNpb247Ci0JcmV0dXJuICZtLT5t ZHNzWzBdOworCXJldHVybiAwOwogfQogCiBzdHJ1Y3QgZHB1X2h3X2ludHIgKmRwdV9od19pbnRy X2luaXQodm9pZCBfX2lvbWVtICphZGRyLAogCQlzdHJ1Y3QgZHB1X21kc3NfY2ZnICptKQogewog CXN0cnVjdCBkcHVfaHdfaW50ciAqaW50cjsKLQlzdHJ1Y3QgZHB1X21kc3NfYmFzZV9jZmcgKmNm ZzsKKwlpbnQgcmV0OwogCiAJaWYgKCFhZGRyIHx8ICFtKQogCQlyZXR1cm4gRVJSX1BUUigtRUlO VkFMKTsKQEAgLTExOTUsMTAgKzExODIsMTAgQEAgc3RydWN0IGRwdV9od19pbnRyICpkcHVfaHdf aW50cl9pbml0KHZvaWQgX19pb21lbSAqYWRkciwKIAlpZiAoIWludHIpCiAJCXJldHVybiBFUlJf UFRSKC1FTk9NRU0pOwogCi0JY2ZnID0gX19pbnRyX29mZnNldChtLCBhZGRyLCAmaW50ci0+aHcp OwotCWlmICghY2ZnKSB7CisJcmV0ID0gX19pbnRyX29mZnNldChtLCBhZGRyLCAmaW50ci0+aHcp OworCWlmIChyZXQpIHsKIAkJa2ZyZWUoaW50cik7Ci0JCXJldHVybiBFUlJfUFRSKC1FSU5WQUwp OworCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCX0KIAlfX3NldHVwX2ludHJfb3BzKCZpbnRyLT5v cHMpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdf aW50ZXJydXB0cy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVy cnVwdHMuaAppbmRleCAyZjFhODI4Li5iNTJjZGNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLmgKQEAgLTI0MiwxNyArMjQyLDYgQEAg c3RydWN0IGRwdV9od19pbnRyX29wcyB7CiAJaW50ICgqZ2V0X3ZhbGlkX2ludGVycnVwdHMpKAog CQkJc3RydWN0IGRwdV9od19pbnRyICppbnRyLAogCQkJdWludDMyX3QgKm1hc2spOwotCi0JLyoq Ci0JICogZ2V0X2ludGVycnVwdF9zb3VyY2VzIC0gR2V0cyB0aGUgYml0bWFzayBvZiB0aGUgRFBV IGludGVycnVwdAotCSAqICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSB0aGF0IGFyZSBj dXJyZW50bHkgZmlyZWQuCi0JICogQGludHI6CUhXIGludGVycnVwdCBoYW5kbGUKLQkgKiBAc291 cmNlczoJUmV0dXJuaW5nIHRoZSBEUFUgaW50ZXJydXB0IHNvdXJjZSBzdGF0dXMgYml0IG1hc2sK LQkgKiBAcmV0dXJuOgkwIGZvciBzdWNjZXNzLCBvdGhlcndpc2UgZmFpbHVyZQotCSAqLwotCWlu dCAoKmdldF9pbnRlcnJ1cHRfc291cmNlcykoCi0JCQlzdHJ1Y3QgZHB1X2h3X2ludHIgKmludHIs Ci0JCQl1aW50MzJfdCAqc291cmNlcyk7CiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9pcnEuYwppbmRleCAxOWMwOTI5Li5kNWU2Y2UwIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2lycS5jCkBAIC0xOSw1NiArMTksMTEgQEAKICNpbmNsdWRlICJk cHVfaXJxLmgiCiAjaW5jbHVkZSAiZHB1X2NvcmVfaXJxLmgiCiAKLXN0YXRpYyB1aW50MzJfdCBn X2RwdV9pcnFfc3RhdHVzOwotCiBpcnFyZXR1cm5fdCBkcHVfaXJxKHN0cnVjdCBtc21fa21zICpr bXMpCiB7CiAJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMgPSB0b19kcHVfa21zKGttcyk7Ci0JdTMy IGludGVycnVwdHM7Ci0KLQlkcHVfa21zLT5od19pbnRyLT5vcHMuZ2V0X2ludGVycnVwdF9zb3Vy Y2VzKGRwdV9rbXMtPmh3X2ludHIsCi0JCQkmaW50ZXJydXB0cyk7Ci0KLQkvKiBzdG9yZSBpcnEg c3RhdHVzIGluIGNhc2Ugb2YgaXJxLXN0b3JtIGRlYnVnZ2luZyAqLwotCWdfZHB1X2lycV9zdGF0 dXMgPSBpbnRlcnJ1cHRzOwotCi0JLyoKLQkgKiBUYWtpbmcgY2FyZSBvZiBNRFAgaW50ZXJydXB0 Ci0JICovCi0JaWYgKGludGVycnVwdHMgJiBJUlFfU09VUkNFX01EUCkgewotCQlpbnRlcnJ1cHRz ICY9IH5JUlFfU09VUkNFX01EUDsKLQkJZHB1X2NvcmVfaXJxKGRwdV9rbXMpOwotCX0KLQotCS8q Ci0JICogUm91dGluZyBhbGwgb3RoZXIgaW50ZXJydXB0cyB0byBleHRlcm5hbCBkcml2ZXJzCi0J ICovCi0Jd2hpbGUgKGludGVycnVwdHMpIHsKLQkJaXJxX2h3X251bWJlcl90IGh3aXJxID0gZmxz KGludGVycnVwdHMpIC0gMTsKLQkJdW5zaWduZWQgaW50IG1hcHBpbmc7Ci0JCWludCByYzsKLQot CQltYXBwaW5nID0gaXJxX2ZpbmRfbWFwcGluZyhkcHVfa21zLT5pcnFfY29udHJvbGxlci5kb21h aW4sCi0JCQkJaHdpcnEpOwotCQlpZiAobWFwcGluZyA9PSAwKSB7Ci0JCQlEUFVfRVZUMzIoaHdp cnEsIERQVV9FVlRMT0dfRVJST1IpOwotCQkJZ290byBlcnJvcjsKLQkJfQotCi0JCXJjID0gZ2Vu ZXJpY19oYW5kbGVfaXJxKG1hcHBpbmcpOwotCQlpZiAocmMgPCAwKSB7Ci0JCQlEUFVfRVZUMzIo aHdpcnEsIG1hcHBpbmcsIHJjLCBEUFVfRVZUTE9HX0VSUk9SKTsKLQkJCWdvdG8gZXJyb3I7Ci0J CX0KLQotCQlpbnRlcnJ1cHRzICY9IH4oMSA8PCBod2lycSk7Ci0JfQotCi0JcmV0dXJuIElSUV9I QU5ETEVEOwogCi1lcnJvcjoKLQkvKiBiYWQgc2l0dWF0aW9uLCBpbmZvcm0gaXJxIHN5c3RlbSwg aXQgbWF5IGRpc2FibGUgb3ZlcmFsbCBNRFNTIGlycSAqLwotCXJldHVybiBJUlFfTk9ORTsKKwly ZXR1cm4gZHB1X2NvcmVfaXJxKGRwdV9rbXMpOwogfQogCiB2b2lkIGRwdV9pcnFfcHJlaW5zdGFs bChzdHJ1Y3QgbXNtX2ttcyAqa21zKQpAQCAtMTA4LDUgKzYzLDQgQEAgdm9pZCBkcHVfaXJxX3Vu aW5zdGFsbChzdHJ1Y3QgbXNtX2ttcyAqa21zKQogCX0KIAogCWRwdV9jb3JlX2lycV91bmluc3Rh bGwoZHB1X2ttcyk7Ci0JZHB1X2NvcmVfaXJxX2RvbWFpbl9maW5pKGRwdV9rbXMpOwogfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jCmluZGV4IDA2YWRiMzguLmU0YWI3NTMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKQEAgLTYzNiwxMCArNjM2 LDYgQEAgc3RhdGljIGludCBfZHB1X2ttc19kcm1fb2JqX2luaXQoc3RydWN0IGRwdV9rbXMgKmRw dV9rbXMpCiAJcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJY2F0YWxvZyA9IGRwdV9rbXMtPmNh dGFsb2c7CiAKLQlyZXQgPSBkcHVfY29yZV9pcnFfZG9tYWluX2FkZChkcHVfa21zKTsKLQlpZiAo cmV0KQotCQlnb3RvIGZhaWxfaXJxOwotCiAJLyoKIAkgKiBDcmVhdGUgZW5jb2RlciBhbmQgcXVl cnkgZGlzcGxheSBkcml2ZXJzIHRvIGNyZWF0ZQogCSAqIGJyaWRnZXMgYW5kIGNvbm5lY3RvcnMK QEAgLTcxNiw4ICs3MTIsNiBAQCBzdGF0aWMgaW50IF9kcHVfa21zX2RybV9vYmpfaW5pdChzdHJ1 Y3QgZHB1X2ttcyAqZHB1X2ttcykKIAlyZXR1cm4gMDsKIGZhaWw6CiAJX2RwdV9rbXNfZHJtX29i al9kZXN0cm95KGRwdV9rbXMpOwotZmFpbF9pcnE6Ci0JZHB1X2NvcmVfaXJxX2RvbWFpbl9maW5p KGRwdV9rbXMpOwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9rbXMuaAppbmRleCA1YjBjMDgxLi5hMWMwOTEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2ttcy5oCkBAIC0xODQsOCArMTg0LDYgQEAgc3RydWN0IGRwdV9rbXMgewog CXN0cnVjdCByZWd1bGF0b3IgKm1tYWdpYzsKIAlzdHJ1Y3QgcmVndWxhdG9yICp2ZW51czsKIAot CXN0cnVjdCBkcHVfaXJxX2NvbnRyb2xsZXIgaXJxX2NvbnRyb2xsZXI7Ci0KIAlzdHJ1Y3QgZHB1 X2h3X2ludHIgKmh3X2ludHI7CiAJc3RydWN0IGRwdV9pcnEgaXJxX29iajsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X21kc3MuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9tZHNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMjZiZjJjMQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9tZHNzLmMKQEAgLTAsMCArMSwzMDEgQEAKKy8qCisgKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMAorICogQ29weXJpZ2h0IChjKSAyMDE4LCBUaGUgTGludXgg Rm91bmRhdGlvbgorICovCisKKyNpbmNsdWRlICJkcHVfa21zLmgiCisKKyNkZWZpbmUgdG9fZHB1 X21kc3MoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcHVfbWRzcywgYmFzZSkKKworI2RlZmlu ZSBIV19JTlRSX1NUQVRVUwkJCTB4MDAxMAorCitzdHJ1Y3QgZHB1X21kc3MgeworCXN0cnVjdCBt c21fbWRzcyBiYXNlOworCXZvaWQgX19pb21lbSAqbW1pbzsKKwl1bnNpZ25lZCBsb25nIG1taW9f bGVuOworCXUzMiBod3ZlcnNpb247CisJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgbXA7CisJc3Ry dWN0IGRwdV9pcnFfY29udHJvbGxlciBpcnFfY29udHJvbGxlcjsKK307CisKK3N0YXRpYyBpbmxp bmUgdm9pZCBfZHB1X21kc3NfaHdfcmV2X2luaXQoc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcykK K3sKKwlkcHVfbWRzcy0+aHd2ZXJzaW9uID0gcmVhZGxfcmVsYXhlZChkcHVfbWRzcy0+bW1pbyAr IDB4MCk7Cit9CisKK3N0YXRpYyBpbnQgX2RwdV9tZHNzX2dldF9pbnRyX3NvdXJjZXMoc3RydWN0 IGRwdV9tZHNzICpkcHVfbWRzcywKKwkJdWludDMyX3QgKnNvdXJjZXMpCit7CisJKnNvdXJjZXMg PSByZWFkbF9yZWxheGVkKGRwdV9tZHNzLT5tbWlvICsgSFdfSU5UUl9TVEFUVVMpOworCXJldHVy biAwOworfQorCitzdGF0aWMgaXJxcmV0dXJuX3QgZHB1X21kc3NfaXJxKGludCBpcnEsIHZvaWQg KmFyZykKK3sKKwlzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzID0gYXJnOworCXUzMiBpbnRlcnJ1 cHRzOworCisJaWYgKCFhcmcpCisJCXJldHVybiBJUlFfTk9ORTsKKworCV9kcHVfbWRzc19nZXRf aW50cl9zb3VyY2VzKGRwdV9tZHNzLCAmaW50ZXJydXB0cyk7CisKKwl3aGlsZSAoaW50ZXJydXB0 cykgeworCQlpcnFfaHdfbnVtYmVyX3QgaHdpcnEgPSBmbHMoaW50ZXJydXB0cykgLSAxOworCQl1 bnNpZ25lZCBpbnQgbWFwcGluZzsKKwkJaW50IHJjOworCisJCW1hcHBpbmcgPSBpcnFfZmluZF9t YXBwaW5nKGRwdV9tZHNzLT5pcnFfY29udHJvbGxlci5kb21haW4sCisJCQkJaHdpcnEpOworCQlp ZiAobWFwcGluZyA9PSAwKSB7CisJCQlEUFVfRVZUMzIoaHdpcnEsIERQVV9FVlRMT0dfRVJST1Ip OworCQkJZ290byBlcnJvcjsKKwkJfQorCisJCXJjID0gZ2VuZXJpY19oYW5kbGVfaXJxKG1hcHBp bmcpOworCQlpZiAocmMgPCAwKSB7CisJCQlEUFVfRVZUMzIoaHdpcnEsIG1hcHBpbmcsIHJjLCBE UFVfRVZUTE9HX0VSUk9SKTsKKwkJCWdvdG8gZXJyb3I7CisJCX0KKworCQlpbnRlcnJ1cHRzICY9 IH4oMSA8PCBod2lycSk7CisJfQorCisJcmV0dXJuIElSUV9IQU5ETEVEOworCitlcnJvcjoKKwkv KiBiYWQgc2l0dWF0aW9uLCBpbmZvcm0gaXJxIHN5c3RlbSwgaXQgbWF5IGRpc2FibGUgb3ZlcmFs bCBNRFNTIGlycSAqLworCXJldHVybiBJUlFfTk9ORTsKK30KKworc3RhdGljIHZvaWQgZHB1X21k c3NfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICppcnFkKQoreworCXN0cnVjdCBkcHVfbWRzcyAq ZHB1X21kc3M7CisKKwlpZiAoIWlycWQgfHwgIWlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGly cWQpKSB7CisJCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbWV0ZXJzIGlycWQgJWRcbiIsIGlycWQg IT0gTlVMTCk7CisJCXJldHVybjsKKwl9CisJZHB1X21kc3MgPSBpcnFfZGF0YV9nZXRfaXJxX2No aXBfZGF0YShpcnFkKTsKKworCS8qIG1lbW9yeSBiYXJyaWVyICovCisJc21wX21iX19iZWZvcmVf YXRvbWljKCk7CisJY2xlYXJfYml0KGlycWQtPmh3aXJxLCAmZHB1X21kc3MtPmlycV9jb250cm9s bGVyLmVuYWJsZWRfbWFzayk7CisJLyogbWVtb3J5IGJhcnJpZXIgKi8KKwlzbXBfbWJfX2FmdGVy X2F0b21pYygpOworfQorCitzdGF0aWMgdm9pZCBkcHVfbWRzc19pcnFfdW5tYXNrKHN0cnVjdCBp cnFfZGF0YSAqaXJxZCkKK3sKKwlzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzOworCisJaWYgKCFp cnFkIHx8ICFpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShpcnFkKSkgeworCQlEUFVfRVJST1Io ImludmFsaWQgcGFyYW1ldGVycyBpcnFkICVkXG4iLCBpcnFkICE9IE5VTEwpOworCQlyZXR1cm47 CisJfQorCWRwdV9tZHNzID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoaXJxZCk7CisKKwkv KiBtZW1vcnkgYmFycmllciAqLworCXNtcF9tYl9fYmVmb3JlX2F0b21pYygpOworCXNldF9iaXQo aXJxZC0+aHdpcnEsICZkcHVfbWRzcy0+aXJxX2NvbnRyb2xsZXIuZW5hYmxlZF9tYXNrKTsKKwkv KiBtZW1vcnkgYmFycmllciAqLworCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Cit9CisKK3N0YXRp YyBzdHJ1Y3QgaXJxX2NoaXAgZHB1X21kc3NfaXJxX2NoaXAgPSB7CisJLm5hbWUgPSAiZHB1X21k c3MiLAorCS5pcnFfbWFzayA9IGRwdV9tZHNzX2lycV9tYXNrLAorCS5pcnFfdW5tYXNrID0gZHB1 X21kc3NfaXJxX3VubWFzaywKK307CisKK3N0YXRpYyBpbnQgZHB1X21kc3NfaXJxZG9tYWluX21h cChzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLAorCQl1bnNpZ25lZCBpbnQgaXJxLCBpcnFfaHdf bnVtYmVyX3QgaHdpcnEpCit7CisJc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzczsKKwlpbnQgcmV0 OworCisJaWYgKCFkb21haW4gfHwgIWRvbWFpbi0+aG9zdF9kYXRhKSB7CisJCURQVV9FUlJPUigi aW52YWxpZCBwYXJhbWV0ZXJzIGRvbWFpbiAlZFxuIiwgZG9tYWluICE9IE5VTEwpOworCQlyZXR1 cm4gLUVJTlZBTDsKKwl9CisJZHB1X21kc3MgPSBkb21haW4tPmhvc3RfZGF0YTsKKworCWlycV9z ZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsICZkcHVfbWRzc19pcnFfY2hpcCwgaGFuZGxlX2xldmVs X2lycSk7CisJcmV0ID0gaXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkcHVfbWRzcyk7CisKKwlyZXR1 cm4gcmV0OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIGRwdV9tZHNz X2lycWRvbWFpbl9vcHMgPSB7CisJLm1hcCA9IGRwdV9tZHNzX2lycWRvbWFpbl9tYXAsCisJLnhs YXRlID0gaXJxX2RvbWFpbl94bGF0ZV9vbmVjZWxsLAorfTsKKworc3RhdGljIGludCBfZHB1X21k c3NfaXJxX2RvbWFpbl9hZGQoc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcykKK3sKKwlzdHJ1Y3Qg ZGV2aWNlICpkZXY7CisJc3RydWN0IGlycV9kb21haW4gKmRvbWFpbjsKKworCWRldiA9IGRwdV9t ZHNzLT5iYXNlLmRldi0+ZGV2OworCisJZG9tYWluID0gaXJxX2RvbWFpbl9hZGRfbGluZWFyKGRl di0+b2Zfbm9kZSwgMzIsCisJCQkmZHB1X21kc3NfaXJxZG9tYWluX29wcywgZHB1X21kc3MpOwor CWlmICghZG9tYWluKSB7CisJCURQVV9FUlJPUigiZmFpbGVkIHRvIGFkZCBpcnFfZG9tYWluXG4i KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJZHB1X21kc3MtPmlycV9jb250cm9sbGVyLmVu YWJsZWRfbWFzayA9IDA7CisJZHB1X21kc3MtPmlycV9jb250cm9sbGVyLmRvbWFpbiA9IGRvbWFp bjsKKworCXJldHVybiAwOworfQorCitpbnQgX2RwdV9tZHNzX2lycV9kb21haW5fZmluaShzdHJ1 Y3QgZHB1X21kc3MgKmRwdV9tZHNzKQoreworCWlmIChkcHVfbWRzcy0+aXJxX2NvbnRyb2xsZXIu ZG9tYWluKSB7CisJCWlycV9kb21haW5fcmVtb3ZlKGRwdV9tZHNzLT5pcnFfY29udHJvbGxlci5k b21haW4pOworCQlkcHVfbWRzcy0+aXJxX2NvbnRyb2xsZXIuZG9tYWluID0gTlVMTDsKKwl9CisJ cmV0dXJuIDA7Cit9CitzdGF0aWMgaW50IGRwdV9tZHNzX2VuYWJsZShzdHJ1Y3QgbXNtX21kc3Mg Km1kc3MpCit7CisJc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcyA9IHRvX2RwdV9tZHNzKG1kc3Mp OworCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcCA9ICZkcHVfbWRzcy0+bXA7CisJaW50IHJl dCA9IDA7CisKKwlyZXQgPSBtc21fZHNzX2VuYWJsZV9jbGsobXAtPmNsa19jb25maWcsIG1wLT5u dW1fY2xrLCB0cnVlKTsKKwlpZiAocmV0KQorCQlEUFVfRVJST1IoImNsb2NrIGVuYWJsZSBmYWls ZWQsIHJldDolZFxuIiwgcmV0KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRwdV9t ZHNzX2Rpc2FibGUoc3RydWN0IG1zbV9tZHNzICptZHNzKQoreworCXN0cnVjdCBkcHVfbWRzcyAq ZHB1X21kc3MgPSB0b19kcHVfbWRzcyhtZHNzKTsKKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAq bXAgPSAmZHB1X21kc3MtPm1wOworCWludCByZXQgPSAwOworCisJcmV0ID0gbXNtX2Rzc19lbmFi bGVfY2xrKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2NsaywgZmFsc2UpOworCWlmIChyZXQpCisJ CURQVV9FUlJPUigiY2xvY2sgZGlzYWJsZSBmYWlsZWQsIHJldDolZFxuIiwgcmV0KTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgdm9pZCBkcHVfbWRzc19kZXN0cm95KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3Jt X2RldmljZShkZXYtPmRldik7CisJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcyA9IHRvX2RwdV9tZHNzKHBy aXYtPm1kc3MpOworCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcCA9ICZkcHVfbWRzcy0+bXA7 CisKKwlpZiAoIWRwdV9tZHNzKQorCQlyZXR1cm47CisKKwlfZHB1X21kc3NfaXJxX2RvbWFpbl9m aW5pKGRwdV9tZHNzKTsKKworCW1zbV9kc3NfcHV0X2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51 bV9jbGspOworCWRldm1fa2ZyZWUoJnBkZXYtPmRldiwgbXAtPmNsa19jb25maWcpOworCisJaWYg KGRwdV9tZHNzLT5tbWlvKQorCQltc21faW91bm1hcChwZGV2LCBkcHVfbWRzcy0+bW1pbyk7CisJ ZHB1X21kc3MtPm1taW8gPSBOVUxMOworCisJcG1fcnVudGltZV9kaXNhYmxlKGRldi0+ZGV2KTsK KworCWRldm1fa2ZyZWUoZGV2LT5kZXYsIGRwdV9tZHNzKTsKKwlwcml2LT5tZHNzID0gTlVMTDsK K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBtc21fbWRzc19mdW5jcyBtZHNzX2Z1bmNzID0gewor CS5lbmFibGUJPSBkcHVfbWRzc19lbmFibGUsCisJLmRpc2FibGUgPSBkcHVfbWRzc19kaXNhYmxl LAorCS5kZXN0cm95ID0gZHB1X21kc3NfZGVzdHJveSwKK307CisKK2ludCBkcHVfbWRzc19pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYtPmRldik7CisJc3RydWN0IG1zbV9kcm1fcHJpdmF0 ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzczsK KwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXA7CisJaW50IHJldCA9IDA7CisKKwlpZiAoIW9m X2RldmljZV9pc19jb21wYXRpYmxlKGRldi0+ZGV2LT5vZl9ub2RlLCAicWNvbSxkcHUtbWRzcyIp KQorCQlyZXR1cm4gMDsKKworCWRwdV9tZHNzID0gZGV2bV9remFsbG9jKGRldi0+ZGV2LCBzaXpl b2YoKmRwdV9tZHNzKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkcHVfbWRzcykKKwkJcmV0dXJuIC1F Tk9NRU07CisKKwlkcHVfbWRzcy0+bW1pbyA9IG1zbV9pb3JlbWFwKHBkZXYsICJtZHNzX3BoeXMi LCAibWRzc19waHlzIik7CisJaWYgKElTX0VSUihkcHVfbWRzcy0+bW1pbykpIHsKKwkJcmV0ID0g UFRSX0VSUihkcHVfbWRzcy0+bW1pbyk7CisJCURQVV9FUlJPUigibWRzcyByZWdpc3RlciBtZW1v cnkgbWFwIGZhaWxlZDogJWRcbiIsIHJldCk7CisJCWRwdV9tZHNzLT5tbWlvID0gTlVMTDsKKwkJ Z290byBlcnJvcjsKKwl9CisJRFJNX0lORk8oIm1hcHBlZCBtZHNzIGFkZHJlc3Mgc3BhY2UgQCVw XG4iLCBkcHVfbWRzcy0+bW1pbyk7CisJZHB1X21kc3MtPm1taW9fbGVuID0gbXNtX2lvbWFwX3Np emUocGRldiwgIm1kc3NfcGh5cyIpOworCisJbXAgPSAmZHB1X21kc3MtPm1wOworCXJldCA9IG1z bV9kc3NfcGFyc2VfY2xvY2socGRldiwgbXApOworCWlmIChyZXQpIHsKKwkJRFBVX0VSUk9SKCJm YWlsZWQgdG8gcGFyc2UgY2xvY2tzLCByZXQ9JWRcbiIsIHJldCk7CisJCWdvdG8gY2xrX3BhcnNl X2VycjsKKwl9CisKKwlyZXQgPSBtc21fZHNzX2dldF9jbGsoJnBkZXYtPmRldiwgbXAtPmNsa19j b25maWcsIG1wLT5udW1fY2xrKTsKKwlpZiAocmV0KSB7CisJCURQVV9FUlJPUigiZmFpbGVkIHRv IGdldCBjbG9ja3MsIHJldD0lZFxuIiwgcmV0KTsKKwkJZ290byBjbGtfZ2V0X2Vycm9yOworCX0K KworCXJldCA9IG1zbV9kc3NfY2xrX3NldF9yYXRlKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Ns ayk7CisJaWYgKHJldCkgeworCQlEUFVfRVJST1IoImZhaWxlZCB0byBzZXQgY2xvY2sgcmF0ZSwg cmV0PSVkXG4iLCByZXQpOworCQlnb3RvIGNsa19yYXRlX2Vycm9yOworCX0KKworCWRwdV9tZHNz LT5iYXNlLmRldiA9IGRldjsKKwlkcHVfbWRzcy0+YmFzZS5mdW5jcyA9ICZtZHNzX2Z1bmNzOwor CisJcmV0ID0gX2RwdV9tZHNzX2lycV9kb21haW5fYWRkKGRwdV9tZHNzKTsKKwlpZiAocmV0KQor CQlnb3RvIGlycV9kb21haW5fZXJyb3I7CisKKwlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKGRldi0+ ZGV2LCBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApLAorCQkJZHB1X21kc3NfaXJxLCAwLCAiZHB1 X21kc3NfaXNyIiwgZHB1X21kc3MpOworCWlmIChyZXQpIHsKKwkJRFBVX0VSUk9SKCJmYWlsZWQg dG8gaW5pdCBpcnE6ICVkXG4iLCByZXQpOworCQlnb3RvIGlycV9lcnJvcjsKKwl9CisKKwlwbV9y dW50aW1lX2VuYWJsZShkZXYtPmRldik7CisKKwlwbV9ydW50aW1lX2dldF9zeW5jKGRldi0+ZGV2 KTsKKwlfZHB1X21kc3NfaHdfcmV2X2luaXQoZHB1X21kc3MpOworCXBtX3J1bnRpbWVfcHV0X3N5 bmMoZGV2LT5kZXYpOworCisJcHJpdi0+bWRzcyA9ICZkcHVfbWRzcy0+YmFzZTsKKworCXJldHVy biByZXQ7CisKK2lycV9lcnJvcjoKKwlfZHB1X21kc3NfaXJxX2RvbWFpbl9maW5pKGRwdV9tZHNz KTsKK2lycV9kb21haW5fZXJyb3I6CitjbGtfcmF0ZV9lcnJvcjoKKwltc21fZHNzX3B1dF9jbGso bXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrKTsKK2Nsa19nZXRfZXJyb3I6CisJZGV2bV9rZnJl ZSgmcGRldi0+ZGV2LCBtcC0+Y2xrX2NvbmZpZyk7CitjbGtfcGFyc2VfZXJyOgorCWlmIChkcHVf bWRzcy0+bW1pbykKKwkJbXNtX2lvdW5tYXAocGRldiwgZHB1X21kc3MtPm1taW8pOworCWRwdV9t ZHNzLT5tbWlvID0gTlVMTDsKK2Vycm9yOgorCWRldm1fa2ZyZWUoZGV2LT5kZXYsIGRwdV9tZHNz KTsKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVf aW9fdXRpbC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfaW9fdXRpbC5jCmluZGV4IGExOGJj OTkuLmVmYTA2YTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2lvX3V0aWwu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9pb191dGlsLmMKQEAgLTQ0OCw2ICs0NDgs NjEgQEAgaW50IG1zbV9kc3NfZW5hYmxlX2NsayhzdHJ1Y3QgZHNzX2NsayAqY2xrX2FycnksIGlu dCBudW1fY2xrLCBpbnQgZW5hYmxlKQogfSAvKiBtc21fZHNzX2VuYWJsZV9jbGsgKi8KIEVYUE9S VF9TWU1CT0wobXNtX2Rzc19lbmFibGVfY2xrKTsKIAoraW50IG1zbV9kc3NfcGFyc2VfY2xvY2so c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKKwkJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIg Km1wKQoreworCXUzMiBpID0gMCwgcmMgPSAwOworCWNvbnN0IGNoYXIgKmNsb2NrX25hbWU7CisJ dTMyIGNsb2NrX3JhdGUgPSAwOworCXUzMiBjbG9ja19tYXhfcmF0ZSA9IDA7CisJaW50IG51bV9j bGsgPSAwOworCisJaWYgKCFwZGV2IHx8ICFtcCkgeworCQlwcl9lcnIoImludmFsaWQgaW5wdXQg cGFyYW0gcGRldjolcEsgbXA6JXBLXG4iLCBwZGV2LCBtcCk7CisJCXJldHVybiAtRUlOVkFMOwor CX0KKworCW1wLT5udW1fY2xrID0gMDsKKwludW1fY2xrID0gb2ZfcHJvcGVydHlfY291bnRfc3Ry aW5ncyhwZGV2LT5kZXYub2Zfbm9kZSwgImNsb2NrLW5hbWVzIik7CisJaWYgKG51bV9jbGsgPD0g MCkgeworCQlwcl9lcnIvKmRlYnVnKi8oImNsb2NrcyBhcmUgbm90IGRlZmluZWRcbiIpOworCQln b3RvIGNsa19lcnI7CisJfQorCisJbXAtPm51bV9jbGsgPSBudW1fY2xrOworCW1wLT5jbGtfY29u ZmlnID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsCisJCQlzaXplb2Yoc3RydWN0IGRzc19jbGsp ICogbnVtX2NsaywgR0ZQX0tFUk5FTCk7CisJaWYgKCFtcC0+Y2xrX2NvbmZpZykgeworCQlyYyA9 IC1FTk9NRU07CisJCW1wLT5udW1fY2xrID0gMDsKKwkJZ290byBjbGtfZXJyOworCX0KKworCWZv ciAoaSA9IDA7IGkgPCBudW1fY2xrOyBpKyspIHsKKwkJb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmdf aW5kZXgocGRldi0+ZGV2Lm9mX25vZGUsICJjbG9jay1uYW1lcyIsCisJCQkJCQkJaSwgJmNsb2Nr X25hbWUpOworCQlzdHJsY3B5KG1wLT5jbGtfY29uZmlnW2ldLmNsa19uYW1lLCBjbG9ja19uYW1l LAorCQkJCXNpemVvZihtcC0+Y2xrX2NvbmZpZ1tpXS5jbGtfbmFtZSkpOworCisJCW9mX3Byb3Bl cnR5X3JlYWRfdTMyX2luZGV4KHBkZXYtPmRldi5vZl9ub2RlLCAiY2xvY2stcmF0ZSIsCisJCQkJ CQkJaSwgJmNsb2NrX3JhdGUpOworCQltcC0+Y2xrX2NvbmZpZ1tpXS5yYXRlID0gY2xvY2tfcmF0 ZTsKKworCQlpZiAoIWNsb2NrX3JhdGUpCisJCQltcC0+Y2xrX2NvbmZpZ1tpXS50eXBlID0gRFNT X0NMS19BSEI7CisJCWVsc2UKKwkJCW1wLT5jbGtfY29uZmlnW2ldLnR5cGUgPSBEU1NfQ0xLX1BD TEs7CisKKwkJY2xvY2tfbWF4X3JhdGUgPSAwOworCQlvZl9wcm9wZXJ0eV9yZWFkX3UzMl9pbmRl eChwZGV2LT5kZXYub2Zfbm9kZSwgImNsb2NrLW1heC1yYXRlIiwKKwkJCQkJCQlpLCAmY2xvY2tf bWF4X3JhdGUpOworCQltcC0+Y2xrX2NvbmZpZ1tpXS5tYXhfcmF0ZSA9IGNsb2NrX21heF9yYXRl OworCX0KKworY2xrX2VycjoKKwlyZXR1cm4gcmM7Cit9CitFWFBPUlRfU1lNQk9MKG1zbV9kc3Nf cGFyc2VfY2xvY2spOwogCiBpbnQgZHB1X2kyY19ieXRlX3JlYWQoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCwgdWludDhfdCBzbGF2ZV9hZGRyLAogCQkJdWludDhfdCByZWdfb2Zmc2V0LCB1aW50 OF90ICpyZWFkX2J1ZikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5j IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKaW5kZXggNWQ4ZjFiNi4uYTBlNzNlYSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL21zbS9tc21fZHJ2LmMKQEAgLTUwMyw3ICs1MDMsMTggQEAgc3RhdGljIGludCBtc21f ZHJtX2luaXQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2RyaXZlciAqZHJ2KQogCWRk ZXYtPmRldl9wcml2YXRlID0gcHJpdjsKIAlwcml2LT5kZXYgPSBkZGV2OwogCi0JcmV0ID0gbWRw NV9tZHNzX2luaXQoZGRldik7CisJc3dpdGNoIChnZXRfbWRwX3ZlcihwZGV2KSkgeworCWNhc2Ug S01TX01EUDU6CisJCXJldCA9IG1kcDVfbWRzc19pbml0KGRkZXYpOworCQlicmVhazsKKwljYXNl IEtNU19EUFU6CisJCXJldCA9IGRwdV9tZHNzX2luaXQoZGRldik7CisJCWJyZWFrOworCWRlZmF1 bHQ6CisJCXJldCA9IDA7CisJCWJyZWFrOworCX0KKwogCWlmIChyZXQpCiAJCWdvdG8gbWRzc19p bml0X2ZhaWw7CiAKQEAgLTE1MzksMTIgKzE1NTAsMTMgQEAgc3RhdGljIGludCBhZGRfZGlzcGxh eV9jb21wb25lbnRzKHN0cnVjdCBkZXZpY2UgKmRldiwKIAlpbnQgcmV0OwogCiAJLyoKLQkgKiBN RFA1IGJhc2VkIGRldmljZXMgZG9uJ3QgaGF2ZSBhIGZsYXQgaGllcmFyY2h5LiBUaGVyZSBpcyBh IHRvcCBsZXZlbAotCSAqIHBhcmVudDogTURTUywgYW5kIGNoaWxkcmVuOiBNRFA1LCBEU0ksIEhE TUksIGVEUCBldGMuIFBvcHVsYXRlIHRoZQotCSAqIGNoaWxkcmVuIGRldmljZXMsIGZpbmQgdGhl IE1EUDUgbm9kZSwgYW5kIHRoZW4gYWRkIHRoZSBpbnRlcmZhY2VzCi0JICogdG8gb3VyIGNvbXBv bmVudHMgbGlzdC4KKwkgKiBNRFA1L0RQVSBiYXNlZCBkZXZpY2VzIGRvbid0IGhhdmUgYSBmbGF0 IGhpZXJhcmNoeS4gVGhlcmUgaXMgYSB0b3AKKwkgKiBsZXZlbCBwYXJlbnQ6IE1EU1MsIGFuZCBj aGlsZHJlbjogTURQNS9EUFUsIERTSSwgSERNSSwgZURQIGV0Yy4KKwkgKiBQb3B1bGF0ZSB0aGUg Y2hpbGRyZW4gZGV2aWNlcywgZmluZCB0aGUgTURQNS9EUFUgbm9kZSwgYW5kIHRoZW4gYWRkCisJ ICogdGhlIGludGVyZmFjZXMgdG8gb3VyIGNvbXBvbmVudHMgbGlzdC4KIAkgKi8KLQlpZiAob2Zf ZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LT5vZl9ub2RlLCAicWNvbSxtZHNzIikpIHsKKwlpZiAo b2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LT5vZl9ub2RlLCAicWNvbSxtZHNzIikgfHwKKwkJ b2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LT5vZl9ub2RlLCAicWNvbSxkcHUtbWRzcyIpKSB7 CiAJCXJldCA9IG9mX3BsYXRmb3JtX3BvcHVsYXRlKGRldi0+b2Zfbm9kZSwgTlVMTCwgTlVMTCwg ZGV2KTsKIAkJaWYgKHJldCkgewogCQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcG9wdWxhdGUg Y2hpbGRyZW4gZGV2aWNlc1xuIik7CkBAIC0xNjg2LDcgKzE2OTgsNyBAQCBzdGF0aWMgaW50IG1z bV9wZGV2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXsgLmNvbXBhdGli bGUgPSAicWNvbSxtZHA0IiwgLmRhdGEgPSAodm9pZCAqKUtNU19NRFA0IH0sCiAJeyAuY29tcGF0 aWJsZSA9ICJxY29tLG1kc3MiLCAuZGF0YSA9ICh2b2lkICopS01TX01EUDUgfSwKICNpZmRlZiBD T05GSUdfRFJNX01TTV9EUFUKLQl7IC5jb21wYXRpYmxlID0gInFjb20sZHB1LWttcyIsIC5kYXRh ID0gKHZvaWQgKilLTVNfRFBVIH0sCisJeyAuY29tcGF0aWJsZSA9ICJxY29tLGRwdS1tZHNzIiwg LmRhdGEgPSAodm9pZCAqKUtNU19EUFUgfSwKICNlbmRpZgogCXt9CiB9OwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9k cnYuaAppbmRleCA5MGEyNTIxLi5lOGU1ZTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaApAQCAtMzgx LDcgKzM4MSw3IEBAIHN0cnVjdCBtc21fZHJtX3ByaXZhdGUgewogCS8qIHN1Ym9yZGluYXRlIGRl dmljZXMsIGlmIHByZXNlbnQ6ICovCiAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZ3B1X3BkZXY7 CiAKLQkvKiB0b3AgbGV2ZWwgTURTUyB3cmFwcGVyIGRldmljZSAoZm9yIE1EUDUgb25seSkgKi8K KwkvKiB0b3AgbGV2ZWwgTURTUyB3cmFwcGVyIGRldmljZSAoZm9yIE1EUDUvRFBVIG9ubHkpICov CiAJc3RydWN0IG1zbV9tZHNzICptZHNzOwogCiAJLyogcG9zc2libHkgdGhpcyBzaG91bGQgYmUg aW4gdGhlIGttcyBjb21wb25lbnQsIGJ1dCBpdCBpcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fa21zLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9rbXMuaAppbmRleCA5 YTdiYzdkLi44ZjUwNjEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9rbXMu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9rbXMuaApAQCAtMTQ1LDYgKzE0NSw4IEBA IHN0cnVjdCBtc21fbWRzcyB7CiAKIGludCBtZHA1X21kc3NfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKIAoraW50IGRwdV9tZHNzX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CisK IC8qKgogICogTW9kZSBTZXQgVXRpbGl0eSBGdW5jdGlvbnMKICAqLwpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9kcHVfaW9fdXRpbC5oIGIvaW5jbHVkZS9saW51eC9kcHVfaW9fdXRpbC5oCmlu ZGV4IDdjNzM4OTkuLjQ1ZTYwNmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZHB1X2lvX3V0 aWwuaAorKysgYi9pbmNsdWRlL2xpbnV4L2RwdV9pb191dGlsLmgKQEAgLTEwNCw2ICsxMDQsOCBA QCBpbnQgbXNtX2Rzc19jb25maWdfdnJlZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkc3Nf dnJlZyAqaW5fdnJlZywKIHZvaWQgbXNtX2Rzc19wdXRfY2xrKHN0cnVjdCBkc3NfY2xrICpjbGtf YXJyeSwgaW50IG51bV9jbGspOwogaW50IG1zbV9kc3NfY2xrX3NldF9yYXRlKHN0cnVjdCBkc3Nf Y2xrICpjbGtfYXJyeSwgaW50IG51bV9jbGspOwogaW50IG1zbV9kc3NfZW5hYmxlX2NsayhzdHJ1 Y3QgZHNzX2NsayAqY2xrX2FycnksIGludCBudW1fY2xrLCBpbnQgZW5hYmxlKTsKK2ludCBtc21f ZHNzX3BhcnNlX2Nsb2NrKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCisJCXN0cnVjdCBk c3NfbW9kdWxlX3Bvd2VyICptcCk7CiAKIGludCBkcHVfaTJjX2J5dGVfcmVhZChzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50LCB1aW50OF90IHNsYXZlX2FkZHIsCiAJCSAgICAgICB1aW50OF90IHJl Z19vZmZzZXQsIHVpbnQ4X3QgKnJlYWRfYnVmKTsKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9u IENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGlu dXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRy ZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=