From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v2 1/3] drm/msm/dpu: clean up references of DPU custom bus scaling Date: Wed, 14 Nov 2018 10:49:08 -0500 Message-ID: <20181114154908.GP154160@art_vandelay> References: <20181010092434.853-1-skolluku@codeaurora.org> <20181010092434.853-2-skolluku@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: <20181010092434.853-2-skolluku-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sravanthi Kollukuduru Cc: sean-p7yTbzM4H96eqtR555YLDQ@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: devicetree@vger.kernel.org T24gV2VkLCBPY3QgMTAsIDIwMTggYXQgMDI6NTQ6MzJQTSArMDUzMCwgU3JhdmFudGhpIEtvbGx1 a3VkdXJ1IHdyb3RlOgo+IFNpbmNlIHRoZSB1cHN0cmVhbSBpbnRlcmNvbm5lY3QgYnVzIGZyYW1l d29yayBoYXMgbGFuZGVkCj4gdXBzdHJlYW0sIHRoZSBleGlzdGluZyByZWZlcmVuY2VzIG9mIGN1 c3RvbSBidXMgc2NhbGluZwo+IG5lZWRzIHRvIGJlIGNsZWFuZWQgdXAuCgpKdXN0IGEgZmV3IG5p dHMgYmVsb3cuCgo+IAo+IENoYW5nZXMgaW4gdjI6Cj4gCS0gRml4ZWQgYnVpbGQgZXJyb3IgZHVl IHRvIHBhcnRpYWwgY2xlYW4gdXAKPiAKPiBTaWduZWQtb2ZmLWJ5OiBTcmF2YW50aGkgS29sbHVr dWR1cnUgPHNrb2xsdWt1QGNvZGVhdXJvcmEub3JnPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmMgICAgfCAxNTcgKysrKysrKysrKy0tLS0tLS0t LS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5oICAg IHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMgICAg ICAgICB8ICAxMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcG93ZXJf aGFuZGxlLmMgfCAgNDcgKystLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfcG93ZXJfaGFuZGxlLmggfCAgNjggLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfdHJhY2UuaCAgICAgICAgfCAgMjEgKy0tCj4gIDYgZmlsZXMgY2hhbmdl ZCwgODYgaW5zZXJ0aW9ucygrKSwgMjI0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmMgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmMKPiBpbmRleCA0MWM1MTkxZjkwNTYu LjRlZTZmMGRkMTRmNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfY29yZV9wZXJmLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfY29yZV9wZXJmLmMKPiBAQCAtOTAsNyArOTAsNiBAQCBzdGF0aWMgdm9pZCBfZHB1X2NvcmVf cGVyZl9jYWxjX2NydGMoc3RydWN0IGRwdV9rbXMgKmttcywKPiAgCQlzdHJ1Y3QgZHB1X2NvcmVf cGVyZl9wYXJhbXMgKnBlcmYpCj4gIHsKPiAgCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqZHB1X2Nz dGF0ZTsKPiAtCWludCBpOwo+ICAKPiAgCWlmICgha21zIHx8ICFrbXMtPmNhdGFsb2cgfHwgIWNy dGMgfHwgIXN0YXRlIHx8ICFwZXJmKSB7Cj4gIAkJRFBVX0VSUk9SKCJpbnZhbGlkIHBhcmFtZXRl cnNcbiIpOwo+IEBAIC0xMDEsMzUgKzEwMCwyNCBAQCBzdGF0aWMgdm9pZCBfZHB1X2NvcmVfcGVy Zl9jYWxjX2NydGMoc3RydWN0IGRwdV9rbXMgKmttcywKPiAgCW1lbXNldChwZXJmLCAwLCBzaXpl b2Yoc3RydWN0IGRwdV9jb3JlX3BlcmZfcGFyYW1zKSk7Cj4gIAo+ICAJaWYgKCFkcHVfY3N0YXRl LT5id19jb250cm9sKSB7Cj4gLQkJZm9yIChpID0gMDsgaSA8IERQVV9QT1dFUl9IQU5ETEVfREJV U19JRF9NQVg7IGkrKykgewo+IC0JCQlwZXJmLT5id19jdGxbaV0gPSBrbXMtPmNhdGFsb2ctPnBl cmYubWF4X2J3X2hpZ2ggKgo+ICsJCXBlcmYtPmJ3X2N0bCA9IGttcy0+Y2F0YWxvZy0+cGVyZi5t YXhfYndfaGlnaCAqCj4gIAkJCQkJMTAwMFVMTDsKPiAtCQkJcGVyZi0+bWF4X3Blcl9waXBlX2li W2ldID0gcGVyZi0+YndfY3RsW2ldOwo+IC0JCX0KPiArCQlwZXJmLT5tYXhfcGVyX3BpcGVfaWIg PSBwZXJmLT5id19jdGw7Cj4gIAkJcGVyZi0+Y29yZV9jbGtfcmF0ZSA9IGttcy0+cGVyZi5tYXhf Y29yZV9jbGtfcmF0ZTsKPiAgCX0gZWxzZSBpZiAoa21zLT5wZXJmLnBlcmZfdHVuZS5tb2RlID09 IERQVV9QRVJGX01PREVfTUlOSU1VTSkgewo+IC0JCWZvciAoaSA9IDA7IGkgPCBEUFVfUE9XRVJf SEFORExFX0RCVVNfSURfTUFYOyBpKyspIHsKPiAtCQkJcGVyZi0+YndfY3RsW2ldID0gMDsKPiAt CQkJcGVyZi0+bWF4X3Blcl9waXBlX2liW2ldID0gMDsKPiAtCQl9Cj4gKwkJcGVyZi0+YndfY3Rs ID0gMDsKPiArCQlwZXJmLT5tYXhfcGVyX3BpcGVfaWIgPSAwOwo+ICAJCXBlcmYtPmNvcmVfY2xr X3JhdGUgPSAwOwo+ICAJfSBlbHNlIGlmIChrbXMtPnBlcmYucGVyZl90dW5lLm1vZGUgPT0gRFBV X1BFUkZfTU9ERV9GSVhFRCkgewo+IC0JCWZvciAoaSA9IDA7IGkgPCBEUFVfUE9XRVJfSEFORExF X0RCVVNfSURfTUFYOyBpKyspIHsKPiAtCQkJcGVyZi0+YndfY3RsW2ldID0ga21zLT5wZXJmLmZp eF9jb3JlX2FiX3ZvdGU7Cj4gLQkJCXBlcmYtPm1heF9wZXJfcGlwZV9pYltpXSA9IGttcy0+cGVy Zi5maXhfY29yZV9pYl92b3RlOwo+IC0JCX0KPiArCQlwZXJmLT5id19jdGwgPSBrbXMtPnBlcmYu Zml4X2NvcmVfYWJfdm90ZTsKPiArCQlwZXJmLT5tYXhfcGVyX3BpcGVfaWIgPSBrbXMtPnBlcmYu Zml4X2NvcmVfaWJfdm90ZTsKPiAgCQlwZXJmLT5jb3JlX2Nsa19yYXRlID0ga21zLT5wZXJmLmZp eF9jb3JlX2Nsa19yYXRlOwo+ICAJfQo+ICAKPiAgCURQVV9ERUJVRygKPiAtCQkiY3J0Yz0lZCBj bGtfcmF0ZT0lbGx1IGNvcmVfaWI9JWxsdSBjb3JlX2FiPSVsbHUgbGxjY19pYj0lbGx1IGxsY2Nf YWI9JWxsdSBtZW1faWI9JWxsdSBtZW1fYWI9JWxsdVxuIiwKPiArCQkiY3J0Yz0lZCBjbGtfcmF0 ZT0lbGx1IGNvcmVfaWI9JWxsdSBjb3JlX2FiPSVsbHVcbiIsCj4gIAkJCWNydGMtPmJhc2UuaWQs IHBlcmYtPmNvcmVfY2xrX3JhdGUsCj4gLQkJCXBlcmYtPm1heF9wZXJfcGlwZV9pYltEUFVfUE9X RVJfSEFORExFX0RCVVNfSURfTU5PQ10sCj4gLQkJCXBlcmYtPmJ3X2N0bFtEUFVfUE9XRVJfSEFO RExFX0RCVVNfSURfTU5PQ10sCj4gLQkJCXBlcmYtPm1heF9wZXJfcGlwZV9pYltEUFVfUE9XRVJf SEFORExFX0RCVVNfSURfTExDQ10sCj4gLQkJCXBlcmYtPmJ3X2N0bFtEUFVfUE9XRVJfSEFORExF X0RCVVNfSURfTExDQ10sCj4gLQkJCXBlcmYtPm1heF9wZXJfcGlwZV9pYltEUFVfUE9XRVJfSEFO RExFX0RCVVNfSURfRUJJXSwKPiAtCQkJcGVyZi0+YndfY3RsW0RQVV9QT1dFUl9IQU5ETEVfREJV U19JRF9FQkldKTsKPiArCQkJcGVyZi0+bWF4X3Blcl9waXBlX2liLCBwZXJmLT5id19jdGwpOwo+ ICB9Cj4gIAo+ICBpbnQgZHB1X2NvcmVfcGVyZl9jcnRjX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPiBAQCAtMTQyLDcgKzEzMCw2IEBAIGludCBkcHVfY29yZV9wZXJmX2NydGNfY2hlY2so c3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJc3RydWN0IGRwdV9jcnRjX3N0YXRlICpkcHVfY3N0 YXRlOwo+ICAJc3RydWN0IGRybV9jcnRjICp0bXBfY3J0YzsKPiAgCXN0cnVjdCBkcHVfa21zICpr bXM7Cj4gLQlpbnQgaTsKPiAgCj4gIAlpZiAoIWNydGMgfHwgIXN0YXRlKSB7Cj4gIAkJRFBVX0VS Uk9SKCJpbnZhbGlkIGNydGNcbiIpOwo+IEBAIC0xNjQsMzEgKzE1MSwyOCBAQCBpbnQgZHB1X2Nv cmVfcGVyZl9jcnRjX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCS8qIG9idGFpbiBu ZXcgdmFsdWVzICovCj4gIAlfZHB1X2NvcmVfcGVyZl9jYWxjX2NydGMoa21zLCBjcnRjLCBzdGF0 ZSwgJmRwdV9jc3RhdGUtPm5ld19wZXJmKTsKPiAgCj4gLQlmb3IgKGkgPSBEUFVfUE9XRVJfSEFO RExFX0RCVVNfSURfTU5PQzsKPiAtCQkJaSA8IERQVV9QT1dFUl9IQU5ETEVfREJVU19JRF9NQVg7 IGkrKykgewo+IC0JCWJ3X3N1bV9vZl9pbnRmcyA9IGRwdV9jc3RhdGUtPm5ld19wZXJmLmJ3X2N0 bFtpXTsKPiAtCQljdXJyX2NsaWVudF90eXBlID0gZHB1X2NydGNfZ2V0X2NsaWVudF90eXBlKGNy dGMpOwo+ICsJYndfc3VtX29mX2ludGZzID0gZHB1X2NzdGF0ZS0+bmV3X3BlcmYuYndfY3RsOwo+ ICsJY3Vycl9jbGllbnRfdHlwZSA9IGRwdV9jcnRjX2dldF9jbGllbnRfdHlwZShjcnRjKTsKPiAg Cj4gLQkJZHJtX2Zvcl9lYWNoX2NydGModG1wX2NydGMsIGNydGMtPmRldikgewo+IC0JCQlpZiAo X2RwdV9jb3JlX3BlcmZfY3J0Y19pc19wb3dlcl9vbih0bXBfY3J0YykgJiYKPiAtCQkJICAgIChk cHVfY3J0Y19nZXRfY2xpZW50X3R5cGUodG1wX2NydGMpID09Cj4gLQkJCQkJICAgIGN1cnJfY2xp ZW50X3R5cGUpICYmCj4gLQkJCSAgICAodG1wX2NydGMgIT0gY3J0YykpIHsKPiAtCQkJCXN0cnVj dCBkcHVfY3J0Y19zdGF0ZSAqdG1wX2NzdGF0ZSA9Cj4gLQkJCQkJdG9fZHB1X2NydGNfc3RhdGUo dG1wX2NydGMtPnN0YXRlKTsKPiAtCj4gLQkJCQlEUFVfREVCVUcoImNydGM6JWQgYnc6JWxsdSBj dHJsOiVkXG4iLAo+IC0JCQkJCXRtcF9jcnRjLT5iYXNlLmlkLAo+IC0JCQkJCXRtcF9jc3RhdGUt Pm5ld19wZXJmLmJ3X2N0bFtpXSwKPiAtCQkJCQl0bXBfY3N0YXRlLT5id19jb250cm9sKTsKPiAt CQkJCS8qCj4gLQkJCQkgKiBGb3IgYncgY2hlY2sgb25seSB1c2UgdGhlIGJ3IGlmIHRoZQo+IC0J CQkJICogYXRvbWljIHByb3BlcnR5IGhhcyBiZWVuIGFscmVhZHkgc2V0Cj4gLQkJCQkgKi8KPiAt CQkJCWlmICh0bXBfY3N0YXRlLT5id19jb250cm9sKQo+IC0JCQkJCWJ3X3N1bV9vZl9pbnRmcyAr PQo+IC0JCQkJCQl0bXBfY3N0YXRlLT5uZXdfcGVyZi5id19jdGxbaV07Cj4gLQkJCX0KPiArCWRy bV9mb3JfZWFjaF9jcnRjKHRtcF9jcnRjLCBjcnRjLT5kZXYpIHsKPiArCQlpZiAoX2RwdV9jb3Jl X3BlcmZfY3J0Y19pc19wb3dlcl9vbih0bXBfY3J0YykgJiYKPiArCQkgICAgKGRwdV9jcnRjX2dl dF9jbGllbnRfdHlwZSh0bXBfY3J0YykgPT0KPiArCQkJCSAgICBjdXJyX2NsaWVudF90eXBlKSAm JgoKQ2FuIGdvIG9uIG9uZSBsaW5lIG5vdwoKPiArCQkgICAgKHRtcF9jcnRjICE9IGNydGMpKSB7 Cj4gKwkJCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqdG1wX2NzdGF0ZSA9Cj4gKwkJCQl0b19kcHVf Y3J0Y19zdGF0ZSh0bXBfY3J0Yy0+c3RhdGUpOwo+ICsKPiArCQkJRFBVX0RFQlVHKCJjcnRjOiVk IGJ3OiVsbHUgY3RybDolZFxuIiwKPiArCQkJCXRtcF9jcnRjLT5iYXNlLmlkLAo+ICsJCQkJdG1w X2NzdGF0ZS0+bmV3X3BlcmYuYndfY3RsLAo+ICsJCQkJdG1wX2NzdGF0ZS0+YndfY29udHJvbCk7 Cj4gKwkJCS8qCj4gKwkJCSAqIEZvciBidyBjaGVjayBvbmx5IHVzZSB0aGUgYncgaWYgdGhlCj4g KwkJCSAqIGF0b21pYyBwcm9wZXJ0eSBoYXMgYmVlbiBhbHJlYWR5IHNldAo+ICsJCQkgKi8KPiAr CQkJaWYgKHRtcF9jc3RhdGUtPmJ3X2NvbnRyb2wpCj4gKwkJCQlid19zdW1fb2ZfaW50ZnMgKz0K PiArCQkJCQl0bXBfY3N0YXRlLT5uZXdfcGVyZi5id19jdGw7CgpBbHNvIGZpdHMgb24gYSBsaW5l IG5vdwoKPiAgCQl9Cj4gIAo+ICAJCS8qIGNvbnZlcnQgYmFuZHdpZHRoIHRvIGtiICovCj4gQEAg LTIxOSw5ICsyMDMsOSBAQCBpbnQgZHB1X2NvcmVfcGVyZl9jcnRjX2NoZWNrKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiAgfQo+ICAKPiAgc3RhdGljIGludCBfZHB1X2NvcmVfcGVyZl9jcnRjX3Vw ZGF0ZV9idXMoc3RydWN0IGRwdV9rbXMgKmttcywKPiAtCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMs IHUzMiBidXNfaWQpCj4gKwkJc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICB7Cj4gLQlzdHJ1Y3Qg ZHB1X2NvcmVfcGVyZl9wYXJhbXMgcGVyZiA9IHsgeyAwIH0gfTsKPiArCXN0cnVjdCBkcHVfY29y ZV9wZXJmX3BhcmFtcyBwZXJmID0geyAwIH07Cj4gIAllbnVtIGRwdV9jcnRjX2NsaWVudF90eXBl IGN1cnJfY2xpZW50X3R5cGUKPiAgCQkJCQk9IGRwdV9jcnRjX2dldF9jbGllbnRfdHlwZShjcnRj KTsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqdG1wX2NydGM7Cj4gQEAgLTIzNCwxMyArMjE4LDEyIEBA IHN0YXRpYyBpbnQgX2RwdV9jb3JlX3BlcmZfY3J0Y191cGRhdGVfYnVzKHN0cnVjdCBkcHVfa21z ICprbXMsCj4gIAkJCQlkcHVfY3J0Y19nZXRfY2xpZW50X3R5cGUodG1wX2NydGMpKSB7Cj4gIAkJ CWRwdV9jc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZSh0bXBfY3J0Yy0+c3RhdGUpOwo+ICAKPiAt CQkJcGVyZi5tYXhfcGVyX3BpcGVfaWJbYnVzX2lkXSA9Cj4gLQkJCQltYXgocGVyZi5tYXhfcGVy X3BpcGVfaWJbYnVzX2lkXSwKPiAtCQkJCWRwdV9jc3RhdGUtPm5ld19wZXJmLm1heF9wZXJfcGlw ZV9pYltidXNfaWRdKTsKPiArCQkJcGVyZi5tYXhfcGVyX3BpcGVfaWIgPQo+ICsJCQkJbWF4KHBl cmYubWF4X3Blcl9waXBlX2liLAo+ICsJCQkJZHB1X2NzdGF0ZS0+bmV3X3BlcmYubWF4X3Blcl9w aXBlX2liKTsKPiAgCj4gLQkJCURQVV9ERUJVRygiY3J0Yz0lZCBidXNfaWQ9JWQgYnc9JWxsdVxu IiwKPiAtCQkJCXRtcF9jcnRjLT5iYXNlLmlkLCBidXNfaWQsCj4gLQkJCQlkcHVfY3N0YXRlLT5u ZXdfcGVyZi5id19jdGxbYnVzX2lkXSk7Cj4gKwkJCURQVV9ERUJVRygiY3J0Yz0lZCBidz0lbGx1 XG4iLAo+ICsJCQkJdG1wX2NydGMtPmJhc2UuaWQsIGRwdV9jc3RhdGUtPm5ld19wZXJmLmJ3X2N0 bCk7Cj4gIAkJfQo+ICAJfQo+ICAJcmV0dXJuIHJldDsKPiBAQCAtMjYwLDcgKzI0Myw2IEBAIHZv aWQgZHB1X2NvcmVfcGVyZl9jcnRjX3JlbGVhc2VfYncoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ ICAJc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YzsKPiAgCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAq ZHB1X2NzdGF0ZTsKPiAgCXN0cnVjdCBkcHVfa21zICprbXM7Cj4gLQlpbnQgaTsKPiAgCj4gIAlp ZiAoIWNydGMpIHsKPiAgCQlEUFVfRVJST1IoImludmFsaWQgY3J0Y1xuIik7Cj4gQEAgLTI5Niwx MCArMjc4LDggQEAgdm9pZCBkcHVfY29yZV9wZXJmX2NydGNfcmVsZWFzZV9idyhzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gIAlpZiAoa21zLT5wZXJmLmVuYWJsZV9id19yZWxlYXNlKSB7Cj4gIAkJ dHJhY2VfZHB1X2NtZF9yZWxlYXNlX2J3KGNydGMtPmJhc2UuaWQpOwo+ICAJCURQVV9ERUJVRygi UmVsZWFzZSBCVyBjcnRjPSVkXG4iLCBjcnRjLT5iYXNlLmlkKTsKPiAtCQlmb3IgKGkgPSAwOyBp IDwgRFBVX1BPV0VSX0hBTkRMRV9EQlVTX0lEX01BWDsgaSsrKSB7Cj4gLQkJCWRwdV9jcnRjLT5j dXJfcGVyZi5id19jdGxbaV0gPSAwOwo+IC0JCQlfZHB1X2NvcmVfcGVyZl9jcnRjX3VwZGF0ZV9i dXMoa21zLCBjcnRjLCBpKTsKPiAtCQl9Cj4gKwkJZHB1X2NydGMtPmN1cl9wZXJmLmJ3X2N0bCA9 IDA7Cj4gKwkJX2RwdV9jb3JlX3BlcmZfY3J0Y191cGRhdGVfYnVzKGttcywgY3J0Yyk7Cj4gIAl9 Cj4gIH0KPiAgCj4gQEAgLTM0MiwxMSArMzIyLDEwIEBAIGludCBkcHVfY29yZV9wZXJmX2NydGNf dXBkYXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQlpbnQgcGFyYW1zX2NoYW5nZWQsIGJv b2wgc3RvcF9yZXEpCj4gIHsKPiAgCXN0cnVjdCBkcHVfY29yZV9wZXJmX3BhcmFtcyAqbmV3LCAq b2xkOwo+IC0JaW50IHVwZGF0ZV9idXMgPSAwLCB1cGRhdGVfY2xrID0gMDsKPiArCWJvb2wgdXBk YXRlX2J1cyA9IGZhbHNlLCB1cGRhdGVfY2xrID0gZmFsc2U7Cj4gIAl1NjQgY2xrX3JhdGUgPSAw Owo+ICAJc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YzsKPiAgCXN0cnVjdCBkcHVfY3J0Y19zdGF0 ZSAqZHB1X2NzdGF0ZTsKPiAtCWludCBpOwo+ICAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJp djsKPiAgCXN0cnVjdCBkcHVfa21zICprbXM7Cj4gIAlpbnQgcmV0Owo+IEBAIC0zNzMsNyArMzUy LDYgQEAgaW50IGRwdV9jb3JlX3BlcmZfY3J0Y191cGRhdGUoc3RydWN0IGRybV9jcnRjICpjcnRj LAo+ICAJbmV3ID0gJmRwdV9jc3RhdGUtPm5ld19wZXJmOwo+ICAKPiAgCWlmIChfZHB1X2NvcmVf cGVyZl9jcnRjX2lzX3Bvd2VyX29uKGNydGMpICYmICFzdG9wX3JlcSkgewo+IC0JCWZvciAoaSA9 IDA7IGkgPCBEUFVfUE9XRVJfSEFORExFX0RCVVNfSURfTUFYOyBpKyspIHsKPiAgCQkJLyoKPiAg CQkJICogY2FzZXMgZm9yIGJ1cyBiYW5kd2lkdGggdXBkYXRlLgo+ICAJCQkgKiAxLiBuZXcgYmFu ZHdpZHRoIHZvdGUgLSAiYWIgb3IgaWIgdm90ZSIgaXMgaGlnaGVyCj4gQEAgLTM4MSwyMyArMzU5 LDIyIEBAIGludCBkcHVfY29yZV9wZXJmX2NydGNfdXBkYXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiAgCQkJICogMi4gbmV3IGJhbmR3aWR0aCB2b3RlIC0gImFiIG9yIGliIHZvdGUiIGlzIGxv d2VyCj4gIAkJCSAqICAgIHRoYW4gY3VycmVudCB2b3RlIGF0IGVuZCBvZiBjb21taXQgb3Igc3Rv cC4KPiAgCQkJICovCj4gLQkJCWlmICgocGFyYW1zX2NoYW5nZWQgJiYgKChuZXctPmJ3X2N0bFtp XSA+Cj4gLQkJCQkJCW9sZC0+YndfY3RsW2ldKSB8fAo+IC0JCQkJICAobmV3LT5tYXhfcGVyX3Bp cGVfaWJbaV0gPgo+IC0JCQkJCQlvbGQtPm1heF9wZXJfcGlwZV9pYltpXSkpKSB8fAo+IC0JCQkg ICAgKCFwYXJhbXNfY2hhbmdlZCAmJiAoKG5ldy0+YndfY3RsW2ldIDwKPiAtCQkJCQkJb2xkLT5i d19jdGxbaV0pIHx8Cj4gLQkJCQkgIChuZXctPm1heF9wZXJfcGlwZV9pYltpXSA8Cj4gLQkJCQkJ CW9sZC0+bWF4X3Blcl9waXBlX2liW2ldKSkpKSB7Cj4gKwkJCWlmICgocGFyYW1zX2NoYW5nZWQg JiYgKChuZXctPmJ3X2N0bCA+Cj4gKwkJCQkJCW9sZC0+YndfY3RsKSB8fAo+ICsJCQkJICAobmV3 LT5tYXhfcGVyX3BpcGVfaWIgPgo+ICsJCQkJCQlvbGQtPm1heF9wZXJfcGlwZV9pYikpKSB8fAo+ ICsJCQkgICAgKCFwYXJhbXNfY2hhbmdlZCAmJiAoKG5ldy0+YndfY3RsIDwKPiArCQkJCQkJb2xk LT5id19jdGwpIHx8Cj4gKwkJCQkgIChuZXctPm1heF9wZXJfcGlwZV9pYiA8Cj4gKwkJCQkJCW9s ZC0+bWF4X3Blcl9waXBlX2liKSkpKSB7CgpZb3UgY2FuIGNvbmRlbnNlIHRoaXMgYnkgam9pbmlu ZyBzb21lIGxpbmVzIHRvZ2V0aGVyLiBCb251cyBwb2ludHMgaWYgeW91IGNhbgpzaW1wbGlmeSBp dCBmdXJ0aGVyLgoKPiAgCQkJCURQVV9ERUJVRygKPiAgCQkJCQkiY3J0Yz0lZCBwPSVkIG5ld19i dz0lbGx1LG9sZF9idz0lbGx1XG4iLAo+ICAJCQkJCWNydGMtPmJhc2UuaWQsIHBhcmFtc19jaGFu Z2VkLAo+IC0JCQkJCW5ldy0+YndfY3RsW2ldLCBvbGQtPmJ3X2N0bFtpXSk7Cj4gLQkJCQlvbGQt PmJ3X2N0bFtpXSA9IG5ldy0+YndfY3RsW2ldOwo+IC0JCQkJb2xkLT5tYXhfcGVyX3BpcGVfaWJb aV0gPQo+IC0JCQkJCQluZXctPm1heF9wZXJfcGlwZV9pYltpXTsKPiAtCQkJCXVwZGF0ZV9idXMg fD0gQklUKGkpOwo+IC0JCQl9Cj4gKwkJCQkJbmV3LT5id19jdGwsIG9sZC0+YndfY3RsKTsKPiAr CQkJCW9sZC0+YndfY3RsID0gbmV3LT5id19jdGw7Cj4gKwkJCQlvbGQtPm1heF9wZXJfcGlwZV9p YiA9Cj4gKwkJCQkJCW5ldy0+bWF4X3Blcl9waXBlX2liOwoKRml0cyBvbiBvbmUgbGluZSBub3cK Cj4gKwkJCQl1cGRhdGVfYnVzID0gdHJ1ZTsKPiAgCQl9Cj4gIAo+ICAJCWlmICgocGFyYW1zX2No YW5nZWQgJiYKPiBAQCAtNDA1LDMwICszODIsMjYgQEAgaW50IGRwdV9jb3JlX3BlcmZfY3J0Y191 cGRhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJKCFwYXJhbXNfY2hhbmdlZCAmJgo+ ICAJCQkJKG5ldy0+Y29yZV9jbGtfcmF0ZSA8IG9sZC0+Y29yZV9jbGtfcmF0ZSkpKSB7Cj4gIAkJ CW9sZC0+Y29yZV9jbGtfcmF0ZSA9IG5ldy0+Y29yZV9jbGtfcmF0ZTsKPiAtCQkJdXBkYXRlX2Ns ayA9IDE7Cj4gKwkJCXVwZGF0ZV9jbGsgPSB0cnVlOwo+ICAJCX0KPiAgCX0gZWxzZSB7Cj4gIAkJ RFBVX0RFQlVHKCJjcnRjPSVkIGRpc2FibGVcbiIsIGNydGMtPmJhc2UuaWQpOwo+ICAJCW1lbXNl dChvbGQsIDAsIHNpemVvZigqb2xkKSk7Cj4gIAkJbWVtc2V0KG5ldywgMCwgc2l6ZW9mKCpuZXcp KTsKPiAtCQl1cGRhdGVfYnVzID0gfjA7Cj4gLQkJdXBkYXRlX2NsayA9IDE7Cj4gKwkJdXBkYXRl X2J1cyA9IHRydWU7Cj4gKwkJdXBkYXRlX2NsayA9IHRydWU7Cj4gIAl9Cj4gKwo+ICAJdHJhY2Vf ZHB1X3BlcmZfY3J0Y191cGRhdGUoY3J0Yy0+YmFzZS5pZCwKPiAtCQkJCW5ldy0+YndfY3RsW0RQ VV9QT1dFUl9IQU5ETEVfREJVU19JRF9NTk9DXSwKPiAtCQkJCW5ldy0+YndfY3RsW0RQVV9QT1dF Ul9IQU5ETEVfREJVU19JRF9MTENDXSwKPiAtCQkJCW5ldy0+YndfY3RsW0RQVV9QT1dFUl9IQU5E TEVfREJVU19JRF9FQkldLAo+IC0JCQkJbmV3LT5jb3JlX2Nsa19yYXRlLCBzdG9wX3JlcSwKPiAt CQkJCXVwZGF0ZV9idXMsIHVwZGF0ZV9jbGspOwo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCBEUFVf UE9XRVJfSEFORExFX0RCVVNfSURfTUFYOyBpKyspIHsKPiAtCQlpZiAodXBkYXRlX2J1cyAmIEJJ VChpKSkgewo+IC0JCQlyZXQgPSBfZHB1X2NvcmVfcGVyZl9jcnRjX3VwZGF0ZV9idXMoa21zLCBj cnRjLCBpKTsKPiAtCQkJaWYgKHJldCkgewo+IC0JCQkJRFBVX0VSUk9SKCJjcnRjLSVkOiBmYWls ZWQgdG8gdXBkYXRlIGJ3IHZvdGUgZm9yIGJ1cy0lZFxuIiwKPiAtCQkJCQkgIGNydGMtPmJhc2Uu aWQsIGkpOwo+IC0JCQkJcmV0dXJuIHJldDsKPiAtCQkJfQo+ICsJCQkJbmV3LT5id19jdGwsIG5l dy0+Y29yZV9jbGtfcmF0ZSwKPiArCQkJCXN0b3BfcmVxLCB1cGRhdGVfYnVzLCB1cGRhdGVfY2xr KTsKPiArCj4gKwlpZiAodXBkYXRlX2J1cykgewo+ICsJCXJldCA9IF9kcHVfY29yZV9wZXJmX2Ny dGNfdXBkYXRlX2J1cyhrbXMsIGNydGMpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJRFBVX0VSUk9S KCJjcnRjLSVkOiBmYWlsZWQgdG8gdXBkYXRlIGJ1cyBidyB2b3RlXG4iLAo+ICsJCQkJICBjcnRj LT5iYXNlLmlkKTsKPiArCQkJcmV0dXJuIHJldDsKPiAgCQl9Cj4gIAl9Cj4gIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmggYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmgKPiBpbmRleCBmYmNiZTBj NzUyN2EuLjBmYjI3NjkyOWRjNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfY29yZV9wZXJmLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfY29yZV9wZXJmLmgKPiBAQCAtMzAsOCArMzAsOCBAQAo+ICAgKiBAY29yZV9jbGtf cmF0ZTogY29yZSBjbG9jayByYXRlIHJlcXVlc3QKPiAgICovCj4gIHN0cnVjdCBkcHVfY29yZV9w ZXJmX3BhcmFtcyB7Cj4gLQl1NjQgbWF4X3Blcl9waXBlX2liW0RQVV9QT1dFUl9IQU5ETEVfREJV U19JRF9NQVhdOwo+IC0JdTY0IGJ3X2N0bFtEUFVfUE9XRVJfSEFORExFX0RCVVNfSURfTUFYXTsK PiArCXU2NCBtYXhfcGVyX3BpcGVfaWI7Cj4gKwl1NjQgYndfY3RsOwo+ICAJdTY0IGNvcmVfY2xr X3JhdGU7Cj4gIH07Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMu Ywo+IGluZGV4IGM1YmE3NTNkNDQxYy4uODQxNDc2ZDc3ZjVjIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4gQEAgLTEzNzMsMjEgKzEzNzMsMTQgQEAgc3Rh dGljIGludCBkcHVfY3J0Y19kZWJ1Z2ZzX3N0YXRlX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2 b2lkICp2KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAoc3RydWN0IGRybV9jcnRj ICopIHMtPnByaXZhdGU7Cj4gIAlzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjID0gdG9fZHB1X2Ny dGMoY3J0Yyk7Cj4gLQlpbnQgaTsKPiAgCj4gIAlzZXFfcHJpbnRmKHMsICJjbGllbnQgdHlwZTog JWRcbiIsIGRwdV9jcnRjX2dldF9jbGllbnRfdHlwZShjcnRjKSk7Cj4gIAlzZXFfcHJpbnRmKHMs ICJpbnRmX21vZGU6ICVkXG4iLCBkcHVfY3J0Y19nZXRfaW50Zl9tb2RlKGNydGMpKTsKPiAgCXNl cV9wcmludGYocywgImNvcmVfY2xrX3JhdGU6ICVsbHVcbiIsCj4gIAkJCWRwdV9jcnRjLT5jdXJf cGVyZi5jb3JlX2Nsa19yYXRlKTsKPiAtCWZvciAoaSA9IERQVV9QT1dFUl9IQU5ETEVfREJVU19J RF9NTk9DOwo+IC0JCQlpIDwgRFBVX1BPV0VSX0hBTkRMRV9EQlVTX0lEX01BWDsgaSsrKSB7Cj4g LQkJc2VxX3ByaW50ZihzLCAiYndfY3RsWyVzXTogJWxsdVxuIiwKPiAtCQkJCWRwdV9wb3dlcl9o YW5kbGVfZ2V0X2RidXNfbmFtZShpKSwKPiAtCQkJCWRwdV9jcnRjLT5jdXJfcGVyZi5id19jdGxb aV0pOwo+IC0JCXNlcV9wcmludGYocywgIm1heF9wZXJfcGlwZV9pYlslc106ICVsbHVcbiIsCj4g LQkJCQlkcHVfcG93ZXJfaGFuZGxlX2dldF9kYnVzX25hbWUoaSksCj4gLQkJCQlkcHVfY3J0Yy0+ Y3VyX3BlcmYubWF4X3Blcl9waXBlX2liW2ldKTsKPiAtCX0KPiArCXNlcV9wcmludGYocywgImJ3 X2N0bDogJWxsdVxuIiwgZHB1X2NydGMtPmN1cl9wZXJmLmJ3X2N0bCk7Cj4gKwlzZXFfcHJpbnRm KHMsICJtYXhfcGVyX3BpcGVfaWI6ICVsbHVcbiIsCj4gKwkJCQlkcHVfY3J0Yy0+Y3VyX3BlcmYu bWF4X3Blcl9waXBlX2liKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcG93ZXJfaGFuZGxlLmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcG93ZXJfaGFuZGxlLmMKPiBpbmRleCBmYzE0MTE2 Nzg5ZjIuLmQ1OGQwMTU0NDczMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfcG93ZXJfaGFuZGxlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfcG93ZXJfaGFuZGxlLmMKPiBAQCAtMjQsMjAgKzI0LDYgQEAKPiAgI2luY2x1 ZGUgImRwdV9wb3dlcl9oYW5kbGUuaCIKPiAgI2luY2x1ZGUgImRwdV90cmFjZS5oIgo+ICAKPiAt c3RhdGljIGNvbnN0IGNoYXIgKmRhdGFfYnVzX25hbWVbRFBVX1BPV0VSX0hBTkRMRV9EQlVTX0lE X01BWF0gPSB7Cj4gLQlbRFBVX1BPV0VSX0hBTkRMRV9EQlVTX0lEX01OT0NdID0gInFjb20sZHB1 LWRhdGEtYnVzIiwKPiAtCVtEUFVfUE9XRVJfSEFORExFX0RCVVNfSURfTExDQ10gPSAicWNvbSxk cHUtbGxjYy1idXMiLAo+IC0JW0RQVV9QT1dFUl9IQU5ETEVfREJVU19JRF9FQkldID0gInFjb20s ZHB1LWViaS1idXMiLAo+IC19Owo+IC0KPiAtY29uc3QgY2hhciAqZHB1X3Bvd2VyX2hhbmRsZV9n ZXRfZGJ1c19uYW1lKHUzMiBidXNfaWQpCj4gLXsKPiAtCWlmIChidXNfaWQgPCBEUFVfUE9XRVJf SEFORExFX0RCVVNfSURfTUFYKQo+IC0JCXJldHVybiBkYXRhX2J1c19uYW1lW2J1c19pZF07Cj4g LQo+IC0JcmV0dXJuIE5VTEw7Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGRwdV9wb3dlcl9ldmVu dF90cmlnZ2VyX2xvY2tlZChzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAgCQl1 MzIgZXZlbnRfdHlwZSkKPiAgewo+IEBAIC02Niw3ICs1Miw2IEBAIHN0cnVjdCBkcHVfcG93ZXJf Y2xpZW50ICpkcHVfcG93ZXJfY2xpZW50X2NyZWF0ZSgKPiAgCj4gIAltdXRleF9sb2NrKCZwaGFu ZGxlLT5waGFuZGxlX2xvY2spOwo+ICAJc3RybGNweShjbGllbnQtPm5hbWUsIGNsaWVudF9uYW1l LCBNQVhfQ0xJRU5UX05BTUVfTEVOKTsKPiAtCWNsaWVudC0+dXNlY2FzZV9uZHggPSBWT1RFX0lO REVYX0RJU0FCTEU7Cj4gIAljbGllbnQtPmlkID0gaWQ7Cj4gIAljbGllbnQtPmFjdGl2ZSA9IHRy dWU7Cj4gIAlwcl9kZWJ1ZygiY2xpZW50ICVzIGNyZWF0ZWQ6JXBLIGlkIDolZFxuIiwgY2xpZW50 X25hbWUsCj4gQEAgLTE0Myw4ICsxMjgsNiBAQCBpbnQgZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJs ZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAgCXN0cnVjdCBkcHVfcG93ZXJf Y2xpZW50ICpwY2xpZW50LCBib29sIGVuYWJsZSkKPiAgewo+ICAJYm9vbCBjaGFuZ2VkID0gZmFs c2U7Cj4gLQl1MzIgbWF4X3VzZWNhc2VfbmR4ID0gVk9URV9JTkRFWF9ESVNBQkxFLCBwcmV2X3Vz ZWNhc2VfbmR4Owo+IC0Jc3RydWN0IGRwdV9wb3dlcl9jbGllbnQgKmNsaWVudDsKPiAgCXUzMiBl dmVudF90eXBlOwo+ICAKPiAgCWlmICghcGhhbmRsZSB8fCAhcGNsaWVudCkgewo+IEBAIC0xNTMs MzEgKzEzNiwxOSBAQCBpbnQgZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZShzdHJ1Y3QgZHB1X3Bv d2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAgCX0KPiAgCj4gIAltdXRleF9sb2NrKCZwaGFuZGxlLT5w aGFuZGxlX2xvY2spOwo+IC0JaWYgKGVuYWJsZSkKPiArCWlmIChlbmFibGUpIHsKPiAgCQlwY2xp ZW50LT5yZWZjb3VudCsrOwo+IC0JZWxzZSBpZiAocGNsaWVudC0+cmVmY291bnQpCj4gKwkJaWYg KHBjbGllbnQtPnJlZmNvdW50ID09IDEpCj4gKwkJCWNoYW5nZWQgPSB0cnVlOwo+ICsJfSBlbHNl IGlmIChwY2xpZW50LT5yZWZjb3VudCkgewo+ICAJCXBjbGllbnQtPnJlZmNvdW50LS07Cj4gLQo+ IC0JaWYgKHBjbGllbnQtPnJlZmNvdW50KQo+IC0JCXBjbGllbnQtPnVzZWNhc2VfbmR4ID0gVk9U RV9JTkRFWF9MT1c7Cj4gLQllbHNlCj4gLQkJcGNsaWVudC0+dXNlY2FzZV9uZHggPSBWT1RFX0lO REVYX0RJU0FCTEU7Cj4gLQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShjbGllbnQsICZwaGFuZGxl LT5wb3dlcl9jbGllbnRfY2xpc3QsIGxpc3QpIHsKPiAtCQlpZiAoY2xpZW50LT51c2VjYXNlX25k eCA8IFZPVEVfSU5ERVhfTUFYICYmCj4gLQkJICAgIGNsaWVudC0+dXNlY2FzZV9uZHggPiBtYXhf dXNlY2FzZV9uZHgpCj4gLQkJCW1heF91c2VjYXNlX25keCA9IGNsaWVudC0+dXNlY2FzZV9uZHg7 Cj4gLQl9Cj4gLQo+IC0JaWYgKHBoYW5kbGUtPmN1cnJlbnRfdXNlY2FzZV9uZHggIT0gbWF4X3Vz ZWNhc2VfbmR4KSB7Cj4gLQkJY2hhbmdlZCA9IHRydWU7Cj4gLQkJcHJldl91c2VjYXNlX25keCA9 IHBoYW5kbGUtPmN1cnJlbnRfdXNlY2FzZV9uZHg7Cj4gLQkJcGhhbmRsZS0+Y3VycmVudF91c2Vj YXNlX25keCA9IG1heF91c2VjYXNlX25keDsKPiArCQlpZiAoIXBjbGllbnQtPnJlZmNvdW50KQo+ ICsJCQljaGFuZ2VkID0gdHJ1ZTsKPiAgCX0KPiAgCj4gLQlwcl9kZWJ1ZygiJXBTOiBjaGFuZ2Vk PSVkIGN1cnJlbnQgaWR4PSVkIHJlcXVlc3QgY2xpZW50ICVzIGlkOiV1IGVuYWJsZTolZCByZWZj b3VudDolZFxuIiwKPiAtCQlfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIGNoYW5nZWQsIG1h eF91c2VjYXNlX25keCwKPiAtCQlwY2xpZW50LT5uYW1lLCBwY2xpZW50LT5pZCwgZW5hYmxlLCBw Y2xpZW50LT5yZWZjb3VudCk7Cj4gKwlwcl9kZWJ1ZygiJXBTOmNoYW5nZWQ9JWQgY2xpZW50ICVz IGlkOiV1IGVuYWJsZTolZCByZWZjb3VudDolZFxuIiwKPiArCQlfX2J1aWx0aW5fcmV0dXJuX2Fk ZHJlc3MoMCksIGNoYW5nZWQsIHBjbGllbnQtPm5hbWUsCj4gKwkJcGNsaWVudC0+aWQsIGVuYWJs ZSwgcGNsaWVudC0+cmVmY291bnQpOwo+ICAKPiAgCWlmICghY2hhbmdlZCkKPiAgCQlnb3RvIGVu ZDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3Bvd2Vy X2hhbmRsZS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3Bvd2VyX2hhbmRs ZS5oCj4gaW5kZXggYTY1YjdhMjk3ZjIxLi5iMWE1YWU0ZDZmNGUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3Bvd2VyX2hhbmRsZS5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3Bvd2VyX2hhbmRsZS5oCj4gQEAgLTE2LDc2 ICsxNiwyOCBAQAo+ICAKPiAgI2RlZmluZSBNQVhfQ0xJRU5UX05BTUVfTEVOIDEyOAo+ICAKPiAt I2RlZmluZSBEUFVfUE9XRVJfSEFORExFX0VOQUJMRV9CVVNfQUJfUVVPVEEJMAo+IC0jZGVmaW5l IERQVV9QT1dFUl9IQU5ETEVfRElTQUJMRV9CVVNfQUJfUVVPVEEJMAo+IC0jZGVmaW5lIERQVV9Q T1dFUl9IQU5ETEVfRU5BQkxFX0JVU19JQl9RVU9UQQkxNjAwMDAwMDAwCj4gLSNkZWZpbmUgRFBV X1BPV0VSX0hBTkRMRV9ESVNBQkxFX0JVU19JQl9RVU9UQQkwCj4gLQo+ICAjaW5jbHVkZSAiZHB1 X2lvX3V0aWwuaCIKPiAgCj4gIC8qIGV2ZW50cyB3aWxsIGJlIHRyaWdnZXJlZCBvbiBwb3dlciBo YW5kbGVyIGVuYWJsZS9kaXNhYmxlICovCj4gICNkZWZpbmUgRFBVX1BPV0VSX0VWRU5UX0RJU0FC TEUJQklUKDApCj4gICNkZWZpbmUgRFBVX1BPV0VSX0VWRU5UX0VOQUJMRQlCSVQoMSkKPiAgCj4g LS8qKgo+IC0gKiBtZHNzX2J1c192b3RlX3R5cGU6IHJlZ2lzdGVyIGJ1cyB2b3RlIHR5cGUKPiAt ICogVk9URV9JTkRFWF9ESVNBQkxFOiByZW1vdmVzIHRoZSBjbGllbnQgdm90ZQo+IC0gKiBWT1RF X0lOREVYX0xPVzoga2VlcHMgdGhlIGxvd2VzdCB2b3RlIGZvciByZWdpc3RlciBidXMKPiAtICog Vk9URV9JTkRFWF9NQVg6IGludmFsaWQKPiAtICovCj4gLWVudW0gbWRzc19idXNfdm90ZV90eXBl IHsKPiAtCVZPVEVfSU5ERVhfRElTQUJMRSwKPiAtCVZPVEVfSU5ERVhfTE9XLAo+IC0JVk9URV9J TkRFWF9NQVgsCj4gLX07Cj4gLQo+IC0vKioKPiAtICogZW51bSBkcHVfcG93ZXJfaGFuZGxlX2Rh dGFfYnVzX2NsaWVudCAtIHR5cGUgb2YgYXhpIGJ1cyBjbGllbnRzCj4gLSAqIEBEUFVfUE9XRVJf SEFORExFX0RBVEFfQlVTX0NMSUVOVF9SVDogY29yZSByZWFsLXRpbWUgYnVzIGNsaWVudAo+IC0g KiBARFBVX1BPV0VSX0hBTkRMRV9EQVRBX0JVU19DTElFTlRfTlJUOiBjb3JlIG5vbi1yZWFsLXRp bWUgYnVzIGNsaWVudAo+IC0gKiBARFBVX1BPV0VSX0hBTkRMRV9EQVRBX0JVU19DTElFTlRfTUFY OiBtYXhpbXVtIG51bWJlciBvZiBidXMgY2xpZW50IHR5cGUKPiAtICovCj4gLWVudW0gZHB1X3Bv d2VyX2hhbmRsZV9kYXRhX2J1c19jbGllbnQgewo+IC0JRFBVX1BPV0VSX0hBTkRMRV9EQVRBX0JV U19DTElFTlRfUlQsCj4gLQlEUFVfUE9XRVJfSEFORExFX0RBVEFfQlVTX0NMSUVOVF9OUlQsCj4g LQlEUFVfUE9XRVJfSEFORExFX0RBVEFfQlVTX0NMSUVOVF9NQVgKPiAtfTsKPiAtCj4gLS8qKgo+ IC0gKiBlbnVtIERQVV9QT1dFUl9IQU5ETEVfREJVU19JRCAtIGRhdGEgYnVzIGlkZW50aWZpZXIK PiAtICogQERQVV9QT1dFUl9IQU5ETEVfREJVU19JRF9NTk9DOiBEUFUvTU5PQyBkYXRhIGJ1cwo+ IC0gKiBARFBVX1BPV0VSX0hBTkRMRV9EQlVTX0lEX0xMQ0M6IE1OT0MvTExDQyBkYXRhIGJ1cwo+ IC0gKiBARFBVX1BPV0VSX0hBTkRMRV9EQlVTX0lEX0VCSTogTExDQy9FQkkgZGF0YSBidXMKPiAt ICovCj4gLWVudW0gRFBVX1BPV0VSX0hBTkRMRV9EQlVTX0lEIHsKPiAtCURQVV9QT1dFUl9IQU5E TEVfREJVU19JRF9NTk9DLAo+IC0JRFBVX1BPV0VSX0hBTkRMRV9EQlVTX0lEX0xMQ0MsCj4gLQlE UFVfUE9XRVJfSEFORExFX0RCVVNfSURfRUJJLAo+IC0JRFBVX1BPV0VSX0hBTkRMRV9EQlVTX0lE X01BWCwKPiAtfTsKPiAtCj4gIC8qKgo+ICAgKiBzdHJ1Y3QgZHB1X3Bvd2VyX2NsaWVudDogc3Rv cmVzIHRoZSBwb3dlciBjbGllbnQgZm9yIGRwdSBkcml2ZXIKPiAgICogQG5hbWU6CW5hbWUgb2Yg dGhlIGNsaWVudAo+IC0gKiBAdXNlY2FzZV9uZHg6IGN1cnJlbnQgcmVncyBidXMgdm90ZSB0eXBl Cj4gICAqIEByZWZjb3VudDoJY3VycmVudCByZWZjb3VudCBpZiBtdWx0aXBsZSBtb2R1bGVzIGFy ZSB1c2luZyBzYW1lCj4gICAqICAgICAgICAgICAgICBzYW1lIGNsaWVudCBmb3IgZW5hYmxlL2Rp c2FibGUuIFBvd2VyIG1vZHVsZSB3aWxsCj4gICAqICAgICAgICAgICAgICBhZ2dyZWdhdGUgdGhl IHJlZmNvdW50IGFuZCB2b3RlIGFjY29yZGluZ2x5IGZvciB0aGlzCj4gICAqICAgICAgICAgICAg ICBjbGllbnQuCj4gICAqIEBpZDoJCWFzc2lnbmVkIGR1cmluZyBjcmVhdGUuIGhlbHBzIGZvciBk ZWJ1Z2dpbmcuCj4gICAqIEBsaXN0OglsaXN0IHRvIGF0dGFjaCBwb3dlciBoYW5kbGUgbWFzdGVy IGxpc3QKPiAtICogQGFiOiAgICAgICAgIGFyYml0cmF0ZWQgYmFuZHdpZHRoIGZvciBlYWNoIGJ1 cyBjbGllbnQKPiAtICogQGliOiAgICAgICAgIGluc3RhbnRhbmVvdXMgYmFuZHdpZHRoIGZvciBl YWNoIGJ1cyBjbGllbnQKPiAgICogQGFjdGl2ZToJaW5pZGNhdGVzIHRoZSBzdGF0ZSBvZiBkcHUg cG93ZXIgaGFuZGxlCj4gICAqLwo+ICBzdHJ1Y3QgZHB1X3Bvd2VyX2NsaWVudCB7Cj4gIAljaGFy IG5hbWVbTUFYX0NMSUVOVF9OQU1FX0xFTl07Cj4gLQlzaG9ydCB1c2VjYXNlX25keDsKPiAgCXNo b3J0IHJlZmNvdW50Owo+ICAJdTMyIGlkOwo+ICAJc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+IC0J dTY0IGFiW0RQVV9QT1dFUl9IQU5ETEVfREFUQV9CVVNfQ0xJRU5UX01BWF07Cj4gLQl1NjQgaWJb RFBVX1BPV0VSX0hBTkRMRV9EQVRBX0JVU19DTElFTlRfTUFYXTsKPiAgCWJvb2wgYWN0aXZlOwo+ ICB9Owo+ICAKPiBAQCAtMTEyLDE0ICs2NCwxMiBAQCBzdHJ1Y3QgZHB1X3Bvd2VyX2V2ZW50IHsK PiAgICogQGNsaWVudF9jbGlzdDogbWFzdGVyIGxpc3QgdG8gc3RvcmUgYWxsIGNsaWVudHMKPiAg ICogQHBoYW5kbGVfbG9jazogbG9jayB0byBzeW5jaHJvbml6ZSB0aGUgZW5hYmxlL2Rpc2FibGUK PiAgICogQGRldjogcG9pbnRlciB0byBkZXZpY2Ugc3RydWN0dXJlCj4gLSAqIEB1c2VjYXNlX25k eDogY3VycmVudCB1c2VjYXNlIGluZGV4Cj4gICAqIEBldmVudF9saXN0OiBjdXJyZW50IHBvd2Vy IGhhbmRsZSBldmVudCBsaXN0Cj4gICAqLwo+ICBzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSB7Cj4g IAlzdHJ1Y3QgbGlzdF9oZWFkIHBvd2VyX2NsaWVudF9jbGlzdDsKPiAgCXN0cnVjdCBtdXRleCBw aGFuZGxlX2xvY2s7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gLQl1MzIgY3VycmVudF91c2Vj YXNlX25keDsKPiAgCXN0cnVjdCBsaXN0X2hlYWQgZXZlbnRfbGlzdDsKPiAgfTsKPiAgCj4gQEAg LTE3MiwxNyArMTIyLDYgQEAgdm9pZCBkcHVfcG93ZXJfY2xpZW50X2Rlc3Ryb3koc3RydWN0IGRw dV9wb3dlcl9oYW5kbGUgKnBoYW5kbGUsCj4gIGludCBkcHVfcG93ZXJfcmVzb3VyY2VfZW5hYmxl KHN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwZGF0YSwKPiAgCXN0cnVjdCBkcHVfcG93ZXJfY2xp ZW50ICpwY2xpZW50LCBib29sIGVuYWJsZSk7Cj4gIAo+IC0vKioKPiAtICogZHB1X3Bvd2VyX2Rh dGFfYnVzX2JhbmR3aWR0aF9jdHJsKCkgLSBjb250cm9sIGRhdGEgYnVzIGJhbmR3aWR0aCBlbmFi bGUKPiAtICogQHBoYW5kbGU6ICBwb3dlciBoYW5kbGUgY29udGFpbmluZyB0aGUgcmVzb3VyY2Vz Cj4gLSAqIEBjbGllbnQ6IGNsaWVudCBpbmZvcm1hdGlvbiB0byBiYW5kd2lkdGggY29udHJvbAo+ IC0gKiBAZW5hYmxlOiB0cnVlIHRvIGVuYWJsZSBiYW5kd2lkdGggZm9yIGRhdGEgYmFzZQo+IC0g Kgo+IC0gKiBSZXR1cm46IG5vbmUKPiAtICovCj4gLXZvaWQgZHB1X3Bvd2VyX2RhdGFfYnVzX2Jh bmR3aWR0aF9jdHJsKHN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLAo+IC0JCXN0cnVj dCBkcHVfcG93ZXJfY2xpZW50ICpwY2xpZW50LCBpbnQgZW5hYmxlKTsKPiAtCj4gIC8qKgo+ICAg KiBkcHVfcG93ZXJfaGFuZGxlX3JlZ2lzdGVyX2V2ZW50IC0gcmVnaXN0ZXIgYSBjYWxsYmFjayBm dW5jdGlvbiBmb3IgYW4gZXZlbnQuCj4gICAqCUNsaWVudHMgY2FuIHJlZ2lzdGVyIGZvciBtdWx0 aXBsZSBldmVudHMgd2l0aCBhIHNpbmdsZSByZWdpc3Rlci4KPiBAQCAtMjA3LDExICsxNDYsNCBA QCBzdHJ1Y3QgZHB1X3Bvd2VyX2V2ZW50ICpkcHVfcG93ZXJfaGFuZGxlX3JlZ2lzdGVyX2V2ZW50 KAo+ICB2b2lkIGRwdV9wb3dlcl9oYW5kbGVfdW5yZWdpc3Rlcl9ldmVudChzdHJ1Y3QgZHB1X3Bv d2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAgCQlzdHJ1Y3QgZHB1X3Bvd2VyX2V2ZW50ICpldmVudCk7 Cj4gIAo+IC0vKioKPiAtICogZHB1X3Bvd2VyX2hhbmRsZV9nZXRfZGJ1c19uYW1lIC0gZ2V0IG5h bWUgb2YgZ2l2ZW4gZGF0YSBidXMgaWRlbnRpZmllcgo+IC0gKiBAYnVzX2lkOglkYXRhIGJ1cyBp ZGVudGlmaWVyCj4gLSAqIFJldHVybjoJUG9pbnRlciB0byBuYW1lIHN0cmluZyBpZiBzdWNjZXNz OyBOVUxMIG90aGVyd2lzZQo+IC0gKi8KPiAtY29uc3QgY2hhciAqZHB1X3Bvd2VyX2hhbmRsZV9n ZXRfZGJ1c19uYW1lKHUzMiBidXNfaWQpOwo+IC0KPiAgI2VuZGlmIC8qIF9EUFVfUE9XRVJfSEFO RExFX0hfICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV90cmFjZS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3RyYWNlLmgKPiBp bmRleCAwYzEyMmUxNzM4OTIuLmY1ZWQ0N2ExNTU2YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfdHJhY2UuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV90cmFjZS5oCj4gQEAgLTE2NywxNiArMTY3LDEzIEBAIFRSQUNFX0VW RU5UKGRwdV90cmFjZV9jb3VudGVyLAo+ICApCj4gIAo+ICBUUkFDRV9FVkVOVChkcHVfcGVyZl9j cnRjX3VwZGF0ZSwKPiAtCVRQX1BST1RPKHUzMiBjcnRjLCB1NjQgYndfY3RsX21ub2MsIHU2NCBi d19jdGxfbGxjYywKPiAtCQkJdTY0IGJ3X2N0bF9lYmksIHUzMiBjb3JlX2Nsa19yYXRlLAo+IC0J CQlib29sIHN0b3BfcmVxLCB1MzIgdXBkYXRlX2J1cywgdTMyIHVwZGF0ZV9jbGspLAo+IC0JVFBf QVJHUyhjcnRjLCBid19jdGxfbW5vYywgYndfY3RsX2xsY2MsIGJ3X2N0bF9lYmksIGNvcmVfY2xr X3JhdGUsCj4gKwlUUF9QUk9UTyh1MzIgY3J0YywgdTY0IGJ3X2N0bCwgdTMyIGNvcmVfY2xrX3Jh dGUsCj4gKwkJCWJvb2wgc3RvcF9yZXEsIGJvb2wgdXBkYXRlX2J1cywgYm9vbCB1cGRhdGVfY2xr KSwKPiArCVRQX0FSR1MoY3J0YywgYndfY3RsLCBjb3JlX2Nsa19yYXRlLAo+ICAJCXN0b3BfcmVx LCB1cGRhdGVfYnVzLCB1cGRhdGVfY2xrKSwKPiAgCVRQX1NUUlVDVF9fZW50cnkoCj4gIAkJCV9f ZmllbGQodTMyLCBjcnRjKQo+IC0JCQlfX2ZpZWxkKHU2NCwgYndfY3RsX21ub2MpCj4gLQkJCV9f ZmllbGQodTY0LCBid19jdGxfbGxjYykKPiAtCQkJX19maWVsZCh1NjQsIGJ3X2N0bF9lYmkpCj4g KwkJCV9fZmllbGQodTY0LCBid19jdGwpCj4gIAkJCV9fZmllbGQodTMyLCBjb3JlX2Nsa19yYXRl KQo+ICAJCQlfX2ZpZWxkKGJvb2wsIHN0b3BfcmVxKQo+ICAJCQlfX2ZpZWxkKHUzMiwgdXBkYXRl X2J1cykKPiBAQCAtMTg0LDIwICsxODEsMTYgQEAgVFJBQ0VfRVZFTlQoZHB1X3BlcmZfY3J0Y191 cGRhdGUsCj4gIAkpLAo+ICAJVFBfZmFzdF9hc3NpZ24oCj4gIAkJCV9fZW50cnktPmNydGMgPSBj cnRjOwo+IC0JCQlfX2VudHJ5LT5id19jdGxfbW5vYyA9IGJ3X2N0bF9tbm9jOwo+IC0JCQlfX2Vu dHJ5LT5id19jdGxfbGxjYyA9IGJ3X2N0bF9sbGNjOwo+IC0JCQlfX2VudHJ5LT5id19jdGxfZWJp ID0gYndfY3RsX2ViaTsKPiArCQkJX19lbnRyeS0+YndfY3RsID0gYndfY3RsOwo+ICAJCQlfX2Vu dHJ5LT5jb3JlX2Nsa19yYXRlID0gY29yZV9jbGtfcmF0ZTsKPiAgCQkJX19lbnRyeS0+c3RvcF9y ZXEgPSBzdG9wX3JlcTsKPiAgCQkJX19lbnRyeS0+dXBkYXRlX2J1cyA9IHVwZGF0ZV9idXM7Cj4g IAkJCV9fZW50cnktPnVwZGF0ZV9jbGsgPSB1cGRhdGVfY2xrOwo+ICAJKSwKPiAgCSBUUF9wcmlu dGsoCj4gLQkJImNydGM9JWQgYndfbW5vYz0lbGx1IGJ3X2xsY2M9JWxsdSBid19lYmk9JWxsdSBj bGtfcmF0ZT0ldSBzdG9wX3JlcT0lZCB1X2J1cz0lZCB1X2Nsaz0lZCIsCj4gKwkJImNydGM9JWQg YndfY3RsPSVsbHUgY2xrX3JhdGU9JXUgc3RvcF9yZXE9JWQgdV9idXM9JWQgdV9jbGs9JWQiLAo+ ICAJCQlfX2VudHJ5LT5jcnRjLAo+IC0JCQlfX2VudHJ5LT5id19jdGxfbW5vYywKPiAtCQkJX19l bnRyeS0+YndfY3RsX2xsY2MsCj4gLQkJCV9fZW50cnktPmJ3X2N0bF9lYmksCj4gKwkJCV9fZW50 cnktPmJ3X2N0bCwKPiAgCQkJX19lbnRyeS0+Y29yZV9jbGtfcmF0ZSwKPiAgCQkJX19lbnRyeS0+ c3RvcF9yZXEsCj4gIAkJCV9fZW50cnktPnVwZGF0ZV9idXMsCj4gLS0gCj4gVGhlIFF1YWxjb21t IElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBG b3J1bSwKPiBhIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cj4gCgotLSAK U2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxp bmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==