From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg KH Subject: Re: devm actions and hw clenaup (was Re: [PATCH 01/11] drm: Add devm_drm_dev_init/register) Date: Tue, 29 Jan 2019 20:27:46 +0100 Message-ID: <20190129192746.GB21847@kroah.com> References: <3c039a28-f255-4520-5e20-4f7f9caa4f46@tronnes.org> <723b2fcf-5dbc-dd4b-8e3c-daa88bad98fe@tronnes.org> <20190124104312.GT3271@phenom.ffwll.local> <20190124174641.GA7072@kroah.com> <695004fe-2fe1-b5d3-6047-9f923dc50ef8@tronnes.org> <20190129165005.GV3271@phenom.ffwll.local> <20190129173653.GC16568@kroah.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1245D6E38E for ; Tue, 29 Jan 2019 19:27:50 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: David Lechner , dri-devel , "Rafael J. Wysocki" List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBKYW4gMjksIDIwMTkgYXQgMDc6MTA6NTVQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUdWUsIEphbiAyOSwgMjAxOSBhdCA2OjM2IFBNIEdyZWcgS0ggPGdyZWdraEBs aW51eGZvdW5kYXRpb24ub3JnPiB3cm90ZToKPiA+Cj4gPiBPbiBUdWUsIEphbiAyOSwgMjAxOSBh dCAwNTo1MDowNVBNICswMTAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiBPbiBUdWUsIEph biAyOSwgMjAxOSBhdCAwMzozNDo0NlBNICswMTAwLCBOb3JhbGYgVHLDuG5uZXMgd3JvdGU6Cj4g PiA+ID4KPiA+ID4gPgo+ID4gPiA+IERlbiAyNC4wMS4yMDE5IDE4LjU3LCBza3JldiBEYW5pZWwg VmV0dGVyOgo+ID4gPiA+ID4gT24gVGh1LCBKYW4gMjQsIDIwMTkgYXQgNjo0NiBQTSBHcmVnIEtI IDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4gd3JvdGU6Cj4gPiA+ID4gPj4KPiA+ID4gPiA+ PiBPbiBUaHUsIEphbiAyNCwgMjAxOSBhdCAxMTo0MzoxMkFNICswMTAwLCBEYW5pZWwgVmV0dGVy IHdyb3RlOgo+ID4gPiA+ID4+PiBPbiBXZWQsIEphbiAyMywgMjAxOSBhdCAxMTo1NDowN0FNICsw MTAwLCBOb3JhbGYgVHLDuG5uZXMgd3JvdGU6Cj4gPiA+ID4gPj4+Pgo+ID4gPiA+ID4+Pj4KPiA+ ID4gPiA+Pj4+IERlbiAyMi4wMS4yMDE5IDIwLjMwLCBza3JldiBEYW5pZWwgVmV0dGVyOgo+ID4g PiA+ID4+Pj4+IE9uIFR1ZSwgSmFuIDIyLCAyMDE5IGF0IDg6MDcgUE0gTm9yYWxmIFRyw7hubmVz IDxub3JhbGZAdHJvbm5lcy5vcmc+IHdyb3RlOgo+ID4gPiA+ID4+Pj4+Pgo+ID4gPiA+ID4+Pj4+ Pgo+ID4gPiA+ID4+Pj4+Pgo+ID4gPiA+ID4+Pj4+PiBEZW4gMjIuMDEuMjAxOSAxMC4zMiwgc2ty ZXYgRGFuaWVsIFZldHRlcjoKPiA+ID4gPiA+Pj4+Pj4+IE9uIE1vbiwgSmFuIDIxLCAyMDE5IGF0 IDAxOjIxOjQ2UE0gKzAxMDAsIE5vcmFsZiBUcsO4bm5lcyB3cm90ZToKPiA+ID4gPiA+Pj4+Pj4+ Pgo+ID4gPiA+ID4+Pj4+Pj4+Cj4gPiA+ID4gPj4+Pj4+Pj4gRGVuIDIxLjAxLjIwMTkgMTAuNTUs IHNrcmV2IERhbmllbCBWZXR0ZXI6Cj4gPiA+ID4gPj4+Pj4+Pj4+IE9uIE1vbiwgSmFuIDIxLCAy MDE5IGF0IDEwOjEwOjE0QU0gKzAxMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+ID4gPj4+ Pj4+Pj4+PiBPbiBTdW4sIEphbiAyMCwgMjAxOSBhdCAxMjo0MzowOFBNICswMTAwLCBOb3JhbGYg VHLDuG5uZXMgd3JvdGU6Cj4gPiA+ID4gPj4+Pj4+Pj4+Pj4gVGhpcyBhZGRzIHJlc291cmNlIG1h bmFnZWQgKGRldnJlcykgdmVyc2lvbnMgb2YgZHJtX2Rldl9pbml0KCkgYW5kCj4gPiA+ID4gPj4+ Pj4+Pj4+Pj4gZHJtX2Rldl9yZWdpc3RlcigpLgo+ID4gPiA+ID4+Pj4+Pj4+Pj4+Cj4gPiA+ID4g Pj4+Pj4+Pj4+Pj4gQWxzbyBhZGRlZCBpcyBkZXZtX2RybV9kZXZfcmVnaXN0ZXJfd2l0aF9mYmRl digpIHdoaWNoIHNldHMgdXAgZ2VuZXJpYwo+ID4gPiA+ID4+Pj4+Pj4+Pj4+IGZiZGV2IGVtdWxh dGlvbiBhcyB3ZWxsLgo+ID4gPiA+ID4+Pj4+Pj4+Pj4+Cj4gPiA+ID4gPj4+Pj4+Pj4+Pj4gZGV2 bV9kcm1fZGV2X3JlZ2lzdGVyKCkgaXNuJ3QgZXhwb3J0ZWQgc2luY2UgdGhlcmUgYXJlIG5vIHVz ZXJzLgo+ID4gPiA+ID4+Pj4+Pj4+Pj4+Cj4gPiA+ID4gPj4+Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1i eTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Cj4gPiA+ID4gPj4+Pj4+Pj4+ Pgo+ID4gPiA+ID4+Pj4+Pj4+Cj4gPiA+ID4gPj4+Pj4+Pj4gPHNuaXA+Cj4gPiA+ID4gPj4+Pj4+ Pj4KPiA+ID4gPiA+Pj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9k cnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKPiA+ID4gPiA+Pj4+Pj4+Pj4+PiBpbmRl eCAzODE1ODFiMDFkNDguLjEyMTI5NzcyYmU0NSAxMDA2NDQKPiA+ID4gPiA+Pj4+Pj4+Pj4+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCj4gPiA+ID4gPj4+Pj4+Pj4+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYwo+ID4gPiA+ID4+Pj4+Pj4+Pj4+IEBAIC0zNiw2ICsz Niw3IEBACj4gPiA+ID4gPj4+Pj4+Pj4+Pj4KPiA+ID4gPiA+Pj4+Pj4+Pj4+PiAgI2luY2x1ZGUg PGRybS9kcm1fY2xpZW50Lmg+Cj4gPiA+ID4gPj4+Pj4+Pj4+Pj4gICNpbmNsdWRlIDxkcm0vZHJt X2Rydi5oPgo+ID4gPiA+ID4+Pj4+Pj4+Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIu aD4KPiA+ID4gPiA+Pj4+Pj4+Pj4+PiAgI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gPiA+ID4gPj4+ Pj4+Pj4+Pj4KPiA+ID4gPiA+Pj4+Pj4+Pj4+PiAgI2luY2x1ZGUgImRybV9jcnRjX2ludGVybmFs LmgiCj4gPiA+ID4gPj4+Pj4+Pj4+Pj4gQEAgLTg3MSw2ICs4NzIsMTExIEBAIHZvaWQgZHJtX2Rl dl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+ID4gPj4+Pj4+Pj4+Pj4g IH0KPiA+ID4gPiA+Pj4+Pj4+Pj4+PiAgRVhQT1JUX1NZTUJPTChkcm1fZGV2X3VucmVnaXN0ZXIp Owo+ID4gPiA+ID4+Pj4+Pj4+Pj4+Cj4gPiA+ID4gPj4+Pj4+Pj4+Pj4gK3N0YXRpYyB2b2lkIGRl dm1fZHJtX2Rldl9pbml0X3JlbGVhc2Uodm9pZCAqZGF0YSkKPiA+ID4gPiA+Pj4+Pj4+Pj4+PiAr ewo+ID4gPiA+ID4+Pj4+Pj4+Pj4+ICsgZHJtX2Rldl9wdXQoZGF0YSk7Cj4gPiA+ID4gPj4+Pj4+ Pj4+Cj4gPiA+ID4gPj4+Pj4+Pj4+IFdlIG5lZWQgZHJtX2Rldl91bnBsdWcoKSBoZXJlLCBvciB0 aGlzIGlzbid0IHNhZmUuCj4gPiA+ID4gPj4+Pj4+Pj4KPiA+ID4gPiA+Pj4+Pj4+PiBUaGlzIGZ1 bmN0aW9uIGlzIG9ubHkgdXNlZCB0byBjb3ZlciB0aGUgZXJyb3IgcGF0aCBpZiBwcm9iZSBmYWls cyBiZWZvcmUKPiA+ID4gPiA+Pj4+Pj4+PiBkZXZtX2RybV9kZXZfcmVnaXN0ZXIoKSBpcyBjYWxs ZWQuIGRldm1fZHJtX2Rldl9yZWdpc3Rlcl9yZWxlYXNlKCkgaXMKPiA+ID4gPiA+Pj4+Pj4+PiB0 aGUgb25lIHRoYXQgY2FsbHMgdW5wbHVnLiBUaGVyZSBhcmUgY29tbWVudHMgYWJvdXQgdGhpcyBp biB0aGUgZnVuY3Rpb25zLgo+ID4gPiA+ID4+Pj4+Pj4KPiA+ID4gPiA+Pj4+Pj4+IEkgdGhpbmsg SSBnZXQgYSBwcml6ZSBmb3IgYmVpbmcgaWdub3JhbnQgYW5kIGJsaW5kIDotLwo+ID4gPiA+ID4+ Pj4+Pj4KPiA+ID4gPiA+Pj4+Pj4+Pgo+ID4gPiA+ID4+Pj4+Pj4+Pgo+ID4gPiA+ID4+Pj4+Pj4+ Pj4+ICt9Cj4gPiA+ID4gPj4+Pj4+Pj4+Pj4gKwo+ID4gPiA+ID4+Pj4+Pj4+Pj4+ICsvKioKPiA+ ID4gPiA+Pj4+Pj4+Pj4+PiArICogZGV2bV9kcm1fZGV2X2luaXQgLSBSZXNvdXJjZSBtYW5hZ2Vk IGRybV9kZXZfaW5pdCgpCj4gPiA+ID4gPj4+Pj4+Pj4+Pj4gKyAqIEBwYXJlbnQ6IFBhcmVudCBk ZXZpY2Ugb2JqZWN0Cj4gPiA+ID4gPj4+Pj4+Pj4+Pj4gKyAqIEBkZXY6IERSTSBkZXZpY2UKPiA+ ID4gPiA+Pj4+Pj4+Pj4+PiArICogQGRyaXZlcjogRFJNIGRyaXZlcgo+ID4gPiA+ID4+Pj4+Pj4+ Pj4+ICsgKgo+ID4gPiA+ID4+Pj4+Pj4+Pj4+ICsgKiBNYW5hZ2VkIGRybV9kZXZfaW5pdCgpLiBU aGUgRFJNIGRldmljZSBpbml0aWFsaXplZCB3aXRoIHRoaXMgZnVuY3Rpb24gaXMKPiA+ID4gPiA+ Pj4+Pj4+Pj4+PiArICogYXV0b21hdGljYWxseSByZWxlYXNlZCBvbiBkcml2ZXIgZGV0YWNoLiBZ b3UgbXVzdCBzdXBwbHkgYQo+ID4gPiA+ID4+Pj4+Pj4+Pgo+ID4gPiA+ID4+Pj4+Pj4+PiBJIHRo aW5rIGEgYml0IG1vcmUgY2xhcml0eSBoZXJlIHdvdWxkIGJlIGdvb2Q6Cj4gPiA+ID4gPj4+Pj4+ Pj4+Cj4gPiA+ID4gPj4+Pj4+Pj4+ICIuLi4gYXV0b21hdGljYWxseSByZWxlYXNlZCBvbiBkcml2 ZXIgdW5iaW5kIGJ5IGNhbGxpbmQgZHJtX2Rldl91bnBsdWcoKS4iCj4gPiA+ID4gPj4+Pj4+Pj4+ Cj4gPiA+ID4gPj4+Pj4+Pj4+Pj4gKyAqICZkcm1fZHJpdmVyLnJlbGVhc2UgY2FsbGJhY2sgdG8g Y29udHJvbCB0aGUgZmluYWxpemF0aW9uIGV4cGxpY2l0bHkuCj4gPiA+ID4gPj4+Pj4+Pj4+Cj4g PiA+ID4gPj4+Pj4+Pj4+IEkgdGhpbmsgYSBsb3VkIHdhcm5pbmcgZm9yIHRoZXNlIGlzIGluIG9y ZGVyOgo+ID4gPiA+ID4+Pj4+Pj4+Pgo+ID4gPiA+ID4+Pj4+Pj4+PiAiV0FSTklORzoKPiA+ID4g PiA+Pj4+Pj4+Pj4KPiA+ID4gPiA+Pj4+Pj4+Pj4gIkluIGdlbmVyYWxseSBpdCBpcyB1bnNhZmUg dG8gdXNlIGRldm0gZnVuY3Rpb25zIGZvciBkcm0gc3RydWN0dXJlcwo+ID4gPiA+ID4+Pj4+Pj4+ PiBiZWNhdXNlIHRoZSBsaWZldGltZXMgb2YgJmRybV9kZXZpY2UgYW5kIHRoZSB1bmRlcmx5aW5n ICZkZXZpY2UgZG8gbm90Cj4gPiA+ID4gPj4+Pj4+Pj4+IG1hdGNoLiBUaGlzIGhlcmUgd29ya3Mg YmVjYXVzZSBpdCBkb2Vzbid0IGltbWVkaWF0ZWx5IGZyZWUgYW55dGhpbmcsIGJ1dAo+ID4gPiA+ ID4+Pj4+Pj4+PiBvbmx5IGNhbGxzIGRybV9kZXZfdW5wbHVnKCksIHdoaWNoIGludGVybmFsbHkg ZGVjcmVtZW50cyB0aGUgJmRybV9kZXZpY2UKPiA+ID4gPiA+Pj4+Pj4+Pj4gcmVmY291bnQgdGhy b3VnaCBkcm1fZGV2X3B1dCgpLgo+ID4gPiA+ID4+Pj4+Pj4+Pgo+ID4gPiA+ID4+Pj4+Pj4+PiAi QWxsIG90aGVyIGRybSBzdHJ1Y3R1cmVzIG11c3Qgc3RpbGwgYmUgZXhwbGljaXRseSByZWxlYXNl ZCBpbiB0aGUKPiA+ID4gPiA+Pj4+Pj4+Pj4gJmRybV9kcml2ZXIucmVsZWFzZSBjYWxsYmFjay4i Cj4gPiA+ID4gPj4+Pj4+Pj4+Cj4gPiA+ID4gPj4+Pj4+Pj4+IFdoaWxlIHRoaW5raW5nIGFib3V0 IHRoaXMgSSBqdXN0IHJlYWxpemVkIHRoYXQgd2l0aCB0aGlzIGRlc2lnbiB3ZSBoYXZlIG5vCj4g PiA+ID4gPj4+Pj4+Pj4+IGdvb2QgcGxhY2UgdG8gY2FsbCBkcm1fYXRvbWljX2hlbHBlcl9zaHV0 ZG93bigpLiBXaGljaCB3ZSBuZWVkIHRvLCBvciBhbGwKPiA+ID4gPiA+Pj4+Pj4+Pj4ga2luZHMg b2YgdGhpbmdzIHdpbGwgbGVhayBiYWRseSAoY29ubmVjdG9ycywgZmIsIC4uLiksIGJ1dCB0aGVy ZSdzIG5vCj4gPiA+ID4gPj4+Pj4+Pj4+IHBsYWNlIHRvIGNhbGwgaXQ6Cj4gPiA+ID4gPj4+Pj4+ Pj4+IC0gdW5iaW5kIGlzIHRvbyBlYXJseSwgc2luY2Ugd2UgaGF2ZW4ndCB5ZXQgY2FsbGVkIGRy bV9kZXZfdW5wbHVnLCBhbmQgdGhlCj4gPiA+ID4gPj4+Pj4+Pj4+ICAgZHJtX2Rldl91bnJlZ2lz dGVyIGluIHRoZXJlIG11c3QgYmUgY2FsbGVkIF9iZWZvcmVfIHdlIHN0YXJ0IHRvIHNodXQKPiA+ ID4gPiA+Pj4+Pj4+Pj4gICBkb3duIGFueXRoaW5nLgo+ID4gPiA+ID4+Pj4+Pj4+PiAtIGRybV9k cml2ZXIucmVsZWFzZSBpcyB3YXkgdG9vIGxhdGUuCj4gPiA+ID4gPj4+Pj4+Pj4+Cj4gPiA+ID4g Pj4+Pj4+Pj4+IE9mYyBmb3IgYSByZWFsIGhvdHVucGx1ZyB0aGVyZSdzIG5vIHBvaW50IGluIHNo dXR0aW5nIGRvd24gdGhlIGh3IChpdCdzCj4gPiA+ID4gPj4+Pj4+Pj4+IGFscmVhZHkgZ29uZSks IGJ1dCBmb3IgYSBkcml2ZXIgdW5sb2FkL3VuYmluZCBpdCB3b3VsZCBiZSBuaWNlIGlmIHRoaXMK PiA+ID4gPiA+Pj4+Pj4+Pj4gaGFwcGVucyBhdXRvbWF0aWNhbGx5IGFuZCBpbiB0aGUgcmlnaHQg b3JkZXIuCj4gPiA+ID4gPj4+Pj4+Pj4+Cj4gPiA+ID4gPj4+Pj4+Pj4+IFNvIG5vdCBzdXJlIHdo YXQgdG8gZG8gaGVyZSByZWFsbHkuCj4gPiA+ID4gPj4+Pj4+Pj4KPiA+ID4gPiA+Pj4+Pj4+PiBI b3cgYWJvdXQgdGhpcyBjaGFuZ2U6IChpdCBicmVha3MgdGhlIHJ1bGUgb2YgcHVsbGluZyBoZWxw ZXJzIGludG8gdGhlCj4gPiA+ID4gPj4+Pj4+Pj4gY29yZSwgc28gbWF5YmUgd2Ugc2hvdWxkIHB1 dCB0aGUgZGV2bV8gZnVuY3Rpb25zIGludG8gdGhlIHNpbXBsZSBLTVMKPiA+ID4gPiA+Pj4+Pj4+ PiBoZWxwZXIgaW5zdGVhZD8pCj4gPiA+ID4gPj4+Pj4+Pgo+ID4gPiA+ID4+Pj4+Pj4gWWVhaCBz bWVsbHMgYSBiaXQgbXVjaCBsaWtlIG1pZGxheWVyIC4uLiBXaGF0IHdvdWxkIHdvcmsgaXMgaGF2 aW5nIGEgcGlsZQo+ID4gPiA+ID4+Pj4+Pj4gbW9yZSBkZXZtXyBoZWxwZXIgZnVuY3Rpb25zLCBz byB0aGF0IHdlIG9uaW9uLXVud3JhcCBldmVyeXRoaW5nIGNvcnJlY3RseSwKPiA+ID4gPiA+Pj4+ Pj4+IGFuZCBpbiB0aGUgcmlnaHQgb3JkZXIuIFNvOgo+ID4gPiA+ID4+Pj4+Pj4KPiA+ID4gPiA+ Pj4+Pj4+IC0gZGV2bV9kcm1fZGV2X2luaXQgKGFsd2F5cyBkb2VzIGEgZHJtX2Rldl9wdXQoKSkK PiA+ID4gPiA+Pj4+Pj4+Cj4gPiA+ID4gPj4+Pj4+PiAtIGRldm1fZHJtX3BvbGxfZW5hYmxlIChz aHV0cyBkb3duIHRoZSBwb2xsIGhlbHBlciB3aXRoIGEgZGV2bSBhY3Rpb24pCj4gPiA+ID4gPj4+ Pj4+Pgo+ID4gPiA+ID4+Pj4+Pj4gLSBkZXZtX2RybV9tb2RlX2NvbmZpZ19yZXNldCAoZG9lcyBh biBhdG9taWNfaGVscGVyX3NodXRkb3duKCkgYXMgaXQncyBjbGVhbnVwIGFjdGlvbikKPiA+ID4g PiA+Pj4+Pj4+Cj4gPiA+ID4gPj4+Pj4+PiAtIGRldm1fZHJtX2Rldl9yZWdpc3RlciAoZ3JhYnMg YW4gYWRkaXRpb25hbCBkcm1fZGV2X2dldCgpIHJlZmVyZW5jZSBzbyBpdAo+ID4gPiA+ID4+Pj4+ Pj4gICBjYW4gY2FsbCBkcm1fZGV2X3VucGx1ZygpIHVuY29uZGl0aW9uYWxseSkuCj4gPiA+ID4g Pj4+Pj4+Pgo+ID4gPiA+ID4+Pj4+Pgo+ID4gPiA+ID4+Pj4+PiBCZWF1dGlmdWwhIEkgcmVhbGx5 IGxpa2UgdGhpcywgaXQncyB2ZXJ5IGZsZXhpYmxlLgo+ID4gPiA+ID4+Pj4+Pgo+ID4gPiA+ID4+ Pj4+PiBXaGVyZSBzaG91bGQgZGV2bV9kcm1fbW9kZV9jb25maWdfcmVzZXQoKSBsaXZlPyBJdCB3 aWxsIHB1bGwgaW4gdGhlCj4gPiA+ID4gPj4+Pj4+IGF0b21pYyBoZWxwZXIuLi4KPiA+ID4gPiA+ Pj4+Pgo+ID4gPiA+ID4+Pj4+IEkgdGhpbmsgYSBuZXcgZHJtX2Rldm0uYyBoZWxwZXIgd291bGQg YmUgbmljZSBmb3IgYWxsIHRoaXMgc3R1ZmYuCj4gPiA+ID4gPj4+Pj4gRXNwZWNpYWxseSBzaW5j ZSB5b3UgY2FuJ3QgZnJlZWx5IG1peCBkZXZtLWJhc2VkIHNldHVwL2NsZWFudXAgd2l0aAo+ID4g PiA+ID4+Pj4+IG5vcm1hbCBjbGVhbnVwIEkgdGhpbmsgaXQnZCBiZSBnb29kIHRvIGhhdmUgaXQg YWxsIHRvZ2V0aGVyIGluIG9uZQo+ID4gPiA+ID4+Pj4+IHBsYWNlLiBBbmQgcGVyaGFwcyBldmVu IGEgY29kZSBleGFtcGxlIGluIHRoZSBET0M6IG92ZXJ2aWV3Lgo+ID4gPiA+ID4+Pj4+Cj4gPiA+ ID4gPj4+Pj4+PiBXZSdkIG5lZWQgdG8gbWFrZSBzdXJlIHNvbWUgb2YgdGhlIGNsZWFudXAgYWN0 aW9ucyBkdHJ0IHdoZW4gdGhlIGRldmljZSBpcwo+ID4gPiA+ID4+Pj4+Pj4gZ29uZSwgYnV0IEkg dGhpbmsgd2UgY2FuIGFjaGlldmUgdGhhdCBieSBsaWJlcmFsbHkgc3ByaW5rbGluZwo+ID4gPiA+ ID4+Pj4+Pj4gZHJtX2Rldl9lbnRlci9leGl0IG92ZXIgdGhlbSwgZS5nLiB0aGUgdGhlIGNsZWFu dXAgYWN0aW9uIGZvcgo+ID4gPiA+ID4+Pj4+Pj4gZHJtX21vZGVfY29uZmlnX3Jlc2V0IHdvdWxk IGJlOgo+ID4gPiA+ID4+Pj4+Pj4KPiA+ID4gPiA+Pj4+Pj4+IHsKPiA+ID4gPiA+Pj4+Pj4+ICAg ICAgIGlmIChkcm1fZGV2X2VudGVyKCkpCj4gPiA+ID4gPj4+Pj4+PiAgICAgICAgICAgICAgIHJl dHVybjsKPiA+ID4gPiA+Pj4+Pj4+Cj4gPiA+ID4gPj4+Pj4+PiAgICAgICBkcm1fYXRvbWljX2hl bHBlcl9zaHV0ZG93bigpOwo+ID4gPiA+ID4+Pj4+Pj4KPiA+ID4gPiA+Pj4+Pj4+ICAgICAgIGRy bV9kZXZfZXhpdCgpOwo+ID4gPiA+ID4+Pj4+Pj4gfQo+ID4gPiA+ID4+Pj4+Pj4KPiA+ID4gPiA+ Pj4+Pj4KPiA+ID4gPiA+Pj4+Pj4gZHJtX2Rldl9lbnRlcigpIGNhbiBvbmx5IGJlIHVzZWQgdG8g Y2hlY2sgd2hldGhlciB0aGUgZHJtX2RldmljZSBpcwo+ID4gPiA+ID4+Pj4+PiByZWdpc3RlcmVk IG9yIG5vdCwgaXQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBw YXJlbnQKPiA+ID4gPiA+Pj4+Pj4gZGV2aWNlLgo+ID4gPiA+ID4+Pj4+Pgo+ID4gPiA+ID4+Pj4+ PiBBbGwgd2Uga25vdyBpcyB0aGF0IHRoZSBkZXZpY2UgaXMgYmVpbmcgdW5ib3VuZCBmcm9tIHRo ZSBkcml2ZXIsIHdlCj4gPiA+ID4gPj4+Pj4+IGRvbid0IGtub3cgaWYgaXQncyB0aGUgZGV2aWNl IHRoYXQncyBiZWluZyByZW1vdmVkIG9yIGlmIGl0J3MgdGhlIGRyaXZlcgo+ID4gPiA+ID4+Pj4+ PiB0aGF0J3MgdW5yZWdpc3RlcmVkLgo+ID4gPiA+ID4+Pj4+Cj4gPiA+ID4gPj4+Pj4gWW91J3Jl IHJpZ2h0LCBib3RoIHBhdGhzIHdpbGwgaGF2ZSBjYWxsZWQgZHJtX2Rldl91bnBsdWcgYnkgdGhl bi4KPiA+ID4gPiA+Pj4+PiBTaWxseSBtZS4gSSByZWFsbHkgbGlrZWQgbXkgaWRlYSA6LSkKPiA+ ID4gPiA+Pj4+Pgo+ID4gPiA+ID4+Pj4+PiBJIGhhdmUgbG9va2VkIGF0IHRoZSB2YXJpb3VzIGNh bGwgY2hhaW5zOgo+ID4gPiA+ID4+Pj4+Pgo+ID4gPiA+ID4+Pj4+PiBkcml2ZXJfdW5yZWdpc3Rl ciAtPgo+ID4gPiA+ID4+Pj4+PiAgICAgYnVzX3JlbW92ZV9kcml2ZXIgLT4KPiA+ID4gPiA+Pj4+ Pj4gICAgICAgICBkcml2ZXJfZGV0YWNoIC0+Cj4gPiA+ID4gPj4+Pj4+ICAgICAgICAgICAgIGRl dmljZV9yZWxlYXNlX2RyaXZlcl9pbnRlcm5hbAo+ID4gPiA+ID4+Pj4+Pgo+ID4gPiA+ID4+Pj4+ PiBkZXZpY2VfdW5yZWdpc3RlciAtPgo+ID4gPiA+ID4+Pj4+PiAgICAgZGV2aWNlX2RlbCAtPgo+ ID4gPiA+ID4+Pj4+PiAgICAgICAgIGJ1c19yZW1vdmVfZGV2aWNlIC0+Cj4gPiA+ID4gPj4+Pj4+ ICAgICAgICAgICAgIGRldmljZV9yZWxlYXNlX2RyaXZlciAtPgo+ID4gPiA+ID4+Pj4+PiAgICAg ICAgICAgICAgICAgZGV2aWNlX3JlbGVhc2VfZHJpdmVyX2ludGVybmFsCj4gPiA+ID4gPj4+Pj4+ Cj4gPiA+ID4gPj4+Pj4+IHN5c2ZzOiB1bmJpbmRfc3RvcmUgLT4KPiA+ID4gPiA+Pj4+Pj4gICAg IGRldmljZV9yZWxlYXNlX2RyaXZlciAtPgo+ID4gPiA+ID4+Pj4+PiAgICAgICAgIGRldmljZV9y ZWxlYXNlX2RyaXZlcl9pbnRlcm5hbAo+ID4gPiA+ID4+Pj4+Pgo+ID4gPiA+ID4+Pj4+PiBUaGUg b25seSB3YXkgSSd2ZSBmb3VuZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlc2UgaW4gYSBj bGVhbnVwCj4gPiA+ID4gPj4+Pj4+IGFjdGlvbiBpcyB0aGF0IGRldmljZV9kZWwoKSB1c2VzIHRo ZSBidXMgbm90aWZpZXIgdG8gc2lnbmFsCj4gPiA+ID4gPj4+Pj4+IEJVU19OT1RJRllfREVMX0RF VklDRSBiZWZvcmUgY2FsbGluZyBidXNfcmVtb3ZlX2RldmljZSgpLiBTdWNoIGEKPiA+ID4gPiA+ Pj4+Pj4gbm90aWZpZXIgY291bGQgYmUgdXNlZCB0byBzZXQgYSBkcm1fZGV2aWNlLT5wYXJlbnRf cmVtb3ZlZCBmbGFnLgo+ID4gPiA+ID4+Pj4+Cj4gPiA+ID4gPj4+Pj4gSG0sIHRoaXMgbWlnaHQg dXBzZXQgR3JlZyBLSCdzIGNvZGUgdGFzdGUgLi4uIG1heWJlIHRoZXJlJ3MgYSBiZXR0ZXIKPiA+ ID4gPiA+Pj4+PiB3YXkgdG8gZG8gdGhpcywgYnV0IGJlc3QgdG8gcHJvdG90eXBlIGEgcGF0Y2gg d2l0aCB0aGlzLCBzZW5kIGl0IHRvCj4gPiA+ID4gPj4+Pj4gaGltIGFuZCBhc2sgaG93IHRvIDot KQo+ID4gPiA+ID4+Pj4+Cj4gPiA+ID4gPj4+Pgo+ID4gPiA+ID4+Pj4gSSdsbCBsZWF2ZSB0aGlz IHRvIHRoZSBvbmUgdGhhdCBuZWVkcyBpdC4gVGhlIHRpbnlkcm0gZHJpdmVycyBkb2Vzbid0Cj4g PiA+ID4gPj4+PiBuZWVkIHRvIHRvdWNoIGh3IGFmdGVyIERSTSB1bnJlZ2lzdGVyLgo+ID4gPiA+ ID4+Pj4KPiA+ID4gPiA+Pj4+Pj4gV2h5IGlzIGl0IG5lY2Vzc2FyeSB0byBjYWxsIGRybV9hdG9t aWNfaGVscGVyX3NodXRkb3duKCkgaGVyZT8gRG9lc24ndAo+ID4gPiA+ID4+Pj4+PiBldmVyeXRo aW5nIGdldCBkaXNhYmxlZCB3aGVuIHVzZXJzcGFjZSBjbG9zZXM/IEl0IGRvZXMgaW4gbXkgdGlu eWRybQo+ID4gPiA+ID4+Pj4+PiB3b3JsZCA6LSkKPiA+ID4gPiA+Pj4+Pgo+ID4gPiA+ID4+Pj4+ IElpcmMgZmJkZXYvZmJjb24gY2FuIHJlc3VsdCBpbiBsZWFrcyAuLi4gYXQgbGVhc3Qgd2UndmUg aGFkIHBhdGNoZXMKPiA+ID4gPiA+Pj4+PiB3aGVyZSBkcml2ZXJzIGxlYWtlZCBkcm1fY29ubmVj dG9yIGFuZCBkcm1fZnJhbWVidWZmZXIgb2JqZWN0cywgYW5kCj4gPiA+ID4gPj4+Pj4gdGhleSd2 ZSBiZWVuIGZpeGVkIGJ5IGNhbGxpbmcgZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24oKSBpbiB0 aGUKPiA+ID4gPiA+Pj4+PiB1bmxvYWQgcGF0aC4gTWF5YmUgdGhpcyBpcyBjYXJnby1jdWx0aW5n LCBidXQgaXQgZ29lcyB3YXkgYmFjayB0bwo+ID4gPiA+ID4+Pj4+IHByZS1hdG9taWMsIHdoZXJl IGRyaXZlcnMgY2FsbGVkIGRybV9oZWxwZXJfZm9yY2VfZGlzYWJsZV9hbGwoKS4KPiA+ID4gPiA+ Pj4+Pgo+ID4gPiA+ID4+Pj4+IElmIHlvdSB0cnkgdG8gbW92ZSB0aGUgZmJjb24gdG8geW91ciB0 aW55ZHJtIGRyaXZlcnMgKGNvbjJmYiBpcwo+ID4gPiA+ID4+Pj4+IGFwcGFyZW50bHkgdGhlIGNt ZGxpbmUgdG9vbCB5b3UgbmVlZCwgbmV2ZXIgdHJpZWQgaXQsIEkgb25seSBzd2l0Y2gKPiA+ID4g PiA+Pj4+PiB0aGUga2VybmVsJ3MgY29uc29sZSBiZXR3ZWVuIGZiY29uIGFuZCBkdW1teWNvbiBh bmQgYmFjaywgbm90IHdoYXQKPiA+ID4gPiA+Pj4+PiBmYmNvbiBkcml2ZXJzIGl0c2VsZiksIHRo ZW4gSSB0aGluayB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcmVwcm9kdWNlLgo+ID4gPiA+ID4+Pj4+ IEFuZCBtYXliZSB5b3UgaGF2ZSBhIGJldHRlciBpZGVhIGhvdyB0byBkZWFsIHdpdGggdGhpcyBh bGwuCj4gPiA+ID4gPj4+Pj4KPiA+ID4gPiA+Pj4+PiBOb3RlIGFsc28gdGhhdCB0aGVyZSdzIGJl ZW4gcHJvcG9zYWxzIGZsb2F0aW5nIGFyb3VuZCB0byBvbmx5IGNsb3NlIGFuCj4gPiA+ID4gPj4+ Pj4gZHJtX2ZyYW1lYnVmZmVyLCBub3QgYWxzbyByZW1vdmUgaXQgKGxpa2UgdGhlIGN1cnJlbnQg Uk1GQiBpb2N0bAo+ID4gPiA+ID4+Pj4+IGRvZXMpLCB3aXRoIHRoYXQgY2xvc2luZyB1c2Vyc3Bh Y2Ugd291bGQgbm90IG5lY2Vzc2FyaWx5IGxlYWQgdG8gYQo+ID4gPiA+ID4+Pj4+IGZ1bGwgY2xl YW51cC4KPiA+ID4gPiA+Pj4+Pgo+ID4gPiA+ID4+Pj4+IEFub3RoZXIgdGhpbmcgKHdoaWNoIGRv ZXNuJ3QgYXBwbHkgdG8gZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgZHJpdmVycykKPiA+ID4gPiA+ Pj4+PiBpcyBpZiB5b3UgaGF2ZSB0aGUgZGlzcGxheSBvbiwgYnV0IG5vIHBsYW5lcyBzaG93aW5n IChpLmUuIGFsbCBibGFjaykuCj4gPiA+ID4gPj4+Pj4gVGhlbiBhbGwgdGhlIGZicyB3aWxsIGJl IGNsZWFuZWQgdXAsIGJ1dCBkcm1fY29ubmVjdG9yIHdpbGwgYmUKPiA+ID4gPiA+Pj4+PiBsZWFr aW5nLiBUaGF0J3MgYSBjYXNlIHdoZXJlIHlvdSBuZWVkIGRybV9hdG9taWNfaGVscGVyX3NodXRk b3duKCkKPiA+ID4gPiA+Pj4+PiBldmVuIGlmIGZiY29uL2ZiZGV2IGlzbid0IGV2ZW4gZW5hYmxl ZC4KPiA+ID4gPiA+Pj4+Pgo+ID4gPiA+ID4+Pj4KPiA+ID4gPiA+Pj4+IE9rLCB0aGlzIG1lYW5z IHRoYXQgSSBkb24ndCBuZWVkIHRvIGNhbGwgZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24oKSBp bgo+ID4gPiA+ID4+Pj4gdGlueWRybS4gRFJNIHVzZXJzcGFjZSBkaXNhYmxlcyB0aGUgcGlwZSBv biBjbG9zZSBhbmQgdGhlIGdlbmVyaWMgZmJkZXYKPiA+ID4gPiA+Pj4+IGVtdWxhdGlvbiBhbHNv IHJlbGVhc2VzIGV2ZXJ5dGhpbmcuCj4gPiA+ID4gPj4+PiBFdmVuIHNvLCBtYXliZSBJIHNob3Vs ZCB1c2UgZGV2bV9kcm1fbW9kZV9jb25maWdfcmVzZXQoKSBhZnRlciBhbGwgdG8KPiA+ID4gPiA+ Pj4+IGtlZXAgZHJpdmVycyB1bmlmb3JtLCB0byBhdm9pZCBjb25mdXNpb246IHdoeSBkb2Vzbid0 IGhlIHVzZSBpdD8KPiA+ID4gPiA+Pj4KPiA+ID4gPiA+Pj4gSG0gbWF5YmUgdGhlcmUgaXMgYW4g b2ZmaWNpYWwgd2F5IHRvIHNvbHZlIHRoaXMsIHB1bGxpbmcgaW4gR3JlZytSYWZhZWwuCj4gPiA+ ID4gPj4+Cj4gPiA+ID4gPj4+IFN1cGVyIHNob3J0IHN1bW1hcnk6IFdlIHdhbnQgdG8gc3RhcnQg dXNpbmcgZGV2bSBhY3Rpb25zIHRvIGNsZWFuIHVwIGRybQo+ID4gPiA+ID4+PiBkcml2ZXJzLiBI ZXJlJ3MgdGhlIHByb2JsZW06Cj4gPiA+ID4gPj4+IC0gRm9yIGEgZHJpdmVyIHVubG9hZC91bmJp bmQgd2l0aG91dCBob3R1bnBsdWcsIHdlIHdhbnQgdG8gcHJvcGVybHkgY2xlYW4KPiA+ID4gPiA+ Pj4gICB1cCB0aGUgaGFyZHdhcmUgYW5kIHNodXQgaXQgYWxsIGRvd24uCj4gPiA+ID4gPj4KPiA+ ID4gPiA+PiBUaGVuIGRvIGl0IG9uIHByb2JlL2Rpc2Nvbm5lY3QuCj4gPiA+ID4gPj4KPiA+ID4g PiA+Pj4gLSBCdXQgaWYgdGhlIGRldmljZSBpcyB1bnBsdWdnZWQgYWxyZWFkeSwgdGhhdCdzIHBy b2JhYmx5IG5vdCB0aGUgYmVzdAo+ID4gPiA+ID4+PiAgIGlkZWEsIGFuZCB3ZSBvbmx5IHdhbnQg dG8gY2xlYW4gdXAgdGhlIGtlcm5lbCdzIHJlc291cmNlcy9hbGxvY2F0aW9ucy4KPiA+ID4gPiA+ Pgo+ID4gPiA+ID4+IEFnYWluLCBwcm9iZS9kaXNjb25uZWN0IHdpbGwgYmUgY2FsbGVkIGVpdGhl ciB3YXkuCj4gPiA+ID4gPj4KPiA+ID4gPiA+PiBCdXQgYXMgeW91IG5vdGUsIG1lbW9yeSB3aWxs IE5PVCBiZSBmcmVlZCBieSB0aGUgZGV2bSBzdHVmZiBpZiB5b3UKPiA+ID4gPiA+PiBtYW51YWxs eSB1bmJpbmQgYSBkcml2ZXIgZnJvbSBhIGRldmljZS4KPiA+ID4gPiA+Pgo+ID4gPiA+ID4+IFNv IGRvbid0IHRvdWNoIGhhcmR3YXJlIHRoZXJlLCBpdCdzIG5vdCBnb2luZyB0byB3b3JrIDopCj4g PiA+ID4gPj4KPiA+ID4gPiA+Pj4gV2hhdCdzIHRoZSByZWNvbW1lbmRhdGlvbiBoZXJlPyBJIHNl ZSBhIGZldyBvcHRpb25zOgo+ID4gPiA+ID4+Pgo+ID4gPiA+ID4+PiAtIE1ha2Ugc3VyZSBldmVy eXRoaW5nIGNhbiBkZWFsIHdpdGggdGhpcyBwcm9wZXJseS4gSG90dW5wbHVnIGNhbiBoYXBwZW4K PiA+ID4gPiA+Pj4gICBhbnl0aW1lLCBzbyB0aGVyZSdzIGEgcmFjZSBubyBtYXR0ZXIgd2hhdC4K PiA+ID4gPiA+Pgo+ID4gPiA+ID4+IFllcy4KPiA+ID4gPiA+Pgo+ID4gPiA+ID4+PiAtIENoZWNr IHdpdGggdGhlIGRldmljZSBtb2RlbCB3aGV0aGVyIHRoZSBzdHJ1Y3QgZGV2aWNlIGlzIGRpc2Fw cGVhcmluZyBvcgo+ID4gPiA+ID4+PiAgIHdoZXRoZXIgd2UncmUganVzdCBkZWFsaW5nIHdpdGgg YSBkcml2ZXIgdW5iaW5kIChubyBpZGVhIGhvdyB0byBkbwo+ID4gPiA+ID4+PiAgIHRoYXQpLCBh bmQgYWN0IGFjY29yZGluZ2x5Lgo+ID4gPiA+ID4+Cj4gPiA+ID4gPj4gWW91IGRvbid0IGtub3cg dGhhdCwgc29ycnkuICBKdXN0IGRvIGFueSBoYXJkd2FyZSBzdHVmZiBvbiBkaXNjb25uZWN0Lgo+ ID4gPiA+ID4+IEFzc3VtaW5nIHlvdXIgaGFyZHdhcmUgaXMgc3RpbGwgcHJlc2VudCA6KQo+ID4g PiA+ID4+Cj4gPiA+ID4gPj4+IC0gRnVuZGFtZW50YWwgcXVlc3Rpb246IFRvdWNoaW5nIHRoZSBo dyBmcm9tIGRldm0gYWN0aW9ucywgaXMgdGhhdCBvaz8gSWYKPiA+ID4gPiA+Pj4gICBub3QsIHRo ZW4gdGhlIHByZXR0eSBuaWZ0eSBwbGFuIGxhaWQgb3V0IGluIHRoaXMgdGhyZWFkIHdvbnQgd29y ay4KPiA+ID4gPiA+Pgo+ID4gPiA+ID4+IE5vcGUsIHRoYXQncyBub3QgZ29pbmcgdG8gd29yaywg dGhlIGRldmljZSBjb3VsZCBlaXRoZXIgYmUgbG9uZyBnb25lLCBvcgo+ID4gPiA+ID4+IHlvdSB3 aWxsIG5vdCBiZSBjYWxsZWQgZHVlIHRvIHVuYmluZCBoYXBwZW5pbmcgZnJvbSB1c2Vyc3BhY2Uu Cj4gPiA+ID4gPj4KPiA+ID4gPiA+PiBCdXQgcmVhbGx5LCB1bmJpbmQgZnJvbSB1c2Vyc3BhY2Ug aXMgdmVyeSB2ZXJ5IHJhcmUsIGl0J3MgYSBkZXZlbG9wZXIKPiA+ID4gPiA+PiB0aGluZyBtb3N0 bHkuICBPaCBhbmQgYSB2aXJ0dWFsIGRyaXZlciB0aGluZywgYnV0IHRob3NlIHBlb3BsZSBhcmUg Y3JhenkKPiA+ID4gPiA+PiA6KQo+ID4gPiA+ID4+Cj4gPiA+ID4gPj4+IC0gU29tZXRoaW5nIGNv bXBsZXRlbHkgZGlmZmVyZW50Pwo+ID4gPiA+ID4+Cj4gPiA+ID4gPj4gRG8gaXQgaW4gZGlzY29u bmVjdCA6KQo+ID4gPiA+ID4KPiA+ID4gPiA+IEFoLCBJIGZvcmdvdCB0byBtZW50aW9uIHRoZSBp bXBvcnRhbnQgY29uc3RyYWludCA6LSkgZGlzY29ubmVjdC91bmJpbmQKPiA+ID4gPiA+IHNob3Vs ZCBiZSB0aGUgZm9sbG93aW5nIHNlcXVlbmNlOgo+ID4gPiA+ID4KPiA+ID4gPiA+IDEuIFVucmVn aXN0ZXIgYWxsIHRoZSB1c2Vyc3BhY2UgaW50ZXJmYWNlcyAodGhlcmUncyBhIGxvdCBvZiB0aGVt KSBhbmQKPiA+ID4gPiA+IG1ha2Ugc3VyZSBhbGwgdGhlIHBlbmRpbmcgaW9jdGxzIGFyZSBkb25l IHNvIHRoYXQgZnJvbSBub3cgb24KPiA+ID4gPiA+IHVzZXJzcGFjZSBzZWVzIGxvdHMgb2YgLUVJ TyAoaW4gY2FzZSBpdCBzdGlsbCBoYXMgZmQgb3Blbiwgd2hpY2ggaXMKPiA+ID4gPiA+IGdvaW5n IHRvIGJlIHRoZSBub3JtYWwgZm9yIGhvdHVucGx1Zy4KPiA+ID4gPiA+Cj4gPiA+ID4gPiAyLiBT aHV0IGRvd24gaHcgYW5kIGFsbCBvbmdvaW5nIG9wZXJhdGlvbnMgKG9ubHkgcmVsZXZhbnQgZm9y IHVuYmluZCwKPiA+ID4gPiA+IGJ1dCBuZWVkcyB0byBiZSBhYmxlIHRvIGNvcGUgd2l0aCBzdWRk ZW4gaG90dW5wbHVnIG9uIHRvcCBhbnl3YXkpLgo+ID4gPiA+ID4KPiA+ID4gPiA+IDMuIENsZWFu IHVwIHRoZSBrZXJuZWwgbWVzcyBhbmQgcmVsZWFzZSBldmVyeXRoaW5nLgo+ID4gPiA+ID4KPiA+ ID4gPiA+IFByb2JlIGlzIGV4YWN0bHkgdGhlIG90aGVyIHdheSByb3VuZCwgc28gd291bGQgcGVy ZmVjdGx5IGZpdCBpbnRvIHRoZQo+ID4gPiA+ID4gZGV2bSBvbmlvbiBjbGVhbnVwLiBTZWUgaW4g dGhlIGNvbW1lbnRlZCBlYXJsaWVyIHJlcGxpZXMgYWJvdmUgaG93Cj4gPiA+ID4gPiB0aGF0IHdv dWxkIG1hdGNoIGluIGRldGFpbHMsIGJ1dCB0bGRyOyBpZiB3ZSBoYXZlIHRvIGRvIDIuIGluCj4g PiA+ID4gPiBkaXNjb25uZWN0LCB0aGVuIHdlIGFsc28gaGF2ZSB0byBkbyAxLiBpbiBkaXNjb25u ZWN0ZWQsIGFuZCBvbmx5IGRvaW5nCj4gPiA+ID4gPiAzLiB0aHJvdWdoIGRldm0gaXMgYWxtb3N0 IG5vdCB3b3J0aCB0aGUgYm90aGVyLiBCdXQgaWYgd2UgY291bGQgZG8gYWxsCj4gPiA+ID4gPiB0 aHJlZSB0aHJvdWdoIGRldm0gdGhlbiBzaW1wbGUgZHJpdmVycyB3b3VsZG4ndCBldmVuIG5lZWQg YW55Cj4gPiA+ID4gPiBkaXNjb25uZWN0L3VuYmluZCBjYWxsYmFjayBhdCBhbGwuIFRoYXQncyBv dXIgbW90aXZhdGlvbiBmb3IgdHJ5aW5nIHRvCj4gPiA+ID4gPiBjb21lIHVwIHdpdGggYW4gYW5z d2VyIHRoYXQncyBub3QgImRvIGl0IGluIGRpc2Nvbm5lY3QiLiAiZG8gaXQgaW4KPiA+ID4gPiA+ IGRpc2Nvbm5lY3QiIGlzIGhvdyB3ZSBkbyBpdCBhbGwgdG9kYXkgYWxyZWFkeS4KPiA+ID4gPiA+ Cj4gPiA+ID4gPiBZZXMgd2UncmUgdHJ5aW5nIHRvIG1ha2UgdGlueSBkcml2ZXJzIGV2ZW4gc21h bGxlciwgd2UgaGF2ZSBlbm91Z2gKPiA+ID4gPiA+IG5vd2FkYXlzIHRoYXQgdGhpcyBzdHVmZiB3 b3VsZCBiZSB3b3J0aCBpdCA6LSkKPiA+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiBJIHRoaW5rIGEg c29sdXRpb24gaXMgdG8gc2F5IHRoYXQgZHJpdmVycyB0aGF0IHdhbnQgdG8gdG91Y2ggaHcgb24K PiA+ID4gPiBkaXNjb25uZWN0IG5lZWRzIHRvIHVzZSBkZXZpY2VfZHJpdmVyLT5yZW1vdmUgdG8g ZG8gdGhhdC4KPiA+ID4gPgo+ID4gPiA+IFRoaXMgaXMgYW4gZXhhbXBsZSBkcml2ZXIgdGhhdCBk b2Vzbid0IG5lZWQgdG8gdG91Y2ggaHcgYmVjYXVzZSBpdCdzIHNvCj4gPiA+ID4gc2ltcGxlIHRo YXQgdXNlcnNwYWNlIGhhcyBkaXNhYmxlZCB0aGUgcGlwZWxpbmU6Cj4gPiA+ID4KPiA+ID4gPiBz dGF0aWMgdm9pZCBkcm1fZHJpdmVyX3JlbGVhc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKPiA+ ID4gPiB7Cj4gPiA+ID4gICAgIGRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRybSk7Cj4gPiA+ID4g ICAgIGRybV9kZXZfZmluaShkcm0pOwo+ID4gPiA+ICAgICBrZnJlZShkcm0pOwo+ID4gPiA+IH0K PiA+ID4gPgo+ID4gPiA+IHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBkcm1fZHJpdmVyID0gewo+ ID4gPiA+ICAgICAucmVsZWFzZSA9IGRybV9kcml2ZXJfcmVsZWFzZSwKPiA+ID4gPiAgICAgLyog Li4uICovCj4gPiA+ID4gfTsKPiA+ID4gPgo+ID4gPiA+IHN0YXRpYyBpbnQgZHJpdmVyX3Byb2Jl KHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ID4gPiB7Cj4gPiA+ID4gICAgIHN0cnVjdCBkcm1fZGV2 aWNlICpkcm07Cj4gPiA+ID4gICAgIGludCByZXQ7Cj4gPiA+ID4KPiA+ID4gPiAgICAgZHJtID0g a3phbGxvYyhzaXplb2YoKmRybSksIEdGUF9LRVJORUwpOwo+ID4gPiA+ICAgICBpZiAoIWRybSkK PiA+ID4gPiAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ID4gPgo+ID4gPiA+ICAgICBy ZXQgPSBkZXZtX2RybV9kZXZfaW5pdChkZXYsIGRybSwgJmRybV9kcml2ZXIpOwo+ID4gPiA+ICAg ICBpZiAocmV0KSB7Cj4gPiA+ID4gICAgICAgICAgICAga2ZyZWUoZHJtKTsKPiA+ID4gPiAgICAg ICAgICAgICByZXR1cm4gcmV0Owo+ID4gPiA+ICAgICB9Cj4gPiA+ID4KPiA+ID4gPiAgICAgZHJt X21vZGVfY29uZmlnX2luaXQoZHJtKTsKPiA+ID4gPgo+ID4gPiA+ICAgICAvKiBBcXVpcmUgdmFy aW91cyByZXNvdXJjZXMsIGFsbCBtYW5hZ2VkIGJ5IGRldnJlcyAqLwo+ID4gPiA+Cj4gPiA+ID4g ICAgIGRybV9tb2RlX2NvbmZpZ19yZXNldChkcm0pOwo+ID4gPiA+Cj4gPiA+ID4gICAgIHJldHVy biBkZXZtX2RybV9kZXZfcmVnaXN0ZXIoZHJtKTsKPiA+ID4gPiB9Cj4gPiA+ID4KPiA+ID4gPiBz dHJ1Y3QgZGV2aWNlX2RyaXZlciBkcml2ZXIgPSB7Cj4gPiA+ID4gICAgIC5wcm9iZSA9IGRyaXZl cl9wcm9iZSwKPiA+ID4gPiB9Owo+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiBBIGRyaXZlciB0aGF0 IHdhbnRzIHRvIHRvdWNoIGhhcmR3YXJlIG9uIGRpc2Nvbm5lY3QsIGNhbiBsb29rIGxpa2UgdGhp czoKPiA+ID4gPgo+ID4gPiA+IHN0YXRpYyB2b2lkIGRybV9kcml2ZXJfcmVsZWFzZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZHJtKQo+ID4gPiA+IHsKPiA+ID4gPiAgICAgZHJtX21vZGVfY29uZmlnX2Ns ZWFudXAoZHJtKTsKPiA+ID4gPiAgICAgZHJtX2Rldl9maW5pKGRybSk7Cj4gPiA+ID4gICAgIGtm cmVlKGRybSk7Cj4gPiA+ID4gfQo+ID4gPiA+Cj4gPiA+ID4gc3RhdGljIHN0cnVjdCBkcm1fZHJp dmVyIGRybV9kcml2ZXIgPSB7Cj4gPiA+ID4gICAgIC5yZWxlYXNlID0gZHJtX2RyaXZlcl9yZWxl YXNlLAo+ID4gPiA+ICAgICAvKiAuLi4gKi8KPiA+ID4gPiB9Owo+ID4gPiA+Cj4gPiA+ID4gc3Rh dGljIGludCBkcml2ZXJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQo+ID4gPiA+IHsKPiA+ID4g PiAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRybTsKPiA+ID4gPiAgICAgaW50IHJldDsKPiA+ID4g Pgo+ID4gPiA+ICAgICBkcm0gPSBremFsbG9jKHNpemVvZigqZHJtKSwgR0ZQX0tFUk5FTCk7Cj4g PiA+ID4gICAgIGlmICghZHJtKQo+ID4gPiA+ICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ ID4gPiA+Cj4gPiA+ID4gICAgIHJldCA9IGRldm1fZHJtX2Rldl9pbml0KGRldiwgZHJtLCAmZHJt X2RyaXZlcik7Cj4gPiA+ID4gICAgIGlmIChyZXQpIHsKPiA+ID4gPiAgICAgICAgICAgICBrZnJl ZShkcm0pOwo+ID4gPiA+ICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ID4gICAgIH0KPiA+ ID4gPgo+ID4gPiA+ICAgICBkcm1fbW9kZV9jb25maWdfaW5pdChkcm0pOwo+ID4gPiA+Cj4gPiA+ ID4gICAgIC8qIEFxdWlyZSB2YXJpb3VzIHJlc291cmNlcywgYWxsIG1hbmFnZWQgYnkgZGV2cmVz ICovCj4gPiA+ID4KPiA+ID4gPiAgICAgZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRybSk7Cj4gPiA+ ID4KPiA+ID4gPiAgICAgcmV0ID0gZHJtX2Rldl9yZWdpc3Rlcihkcm0pOwo+ID4gPiA+ICAgICBp ZiAocmV0KQo+ID4gPiA+ICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ID4KPiA+ID4gPiAg ICAgZHJtX2Rldl9nZXQoZGV2KTsgLyogSWYgdXNpbmcgZHJtX2Rldl91bnBsdWcoKSAqLwo+ID4g PiA+Cj4gPiA+ID4gICAgIGRldl9zZXRfZHJ2ZGF0YShkZXYsIGRybSk7Cj4gPiA+ID4KPiA+ID4g PiAgICAgcmV0dXJuIDA7Cj4gPiA+ID4gfQo+ID4gPiA+Cj4gPiA+ID4gLyogVGhpcyBmdW5jdGlv biBpcyBjYWxsZWQgYmVmb3JlIGRldnJlc19yZWxlYXNlX2FsbCgpICovCj4gPiA+ID4gc3RhdGlj IGludCBkcml2ZXJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ID4gPiB7Cj4gPiA+ID4g ICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiA+ID4g Pgo+ID4gPiA+ICAgICBkcm1fZGV2X3VucGx1Zyhkcm0pOyBPUiBkcm1fZGV2X3VucmVnaXN0ZXIo ZHJtKTsKPiA+ID4gPiAgICAgZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24oZHJtKQo+ID4gPiA+ Cj4gPiA+ID4gICAgIHJldHVybiAwOwo+ID4gPiA+IH0KPiA+ID4gPgo+ID4gPiA+IHN0cnVjdCBk ZXZpY2VfZHJpdmVyIGRyaXZlciA9IHsKPiA+ID4gPiAgICAgLnByb2JlID0gZHJpdmVyX3Byb2Jl LAo+ID4gPiA+ICAgICAucmVtb3ZlID0gZHJpdmVyX3JlbW92ZSwKPiA+ID4KPiA+ID4gVGhhdCdz IGV4YWN0bHkgdGhlIHBhdHRlcm4gSSdtIHRyeWluZyB0byBhdm9pZCwgYmVjYXVzZSBpbW8geW91 ciB0aW55Cj4gPiA+IGRyaXZlciBfYWxzb18gc2hvdWxkIGRvIHRoaXMuIE9yIHdlIHJlYWxpemUg dGhhdCBhbGwgdGhlIGN1cnJlbnQgZHJpdmVycwo+ID4gPiBkb2luZyBkcm1fYXRvbWljX2hlbHBl cl9zaHV0ZG93biBhcmUgbWlzZ3VpZGVkLCBidXQgSSdtIG5vdCByZWFsbHkKPiA+ID4gdW5kZXJz dGFuZGluZyB3aHkuCj4gPiA+Cj4gPiA+IEhhdmluZyBhIGRldm0gaGVscGVyIHdoaWNoIGNhbm5v dCBiZSB1c2VkIGZvciBzb21lIGRyaXZlcnMgZHVlIHRvCj4gPiA+IGZ1bmRhbWVudGFsIGRlc2ln biBpc3N1ZXMgaXMga2luZGEgbm90IGdyZWF0LCBiZWNhdXNlIGl0IG1lYW5zIGV2ZXJ5b25lCj4g PiA+IHdpbGwgc3RpbGwgdXNlIGl0LCBhbmQgc2hydWcgdGhlIGJ1Z3Mgb2ZmIGFzICJub3QgbXkg cHJvYmxlbSIuIFdoaWNoIGlzCj4gPiA+IHdoYXQncyBoYXBwZW5pbmcgcmlnaHQgbm93IHdpdGgg YWxsIHRoZSBkZXZtX2t6YWxsb2Mgd2UgaGF2ZSBpbiBkcm0KPiA+ID4gZHJpdmVycyB0aGF0IGFs bCB0aGUgZ2V0IGxpZmV0aW0gd3JvbmcuIEJ1dCBiZWNhdXNlIGRldm1fIGlzIGNvbnZlbmllbnQK PiA+ID4gZXZlcnlvbmUgdXNlcyBpdCwgc28gdGhlIGRyaXZlciB1bmxvYWQgb2YgbW9zdCBkcml2 ZXJzIGlzIGZ1bGwgb2YgYnVncy4KPiA+Cj4gPiBkcml2ZXIgInVubG9hZCIgc2hvdWxkIG5vdCBi ZSBmdWxsIG9mIGJ1Z3MsIGhvdyB3b3VsZCBpdD8gIEFueXRoaW5nCj4gPiBjcmVhdGVkIHdpdGgg ZGV2bV8oKSB3aWxsIGp1c3QgYmUgZnJlZWQgd2hlbiB0aGUgZGV2aWNlIHJlYWxseSBnb2VzIGF3 YXkKPiA+IGluIHRoZSBzeXN0ZW0sIGl0IHNob3VsZG4ndCBjYWxsIGJhY2sgaW50byB0aGUgZHJp dmVyLgo+IAo+IFRoZSBwcm9ibGVtIGlzIHdoZW4gZHJpdmVycyB1c2UgZGV2bV8gbm90IHRvIGFs bG9jYXRlIGh3IHJlc291cmNlcyBhbmQKPiByZWxhdGVkIHRoaW5ncywgYnV0IHN0cnVjdHVyZXMg Zm9yIG9iamVjdHMgd2l0aCBvdGhlciBsaWZldGltZXMuIExpa2UKPiBvcGVuIGZpbGUgZGVzY3Jp cHRvcnMgc2hhcmVkIHdpdGggdGhlIHdvcmxkLgoKQW5kIGlycXMsIHdoaWNoIGJpdGVzIGV2ZXJ5 b25lIGluIHRoZSBlbmQuICBZb3UgaGF2ZSB0byBiZSBjYXJlZnVsIGhlcmUsCm5ldmVyIHRpZSBh IGRldm0gYWxsb2NhdGlvbiB0byBhbiBvYmplY3Qgd2l0aCBhbm90aGVyIHJlZmVyZW5jZSBjb3Vu dCwKdGhhdCdzIGp1c3QgYSBidWcuCgpncmVnIGstaApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK