From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 01/10] drm/i915: Disable preemption and sleeping while using the punit sideband Date: Tue, 23 Apr 2019 19:49:14 +0300 Message-ID: <20190423164914.GY1747@intel.com> References: <20190419171402.30596-1-chris@chris-wilson.co.uk> <20190419171402.30596-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 10BE689219 for ; Tue, 23 Apr 2019 16:49:28 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190419171402.30596-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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBBcHIgMTksIDIwMTkgYXQgMDY6MTM6NTNQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFdoaWxlIHdlIHRhbGsgdG8gdGhlIHB1bml0IG92ZXIgaXRzIHNpZGViYW5kLCB3ZSBu ZWVkIHRvIHByZXZlbnQgdGhlIGNwdQo+IGZyb20gc2xlZXBpbmcgaW4gb3JkZXIgdG8gcHJldmVu dCBhIHBvdGVudGlhbCBtYWNoaW5lIGhhbmcuCj4gCj4gTm90ZSB0aGF0IGJ5IGl0c2VsZiwgaXQg YXBwZWFycyB0aGF0IHBtX3Fvc191cGRhdGVfcmVxdWVzdCAodmlhCj4gaW50ZWxfaWRsZSkgZG9l c24ndCBwcm92aWRlIGEgc3VmZmljaWVudCBiYXJyaWVyIHRvIGVuc3VyZSB0aGF0IGFsbCBjb3Jl Cj4gYXJlIGluZGVlZCBhd2FrZSAob3V0IG9mIENzdGF0ZSkgYW5kIHRoYXQgdGhlIHBhY2thZ2Ug aXMgYXdha2UuIFRvIGRvIHNvLAo+IHdlIG5lZWQgdG8gc3VwcGxlbWVudCB0aGUgcG1fcW9zIHdp dGggYSBtYW51YWwgcGluZyBvbl9lYWNoX2NwdS4KPiAKPiB2MjogUmVzdHJpY3QgdGhlIGhlYXZ5 LXdlaWdodCB3YWtldXAgdG8ganVzdCB0aGUgSVNPRl9QT1JUX1BVTklULCB0aGVyZQo+IGlzIGlu c3VmZmljaWVudCBldmlkZW5jZSB0byBpbXBsaWNhdGUgYSB3aWRlciBwcm9ibGVtIGF0bS4gU2lt aWxhcmx5LAo+IHJlc3RyaWN0IHRoZSB3L2EgdG8gVmFsbGV5dmlldywgYXMgQ2hlcnJ5dmlldyBk b2Vzbid0IGhhdmUgYW4gYW5ncnkgY2FkcmUKPiBvZiB1c2Vycy4KPiAKPiBUaGUgd29ya2luZyB0 aGVvcnksIGNvdXJ0ZXN5IG9mIFZpbGxlIGFuZCBIYW5zLCBpcyB0aGUgaXNzdWUgbGllcyB3aXRo aW4KPiB0aGUgcG93ZXIgZGVsaXZlcnkgYW5kIHNvIGlzIGxpa2VseSB0byBiZSB1bml0IGFuZCBi b2FyZCBzcGVjaWZpYyBhbmQKPiBvY2N1cnMgd2hlbiBib3RoIHRoZSB1bml0L2Z3IHJlcXVpcmUg ZXh0cmEgcG93ZXIgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUKPiBjcHUgcGFja2FnZSBpcyBjaGFu Z2luZyBpdHMgb3duIHBvd2VyIHN0YXRlLgo+IAo+IFJlZmVyZW5jZXM6IGh0dHBzOi8vYnVnemls bGEua2VybmVsLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MDUxCj4gUmVmZXJlbmNlczogaHR0cHM6 Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNjU3Cj4gUmVmZXJlbmNl czogaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUyNTUKPiBT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBD YzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IEhh bnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+Cj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8 dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMgICAgICAgfCAgIDYgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJh bmQuYyB8IDIwMyArKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQs IDEzOSBpbnNlcnRpb25zKCspLCA3MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKPiBpbmRleCA1ZTJhZTIzMDA0NTQuLjllNjU3YTA0MTBjMiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwo+IEBAIC04ODQsNiArODg0LDkgQEAgc3RhdGljIGludCBpOTE1X2RyaXZl cl9pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCW11dGV4 X2luaXQoJmRldl9wcml2LT5iYWNrbGlnaHRfbG9jayk7Cj4gIAo+ICAJbXV0ZXhfaW5pdCgmZGV2 X3ByaXYtPnNiX2xvY2spOwo+ICsJcG1fcW9zX2FkZF9yZXF1ZXN0KCZkZXZfcHJpdi0+c2JfcW9z LAo+ICsJCQkgICBQTV9RT1NfQ1BVX0RNQV9MQVRFTkNZLCBQTV9RT1NfREVGQVVMVF9WQUxVRSk7 Cj4gKwo+ICAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPmF2X211dGV4KTsKPiAgCW11dGV4X2luaXQo JmRldl9wcml2LT53bS53bV9tdXRleCk7Cj4gIAltdXRleF9pbml0KCZkZXZfcHJpdi0+cHBzX211 dGV4KTsKPiBAQCAtOTQzLDYgKzk0Niw5IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX2NsZWFu dXBfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaTkxNV9nZW1f Y2xlYW51cF9lYXJseShkZXZfcHJpdik7Cj4gIAlpOTE1X3dvcmtxdWV1ZXNfY2xlYW51cChkZXZf cHJpdik7Cj4gIAlpOTE1X2VuZ2luZXNfY2xlYW51cChkZXZfcHJpdik7Cj4gKwo+ICsJcG1fcW9z X3JlbW92ZV9yZXF1ZXN0KCZkZXZfcHJpdi0+c2JfcW9zKTsKPiArCW11dGV4X2Rlc3Ryb3koJmRl dl9wcml2LT5zYl9sb2NrKTsKPiAgfQo+ICAKPiAgLyoqCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gaW5kZXggNzE2MTJlN2ZjOGJjLi5hZmI5NzlmZjQxNmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiBAQCAtMTU2MSw2ICsxNTYxLDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg ewo+ICAKPiAgCS8qIFNpZGViYW5kIG1haWxib3ggcHJvdGVjdGlvbiAqLwo+ICAJc3RydWN0IG11 dGV4IHNiX2xvY2s7Cj4gKwlzdHJ1Y3QgcG1fcW9zX3JlcXVlc3Qgc2JfcW9zOwoKU2hvdWxkIHdl IGNhbGwgaXQgcHVuaXRfcW9zIG1heWJlPwoKSSdtIGEgYml0IHNhZCB0byBhbGwgdGhlIGNvbXBs ZXhpdHkgZm9yIHRoaXMsIGJ1dCBubyBvbmUgaGFzIGNvbWUgdXAKd2l0aCBhIHdheSB0byByZWFs bHkgZml4IGl0IHNvIEkgZ3Vlc3Mgd2UganVzdCBoYXZlIHRvIHN3YWxsb3cgdGhpcy4KClJldmll d2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgoK PiAgCj4gIAkvKiogQ2FjaGVkIHZhbHVlIG9mIElNUiB0byBhdm9pZCByZWFkcyBpbiB1cGRhdGlu ZyB0aGUgYml0ZmllbGQgKi8KPiAgCXVuaW9uIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Np ZGViYW5kLmMKPiBpbmRleCA1N2RlNDFiMWY5ODkuLmZjODkxMzQ2MTYyMiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYwo+IEBAIC0yMiw2ICsyMiw4IEBACj4gICAqCj4g ICAqLwo+ICAKPiArI2luY2x1ZGUgPGFzbS9pb3NmX21iaS5oPgo+ICsKPiAgI2luY2x1ZGUgImk5 MTVfZHJ2LmgiCj4gICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiAgCj4gQEAgLTM5LDE5ICs0MSw1 MCBAQAo+ICAvKiBQcml2YXRlIHJlZ2lzdGVyIHdyaXRlLCBkb3VibGUtd29yZCBhZGRyZXNzaW5n LCBub24tcG9zdGVkICovCj4gICNkZWZpbmUgU0JfQ1JXUkRBX05QCTB4MDcKPiAgCj4gLXN0YXRp YyBpbnQgdmx2X3NpZGViYW5kX3J3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg dTMyIGRldmZuLAo+IC0JCQkgICB1MzIgcG9ydCwgdTMyIG9wY29kZSwgdTMyIGFkZHIsIHUzMiAq dmFsKQo+ICtzdGF0aWMgdm9pZCBwaW5nKHZvaWQgKmluZm8pCj4gIHsKPiAtCXUzMiBjbWQsIGJl ID0gMHhmLCBiYXIgPSAwOwo+IC0JYm9vbCBpc19yZWFkID0gKG9wY29kZSA9PSBTQl9NUkRfTlAg fHwgb3Bjb2RlID09IFNCX0NSUkREQV9OUCk7Cj4gK30KPiAgCj4gLQljbWQgPSAoZGV2Zm4gPDwg SU9TRl9ERVZGTl9TSElGVCkgfCAob3Bjb2RlIDw8IElPU0ZfT1BDT0RFX1NISUZUKSB8Cj4gLQkJ KHBvcnQgPDwgSU9TRl9QT1JUX1NISUZUKSB8IChiZSA8PCBJT1NGX0JZVEVfRU5BQkxFU19TSElG VCkgfAo+IC0JCShiYXIgPDwgSU9TRl9CQVJfU0hJRlQpOwo+ICtzdGF0aWMgdm9pZCBfX3Zsdl9w dW5pdF9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCWlvc2ZfbWJp X3B1bml0X2FjcXVpcmUoKTsKPiAgCj4gLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9w cml2LT5zYl9sb2NrKSk7Cj4gKwkvKgo+ICsJICogUHJldmVudCB0aGUgY3B1IGZyb20gc2xlZXBp bmcgd2hpbGUgd2UgdXNlIHRoaXMgc2lkZWJhbmQsIG90aGVyd2lzZQo+ICsJICogdGhlIHB1bml0 IG1heSBjYXVzZSBhIG1hY2hpbmUgaGFuZy4gVGhlIGlzc3VlIGFwcGVhcnMgdG8gYmUgaXNvbGF0 ZWQKPiArCSAqIHdpdGggY2hhbmdpbmcgdGhlIHBvd2VyIHN0YXRlIG9mIHRoZSBDUFUgcGFja2Fn ZSB3aGlsZSBjaGFuZ2luZwo+ICsJICogdGhlIHBvd2VyIHN0YXRlIHZpYSB0aGUgcHVuaXQsIGFu ZCB3ZSBoYXZlIG9ubHkgb2JzZXJ2ZWQgaXQKPiArCSAqIHJlbGlhYmx5IG9uIDQtY29yZSBCYXl0 YWlsIHN5c3RlbXMgc3VnZ2VzdGluZyB0aGUgaXNzdWUgaXMgaW4gdGhlCj4gKwkgKiBwb3dlciBk ZWxpdmVyeSBtZWNoYW5pc20gYW5kIGxpa2VseSB0byBiZSBiZSBib2FyZC9mdW5jdGlvbgo+ICsJ ICogc3BlY2lmaWMuIEhlbmNlIHdlIHByZXN1bWUgdGhlIHdvcmthcm91bmQgbmVlZHMgb25seSBi ZSBhcHBsaWVkCj4gKwkgKiB0byB0aGUgVmFsbGV5dmlldyBQLXVuaXQgYW5kIG5vdCBhbGwgc2lk ZWJhbmQgY29tbXVuaWNhdGlvbnMuCj4gKwkgKi8KPiArCWlmIChJU19WQUxMRVlWSUVXKGk5MTUp KSB7Cj4gKwkJcG1fcW9zX3VwZGF0ZV9yZXF1ZXN0KCZpOTE1LT5zYl9xb3MsIDApOwo+ICsJCW9u X2VhY2hfY3B1KHBpbmcsIE5VTEwsIDEpOwo+ICsJfQo+ICt9Cj4gIAo+IC0JaWYgKGludGVsX3dh aXRfZm9yX3JlZ2lzdGVyKCZkZXZfcHJpdi0+dW5jb3JlLAo+ICtzdGF0aWMgdm9pZCBfX3Zsdl9w dW5pdF9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCWlmIChJU19W QUxMRVlWSUVXKGk5MTUpKQo+ICsJCXBtX3Fvc191cGRhdGVfcmVxdWVzdCgmaTkxNS0+c2JfcW9z LCBQTV9RT1NfREVGQVVMVF9WQUxVRSk7Cj4gKwo+ICsJaW9zZl9tYmlfcHVuaXRfcmVsZWFzZSgp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwKPiArCQkJICAgdTMyIGRldmZuLCB1MzIgcG9ydCwgdTMyIG9wY29kZSwK PiArCQkJICAgdTMyIGFkZHIsIHUzMiAqdmFsKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5jb3Jl ICp1bmNvcmUgPSAmaTkxNS0+dW5jb3JlOwo+ICsJY29uc3QgYm9vbCBpc19yZWFkID0gKG9wY29k ZSA9PSBTQl9NUkRfTlAgfHwgb3Bjb2RlID09IFNCX0NSUkREQV9OUCk7Cj4gKwlpbnQgZXJyOwo+ ICsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPnNiX2xvY2spOwo+ICsKPiArCS8qIEZs dXNoIHRoZSBwcmV2aW91cyBjb21tcywganVzdCBpbiBjYXNlIGl0IGZhaWxlZCBsYXN0IHRpbWUu ICovCj4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIodW5jb3JlLAo+ICAJCQkJICAgIFZM Vl9JT1NGX0RPT1JCRUxMX1JFUSwgSU9TRl9TQl9CVVNZLCAwLAo+ICAJCQkJICAgIDUpKSB7Cj4g IAkJRFJNX0RFQlVHX0RSSVZFUigiSU9TRiBzaWRlYmFuZCBpZGxlIHdhaXQgKCVzKSB0aW1lZCBv dXRcbiIsCj4gQEAgLTU5LDEzMSArOTIsMTU2IEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGRldmZuLAo+ICAJCXJldHVy biAtRUFHQUlOOwo+ICAJfQo+ICAKPiAtCUk5MTVfV1JJVEUoVkxWX0lPU0ZfQUREUiwgYWRkcik7 Cj4gLQlJOTE1X1dSSVRFKFZMVl9JT1NGX0RBVEEsIGlzX3JlYWQgPyAwIDogKnZhbCk7Cj4gLQlJ OTE1X1dSSVRFKFZMVl9JT1NGX0RPT1JCRUxMX1JFUSwgY21kKTsKPiAtCj4gLQlpZiAoaW50ZWxf d2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNvcmUsCj4gLQkJCQkgICAgVkxWX0lPU0Zf RE9PUkJFTExfUkVRLCBJT1NGX1NCX0JVU1ksIDAsCj4gLQkJCQkgICAgNSkpIHsKPiArCXByZWVt cHRfZGlzYWJsZSgpOwo+ICsKPiArCWludGVsX3VuY29yZV93cml0ZV9mdyh1bmNvcmUsIFZMVl9J T1NGX0FERFIsIGFkZHIpOwo+ICsJaW50ZWxfdW5jb3JlX3dyaXRlX2Z3KHVuY29yZSwgVkxWX0lP U0ZfREFUQSwgaXNfcmVhZCA/IDAgOiAqdmFsKTsKPiArCWludGVsX3VuY29yZV93cml0ZV9mdyh1 bmNvcmUsIFZMVl9JT1NGX0RPT1JCRUxMX1JFUSwKPiArCQkJICAgICAgKGRldmZuIDw8IElPU0Zf REVWRk5fU0hJRlQpIHwKPiArCQkJICAgICAgKG9wY29kZSA8PCBJT1NGX09QQ09ERV9TSElGVCkg fAo+ICsJCQkgICAgICAocG9ydCA8PCBJT1NGX1BPUlRfU0hJRlQpIHwKPiArCQkJICAgICAgKDB4 ZiA8PCBJT1NGX0JZVEVfRU5BQkxFU19TSElGVCkgfAo+ICsJCQkgICAgICAoMCA8PCBJT1NGX0JB Ul9TSElGVCkgfAo+ICsJCQkgICAgICBJT1NGX1NCX0JVU1kpOwo+ICsKPiArCWlmIChfX2ludGVs X3dhaXRfZm9yX3JlZ2lzdGVyX2Z3KHVuY29yZSwKPiArCQkJCQkgVkxWX0lPU0ZfRE9PUkJFTExf UkVRLCBJT1NGX1NCX0JVU1ksIDAsCj4gKwkJCQkJIDEwMDAwLCAwLCBOVUxMKSA9PSAwKSB7Cj4g KwkJaWYgKGlzX3JlYWQpCj4gKwkJCSp2YWwgPSBpbnRlbF91bmNvcmVfcmVhZF9mdyh1bmNvcmUs IFZMVl9JT1NGX0RBVEEpOwo+ICsJCWVyciA9IDA7Cj4gKwl9IGVsc2Ugewo+ICAJCURSTV9ERUJV R19EUklWRVIoIklPU0Ygc2lkZWJhbmQgZmluaXNoIHdhaXQgKCVzKSB0aW1lZCBvdXRcbiIsCj4g IAkJCQkgaXNfcmVhZCA/ICJyZWFkIiA6ICJ3cml0ZSIpOwo+IC0JCXJldHVybiAtRVRJTUVET1VU Owo+ICsJCWVyciA9IC1FVElNRURPVVQ7Cj4gIAl9Cj4gIAo+IC0JaWYgKGlzX3JlYWQpCj4gLQkJ KnZhbCA9IEk5MTVfUkVBRChWTFZfSU9TRl9EQVRBKTsKPiArCXByZWVtcHRfZW5hYmxlKCk7Cj4g IAo+IC0JcmV0dXJuIDA7Cj4gKwlyZXR1cm4gZXJyOwo+ICB9Cj4gIAo+IC11MzIgdmx2X3B1bml0 X3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkcikKPiArdTMy IHZsdl9wdW5pdF9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgYWRkcikK PiAgewo+ICAJdTMyIHZhbCA9IDA7Cj4gIAo+IC0JV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZk ZXZfcHJpdi0+cGN1X2xvY2spKTsKPiArCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmaTkxNS0+ cGN1X2xvY2spKTsKPiArCj4gKwltdXRleF9sb2NrKCZpOTE1LT5zYl9sb2NrKTsKPiArCV9fdmx2 X3B1bml0X2dldChpOTE1KTsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7 Cj4gLQl2bHZfc2lkZWJhbmRfcncoZGV2X3ByaXYsIFBDSV9ERVZGTigwLCAwKSwgSU9TRl9QT1JU X1BVTklULAo+ICsJdmx2X3NpZGViYW5kX3J3KGk5MTUsIFBDSV9ERVZGTigwLCAwKSwgSU9TRl9Q T1JUX1BVTklULAo+ICAJCQlTQl9DUlJEREFfTlAsIGFkZHIsICZ2YWwpOwo+IC0JbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwo+ICsJX192bHZfcHVuaXRfcHV0KGk5MTUpOwo+ ICsJbXV0ZXhfdW5sb2NrKCZpOTE1LT5zYl9sb2NrKTsKPiAgCj4gIAlyZXR1cm4gdmFsOwo+ICB9 Cj4gIAo+IC1pbnQgdmx2X3B1bml0X3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgdTMyIGFkZHIsIHUzMiB2YWwpCj4gK2ludCB2bHZfcHVuaXRfd3JpdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUzMiBhZGRyLCB1MzIgdmFsKQo+ICB7Cj4gIAlpbnQgZXJy Owo+ICAKPiAtCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnBjdV9sb2NrKSk7 Cj4gKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmk5MTUtPnBjdV9sb2NrKSk7Cj4gIAo+IC0J bXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+IC0JZXJyID0gdmx2X3NpZGViYW5kX3J3 KGRldl9wcml2LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9SVF9QVU5JVCwKPiArCW11dGV4X2xv Y2soJmk5MTUtPnNiX2xvY2spOwo+ICsJX192bHZfcHVuaXRfZ2V0KGk5MTUpOwo+ICsKPiArCWVy ciA9IHZsdl9zaWRlYmFuZF9ydyhpOTE1LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9SVF9QVU5J VCwKPiAgCQkJICAgICAgU0JfQ1JXUkRBX05QLCBhZGRyLCAmdmFsKTsKPiAtCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsKPiArCV9fdmx2X3B1bml0X3B1dChpOTE1KTsKPiAr CW11dGV4X3VubG9jaygmaTkxNS0+c2JfbG9jayk7Cj4gIAo+ICAJcmV0dXJuIGVycjsKPiAgfQo+ ICAKPiAtdTMyIHZsdl9idW5pdF9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgdTMyIHJlZykKPiArdTMyIHZsdl9idW5pdF9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LCB1MzIgcmVnKQo+ICB7Cj4gIAl1MzIgdmFsID0gMDsKPiAgCj4gLQl2bHZfc2lkZWJh bmRfcncoZGV2X3ByaXYsIFBDSV9ERVZGTigwLCAwKSwgSU9TRl9QT1JUX0JVTklULAo+ICsJdmx2 X3NpZGViYW5kX3J3KGk5MTUsIFBDSV9ERVZGTigwLCAwKSwgSU9TRl9QT1JUX0JVTklULAo+ICAJ CQlTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7Cj4gIAo+ICAJcmV0dXJuIHZhbDsKPiAgfQo+ICAK PiAtdm9pZCB2bHZfYnVuaXRfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCB1MzIgcmVnLCB1MzIgdmFsKQo+ICt2b2lkIHZsdl9idW5pdF93cml0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHJlZywgdTMyIHZhbCkKPiAgewo+IC0Jdmx2X3NpZGViYW5k X3J3KGRldl9wcml2LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9SVF9CVU5JVCwKPiArCXZsdl9z aWRlYmFuZF9ydyhpOTE1LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9SVF9CVU5JVCwKPiAgCQkJ U0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOwo+ICB9Cj4gIAo+IC11MzIgdmx2X25jX3JlYWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCBhZGRyKQo+ICt1MzIgdmx2X25jX3Jl YWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4IGFkZHIpCj4gIHsKPiAgCXUzMiB2 YWwgPSAwOwo+ICAKPiAtCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnBjdV9s b2NrKSk7Cj4gKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmk5MTUtPnBjdV9sb2NrKSk7Cj4g IAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+IC0Jdmx2X3NpZGViYW5kX3J3 KGRldl9wcml2LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9SVF9OQywKPiArCW11dGV4X2xvY2so Jmk5MTUtPnNiX2xvY2spOwo+ICsJdmx2X3NpZGViYW5kX3J3KGk5MTUsIFBDSV9ERVZGTigwLCAw KSwgSU9TRl9QT1JUX05DLAo+ICAJCQlTQl9DUlJEREFfTlAsIGFkZHIsICZ2YWwpOwo+IC0JbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwltdXRleF91bmxvY2soJmk5MTUtPnNi X2xvY2spOwo+ICAKPiAgCXJldHVybiB2YWw7Cj4gIH0KPiAgCj4gLXUzMiB2bHZfaW9zZl9zYl9y ZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggcG9ydCwgdTMyIHJlZykK PiArdTMyIHZsdl9pb3NmX3NiX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4 IHBvcnQsIHUzMiByZWcpCj4gIHsKPiAgCXUzMiB2YWwgPSAwOwo+IC0Jdmx2X3NpZGViYW5kX3J3 KGRldl9wcml2LCBQQ0lfREVWRk4oMCwgMCksIHBvcnQsCj4gKwo+ICsJdmx2X3NpZGViYW5kX3J3 KGk5MTUsIFBDSV9ERVZGTigwLCAwKSwgcG9ydCwKPiAgCQkJU0JfQ1JSRERBX05QLCByZWcsICZ2 YWwpOwo+ICsKPiAgCXJldHVybiB2YWw7Cj4gIH0KPiAgCj4gLXZvaWQgdmx2X2lvc2Zfc2Jfd3Jp dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICt2b2lkIHZsdl9pb3NmX3Ni X3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAJCSAgICAgICB1OCBwb3J0 LCB1MzIgcmVnLCB1MzIgdmFsKQo+ICB7Cj4gLQl2bHZfc2lkZWJhbmRfcncoZGV2X3ByaXYsIFBD SV9ERVZGTigwLCAwKSwgcG9ydCwKPiArCXZsdl9zaWRlYmFuZF9ydyhpOTE1LCBQQ0lfREVWRk4o MCwgMCksIHBvcnQsCj4gIAkJCVNCX0NSV1JEQV9OUCwgcmVnLCAmdmFsKTsKPiAgfQo+ICAKPiAt dTMyIHZsdl9jY2tfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBy ZWcpCj4gK3UzMiB2bHZfY2NrX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUz MiByZWcpCj4gIHsKPiAgCXUzMiB2YWwgPSAwOwo+IC0Jdmx2X3NpZGViYW5kX3J3KGRldl9wcml2 LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9SVF9DQ0ssCj4gKwo+ICsJdmx2X3NpZGViYW5kX3J3 KGk5MTUsIFBDSV9ERVZGTigwLCAwKSwgSU9TRl9QT1JUX0NDSywKPiAgCQkJU0JfQ1JSRERBX05Q LCByZWcsICZ2YWwpOwo+ICsKPiAgCXJldHVybiB2YWw7Cj4gIH0KPiAgCj4gLXZvaWQgdmx2X2Nj a193cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiByZWcsIHUzMiB2 YWwpCj4gK3ZvaWQgdmx2X2Nja193cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwg dTMyIHJlZywgdTMyIHZhbCkKPiAgewo+IC0Jdmx2X3NpZGViYW5kX3J3KGRldl9wcml2LCBQQ0lf REVWRk4oMCwgMCksIElPU0ZfUE9SVF9DQ0ssCj4gKwl2bHZfc2lkZWJhbmRfcncoaTkxNSwgUENJ X0RFVkZOKDAsIDApLCBJT1NGX1BPUlRfQ0NLLAo+ICAJCQlTQl9DUldSREFfTlAsIHJlZywgJnZh bCk7Cj4gIH0KPiAgCj4gLXUzMiB2bHZfY2N1X3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCB1MzIgcmVnKQo+ICt1MzIgdmx2X2NjdV9yZWFkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LCB1MzIgcmVnKQo+ICB7Cj4gIAl1MzIgdmFsID0gMDsKPiAtCXZsdl9zaWRl YmFuZF9ydyhkZXZfcHJpdiwgUENJX0RFVkZOKDAsIDApLCBJT1NGX1BPUlRfQ0NVLAo+ICsKPiAr CXZsdl9zaWRlYmFuZF9ydyhpOTE1LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9SVF9DQ1UsCj4g IAkJCVNCX0NSUkREQV9OUCwgcmVnLCAmdmFsKTsKPiArCj4gIAlyZXR1cm4gdmFsOwo+ICB9Cj4g IAo+IC12b2lkIHZsdl9jY3Vfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCB1MzIgcmVnLCB1MzIgdmFsKQo+ICt2b2lkIHZsdl9jY3Vfd3JpdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsIHUzMiByZWcsIHUzMiB2YWwpCj4gIHsKPiAtCXZsdl9zaWRlYmFuZF9y dyhkZXZfcHJpdiwgUENJX0RFVkZOKDAsIDApLCBJT1NGX1BPUlRfQ0NVLAo+ICsJdmx2X3NpZGVi YW5kX3J3KGk5MTUsIFBDSV9ERVZGTigwLCAwKSwgSU9TRl9QT1JUX0NDVSwKPiAgCQkJU0JfQ1JX UkRBX05QLCByZWcsICZ2YWwpOwo+ICB9Cj4gIAo+IC11MzIgdmx2X2RwaW9fcmVhZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlLCBpbnQgcmVnKQo+ICt1 MzIgdmx2X2RwaW9fcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgZW51bSBwaXBl IHBpcGUsIGludCByZWcpCj4gIHsKPiArCWludCBwb3J0ID0gaTkxNS0+ZHBpb19waHlfaW9zZl9w b3J0W0RQSU9fUEhZKHBpcGUpXTsKPiAgCXUzMiB2YWwgPSAwOwo+ICAKPiAtCXZsdl9zaWRlYmFu ZF9ydyhkZXZfcHJpdiwgRFBJT19ERVZGTiwgRFBJT19QSFlfSU9TRl9QT1JUKERQSU9fUEhZKHBp cGUpKSwKPiAtCQkJU0JfTVJEX05QLCByZWcsICZ2YWwpOwo+ICsJdmx2X3NpZGViYW5kX3J3KGk5 MTUsIERQSU9fREVWRk4sIHBvcnQsIFNCX01SRF9OUCwgcmVnLCAmdmFsKTsKPiAgCj4gIAkvKgo+ ICAJICogRklYTUU6IFRoZXJlIG1pZ2h0IGJlIHNvbWUgcmVnaXN0ZXJzIHdoZXJlIGFsbCAxJ3Mg aXMgYSB2YWxpZCB2YWx1ZSwKPiBAQCAtMTk1LDEwICsyNTMsMjcgQEAgdTMyIHZsdl9kcGlvX3Jl YWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSwgaW50 IHJlZykKPiAgCXJldHVybiB2YWw7Cj4gIH0KPiAgCj4gLXZvaWQgdmx2X2RwaW9fd3JpdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSwgaW50IHJlZywg dTMyIHZhbCkKPiArdm9pZCB2bHZfZHBpb193cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKPiArCQkgICAgZW51bSBwaXBlIHBpcGUsIGludCByZWcsIHUzMiB2YWwpCj4gK3sKPiAr CWludCBwb3J0ID0gaTkxNS0+ZHBpb19waHlfaW9zZl9wb3J0W0RQSU9fUEhZKHBpcGUpXTsKPiAr Cj4gKwl2bHZfc2lkZWJhbmRfcncoaTkxNSwgRFBJT19ERVZGTiwgcG9ydCwgU0JfTVdSX05QLCBy ZWcsICZ2YWwpOwo+ICt9Cj4gKwo+ICt1MzIgdmx2X2ZsaXNkc2lfcmVhZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHJlZykKPiAgewo+IC0Jdmx2X3NpZGViYW5kX3J3KGRldl9w cml2LCBEUElPX0RFVkZOLCBEUElPX1BIWV9JT1NGX1BPUlQoRFBJT19QSFkocGlwZSkpLAo+IC0J CQlTQl9NV1JfTlAsIHJlZywgJnZhbCk7Cj4gKwl1MzIgdmFsID0gMDsKPiArCj4gKwl2bHZfc2lk ZWJhbmRfcncoaTkxNSwgRFBJT19ERVZGTiwgSU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NSUkREQV9O UCwKPiArCQkJcmVnLCAmdmFsKTsKPiArCXJldHVybiB2YWw7Cj4gK30KPiArCj4gK3ZvaWQgdmx2 X2ZsaXNkc2lfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUzMiByZWcsIHUz MiB2YWwpCj4gK3sKPiArCXZsdl9zaWRlYmFuZF9ydyhpOTE1LCBEUElPX0RFVkZOLCBJT1NGX1BP UlRfRkxJU0RTSSwgU0JfQ1JXUkRBX05QLAo+ICsJCQlyZWcsICZ2YWwpOwo+ICB9Cj4gIAo+ICAv KiBTQkkgYWNjZXNzICovCj4gQEAgLTI3OSwxNyArMzU0LDMgQEAgdm9pZCBpbnRlbF9zYmlfd3Jp dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MTYgcmVnLCB1MzIgdmFsdWUs Cj4gIAkJcmV0dXJuOwo+ICAJfQo+ICB9Cj4gLQo+IC11MzIgdmx2X2ZsaXNkc2lfcmVhZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiByZWcpCj4gLXsKPiAtCXUzMiB2YWwg PSAwOwo+IC0Jdmx2X3NpZGViYW5kX3J3KGRldl9wcml2LCBEUElPX0RFVkZOLCBJT1NGX1BPUlRf RkxJU0RTSSwgU0JfQ1JSRERBX05QLAo+IC0JCQlyZWcsICZ2YWwpOwo+IC0JcmV0dXJuIHZhbDsK PiAtfQo+IC0KPiAtdm9pZCB2bHZfZmxpc2RzaV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIHUzMiByZWcsIHUzMiB2YWwpCj4gLXsKPiAtCXZsdl9zaWRlYmFuZF9ydyhk ZXZfcHJpdiwgRFBJT19ERVZGTiwgSU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NSV1JEQV9OUCwKPiAt CQkJcmVnLCAmdmFsKTsKPiAtfQo+IC0tIAo+IDIuMjAuMQoKLS0gClZpbGxlIFN5cmrDpGzDpApJ bnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=