From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 6/6] drm/tinydrm: Support device unplug Date: Thu, 31 Aug 2017 15:59:24 +0300 Message-ID: <6016209.C3k9HqazzJ@avalon> References: <1503940668-25883-1-git-send-email-noralf@tronnes.org> <92552819-0091-a133-f3ca-b10072fabc07@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from galahad.ideasonboard.com (galahad.ideasonboard.com [185.26.127.97]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5772C6E1EB for ; Thu, 31 Aug 2017 12:58:50 +0000 (UTC) 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 List-Id: dri-devel@lists.freedesktop.org SGkgRGFuaWVsIGFuZCBOb3JhbGYsCgpPbiBXZWRuZXNkYXksIDMwIEF1Z3VzdCAyMDE3IDIwOjE4 OjQ5IEVFU1QgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBXZWQsIEF1ZyAzMCwgMjAxNyBhdCA2 OjMxIFBNLCBOb3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4gd3JvdGU6Cj4gPiBE ZW4gMjguMDguMjAxNyAyMy41Niwgc2tyZXYgRGFuaWVsIFZldHRlcjoKPiA+PiBPbiBNb24sIEF1 ZyAyOCwgMjAxNyBhdCAwNzoxNzo0OFBNICswMjAwLCBOb3JhbGYgVHLDuG5uZXMgd3JvdGU6Cj4g Pj4+IFN1cHBvcnQgZGV2aWNlIHVucGx1Z2dpbmcgdG8gbWFrZSB0aW55ZHJtIHN1aXRhYmxlIGZv ciBVU0IgZGV2aWNlcy4KPiA+Pj4gCj4gPj4+IENjOiBEYXZpZCBMZWNobmVyIDxkYXZpZEBsZWNo bm9sb2d5LmNvbT4KPiA+Pj4gU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZA dHJvbm5lcy5vcmc+Cj4gPj4+IC0tLQo+ID4+PiAKPiA+Pj4gZHJpdmVycy9ncHUvZHJtL3Rpbnlk cm0vY29yZS90aW55ZHJtLWNvcmUuYyB8IDY5ICsrKysrKysrKysrKysrKysrKy0tLQo+ID4+PiBk cml2ZXJzL2dwdS9kcm0vdGlueWRybS9taTAyODNxdC5jICAgICAgICAgIHwgIDQgKysKPiA+Pj4g ZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vbWlwaS1kYmkuYyAgICAgICAgICB8ICA1ICsrLQo+ID4+ PiBkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9yZXBhcGVyLmMgICAgICAgICAgIHwgIDkgKysrLQo+ ID4+PiBkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9zdDc1ODYuYyAgICAgICAgICAgIHwgIDkgKysr LQo+ID4+PiBpbmNsdWRlL2RybS90aW55ZHJtL3Rpbnlkcm0uaCAgICAgICAgICAgICAgIHwgIDUg KysrCj4gPj4+IDYgZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25z KC0pCj4gPj4+IAo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vY29y ZS90aW55ZHJtLWNvcmUuYwo+ID4+PiBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL2NvcmUvdGlu eWRybS1jb3JlLmMKPiA+Pj4gaW5kZXggZjExZjRjZC4uM2NjYmNjNSAxMDA2NDQKPiA+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vY29yZS90aW55ZHJtLWNvcmUuYwo+ID4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9jb3JlL3Rpbnlkcm0tY29yZS5jCj4gPj4+IEBAIC0z Miw2ICszMiwyOSBAQAo+ID4+PiAgICogVGhlIGRyaXZlciBhbGxvY2F0ZXMgJnRpbnlkcm1fZGV2 aWNlLCBpbml0aWFsaXplcyBpdCB1c2luZwo+ID4+PiAgICogZGV2bV90aW55ZHJtX2luaXQoKSwg c2V0cyB1cCB0aGUgcGlwZWxpbmUgdXNpbmcKPiA+Pj4gdGlueWRybV9kaXNwbGF5X3BpcGVfaW5p dCgpCj4gPj4+ICAgKiBhbmQgcmVnaXN0ZXJzIHRoZSBEUk0gZGV2aWNlIHVzaW5nIGRldm1fdGlu eWRybV9yZWdpc3RlcigpLgo+ID4+PiArICoKPiA+Pj4gKyAqIERldmljZSB1bnBsdWcKPiA+Pj4g KyAqIC0tLS0tLS0tLS0tLS0KPiA+Pj4gKyAqCj4gPj4+ICsgKiB0aW55ZHJtIHN1cHBvcnRzIGRl dmljZSB1bnBsdWdnaW5nIHdoZW4gdGhlcmUncyBzdGlsbCBvcGVuIERSTSBvcgo+ID4+PiBmYmRl diBmaWxlCj4gPj4+ICsgKiBoYW5kbGVzLgo+ID4+PiArICoKPiA+Pj4gKyAqIFRoZXJlIGFyZSAy IHdheXMgZm9yIGRyaXZlci1kZXZpY2UgdW5iaW5kaW5nIHRvIGhhcHBlbjoKPiA+Pj4gKyAqCj4g Pj4+ICsgKiAtIFRoZSBkcml2ZXIgbW9kdWxlIGlzIHVubG9hZGVkIGNhdXNpbmcgdGhlIGRyaXZl ciB0byBiZQo+ID4+PiB1bnJlZ2lzdGVyZWQuCj4gPj4+ICsgKiAgIFRoaXMgY2FuJ3QgaGFwcGVu IGFzIGxvbmcgYXMgdGhlcmUncyBvcGVuIGZpbGUgaGFuZGxlcyBiZWNhdXNlIGEKPiA+Pj4gcmVm ZXJlbmNlCj4gPj4+ICsgKiAgIGlzIHRha2VuIG9uIHRoZSBtb2R1bGUuCj4gPj4gCj4gPj4gQXNp ZGU6IHlvdSBjYW4gZG8gdGhhdCwgYnV0IHRoZW4gaXQgd29ya3MgbGlrZSBhIGh3IHVucGx1Zywg dGhyb3VnaCB0aGUKPiA+PiB1bmJpbmQgcHJvcGVydHkgaW4gc3lzZnMuCj4gPiAKPiA+IFRoZSBt b2R1bGUgaXMgc3RpbGwgcGlubmVkIGlzbid0IGl0Pwo+IAo+IFl1cCwgYnV0IG9ubHkgdGhlIGNv ZGUgaXMgcGlubmVkLCBub3QgYW55IG9mIHRoZSBkYXRhc3RydWN0dXJlcyBsaWtlCj4gZHJtX2Rl dmljZS4KPgo+ID4gSSBjYW4gYWRkIHN5c2ZzIHVuYmluZCBhcyBhIHRoaXJkIHdheSBvZiB0cmln Z2VyaW5nIHVuYmluZDoKPiA+ICAqIC0gVGhlIHN5c2ZzIGRyaXZlciBfdW5iaW5kXyBmaWxlIGNh biBiZSB1c2VkIHRvIHVuYmluZCB0aGUgZHJpdmVyIGZvcm0KPiA+IHRoZQo+ID4gICogICBkZXZp Y2UuIFRoaXMgY2FuIGhhcHBlbiBhbnkgdGltZS4KPiA+ICAqCgpTb3VuZHMgZ29vZCB0byBtZS4K Cj4gPj4+ICsgKgo+ID4+PiArICogLSBUaGUgZGV2aWNlIGlzIHJlbW92ZWQgKFVTQiwgRGV2aWNl IFRyZWUgb3ZlcmxheSkuCj4gPj4+ICsgKiAgIFRoaXMgY2FuIGhhcHBlbiBhdCBhbnkgdGltZS4K PiA+Pj4gKyAqCj4gPj4+ICsgKiBUaGUgZHJpdmVyIG5lZWRzIHRvIHByb3RlY3QgZGV2aWNlIHJl c291cmNlcyBmcm9tIGFjY2VzcyBhZnRlciB0aGUKPiA+Pj4gZGV2aWNlIGlzCj4gPj4+ICsgKiBn b25lLiBUaGlzIGlzIGRvbmUgY2hlY2tpbmcgZHJtX2Rldl9pc191bnBsdWdnZWQoKSwgdHlwaWNh bGx5IGluCj4gPj4+ICsgKiAmZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzLmRpcnR5LCAmZHJtX3NpbXBs ZV9kaXNwbGF5X3BpcGVfZnVuY3MuZW5hYmxlCj4gPj4+IGFuZAo+ID4+PiArICogXC5kaXNhYmxl LiBSZXNvdXJjZXMgdGhhdCBkb2Vzbid0IGZhY2UgdXNlcnNwYWNlIGFuZCBpcyBvbmx5IHVzZWQK CnMvZG9lc24ndC9kb24ndC8Kcy9hbmQgaXMvYW5kIGFyZS8KCj4gPj4+IHdpdGggdGhlCj4gPj4+ ICsgKiBkZXZpY2UgY2FuIGJlIHNldHVwIHVzaW5nIGRldm1cXyBmdW5jdGlvbnMsIGJ1dCAmdGlu eWRybV9kZXZpY2UgbXVzdAo+ID4+PiBiZQo+ID4+PiArICogYWxsb2NhdGVkIHVzaW5nIHBsYWlu IGt6YWxsb2MoKSBzaW5jZSBpdCdzIGxpZmV0aW1lIGNhbiBleGNlZWQgdGhhdAo+ID4+PiBvZiB0 aGUKCnMvaXQncy9pdHMvCgo+ID4+PiArICogZGV2aWNlLiB0aW55ZHJtX3JlbGVhc2UoKSB3aWxs IGZyZWUgdGhlIHN0cnVjdHVyZS4KPiA+PiAKPiA+PiBTbyBoZXJlJ3MgYSBiaXQgYSBkcmFnb246 IFRoZXJlJ3Mgbm8gcHJldmVudGlvbiBvZiBpc191bnBsdWdnZWQgcmFjaW5nCj4gPj4gYWdhaW5z dCBhIGRybV9kZXZfdW5wbHVnKCkuIFRoZXJlJ3MgYmVlbiB2YXJpb3VzIGF0dGVtcHRzIHRvIGZp eGluZyB0aGlzLAo+ID4+IGJ1dCB0aGV5J3JlIGFsbCBzb21ld2hhdCB1Z2x5Lgo+ID4+IAo+ID4+ IEVpdGhlciB3YXksIHRoYXQncyBhIGJ1ZyBpbiB0aGUgZHJtIGNvcmUgOi0pCj4gPj4gCj4gPj4+ ICAgICovCj4gPj4+ICAgIAo+ID4+PiAgICAgLyoqCj4gPj4+IEBAIC0xMzgsNiArMTYxLDI5IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzCj4gPj4+IHRpbnlkcm1f bW9kZV9jb25maWdfZnVuY3MgPSB7Cj4gPj4+ICAgICAgICAgLmF0b21pY19jb21taXQgPSBkcm1f YXRvbWljX2hlbHBlcl9jb21taXQsCj4gPj4+ICAgfTsKPiA+Pj4gKy8qKgo+ID4+PiArICogdGlu eWRybV9yZWxlYXNlIC0gRFJNIGRyaXZlciByZWxlYXNlIGhlbHBlcgo+ID4+PiArICogQGRybTog RFJNIGRldmljZQo+ID4+PiArICoKPiA+Pj4gKyAqIFRoaXMgZnVuY3Rpb24gY2xlYW5zIHVwIGFu ZCBmaW5hbGl6ZXMgJmRybV9kZXZpY2UgYW5kIGZyZWVzCj4gPj4+ICZ0aW55ZHJtX2RldmljZS4K PiA+Pj4gKyAqCj4gPj4+ICsgKiBEcml2ZXJzIG11c3QgdXNlIHRoaXMgYXMgdGhlaXIgJmRybV9k cml2ZXItPnJlbGVhc2UgY2FsbGJhY2suCj4gPj4+ICsgKi8KPiA+Pj4gK3ZvaWQgdGlueWRybV9y ZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pCj4gPj4+ICt7Cj4gPj4+ICsgICAgICAgc3Ry dWN0IHRpbnlkcm1fZGV2aWNlICp0ZGV2ID0gZHJtX3RvX3Rpbnlkcm0oZHJtKTsKPiA+Pj4gKwo+ ID4+PiArICAgICAgIERSTV9ERUJVR19EUklWRVIoIlxuIik7Cj4gPj4+ICsKPiA+Pj4gKyAgICAg ICBkcm1fbW9kZV9jb25maWdfY2xlYW51cChkcm0pOwo+ID4+PiArICAgICAgIGRybV9kZXZfZmlu aShkcm0pOwo+ID4+PiArCj4gPj4+ICsgICAgICAgbXV0ZXhfZGVzdHJveSgmdGRldi0+ZGlydHlf bG9jayk7Cj4gPj4+ICsgICAgICAga2ZyZWUodGRldi0+ZmJkZXZfY21hKTsKPiA+Pj4gKyAgICAg ICBrZnJlZSh0ZGV2KTsKPiA+Pj4gK30KPiA+Pj4gK0VYUE9SVF9TWU1CT0wodGlueWRybV9yZWxl YXNlKTsKPiA+Pj4gKwo+ID4+PiAgIHN0YXRpYyBpbnQgdGlueWRybV9pbml0KHN0cnVjdCBkZXZp Y2UgKnBhcmVudCwgc3RydWN0IHRpbnlkcm1fZGV2aWNlCj4gPj4+ICp0ZGV2LAo+ID4+PiAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzICpm Yl9mdW5jcywKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9kcml2ZXIg KmRyaXZlcikKPiA+Pj4gQEAgLTE2MCw4ICsyMDYsNiBAQCBzdGF0aWMgaW50IHRpbnlkcm1faW5p dChzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsCj4gPj4+IHN0cnVjdCB0aW55ZHJtX2RldmljZSAqdGRl diwKPiA+Pj4gICBzdGF0aWMgdm9pZCB0aW55ZHJtX2Zpbmkoc3RydWN0IHRpbnlkcm1fZGV2aWNl ICp0ZGV2KQo+ID4+PiAgIHsKPiA+Pj4gLSAgICAgICBkcm1fbW9kZV9jb25maWdfY2xlYW51cCgm dGRldi0+ZHJtKTsKPiA+Pj4gLSAgICAgICBtdXRleF9kZXN0cm95KCZ0ZGV2LT5kaXJ0eV9sb2Nr KTsKPiA+Pj4gICAgICAgICBkcm1fZGV2X3VucmVmKCZ0ZGV2LT5kcm0pOwo+ID4+PiAgIH0KPiA+ Pj4gQEAgLTE3OCw4ICsyMjIsOCBAQCBzdGF0aWMgdm9pZCBkZXZtX3Rpbnlkcm1fcmVsZWFzZSh2 b2lkICpkYXRhKQo+ID4+PiAgICogQGRyaXZlcjogRFJNIGRyaXZlcgo+ID4+PiAgICoKPiA+Pj4g ICAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgQHRkZXYsIHRoZSB1bmRlcmx5aW5nIERSTSBk ZXZpY2UgYW5kIGl0J3MKCldoaWxlIGF0IGl0LCBzL2l0J3MvaXRzLwoKPiA+Pj4gLSAqIG1vZGVf Y29uZmlnLiBSZXNvdXJjZXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGZyZWVkIG9uIGRyaXZlciBk ZXRhY2gKPiA+Pj4gKGRldnJlcykKPiA+Pj4gLSAqIHVzaW5nIGRybV9tb2RlX2NvbmZpZ19jbGVh bnVwKCkgYW5kIGRybV9kZXZfdW5yZWYoKS4KPiA+Pj4gKyAqIG1vZGVfY29uZmlnLiBkcm1fZGV2 X3VucmVmKCkgaXMgY2FsbGVkIG9uIGRyaXZlciBkZXRhY2ggKGRldnJlcykgYW5kCj4gPj4+IHdo ZW4KPiA+Pj4gKyAqIGFsbCByZWZzIGFyZSBkcm9wcGVkLCB0aW55ZHJtX3JlbGVhc2UoKSBpcyBj YWxsZWQuCj4gPj4+ICAgKgo+ID4+PiAgICogUmV0dXJuczoKPiA+Pj4gICAqIFplcm8gb24gc3Vj Y2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ID4+PiBAQCAtMjI2LDE0ICsy NzAsMTcgQEAgc3RhdGljIGludCB0aW55ZHJtX3JlZ2lzdGVyKHN0cnVjdCB0aW55ZHJtX2Rldmlj ZQo+ID4+PiAqdGRldikKPiA+Pj4gCj4gPj4+ICAgc3RhdGljIHZvaWQgdGlueWRybV91bnJlZ2lz dGVyKHN0cnVjdCB0aW55ZHJtX2RldmljZSAqdGRldikKPiA+Pj4gICB7Cj4gPj4+IC0gICAgICAg c3RydWN0IGRybV9mYmRldl9jbWEgKmZiZGV2X2NtYSA9IHRkZXYtPmZiZGV2X2NtYTsKPiA+Pj4g LQo+ID4+PiAgICAgICAgIGRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKCZ0ZGV2LT5kcm0pOwo+ ID4+PiAKPiA+Pj4gLSAgICAgICAvKiBkb24ndCByZXN0b3JlIGZiZGV2IGluIGxhc3RjbG9zZSwg a2VlcCBwaXBlbGluZSBkaXNhYmxlZCAqLwo+ID4+PiAtICAgICAgIHRkZXYtPmZiZGV2X2NtYSA9 IE5VTEw7Cj4gPj4+IC0gICAgICAgZHJtX2Rldl91bnJlZ2lzdGVyKCZ0ZGV2LT5kcm0pOwo+ID4+ PiAtICAgICAgIGlmIChmYmRldl9jbWEpCj4gPj4+IC0gICAgICAgICAgICAgICBkcm1fZmJkZXZf Y21hX2ZpbmkoZmJkZXZfY21hKTsKPiA+Pj4gKwo+ID4+PiArICAgICAgIC8qIEdldCBhIHJlZiB0 aGF0IHdpbGwgYmUgcHV0IGluIHRpbnlkcm1fZmluaSgpICovCj4gPj4+ICsgICAgICAgZHJtX2Rl dl9yZWYoJnRkZXYtPmRybSk7Cj4gPj4gCj4gPj4gV2h5IGRvIHdlIG5lZWQgdGhhdCBwcml2YXRl IHJlZj8gR3JhYmJpbmcgcmVmZXJlbmNlcyBpbiB1bnJlZ2lzdGVyIGNvZGUKPiA+PiBsb29rcyBs aWtlIGEgcmVjaXBlIGZvciBsZWFrcyAuLi4KPiA+IAo+ID4gWWVhaCwgaXQncyBiZXR0ZXIgdG8g dGFrZSB0aGUgc2Vjb25kIHJlZiBpbiBkZXZtX3Rpbnlkcm1fcmVnaXN0ZXIoKS4KPiA+IAo+ID4g VGhlIHJlYXNvbiBJIG5lZWQgMiByZWZzIGlzIGJlY2F1c2UgdGlueWRybSBpcyBzZXQgdXAgd2l0 aCAyIGRldm1fCj4gPiBmdW5jdGlvbnMuIFRoaXMgd2F5IEkgY2FuIGxlYXZlIGFsbCBlcnJvciBw YXRoIGNsZWFudXAgaW4gdGhlIGhhbmRzIG9mCj4gPiBkZXZyZXMuCj4gPiAKPiA+IHN0YXRpYyBp bnQgZHJpdmVyX3Byb2JlKC4uLikKPiA+IHsKPiA+ICAgICByZXQgPSBkZXZtX3Rpbnlkcm1faW5p dCguLi4pOwo+ID4gICAgIGlmIChyZXQpCj4gPiAgICAgICAgIHJldHVybiByZXQ7Cj4gPiAgICAg Cj4gPiAgICAgcmV0ID0gdGlueWRybV9kaXNwbGF5X3BpcGVfaW5pdCguLi4pOwo+ID4gICAgIGlm IChyZXQpCj4gPiAgICAgICAgIHJldHVybiByZXQ7Cj4gPiAgICAgCj4gPiAgICAgZHJtX21vZGVf Y29uZmlnX3Jlc2V0KC4uLik7Cj4gPiAgICAgCj4gPiAgICAgcmV0dXJuIGRldm1fdGlueWRybV9y ZWdpc3RlciguLi4pOwo+ID4gfQo+IAo+IEkgZG9uJ3QgdGhpbmsgdGhpcyB3b3Jrcy4gV2hhdCdz IHdvcnNlLCBkZXZtIGhhcyBhIGhpZ2ggY2hhbmNlIG9mCj4gZnJlZWluZyBzdHVmZiBhdCB0aGUg d3JvbmcgdGltZSBzaW5jZSBpdCdzIHRpZWQgdG8gdGhlCj4gZHJtX2RldmljZS0+ZGV2LCBhbmQg bm90IHRvIGRybV9kZXZpY2UuCj4gCj4gSSdtIG5vdCBzdXJlIHdoYXQgYSBiZXR0ZXIgc29sdXRp b24gaXMsIGJ1dCB3aGVuIGRpc2N1c3NpbmcgYWxsIHRoaXMKPiB3aXRoIExhdXJlbnQgd2UgYWdy ZWVkIHRoYXQgaW4gZ2VuZXJhbCwgZGV2bV8gbmVlZHMgdG8gYmUgY29uc2lkZXJlZAo+IGhhcm1m dWwuIExvb2tzIHNpbXBsZSwgdmVyeSBlYXN5IHRvIGNyZWF0ZSBicm9rZW4gY29kZSB0aGF0IGRv ZXNuJ3QKPiBjbGVhbiB1cCBwcm9wZXJseSBvbiB1bnBsdWcuIEFzIG11Y2ggYXMgbGVha3MgYXJl IGJhZCwgZnJlZWluZyBiZWZvcmUKPiBhbGwgdXNlcnMgYXJlIGdvbmUgaXMgd29yc2UuIGRldm1f ICJmaXhlcyIgdGhlIGZvcm1lciBhbmQgaGVhdmlseQo+IGVuY291cmFnZXMgdGhlIGxhdHRlci4K CkkgdG90YWxseSBhZ3JlZS4gQSBjcmFzaCBhdCB1bmJpbmQgdGltZSBpcyB3b3JzZSB0aGFuIGEg bWVtb3J5IGxlYWsgZ2l2ZW4gdGhhdCAKdGhlIGJpbmQvdW5iaW5kIGN5Y2xlcyBhcmUgdW5mcmVx dWVudC4gT2YgY291cnNlIHdlIG5lZWQgdG8gYWltIGZvciBmaXhpbmcgCmJvdGggcHJvYmxlbXMg Oi0pCgo+IEluIHlvdXIgY2FzZSBJIHRoaW5rIGRldm1fdGlueWRybV9yZWdpc3RlciBpcyBjb3Jy ZWN0IChidXQgYSBiaXQKPiBzdHJhbmdlKS4KClllcywgSSBkb24ndCB0aGluayBhbiBleHBsaWNp dCB0aW55ZHJtX3VucmVnaXN0ZXIoKSBjYWxsIGluIHRoZSBkcml2ZXIncyAKLnJlbW92ZSgpIGhh bmRsZXIgd291bGQgYmUgc28gZGlmZmljdWx0LgoKPiBkZXZtX3Rpbnlkcm1faW5pdCBvdG9oIGxv b2tzIGxpa2UgYWxsIHRoZSBjb2RlIGl0IGhhcyBzaG91bGQgYmUgbW92ZWQgaW50bwo+IHRoZSBk cm1fZHJpdmVyLT5yZWxlYXNlIGNhbGxiYWNrLiBZb3UgY2FuJ3QgZGVzdHJveSB0aGUgZGlydHlf bG9jayB3aGlsZSBhCj4gdGhyZWFkIG1pZ2h0IGJlIGhvbGRpbmcgaXQgcmlnaHQgYXQgdGhhdCBt b21lbnQuCgpBZ3JlZWQgdG9vLgoKRnVydGhlcm1vcmUgdGhlIGRldm1fa3phbGxvYygpIGluIHRp bnlkcm1fZGlzcGxheV9waXBlX2luaXQoKSBzZWVtcyBzdXNwaWNpb3VzIAp0byBtZS4gSXQgc2hv dWxkIGJlIGVhc3kgdG8gcmVwbGFjZSBpdCB3aXRoIGt6YWxsb2MoKSwgdGhlIG1vZGUgY2FuIGJl IGZyZWVkIAppbiB0aW55ZHJtX2Nvbm5lY3Rvcl9kZXN0cm95KCkuCgooQW5kIG9uIGEgc2lkZSBu b3RlIHRoZSBkaXJlY3QgbW9kZSBjb3B5IHdpdGhvdXQgY2FsbGluZyBkcm1fbW9kZV9kdXBsaWNh dGUoKSAKaW4gdGhhdCBmdW5jdGlvbiBpcyBhbHNvIHN1c3BpY2lvdXMsIGFsdGhvdWdoIGl0IG1p Z2h0IG5vdCBiZSBhbiBpc3N1ZSBpbiAKcHJhY3RpY2UpCgo+ID4+PiArCj4gPj4+ICsgICAgICAg ZHJtX2ZiZGV2X2NtYV9kZXZfdW5wbHVnKHRkZXYtPmZiZGV2X2NtYSk7Cj4gPj4+ICsgICAgICAg ZHJtX2Rldl91bnBsdWcoJnRkZXYtPmRybSk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgICAvKiBNYWtl IHN1cmUgZnJhbWVidWZmZXIgZmx1c2hpbmcgaXMgZG9uZSAqLwo+ID4+PiArICAgICAgIG11dGV4 X2xvY2soJnRkZXYtPmRpcnR5X2xvY2spOwo+ID4+PiArICAgICAgIG11dGV4X3VubG9jaygmdGRl di0+ZGlydHlfbG9jayk7Cj4gPj4gCj4gPj4gSXMgdGhpcyByZWFsbHkgbmVlZGVkPyBPciwgZG9l c24ndCBpdCBqdXN0IHBhcGVyIG92ZXIgYSBkcml2ZXIgYnVnIHlvdQo+ID4+IGhhdmUgYWxyZWFk eSBhbnl3YXksIHNpbmNlIG5hdGl2ZSBrbXMgdXNlcnNwYWNlIGNhbiBkaXJlY3RseSBjYWxsCj4g Pj4gZmItPmZ1bmNzLT5kaXJ0eSB0b28sIGFuZCB5b3UgYWxyZWFkeSBwcm90ZWN0IGFnYWluc3Qg dGhhdC4KPiA+PiAKPiA+PiBUaGlzIGRlZmluaXRlbHkgbG9va3MgbGlrZSB0aGUgZmJkZXYgaGVs cGVyIGlzIGxlYWtpbmcgaW1wbGVtZW50YXRpb24KPiA+PiBkZXRhaWxzIHRvIGNhbGxlcnMgd2hl cmUgaXQgc2hvdWxkbid0IGRvIHRoYXQuCj4gPiAKPiA+IEZsdXNoaW5nIGNhbiBoYXBwZW4gd2hp bGUgZHJtX2Rldl91bnBsdWcoKSBpcyBjYWxsZWQsIGFuZCB3aGVuIHdlIGxlYXZlCj4gPiB0aGlz IGZ1bmN0aW9uIHRoZSBkZXZpY2UgZmFjaW5nIHJlc291cmNlcyBjb250cm9sbGVkIGJ5IGRldnJl cyB3aWxsIGJlCj4gPiByZW1vdmVkLiBUaHVzIEkgaGF2ZSB0byBtYWtlIHN1cmUgYW55IHN1Y2gg Zmx1c2hpbmcgaXMgZG9uZSBiZWZvcmUKPiA+IGxlYXZpbmcgc28gdGhlIG5leHQgZmx1c2ggaXMg c3RvcHBlZCBieSB0aGUgZHJtX2Rldl9pc191bnBsdWdnZWQoKSBjaGVjay4KPiA+IEkgZG9uJ3Qg c2VlIGFueSBvdGhlciB3YXkgb2YgZW5zdXJpbmcgdGhhdC4KPiA+IAo+ID4gSSBzZWUgbm93IHRo YXQgSSBzaG91bGQgbW92ZSB0aGUgY2FsbCB0byBkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bigp Cj4gPiBhZnRlciBkcm1fZGV2X3VucGx1ZygpIHRvIHByb3Blcmx5IHByb3RlY3QgdGhlIHBpcGUg LmVuYWJsZS8uZGlzYWJsZQo+ID4gY2FsbGJhY2tzLgo+IAo+IEhtLCBjYWxsaW5nIF9zaHV0ZG93 biB3aGVuIHRoZSBodyBpcyBnb25lIGFscmVhZHkgd29uJ3QgZW5kIHdlbGwuCj4gRnVuZGFtZW50 YWxseSB0aGlzIHJhY2UgZXhpc3RzIGZvciBhbGwgdXNlLWNhc2VzLCBhbmQgSSdtIHNvbWV3aGF0 Cj4gbGVhbmluZyB0b3dhcmRzIHBsdWdnaW5nIGl0IGluIHRoZSBjb3JlLgo+IAo+IFRoZSBnZW5l cmFsIHNvbHV0aW9uIHByb2JhYmx5IGludm9sdmVzIHNvbWV0aGluZyB0aGF0IHNtZWxscyBhIGxv dAo+IGxpa2Ugc3JjdSwgaS5lLiBhdCBldmVyeSBwb3NzaWJsZSBlbnRyeSBwb2ludCBpbnRvIGEg ZHJtIGRyaXZlcgo+IChpb2N0bCwgZmJkZXYsIGRtYS1idWYgc2hhcmluZywgZXZlcnl0aGluZyBy ZWFsbHkpIHdlIHRha2UgdGhhdAo+IHN1cGVyLWNoZWFwIHJlYWQtc2lkZSBsb29rLCBhbmQgZHJv cCBpdCB3aGVuIHdlIGxlYXZlLgoKVGhhdCdzIHNpbWlsYXIgdG8gd2hhdCB3ZSBwbGFuIHRvIGRv IGluIFY0TDIuIFRoZSBpZGVhIGlzIHRvIHNldCBhIGRldmljZSAKcmVtb3ZlZCBmbGFnIGF0IHRo ZSBiZWdpbm5pbmcgb2YgdGhlIC5yZW1vdmUoKSBoYW5kbGVyIGFuZCB3YWl0IGZvciBhbGwgCnBl bmRpbmcgb3BlcmF0aW9ucyB0byBjb21wbGV0ZS4gVGhlIGNvcmUgd2lsbCByZWplY3QgYW55IG5l dyBvcGVyYXRpb24gd2hlbiAKdGhlIGZsYWcgaXMgc2V0LiBUbyB3YWl0IGZvciBjb21wbGV0aW9u LCBldmVyeSBlbnRyeSBwb2ludCB3b3VsZCBpbmNyZWFzZSBhIAp1c2UgY291bnQsIGFuZCBkZWNy ZWFzZSBpdCBvbiBleGl0LiBXaGVuIHRoZSB1c2UgY291bnQgaXMgZGVjcmVhc2VkIHRvIDAgCndh aXRlcnMgd2lsbCBiZSB3b2tlbiB1cC4gVGhpcyBzaG91bGQgc29sdmUgdGhlIHVucGx1Zy91c2Vy IHJhY2UuCgo+IFRoZW4gb24gdW5wbHVnIHdlIGNhbGwgc3luY2hyb2l6ZV9zcmN1LCB3aGljaCBl c3NlbnRpYWxseSBkb2VzIHdoYXQKPiB5b3VyIGxvY2sgZ3JhYiZkcm9wIHRyaWNrIGRvZXMuIEp1 c3QgbXVjaCBsZXNzIG92ZXJoZWFkIG9uIHRoZSByZWFkCj4gc2lkZSAod2UgY2FuIHNwcmlua2xl IHRoaXMgb3ZlciBldmVyeXRoaW5nIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQKPiB3YXN0aW5nIGNw dSB0aW1lKSwgYW5kIGEgYml0IGNsZWFyZXIgaW4gdGhlIGludGVudGlvbiBvbiB0aGUgX3VucGx1 Zwo+IHNpZGUuCgpMb29rcyBsaWtlIHNyY3UgYWxyZWFkeSBpbXBsZW1lbnRzIHdoYXQgd2UgbmVl ZC4gSSdtIG5vdCBzdXJlIHdlIG5lZWQgYW4gUkNVLQpiYXNlZCBzb2x1dGlvbiB0aG91Z2gsIGl0 IG1pZ2h0IGJlIHRvbyBjb21wbGV4LgoKPiBCdXQgeWVhaCwgYW5vdGhlciB0aGluZyB0aGF0J2xs IGJlIGEgcGlsZSBvZiB3b3JrIHRvIGZpeCBwcm9wZXJseS4gSSdkCj4gbGVhdmUgaXQgYXQgYSBG SVhNRSBjb21tZW50IGluIGRybV9kZXZfdW5wbHVnKCkgdW50aWwgd2UgZ2V0IHRvIGl0Lgo+IEFu ZCBmb3Igbm93IG5vdCB3b3JyeSBhYm91dCBhbGwgdGhlIHBvc3NpYmxlIHJhY2VzLiBPbmUgdGhp bmcgYXQgYQo+IHRpbWUgYW5kIGFsbCB0aGF0Lgo+IAo+ID4+PiAgIH0KPiA+Pj4gICAKPiA+Pj4g ICBzdGF0aWMgdm9pZCBkZXZtX3Rpbnlkcm1fcmVnaXN0ZXJfcmVsZWFzZSh2b2lkICpkYXRhKQo+ ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vbWkwMjgzcXQuYwo+ID4+ PiBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL21pMDI4M3F0LmMKPiA+Pj4gaW5kZXggMjQ2NTQ4 OS4uODRhYjhkMSAxMDA2NDQKPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vbWkw MjgzcXQuYwo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9taTAyODNxdC5jCj4g Pj4+IEBAIC0zMSw2ICszMSw5IEBAIHN0YXRpYyB2b2lkIG1pMDI4M3F0X2VuYWJsZShzdHJ1Y3QK PiA+Pj4gZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsCj4gPj4+IAo+ID4+PiAgICAgICAg IERSTV9ERUJVR19LTVMoIlxuIik7Cj4gPj4+ICAgCj4gPj4+ICsgICAgICAgaWYgKGRybV9kZXZf aXNfdW5wbHVnZ2VkKCZ0ZGV2LT5kcm0pKQo+ID4+PiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ ID4+PiArCj4gPj4+ICAgICAgICAgcmV0ID0gcmVndWxhdG9yX2VuYWJsZShtaXBpLT5yZWd1bGF0 b3IpOwo+ID4+PiAgICAgICAgIGlmIChyZXQpIHsKPiA+Pj4gICAgICAgICAgICAgICAgIGRldl9l cnIoZGV2LCAiRmFpbGVkIHRvIGVuYWJsZSByZWd1bGF0b3IgKCVkKVxuIiwgcmV0KTsKPiA+Pj4g QEAgLTEzMyw2ICsxMzYsNyBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgbWkwMjgzcXRfZHJp dmVyID0gewo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJJVkVSX0FU T01JQywKPiA+Pj4gICAgICAgICAuZm9wcyAgICAgICAgICAgICAgICAgICA9ICZtaTAyODNxdF9m b3BzLAo+ID4+PiAgICAgICAgIFRJTllEUk1fR0VNX0RSSVZFUl9PUFMsCj4gPj4+ICsgICAgICAg LnJlbGVhc2UgICAgICAgICAgICAgICAgPSB0aW55ZHJtX3JlbGVhc2UsCgpTaG91bGQgdGhpcyBi ZSBpbmNsdWRlZCBpbiB0aGUgVElOWURSTV9HRU1fRFJJVkVSX09QUyBtYWNybyA/Cgo+ID4+PiAg ICAgICAgIC5sYXN0Y2xvc2UgICAgICAgICAgICAgID0gdGlueWRybV9sYXN0Y2xvc2UsCj4gPj4+ ICAgICAgICAgLmRlYnVnZnNfaW5pdCAgICAgICAgICAgPSBtaXBpX2RiaV9kZWJ1Z2ZzX2luaXQs Cj4gPj4+ICAgICAgICAgLm5hbWUgICAgICAgICAgICAgICAgICAgPSAibWkwMjgzcXQiLAoKW3Nu aXBdCgotLSAKUmVnYXJkcywKCkxhdXJlbnQgUGluY2hhcnQKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=