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: Fri, 20 Nov 2015 15:00:14 +0530 Message-ID: <1448011814.12247.32.camel@ankitprasad-desktop> References: <1447238173-31347-1-git-send-email-ankitprasad.r.sharma@intel.com> <1447238173-31347-6-git-send-email-ankitprasad.r.sharma@intel.com> <56461CA2.8040507@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 C1D356EA87 for ; Fri, 20 Nov 2015 01:49:29 -0800 (PST) In-Reply-To: <56461CA2.8040507@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 T24gRnJpLCAyMDE1LTExLTEzIGF0IDE3OjIzICswMDAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToK PiAKPiBPbiAxMS8xMS8xNSAxMDozNiwgYW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwuY29tIHdy b3RlOgo+ID4gRnJvbTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBp bnRlbC5jb20+Cj4gPgo+ID4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGV4dGVuZGluZyB0 aGUgcHJlYWQvcHdyaXRlIGZ1bmN0aW9uYWxpdHkKPiA+IGZvciBvYmplY3RzIG5vdCBiYWNrZWQg Ynkgc2htZW0uIFRoZSBhY2Nlc3Mgd2lsbCBiZSBtYWRlIHRocm91Z2gKPiA+IGd0dCBpbnRlcmZh Y2UuIFRoaXMgd2lsbCBjb3ZlciBvYmplY3RzIGJhY2tlZCBieSBzdG9sZW4gbWVtb3J5IGFzIHdl bGwKPiA+IGFzIG90aGVyIG5vbi1zaG1lbSBiYWNrZWQgb2JqZWN0cy4KPiA+Cj4gPiB2MjogRHJv cCBsb2NrcyBhcm91bmQgc2xvd191c2VyX2FjY2VzcywgcHJlZmF1bHQgdGhlIHBhZ2VzIGJlZm9y ZQo+ID4gYWNjZXNzIChDaHJpcykKPiA+Cj4gPiB2MzogUmViYXNlZCB0byB0aGUgbGF0ZXN0IGRy bS1pbnRlbC1uaWdodGx5IChBbmtpdCkKPiA+Cj4gPiB2NDogTW92ZWQgcGFnZSBiYXNlICYgb2Zm c2V0IGNhbGN1bGF0aW9ucyBvdXRzaWRlIHRoZSBjb3B5IGxvb3AsCj4gPiBjb3JyZWN0ZWQgZGF0 YSB0eXBlcyBmb3Igc2l6ZSBhbmQgb2Zmc2V0IHZhcmlhYmxlcywgY29ycmVjdGVkIGlmLWVsc2UK PiA+IGJyYWNlcyBmb3JtYXQgKFR2cnRrby9rZXJuZWxkb2NzKQo+ID4KPiA+IHY1OiBFbmFibGVk IHByZWFkL3B3cml0ZSBmb3IgYWxsIG5vbi1zaG1lbSBiYWNrZWQgb2JqZWN0cyBpbmNsdWRpbmcK PiA+IHdpdGhvdXQgdGlsaW5nIHJlc3RyaWN0aW9ucyAoQW5raXQpCj4gPgo+ID4gdjY6IFVzaW5n IHB3cml0ZV9mYXN0IGZvciBub24tc2htZW0gYmFja2VkIG9iamVjdHMgYXMgd2VsbCAoQ2hyaXMp Cj4gPgo+ID4gdjc6IFVwZGF0ZWQgY29tbWl0IG1lc3NhZ2UgKFR2cnRrbykKPiAKPiBTaW5jZSB2 NiB5b3UgaGF2ZSBhbHNvIHJlbmFtZWQgaTkxNV9nZW1fZ3R0X3JlYWQgdG8gaTkxNV9nZW1fZ3R0 X2NvcHkgCj4gYW5kIGFkZGVkIHRoZSBwd3JpdGUgc2xvdyBwYXRoIHNvIHRoZSBjb21taXQgc2hv dWxkIHNheSB0aGF0LgpZZXMsIEkgbmVlZCB0byB1cGRhdGUgdGhpcy4KPiAKPiA+Cj4gPiBUZXN0 Y2FzZTogaWd0L2dlbV9zdG9sZW4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBBbmtpdHByYXNhZCBT aGFybWEgPGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIHwgMTQ2ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0KPiA+ICAgMSBmaWxlIGNoYW5nZWQsIDEyMiBpbnNlcnRpb25zKCsp LCAyNCBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+IGluZGV4 IDJkOGM5ZTAuLmUwYjk1MDIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gPiBA QCAtNjE0LDYgKzYxNCw5OSBAQCBzaG1lbV9wcmVhZF9zbG93KHN0cnVjdCBwYWdlICpwYWdlLCBp bnQgc2htZW1fcGFnZV9vZmZzZXQsIGludCBwYWdlX2xlbmd0aCwKPiA+ICAgCXJldHVybiByZXQg PyAtIEVGQVVMVCA6IDA7Cj4gPiAgIH0KPiA+Cj4gPiArc3RhdGljIGlubGluZSB1aW50NjRfdAo+ ID4gK3Nsb3dfdXNlcl9hY2Nlc3Moc3RydWN0IGlvX21hcHBpbmcgKm1hcHBpbmcsCj4gPiArCQkg dWludDY0X3QgcGFnZV9iYXNlLCBpbnQgcGFnZV9vZmZzZXQsCj4gPiArCQkgY2hhciBfX3VzZXIg KnVzZXJfZGF0YSwKPiA+ICsJCSBpbnQgbGVuZ3RoLCBib29sIHB3cml0ZSkKPiA+ICt7Cj4gPiAr CXZvaWQgX19pb21lbSAqdmFkZHJfaW5hdG9taWM7Cj4gPiArCXZvaWQgKnZhZGRyOwo+ID4gKwl1 aW50NjRfdCB1bndyaXR0ZW47Cj4gPiArCj4gPiArCXZhZGRyX2luYXRvbWljID0gaW9fbWFwcGlu Z19tYXBfd2MobWFwcGluZywgcGFnZV9iYXNlKTsKPiA+ICsJLyogV2UgY2FuIHVzZSB0aGUgY3B1 IG1lbSBjb3B5IGZ1bmN0aW9uIGJlY2F1c2UgdGhpcyBpcyBYODYuICovCj4gPiArCXZhZGRyID0g KHZvaWQgX19mb3JjZSAqKXZhZGRyX2luYXRvbWljICsgcGFnZV9vZmZzZXQ7Cj4gPiArCWlmIChw d3JpdGUpCj4gPiArCQl1bndyaXR0ZW4gPSBfX2NvcHlfZnJvbV91c2VyKHZhZGRyLCB1c2VyX2Rh dGEsIGxlbmd0aCk7Cj4gPiArCWVsc2UKPiA+ICsJCXVud3JpdHRlbiA9IF9fY29weV90b191c2Vy KHVzZXJfZGF0YSwgdmFkZHIsIGxlbmd0aCk7Cj4gPiArCj4gPiArCWlvX21hcHBpbmdfdW5tYXAo dmFkZHJfaW5hdG9taWMpOwo+ID4gKwlyZXR1cm4gdW53cml0dGVuOwo+ID4gK30KPiA+ICsKPiA+ ICtzdGF0aWMgaW50Cj4gPiAraTkxNV9nZW1fZ3R0X2NvcHkoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiA+ICsJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVpbnQ2NF90IHNp emUsCj4gPiArCQkgICB1aW50NjRfdCBkYXRhX29mZnNldCwgdWludDY0X3QgZGF0YV9wdHIpCj4g PiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+ID4gKwljaGFyIF9fdXNlciAqdXNlcl9kYXRhOwo+ID4gKwl1aW50NjRfdCByZW1h aW47Cj4gPiArCXVpbnQ2NF90IG9mZnNldCwgcGFnZV9iYXNlOwo+ID4gKwlpbnQgcGFnZV9vZmZz ZXQsIHBhZ2VfbGVuZ3RoLCByZXQgPSAwOwo+ID4gKwo+ID4gKwlyZXQgPSBpOTE1X2dlbV9vYmpf Z2d0dF9waW4ob2JqLCAwLCBQSU5fTUFQUEFCTEUpOwo+ID4gKwlpZiAocmV0KQo+ID4gKwkJZ290 byBvdXQ7Cj4gPiArCj4gPiArCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFp bihvYmosIGZhbHNlKTsKPiA+ICsJaWYgKHJldCkKPiA+ICsJCWdvdG8gb3V0X3VucGluOwo+ID4g Kwo+ID4gKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcHV0X2ZlbmNlKG9iaik7Cj4gPiArCWlmIChy ZXQpCj4gPiArCQlnb3RvIG91dF91bnBpbjsKPiA+ICsKPiA+ICsJdXNlcl9kYXRhID0gdG9fdXNl cl9wdHIoZGF0YV9wdHIpOwo+ID4gKwlyZW1haW4gPSBzaXplOwo+ID4gKwlvZmZzZXQgPSBpOTE1 X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArIGRhdGFfb2Zmc2V0Owo+ID4gKwo+ID4gKwltdXRl eF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiA+ICsJaWYgKGxpa2VseSghaTkxNS5wcmVm YXVsdF9kaXNhYmxlKSkKPiA+ICsJCXJldCA9IGZhdWx0X2luX211bHRpcGFnZXNfd3JpdGVhYmxl KHVzZXJfZGF0YSwgcmVtYWluKTsKPiA+ICsKPiA+ICsJLyoKPiA+ICsJICogcGFnZV9vZmZzZXQg PSBvZmZzZXQgd2l0aGluIHBhZ2UKPiA+ICsJICogcGFnZV9iYXNlID0gcGFnZSBvZmZzZXQgd2l0 aGluIGFwZXJ0dXJlCj4gPiArCSAqLwo+ID4gKwlwYWdlX29mZnNldCA9IG9mZnNldF9pbl9wYWdl KG9mZnNldCk7Cj4gPiArCXBhZ2VfYmFzZSA9IG9mZnNldCAmIFBBR0VfTUFTSzsKPiA+ICsKPiA+ ICsJd2hpbGUgKHJlbWFpbiA+IDApIHsKPiA+ICsJCS8qIHBhZ2VfbGVuZ3RoID0gYnl0ZXMgdG8g Y29weSBmb3IgdGhpcyBwYWdlICovCj4gPiArCQlwYWdlX2xlbmd0aCA9IHJlbWFpbjsKPiA+ICsJ CWlmICgocGFnZV9vZmZzZXQgKyByZW1haW4pID4gUEFHRV9TSVpFKQo+ID4gKwkJCXBhZ2VfbGVu Z3RoID0gUEFHRV9TSVpFIC0gcGFnZV9vZmZzZXQ7Cj4gPiArCj4gPiArCQkvKiBUaGlzIGlzIGEg c2xvdyByZWFkL3dyaXRlIGFzIGl0IHRyaWVzIHRvIHJlYWQgZnJvbQo+ID4gKwkJICogYW5kIHdy aXRlIHRvIHVzZXIgbWVtb3J5IHdoaWNoIG1heSByZXN1bHQgaW50byBwYWdlCj4gPiArCQkgKiBm YXVsdHMKPiA+ICsJCSAqLwo+ID4gKwkJcmV0ID0gc2xvd191c2VyX2FjY2VzcyhkZXZfcHJpdi0+ Z3R0Lm1hcHBhYmxlLCBwYWdlX2Jhc2UsCj4gPiArCQkJCSAgICAgICBwYWdlX29mZnNldCwgdXNl cl9kYXRhLAo+ID4gKwkJCQkgICAgICAgcGFnZV9sZW5ndGgsIGZhbHNlKTsKPiA+ICsKPiA+ICsJ CWlmIChyZXQpIHsKPiA+ICsJCQlyZXQgPSAtRUZBVUxUOwo+ID4gKwkJCWJyZWFrOwo+ID4gKwkJ fQo+ID4gKwo+ID4gKwkJcmVtYWluIC09IHBhZ2VfbGVuZ3RoOwo+ID4gKwkJdXNlcl9kYXRhICs9 IHBhZ2VfbGVuZ3RoOwo+ID4gKwkJcGFnZV9iYXNlICs9IHBhZ2VfbGVuZ3RoOwo+ID4gKwkJcGFn ZV9vZmZzZXQgPSAwOwo+ID4gKwl9Cj4gPiArCj4gPiArCW11dGV4X2xvY2soJmRldi0+c3RydWN0 X211dGV4KTsKPiA+ICsKPiA+ICtvdXRfdW5waW46Cj4gPiArCWk5MTVfZ2VtX29iamVjdF9nZ3R0 X3VucGluKG9iaik7Cj4gPiArb3V0Ogo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ ICAgc3RhdGljIGludAo+ID4gICBpOTE1X2dlbV9zaG1lbV9wcmVhZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ID4gICAJCSAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiA+ IEBAIC03MzcsMTcgKzgzMCwxNCBAQCBpOTE1X2dlbV9wcmVhZF9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ID4gICAJCWdvdG8gb3V0Owo+ID4gICAJfQo+ID4KPiA+ IC0JLyogcHJpbWUgb2JqZWN0cyBoYXZlIG5vIGJhY2tpbmcgZmlscCB0byBHRU0gcHJlYWQvcHdy aXRlCj4gPiAtCSAqIHBhZ2VzIGZyb20uCj4gPiAtCSAqLwo+ID4gLQlpZiAoIW9iai0+YmFzZS5m aWxwKSB7Cj4gPiAtCQlyZXQgPSAtRUlOVkFMOwo+ID4gLQkJZ290byBvdXQ7Cj4gPiAtCX0KPiA+ IC0KPiA+ICAgCXRyYWNlX2k5MTVfZ2VtX29iamVjdF9wcmVhZChvYmosIGFyZ3MtPm9mZnNldCwg YXJncy0+c2l6ZSk7Cj4gPgo+ID4gLQlyZXQgPSBpOTE1X2dlbV9zaG1lbV9wcmVhZChkZXYsIG9i aiwgYXJncywgZmlsZSk7Cj4gPiArCS8qIHByZWFkIGZvciBub24gc2htZW0gYmFja2VkIG9iamVj dHMgKi8KPiA+ICsJaWYgKCFvYmotPmJhc2UuZmlscCAmJiBvYmotPnRpbGluZ19tb2RlID09IEk5 MTVfVElMSU5HX05PTkUpCj4gPiArCQlyZXQgPSBpOTE1X2dlbV9ndHRfY29weShkZXYsIG9iaiwg YXJncy0+c2l6ZSwKPiA+ICsJCQkJCWFyZ3MtPm9mZnNldCwgYXJncy0+ZGF0YV9wdHIpOwo+ID4g KwllbHNlCj4gPiArCQlyZXQgPSBpOTE1X2dlbV9zaG1lbV9wcmVhZChkZXYsIG9iaiwgYXJncywg ZmlsZSk7Cj4gPgo+ID4gICBvdXQ6Cj4gPiAgIAlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgm b2JqLT5iYXNlKTsKPiA+IEBAIC03OTMsNiArODgzLDcgQEAgaTkxNV9nZW1fZ3R0X3B3cml0ZV9m YXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ID4gICAJdWludDY0X3QgcmVtYWlu LCBvZmZzZXQ7Cj4gPiAgIAljaGFyIF9fdXNlciAqdXNlcl9kYXRhOwo+ID4gICAJaW50IHJldDsK PiA+ICsJYm9vbCBmYXVsdGVkID0gZmFsc2U7Cj4gPgo+ID4gICAJcmV0ID0gaTkxNV9nZW1fb2Jq X2dndHRfcGluKG9iaiwgMCwgUElOX01BUFBBQkxFIHwgUElOX05PTkJMT0NLKTsKPiA+ICAgCWlm IChyZXQpIHsKPiA+IEBAIC04NTEsMTEgKzk0MiwyNSBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zh c3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gPiAgIAkJLyogSWYgd2UgZ2V0IGEg ZmF1bHQgd2hpbGUgY29weWluZyBkYXRhLCB0aGVuIChwcmVzdW1hYmx5KSBvdXIKPiA+ICAgCQkg KiBzb3VyY2UgcGFnZSBpc24ndCBhdmFpbGFibGUuICBSZXR1cm4gdGhlIGVycm9yIGFuZCB3ZSds bAo+ID4gICAJCSAqIHJldHJ5IGluIHRoZSBzbG93IHBhdGguCj4gPiArCQkgKiBJZiB0aGUgb2Jq ZWN0IGlzIG5vbi1zaG1lbSBiYWNrZWQsIHdlIHJldHJ5IGFnYWluIHdpdGggdGhlCj4gPiArCQkg KiBwYXRoIHRoYXQgaGFuZGxlcyBwYWdlIGZhdWx0Lgo+ID4gICAJCSAqLwo+ID4gLQkJaWYgKGZh c3RfdXNlcl93cml0ZShpOTE1LT5ndHQubWFwcGFibGUsIHBhZ2VfYmFzZSwKPiA+IC0JCQkJICAg IHBhZ2Vfb2Zmc2V0LCB1c2VyX2RhdGEsIHBhZ2VfbGVuZ3RoKSkgewo+ID4gLQkJCXJldCA9IC1F RkFVTFQ7Cj4gPiAtCQkJZ290byBvdXRfZmx1c2g7Cj4gPiArCQlpZiAoZmF1bHRlZCB8fCBmYXN0 X3VzZXJfd3JpdGUoaTkxNS0+Z3R0Lm1hcHBhYmxlLAo+ID4gKwkJCQkJCXBhZ2VfYmFzZSwgcGFn ZV9vZmZzZXQsCj4gPiArCQkJCQkJdXNlcl9kYXRhLCBwYWdlX2xlbmd0aCkpIHsKPiA+ICsJCQlp ZiAoIW9iai0+YmFzZS5maWxwKSB7Cj4gPiArCQkJCWZhdWx0ZWQgPSB0cnVlOwo+ID4gKwkJCQlp ZiAoc2xvd191c2VyX2FjY2VzcyhpOTE1LT5ndHQubWFwcGFibGUsCj4gPiArCQkJCQkJICAgICBw YWdlX2Jhc2UsCj4gPiArCQkJCQkJICAgICBwYWdlX29mZnNldCwgdXNlcl9kYXRhLAo+ID4gKwkJ CQkJCSAgICAgcGFnZV9sZW5ndGgsIHRydWUpKSB7Cj4gPiArCQkJCQlyZXQgPSAtRUZBVUxUOwo+ ID4gKwkJCQkJZ290byBvdXRfZmx1c2g7Cj4gCj4gSSBoYXZlIGNoYXR0ZWQgd2l0aCBDaHJpcyBh Ym91dCB0aGlzIHNpbmNlIEkgd2Fzbid0IHN1cmUgaWYgeW91IHR3byB3ZXJlIAo+IGNvb2tpbmcg dGhpcyBuZXcgY29kZSBiZWhpbmQgdGhlIHNjZW5lcy4KPiAKPiBBbnl3YXksIGl0IGlzIHJlcXVp cmVkIHRvIGRyb3AgdGhlIHN0cnVjdF9tdXRleCBiZWZvcmUgYXR0ZW1wdGluZyB0aGUgCj4gc2xv dyBwYXRoLgpZZXMsIEkgbmVlZCB0byBkcm9wIHRoZSBtdXRleCBiZWZvcmUgYXR0ZW1wdGluZyB0 aGlzIHBhdGguCj4gCj4gQ2hyaXMgc3VnZ2VzdHMgYSBuZXcgdGVzdCBjYXNlIHRvIGNvdmVyIHRo aXMsIGRvaW5nIGEgcHdyaXRlIGZyb20gYSBndHQgCj4gbW1hcCB3aGljaCBzaG91bGQgdHJpZ2dl ciB0aGUgbG9ja2luZyBpbnZlcnNpb24uCj4gCj4gPiArCQkJCX0KPiA+ICsJCQl9IGVsc2Ugewo+ ID4gKwkJCQlyZXQgPSAtRUZBVUxUOwo+ID4gKwkJCQlnb3RvIG91dF9mbHVzaDsKPiA+ICsJCQl9 Cj4gPiAgIAkJfQo+ID4KPiA+ICAgCQlyZW1haW4gLT0gcGFnZV9sZW5ndGg7Cj4gPiBAQCAtMTEy MSwxNCArMTIyNiw2IEBAIGk5MTVfZ2VtX3B3cml0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAo+ID4gICAJCWdvdG8gb3V0Owo+ID4gICAJfQo+ID4KPiA+IC0JLyog cHJpbWUgb2JqZWN0cyBoYXZlIG5vIGJhY2tpbmcgZmlscCB0byBHRU0gcHJlYWQvcHdyaXRlCj4g PiAtCSAqIHBhZ2VzIGZyb20uCj4gPiAtCSAqLwo+ID4gLQlpZiAoIW9iai0+YmFzZS5maWxwKSB7 Cj4gPiAtCQlyZXQgPSAtRUlOVkFMOwo+ID4gLQkJZ290byBvdXQ7Cj4gPiAtCX0KPiA+IC0KPiA+ ICAgCXRyYWNlX2k5MTVfZ2VtX29iamVjdF9wd3JpdGUob2JqLCBhcmdzLT5vZmZzZXQsIGFyZ3Mt PnNpemUpOwo+ID4KPiA+ICAgCXJldCA9IC1FRkFVTFQ7Cj4gPiBAQCAtMTEzOSw4ICsxMjM2LDkg QEAgaTkxNV9nZW1fcHdyaXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCj4gPiAgIAkgKiBwZXJzcGVjdGl2ZSwgcmVxdWlyaW5nIG1hbnVhbCBkZXRpbGluZyBieSB0 aGUgY2xpZW50Lgo+ID4gICAJICovCj4gPiAgIAlpZiAob2JqLT50aWxpbmdfbW9kZSA9PSBJOTE1 X1RJTElOR19OT05FICYmCj4gPiAtCSAgICBvYmotPmJhc2Uud3JpdGVfZG9tYWluICE9IEk5MTVf R0VNX0RPTUFJTl9DUFUgJiYKPiA+IC0JICAgIGNwdV93cml0ZV9uZWVkc19jbGZsdXNoKG9iaikp IHsKPiA+ICsJICAgICghb2JqLT5iYXNlLmZpbHAgfHwKPiA+ICsJICAgIChvYmotPmJhc2Uud3Jp dGVfZG9tYWluICE9IEk5MTVfR0VNX0RPTUFJTl9DUFUgJiYKPiA+ICsJICAgIGNwdV93cml0ZV9u ZWVkc19jbGZsdXNoKG9iaikpKSkgewo+IAo+IEZvciBzdG9sZW4gb2JqZWN0cyB3ZSBkb24ndCBo YXZlIHRoZSBzYW1lIHRpbGluZyBsaW1pdGF0aW9uIGFzIGZvciAKPiBub3JtYWwgb25lcz8KTm8s IHdlIGhhdmUgdGhlIHNhbWUgdGlsaW5nIHJlc3RyaWN0aW9ucyBzaG1lbSBhcyB3ZWxsIGFzIHN0 b2xlbiBiYWNrZWQKb2JqZWN0cy4KClRoYW5rcywKQW5raXQKCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK