From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rajesh Yadav Subject: [DPU PATCH v3 07/12] drm/msm/dpu: remove clock management code from dpu_power_handle Date: Mon, 14 May 2018 20:56:54 +0530 Message-ID: <1526311619-3309-8-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 TURTUyBhbmQgZHB1IGRyaXZlcnMgbWFuYWdlIHRoZWlyIHJlc3BlY3RpdmUgY2xvY2tzIHZpYQpy dW50aW1lX3BtLiBSZW1vdmUgY3VzdG9tIGNsb2NrIG1hbmFnZW1lbnQgY29kZSBmcm9tCmRwdV9w b3dlcl9oYW5kbGUuCgpBbHNvIGRwdSBjb3JlIGNsb2NrIG1hbmFnZW1lbnQgY29kZSBpcyByZXN0 cmljdGVkIHRvCmRwdV9jb3JlX3BlcmYgbW9kdWxlLgoKQ2hhbmdlcyBpbiB2MzoKCS0gbm9uZQoK Q2hhbmdlcyBpbiB2MjoKCS0gcmVtb3ZlIGxvY2FsIHZhcmlhYmxlIHRvIGhvbGQgYW5kIHJldHVy biBlcnJvciBjb2RlCgkgIGluIF9kcHVfY29yZV9wZXJmX3NldF9jb3JlX2Nsa19yYXRlKCkgaW5z dGVhZCByZXR1cm4KCSAgcmV0Y29kZSBkaXJlY3RseSBmcm9tIG1zbV9kc3NfY2xrX3NldF9yYXRl KCkgY2FsbCAoU2VhbiBQYXVsKQoJLSBkcHVfY29yZV9wZXJmX2luaXQoKSBpcyBjYWxsZWQgZnJv bSBkcHVfa21zX2h3X2luaXQoKSBhbmQKCSAgbW9zdCBvZiB0aGUgcGFyYW1zIHBhc3NlZCBhcmUg YWxyZWFkeSB2YWxpZGF0ZWQgc28gcmVtb3ZlCgkgIHJlZHVuZGFudCBjaGVja3MgZnJvbSBkcHVf Y29yZV9wZXJmX2luaXQoKSAoU2VhbiBQYXVsKQoJLSByZXR1cm4gJm1wLT5jbGtfY29uZmlnW2ld IGRpcmVjdGx5IHRvIGF2b2lkIGxvY2FsIHZhcmlhYmxlCgkgIGluIF9kcHVfa21zX2dldF9jbGso KSAoU2VhbiBQYXVsKQoJLSBpbnZlcnQgY29uZGl0aW9uYWwgY2hlY2sgdG8gZWxpbWluYXRlIGxv Y2FsIHJhdGUgdmFyaWFibGUKCSAgZnJvbSBkcHVfa21zX2dldF9jbGtfcmF0ZSgpIChTZWFuIFBh dWwpCgktIHJlbW92ZSBlbmQgbGFiZWwgZnJvbSBkcHVfcG93ZXJfcmVzb3VyY2VfaW5pdCgpIGFu ZCByZXR1cm4KCSAgZGlyZWN0bHkgb24gZHB1X3Bvd2VyX3BhcnNlX2R0X3N1cHBseSgpIGZhaWx1 cmUgYXMgbm8gY2xlYW51cAoJICBpcyBuZWVkZWQgKFNlYW4gUGF1bCkKCS0gcmVtb3ZlIGNoZWNr cyBmb3IgdnRvdGFsIGFuZCB2cmVmcmVzaCBmcm9tCiAJICBkcHVfZW5jb2Rlcl9waHlzX2NtZF90 ZWFyY2hlY2tfY29uZmlnKCkgYXMgdGhleSBzaG91bGQgYmUKCSAgdmFsaWQgaW4gbW9kZV9zZXQg Y2FsbCAoU2VhbiBQYXVsKQoKU2lnbmVkLW9mZi1ieTogUmFqZXNoIFlhZGF2IDxyeWFkYXZAY29k ZWF1cm9yYS5vcmc+ClJldmlld2VkLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9y Zz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmMgICAg ICB8ICA0MSArKy0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVy Zi5oICAgICAgfCAgIDggKy0KIC4uLi9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJf cGh5c19jbWQuYyAgIHwgICA5ICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf a21zLmMgICAgICAgICAgICB8ICAyOCArKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9rbXMuaCAgICAgICAgICAgIHwgICA5ICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vZHB1X3Bv d2VyX2hhbmRsZS5jICAgICAgICAgICAgIHwgMTk2ICstLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL21zbS9kcHVfcG93ZXJfaGFuZGxlLmggICAgICAgICAgICAgfCAgNDAgLS0t LS0KIDcgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMjY4IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX3BlcmYu YyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX3BlcmYuYwppbmRleCA5 ODFmNzdmLi41Yjc5MDc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfY29yZV9wZXJmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2NvcmVfcGVyZi5jCkBAIC0zNjUsNiArMzY1LDE3IEBAIHZvaWQgZHB1X2NvcmVfcGVyZl9jcnRj X3JlbGVhc2VfYncoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCX0KIH0KIAorc3RhdGljIGludCBf ZHB1X2NvcmVfcGVyZl9zZXRfY29yZV9jbGtfcmF0ZShzdHJ1Y3QgZHB1X2ttcyAqa21zLCB1NjQg cmF0ZSkKK3sKKwlzdHJ1Y3QgZHNzX2NsayAqY29yZV9jbGsgPSBrbXMtPnBlcmYuY29yZV9jbGs7 CisKKwlpZiAoY29yZV9jbGstPm1heF9yYXRlICYmIChyYXRlID4gY29yZV9jbGstPm1heF9yYXRl KSkKKwkJcmF0ZSA9IGNvcmVfY2xrLT5tYXhfcmF0ZTsKKworCWNvcmVfY2xrLT5yYXRlID0gcmF0 ZTsKKwlyZXR1cm4gbXNtX2Rzc19jbGtfc2V0X3JhdGUoY29yZV9jbGssIDEpOworfQorCiBzdGF0 aWMgdTY0IF9kcHVfY29yZV9wZXJmX2dldF9jb3JlX2Nsa19yYXRlKHN0cnVjdCBkcHVfa21zICpr bXMpCiB7CiAJdTY0IGNsa19yYXRlID0ga21zLT5wZXJmLnBlcmZfdHVuZS5taW5fY29yZV9jbGs7 CkBAIC0zNzYsNyArMzg3LDggQEAgc3RhdGljIHU2NCBfZHB1X2NvcmVfcGVyZl9nZXRfY29yZV9j bGtfcmF0ZShzdHJ1Y3QgZHB1X2ttcyAqa21zKQogCQkJZHB1X2NzdGF0ZSA9IHRvX2RwdV9jcnRj X3N0YXRlKGNydGMtPnN0YXRlKTsKIAkJCWNsa19yYXRlID0gbWF4KGRwdV9jc3RhdGUtPm5ld19w ZXJmLmNvcmVfY2xrX3JhdGUsCiAJCQkJCQkJY2xrX3JhdGUpOwotCQkJY2xrX3JhdGUgPSBjbGtf cm91bmRfcmF0ZShrbXMtPnBlcmYuY29yZV9jbGssIGNsa19yYXRlKTsKKwkJCWNsa19yYXRlID0g Y2xrX3JvdW5kX3JhdGUoa21zLT5wZXJmLmNvcmVfY2xrLT5jbGssCisJCQkJCWNsa19yYXRlKTsK IAkJfQogCX0KIApAQCAtNDg0LDE1ICs0OTYsMTEgQEAgdm9pZCBkcHVfY29yZV9wZXJmX2NydGNf dXBkYXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCQlEUFVfRVZUMzIoa21zLT5kZXYsIHN0 b3BfcmVxLCBjbGtfcmF0ZSk7CiAKLQkJLyogVGVtcCBjaGFuZ2UgdG8gYXZvaWQgY3Jhc2ggaW4g Y2xrX3NldF9yYXRlIEFQSS4gKi8KLSNpZmRlZiBRQ09NX0RQVV9TRVRfQ0xLCi0JCWlmIChkcHVf cG93ZXJfY2xrX3NldF9yYXRlKCZwcml2LT5waGFuZGxlLAotCQkJCQkgICBrbXMtPnBlcmYuY2xr X25hbWUsIGNsa19yYXRlKSkgeworCQlpZiAoX2RwdV9jb3JlX3BlcmZfc2V0X2NvcmVfY2xrX3Jh dGUoa21zLCBjbGtfcmF0ZSkpIHsKIAkJCURQVV9FUlJPUigiZmFpbGVkIHRvIHNldCAlcyBjbG9j ayByYXRlICVsbHVcbiIsCi0JCQkJCWttcy0+cGVyZi5jbGtfbmFtZSwgY2xrX3JhdGUpOworCQkJ CQlrbXMtPnBlcmYuY29yZV9jbGstPmNsa19uYW1lLCBjbGtfcmF0ZSk7CiAJCQlyZXR1cm47CiAJ CX0KLSNlbmRpZgogCiAJCWttcy0+cGVyZi5jb3JlX2Nsa19yYXRlID0gY2xrX3JhdGU7CiAJCURQ VV9ERUJVRygidXBkYXRlIGNsayByYXRlID0gJWxsZCBIWlxuIiwgY2xrX3JhdGUpOwpAQCAtNjU2 LDcgKzY2NCw2IEBAIHZvaWQgZHB1X2NvcmVfcGVyZl9kZXN0cm95KHN0cnVjdCBkcHVfY29yZV9w ZXJmICpwZXJmKQogCWRwdV9jb3JlX3BlcmZfZGVidWdmc19kZXN0cm95KHBlcmYpOwogCXBlcmYt Pm1heF9jb3JlX2Nsa19yYXRlID0gMDsKIAlwZXJmLT5jb3JlX2NsayA9IE5VTEw7Ci0JcGVyZi0+ Y2xrX25hbWUgPSBOVUxMOwogCXBlcmYtPnBoYW5kbGUgPSBOVUxMOwogCXBlcmYtPmNhdGFsb2cg PSBOVUxMOwogCXBlcmYtPmRldiA9IE5VTEw7CkBAIC02NjcsOSArNjc0LDkgQEAgaW50IGRwdV9j b3JlX3BlcmZfaW5pdChzdHJ1Y3QgZHB1X2NvcmVfcGVyZiAqcGVyZiwKIAkJc3RydWN0IGRwdV9t ZHNzX2NmZyAqY2F0YWxvZywKIAkJc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5kbGUsCiAJ CXN0cnVjdCBkcHVfcG93ZXJfY2xpZW50ICpwY2xpZW50LAotCQljaGFyICpjbGtfbmFtZSkKKwkJ c3RydWN0IGRzc19jbGsgKmNvcmVfY2xrKQogewotCWlmICghcGVyZiB8fCAhZGV2IHx8ICFjYXRh bG9nIHx8ICFwaGFuZGxlIHx8ICFwY2xpZW50IHx8ICFjbGtfbmFtZSkgeworCWlmICghcGNsaWVu dCkgewogCQlEUFVfRVJST1IoImludmFsaWQgcGFyYW1ldGVyc1xuIik7CiAJCXJldHVybiAtRUlO VkFMOwogCX0KQEAgLTY3OCwyMyArNjg1LDEzIEBAIGludCBkcHVfY29yZV9wZXJmX2luaXQoc3Ry dWN0IGRwdV9jb3JlX3BlcmYgKnBlcmYsCiAJcGVyZi0+Y2F0YWxvZyA9IGNhdGFsb2c7CiAJcGVy Zi0+cGhhbmRsZSA9IHBoYW5kbGU7CiAJcGVyZi0+cGNsaWVudCA9IHBjbGllbnQ7Ci0JcGVyZi0+ Y2xrX25hbWUgPSBjbGtfbmFtZTsKLQotCXBlcmYtPmNvcmVfY2xrID0gZHB1X3Bvd2VyX2Nsa19n ZXRfY2xrKHBoYW5kbGUsIGNsa19uYW1lKTsKLQlpZiAoIXBlcmYtPmNvcmVfY2xrKSB7Ci0JCURQ VV9FUlJPUigiaW52YWxpZCBjb3JlIGNsa1xuIik7Ci0JCWdvdG8gZXJyOwotCX0KKwlwZXJmLT5j b3JlX2NsayA9IGNvcmVfY2xrOwogCi0JcGVyZi0+bWF4X2NvcmVfY2xrX3JhdGUgPSBkcHVfcG93 ZXJfY2xrX2dldF9tYXhfcmF0ZShwaGFuZGxlLCBjbGtfbmFtZSk7CisJcGVyZi0+bWF4X2NvcmVf Y2xrX3JhdGUgPSBjb3JlX2Nsay0+bWF4X3JhdGU7CiAJaWYgKCFwZXJmLT5tYXhfY29yZV9jbGtf cmF0ZSkgewogCQlEUFVfREVCVUcoIm9wdGlvbmFsIG1heCBjb3JlIGNsayByYXRlLCB1c2UgZGVm YXVsdFxuIik7CiAJCXBlcmYtPm1heF9jb3JlX2Nsa19yYXRlID0gRFBVX1BFUkZfREVGQVVMVF9N QVhfQ09SRV9DTEtfUkFURTsKIAl9CiAKIAlyZXR1cm4gMDsKLQotZXJyOgotCWRwdV9jb3JlX3Bl cmZfZGVzdHJveShwZXJmKTsKLQlyZXR1cm4gLUVOT0RFVjsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX3BlcmYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX3BlcmYuaAppbmRleCBmZTRkOGVhLi4wMTViNWYwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5oCkBAIC01 NCw3ICs1NCw2IEBAIHN0cnVjdCBkcHVfY29yZV9wZXJmX3R1bmUgewogICogQGNhdGFsb2c6IFBv aW50ZXIgdG8gY2F0YWxvZyBjb25maWd1cmF0aW9uCiAgKiBAcGhhbmRsZTogUG9pbnRlciB0byBw b3dlciBoYW5kbGVyCiAgKiBAcGNsaWVudDogUG9pbnRlciB0byBwb3dlciBjbGllbnQKLSAqIEBj bGtfbmFtZTogY29yZSBjbG9jayBuYW1lCiAgKiBAY29yZV9jbGs6IFBvaW50ZXIgdG8gY29yZSBj bG9jayBzdHJ1Y3R1cmUKICAqIEBjb3JlX2Nsa19yYXRlOiBjdXJyZW50IGNvcmUgY2xvY2sgcmF0 ZQogICogQG1heF9jb3JlX2Nsa19yYXRlOiBtYXhpbXVtIGFsbG93YWJsZSBjb3JlIGNsb2NrIHJh dGUKQEAgLTcwLDggKzY5LDcgQEAgc3RydWN0IGRwdV9jb3JlX3BlcmYgewogCXN0cnVjdCBkcHVf bWRzc19jZmcgKmNhdGFsb2c7CiAJc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5kbGU7CiAJ c3RydWN0IGRwdV9wb3dlcl9jbGllbnQgKnBjbGllbnQ7Ci0JY2hhciAqY2xrX25hbWU7Ci0Jc3Ry dWN0IGNsayAqY29yZV9jbGs7CisJc3RydWN0IGRzc19jbGsgKmNvcmVfY2xrOwogCXU2NCBjb3Jl X2Nsa19yYXRlOwogCXU2NCBtYXhfY29yZV9jbGtfcmF0ZTsKIAlzdHJ1Y3QgZHB1X2NvcmVfcGVy Zl90dW5lIHBlcmZfdHVuZTsKQEAgLTExOCwxNCArMTE2LDE0IEBAIHZvaWQgZHB1X2NvcmVfcGVy Zl9jcnRjX3VwZGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAgKiBAY2F0YWxvZzogUG9pbnRl ciB0byBjYXRhbG9nCiAgKiBAcGhhbmRsZTogUG9pbnRlciB0byBwb3dlciBoYW5kbGUKICAqIEBw Y2xpZW50OiBQb2ludGVyIHRvIHBvd2VyIGNsaWVudAotICogQGNsa19uYW1lOiBjb3JlIGNsb2Nr IG5hbWUKKyAqIEBjb3JlX2NsazogcG9pbnRlciB0byBjb3JlIGNsb2NrCiAgKi8KIGludCBkcHVf Y29yZV9wZXJmX2luaXQoc3RydWN0IGRwdV9jb3JlX3BlcmYgKnBlcmYsCiAJCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJCXN0cnVjdCBkcHVfbWRzc19jZmcgKmNhdGFsb2csCiAJCXN0cnVjdCBk cHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLAogCQlzdHJ1Y3QgZHB1X3Bvd2VyX2NsaWVudCAqcGNs aWVudCwKLQkJY2hhciAqY2xrX25hbWUpOworCQlzdHJ1Y3QgZHNzX2NsayAqY29yZV9jbGspOwog CiAvKioKICAqIGRwdV9jb3JlX3BlcmZfZGVidWdmc19pbml0IC0gaW5pdGlhbGl6ZSBkZWJ1Z2Zz IGZvciBjb3JlIHBlcmZvcm1hbmNlIGNvbnRleHQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jCmluZGV4IDA3MjkzOWMuLjM4OGRl MzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVy X3BoeXNfY21kLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29k ZXJfcGh5c19jbWQuYwpAQCAtNDI4LDExICs0MjgsMTAgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29k ZXJfcGh5c19jbWRfdGVhcmNoZWNrX2NvbmZpZygKIAkgKiB2c3luY19jb3VudCBpcyByYXRpbyBv ZiBNRFAgVlNZTkMgY2xvY2sgZnJlcXVlbmN5IHRvIExDRCBwYW5lbAogCSAqIGZyZXF1ZW5jeSBk aXZpZGVkIGJ5IHRoZSBuby4gb2Ygcm93cyAobGluZXMpIGluIHRoZSBMQ0RwYW5lbC4KIAkgKi8K LQl2c3luY19oeiA9IGRwdV9wb3dlcl9jbGtfZ2V0X3JhdGUoJnByaXYtPnBoYW5kbGUsICJ2c3lu Y19jbGsiKTsKLQlpZiAoIXZzeW5jX2h6IHx8ICFtb2RlLT52dG90YWwgfHwgIW1vZGUtPnZyZWZy ZXNoKSB7Ci0JCURQVV9ERUJVR19DTURFTkMoY21kX2VuYywKLQkJCSJpbnZhbGlkIHBhcmFtcyAt IHZzeW5jX2h6ICV1IHZ0b3QgJXUgdnJlZnJlc2ggJXVcbiIsCi0JCQl2c3luY19oeiwgbW9kZS0+ dnRvdGFsLCBtb2RlLT52cmVmcmVzaCk7CisJdnN5bmNfaHogPSBkcHVfa21zX2dldF9jbGtfcmF0 ZShkcHVfa21zLCAidnN5bmNfY2xrIik7CisJaWYgKHZzeW5jX2h6IDw9IDApIHsKKwkJRFBVX0RF QlVHX0NNREVOQyhjbWRfZW5jLCAiaW52YWxpZCAtIHZzeW5jX2h6ICV1XG4iLAorCQkJCSB2c3lu Y19oeik7CiAJCXJldHVybjsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9r bXMuYwppbmRleCBjZGE0ZDEyLi4zNDliZGE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2ttcy5jCkBAIC0xNDk5LDYgKzE0OTksMzEgQEAgc3RhdGljIGludCBfZHB1X2ttc19t bXVfaW5pdChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0 aWMgc3RydWN0IGRzc19jbGsgKl9kcHVfa21zX2dldF9jbGsoc3RydWN0IGRwdV9rbXMgKmRwdV9r bXMsCisJCWNoYXIgKmNsb2NrX25hbWUpCit7CisJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1w ID0gJmRwdV9rbXMtPm1wOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IG1wLT5udW1fY2xr OyBpKyspIHsKKwkJaWYgKCFzdHJjbXAobXAtPmNsa19jb25maWdbaV0uY2xrX25hbWUsIGNsb2Nr X25hbWUpKQorCQkJcmV0dXJuICZtcC0+Y2xrX2NvbmZpZ1tpXTsKKwl9CisKKwlyZXR1cm4gTlVM TDsKK30KKwordTY0IGRwdV9rbXNfZ2V0X2Nsa19yYXRlKHN0cnVjdCBkcHVfa21zICpkcHVfa21z LCBjaGFyICpjbG9ja19uYW1lKQoreworCXN0cnVjdCBkc3NfY2xrICpjbGs7CisKKwljbGsgPSBf ZHB1X2ttc19nZXRfY2xrKGRwdV9rbXMsIGNsb2NrX25hbWUpOworCWlmICghY2xrKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCXJldHVybiBjbGtfZ2V0X3JhdGUoY2xrLT5jbGspOworfQorCiBzdGF0 aWMgdm9pZCBkcHVfa21zX2hhbmRsZV9wb3dlcl9ldmVudCh1MzIgZXZlbnRfdHlwZSwgdm9pZCAq dXNyKQogewogCXN0cnVjdCBkcHVfa21zICpkcHVfa21zID0gdXNyOwpAQCAtMTY5Niw3ICsxNzIx LDggQEAgc3RhdGljIGludCBkcHVfa21zX2h3X2luaXQoc3RydWN0IG1zbV9rbXMgKmttcykKICNl bmRpZgogCiAJcmMgPSBkcHVfY29yZV9wZXJmX2luaXQoJmRwdV9rbXMtPnBlcmYsIGRldiwgZHB1 X2ttcy0+Y2F0YWxvZywKLQkJCSZwcml2LT5waGFuZGxlLCBwcml2LT5wY2xpZW50LCAiY29yZV9j bGsiKTsKKwkJCSZwcml2LT5waGFuZGxlLCBwcml2LT5wY2xpZW50LAorCQkJX2RwdV9rbXNfZ2V0 X2NsayhkcHVfa21zLCAiY29yZV9jbGsiKSk7CiAJaWYgKHJjKSB7CiAJCURQVV9FUlJPUigiZmFp bGVkIHRvIGluaXQgcGVyZiAlZFxuIiwgcmMpOwogCQlnb3RvIHBlcmZfZXJyOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5oIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5oCmluZGV4IDNjNjk5MjEuLmE4MjU1ZmUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmgKQEAgLTUzNyw0ICs1MzcsMTMgQEAg c3RydWN0IGRwdV9rbXNfZmJvICpkcHVfa21zX2Zib19hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCiB2b2lkIGRwdV9rbXNfZW5jb2Rlcl9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyKTsKIAorLyoqCisgKiBkcHVfa21zX2dldF9jbGtfcmF0ZSgpIC0gZ2V0IHRoZSBjbG9j ayByYXRlCisgKiBAZHB1X2ttczogIHBvaW5lciB0byBkcHVfa21zIHN0cnVjdHVyZQorICogQGNs b2NrX25hbWU6IGNsb2NrIG5hbWUgdG8gZ2V0IHRoZSByYXRlCisgKgorICogUmV0dXJuOiBjdXJy ZW50IGNsb2NrIHJhdGUKKyAqLwordTY0IGRwdV9rbXNfZ2V0X2Nsa19yYXRlKHN0cnVjdCBkcHVf a21zICpkcHVfa21zLCBjaGFyICpjbG9ja19uYW1lKTsKKwogI2VuZGlmIC8qIF9fZHB1X2ttc19I X18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X3Bvd2VyX2hhbmRsZS5j IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfcG93ZXJfaGFuZGxlLmMKaW5kZXggZTllMzQ0YS4u MTI2MDJhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfcG93ZXJfaGFuZGxl LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfcG93ZXJfaGFuZGxlLmMKQEAgLTEzLDcg KzEzLDYgQEAKIAogI2RlZmluZSBwcl9mbXQoZm10KQkiW2RybTolczolZF06ICIgZm10LCBfX2Z1 bmNfXywgX19MSU5FX18KIAotI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgogI2luY2x1ZGUgPGxpbnV4 L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L29mLmg+CiAjaW5jbHVkZSA8bGludXgvc3RyaW5n Lmg+CkBAIC0yNDYsNjIgKzI0NSw2IEBAIHN0YXRpYyBpbnQgZHB1X3Bvd2VyX3BhcnNlX2R0X3N1 cHBseShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCXJldHVybiByYzsKIH0KIAotc3Rh dGljIGludCBkcHVfcG93ZXJfcGFyc2VfZHRfY2xvY2soc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldiwKLQkJCQkJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wKQotewotCXUzMiBpID0gMCwg cmMgPSAwOwotCWNvbnN0IGNoYXIgKmNsb2NrX25hbWU7Ci0JdTMyIGNsb2NrX3JhdGUgPSAwOwot CXUzMiBjbG9ja19tYXhfcmF0ZSA9IDA7Ci0JaW50IG51bV9jbGsgPSAwOwotCi0JaWYgKCFwZGV2 IHx8ICFtcCkgewotCQlwcl9lcnIoImludmFsaWQgaW5wdXQgcGFyYW0gcGRldjolcEsgbXA6JXBL XG4iLCBwZGV2LCBtcCk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCW1wLT5udW1fY2xrID0g MDsKLQludW1fY2xrID0gb2ZfcHJvcGVydHlfY291bnRfc3RyaW5ncyhwZGV2LT5kZXYub2Zfbm9k ZSwKLQkJCQkJCQkiY2xvY2stbmFtZXMiKTsKLQlpZiAobnVtX2NsayA8PSAwKSB7Ci0JCXByX2Rl YnVnKCJjbG9ja3MgYXJlIG5vdCBkZWZpbmVkXG4iKTsKLQkJZ290byBjbGtfZXJyOwotCX0KLQot CW1wLT5udW1fY2xrID0gbnVtX2NsazsKLQltcC0+Y2xrX2NvbmZpZyA9IGRldm1fa3phbGxvYygm cGRldi0+ZGV2LAotCQkJc2l6ZW9mKHN0cnVjdCBkc3NfY2xrKSAqIG51bV9jbGssIEdGUF9LRVJO RUwpOwotCWlmICghbXAtPmNsa19jb25maWcpIHsKLQkJcmMgPSAtRU5PTUVNOwotCQltcC0+bnVt X2NsayA9IDA7Ci0JCWdvdG8gY2xrX2VycjsKLQl9Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbnVtX2Ns azsgaSsrKSB7Ci0JCW9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nX2luZGV4KHBkZXYtPmRldi5vZl9u b2RlLCAiY2xvY2stbmFtZXMiLAotCQkJCQkJCWksICZjbG9ja19uYW1lKTsKLQkJc3RybGNweSht cC0+Y2xrX2NvbmZpZ1tpXS5jbGtfbmFtZSwgY2xvY2tfbmFtZSwKLQkJCQlzaXplb2YobXAtPmNs a19jb25maWdbaV0uY2xrX25hbWUpKTsKLQotCQlvZl9wcm9wZXJ0eV9yZWFkX3UzMl9pbmRleChw ZGV2LT5kZXYub2Zfbm9kZSwgImNsb2NrLXJhdGUiLAotCQkJCQkJCWksICZjbG9ja19yYXRlKTsK LQkJbXAtPmNsa19jb25maWdbaV0ucmF0ZSA9IGNsb2NrX3JhdGU7Ci0KLQkJaWYgKCFjbG9ja19y YXRlKQotCQkJbXAtPmNsa19jb25maWdbaV0udHlwZSA9IERTU19DTEtfQUhCOwotCQllbHNlCi0J CQltcC0+Y2xrX2NvbmZpZ1tpXS50eXBlID0gRFNTX0NMS19QQ0xLOwotCi0JCWNsb2NrX21heF9y YXRlID0gMDsKLQkJb2ZfcHJvcGVydHlfcmVhZF91MzJfaW5kZXgocGRldi0+ZGV2Lm9mX25vZGUs ICJjbG9jay1tYXgtcmF0ZSIsCi0JCQkJCQkJaSwgJmNsb2NrX21heF9yYXRlKTsKLQkJbXAtPmNs a19jb25maWdbaV0ubWF4X3JhdGUgPSBjbG9ja19tYXhfcmF0ZTsKLQl9Ci0KLWNsa19lcnI6Ci0J cmV0dXJuIHJjOwotfQotCiAjaWZkZWYgQ09ORklHX1FDT01fQlVTX1NDQUxJTkcKIAogI2RlZmlu ZSBNQVhfQVhJX1BPUlRfQ09VTlQgMwpAQCAtNjgxLDE2ICs2MjQsMTAgQEAgaW50IGRwdV9wb3dl cl9yZXNvdXJjZV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiAJbXAgPSAmcGhh bmRsZS0+bXA7CiAJcGhhbmRsZS0+ZGV2ID0gJnBkZXYtPmRldjsKIAotCXJjID0gZHB1X3Bvd2Vy X3BhcnNlX2R0X2Nsb2NrKHBkZXYsIG1wKTsKLQlpZiAocmMpIHsKLQkJcHJfZXJyKCJkZXZpY2Ug Y2xvY2sgcGFyc2luZyBmYWlsZWRcbiIpOwotCQlnb3RvIGVuZDsKLQl9Ci0KIAlyYyA9IGRwdV9w b3dlcl9wYXJzZV9kdF9zdXBwbHkocGRldiwgbXApOwogCWlmIChyYykgewogCQlwcl9lcnIoImRl dmljZSB2cmVnIHN1cHBseSBwYXJzaW5nIGZhaWxlZFxuIik7Ci0JCWdvdG8gcGFyc2VfdnJlZ19l cnI7CisJCXJldHVybiByYzsKIAl9CiAKIAlyYyA9IG1zbV9kc3NfY29uZmlnX3ZyZWcoJnBkZXYt PmRldiwKQEAgLTcwMCwxOCArNjM3LDYgQEAgaW50IGRwdV9wb3dlcl9yZXNvdXJjZV9pbml0KHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiAJCWdvdG8gdnJlZ19lcnI7CiAJfQogCi0JcmMg PSBtc21fZHNzX2dldF9jbGsoJnBkZXYtPmRldiwgbXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xr KTsKLQlpZiAocmMpIHsKLQkJcHJfZXJyKCJjbG9jayBnZXQgZmFpbGVkIHJjPSVkXG4iLCByYyk7 Ci0JCWdvdG8gY2xrX2VycjsKLQl9Ci0KLQlyYyA9IG1zbV9kc3NfY2xrX3NldF9yYXRlKG1wLT5j bGtfY29uZmlnLCBtcC0+bnVtX2Nsayk7Ci0JaWYgKHJjKSB7Ci0JCXByX2VycigiY2xvY2sgc2V0 IHJhdGUgZmFpbGVkIHJjPSVkXG4iLCByYyk7Ci0JCWdvdG8gYnVzX2VycjsKLQl9Ci0KIAlyYyA9 IGRwdV9wb3dlcl9yZWdfYnVzX3BhcnNlKHBkZXYsIHBoYW5kbGUpOwogCWlmIChyYykgewogCQlw cl9lcnIoInJlZ2lzdGVyIGJ1cyBwYXJzZSBmYWlsZWQgcmM9JWRcbiIsIHJjKTsKQEAgLTc0Miwx OCArNjY3LDExIEBAIGludCBkcHVfcG93ZXJfcmVzb3VyY2VfaW5pdChzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2LAogCQlkcHVfcG93ZXJfZGF0YV9idXNfdW5yZWdpc3RlcigmcGhhbmRsZS0+ ZGF0YV9idXNfaGFuZGxlW2ldKTsKIAlkcHVfcG93ZXJfcmVnX2J1c191bnJlZ2lzdGVyKHBoYW5k bGUtPnJlZ19idXNfaGRsKTsKIGJ1c19lcnI6Ci0JbXNtX2Rzc19wdXRfY2xrKG1wLT5jbGtfY29u ZmlnLCBtcC0+bnVtX2Nsayk7Ci1jbGtfZXJyOgogCW1zbV9kc3NfY29uZmlnX3ZyZWcoJnBkZXYt PmRldiwgbXAtPnZyZWdfY29uZmlnLCBtcC0+bnVtX3ZyZWcsIDApOwogdnJlZ19lcnI6CiAJaWYg KG1wLT52cmVnX2NvbmZpZykKIAkJZGV2bV9rZnJlZSgmcGRldi0+ZGV2LCBtcC0+dnJlZ19jb25m aWcpOwogCW1wLT5udW1fdnJlZyA9IDA7Ci1wYXJzZV92cmVnX2VycjoKLQlpZiAobXAtPmNsa19j b25maWcpCi0JCWRldm1fa2ZyZWUoJnBkZXYtPmRldiwgbXAtPmNsa19jb25maWcpOwotCW1wLT5u dW1fY2xrID0gMDsKLWVuZDoKIAlyZXR1cm4gcmM7CiB9CiAKQEAgLTc5NiwxOSArNzE0LDEyIEBA IHZvaWQgZHB1X3Bvd2VyX3Jlc291cmNlX2RlaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2LAogCiAJZHB1X3Bvd2VyX3JlZ19idXNfdW5yZWdpc3RlcihwaGFuZGxlLT5yZWdfYnVzX2hk bCk7CiAKLQltc21fZHNzX3B1dF9jbGsobXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrKTsKLQog CW1zbV9kc3NfY29uZmlnX3ZyZWcoJnBkZXYtPmRldiwgbXAtPnZyZWdfY29uZmlnLCBtcC0+bnVt X3ZyZWcsIDApOwogCi0JaWYgKG1wLT5jbGtfY29uZmlnKQotCQlkZXZtX2tmcmVlKCZwZGV2LT5k ZXYsIG1wLT5jbGtfY29uZmlnKTsKLQogCWlmIChtcC0+dnJlZ19jb25maWcpCiAJCWRldm1fa2Zy ZWUoJnBkZXYtPmRldiwgbXAtPnZyZWdfY29uZmlnKTsKIAogCW1wLT5udW1fdnJlZyA9IDA7Ci0J bXAtPm51bV9jbGsgPSAwOwotCiB9CiAKIGludCBkcHVfcG93ZXJfcmVzb3VyY2VfZW5hYmxlKHN0 cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLApAQCAtODg1LDEyICs3OTYsNiBAQCBpbnQg ZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRs ZSwKIAkJCWdvdG8gcmVnX2J1c19oZGxfZXJyOwogCQl9CiAKLQkJcmMgPSBtc21fZHNzX2VuYWJs ZV9jbGsobXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrLCBlbmFibGUpOwotCQlpZiAocmMpIHsK LQkJCXByX2VycigiY2xvY2sgZW5hYmxlIGZhaWxlZCByYzolZFxuIiwgcmMpOwotCQkJZ290byBj bGtfZXJyOwotCQl9Ci0KIAkJZHB1X3Bvd2VyX2V2ZW50X3RyaWdnZXJfbG9ja2VkKHBoYW5kbGUs CiAJCQkJRFBVX1BPV0VSX0VWRU5UX1BPU1RfRU5BQkxFKTsKIApAQCAtODk4LDggKzgwMyw2IEBA IGludCBkcHVfcG93ZXJfcmVzb3VyY2VfZW5hYmxlKHN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpw aGFuZGxlLAogCQlkcHVfcG93ZXJfZXZlbnRfdHJpZ2dlcl9sb2NrZWQocGhhbmRsZSwKIAkJCQlE UFVfUE9XRVJfRVZFTlRfUFJFX0RJU0FCTEUpOwogCi0JCW1zbV9kc3NfZW5hYmxlX2NsayhtcC0+ Y2xrX2NvbmZpZywgbXAtPm51bV9jbGssIGVuYWJsZSk7Ci0KIAkJZHB1X3Bvd2VyX3JlZ19idXNf dXBkYXRlKHBoYW5kbGUtPnJlZ19idXNfaGRsLAogCQkJCQkJCW1heF91c2VjYXNlX25keCk7CiAK QEAgLTkxNyw4ICs4MjAsNiBAQCBpbnQgZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZShzdHJ1Y3Qg ZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKIAltdXRleF91bmxvY2soJnBoYW5kbGUtPnBoYW5k bGVfbG9jayk7CiAJcmV0dXJuIHJjOwogCi1jbGtfZXJyOgotCWRwdV9wb3dlcl9yZWdfYnVzX3Vw ZGF0ZShwaGFuZGxlLT5yZWdfYnVzX2hkbCwgcHJldl91c2VjYXNlX25keCk7CiByZWdfYnVzX2hk bF9lcnI6CiAJbXNtX2Rzc19lbmFibGVfdnJlZyhtcC0+dnJlZ19jb25maWcsIG1wLT5udW1fdnJl ZywgMCk7CiB2cmVnX2VycjoKQEAgLTkzMCwxMDEgKzgzMSw2IEBAIGludCBkcHVfcG93ZXJfcmVz b3VyY2VfZW5hYmxlKHN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLAogCXJldHVybiBy YzsKIH0KIAotaW50IGRwdV9wb3dlcl9jbGtfc2V0X3JhdGUoc3RydWN0IGRwdV9wb3dlcl9oYW5k bGUgKnBoYW5kbGUsIGNoYXIgKmNsb2NrX25hbWUsCi0JdTY0IHJhdGUpCi17Ci0JaW50IGksIHJj ID0gLUVJTlZBTDsKLQlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXA7Ci0KLQlpZiAoIXBoYW5k bGUpIHsKLQkJcHJfZXJyKCJpbnZhbGlkIGlucHV0IHBvd2VyIGhhbmRsZVxuIik7Ci0JCXJldHVy biAtRUlOVkFMOwotCX0KLQltcCA9ICZwaGFuZGxlLT5tcDsKLQotCWZvciAoaSA9IDA7IGkgPCBt cC0+bnVtX2NsazsgaSsrKSB7Ci0JCWlmICghc3RyY21wKG1wLT5jbGtfY29uZmlnW2ldLmNsa19u YW1lLCBjbG9ja19uYW1lKSkgewotCQkJaWYgKG1wLT5jbGtfY29uZmlnW2ldLm1heF9yYXRlICYm Ci0JCQkJCShyYXRlID4gbXAtPmNsa19jb25maWdbaV0ubWF4X3JhdGUpKQotCQkJCXJhdGUgPSBt cC0+Y2xrX2NvbmZpZ1tpXS5tYXhfcmF0ZTsKLQotCQkJbXAtPmNsa19jb25maWdbaV0ucmF0ZSA9 IHJhdGU7Ci0JCQlyYyA9IG1zbV9kc3NfY2xrX3NldF9yYXRlKG1wLT5jbGtfY29uZmlnLCBtcC0+ bnVtX2Nsayk7Ci0JCQlicmVhazsKLQkJfQotCX0KLQotCXJldHVybiByYzsKLX0KLQotdTY0IGRw dV9wb3dlcl9jbGtfZ2V0X3JhdGUoc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5kbGUsIGNo YXIgKmNsb2NrX25hbWUpCi17Ci0JaW50IGk7Ci0Jc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1w OwotCXU2NCByYXRlID0gLUVJTlZBTDsKLQotCWlmICghcGhhbmRsZSkgewotCQlwcl9lcnIoImlu dmFsaWQgaW5wdXQgcG93ZXIgaGFuZGxlXG4iKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCW1w ID0gJnBoYW5kbGUtPm1wOwotCi0JZm9yIChpID0gMDsgaSA8IG1wLT5udW1fY2xrOyBpKyspIHsK LQkJaWYgKCFzdHJjbXAobXAtPmNsa19jb25maWdbaV0uY2xrX25hbWUsIGNsb2NrX25hbWUpKSB7 Ci0JCQlyYXRlID0gY2xrX2dldF9yYXRlKG1wLT5jbGtfY29uZmlnW2ldLmNsayk7Ci0JCQlicmVh azsKLQkJfQotCX0KLQotCXJldHVybiByYXRlOwotfQotCi11NjQgZHB1X3Bvd2VyX2Nsa19nZXRf bWF4X3JhdGUoc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5kbGUsCi0JCWNoYXIgKmNsb2Nr X25hbWUpCi17Ci0JaW50IGk7Ci0Jc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wOwotCXU2NCBy YXRlID0gMDsKLQotCWlmICghcGhhbmRsZSkgewotCQlwcl9lcnIoImludmFsaWQgaW5wdXQgcG93 ZXIgaGFuZGxlXG4iKTsKLQkJcmV0dXJuIDA7Ci0JfQotCW1wID0gJnBoYW5kbGUtPm1wOwotCi0J Zm9yIChpID0gMDsgaSA8IG1wLT5udW1fY2xrOyBpKyspIHsKLQkJaWYgKCFzdHJjbXAobXAtPmNs a19jb25maWdbaV0uY2xrX25hbWUsIGNsb2NrX25hbWUpKSB7Ci0JCQlyYXRlID0gbXAtPmNsa19j b25maWdbaV0ubWF4X3JhdGU7Ci0JCQlicmVhazsKLQkJfQotCX0KLQotCXJldHVybiByYXRlOwot fQotCi1zdHJ1Y3QgY2xrICpkcHVfcG93ZXJfY2xrX2dldF9jbGsoc3RydWN0IGRwdV9wb3dlcl9o YW5kbGUgKnBoYW5kbGUsCi0JCWNoYXIgKmNsb2NrX25hbWUpCi17Ci0JaW50IGk7Ci0Jc3RydWN0 IGRzc19tb2R1bGVfcG93ZXIgKm1wOwotCXN0cnVjdCBjbGsgKmNsayA9IE5VTEw7Ci0KLQlpZiAo IXBoYW5kbGUpIHsKLQkJcHJfZXJyKCJpbnZhbGlkIGlucHV0IHBvd2VyIGhhbmRsZVxuIik7Ci0J CXJldHVybiAwOwotCX0KLQltcCA9ICZwaGFuZGxlLT5tcDsKLQotCWZvciAoaSA9IDA7IGkgPCBt cC0+bnVtX2NsazsgaSsrKSB7Ci0JCWlmICghc3RyY21wKG1wLT5jbGtfY29uZmlnW2ldLmNsa19u YW1lLCBjbG9ja19uYW1lKSkgewotCQkJY2xrID0gbXAtPmNsa19jb25maWdbaV0uY2xrOwotCQkJ YnJlYWs7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gY2xrOwotfQotCiBzdHJ1Y3QgZHB1X3Bvd2VyX2V2 ZW50ICpkcHVfcG93ZXJfaGFuZGxlX3JlZ2lzdGVyX2V2ZW50KAogCQlzdHJ1Y3QgZHB1X3Bvd2Vy X2hhbmRsZSAqcGhhbmRsZSwKIAkJdTMyIGV2ZW50X3R5cGUsIHZvaWQgKCpjYl9mbmMpKHUzMiBl dmVudF90eXBlLCB2b2lkICp1c3IpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9k cHVfcG93ZXJfaGFuZGxlLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9wb3dlcl9oYW5kbGUu aAppbmRleCAxZWRhZTVjLi44M2YwNDhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2RwdV9wb3dlcl9oYW5kbGUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9wb3dlcl9o YW5kbGUuaApAQCAtMjMwLDQ2ICsyMzAsNiBAQCBpbnQgZHB1X3Bvd2VyX2RhdGFfYnVzX3N0YXRl X3VwZGF0ZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKIAkJCQkJCQlib29sIGVu YWJsZSk7CiAKIC8qKgotICogZHB1X3Bvd2VyX2Nsa19zZXRfcmF0ZSgpIC0gc2V0IHRoZSBjbG9j ayByYXRlCi0gKiBAcGRhdGE6ICBwb3dlciBoYW5kbGUgY29udGFpbmluZyB0aGUgcmVzb3VyY2Vz Ci0gKiBAY2xvY2tfbmFtZTogY2xvY2sgbmFtZSB3aGljaCBuZWVkcyByYXRlIHVwZGF0ZS4KLSAq IEByYXRlOiAgICAgICBSZXF1ZXN0ZWQgcmF0ZS4KLSAqCi0gKiBSZXR1cm46IGVycm9yIGNvZGUu Ci0gKi8KLWludCBkcHVfcG93ZXJfY2xrX3NldF9yYXRlKHN0cnVjdCBkcHVfcG93ZXJfaGFuZGxl ICpwZGF0YSwgY2hhciAqY2xvY2tfbmFtZSwKLQl1NjQgcmF0ZSk7Ci0KLS8qKgotICogZHB1X3Bv d2VyX2Nsa19nZXRfcmF0ZSgpIC0gZ2V0IHRoZSBjbG9jayByYXRlCi0gKiBAcGRhdGE6ICBwb3dl ciBoYW5kbGUgY29udGFpbmluZyB0aGUgcmVzb3VyY2VzCi0gKiBAY2xvY2tfbmFtZTogY2xvY2sg bmFtZSB0byBnZXQgdGhlIHJhdGUKLSAqCi0gKiBSZXR1cm46IGN1cnJlbnQgY2xvY2sgcmF0ZQot ICovCi11NjQgZHB1X3Bvd2VyX2Nsa19nZXRfcmF0ZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAq cGRhdGEsIGNoYXIgKmNsb2NrX25hbWUpOwotCi0vKioKLSAqIGRwdV9wb3dlcl9jbGtfZ2V0X21h eF9yYXRlKCkgLSBnZXQgdGhlIG1heGltdW0gY2xvY2sgcmF0ZQotICogQHBkYXRhOiAgcG93ZXIg aGFuZGxlIGNvbnRhaW5pbmcgdGhlIHJlc291cmNlcwotICogQGNsb2NrX25hbWU6IGNsb2NrIG5h bWUgdG8gZ2V0IHRoZSBtYXggcmF0ZS4KLSAqCi0gKiBSZXR1cm46IG1heGltdW0gY2xvY2sgcmF0 ZSBvciAwIGlmIG5vdCBmb3VuZC4KLSAqLwotdTY0IGRwdV9wb3dlcl9jbGtfZ2V0X21heF9yYXRl KHN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwZGF0YSwKLQkJY2hhciAqY2xvY2tfbmFtZSk7Ci0K LS8qKgotICogZHB1X3Bvd2VyX2Nsa19nZXRfY2xrKCkgLSBnZXQgdGhlIGNsb2NrCi0gKiBAcGRh dGE6ICBwb3dlciBoYW5kbGUgY29udGFpbmluZyB0aGUgcmVzb3VyY2VzCi0gKiBAY2xvY2tfbmFt ZTogY2xvY2sgbmFtZSB0byBnZXQgdGhlIGNsayBwb2ludGVyLgotICoKLSAqIFJldHVybjogUG9p bnRlciB0byBjbG9jawotICovCi1zdHJ1Y3QgY2xrICpkcHVfcG93ZXJfY2xrX2dldF9jbGsoc3Ry dWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5kbGUsCi0JCWNoYXIgKmNsb2NrX25hbWUpOwotCi0v KioKICAqIGRwdV9wb3dlcl9kYXRhX2J1c19zZXRfcXVvdGEoKSAtIHNldCBkYXRhIGJ1cyBxdW90 YSBmb3IgcG93ZXIgY2xpZW50CiAgKiBAcGhhbmRsZTogIHBvd2VyIGhhbmRsZSBjb250YWluaW5n IHRoZSByZXNvdXJjZXMKICAqIEBjbGllbnQ6IGNsaWVudCBpbmZvcm1hdGlvbiB0byBzZXQgcXVv dGEKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBv ZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZl IFByb2plY3QKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=