From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthias Brugger Subject: Re: [PATCH 5/6] drm/mediatek: Convert to use CMA helpers Date: Tue, 22 Oct 2019 19:07:37 +0200 Message-ID: <1cbca96c-19dd-1d15-949c-7fbcc15369b4@gmail.com> References: <20191021214550.1461-1-robh@kernel.org> <20191021214550.1461-6-robh@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191021214550.1461-6-robh@kernel.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Herring , dri-devel@lists.freedesktop.org, Ulrich Hecht , Daniel Kurtz , Nicolas Boichat Cc: Neil Armstrong , David Airlie , Liviu Dudau , Laurent Pinchart , Yannick Fertre , Kevin Hilman , Xinwei Kong , Xinliang Liu , linux-rockchip@lists.infradead.org, Chen-Yu Tsai , Kieran Bingham , "James (Qian) Wang" , Alexandre Torgue , Chen Feng , linux-mediatek@lists.infradead.org, Sean Paul , linux-arm-kernel@lists.infradead.org, Philippe Cornu , Vincent Abriou , Maxime Coquelin , Rongrong Zou List-Id: linux-rockchip.vger.kernel.org SGkgUm9iLAoKT24gMjEvMTAvMjAxOSAyMzo0NSwgUm9iIEhlcnJpbmcgd3JvdGU6Cj4gVGhlIG9u bHkgcmVhc29uIHRoZSBNZWRpYXRlayBkcml2ZXIgZG9lc24ndCB1c2UgdGhlIENNQSBoZWxwZXJz IGlzIGl0Cj4gc2V0cyBETUFfQVRUUl9OT19LRVJORUxfTUFQUElORyBhbmQgZG9lcyBhIHZtYXAo KSBvbiBkZW1hbmQuIFVzaW5nCj4gdm1hcCgpIGlzIG5vdCBldmVuIGd1YXJhbnRlZWQgdG8gd29y ayBhcyBETUEgYnVmZmVycyBtYXkgbm90IGhhdmUgYQo+IHN0cnVjdCBwYWdlLiBOb3cgdGhhdCB0 aGUgQ01BIGhlbHBlcnMgc3VwcG9ydCBzZXR0aW5nCj4gRE1BX0FUVFJfTk9fS0VSTkVMX01BUFBJ TkcgYXMgbmVlZGVkIG9yIG5vdCwgY29udmVydCBNZWRpYXRlayBkcml2ZXIgdG8KPiB1c2UgQ01B IGhlbHBlcnMuCj4gCj4gQ2M6IENLIEh1IDxjay5odUBtZWRpYXRlay5jb20+Cj4gQ2M6IFBoaWxp cHAgWmFiZWwgPHAuemFiZWxAcGVuZ3V0cm9uaXguZGU+Cj4gQ2M6IERhdmlkIEFpcmxpZSA8YWly bGllZEBsaW51eC5pZT4KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+IENj OiBNYXR0aGlhcyBCcnVnZ2VyIDxtYXR0aGlhcy5iZ2dAZ21haWwuY29tPgo+IENjOiBsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKPiBDYzogbGludXgtbWVkaWF0ZWtAbGlzdHMu aW5mcmFkZWFkLm9yZwo+IFNpZ25lZC1vZmYtYnk6IFJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5v cmc+Cj4gLS0tCgpJIHRlc3RlZCB0aGlzIG9uIG15IENocm9tZWJvb2sgd2l0aCBzb21lIHBhdGNo ZXMgb24gdG9wIG9mIHY1LjQtcmMxIFsxXSwgd2hpY2gKd29yay4gSWYgSSBhZGQgeW91ciBwYXRj aGVzIG9uIHRvcCBvZiB0aGF0LCB0aGUgc3lzdGVtIGRvZXMgbm90IGJvb3QgdXAuClVuZm9ydHVu YXRlbHkgSSBkb24ndCBoYXZlIGEgc2VyaWFsIGNvbnNvbGUsIHNvIEkgd2Fzbid0IGFibGUgdG8g c2VlIGlmIHRoZXJlIGlzCmFueSBlcnJvciBtZXNzYWdlLgoKSSBjaGVja2VkIHRoZSBjb25maWcg YW5kIGRpZG4ndCBzZWUgYW55IHN1c3BpY2lvdXMKCkkgYWRkZWQgVWxpIGFuZCBzb21lIGd1eXMg ZnJvbSBjaHJvbWl1bSwgbWF5YmUgc29tZW9uZSBjYW4gcHJvdmlkZSBzb21lCmxvZ3MvaW5zaWdo dHMuCgpSZWdhcmRzLApNYXR0aGlhcwoKWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS91bGkva2VybmVs L3RyZWUvZWxtLXdvcmtpbmctNS40Cgo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZp bGUgICAgICAgIHwgICAxIC0KPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0 Yy5jICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyAg IHwgIDI4ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9mYi5jICAgIHwg ICAxIC0KPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZ2VtLmMgICB8IDI4OSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9nZW0uaCAgIHwgIDUxIC0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1f cGxhbmUuYyB8ICAgNyArLQo+ICA3IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDM2 NCBkZWxldGlvbnMoLSkKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2dlbS5jCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2RybV9nZW0uaAo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKPiBp bmRleCA4MmFlNDljNjQyMjEuLjUwYTUwZTg2NzM4ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv TWFrZWZpbGUKPiBAQCAtOCw3ICs4LDYgQEAgbWVkaWF0ZWstZHJtLXkgOj0gbXRrX2Rpc3BfY29s b3IubyBcCj4gIAkJICBtdGtfZHJtX2RkcF9jb21wLm8gXAo+ICAJCSAgbXRrX2RybV9kcnYubyBc Cj4gIAkJICBtdGtfZHJtX2ZiLm8gXAo+IC0JCSAgbXRrX2RybV9nZW0ubyBcCj4gIAkJICBtdGtf ZHJtX3BsYW5lLm8gXAo+ICAJCSAgbXRrX2RzaS5vIFwKPiAgCQkgIG10a19taXBpX3R4Lm8gXAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMgYi9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMKPiBpbmRleCAzNGE3MzE3NTU3 OTEuLjYzOGQ1N2U4YWMxMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RybV9jcnRjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9j cnRjLmMKPiBAQCAtMTEsNiArMTEsNyBAQAo+ICAKPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWlj X2hlbHBlci5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KPiArI2luY2x1 ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fcHJvYmVfaGVscGVyLmg+ Cj4gICNpbmNsdWRlIDxkcm0vZHJtX3ZibGFuay5oPgo+ICAKPiBAQCAtMTgsNyArMTksNiBAQAo+ ICAjaW5jbHVkZSAibXRrX2RybV9jcnRjLmgiCj4gICNpbmNsdWRlICJtdGtfZHJtX2RkcC5oIgo+ ICAjaW5jbHVkZSAibXRrX2RybV9kZHBfY29tcC5oIgo+IC0jaW5jbHVkZSAibXRrX2RybV9nZW0u aCIKPiAgI2luY2x1ZGUgIm10a19kcm1fcGxhbmUuaCIKPiAgCj4gIC8qKgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCj4gaW5kZXggMzUyYjgxYTdhNjcwLi4zNmYzMjUwN2U1 ZmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwo+IEBAIC0yOCw3 ICsyOCw2IEBACj4gICNpbmNsdWRlICJtdGtfZHJtX2RkcF9jb21wLmgiCj4gICNpbmNsdWRlICJt dGtfZHJtX2Rydi5oIgo+ICAjaW5jbHVkZSAibXRrX2RybV9mYi5oIgo+IC0jaW5jbHVkZSAibXRr X2RybV9nZW0uaCIKPiAgCj4gICNkZWZpbmUgRFJJVkVSX05BTUUgIm1lZGlhdGVrIgo+ICAjZGVm aW5lIERSSVZFUl9ERVNDICJNZWRpYXRlayBTb0MgRFJNIgo+IEBAIC0zMzUsMTYgKzMzNCwxNCBA QCBzdGF0aWMgdm9pZCBtdGtfZHJtX2ttc19kZWluaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkK PiAgCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRybSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBjb25z dCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG10a19kcm1fZm9wcyA9IHsKPiAtCS5vd25lciA9IFRI SVNfTU9EVUxFLAo+IC0JLm9wZW4gPSBkcm1fb3BlbiwKPiAtCS5yZWxlYXNlID0gZHJtX3JlbGVh c2UsCj4gLQkudW5sb2NrZWRfaW9jdGwgPSBkcm1faW9jdGwsCj4gLQkubW1hcCA9IG10a19kcm1f Z2VtX21tYXAsCj4gLQkucG9sbCA9IGRybV9wb2xsLAo+IC0JLnJlYWQgPSBkcm1fcmVhZCwKPiAt CS5jb21wYXRfaW9jdGwgPSBkcm1fY29tcGF0X2lvY3RsLAo+IC19Owo+ICtERUZJTkVfRFJNX0dF TV9DTUFfRk9QUyhtdGtfZHJtX2ZvcHMpOwo+ICsKPiArc3RhdGljIGludCBtdGtfZHJtX2dlbV9k dW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKPiArCQkJCSAgIHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gKwkJCQkgICBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFy Z3MpCj4gK3sKPiArCXJldHVybiBkcm1fZ2VtX2NtYV9kdW1iX2NyZWF0ZV9pbnRlcm5hbChmaWxl X3ByaXYsIGRldiwgYXJncyk7Cj4gK30KPiAgCj4gIC8qCj4gICAqIFdlIG5lZWQgdG8gb3ZlcnJp ZGUgdGhpcyBiZWNhdXNlIHRoZSBkZXZpY2UgdXNlZCB0byBpbXBvcnQgdGhlIG1lbW9yeSBpcwo+ IEBAIC0zNjEsMTggKzM1OCwxNSBAQCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm10a19kcm1fZ2Vt X3ByaW1lX2ltcG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICBzdGF0aWMgc3RydWN0IGRy bV9kcml2ZXIgbXRrX2RybV9kcml2ZXIgPSB7Cj4gIAkuZHJpdmVyX2ZlYXR1cmVzID0gRFJJVkVS X01PREVTRVQgfCBEUklWRVJfR0VNIHwgRFJJVkVSX0FUT01JQywKPiAgCj4gLQkuZ2VtX2ZyZWVf b2JqZWN0X3VubG9ja2VkID0gbXRrX2RybV9nZW1fZnJlZV9vYmplY3QsCj4gIAkuZ2VtX3ZtX29w cyA9ICZkcm1fZ2VtX2NtYV92bV9vcHMsCj4gKwkuZ2VtX2NyZWF0ZV9vYmplY3QgPSBkcm1fY21h X2dlbV9jcmVhdGVfb2JqZWN0X2RlZmF1bHRfZnVuY3MsCj4gIAkuZHVtYl9jcmVhdGUgPSBtdGtf ZHJtX2dlbV9kdW1iX2NyZWF0ZSwKPiAgCj4gIAkucHJpbWVfaGFuZGxlX3RvX2ZkID0gZHJtX2dl bV9wcmltZV9oYW5kbGVfdG9fZmQsCj4gIAkucHJpbWVfZmRfdG9faGFuZGxlID0gZHJtX2dlbV9w cmltZV9mZF90b19oYW5kbGUsCj4gIAkuZ2VtX3ByaW1lX2ltcG9ydCA9IG10a19kcm1fZ2VtX3By aW1lX2ltcG9ydCwKPiAtCS5nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlID0gbXRrX2dlbV9wcmltZV9n ZXRfc2dfdGFibGUsCj4gLQkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IG10a19nZW1fcHJp bWVfaW1wb3J0X3NnX3RhYmxlLAo+IC0JLmdlbV9wcmltZV9tbWFwID0gbXRrX2RybV9nZW1fbW1h cF9idWYsCj4gLQkuZ2VtX3ByaW1lX3ZtYXAgPSBtdGtfZHJtX2dlbV9wcmltZV92bWFwLAo+IC0J LmdlbV9wcmltZV92dW5tYXAgPSBtdGtfZHJtX2dlbV9wcmltZV92dW5tYXAsCj4gKwkuZ2VtX3By aW1lX2ltcG9ydF9zZ190YWJsZSA9IGRybV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZV92 bWFwLAo+ICsJLmdlbV9wcmltZV9tbWFwID0gZHJtX2dlbV9wcmltZV9tbWFwLAo+ICAJLmZvcHMg PSAmbXRrX2RybV9mb3BzLAo+ICAKPiAgCS5uYW1lID0gRFJJVkVSX05BTUUsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2ZiLmMgYi9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2RybV9mYi5jCj4gaW5kZXggM2YyMzBhMjhhMmRjLi41OTZiNGQ1ZWQw MDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZmIuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2ZiLmMKPiBAQCAtMTQsNyAr MTQsNiBAQAo+ICAKPiAgI2luY2x1ZGUgIm10a19kcm1fZHJ2LmgiCj4gICNpbmNsdWRlICJtdGtf ZHJtX2ZiLmgiCj4gLSNpbmNsdWRlICJtdGtfZHJtX2dlbS5oIgo+ICAKPiAgc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgbXRrX2RybV9mYl9mdW5jcyA9IHsKPiAgCS5j cmVhdGVfaGFuZGxlID0gZHJtX2dlbV9mYl9jcmVhdGVfaGFuZGxlLAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHJtX2dlbS5jCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg Y2E2NzJmMWQxNDBkLi4wMDAwMDAwMDAwMDAKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2RybV9nZW0uYwo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwyODkgKzAsMCBAQAo+IC0v LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Cj4gLS8qCj4gLSAqIENvcHly aWdodCAoYykgMjAxNSBNZWRpYVRlayBJbmMuCj4gLSAqLwo+IC0KPiAtI2luY2x1ZGUgPGxpbnV4 L2RtYS1idWYuaD4KPiAtCj4gLSNpbmNsdWRlIDxkcm0vZHJtLmg+Cj4gLSNpbmNsdWRlIDxkcm0v ZHJtX2RldmljZS5oPgo+IC0jaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KPiAtI2luY2x1ZGUgPGRy bS9kcm1fcHJpbWUuaD4KPiAtCj4gLSNpbmNsdWRlICJtdGtfZHJtX2Rydi5oIgo+IC0jaW5jbHVk ZSAibXRrX2RybV9nZW0uaCIKPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgbXRrX2RybV9nZW1fb2JqICpt dGtfZHJtX2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJCQkJCXVuc2lnbmVk IGxvbmcgc2l6ZSkKPiAtewo+IC0Jc3RydWN0IG10a19kcm1fZ2VtX29iaiAqbXRrX2dlbV9vYmo7 Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCXNpemUgPSByb3VuZF91cChzaXplLCBQQUdFX1NJWkUpOwo+ IC0KPiAtCW10a19nZW1fb2JqID0ga3phbGxvYyhzaXplb2YoKm10a19nZW1fb2JqKSwgR0ZQX0tF Uk5FTCk7Cj4gLQlpZiAoIW10a19nZW1fb2JqKQo+IC0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0p Owo+IC0KPiAtCXJldCA9IGRybV9nZW1fb2JqZWN0X2luaXQoZGV2LCAmbXRrX2dlbV9vYmotPmJh c2UsIHNpemUpOwo+IC0JaWYgKHJldCA8IDApIHsKPiAtCQlEUk1fRVJST1IoImZhaWxlZCB0byBp bml0aWFsaXplIGdlbSBvYmplY3RcbiIpOwo+IC0JCWtmcmVlKG10a19nZW1fb2JqKTsKPiAtCQly ZXR1cm4gRVJSX1BUUihyZXQpOwo+IC0JfQo+IC0KPiAtCXJldHVybiBtdGtfZ2VtX29iajsKPiAt fQo+IC0KPiAtc3RydWN0IG10a19kcm1fZ2VtX29iaiAqbXRrX2RybV9nZW1fY3JlYXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJCQkJICAgc2l6ZV90IHNpemUsIGJvb2wgYWxsb2Nfa21h cCkKPiAtewo+IC0Jc3RydWN0IG10a19kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gLQlzdHJ1Y3QgbXRrX2RybV9nZW1fb2JqICptdGtfZ2VtOwo+IC0Jc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmo7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCW10a19nZW0gPSBtdGtfZHJtX2dl bV9pbml0KGRldiwgc2l6ZSk7Cj4gLQlpZiAoSVNfRVJSKG10a19nZW0pKQo+IC0JCXJldHVybiBF UlJfQ0FTVChtdGtfZ2VtKTsKPiAtCj4gLQlvYmogPSAmbXRrX2dlbS0+YmFzZTsKPiAtCj4gLQlt dGtfZ2VtLT5kbWFfYXR0cnMgPSBETUFfQVRUUl9XUklURV9DT01CSU5FOwo+IC0KPiAtCWlmICgh YWxsb2Nfa21hcCkKPiAtCQltdGtfZ2VtLT5kbWFfYXR0cnMgfD0gRE1BX0FUVFJfTk9fS0VSTkVM X01BUFBJTkc7Cj4gLQo+IC0JbXRrX2dlbS0+Y29va2llID0gZG1hX2FsbG9jX2F0dHJzKHByaXYt PmRtYV9kZXYsIG9iai0+c2l6ZSwKPiAtCQkJCQkgICZtdGtfZ2VtLT5kbWFfYWRkciwgR0ZQX0tF Uk5FTCwKPiAtCQkJCQkgIG10a19nZW0tPmRtYV9hdHRycyk7Cj4gLQlpZiAoIW10a19nZW0tPmNv b2tpZSkgewo+IC0JCURSTV9FUlJPUigiZmFpbGVkIHRvIGFsbG9jYXRlICV6eCBieXRlIGRtYSBi dWZmZXIiLCBvYmotPnNpemUpOwo+IC0JCXJldCA9IC1FTk9NRU07Cj4gLQkJZ290byBlcnJfZ2Vt X2ZyZWU7Cj4gLQl9Cj4gLQo+IC0JaWYgKGFsbG9jX2ttYXApCj4gLQkJbXRrX2dlbS0+a3ZhZGRy ID0gbXRrX2dlbS0+Y29va2llOwo+IC0KPiAtCURSTV9ERUJVR19EUklWRVIoImNvb2tpZSA9ICVw IGRtYV9hZGRyID0gJXBhZCBzaXplID0gJXp1XG4iLAo+IC0JCQkgbXRrX2dlbS0+Y29va2llLCAm bXRrX2dlbS0+ZG1hX2FkZHIsCj4gLQkJCSBzaXplKTsKPiAtCj4gLQlyZXR1cm4gbXRrX2dlbTsK PiAtCj4gLWVycl9nZW1fZnJlZToKPiAtCWRybV9nZW1fb2JqZWN0X3JlbGVhc2Uob2JqKTsKPiAt CWtmcmVlKG10a19nZW0pOwo+IC0JcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAtfQo+IC0KPiAtdm9p ZCBtdGtfZHJtX2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKPiAt ewo+IC0Jc3RydWN0IG10a19kcm1fZ2VtX29iaiAqbXRrX2dlbSA9IHRvX210a19nZW1fb2JqKG9i aik7Cj4gLQlzdHJ1Y3QgbXRrX2RybV9wcml2YXRlICpwcml2ID0gb2JqLT5kZXYtPmRldl9wcml2 YXRlOwo+IC0KPiAtCWlmIChtdGtfZ2VtLT5zZykKPiAtCQlkcm1fcHJpbWVfZ2VtX2Rlc3Ryb3ko b2JqLCBtdGtfZ2VtLT5zZyk7Cj4gLQllbHNlCj4gLQkJZG1hX2ZyZWVfYXR0cnMocHJpdi0+ZG1h X2Rldiwgb2JqLT5zaXplLCBtdGtfZ2VtLT5jb29raWUsCj4gLQkJCSAgICAgICBtdGtfZ2VtLT5k bWFfYWRkciwgbXRrX2dlbS0+ZG1hX2F0dHJzKTsKPiAtCj4gLQkvKiByZWxlYXNlIGZpbGUgcG9p bnRlciB0byBnZW0gb2JqZWN0LiAqLwo+IC0JZHJtX2dlbV9vYmplY3RfcmVsZWFzZShvYmopOwo+ IC0KPiAtCWtmcmVlKG10a19nZW0pOwo+IC19Cj4gLQo+IC1pbnQgbXRrX2RybV9nZW1fZHVtYl9j cmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gLQkJCSAgICBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFyZ3MpCj4gLXsKPiAtCXN0 cnVjdCBtdGtfZHJtX2dlbV9vYmogKm10a19nZW07Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWFyZ3Mt PnBpdGNoID0gRElWX1JPVU5EX1VQKGFyZ3MtPndpZHRoICogYXJncy0+YnBwLCA4KTsKPiAtCWFy Z3MtPnNpemUgPSBhcmdzLT5waXRjaCAqIGFyZ3MtPmhlaWdodDsKPiAtCj4gLQltdGtfZ2VtID0g bXRrX2RybV9nZW1fY3JlYXRlKGRldiwgYXJncy0+c2l6ZSwgZmFsc2UpOwo+IC0JaWYgKElTX0VS UihtdGtfZ2VtKSkKPiAtCQlyZXR1cm4gUFRSX0VSUihtdGtfZ2VtKTsKPiAtCj4gLQkvKgo+IC0J ICogYWxsb2NhdGUgYSBpZCBvZiBpZHIgdGFibGUgd2hlcmUgdGhlIG9iaiBpcyByZWdpc3RlcmVk Cj4gLQkgKiBhbmQgaGFuZGxlIGhhcyB0aGUgaWQgd2hhdCB1c2VyIGNhbiBzZWUuCj4gLQkgKi8K PiAtCXJldCA9IGRybV9nZW1faGFuZGxlX2NyZWF0ZShmaWxlX3ByaXYsICZtdGtfZ2VtLT5iYXNl LCAmYXJncy0+aGFuZGxlKTsKPiAtCWlmIChyZXQpCj4gLQkJZ290byBlcnJfaGFuZGxlX2NyZWF0 ZTsKPiAtCj4gLQkvKiBkcm9wIHJlZmVyZW5jZSBmcm9tIGFsbG9jYXRlIC0gaGFuZGxlIGhvbGRz IGl0IG5vdy4gKi8KPiAtCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgmbXRrX2dlbS0+YmFz ZSk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLQo+IC1lcnJfaGFuZGxlX2NyZWF0ZToKPiAtCW10a19k cm1fZ2VtX2ZyZWVfb2JqZWN0KCZtdGtfZ2VtLT5iYXNlKTsKPiAtCXJldHVybiByZXQ7Cj4gLX0K PiAtCj4gLXN0YXRpYyBpbnQgbXRrX2RybV9nZW1fb2JqZWN0X21tYXAoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmosCj4gLQkJCQkgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKPiAtCj4g LXsKPiAtCWludCByZXQ7Cj4gLQlzdHJ1Y3QgbXRrX2RybV9nZW1fb2JqICptdGtfZ2VtID0gdG9f bXRrX2dlbV9vYmoob2JqKTsKPiAtCXN0cnVjdCBtdGtfZHJtX3ByaXZhdGUgKnByaXYgPSBvYmot PmRldi0+ZGV2X3ByaXZhdGU7Cj4gLQo+IC0JLyoKPiAtCSAqIGRtYV9hbGxvY19hdHRycygpIGFs bG9jYXRlZCBhIHN0cnVjdCBwYWdlIHRhYmxlIGZvciBtdGtfZ2VtLCBzbyBjbGVhcgo+IC0JICog Vk1fUEZOTUFQIGZsYWcgdGhhdCB3YXMgc2V0IGJ5IGRybV9nZW1fbW1hcF9vYmooKS9kcm1fZ2Vt X21tYXAoKS4KPiAtCSAqLwo+IC0Jdm1hLT52bV9mbGFncyAmPSB+Vk1fUEZOTUFQOwo+IC0KPiAt CXJldCA9IGRtYV9tbWFwX2F0dHJzKHByaXYtPmRtYV9kZXYsIHZtYSwgbXRrX2dlbS0+Y29va2ll LAo+IC0JCQkgICAgIG10a19nZW0tPmRtYV9hZGRyLCBvYmotPnNpemUsIG10a19nZW0tPmRtYV9h dHRycyk7Cj4gLQlpZiAocmV0KQo+IC0JCWRybV9nZW1fdm1fY2xvc2Uodm1hKTsKPiAtCj4gLQly ZXR1cm4gcmV0Owo+IC19Cj4gLQo+IC1pbnQgbXRrX2RybV9nZW1fbW1hcF9idWYoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+IC17Cj4gLQlp bnQgcmV0Owo+IC0KPiAtCXJldCA9IGRybV9nZW1fbW1hcF9vYmoob2JqLCBvYmotPnNpemUsIHZt YSk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JcmV0dXJuIG10a19kcm1f Z2VtX29iamVjdF9tbWFwKG9iaiwgdm1hKTsKPiAtfQo+IC0KPiAtaW50IG10a19kcm1fZ2VtX21t YXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+IC17Cj4g LQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKPiAtCWludCByZXQ7Cj4gLQo+IC0JcmV0ID0g ZHJtX2dlbV9tbWFwKGZpbHAsIHZtYSk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4g LQo+IC0Jb2JqID0gdm1hLT52bV9wcml2YXRlX2RhdGE7Cj4gLQo+IC0JLyoKPiAtCSAqIFNldCB2 bV9wZ29mZiAodXNlZCBhcyBhIGZha2UgYnVmZmVyIG9mZnNldCBieSBEUk0pIHRvIDAgYW5kIG1h cCB0aGUKPiAtCSAqIHdob2xlIGJ1ZmZlciBmcm9tIHRoZSBzdGFydC4KPiAtCSAqLwo+IC0Jdm1h LT52bV9wZ29mZiA9IDA7Cj4gLQo+IC0JcmV0dXJuIG10a19kcm1fZ2VtX29iamVjdF9tbWFwKG9i aiwgdm1hKTsKPiAtfQo+IC0KPiAtLyoKPiAtICogQWxsb2NhdGUgYSBzZ190YWJsZSBmb3IgdGhp cyBHRU0gb2JqZWN0Lgo+IC0gKiBOb3RlOiBCb3RoIHRoZSB0YWJsZSdzIGNvbnRlbnRzLCBhbmQg dGhlIHNnX3RhYmxlIGl0c2VsZiBtdXN0IGJlIGZyZWVkIGJ5Cj4gLSAqICAgICAgIHRoZSBjYWxs ZXIuCj4gLSAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXdseSBhbGxvY2F0ZWQgc2dfdGFi bGUsIG9yIGFuIEVSUl9QVFIoKSBlcnJvci4KPiAtICovCj4gLXN0cnVjdCBzZ190YWJsZSAqbXRr X2dlbV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gLXsK PiAtCXN0cnVjdCBtdGtfZHJtX2dlbV9vYmogKm10a19nZW0gPSB0b19tdGtfZ2VtX29iaihvYmop Owo+IC0Jc3RydWN0IG10a19kcm1fcHJpdmF0ZSAqcHJpdiA9IG9iai0+ZGV2LT5kZXZfcHJpdmF0 ZTsKPiAtCXN0cnVjdCBzZ190YWJsZSAqc2d0Owo+IC0JaW50IHJldDsKPiAtCj4gLQlzZ3QgPSBr emFsbG9jKHNpemVvZigqc2d0KSwgR0ZQX0tFUk5FTCk7Cj4gLQlpZiAoIXNndCkKPiAtCQlyZXR1 cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAtCj4gLQlyZXQgPSBkbWFfZ2V0X3NndGFibGVfYXR0cnMo cHJpdi0+ZG1hX2Rldiwgc2d0LCBtdGtfZ2VtLT5jb29raWUsCj4gLQkJCQkgICAgbXRrX2dlbS0+ ZG1hX2FkZHIsIG9iai0+c2l6ZSwKPiAtCQkJCSAgICBtdGtfZ2VtLT5kbWFfYXR0cnMpOwo+IC0J aWYgKHJldCkgewo+IC0JCURSTV9FUlJPUigiZmFpbGVkIHRvIGFsbG9jYXRlIHNndCwgJWRcbiIs IHJldCk7Cj4gLQkJa2ZyZWUoc2d0KTsKPiAtCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+IC0JfQo+ IC0KPiAtCXJldHVybiBzZ3Q7Cj4gLX0KPiAtCj4gLXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqbXRr X2dlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAtCQkJ c3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLCBzdHJ1Y3Qgc2dfdGFibGUgKnNnKQo+ IC17Cj4gLQlzdHJ1Y3QgbXRrX2RybV9nZW1fb2JqICptdGtfZ2VtOwo+IC0JaW50IHJldDsKPiAt CXN0cnVjdCBzY2F0dGVybGlzdCAqczsKPiAtCXVuc2lnbmVkIGludCBpOwo+IC0JZG1hX2FkZHJf dCBleHBlY3RlZDsKPiAtCj4gLQltdGtfZ2VtID0gbXRrX2RybV9nZW1faW5pdChkZXYsIGF0dGFj aC0+ZG1hYnVmLT5zaXplKTsKPiAtCj4gLQlpZiAoSVNfRVJSKG10a19nZW0pKQo+IC0JCXJldHVy biBFUlJfQ0FTVChtdGtfZ2VtKTsKPiAtCj4gLQlleHBlY3RlZCA9IHNnX2RtYV9hZGRyZXNzKHNn LT5zZ2wpOwo+IC0JZm9yX2VhY2hfc2coc2ctPnNnbCwgcywgc2ctPm5lbnRzLCBpKSB7Cj4gLQkJ aWYgKHNnX2RtYV9hZGRyZXNzKHMpICE9IGV4cGVjdGVkKSB7Cj4gLQkJCURSTV9FUlJPUigic2df dGFibGUgaXMgbm90IGNvbnRpZ3VvdXMiKTsKPiAtCQkJcmV0ID0gLUVJTlZBTDsKPiAtCQkJZ290 byBlcnJfZ2VtX2ZyZWU7Cj4gLQkJfQo+IC0JCWV4cGVjdGVkID0gc2dfZG1hX2FkZHJlc3Mocykg KyBzZ19kbWFfbGVuKHMpOwo+IC0JfQo+IC0KPiAtCW10a19nZW0tPmRtYV9hZGRyID0gc2dfZG1h X2FkZHJlc3Moc2ctPnNnbCk7Cj4gLQltdGtfZ2VtLT5zZyA9IHNnOwo+IC0KPiAtCXJldHVybiAm bXRrX2dlbS0+YmFzZTsKPiAtCj4gLWVycl9nZW1fZnJlZToKPiAtCWtmcmVlKG10a19nZW0pOwo+ IC0JcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAtfQo+IC0KPiAtdm9pZCAqbXRrX2RybV9nZW1fcHJp bWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKPiAtewo+IC0Jc3RydWN0IG10a19k cm1fZ2VtX29iaiAqbXRrX2dlbSA9IHRvX210a19nZW1fb2JqKG9iaik7Cj4gLQlzdHJ1Y3Qgc2df dGFibGUgKnNndDsKPiAtCXN0cnVjdCBzZ19wYWdlX2l0ZXIgaXRlcjsKPiAtCXVuc2lnbmVkIGlu dCBucGFnZXM7Cj4gLQl1bnNpZ25lZCBpbnQgaSA9IDA7Cj4gLQo+IC0JaWYgKG10a19nZW0tPmt2 YWRkcikKPiAtCQlyZXR1cm4gbXRrX2dlbS0+a3ZhZGRyOwo+IC0KPiAtCXNndCA9IG10a19nZW1f cHJpbWVfZ2V0X3NnX3RhYmxlKG9iaik7Cj4gLQlpZiAoSVNfRVJSKHNndCkpCj4gLQkJcmV0dXJu IE5VTEw7Cj4gLQo+IC0JbnBhZ2VzID0gb2JqLT5zaXplID4+IFBBR0VfU0hJRlQ7Cj4gLQltdGtf Z2VtLT5wYWdlcyA9IGtjYWxsb2MobnBhZ2VzLCBzaXplb2YoKm10a19nZW0tPnBhZ2VzKSwgR0ZQ X0tFUk5FTCk7Cj4gLQlpZiAoIW10a19nZW0tPnBhZ2VzKQo+IC0JCWdvdG8gb3V0Owo+IC0KPiAt CWZvcl9lYWNoX3NnX3BhZ2Uoc2d0LT5zZ2wsICZpdGVyLCBzZ3QtPm9yaWdfbmVudHMsIDApIHsK PiAtCQltdGtfZ2VtLT5wYWdlc1tpKytdID0gc2dfcGFnZV9pdGVyX3BhZ2UoJml0ZXIpOwo+IC0J CWlmIChpID4gbnBhZ2VzKQo+IC0JCQlicmVhazsKPiAtCX0KPiAtCW10a19nZW0tPmt2YWRkciA9 IHZtYXAobXRrX2dlbS0+cGFnZXMsIG5wYWdlcywgVk1fTUFQLAo+IC0JCQkgICAgICAgcGdwcm90 X3dyaXRlY29tYmluZShQQUdFX0tFUk5FTCkpOwo+IC0KPiAtb3V0Ogo+IC0Ja2ZyZWUoKHZvaWQg KilzZ3QpOwo+IC0KPiAtCXJldHVybiBtdGtfZ2VtLT5rdmFkZHI7Cj4gLX0KPiAtCj4gLXZvaWQg bXRrX2RybV9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lk ICp2YWRkcikKPiAtewo+IC0Jc3RydWN0IG10a19kcm1fZ2VtX29iaiAqbXRrX2dlbSA9IHRvX210 a19nZW1fb2JqKG9iaik7Cj4gLQo+IC0JaWYgKCFtdGtfZ2VtLT5wYWdlcykKPiAtCQlyZXR1cm47 Cj4gLQo+IC0JdnVubWFwKHZhZGRyKTsKPiAtCW10a19nZW0tPmt2YWRkciA9IDA7Cj4gLQlrZnJl ZSgodm9pZCAqKW10a19nZW0tPnBhZ2VzKTsKPiAtfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9nZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfZHJtX2dlbS5oCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggZmY5Zjk3NmQ5 ODA3Li4wMDAwMDAwMDAwMDAKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9nZW0uaAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSw1MSArMCwwIEBACj4gLS8qIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KPiAtLyoKPiAtICogQ29weXJpZ2h0IChj KSAyMDE1IE1lZGlhVGVrIEluYy4KPiAtICovCj4gLQo+IC0jaWZuZGVmIF9NVEtfRFJNX0dFTV9I Xwo+IC0jZGVmaW5lIF9NVEtfRFJNX0dFTV9IXwo+IC0KPiAtI2luY2x1ZGUgPGRybS9kcm1fZ2Vt Lmg+Cj4gLQo+IC0vKgo+IC0gKiBtdGsgZHJtIGJ1ZmZlciBzdHJ1Y3R1cmUuCj4gLSAqCj4gLSAq IEBiYXNlOiBhIGdlbSBvYmplY3QuCj4gLSAqCS0gYSBuZXcgaGFuZGxlIHRvIHRoaXMgZ2VtIG9i amVjdCB3b3VsZCBiZSBjcmVhdGVkCj4gLSAqCWJ5IGRybV9nZW1faGFuZGxlX2NyZWF0ZSgpLgo+ IC0gKiBAY29va2llOiB0aGUgcmV0dXJuIHZhbHVlIG9mIGRtYV9hbGxvY19hdHRycygpLCBrZWVw IGl0IGZvciBkbWFfZnJlZV9hdHRycygpCj4gLSAqIEBrdmFkZHI6IGtlcm5lbCB2aXJ0dWFsIGFk ZHJlc3Mgb2YgZ2VtIGJ1ZmZlci4KPiAtICogQGRtYV9hZGRyOiBkbWEgYWRkcmVzcyBvZiBnZW0g YnVmZmVyLgo+IC0gKiBAZG1hX2F0dHJzOiBkbWEgYXR0cmlidXRlcyBvZiBnZW0gYnVmZmVyLgo+ IC0gKgo+IC0gKiBQLlMuIHRoaXMgb2JqZWN0IHdvdWxkIGJlIHRyYW5zZmVycmVkIHRvIHVzZXIg YXMga21zX2JvLmhhbmRsZSBzbwo+IC0gKgl1c2VyIGNhbiBhY2Nlc3MgdGhlIGJ1ZmZlciB0aHJv dWdoIGttc19iby5oYW5kbGUuCj4gLSAqLwo+IC1zdHJ1Y3QgbXRrX2RybV9nZW1fb2JqIHsKPiAt CXN0cnVjdCBkcm1fZ2VtX29iamVjdAliYXNlOwo+IC0Jdm9pZAkJCSpjb29raWU7Cj4gLQl2b2lk CQkJKmt2YWRkcjsKPiAtCWRtYV9hZGRyX3QJCWRtYV9hZGRyOwo+IC0JdW5zaWduZWQgbG9uZwkJ ZG1hX2F0dHJzOwo+IC0Jc3RydWN0IHNnX3RhYmxlCQkqc2c7Cj4gLQlzdHJ1Y3QgcGFnZQkJKipw YWdlczsKPiAtfTsKPiAtCj4gLSNkZWZpbmUgdG9fbXRrX2dlbV9vYmooeCkJY29udGFpbmVyX29m KHgsIHN0cnVjdCBtdGtfZHJtX2dlbV9vYmosIGJhc2UpCj4gLQo+IC12b2lkIG10a19kcm1fZ2Vt X2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtKTsKPiAtc3RydWN0IG10a19k cm1fZ2VtX29iaiAqbXRrX2RybV9nZW1fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNp emVfdCBzaXplLAo+IC0JCQkJCSAgIGJvb2wgYWxsb2Nfa21hcCk7Cj4gLWludCBtdGtfZHJtX2dl bV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwgc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiAtCQkJICAgIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncyk7Cj4g LWludCBtdGtfZHJtX2dlbV9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnZtYSk7Cj4gLWludCBtdGtfZHJtX2dlbV9tbWFwX2J1ZihzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaiwKPiAtCQkJIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKPiAtc3RydWN0 IHNnX3RhYmxlICptdGtfZ2VtX3ByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaik7Cj4gLXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqbXRrX2dlbV9wcmltZV9pbXBvcnRf c2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAtCQkJc3RydWN0IGRtYV9idWZfYXR0 YWNobWVudCAqYXR0YWNoLCBzdHJ1Y3Qgc2dfdGFibGUgKnNnKTsKPiAtdm9pZCAqbXRrX2RybV9n ZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4gLXZvaWQgbXRrX2Ry bV9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRk cik7Cj4gLQo+IC0jZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19kcm1fcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX3BsYW5l LmMKPiBpbmRleCA1ODRhOWVjYWRjZTYuLjhmMjU2NjAyZjA3NSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9wbGFuZS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kcm1fcGxhbmUuYwo+IEBAIC04LDEzICs4LDE0IEBACj4gICNpbmNs dWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fZm91cmNj Lmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJt L2RybV9wcmludC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgo+ICAj aW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmg+Cj4gIAo+ICAjaW5jbHVk ZSAibXRrX2RybV9jcnRjLmgiCj4gICNpbmNsdWRlICJtdGtfZHJtX2RkcF9jb21wLmgiCj4gICNp bmNsdWRlICJtdGtfZHJtX2Rydi5oIgo+ICAjaW5jbHVkZSAibXRrX2RybV9mYi5oIgo+IC0jaW5j bHVkZSAibXRrX2RybV9nZW0uaCIKPiAgI2luY2x1ZGUgIm10a19kcm1fcGxhbmUuaCIKPiAgCj4g IHN0YXRpYyBjb25zdCB1MzIgZm9ybWF0c1tdID0gewo+IEBAIC0xMDgsNyArMTA5LDYgQEAgc3Rh dGljIHZvaWQgbXRrX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBwbGFuZS0+c3RhdGUtPmNydGM7Cj4gIAlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lLT5zdGF0ZS0+ZmI7Cj4gIAlzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKmdlbTsKPiAtCXN0cnVjdCBtdGtfZHJtX2dlbV9vYmogKm10a19nZW07Cj4g IAl1bnNpZ25lZCBpbnQgcGl0Y2gsIGZvcm1hdDsKPiAgCWRtYV9hZGRyX3QgYWRkcjsKPiAgCj4g QEAgLTExNiw4ICsxMTYsNyBAQCBzdGF0aWMgdm9pZCBtdGtfcGxhbmVfYXRvbWljX3VwZGF0ZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQlyZXR1cm47Cj4gIAo+ICAJZ2VtID0gZmItPm9i alswXTsKPiAtCW10a19nZW0gPSB0b19tdGtfZ2VtX29iaihnZW0pOwo+IC0JYWRkciA9IG10a19n ZW0tPmRtYV9hZGRyOwo+ICsJYWRkciA9IHRvX2RybV9nZW1fY21hX29iaihnZW0pLT5wYWRkcjsK PiAgCXBpdGNoID0gZmItPnBpdGNoZXNbMF07Cj4gIAlmb3JtYXQgPSBmYi0+Zm9ybWF0LT5mb3Jt YXQ7Cj4gIAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=