From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rajesh Yadav Subject: [DPU PATCH v3 03/12] drm/msm/dpu: add MDSS top level driver for dpu Date: Mon, 14 May 2018 20:56:50 +0530 Message-ID: <1526311619-3309-4-git-send-email-ryadav@codeaurora.org> References: <1526311619-3309-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: <1526311619-3309-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 bGQgcmVsYXRpb25zaGlwIGRlZmluZWQgaW4gZHQuCgpDaGFuZ2VzIGluIHYzOgoJLSB1c2UgImNs b2NrLWZyZXF1ZW5jeSIgZHQtYmluZGluZyBpbnN0ZWFkIG9mICJjbG9jay1yYXRlIiwKCSAgaXMg aXQgYW4gb3B0aW9uYWwgYmluZGluZyAoU2VhbiBQYXVsKQoJLSByZW1vdmUgaGFuZGxpbmcgb2Yg ImNsb2NrLW1heC1yYXRlIiBwcm9wcmlldGFyeQoJICBkdC1iaW5kaW5nIChTZWFuIFBhdWwpCgkt IHJlbW92ZSBpbnRlcm1lZGlhdGUgc3RvcmluZyBvZiBtc21faW9yZW1hcCgpIHJldGNvZGUKCSAg b24gZmFpbHVyZSBpbnN0ZWFkIHJldHVybiByZXRjb2RlIGRpcmVjdGx5IChTZWFuIFBhdWwpCgkt IG1zbV9pb3JlbWFwKCkgcHJpbnRzIGVycm9yIGxvZyBpbiBjYXNlIG9mIGZhaWx1cmUsCgkgIHNv IHJlbW92ZSBhZGRpdGlvbmFsIGxvZyBmcm9tIGl0J3MgY2FsbGVyCgktIHVwZGF0ZWQgbWF4IGNv cmUgY2xvY2sgcmF0ZQoJLSBkcm9wcGVkIChSZXZpZXdlZC1ieTogSm9yZGFuIENyb3VzZSkgZHVl IHRvIGFib3ZlIGNoYW5nZXMKCkNoYW5nZXMgaW4gdjI6CgktIG1lcmdlIF9kcHVfbWRzc19od19y ZXZfaW5pdCB0byBkcHVfbWRzc19pbml0IChTZWFuIFBhdWwpCgktIG1lcmdlIF9kcHVfbWRzc19n ZXRfaW50cl9zb3VyY2VzIHRvIGRwdV9tZHNzX2lycSAoU2VhbiBQYXVsKQoJLSBmaXggaW5kZW50 YXRpb24gZm9yIGlycV9maW5kX21hcHBpbmcgY2FsbCAoU2VhbiBQYXVsKQoJLSByZW1vdmUgdW5u ZWNlc3NhcnkgZ290byBzdGF0ZW1lbnRzIGZyb20gZHB1X21kc3NfaXJxIChTZWFuIFBhdWwpCgkt IHJlbW92ZSByZWR1bmRhbnQgcGFyYW0gY2hlY2tzIGZyb20KCSAgZHB1X21kc3NfaXJxX21hc2sv dW5tYXNrIChTZWFuIFBhdWwvSm9yZGFuIENyb3VzZSkKCS0gcmVtb3ZlIHJlZHVuZGFudCBwYXJh bSBjaGVja3MgZnJvbQoJICBkcHVfbWRzc19pcnFkb21haW5fbWFwIChTZWFuIFBhdWwvSm9yZGFu IENyb3VzZSkKCS0gcmV0dXJuIGVycm9yIGNvZGUgZnJvbSBkcHVfbWRzc19lbmFibGUvZGlzYWJs ZSAoU2VhbiBQYXVsL0pvcmRhbiBDcm91c2UpCgktIHJlbW92ZSByZWR1bmRhbnQgcGFyYW0gY2hl Y2sgZnJvbSBkcHVfbWRzc19kZXN0cm95IChTZWFuIFBhdWwpCgktIHJlbW92ZSBleHBsaWNpdCBj YWxscyB0byBkZXZtX2tmcmVlIChTZWFuIFBhdWwvSm9yZGFuIENyb3VzZSkKCS0gcmVtb3ZlIGNv bXBhdGliaWxpdHkgY2hlY2sgZnJvbSBkcHVfbWRzc19pbml0IGFzCgkgIGl0IGlzIGNvbmRpdGlv bmFsbHkgY2FsbGVkIGZyb20gbXNtX2RydiAoU2VhbiBQYXVsKQoJLSByZXdvcmtlZCBtc21fZHNz X3BhcnNlX2Nsb2NrKCkgdG8gYWRkIHJldHVybiBjaGVja3MgZm9yCgkgIG9mX3Byb3BlcnR5X3Jl YWRfKiBjYWxscywgZml4IGxvZyBtZXNzYWdlIGFuZAoJICBmaXggYWxpZ25tZW50IGlzc3VlcyAo U2VhbiBQYXVsL0pvcmRhbiBDcm91c2UpCgktIHJlbW92ZSBleHRyYSBsaW5lIGJlZm9yZSBkcHVf bWRzc19pbml0IChTZWFuIFBhdWwpCgktIHJlbW92ZSByZWR1bmRhbnQgcGFyYW0gY2hlY2tzIGZy b20gX19pbnRyX29mZnNldCBhbmQKCSAgbWFrZSBpdCBhIHZvaWQgZnVuY3Rpb24gdG8gYXZvaWQg dW5uZWNlc3NhcnkgZXJyb3IKCSAgaGFuZGxpbmcgZnJvbSBjYWxsZXIgKEpvcmRhbiBDcm91c2Up CgktIHJlbW92ZSByZWR1bmRhbnQgcGFyYW0gY2hlY2sgZnJvbSBkcHVfbWRzc19pcnEgKEpvcmRh biBDcm91c2UpCgktIGNoYW5nZSBtZHNzIGFkZHJlc3Mgc3BhY2UgbG9nIG1lc3NhZ2UgdG8gZGVi dWcgYW5kIHVzZSAlcEsgZm9yCgkgIGtlcm5lbCBwb2ludGVycyAoSm9yZGFuIENyb3VzZSkKCS0g cmVtb3ZlIHVubmVjZXNzYXJ5IGxvZyBtZXNzYWdlIGZyb20gbXNtX2Rzc19wYXJzZV9jbG9jayAo Sm9yZGFuIENyb3VzZSkKCS0gZG9uJ3QgZXhwb3J0IG1zbV9kc3NfcGFyc2VfY2xvY2sgc2luY2Ug aXQgaXMgdXNlZAoJICBvbmx5IGJ5IGRwdSBkcml2ZXIgKEpvcmRhbiBDcm91c2UpCgpTaWduZWQt b2ZmLWJ5OiBSYWplc2ggWWFkYXYgPHJ5YWRhdkBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vbXNtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX2lycS5jICAgICAgfCAgOTcgLS0tLS0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuaCAgICAgIHwg IDE0IC0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmggICAg IHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5j ICAgIHwgICA5IC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9n LmggICAgfCAgIDcgLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVy cnVwdHMuYyB8ICAyOCArLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19p bnRlcnJ1cHRzLmggfCAgMTEgLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ly cS5jICAgICAgICAgICB8ICA0OCArLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2ttcy5jICAgICAgICAgICB8ICAgNiAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfa21zLmggICAgICAgICAgIHwgICAyIC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9tZHNzLmMgICAgICAgICAgfCAyNTEgKysrKysrKysrKysrKysrKysrKysrKwogZHJp dmVycy9ncHUvZHJtL21zbS9kcHVfaW9fdXRpbC5jICAgICAgICAgICAgICAgICB8ICA0OSArKysr KwogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMgICAgICAgICAgICAgICAgICAgICB8ICAy NiArKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oICAgICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oICAgICAgICAgICAgICAgICAg ICAgfCAgIDEgKwogaW5jbHVkZS9saW51eC9kcHVfaW9fdXRpbC5oICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMiArCiAxNyBmaWxlcyBjaGFuZ2VkLCAzMjkgaW5zZXJ0aW9ucygrKSwgMjI3IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9tZHNzLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxl IGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQppbmRleCBkNzU1OGVkLi5kOTgyNmMxIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vTWFrZWZpbGUKQEAgLTgxLDYgKzgxLDcgQEAgbXNtLXkgOj0gXAogCWRpc3AvZHB1 MS9kcHVfcmVnX2RtYS5vIFwKIAlkaXNwL2RwdTEvZHB1X3JtLm8gXAogCWRpc3AvZHB1MS9kcHVf dmJpZi5vIFwKKwlkaXNwL2RwdTEvZHB1X21kc3MubyBcCiAJZHB1X2RiZy5vIFwKIAlkcHVfaW9f dXRpbC5vIFwKIAlkcHVfZGJnX2V2dGxvZy5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2NvcmVfaXJxLmMKaW5kZXggZmUzMzAxMy4uOTc3YWRjNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmMKQEAgLTUxNSwxMDMgKzUxNSw2 IEBAIHZvaWQgZHB1X2NvcmVfaXJxX3VuaW5zdGFsbChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykK IAlkcHVfa21zLT5pcnFfb2JqLnRvdGFsX2lycXMgPSAwOwogfQogCi1zdGF0aWMgdm9pZCBkcHVf Y29yZV9pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmlycWQpCi17Ci0Jc3RydWN0IGRwdV9rbXMg KmRwdV9rbXM7Ci0KLQlpZiAoIWlycWQgfHwgIWlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGly cWQpKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbWV0ZXJzIGlycWQgJWRcbiIsIGlycWQg IT0gTlVMTCk7Ci0JCXJldHVybjsKLQl9Ci0JZHB1X2ttcyA9IGlycV9kYXRhX2dldF9pcnFfY2hp cF9kYXRhKGlycWQpOwotCi0JLyogbWVtb3J5IGJhcnJpZXIgKi8KLQlzbXBfbWJfX2JlZm9yZV9h dG9taWMoKTsKLQljbGVhcl9iaXQoaXJxZC0+aHdpcnEsICZkcHVfa21zLT5pcnFfY29udHJvbGxl ci5lbmFibGVkX21hc2spOwotCS8qIG1lbW9yeSBiYXJyaWVyICovCi0Jc21wX21iX19hZnRlcl9h dG9taWMoKTsKLX0KLQotc3RhdGljIHZvaWQgZHB1X2NvcmVfaXJxX3VubWFzayhzdHJ1Y3QgaXJx X2RhdGEgKmlycWQpCi17Ci0Jc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7Ci0KLQlpZiAoIWlycWQg fHwgIWlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGlycWQpKSB7Ci0JCURQVV9FUlJPUigiaW52 YWxpZCBwYXJhbWV0ZXJzIGlycWQgJWRcbiIsIGlycWQgIT0gTlVMTCk7Ci0JCXJldHVybjsKLQl9 Ci0JZHB1X2ttcyA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGlycWQpOwotCi0JLyogbWVt b3J5IGJhcnJpZXIgKi8KLQlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKLQlzZXRfYml0KGlycWQt Pmh3aXJxLCAmZHB1X2ttcy0+aXJxX2NvbnRyb2xsZXIuZW5hYmxlZF9tYXNrKTsKLQkvKiBtZW1v cnkgYmFycmllciAqLwotCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Ci19Ci0KLXN0YXRpYyBzdHJ1 Y3QgaXJxX2NoaXAgZHB1X2NvcmVfaXJxX2NoaXAgPSB7Ci0JLm5hbWUgPSAiZHB1IiwKLQkuaXJx X21hc2sgPSBkcHVfY29yZV9pcnFfbWFzaywKLQkuaXJxX3VubWFzayA9IGRwdV9jb3JlX2lycV91 bm1hc2ssCi19OwotCi1zdGF0aWMgaW50IGRwdV9jb3JlX2lycWRvbWFpbl9tYXAoc3RydWN0IGly cV9kb21haW4gKmRvbWFpbiwKLQkJdW5zaWduZWQgaW50IGlycSwgaXJxX2h3X251bWJlcl90IGh3 aXJxKQotewotCXN0cnVjdCBkcHVfa21zICpkcHVfa21zOwotCWludCByYzsKLQotCWlmICghZG9t YWluIHx8ICFkb21haW4tPmhvc3RfZGF0YSkgewotCQlEUFVfRVJST1IoImludmFsaWQgcGFyYW1l dGVycyBkb21haW4gJWRcbiIsIGRvbWFpbiAhPSBOVUxMKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0J fQotCWRwdV9rbXMgPSBkb21haW4tPmhvc3RfZGF0YTsKLQotCWlycV9zZXRfY2hpcF9hbmRfaGFu ZGxlcihpcnEsICZkcHVfY29yZV9pcnFfY2hpcCwgaGFuZGxlX2xldmVsX2lycSk7Ci0JcmMgPSBp cnFfc2V0X2NoaXBfZGF0YShpcnEsIGRwdV9rbXMpOwotCi0JcmV0dXJuIHJjOwotfQotCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIGRwdV9jb3JlX2lycWRvbWFpbl9vcHMgPSB7 Ci0JLm1hcCA9IGRwdV9jb3JlX2lycWRvbWFpbl9tYXAsCi0JLnhsYXRlID0gaXJxX2RvbWFpbl94 bGF0ZV9vbmVjZWxsLAotfTsKLQotaW50IGRwdV9jb3JlX2lycV9kb21haW5fYWRkKHN0cnVjdCBk cHVfa21zICpkcHVfa21zKQotewotCXN0cnVjdCBkZXZpY2UgKmRldjsKLQlzdHJ1Y3QgaXJxX2Rv bWFpbiAqZG9tYWluOwotCi0JaWYgKCFkcHVfa21zLT5kZXYgfHwgIWRwdV9rbXMtPmRldi0+ZGV2 KSB7Ci0JCXByX2VycigiaW52YWxpZCBkZXZpY2UgaGFuZGxlc1xuIik7Ci0JCXJldHVybiAtRUlO VkFMOwotCX0KLQotCWRldiA9IGRwdV9rbXMtPmRldi0+ZGV2OwotCi0JZG9tYWluID0gaXJxX2Rv bWFpbl9hZGRfbGluZWFyKGRldi0+b2Zfbm9kZSwgMzIsCi0JCQkmZHB1X2NvcmVfaXJxZG9tYWlu X29wcywgZHB1X2ttcyk7Ci0JaWYgKCFkb21haW4pIHsKLQkJcHJfZXJyKCJmYWlsZWQgdG8gYWRk IGlycV9kb21haW5cbiIpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlkcHVfa21zLT5pcnFf Y29udHJvbGxlci5lbmFibGVkX21hc2sgPSAwOwotCWRwdV9rbXMtPmlycV9jb250cm9sbGVyLmRv bWFpbiA9IGRvbWFpbjsKLQotCXJldHVybiAwOwotfQotCi1pbnQgZHB1X2NvcmVfaXJxX2RvbWFp bl9maW5pKHN0cnVjdCBkcHVfa21zICpkcHVfa21zKQotewotCWlmIChkcHVfa21zLT5pcnFfY29u dHJvbGxlci5kb21haW4pIHsKLQkJaXJxX2RvbWFpbl9yZW1vdmUoZHB1X2ttcy0+aXJxX2NvbnRy b2xsZXIuZG9tYWluKTsKLQkJZHB1X2ttcy0+aXJxX2NvbnRyb2xsZXIuZG9tYWluID0gTlVMTDsK LQl9Ci0JcmV0dXJuIDA7Ci19Ci0KIGlycXJldHVybl90IGRwdV9jb3JlX2lycShzdHJ1Y3QgZHB1 X2ttcyAqZHB1X2ttcykKIHsKIAkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2NvcmVfaXJxLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfY29yZV9pcnEuaAppbmRleCA2NGE1NGZlLi44ZmE1OWRiIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuaApAQCAtMzgsMjAgKzM4LDYgQEAKIHZvaWQg ZHB1X2NvcmVfaXJxX3VuaW5zdGFsbChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcyk7CiAKIC8qKgot ICogZHB1X2NvcmVfaXJxX2RvbWFpbl9hZGQgLSBBZGQgY29yZSBJUlEgZG9tYWluIGZvciBEUFUK LSAqIEBkcHVfa21zOgkJRFBVIGhhbmRsZQotICogQHJldHVybjoJCW5vbmUKLSAqLwotaW50IGRw dV9jb3JlX2lycV9kb21haW5fYWRkKHN0cnVjdCBkcHVfa21zICpkcHVfa21zKTsKLQotLyoqCi0g KiBkcHVfY29yZV9pcnFfZG9tYWluX2ZpbmkgLSB1bmluc3RhbGwgY29yZSBJUlEgZG9tYWluCi0g KiBAZHB1X2ttczoJCURQVSBoYW5kbGUKLSAqIEByZXR1cm46CQkwIGlmIHN1Y2Nlc3M7IGVycm9y IGNvZGUgb3RoZXJ3aXNlCi0gKi8KLWludCBkcHVfY29yZV9pcnFfZG9tYWluX2Zpbmkoc3RydWN0 IGRwdV9rbXMgKmRwdV9rbXMpOwotCi0vKioKICAqIGRwdV9jb3JlX2lycSAtIGNvcmUgSVJRIGhh bmRsZXIKICAqIEBkcHVfa21zOgkJRFBVIGhhbmRsZQogICogQHJldHVybjoJCWludGVycnVwdCBo YW5kbGluZyBzdGF0dXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9jb3JlX3BlcmYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3Jl X3BlcmYuaAppbmRleCAxOTY1ZmY1Li5mZTRkOGVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5oCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAi ZHB1X2h3X2NhdGFsb2cuaCIKICNpbmNsdWRlICJkcHVfcG93ZXJfaGFuZGxlLmgiCiAKLSNkZWZp bmUJRFBVX1BFUkZfREVGQVVMVF9NQVhfQ09SRV9DTEtfUkFURQkzMjAwMDAwMDAKKyNkZWZpbmUJ RFBVX1BFUkZfREVGQVVMVF9NQVhfQ09SRV9DTEtfUkFURQk0MTI1MDAwMDAKIAogLyoqCiAgKiBz dHJ1Y3QgZHB1X2NvcmVfcGVyZl9wYXJhbXMgLSBkZWZpbml0aW9uIG9mIHBlcmZvcm1hbmNlIHBh cmFtZXRlcnMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d19jYXRhbG9nLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxv Zy5jCmluZGV4IDhlNzc5YzAuLmM1YjM3MGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYwpAQCAtNzcsMTMgKzc3LDYgQEAKIAkuaGFzX2lkbGVf cGMgPSB0cnVlLAogfTsKIAotc3RhdGljIHN0cnVjdCBkcHVfbWRzc19iYXNlX2NmZyBzZG04NDVf bWRzc1tdID0gewotCXsKLQkubmFtZSA9ICJtZHNzXzAiLCAuaWQgPSBNRFBfVE9QLAotCS5iYXNl ID0gMHgwLCAuZmVhdHVyZXMgPSAwCi0JfSwKLX07Ci0KIHN0YXRpYyBzdHJ1Y3QgZHB1X21kcF9j Zmcgc2RtODQ1X21kcFtdID0gewogCXsKIAkubmFtZSA9ICJ0b3BfMCIsIC5pZCA9IE1EUF9UT1As CkBAIC01NTAsOCArNTQzLDYgQEAgdm9pZCBzZG04NDVfY2ZnX2luaXQoc3RydWN0IGRwdV9tZHNz X2NmZyAqZHB1X2NmZykKIHsKIAkqZHB1X2NmZyA9IChzdHJ1Y3QgZHB1X21kc3NfY2ZnKXsKIAkJ LmNhcHMgPSAmc2RtODQ1X2RwdV9jYXBzLAotCQkubWRzc19jb3VudCA9IEFSUkFZX1NJWkUoc2Rt ODQ1X21kc3MpLAotCQkubWRzcyA9IHNkbTg0NV9tZHNzLAogCQkubWRwX2NvdW50ID0gQVJSQVlf U0laRShzZG04NDVfbWRwKSwKIAkJLm1kcCA9IHNkbTg0NV9tZHAsCiAJCS5jdGxfY291bnQgPSBB UlJBWV9TSVpFKHNkbTg0NV9jdGwpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9od19jYXRhbG9nLmgKaW5kZXggMzliZWMwYS4uNzA4NDY0MyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oCkBAIC00OTIsMTAgKzQ5Miw2 IEBAIHN0cnVjdCBkcHVfd2Jfc3ViX2Jsb2NrcyB7CiAJdTMyIG1heGxpbmV3aWR0aDsKIH07CiAK LXN0cnVjdCBkcHVfbWRzc19iYXNlX2NmZyB7Ci0JRFBVX0hXX0JMS19JTkZPOwotfTsKLQogLyoq CiAgKiBkcHVfY2xrX2N0cmxfdHlwZSAtIERlZmluZXMgdG9wIGxldmVsIGNsb2NrIGNvbnRyb2wg c2lnbmFscwogICovCkBAIC04NzUsOSArODcxLDYgQEAgc3RydWN0IGRwdV9tZHNzX2NmZyB7CiAK IAljb25zdCBzdHJ1Y3QgZHB1X2NhcHMgKmNhcHM7CiAKLQl1MzIgbWRzc19jb3VudDsKLQlzdHJ1 Y3QgZHB1X21kc3NfYmFzZV9jZmcgKm1kc3M7Ci0KIAl1MzIgbWRwX2NvdW50OwogCXN0cnVjdCBk cHVfbWRwX2NmZyAqbWRwOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2h3X2ludGVycnVwdHMuYwppbmRleCA5NzY3Y2M4Li43M2YwODRjIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLmMKQEAgLTIyLDcg KzIyLDYgQEAKICAqIFJlZ2lzdGVyIG9mZnNldHMgaW4gTURTUyByZWdpc3RlciBmaWxlIGZvciB0 aGUgaW50ZXJydXB0IHJlZ2lzdGVycwogICogdy5yLnQuIHRvIHRoZSBNRFNTIGJhc2UKICAqLwot I2RlZmluZSBIV19JTlRSX1NUQVRVUwkJCTB4MDAxMAogI2RlZmluZSBNRFBfU1NQUF9UT1AwX09G RgkJMHgxMDAwCiAjZGVmaW5lIE1EUF9JTlRGXzBfT0ZGCQkJMHg2QjAwMAogI2RlZmluZSBNRFBf SU5URl8xX09GRgkJCTB4NkI4MDAKQEAgLTEwMTcsMTcgKzEwMTYsNiBAQCBzdGF0aWMgaW50IGRw dV9od19pbnRyX2dldF92YWxpZF9pbnRlcnJ1cHRzKHN0cnVjdCBkcHVfaHdfaW50ciAqaW50ciwK IAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBkcHVfaHdfaW50cl9nZXRfaW50ZXJydXB0X3Nv dXJjZXMoc3RydWN0IGRwdV9od19pbnRyICppbnRyLAotCQl1aW50MzJfdCAqc291cmNlcykKLXsK LQlpZiAoIWludHIgfHwgIXNvdXJjZXMpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JKnNvdXJjZXMg PSBEUFVfUkVHX1JFQUQoJmludHItPmh3LCBIV19JTlRSX1NUQVRVUyk7Ci0KLQlyZXR1cm4gMDsK LX0KLQogc3RhdGljIHZvaWQgZHB1X2h3X2ludHJfZ2V0X2ludGVycnVwdF9zdGF0dXNlcyhzdHJ1 Y3QgZHB1X2h3X2ludHIgKmludHIpCiB7CiAJaW50IGk7CkBAIC0xMTYyLDcgKzExNTAsNiBAQCBz dGF0aWMgdm9pZCBfX3NldHVwX2ludHJfb3BzKHN0cnVjdCBkcHVfaHdfaW50cl9vcHMgKm9wcykK IAlvcHMtPmNsZWFyX2FsbF9pcnFzID0gZHB1X2h3X2ludHJfY2xlYXJfaXJxczsKIAlvcHMtPmRp c2FibGVfYWxsX2lycXMgPSBkcHVfaHdfaW50cl9kaXNhYmxlX2lycXM7CiAJb3BzLT5nZXRfdmFs aWRfaW50ZXJydXB0cyA9IGRwdV9od19pbnRyX2dldF92YWxpZF9pbnRlcnJ1cHRzOwotCW9wcy0+ Z2V0X2ludGVycnVwdF9zb3VyY2VzID0gZHB1X2h3X2ludHJfZ2V0X2ludGVycnVwdF9zb3VyY2Vz OwogCW9wcy0+Z2V0X2ludGVycnVwdF9zdGF0dXNlcyA9IGRwdV9od19pbnRyX2dldF9pbnRlcnJ1 cHRfc3RhdHVzZXM7CiAJb3BzLT5jbGVhcl9pbnRlcnJ1cHRfc3RhdHVzID0gZHB1X2h3X2ludHJf Y2xlYXJfaW50ZXJydXB0X3N0YXR1czsKIAlvcHMtPmNsZWFyX2ludHJfc3RhdHVzX25vbG9jayA9 IGRwdV9od19pbnRyX2NsZWFyX2ludHJfc3RhdHVzX25vbG9jazsKQEAgLTExNzAsMjMgKzExNTcs MTggQEAgc3RhdGljIHZvaWQgX19zZXR1cF9pbnRyX29wcyhzdHJ1Y3QgZHB1X2h3X2ludHJfb3Bz ICpvcHMpCiAJb3BzLT5nZXRfaW50cl9zdGF0dXNfbm9sb2NrID0gZHB1X2h3X2ludHJfZ2V0X2lu dHJfc3RhdHVzX25vbG9jazsKIH0KIAotc3RhdGljIHN0cnVjdCBkcHVfbWRzc19iYXNlX2NmZyAq X19pbnRyX29mZnNldChzdHJ1Y3QgZHB1X21kc3NfY2ZnICptLAorc3RhdGljIHZvaWQgX19pbnRy X29mZnNldChzdHJ1Y3QgZHB1X21kc3NfY2ZnICptLAogCQl2b2lkIF9faW9tZW0gKmFkZHIsIHN0 cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmh3KQogewotCWlmICghbSB8fCAhYWRkciB8fCAhaHcg fHwgbS0+bWRwX2NvdW50ID09IDApCi0JCXJldHVybiBOVUxMOwotCiAJaHctPmJhc2Vfb2ZmID0g YWRkcjsKLQlody0+YmxrX29mZiA9IG0tPm1kc3NbMF0uYmFzZTsKKwlody0+YmxrX29mZiA9IG0t Pm1kcFswXS5iYXNlOwogCWh3LT5od3ZlcnNpb24gPSBtLT5od3ZlcnNpb247Ci0JcmV0dXJuICZt LT5tZHNzWzBdOwogfQogCiBzdHJ1Y3QgZHB1X2h3X2ludHIgKmRwdV9od19pbnRyX2luaXQodm9p ZCBfX2lvbWVtICphZGRyLAogCQlzdHJ1Y3QgZHB1X21kc3NfY2ZnICptKQogewogCXN0cnVjdCBk cHVfaHdfaW50ciAqaW50cjsKLQlzdHJ1Y3QgZHB1X21kc3NfYmFzZV9jZmcgKmNmZzsKIAogCWlm ICghYWRkciB8fCAhbSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CkBAIC0xMTk1LDExICsx MTc3LDcgQEAgc3RydWN0IGRwdV9od19pbnRyICpkcHVfaHdfaW50cl9pbml0KHZvaWQgX19pb21l bSAqYWRkciwKIAlpZiAoIWludHIpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0JY2Zn ID0gX19pbnRyX29mZnNldChtLCBhZGRyLCAmaW50ci0+aHcpOwotCWlmICghY2ZnKSB7Ci0JCWtm cmVlKGludHIpOwotCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKLQl9CisJX19pbnRyX29mZnNl dChtLCBhZGRyLCAmaW50ci0+aHcpOwogCV9fc2V0dXBfaW50cl9vcHMoJmludHItPm9wcyk7CiAK IAlpbnRyLT5pcnFfaWR4X3RibF9zaXplID0gQVJSQVlfU0laRShkcHVfaXJxX21hcCk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5o IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVycnVwdHMuaAppbmRl eCAyZjFhODI4Li5iNTJjZGNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9od19pbnRlcnJ1cHRzLmgKQEAgLTI0MiwxNyArMjQyLDYgQEAgc3RydWN0IGRwdV9o d19pbnRyX29wcyB7CiAJaW50ICgqZ2V0X3ZhbGlkX2ludGVycnVwdHMpKAogCQkJc3RydWN0IGRw dV9od19pbnRyICppbnRyLAogCQkJdWludDMyX3QgKm1hc2spOwotCi0JLyoqCi0JICogZ2V0X2lu dGVycnVwdF9zb3VyY2VzIC0gR2V0cyB0aGUgYml0bWFzayBvZiB0aGUgRFBVIGludGVycnVwdAot CSAqICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSB0aGF0IGFyZSBjdXJyZW50bHkgZmly ZWQuCi0JICogQGludHI6CUhXIGludGVycnVwdCBoYW5kbGUKLQkgKiBAc291cmNlczoJUmV0dXJu aW5nIHRoZSBEUFUgaW50ZXJydXB0IHNvdXJjZSBzdGF0dXMgYml0IG1hc2sKLQkgKiBAcmV0dXJu OgkwIGZvciBzdWNjZXNzLCBvdGhlcndpc2UgZmFpbHVyZQotCSAqLwotCWludCAoKmdldF9pbnRl cnJ1cHRfc291cmNlcykoCi0JCQlzdHJ1Y3QgZHB1X2h3X2ludHIgKmludHIsCi0JCQl1aW50MzJf dCAqc291cmNlcyk7CiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9p cnEuYwppbmRleCAxOWMwOTI5Li5kNWU2Y2UwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2lycS5jCkBAIC0xOSw1NiArMTksMTEgQEAKICNpbmNsdWRlICJkcHVfaXJxLmgiCiAj aW5jbHVkZSAiZHB1X2NvcmVfaXJxLmgiCiAKLXN0YXRpYyB1aW50MzJfdCBnX2RwdV9pcnFfc3Rh dHVzOwotCiBpcnFyZXR1cm5fdCBkcHVfaXJxKHN0cnVjdCBtc21fa21zICprbXMpCiB7CiAJc3Ry dWN0IGRwdV9rbXMgKmRwdV9rbXMgPSB0b19kcHVfa21zKGttcyk7Ci0JdTMyIGludGVycnVwdHM7 Ci0KLQlkcHVfa21zLT5od19pbnRyLT5vcHMuZ2V0X2ludGVycnVwdF9zb3VyY2VzKGRwdV9rbXMt Pmh3X2ludHIsCi0JCQkmaW50ZXJydXB0cyk7Ci0KLQkvKiBzdG9yZSBpcnEgc3RhdHVzIGluIGNh c2Ugb2YgaXJxLXN0b3JtIGRlYnVnZ2luZyAqLwotCWdfZHB1X2lycV9zdGF0dXMgPSBpbnRlcnJ1 cHRzOwotCi0JLyoKLQkgKiBUYWtpbmcgY2FyZSBvZiBNRFAgaW50ZXJydXB0Ci0JICovCi0JaWYg KGludGVycnVwdHMgJiBJUlFfU09VUkNFX01EUCkgewotCQlpbnRlcnJ1cHRzICY9IH5JUlFfU09V UkNFX01EUDsKLQkJZHB1X2NvcmVfaXJxKGRwdV9rbXMpOwotCX0KLQotCS8qCi0JICogUm91dGlu ZyBhbGwgb3RoZXIgaW50ZXJydXB0cyB0byBleHRlcm5hbCBkcml2ZXJzCi0JICovCi0Jd2hpbGUg KGludGVycnVwdHMpIHsKLQkJaXJxX2h3X251bWJlcl90IGh3aXJxID0gZmxzKGludGVycnVwdHMp IC0gMTsKLQkJdW5zaWduZWQgaW50IG1hcHBpbmc7Ci0JCWludCByYzsKLQotCQltYXBwaW5nID0g aXJxX2ZpbmRfbWFwcGluZyhkcHVfa21zLT5pcnFfY29udHJvbGxlci5kb21haW4sCi0JCQkJaHdp cnEpOwotCQlpZiAobWFwcGluZyA9PSAwKSB7Ci0JCQlEUFVfRVZUMzIoaHdpcnEsIERQVV9FVlRM T0dfRVJST1IpOwotCQkJZ290byBlcnJvcjsKLQkJfQotCi0JCXJjID0gZ2VuZXJpY19oYW5kbGVf aXJxKG1hcHBpbmcpOwotCQlpZiAocmMgPCAwKSB7Ci0JCQlEUFVfRVZUMzIoaHdpcnEsIG1hcHBp bmcsIHJjLCBEUFVfRVZUTE9HX0VSUk9SKTsKLQkJCWdvdG8gZXJyb3I7Ci0JCX0KLQotCQlpbnRl cnJ1cHRzICY9IH4oMSA8PCBod2lycSk7Ci0JfQotCi0JcmV0dXJuIElSUV9IQU5ETEVEOwogCi1l cnJvcjoKLQkvKiBiYWQgc2l0dWF0aW9uLCBpbmZvcm0gaXJxIHN5c3RlbSwgaXQgbWF5IGRpc2Fi bGUgb3ZlcmFsbCBNRFNTIGlycSAqLwotCXJldHVybiBJUlFfTk9ORTsKKwlyZXR1cm4gZHB1X2Nv cmVfaXJxKGRwdV9rbXMpOwogfQogCiB2b2lkIGRwdV9pcnFfcHJlaW5zdGFsbChzdHJ1Y3QgbXNt X2ttcyAqa21zKQpAQCAtMTA4LDUgKzYzLDQgQEAgdm9pZCBkcHVfaXJxX3VuaW5zdGFsbChzdHJ1 Y3QgbXNtX2ttcyAqa21zKQogCX0KIAogCWRwdV9jb3JlX2lycV91bmluc3RhbGwoZHB1X2ttcyk7 Ci0JZHB1X2NvcmVfaXJxX2RvbWFpbl9maW5pKGRwdV9rbXMpOwogfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2ttcy5jCmluZGV4IDA2YWRiMzguLmU0YWI3NTMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKQEAgLTYzNiwxMCArNjM2LDYgQEAgc3RhdGlj IGludCBfZHB1X2ttc19kcm1fb2JqX2luaXQoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMpCiAJcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJY2F0YWxvZyA9IGRwdV9rbXMtPmNhdGFsb2c7CiAKLQly ZXQgPSBkcHVfY29yZV9pcnFfZG9tYWluX2FkZChkcHVfa21zKTsKLQlpZiAocmV0KQotCQlnb3Rv IGZhaWxfaXJxOwotCiAJLyoKIAkgKiBDcmVhdGUgZW5jb2RlciBhbmQgcXVlcnkgZGlzcGxheSBk cml2ZXJzIHRvIGNyZWF0ZQogCSAqIGJyaWRnZXMgYW5kIGNvbm5lY3RvcnMKQEAgLTcxNiw4ICs3 MTIsNiBAQCBzdGF0aWMgaW50IF9kcHVfa21zX2RybV9vYmpfaW5pdChzdHJ1Y3QgZHB1X2ttcyAq ZHB1X2ttcykKIAlyZXR1cm4gMDsKIGZhaWw6CiAJX2RwdV9rbXNfZHJtX29ial9kZXN0cm95KGRw dV9rbXMpOwotZmFpbF9pcnE6Ci0JZHB1X2NvcmVfaXJxX2RvbWFpbl9maW5pKGRwdV9rbXMpOwog CXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaApp bmRleCA1YjBjMDgxLi5hMWMwOTEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfa21zLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2ttcy5oCkBAIC0xODQsOCArMTg0LDYgQEAgc3RydWN0IGRwdV9rbXMgewogCXN0cnVjdCByZWd1 bGF0b3IgKm1tYWdpYzsKIAlzdHJ1Y3QgcmVndWxhdG9yICp2ZW51czsKIAotCXN0cnVjdCBkcHVf aXJxX2NvbnRyb2xsZXIgaXJxX2NvbnRyb2xsZXI7Ci0KIAlzdHJ1Y3QgZHB1X2h3X2ludHIgKmh3 X2ludHI7CiAJc3RydWN0IGRwdV9pcnEgaXJxX29iajsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X21kc3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9tZHNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRh Y2NkZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9tZHNzLmMKQEAgLTAsMCArMSwyNTEgQEAKKy8qCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAorICogQ29weXJpZ2h0IChjKSAyMDE4LCBUaGUgTGludXggRm91bmRhdGlvbgor ICovCisKKyNpbmNsdWRlICJkcHVfa21zLmgiCisKKyNkZWZpbmUgdG9fZHB1X21kc3MoeCkgY29u dGFpbmVyX29mKHgsIHN0cnVjdCBkcHVfbWRzcywgYmFzZSkKKworI2RlZmluZSBIV19JTlRSX1NU QVRVUwkJCTB4MDAxMAorCitzdHJ1Y3QgZHB1X21kc3MgeworCXN0cnVjdCBtc21fbWRzcyBiYXNl OworCXZvaWQgX19pb21lbSAqbW1pbzsKKwl1bnNpZ25lZCBsb25nIG1taW9fbGVuOworCXUzMiBo d3ZlcnNpb247CisJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgbXA7CisJc3RydWN0IGRwdV9pcnFf Y29udHJvbGxlciBpcnFfY29udHJvbGxlcjsKK307CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBkcHVf bWRzc19pcnEoaW50IGlycSwgdm9pZCAqYXJnKQoreworCXN0cnVjdCBkcHVfbWRzcyAqZHB1X21k c3MgPSBhcmc7CisJdTMyIGludGVycnVwdHM7CisKKwlpbnRlcnJ1cHRzID0gcmVhZGxfcmVsYXhl ZChkcHVfbWRzcy0+bW1pbyArIEhXX0lOVFJfU1RBVFVTKTsKKworCXdoaWxlIChpbnRlcnJ1cHRz KSB7CisJCWlycV9od19udW1iZXJfdCBod2lycSA9IGZscyhpbnRlcnJ1cHRzKSAtIDE7CisJCXVu c2lnbmVkIGludCBtYXBwaW5nOworCQlpbnQgcmM7CisKKwkJbWFwcGluZyA9IGlycV9maW5kX21h cHBpbmcoZHB1X21kc3MtPmlycV9jb250cm9sbGVyLmRvbWFpbiwKKwkJCQkJICAgaHdpcnEpOwor CQlpZiAobWFwcGluZyA9PSAwKSB7CisJCQlEUFVfRVZUMzIoaHdpcnEsIERQVV9FVlRMT0dfRVJS T1IpOworCQkJcmV0dXJuIElSUV9OT05FOworCQl9CisKKwkJcmMgPSBnZW5lcmljX2hhbmRsZV9p cnEobWFwcGluZyk7CisJCWlmIChyYyA8IDApIHsKKwkJCURQVV9FVlQzMihod2lycSwgbWFwcGlu ZywgcmMsIERQVV9FVlRMT0dfRVJST1IpOworCQkJcmV0dXJuIElSUV9OT05FOworCQl9CisKKwkJ aW50ZXJydXB0cyAmPSB+KDEgPDwgaHdpcnEpOworCX0KKworCXJldHVybiBJUlFfSEFORExFRDsK K30KKworc3RhdGljIHZvaWQgZHB1X21kc3NfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICppcnFk KQoreworCXN0cnVjdCBkcHVfbWRzcyAqZHB1X21kc3MgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBf ZGF0YShpcnFkKTsKKworCS8qIG1lbW9yeSBiYXJyaWVyICovCisJc21wX21iX19iZWZvcmVfYXRv bWljKCk7CisJY2xlYXJfYml0KGlycWQtPmh3aXJxLCAmZHB1X21kc3MtPmlycV9jb250cm9sbGVy LmVuYWJsZWRfbWFzayk7CisJLyogbWVtb3J5IGJhcnJpZXIgKi8KKwlzbXBfbWJfX2FmdGVyX2F0 b21pYygpOworfQorCitzdGF0aWMgdm9pZCBkcHVfbWRzc19pcnFfdW5tYXNrKHN0cnVjdCBpcnFf ZGF0YSAqaXJxZCkKK3sKKwlzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzID0gaXJxX2RhdGFfZ2V0 X2lycV9jaGlwX2RhdGEoaXJxZCk7CisKKwkvKiBtZW1vcnkgYmFycmllciAqLworCXNtcF9tYl9f YmVmb3JlX2F0b21pYygpOworCXNldF9iaXQoaXJxZC0+aHdpcnEsICZkcHVfbWRzcy0+aXJxX2Nv bnRyb2xsZXIuZW5hYmxlZF9tYXNrKTsKKwkvKiBtZW1vcnkgYmFycmllciAqLworCXNtcF9tYl9f YWZ0ZXJfYXRvbWljKCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgZHB1X21kc3NfaXJx X2NoaXAgPSB7CisJLm5hbWUgPSAiZHB1X21kc3MiLAorCS5pcnFfbWFzayA9IGRwdV9tZHNzX2ly cV9tYXNrLAorCS5pcnFfdW5tYXNrID0gZHB1X21kc3NfaXJxX3VubWFzaywKK307CisKK3N0YXRp YyBpbnQgZHB1X21kc3NfaXJxZG9tYWluX21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLAor CQl1bnNpZ25lZCBpbnQgaXJxLCBpcnFfaHdfbnVtYmVyX3QgaHdpcnEpCit7CisJc3RydWN0IGRw dV9tZHNzICpkcHVfbWRzcyA9IGRvbWFpbi0+aG9zdF9kYXRhOworCWludCByZXQ7CisKKwlpcnFf c2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCAmZHB1X21kc3NfaXJxX2NoaXAsIGhhbmRsZV9sZXZl bF9pcnEpOworCXJldCA9IGlycV9zZXRfY2hpcF9kYXRhKGlycSwgZHB1X21kc3MpOworCisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBkcHVfbWRz c19pcnFkb21haW5fb3BzID0geworCS5tYXAgPSBkcHVfbWRzc19pcnFkb21haW5fbWFwLAorCS54 bGF0ZSA9IGlycV9kb21haW5feGxhdGVfb25lY2VsbCwKK307CisKK3N0YXRpYyBpbnQgX2RwdV9t ZHNzX2lycV9kb21haW5fYWRkKHN0cnVjdCBkcHVfbWRzcyAqZHB1X21kc3MpCit7CisJc3RydWN0 IGRldmljZSAqZGV2OworCXN0cnVjdCBpcnFfZG9tYWluICpkb21haW47CisKKwlkZXYgPSBkcHVf bWRzcy0+YmFzZS5kZXYtPmRldjsKKworCWRvbWFpbiA9IGlycV9kb21haW5fYWRkX2xpbmVhcihk ZXYtPm9mX25vZGUsIDMyLAorCQkJJmRwdV9tZHNzX2lycWRvbWFpbl9vcHMsIGRwdV9tZHNzKTsK KwlpZiAoIWRvbWFpbikgeworCQlEUFVfRVJST1IoImZhaWxlZCB0byBhZGQgaXJxX2RvbWFpblxu Iik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWRwdV9tZHNzLT5pcnFfY29udHJvbGxlci5l bmFibGVkX21hc2sgPSAwOworCWRwdV9tZHNzLT5pcnFfY29udHJvbGxlci5kb21haW4gPSBkb21h aW47CisKKwlyZXR1cm4gMDsKK30KKworaW50IF9kcHVfbWRzc19pcnFfZG9tYWluX2Zpbmkoc3Ry dWN0IGRwdV9tZHNzICpkcHVfbWRzcykKK3sKKwlpZiAoZHB1X21kc3MtPmlycV9jb250cm9sbGVy LmRvbWFpbikgeworCQlpcnFfZG9tYWluX3JlbW92ZShkcHVfbWRzcy0+aXJxX2NvbnRyb2xsZXIu ZG9tYWluKTsKKwkJZHB1X21kc3MtPmlycV9jb250cm9sbGVyLmRvbWFpbiA9IE5VTEw7CisJfQor CXJldHVybiAwOworfQorc3RhdGljIGludCBkcHVfbWRzc19lbmFibGUoc3RydWN0IG1zbV9tZHNz ICptZHNzKQoreworCXN0cnVjdCBkcHVfbWRzcyAqZHB1X21kc3MgPSB0b19kcHVfbWRzcyhtZHNz KTsKKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXAgPSAmZHB1X21kc3MtPm1wOworCWludCBy ZXQ7CisKKwlyZXQgPSBtc21fZHNzX2VuYWJsZV9jbGsobXAtPmNsa19jb25maWcsIG1wLT5udW1f Y2xrLCB0cnVlKTsKKwlpZiAocmV0KQorCQlEUFVfRVJST1IoImNsb2NrIGVuYWJsZSBmYWlsZWQs IHJldDolZFxuIiwgcmV0KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZHB1X21k c3NfZGlzYWJsZShzdHJ1Y3QgbXNtX21kc3MgKm1kc3MpCit7CisJc3RydWN0IGRwdV9tZHNzICpk cHVfbWRzcyA9IHRvX2RwdV9tZHNzKG1kc3MpOworCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICpt cCA9ICZkcHVfbWRzcy0+bXA7CisJaW50IHJldDsKKworCXJldCA9IG1zbV9kc3NfZW5hYmxlX2Ns ayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGssIGZhbHNlKTsKKwlpZiAocmV0KQorCQlEUFVf RVJST1IoImNsb2NrIGRpc2FibGUgZmFpbGVkLCByZXQ6JWRcbiIsIHJldCk7CisKKwlyZXR1cm4g cmV0OworfQorCitzdGF0aWMgdm9pZCBkcHVfbWRzc19kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2Rl dmljZShkZXYtPmRldik7CisJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7CisJc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcyA9IHRvX2RwdV9tZHNzKHByaXYt Pm1kc3MpOworCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcCA9ICZkcHVfbWRzcy0+bXA7CisK KwlfZHB1X21kc3NfaXJxX2RvbWFpbl9maW5pKGRwdV9tZHNzKTsKKworCW1zbV9kc3NfcHV0X2Ns ayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGspOworCWRldm1fa2ZyZWUoJnBkZXYtPmRldiwg bXAtPmNsa19jb25maWcpOworCisJaWYgKGRwdV9tZHNzLT5tbWlvKQorCQltc21faW91bm1hcChw ZGV2LCBkcHVfbWRzcy0+bW1pbyk7CisJZHB1X21kc3MtPm1taW8gPSBOVUxMOworCisJcG1fcnVu dGltZV9kaXNhYmxlKGRldi0+ZGV2KTsKKwlwcml2LT5tZHNzID0gTlVMTDsKK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBtc21fbWRzc19mdW5jcyBtZHNzX2Z1bmNzID0geworCS5lbmFibGUJPSBk cHVfbWRzc19lbmFibGUsCisJLmRpc2FibGUgPSBkcHVfbWRzc19kaXNhYmxlLAorCS5kZXN0cm95 ID0gZHB1X21kc3NfZGVzdHJveSwKK307CisKK2ludCBkcHVfbWRzc19pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRm b3JtX2RldmljZShkZXYtPmRldik7CisJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzczsKKwlzdHJ1Y3QgZHNz X21vZHVsZV9wb3dlciAqbXA7CisJaW50IHJldCA9IDA7CisKKwlkcHVfbWRzcyA9IGRldm1fa3ph bGxvYyhkZXYtPmRldiwgc2l6ZW9mKCpkcHVfbWRzcyksIEdGUF9LRVJORUwpOworCWlmICghZHB1 X21kc3MpCisJCXJldHVybiAtRU5PTUVNOworCisJZHB1X21kc3MtPm1taW8gPSBtc21faW9yZW1h cChwZGV2LCAibWRzc19waHlzIiwgIm1kc3NfcGh5cyIpOworCWlmIChJU19FUlIoZHB1X21kc3Mt Pm1taW8pKQorCQlyZXR1cm4gUFRSX0VSUihkcHVfbWRzcy0+bW1pbyk7CisKKwlEUk1fREVCVUco Im1hcHBlZCBtZHNzIGFkZHJlc3Mgc3BhY2UgQCVwS1xuIiwgZHB1X21kc3MtPm1taW8pOworCWRw dV9tZHNzLT5tbWlvX2xlbiA9IG1zbV9pb21hcF9zaXplKHBkZXYsICJtZHNzX3BoeXMiKTsKKwor CW1wID0gJmRwdV9tZHNzLT5tcDsKKwlyZXQgPSBtc21fZHNzX3BhcnNlX2Nsb2NrKHBkZXYsIG1w KTsKKwlpZiAocmV0KSB7CisJCURQVV9FUlJPUigiZmFpbGVkIHRvIHBhcnNlIGNsb2NrcywgcmV0 PSVkXG4iLCByZXQpOworCQlnb3RvIGNsa19wYXJzZV9lcnI7CisJfQorCisJcmV0ID0gbXNtX2Rz c19nZXRfY2xrKCZwZGV2LT5kZXYsIG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Nsayk7CisJaWYg KHJldCkgeworCQlEUFVfRVJST1IoImZhaWxlZCB0byBnZXQgY2xvY2tzLCByZXQ9JWRcbiIsIHJl dCk7CisJCWdvdG8gY2xrX2dldF9lcnJvcjsKKwl9CisKKwlyZXQgPSBtc21fZHNzX2Nsa19zZXRf cmF0ZShtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGspOworCWlmIChyZXQpIHsKKwkJRFBVX0VS Uk9SKCJmYWlsZWQgdG8gc2V0IGNsb2NrIHJhdGUsIHJldD0lZFxuIiwgcmV0KTsKKwkJZ290byBj bGtfcmF0ZV9lcnJvcjsKKwl9CisKKwlkcHVfbWRzcy0+YmFzZS5kZXYgPSBkZXY7CisJZHB1X21k c3MtPmJhc2UuZnVuY3MgPSAmbWRzc19mdW5jczsKKworCXJldCA9IF9kcHVfbWRzc19pcnFfZG9t YWluX2FkZChkcHVfbWRzcyk7CisJaWYgKHJldCkKKwkJZ290byBpcnFfZG9tYWluX2Vycm9yOwor CisJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycShkZXYtPmRldiwgcGxhdGZvcm1fZ2V0X2lycShwZGV2 LCAwKSwKKwkJCWRwdV9tZHNzX2lycSwgMCwgImRwdV9tZHNzX2lzciIsIGRwdV9tZHNzKTsKKwlp ZiAocmV0KSB7CisJCURQVV9FUlJPUigiZmFpbGVkIHRvIGluaXQgaXJxOiAlZFxuIiwgcmV0KTsK KwkJZ290byBpcnFfZXJyb3I7CisJfQorCisJcG1fcnVudGltZV9lbmFibGUoZGV2LT5kZXYpOwor CisJcG1fcnVudGltZV9nZXRfc3luYyhkZXYtPmRldik7CisJZHB1X21kc3MtPmh3dmVyc2lvbiA9 IHJlYWRsX3JlbGF4ZWQoZHB1X21kc3MtPm1taW8pOworCXBtX3J1bnRpbWVfcHV0X3N5bmMoZGV2 LT5kZXYpOworCisJcHJpdi0+bWRzcyA9ICZkcHVfbWRzcy0+YmFzZTsKKworCXJldHVybiByZXQ7 CisKK2lycV9lcnJvcjoKKwlfZHB1X21kc3NfaXJxX2RvbWFpbl9maW5pKGRwdV9tZHNzKTsKK2ly cV9kb21haW5fZXJyb3I6CitjbGtfcmF0ZV9lcnJvcjoKKwltc21fZHNzX3B1dF9jbGsobXAtPmNs a19jb25maWcsIG1wLT5udW1fY2xrKTsKK2Nsa19nZXRfZXJyb3I6CisJZGV2bV9rZnJlZSgmcGRl di0+ZGV2LCBtcC0+Y2xrX2NvbmZpZyk7CitjbGtfcGFyc2VfZXJyOgorCWlmIChkcHVfbWRzcy0+ bW1pbykKKwkJbXNtX2lvdW5tYXAocGRldiwgZHB1X21kc3MtPm1taW8pOworCWRwdV9tZHNzLT5t bWlvID0gTlVMTDsKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9kcHVfaW9fdXRpbC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfaW9fdXRpbC5jCmlu ZGV4IGExOGJjOTkuLmVjYzI5N2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1 X2lvX3V0aWwuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9pb191dGlsLmMKQEAgLTQ0 OCw2ICs0NDgsNTUgQEAgaW50IG1zbV9kc3NfZW5hYmxlX2NsayhzdHJ1Y3QgZHNzX2NsayAqY2xr X2FycnksIGludCBudW1fY2xrLCBpbnQgZW5hYmxlKQogfSAvKiBtc21fZHNzX2VuYWJsZV9jbGsg Ki8KIEVYUE9SVF9TWU1CT0wobXNtX2Rzc19lbmFibGVfY2xrKTsKIAoraW50IG1zbV9kc3NfcGFy c2VfY2xvY2soc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKKwkJc3RydWN0IGRzc19tb2R1 bGVfcG93ZXIgKm1wKQoreworCXUzMiBpLCByYyA9IDA7CisJY29uc3QgY2hhciAqY2xvY2tfbmFt ZTsKKwl1MzIgcmF0ZSA9IDA7CisJaW50IG51bV9jbGsgPSAwOworCisJaWYgKCFwZGV2IHx8ICFt cCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltcC0+bnVtX2NsayA9IDA7CisJbnVtX2NsayA9IG9m X3Byb3BlcnR5X2NvdW50X3N0cmluZ3MocGRldi0+ZGV2Lm9mX25vZGUsICJjbG9jay1uYW1lcyIp OworCWlmIChudW1fY2xrIDw9IDApIHsKKwkJcHJfZGVidWcoImNsb2NrcyBhcmUgbm90IGRlZmlu ZWRcbiIpOworCQlyZXR1cm4gMDsKKwl9CisKKwltcC0+Y2xrX2NvbmZpZyA9IGRldm1fa3phbGxv YygmcGRldi0+ZGV2LAorCQkJCSAgICAgIHNpemVvZihzdHJ1Y3QgZHNzX2NsaykgKiBudW1fY2xr LAorCQkJCSAgICAgIEdGUF9LRVJORUwpOworCWlmICghbXAtPmNsa19jb25maWcpCisJCXJldHVy biAtRU5PTUVNOworCisJZm9yIChpID0gMDsgaSA8IG51bV9jbGs7IGkrKykgeworCQlyYyA9IG9m X3Byb3BlcnR5X3JlYWRfc3RyaW5nX2luZGV4KHBkZXYtPmRldi5vZl9ub2RlLAorCQkJCQkJICAg ImNsb2NrLW5hbWVzIiwgaSwKKwkJCQkJCSAgICZjbG9ja19uYW1lKTsKKwkJaWYgKHJjKQorCQkJ YnJlYWs7CisJCXN0cmxjcHkobXAtPmNsa19jb25maWdbaV0uY2xrX25hbWUsIGNsb2NrX25hbWUs CisJCQlzaXplb2YobXAtPmNsa19jb25maWdbaV0uY2xrX25hbWUpKTsKKworCQltcC0+Y2xrX2Nv bmZpZ1tpXS50eXBlID0gRFNTX0NMS19BSEI7CisJCXJjID0gb2ZfcHJvcGVydHlfcmVhZF91MzJf aW5kZXgocGRldi0+ZGV2Lm9mX25vZGUsCisJCQkJCQkiY2xvY2stZnJlcXVlbmN5IiwgaSwKKwkJ CQkJCSZyYXRlKTsKKwkJaWYgKHJjKQorCQkJY29udGludWU7CisJCW1wLT5jbGtfY29uZmlnW2ld LnJhdGUgPSByYXRlOworCQlpZiAocmF0ZSkKKwkJCW1wLT5jbGtfY29uZmlnW2ldLnR5cGUgPSBE U1NfQ0xLX1BDTEs7CisJfQorCisJaWYgKCFyYykKKwkJbXAtPm51bV9jbGsgPSBudW1fY2xrOwor CisJcmV0dXJuIHJjOworfQogCiBpbnQgZHB1X2kyY19ieXRlX3JlYWQoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCwgdWludDhfdCBzbGF2ZV9hZGRyLAogCQkJdWludDhfdCByZWdfb2Zmc2V0LCB1 aW50OF90ICpyZWFkX2J1ZikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Ry di5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKaW5kZXggNWQ4ZjFiNi4uYTBlNzNl YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKQEAgLTUwMyw3ICs1MDMsMTggQEAgc3RhdGljIGludCBt c21fZHJtX2luaXQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2RyaXZlciAqZHJ2KQog CWRkZXYtPmRldl9wcml2YXRlID0gcHJpdjsKIAlwcml2LT5kZXYgPSBkZGV2OwogCi0JcmV0ID0g bWRwNV9tZHNzX2luaXQoZGRldik7CisJc3dpdGNoIChnZXRfbWRwX3ZlcihwZGV2KSkgeworCWNh c2UgS01TX01EUDU6CisJCXJldCA9IG1kcDVfbWRzc19pbml0KGRkZXYpOworCQlicmVhazsKKwlj YXNlIEtNU19EUFU6CisJCXJldCA9IGRwdV9tZHNzX2luaXQoZGRldik7CisJCWJyZWFrOworCWRl ZmF1bHQ6CisJCXJldCA9IDA7CisJCWJyZWFrOworCX0KKwogCWlmIChyZXQpCiAJCWdvdG8gbWRz c19pbml0X2ZhaWw7CiAKQEAgLTE1MzksMTIgKzE1NTAsMTMgQEAgc3RhdGljIGludCBhZGRfZGlz cGxheV9jb21wb25lbnRzKHN0cnVjdCBkZXZpY2UgKmRldiwKIAlpbnQgcmV0OwogCiAJLyoKLQkg KiBNRFA1IGJhc2VkIGRldmljZXMgZG9uJ3QgaGF2ZSBhIGZsYXQgaGllcmFyY2h5LiBUaGVyZSBp cyBhIHRvcCBsZXZlbAotCSAqIHBhcmVudDogTURTUywgYW5kIGNoaWxkcmVuOiBNRFA1LCBEU0ks IEhETUksIGVEUCBldGMuIFBvcHVsYXRlIHRoZQotCSAqIGNoaWxkcmVuIGRldmljZXMsIGZpbmQg dGhlIE1EUDUgbm9kZSwgYW5kIHRoZW4gYWRkIHRoZSBpbnRlcmZhY2VzCi0JICogdG8gb3VyIGNv bXBvbmVudHMgbGlzdC4KKwkgKiBNRFA1L0RQVSBiYXNlZCBkZXZpY2VzIGRvbid0IGhhdmUgYSBm bGF0IGhpZXJhcmNoeS4gVGhlcmUgaXMgYSB0b3AKKwkgKiBsZXZlbCBwYXJlbnQ6IE1EU1MsIGFu ZCBjaGlsZHJlbjogTURQNS9EUFUsIERTSSwgSERNSSwgZURQIGV0Yy4KKwkgKiBQb3B1bGF0ZSB0 aGUgY2hpbGRyZW4gZGV2aWNlcywgZmluZCB0aGUgTURQNS9EUFUgbm9kZSwgYW5kIHRoZW4gYWRk CisJICogdGhlIGludGVyZmFjZXMgdG8gb3VyIGNvbXBvbmVudHMgbGlzdC4KIAkgKi8KLQlpZiAo b2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LT5vZl9ub2RlLCAicWNvbSxtZHNzIikpIHsKKwlp ZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LT5vZl9ub2RlLCAicWNvbSxtZHNzIikgfHwK KwkJb2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LT5vZl9ub2RlLCAicWNvbSxkcHUtbWRzcyIp KSB7CiAJCXJldCA9IG9mX3BsYXRmb3JtX3BvcHVsYXRlKGRldi0+b2Zfbm9kZSwgTlVMTCwgTlVM TCwgZGV2KTsKIAkJaWYgKHJldCkgewogCQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcG9wdWxh dGUgY2hpbGRyZW4gZGV2aWNlc1xuIik7CkBAIC0xNjg2LDcgKzE2OTgsNyBAQCBzdGF0aWMgaW50 IG1zbV9wZGV2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXsgLmNvbXBh dGlibGUgPSAicWNvbSxtZHA0IiwgLmRhdGEgPSAodm9pZCAqKUtNU19NRFA0IH0sCiAJeyAuY29t cGF0aWJsZSA9ICJxY29tLG1kc3MiLCAuZGF0YSA9ICh2b2lkICopS01TX01EUDUgfSwKICNpZmRl ZiBDT05GSUdfRFJNX01TTV9EUFUKLQl7IC5jb21wYXRpYmxlID0gInFjb20sZHB1LWttcyIsIC5k YXRhID0gKHZvaWQgKilLTVNfRFBVIH0sCisJeyAuY29tcGF0aWJsZSA9ICJxY29tLGRwdS1tZHNz IiwgLmRhdGEgPSAodm9pZCAqKUtNU19EUFUgfSwKICNlbmRpZgogCXt9CiB9OwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9kcnYuaAppbmRleCA5MGEyNTIxLi5lOGU1ZTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaApAQCAt MzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBtc21fZHJtX3ByaXZhdGUgewogCS8qIHN1Ym9yZGluYXRl IGRldmljZXMsIGlmIHByZXNlbnQ6ICovCiAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZ3B1X3Bk ZXY7CiAKLQkvKiB0b3AgbGV2ZWwgTURTUyB3cmFwcGVyIGRldmljZSAoZm9yIE1EUDUgb25seSkg Ki8KKwkvKiB0b3AgbGV2ZWwgTURTUyB3cmFwcGVyIGRldmljZSAoZm9yIE1EUDUvRFBVIG9ubHkp ICovCiAJc3RydWN0IG1zbV9tZHNzICptZHNzOwogCiAJLyogcG9zc2libHkgdGhpcyBzaG91bGQg YmUgaW4gdGhlIGttcyBjb21wb25lbnQsIGJ1dCBpdCBpcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21zbS9tc21fa21zLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9rbXMuaAppbmRl eCA5YTdiYzdkLi41ZTFkZTg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9r bXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9rbXMuaApAQCAtMTQ0LDYgKzE0NCw3 IEBAIHN0cnVjdCBtc21fbWRzcyB7CiB9OwogCiBpbnQgbWRwNV9tZHNzX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7CitpbnQgZHB1X21kc3NfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKIAogLyoqCiAgKiBNb2RlIFNldCBVdGlsaXR5IEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9kcHVfaW9fdXRpbC5oIGIvaW5jbHVkZS9saW51eC9kcHVfaW9fdXRpbC5oCmlu ZGV4IDdjNzM4OTkuLjQ1ZTYwNmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZHB1X2lvX3V0 aWwuaAorKysgYi9pbmNsdWRlL2xpbnV4L2RwdV9pb191dGlsLmgKQEAgLTEwNCw2ICsxMDQsOCBA QCBpbnQgbXNtX2Rzc19jb25maWdfdnJlZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkc3Nf dnJlZyAqaW5fdnJlZywKIHZvaWQgbXNtX2Rzc19wdXRfY2xrKHN0cnVjdCBkc3NfY2xrICpjbGtf YXJyeSwgaW50IG51bV9jbGspOwogaW50IG1zbV9kc3NfY2xrX3NldF9yYXRlKHN0cnVjdCBkc3Nf Y2xrICpjbGtfYXJyeSwgaW50IG51bV9jbGspOwogaW50IG1zbV9kc3NfZW5hYmxlX2NsayhzdHJ1 Y3QgZHNzX2NsayAqY2xrX2FycnksIGludCBudW1fY2xrLCBpbnQgZW5hYmxlKTsKK2ludCBtc21f ZHNzX3BhcnNlX2Nsb2NrKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCisJCXN0cnVjdCBk c3NfbW9kdWxlX3Bvd2VyICptcCk7CiAKIGludCBkcHVfaTJjX2J5dGVfcmVhZChzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50LCB1aW50OF90IHNsYXZlX2FkZHIsCiAJCSAgICAgICB1aW50OF90IHJl Z19vZmZzZXQsIHVpbnQ4X3QgKnJlYWRfYnVmKTsKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9u IENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGlu dXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRy ZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=