From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 08/10] drm/i915: Support for pread/pwrite from/to non shmem backed objects Date: Fri, 19 Feb 2016 10:55:55 +0000 Message-ID: <56C6F4BB.5030907@linux.intel.com> References: <1455864697-32140-1-git-send-email-ankitprasad.r.sharma@intel.com> <1455864697-32140-9-git-send-email-ankitprasad.r.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 7F2EB6E005 for ; Fri, 19 Feb 2016 10:55:57 +0000 (UTC) In-Reply-To: <1455864697-32140-9-git-send-email-ankitprasad.r.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ankitprasad.r.sharma@intel.com, intel-gfx@lists.freedesktop.org Cc: akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiAxOS8wMi8xNiAwNjo1MSwgYW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwuY29tIHdyb3Rl Ogo+IEZyb206IEFua2l0cHJhc2FkIFNoYXJtYSA8YW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwu Y29tPgo+Cj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGV4dGVuZGluZyB0aGUgcHJlYWQv cHdyaXRlIGZ1bmN0aW9uYWxpdHkKPiBmb3Igb2JqZWN0cyBub3QgYmFja2VkIGJ5IHNobWVtLiBU aGUgYWNjZXNzIHdpbGwgYmUgbWFkZSB0aHJvdWdoCj4gZ3R0IGludGVyZmFjZS4gVGhpcyB3aWxs IGNvdmVyIG9iamVjdHMgYmFja2VkIGJ5IHN0b2xlbiBtZW1vcnkgYXMgd2VsbAo+IGFzIG90aGVy IG5vbi1zaG1lbSBiYWNrZWQgb2JqZWN0cy4KPgo+IHYyOiBEcm9wIGxvY2tzIGFyb3VuZCBzbG93 X3VzZXJfYWNjZXNzLCBwcmVmYXVsdCB0aGUgcGFnZXMgYmVmb3JlCj4gYWNjZXNzIChDaHJpcykK Pgo+IHYzOiBSZWJhc2VkIHRvIHRoZSBsYXRlc3QgZHJtLWludGVsLW5pZ2h0bHkgKEFua2l0KQo+ Cj4gdjQ6IE1vdmVkIHBhZ2UgYmFzZSAmIG9mZnNldCBjYWxjdWxhdGlvbnMgb3V0c2lkZSB0aGUg Y29weSBsb29wLAo+IGNvcnJlY3RlZCBkYXRhIHR5cGVzIGZvciBzaXplIGFuZCBvZmZzZXQgdmFy aWFibGVzLCBjb3JyZWN0ZWQgaWYtZWxzZQo+IGJyYWNlcyBmb3JtYXQgKFR2cnRrby9rZXJuZWxk b2NzKQo+Cj4gdjU6IEVuYWJsZWQgcHJlYWQvcHdyaXRlIGZvciBhbGwgbm9uLXNobWVtIGJhY2tl ZCBvYmplY3RzIGluY2x1ZGluZwo+IHdpdGhvdXQgdGlsaW5nIHJlc3RyaWN0aW9ucyAoQW5raXQp Cj4KPiB2NjogVXNpbmcgcHdyaXRlX2Zhc3QgZm9yIG5vbi1zaG1lbSBiYWNrZWQgb2JqZWN0cyBh cyB3ZWxsIChDaHJpcykKPgo+IHY3OiBVcGRhdGVkIGNvbW1pdCBtZXNzYWdlLCBSZW5hbWVkIGk5 MTVfZ2VtX2d0dF9yZWFkIHRvIGk5MTVfZ2VtX2d0dF9jb3B5LAo+IGFkZGVkIHB3cml0ZSBzbG93 IHBhdGggZm9yIG5vbi1zaG1lbSBiYWNrZWQgb2JqZWN0cyAoQ2hyaXMvVHZydGtvKQo+Cj4gdjg6 IFVwZGF0ZWQgdjcgY29tbWl0IG1lc3NhZ2UsIG11dGV4IHVubG9jayBhcm91bmQgcHdyaXRlIHNs b3cgcGF0aCBmb3IKPiBub24tc2htZW0gYmFja2VkIG9iamVjdHMgKFR2cnRrbykKPgo+IHY5OiBD b3JyZWN0ZWQgY2hlY2sgZHVyaW5nIHByZWFkX2lvY3RsLCB0byBhdm9pZCBzaG1lbV9wcmVhZCBi ZWluZwo+IGNhbGxlZCBmb3Igbm9uLXNobWVtIGJhY2tlZCBvYmplY3RzIChUdnJ0a28pCj4KPiB2 MTA6IE1vdmVkIHRoZSB3cml0ZV9kb21haW4gY2hlY2sgdG8gbmVlZHNfY2xmbHVzaCBhbmQgdGls aW5nIG1vZGUgY2hlY2sKPiB0byBwd3JpdGVfZmFzdCAoQ2hyaXMpCj4KPiB2MTE6IFVzZSBwd3Jp dGVfZmFzdCBmYWxsYmFjayBmb3IgYWxsIG9iamVjdHMgKHNobWVtIGFuZCBub24tc2htZW0gYmFj a2VkKSwKPiBjYWxsIGZhc3RfdXNlcl93cml0ZSByZWdhcmRsZXNzIG9mIHBhZ2VmYXVsdCBpbiBw cmV2aW91cyBpdGVyYXRpb24KPgo+IHYxMjogVXNlIHBhZ2UtYnktcGFnZSBjb3B5IGZvciBzbG93 IHVzZXIgYWNjZXNzIHRvbyAoQ2hyaXMpCj4KPiB2MTM6IEhhbmRsZWQgRUZBVUxULCBBdm9pZCB1 c2Ugb2YgV0FSTl9PTiwgcHV0X2ZlbmNlIG9ubHkgaWYgd2hvbGUgb2JqCj4gcGlubmVkIChDaHJp cykKPgo+IHYxNDogQ29ycmVjdGVkIGRhdGF0eXBlcy9pbml0aWFsaXphdGlvbnMgKFR2cnRrbykK Pgo+IFRlc3RjYXNlOiBpZ3QvZ2VtX3N0b2xlbiwgaWd0L2dlbV9wcmVhZCwgaWd0L2dlbV9wd3Jp dGUKPgo+IFNpZ25lZC1vZmYtYnk6IEFua2l0cHJhc2FkIFNoYXJtYSA8YW5raXRwcmFzYWQuci5z aGFybWFAaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YyB8IDIyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCj4gICAxIGZp bGUgY2hhbmdlZCwgMTg5IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggZWQ4YWU1ZC4uMDkzOGFiMSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+IEBAIC01NSw2ICs1NSw5IEBAIHN0YXRpYyBib29sIGNwdV9jYWNoZV9p c19jb2hlcmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Cj4gICBzdGF0aWMgYm9vbCBjcHVf d3JpdGVfbmVlZHNfY2xmbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAg ewo+ICsJaWYgKG9iai0+YmFzZS53cml0ZV9kb21haW4gPT0gSTkxNV9HRU1fRE9NQUlOX0NQVSkK PiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICAgCWlmICghY3B1X2NhY2hlX2lzX2NvaGVyZW50KG9i ai0+YmFzZS5kZXYsIG9iai0+Y2FjaGVfbGV2ZWwpKQo+ICAgCQlyZXR1cm4gdHJ1ZTsKPgo+IEBA IC02NDYsNiArNjQ5LDE0MSBAQCBzaG1lbV9wcmVhZF9zbG93KHN0cnVjdCBwYWdlICpwYWdlLCBp bnQgc2htZW1fcGFnZV9vZmZzZXQsIGludCBwYWdlX2xlbmd0aCwKPiAgIAlyZXR1cm4gcmV0ID8g LSBFRkFVTFQgOiAwOwo+ICAgfQo+Cj4gK3N0YXRpYyBpbmxpbmUgdWludDY0X3QKPiArc2xvd191 c2VyX2FjY2VzcyhzdHJ1Y3QgaW9fbWFwcGluZyAqbWFwcGluZywKPiArCQkgdWludDY0X3QgcGFn ZV9iYXNlLCBpbnQgcGFnZV9vZmZzZXQsCj4gKwkJIGNoYXIgX191c2VyICp1c2VyX2RhdGEsCj4g KwkJIHVuc2lnbmVkIGxvbmcgbGVuZ3RoLCBib29sIHB3cml0ZSkKPiArewo+ICsJdm9pZCBfX2lv bWVtICppb2FkZHI7Cj4gKwl2b2lkICp2YWRkcjsKPiArCXVpbnQ2NF90IHVud3JpdHRlbjsKPiAr Cj4gKwlpb2FkZHIgPSBpb19tYXBwaW5nX21hcF93YyhtYXBwaW5nLCBwYWdlX2Jhc2UpOwo+ICsJ LyogV2UgY2FuIHVzZSB0aGUgY3B1IG1lbSBjb3B5IGZ1bmN0aW9uIGJlY2F1c2UgdGhpcyBpcyBY ODYuICovCj4gKwl2YWRkciA9ICh2b2lkIF9fZm9yY2UgKilpb2FkZHIgKyBwYWdlX29mZnNldDsK PiArCWlmIChwd3JpdGUpCj4gKwkJdW53cml0dGVuID0gX19jb3B5X2Zyb21fdXNlcih2YWRkciwg dXNlcl9kYXRhLCBsZW5ndGgpOwo+ICsJZWxzZQo+ICsJCXVud3JpdHRlbiA9IF9fY29weV90b191 c2VyKHVzZXJfZGF0YSwgdmFkZHIsIGxlbmd0aCk7Cj4gKwo+ICsJaW9fbWFwcGluZ191bm1hcChp b2FkZHIpOwo+ICsJcmV0dXJuIHVud3JpdHRlbjsKPiArfQoKWW91IGNvdWxkIGNoYW5nZSB0aGUg cmV0dXJuIHR5cGUgdG8gdW5zaWduZWQgbG9uZyBzaW5jZSB0aGlzIGlzIHdoYXQgCl9fY29weV90 by9mcm9tIHJldHVybiBmb3IgYSBzbWFsbCBzYXZpbmcgb24gMzItYml0IGJ1aWxkcyAobGlrZSBp dCAKbWF0dGVycy4uKS4gSWYgeW91IGZlZWwgbGlrZSBpdCBhbmQga2VlcCB0aGUgci1iIHRoZW4u CgpJIGRpc2xpa2UgaG93IHlvdSBpbnNpc3QgdG8gY2FsbCBwd3JpdGUgd2hpY2ggaGFzIGJvdGgg ZmFzdCBhbmQgc2xvdyAKcGF0aHMgcHdyaXRlX2Zhc3QsIGJ1dCB3aGF0ZXZlci4KClJldmlld2Vk LWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywK ClR2cnRrbwoKCj4gKwo+ICtzdGF0aWMgaW50Cj4gK2k5MTVfZ2VtX2d0dF9wcmVhZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICsJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos IHVpbnQ2NF90IHNpemUsCj4gKwkJICAgdWludDY0X3QgZGF0YV9vZmZzZXQsIHVpbnQ2NF90IGRh dGFfcHRyKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9tbV9ub2RlIG5vZGU7Cj4gKwljaGFyIF9fdXNl ciAqdXNlcl9kYXRhOwo+ICsJdWludDY0X3QgcmVtYWluOwo+ICsJdWludDY0X3Qgb2Zmc2V0Owo+ ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4ob2JqLCAwLCBQ SU5fTUFQUEFCTEUpOwo+ICsJaWYgKHJldCkgewo+ICsJCXJldCA9IGluc2VydF9tYXBwYWJsZV9u b2RlKGRldl9wcml2LCAmbm9kZSwgUEFHRV9TSVpFKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3Rv IG91dDsKPiArCj4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhvYmopOwo+ICsJ CWlmIChyZXQpIHsKPiArCQkJcmVtb3ZlX21hcHBhYmxlX25vZGUoJm5vZGUpOwo+ICsJCQlnb3Rv IG91dDsKPiArCQl9Cj4gKwo+ICsJCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKPiAr CX0gZWxzZSB7Cj4gKwkJbm9kZS5zdGFydCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmop Owo+ICsJCW5vZGUuYWxsb2NhdGVkID0gZmFsc2U7Cj4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0 X3B1dF9mZW5jZShvYmopOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gb3V0X3VucGluOwo+ICsJ fQo+ICsKPiArCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIGZh bHNlKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBvdXRfdW5waW47Cj4gKwo+ICsJdXNlcl9kYXRh ID0gdG9fdXNlcl9wdHIoZGF0YV9wdHIpOwo+ICsJcmVtYWluID0gc2l6ZTsKPiArCW9mZnNldCA9 IGRhdGFfb2Zmc2V0Owo+ICsKPiArCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ ICsJaWYgKGxpa2VseSghaTkxNS5wcmVmYXVsdF9kaXNhYmxlKSkgewo+ICsJCXJldCA9IGZhdWx0 X2luX211bHRpcGFnZXNfd3JpdGVhYmxlKHVzZXJfZGF0YSwgcmVtYWluKTsKPiArCQlpZiAocmV0 KSB7Cj4gKwkJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCQkJZ290byBvdXRf dW5waW47Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXdoaWxlIChyZW1haW4gPiAwKSB7Cj4gKwkJLyog T3BlcmF0aW9uIGluIHRoaXMgcGFnZQo+ICsJCSAqCj4gKwkJICogcGFnZV9iYXNlID0gcGFnZSBv ZmZzZXQgd2l0aGluIGFwZXJ0dXJlCj4gKwkJICogcGFnZV9vZmZzZXQgPSBvZmZzZXQgd2l0aGlu IHBhZ2UKPiArCQkgKiBwYWdlX2xlbmd0aCA9IGJ5dGVzIHRvIGNvcHkgZm9yIHRoaXMgcGFnZQo+ ICsJCSAqLwo+ICsJCXUzMiBwYWdlX2Jhc2UgPSBub2RlLnN0YXJ0Owo+ICsJCXVuc2lnbmVkIHBh Z2Vfb2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2Uob2Zmc2V0KTsKPiArCQl1bnNpZ25lZCBwYWdlX2xl bmd0aCA9IFBBR0VfU0laRSAtIHBhZ2Vfb2Zmc2V0Owo+ICsJCXBhZ2VfbGVuZ3RoID0gcmVtYWlu IDwgcGFnZV9sZW5ndGggPyByZW1haW4gOiBwYWdlX2xlbmd0aDsKPiArCQlpZiAobm9kZS5hbGxv Y2F0ZWQpIHsKPiArCQkJd21iKCk7Cj4gKwkJCWRldl9wcml2LT5ndHQuYmFzZS5pbnNlcnRfcGFn ZSgmZGV2X3ByaXYtPmd0dC5iYXNlLAo+ICsJCQkJCQkgICAgICAgaTkxNV9nZW1fb2JqZWN0X2dl dF9kbWFfYWRkcmVzcyhvYmosIG9mZnNldCA+PiBQQUdFX1NISUZUKSwKPiArCQkJCQkJICAgICAg IG5vZGUuc3RhcnQsCj4gKwkJCQkJCSAgICAgICBJOTE1X0NBQ0hFX05PTkUsIDApOwo+ICsJCQl3 bWIoKTsKPiArCQl9IGVsc2Ugewo+ICsJCQlwYWdlX2Jhc2UgKz0gb2Zmc2V0ICYgUEFHRV9NQVNL Owo+ICsJCX0KPiArCQkvKiBUaGlzIGlzIGEgc2xvdyByZWFkL3dyaXRlIGFzIGl0IHRyaWVzIHRv IHJlYWQgZnJvbQo+ICsJCSAqIGFuZCB3cml0ZSB0byB1c2VyIG1lbW9yeSB3aGljaCBtYXkgcmVz dWx0IGludG8gcGFnZQo+ICsJCSAqIGZhdWx0cywgYW5kIHNvIHdlIGNhbm5vdCBwZXJmb3JtIHRo aXMgdW5kZXIgc3RydWN0X211dGV4Lgo+ICsJCSAqLwo+ICsJCWlmIChzbG93X3VzZXJfYWNjZXNz KGRldl9wcml2LT5ndHQubWFwcGFibGUsIHBhZ2VfYmFzZSwKPiArCQkJCSAgICAgcGFnZV9vZmZz ZXQsIHVzZXJfZGF0YSwKPiArCQkJCSAgICAgcGFnZV9sZW5ndGgsIGZhbHNlKSkgewo+ICsJCQly ZXQgPSAtRUZBVUxUOwo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwo+ICsJCXJlbWFpbiAtPSBwYWdl X2xlbmd0aDsKPiArCQl1c2VyX2RhdGEgKz0gcGFnZV9sZW5ndGg7Cj4gKwkJb2Zmc2V0ICs9IHBh Z2VfbGVuZ3RoOwo+ICsJfQo+ICsKPiArCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsK PiArCWlmIChyZXQgPT0gMCAmJiAob2JqLT5iYXNlLnJlYWRfZG9tYWlucyAmIEk5MTVfR0VNX0RP TUFJTl9HVFQpID09IDApIHsKPiArCQkvKiBUaGUgdXNlciBoYXMgbW9kaWZpZWQgdGhlIG9iamVj dCB3aGlsc3Qgd2UgdHJpZWQKPiArCQkgKiByZWFkaW5nIGZyb20gaXQsIGFuZCB3ZSBub3cgaGF2 ZSBubyBpZGVhIHdoYXQgZG9tYWluCj4gKwkJICogdGhlIHBhZ2VzIHNob3VsZCBiZSBpbi4gQXMg d2UgaGF2ZSBqdXN0IGJlZW4gdG91Y2hpbmcKPiArCQkgKiB0aGVtIGRpcmVjdGx5LCBmbHVzaCBl dmVyeXRoaW5nIGJhY2sgdG8gdGhlIEdUVAo+ICsJCSAqIGRvbWFpbi4KPiArCQkgKi8KPiArCQly ZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7Cj4gKwl9 Cj4gKwo+ICtvdXRfdW5waW46Cj4gKwlpZiAobm9kZS5hbGxvY2F0ZWQpIHsKPiArCQl3bWIoKTsK PiArCQlkZXZfcHJpdi0+Z3R0LmJhc2UuY2xlYXJfcmFuZ2UoJmRldl9wcml2LT5ndHQuYmFzZSwK PiArCQkJCQkgICAgICAgbm9kZS5zdGFydCwgbm9kZS5zaXplLAo+ICsJCQkJCSAgICAgICB0cnVl KTsKPiArCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKPiArCQlyZW1vdmVfbWFw cGFibGVfbm9kZSgmbm9kZSk7Cj4gKwl9IGVsc2Ugewo+ICsJCWk5MTVfZ2VtX29iamVjdF9nZ3R0 X3VucGluKG9iaik7Cj4gKwl9Cj4gK291dDoKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gICBz dGF0aWMgaW50Cj4gICBpOTE1X2dlbV9zaG1lbV9wcmVhZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICAgCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gQEAgLTY2MSw2 ICs3OTksOSBAQCBpOTE1X2dlbV9zaG1lbV9wcmVhZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAgCWludCBuZWVkc19jbGZsdXNoID0gMDsKPiAgIAlzdHJ1Y3Qgc2dfcGFnZV9pdGVyIHNnX2l0 ZXI7Cj4KPiArCWlmICghb2JqLT5iYXNlLmZpbHApCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ ICAgCXVzZXJfZGF0YSA9IHRvX3VzZXJfcHRyKGFyZ3MtPmRhdGFfcHRyKTsKPiAgIAlyZW1haW4g PSBhcmdzLT5zaXplOwo+Cj4gQEAgLTc2OSwxOCArOTEwLDE1IEBAIGk5MTVfZ2VtX3ByZWFkX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJCWdvdG8gb3V0Owo+ ICAgCX0KPgo+IC0JLyogcHJpbWUgb2JqZWN0cyBoYXZlIG5vIGJhY2tpbmcgZmlscCB0byBHRU0g cHJlYWQvcHdyaXRlCj4gLQkgKiBwYWdlcyBmcm9tLgo+IC0JICovCj4gLQlpZiAoIW9iai0+YmFz ZS5maWxwKSB7Cj4gLQkJcmV0ID0gLUVJTlZBTDsKPiAtCQlnb3RvIG91dDsKPiAtCX0KPiAtCj4g ICAJdHJhY2VfaTkxNV9nZW1fb2JqZWN0X3ByZWFkKG9iaiwgYXJncy0+b2Zmc2V0LCBhcmdzLT5z aXplKTsKPgo+ICAgCXJldCA9IGk5MTVfZ2VtX3NobWVtX3ByZWFkKGRldiwgb2JqLCBhcmdzLCBm aWxlKTsKPgo+ICsJLyogcHJlYWQgZm9yIG5vbiBzaG1lbSBiYWNrZWQgb2JqZWN0cyAqLwo+ICsJ aWYgKHJldCA9PSAtRUZBVUxUIHx8IHJldCA9PSAtRU5PREVWKQo+ICsJCXJldCA9IGk5MTVfZ2Vt X2d0dF9wcmVhZChkZXYsIG9iaiwgYXJncy0+c2l6ZSwKPiArCQkJCQlhcmdzLT5vZmZzZXQsIGFy Z3MtPmRhdGFfcHRyKTsKPiArCj4gICBvdXQ6Cj4gICAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVu Y2UoJm9iai0+YmFzZSk7Cj4gICB1bmxvY2s6Cj4gQEAgLTgyMSwxMCArOTU5LDE1IEBAIGk5MTVf Z2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAkJ CSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3B3cml0ZSAqYXJncywKPiAgIAkJCSBzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGUpCj4gICB7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRl djsKPiAgIAlzdHJ1Y3QgZHJtX21tX25vZGUgbm9kZTsKPiAgIAl1aW50NjRfdCByZW1haW4sIG9m ZnNldDsKPiAgIAljaGFyIF9fdXNlciAqdXNlcl9kYXRhOwo+ICAgCWludCByZXQ7Cj4gKwlib29s IGhpdF9zbG93X3BhdGggPSBmYWxzZTsKPiArCj4gKwlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJ OTE1X1RJTElOR19OT05FKQo+ICsJCXJldHVybiAtRUZBVUxUOwo+Cj4gICAJcmV0ID0gaTkxNV9n ZW1fb2JqX2dndHRfcGluKG9iaiwgMCwgUElOX01BUFBBQkxFIHwgUElOX05PTkJMT0NLKTsKPiAg IAlpZiAocmV0KSB7Cj4gQEAgLTg0MiwxNiArOTg1LDE1IEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVf ZmFzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAl9IGVsc2Ugewo+ICAgCQlu b2RlLnN0YXJ0ID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaik7Cj4gICAJCW5vZGUuYWxs b2NhdGVkID0gZmFsc2U7Cj4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9mZW5jZShvYmop Owo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gb3V0X3VucGluOwo+ICAgCX0KPgo+ICAgCXJldCA9 IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIHRydWUpOwo+ICAgCWlmIChy ZXQpCj4gICAJCWdvdG8gb3V0X3VucGluOwo+Cj4gLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcHV0 X2ZlbmNlKG9iaik7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gb3V0X3VucGluOwo+IC0KPiAgIAlp bnRlbF9mYl9vYmpfaW52YWxpZGF0ZShvYmosIE9SSUdJTl9HVFQpOwo+ICAgCW9iai0+ZGlydHkg PSB0cnVlOwo+Cj4gQEAgLTg3MCwyNCArMTAxMiwzNiBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zh c3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJCXVuc2lnbmVkIHBhZ2VfbGVu Z3RoID0gUEFHRV9TSVpFIC0gcGFnZV9vZmZzZXQ7Cj4gICAJCXBhZ2VfbGVuZ3RoID0gcmVtYWlu IDwgcGFnZV9sZW5ndGggPyByZW1haW4gOiBwYWdlX2xlbmd0aDsKPiAgIAkJaWYgKG5vZGUuYWxs b2NhdGVkKSB7Cj4gLQkJCXdtYigpOwo+ICsJCQl3bWIoKTsgLyogZmx1c2ggdGhlIHdyaXRlIGJl Zm9yZSB3ZSBtb2RpZnkgdGhlIEdHVFQgKi8KPiAgIAkJCWk5MTUtPmd0dC5iYXNlLmluc2VydF9w YWdlKCZpOTE1LT5ndHQuYmFzZSwKPiAgIAkJCQkJCSAgIGk5MTVfZ2VtX29iamVjdF9nZXRfZG1h X2FkZHJlc3Mob2JqLCBvZmZzZXQgPj4gUEFHRV9TSElGVCksCj4gICAJCQkJCQkgICBub2RlLnN0 YXJ0LAo+ICAgCQkJCQkJICAgSTkxNV9DQUNIRV9OT05FLAo+ICAgCQkJCQkJICAgMCk7Cj4gLQkJ CXdtYigpOwo+ICsJCQl3bWIoKTsgLyogZmx1c2ggbW9kaWZpY2F0aW9ucyB0byB0aGUgR0dUVCAo aW5zZXJ0X3BhZ2UpICovCj4gICAJCX0gZWxzZSB7Cj4gICAJCQlwYWdlX2Jhc2UgKz0gb2Zmc2V0 ICYgUEFHRV9NQVNLOwo+ICAgCQl9Cj4gICAJCS8qIElmIHdlIGdldCBhIGZhdWx0IHdoaWxlIGNv cHlpbmcgZGF0YSwgdGhlbiAocHJlc3VtYWJseSkgb3VyCj4gICAJCSAqIHNvdXJjZSBwYWdlIGlz bid0IGF2YWlsYWJsZS4gIFJldHVybiB0aGUgZXJyb3IgYW5kIHdlJ2xsCj4gICAJCSAqIHJldHJ5 IGluIHRoZSBzbG93IHBhdGguCj4gKwkJICogSWYgdGhlIG9iamVjdCBpcyBub24tc2htZW0gYmFj a2VkLCB3ZSByZXRyeSBhZ2FpbiB3aXRoIHRoZQo+ICsJCSAqIHBhdGggdGhhdCBoYW5kbGVzIHBh Z2UgZmF1bHQuCj4gICAJCSAqLwo+ICAgCQlpZiAoZmFzdF91c2VyX3dyaXRlKGk5MTUtPmd0dC5t YXBwYWJsZSwgcGFnZV9iYXNlLAo+ICAgCQkJCSAgICBwYWdlX29mZnNldCwgdXNlcl9kYXRhLCBw YWdlX2xlbmd0aCkpIHsKPiAtCQkJcmV0ID0gLUVGQVVMVDsKPiAtCQkJZ290byBvdXRfZmx1c2g7 Cj4gKwkJCWhpdF9zbG93X3BhdGggPSB0cnVlOwo+ICsJCQltdXRleF91bmxvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKPiArCQkJaWYgKHNsb3dfdXNlcl9hY2Nlc3MoaTkxNS0+Z3R0Lm1hcHBhYmxl LAo+ICsJCQkJCSAgICAgcGFnZV9iYXNlLAo+ICsJCQkJCSAgICAgcGFnZV9vZmZzZXQsIHVzZXJf ZGF0YSwKPiArCQkJCQkgICAgIHBhZ2VfbGVuZ3RoLCB0cnVlKSkgewo+ICsJCQkJcmV0ID0gLUVG QVVMVDsKPiArCQkJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCQkJCWdvdG8g b3V0X2ZsdXNoOwo+ICsJCQl9Cj4gKwo+ICsJCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7Cj4gICAJCX0KPgo+ICAgCQlyZW1haW4gLT0gcGFnZV9sZW5ndGg7Cj4gQEAgLTg5Niw2ICsx MDUwLDE5IEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKPiAgIAl9Cj4KPiAgIG91dF9mbHVzaDoKPiArCWlmIChoaXRfc2xvd19wYXRoKSB7 Cj4gKwkJaWYgKHJldCA9PSAwICYmCj4gKwkJICAgIChvYmotPmJhc2UucmVhZF9kb21haW5zICYg STkxNV9HRU1fRE9NQUlOX0dUVCkgPT0gMCkgewo+ICsJCQkvKiBUaGUgdXNlciBoYXMgbW9kaWZp ZWQgdGhlIG9iamVjdCB3aGlsc3Qgd2UgdHJpZWQKPiArCQkJICogcmVhZGluZyBmcm9tIGl0LCBh bmQgd2Ugbm93IGhhdmUgbm8gaWRlYSB3aGF0IGRvbWFpbgo+ICsJCQkgKiB0aGUgcGFnZXMgc2hv dWxkIGJlIGluLiBBcyB3ZSBoYXZlIGp1c3QgYmVlbiB0b3VjaGluZwo+ICsJCQkgKiB0aGVtIGRp cmVjdGx5LCBmbHVzaCBldmVyeXRoaW5nIGJhY2sgdG8gdGhlIEdUVAo+ICsJCQkgKiBkb21haW4u Cj4gKwkJCSAqLwo+ICsJCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4o b2JqLCBmYWxzZSk7Cj4gKwkJfQo+ICsJfQo+ICsKPiAgIAlpbnRlbF9mYl9vYmpfZmx1c2gob2Jq LCBmYWxzZSwgT1JJR0lOX0dUVCk7Cj4gICBvdXRfdW5waW46Cj4gICAJaWYgKG5vZGUuYWxsb2Nh dGVkKSB7Cj4gQEAgLTExNTIsMTQgKzEzMTksNiBAQCBpOTE1X2dlbV9wd3JpdGVfaW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAkJZ290byBvdXQ7Cj4gICAJfQo+ Cj4gLQkvKiBwcmltZSBvYmplY3RzIGhhdmUgbm8gYmFja2luZyBmaWxwIHRvIEdFTSBwcmVhZC9w d3JpdGUKPiAtCSAqIHBhZ2VzIGZyb20uCj4gLQkgKi8KPiAtCWlmICghb2JqLT5iYXNlLmZpbHAp IHsKPiAtCQlyZXQgPSAtRUlOVkFMOwo+IC0JCWdvdG8gb3V0Owo+IC0JfQo+IC0KPiAgIAl0cmFj ZV9pOTE1X2dlbV9vYmplY3RfcHdyaXRlKG9iaiwgYXJncy0+b2Zmc2V0LCBhcmdzLT5zaXplKTsK Pgo+ICAgCXJldCA9IC1FRkFVTFQ7Cj4gQEAgLTExNjksMjAgKzEzMjgsMjAgQEAgaTkxNV9nZW1f cHdyaXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJICog cHJlYWQvcHdyaXRlIGN1cnJlbnRseSBhcmUgcmVhZGluZyBhbmQgd3JpdGluZyBmcm9tIHRoZSBD UFUKPiAgIAkgKiBwZXJzcGVjdGl2ZSwgcmVxdWlyaW5nIG1hbnVhbCBkZXRpbGluZyBieSB0aGUg Y2xpZW50Lgo+ICAgCSAqLwo+IC0JaWYgKG9iai0+dGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdf Tk9ORSAmJgo+IC0JICAgIG9iai0+YmFzZS53cml0ZV9kb21haW4gIT0gSTkxNV9HRU1fRE9NQUlO X0NQVSAmJgo+IC0JICAgIGNwdV93cml0ZV9uZWVkc19jbGZsdXNoKG9iaikpIHsKPiArCWlmICgh b2JqLT5iYXNlLmZpbHAgfHwgY3B1X3dyaXRlX25lZWRzX2NsZmx1c2gob2JqKSkgewo+ICAgCQly ZXQgPSBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3QoZGV2X3ByaXYsIG9iaiwgYXJncywgZmlsZSk7 Cj4gICAJCS8qIE5vdGUgdGhhdCB0aGUgZ3R0IHBhdGhzIG1pZ2h0IGZhaWwgd2l0aCBub24tcGFn ZS1iYWNrZWQgdXNlcgo+ICAgCQkgKiBwb2ludGVycyAoZS5nLiBndHQgbWFwcGluZ3Mgd2hlbiBt b3ZpbmcgZGF0YSBiZXR3ZWVuCj4gICAJCSAqIHRleHR1cmVzKS4gRmFsbGJhY2sgdG8gdGhlIHNo bWVtIHBhdGggaW4gdGhhdCBjYXNlLiAqLwo+ICAgCX0KPgo+IC0JaWYgKHJldCA9PSAtRUZBVUxU IHx8IHJldCA9PSAtRU5PU1BDKSB7Cj4gKwlpZiAocmV0ID09IC1FRkFVTFQpIHsKPiAgIAkJaWYg KG9iai0+cGh5c19oYW5kbGUpCj4gICAJCQlyZXQgPSBpOTE1X2dlbV9waHlzX3B3cml0ZShvYmos IGFyZ3MsIGZpbGUpOwo+IC0JCWVsc2UKPiArCQllbHNlIGlmIChvYmotPmJhc2UuZmlscCkKPiAg IAkJCXJldCA9IGk5MTVfZ2VtX3NobWVtX3B3cml0ZShkZXYsIG9iaiwgYXJncywgZmlsZSk7Cj4g KwkJZWxzZQo+ICsJCQlyZXQgPSAtRU5PREVWOwo+ICAgCX0KPgo+ICAgb3V0Ogo+IEBAIC0zOTc5 LDkgKzQxMzgsNyBAQCBvdXQ6Cj4gICAJICogb2JqZWN0IGlzIG5vdyBjb2hlcmVudCBhdCBpdHMg bmV3IGNhY2hlIGxldmVsICh3aXRoIHJlc3BlY3QKPiAgIAkgKiB0byB0aGUgYWNjZXNzIGRvbWFp bikuCj4gICAJICovCj4gLQlpZiAob2JqLT5jYWNoZV9kaXJ0eSAmJgo+IC0JICAgIG9iai0+YmFz ZS53cml0ZV9kb21haW4gIT0gSTkxNV9HRU1fRE9NQUlOX0NQVSAmJgo+IC0JICAgIGNwdV93cml0 ZV9uZWVkc19jbGZsdXNoKG9iaikpIHsKPiArCWlmIChvYmotPmNhY2hlX2RpcnR5ICYmIGNwdV93 cml0ZV9uZWVkc19jbGZsdXNoKG9iaikpIHsKPiAgIAkJaWYgKGk5MTVfZ2VtX2NsZmx1c2hfb2Jq ZWN0KG9iaiwgdHJ1ZSkpCj4gICAJCQlpOTE1X2dlbV9jaGlwc2V0X2ZsdXNoKG9iai0+YmFzZS5k ZXYpOwo+ICAgCX0KPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK