From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [DPU PATCH v2 07/12] drm/msm/dpu: remove clock management code from dpu_power_handle Date: Fri, 11 May 2018 11:35:10 -0400 Message-ID: <20180511153510.GT33053@art_vandelay> References: <1526050178-31893-1-git-send-email-ryadav@codeaurora.org> <1526050178-31893-8-git-send-email-ryadav@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1526050178-31893-8-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: Rajesh Yadav Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gRnJpLCBNYXkgMTEsIDIwMTggYXQgMDg6MTk6MzNQTSArMDUzMCwgUmFqZXNoIFlhZGF2IHdy b3RlOgo+IE1EU1MgYW5kIGRwdSBkcml2ZXJzIG1hbmFnZSB0aGVpciByZXNwZWN0aXZlIGNsb2Nr cyB2aWEKPiBydW50aW1lX3BtLiBSZW1vdmUgY3VzdG9tIGNsb2NrIG1hbmFnZW1lbnQgY29kZSBm cm9tCj4gZHB1X3Bvd2VyX2hhbmRsZS4KPiAKPiBBbHNvIGRwdSBjb3JlIGNsb2NrIG1hbmFnZW1l bnQgY29kZSBpcyByZXN0cmljdGVkIHRvCj4gZHB1X2NvcmVfcGVyZiBtb2R1bGUuCj4gCj4gQ2hh bmdlcyBpbiB2MjoKPiAJLSByZW1vdmUgbG9jYWwgdmFyaWFibGUgdG8gaG9sZCBhbmQgcmV0dXJu IGVycm9yIGNvZGUKPiAJICBpbiBfZHB1X2NvcmVfcGVyZl9zZXRfY29yZV9jbGtfcmF0ZSgpIGlu c3RlYWQgcmV0dXJuCj4gCSAgcmV0Y29kZSBkaXJlY3RseSBmcm9tIG1zbV9kc3NfY2xrX3NldF9y YXRlKCkgY2FsbCAoU2VhbiBQYXVsKQo+IAktIGRwdV9jb3JlX3BlcmZfaW5pdCgpIGlzIGNhbGxl ZCBmcm9tIGRwdV9rbXNfaHdfaW5pdCgpIGFuZAo+IAkgIG1vc3Qgb2YgdGhlIHBhcmFtcyBwYXNz ZWQgYXJlIGFscmVhZHkgdmFsaWRhdGVkIHNvIHJlbW92ZQo+IAkgIHJlZHVuZGFudCBjaGVja3Mg ZnJvbSBkcHVfY29yZV9wZXJmX2luaXQoKSAoU2VhbiBQYXVsKQo+IAktIHJldHVybiAmbXAtPmNs a19jb25maWdbaV0gZGlyZWN0bHkgdG8gYXZvaWQgbG9jYWwgdmFyaWFibGUKPiAJICBpbiBfZHB1 X2ttc19nZXRfY2xrKCkgKFNlYW4gUGF1bCkKPiAJLSBpbnZlcnQgY29uZGl0aW9uYWwgY2hlY2sg dG8gZWxpbWluYXRlIGxvY2FsIHJhdGUgdmFyaWFibGUKPiAJICBmcm9tIGRwdV9rbXNfZ2V0X2Ns a19yYXRlKCkgKFNlYW4gUGF1bCkKPiAJLSByZW1vdmUgZW5kIGxhYmVsIGZyb20gZHB1X3Bvd2Vy X3Jlc291cmNlX2luaXQoKSBhbmQgcmV0dXJuCj4gCSAgZGlyZWN0bHkgb24gZHB1X3Bvd2VyX3Bh cnNlX2R0X3N1cHBseSgpIGZhaWx1cmUgYXMgbm8gY2xlYW51cAo+IAkgIGlzIG5lZWRlZCAoU2Vh biBQYXVsKQo+IAktIHJlbW92ZSBjaGVja3MgZm9yIHZ0b3RhbCBhbmQgdnJlZnJlc2ggZnJvbQo+ ICAJICBkcHVfZW5jb2Rlcl9waHlzX2NtZF90ZWFyY2hlY2tfY29uZmlnKCkgYXMgdGhleSBzaG91 bGQgYmUKPiAJICB2YWxpZCBpbiBtb2RlX3NldCBjYWxsIChTZWFuIFBhdWwpCj4gCj4gU2lnbmVk LW9mZi1ieTogUmFqZXNoIFlhZGF2IDxyeWFkYXZAY29kZWF1cm9yYS5vcmc+CgpSZXZpZXdlZC1i eTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cgo+IC0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmMgICAgICB8ICA0MSArKy0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmggICAgICB8ICAgOCAr LQo+ICAuLi4vZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMgICB8 ICAgOSArLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMgICAgICAg ICAgICB8ICAyOCArKy0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5o ICAgICAgICAgICAgfCAgIDkgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9wb3dlcl9oYW5k bGUuYyAgICAgICAgICAgICB8IDE5NiArLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9n cHUvZHJtL21zbS9kcHVfcG93ZXJfaGFuZGxlLmggICAgICAgICAgICAgfCAgNDAgLS0tLS0KPiAg NyBmaWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCAyNjggZGVsZXRpb25zKC0pCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX3BlcmYu YyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX3BlcmYuYwo+IGluZGV4 IDk4MWY3N2YuLjViNzkwNzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2NvcmVfcGVyZi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2NvcmVfcGVyZi5jCj4gQEAgLTM2NSw2ICszNjUsMTcgQEAgdm9pZCBkcHVfY29yZV9w ZXJmX2NydGNfcmVsZWFzZV9idyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAl9Cj4gIH0KPiAg Cj4gK3N0YXRpYyBpbnQgX2RwdV9jb3JlX3BlcmZfc2V0X2NvcmVfY2xrX3JhdGUoc3RydWN0IGRw dV9rbXMgKmttcywgdTY0IHJhdGUpCj4gK3sKPiArCXN0cnVjdCBkc3NfY2xrICpjb3JlX2NsayA9 IGttcy0+cGVyZi5jb3JlX2NsazsKPiArCj4gKwlpZiAoY29yZV9jbGstPm1heF9yYXRlICYmIChy YXRlID4gY29yZV9jbGstPm1heF9yYXRlKSkKPiArCQlyYXRlID0gY29yZV9jbGstPm1heF9yYXRl Owo+ICsKPiArCWNvcmVfY2xrLT5yYXRlID0gcmF0ZTsKPiArCXJldHVybiBtc21fZHNzX2Nsa19z ZXRfcmF0ZShjb3JlX2NsaywgMSk7Cj4gK30KPiArCj4gIHN0YXRpYyB1NjQgX2RwdV9jb3JlX3Bl cmZfZ2V0X2NvcmVfY2xrX3JhdGUoc3RydWN0IGRwdV9rbXMgKmttcykKPiAgewo+ICAJdTY0IGNs a19yYXRlID0ga21zLT5wZXJmLnBlcmZfdHVuZS5taW5fY29yZV9jbGs7Cj4gQEAgLTM3Niw3ICsz ODcsOCBAQCBzdGF0aWMgdTY0IF9kcHVfY29yZV9wZXJmX2dldF9jb3JlX2Nsa19yYXRlKHN0cnVj dCBkcHVfa21zICprbXMpCj4gIAkJCWRwdV9jc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRj LT5zdGF0ZSk7Cj4gIAkJCWNsa19yYXRlID0gbWF4KGRwdV9jc3RhdGUtPm5ld19wZXJmLmNvcmVf Y2xrX3JhdGUsCj4gIAkJCQkJCQljbGtfcmF0ZSk7Cj4gLQkJCWNsa19yYXRlID0gY2xrX3JvdW5k X3JhdGUoa21zLT5wZXJmLmNvcmVfY2xrLCBjbGtfcmF0ZSk7Cj4gKwkJCWNsa19yYXRlID0gY2xr X3JvdW5kX3JhdGUoa21zLT5wZXJmLmNvcmVfY2xrLT5jbGssCj4gKwkJCQkJY2xrX3JhdGUpOwo+ ICAJCX0KPiAgCX0KPiAgCj4gQEAgLTQ4NCwxNSArNDk2LDExIEBAIHZvaWQgZHB1X2NvcmVfcGVy Zl9jcnRjX3VwZGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJCURQVV9FVlQzMihr bXMtPmRldiwgc3RvcF9yZXEsIGNsa19yYXRlKTsKPiAgCj4gLQkJLyogVGVtcCBjaGFuZ2UgdG8g YXZvaWQgY3Jhc2ggaW4gY2xrX3NldF9yYXRlIEFQSS4gKi8KPiAtI2lmZGVmIFFDT01fRFBVX1NF VF9DTEsKPiAtCQlpZiAoZHB1X3Bvd2VyX2Nsa19zZXRfcmF0ZSgmcHJpdi0+cGhhbmRsZSwKPiAt CQkJCQkgICBrbXMtPnBlcmYuY2xrX25hbWUsIGNsa19yYXRlKSkgewo+ICsJCWlmIChfZHB1X2Nv cmVfcGVyZl9zZXRfY29yZV9jbGtfcmF0ZShrbXMsIGNsa19yYXRlKSkgewo+ICAJCQlEUFVfRVJS T1IoImZhaWxlZCB0byBzZXQgJXMgY2xvY2sgcmF0ZSAlbGx1XG4iLAo+IC0JCQkJCWttcy0+cGVy Zi5jbGtfbmFtZSwgY2xrX3JhdGUpOwo+ICsJCQkJCWttcy0+cGVyZi5jb3JlX2Nsay0+Y2xrX25h bWUsIGNsa19yYXRlKTsKPiAgCQkJcmV0dXJuOwo+ICAJCX0KPiAtI2VuZGlmCj4gIAo+ICAJCWtt cy0+cGVyZi5jb3JlX2Nsa19yYXRlID0gY2xrX3JhdGU7Cj4gIAkJRFBVX0RFQlVHKCJ1cGRhdGUg Y2xrIHJhdGUgPSAlbGxkIEhaXG4iLCBjbGtfcmF0ZSk7Cj4gQEAgLTY1Niw3ICs2NjQsNiBAQCB2 b2lkIGRwdV9jb3JlX3BlcmZfZGVzdHJveShzdHJ1Y3QgZHB1X2NvcmVfcGVyZiAqcGVyZikKPiAg CWRwdV9jb3JlX3BlcmZfZGVidWdmc19kZXN0cm95KHBlcmYpOwo+ICAJcGVyZi0+bWF4X2NvcmVf Y2xrX3JhdGUgPSAwOwo+ICAJcGVyZi0+Y29yZV9jbGsgPSBOVUxMOwo+IC0JcGVyZi0+Y2xrX25h bWUgPSBOVUxMOwo+ICAJcGVyZi0+cGhhbmRsZSA9IE5VTEw7Cj4gIAlwZXJmLT5jYXRhbG9nID0g TlVMTDsKPiAgCXBlcmYtPmRldiA9IE5VTEw7Cj4gQEAgLTY2Nyw5ICs2NzQsOSBAQCBpbnQgZHB1 X2NvcmVfcGVyZl9pbml0KHN0cnVjdCBkcHVfY29yZV9wZXJmICpwZXJmLAo+ICAJCXN0cnVjdCBk cHVfbWRzc19jZmcgKmNhdGFsb2csCj4gIAkJc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5k bGUsCj4gIAkJc3RydWN0IGRwdV9wb3dlcl9jbGllbnQgKnBjbGllbnQsCj4gLQkJY2hhciAqY2xr X25hbWUpCj4gKwkJc3RydWN0IGRzc19jbGsgKmNvcmVfY2xrKQo+ICB7Cj4gLQlpZiAoIXBlcmYg fHwgIWRldiB8fCAhY2F0YWxvZyB8fCAhcGhhbmRsZSB8fCAhcGNsaWVudCB8fCAhY2xrX25hbWUp IHsKPiArCWlmICghcGNsaWVudCkgewo+ICAJCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbWV0ZXJz XG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiBAQCAtNjc4LDIzICs2ODUsMTMgQEAg aW50IGRwdV9jb3JlX3BlcmZfaW5pdChzdHJ1Y3QgZHB1X2NvcmVfcGVyZiAqcGVyZiwKPiAgCXBl cmYtPmNhdGFsb2cgPSBjYXRhbG9nOwo+ICAJcGVyZi0+cGhhbmRsZSA9IHBoYW5kbGU7Cj4gIAlw ZXJmLT5wY2xpZW50ID0gcGNsaWVudDsKPiAtCXBlcmYtPmNsa19uYW1lID0gY2xrX25hbWU7Cj4g LQo+IC0JcGVyZi0+Y29yZV9jbGsgPSBkcHVfcG93ZXJfY2xrX2dldF9jbGsocGhhbmRsZSwgY2xr X25hbWUpOwo+IC0JaWYgKCFwZXJmLT5jb3JlX2Nsaykgewo+IC0JCURQVV9FUlJPUigiaW52YWxp ZCBjb3JlIGNsa1xuIik7Cj4gLQkJZ290byBlcnI7Cj4gLQl9Cj4gKwlwZXJmLT5jb3JlX2NsayA9 IGNvcmVfY2xrOwo+ICAKPiAtCXBlcmYtPm1heF9jb3JlX2Nsa19yYXRlID0gZHB1X3Bvd2VyX2Ns a19nZXRfbWF4X3JhdGUocGhhbmRsZSwgY2xrX25hbWUpOwo+ICsJcGVyZi0+bWF4X2NvcmVfY2xr X3JhdGUgPSBjb3JlX2Nsay0+bWF4X3JhdGU7Cj4gIAlpZiAoIXBlcmYtPm1heF9jb3JlX2Nsa19y YXRlKSB7Cj4gIAkJRFBVX0RFQlVHKCJvcHRpb25hbCBtYXggY29yZSBjbGsgcmF0ZSwgdXNlIGRl ZmF1bHRcbiIpOwo+ICAJCXBlcmYtPm1heF9jb3JlX2Nsa19yYXRlID0gRFBVX1BFUkZfREVGQVVM VF9NQVhfQ09SRV9DTEtfUkFURTsKPiAgCX0KPiAgCj4gIAlyZXR1cm4gMDsKPiAtCj4gLWVycjoK PiAtCWRwdV9jb3JlX3BlcmZfZGVzdHJveShwZXJmKTsKPiAtCXJldHVybiAtRU5PREVWOwo+ICB9 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX3Bl cmYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX3BlcmYuaAo+IGlu ZGV4IDE5NjVmZjUuLjljMWE3MTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2NvcmVfcGVyZi5oCj4gQEAgLTU0LDcgKzU0LDYgQEAgc3RydWN0IGRwdV9jb3Jl X3BlcmZfdHVuZSB7Cj4gICAqIEBjYXRhbG9nOiBQb2ludGVyIHRvIGNhdGFsb2cgY29uZmlndXJh dGlvbgo+ICAgKiBAcGhhbmRsZTogUG9pbnRlciB0byBwb3dlciBoYW5kbGVyCj4gICAqIEBwY2xp ZW50OiBQb2ludGVyIHRvIHBvd2VyIGNsaWVudAo+IC0gKiBAY2xrX25hbWU6IGNvcmUgY2xvY2sg bmFtZQo+ICAgKiBAY29yZV9jbGs6IFBvaW50ZXIgdG8gY29yZSBjbG9jayBzdHJ1Y3R1cmUKPiAg ICogQGNvcmVfY2xrX3JhdGU6IGN1cnJlbnQgY29yZSBjbG9jayByYXRlCj4gICAqIEBtYXhfY29y ZV9jbGtfcmF0ZTogbWF4aW11bSBhbGxvd2FibGUgY29yZSBjbG9jayByYXRlCj4gQEAgLTcwLDgg KzY5LDcgQEAgc3RydWN0IGRwdV9jb3JlX3BlcmYgewo+ICAJc3RydWN0IGRwdV9tZHNzX2NmZyAq Y2F0YWxvZzsKPiAgCXN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlOwo+ICAJc3RydWN0 IGRwdV9wb3dlcl9jbGllbnQgKnBjbGllbnQ7Cj4gLQljaGFyICpjbGtfbmFtZTsKPiAtCXN0cnVj dCBjbGsgKmNvcmVfY2xrOwo+ICsJc3RydWN0IGRzc19jbGsgKmNvcmVfY2xrOwo+ICAJdTY0IGNv cmVfY2xrX3JhdGU7Cj4gIAl1NjQgbWF4X2NvcmVfY2xrX3JhdGU7Cj4gIAlzdHJ1Y3QgZHB1X2Nv cmVfcGVyZl90dW5lIHBlcmZfdHVuZTsKPiBAQCAtMTE4LDE0ICsxMTYsMTQgQEAgdm9pZCBkcHVf Y29yZV9wZXJmX2NydGNfdXBkYXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgICogQGNhdGFs b2c6IFBvaW50ZXIgdG8gY2F0YWxvZwo+ICAgKiBAcGhhbmRsZTogUG9pbnRlciB0byBwb3dlciBo YW5kbGUKPiAgICogQHBjbGllbnQ6IFBvaW50ZXIgdG8gcG93ZXIgY2xpZW50Cj4gLSAqIEBjbGtf bmFtZTogY29yZSBjbG9jayBuYW1lCj4gKyAqIEBjb3JlX2NsazogcG9pbnRlciB0byBjb3JlIGNs b2NrCj4gICAqLwo+ICBpbnQgZHB1X2NvcmVfcGVyZl9pbml0KHN0cnVjdCBkcHVfY29yZV9wZXJm ICpwZXJmLAo+ICAJCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJc3RydWN0IGRwdV9tZHNz X2NmZyAqY2F0YWxvZywKPiAgCQlzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAg CQlzdHJ1Y3QgZHB1X3Bvd2VyX2NsaWVudCAqcGNsaWVudCwKPiAtCQljaGFyICpjbGtfbmFtZSk7 Cj4gKwkJc3RydWN0IGRzc19jbGsgKmNvcmVfY2xrKTsKPiAgCj4gIC8qKgo+ICAgKiBkcHVfY29y ZV9wZXJmX2RlYnVnZnNfaW5pdCAtIGluaXRpYWxpemUgZGVidWdmcyBmb3IgY29yZSBwZXJmb3Jt YW5jZSBjb250ZXh0Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9lbmNvZGVyX3BoeXNfY21kLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfZW5jb2Rlcl9waHlzX2NtZC5jCj4gaW5kZXggMDcyOTM5Yy4uMzg4ZGUzOCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19j bWQuYwo+IEBAIC00MjgsMTEgKzQyOCwxMCBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlz X2NtZF90ZWFyY2hlY2tfY29uZmlnKAo+ICAJICogdnN5bmNfY291bnQgaXMgcmF0aW8gb2YgTURQ IFZTWU5DIGNsb2NrIGZyZXF1ZW5jeSB0byBMQ0QgcGFuZWwKPiAgCSAqIGZyZXF1ZW5jeSBkaXZp ZGVkIGJ5IHRoZSBuby4gb2Ygcm93cyAobGluZXMpIGluIHRoZSBMQ0RwYW5lbC4KPiAgCSAqLwo+ IC0JdnN5bmNfaHogPSBkcHVfcG93ZXJfY2xrX2dldF9yYXRlKCZwcml2LT5waGFuZGxlLCAidnN5 bmNfY2xrIik7Cj4gLQlpZiAoIXZzeW5jX2h6IHx8ICFtb2RlLT52dG90YWwgfHwgIW1vZGUtPnZy ZWZyZXNoKSB7Cj4gLQkJRFBVX0RFQlVHX0NNREVOQyhjbWRfZW5jLAo+IC0JCQkiaW52YWxpZCBw YXJhbXMgLSB2c3luY19oeiAldSB2dG90ICV1IHZyZWZyZXNoICV1XG4iLAo+IC0JCQl2c3luY19o eiwgbW9kZS0+dnRvdGFsLCBtb2RlLT52cmVmcmVzaCk7Cj4gKwl2c3luY19oeiA9IGRwdV9rbXNf Z2V0X2Nsa19yYXRlKGRwdV9rbXMsICJ2c3luY19jbGsiKTsKPiArCWlmICh2c3luY19oeiA8PSAw KSB7Cj4gKwkJRFBVX0RFQlVHX0NNREVOQyhjbWRfZW5jLCAiaW52YWxpZCAtIHZzeW5jX2h6ICV1 XG4iLAo+ICsJCQkJIHZzeW5jX2h6KTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKPiBpbmRleCBjZGE0ZDEyLi4zNDliZGE1IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYwo+IEBAIC0xNDk5LDYg KzE0OTksMzEgQEAgc3RhdGljIGludCBfZHB1X2ttc19tbXVfaW5pdChzdHJ1Y3QgZHB1X2ttcyAq ZHB1X2ttcykKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gK3N0YXRpYyBzdHJ1Y3QgZHNzX2Ns ayAqX2RwdV9rbXNfZ2V0X2NsayhzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcywKPiArCQljaGFyICpj bG9ja19uYW1lKQo+ICt7Cj4gKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXAgPSAmZHB1X2tt cy0+bXA7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgbXAtPm51bV9jbGs7IGkr Kykgewo+ICsJCWlmICghc3RyY21wKG1wLT5jbGtfY29uZmlnW2ldLmNsa19uYW1lLCBjbG9ja19u YW1lKSkKPiArCQkJcmV0dXJuICZtcC0+Y2xrX2NvbmZpZ1tpXTsKPiArCX0KPiArCj4gKwlyZXR1 cm4gTlVMTDsKPiArfQo+ICsKPiArdTY0IGRwdV9rbXNfZ2V0X2Nsa19yYXRlKHN0cnVjdCBkcHVf a21zICpkcHVfa21zLCBjaGFyICpjbG9ja19uYW1lKQo+ICt7Cj4gKwlzdHJ1Y3QgZHNzX2NsayAq Y2xrOwo+ICsKPiArCWNsayA9IF9kcHVfa21zX2dldF9jbGsoZHB1X2ttcywgY2xvY2tfbmFtZSk7 Cj4gKwlpZiAoIWNsaykKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlyZXR1cm4gY2xrX2dl dF9yYXRlKGNsay0+Y2xrKTsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgZHB1X2ttc19oYW5kbGVf cG93ZXJfZXZlbnQodTMyIGV2ZW50X3R5cGUsIHZvaWQgKnVzcikKPiAgewo+ICAJc3RydWN0IGRw dV9rbXMgKmRwdV9rbXMgPSB1c3I7Cj4gQEAgLTE2OTYsNyArMTcyMSw4IEBAIHN0YXRpYyBpbnQg ZHB1X2ttc19od19pbml0KHN0cnVjdCBtc21fa21zICprbXMpCj4gICNlbmRpZgo+ICAKPiAgCXJj ID0gZHB1X2NvcmVfcGVyZl9pbml0KCZkcHVfa21zLT5wZXJmLCBkZXYsIGRwdV9rbXMtPmNhdGFs b2csCj4gLQkJCSZwcml2LT5waGFuZGxlLCBwcml2LT5wY2xpZW50LCAiY29yZV9jbGsiKTsKPiAr CQkJJnByaXYtPnBoYW5kbGUsIHByaXYtPnBjbGllbnQsCj4gKwkJCV9kcHVfa21zX2dldF9jbGso ZHB1X2ttcywgImNvcmVfY2xrIikpOwo+ICAJaWYgKHJjKSB7Cj4gIAkJRFBVX0VSUk9SKCJmYWls ZWQgdG8gaW5pdCBwZXJmICVkXG4iLCByYyk7Cj4gIAkJZ290byBwZXJmX2VycjsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5oIGIvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5oCj4gaW5kZXggM2M2OTkyMS4uYTgyNTVmZSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmgKPiBAQCAtNTM3LDQg KzUzNywxMyBAQCBzdHJ1Y3QgZHB1X2ttc19mYm8gKmRwdV9rbXNfZmJvX2FsbG9jKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gIAo+ICB2b2lkIGRwdV9rbXNfZW5jb2Rlcl9lbmFibGUoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPiAgCj4gKy8qKgo+ICsgKiBkcHVfa21zX2dldF9jbGtf cmF0ZSgpIC0gZ2V0IHRoZSBjbG9jayByYXRlCj4gKyAqIEBkcHVfa21zOiAgcG9pbmVyIHRvIGRw dV9rbXMgc3RydWN0dXJlCj4gKyAqIEBjbG9ja19uYW1lOiBjbG9jayBuYW1lIHRvIGdldCB0aGUg cmF0ZQo+ICsgKgo+ICsgKiBSZXR1cm46IGN1cnJlbnQgY2xvY2sgcmF0ZQo+ICsgKi8KPiArdTY0 IGRwdV9rbXNfZ2V0X2Nsa19yYXRlKHN0cnVjdCBkcHVfa21zICpkcHVfa21zLCBjaGFyICpjbG9j a19uYW1lKTsKPiArCj4gICNlbmRpZiAvKiBfX2RwdV9rbXNfSF9fICovCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X3Bvd2VyX2hhbmRsZS5jIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kcHVfcG93ZXJfaGFuZGxlLmMKPiBpbmRleCBlOWUzNDRhLi4xMjYwMmFlIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X3Bvd2VyX2hhbmRsZS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kcHVfcG93ZXJfaGFuZGxlLmMKPiBAQCAtMTMsNyArMTMsNiBAQAo+ ICAKPiAgI2RlZmluZSBwcl9mbXQoZm10KQkiW2RybTolczolZF06ICIgZm10LCBfX2Z1bmNfXywg X19MSU5FX18KPiAgCj4gLSNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiAgI2luY2x1ZGUgPGxpbnV4 L2tlcm5lbC5oPgo+ICAjaW5jbHVkZSA8bGludXgvb2YuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3N0 cmluZy5oPgo+IEBAIC0yNDYsNjIgKzI0NSw2IEBAIHN0YXRpYyBpbnQgZHB1X3Bvd2VyX3BhcnNl X2R0X3N1cHBseShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+ICAJcmV0dXJuIHJjOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGRwdV9wb3dlcl9wYXJzZV9kdF9jbG9jayhzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2LAo+IC0JCQkJCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcCkK PiAtewo+IC0JdTMyIGkgPSAwLCByYyA9IDA7Cj4gLQljb25zdCBjaGFyICpjbG9ja19uYW1lOwo+ IC0JdTMyIGNsb2NrX3JhdGUgPSAwOwo+IC0JdTMyIGNsb2NrX21heF9yYXRlID0gMDsKPiAtCWlu dCBudW1fY2xrID0gMDsKPiAtCj4gLQlpZiAoIXBkZXYgfHwgIW1wKSB7Cj4gLQkJcHJfZXJyKCJp bnZhbGlkIGlucHV0IHBhcmFtIHBkZXY6JXBLIG1wOiVwS1xuIiwgcGRldiwgbXApOwo+IC0JCXJl dHVybiAtRUlOVkFMOwo+IC0JfQo+IC0KPiAtCW1wLT5udW1fY2xrID0gMDsKPiAtCW51bV9jbGsg PSBvZl9wcm9wZXJ0eV9jb3VudF9zdHJpbmdzKHBkZXYtPmRldi5vZl9ub2RlLAo+IC0JCQkJCQkJ ImNsb2NrLW5hbWVzIik7Cj4gLQlpZiAobnVtX2NsayA8PSAwKSB7Cj4gLQkJcHJfZGVidWcoImNs b2NrcyBhcmUgbm90IGRlZmluZWRcbiIpOwo+IC0JCWdvdG8gY2xrX2VycjsKPiAtCX0KPiAtCj4g LQltcC0+bnVtX2NsayA9IG51bV9jbGs7Cj4gLQltcC0+Y2xrX2NvbmZpZyA9IGRldm1fa3phbGxv YygmcGRldi0+ZGV2LAo+IC0JCQlzaXplb2Yoc3RydWN0IGRzc19jbGspICogbnVtX2NsaywgR0ZQ X0tFUk5FTCk7Cj4gLQlpZiAoIW1wLT5jbGtfY29uZmlnKSB7Cj4gLQkJcmMgPSAtRU5PTUVNOwo+ IC0JCW1wLT5udW1fY2xrID0gMDsKPiAtCQlnb3RvIGNsa19lcnI7Cj4gLQl9Cj4gLQo+IC0JZm9y IChpID0gMDsgaSA8IG51bV9jbGs7IGkrKykgewo+IC0JCW9mX3Byb3BlcnR5X3JlYWRfc3RyaW5n X2luZGV4KHBkZXYtPmRldi5vZl9ub2RlLCAiY2xvY2stbmFtZXMiLAo+IC0JCQkJCQkJaSwgJmNs b2NrX25hbWUpOwo+IC0JCXN0cmxjcHkobXAtPmNsa19jb25maWdbaV0uY2xrX25hbWUsIGNsb2Nr X25hbWUsCj4gLQkJCQlzaXplb2YobXAtPmNsa19jb25maWdbaV0uY2xrX25hbWUpKTsKPiAtCj4g LQkJb2ZfcHJvcGVydHlfcmVhZF91MzJfaW5kZXgocGRldi0+ZGV2Lm9mX25vZGUsICJjbG9jay1y YXRlIiwKPiAtCQkJCQkJCWksICZjbG9ja19yYXRlKTsKPiAtCQltcC0+Y2xrX2NvbmZpZ1tpXS5y YXRlID0gY2xvY2tfcmF0ZTsKPiAtCj4gLQkJaWYgKCFjbG9ja19yYXRlKQo+IC0JCQltcC0+Y2xr X2NvbmZpZ1tpXS50eXBlID0gRFNTX0NMS19BSEI7Cj4gLQkJZWxzZQo+IC0JCQltcC0+Y2xrX2Nv bmZpZ1tpXS50eXBlID0gRFNTX0NMS19QQ0xLOwo+IC0KPiAtCQljbG9ja19tYXhfcmF0ZSA9IDA7 Cj4gLQkJb2ZfcHJvcGVydHlfcmVhZF91MzJfaW5kZXgocGRldi0+ZGV2Lm9mX25vZGUsICJjbG9j ay1tYXgtcmF0ZSIsCj4gLQkJCQkJCQlpLCAmY2xvY2tfbWF4X3JhdGUpOwo+IC0JCW1wLT5jbGtf Y29uZmlnW2ldLm1heF9yYXRlID0gY2xvY2tfbWF4X3JhdGU7Cj4gLQl9Cj4gLQo+IC1jbGtfZXJy Ogo+IC0JcmV0dXJuIHJjOwo+IC19Cj4gLQo+ICAjaWZkZWYgQ09ORklHX1FDT01fQlVTX1NDQUxJ TkcKPiAgCj4gICNkZWZpbmUgTUFYX0FYSV9QT1JUX0NPVU5UIDMKPiBAQCAtNjgxLDE2ICs2MjQs MTAgQEAgaW50IGRwdV9wb3dlcl9yZXNvdXJjZV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYsCj4gIAltcCA9ICZwaGFuZGxlLT5tcDsKPiAgCXBoYW5kbGUtPmRldiA9ICZwZGV2LT5k ZXY7Cj4gIAo+IC0JcmMgPSBkcHVfcG93ZXJfcGFyc2VfZHRfY2xvY2socGRldiwgbXApOwo+IC0J aWYgKHJjKSB7Cj4gLQkJcHJfZXJyKCJkZXZpY2UgY2xvY2sgcGFyc2luZyBmYWlsZWRcbiIpOwo+ IC0JCWdvdG8gZW5kOwo+IC0JfQo+IC0KPiAgCXJjID0gZHB1X3Bvd2VyX3BhcnNlX2R0X3N1cHBs eShwZGV2LCBtcCk7Cj4gIAlpZiAocmMpIHsKPiAgCQlwcl9lcnIoImRldmljZSB2cmVnIHN1cHBs eSBwYXJzaW5nIGZhaWxlZFxuIik7Cj4gLQkJZ290byBwYXJzZV92cmVnX2VycjsKPiArCQlyZXR1 cm4gcmM7Cj4gIAl9Cj4gIAo+ICAJcmMgPSBtc21fZHNzX2NvbmZpZ192cmVnKCZwZGV2LT5kZXYs Cj4gQEAgLTcwMCwxOCArNjM3LDYgQEAgaW50IGRwdV9wb3dlcl9yZXNvdXJjZV9pbml0KHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4gIAkJZ290byB2cmVnX2VycjsKPiAgCX0KPiAgCj4g LQlyYyA9IG1zbV9kc3NfZ2V0X2NsaygmcGRldi0+ZGV2LCBtcC0+Y2xrX2NvbmZpZywgbXAtPm51 bV9jbGspOwo+IC0JaWYgKHJjKSB7Cj4gLQkJcHJfZXJyKCJjbG9jayBnZXQgZmFpbGVkIHJjPSVk XG4iLCByYyk7Cj4gLQkJZ290byBjbGtfZXJyOwo+IC0JfQo+IC0KPiAtCXJjID0gbXNtX2Rzc19j bGtfc2V0X3JhdGUobXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrKTsKPiAtCWlmIChyYykgewo+ IC0JCXByX2VycigiY2xvY2sgc2V0IHJhdGUgZmFpbGVkIHJjPSVkXG4iLCByYyk7Cj4gLQkJZ290 byBidXNfZXJyOwo+IC0JfQo+IC0KPiAgCXJjID0gZHB1X3Bvd2VyX3JlZ19idXNfcGFyc2UocGRl diwgcGhhbmRsZSk7Cj4gIAlpZiAocmMpIHsKPiAgCQlwcl9lcnIoInJlZ2lzdGVyIGJ1cyBwYXJz ZSBmYWlsZWQgcmM9JWRcbiIsIHJjKTsKPiBAQCAtNzQyLDE4ICs2NjcsMTEgQEAgaW50IGRwdV9w b3dlcl9yZXNvdXJjZV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4gIAkJZHB1 X3Bvd2VyX2RhdGFfYnVzX3VucmVnaXN0ZXIoJnBoYW5kbGUtPmRhdGFfYnVzX2hhbmRsZVtpXSk7 Cj4gIAlkcHVfcG93ZXJfcmVnX2J1c191bnJlZ2lzdGVyKHBoYW5kbGUtPnJlZ19idXNfaGRsKTsK PiAgYnVzX2VycjoKPiAtCW1zbV9kc3NfcHV0X2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9j bGspOwo+IC1jbGtfZXJyOgo+ICAJbXNtX2Rzc19jb25maWdfdnJlZygmcGRldi0+ZGV2LCBtcC0+ dnJlZ19jb25maWcsIG1wLT5udW1fdnJlZywgMCk7Cj4gIHZyZWdfZXJyOgo+ICAJaWYgKG1wLT52 cmVnX2NvbmZpZykKPiAgCQlkZXZtX2tmcmVlKCZwZGV2LT5kZXYsIG1wLT52cmVnX2NvbmZpZyk7 Cj4gIAltcC0+bnVtX3ZyZWcgPSAwOwo+IC1wYXJzZV92cmVnX2VycjoKPiAtCWlmIChtcC0+Y2xr X2NvbmZpZykKPiAtCQlkZXZtX2tmcmVlKCZwZGV2LT5kZXYsIG1wLT5jbGtfY29uZmlnKTsKPiAt CW1wLT5udW1fY2xrID0gMDsKPiAtZW5kOgo+ICAJcmV0dXJuIHJjOwo+ICB9Cj4gIAo+IEBAIC03 OTYsMTkgKzcxNCwxMiBAQCB2b2lkIGRwdV9wb3dlcl9yZXNvdXJjZV9kZWluaXQoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldiwKPiAgCj4gIAlkcHVfcG93ZXJfcmVnX2J1c191bnJlZ2lzdGVy KHBoYW5kbGUtPnJlZ19idXNfaGRsKTsKPiAgCj4gLQltc21fZHNzX3B1dF9jbGsobXAtPmNsa19j b25maWcsIG1wLT5udW1fY2xrKTsKPiAtCj4gIAltc21fZHNzX2NvbmZpZ192cmVnKCZwZGV2LT5k ZXYsIG1wLT52cmVnX2NvbmZpZywgbXAtPm51bV92cmVnLCAwKTsKPiAgCj4gLQlpZiAobXAtPmNs a19jb25maWcpCj4gLQkJZGV2bV9rZnJlZSgmcGRldi0+ZGV2LCBtcC0+Y2xrX2NvbmZpZyk7Cj4g LQo+ICAJaWYgKG1wLT52cmVnX2NvbmZpZykKPiAgCQlkZXZtX2tmcmVlKCZwZGV2LT5kZXYsIG1w LT52cmVnX2NvbmZpZyk7Cj4gIAo+ICAJbXAtPm51bV92cmVnID0gMDsKPiAtCW1wLT5udW1fY2xr ID0gMDsKPiAtCj4gIH0KPiAgCj4gIGludCBkcHVfcG93ZXJfcmVzb3VyY2VfZW5hYmxlKHN0cnVj dCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLAo+IEBAIC04ODUsMTIgKzc5Niw2IEBAIGludCBk cHVfcG93ZXJfcmVzb3VyY2VfZW5hYmxlKHN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxl LAo+ICAJCQlnb3RvIHJlZ19idXNfaGRsX2VycjsKPiAgCQl9Cj4gIAo+IC0JCXJjID0gbXNtX2Rz c19lbmFibGVfY2xrKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2NsaywgZW5hYmxlKTsKPiAtCQlp ZiAocmMpIHsKPiAtCQkJcHJfZXJyKCJjbG9jayBlbmFibGUgZmFpbGVkIHJjOiVkXG4iLCByYyk7 Cj4gLQkJCWdvdG8gY2xrX2VycjsKPiAtCQl9Cj4gLQo+ICAJCWRwdV9wb3dlcl9ldmVudF90cmln Z2VyX2xvY2tlZChwaGFuZGxlLAo+ICAJCQkJRFBVX1BPV0VSX0VWRU5UX1BPU1RfRU5BQkxFKTsK PiAgCj4gQEAgLTg5OCw4ICs4MDMsNiBAQCBpbnQgZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZShz dHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAgCQlkcHVfcG93ZXJfZXZlbnRfdHJp Z2dlcl9sb2NrZWQocGhhbmRsZSwKPiAgCQkJCURQVV9QT1dFUl9FVkVOVF9QUkVfRElTQUJMRSk7 Cj4gIAo+IC0JCW1zbV9kc3NfZW5hYmxlX2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGss IGVuYWJsZSk7Cj4gLQo+ICAJCWRwdV9wb3dlcl9yZWdfYnVzX3VwZGF0ZShwaGFuZGxlLT5yZWdf YnVzX2hkbCwKPiAgCQkJCQkJCW1heF91c2VjYXNlX25keCk7Cj4gIAo+IEBAIC05MTcsOCArODIw LDYgQEAgaW50IGRwdV9wb3dlcl9yZXNvdXJjZV9lbmFibGUoc3RydWN0IGRwdV9wb3dlcl9oYW5k bGUgKnBoYW5kbGUsCj4gIAltdXRleF91bmxvY2soJnBoYW5kbGUtPnBoYW5kbGVfbG9jayk7Cj4g IAlyZXR1cm4gcmM7Cj4gIAo+IC1jbGtfZXJyOgo+IC0JZHB1X3Bvd2VyX3JlZ19idXNfdXBkYXRl KHBoYW5kbGUtPnJlZ19idXNfaGRsLCBwcmV2X3VzZWNhc2VfbmR4KTsKPiAgcmVnX2J1c19oZGxf ZXJyOgo+ICAJbXNtX2Rzc19lbmFibGVfdnJlZyhtcC0+dnJlZ19jb25maWcsIG1wLT5udW1fdnJl ZywgMCk7Cj4gIHZyZWdfZXJyOgo+IEBAIC05MzAsMTAxICs4MzEsNiBAQCBpbnQgZHB1X3Bvd2Vy X3Jlc291cmNlX2VuYWJsZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAgCXJl dHVybiByYzsKPiAgfQo+ICAKPiAtaW50IGRwdV9wb3dlcl9jbGtfc2V0X3JhdGUoc3RydWN0IGRw dV9wb3dlcl9oYW5kbGUgKnBoYW5kbGUsIGNoYXIgKmNsb2NrX25hbWUsCj4gLQl1NjQgcmF0ZSkK PiAtewo+IC0JaW50IGksIHJjID0gLUVJTlZBTDsKPiAtCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2Vy ICptcDsKPiAtCj4gLQlpZiAoIXBoYW5kbGUpIHsKPiAtCQlwcl9lcnIoImludmFsaWQgaW5wdXQg cG93ZXIgaGFuZGxlXG4iKTsKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiAtCW1wID0gJnBo YW5kbGUtPm1wOwo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCBtcC0+bnVtX2NsazsgaSsrKSB7Cj4g LQkJaWYgKCFzdHJjbXAobXAtPmNsa19jb25maWdbaV0uY2xrX25hbWUsIGNsb2NrX25hbWUpKSB7 Cj4gLQkJCWlmIChtcC0+Y2xrX2NvbmZpZ1tpXS5tYXhfcmF0ZSAmJgo+IC0JCQkJCShyYXRlID4g bXAtPmNsa19jb25maWdbaV0ubWF4X3JhdGUpKQo+IC0JCQkJcmF0ZSA9IG1wLT5jbGtfY29uZmln W2ldLm1heF9yYXRlOwo+IC0KPiAtCQkJbXAtPmNsa19jb25maWdbaV0ucmF0ZSA9IHJhdGU7Cj4g LQkJCXJjID0gbXNtX2Rzc19jbGtfc2V0X3JhdGUobXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xr KTsKPiAtCQkJYnJlYWs7Cj4gLQkJfQo+IC0JfQo+IC0KPiAtCXJldHVybiByYzsKPiAtfQo+IC0K PiAtdTY0IGRwdV9wb3dlcl9jbGtfZ2V0X3JhdGUoc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBo YW5kbGUsIGNoYXIgKmNsb2NrX25hbWUpCj4gLXsKPiAtCWludCBpOwo+IC0Jc3RydWN0IGRzc19t b2R1bGVfcG93ZXIgKm1wOwo+IC0JdTY0IHJhdGUgPSAtRUlOVkFMOwo+IC0KPiAtCWlmICghcGhh bmRsZSkgewo+IC0JCXByX2VycigiaW52YWxpZCBpbnB1dCBwb3dlciBoYW5kbGVcbiIpOwo+IC0J CXJldHVybiAtRUlOVkFMOwo+IC0JfQo+IC0JbXAgPSAmcGhhbmRsZS0+bXA7Cj4gLQo+IC0JZm9y IChpID0gMDsgaSA8IG1wLT5udW1fY2xrOyBpKyspIHsKPiAtCQlpZiAoIXN0cmNtcChtcC0+Y2xr X2NvbmZpZ1tpXS5jbGtfbmFtZSwgY2xvY2tfbmFtZSkpIHsKPiAtCQkJcmF0ZSA9IGNsa19nZXRf cmF0ZShtcC0+Y2xrX2NvbmZpZ1tpXS5jbGspOwo+IC0JCQlicmVhazsKPiAtCQl9Cj4gLQl9Cj4g LQo+IC0JcmV0dXJuIHJhdGU7Cj4gLX0KPiAtCj4gLXU2NCBkcHVfcG93ZXJfY2xrX2dldF9tYXhf cmF0ZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAtCQljaGFyICpjbG9ja19u YW1lKQo+IC17Cj4gLQlpbnQgaTsKPiAtCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcDsKPiAt CXU2NCByYXRlID0gMDsKPiAtCj4gLQlpZiAoIXBoYW5kbGUpIHsKPiAtCQlwcl9lcnIoImludmFs aWQgaW5wdXQgcG93ZXIgaGFuZGxlXG4iKTsKPiAtCQlyZXR1cm4gMDsKPiAtCX0KPiAtCW1wID0g JnBoYW5kbGUtPm1wOwo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCBtcC0+bnVtX2NsazsgaSsrKSB7 Cj4gLQkJaWYgKCFzdHJjbXAobXAtPmNsa19jb25maWdbaV0uY2xrX25hbWUsIGNsb2NrX25hbWUp KSB7Cj4gLQkJCXJhdGUgPSBtcC0+Y2xrX2NvbmZpZ1tpXS5tYXhfcmF0ZTsKPiAtCQkJYnJlYWs7 Cj4gLQkJfQo+IC0JfQo+IC0KPiAtCXJldHVybiByYXRlOwo+IC19Cj4gLQo+IC1zdHJ1Y3QgY2xr ICpkcHVfcG93ZXJfY2xrX2dldF9jbGsoc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5kbGUs Cj4gLQkJY2hhciAqY2xvY2tfbmFtZSkKPiAtewo+IC0JaW50IGk7Cj4gLQlzdHJ1Y3QgZHNzX21v ZHVsZV9wb3dlciAqbXA7Cj4gLQlzdHJ1Y3QgY2xrICpjbGsgPSBOVUxMOwo+IC0KPiAtCWlmICgh cGhhbmRsZSkgewo+IC0JCXByX2VycigiaW52YWxpZCBpbnB1dCBwb3dlciBoYW5kbGVcbiIpOwo+ IC0JCXJldHVybiAwOwo+IC0JfQo+IC0JbXAgPSAmcGhhbmRsZS0+bXA7Cj4gLQo+IC0JZm9yIChp ID0gMDsgaSA8IG1wLT5udW1fY2xrOyBpKyspIHsKPiAtCQlpZiAoIXN0cmNtcChtcC0+Y2xrX2Nv bmZpZ1tpXS5jbGtfbmFtZSwgY2xvY2tfbmFtZSkpIHsKPiAtCQkJY2xrID0gbXAtPmNsa19jb25m aWdbaV0uY2xrOwo+IC0JCQlicmVhazsKPiAtCQl9Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIGNsazsK PiAtfQo+IC0KPiAgc3RydWN0IGRwdV9wb3dlcl9ldmVudCAqZHB1X3Bvd2VyX2hhbmRsZV9yZWdp c3Rlcl9ldmVudCgKPiAgCQlzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAgCQl1 MzIgZXZlbnRfdHlwZSwgdm9pZCAoKmNiX2ZuYykodTMyIGV2ZW50X3R5cGUsIHZvaWQgKnVzciks Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X3Bvd2VyX2hhbmRsZS5oIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfcG93ZXJfaGFuZGxlLmgKPiBpbmRleCAxZWRhZTVjLi44 M2YwNDhkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X3Bvd2VyX2hhbmRs ZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfcG93ZXJfaGFuZGxlLmgKPiBAQCAt MjMwLDQ2ICsyMzAsNiBAQCBpbnQgZHB1X3Bvd2VyX2RhdGFfYnVzX3N0YXRlX3VwZGF0ZShzdHJ1 Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAgCQkJCQkJCWJvb2wgZW5hYmxlKTsKPiAg Cj4gIC8qKgo+IC0gKiBkcHVfcG93ZXJfY2xrX3NldF9yYXRlKCkgLSBzZXQgdGhlIGNsb2NrIHJh dGUKPiAtICogQHBkYXRhOiAgcG93ZXIgaGFuZGxlIGNvbnRhaW5pbmcgdGhlIHJlc291cmNlcwo+ IC0gKiBAY2xvY2tfbmFtZTogY2xvY2sgbmFtZSB3aGljaCBuZWVkcyByYXRlIHVwZGF0ZS4KPiAt ICogQHJhdGU6ICAgICAgIFJlcXVlc3RlZCByYXRlLgo+IC0gKgo+IC0gKiBSZXR1cm46IGVycm9y IGNvZGUuCj4gLSAqLwo+IC1pbnQgZHB1X3Bvd2VyX2Nsa19zZXRfcmF0ZShzdHJ1Y3QgZHB1X3Bv d2VyX2hhbmRsZSAqcGRhdGEsIGNoYXIgKmNsb2NrX25hbWUsCj4gLQl1NjQgcmF0ZSk7Cj4gLQo+ IC0vKioKPiAtICogZHB1X3Bvd2VyX2Nsa19nZXRfcmF0ZSgpIC0gZ2V0IHRoZSBjbG9jayByYXRl Cj4gLSAqIEBwZGF0YTogIHBvd2VyIGhhbmRsZSBjb250YWluaW5nIHRoZSByZXNvdXJjZXMKPiAt ICogQGNsb2NrX25hbWU6IGNsb2NrIG5hbWUgdG8gZ2V0IHRoZSByYXRlCj4gLSAqCj4gLSAqIFJl dHVybjogY3VycmVudCBjbG9jayByYXRlCj4gLSAqLwo+IC11NjQgZHB1X3Bvd2VyX2Nsa19nZXRf cmF0ZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGRhdGEsIGNoYXIgKmNsb2NrX25hbWUpOwo+ IC0KPiAtLyoqCj4gLSAqIGRwdV9wb3dlcl9jbGtfZ2V0X21heF9yYXRlKCkgLSBnZXQgdGhlIG1h eGltdW0gY2xvY2sgcmF0ZQo+IC0gKiBAcGRhdGE6ICBwb3dlciBoYW5kbGUgY29udGFpbmluZyB0 aGUgcmVzb3VyY2VzCj4gLSAqIEBjbG9ja19uYW1lOiBjbG9jayBuYW1lIHRvIGdldCB0aGUgbWF4 IHJhdGUuCj4gLSAqCj4gLSAqIFJldHVybjogbWF4aW11bSBjbG9jayByYXRlIG9yIDAgaWYgbm90 IGZvdW5kLgo+IC0gKi8KPiAtdTY0IGRwdV9wb3dlcl9jbGtfZ2V0X21heF9yYXRlKHN0cnVjdCBk cHVfcG93ZXJfaGFuZGxlICpwZGF0YSwKPiAtCQljaGFyICpjbG9ja19uYW1lKTsKPiAtCj4gLS8q Kgo+IC0gKiBkcHVfcG93ZXJfY2xrX2dldF9jbGsoKSAtIGdldCB0aGUgY2xvY2sKPiAtICogQHBk YXRhOiAgcG93ZXIgaGFuZGxlIGNvbnRhaW5pbmcgdGhlIHJlc291cmNlcwo+IC0gKiBAY2xvY2tf bmFtZTogY2xvY2sgbmFtZSB0byBnZXQgdGhlIGNsayBwb2ludGVyLgo+IC0gKgo+IC0gKiBSZXR1 cm46IFBvaW50ZXIgdG8gY2xvY2sKPiAtICovCj4gLXN0cnVjdCBjbGsgKmRwdV9wb3dlcl9jbGtf Z2V0X2NsayhzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAtCQljaGFyICpjbG9j a19uYW1lKTsKPiAtCj4gLS8qKgo+ICAgKiBkcHVfcG93ZXJfZGF0YV9idXNfc2V0X3F1b3RhKCkg LSBzZXQgZGF0YSBidXMgcXVvdGEgZm9yIHBvd2VyIGNsaWVudAo+ICAgKiBAcGhhbmRsZTogIHBv d2VyIGhhbmRsZSBjb250YWluaW5nIHRoZSByZXNvdXJjZXMKPiAgICogQGNsaWVudDogY2xpZW50 IGluZm9ybWF0aW9uIHRvIHNldCBxdW90YQo+IC0tIAo+IFRoZSBRdWFsY29tbSBJbm5vdmF0aW9u IENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCj4gYSBM aW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAo+IAoKLS0gClNlYW4gUGF1bCwg U29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJl ZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=