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 11:06:44 +0300 Message-ID: <20190827080644.GF5054@pendragon.ideasonboard.com> References: <20190826182524.5064-1-andrew.smirnov@gmail.com> <20190826220807.GK5031@pendragon.ideasonboard.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 18F6289938 for ; Tue, 27 Aug 2019 08:06:53 +0000 (UTC) Content-Disposition: inline In-Reply-To: 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 , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Chris Healy List-Id: dri-devel@lists.freedesktop.org SGkgQW5kcmV5LAoKT24gTW9uLCBBdWcgMjYsIDIwMTkgYXQgMDk6MjQ6NTdQTSAtMDcwMCwgQW5k cmV5IFNtaXJub3Ygd3JvdGU6Cj4gT24gTW9uLCBBdWcgMjYsIDIwMTkgYXQgMzowOCBQTSBMYXVy ZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4gT24gTW9uLCBBdWcgMjYsIDIwMTkgYXQgMTE6MjU6MjRB TSAtMDcwMCwgQW5kcmV5IFNtaXJub3Ygd3JvdGU6Cj4gPiA+IFByZXNlbnRseSwgdGhlIGRyaXZl ciBjb2RlIGFydGlmaWNpYWxseSBsaW1pdHMgdGVzdCBwYXR0ZXJuIG1vZGUgdG8gYQo+ID4gPiBz aW5nbGUgcGF0dGVybiB3aXRoIGZpeGVkIGNvbG9yIHNlbGVjdGlvbi4gSXQgYmVpbmcgYSBrZXJu ZWwgbW9kdWxlCj4gPiA+IHBhcmFtZXRlciBtYWtlcyBzd2l0Y2hpbmcgInRlc3QgcGF0dGVyIiA8 LT4gInByb3BlciBvdXRwdXQiIG1vZGVzCj4gPiA+IG9uLXRoZS1mbHkgY2x1bmt5IGFuZCBvdXRy aWdodCBpbXBvc3NpYmxlIGlmIHRoZSBkcml2ZXIgaXMgYnVpbHQgaW50bwo+ID4gPiB0aGUga2Vy bmVsLgo+ID4gPgo+ID4gPiBUbyBpbXByb3ZlIHRoZSBzaXR1YXRpb24gYSBiaXQsIGNvbnZlcnQg Y3VycmVudCB0ZXN0IHBhdHRlcm4gY29kZSB0bwo+ID4gPiB1c2UgZGVidWdmcyBpbnN0ZWFkIGJ5 IGV4cG9zaW5nICJUZXN0Q3RsIiByZWdpc3Rlci4gVGhpcyB3YXkgb2xkCj4gPiA+ICJ0Y190ZXN0 X3BhdHRlcm49MSIgZnVuY3Rpb25hbGl0eSBjYW4gYmUgZW11bGF0ZWQgdmlhOgo+ID4gPgo+ID4g PiAgICAgZWNobyAtbiAweDc4MTQ2MzEyID4gdHN0Y3RsCj4gPiA+Cj4gPiA+IGFuZCBzd2l0Y2gg YmFjayB0byByZWd1bGFyIG1vZGUgY2FuIGJlIGRvbmUgd2l0aDoKPiA+ID4KPiA+ID4gICAgIGVj aG8gLW4gMHg3ODE0NjMxMCA+IHRzdGN0bAo+ID4KPiA+IENhbid0IHdlIG1ha2UgdGhpcyBtb3Jl IHVzZXJmcmllbmRseSBieSBleHBvc2luZyBlaXRoZXIgYSB0ZXN0IHBhdHRlcm4KPiA+IGluZGV4 LCBvciBhIHN0cmluZyA/Cj4gCj4gV2UgY291bGQsIGJ1dCB0aGVuIGEpIGl0IHdvdWxkIHJlcXVp cmUgbW9yZSBjb2RlIGluIHRoZSBkcml2ZXIgYikgdGhlCj4gZmlsZXMgd291bGRuJ3QgY29ycmVz cG9uZCBkaXJlY3RseSB0byBzb21ldGhpbmcgZGVzY3JpYmVkIGluIHRoZQo+IHBhcnQncyBkYXRh c2hlZXQuIEp1c3QgZGlkbid0IHNlZW0gd29ydGggaXQgdG8gbWUuCgpDb3VsZCB5b3UgdGhlbiBw cm92aWRlIG1lIHdpdGggdGhlIGRhdGFzaGVldCA/IDotKSBUaGUgd2hvbGUgcG9pbnQgb2YgYQpk cml2ZXIgaXMgdG8gYXZvaWQgbmVlZGluZyBkZXRhaWxlZCBrbm93bGVkZ2Ugb2YgdGhlIGRldmlj ZSdzIGludGVybmFscwppbiB1c2Vyc3BhY2UuCgo+ID4gRG8gYWxsIGJpdHMgaW4gdGhlIHJlZ2lz dGVyIG5lZWQgdG8gYmUgY29udHJvbGxlZAo+ID4gZnJvbSB1c2Vyc3BhY2UgPwo+IAo+IFByZXR0 eSBtdWNoLCB5ZXMuIEl0J3MgZm9ybWF0dGVkIGFzIFJSX0dHX0JCX1hfTSwgd2hlcmUgUiwgRywg Qgo+IHNwZWNpZmllcyBjb2xvciB1c2VkIGZvciB2YXJpb3VzIHBhdHRlcm5zLCBYIGlzIGlycmVs ZXZhbnQgYW5kIE0KPiBzcGVjaWZpZXMgdGVzdCBwYXR0ZXJuIHRvIHVzZS4KPiAKPiA+ID4gTm90 ZSB0aGF0IHN3aXRjaGluZyB0byBhbnkgb2YgdGhlIHRlc3QgcGF0dGVybnMsIHdpbGwgTk9UIHRy aWdnZXIgbGluawo+ID4gPiByZS1lc3RhYmxpc2htZW50IHdoZXJlYXMgc3dpdGNoaW5nIHRvIG5v cm1hbCBvcGVyYXRpb24gV0lMTC4gVGhpcyBpcwo+ID4gPiBkb25lIHNvOgo+ID4gPgo+ID4gPiBh KSB3ZSBjYW4gaXNvbGF0ZSBhbmQgdmVyaWZ5IChlKURQIGxpbmsgZnVuY3Rpb25hbGl0eSBieSBz d2l0Y2hpbmcgdG8KPiA+ID4gICAgb25lIG9mIHRoZSB0ZXN0IHBhdHRlcnMKPiA+ID4KPiA+ID4g YikgdHJpZ2dlciBhIGxpbmsgcmUtZXN0YWJsaXNobWVudCBieSBzd2l0Y2hpbmcgYmFjayB0byBu b3JtYWwgbW9kZQo+ID4gPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgU21pcm5vdiA8YW5k cmV3LnNtaXJub3ZAZ21haWwuY29tPgo+ID4gPiBDYzogQW5kcnplaiBIYWpkYSA8YS5oYWpkYUBz YW1zdW5nLmNvbT4KPiA+ID4gQ2M6IExhdXJlbnQgUGluY2hhcnQgPExhdXJlbnQucGluY2hhcnRA aWRlYXNvbmJvYXJkLmNvbT4KPiA+ID4gQ2M6IFRvbWkgVmFsa2VpbmVuIDx0b21pLnZhbGtlaW5l bkB0aS5jb20+Cj4gPiA+IENjOiBDb3J5IFR1c2FyIDxjb3J5LnR1c2FyQHppaS5hZXJvPgo+ID4g PiBDYzogQ2hyaXMgSGVhbHkgPGNwaGVhbHlAZ21haWwuY29tPgo+ID4gPiBDYzogTHVjYXMgU3Rh Y2ggPGwuc3RhY2hAcGVuZ3V0cm9uaXguZGU+Cj4gPiA+IENjOiBkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4gPiA+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCj4gPiA+ IC0tLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90YzM1ODc2Ny5jIHwgMTM3ICsrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLQo+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDEwMSBpbnNl cnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKPiA+ID4KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3NjcuYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMz NTg3NjcuYwo+ID4gPiBpbmRleCA2MzA4ZDkzYWQ5MWQuLjdhNzk1YjYxM2VkMCAxMDA2NDQKPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90YzM1ODc2Ny5jCj4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3NjcuYwo+ID4gPiBAQCAtMTcsNiArMTcsNyBAQAo+ ID4gPgo+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L2JpdGZpZWxkLmg+Cj4gPiA+ICAjaW5jbHVkZSA8 bGludXgvY2xrLmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvZGVidWdmcy5oPgo+ID4gPiAgI2lu Y2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3Vt ZXIuaD4KPiA+ID4gICNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPiA+ID4gQEAgLTIyMiwxMSArMjIz LDEwIEBACj4gPiA+ICAjZGVmaW5lIENPTE9SX0IgICAgICAgICAgICAgICAgICAgICAgR0VOTUFT SygxNSwgOCkKPiA+ID4gICNkZWZpbmUgRU5JMkNGSUxURVIgICAgICAgICAgQklUKDQpCj4gPiA+ ICAjZGVmaW5lIENPTE9SX0JBUl9NT0RFICAgICAgICAgICAgICAgR0VOTUFTSygxLCAwKQo+ID4g PiArI2RlZmluZSBDT0xPUl9CQVJfTU9ERV9OT1JNQUwgICAgICAgIDAKPiA+ID4gICNkZWZpbmUg Q09MT1JfQkFSX01PREVfQkFSUyAgMgo+ID4gPiAtI2RlZmluZSBQTExfREJHICAgICAgICAgICAg ICAgICAgICAgIDB4MGEwNAo+ID4gPgo+ID4gPiAtc3RhdGljIGJvb2wgdGNfdGVzdF9wYXR0ZXJu Owo+ID4gPiAtbW9kdWxlX3BhcmFtX25hbWVkKHRlc3QsIHRjX3Rlc3RfcGF0dGVybiwgYm9vbCwg MDY0NCk7Cj4gPgo+ID4gSSBhc3N1bWUgdGhhdCBoaXMgYmVpbmcgYSBkZWJ1ZyBmZWF0dXJlIHRo ZXJlJ3Mgbm8gc3lzdGVtIHJlbHlpbmcgb24gdGhlCj4gPiBtb2R1bGUgcGFyYW1ldGVyIHRoYXQg d291bGQgYnJlYWsgaWYgeW91IHJlbW92ZSBpdCA/Cj4gCj4gWWVhaCwgSSBkb24ndCBrbm93IG9m IGFueSBzeXN0ZW0gdGhhdCBuZWVkcyB0aGF0IHBhcmFtZXRlci4gSXQgc2VlbXMKPiBwcmV0dHkg dXNlbGVzcyBmb3IgYW55dGhpbmcgYnV0IGJhc2ljIGRlYnVnZ2luZy4KPiAKPiA+ID4gKyNkZWZp bmUgUExMX0RCRyAgICAgICAgICAgICAgICAgICAgICAweDBhMDQKPiA+ID4KPiA+ID4gIHN0cnVj dCB0Y19lZHBfbGluayB7Cj4gPiA+ICAgICAgIHN0cnVjdCBkcm1fZHBfbGluayAgICAgIGJhc2U7 Cj4gPiA+IEBAIC03ODksMTYgKzc4OSw2IEBAIHN0YXRpYyBpbnQgdGNfc2V0X3ZpZGVvX21vZGUo c3RydWN0IHRjX2RhdGEgKnRjLAo+ID4gPiAgICAgICBpZiAocmV0KQo+ID4gPiAgICAgICAgICAg ICAgIHJldHVybiByZXQ7Cj4gPiA+Cj4gPiA+IC0gICAgIC8qIFRlc3QgcGF0dGVybiBzZXR0aW5n cyAqLwo+ID4gPiAtICAgICByZXQgPSByZWdtYXBfd3JpdGUodGMtPnJlZ21hcCwgVFNUQ1RMLAo+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgRklFTERfUFJFUChDT0xPUl9SLCAxMjApIHwK PiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIEZJRUxEX1BSRVAoQ09MT1JfRywgMjApIHwK PiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIEZJRUxEX1BSRVAoQ09MT1JfQiwgOTkpIHwK PiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIEVOSTJDRklMVEVSIHwKPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgIEZJRUxEX1BSRVAoQ09MT1JfQkFSX01PREUsIENPTE9SX0JBUl9N T0RFX0JBUlMpKTsKPiA+ID4gLSAgICAgaWYgKHJldCkKPiA+ID4gLSAgICAgICAgICAgICByZXR1 cm4gcmV0Owo+ID4gPiAtCj4gPiA+ICAgICAgIC8qIERQIE1haW4gU3RyZWFtIEF0dHJpYnV0ZXMg Ki8KPiA+ID4gICAgICAgdmlkX3N5bmNfZGx5ID0gaHN5bmNfbGVuICsgbGVmdF9tYXJnaW4gKyBt b2RlLT5oZGlzcGxheTsKPiA+ID4gICAgICAgcmV0ID0gcmVnbWFwX3dyaXRlKHRjLT5yZWdtYXAs IERQMF9WSURTWU5DREVMQVksCj4gPiA+IEBAIC0xMTUwLDE0ICsxMTQwLDYgQEAgc3RhdGljIGlu dCB0Y19zdHJlYW1fZW5hYmxlKHN0cnVjdCB0Y19kYXRhICp0YykKPiA+ID4KPiA+ID4gICAgICAg ZGV2X2RiZyh0Yy0+ZGV2LCAiZW5hYmxlIHZpZGVvIHN0cmVhbVxuIik7Cj4gPiA+Cj4gPiA+IC0g ICAgIC8qIFBYTCBQTEwgc2V0dXAgKi8KPiA+ID4gLSAgICAgaWYgKHRjX3Rlc3RfcGF0dGVybikg ewo+ID4gPiAtICAgICAgICAgICAgIHJldCA9IHRjX3B4bF9wbGxfZW4odGMsIGNsa19nZXRfcmF0 ZSh0Yy0+cmVmY2xrKSwKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEw MDAgKiB0Yy0+bW9kZS5jbG9jayk7Cj4gPiA+IC0gICAgICAgICAgICAgaWYgKHJldCkKPiA+ID4g LSAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+IC0gICAgIH0KPiA+ID4gLQo+ ID4gPiAgICAgICByZXQgPSB0Y19zZXRfdmlkZW9fbW9kZSh0YywgJnRjLT5tb2RlKTsKPiA+ID4g ICAgICAgaWYgKHJldCkKPiA+ID4gICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gPiBAQCAt MTE4NiwxMiArMTE2OCw4IEBAIHN0YXRpYyBpbnQgdGNfc3RyZWFtX2VuYWJsZShzdHJ1Y3QgdGNf ZGF0YSAqdGMpCj4gPiA+ICAgICAgIGlmIChyZXQpCj4gPiA+ICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKPiA+ID4gICAgICAgLyogU2V0IGlucHV0IGludGVyZmFjZSAqLwo+ID4gPiAtICAgICB2 YWx1ZSA9IERQMF9BVURTUkNfTk9fSU5QVVQ7Cj4gPiA+IC0gICAgIGlmICh0Y190ZXN0X3BhdHRl cm4pCj4gPiA+IC0gICAgICAgICAgICAgdmFsdWUgfD0gRFAwX1ZJRFNSQ19DT0xPUl9CQVI7Cj4g PiA+IC0gICAgIGVsc2UKPiA+ID4gLSAgICAgICAgICAgICB2YWx1ZSB8PSBEUDBfVklEU1JDX0RQ SV9SWDsKPiA+ID4gLSAgICAgcmV0ID0gcmVnbWFwX3dyaXRlKHRjLT5yZWdtYXAsIFNZU0NUUkws IHZhbHVlKTsKPiA+ID4gKyAgICAgcmV0ID0gcmVnbWFwX3dyaXRlKHRjLT5yZWdtYXAsIFNZU0NU UkwsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBEUDBfQVVEU1JDX05PX0lOUFVUIHwg RFAwX1ZJRFNSQ19EUElfUlgpOwo+ID4gPiAgICAgICBpZiAocmV0KQo+ID4gPiAgICAgICAgICAg ICAgIHJldHVybiByZXQ7Cj4gPiA+Cj4gPiA+IEBAIC0xMjIwLDM5ICsxMTk4LDQ0IEBAIHN0YXRp YyB2b2lkIHRjX2JyaWRnZV9wcmVfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4g PiA+ICAgICAgIGRybV9wYW5lbF9wcmVwYXJlKHRjLT5wYW5lbCk7Cj4gPiA+ICB9Cj4gPiA+Cj4g PiA+IC1zdGF0aWMgdm9pZCB0Y19icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UpCj4gPiA+ICtzdGF0aWMgaW50IF9fdGNfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgdGNfZGF0YSAq dGMpCj4gPiA+ICB7Cj4gPiA+IC0gICAgIHN0cnVjdCB0Y19kYXRhICp0YyA9IGJyaWRnZV90b190 YyhicmlkZ2UpOwo+ID4gPiAgICAgICBpbnQgcmV0Owo+ID4gPgo+ID4gPiAgICAgICByZXQgPSB0 Y19nZXRfZGlzcGxheV9wcm9wcyh0Yyk7Cj4gPiA+ICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gPiA+ ICAgICAgICAgICAgICAgZGV2X2Vycih0Yy0+ZGV2LCAiZmFpbGVkIHRvIHJlYWQgZGlzcGxheSBw cm9wczogJWRcbiIsIHJldCk7Cj4gPiA+IC0gICAgICAgICAgICAgcmV0dXJuOwo+ID4gPiArICAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ICAgICAgIH0KPiA+ID4KPiA+ID4gICAgICAgcmV0 ID0gdGNfbWFpbl9saW5rX2VuYWJsZSh0Yyk7Cj4gPiA+ICAgICAgIGlmIChyZXQgPCAwKSB7Cj4g PiA+ICAgICAgICAgICAgICAgZGV2X2Vycih0Yy0+ZGV2LCAibWFpbiBsaW5rIGVuYWJsZSBlcnJv cjogJWRcbiIsIHJldCk7Cj4gPiA+IC0gICAgICAgICAgICAgcmV0dXJuOwo+ID4gPiArICAgICAg ICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ICAgICAgIH0KPiA+ID4KPiA+ID4gICAgICAgcmV0ID0g dGNfc3RyZWFtX2VuYWJsZSh0Yyk7Cj4gPiA+ICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gPiA+ICAg ICAgICAgICAgICAgZGV2X2Vycih0Yy0+ZGV2LCAibWFpbiBsaW5rIHN0cmVhbSBzdGFydCBlcnJv cjogJWRcbiIsIHJldCk7Cj4gPiA+ICAgICAgICAgICAgICAgdGNfbWFpbl9saW5rX2Rpc2FibGUo dGMpOwo+ID4gPiAtICAgICAgICAgICAgIHJldHVybjsKPiA+ID4gICAgICAgfQo+ID4gPgo+ID4g PiAtICAgICBkcm1fcGFuZWxfZW5hYmxlKHRjLT5wYW5lbCk7Cj4gPiA+ICsgICAgIHJldHVybiBy ZXQ7Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+IC1zdGF0aWMgdm9pZCB0Y19icmlkZ2VfZGlzYWJsZShz dHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4gPiArc3RhdGljIHZvaWQgdGNfYnJpZGdlX2Vu YWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4gPiAgewo+ID4gPiAgICAgICBzdHJ1 Y3QgdGNfZGF0YSAqdGMgPSBicmlkZ2VfdG9fdGMoYnJpZGdlKTsKPiA+ID4gLSAgICAgaW50IHJl dDsKPiA+ID4KPiA+ID4gLSAgICAgZHJtX3BhbmVsX2Rpc2FibGUodGMtPnBhbmVsKTsKPiA+ID4g KyAgICAgaWYgKF9fdGNfYnJpZGdlX2VuYWJsZSh0YykgPCAwKQo+ID4gPiArICAgICAgICAgICAg IHJldHVybjsKPiA+ID4gKwo+ID4gPiArICAgICBkcm1fcGFuZWxfZW5hYmxlKHRjLT5wYW5lbCk7 Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgX190Y19icmlkZ2VfZGlzYWJsZShz dHJ1Y3QgdGNfZGF0YSAqdGMpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIGludCByZXQ7Cj4gPiA+Cj4g PiA+ICAgICAgIHJldCA9IHRjX3N0cmVhbV9kaXNhYmxlKHRjKTsKPiA+ID4gICAgICAgaWYgKHJl dCA8IDApCj4gPiA+IEBAIC0xMjYxLDYgKzEyNDQsMTYgQEAgc3RhdGljIHZvaWQgdGNfYnJpZGdl X2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+ID4gICAgICAgcmV0ID0gdGNf bWFpbl9saW5rX2Rpc2FibGUodGMpOwo+ID4gPiAgICAgICBpZiAocmV0IDwgMCkKPiA+ID4gICAg ICAgICAgICAgICBkZXZfZXJyKHRjLT5kZXYsICJtYWluIGxpbmsgZGlzYWJsZSBlcnJvcjogJWRc biIsIHJldCk7Cj4gPiA+ICsKPiA+ID4gKyAgICAgcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ID4g Kwo+ID4gPiArc3RhdGljIHZvaWQgdGNfYnJpZGdlX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSkKPiA+ID4gK3sKPiA+ID4gKyAgICAgc3RydWN0IHRjX2RhdGEgKnRjID0gYnJpZGdl X3RvX3RjKGJyaWRnZSk7Cj4gPiA+ICsKPiA+ID4gKyAgICAgZHJtX3BhbmVsX2Rpc2FibGUodGMt PnBhbmVsKTsKPiA+ID4gKyAgICAgX190Y19icmlkZ2VfZGlzYWJsZSh0Yyk7Cj4gPiA+ICB9Cj4g PiA+Cj4gPiA+ICBzdGF0aWMgdm9pZCB0Y19icmlkZ2VfcG9zdF9kaXNhYmxlKHN0cnVjdCBkcm1f YnJpZGdlICpicmlkZ2UpCj4gPiA+IEBAIC0xMzcyLDYgKzEzNjUsNzcgQEAgc3RhdGljIGVudW0g ZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgdGNfY29ubmVjdG9yX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmUKPiA+ID4gICAgICAgICAgICAgICByZXR1cm4gY29ubmVjdG9yX3N0YXR1c19k aXNjb25uZWN0ZWQ7Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+ICtzdGF0aWMgaW50IHRjX3RzdGN0bF9z ZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKPiA+ID4gK3sKPiA+ID4gKyAgICAgc3RydWN0IHRjX2Rh dGEgKnRjID0gZGF0YTsKPiA+ID4gKyAgICAgaW50IHJldDsKPiA+ID4gKwo+ID4gPiArICAgICBp ZiAoRklFTERfR0VUKENPTE9SX0JBUl9NT0RFLCB2YWwpID09IENPTE9SX0JBUl9NT0RFX05PUk1B TCkgewo+ID4gPiArICAgICAgICAgICAgIHJldCA9IHJlZ21hcF93cml0ZSh0Yy0+cmVnbWFwLCBT WVNDVFJMLCBEUDBfVklEU1JDX0RQSV9SWCk7Cj4gPiA+ICsgICAgICAgICAgICAgaWYgKHJldCkg ewo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X2Vycih0Yy0+ZGV2LAo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIHNlbGVjdCBkcGkgdmlkZW8gc3Ry ZWFtXG4iKTsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ICsg ICAgICAgICAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgICAgICAgICAgcmV0ID0gcmVnbWFwX3dy aXRlKHRjLT5yZWdtYXAsIFRTVENUTCwgdmFsIHwgRU5JMkNGSUxURVIpOwo+ID4gPiArICAgICAg ICAgICAgIGlmIChyZXQpIHsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIodGMt PmRldiwgImZhaWxlZCB0byBzZXQgVFNUQ1RMXG4iKTsKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgIHJldHVybiByZXQ7Cj4gPiA+ICsgICAgICAgICAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAg ICAgICAgICAgcmV0ID0gdGNfcHhsX3BsbF9kaXModGMpOwo+ID4gPiArICAgICAgICAgICAgIGlm IChyZXQpIHsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIodGMtPmRldiwgImZh aWxlZCB0byBkaXNhYmxlIFBMTFxuIik7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gcmV0Owo+ID4gPiArICAgICAgICAgICAgIH0KPiA+ID4gKwo+ID4gPiArICAgICAgICAgICAg IC8qCj4gPiA+ICsgICAgICAgICAgICAgICogUmUtZXN0YWJsaXNoIERQIGxpbmsKPiA+ID4gKyAg ICAgICAgICAgICAgKi8KPiA+ID4gKyAgICAgICAgICAgICByZXQgPSBfX3RjX2JyaWRnZV9kaXNh YmxlKHRjKTsKPiA+ID4gKyAgICAgICAgICAgICBpZiAocmV0KQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHJldDsKPiA+ID4gKwo+ID4gPiArICAgICAgICAgICAgIHJldCA9IF9f dGNfYnJpZGdlX2VuYWJsZSh0Yyk7Cj4gPiA+ICsgICAgICAgICAgICAgaWYgKHJldCkKPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPgo+ID4gSWYgdGhlIGJyaWRnZSBp cyBjdXJyZW50bHkgZGlzYWJsZWQgeW91IHNob3VsZCBub3QgZW5hYmxlIGl0LiBJIHRoaW5rCj4g PiB5b3UgbmVlZCB0byBndWFyZCBhZ2FpbnN0IHJhY2UgY29uZGl0aW9ucyB3aXRoIHRoZSBlbmFi bGUvZGlzYWJsZQo+ID4gZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIGRlbGF5IHdyaXRlcyB1bnRpbCB0 aGUgYnJpZGdlIGdldHMgZW5hYmxlZCBpZiBpdAo+ID4gaXMgY3VycmVudGx5IGRpc2FibGVkLgo+ IAo+IE9LLCB3aWxsIGRvIGluIHYyLgo+IAo+ID4gPiArICAgICB9IGVsc2Ugewo+ID4gPiArICAg ICAgICAgICAgIHJldCA9IHRjX3B4bF9wbGxfZW4odGMsIGNsa19nZXRfcmF0ZSh0Yy0+cmVmY2xr KSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAgKiB0Yy0+bW9k ZS5jbG9jayk7Cj4gPiA+ICsgICAgICAgICAgICAgaWYgKHJldCkgewo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgZGV2X2Vycih0Yy0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBQTExcbiIpOwo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ID4gKyAgICAgICAgICAg ICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICByZXQgPSByZWdtYXBfd3JpdGUodGMtPnJl Z21hcCwgVFNUQ1RMLCB2YWwgfCBFTkkyQ0ZJTFRFUik7Cj4gPiA+ICsgICAgICAgICAgICAgaWYg KHJldCkgewo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X2Vycih0Yy0+ZGV2LCAiZmFp bGVkIHRvIHNldCBUU1RDVExcbiIpOwo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKPiA+ID4gKyAgICAgICAgICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICBy ZXQgPSByZWdtYXBfd3JpdGUodGMtPnJlZ21hcCwgU1lTQ1RSTCwgRFAwX1ZJRFNSQ19DT0xPUl9C QVIpOwo+ID4gPiArICAgICAgICAgICAgIGlmIChyZXQpIHsKPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIGRldl9lcnIodGMtPmRldiwgImZhaWxlZCB0byBjb2xvciBiYXIgdmlkZW8gc3RyZWFt XG4iKTsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ICsgICAg ICAgICAgICAgfQo+ID4gPiArICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgcmV0dXJuIDA7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gK0RFRklORV9TSU1QTEVfQVRUUklCVVRFKHRjX3RzdGN0bF9m b3BzLCBOVUxMLCB0Y190c3RjdGxfc2V0LCAiJWxsdVxuIik7Cj4gPgo+ID4gU2hvdWxkbid0IHlv dSBhbHNvIHByb3ZpZGUgYSBnZXQgaGFuZGxlciA/Cj4gCj4gVGhlcmUgcmVhbGx5IGlzbid0IGEg dXNlLWNhc2UgZm9yIHJlYWRpbmcgdGhlIHZhbHVlIG9mIFRlc3RDdGwgQUZBSUNULAo+IHNvLCBJ IHNraXBwZWQgaXQgdG8gYXZvaWQgaGF2aW5nIGV4dHJhIGNvZGUuCj4gCj4gPiA+ICtzdGF0aWMg aW50IHRjX2xhdGVfcmVnaXN0ZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ ID4gK3sKPiA+ID4gKyAgICAgaWYgKGNvbm5lY3Rvci0+ZGVidWdmc19lbnRyeSkKPiA+ID4gKyAg ICAgICAgICAgICBkZWJ1Z2ZzX2NyZWF0ZV9maWxlX3Vuc2FmZSgidHN0Y3RsIiwgMDY0NCwKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3ItPmRl YnVnZnNfZW50cnksCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29ubmVjdG9yX3RvX3RjKGNvbm5lY3RvciksCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnRjX3RzdGN0bF9mb3BzKTsKPiA+ID4gKyAgICAgcmV0dXJu IDA7Cj4gPiA+ICt9Cj4gPgo+ID4gV2h5IGEgLmxhdGVfcmVnaXN0ZXIoKSBoYW5kbGVyLCBjYW4n dCB5b3UgZG8gdGhpcyBhdCBwcm9iZSB0aW1lID8KPiAKPiAubGF0ZV9yZWdpc3RlcigpIGhhcHBl bnMgYWZ0ZXIgZHJtX2RlYnVnZnNfY29ubmVjdG9yX2FkZCgpIHdoZXJlCj4gY29ubmVjdG9yLT5k ZWJ1Z2ZzX2VudHJ5IGdldHMgaW5pdGlhbGl6ZWQuIEFGQUlDVCwgSSBjb3VsZCBtb3ZlIHRoYXQK PiBjb2RlIHRvIHByb2JlLCBidXQgdGhlbiBJJ2QgaGF2ZSBjcmVhdGUgYSBzZXBhcmF0ZSBkZWJ1 Z2ZzIHJvb3QKPiBkaXJlY3RvcnkgYXMgd2VsbCBhcyBhZGQgY29kZSB0byBjbGVhbiBpdCB1cCAo Y3VycmVudGx5IEkgcmVseSBvbgo+IGRybV9kZWJ1Z2ZzX2Nvbm5lY3Rvcl9yZW1vdmUoKSByZW1v dmluZyBldmVyeXRoaW5nIHJlY3Vyc2l2ZWx5LgoKVGhlIHVzdWFsIGFwcHJvYWNoIGZvciB0aGlz IGtpbmQgb2YgZGVidWcgZmVhdHVyZSBpcyB0byBjcmVhdGUgYQpkaXJlY3RvcnkgbmFtZWQgYWZ0 ZXIgZGV2X25hbWUoKSBpbiBvcmRlciB0byBndWFyYW50ZWUgdW5pcXVlbmVzcy4gSQpmZWVsIHRo YXQgY291bGQgYmUgYmV0dGVyLCBidXQgaGF2ZSBubyBzdHJvbmcgcHJlZmVyZW5jZS4KCi0tIApS ZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFydApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWw=