From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH] drm/i915/selftests: Exercise CS TLB invalidation Date: Thu, 19 Sep 2019 15:57:45 +0300 Message-ID: <87y2ykpho6.fsf@gaia.fi.intel.com> References: <20190915163749.19540-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 634016F501 for ; Thu, 19 Sep 2019 12:58:08 +0000 (UTC) In-Reply-To: <20190915163749.19540-1-chris@chris-wilson.co.uk> 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 Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gQ2hlY2sg dGhhdCB3ZSBhcmUgY29ycmVjdGx5IGludmFsaWRhdGluZyB0aGUgVExCIGF0IHRoZSBzdGFydCBv ZiBhCj4gYmF0Y2ggYWZ0ZXIgdXBkYXRpbmcgdGhlIEdUVC4KPgo+IFNpZ25lZC1vZmYtYnk6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBNaWthIEt1b3BwYWxh IDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KPiBDYzogRGFuaWVsZSBDZXJhb2xvIFNw dXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jIHwgMjI3ICsrKysrKysrKysrKysr KysrKwo+ICAxIGZpbGUgY2hhbmdlZCwgMjI3IGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCA1OThjMThkMTA2 NDAuLmY4NzA5YjMzMmJkNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMjUsMTMgKzI1LDE2IEBACj4gICNpbmNsdWRlIDxsaW51 eC9saXN0X3NvcnQuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3ByaW1lX251bWJlcnMuaD4KPiAgCj4g KyNpbmNsdWRlICJnZW0vaTkxNV9nZW1fY29udGV4dC5oIgo+ICAjaW5jbHVkZSAiZ2VtL3NlbGZ0 ZXN0cy9tb2NrX2NvbnRleHQuaCIKPiArI2luY2x1ZGUgImd0L2ludGVsX2NvbnRleHQuaCIKPiAg Cj4gICNpbmNsdWRlICJpOTE1X3JhbmRvbS5oIgo+ICAjaW5jbHVkZSAiaTkxNV9zZWxmdGVzdC5o Igo+ICAKPiAgI2luY2x1ZGUgIm1vY2tfZHJtLmgiCj4gICNpbmNsdWRlICJtb2NrX2dlbV9kZXZp Y2UuaCIKPiArI2luY2x1ZGUgImlndF9mbHVzaF90ZXN0LmgiCj4gIAo+ICBzdGF0aWMgdm9pZCBj bGVhbnVwX2ZyZWVkX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIHsK PiBAQCAtMTcwNSw2ICsxNzA4LDIyOSBAQCBpbnQgaTkxNV9nZW1fZ3R0X21vY2tfc2VsZnRlc3Rz KHZvaWQpCj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IGNvbnRleHRfc3lu YyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxOwo+ICsJbG9uZyB0aW1lb3V0Owo+ICsKPiArCXJxID0gaW50ZWxfY29udGV4dF9jcmVhdGVf cmVxdWVzdChjZSk7Cj4gKwlpZiAoSVNfRVJSKHJxKSkKPiArCQlyZXR1cm4gUFRSX0VSUihycSk7 Cj4gKwo+ICsJaTkxNV9yZXF1ZXN0X2dldChycSk7Cj4gKwlpOTE1X3JlcXVlc3RfYWRkKHJxKTsK PiArCj4gKwl0aW1lb3V0ID0gaTkxNV9yZXF1ZXN0X3dhaXQocnEsIDAsIEhaIC8gNSk7Cj4gKwlp OTE1X3JlcXVlc3RfcHV0KHJxKTsKPiArCj4gKwlyZXR1cm4gdGltZW91dCA8IDAgPyAtRUlPIDog MDsKPiArfQo+ICsKPiArc3RhdGljIGludCBzdWJtaXRfYmF0Y2goc3RydWN0IGludGVsX2NvbnRl eHQgKmNlLCB1NjQgYWRkcikKPiArewo+ICsJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gKwlp bnQgZXJyOwo+ICsKPiArCXJxID0gaW50ZWxfY29udGV4dF9jcmVhdGVfcmVxdWVzdChjZSk7Cj4g KwlpZiAoSVNfRVJSKHJxKSkKPiArCQlyZXR1cm4gUFRSX0VSUihycSk7Cj4gKwo+ICsJZXJyID0g MDsKPiArCWlmIChycS0+ZW5naW5lLT5lbWl0X2luaXRfYnJlYWRjcnVtYikgLyogZGV0ZWN0IGEg aGFuZyAqLwoKZm9yIHNlcW5vIHdyaXRlPwoKPiArCQllcnIgPSBycS0+ZW5naW5lLT5lbWl0X2lu aXRfYnJlYWRjcnVtYihycSk7Cj4gKwlpZiAoZXJyID09IDApCj4gKwkJZXJyID0gcnEtPmVuZ2lu ZS0+ZW1pdF9iYl9zdGFydChycSwgYWRkciwgMCwgMCk7Cj4gKwoKSW4gY29udGV4dF9zeW5jIHBh cnQgd2UgZ3JhYmJlZCBhIHJlZmVyZW5jZS4gSW4gaGVyZSB3ZQpkb24ndC4gSSBkb24ndCBzZWUg aG93IHdlIGNhbiBnZXQgYXdheSB3aXRob3V0IGl0IGV2ZW4KaWYgd2UgZG9uJ3Qgd2FpdCBpbiBo ZXJlLgoKPiArCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICsKPiArCXJldHVybiBlcnI7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgaWd0X2NzX3RsYih2b2lkICphcmcpCj4gK3sKPiArCWNvbnN0IHVu c2lnbmVkIGludCBjb3VudCA9IFBBR0VfU0laRSAvIDY0Owo+ICsJY29uc3QgdW5zaWduZWQgaW50 IGNodW5rX3NpemUgPSBjb3VudCAqIFBBR0VfU0laRTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gYXJnOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmJiZSwgKm91 dDsKPiArCXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzX2l0ZXIgaXQ7Cj4gKwlzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bTsKPiArCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gKwlz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gKwlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7Cj4gKwlz dHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArCXVuc2lnbmVkIGludCBpOwo+ICsJdTMyICpyZXN1bHQ7 Cj4gKwl1MzIgKmJhdGNoOwo+ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJZmlsZSA9IG1vY2tfZmls ZShpOTE1KTsKPiArCWlmIChJU19FUlIoZmlsZSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7 Cj4gKwo+ICsJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwljdHggPSBs aXZlX2NvbnRleHQoaTkxNSwgZmlsZSk7Cj4gKwlpZiAoSVNfRVJSKGN0eCkpIHsKPiArCQllcnIg PSBQVFJfRVJSKGN0eCk7Cj4gKwkJZ290byBvdXRfdW5sb2NrOwo+ICsJfQo+ICsKPiArCXZtID0g Y3R4LT52bTsKPiArCWlmICghdm0pCj4gKwkJZ290byBvdXRfdW5sb2NrOwo+ICsKPiArCWJiZSA9 IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaTkxNSwgUEFHRV9TSVpFKTsKPiArCWlm IChJU19FUlIoYmJlKSkgewo+ICsJCWVyciA9IFBUUl9FUlIoYmJlKTsKPiArCQlnb3RvIG91dF91 bmxvY2s7Cj4gKwl9Cj4gKwo+ICsJYmF0Y2ggPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChiYmUs IEk5MTVfTUFQX1dDKTsKPiArCWlmIChJU19FUlIoYmF0Y2gpKSB7Cj4gKwkJZXJyID0gUFRSX0VS UihiYXRjaCk7Cj4gKwkJZ290byBvdXRfYmJlOwo+ICsJfQo+ICsJZm9yIChpID0gMDsgaSA8IGNv dW50OyBpKyspIHsKPiArCQl1MzIgKmNzID0gYmF0Y2ggKyBpICogNjQgLyBzaXplb2YoKmNzKTsK PiArCQl1NjQgYWRkciA9ICh2bS0+dG90YWwgLSBQQUdFX1NJWkUpICsgaSAqIHNpemVvZih1MzIp Owo+ICsKPiArCQlHRU1fQlVHX09OKElOVEVMX0dFTihpOTE1KSA8IDYpOwo+ICsJCWNzWzBdID0g TUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQ7Cj4gKwkJaWYgKElOVEVMX0dFTihpOTE1KSA+PSA4KSB7 Cj4gKwkJCWNzWzFdID0gbG93ZXJfMzJfYml0cyhhZGRyKTsKPiArCQkJY3NbMl0gPSB1cHBlcl8z Ml9iaXRzKGFkZHIpOwo+ICsJCQljc1szXSA9IGk7Cj4gKwkJCWNzWzRdID0gTUlfTk9PUDsKPiAr CQkJY3NbNV0gPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlRfR0VOODsKPiArCQl9IGVsc2Ugewo+ICsJ CQljc1sxXSA9IDA7Cj4gKwkJCWNzWzJdID0gbG93ZXJfMzJfYml0cyhhZGRyKTsKPiArCQkJY3Nb M10gPSBpOwo+ICsJCQljc1s0XSA9IE1JX05PT1A7Cj4gKwkJCWNzWzVdID0gTUlfQkFUQ0hfQlVG RkVSX1NUQVJUOwo+ICsJCX0KPiArCX0KPiArCj4gKwlvdXQgPSBpOTE1X2dlbV9vYmplY3RfY3Jl YXRlX2ludGVybmFsKGk5MTUsIFBBR0VfU0laRSk7Cj4gKwlpZiAoSVNfRVJSKG91dCkpIHsKPiAr CQllcnIgPSBQVFJfRVJSKG91dCk7Cj4gKwkJZ290byBvdXRfYmF0Y2g7Cj4gKwl9Cj4gKwlpOTE1 X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2NvaGVyZW5jeShvdXQsIEk5MTVfQ0FDSElOR19DQUNIRUQp Owo+ICsKPiArCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG91dCwgdm0sIE5VTEwpOwo+ICsJaWYg KElTX0VSUih2bWEpKSB7Cj4gKwkJZXJyID0gUFRSX0VSUih2bWEpOwo+ICsJCWdvdG8gb3V0X2Jh dGNoOwo+ICsJfQo+ICsKPiArCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsCj4gKwkJCSAg IFBJTl9VU0VSIHwKPiArCQkJICAgUElOX09GRlNFVF9GSVhFRCB8Cj4gKwkJCSAgICh2bS0+dG90 YWwgLSBQQUdFX1NJWkUpKTsKPiArCWlmIChlcnIpCj4gKwkJZ290byBvdXRfb3V0OwoKb3V0X3B1 dD8KCk9oIGFuZCB3ZSBkb24ndCBoYXZlIHRvIGRvIGFueXRoaW5nIHdpdGggdGhlIGluc3RhbmNl IG9uCmVycm9yIHBhdGhzPwoKPiArCUdFTV9CVUdfT04odm1hLT5ub2RlLnN0YXJ0ICE9IHZtLT50 b3RhbCAtIFBBR0VfU0laRSk7Cj4gKwo+ICsJcmVzdWx0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9t YXAob3V0LCBJOTE1X01BUF9XQik7Cj4gKwlpZiAoSVNfRVJSKHJlc3VsdCkpIHsKPiArCQllcnIg PSBQVFJfRVJSKHJlc3VsdCk7Cj4gKwkJZ290byBvdXRfb3V0Owo+ICsJfQo+ICsKPiArCWZvcl9l YWNoX2dlbV9lbmdpbmUoY2UsIGk5MTVfZ2VtX2NvbnRleHRfbG9ja19lbmdpbmVzKGN0eCksIGl0 KSB7Cj4gKwkJSUdUX1RJTUVPVVQoZW5kX3RpbWUpOwo+ICsJCXVuc2lnbmVkIGxvbmcgcGFzcyA9 IDA7Cj4gKwo+ICsJCWlmICghaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChjZS0+ZW5naW5l KSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXdoaWxlICghX19pZ3RfdGltZW91dChlbmRfdGlt ZSwgTlVMTCkpIHsKPiArCQkJdTY0IG9mZnNldDsKPiArCj4gKwkJCW9mZnNldCA9IHJhbmRvbV9v ZmZzZXQoMCwgdm0tPnRvdGFsIC0gUEFHRV9TSVpFLAo+ICsJCQkJCSAgICAgICBjaHVua19zaXpl LCBQQUdFX1NJWkUpOwo+ICsKPiArCQkJZXJyID0gdm0tPmFsbG9jYXRlX3ZhX3JhbmdlKHZtLCBv ZmZzZXQsIGNodW5rX3NpemUpOwo+ICsJCQlpZiAoZXJyKQo+ICsJCQkJZ290byBlbmQ7Cj4gKwo+ ICsJCQltZW1zZXQzMihyZXN1bHQsIFNUQUNLX01BR0lDLCBQQUdFX1NJWkUgLyBzaXplb2YodTMy KSk7Cj4gKwo+ICsJCQl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShiYmUsIHZtLCBOVUxMKTsKPiAr CQkJaWYgKElTX0VSUih2bWEpKSB7Cj4gKwkJCQllcnIgPSBQVFJfRVJSKHZtYSk7Cj4gKwkJCQln b3RvIGVuZDsKPiArCQkJfQo+ICsKPiArCQkJZXJyID0gdm1hLT5vcHMtPnNldF9wYWdlcyh2bWEp Owo+ICsJCQlpZiAoZXJyKQo+ICsJCQkJZ290byBlbmQ7Cj4gKwo+ICsJCQkvKiBSZXBsYWNlIHRo ZSBUTEIgd2l0aCB0YXJnZXQgYmF0Y2hlcyAqLwo+ICsJCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7 IGkrKykgewo+ICsJCQkJdTMyICpjcyA9IGJhdGNoICsgaSAqIDY0IC8gc2l6ZW9mKCpjcyk7Cj4g KwkJCQl1NjQgYWRkcjsKPiArCj4gKwkJCQl2bWEtPm5vZGUuc3RhcnQgPSBvZmZzZXQgKyBpICog UEFHRV9TSVpFOwoKb24gcHJldmlvdXMgbG9vcCwgd2UgaGF2ZSBub3cgcHJpbWVkIHRoZSBwdGUg dG8gdGxiIGluIGhlcmU/Cgo+ICsJCQkJdm0tPmluc2VydF9lbnRyaWVzKHZtLCB2bWEsIEk5MTVf Q0FDSEVfTk9ORSwgMCk7CgouLm5vdyBjaGFuZ2luZyBpbiBpdCBoZXJlLi4uCgo+ICsKPiArCQkJ CWFkZHIgPSB2bWEtPm5vZGUuc3RhcnQgKyBpICogNjQ7Cj4gKwkJCQljc1s0XSA9IE1JX05PT1A7 Cj4gKwkJCQljc1s2XSA9IGxvd2VyXzMyX2JpdHMoYWRkcik7Cj4gKwkJCQljc1s3XSA9IHVwcGVy XzMyX2JpdHMoYWRkcik7Cj4gKwkJCQl3bWIoKTsKPiArCj4gKwkJCQllcnIgPSBzdWJtaXRfYmF0 Y2goY2UsIGFkZHIpOwoKaW4gaG9wZSB0aGF0IHdpdGggdGhpcyBzdWJtaXNzaW9uIGhhcmR3YXJl IHdpbGwgc2VlIHRoZSBvbGQgb25lIGFuZApjb21wbGV0ZWx5IG1pc3MgdGhlIHN0b3JlK2JiIHN0 YXJ0PwoKUGVyaGFwcyByZXdpcmluZyBhIG1vcmUgZHVtbXkgZW1pdCBvbmx5IHRvIHByb3ZlIHRo aXMgY2FzZQppcyBwdXNoaW5nIGl0LgoKQnV0IEkgYW0gY3VyaW91cyB0byBrbm93IGlmIHlvdSBk aWQgdHJ5IGl0IG91dCBieSByZW1vdmluZwp0aGUgaW52YWxpZGF0ZSBvbiB0aGUgZW1pdHMgYW5k IG1hbmFnZWQgdG8gYnJpbmcKb3V0IHRoZSBtaXNzaW5nIHdyaXRlcz8KCi1NaWthCgo+ICsJCQkJ aWYgKGVycikKPiArCQkJCQlnb3RvIGVuZDsKPiArCQkJfQo+ICsKPiArCQkJeWllbGQoKTsKPiAr CQkJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCj4gKwkJCQliYXRjaFtpICogNjQgLyBzaXpl b2YoKmJhdGNoKSArIDRdID0KPiArCQkJCQlNSV9CQVRDSF9CVUZGRVJfRU5EOwo+ICsJCQl3bWIo KTsKPiArCj4gKwkJCXZtYS0+b3BzLT5jbGVhcl9wYWdlcyh2bWEpOwo+ICsKPiArCQkJZXJyID0g Y29udGV4dF9zeW5jKGNlKTsKPiArCQkJaWYgKGVycikgewo+ICsJCQkJcHJfZXJyKCIlczogd3Jp dGVzIHRpbWVkIG91dFxuIiwKPiArCQkJCSAgICAgICBjZS0+ZW5naW5lLT5uYW1lKTsKPiArCQkJ CWdvdG8gZW5kOwo+ICsJCQl9Cj4gKwo+ICsJCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykg ewo+ICsJCQkJaWYgKHJlc3VsdFtpXSAhPSBpKSB7Cj4gKwkJCQkJcHJfZXJyKCIlczogV3JpdGUg bG9zdCBvbiBwYXNzICVsdSwgYXQgb2Zmc2V0ICVsbHgsIGluZGV4ICVkLCBmb3VuZCAleCwgZXhw ZWN0ZWQgJXhcbiIsCj4gKwkJCQkJICAgICAgIGNlLT5lbmdpbmUtPm5hbWUsIHBhc3MsCj4gKwkJ CQkJICAgICAgIG9mZnNldCwgaSwgcmVzdWx0W2ldLCBpKTsKPiArCQkJCQllcnIgPSAtRUlOVkFM Owo+ICsJCQkJCWdvdG8gZW5kOwo+ICsJCQkJfQo+ICsJCQl9Cj4gKwo+ICsJCQl2bS0+Y2xlYXJf cmFuZ2Uodm0sIG9mZnNldCwgY2h1bmtfc2l6ZSk7Cj4gKwkJCXBhc3MrKzsKPiArCQl9Cj4gKwl9 Cj4gK2VuZDoKPiArCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9DS0VEKSkK PiArCQllcnIgPSAtRUlPOwo+ICsJaTkxNV9nZW1fY29udGV4dF91bmxvY2tfZW5naW5lcyhjdHgp Owo+ICsJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvdXQpOwo+ICtvdXRfb3V0Ogo+ICsJaTkx NV9nZW1fb2JqZWN0X3B1dChvdXQpOwo+ICtvdXRfYmF0Y2g6Cj4gKwlpOTE1X2dlbV9vYmplY3Rf dW5waW5fbWFwKGJiZSk7Cj4gK291dF9iYmU6Cj4gKwlpOTE1X2dlbV9vYmplY3RfcHV0KGJiZSk7 Cj4gK291dF91bmxvY2s6Cj4gKwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICsJbW9ja19maWxlX2ZyZWUoaTkxNSwgZmlsZSk7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4g Kwo+ICBpbnQgaTkxNV9nZW1fZ3R0X2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQo+ICB7Cj4gIAlzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0 c1tdID0gewo+IEBAIC0xNzIyLDYgKzE5NDgsNyBAQCBpbnQgaTkxNV9nZW1fZ3R0X2xpdmVfc2Vs ZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJCVNVQlRFU1QoaWd0X2dn dHRfcG90KSwKPiAgCQlTVUJURVNUKGlndF9nZ3R0X2ZpbGwpLAo+ICAJCVNVQlRFU1QoaWd0X2dn dHRfcGFnZSksCj4gKwkJU1VCVEVTVChpZ3RfY3NfdGxiKSwKPiAgCX07Cj4gIAo+ICAJR0VNX0JV R19PTihvZmZzZXRfaW5fcGFnZShpOTE1LT5nZ3R0LnZtLnRvdGFsKSk7Cj4gLS0gCj4gMi4yMy4w Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==