From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH] drm/bridge: tc358767: Expose test mode functionality via debugfs Date: Tue, 27 Aug 2019 01:08:07 +0300 Message-ID: <20190826220807.GK5031@pendragon.ideasonboard.com> References: <20190826182524.5064-1-andrew.smirnov@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id DB1586E13D for ; Mon, 26 Aug 2019 22:08:15 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190826182524.5064-1-andrew.smirnov@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrey Smirnov Cc: Cory Tusar , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Tomi Valkeinen , Chris Healy List-Id: dri-devel@lists.freedesktop.org SGkgQW5kcmV5LAoKVGhhbmsgeW91IGZvciB0aGUgcGF0Y2guCgpPbiBNb24sIEF1ZyAyNiwgMjAx OSBhdCAxMToyNToyNEFNIC0wNzAwLCBBbmRyZXkgU21pcm5vdiB3cm90ZToKPiBQcmVzZW50bHks IHRoZSBkcml2ZXIgY29kZSBhcnRpZmljaWFsbHkgbGltaXRzIHRlc3QgcGF0dGVybiBtb2RlIHRv IGEKPiBzaW5nbGUgcGF0dGVybiB3aXRoIGZpeGVkIGNvbG9yIHNlbGVjdGlvbi4gSXQgYmVpbmcg YSBrZXJuZWwgbW9kdWxlCj4gcGFyYW1ldGVyIG1ha2VzIHN3aXRjaGluZyAidGVzdCBwYXR0ZXIi IDwtPiAicHJvcGVyIG91dHB1dCIgbW9kZXMKPiBvbi10aGUtZmx5IGNsdW5reSBhbmQgb3V0cmln aHQgaW1wb3NzaWJsZSBpZiB0aGUgZHJpdmVyIGlzIGJ1aWx0IGludG8KPiB0aGUga2VybmVsLgo+ IAo+IFRvIGltcHJvdmUgdGhlIHNpdHVhdGlvbiBhIGJpdCwgY29udmVydCBjdXJyZW50IHRlc3Qg cGF0dGVybiBjb2RlIHRvCj4gdXNlIGRlYnVnZnMgaW5zdGVhZCBieSBleHBvc2luZyAiVGVzdEN0 bCIgcmVnaXN0ZXIuIFRoaXMgd2F5IG9sZAo+ICJ0Y190ZXN0X3BhdHRlcm49MSIgZnVuY3Rpb25h bGl0eSBjYW4gYmUgZW11bGF0ZWQgdmlhOgo+IAo+ICAgICBlY2hvIC1uIDB4NzgxNDYzMTIgPiB0 c3RjdGwKPiAKPiBhbmQgc3dpdGNoIGJhY2sgdG8gcmVndWxhciBtb2RlIGNhbiBiZSBkb25lIHdp dGg6Cj4gCj4gICAgIGVjaG8gLW4gMHg3ODE0NjMxMCA+IHRzdGN0bAoKQ2FuJ3Qgd2UgbWFrZSB0 aGlzIG1vcmUgdXNlcmZyaWVuZGx5IGJ5IGV4cG9zaW5nIGVpdGhlciBhIHRlc3QgcGF0dGVybgpp bmRleCwgb3IgYSBzdHJpbmcgPyBEbyBhbGwgYml0cyBpbiB0aGUgcmVnaXN0ZXIgbmVlZCB0byBi ZSBjb250cm9sbGVkCmZyb20gdXNlcnNwYWNlID8KCj4gTm90ZSB0aGF0IHN3aXRjaGluZyB0byBh bnkgb2YgdGhlIHRlc3QgcGF0dGVybnMsIHdpbGwgTk9UIHRyaWdnZXIgbGluawo+IHJlLWVzdGFi bGlzaG1lbnQgd2hlcmVhcyBzd2l0Y2hpbmcgdG8gbm9ybWFsIG9wZXJhdGlvbiBXSUxMLiBUaGlz IGlzCj4gZG9uZSBzbzoKPiAKPiBhKSB3ZSBjYW4gaXNvbGF0ZSBhbmQgdmVyaWZ5IChlKURQIGxp bmsgZnVuY3Rpb25hbGl0eSBieSBzd2l0Y2hpbmcgdG8KPiAgICBvbmUgb2YgdGhlIHRlc3QgcGF0 dGVycwo+IAo+IGIpIHRyaWdnZXIgYSBsaW5rIHJlLWVzdGFibGlzaG1lbnQgYnkgc3dpdGNoaW5n IGJhY2sgdG8gbm9ybWFsIG1vZGUKPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgU21pcm5vdiA8 YW5kcmV3LnNtaXJub3ZAZ21haWwuY29tPgo+IENjOiBBbmRyemVqIEhhamRhIDxhLmhhamRhQHNh bXN1bmcuY29tPgo+IENjOiBMYXVyZW50IFBpbmNoYXJ0IDxMYXVyZW50LnBpbmNoYXJ0QGlkZWFz b25ib2FyZC5jb20+Cj4gQ2M6IFRvbWkgVmFsa2VpbmVuIDx0b21pLnZhbGtlaW5lbkB0aS5jb20+ Cj4gQ2M6IENvcnkgVHVzYXIgPGNvcnkudHVzYXJAemlpLmFlcm8+Cj4gQ2M6IENocmlzIEhlYWx5 IDxjcGhlYWx5QGdtYWlsLmNvbT4KPiBDYzogTHVjYXMgU3RhY2ggPGwuc3RhY2hAcGVuZ3V0cm9u aXguZGU+Cj4gQ2M6IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBDYzogbGludXgt a2VybmVsQHZnZXIua2VybmVsLm9yZwo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3Rj MzU4NzY3LmMgfCAxMzcgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4gIDEgZmlsZSBj aGFuZ2VkLCAxMDEgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3NjcuYyBiL2RyaXZlcnMvZ3B1L2RybS9i cmlkZ2UvdGMzNTg3NjcuYwo+IGluZGV4IDYzMDhkOTNhZDkxZC4uN2E3OTViNjEzZWQwIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3NjcuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3NjcuYwo+IEBAIC0xNyw2ICsxNyw3IEBACj4gIAo+ICAj aW5jbHVkZSA8bGludXgvYml0ZmllbGQuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsj aW5jbHVkZSA8bGludXgvZGVidWdmcy5oPgo+ICAjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4g ICNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9pMmMu aD4KPiBAQCAtMjIyLDExICsyMjMsMTAgQEAKPiAgI2RlZmluZSBDT0xPUl9CCQkJR0VOTUFTSygx NSwgOCkKPiAgI2RlZmluZSBFTkkyQ0ZJTFRFUgkJQklUKDQpCj4gICNkZWZpbmUgQ09MT1JfQkFS X01PREUJCUdFTk1BU0soMSwgMCkKPiArI2RlZmluZSBDT0xPUl9CQVJfTU9ERV9OT1JNQUwJMAo+ ICAjZGVmaW5lIENPTE9SX0JBUl9NT0RFX0JBUlMJMgo+IC0jZGVmaW5lIFBMTF9EQkcJCQkweDBh MDQKPiAgCj4gLXN0YXRpYyBib29sIHRjX3Rlc3RfcGF0dGVybjsKPiAtbW9kdWxlX3BhcmFtX25h bWVkKHRlc3QsIHRjX3Rlc3RfcGF0dGVybiwgYm9vbCwgMDY0NCk7CgpJIGFzc3VtZSB0aGF0IGhp cyBiZWluZyBhIGRlYnVnIGZlYXR1cmUgdGhlcmUncyBubyBzeXN0ZW0gcmVseWluZyBvbiB0aGUK bW9kdWxlIHBhcmFtZXRlciB0aGF0IHdvdWxkIGJyZWFrIGlmIHlvdSByZW1vdmUgaXQgPwoKPiAr I2RlZmluZSBQTExfREJHCQkJMHgwYTA0Cj4gIAo+ICBzdHJ1Y3QgdGNfZWRwX2xpbmsgewo+ICAJ c3RydWN0IGRybV9kcF9saW5rCWJhc2U7Cj4gQEAgLTc4OSwxNiArNzg5LDYgQEAgc3RhdGljIGlu dCB0Y19zZXRfdmlkZW9fbW9kZShzdHJ1Y3QgdGNfZGF0YSAqdGMsCj4gIAlpZiAocmV0KQo+ICAJ CXJldHVybiByZXQ7Cj4gIAo+IC0JLyogVGVzdCBwYXR0ZXJuIHNldHRpbmdzICovCj4gLQlyZXQg PSByZWdtYXBfd3JpdGUodGMtPnJlZ21hcCwgVFNUQ1RMLAo+IC0JCQkgICBGSUVMRF9QUkVQKENP TE9SX1IsIDEyMCkgfAo+IC0JCQkgICBGSUVMRF9QUkVQKENPTE9SX0csIDIwKSB8Cj4gLQkJCSAg IEZJRUxEX1BSRVAoQ09MT1JfQiwgOTkpIHwKPiAtCQkJICAgRU5JMkNGSUxURVIgfAo+IC0JCQkg ICBGSUVMRF9QUkVQKENPTE9SX0JBUl9NT0RFLCBDT0xPUl9CQVJfTU9ERV9CQVJTKSk7Cj4gLQlp ZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+ICAJLyogRFAgTWFpbiBTdHJlYW0gQXR0cmli dXRlcyAqLwo+ICAJdmlkX3N5bmNfZGx5ID0gaHN5bmNfbGVuICsgbGVmdF9tYXJnaW4gKyBtb2Rl LT5oZGlzcGxheTsKPiAgCXJldCA9IHJlZ21hcF93cml0ZSh0Yy0+cmVnbWFwLCBEUDBfVklEU1lO Q0RFTEFZLAo+IEBAIC0xMTUwLDE0ICsxMTQwLDYgQEAgc3RhdGljIGludCB0Y19zdHJlYW1fZW5h YmxlKHN0cnVjdCB0Y19kYXRhICp0YykKPiAgCj4gIAlkZXZfZGJnKHRjLT5kZXYsICJlbmFibGUg dmlkZW8gc3RyZWFtXG4iKTsKPiAgCj4gLQkvKiBQWEwgUExMIHNldHVwICovCj4gLQlpZiAodGNf dGVzdF9wYXR0ZXJuKSB7Cj4gLQkJcmV0ID0gdGNfcHhsX3BsbF9lbih0YywgY2xrX2dldF9yYXRl KHRjLT5yZWZjbGspLAo+IC0JCQkJICAgIDEwMDAgKiB0Yy0+bW9kZS5jbG9jayk7Cj4gLQkJaWYg KHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4gIAlyZXQgPSB0Y19zZXRfdmlkZW9f bW9kZSh0YywgJnRjLT5tb2RlKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiBAQCAt MTE4NiwxMiArMTE2OCw4IEBAIHN0YXRpYyBpbnQgdGNfc3RyZWFtX2VuYWJsZShzdHJ1Y3QgdGNf ZGF0YSAqdGMpCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAkvKiBTZXQgaW5wdXQg aW50ZXJmYWNlICovCj4gLQl2YWx1ZSA9IERQMF9BVURTUkNfTk9fSU5QVVQ7Cj4gLQlpZiAodGNf dGVzdF9wYXR0ZXJuKQo+IC0JCXZhbHVlIHw9IERQMF9WSURTUkNfQ09MT1JfQkFSOwo+IC0JZWxz ZQo+IC0JCXZhbHVlIHw9IERQMF9WSURTUkNfRFBJX1JYOwo+IC0JcmV0ID0gcmVnbWFwX3dyaXRl KHRjLT5yZWdtYXAsIFNZU0NUUkwsIHZhbHVlKTsKPiArCXJldCA9IHJlZ21hcF93cml0ZSh0Yy0+ cmVnbWFwLCBTWVNDVFJMLAo+ICsJCQkgICBEUDBfQVVEU1JDX05PX0lOUFVUIHwgRFAwX1ZJRFNS Q19EUElfUlgpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiBAQCAtMTIyMCwz OSArMTE5OCw0NCBAQCBzdGF0aWMgdm9pZCB0Y19icmlkZ2VfcHJlX2VuYWJsZShzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlKQo+ICAJZHJtX3BhbmVsX3ByZXBhcmUodGMtPnBhbmVsKTsKPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQgdGNfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKQo+ICtzdGF0aWMgaW50IF9fdGNfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgdGNfZGF0YSAqdGMp Cj4gIHsKPiAtCXN0cnVjdCB0Y19kYXRhICp0YyA9IGJyaWRnZV90b190YyhicmlkZ2UpOwo+ICAJ aW50IHJldDsKPiAgCj4gIAlyZXQgPSB0Y19nZXRfZGlzcGxheV9wcm9wcyh0Yyk7Cj4gIAlpZiAo cmV0IDwgMCkgewo+ICAJCWRldl9lcnIodGMtPmRldiwgImZhaWxlZCB0byByZWFkIGRpc3BsYXkg cHJvcHM6ICVkXG4iLCByZXQpOwo+IC0JCXJldHVybjsKPiArCQlyZXR1cm4gcmV0Owo+ICAJfQo+ ICAKPiAgCXJldCA9IHRjX21haW5fbGlua19lbmFibGUodGMpOwo+ICAJaWYgKHJldCA8IDApIHsK PiAgCQlkZXZfZXJyKHRjLT5kZXYsICJtYWluIGxpbmsgZW5hYmxlIGVycm9yOiAlZFxuIiwgcmV0 KTsKPiAtCQlyZXR1cm47Cj4gKwkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gIAlyZXQgPSB0Y19z dHJlYW1fZW5hYmxlKHRjKTsKPiAgCWlmIChyZXQgPCAwKSB7Cj4gIAkJZGV2X2Vycih0Yy0+ZGV2 LCAibWFpbiBsaW5rIHN0cmVhbSBzdGFydCBlcnJvcjogJWRcbiIsIHJldCk7Cj4gIAkJdGNfbWFp bl9saW5rX2Rpc2FibGUodGMpOwo+IC0JCXJldHVybjsKPiAgCX0KPiAgCj4gLQlkcm1fcGFuZWxf ZW5hYmxlKHRjLT5wYW5lbCk7Cj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9p ZCB0Y19icmlkZ2VfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICtzdGF0aWMg dm9pZCB0Y19icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gIHsKPiAg CXN0cnVjdCB0Y19kYXRhICp0YyA9IGJyaWRnZV90b190YyhicmlkZ2UpOwo+IC0JaW50IHJldDsK PiAgCj4gLQlkcm1fcGFuZWxfZGlzYWJsZSh0Yy0+cGFuZWwpOwo+ICsJaWYgKF9fdGNfYnJpZGdl X2VuYWJsZSh0YykgPCAwKQo+ICsJCXJldHVybjsKPiArCj4gKwlkcm1fcGFuZWxfZW5hYmxlKHRj LT5wYW5lbCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgX190Y19icmlkZ2VfZGlzYWJsZShzdHJ1 Y3QgdGNfZGF0YSAqdGMpCj4gK3sKPiArCWludCByZXQ7Cj4gIAo+ICAJcmV0ID0gdGNfc3RyZWFt X2Rpc2FibGUodGMpOwo+ICAJaWYgKHJldCA8IDApCj4gQEAgLTEyNjEsNiArMTI0NCwxNiBAQCBz dGF0aWMgdm9pZCB0Y19icmlkZ2VfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ ICAJcmV0ID0gdGNfbWFpbl9saW5rX2Rpc2FibGUodGMpOwo+ICAJaWYgKHJldCA8IDApCj4gIAkJ ZGV2X2Vycih0Yy0+ZGV2LCAibWFpbiBsaW5rIGRpc2FibGUgZXJyb3I6ICVkXG4iLCByZXQpOwo+ ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHRjX2JyaWRnZV9kaXNh YmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3sKPiArCXN0cnVjdCB0Y19kYXRhICp0 YyA9IGJyaWRnZV90b190YyhicmlkZ2UpOwo+ICsKPiArCWRybV9wYW5lbF9kaXNhYmxlKHRjLT5w YW5lbCk7Cj4gKwlfX3RjX2JyaWRnZV9kaXNhYmxlKHRjKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZv aWQgdGNfYnJpZGdlX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+IEBA IC0xMzcyLDYgKzEzNjUsNzcgQEAgc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgdGNf Y29ubmVjdG9yX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmUKPiAgCQlyZXR1cm4g Y29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgdGNf dHN0Y3RsX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+ICt7Cj4gKwlzdHJ1Y3QgdGNfZGF0YSAq dGMgPSBkYXRhOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoRklFTERfR0VUKENPTE9SX0JBUl9N T0RFLCB2YWwpID09IENPTE9SX0JBUl9NT0RFX05PUk1BTCkgewo+ICsJCXJldCA9IHJlZ21hcF93 cml0ZSh0Yy0+cmVnbWFwLCBTWVNDVFJMLCBEUDBfVklEU1JDX0RQSV9SWCk7Cj4gKwkJaWYgKHJl dCkgewo+ICsJCQlkZXZfZXJyKHRjLT5kZXYsCj4gKwkJCQkiZmFpbGVkIHRvIHNlbGVjdCBkcGkg dmlkZW8gc3RyZWFtXG4iKTsKPiArCQkJcmV0dXJuIHJldDsKPiArCQl9Cj4gKwo+ICsJCXJldCA9 IHJlZ21hcF93cml0ZSh0Yy0+cmVnbWFwLCBUU1RDVEwsIHZhbCB8IEVOSTJDRklMVEVSKTsKPiAr CQlpZiAocmV0KSB7Cj4gKwkJCWRldl9lcnIodGMtPmRldiwgImZhaWxlZCB0byBzZXQgVFNUQ1RM XG4iKTsKPiArCQkJcmV0dXJuIHJldDsKPiArCQl9Cj4gKwo+ICsJCXJldCA9IHRjX3B4bF9wbGxf ZGlzKHRjKTsKPiArCQlpZiAocmV0KSB7Cj4gKwkJCWRldl9lcnIodGMtPmRldiwgImZhaWxlZCB0 byBkaXNhYmxlIFBMTFxuIik7Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsKPiArCQkvKgo+ ICsJCSAqIFJlLWVzdGFibGlzaCBEUCBsaW5rCj4gKwkJICovCj4gKwkJcmV0ID0gX190Y19icmlk Z2VfZGlzYWJsZSh0Yyk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJ cmV0ID0gX190Y19icmlkZ2VfZW5hYmxlKHRjKTsKPiArCQlpZiAocmV0KQo+ICsJCQlyZXR1cm4g cmV0OwoKSWYgdGhlIGJyaWRnZSBpcyBjdXJyZW50bHkgZGlzYWJsZWQgeW91IHNob3VsZCBub3Qg ZW5hYmxlIGl0LiBJIHRoaW5rCnlvdSBuZWVkIHRvIGd1YXJkIGFnYWluc3QgcmFjZSBjb25kaXRp b25zIHdpdGggdGhlIGVuYWJsZS9kaXNhYmxlCmZ1bmN0aW9ucywgYXMgd2VsbCBhcyBkZWxheSB3 cml0ZXMgdW50aWwgdGhlIGJyaWRnZSBnZXRzIGVuYWJsZWQgaWYgaXQKaXMgY3VycmVudGx5IGRp c2FibGVkLgoKPiArCX0gZWxzZSB7Cj4gKwkJcmV0ID0gdGNfcHhsX3BsbF9lbih0YywgY2xrX2dl dF9yYXRlKHRjLT5yZWZjbGspLAo+ICsJCQkJICAgIDEwMDAgKiB0Yy0+bW9kZS5jbG9jayk7Cj4g KwkJaWYgKHJldCkgewo+ICsJCQlkZXZfZXJyKHRjLT5kZXYsICJmYWlsZWQgdG8gZW5hYmxlIFBM TFxuIik7Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsKPiArCQlyZXQgPSByZWdtYXBfd3Jp dGUodGMtPnJlZ21hcCwgVFNUQ1RMLCB2YWwgfCBFTkkyQ0ZJTFRFUik7Cj4gKwkJaWYgKHJldCkg ewo+ICsJCQlkZXZfZXJyKHRjLT5kZXYsICJmYWlsZWQgdG8gc2V0IFRTVENUTFxuIik7Cj4gKwkJ CXJldHVybiByZXQ7Cj4gKwkJfQo+ICsKPiArCQlyZXQgPSByZWdtYXBfd3JpdGUodGMtPnJlZ21h cCwgU1lTQ1RSTCwgRFAwX1ZJRFNSQ19DT0xPUl9CQVIpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJ ZGV2X2Vycih0Yy0+ZGV2LCAiZmFpbGVkIHRvIGNvbG9yIGJhciB2aWRlbyBzdHJlYW1cbiIpOwo+ ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiArREVGSU5FX1NJTVBMRV9BVFRSSUJVVEUodGNfdHN0Y3RsX2ZvcHMsIE5VTEwsIHRjX3RzdGN0 bF9zZXQsICIlbGx1XG4iKTsKClNob3VsZG4ndCB5b3UgYWxzbyBwcm92aWRlIGEgZ2V0IGhhbmRs ZXIgPwoKPiArc3RhdGljIGludCB0Y19sYXRlX3JlZ2lzdGVyKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IpCj4gK3sKPiArCWlmIChjb25uZWN0b3ItPmRlYnVnZnNfZW50cnkpCj4gKwkJ ZGVidWdmc19jcmVhdGVfZmlsZV91bnNhZmUoInRzdGN0bCIsIDA2NDQsCj4gKwkJCQkJICAgY29u bmVjdG9yLT5kZWJ1Z2ZzX2VudHJ5LAo+ICsJCQkJCSAgIGNvbm5lY3Rvcl90b190Yyhjb25uZWN0 b3IpLAo+ICsJCQkJCSAgICZ0Y190c3RjdGxfZm9wcyk7Cj4gKwlyZXR1cm4gMDsKPiArfQoKV2h5 IGEgLmxhdGVfcmVnaXN0ZXIoKSBoYW5kbGVyLCBjYW4ndCB5b3UgZG8gdGhpcyBhdCBwcm9iZSB0 aW1lID8KCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyB0Y19jb25u ZWN0b3JfZnVuY3MgPSB7Cj4gIAkuZGV0ZWN0ID0gdGNfY29ubmVjdG9yX2RldGVjdCwKPiAgCS5m aWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAo+IEBA IC0xMzc5LDYgKzE0NDMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVu Y3MgdGNfY29ubmVjdG9yX2Z1bmNzID0gewo+ICAJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX3Jlc2V0LAo+ICAJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWlj X2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAo+ICAJLmF0b21pY19kZXN0cm95X3N0 YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsCj4gKwkubGF0 ZV9yZWdpc3RlciA9IHRjX2xhdGVfcmVnaXN0ZXIsCj4gIH07Cj4gIAo+ICBzdGF0aWMgaW50IHRj X2JyaWRnZV9hdHRhY2goc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKCi0tIApSZWdhcmRzLAoK TGF1cmVudCBQaW5jaGFydApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWw=