From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: devm actions and hw clenaup (was Re: [PATCH 01/11] drm: Add devm_drm_dev_init/register) Date: Thu, 24 Jan 2019 11:43:12 +0100 Message-ID: <20190124104312.GT3271@phenom.ffwll.local> References: <20190120114318.49199-1-noralf@tronnes.org> <20190120114318.49199-2-noralf@tronnes.org> <20190121091014.GK3271@phenom.ffwll.local> <20190121095549.GR3271@phenom.ffwll.local> <20190122093213.GU3271@phenom.ffwll.local> <3c039a28-f255-4520-5e20-4f7f9caa4f46@tronnes.org> <723b2fcf-5dbc-dd4b-8e3c-daa88bad98fe@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id EE2656E2D6 for ; Thu, 24 Jan 2019 10:43:16 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id h15so4180087edb.4 for ; Thu, 24 Jan 2019 02:43:16 -0800 (PST) Content-Disposition: inline In-Reply-To: <723b2fcf-5dbc-dd4b-8e3c-daa88bad98fe@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: Greg KH , "Rafael J. Wysocki" , dri-devel , David Lechner List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKYW4gMjMsIDIwMTkgYXQgMTE6NTQ6MDdBTSArMDEwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IAo+IAo+IERlbiAyMi4wMS4yMDE5IDIwLjMwLCBza3JldiBEYW5pZWwgVmV0dGVy Ogo+ID4gT24gVHVlLCBKYW4gMjIsIDIwMTkgYXQgODowNyBQTSBOb3JhbGYgVHLDuG5uZXMgPG5v cmFsZkB0cm9ubmVzLm9yZz4gd3JvdGU6Cj4gPj4KPiA+Pgo+ID4+Cj4gPj4gRGVuIDIyLjAxLjIw MTkgMTAuMzIsIHNrcmV2IERhbmllbCBWZXR0ZXI6Cj4gPj4+IE9uIE1vbiwgSmFuIDIxLCAyMDE5 IGF0IDAxOjIxOjQ2UE0gKzAxMDAsIE5vcmFsZiBUcsO4bm5lcyB3cm90ZToKPiA+Pj4+Cj4gPj4+ Pgo+ID4+Pj4gRGVuIDIxLjAxLjIwMTkgMTAuNTUsIHNrcmV2IERhbmllbCBWZXR0ZXI6Cj4gPj4+ Pj4gT24gTW9uLCBKYW4gMjEsIDIwMTkgYXQgMTA6MTA6MTRBTSArMDEwMCwgRGFuaWVsIFZldHRl ciB3cm90ZToKPiA+Pj4+Pj4gT24gU3VuLCBKYW4gMjAsIDIwMTkgYXQgMTI6NDM6MDhQTSArMDEw MCwgTm9yYWxmIFRyw7hubmVzIHdyb3RlOgo+ID4+Pj4+Pj4gVGhpcyBhZGRzIHJlc291cmNlIG1h bmFnZWQgKGRldnJlcykgdmVyc2lvbnMgb2YgZHJtX2Rldl9pbml0KCkgYW5kCj4gPj4+Pj4+PiBk cm1fZGV2X3JlZ2lzdGVyKCkuCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gQWxzbyBhZGRlZCBpcyBkZXZt X2RybV9kZXZfcmVnaXN0ZXJfd2l0aF9mYmRldigpIHdoaWNoIHNldHMgdXAgZ2VuZXJpYwo+ID4+ Pj4+Pj4gZmJkZXYgZW11bGF0aW9uIGFzIHdlbGwuCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gZGV2bV9k cm1fZGV2X3JlZ2lzdGVyKCkgaXNuJ3QgZXhwb3J0ZWQgc2luY2UgdGhlcmUgYXJlIG5vIHVzZXJz Lgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IE5vcmFsZiBUcsO4bm5lcyA8bm9y YWxmQHRyb25uZXMub3JnPgo+ID4+Pj4+Pgo+ID4+Pj4KPiA+Pj4+IDxzbmlwPgo+ID4+Pj4KPiA+ Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9kcnYuYwo+ID4+Pj4+Pj4gaW5kZXggMzgxNTgxYjAxZDQ4Li4xMjEyOTc3MmJl NDUgMTAwNjQ0Cj4gPj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCj4gPj4+ Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCj4gPj4+Pj4+PiBAQCAtMzYsNiAr MzYsNyBAQAo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+ICAjaW5jbHVkZSA8ZHJtL2RybV9jbGllbnQuaD4K PiA+Pj4+Pj4+ICAjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPiA+Pj4+Pj4+ICsjaW5jbHVkZSA8 ZHJtL2RybV9mYl9oZWxwZXIuaD4KPiA+Pj4+Pj4+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiA+ Pj4+Pj4+Cj4gPj4+Pj4+PiAgI2luY2x1ZGUgImRybV9jcnRjX2ludGVybmFsLmgiCj4gPj4+Pj4+ PiBAQCAtODcxLDYgKzg3MiwxMTEgQEAgdm9pZCBkcm1fZGV2X3VucmVnaXN0ZXIoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiA+Pj4+Pj4+ICB9Cj4gPj4+Pj4+PiAgRVhQT1JUX1NZTUJPTChkcm1f ZGV2X3VucmVnaXN0ZXIpOwo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+ICtzdGF0aWMgdm9pZCBkZXZtX2Ry bV9kZXZfaW5pdF9yZWxlYXNlKHZvaWQgKmRhdGEpCj4gPj4+Pj4+PiArewo+ID4+Pj4+Pj4gKyBk cm1fZGV2X3B1dChkYXRhKTsKPiA+Pj4+Pgo+ID4+Pj4+IFdlIG5lZWQgZHJtX2Rldl91bnBsdWco KSBoZXJlLCBvciB0aGlzIGlzbid0IHNhZmUuCj4gPj4+Pgo+ID4+Pj4gVGhpcyBmdW5jdGlvbiBp cyBvbmx5IHVzZWQgdG8gY292ZXIgdGhlIGVycm9yIHBhdGggaWYgcHJvYmUgZmFpbHMgYmVmb3Jl Cj4gPj4+PiBkZXZtX2RybV9kZXZfcmVnaXN0ZXIoKSBpcyBjYWxsZWQuIGRldm1fZHJtX2Rldl9y ZWdpc3Rlcl9yZWxlYXNlKCkgaXMKPiA+Pj4+IHRoZSBvbmUgdGhhdCBjYWxscyB1bnBsdWcuIFRo ZXJlIGFyZSBjb21tZW50cyBhYm91dCB0aGlzIGluIHRoZSBmdW5jdGlvbnMuCj4gPj4+Cj4gPj4+ IEkgdGhpbmsgSSBnZXQgYSBwcml6ZSBmb3IgYmVpbmcgaWdub3JhbnQgYW5kIGJsaW5kIDotLwo+ ID4+Pgo+ID4+Pj4KPiA+Pj4+Pgo+ID4+Pj4+Pj4gK30KPiA+Pj4+Pj4+ICsKPiA+Pj4+Pj4+ICsv KioKPiA+Pj4+Pj4+ICsgKiBkZXZtX2RybV9kZXZfaW5pdCAtIFJlc291cmNlIG1hbmFnZWQgZHJt X2Rldl9pbml0KCkKPiA+Pj4+Pj4+ICsgKiBAcGFyZW50OiBQYXJlbnQgZGV2aWNlIG9iamVjdAo+ ID4+Pj4+Pj4gKyAqIEBkZXY6IERSTSBkZXZpY2UKPiA+Pj4+Pj4+ICsgKiBAZHJpdmVyOiBEUk0g ZHJpdmVyCj4gPj4+Pj4+PiArICoKPiA+Pj4+Pj4+ICsgKiBNYW5hZ2VkIGRybV9kZXZfaW5pdCgp LiBUaGUgRFJNIGRldmljZSBpbml0aWFsaXplZCB3aXRoIHRoaXMgZnVuY3Rpb24gaXMKPiA+Pj4+ Pj4+ICsgKiBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkIG9uIGRyaXZlciBkZXRhY2guIFlvdSBtdXN0 IHN1cHBseSBhCj4gPj4+Pj4KPiA+Pj4+PiBJIHRoaW5rIGEgYml0IG1vcmUgY2xhcml0eSBoZXJl IHdvdWxkIGJlIGdvb2Q6Cj4gPj4+Pj4KPiA+Pj4+PiAiLi4uIGF1dG9tYXRpY2FsbHkgcmVsZWFz ZWQgb24gZHJpdmVyIHVuYmluZCBieSBjYWxsaW5kIGRybV9kZXZfdW5wbHVnKCkuIgo+ID4+Pj4+ Cj4gPj4+Pj4+PiArICogJmRybV9kcml2ZXIucmVsZWFzZSBjYWxsYmFjayB0byBjb250cm9sIHRo ZSBmaW5hbGl6YXRpb24gZXhwbGljaXRseS4KPiA+Pj4+Pgo+ID4+Pj4+IEkgdGhpbmsgYSBsb3Vk IHdhcm5pbmcgZm9yIHRoZXNlIGlzIGluIG9yZGVyOgo+ID4+Pj4+Cj4gPj4+Pj4gIldBUk5JTkc6 Cj4gPj4+Pj4KPiA+Pj4+PiAiSW4gZ2VuZXJhbGx5IGl0IGlzIHVuc2FmZSB0byB1c2UgZGV2bSBm dW5jdGlvbnMgZm9yIGRybSBzdHJ1Y3R1cmVzCj4gPj4+Pj4gYmVjYXVzZSB0aGUgbGlmZXRpbWVz IG9mICZkcm1fZGV2aWNlIGFuZCB0aGUgdW5kZXJseWluZyAmZGV2aWNlIGRvIG5vdAo+ID4+Pj4+ IG1hdGNoLiBUaGlzIGhlcmUgd29ya3MgYmVjYXVzZSBpdCBkb2Vzbid0IGltbWVkaWF0ZWx5IGZy ZWUgYW55dGhpbmcsIGJ1dAo+ID4+Pj4+IG9ubHkgY2FsbHMgZHJtX2Rldl91bnBsdWcoKSwgd2hp Y2ggaW50ZXJuYWxseSBkZWNyZW1lbnRzIHRoZSAmZHJtX2RldmljZQo+ID4+Pj4+IHJlZmNvdW50 IHRocm91Z2ggZHJtX2Rldl9wdXQoKS4KPiA+Pj4+Pgo+ID4+Pj4+ICJBbGwgb3RoZXIgZHJtIHN0 cnVjdHVyZXMgbXVzdCBzdGlsbCBiZSBleHBsaWNpdGx5IHJlbGVhc2VkIGluIHRoZQo+ID4+Pj4+ ICZkcm1fZHJpdmVyLnJlbGVhc2UgY2FsbGJhY2suIgo+ID4+Pj4+Cj4gPj4+Pj4gV2hpbGUgdGhp bmtpbmcgYWJvdXQgdGhpcyBJIGp1c3QgcmVhbGl6ZWQgdGhhdCB3aXRoIHRoaXMgZGVzaWduIHdl IGhhdmUgbm8KPiA+Pj4+PiBnb29kIHBsYWNlIHRvIGNhbGwgZHJtX2F0b21pY19oZWxwZXJfc2h1 dGRvd24oKS4gV2hpY2ggd2UgbmVlZCB0bywgb3IgYWxsCj4gPj4+Pj4ga2luZHMgb2YgdGhpbmdz IHdpbGwgbGVhayBiYWRseSAoY29ubmVjdG9ycywgZmIsIC4uLiksIGJ1dCB0aGVyZSdzIG5vCj4g Pj4+Pj4gcGxhY2UgdG8gY2FsbCBpdDoKPiA+Pj4+PiAtIHVuYmluZCBpcyB0b28gZWFybHksIHNp bmNlIHdlIGhhdmVuJ3QgeWV0IGNhbGxlZCBkcm1fZGV2X3VucGx1ZywgYW5kIHRoZQo+ID4+Pj4+ ICAgZHJtX2Rldl91bnJlZ2lzdGVyIGluIHRoZXJlIG11c3QgYmUgY2FsbGVkIF9iZWZvcmVfIHdl IHN0YXJ0IHRvIHNodXQKPiA+Pj4+PiAgIGRvd24gYW55dGhpbmcuCj4gPj4+Pj4gLSBkcm1fZHJp dmVyLnJlbGVhc2UgaXMgd2F5IHRvbyBsYXRlLgo+ID4+Pj4+Cj4gPj4+Pj4gT2ZjIGZvciBhIHJl YWwgaG90dW5wbHVnIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gc2h1dHRpbmcgZG93biB0aGUgaHcgKGl0 J3MKPiA+Pj4+PiBhbHJlYWR5IGdvbmUpLCBidXQgZm9yIGEgZHJpdmVyIHVubG9hZC91bmJpbmQg aXQgd291bGQgYmUgbmljZSBpZiB0aGlzCj4gPj4+Pj4gaGFwcGVucyBhdXRvbWF0aWNhbGx5IGFu ZCBpbiB0aGUgcmlnaHQgb3JkZXIuCj4gPj4+Pj4KPiA+Pj4+PiBTbyBub3Qgc3VyZSB3aGF0IHRv IGRvIGhlcmUgcmVhbGx5Lgo+ID4+Pj4KPiA+Pj4+IEhvdyBhYm91dCB0aGlzIGNoYW5nZTogKGl0 IGJyZWFrcyB0aGUgcnVsZSBvZiBwdWxsaW5nIGhlbHBlcnMgaW50byB0aGUKPiA+Pj4+IGNvcmUs IHNvIG1heWJlIHdlIHNob3VsZCBwdXQgdGhlIGRldm1fIGZ1bmN0aW9ucyBpbnRvIHRoZSBzaW1w bGUgS01TCj4gPj4+PiBoZWxwZXIgaW5zdGVhZD8pCj4gPj4+Cj4gPj4+IFllYWggc21lbGxzIGEg Yml0IG11Y2ggbGlrZSBtaWRsYXllciAuLi4gV2hhdCB3b3VsZCB3b3JrIGlzIGhhdmluZyBhIHBp bGUKPiA+Pj4gbW9yZSBkZXZtXyBoZWxwZXIgZnVuY3Rpb25zLCBzbyB0aGF0IHdlIG9uaW9uLXVu d3JhcCBldmVyeXRoaW5nIGNvcnJlY3RseSwKPiA+Pj4gYW5kIGluIHRoZSByaWdodCBvcmRlci4g U286Cj4gPj4+Cj4gPj4+IC0gZGV2bV9kcm1fZGV2X2luaXQgKGFsd2F5cyBkb2VzIGEgZHJtX2Rl dl9wdXQoKSkKPiA+Pj4KPiA+Pj4gLSBkZXZtX2RybV9wb2xsX2VuYWJsZSAoc2h1dHMgZG93biB0 aGUgcG9sbCBoZWxwZXIgd2l0aCBhIGRldm0gYWN0aW9uKQo+ID4+Pgo+ID4+PiAtIGRldm1fZHJt X21vZGVfY29uZmlnX3Jlc2V0IChkb2VzIGFuIGF0b21pY19oZWxwZXJfc2h1dGRvd24oKSBhcyBp dCdzIGNsZWFudXAgYWN0aW9uKQo+ID4+Pgo+ID4+PiAtIGRldm1fZHJtX2Rldl9yZWdpc3RlciAo Z3JhYnMgYW4gYWRkaXRpb25hbCBkcm1fZGV2X2dldCgpIHJlZmVyZW5jZSBzbyBpdAo+ID4+PiAg IGNhbiBjYWxsIGRybV9kZXZfdW5wbHVnKCkgdW5jb25kaXRpb25hbGx5KS4KPiA+Pj4KPiA+Pgo+ ID4+IEJlYXV0aWZ1bCEgSSByZWFsbHkgbGlrZSB0aGlzLCBpdCdzIHZlcnkgZmxleGlibGUuCj4g Pj4KPiA+PiBXaGVyZSBzaG91bGQgZGV2bV9kcm1fbW9kZV9jb25maWdfcmVzZXQoKSBsaXZlPyBJ dCB3aWxsIHB1bGwgaW4gdGhlCj4gPj4gYXRvbWljIGhlbHBlci4uLgo+ID4gCj4gPiBJIHRoaW5r IGEgbmV3IGRybV9kZXZtLmMgaGVscGVyIHdvdWxkIGJlIG5pY2UgZm9yIGFsbCB0aGlzIHN0dWZm Lgo+ID4gRXNwZWNpYWxseSBzaW5jZSB5b3UgY2FuJ3QgZnJlZWx5IG1peCBkZXZtLWJhc2VkIHNl dHVwL2NsZWFudXAgd2l0aAo+ID4gbm9ybWFsIGNsZWFudXAgSSB0aGluayBpdCdkIGJlIGdvb2Qg dG8gaGF2ZSBpdCBhbGwgdG9nZXRoZXIgaW4gb25lCj4gPiBwbGFjZS4gQW5kIHBlcmhhcHMgZXZl biBhIGNvZGUgZXhhbXBsZSBpbiB0aGUgRE9DOiBvdmVydmlldy4KPiA+IAo+ID4+PiBXZSdkIG5l ZWQgdG8gbWFrZSBzdXJlIHNvbWUgb2YgdGhlIGNsZWFudXAgYWN0aW9ucyBkdHJ0IHdoZW4gdGhl IGRldmljZSBpcwo+ID4+PiBnb25lLCBidXQgSSB0aGluayB3ZSBjYW4gYWNoaWV2ZSB0aGF0IGJ5 IGxpYmVyYWxseSBzcHJpbmtsaW5nCj4gPj4+IGRybV9kZXZfZW50ZXIvZXhpdCBvdmVyIHRoZW0s IGUuZy4gdGhlIHRoZSBjbGVhbnVwIGFjdGlvbiBmb3IKPiA+Pj4gZHJtX21vZGVfY29uZmlnX3Jl c2V0IHdvdWxkIGJlOgo+ID4+Pgo+ID4+PiB7Cj4gPj4+ICAgICAgIGlmIChkcm1fZGV2X2VudGVy KCkpCj4gPj4+ICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4+Pgo+ID4+PiAgICAgICBkcm1fYXRv bWljX2hlbHBlcl9zaHV0ZG93bigpOwo+ID4+Pgo+ID4+PiAgICAgICBkcm1fZGV2X2V4aXQoKTsK PiA+Pj4gfQo+ID4+Pgo+ID4+Cj4gPj4gZHJtX2Rldl9lbnRlcigpIGNhbiBvbmx5IGJlIHVzZWQg dG8gY2hlY2sgd2hldGhlciB0aGUgZHJtX2RldmljZSBpcwo+ID4+IHJlZ2lzdGVyZWQgb3Igbm90 LCBpdCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIHBhcmVudAo+ ID4+IGRldmljZS4KPiA+Pgo+ID4+IEFsbCB3ZSBrbm93IGlzIHRoYXQgdGhlIGRldmljZSBpcyBi ZWluZyB1bmJvdW5kIGZyb20gdGhlIGRyaXZlciwgd2UKPiA+PiBkb24ndCBrbm93IGlmIGl0J3Mg dGhlIGRldmljZSB0aGF0J3MgYmVpbmcgcmVtb3ZlZCBvciBpZiBpdCdzIHRoZSBkcml2ZXIKPiA+ PiB0aGF0J3MgdW5yZWdpc3RlcmVkLgo+ID4gCj4gPiBZb3UncmUgcmlnaHQsIGJvdGggcGF0aHMg d2lsbCBoYXZlIGNhbGxlZCBkcm1fZGV2X3VucGx1ZyBieSB0aGVuLgo+ID4gU2lsbHkgbWUuIEkg cmVhbGx5IGxpa2VkIG15IGlkZWEgOi0pCj4gPiAKPiA+PiBJIGhhdmUgbG9va2VkIGF0IHRoZSB2 YXJpb3VzIGNhbGwgY2hhaW5zOgo+ID4+Cj4gPj4gZHJpdmVyX3VucmVnaXN0ZXIgLT4KPiA+PiAg ICAgYnVzX3JlbW92ZV9kcml2ZXIgLT4KPiA+PiAgICAgICAgIGRyaXZlcl9kZXRhY2ggLT4KPiA+ PiAgICAgICAgICAgICBkZXZpY2VfcmVsZWFzZV9kcml2ZXJfaW50ZXJuYWwKPiA+Pgo+ID4+IGRl dmljZV91bnJlZ2lzdGVyIC0+Cj4gPj4gICAgIGRldmljZV9kZWwgLT4KPiA+PiAgICAgICAgIGJ1 c19yZW1vdmVfZGV2aWNlIC0+Cj4gPj4gICAgICAgICAgICAgZGV2aWNlX3JlbGVhc2VfZHJpdmVy IC0+Cj4gPj4gICAgICAgICAgICAgICAgIGRldmljZV9yZWxlYXNlX2RyaXZlcl9pbnRlcm5hbAo+ ID4+Cj4gPj4gc3lzZnM6IHVuYmluZF9zdG9yZSAtPgo+ID4+ICAgICBkZXZpY2VfcmVsZWFzZV9k cml2ZXIgLT4KPiA+PiAgICAgICAgIGRldmljZV9yZWxlYXNlX2RyaXZlcl9pbnRlcm5hbAo+ID4+ Cj4gPj4gVGhlIG9ubHkgd2F5IEkndmUgZm91bmQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRo ZXNlIGluIGEgY2xlYW51cAo+ID4+IGFjdGlvbiBpcyB0aGF0IGRldmljZV9kZWwoKSB1c2VzIHRo ZSBidXMgbm90aWZpZXIgdG8gc2lnbmFsCj4gPj4gQlVTX05PVElGWV9ERUxfREVWSUNFIGJlZm9y ZSBjYWxsaW5nIGJ1c19yZW1vdmVfZGV2aWNlKCkuIFN1Y2ggYQo+ID4+IG5vdGlmaWVyIGNvdWxk IGJlIHVzZWQgdG8gc2V0IGEgZHJtX2RldmljZS0+cGFyZW50X3JlbW92ZWQgZmxhZy4KPiA+IAo+ ID4gSG0sIHRoaXMgbWlnaHQgdXBzZXQgR3JlZyBLSCdzIGNvZGUgdGFzdGUgLi4uIG1heWJlIHRo ZXJlJ3MgYSBiZXR0ZXIKPiA+IHdheSB0byBkbyB0aGlzLCBidXQgYmVzdCB0byBwcm90b3R5cGUg YSBwYXRjaCB3aXRoIHRoaXMsIHNlbmQgaXQgdG8KPiA+IGhpbSBhbmQgYXNrIGhvdyB0byA6LSkK PiA+IAo+IAo+IEknbGwgbGVhdmUgdGhpcyB0byB0aGUgb25lIHRoYXQgbmVlZHMgaXQuIFRoZSB0 aW55ZHJtIGRyaXZlcnMgZG9lc24ndAo+IG5lZWQgdG8gdG91Y2ggaHcgYWZ0ZXIgRFJNIHVucmVn aXN0ZXIuCj4gCj4gPj4gV2h5IGlzIGl0IG5lY2Vzc2FyeSB0byBjYWxsIGRybV9hdG9taWNfaGVs cGVyX3NodXRkb3duKCkgaGVyZT8gRG9lc24ndAo+ID4+IGV2ZXJ5dGhpbmcgZ2V0IGRpc2FibGVk IHdoZW4gdXNlcnNwYWNlIGNsb3Nlcz8gSXQgZG9lcyBpbiBteSB0aW55ZHJtCj4gPj4gd29ybGQg Oi0pCj4gPiAKPiA+IElpcmMgZmJkZXYvZmJjb24gY2FuIHJlc3VsdCBpbiBsZWFrcyAuLi4gYXQg bGVhc3Qgd2UndmUgaGFkIHBhdGNoZXMKPiA+IHdoZXJlIGRyaXZlcnMgbGVha2VkIGRybV9jb25u ZWN0b3IgYW5kIGRybV9mcmFtZWJ1ZmZlciBvYmplY3RzLCBhbmQKPiA+IHRoZXkndmUgYmVlbiBm aXhlZCBieSBjYWxsaW5nIGRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKCkgaW4gdGhlCj4gPiB1 bmxvYWQgcGF0aC4gTWF5YmUgdGhpcyBpcyBjYXJnby1jdWx0aW5nLCBidXQgaXQgZ29lcyB3YXkg YmFjayB0bwo+ID4gcHJlLWF0b21pYywgd2hlcmUgZHJpdmVycyBjYWxsZWQgZHJtX2hlbHBlcl9m b3JjZV9kaXNhYmxlX2FsbCgpLgo+ID4gCj4gPiBJZiB5b3UgdHJ5IHRvIG1vdmUgdGhlIGZiY29u IHRvIHlvdXIgdGlueWRybSBkcml2ZXJzIChjb24yZmIgaXMKPiA+IGFwcGFyZW50bHkgdGhlIGNt ZGxpbmUgdG9vbCB5b3UgbmVlZCwgbmV2ZXIgdHJpZWQgaXQsIEkgb25seSBzd2l0Y2gKPiA+IHRo ZSBrZXJuZWwncyBjb25zb2xlIGJldHdlZW4gZmJjb24gYW5kIGR1bW15Y29uIGFuZCBiYWNrLCBu b3Qgd2hhdAo+ID4gZmJjb24gZHJpdmVycyBpdHNlbGYpLCB0aGVuIEkgdGhpbmsgeW91IHNob3Vs ZCBiZSBhYmxlIHRvIHJlcHJvZHVjZS4KPiA+IEFuZCBtYXliZSB5b3UgaGF2ZSBhIGJldHRlciBp ZGVhIGhvdyB0byBkZWFsIHdpdGggdGhpcyBhbGwuCj4gPiAKPiA+IE5vdGUgYWxzbyB0aGF0IHRo ZXJlJ3MgYmVlbiBwcm9wb3NhbHMgZmxvYXRpbmcgYXJvdW5kIHRvIG9ubHkgY2xvc2UgYW4KPiA+ IGRybV9mcmFtZWJ1ZmZlciwgbm90IGFsc28gcmVtb3ZlIGl0IChsaWtlIHRoZSBjdXJyZW50IFJN RkIgaW9jdGwKPiA+IGRvZXMpLCB3aXRoIHRoYXQgY2xvc2luZyB1c2Vyc3BhY2Ugd291bGQgbm90 IG5lY2Vzc2FyaWx5IGxlYWQgdG8gYQo+ID4gZnVsbCBjbGVhbnVwLgo+ID4gCj4gPiBBbm90aGVy IHRoaW5nICh3aGljaCBkb2Vzbid0IGFwcGx5IHRvIGRybV9zaW1wbGVfZGlzcGxheV9waXBlIGRy aXZlcnMpCj4gPiBpcyBpZiB5b3UgaGF2ZSB0aGUgZGlzcGxheSBvbiwgYnV0IG5vIHBsYW5lcyBz aG93aW5nIChpLmUuIGFsbCBibGFjaykuCj4gPiBUaGVuIGFsbCB0aGUgZmJzIHdpbGwgYmUgY2xl YW5lZCB1cCwgYnV0IGRybV9jb25uZWN0b3Igd2lsbCBiZQo+ID4gbGVha2luZy4gVGhhdCdzIGEg Y2FzZSB3aGVyZSB5b3UgbmVlZCBkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bigpCj4gPiBldmVu IGlmIGZiY29uL2ZiZGV2IGlzbid0IGV2ZW4gZW5hYmxlZC4KPiA+IAo+IAo+IE9rLCB0aGlzIG1l YW5zIHRoYXQgSSBkb24ndCBuZWVkIHRvIGNhbGwgZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24o KSBpbgo+IHRpbnlkcm0uIERSTSB1c2Vyc3BhY2UgZGlzYWJsZXMgdGhlIHBpcGUgb24gY2xvc2Ug YW5kIHRoZSBnZW5lcmljIGZiZGV2Cj4gZW11bGF0aW9uIGFsc28gcmVsZWFzZXMgZXZlcnl0aGlu Zy4KPiBFdmVuIHNvLCBtYXliZSBJIHNob3VsZCB1c2UgZGV2bV9kcm1fbW9kZV9jb25maWdfcmVz ZXQoKSBhZnRlciBhbGwgdG8KPiBrZWVwIGRyaXZlcnMgdW5pZm9ybSwgdG8gYXZvaWQgY29uZnVz aW9uOiB3aHkgZG9lc24ndCBoZSB1c2UgaXQ/CgpIbSBtYXliZSB0aGVyZSBpcyBhbiBvZmZpY2lh bCB3YXkgdG8gc29sdmUgdGhpcywgcHVsbGluZyBpbiBHcmVnK1JhZmFlbC4KClN1cGVyIHNob3J0 IHN1bW1hcnk6IFdlIHdhbnQgdG8gc3RhcnQgdXNpbmcgZGV2bSBhY3Rpb25zIHRvIGNsZWFuIHVw IGRybQpkcml2ZXJzLiBIZXJlJ3MgdGhlIHByb2JsZW06Ci0gRm9yIGEgZHJpdmVyIHVubG9hZC91 bmJpbmQgd2l0aG91dCBob3R1bnBsdWcsIHdlIHdhbnQgdG8gcHJvcGVybHkgY2xlYW4KICB1cCB0 aGUgaGFyZHdhcmUgYW5kIHNodXQgaXQgYWxsIGRvd24uCgotIEJ1dCBpZiB0aGUgZGV2aWNlIGlz IHVucGx1Z2dlZCBhbHJlYWR5LCB0aGF0J3MgcHJvYmFibHkgbm90IHRoZSBiZXN0CiAgaWRlYSwg YW5kIHdlIG9ubHkgd2FudCB0byBjbGVhbiB1cCB0aGUga2VybmVsJ3MgcmVzb3VyY2VzL2FsbG9j YXRpb25zLgoKV2hhdCdzIHRoZSByZWNvbW1lbmRhdGlvbiBoZXJlPyBJIHNlZSBhIGZldyBvcHRp b25zOgoKLSBNYWtlIHN1cmUgZXZlcnl0aGluZyBjYW4gZGVhbCB3aXRoIHRoaXMgcHJvcGVybHku IEhvdHVucGx1ZyBjYW4gaGFwcGVuCiAgYW55dGltZSwgc28gdGhlcmUncyBhIHJhY2Ugbm8gbWF0 dGVyIHdoYXQuCgotIENoZWNrIHdpdGggdGhlIGRldmljZSBtb2RlbCB3aGV0aGVyIHRoZSBzdHJ1 Y3QgZGV2aWNlIGlzIGRpc2FwcGVhcmluZyBvcgogIHdoZXRoZXIgd2UncmUganVzdCBkZWFsaW5n IHdpdGggYSBkcml2ZXIgdW5iaW5kIChubyBpZGVhIGhvdyB0byBkbwogIHRoYXQpLCBhbmQgYWN0 IGFjY29yZGluZ2x5LgoKLSBGdW5kYW1lbnRhbCBxdWVzdGlvbjogVG91Y2hpbmcgdGhlIGh3IGZy b20gZGV2bSBhY3Rpb25zLCBpcyB0aGF0IG9rPyBJZgogIG5vdCwgdGhlbiB0aGUgcHJldHR5IG5p ZnR5IHBsYW4gbGFpZCBvdXQgaW4gdGhpcyB0aHJlYWQgd29udCB3b3JrLgoKLSBTb21ldGhpbmcg Y29tcGxldGVseSBkaWZmZXJlbnQ/CgpUaGFua3MsIERhbmllbAoKPiAKPiBOb3JhbGYuCj4gCj4g PiBDaGVlcnMsIERhbmllbAo+ID4gCj4gPiAKPiA+Pj4gVGhpcyB3b3VsZCBiZSBhbmFsb2cgdG8g eW91ciBzaHV0ZG93biBwYXJhbWV0ZXIgYmVsb3cuCj4gPj4+Cj4gPj4+IEVzc2VudGlhbGx5IEkg dGhpbmsgd2UgY2FuIG9ubHkgZG8gdGhlIGRybV9kZXZfdW5wbHVnIGF1dG9jbGVhbnVwIGluIGEK PiA+Pj4gZ2l2ZW4gZHJpdmVyIGZyb20gZGV2bV9kcm1fZGV2X3JlZ2lzdGVyIGlmZiBhbGwgdGhl IGNsZWFudXAgYWN0aW9ucyBoYXZlCj4gPj4+IGJlZW4gZGV2bS1pZmllZCwgYW5kIHRoZXJlJ3Mg bm90aGluZyBsZWZ0IGluIGl0J3MgdW5iaW5kIGNhbGxiYWNrLiBCZWNhdXNlCj4gPj4+IGlmIGFu eXRoaW5nIGlzIGxlZnQgaW4gaXRzIHVuYmluZCBjYWxsYmFjayB0aGF0J3MgYSBidWcsIHNpbmNl Cj4gPj4+IGRybV9kZXZfdW5yZWdpc3RlcigpIChjYWxsZWQgdGhyb3VnaCBkcm1fZGV2X3VucGx1 ZykgaXMgdGhlIHZlcnkgZmlyc3QgKG9yCj4gPj4+IGF0IGxlYXN0IG9uZSBvZiB0aGUgdmVyeSBm aXJzdCwgYmVmb3JlIHdlIHN0YXJ0IGNsZWFudXAgdXApIGZ1bmN0aW9ucyB0aGF0Cj4gPj4+IG5l ZWQgdG8gYmUgY2FsbGVkLgo+ID4+PiAtRGFuaWVsCj4gPj4+Cj4gPj4+Pgo+ID4+Pj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Ry di5jCj4gPj4+PiBpbmRleCAxMjEyOTc3MmJlNDUuLjdlZDk1NTBiYWZmNiAxMDA2NDQKPiA+Pj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKPiA+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZHJ2LmMKPiA+Pj4+IEBAIC0zNCw3ICszNCw5IEBACj4gPj4+PiAgI2luY2x1ZGUg PGxpbnV4L3NsYWIuaD4KPiA+Pj4+ICAjaW5jbHVkZSA8bGludXgvc3JjdS5oPgo+ID4+Pj4KPiA+ Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gPj4+PiAgI2luY2x1ZGUg PGRybS9kcm1fY2xpZW50Lmg+Cj4gPj4+PiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIu aD4KPiA+Pj4+ICAjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPiA+Pj4+ICAjaW5jbHVkZSA8ZHJt L2RybV9mYl9oZWxwZXIuaD4KPiA+Pj4+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiA+Pj4+IEBA IC0zNTUsMTcgKzM1Nyw3IEBAIHZvaWQgZHJtX2Rldl9leGl0KGludCBpZHgpCj4gPj4+PiAgfQo+ ID4+Pj4gIEVYUE9SVF9TWU1CT0woZHJtX2Rldl9leGl0KTsKPiA+Pj4+Cj4gPj4+PiAtLyoqCj4g Pj4+PiAtICogZHJtX2Rldl91bnBsdWcgLSB1bnBsdWcgYSBEUk0gZGV2aWNlCj4gPj4+PiAtICog QGRldjogRFJNIGRldmljZQo+ID4+Pj4gLSAqCj4gPj4+PiAtICogVGhpcyB1bnBsdWdzIGEgaG90 cGx1Z2dhYmxlIERSTSBkZXZpY2UsIHdoaWNoIG1ha2VzIGl0IGluYWNjZXNzaWJsZSB0bwo+ID4+ Pj4gLSAqIHVzZXJzcGFjZSBvcGVyYXRpb25zLiBFbnRyeS1wb2ludHMgY2FuIHVzZSBkcm1fZGV2 X2VudGVyKCkgYW5kCj4gPj4+PiAtICogZHJtX2Rldl9leGl0KCkgdG8gcHJvdGVjdCBkZXZpY2Ug cmVzb3VyY2VzIGluIGEgcmFjZSBmcmVlIG1hbm5lci4gVGhpcwo+ID4+Pj4gLSAqIGVzc2VudGlh bGx5IHVucmVnaXN0ZXJzIHRoZSBkZXZpY2UgbGlrZSBkcm1fZGV2X3VucmVnaXN0ZXIoKSwgYnV0 IGNhbiBiZQo+ID4+Pj4gLSAqIGNhbGxlZCB3aGlsZSB0aGVyZSBhcmUgc3RpbGwgb3BlbiB1c2Vy cyBvZiBAZGV2Lgo+ID4+Pj4gLSAqLwo+ID4+Pj4gLXZvaWQgZHJtX2Rldl91bnBsdWcoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiA+Pj4+ICtzdGF0aWMgdm9pZCBfX2RybV9kZXZfdW5wbHVnKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgc2h1dGRvd24pCj4gPj4+PiAgewo+ID4+Pj4gICAg ICAgICAvKgo+ID4+Pj4gICAgICAgICAgKiBBZnRlciBzeW5jaHJvbml6aW5nIGFueSBjcml0aWNh bCByZWFkIHNlY3Rpb24gaXMgZ3VhcmFudGVlZAo+ID4+Pj4gdG8gc2VlCj4gPj4+PiBAQCAtMzc4 LDExICszNzAsMzIgQEAgdm9pZCBkcm1fZGV2X3VucGx1ZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ID4+Pj4KPiA+Pj4+ICAgICAgICAgZHJtX2Rldl91bnJlZ2lzdGVyKGRldik7Cj4gPj4+Pgo+ ID4+Pj4gKyAgICAgICBpZiAoc2h1dGRvd24pCj4gPj4+PiArICAgICAgICAgICAgICAgZHJtX2tt c19oZWxwZXJfcG9sbF9maW5pKGRldik7Cj4gPj4+PiArCj4gPj4+PiAgICAgICAgIG11dGV4X2xv Y2soJmRybV9nbG9iYWxfbXV0ZXgpOwo+ID4+Pj4gLSAgICAgICBpZiAoZGV2LT5vcGVuX2NvdW50 ID09IDApCj4gPj4+PiArICAgICAgIGlmIChkZXYtPm9wZW5fY291bnQgPT0gMCkgewo+ID4+Pj4g KyAgICAgICAgICAgICAgIGlmIChzaHV0ZG93bikKPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIGRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKGRldik7Cj4gPj4+PiAgICAgICAgICAgICAg ICAgZHJtX2Rldl9wdXQoZGV2KTsKPiA+Pj4+ICsgICAgICAgfQo+ID4+Pj4gICAgICAgICBtdXRl eF91bmxvY2soJmRybV9nbG9iYWxfbXV0ZXgpOwo+ID4+Pj4gIH0KPiA+Pj4+ICsKPiA+Pj4+ICsv KioKPiA+Pj4+ICsgKiBkcm1fZGV2X3VucGx1ZyAtIHVucGx1ZyBhIERSTSBkZXZpY2UKPiA+Pj4+ ICsgKiBAZGV2OiBEUk0gZGV2aWNlCj4gPj4+PiArICoKPiA+Pj4+ICsgKiBUaGlzIHVucGx1Z3Mg YSBob3RwbHVnZ2FibGUgRFJNIGRldmljZSwgd2hpY2ggbWFrZXMgaXQgaW5hY2Nlc3NpYmxlIHRv Cj4gPj4+PiArICogdXNlcnNwYWNlIG9wZXJhdGlvbnMuIEVudHJ5LXBvaW50cyBjYW4gdXNlIGRy bV9kZXZfZW50ZXIoKSBhbmQKPiA+Pj4+ICsgKiBkcm1fZGV2X2V4aXQoKSB0byBwcm90ZWN0IGRl dmljZSByZXNvdXJjZXMgaW4gYSByYWNlIGZyZWUgbWFubmVyLiBUaGlzCj4gPj4+PiArICogZXNz ZW50aWFsbHkgdW5yZWdpc3RlcnMgdGhlIGRldmljZSBsaWtlIGRybV9kZXZfdW5yZWdpc3Rlcigp LCBidXQgY2FuIGJlCj4gPj4+PiArICogY2FsbGVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBvcGVu IHVzZXJzIG9mIEBkZXYuCj4gPj4+PiArICovCj4gPj4+PiArdm9pZCBkcm1fZGV2X3VucGx1Zyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4+Pj4gK3sKPiA+Pj4+ICsgICAgICAgX19kcm1fZGV2 X3VucGx1ZyhkZXYsIGZhbHNlKTsKPiA+Pj4+ICt9Cj4gPj4+PiAgRVhQT1JUX1NZTUJPTChkcm1f ZGV2X3VucGx1Zyk7Cj4gPj4+Pgo+ID4+Pj4gIC8qCj4gPj4+PiBAQCAtOTIwLDcgKzkzMyw3IEBA IEVYUE9SVF9TWU1CT0woZGV2bV9kcm1fZGV2X2luaXQpOwo+ID4+Pj4KPiA+Pj4+ICBzdGF0aWMg dm9pZCBkZXZtX2RybV9kZXZfcmVnaXN0ZXJfcmVsZWFzZSh2b2lkICpkYXRhKQo+ID4+Pj4gIHsK PiA+Pj4+IC0gICAgICAgZHJtX2Rldl91bnBsdWcoZGF0YSk7Cj4gPj4+PiArICAgICAgIF9fZHJt X2Rldl91bnBsdWcoZGF0YSwgdHJ1ZSk7Cj4gPj4+PiAgfQo+ID4+Pj4KPiA+Pj4+ICBzdGF0aWMg aW50IGRldm1fZHJtX2Rldl9yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4+Pj4K PiA+Pj4+Cj4gPj4+PiBJIHJlYWxpc2VkIHRoYXQgd2Ugc2hvdWxkIHRha2UgYSByZWYgb24gdGhl IHBhcmVudCBkZXZpY2Ugc28gaXQgY2FuIGJlCj4gPj4+PiBhY2Nlc3NlZCBieSB0aGUgRFJNX0RF Vl8gZnVuY3Rpb25zIGFmdGVyIHVucGx1Zy4KPiA+Pj4+Cj4gPj4+Pgo+ID4+Pj4gTm9yYWxmLgo+ ID4+Pj4KPiA+Pj4+Cj4gPj4+Pj4KPiA+Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4gKyAqIE5vdGU6IFRo aXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGgKPiA+Pj4+Pj4+ICsgKiBkZXZt X2RybV9kZXZfcmVnaXN0ZXJfd2l0aF9mYmRldigpLgo+ID4+Pj4+Pj4gKyAqCj4gPj4+Pj4+PiAr ICogUkVUVVJOUzoKPiA+Pj4+Pj4+ICsgKiAwIG9uIHN1Y2Nlc3MsIG9yIGVycm9yIGNvZGUgb24g ZmFpbHVyZS4KPiA+Pj4+Pj4+ICsgKi8KPiA+Pj4+Pj4+ICtpbnQgZGV2bV9kcm1fZGV2X2luaXQo c3RydWN0IGRldmljZSAqcGFyZW50LAo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgc3RydWN0IGRybV9kcml2 ZXIgKmRyaXZlcikKPiA+Pj4+Pj4+ICt7Cj4gPj4+Pj4+PiArIGludCByZXQ7Cj4gPj4+Pj4+PiAr Cj4gPj4+Pj4+PiArIGlmIChXQVJOX09OKCFwYXJlbnQgfHwgIWRyaXZlci0+cmVsZWFzZSkpCj4g Pj4+Pj4+PiArICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPj4+Pj4+PiArCj4gPj4+Pj4+PiAr IHJldCA9IGRybV9kZXZfaW5pdChkZXYsIGRyaXZlciwgcGFyZW50KTsKPiA+Pj4+Pj4+ICsgaWYg KHJldCkKPiA+Pj4+Pj4+ICsgICAgICAgICByZXR1cm4gcmV0Owo+ID4+Pj4+Pj4gKwo+ID4+Pj4+ Pj4gKyAvKgo+ID4+Pj4+Pj4gKyAgKiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHJlbGVhc2UgYWN0aW9u IHRoYXQgaXMgdXNlZCBpZiBwcm9iaW5nIGZhaWxzCj4gPj4+Pj4+PiArICAqIGJlZm9yZSBkZXZt X2RybV9kZXZfcmVnaXN0ZXIoKSBpcyBjYWxsZWQuCj4gPj4+Pj4+PiArICAqLwo+ID4+Pj4+Pj4g KyByZXQgPSBkZXZtX2FkZF9hY3Rpb24ocGFyZW50LCBkZXZtX2RybV9kZXZfaW5pdF9yZWxlYXNl LCBkZXYpOwo+ID4+Pj4+Pj4gKyBpZiAocmV0KQo+ID4+Pj4+Pj4gKyAgICAgICAgIGRldm1fZHJt X2Rldl9pbml0X3JlbGVhc2UoZGV2KTsKPiA+Pj4+Pj4+ICsKPiA+Pj4+Pj4+ICsgcmV0dXJuIHJl dDsKPiA+Pj4+Pj4+ICt9Cj4gPj4+Pj4+PiArRVhQT1JUX1NZTUJPTChkZXZtX2RybV9kZXZfaW5p dCk7Cj4gPj4+Pj4+PiArCj4gPj4+Pj4+PiArc3RhdGljIHZvaWQgZGV2bV9kcm1fZGV2X3JlZ2lz dGVyX3JlbGVhc2Uodm9pZCAqZGF0YSkKPiA+Pj4+Pj4+ICt7Cj4gPj4+Pj4+PiArIGRybV9kZXZf dW5wbHVnKGRhdGEpOwo+ID4+Pj4+Pj4gK30KPiA+Pj4+Pj4+ICsKPiA+Pj4+Pj4+ICtzdGF0aWMg aW50IGRldm1fZHJtX2Rldl9yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4+Pj4+ Pj4gK3sKPiA+Pj4+Pj4+ICsgaW50IHJldDsKPiA+Pj4+Pj4+ICsKPiA+Pj4+Pj4+ICsgcmV0ID0g ZHJtX2Rldl9yZWdpc3RlcihkZXYsIDApOwo+ID4+Pj4+Pj4gKyBpZiAocmV0KQo+ID4+Pj4+Pj4g KyAgICAgICAgIHJldHVybiByZXQ7Cj4gPj4+Pj4+PiArCj4gPj4+Pj4+PiArIC8qCj4gPj4+Pj4+ PiArICAqIFRoaXMgaGFzIG5vdyBzZXJ2ZWQgaXQncyBwdXJwb3NlLCByZW1vdmUgaXQgdG8gbm90 IG1lc3MgdXAgcmVmCj4gPj4+Pj4+PiArICAqIGNvdW50aW5nLgo+ID4+Pj4+Pj4gKyAgKi8KPiA+ Pj4+Pj4+ICsgZGV2bV9yZW1vdmVfYWN0aW9uKGRldi0+ZGV2LCBkZXZtX2RybV9kZXZfaW5pdF9y ZWxlYXNlLCBkZXYpOwo+ID4+Pj4+Pj4gKwo+ID4+Pj4+Pj4gKyByZXQgPSBkZXZtX2FkZF9hY3Rp b24oZGV2LT5kZXYsIGRldm1fZHJtX2Rldl9yZWdpc3Rlcl9yZWxlYXNlLCBkZXYpOwo+ID4+Pj4+ Pj4gKyBpZiAocmV0KQo+ID4+Pj4+Pj4gKyAgICAgICAgIGRldm1fZHJtX2Rldl9yZWdpc3Rlcl9y ZWxlYXNlKGRldik7Cj4gPj4+Pj4+PiArCj4gPj4+Pj4+PiArIHJldHVybiByZXQ7Cj4gPj4+Pj4+ PiArfQo+ID4+Pj4+Pj4gKwo+ID4+Pj4+Pj4gKy8qKgo+ID4+Pj4+Pj4gKyAqIGRldm1fZHJtX2Rl dl9yZWdpc3Rlcl93aXRoX2ZiZGV2IC0gUmVzb3VyY2UgbWFuYWdlZCBkcm1fZGV2X3JlZ2lzdGVy KCkKPiA+Pj4+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1 ZGluZyBnZW5lcmljIGZiZGV2IGVtdWxhdGlvbgo+ID4+Pj4+Pj4gKyAqIEBkZXY6IERSTSBkZXZp Y2UgdG8gcmVnaXN0ZXIKPiA+Pj4+Pj4+ICsgKiBAZmJkZXZfYnBwOiBQcmVmZXJyZWQgYml0cyBw ZXIgcGl4ZWwgZm9yIGZiZGV2IChvcHRpb25hbCkKPiA+Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4gKyAq IE1hbmFnZWQgZHJtX2Rldl9yZWdpc3RlcigpIHRoYXQgYWxzbyBjYWxscyBkcm1fZmJkZXZfZ2Vu ZXJpY19zZXR1cCgpLgo+ID4+Pj4+Pj4gKyAqIFRoZSBEUk0gZGV2aWNlIHJlZ2lzdGVyZWQgd2l0 aCB0aGlzIGZ1bmN0aW9uIGlzIGF1dG9tYXRpY2FsbHkgdW5yZWdpc3RlcmVkIG9uCj4gPj4+Pj4+ PiArICogZHJpdmVyIGRldGFjaCB1c2luZyBkcm1fZGV2X3VucGx1ZygpLgo+ID4+Pj4+Pj4gKyAq Cj4gPj4+Pj4+PiArICogTm90ZTogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQgdG9nZXRoZXIg d2l0aCBkZXZtX2RybV9kZXZfaW5pdCgpLgo+ID4+Pj4+Pj4gKyAqCj4gPj4+Pj4+PiArICogRm9y IHRlc3RpbmcgZHJpdmVyIGRldGFjaCBjYW4gYmUgdHJpZ2dlcmVkIG1hbnVhbGx5IGJ5IHdyaXRp bmcgdG8gdGhlIGRyaXZlcgo+ID4+Pj4+Pj4gKyAqICd1bmJpbmQnIGZpbGUuCj4gPj4+Pj4+PiAr ICoKPiA+Pj4+Pj4+ICsgKiBSRVRVUk5TOgo+ID4+Pj4+Pj4gKyAqIDAgb24gc3VjY2VzcywgbmVn YXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ID4+Pj4+Pj4gKyAqLwo+ID4+Pj4+Pj4gK2lu dCBkZXZtX2RybV9kZXZfcmVnaXN0ZXJfd2l0aF9mYmRldihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBm YmRldl9icHApCj4gPj4+Pj4+PiArewo+ID4+Pj4+Pj4gKyBpbnQgcmV0Owo+ID4+Pj4+Pj4gKwo+ ID4+Pj4+Pj4gKyByZXQgPSBkZXZtX2RybV9kZXZfcmVnaXN0ZXIoZGV2KTsKPiA+Pj4+Pj4+ICsg aWYgKHJldCkKPiA+Pj4+Pj4+ICsgICAgICAgICByZXR1cm4gcmV0Owo+ID4+Pj4+Pj4gKwo+ID4+ Pj4+Pj4gKyBkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cChkZXYsIGZiZGV2X2JwcCk7Cj4gPj4+Pj4+ PiArCj4gPj4+Pj4+PiArIHJldHVybiAwOwo+ID4+Pj4+Pj4gK30KPiA+Pj4+Pj4+ICtFWFBPUlRf U1lNQk9MKGRldm1fZHJtX2Rldl9yZWdpc3Rlcl93aXRoX2ZiZGV2KTsKPiA+Pj4+Pj4+ICsKPiA+ Pj4+Pj4+ICAvKioKPiA+Pj4+Pj4+ICAgKiBkcm1fZGV2X3NldF91bmlxdWUgLSBTZXQgdGhlIHVu aXF1ZSBuYW1lIG9mIGEgRFJNIGRldmljZQo+ID4+Pj4+Pj4gICAqIEBkZXY6IGRldmljZSBvZiB3 aGljaCB0byBzZXQgdGhlIHVuaXF1ZSBuYW1lCj4gPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0vZHJtX2Rydi5oIGIvaW5jbHVkZS9kcm0vZHJtX2Rydi5oCj4gPj4+Pj4+PiBpbmRleCAz NWFmMjNmNWZhMGQuLmMzZjA0NzdmMmU3ZiAxMDA2NDQKPiA+Pj4+Pj4+IC0tLSBhL2luY2x1ZGUv ZHJtL2RybV9kcnYuaAo+ID4+Pj4+Pj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Rydi5oCj4gPj4+ Pj4+PiBAQCAtNjI4LDYgKzYyOCwxMiBAQCBzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2Rldl9hbGxv YyhzdHJ1Y3QgZHJtX2RyaXZlciAqZHJpdmVyLAo+ID4+Pj4+Pj4gIGludCBkcm1fZGV2X3JlZ2lz dGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwo+ID4+Pj4+ Pj4gIHZvaWQgZHJtX2Rldl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4+ Pj4+Pj4KPiA+Pj4+Pj4+ICtpbnQgZGV2bV9kcm1fZGV2X2luaXQoc3RydWN0IGRldmljZSAqcGFy ZW50LAo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g Pj4+Pj4+PiArICAgICAgICAgICAgICAgc3RydWN0IGRybV9kcml2ZXIgKmRyaXZlcik7Cj4gPj4+ Pj4+PiAraW50IGRldm1fZHJtX2Rldl9yZWdpc3Rlcl93aXRoX2ZiZGV2KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IGZiZGV2X2JwcCk7Cj4gPj4+Pj4+PiArCj4gPj4+Pj4+PiAgdm9pZCBkcm1fZGV2X2dl dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+Pj4+Pj4+ICB2b2lkIGRybV9kZXZfcHV0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4+Pj4+Pj4gIHZvaWQgZHJtX3B1dF9kZXYoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7Cj4gPj4+Pj4+PiAtLQo+ID4+Pj4+Pj4gMi4yMC4xCj4gPj4+Pj4+ Pgo+ID4+Pj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiA+Pj4+Pj4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+Pj4+Pj4+IGRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+Pj4+Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4gPj4+Pj4+Cj4gPj4+Pj4+IC0tCj4gPj4+ Pj4+IERhbmllbCBWZXR0ZXIKPiA+Pj4+Pj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBv cmF0aW9uCj4gPj4+Pj4+IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCj4gPj4+Pj4KPiA+Pj4KPiA+IAo+ ID4gCj4gPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jw b3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK