From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] drm/i915/gtt: Pull global wc page stash under its own locking Date: Wed, 4 Jul 2018 13:48:18 +0100 Message-ID: <514d58e5-c3cf-85d2-c659-4e854fefd85f@linux.intel.com> References: <20180704113945.2010-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 14ADC6EB9D for ; Wed, 4 Jul 2018 12:48:21 +0000 (UTC) In-Reply-To: <20180704113945.2010-1-chris@chris-wilson.co.uk> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA0LzA3LzIwMTggMTI6MzksIENocmlzIFdpbHNvbiB3cm90ZToKPiBDdXJyZW50bHksIHRo ZSB3Yy1zdGFzaCB1c2VkIGZvciBwcm92aWRpbmcgZmx1c2hlZCBXQyBwYWdlcyByZWFkeSBmb3IK PiBjb25zdHJ1Y3RpbmcgdGhlIHBhZ2UgZGlyZWN0b3JpZXMgaXMgYXNzdW1lZCB0byBiZSBwcm90 ZWN0ZWQgYnkgdGhlCj4gc3RydWN0X211dGV4LiBIb3dldmVyLCB3ZSB3YW50IHRvIHJlbW92ZSB0 aGlzIGdsb2JhbCBsb2NrIGFuZCBzbyBtdXN0Cj4gaW5zdGFsbCBhIHJlcGxhY2VtZW50IGdsb2Jh bCBsb2NrIGZvciBhY2Nlc3NpbmcgdGhlIGdsb2JhbCB3Yy1zdGFzaCAodGhlCj4gcGVyLXZtIHN0 YXNoIGNvbnRpbnVlcyB0byBiZSBndWFyZGVkIGJ5IHRoZSB2bSkuCj4gCj4gV2UgbmVlZCB0byBw dXNoIGFoZWFkIG9uIHRoaXMgcGF0Y2ggZHVlIHRvIGFuIG92ZXJzaWdodCBpbiBoYXN0aWx5Cj4g cmVtb3ZpbmcgdGhlIHN0cnVjdF9tdXRleCBndWFyZCBhcm91bmQgdGhlIGlndF9wcGd0dF9hbGxv YyBzZWxmdGVzdC4gTm8KPiBtYXR0ZXIsIGl0IHdpbGwgcHJvdmUgdmVyeSB1c2VmdWwgKGkuZS4g d2lsbCBiZSByZXF1aXJlZCkgaW4gdGhlIG5lYXIKPiBmdXR1cmUuCj4gCj4gRml4ZXM6IDFmNmYw MDIzOGFiZiAoImRybS9pOTE1L3NlbGZ0ZXN0czogRHJvcCBzdHJ1Y3RfbXV0ZXggYXJvdW5kIGxv d2xldmVsIHBnZ3R0IGFsbG9jYXRpb24iKQo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVy c3VsaW5AaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCAgICAgfCAgNSArKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgfCA4 MyArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+ICAgMiBmaWxlcyBjaGFuZ2VkLCA1MiBp bnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiBpbmRleCAyY2VmZTRjMzBmODguLjY5NmMwYjM2ZjgxZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+IEBAIC05NTQsNiArOTU0LDExIEBAIHN0cnVjdCBpOTE1X2dlbV9tbSB7Cj4gICAJ ICovCj4gICAJc3RydWN0IHBhZ2V2ZWMgd2Nfc3Rhc2g7Cj4gICAKPiArCS8qKgo+ICsJICogTG9j ayBmb3IgdGhlIHNtYWxsIHN0YXNoIG9mIFdDIHBhZ2VzLgo+ICsJICovCj4gKwlzcGlubG9ja190 IHdjX2xvY2s7Cj4gKwo+ICAgCS8qKgo+ICAgCSAqIHRtcGZzIGluc3RhbmNlIHVzZWQgZm9yIHNo bWVtIGJhY2tlZCBvYmplY3RzCj4gICAJICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMKPiBpbmRleCBjNmFhNzYxY2EwODUuLmUwZTg5ZTNhZTQzYiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTM3NywyNSArMzc3LDI4IEBAIHN0YXRpYyBnZW42X3B0 ZV90IGlyaXNfcHRlX2VuY29kZShkbWFfYWRkcl90IGFkZHIsCj4gICAKPiAgIHN0YXRpYyBzdHJ1 Y3QgcGFnZSAqdm1fYWxsb2NfcGFnZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgZ2Zw X3QgZ2ZwKQo+ICAgewo+IC0Jc3RydWN0IHBhZ2V2ZWMgKnB2ZWMgPSAmdm0tPmZyZWVfcGFnZXM7 Cj4gLQlzdHJ1Y3QgcGFnZXZlYyBzdGFzaDsKPiArCXN0cnVjdCBwYWdldmVjICpzdGFzaCA9ICZ2 bS0+ZnJlZV9wYWdlczsKPiArCXN0cnVjdCBwYWdldmVjICpwdmVjOwo+ICsJc3RydWN0IHBhZ2Ug KnBhZ2U7Cj4gICAKPiAgIAlpZiAoSTkxNV9TRUxGVEVTVF9PTkxZKHNob3VsZF9mYWlsKCZ2bS0+ ZmF1bHRfYXR0ciwgMSkpKQo+ICAgCQlpOTE1X2dlbV9zaHJpbmtfYWxsKHZtLT5pOTE1KTsKPiAg IAo+IC0JaWYgKGxpa2VseShwdmVjLT5ucikpCj4gLQkJcmV0dXJuIHB2ZWMtPnBhZ2VzWy0tcHZl Yy0+bnJdOwo+ICsJaWYgKGxpa2VseShzdGFzaC0+bnIpKQo+ICsJCXJldHVybiBzdGFzaC0+cGFn ZXNbLS1zdGFzaC0+bnJdOwoKVGhpcyBpcyBzdGlsbCBjb3ZlcmVkIGJ5IHRoZSBtdXRleD8KCj4g ICAKPiAgIAlpZiAoIXZtLT5wdF9rbWFwX3djKQo+ICAgCQlyZXR1cm4gYWxsb2NfcGFnZShnZnAp Owo+ICAgCj4gLQkvKiBBIHBsYWNlaG9sZGVyIGZvciBhIHNwZWNpZmljIG11dGV4IHRvIGd1YXJk IHRoZSBXQyBzdGFzaCAqLwo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm0tPmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAkvKiBMb29rIGluIG91ciBnbG9iYWwgc3Rhc2ggb2YgV0Mg cGFnZXMuLi4gKi8KPiAgIAlwdmVjID0gJnZtLT5pOTE1LT5tbS53Y19zdGFzaDsKPiArCXBhZ2Ug PSBOVUxMOwo+ICsJc3Bpbl9sb2NrKCZ2bS0+aTkxNS0+bW0ud2NfbG9jayk7Cj4gICAJaWYgKGxp a2VseShwdmVjLT5ucikpCj4gLQkJcmV0dXJuIHB2ZWMtPnBhZ2VzWy0tcHZlYy0+bnJdOwo+ICsJ CXBhZ2UgPSBwdmVjLT5wYWdlc1stLXB2ZWMtPm5yXTsKPiArCXNwaW5fdW5sb2NrKCZ2bS0+aTkx NS0+bW0ud2NfbG9jayk7Cj4gKwlpZiAocGFnZSkKPiArCQlyZXR1cm4gcGFnZTsKPiAgIAo+ICAg CS8qCj4gICAJICogT3RoZXJ3aXNlIGJhdGNoIGFsbG9jYXRlIHBhZ2VzIHRvIGFtb3JpdGl6ZSBj b3N0IG9mIHNldF9wYWdlc193Yy4KPiBAQCAtNDA1LDcgKzQwOCw2IEBAIHN0YXRpYyBzdHJ1Y3Qg cGFnZSAqdm1fYWxsb2NfcGFnZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgZ2ZwX3Qg Z2ZwKQo+ICAgCSAqIFNvIHdlIGFkZCBvdXIgV0IgcGFnZXMgaW50byBhIHRlbXBvcmFyeSBwdmVj IG9uIHRoZSBzdGFjayBhbmQgbWVyZ2UKPiAgIAkgKiB0aGVtIGludG8gdGhlIFdDIHN0YXNoIGFm dGVyIGFsbCB0aGUgYWxsb2NhdGlvbnMgYXJlIGNvbXBsZXRlLgo+ICAgCSAqLwo+IC0JcGFnZXZl Y19pbml0KCZzdGFzaCk7Cj4gICAJZG8gewo+ICAgCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKPiAgIAo+ IEBAIC00MTMsMjggKzQxNSwzMCBAQCBzdGF0aWMgc3RydWN0IHBhZ2UgKnZtX2FsbG9jX3BhZ2Uo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sIGdmcF90IGdmcCkKPiAgIAkJaWYgKHVubGlr ZWx5KCFwYWdlKSkKPiAgIAkJCWJyZWFrOwo+ICAgCj4gLQkJc3Rhc2gucGFnZXNbc3Rhc2gubnIr K10gPSBwYWdlOwo+IC0JfSB3aGlsZSAoc3Rhc2gubnIgPCBwYWdldmVjX3NwYWNlKHB2ZWMpKTsK PiArCQlzdGFzaC0+cGFnZXNbc3Rhc2gtPm5yKytdID0gcGFnZTsKPiArCX0gd2hpbGUgKHBhZ2V2 ZWNfc3BhY2Uoc3Rhc2gpKTsKCkNvbW1lbnQgaXMgdGFsa2luZyBhYm91dCBhIHRlbXBvcmFyeSBz dGFjayBzdGFzaCBidXQgbm93IHRoYXQncyBub3QgdGhlIApjYXNlIGFueSBtb3JlLiBBcyBtaW5p bXVtIGNvbW1lbnQgbmVlZHMgdXBkYXRpbmcsIGJ1dCBJIGRvbid0IHVuZGVyc3RhbmQgCkFUTSBp ZiB0aGUgbmV3IGFwcHJvYWNoIGlzIHNhZmUsIG9yIGluIG90aGVyIHdvcmRzIHdoYXQgd2FzIGdv aW5nIHdyb25nIApiZWZvcmUuIElmIHRoZXJlIGlzIGFub3RoZXIgcGF0aCB0byB0aGUgc3Rhc2gg dGhlbiBzdGFzaC0+bnIrKyBpcyAKb2J2aW91c2x5IG5vdCBzYWZlLgoKPiAgIAo+IC0JaWYgKHN0 YXNoLm5yKSB7Cj4gLQkJaW50IG5yID0gbWluX3QoaW50LCBzdGFzaC5uciwgcGFnZXZlY19zcGFj ZShwdmVjKSk7Cj4gLQkJc3RydWN0IHBhZ2UgKipwYWdlcyA9IHN0YXNoLnBhZ2VzICsgc3Rhc2gu bnIgLSBucjsKPiArCWlmIChzdGFzaC0+bnIgJiYgIXNldF9wYWdlc19hcnJheV93YyhzdGFzaC0+ cGFnZXMsIHN0YXNoLT5ucikpIHsKClByZXZpb3VzbHkgdGhlIHRlc3Qgd2FzIGZvciBwYWdlcyB3 aGljaCBvYnZpb3VzbHkgdGhlIGxvY2FsIHRocmVhZCAKb3duZWQuIE5vdyBJIGFtIG5vdCBzdXJl IGlmIHRoZSBjb25kaXRpb24gc2F5cy4KCj4gKwkJaW50IG5yOwo+ICAgCj4gLQkJaWYgKG5yICYm ICFzZXRfcGFnZXNfYXJyYXlfd2MocGFnZXMsIG5yKSkgewo+IC0JCQltZW1jcHkocHZlYy0+cGFn ZXMgKyBwdmVjLT5uciwKPiAtCQkJICAgICAgIHBhZ2VzLCBzaXplb2YocGFnZXNbMF0pICogbnIp Owo+IC0JCQlwdmVjLT5uciArPSBucjsKPiAtCQkJc3Rhc2gubnIgLT0gbnI7Cj4gLQkJfQo+ICsJ CS8qIE1lcmdlIHNwYXJlIFdDIHBhZ2VzIHRvIHRoZSBnbG9iYWwgc3Rhc2ggKi8KPiArCQlzcGlu X2xvY2soJnZtLT5pOTE1LT5tbS53Y19sb2NrKTsKPiArCQluciA9IG1pbl90KGludCwgc3Rhc2gt Pm5yIC0gMSwgcGFnZXZlY19zcGFjZShwdmVjKSk7Cj4gKwkJbWVtY3B5KHB2ZWMtPnBhZ2VzICsg cHZlYy0+bnIsCj4gKwkJICAgICAgIHN0YXNoLT5wYWdlcyArIHN0YXNoLT5uciAtIG5yLAo+ICsJ CSAgICAgICBzaXplb2Yoc3Rhc2gtPnBhZ2VzWzBdKSAqIG5yKTsKPiArCQlwdmVjLT5uciArPSBu cjsKPiArCQlzcGluX3VubG9jaygmdm0tPmk5MTUtPm1tLndjX2xvY2spOwo+ICAgCj4gLQkJcGFn ZXZlY19yZWxlYXNlKCZzdGFzaCk7Cj4gKwkJc3Rhc2gtPm5yIC09IG5yOwo+ICsJCXBhZ2UgPSBz dGFzaC0+cGFnZXNbLS1zdGFzaC0+bnJdOwo+ICAgCX0KPiAgIAo+IC0JcmV0dXJuIGxpa2VseShw dmVjLT5ucikgPyBwdmVjLT5wYWdlc1stLXB2ZWMtPm5yXSA6IE5VTEw7Cj4gKwlyZXR1cm4gcGFn ZTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgdm1fZnJlZV9wYWdlc19yZWxlYXNlKHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IC0JCQkJICBib29sIGltbWVkaWF0ZSkKPiArCQkJ CSAgdW5zaWduZWQgaW50IGltbWVkaWF0ZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgcGFnZXZlYyAqcHZl YyA9ICZ2bS0+ZnJlZV9wYWdlczsKPiAgIAo+IEBAIC00NDIsMjggKzQ0NiwzMiBAQCBzdGF0aWMg dm9pZCB2bV9mcmVlX3BhZ2VzX3JlbGVhc2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0s Cj4gICAKPiAgIAlpZiAodm0tPnB0X2ttYXBfd2MpIHsKPiAgIAkJc3RydWN0IHBhZ2V2ZWMgKnN0 YXNoID0gJnZtLT5pOTE1LT5tbS53Y19zdGFzaDsKPiArCQlzcGlubG9ja190ICpsb2NrID0gJnZt LT5pOTE1LT5tbS53Y19sb2NrOwo+ICAgCj4gLQkJLyogV2hlbiB3ZSB1c2UgV0MsIGZpcnN0IGZp bGwgdXAgdGhlIGdsb2JhbCBzdGFzaCBhbmQgdGhlbgo+ICsJCS8qCj4gKwkJICogV2hlbiB3ZSB1 c2UgV0MsIGZpcnN0IGZpbGwgdXAgdGhlIGdsb2JhbCBzdGFzaCBhbmQgdGhlbgo+ICAgCQkgKiBv bmx5IGlmIGZ1bGwgaW1tZWRpYXRlbHkgZnJlZSB0aGUgb3ZlcmZsb3cuCj4gICAJCSAqLwo+ICAg Cj4gLQkJbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm0tPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ ICsJCXNwaW5fbG9jayhsb2NrKTsKPiAgIAkJaWYgKHBhZ2V2ZWNfc3BhY2Uoc3Rhc2gpKSB7Cj4g ICAJCQlkbyB7Cj4gICAJCQkJc3Rhc2gtPnBhZ2VzW3N0YXNoLT5ucisrXSA9Cj4gICAJCQkJCXB2 ZWMtPnBhZ2VzWy0tcHZlYy0+bnJdOwo+ICAgCQkJCWlmICghcHZlYy0+bnIpCj4gLQkJCQkJcmV0 dXJuOwo+ICsJCQkJCWJyZWFrOwo+ICAgCQkJfSB3aGlsZSAocGFnZXZlY19zcGFjZShzdGFzaCkp Owo+IC0KPiAtCQkJLyogQXMgd2UgaGF2ZSBtYWRlIHNvbWUgcm9vbSBpbiB0aGUgVk0ncyBmcmVl X3BhZ2VzLAo+IC0JCQkgKiB3ZSBjYW4gd2FpdCBmb3IgaXQgdG8gZmlsbCBhZ2Fpbi4gVW5sZXNz IHdlIGFyZQo+IC0JCQkgKiBpbnNpZGUgaTkxNV9hZGRyZXNzX3NwYWNlX2ZpbmkoKSBhbmQgbXVz dAo+IC0JCQkgKiBpbW1lZGlhdGVseSByZWxlYXNlIHRoZSBwYWdlcyEKPiAtCQkJICovCj4gLQkJ CWlmICghaW1tZWRpYXRlKQo+IC0JCQkJcmV0dXJuOwo+ICAgCQl9Cj4gKwkJc3Bpbl91bmxvY2so bG9jayk7Cj4gKwo+ICsJCS8qCj4gKwkJICogQXMgd2UgaGF2ZSBtYWRlIHNvbWUgcm9vbSBpbiB0 aGUgVk0ncyBmcmVlX3BhZ2VzLAo+ICsJCSAqIHdlIGNhbiB3YWl0IGZvciBpdCB0byBmaWxsIGFn YWluLiBVbmxlc3Mgd2UgYXJlCj4gKwkJICogaW5zaWRlIGk5MTVfYWRkcmVzc19zcGFjZV9maW5p KCkgYW5kIG11c3QKPiArCQkgKiBpbW1lZGlhdGVseSByZWxlYXNlIHRoZSBwYWdlcyEKPiArCQkg Ki8KPiArCQlpZiAocHZlYy0+bnIgPD0gaW1tZWRpYXRlKQo+ICsJCQlyZXR1cm47Cj4gICAKPiAg IAkJc2V0X3BhZ2VzX2FycmF5X3diKHB2ZWMtPnBhZ2VzLCBwdmVjLT5ucik7Cj4gICAJfQo+IEBA IC00ODIsNyArNDkwLDcgQEAgc3RhdGljIHZvaWQgdm1fZnJlZV9wYWdlKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLCBzdHJ1Y3QgcGFnZSAqcGFnZSkKPiAgIAkgKi8KPiAgIAltaWdodF9z bGVlcCgpOwo+ICAgCWlmICghcGFnZXZlY19hZGQoJnZtLT5mcmVlX3BhZ2VzLCBwYWdlKSkKPiAt CQl2bV9mcmVlX3BhZ2VzX3JlbGVhc2Uodm0sIGZhbHNlKTsKPiArCQl2bV9mcmVlX3BhZ2VzX3Jl bGVhc2Uodm0sIFBBR0VWRUNfU0laRSAtIDEpOwoKSSBzdWdnZXN0IGtlZXBpbmcgdGhlIGltbWVk aWF0ZSBwYXJhbWV0ZXIgYXMgYm9vbGVhbiB0byBnbyBvbmUgY2hhbmdlIGF0IAphIHRpbWUuCgo+ ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50IF9fc2V0dXBfcGFnZV9kbWEoc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sCj4gQEAgLTIxMjMsNyArMjEzMSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVf YWRkcmVzc19zcGFjZV9pbml0KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICAgc3Rh dGljIHZvaWQgaTkxNV9hZGRyZXNzX3NwYWNlX2Zpbmkoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0pCj4gICB7Cj4gICAJaWYgKHBhZ2V2ZWNfY291bnQoJnZtLT5mcmVlX3BhZ2VzKSkKPiAt CQl2bV9mcmVlX3BhZ2VzX3JlbGVhc2Uodm0sIHRydWUpOwo+ICsJCXZtX2ZyZWVfcGFnZXNfcmVs ZWFzZSh2bSwgMCk7Cj4gICAKPiAgIAlkcm1fbW1fdGFrZWRvd24oJnZtLT5tbSk7Cj4gICAJbGlz dF9kZWwoJnZtLT5nbG9iYWxfbGluayk7Cj4gQEAgLTM1MTgsNiArMzUyNiw5IEBAIGludCBpOTE1 X2dndHRfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJc3Ry dWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZkZXZfcHJpdi0+Z2d0dDsKPiAgIAlpbnQgcmV0Owo+ICAg Cj4gKwlzcGluX2xvY2tfaW5pdCgmZGV2X3ByaXYtPm1tLndjX2xvY2spOwo+ICsJcGFnZXZlY19p bml0KCZkZXZfcHJpdi0+bW0ud2Nfc3Rhc2gpOwo+ICsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZGV2 X3ByaXYtPnZtX2xpc3QpOwo+ICAgCj4gICAJLyogTm90ZSB0aGF0IHdlIHVzZSBwYWdlIGNvbG91 cmluZyB0byBlbmZvcmNlIGEgZ3VhcmQgcGFnZSBhdCB0aGUKPiAKClJlZ2FyZHMsCgpUdnJ0a28K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==