From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 1/7] drm/i915: Allocate a common scratch page Date: Tue, 04 Dec 2018 17:07:01 +0200 Message-ID: <87in09e3fu.fsf@gaia.fi.intel.com> References: <20181204141522.13640-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2CD916E280 for ; Tue, 4 Dec 2018 15:08:10 +0000 (UTC) In-Reply-To: <20181204141522.13640-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+IHdyaXRlczoKCj4gQ3VycmVu dGx5IHdlIGFsbG9jYXRlIGEgc2NyYXRjaCBwYWdlIGZvciBlYWNoIGVuZ2luZSwgYnV0IHNpbmNl IHdlIG9ubHkKPiBldmVyIHdyaXRlIGludG8gaXQgZm9yIHBvc3Qtc3luYyBvcGVyYXRpb25zLCBp dCBpcyBub3QgZXhwb3NlZCB0bwo+IHVzZXJzcGFjZSBub3IgZG8gd2UgY2FyZSBmb3IgY29oZXJl bmN5LiBBcyB3ZSB0aGVuIGRvIG5vdCBjYXJlIGFib3V0IGl0cwo+IGNvbnRlbnRzLCB3ZSBjYW4g dXNlIG9uZSBwYWdlIGZvciBhbGwsIHJlZHVjaW5nIG91ciBhbGxvY2F0aW9ucyBhbmQKPiBhdm9p ZCBjb21wbGljYXRpb25zIGJ5IG5vdCBhc3N1bWluZyBwZXItZW5naW5lIGlzb2xhdGlvbi4KPgo+ IEZvciBsYXRlciB1c2UsIGl0IHNpbXBsaWZpZXMgZW5naW5lIGluaXRpYWxpc2F0aW9uIChieSBy ZW1vdmluZyB0aGUKPiBhbGxvY2F0aW9uIHRoYXQgcmVxdWlyZWQgc3RydWN0X211dGV4ISkgYW5k IG1lYW5zIHRoYXQgd2UgY2FuIGFsd2F5cyByZWx5Cj4gb24gdGhlcmUgYmVpbmcgYSBzY3JhdGNo IHBhZ2UuCj4KPiB2MjogQ2hlY2sgdGhhdCB3ZSBhbGxvY2F0ZWQgYSBsYXJnZSBlbm91Z2ggc2Ny YXRjaCBmb3IgSTgzMCB3L2EKPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5A aW50ZWwuY29tPgo+IENjOiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVs LmNvbT4KClJldmlld2VkLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4Lmlu dGVsLmNvbT4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAg ICB8ICA3ICsrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwg NTAgKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dwdV9lcnJvci5jICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdp bmVfY3MuYyAgfCA0MiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgMTcgKysrLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYyB8IDM3ICsrKysrKy0tLS0tLS0tLS0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgNSAtLS0KPiAgNyBmaWxlcyBjaGFu Z2VkLCA3NCBpbnNlcnRpb25zKCspLCA4NiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+IGluZGV4IDIzYTNkYzZmMzkwNy4uYzVmMDE5NjRmMGZiIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gQEAgLTE5ODMsNiArMTk4Myw4IEBAIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlIHsKPiAgCQlzdHJ1Y3QgZGVsYXllZF93b3JrIGlkbGVfd29yazsKPiAgCj4gIAkJa3Rp bWVfdCBsYXN0X2luaXRfdGltZTsKPiArCj4gKwkJc3RydWN0IGk5MTVfdm1hICpzY3JhdGNoOwo+ ICAJfSBndDsKPiAgCj4gIAkvKiBwZXJmb3JtIFBIWSBzdGF0ZSBzYW5pdHkgY2hlY2tzPyAqLwo+ IEBAIC0zNzEzLDQgKzM3MTUsOSBAQCBzdGF0aWMgaW5saW5lIGludCBpbnRlbF9od3NfY3NiX3dy aXRlX2luZGV4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJCXJldHVybiBJOTE1 X0hXU19DU0JfV1JJVEVfSU5ERVg7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbmxpbmUgdTMyIGk5MTVf c2NyYXRjaF9vZmZzZXQoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sK PiArCXJldHVybiBpOTE1X2dndHRfb2Zmc2V0KGk5MTUtPmd0LnNjcmF0Y2gpOwo+ICt9Cj4gKwo+ ICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCAzNWVjZmVhNGU5MDMuLmQz NmE5NzU1YWQ5MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC01NDk4LDYgKzU0 OTgsNDQgQEAgc3RhdGljIGludCBfX2ludGVsX2VuZ2luZXNfcmVjb3JkX2RlZmF1bHRzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJZ290byBvdXRfY3R4Owo+ICB9Cj4gIAo+ICtz dGF0aWMgaW50Cj4gK2k5MTVfZ2VtX2luaXRfc2NyYXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwgdW5zaWduZWQgaW50IHNpemUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmo7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArCWludCByZXQ7Cj4gKwo+ ICsJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oaTkxNSwgc2l6ZSk7Cj4gKwlp ZiAoIW9iaikKPiArCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKGk5MTUs IHNpemUpOwo+ICsJaWYgKElTX0VSUihvYmopKSB7Cj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8g YWxsb2NhdGUgc2NyYXRjaCBwYWdlXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihvYmopOwo+ICsJ fQo+ICsKPiArCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJmk5MTUtPmdndHQudm0sIE5V TEwpOwo+ICsJaWYgKElTX0VSUih2bWEpKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUih2bWEpOwo+ICsJ CWdvdG8gZXJyX3VucmVmOwo+ICsJfQo+ICsKPiArCXJldCA9IGk5MTVfdm1hX3Bpbih2bWEsIDAs IDAsIFBJTl9HTE9CQUwgfCBQSU5fSElHSCk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyX3Vu cmVmOwo+ICsKPiArCWk5MTUtPmd0LnNjcmF0Y2ggPSB2bWE7Cj4gKwlyZXR1cm4gMDsKPiArCj4g K2Vycl91bnJlZjoKPiArCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiArCXJldHVybiByZXQ7 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX2Zpbmlfc2NyYXRjaChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2Uo Jmk5MTUtPmd0LnNjcmF0Y2gsIDApOwo+ICt9Cj4gKwo+ICBpbnQgaTkxNV9nZW1faW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCWludCByZXQ7Cj4gQEAgLTU1 NDQsMTIgKzU1ODIsMTkgQEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAJCWdvdG8gZXJyX3VubG9jazsKPiAgCX0KPiAgCj4gLQlyZXQgPSBp OTE1X2dlbV9jb250ZXh0c19pbml0KGRldl9wcml2KTsKPiArCXJldCA9IGk5MTVfZ2VtX2luaXRf c2NyYXRjaChkZXZfcHJpdiwKPiArCQkJCSAgICBJU19HRU4yKGRldl9wcml2KSA/IFNaXzI1Nksg OiBQQUdFX1NJWkUpOwo+ICAJaWYgKHJldCkgewo+ICAJCUdFTV9CVUdfT04ocmV0ID09IC1FSU8p Owo+ICAJCWdvdG8gZXJyX2dndHQ7Cj4gIAl9Cj4gIAo+ICsJcmV0ID0gaTkxNV9nZW1fY29udGV4 dHNfaW5pdChkZXZfcHJpdik7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJR0VNX0JVR19PTihyZXQgPT0g LUVJTyk7Cj4gKwkJZ290byBlcnJfc2NyYXRjaDsKPiArCX0KPiArCj4gIAlyZXQgPSBpbnRlbF9l bmdpbmVzX2luaXQoZGV2X3ByaXYpOwo+ICAJaWYgKHJldCkgewo+ICAJCUdFTV9CVUdfT04ocmV0 ID09IC1FSU8pOwo+IEBAIC01NjIyLDYgKzU2NjcsOCBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIGVycl9jb250ZXh0Ogo+ICAJaWYgKHJl dCAhPSAtRUlPKQo+ICAJCWk5MTVfZ2VtX2NvbnRleHRzX2ZpbmkoZGV2X3ByaXYpOwo+ICtlcnJf c2NyYXRjaDoKPiArCWk5MTVfZ2VtX2Zpbmlfc2NyYXRjaChkZXZfcHJpdik7Cj4gIGVycl9nZ3R0 Ogo+ICBlcnJfdW5sb2NrOgo+ICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYs IEZPUkNFV0FLRV9BTEwpOwo+IEBAIC01NjczLDYgKzU3MjAsNyBAQCB2b2lkIGk5MTVfZ2VtX2Zp bmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaW50ZWxfdWNfZmluaShk ZXZfcHJpdik7Cj4gIAlpOTE1X2dlbV9jbGVhbnVwX2VuZ2luZXMoZGV2X3ByaXYpOwo+ICAJaTkx NV9nZW1fY29udGV4dHNfZmluaShkZXZfcHJpdik7Cj4gKwlpOTE1X2dlbV9maW5pX3NjcmF0Y2go ZGV2X3ByaXYpOwo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 Cj4gIAo+ICAJaW50ZWxfd2FfbGlzdF9mcmVlKCZkZXZfcHJpdi0+Z3Rfd2FfbGlzdCk7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gaW5kZXggYTY4ODVhNTk1NjhiLi4wNzQ2 NTEyM2MxNjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJy b3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBAQCAt MTU3MSw3ICsxNTcxLDcgQEAgc3RhdGljIHZvaWQgZ2VtX3JlY29yZF9yaW5ncyhzdHJ1Y3QgaTkx NV9ncHVfc3RhdGUgKmVycm9yKQo+ICAJCQlpZiAoSEFTX0JST0tFTl9DU19UTEIoaTkxNSkpCj4g IAkJCQllZS0+d2FfYmF0Y2hidWZmZXIgPQo+ICAJCQkJCWk5MTVfZXJyb3Jfb2JqZWN0X2NyZWF0 ZShpOTE1LAo+IC0JCQkJCQkJCSBlbmdpbmUtPnNjcmF0Y2gpOwo+ICsJCQkJCQkJCSBpOTE1LT5n dC5zY3JhdGNoKTsKPiAgCQkJcmVxdWVzdF9yZWNvcmRfdXNlcl9ibyhyZXF1ZXN0LCBlZSk7Cj4g IAo+ICAJCQllZS0+Y3R4ID0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+ IGluZGV4IDZiNDI3YmM1MmY3OC4uYWYyODczNDAzMDA5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAtNDkzLDQ2ICs0OTMsNiBAQCB2b2lkIGludGVsX2Vu Z2luZV9zZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJaW50 ZWxfZW5naW5lX2luaXRfY21kX3BhcnNlcihlbmdpbmUpOwo+ICB9Cj4gIAo+IC1pbnQgaW50ZWxf ZW5naW5lX2NyZWF0ZV9zY3JhdGNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAt CQkJCXVuc2lnbmVkIGludCBzaXplKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOwo+IC0Jc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCVdB Uk5fT04oZW5naW5lLT5zY3JhdGNoKTsKPiAtCj4gLQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3Jl YXRlX3N0b2xlbihlbmdpbmUtPmk5MTUsIHNpemUpOwo+IC0JaWYgKCFvYmopCj4gLQkJb2JqID0g aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChlbmdpbmUtPmk5MTUsIHNpemUpOwo+IC0J aWYgKElTX0VSUihvYmopKSB7Cj4gLQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgc2Ny YXRjaCBwYWdlXG4iKTsKPiAtCQlyZXR1cm4gUFRSX0VSUihvYmopOwo+IC0JfQo+IC0KPiAtCXZt YSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJmVuZ2luZS0+aTkxNS0+Z2d0dC52bSwgTlVMTCk7 Cj4gLQlpZiAoSVNfRVJSKHZtYSkpIHsKPiAtCQlyZXQgPSBQVFJfRVJSKHZtYSk7Cj4gLQkJZ290 byBlcnJfdW5yZWY7Cj4gLQl9Cj4gLQo+IC0JcmV0ID0gaTkxNV92bWFfcGluKHZtYSwgMCwgMCwg UElOX0dMT0JBTCB8IFBJTl9ISUdIKTsKPiAtCWlmIChyZXQpCj4gLQkJZ290byBlcnJfdW5yZWY7 Cj4gLQo+IC0JZW5naW5lLT5zY3JhdGNoID0gdm1hOwo+IC0JcmV0dXJuIDA7Cj4gLQo+IC1lcnJf dW5yZWY6Cj4gLQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gLQlyZXR1cm4gcmV0Owo+IC19 Cj4gLQo+IC12b2lkIGludGVsX2VuZ2luZV9jbGVhbnVwX3NjcmF0Y2goc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+IC17Cj4gLQlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmZW5n aW5lLT5zY3JhdGNoLCAwKTsKPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQgY2xlYW51cF9zdGF0dXNf cGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIHsKPiAgCWlmIChIV1NfTkVF RFNfUEhZU0lDQUwoZW5naW5lLT5pOTE1KSkgewo+IEBAIC03MDcsOCArNjY3LDYgQEAgdm9pZCBp bnRlbF9lbmdpbmVfY2xlYW51cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsK PiAgCj4gLQlpbnRlbF9lbmdpbmVfY2xlYW51cF9zY3JhdGNoKGVuZ2luZSk7Cj4gLQo+ICAJY2xl YW51cF9zdGF0dXNfcGFnZShlbmdpbmUpOwo+ICAKPiAgCWludGVsX2VuZ2luZV9maW5pX2JyZWFk Y3J1bWJzKGVuZ2luZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCA4NzIyN2Zk OWFlNWYuLmQ3ZmEzMDFiNWVjNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAg LTEyODgsOSArMTI4OCwxMCBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19yZXF1ZXN0X2FsbG9jKHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gIHN0YXRpYyB1MzIgKgo+ICBnZW44X2VtaXRf Zmx1c2hfY29oZXJlbnRsM193YShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiAq YmF0Y2gpCj4gIHsKPiArCS8qIE5CIG5vIG9uZSBlbHNlIGlzIGFsbG93ZWQgdG8gc2NyaWJibGUg b3ZlciBzY3JhdGNoICsgMjU2ISAqLwo+ICAJKmJhdGNoKysgPSBNSV9TVE9SRV9SRUdJU1RFUl9N RU1fR0VOOCB8IE1JX1NSTV9MUk1fR0xPQkFMX0dUVDsKPiAgCSpiYXRjaCsrID0gaTkxNV9tbWlv X3JlZ19vZmZzZXQoR0VOOF9MM1NRQ1JFRzQpOwo+IC0JKmJhdGNoKysgPSBpOTE1X2dndHRfb2Zm c2V0KGVuZ2luZS0+c2NyYXRjaCkgKyAyNTY7Cj4gKwkqYmF0Y2grKyA9IGk5MTVfc2NyYXRjaF9v ZmZzZXQoZW5naW5lLT5pOTE1KSArIDI1NjsKPiAgCSpiYXRjaCsrID0gMDsKPiAgCj4gIAkqYmF0 Y2grKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOwo+IEBAIC0xMzA0LDcgKzEzMDUsNyBAQCBn ZW44X2VtaXRfZmx1c2hfY29oZXJlbnRsM193YShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsIHUzMiAqYmF0Y2gpCj4gIAo+ICAJKmJhdGNoKysgPSBNSV9MT0FEX1JFR0lTVEVSX01FTV9H RU44IHwgTUlfU1JNX0xSTV9HTE9CQUxfR1RUOwo+ICAJKmJhdGNoKysgPSBpOTE1X21taW9fcmVn X29mZnNldChHRU44X0wzU1FDUkVHNCk7Cj4gLQkqYmF0Y2grKyA9IGk5MTVfZ2d0dF9vZmZzZXQo ZW5naW5lLT5zY3JhdGNoKSArIDI1NjsKPiArCSpiYXRjaCsrID0gaTkxNV9zY3JhdGNoX29mZnNl dChlbmdpbmUtPmk5MTUpICsgMjU2Owo+ICAJKmJhdGNoKysgPSAwOwo+ICAKPiAgCXJldHVybiBi YXRjaDsKPiBAQCAtMTM0MSw3ICsxMzQyLDcgQEAgc3RhdGljIHUzMiAqZ2VuOF9pbml0X2luZGly ZWN0Y3R4X2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyICpiYXRjaCkKPiAg CQkJCSAgICAgICBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfAo+ICAJCQkJICAgICAgIFBJ UEVfQ09OVFJPTF9DU19TVEFMTCB8Cj4gIAkJCQkgICAgICAgUElQRV9DT05UUk9MX1FXX1dSSVRF LAo+IC0JCQkJICAgICAgIGk5MTVfZ2d0dF9vZmZzZXQoZW5naW5lLT5zY3JhdGNoKSArCj4gKwkJ CQkgICAgICAgaTkxNV9zY3JhdGNoX29mZnNldChlbmdpbmUtPmk5MTUpICsKPiAgCQkJCSAgICAg ICAyICogQ0FDSEVMSU5FX0JZVEVTKTsKPiAgCj4gIAkqYmF0Y2grKyA9IE1JX0FSQl9PTl9PRkYg fCBNSV9BUkJfRU5BQkxFOwo+IEBAIC0xOTczLDcgKzE5NzQsNyBAQCBzdGF0aWMgaW50IGdlbjhf ZW1pdF9mbHVzaF9yZW5kZXIoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwKPiAgewo+ICAJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxdWVzdC0+ZW5naW5lOwo+ICAJdTMy IHNjcmF0Y2hfYWRkciA9Cj4gLQkJaTkxNV9nZ3R0X29mZnNldChlbmdpbmUtPnNjcmF0Y2gpICsg MiAqIENBQ0hFTElORV9CWVRFUzsKPiArCQlpOTE1X3NjcmF0Y2hfb2Zmc2V0KGVuZ2luZS0+aTkx NSkgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwo+ICAJYm9vbCB2Zl9mbHVzaF93YSA9IGZhbHNlLCBk Y19mbHVzaF93YSA9IGZhbHNlOwo+ICAJdTMyICpjcywgZmxhZ3MgPSAwOwo+ICAJaW50IGxlbjsK PiBAQCAtMjI5MiwxMCArMjI5Myw2IEBAIGludCBsb2dpY2FsX3JlbmRlcl9yaW5nX2luaXQoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0 Owo+ICAKPiAtCXJldCA9IGludGVsX2VuZ2luZV9jcmVhdGVfc2NyYXRjaChlbmdpbmUsIFBBR0Vf U0laRSk7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gZXJyX2NsZWFudXBfY29tbW9uOwo+IC0KPiAg CXJldCA9IGludGVsX2luaXRfd29ya2Fyb3VuZF9iYihlbmdpbmUpOwo+ICAJaWYgKHJldCkgewo+ ICAJCS8qCj4gQEAgLTIzMTEsMTAgKzIzMDgsNiBAQCBpbnQgbG9naWNhbF9yZW5kZXJfcmluZ19p bml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCWludGVsX2VuZ2luZV9pbml0 X3dvcmthcm91bmRzKGVuZ2luZSk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gLQo+IC1lcnJfY2xlYW51 cF9jb21tb246Cj4gLQlpbnRlbF9lbmdpbmVfY2xlYW51cF9jb21tb24oZW5naW5lKTsKPiAtCXJl dHVybiByZXQ7Cj4gIH0KPiAgCj4gIGludCBsb2dpY2FsX3hjc19yaW5nX2luaXQoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMKPiBpbmRleCA3Zjg4ZGY1YmZmMDkuLmM1ZWIyNmE3ZWU3OSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtMTUwLDggKzE1MCw3IEBAIGdlbjRf cmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBtb2RlKQo+ICAJ ICovCj4gIAlpZiAobW9kZSAmIEVNSVRfSU5WQUxJREFURSkgewo+ICAJCSpjcysrID0gR0ZYX09Q X1BJUEVfQ09OVFJPTCg0KSB8IFBJUEVfQ09OVFJPTF9RV19XUklURTsKPiAtCQkqY3MrKyA9IGk5 MTVfZ2d0dF9vZmZzZXQocnEtPmVuZ2luZS0+c2NyYXRjaCkgfAo+IC0JCQlQSVBFX0NPTlRST0xf R0xPQkFMX0dUVDsKPiArCQkqY3MrKyA9IGk5MTVfc2NyYXRjaF9vZmZzZXQocnEtPmk5MTUpIHwg UElQRV9DT05UUk9MX0dMT0JBTF9HVFQ7Cj4gIAkJKmNzKysgPSAwOwo+ICAJCSpjcysrID0gMDsK PiAgCj4gQEAgLTE1OSw4ICsxNTgsNyBAQCBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxLCB1MzIgbW9kZSkKPiAgCQkJKmNzKysgPSBNSV9GTFVTSDsKPiAgCj4g IAkJKmNzKysgPSBHRlhfT1BfUElQRV9DT05UUk9MKDQpIHwgUElQRV9DT05UUk9MX1FXX1dSSVRF Owo+IC0JCSpjcysrID0gaTkxNV9nZ3R0X29mZnNldChycS0+ZW5naW5lLT5zY3JhdGNoKSB8Cj4g LQkJCVBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUOwo+ICsJCSpjcysrID0gaTkxNV9zY3JhdGNoX29m ZnNldChycS0+aTkxNSkgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVDsKPiAgCQkqY3MrKyA9IDA7 Cj4gIAkJKmNzKysgPSAwOwo+ICAJfQo+IEBAIC0yMTIsOCArMjEwLDcgQEAgZ2VuNF9yZW5kZXJf cmluZ19mbHVzaChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyIG1vZGUpCj4gIHN0YXRpYyBp bnQKPiAgaW50ZWxfZW1pdF9wb3N0X3N5bmNfbm9uemVyb19mbHVzaChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSkKPiAgewo+IC0JdTMyIHNjcmF0Y2hfYWRkciA9Cj4gLQkJaTkxNV9nZ3R0X29mZnNl dChycS0+ZW5naW5lLT5zY3JhdGNoKSArIDIgKiBDQUNIRUxJTkVfQllURVM7Cj4gKwl1MzIgc2Ny YXRjaF9hZGRyID0gaTkxNV9zY3JhdGNoX29mZnNldChycS0+aTkxNSkgKyAyICogQ0FDSEVMSU5F X0JZVEVTOwo+ICAJdTMyICpjczsKPiAgCj4gIAljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIDYp Owo+IEBAIC0yNDYsOCArMjQzLDcgQEAgaW50ZWxfZW1pdF9wb3N0X3N5bmNfbm9uemVyb19mbHVz aChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgc3RhdGljIGludAo+ICBnZW42X3JlbmRlcl9y aW5nX2ZsdXNoKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgbW9kZSkKPiAgewo+IC0JdTMy IHNjcmF0Y2hfYWRkciA9Cj4gLQkJaTkxNV9nZ3R0X29mZnNldChycS0+ZW5naW5lLT5zY3JhdGNo KSArIDIgKiBDQUNIRUxJTkVfQllURVM7Cj4gKwl1MzIgc2NyYXRjaF9hZGRyID0gaTkxNV9zY3Jh dGNoX29mZnNldChycS0+aTkxNSkgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwo+ICAJdTMyICpjcywg ZmxhZ3MgPSAwOwo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTMxNiw4ICszMTIsNyBAQCBnZW43X3Jl bmRlcl9yaW5nX2NzX3N0YWxsX3dhKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICBzdGF0aWMg aW50Cj4gIGdlbjdfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUz MiBtb2RlKQo+ICB7Cj4gLQl1MzIgc2NyYXRjaF9hZGRyID0KPiAtCQlpOTE1X2dndHRfb2Zmc2V0 KHJxLT5lbmdpbmUtPnNjcmF0Y2gpICsgMiAqIENBQ0hFTElORV9CWVRFUzsKPiArCXUzMiBzY3Jh dGNoX2FkZHIgPSBpOTE1X3NjcmF0Y2hfb2Zmc2V0KHJxLT5pOTE1KSArIDIgKiBDQUNIRUxJTkVf QllURVM7Cj4gIAl1MzIgKmNzLCBmbGFncyA9IDA7Cj4gIAo+ICAJLyoKPiBAQCAtOTk0LDcgKzk4 OSw3IEBAIGk5NjVfZW1pdF9iYl9zdGFydChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiAgfQo+ ICAKPiAgLyogSnVzdCB1c2Vyc3BhY2UgQUJJIGNvbnZlbnRpb24gdG8gbGltaXQgdGhlIHdhIGJh dGNoIGJvIHRvIGEgcmVzb25hYmxlIHNpemUgKi8KPiAtI2RlZmluZSBJODMwX0JBVENIX0xJTUlU ICgyNTYqMTAyNCkKPiArI2RlZmluZSBJODMwX0JBVENIX0xJTUlUIFNaXzI1NksKPiAgI2RlZmlu ZSBJODMwX1RMQl9FTlRSSUVTICgyKQo+ICAjZGVmaW5lIEk4MzBfV0FfU0laRSBtYXgoSTgzMF9U TEJfRU5UUklFUyo0MDk2LCBJODMwX0JBVENIX0xJTUlUKQo+ICBzdGF0aWMgaW50Cj4gQEAgLTEw MDIsNyArOTk3LDkgQEAgaTgzMF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx LAo+ICAJCSAgIHU2NCBvZmZzZXQsIHUzMiBsZW4sCj4gIAkJICAgdW5zaWduZWQgaW50IGRpc3Bh dGNoX2ZsYWdzKQo+ICB7Cj4gLQl1MzIgKmNzLCBjc19vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0 KHJxLT5lbmdpbmUtPnNjcmF0Y2gpOwo+ICsJdTMyICpjcywgY3Nfb2Zmc2V0ID0gaTkxNV9zY3Jh dGNoX29mZnNldChycS0+aTkxNSk7Cj4gKwo+ICsJR0VNX0JVR19PTihycS0+aTkxNS0+Z3Quc2Ny YXRjaC0+c2l6ZSA8IEk4MzBfV0FfU0laRSk7Cj4gIAo+ICAJY3MgPSBpbnRlbF9yaW5nX2JlZ2lu KHJxLCA2KTsKPiAgCWlmIChJU19FUlIoY3MpKQo+IEBAIC0xNDU5LDcgKzE0NTYsNiBAQCBzdGF0 aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+ICB7Cj4gIAlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7Cj4gIAlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZzsKPiAtCXVuc2lnbmVkIGludCBzaXplOwo+ICAJaW50IGVycjsKPiAg Cj4gIAlpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9uKGVuZ2luZSk7Cj4gQEAgLTE0ODQsMjEgKzE0 ODAsMTIgQEAgc3RhdGljIGludCBpbnRlbF9pbml0X3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgCUdFTV9CVUdfT04oZW5naW5lLT5idWZmZXIpOwo+ICAJZW5n aW5lLT5idWZmZXIgPSByaW5nOwo+ICAKPiAtCXNpemUgPSBQQUdFX1NJWkU7Cj4gLQlpZiAoSEFT X0JST0tFTl9DU19UTEIoZW5naW5lLT5pOTE1KSkKPiAtCQlzaXplID0gSTgzMF9XQV9TSVpFOwo+ IC0JZXJyID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9zY3JhdGNoKGVuZ2luZSwgc2l6ZSk7Cj4gLQlp ZiAoZXJyKQo+IC0JCWdvdG8gZXJyX3VucGluOwo+IC0KPiAgCWVyciA9IGludGVsX2VuZ2luZV9p bml0X2NvbW1vbihlbmdpbmUpOwo+ICAJaWYgKGVycikKPiAtCQlnb3RvIGVycl9zY3JhdGNoOwo+ ICsJCWdvdG8gZXJyX3VucGluOwo+ICAKPiAgCXJldHVybiAwOwo+ICAKPiAtZXJyX3NjcmF0Y2g6 Cj4gLQlpbnRlbF9lbmdpbmVfY2xlYW51cF9zY3JhdGNoKGVuZ2luZSk7Cj4gIGVycl91bnBpbjoK PiAgCWludGVsX3JpbmdfdW5waW4ocmluZyk7Cj4gIGVycl9yaW5nOgo+IEBAIC0xNTcyLDcgKzE1 NTksNyBAQCBzdGF0aWMgaW50IGZsdXNoX3BkX2RpcihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkK PiAgCS8qIFN0YWxsIHVudGlsIHRoZSBwYWdlIHRhYmxlIGxvYWQgaXMgY29tcGxldGUgKi8KPiAg CSpjcysrID0gTUlfU1RPUkVfUkVHSVNURVJfTUVNIHwgTUlfU1JNX0xSTV9HTE9CQUxfR1RUOwo+ ICAJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChSSU5HX1BQX0RJUl9CQVNFKGVuZ2luZSkp Owo+IC0JKmNzKysgPSBpOTE1X2dndHRfb2Zmc2V0KGVuZ2luZS0+c2NyYXRjaCk7Cj4gKwkqY3Mr KyA9IGk5MTVfc2NyYXRjaF9vZmZzZXQocnEtPmk5MTUpOwo+ICAJKmNzKysgPSBNSV9OT09QOwo+ ICAKPiAgCWludGVsX3JpbmdfYWR2YW5jZShycSwgY3MpOwo+IEBAIC0xNjgxLDcgKzE2NjgsNyBA QCBzdGF0aWMgaW5saW5lIGludCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSwgdTMyIGZsYWdzKQo+ICAJCQkvKiBJbnNlcnQgYSBkZWxheSBiZWZvcmUgdGhlIG5leHQgc3dp dGNoISAqLwo+ICAJCQkqY3MrKyA9IE1JX1NUT1JFX1JFR0lTVEVSX01FTSB8IE1JX1NSTV9MUk1f R0xPQkFMX0dUVDsKPiAgCQkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChsYXN0X3JlZyk7 Cj4gLQkJCSpjcysrID0gaTkxNV9nZ3R0X29mZnNldChlbmdpbmUtPnNjcmF0Y2gpOwo+ICsJCQkq Y3MrKyA9IGk5MTVfc2NyYXRjaF9vZmZzZXQocnEtPmk5MTUpOwo+ICAJCQkqY3MrKyA9IE1JX05P T1A7Cj4gIAkJfQo+ICAJCSpjcysrID0gTUlfQVJCX09OX09GRiB8IE1JX0FSQl9FTkFCTEU7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDkyN2JiMjFhMmIw Yi4uNzJlZGFhN2ZmNDExIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaAo+IEBAIC00MzksNyArNDM5LDYgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7Cj4gIAlz dHJ1Y3QgaTkxNV93YV9saXN0IGN0eF93YV9saXN0Owo+ICAJc3RydWN0IGk5MTVfd2FfbGlzdCB3 YV9saXN0Owo+ICAJc3RydWN0IGk5MTVfd2FfbGlzdCB3aGl0ZWxpc3Q7Cj4gLQlzdHJ1Y3QgaTkx NV92bWEgKnNjcmF0Y2g7Cj4gIAo+ICAJdTMyICAgICAgICAgICAgIGlycV9rZWVwX21hc2s7IC8q IGFsd2F5cyBrZWVwIHRoZXNlIGludGVycnVwdHMgKi8KPiAgCXUzMgkJaXJxX2VuYWJsZV9tYXNr OyAvKiBiaXRtYXNrIHRvIGVuYWJsZSByaW5nIGludGVycnVwdCAqLwo+IEBAIC04OTYsMTAgKzg5 NSw2IEBAIHZvaWQgaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpOwo+ICBpbnQgaW50ZWxfZW5naW5lX2luaXRfY29tbW9uKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9u KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gIAo+IC1pbnQgaW50ZWxfZW5naW5l X2NyZWF0ZV9zY3JhdGNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAtCQkJCXVu c2lnbmVkIGludCBzaXplKTsKPiAtdm9pZCBpbnRlbF9lbmdpbmVfY2xlYW51cF9zY3JhdGNoKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gLQo+ICBpbnQgaW50ZWxfaW5pdF9yZW5k ZXJfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgaW50IGlu dGVsX2luaXRfYnNkX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7 Cj4gIGludCBpbnRlbF9pbml0X2JsdF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwo+IC0tIAo+IDIuMjAuMC5yYzIKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==