From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rajesh Yadav Subject: [DPU PATCH v2 07/12] drm/msm/dpu: remove clock management code from dpu_power_handle Date: Fri, 11 May 2018 20:19:33 +0530 Message-ID: <1526050178-31893-8-git-send-email-ryadav@codeaurora.org> References: <1526050178-31893-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: <1526050178-31893-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 cmljdGVkIHRvCmRwdV9jb3JlX3BlcmYgbW9kdWxlLgoKQ2hhbmdlcyBpbiB2MjoKCS0gcmVtb3Zl IGxvY2FsIHZhcmlhYmxlIHRvIGhvbGQgYW5kIHJldHVybiBlcnJvciBjb2RlCgkgIGluIF9kcHVf Y29yZV9wZXJmX3NldF9jb3JlX2Nsa19yYXRlKCkgaW5zdGVhZCByZXR1cm4KCSAgcmV0Y29kZSBk aXJlY3RseSBmcm9tIG1zbV9kc3NfY2xrX3NldF9yYXRlKCkgY2FsbCAoU2VhbiBQYXVsKQoJLSBk cHVfY29yZV9wZXJmX2luaXQoKSBpcyBjYWxsZWQgZnJvbSBkcHVfa21zX2h3X2luaXQoKSBhbmQK CSAgbW9zdCBvZiB0aGUgcGFyYW1zIHBhc3NlZCBhcmUgYWxyZWFkeSB2YWxpZGF0ZWQgc28gcmVt b3ZlCgkgIHJlZHVuZGFudCBjaGVja3MgZnJvbSBkcHVfY29yZV9wZXJmX2luaXQoKSAoU2VhbiBQ YXVsKQoJLSByZXR1cm4gJm1wLT5jbGtfY29uZmlnW2ldIGRpcmVjdGx5IHRvIGF2b2lkIGxvY2Fs IHZhcmlhYmxlCgkgIGluIF9kcHVfa21zX2dldF9jbGsoKSAoU2VhbiBQYXVsKQoJLSBpbnZlcnQg Y29uZGl0aW9uYWwgY2hlY2sgdG8gZWxpbWluYXRlIGxvY2FsIHJhdGUgdmFyaWFibGUKCSAgZnJv bSBkcHVfa21zX2dldF9jbGtfcmF0ZSgpIChTZWFuIFBhdWwpCgktIHJlbW92ZSBlbmQgbGFiZWwg ZnJvbSBkcHVfcG93ZXJfcmVzb3VyY2VfaW5pdCgpIGFuZCByZXR1cm4KCSAgZGlyZWN0bHkgb24g ZHB1X3Bvd2VyX3BhcnNlX2R0X3N1cHBseSgpIGZhaWx1cmUgYXMgbm8gY2xlYW51cAoJICBpcyBu ZWVkZWQgKFNlYW4gUGF1bCkKCS0gcmVtb3ZlIGNoZWNrcyBmb3IgdnRvdGFsIGFuZCB2cmVmcmVz aCBmcm9tCiAJICBkcHVfZW5jb2Rlcl9waHlzX2NtZF90ZWFyY2hlY2tfY29uZmlnKCkgYXMgdGhl eSBzaG91bGQgYmUKCSAgdmFsaWQgaW4gbW9kZV9zZXQgY2FsbCAoU2VhbiBQYXVsKQoKU2lnbmVk LW9mZi1ieTogUmFqZXNoIFlhZGF2IDxyeWFkYXZAY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5jICAgICAgfCAgNDEgKystLS0K IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX3BlcmYuaCAgICAgIHwgICA4 ICstCiAuLi4vZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMgICB8 ICAgOSArLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jICAgICAgICAg ICAgfCAgMjggKystCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmggICAg ICAgICAgICB8ICAgOSArCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9wb3dlcl9oYW5kbGUuYyAg ICAgICAgICAgICB8IDE5NiArLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9t c20vZHB1X3Bvd2VyX2hhbmRsZS5oICAgICAgICAgICAgIHwgIDQwIC0tLS0tCiA3IGZpbGVzIGNo YW5nZWQsIDYzIGluc2VydGlvbnMoKyksIDI2OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmMgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmMKaW5kZXggOTgxZjc3Zi4uNWI3OTA3 NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVy Zi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX3BlcmYuYwpA QCAtMzY1LDYgKzM2NSwxNyBAQCB2b2lkIGRwdV9jb3JlX3BlcmZfY3J0Y19yZWxlYXNlX2J3KHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKIAl9CiB9CiAKK3N0YXRpYyBpbnQgX2RwdV9jb3JlX3BlcmZf c2V0X2NvcmVfY2xrX3JhdGUoc3RydWN0IGRwdV9rbXMgKmttcywgdTY0IHJhdGUpCit7CisJc3Ry dWN0IGRzc19jbGsgKmNvcmVfY2xrID0ga21zLT5wZXJmLmNvcmVfY2xrOworCisJaWYgKGNvcmVf Y2xrLT5tYXhfcmF0ZSAmJiAocmF0ZSA+IGNvcmVfY2xrLT5tYXhfcmF0ZSkpCisJCXJhdGUgPSBj b3JlX2Nsay0+bWF4X3JhdGU7CisKKwljb3JlX2Nsay0+cmF0ZSA9IHJhdGU7CisJcmV0dXJuIG1z bV9kc3NfY2xrX3NldF9yYXRlKGNvcmVfY2xrLCAxKTsKK30KKwogc3RhdGljIHU2NCBfZHB1X2Nv cmVfcGVyZl9nZXRfY29yZV9jbGtfcmF0ZShzdHJ1Y3QgZHB1X2ttcyAqa21zKQogewogCXU2NCBj bGtfcmF0ZSA9IGttcy0+cGVyZi5wZXJmX3R1bmUubWluX2NvcmVfY2xrOwpAQCAtMzc2LDcgKzM4 Nyw4IEBAIHN0YXRpYyB1NjQgX2RwdV9jb3JlX3BlcmZfZ2V0X2NvcmVfY2xrX3JhdGUoc3RydWN0 IGRwdV9rbXMgKmttcykKIAkJCWRwdV9jc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5z dGF0ZSk7CiAJCQljbGtfcmF0ZSA9IG1heChkcHVfY3N0YXRlLT5uZXdfcGVyZi5jb3JlX2Nsa19y YXRlLAogCQkJCQkJCWNsa19yYXRlKTsKLQkJCWNsa19yYXRlID0gY2xrX3JvdW5kX3JhdGUoa21z LT5wZXJmLmNvcmVfY2xrLCBjbGtfcmF0ZSk7CisJCQljbGtfcmF0ZSA9IGNsa19yb3VuZF9yYXRl KGttcy0+cGVyZi5jb3JlX2Nsay0+Y2xrLAorCQkJCQljbGtfcmF0ZSk7CiAJCX0KIAl9CiAKQEAg LTQ4NCwxNSArNDk2LDExIEBAIHZvaWQgZHB1X2NvcmVfcGVyZl9jcnRjX3VwZGF0ZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAKIAkJRFBVX0VWVDMyKGttcy0+ZGV2LCBzdG9wX3JlcSwgY2xrX3Jh dGUpOwogCi0JCS8qIFRlbXAgY2hhbmdlIHRvIGF2b2lkIGNyYXNoIGluIGNsa19zZXRfcmF0ZSBB UEkuICovCi0jaWZkZWYgUUNPTV9EUFVfU0VUX0NMSwotCQlpZiAoZHB1X3Bvd2VyX2Nsa19zZXRf cmF0ZSgmcHJpdi0+cGhhbmRsZSwKLQkJCQkJICAga21zLT5wZXJmLmNsa19uYW1lLCBjbGtfcmF0 ZSkpIHsKKwkJaWYgKF9kcHVfY29yZV9wZXJmX3NldF9jb3JlX2Nsa19yYXRlKGttcywgY2xrX3Jh dGUpKSB7CiAJCQlEUFVfRVJST1IoImZhaWxlZCB0byBzZXQgJXMgY2xvY2sgcmF0ZSAlbGx1XG4i LAotCQkJCQlrbXMtPnBlcmYuY2xrX25hbWUsIGNsa19yYXRlKTsKKwkJCQkJa21zLT5wZXJmLmNv cmVfY2xrLT5jbGtfbmFtZSwgY2xrX3JhdGUpOwogCQkJcmV0dXJuOwogCQl9Ci0jZW5kaWYKIAog CQlrbXMtPnBlcmYuY29yZV9jbGtfcmF0ZSA9IGNsa19yYXRlOwogCQlEUFVfREVCVUcoInVwZGF0 ZSBjbGsgcmF0ZSA9ICVsbGQgSFpcbiIsIGNsa19yYXRlKTsKQEAgLTY1Niw3ICs2NjQsNiBAQCB2 b2lkIGRwdV9jb3JlX3BlcmZfZGVzdHJveShzdHJ1Y3QgZHB1X2NvcmVfcGVyZiAqcGVyZikKIAlk cHVfY29yZV9wZXJmX2RlYnVnZnNfZGVzdHJveShwZXJmKTsKIAlwZXJmLT5tYXhfY29yZV9jbGtf cmF0ZSA9IDA7CiAJcGVyZi0+Y29yZV9jbGsgPSBOVUxMOwotCXBlcmYtPmNsa19uYW1lID0gTlVM TDsKIAlwZXJmLT5waGFuZGxlID0gTlVMTDsKIAlwZXJmLT5jYXRhbG9nID0gTlVMTDsKIAlwZXJm LT5kZXYgPSBOVUxMOwpAQCAtNjY3LDkgKzY3NCw5IEBAIGludCBkcHVfY29yZV9wZXJmX2luaXQo c3RydWN0IGRwdV9jb3JlX3BlcmYgKnBlcmYsCiAJCXN0cnVjdCBkcHVfbWRzc19jZmcgKmNhdGFs b2csCiAJCXN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLAogCQlzdHJ1Y3QgZHB1X3Bv d2VyX2NsaWVudCAqcGNsaWVudCwKLQkJY2hhciAqY2xrX25hbWUpCisJCXN0cnVjdCBkc3NfY2xr ICpjb3JlX2NsaykKIHsKLQlpZiAoIXBlcmYgfHwgIWRldiB8fCAhY2F0YWxvZyB8fCAhcGhhbmRs ZSB8fCAhcGNsaWVudCB8fCAhY2xrX25hbWUpIHsKKwlpZiAoIXBjbGllbnQpIHsKIAkJRFBVX0VS Uk9SKCJpbnZhbGlkIHBhcmFtZXRlcnNcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CkBAIC02 NzgsMjMgKzY4NSwxMyBAQCBpbnQgZHB1X2NvcmVfcGVyZl9pbml0KHN0cnVjdCBkcHVfY29yZV9w ZXJmICpwZXJmLAogCXBlcmYtPmNhdGFsb2cgPSBjYXRhbG9nOwogCXBlcmYtPnBoYW5kbGUgPSBw aGFuZGxlOwogCXBlcmYtPnBjbGllbnQgPSBwY2xpZW50OwotCXBlcmYtPmNsa19uYW1lID0gY2xr X25hbWU7Ci0KLQlwZXJmLT5jb3JlX2NsayA9IGRwdV9wb3dlcl9jbGtfZ2V0X2NsayhwaGFuZGxl LCBjbGtfbmFtZSk7Ci0JaWYgKCFwZXJmLT5jb3JlX2NsaykgewotCQlEUFVfRVJST1IoImludmFs aWQgY29yZSBjbGtcbiIpOwotCQlnb3RvIGVycjsKLQl9CisJcGVyZi0+Y29yZV9jbGsgPSBjb3Jl X2NsazsKIAotCXBlcmYtPm1heF9jb3JlX2Nsa19yYXRlID0gZHB1X3Bvd2VyX2Nsa19nZXRfbWF4 X3JhdGUocGhhbmRsZSwgY2xrX25hbWUpOworCXBlcmYtPm1heF9jb3JlX2Nsa19yYXRlID0gY29y ZV9jbGstPm1heF9yYXRlOwogCWlmICghcGVyZi0+bWF4X2NvcmVfY2xrX3JhdGUpIHsKIAkJRFBV X0RFQlVHKCJvcHRpb25hbCBtYXggY29yZSBjbGsgcmF0ZSwgdXNlIGRlZmF1bHRcbiIpOwogCQlw ZXJmLT5tYXhfY29yZV9jbGtfcmF0ZSA9IERQVV9QRVJGX0RFRkFVTFRfTUFYX0NPUkVfQ0xLX1JB VEU7CiAJfQogCiAJcmV0dXJuIDA7Ci0KLWVycjoKLQlkcHVfY29yZV9wZXJmX2Rlc3Ryb3kocGVy Zik7Ci0JcmV0dXJuIC1FTk9ERVY7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfY29yZV9wZXJmLmgKaW5kZXggMTk2NWZmNS4uOWMxYTcxOSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX3BlcmYuaApAQCAtNTQsNyArNTQsNiBAQCBz dHJ1Y3QgZHB1X2NvcmVfcGVyZl90dW5lIHsKICAqIEBjYXRhbG9nOiBQb2ludGVyIHRvIGNhdGFs b2cgY29uZmlndXJhdGlvbgogICogQHBoYW5kbGU6IFBvaW50ZXIgdG8gcG93ZXIgaGFuZGxlcgog ICogQHBjbGllbnQ6IFBvaW50ZXIgdG8gcG93ZXIgY2xpZW50Ci0gKiBAY2xrX25hbWU6IGNvcmUg Y2xvY2sgbmFtZQogICogQGNvcmVfY2xrOiBQb2ludGVyIHRvIGNvcmUgY2xvY2sgc3RydWN0dXJl CiAgKiBAY29yZV9jbGtfcmF0ZTogY3VycmVudCBjb3JlIGNsb2NrIHJhdGUKICAqIEBtYXhfY29y ZV9jbGtfcmF0ZTogbWF4aW11bSBhbGxvd2FibGUgY29yZSBjbG9jayByYXRlCkBAIC03MCw4ICs2 OSw3IEBAIHN0cnVjdCBkcHVfY29yZV9wZXJmIHsKIAlzdHJ1Y3QgZHB1X21kc3NfY2ZnICpjYXRh bG9nOwogCXN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlOwogCXN0cnVjdCBkcHVfcG93 ZXJfY2xpZW50ICpwY2xpZW50OwotCWNoYXIgKmNsa19uYW1lOwotCXN0cnVjdCBjbGsgKmNvcmVf Y2xrOworCXN0cnVjdCBkc3NfY2xrICpjb3JlX2NsazsKIAl1NjQgY29yZV9jbGtfcmF0ZTsKIAl1 NjQgbWF4X2NvcmVfY2xrX3JhdGU7CiAJc3RydWN0IGRwdV9jb3JlX3BlcmZfdHVuZSBwZXJmX3R1 bmU7CkBAIC0xMTgsMTQgKzExNiwxNCBAQCB2b2lkIGRwdV9jb3JlX3BlcmZfY3J0Y191cGRhdGUo c3RydWN0IGRybV9jcnRjICpjcnRjLAogICogQGNhdGFsb2c6IFBvaW50ZXIgdG8gY2F0YWxvZwog ICogQHBoYW5kbGU6IFBvaW50ZXIgdG8gcG93ZXIgaGFuZGxlCiAgKiBAcGNsaWVudDogUG9pbnRl ciB0byBwb3dlciBjbGllbnQKLSAqIEBjbGtfbmFtZTogY29yZSBjbG9jayBuYW1lCisgKiBAY29y ZV9jbGs6IHBvaW50ZXIgdG8gY29yZSBjbG9jawogICovCiBpbnQgZHB1X2NvcmVfcGVyZl9pbml0 KHN0cnVjdCBkcHVfY29yZV9wZXJmICpwZXJmLAogCQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CQlzdHJ1Y3QgZHB1X21kc3NfY2ZnICpjYXRhbG9nLAogCQlzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRs ZSAqcGhhbmRsZSwKIAkJc3RydWN0IGRwdV9wb3dlcl9jbGllbnQgKnBjbGllbnQsCi0JCWNoYXIg KmNsa19uYW1lKTsKKwkJc3RydWN0IGRzc19jbGsgKmNvcmVfY2xrKTsKIAogLyoqCiAgKiBkcHVf Y29yZV9wZXJmX2RlYnVnZnNfaW5pdCAtIGluaXRpYWxpemUgZGVidWdmcyBmb3IgY29yZSBwZXJm b3JtYW5jZSBjb250ZXh0CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2VuY29kZXJfcGh5c19jbWQuYwppbmRleCAwNzI5MzljLi4zODhkZTM4IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMK QEAgLTQyOCwxMSArNDI4LDEwIEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX3Rl YXJjaGVja19jb25maWcoCiAJICogdnN5bmNfY291bnQgaXMgcmF0aW8gb2YgTURQIFZTWU5DIGNs b2NrIGZyZXF1ZW5jeSB0byBMQ0QgcGFuZWwKIAkgKiBmcmVxdWVuY3kgZGl2aWRlZCBieSB0aGUg bm8uIG9mIHJvd3MgKGxpbmVzKSBpbiB0aGUgTENEcGFuZWwuCiAJICovCi0JdnN5bmNfaHogPSBk cHVfcG93ZXJfY2xrX2dldF9yYXRlKCZwcml2LT5waGFuZGxlLCAidnN5bmNfY2xrIik7Ci0JaWYg KCF2c3luY19oeiB8fCAhbW9kZS0+dnRvdGFsIHx8ICFtb2RlLT52cmVmcmVzaCkgewotCQlEUFVf REVCVUdfQ01ERU5DKGNtZF9lbmMsCi0JCQkiaW52YWxpZCBwYXJhbXMgLSB2c3luY19oeiAldSB2 dG90ICV1IHZyZWZyZXNoICV1XG4iLAotCQkJdnN5bmNfaHosIG1vZGUtPnZ0b3RhbCwgbW9kZS0+ dnJlZnJlc2gpOworCXZzeW5jX2h6ID0gZHB1X2ttc19nZXRfY2xrX3JhdGUoZHB1X2ttcywgInZz eW5jX2NsayIpOworCWlmICh2c3luY19oeiA8PSAwKSB7CisJCURQVV9ERUJVR19DTURFTkMoY21k X2VuYywgImludmFsaWQgLSB2c3luY19oeiAldVxuIiwKKwkJCQkgdnN5bmNfaHopOwogCQlyZXR1 cm47CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf a21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKaW5kZXggY2Rh NGQxMi4uMzQ5YmRhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYwpA QCAtMTQ5OSw2ICsxNDk5LDMxIEBAIHN0YXRpYyBpbnQgX2RwdV9rbXNfbW11X2luaXQoc3RydWN0 IGRwdV9rbXMgKmRwdV9rbXMpCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHN0cnVjdCBkc3Nf Y2xrICpfZHB1X2ttc19nZXRfY2xrKHN0cnVjdCBkcHVfa21zICpkcHVfa21zLAorCQljaGFyICpj bG9ja19uYW1lKQoreworCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcCA9ICZkcHVfa21zLT5t cDsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBtcC0+bnVtX2NsazsgaSsrKSB7CisJCWlm ICghc3RyY21wKG1wLT5jbGtfY29uZmlnW2ldLmNsa19uYW1lLCBjbG9ja19uYW1lKSkKKwkJCXJl dHVybiAmbXAtPmNsa19jb25maWdbaV07CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3U2NCBk cHVfa21zX2dldF9jbGtfcmF0ZShzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcywgY2hhciAqY2xvY2tf bmFtZSkKK3sKKwlzdHJ1Y3QgZHNzX2NsayAqY2xrOworCisJY2xrID0gX2RwdV9rbXNfZ2V0X2Ns ayhkcHVfa21zLCBjbG9ja19uYW1lKTsKKwlpZiAoIWNsaykKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwlyZXR1cm4gY2xrX2dldF9yYXRlKGNsay0+Y2xrKTsKK30KKwogc3RhdGljIHZvaWQgZHB1X2tt c19oYW5kbGVfcG93ZXJfZXZlbnQodTMyIGV2ZW50X3R5cGUsIHZvaWQgKnVzcikKIHsKIAlzdHJ1 Y3QgZHB1X2ttcyAqZHB1X2ttcyA9IHVzcjsKQEAgLTE2OTYsNyArMTcyMSw4IEBAIHN0YXRpYyBp bnQgZHB1X2ttc19od19pbml0KHN0cnVjdCBtc21fa21zICprbXMpCiAjZW5kaWYKIAogCXJjID0g ZHB1X2NvcmVfcGVyZl9pbml0KCZkcHVfa21zLT5wZXJmLCBkZXYsIGRwdV9rbXMtPmNhdGFsb2cs Ci0JCQkmcHJpdi0+cGhhbmRsZSwgcHJpdi0+cGNsaWVudCwgImNvcmVfY2xrIik7CisJCQkmcHJp di0+cGhhbmRsZSwgcHJpdi0+cGNsaWVudCwKKwkJCV9kcHVfa21zX2dldF9jbGsoZHB1X2ttcywg ImNvcmVfY2xrIikpOwogCWlmIChyYykgewogCQlEUFVfRVJST1IoImZhaWxlZCB0byBpbml0IHBl cmYgJWRcbiIsIHJjKTsKIAkJZ290byBwZXJmX2VycjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9rbXMuaAppbmRleCAzYzY5OTIxLi5hODI1NWZlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2ttcy5oCkBAIC01MzcsNCArNTM3LDEzIEBAIHN0cnVjdCBkcHVfa21z X2ZibyAqZHB1X2ttc19mYm9fYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogdm9pZCBk cHVfa21zX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7CiAKKy8q KgorICogZHB1X2ttc19nZXRfY2xrX3JhdGUoKSAtIGdldCB0aGUgY2xvY2sgcmF0ZQorICogQGRw dV9rbXM6ICBwb2luZXIgdG8gZHB1X2ttcyBzdHJ1Y3R1cmUKKyAqIEBjbG9ja19uYW1lOiBjbG9j ayBuYW1lIHRvIGdldCB0aGUgcmF0ZQorICoKKyAqIFJldHVybjogY3VycmVudCBjbG9jayByYXRl CisgKi8KK3U2NCBkcHVfa21zX2dldF9jbGtfcmF0ZShzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcywg Y2hhciAqY2xvY2tfbmFtZSk7CisKICNlbmRpZiAvKiBfX2RwdV9rbXNfSF9fICovCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9wb3dlcl9oYW5kbGUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZHB1X3Bvd2VyX2hhbmRsZS5jCmluZGV4IGU5ZTM0NGEuLjEyNjAyYWUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X3Bvd2VyX2hhbmRsZS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZHB1X3Bvd2VyX2hhbmRsZS5jCkBAIC0xMyw3ICsxMyw2IEBACiAKICNk ZWZpbmUgcHJfZm10KGZtdCkJIltkcm06JXM6JWRdOiAiIGZtdCwgX19mdW5jX18sIF9fTElORV9f CiAKLSNpbmNsdWRlIDxsaW51eC9jbGsuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNp bmNsdWRlIDxsaW51eC9vZi5oPgogI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgpAQCAtMjQ2LDYy ICsyNDUsNiBAQCBzdGF0aWMgaW50IGRwdV9wb3dlcl9wYXJzZV9kdF9zdXBwbHkoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldiwKIAlyZXR1cm4gcmM7CiB9CiAKLXN0YXRpYyBpbnQgZHB1X3Bv d2VyX3BhcnNlX2R0X2Nsb2NrKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCi0JCQkJCXN0 cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcCkKLXsKLQl1MzIgaSA9IDAsIHJjID0gMDsKLQljb25z dCBjaGFyICpjbG9ja19uYW1lOwotCXUzMiBjbG9ja19yYXRlID0gMDsKLQl1MzIgY2xvY2tfbWF4 X3JhdGUgPSAwOwotCWludCBudW1fY2xrID0gMDsKLQotCWlmICghcGRldiB8fCAhbXApIHsKLQkJ cHJfZXJyKCJpbnZhbGlkIGlucHV0IHBhcmFtIHBkZXY6JXBLIG1wOiVwS1xuIiwgcGRldiwgbXAp OwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQltcC0+bnVtX2NsayA9IDA7Ci0JbnVtX2NsayA9 IG9mX3Byb3BlcnR5X2NvdW50X3N0cmluZ3MocGRldi0+ZGV2Lm9mX25vZGUsCi0JCQkJCQkJImNs b2NrLW5hbWVzIik7Ci0JaWYgKG51bV9jbGsgPD0gMCkgewotCQlwcl9kZWJ1ZygiY2xvY2tzIGFy ZSBub3QgZGVmaW5lZFxuIik7Ci0JCWdvdG8gY2xrX2VycjsKLQl9Ci0KLQltcC0+bnVtX2NsayA9 IG51bV9jbGs7Ci0JbXAtPmNsa19jb25maWcgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwKLQkJ CXNpemVvZihzdHJ1Y3QgZHNzX2NsaykgKiBudW1fY2xrLCBHRlBfS0VSTkVMKTsKLQlpZiAoIW1w LT5jbGtfY29uZmlnKSB7Ci0JCXJjID0gLUVOT01FTTsKLQkJbXAtPm51bV9jbGsgPSAwOwotCQln b3RvIGNsa19lcnI7Ci0JfQotCi0JZm9yIChpID0gMDsgaSA8IG51bV9jbGs7IGkrKykgewotCQlv Zl9wcm9wZXJ0eV9yZWFkX3N0cmluZ19pbmRleChwZGV2LT5kZXYub2Zfbm9kZSwgImNsb2NrLW5h bWVzIiwKLQkJCQkJCQlpLCAmY2xvY2tfbmFtZSk7Ci0JCXN0cmxjcHkobXAtPmNsa19jb25maWdb aV0uY2xrX25hbWUsIGNsb2NrX25hbWUsCi0JCQkJc2l6ZW9mKG1wLT5jbGtfY29uZmlnW2ldLmNs a19uYW1lKSk7Ci0KLQkJb2ZfcHJvcGVydHlfcmVhZF91MzJfaW5kZXgocGRldi0+ZGV2Lm9mX25v ZGUsICJjbG9jay1yYXRlIiwKLQkJCQkJCQlpLCAmY2xvY2tfcmF0ZSk7Ci0JCW1wLT5jbGtfY29u ZmlnW2ldLnJhdGUgPSBjbG9ja19yYXRlOwotCi0JCWlmICghY2xvY2tfcmF0ZSkKLQkJCW1wLT5j bGtfY29uZmlnW2ldLnR5cGUgPSBEU1NfQ0xLX0FIQjsKLQkJZWxzZQotCQkJbXAtPmNsa19jb25m aWdbaV0udHlwZSA9IERTU19DTEtfUENMSzsKLQotCQljbG9ja19tYXhfcmF0ZSA9IDA7Ci0JCW9m X3Byb3BlcnR5X3JlYWRfdTMyX2luZGV4KHBkZXYtPmRldi5vZl9ub2RlLCAiY2xvY2stbWF4LXJh dGUiLAotCQkJCQkJCWksICZjbG9ja19tYXhfcmF0ZSk7Ci0JCW1wLT5jbGtfY29uZmlnW2ldLm1h eF9yYXRlID0gY2xvY2tfbWF4X3JhdGU7Ci0JfQotCi1jbGtfZXJyOgotCXJldHVybiByYzsKLX0K LQogI2lmZGVmIENPTkZJR19RQ09NX0JVU19TQ0FMSU5HCiAKICNkZWZpbmUgTUFYX0FYSV9QT1JU X0NPVU5UIDMKQEAgLTY4MSwxNiArNjI0LDEwIEBAIGludCBkcHVfcG93ZXJfcmVzb3VyY2VfaW5p dChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCW1wID0gJnBoYW5kbGUtPm1wOwogCXBo YW5kbGUtPmRldiA9ICZwZGV2LT5kZXY7CiAKLQlyYyA9IGRwdV9wb3dlcl9wYXJzZV9kdF9jbG9j ayhwZGV2LCBtcCk7Ci0JaWYgKHJjKSB7Ci0JCXByX2VycigiZGV2aWNlIGNsb2NrIHBhcnNpbmcg ZmFpbGVkXG4iKTsKLQkJZ290byBlbmQ7Ci0JfQotCiAJcmMgPSBkcHVfcG93ZXJfcGFyc2VfZHRf c3VwcGx5KHBkZXYsIG1wKTsKIAlpZiAocmMpIHsKIAkJcHJfZXJyKCJkZXZpY2UgdnJlZyBzdXBw bHkgcGFyc2luZyBmYWlsZWRcbiIpOwotCQlnb3RvIHBhcnNlX3ZyZWdfZXJyOworCQlyZXR1cm4g cmM7CiAJfQogCiAJcmMgPSBtc21fZHNzX2NvbmZpZ192cmVnKCZwZGV2LT5kZXYsCkBAIC03MDAs MTggKzYzNyw2IEBAIGludCBkcHVfcG93ZXJfcmVzb3VyY2VfaW5pdChzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2LAogCQlnb3RvIHZyZWdfZXJyOwogCX0KIAotCXJjID0gbXNtX2Rzc19nZXRf Y2xrKCZwZGV2LT5kZXYsIG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Nsayk7Ci0JaWYgKHJjKSB7 Ci0JCXByX2VycigiY2xvY2sgZ2V0IGZhaWxlZCByYz0lZFxuIiwgcmMpOwotCQlnb3RvIGNsa19l cnI7Ci0JfQotCi0JcmMgPSBtc21fZHNzX2Nsa19zZXRfcmF0ZShtcC0+Y2xrX2NvbmZpZywgbXAt Pm51bV9jbGspOwotCWlmIChyYykgewotCQlwcl9lcnIoImNsb2NrIHNldCByYXRlIGZhaWxlZCBy Yz0lZFxuIiwgcmMpOwotCQlnb3RvIGJ1c19lcnI7Ci0JfQotCiAJcmMgPSBkcHVfcG93ZXJfcmVn X2J1c19wYXJzZShwZGV2LCBwaGFuZGxlKTsKIAlpZiAocmMpIHsKIAkJcHJfZXJyKCJyZWdpc3Rl ciBidXMgcGFyc2UgZmFpbGVkIHJjPSVkXG4iLCByYyk7CkBAIC03NDIsMTggKzY2NywxMSBAQCBp bnQgZHB1X3Bvd2VyX3Jlc291cmNlX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwK IAkJZHB1X3Bvd2VyX2RhdGFfYnVzX3VucmVnaXN0ZXIoJnBoYW5kbGUtPmRhdGFfYnVzX2hhbmRs ZVtpXSk7CiAJZHB1X3Bvd2VyX3JlZ19idXNfdW5yZWdpc3RlcihwaGFuZGxlLT5yZWdfYnVzX2hk bCk7CiBidXNfZXJyOgotCW1zbV9kc3NfcHV0X2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9j bGspOwotY2xrX2VycjoKIAltc21fZHNzX2NvbmZpZ192cmVnKCZwZGV2LT5kZXYsIG1wLT52cmVn X2NvbmZpZywgbXAtPm51bV92cmVnLCAwKTsKIHZyZWdfZXJyOgogCWlmIChtcC0+dnJlZ19jb25m aWcpCiAJCWRldm1fa2ZyZWUoJnBkZXYtPmRldiwgbXAtPnZyZWdfY29uZmlnKTsKIAltcC0+bnVt X3ZyZWcgPSAwOwotcGFyc2VfdnJlZ19lcnI6Ci0JaWYgKG1wLT5jbGtfY29uZmlnKQotCQlkZXZt X2tmcmVlKCZwZGV2LT5kZXYsIG1wLT5jbGtfY29uZmlnKTsKLQltcC0+bnVtX2NsayA9IDA7Ci1l bmQ6CiAJcmV0dXJuIHJjOwogfQogCkBAIC03OTYsMTkgKzcxNCwxMiBAQCB2b2lkIGRwdV9wb3dl cl9yZXNvdXJjZV9kZWluaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKIAogCWRwdV9w b3dlcl9yZWdfYnVzX3VucmVnaXN0ZXIocGhhbmRsZS0+cmVnX2J1c19oZGwpOwogCi0JbXNtX2Rz c19wdXRfY2xrKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Nsayk7Ci0KIAltc21fZHNzX2NvbmZp Z192cmVnKCZwZGV2LT5kZXYsIG1wLT52cmVnX2NvbmZpZywgbXAtPm51bV92cmVnLCAwKTsKIAot CWlmIChtcC0+Y2xrX2NvbmZpZykKLQkJZGV2bV9rZnJlZSgmcGRldi0+ZGV2LCBtcC0+Y2xrX2Nv bmZpZyk7Ci0KIAlpZiAobXAtPnZyZWdfY29uZmlnKQogCQlkZXZtX2tmcmVlKCZwZGV2LT5kZXYs IG1wLT52cmVnX2NvbmZpZyk7CiAKIAltcC0+bnVtX3ZyZWcgPSAwOwotCW1wLT5udW1fY2xrID0g MDsKLQogfQogCiBpbnQgZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZShzdHJ1Y3QgZHB1X3Bvd2Vy X2hhbmRsZSAqcGhhbmRsZSwKQEAgLTg4NSwxMiArNzk2LDYgQEAgaW50IGRwdV9wb3dlcl9yZXNv dXJjZV9lbmFibGUoc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5kbGUsCiAJCQlnb3RvIHJl Z19idXNfaGRsX2VycjsKIAkJfQogCi0JCXJjID0gbXNtX2Rzc19lbmFibGVfY2xrKG1wLT5jbGtf Y29uZmlnLCBtcC0+bnVtX2NsaywgZW5hYmxlKTsKLQkJaWYgKHJjKSB7Ci0JCQlwcl9lcnIoImNs b2NrIGVuYWJsZSBmYWlsZWQgcmM6JWRcbiIsIHJjKTsKLQkJCWdvdG8gY2xrX2VycjsKLQkJfQot CiAJCWRwdV9wb3dlcl9ldmVudF90cmlnZ2VyX2xvY2tlZChwaGFuZGxlLAogCQkJCURQVV9QT1dF Ul9FVkVOVF9QT1NUX0VOQUJMRSk7CiAKQEAgLTg5OCw4ICs4MDMsNiBAQCBpbnQgZHB1X3Bvd2Vy X3Jlc291cmNlX2VuYWJsZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKIAkJZHB1 X3Bvd2VyX2V2ZW50X3RyaWdnZXJfbG9ja2VkKHBoYW5kbGUsCiAJCQkJRFBVX1BPV0VSX0VWRU5U X1BSRV9ESVNBQkxFKTsKIAotCQltc21fZHNzX2VuYWJsZV9jbGsobXAtPmNsa19jb25maWcsIG1w LT5udW1fY2xrLCBlbmFibGUpOwotCiAJCWRwdV9wb3dlcl9yZWdfYnVzX3VwZGF0ZShwaGFuZGxl LT5yZWdfYnVzX2hkbCwKIAkJCQkJCQltYXhfdXNlY2FzZV9uZHgpOwogCkBAIC05MTcsOCArODIw LDYgQEAgaW50IGRwdV9wb3dlcl9yZXNvdXJjZV9lbmFibGUoc3RydWN0IGRwdV9wb3dlcl9oYW5k bGUgKnBoYW5kbGUsCiAJbXV0ZXhfdW5sb2NrKCZwaGFuZGxlLT5waGFuZGxlX2xvY2spOwogCXJl dHVybiByYzsKIAotY2xrX2VycjoKLQlkcHVfcG93ZXJfcmVnX2J1c191cGRhdGUocGhhbmRsZS0+ cmVnX2J1c19oZGwsIHByZXZfdXNlY2FzZV9uZHgpOwogcmVnX2J1c19oZGxfZXJyOgogCW1zbV9k c3NfZW5hYmxlX3ZyZWcobXAtPnZyZWdfY29uZmlnLCBtcC0+bnVtX3ZyZWcsIDApOwogdnJlZ19l cnI6CkBAIC05MzAsMTAxICs4MzEsNiBAQCBpbnQgZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZShz dHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKIAlyZXR1cm4gcmM7CiB9CiAKLWludCBk cHVfcG93ZXJfY2xrX3NldF9yYXRlKHN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLCBj aGFyICpjbG9ja19uYW1lLAotCXU2NCByYXRlKQotewotCWludCBpLCByYyA9IC1FSU5WQUw7Ci0J c3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wOwotCi0JaWYgKCFwaGFuZGxlKSB7Ci0JCXByX2Vy cigiaW52YWxpZCBpbnB1dCBwb3dlciBoYW5kbGVcbiIpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9 Ci0JbXAgPSAmcGhhbmRsZS0+bXA7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbXAtPm51bV9jbGs7IGkr KykgewotCQlpZiAoIXN0cmNtcChtcC0+Y2xrX2NvbmZpZ1tpXS5jbGtfbmFtZSwgY2xvY2tfbmFt ZSkpIHsKLQkJCWlmIChtcC0+Y2xrX2NvbmZpZ1tpXS5tYXhfcmF0ZSAmJgotCQkJCQkocmF0ZSA+ IG1wLT5jbGtfY29uZmlnW2ldLm1heF9yYXRlKSkKLQkJCQlyYXRlID0gbXAtPmNsa19jb25maWdb aV0ubWF4X3JhdGU7Ci0KLQkJCW1wLT5jbGtfY29uZmlnW2ldLnJhdGUgPSByYXRlOwotCQkJcmMg PSBtc21fZHNzX2Nsa19zZXRfcmF0ZShtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGspOwotCQkJ YnJlYWs7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gcmM7Ci19Ci0KLXU2NCBkcHVfcG93ZXJfY2xrX2dl dF9yYXRlKHN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLCBjaGFyICpjbG9ja19uYW1l KQotewotCWludCBpOwotCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcDsKLQl1NjQgcmF0ZSA9 IC1FSU5WQUw7Ci0KLQlpZiAoIXBoYW5kbGUpIHsKLQkJcHJfZXJyKCJpbnZhbGlkIGlucHV0IHBv d2VyIGhhbmRsZVxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQltcCA9ICZwaGFuZGxlLT5t cDsKLQotCWZvciAoaSA9IDA7IGkgPCBtcC0+bnVtX2NsazsgaSsrKSB7Ci0JCWlmICghc3RyY21w KG1wLT5jbGtfY29uZmlnW2ldLmNsa19uYW1lLCBjbG9ja19uYW1lKSkgewotCQkJcmF0ZSA9IGNs a19nZXRfcmF0ZShtcC0+Y2xrX2NvbmZpZ1tpXS5jbGspOwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0K LQlyZXR1cm4gcmF0ZTsKLX0KLQotdTY0IGRwdV9wb3dlcl9jbGtfZ2V0X21heF9yYXRlKHN0cnVj dCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLAotCQljaGFyICpjbG9ja19uYW1lKQotewotCWlu dCBpOwotCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcDsKLQl1NjQgcmF0ZSA9IDA7Ci0KLQlp ZiAoIXBoYW5kbGUpIHsKLQkJcHJfZXJyKCJpbnZhbGlkIGlucHV0IHBvd2VyIGhhbmRsZVxuIik7 Ci0JCXJldHVybiAwOwotCX0KLQltcCA9ICZwaGFuZGxlLT5tcDsKLQotCWZvciAoaSA9IDA7IGkg PCBtcC0+bnVtX2NsazsgaSsrKSB7Ci0JCWlmICghc3RyY21wKG1wLT5jbGtfY29uZmlnW2ldLmNs a19uYW1lLCBjbG9ja19uYW1lKSkgewotCQkJcmF0ZSA9IG1wLT5jbGtfY29uZmlnW2ldLm1heF9y YXRlOwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gcmF0ZTsKLX0KLQotc3RydWN0IGNs ayAqZHB1X3Bvd2VyX2Nsa19nZXRfY2xrKHN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxl LAotCQljaGFyICpjbG9ja19uYW1lKQotewotCWludCBpOwotCXN0cnVjdCBkc3NfbW9kdWxlX3Bv d2VyICptcDsKLQlzdHJ1Y3QgY2xrICpjbGsgPSBOVUxMOwotCi0JaWYgKCFwaGFuZGxlKSB7Ci0J CXByX2VycigiaW52YWxpZCBpbnB1dCBwb3dlciBoYW5kbGVcbiIpOwotCQlyZXR1cm4gMDsKLQl9 Ci0JbXAgPSAmcGhhbmRsZS0+bXA7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbXAtPm51bV9jbGs7IGkr KykgewotCQlpZiAoIXN0cmNtcChtcC0+Y2xrX2NvbmZpZ1tpXS5jbGtfbmFtZSwgY2xvY2tfbmFt ZSkpIHsKLQkJCWNsayA9IG1wLT5jbGtfY29uZmlnW2ldLmNsazsKLQkJCWJyZWFrOwotCQl9Ci0J fQotCi0JcmV0dXJuIGNsazsKLX0KLQogc3RydWN0IGRwdV9wb3dlcl9ldmVudCAqZHB1X3Bvd2Vy X2hhbmRsZV9yZWdpc3Rlcl9ldmVudCgKIAkJc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5k bGUsCiAJCXUzMiBldmVudF90eXBlLCB2b2lkICgqY2JfZm5jKSh1MzIgZXZlbnRfdHlwZSwgdm9p ZCAqdXNyKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X3Bvd2VyX2hhbmRs ZS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfcG93ZXJfaGFuZGxlLmgKaW5kZXggMWVkYWU1 Yy4uODNmMDQ4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfcG93ZXJfaGFu ZGxlLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfcG93ZXJfaGFuZGxlLmgKQEAgLTIz MCw0NiArMjMwLDYgQEAgaW50IGRwdV9wb3dlcl9kYXRhX2J1c19zdGF0ZV91cGRhdGUoc3RydWN0 IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5kbGUsCiAJCQkJCQkJYm9vbCBlbmFibGUpOwogCiAvKioK LSAqIGRwdV9wb3dlcl9jbGtfc2V0X3JhdGUoKSAtIHNldCB0aGUgY2xvY2sgcmF0ZQotICogQHBk YXRhOiAgcG93ZXIgaGFuZGxlIGNvbnRhaW5pbmcgdGhlIHJlc291cmNlcwotICogQGNsb2NrX25h bWU6IGNsb2NrIG5hbWUgd2hpY2ggbmVlZHMgcmF0ZSB1cGRhdGUuCi0gKiBAcmF0ZTogICAgICAg UmVxdWVzdGVkIHJhdGUuCi0gKgotICogUmV0dXJuOiBlcnJvciBjb2RlLgotICovCi1pbnQgZHB1 X3Bvd2VyX2Nsa19zZXRfcmF0ZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGRhdGEsIGNoYXIg KmNsb2NrX25hbWUsCi0JdTY0IHJhdGUpOwotCi0vKioKLSAqIGRwdV9wb3dlcl9jbGtfZ2V0X3Jh dGUoKSAtIGdldCB0aGUgY2xvY2sgcmF0ZQotICogQHBkYXRhOiAgcG93ZXIgaGFuZGxlIGNvbnRh aW5pbmcgdGhlIHJlc291cmNlcwotICogQGNsb2NrX25hbWU6IGNsb2NrIG5hbWUgdG8gZ2V0IHRo ZSByYXRlCi0gKgotICogUmV0dXJuOiBjdXJyZW50IGNsb2NrIHJhdGUKLSAqLwotdTY0IGRwdV9w b3dlcl9jbGtfZ2V0X3JhdGUoc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBkYXRhLCBjaGFyICpj bG9ja19uYW1lKTsKLQotLyoqCi0gKiBkcHVfcG93ZXJfY2xrX2dldF9tYXhfcmF0ZSgpIC0gZ2V0 IHRoZSBtYXhpbXVtIGNsb2NrIHJhdGUKLSAqIEBwZGF0YTogIHBvd2VyIGhhbmRsZSBjb250YWlu aW5nIHRoZSByZXNvdXJjZXMKLSAqIEBjbG9ja19uYW1lOiBjbG9jayBuYW1lIHRvIGdldCB0aGUg bWF4IHJhdGUuCi0gKgotICogUmV0dXJuOiBtYXhpbXVtIGNsb2NrIHJhdGUgb3IgMCBpZiBub3Qg Zm91bmQuCi0gKi8KLXU2NCBkcHVfcG93ZXJfY2xrX2dldF9tYXhfcmF0ZShzdHJ1Y3QgZHB1X3Bv d2VyX2hhbmRsZSAqcGRhdGEsCi0JCWNoYXIgKmNsb2NrX25hbWUpOwotCi0vKioKLSAqIGRwdV9w b3dlcl9jbGtfZ2V0X2NsaygpIC0gZ2V0IHRoZSBjbG9jawotICogQHBkYXRhOiAgcG93ZXIgaGFu ZGxlIGNvbnRhaW5pbmcgdGhlIHJlc291cmNlcwotICogQGNsb2NrX25hbWU6IGNsb2NrIG5hbWUg dG8gZ2V0IHRoZSBjbGsgcG9pbnRlci4KLSAqCi0gKiBSZXR1cm46IFBvaW50ZXIgdG8gY2xvY2sK LSAqLwotc3RydWN0IGNsayAqZHB1X3Bvd2VyX2Nsa19nZXRfY2xrKHN0cnVjdCBkcHVfcG93ZXJf aGFuZGxlICpwaGFuZGxlLAotCQljaGFyICpjbG9ja19uYW1lKTsKLQotLyoqCiAgKiBkcHVfcG93 ZXJfZGF0YV9idXNfc2V0X3F1b3RhKCkgLSBzZXQgZGF0YSBidXMgcXVvdGEgZm9yIHBvd2VyIGNs aWVudAogICogQHBoYW5kbGU6ICBwb3dlciBoYW5kbGUgY29udGFpbmluZyB0aGUgcmVzb3VyY2Vz CiAgKiBAY2xpZW50OiBjbGllbnQgaW5mb3JtYXRpb24gdG8gc2V0IHF1b3RhCi0tIApUaGUgUXVh bGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVy b3JhIEZvcnVtLAphIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0CgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFp bGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K