From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 16/18] drm/i915/gtt: One instance of scratch page table/directory Date: Fri, 26 Jun 2015 15:05:29 +0300 Message-ID: <87mvzmptdi.fsf@gaia.fi.intel.com> References: <1435246520-14745-1-git-send-email-mika.kuoppala@intel.com> <1435246520-14745-17-git-send-email-mika.kuoppala@intel.com> <20150626091023.GZ25769@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 0A7B26EDAE for ; Fri, 26 Jun 2015 05:05:43 -0700 (PDT) In-Reply-To: <20150626091023.GZ25769@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org, miku@iki.fi List-Id: intel-gfx@lists.freedesktop.org RGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cml0ZXM6Cgo+IE9uIFRodSwgSnVuIDI1 LCAyMDE1IGF0IDA2OjM1OjE4UE0gKzAzMDAsIE1pa2EgS3VvcHBhbGEgd3JvdGU6Cj4+ICtzdGF0 aWMgaW50IHNldHVwX3NjcmF0Y2goc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4+ICt7 Cj4+ICsJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqZ2d0dF92bSA9ICZ0b19pOTE1KHZtLT5k ZXYpLT5ndHQuYmFzZTsKPj4gKwo+PiArCWlmIChpOTE1X2lzX2dndHQodm0pKQo+PiArCQlyZXR1 cm4gc2V0dXBfc2NyYXRjaF9nZ3R0KHZtKTsKPj4gKwo+PiArCXZtLT5zY3JhdGNoX3BhZ2UgPSBn Z3R0X3ZtLT5zY3JhdGNoX3BhZ2U7Cj4+ICsJdm0tPnNjcmF0Y2hfcHQgPSBnZ3R0X3ZtLT5zY3Jh dGNoX3B0Owo+PiArCXZtLT5zY3JhdGNoX3BkID0gZ2d0dF92bS0+c2NyYXRjaF9wZDsKPj4gKwo+ PiArCXJldHVybiAwOwo+PiArfQo+Cj4gVGhlIHBvaW50IG9mIGEgcHBndHQgaXMgZnVsbCBpc29s YXRpb24sIHNoYXJpbmcgdGhlIHNjcmF0Y2ggcGFnZSBkZXN0cm95cwo+IHRoYXQuIEhlbmNlIG5h Y2suIElmIHlvdSB3YW50IGEgYml0IG9mIHBvbGlzaCwgcmVuYW1pbmcgaW5pdGlhbGl6ZV9wZC9w dAo+IHRvIGluaXRpYWxpemVfc2NyYXRjaF9wZC9wdCB3b3VsZCBtYWtlIHNlbnNlIHRob3VnaCBJ IHRoaW5rLgo+IC1EYW5pZWwKCldlIGFscmVhZHkgaGF2ZSBhIHNoYXJlZCBzY3JhdGNoLiBUaGlz IGp1c3QgbWFrZXMgdGhlIHVwcGVyIGxheWVyCnN0cnVjdHVyZXMgYWxzbyBzaGFyZWQgYXMgdGhl cmUgaXMgbm8gcG9pbnQgb2YgaGF2aW5nIGlkZW50aWNhbApzY3JhdGNoIHB0IGFuZCBzY3JhdGNo IHBkIHBvaW50aW5nIHRvIHRoZSBzYW1lIHNjcmF0Y2guCgpEbyB3ZSB3YW50IHBlciBwcGd0dCBz Y3JhdGNoPyBJIGhhdmUgcGF0Y2hlcyBmb3IgdGhhdCBhbHNvLgoKLU1pa2EKCj4+ICsKPj4gK3N0 YXRpYyB2b2lkIGNoZWNrX3NjcmF0Y2hfcGFnZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSkKPj4gK3sKPj4gKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQo+PiArCQljb250YWlu ZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBiYXNlKTsKPj4gKwlpbnQgaTsKPj4gKwl1 NjQgKnZhZGRyOwo+PiArCj4+ICsJdmFkZHIgPSBrbWFwX3B4KHZtLT5zY3JhdGNoX3BhZ2UpOwo+ PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IFBBR0VfU0laRSAvIHNpemVvZih1NjQpOyBpKyspIHsK Pj4gKwkJaWYgKHZhZGRyW2ldID09IFNDUkFUQ0hfUEFHRV9NQUdJQykKPj4gKwkJCWNvbnRpbnVl Owo+PiArCj4+ICsJCURSTV9FUlJPUigiJXAgc2NyYXRjaFslZF0gPSAweCUwOGxseFxuIiwgdm0s IGksIHZhZGRyW2ldKTsKPj4gKwkJYnJlYWs7Cj4+ICsJfQo+PiArCj4+ICsJa3VubWFwX3B4KHBw Z3R0LCB2YWRkcik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGNsZWFudXBfc2NyYXRjaF9n Z3R0KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+PiArewo+PiArCWNoZWNrX3NjcmF0 Y2hfcGFnZSh2bSk7Cj4+ICsJZnJlZV9zY3JhdGNoX3BhZ2Uodm0pOwo+PiArCj4+ICsJaWYgKElO VEVMX0lORk8odm0tPmRldiktPmdlbiA8IDYpCj4+ICsJCXJldHVybjsKPj4gKwo+PiArCWZyZWVf cHQodm0tPmRldiwgdm0tPnNjcmF0Y2hfcHQpOwo+PiArCj4+ICsJaWYgKElOVEVMX0lORk8odm0t PmRldiktPmdlbiA+PSA4KQo+PiArCQlmcmVlX3BkKHZtLT5kZXYsIHZtLT5zY3JhdGNoX3BkKTsK Pj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgY2xlYW51cF9zY3JhdGNoKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtKQo+PiArewo+PiArCWlmIChpOTE1X2lzX2dndHQodm0pKQo+PiArCQlj bGVhbnVwX3NjcmF0Y2hfZ2d0dCh2bSk7Cj4+ICsKPj4gKwl2bS0+c2NyYXRjaF9wYWdlID0gTlVM TDsKPj4gKwl2bS0+c2NyYXRjaF9wdCA9IE5VTEw7Cj4+ICsJdm0tPnNjcmF0Y2hfcGQgPSBOVUxM Owo+PiArfQo+PiArCj4+ICAvKiBCcm9hZHdlbGwgUGFnZSBEaXJlY3RvcnkgUG9pbnRlciBEZXNj cmlwdG9ycyAqLwo+PiAgc3RhdGljIGludCBnZW44X3dyaXRlX3BkcChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKPj4gIAkJCSAgdW5zaWduZWQgZW50cnksCj4+IEBAIC01MjUsNyAr Njg2LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhcl9yYW5nZShzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bSwKPj4gIAl1bnNpZ25lZCBudW1fZW50cmllcyA9IGxlbmd0aCA+PiBQ QUdFX1NISUZUOwo+PiAgCXVuc2lnbmVkIGxhc3RfcHRlLCBpOwo+PiAgCj4+IC0Jc2NyYXRjaF9w dGUgPSBnZW44X3B0ZV9lbmNvZGUocHhfZG1hKHBwZ3R0LT5iYXNlLnNjcmF0Y2hfcGFnZSksCj4+ ICsJc2NyYXRjaF9wdGUgPSBnZW44X3B0ZV9lbmNvZGUocHhfZG1hKHZtLT5zY3JhdGNoX3BhZ2Up LAo+PiAgCQkJCSAgICAgIEk5MTVfQ0FDSEVfTExDLCB1c2Vfc2NyYXRjaCk7Cj4+ICAKPj4gIAl3 aGlsZSAobnVtX2VudHJpZXMpIHsKPj4gQEAgLTYwOSwxNiArNzcwLDYgQEAgc3RhdGljIHZvaWQg Z2VuOF9wcGd0dF9pbnNlcnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwK Pj4gIAkJa3VubWFwX3B4KHBwZ3R0LCBwdF92YWRkcik7Cj4+ICB9Cj4+ICAKPj4gLXN0YXRpYyB2 b2lkIGdlbjhfaW5pdGlhbGl6ZV9wZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPj4g LQkJCSAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqcGQpCj4+IC17Cj4+IC0JZ2Vu OF9wZGVfdCBzY3JhdGNoX3BkZTsKPj4gLQo+PiAtCXNjcmF0Y2hfcGRlID0gZ2VuOF9wZGVfZW5j b2RlKHB4X2RtYSh2bS0+c2NyYXRjaF9wdCksIEk5MTVfQ0FDSEVfTExDKTsKPj4gLQo+PiAtCWZp bGxfcHgodm0tPmRldiwgcGQsIHNjcmF0Y2hfcGRlKTsKPj4gLX0KPj4gLQo+PiAgc3RhdGljIHZv aWQgZ2VuOF9mcmVlX3BhZ2VfdGFibGVzKHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZCwg c3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIHsKPj4gIAlpbnQgaTsKPj4gQEAgLTY0OSw4ICs4 MDAsNyBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5MTVfYWRkcmVz c19zcGFjZSAqdm0pCj4+ICAJCWZyZWVfcGQocHBndHQtPmJhc2UuZGV2LCBwcGd0dC0+cGRwLnBh Z2VfZGlyZWN0b3J5W2ldKTsKPj4gIAl9Cj4+ICAKPj4gLQlmcmVlX3BkKHZtLT5kZXYsIHZtLT5z Y3JhdGNoX3BkKTsKPj4gLQlmcmVlX3B0KHZtLT5kZXYsIHZtLT5zY3JhdGNoX3B0KTsKPj4gKwlj bGVhbnVwX3NjcmF0Y2godm0pOwo+PiAgfQo+PiAgCj4+ICAvKioKPj4gQEAgLTkzNywxNiArMTA4 Nyw3IEBAIGVycl9vdXQ6Cj4+ICAgKi8KPj4gIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9pbml0KHN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPj4gIHsKPj4gLQlwcGd0dC0+YmFzZS5zY3JhdGNo X3B0ID0gYWxsb2NfcHQocHBndHQtPmJhc2UuZGV2KTsKPj4gLQlpZiAoSVNfRVJSKHBwZ3R0LT5i YXNlLnNjcmF0Y2hfcHQpKQo+PiAtCQlyZXR1cm4gUFRSX0VSUihwcGd0dC0+YmFzZS5zY3JhdGNo X3B0KTsKPj4gLQo+PiAtCXBwZ3R0LT5iYXNlLnNjcmF0Y2hfcGQgPSBhbGxvY19wZChwcGd0dC0+ YmFzZS5kZXYpOwo+PiAtCWlmIChJU19FUlIocHBndHQtPmJhc2Uuc2NyYXRjaF9wZCkpCj4+IC0J CXJldHVybiBQVFJfRVJSKHBwZ3R0LT5iYXNlLnNjcmF0Y2hfcGQpOwo+PiAtCj4+IC0JZ2VuOF9p bml0aWFsaXplX3B0KCZwcGd0dC0+YmFzZSwgcHBndHQtPmJhc2Uuc2NyYXRjaF9wdCk7Cj4+IC0J Z2VuOF9pbml0aWFsaXplX3BkKCZwcGd0dC0+YmFzZSwgcHBndHQtPmJhc2Uuc2NyYXRjaF9wZCk7 Cj4+ICsJaW50IHJldDsKPj4gIAo+PiAgCXBwZ3R0LT5iYXNlLnN0YXJ0ID0gMDsKPj4gIAlwcGd0 dC0+YmFzZS50b3RhbCA9IDFVTEwgPDwgMzI7Cj4+IEBAIC05NjYsNiArMTEwNywxMCBAQCBzdGF0 aWMgaW50IGdlbjhfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4+ICAK Pj4gIAlwcGd0dC0+c3dpdGNoX21tID0gZ2VuOF9tbV9zd2l0Y2g7Cj4+ICAKPj4gKwlyZXQgPSBz ZXR1cF9zY3JhdGNoKCZwcGd0dC0+YmFzZSk7Cj4+ICsJaWYgKHJldCkKPj4gKwkJcmV0dXJuIHJl dDsKPj4gKwo+PiAgCXJldHVybiAwOwo+PiAgfQo+PiAgCj4+IEBAIC0xMjcyLDE5ICsxNDE3LDYg QEAgc3RhdGljIHZvaWQgZ2VuNl9wcGd0dF9pbnNlcnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSwKPj4gIAkJa3VubWFwX3B4KHBwZ3R0LCBwdF92YWRkcik7Cj4+ICB9Cj4+ ICAKPj4gLXN0YXRpYyB2b2lkIGdlbjZfaW5pdGlhbGl6ZV9wdChzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSwKPj4gLQkJCSAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlICpwdCkKPj4g LXsKPj4gLQlnZW42X3B0ZV90IHNjcmF0Y2hfcHRlOwo+PiAtCj4+IC0JV0FSTl9PTihweF9kbWEo dm0tPnNjcmF0Y2hfcGFnZSkgPT0gMCk7Cj4+IC0KPj4gLQlzY3JhdGNoX3B0ZSA9IHZtLT5wdGVf ZW5jb2RlKHB4X2RtYSh2bS0+c2NyYXRjaF9wYWdlKSwKPj4gLQkJCQkgICAgIEk5MTVfQ0FDSEVf TExDLCB0cnVlLCAwKTsKPj4gLQo+PiAtCWZpbGwzMl9weCh2bS0+ZGV2LCBwdCwgc2NyYXRjaF9w dGUpOwo+PiAtfQo+PiAtCj4+ICBzdGF0aWMgaW50IGdlbjZfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0 IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4+ICAJCQkgICAgICAgdWludDY0X3Qgc3RhcnRfaW4s IHVpbnQ2NF90IGxlbmd0aF9pbikKPj4gIHsKPj4gQEAgLTEzODksNyArMTUyMSw3IEBAIHN0YXRp YyB2b2lkIGdlbjZfcHBndHRfY2xlYW51cChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkK Pj4gIAkJCWZyZWVfcHQocHBndHQtPmJhc2UuZGV2LCBwdCk7Cj4+ICAJfQo+PiAgCj4+IC0JZnJl ZV9wdCh2bS0+ZGV2LCB2bS0+c2NyYXRjaF9wdCk7Cj4+ICsJY2xlYW51cF9zY3JhdGNoKHZtKTsK Pj4gIH0KPj4gIAo+PiAgc3RhdGljIGludCBnZW42X3BwZ3R0X2FsbG9jYXRlX3BhZ2VfZGlyZWN0 b3JpZXMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+PiBAQCAtMTQwNCwxMSArMTUzNiwx MCBAQCBzdGF0aWMgaW50IGdlbjZfcHBndHRfYWxsb2NhdGVfcGFnZV9kaXJlY3RvcmllcyhzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4+ICAJICogc2l6ZS4gV2UgYWxsb2NhdGUgYXQgdGhl IHRvcCBvZiB0aGUgR1RUIHRvIGF2b2lkIGZyYWdtZW50YXRpb24uCj4+ICAJICovCj4+ICAJQlVH X09OKCFkcm1fbW1faW5pdGlhbGl6ZWQoJmRldl9wcml2LT5ndHQuYmFzZS5tbSkpOwo+PiAtCXBw Z3R0LT5iYXNlLnNjcmF0Y2hfcHQgPSBhbGxvY19wdChwcGd0dC0+YmFzZS5kZXYpOwo+PiAtCWlm IChJU19FUlIocHBndHQtPmJhc2Uuc2NyYXRjaF9wdCkpCj4+IC0JCXJldHVybiBQVFJfRVJSKHBw Z3R0LT5iYXNlLnNjcmF0Y2hfcHQpOwo+PiAgCj4+IC0JZ2VuNl9pbml0aWFsaXplX3B0KCZwcGd0 dC0+YmFzZSwgcHBndHQtPmJhc2Uuc2NyYXRjaF9wdCk7Cj4+ICsJcmV0ID0gc2V0dXBfc2NyYXRj aCgmcHBndHQtPmJhc2UpOwo+PiArCWlmIChyZXQpCj4+ICsJCXJldHVybiByZXQ7Cj4+ICAKPj4g IGFsbG9jOgo+PiAgCXJldCA9IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZV9nZW5lcmljKCZk ZXZfcHJpdi0+Z3R0LmJhc2UubW0sCj4+IEBAIC0xNDM5LDcgKzE1NzAsNyBAQCBhbGxvYzoKPj4g IAlyZXR1cm4gMDsKPj4gIAo+PiAgZXJyX291dDoKPj4gLQlmcmVlX3B0KHBwZ3R0LT5iYXNlLmRl diwgcHBndHQtPmJhc2Uuc2NyYXRjaF9wdCk7Cj4+ICsJY2xlYW51cF9zY3JhdGNoKCZwcGd0dC0+ YmFzZSk7Cj4+ICAJcmV0dXJuIHJldDsKPj4gIH0KPj4gIAo+PiBAQCAtMTUxMywxMCArMTY0NCw3 IEBAIHN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0 dCkKPj4gIAo+PiAgc3RhdGljIGludCBfX2h3X3BwZ3R0X2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+PiAgewo+PiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+IC0KPj4gIAlwcGd0 dC0+YmFzZS5kZXYgPSBkZXY7Cj4+IC0JcHBndHQtPmJhc2Uuc2NyYXRjaF9wYWdlID0gZGV2X3By aXYtPmd0dC5iYXNlLnNjcmF0Y2hfcGFnZTsKPj4gIAo+PiAgCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA8IDgpCj4+ICAJCXJldHVybiBnZW42X3BwZ3R0X2luaXQocHBndHQpOwo+PiBAQCAtMjEy NCw0NSArMjI1Miw2IEBAIHZvaWQgaTkxNV9nbG9iYWxfZ3R0X2NsZWFudXAoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPj4gIAl2bS0+Y2xlYW51cCh2bSk7Cj4+ICB9Cj4+ICAKPj4gLSNkZWZpbmUg U0NSQVRDSF9QQUdFX01BR0lDIDB4ZmZmZjAwZmZmZmZmMDBmZlVMTAo+PiAtCj4+IC1zdGF0aWMg aW50IGFsbG9jX3NjcmF0Y2hfcGFnZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPj4g LXsKPj4gLQlzdHJ1Y3QgaTkxNV9wYWdlX3NjcmF0Y2ggKnNwOwo+PiAtCWludCByZXQ7Cj4+IC0K Pj4gLQlXQVJOX09OKHZtLT5zY3JhdGNoX3BhZ2UpOwo+PiAtCj4+IC0Jc3AgPSBremFsbG9jKHNp emVvZigqc3ApLCBHRlBfS0VSTkVMKTsKPj4gLQlpZiAoc3AgPT0gTlVMTCkKPj4gLQkJcmV0dXJu IC1FTk9NRU07Cj4+IC0KPj4gLQlyZXQgPSBfX3NldHVwX3BhZ2VfZG1hKHZtLT5kZXYsIHB4X2Jh c2Uoc3ApLCBHRlBfRE1BMzIgfCBfX0dGUF9aRVJPKTsKPj4gLQlpZiAocmV0KSB7Cj4+IC0JCWtm cmVlKHNwKTsKPj4gLQkJcmV0dXJuIHJldDsKPj4gLQl9Cj4+IC0KPj4gLQlmaWxsX3B4KHZtLT5k ZXYsIHNwLCBTQ1JBVENIX1BBR0VfTUFHSUMpOwo+PiAtCXNldF9wYWdlc191YyhweF9wYWdlKHNw KSwgMSk7Cj4+IC0KPj4gLQl2bS0+c2NyYXRjaF9wYWdlID0gc3A7Cj4+IC0KPj4gLQlyZXR1cm4g MDsKPj4gLX0KPj4gLQo+PiAtc3RhdGljIHZvaWQgZnJlZV9zY3JhdGNoX3BhZ2Uoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4+IC17Cj4+IC0Jc3RydWN0IGk5MTVfcGFnZV9zY3JhdGNo ICpzcCA9IHZtLT5zY3JhdGNoX3BhZ2U7Cj4+IC0KPj4gLQlzZXRfcGFnZXNfd2IocHhfcGFnZShz cCksIDEpOwo+PiAtCj4+IC0JY2xlYW51cF9weCh2bS0+ZGV2LCBzcCk7Cj4+IC0Ja2ZyZWUoc3Ap Owo+PiAtCj4+IC0Jdm0tPnNjcmF0Y2hfcGFnZSA9IE5VTEw7Cj4+IC19Cj4+IC0KPj4gIHN0YXRp YyB1bnNpZ25lZCBpbnQgZ2VuNl9nZXRfdG90YWxfZ3R0X3NpemUodTE2IHNuYl9nbWNoX2N0bCkK Pj4gIHsKPj4gIAlzbmJfZ21jaF9jdGwgPj49IFNOQl9HTUNIX0dHTVNfU0hJRlQ7Cj4+IEBAIC0y MjQ2LDcgKzIzMzUsNiBAQCBzdGF0aWMgaW50IGdndHRfcHJvYmVfY29tbW9uKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4+ICB7Cj4+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gIAlwaHlzX2FkZHJfdCBndHRfcGh5c19hZGRyOwo+PiAt CWludCByZXQ7Cj4+ICAKPj4gIAkvKiBGb3IgTW9kZXJuIEdFTnMgdGhlIFBURXMgYW5kIHJlZ2lz dGVyIHNwYWNlIGFyZSBzcGxpdCBpbiB0aGUgQkFSICovCj4+ICAJZ3R0X3BoeXNfYWRkciA9IHBj aV9yZXNvdXJjZV9zdGFydChkZXYtPnBkZXYsIDApICsKPj4gQEAgLTIyNjgsMTQgKzIzNTYsNyBA QCBzdGF0aWMgaW50IGdndHRfcHJvYmVfY29tbW9uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ ICAJCXJldHVybiAtRU5PTUVNOwo+PiAgCX0KPj4gIAo+PiAtCXJldCA9IGFsbG9jX3NjcmF0Y2hf cGFnZSgmZGV2X3ByaXYtPmd0dC5iYXNlKTsKPj4gLQlpZiAocmV0KSB7Cj4+IC0JCURSTV9FUlJP UigiU2NyYXRjaCBzZXR1cCBmYWlsZWRcbiIpOwo+PiAtCQkvKiBpb3VubWFwIHdpbGwgYWxzbyBn ZXQgY2FsbGVkIGF0IHJlbW92ZSwgYnV0IG1laCAqLwo+PiAtCQlpb3VubWFwKGRldl9wcml2LT5n dHQuZ3NtKTsKPj4gLQl9Cj4+IC0KPj4gLQlyZXR1cm4gcmV0Owo+PiArCXJldHVybiBzZXR1cF9z Y3JhdGNoKCZkZXZfcHJpdi0+Z3R0LmJhc2UpOwo+PiAgfQo+PiAgCj4+ICAvKiBUaGUgR0dUVCBh bmQgUFBHVFQgbmVlZCBhIHByaXZhdGUgUFBBVCBzZXR1cCBpbiBvcmRlciB0byBoYW5kbGUgY2Fj aGVhYmlsaXR5Cj4+IEBAIC0yNDQ3LDcgKzI1MjgsNyBAQCBzdGF0aWMgdm9pZCBnZW42X2dtY2hf cmVtb3ZlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+PiAgCXN0cnVjdCBpOTE1X2d0 dCAqZ3R0ID0gY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9ndHQsIGJhc2UpOwo+PiAgCj4+ ICAJaW91bm1hcChndHQtPmdzbSk7Cj4+IC0JZnJlZV9zY3JhdGNoX3BhZ2Uodm0pOwo+PiArCWNs ZWFudXBfc2NyYXRjaCh2bSk7Cj4+ICB9Cj4+ICAKPj4gIHN0YXRpYyBpbnQgaTkxNV9nbWNoX3By b2JlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+IC0tIAo+PiAxLjkuMQo+PiAKPj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPgo+IC0tIAo+ IERhbmllbCBWZXR0ZXIKPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiBo dHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=