From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/4] drm/virtio: remove drm_dev_set_unique workaround Date: Mon, 9 Apr 2018 10:26:38 +0200 Message-ID: <20180409082638.GH31310@phenom.ffwll.local> References: <20180328012451.31479-1-emil.l.velikov@gmail.com> <20180328012451.31479-3-emil.l.velikov@gmail.com> <4b461dc5-5bff-af82-2716-7228b5f16d76@redhat.com> <8627a2a2-21dc-92a7-7916-35777252032d@redhat.com> <569d6ab7-7728-3623-30ec-7ca6751641ca@redhat.com> <418cb54d-a423-e36c-d792-e3f0cdfe8758@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id D29F56E04D for ; Mon, 9 Apr 2018 08:26:42 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id r82so14897308wme.0 for ; Mon, 09 Apr 2018 01:26:42 -0700 (PDT) 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: Emil Velikov Cc: Daniel Vetter , Laszlo Ersek , Gerd Hoffmann , ML dri-devel , Hans de Goede List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBBcHIgMDYsIDIwMTggYXQgMDE6NTY6MTVQTSArMDEwMCwgRW1pbCBWZWxpa292IHdy b3RlOgo+IEhpIExhc3psbywKPiAKPiBPbiA2IEFwcmlsIDIwMTggYXQgMTM6MTUsIExhc3psbyBF cnNlayA8bGVyc2VrQHJlZGhhdC5jb20+IHdyb3RlOgo+ID4gT24gMDQvMDQvMTggMTk6MjksIExh c3psbyBFcnNlayB3cm90ZToKPiA+PiBIaSBFbWlsLAo+ID4+Cj4gPj4gT24gMDQvMDMvMTggMTk6 MTMsIEVtaWwgVmVsaWtvdiB3cm90ZToKPiA+Pj4gT24gMjkgTWFyY2ggMjAxOCBhdCAxMjoxNywg TGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4gd3JvdGU6Cj4gPj4+PiBPbiAwMy8yOC8x OCAxNjozNSwgRW1pbCBWZWxpa292IHdyb3RlOgo+ID4+Pj4+IE9uIDI4IE1hcmNoIDIwMTggYXQg MTE6MjcsIExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+IHdyb3RlOgo+ID4+Pj4+PiBP biAwMy8yOC8xOCAwMzoyNCwgRW1pbCBWZWxpa292IHdyb3RlOgo+ID4+Pj4KPiA+Pj4+Pj4+IEdl bnRzLCBjYW4gc29tZW9uZSBkb3VibGUtY2hlY2sgdGhpcyBwbGVhc2U/IEp1c3QgaW4gY2FzZS4K PiA+Pj4+Pj4KPiA+Pj4+Pj4gSSBndWVzcyBJIHNob3VsZCB0ZXN0IHdoZXRoZXIgdGhpcyBzZXJp ZXMgcmVncmVzc2VzIHRoZSB1c2UgY2FzZQo+ID4+Pj4+PiBkZXNjcmliZWQgaW4gYzJjYmMzOGI5 NzsgaXMgdGhhdCBjb3JyZWN0Pwo+ID4+Pj4+Pgo+ID4+Pj4+IFByZWNpc2VseS4KPiA+Pj4+Cj4g Pj4+Pj4gWzNdIGh0dHBzOi8vZ2l0aHViLmNvbS9ldmVsaWtvdi9saW51eC9jb21taXRzL2lvY3Rs LWNsZWFudXBzCj4gPj4+Pgo+ID4+Pj4gVW5mb3J0dW5hdGVseSwgdGhpcyBzZXJpZXMgc2VlbXMg dG8gcmVpbnRyb2R1Y2UgdGhlIHJlZ3Jlc3Npb24gZml4ZWQKPiA+Pj4+IC8gZGVzY3JpYmVkIGVh cmxpZXIgaW4gY29tbWl0IGMyY2JjMzhiOTcuCj4gPj4+Pgo+ID4+PiBUaGFuayB5b3UgdmVyeSBt dWNoIGZvciB0ZXN0aW5nLgo+ID4+Pgo+ID4+PiBCZWxpZXZlIEkndmUgdHJhY2tlZCBpdCBkb3du IHRvIGEgYnJva2VuIGNvbW1pdCBmcm9tIDIwMTQgOy0pCj4gPj4+IFBsZWFzZSB0cnkgdGhlIGZv bGxvd2luZyBicmFuY2ggWzFdIC0gaXQncyB1bnRlc3RlZCwgYnV0IEknbSA5OSUgc3VyZQo+ID4+ PiBpdCB3aWxsIHdvcmsgbGlrZSBhIGNoYXJtLgo+ID4+Cj4gPj4gQWxhcywgaXQgZG9lcyBub3Qg d29yay4KPiA+Cj4gPiBJJ3ZlIGRvbmUgc29tZSBtb3JlIGRpZ2dpbmcuIExldCBtZSBxdW90ZSB0 aGUgY29tbWl0IG1lc3NhZ2Ugb24gdGhlCj4gPiBwcm9wb3NlZCBwYXRjaCBhZ2FpbjoKPiA+Cj4g Pj4gRWFsaWVyIGNvbW1pdCBhMzI1NzI1NjMzYzI2YWE2NmFiOTQwZjc2MmE2YjA3NzhlZGY3NmMw IGRpZCBub3QgYXR0cmlidXRlCj4gPj4gdGhhdCB2aXJ0aW8gY2FuIGJlIGVpdGhlciBQQ0kgb3Ig YSBwbGF0Zm9ybSBkZXZpY2UgYW5kIHJlbW92ZWQgdGhlCj4gPj4gLnNldF9idXNpZCBob29rLiBX aGVyZWFzIG9ubHkgdGhlICJwbGF0Zm9ybSIgaW5zdGFuY2Ugc2hvdWxkIGhhdmUgYmVlbgo+ID4+ IHJlbW92ZWQuCj4gPj4KPiA+PiBTaW5jZSB0aGVuLCB0d28gdGhpbmdzIGhhdmUgaGFwcGVuZWQ6 Cj4gPj4gIC0gdGhlIGRyaXZlciBtYW51YWxseSBjYWxscyBkcm1fZGV2X3NldF91bmlxdWUsIGFk ZHJlc3NpbmcgdGhlIFhzZXJ2ZXIKPiA+PiByZWdyZXNzaW9uIC0gc2VlIGNvbW1pdCA5Nzg1YjQz MjFiMGJkNzAxZjhkMjFkM2QzYzY3NmE3NzM5YTVjZjIyCj4gPj4gIC0gY29yZSBpdHNlbGYgY2Fs bHMgZHJtX3BjaV9zZXRfYnVzaWQsIG9uIGRybV9zZXRfYnVzaWQgSU9DVEwgc2V0dGluZwo+ID4+ IHRoZSBidXNpZCwgc28gd2UgZG9uJ3QgbmVlZCB0byBmYWxsYmFjayB0byBkZXYtPnVuaXF1ZSAt IHNlZSBjb21taXQKPiA+PiA1YzQ4NGNlZTdlZjljNGZkMjlmYTBiYTA5NjQwZDU1OTYwOTc3MTQ1 Cj4gPj4KPiA+PiBXaXRoIHRoYXQgaW4gcGxhY2Ugd2UgY2FuIHJlbW92ZSB0aGUgbG9jYWwgd29y a2Fyb3VuZC4KPiA+Cj4gPiBUaGlzIHdyaXRlLXVwIG9mIGV2ZW50cyBpcyBub3QgcHJlY2lzZSBl bm91Z2guIEluc3RlYWQsIEkgdGhpbmsgdGhlCj4gPiB0aW1lbGluZSBpcyBhcyBmb2xsb3dzOgo+ ID4KPiA+ICgxKSBDb21taXQgYTMyNTcyNTYzM2MyICgiZHJtOiBMb2JvdG9taXplIHNldF9idXNp ZCBub25zZW5zZSBmb3IgIXBjaQo+ID4gICAgIGRyaXZlcnMiLCAyMDE2LTA2LTIxKSBpbnRyb2R1 Y2VkIHRoZSByZWdyZXNzaW9uLiBCeSByZW1vdmluZwo+ID4gICAgIGRybV92aXJ0aW9fc2V0X2J1 c2lkKCksIGNvbW1pdCBhMzI1NzI1NjMzYzIgY2hhbmdlZCB0aGUgYmVoYXZpb3Igb2YKPiA+ICAg ICB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uOgo+ID4KPiA+PiBzdGF0aWMgaW50IGRybV9zZXRfYnVz aWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCj4g Pj4gewo+ID4+ICAgICAgIHN0cnVjdCBkcm1fbWFzdGVyICptYXN0ZXIgPSBmaWxlX3ByaXYtPm1h c3RlcjsKPiA+PiAgICAgICBpbnQgcmV0Owo+ID4+Cj4gPj4gICAgICAgaWYgKG1hc3Rlci0+dW5p cXVlICE9IE5VTEwpCj4gPj4gICAgICAgICAgICAgICBkcm1fdW5zZXRfYnVzaWQoZGV2LCBtYXN0 ZXIpOwo+ID4+Cj4gPj4gICAgICAgaWYgKGRldi0+ZHJpdmVyLT5zZXRfYnVzaWQpIHsKPiA+PiAg ICAgICAgICAgICAgIHJldCA9IGRldi0+ZHJpdmVyLT5zZXRfYnVzaWQoZGV2LCBtYXN0ZXIpOwo+ ID4+ICAgICAgICAgICAgICAgaWYgKHJldCkgewo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBk cm1fdW5zZXRfYnVzaWQoZGV2LCBtYXN0ZXIpOwo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+ID4+ICAgICAgICAgICAgICAgfQo+ID4+ICAgICAgIH0gZWxzZSB7Cj4gPj4g ICAgICAgICAgICAgICBXQVJOX09OKCFkZXYtPnVuaXF1ZSk7Cj4gPj4gICAgICAgICAgICAgICBt YXN0ZXItPnVuaXF1ZSA9IGtzdHJkdXAoZGV2LT51bmlxdWUsIEdGUF9LRVJORUwpOwo+ID4+ICAg ICAgICAgICAgICAgaWYgKG1hc3Rlci0+dW5pcXVlKQo+ID4+ICAgICAgICAgICAgICAgICAgICAg ICBtYXN0ZXItPnVuaXF1ZV9sZW4gPSBzdHJsZW4oZGV2LT51bmlxdWUpOwo+ID4+ICAgICAgIH0K PiA+Pgo+ID4+ICAgICAgIHJldHVybiAwOwo+ID4+IH0KPiA+Cj4gPiAgICAgV2hlbiBhMzI1NzI1 NjMzYzIgcmVtb3ZlZCBkcm1fdmlydGlvX3NldF9idXNpZCgpLCBkcm1fc2V0X2J1c2lkKCkKPiA+ ICAgICBzdGFydGVkIHRha2luZyB0aGUgc2Vjb25kIGJyYW5jaCwgd2hpY2ggd2Fzbid0IGRvaW5n IHRoZSByaWdodCB0aGluZwo+ID4gICAgIGZvciB2aXJ0aW8tdmdhIGF0IHRoZSB0aW1lLgo+ID4K PiA+ICgyKSBUaGVyZSB3ZXJlIHR3byB3YXlzIHRvIGZpeCB0aGUgcmVncmVzc2lvbjogZWl0aGVy IChhKSByZXR1cm4KPiA+ICAgICBkcm1fc2V0X2J1c2lkKCkgdG8gdGFraW5nIHRoZSBmaXJzdCBi cmFuY2gsIG9yIChiKSB0d2VhayB0aGUKPiA+ICAgICB2aXJ0aW8tdmdhIGRyaXZlciBzbyB0aGF0 IHRoZSBzZWNvbmQgYnJhbmNoIGluIGRybV9zZXRfYnVzaWQoKSBzdGFydAo+ID4gICAgIHRvIGJl aGF2ZSByaWdodC4KPiA+Cj4gPiAgICAgTXkgY29tbWl0IGMyY2JjMzhiOTcxNSAoImRybTogdmly dGlvOiByZWluc3RhdGUKPiA+ICAgICBkcm1fdmlydGlvX3NldF9idXNpZCgpIiwgMjAxNi0xMC0w NCkgaW1wbGVtZW50ZWQgKGEpLCBieSByZXZlcnRpbmcgYQo+ID4gICAgIGZldyBjaHVua3Mgb2Yg YTMyNTcyNTYzM2MyLgo+ID4KPiA+ICgzKSBHZXJkIHRob3VnaHQgdGhhdCBhcHByb2FjaCAoYikg d2FzIHN1cGVyaW9yIChhbmQgSSB0b3RhbGx5IGRlZmVyIHRvCj4gPiAgICAgaGltIG9uIHRoaXMs IG5vdyB0aGF0IEknbSBsZWFybmluZyBvZiBoaXMgcGF0Y2hlcyBpbiB0aGUgZmlyc3QgcGxhY2UK PiA+ICAgICA6KSApLiBOYW1lbHksIGluIGNvbW1pdCA5Nzg1YjQzMjFiMGIgKCJkcm0vdmlydGlv OiBmaXggYnVzaWQKPiA+ICAgICByZWdyZXNzaW9uIiwgMjAxNi0xMS0xNSksIGhlIGltcGxlbWVu dGVkIGFwcHJvYWNoIChiKSwgYW5kIHJpZ2h0Cj4gPiAgICAgYWZ0ZXIsIGluIGNvbW1pdCAxNzc1 ZGIwNzRhMzIgKCJSZXZlcnQgImRybTogdmlydGlvOiByZWluc3RhdGUKPiA+ICAgICBkcm1fdmly dGlvX3NldF9idXNpZCgpIiIsIDIwMTYtMTEtMTUpLCBoZSB1bmRpZCBteSBjb21taXQKPiA+ICAg ICBjMmNiYzM4Yjk3MTUuCj4gPgo+ID4gICAgIEluIG90aGVyIHdvcmRzLCBHZXJkIHJlcGxhY2Vk IGFwcHJvYWNoIChhKSB3aXRoIGFwcHJvYWNoIChiKS4KPiA+Cj4gPiAoNCkgU3Vic2VxdWVudGx5 LCBjb21taXQgNWM0ODRjZWU3ZWY5ICgiZHJtOiBSZW1vdmUKPiA+ICAgICBkcm1fZHJpdmVyLT5z ZXRfYnVzaWQgaG9vayIsIDIwMTctMDYtMjApLCBjaGFuZ2VkIGRybV9zZXRfYnVzaWQoKQo+ID4g ICAgIHRvICB0aGUgZm9sbG93aW5nOgo+ID4KPiA+PiBzdGF0aWMgaW50IGRybV9zZXRfYnVzaWQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCj4gPj4g ewo+ID4+ICAgICAgIHN0cnVjdCBkcm1fbWFzdGVyICptYXN0ZXIgPSBmaWxlX3ByaXYtPm1hc3Rl cjsKPiA+PiAgICAgICBpbnQgcmV0Owo+ID4+Cj4gPj4gICAgICAgaWYgKG1hc3Rlci0+dW5pcXVl ICE9IE5VTEwpCj4gPj4gICAgICAgICAgICAgICBkcm1fdW5zZXRfYnVzaWQoZGV2LCBtYXN0ZXIp Owo+ID4+Cj4gPj4gICAgICAgaWYgKGRldl9pc19wY2koZGV2LT5kZXYpKSB7Cj4gPj4gICAgICAg ICAgICAgICByZXQgPSBkcm1fcGNpX3NldF9idXNpZChkZXYsIG1hc3Rlcik7Cj4gPj4gICAgICAg ICAgICAgICBpZiAocmV0KSB7Cj4gPj4gICAgICAgICAgICAgICAgICAgICAgIGRybV91bnNldF9i dXNpZChkZXYsIG1hc3Rlcik7Cj4gPj4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4gPj4gICAgICAgICAgICAgICB9Cj4gPj4gICAgICAgfSBlbHNlIHsKPiA+PiAgICAgICAgICAg ICAgIFdBUk5fT04oIWRldi0+dW5pcXVlKTsKPiA+PiAgICAgICAgICAgICAgIG1hc3Rlci0+dW5p cXVlID0ga3N0cmR1cChkZXYtPnVuaXF1ZSwgR0ZQX0tFUk5FTCk7Cj4gPj4gICAgICAgICAgICAg ICBpZiAobWFzdGVyLT51bmlxdWUpCj4gPj4gICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlci0+ dW5pcXVlX2xlbiA9IHN0cmxlbihkZXYtPnVuaXF1ZSk7Cj4gPj4gICAgICAgfQo+ID4+Cj4gPj4g ICAgICAgcmV0dXJuIDA7Cj4gPj4gfQo+ID4KPiA+ICAgICBQZXJoYXBzIHN1cnByaXNpbmdseSwg dGhpcyBjaGFuZ2UgZGlkIG5vdCBhZmZlY3QgKG9yICJoZWxwIikKPiA+ICAgICB2aXJ0aW8tdmdh IGF0IGFsbCwgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IGRybV92aXJ0aW9fc2V0X2J1c2lkKCkgYWxz bwo+ID4gICAgIHVzZWQgdG8gY2FsbCBkcm1fcGNpX3NldF9idXNpZCgpLgo+ID4KPiA+ICAgICBU aGUgcmVhc29uIGZvciBjb21taXQgNWM0ODRjZWU3ZWY5IG5vdCBhZmZlY3RpbmcgdmlydGlvLXZn YSBpcyB0aGF0Cj4gPiAgICAgdGhlIGZpcnN0IGJyYW5jaCB3b3VsZCBub3QgYmUgdGFrZW4ganVz dCB0aGUgc2FtZSwgYmVjYXVzZQo+ID4gICAgIGRldl9pc19wY2koKSByZXR1cm5zIGZhbHNlIGZv ciB2aXJ0aW8tdmdhLiAoU28sIHRoZSBkaWZmZXJlbmNlIHdpdGgKPiA+ICAgICBkcm1fdmlydGlv X3NldF9idXNpZCgpIGlzIHRoYXQgZHJtX3ZpcnRpb19zZXRfYnVzaWQoKSB3b3VsZCBjYWxsCj4g PiAgICAgZHJtX3BjaV9zZXRfYnVzaWQoKSB3aXRob3V0IGNoZWNraW5nIGRldl9pc19wY2koKSBm aXJzdC4pCj4gPgo+ID4gICAgIEhlcmUncyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZGV2X2lzX3Bj aSgpIG1hY3JvLCBmcm9tCj4gPiAgICAgImluY2x1ZGUvbGludXgvcGNpLmgiOgo+ID4KPiA+PiAj ZGVmaW5lIGRldl9pc19wY2koZCkgKChkKS0+YnVzID09ICZwY2lfYnVzX3R5cGUpCj4gPgo+ID4g ICAgIEhvd2V2ZXIsIHRoZSBidXMgdHlwZSBmb3IgdmlydGlvLXZnYSBpcyAidmlydGlvX2J1cyIs IG5vdAo+ID4gICAgICJwY2lfYnVzX3R5cGUiLiBOYW1lbHksIHZpcnRpb19wY2lfcHJvYmUoKQo+ ID4gICAgIFtkcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jXSBjYWxscyByZWdpc3Rl cl92aXJ0aW9fZGV2aWNlKCkKPiA+ICAgICBbZHJpdmVycy92aXJ0aW8vdmlydGlvLmNdLCBhbmQg dGhlcmUgd2UgaGF2ZQo+ID4KPiA+PiBpbnQgcmVnaXN0ZXJfdmlydGlvX2RldmljZShzdHJ1Y3Qg dmlydGlvX2RldmljZSAqZGV2KQo+ID4+IHsKPiA+PiAgICAgICBpbnQgZXJyOwo+ID4+Cj4gPj4g ICAgICAgZGV2LT5kZXYuYnVzID0gJnZpcnRpb19idXM7Cj4gPgo+ID4gICAgIFRoaXMgbWVhbnMg dGhhdCBwb3N0LTVjNDg0Y2VlN2VmOSwgd2UgcmVtYWluIHJlbGlhbnQgb24gdGhlIHNlY29uZAo+ ID4gICAgIGJyYW5jaCBpbiBkcm1fc2V0X2J1c2lkKCksIGFuZCB0aGVyZWZvcmUgR2VyZCdzIGNv bW1pdCA5Nzg1YjQzMjFiMGIsCj4gPiAgICAgZnJvbSBwb2ludCAoMyksIHNob3VsZCBub3QgYmUg YmFja2VkIG91dC4KPiA+Cj4gPiBXaGF0IEkgY291bGQgc2VlIGFzIGp1c3RpZmllZCBpcyBhIGxv dWQgY29tbWVudCBpbiBkcm1fdmlydGlvX2luaXQoKSwKPiA+IGp1c3QgYWJvdmUgdGhlIGNhbGwg dG8gZHJtX2Rldl9zZXRfdW5pcXVlKCksIGV4cGxhaW5pbmcgd2h5IGl0IGlzCj4gPiBuZWNlc3Nh cnkgdG8gc2V0ICJ1bmlxdWUiIG1hbnVhbGx5LiBUaGUgcmVhc29uIGlzIHRoYXQgdmlydGlvLXZn YQo+ID4gdGVjaG5pY2FsbHkgaGFzICJ2aXJ0aW9fYnVzIiwgbm90ICJwY2lfYnVzX3R5cGUiLCBm b3IgYnVzIHR5cGUsIGFuZCBzbwo+ID4gdGhlIGdlbmVyaWMgUENJIEJ1c0lELXNldHRpbmcgd2ls bCBub3QgY292ZXIgaXQuCj4gPgo+IEkndmUgcmVhY2hlZCB0byByb3VnaGx5IHRoZSBzYW1lIGNv bmNsdXNpb24geWVzdGVyZGF5LiBPciB0byBwdXQgaXQgaW4KPiBzbGlnaHRseSBkaWZmZXJlbnRs eToKPiAKPiBVbmxpa2UgdGhlIG90aGVyIHZpcnR1YWwgR1BVIGRyaXZlcnMgKHZteGdmeCwgcXhs LCBib3NoLi4uKSB2aXJ0aW8KPiBhYnN0cmFjdHMgdGhlIHVuZGVybHlpbmcgYnVzIHR5cGUgYnkg dXNpbmcgc3RydWN0IHZpcnRpb19kZXZpY2UuCj4gSGVuY2UgdGhlIGRldl9pc19wY2koKSBjaGVj ayB3aWxsIGZhaWwgYW5kIHRoZSB1bmlxdWUgcmV0dXJuZWQgd2lsbCBiZQo+IHRoZSB2aXJ0aW9f ZGV2aWNlJyAidmlydGlvMCIsIHdoaWxlIHRoZSAicGNpOi4uLiIgb25lIGlzIHJlcXVpcmVkLgo+ IAo+IEFwYXJ0IGZyb20gYSBiZWVmeSBjb21tZW50IEkndmUgYWxzbyBjb25zaWRlcmVkOgo+ICAt IEV4dGVuZGluZyB0aGUgZGV2X2lzX3BjaSgpIGNhc2UgW2luIGRybV9zZXRfYnVzaWRdIHRvIGNv bnNpZGVyIHZpcnRpby4KPiBJdCBzZWVtcyBsaWtlIGEgYmlnZ2VyIGhhY2sgdGhhdCB3aGF0IHdl IGhhdmUgY3VycmVudGx5Lgo+ICAtIHBvaW50IGRybV9kZXZpY2U6OmRldiB0byB0aGUgcGFyZW50 IG9mIHRoZSB2aXJ0aW9fZGV2aWNlCj4gVGhlIGJpZ2dlc3QgaGFjayBpbWFnaW5hYmxlLCBpZiBl dmVuIHBvc3NpYmxlLgoKV2hhdCB3b3VsZC9jb3VsZCBicmVhayBpZiB3ZSBkbyB0aGlzPyBXaHkg aXMgdGhpcyBhIGhhY2s/Ci1EYW5pZWwKCj4gQWJvdmUgc2FpZCwgY29uc2lkZXIgcGF0Y2hlcyAz KzQgZHJvcHBlZCBhbmQgSSdsbCBmb2xsb3ctdXAgd2l0aCBhCj4gcGF0Y2ggYWRkaW5nIGlubGlu ZSBkb2N1bWVudGF0aW9uIGFib3V0IHRoaXMuCj4gCj4gVGhhbmsgeW91IHZlcnkgbXVjaCBmb3Ig dGhlIGhlbHAuCj4gRW1pbAo+IFAuUy4gT24gdGhlIHBsdXMgc2lkZSwgSSBhbSB3b3JraW5nIG9u IGEgWC9tb2Rlc2V0dGluZyBzZXJpZXMgdGhhdAo+IHJlbW92ZXMgYWxsIHRoZSBtZXNzIHdoaWNo IHJlcXVpcmVzIHRoaXMgd29ya2Fyb3VuZCA7LSkKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJl IEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK