From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [DPU PATCH 3/4] drm/msm/dpu: remove resource pool manager Date: Tue, 12 Jun 2018 18:17:46 -0700 Message-ID: <1528852667-14833-4-git-send-email-jsanka@codeaurora.org> References: <1528852667-14833-1-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1528852667-14833-1-git-send-email-jsanka-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: hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, Jeykumar Sankaran , seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org cmVzb3VyY2UgcG9vbCBtYW5hZ2VyIHV0aWxpdHkgd2FzIGludHJvZHVjZWQgdG8gbWFuYWdlCnJv dGF0b3Igc2Vzc2lvbnMuIFJlbW92aW5nIHRoZSBzdXBwb3J0IGFzIHRoZSByb3RhdG9yCmZlYXR1 cmUgZG9lc24ndCBleGlzdC4KClNpZ25lZC1vZmYtYnk6IEpleWt1bWFyIFNhbmthcmFuIDxqc2Fu a2FAY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2NydGMuYyB8IDQ5NCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oIHwgIDg0IC0tLS0tLQogMiBmaWxlcyBjaGFu Z2VkLCA1NzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9j cnRjLmMKaW5kZXggOWNhODMyNS4uNDI2ZTJhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfY3J0Yy5jCkBAIC05OCw0NzYgKzk4LDYgQEAgc3RhdGljIGlubGluZSBpbnQgX2Rw dV9jcnRjX3Bvd2VyX2VuYWJsZShzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjLCBib29sIGVuYWJs ZSkKIAlyZXR1cm4gMDsKIH0KIAotLyoqCi0gKiBfZHB1X2NydGNfcnBfdG9fY3J0YyAtIGdldCBj cnRjIGZyb20gcmVzb3VyY2UgcG9vbCBvYmplY3QKLSAqIEBycDogUG9pbnRlciB0byByZXNvdXJj ZSBwb29sCi0gKiByZXR1cm46IFBvaW50ZXIgdG8gZHJtIGNydGMgaWYgc3VjY2VzczsgbnVsbCBv dGhlcndpc2UKLSAqLwotc3RhdGljIHN0cnVjdCBkcm1fY3J0YyAqX2RwdV9jcnRjX3JwX3RvX2Ny dGMoc3RydWN0IGRwdV9jcnRjX3Jlc3Bvb2wgKnJwKQotewotCWlmICghcnApCi0JCXJldHVybiBO VUxMOwotCi0JcmV0dXJuIGNvbnRhaW5lcl9vZihycCwgc3RydWN0IGRwdV9jcnRjX3N0YXRlLCBy cCktPmJhc2UuY3J0YzsKLX0KLQotLyoqCi0gKiBfZHB1X2NydGNfcnBfcmVjbGFpbSAtIHJlY2xh aW0gdW51c2VkLCBvciBhbGwgaWYgZm9yY2VkLCByZXNvdXJjZXMgaW4gcG9vbAotICogQHJwOiBQ b2ludGVyIHRvIHJlc291cmNlIHBvb2wKLSAqIEBmb3JjZTogVHJ1ZSB0byByZWNsYWltIGFsbCBy ZXNvdXJjZXM7IG90aGVyd2lzZSwgcmVjbGFpbSBvbmx5IHVudXNlZCBvbmVzCi0gKiByZXR1cm46 IE5vbmUKLSAqLwotc3RhdGljIHZvaWQgX2RwdV9jcnRjX3JwX3JlY2xhaW0oc3RydWN0IGRwdV9j cnRjX3Jlc3Bvb2wgKnJwLCBib29sIGZvcmNlKQotewotCXN0cnVjdCBkcHVfY3J0Y19yZXMgKnJl cywgKm5leHQ7Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwotCi0JY3J0YyA9IF9kcHVfY3J0Y19y cF90b19jcnRjKHJwKTsKLQlpZiAoIWNydGMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGNydGNc biIpOwotCQlyZXR1cm47Ci0JfQotCi0JRFBVX0RFQlVHKCJjcnRjJWQuJXUgJXNcbiIsIGNydGMt PmJhc2UuaWQsIHJwLT5zZXF1ZW5jZV9pZCwKLQkJCWZvcmNlID8gImRlc3Ryb3kiIDogImZyZWVf dW51c2VkIik7Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmVzLCBuZXh0LCAmcnAtPnJl c19saXN0LCBsaXN0KSB7Ci0JCWlmICghZm9yY2UgJiYgIShyZXMtPmZsYWdzICYgRFBVX0NSVENf UkVTX0ZMQUdfRlJFRSkpCi0JCQljb250aW51ZTsKLQkJRFBVX0RFQlVHKCJjcnRjJWQuJXUgcmVj bGFpbSByZXM6MHgleC8weCVsbHgvJXBLLyVkXG4iLAotCQkJCWNydGMtPmJhc2UuaWQsIHJwLT5z ZXF1ZW5jZV9pZCwKLQkJCQlyZXMtPnR5cGUsIHJlcy0+dGFnLCByZXMtPnZhbCwKLQkJCQlhdG9t aWNfcmVhZCgmcmVzLT5yZWZjb3VudCkpOwotCQlsaXN0X2RlbCgmcmVzLT5saXN0KTsKLQkJaWYg KHJlcy0+b3BzLnB1dCkKLQkJCXJlcy0+b3BzLnB1dChyZXMtPnZhbCk7Ci0JCWtmcmVlKHJlcyk7 Ci0JfQotfQotCi0vKioKLSAqIF9kcHVfY3J0Y19ycF9mcmVlX3VudXNlZCAtIGZyZWUgdW51c2Vk IHJlc291cmNlIGluIHBvb2wKLSAqIEBycDogUG9pbnRlciB0byByZXNvdXJjZSBwb29sCi0gKiBy ZXR1cm46IG5vbmUKLSAqLwotc3RhdGljIHZvaWQgX2RwdV9jcnRjX3JwX2ZyZWVfdW51c2VkKHN0 cnVjdCBkcHVfY3J0Y19yZXNwb29sICpycCkKLXsKLQltdXRleF9sb2NrKHJwLT5ycF9sb2NrKTsK LQlfZHB1X2NydGNfcnBfcmVjbGFpbShycCwgZmFsc2UpOwotCW11dGV4X3VubG9jayhycC0+cnBf bG9jayk7Ci19Ci0KLS8qKgotICogX2RwdV9jcnRjX3JwX2Rlc3Ryb3kgLSBkZXN0cm95IHJlc291 cmNlIHBvb2wKLSAqIEBycDogUG9pbnRlciB0byByZXNvdXJjZSBwb29sCi0gKiByZXR1cm46IE5v bmUKLSAqLwotc3RhdGljIHZvaWQgX2RwdV9jcnRjX3JwX2Rlc3Ryb3koc3RydWN0IGRwdV9jcnRj X3Jlc3Bvb2wgKnJwKQotewotCW11dGV4X2xvY2socnAtPnJwX2xvY2spOwotCWxpc3RfZGVsX2lu aXQoJnJwLT5ycF9saXN0KTsKLQlfZHB1X2NydGNfcnBfcmVjbGFpbShycCwgdHJ1ZSk7Ci0JbXV0 ZXhfdW5sb2NrKHJwLT5ycF9sb2NrKTsKLX0KLQotLyoqCi0gKiBfZHB1X2NydGNfaHdfYmxrX2dl dCAtIGdldCBjYWxsYmFjayBmb3IgaGFyZHdhcmUgYmxvY2sKLSAqIEB2YWw6IFJlc291cmNlIGhh bmRsZQotICogQHR5cGU6IFJlc291cmNlIHR5cGUKLSAqIEB0YWc6IFNlYXJjaCB0YWcgZm9yIGdp dmVuIHJlc291cmNlCi0gKiByZXR1cm46IFJlc291cmNlIGhhbmRsZQotICovCi1zdGF0aWMgdm9p ZCAqX2RwdV9jcnRjX2h3X2Jsa19nZXQodm9pZCAqdmFsLCB1MzIgdHlwZSwgdTY0IHRhZykKLXsK LQlEUFVfREVCVUcoInJlczolZC8weCVsbHgvJXBLXG4iLCB0eXBlLCB0YWcsIHZhbCk7Ci0JcmV0 dXJuIGRwdV9od19ibGtfZ2V0KHZhbCwgdHlwZSwgdGFnKTsKLX0KLQotLyoqCi0gKiBfZHB1X2Ny dGNfaHdfYmxrX3B1dCAtIHB1dCBjYWxsYmFjayBmb3IgaGFyZHdhcmUgYmxvY2sKLSAqIEB2YWw6 IFJlc291cmNlIGhhbmRsZQotICogcmV0dXJuOiBOb25lCi0gKi8KLXN0YXRpYyB2b2lkIF9kcHVf Y3J0Y19od19ibGtfcHV0KHZvaWQgKnZhbCkKLXsKLQlEUFVfREVCVUcoInJlczovLyVwS1xuIiwg dmFsKTsKLQlkcHVfaHdfYmxrX3B1dCh2YWwpOwotfQotCi0vKioKLSAqIF9kcHVfY3J0Y19ycF9k dXBsaWNhdGUgLSBkdXBsaWNhdGUgcmVzb3VyY2UgcG9vbCBhbmQgcmVzZXQgcmVmZXJlbmNlIGNv dW50Ci0gKiBAcnA6IFBvaW50ZXIgdG8gb3JpZ2luYWwgcmVzb3VyY2UgcG9vbAotICogQGR1cF9y cDogUG9pbnRlciB0byBkdXBsaWNhdGVkIHJlc291cmNlIHBvb2wKLSAqIHJldHVybjogTm9uZQot ICovCi1zdGF0aWMgdm9pZCBfZHB1X2NydGNfcnBfZHVwbGljYXRlKHN0cnVjdCBkcHVfY3J0Y19y ZXNwb29sICpycCwKLQkJc3RydWN0IGRwdV9jcnRjX3Jlc3Bvb2wgKmR1cF9ycCkKLXsKLQlzdHJ1 Y3QgZHB1X2NydGNfcmVzICpyZXMsICpkdXBfcmVzOwotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK LQotCWlmICghcnAgfHwgIWR1cF9ycCB8fCAhcnAtPnJwX2hlYWQpIHsKLQkJRFBVX0VSUk9SKCJp bnZhbGlkIHJlc291cmNlIHBvb2xcbiIpOwotCQlyZXR1cm47Ci0JfQotCi0JY3J0YyA9IF9kcHVf Y3J0Y19ycF90b19jcnRjKHJwKTsKLQlpZiAoIWNydGMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlk IGNydGNcbiIpOwotCQlyZXR1cm47Ci0JfQotCi0JRFBVX0RFQlVHKCJjcnRjJWQuJXUgZHVwbGlj YXRlXG4iLCBjcnRjLT5iYXNlLmlkLCBycC0+c2VxdWVuY2VfaWQpOwotCi0JbXV0ZXhfbG9jayhy cC0+cnBfbG9jayk7Ci0JZHVwX3JwLT5zZXF1ZW5jZV9pZCA9IHJwLT5zZXF1ZW5jZV9pZCArIDE7 Ci0JSU5JVF9MSVNUX0hFQUQoJmR1cF9ycC0+cmVzX2xpc3QpOwotCWR1cF9ycC0+b3BzID0gcnAt Pm9wczsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcywgJnJwLT5yZXNfbGlzdCwgbGlzdCkgewot CQlkdXBfcmVzID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGRwdV9jcnRjX3JlcyksIEdGUF9LRVJO RUwpOwotCQlpZiAoIWR1cF9yZXMpIHsKLQkJCW11dGV4X3VubG9jayhycC0+cnBfbG9jayk7Ci0J CQlyZXR1cm47Ci0JCX0KLQkJSU5JVF9MSVNUX0hFQUQoJmR1cF9yZXMtPmxpc3QpOwotCQlhdG9t aWNfc2V0KCZkdXBfcmVzLT5yZWZjb3VudCwgMCk7Ci0JCWR1cF9yZXMtPnR5cGUgPSByZXMtPnR5 cGU7Ci0JCWR1cF9yZXMtPnRhZyA9IHJlcy0+dGFnOwotCQlkdXBfcmVzLT52YWwgPSByZXMtPnZh bDsKLQkJZHVwX3Jlcy0+b3BzID0gcmVzLT5vcHM7Ci0JCWR1cF9yZXMtPmZsYWdzID0gRFBVX0NS VENfUkVTX0ZMQUdfRlJFRTsKLQkJRFBVX0RFQlVHKCJjcnRjJWQuJXUgZHVwIHJlczoweCV4LzB4 JWxseC8lcEsvJWRcbiIsCi0JCQkJY3J0Yy0+YmFzZS5pZCwgZHVwX3JwLT5zZXF1ZW5jZV9pZCwK LQkJCQlkdXBfcmVzLT50eXBlLCBkdXBfcmVzLT50YWcsIGR1cF9yZXMtPnZhbCwKLQkJCQlhdG9t aWNfcmVhZCgmZHVwX3Jlcy0+cmVmY291bnQpKTsKLQkJbGlzdF9hZGRfdGFpbCgmZHVwX3Jlcy0+ bGlzdCwgJmR1cF9ycC0+cmVzX2xpc3QpOwotCQlpZiAoZHVwX3Jlcy0+b3BzLmdldCkKLQkJCWR1 cF9yZXMtPm9wcy5nZXQoZHVwX3Jlcy0+dmFsLCAwLCAtMSk7Ci0JfQotCi0JZHVwX3JwLT5ycF9s b2NrID0gcnAtPnJwX2xvY2s7Ci0JZHVwX3JwLT5ycF9oZWFkID0gcnAtPnJwX2hlYWQ7Ci0JSU5J VF9MSVNUX0hFQUQoJmR1cF9ycC0+cnBfbGlzdCk7Ci0JbGlzdF9hZGRfdGFpbCgmZHVwX3JwLT5y cF9saXN0LCBycC0+cnBfaGVhZCk7Ci0JbXV0ZXhfdW5sb2NrKHJwLT5ycF9sb2NrKTsKLX0KLQot LyoqCi0gKiBfZHB1X2NydGNfcnBfcmVzZXQgLSByZXNldCByZXNvdXJjZSBwb29sIGFmdGVyIGFs bG9jYXRpb24KLSAqIEBycDogUG9pbnRlciB0byBvcmlnaW5hbCByZXNvdXJjZSBwb29sCi0gKiBA cnBfbG9jazogUG9pbnRlciB0byBzZXJpYWxpemF0aW9uIHJlc291cmNlIHBvb2wgbG9jawotICog QHJwX2hlYWQ6IFBvaW50ZXIgdG8gY3J0YyByZXNvdXJjZSBwb29sIGhlYWQKLSAqIHJldHVybjog Tm9uZQotICovCi1zdGF0aWMgdm9pZCBfZHB1X2NydGNfcnBfcmVzZXQoc3RydWN0IGRwdV9jcnRj X3Jlc3Bvb2wgKnJwLAotCQlzdHJ1Y3QgbXV0ZXggKnJwX2xvY2ssIHN0cnVjdCBsaXN0X2hlYWQg KnJwX2hlYWQpCi17Ci0JaWYgKCFycCB8fCAhcnBfbG9jayB8fCAhcnBfaGVhZCkgewotCQlEUFVf RVJST1IoImludmFsaWQgcmVzb3VyY2UgcG9vbFxuIik7Ci0JCXJldHVybjsKLQl9Ci0KLQltdXRl eF9sb2NrKHJwX2xvY2spOwotCXJwLT5ycF9sb2NrID0gcnBfbG9jazsKLQlycC0+cnBfaGVhZCA9 IHJwX2hlYWQ7Ci0JSU5JVF9MSVNUX0hFQUQoJnJwLT5ycF9saXN0KTsKLQlycC0+c2VxdWVuY2Vf aWQgPSAwOwotCUlOSVRfTElTVF9IRUFEKCZycC0+cmVzX2xpc3QpOwotCXJwLT5vcHMuZ2V0ID0g X2RwdV9jcnRjX2h3X2Jsa19nZXQ7Ci0JcnAtPm9wcy5wdXQgPSBfZHB1X2NydGNfaHdfYmxrX3B1 dDsKLQlsaXN0X2FkZF90YWlsKCZycC0+cnBfbGlzdCwgcnAtPnJwX2hlYWQpOwotCW11dGV4X3Vu bG9jayhycF9sb2NrKTsKLX0KLQotLyoqCi0gKiBfZHB1X2NydGNfcnBfYWRkX25vX2xvY2sgLSBh ZGQgZ2l2ZW4gcmVzb3VyY2UgdG8gcmVzb3VyY2UgcG9vbCB3aXRob3V0IGxvY2sKLSAqIEBycDog UG9pbnRlciB0byBvcmlnaW5hbCByZXNvdXJjZSBwb29sCi0gKiBAdHlwZTogUmVzb3VyY2UgdHlw ZQotICogQHRhZzogU2VhcmNoIHRhZyBmb3IgZ2l2ZW4gcmVzb3VyY2UKLSAqIEB2YWw6IFJlc291 cmNlIGhhbmRsZQotICogQG9wczogUmVzb3VyY2UgY2FsbGJhY2sgb3BlcmF0aW9ucwotICogcmV0 dXJuOiAwIGlmIHN1Y2Nlc3M7IGVycm9yIGNvZGUgb3RoZXJ3aXNlCi0gKi8KLXN0YXRpYyBpbnQg X2RwdV9jcnRjX3JwX2FkZF9ub19sb2NrKHN0cnVjdCBkcHVfY3J0Y19yZXNwb29sICpycCwgdTMy IHR5cGUsCi0JCXU2NCB0YWcsIHZvaWQgKnZhbCwgc3RydWN0IGRwdV9jcnRjX3Jlc19vcHMgKm9w cykKLXsKLQlzdHJ1Y3QgZHB1X2NydGNfcmVzICpyZXM7Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRj OwotCi0JaWYgKCFycCB8fCAhb3BzKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCByZXNvdXJjZSBw b29sL29wc1xuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCWNydGMgPSBfZHB1X2NydGNf cnBfdG9fY3J0YyhycCk7Ci0JaWYgKCFjcnRjKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBjcnRj XG4iKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShyZXMs ICZycC0+cmVzX2xpc3QsIGxpc3QpIHsKLQkJaWYgKHJlcy0+dHlwZSAhPSB0eXBlIHx8IHJlcy0+ dGFnICE9IHRhZykKLQkJCWNvbnRpbnVlOwotCQlEUFVfRVJST1IoImNydGMlZC4ldSBhbHJlYWR5 IGV4aXN0IHJlczoweCV4LzB4JWxseC8lcEsvJWRcbiIsCi0JCQkJY3J0Yy0+YmFzZS5pZCwgcnAt PnNlcXVlbmNlX2lkLAotCQkJCXJlcy0+dHlwZSwgcmVzLT50YWcsIHJlcy0+dmFsLAotCQkJCWF0 b21pY19yZWFkKCZyZXMtPnJlZmNvdW50KSk7Ci0JCXJldHVybiAtRUVYSVNUOwotCX0KLQlyZXMg PSBremFsbG9jKHNpemVvZihzdHJ1Y3QgZHB1X2NydGNfcmVzKSwgR0ZQX0tFUk5FTCk7Ci0JaWYg KCFyZXMpCi0JCXJldHVybiAtRU5PTUVNOwotCUlOSVRfTElTVF9IRUFEKCZyZXMtPmxpc3QpOwot CWF0b21pY19zZXQoJnJlcy0+cmVmY291bnQsIDEpOwotCXJlcy0+dHlwZSA9IHR5cGU7Ci0JcmVz LT50YWcgPSB0YWc7Ci0JcmVzLT52YWwgPSB2YWw7Ci0JcmVzLT5vcHMgPSAqb3BzOwotCWxpc3Rf YWRkX3RhaWwoJnJlcy0+bGlzdCwgJnJwLT5yZXNfbGlzdCk7Ci0JRFBVX0RFQlVHKCJjcnRjJWQu JXUgYWRkZWQgcmVzOjB4JXgvMHglbGx4XG4iLAotCQkJY3J0Yy0+YmFzZS5pZCwgcnAtPnNlcXVl bmNlX2lkLCB0eXBlLCB0YWcpOwotCXJldHVybiAwOwotfQotCi0vKioKLSAqIF9kcHVfY3J0Y19y cF9hZGQgLSBhZGQgZ2l2ZW4gcmVzb3VyY2UgdG8gcmVzb3VyY2UgcG9vbAotICogQHJwOiBQb2lu dGVyIHRvIG9yaWdpbmFsIHJlc291cmNlIHBvb2wKLSAqIEB0eXBlOiBSZXNvdXJjZSB0eXBlCi0g KiBAdGFnOiBTZWFyY2ggdGFnIGZvciBnaXZlbiByZXNvdXJjZQotICogQHZhbDogUmVzb3VyY2Ug aGFuZGxlCi0gKiBAb3BzOiBSZXNvdXJjZSBjYWxsYmFjayBvcGVyYXRpb25zCi0gKiByZXR1cm46 IDAgaWYgc3VjY2VzczsgZXJyb3IgY29kZSBvdGhlcndpc2UKLSAqLwotc3RhdGljIGludCBfZHB1 X2NydGNfcnBfYWRkKHN0cnVjdCBkcHVfY3J0Y19yZXNwb29sICpycCwgdTMyIHR5cGUsIHU2NCB0 YWcsCi0JCXZvaWQgKnZhbCwgc3RydWN0IGRwdV9jcnRjX3Jlc19vcHMgKm9wcykKLXsKLQlpbnQg cmM7Ci0KLQlpZiAoIXJwKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCByZXNvdXJjZSBwb29sXG4i KTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JbXV0ZXhfbG9jayhycC0+cnBfbG9jayk7Ci0J cmMgPSBfZHB1X2NydGNfcnBfYWRkX25vX2xvY2socnAsIHR5cGUsIHRhZywgdmFsLCBvcHMpOwot CW11dGV4X3VubG9jayhycC0+cnBfbG9jayk7Ci0JcmV0dXJuIHJjOwotfQotCi0vKioKLSAqIF9k cHVfY3J0Y19ycF9nZXQgLSBsb29rdXAgdGhlIHJlc291cmNlIGZyb20gZ2l2ZW4gcmVzb3VyY2Ug cG9vbCBhbmQgb2J0YWluCi0gKglpZiBhdmFpbGFibGU7IG90aGVyd2lzZSwgb2J0YWluIHJlc291 cmNlIGZyb20gZ2xvYmFsIHBvb2wKLSAqIEBycDogUG9pbnRlciB0byBvcmlnaW5hbCByZXNvdXJj ZSBwb29sCi0gKiBAdHlwZTogUmVzb3VyY2UgdHlwZQotICogQHRhZzogIFNlYXJjaCB0YWcgZm9y IGdpdmVuIHJlc291cmNlCi0gKiByZXR1cm46IFJlc291cmNlIGhhbmRsZSBpZiBzdWNjZXNzOyBw b2ludGVyIGVycm9yIG9yIG51bGwgb3RoZXJ3aXNlCi0gKi8KLXN0YXRpYyB2b2lkICpfZHB1X2Ny dGNfcnBfZ2V0KHN0cnVjdCBkcHVfY3J0Y19yZXNwb29sICpycCwgdTMyIHR5cGUsIHU2NCB0YWcp Ci17Ci0Jc3RydWN0IGRwdV9jcnRjX3Jlc3Bvb2wgKm9sZF9ycDsKLQlzdHJ1Y3QgZHB1X2NydGNf cmVzICpyZXM7Ci0Jdm9pZCAqdmFsID0gTlVMTDsKLQlpbnQgcmM7Ci0Jc3RydWN0IGRybV9jcnRj ICpjcnRjOwotCi0JaWYgKCFycCkgewotCQlEUFVfRVJST1IoImludmFsaWQgcmVzb3VyY2UgcG9v bFxuIik7Ci0JCXJldHVybiBOVUxMOwotCX0KLQotCWNydGMgPSBfZHB1X2NydGNfcnBfdG9fY3J0 YyhycCk7Ci0JaWYgKCFjcnRjKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBjcnRjXG4iKTsKLQkJ cmV0dXJuIE5VTEw7Ci0JfQotCi0JbXV0ZXhfbG9jayhycC0+cnBfbG9jayk7Ci0JbGlzdF9mb3Jf ZWFjaF9lbnRyeShyZXMsICZycC0+cmVzX2xpc3QsIGxpc3QpIHsKLQkJaWYgKHJlcy0+dHlwZSAh PSB0eXBlIHx8IHJlcy0+dGFnICE9IHRhZykKLQkJCWNvbnRpbnVlOwotCQlEUFVfREVCVUcoImNy dGMlZC4ldSBmb3VuZCByZXM6MHgleC8weCVsbHgvJXBLLyVkXG4iLAotCQkJCWNydGMtPmJhc2Uu aWQsIHJwLT5zZXF1ZW5jZV9pZCwKLQkJCQlyZXMtPnR5cGUsIHJlcy0+dGFnLCByZXMtPnZhbCwK LQkJCQlhdG9taWNfcmVhZCgmcmVzLT5yZWZjb3VudCkpOwotCQlhdG9taWNfaW5jKCZyZXMtPnJl ZmNvdW50KTsKLQkJcmVzLT5mbGFncyAmPSB+RFBVX0NSVENfUkVTX0ZMQUdfRlJFRTsKLQkJbXV0 ZXhfdW5sb2NrKHJwLT5ycF9sb2NrKTsKLQkJcmV0dXJuIHJlcy0+dmFsOwotCX0KLQlsaXN0X2Zv cl9lYWNoX2VudHJ5KHJlcywgJnJwLT5yZXNfbGlzdCwgbGlzdCkgewotCQlpZiAocmVzLT50eXBl ICE9IHR5cGUgfHwgIShyZXMtPmZsYWdzICYgRFBVX0NSVENfUkVTX0ZMQUdfRlJFRSkpCi0JCQlj b250aW51ZTsKLQkJRFBVX0RFQlVHKCJjcnRjJWQuJXUgcmV0YWcgcmVzOjB4JXgvMHglbGx4LyVw Sy8lZFxuIiwKLQkJCQljcnRjLT5iYXNlLmlkLCBycC0+c2VxdWVuY2VfaWQsCi0JCQkJcmVzLT50 eXBlLCByZXMtPnRhZywgcmVzLT52YWwsCi0JCQkJYXRvbWljX3JlYWQoJnJlcy0+cmVmY291bnQp KTsKLQkJYXRvbWljX2luYygmcmVzLT5yZWZjb3VudCk7Ci0JCXJlcy0+dGFnID0gdGFnOwotCQly ZXMtPmZsYWdzICY9IH5EUFVfQ1JUQ19SRVNfRkxBR19GUkVFOwotCQltdXRleF91bmxvY2socnAt PnJwX2xvY2spOwotCQlyZXR1cm4gcmVzLT52YWw7Ci0JfQotCS8qIG5vdCBpbiB0aGlzIHJwLCB0 cnkgdG8gZ3JhYiBmcm9tIGdsb2JhbCBwb29sICovCi0JaWYgKHJwLT5vcHMuZ2V0KQotCQl2YWwg PSBycC0+b3BzLmdldChOVUxMLCB0eXBlLCAtMSk7Ci0JaWYgKCFJU19FUlJfT1JfTlVMTCh2YWwp KQotCQlnb3RvIGFkZF9yZXM7Ci0JLyoKLQkgKiBTZWFyY2ggb2xkZXIgcmVzb3VyY2UgcG9vbHMg Zm9yIGh3IGJsayB3aXRoIG1hdGNoaW5nIHR5cGUsCi0JICogbmVjZXNzYXJ5IHdoZW4gcmVzb3Vy Y2UgaXMgYmVpbmcgdXNlZCBieSB0aGlzIG9iamVjdCwKLQkgKiBidXQgaW4gcHJldmlvdXMgc3Rh dGVzIG5vdCB5ZXQgY2xlYW5lZCB1cC4KLQkgKgotCSAqIFRoaXMgZW5hYmxlcyBzZWFyY2hpbmcg b2YgYWxsIHJlc291cmNlcyBjdXJyZW50bHkgb3duZWQKLQkgKiBieSB0aGlzIGNydGMgZXZlbiB0 aG91Z2ggdGhlIHJlc291cmNlIG1pZ2h0IG5vdCBiZSB1c2VkCi0JICogaW4gdGhlIGN1cnJlbnQg YXRvbWljIHN0YXRlLiBUaGlzIGFsbG93cyB0aG9zZSByZXNvdXJjZXMKLQkgKiB0byBiZSByZS1h Y3F1aXJlZCBieSB0aGUgbmV3IGF0b21pYyBzdGF0ZSBpbW1lZGlhdGVseQotCSAqIHdpdGhvdXQg d2FpdGluZyBmb3IgdGhlIHJlc291cmNlcyB0byBiZSBmdWxseSByZWxlYXNlZC4KLQkgKi8KLQll bHNlIGlmIChJU19FUlJfT1JfTlVMTCh2YWwpICYmICh0eXBlIDwgRFBVX0hXX0JMS19NQVgpKSB7 Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnkob2xkX3JwLCBycC0+cnBfaGVhZCwgcnBfbGlzdCkgewot CQkJaWYgKG9sZF9ycCA9PSBycCkKLQkJCQljb250aW51ZTsKLQotCQkJbGlzdF9mb3JfZWFjaF9l bnRyeShyZXMsICZvbGRfcnAtPnJlc19saXN0LCBsaXN0KSB7Ci0JCQkJaWYgKHJlcy0+dHlwZSAh PSB0eXBlKQotCQkJCQljb250aW51ZTsKLQkJCQlEUFVfREVCVUcoCi0JCQkJCSJjcnRjJWQuJXUg Zm91bmQgcmVzOjB4JXgvLyVwSy8gaW4gY3J0YyVkLiVkXG4iLAotCQkJCQkJY3J0Yy0+YmFzZS5p ZCwKLQkJCQkJCXJwLT5zZXF1ZW5jZV9pZCwKLQkJCQkJCXJlcy0+dHlwZSwgcmVzLT52YWwsCi0J CQkJCQljcnRjLT5iYXNlLmlkLAotCQkJCQkJb2xkX3JwLT5zZXF1ZW5jZV9pZCk7Ci0JCQkJRFBV X0VWVDMyX1ZFUkJPU0UoY3J0Yy0+YmFzZS5pZCwKLQkJCQkJCXJwLT5zZXF1ZW5jZV9pZCwKLQkJ CQkJCXJlcy0+dHlwZSwgcmVzLT52YWwsCi0JCQkJCQljcnRjLT5iYXNlLmlkLAotCQkJCQkJb2xk X3JwLT5zZXF1ZW5jZV9pZCk7Ci0JCQkJaWYgKHJlcy0+b3BzLmdldCkKLQkJCQkJcmVzLT5vcHMu Z2V0KHJlcy0+dmFsLCAwLCAtMSk7Ci0JCQkJdmFsID0gcmVzLT52YWw7Ci0JCQkJYnJlYWs7Ci0J CQl9Ci0KLQkJCWlmICghSVNfRVJSX09SX05VTEwodmFsKSkKLQkJCQlicmVhazsKLQkJfQotCX0K LQlpZiAoSVNfRVJSX09SX05VTEwodmFsKSkgewotCQlEUFVfREVCVUcoImNydGMlZC4ldSBmYWls ZWQgdG8gZ2V0IHJlczoweCV4Ly9cbiIsCi0JCQkJY3J0Yy0+YmFzZS5pZCwgcnAtPnNlcXVlbmNl X2lkLCB0eXBlKTsKLQkJbXV0ZXhfdW5sb2NrKHJwLT5ycF9sb2NrKTsKLQkJcmV0dXJuIE5VTEw7 Ci0JfQotYWRkX3JlczoKLQlyYyA9IF9kcHVfY3J0Y19ycF9hZGRfbm9fbG9jayhycCwgdHlwZSwg dGFnLCB2YWwsICZycC0+b3BzKTsKLQlpZiAocmMpIHsKLQkJRFBVX0VSUk9SKCJjcnRjJWQuJXUg ZmFpbGVkIHRvIGFkZCByZXM6MHgleC8weCVsbHhcbiIsCi0JCQkJY3J0Yy0+YmFzZS5pZCwgcnAt PnNlcXVlbmNlX2lkLCB0eXBlLCB0YWcpOwotCQlpZiAocnAtPm9wcy5wdXQpCi0JCQlycC0+b3Bz LnB1dCh2YWwpOwotCQl2YWwgPSBOVUxMOwotCX0KLQltdXRleF91bmxvY2socnAtPnJwX2xvY2sp OwotCXJldHVybiB2YWw7Ci19Ci0KLS8qKgotICogX2RwdV9jcnRjX3JwX3B1dCAtIHJldHVybiBn aXZlbiByZXNvdXJjZSB0byByZXNvdXJjZSBwb29sCi0gKiBAcnA6IFBvaW50ZXIgdG8gb3JpZ2lu YWwgcmVzb3VyY2UgcG9vbAotICogQHR5cGU6IFJlc291cmNlIHR5cGUKLSAqIEB0YWc6IFNlYXJj aCB0YWcgZm9yIGdpdmVuIHJlc291cmNlCi0gKiByZXR1cm46IE5vbmUKLSAqLwotc3RhdGljIHZv aWQgX2RwdV9jcnRjX3JwX3B1dChzdHJ1Y3QgZHB1X2NydGNfcmVzcG9vbCAqcnAsIHUzMiB0eXBl LCB1NjQgdGFnKQotewotCXN0cnVjdCBkcHVfY3J0Y19yZXMgKnJlcywgKm5leHQ7Ci0Jc3RydWN0 IGRybV9jcnRjICpjcnRjOwotCi0JaWYgKCFycCkgewotCQlEUFVfRVJST1IoImludmFsaWQgcmVz b3VyY2UgcG9vbFxuIik7Ci0JCXJldHVybjsKLQl9Ci0KLQljcnRjID0gX2RwdV9jcnRjX3JwX3Rv X2NydGMocnApOwotCWlmICghY3J0YykgewotCQlEUFVfRVJST1IoImludmFsaWQgY3J0Y1xuIik7 Ci0JCXJldHVybjsKLQl9Ci0KLQltdXRleF9sb2NrKHJwLT5ycF9sb2NrKTsKLQlsaXN0X2Zvcl9l YWNoX2VudHJ5X3NhZmUocmVzLCBuZXh0LCAmcnAtPnJlc19saXN0LCBsaXN0KSB7Ci0JCWlmIChy ZXMtPnR5cGUgIT0gdHlwZSB8fCByZXMtPnRhZyAhPSB0YWcpCi0JCQljb250aW51ZTsKLQkJRFBV X0RFQlVHKCJjcnRjJWQuJXUgZm91bmQgcmVzOjB4JXgvMHglbGx4LyVwSy8lZFxuIiwKLQkJCQlj cnRjLT5iYXNlLmlkLCBycC0+c2VxdWVuY2VfaWQsCi0JCQkJcmVzLT50eXBlLCByZXMtPnRhZywg cmVzLT52YWwsCi0JCQkJYXRvbWljX3JlYWQoJnJlcy0+cmVmY291bnQpKTsKLQkJaWYgKHJlcy0+ ZmxhZ3MgJiBEUFVfQ1JUQ19SRVNfRkxBR19GUkVFKQotCQkJRFBVX0VSUk9SKAotCQkJCSJjcnRj JWQuJXUgYWxyZWFkeSBmcmVlIHJlczoweCV4LzB4JWxseC8lcEsvJWRcbiIsCi0JCQkJCWNydGMt PmJhc2UuaWQsIHJwLT5zZXF1ZW5jZV9pZCwKLQkJCQkJcmVzLT50eXBlLCByZXMtPnRhZywgcmVz LT52YWwsCi0JCQkJCWF0b21pY19yZWFkKCZyZXMtPnJlZmNvdW50KSk7Ci0JCWVsc2UgaWYgKGF0 b21pY19kZWNfcmV0dXJuKCZyZXMtPnJlZmNvdW50KSA9PSAwKQotCQkJcmVzLT5mbGFncyB8PSBE UFVfQ1JUQ19SRVNfRkxBR19GUkVFOwotCi0JCW11dGV4X3VubG9jayhycC0+cnBfbG9jayk7Ci0J CXJldHVybjsKLQl9Ci0JRFBVX0VSUk9SKCJjcnRjJWQuJXUgbm90IGZvdW5kIHJlczoweCV4LzB4 JWxseFxuIiwKLQkJCWNydGMtPmJhc2UuaWQsIHJwLT5zZXF1ZW5jZV9pZCwgdHlwZSwgdGFnKTsK LQltdXRleF91bmxvY2socnAtPnJwX2xvY2spOwotfQotCi1pbnQgZHB1X2NydGNfcmVzX2FkZChz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlLCB1MzIgdHlwZSwgdTY0IHRhZywKLQkJdm9pZCAq dmFsLCBzdHJ1Y3QgZHB1X2NydGNfcmVzX29wcyAqb3BzKQotewotCXN0cnVjdCBkcHVfY3J0Y19y ZXNwb29sICpycDsKLQotCWlmICghc3RhdGUpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBhcmFt ZXRlcnNcbiIpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlycCA9ICZ0b19kcHVfY3J0Y19z dGF0ZShzdGF0ZSktPnJwOwotCXJldHVybiBfZHB1X2NydGNfcnBfYWRkKHJwLCB0eXBlLCB0YWcs IHZhbCwgb3BzKTsKLX0KLQotdm9pZCAqZHB1X2NydGNfcmVzX2dldChzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKnN0YXRlLCB1MzIgdHlwZSwgdTY0IHRhZykKLXsKLQlzdHJ1Y3QgZHB1X2NydGNfcmVz cG9vbCAqcnA7Ci0Jdm9pZCAqdmFsOwotCi0JaWYgKCFzdGF0ZSkgewotCQlEUFVfRVJST1IoImlu dmFsaWQgcGFyYW1ldGVyc1xuIik7Ci0JCXJldHVybiBOVUxMOwotCX0KLQotCXJwID0gJnRvX2Rw dV9jcnRjX3N0YXRlKHN0YXRlKS0+cnA7Ci0JdmFsID0gX2RwdV9jcnRjX3JwX2dldChycCwgdHlw ZSwgdGFnKTsKLQlpZiAoSVNfRVJSKHZhbCkpIHsKLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gZ2V0 IHJlcyB0eXBlOjB4JXg6MHglbGx4XG4iLAotCQkJCXR5cGUsIHRhZyk7Ci0JCXJldHVybiBOVUxM OwotCX0KLQotCXJldHVybiB2YWw7Ci19Ci0KLXZvaWQgZHB1X2NydGNfcmVzX3B1dChzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKnN0YXRlLCB1MzIgdHlwZSwgdTY0IHRhZykKLXsKLQlzdHJ1Y3QgZHB1 X2NydGNfcmVzcG9vbCAqcnA7Ci0KLQlpZiAoIXN0YXRlKSB7Ci0JCURQVV9FUlJPUigiaW52YWxp ZCBwYXJhbWV0ZXJzXG4iKTsKLQkJcmV0dXJuOwotCX0KLQotCXJwID0gJnRvX2RwdV9jcnRjX3N0 YXRlKHN0YXRlKS0+cnA7Ci0JX2RwdV9jcnRjX3JwX3B1dChycCwgdHlwZSwgdGFnKTsKLX0KLQog c3RhdGljIHZvaWQgX2RwdV9jcnRjX2RlaW5pdF9ldmVudHMoc3RydWN0IGRwdV9jcnRjICpkcHVf Y3J0YykKIHsKIAlpZiAoIWRwdV9jcnRjKQpAQCAtMTMyMiw4ICs4NTIsNiBAQCBzdGF0aWMgdm9p ZCBkcHVfY3J0Y19kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCURQVV9E RUJVRygiY3J0YyVkXG4iLCBjcnRjLT5iYXNlLmlkKTsKIAotCV9kcHVfY3J0Y19ycF9kZXN0cm95 KCZjc3RhdGUtPnJwKTsKLQogCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRl KHN0YXRlKTsKIAogCWtmcmVlKGNzdGF0ZSk7CkBAIC0xNTgzLDggKzExMTEsNiBAQCBzdGF0aWMg c3RydWN0IGRybV9jcnRjX3N0YXRlICpkcHVfY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRy bV9jcnRjICpjcnRjKQogCS8qIGR1cGxpY2F0ZSBiYXNlIGhlbHBlciAqLwogCV9fZHJtX2F0b21p Y19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUoY3J0YywgJmNzdGF0ZS0+YmFzZSk7CiAKLQlf ZHB1X2NydGNfcnBfZHVwbGljYXRlKCZvbGRfY3N0YXRlLT5ycCwgJmNzdGF0ZS0+cnApOwotCiAJ cmV0dXJuICZjc3RhdGUtPmJhc2U7CiB9CiAKQEAgLTE2MjEsOSArMTE0Nyw2IEBAIHN0YXRpYyB2 b2lkIGRwdV9jcnRjX3Jlc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJcmV0dXJuOwogCX0K IAotCV9kcHVfY3J0Y19ycF9yZXNldCgmY3N0YXRlLT5ycCwgJmRwdV9jcnRjLT5ycF9sb2NrLAot CQkJJmRwdV9jcnRjLT5ycF9oZWFkKTsKLQogCWNzdGF0ZS0+YmFzZS5jcnRjID0gY3J0YzsKIAlj cnRjLT5zdGF0ZSA9ICZjc3RhdGUtPmJhc2U7CiB9CkBAIC0yMDYyLDcgKzE1ODUsNiBAQCBzdGF0 aWMgaW50IGRwdV9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJfQog CiBlbmQ6Ci0JX2RwdV9jcnRjX3JwX2ZyZWVfdW51c2VkKCZjc3RhdGUtPnJwKTsKIAlyZXR1cm4g cmM7CiB9CiAKQEAgLTIzNDcsOCArMTg2OSw2IEBAIHN0YXRpYyBpbnQgZHB1X2NydGNfZGVidWdm c19zdGF0ZV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdikKIAlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMgPSAoc3RydWN0IGRybV9jcnRjICopIHMtPnByaXZhdGU7CiAJc3RydWN0IGRwdV9j cnRjICpkcHVfY3J0YyA9IHRvX2RwdV9jcnRjKGNydGMpOwogCXN0cnVjdCBkcHVfY3J0Y19zdGF0 ZSAqY3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwotCXN0cnVjdCBkcHVf Y3J0Y19yZXMgKnJlczsKLQlzdHJ1Y3QgZHB1X2NydGNfcmVzcG9vbCAqcnA7CiAJaW50IGk7CiAK IAlzZXFfcHJpbnRmKHMsICJudW1fY29ubmVjdG9yczogJWRcbiIsIGNzdGF0ZS0+bnVtX2Nvbm5l Y3RvcnMpOwpAQCAtMjM2NiwxNyArMTg4Niw2IEBAIHN0YXRpYyBpbnQgZHB1X2NydGNfZGVidWdm c19zdGF0ZV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdikKIAkJCQlkcHVfY3J0Yy0+ Y3VyX3BlcmYubWF4X3Blcl9waXBlX2liW2ldKTsKIAl9CiAKLQltdXRleF9sb2NrKCZkcHVfY3J0 Yy0+cnBfbG9jayk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShycCwgJmRwdV9jcnRjLT5ycF9oZWFk LCBycF9saXN0KSB7Ci0JCXNlcV9wcmludGYocywgInJwLiVkOiAiLCBycC0+c2VxdWVuY2VfaWQp OwotCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcywgJnJwLT5yZXNfbGlzdCwgbGlzdCkKLQkJCXNl cV9wcmludGYocywgIjB4JXgvMHglbGx4LyVwSy8lZCAiLAotCQkJCQlyZXMtPnR5cGUsIHJlcy0+ dGFnLCByZXMtPnZhbCwKLQkJCQkJYXRvbWljX3JlYWQoJnJlcy0+cmVmY291bnQpKTsKLQkJc2Vx X3B1dHMocywgIlxuIik7Ci0JfQotCW11dGV4X3VubG9jaygmZHB1X2NydGMtPnJwX2xvY2spOwot CiAJcmV0dXJuIDA7CiB9CiBERUZJTkVfRFBVX0RFQlVHRlNfU0VRX0ZPUFMoZHB1X2NydGNfZGVi dWdmc19zdGF0ZSk7CkBAIC0yNTg4LDkgKzIwOTcsNiBAQCBzdHJ1Y3QgZHJtX2NydGMgKmRwdV9j cnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUp CiAJc3Bpbl9sb2NrX2luaXQoJmRwdV9jcnRjLT5zcGluX2xvY2spOwogCWF0b21pY19zZXQoJmRw dV9jcnRjLT5mcmFtZV9wZW5kaW5nLCAwKTsKIAotCW11dGV4X2luaXQoJmRwdV9jcnRjLT5ycF9s b2NrKTsKLQlJTklUX0xJU1RfSEVBRCgmZHB1X2NydGMtPnJwX2hlYWQpOwotCiAJaW5pdF9jb21w bGV0aW9uKCZkcHVfY3J0Yy0+ZnJhbWVfZG9uZV9jb21wKTsKIAogCUlOSVRfTElTVF9IRUFEKCZk cHVfY3J0Yy0+ZnJhbWVfZXZlbnRfbGlzdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2NydGMuaAppbmRleCAwOTllNThiLi45ODg5YjU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9jcnRjLmgKQEAgLTIzNSw2NSArMjM1LDEyIEBAIHN0cnVjdCBkcHVfY3J0 YyB7CiAKIAlzdHJ1Y3QgZHB1X2NvcmVfcGVyZl9wYXJhbXMgY3VyX3BlcmY7CiAKLQlzdHJ1Y3Qg bXV0ZXggcnBfbG9jazsKLQlzdHJ1Y3QgbGlzdF9oZWFkIHJwX2hlYWQ7Ci0KIAlzdHJ1Y3QgZHB1 X2NydGNfc21tdV9zdGF0ZV9kYXRhIHNtbXVfc3RhdGU7CiB9OwogCiAjZGVmaW5lIHRvX2RwdV9j cnRjKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgZHB1X2NydGMsIGJhc2UpCiAKIC8qKgotICog c3RydWN0IGRwdV9jcnRjX3Jlc19vcHMgLSBjb21tb24gb3BlcmF0aW9ucyBmb3IgY3J0YyByZXNv dXJjZXMKLSAqIEBnZXQ6IGdldCBnaXZlbiByZXNvdXJjZQotICogQHB1dDogcHV0IGdpdmVuIHJl c291cmNlCi0gKi8KLXN0cnVjdCBkcHVfY3J0Y19yZXNfb3BzIHsKLQl2b2lkICooKmdldCkodm9p ZCAqdmFsLCB1MzIgdHlwZSwgdTY0IHRhZyk7Ci0Jdm9pZCAoKnB1dCkodm9pZCAqdmFsKTsKLX07 Ci0KLSNkZWZpbmUgRFBVX0NSVENfUkVTX0ZMQUdfRlJFRQkJQklUKDApCi0KLS8qKgotICogc3Ry dWN0IGRwdV9jcnRjX3JlcyAtIGRlZmluaXRpb24gb2YgY3J0YyByZXNvdXJjZXMKLSAqIEBsaXN0 OiBsaXN0IG9mIGNydGMgcmVzb3VyY2UKLSAqIEB0eXBlOiBjcnRjIHJlc291cmNlIHR5cGUKLSAq IEB0YWc6IHVuaXF1ZSBpZGVudGlmaWVyIHBlciB0eXBlCi0gKiBAcmVmY291bnQ6IHJlZmVyZW5j ZS91c2FnZSBjb3VudAotICogQG9wczogY2FsbGJhY2sgb3BlcmF0aW9ucwotICogQHZhbDogcmVz b3VyY2UgaGFuZGxlIGFzc29jaWF0ZWQgd2l0aCB0eXBlL3RhZwotICogQGZsYWdzOiBjdXN0b21p emF0aW9uIGZsYWdzCi0gKi8KLXN0cnVjdCBkcHVfY3J0Y19yZXMgewotCXN0cnVjdCBsaXN0X2hl YWQgbGlzdDsKLQl1MzIgdHlwZTsKLQl1NjQgdGFnOwotCWF0b21pY190IHJlZmNvdW50OwotCXN0 cnVjdCBkcHVfY3J0Y19yZXNfb3BzIG9wczsKLQl2b2lkICp2YWw7Ci0JdTMyIGZsYWdzOwotfTsK LQotLyoqCi0gKiBkcHVfY3J0Y19yZXNwb29sIC0gY3J0YyByZXNvdXJjZSBwb29sCi0gKiBAcnBf bG9jazogcG9pbnRlciB0byBzZXJpYWxpemF0aW9uIGxvY2sKLSAqIEBycF9oZWFkOiBwb2ludGVy IHRvIGhlYWQgb2YgYWN0aXZlIHJlc291cmNlIHBvb2xzIG9mIHRoaXMgY3J0YwotICogQHJwX2xp c3Q6IGxpc3Qgb2YgY3J0YyByZXNvdXJjZSBwb29sCi0gKiBAc2VxdWVuY2VfaWQ6IHNlcXVlbmNl IGlkZW50aWZpZXIsIGluY3JlbWVudGVkIHBlciBzdGF0ZSBkdXBsaWNhdGlvbgotICogQHJlc19s aXN0OiBsaXN0IG9mIHJlc291cmNlIG1hbmFnZWQgYnkgdGhpcyByZXNvdXJjZSBwb29sCi0gKiBA b3BzOiByZXNvdXJjZSBvcGVyYXRpb25zIGZvciBwYXJlbnQgcmVzb3VyY2UgcG9vbAotICovCi1z dHJ1Y3QgZHB1X2NydGNfcmVzcG9vbCB7Ci0Jc3RydWN0IG11dGV4ICpycF9sb2NrOwotCXN0cnVj dCBsaXN0X2hlYWQgKnJwX2hlYWQ7Ci0Jc3RydWN0IGxpc3RfaGVhZCBycF9saXN0OwotCXUzMiBz ZXF1ZW5jZV9pZDsKLQlzdHJ1Y3QgbGlzdF9oZWFkIHJlc19saXN0OwotCXN0cnVjdCBkcHVfY3J0 Y19yZXNfb3BzIG9wczsKLX07Ci0KLS8qKgogICogc3RydWN0IGRwdV9jcnRjX3N0YXRlIC0gZHB1 IGNvbnRhaW5lciBmb3IgYXRvbWljIGNydGMgc3RhdGUKICAqIEBiYXNlOiBCYXNlIGRybSBjcnRj IHN0YXRlIHN0cnVjdHVyZQogICogQGNvbm5lY3RvcnMgICAgOiBDdXJyZW50bHkgYXNzb2NpYXRl ZCBkcm0gY29ubmVjdG9ycwpAQCAtMzIyLDcgKzI2OSw2IEBAIHN0cnVjdCBkcHVfY3J0Y19zdGF0 ZSB7CiAJdWludDY0X3QgaW5wdXRfZmVuY2VfdGltZW91dF9uczsKIAogCXN0cnVjdCBkcHVfY29y ZV9wZXJmX3BhcmFtcyBuZXdfcGVyZjsKLQlzdHJ1Y3QgZHB1X2NydGNfcmVzcG9vbCBycDsKIH07 CiAKICNkZWZpbmUgdG9fZHB1X2NydGNfc3RhdGUoeCkgXApAQCAtNDYxLDM0ICs0MDcsNCBAQCBz dGF0aWMgaW5saW5lIGJvb2wgZHB1X2NydGNfaXNfZW5hYmxlZChzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCiBpbnQgZHB1X2NydGNfZXZlbnRfcXVldWUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQl2 b2lkICgqZnVuYykoc3RydWN0IGRybV9jcnRjICpjcnRjLCB2b2lkICp1c3IpLCB2b2lkICp1c3Ip OwogCi0vKioKLSAqIGRwdV9jcnRjX3Jlc19hZGQgLSBhZGQgZ2l2ZW4gcmVzb3VyY2UgdG8gcmVz b3VyY2UgcG9vbCBpbiBjcnRjIHN0YXRlCi0gKiBAc3RhdGU6IFBvaW50ZXIgdG8gZHJtIGNydGMg c3RhdGUKLSAqIEB0eXBlOiBSZXNvdXJjZSB0eXBlCi0gKiBAdGFnOiBTZWFyY2ggdGFnIGZvciBn aXZlbiByZXNvdXJjZQotICogQHZhbDogUmVzb3VyY2UgaGFuZGxlCi0gKiBAb3BzOiBSZXNvdXJj ZSBjYWxsYmFjayBvcGVyYXRpb25zCi0gKiByZXR1cm46IDAgaWYgc3VjY2VzczsgZXJyb3IgY29k ZSBvdGhlcndpc2UKLSAqLwotaW50IGRwdV9jcnRjX3Jlc19hZGQoc3RydWN0IGRybV9jcnRjX3N0 YXRlICpzdGF0ZSwgdTMyIHR5cGUsIHU2NCB0YWcsCi0JCXZvaWQgKnZhbCwgc3RydWN0IGRwdV9j cnRjX3Jlc19vcHMgKm9wcyk7Ci0KLS8qKgotICogZHB1X2NydGNfcmVzX2dldCAtIGdldCBnaXZl biByZXNvdXJjZSBmcm9tIHJlc291cmNlIHBvb2wgaW4gY3J0YyBzdGF0ZQotICogQHN0YXRlOiBQ b2ludGVyIHRvIGRybSBjcnRjIHN0YXRlCi0gKiBAdHlwZTogUmVzb3VyY2UgdHlwZQotICogQHRh ZzogU2VhcmNoIHRhZyBmb3IgZ2l2ZW4gcmVzb3VyY2UKLSAqIHJldHVybjogUmVzb3VyY2UgaGFu ZGxlIGlmIHN1Y2Nlc3M7IHBvaW50ZXIgZXJyb3Igb3IgbnVsbCBvdGhlcndpc2UKLSAqLwotdm9p ZCAqZHB1X2NydGNfcmVzX2dldChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlLCB1MzIgdHlw ZSwgdTY0IHRhZyk7Ci0KLS8qKgotICogZHB1X2NydGNfcmVzX3B1dCAtIHJldHVybiBnaXZlbiBy ZXNvdXJjZSB0byByZXNvdXJjZSBwb29sIGluIGNydGMgc3RhdGUKLSAqIEBzdGF0ZTogUG9pbnRl ciB0byBkcm0gY3J0YyBzdGF0ZQotICogQHR5cGU6IFJlc291cmNlIHR5cGUKLSAqIEB0YWc6IFNl YXJjaCB0YWcgZm9yIGdpdmVuIHJlc291cmNlCi0gKiByZXR1cm46IE5vbmUKLSAqLwotdm9pZCBk cHVfY3J0Y19yZXNfcHV0KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUsIHUzMiB0eXBlLCB1 NjQgdGFnKTsKLQogI2VuZGlmIC8qIF9EUFVfQ1JUQ19IXyAqLwotLSAKVGhlIFF1YWxjb21tIElu bm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1 bSwKYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlz dApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==