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 18:36:53 +0100 Message-ID: <20190129173653.GC16568@kroah.com> References: <20190122093213.GU3271@phenom.ffwll.local> <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> 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 4963D6E58A for ; Tue, 29 Jan 2019 17:36:56 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190129165005.GV3271@phenom.ffwll.local> 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 T24gVHVlLCBKYW4gMjksIDIwMTkgYXQgMDU6NTA6MDVQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUdWUsIEphbiAyOSwgMjAxOSBhdCAwMzozNDo0NlBNICswMTAwLCBOb3JhbGYg VHLDuG5uZXMgd3JvdGU6Cj4gPiAKPiA+IAo+ID4gRGVuIDI0LjAxLjIwMTkgMTguNTcsIHNrcmV2 IERhbmllbCBWZXR0ZXI6Cj4gPiA+IE9uIFRodSwgSmFuIDI0LCAyMDE5IGF0IDY6NDYgUE0gR3Jl ZyBLSCA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+IHdyb3RlOgo+ID4gPj4KPiA+ID4+IE9u IFRodSwgSmFuIDI0LCAyMDE5IGF0IDExOjQzOjEyQU0gKzAxMDAsIERhbmllbCBWZXR0ZXIgd3Jv dGU6Cj4gPiA+Pj4gT24gV2VkLCBKYW4gMjMsIDIwMTkgYXQgMTE6NTQ6MDdBTSArMDEwMCwgTm9y YWxmIFRyw7hubmVzIHdyb3RlOgo+ID4gPj4+Pgo+ID4gPj4+Pgo+ID4gPj4+PiBEZW4gMjIuMDEu MjAxOSAyMC4zMCwgc2tyZXYgRGFuaWVsIFZldHRlcjoKPiA+ID4+Pj4+IE9uIFR1ZSwgSmFuIDIy LCAyMDE5IGF0IDg6MDcgUE0gTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+IHdy b3RlOgo+ID4gPj4+Pj4+Cj4gPiA+Pj4+Pj4KPiA+ID4+Pj4+Pgo+ID4gPj4+Pj4+IERlbiAyMi4w MS4yMDE5IDEwLjMyLCBza3JldiBEYW5pZWwgVmV0dGVyOgo+ID4gPj4+Pj4+PiBPbiBNb24sIEph biAyMSwgMjAxOSBhdCAwMToyMTo0NlBNICswMTAwLCBOb3JhbGYgVHLDuG5uZXMgd3JvdGU6Cj4g PiA+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+IERlbiAyMS4wMS4yMDE5IDEwLjU1 LCBza3JldiBEYW5pZWwgVmV0dGVyOgo+ID4gPj4+Pj4+Pj4+IE9uIE1vbiwgSmFuIDIxLCAyMDE5 IGF0IDEwOjEwOjE0QU0gKzAxMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+Pj4+Pj4+Pj4+ IE9uIFN1biwgSmFuIDIwLCAyMDE5IGF0IDEyOjQzOjA4UE0gKzAxMDAsIE5vcmFsZiBUcsO4bm5l cyB3cm90ZToKPiA+ID4+Pj4+Pj4+Pj4+IFRoaXMgYWRkcyByZXNvdXJjZSBtYW5hZ2VkIChkZXZy ZXMpIHZlcnNpb25zIG9mIGRybV9kZXZfaW5pdCgpIGFuZAo+ID4gPj4+Pj4+Pj4+Pj4gZHJtX2Rl dl9yZWdpc3RlcigpLgo+ID4gPj4+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+Pj4+IEFsc28gYWRkZWQg aXMgZGV2bV9kcm1fZGV2X3JlZ2lzdGVyX3dpdGhfZmJkZXYoKSB3aGljaCBzZXRzIHVwIGdlbmVy aWMKPiA+ID4+Pj4+Pj4+Pj4+IGZiZGV2IGVtdWxhdGlvbiBhcyB3ZWxsLgo+ID4gPj4+Pj4+Pj4+ Pj4KPiA+ID4+Pj4+Pj4+Pj4+IGRldm1fZHJtX2Rldl9yZWdpc3RlcigpIGlzbid0IGV4cG9ydGVk IHNpbmNlIHRoZXJlIGFyZSBubyB1c2Vycy4KPiA+ID4+Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+ PiBTaWduZWQtb2ZmLWJ5OiBOb3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KPiA+ ID4+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+PiA8c25pcD4KPiA+ID4+Pj4+Pj4+ Cj4gPiA+Pj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKPiA+ID4+Pj4+Pj4+Pj4+IGluZGV4IDM4MTU4MWIw MWQ0OC4uMTIxMjk3NzJiZTQ1IDEwMDY0NAo+ID4gPj4+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9kcnYuYwo+ID4gPj4+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9kcnYuYwo+ID4gPj4+Pj4+Pj4+Pj4gQEAgLTM2LDYgKzM2LDcgQEAKPiA+ID4+Pj4+Pj4+Pj4+ Cj4gPiA+Pj4+Pj4+Pj4+PiAgI2luY2x1ZGUgPGRybS9kcm1fY2xpZW50Lmg+Cj4gPiA+Pj4+Pj4+ Pj4+PiAgI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+Cj4gPiA+Pj4+Pj4+Pj4+PiArI2luY2x1ZGUg PGRybS9kcm1fZmJfaGVscGVyLmg+Cj4gPiA+Pj4+Pj4+Pj4+PiAgI2luY2x1ZGUgPGRybS9kcm1Q Lmg+Cj4gPiA+Pj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4gICNpbmNsdWRlICJkcm1fY3J0Y19p bnRlcm5hbC5oIgo+ID4gPj4+Pj4+Pj4+Pj4gQEAgLTg3MSw2ICs4NzIsMTExIEBAIHZvaWQgZHJt X2Rldl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+Pj4+Pj4+Pj4+PiAg fQo+ID4gPj4+Pj4+Pj4+Pj4gIEVYUE9SVF9TWU1CT0woZHJtX2Rldl91bnJlZ2lzdGVyKTsKPiA+ ID4+Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+PiArc3RhdGljIHZvaWQgZGV2bV9kcm1fZGV2X2lu aXRfcmVsZWFzZSh2b2lkICpkYXRhKQo+ID4gPj4+Pj4+Pj4+Pj4gK3sKPiA+ID4+Pj4+Pj4+Pj4+ ICsgZHJtX2Rldl9wdXQoZGF0YSk7Cj4gPiA+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+PiBXZSBuZWVk IGRybV9kZXZfdW5wbHVnKCkgaGVyZSwgb3IgdGhpcyBpc24ndCBzYWZlLgo+ID4gPj4+Pj4+Pj4K PiA+ID4+Pj4+Pj4+IFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VkIHRvIGNvdmVyIHRoZSBlcnJv ciBwYXRoIGlmIHByb2JlIGZhaWxzIGJlZm9yZQo+ID4gPj4+Pj4+Pj4gZGV2bV9kcm1fZGV2X3Jl Z2lzdGVyKCkgaXMgY2FsbGVkLiBkZXZtX2RybV9kZXZfcmVnaXN0ZXJfcmVsZWFzZSgpIGlzCj4g PiA+Pj4+Pj4+PiB0aGUgb25lIHRoYXQgY2FsbHMgdW5wbHVnLiBUaGVyZSBhcmUgY29tbWVudHMg YWJvdXQgdGhpcyBpbiB0aGUgZnVuY3Rpb25zLgo+ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+PiBJIHRo aW5rIEkgZ2V0IGEgcHJpemUgZm9yIGJlaW5nIGlnbm9yYW50IGFuZCBibGluZCA6LS8KPiA+ID4+ Pj4+Pj4KPiA+ID4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+Pj4+ICt9Cj4gPiA+ Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+PiArLyoqCj4gPiA+Pj4+Pj4+Pj4+PiArICogZGV2 bV9kcm1fZGV2X2luaXQgLSBSZXNvdXJjZSBtYW5hZ2VkIGRybV9kZXZfaW5pdCgpCj4gPiA+Pj4+ Pj4+Pj4+PiArICogQHBhcmVudDogUGFyZW50IGRldmljZSBvYmplY3QKPiA+ID4+Pj4+Pj4+Pj4+ ICsgKiBAZGV2OiBEUk0gZGV2aWNlCj4gPiA+Pj4+Pj4+Pj4+PiArICogQGRyaXZlcjogRFJNIGRy aXZlcgo+ID4gPj4+Pj4+Pj4+Pj4gKyAqCj4gPiA+Pj4+Pj4+Pj4+PiArICogTWFuYWdlZCBkcm1f ZGV2X2luaXQoKS4gVGhlIERSTSBkZXZpY2UgaW5pdGlhbGl6ZWQgd2l0aCB0aGlzIGZ1bmN0aW9u IGlzCj4gPiA+Pj4+Pj4+Pj4+PiArICogYXV0b21hdGljYWxseSByZWxlYXNlZCBvbiBkcml2ZXIg ZGV0YWNoLiBZb3UgbXVzdCBzdXBwbHkgYQo+ID4gPj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4gSSB0 aGluayBhIGJpdCBtb3JlIGNsYXJpdHkgaGVyZSB3b3VsZCBiZSBnb29kOgo+ID4gPj4+Pj4+Pj4+ Cj4gPiA+Pj4+Pj4+Pj4gIi4uLiBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkIG9uIGRyaXZlciB1bmJp bmQgYnkgY2FsbGluZCBkcm1fZGV2X3VucGx1ZygpLiIKPiA+ID4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+ Pj4+Pj4gKyAqICZkcm1fZHJpdmVyLnJlbGVhc2UgY2FsbGJhY2sgdG8gY29udHJvbCB0aGUgZmlu YWxpemF0aW9uIGV4cGxpY2l0bHkuCj4gPiA+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+PiBJIHRoaW5r IGEgbG91ZCB3YXJuaW5nIGZvciB0aGVzZSBpcyBpbiBvcmRlcjoKPiA+ID4+Pj4+Pj4+Pgo+ID4g Pj4+Pj4+Pj4+ICJXQVJOSU5HOgo+ID4gPj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4gIkluIGdlbmVy YWxseSBpdCBpcyB1bnNhZmUgdG8gdXNlIGRldm0gZnVuY3Rpb25zIGZvciBkcm0gc3RydWN0dXJl cwo+ID4gPj4+Pj4+Pj4+IGJlY2F1c2UgdGhlIGxpZmV0aW1lcyBvZiAmZHJtX2RldmljZSBhbmQg dGhlIHVuZGVybHlpbmcgJmRldmljZSBkbyBub3QKPiA+ID4+Pj4+Pj4+PiBtYXRjaC4gVGhpcyBo ZXJlIHdvcmtzIGJlY2F1c2UgaXQgZG9lc24ndCBpbW1lZGlhdGVseSBmcmVlIGFueXRoaW5nLCBi dXQKPiA+ID4+Pj4+Pj4+PiBvbmx5IGNhbGxzIGRybV9kZXZfdW5wbHVnKCksIHdoaWNoIGludGVy bmFsbHkgZGVjcmVtZW50cyB0aGUgJmRybV9kZXZpY2UKPiA+ID4+Pj4+Pj4+PiByZWZjb3VudCB0 aHJvdWdoIGRybV9kZXZfcHV0KCkuCj4gPiA+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+PiAiQWxsIG90 aGVyIGRybSBzdHJ1Y3R1cmVzIG11c3Qgc3RpbGwgYmUgZXhwbGljaXRseSByZWxlYXNlZCBpbiB0 aGUKPiA+ID4+Pj4+Pj4+PiAmZHJtX2RyaXZlci5yZWxlYXNlIGNhbGxiYWNrLiIKPiA+ID4+Pj4+ Pj4+Pgo+ID4gPj4+Pj4+Pj4+IFdoaWxlIHRoaW5raW5nIGFib3V0IHRoaXMgSSBqdXN0IHJlYWxp emVkIHRoYXQgd2l0aCB0aGlzIGRlc2lnbiB3ZSBoYXZlIG5vCj4gPiA+Pj4+Pj4+Pj4gZ29vZCBw bGFjZSB0byBjYWxsIGRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKCkuIFdoaWNoIHdlIG5lZWQg dG8sIG9yIGFsbAo+ID4gPj4+Pj4+Pj4+IGtpbmRzIG9mIHRoaW5ncyB3aWxsIGxlYWsgYmFkbHkg KGNvbm5lY3RvcnMsIGZiLCAuLi4pLCBidXQgdGhlcmUncyBubwo+ID4gPj4+Pj4+Pj4+IHBsYWNl IHRvIGNhbGwgaXQ6Cj4gPiA+Pj4+Pj4+Pj4gLSB1bmJpbmQgaXMgdG9vIGVhcmx5LCBzaW5jZSB3 ZSBoYXZlbid0IHlldCBjYWxsZWQgZHJtX2Rldl91bnBsdWcsIGFuZCB0aGUKPiA+ID4+Pj4+Pj4+ PiAgIGRybV9kZXZfdW5yZWdpc3RlciBpbiB0aGVyZSBtdXN0IGJlIGNhbGxlZCBfYmVmb3JlXyB3 ZSBzdGFydCB0byBzaHV0Cj4gPiA+Pj4+Pj4+Pj4gICBkb3duIGFueXRoaW5nLgo+ID4gPj4+Pj4+ Pj4+IC0gZHJtX2RyaXZlci5yZWxlYXNlIGlzIHdheSB0b28gbGF0ZS4KPiA+ID4+Pj4+Pj4+Pgo+ ID4gPj4+Pj4+Pj4+IE9mYyBmb3IgYSByZWFsIGhvdHVucGx1ZyB0aGVyZSdzIG5vIHBvaW50IGlu IHNodXR0aW5nIGRvd24gdGhlIGh3IChpdCdzCj4gPiA+Pj4+Pj4+Pj4gYWxyZWFkeSBnb25lKSwg YnV0IGZvciBhIGRyaXZlciB1bmxvYWQvdW5iaW5kIGl0IHdvdWxkIGJlIG5pY2UgaWYgdGhpcwo+ ID4gPj4+Pj4+Pj4+IGhhcHBlbnMgYXV0b21hdGljYWxseSBhbmQgaW4gdGhlIHJpZ2h0IG9yZGVy Lgo+ID4gPj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4gU28gbm90IHN1cmUgd2hhdCB0byBkbyBoZXJl IHJlYWxseS4KPiA+ID4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+PiBIb3cgYWJvdXQgdGhpcyBjaGFuZ2U6 IChpdCBicmVha3MgdGhlIHJ1bGUgb2YgcHVsbGluZyBoZWxwZXJzIGludG8gdGhlCj4gPiA+Pj4+ Pj4+PiBjb3JlLCBzbyBtYXliZSB3ZSBzaG91bGQgcHV0IHRoZSBkZXZtXyBmdW5jdGlvbnMgaW50 byB0aGUgc2ltcGxlIEtNUwo+ID4gPj4+Pj4+Pj4gaGVscGVyIGluc3RlYWQ/KQo+ID4gPj4+Pj4+ Pgo+ID4gPj4+Pj4+PiBZZWFoIHNtZWxscyBhIGJpdCBtdWNoIGxpa2UgbWlkbGF5ZXIgLi4uIFdo YXQgd291bGQgd29yayBpcyBoYXZpbmcgYSBwaWxlCj4gPiA+Pj4+Pj4+IG1vcmUgZGV2bV8gaGVs cGVyIGZ1bmN0aW9ucywgc28gdGhhdCB3ZSBvbmlvbi11bndyYXAgZXZlcnl0aGluZyBjb3JyZWN0 bHksCj4gPiA+Pj4+Pj4+IGFuZCBpbiB0aGUgcmlnaHQgb3JkZXIuIFNvOgo+ID4gPj4+Pj4+Pgo+ ID4gPj4+Pj4+PiAtIGRldm1fZHJtX2Rldl9pbml0IChhbHdheXMgZG9lcyBhIGRybV9kZXZfcHV0 KCkpCj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+IC0gZGV2bV9kcm1fcG9sbF9lbmFibGUgKHNodXRz IGRvd24gdGhlIHBvbGwgaGVscGVyIHdpdGggYSBkZXZtIGFjdGlvbikKPiA+ID4+Pj4+Pj4KPiA+ ID4+Pj4+Pj4gLSBkZXZtX2RybV9tb2RlX2NvbmZpZ19yZXNldCAoZG9lcyBhbiBhdG9taWNfaGVs cGVyX3NodXRkb3duKCkgYXMgaXQncyBjbGVhbnVwIGFjdGlvbikKPiA+ID4+Pj4+Pj4KPiA+ID4+ Pj4+Pj4gLSBkZXZtX2RybV9kZXZfcmVnaXN0ZXIgKGdyYWJzIGFuIGFkZGl0aW9uYWwgZHJtX2Rl dl9nZXQoKSByZWZlcmVuY2Ugc28gaXQKPiA+ID4+Pj4+Pj4gICBjYW4gY2FsbCBkcm1fZGV2X3Vu cGx1ZygpIHVuY29uZGl0aW9uYWxseSkuCj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4KPiA+ID4+Pj4+ PiBCZWF1dGlmdWwhIEkgcmVhbGx5IGxpa2UgdGhpcywgaXQncyB2ZXJ5IGZsZXhpYmxlLgo+ID4g Pj4+Pj4+Cj4gPiA+Pj4+Pj4gV2hlcmUgc2hvdWxkIGRldm1fZHJtX21vZGVfY29uZmlnX3Jlc2V0 KCkgbGl2ZT8gSXQgd2lsbCBwdWxsIGluIHRoZQo+ID4gPj4+Pj4+IGF0b21pYyBoZWxwZXIuLi4K PiA+ID4+Pj4+Cj4gPiA+Pj4+PiBJIHRoaW5rIGEgbmV3IGRybV9kZXZtLmMgaGVscGVyIHdvdWxk IGJlIG5pY2UgZm9yIGFsbCB0aGlzIHN0dWZmLgo+ID4gPj4+Pj4gRXNwZWNpYWxseSBzaW5jZSB5 b3UgY2FuJ3QgZnJlZWx5IG1peCBkZXZtLWJhc2VkIHNldHVwL2NsZWFudXAgd2l0aAo+ID4gPj4+ Pj4gbm9ybWFsIGNsZWFudXAgSSB0aGluayBpdCdkIGJlIGdvb2QgdG8gaGF2ZSBpdCBhbGwgdG9n ZXRoZXIgaW4gb25lCj4gPiA+Pj4+PiBwbGFjZS4gQW5kIHBlcmhhcHMgZXZlbiBhIGNvZGUgZXhh bXBsZSBpbiB0aGUgRE9DOiBvdmVydmlldy4KPiA+ID4+Pj4+Cj4gPiA+Pj4+Pj4+IFdlJ2QgbmVl ZCB0byBtYWtlIHN1cmUgc29tZSBvZiB0aGUgY2xlYW51cCBhY3Rpb25zIGR0cnQgd2hlbiB0aGUg ZGV2aWNlIGlzCj4gPiA+Pj4+Pj4+IGdvbmUsIGJ1dCBJIHRoaW5rIHdlIGNhbiBhY2hpZXZlIHRo YXQgYnkgbGliZXJhbGx5IHNwcmlua2xpbmcKPiA+ID4+Pj4+Pj4gZHJtX2Rldl9lbnRlci9leGl0 IG92ZXIgdGhlbSwgZS5nLiB0aGUgdGhlIGNsZWFudXAgYWN0aW9uIGZvcgo+ID4gPj4+Pj4+PiBk cm1fbW9kZV9jb25maWdfcmVzZXQgd291bGQgYmU6Cj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+IHsK PiA+ID4+Pj4+Pj4gICAgICAgaWYgKGRybV9kZXZfZW50ZXIoKSkKPiA+ID4+Pj4+Pj4gICAgICAg ICAgICAgICByZXR1cm47Cj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+ICAgICAgIGRybV9hdG9taWNf aGVscGVyX3NodXRkb3duKCk7Cj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+ICAgICAgIGRybV9kZXZf ZXhpdCgpOwo+ID4gPj4+Pj4+PiB9Cj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4KPiA+ID4+Pj4+PiBk cm1fZGV2X2VudGVyKCkgY2FuIG9ubHkgYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBkcm1f ZGV2aWNlIGlzCj4gPiA+Pj4+Pj4gcmVnaXN0ZXJlZCBvciBub3QsIGl0IGRvZXNuJ3Qgc2F5IGFu eXRoaW5nIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgcGFyZW50Cj4gPiA+Pj4+Pj4gZGV2aWNlLgo+ ID4gPj4+Pj4+Cj4gPiA+Pj4+Pj4gQWxsIHdlIGtub3cgaXMgdGhhdCB0aGUgZGV2aWNlIGlzIGJl aW5nIHVuYm91bmQgZnJvbSB0aGUgZHJpdmVyLCB3ZQo+ID4gPj4+Pj4+IGRvbid0IGtub3cgaWYg aXQncyB0aGUgZGV2aWNlIHRoYXQncyBiZWluZyByZW1vdmVkIG9yIGlmIGl0J3MgdGhlIGRyaXZl cgo+ID4gPj4+Pj4+IHRoYXQncyB1bnJlZ2lzdGVyZWQuCj4gPiA+Pj4+Pgo+ID4gPj4+Pj4gWW91 J3JlIHJpZ2h0LCBib3RoIHBhdGhzIHdpbGwgaGF2ZSBjYWxsZWQgZHJtX2Rldl91bnBsdWcgYnkg dGhlbi4KPiA+ID4+Pj4+IFNpbGx5IG1lLiBJIHJlYWxseSBsaWtlZCBteSBpZGVhIDotKQo+ID4g Pj4+Pj4KPiA+ID4+Pj4+PiBJIGhhdmUgbG9va2VkIGF0IHRoZSB2YXJpb3VzIGNhbGwgY2hhaW5z Ogo+ID4gPj4+Pj4+Cj4gPiA+Pj4+Pj4gZHJpdmVyX3VucmVnaXN0ZXIgLT4KPiA+ID4+Pj4+PiAg ICAgYnVzX3JlbW92ZV9kcml2ZXIgLT4KPiA+ID4+Pj4+PiAgICAgICAgIGRyaXZlcl9kZXRhY2gg LT4KPiA+ID4+Pj4+PiAgICAgICAgICAgICBkZXZpY2VfcmVsZWFzZV9kcml2ZXJfaW50ZXJuYWwK PiA+ID4+Pj4+Pgo+ID4gPj4+Pj4+IGRldmljZV91bnJlZ2lzdGVyIC0+Cj4gPiA+Pj4+Pj4gICAg IGRldmljZV9kZWwgLT4KPiA+ID4+Pj4+PiAgICAgICAgIGJ1c19yZW1vdmVfZGV2aWNlIC0+Cj4g PiA+Pj4+Pj4gICAgICAgICAgICAgZGV2aWNlX3JlbGVhc2VfZHJpdmVyIC0+Cj4gPiA+Pj4+Pj4g ICAgICAgICAgICAgICAgIGRldmljZV9yZWxlYXNlX2RyaXZlcl9pbnRlcm5hbAo+ID4gPj4+Pj4+ Cj4gPiA+Pj4+Pj4gc3lzZnM6IHVuYmluZF9zdG9yZSAtPgo+ID4gPj4+Pj4+ICAgICBkZXZpY2Vf cmVsZWFzZV9kcml2ZXIgLT4KPiA+ID4+Pj4+PiAgICAgICAgIGRldmljZV9yZWxlYXNlX2RyaXZl cl9pbnRlcm5hbAo+ID4gPj4+Pj4+Cj4gPiA+Pj4+Pj4gVGhlIG9ubHkgd2F5IEkndmUgZm91bmQg dG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZXNlIGluIGEgY2xlYW51cAo+ID4gPj4+Pj4+IGFj dGlvbiBpcyB0aGF0IGRldmljZV9kZWwoKSB1c2VzIHRoZSBidXMgbm90aWZpZXIgdG8gc2lnbmFs Cj4gPiA+Pj4+Pj4gQlVTX05PVElGWV9ERUxfREVWSUNFIGJlZm9yZSBjYWxsaW5nIGJ1c19yZW1v dmVfZGV2aWNlKCkuIFN1Y2ggYQo+ID4gPj4+Pj4+IG5vdGlmaWVyIGNvdWxkIGJlIHVzZWQgdG8g c2V0IGEgZHJtX2RldmljZS0+cGFyZW50X3JlbW92ZWQgZmxhZy4KPiA+ID4+Pj4+Cj4gPiA+Pj4+ PiBIbSwgdGhpcyBtaWdodCB1cHNldCBHcmVnIEtIJ3MgY29kZSB0YXN0ZSAuLi4gbWF5YmUgdGhl cmUncyBhIGJldHRlcgo+ID4gPj4+Pj4gd2F5IHRvIGRvIHRoaXMsIGJ1dCBiZXN0IHRvIHByb3Rv dHlwZSBhIHBhdGNoIHdpdGggdGhpcywgc2VuZCBpdCB0bwo+ID4gPj4+Pj4gaGltIGFuZCBhc2sg aG93IHRvIDotKQo+ID4gPj4+Pj4KPiA+ID4+Pj4KPiA+ID4+Pj4gSSdsbCBsZWF2ZSB0aGlzIHRv IHRoZSBvbmUgdGhhdCBuZWVkcyBpdC4gVGhlIHRpbnlkcm0gZHJpdmVycyBkb2Vzbid0Cj4gPiA+ Pj4+IG5lZWQgdG8gdG91Y2ggaHcgYWZ0ZXIgRFJNIHVucmVnaXN0ZXIuCj4gPiA+Pj4+Cj4gPiA+ Pj4+Pj4gV2h5IGlzIGl0IG5lY2Vzc2FyeSB0byBjYWxsIGRybV9hdG9taWNfaGVscGVyX3NodXRk b3duKCkgaGVyZT8gRG9lc24ndAo+ID4gPj4+Pj4+IGV2ZXJ5dGhpbmcgZ2V0IGRpc2FibGVkIHdo ZW4gdXNlcnNwYWNlIGNsb3Nlcz8gSXQgZG9lcyBpbiBteSB0aW55ZHJtCj4gPiA+Pj4+Pj4gd29y bGQgOi0pCj4gPiA+Pj4+Pgo+ID4gPj4+Pj4gSWlyYyBmYmRldi9mYmNvbiBjYW4gcmVzdWx0IGlu IGxlYWtzIC4uLiBhdCBsZWFzdCB3ZSd2ZSBoYWQgcGF0Y2hlcwo+ID4gPj4+Pj4gd2hlcmUgZHJp dmVycyBsZWFrZWQgZHJtX2Nvbm5lY3RvciBhbmQgZHJtX2ZyYW1lYnVmZmVyIG9iamVjdHMsIGFu ZAo+ID4gPj4+Pj4gdGhleSd2ZSBiZWVuIGZpeGVkIGJ5IGNhbGxpbmcgZHJtX2F0b21pY19oZWxw ZXJfc2h1dGRvd24oKSBpbiB0aGUKPiA+ID4+Pj4+IHVubG9hZCBwYXRoLiBNYXliZSB0aGlzIGlz IGNhcmdvLWN1bHRpbmcsIGJ1dCBpdCBnb2VzIHdheSBiYWNrIHRvCj4gPiA+Pj4+PiBwcmUtYXRv bWljLCB3aGVyZSBkcml2ZXJzIGNhbGxlZCBkcm1faGVscGVyX2ZvcmNlX2Rpc2FibGVfYWxsKCku Cj4gPiA+Pj4+Pgo+ID4gPj4+Pj4gSWYgeW91IHRyeSB0byBtb3ZlIHRoZSBmYmNvbiB0byB5b3Vy IHRpbnlkcm0gZHJpdmVycyAoY29uMmZiIGlzCj4gPiA+Pj4+PiBhcHBhcmVudGx5IHRoZSBjbWRs aW5lIHRvb2wgeW91IG5lZWQsIG5ldmVyIHRyaWVkIGl0LCBJIG9ubHkgc3dpdGNoCj4gPiA+Pj4+ PiB0aGUga2VybmVsJ3MgY29uc29sZSBiZXR3ZWVuIGZiY29uIGFuZCBkdW1teWNvbiBhbmQgYmFj aywgbm90IHdoYXQKPiA+ID4+Pj4+IGZiY29uIGRyaXZlcnMgaXRzZWxmKSwgdGhlbiBJIHRoaW5r IHlvdSBzaG91bGQgYmUgYWJsZSB0byByZXByb2R1Y2UuCj4gPiA+Pj4+PiBBbmQgbWF5YmUgeW91 IGhhdmUgYSBiZXR0ZXIgaWRlYSBob3cgdG8gZGVhbCB3aXRoIHRoaXMgYWxsLgo+ID4gPj4+Pj4K PiA+ID4+Pj4+IE5vdGUgYWxzbyB0aGF0IHRoZXJlJ3MgYmVlbiBwcm9wb3NhbHMgZmxvYXRpbmcg YXJvdW5kIHRvIG9ubHkgY2xvc2UgYW4KPiA+ID4+Pj4+IGRybV9mcmFtZWJ1ZmZlciwgbm90IGFs c28gcmVtb3ZlIGl0IChsaWtlIHRoZSBjdXJyZW50IFJNRkIgaW9jdGwKPiA+ID4+Pj4+IGRvZXMp LCB3aXRoIHRoYXQgY2xvc2luZyB1c2Vyc3BhY2Ugd291bGQgbm90IG5lY2Vzc2FyaWx5IGxlYWQg dG8gYQo+ID4gPj4+Pj4gZnVsbCBjbGVhbnVwLgo+ID4gPj4+Pj4KPiA+ID4+Pj4+IEFub3RoZXIg dGhpbmcgKHdoaWNoIGRvZXNuJ3QgYXBwbHkgdG8gZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgZHJp dmVycykKPiA+ID4+Pj4+IGlzIGlmIHlvdSBoYXZlIHRoZSBkaXNwbGF5IG9uLCBidXQgbm8gcGxh bmVzIHNob3dpbmcgKGkuZS4gYWxsIGJsYWNrKS4KPiA+ID4+Pj4+IFRoZW4gYWxsIHRoZSBmYnMg d2lsbCBiZSBjbGVhbmVkIHVwLCBidXQgZHJtX2Nvbm5lY3RvciB3aWxsIGJlCj4gPiA+Pj4+PiBs ZWFraW5nLiBUaGF0J3MgYSBjYXNlIHdoZXJlIHlvdSBuZWVkIGRybV9hdG9taWNfaGVscGVyX3No dXRkb3duKCkKPiA+ID4+Pj4+IGV2ZW4gaWYgZmJjb24vZmJkZXYgaXNuJ3QgZXZlbiBlbmFibGVk Lgo+ID4gPj4+Pj4KPiA+ID4+Pj4KPiA+ID4+Pj4gT2ssIHRoaXMgbWVhbnMgdGhhdCBJIGRvbid0 IG5lZWQgdG8gY2FsbCBkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bigpIGluCj4gPiA+Pj4+IHRp bnlkcm0uIERSTSB1c2Vyc3BhY2UgZGlzYWJsZXMgdGhlIHBpcGUgb24gY2xvc2UgYW5kIHRoZSBn ZW5lcmljIGZiZGV2Cj4gPiA+Pj4+IGVtdWxhdGlvbiBhbHNvIHJlbGVhc2VzIGV2ZXJ5dGhpbmcu Cj4gPiA+Pj4+IEV2ZW4gc28sIG1heWJlIEkgc2hvdWxkIHVzZSBkZXZtX2RybV9tb2RlX2NvbmZp Z19yZXNldCgpIGFmdGVyIGFsbCB0bwo+ID4gPj4+PiBrZWVwIGRyaXZlcnMgdW5pZm9ybSwgdG8g YXZvaWQgY29uZnVzaW9uOiB3aHkgZG9lc24ndCBoZSB1c2UgaXQ/Cj4gPiA+Pj4KPiA+ID4+PiBI bSBtYXliZSB0aGVyZSBpcyBhbiBvZmZpY2lhbCB3YXkgdG8gc29sdmUgdGhpcywgcHVsbGluZyBp biBHcmVnK1JhZmFlbC4KPiA+ID4+Pgo+ID4gPj4+IFN1cGVyIHNob3J0IHN1bW1hcnk6IFdlIHdh bnQgdG8gc3RhcnQgdXNpbmcgZGV2bSBhY3Rpb25zIHRvIGNsZWFuIHVwIGRybQo+ID4gPj4+IGRy aXZlcnMuIEhlcmUncyB0aGUgcHJvYmxlbToKPiA+ID4+PiAtIEZvciBhIGRyaXZlciB1bmxvYWQv dW5iaW5kIHdpdGhvdXQgaG90dW5wbHVnLCB3ZSB3YW50IHRvIHByb3Blcmx5IGNsZWFuCj4gPiA+ Pj4gICB1cCB0aGUgaGFyZHdhcmUgYW5kIHNodXQgaXQgYWxsIGRvd24uCj4gPiA+Pgo+ID4gPj4g VGhlbiBkbyBpdCBvbiBwcm9iZS9kaXNjb25uZWN0Lgo+ID4gPj4KPiA+ID4+PiAtIEJ1dCBpZiB0 aGUgZGV2aWNlIGlzIHVucGx1Z2dlZCBhbHJlYWR5LCB0aGF0J3MgcHJvYmFibHkgbm90IHRoZSBi ZXN0Cj4gPiA+Pj4gICBpZGVhLCBhbmQgd2Ugb25seSB3YW50IHRvIGNsZWFuIHVwIHRoZSBrZXJu ZWwncyByZXNvdXJjZXMvYWxsb2NhdGlvbnMuCj4gPiA+Pgo+ID4gPj4gQWdhaW4sIHByb2JlL2Rp c2Nvbm5lY3Qgd2lsbCBiZSBjYWxsZWQgZWl0aGVyIHdheS4KPiA+ID4+Cj4gPiA+PiBCdXQgYXMg eW91IG5vdGUsIG1lbW9yeSB3aWxsIE5PVCBiZSBmcmVlZCBieSB0aGUgZGV2bSBzdHVmZiBpZiB5 b3UKPiA+ID4+IG1hbnVhbGx5IHVuYmluZCBhIGRyaXZlciBmcm9tIGEgZGV2aWNlLgo+ID4gPj4K PiA+ID4+IFNvIGRvbid0IHRvdWNoIGhhcmR3YXJlIHRoZXJlLCBpdCdzIG5vdCBnb2luZyB0byB3 b3JrIDopCj4gPiA+Pgo+ID4gPj4+IFdoYXQncyB0aGUgcmVjb21tZW5kYXRpb24gaGVyZT8gSSBz ZWUgYSBmZXcgb3B0aW9uczoKPiA+ID4+Pgo+ID4gPj4+IC0gTWFrZSBzdXJlIGV2ZXJ5dGhpbmcg Y2FuIGRlYWwgd2l0aCB0aGlzIHByb3Blcmx5LiBIb3R1bnBsdWcgY2FuIGhhcHBlbgo+ID4gPj4+ ICAgYW55dGltZSwgc28gdGhlcmUncyBhIHJhY2Ugbm8gbWF0dGVyIHdoYXQuCj4gPiA+Pgo+ID4g Pj4gWWVzLgo+ID4gPj4KPiA+ID4+PiAtIENoZWNrIHdpdGggdGhlIGRldmljZSBtb2RlbCB3aGV0 aGVyIHRoZSBzdHJ1Y3QgZGV2aWNlIGlzIGRpc2FwcGVhcmluZyBvcgo+ID4gPj4+ICAgd2hldGhl ciB3ZSdyZSBqdXN0IGRlYWxpbmcgd2l0aCBhIGRyaXZlciB1bmJpbmQgKG5vIGlkZWEgaG93IHRv IGRvCj4gPiA+Pj4gICB0aGF0KSwgYW5kIGFjdCBhY2NvcmRpbmdseS4KPiA+ID4+Cj4gPiA+PiBZ b3UgZG9uJ3Qga25vdyB0aGF0LCBzb3JyeS4gIEp1c3QgZG8gYW55IGhhcmR3YXJlIHN0dWZmIG9u IGRpc2Nvbm5lY3QuCj4gPiA+PiBBc3N1bWluZyB5b3VyIGhhcmR3YXJlIGlzIHN0aWxsIHByZXNl bnQgOikKPiA+ID4+Cj4gPiA+Pj4gLSBGdW5kYW1lbnRhbCBxdWVzdGlvbjogVG91Y2hpbmcgdGhl IGh3IGZyb20gZGV2bSBhY3Rpb25zLCBpcyB0aGF0IG9rPyBJZgo+ID4gPj4+ICAgbm90LCB0aGVu IHRoZSBwcmV0dHkgbmlmdHkgcGxhbiBsYWlkIG91dCBpbiB0aGlzIHRocmVhZCB3b250IHdvcmsu Cj4gPiA+Pgo+ID4gPj4gTm9wZSwgdGhhdCdzIG5vdCBnb2luZyB0byB3b3JrLCB0aGUgZGV2aWNl IGNvdWxkIGVpdGhlciBiZSBsb25nIGdvbmUsIG9yCj4gPiA+PiB5b3Ugd2lsbCBub3QgYmUgY2Fs bGVkIGR1ZSB0byB1bmJpbmQgaGFwcGVuaW5nIGZyb20gdXNlcnNwYWNlLgo+ID4gPj4KPiA+ID4+ IEJ1dCByZWFsbHksIHVuYmluZCBmcm9tIHVzZXJzcGFjZSBpcyB2ZXJ5IHZlcnkgcmFyZSwgaXQn cyBhIGRldmVsb3Blcgo+ID4gPj4gdGhpbmcgbW9zdGx5LiAgT2ggYW5kIGEgdmlydHVhbCBkcml2 ZXIgdGhpbmcsIGJ1dCB0aG9zZSBwZW9wbGUgYXJlIGNyYXp5Cj4gPiA+PiA6KQo+ID4gPj4KPiA+ ID4+PiAtIFNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudD8KPiA+ID4+Cj4gPiA+PiBEbyBp dCBpbiBkaXNjb25uZWN0IDopCj4gPiA+IAo+ID4gPiBBaCwgSSBmb3Jnb3QgdG8gbWVudGlvbiB0 aGUgaW1wb3J0YW50IGNvbnN0cmFpbnQgOi0pIGRpc2Nvbm5lY3QvdW5iaW5kCj4gPiA+IHNob3Vs ZCBiZSB0aGUgZm9sbG93aW5nIHNlcXVlbmNlOgo+ID4gPiAKPiA+ID4gMS4gVW5yZWdpc3RlciBh bGwgdGhlIHVzZXJzcGFjZSBpbnRlcmZhY2VzICh0aGVyZSdzIGEgbG90IG9mIHRoZW0pIGFuZAo+ ID4gPiBtYWtlIHN1cmUgYWxsIHRoZSBwZW5kaW5nIGlvY3RscyBhcmUgZG9uZSBzbyB0aGF0IGZy b20gbm93IG9uCj4gPiA+IHVzZXJzcGFjZSBzZWVzIGxvdHMgb2YgLUVJTyAoaW4gY2FzZSBpdCBz dGlsbCBoYXMgZmQgb3Blbiwgd2hpY2ggaXMKPiA+ID4gZ29pbmcgdG8gYmUgdGhlIG5vcm1hbCBm b3IgaG90dW5wbHVnLgo+ID4gPiAKPiA+ID4gMi4gU2h1dCBkb3duIGh3IGFuZCBhbGwgb25nb2lu ZyBvcGVyYXRpb25zIChvbmx5IHJlbGV2YW50IGZvciB1bmJpbmQsCj4gPiA+IGJ1dCBuZWVkcyB0 byBiZSBhYmxlIHRvIGNvcGUgd2l0aCBzdWRkZW4gaG90dW5wbHVnIG9uIHRvcCBhbnl3YXkpLgo+ ID4gPiAKPiA+ID4gMy4gQ2xlYW4gdXAgdGhlIGtlcm5lbCBtZXNzIGFuZCByZWxlYXNlIGV2ZXJ5 dGhpbmcuCj4gPiA+IAo+ID4gPiBQcm9iZSBpcyBleGFjdGx5IHRoZSBvdGhlciB3YXkgcm91bmQs IHNvIHdvdWxkIHBlcmZlY3RseSBmaXQgaW50byB0aGUKPiA+ID4gZGV2bSBvbmlvbiBjbGVhbnVw LiBTZWUgaW4gdGhlIGNvbW1lbnRlZCBlYXJsaWVyIHJlcGxpZXMgYWJvdmUgaG93Cj4gPiA+IHRo YXQgd291bGQgbWF0Y2ggaW4gZGV0YWlscywgYnV0IHRsZHI7IGlmIHdlIGhhdmUgdG8gZG8gMi4g aW4KPiA+ID4gZGlzY29ubmVjdCwgdGhlbiB3ZSBhbHNvIGhhdmUgdG8gZG8gMS4gaW4gZGlzY29u bmVjdGVkLCBhbmQgb25seSBkb2luZwo+ID4gPiAzLiB0aHJvdWdoIGRldm0gaXMgYWxtb3N0IG5v dCB3b3J0aCB0aGUgYm90aGVyLiBCdXQgaWYgd2UgY291bGQgZG8gYWxsCj4gPiA+IHRocmVlIHRo cm91Z2ggZGV2bSB0aGVuIHNpbXBsZSBkcml2ZXJzIHdvdWxkbid0IGV2ZW4gbmVlZCBhbnkKPiA+ ID4gZGlzY29ubmVjdC91bmJpbmQgY2FsbGJhY2sgYXQgYWxsLiBUaGF0J3Mgb3VyIG1vdGl2YXRp b24gZm9yIHRyeWluZyB0bwo+ID4gPiBjb21lIHVwIHdpdGggYW4gYW5zd2VyIHRoYXQncyBub3Qg ImRvIGl0IGluIGRpc2Nvbm5lY3QiLiAiZG8gaXQgaW4KPiA+ID4gZGlzY29ubmVjdCIgaXMgaG93 IHdlIGRvIGl0IGFsbCB0b2RheSBhbHJlYWR5Lgo+ID4gPiAKPiA+ID4gWWVzIHdlJ3JlIHRyeWlu ZyB0byBtYWtlIHRpbnkgZHJpdmVycyBldmVuIHNtYWxsZXIsIHdlIGhhdmUgZW5vdWdoCj4gPiA+ IG5vd2FkYXlzIHRoYXQgdGhpcyBzdHVmZiB3b3VsZCBiZSB3b3J0aCBpdCA6LSkKPiA+ID4gCj4g PiAKPiA+IEkgdGhpbmsgYSBzb2x1dGlvbiBpcyB0byBzYXkgdGhhdCBkcml2ZXJzIHRoYXQgd2Fu dCB0byB0b3VjaCBodyBvbgo+ID4gZGlzY29ubmVjdCBuZWVkcyB0byB1c2UgZGV2aWNlX2RyaXZl ci0+cmVtb3ZlIHRvIGRvIHRoYXQuCj4gPiAKPiA+IFRoaXMgaXMgYW4gZXhhbXBsZSBkcml2ZXIg dGhhdCBkb2Vzbid0IG5lZWQgdG8gdG91Y2ggaHcgYmVjYXVzZSBpdCdzIHNvCj4gPiBzaW1wbGUg dGhhdCB1c2Vyc3BhY2UgaGFzIGRpc2FibGVkIHRoZSBwaXBlbGluZToKPiA+IAo+ID4gc3RhdGlj IHZvaWQgZHJtX2RyaXZlcl9yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pCj4gPiB7Cj4g PiAJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKPiA+IAlkcm1fZGV2X2ZpbmkoZHJtKTsK PiA+IAlrZnJlZShkcm0pOwo+ID4gfQo+ID4gCj4gPiBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIg ZHJtX2RyaXZlciA9IHsKPiA+IAkucmVsZWFzZSA9IGRybV9kcml2ZXJfcmVsZWFzZSwKPiA+IAkv KiAuLi4gKi8KPiA+IH07Cj4gPiAKPiA+IHN0YXRpYyBpbnQgZHJpdmVyX3Byb2JlKHN0cnVjdCBk ZXZpY2UgKmRldikKPiA+IHsKPiA+IAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOwo+ID4gCWludCBy ZXQ7Cj4gPiAKPiA+IAlkcm0gPSBremFsbG9jKHNpemVvZigqZHJtKSwgR0ZQX0tFUk5FTCk7Cj4g PiAJaWYgKCFkcm0pCj4gPiAJCXJldHVybiAtRU5PTUVNOwo+ID4gCj4gPiAJcmV0ID0gZGV2bV9k cm1fZGV2X2luaXQoZGV2LCBkcm0sICZkcm1fZHJpdmVyKTsKPiA+IAlpZiAocmV0KSB7Cj4gPiAJ CWtmcmVlKGRybSk7Cj4gPiAJCXJldHVybiByZXQ7Cj4gPiAJfQo+ID4gCj4gPiAJZHJtX21vZGVf Y29uZmlnX2luaXQoZHJtKTsKPiA+IAo+ID4gCS8qIEFxdWlyZSB2YXJpb3VzIHJlc291cmNlcywg YWxsIG1hbmFnZWQgYnkgZGV2cmVzICovCj4gPiAKPiA+IAlkcm1fbW9kZV9jb25maWdfcmVzZXQo ZHJtKTsKPiA+IAo+ID4gCXJldHVybiBkZXZtX2RybV9kZXZfcmVnaXN0ZXIoZHJtKTsKPiA+IH0K PiA+IAo+ID4gc3RydWN0IGRldmljZV9kcml2ZXIgZHJpdmVyID0gewo+ID4gCS5wcm9iZSA9IGRy aXZlcl9wcm9iZSwKPiA+IH07Cj4gPiAKPiA+IAo+ID4gQSBkcml2ZXIgdGhhdCB3YW50cyB0byB0 b3VjaCBoYXJkd2FyZSBvbiBkaXNjb25uZWN0LCBjYW4gbG9vayBsaWtlIHRoaXM6Cj4gPiAKPiA+ IHN0YXRpYyB2b2lkIGRybV9kcml2ZXJfcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQo+ ID4gewo+ID4gCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRybSk7Cj4gPiAJZHJtX2Rldl9maW5p KGRybSk7Cj4gPiAJa2ZyZWUoZHJtKTsKPiA+IH0KPiA+IAo+ID4gc3RhdGljIHN0cnVjdCBkcm1f ZHJpdmVyIGRybV9kcml2ZXIgPSB7Cj4gPiAJLnJlbGVhc2UgPSBkcm1fZHJpdmVyX3JlbGVhc2Us Cj4gPiAJLyogLi4uICovCj4gPiB9Owo+ID4gCj4gPiBzdGF0aWMgaW50IGRyaXZlcl9wcm9iZShz dHJ1Y3QgZGV2aWNlICpkZXYpCj4gPiB7Cj4gPiAJc3RydWN0IGRybV9kZXZpY2UgKmRybTsKPiA+ IAlpbnQgcmV0Owo+ID4gCj4gPiAJZHJtID0ga3phbGxvYyhzaXplb2YoKmRybSksIEdGUF9LRVJO RUwpOwo+ID4gCWlmICghZHJtKQo+ID4gCQlyZXR1cm4gLUVOT01FTTsKPiA+IAo+ID4gCXJldCA9 IGRldm1fZHJtX2Rldl9pbml0KGRldiwgZHJtLCAmZHJtX2RyaXZlcik7Cj4gPiAJaWYgKHJldCkg ewo+ID4gCQlrZnJlZShkcm0pOwo+ID4gCQlyZXR1cm4gcmV0Owo+ID4gCX0KPiA+IAo+ID4gCWRy bV9tb2RlX2NvbmZpZ19pbml0KGRybSk7Cj4gPiAKPiA+IAkvKiBBcXVpcmUgdmFyaW91cyByZXNv dXJjZXMsIGFsbCBtYW5hZ2VkIGJ5IGRldnJlcyAqLwo+ID4gCj4gPiAJZHJtX21vZGVfY29uZmln X3Jlc2V0KGRybSk7Cj4gPiAKPiA+IAlyZXQgPSBkcm1fZGV2X3JlZ2lzdGVyKGRybSk7Cj4gPiAJ aWYgKHJldCkKPiA+IAkJcmV0dXJuIHJldDsKPiA+IAo+ID4gCWRybV9kZXZfZ2V0KGRldik7IC8q IElmIHVzaW5nIGRybV9kZXZfdW5wbHVnKCkgKi8KPiA+IAo+ID4gCWRldl9zZXRfZHJ2ZGF0YShk ZXYsIGRybSk7Cj4gPiAKPiA+IAlyZXR1cm4gMDsKPiA+IH0KPiA+IAo+ID4gLyogVGhpcyBmdW5j dGlvbiBpcyBjYWxsZWQgYmVmb3JlIGRldnJlc19yZWxlYXNlX2FsbCgpICovCj4gPiBzdGF0aWMg aW50IGRyaXZlcl9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQo+ID4gewo+ID4gCXN0cnVjdCBk cm1fZGV2aWNlICpkcm0gPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiA+IAo+ID4gCWRybV9kZXZf dW5wbHVnKGRybSk7IE9SIGRybV9kZXZfdW5yZWdpc3Rlcihkcm0pOwo+ID4gCWRybV9hdG9taWNf aGVscGVyX3NodXRkb3duKGRybSkKPiA+IAo+ID4gCXJldHVybiAwOwo+ID4gfQo+ID4gCj4gPiBz dHJ1Y3QgZGV2aWNlX2RyaXZlciBkcml2ZXIgPSB7Cj4gPiAJLnByb2JlID0gZHJpdmVyX3Byb2Jl LAo+ID4gCS5yZW1vdmUgPSBkcml2ZXJfcmVtb3ZlLAo+IAo+IFRoYXQncyBleGFjdGx5IHRoZSBw YXR0ZXJuIEknbSB0cnlpbmcgdG8gYXZvaWQsIGJlY2F1c2UgaW1vIHlvdXIgdGlueQo+IGRyaXZl ciBfYWxzb18gc2hvdWxkIGRvIHRoaXMuIE9yIHdlIHJlYWxpemUgdGhhdCBhbGwgdGhlIGN1cnJl bnQgZHJpdmVycwo+IGRvaW5nIGRybV9hdG9taWNfaGVscGVyX3NodXRkb3duIGFyZSBtaXNndWlk ZWQsIGJ1dCBJJ20gbm90IHJlYWxseQo+IHVuZGVyc3RhbmRpbmcgd2h5Lgo+IAo+IEhhdmluZyBh IGRldm0gaGVscGVyIHdoaWNoIGNhbm5vdCBiZSB1c2VkIGZvciBzb21lIGRyaXZlcnMgZHVlIHRv Cj4gZnVuZGFtZW50YWwgZGVzaWduIGlzc3VlcyBpcyBraW5kYSBub3QgZ3JlYXQsIGJlY2F1c2Ug aXQgbWVhbnMgZXZlcnlvbmUKPiB3aWxsIHN0aWxsIHVzZSBpdCwgYW5kIHNocnVnIHRoZSBidWdz IG9mZiBhcyAibm90IG15IHByb2JsZW0iLiBXaGljaCBpcwo+IHdoYXQncyBoYXBwZW5pbmcgcmln aHQgbm93IHdpdGggYWxsIHRoZSBkZXZtX2t6YWxsb2Mgd2UgaGF2ZSBpbiBkcm0KPiBkcml2ZXJz IHRoYXQgYWxsIHRoZSBnZXQgbGlmZXRpbSB3cm9uZy4gQnV0IGJlY2F1c2UgZGV2bV8gaXMgY29u dmVuaWVudAo+IGV2ZXJ5b25lIHVzZXMgaXQsIHNvIHRoZSBkcml2ZXIgdW5sb2FkIG9mIG1vc3Qg ZHJpdmVycyBpcyBmdWxsIG9mIGJ1Z3MuCgpkcml2ZXIgInVubG9hZCIgc2hvdWxkIG5vdCBiZSBm dWxsIG9mIGJ1Z3MsIGhvdyB3b3VsZCBpdD8gIEFueXRoaW5nCmNyZWF0ZWQgd2l0aCBkZXZtXygp IHdpbGwganVzdCBiZSBmcmVlZCB3aGVuIHRoZSBkZXZpY2UgcmVhbGx5IGdvZXMgYXdheQppbiB0 aGUgc3lzdGVtLCBpdCBzaG91bGRuJ3QgY2FsbCBiYWNrIGludG8gdGhlIGRyaXZlci4KCkFuZCB5 ZXMsIGRldm1fKCkgaXMgYSBjcnV0Y2gsIG9uZSB0aGF0IEkgcmVhbGx5IGRvbid0IGxpa2UsIGJ1 dCBJCnVuZGVyc3RhbmQgdGhlIGFwZWFsLiAgQW5kIGluIDk1JSBvZiB0aGUgY2FzZXMsIGl0IGNh biB3b3JrIGp1c3QgZmluZSBhcwpubyBvbmUgZXZlciBkb2VzIHVuYmluZC9iaW5kIGZyb20gdXNl cnNwYWNlLCBhbmQgaWYgdGhleSBkaWQsIHRoZXkgd291bGQKbmV2ZXIgbm90aWNlIHRoZSBtZW1v cnkgaXNzdWVzLgoKc29ycnksCgpncmVnIGstaApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK