From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sravanthi Kollukuduru Subject: [DPU PATCH v2 02/14] drm/msm/dpu: remove resource pool manager Date: Mon, 18 Jun 2018 19:02:40 +0530 Message-ID: <1529328772-5022-3-git-send-email-skolluku@codeaurora.org> References: <1529328772-5022-1-git-send-email-skolluku@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1529328772-5022-1-git-send-email-skolluku-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, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Sravanthi Kollukuduru , Jeykumar Sankaran , seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org RnJvbTogSmV5a3VtYXIgU2Fua2FyYW4gPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KCnJlc291cmNl IHBvb2wgbWFuYWdlciB1dGlsaXR5IHdhcyBpbnRyb2R1Y2VkIHRvIG1hbmFnZQpyb3RhdG9yIHNl c3Npb25zLiBSZW1vdmluZyB0aGUgc3VwcG9ydCBhcyB0aGUgcm90YXRvcgpmZWF0dXJlIGRvZXNu J3QgZXhpc3QuCgpjaGFuZ2VzIGluIHYyOgogICAgIC0gbm9uZQoKU2lnbmVkLW9mZi1ieTogSmV5 a3VtYXIgU2Fua2FyYW4gPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KU2lnbmVkLW9mZi1ieTogU3Jh dmFudGhpIEtvbGx1a3VkdXJ1IDxza29sbHVrdUBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jIHwgNDk0IC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmgg fCAgODYgLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDU4MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jIGIvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwppbmRleCA5Y2E4MzI1Li40MjZlMmFkIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKQEAgLTk4LDQ3NiArOTgs NiBAQCBzdGF0aWMgaW5saW5lIGludCBfZHB1X2NydGNfcG93ZXJfZW5hYmxlKHN0cnVjdCBkcHVf Y3J0YyAqZHB1X2NydGMsIGJvb2wgZW5hYmxlKQogCXJldHVybiAwOwogfQogCi0vKioKLSAqIF9k cHVfY3J0Y19ycF90b19jcnRjIC0gZ2V0IGNydGMgZnJvbSByZXNvdXJjZSBwb29sIG9iamVjdAot ICogQHJwOiBQb2ludGVyIHRvIHJlc291cmNlIHBvb2wKLSAqIHJldHVybjogUG9pbnRlciB0byBk cm0gY3J0YyBpZiBzdWNjZXNzOyBudWxsIG90aGVyd2lzZQotICovCi1zdGF0aWMgc3RydWN0IGRy bV9jcnRjICpfZHB1X2NydGNfcnBfdG9fY3J0YyhzdHJ1Y3QgZHB1X2NydGNfcmVzcG9vbCAqcnAp Ci17Ci0JaWYgKCFycCkKLQkJcmV0dXJuIE5VTEw7Ci0KLQlyZXR1cm4gY29udGFpbmVyX29mKHJw LCBzdHJ1Y3QgZHB1X2NydGNfc3RhdGUsIHJwKS0+YmFzZS5jcnRjOwotfQotCi0vKioKLSAqIF9k cHVfY3J0Y19ycF9yZWNsYWltIC0gcmVjbGFpbSB1bnVzZWQsIG9yIGFsbCBpZiBmb3JjZWQsIHJl c291cmNlcyBpbiBwb29sCi0gKiBAcnA6IFBvaW50ZXIgdG8gcmVzb3VyY2UgcG9vbAotICogQGZv cmNlOiBUcnVlIHRvIHJlY2xhaW0gYWxsIHJlc291cmNlczsgb3RoZXJ3aXNlLCByZWNsYWltIG9u bHkgdW51c2VkIG9uZXMKLSAqIHJldHVybjogTm9uZQotICovCi1zdGF0aWMgdm9pZCBfZHB1X2Ny dGNfcnBfcmVjbGFpbShzdHJ1Y3QgZHB1X2NydGNfcmVzcG9vbCAqcnAsIGJvb2wgZm9yY2UpCi17 Ci0Jc3RydWN0IGRwdV9jcnRjX3JlcyAqcmVzLCAqbmV4dDsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNy dGM7Ci0KLQljcnRjID0gX2RwdV9jcnRjX3JwX3RvX2NydGMocnApOwotCWlmICghY3J0Yykgewot CQlEUFVfRVJST1IoImludmFsaWQgY3J0Y1xuIik7Ci0JCXJldHVybjsKLQl9Ci0KLQlEUFVfREVC VUcoImNydGMlZC4ldSAlc1xuIiwgY3J0Yy0+YmFzZS5pZCwgcnAtPnNlcXVlbmNlX2lkLAotCQkJ Zm9yY2UgPyAiZGVzdHJveSIgOiAiZnJlZV91bnVzZWQiKTsKLQotCWxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZShyZXMsIG5leHQsICZycC0+cmVzX2xpc3QsIGxpc3QpIHsKLQkJaWYgKCFmb3JjZSAm JiAhKHJlcy0+ZmxhZ3MgJiBEUFVfQ1JUQ19SRVNfRkxBR19GUkVFKSkKLQkJCWNvbnRpbnVlOwot CQlEUFVfREVCVUcoImNydGMlZC4ldSByZWNsYWltIHJlczoweCV4LzB4JWxseC8lcEsvJWRcbiIs Ci0JCQkJY3J0Yy0+YmFzZS5pZCwgcnAtPnNlcXVlbmNlX2lkLAotCQkJCXJlcy0+dHlwZSwgcmVz LT50YWcsIHJlcy0+dmFsLAotCQkJCWF0b21pY19yZWFkKCZyZXMtPnJlZmNvdW50KSk7Ci0JCWxp c3RfZGVsKCZyZXMtPmxpc3QpOwotCQlpZiAocmVzLT5vcHMucHV0KQotCQkJcmVzLT5vcHMucHV0 KHJlcy0+dmFsKTsKLQkJa2ZyZWUocmVzKTsKLQl9Ci19Ci0KLS8qKgotICogX2RwdV9jcnRjX3Jw X2ZyZWVfdW51c2VkIC0gZnJlZSB1bnVzZWQgcmVzb3VyY2UgaW4gcG9vbAotICogQHJwOiBQb2lu dGVyIHRvIHJlc291cmNlIHBvb2wKLSAqIHJldHVybjogbm9uZQotICovCi1zdGF0aWMgdm9pZCBf ZHB1X2NydGNfcnBfZnJlZV91bnVzZWQoc3RydWN0IGRwdV9jcnRjX3Jlc3Bvb2wgKnJwKQotewot CW11dGV4X2xvY2socnAtPnJwX2xvY2spOwotCV9kcHVfY3J0Y19ycF9yZWNsYWltKHJwLCBmYWxz ZSk7Ci0JbXV0ZXhfdW5sb2NrKHJwLT5ycF9sb2NrKTsKLX0KLQotLyoqCi0gKiBfZHB1X2NydGNf cnBfZGVzdHJveSAtIGRlc3Ryb3kgcmVzb3VyY2UgcG9vbAotICogQHJwOiBQb2ludGVyIHRvIHJl c291cmNlIHBvb2wKLSAqIHJldHVybjogTm9uZQotICovCi1zdGF0aWMgdm9pZCBfZHB1X2NydGNf cnBfZGVzdHJveShzdHJ1Y3QgZHB1X2NydGNfcmVzcG9vbCAqcnApCi17Ci0JbXV0ZXhfbG9jayhy cC0+cnBfbG9jayk7Ci0JbGlzdF9kZWxfaW5pdCgmcnAtPnJwX2xpc3QpOwotCV9kcHVfY3J0Y19y cF9yZWNsYWltKHJwLCB0cnVlKTsKLQltdXRleF91bmxvY2socnAtPnJwX2xvY2spOwotfQotCi0v KioKLSAqIF9kcHVfY3J0Y19od19ibGtfZ2V0IC0gZ2V0IGNhbGxiYWNrIGZvciBoYXJkd2FyZSBi bG9jawotICogQHZhbDogUmVzb3VyY2UgaGFuZGxlCi0gKiBAdHlwZTogUmVzb3VyY2UgdHlwZQot ICogQHRhZzogU2VhcmNoIHRhZyBmb3IgZ2l2ZW4gcmVzb3VyY2UKLSAqIHJldHVybjogUmVzb3Vy Y2UgaGFuZGxlCi0gKi8KLXN0YXRpYyB2b2lkICpfZHB1X2NydGNfaHdfYmxrX2dldCh2b2lkICp2 YWwsIHUzMiB0eXBlLCB1NjQgdGFnKQotewotCURQVV9ERUJVRygicmVzOiVkLzB4JWxseC8lcEtc biIsIHR5cGUsIHRhZywgdmFsKTsKLQlyZXR1cm4gZHB1X2h3X2Jsa19nZXQodmFsLCB0eXBlLCB0 YWcpOwotfQotCi0vKioKLSAqIF9kcHVfY3J0Y19od19ibGtfcHV0IC0gcHV0IGNhbGxiYWNrIGZv ciBoYXJkd2FyZSBibG9jawotICogQHZhbDogUmVzb3VyY2UgaGFuZGxlCi0gKiByZXR1cm46IE5v bmUKLSAqLwotc3RhdGljIHZvaWQgX2RwdV9jcnRjX2h3X2Jsa19wdXQodm9pZCAqdmFsKQotewot CURQVV9ERUJVRygicmVzOi8vJXBLXG4iLCB2YWwpOwotCWRwdV9od19ibGtfcHV0KHZhbCk7Ci19 Ci0KLS8qKgotICogX2RwdV9jcnRjX3JwX2R1cGxpY2F0ZSAtIGR1cGxpY2F0ZSByZXNvdXJjZSBw b29sIGFuZCByZXNldCByZWZlcmVuY2UgY291bnQKLSAqIEBycDogUG9pbnRlciB0byBvcmlnaW5h bCByZXNvdXJjZSBwb29sCi0gKiBAZHVwX3JwOiBQb2ludGVyIHRvIGR1cGxpY2F0ZWQgcmVzb3Vy Y2UgcG9vbAotICogcmV0dXJuOiBOb25lCi0gKi8KLXN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ycF9k dXBsaWNhdGUoc3RydWN0IGRwdV9jcnRjX3Jlc3Bvb2wgKnJwLAotCQlzdHJ1Y3QgZHB1X2NydGNf cmVzcG9vbCAqZHVwX3JwKQotewotCXN0cnVjdCBkcHVfY3J0Y19yZXMgKnJlcywgKmR1cF9yZXM7 Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwotCi0JaWYgKCFycCB8fCAhZHVwX3JwIHx8ICFycC0+ cnBfaGVhZCkgewotCQlEUFVfRVJST1IoImludmFsaWQgcmVzb3VyY2UgcG9vbFxuIik7Ci0JCXJl dHVybjsKLQl9Ci0KLQljcnRjID0gX2RwdV9jcnRjX3JwX3RvX2NydGMocnApOwotCWlmICghY3J0 YykgewotCQlEUFVfRVJST1IoImludmFsaWQgY3J0Y1xuIik7Ci0JCXJldHVybjsKLQl9Ci0KLQlE UFVfREVCVUcoImNydGMlZC4ldSBkdXBsaWNhdGVcbiIsIGNydGMtPmJhc2UuaWQsIHJwLT5zZXF1 ZW5jZV9pZCk7Ci0KLQltdXRleF9sb2NrKHJwLT5ycF9sb2NrKTsKLQlkdXBfcnAtPnNlcXVlbmNl X2lkID0gcnAtPnNlcXVlbmNlX2lkICsgMTsKLQlJTklUX0xJU1RfSEVBRCgmZHVwX3JwLT5yZXNf bGlzdCk7Ci0JZHVwX3JwLT5vcHMgPSBycC0+b3BzOwotCWxpc3RfZm9yX2VhY2hfZW50cnkocmVz LCAmcnAtPnJlc19saXN0LCBsaXN0KSB7Ci0JCWR1cF9yZXMgPSBremFsbG9jKHNpemVvZihzdHJ1 Y3QgZHB1X2NydGNfcmVzKSwgR0ZQX0tFUk5FTCk7Ci0JCWlmICghZHVwX3JlcykgewotCQkJbXV0 ZXhfdW5sb2NrKHJwLT5ycF9sb2NrKTsKLQkJCXJldHVybjsKLQkJfQotCQlJTklUX0xJU1RfSEVB RCgmZHVwX3Jlcy0+bGlzdCk7Ci0JCWF0b21pY19zZXQoJmR1cF9yZXMtPnJlZmNvdW50LCAwKTsK LQkJZHVwX3Jlcy0+dHlwZSA9IHJlcy0+dHlwZTsKLQkJZHVwX3Jlcy0+dGFnID0gcmVzLT50YWc7 Ci0JCWR1cF9yZXMtPnZhbCA9IHJlcy0+dmFsOwotCQlkdXBfcmVzLT5vcHMgPSByZXMtPm9wczsK LQkJZHVwX3Jlcy0+ZmxhZ3MgPSBEUFVfQ1JUQ19SRVNfRkxBR19GUkVFOwotCQlEUFVfREVCVUco ImNydGMlZC4ldSBkdXAgcmVzOjB4JXgvMHglbGx4LyVwSy8lZFxuIiwKLQkJCQljcnRjLT5iYXNl LmlkLCBkdXBfcnAtPnNlcXVlbmNlX2lkLAotCQkJCWR1cF9yZXMtPnR5cGUsIGR1cF9yZXMtPnRh ZywgZHVwX3Jlcy0+dmFsLAotCQkJCWF0b21pY19yZWFkKCZkdXBfcmVzLT5yZWZjb3VudCkpOwot CQlsaXN0X2FkZF90YWlsKCZkdXBfcmVzLT5saXN0LCAmZHVwX3JwLT5yZXNfbGlzdCk7Ci0JCWlm IChkdXBfcmVzLT5vcHMuZ2V0KQotCQkJZHVwX3Jlcy0+b3BzLmdldChkdXBfcmVzLT52YWwsIDAs IC0xKTsKLQl9Ci0KLQlkdXBfcnAtPnJwX2xvY2sgPSBycC0+cnBfbG9jazsKLQlkdXBfcnAtPnJw X2hlYWQgPSBycC0+cnBfaGVhZDsKLQlJTklUX0xJU1RfSEVBRCgmZHVwX3JwLT5ycF9saXN0KTsK LQlsaXN0X2FkZF90YWlsKCZkdXBfcnAtPnJwX2xpc3QsIHJwLT5ycF9oZWFkKTsKLQltdXRleF91 bmxvY2socnAtPnJwX2xvY2spOwotfQotCi0vKioKLSAqIF9kcHVfY3J0Y19ycF9yZXNldCAtIHJl c2V0IHJlc291cmNlIHBvb2wgYWZ0ZXIgYWxsb2NhdGlvbgotICogQHJwOiBQb2ludGVyIHRvIG9y aWdpbmFsIHJlc291cmNlIHBvb2wKLSAqIEBycF9sb2NrOiBQb2ludGVyIHRvIHNlcmlhbGl6YXRp b24gcmVzb3VyY2UgcG9vbCBsb2NrCi0gKiBAcnBfaGVhZDogUG9pbnRlciB0byBjcnRjIHJlc291 cmNlIHBvb2wgaGVhZAotICogcmV0dXJuOiBOb25lCi0gKi8KLXN0YXRpYyB2b2lkIF9kcHVfY3J0 Y19ycF9yZXNldChzdHJ1Y3QgZHB1X2NydGNfcmVzcG9vbCAqcnAsCi0JCXN0cnVjdCBtdXRleCAq cnBfbG9jaywgc3RydWN0IGxpc3RfaGVhZCAqcnBfaGVhZCkKLXsKLQlpZiAoIXJwIHx8ICFycF9s b2NrIHx8ICFycF9oZWFkKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCByZXNvdXJjZSBwb29sXG4i KTsKLQkJcmV0dXJuOwotCX0KLQotCW11dGV4X2xvY2socnBfbG9jayk7Ci0JcnAtPnJwX2xvY2sg PSBycF9sb2NrOwotCXJwLT5ycF9oZWFkID0gcnBfaGVhZDsKLQlJTklUX0xJU1RfSEVBRCgmcnAt PnJwX2xpc3QpOwotCXJwLT5zZXF1ZW5jZV9pZCA9IDA7Ci0JSU5JVF9MSVNUX0hFQUQoJnJwLT5y ZXNfbGlzdCk7Ci0JcnAtPm9wcy5nZXQgPSBfZHB1X2NydGNfaHdfYmxrX2dldDsKLQlycC0+b3Bz LnB1dCA9IF9kcHVfY3J0Y19od19ibGtfcHV0OwotCWxpc3RfYWRkX3RhaWwoJnJwLT5ycF9saXN0 LCBycC0+cnBfaGVhZCk7Ci0JbXV0ZXhfdW5sb2NrKHJwX2xvY2spOwotfQotCi0vKioKLSAqIF9k cHVfY3J0Y19ycF9hZGRfbm9fbG9jayAtIGFkZCBnaXZlbiByZXNvdXJjZSB0byByZXNvdXJjZSBw b29sIHdpdGhvdXQgbG9jawotICogQHJwOiBQb2ludGVyIHRvIG9yaWdpbmFsIHJlc291cmNlIHBv b2wKLSAqIEB0eXBlOiBSZXNvdXJjZSB0eXBlCi0gKiBAdGFnOiBTZWFyY2ggdGFnIGZvciBnaXZl biByZXNvdXJjZQotICogQHZhbDogUmVzb3VyY2UgaGFuZGxlCi0gKiBAb3BzOiBSZXNvdXJjZSBj YWxsYmFjayBvcGVyYXRpb25zCi0gKiByZXR1cm46IDAgaWYgc3VjY2VzczsgZXJyb3IgY29kZSBv dGhlcndpc2UKLSAqLwotc3RhdGljIGludCBfZHB1X2NydGNfcnBfYWRkX25vX2xvY2soc3RydWN0 IGRwdV9jcnRjX3Jlc3Bvb2wgKnJwLCB1MzIgdHlwZSwKLQkJdTY0IHRhZywgdm9pZCAqdmFsLCBz dHJ1Y3QgZHB1X2NydGNfcmVzX29wcyAqb3BzKQotewotCXN0cnVjdCBkcHVfY3J0Y19yZXMgKnJl czsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0KLQlpZiAoIXJwIHx8ICFvcHMpIHsKLQkJRFBV X0VSUk9SKCJpbnZhbGlkIHJlc291cmNlIHBvb2wvb3BzXG4iKTsKLQkJcmV0dXJuIC1FSU5WQUw7 Ci0JfQotCi0JY3J0YyA9IF9kcHVfY3J0Y19ycF90b19jcnRjKHJwKTsKLQlpZiAoIWNydGMpIHsK LQkJRFBVX0VSUk9SKCJpbnZhbGlkIGNydGNcbiIpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0K LQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcywgJnJwLT5yZXNfbGlzdCwgbGlzdCkgewotCQlpZiAo cmVzLT50eXBlICE9IHR5cGUgfHwgcmVzLT50YWcgIT0gdGFnKQotCQkJY29udGludWU7Ci0JCURQ VV9FUlJPUigiY3J0YyVkLiV1IGFscmVhZHkgZXhpc3QgcmVzOjB4JXgvMHglbGx4LyVwSy8lZFxu IiwKLQkJCQljcnRjLT5iYXNlLmlkLCBycC0+c2VxdWVuY2VfaWQsCi0JCQkJcmVzLT50eXBlLCBy ZXMtPnRhZywgcmVzLT52YWwsCi0JCQkJYXRvbWljX3JlYWQoJnJlcy0+cmVmY291bnQpKTsKLQkJ cmV0dXJuIC1FRVhJU1Q7Ci0JfQotCXJlcyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkcHVfY3J0 Y19yZXMpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXJlcykKLQkJcmV0dXJuIC1FTk9NRU07Ci0JSU5J VF9MSVNUX0hFQUQoJnJlcy0+bGlzdCk7Ci0JYXRvbWljX3NldCgmcmVzLT5yZWZjb3VudCwgMSk7 Ci0JcmVzLT50eXBlID0gdHlwZTsKLQlyZXMtPnRhZyA9IHRhZzsKLQlyZXMtPnZhbCA9IHZhbDsK LQlyZXMtPm9wcyA9ICpvcHM7Ci0JbGlzdF9hZGRfdGFpbCgmcmVzLT5saXN0LCAmcnAtPnJlc19s aXN0KTsKLQlEUFVfREVCVUcoImNydGMlZC4ldSBhZGRlZCByZXM6MHgleC8weCVsbHhcbiIsCi0J CQljcnRjLT5iYXNlLmlkLCBycC0+c2VxdWVuY2VfaWQsIHR5cGUsIHRhZyk7Ci0JcmV0dXJuIDA7 Ci19Ci0KLS8qKgotICogX2RwdV9jcnRjX3JwX2FkZCAtIGFkZCBnaXZlbiByZXNvdXJjZSB0byBy ZXNvdXJjZSBwb29sCi0gKiBAcnA6IFBvaW50ZXIgdG8gb3JpZ2luYWwgcmVzb3VyY2UgcG9vbAot ICogQHR5cGU6IFJlc291cmNlIHR5cGUKLSAqIEB0YWc6IFNlYXJjaCB0YWcgZm9yIGdpdmVuIHJl c291cmNlCi0gKiBAdmFsOiBSZXNvdXJjZSBoYW5kbGUKLSAqIEBvcHM6IFJlc291cmNlIGNhbGxi YWNrIG9wZXJhdGlvbnMKLSAqIHJldHVybjogMCBpZiBzdWNjZXNzOyBlcnJvciBjb2RlIG90aGVy d2lzZQotICovCi1zdGF0aWMgaW50IF9kcHVfY3J0Y19ycF9hZGQoc3RydWN0IGRwdV9jcnRjX3Jl c3Bvb2wgKnJwLCB1MzIgdHlwZSwgdTY0IHRhZywKLQkJdm9pZCAqdmFsLCBzdHJ1Y3QgZHB1X2Ny dGNfcmVzX29wcyAqb3BzKQotewotCWludCByYzsKLQotCWlmICghcnApIHsKLQkJRFBVX0VSUk9S KCJpbnZhbGlkIHJlc291cmNlIHBvb2xcbiIpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlt dXRleF9sb2NrKHJwLT5ycF9sb2NrKTsKLQlyYyA9IF9kcHVfY3J0Y19ycF9hZGRfbm9fbG9jayhy cCwgdHlwZSwgdGFnLCB2YWwsIG9wcyk7Ci0JbXV0ZXhfdW5sb2NrKHJwLT5ycF9sb2NrKTsKLQly ZXR1cm4gcmM7Ci19Ci0KLS8qKgotICogX2RwdV9jcnRjX3JwX2dldCAtIGxvb2t1cCB0aGUgcmVz b3VyY2UgZnJvbSBnaXZlbiByZXNvdXJjZSBwb29sIGFuZCBvYnRhaW4KLSAqCWlmIGF2YWlsYWJs ZTsgb3RoZXJ3aXNlLCBvYnRhaW4gcmVzb3VyY2UgZnJvbSBnbG9iYWwgcG9vbAotICogQHJwOiBQ b2ludGVyIHRvIG9yaWdpbmFsIHJlc291cmNlIHBvb2wKLSAqIEB0eXBlOiBSZXNvdXJjZSB0eXBl Ci0gKiBAdGFnOiAgU2VhcmNoIHRhZyBmb3IgZ2l2ZW4gcmVzb3VyY2UKLSAqIHJldHVybjogUmVz b3VyY2UgaGFuZGxlIGlmIHN1Y2Nlc3M7IHBvaW50ZXIgZXJyb3Igb3IgbnVsbCBvdGhlcndpc2UK LSAqLwotc3RhdGljIHZvaWQgKl9kcHVfY3J0Y19ycF9nZXQoc3RydWN0IGRwdV9jcnRjX3Jlc3Bv b2wgKnJwLCB1MzIgdHlwZSwgdTY0IHRhZykKLXsKLQlzdHJ1Y3QgZHB1X2NydGNfcmVzcG9vbCAq b2xkX3JwOwotCXN0cnVjdCBkcHVfY3J0Y19yZXMgKnJlczsKLQl2b2lkICp2YWwgPSBOVUxMOwot CWludCByYzsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0KLQlpZiAoIXJwKSB7Ci0JCURQVV9F UlJPUigiaW52YWxpZCByZXNvdXJjZSBwb29sXG4iKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCi0J Y3J0YyA9IF9kcHVfY3J0Y19ycF90b19jcnRjKHJwKTsKLQlpZiAoIWNydGMpIHsKLQkJRFBVX0VS Uk9SKCJpbnZhbGlkIGNydGNcbiIpOwotCQlyZXR1cm4gTlVMTDsKLQl9Ci0KLQltdXRleF9sb2Nr KHJwLT5ycF9sb2NrKTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcywgJnJwLT5yZXNfbGlzdCwg bGlzdCkgewotCQlpZiAocmVzLT50eXBlICE9IHR5cGUgfHwgcmVzLT50YWcgIT0gdGFnKQotCQkJ Y29udGludWU7Ci0JCURQVV9ERUJVRygiY3J0YyVkLiV1IGZvdW5kIHJlczoweCV4LzB4JWxseC8l cEsvJWRcbiIsCi0JCQkJY3J0Yy0+YmFzZS5pZCwgcnAtPnNlcXVlbmNlX2lkLAotCQkJCXJlcy0+ dHlwZSwgcmVzLT50YWcsIHJlcy0+dmFsLAotCQkJCWF0b21pY19yZWFkKCZyZXMtPnJlZmNvdW50 KSk7Ci0JCWF0b21pY19pbmMoJnJlcy0+cmVmY291bnQpOwotCQlyZXMtPmZsYWdzICY9IH5EUFVf Q1JUQ19SRVNfRkxBR19GUkVFOwotCQltdXRleF91bmxvY2socnAtPnJwX2xvY2spOwotCQlyZXR1 cm4gcmVzLT52YWw7Ci0JfQotCWxpc3RfZm9yX2VhY2hfZW50cnkocmVzLCAmcnAtPnJlc19saXN0 LCBsaXN0KSB7Ci0JCWlmIChyZXMtPnR5cGUgIT0gdHlwZSB8fCAhKHJlcy0+ZmxhZ3MgJiBEUFVf Q1JUQ19SRVNfRkxBR19GUkVFKSkKLQkJCWNvbnRpbnVlOwotCQlEUFVfREVCVUcoImNydGMlZC4l dSByZXRhZyByZXM6MHgleC8weCVsbHgvJXBLLyVkXG4iLAotCQkJCWNydGMtPmJhc2UuaWQsIHJw LT5zZXF1ZW5jZV9pZCwKLQkJCQlyZXMtPnR5cGUsIHJlcy0+dGFnLCByZXMtPnZhbCwKLQkJCQlh dG9taWNfcmVhZCgmcmVzLT5yZWZjb3VudCkpOwotCQlhdG9taWNfaW5jKCZyZXMtPnJlZmNvdW50 KTsKLQkJcmVzLT50YWcgPSB0YWc7Ci0JCXJlcy0+ZmxhZ3MgJj0gfkRQVV9DUlRDX1JFU19GTEFH X0ZSRUU7Ci0JCW11dGV4X3VubG9jayhycC0+cnBfbG9jayk7Ci0JCXJldHVybiByZXMtPnZhbDsK LQl9Ci0JLyogbm90IGluIHRoaXMgcnAsIHRyeSB0byBncmFiIGZyb20gZ2xvYmFsIHBvb2wgKi8K LQlpZiAocnAtPm9wcy5nZXQpCi0JCXZhbCA9IHJwLT5vcHMuZ2V0KE5VTEwsIHR5cGUsIC0xKTsK LQlpZiAoIUlTX0VSUl9PUl9OVUxMKHZhbCkpCi0JCWdvdG8gYWRkX3JlczsKLQkvKgotCSAqIFNl YXJjaCBvbGRlciByZXNvdXJjZSBwb29scyBmb3IgaHcgYmxrIHdpdGggbWF0Y2hpbmcgdHlwZSwK LQkgKiBuZWNlc3Nhcnkgd2hlbiByZXNvdXJjZSBpcyBiZWluZyB1c2VkIGJ5IHRoaXMgb2JqZWN0 LAotCSAqIGJ1dCBpbiBwcmV2aW91cyBzdGF0ZXMgbm90IHlldCBjbGVhbmVkIHVwLgotCSAqCi0J ICogVGhpcyBlbmFibGVzIHNlYXJjaGluZyBvZiBhbGwgcmVzb3VyY2VzIGN1cnJlbnRseSBvd25l ZAotCSAqIGJ5IHRoaXMgY3J0YyBldmVuIHRob3VnaCB0aGUgcmVzb3VyY2UgbWlnaHQgbm90IGJl IHVzZWQKLQkgKiBpbiB0aGUgY3VycmVudCBhdG9taWMgc3RhdGUuIFRoaXMgYWxsb3dzIHRob3Nl IHJlc291cmNlcwotCSAqIHRvIGJlIHJlLWFjcXVpcmVkIGJ5IHRoZSBuZXcgYXRvbWljIHN0YXRl IGltbWVkaWF0ZWx5Ci0JICogd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgcmVzb3VyY2VzIHRvIGJl IGZ1bGx5IHJlbGVhc2VkLgotCSAqLwotCWVsc2UgaWYgKElTX0VSUl9PUl9OVUxMKHZhbCkgJiYg KHR5cGUgPCBEUFVfSFdfQkxLX01BWCkpIHsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShvbGRfcnAs IHJwLT5ycF9oZWFkLCBycF9saXN0KSB7Ci0JCQlpZiAob2xkX3JwID09IHJwKQotCQkJCWNvbnRp bnVlOwotCi0JCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcywgJm9sZF9ycC0+cmVzX2xpc3QsIGxp c3QpIHsKLQkJCQlpZiAocmVzLT50eXBlICE9IHR5cGUpCi0JCQkJCWNvbnRpbnVlOwotCQkJCURQ VV9ERUJVRygKLQkJCQkJImNydGMlZC4ldSBmb3VuZCByZXM6MHgleC8vJXBLLyBpbiBjcnRjJWQu JWRcbiIsCi0JCQkJCQljcnRjLT5iYXNlLmlkLAotCQkJCQkJcnAtPnNlcXVlbmNlX2lkLAotCQkJ CQkJcmVzLT50eXBlLCByZXMtPnZhbCwKLQkJCQkJCWNydGMtPmJhc2UuaWQsCi0JCQkJCQlvbGRf cnAtPnNlcXVlbmNlX2lkKTsKLQkJCQlEUFVfRVZUMzJfVkVSQk9TRShjcnRjLT5iYXNlLmlkLAot CQkJCQkJcnAtPnNlcXVlbmNlX2lkLAotCQkJCQkJcmVzLT50eXBlLCByZXMtPnZhbCwKLQkJCQkJ CWNydGMtPmJhc2UuaWQsCi0JCQkJCQlvbGRfcnAtPnNlcXVlbmNlX2lkKTsKLQkJCQlpZiAocmVz LT5vcHMuZ2V0KQotCQkJCQlyZXMtPm9wcy5nZXQocmVzLT52YWwsIDAsIC0xKTsKLQkJCQl2YWwg PSByZXMtPnZhbDsKLQkJCQlicmVhazsKLQkJCX0KLQotCQkJaWYgKCFJU19FUlJfT1JfTlVMTCh2 YWwpKQotCQkJCWJyZWFrOwotCQl9Ci0JfQotCWlmIChJU19FUlJfT1JfTlVMTCh2YWwpKSB7Ci0J CURQVV9ERUJVRygiY3J0YyVkLiV1IGZhaWxlZCB0byBnZXQgcmVzOjB4JXgvL1xuIiwKLQkJCQlj cnRjLT5iYXNlLmlkLCBycC0+c2VxdWVuY2VfaWQsIHR5cGUpOwotCQltdXRleF91bmxvY2socnAt PnJwX2xvY2spOwotCQlyZXR1cm4gTlVMTDsKLQl9Ci1hZGRfcmVzOgotCXJjID0gX2RwdV9jcnRj X3JwX2FkZF9ub19sb2NrKHJwLCB0eXBlLCB0YWcsIHZhbCwgJnJwLT5vcHMpOwotCWlmIChyYykg ewotCQlEUFVfRVJST1IoImNydGMlZC4ldSBmYWlsZWQgdG8gYWRkIHJlczoweCV4LzB4JWxseFxu IiwKLQkJCQljcnRjLT5iYXNlLmlkLCBycC0+c2VxdWVuY2VfaWQsIHR5cGUsIHRhZyk7Ci0JCWlm IChycC0+b3BzLnB1dCkKLQkJCXJwLT5vcHMucHV0KHZhbCk7Ci0JCXZhbCA9IE5VTEw7Ci0JfQot CW11dGV4X3VubG9jayhycC0+cnBfbG9jayk7Ci0JcmV0dXJuIHZhbDsKLX0KLQotLyoqCi0gKiBf ZHB1X2NydGNfcnBfcHV0IC0gcmV0dXJuIGdpdmVuIHJlc291cmNlIHRvIHJlc291cmNlIHBvb2wK LSAqIEBycDogUG9pbnRlciB0byBvcmlnaW5hbCByZXNvdXJjZSBwb29sCi0gKiBAdHlwZTogUmVz b3VyY2UgdHlwZQotICogQHRhZzogU2VhcmNoIHRhZyBmb3IgZ2l2ZW4gcmVzb3VyY2UKLSAqIHJl dHVybjogTm9uZQotICovCi1zdGF0aWMgdm9pZCBfZHB1X2NydGNfcnBfcHV0KHN0cnVjdCBkcHVf Y3J0Y19yZXNwb29sICpycCwgdTMyIHR5cGUsIHU2NCB0YWcpCi17Ci0Jc3RydWN0IGRwdV9jcnRj X3JlcyAqcmVzLCAqbmV4dDsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0KLQlpZiAoIXJwKSB7 Ci0JCURQVV9FUlJPUigiaW52YWxpZCByZXNvdXJjZSBwb29sXG4iKTsKLQkJcmV0dXJuOwotCX0K LQotCWNydGMgPSBfZHB1X2NydGNfcnBfdG9fY3J0YyhycCk7Ci0JaWYgKCFjcnRjKSB7Ci0JCURQ VV9FUlJPUigiaW52YWxpZCBjcnRjXG4iKTsKLQkJcmV0dXJuOwotCX0KLQotCW11dGV4X2xvY2so cnAtPnJwX2xvY2spOwotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyZXMsIG5leHQsICZycC0+ cmVzX2xpc3QsIGxpc3QpIHsKLQkJaWYgKHJlcy0+dHlwZSAhPSB0eXBlIHx8IHJlcy0+dGFnICE9 IHRhZykKLQkJCWNvbnRpbnVlOwotCQlEUFVfREVCVUcoImNydGMlZC4ldSBmb3VuZCByZXM6MHgl eC8weCVsbHgvJXBLLyVkXG4iLAotCQkJCWNydGMtPmJhc2UuaWQsIHJwLT5zZXF1ZW5jZV9pZCwK LQkJCQlyZXMtPnR5cGUsIHJlcy0+dGFnLCByZXMtPnZhbCwKLQkJCQlhdG9taWNfcmVhZCgmcmVz LT5yZWZjb3VudCkpOwotCQlpZiAocmVzLT5mbGFncyAmIERQVV9DUlRDX1JFU19GTEFHX0ZSRUUp Ci0JCQlEUFVfRVJST1IoCi0JCQkJImNydGMlZC4ldSBhbHJlYWR5IGZyZWUgcmVzOjB4JXgvMHgl bGx4LyVwSy8lZFxuIiwKLQkJCQkJY3J0Yy0+YmFzZS5pZCwgcnAtPnNlcXVlbmNlX2lkLAotCQkJ CQlyZXMtPnR5cGUsIHJlcy0+dGFnLCByZXMtPnZhbCwKLQkJCQkJYXRvbWljX3JlYWQoJnJlcy0+ cmVmY291bnQpKTsKLQkJZWxzZSBpZiAoYXRvbWljX2RlY19yZXR1cm4oJnJlcy0+cmVmY291bnQp ID09IDApCi0JCQlyZXMtPmZsYWdzIHw9IERQVV9DUlRDX1JFU19GTEFHX0ZSRUU7Ci0KLQkJbXV0 ZXhfdW5sb2NrKHJwLT5ycF9sb2NrKTsKLQkJcmV0dXJuOwotCX0KLQlEUFVfRVJST1IoImNydGMl ZC4ldSBub3QgZm91bmQgcmVzOjB4JXgvMHglbGx4XG4iLAotCQkJY3J0Yy0+YmFzZS5pZCwgcnAt PnNlcXVlbmNlX2lkLCB0eXBlLCB0YWcpOwotCW11dGV4X3VubG9jayhycC0+cnBfbG9jayk7Ci19 Ci0KLWludCBkcHVfY3J0Y19yZXNfYWRkKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUsIHUz MiB0eXBlLCB1NjQgdGFnLAotCQl2b2lkICp2YWwsIHN0cnVjdCBkcHVfY3J0Y19yZXNfb3BzICpv cHMpCi17Ci0Jc3RydWN0IGRwdV9jcnRjX3Jlc3Bvb2wgKnJwOwotCi0JaWYgKCFzdGF0ZSkgewot CQlEUFVfRVJST1IoImludmFsaWQgcGFyYW1ldGVyc1xuIik7Ci0JCXJldHVybiAtRUlOVkFMOwot CX0KLQotCXJwID0gJnRvX2RwdV9jcnRjX3N0YXRlKHN0YXRlKS0+cnA7Ci0JcmV0dXJuIF9kcHVf Y3J0Y19ycF9hZGQocnAsIHR5cGUsIHRhZywgdmFsLCBvcHMpOwotfQotCi12b2lkICpkcHVfY3J0 Y19yZXNfZ2V0KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUsIHUzMiB0eXBlLCB1NjQgdGFn KQotewotCXN0cnVjdCBkcHVfY3J0Y19yZXNwb29sICpycDsKLQl2b2lkICp2YWw7Ci0KLQlpZiAo IXN0YXRlKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbWV0ZXJzXG4iKTsKLQkJcmV0dXJu IE5VTEw7Ci0JfQotCi0JcnAgPSAmdG9fZHB1X2NydGNfc3RhdGUoc3RhdGUpLT5ycDsKLQl2YWwg PSBfZHB1X2NydGNfcnBfZ2V0KHJwLCB0eXBlLCB0YWcpOwotCWlmIChJU19FUlIodmFsKSkgewot CQlEUFVfRVJST1IoImZhaWxlZCB0byBnZXQgcmVzIHR5cGU6MHgleDoweCVsbHhcbiIsCi0JCQkJ dHlwZSwgdGFnKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCi0JcmV0dXJuIHZhbDsKLX0KLQotdm9p ZCBkcHVfY3J0Y19yZXNfcHV0KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUsIHUzMiB0eXBl LCB1NjQgdGFnKQotewotCXN0cnVjdCBkcHVfY3J0Y19yZXNwb29sICpycDsKLQotCWlmICghc3Rh dGUpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBhcmFtZXRlcnNcbiIpOwotCQlyZXR1cm47Ci0J fQotCi0JcnAgPSAmdG9fZHB1X2NydGNfc3RhdGUoc3RhdGUpLT5ycDsKLQlfZHB1X2NydGNfcnBf cHV0KHJwLCB0eXBlLCB0YWcpOwotfQotCiBzdGF0aWMgdm9pZCBfZHB1X2NydGNfZGVpbml0X2V2 ZW50cyhzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjKQogewogCWlmICghZHB1X2NydGMpCkBAIC0x MzIyLDggKzg1Miw2IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2Rlc3Ryb3lfc3RhdGUoc3RydWN0 IGRybV9jcnRjICpjcnRjLAogCiAJRFBVX0RFQlVHKCJjcnRjJWRcbiIsIGNydGMtPmJhc2UuaWQp OwogCi0JX2RwdV9jcnRjX3JwX2Rlc3Ryb3koJmNzdGF0ZS0+cnApOwotCiAJX19kcm1fYXRvbWlj X2hlbHBlcl9jcnRjX2Rlc3Ryb3lfc3RhdGUoc3RhdGUpOwogCiAJa2ZyZWUoY3N0YXRlKTsKQEAg LTE1ODMsOCArMTExMSw2IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmRwdV9jcnRj X2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJLyogZHVwbGljYXRlIGJh c2UgaGVscGVyICovCiAJX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShj cnRjLCAmY3N0YXRlLT5iYXNlKTsKIAotCV9kcHVfY3J0Y19ycF9kdXBsaWNhdGUoJm9sZF9jc3Rh dGUtPnJwLCAmY3N0YXRlLT5ycCk7Ci0KIAlyZXR1cm4gJmNzdGF0ZS0+YmFzZTsKIH0KIApAQCAt MTYyMSw5ICsxMTQ3LDYgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfcmVzZXQoc3RydWN0IGRybV9j cnRjICpjcnRjKQogCQlyZXR1cm47CiAJfQogCi0JX2RwdV9jcnRjX3JwX3Jlc2V0KCZjc3RhdGUt PnJwLCAmZHB1X2NydGMtPnJwX2xvY2ssCi0JCQkmZHB1X2NydGMtPnJwX2hlYWQpOwotCiAJY3N0 YXRlLT5iYXNlLmNydGMgPSBjcnRjOwogCWNydGMtPnN0YXRlID0gJmNzdGF0ZS0+YmFzZTsKIH0K QEAgLTIwNjIsNyArMTU4NSw2IEBAIHN0YXRpYyBpbnQgZHB1X2NydGNfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAl9CiAKIGVuZDoKLQlfZHB1X2NydGNfcnBfZnJlZV91bnVz ZWQoJmNzdGF0ZS0+cnApOwogCXJldHVybiByYzsKIH0KIApAQCAtMjM0Nyw4ICsxODY5LDYgQEAg c3RhdGljIGludCBkcHVfY3J0Y19kZWJ1Z2ZzX3N0YXRlX3Nob3coc3RydWN0IHNlcV9maWxlICpz LCB2b2lkICp2KQogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IChzdHJ1Y3QgZHJtX2NydGMgKikg cy0+cHJpdmF0ZTsKIAlzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0 Yyk7CiAJc3RydWN0IGRwdV9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShj cnRjLT5zdGF0ZSk7Ci0Jc3RydWN0IGRwdV9jcnRjX3JlcyAqcmVzOwotCXN0cnVjdCBkcHVfY3J0 Y19yZXNwb29sICpycDsKIAlpbnQgaTsKIAogCXNlcV9wcmludGYocywgIm51bV9jb25uZWN0b3Jz OiAlZFxuIiwgY3N0YXRlLT5udW1fY29ubmVjdG9ycyk7CkBAIC0yMzY2LDE3ICsxODg2LDYgQEAg c3RhdGljIGludCBkcHVfY3J0Y19kZWJ1Z2ZzX3N0YXRlX3Nob3coc3RydWN0IHNlcV9maWxlICpz LCB2b2lkICp2KQogCQkJCWRwdV9jcnRjLT5jdXJfcGVyZi5tYXhfcGVyX3BpcGVfaWJbaV0pOwog CX0KIAotCW11dGV4X2xvY2soJmRwdV9jcnRjLT5ycF9sb2NrKTsKLQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHJwLCAmZHB1X2NydGMtPnJwX2hlYWQsIHJwX2xpc3QpIHsKLQkJc2VxX3ByaW50ZihzLCAi cnAuJWQ6ICIsIHJwLT5zZXF1ZW5jZV9pZCk7Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnkocmVzLCAm cnAtPnJlc19saXN0LCBsaXN0KQotCQkJc2VxX3ByaW50ZihzLCAiMHgleC8weCVsbHgvJXBLLyVk ICIsCi0JCQkJCXJlcy0+dHlwZSwgcmVzLT50YWcsIHJlcy0+dmFsLAotCQkJCQlhdG9taWNfcmVh ZCgmcmVzLT5yZWZjb3VudCkpOwotCQlzZXFfcHV0cyhzLCAiXG4iKTsKLQl9Ci0JbXV0ZXhfdW5s b2NrKCZkcHVfY3J0Yy0+cnBfbG9jayk7Ci0KIAlyZXR1cm4gMDsKIH0KIERFRklORV9EUFVfREVC VUdGU19TRVFfRk9QUyhkcHVfY3J0Y19kZWJ1Z2ZzX3N0YXRlKTsKQEAgLTI1ODgsOSArMjA5Nyw2 IEBAIHN0cnVjdCBkcm1fY3J0YyAqZHB1X2NydGNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKIAlzcGluX2xvY2tfaW5pdCgmZHB1X2NydGMtPnNw aW5fbG9jayk7CiAJYXRvbWljX3NldCgmZHB1X2NydGMtPmZyYW1lX3BlbmRpbmcsIDApOwogCi0J bXV0ZXhfaW5pdCgmZHB1X2NydGMtPnJwX2xvY2spOwotCUlOSVRfTElTVF9IRUFEKCZkcHVfY3J0 Yy0+cnBfaGVhZCk7Ci0KIAlpbml0X2NvbXBsZXRpb24oJmRwdV9jcnRjLT5mcmFtZV9kb25lX2Nv bXApOwogCiAJSU5JVF9MSVNUX0hFQUQoJmRwdV9jcnRjLT5mcmFtZV9ldmVudF9saXN0KTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmggYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCmluZGV4IDJjMzg1N2IuLjhlNmI2 YzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaApAQCAtMTgxLDgg KzE4MSw2IEBAIHN0cnVjdCBkcHVfY3J0Y19ldmVudCB7CiAgKiBAcGhhbmRsZTogUG9pbnRlciB0 byBwb3dlciBoYW5kbGVyCiAgKiBAcG93ZXJfZXZlbnQgICA6IHJlZ2lzdGVyZWQgcG93ZXIgZXZl bnQgaGFuZGxlCiAgKiBAY3VyX3BlcmYgICAgICA6IGN1cnJlbnQgcGVyZm9ybWFuY2UgY29tbWl0 dGVkIHRvIGNsb2NrL2JhbmR3aWR0aCBkcml2ZXIKLSAqIEBycF9sb2NrICAgICAgIDogc2VyaWFs aXphdGlvbiBsb2NrIGZvciByZXNvdXJjZSBwb29sCi0gKiBAcnBfaGVhZCAgICAgICA6IGxpc3Qg b2YgYWN0aXZlIHJlc291cmNlIHBvb2wKICAqLwogc3RydWN0IGRwdV9jcnRjIHsKIAlzdHJ1Y3Qg ZHJtX2NydGMgYmFzZTsKQEAgLTIzNCw2NSArMjMyLDEyIEBAIHN0cnVjdCBkcHVfY3J0YyB7CiAK IAlzdHJ1Y3QgZHB1X2NvcmVfcGVyZl9wYXJhbXMgY3VyX3BlcmY7CiAKLQlzdHJ1Y3QgbXV0ZXgg cnBfbG9jazsKLQlzdHJ1Y3QgbGlzdF9oZWFkIHJwX2hlYWQ7Ci0KIAlzdHJ1Y3QgZHB1X2NydGNf c21tdV9zdGF0ZV9kYXRhIHNtbXVfc3RhdGU7CiB9OwogCiAjZGVmaW5lIHRvX2RwdV9jcnRjKHgp IGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgZHB1X2NydGMsIGJhc2UpCiAKIC8qKgotICogc3RydWN0 IGRwdV9jcnRjX3Jlc19vcHMgLSBjb21tb24gb3BlcmF0aW9ucyBmb3IgY3J0YyByZXNvdXJjZXMK LSAqIEBnZXQ6IGdldCBnaXZlbiByZXNvdXJjZQotICogQHB1dDogcHV0IGdpdmVuIHJlc291cmNl Ci0gKi8KLXN0cnVjdCBkcHVfY3J0Y19yZXNfb3BzIHsKLQl2b2lkICooKmdldCkodm9pZCAqdmFs LCB1MzIgdHlwZSwgdTY0IHRhZyk7Ci0Jdm9pZCAoKnB1dCkodm9pZCAqdmFsKTsKLX07Ci0KLSNk ZWZpbmUgRFBVX0NSVENfUkVTX0ZMQUdfRlJFRQkJQklUKDApCi0KLS8qKgotICogc3RydWN0IGRw dV9jcnRjX3JlcyAtIGRlZmluaXRpb24gb2YgY3J0YyByZXNvdXJjZXMKLSAqIEBsaXN0OiBsaXN0 IG9mIGNydGMgcmVzb3VyY2UKLSAqIEB0eXBlOiBjcnRjIHJlc291cmNlIHR5cGUKLSAqIEB0YWc6 IHVuaXF1ZSBpZGVudGlmaWVyIHBlciB0eXBlCi0gKiBAcmVmY291bnQ6IHJlZmVyZW5jZS91c2Fn ZSBjb3VudAotICogQG9wczogY2FsbGJhY2sgb3BlcmF0aW9ucwotICogQHZhbDogcmVzb3VyY2Ug aGFuZGxlIGFzc29jaWF0ZWQgd2l0aCB0eXBlL3RhZwotICogQGZsYWdzOiBjdXN0b21pemF0aW9u IGZsYWdzCi0gKi8KLXN0cnVjdCBkcHVfY3J0Y19yZXMgewotCXN0cnVjdCBsaXN0X2hlYWQgbGlz dDsKLQl1MzIgdHlwZTsKLQl1NjQgdGFnOwotCWF0b21pY190IHJlZmNvdW50OwotCXN0cnVjdCBk cHVfY3J0Y19yZXNfb3BzIG9wczsKLQl2b2lkICp2YWw7Ci0JdTMyIGZsYWdzOwotfTsKLQotLyoq Ci0gKiBkcHVfY3J0Y19yZXNwb29sIC0gY3J0YyByZXNvdXJjZSBwb29sCi0gKiBAcnBfbG9jazog cG9pbnRlciB0byBzZXJpYWxpemF0aW9uIGxvY2sKLSAqIEBycF9oZWFkOiBwb2ludGVyIHRvIGhl YWQgb2YgYWN0aXZlIHJlc291cmNlIHBvb2xzIG9mIHRoaXMgY3J0YwotICogQHJwX2xpc3Q6IGxp c3Qgb2YgY3J0YyByZXNvdXJjZSBwb29sCi0gKiBAc2VxdWVuY2VfaWQ6IHNlcXVlbmNlIGlkZW50 aWZpZXIsIGluY3JlbWVudGVkIHBlciBzdGF0ZSBkdXBsaWNhdGlvbgotICogQHJlc19saXN0OiBs aXN0IG9mIHJlc291cmNlIG1hbmFnZWQgYnkgdGhpcyByZXNvdXJjZSBwb29sCi0gKiBAb3BzOiBy ZXNvdXJjZSBvcGVyYXRpb25zIGZvciBwYXJlbnQgcmVzb3VyY2UgcG9vbAotICovCi1zdHJ1Y3Qg ZHB1X2NydGNfcmVzcG9vbCB7Ci0Jc3RydWN0IG11dGV4ICpycF9sb2NrOwotCXN0cnVjdCBsaXN0 X2hlYWQgKnJwX2hlYWQ7Ci0Jc3RydWN0IGxpc3RfaGVhZCBycF9saXN0OwotCXUzMiBzZXF1ZW5j ZV9pZDsKLQlzdHJ1Y3QgbGlzdF9oZWFkIHJlc19saXN0OwotCXN0cnVjdCBkcHVfY3J0Y19yZXNf b3BzIG9wczsKLX07Ci0KLS8qKgogICogc3RydWN0IGRwdV9jcnRjX3N0YXRlIC0gZHB1IGNvbnRh aW5lciBmb3IgYXRvbWljIGNydGMgc3RhdGUKICAqIEBiYXNlOiBCYXNlIGRybSBjcnRjIHN0YXRl IHN0cnVjdHVyZQogICogQGNvbm5lY3RvcnMgICAgOiBDdXJyZW50bHkgYXNzb2NpYXRlZCBkcm0g Y29ubmVjdG9ycwpAQCAtMzIxLDcgKzI2Niw2IEBAIHN0cnVjdCBkcHVfY3J0Y19zdGF0ZSB7CiAJ dWludDY0X3QgaW5wdXRfZmVuY2VfdGltZW91dF9uczsKIAogCXN0cnVjdCBkcHVfY29yZV9wZXJm X3BhcmFtcyBuZXdfcGVyZjsKLQlzdHJ1Y3QgZHB1X2NydGNfcmVzcG9vbCBycDsKIH07CiAKICNk ZWZpbmUgdG9fZHB1X2NydGNfc3RhdGUoeCkgXApAQCAtNDYwLDM0ICs0MDQsNCBAQCBzdGF0aWMg aW5saW5lIGJvb2wgZHB1X2NydGNfaXNfZW5hYmxlZChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiBp bnQgZHB1X2NydGNfZXZlbnRfcXVldWUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQl2b2lkICgq ZnVuYykoc3RydWN0IGRybV9jcnRjICpjcnRjLCB2b2lkICp1c3IpLCB2b2lkICp1c3IpOwogCi0v KioKLSAqIGRwdV9jcnRjX3Jlc19hZGQgLSBhZGQgZ2l2ZW4gcmVzb3VyY2UgdG8gcmVzb3VyY2Ug cG9vbCBpbiBjcnRjIHN0YXRlCi0gKiBAc3RhdGU6IFBvaW50ZXIgdG8gZHJtIGNydGMgc3RhdGUK LSAqIEB0eXBlOiBSZXNvdXJjZSB0eXBlCi0gKiBAdGFnOiBTZWFyY2ggdGFnIGZvciBnaXZlbiBy ZXNvdXJjZQotICogQHZhbDogUmVzb3VyY2UgaGFuZGxlCi0gKiBAb3BzOiBSZXNvdXJjZSBjYWxs YmFjayBvcGVyYXRpb25zCi0gKiByZXR1cm46IDAgaWYgc3VjY2VzczsgZXJyb3IgY29kZSBvdGhl cndpc2UKLSAqLwotaW50IGRwdV9jcnRjX3Jlc19hZGQoc3RydWN0IGRybV9jcnRjX3N0YXRlICpz dGF0ZSwgdTMyIHR5cGUsIHU2NCB0YWcsCi0JCXZvaWQgKnZhbCwgc3RydWN0IGRwdV9jcnRjX3Jl c19vcHMgKm9wcyk7Ci0KLS8qKgotICogZHB1X2NydGNfcmVzX2dldCAtIGdldCBnaXZlbiByZXNv dXJjZSBmcm9tIHJlc291cmNlIHBvb2wgaW4gY3J0YyBzdGF0ZQotICogQHN0YXRlOiBQb2ludGVy IHRvIGRybSBjcnRjIHN0YXRlCi0gKiBAdHlwZTogUmVzb3VyY2UgdHlwZQotICogQHRhZzogU2Vh cmNoIHRhZyBmb3IgZ2l2ZW4gcmVzb3VyY2UKLSAqIHJldHVybjogUmVzb3VyY2UgaGFuZGxlIGlm IHN1Y2Nlc3M7IHBvaW50ZXIgZXJyb3Igb3IgbnVsbCBvdGhlcndpc2UKLSAqLwotdm9pZCAqZHB1 X2NydGNfcmVzX2dldChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlLCB1MzIgdHlwZSwgdTY0 IHRhZyk7Ci0KLS8qKgotICogZHB1X2NydGNfcmVzX3B1dCAtIHJldHVybiBnaXZlbiByZXNvdXJj ZSB0byByZXNvdXJjZSBwb29sIGluIGNydGMgc3RhdGUKLSAqIEBzdGF0ZTogUG9pbnRlciB0byBk cm0gY3J0YyBzdGF0ZQotICogQHR5cGU6IFJlc291cmNlIHR5cGUKLSAqIEB0YWc6IFNlYXJjaCB0 YWcgZm9yIGdpdmVuIHJlc291cmNlCi0gKiByZXR1cm46IE5vbmUKLSAqLwotdm9pZCBkcHVfY3J0 Y19yZXNfcHV0KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUsIHUzMiB0eXBlLCB1NjQgdGFn KTsKLQogI2VuZGlmIC8qIF9EUFVfQ1JUQ19IXyAqLwotLSAKVGhlIFF1YWxjb21tIElubm92YXRp b24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKYSBM aW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVl ZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==