From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kamil Debski Subject: RE: [PATCH 4/5] [media] imx-ipu: Add ipu media common code Date: Fri, 10 Apr 2015 16:22:06 +0200 Message-ID: <03bb01d07399$b9995a50$2ccc0ef0$%debski@samsung.com> References: <1426607290-13380-1-git-send-email-p.zabel@pengutronix.de> <1426607290-13380-5-git-send-email-p.zabel@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mailout3.w1.samsung.com (mailout3.w1.samsung.com [210.118.77.13]) by gabe.freedesktop.org (Postfix) with ESMTP id B901C6E97A for ; Fri, 10 Apr 2015 07:22:10 -0700 (PDT) Received: from eucpsbgm2.samsung.com (unknown [203.254.199.245]) by mailout3.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0NML00HEIHFNDJA0@mailout3.w1.samsung.com> for dri-devel@lists.freedesktop.org; Fri, 10 Apr 2015 15:26:11 +0100 (BST) In-reply-to: <1426607290-13380-5-git-send-email-p.zabel@pengutronix.de> Content-language: pl List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: 'Philipp Zabel' , linux-media@vger.kernel.org Cc: 'Mauro Carvalho Chehab' , dri-devel@lists.freedesktop.org, 'Hans Verkuil' , kernel@pengutronix.de, 'Steve Longerbeam' , 'Jean-Michel Hautbois' List-Id: dri-devel@lists.freedesktop.org RnJvbTogbGludXgtbWVkaWEtb3duZXJAdmdlci5rZXJuZWwub3JnIFttYWlsdG86bGludXgtbWVk aWEtCm93bmVyQHZnZXIua2VybmVsLm9yZ10gT24gQmVoYWxmIE9mIFBoaWxpcHAgWmFiZWwKU2Vu dDogVHVlc2RheSwgTWFyY2ggMTcsIDIwMTUgNDo0OCBQTQo+IFRvOiBsaW51eC1tZWRpYUB2Z2Vy Lmtlcm5lbC5vcmcKPiBDYzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgRGF2aWQg QWlybGllOyBNYXVybyBDYXJ2YWxobwo+IENoZWhhYjsgU3RldmUgTG9uZ2VyYmVhbTsgSGFucyBW ZXJrdWlsOyBLYW1pbCBEZWJza2k7IElhbiBNb2x0b247IEplYW4tCj4gTWljaGVsIEhhdXRib2lz OyBrZXJuZWxAcGVuZ3V0cm9uaXguZGU7IFNhc2NoYSBIYXVlcjsgTHVjYXMgU3RhY2g7Cj4gUGhp bGlwcCBaYWJlbAo+IFN1YmplY3Q6IFtQQVRDSCA0LzVdIFttZWRpYV0gaW14LWlwdTogQWRkIGlw dSBtZWRpYSBjb21tb24gY29kZQo+IAo+IEZyb206IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5n dXRyb25peC5kZT4KPiAKPiBBZGQgdmlkZW80bGludXggQVBJIHJvdXRpbmVzIGNvbW1vbiB0byBk cml2ZXJzIGZvciB1bml0cyB0aGF0IGFjY2VwdCBvcgo+IHByb3ZpZGUgdmlkZW8gZGF0YSB2aWEg dGhlIGkuTVggSVBVIElETUFDIGNoYW5uZWxzLCBzdWNoIGFzIHNjYWxlciBvcgo+IGRlaW50ZXJs YWNlciBkcml2ZXJzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBw ZW5ndXRyb25peC5kZT4KPiBTaWduZWQtb2ZmLWJ5OiBMdWNhcyBTdGFjaCA8bC5zdGFjaEBwZW5n dXRyb25peC5kZT4KPiBTaWduZWQtb2ZmLWJ5OiBQaGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1 dHJvbml4LmRlPgoKQWNrZWQtYnk6IEthbWlsIERlYnNraSA8ay5kZWJza2lAc2Ftc3VuZy5jb20+ Cgo+IC0tLQo+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcgICAgICAgfCAgIDIgKwo+ ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL01ha2VmaWxlICAgICAgfCAgIDEgKwo+ICBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL2lteC9LY29uZmlnICAgfCAgIDIgKwo+ICBkcml2ZXJzL21lZGlhL3Bs YXRmb3JtL2lteC9NYWtlZmlsZSAgfCAgIDEgKwo+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2lt eC9pbXgtaXB1LmMgfCAzMTMKPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9pbXgtaXB1LmggfCAgMzUgKysrKwo+ICA2IGZp bGVzIGNoYW5nZWQsIDM1NCBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9LY29uZmlnCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9NYWtlZmlsZQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9pbXgvaW14LWlwdS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9pbXgtaXB1LmgKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9LY29uZmlnCj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tj b25maWcgaW5kZXggZDliODcyYi4uNjUwYTlhNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL0tjb25maWcKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcK PiBAQCAtMjksNiArMjksOCBAQCBjb25maWcgVklERU9fVklBX0NBTUVSQQo+IAo+ICBzb3VyY2Ug ImRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vZGF2aW5jaS9LY29uZmlnIgo+IAo+ICtzb3VyY2UgImRy aXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L0tjb25maWciCj4gKwo+ICBzb3VyY2UgImRyaXZlcnMv bWVkaWEvcGxhdGZvcm0vb21hcC9LY29uZmlnIgo+IAo+ICBzb3VyY2UgImRyaXZlcnMvbWVkaWEv cGxhdGZvcm0vYmxhY2tmaW4vS2NvbmZpZyIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9NYWtlZmlsZQo+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZSBpbmRl eCAzZWMxNTQ3Li4yZTM1NTgxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v TWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL01ha2VmaWxlCj4gQEAgLTQ0 LDYgKzQ0LDcgQEAgb2JqLSQoQ09ORklHX1NPQ19DQU1FUkEpCQkrPSBzb2NfY2FtZXJhLwo+IAo+ ICBvYmotJChDT05GSUdfVklERU9fUkVORVNBU19WU1AxKQkrPSB2c3AxLwo+IAo+ICtvYmoteQkr PSBpbXgvCj4gIG9iai15CSs9IG9tYXAvCj4gCj4gIG9iai0kKENPTkZJR19WSURFT19BTTQzN1hf VlBGRSkJCSs9IGFtNDM3eC8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9p bXgvS2NvbmZpZwo+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9pbXgvS2NvbmZpZwo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYTkwYzk3Mwo+IC0tLSAvZGV2L251bGwK PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9LY29uZmlnCj4gQEAgLTAsMCArMSwy IEBACj4gK2NvbmZpZyBWSURFT19JTVhfSVBVX0NPTU1PTgo+ICsJdHJpc3RhdGUKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9pbXgvTWFrZWZpbGUKPiBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vaW14L01ha2VmaWxlCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwLi41ZGUxMTljCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vaW14L01ha2VmaWxlCj4gQEAgLTAsMCArMSBAQAo+ICtvYmotJChDT05GSUdfVklERU9f SU1YX0lQVV9DT01NT04pCSs9IGlteC1pcHUubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL2lteC9pbXgtaXB1LmMKPiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L2lt eC1pcHUuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYzFiODYzNwo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9pbXgtaXB1 LmMKPiBAQCAtMCwwICsxLDMxMyBAQAo+ICsvKgo+ICsgKiBpLk1YIElQVXYzIGNvbW1vbiB2NGwy IHN1cHBvcnQKPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDExIFNhc2NoYSBIYXVlciwgUGVu Z3V0cm9uaXgKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+ICsgKiBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgo+ICsgKiBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICog VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiArICogR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KPiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItY29tbW9uLmg+Cj4gKyNpbmNsdWRlIDxtZWRpYS92 NGwyLWRldi5oPgo+ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1pb2N0bC5oPgo+ICsKPiArI2luY2x1 ZGUgImlteC1pcHUuaCIKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgaXB1X2ZtdCBpcHVfZm10X3l1dltd ID0gewo+ICsJewo+ICsJCS5mb3VyY2MgPSBWNEwyX1BJWF9GTVRfWVVWNDIwLAo+ICsJCS5uYW1l ID0gIllVViA0OjI6MCBwbGFuYXIsIFlDYkNyIiwKPiArCQkuYnl0ZXNfcGVyX3BpeGVsID0gMSwK PiArCX0sIHsKPiArCQkuZm91cmNjID0gVjRMMl9QSVhfRk1UX1lWVTQyMCwKPiArCQkubmFtZSA9 ICJZVVYgNDoyOjAgcGxhbmFyLCBZQ3JDYiIsCj4gKwkJLmJ5dGVzX3Blcl9waXhlbCA9IDEsCj4g Kwl9LCB7Cj4gKwkJLmZvdXJjYyA9IFY0TDJfUElYX0ZNVF9ZVVY0MjJQLAo+ICsJCS5uYW1lID0g IllVViA0OjI6MiBwbGFuYXIsIFlDYkNyIiwKPiArCQkuYnl0ZXNfcGVyX3BpeGVsID0gMSwKPiAr CX0sIHsKPiArCQkuZm91cmNjID0gVjRMMl9QSVhfRk1UX05WMTIsCj4gKwkJLm5hbWUgPSAiWVVW IDQ6MjowIHBhcnRpYWwgaW50ZXJsZWF2ZWQsIFlDYkNyIiwKPiArCQkuYnl0ZXNfcGVyX3BpeGVs ID0gMSwKPiArCX0sIHsKPiArCQkuZm91cmNjID0gVjRMMl9QSVhfRk1UX1VZVlksCj4gKwkJLm5h bWUgPSAiNDoyOjIsIHBhY2tlZCwgVVlWWSIsCj4gKwkJLmJ5dGVzX3Blcl9waXhlbCA9IDIsCj4g Kwl9LCB7Cj4gKwkJLmZvdXJjYyA9IFY0TDJfUElYX0ZNVF9ZVVlWLAo+ICsJCS5uYW1lID0gIjQ6 MjoyLCBwYWNrZWQsIFlVWVYiLAo+ICsJCS5ieXRlc19wZXJfcGl4ZWwgPSAyLAo+ICsJfSwKPiAr fTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgaXB1X2ZtdCBpcHVfZm10X3JnYltdID0gewo+ICsJewo+ ICsJCS5mb3VyY2MgPSBWNEwyX1BJWF9GTVRfUkdCMzIsCj4gKwkJLm5hbWUgPSAiUkdCODg4IiwK PiArCQkuYnl0ZXNfcGVyX3BpeGVsID0gNCwKPiArCX0sIHsKPiArCQkuZm91cmNjID0gVjRMMl9Q SVhfRk1UX1JHQjI0LAo+ICsJCS5uYW1lID0gIlJHQjI0IiwKPiArCQkuYnl0ZXNfcGVyX3BpeGVs ID0gMywKPiArCX0sIHsKPiArCQkuZm91cmNjID0gVjRMMl9QSVhfRk1UX0JHUjI0LAo+ICsJCS5u YW1lID0gIkJHUjI0IiwKPiArCQkuYnl0ZXNfcGVyX3BpeGVsID0gMywKPiArCX0sIHsKPiArCQku Zm91cmNjID0gVjRMMl9QSVhfRk1UX1JHQjU2NSwKPiArCQkubmFtZSA9ICJSR0I1NjUiLAo+ICsJ CS5ieXRlc19wZXJfcGl4ZWwgPSAyLAo+ICsJfSwKPiArCXsKPiArCQkuZm91cmNjID0gVjRMMl9Q SVhfRk1UX0JHUjMyLAo+ICsJCS5uYW1lID0gIkJHUjg4OCIsCj4gKwkJLmJ5dGVzX3Blcl9waXhl bCA9IDQsCj4gKwl9LAo+ICt9Owo+ICsKPiArc3RydWN0IGlwdV9mbXQgKmlwdV9maW5kX2ZtdF95 dXYodW5zaWduZWQgaW50IHBpeGVsZm9ybWF0KSB7Cj4gKwlzdHJ1Y3QgaXB1X2ZtdCAqZm10Owo+ ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaXB1X2ZtdF95dXYp OyBpKyspIHsKPiArCQlmbXQgPSAmaXB1X2ZtdF95dXZbaV07Cj4gKwkJaWYgKGZtdC0+Zm91cmNj ID09IHBpeGVsZm9ybWF0KQo+ICsJCQlyZXR1cm4gZm10Owo+ICsJfQo+ICsKPiArCXJldHVybiBO VUxMOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGlwdV9maW5kX2ZtdF95dXYpOwo+ICsKPiAr c3RydWN0IGlwdV9mbXQgKmlwdV9maW5kX2ZtdF9yZ2IodW5zaWduZWQgaW50IHBpeGVsZm9ybWF0 KSB7Cj4gKwlzdHJ1Y3QgaXB1X2ZtdCAqZm10Owo+ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUoaXB1X2ZtdF9yZ2IpOyBpKyspIHsKPiArCQlmbXQgPSAmaXB1X2Zt dF9yZ2JbaV07Cj4gKwkJaWYgKGZtdC0+Zm91cmNjID09IHBpeGVsZm9ybWF0KQo+ICsJCQlyZXR1 cm4gZm10Owo+ICsJfQo+ICsKPiArCXJldHVybiBOVUxMOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xf R1BMKGlwdV9maW5kX2ZtdF9yZ2IpOwo+ICsKPiArc3RhdGljIHN0cnVjdCBpcHVfZm10ICppcHVf ZmluZF9mbXQodW5zaWduZWQgbG9uZyBwaXhlbGZvcm1hdCkgewo+ICsJc3RydWN0IGlwdV9mbXQg KmZtdDsKPiArCj4gKwlmbXQgPSBpcHVfZmluZF9mbXRfeXV2KHBpeGVsZm9ybWF0KTsKPiArCWlm IChmbXQpCj4gKwkJcmV0dXJuIGZtdDsKPiArCWZtdCA9IGlwdV9maW5kX2ZtdF9yZ2IocGl4ZWxm b3JtYXQpOwo+ICsKPiArCXJldHVybiBmbXQ7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwoaXB1 X2ZpbmRfZm10KTsKPiArCj4gK2ludCBpcHVfdHJ5X2ZtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9p ZCAqZmgsCj4gKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmKQo+ICt7Cj4gKwlzdHJ1Y3QgaXB1X2Zt dCAqZm10Owo+ICsKPiArCXY0bF9ib3VuZF9hbGlnbl9pbWFnZSgmZi0+Zm10LnBpeC53aWR0aCwg OCwgNDA5NiwgMiwKPiArCQkJICAgICAgJmYtPmZtdC5waXguaGVpZ2h0LCAyLCA0MDk2LCAxLCAw KTsKPiArCj4gKwlmLT5mbXQucGl4LmZpZWxkID0gVjRMMl9GSUVMRF9OT05FOwo+ICsKPiArCWZt dCA9IGlwdV9maW5kX2ZtdChmLT5mbXQucGl4LnBpeGVsZm9ybWF0KTsKPiArCWlmICghZm10KQo+ ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWYtPmZtdC5waXguYnl0ZXNwZXJsaW5lID0gZi0+ Zm10LnBpeC53aWR0aCAqIGZtdC0+Ynl0ZXNfcGVyX3BpeGVsOwo+ICsJZi0+Zm10LnBpeC5zaXpl aW1hZ2UgPSBmLT5mbXQucGl4LmJ5dGVzcGVybGluZSAqIGYtCj4gPmZtdC5waXguaGVpZ2h0Owo+ ICsJaWYgKGZtdC0+Zm91cmNjID09IFY0TDJfUElYX0ZNVF9ZVVY0MjAgfHwKPiArCSAgICBmbXQt PmZvdXJjYyA9PSBWNEwyX1BJWF9GTVRfWVZVNDIwIHx8Cj4gKwkgICAgZm10LT5mb3VyY2MgPT0g VjRMMl9QSVhfRk1UX05WMTIpCj4gKwkJZi0+Zm10LnBpeC5zaXplaW1hZ2UgPSBmLT5mbXQucGl4 LnNpemVpbWFnZSAqIDMgLyAyOwo+ICsJZWxzZSBpZiAoZm10LT5mb3VyY2MgPT0gVjRMMl9QSVhf Rk1UX1lVVjQyMlApCj4gKwkJZi0+Zm10LnBpeC5zaXplaW1hZ2UgKj0gMjsKPiArCj4gKwlmLT5m bXQucGl4LnByaXYgPSAwOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xf R1BMKGlwdV90cnlfZm10KTsKPiArCj4gK2ludCBpcHVfdHJ5X2ZtdF9yZ2Ioc3RydWN0IGZpbGUg KmZpbGUsIHZvaWQgKmZoLAo+ICsJCXN0cnVjdCB2NGwyX2Zvcm1hdCAqZikKPiArewo+ICsJc3Ry dWN0IGlwdV9mbXQgKmZtdDsKPiArCj4gKwlmbXQgPSBpcHVfZmluZF9mbXRfcmdiKGYtPmZtdC5w aXgucGl4ZWxmb3JtYXQpOwo+ICsJaWYgKCFmbXQpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ ICsJcmV0dXJuIGlwdV90cnlfZm10KGZpbGUsIGZoLCBmKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9M X0dQTChpcHVfdHJ5X2ZtdF9yZ2IpOwo+ICsKPiAraW50IGlwdV90cnlfZm10X3l1dihzdHJ1Y3Qg ZmlsZSAqZmlsZSwgdm9pZCAqZmgsCj4gKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmKQo+ICt7Cj4g KwlzdHJ1Y3QgaXB1X2ZtdCAqZm10Owo+ICsKPiArCWZtdCA9IGlwdV9maW5kX2ZtdF95dXYoZi0+ Zm10LnBpeC5waXhlbGZvcm1hdCk7Cj4gKwlpZiAoIWZtdCkKPiArCQlyZXR1cm4gLUVJTlZBTDsK PiArCj4gKwlyZXR1cm4gaXB1X3RyeV9mbXQoZmlsZSwgZmgsIGYpOwo+ICt9Cj4gK0VYUE9SVF9T WU1CT0xfR1BMKGlwdV90cnlfZm10X3l1dik7Cj4gKwo+ICtpbnQgaXB1X2VudW1fZm10X3JnYihz dHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCj4gKwkJc3RydWN0IHY0bDJfZm10ZGVzYyAqZikK PiArewo+ICsJc3RydWN0IGlwdV9mbXQgKmZtdDsKPiArCj4gKwlpZiAoZi0+aW5kZXggPj0gQVJS QVlfU0laRShpcHVfZm10X3JnYikpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJZm10ID0g JmlwdV9mbXRfcmdiW2YtPmluZGV4XTsKPiArCj4gKwlzdHJsY3B5KGYtPmRlc2NyaXB0aW9uLCBm bXQtPm5hbWUsIHNpemVvZihmLT5kZXNjcmlwdGlvbikpOwo+ICsJZi0+cGl4ZWxmb3JtYXQgPSBm bXQtPmZvdXJjYzsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChp cHVfZW51bV9mbXRfcmdiKTsKPiArCj4gK2ludCBpcHVfZW51bV9mbXRfeXV2KHN0cnVjdCBmaWxl ICpmaWxlLCB2b2lkICpmaCwKPiArCQlzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKQo+ICt7Cj4gKwlz dHJ1Y3QgaXB1X2ZtdCAqZm10Owo+ICsKPiArCWlmIChmLT5pbmRleCA+PSBBUlJBWV9TSVpFKGlw dV9mbXRfeXV2KSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlmbXQgPSAmaXB1X2ZtdF95 dXZbZi0+aW5kZXhdOwo+ICsKPiArCXN0cmxjcHkoZi0+ZGVzY3JpcHRpb24sIGZtdC0+bmFtZSwg c2l6ZW9mKGYtPmRlc2NyaXB0aW9uKSk7Cj4gKwlmLT5waXhlbGZvcm1hdCA9IGZtdC0+Zm91cmNj Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGlwdV9lbnVtX2Zt dF95dXYpOwo+ICsKPiAraW50IGlwdV9lbnVtX2ZtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAq ZmgsCj4gKwkJc3RydWN0IHY0bDJfZm10ZGVzYyAqZikKPiArewo+ICsJc3RydWN0IGlwdV9mbXQg KmZtdDsKPiArCWludCBpbmRleCA9IGYtPmluZGV4Owo+ICsKPiArCWlmIChpbmRleCA+PSBBUlJB WV9TSVpFKGlwdV9mbXRfeXV2KSkgewo+ICsJCWluZGV4IC09IEFSUkFZX1NJWkUoaXB1X2ZtdF95 dXYpOwo+ICsJCWlmIChpbmRleCA+PSBBUlJBWV9TSVpFKGlwdV9mbXRfcmdiKSkKPiArCQkJcmV0 dXJuIC1FSU5WQUw7Cj4gKwkJZm10ID0gJmlwdV9mbXRfcmdiW2luZGV4XTsKPiArCX0gZWxzZSB7 Cj4gKwkJZm10ID0gJmlwdV9mbXRfeXV2W2luZGV4XTsKPiArCX0KPiArCj4gKwlzdHJsY3B5KGYt PmRlc2NyaXB0aW9uLCBmbXQtPm5hbWUsIHNpemVvZihmLT5kZXNjcmlwdGlvbikpOwo+ICsJZi0+ cGl4ZWxmb3JtYXQgPSBmbXQtPmZvdXJjYzsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICtFWFBP UlRfU1lNQk9MX0dQTChpcHVfZW51bV9mbXQpOwo+ICsKPiAraW50IGlwdV9zX2ZtdChzdHJ1Y3Qg ZmlsZSAqZmlsZSwgdm9pZCAqZmgsCj4gKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmLCBzdHJ1Y3Qg djRsMl9waXhfZm9ybWF0ICpwaXgpIHsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gaXB1X3Ry eV9mbXQoZmlsZSwgZmgsIGYpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiAr CXBpeC0+d2lkdGggPSBmLT5mbXQucGl4LndpZHRoOwo+ICsJcGl4LT5oZWlnaHQgPSBmLT5mbXQu cGl4LmhlaWdodDsKPiArCXBpeC0+cGl4ZWxmb3JtYXQgPSBmLT5mbXQucGl4LnBpeGVsZm9ybWF0 Owo+ICsJcGl4LT5ieXRlc3BlcmxpbmUgPSBmLT5mbXQucGl4LmJ5dGVzcGVybGluZTsKPiArCXBp eC0+c2l6ZWltYWdlID0gZi0+Zm10LnBpeC5zaXplaW1hZ2U7Cj4gKwlwaXgtPmNvbG9yc3BhY2Ug PSBmLT5mbXQucGl4LmNvbG9yc3BhY2U7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArRVhQT1JU X1NZTUJPTF9HUEwoaXB1X3NfZm10KTsKPiArCj4gK2ludCBpcHVfc19mbXRfcmdiKHN0cnVjdCBm aWxlICpmaWxlLCB2b2lkICpmaCwKPiArCQlzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYsIHN0cnVjdCB2 NGwyX3BpeF9mb3JtYXQgKnBpeCkgewo+ICsJc3RydWN0IGlwdV9mbXQgKmZtdDsKPiArCj4gKwlm bXQgPSBpcHVfZmluZF9mbXRfcmdiKGYtPmZtdC5waXgucGl4ZWxmb3JtYXQpOwo+ICsJaWYgKCFm bXQpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJcmV0dXJuIGlwdV9zX2ZtdChmaWxlLCBm aCwgZiwgcGl4KTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChpcHVfc19mbXRfcmdiKTsKPiAr Cj4gK2ludCBpcHVfc19mbXRfeXV2KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKPiArCQlz dHJ1Y3QgdjRsMl9mb3JtYXQgKmYsIHN0cnVjdCB2NGwyX3BpeF9mb3JtYXQgKnBpeCkgewo+ICsJ c3RydWN0IGlwdV9mbXQgKmZtdDsKPiArCj4gKwlmbXQgPSBpcHVfZmluZF9mbXRfeXV2KGYtPmZt dC5waXgucGl4ZWxmb3JtYXQpOwo+ICsJaWYgKCFmbXQpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4g Kwo+ICsJcmV0dXJuIGlwdV9zX2ZtdChmaWxlLCBmaCwgZiwgcGl4KTsKPiArfQo+ICtFWFBPUlRf U1lNQk9MX0dQTChpcHVfc19mbXRfeXV2KTsKPiArCj4gK2ludCBpcHVfZ19mbXQoc3RydWN0IHY0 bDJfZm9ybWF0ICpmLCBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpwaXgpIHsKPiArCWYtPmZtdC5w aXguZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7Cj4gKwlmLT5mbXQucGl4LnBpeGVsZm9ybWF0ID0g cGl4LT5waXhlbGZvcm1hdDsKPiArCWYtPmZtdC5waXguYnl0ZXNwZXJsaW5lID0gcGl4LT5ieXRl c3BlcmxpbmU7Cj4gKwlmLT5mbXQucGl4LndpZHRoID0gcGl4LT53aWR0aDsKPiArCWYtPmZtdC5w aXguaGVpZ2h0ID0gcGl4LT5oZWlnaHQ7Cj4gKwlmLT5mbXQucGl4LnNpemVpbWFnZSA9IHBpeC0+ c2l6ZWltYWdlOwo+ICsJZi0+Zm10LnBpeC5jb2xvcnNwYWNlID0gcGl4LT5jb2xvcnNwYWNlOwo+ ICsJZi0+Zm10LnBpeC5wcml2ID0gMDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICtFWFBPUlRf U1lNQk9MX0dQTChpcHVfZ19mbXQpOwo+ICsKPiAraW50IGlwdV9lbnVtX2ZyYW1lc2l6ZXMoc3Ry dWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAo+ICsJCQlzdHJ1Y3QgdjRsMl9mcm1zaXplZW51bSAq ZnNpemUpCj4gK3sKPiArCXN0cnVjdCBpcHVfZm10ICpmbXQ7Cj4gKwo+ICsJaWYgKGZzaXplLT5p bmRleCAhPSAwKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWZtdCA9IGlwdV9maW5kX2Zt dChmc2l6ZS0+cGl4ZWxfZm9ybWF0KTsKPiArCWlmICghZm10KQo+ICsJCXJldHVybiAtRUlOVkFM Owo+ICsKPiArCWZzaXplLT50eXBlID0gVjRMMl9GUk1TSVpFX1RZUEVfQ09OVElOVU9VUzsKPiAr CWZzaXplLT5zdGVwd2lzZS5taW5fd2lkdGggPSAxOwo+ICsJZnNpemUtPnN0ZXB3aXNlLm1pbl9o ZWlnaHQgPSAxOwo+ICsJZnNpemUtPnN0ZXB3aXNlLm1heF93aWR0aCA9IDQwOTY7Cj4gKwlmc2l6 ZS0+c3RlcHdpc2UubWF4X2hlaWdodCA9IDQwOTY7Cj4gKwlmc2l6ZS0+c3RlcHdpc2Uuc3RlcF93 aWR0aCA9IGZzaXplLT5zdGVwd2lzZS5zdGVwX2hlaWdodCA9IDE7Cj4gKwo+ICsJcmV0dXJuIDA7 Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwoaXB1X2VudW1fZnJhbWVzaXplcyk7Cj4gKwo+ICtN T0RVTEVfTElDRU5TRSgiR1BMIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vaW14L2lteC1pcHUuaAo+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9pbXgvaW14LWlwdS5o Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi41MWMwOTgyCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L2lteC1pcHUuaAo+IEBA IC0wLDAgKzEsMzUgQEAKPiArI2lmbmRlZiBfX01FRElBX0lNWF9JUFVfSAo+ICsjZGVmaW5lIF9f TUVESUFfSU1YX0lQVV9ICj4gKyNpbmNsdWRlIDxsaW51eC92aWRlb2RldjIuaD4KPiArCj4gK3N0 cnVjdCBpcHVfZm10IHsKPiArCXUzMiBmb3VyY2M7Cj4gKwljb25zdCBjaGFyICpuYW1lOwo+ICsJ aW50IGJ5dGVzX3Blcl9waXhlbDsKPiArfTsKPiArCj4gK2ludCBpcHVfZW51bV9mbXQoc3RydWN0 IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAo+ICsJCXN0cnVjdCB2NGwyX2ZtdGRlc2MgKmYpOwo+ICtp bnQgaXB1X2VudW1fZm10X3JnYihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCj4gKwkJc3Ry dWN0IHY0bDJfZm10ZGVzYyAqZik7Cj4gK2ludCBpcHVfZW51bV9mbXRfeXV2KHN0cnVjdCBmaWxl ICpmaWxlLCB2b2lkICpmaCwKPiArCQlzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKTsKPiArc3RydWN0 IGlwdV9mbXQgKmlwdV9maW5kX2ZtdF9yZ2IodW5zaWduZWQgaW50IHBpeGVsZm9ybWF0KTsgc3Ry dWN0Cj4gK2lwdV9mbXQgKmlwdV9maW5kX2ZtdF95dXYodW5zaWduZWQgaW50IHBpeGVsZm9ybWF0 KTsgaW50Cj4gK2lwdV90cnlfZm10KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKPiArCQlz dHJ1Y3QgdjRsMl9mb3JtYXQgKmYpOwo+ICtpbnQgaXB1X3RyeV9mbXRfcmdiKHN0cnVjdCBmaWxl ICpmaWxlLCB2b2lkICpmaCwKPiArCQlzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpOwo+ICtpbnQgaXB1 X3RyeV9mbXRfeXV2KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKPiArCQlzdHJ1Y3QgdjRs Ml9mb3JtYXQgKmYpOwo+ICtpbnQgaXB1X3NfZm10KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpm aCwKPiArCQlzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYsIHN0cnVjdCB2NGwyX3BpeF9mb3JtYXQgKnBp eCk7IGludAo+ICtpcHVfc19mbXRfcmdiKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKPiAr CQlzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYsIHN0cnVjdCB2NGwyX3BpeF9mb3JtYXQgKnBpeCk7IGlu dAo+ICtpcHVfc19mbXRfeXV2KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKPiArCQlzdHJ1 Y3QgdjRsMl9mb3JtYXQgKmYsIHN0cnVjdCB2NGwyX3BpeF9mb3JtYXQgKnBpeCk7IGludAo+ICtp cHVfZ19mbXQoc3RydWN0IHY0bDJfZm9ybWF0ICpmLCBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpw aXgpOyBpbnQKPiAraXB1X2VudW1fZnJhbWVzaXplcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAq ZmgsCj4gKwkJCXN0cnVjdCB2NGwyX2ZybXNpemVlbnVtICpmc2l6ZSk7Cj4gKwo+ICsjZW5kaWYg LyogX19NRURJQV9JTVhfSVBVX0ggKi8KPiAtLQo+IDIuMS40Cj4gCj4gLS0KPiBUbyB1bnN1YnNj cmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtbWVk aWEiCj4gaW4gdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5v cmcgTW9yZSBtYWpvcmRvbW8KPiBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9y ZG9tby1pbmZvLmh0bWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==