From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 07/10] drm/i915: Support for pread/pwrite from/to non shmem backed objects Date: Tue, 22 Dec 2015 11:58:33 +0000 Message-ID: <56793AE9.5090300@linux.intel.com> References: <1450765253-32104-1-git-send-email-ankitprasad.r.sharma@intel.com> <1450765253-32104-8-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 1D63589F4F for ; Tue, 22 Dec 2015 03:58:35 -0800 (PST) In-Reply-To: <1450765253-32104-8-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 CgpPbiAyMi8xMi8xNSAwNjoyMCwgYW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwuY29tIHdyb3Rl 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 aW5nIG1vZGUgY2hlY2sKPiB0byBwd3JpdGVfZmFzdCAoQ2hyaXMpCj4KPiBUZXN0Y2FzZTogaWd0 L2dlbV9zdG9sZW4KPgo+IFNpZ25lZC1vZmYtYnk6IEFua2l0cHJhc2FkIFNoYXJtYSA8YW5raXRw cmFzYWQuci5zaGFybWFAaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyB8IDE2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t Cj4gICAxIGZpbGUgY2hhbmdlZCwgMTM0IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQo+ Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggNDc4OWM2NC4uYTBlYzFhOSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC01NSw2ICs1NSw5IEBAIHN0YXRpYyBib29sIGNw dV9jYWNoZV9pc19jb2hlcmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Cj4gICBzdGF0aWMg Ym9vbCBjcHVfd3JpdGVfbmVlZHNfY2xmbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQo+ICAgewo+ICsJaWYgKG9iai0+YmFzZS53cml0ZV9kb21haW4gPT0gSTkxNV9HRU1fRE9N QUlOX0NQVSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICAgCWlmICghY3B1X2NhY2hlX2lzX2Nv aGVyZW50KG9iai0+YmFzZS5kZXYsIG9iai0+Y2FjaGVfbGV2ZWwpKQo+ICAgCQlyZXR1cm4gdHJ1 ZTsKPgo+IEBAIC02MzEsNiArNjM0LDk5IEBAIHNobWVtX3ByZWFkX3Nsb3coc3RydWN0IHBhZ2Ug KnBhZ2UsIGludCBzaG1lbV9wYWdlX29mZnNldCwgaW50IHBhZ2VfbGVuZ3RoLAo+ICAgCXJldHVy biByZXQgPyAtIEVGQVVMVCA6IDA7Cj4gICB9Cj4KPiArc3RhdGljIGlubGluZSB1aW50NjRfdAo+ ICtzbG93X3VzZXJfYWNjZXNzKHN0cnVjdCBpb19tYXBwaW5nICptYXBwaW5nLAo+ICsJCSB1aW50 NjRfdCBwYWdlX2Jhc2UsIGludCBwYWdlX29mZnNldCwKPiArCQkgY2hhciBfX3VzZXIgKnVzZXJf ZGF0YSwKPiArCQkgaW50IGxlbmd0aCwgYm9vbCBwd3JpdGUpCj4gK3sKPiArCXZvaWQgX19pb21l bSAqdmFkZHJfaW5hdG9taWM7Cj4gKwl2b2lkICp2YWRkcjsKPiArCXVpbnQ2NF90IHVud3JpdHRl bjsKPiArCj4gKwl2YWRkcl9pbmF0b21pYyA9IGlvX21hcHBpbmdfbWFwX3djKG1hcHBpbmcsIHBh Z2VfYmFzZSk7Cj4gKwkvKiBXZSBjYW4gdXNlIHRoZSBjcHUgbWVtIGNvcHkgZnVuY3Rpb24gYmVj YXVzZSB0aGlzIGlzIFg4Ni4gKi8KPiArCXZhZGRyID0gKHZvaWQgX19mb3JjZSAqKXZhZGRyX2lu YXRvbWljICsgcGFnZV9vZmZzZXQ7Cj4gKwlpZiAocHdyaXRlKQo+ICsJCXVud3JpdHRlbiA9IF9f Y29weV9mcm9tX3VzZXIodmFkZHIsIHVzZXJfZGF0YSwgbGVuZ3RoKTsKPiArCWVsc2UKPiArCQl1 bndyaXR0ZW4gPSBfX2NvcHlfdG9fdXNlcih1c2VyX2RhdGEsIHZhZGRyLCBsZW5ndGgpOwo+ICsK PiArCWlvX21hcHBpbmdfdW5tYXAodmFkZHJfaW5hdG9taWMpOwo+ICsJcmV0dXJuIHVud3JpdHRl bjsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICtpOTE1X2dlbV9ndHRfY29weShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICsJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVp bnQ2NF90IHNpemUsCj4gKwkJICAgdWludDY0X3QgZGF0YV9vZmZzZXQsIHVpbnQ2NF90IGRhdGFf cHRyKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+ICsJY2hhciBfX3VzZXIgKnVzZXJfZGF0YTsKPiArCXVpbnQ2NF90IHJlbWFp bjsKPiArCXVpbnQ2NF90IG9mZnNldCwgcGFnZV9iYXNlOwo+ICsJaW50IHBhZ2Vfb2Zmc2V0LCBw YWdlX2xlbmd0aCwgcmV0ID0gMDsKPiArCj4gKwlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4o b2JqLCAwLCBQSU5fTUFQUEFCTEUpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIG91dDsKPiArCj4g KwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7Cj4g KwlpZiAocmV0KQo+ICsJCWdvdG8gb3V0X3VucGluOwo+ICsKPiArCXJldCA9IGk5MTVfZ2VtX29i amVjdF9wdXRfZmVuY2Uob2JqKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBvdXRfdW5waW47Cj4g Kwo+ICsJdXNlcl9kYXRhID0gdG9fdXNlcl9wdHIoZGF0YV9wdHIpOwo+ICsJcmVtYWluID0gc2l6 ZTsKPiArCW9mZnNldCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopICsgZGF0YV9vZmZz ZXQ7Cj4gKwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwlpZiAobGlr ZWx5KCFpOTE1LnByZWZhdWx0X2Rpc2FibGUpKQo+ICsJCXJldCA9IGZhdWx0X2luX211bHRpcGFn ZXNfd3JpdGVhYmxlKHVzZXJfZGF0YSwgcmVtYWluKTsKPiArCj4gKwkvKgo+ICsJICogcGFnZV9v ZmZzZXQgPSBvZmZzZXQgd2l0aGluIHBhZ2UKPiArCSAqIHBhZ2VfYmFzZSA9IHBhZ2Ugb2Zmc2V0 IHdpdGhpbiBhcGVydHVyZQo+ICsJICovCj4gKwlwYWdlX29mZnNldCA9IG9mZnNldF9pbl9wYWdl KG9mZnNldCk7Cj4gKwlwYWdlX2Jhc2UgPSBvZmZzZXQgJiBQQUdFX01BU0s7Cj4gKwo+ICsJd2hp bGUgKHJlbWFpbiA+IDApIHsKPiArCQkvKiBwYWdlX2xlbmd0aCA9IGJ5dGVzIHRvIGNvcHkgZm9y IHRoaXMgcGFnZSAqLwo+ICsJCXBhZ2VfbGVuZ3RoID0gcmVtYWluOwo+ICsJCWlmICgocGFnZV9v ZmZzZXQgKyByZW1haW4pID4gUEFHRV9TSVpFKQo+ICsJCQlwYWdlX2xlbmd0aCA9IFBBR0VfU0la RSAtIHBhZ2Vfb2Zmc2V0Owo+ICsKPiArCQkvKiBUaGlzIGlzIGEgc2xvdyByZWFkL3dyaXRlIGFz IGl0IHRyaWVzIHRvIHJlYWQgZnJvbQo+ICsJCSAqIGFuZCB3cml0ZSB0byB1c2VyIG1lbW9yeSB3 aGljaCBtYXkgcmVzdWx0IGludG8gcGFnZQo+ICsJCSAqIGZhdWx0cwo+ICsJCSAqLwo+ICsJCXJl dCA9IHNsb3dfdXNlcl9hY2Nlc3MoZGV2X3ByaXYtPmd0dC5tYXBwYWJsZSwgcGFnZV9iYXNlLAo+ ICsJCQkJICAgICAgIHBhZ2Vfb2Zmc2V0LCB1c2VyX2RhdGEsCj4gKwkJCQkgICAgICAgcGFnZV9s ZW5ndGgsIGZhbHNlKTsKPiArCj4gKwkJaWYgKHJldCkgewo+ICsJCQlyZXQgPSAtRUZBVUxUOwo+ ICsJCQlicmVhazsKPiArCQl9Cj4gKwo+ICsJCXJlbWFpbiAtPSBwYWdlX2xlbmd0aDsKPiArCQl1 c2VyX2RhdGEgKz0gcGFnZV9sZW5ndGg7Cj4gKwkJcGFnZV9iYXNlICs9IHBhZ2VfbGVuZ3RoOwo+ ICsJCXBhZ2Vfb2Zmc2V0ID0gMDsKPiArCX0KPiArCj4gKwltdXRleF9sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Cj4gKwo+ICtvdXRfdW5waW46Cj4gKwlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBp bihvYmopOwo+ICtvdXQ6Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICAgc3RhdGljIGludAo+ ICAgaTkxNV9nZW1fc2htZW1fcHJlYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJICAg ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IEBAIC03NTQsMTcgKzg1MCwxNCBA QCBpOTE1X2dlbV9wcmVhZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAo+ICAgCQlnb3RvIG91dDsKPiAgIAl9Cj4KPiAtCS8qIHByaW1lIG9iamVjdHMgaGF2ZSBubyBi YWNraW5nIGZpbHAgdG8gR0VNIHByZWFkL3B3cml0ZQo+IC0JICogcGFnZXMgZnJvbS4KPiAtCSAq Lwo+IC0JaWYgKCFvYmotPmJhc2UuZmlscCkgewo+IC0JCXJldCA9IC1FSU5WQUw7Cj4gLQkJZ290 byBvdXQ7Cj4gLQl9Cj4gLQo+ICAgCXRyYWNlX2k5MTVfZ2VtX29iamVjdF9wcmVhZChvYmosIGFy Z3MtPm9mZnNldCwgYXJncy0+c2l6ZSk7Cj4KPiAtCXJldCA9IGk5MTVfZ2VtX3NobWVtX3ByZWFk KGRldiwgb2JqLCBhcmdzLCBmaWxlKTsKPiArCS8qIHByZWFkIGZvciBub24gc2htZW0gYmFja2Vk IG9iamVjdHMgKi8KPiArCWlmICghb2JqLT5iYXNlLmZpbHAgJiYgb2JqLT50aWxpbmdfbW9kZSA9 PSBJOTE1X1RJTElOR19OT05FKQo+ICsJCXJldCA9IGk5MTVfZ2VtX2d0dF9jb3B5KGRldiwgb2Jq LCBhcmdzLT5zaXplLAo+ICsJCQkJCWFyZ3MtPm9mZnNldCwgYXJncy0+ZGF0YV9wdHIpOwo+ICsJ ZWxzZSBpZiAob2JqLT5iYXNlLmZpbHApCj4gKwkJcmV0ID0gaTkxNV9nZW1fc2htZW1fcHJlYWQo ZGV2LCBvYmosIGFyZ3MsIGZpbGUpOwo+Cj4gICBvdXQ6Cj4gICAJZHJtX2dlbV9vYmplY3RfdW5y ZWZlcmVuY2UoJm9iai0+YmFzZSk7Cj4gQEAgLTgwNiwxMCArODk5LDE1IEBAIGk5MTVfZ2VtX2d0 dF9wd3JpdGVfZmFzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAkJCSBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3B3cml0ZSAqYXJncywKPiAgIAkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUpCj4gICB7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKPiAg IAlzdHJ1Y3QgZHJtX21tX25vZGUgbm9kZTsKPiAgIAl1aW50NjRfdCByZW1haW4sIG9mZnNldDsK PiAgIAljaGFyIF9fdXNlciAqdXNlcl9kYXRhOwo+ICAgCWludCByZXQ7Cj4gKwlib29sIGZhdWx0 ZWQgPSBmYWxzZTsKPiArCj4gKwlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19O T05FKQo+ICsJCXJldHVybiAtRUZBVUxUOwoKSSBhbSBwcmV0dHkgc3VyZSB3ZSBjYW4ndCByZXR1 cm4gLUVGQVVMVCBmb3IgdGhpcyBzaW5jZSBpdCB3b3VsZCBiZSB2ZXJ5IAptaXNsZWFkaW5nLiAt RUlOVkFMPwoKPgo+ICAgCXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3BpbihvYmosIDAsIFBJTl9N QVBQQUJMRSB8IFBJTl9OT05CTE9DSyk7Cj4gICAJaWYgKHJldCkgewo+IEBAIC04NjksMTEgKzk2 NywyOSBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCj4gICAJCS8qIElmIHdlIGdldCBhIGZhdWx0IHdoaWxlIGNvcHlpbmcgZGF0YSwgdGhl biAocHJlc3VtYWJseSkgb3VyCj4gICAJCSAqIHNvdXJjZSBwYWdlIGlzbid0IGF2YWlsYWJsZS4g IFJldHVybiB0aGUgZXJyb3IgYW5kIHdlJ2xsCj4gICAJCSAqIHJldHJ5IGluIHRoZSBzbG93IHBh dGguCj4gKwkJICogSWYgdGhlIG9iamVjdCBpcyBub24tc2htZW0gYmFja2VkLCB3ZSByZXRyeSBh Z2FpbiB3aXRoIHRoZQo+ICsJCSAqIHBhdGggdGhhdCBoYW5kbGVzIHBhZ2UgZmF1bHQuCj4gICAJ CSAqLwo+IC0JCWlmIChmYXN0X3VzZXJfd3JpdGUoaTkxNS0+Z3R0Lm1hcHBhYmxlLCBwYWdlX2Jh c2UsCj4gLQkJCQkgICAgcGFnZV9vZmZzZXQsIHVzZXJfZGF0YSwgcGFnZV9sZW5ndGgpKSB7Cj4g LQkJCXJldCA9IC1FRkFVTFQ7Cj4gLQkJCWdvdG8gb3V0X2ZsdXNoOwo+ICsJCWlmIChmYXVsdGVk IHx8IGZhc3RfdXNlcl93cml0ZShpOTE1LT5ndHQubWFwcGFibGUsCj4gKwkJCQkJCXBhZ2VfYmFz ZSwgcGFnZV9vZmZzZXQsCj4gKwkJCQkJCXVzZXJfZGF0YSwgcGFnZV9sZW5ndGgpKSB7Cj4gKwkJ CWlmICghb2JqLT5iYXNlLmZpbHApIHsKPiArCQkJCWZhdWx0ZWQgPSB0cnVlOwo+ICsJCQkJbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwkJCQlpZiAoc2xvd191c2VyX2FjY2Vz cyhpOTE1LT5ndHQubWFwcGFibGUsCj4gKwkJCQkJCSAgICAgcGFnZV9iYXNlLAo+ICsJCQkJCQkg ICAgIHBhZ2Vfb2Zmc2V0LCB1c2VyX2RhdGEsCj4gKwkJCQkJCSAgICAgcGFnZV9sZW5ndGgsIHRy dWUpKSB7Cj4gKwkJCQkJcmV0ID0gLUVGQVVMVDsKPiArCQkJCQltdXRleF9sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7Cj4gKwkJCQkJZ290byBvdXRfZmx1c2g7Cj4gKwkJCQl9Cj4gKwo+ICsJCQkJ bXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJCQl9IGVsc2Ugewo+ICsJCQkJcmV0 ID0gLUVGQVVMVDsKPiArCQkJCWdvdG8gb3V0X2ZsdXNoOwo+ICsJCQl9Cj4gICAJCX0KPgo+ICAg CQlyZW1haW4gLT0gcGFnZV9sZW5ndGg7Cj4gQEAgLTExNDAsMTQgKzEyNTYsNiBAQCBpOTE1X2dl bV9wd3JpdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAkJ Z290byBvdXQ7Cj4gICAJfQo+Cj4gLQkvKiBwcmltZSBvYmplY3RzIGhhdmUgbm8gYmFja2luZyBm aWxwIHRvIEdFTSBwcmVhZC9wd3JpdGUKPiAtCSAqIHBhZ2VzIGZyb20uCj4gLQkgKi8KPiAtCWlm ICghb2JqLT5iYXNlLmZpbHApIHsKPiAtCQlyZXQgPSAtRUlOVkFMOwo+IC0JCWdvdG8gb3V0Owo+ IC0JfQo+IC0KPiAgIAl0cmFjZV9pOTE1X2dlbV9vYmplY3RfcHdyaXRlKG9iaiwgYXJncy0+b2Zm c2V0LCBhcmdzLT5zaXplKTsKPgo+ICAgCXJldCA9IC1FRkFVTFQ7Cj4gQEAgLTExNTcsOSArMTI2 NSw3IEBAIGk5MTVfZ2VtX3B3cml0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAo+ICAgCSAqIHByZWFkL3B3cml0ZSBjdXJyZW50bHkgYXJlIHJlYWRpbmcgYW5kIHdy aXRpbmcgZnJvbSB0aGUgQ1BVCj4gICAJICogcGVyc3BlY3RpdmUsIHJlcXVpcmluZyBtYW51YWwg ZGV0aWxpbmcgYnkgdGhlIGNsaWVudC4KPiAgIAkgKi8KPiAtCWlmIChvYmotPnRpbGluZ19tb2Rl ID09IEk5MTVfVElMSU5HX05PTkUgJiYKPiAtCSAgICBvYmotPmJhc2Uud3JpdGVfZG9tYWluICE9 IEk5MTVfR0VNX0RPTUFJTl9DUFUgJiYKPiAtCSAgICBjcHVfd3JpdGVfbmVlZHNfY2xmbHVzaChv YmopKSB7Cj4gKwlpZiAoIW9iai0+YmFzZS5maWxwIHx8IGNwdV93cml0ZV9uZWVkc19jbGZsdXNo KG9iaikpIHsKPiAgIAkJcmV0ID0gaTkxNV9nZW1fZ3R0X3B3cml0ZV9mYXN0KGRldl9wcml2LCBv YmosIGFyZ3MsIGZpbGUpOwo+ICAgCQkvKiBOb3RlIHRoYXQgdGhlIGd0dCBwYXRocyBtaWdodCBm YWlsIHdpdGggbm9uLXBhZ2UtYmFja2VkIHVzZXIKPiAgIAkJICogcG9pbnRlcnMgKGUuZy4gZ3R0 IG1hcHBpbmdzIHdoZW4gbW92aW5nIGRhdGEgYmV0d2Vlbgo+IEBAIC0xMTY5LDggKzEyNzUsMTAg QEAgaTkxNV9nZW1fcHdyaXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCj4gICAJaWYgKHJldCA9PSAtRUZBVUxUIHx8IHJldCA9PSAtRU5PU1BDKSB7CgpEb2VzIHRo ZSBvYmplY3Rpb25hYmxlIC1FRkFVTFQgSSBjb21tZW50ZWQgb24gYWJvdmUgc2VydmUgYXMgYSB3 YXkgdG8gCmhpdCB0aGlzIHBhdGggaGVyZT8KCldvdWxkIGl0IGJlIGJldHRlciB0byBiZSBtb3Jl IGV4cGxpY2l0IGluIGhhbmRsaW5nIG9mIHB3cml0ZSBwYXRocyBmb3IgCmRpZmZlcmVudCBvYmpl Y3QgdHlwZXM/IEl0IGNvdWxkIGFsc28gc2ltcGxpZnkgdGhlIG1haW4gbG9vcCBpbiAKaTkxNV9n ZW1fZ3R0X3B3cml0ZV9mYXN0IHdoaWNoIEkgc3RpbGwgcmVhbGx5IGRpc2xpa2UuCgpNYXliZToK CglpZiAoIW9iai0+YmFzZS5maWxwIHx8IGNwdV93cml0ZV9uZWVkc19jbGZsdXNoKG9iaikpCiAg ICAJCXJldCA9IGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdCguLi4pOwoKCWlmIChyZXQgPT0gLUVG QVVMVCAmJiAhb2JqLT5iYXNlLmZpbHApIHsKCQlyZXQgPSBpOTE1X2dlbV9ndHRfcHdyaXRlX3Ns b3coLi4uKSAvKiBOZXcgZnVuY3Rpb24sIGRvaW5nIHRoZSAKc2xvd191c2VyX2FjY2VzcyBsb29w IGZvciAhZmlscCBvYmplY3RzLCBleHRyYWN0ZWQgZnJvbSBndHRfcHdyaXRlX2Zhc3QgCmFib3Zl LiAqLwoJfSBlbHNlIGlmIChyZXQgPT0gLUVGQVVMVCB8fCByZXQgPT0gLUVOT1NQQykgewoJCWlm IChvYmotPnBoeXNfaGFuZGxlKQoJCQkuLi4KCQkuLi4KCk5vdCBzdXJlIHRoYXQgSSBnb3QgaXQg cmlnaHQsIGJ1dCBpdCB3b3VsZCBiZSBtdWNoIG1vcmUgcmVhZGFibGUgYW5kIApkZWNvdXBsZWQg aWYgcG9zc2libGUuIFRob3VnaHRzPwoKPiAgIAkJaWYgKG9iai0+cGh5c19oYW5kbGUpCj4gICAJ CQlyZXQgPSBpOTE1X2dlbV9waHlzX3B3cml0ZShvYmosIGFyZ3MsIGZpbGUpOwo+IC0JCWVsc2UK PiArCQllbHNlIGlmIChvYmotPmJhc2UuZmlscCkKPiAgIAkJCXJldCA9IGk5MTVfZ2VtX3NobWVt X3B3cml0ZShkZXYsIG9iaiwgYXJncywgZmlsZSk7Cj4gKwkJZWxzZQo+ICsJCQlyZXQgPSAtRU5P REVWOwo+ICAgCX0KPgo+ICAgb3V0Ogo+IEBAIC0zODkyLDkgKzQwMDAsNyBAQCBvdXQ6Cj4gICAJ ICogb2JqZWN0IGlzIG5vdyBjb2hlcmVudCBhdCBpdHMgbmV3IGNhY2hlIGxldmVsICh3aXRoIHJl c3BlY3QKPiAgIAkgKiB0byB0aGUgYWNjZXNzIGRvbWFpbikuCj4gICAJICovCj4gLQlpZiAob2Jq LT5jYWNoZV9kaXJ0eSAmJgo+IC0JICAgIG9iai0+YmFzZS53cml0ZV9kb21haW4gIT0gSTkxNV9H RU1fRE9NQUlOX0NQVSAmJgo+IC0JICAgIGNwdV93cml0ZV9uZWVkc19jbGZsdXNoKG9iaikpIHsK PiArCWlmIChvYmotPmNhY2hlX2RpcnR5ICYmIGNwdV93cml0ZV9uZWVkc19jbGZsdXNoKG9iaikp IHsKPiAgIAkJaWYgKGk5MTVfZ2VtX2NsZmx1c2hfb2JqZWN0KG9iaiwgdHJ1ZSkpCj4gICAJCQlp OTE1X2dlbV9jaGlwc2V0X2ZsdXNoKG9iai0+YmFzZS5kZXYpOwo+ICAgCX0KPgoKUmVnYXJkcywK ClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=