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 18:06:52 +0200 Message-ID: <20191009160652.GO16989@phenom.ffwll.local> References: <20190829060533.32315-1-Kenny.Ho@amd.com> <20190829060533.32315-15-Kenny.Ho@amd.com> <20191009103153.GU16989@phenom.ffwll.local> <20191009153429.GI16989@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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" 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" T24gV2VkLCBPY3QgMDksIDIwMTkgYXQgMDM6NTM6NDJQTSArMDAwMCwgS3VlaGxpbmcsIEZlbGl4 IHdyb3RlOgo+IE9uIDIwMTktMTAtMDkgMTE6MzQsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiBP biBXZWQsIE9jdCAwOSwgMjAxOSBhdCAwMzoyNToyMlBNICswMDAwLCBLdWVobGluZywgRmVsaXgg d3JvdGU6Cj4gPj4gT24gMjAxOS0xMC0wOSA2OjMxLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+ PiBPbiBUdWUsIE9jdCAwOCwgMjAxOSBhdCAwNjo1MzoxOFBNICswMDAwLCBLdWVobGluZywgRmVs aXggd3JvdGU6Cj4gPj4+PiBUaGUgZGVzY3JpcHRpb24gc291bmRzIHJlYXNvbmFibGUgdG8gbWUg YW5kIG1hcHMgd2VsbCB0byB0aGUgQ1UgbWFza2luZwo+ID4+Pj4gZmVhdHVyZSBpbiBvdXIgR1BV cy4KPiA+Pj4+Cj4gPj4+PiBJdCB3b3VsZCBhbHNvIGFsbG93IHVzIHRvIGRvIG1vcmUgY29hcnNl LWdyYWluZWQgbWFza2luZyBmb3IgZXhhbXBsZSB0bwo+ID4+Pj4gZ3VhcmFudGVlIGJhbGFuY2Vk IGFsbG9jYXRpb24gb2YgQ1VzIGFjcm9zcyBzaGFkZXIgZW5naW5lcyBvcgo+ID4+Pj4gcGFydGl0 aW9uaW5nIG9mIG1lbW9yeSBiYW5kd2lkdGggb3IgQ1AgcGlwZXMgKGlmIHRoYXQgaXMgc3VwcG9y dGVkIGJ5Cj4gPj4+PiB0aGUgaGFyZHdhcmUvZmlybXdhcmUpLgo+ID4+PiBIbSwgc28gdGhpcyBz b3VuZHMgbGlrZSB0aGUgZGVmaW5pdGlvbiBmb3IgaG93IHRoaXMgY2dyb3VwIGlzIHN1cHBvc2Vk IHRvCj4gPj4+IHdvcmsgaXMgImFtZCBDVSBtYXNraW5nIiAod2hhdGV2ZXIgdGhhdCBleGFjdGx5 IGlzKS4gQW5kIHRoZSBhYnN0cmFjdAo+ID4+PiBkZXNjcmlwdGlvbiBpcyBqdXN0IHByZXR0aWZp Y2F0aW9uIG9uIHRvcCwgYnV0IG5vdCBhY3R1YWxseSB0aGUgcmVhbAo+ID4+PiBkZWZpbml0aW9u IHlvdSBndXlzIHdhbnQuCj4gPj4gSSB0aGluayB5b3UncmUgcmVhZGluZyB0aGlzIGFzIHRoZSBv cHBvc2l0ZSBvZiB3aGF0IEkgd2FzIHRyeWluZyB0byBzYXkuCj4gPj4gVXNpbmcgQ1UgbWFza2lu ZyBpcyBvbmUgcG9zc2libGUgaW1wbGVtZW50YXRpb24gb2YgTEdQVXMgb24gQU1ECj4gPj4gaGFy ZHdhcmUuIEl0J3MgdGhlIG9uZSB0aGF0IEtlbm55IGltcGxlbWVudGVkIGF0IHRoZSBlbmQgb2Yg dGhpcyBwYXRjaAo+ID4+IHNlcmllcywgYW5kIEkgcG9pbnRlZCBvdXQgc29tZSBwcm9ibGVtcyB3 aXRoIHRoYXQgYXBwcm9hY2guIE90aGVyIHdheXMKPiA+PiB0byBwYXJ0aXRpb24gdGhlIGhhcmR3 YXJlIGludG8gTEdQVXMgYXJlIGNvbmNlaXZhYmxlLiBGb3IgZXhhbXBsZSB3ZSdyZQo+ID4+IGNv bnNpZGVyaW5nIHNwbGl0dGluZyBpdCBhbG9uZyB0aGUgbGluZXMgb2Ygc2hhZGVyIGVuZ2luZXMs IHdoaWNoIGlzCj4gPj4gbW9yZSBjb2Fyc2UtZ3JhaW4gYW5kIHdvdWxkIGFsc28gYWZmZWN0IG1l bW9yeSBiYW5kd2lkdGggYXZhaWxhYmxlIHRvCj4gPj4gZWFjaCBwYXJ0aXRpb24uCj4gPiBJZiB0 aGlzIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWZ1bCBmb3IgYWRtaW5zIHRoZW4gIm90aGVyIHdheXMg dG8gcGFydGl0aW9uCj4gPiB0aGUgaHcgYXJlIGNvbmNlaXZhYmxlIiBpcyB0aGUgcHJvYmxlbS4g VGhpcyBzaG91bGQgYmUgdW5pcXVlJmNsZWFyIGZvcgo+ID4gYWRtaW5zL2VuZC11c2Vycy4gUmVh ZGluZyB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgcmVhbGl6aW5nIHRoYXQKPiA+IHRo ZSBhY3R1YWwgbWVhbmluZyBpcyAiYW1kIENVIG1hc2tpbmciIGlzbid0IGdvb2QgZW5vdWdoIGJ5 IGZhciwgc2luY2UKPiA+IHRoYXQncyBtZWFuaW5nbGVzcyBvbiBhbnkgb3RoZXIgaHcuCj4gPgo+ ID4gQW5kIGlmIHRoZXJlJ3Mgb3RoZXIgd2F5cyB0byBpbXBsZW1lbnQgdGhpcyBjZ3JvdXAgZm9y IGFtZCwgaXQncyBhbHNvCj4gPiBtZWFuaW5nbGVzcyAodG8gc3lzYWRtaW5zL3VzZXJzKSBmb3Ig YW1kIGh3Lgo+ID4KPiA+PiBXZSBjb3VsZCBhbHNvIGNvbnNpZGVyIHBhcnRpdGlvbmluZyBwaXBl cyBpbiBvdXIgY29tbWFuZCBwcm9jZXNzb3IsCj4gPj4gYWx0aG91Z2ggdGhhdCBpcyBub3Qgc3Vw cG9ydGVkIGJ5IG91ciBjdXJyZW50IENQIHNjaGVkdWxlciBmaXJtd2FyZS4KPiA+Pgo+ID4+IFRo ZSBib3R0b20gbGluZSBpcywgdGhlIExHUFUgbW9kZWwgcHJvcG9zZWQgYnkgS2VubnkgaXMgcXVp dGUgYWJzdHJhY3QKPiA+PiBhbmQgYWxsb3dzIGRyaXZlcnMgaW1wbGVtZW50aW5nIGl0IGEgbG90 IG9mIGZsZXhpYmlsaXR5IGRlcGVuZGluZyBvbiB0aGUKPiA+PiBjYXBhYmlsaXR5IG9mIHRoZWly IGhhcmR3YXJlIGFuZCBmaXJtd2FyZS4gV2UgaGF2ZW4ndCBzZXR0bGVkIG9uIGEgZmluYWwKPiA+ PiBpbXBsZW1lbnRhdGlvbiBjaG9pY2UgZXZlbiBmb3IgQU1ELgo+ID4gVGhhdCBhYnN0cmFjdCBt b2RlbCBvZiBlc3NlbnRpYWxseSAiYW55dGhpbmcgZ29lcyIgaXMgdGhlIHByb2JsZW0gaGVyZQo+ ID4gaW1vLiBFLmcuIGZvciBjcHUgY2dyb3VwcyB0aGlzIHdvdWxkIGJlIHNpbWlsYXIgdG8gYWxs b3dpbmcgdGhlIGJpdG1ha3MgdG8KPiA+IG1lYW4gImNwdSBjb3JlIiBvbiBvbmUgbWFjaGluZSAi cGh5c2ljYWwgZGllIiBvbiB0aGUgbmV4dCBhbmQgbWF5YmUKPiA+ICJoeXBlcnRocmVhZCB1bml0 IiBvbiB0aGUgM3JkLiBVc2VsZXNzIGZvciBhZG1pbnMuCj4gPgo+ID4gU28gaWYgd2UgaGF2ZSBh IGdwdSBiaXRtYWtzIHRoaW5nIHRoYXQgbWlnaHQgbWVhbiBhIGNvbW1hbmQgc3VibWlzc2lvIHBp cGUKPiA+IG9uIG9uZSBodyAobWF5YmUgbWF0Y2hpbmcgd2hhdCB2ayBleHBvc2VkLCBtYXliZSBu b3QpLCBzb21lIGNvbXB1dGUgdW5pdAo+ID4gbWFzayBvbiB0aGUgbmV4dCBhbmQgc29tZXRoaW5n IGVudGlyZWx5IGRpZmZlcmVudCAoZS5nLiBpbnRlbCBoYXMgc28KPiA+IGNhbGxlZCBHVCBzbGlj ZXMgd2l0aCBjb21wdXRlIGNvcmVzICsgbW9yZSBzdHVmZiBhcm91bmQpIG9uIHRoZSAzcmQgdmVu ZG9yCj4gPiB0aGVuIHRoYXQncyBub3QgdXNlZnVsIGZvciBhZG1pbnMuCj4gCj4gVGhlIGdvYWwg aXMgdG8gcGFydGl0aW9uIEdQVSBjb21wdXRlIHJlc291cmNlcyB0byBlbGltaW5hdGUgYXMgbXVj aCAKPiByZXNvdXJjZSBjb250ZW50aW9uIGFzIHBvc3NpYmxlIGJldHdlZW4gZGlmZmVyZW50IHBh cnRpdGlvbnMuIERpZmZlcmVudCAKPiBoYXJkd2FyZSB3aWxsIGhhdmUgZGlmZmVyZW50IGNhcGFi aWxpdGllcyB0byBpbXBsZW1lbnQgdGhpcy4gTm8gCj4gaW1wbGVtZW50YXRpb24gd2lsbCBiZSBw ZXJmZWN0LiBGb3IgZXhhbXBsZSwgZXZlbiB3aXRoIENQVSBjb3JlcyB0aGF0IAo+IGFyZSBzdXBw b3NlZGx5IHdlbGwgZGVmaW5lZCwgeW91IGNhbiBzdGlsbCBoYXZlIGRpZmZlcmVudCBiZWhhdmlv dXJzIAo+IGRlcGVuZGluZyBvbiBDUFUgY2FjaGUgYXJjaGl0ZWN0dXJlcywgTlVNQSBhbmQgdGhl cm1hbCBtYW5hZ2VtZW50IGFjcm9zcyAKPiBDUFUgY29yZXMuIFRoZSBhZG1pbiB3aWxsIG5lZWQg c29tZSBrbm93bGVkZ2Ugb2YgdGhlaXIgaGFyZHdhcmUgCj4gYXJjaGl0ZWN0dXJlIHRvIHVuZGVy c3RhbmQgdGhvc2UgZWZmZWN0cyB0aGF0IGFyZSBub3QgZGVzY3JpYmVkIGJ5IHRoZSAKPiBhYnN0 cmFjdCBtb2RlbCBvZiBjZ3JvdXBzLgoKVGhhdCdzIG5vdCB0aGUgcG9pbnQgSSB3YXMgbWFraW5n LiBGb3IgY3B1IGNncm91cHMgdGhlcmUncyBhIHZlcnkgd2VsbApkZWZpbmVkIGNvbm5lY3Rpb24g YmV0d2VlbiB0aGUgY3B1IGJpdG1hc2tzL251bWJlcnMgaW4gY2dyb3VwcyBhbmQgdGhlIGNwdQpi aXRtYXNrcyB5b3UgdXNlIGluIHZhcmlvdXMgc3lzdGVtIGNhbGxzICh0aGV5IG1hdGNoKS4gQW5k IHRoYXQgc3R1ZmYKd29ya3MgYWNyb3NzIHZlbmRvcnMuCgpXZSBuZWVkIHRoZSBzYW1lIGZvciBn cHVzLgoKPiBUaGUgTEdQVSBtb2RlbCBpcyBkZWxpYmVyYXRlbHkgZmxleGlibGUsIGJlY2F1c2Ug R1BVIGFyY2hpdGVjdHVyZXMgYXJlIAo+IG11Y2ggbGVzcyBzdGFuZGFyZGl6ZWQgdGhhbiBDUFUg YXJjaGl0ZWN0dXJlcy4gRXhwZWN0aW5nIGEgY29tbW9uIG1vZGVsIAo+IHRoYXQgaXMgYm90aCB2 ZXJ5IHNwZWNpZmljIGFuZCBhcHBsaWNhYmxlIHRvIHRvIGFsbCBHUFVzIGlzIHVucmVhbGlzdGlj LCAKPiBpbiBteSBvcGluaW9uLgoKU28gcHVyZSBhYnN0cmFjdGlvbiBpc24ndCB1c2VmdWwsIHdl IG5lZWQgdG8ga25vdyB3aGF0IHRoZXNlIGJpdHMgbWVhbi4KU2luY2UgaWYgdGhleSBlLmcuIG1l YW4gdmsgcGlwZXMsIHRoZW4gbWF5YmUgSSBzaG91bGRuJ3QgYmUgdXNpbmcgdGhvc2UgdmsKcGlw ZXMgaW4gbXkgYXBwbGljYXRpb24gYW55bW9yZS4gT3Igd2UgbmVlZCB0byBkZWZpbmUgdGhhdCB0 aGUgdXNlcnNwYWNlCmRyaXZlciBuZWVkcyB0byBmaWx0ZXIgb3V0IGFueSBwaXBlcyB0aGF0IGFy ZW50JyBhY2Nlc3NpYmxlIChpZiB0aGF0J3MKcG9zc2libGUsIG5vIGlkZWEpLgoKY2dyb3VwcyB0 aGF0IGVzc2VudGlhbGx5IGhhdmUgcHVyZSBodyBkZXBlZGVudCBtZWFuaW5nIGFyZW4ndCB1c2Vm dWwuCk5vdGU6IHRoaXMgaXMgYWJvdXQgdGhlIGZ1bmRhbWVudGFsIG1lYW5pbmcsIG5vdCBhYm91 dCB0aGUgbW9yZSB1bmNsZWFyCmlzb2xhdGlvbiBndWFyYW50ZWVzICh3aGljaCBhcmUgaW5kZWVk IGh3IHNwZWNpZmljIG9uIGRpZmZlcmVudCBjcHUKcGxhdGZvcm1zKS4gV2UncmUgbm90IHRhbGtp bmcgYWJvdXQgImRpZmZlcmVudCBncHVzIG1pZ2h0IGhhdmUgZGlmZmVyZW50CmFtb3VudHMgb2Yg c2hhcmVkIGNhY2hlcyBiaXR3ZWVuIGRpZmZlcmVudCBiaXRtYXNrcyIuIFdlJ3JlIHRhbGtpbmcK ImRpZmZlcmVudCBncHVzIG1pZ2h0IGFzc2lnbiBjb21wbGV0ZWx5IGRpZmZlcmVuIG1lYW5pbmcg dG8gdGhlc2UKYml0bWFza3MiLgotRGFuaWVsCgo+IAo+IFJlZ2FyZHMsCj4gIMKgIEZlbGl4Cj4g Cj4gCj4gPiAtRGFuaWVsCj4gPgo+ID4+IFJlZ2FyZHMsCj4gPj4gICDCoCBGZWxpeAo+ID4+Cj4g Pj4KPiA+Pj4gSSB0aGluayBhZGRpbmcgYSBjZ3JvdXAgd2hpY2ggaXMgdGhhdCBtdWNoIGRlcGVu ZGluZyB1cG9uIHRoZSBodwo+ID4+PiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZmlyc3QgZHJpdmVy IHN1cHBvcnRpbmcgaXQgaXMgbm90IGEgZ29vZCBpZGVhLgo+ID4+PiAtRGFuaWVsCj4gPj4+Cj4g Pj4+PiBJIGNhbid0IGNvbW1lbnQgb24gdGhlIGNvZGUgYXMgSSdtIHVuZmFtaWxpYXIgd2l0aCB0 aGUgZGV0YWlscyBvZiB0aGUKPiA+Pj4+IGNncm91cCBjb2RlLgo+ID4+Pj4KPiA+Pj4+IEFja2Vk LWJ5OiBGZWxpeCBLdWVobGluZyA8RmVsaXguS3VlaGxpbmdAYW1kLmNvbT4KPiA+Pj4+Cj4gPj4+ Pgo+ID4+Pj4+IC0tLQo+ID4+Pj4+ICAgICBEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91 cC12Mi5yc3QgfCAgNDYgKysrKysrKysKPiA+Pj4+PiAgICAgaW5jbHVkZS9kcm0vZHJtX2Nncm91 cC5oICAgICAgICAgICAgICAgIHwgICA0ICsKPiA+Pj4+PiAgICAgaW5jbHVkZS9saW51eC9jZ3Jv dXBfZHJtLmggICAgICAgICAgICAgIHwgICA2ICsrCj4gPj4+Pj4gICAgIGtlcm5lbC9jZ3JvdXAv ZHJtLmMgICAgICAgICAgICAgICAgICAgICB8IDEzNSArKysrKysrKysrKysrKysrKysrKysrKysK PiA+Pj4+PiAgICAgNCBmaWxlcyBjaGFuZ2VkLCAxOTEgaW5zZXJ0aW9ucygrKQo+ID4+Pj4+Cj4g Pj4+Pj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJz dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdAo+ID4+Pj4+IGluZGV4 IDg3YTE5NTEzM2VhYS4uNTdmMTg0NjliZDc2IDEwMDY0NAo+ID4+Pj4+IC0tLSBhL0RvY3VtZW50 YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdAo+ID4+Pj4+ICsrKyBiL0RvY3VtZW50YXRp b24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdAo+ID4+Pj4+IEBAIC0xOTU4LDYgKzE5NTgsNTIg QEAgRFJNIEludGVyZmFjZSBGaWxlcwo+ID4+Pj4+ICAgICAJU2V0IGxhcmdlc3QgYWxsb2NhdGlv biBmb3IgL2Rldi9kcmkvY2FyZDEgdG8gNE1CCj4gPj4+Pj4gICAgIAllY2hvICIyMjY6MSA0bSIg PiBkcm0uYnVmZmVyLnBlYWsubWF4Cj4gPj4+Pj4gICAgIAo+ID4+Pj4+ICsgIGRybS5sZ3B1Cj4g Pj4+Pj4gKwlBIHJlYWQtd3JpdGUgbmVzdGVkLWtleWVkIGZpbGUgd2hpY2ggZXhpc3RzIG9uIGFs bCBjZ3JvdXBzLgo+ID4+Pj4+ICsJRWFjaCBlbnRyeSBpcyBrZXllZCBieSB0aGUgRFJNIGRldmlj ZSdzIG1ham9yOm1pbm9yLgo+ID4+Pj4+ICsKPiA+Pj4+PiArCWxncHUgc3RhbmRzIGZvciBsb2dp Y2FsIEdQVSwgaXQgaXMgYW4gYWJzdHJhY3Rpb24gdXNlZCB0bwo+ID4+Pj4+ICsJc3ViZGl2aWRl IGEgcGh5c2ljYWwgRFJNIGRldmljZSBmb3IgdGhlIHB1cnBvc2Ugb2YgcmVzb3VyY2UKPiA+Pj4+ PiArCW1hbmFnZW1lbnQuCj4gPj4+Pj4gKwo+ID4+Pj4+ICsJVGhlIGxncHUgaXMgYSBkaXNjcmV0 ZSBxdWFudGl0eSB0aGF0IGlzIGRldmljZSBzcGVjaWZpYyAoaS5lLgo+ID4+Pj4+ICsJc29tZSBE Uk0gZGV2aWNlcyBtYXkgaGF2ZSA2NCBsZ3B1cyB3aGlsZSBvdGhlcnMgbWF5IGhhdmUgMTAwCj4g Pj4+Pj4gKwlsZ3B1cy4pICBUaGUgbGdwdSBpcyBhIHNpbmdsZSBxdWFudGl0eSB3aXRoIHR3byBy ZXByZXNlbnRhdGlvbnMKPiA+Pj4+PiArCWRlbm90ZWQgYnkgdGhlIGZvbGxvd2luZyBuZXN0ZWQg a2V5cy4KPiA+Pj4+PiArCj4gPj4+Pj4gKwkgID09PT09ICAgICA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Cj4gPj4+Pj4gKwkgIGNvdW50ICAgICBSZXByZXNlbnRpbmcg bGdwdSBhcyBhbm9ueW1vdXMgcmVzb3VyY2UKPiA+Pj4+PiArCSAgbGlzdCAgICAgIFJlcHJlc2Vu dGluZyBsZ3B1IGFzIG5hbWVkIHJlc291cmNlCj4gPj4+Pj4gKwkgID09PT09ICAgICA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsJRm9y IGV4YW1wbGU6Cj4gPj4+Pj4gKwkyMjY6MCBjb3VudD0yNTYgbGlzdD0wLTI1NQo+ID4+Pj4+ICsJ MjI2OjEgY291bnQ9NCBsaXN0PTAsMiw0LDYKPiA+Pj4+PiArCTIyNjoyIGNvdW50PTMyIGxpc3Q9 MzItNjMKPiA+Pj4+PiArCj4gPj4+Pj4gKwlsZ3B1IGlzIHJlcHJlc2VudGVkIGJ5IGEgYml0bWFw IGFuZCB1c2VzIHRoZSBiaXRtYXBfcGFyc2VsaXN0Cj4gPj4+Pj4gKwlrZXJuZWwgZnVuY3Rpb24g c28gdGhlIGxpc3Qga2V5IGlucHV0IGZvcm1hdCBpcyBhCj4gPj4+Pj4gKwljb21tYS1zZXBhcmF0 ZWQgbGlzdCBvZiBkZWNpbWFsIG51bWJlcnMgYW5kIHJhbmdlcy4KPiA+Pj4+PiArCj4gPj4+Pj4g KwlDb25zZWN1dGl2ZWx5IHNldCBiaXRzIGFyZSBzaG93biBhcyB0d28gaHlwaGVuLXNlcGFyYXRl ZCBkZWNpbWFsCj4gPj4+Pj4gKwludW1iZXJzLCB0aGUgc21hbGxlc3QgYW5kIGxhcmdlc3QgYml0 IG51bWJlcnMgc2V0IGluIHRoZSByYW5nZS4KPiA+Pj4+PiArCU9wdGlvbmFsbHkgZWFjaCByYW5n ZSBjYW4gYmUgcG9zdGZpeGVkIHRvIGRlbm90ZSB0aGF0IG9ubHkgcGFydHMKPiA+Pj4+PiArCW9m IGl0IHNob3VsZCBiZSBzZXQuICBUaGUgcmFuZ2Ugd2lsbCBkaXZpZGVkIHRvIGdyb3VwcyBvZgo+ ID4+Pj4+ICsJc3BlY2lmaWMgc2l6ZS4KPiA+Pj4+PiArCVN5bnRheDogcmFuZ2U6dXNlZF9zaXpl L2dyb3VwX3NpemUKPiA+Pj4+PiArCUV4YW1wbGU6IDAtMTAyMzoyLzI1NiA9PT4gMCwxLDI1Niwy NTcsNTEyLDUxMyw3NjgsNzY5Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsJVGhlIGNvdW50IGtleSBpcyB0 aGUgaGFtbWluZyB3ZWlnaHQgLyBod2VpZ2h0IG9mIHRoZSBiaXRtYXAuCj4gPj4+Pj4gKwo+ID4+ Pj4+ICsJQm90aCBjb3VudCBhbmQgbGlzdCBhY2NlcHQgdGhlIG1heCBhbmQgZGVmYXVsdCBrZXl3 b3Jkcy4KPiA+Pj4+PiArCj4gPj4+Pj4gKwlTb21lIERSTSBkZXZpY2VzIG1heSBvbmx5IHN1cHBv cnQgbGdwdSBhcyBhbm9ueW1vdXMgcmVzb3VyY2VzLgo+ID4+Pj4+ICsJSW4gc3VjaCBjYXNlLCB0 aGUgc2lnbmlmaWNhbmNlIG9mIHRoZSBwb3NpdGlvbiBvZiB0aGUgc2V0IGJpdHMKPiA+Pj4+PiAr CWluIGxpc3Qgd2lsbCBiZSBpZ25vcmVkLgo+ID4+Pj4+ICsKPiA+Pj4+PiArCVRoaXMgbGdwdSBy ZXNvdXJjZSBzdXBwb3J0cyB0aGUgJ2FsbG9jYXRpb24nIHJlc291cmNlCj4gPj4+Pj4gKwlkaXN0 cmlidXRpb24gbW9kZWwuCj4gPj4+Pj4gKwo+ID4+Pj4+ICAgICBHRU0gQnVmZmVyIE93bmVyc2hp cAo+ID4+Pj4+ICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fgo+ID4+Pj4+ICAgICAKPiA+Pj4+PiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nncm91cC5oIGIvaW5jbHVkZS9kcm0vZHJtX2Nn cm91cC5oCj4gPj4+Pj4gaW5kZXggNmQ5NzA3ZTFlYjcyLi5hOGQ2YmUwYjA3NWIgMTAwNjQ0Cj4g Pj4+Pj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nncm91cC5oCj4gPj4+Pj4gKysrIGIvaW5jbHVk ZS9kcm0vZHJtX2Nncm91cC5oCj4gPj4+Pj4gQEAgLTYsNiArNiw3IEBACj4gPj4+Pj4gICAgIAo+ ID4+Pj4+ICAgICAjaW5jbHVkZSA8bGludXgvY2dyb3VwX2RybS5oPgo+ID4+Pj4+ICAgICAjaW5j bHVkZSA8bGludXgvd29ya3F1ZXVlLmg+Cj4gPj4+Pj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5o Pgo+ID4+Pj4+ICAgICAjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9fYXBpLmg+Cj4gPj4+Pj4gICAg ICNpbmNsdWRlIDxkcm0vdHRtL3R0bV9ib19kcml2ZXIuaD4KPiA+Pj4+PiAgICAgCj4gPj4+Pj4g QEAgLTI4LDYgKzI5LDkgQEAgc3RydWN0IGRybWNnX3Byb3BzIHsKPiA+Pj4+PiAgICAgCXM2NAkJ CW1lbV9oaWdoc19kZWZhdWx0W1RUTV9QTF9QUklWKzFdOwo+ID4+Pj4+ICAgICAKPiA+Pj4+PiAg ICAgCXN0cnVjdCB3b3JrX3N0cnVjdAkqbWVtX3JlY2xhaW1fd3FbVFRNX1BMX1BSSVZdOwo+ID4+ Pj4+ICsKPiA+Pj4+PiArCWludAkJCWxncHVfY2FwYWNpdHk7Cj4gPj4+Pj4gKyAgICAgICAgREVD TEFSRV9CSVRNQVAobGdwdV9zbG90cywgTUFYX0RSTUNHX0xHUFVfQ0FQQUNJVFkpOwo+ID4+Pj4+ ICAgICB9Owo+ID4+Pj4+ICAgICAKPiA+Pj4+PiAgICAgI2lmZGVmIENPTkZJR19DR1JPVVBfRFJN Cj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY2dyb3VwX2RybS5oIGIvaW5jbHVk ZS9saW51eC9jZ3JvdXBfZHJtLmgKPiA+Pj4+PiBpbmRleCBjNTZjZmU3NGQxYTYuLjdiMWNmYzRj ZTRjMyAxMDA2NDQKPiA+Pj4+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L2Nncm91cF9kcm0uaAo+ID4+ Pj4+ICsrKyBiL2luY2x1ZGUvbGludXgvY2dyb3VwX2RybS5oCj4gPj4+Pj4gQEAgLTE0LDYgKzE0 LDggQEAKPiA+Pj4+PiAgICAgLyogbGltaXQgZGVmaW5lZCBwZXIgdGhlIHdheSBkcm1fbWlub3Jf YWxsb2Mgb3BlcmF0ZXMgKi8KPiA+Pj4+PiAgICAgI2RlZmluZSBNQVhfRFJNX0RFViAoNjQgKiBE Uk1fTUlOT1JfUkVOREVSKQo+ID4+Pj4+ICAgICAKPiA+Pj4+PiArI2RlZmluZSBNQVhfRFJNQ0df TEdQVV9DQVBBQ0lUWSAyNTYKPiA+Pj4+PiArCj4gPj4+Pj4gICAgIGVudW0gZHJtY2dfbWVtX2J3 X2F0dHIgewo+ID4+Pj4+ICAgICAJRFJNQ0dfTUVNX0JXX0FUVFJfQllURV9NT1ZFRCwgLyogZm9y IGNhbHVsYXRpbmcgJ2luc3RhbnRhbmVvdXMnIGJ3ICovCj4gPj4+Pj4gICAgIAlEUk1DR19NRU1f QldfQVRUUl9BQ0NVTV9VUywgIC8qIGZvciBjYWx1bGF0aW5nICdpbnN0YW50YW5lb3VzJyBidyAq Lwo+ID4+Pj4+IEBAIC0zMiw2ICszNCw3IEBAIGVudW0gZHJtY2dfcmVzX3R5cGUgewo+ID4+Pj4+ ICAgICAJRFJNQ0dfVFlQRV9NRU1fUEVBSywKPiA+Pj4+PiAgICAgCURSTUNHX1RZUEVfQkFORFdJ RFRILAo+ID4+Pj4+ICAgICAJRFJNQ0dfVFlQRV9CQU5EV0lEVEhfUEVSSU9EX0JVUlNULAo+ID4+ Pj4+ICsJRFJNQ0dfVFlQRV9MR1BVLAo+ID4+Pj4+ICAgICAJX19EUk1DR19UWVBFX0xBU1QsCj4g Pj4+Pj4gICAgIH07Cj4gPj4+Pj4gICAgIAo+ID4+Pj4+IEBAIC01OCw2ICs2MSw5IEBAIHN0cnVj dCBkcm1jZ19kZXZpY2VfcmVzb3VyY2Ugewo+ID4+Pj4+ICAgICAJczY0CQkJbWVtX2J3X3N0YXRz W19fRFJNQ0dfTUVNX0JXX0FUVFJfTEFTVF07Cj4gPj4+Pj4gICAgIAlzNjQJCQltZW1fYndfbGlt aXRzX2J5dGVzX2luX3BlcmlvZDsKPiA+Pj4+PiAgICAgCXM2NAkJCW1lbV9id19saW1pdHNfYXZn X2J5dGVzX3Blcl91czsKPiA+Pj4+PiArCj4gPj4+Pj4gKwlzNjQJCQlsZ3B1X3VzZWQ7Cj4gPj4+ Pj4gKwlERUNMQVJFX0JJVE1BUChsZ3B1X2FsbG9jYXRlZCwgTUFYX0RSTUNHX0xHUFVfQ0FQQUNJ VFkpOwo+ID4+Pj4+ICAgICB9Owo+ID4+Pj4+ICAgICAKPiA+Pj4+PiAgICAgLyoqCj4gPj4+Pj4g ZGlmZiAtLWdpdCBhL2tlcm5lbC9jZ3JvdXAvZHJtLmMgYi9rZXJuZWwvY2dyb3VwL2RybS5jCj4g Pj4+Pj4gaW5kZXggMGVhN2YwNjE5ZTI1Li4xOGM0MzY4ZTJjMjkgMTAwNjQ0Cj4gPj4+Pj4gLS0t IGEva2VybmVsL2Nncm91cC9kcm0uYwo+ID4+Pj4+ICsrKyBiL2tlcm5lbC9jZ3JvdXAvZHJtLmMK PiA+Pj4+PiBAQCAtOSw2ICs5LDcgQEAKPiA+Pj4+PiAgICAgI2luY2x1ZGUgPGxpbnV4L2Nncm91 cF9kcm0uaD4KPiA+Pj4+PiAgICAgI2luY2x1ZGUgPGxpbnV4L2t0aW1lLmg+Cj4gPj4+Pj4gICAg ICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiA+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L2JpdG1h cC5oPgo+ID4+Pj4+ICAgICAjaW5jbHVkZSA8ZHJtL2RybV9maWxlLmg+Cj4gPj4+Pj4gICAgICNp bmNsdWRlIDxkcm0vZHJtX2Rydi5oPgo+ID4+Pj4+ICAgICAjaW5jbHVkZSA8ZHJtL3R0bS90dG1f Ym9fYXBpLmg+Cj4gPj4+Pj4gQEAgLTUyLDYgKzUzLDkgQEAgc3RhdGljIGNoYXIgY29uc3QgKm1l bV9id19hdHRyX25hbWVzW10gPSB7Cj4gPj4+Pj4gICAgICNkZWZpbmUgTUVNX0JXX0xJTUlUU19O QU1FX0FWRyAiYXZnX2J5dGVzX3Blcl91cyIKPiA+Pj4+PiAgICAgI2RlZmluZSBNRU1fQldfTElN SVRTX05BTUVfQlVSU1QgImJ5dGVzX2luX3BlcmlvZCIKPiA+Pj4+PiAgICAgCj4gPj4+Pj4gKyNk ZWZpbmUgTEdQVV9MSU1JVFNfTkFNRV9MSVNUICJsaXN0Igo+ID4+Pj4+ICsjZGVmaW5lIExHUFVf TElNSVRTX05BTUVfQ09VTlQgImNvdW50Igo+ID4+Pj4+ICsKPiA+Pj4+PiAgICAgc3RhdGljIHN0 cnVjdCBkcm1jZyAqcm9vdF9kcm1jZyBfX3JlYWRfbW9zdGx5Owo+ID4+Pj4+ICAgICAKPiA+Pj4+ PiAgICAgc3RhdGljIGludCBkcm1jZ19jc3NfZnJlZV9mbihpbnQgaWQsIHZvaWQgKnB0ciwgdm9p ZCAqZGF0YSkKPiA+Pj4+PiBAQCAtMTE1LDYgKzExOSwxMCBAQCBzdGF0aWMgaW5saW5lIGludCBp bml0X2RybWNnX3NpbmdsZShzdHJ1Y3QgZHJtY2cgKmRybWNnLCBzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ID4+Pj4+ICAgICAJZm9yIChpID0gMDsgaSA8PSBUVE1fUExfUFJJVjsgaSsrKQo+ID4+ Pj4+ICAgICAJCWRkci0+bWVtX2hpZ2hzW2ldID0gZGV2LT5kcm1jZ19wcm9wcy5tZW1faGlnaHNf ZGVmYXVsdFtpXTsKPiA+Pj4+PiAgICAgCj4gPj4+Pj4gKwliaXRtYXBfY29weShkZHItPmxncHVf YWxsb2NhdGVkLCBkZXYtPmRybWNnX3Byb3BzLmxncHVfc2xvdHMsCj4gPj4+Pj4gKwkJCU1BWF9E Uk1DR19MR1BVX0NBUEFDSVRZKTsKPiA+Pj4+PiArCWRkci0+bGdwdV91c2VkID0gYml0bWFwX3dl aWdodChkZHItPmxncHVfYWxsb2NhdGVkLCBNQVhfRFJNQ0dfTEdQVV9DQVBBQ0lUWSk7Cj4gPj4+ Pj4gKwo+ID4+Pj4+ICAgICAJbXV0ZXhfdW5sb2NrKCZkZXYtPmRybWNnX211dGV4KTsKPiA+Pj4+ PiAgICAgCXJldHVybiAwOwo+ID4+Pj4+ICAgICB9Cj4gPj4+Pj4gQEAgLTI4MCw2ICsyODgsMTQg QEAgc3RhdGljIHZvaWQgZHJtY2dfcHJpbnRfbGltaXRzKHN0cnVjdCBkcm1jZ19kZXZpY2VfcmVz b3VyY2UgKmRkciwKPiA+Pj4+PiAgICAgCQkJCU1FTV9CV19MSU1JVFNfTkFNRV9BVkcsCj4gPj4+ Pj4gICAgIAkJCQlkZHItPm1lbV9id19saW1pdHNfYXZnX2J5dGVzX3Blcl91cyk7Cj4gPj4+Pj4g ICAgIAkJYnJlYWs7Cj4gPj4+Pj4gKwljYXNlIERSTUNHX1RZUEVfTEdQVToKPiA+Pj4+PiArCQlz ZXFfcHJpbnRmKHNmLCAiJXM9JWxsZCAlcz0lKnBibFxuIiwKPiA+Pj4+PiArCQkJCUxHUFVfTElN SVRTX05BTUVfQ09VTlQsCj4gPj4+Pj4gKwkJCQlkZHItPmxncHVfdXNlZCwKPiA+Pj4+PiArCQkJ CUxHUFVfTElNSVRTX05BTUVfTElTVCwKPiA+Pj4+PiArCQkJCWRldi0+ZHJtY2dfcHJvcHMubGdw dV9jYXBhY2l0eSwKPiA+Pj4+PiArCQkJCWRkci0+bGdwdV9hbGxvY2F0ZWQpOwo+ID4+Pj4+ICsJ CWJyZWFrOwo+ID4+Pj4+ICAgICAJZGVmYXVsdDoKPiA+Pj4+PiAgICAgCQlzZXFfcHV0cyhzZiwg IlxuIik7Cj4gPj4+Pj4gICAgIAkJYnJlYWs7Cj4gPj4+Pj4gQEAgLTMxNCw2ICszMzAsMTUgQEAg c3RhdGljIHZvaWQgZHJtY2dfcHJpbnRfZGVmYXVsdChzdHJ1Y3QgZHJtY2dfcHJvcHMgKnByb3Bz LAo+ID4+Pj4+ICAgICAJCQkJTUVNX0JXX0xJTUlUU19OQU1FX0FWRywKPiA+Pj4+PiAgICAgCQkJ CXByb3BzLT5tZW1fYndfYXZnX2J5dGVzX3Blcl91c19kZWZhdWx0KTsKPiA+Pj4+PiAgICAgCQli cmVhazsKPiA+Pj4+PiArCWNhc2UgRFJNQ0dfVFlQRV9MR1BVOgo+ID4+Pj4+ICsJCXNlcV9wcmlu dGYoc2YsICIlcz0lZCAlcz0lKnBibFxuIiwKPiA+Pj4+PiArCQkJCUxHUFVfTElNSVRTX05BTUVf Q09VTlQsCj4gPj4+Pj4gKwkJCQliaXRtYXBfd2VpZ2h0KHByb3BzLT5sZ3B1X3Nsb3RzLAo+ID4+ Pj4+ICsJCQkJCXByb3BzLT5sZ3B1X2NhcGFjaXR5KSwKPiA+Pj4+PiArCQkJCUxHUFVfTElNSVRT X05BTUVfTElTVCwKPiA+Pj4+PiArCQkJCXByb3BzLT5sZ3B1X2NhcGFjaXR5LAo+ID4+Pj4+ICsJ CQkJcHJvcHMtPmxncHVfc2xvdHMpOwo+ID4+Pj4+ICsJCWJyZWFrOwo+ID4+Pj4+ICAgICAJZGVm YXVsdDoKPiA+Pj4+PiAgICAgCQlzZXFfcHV0cyhzZiwgIlxuIik7Cj4gPj4+Pj4gICAgIAkJYnJl YWs7Cj4gPj4+Pj4gQEAgLTQwNyw5ICs0MzIsMjEgQEAgc3RhdGljIHZvaWQgZHJtY2dfdmFsdWVf YXBwbHkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgczY0ICpkc3QsIHM2NCB2YWwpCj4gPj4+Pj4g ICAgIAltdXRleF91bmxvY2soJmRldi0+ZHJtY2dfbXV0ZXgpOwo+ID4+Pj4+ICAgICB9Cj4gPj4+ Pj4gICAgIAo+ID4+Pj4+ICtzdGF0aWMgdm9pZCBkcm1jZ19sZ3B1X3ZhbHVlc19hcHBseShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4+Pj4+ICsJCXN0cnVjdCBkcm1jZ19kZXZpY2VfcmVzb3Vy Y2UgKmRkciwgdW5zaWduZWQgbG9uZyAqdmFsKQo+ID4+Pj4+ICt7Cj4gPj4+Pj4gKwo+ID4+Pj4+ ICsJbXV0ZXhfbG9jaygmZGV2LT5kcm1jZ19tdXRleCk7Cj4gPj4+Pj4gKwliaXRtYXBfY29weShk ZHItPmxncHVfYWxsb2NhdGVkLCB2YWwsIE1BWF9EUk1DR19MR1BVX0NBUEFDSVRZKTsKPiA+Pj4+ PiArCWRkci0+bGdwdV91c2VkID0gYml0bWFwX3dlaWdodChkZHItPmxncHVfYWxsb2NhdGVkLCBN QVhfRFJNQ0dfTEdQVV9DQVBBQ0lUWSk7Cj4gPj4+Pj4gKwltdXRleF91bmxvY2soJmRldi0+ZHJt Y2dfbXV0ZXgpOwo+ID4+Pj4+ICt9Cj4gPj4+Pj4gKwo+ID4+Pj4+ICAgICBzdGF0aWMgdm9pZCBk cm1jZ19uZXN0ZWRfbGltaXRfcGFyc2Uoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLAo+ID4+ Pj4+ICAgICAJCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGNoYXIgKmF0dHJzKQo+ID4+Pj4+ICAg ICB7Cj4gPj4+Pj4gKwlERUNMQVJFX0JJVE1BUCh0bXBfYml0bWFwLCBNQVhfRFJNQ0dfTEdQVV9D QVBBQ0lUWSk7Cj4gPj4+Pj4gKwlERUNMQVJFX0JJVE1BUChjaGtfYml0bWFwLCBNQVhfRFJNQ0df TEdQVV9DQVBBQ0lUWSk7Cj4gPj4+Pj4gICAgIAllbnVtIGRybWNnX3Jlc190eXBlIHR5cGUgPQo+ ID4+Pj4+ICAgICAJCURSTUNHX0NURl9QUklWMlJFU1RZUEUob2ZfY2Z0KG9mKS0+cHJpdmF0ZSk7 Cj4gPj4+Pj4gICAgIAlzdHJ1Y3QgZHJtY2cgKmRybWNnID0gY3NzX3RvX2RybWNnKG9mX2Nzcyhv ZikpOwo+ID4+Pj4+IEBAIC01MDEsNiArNTM4LDgzIEBAIHN0YXRpYyB2b2lkIGRybWNnX25lc3Rl ZF9saW1pdF9wYXJzZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsCj4gPj4+Pj4gICAgIAkJ CQljb250aW51ZTsKPiA+Pj4+PiAgICAgCQkJfQo+ID4+Pj4+ICAgICAJCQlicmVhazsgLyogRFJN Q0dfVFlQRV9NRU0gKi8KPiA+Pj4+PiArCQljYXNlIERSTUNHX1RZUEVfTEdQVToKPiA+Pj4+PiAr CQkJaWYgKHN0cm5jbXAoc25hbWUsIExHUFVfTElNSVRTX05BTUVfTElTVCwgMjU2KSAmJgo+ID4+ Pj4+ICsJCQkJc3RybmNtcChzbmFtZSwgTEdQVV9MSU1JVFNfTkFNRV9DT1VOVCwgMjU2KSApCj4g Pj4+Pj4gKwkJCQljb250aW51ZTsKPiA+Pj4+PiArCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGlmICghc3RyY21wKCJtYXgiLCBzdmFsKSB8fAo+ID4+Pj4+ICsJCQkJCSFzdHJjbXAo ImRlZmF1bHQiLCBzdmFsKSkgewo+ID4+Pj4+ICsJCQkJaWYgKHBhcmVudCAhPSBOVUxMKQo+ID4+ Pj4+ICsJCQkJCWRybWNnX2xncHVfdmFsdWVzX2FwcGx5KGRldiwgZGRyLAo+ID4+Pj4+ICsJCQkJ CQlwYXJlbnQtPmRldl9yZXNvdXJjZXNbbWlub3JdLT4KPiA+Pj4+PiArCQkJCQkJbGdwdV9hbGxv Y2F0ZWQpOwo+ID4+Pj4+ICsJCQkJZWxzZQo+ID4+Pj4+ICsJCQkJCWRybWNnX2xncHVfdmFsdWVz X2FwcGx5KGRldiwgZGRyLAo+ID4+Pj4+ICsJCQkJCQlwcm9wcy0+bGdwdV9zbG90cyk7Cj4gPj4+ Pj4gKwo+ID4+Pj4+ICsJCQkJY29udGludWU7Cj4gPj4+Pj4gKwkJCX0KPiA+Pj4+PiArCj4gPj4+ Pj4gKwkJCWlmIChzdHJuY21wKHNuYW1lLCBMR1BVX0xJTUlUU19OQU1FX0NPVU5ULCAyNTYpID09 IDApIHsKPiA+Pj4+PiArCQkJCXBfbWF4ID0gcGFyZW50ID09IE5VTEwgPyBwcm9wcy0+bGdwdV9j YXBhY2l0eToKPiA+Pj4+PiArCQkJCQliaXRtYXBfd2VpZ2h0KAo+ID4+Pj4+ICsJCQkJCXBhcmVu dC0+ZGV2X3Jlc291cmNlc1ttaW5vcl0tPgo+ID4+Pj4+ICsJCQkJCWxncHVfYWxsb2NhdGVkLCBw cm9wcy0+bGdwdV9jYXBhY2l0eSk7Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsJCQkJcmMgPSBkcm1jZ19w cm9jZXNzX2xpbWl0X3M2NF92YWwoc3ZhbCwKPiA+Pj4+PiArCQkJCQlmYWxzZSwgcF9tYXgsIHBf bWF4LCAmdmFsKTsKPiA+Pj4+PiArCj4gPj4+Pj4gKwkJCQlpZiAocmMgfHwgdmFsIDwgMCkgewo+ ID4+Pj4+ICsJCQkJCWRybWNnX3ByX2NmdF9lcnIoZHJtY2csIHJjLCBjZnRfbmFtZSwKPiA+Pj4+ PiArCQkJCQkJCW1pbm9yKTsKPiA+Pj4+PiArCQkJCQljb250aW51ZTsKPiA+Pj4+PiArCQkJCX0K PiA+Pj4+PiArCj4gPj4+Pj4gKwkJCQliaXRtYXBfemVybyh0bXBfYml0bWFwLAo+ID4+Pj4+ICsJ CQkJCQlNQVhfRFJNQ0dfTEdQVV9DQVBBQ0lUWSk7Cj4gPj4+Pj4gKwkJCQliaXRtYXBfc2V0KHRt cF9iaXRtYXAsIDAsIHZhbCk7Cj4gPj4+Pj4gKwkJCX0KPiA+Pj4+PiArCj4gPj4+Pj4gKwkJCWlm IChzdHJuY21wKHNuYW1lLCBMR1BVX0xJTUlUU19OQU1FX0xJU1QsIDI1NikgPT0gMCkgewo+ID4+ Pj4+ICsJCQkJcmMgPSBiaXRtYXBfcGFyc2VsaXN0KHN2YWwsIHRtcF9iaXRtYXAsCj4gPj4+Pj4g KwkJCQkJCU1BWF9EUk1DR19MR1BVX0NBUEFDSVRZKTsKPiA+Pj4+PiArCj4gPj4+Pj4gKwkJCQlp ZiAocmMpIHsKPiA+Pj4+PiArCQkJCQlkcm1jZ19wcl9jZnRfZXJyKGRybWNnLCByYywgY2Z0X25h bWUsCj4gPj4+Pj4gKwkJCQkJCQltaW5vcik7Cj4gPj4+Pj4gKwkJCQkJY29udGludWU7Cj4gPj4+ Pj4gKwkJCQl9Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAJYml0 bWFwX2FuZG5vdChjaGtfYml0bWFwLCB0bXBfYml0bWFwLAo+ID4+Pj4+ICsJCQkJCXByb3BzLT5s Z3B1X3Nsb3RzLAo+ID4+Pj4+ICsJCQkJCU1BWF9EUk1DR19MR1BVX0NBUEFDSVRZKTsKPiA+Pj4+ PiArCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIAlpZiAoIWJpdG1hcF9lbXB0eShj aGtfYml0bWFwLAo+ID4+Pj4+ICsJCQkJCQlNQVhfRFJNQ0dfTEdQVV9DQVBBQ0lUWSkpIHsKPiA+ Pj4+PiArCQkJCQlkcm1jZ19wcl9jZnRfZXJyKGRybWNnLCAwLCBjZnRfbmFtZSwKPiA+Pj4+PiAr CQkJCQkJCW1pbm9yKTsKPiA+Pj4+PiArCQkJCQljb250aW51ZTsKPiA+Pj4+PiArCQkJCX0KPiA+ Pj4+PiArCQkJfQo+ID4+Pj4+ICsKPiA+Pj4+PiArCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChwYXJlbnQgIT0gTlVMTCkgewo+ID4+Pj4+ICsJCQkJYml0bWFwX2FuZChjaGtf Yml0bWFwLCB0bXBfYml0bWFwLAo+ID4+Pj4+ICsJCQkJcGFyZW50LT5kZXZfcmVzb3VyY2VzW21p bm9yXS0+bGdwdV9hbGxvY2F0ZWQsCj4gPj4+Pj4gKwkJCQlwcm9wcy0+bGdwdV9jYXBhY2l0eSk7 Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsJCQkJaWYgKGJpdG1hcF9lbXB0eShjaGtfYml0bWFwLAo+ID4+ Pj4+ICsJCQkJCQlwcm9wcy0+bGdwdV9jYXBhY2l0eSkpIHsKPiA+Pj4+PiArCQkJCQlkcm1jZ19w cl9jZnRfZXJyKGRybWNnLCAwLAo+ID4+Pj4+ICsJCQkJCQkJY2Z0X25hbWUsIG1pbm9yKTsKPiA+ Pj4+PiArCQkJCQljb250aW51ZTsKPiA+Pj4+PiArCQkJCX0KPiA+Pj4+PiArCQkJfQo+ID4+Pj4+ ICsKPiA+Pj4+PiArCQkJZHJtY2dfbGdwdV92YWx1ZXNfYXBwbHkoZGV2LCBkZHIsIHRtcF9iaXRt YXApOwo+ID4+Pj4+ICsKPiA+Pj4+PiArCQkJYnJlYWs7IC8qIERSTUNHX1RZUEVfTEdQVSAqLwo+ ID4+Pj4+ICAgICAJCWRlZmF1bHQ6Cj4gPj4+Pj4gICAgIAkJCWJyZWFrOwo+ID4+Pj4+ICAgICAJ CX0gLyogc3dpdGNoICh0eXBlKSAqLwo+ID4+Pj4+IEBAIC02MDYsNiArNzIwLDcgQEAgc3RhdGlj IHNzaXplX3QgZHJtY2dfbGltaXRfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBj aGFyICpidWYsCj4gPj4+Pj4gICAgIAkJCWJyZWFrOwo+ID4+Pj4+ICAgICAJCWNhc2UgRFJNQ0df VFlQRV9CQU5EV0lEVEg6Cj4gPj4+Pj4gICAgIAkJY2FzZSBEUk1DR19UWVBFX01FTToKPiA+Pj4+ PiArCQljYXNlIERSTUNHX1RZUEVfTEdQVToKPiA+Pj4+PiAgICAgCQkJZHJtY2dfbmVzdGVkX2xp bWl0X3BhcnNlKG9mLCBkbS0+ZGV2LCBzYXR0cik7Cj4gPj4+Pj4gICAgIAkJCWJyZWFrOwo+ID4+ Pj4+ICAgICAJCWRlZmF1bHQ6Cj4gPj4+Pj4gQEAgLTczMSw2ICs4NDYsMjAgQEAgc3RydWN0IGNm dHlwZSBmaWxlc1tdID0gewo+ID4+Pj4+ICAgICAJCS5wcml2YXRlID0gRFJNQ0dfQ1RGX1BSSVYo RFJNQ0dfVFlQRV9CQU5EV0lEVEgsCj4gPj4+Pj4gICAgIAkJCQkJCURSTUNHX0ZUWVBFX0RFRkFV TFQpLAo+ID4+Pj4+ICAgICAJfSwKPiA+Pj4+PiArCXsKPiA+Pj4+PiArCQkubmFtZSA9ICJsZ3B1 IiwKPiA+Pj4+PiArCQkuc2VxX3Nob3cgPSBkcm1jZ19zZXFfc2hvdywKPiA+Pj4+PiArCQkud3Jp dGUgPSBkcm1jZ19saW1pdF93cml0ZSwKPiA+Pj4+PiArCQkucHJpdmF0ZSA9IERSTUNHX0NURl9Q UklWKERSTUNHX1RZUEVfTEdQVSwKPiA+Pj4+PiArCQkJCQkJRFJNQ0dfRlRZUEVfTElNSVQpLAo+ ID4+Pj4+ICsJfSwKPiA+Pj4+PiArCXsKPiA+Pj4+PiArCQkubmFtZSA9ICJsZ3B1LmRlZmF1bHQi LAo+ID4+Pj4+ICsJCS5zZXFfc2hvdyA9IGRybWNnX3NlcV9zaG93LAo+ID4+Pj4+ICsJCS5mbGFn cyA9IENGVFlQRV9PTkxZX09OX1JPT1QsCj4gPj4+Pj4gKwkJLnByaXZhdGUgPSBEUk1DR19DVEZf UFJJVihEUk1DR19UWVBFX0xHUFUsCj4gPj4+Pj4gKwkJCQkJCURSTUNHX0ZUWVBFX0RFRkFVTFQp LAo+ID4+Pj4+ICsJfSwKPiA+Pj4+PiAgICAgCXsgfQkvKiB0ZXJtaW5hdGUgKi8KPiA+Pj4+PiAg ICAgfTsKPiA+Pj4+PiAgICAgCj4gPj4+Pj4gQEAgLTc0NCw2ICs4NzMsMTAgQEAgc3RydWN0IGNn cm91cF9zdWJzeXMgZHJtX2NncnBfc3Vic3lzID0gewo+ID4+Pj4+ICAgICAKPiA+Pj4+PiAgICAg c3RhdGljIGlubGluZSB2b2lkIGRybWNnX3VwZGF0ZV9jZ190cmVlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gPj4+Pj4gICAgIHsKPiA+Pj4+PiArICAgICAgICBiaXRtYXBfemVybyhkZXYtPmRy bWNnX3Byb3BzLmxncHVfc2xvdHMsIE1BWF9EUk1DR19MR1BVX0NBUEFDSVRZKTsKPiA+Pj4+PiAr ICAgICAgICBiaXRtYXBfZmlsbChkZXYtPmRybWNnX3Byb3BzLmxncHVfc2xvdHMsCj4gPj4+Pj4g KwkJCWRldi0+ZHJtY2dfcHJvcHMubGdwdV9jYXBhY2l0eSk7Cj4gPj4+Pj4gKwo+ID4+Pj4+ICAg ICAJLyogaW5pdCBjZ3JvdXBzIGNyZWF0ZWQgYmVmb3JlIHJlZ2lzdHJhdGlvbiAoaS5lLiByb290 IGNncm91cCkgKi8KPiA+Pj4+PiAgICAgCWlmIChyb290X2RybWNnICE9IE5VTEwpIHsKPiA+Pj4+ PiAgICAgCQlzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqcG9zOwo+ID4+Pj4+IEBAIC04MDAs NiArOTMzLDggQEAgdm9pZCBkcm1jZ19kZXZpY2VfZWFybHlfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ID4+Pj4+ICAgICAJZm9yIChpID0gMDsgaSA8PSBUVE1fUExfUFJJVjsgaSsrKQo+ ID4+Pj4+ICAgICAJCWRldi0+ZHJtY2dfcHJvcHMubWVtX2hpZ2hzX2RlZmF1bHRbaV0gPSBTNjRf TUFYOwo+ID4+Pj4+ICAgICAKPiA+Pj4+PiArCWRldi0+ZHJtY2dfcHJvcHMubGdwdV9jYXBhY2l0 eSA9IE1BWF9EUk1DR19MR1BVX0NBUEFDSVRZOwo+ID4+Pj4+ICsKPiA+Pj4+PiAgICAgCWRybWNn X3VwZGF0ZV9jZ190cmVlKGRldik7Cj4gPj4+Pj4gICAgIH0KPiA+Pj4+PiAgICAgRVhQT1JUX1NZ TUJPTChkcm1jZ19kZXZpY2VfZWFybHlfaW5pdCk7CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2Fy ZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5n IGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4