From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/7] video: add HDMI state notifier support Date: Mon, 3 Jun 2019 10:09:31 +0200 Message-ID: <20190603080931.GG21222@phenom.ffwll.local> References: <20190603043251.226549-1-cychiang@chromium.org> <20190603043251.226549-2-cychiang@chromium.org> <41e7052b-a58c-5a8c-5d94-37237e0c2070@xs4all.nl> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <41e7052b-a58c-5a8c-5d94-37237e0c2070@xs4all.nl> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Hans Verkuil Cc: alsa-devel@alsa-project.org, Liam Girdwood , David Airlie , dri-devel@lists.freedesktop.org, Takashi Iwai , Laurent Pinchart , Cheng-Yi Chiang , linux-rockchip@lists.infradead.org, dgreid@chromium.org, linux-media@vger.kernel.org, devicetree@vger.kernel.org, tzungbi@chromium.org, Bartlomiej Zolnierkiewicz , Russell King , Rob Herring , Jaroslav Kysela , linux-arm-kernel@lists.infradead.org, Greg Kroah-Hartman , dianders@chromium.org, linux-kernel@vger.kernel.org, Mark Brown , Dariusz Marcinkiewicz List-Id: devicetree@vger.kernel.org T24gTW9uLCBKdW4gMDMsIDIwMTkgYXQgMDk6NDU6NDlBTSArMDIwMCwgSGFucyBWZXJrdWlsIHdy b3RlOgo+IE9uIDYvMy8xOSA2OjMyIEFNLCBDaGVuZy1ZaSBDaGlhbmcgd3JvdGU6Cj4gPiBGcm9t OiBIYW5zIFZlcmt1aWwgPGhhbnMudmVya3VpbEBjaXNjby5jb20+Cj4gPiAKPiA+IEFkZCBzdXBw b3J0IGZvciBIRE1JIGhvdHBsdWcgYW5kIEVESUQgbm90aWZpZXJzLCB3aGljaCBpcyB1c2VkIHRv IGNvbnZleQo+ID4gaW5mb3JtYXRpb24gZnJvbSBIRE1JIGRyaXZlcnMgdG8gdGhlaXIgQ0VDIGFu ZCBhdWRpbyBjb3VudGVycGFydHMuCj4gPiAKPiA+IEJhc2VkIG9uIGFuIGVhcmxpZXIgdmVyc2lv biBmcm9tIFJ1c3NlbGwgS2luZzoKPiA+IAo+ID4gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9y Zy9wYXRjaC85Mjc3MDQzLwo+ID4gCj4gPiBUaGUgaGRtaV9ub3RpZmllciBpcyBhIHJlZmVyZW5j ZSBjb3VudGVkIG9iamVjdCBjb250YWluaW5nIHRoZSBIRE1JIHN0YXRlCj4gPiBvZiBhbiBIRE1J IGRldmljZS4KPiA+IAo+ID4gV2hlbiBhIG5ldyBub3RpZmllciBpcyByZWdpc3RlcmVkIHRoZSBj dXJyZW50IHN0YXRlIHdpbGwgYmUgcmVwb3J0ZWQgdG8KPiA+IHRoYXQgbm90aWZpZXIgYXQgcmVn aXN0cmF0aW9uIHRpbWUuCj4gPiAKPiA+IEJhc2VkIG9uIEhhbnMgVmVya3VpbCdzIHBhdGNoOgo+ ID4gCj4gPiBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzk0NzI1MjEvCj4gCj4g RXJtLCB5b3UgYXJlIGF3YXJlIHRoYXQgdGhpcyBwYXRjaCBtb3JwaGVkIGludG8gYSBDRUMtc3Bl Y2lmaWMgbm90aWZpZXIKPiBmb3VuZCBpbiBkcml2ZXJzL21lZGlhL2NlYy9jZWMtbm90aWZpZXIu Yz8KPiAKPiBJIGRvbid0IHRoaW5rIGl0IG1ha2VzIHNlbnNlIHRvIGhhdmUgdHdvIG5vdGlmaWVy IGltcGxlbWVudGF0aW9ucyBpbiB0aGUga2VybmVsLgo+IFRoZSBvcmlnaW5hbCBpbnRlbnRpb24g d2FzIHRvIGhhdmUgdGhlIG5vdGlmaWVyIGRlYWwgd2l0aCBib3RoIENFQyBhbmQgQVNvQwo+IG5v dGlmaWNhdGlvbnMsIGJ1dCB0aGVyZSB3YXMgbm90IGVub3VnaCBpbnRlcmVzdCBmb3IgdGhlIEFT b0MgYml0cyBhdCB0aGUgdGltZQo+IGFuZCBpdCB3YXMgZHJvcHBlZC4KPiAKPiBJIGFtIHBsYW5u aW5nIGNoYW5nZXMgdG8gdGhlIGNlYy1ub3RpZmllciBBUEksIEkgaG9wZSB0byB3b3JrIG9uIHRo YXQgdGhpcwo+IHdlZWsuIEknbGwgQ0MgeW91IHdoZW4gSSBwb3N0IHRob3NlLiBUaG9zZSBtaWdo dCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQKPiB0byBjb252ZXJ0IHRoZSBjZWMtbm90aWZpZXIg dG8gYW4gaGRtaS1ub3RpZmllciBhcyB3YXMgb3JpZ2luYWxseSBpbnRlbmRlZC4KPiAKPiBJJ3Zl IGFkZGVkIHlvdXIgY29sbGVhZ3VlIERhcml1c3ogTWFyY2lua2lld2ljeiB0byB0aGUgQ0MgbGlz dCBzaW5jZSBoZSdzIGJlZW4KPiB3b3JraW5nIG9uIHNvbWUgbmljZSBjZWMtbm90aWZpZXIgaW1w cm92ZW1lbnRzIGFzIHdlbGwuCgpXZSBhbHNvIGhhdmUgc29tZSBpbnRlcmZhY2VzIGZvciBkcm0v YWxzYSBpbnRlcmFjdGlvbnMgYXJvdW5kIGhkbWkKYWxyZWFkeSBpbiBkcm0vZHJtX2F1ZGlvX2Nv bXBvbmVudC5oLCBidXQgaXQncyBub3QgdXNlZCBieSBhbnl0aGluZwpvdXRzaWRlIG9mIGk5MTUu IEltbyB3ZSBzaG91bGQgZXh0ZW5kIHRoYXQsIG5vdCByZWludmVudCBhIG5ldyB3aGVlbC4KCkFu b3RoZXIgbm90ZTogbm90aWZpZXJzIGNvbnNpZGVyZWQgZXZpbCwgaW1vLiBHZXRzIHRoZSBqb2Ig ZG9uZSBmb3Igb25lCmNhc2UsIGFzIHNvb24gYXMgeW91IGhhdmUgbXVsdGlwbGUgZGV2aWNlcyBh bmQgbmVlZCB0byBtYWtlIHN1cmUgeW91IGdldAp0aGUgdXBkYXRlIGZvciB0aGUgcmlnaHQgb25l IGl0IGFsbCBjb21lcyBjcmFzaGluZyBkb3duLiBQbGVhc2UgY3JlYXRlIGFuCmFwaSB3aGljaCBy ZWdpc3RlcnMgZm9yIHVwZGF0ZXMgZnJvbSBhIHNwZWNpZmljIGRldmljZSBvbmx5LCBwbHVzCnNv bWV0aGluZyB0aGF0IGhhcyByZWFsIGNhbGxiYWNrcyAobGlrZSB0aGUgZHJtX2F1ZGlvX2NvbXBv bmVudC5oIHRoaW5nIHdlCnN0YXJ0ZWQgYWxyZWFkeSkuCi1EYW5pZWwKCj4gCj4gUmVnYXJkcywK PiAKPiAJSGFucwo+IAo+ID4gCj4gPiBNb2RpZmllZCBieSBDaGVuZy1ZaSBDaGlhbmc6Cj4gPiAg LSBBZGQgYSBzZWN0aW9uIGluIE1BSU5UQUlORVIuCj4gPiAgLSBDaGFuZ2VzIGNvbm5lY3RlZCBh bmQgaGFzX2VsZCB0byBiaXRmaWVsZCBvZiB1bnNpZ25lZCBpbnQuCj4gPiAgLSBPdGhlciBtaW5v ciBmaXhlcyB0byBwYXNzIGNoZWNrcGF0Y2gucGwgLS1zdHJpY3QgY2hlY2tzLgo+ID4gCj4gPiBT aWduZWQtb2ZmLWJ5OiBIYW5zIFZlcmt1aWwgPGhhbnMudmVya3VpbEBjaXNjby5jb20+Cj4gPiBB Y2tlZC1ieTogUGhpbGlwcCBaYWJlbCA8cC56YWJlbEBwZW5ndXRyb25peC5kZT4KPiA+IFNpZ25l ZC1vZmYtYnk6IENoZW5nLVlpIENoaWFuZyA8Y3ljaGlhbmdAY2hyb21pdW0ub3JnPgo+ID4gLS0t Cj4gPiBUaGUgb3JpZ2luYWwgcGF0Y2ggaXMgYXQKPiA+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3Jn L2xpbnV4LWFybS1rZXJuZWwvMjAxNjEyMTMxNTA4MTMuMzc5NjYtMi1odmVya3VpbEB4czRhbGwu bmwKPiA+IAo+ID4gIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgIHwgICA2ICsrCj4gPiAg ZHJpdmVycy92aWRlby9LY29uZmlnICAgICAgICAgfCAgIDMgKwo+ID4gIGRyaXZlcnMvdmlkZW8v TWFrZWZpbGUgICAgICAgIHwgICAxICsKPiA+ICBkcml2ZXJzL3ZpZGVvL2hkbWktbm90aWZpZXIu YyB8IDE0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgaW5jbHVkZS9s aW51eC9oZG1pLW5vdGlmaWVyLmggfCAxMTIgKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ ICA1IGZpbGVzIGNoYW5nZWQsIDI2NyBpbnNlcnRpb25zKCspCj4gPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvdmlkZW8vaGRtaS1ub3RpZmllci5jCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGluY2x1ZGUvbGludXgvaGRtaS1ub3RpZmllci5oCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9NQUlO VEFJTkVSUyBiL01BSU5UQUlORVJTCj4gPiBpbmRleCA1Y2ZiZWE0Y2U1NzUuLmZmYjczNzZmOTUw OSAxMDA2NDQKPiA+IC0tLSBhL01BSU5UQUlORVJTCj4gPiArKysgYi9NQUlOVEFJTkVSUwo+ID4g QEAgLTE2Njc2LDYgKzE2Njc2LDEyIEBAIFc6CWh0dHBzOi8vbGludXh0di5vcmcKPiA+ICBTOglN YWludGFpbmVkCj4gPiAgRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92aWNvZGVjLyoKPiA+ICAK PiA+ICtWSURFTyBGUkFNRVdPUksKPiA+ICtNOglIYW5zIFZlcmt1aWwgPGh2ZXJrdWlsQHhzNGFs bC5ubD4KPiA+ICtMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKPiA+ICtGOglkcml2ZXJz L3ZpZGVvL2hkbWktbm90aWZpZXIuKgo+ID4gK1M6CU1haW50YWluZWQKPiA+ICsKPiA+ICBWSURF TyBNVUxUSVBMRVhFUiBEUklWRVIKPiA+ICBNOglQaGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1 dHJvbml4LmRlPgo+ID4gIEw6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdmlkZW8vS2NvbmZpZyBiL2RyaXZlcnMvdmlkZW8vS2NvbmZpZwo+ID4g aW5kZXggODNkM2QyNzFjYTE1Li4wMDBiYTliYzBhZTcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L3ZpZGVvL0tjb25maWcKPiA+ICsrKyBiL2RyaXZlcnMvdmlkZW8vS2NvbmZpZwo+ID4gQEAgLTM0 LDYgKzM0LDkgQEAgY29uZmlnIFZJREVPTU9ERV9IRUxQRVJTCj4gPiAgY29uZmlnIEhETUkKPiA+ ICAJYm9vbAo+ID4gIAo+ID4gK2NvbmZpZyBIRE1JX05PVElGSUVSUwo+ID4gKwlib29sCj4gPiAr Cj4gPiAgZW5kaWYgIyBIQVNfSU9NRU0KPiA+ICAKPiA+ICBpZiBWVAo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdmlkZW8vTWFrZWZpbGUgYi9kcml2ZXJzL3ZpZGVvL01ha2VmaWxlCj4gPiBpbmRl eCBkZjc2NTBhZGVkZTkuLmVmZjQ3MzYxMDJjYSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvdmlk ZW8vTWFrZWZpbGUKPiA+ICsrKyBiL2RyaXZlcnMvdmlkZW8vTWFrZWZpbGUKPiA+IEBAIC0xLDYg KzEsNyBAQAo+ID4gICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiA+ICBvYmot JChDT05GSUdfVkdBU1RBVEUpICAgICAgICAgICAgKz0gdmdhc3RhdGUubwo+ID4gIG9iai0kKENP TkZJR19IRE1JKSAgICAgICAgICAgICAgICArPSBoZG1pLm8KPiA+ICtvYmotJChDT05GSUdfSERN SV9OT1RJRklFUlMpICAgICAgKz0gaGRtaS1ub3RpZmllci5vCj4gPiAgCj4gPiAgb2JqLSQoQ09O RklHX1ZUKQkJICArPSBjb25zb2xlLwo+ID4gIG9iai0kKENPTkZJR19GQl9TVEkpCQkgICs9IGNv bnNvbGUvCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9oZG1pLW5vdGlmaWVyLmMgYi9k cml2ZXJzL3ZpZGVvL2hkbWktbm90aWZpZXIuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ IGluZGV4IDAwMDAwMDAwMDAwMC4uZDFlZWRmNjYxNjQ4Cj4gPiAtLS0gL2Rldi9udWxsCj4gPiAr KysgYi9kcml2ZXJzL3ZpZGVvL2hkbWktbm90aWZpZXIuYwo+ID4gQEAgLTAsMCArMSwxNDUgQEAK PiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ID4gKy8qIGhkbWktbm90 aWZpZXIuYyAtIG5vdGlmeSBpbnRlcmVzdGVkIHBhcnRpZXMgb2YgKGRpcyljb25uZWN0IGFuZCBF RElECj4gPiArICogZXZlbnRzCj4gPiArICoKPiA+ICsgKiBDb3B5cmlnaHQgMjAxNiBSdXNzZWxs IEtpbmcgPHJtaytrZXJuZWxAYXJtLmxpbnV4Lm9yZy51az4KPiA+ICsgKiBDb3B5cmlnaHQgMjAx NiBDaXNjbyBTeXN0ZW1zLCBJbmMuIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4KPiA+ICsgKiBBbGwg cmlnaHRzIHJlc2VydmVkLgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpbmNsdWRlIDxsaW51eC9leHBv cnQuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvaGRtaS1ub3RpZmllci5oPgo+ID4gKyNpbmNsdWRl IDxsaW51eC9zdHJpbmcuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ID4gKyNpbmNs dWRlIDxsaW51eC9saXN0Lmg+Cj4gPiArCj4gPiArc3RhdGljIExJU1RfSEVBRChoZG1pX25vdGlm aWVycyk7Cj4gPiArc3RhdGljIERFRklORV9NVVRFWChoZG1pX25vdGlmaWVyc19sb2NrKTsKPiA+ ICsKPiA+ICtzdHJ1Y3QgaGRtaV9ub3RpZmllciAqaGRtaV9ub3RpZmllcl9nZXQoc3RydWN0IGRl dmljZSAqZGV2KQo+ID4gK3sKPiA+ICsJc3RydWN0IGhkbWlfbm90aWZpZXIgKm47Cj4gPiArCj4g PiArCW11dGV4X2xvY2soJmhkbWlfbm90aWZpZXJzX2xvY2spOwo+ID4gKwlsaXN0X2Zvcl9lYWNo X2VudHJ5KG4sICZoZG1pX25vdGlmaWVycywgaGVhZCkgewo+ID4gKwkJaWYgKG4tPmRldiA9PSBk ZXYpIHsKPiA+ICsJCQltdXRleF91bmxvY2soJmhkbWlfbm90aWZpZXJzX2xvY2spOwo+ID4gKwkJ CWtyZWZfZ2V0KCZuLT5rcmVmKTsKPiA+ICsJCQlyZXR1cm4gbjsKPiA+ICsJCX0KPiA+ICsJfQo+ ID4gKwluID0ga3phbGxvYyhzaXplb2YoKm4pLCBHRlBfS0VSTkVMKTsKPiA+ICsJaWYgKCFuKQo+ ID4gKwkJZ290byB1bmxvY2s7Cj4gPiArCW4tPmRldiA9IGRldjsKPiA+ICsJbXV0ZXhfaW5pdCgm bi0+bG9jayk7Cj4gPiArCUJMT0NLSU5HX0lOSVRfTk9USUZJRVJfSEVBRCgmbi0+bm90aWZpZXJz KTsKPiA+ICsJa3JlZl9pbml0KCZuLT5rcmVmKTsKPiA+ICsJbGlzdF9hZGRfdGFpbCgmbi0+aGVh ZCwgJmhkbWlfbm90aWZpZXJzKTsKPiA+ICt1bmxvY2s6Cj4gPiArCW11dGV4X3VubG9jaygmaGRt aV9ub3RpZmllcnNfbG9jayk7Cj4gPiArCXJldHVybiBuOwo+ID4gK30KPiA+ICtFWFBPUlRfU1lN Qk9MX0dQTChoZG1pX25vdGlmaWVyX2dldCk7Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgaGRtaV9u b3RpZmllcl9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKQo+ID4gK3sKPiA+ICsJc3RydWN0IGhk bWlfbm90aWZpZXIgKm4gPQo+ID4gKwkJY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCBoZG1pX25v dGlmaWVyLCBrcmVmKTsKPiA+ICsKPiA+ICsJbXV0ZXhfbG9jaygmaGRtaV9ub3RpZmllcnNfbG9j ayk7Cj4gPiArCWxpc3RfZGVsKCZuLT5oZWFkKTsKPiA+ICsJbXV0ZXhfdW5sb2NrKCZoZG1pX25v dGlmaWVyc19sb2NrKTsKPiA+ICsJa2ZyZWUobi0+ZWRpZCk7Cj4gPiArCWtmcmVlKG4pOwo+ID4g K30KPiA+ICsKPiA+ICt2b2lkIGhkbWlfbm90aWZpZXJfcHV0KHN0cnVjdCBoZG1pX25vdGlmaWVy ICpuKQo+ID4gK3sKPiA+ICsJa3JlZl9wdXQoJm4tPmtyZWYsIGhkbWlfbm90aWZpZXJfcmVsZWFz ZSk7Cj4gPiArfQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKGhkbWlfbm90aWZpZXJfcHV0KTsKPiA+ ICsKPiA+ICtpbnQgaGRtaV9ub3RpZmllcl9yZWdpc3RlcihzdHJ1Y3QgaGRtaV9ub3RpZmllciAq biwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKPiA+ICt7Cj4gPiArCWludCByZXQgPSBibG9j a2luZ19ub3RpZmllcl9jaGFpbl9yZWdpc3Rlcigmbi0+bm90aWZpZXJzLCBuYik7Cj4gPiArCj4g PiArCWlmIChyZXQpCj4gPiArCQlyZXR1cm4gcmV0Owo+ID4gKwlrcmVmX2dldCgmbi0+a3JlZik7 Cj4gPiArCW11dGV4X2xvY2soJm4tPmxvY2spOwo+ID4gKwlpZiAobi0+Y29ubmVjdGVkKSB7Cj4g PiArCQlibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKCZuLT5ub3RpZmllcnMsIEhETUlfQ09O TkVDVEVELCBuKTsKPiA+ICsJCWlmIChuLT5lZGlkX3NpemUpCj4gPiArCQkJYmxvY2tpbmdfbm90 aWZpZXJfY2FsbF9jaGFpbigmbi0+bm90aWZpZXJzLAo+ID4gKwkJCQkJCSAgICAgSERNSV9ORVdf RURJRCwgbik7Cj4gPiArCQlpZiAobi0+aGFzX2VsZCkKPiA+ICsJCQlibG9ja2luZ19ub3RpZmll cl9jYWxsX2NoYWluKCZuLT5ub3RpZmllcnMsCj4gPiArCQkJCQkJICAgICBIRE1JX05FV19FTEQs IG4pOwo+ID4gKwl9Cj4gPiArCW11dGV4X3VubG9jaygmbi0+bG9jayk7Cj4gPiArCXJldHVybiAw Owo+ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChoZG1pX25vdGlmaWVyX3JlZ2lzdGVyKTsK PiA+ICsKPiA+ICtpbnQgaGRtaV9ub3RpZmllcl91bnJlZ2lzdGVyKHN0cnVjdCBoZG1pX25vdGlm aWVyICpuLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKQo+ID4gK3sKPiA+ICsJaW50IHJldCA9 IGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoJm4tPm5vdGlmaWVycywgbmIpOwo+ ID4gKwo+ID4gKwlpZiAocmV0ID09IDApCj4gPiArCQloZG1pX25vdGlmaWVyX3B1dChuKTsKPiA+ ICsJcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTF9HUEwoaGRtaV9ub3RpZmll cl91bnJlZ2lzdGVyKTsKPiA+ICsKPiA+ICt2b2lkIGhkbWlfZXZlbnRfY29ubmVjdChzdHJ1Y3Qg aGRtaV9ub3RpZmllciAqbikKPiA+ICt7Cj4gPiArCW11dGV4X2xvY2soJm4tPmxvY2spOwo+ID4g KwluLT5jb25uZWN0ZWQgPSB0cnVlOwo+ID4gKwlibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWlu KCZuLT5ub3RpZmllcnMsIEhETUlfQ09OTkVDVEVELCBuKTsKPiA+ICsJbXV0ZXhfdW5sb2NrKCZu LT5sb2NrKTsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTF9HUEwoaGRtaV9ldmVudF9jb25uZWN0 KTsKPiA+ICsKPiA+ICt2b2lkIGhkbWlfZXZlbnRfZGlzY29ubmVjdChzdHJ1Y3QgaGRtaV9ub3Rp ZmllciAqbikKPiA+ICt7Cj4gPiArCW11dGV4X2xvY2soJm4tPmxvY2spOwo+ID4gKwluLT5jb25u ZWN0ZWQgPSBmYWxzZTsKPiA+ICsJbi0+aGFzX2VsZCA9IGZhbHNlOwo+ID4gKwluLT5lZGlkX3Np emUgPSAwOwo+ID4gKwlibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKCZuLT5ub3RpZmllcnMs IEhETUlfRElTQ09OTkVDVEVELCBuKTsKPiA+ICsJbXV0ZXhfdW5sb2NrKCZuLT5sb2NrKTsKPiA+ ICt9Cj4gPiArRVhQT1JUX1NZTUJPTF9HUEwoaGRtaV9ldmVudF9kaXNjb25uZWN0KTsKPiA+ICsK PiA+ICtpbnQgaGRtaV9ldmVudF9uZXdfZWRpZChzdHJ1Y3QgaGRtaV9ub3RpZmllciAqbiwgY29u c3Qgdm9pZCAqZWRpZCwgc2l6ZV90IHNpemUpCj4gPiArewo+ID4gKwltdXRleF9sb2NrKCZuLT5s b2NrKTsKPiA+ICsJaWYgKG4tPmVkaWRfYWxsb2NhdGVkX3NpemUgPCBzaXplKSB7Cj4gPiArCQl2 b2lkICpwID0ga21hbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKPiA+ICsKPiA+ICsJCWlmICghcCkg ewo+ID4gKwkJCW11dGV4X3VubG9jaygmbi0+bG9jayk7Cj4gPiArCQkJcmV0dXJuIC1FTk9NRU07 Cj4gPiArCQl9Cj4gPiArCQlrZnJlZShuLT5lZGlkKTsKPiA+ICsJCW4tPmVkaWQgPSBwOwo+ID4g KwkJbi0+ZWRpZF9hbGxvY2F0ZWRfc2l6ZSA9IHNpemU7Cj4gPiArCX0KPiA+ICsJbWVtY3B5KG4t PmVkaWQsIGVkaWQsIHNpemUpOwo+ID4gKwluLT5lZGlkX3NpemUgPSBzaXplOwo+ID4gKwlibG9j a2luZ19ub3RpZmllcl9jYWxsX2NoYWluKCZuLT5ub3RpZmllcnMsIEhETUlfTkVXX0VESUQsIG4p Owo+ID4gKwltdXRleF91bmxvY2soJm4tPmxvY2spOwo+ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4g PiArRVhQT1JUX1NZTUJPTF9HUEwoaGRtaV9ldmVudF9uZXdfZWRpZCk7Cj4gPiArCj4gPiArdm9p ZCBoZG1pX2V2ZW50X25ld19lbGQoc3RydWN0IGhkbWlfbm90aWZpZXIgKm4sIGNvbnN0IHU4IGVs ZFsxMjhdKQo+ID4gK3sKPiA+ICsJbXV0ZXhfbG9jaygmbi0+bG9jayk7Cj4gPiArCW1lbWNweShu LT5lbGQsIGVsZCwgc2l6ZW9mKG4tPmVsZCkpOwo+ID4gKwluLT5oYXNfZWxkID0gdHJ1ZTsKPiA+ ICsJYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbigmbi0+bm90aWZpZXJzLCBIRE1JX05FV19F TEQsIG4pOwo+ID4gKwltdXRleF91bmxvY2soJm4tPmxvY2spOwo+ID4gK30KPiA+ICtFWFBPUlRf U1lNQk9MX0dQTChoZG1pX2V2ZW50X25ld19lbGQpOwo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv bGludXgvaGRtaS1ub3RpZmllci5oIGIvaW5jbHVkZS9saW51eC9oZG1pLW5vdGlmaWVyLmgKPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmM4ZjM1MTEwZTNl Mwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvaW5jbHVkZS9saW51eC9oZG1pLW5vdGlmaWVy LmgKPiA+IEBAIC0wLDAgKzEsMTEyIEBACj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAKPiA+ICsgKiBoZG1pLW5vdGlmaWVyLmggLSBub3RpZnkgaW50ZXJlc3RlZCBwYXJ0 aWVzIG9mIChkaXMpY29ubmVjdCBhbmQgRURJRAo+ID4gKyAqIGV2ZW50cwo+ID4gKyAqCj4gPiAr ICogQ29weXJpZ2h0IDIwMTYgUnVzc2VsbCBLaW5nIDxybWsra2VybmVsQGFybS5saW51eC5vcmcu dWs+Cj4gPiArICogQ29weXJpZ2h0IDIwMTYgQ2lzY28gU3lzdGVtcywgSW5jLiBhbmQvb3IgaXRz IGFmZmlsaWF0ZXMuCj4gPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiA+ICsgKi8KPiA+ICsK PiA+ICsjaWZuZGVmIExJTlVYX0hETUlfTk9USUZJRVJfSAo+ID4gKyNkZWZpbmUgTElOVVhfSERN SV9OT1RJRklFUl9ICj4gPiArCj4gPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gPiArI2lu Y2x1ZGUgPGxpbnV4L25vdGlmaWVyLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2tyZWYuaD4KPiA+ ICsKPiA+ICtlbnVtIHsKPiA+ICsJSERNSV9DT05ORUNURUQsCj4gPiArCUhETUlfRElTQ09OTkVD VEVELAo+ID4gKwlIRE1JX05FV19FRElELAo+ID4gKwlIRE1JX05FV19FTEQsCj4gPiArfTsKPiA+ ICsKPiA+ICtzdHJ1Y3QgZGV2aWNlOwo+ID4gKwo+ID4gK3N0cnVjdCBoZG1pX25vdGlmaWVyIHsK PiA+ICsJLyogTG9jayB0byBwcm90ZWN0IGNhbGxiYWNrIHJlZ2lzdHJhdGlvbiBhbmQgbm90aWZp Y2F0aW9uLiAqLwo+ID4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsKPiA+ICsJc3RydWN0IGxpc3RfaGVh ZCBoZWFkOwo+ID4gKwlzdHJ1Y3Qga3JlZiBrcmVmOwo+ID4gKwlzdHJ1Y3QgYmxvY2tpbmdfbm90 aWZpZXJfaGVhZCBub3RpZmllcnM7Cj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiA+ICsKPiA+ ICsJLyogQ3VycmVudCBzdGF0ZSAqLwo+ID4gKwl1bnNpZ25lZCBpbnQgY29ubmVjdGVkIDogMTsK PiA+ICsJdW5zaWduZWQgaW50IGhhc19lbGQgOiAxOwo+ID4gKwl1bnNpZ25lZCBjaGFyIGVsZFsx MjhdOwo+ID4gKwl2b2lkICplZGlkOwo+ID4gKwlzaXplX3QgZWRpZF9zaXplOwo+ID4gKwlzaXpl X3QgZWRpZF9hbGxvY2F0ZWRfc2l6ZTsKPiA+ICt9Owo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGhk bWlfbm90aWZpZXJfZ2V0IC0gZmluZCBvciBjcmVhdGUgYSBuZXcgaGRtaV9ub3RpZmllciBmb3Ig dGhlIGdpdmVuIGRldmljZS4KPiA+ICsgKiBAZGV2OiBkZXZpY2UgdGhhdCBzZW5kcyB0aGUgZXZl bnRzLgo+ID4gKyAqCj4gPiArICogSWYgYSBub3RpZmllciBmb3IgZGV2aWNlIEBkZXYgYWxyZWFk eSBleGlzdHMsIHRoZW4gaW5jcmVhc2UgdGhlIHJlZmNvdW50Cj4gPiArICogYW5kIHJldHVybiB0 aGF0IG5vdGlmaWVyLgo+ID4gKyAqCj4gPiArICogSWYgaXQgZG9lc24ndCBleGlzdCwgdGhlbiBh bGxvY2F0ZSBhIG5ldyBub3RpZmllciBzdHJ1Y3QgYW5kIHJldHVybiBhCj4gPiArICogcG9pbnRl ciB0byB0aGF0IG5ldyBzdHJ1Y3QuCj4gPiArICoKPiA+ICsgKiBSZXR1cm4gTlVMTCBpZiB0aGUg bWVtb3J5IGNvdWxkIG5vdCBiZSBhbGxvY2F0ZWQuCj4gPiArICovCj4gPiArc3RydWN0IGhkbWlf bm90aWZpZXIgKmhkbWlfbm90aWZpZXJfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gPiArCj4g PiArLyoqCj4gPiArICogaGRtaV9ub3RpZmllcl9wdXQgLSBkZWNyZWFzZSByZWZjb3VudCBhbmQg ZGVsZXRlIHdoZW4gdGhlIHJlZmNvdW50IHJlYWNoZXMgMC4KPiA+ICsgKiBAbjogbm90aWZpZXIK PiA+ICsgKi8KPiA+ICt2b2lkIGhkbWlfbm90aWZpZXJfcHV0KHN0cnVjdCBoZG1pX25vdGlmaWVy ICpuKTsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBoZG1pX25vdGlmaWVyX3JlZ2lzdGVyIC0gcmVn aXN0ZXIgdGhlIG5vdGlmaWVyIHdpdGggdGhlIG5vdGlmaWVyX2Jsb2NrLgo+ID4gKyAqIEBuOiB0 aGUgSERNSSBub3RpZmllcgo+ID4gKyAqIEBuYjogdGhlIG5vdGlmaWVyX2Jsb2NrCj4gPiArICov Cj4gPiAraW50IGhkbWlfbm90aWZpZXJfcmVnaXN0ZXIoc3RydWN0IGhkbWlfbm90aWZpZXIgKm4s IHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGhkbWlf bm90aWZpZXJfdW5yZWdpc3RlciAtIHVucmVnaXN0ZXIgdGhlIG5vdGlmaWVyIHdpdGggdGhlIG5v dGlmaWVyX2Jsb2NrLgo+ID4gKyAqIEBuOiB0aGUgSERNSSBub3RpZmllcgo+ID4gKyAqIEBuYjog dGhlIG5vdGlmaWVyX2Jsb2NrCj4gPiArICovCj4gPiAraW50IGhkbWlfbm90aWZpZXJfdW5yZWdp c3RlcihzdHJ1Y3QgaGRtaV9ub3RpZmllciAqbiwKPiA+ICsJCQkgICAgIHN0cnVjdCBub3RpZmll cl9ibG9jayAqbmIpOwo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGhkbWlfZXZlbnRfY29ubmVjdCAt IHNlbmQgYSBjb25uZWN0IGV2ZW50Lgo+ID4gKyAqIEBuOiB0aGUgSERNSSBub3RpZmllcgo+ID4g KyAqCj4gPiArICogU2VuZCBhbiBIRE1JX0NPTk5FQ1RFRCBldmVudCB0byBhbnkgcmVnaXN0ZXJl ZCBwYXJ0aWVzLgo+ID4gKyAqLwo+ID4gK3ZvaWQgaGRtaV9ldmVudF9jb25uZWN0KHN0cnVjdCBo ZG1pX25vdGlmaWVyICpuKTsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBoZG1pX2V2ZW50X2Rpc2Nv bm5lY3QgLSBzZW5kIGEgZGlzY29ubmVjdCBldmVudC4KPiA+ICsgKiBAbjogdGhlIEhETUkgbm90 aWZpZXIKPiA+ICsgKgo+ID4gKyAqIFNlbmQgYW4gSERNSV9ESVNDT05ORUNURUQgZXZlbnQgdG8g YW55IHJlZ2lzdGVyZWQgcGFydGllcy4KPiA+ICsgKi8KPiA+ICt2b2lkIGhkbWlfZXZlbnRfZGlz Y29ubmVjdChzdHJ1Y3QgaGRtaV9ub3RpZmllciAqbik7Cj4gPiArCj4gPiArLyoqCj4gPiArICog aGRtaV9ldmVudF9uZXdfZWRpZCAtIHNlbmQgYSBuZXcgRURJRCBldmVudC4KPiA+ICsgKiBAbjog dGhlIEhETUkgbm90aWZpZXIKPiA+ICsgKgo+ID4gKyAqIFNlbmQgYW4gSERNSV9ORVdfRURJRCBl dmVudCB0byBhbnkgcmVnaXN0ZXJlZCBwYXJ0aWVzLgo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gd2ls bCBtYWtlIGEgY29weSB0aGUgRURJRCBzbyBpdCBjYW4gcmV0dXJuIC1FTk9NRU0gaWYKPiA+ICsg KiBubyBtZW1vcnkgY291bGQgYmUgYWxsb2NhdGVkLgo+ID4gKyAqLwo+ID4gK2ludCBoZG1pX2V2 ZW50X25ld19lZGlkKHN0cnVjdCBoZG1pX25vdGlmaWVyICpuLCBjb25zdCB2b2lkICplZGlkLCBz aXplX3Qgc2l6ZSk7Cj4gPiArCj4gPiArLyoqCj4gPiArICogaGRtaV9ldmVudF9uZXdfZWxkIC0g c2VuZCBhIG5ldyBFTEQgZXZlbnQuCj4gPiArICogQG46IHRoZSBIRE1JIG5vdGlmaWVyCj4gPiAr ICoKPiA+ICsgKiBTZW5kIGFuIEhETUlfTkVXX0VMRCBldmVudCB0byBhbnkgcmVnaXN0ZXJlZCBw YXJ0aWVzLgo+ID4gKyAqLwo+ID4gK3ZvaWQgaGRtaV9ldmVudF9uZXdfZWxkKHN0cnVjdCBoZG1p X25vdGlmaWVyICpuLCBjb25zdCB1OCBlbGRbMTI4XSk7Cj4gPiArCj4gPiArI2VuZGlmCj4gPiAK PiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlv bgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWw=