From mboxrd@z Thu Jan 1 00:00:00 1970
From: Philipp Zabel
Subject: [PATCH v2 4/5] [media] imx-ipu: Add ipu media common code
Date: Wed, 18 Mar 2015 11:22:52 +0100
Message-ID: <1426674173-17088-5-git-send-email-p.zabel@pengutronix.de>
References: <1426674173-17088-1-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 metis.ext.pengutronix.de (metis.ext.pengutronix.de
[92.198.50.35])
by gabe.freedesktop.org (Postfix) with ESMTP id 0F4BD6E7F5
for ; Wed, 18 Mar 2015 03:23:01 -0700 (PDT)
In-Reply-To: <1426674173-17088-1-git-send-email-p.zabel@pengutronix.de>
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: dri-devel-bounces@lists.freedesktop.org
Sender: "dri-devel"
To: 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
RnJvbTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgoKQWRkIHZpZGVvNGxp
bnV4IEFQSSByb3V0aW5lcyBjb21tb24gdG8gZHJpdmVycyBmb3IgdW5pdHMgdGhhdAphY2NlcHQg
b3IgcHJvdmlkZSB2aWRlbyBkYXRhIHZpYSB0aGUgaS5NWCBJUFUgSURNQUMgY2hhbm5lbHMsCnN1
Y2ggYXMgc2NhbGVyIG9yIGRlaW50ZXJsYWNlciBkcml2ZXJzLgoKU2lnbmVkLW9mZi1ieTogU2Fz
Y2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgpTaWduZWQtb2ZmLWJ5OiBMdWNhcyBT
dGFjaCA8bC5zdGFjaEBwZW5ndXRyb25peC5kZT4KU2lnbmVkLW9mZi1ieTogUGhpbGlwcCBaYWJl
bCA8cC56YWJlbEBwZW5ndXRyb25peC5kZT4KLS0tCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tj
b25maWcgICAgICAgfCAgIDIgKwogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZSAgICAg
IHwgICAxICsKIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L0tjb25maWcgICB8ICAgMiArCiBk
cml2ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9NYWtlZmlsZSAgfCAgIDEgKwogZHJpdmVycy9tZWRp
YS9wbGF0Zm9ybS9pbXgvaW14LWlwdS5jIHwgMzEzICsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9pbXgtaXB1LmggfCAgMzUgKysr
KwogNiBmaWxlcyBjaGFuZ2VkLCAzNTQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk
cml2ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy
aXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L2lteC1pcHUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy
aXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L2lteC1pcHUuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv
bWVkaWEvcGxhdGZvcm0vS2NvbmZpZyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vS2NvbmZpZwpp
bmRleCBkOWI4NzJiLi42NTBhOWE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt
L0tjb25maWcKKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9LY29uZmlnCkBAIC0yOSw2ICsy
OSw4IEBAIGNvbmZpZyBWSURFT19WSUFfQ0FNRVJBCiAKIHNvdXJjZSAiZHJpdmVycy9tZWRpYS9w
bGF0Zm9ybS9kYXZpbmNpL0tjb25maWciCiAKK3NvdXJjZSAiZHJpdmVycy9tZWRpYS9wbGF0Zm9y
bS9pbXgvS2NvbmZpZyIKKwogc291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL29tYXAvS2Nv
bmZpZyIKIAogc291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2JsYWNrZmluL0tjb25maWci
CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL01ha2VmaWxlIGIvZHJpdmVycy9t
ZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZQppbmRleCAzZWMxNTQ3Li4yZTM1NTgxIDEwMDY0NAotLS0g
YS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxh
dGZvcm0vTWFrZWZpbGUKQEAgLTQ0LDYgKzQ0LDcgQEAgb2JqLSQoQ09ORklHX1NPQ19DQU1FUkEp
CQkrPSBzb2NfY2FtZXJhLwogCiBvYmotJChDT05GSUdfVklERU9fUkVORVNBU19WU1AxKQkrPSB2
c3AxLwogCitvYmoteQkrPSBpbXgvCiBvYmoteQkrPSBvbWFwLwogCiBvYmotJChDT05GSUdfVklE
RU9fQU00MzdYX1ZQRkUpCQkrPSBhbTQzN3gvCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Bs
YXRmb3JtL2lteC9LY29uZmlnIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9pbXgvS2NvbmZpZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTBjOTczCi0tLSAvZGV2L251bGwK
KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9pbXgvS2NvbmZpZwpAQCAtMCwwICsxLDIgQEAK
K2NvbmZpZyBWSURFT19JTVhfSVBVX0NPTU1PTgorCXRyaXN0YXRlCmRpZmYgLS1naXQgYS9kcml2
ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v
aW14L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZTExOWMK
LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9NYWtlZmlsZQpA
QCAtMCwwICsxIEBACitvYmotJChDT05GSUdfVklERU9fSU1YX0lQVV9DT01NT04pCSs9IGlteC1p
cHUubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9pbXgvaW14LWlwdS5jIGIv
ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9pbXgvaW14LWlwdS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmMxYjg2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL21lZGlh
L3BsYXRmb3JtL2lteC9pbXgtaXB1LmMKQEAgLTAsMCArMSwzMTMgQEAKKy8qCisgKiBpLk1YIElQ
VXYzIGNvbW1vbiB2NGwyIHN1cHBvcnQKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2FzY2hh
IEhhdWVyLCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgorICogb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKiBU
aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICovCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVk
ZSA8bWVkaWEvdjRsMi1jb21tb24uaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWRldi5oPgorI2lu
Y2x1ZGUgPG1lZGlhL3Y0bDItaW9jdGwuaD4KKworI2luY2x1ZGUgImlteC1pcHUuaCIKKworc3Rh
dGljIHN0cnVjdCBpcHVfZm10IGlwdV9mbXRfeXV2W10gPSB7CisJeworCQkuZm91cmNjID0gVjRM
Ml9QSVhfRk1UX1lVVjQyMCwKKwkJLm5hbWUgPSAiWVVWIDQ6MjowIHBsYW5hciwgWUNiQ3IiLAor
CQkuYnl0ZXNfcGVyX3BpeGVsID0gMSwKKwl9LCB7CisJCS5mb3VyY2MgPSBWNEwyX1BJWF9GTVRf
WVZVNDIwLAorCQkubmFtZSA9ICJZVVYgNDoyOjAgcGxhbmFyLCBZQ3JDYiIsCisJCS5ieXRlc19w
ZXJfcGl4ZWwgPSAxLAorCX0sIHsKKwkJLmZvdXJjYyA9IFY0TDJfUElYX0ZNVF9ZVVY0MjJQLAor
CQkubmFtZSA9ICJZVVYgNDoyOjIgcGxhbmFyLCBZQ2JDciIsCisJCS5ieXRlc19wZXJfcGl4ZWwg
PSAxLAorCX0sIHsKKwkJLmZvdXJjYyA9IFY0TDJfUElYX0ZNVF9OVjEyLAorCQkubmFtZSA9ICJZ
VVYgNDoyOjAgcGFydGlhbCBpbnRlcmxlYXZlZCwgWUNiQ3IiLAorCQkuYnl0ZXNfcGVyX3BpeGVs
ID0gMSwKKwl9LCB7CisJCS5mb3VyY2MgPSBWNEwyX1BJWF9GTVRfVVlWWSwKKwkJLm5hbWUgPSAi
NDoyOjIsIHBhY2tlZCwgVVlWWSIsCisJCS5ieXRlc19wZXJfcGl4ZWwgPSAyLAorCX0sIHsKKwkJ
LmZvdXJjYyA9IFY0TDJfUElYX0ZNVF9ZVVlWLAorCQkubmFtZSA9ICI0OjI6MiwgcGFja2VkLCBZ
VVlWIiwKKwkJLmJ5dGVzX3Blcl9waXhlbCA9IDIsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3Qg
aXB1X2ZtdCBpcHVfZm10X3JnYltdID0geworCXsKKwkJLmZvdXJjYyA9IFY0TDJfUElYX0ZNVF9S
R0IzMiwKKwkJLm5hbWUgPSAiUkdCODg4IiwKKwkJLmJ5dGVzX3Blcl9waXhlbCA9IDQsCisJfSwg
eworCQkuZm91cmNjID0gVjRMMl9QSVhfRk1UX1JHQjI0LAorCQkubmFtZSA9ICJSR0IyNCIsCisJ
CS5ieXRlc19wZXJfcGl4ZWwgPSAzLAorCX0sIHsKKwkJLmZvdXJjYyA9IFY0TDJfUElYX0ZNVF9C
R1IyNCwKKwkJLm5hbWUgPSAiQkdSMjQiLAorCQkuYnl0ZXNfcGVyX3BpeGVsID0gMywKKwl9LCB7
CisJCS5mb3VyY2MgPSBWNEwyX1BJWF9GTVRfUkdCNTY1LAorCQkubmFtZSA9ICJSR0I1NjUiLAor
CQkuYnl0ZXNfcGVyX3BpeGVsID0gMiwKKwl9LAorCXsKKwkJLmZvdXJjYyA9IFY0TDJfUElYX0ZN
VF9CR1IzMiwKKwkJLm5hbWUgPSAiQkdSODg4IiwKKwkJLmJ5dGVzX3Blcl9waXhlbCA9IDQsCisJ
fSwKK307CisKK3N0cnVjdCBpcHVfZm10ICppcHVfZmluZF9mbXRfeXV2KHVuc2lnbmVkIGludCBw
aXhlbGZvcm1hdCkKK3sKKwlzdHJ1Y3QgaXB1X2ZtdCAqZm10OworCWludCBpOworCisJZm9yIChp
ID0gMDsgaSA8IEFSUkFZX1NJWkUoaXB1X2ZtdF95dXYpOyBpKyspIHsKKwkJZm10ID0gJmlwdV9m
bXRfeXV2W2ldOworCQlpZiAoZm10LT5mb3VyY2MgPT0gcGl4ZWxmb3JtYXQpCisJCQlyZXR1cm4g
Zm10OworCX0KKworCXJldHVybiBOVUxMOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXB1X2ZpbmRf
Zm10X3l1dik7CisKK3N0cnVjdCBpcHVfZm10ICppcHVfZmluZF9mbXRfcmdiKHVuc2lnbmVkIGlu
dCBwaXhlbGZvcm1hdCkKK3sKKwlzdHJ1Y3QgaXB1X2ZtdCAqZm10OworCWludCBpOworCisJZm9y
IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaXB1X2ZtdF9yZ2IpOyBpKyspIHsKKwkJZm10ID0gJmlw
dV9mbXRfcmdiW2ldOworCQlpZiAoZm10LT5mb3VyY2MgPT0gcGl4ZWxmb3JtYXQpCisJCQlyZXR1
cm4gZm10OworCX0KKworCXJldHVybiBOVUxMOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXB1X2Zp
bmRfZm10X3JnYik7CisKK3N0YXRpYyBzdHJ1Y3QgaXB1X2ZtdCAqaXB1X2ZpbmRfZm10KHVuc2ln
bmVkIGxvbmcgcGl4ZWxmb3JtYXQpCit7CisJc3RydWN0IGlwdV9mbXQgKmZtdDsKKworCWZtdCA9
IGlwdV9maW5kX2ZtdF95dXYocGl4ZWxmb3JtYXQpOworCWlmIChmbXQpCisJCXJldHVybiBmbXQ7
CisJZm10ID0gaXB1X2ZpbmRfZm10X3JnYihwaXhlbGZvcm1hdCk7CisKKwlyZXR1cm4gZm10Owor
fQorRVhQT1JUX1NZTUJPTF9HUEwoaXB1X2ZpbmRfZm10KTsKKworaW50IGlwdV90cnlfZm10KHN0
cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmKQorewor
CXN0cnVjdCBpcHVfZm10ICpmbXQ7CisKKwl2NGxfYm91bmRfYWxpZ25faW1hZ2UoJmYtPmZtdC5w
aXgud2lkdGgsIDgsIDQwOTYsIDIsCisJCQkgICAgICAmZi0+Zm10LnBpeC5oZWlnaHQsIDIsIDQw
OTYsIDEsIDApOworCisJZi0+Zm10LnBpeC5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsKKworCWZt
dCA9IGlwdV9maW5kX2ZtdChmLT5mbXQucGl4LnBpeGVsZm9ybWF0KTsKKwlpZiAoIWZtdCkKKwkJ
cmV0dXJuIC1FSU5WQUw7CisKKwlmLT5mbXQucGl4LmJ5dGVzcGVybGluZSA9IGYtPmZtdC5waXgu
d2lkdGggKiBmbXQtPmJ5dGVzX3Blcl9waXhlbDsKKwlmLT5mbXQucGl4LnNpemVpbWFnZSA9IGYt
PmZtdC5waXguYnl0ZXNwZXJsaW5lICogZi0+Zm10LnBpeC5oZWlnaHQ7CisJaWYgKGZtdC0+Zm91
cmNjID09IFY0TDJfUElYX0ZNVF9ZVVY0MjAgfHwKKwkgICAgZm10LT5mb3VyY2MgPT0gVjRMMl9Q
SVhfRk1UX1lWVTQyMCB8fAorCSAgICBmbXQtPmZvdXJjYyA9PSBWNEwyX1BJWF9GTVRfTlYxMikK
KwkJZi0+Zm10LnBpeC5zaXplaW1hZ2UgPSBmLT5mbXQucGl4LnNpemVpbWFnZSAqIDMgLyAyOwor
CWVsc2UgaWYgKGZtdC0+Zm91cmNjID09IFY0TDJfUElYX0ZNVF9ZVVY0MjJQKQorCQlmLT5mbXQu
cGl4LnNpemVpbWFnZSAqPSAyOworCisJZi0+Zm10LnBpeC5wcml2ID0gMDsKKworCXJldHVybiAw
OworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXB1X3RyeV9mbXQpOworCitpbnQgaXB1X3RyeV9mbXRf
cmdiKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpm
KQoreworCXN0cnVjdCBpcHVfZm10ICpmbXQ7CisKKwlmbXQgPSBpcHVfZmluZF9mbXRfcmdiKGYt
PmZtdC5waXgucGl4ZWxmb3JtYXQpOworCWlmICghZm10KQorCQlyZXR1cm4gLUVJTlZBTDsKKwor
CXJldHVybiBpcHVfdHJ5X2ZtdChmaWxlLCBmaCwgZik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChp
cHVfdHJ5X2ZtdF9yZ2IpOworCitpbnQgaXB1X3RyeV9mbXRfeXV2KHN0cnVjdCBmaWxlICpmaWxl
LCB2b2lkICpmaCwKKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmKQoreworCXN0cnVjdCBpcHVfZm10
ICpmbXQ7CisKKwlmbXQgPSBpcHVfZmluZF9mbXRfeXV2KGYtPmZtdC5waXgucGl4ZWxmb3JtYXQp
OworCWlmICghZm10KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldHVybiBpcHVfdHJ5X2ZtdChm
aWxlLCBmaCwgZik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpcHVfdHJ5X2ZtdF95dXYpOworCitp
bnQgaXB1X2VudW1fZm10X3JnYihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCisJCXN0cnVj
dCB2NGwyX2ZtdGRlc2MgKmYpCit7CisJc3RydWN0IGlwdV9mbXQgKmZtdDsKKworCWlmIChmLT5p
bmRleCA+PSBBUlJBWV9TSVpFKGlwdV9mbXRfcmdiKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlm
bXQgPSAmaXB1X2ZtdF9yZ2JbZi0+aW5kZXhdOworCisJc3RybGNweShmLT5kZXNjcmlwdGlvbiwg
Zm10LT5uYW1lLCBzaXplb2YoZi0+ZGVzY3JpcHRpb24pKTsKKwlmLT5waXhlbGZvcm1hdCA9IGZt
dC0+Zm91cmNjOworCisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpcHVfZW51bV9m
bXRfcmdiKTsKKworaW50IGlwdV9lbnVtX2ZtdF95dXYoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQg
KmZoLAorCQlzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKQoreworCXN0cnVjdCBpcHVfZm10ICpmbXQ7
CisKKwlpZiAoZi0+aW5kZXggPj0gQVJSQVlfU0laRShpcHVfZm10X3l1dikpCisJCXJldHVybiAt
RUlOVkFMOworCisJZm10ID0gJmlwdV9mbXRfeXV2W2YtPmluZGV4XTsKKworCXN0cmxjcHkoZi0+
ZGVzY3JpcHRpb24sIGZtdC0+bmFtZSwgc2l6ZW9mKGYtPmRlc2NyaXB0aW9uKSk7CisJZi0+cGl4
ZWxmb3JtYXQgPSBmbXQtPmZvdXJjYzsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTF9H
UEwoaXB1X2VudW1fZm10X3l1dik7CisKK2ludCBpcHVfZW51bV9mbXQoc3RydWN0IGZpbGUgKmZp
bGUsIHZvaWQgKmZoLAorCQlzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKQoreworCXN0cnVjdCBpcHVf
Zm10ICpmbXQ7CisJaW50IGluZGV4ID0gZi0+aW5kZXg7CisKKwlpZiAoaW5kZXggPj0gQVJSQVlf
U0laRShpcHVfZm10X3l1dikpIHsKKwkJaW5kZXggLT0gQVJSQVlfU0laRShpcHVfZm10X3l1dik7
CisJCWlmIChpbmRleCA+PSBBUlJBWV9TSVpFKGlwdV9mbXRfcmdiKSkKKwkJCXJldHVybiAtRUlO
VkFMOworCQlmbXQgPSAmaXB1X2ZtdF9yZ2JbaW5kZXhdOworCX0gZWxzZSB7CisJCWZtdCA9ICZp
cHVfZm10X3l1dltpbmRleF07CisJfQorCisJc3RybGNweShmLT5kZXNjcmlwdGlvbiwgZm10LT5u
YW1lLCBzaXplb2YoZi0+ZGVzY3JpcHRpb24pKTsKKwlmLT5waXhlbGZvcm1hdCA9IGZtdC0+Zm91
cmNjOworCisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpcHVfZW51bV9mbXQpOwor
CitpbnQgaXB1X3NfZm10KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKKwkJc3RydWN0IHY0
bDJfZm9ybWF0ICpmLCBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpwaXgpCit7CisJaW50IHJldDsK
KworCXJldCA9IGlwdV90cnlfZm10KGZpbGUsIGZoLCBmKTsKKwlpZiAocmV0KQorCQlyZXR1cm4g
cmV0OworCisJcGl4LT53aWR0aCA9IGYtPmZtdC5waXgud2lkdGg7CisJcGl4LT5oZWlnaHQgPSBm
LT5mbXQucGl4LmhlaWdodDsKKwlwaXgtPnBpeGVsZm9ybWF0ID0gZi0+Zm10LnBpeC5waXhlbGZv
cm1hdDsKKwlwaXgtPmJ5dGVzcGVybGluZSA9IGYtPmZtdC5waXguYnl0ZXNwZXJsaW5lOworCXBp
eC0+c2l6ZWltYWdlID0gZi0+Zm10LnBpeC5zaXplaW1hZ2U7CisJcGl4LT5jb2xvcnNwYWNlID0g
Zi0+Zm10LnBpeC5jb2xvcnNwYWNlOworCisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MX0dQ
TChpcHVfc19mbXQpOworCitpbnQgaXB1X3NfZm10X3JnYihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9p
ZCAqZmgsCisJCXN0cnVjdCB2NGwyX2Zvcm1hdCAqZiwgc3RydWN0IHY0bDJfcGl4X2Zvcm1hdCAq
cGl4KQoreworCXN0cnVjdCBpcHVfZm10ICpmbXQ7CisKKwlmbXQgPSBpcHVfZmluZF9mbXRfcmdi
KGYtPmZtdC5waXgucGl4ZWxmb3JtYXQpOworCWlmICghZm10KQorCQlyZXR1cm4gLUVJTlZBTDsK
KworCXJldHVybiBpcHVfc19mbXQoZmlsZSwgZmgsIGYsIHBpeCk7Cit9CitFWFBPUlRfU1lNQk9M
X0dQTChpcHVfc19mbXRfcmdiKTsKKworaW50IGlwdV9zX2ZtdF95dXYoc3RydWN0IGZpbGUgKmZp
bGUsIHZvaWQgKmZoLAorCQlzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYsIHN0cnVjdCB2NGwyX3BpeF9m
b3JtYXQgKnBpeCkKK3sKKwlzdHJ1Y3QgaXB1X2ZtdCAqZm10OworCisJZm10ID0gaXB1X2ZpbmRf
Zm10X3l1dihmLT5mbXQucGl4LnBpeGVsZm9ybWF0KTsKKwlpZiAoIWZtdCkKKwkJcmV0dXJuIC1F
SU5WQUw7CisKKwlyZXR1cm4gaXB1X3NfZm10KGZpbGUsIGZoLCBmLCBwaXgpOworfQorRVhQT1JU
X1NZTUJPTF9HUEwoaXB1X3NfZm10X3l1dik7CisKK2ludCBpcHVfZ19mbXQoc3RydWN0IHY0bDJf
Zm9ybWF0ICpmLCBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpwaXgpCit7CisJZi0+Zm10LnBpeC5m
aWVsZCA9IFY0TDJfRklFTERfTk9ORTsKKwlmLT5mbXQucGl4LnBpeGVsZm9ybWF0ID0gcGl4LT5w
aXhlbGZvcm1hdDsKKwlmLT5mbXQucGl4LmJ5dGVzcGVybGluZSA9IHBpeC0+Ynl0ZXNwZXJsaW5l
OworCWYtPmZtdC5waXgud2lkdGggPSBwaXgtPndpZHRoOworCWYtPmZtdC5waXguaGVpZ2h0ID0g
cGl4LT5oZWlnaHQ7CisJZi0+Zm10LnBpeC5zaXplaW1hZ2UgPSBwaXgtPnNpemVpbWFnZTsKKwlm
LT5mbXQucGl4LmNvbG9yc3BhY2UgPSBwaXgtPmNvbG9yc3BhY2U7CisJZi0+Zm10LnBpeC5wcml2
ID0gMDsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXB1X2dfZm10KTsKKwor
aW50IGlwdV9lbnVtX2ZyYW1lc2l6ZXMoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAorCQkJ
c3RydWN0IHY0bDJfZnJtc2l6ZWVudW0gKmZzaXplKQoreworCXN0cnVjdCBpcHVfZm10ICpmbXQ7
CisKKwlpZiAoZnNpemUtPmluZGV4ICE9IDApCisJCXJldHVybiAtRUlOVkFMOworCisJZm10ID0g
aXB1X2ZpbmRfZm10KGZzaXplLT5waXhlbF9mb3JtYXQpOworCWlmICghZm10KQorCQlyZXR1cm4g
LUVJTlZBTDsKKworCWZzaXplLT50eXBlID0gVjRMMl9GUk1TSVpFX1RZUEVfQ09OVElOVU9VUzsK
Kwlmc2l6ZS0+c3RlcHdpc2UubWluX3dpZHRoID0gMTsKKwlmc2l6ZS0+c3RlcHdpc2UubWluX2hl
aWdodCA9IDE7CisJZnNpemUtPnN0ZXB3aXNlLm1heF93aWR0aCA9IDQwOTY7CisJZnNpemUtPnN0
ZXB3aXNlLm1heF9oZWlnaHQgPSA0MDk2OworCWZzaXplLT5zdGVwd2lzZS5zdGVwX3dpZHRoID0g
ZnNpemUtPnN0ZXB3aXNlLnN0ZXBfaGVpZ2h0ID0gMTsKKworCXJldHVybiAwOworfQorRVhQT1JU
X1NZTUJPTF9HUEwoaXB1X2VudW1fZnJhbWVzaXplcyk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwi
KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L2lteC1pcHUuaCBiL2Ry
aXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L2lteC1pcHUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41MWMwOTgyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9tZWRpYS9w
bGF0Zm9ybS9pbXgvaW14LWlwdS5oCkBAIC0wLDAgKzEsMzUgQEAKKyNpZm5kZWYgX19NRURJQV9J
TVhfSVBVX0gKKyNkZWZpbmUgX19NRURJQV9JTVhfSVBVX0gKKyNpbmNsdWRlIDxsaW51eC92aWRl
b2RldjIuaD4KKworc3RydWN0IGlwdV9mbXQgeworCXUzMiBmb3VyY2M7CisJY29uc3QgY2hhciAq
bmFtZTsKKwlpbnQgYnl0ZXNfcGVyX3BpeGVsOworfTsKKworaW50IGlwdV9lbnVtX2ZtdChzdHJ1
Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCisJCXN0cnVjdCB2NGwyX2ZtdGRlc2MgKmYpOworaW50
IGlwdV9lbnVtX2ZtdF9yZ2Ioc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAorCQlzdHJ1Y3Qg
djRsMl9mbXRkZXNjICpmKTsKK2ludCBpcHVfZW51bV9mbXRfeXV2KHN0cnVjdCBmaWxlICpmaWxl
LCB2b2lkICpmaCwKKwkJc3RydWN0IHY0bDJfZm10ZGVzYyAqZik7CitzdHJ1Y3QgaXB1X2ZtdCAq
aXB1X2ZpbmRfZm10X3JnYih1bnNpZ25lZCBpbnQgcGl4ZWxmb3JtYXQpOworc3RydWN0IGlwdV9m
bXQgKmlwdV9maW5kX2ZtdF95dXYodW5zaWduZWQgaW50IHBpeGVsZm9ybWF0KTsKK2ludCBpcHVf
dHJ5X2ZtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCisJCXN0cnVjdCB2NGwyX2Zvcm1h
dCAqZik7CitpbnQgaXB1X3RyeV9mbXRfcmdiKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwK
KwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmKTsKK2ludCBpcHVfdHJ5X2ZtdF95dXYoc3RydWN0IGZp
bGUgKmZpbGUsIHZvaWQgKmZoLAorCQlzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpOworaW50IGlwdV9z
X2ZtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCisJCXN0cnVjdCB2NGwyX2Zvcm1hdCAq
Ziwgc3RydWN0IHY0bDJfcGl4X2Zvcm1hdCAqcGl4KTsKK2ludCBpcHVfc19mbXRfcmdiKHN0cnVj
dCBmaWxlICpmaWxlLCB2b2lkICpmaCwKKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmLCBzdHJ1Y3Qg
djRsMl9waXhfZm9ybWF0ICpwaXgpOworaW50IGlwdV9zX2ZtdF95dXYoc3RydWN0IGZpbGUgKmZp
bGUsIHZvaWQgKmZoLAorCQlzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYsIHN0cnVjdCB2NGwyX3BpeF9m
b3JtYXQgKnBpeCk7CitpbnQgaXB1X2dfZm10KHN0cnVjdCB2NGwyX2Zvcm1hdCAqZiwgc3RydWN0
IHY0bDJfcGl4X2Zvcm1hdCAqcGl4KTsKK2ludCBpcHVfZW51bV9mcmFtZXNpemVzKHN0cnVjdCBm
aWxlICpmaWxlLCB2b2lkICpmaCwKKwkJCXN0cnVjdCB2NGwyX2ZybXNpemVlbnVtICpmc2l6ZSk7
CisKKyNlbmRpZiAvKiBfX01FRElBX0lNWF9JUFVfSCAqLwotLSAKMi4xLjQKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp
c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0
b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==