From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH RFC v4 14/16] drm, cgroup: Introduce lgpu as DRM cgroup resource Date: Wed, 9 Oct 2019 17:34:29 +0200 Message-ID: <20191009153429.GI16989@phenom.ffwll.local> References: <20190829060533.32315-1-Kenny.Ho@amd.com> <20190829060533.32315-15-Kenny.Ho@amd.com> <20191009103153.GU16989@phenom.ffwll.local> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" Content-Type: text/plain; charset="iso-8859-1" To: "Kuehling, Felix" Cc: "Greathouse, Joseph" , "Ho, Kenny" , "jsparks-WVYJKLFxKCc@public.gmane.org" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "lkaplan-WVYJKLFxKCc@public.gmane.org" , "Deucher, Alexander" , "y2kenny-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , Daniel Vetter , "tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org" , "cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "Koenig, Christian" T24gV2VkLCBPY3QgMDksIDIwMTkgYXQgMDM6MjU6MjJQTSArMDAwMCwgS3VlaGxpbmcsIEZlbGl4 IHdyb3RlOgo+IE9uIDIwMTktMTAtMDkgNjozMSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+IE9u IFR1ZSwgT2N0IDA4LCAyMDE5IGF0IDA2OjUzOjE4UE0gKzAwMDAsIEt1ZWhsaW5nLCBGZWxpeCB3 cm90ZToKPiA+Pgo+ID4+IFRoZSBkZXNjcmlwdGlvbiBzb3VuZHMgcmVhc29uYWJsZSB0byBtZSBh bmQgbWFwcyB3ZWxsIHRvIHRoZSBDVSBtYXNraW5nCj4gPj4gZmVhdHVyZSBpbiBvdXIgR1BVcy4K PiA+Pgo+ID4+IEl0IHdvdWxkIGFsc28gYWxsb3cgdXMgdG8gZG8gbW9yZSBjb2Fyc2UtZ3JhaW5l ZCBtYXNraW5nIGZvciBleGFtcGxlIHRvCj4gPj4gZ3VhcmFudGVlIGJhbGFuY2VkIGFsbG9jYXRp b24gb2YgQ1VzIGFjcm9zcyBzaGFkZXIgZW5naW5lcyBvcgo+ID4+IHBhcnRpdGlvbmluZyBvZiBt ZW1vcnkgYmFuZHdpZHRoIG9yIENQIHBpcGVzIChpZiB0aGF0IGlzIHN1cHBvcnRlZCBieQo+ID4+ IHRoZSBoYXJkd2FyZS9maXJtd2FyZSkuCj4gPiBIbSwgc28gdGhpcyBzb3VuZHMgbGlrZSB0aGUg ZGVmaW5pdGlvbiBmb3IgaG93IHRoaXMgY2dyb3VwIGlzIHN1cHBvc2VkIHRvCj4gPiB3b3JrIGlz ICJhbWQgQ1UgbWFza2luZyIgKHdoYXRldmVyIHRoYXQgZXhhY3RseSBpcykuIEFuZCB0aGUgYWJz dHJhY3QKPiA+IGRlc2NyaXB0aW9uIGlzIGp1c3QgcHJldHRpZmljYXRpb24gb24gdG9wLCBidXQg bm90IGFjdHVhbGx5IHRoZSByZWFsCj4gPiBkZWZpbml0aW9uIHlvdSBndXlzIHdhbnQuCj4gCj4g SSB0aGluayB5b3UncmUgcmVhZGluZyB0aGlzIGFzIHRoZSBvcHBvc2l0ZSBvZiB3aGF0IEkgd2Fz IHRyeWluZyB0byBzYXkuIAo+IFVzaW5nIENVIG1hc2tpbmcgaXMgb25lIHBvc3NpYmxlIGltcGxl bWVudGF0aW9uIG9mIExHUFVzIG9uIEFNRCAKPiBoYXJkd2FyZS4gSXQncyB0aGUgb25lIHRoYXQg S2VubnkgaW1wbGVtZW50ZWQgYXQgdGhlIGVuZCBvZiB0aGlzIHBhdGNoIAo+IHNlcmllcywgYW5k IEkgcG9pbnRlZCBvdXQgc29tZSBwcm9ibGVtcyB3aXRoIHRoYXQgYXBwcm9hY2guIE90aGVyIHdh eXMgCj4gdG8gcGFydGl0aW9uIHRoZSBoYXJkd2FyZSBpbnRvIExHUFVzIGFyZSBjb25jZWl2YWJs ZS4gRm9yIGV4YW1wbGUgd2UncmUgCj4gY29uc2lkZXJpbmcgc3BsaXR0aW5nIGl0IGFsb25nIHRo ZSBsaW5lcyBvZiBzaGFkZXIgZW5naW5lcywgd2hpY2ggaXMgCj4gbW9yZSBjb2Fyc2UtZ3JhaW4g YW5kIHdvdWxkIGFsc28gYWZmZWN0IG1lbW9yeSBiYW5kd2lkdGggYXZhaWxhYmxlIHRvIAo+IGVh Y2ggcGFydGl0aW9uLgoKSWYgdGhpcyBpcyBzdXBwb3NlZCB0byBiZSB1c2VmdWwgZm9yIGFkbWlu cyB0aGVuICJvdGhlciB3YXlzIHRvIHBhcnRpdGlvbgp0aGUgaHcgYXJlIGNvbmNlaXZhYmxlIiBp cyB0aGUgcHJvYmxlbS4gVGhpcyBzaG91bGQgYmUgdW5pcXVlJmNsZWFyIGZvcgphZG1pbnMvZW5k LXVzZXJzLiBSZWFkaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCByZWFsaXppbmcg dGhhdAp0aGUgYWN0dWFsIG1lYW5pbmcgaXMgImFtZCBDVSBtYXNraW5nIiBpc24ndCBnb29kIGVu b3VnaCBieSBmYXIsIHNpbmNlCnRoYXQncyBtZWFuaW5nbGVzcyBvbiBhbnkgb3RoZXIgaHcuCgpB bmQgaWYgdGhlcmUncyBvdGhlciB3YXlzIHRvIGltcGxlbWVudCB0aGlzIGNncm91cCBmb3IgYW1k LCBpdCdzIGFsc28KbWVhbmluZ2xlc3MgKHRvIHN5c2FkbWlucy91c2VycykgZm9yIGFtZCBody4K Cj4gV2UgY291bGQgYWxzbyBjb25zaWRlciBwYXJ0aXRpb25pbmcgcGlwZXMgaW4gb3VyIGNvbW1h bmQgcHJvY2Vzc29yLCAKPiBhbHRob3VnaCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgb3VyIGN1 cnJlbnQgQ1Agc2NoZWR1bGVyIGZpcm13YXJlLgo+IAo+IFRoZSBib3R0b20gbGluZSBpcywgdGhl IExHUFUgbW9kZWwgcHJvcG9zZWQgYnkgS2VubnkgaXMgcXVpdGUgYWJzdHJhY3QgCj4gYW5kIGFs bG93cyBkcml2ZXJzIGltcGxlbWVudGluZyBpdCBhIGxvdCBvZiBmbGV4aWJpbGl0eSBkZXBlbmRp bmcgb24gdGhlIAo+IGNhcGFiaWxpdHkgb2YgdGhlaXIgaGFyZHdhcmUgYW5kIGZpcm13YXJlLiBX ZSBoYXZlbid0IHNldHRsZWQgb24gYSBmaW5hbCAKPiBpbXBsZW1lbnRhdGlvbiBjaG9pY2UgZXZl biBmb3IgQU1ELgoKVGhhdCBhYnN0cmFjdCBtb2RlbCBvZiBlc3NlbnRpYWxseSAiYW55dGhpbmcg Z29lcyIgaXMgdGhlIHByb2JsZW0gaGVyZQppbW8uIEUuZy4gZm9yIGNwdSBjZ3JvdXBzIHRoaXMg d291bGQgYmUgc2ltaWxhciB0byBhbGxvd2luZyB0aGUgYml0bWFrcyB0bwptZWFuICJjcHUgY29y ZSIgb24gb25lIG1hY2hpbmUgInBoeXNpY2FsIGRpZSIgb24gdGhlIG5leHQgYW5kIG1heWJlCiJo eXBlcnRocmVhZCB1bml0IiBvbiB0aGUgM3JkLiBVc2VsZXNzIGZvciBhZG1pbnMuCgpTbyBpZiB3 ZSBoYXZlIGEgZ3B1IGJpdG1ha3MgdGhpbmcgdGhhdCBtaWdodCBtZWFuIGEgY29tbWFuZCBzdWJt aXNzaW8gcGlwZQpvbiBvbmUgaHcgKG1heWJlIG1hdGNoaW5nIHdoYXQgdmsgZXhwb3NlZCwgbWF5 YmUgbm90KSwgc29tZSBjb21wdXRlIHVuaXQKbWFzayBvbiB0aGUgbmV4dCBhbmQgc29tZXRoaW5n IGVudGlyZWx5IGRpZmZlcmVudCAoZS5nLiBpbnRlbCBoYXMgc28KY2FsbGVkIEdUIHNsaWNlcyB3 aXRoIGNvbXB1dGUgY29yZXMgKyBtb3JlIHN0dWZmIGFyb3VuZCkgb24gdGhlIDNyZCB2ZW5kb3IK dGhlbiB0aGF0J3Mgbm90IHVzZWZ1bCBmb3IgYWRtaW5zLgotRGFuaWVsCgo+IAo+IFJlZ2FyZHMs Cj4gIMKgIEZlbGl4Cj4gCj4gCj4gPgo+ID4gSSB0aGluayBhZGRpbmcgYSBjZ3JvdXAgd2hpY2gg aXMgdGhhdCBtdWNoIGRlcGVuZGluZyB1cG9uIHRoZSBodwo+ID4gaW1wbGVtZW50YXRpb24gb2Yg dGhlIGZpcnN0IGRyaXZlciBzdXBwb3J0aW5nIGl0IGlzIG5vdCBhIGdvb2QgaWRlYS4KPiA+IC1E YW5pZWwKPiA+Cj4gPj4gSSBjYW4ndCBjb21tZW50IG9uIHRoZSBjb2RlIGFzIEknbSB1bmZhbWls aWFyIHdpdGggdGhlIGRldGFpbHMgb2YgdGhlCj4gPj4gY2dyb3VwIGNvZGUuCj4gPj4KPiA+PiBB Y2tlZC1ieTogRmVsaXggS3VlaGxpbmcgPEZlbGl4Lkt1ZWhsaW5nQGFtZC5jb20+Cj4gPj4KPiA+ Pgo+ID4+PiAtLS0KPiA+Pj4gICAgRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjIu cnN0IHwgIDQ2ICsrKysrKysrCj4gPj4+ICAgIGluY2x1ZGUvZHJtL2RybV9jZ3JvdXAuaCAgICAg ICAgICAgICAgICB8ICAgNCArCj4gPj4+ICAgIGluY2x1ZGUvbGludXgvY2dyb3VwX2RybS5oICAg ICAgICAgICAgICB8ICAgNiArKwo+ID4+PiAgICBrZXJuZWwvY2dyb3VwL2RybS5jICAgICAgICAg ICAgICAgICAgICAgfCAxMzUgKysrKysrKysrKysrKysrKysrKysrKysrCj4gPj4+ICAgIDQgZmls ZXMgY2hhbmdlZCwgMTkxIGluc2VydGlvbnMoKykKPiA+Pj4KPiA+Pj4gZGlmZiAtLWdpdCBhL0Rv Y3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdCBiL0RvY3VtZW50YXRpb24vYWRt aW4tZ3VpZGUvY2dyb3VwLXYyLnJzdAo+ID4+PiBpbmRleCA4N2ExOTUxMzNlYWEuLjU3ZjE4NDY5 YmQ3NiAxMDA2NDQKPiA+Pj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAt djIucnN0Cj4gPj4+ICsrKyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJz dAo+ID4+PiBAQCAtMTk1OCw2ICsxOTU4LDUyIEBAIERSTSBJbnRlcmZhY2UgRmlsZXMKPiA+Pj4g ICAgCVNldCBsYXJnZXN0IGFsbG9jYXRpb24gZm9yIC9kZXYvZHJpL2NhcmQxIHRvIDRNQgo+ID4+ PiAgICAJZWNobyAiMjI2OjEgNG0iID4gZHJtLmJ1ZmZlci5wZWFrLm1heAo+ID4+PiAgICAKPiA+ Pj4gKyAgZHJtLmxncHUKPiA+Pj4gKwlBIHJlYWQtd3JpdGUgbmVzdGVkLWtleWVkIGZpbGUgd2hp Y2ggZXhpc3RzIG9uIGFsbCBjZ3JvdXBzLgo+ID4+PiArCUVhY2ggZW50cnkgaXMga2V5ZWQgYnkg dGhlIERSTSBkZXZpY2UncyBtYWpvcjptaW5vci4KPiA+Pj4gKwo+ID4+PiArCWxncHUgc3RhbmRz IGZvciBsb2dpY2FsIEdQVSwgaXQgaXMgYW4gYWJzdHJhY3Rpb24gdXNlZCB0bwo+ID4+PiArCXN1 YmRpdmlkZSBhIHBoeXNpY2FsIERSTSBkZXZpY2UgZm9yIHRoZSBwdXJwb3NlIG9mIHJlc291cmNl Cj4gPj4+ICsJbWFuYWdlbWVudC4KPiA+Pj4gKwo+ID4+PiArCVRoZSBsZ3B1IGlzIGEgZGlzY3Jl dGUgcXVhbnRpdHkgdGhhdCBpcyBkZXZpY2Ugc3BlY2lmaWMgKGkuZS4KPiA+Pj4gKwlzb21lIERS TSBkZXZpY2VzIG1heSBoYXZlIDY0IGxncHVzIHdoaWxlIG90aGVycyBtYXkgaGF2ZSAxMDAKPiA+ Pj4gKwlsZ3B1cy4pICBUaGUgbGdwdSBpcyBhIHNpbmdsZSBxdWFudGl0eSB3aXRoIHR3byByZXBy ZXNlbnRhdGlvbnMKPiA+Pj4gKwlkZW5vdGVkIGJ5IHRoZSBmb2xsb3dpbmcgbmVzdGVkIGtleXMu Cj4gPj4+ICsKPiA+Pj4gKwkgID09PT09ICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Cj4gPj4+ICsJICBjb3VudCAgICAgUmVwcmVzZW50aW5nIGxncHUgYXMgYW5v bnltb3VzIHJlc291cmNlCj4gPj4+ICsJICBsaXN0ICAgICAgUmVwcmVzZW50aW5nIGxncHUgYXMg bmFtZWQgcmVzb3VyY2UKPiA+Pj4gKwkgID09PT09ICAgICA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Cj4gPj4+ICsKPiA+Pj4gKwlGb3IgZXhhbXBsZToKPiA+Pj4gKwky MjY6MCBjb3VudD0yNTYgbGlzdD0wLTI1NQo+ID4+PiArCTIyNjoxIGNvdW50PTQgbGlzdD0wLDIs NCw2Cj4gPj4+ICsJMjI2OjIgY291bnQ9MzIgbGlzdD0zMi02Mwo+ID4+PiArCj4gPj4+ICsJbGdw dSBpcyByZXByZXNlbnRlZCBieSBhIGJpdG1hcCBhbmQgdXNlcyB0aGUgYml0bWFwX3BhcnNlbGlz dAo+ID4+PiArCWtlcm5lbCBmdW5jdGlvbiBzbyB0aGUgbGlzdCBrZXkgaW5wdXQgZm9ybWF0IGlz IGEKPiA+Pj4gKwljb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBkZWNpbWFsIG51bWJlcnMgYW5kIHJh bmdlcy4KPiA+Pj4gKwo+ID4+PiArCUNvbnNlY3V0aXZlbHkgc2V0IGJpdHMgYXJlIHNob3duIGFz IHR3byBoeXBoZW4tc2VwYXJhdGVkIGRlY2ltYWwKPiA+Pj4gKwludW1iZXJzLCB0aGUgc21hbGxl c3QgYW5kIGxhcmdlc3QgYml0IG51bWJlcnMgc2V0IGluIHRoZSByYW5nZS4KPiA+Pj4gKwlPcHRp b25hbGx5IGVhY2ggcmFuZ2UgY2FuIGJlIHBvc3RmaXhlZCB0byBkZW5vdGUgdGhhdCBvbmx5IHBh cnRzCj4gPj4+ICsJb2YgaXQgc2hvdWxkIGJlIHNldC4gIFRoZSByYW5nZSB3aWxsIGRpdmlkZWQg dG8gZ3JvdXBzIG9mCj4gPj4+ICsJc3BlY2lmaWMgc2l6ZS4KPiA+Pj4gKwlTeW50YXg6IHJhbmdl OnVzZWRfc2l6ZS9ncm91cF9zaXplCj4gPj4+ICsJRXhhbXBsZTogMC0xMDIzOjIvMjU2ID09PiAw LDEsMjU2LDI1Nyw1MTIsNTEzLDc2OCw3NjkKPiA+Pj4gKwo+ID4+PiArCVRoZSBjb3VudCBrZXkg aXMgdGhlIGhhbW1pbmcgd2VpZ2h0IC8gaHdlaWdodCBvZiB0aGUgYml0bWFwLgo+ID4+PiArCj4g Pj4+ICsJQm90aCBjb3VudCBhbmQgbGlzdCBhY2NlcHQgdGhlIG1heCBhbmQgZGVmYXVsdCBrZXl3 b3Jkcy4KPiA+Pj4gKwo+ID4+PiArCVNvbWUgRFJNIGRldmljZXMgbWF5IG9ubHkgc3VwcG9ydCBs Z3B1IGFzIGFub255bW91cyByZXNvdXJjZXMuCj4gPj4+ICsJSW4gc3VjaCBjYXNlLCB0aGUgc2ln bmlmaWNhbmNlIG9mIHRoZSBwb3NpdGlvbiBvZiB0aGUgc2V0IGJpdHMKPiA+Pj4gKwlpbiBsaXN0 IHdpbGwgYmUgaWdub3JlZC4KPiA+Pj4gKwo+ID4+PiArCVRoaXMgbGdwdSByZXNvdXJjZSBzdXBw b3J0cyB0aGUgJ2FsbG9jYXRpb24nIHJlc291cmNlCj4gPj4+ICsJZGlzdHJpYnV0aW9uIG1vZGVs Lgo+ID4+PiArCj4gPj4+ICAgIEdFTSBCdWZmZXIgT3duZXJzaGlwCj4gPj4+ICAgIH5+fn5+fn5+ fn5+fn5+fn5+fn5+Cj4gPj4+ICAgIAo+ID4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJt X2Nncm91cC5oIGIvaW5jbHVkZS9kcm0vZHJtX2Nncm91cC5oCj4gPj4+IGluZGV4IDZkOTcwN2Ux ZWI3Mi4uYThkNmJlMGIwNzViIDEwMDY0NAo+ID4+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fY2dy b3VwLmgKPiA+Pj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Nncm91cC5oCj4gPj4+IEBAIC02LDYg KzYsNyBAQAo+ID4+PiAgICAKPiA+Pj4gICAgI2luY2x1ZGUgPGxpbnV4L2Nncm91cF9kcm0uaD4K PiA+Pj4gICAgI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgo+ID4+PiArI2luY2x1ZGUgPGxp bnV4L3R5cGVzLmg+Cj4gPj4+ICAgICNpbmNsdWRlIDxkcm0vdHRtL3R0bV9ib19hcGkuaD4KPiA+ Pj4gICAgI2luY2x1ZGUgPGRybS90dG0vdHRtX2JvX2RyaXZlci5oPgo+ID4+PiAgICAKPiA+Pj4g QEAgLTI4LDYgKzI5LDkgQEAgc3RydWN0IGRybWNnX3Byb3BzIHsKPiA+Pj4gICAgCXM2NAkJCW1l bV9oaWdoc19kZWZhdWx0W1RUTV9QTF9QUklWKzFdOwo+ID4+PiAgICAKPiA+Pj4gICAgCXN0cnVj dCB3b3JrX3N0cnVjdAkqbWVtX3JlY2xhaW1fd3FbVFRNX1BMX1BSSVZdOwo+ID4+PiArCj4gPj4+ ICsJaW50CQkJbGdwdV9jYXBhY2l0eTsKPiA+Pj4gKyAgICAgICAgREVDTEFSRV9CSVRNQVAobGdw dV9zbG90cywgTUFYX0RSTUNHX0xHUFVfQ0FQQUNJVFkpOwo+ID4+PiAgICB9Owo+ID4+PiAgICAK PiA+Pj4gICAgI2lmZGVmIENPTkZJR19DR1JPVVBfRFJNCj4gPj4+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L2Nncm91cF9kcm0uaCBiL2luY2x1ZGUvbGludXgvY2dyb3VwX2RybS5oCj4gPj4+ IGluZGV4IGM1NmNmZTc0ZDFhNi4uN2IxY2ZjNGNlNGMzIDEwMDY0NAo+ID4+PiAtLS0gYS9pbmNs dWRlL2xpbnV4L2Nncm91cF9kcm0uaAo+ID4+PiArKysgYi9pbmNsdWRlL2xpbnV4L2Nncm91cF9k cm0uaAo+ID4+PiBAQCAtMTQsNiArMTQsOCBAQAo+ID4+PiAgICAvKiBsaW1pdCBkZWZpbmVkIHBl ciB0aGUgd2F5IGRybV9taW5vcl9hbGxvYyBvcGVyYXRlcyAqLwo+ID4+PiAgICAjZGVmaW5lIE1B WF9EUk1fREVWICg2NCAqIERSTV9NSU5PUl9SRU5ERVIpCj4gPj4+ICAgIAo+ID4+PiArI2RlZmlu ZSBNQVhfRFJNQ0dfTEdQVV9DQVBBQ0lUWSAyNTYKPiA+Pj4gKwo+ID4+PiAgICBlbnVtIGRybWNn X21lbV9id19hdHRyIHsKPiA+Pj4gICAgCURSTUNHX01FTV9CV19BVFRSX0JZVEVfTU9WRUQsIC8q IGZvciBjYWx1bGF0aW5nICdpbnN0YW50YW5lb3VzJyBidyAqLwo+ID4+PiAgICAJRFJNQ0dfTUVN X0JXX0FUVFJfQUNDVU1fVVMsICAvKiBmb3IgY2FsdWxhdGluZyAnaW5zdGFudGFuZW91cycgYncg Ki8KPiA+Pj4gQEAgLTMyLDYgKzM0LDcgQEAgZW51bSBkcm1jZ19yZXNfdHlwZSB7Cj4gPj4+ICAg IAlEUk1DR19UWVBFX01FTV9QRUFLLAo+ID4+PiAgICAJRFJNQ0dfVFlQRV9CQU5EV0lEVEgsCj4g Pj4+ICAgIAlEUk1DR19UWVBFX0JBTkRXSURUSF9QRVJJT0RfQlVSU1QsCj4gPj4+ICsJRFJNQ0df VFlQRV9MR1BVLAo+ID4+PiAgICAJX19EUk1DR19UWVBFX0xBU1QsCj4gPj4+ICAgIH07Cj4gPj4+ ICAgIAo+ID4+PiBAQCAtNTgsNiArNjEsOSBAQCBzdHJ1Y3QgZHJtY2dfZGV2aWNlX3Jlc291cmNl IHsKPiA+Pj4gICAgCXM2NAkJCW1lbV9id19zdGF0c1tfX0RSTUNHX01FTV9CV19BVFRSX0xBU1Rd Owo+ID4+PiAgICAJczY0CQkJbWVtX2J3X2xpbWl0c19ieXRlc19pbl9wZXJpb2Q7Cj4gPj4+ICAg IAlzNjQJCQltZW1fYndfbGltaXRzX2F2Z19ieXRlc19wZXJfdXM7Cj4gPj4+ICsKPiA+Pj4gKwlz NjQJCQlsZ3B1X3VzZWQ7Cj4gPj4+ICsJREVDTEFSRV9CSVRNQVAobGdwdV9hbGxvY2F0ZWQsIE1B WF9EUk1DR19MR1BVX0NBUEFDSVRZKTsKPiA+Pj4gICAgfTsKPiA+Pj4gICAgCj4gPj4+ICAgIC8q Kgo+ID4+PiBkaWZmIC0tZ2l0IGEva2VybmVsL2Nncm91cC9kcm0uYyBiL2tlcm5lbC9jZ3JvdXAv ZHJtLmMKPiA+Pj4gaW5kZXggMGVhN2YwNjE5ZTI1Li4xOGM0MzY4ZTJjMjkgMTAwNjQ0Cj4gPj4+ IC0tLSBhL2tlcm5lbC9jZ3JvdXAvZHJtLmMKPiA+Pj4gKysrIGIva2VybmVsL2Nncm91cC9kcm0u Ywo+ID4+PiBAQCAtOSw2ICs5LDcgQEAKPiA+Pj4gICAgI2luY2x1ZGUgPGxpbnV4L2Nncm91cF9k cm0uaD4KPiA+Pj4gICAgI2luY2x1ZGUgPGxpbnV4L2t0aW1lLmg+Cj4gPj4+ICAgICNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4KPiA+Pj4gKyNpbmNsdWRlIDxsaW51eC9iaXRtYXAuaD4KPiA+Pj4g ICAgI2luY2x1ZGUgPGRybS9kcm1fZmlsZS5oPgo+ID4+PiAgICAjaW5jbHVkZSA8ZHJtL2RybV9k cnYuaD4KPiA+Pj4gICAgI2luY2x1ZGUgPGRybS90dG0vdHRtX2JvX2FwaS5oPgo+ID4+PiBAQCAt NTIsNiArNTMsOSBAQCBzdGF0aWMgY2hhciBjb25zdCAqbWVtX2J3X2F0dHJfbmFtZXNbXSA9IHsK PiA+Pj4gICAgI2RlZmluZSBNRU1fQldfTElNSVRTX05BTUVfQVZHICJhdmdfYnl0ZXNfcGVyX3Vz Igo+ID4+PiAgICAjZGVmaW5lIE1FTV9CV19MSU1JVFNfTkFNRV9CVVJTVCAiYnl0ZXNfaW5fcGVy aW9kIgo+ID4+PiAgICAKPiA+Pj4gKyNkZWZpbmUgTEdQVV9MSU1JVFNfTkFNRV9MSVNUICJsaXN0 Igo+ID4+PiArI2RlZmluZSBMR1BVX0xJTUlUU19OQU1FX0NPVU5UICJjb3VudCIKPiA+Pj4gKwo+ ID4+PiAgICBzdGF0aWMgc3RydWN0IGRybWNnICpyb290X2RybWNnIF9fcmVhZF9tb3N0bHk7Cj4g Pj4+ICAgIAo+ID4+PiAgICBzdGF0aWMgaW50IGRybWNnX2Nzc19mcmVlX2ZuKGludCBpZCwgdm9p ZCAqcHRyLCB2b2lkICpkYXRhKQo+ID4+PiBAQCAtMTE1LDYgKzExOSwxMCBAQCBzdGF0aWMgaW5s aW5lIGludCBpbml0X2RybWNnX3NpbmdsZShzdHJ1Y3QgZHJtY2cgKmRybWNnLCBzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ID4+PiAgICAJZm9yIChpID0gMDsgaSA8PSBUVE1fUExfUFJJVjsgaSsr KQo+ID4+PiAgICAJCWRkci0+bWVtX2hpZ2hzW2ldID0gZGV2LT5kcm1jZ19wcm9wcy5tZW1faGln aHNfZGVmYXVsdFtpXTsKPiA+Pj4gICAgCj4gPj4+ICsJYml0bWFwX2NvcHkoZGRyLT5sZ3B1X2Fs bG9jYXRlZCwgZGV2LT5kcm1jZ19wcm9wcy5sZ3B1X3Nsb3RzLAo+ID4+PiArCQkJTUFYX0RSTUNH X0xHUFVfQ0FQQUNJVFkpOwo+ID4+PiArCWRkci0+bGdwdV91c2VkID0gYml0bWFwX3dlaWdodChk ZHItPmxncHVfYWxsb2NhdGVkLCBNQVhfRFJNQ0dfTEdQVV9DQVBBQ0lUWSk7Cj4gPj4+ICsKPiA+ Pj4gICAgCW11dGV4X3VubG9jaygmZGV2LT5kcm1jZ19tdXRleCk7Cj4gPj4+ICAgIAlyZXR1cm4g MDsKPiA+Pj4gICAgfQo+ID4+PiBAQCAtMjgwLDYgKzI4OCwxNCBAQCBzdGF0aWMgdm9pZCBkcm1j Z19wcmludF9saW1pdHMoc3RydWN0IGRybWNnX2RldmljZV9yZXNvdXJjZSAqZGRyLAo+ID4+PiAg ICAJCQkJTUVNX0JXX0xJTUlUU19OQU1FX0FWRywKPiA+Pj4gICAgCQkJCWRkci0+bWVtX2J3X2xp bWl0c19hdmdfYnl0ZXNfcGVyX3VzKTsKPiA+Pj4gICAgCQlicmVhazsKPiA+Pj4gKwljYXNlIERS TUNHX1RZUEVfTEdQVToKPiA+Pj4gKwkJc2VxX3ByaW50ZihzZiwgIiVzPSVsbGQgJXM9JSpwYmxc biIsCj4gPj4+ICsJCQkJTEdQVV9MSU1JVFNfTkFNRV9DT1VOVCwKPiA+Pj4gKwkJCQlkZHItPmxn cHVfdXNlZCwKPiA+Pj4gKwkJCQlMR1BVX0xJTUlUU19OQU1FX0xJU1QsCj4gPj4+ICsJCQkJZGV2 LT5kcm1jZ19wcm9wcy5sZ3B1X2NhcGFjaXR5LAo+ID4+PiArCQkJCWRkci0+bGdwdV9hbGxvY2F0 ZWQpOwo+ID4+PiArCQlicmVhazsKPiA+Pj4gICAgCWRlZmF1bHQ6Cj4gPj4+ICAgIAkJc2VxX3B1 dHMoc2YsICJcbiIpOwo+ID4+PiAgICAJCWJyZWFrOwo+ID4+PiBAQCAtMzE0LDYgKzMzMCwxNSBA QCBzdGF0aWMgdm9pZCBkcm1jZ19wcmludF9kZWZhdWx0KHN0cnVjdCBkcm1jZ19wcm9wcyAqcHJv cHMsCj4gPj4+ICAgIAkJCQlNRU1fQldfTElNSVRTX05BTUVfQVZHLAo+ID4+PiAgICAJCQkJcHJv cHMtPm1lbV9id19hdmdfYnl0ZXNfcGVyX3VzX2RlZmF1bHQpOwo+ID4+PiAgICAJCWJyZWFrOwo+ ID4+PiArCWNhc2UgRFJNQ0dfVFlQRV9MR1BVOgo+ID4+PiArCQlzZXFfcHJpbnRmKHNmLCAiJXM9 JWQgJXM9JSpwYmxcbiIsCj4gPj4+ICsJCQkJTEdQVV9MSU1JVFNfTkFNRV9DT1VOVCwKPiA+Pj4g KwkJCQliaXRtYXBfd2VpZ2h0KHByb3BzLT5sZ3B1X3Nsb3RzLAo+ID4+PiArCQkJCQlwcm9wcy0+ bGdwdV9jYXBhY2l0eSksCj4gPj4+ICsJCQkJTEdQVV9MSU1JVFNfTkFNRV9MSVNULAo+ID4+PiAr CQkJCXByb3BzLT5sZ3B1X2NhcGFjaXR5LAo+ID4+PiArCQkJCXByb3BzLT5sZ3B1X3Nsb3RzKTsK PiA+Pj4gKwkJYnJlYWs7Cj4gPj4+ICAgIAlkZWZhdWx0Ogo+ID4+PiAgICAJCXNlcV9wdXRzKHNm LCAiXG4iKTsKPiA+Pj4gICAgCQlicmVhazsKPiA+Pj4gQEAgLTQwNyw5ICs0MzIsMjEgQEAgc3Rh dGljIHZvaWQgZHJtY2dfdmFsdWVfYXBwbHkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgczY0ICpk c3QsIHM2NCB2YWwpCj4gPj4+ICAgIAltdXRleF91bmxvY2soJmRldi0+ZHJtY2dfbXV0ZXgpOwo+ ID4+PiAgICB9Cj4gPj4+ICAgIAo+ID4+PiArc3RhdGljIHZvaWQgZHJtY2dfbGdwdV92YWx1ZXNf YXBwbHkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+Pj4gKwkJc3RydWN0IGRybWNnX2Rldmlj ZV9yZXNvdXJjZSAqZGRyLCB1bnNpZ25lZCBsb25nICp2YWwpCj4gPj4+ICt7Cj4gPj4+ICsKPiA+ Pj4gKwltdXRleF9sb2NrKCZkZXYtPmRybWNnX211dGV4KTsKPiA+Pj4gKwliaXRtYXBfY29weShk ZHItPmxncHVfYWxsb2NhdGVkLCB2YWwsIE1BWF9EUk1DR19MR1BVX0NBUEFDSVRZKTsKPiA+Pj4g KwlkZHItPmxncHVfdXNlZCA9IGJpdG1hcF93ZWlnaHQoZGRyLT5sZ3B1X2FsbG9jYXRlZCwgTUFY X0RSTUNHX0xHUFVfQ0FQQUNJVFkpOwo+ID4+PiArCW11dGV4X3VubG9jaygmZGV2LT5kcm1jZ19t dXRleCk7Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4gICAgc3RhdGljIHZvaWQgZHJtY2dfbmVzdGVk X2xpbWl0X3BhcnNlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwKPiA+Pj4gICAgCQlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBjaGFyICphdHRycykKPiA+Pj4gICAgewo+ID4+PiArCURFQ0xB UkVfQklUTUFQKHRtcF9iaXRtYXAsIE1BWF9EUk1DR19MR1BVX0NBUEFDSVRZKTsKPiA+Pj4gKwlE RUNMQVJFX0JJVE1BUChjaGtfYml0bWFwLCBNQVhfRFJNQ0dfTEdQVV9DQVBBQ0lUWSk7Cj4gPj4+ ICAgIAllbnVtIGRybWNnX3Jlc190eXBlIHR5cGUgPQo+ID4+PiAgICAJCURSTUNHX0NURl9QUklW MlJFU1RZUEUob2ZfY2Z0KG9mKS0+cHJpdmF0ZSk7Cj4gPj4+ICAgIAlzdHJ1Y3QgZHJtY2cgKmRy bWNnID0gY3NzX3RvX2RybWNnKG9mX2NzcyhvZikpOwo+ID4+PiBAQCAtNTAxLDYgKzUzOCw4MyBA QCBzdGF0aWMgdm9pZCBkcm1jZ19uZXN0ZWRfbGltaXRfcGFyc2Uoc3RydWN0IGtlcm5mc19vcGVu X2ZpbGUgKm9mLAo+ID4+PiAgICAJCQkJY29udGludWU7Cj4gPj4+ICAgIAkJCX0KPiA+Pj4gICAg CQkJYnJlYWs7IC8qIERSTUNHX1RZUEVfTUVNICovCj4gPj4+ICsJCWNhc2UgRFJNQ0dfVFlQRV9M R1BVOgo+ID4+PiArCQkJaWYgKHN0cm5jbXAoc25hbWUsIExHUFVfTElNSVRTX05BTUVfTElTVCwg MjU2KSAmJgo+ID4+PiArCQkJCXN0cm5jbXAoc25hbWUsIExHUFVfTElNSVRTX05BTUVfQ09VTlQs IDI1NikgKQo+ID4+PiArCQkJCWNvbnRpbnVlOwo+ID4+PiArCj4gPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICBpZiAoIXN0cmNtcCgibWF4Iiwgc3ZhbCkgfHwKPiA+Pj4gKwkJCQkJIXN0cmNt cCgiZGVmYXVsdCIsIHN2YWwpKSB7Cj4gPj4+ICsJCQkJaWYgKHBhcmVudCAhPSBOVUxMKQo+ID4+ PiArCQkJCQlkcm1jZ19sZ3B1X3ZhbHVlc19hcHBseShkZXYsIGRkciwKPiA+Pj4gKwkJCQkJCXBh cmVudC0+ZGV2X3Jlc291cmNlc1ttaW5vcl0tPgo+ID4+PiArCQkJCQkJbGdwdV9hbGxvY2F0ZWQp Owo+ID4+PiArCQkJCWVsc2UKPiA+Pj4gKwkJCQkJZHJtY2dfbGdwdV92YWx1ZXNfYXBwbHkoZGV2 LCBkZHIsCj4gPj4+ICsJCQkJCQlwcm9wcy0+bGdwdV9zbG90cyk7Cj4gPj4+ICsKPiA+Pj4gKwkJ CQljb250aW51ZTsKPiA+Pj4gKwkJCX0KPiA+Pj4gKwo+ID4+PiArCQkJaWYgKHN0cm5jbXAoc25h bWUsIExHUFVfTElNSVRTX05BTUVfQ09VTlQsIDI1NikgPT0gMCkgewo+ID4+PiArCQkJCXBfbWF4 ID0gcGFyZW50ID09IE5VTEwgPyBwcm9wcy0+bGdwdV9jYXBhY2l0eToKPiA+Pj4gKwkJCQkJYml0 bWFwX3dlaWdodCgKPiA+Pj4gKwkJCQkJcGFyZW50LT5kZXZfcmVzb3VyY2VzW21pbm9yXS0+Cj4g Pj4+ICsJCQkJCWxncHVfYWxsb2NhdGVkLCBwcm9wcy0+bGdwdV9jYXBhY2l0eSk7Cj4gPj4+ICsK PiA+Pj4gKwkJCQlyYyA9IGRybWNnX3Byb2Nlc3NfbGltaXRfczY0X3ZhbChzdmFsLAo+ID4+PiAr CQkJCQlmYWxzZSwgcF9tYXgsIHBfbWF4LCAmdmFsKTsKPiA+Pj4gKwo+ID4+PiArCQkJCWlmIChy YyB8fCB2YWwgPCAwKSB7Cj4gPj4+ICsJCQkJCWRybWNnX3ByX2NmdF9lcnIoZHJtY2csIHJjLCBj ZnRfbmFtZSwKPiA+Pj4gKwkJCQkJCQltaW5vcik7Cj4gPj4+ICsJCQkJCWNvbnRpbnVlOwo+ID4+ PiArCQkJCX0KPiA+Pj4gKwo+ID4+PiArCQkJCWJpdG1hcF96ZXJvKHRtcF9iaXRtYXAsCj4gPj4+ ICsJCQkJCQlNQVhfRFJNQ0dfTEdQVV9DQVBBQ0lUWSk7Cj4gPj4+ICsJCQkJYml0bWFwX3NldCh0 bXBfYml0bWFwLCAwLCB2YWwpOwo+ID4+PiArCQkJfQo+ID4+PiArCj4gPj4+ICsJCQlpZiAoc3Ry bmNtcChzbmFtZSwgTEdQVV9MSU1JVFNfTkFNRV9MSVNULCAyNTYpID09IDApIHsKPiA+Pj4gKwkJ CQlyYyA9IGJpdG1hcF9wYXJzZWxpc3Qoc3ZhbCwgdG1wX2JpdG1hcCwKPiA+Pj4gKwkJCQkJCU1B WF9EUk1DR19MR1BVX0NBUEFDSVRZKTsKPiA+Pj4gKwo+ID4+PiArCQkJCWlmIChyYykgewo+ID4+ PiArCQkJCQlkcm1jZ19wcl9jZnRfZXJyKGRybWNnLCByYywgY2Z0X25hbWUsCj4gPj4+ICsJCQkJ CQkJbWlub3IpOwo+ID4+PiArCQkJCQljb250aW51ZTsKPiA+Pj4gKwkJCQl9Cj4gPj4+ICsKPiA+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIAliaXRtYXBfYW5kbm90KGNoa19iaXRtYXAsIHRt cF9iaXRtYXAsCj4gPj4+ICsJCQkJCXByb3BzLT5sZ3B1X3Nsb3RzLAo+ID4+PiArCQkJCQlNQVhf RFJNQ0dfTEdQVV9DQVBBQ0lUWSk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIAlpZiAoIWJpdG1hcF9lbXB0eShjaGtfYml0bWFwLAo+ID4+PiArCQkJCQkJTUFYX0RSTUNH X0xHUFVfQ0FQQUNJVFkpKSB7Cj4gPj4+ICsJCQkJCWRybWNnX3ByX2NmdF9lcnIoZHJtY2csIDAs IGNmdF9uYW1lLAo+ID4+PiArCQkJCQkJCW1pbm9yKTsKPiA+Pj4gKwkJCQkJY29udGludWU7Cj4g Pj4+ICsJCQkJfQo+ID4+PiArCQkJfQo+ID4+PiArCj4gPj4+ICsKPiA+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChwYXJlbnQgIT0gTlVMTCkgewo+ID4+PiArCQkJCWJpdG1hcF9hbmQo Y2hrX2JpdG1hcCwgdG1wX2JpdG1hcCwKPiA+Pj4gKwkJCQlwYXJlbnQtPmRldl9yZXNvdXJjZXNb bWlub3JdLT5sZ3B1X2FsbG9jYXRlZCwKPiA+Pj4gKwkJCQlwcm9wcy0+bGdwdV9jYXBhY2l0eSk7 Cj4gPj4+ICsKPiA+Pj4gKwkJCQlpZiAoYml0bWFwX2VtcHR5KGNoa19iaXRtYXAsCj4gPj4+ICsJ CQkJCQlwcm9wcy0+bGdwdV9jYXBhY2l0eSkpIHsKPiA+Pj4gKwkJCQkJZHJtY2dfcHJfY2Z0X2Vy cihkcm1jZywgMCwKPiA+Pj4gKwkJCQkJCQljZnRfbmFtZSwgbWlub3IpOwo+ID4+PiArCQkJCQlj b250aW51ZTsKPiA+Pj4gKwkJCQl9Cj4gPj4+ICsJCQl9Cj4gPj4+ICsKPiA+Pj4gKwkJCWRybWNn X2xncHVfdmFsdWVzX2FwcGx5KGRldiwgZGRyLCB0bXBfYml0bWFwKTsKPiA+Pj4gKwo+ID4+PiAr CQkJYnJlYWs7IC8qIERSTUNHX1RZUEVfTEdQVSAqLwo+ID4+PiAgICAJCWRlZmF1bHQ6Cj4gPj4+ ICAgIAkJCWJyZWFrOwo+ID4+PiAgICAJCX0gLyogc3dpdGNoICh0eXBlKSAqLwo+ID4+PiBAQCAt NjA2LDYgKzcyMCw3IEBAIHN0YXRpYyBzc2l6ZV90IGRybWNnX2xpbWl0X3dyaXRlKHN0cnVjdCBr ZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqYnVmLAo+ID4+PiAgICAJCQlicmVhazsKPiA+Pj4g ICAgCQljYXNlIERSTUNHX1RZUEVfQkFORFdJRFRIOgo+ID4+PiAgICAJCWNhc2UgRFJNQ0dfVFlQ RV9NRU06Cj4gPj4+ICsJCWNhc2UgRFJNQ0dfVFlQRV9MR1BVOgo+ID4+PiAgICAJCQlkcm1jZ19u ZXN0ZWRfbGltaXRfcGFyc2Uob2YsIGRtLT5kZXYsIHNhdHRyKTsKPiA+Pj4gICAgCQkJYnJlYWs7 Cj4gPj4+ICAgIAkJZGVmYXVsdDoKPiA+Pj4gQEAgLTczMSw2ICs4NDYsMjAgQEAgc3RydWN0IGNm dHlwZSBmaWxlc1tdID0gewo+ID4+PiAgICAJCS5wcml2YXRlID0gRFJNQ0dfQ1RGX1BSSVYoRFJN Q0dfVFlQRV9CQU5EV0lEVEgsCj4gPj4+ICAgIAkJCQkJCURSTUNHX0ZUWVBFX0RFRkFVTFQpLAo+ ID4+PiAgICAJfSwKPiA+Pj4gKwl7Cj4gPj4+ICsJCS5uYW1lID0gImxncHUiLAo+ID4+PiArCQku c2VxX3Nob3cgPSBkcm1jZ19zZXFfc2hvdywKPiA+Pj4gKwkJLndyaXRlID0gZHJtY2dfbGltaXRf d3JpdGUsCj4gPj4+ICsJCS5wcml2YXRlID0gRFJNQ0dfQ1RGX1BSSVYoRFJNQ0dfVFlQRV9MR1BV LAo+ID4+PiArCQkJCQkJRFJNQ0dfRlRZUEVfTElNSVQpLAo+ID4+PiArCX0sCj4gPj4+ICsJewo+ ID4+PiArCQkubmFtZSA9ICJsZ3B1LmRlZmF1bHQiLAo+ID4+PiArCQkuc2VxX3Nob3cgPSBkcm1j Z19zZXFfc2hvdywKPiA+Pj4gKwkJLmZsYWdzID0gQ0ZUWVBFX09OTFlfT05fUk9PVCwKPiA+Pj4g KwkJLnByaXZhdGUgPSBEUk1DR19DVEZfUFJJVihEUk1DR19UWVBFX0xHUFUsCj4gPj4+ICsJCQkJ CQlEUk1DR19GVFlQRV9ERUZBVUxUKSwKPiA+Pj4gKwl9LAo+ID4+PiAgICAJeyB9CS8qIHRlcm1p bmF0ZSAqLwo+ID4+PiAgICB9Owo+ID4+PiAgICAKPiA+Pj4gQEAgLTc0NCw2ICs4NzMsMTAgQEAg c3RydWN0IGNncm91cF9zdWJzeXMgZHJtX2NncnBfc3Vic3lzID0gewo+ID4+PiAgICAKPiA+Pj4g ICAgc3RhdGljIGlubGluZSB2b2lkIGRybWNnX3VwZGF0ZV9jZ190cmVlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gPj4+ICAgIHsKPiA+Pj4gKyAgICAgICAgYml0bWFwX3plcm8oZGV2LT5kcm1j Z19wcm9wcy5sZ3B1X3Nsb3RzLCBNQVhfRFJNQ0dfTEdQVV9DQVBBQ0lUWSk7Cj4gPj4+ICsgICAg ICAgIGJpdG1hcF9maWxsKGRldi0+ZHJtY2dfcHJvcHMubGdwdV9zbG90cywKPiA+Pj4gKwkJCWRl di0+ZHJtY2dfcHJvcHMubGdwdV9jYXBhY2l0eSk7Cj4gPj4+ICsKPiA+Pj4gICAgCS8qIGluaXQg Y2dyb3VwcyBjcmVhdGVkIGJlZm9yZSByZWdpc3RyYXRpb24gKGkuZS4gcm9vdCBjZ3JvdXApICov Cj4gPj4+ICAgIAlpZiAocm9vdF9kcm1jZyAhPSBOVUxMKSB7Cj4gPj4+ICAgIAkJc3RydWN0IGNn cm91cF9zdWJzeXNfc3RhdGUgKnBvczsKPiA+Pj4gQEAgLTgwMCw2ICs5MzMsOCBAQCB2b2lkIGRy bWNnX2RldmljZV9lYXJseV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPj4+ICAgIAlm b3IgKGkgPSAwOyBpIDw9IFRUTV9QTF9QUklWOyBpKyspCj4gPj4+ICAgIAkJZGV2LT5kcm1jZ19w cm9wcy5tZW1faGlnaHNfZGVmYXVsdFtpXSA9IFM2NF9NQVg7Cj4gPj4+ICAgIAo+ID4+PiArCWRl di0+ZHJtY2dfcHJvcHMubGdwdV9jYXBhY2l0eSA9IE1BWF9EUk1DR19MR1BVX0NBUEFDSVRZOwo+ ID4+PiArCj4gPj4+ICAgIAlkcm1jZ191cGRhdGVfY2dfdHJlZShkZXYpOwo+ID4+PiAgICB9Cj4g Pj4+ICAgIEVYUE9SVF9TWU1CT0woZHJtY2dfZGV2aWNlX2Vhcmx5X2luaXQpOwoKLS0gCkRhbmll bCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9n LmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA==