From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [PATCH 8/8] drm/i915: Do remaps for all contexts Date: Tue, 17 Sep 2013 13:42:38 -0700 Message-ID: <20130917204238.GA6112@bwidawsk.net> References: <1379050122-12774-1-git-send-email-benjamin.widawsky@intel.com> <1379050122-12774-9-git-send-email-benjamin.widawsky@intel.com> <20130913091717.GL20128@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.bwidawsk.net (bwidawsk.net [166.78.191.112]) by gabe.freedesktop.org (Postfix) with ESMTP id A0071E5EB6 for ; Tue, 17 Sep 2013 13:42:49 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20130913091717.GL20128@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Ville =?utf-8?B?U3lyasOkbMOk?= Cc: intel-gfx@lists.freedesktop.org, vishnu.venkatesh@intel.com, bryan.j.bell@intel.com, Ben Widawsky List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBTZXAgMTMsIDIwMTMgYXQgMTI6MTc6MTdQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFRodSwgU2VwIDEyLCAyMDEzIGF0IDEwOjI4OjM0UE0gLTA3MDAsIEJlbiBX aWRhd3NreSB3cm90ZToKPiA+IE9uIGJvdGggSXZ5YnJpZGdlIGFuZCBIYXN3ZWxsLCByb3cgcmVt YXBwaW5nIGluZm9ybWF0aW9uIGlzIHNhdmVkIGFuZAo+ID4gcmVzdG9yZWQgd2l0aCBjb250ZXh0 LiBUaGlzIG1lYW5zLCB3ZSBuZXZlciBhY3R1YWxseSBwcm9wZXJseSBzdXBwb3J0ZWQKPiA+IHRo ZSBsMyByZW1hcHBpbmcgYmVjYXVzZSBvdXIgc3lzZnMgaW50ZXJmYWNlIGlzIGFzeW5jaHJvbm91 cyAoYW5kIG5vdAo+ID4gdGllZCB0byBhbnkgY29udGV4dCksIGFuZCB0aGUga25vd24gZmF1bHR5 IEhXIHdvdWxkIGJlIHJldXNlZCBieSB0aGUKPiA+IG5leHQgY29udGV4dCB0byBydW4uCj4gPiAK PiA+IE5vdCB0aGF0IGR1ZSB0byB0aGUgYXN5bmNocm9ub3VzIG5hdHVyZSBvZiB0aGUgc3lzZnMg ZW50cnksIHRoZXJlIGlzIG5vCj4gPiBwb2ludCBtb2RpZnlpbmcgdGhlIHJlZ2lzdGVycyBmb3Ig dGhlIGV4aXN0aW5nIGNvbnRleHQuIEluc3RlYWQgd2Ugc2V0IGEKPiA+IGZsYWcgZm9yIGFsbCBj b250ZXh0cyB0byBsb2FkIHRoZSBjb3JyZWN0IHJlbWFwcGluZyBpbmZvcm1hdGlvbiBvbiB0aGUK PiA+IG5leHQgcnVuLiBJbnRlcmVzdGVkIGNsaWVudHMgY2FuIHVzZSBkZWJ1Z2ZzIHRvIGRldGVy bWluZSB3aGV0aGVyIG9yIG5vdAo+ID4gdGhlIHJvdyBoYXMgYmVlbiByZW1hcHBlZC4KPiA+IAo+ ID4gT25lIGNvdWxkIHByb3Bvc2UgYXQgdGhpcyBwb2ludCB0aGF0IHdlIGp1c3QgZG8gdGhlIHJl bWFwcGluZyBpbiB0aGUKPiA+IGtlcm5lbC4gSSBndWVzcyBzaW5jZSB3ZSBoYXZlIHRvIG1haW50 YWluIHRoZSBzeXNmcyBpbnRlcmZhY2UgYW55d2F5LAo+ID4gSSdtIG5vdCBzdXJlIGhvdyB1c2Vm dWwgaXQgaXMsIGFuZCBJIGRvIGxpa2Uga2VlcGluZyB0aGUgcG9saWN5IGluCj4gPiB1c2Vyc3Bh Y2U7IChpdCB3YXNuJ3QgbXkgb3JpZ2luYWwgZGVjaXNpb24gdG8gbWFrZSB0aGUKPiA+IGludGVy ZmFjZSB0aGUgd2F5IGl0IGlzLCBzbyBJJ20gbm90IGF0dGFjaGVkKS4KPiA+IAo+ID4gU2lnbmVk LW9mZi1ieTogQmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3c2submV0Pgo+ID4gLS0tCj4gPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgIHwgIDggKysrKysrKwo+ID4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAxICsKPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAxNyArKysrKysrKysrKysrLS0KPiA+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgICAgICAgfCAzOCArKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlv bnMoKyksIDI4IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwo+ID4gaW5kZXggYWRhMDk1MC4uODBiZWQ2OSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+ID4gQEAgLTE0NSw2ICsxNDUsMTMgQEAgZGVzY3JpYmVfb2JqKHN0 cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiA+ICAJ CXNlcV9wcmludGYobSwgIiAoJXMpIiwgb2JqLT5yaW5nLT5uYW1lKTsKPiA+ICB9Cj4gPiAgCj4g PiArc3RhdGljIHZvaWQgZGVzY3JpYmVfY3R4KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGk5 MTVfaHdfY29udGV4dCAqY3R4KQo+ID4gK3sKPiA+ICsJc2VxX3B1dGMobSwgY3R4LT5pc19pbml0 aWFsaXplZCA/ICdJJyA6ICdpJyk7Cj4gPiArCXNlcV9wdXRjKG0sIGN0eC0+cmVtYXBfc2xpY2Ug PyAnUicgOiAncicpOwo+ID4gKwlzZXFfcHV0YyhtLCAnICcpOwo+ID4gK30KPiA+ICsKPiA+ICBz dGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9saXN0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICpkYXRhKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSAoc3Ry dWN0IGRybV9pbmZvX25vZGUgKikgbS0+cHJpdmF0ZTsKPiA+IEBAIC0xNDYzLDYgKzE0NzAsNyBA QCBzdGF0aWMgaW50IGk5MTVfY29udGV4dF9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICp1bnVzZWQpCj4gPiAgCj4gPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkoY3R4LCAmZGV2X3ByaXYt PmNvbnRleHRfbGlzdCwgbGluaykgewo+ID4gIAkJc2VxX3B1dHMobSwgIkhXIGNvbnRleHQgIik7 Cj4gPiArCQlkZXNjcmliZV9jdHgobSwgY3R4KTsKPiA+ICAJCWZvcl9lYWNoX3JpbmcocmluZywg ZGV2X3ByaXYsIGkpCj4gPiAgCQkJaWYgKHJpbmctPmRlZmF1bHRfY29udGV4dCA9PSBjdHgpCj4g PiAgCQkJCXNlcV9wcmludGYobSwgIihkZWZhdWx0IGNvbnRleHQgJXMpICIsIHJpbmctPm5hbWUp Owo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBpbmRleCA2OGY5OTJiLi42YmE3OGNkIDEw MDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gQEAgLTYwMiw2ICs2MDIsNyBAQCBz dHJ1Y3QgaTkxNV9od19jb250ZXh0IHsKPiA+ICAJc3RydWN0IGtyZWYgcmVmOwo+ID4gIAlpbnQg aWQ7Cj4gPiAgCWJvb2wgaXNfaW5pdGlhbGl6ZWQ7Cj4gPiArCXVpbnQ4X3QgcmVtYXBfc2xpY2U7 Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdjsKPiA+ICAJc3Ry dWN0IGludGVsX3JpbmdfYnVmZmVyICpyaW5nOwo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ID4g aW5kZXggMmJiZGNlOC4uNzJiNzIwMiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5jCj4gPiBAQCAtMTQwLDcgKzE0MCw3IEBAIGNyZWF0ZV9od19jb250ZXh0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gIAlzdHJ1Y3QgaTkxNV9od19j b250ZXh0ICpjdHg7Cj4gPiAtCWludCByZXQ7Cj4gPiArCWludCByZXQsIGk7Cj4gPiAgCj4gPiAg CWN0eCA9IGt6YWxsb2Moc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsKPiA+ICAJaWYgKGN0eCA9 PSBOVUxMKQo+ID4gQEAgLTE4MSw2ICsxODEsOCBAQCBjcmVhdGVfaHdfY29udGV4dChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ID4gIAo+ID4gIAljdHgtPmZpbGVfcHJpdiA9IGZpbGVfcHJpdjsK PiA+ICAJY3R4LT5pZCA9IHJldDsKPiA+ICsJZm9yIChpID0gMDsgaSA8IE5VTV9MM19TTElDRVMo ZGV2KTsgaSsrKQo+ID4gKwkJY3R4LT5yZW1hcF9zbGljZSB8PSAxIDw8IDE7Cj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCj4gaQo+IAo+ID4gIAo+ID4gIAlyZXR1 cm4gY3R4Owo+ID4gIAo+ID4gQEAgLTM5Niw3ICszOTgsNyBAQCBzdGF0aWMgaW50IGRvX3N3aXRj aChzdHJ1Y3QgaTkxNV9od19jb250ZXh0ICp0bykKPiA+ICAJc3RydWN0IGludGVsX3JpbmdfYnVm ZmVyICpyaW5nID0gdG8tPnJpbmc7Cj4gPiAgCXN0cnVjdCBpOTE1X2h3X2NvbnRleHQgKmZyb20g PSByaW5nLT5sYXN0X2NvbnRleHQ7Cj4gPiAgCXUzMiBod19mbGFncyA9IDA7Cj4gPiAtCWludCBy ZXQ7Cj4gPiArCWludCByZXQsIGk7Cj4gPiAgCj4gPiAgCUJVR19PTihmcm9tICE9IE5VTEwgJiYg ZnJvbS0+b2JqICE9IE5VTEwgJiYgZnJvbS0+b2JqLT5waW5fY291bnQgPT0gMCk7Cj4gPiAgCj4g PiBAQCAtNDMyLDYgKzQzNCwxNyBAQCBzdGF0aWMgaW50IGRvX3N3aXRjaChzdHJ1Y3QgaTkxNV9o d19jb250ZXh0ICp0bykKPiA+ICAJCXJldHVybiByZXQ7Cj4gPiAgCX0KPiA+ICAKPiA+ICsJZm9y IChpID0gMDsgaSA8IE1BWF9MM19TTElDRVM7IGkrKykgewo+ID4gKwkJaWYgKCEodG8tPnJlbWFw X3NsaWNlICYgKDE8PGkpKSkKPiA+ICsJCQljb250aW51ZTsKPiA+ICsKPiA+ICsJCXJldCA9IGk5 MTVfZ2VtX2wzX3JlbWFwKHJpbmcsIGkpOwo+ID4gKwkJaWYgKCFyZXQpIHsKPiA+ICsJCQl0by0+ cmVtYXBfc2xpY2UgJj0gfigxPDxpKTsKPiA+ICsJCX0KPiA+ICsJCS8qIElmIGl0IGZhaWxlZCwg dHJ5IGFnYWluIG5leHQgcm91bmQgKi8KPiA+ICsJfQo+ID4gKwo+ID4gIAkvKiBUaGUgYmFja2lu ZyBvYmplY3QgZm9yIHRoZSBjb250ZXh0IGlzIGRvbmUgYWZ0ZXIgc3dpdGNoaW5nIHRvIHRoZQo+ ID4gIAkgKiAqbmV4dCogY29udGV4dC4gVGhlcmVmb3JlIHdlIGNhbm5vdCByZXRpcmUgdGhlIHBy ZXZpb3VzIGNvbnRleHQgdW50aWwKPiA+ICAJICogdGhlIG5leHQgY29udGV4dCBoYXMgYWxyZWFk eSBzdGFydGVkIHJ1bm5pbmcuIEluIGZhY3QsIHRoZSBiZWxvdyBjb2RlCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zeXNmcy5jCj4gPiBpbmRleCA2NWE3Mjc0Li5mMGQ3ZTFjIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKPiA+IEBAIC0xMTgsOSArMTE4LDggQEAgaTkxNV9sM19y ZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qga29iamVjdCAqa29iaiwKPiA+ICAJc3RydWN0 IGRybV9taW5vciAqZG1pbm9yID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGRybV9taW5vciwg a2Rldik7Cj4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gZG1pbm9yLT5kZXY7Cj4g PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRybV9kZXYtPmRldl9wcml2 YXRlOwo+ID4gLQl1aW50MzJfdCBtaXNjY3BjdGw7Cj4gPiAgCWludCBzbGljZSA9IChpbnQpKHVp bnRwdHJfdClhdHRyLT5wcml2YXRlOwo+ID4gLQlpbnQgaSwgcmV0Owo+ID4gKwlpbnQgcmV0Owo+ ID4gIAo+ID4gIAljb3VudCA9IHJvdW5kX2Rvd24oY291bnQsIDQpOwo+ID4gIAo+ID4gQEAgLTEz NCwzMSArMTMzLDE2IEBAIGk5MTVfbDNfcmVhZChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGtv YmplY3QgKmtvYmosCj4gPiAgCWlmIChyZXQpCj4gPiAgCQlyZXR1cm4gcmV0Owo+ID4gIAo+ID4g LQlpZiAoSVNfSEFTV0VMTChkcm1fZGV2KSkgewo+ID4gLQkJaW50IGxhc3QgPSBtaW5fdChpbnQs IEdFTjdfTDNMT0dfU0laRSwgY291bnQgKyBvZmZzZXQpOwo+ID4gLQkJaWYgKCghZGV2X3ByaXYt PmwzX3Bhcml0eS5yZW1hcF9pbmZvW3NsaWNlXSkpCj4gPiAtCQkJbWVtc2V0KGJ1ZiArIG9mZnNl dCwgMCwgbGFzdCAtIG9mZnNldCk7Cj4gPiAtCQllbHNlCj4gPiAtCQkJbWVtY3B5KGJ1ZiArIG9m ZnNldCwKPiA+IC0JCQkgICAgICAgZGV2X3ByaXYtPmwzX3Bhcml0eS5yZW1hcF9pbmZvW3NsaWNl XSArIChvZmZzZXQvNCksCj4gPiAtCQkJICAgICAgIGxhc3QgLSBvZmZzZXQpOwo+ID4gLQo+ID4g LQkJaSA9IGxhc3Q7Cj4gPiAtCQlnb3RvIG91dDsKPiA+IC0JfQo+ID4gLQo+ID4gLQltaXNjY3Bj dGwgPSBJOTE1X1JFQUQoR0VON19NSVNDQ1BDVEwpOwo+ID4gLQlJOTE1X1dSSVRFKEdFTjdfTUlT Q0NQQ1RMLCBtaXNjY3BjdGwgJiB+R0VON19ET1BfQ0xPQ0tfR0FURV9FTkFCTEUpOwo+ID4gLQo+ ID4gLQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkgKz0gNCkKPiA+IC0JCSooKHVpbnQzMl90ICop KCZidWZbaV0pKSA9IEk5MTVfUkVBRChHRU43X0wzTE9HX0JBU0UgKyBvZmZzZXQgKyBpKTsKPiA+ IC0KPiA+IC0JSTkxNV9XUklURShHRU43X01JU0NDUENUTCwgbWlzY2NwY3RsKTsKPiA+ICsJaWYg KCghZGV2X3ByaXYtPmwzX3Bhcml0eS5yZW1hcF9pbmZvW3NsaWNlXSkpCj4gPiArCQltZW1zZXQo YnVmICsgb2Zmc2V0LCAwLCBjb3VudCk7Cj4gPiArCWVsc2UKPiA+ICsJCW1lbWNweShidWYgKyBv ZmZzZXQsCj4gPiArCQkgICAgICAgZGV2X3ByaXYtPmwzX3Bhcml0eS5yZW1hcF9pbmZvW3NsaWNl XSArIChvZmZzZXQvNCksCj4gPiArCQkgICAgICAgY291bnQpOwo+IAo+IE5lZWRzIGZpeGluZyBh ZnRlciBwYXRjaCA0IGlzIGZpeGVkLgo+IAo+ID4gIAo+ID4gLW91dDoKPiA+ICAJbXV0ZXhfdW5s b2NrKCZkcm1fZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4gIAo+ID4gLQlyZXR1cm4gaTsKPiA+ICsJ cmV0dXJuIGNvdW50Owo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgc3NpemVfdAo+ID4gQEAgLTE3 MCw2ICsxNTQsNyBAQCBpOTE1X2wzX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qga29i amVjdCAqa29iaiwKPiA+ICAJc3RydWN0IGRybV9taW5vciAqZG1pbm9yID0gY29udGFpbmVyX29m KGRldiwgc3RydWN0IGRybV9taW5vciwga2Rldik7Cj4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpk cm1fZGV2ID0gZG1pbm9yLT5kZXY7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRybV9kZXYtPmRldl9wcml2YXRlOwo+ID4gKwlzdHJ1Y3QgaTkxNV9od19jb250ZXh0 ICpjdHg7Cj4gPiAgCXUzMiAqdGVtcCA9IE5VTEw7IC8qIEp1c3QgaGVyZSB0byBtYWtlIGhhbmRs aW5nIGZhaWx1cmVzIGVhc3kgKi8KPiA+ICAJaW50IHNsaWNlID0gKGludCkodWludHB0cl90KWF0 dHItPnByaXZhdGU7Cj4gPiAgCWludCByZXQ7Cj4gPiBAQCAtMjA2LDggKzE5MSw5IEBAIGk5MTVf bDNfd3JpdGUoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBrb2JqZWN0ICprb2JqLAo+ID4gIAo+ ID4gIAltZW1jcHkoZGV2X3ByaXYtPmwzX3Bhcml0eS5yZW1hcF9pbmZvW3NsaWNlXSArIChvZmZz ZXQvNCksIGJ1ZiwgY291bnQpOwo+ID4gIAo+ID4gLQlpZiAoaTkxNV9nZW1fbDNfcmVtYXAoJmRl dl9wcml2LT5yaW5nW1JDU10sIHNsaWNlKSkKPiA+IC0JCWNvdW50ID0gMDsKPiA+ICsJLyogTkI6 IFdlIGRlZmVyIHRoZSByZW1hcHBpbmcgdW50aWwgd2Ugc3dpdGNoIHRvIHRoZSBjb250ZXh0ICov Cj4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoY3R4LCAmZGV2X3ByaXYtPmNvbnRleHRfbGlzdCwg bGluaykKPiA+ICsJCWN0eC0+cmVtYXBfc2xpY2UgfD0gKDE8PHNsaWNlKTsKPiAKPiBTaG91bGQg d2UgZm9yY2UgYSBjb250ZXh0IHN3aXRjaCBvbiB0aGUgbmV4dCBiYXRjaCBpZiB0aGUgY3VycmVu dAo+IGNvbnRleHQgaGFzIHJlbWFwX3NsaWNlICE9IDA/Cj4gCgpJIHRoaW5rIHRoYXQncyBhIGdv b2QgaWRlYSBhcyBsb25nIGFzIHlvdSdyZSB3aWxsaW5nIHRvIHJldmlldyB0aGUgYWRkZWQKY29t cGxleGl0eS4KCj4gQWxzbyB3aGF0IGhhcHBlbnMgaWYgaHdfY29udGV4dHNfZGlzYWJsZWQ9PWZh bHNlPwo+IAoKV2VsbCBpZiBJIGhhZCBnb3R0ZW4gbXkgd2F5IGFuZCB3ZSdkIG1lcmdlZCBmdWxs IFBQR1RUIGFscmVhZHksCmh3X2NvbnRleHRzIGNvdWxkbid0IGJlIGRpc2FibGVkOyBidXQgYWxh cyBpdCBpcyBhIHZhbGlkIGNvbmNlcm4uCgpJIHRoaW5rIHB1bnRpbmcgaXMgdGhlIHJpZ2h0IHRo aW5nIHRvIGRvIGhlcmUuIE1lc2Egd29uJ3QgcnVuIGlmCmNvbnRleHRzIGFyZSBkaXNhYmxlZC4g SG93ZXZlciBhbiBlcnJvciBtZXNzYWdlLCBhbmQgcmV0dXJuIHZhbHVlIHdvdWxkCmJlIGFwcHJv cHJpYXRlLiBXaGF0IGRvIHlvdSB0aGluaz8KCi0tIApCZW4gV2lkYXdza3ksIEludGVsIE9wZW4g U291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==