From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/6] drm/drv: Prepare to remove drm_dev_unplug() Date: Wed, 6 Feb 2019 16:26:26 +0100 Message-ID: <20190206152626.GI3271@phenom.ffwll.local> References: <20190203154200.61479-1-noralf@tronnes.org> <20190203154200.61479-3-noralf@tronnes.org> <20190204154153.GT3271@phenom.ffwll.local> <20190205091118.GC3271@phenom.ffwll.local> <2162dc93-7454-2358-3b4c-81eaa0e68821@tronnes.org> <20190205163144.GF3271@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2CA206E994 for ; Wed, 6 Feb 2019 15:26:32 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id h50so6213520ede.5 for ; Wed, 06 Feb 2019 07:26:32 -0800 (PST) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: David1.Zhou@amd.com, oleksandr_andrushchenko@epam.com, intel-gfx@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, alexander.deucher@amd.com, airlied@redhat.com, christian.koenig@amd.com List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBGZWIgMDUsIDIwMTkgYXQgMDY6NTc6NTBQTSArMDEwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IAo+IAo+IERlbiAwNS4wMi4yMDE5IDE3LjMxLCBza3JldiBEYW5pZWwgVmV0dGVy Ogo+ID4gT24gVHVlLCBGZWIgMDUsIDIwMTkgYXQgMTE6MjA6NTVBTSArMDEwMCwgTm9yYWxmIFRy w7hubmVzIHdyb3RlOgo+ID4+Cj4gPj4KPiA+PiBEZW4gMDUuMDIuMjAxOSAxMC4xMSwgc2tyZXYg RGFuaWVsIFZldHRlcjoKPiA+Pj4gT24gTW9uLCBGZWIgMDQsIDIwMTkgYXQgMDY6MzU6MjhQTSAr MDEwMCwgTm9yYWxmIFRyw7hubmVzIHdyb3RlOgo+ID4+Pj4KPiA+Pj4+Cj4gPj4+PiBEZW4gMDQu MDIuMjAxOSAxNi40MSwgc2tyZXYgRGFuaWVsIFZldHRlcjoKPiA+Pj4+PiBPbiBTdW4sIEZlYiAw MywgMjAxOSBhdCAwNDo0MTo1NlBNICswMTAwLCBOb3JhbGYgVHLDuG5uZXMgd3JvdGU6Cj4gPj4+ Pj4+IFRoZSBvbmx5IHRoaW5nIG5vdyB0aGF0IG1ha2VzIGRybV9kZXZfdW5wbHVnKCkgc3BlY2lh bCBpcyB0aGF0IGl0IHNldHMKPiA+Pj4+Pj4gZHJtX2RldmljZS0+dW5wbHVnZ2VkLiBNb3ZlIHRo aXMgY29kZSB0byBkcm1fZGV2X3VucmVnaXN0ZXIoKSBzbyB0aGF0IHdlCj4gPj4+Pj4+IGNhbiBy ZW1vdmUgZHJtX2Rldl91bnBsdWcoKS4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gU2lnbmVkLW9mZi1ieTog Tm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Cj4gPj4+Pj4+IC0tLQo+ID4+Pj4K PiA+Pj4+IFsuLi5dCj4gPj4+Pgo+ID4+Pj4+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYyB8 IDI3ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQo+ID4+Pj4+PiAgaW5jbHVkZS9kcm0vZHJt X2Rydi5oICAgICB8IDEwICsrKystLS0tLS0KPiA+Pj4+Pj4gIDIgZmlsZXMgY2hhbmdlZCwgMTkg aW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCj4gPj4+Pj4+Cj4gPj4+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYu Ywo+ID4+Pj4+PiBpbmRleCAwNWJiYzJiNjIyZmMuLmUwOTQxMjAwZWRjNiAxMDA2NDQKPiA+Pj4+ Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYwo+ID4+Pj4+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2Rydi5jCj4gPj4+Pj4+IEBAIC0zNjYsMTUgKzM2Niw2IEBAIEVYUE9SVF9T WU1CT0woZHJtX2Rldl9leGl0KTsKPiA+Pj4+Pj4gICAqLwo+ID4+Pj4+PiAgdm9pZCBkcm1fZGV2 X3VucGx1ZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4+Pj4+PiAgewo+ID4+Pj4+PiAtCS8q Cj4gPj4+Pj4+IC0JICogQWZ0ZXIgc3luY2hyb25pemluZyBhbnkgY3JpdGljYWwgcmVhZCBzZWN0 aW9uIGlzIGd1YXJhbnRlZWQgdG8gc2VlCj4gPj4+Pj4+IC0JICogdGhlIG5ldyB2YWx1ZSBvZiAt PnVucGx1Z2dlZCwgYW5kIGFueSBjcml0aWNhbCBzZWN0aW9uIHdoaWNoIG1pZ2h0Cj4gPj4+Pj4+ IC0JICogc3RpbGwgaGF2ZSBzZWVuIHRoZSBvbGQgdmFsdWUgb2YgLT51bnBsdWdnZWQgaXMgZ3Vh cmFudGVlZCB0byBoYXZlCj4gPj4+Pj4+IC0JICogZmluaXNoZWQuCj4gPj4+Pj4+IC0JICovCj4g Pj4+Pj4+IC0JZGV2LT51bnBsdWdnZWQgPSB0cnVlOwo+ID4+Pj4+PiAtCXN5bmNocm9uaXplX3Ny Y3UoJmRybV91bnBsdWdfc3JjdSk7Cj4gPj4+Pj4+IC0KPiA+Pj4+Pj4gIAlkcm1fZGV2X3VucmVn aXN0ZXIoZGV2KTsKPiA+Pj4+Pj4gIAlkcm1fZGV2X3B1dChkZXYpOwo+ID4+Pj4+PiAgfQo+ID4+ Pj4+PiBAQCAtODMyLDExICs4MjMsMTQgQEAgRVhQT1JUX1NZTUJPTChkcm1fZGV2X3JlZ2lzdGVy KTsKPiA+Pj4+Pj4gICAqIGRybV9kZXZfcmVnaXN0ZXIoKSBidXQgZG9lcyBub3QgZGVhbGxvY2F0 ZSB0aGUgZGV2aWNlLiBUaGUgY2FsbGVyIG11c3QgY2FsbAo+ID4+Pj4+PiAgICogZHJtX2Rldl9w dXQoKSB0byBkcm9wIHRoZWlyIGZpbmFsIHJlZmVyZW5jZS4KPiA+Pj4+Pj4gICAqCj4gPj4+Pj4+ IC0gKiBBIHNwZWNpYWwgZm9ybSBvZiB1bnJlZ2lzdGVyaW5nIGZvciBob3RwbHVnZ2FibGUgZGV2 aWNlcyBpcyBkcm1fZGV2X3VucGx1ZygpLAo+ID4+Pj4+PiAtICogd2hpY2ggY2FuIGJlIGNhbGxl ZCB3aGlsZSB0aGVyZSBhcmUgc3RpbGwgb3BlbiB1c2VycyBvZiBAZGV2Lgo+ID4+Pj4+PiArICog VGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBvcGVuIHVz ZXJzIG9mIEBkZXYgYXMgbG9uZwo+ID4+Pj4+PiArICogYXMgdGhlIGRyaXZlciBwcm90ZWN0cyBp dHMgZGV2aWNlIHJlc291cmNlcyB1c2luZyBkcm1fZGV2X2VudGVyKCkgYW5kCj4gPj4+Pj4+ICsg KiBkcm1fZGV2X2V4aXQoKS4KPiA+Pj4+Pj4gICAqCj4gPj4+Pj4+ICAgKiBUaGlzIHNob3VsZCBi ZSBjYWxsZWQgZmlyc3QgaW4gdGhlIGRldmljZSB0ZWFyZG93biBjb2RlIHRvIG1ha2Ugc3VyZQo+ ID4+Pj4+PiAtICogdXNlcnNwYWNlIGNhbid0IGFjY2VzcyB0aGUgZGV2aWNlIGluc3RhbmNlIGFu eSBtb3JlLgo+ID4+Pj4+PiArICogdXNlcnNwYWNlIGNhbid0IGFjY2VzcyB0aGUgZGV2aWNlIGlu c3RhbmNlIGFueSBtb3JlLiBEcml2ZXJzIHRoYXQgc3VwcG9ydAo+ID4+Pj4+PiArICogZGV2aWNl IHVucGx1ZyB3aWxsIHByb2JhYmx5IHdhbnQgdG8gY2FsbCBkcm1fYXRvbWljX2hlbHBlcl9zaHV0 ZG93bigpIGZpcnN0Cj4gPj4+Pj4KPiA+Pj4+PiBSZWFkIG9uY2UgbW9yZSB3aXRoIGEgYml0IG1v cmUgY29mZmVlLCBzcG90dGVkIHRoaXM6Cj4gPj4+Pj4KPiA+Pj4+PiBzL2ZpcnN0L2FmdGVyd2Fy ZHMvIC0gc2h1dHRpbmcgZG93biB0aGUgaHcgYmVmb3JlIHdlJ3ZlIHRha2VuIGl0IGF3YXkgZnJv bQo+ID4+Pj4+IHVzZXJzcGFjZSBpcyBraW5kYSB0aGUgd3Jvbmcgd2F5IHJvdW5kLiBJdCBzaG91 bGQgYmUgdGhlIGludmVyc2Ugb2YgZHJpdmVyCj4gPj4+Pj4gbG9hZCwgd2hpY2ggaXMgMSkgYWxs b2NhdGUgc3RydWN0dXJlcyAyKSBwcmVwIGh3IDMpIHJlZ2lzdGVyIGRyaXZlciB3aXRoCj4gPj4+ Pj4gdGhlIHdvcmxkIChzaW1wbGlmaWVkIG9mYykuCj4gPj4+Pj4KPiA+Pj4+Cj4gPj4+PiBUaGUg cHJvYmxlbSBpcyB0aGF0IGRybV9kZXZfdW5yZWdpc3RlcigpIHNldHMgdGhlIGRldmljZSBhcyB1 bnBsdWdnZWQKPiA+Pj4+IGFuZCBpZiBkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bigpIGlzIGNh bGxlZCBhZnRlcndhcmRzIGl0J3Mgbm90Cj4gPj4+PiBhbGxvd2VkIHRvIHRvdWNoIGhhcmR3YXJl Lgo+ID4+Pj4KPiA+Pj4+IEkga25vdyBpdCdzIHRoZSB3cm9uZyBvcmRlciwgYnV0IHRoZSBvbmx5 IHdheSB0byBkbyBpdCBpbiB0aGUgcmlnaHQKPiA+Pj4+IG9yZGVyIGlzIHRvIGhhdmUgYSBzZXBh cmF0ZSBmdW5jdGlvbiB0aGF0IHNldHMgdW5wbHVnZ2VkOgo+ID4+Pj4KPiA+Pj4+IAlkcm1fZGV2 X3VucmVnaXN0ZXIoKTsKPiA+Pj4+IAlkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bigpOwo+ID4+ Pj4gCWRybV9kZXZfc2V0X3VucGx1Z2dlZCgpOwo+ID4+Pgo+ID4+PiBBbm5veWluZyAuLi4gYnV0 IHllYWggY2FsbGluZyBfc2h1dGRvd24oKSBiZWZvcmUgd2Ugc3RvcHBlZCB1c2Vyc3BhY2UgaXMK PiA+Pj4gYWxzbyBub3QgZ29pbmcgdG8gd29yay4gQmVjYXVzZSB1c2Vyc3BhY2UgY291bGQgcXVp Y2tseSByZS1lbmFibGUKPiA+Pj4gc29tZXRoaW5nLCBhbmQgdGhlbiB0aGUgcmVmY291bnRzIHdv dWxkIGJlIGFsbCB3cm9uZyBhZ2FpbiBhbmQgbGVha2luZwo+ID4+PiBvYmplY3RzLgo+ID4+Pgo+ ID4+Cj4gPj4gV2hhdCBoYXBwZW5zIHdpdGggYSBVU0IgZGV2aWNlIHRoYXQgaXMgdW5wbHVnZ2Vk IHdpdGggb3BlbiB1c2Vyc3BhY2UsCj4gPj4gd2lsbCB0aGF0IGxlYWsgb2JqZWN0cz8KPiA+IAo+ ID4gTWF5YmUgd2UndmUganVtcGVkIHRvIGNvbmNsdXNpb25zLiBkcm1fYXRvbWljX2hlbHBlcl9z aHV0ZG93bigpIHdpbGwgcnVuCj4gPiBhcyBub3JtYWwsIHRoZSBvbmx5IHRoaW5nIHRoYXQgc2hv dWxkIGJlIHNraXBwZWQgaXMgYWN0dWFsbHkgdG91Y2hpbmcgdGhlCj4gPiBodyAoYXMgbG9uZyBh cyB0aGUgZHJpdmVyIGRvZXNuJ3QgcHJvdGVjdCB0b28gbXVjaCB3aXRoCj4gPiBkcm1fZGV2X2Vu dGVyL2V4aXQpLiBTbyBhbGwgdGhlIHNvZnR3YXJlIHVwZGF0ZXMgKGluY2x1ZGluZyByZWZjb3Vu dGluZwo+ID4gdXBkYXRlcykgd2lsbCBzdGlsbCBiZSBkb25lLiBPZmMgY3VycmVudCB1ZGwgaXMg bm90IHlldCBhdG9taWMsIHNvIGluCj4gPiByZWFsaXR5IHNvbWV0aGluZyBlbHNlIGhhcHBlbnMu Cj4gPiAKPiA+IEFuZCB3ZSBvZmMgc3RpbGwgaGF2ZSB0aGUgc2FtZSBpc3N1ZSB0aGF0IGlmIHlv dSBqdXN0IHVubG9hZCB0aGUgZHJpdmVyLAo+ID4gdGhlbiB0aGUgaHcgd2lsbCBzdGF5IG9uICh3 aGljaCBtaWdodCByZWFsbHkgY29uZnVzZSB0aGUgZHJpdmVyIG9uIG5leHQKPiA+IGxvYWQsIHdo ZW4gaXQgYXNzdW1lcyB0aGF0IGl0IG9ubHkgZ2V0cyBsb2FkZWQgZnJvbSBjb2xkIGJvb3Qgd2hl cmUKPiA+IGV2ZXJ5dGhpbmcgaXMgb2ZmIC0gd2hpY2ggdXN1YWxseSBpcyB0aGUgY2FzZSBvbiBh biBhcm0gc29jIGF0IGxlYXN0KS4KPiA+IAo+ID4+PiBJIGdldCBhIGJpdCB0aGUgZmVlbGluZyB3 ZSdyZSBvdmVyLW9wdGltaXppbmcgaGVyZSB3aXRoIHRyeWluZyB0byBkZXZtLWl6ZQo+ID4+PiBk cm1fZGV2X3JlZ2lzdGVyLiBKdXN0IGdldHRpbmcgZHJtX2RldmljZSBjb3JyZWN0bHkgZGV2bS1p emVkIGlzIGEgYmlnCj4gPj4+IHN0ZXAgZm9yd2FyZCBhbHJlYWR5LCBhbmQgd2lsbCBvcGVuIHVw IGEgbG90IG9mIFRPRE8gaXRlbXMgYWNyb3NzIGEgbG90IG9mCj4gPj4+IGRyaXZlcnMuIEUuZy4g d2UgY291bGQgYWRkIGEgZHJtX2Rldl9remFsbG9jLCBmb3IgYWxsb2NhdGluZyBhbGwgdGhlIGRy bV8qCj4gPj4+IHN0cnVjdHMsIHdoaWNoIGdldHMgcmVsZWFzZWQgdG9nZXRoZXIgd2l0aCBkcm1f ZGV2aWNlLiBJIHRoaW5rIHRoYXQncyBhCj4gPj4+IG11Y2ggY2xlYXJlciBwYXRoIGZvcndhcmQs IEkgdGhpbmsgd2UgYWxsIGFncmVlIHRoYXQgZ2V0dGluZyB0aGUga2ZyZWUgb3V0Cj4gPj4+IG9m IHRoZSBkcml2ZXIgY29kZXMgaXMgYSBnb29kIHRoaW5nLCBhbmQgaXQgd291bGQgYWxsb3cgdXMg dG8gZG8gdGhpcwo+ID4+PiBjb3JyZWN0bHkuCj4gPj4+Cj4gPj4+IFRoZW4gb25jZSB3ZSBoYXZl IHRoYXQgYW5kIHJvbGxlZCBvdXQgdG8gYSBmZXcgZHJpdmVycyB3ZSBjYW4gcmVjb25zaWRlcgo+ ID4+PiB0aGUgZW50aXJlIHVucmVnaXN0ZXIvc2h1dGRvd24gZ29yZGlhbiBrbm90IGhlcmUuIEF0 bSBJIGp1c3QgaGF2ZSBubyBpZGVhCj4gPj4+IGhvdyB0byBkbyB0aGlzIHByb3Blcmx5IDotLwo+ ID4+Pgo+ID4+PiBUaG91Z2h0cywgb3RoZXIgaWRlYXM/Cj4gPj4+Cj4gPj4KPiA+PiBZZWFoLCBJ J3ZlIGNvbWUgdG8gdGhlIGNvbmNsdXNpb24gdGhhdCBkZXZtX2RybV9kZXZfcmVnaXN0ZXIoKSBk b2Vzbid0Cj4gPj4gbWFrZSBtdWNoIHNlbnNlIGlmIHdlIG5lZWQgYSBkcml2ZXIgcmVtb3ZlIGNh bGxiYWNrIGFueXdheXMuCj4gPiAKPiA+IFl1cCwgdGhhdCdzIHdoYXQgSSBtZWFudCB3aXRoIHRo ZSBhYm92ZToKPiA+IC0gbWVyZ2UgZGV2bV9kcm1fZGV2X3JlZ2lzdGVyLCB1c2UgaXQgYSBsb3Qu IFRoaXMgaXMgZGVmaW5pdGVseSBhIGdvb2QKPiA+ICAgaWRlYS4KPiA+IC0gY3JlYXRlIGEgZHJt X2Rldl9remFsbG9jLCB3aGljaCBhdXRvbWF0aWNhbGx5IHJlbGVhc2VzIG1lbW9yeSBvbiB0aGUK PiA+ICAgZmluYWwgZHJtX2Rldl9wdXQuIFVzZSBpdCBldmVyeSBpbiBkcml2ZXJzIGZvciBkcm0g c3RydWN0dXJlcywKPiA+ICAgZXNwZWNpYWxseSBpbiB0aG9zZSBkcml2ZXJzIHRoYXQgY3VycmVu dGx5IHVzZSBkZXZtICh3aGljaCByZWxlYXNlcwo+ID4gICB0aG9zZSBhbGxvY2F0aW9ucyBwb3Rl bnRpYWx5IHRvbyBlYXJseSBvbiB1bnBsdWcpLgo+ID4gLSBmaWd1cmUgb3V0IHRoZSBuZXh0IHN0 ZXBzIGFmdGVyIHRoYXQKPiA+IAo+ID4+IEkgdGhpbmsgZGV2bV9kcm1fZGV2X2luaXQoKSBtYWtl cyBzZW5zZSBiZWNhdXNlIGl0IHlpZWxkcyBhIGNsZWFuZXIKPiA+PiBwcm9iZSgpIGZ1bmN0aW9u LiBBbiBhZGRpdGlvbmFsIGJlbmVmaXQgaXMgdGhhdCBpdCByZXF1aXJlcyBhCj4gPj4gZHJtX2Ry aXZlci0+cmVsZWFzZSBmdW5jdGlvbiB3aGljaCBpcyBhIHN0ZXAgaW4gdGhlIHJpZ2h0IGRpcmVj dGlvbiB0bwo+ID4+IGdldCB0aGUgZHJtX2RldmljZSBsaWZldGltZSByaWdodC4KPiA+Pgo+ID4+ IERvIHdlIGFncmVlIHRoYXQgYSBkcm1fZGV2X3NldF91bnBsdWdnZWQoKSBmdW5jdGlvbiBpcyBu ZWNlc3NhcnkgdG8gZ2V0Cj4gPj4gdGhlIHJlbW92ZS9kaXNjb25uZWN0IG9yZGVyIHJpZ2h0Pwo+ ID4+Cj4gPj4gV2hhdCBhYm91dCBkcm1fZGV2X3VucGx1ZygpIG1heWJlIEkgc2hvdWxkIGp1c3Qg bGVhdmUgaXQgYmU/Cj4gPj4KPiA+PiAtIGFtZCB1c2VzIGRybV9kcml2ZXItPnVubG9hZCwgc28g dGhhdCBvbmUgdGFrZXMgc29tZSB3b3JrIHRvIGdldCByaWdodAo+ID4+ICAgdG8gc3VwcG9ydCB1 bnBsdWcuIEl0IGRvZXNuJ3QgY2hlY2sgdGhlIHVucGx1Z2dlZCBzdGF0ZSwgc28gcmVhbGx5Cj4g Pj4gICBkb2Vzbid0IG5lZWQgZHJtX2Rldl91bnBsdWcoKSBJIGd1ZXNzLiBEbyB0aGV5IGhhdmUg Y2FyZHMgdGhhdCBjYW4gYmUKPiA+PiAgIGhvdHBsdWdnZWQ/Cj4gPiAKPiA+IFllYWggYW1kIHN0 aWxsIHVzZXMgLT5sb2FkIGFuZCAtPnVubG9hZCwgd2hpY2ggaXMgbm90IGdyZWF0IHVuZm9ydHVu YXRlbHkuCj4gPiBJIGp1c3Qgc3R1bWJsZWQgb3ZlciB0aGF0IHdoZW4gSSB0cmllZCB0byBtYWtl IGEgc2VyaWVzIHRvIGRpc2FibGUgdGhlCj4gPiBnbG9iYWwgZHJtX2dsb2JhbF9tdXRleCBmb3Ig bW9zdCBkcml2ZXJzIC4uLgo+ID4gCj4gPj4gLSB1ZGwgdXNlcyBkcm1fZHJpdmVyLT51bmxvYWQs IGRvZXNuJ3QgdXNlIGRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKCkuCj4gPj4gICBJdCBoYXMg b25seSBvbmUgZHJtX2Rldl9pc191bnBsdWdnZWQoKSBjaGVjayBhbmQgdGhhdCBpcyBpbiBpdHMK PiA+PiAgIGZiZGV2LT5vcGVuIGNhbGxiYWNrLgo+ID4gCj4gPiB1ZGwgaXNuJ3QgYXRvbWljLCBz byBjYW4ndCB1c2UgdGhlIGF0b21pYyBoZWxwZXJzLiBwcmUtYXRvbWljIGRvZXNuJ3QgaGF2ZQo+ ID4gcmVmY291bnRpbmcgaXNzdWVzIHdoZW4gc29tZXRoaW5nIGlzIGxlZnQgb24gaWlyYy4gSSB0 aGluayB1ZGwgaXMgd3JpdHRlbgo+ID4gdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCAtPnVubG9h ZCBpcyBhbHdheXMgY2FsbGVkIGZvciBhbiB1bnBsdWcsIG5ldmVyCj4gPiBmb3IgYW4gYWN0dWFs IHVubG9hZC4KPiA+IAo+ID4+IC0geGVuIGNhbGxzIGRybV9hdG9taWNfaGVscGVyX3NodXRkb3du KCkgaW4gaXRzIGRybV9kcml2ZXItPnJlbGVhc2UKPiA+PiAgIGNhbGxiYWNrIHdoaWNoIEkgZ3Vl c3MgaXMgbm90IGNvcnJlY3QuCj4gPiAKPiA+IFllYWggdGhpcyBzbWVsbHMgZmlzaHkuIC0+cmVs ZWFzZSBpcyBzdXBwb3NlZCB0byBiZSBmb3IgY2xlYW5pbmcgdXAga2VybmVsCj4gPiBzdHJ1Y3R1 cmVzLCBub3QgZm9yIGNsZWFuaW5nIHVwIHRoZSBody4gU28gbWF5YmUgZHJtX21vZGVfY29uZmln X2NsZWFudXAKPiA+IGNvdWxkIGJlIHB1dCB0aGVyZSwgbm90IHN1cmUgaG9uZXN0bHkuIEJ1dCBk ZWZpbml0ZWx5IG5vdCBfc2h1dGRvd24oKS4KPiA+IAo+ID4+IFRoaXMgaXMgd2hhdCBpdCB3aWxs IGxvb2sgbGlrZSB3aXRoIGEgc2V0IHVucGx1Z2dlZCBmdW5jdGlvbjoKPiA+Pgo+ID4+IHZvaWQg ZHJtX2Rldl91bnBsdWcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+PiB7Cj4gPj4gCWRybV9k ZXZfc2V0X3VucGx1Z2dlZChkZXYpOwo+ID4+IAlkcm1fZGV2X3VucmVnaXN0ZXIoZGV2KTsKPiA+ PiAJZHJtX2Rldl9wdXQoZGV2KTsKPiA+PiB9Cj4gPj4KPiA+PiBIbSwgSSBzaG91bGQgcHJvYmFi bHkgcmVtb3ZlIGl0IHRvIGF2b2lkIGZ1cnRoZXIgdXNlIG9mIGl0IHNpbmNlIGl0J3MKPiA+PiBu b3QgY29ycmVjdCBmb3IgYSBtb2Rlcm4gZHJpdmVyLgo+ID4gCj4gPiBJIHRoaW5rIHNvbWV0aGlu ZyBmbGV3IG92ZXIgbXkgaGVhZCAuLi4gd2hhdCdzIHRoZSBkcm1fZGV2X3NldF91bnBsdWdnZWQK PiA+IGZvcj8gSSB0aGluayBJJ20gbm90IGZvbGxvd2luZyB5b3UgLi4uCj4gPiAKPiAKPiBUYWtp bmcgaXQgYSBmZXcgc3RlcHMgYmFjazoKPiAKPiBUaGlzIHBhdGNoIHByb3Bvc2VzIHRvIG1vdmUg J2Rldi0+dW5wbHVnZ2VkID0gdHJ1ZScgZnJvbQo+IGRybV9kZXZfdW5wbHVnKCkgdG8gZHJtX2Rl dl91bnJlZ2lzdGVyKCkuCj4gCj4gQWRkaXRpb25hbGx5IEkgcHJvcG9zZWQgdGhpcyBjaGFuZ2Ug dG8gdGhlIGRybV9kZXZfdW5yZWdpc3RlcigpIGRvY3M6Cj4gCj4gICAqIFRoaXMgc2hvdWxkIGJl IGNhbGxlZCBmaXJzdCBpbiB0aGUgZGV2aWNlIHRlYXJkb3duIGNvZGUgdG8gbWFrZSBzdXJlCj4g LSAqIHVzZXJzcGFjZSBjYW4ndCBhY2Nlc3MgdGhlIGRldmljZSBpbnN0YW5jZSBhbnkgbW9yZS4K PiArICogdXNlcnNwYWNlIGNhbid0IGFjY2VzcyB0aGUgZGV2aWNlIGluc3RhbmNlIGFueSBtb3Jl LiBEcml2ZXJzIHRoYXQKPiBzdXBwb3J0Cj4gKyAqIGRldmljZSB1bnBsdWcgd2lsbCBwcm9iYWJs eSB3YW50IHRvIGNhbGwKPiBkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bigpIGZpcnN0Cj4gKyAq IGluIG9yZGVyIHRvIGRpc2FibGUgdGhlIGhhcmR3YXJlIG9uIHJlZ3VsYXIgZHJpdmVyIG1vZHVs ZSB1bmxvYWQuCj4gCj4gV2hpY2ggd291bGQgZ2l2ZSBhIGRyaXZlciByZW1vdmUgY2FsbGJhY2sg bGlrZSB0aGlzOgo+IAo+IHN0YXRpYyBpbnQgZHJpdmVyX3JlbW92ZSgpCj4gewo+IAlkcm1fYXRv bWljX2hlbHBlcl9zaHV0ZG93bigpOwo+IAlkcm1fZGV2X3VucmVnaXN0ZXIoKTsKPiB9Cj4gCj4g WW91ciByZWFjdGlvbiB3YXMgdGhhdCBkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bigpIG5lZWRz IHRvIGJlIGNhbGxlZAo+IGFmdGVyIGRybV9kZXZfdW5yZWdpc3RlcigpIHRvIGF2b2lkIGEgcmFj ZSByZXN1bHRpbmcgaW4gbGVha2VkIG9iamVjdHMuCj4gSG93ZXZlciBpZiB3ZSBjYWxsIGl0IGFm dGVyd2FyZHMsIC0+dW5wbHVnZ2VkIHdpbGwgYmUgdHJ1ZSBhbmQgdGhlCj4gZHJpdmVyIGNhbid0 IHRvdWNoIGhhcmR3YXJlLgo+IAo+IFRoZW4gSSBwcm9wb3NlZCBtb3ZpbmcgdGhlIHVucGx1Z2dl ZCBzdGF0ZSBzZXR0aW5nIHRvOgo+IAo+IHZvaWQgZHJtX2Rldl9zZXRfdW5wbHVnZ2VkKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gewo+IAlkZXYtPnVucGx1Z2dlZCA9IHRydWU7Cj4gCXN5bmNo cm9uaXplX3NyY3UoJmRybV91bnBsdWdfc3JjdSk7Cj4gfQo+IAo+IE5vdyBpdCBpcyBwb3NzaWJs ZSB0byBhdm9pZCB0aGUgcmFjZSBhbmQgc3RpbGwgdG91Y2ggaGFyZHdhcmU6Cj4gCj4gc3RhdGlj IGludCBkcml2ZXJfcmVtb3ZlKCkKPiB7Cj4gCWRybV9kZXZfdW5yZWdpc3RlcigpOwo+IAlkcm1f YXRvbWljX2hlbHBlcl9zaHV0ZG93bigpOwo+IAlkcm1fZGV2X3NldF91bnBsdWdnZWQoKTsKPiB9 Cj4gCj4gQnV0IG5vdyBJJ20gYmFjayB0byB0aGUgcXVlc3Rpb246IElzIGl0IHRoZSBkcml2ZXIg b3IgdGhlIGRldmljZSB0aGF0IGlzCj4gZ29pbmcgYXdheT8KPiAKPiBJZiBpdCdzIHRoZSBkcml2 ZXIgd2UgYXJlIGZpbmUgdG91Y2hpbmcgaGFyZHdhcmUsIGlmIGl0J3MgdGhlIGRldmljZSBpdAo+ IGRlcGVuZHMgb24gaG93IHdlIGFjY2VzcyB0aGUgZGV2aWNlIHJlc291cmNlIGFuZCB3aGV0aGVy IHRoZSBzdWJzeXN0ZW0KPiBoYXMgcHJvdGVjdGlvbiBpbiBwbGFjZSB0byBoYW5kbGUgYWNjZXNz IGFmdGVyIHRoZSBkZXZpY2UgaXMgZ29uZS4gSQo+IHRoaW5rIFVTQiBjYW4gaGFuZGxlIGFuZCBi bG9jayBkZXZpY2UgYWNjZXNzIHVwIHVudGlsIHRoZSBkaXNjb25uZWN0Cj4gY2FsbGJhY2sgaGFz IGZpbmlzaGVkIChubyBwb2ludCBpbiBkb2luZyBzbyB0aG91Z2gsIHNpbmNlIHRoZSBub3JtYWwK PiBvcGVyYXRpb24gaXMgdGhhdCB0aGUgZGV2aWNlIGlzIGdvbmUsIG5vdCB0aGUgZHJpdmVyIHVu bG9hZGluZykuCj4gCj4gSXMgdGhlcmUgYSB3YXkgdG8gZGV0ZXJtaW5lIHdobydzIGdvaW5nIGF3 YXkgd2l0aG91dCBjaGFuZ2VzIHRvIHRoZQo+IGRldmljZSBjb3JlPwo+IAo+IE1heWJlLiBUaGUg ZHJpdmVyIGNhbiBvbmx5IGJlIHVucmVnaXN0ZXJlZCBpZiB0aGVyZSBhcmUgbm8gb3BlbiBmaWxl Cj4gaGFuZGxlcyBiZWNhdXNlIGEgcmVmIGlzIHRha2VuIG9uIHRoZSBkcml2ZXIgbW9kdWxlLgoK VGhpcyBpc24ndCB0cnVlLiBZb3UgY2FuIChub3QgbWFueSBwZW9wbGUgZG8sIGJ1dCBpdCdzIHBv c3NpYmxlKSB0byB1bmJpbmQKdGhyb3VnaCBzeXNmcy4gVGhlIG1vZHVsZSByZWZlcmVuY2Ugb25s eSBrZWVwcyB0aGUgY3B1IGluc3RydWN0aW9ucyB2YWxpZCwKbm90aGluZyBlbHNlLgoKPiBTbyBt YXliZSBzb21ldGhpbmcgYWxvbmcgdGhlc2UgbGluZXM6Cj4gCj4gaW50IGRybV9kZXZfb3Blbl9j b3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IHsKPiAJaW50IG9wZW5fY291bnQ7Cj4gCj4g CW11dGV4X2xvY2soJmRybV9nbG9iYWxfbXV0ZXgpOwo+IAlvcGVuX2NvdW50ID0gZGV2LT5vcGVu X2NvdW50Owo+IAltdXRleF91bmxvY2soJmRybV9nbG9iYWxfbXV0ZXgpOwoKUmFuZG9tIHN0eWxl IG5pdDogUkVBRF9PTkNFLCBubyBsb2NraW5nIG5lZWRlZCAodGhlIGxvY2tzIGRvbid0IGNoYW5n ZQphbnl0aGluZywgZXhjZXB0IGlmIHlvdSBoYXZlIHJlYWxseSBzdHJhbmdlIGxvY2tpbmcgcnVs ZXMpLiBTZXJ2ZXMKZG91YmxlLWR1dHkgYXMgYSBodWdlIHdhcm5pbmcgc2lnbiB0aGF0IHNvbWV0 aGluZyB0cmlja3kgaXMgaGFwcGVuaW5nLgoKPiAJcmV0dXJuIG9wZW5fY291bnQ7Cj4gfQo+IAo+ IHN0YXRpYyBpbnQgZHJpdmVyX3JlbW92ZSgpCj4gewo+IAlkcm1fZGV2X3VucmVnaXN0ZXIoKTsK PiAKPiAJb3Blbl9jb3VudCA9IGRybV9kZXZfb3Blbl9jb3VudCgpOwo+IAo+IAkvKiBPcGVuIGZk J3MsIGRldmljZSBpcyBnb2luZyBhd2F5LCBibG9jayBhY2Nlc3MgKi8KPiAJaWYgKG9wZW5fY291 bnQpCj4gCQlkcm1fZGV2X3NldF91bnBsdWdnZWQoKTsKPiAKPiAJZHJtX2F0b21pY19oZWxwZXJf c2h1dGRvd24oKTsKPiAKPiAJLyogTm8gb3BlbiBmZCdzLCBkcml2ZXIgaXMgZ29pbmcgYXdheSAq Lwo+IAlpZiAoIW9wZW5fY291bnQpCj4gCQlkcm1fZGV2X3NldF91bnBsdWdnZWQoKTsKPiB9Cj4g Cj4gCj4gUGVyc29uYWxseSBJIGhhdmUgMiB1c2UgY2FzZXM6Cj4gLSB0aW55ZHJtIFNQSSBkcml2 ZXJzCj4gICBUaGUgb25seSBob3RwbHVnZ2FibGUgU1BJIGNvbnRyb2xsZXJzIEkga25vdyBvZiBh cmUgVVNCIHdoaWNoIHNob3VsZAo+ICAgaGFuZGxlIGRldmljZSBhY2Nlc3Mgd2hpbGUgdW5yZWdp c3RlcmluZy4KPiAgIFNQSSBkZXZpY2VzIGNhbiBiZSByZW1vdmVkLCBidXQgdGhlIGNvbnRyb2xs ZXIgZHJpdmVyIGlzIHN0aWxsIGluCj4gICBwbGFjZSBzbyBpdCdzIHNhZmUuCj4gLSBBIGZ1dHVy ZSBVU0IgZHJpdmVyICh0aGF0IEkgaG9wZSB0byB3b3JrIG9uIHdoZW4gYWxsIHRoaXMgY29yZSBz dHVmZgo+ICAgaXMgaW4gcGxhY2UpLgo+ICAgVGhlcmUncyBubyBwb2ludCBpbiB0b3VjaGluZyB0 aGUgaHcsIHNvIERSTSBjYW4gYmUgc2V0IHVwbHVnZ2VkIHJpZ2h0Cj4gICBhd2F5IGluIHRoZSBk aXNjb25uZWN0KCkgY2FsbGJhY2suCj4gCj4gVGhpcyBtZWFucyB0aGF0IEkgZG9uJ3QgbmVlZCB0 byBrbm93IHdobydzIGdvaW5nIGF3YXkgZm9yIG15IHVzZSBjYXNlcy4KPiAKPiBUaGlzIHR1cm5l ZCBvdXQgdG8gYmUgcXVpdGUgbG9uZyB3aW5kaW5nLCBidXQgdGhlIGJvdHRvbSBsaW5lIGlzIHRo YXQKPiBoYXZpbmcgYSBzZXBhcmF0ZSBmdW5jdGlvbiB0byBzZXQgdGhlIHVucGx1Z2dlZCBzdGF0 ZSBzZWVtcyB0byBnaXZlIGEKPiBsb3Qgb2YgZmxleGliaWxpdHkgZm9yIHZhcmlvdXMgdXNlIGNh c2VzLgo+IAo+IEkgaG9wZSBJIGRpZG4ndCBtdWRkeSB0aGUgd2F0ZXJzIGV2ZW4gbW9yZSA6LSkK CkhtLCBJIHRoaW5rIEkgZ2V0IHlvdXIgaWRlYS4gU2luY2UgSSdtIHN0aWxsIG5vdCBzdXJlIHdo YXQgdGhlIGJlc3Qgb3B0aW9uCmlzIEknbSBsZWFuaW5nIHRvd2FyZHMganVzdCBsZWF2aW5nIHN0 dWZmIGFzLWlzLiBJLmUuIGRyaXZlcnMgd2hpY2ggd2FudAp0byBzaHV0IGRvd24gaHcgY2FuIGRv IHRoZSAxLiBkcm1fZGV2X3VucmVnaXN0ZXIoKSAyLgpkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93 bigpIHNlcXVlbmNlLiBEcml2ZXJzIHdoaWNoIGNhcmUgYWJvdXQgaG90dW5wbHVnCm1vcmUgY2Fu IGRvIGp1c3QgdGhlIGRybV9kZXZfdW5wbHVnKCkuCgpZZXMgaXQncyBtZXNzeSBhbmQgdW5zYXRp c2ZhY3RvcnksIGJ1dCBpbiBjYXNlIG9mIHNlcmlvdXMgZG91YnQgSSBsaWtlIHRvCndhaXQgdW50 aWwgbWF5YmUgaW4gdGhlIGZ1dHVyZSB3ZSBoYXZlIGEgZ29vZCBpZGVhLiBNZWFud2hpbGUgbGVh dmluZyBhCmJpdCBvZiBhIG1lc3MgYXJvdW5kIGlzIGJldHRlciB0aGFuIGNoYXJnaW5nIGFoZWFk IGluIGEgcG9zc2libHkgdG90YWxseQp3cm9uZyBkaXJlY3Rpb24uCgpUaGVyZSdzIGNhc2VzIHdo ZXJlIGNsdWUgc3RpbGwgaGFzbid0IGhpdCBtZSwgZXZlbiB5ZWFycyBsYXRlciAob3IgYW55b25l CmVsc2UpLiBUaGF0J3MganVzdCBob3cgaXQgaXMgc29tZXRpbWVzLgoKWm9vbWluZyBvdXQgbW9y ZSBsb29raW5nIGF0IHRoZSBiaWcgcGljdHVyZSBJJ2Qgc2F5IGFsbCB5b3VyIHdvcmsgaW4gdGhl CnBhc3QgZmV3IHllYXJzIGhhcyBlbm9ybW91c2x5IHNpbXBsaWZpZWQgZHJtIGZvciBzaW1wbGUg ZHJpdmVycyBhbHJlYWR5LgpJZiB3ZSBjYW4ndCByZXNvbHZlIHRoaXMgb25lIGhlcmUgcmlnaHQg bm93IHRoYXQganVzdCBtZWFucyB5b3UgIm9ubHkiCm1hZGUgZHJtIDk4JSBzaW1wbGVyIGluc3Rl YWQgb2YgbWF5YmUgOTklLiBJdCdzIHN0aWxsIGFuIGVwaWMgd2luIDotKQoKQ2hlZXJzLCBEYW5p ZWwKCgo+IE5vcmFsZi4KPiAKPiA+IFRoYW5rcywgRGFuaWVsCj4gPiAKPiA+Pgo+ID4+IE5vcmFs Zi4KPiA+Pgo+ID4+PiBDaGVlcnMsIERhbmllbAo+ID4+Pgo+ID4+Pj4gTm9yYWxmLgo+ID4+Pj4K PiA+Pj4+Pj4gKyAqIGluIG9yZGVyIHRvIGRpc2FibGUgdGhlIGhhcmR3YXJlIG9uIHJlZ3VsYXIg ZHJpdmVyIG1vZHVsZSB1bmxvYWQuCj4gPj4+Pj4+ICAgKi8KPiA+Pj4+Pj4gIHZvaWQgZHJtX2Rl dl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPj4+Pj4+ICB7Cj4gPj4+Pj4+ IEBAIC04NDUsNiArODM5LDE1IEBAIHZvaWQgZHJtX2Rldl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gPj4+Pj4+ICAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBE UklWRVJfTEVHQUNZKSkKPiA+Pj4+Pj4gIAkJZHJtX2xhc3RjbG9zZShkZXYpOwo+ID4+Pj4+PiAg Cj4gPj4+Pj4+ICsJLyoKPiA+Pj4+Pj4gKwkgKiBBZnRlciBzeW5jaHJvbml6aW5nIGFueSBjcml0 aWNhbCByZWFkIHNlY3Rpb24gaXMgZ3VhcmFudGVlZCB0byBzZWUKPiA+Pj4+Pj4gKwkgKiB0aGUg bmV3IHZhbHVlIG9mIC0+dW5wbHVnZ2VkLCBhbmQgYW55IGNyaXRpY2FsIHNlY3Rpb24gd2hpY2gg bWlnaHQKPiA+Pj4+Pj4gKwkgKiBzdGlsbCBoYXZlIHNlZW4gdGhlIG9sZCB2YWx1ZSBvZiAtPnVu cGx1Z2dlZCBpcyBndWFyYW50ZWVkIHRvIGhhdmUKPiA+Pj4+Pj4gKwkgKiBmaW5pc2hlZC4KPiA+ Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4gKwlkZXYtPnVucGx1Z2dlZCA9IHRydWU7Cj4gPj4+Pj4+ICsJ c3luY2hyb25pemVfc3JjdSgmZHJtX3VucGx1Z19zcmN1KTsKPiA+Pj4+Pj4gKwo+ID4+Pj4+PiAg CWRldi0+cmVnaXN0ZXJlZCA9IGZhbHNlOwo+ID4+Pj4+PiAgCj4gPj4+Pj4+ICAJZHJtX2NsaWVu dF9kZXZfdW5yZWdpc3RlcihkZXYpOwo+ID4+Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX2Rydi5oIGIvaW5jbHVkZS9kcm0vZHJtX2Rydi5oCj4gPj4+Pj4+IGluZGV4IGNhNDZhNDVh OWNjZS4uYzUwNjk2YzgyYTQyIDEwMDY0NAo+ID4+Pj4+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1f ZHJ2LmgKPiA+Pj4+Pj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Rydi5oCj4gPj4+Pj4+IEBAIC03 MzYsMTMgKzczNiwxMSBAQCB2b2lkIGRybV9kZXZfdW5wbHVnKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwo+ID4+Pj4+PiAgICogZHJtX2Rldl9pc191bnBsdWdnZWQgLSBpcyBhIERSTSBkZXZpY2Ug dW5wbHVnZ2VkCj4gPj4+Pj4+ICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4gPj4+Pj4+ICAgKgo+ID4+ Pj4+PiAtICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHRvIGNoZWNrIHdoZXRoZXIgYSBo b3RwbHVnZ2FibGUgaXMgdW5wbHVnZ2VkLgo+ID4+Pj4+PiAtICogVW5wbHVnZ2luZyBpdHNlbGYg aXMgc2luZ2FsbGVkIHRocm91Z2ggZHJtX2Rldl91bnBsdWcoKS4gSWYgYSBkZXZpY2UgaXMKPiA+ Pj4+Pj4gLSAqIHVucGx1Z2dlZCwgdGhlc2UgdHdvIGZ1bmN0aW9ucyBndWFyYW50ZWUgdGhhdCBh bnkgc3RvcmUgYmVmb3JlIGNhbGxpbmcKPiA+Pj4+Pj4gLSAqIGRybV9kZXZfdW5wbHVnKCkgaXMg dmlzaWJsZSB0byBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgaXQgY29tcGxldGVzCj4g Pj4+Pj4+ICsgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgdG8gY2hlY2sgd2hldGhlciBA ZGV2IGlzIHVucmVnaXN0ZXJlZC4gVGhpcyBjYW4KPiA+Pj4+Pj4gKyAqIGJlIHVzZWQgdG8gZGV0 ZWN0IHRoYXQgdGhlIHVuZGVybHlpbmcgcGFyZW50IGRldmljZSBpcyBnb25lLgo+ID4+Pj4+Cj4g Pj4+Pj4gSSB0aGluayBpdCdkIGJlIGdvb2QgdG8ga2VlcCB0aGUgZmlyc3QgcGFydCwgYW5kIGp1 c3QgdXBkYXRlIHRoZSByZWZlcmVuY2UKPiA+Pj4+PiB0byBkcm1fZGV2X3VucmVnaXN0ZXIuIFNv Ogo+ID4+Pj4+Cj4gPj4+Pj4gICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHRvIGNoZWNr IHdoZXRoZXIgYSBob3RwbHVnZ2FibGUgaXMgdW5wbHVnZ2VkLgo+ID4+Pj4+ICAqIFVucGx1Z2dp bmcgaXRzZWxmIGlzIHNpbmdhbGxlZCB0aHJvdWdoIGRybV9kZXZfdW5yZWdpc3RlcigpLiBJZiBh IGRldmljZSBpcwo+ID4+Pj4+ICAqIHVucGx1Z2dlZCwgdGhlc2UgdHdvIGZ1bmN0aW9ucyBndWFy YW50ZWUgdGhhdCBhbnkgc3RvcmUgYmVmb3JlIGNhbGxpbmcKPiA+Pj4+PiAgKiBkcm1fZGV2X3Vu cmVnaXN0ZXIoKSBpcyB2aXNpYmxlIHRvIGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbiBhZnRlciBp dAo+ID4+Pj4+ICAqIGNvbXBsZXRlcy4KPiA+Pj4+Pgo+ID4+Pj4+IEkgdGhpbmsgeW91ciB2ZXJz aW9uIHNocnVncyBhIGZldyBpbXBvcnRhbnQgZGV0YWlscyB1bmRlciB0aGUgcnVnLiBXaXRoCj4g Pj4+Pj4gdGhvc2Ugbml0cyBhZGRyZXNzZWQ6Cj4gPj4+Pj4KPiA+Pj4+PiBSZXZpZXdlZC1ieTog RGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiA+Pj4+Pgo+ID4+Pj4+IENo ZWVycywgRGFuaWVsCj4gPj4+Pj4KPiA+Pj4+Pj4gICAqCj4gPj4+Pj4+IC0gKiBXQVJOSU5HOiBU aGlzIGZ1bmN0aW9uIGZ1bmRhbWVudGFsbHkgcmFjZXMgYWdhaW5zdCBkcm1fZGV2X3VucGx1Zygp LiBJdCBpcwo+ID4+Pj4+PiAtICogcmVjb21tZW5kZWQgdGhhdCBkcml2ZXJzIGluc3RlYWQgdXNl IHRoZSB1bmRlcmx5aW5nIGRybV9kZXZfZW50ZXIoKSBhbmQKPiA+Pj4+Pj4gKyAqIFdBUk5JTkc6 IFRoaXMgZnVuY3Rpb24gZnVuZGFtZW50YWxseSByYWNlcyBhZ2FpbnN0IGRybV9kZXZfdW5yZWdp c3RlcigpLiBJdAo+ID4+Pj4+PiArICogaXMgcmVjb21tZW5kZWQgdGhhdCBkcml2ZXJzIGluc3Rl YWQgdXNlIHRoZSB1bmRlcmx5aW5nIGRybV9kZXZfZW50ZXIoKSBhbmQKPiA+Pj4+Pj4gICAqIGRy bV9kZXZfZXhpdCgpIGZ1bmN0aW9uIHBhaXJzLgo+ID4+Pj4+PiAgICovCj4gPj4+Pj4+ICBzdGF0 aWMgaW5saW5lIGJvb2wgZHJtX2Rldl9pc191bnBsdWdnZWQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiA+Pj4+Pj4gLS0gCj4gPj4+Pj4+IDIuMjAuMQo+ID4+Pj4+Pgo+ID4+Pj4+PiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4+Pj4+PiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gPj4+Pj4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiA+Pj4+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngKPiA+Pj4+Pgo+ID4+Pgo+ID4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBF bmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==