From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 4/8] drm/i915: Allocate a common scratch page Date: Mon, 03 Dec 2018 17:28:22 +0200 Message-ID: <87o9a2eijt.fsf@gaia.fi.intel.com> References: <20181203113701.12106-1-chris@chris-wilson.co.uk> <20181203113701.12106-4-chris@chris-wilson.co.uk> 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 ESMTPS id C5BFE890D3 for ; Mon, 3 Dec 2018 15:29:30 +0000 (UTC) In-Reply-To: <20181203113701.12106-4-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+IHdyaXRlczoKCj4gQ3VycmVu dGx5IHdlIGFsbG9jYXRlIGEgc2NyYXRjaCBwYWdlIGZvciBlYWNoIGVuZ2luZSwgYnV0IHNpbmNl IHdlIG9ubHkKPiBldmVyIHdyaXRlIGludG8gaXQgZm9yIHBvc3Qtc3luYyBvcGVyYXRpb25zLCBp dCBpcyBub3QgZXhwb3NlZCB0bwo+IHVzZXJzcGFjZSBub3IgZG8gd2UgY2FyZSBmb3IgY29oZXJl bmN5LiBBcyB3ZSB0aGVuIGRvIG5vdCBjYXJlIGFib3V0IGl0cwo+IGNvbnRlbnRzLCB3ZSBjYW4g dXNlIG9uZSBwYWdlIGZvciBhbGwsIHJlZHVjaW5nIG91ciBhbGxvY2F0aW9ucyBhbmQKPiBhdm9p ZCBjb21wbGljYXRpb25zIGJ5IG5vdCBhc3N1bWluZyBwZXItZW5naW5lIGlzb2xhdGlvbi4KPgo+ IEZvciBsYXRlciB1c2UsIGl0IHNpbXBsaWZpZXMgZW5naW5lIGluaXRpYWxpc2F0aW9uIChieSBy ZW1vdmluZyB0aGUKPiBhbGxvY2F0aW9uIHRoYXQgcmVxdWlyZWQgc3RydWN0X211dGV4ISkgYW5k IG1lYW5zIHRoYXQgd2UgY2FuIGFsd2F5cyByZWx5Cj4gb24gdGhlcmUgYmVpbmcgYSBzY3JhdGNo IHBhZ2UuCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNv bi5jby51az4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgIDcgKysr Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgfCA1MCArKysrKysr KysrKysrKysrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICB8 IDQyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYyAgICAgICAgfCAxNyArKystLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jIHwgMzMgKysrKystLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgNSAtLS0KPiAgNyBmaWxlcyBjaGFuZ2VkLCA3MSBpbnNl cnRpb25zKCspLCA4NSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGlu ZGV4IGQ0NTQ3NTI4NzEzMC4uMGVjNjVjYzQ4YjVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gQEAgLTE5OTYsNiArMTk5Niw4IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAg CQlzdHJ1Y3QgZGVsYXllZF93b3JrIGlkbGVfd29yazsKPiAgCj4gIAkJa3RpbWVfdCBsYXN0X2lu aXRfdGltZTsKPiArCj4gKwkJc3RydWN0IGk5MTVfdm1hICpzY3JhdGNoOwo+ICAJfSBndDsKPiAg Cj4gIAkvKiBwZXJmb3JtIFBIWSBzdGF0ZSBzYW5pdHkgY2hlY2tzPyAqLwo+IEBAIC0zNzI0LDQg KzM3MjYsOSBAQCBzdGF0aWMgaW5saW5lIGludCBpbnRlbF9od3NfY3NiX3dyaXRlX2luZGV4KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJCXJldHVybiBJOTE1X0hXU19DU0JfV1JJ VEVfSU5ERVg7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbmxpbmUgdTMyIGk5MTVfc2NyYXRjaF9vZmZz ZXQoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCXJldHVybiBp OTE1X2dndHRfb2Zmc2V0KGk5MTUtPmd0LnNjcmF0Y2gpOwo+ICt9Cj4gKwo+ICAjZW5kaWYKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCA4MzQyNDBhOWIyNjIuLmNjYTQyODVlMzMyOSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC01NDk1LDYgKzU0OTUsNDQgQEAgc3Rh dGljIGludCBfX2ludGVsX2VuZ2luZXNfcmVjb3JkX2RlZmF1bHRzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQo+ICAJZ290byBvdXRfY3R4Owo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50Cj4g K2k5MTVfZ2VtX2luaXRfc2NyYXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5z aWduZWQgaW50IHNpemUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArCWludCByZXQ7Cj4gKwo+ICsJb2JqID0gaTkx NV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oaTkxNSwgc2l6ZSk7Cj4gKwlpZiAoIW9iaikKPiAr CQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKGk5MTUsIHNpemUpOwo+ICsJ aWYgKElTX0VSUihvYmopKSB7Cj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgc2Ny YXRjaCBwYWdlXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihvYmopOwo+ICsJfQo+ICsKPiArCXZt YSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJmk5MTUtPmdndHQudm0sIE5VTEwpOwo+ICsJaWYg KElTX0VSUih2bWEpKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUih2bWEpOwo+ICsJCWdvdG8gZXJyX3Vu cmVmOwo+ICsJfQo+ICsKPiArCXJldCA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIFBJTl9HTE9C QUwgfCBQSU5fSElHSCk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyX3VucmVmOwo+ICsKPiAr CWk5MTUtPmd0LnNjcmF0Y2ggPSB2bWE7Cj4gKwlyZXR1cm4gMDsKPiArCj4gK2Vycl91bnJlZjoK PiArCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIGk5MTVfZ2VtX2Zpbmlfc2NyYXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiArewo+ICsJaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmk5MTUtPmd0LnNj cmF0Y2gsIDApOwo+ICt9Cj4gKwo+ICBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCWludCByZXQ7Cj4gQEAgLTU1NDEsMTIgKzU1Nzks MTkgQEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJCWdvdG8gZXJyX3VubG9jazsKPiAgCX0KPiAgCj4gLQlyZXQgPSBpOTE1X2dlbV9jb250 ZXh0c19pbml0KGRldl9wcml2KTsKPiArCXJldCA9IGk5MTVfZ2VtX2luaXRfc2NyYXRjaChkZXZf cHJpdiwKPiArCQkJCSAgICBJU19HRU4yKGRldl9wcml2KSA/IFNaXzI1NksgOiBQQUdFX1NJWkUp Owo+ICAJaWYgKHJldCkgewo+ICAJCUdFTV9CVUdfT04ocmV0ID09IC1FSU8pOwo+ICAJCWdvdG8g ZXJyX2dndHQ7Cj4gIAl9Cj4gIAo+ICsJcmV0ID0gaTkxNV9nZW1fY29udGV4dHNfaW5pdChkZXZf cHJpdik7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJR0VNX0JVR19PTihyZXQgPT0gLUVJTyk7Cj4gKwkJ Z290byBlcnJfc2NyYXRjaDsKPiArCX0KPiArCj4gIAlyZXQgPSBpbnRlbF9lbmdpbmVzX2luaXQo ZGV2X3ByaXYpOwo+ICAJaWYgKHJldCkgewo+ICAJCUdFTV9CVUdfT04ocmV0ID09IC1FSU8pOwo+ IEBAIC01NjE5LDYgKzU2NjQsOCBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIGVycl9jb250ZXh0Ogo+ICAJaWYgKHJldCAhPSAtRUlPKQo+ ICAJCWk5MTVfZ2VtX2NvbnRleHRzX2ZpbmkoZGV2X3ByaXYpOwo+ICtlcnJfc2NyYXRjaDoKPiAr CWk5MTVfZ2VtX2Zpbmlfc2NyYXRjaChkZXZfcHJpdik7Cj4gIGVycl9nZ3R0Ogo+ICBlcnJfdW5s b2NrOgo+ICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9B TEwpOwo+IEBAIC01NjcwLDYgKzU3MTcsNyBAQCB2b2lkIGk5MTVfZ2VtX2Zpbmkoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaW50ZWxfdWNfZmluaShkZXZfcHJpdik7Cj4g IAlpOTE1X2dlbV9jbGVhbnVwX2VuZ2luZXMoZGV2X3ByaXYpOwo+ICAJaTkxNV9nZW1fY29udGV4 dHNfZmluaShkZXZfcHJpdik7Cj4gKwlpOTE1X2dlbV9maW5pX3NjcmF0Y2goZGV2X3ByaXYpOwo+ ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAo+ICAJaW50 ZWxfY2xlYW51cF9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ncHVfZXJyb3IuYwo+IGluZGV4IGE2ODg1YTU5NTY4Yi4uMDc0NjUxMjNjMTY2IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gQEAgLTE1NzEsNyArMTU3MSw3IEBA IHN0YXRpYyB2b2lkIGdlbV9yZWNvcmRfcmluZ3Moc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJv cikKPiAgCQkJaWYgKEhBU19CUk9LRU5fQ1NfVExCKGk5MTUpKQo+ICAJCQkJZWUtPndhX2JhdGNo YnVmZmVyID0KPiAgCQkJCQlpOTE1X2Vycm9yX29iamVjdF9jcmVhdGUoaTkxNSwKPiAtCQkJCQkJ CQkgZW5naW5lLT5zY3JhdGNoKTsKPiArCQkJCQkJCQkgaTkxNS0+Z3Quc2NyYXRjaCk7Cj4gIAkJ CXJlcXVlc3RfcmVjb3JkX3VzZXJfYm8ocmVxdWVzdCwgZWUpOwo+ICAKPiAgCQkJZWUtPmN0eCA9 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBpbmRleCA3NTljMGZkNThm OGMuLjIzOTA5ODUzODRkNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9j cy5jCj4gQEAgLTQ5Myw0NiArNDkzLDYgQEAgdm9pZCBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9u KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCWludGVsX2VuZ2luZV9pbml0X2Nt ZF9wYXJzZXIoZW5naW5lKTsKPiAgfQo+ICAKPiAtaW50IGludGVsX2VuZ2luZV9jcmVhdGVfc2Ny YXRjaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gLQkJCQl1bnNpZ25lZCBpbnQg c2l6ZSkKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAtCXN0cnVj dCBpOTE1X3ZtYSAqdm1hOwo+IC0JaW50IHJldDsKPiAtCj4gLQlXQVJOX09OKGVuZ2luZS0+c2Ny YXRjaCk7Cj4gLQo+IC0Jb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oZW5naW5l LT5pOTE1LCBzaXplKTsKPiAtCWlmICghb2JqKQo+IC0JCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9j cmVhdGVfaW50ZXJuYWwoZW5naW5lLT5pOTE1LCBzaXplKTsKPiAtCWlmIChJU19FUlIob2JqKSkg ewo+IC0JCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIHNjcmF0Y2ggcGFnZVxuIik7Cj4g LQkJcmV0dXJuIFBUUl9FUlIob2JqKTsKPiAtCX0KPiAtCj4gLQl2bWEgPSBpOTE1X3ZtYV9pbnN0 YW5jZShvYmosICZlbmdpbmUtPmk5MTUtPmdndHQudm0sIE5VTEwpOwo+IC0JaWYgKElTX0VSUih2 bWEpKSB7Cj4gLQkJcmV0ID0gUFRSX0VSUih2bWEpOwo+IC0JCWdvdG8gZXJyX3VucmVmOwo+IC0J fQo+IC0KPiAtCXJldCA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIFBJTl9HTE9CQUwgfCBQSU5f SElHSCk7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gZXJyX3VucmVmOwo+IC0KPiAtCWVuZ2luZS0+ c2NyYXRjaCA9IHZtYTsKPiAtCXJldHVybiAwOwo+IC0KPiAtZXJyX3VucmVmOgo+IC0JaTkxNV9n ZW1fb2JqZWN0X3B1dChvYmopOwo+IC0JcmV0dXJuIHJldDsKPiAtfQo+IC0KPiAtdm9pZCBpbnRl bF9lbmdpbmVfY2xlYW51cF9zY3JhdGNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAtewo+IC0JaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmVuZ2luZS0+c2NyYXRjaCwgMCk7 Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGNsZWFudXBfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICB7Cj4gIAlpZiAoSFdTX05FRURTX1BIWVNJQ0FMKGVuZ2lu ZS0+aTkxNSkpIHsKPiBAQCAtNzA3LDggKzY2Nyw2IEBAIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFu dXBfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7Cj4gIAo+IC0JaW50ZWxfZW5n aW5lX2NsZWFudXBfc2NyYXRjaChlbmdpbmUpOwo+IC0KPiAgCWNsZWFudXBfc3RhdHVzX3BhZ2Uo ZW5naW5lKTsKPiAgCj4gIAlpbnRlbF9lbmdpbmVfZmluaV9icmVhZGNydW1icyhlbmdpbmUpOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggYjU1MTFhMDU0ZjMwLi5kZTA3MGRjYTQw MzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC0xMjg2LDkgKzEyODYsMTAg QEAgc3RhdGljIGludCBleGVjbGlzdHNfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpyZXF1ZXN0KQo+ICBzdGF0aWMgdTMyICoKPiAgZ2VuOF9lbWl0X2ZsdXNoX2NvaGVyZW50bDNf d2Eoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgKmJhdGNoKQo+ICB7Cj4gKwkv KiBOQiBubyBvbmUgZWxzZSBpcyBhbGxvd2VkIHRvIHNjcmliYmxlIG92ZXIgc2NyYXRjaCArIDI1 NiEgKi8KPiAgCSpiYXRjaCsrID0gTUlfU1RPUkVfUkVHSVNURVJfTUVNX0dFTjggfCBNSV9TUk1f TFJNX0dMT0JBTF9HVFQ7Cj4gIAkqYmF0Y2grKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhf TDNTUUNSRUc0KTsKPiAtCSpiYXRjaCsrID0gaTkxNV9nZ3R0X29mZnNldChlbmdpbmUtPnNjcmF0 Y2gpICsgMjU2Owo+ICsJKmJhdGNoKysgPSBpOTE1X3NjcmF0Y2hfb2Zmc2V0KGVuZ2luZS0+aTkx NSkgKyAyNTY7Cj4gIAkqYmF0Y2grKyA9IDA7Cj4gIAo+ICAJKmJhdGNoKysgPSBNSV9MT0FEX1JF R0lTVEVSX0lNTSgxKTsKPiBAQCAtMTMwMiw3ICsxMzAzLDcgQEAgZ2VuOF9lbWl0X2ZsdXNoX2Nv aGVyZW50bDNfd2Eoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgKmJhdGNoKQo+ ICAKPiAgCSpiYXRjaCsrID0gTUlfTE9BRF9SRUdJU1RFUl9NRU1fR0VOOCB8IE1JX1NSTV9MUk1f R0xPQkFMX0dUVDsKPiAgCSpiYXRjaCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9MM1NR Q1JFRzQpOwo+IC0JKmJhdGNoKysgPSBpOTE1X2dndHRfb2Zmc2V0KGVuZ2luZS0+c2NyYXRjaCkg KyAyNTY7Cj4gKwkqYmF0Y2grKyA9IGk5MTVfc2NyYXRjaF9vZmZzZXQoZW5naW5lLT5pOTE1KSAr IDI1NjsKPiAgCSpiYXRjaCsrID0gMDsKPiAgCj4gIAlyZXR1cm4gYmF0Y2g7Cj4gQEAgLTEzMzks NyArMTM0MCw3IEBAIHN0YXRpYyB1MzIgKmdlbjhfaW5pdF9pbmRpcmVjdGN0eF9iYihzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiAqYmF0Y2gpCj4gIAkJCQkgICAgICAgUElQRV9D T05UUk9MX0dMT0JBTF9HVFRfSVZCIHwKPiAgCQkJCSAgICAgICBQSVBFX0NPTlRST0xfQ1NfU1RB TEwgfAo+ICAJCQkJICAgICAgIFBJUEVfQ09OVFJPTF9RV19XUklURSwKPiAtCQkJCSAgICAgICBp OTE1X2dndHRfb2Zmc2V0KGVuZ2luZS0+c2NyYXRjaCkgKwo+ICsJCQkJICAgICAgIGk5MTVfc2Ny YXRjaF9vZmZzZXQoZW5naW5lLT5pOTE1KSArCj4gIAkJCQkgICAgICAgMiAqIENBQ0hFTElORV9C WVRFUyk7Cj4gIAo+ICAJKmJhdGNoKysgPSBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0VOQUJMRTsK PiBAQCAtMTk2OSw3ICsxOTcwLDcgQEAgc3RhdGljIGludCBnZW44X2VtaXRfZmx1c2hfcmVuZGVy KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKPiAgCXUzMiBzY3JhdGNoX2FkZHIgPQo+ IC0JCWk5MTVfZ2d0dF9vZmZzZXQoZW5naW5lLT5zY3JhdGNoKSArIDIgKiBDQUNIRUxJTkVfQllU RVM7Cj4gKwkJaTkxNV9zY3JhdGNoX29mZnNldChlbmdpbmUtPmk5MTUpICsgMiAqIENBQ0hFTElO RV9CWVRFUzsKPiAgCWJvb2wgdmZfZmx1c2hfd2EgPSBmYWxzZSwgZGNfZmx1c2hfd2EgPSBmYWxz ZTsKPiAgCXUzMiAqY3MsIGZsYWdzID0gMDsKPiAgCWludCBsZW47Cj4gQEAgLTIzMDYsMTAgKzIz MDcsNiBAQCBpbnQgbG9naWNhbF9yZW5kZXJfcmluZ19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlyZXQgPSBp bnRlbF9lbmdpbmVfY3JlYXRlX3NjcmF0Y2goZW5naW5lLCBQQUdFX1NJWkUpOwo+IC0JaWYgKHJl dCkKPiAtCQlnb3RvIGVycl9jbGVhbnVwX2NvbW1vbjsKPiAtCj4gIAlyZXQgPSBpbnRlbF9pbml0 X3dvcmthcm91bmRfYmIoZW5naW5lKTsKPiAgCWlmIChyZXQpIHsKPiAgCQkvKgo+IEBAIC0yMzIy LDEwICsyMzE5LDYgQEAgaW50IGxvZ2ljYWxfcmVuZGVyX3JpbmdfaW5pdChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gIAl9Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gLQo+IC1lcnJfY2xl YW51cF9jb21tb246Cj4gLQlpbnRlbF9lbmdpbmVfY2xlYW51cF9jb21tb24oZW5naW5lKTsKPiAt CXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gIGludCBsb2dpY2FsX3hjc19yaW5nX2luaXQoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMKPiBpbmRleCA4MWIxMGQ4NWI3MzguLmEzZDMxMjZhMzkzOCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtMTUwLDggKzE1MCw3IEBAIGdl bjRfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBtb2RlKQo+ ICAJICovCj4gIAlpZiAobW9kZSAmIEVNSVRfSU5WQUxJREFURSkgewo+ICAJCSpjcysrID0gR0ZY X09QX1BJUEVfQ09OVFJPTCg0KSB8IFBJUEVfQ09OVFJPTF9RV19XUklURTsKPiAtCQkqY3MrKyA9 IGk5MTVfZ2d0dF9vZmZzZXQocnEtPmVuZ2luZS0+c2NyYXRjaCkgfAo+IC0JCQlQSVBFX0NPTlRS T0xfR0xPQkFMX0dUVDsKPiArCQkqY3MrKyA9IGk5MTVfc2NyYXRjaF9vZmZzZXQocnEtPmk5MTUp IHwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFQ7Cj4gIAkJKmNzKysgPSAwOwo+ICAJCSpjcysrID0g MDsKPiAgCj4gQEAgLTE1OSw4ICsxNTgsNyBAQCBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgbW9kZSkKPiAgCQkJKmNzKysgPSBNSV9GTFVTSDsKPiAg Cj4gIAkJKmNzKysgPSBHRlhfT1BfUElQRV9DT05UUk9MKDQpIHwgUElQRV9DT05UUk9MX1FXX1dS SVRFOwo+IC0JCSpjcysrID0gaTkxNV9nZ3R0X29mZnNldChycS0+ZW5naW5lLT5zY3JhdGNoKSB8 Cj4gLQkJCVBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUOwo+ICsJCSpjcysrID0gaTkxNV9zY3JhdGNo X29mZnNldChycS0+aTkxNSkgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVDsKPiAgCQkqY3MrKyA9 IDA7Cj4gIAkJKmNzKysgPSAwOwo+ICAJfQo+IEBAIC0yMTIsOCArMjEwLDcgQEAgZ2VuNF9yZW5k ZXJfcmluZ19mbHVzaChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyIG1vZGUpCj4gIHN0YXRp YyBpbnQKPiAgaW50ZWxfZW1pdF9wb3N0X3N5bmNfbm9uemVyb19mbHVzaChzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSkKPiAgewo+IC0JdTMyIHNjcmF0Y2hfYWRkciA9Cj4gLQkJaTkxNV9nZ3R0X29m ZnNldChycS0+ZW5naW5lLT5zY3JhdGNoKSArIDIgKiBDQUNIRUxJTkVfQllURVM7Cj4gKwl1MzIg c2NyYXRjaF9hZGRyID0gaTkxNV9zY3JhdGNoX29mZnNldChycS0+aTkxNSkgKyAyICogQ0FDSEVM SU5FX0JZVEVTOwo+ICAJdTMyICpjczsKPiAgCj4gIAljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEs IDYpOwo+IEBAIC0yNDYsOCArMjQzLDcgQEAgaW50ZWxfZW1pdF9wb3N0X3N5bmNfbm9uemVyb19m bHVzaChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgc3RhdGljIGludAo+ICBnZW42X3JlbmRl cl9yaW5nX2ZsdXNoKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgbW9kZSkKPiAgewo+IC0J dTMyIHNjcmF0Y2hfYWRkciA9Cj4gLQkJaTkxNV9nZ3R0X29mZnNldChycS0+ZW5naW5lLT5zY3Jh dGNoKSArIDIgKiBDQUNIRUxJTkVfQllURVM7Cj4gKwl1MzIgc2NyYXRjaF9hZGRyID0gaTkxNV9z Y3JhdGNoX29mZnNldChycS0+aTkxNSkgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwo+ICAJdTMyICpj cywgZmxhZ3MgPSAwOwo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTMxNiw4ICszMTIsNyBAQCBnZW43 X3JlbmRlcl9yaW5nX2NzX3N0YWxsX3dhKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICBzdGF0 aWMgaW50Cj4gIGdlbjdfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs IHUzMiBtb2RlKQo+ICB7Cj4gLQl1MzIgc2NyYXRjaF9hZGRyID0KPiAtCQlpOTE1X2dndHRfb2Zm c2V0KHJxLT5lbmdpbmUtPnNjcmF0Y2gpICsgMiAqIENBQ0hFTElORV9CWVRFUzsKPiArCXUzMiBz Y3JhdGNoX2FkZHIgPSBpOTE1X3NjcmF0Y2hfb2Zmc2V0KHJxLT5pOTE1KSArIDIgKiBDQUNIRUxJ TkVfQllURVM7Cj4gIAl1MzIgKmNzLCBmbGFncyA9IDA7Cj4gIAo+ICAJLyoKPiBAQCAtMTAwMiw3 ICs5OTcsNyBAQCBpODMwX2VtaXRfYmJfc3RhcnQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4g IAkJICAgdTY0IG9mZnNldCwgdTMyIGxlbiwKPiAgCQkgICB1bnNpZ25lZCBpbnQgZGlzcGF0Y2hf ZmxhZ3MpCj4gIHsKPiAtCXUzMiAqY3MsIGNzX29mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQocnEt PmVuZ2luZS0+c2NyYXRjaCk7Cj4gKwl1MzIgKmNzLCBjc19vZmZzZXQgPSBpOTE1X3NjcmF0Y2hf b2Zmc2V0KHJxLT5pOTE1KTsKPiAgCj4gIAljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIDYpOwo+ ICAJaWYgKElTX0VSUihjcykpCj4gQEAgLTE0NTksNyArMTQ1NCw2IEBAIHN0YXRpYyBpbnQgaW50 ZWxfaW5pdF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIHsK PiAgCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZTsKPiAgCXN0cnVjdCBpbnRlbF9yaW5n ICpyaW5nOwo+IC0JdW5zaWduZWQgaW50IHNpemU7Cj4gIAlpbnQgZXJyOwo+ICAKPiAgCWludGVs X2VuZ2luZV9zZXR1cF9jb21tb24oZW5naW5lKTsKPiBAQCAtMTQ4NCwyMSArMTQ3OCwxMiBAQCBz dGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAJR0VNX0JVR19PTihlbmdpbmUtPmJ1ZmZlcik7Cj4gIAllbmdpbmUtPmJ1ZmZl ciA9IHJpbmc7Cj4gIAo+IC0Jc2l6ZSA9IFBBR0VfU0laRTsKPiAtCWlmIChIQVNfQlJPS0VOX0NT X1RMQihlbmdpbmUtPmk5MTUpKQo+IC0JCXNpemUgPSBJODMwX1dBX1NJWkU7CgpIbW0sIHRoaXMg ZGlzYXBwZWFyZWQuIEkgZG9uJ3Qga25vdyB0aGlzIHdhIGRldGFpbHMKYnV0IGFwcGFyZW50bHkg d2UgZG8gbmVlZCAyIHBhZ2VzIGZvciB0aGlzIGtpbmQgb2YKbWFjaGluZXMuCgotTWlrYQoKPiAt CWVyciA9IGludGVsX2VuZ2luZV9jcmVhdGVfc2NyYXRjaChlbmdpbmUsIHNpemUpOwo+IC0JaWYg KGVycikKPiAtCQlnb3RvIGVycl91bnBpbjsKPiAtCj4gIAllcnIgPSBpbnRlbF9lbmdpbmVfaW5p dF9jb21tb24oZW5naW5lKTsKPiAgCWlmIChlcnIpCj4gLQkJZ290byBlcnJfc2NyYXRjaDsKPiAr CQlnb3RvIGVycl91bnBpbjsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgCj4gLWVycl9zY3JhdGNoOgo+ IC0JaW50ZWxfZW5naW5lX2NsZWFudXBfc2NyYXRjaChlbmdpbmUpOwo+ICBlcnJfdW5waW46Cj4g IAlpbnRlbF9yaW5nX3VucGluKHJpbmcpOwo+ICBlcnJfcmluZzoKPiBAQCAtMTU3Miw3ICsxNTU3 LDcgQEAgc3RhdGljIGludCBmbHVzaF9wZF9kaXIoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4g IAkvKiBTdGFsbCB1bnRpbCB0aGUgcGFnZSB0YWJsZSBsb2FkIGlzIGNvbXBsZXRlICovCj4gIAkq Y3MrKyA9IE1JX1NUT1JFX1JFR0lTVEVSX01FTSB8IE1JX1NSTV9MUk1fR0xPQkFMX0dUVDsKPiAg CSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19QUF9ESVJfQkFTRShlbmdpbmUpKTsK PiAtCSpjcysrID0gaTkxNV9nZ3R0X29mZnNldChlbmdpbmUtPnNjcmF0Y2gpOwo+ICsJKmNzKysg PSBpOTE1X3NjcmF0Y2hfb2Zmc2V0KHJxLT5pOTE1KTsKPiAgCSpjcysrID0gTUlfTk9PUDsKPiAg Cj4gIAlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKPiBAQCAtMTY4MSw3ICsxNjY2LDcgQEAg c3RhdGljIGlubGluZSBpbnQgbWlfc2V0X2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs IHUzMiBmbGFncykKPiAgCQkJLyogSW5zZXJ0IGEgZGVsYXkgYmVmb3JlIHRoZSBuZXh0IHN3aXRj aCEgKi8KPiAgCQkJKmNzKysgPSBNSV9TVE9SRV9SRUdJU1RFUl9NRU0gfCBNSV9TUk1fTFJNX0dM T0JBTF9HVFQ7Cj4gIAkJCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQobGFzdF9yZWcpOwo+ IC0JCQkqY3MrKyA9IGk5MTVfZ2d0dF9vZmZzZXQoZW5naW5lLT5zY3JhdGNoKTsKPiArCQkJKmNz KysgPSBpOTE1X3NjcmF0Y2hfb2Zmc2V0KHJxLT5pOTE1KTsKPiAgCQkJKmNzKysgPSBNSV9OT09Q Owo+ICAJCX0KPiAgCQkqY3MrKyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRleCA4YTIyNzBiMjA5YjAu Ljk3MGZiNWMwNWMzNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKPiBAQCAtNDUxLDcgKzQ1MSw2IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+ICAKPiAg CXN0cnVjdCBpbnRlbF9od19zdGF0dXNfcGFnZSBzdGF0dXNfcGFnZTsKPiAgCXN0cnVjdCBpOTE1 X2N0eF93b3JrYXJvdW5kcyB3YV9jdHg7Cj4gLQlzdHJ1Y3QgaTkxNV92bWEgKnNjcmF0Y2g7Cj4g IAo+ICAJdTMyICAgICAgICAgICAgIGlycV9rZWVwX21hc2s7IC8qIGFsd2F5cyBrZWVwIHRoZXNl IGludGVycnVwdHMgKi8KPiAgCXUzMgkJaXJxX2VuYWJsZV9tYXNrOyAvKiBiaXRtYXNrIHRvIGVu YWJsZSByaW5nIGludGVycnVwdCAqLwo+IEBAIC05MDgsMTAgKzkwNyw2IEBAIHZvaWQgaW50ZWxf ZW5naW5lX3NldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICBp bnQgaW50ZWxfZW5naW5lX2luaXRfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSk7Cj4gIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSk7Cj4gIAo+IC1pbnQgaW50ZWxfZW5naW5lX2NyZWF0ZV9zY3JhdGNoKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAtCQkJCXVuc2lnbmVkIGludCBzaXplKTsK PiAtdm9pZCBpbnRlbF9lbmdpbmVfY2xlYW51cF9zY3JhdGNoKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSk7Cj4gLQo+ICBpbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmluZ19idWZmZXIoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgaW50IGludGVsX2luaXRfYnNkX3Jpbmdf YnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gIGludCBpbnRlbF9pbml0 X2JsdF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+IC0tIAo+ IDIuMjAuMC5yYzEKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==