From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH 4/5] drm/msm/dsi: implement 6G v2.0+ DSI command broadcast Date: Tue, 13 Mar 2018 11:00:43 +0530 Message-ID: <211a09e8-0fe1-6d3e-3833-83c6ed66f163@codeaurora.org> References: <1520860994-23334-1-git-send-email-sibis@codeaurora.org> <1520860994-23334-5-git-send-email-sibis@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1520860994-23334-5-git-send-email-sibis-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sibi S , robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org CgpPbiBNb25kYXkgMTIgTWFyY2ggMjAxOCAwNjo1MyBQTSwgU2liaSBTIHdyb3RlOgo+IEZyb206 IEFyY2hpdCBUYW5lamEgPGFyY2hpdHRAY29kZWF1cm9yYS5vcmc+Cj4gCgpJJ20gYSBiaXQgdW5j ZXJ0YWluIGFib3V0IHVzaW5nIHRoaXMgcGF0Y2ggaW4gaXRzIGN1cnJlbnQgc3RhdGUuClNvbWUg cmVhc29ucyBiZWxvdy4KCj4gQWRkIGNvbW1hbmQgYnJvYWRjYXN0IHN1cHBvcnQgZm9yIERTSSA2 RyB2Mi4wKyBjb250cm9sbGVyCj4gb24gU0RNODQ1Cj4gCj4gU2lnbmVkLW9mZi1ieTogU2liaSBT IDxzaWJpc0Bjb2RlYXVyb3JhLm9yZz4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNp L2RzaS5oICAgICAgICAgfCAgNSArKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9j ZmcuYyAgICAgfCAxNCArKysrKysrLQo+ICAgZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hv c3QuYyAgICB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gICBkcml2ZXJz L2dwdS9kcm0vbXNtL2RzaS9kc2lfbWFuYWdlci5jIHwgNjYgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiAgIDQgZmlsZXMgY2hhbmdlZCwgMTQzIGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2Rz aS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmgKPiBpbmRleCBkZmEwNDlkLi4yMjM0 MmMzMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2kuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaS5oCj4gQEAgLTk2LDcgKzk2LDkgQEAgc3RydWN0 IG1zbV9kc2kgewo+ICAgc3RydWN0IGRybV9jb25uZWN0b3IgKm1zbV9kc2lfbWFuYWdlcl9jb25u ZWN0b3JfaW5pdCh1OCBpZCk7Cj4gICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqbXNtX2RzaV9tYW5h Z2VyX2V4dF9icmlkZ2VfaW5pdCh1OCBpZCk7Cj4gICBpbnQgbXNtX2RzaV9tYW5hZ2VyX2NtZF94 ZmVyKGludCBpZCwgY29uc3Qgc3RydWN0IG1pcGlfZHNpX21zZyAqbXNnKTsKPiAraW50IG1zbV9k c2lfbWFuYWdlcl9jbWRfeGZlcl82Z192MihpbnQgaWQsIGNvbnN0IHN0cnVjdCBtaXBpX2RzaV9t c2cgKm1zZyk7Cj4gICBib29sIG1zbV9kc2lfbWFuYWdlcl9jbWRfeGZlcl90cmlnZ2VyKGludCBp ZCwgdTMyIGRtYV9iYXNlLCB1MzIgbGVuKTsKPiArYm9vbCBtc21fZHNpX21hbmFnZXJfY21kX3hm ZXJfdHJpZ2dlcl82Z192MihpbnQgaWQsIHUzMiBkbWFfYmFzZSwgdTMyIGxlbik7Cj4gICB2b2lk IG1zbV9kc2lfbWFuYWdlcl9hdHRhY2hfZHNpX2RldmljZShpbnQgaWQsIHUzMiBkZXZpY2VfZmxh Z3MpOwo+ICAgaW50IG1zbV9kc2lfbWFuYWdlcl9yZWdpc3RlcihzdHJ1Y3QgbXNtX2RzaSAqbXNt X2RzaSk7Cj4gICB2b2lkIG1zbV9kc2lfbWFuYWdlcl91bnJlZ2lzdGVyKHN0cnVjdCBtc21fZHNp ICptc21fZHNpKTsKPiBAQCAtMTUyLDYgKzE1NCw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1zbV9k c2lfcGxsX3NldF91c2VjYXNlKHN0cnVjdCBtc21fZHNpX3BsbCAqcGxsLAo+ICAgc3RydWN0IG1z bV9kc2lfaG9zdDsKPiAgIGludCBtc21fZHNpX2hvc3RfeGZlcl9wcmVwYXJlKHN0cnVjdCBtaXBp X2RzaV9ob3N0ICpob3N0LAo+ICAgCQkJCQljb25zdCBzdHJ1Y3QgbWlwaV9kc2lfbXNnICptc2cp Owo+ICtpbnQgbXNtX2RzaV9ob3N0X3hmZXJfcHJlcGFyZV82Z192MihzdHJ1Y3QgbWlwaV9kc2lf aG9zdCAqaG9zdCwKPiArCQkJCQljb25zdCBzdHJ1Y3QgbWlwaV9kc2lfbXNnICptc2csCj4gKwkJ CQkJYm9vbCBicm9hZGNhc3QsIGJvb2wgbWFzdGVyKTsKPiAgIHZvaWQgbXNtX2RzaV9ob3N0X3hm ZXJfcmVzdG9yZShzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKPiAgIAkJCQkJY29uc3Qgc3Ry dWN0IG1pcGlfZHNpX21zZyAqbXNnKTsKPiAgIGludCBtc21fZHNpX2hvc3RfY21kX3R4KHN0cnVj dCBtaXBpX2RzaV9ob3N0ICpob3N0LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2RzaS9kc2lfY2ZnLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2ZnLmMKPiBpbmRl eCBkYzUxYWFhLi5kY2RmYjFiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNp L2RzaV9jZmcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9jZmcuYwo+IEBA IC0xNTcsNiArMTU3LDE4IEBACj4gICAJLmRtYV9iYXNlX2dldCA9IGRzaV9kbWFfYmFzZV9nZXRf NmcsCj4gICAJLmNhbGNfY2xrX3JhdGUgPSBkc2lfY2FsY19jbGtfcmF0ZV82ZywKPiAgIH07Cj4g Kwo+ICtjb25zdCBzdGF0aWMgc3RydWN0IG1zbV9kc2lfaG9zdF9jZmdfb3BzIG1zbV9kc2lfNmdf djJfaG9zdF9vcHMgPSB7Cj4gKwkubGlua19jbGtfZW5hYmxlID0gZHNpX2xpbmtfY2xrX2VuYWJs ZV82ZywKPiArCS5saW5rX2Nsa19kaXNhYmxlID0gZHNpX2xpbmtfY2xrX2Rpc2FibGVfNmcsCj4g KwkuY2xrX2luaXRfdmVyID0gZHNpX2Nsa19pbml0XzZnX3YyLAo+ICsJLnR4X2J1Zl9hbGxvYyA9 IGRzaV90eF9idWZfYWxsb2NfNmcsCj4gKwkudHhfYnVmX2dldCA9IGRzaV90eF9idWZfZ2V0XzZn LAo+ICsJLnR4X2J1Zl9wdXQgPSBkc2lfdHhfYnVmX3B1dF82ZywKPiArCS5kbWFfYmFzZV9nZXQg PSBkc2lfZG1hX2Jhc2VfZ2V0XzZnLAo+ICsJLmNhbGNfY2xrX3JhdGUgPSBkc2lfY2FsY19jbGtf cmF0ZV82ZywKPiArfTsKPiArCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hh bmRsZXIgZHNpX2NmZ19oYW5kbGVyc1tdID0gewo+ICAgCXtNU01fRFNJX1ZFUl9NQUpPUl9WMiwg TVNNX0RTSV9WMl9WRVJfTUlOT1JfODA2NCwKPiAgIAkJJmFwcTgwNjRfZHNpX2NmZywgJm1zbV9k c2lfdjJfaG9zdF9vcHN9LAo+IEBAIC0xNzUsNyArMTg3LDcgQEAKPiAgIAl7TVNNX0RTSV9WRVJf TUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzRfMSwKPiAgIAkJJm1zbTg5OTZfZHNp X2NmZywgJm1zbV9kc2lfNmdfaG9zdF9vcHN9LAo+ICAgCXtNU01fRFNJX1ZFUl9NQUpPUl82Rywg TVNNX0RTSV82R19WRVJfTUlOT1JfVjJfMl8xLAo+IC0JCSZzZG04NDVfZHNpX2NmZywgJm1zbV9k c2lfNmdfaG9zdF9vcHN9LAo+ICsJCSZzZG04NDVfZHNpX2NmZywgJm1zbV9kc2lfNmdfdjJfaG9z dF9vcHN9LAo+ICAgfTsKPiAgIAo+ICAgY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIg Km1zbV9kc2lfY2ZnX2dldCh1MzIgbWFqb3IsIHUzMiBtaW5vcikKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNp L2RzaV9ob3N0LmMKPiBpbmRleCBiNzU1YjY5Li5iZDYxY2FkIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2RzaS9kc2lfaG9zdC5jCj4gQEAgLTEyNTEsOSArMTI1MSwxNCBAQCBzdGF0aWMgaW50IGRzaV9j bWRfZG1hX3R4KHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0LCBpbnQgbGVuKQo+ICAgCXJl aW5pdF9jb21wbGV0aW9uKCZtc21faG9zdC0+ZG1hX2NvbXApOwo+ICAgCj4gICAJZHNpX3dhaXQ0 dmlkZW9fZW5nX2J1c3kobXNtX2hvc3QpOwo+ICsJaWYgKChjZmdfaG5kLT5tYWpvciA9PSBNU01f RFNJX1ZFUl9NQUpPUl82RykgJiYKPiArCQkJKGNmZ19obmQtPm1pbm9yIDwgTVNNX0RTSV82R19W RVJfTUlOT1JfVjJfMl8xKSkKPiArCQl0cmlnZ2VyZWQgPSBtc21fZHNpX21hbmFnZXJfY21kX3hm ZXJfdHJpZ2dlcihtc21faG9zdC0+aWQsCj4gKwkJCQkJCQkJZG1hX2Jhc2UsIGxlbik7Cj4gKwll bHNlCj4gKwkJdHJpZ2dlcmVkID0gbXNtX2RzaV9tYW5hZ2VyX2NtZF94ZmVyX3RyaWdnZXJfNmdf djIoCj4gKwkJCQkJCSAgbXNtX2hvc3QtPmlkLCBkbWFfYmFzZSwgbGVuKTsKPiAgIAo+IC0JdHJp Z2dlcmVkID0gbXNtX2RzaV9tYW5hZ2VyX2NtZF94ZmVyX3RyaWdnZXIoCj4gLQkJCQkJCW1zbV9o b3N0LT5pZCwgZG1hX2Jhc2UsIGxlbik7Cj4gICAJaWYgKHRyaWdnZXJlZCkgewo+ICAgCQlyZXQg PSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoJm1zbV9ob3N0LT5kbWFfY29tcCwKPiAgIAkJ CQkJbXNlY3NfdG9famlmZmllcygyMDApKTsKPiBAQCAtMTYwMiwxMyArMTYwNywyMSBAQCBzdGF0 aWMgc3NpemVfdCBkc2lfaG9zdF90cmFuc2ZlcihzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwK PiAgIAkJCQkJY29uc3Qgc3RydWN0IG1pcGlfZHNpX21zZyAqbXNnKQo+ICAgewo+ICAgCXN0cnVj dCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0ID0gdG9fbXNtX2RzaV9ob3N0KGhvc3QpOwo+ICsJY29u c3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgKmNmZ19obmQgPSBtc21faG9zdC0+Y2ZnX2hu ZDsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJaWYgKCFtc2cgfHwgIW1zbV9ob3N0LT5wb3dlcl9v bikKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAKPiAgIAltdXRleF9sb2NrKCZtc21faG9zdC0+ Y21kX211dGV4KTsKPiAtCXJldCA9IG1zbV9kc2lfbWFuYWdlcl9jbWRfeGZlcihtc21faG9zdC0+ aWQsIG1zZyk7Cj4gKwo+ICsJaWYgKCgoY2ZnX2huZC0+bWFqb3IgPT0gTVNNX0RTSV9WRVJfTUFK T1JfNkcpICYmCj4gKwkJCShjZmdfaG5kLT5taW5vciA8IE1TTV9EU0lfNkdfVkVSX01JTk9SX1Yy XzJfMSkpIHx8Cj4gKwkJCShjZmdfaG5kLT5tYWpvciA9PSBNU01fRFNJX1ZFUl9NQUpPUl9WMikp Cj4gKwkJcmV0ID0gbXNtX2RzaV9tYW5hZ2VyX2NtZF94ZmVyKG1zbV9ob3N0LT5pZCwgbXNnKTsK PiArCWVsc2UKPiArCQlyZXQgPSBtc21fZHNpX21hbmFnZXJfY21kX3hmZXJfNmdfdjIobXNtX2hv c3QtPmlkLCBtc2cpOwo+ICsKPiAgIAltdXRleF91bmxvY2soJm1zbV9ob3N0LT5jbWRfbXV0ZXgp Owo+ICAgCj4gICAJcmV0dXJuIHJldDsKPiBAQCAtMTk5Miw2ICsyMDA1LDQ5IEBAIGludCBtc21f ZHNpX2hvc3RfeGZlcl9wcmVwYXJlKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAo+ICAgCXJl dHVybiAwOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB2b2lkIGRzaV9ob3N0X3ByZXBhcmVfYnJvYWRj YXN0XzZnX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0LAo+ICsJCQkJCSAgICAgYm9v bCBicm9hZGNhc3QsIGJvb2wgbWFzdGVyKQo+ICt7Cj4gKwl1MzIgdmFsID0gZHNpX3JlYWQobXNt X2hvc3QsIFJFR19EU0lfQ01EX0RNQV9DVFJMKTsKPiArCj4gKwlpZiAoYnJvYWRjYXN0KQo+ICsJ CXZhbCB8PSBCSVQoMzEpOwo+ICsJZWxzZQo+ICsJCXZhbCAmPSB+QklUKDMxKTsKPiArCj4gKwlp ZiAobWFzdGVyKQo+ICsJCXZhbCB8PSBCSVQoMzApOwo+ICsJZWxzZQo+ICsJCXZhbCAmPSB+QklU KDMwKTsKPiArCj4gKwlkc2lfd3JpdGUobXNtX2hvc3QsIFJFR19EU0lfQ01EX0RNQV9DVFJMLCB2 YWwpOwo+ICsgPiArCj4gK2ludCBtc21fZHNpX2hvc3RfeGZlcl9wcmVwYXJlXzZnX3YyKHN0cnVj dCBtaXBpX2RzaV9ob3N0ICpob3N0LAo+ICsJCQkJICAgIGNvbnN0IHN0cnVjdCBtaXBpX2RzaV9t c2cgKm1zZywKPiArCQkJCSAgICBib29sIGJyb2FkY2FzdCwgYm9vbCBtYXN0ZXIpCj4gK3sKPiAr CXN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0ID0gdG9fbXNtX2RzaV9ob3N0KGhvc3QpOwo+ ICsKPiArCS8qIFRPRE86IHZvdGUgZm9yIGJ1cyBiYW5kd2lkdGggKi8KPiArCj4gKwlpZiAoISht c2ctPmZsYWdzICYgTUlQSV9EU0lfTVNHX1VTRV9MUE0pKQo+ICsJCWRzaV9zZXRfdHhfcG93ZXJf bW9kZSgwLCBtc21faG9zdCk7Cj4gKwo+ICsJZHNpX2hvc3RfcHJlcGFyZV9icm9hZGNhc3RfNmdf djIobXNtX2hvc3QsIGJyb2FkY2FzdCwgbWFzdGVyKTsKPiArCj4gKwltc21faG9zdC0+ZG1hX2Nt ZF9jdHJsX3Jlc3RvcmUgPSBkc2lfcmVhZChtc21faG9zdCwgUkVHX0RTSV9DVFJMKTsKPiArCWRz aV93cml0ZShtc21faG9zdCwgUkVHX0RTSV9DVFJMLAo+ICsJCW1zbV9ob3N0LT5kbWFfY21kX2N0 cmxfcmVzdG9yZSB8Cj4gKwkJRFNJX0NUUkxfQ01EX01PREVfRU4gfAo+ICsJCURTSV9DVFJMX0VO QUJMRSk7Cj4gKwo+ICsJaWYgKChicm9hZGNhc3QgJiYgbWFzdGVyKSB8fCAhYnJvYWRjYXN0KQo+ ICsJCWRzaV9pbnRyX2N0cmwobXNtX2hvc3QsIERTSV9JUlFfTUFTS19DTURfRE1BX0RPTkUsIDEp Owo+ICsKPiArCXJldHVybiAwOwo+ICt9CgpUaGlzIHBhcnQgYWJvdmUgKGkuZSwgdGhlIHByZXBh cmUgZm9yIDZHIHYyLjArKSBsb29rcyBva2F5LgoKPiArCj4gICB2b2lkIG1zbV9kc2lfaG9zdF94 ZmVyX3Jlc3RvcmUoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCj4gICAJCQkJY29uc3Qgc3Ry dWN0IG1pcGlfZHNpX21zZyAqbXNnKQo+ICAgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2RzaS9kc2lfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX21h bmFnZXIuYwo+IGluZGV4IDRjYjFjYjYuLjM5M2UzZmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9kc2kvZHNpX21hbmFnZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZHNpL2RzaV9tYW5hZ2VyLmMKPiBAQCAtODEyLDYgKzgxMiw1NiBAQCBpbnQgbXNtX2RzaV9tYW5h Z2VyX2NtZF94ZmVyKGludCBpZCwgY29uc3Qgc3RydWN0IG1pcGlfZHNpX21zZyAqbXNnKQo+ICAg CXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAraW50IG1zbV9kc2lfbWFuYWdlcl9jbWRfeGZlcl82 Z192MihpbnQgaWQsIGNvbnN0IHN0cnVjdCBtaXBpX2RzaV9tc2cgKm1zZykKPiArewo+ICsJc3Ry dWN0IG1zbV9kc2kgKm1zbV9kc2kgPSBkc2lfbWdyX2dldF9kc2koaWQpOwo+ICsJc3RydWN0IG1z bV9kc2kgKm1zbV9kc2kwID0gZHNpX21ncl9nZXRfZHNpKERTSV8wKTsKPiArCXN0cnVjdCBtaXBp X2RzaV9ob3N0ICpob3N0ID0gbXNtX2RzaS0+aG9zdDsKPiArCWJvb2wgaXNfcmVhZCA9IChtc2ct PnJ4X2J1ZiAmJiBtc2ctPnJ4X2xlbik7Cj4gKwlib29sIG5lZWRfc3luYyA9IChJU19TWU5DX05F RURFRCgpICYmICFpc19yZWFkKTsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKCFtc2ctPnR4X2J1 ZiB8fCAhbXNnLT50eF9sZW4pCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaWYgKG5lZWRfc3luYyAm JiAoaWQgPT0gRFNJXzApKQo+ICsJCXJldHVybiBpc19yZWFkID8gbXNnLT5yeF9sZW4gOiBtc2ct PnR4X2xlbjsKPiArCj4gKwlpZiAobmVlZF9zeW5jICYmIG1zbV9kc2kwKSB7Cj4gKwkJcmV0ID0g bXNtX2RzaV9ob3N0X3hmZXJfcHJlcGFyZV82Z192Mihtc21fZHNpMC0+aG9zdCwgbXNnLAo+ICsJ CQkJCQkgICAgICB0cnVlLCB0cnVlKTsKPiArCQlpZiAocmV0KSB7Cj4gKwkJCXByX2VycigiJXM6 IGZhaWxlZCB0byBwcmVwYXJlIG5vbi10cmlnZ2VyIGhvc3QsICVkXG4iLAo+ICsJCQkJX19mdW5j X18sIHJldCk7Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldCA9IG1z bV9kc2lfaG9zdF94ZmVyX3ByZXBhcmVfNmdfdjIobXNtX2RzaS0+aG9zdCwgbXNnLAo+ICsJCQkJ CSAgICAgIG5lZWRfc3luYyA/IHRydWUgOiBmYWxzZSwKPiArCQkJCQkgICAgICBmYWxzZSk7Cj4g KwlpZiAocmV0KSB7Cj4gKwkJcHJfZXJyKCIlczogZmFpbGVkIHRvIHByZXBhcmUgaG9zdCwgJWRc biIsCj4gKwkJCV9fZnVuY19fLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJ aWYgKG5lZWRfc3luYyAmJiBtc21fZHNpMCkgewo+ICsJCXJldCA9IGlzX3JlYWQgPyBtc21fZHNp X2hvc3RfY21kX3J4KG1zbV9kc2kwLT5ob3N0LCBtc2cpIDoKPiArCQkJCW1zbV9kc2lfaG9zdF9j bWRfdHgobXNtX2RzaTAtPmhvc3QsIG1zZyk7Cj4gKwl9IGVsc2Ugewo+ICsJCXJldCA9IGlzX3Jl YWQgPyBtc21fZHNpX2hvc3RfY21kX3J4KG1zbV9kc2ktPmhvc3QsIG1zZykgOgo+ICsJCQkJbXNt X2RzaV9ob3N0X2NtZF90eChtc21fZHNpLT5ob3N0LCBtc2cpOwo+ICsJfQo+ICsKPiArCW1zbV9k c2lfaG9zdF94ZmVyX3Jlc3RvcmUoaG9zdCwgbXNnKTsKPiArCj4gKwlpZiAobmVlZF9zeW5jICYm IG1zbV9kc2kwKQo+ICsJCW1zbV9kc2lfaG9zdF94ZmVyX3Jlc3RvcmUobXNtX2RzaTAtPmhvc3Qs IG1zZyk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQoKSSB0aGluayB0aGUgZnVuYyBhYm92ZSBo YXMgcHJvYmxlbXMsIEknZCBtb3N0bHkgY29waWVkIGl0IGZyb20gdGhlCm9yaWdpbmFsIG1zbV9k c2lfbWFuYWdlcl9jbWRfeGZlciBmdW5jLiBXZSBkb24ndCBrbm93IGlmIHRoZSAnbmVlZF9zeW5j JwpmZWF0dXJlIGlzIHNvbWV0aGluZyB0aGF0J3MgZXZlbiBuZWVkZWQgZm9yIFNETTg0NS4gQWxz bywgd2UgaGF2ZQphc3N1bWVkIGhlcmUgbXNtX2RzaTAgd2lsbCBhbHdheXMgYmUgdGhlIGNsb2Nr IG1hc3Rlciwgd2UgbWlnaHQgaGF2ZQp0byBtYWtlIGl0IGZsZXhpYmxlIHRvIHdvcmsgd2l0aCBl aXRoZXIgRFNJIGJlaW5nIHRoZSBjbG9jayBtYXN0ZXIuCgo+ICsKPiAgIGJvb2wgbXNtX2RzaV9t YW5hZ2VyX2NtZF94ZmVyX3RyaWdnZXIoaW50IGlkLCB1MzIgZG1hX2Jhc2UsIHUzMiBsZW4pCj4g ICB7Cj4gICAJc3RydWN0IG1zbV9kc2kgKm1zbV9kc2kgPSBkc2lfbWdyX2dldF9kc2koaWQpOwo+ IEBAIC04MjksNiArODc5LDIyIEBAIGJvb2wgbXNtX2RzaV9tYW5hZ2VyX2NtZF94ZmVyX3RyaWdn ZXIoaW50IGlkLCB1MzIgZG1hX2Jhc2UsIHUzMiBsZW4pCj4gICAJcmV0dXJuIHRydWU7Cj4gICB9 Cj4gICAKPiArYm9vbCBtc21fZHNpX21hbmFnZXJfY21kX3hmZXJfdHJpZ2dlcl82Z192MihpbnQg aWQsIHUzMiBkbWFfYmFzZSwgdTMyIGxlbikKPiArewo+ICsJc3RydWN0IG1zbV9kc2kgKm1zbV9k c2kxID0gZHNpX21ncl9nZXRfZHNpKERTSV8xKTsKPiArCXN0cnVjdCBtc21fZHNpICptc21fZHNp MCA9IGRzaV9tZ3JfZ2V0X2RzaShEU0lfMCk7Cj4gKwo+ICsJaWYgKElTX1NZTkNfTkVFREVEKCkg JiYgKGlkID09IERTSV8xKSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJbXNtX2RzaV9ob3N0 X2NtZF94ZmVyX2NvbW1pdChtc21fZHNpMS0+aG9zdCwgZG1hX2Jhc2UsIGxlbik7Cj4gKwo+ICsJ aWYgKElTX1NZTkNfTkVFREVEKCkgJiYgbXNtX2RzaTApCj4gKwkJbXNtX2RzaV9ob3N0X2NtZF94 ZmVyX2NvbW1pdChtc21fZHNpMC0+aG9zdCwgZG1hX2Jhc2UsIGxlbik7Cj4gKwoKVGhpcyBhZ2Fp biBpcyBzb21ldGhpbmcgSSdkIGhhY2tlZCB0byBnZXQgdGhlIGRpc3BsYXkgcnVubmluZywgd2Ug Y2FuJ3QKYXNzdW1lIHRoYXQgbXNtX2RzaTAgaXMgZ29pbmcgdG8gYmUgdGhlIGNsb2NrIG1hc3Rl ci4KClRoYW5rcywKQXJjaGl0Cgo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gICB2b2lkIG1z bV9kc2lfbWFuYWdlcl9hdHRhY2hfZHNpX2RldmljZShpbnQgaWQsIHUzMiBkZXZpY2VfZmxhZ3Mp Cj4gICB7Cj4gICAJc3RydWN0IG1zbV9kc2kgKm1zbV9kc2kgPSBkc2lfbWdyX2dldF9kc2koaWQp Owo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVl ZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K