From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ankitprasad Sharma Subject: Re: [PATCH 5/6] drm/i915: Support for pread/pwrite from/to non shmem backed objects Date: Thu, 10 Dec 2015 16:24:55 +0530 Message-ID: <1449744895.12247.75.camel@ankitprasad-desktop> References: <1449665182-10054-1-git-send-email-ankitprasad.r.sharma@intel.com> <1449665182-10054-6-git-send-email-ankitprasad.r.sharma@intel.com> <56685395.8040806@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 5383D6E96D for ; Thu, 10 Dec 2015 03:14:02 -0800 (PST) In-Reply-To: <56685395.8040806@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 T24gV2VkLCAyMDE1LTEyLTA5IGF0IDE2OjE1ICswMDAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToK PiBIaSwKPiAKPiBPbiAwOS8xMi8xNSAxMjo0NiwgYW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwu Y29tIHdyb3RlOgo+ID4gRnJvbTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNo YXJtYUBpbnRlbC5jb20+Cj4gPgo+ID4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGV4dGVu ZGluZyB0aGUgcHJlYWQvcHdyaXRlIGZ1bmN0aW9uYWxpdHkKPiA+IGZvciBvYmplY3RzIG5vdCBi YWNrZWQgYnkgc2htZW0uIFRoZSBhY2Nlc3Mgd2lsbCBiZSBtYWRlIHRocm91Z2gKPiA+IGd0dCBp bnRlcmZhY2UuIFRoaXMgd2lsbCBjb3ZlciBvYmplY3RzIGJhY2tlZCBieSBzdG9sZW4gbWVtb3J5 IGFzIHdlbGwKPiA+IGFzIG90aGVyIG5vbi1zaG1lbSBiYWNrZWQgb2JqZWN0cy4KPiA+Cj4gPiB2 MjogRHJvcCBsb2NrcyBhcm91bmQgc2xvd191c2VyX2FjY2VzcywgcHJlZmF1bHQgdGhlIHBhZ2Vz IGJlZm9yZQo+ID4gYWNjZXNzIChDaHJpcykKPiA+Cj4gPiB2MzogUmViYXNlZCB0byB0aGUgbGF0 ZXN0IGRybS1pbnRlbC1uaWdodGx5IChBbmtpdCkKPiA+Cj4gPiB2NDogTW92ZWQgcGFnZSBiYXNl ICYgb2Zmc2V0IGNhbGN1bGF0aW9ucyBvdXRzaWRlIHRoZSBjb3B5IGxvb3AsCj4gPiBjb3JyZWN0 ZWQgZGF0YSB0eXBlcyBmb3Igc2l6ZSBhbmQgb2Zmc2V0IHZhcmlhYmxlcywgY29ycmVjdGVkIGlm LWVsc2UKPiA+IGJyYWNlcyBmb3JtYXQgKFR2cnRrby9rZXJuZWxkb2NzKQo+ID4KPiA+IHY1OiBF bmFibGVkIHByZWFkL3B3cml0ZSBmb3IgYWxsIG5vbi1zaG1lbSBiYWNrZWQgb2JqZWN0cyBpbmNs dWRpbmcKPiA+IHdpdGhvdXQgdGlsaW5nIHJlc3RyaWN0aW9ucyAoQW5raXQpCj4gPgo+ID4gdjY6 IFVzaW5nIHB3cml0ZV9mYXN0IGZvciBub24tc2htZW0gYmFja2VkIG9iamVjdHMgYXMgd2VsbCAo Q2hyaXMpCj4gPgo+ID4gdjc6IFVwZGF0ZWQgY29tbWl0IG1lc3NhZ2UsIFJlbmFtZWQgaTkxNV9n ZW1fZ3R0X3JlYWQgdG8gaTkxNV9nZW1fZ3R0X2NvcHksCj4gPiBhZGRlZCBwd3JpdGUgc2xvdyBw YXRoIGZvciBub24tc2htZW0gYmFja2VkIG9iamVjdHMgKENocmlzL1R2cnRrbykKPiA+Cj4gPiB2 ODogVXBkYXRlZCB2NyBjb21taXQgbWVzc2FnZSwgbXV0ZXggdW5sb2NrIGFyb3VuZCBwd3JpdGUg c2xvdyBwYXRoIGZvcgo+ID4gbm9uLXNobWVtIGJhY2tlZCBvYmplY3RzIChUdnJ0a28pCj4gPgo+ ID4gVGVzdGNhc2U6IGlndC9nZW1fc3RvbGVuCj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogQW5raXRw cmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyB8IDE1MSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tCj4gPiAgIDEgZmlsZSBjaGFuZ2VkLCAxMjcgaW5zZXJ0 aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4g PiBpbmRleCBlZDk3ZGU2Li42OGVkNjdhIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+ID4gQEAgLTYxNCw2ICs2MTQsOTkgQEAgc2htZW1fcHJlYWRfc2xvdyhzdHJ1Y3QgcGFnZSAq cGFnZSwgaW50IHNobWVtX3BhZ2Vfb2Zmc2V0LCBpbnQgcGFnZV9sZW5ndGgsCj4gPiAgIAlyZXR1 cm4gcmV0ID8gLSBFRkFVTFQgOiAwOwo+ID4gICB9Cj4gPgo+ID4gK3N0YXRpYyBpbmxpbmUgdWlu dDY0X3QKPiA+ICtzbG93X3VzZXJfYWNjZXNzKHN0cnVjdCBpb19tYXBwaW5nICptYXBwaW5nLAo+ ID4gKwkJIHVpbnQ2NF90IHBhZ2VfYmFzZSwgaW50IHBhZ2Vfb2Zmc2V0LAo+ID4gKwkJIGNoYXIg X191c2VyICp1c2VyX2RhdGEsCj4gPiArCQkgaW50IGxlbmd0aCwgYm9vbCBwd3JpdGUpCj4gPiAr ewo+ID4gKwl2b2lkIF9faW9tZW0gKnZhZGRyX2luYXRvbWljOwo+ID4gKwl2b2lkICp2YWRkcjsK PiA+ICsJdWludDY0X3QgdW53cml0dGVuOwo+ID4gKwo+ID4gKwl2YWRkcl9pbmF0b21pYyA9IGlv X21hcHBpbmdfbWFwX3djKG1hcHBpbmcsIHBhZ2VfYmFzZSk7Cj4gPiArCS8qIFdlIGNhbiB1c2Ug dGhlIGNwdSBtZW0gY29weSBmdW5jdGlvbiBiZWNhdXNlIHRoaXMgaXMgWDg2LiAqLwo+ID4gKwl2 YWRkciA9ICh2b2lkIF9fZm9yY2UgKil2YWRkcl9pbmF0b21pYyArIHBhZ2Vfb2Zmc2V0Owo+ID4g KwlpZiAocHdyaXRlKQo+ID4gKwkJdW53cml0dGVuID0gX19jb3B5X2Zyb21fdXNlcih2YWRkciwg dXNlcl9kYXRhLCBsZW5ndGgpOwo+ID4gKwllbHNlCj4gPiArCQl1bndyaXR0ZW4gPSBfX2NvcHlf dG9fdXNlcih1c2VyX2RhdGEsIHZhZGRyLCBsZW5ndGgpOwo+ID4gKwo+ID4gKwlpb19tYXBwaW5n X3VubWFwKHZhZGRyX2luYXRvbWljKTsKPiA+ICsJcmV0dXJuIHVud3JpdHRlbjsKPiA+ICt9Cj4g PiArCj4gPiArc3RhdGljIGludAo+ID4gK2k5MTVfZ2VtX2d0dF9jb3B5KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gPiArCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1aW50 NjRfdCBzaXplLAo+ID4gKwkJICAgdWludDY0X3QgZGF0YV9vZmZzZXQsIHVpbnQ2NF90IGRhdGFf cHRyKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiA+ICsJY2hhciBfX3VzZXIgKnVzZXJfZGF0YTsKPiA+ICsJdWludDY0 X3QgcmVtYWluOwo+ID4gKwl1aW50NjRfdCBvZmZzZXQsIHBhZ2VfYmFzZTsKPiA+ICsJaW50IHBh Z2Vfb2Zmc2V0LCBwYWdlX2xlbmd0aCwgcmV0ID0gMDsKPiA+ICsKPiA+ICsJcmV0ID0gaTkxNV9n ZW1fb2JqX2dndHRfcGluKG9iaiwgMCwgUElOX01BUFBBQkxFKTsKPiA+ICsJaWYgKHJldCkKPiA+ ICsJCWdvdG8gb3V0Owo+ID4gKwo+ID4gKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0 dF9kb21haW4ob2JqLCBmYWxzZSk7Cj4gPiArCWlmIChyZXQpCj4gPiArCQlnb3RvIG91dF91bnBp bjsKPiA+ICsKPiA+ICsJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9mZW5jZShvYmopOwo+ID4g KwlpZiAocmV0KQo+ID4gKwkJZ290byBvdXRfdW5waW47Cj4gPiArCj4gPiArCXVzZXJfZGF0YSA9 IHRvX3VzZXJfcHRyKGRhdGFfcHRyKTsKPiA+ICsJcmVtYWluID0gc2l6ZTsKPiA+ICsJb2Zmc2V0 ID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaikgKyBkYXRhX29mZnNldDsKPiA+ICsKPiA+ ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiArCWlmIChsaWtlbHkoIWk5 MTUucHJlZmF1bHRfZGlzYWJsZSkpCj4gPiArCQlyZXQgPSBmYXVsdF9pbl9tdWx0aXBhZ2VzX3dy aXRlYWJsZSh1c2VyX2RhdGEsIHJlbWFpbik7Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIHBhZ2Vf b2Zmc2V0ID0gb2Zmc2V0IHdpdGhpbiBwYWdlCj4gPiArCSAqIHBhZ2VfYmFzZSA9IHBhZ2Ugb2Zm c2V0IHdpdGhpbiBhcGVydHVyZQo+ID4gKwkgKi8KPiA+ICsJcGFnZV9vZmZzZXQgPSBvZmZzZXRf aW5fcGFnZShvZmZzZXQpOwo+ID4gKwlwYWdlX2Jhc2UgPSBvZmZzZXQgJiBQQUdFX01BU0s7Cj4g PiArCj4gPiArCXdoaWxlIChyZW1haW4gPiAwKSB7Cj4gPiArCQkvKiBwYWdlX2xlbmd0aCA9IGJ5 dGVzIHRvIGNvcHkgZm9yIHRoaXMgcGFnZSAqLwo+ID4gKwkJcGFnZV9sZW5ndGggPSByZW1haW47 Cj4gPiArCQlpZiAoKHBhZ2Vfb2Zmc2V0ICsgcmVtYWluKSA+IFBBR0VfU0laRSkKPiA+ICsJCQlw YWdlX2xlbmd0aCA9IFBBR0VfU0laRSAtIHBhZ2Vfb2Zmc2V0Owo+ID4gKwo+ID4gKwkJLyogVGhp cyBpcyBhIHNsb3cgcmVhZC93cml0ZSBhcyBpdCB0cmllcyB0byByZWFkIGZyb20KPiA+ICsJCSAq IGFuZCB3cml0ZSB0byB1c2VyIG1lbW9yeSB3aGljaCBtYXkgcmVzdWx0IGludG8gcGFnZQo+ID4g KwkJICogZmF1bHRzCj4gPiArCQkgKi8KPiA+ICsJCXJldCA9IHNsb3dfdXNlcl9hY2Nlc3MoZGV2 X3ByaXYtPmd0dC5tYXBwYWJsZSwgcGFnZV9iYXNlLAo+ID4gKwkJCQkgICAgICAgcGFnZV9vZmZz ZXQsIHVzZXJfZGF0YSwKPiA+ICsJCQkJICAgICAgIHBhZ2VfbGVuZ3RoLCBmYWxzZSk7Cj4gPiAr Cj4gPiArCQlpZiAocmV0KSB7Cj4gPiArCQkJcmV0ID0gLUVGQVVMVDsKPiA+ICsJCQlicmVhazsK PiA+ICsJCX0KPiA+ICsKPiA+ICsJCXJlbWFpbiAtPSBwYWdlX2xlbmd0aDsKPiA+ICsJCXVzZXJf ZGF0YSArPSBwYWdlX2xlbmd0aDsKPiA+ICsJCXBhZ2VfYmFzZSArPSBwYWdlX2xlbmd0aDsKPiA+ ICsJCXBhZ2Vfb2Zmc2V0ID0gMDsKPiA+ICsJfQo+ID4gKwo+ID4gKwltdXRleF9sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7Cj4gPiArCj4gPiArb3V0X3VucGluOgo+ID4gKwlpOTE1X2dlbV9vYmpl Y3RfZ2d0dF91bnBpbihvYmopOwo+ID4gK291dDoKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICt9Cj4g PiArCj4gPiAgIHN0YXRpYyBpbnQKPiA+ICAgaTkxNV9nZW1fc2htZW1fcHJlYWQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiA+ICAgCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosCj4gPiBAQCAtNzM3LDE3ICs4MzAsMTQgQEAgaTkxNV9nZW1fcHJlYWRfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiA+ICAgCQlnb3RvIG91dDsKPiA+ICAgCX0K PiA+Cj4gPiAtCS8qIHByaW1lIG9iamVjdHMgaGF2ZSBubyBiYWNraW5nIGZpbHAgdG8gR0VNIHBy ZWFkL3B3cml0ZQo+ID4gLQkgKiBwYWdlcyBmcm9tLgo+ID4gLQkgKi8KPiA+IC0JaWYgKCFvYmot PmJhc2UuZmlscCkgewo+ID4gLQkJcmV0ID0gLUVJTlZBTDsKPiA+IC0JCWdvdG8gb3V0Owo+ID4g LQl9Cj4gPiAtCj4gPiAgIAl0cmFjZV9pOTE1X2dlbV9vYmplY3RfcHJlYWQob2JqLCBhcmdzLT5v ZmZzZXQsIGFyZ3MtPnNpemUpOwo+ID4KPiA+IC0JcmV0ID0gaTkxNV9nZW1fc2htZW1fcHJlYWQo ZGV2LCBvYmosIGFyZ3MsIGZpbGUpOwo+ID4gKwkvKiBwcmVhZCBmb3Igbm9uIHNobWVtIGJhY2tl ZCBvYmplY3RzICovCj4gPiArCWlmICghb2JqLT5iYXNlLmZpbHAgJiYgb2JqLT50aWxpbmdfbW9k ZSA9PSBJOTE1X1RJTElOR19OT05FKQo+ID4gKwkJcmV0ID0gaTkxNV9nZW1fZ3R0X2NvcHkoZGV2 LCBvYmosIGFyZ3MtPnNpemUsCj4gPiArCQkJCQlhcmdzLT5vZmZzZXQsIGFyZ3MtPmRhdGFfcHRy KTsKPiA+ICsJZWxzZQo+ID4gKwkJcmV0ID0gaTkxNV9nZW1fc2htZW1fcHJlYWQoZGV2LCBvYmos IGFyZ3MsIGZpbGUpOwo+IAo+IEhtLCBpdCB3aWxsIGVuZCB1cCBjYWxsaW5nIGk5MTVfZ2VtX3No bWVtX3ByZWFkIGZvciBub24tc2htZW0gYmFja2VkIAo+IG9iamVjdHMgaWYgdGlsaW5nIGlzIHNl dC4gU291bmRzIHdyb25nIHRvIG1lIHVubGVzcyBJIGFtIG1pc3Npbmcgc29tZXRoaW5nPwo+IApU aGFua3MgZm9yIHBvaW50aW5nIGl0IG91dCwgbmVlZCB0byBhZGQgYSBjaGVjayB0aGVyZS4KPiA+ Cj4gPiAgIG91dDoKPiA+ICAgCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2Up Owo+ID4gQEAgLTc4OSwxMCArODc5LDEyIEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiA+ICAgCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1f cHdyaXRlICphcmdzLAo+ID4gICAJCQkgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ID4gICB7Cj4g PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2Owo+ID4gICAJc3RydWN0 IGRybV9tbV9ub2RlIG5vZGU7Cj4gPiAgIAl1aW50NjRfdCByZW1haW4sIG9mZnNldDsKPiA+ICAg CWNoYXIgX191c2VyICp1c2VyX2RhdGE7Cj4gPiAgIAlpbnQgcmV0Owo+ID4gKwlib29sIGZhdWx0 ZWQgPSBmYWxzZTsKPiA+Cj4gPiAgIAlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4ob2JqLCAw LCBQSU5fTUFQUEFCTEUgfCBQSU5fTk9OQkxPQ0spOwo+ID4gICAJaWYgKHJldCkgewo+ID4gQEAg LTg1MSwxMSArOTQzLDI5IEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKPiA+ICAgCQkvKiBJZiB3ZSBnZXQgYSBmYXVsdCB3aGlsZSBjb3B5 aW5nIGRhdGEsIHRoZW4gKHByZXN1bWFibHkpIG91cgo+ID4gICAJCSAqIHNvdXJjZSBwYWdlIGlz bid0IGF2YWlsYWJsZS4gIFJldHVybiB0aGUgZXJyb3IgYW5kIHdlJ2xsCj4gPiAgIAkJICogcmV0 cnkgaW4gdGhlIHNsb3cgcGF0aC4KPiA+ICsJCSAqIElmIHRoZSBvYmplY3QgaXMgbm9uLXNobWVt IGJhY2tlZCwgd2UgcmV0cnkgYWdhaW4gd2l0aCB0aGUKPiA+ICsJCSAqIHBhdGggdGhhdCBoYW5k bGVzIHBhZ2UgZmF1bHQuCj4gPiAgIAkJICovCj4gPiAtCQlpZiAoZmFzdF91c2VyX3dyaXRlKGk5 MTUtPmd0dC5tYXBwYWJsZSwgcGFnZV9iYXNlLAo+ID4gLQkJCQkgICAgcGFnZV9vZmZzZXQsIHVz ZXJfZGF0YSwgcGFnZV9sZW5ndGgpKSB7Cj4gPiAtCQkJcmV0ID0gLUVGQVVMVDsKPiA+IC0JCQln b3RvIG91dF9mbHVzaDsKPiA+ICsJCWlmIChmYXVsdGVkIHx8IGZhc3RfdXNlcl93cml0ZShpOTE1 LT5ndHQubWFwcGFibGUsCj4gPiArCQkJCQkJcGFnZV9iYXNlLCBwYWdlX29mZnNldCwKPiA+ICsJ CQkJCQl1c2VyX2RhdGEsIHBhZ2VfbGVuZ3RoKSkgewo+ID4gKwkJCWlmICghb2JqLT5iYXNlLmZp bHApIHsKPiA+ICsJCQkJZmF1bHRlZCA9IHRydWU7Cj4gPiArCQkJCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4gKwkJCQlpZiAoc2xvd191c2VyX2FjY2VzcyhpOTE1LT5ndHQu bWFwcGFibGUsCj4gPiArCQkJCQkJICAgICBwYWdlX2Jhc2UsCj4gPiArCQkJCQkJICAgICBwYWdl X29mZnNldCwgdXNlcl9kYXRhLAo+ID4gKwkJCQkJCSAgICAgcGFnZV9sZW5ndGgsIHRydWUpKSB7 Cj4gPiArCQkJCQlyZXQgPSAtRUZBVUxUOwo+ID4gKwkJCQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOwo+ID4gKwkJCQkJZ290byBvdXRfZmx1c2g7Cj4gPiArCQkJCX0KPiA+ICsKPiA+ ICsJCQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4gKwkJCX0gZWxzZSB7Cj4g PiArCQkJCXJldCA9IC1FRkFVTFQ7Cj4gPiArCQkJCWdvdG8gb3V0X2ZsdXNoOwo+ID4gKwkJCX0K PiA+ICAgCQl9Cj4gCj4gU29tZSBxdWVzdGlvbnM6Cj4gCj4gMS4gV2hhdCBpcyB0aGUgYWR2YW50 YWdlIG9mIGRvaW5nIHRoZSBzbG93IGFjY2VzcyBmb3Igbm9uLXNobWVtIGJhY2tlZCAKPiBvYmpl Y3RzIGluc2lkZSBhIHNpbmdsZSBsb29wLCBhcyBvcHBvc2VkIHRvIGV4dHJhY3RpbmcgaXQgaW4g YSBzZXBhcmF0ZSAKPiBmdW5jdGlvbj8KPiAKPiBGb3IgZXhhbXBsZSBpOTE1X2dlbV9ndHRfcHdy aXRlX3Nsb3cgPyBUaGVuIGl0IGNvdWxkIGhhdmUgYmVlbiBjYWxsZWQgCj4gZnJvbSBpOTE1X2dl bV9wd3JpdGVfaW9jdGwgZGVwZW5kaW5nIG9uIHRoZSBtYXN0ZXIgaWYgc3RhdGVtZW50IHRoZXJl LCAKPiBmYWxsYmFjayBldGMuCj4gCj4gSSB0aGluayBpdCB3b3VsZCBiZSBjbGVhcmVyIHVubGVz cyB0aGVyZSBpcyBhIHNwZWNpYWwgcmVhc29uIGl0IG1ha2VzIAo+IHNlbnNlIHRvIGdvIHdpdGgg dGhlIGZhc3QgcGF0aCBmaXJzdCBhbmQgdGhlbiBzd2l0Y2ggdG8gc2xvdyBwYXRoIGF0IHRoZSAK PiBwb2ludCBmaXJzdCBmYXVsdCBpcyBoaXQuCkkgYW0gcmVhZHkgZm9yIGFueSBvZiB0aGUgYXBw cm9hY2gsIGJ1dCBDaHJpcyBzdWdnZXN0ZWQgdG8gZXh0ZW5kCnB3cml0ZV9mYXN0IGFzIGl0IGlz IGFscmVhZHkgYmVpbmcgdXNlZCBmb3IgZmFzdGVyIHB3cml0ZXMuCgpDaHJpcywKV291bGQgaXQg YmUgYmV0dGVyIHRvIGRvIGEgcHdyaXRlIHRvIG5vbi1zaG1lbSBiYWNrZWQgb2JqZWN0cyB2aWEg YQpzZXBhcmF0ZSBmdW5jdGlvbj8KCj4gCj4gMi4gSSBoYXZlIG5vdGljZWQgdGhlIHNobWVtIHB3 cml0ZSBzbG93cGF0aCBtYWtlcyBleHBsaWNpdCBtZW50aW9uIG9mIAo+IHBvdGVudGlhbCBjaGFu Z2VzIHRvIHRoZSBvYmplY3QgZG9tYWluIHdoaWxlIHRoZSBsb2NrIHdhcyBkcm9wcGVkIGFuZCAK PiB0YWtlcyBjYXJlIG9mIGZsdXNoaW5nIHRoZSBjYWNoZSBpbiB0aGF0IGNhc2UuCj4gCj4gSXMg dGhpcyBzb21ldGhpbmcgdGhpcyBwYXRoIHNob3VsZCBkbyBhcyB3ZWxsLCBvciBpZiBub3Qgd2h5 IG5vdD8KSSBkbyBub3QgdGhpbmsgdGhhdCB0aGlzIHBhdGggbmVlZHMgdG8gdGFrZSBjYXJlIG9m IGZsdXNoaW5nIHRoZSBjYWNoZSwKYXMgZm9yIHN0b2xlbiBiYWNrZWQgb2JqZWN0cyBhcmUgbm90 IGFjY2Vzc2libGUgdG8gQ1BVIGhlbmNlIG5vCnBvc3NpYmlsaXR5IG9mIGl0IGJlaW5nIGluIHRo ZSBDUFUgY2FjaGUgYXRsZWFzdCBmb3IgdGhlIHN0b2xlbi1iYWNrZWQKb2JqZWN0cy4gCkZvciBv dGhlciBub24tc2htZW0gYmFja2VkIG9iamVjdHMgKGRtYWJ1ZiwgdXNycHRyLCBwaHlzKSwgbWF5 IG5lZWQgc29tZQppbnB1dHMgZnJvbSBDaHJpcyBvbiBob3cgdG8gaGFuZGxlIGl0LgoKPiAKPiAK PiA+ICAgCQlyZW1haW4gLT0gcGFnZV9sZW5ndGg7Cj4gPiBAQCAtMTEyMSwxNCArMTIzMSw2IEBA IGk5MTVfZ2VtX3B3cml0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAo+ID4gICAJCWdvdG8gb3V0Owo+ID4gICAJfQo+ID4KPiA+IC0JLyogcHJpbWUgb2JqZWN0cyBo YXZlIG5vIGJhY2tpbmcgZmlscCB0byBHRU0gcHJlYWQvcHdyaXRlCj4gPiAtCSAqIHBhZ2VzIGZy b20uCj4gPiAtCSAqLwo+ID4gLQlpZiAoIW9iai0+YmFzZS5maWxwKSB7Cj4gPiAtCQlyZXQgPSAt RUlOVkFMOwo+ID4gLQkJZ290byBvdXQ7Cj4gPiAtCX0KPiA+IC0KPiA+ICAgCXRyYWNlX2k5MTVf Z2VtX29iamVjdF9wd3JpdGUob2JqLCBhcmdzLT5vZmZzZXQsIGFyZ3MtPnNpemUpOwo+ID4KPiA+ ICAgCXJldCA9IC1FRkFVTFQ7Cj4gPiBAQCAtMTEzOSw4ICsxMjQxLDkgQEAgaTkxNV9nZW1fcHdy aXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gPiAgIAkgKiBw ZXJzcGVjdGl2ZSwgcmVxdWlyaW5nIG1hbnVhbCBkZXRpbGluZyBieSB0aGUgY2xpZW50Lgo+ID4g ICAJICovCj4gPiAgIAlpZiAob2JqLT50aWxpbmdfbW9kZSA9PSBJOTE1X1RJTElOR19OT05FICYm Cj4gPiAtCSAgICBvYmotPmJhc2Uud3JpdGVfZG9tYWluICE9IEk5MTVfR0VNX0RPTUFJTl9DUFUg JiYKPiA+IC0JICAgIGNwdV93cml0ZV9uZWVkc19jbGZsdXNoKG9iaikpIHsKPiA+ICsJICAgICgh b2JqLT5iYXNlLmZpbHAgfHwKPiA+ICsJICAgIChvYmotPmJhc2Uud3JpdGVfZG9tYWluICE9IEk5 MTVfR0VNX0RPTUFJTl9DUFUgJiYKPiA+ICsJICAgIGNwdV93cml0ZV9uZWVkc19jbGZsdXNoKG9i aikpKSkgewo+ID4gICAJCXJldCA9IGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChkZXZfcHJpdiwg b2JqLCBhcmdzLCBmaWxlKTsKPiA+ICAgCQkvKiBOb3RlIHRoYXQgdGhlIGd0dCBwYXRocyBtaWdo dCBmYWlsIHdpdGggbm9uLXBhZ2UtYmFja2VkIHVzZXIKPiA+ICAgCQkgKiBwb2ludGVycyAoZS5n LiBndHQgbWFwcGluZ3Mgd2hlbiBtb3ZpbmcgZGF0YSBiZXR3ZWVuCj4gPiBAQCAtMTE1MCw3ICsx MjUzLDcgQEAgaTkxNV9nZW1fcHdyaXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCj4gPiAgIAlpZiAocmV0ID09IC1FRkFVTFQgfHwgcmV0ID09IC1FTk9TUEMpIHsK PiA+ICAgCQlpZiAob2JqLT5waHlzX2hhbmRsZSkKPiA+ICAgCQkJcmV0ID0gaTkxNV9nZW1fcGh5 c19wd3JpdGUob2JqLCBhcmdzLCBmaWxlKTsKPiA+IC0JCWVsc2UKPiA+ICsJCWVsc2UgaWYgKG9i ai0+YmFzZS5maWxwKQo+ID4gICAJCQlyZXQgPSBpOTE1X2dlbV9zaG1lbV9wd3JpdGUoZGV2LCBv YmosIGFyZ3MsIGZpbGUpOwo+ID4gICAJfQo+ID4KPiA+Cj4gCj4gUmVnYXJkcywKPiAKPiBUdnJ0 a28KPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=