From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ankitprasad Sharma Subject: Re: [PATCH 08/10] drm/i915: Support for pread/pwrite from/to non shmem backed objects Date: Thu, 18 Feb 2016 13:56:17 +0530 Message-ID: <1455783977.2500.4.camel@ankitprasad-desktop> References: <1454578211-24823-1-git-send-email-ankitprasad.r.sharma@intel.com> <1454578211-24823-9-git-send-email-ankitprasad.r.sharma@intel.com> <56BC731A.1060904@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id CB3D96E101 for ; Thu, 18 Feb 2016 08:49:02 +0000 (UTC) In-Reply-To: <56BC731A.1060904@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: intel-gfx@lists.freedesktop.org, akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org SGksCk9uIFRodSwgMjAxNi0wMi0xMSBhdCAxMTo0MCArMDAwMCwgVHZydGtvIFVyc3VsaW4gd3Jv dGU6Cj4gCj4gT24gMDQvMDIvMTYgMDk6MzAsIGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNv bSB3cm90ZToKPiA+IEZyb206IEFua2l0cHJhc2FkIFNoYXJtYSA8YW5raXRwcmFzYWQuci5zaGFy bWFAaW50ZWwuY29tPgo+ID4KPiA+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBleHRlbmRp bmcgdGhlIHByZWFkL3B3cml0ZSBmdW5jdGlvbmFsaXR5Cj4gPiBmb3Igb2JqZWN0cyBub3QgYmFj a2VkIGJ5IHNobWVtLiBUaGUgYWNjZXNzIHdpbGwgYmUgbWFkZSB0aHJvdWdoCj4gPiBndHQgaW50 ZXJmYWNlLiBUaGlzIHdpbGwgY292ZXIgb2JqZWN0cyBiYWNrZWQgYnkgc3RvbGVuIG1lbW9yeSBh cyB3ZWxsCj4gPiBhcyBvdGhlciBub24tc2htZW0gYmFja2VkIG9iamVjdHMuCj4gPgo+ID4gdjI6 IERyb3AgbG9ja3MgYXJvdW5kIHNsb3dfdXNlcl9hY2Nlc3MsIHByZWZhdWx0IHRoZSBwYWdlcyBi ZWZvcmUKPiA+IGFjY2VzcyAoQ2hyaXMpCj4gPgo+ID4gdjM6IFJlYmFzZWQgdG8gdGhlIGxhdGVz dCBkcm0taW50ZWwtbmlnaHRseSAoQW5raXQpCj4gPgo+ID4gdjQ6IE1vdmVkIHBhZ2UgYmFzZSAm IG9mZnNldCBjYWxjdWxhdGlvbnMgb3V0c2lkZSB0aGUgY29weSBsb29wLAo+ID4gY29ycmVjdGVk IGRhdGEgdHlwZXMgZm9yIHNpemUgYW5kIG9mZnNldCB2YXJpYWJsZXMsIGNvcnJlY3RlZCBpZi1l bHNlCj4gPiBicmFjZXMgZm9ybWF0IChUdnJ0a28va2VybmVsZG9jcykKPiA+Cj4gPiB2NTogRW5h YmxlZCBwcmVhZC9wd3JpdGUgZm9yIGFsbCBub24tc2htZW0gYmFja2VkIG9iamVjdHMgaW5jbHVk aW5nCj4gPiB3aXRob3V0IHRpbGluZyByZXN0cmljdGlvbnMgKEFua2l0KQo+ID4KPiA+IHY2OiBV c2luZyBwd3JpdGVfZmFzdCBmb3Igbm9uLXNobWVtIGJhY2tlZCBvYmplY3RzIGFzIHdlbGwgKENo cmlzKQo+ID4KPiA+IHY3OiBVcGRhdGVkIGNvbW1pdCBtZXNzYWdlLCBSZW5hbWVkIGk5MTVfZ2Vt X2d0dF9yZWFkIHRvIGk5MTVfZ2VtX2d0dF9jb3B5LAo+ID4gYWRkZWQgcHdyaXRlIHNsb3cgcGF0 aCBmb3Igbm9uLXNobWVtIGJhY2tlZCBvYmplY3RzIChDaHJpcy9UdnJ0a28pCj4gPgo+ID4gdjg6 IFVwZGF0ZWQgdjcgY29tbWl0IG1lc3NhZ2UsIG11dGV4IHVubG9jayBhcm91bmQgcHdyaXRlIHNs b3cgcGF0aCBmb3IKPiA+IG5vbi1zaG1lbSBiYWNrZWQgb2JqZWN0cyAoVHZydGtvKQo+ID4KPiA+ IHY5OiBDb3JyZWN0ZWQgY2hlY2sgZHVyaW5nIHByZWFkX2lvY3RsLCB0byBhdm9pZCBzaG1lbV9w cmVhZCBiZWluZwo+ID4gY2FsbGVkIGZvciBub24tc2htZW0gYmFja2VkIG9iamVjdHMgKFR2cnRr bykKPiA+Cj4gPiB2MTA6IE1vdmVkIHRoZSB3cml0ZV9kb21haW4gY2hlY2sgdG8gbmVlZHNfY2xm bHVzaCBhbmQgdGlsaW5nIG1vZGUgY2hlY2sKPiA+IHRvIHB3cml0ZV9mYXN0IChDaHJpcykKPiA+ Cj4gPiB2MTE6IFVzZSBwd3JpdGVfZmFzdCBmYWxsYmFjayBmb3IgYWxsIG9iamVjdHMgKHNobWVt IGFuZCBub24tc2htZW0gYmFja2VkKSwKPiA+IGNhbGwgZmFzdF91c2VyX3dyaXRlIHJlZ2FyZGxl c3Mgb2YgcGFnZWZhdWx0IGluIHByZXZpb3VzIGl0ZXJhdGlvbgo+ID4KPiA+IHYxMjogVXNlIHBh Z2UtYnktcGFnZSBjb3B5IGZvciBzbG93IHVzZXIgYWNjZXNzIHRvbyAoQ2hyaXMpCj4gPgo+ID4g djEzOiBIYW5kbGVkIEVGQVVMVCwgQXZvaWQgdXNlIG9mIFdBUk5fT04sIHB1dF9mZW5jZSBvbmx5 IGlmIHdob2xlIG9iago+ID4gcGlubmVkIChDaHJpcykKPiA+Cj4gPiBUZXN0Y2FzZTogaWd0L2dl bV9zdG9sZW4sIGlndC9nZW1fcHJlYWQsIGlndC9nZW1fcHdyaXRlCj4gPgo+ID4gU2lnbmVkLW9m Zi1ieTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20+ Cj4gPiAtLS0KPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyB8IDIxMSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCj4gPiAgIDEgZmlsZSBjaGFuZ2Vk LCAxNzkgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4gPiBpbmRleCBlZDhhZTVkLi40MGYyOTA2IDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+ID4gQEAgLTU1LDYgKzU1LDkgQEAgc3RhdGljIGJvb2wgY3B1X2NhY2hl X2lzX2NvaGVyZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPgo+ID4gICBzdGF0aWMgYm9v bCBjcHVfd3JpdGVfbmVlZHNfY2xmbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQo+ID4gICB7Cj4gPiArCWlmIChvYmotPmJhc2Uud3JpdGVfZG9tYWluID09IEk5MTVfR0VNX0RP TUFJTl9DUFUpCj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCj4gPiAgIAlpZiAoIWNwdV9jYWNo ZV9pc19jb2hlcmVudChvYmotPmJhc2UuZGV2LCBvYmotPmNhY2hlX2xldmVsKSkKPiA+ICAgCQly ZXR1cm4gdHJ1ZTsKPiA+Cj4gPiBAQCAtNjQ2LDYgKzY0OSwxNDEgQEAgc2htZW1fcHJlYWRfc2xv dyhzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHNobWVtX3BhZ2Vfb2Zmc2V0LCBpbnQgcGFnZV9sZW5n dGgsCj4gPiAgIAlyZXR1cm4gcmV0ID8gLSBFRkFVTFQgOiAwOwo+ID4gICB9Cj4gPgo+ID4gK3N0 YXRpYyBpbmxpbmUgdWludDY0X3QKPiA+ICtzbG93X3VzZXJfYWNjZXNzKHN0cnVjdCBpb19tYXBw aW5nICptYXBwaW5nLAo+ID4gKwkJIHVpbnQ2NF90IHBhZ2VfYmFzZSwgaW50IHBhZ2Vfb2Zmc2V0 LAo+ID4gKwkJIGNoYXIgX191c2VyICp1c2VyX2RhdGEsCj4gPiArCQkgaW50IGxlbmd0aCwgYm9v bCBwd3JpdGUpCj4gPiArewo+IAo+IFJldHVybiB0eXBlIGFuZCBsZW5ndGggc2hvdWxkIGJlIHVu c2lnbmVkIGxvbmcgdG8gbWF0Y2ggCj4gX19jb3B5X3RvL2Zyb21fdXNlciBwcm90b3R5cGVzLgo+ IAo+ID4gKwl2b2lkIF9faW9tZW0gKmlvYWRkcjsKPiA+ICsJdm9pZCAqdmFkZHI7Cj4gPiArCXVp bnQ2NF90IHVud3JpdHRlbjsKPiA+ICsKPiA+ICsJaW9hZGRyID0gaW9fbWFwcGluZ19tYXBfd2Mo bWFwcGluZywgcGFnZV9iYXNlKTsKPiA+ICsJLyogV2UgY2FuIHVzZSB0aGUgY3B1IG1lbSBjb3B5 IGZ1bmN0aW9uIGJlY2F1c2UgdGhpcyBpcyBYODYuICovCj4gPiArCXZhZGRyID0gKHZvaWQgX19m b3JjZSAqKWlvYWRkciArIHBhZ2Vfb2Zmc2V0Owo+ID4gKwlpZiAocHdyaXRlKQo+ID4gKwkJdW53 cml0dGVuID0gX19jb3B5X2Zyb21fdXNlcih2YWRkciwgdXNlcl9kYXRhLCBsZW5ndGgpOwo+ID4g KwllbHNlCj4gPiArCQl1bndyaXR0ZW4gPSBfX2NvcHlfdG9fdXNlcih1c2VyX2RhdGEsIHZhZGRy LCBsZW5ndGgpOwo+ID4gKwo+ID4gKwlpb19tYXBwaW5nX3VubWFwKGlvYWRkcik7Cj4gPiArCXJl dHVybiB1bndyaXR0ZW47Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQKPiA+ICtpOTE1X2dl bV9ndHRfcHJlYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICsJCSAgIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosIHVpbnQ2NF90IHNpemUsCj4gPiArCQkgICB1aW50NjRfdCBk YXRhX29mZnNldCwgdWludDY0X3QgZGF0YV9wdHIpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gKwlzdHJ1Y3QgZHJt X21tX25vZGUgbm9kZTsKPiA+ICsJY2hhciBfX3VzZXIgKnVzZXJfZGF0YTsKPiA+ICsJdWludDY0 X3QgcmVtYWluOwo+ID4gKwl1aW50NjRfdCBvZmZzZXQ7Cj4gPiArCWludCByZXQgPSAwOwo+IAo+ IE5vIG5lZWQgdG8gaW5pdGlhbGl6ZS4KPiAKPiA+ICsKPiA+ICsJcmV0ID0gaTkxNV9nZW1fb2Jq X2dndHRfcGluKG9iaiwgMCwgUElOX01BUFBBQkxFKTsKPiA+ICsJaWYgKHJldCkgewo+ID4gKwkJ cmV0ID0gaW5zZXJ0X21hcHBhYmxlX25vZGUoZGV2X3ByaXYsICZub2RlLCBQQUdFX1NJWkUpOwo+ ID4gKwkJaWYgKHJldCkKPiA+ICsJCQlnb3RvIG91dDsKPiA+ICsKPiA+ICsJCXJldCA9IGk5MTVf Z2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKPiA+ICsJCWlmIChyZXQpIHsKPiA+ICsJCQlyZW1v dmVfbWFwcGFibGVfbm9kZSgmbm9kZSk7Cj4gPiArCQkJZ290byBvdXQ7Cj4gPiArCQl9Cj4gPiAr Cj4gPiArCQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7Cj4gPiArCX0gZWxzZSB7Cj4g PiArCQlub2RlLnN0YXJ0ID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaik7Cj4gPiArCQlu b2RlLmFsbG9jYXRlZCA9IGZhbHNlOwo+ID4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9m ZW5jZShvYmopOwo+ID4gKwkJaWYgKHJldCkKPiA+ICsJCQlnb3RvIG91dF91bnBpbjsKPiA+ICsJ fQo+ID4gKwo+ID4gKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2Jq LCBmYWxzZSk7Cj4gPiArCWlmIChyZXQpCj4gPiArCQlnb3RvIG91dF91bnBpbjsKPiA+ICsKPiA+ ICsJdXNlcl9kYXRhID0gdG9fdXNlcl9wdHIoZGF0YV9wdHIpOwo+ID4gKwlyZW1haW4gPSBzaXpl Owo+ID4gKwlvZmZzZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArIGRhdGFfb2Zm c2V0Owo+IAo+IFRoaXMgaXMgd3JvbmcgZm9yIHRoZSBwYWdlLWJ5LXBhZ2UgKG5vIHBpbikgbW9k ZS4KPiAKPiA+ICsKPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiAr CWlmIChsaWtlbHkoIWk5MTUucHJlZmF1bHRfZGlzYWJsZSkpIHsKPiA+ICsJCXJldCA9IGZhdWx0 X2luX211bHRpcGFnZXNfd3JpdGVhYmxlKHVzZXJfZGF0YSwgcmVtYWluKTsKPiA+ICsJCWlmIChy ZXQpIHsKPiA+ICsJCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiArCQkJZ290 byBvdXRfdW5waW47Cj4gPiArCQl9Cj4gPiArCX0KPiA+ICsKPiA+ICsJd2hpbGUgKHJlbWFpbiA+ IDApIHsKPiA+ICsJCS8qIE9wZXJhdGlvbiBpbiB0aGlzIHBhZ2UKPiA+ICsJCSAqCj4gPiArCQkg KiBwYWdlX2Jhc2UgPSBwYWdlIG9mZnNldCB3aXRoaW4gYXBlcnR1cmUKPiA+ICsJCSAqIHBhZ2Vf b2Zmc2V0ID0gb2Zmc2V0IHdpdGhpbiBwYWdlCj4gPiArCQkgKiBwYWdlX2xlbmd0aCA9IGJ5dGVz IHRvIGNvcHkgZm9yIHRoaXMgcGFnZQo+ID4gKwkJICovCj4gPiArCQl1MzIgcGFnZV9iYXNlID0g bm9kZS5zdGFydDsKPiA+ICsJCXVuc2lnbmVkIHBhZ2Vfb2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2Uo b2Zmc2V0KTsKPiA+ICsJCXVuc2lnbmVkIHBhZ2VfbGVuZ3RoID0gUEFHRV9TSVpFIC0gcGFnZV9v ZmZzZXQ7Cj4gPiArCQlwYWdlX2xlbmd0aCA9IHJlbWFpbiA8IHBhZ2VfbGVuZ3RoID8gcmVtYWlu IDogcGFnZV9sZW5ndGg7Cj4gPiArCQlpZiAobm9kZS5hbGxvY2F0ZWQpIHsKPiA+ICsJCQl3bWIo KTsKPiA+ICsJCQlkZXZfcHJpdi0+Z3R0LmJhc2UuaW5zZXJ0X3BhZ2UoJmRldl9wcml2LT5ndHQu YmFzZSwKPiA+ICsJCQkJCQkgICAgICAgaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFfYWRkcmVzcyhv YmosIG9mZnNldCA+PiBQQUdFX1NISUZUKSwKPiA+ICsJCQkJCQkgICAgICAgbm9kZS5zdGFydCwK PiA+ICsJCQkJCQkgICAgICAgSTkxNV9DQUNIRV9OT05FLCAwKTsKPiA+ICsJCQl3bWIoKTsKPiA+ ICsJCX0gZWxzZSB7Cj4gPiArCQkJcGFnZV9iYXNlICs9IG9mZnNldCAmIFBBR0VfTUFTSzsKPiA+ ICsJCX0KPiA+ICsJCS8qIFRoaXMgaXMgYSBzbG93IHJlYWQvd3JpdGUgYXMgaXQgdHJpZXMgdG8g cmVhZCBmcm9tCj4gPiArCQkgKiBhbmQgd3JpdGUgdG8gdXNlciBtZW1vcnkgd2hpY2ggbWF5IHJl c3VsdCBpbnRvIHBhZ2UKPiA+ICsJCSAqIGZhdWx0cywgYW5kIHNvIHdlIGNhbm5vdCBwZXJmb3Jt IHRoaXMgdW5kZXIgc3RydWN0X211dGV4Lgo+ID4gKwkJICovCj4gPiArCQlpZiAoc2xvd191c2Vy X2FjY2VzcyhkZXZfcHJpdi0+Z3R0Lm1hcHBhYmxlLCBwYWdlX2Jhc2UsCj4gPiArCQkJCSAgICAg cGFnZV9vZmZzZXQsIHVzZXJfZGF0YSwKPiA+ICsJCQkJICAgICBwYWdlX2xlbmd0aCwgZmFsc2Up KSB7Cj4gPiArCQkJcmV0ID0gLUVGQVVMVDsKPiA+ICsJCQlicmVhazsKPiA+ICsJCX0KPiAKPiBS ZWFkIGRvZXMgbm90IHdhbnQgdG8gdHJ5IHRoZSBmYXN0IGFjY2VzcyBmaXJzdCwgZXF1aXZhbGVu dCB0byBwd3JpdGUgPwo+IAo+ID4gKwo+ID4gKwkJcmVtYWluIC09IHBhZ2VfbGVuZ3RoOwo+ID4g KwkJdXNlcl9kYXRhICs9IHBhZ2VfbGVuZ3RoOwo+ID4gKwkJb2Zmc2V0ICs9IHBhZ2VfbGVuZ3Ro Owo+ID4gKwl9Cj4gPiArCj4gPiArCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiA+ ICsJaWYgKHJldCA9PSAwICYmIChvYmotPmJhc2UucmVhZF9kb21haW5zICYgSTkxNV9HRU1fRE9N QUlOX0dUVCkgPT0gMCkgewo+ID4gKwkJLyogVGhlIHVzZXIgaGFzIG1vZGlmaWVkIHRoZSBvYmpl Y3Qgd2hpbHN0IHdlIHRyaWVkCj4gPiArCQkgKiByZWFkaW5nIGZyb20gaXQsIGFuZCB3ZSBub3cg aGF2ZSBubyBpZGVhIHdoYXQgZG9tYWluCj4gPiArCQkgKiB0aGUgcGFnZXMgc2hvdWxkIGJlIGlu LiBBcyB3ZSBoYXZlIGp1c3QgYmVlbiB0b3VjaGluZwo+ID4gKwkJICogdGhlbSBkaXJlY3RseSwg Zmx1c2ggZXZlcnl0aGluZyBiYWNrIHRvIHRoZSBHVFQKPiA+ICsJCSAqIGRvbWFpbi4KPiA+ICsJ CSAqLwo+ID4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwg ZmFsc2UpOwo+IAo+IEhvdyBjYW4gdGhpcyBiZSBPSz8gSXQgc3VnZ2VzdHMgdXNlciBjb3VsZCBo YXZlIG1vdmVkIHRoZSBvYmplY3QgdG8gdGhlIAo+IENQVSBkb21haW4sIGNhbGxzIHByZWFkIGFu ZCBpdCBnZXRzIHNpbGVudGx5IG1vdmVkIHRvIHRoZSBHVFQgZG9tYWluPwo+IApJIGFncmVlIHRv IHRoaXMgY29tbWVudCwgd2UgY2FuIGFkZCBhIGNoZWNrIGlmIHRoZSBvYmplY3QgaXMgbm90IGlu CkNQVV9ET01BSU4gdGhlbiBvbmx5IGdvIG9uIHdpdGggZ3R0X3ByZWFkIGVsc2UgcmV0dXJuIHRo ZSBzaG1lbV9wcmVhZAplcnJvci4KCj4gPiArCX0KPiA+ICsKPiA+ICtvdXRfdW5waW46Cj4gPiAr CWlmIChub2RlLmFsbG9jYXRlZCkgewo+ID4gKwkJd21iKCk7Cj4gPiArCQlkZXZfcHJpdi0+Z3R0 LmJhc2UuY2xlYXJfcmFuZ2UoJmRldl9wcml2LT5ndHQuYmFzZSwKPiA+ICsJCQkJCSAgICAgICBu b2RlLnN0YXJ0LCBub2RlLnNpemUsCj4gPiArCQkJCQkgICAgICAgdHJ1ZSk7Cj4gPiArCQlpOTE1 X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKPiA+ICsJCXJlbW92ZV9tYXBwYWJsZV9ub2Rl KCZub2RlKTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGlu KG9iaik7Cj4gPiArCX0KPiA+ICtvdXQ6Cj4gPiArCXJldHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ ID4gICBzdGF0aWMgaW50Cj4gPiAgIGk5MTVfZ2VtX3NobWVtX3ByZWFkKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gPiAgIAkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ ID4gQEAgLTY2MSw2ICs3OTksOSBAQCBpOTE1X2dlbV9zaG1lbV9wcmVhZChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ID4gICAJaW50IG5lZWRzX2NsZmx1c2ggPSAwOwo+ID4gICAJc3RydWN0IHNn X3BhZ2VfaXRlciBzZ19pdGVyOwo+ID4KPiA+ICsJaWYgKCFvYmotPmJhc2UuZmlscCkKPiA+ICsJ CXJldHVybiAtRU5PREVWOwo+ID4gKwo+ID4gICAJdXNlcl9kYXRhID0gdG9fdXNlcl9wdHIoYXJn cy0+ZGF0YV9wdHIpOwo+ID4gICAJcmVtYWluID0gYXJncy0+c2l6ZTsKPiA+Cj4gPiBAQCAtNzY5 LDE4ICs5MTAsMTUgQEAgaTkxNV9nZW1fcHJlYWRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKPiA+ICAgCQlnb3RvIG91dDsKPiA+ICAgCX0KPiA+Cj4gPiAtCS8qIHBy aW1lIG9iamVjdHMgaGF2ZSBubyBiYWNraW5nIGZpbHAgdG8gR0VNIHByZWFkL3B3cml0ZQo+ID4g LQkgKiBwYWdlcyBmcm9tLgo+ID4gLQkgKi8KPiA+IC0JaWYgKCFvYmotPmJhc2UuZmlscCkgewo+ ID4gLQkJcmV0ID0gLUVJTlZBTDsKPiA+IC0JCWdvdG8gb3V0Owo+ID4gLQl9Cj4gPiAtCj4gPiAg IAl0cmFjZV9pOTE1X2dlbV9vYmplY3RfcHJlYWQob2JqLCBhcmdzLT5vZmZzZXQsIGFyZ3MtPnNp emUpOwo+ID4KPiA+ICAgCXJldCA9IGk5MTVfZ2VtX3NobWVtX3ByZWFkKGRldiwgb2JqLCBhcmdz LCBmaWxlKTsKPiA+Cj4gPiArCS8qIHByZWFkIGZvciBub24gc2htZW0gYmFja2VkIG9iamVjdHMg Ki8KPiA+ICsJaWYgKHJldCA9PSAtRUZBVUxUIHx8IHJldCA9PSAtRU5PREVWKQo+ID4gKwkJcmV0 ID0gaTkxNV9nZW1fZ3R0X3ByZWFkKGRldiwgb2JqLCBhcmdzLT5zaXplLAo+ID4gKwkJCQkJYXJn cy0+b2Zmc2V0LCBhcmdzLT5kYXRhX3B0cik7Cj4gPiArCj4gPiAgIG91dDoKPiA+ICAgCWRybV9n ZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOwo+ID4gICB1bmxvY2s6Cj4gPiBAQCAt ODIxLDEwICs5NTksMTUgQEAgaTkxNV9nZW1fZ3R0X3B3cml0ZV9mYXN0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAo+ID4gICAJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9wd3JpdGUgKmFy Z3MsCj4gPiAgIAkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gPiAgIHsKPiA+ICsJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7Cj4gPiAgIAlzdHJ1Y3QgZHJtX21tX25v ZGUgbm9kZTsKPiA+ICAgCXVpbnQ2NF90IHJlbWFpbiwgb2Zmc2V0Owo+ID4gICAJY2hhciBfX3Vz ZXIgKnVzZXJfZGF0YTsKPiA+ICAgCWludCByZXQ7Cj4gPiArCWJvb2wgaGl0X3Nsb3dfcGF0aCA9 IGZhbHNlOwo+ID4gKwo+ID4gKwlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19O T05FKQo+ID4gKwkJcmV0dXJuIC1FRkFVTFQ7Cj4gPgo+ID4gICAJcmV0ID0gaTkxNV9nZW1fb2Jq X2dndHRfcGluKG9iaiwgMCwgUElOX01BUFBBQkxFIHwgUElOX05PTkJMT0NLKTsKPiA+ICAgCWlm IChyZXQpIHsKPiA+IEBAIC04NDIsMTYgKzk4NSwxNSBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zh c3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gPiAgIAl9IGVsc2Ugewo+ID4gICAJ CW5vZGUuc3RhcnQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKTsKPiA+ICAgCQlub2Rl LmFsbG9jYXRlZCA9IGZhbHNlOwo+ID4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9mZW5j ZShvYmopOwo+ID4gKwkJaWYgKHJldCkKPiA+ICsJCQlnb3RvIG91dF91bnBpbjsKPiA+ICAgCX0K PiA+Cj4gPiAgIAlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCB0 cnVlKTsKPiA+ICAgCWlmIChyZXQpCj4gPiAgIAkJZ290byBvdXRfdW5waW47Cj4gPgo+ID4gLQly ZXQgPSBpOTE1X2dlbV9vYmplY3RfcHV0X2ZlbmNlKG9iaik7Cj4gPiAtCWlmIChyZXQpCj4gPiAt CQlnb3RvIG91dF91bnBpbjsKPiA+IC0KPiA+ICAgCWludGVsX2ZiX29ial9pbnZhbGlkYXRlKG9i aiwgT1JJR0lOX0dUVCk7Cj4gPiAgIAlvYmotPmRpcnR5ID0gdHJ1ZTsKPiA+Cj4gPiBAQCAtODcw LDI0ICsxMDEyLDM2IEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwKPiA+ICAgCQl1bnNpZ25lZCBwYWdlX2xlbmd0aCA9IFBBR0VfU0laRSAt IHBhZ2Vfb2Zmc2V0Owo+ID4gICAJCXBhZ2VfbGVuZ3RoID0gcmVtYWluIDwgcGFnZV9sZW5ndGgg PyByZW1haW4gOiBwYWdlX2xlbmd0aDsKPiA+ICAgCQlpZiAobm9kZS5hbGxvY2F0ZWQpIHsKPiA+ IC0JCQl3bWIoKTsKPiA+ICsJCQl3bWIoKTsgLyogZmx1c2ggdGhlIHdyaXRlIGJlZm9yZSB3ZSBt b2RpZnkgdGhlIEdHVFQgKi8KPiA+ICAgCQkJaTkxNS0+Z3R0LmJhc2UuaW5zZXJ0X3BhZ2UoJmk5 MTUtPmd0dC5iYXNlLAo+ID4gICAJCQkJCQkgICBpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYV9hZGRy ZXNzKG9iaiwgb2Zmc2V0ID4+IFBBR0VfU0hJRlQpLAo+ID4gICAJCQkJCQkgICBub2RlLnN0YXJ0 LAo+ID4gICAJCQkJCQkgICBJOTE1X0NBQ0hFX05PTkUsCj4gPiAgIAkJCQkJCSAgIDApOwo+ID4g LQkJCXdtYigpOwo+ID4gKwkJCXdtYigpOyAvKiBmbHVzaCBtb2RpZmljYXRpb25zIHRvIHRoZSBH R1RUIChpbnNlcnRfcGFnZSkgKi8KPiA+ICAgCQl9IGVsc2Ugewo+ID4gICAJCQlwYWdlX2Jhc2Ug Kz0gb2Zmc2V0ICYgUEFHRV9NQVNLOwo+ID4gICAJCX0KPiA+ICAgCQkvKiBJZiB3ZSBnZXQgYSBm YXVsdCB3aGlsZSBjb3B5aW5nIGRhdGEsIHRoZW4gKHByZXN1bWFibHkpIG91cgo+ID4gICAJCSAq IHNvdXJjZSBwYWdlIGlzbid0IGF2YWlsYWJsZS4gIFJldHVybiB0aGUgZXJyb3IgYW5kIHdlJ2xs Cj4gPiAgIAkJICogcmV0cnkgaW4gdGhlIHNsb3cgcGF0aC4KPiA+ICsJCSAqIElmIHRoZSBvYmpl Y3QgaXMgbm9uLXNobWVtIGJhY2tlZCwgd2UgcmV0cnkgYWdhaW4gd2l0aCB0aGUKPiA+ICsJCSAq IHBhdGggdGhhdCBoYW5kbGVzIHBhZ2UgZmF1bHQuCj4gPiAgIAkJICovCj4gPiAgIAkJaWYgKGZh c3RfdXNlcl93cml0ZShpOTE1LT5ndHQubWFwcGFibGUsIHBhZ2VfYmFzZSwKPiA+ICAgCQkJCSAg ICBwYWdlX29mZnNldCwgdXNlcl9kYXRhLCBwYWdlX2xlbmd0aCkpIHsKPiA+IC0JCQlyZXQgPSAt RUZBVUxUOwo+ID4gLQkJCWdvdG8gb3V0X2ZsdXNoOwo+ID4gKwkJCWhpdF9zbG93X3BhdGggPSB0 cnVlOwo+ID4gKwkJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4gKwkJCWlm IChzbG93X3VzZXJfYWNjZXNzKGk5MTUtPmd0dC5tYXBwYWJsZSwKPiA+ICsJCQkJCSAgICAgcGFn ZV9iYXNlLAo+ID4gKwkJCQkJICAgICBwYWdlX29mZnNldCwgdXNlcl9kYXRhLAo+ID4gKwkJCQkJ ICAgICBwYWdlX2xlbmd0aCwgdHJ1ZSkpIHsKPiA+ICsJCQkJcmV0ID0gLUVGQVVMVDsKPiA+ICsJ CQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4gKwkJCQlnb3RvIG91dF9mbHVz aDsKPiA+ICsJCQl9Cj4gCj4gSSB0aGluayB0aGUgZnVuY3Rpb24gbm93IGJlIGNhbGxlZCBpOTE1 X2dlbV9ndHRfcHdyaXRlLgo+IAo+IFdvdWxkIGl0IGFsc28gbmVlZCB0aGUgc2FtZSBwcmUtZmF1 bHQgYXMgaW4gaTkxNV9nZW1fZ3R0X3ByZWFkID8KPiAKPiA+ICsKPiA+ICsJCQltdXRleF9sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiAgIAkJfQo+ID4KPiA+ICAgCQlyZW1haW4gLT0gcGFn ZV9sZW5ndGg7Cj4gPiBAQCAtODk2LDYgKzEwNTAsOSBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zh c3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gPiAgIAl9Cj4gPgo+ID4gICBvdXRf Zmx1c2g6Cj4gPiArCWlmIChoaXRfc2xvd19wYXRoKQo+ID4gKwkJV0FSTl9PTihpOTE1X2dlbV9v YmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCB0cnVlKSk7Cj4gCj4gSSBzdXBwb3NlIHRoaXMg aXMgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBpbiBwcmVhZCwgbWF5YmUgZHVwbGljYXRlIHRoZSAK PiBjb21tZW50IGhlcmU/Cj4gCkkgZG8gbm90IHRoaW5rIHRoYXQgdGhpcyBpcyBzYW1lIGFzIHBy ZWFkLCBhcyB3ZSBvbmx5IGNhbGwgZ3R0X3B3cml0ZSBpZgp0aGUgb2JqZWN0IGlzIG5vdCBpbiBD UFVfRE9NQUlOLgo+IFJlZ2FyZHMsCj4gCj4gVHZydGtvCj4gClRoYW5rcywKQW5raXQKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=