From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v2 01/11] drm/i915: Disable preemption and sleeping while using the punit sideband Date: Mon, 15 Jan 2018 14:04:40 +0200 Message-ID: <87zi5fiazr.fsf@gaia.fi.intel.com> References: <20180115084723.2221-1-chris@chris-wilson.co.uk> <20180115084723.2221-2-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 2C30D89E33 for ; Mon, 15 Jan 2018 12:05:19 +0000 (UTC) In-Reply-To: <20180115084723.2221-2-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 Cc: Hans de Goede List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gV2hpbGUg d2UgdGFsayB0byB0aGUgcHVuaXQgb3ZlciBpdHMgc2lkZWJhbmQsIHdlIG5lZWQgdG8gcHJldmVu dCB0aGUgY3B1Cj4gZnJvbSBzbGVlcGluZyBpbiBvcmRlciB0byBwcmV2ZW50IGEgcG90ZW50aWFs IG1hY2hpbmUgaGFuZy4KPgo+IE5vdGUgdGhhdCBieSBpdHNlbGYsIGl0IGFwcGVhcnMgdGhhdCBw bV9xb3NfdXBkYXRlX3JlcXVlc3QgKHZpYQo+IGludGVsX2lkbGUpIGRvZXNuJ3QgcHJvdmlkZSBh IHN1ZmZpY2llbnQgYmFycmllciB0byBlbnN1cmUgdGhhdCBhbGwgY29yZQo+IGFyZSBpbmRlZWQg YXdha2UgKG91dCBvZiBDc3RhdGUpIGFuZCB0aGF0IHRoZSBwYWNrYWdlIGlzIGF3YWtlLiBUbyBk byBzbywKPiB3ZSBuZWVkIHRvIHN1cHBsZW1lbnQgdGhlIHBtX3FvcyB3aXRoIGEgbWFudWFsIHBp bmcgb25fZWFjaF9jcHUuCj4KPiB2MjogUmVzdHJpY3QgdGhlIGhlYXZ5LXdlaWdodCB3YWtldXAg dG8ganVzdCB0aGUgSVNPRl9QT1JUX1BVTklULCB0aGVyZQo+IGlzIGluc3VmZmljaWVudCBldmlk ZW5jZSB0byBpbXBsaWNhdGUgYSB3aWRlciBwcm9ibGVtIGF0bS4gU2ltaWxhcmx5LAo+IHJlc3Ry aWN0IHRoZSB3L2EgdG8gVmFsbGV5dmlldywgYXMgQ2hlcnJ5dmlldyBkb2Vzbid0IGhhdmUgYW4g YW5ncnkgY2FkcmUKPiBvZiB1c2Vycy4KPgoKT25lIGRhdGFwb2ludCBhYm91dCB0aGUgdjEgb2Yg dGhpcyBwYXRjaCB3aXRoIHRoZSBjcHUgcGluZyBpbiBpdC4KVGhlIGoxOTAwIGJ5dCBkaWQgZW5k IHVwIHdpdGggc3lzdGVtIGhhbmcgZHVyaW5nIHdlZWtlbmQgd2l0aApkcm0tdGlwICsgdjEuCgo6 KAotTWlrYQoKPiBUaGUgd29ya2luZyB0aGVvcnksIGNvdXJ0ZXN5IG9mIFZpbGxlIGFuZCBIYW5z LCBpcyB0aGUgaXNzdWUgbGllcyB3aXRoaW4KPiB0aGUgcG93ZXIgZGVsaXZlcnkgYW5kIHNvIGlz IGxpa2VseSB0byBiZSB1bml0IGFuZCBib2FyZCBzcGVjaWZpYyBhbmQKPiBvY2N1cnMgd2hlbiBi b3RoIHRoZSB1bml0L2Z3IHJlcXVpcmUgZXh0cmEgcG93ZXIgYXQgdGhlIHNhbWUgdGltZSBhcyB0 aGUKPiBjcHUgcGFja2FnZSBpcyBjaGFuZ2luZyBpdHMgb3duIHBvd2VyIHN0YXRlLgo+Cj4gQnVn emlsbGE6IGh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MDUx Cj4gUmVmZXJlbmNlczogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9MTAyNjU3Cj4gUmVmZXJlbmNlczogaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3df YnVnLmNnaT9pZD0xOTUyNTUKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KPiBDYzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51 eC5pbnRlbC5jb20+Cj4gQ2M6IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+Cj4g Q2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgfCAgNiArKysKPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICB8ICAxICsKPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYyB8IDg5ICsrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tCj4gIDMgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRp b25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCA2YzhkYTlkMjBjMzMuLmQ0 YjkwY2MwMTMwYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC05MDIsNiArOTAy LDkgQEAgc3RhdGljIGludCBpOTE1X2RyaXZlcl9pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCXNwaW5fbG9ja19pbml0KCZkZXZfcHJpdi0+dW5jb3JlLmxv Y2spOwo+ICAKPiAgCW11dGV4X2luaXQoJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXBtX3Fvc19h ZGRfcmVxdWVzdCgmZGV2X3ByaXYtPnNiX3FvcywKPiArCQkJICAgUE1fUU9TX0NQVV9ETUFfTEFU RU5DWSwgUE1fUU9TX0RFRkFVTFRfVkFMVUUpOwo+ICsKPiAgCW11dGV4X2luaXQoJmRldl9wcml2 LT5tb2Rlc2V0X3Jlc3RvcmVfbG9jayk7Cj4gIAltdXRleF9pbml0KCZkZXZfcHJpdi0+YXZfbXV0 ZXgpOwo+ICAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPndtLndtX211dGV4KTsKPiBAQCAtOTUzLDYg Kzk1Niw5IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX2NsZWFudXBfZWFybHkoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaW50ZWxfaXJxX2ZpbmkoZGV2X3ByaXYpOwo+ ICAJaTkxNV93b3JrcXVldWVzX2NsZWFudXAoZGV2X3ByaXYpOwo+ICAJaTkxNV9lbmdpbmVzX2Ns ZWFudXAoZGV2X3ByaXYpOwo+ICsKPiArCXBtX3Fvc19yZW1vdmVfcmVxdWVzdCgmZGV2X3ByaXYt PnNiX3Fvcyk7Cj4gKwltdXRleF9kZXN0cm95KCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gIH0KPiAg Cj4gIHN0YXRpYyBpbnQgaTkxNV9tbWlvX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBjNDIwMTViMDViNDcuLmQ5 NWQ4YzNkMDRhYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xODg2LDYgKzE4 ODYsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAo+ICAJLyogU2lkZWJhbmQgbWFp bGJveCBwcm90ZWN0aW9uICovCj4gIAlzdHJ1Y3QgbXV0ZXggc2JfbG9jazsKPiArCXN0cnVjdCBw bV9xb3NfcmVxdWVzdCBzYl9xb3M7Cj4gIAo+ICAJLyoqIENhY2hlZCB2YWx1ZSBvZiBJTVIgdG8g YXZvaWQgcmVhZHMgaW4gdXBkYXRpbmcgdGhlIGJpdGZpZWxkICovCj4gIAl1bmlvbiB7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jCj4gaW5kZXggNzVjODcyYmI4Y2M5Li5kNTZl ZGEzMzczNGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJh bmQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmMKPiBAQCAt MjIsNiArMjIsOCBAQAo+ICAgKgo+ICAgKi8KPiAgCj4gKyNpbmNsdWRlIDxhc20vaW9zZl9tYmku aD4KPiArCj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZHJ2Lmgi Cj4gIAo+IEBAIC0zOSwxOCArNDEsNDggQEAKPiAgLyogUHJpdmF0ZSByZWdpc3RlciB3cml0ZSwg ZG91YmxlLXdvcmQgYWRkcmVzc2luZywgbm9uLXBvc3RlZCAqLwo+ICAjZGVmaW5lIFNCX0NSV1JE QV9OUAkweDA3Cj4gIAo+IC1zdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBkZXZmbiwKPiAtCQkJICAgdTMyIHBvcnQsIHUzMiBv cGNvZGUsIHUzMiBhZGRyLCB1MzIgKnZhbCkKPiArc3RhdGljIHZvaWQgcGluZyh2b2lkICppbmZv KQo+ICB7Cj4gLQl1MzIgY21kLCBiZSA9IDB4ZiwgYmFyID0gMDsKPiAtCWJvb2wgaXNfcmVhZCA9 IChvcGNvZGUgPT0gU0JfTVJEX05QIHx8IG9wY29kZSA9PSBTQl9DUlJEREFfTlApOwo+ICt9Cj4g IAo+IC0JY21kID0gKGRldmZuIDw8IElPU0ZfREVWRk5fU0hJRlQpIHwgKG9wY29kZSA8PCBJT1NG X09QQ09ERV9TSElGVCkgfAo+IC0JCShwb3J0IDw8IElPU0ZfUE9SVF9TSElGVCkgfCAoYmUgPDwg SU9TRl9CWVRFX0VOQUJMRVNfU0hJRlQpIHwKPiAtCQkoYmFyIDw8IElPU0ZfQkFSX1NISUZUKTsK PiArc3RhdGljIHZvaWQgX192bHZfcHVuaXRfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiArewo+ICsJaW9zZl9tYmlfcHVuaXRfYWNxdWlyZSgpOwo+ICAKPiAtCVdBUk5f T04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnNiX2xvY2spKTsKPiArCS8qCj4gKwkgKiBQ cmV2ZW50IHRoZSBjcHUgZnJvbSBzbGVlcGluZyB3aGlsZSB3ZSB1c2UgdGhpcyBzaWRlYmFuZCwg b3RoZXJ3aXNlCj4gKwkgKiB0aGUgcHVuaXQgbWF5IGNhdXNlIGEgbWFjaGluZSBoYW5nLiBUaGUg aXNzdWUgYXBwZWFycyB0byBiZSBpc29sYXRlZAo+ICsJICogd2l0aCBjaGFuZ2luZyB0aGUgcG93 ZXIgc3RhdGUgb2YgdGhlIENQVSBwYWNrYWdlIHdoaWxlIGNoYW5naW5nCj4gKwkgKiB0aGUgcG93 ZXIgc3RhdGUgdmlhIHRoZSBwdW5pdCwgYW5kIHdlIGhhdmUgb25seSBvYnNlcnZlZCBpdAo+ICsJ ICogcmVsaWFibHkgb24gNC1jb3JlIEJheXRhaWwgc3lzdGVtcyBzdWdnZXN0aW5nIHRoZSBpc3N1 ZSBpcyBpbiB0aGUKPiArCSAqIHBvd2VyIGRlbGl2ZXJ5IG1lY2hhbmlzbSBhbmQgbGlrZWx5IHRv IGJlIGJlIGJvYXJkL2Z1bmN0aW9uCj4gKwkgKiBzcGVjaWZpYy4gSGVuY2Ugd2UgcHJlc3VtZSB0 aGUgd29ya2Fyb3VuZCBuZWVkcyBvbmx5IGJlIGFwcGxpZWQKPiArCSAqIHRvIHRoZSBWYWxsZXl2 aWV3IFAtdW5pdCBhbmQgbm90IGFsbCBzaWRlYmFuZCBjb21tdW5pY2F0aW9ucy4KPiArCSAqLwo+ ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKSB7Cj4gKwkJcG1fcW9zX3VwZGF0ZV9yZXF1 ZXN0KCZkZXZfcHJpdi0+c2JfcW9zLCAwKTsKPiArCQlvbl9lYWNoX2NwdShwaW5nLCBOVUxMLCAx KTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX192bHZfcHVuaXRfcHV0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2 X3ByaXYpKQo+ICsJCXBtX3Fvc191cGRhdGVfcmVxdWVzdCgmZGV2X3ByaXYtPnNiX3FvcywgUE1f UU9TX0RFRkFVTFRfVkFMVUUpOwo+ICAKPiArCWlvc2ZfbWJpX3B1bml0X3JlbGVhc2UoKTsKPiAr fQo+ICsKPiArc3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICsJCQkgICB1MzIgZGV2Zm4sIHUzMiBwb3J0LCB1MzIgb3Bjb2RlLAo+ ICsJCQkgICB1MzIgYWRkciwgdTMyICp2YWwpCj4gK3sKPiArCWNvbnN0IGJvb2wgaXNfcmVhZCA9 IChvcGNvZGUgPT0gU0JfTVJEX05QIHx8IG9wY29kZSA9PSBTQl9DUlJEREFfTlApOwo+ICsJaW50 IGVycjsKPiArCj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4g Kwo+ICsJLyogRmx1c2ggdGhlIHByZXZpb3VzIGNvbW1zLCBqdXN0IGluIGNhc2UgaXQgZmFpbGVk IGxhc3QgdGltZS4gKi8KPiAgCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwK PiAgCQkJCSAgICBWTFZfSU9TRl9ET09SQkVMTF9SRVEsIElPU0ZfU0JfQlVTWSwgMCwKPiAgCQkJ CSAgICA1KSkgewo+IEBAIC01OSwyMiArOTEsMzMgQEAgc3RhdGljIGludCB2bHZfc2lkZWJhbmRf cncoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgZGV2Zm4sCj4gIAkJcmV0 dXJuIC1FQUdBSU47Cj4gIAl9Cj4gIAo+IC0JSTkxNV9XUklURShWTFZfSU9TRl9BRERSLCBhZGRy KTsKPiAtCUk5MTVfV1JJVEUoVkxWX0lPU0ZfREFUQSwgaXNfcmVhZCA/IDAgOiAqdmFsKTsKPiAt CUk5MTVfV1JJVEUoVkxWX0lPU0ZfRE9PUkJFTExfUkVRLCBjbWQpOwo+IC0KPiAtCWlmIChpbnRl bF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiAtCQkJCSAgICBWTFZfSU9TRl9ET09SQkVM TF9SRVEsIElPU0ZfU0JfQlVTWSwgMCwKPiAtCQkJCSAgICA1KSkgewo+ICsJcHJlZW1wdF9kaXNh YmxlKCk7Cj4gKwo+ICsJSTkxNV9XUklURV9GVyhWTFZfSU9TRl9BRERSLCBhZGRyKTsKPiArCUk5 MTVfV1JJVEVfRlcoVkxWX0lPU0ZfREFUQSwgaXNfcmVhZCA/IDAgOiAqdmFsKTsKPiArCUk5MTVf V1JJVEVfRlcoVkxWX0lPU0ZfRE9PUkJFTExfUkVRLAo+ICsJCSAgICAgIChkZXZmbiA8PCBJT1NG X0RFVkZOX1NISUZUKSB8Cj4gKwkJICAgICAgKG9wY29kZSA8PCBJT1NGX09QQ09ERV9TSElGVCkg fAo+ICsJCSAgICAgIChwb3J0IDw8IElPU0ZfUE9SVF9TSElGVCkgfAo+ICsJCSAgICAgICgweGYg PDwgSU9TRl9CWVRFX0VOQUJMRVNfU0hJRlQpIHwKPiArCQkgICAgICAoMCA8PCBJT1NGX0JBUl9T SElGVCkgfAo+ICsJCSAgICAgIElPU0ZfU0JfQlVTWSk7Cj4gKwo+ICsJaWYgKF9faW50ZWxfd2Fp dF9mb3JfcmVnaXN0ZXJfZncoZGV2X3ByaXYsCj4gKwkJCQkJIFZMVl9JT1NGX0RPT1JCRUxMX1JF USwgSU9TRl9TQl9CVVNZLCAwLAo+ICsJCQkJCSAxMDAwMCwgMCwgTlVMTCkgPT0gMCkgewo+ICsJ CWlmIChpc19yZWFkKQo+ICsJCQkqdmFsID0gSTkxNV9SRUFEX0ZXKFZMVl9JT1NGX0RBVEEpOwo+ ICsJCWVyciA9IDA7Cj4gKwl9IGVsc2Ugewo+ICAJCURSTV9ERUJVR19EUklWRVIoIklPU0Ygc2lk ZWJhbmQgZmluaXNoIHdhaXQgKCVzKSB0aW1lZCBvdXRcbiIsCj4gIAkJCQkgaXNfcmVhZCA/ICJy ZWFkIiA6ICJ3cml0ZSIpOwo+IC0JCXJldHVybiAtRVRJTUVET1VUOwo+ICsJCWVyciA9IC1FVElN RURPVVQ7Cj4gIAl9Cj4gIAo+IC0JaWYgKGlzX3JlYWQpCj4gLQkJKnZhbCA9IEk5MTVfUkVBRChW TFZfSU9TRl9EQVRBKTsKPiArCXByZWVtcHRfZW5hYmxlKCk7Cj4gIAo+IC0JcmV0dXJuIDA7Cj4g KwlyZXR1cm4gZXJyOwo+ICB9Cj4gIAo+ICB1MzIgdmx2X3B1bml0X3JlYWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkcikKPiBAQCAtODQsOCArMTI3LDEyIEBAIHUz MiB2bHZfcHVuaXRfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBh ZGRyKQo+ICAJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+cGN1X2xvY2spKTsK PiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwlfX3Zsdl9wdW5pdF9n ZXQoZGV2X3ByaXYpOwo+ICsKPiAgCXZsdl9zaWRlYmFuZF9ydyhkZXZfcHJpdiwgUENJX0RFVkZO KDAsIDApLCBJT1NGX1BPUlRfUFVOSVQsCj4gIAkJCVNCX0NSUkREQV9OUCwgYWRkciwgJnZhbCk7 Cj4gKwo+ICsJX192bHZfcHVuaXRfcHV0KGRldl9wcml2KTsKPiAgCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnNiX2xvY2spOwo+ICAKPiAgCXJldHVybiB2YWw7Cj4gQEAgLTk4LDggKzE0NSwxMiBA QCBpbnQgdmx2X3B1bml0X3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg dTMyIGFkZHIsIHUzMiB2YWwpCj4gIAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2 LT5wY3VfbG9jaykpOwo+ICAKPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiAr CV9fdmx2X3B1bml0X2dldChkZXZfcHJpdik7Cj4gKwo+ICAJZXJyID0gdmx2X3NpZGViYW5kX3J3 KGRldl9wcml2LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9SVF9QVU5JVCwKPiAgCQkJICAgICAg U0JfQ1JXUkRBX05QLCBhZGRyLCAmdmFsKTsKPiArCj4gKwlfX3Zsdl9wdW5pdF9wdXQoZGV2X3By aXYpOwo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gIAo+ICAJcmV0dXJu IGVycjsKPiAtLSAKPiAyLjE1LjEKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==