From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [RFC 6/9] drm/i915: Delay the freeing of requests until retire time Date: Wed, 28 Oct 2015 13:00:20 +0000 Message-ID: <5630C6E4.8070603@Intel.com> References: <1437143483-6234-1-git-send-email-John.C.Harrison@Intel.com> <1437143483-6234-7-git-send-email-John.C.Harrison@Intel.com> <55B0F94A.10901@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 64F4A6E8B6 for ; Wed, 28 Oct 2015 06:00:23 -0700 (PDT) In-Reply-To: <55B0F94A.10901@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMjMvMDcvMjAxNSAxNToyNSwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4KPiBIaSwKPgo+IE9u IDA3LzE3LzIwMTUgMDM6MzEgUE0sIEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20gd3JvdGU6Cj4+ IEZyb206IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4+Cj4+IFRo ZSByZXF1ZXN0IHN0cnVjdHVyZSBpcyByZWZlcmVuY2UgY291bnRlZC4gV2hlbiB0aGUgY291bnQg cmVhY2hlZAo+PiB6ZXJvLCB0aGUgcmVxdWVzdCB3YXMgaW1tZWRpYXRlbHkgZnJlZWQgYW5kIGFs bCBhc3NvY2lhdGVkIG9iamVjdHMKPj4gd2VyZSB1bnJlZmVyZWNlZC91bmFsbG9jYXRlZC4gVGhp cyBtZWFudCB0aGF0IHRoZSBkcml2ZXIgbXV0ZXggbG9jawo+PiBtdXN0IGJlIGhlbGQgYXQgdGhl IHBvaW50IHdoZXJlIHRoZSBjb3VudCByZWFjaGVzIHplcm8uIFRoaXMgd2FzIGZpbmUKPj4gd2hp bGUgYWxsIHJlZmVyZW5jZXMgd2VyZSBoZWxkIGludGVybmFsbHkgdG8gdGhlIGRyaXZlci4gSG93 ZXZlciwgdGhlCj4+IHBsYW4gaXMgdG8gYWxsb3cgdGhlIHVuZGVybHlpbmcgZmVuY2Ugb2JqZWN0 IChhbmQgaGVuY2UgdGhlIHJlcXVlc3QKPj4gaXRzZWxmKSB0byBiZSByZXR1cm5lZCB0byBvdGhl ciBkcml2ZXJzIGFuZCB0byB1c2VybGFuZC4gRXh0ZXJuYWwKPj4gdXNlcnMgY2Fubm90IGJlIGV4 cGVjdGVkIHRvIGFjcXVpcmUgYSBkcml2ZXIgcHJpdmF0ZSBtdXRleCBsb2NrLgo+Pgo+PiBSYXRo ZXIgdGhhbiBhdHRlbXB0IHRvIGRpc2VudGFuZ2xlIHRoZSByZXF1ZXN0IHN0cnVjdHVyZSBmcm9t IHRoZQo+PiBkcml2ZXIgbXV0ZXggbG9jaywgdGhlIGRlY3Npb24gd2FzIHRvIGRlZmVyIHRoZSBm cmVlIGNvZGUgdW50aWwgYQo+PiBsYXRlciAoc2FmZXIpIHBvaW50LiBIZW5jZSB0aGlzIHBhdGNo IGNoYW5nZXMgdGhlIHVucmVmZXJlbmNlIGNhbGxiYWNrCj4+IHRvIG1lcmVseSBtb3ZlIHRoZSBy ZXF1ZXN0IG9udG8gYSBkZWxheWVkIGZyZWUgbGlzdC4gVGhlIGRyaXZlcidzCj4+IHJldGlyZSB3 b3JrZXIgdGhyZWFkIHdpbGwgdGhlbiBwcm9jZXNzIHRoZSBsaXN0IGFuZCBhY3R1YWxseSBjYWxs IHRoZQo+PiBmcmVlIGZ1bmN0aW9uIG9uIHRoZSByZXF1ZXN0cy4KPj4KPj4gW25ldyBwYXRjaCBp biBzZXJpZXNdCj4+Cj4+IEZvcjogVklaLTUxOTAKPj4gU2lnbmVkLW9mZi1ieTogSm9obiBIYXJy aXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgMjIgKysrLS0tLS0tLS0tLS0tLS0tCj4+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgNDEgCj4+ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyAgICB8ICAyICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMgICAgICAgIHwgIDIgKysKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAg ICAgICAgfCAgMiArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu YyB8ICAyICsrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwg IDQgKysrKwo+PiAgIDcgZmlsZXMgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRp b25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o IAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggODhhNDc0Ni4u NjFjM2RiMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IEBAIC0yMTYxLDE0ICsy MTYxLDkgQEAgdm9pZCBpOTE1X2dlbV90cmFja19mYihzdHJ1Y3QgCj4+IGRybV9pOTE1X2dlbV9v YmplY3QgKm9sZCwKPj4gICAgKiBpbml0aWFsIHJlZmVyZW5jZSB0YWtlbiB1c2luZyBrcmVmX2lu aXQKPj4gICAgKi8KPj4gICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qgewo+PiAtICAgIC8q Kgo+PiAtICAgICAqIFVuZGVybHlpbmcgb2JqZWN0IGZvciBpbXBsZW1lbnRpbmcgdGhlIHNpZ25h bC93YWl0IHN0dWZmLgo+PiAtICAgICAqIE5COiBOZXZlciByZXR1cm4gdGhpcyBmZW5jZSBvYmpl Y3QgdG8gdXNlciBsYW5kISBJdCBpcyB1bnNhZmUgdG8KPj4gLSAgICAgKiBsZXQgYW55dGhpbmcg b3V0c2lkZSBvZiB0aGUgaTkxNSBkcml2ZXIgZ2V0IGhvbGQgb2YgdGhlIGZlbmNlCj4+IC0gICAg ICogb2JqZWN0IGFzIHRoZSBjbGVhbiB1cCB3aGVuIGRlY3JlbWVudGluZyB0aGUgcmVmZXJlbmNl IGNvdW50Cj4+IC0gICAgICogcmVxdWlyZXMgaG9sZGluZyB0aGUgZHJpdmVyIG11dGV4IGxvY2su Cj4+IC0gICAgICovCj4+ICsgICAgLyoqIFVuZGVybHlpbmcgb2JqZWN0IGZvciBpbXBsZW1lbnRp bmcgdGhlIHNpZ25hbC93YWl0IHN0dWZmLiAqLwo+PiAgICAgICBzdHJ1Y3QgZmVuY2UgZmVuY2U7 Cj4+ICsgICAgc3RydWN0IGxpc3RfaGVhZCBkZWxheV9mcmVlX2xpc3Q7Cj4KPiBNYXliZSBjYWxs IHRoaXMgZGVsYXlfZnJlZV9saW5rIHRvIGNvbnRpbnVlIHRoZSBlc3RhYmxpc2hlZCBjb252ZW50 aW9uLgo+Cj4+Cj4+ICAgICAgIC8qKiBPbiBXaGljaCByaW5nIHRoaXMgcmVxdWVzdCB3YXMgZ2Vu ZXJhdGVkICovCj4+ICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1Owo+PiBAQCAt MjI4MSwyMSArMjI3NiwxMCBAQCBpOTE1X2dlbV9yZXF1ZXN0X3JlZmVyZW5jZShzdHJ1Y3QgCj4+ IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4+ICAgc3RhdGljIGlubGluZSB2b2lkCj4+ICAg aTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKPj4gICB7Cj4+IC0gV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZyZXEtPnJpbmctPmRl di0+c3RydWN0X211dGV4KSk7Cj4+IC0gICAgZmVuY2VfcHV0KCZyZXEtPmZlbmNlKTsKPj4gLX0K Pj4gLQo+PiAtc3RhdGljIGlubGluZSB2b2lkCj4+IC1pOTE1X2dlbV9yZXF1ZXN0X3VucmVmZXJl bmNlX191bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgCj4+ICpyZXEpCj4+IC17 Cj4+IC0gICAgc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPj4gLQo+PiAgICAgICBpZiAoIXJlcSkK Pj4gICAgICAgICAgIHJldHVybjsKPj4KPj4gLSAgICBkZXYgPSByZXEtPnJpbmctPmRldjsKPj4g LSAgICBpZiAoa3JlZl9wdXRfbXV0ZXgoJnJlcS0+ZmVuY2UucmVmY291bnQsIGZlbmNlX3JlbGVh c2UsIAo+PiAmZGV2LT5zdHJ1Y3RfbXV0ZXgpKQo+PiAtICAgICAgICBtdXRleF91bmxvY2soJmRl di0+c3RydWN0X211dGV4KTsKPj4gKyAgICBmZW5jZV9wdXQoJnJlcS0+ZmVuY2UpOwo+PiAgIH0K Pj4KPj4gICBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oc3RydWN0 IAo+PiBkcm1faTkxNV9nZW1fcmVxdWVzdCAqKnBkc3QsCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPj4gaW5kZXggYWY3OTcxNi4uNDgyODM1YSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCj4+IEBAIC0yNjE2LDEwICsyNjE2LDI3IEBAIHN0YXRpYyB2b2lkIGk5MTVfc2V0X3Jl c2V0X3N0YXR1cyhzdHJ1Y3QgCj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgICAg ICB9Cj4+ICAgfQo+Pgo+PiAtc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9mcmVlKHN0cnVj dCBmZW5jZSAqcmVxX2ZlbmNlKQo+PiArc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9yZWxl YXNlKHN0cnVjdCBmZW5jZSAqcmVxX2ZlbmNlKQo+PiAgIHsKPj4gICAgICAgc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSBjb250YWluZXJfb2YocmVxX2ZlbmNlLAo+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0eXBlb2YoKnJlcSksIGZlbmNlKTsKPj4gKyAgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOwo+PiArICAgIHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocmluZy0+ZGV2KTsKPj4gKyAgICB1bnNpZ25l ZCBsb25nIGZsYWdzOwo+PiArCj4+ICsgICAgLyoKPj4gKyAgICAgKiBOZWVkIHRvIGFkZCB0aGUg cmVxdWVzdCB0byBhIGRlZmVycmVkIGRlcmVmZXJlbmNlIGxpc3QgdG8gYmUKPj4gKyAgICAgKiBw cm9jZXNzZWQgYXQgYSBtdXRleCBsb2NrIHNhZmUgdGltZS4KPj4gKyAgICAgKi8KPj4gKyAgICBz cGluX2xvY2tfaXJxc2F2ZSgmcmluZy0+ZGVsYXllZF9mcmVlX2xvY2ssIGZsYWdzKTsKPgo+IEF0 IHRoZSBtb21lbnQgdGhlcmUgaXMgbm8gcmVxdWVzdCB1bnJlZmVyZW5jaW5nIGZyb20gaXJxIGhh bmRsZXJzIAo+IHJpZ2h0PyBVbmxlc3MgKG9yIHVudGlsKSB5b3UgcGxhbiB0byBhZGQgdGhhdCB5 b3UgY291bGQgdXNlIHNpbXBsZSAKPiBzcGluX2xvY2sgaGVyZS4gKEFuZCBpbiB0aGUgaTkxNV9n ZW1fcmV0aXJlX3JlcXVlc3RzX3JpbmcuKQoKSSBkb24ndCBiZWxpZXZlIHRoZXJlIGlzIGFuIHVu cmVmZXJlbmNlIGF0IElSUSB0aW1lIGF0IHRoaXMgcHJlY2lzZSAKbW9tZW50LiBIb3dldmVyLCB0 aGVyZSBjZXJ0YWlubHkgaGF2ZSBiZWVuIGluIHZhcmlvdXMgb3RoZXIgaXRlcmF0aW9ucyAKb2Yg dGhlIGNvZGUgKGluY2x1ZGluZyBvbmUgb24gdGhlIGRpc3BsYXkgc2lkZSB0aGF0IGhhcyBzaW5j ZSAKZGlzYXBwZWFyZWQgZHVlIHRvIGNoYW5nZXMgYnkgb3RoZXJzIGNvbXBsZXRlbHkgdW5yZWxh dGVkIHRvIHRoaXMgd29yaykuIApTbyBJIHdvdWxkIGJlIG5lcnZvdXMgYWJvdXQgbm90IG1ha2lu ZyBpdCBJUlEgY29tcGF0aWJsZS4gSXQgc2VlbXMgbGlrZSAKYSBidWcgd2FpdGluZyB0byBoYXBw ZW4uCgoKPj4gKyBsaXN0X2FkZF90YWlsKCZyZXEtPmRlbGF5X2ZyZWVfbGlzdCwgJnJpbmctPmRl bGF5ZWRfZnJlZV9saXN0KTsKPj4gKyAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyaW5nLT5k ZWxheWVkX2ZyZWVfbG9jaywgZmxhZ3MpOwo+PiArCj4+ICsgICAgcXVldWVfZGVsYXllZF93b3Jr KGRldl9wcml2LT53cSwgJmRldl9wcml2LT5tbS5yZXRpcmVfd29yaywgMCk7Cj4KPiBIYXZlIHlv dSBkZWNpZGVkIHRvIHJlLXVzZSB0aGUgcmV0aXJlIHdvcmtlciBqdXN0IGZvciBjb252ZW5pZW5j ZSBvZiAKPiBmb3Igc29tZSBvdGhlciByZWFzb24gYXMgd2VsbD8KCkl0IHNlZW1lZCBsaWtlIHRo ZSBsb2dpY2FsIHBsYWNlIHRvIGRvIHRoaXMuIEl0IGlzIGEgcGVyaW9kaWMgZnVuY3Rpb24gCnRo YXQgY2xlYW5zIHVwIHJlcXVlc3RzLiBDb252ZXJ0aW5nIHRoZSB1bnJlZmVyZW5jZSBpbnRvIGEg ZnJlZSBpc24ndCBhIApodWdlbHkgdGltZSBjcml0aWNhbCB0aGluZyBzbyBhZGRpbmcgYW4gZW50 aXJlIGRlZGljYXRlZCB3b3JrIGhhbmRsZXIgCnNlZW1zIGxpa2Ugb3ZlcmtpbGwuIFBsdXMsIHJl dGlyZSByZXF1ZXN0cyBpcyB1c3VhbGx5IHRoZSBwbGFjZSB0aGF0IApyZWxlYXNlcyB0aGUgbGFz dCByZWZlcmVuY2Ugc28gaXQgbWFrZXMgc2Vuc2UgdG8gZG8gdGhlIGZyZWUgYXQgdGhlIGVuZCAK b2YgdGhhdCBjb2RlLgoKPgo+IEkgZm91bmQgaXQgYSBiaXQgdW5leHBlY3RlZCBhbmQgdGhvdWdo IGRlZGljYXRlZCByZXF1ZXN0IGZyZWUgd29ya2VyIAo+IHdvdWxkIGJlIGNsZWFuZXIsIGJ1dCBJ IGRvbid0IGtub3csIG5vdCBhIHN0cm9uZyBvcGluaW9uLgo+Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZnJlZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKPj4gK3sKPj4gICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCA9IHJlcS0+Y3R4 Owo+Pgo+PiBCVUdfT04oIW11dGV4X2lzX2xvY2tlZCgmcmVxLT5yaW5nLT5kZXYtPnN0cnVjdF9t dXRleCkpOwo+PiBAQCAtMjY5Niw3ICsyNzEzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmZW5j ZV9vcHMgCj4+IGk5MTVfZ2VtX3JlcXVlc3RfZm9wcyA9IHsKPj4gICAgICAgLmVuYWJsZV9zaWdu YWxpbmcgICAgPSBpOTE1X2dlbV9yZXF1ZXN0X2VuYWJsZV9zaWduYWxpbmcsCj4+ICAgICAgIC5z aWduYWxlZCAgICAgICAgPSBpOTE1X2dlbV9yZXF1ZXN0X2lzX2NvbXBsZXRlZCwKPj4gICAgICAg LndhaXQgICAgICAgICAgICA9IGZlbmNlX2RlZmF1bHRfd2FpdCwKPj4gLSAgICAucmVsZWFzZSAg ICAgICAgPSBpOTE1X2dlbV9yZXF1ZXN0X2ZyZWUsCj4+ICsgICAgLnJlbGVhc2UgICAgICAgID0g aTkxNV9nZW1fcmVxdWVzdF9yZWxlYXNlLAo+PiAgICAgICAuZmVuY2VfdmFsdWVfc3RyICAgID0g aTkxNV9mZW5jZV92YWx1ZV9zdHIsCj4+ICAgICAgIC50aW1lbGluZV92YWx1ZV9zdHIgICAgPSBp OTE1X2ZlbmNlX3RpbWVsaW5lX3ZhbHVlX3N0ciwKPj4gICB9Owo+PiBAQCAtMjk5Miw2ICszMDA5 LDIxIEBAIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHN0cnVjdCAKPj4gaW50ZWxfZW5n aW5lX2NzICpyaW5nKQo+PiAgICAgICAgICAgaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJnJpbmct PnRyYWNlX2lycV9yZXEsIE5VTEwpOwo+PiAgICAgICB9Cj4+Cj4+ICsgICAgd2hpbGUgKCFsaXN0 X2VtcHR5KCZyaW5nLT5kZWxheWVkX2ZyZWVfbGlzdCkpIHsKPj4gKyAgICAgICAgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0Owo+PiArICAgICAgICB1bnNpZ25lZCBsb25nIGZs YWdzOwo+PiArCj4+ICsgICAgICAgIHJlcXVlc3QgPSBsaXN0X2ZpcnN0X2VudHJ5KCZyaW5nLT5k ZWxheWVkX2ZyZWVfbGlzdCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0LAo+PiArICAgICAgICAgICAgICAgICAgICAgICBkZWxheV9mcmVlX2xp c3QpOwo+Cj4gTmVlZCBhIHNwaW5sb2NrIHRvIHNhbXBsZSBsaXN0IGhlYWQgaGVyZS4gVGhlbiBt YXliZSBtb3ZlIGl0IG9uIGEgCj4gdGVtcG9yYXJ5IGxpc3QgYW5kIGRvIHRoZSBmcmVlaW5nIGFm dGVyd2FyZHMuCgpOb3QgbmVjZXNzYXJ5LiBUaGUgb25seSBvdGhlciB1c2FnZSBvZiB0aGUgbGlz dCBpcyB0byBhZGQgdG8gaXQuIFNvIHRoaXMgCmNvZGUgY2FuJ3QgcHVsbCBhbiBlbnRyeSB0aGF0 IGdldHMgcmVtb3ZlZCBiZW5lYXRoIGl0cyBmZWV0LiBFaXRoZXIgdGhlIApsaXN0IGVtcHR5IHRl c3Qgd2lsbCByZXR1cm4gdHJ1ZSBhbmQgbm90aGluZyBmdXJ0aGVyIGhhcHBlbnMgb3IgdGhlcmUg aXMgCmRlZmluaXRlbHkgYSBub2RlIG9uIHRoZSBsaXN0IGFuZCBsaXN0X2ZpcnN0X2VudHJ5KCkg d2lsbCByZXR1cm4gCnNvbWV0aGluZyBzYW5lLiBUaGUgc3BpbmxvY2sgaXMgb25seSByZXF1aXJl ZCB3aGVuIGFjdHVhbGx5IGRlbGV0aW5nIAp0aGF0IG5vZGUuCgoKPgo+IFJlZ2FyZHMsCj4KPiBU dnJ0a28KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==