From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laura Abbott Subject: Re: [EARLY RFC][PATCH 2/4] ion: Initial hack to create per heap devices Date: Tue, 19 Feb 2019 13:17:28 -0800 Message-ID: <050a94a3-b521-c09c-b411-6b4b5dee7784@redhat.com> References: <1550262252-15558-1-git-send-email-john.stultz@linaro.org> <1550262252-15558-3-git-send-email-john.stultz@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt1-f193.google.com (mail-qt1-f193.google.com [209.85.160.193]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0A722890A5 for ; Tue, 19 Feb 2019 21:17:32 +0000 (UTC) Received: by mail-qt1-f193.google.com with SMTP id a48so24928574qtb.4 for ; Tue, 19 Feb 2019 13:17:32 -0800 (PST) In-Reply-To: <1550262252-15558-3-git-send-email-john.stultz@linaro.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: John Stultz Cc: Alistair Strachan , dri-devel@lists.freedesktop.org, "Andrew F . Davis" , Liam Mark List-Id: dri-devel@lists.freedesktop.org T24gMi8xNS8xOSAxMjoyNCBQTSwgSm9obiBTdHVsdHogd3JvdGU6Cj4gT25lIG9mIHRoZSBpc3N1 ZXMgdy8gdGhlIC9kZXYvaW9uIGludGVyZmFjZSBpcyB0aGF0IHdlIGhhdmUgdG8KPiBwcm92aWRl IHRoZSBjb21wbGV4aXR5IG9mIGEgaGVhcCBxdWVyeSBpbnRlcmZhY2UgYW5kIHdlIGVuZCB1cAo+ IG11bHRpcGxleGluZyBhbGwgdGhlIGhlYXAgYWNjZXNzIHRocm91Z2ggdGhhdCBvbmUgaW50ZXJm YWNlIHZpYQo+IGEgYml0IG1hc2sgKHdoaWNoIGN1cnJlbnRseSBsaW1pdHMgdGhlIGhlYXBzIHRv IDMyKS4KPiAKPiBUaGVyZSBoYXMgYmVlbiBhIGxvbmcgcnVubmluZyB0b2RvIHRvIHByb3ZpZGUg cGVyLWhlYXAgZGV2aWNlcwo+IHdoaWNoIHdvdWxkIG1ha2UgdGhlIGhlYXAgZGlzY292ZXJ5L3F1 ZXJ5IGludGVyZmFjZSAibHMiLCBhbmQKPiB3b3VsZCBhbGxvdyBmb3IgZGlmZmVyZW50IGhlYXBz IHRvIGhhdmUgZGlmZmVyZW50IHBlcm1pc2lzb25zCj4gYW5kIHNlcG9saWN5IHJ1bGVzLgo+IAo+ IFRPRE9zOgo+ICogQW5kcm9pZCBkb2Vzbid0IHVzZSB1ZGV2IHNvICJpb25faGVhcHMvJXMiIG5h bWVzIGRvbid0Cj4gICAgYXV0b21hdGljYWxseSBjcmVhdGUgYSAvZGV2LyBzdWJkaXIuIEkgbmVl ZCB0byByZXdvcmsKPiAgICBmcm9tIG1pc2NkZXYgdG8gY3JlYXRpbmcgYSBwcm9wZXIgZGV2aWNl IGNsYXNzIGFuZCBhZGQKPiAgICBhICJzdWJzeXN0ZW0iIGVudHJ5IGZvciB0aGUgRGV2aWNlSGFu ZGxlciB0byBtYXRjaCB3aXRoCj4gCj4gKiBFYWNoIENNQSByZWdpb24gaXMgZXhwb3NlZCB2aWEg YSBzZXBhcmF0ZSBoZWFwLCBub3Qgc3VyZQo+ICAgIGlmIHRoaXMgaXMgZGVzaXJlZCBvciBub3Qs IGFuZCB3ZSBtYXkgbmVlZCB0byBpbXByb3ZlIHRoZQo+ICAgIG5hbWluZy4KPiAKCkV2ZXJ5IENN QSByZWdpb24gZ2V0dGluZyBleHBvc2VkIHdhcyBhIHNpZGUgZWZmZWN0IG9mIGRvaW5nCnRoZSBl bmV1bWVyYXRpb24gd2l0aG91dCB0eWluZyBpdCB0byBkZXZpY2V0cmVlIG9yIG90aGVyIGZpcm13 YXJlLgpJJ20gbm90IG9wcG9zZWQgdG8gbGltaXRpbmcgdGhlIGhlYXBzIGV4cG9zZWQgaWYgd2Ug Y2FuIGZpbmQKYSBnb29kIHdheSB0byBkbyBzbyB0aGF0J3Mgc3RpbGwgY29tcGxpYW50IHdpdGgg ZGV2aWNldHJlZS93aGF0ZXZlci4KClRoYW5rcywKTGF1cmEKCj4gQ2M6IExhdXJhIEFiYm90dCA8 bGFiYm90dEByZWRoYXQuY29tPgo+IENjOiBTdW1pdCBTZW13YWwgPHN1bWl0LnNlbXdhbEBsaW5h cm8ub3JnPgo+IENjOiBMaWFtIE1hcmsgPGxtYXJrQGNvZGVhdXJvcmEub3JnPgo+IENjOiBCcmlh biBTdGFya2V5IDxCcmlhbi5TdGFya2V5QGFybS5jb20+Cj4gQ2M6IEFuZHJldyBGLiBEYXZpcyA8 YWZkQHRpLmNvbT4KPiBDYzogQWxpc3RhaXIgU3RyYWNoYW4gPGFzdHJhY2hhbkBnb29nbGUuY29t Pgo+IENjOiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gU2lnbmVkLW9mZi1ieTog Sm9obiBTdHVsdHogPGpvaG4uc3R1bHR6QGxpbmFyby5vcmc+Cj4gLS0tCj4gICBkcml2ZXJzL3N0 YWdpbmcvYW5kcm9pZC9pb24vaW9uLWlvY3RsLmMgfCA2MiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiAgIGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYyAgICAgICB8 IDE4ICsrKysrKysrKysKPiAgIGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uaCAgICAg ICB8ICAyICsrCj4gICBkcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC91YXBpL2lvbi5oICAgICAgfCAy OCArKysrKysrKysrKysrKysKPiAgIDQgZmlsZXMgY2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKykK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbi1pb2N0bC5j IGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbi1pb2N0bC5jCj4gaW5kZXggNDU4YTlm Mi4uZWE4ZDI2MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9u LWlvY3RsLmMKPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uLWlvY3RsLmMK PiBAQCAtMTIsNiArMTIsNyBAQAo+ICAgCj4gICB1bmlvbiBpb25faW9jdGxfYXJnIHsKPiAgIAlz dHJ1Y3QgaW9uX2FsbG9jYXRpb25fZGF0YSBhbGxvY2F0aW9uOwo+ICsJc3RydWN0IGlvbl9oZWFw X2FsbG9jYXRpb25fZGF0YSBoZWFwX2FsbG9jYXRpb247Cj4gICAJc3RydWN0IGlvbl9oZWFwX3F1 ZXJ5IHF1ZXJ5Owo+ICAgCXUzMiB2ZXJzaW9uOwo+ICAgfTsKPiBAQCAtMTAwLDMgKzEwMSw2NCBA QCBsb25nIGlvbl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5z aWduZWQgbG9uZyBhcmcpCj4gICAJfQo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gKwo+ICtsb25n IGlvbl9oZWFwX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNp Z25lZCBsb25nIGFyZykKPiArewo+ICsJaW50IHJldCA9IDA7Cj4gKwl1bnNpZ25lZCBpbnQgZGly Owo+ICsJdW5pb24gaW9uX2lvY3RsX2FyZyBkYXRhOwo+ICsKPiArCWRpciA9IGlvbl9pb2N0bF9k aXIoY21kKTsKPiArCj4gKwlpZiAoX0lPQ19TSVpFKGNtZCkgPiBzaXplb2YoZGF0YSkpCj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJLyoKPiArCSAqIFRoZSBjb3B5X2Zyb21fdXNlciBpcyB1 bmNvbmRpdGlvbmFsIGhlcmUgZm9yIGJvdGggcmVhZCBhbmQgd3JpdGUKPiArCSAqIHRvIGRvIHRo ZSB2YWxpZGF0ZS4gSWYgdGhlcmUgaXMgbm8gd3JpdGUgZm9yIHRoZSBpb2N0bCwgdGhlCj4gKwkg KiBidWZmZXIgaXMgY2xlYXJlZAo+ICsJICovCj4gKwlpZiAoY29weV9mcm9tX3VzZXIoJmRhdGEs ICh2b2lkIF9fdXNlciAqKWFyZywgX0lPQ19TSVpFKGNtZCkpKQo+ICsJCXJldHVybiAtRUZBVUxU Owo+ICsKPiArCXJldCA9IHZhbGlkYXRlX2lvY3RsX2FyZyhjbWQsICZkYXRhKTsKPiArCWlmIChy ZXQpIHsKPiArCQlwcl93YXJuX29uY2UoIiVzOiBpb2N0bCB2YWxpZGF0ZSBmYWlsZWRcbiIsIF9f ZnVuY19fKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCWlmICghKGRpciAmIF9JT0Nf V1JJVEUpKQo+ICsJCW1lbXNldCgmZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsKPiArCj4gKwlzd2l0 Y2ggKGNtZCkgewo+ICsJY2FzZSBJT05fSU9DX0hFQVBfQUxMT0M6Cj4gKwl7Cj4gKwkJc3RydWN0 IG1pc2NkZXZpY2UgKm1pc2NkZXYgPSBmaWxwLT5wcml2YXRlX2RhdGE7Cj4gKwkJc3RydWN0IGlv bl9oZWFwICpoZWFwOwo+ICsJCWludCBmZDsKPiArCj4gKwkJaGVhcCA9IGNvbnRhaW5lcl9vZiht aXNjZGV2LCBzdHJ1Y3QgaW9uX2hlYXAsIGhlYXBfZGV2KTsKPiArCj4gKwkJZmQgPSBpb25fYWxs b2MoZGF0YS5oZWFwX2FsbG9jYXRpb24ubGVuLAo+ICsJCQkgICAgICAgKDEgPDwgaGVhcC0+aWQp LAo+ICsJCQkgICAgICAgZGF0YS5oZWFwX2FsbG9jYXRpb24uZmxhZ3MpOwo+ICsJCWlmIChmZCA8 IDApCj4gKwkJCXJldHVybiBmZDsKPiArCj4gKwkJZGF0YS5oZWFwX2FsbG9jYXRpb24uZmQgPSBm ZDsKPiArCj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwljYXNlIElPTl9JT0NfVkVSU0lPTjoKPiArCQlk YXRhLnZlcnNpb24gPSBJT05fVkVSU0lPTjsKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJ cmV0dXJuIC1FTk9UVFk7Cj4gKwl9Cj4gKwo+ICsJaWYgKGRpciAmIF9JT0NfUkVBRCkgewo+ICsJ CWlmIChjb3B5X3RvX3VzZXIoKHZvaWQgX191c2VyICopYXJnLCAmZGF0YSwgX0lPQ19TSVpFKGNt ZCkpKQo+ICsJCQlyZXR1cm4gLUVGQVVMVDsKPiArCX0KPiArCXJldHVybiByZXQ7Cj4gK30KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5jIGIvZHJpdmVycy9z dGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5jCj4gaW5kZXggNmY1YWZhYi4uMWY3Yzg5MyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uLmMKPiArKysgYi9kcml2ZXJz L3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uLmMKPiBAQCAtNDkyLDYgKzQ5MiwxNCBAQCBpbnQgaW9u X3F1ZXJ5X2hlYXBzKHN0cnVjdCBpb25faGVhcF9xdWVyeSAqcXVlcnkpCj4gICAJcmV0dXJuIHJl dDsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpb25f aGVhcF9mb3BzID0gewo+ICsJLm93bmVyICAgICAgICAgID0gVEhJU19NT0RVTEUsCj4gKwkudW5s b2NrZWRfaW9jdGwgPSBpb25faGVhcF9pb2N0bCwKPiArI2lmZGVmIENPTkZJR19DT01QQVQKPiAr CS5jb21wYXRfaW9jdGwJPSBpb25faGVhcF9pb2N0bCwKPiArI2VuZGlmCj4gK307Cj4gKwo+ICAg c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaW9uX2ZvcHMgPSB7Cj4gICAJLm93 bmVyICAgICAgICAgID0gVEhJU19NT0RVTEUsCj4gICAJLnVubG9ja2VkX2lvY3RsID0gaW9uX2lv Y3RsLAo+IEBAIC01NDAsMTIgKzU0OCwyMiBAQCB2b2lkIGlvbl9kZXZpY2VfYWRkX2hlYXAoc3Ry dWN0IGlvbl9oZWFwICpoZWFwKQo+ICAgCXN0cnVjdCBpb25fZGV2aWNlICpkZXYgPSBpbnRlcm5h bF9kZXY7Cj4gICAJaW50IHJldDsKPiAgIAlzdHJ1Y3QgZGVudHJ5ICpoZWFwX3Jvb3Q7Cj4gKwlj aGFyICpoZWFwX25hbWU7Cj4gICAJY2hhciBkZWJ1Z19uYW1lWzY0XTsKPiAgIAo+ICAgCWlmICgh aGVhcC0+b3BzLT5hbGxvY2F0ZSB8fCAhaGVhcC0+b3BzLT5mcmVlKQo+ICAgCQlwcl9lcnIoIiVz OiBjYW4gbm90IGFkZCBoZWFwIHdpdGggaW52YWxpZCBvcHMgc3RydWN0LlxuIiwKPiAgIAkJICAg ICAgIF9fZnVuY19fKTsKPiAgIAo+ICsJaGVhcF9uYW1lID0ga2FzcHJpbnRmKEdGUF9LRVJORUws ICJpb25faGVhcHMvJXMiLCBoZWFwLT5uYW1lKTsKPiArCWhlYXAtPmhlYXBfZGV2Lm5hbWUgPSBo ZWFwX25hbWU7Cj4gKwloZWFwLT5oZWFwX2Rldi5taW5vciA9IE1JU0NfRFlOQU1JQ19NSU5PUjsK PiArCWhlYXAtPmhlYXBfZGV2LmZvcHMgPSAmaW9uX2hlYXBfZm9wczsKPiArCWhlYXAtPmhlYXBf ZGV2LnBhcmVudCA9IE5VTEw7Cj4gKwlyZXQgPSBtaXNjX3JlZ2lzdGVyKCZoZWFwLT5oZWFwX2Rl dik7Cj4gKwlpZiAocmV0KQo+ICsJCXByX2VycigiaW9uOiBmYWlsZWQgdG8gcmVnaXN0ZXIgbWlz YyBkZXZpY2UuXG4iKTsKPiArCj4gICAJc3Bpbl9sb2NrX2luaXQoJmhlYXAtPmZyZWVfbG9jayk7 Cj4gICAJc3Bpbl9sb2NrX2luaXQoJmhlYXAtPnN0YXRfbG9jayk7Cj4gICAJaGVhcC0+ZnJlZV9s aXN0X3NpemUgPSAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24v aW9uLmggYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uLmgKPiBpbmRleCA0MzllNjgy Li43ZWQ0YTZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24u aAo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uaAo+IEBAIC0xNzAsNiAr MTcwLDcgQEAgc3RydWN0IGlvbl9oZWFwX29wcyB7Cj4gICAgKi8KPiAgIHN0cnVjdCBpb25faGVh cCB7Cj4gICAJc3RydWN0IHBsaXN0X25vZGUgbm9kZTsKPiArCXN0cnVjdCBtaXNjZGV2aWNlIGhl YXBfZGV2Owo+ICAgCXN0cnVjdCBpb25fZGV2aWNlICpkZXY7Cj4gICAJZW51bSBpb25faGVhcF90 eXBlIHR5cGU7Cj4gICAJc3RydWN0IGlvbl9oZWFwX29wcyAqb3BzOwo+IEBAIC0zMzMsNiArMzM0 LDcgQEAgaW50IGlvbl9wYWdlX3Bvb2xfc2hyaW5rKHN0cnVjdCBpb25fcGFnZV9wb29sICpwb29s LCBnZnBfdCBnZnBfbWFzaywKPiAgIAkJCSBpbnQgbnJfdG9fc2Nhbik7Cj4gICAKPiAgIGxvbmcg aW9uX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBs b25nIGFyZyk7Cj4gK2xvbmcgaW9uX2hlYXBfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2ln bmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKPiAgIAo+ICAgaW50IGlvbl9xdWVyeV9o ZWFwcyhzdHJ1Y3QgaW9uX2hlYXBfcXVlcnkgKnF1ZXJ5KTsKPiAgIAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3N0YWdpbmcvYW5kcm9pZC91YXBpL2lvbi5oIGIvZHJpdmVycy9zdGFnaW5nL2FuZHJv aWQvdWFwaS9pb24uaAo+IGluZGV4IGM0ODA0NDguLjIwZGIwOWYgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9zdGFnaW5nL2FuZHJvaWQvdWFwaS9pb24uaAo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9h bmRyb2lkL3VhcGkvaW9uLmgKPiBAQCAtNTcsNiArNTcsMjUgQEAgZW51bSBpb25faGVhcF90eXBl IHsKPiAgICAqLwo+ICAgCj4gICAvKioKPiArICogc3RydWN0IGlvbl9oZWFwX2FsbG9jYXRpb25f ZGF0YSAtIG1ldGFkYXRhIHBhc3NlZCBmcm9tIHVzZXJzcGFjZSBmb3IKPiArICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRpb25zCj4gKyAqIEBsZW46CQlzaXplIG9m IHRoZSBhbGxvY2F0aW9uCj4gKyAqIEBoZWFwX2lkX21hc2s6CW1hc2sgb2YgaGVhcCBpZHMgdG8g YWxsb2NhdGUgZnJvbQo+ICsgKiBAZmxhZ3M6CQlmbGFncyBwYXNzZWQgdG8gaGVhcAo+ICsgKiBA aGFuZGxlOgkJcG9pbnRlciB0aGF0IHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggYSBjb29raWUgdG8g dXNlIHRvCj4gKyAqCQkJcmVmZXIgdG8gdGhpcyBhbGxvY2F0aW9uCj4gKyAqCj4gKyAqIFByb3Zp ZGVkIGJ5IHVzZXJzcGFjZSBhcyBhbiBhcmd1bWVudCB0byB0aGUgaW9jdGwKPiArICovCj4gK3N0 cnVjdCBpb25faGVhcF9hbGxvY2F0aW9uX2RhdGEgewo+ICsJX191NjQgbGVuOwo+ICsJX191MzIg ZmxhZ3M7Cj4gKwlfX3UzMiBmZDsKPiArCV9fdTMyIHJlc2VydmVkMDsKPiArCV9fdTMyIHJlc2Vy dmVkMTsKPiArfTsKPiArCj4gKy8qKgo+ICAgICogc3RydWN0IGlvbl9hbGxvY2F0aW9uX2RhdGEg LSBtZXRhZGF0YSBwYXNzZWQgZnJvbSB1c2Vyc3BhY2UgZm9yIGFsbG9jYXRpb25zCj4gICAgKiBA bGVuOgkJc2l6ZSBvZiB0aGUgYWxsb2NhdGlvbgo+ICAgICogQGhlYXBfaWRfbWFzazoJbWFzayBv ZiBoZWFwIGlkcyB0byBhbGxvY2F0ZSBmcm9tCj4gQEAgLTEzMSw0ICsxNTAsMTMgQEAgc3RydWN0 IGlvbl9oZWFwX3F1ZXJ5IHsKPiAgICAqLwo+ICAgI2RlZmluZSBJT05fSU9DX1ZFUlNJT04JCV9J T1IoSU9OX0lPQ19NQUdJQywgOSwgdTMyKQo+ICAgCj4gKy8qKgo+ICsgKiBET0M6IElPTl9JT0Nf SEVBUF9BTExPQyAtIGFsbG9jYXRlIG1lbW9yeSBmcm9tIGhlYXAKPiArICoKPiArICogVGFrZXMg YW4gaW9uX2hlYXBfYWxsb2NhdGlvbl9kYXRhIHN0cnVjdCBhbmQgcmV0dXJucyBpdCB3aXRoIHRo ZSBoYW5kbGUgZmllbGQKPiArICogcG9wdWxhdGVkIHdpdGggdGhlIG9wYXF1ZSBoYW5kbGUgZm9y IHRoZSBhbGxvY2F0aW9uLgo+ICsgKi8KPiArI2RlZmluZSBJT05fSU9DX0hFQVBfQUxMT0MJX0lP V1IoSU9OX0lPQ19NQUdJQywgMTAsIFwKPiArCQkJCSAgICAgIHN0cnVjdCBpb25faGVhcF9hbGxv Y2F0aW9uX2RhdGEpCj4gKwo+ICAgI2VuZGlmIC8qIF9VQVBJX0xJTlVYX0lPTl9IICovCj4gCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=